Changes

Jump to: navigation, search

Gate Array

5,255 bytes added, 10 May
/* External links */
Gate Array
== Introduction ==Also designated as Video gate Array (VGA, not to be confused with IBM PC compatible graphic card spec).
The gate array is a specially designed chip exclusively for use in the Amstrad CPC and was designed by Amstrad plc.== Introduction ==
In the CPC+ system, the functions of the Gate-Array are integrated into The gate array is a single [[ASIC]]. When the ASIC is "locked", the extra features are not available and the ASIC operates the same as the Gate-Array specially designed chip exclusively for use in the Amstrad CPC allowing programs written for the CPC to work on the Plus without modification. The ASIC must be "un-locked" to access the new featuresand was designed by Amstrad plc.
In the [[KC compact]] CPC+ system, the functions of the Gate-Array are "emulated" in integrated into a single [[TTL logicASIC|ASIC]] . When the ASIC is "locked", the extra features are not available and by the [[Zilog Z8536 CIO]]ASIC operates the same as the Gate-Array in the CPC allowing programs written for the CPC to work on the Plus without modification. The ASIC must be "un-locked" to access the new features.
In the "cost-down" version of the CPC6128[[KC Compact]] system, the functions of the Gate-Array are integrated into a ASIC"emulated" in TTL chips, [[CIO Overview|CIO]], and its color translation EPROM.
The In the "cost-down" version of the CPC6128, the functions of the Gate -Array is described here, as it is in are integrated into a standard CPCASIC.
''What does it do?''The Gate Array is described here is the one found in a standard CPC.
The Gate Array is responsible for the display (colour palette, resolution, horizontal and vertical sync), interrupt generation and memory arrangement.== What does it do? ==
== Controlling the The Gate Array ==is responsible for the display (colour palette, resolution, horizontal and vertical sync), interrupt generation and memory arrangement.
The gate array is controlled by I/O. The gate array is selected when bit 15 of == Controlling the I/O port address is set to "0" and bit 14 of the I/O port address is set to "1". The values of the other bits are ignored. However, to avoid conflict with other devices in the system, these bits should be set to "1".Gate Array ==
The recommended gate array is controlled by I/O. The gate array is selected when bit 15 of the I/O port address is set to "0" and bit 14 of the I/O port address is &7Fxxset to "1". The values of the other bits are ignored. However, to avoid conflict with other devices in the system, these bits should be set to "1".
The recommended I/O port address is &7Fxx.  The function to be performed is selected by writing data to the Gate-Array, bit 7 and 6 of the data define the function selected (see table below). It is not possible to read from the Gate-Array.
{|{{Prettytable|width: 700px; font-size: 2em;}}
|''Bit 7''||''Bit 6''||''Function''
|-
|0''Data Bit 7''||0''Data Bit 6''||Select pen''Function''
|-
|0||10 ||Select colour for selected pen
|-
|10 ||01 ||Select screen mode, rom configuration and interrupt controlcolour for selected pen
|-
| 1 || 0 || Select screen mode, ROM configuration and interrupt control|-|1||1||Ram RAM Memory Management (note 1)
|-
|}
===== Note ===== This function is not available in the Gate-Array, but is performed by a device at the same I/O port address location. In the CPC464,CPC664 and KC compact, this function is performed in a memory-expansion (e.g. Dk'Tronics 64K Ram Expansion), if this expansion is not present then the function is not available. In the CPC6128, this function is performed by a PAL located on the main PCB, or a memory-expansion. In the 464+ and 6128+ this function is performed by the ASIC or a memory expansion. Please read the document on Ram Management for more information.
==== Pen selection ====This function is not available in the Gate-Array, but is performed by a device at the same I/O port address location. In the CPC464, CPC664 and KC compact, this function is performed in a memory-expansion (e.g. Dk'Tronics 64K RAM Expansion), if this expansion is not present then the function is not available. In the CPC6128, this function is performed by a [[PAL16L8|PAL]] located on the main PCB, or a memory-expansion. In the 464+ and 6128+ this function is performed by the ASIC or a memory expansion. Please read the document on RAM management for more information.
When bit 7 and bit 6 are set to "== Register 0", the remaining bits determine which pen is to have its colour changed. When bit 4 is set to "0", bits 3 to 0 define which pen is to be selected. When bit 4 is set to "1", the value contained in bits 3-0 is ignored and the border is selected.Palette Index (Pen selection) ==
The When bit 7 and bit 6 are set to "0", the remaining bits determine which pen remains is to have its colour changed. When bit 4 is set to "0", bits 3 to 0 define which pen is to be selected until another . When bit 4 is chosenset to "1", the value contained in bits 3-0 is ignored and the border is selected.
Each mode has a fixed number of pens. Mode 0 has 16 pens, mode 1 has 4 pens and mode 2 has 2 pensThe pen remains selected until another is chosen.
===== Summary =====Each mode has a fixed number of pens. Mode 0 has 16 pens, mode 1 has 4 pens and mode 2 has 2 pens.
=== Summary ===
{|{{Prettytable|width: 700px; font-size: 2em;}}
|''Bit''||''Value''||''Function''
|-
|7''Bit'' ||0''Value'' ||Gate Array function "Pen Selection"''Function''
|-
|67 ||0||rowspan="2" | Gate Array function "Pen Selection"
|-
|56 ||x||not used0
|-
|45 ||1- ||Select bordernot used
|-
|34 ||x1 ||ignoredSelect border
|-
|23 ||x||ignoredrowspan="4" | Ignored
|-
|12 ||x||ignored
|-
|01 ||x||ignored
|-
| 0 || x
|}
<br>
{|{{Prettytable|width: 700px; font-size: 2em;}}
|''Bit''||''Value''||''Function''
|-
|7''Bit'' ||0''Value'' ||Gate Array function "Pen Selection"''Function''
|-
|67 ||0||rowspan="2" | Gate Array function "Pen Selection"
|-
|56 ||x||not used0
|-
|45 ||1- ||Select pennot used
|-
|34 ||x0 ||Pen numberSelect pen
|-
|23 ||x||rowspan="4" | Pen number
|-
|12 ||x||
|-
|01 ||x||
|-
| 0 || x
|}
==== Register 1 - Palette Data (Colour selection ==) ==
Once the pen has been selected the its colour can then be changed. Bits 4 to 0 specify the hardware colour number from the hardware colour palette.
Even though there is provision for 32 colours, only 27 are possible. The remaining colours are duplicates of those already in the colour palette.
===== Summary == ===
{|{{Prettytable|width: 700px; font-size: 2em;}}
|''Bit''||''Value''||''Function''
|-
|7''Bit'' ||0''Value'' ||Gate Array function "Colour selection"''Function''
|-
|67 ||10 ||rowspan="2" | Gate Array function "Colour selection"
|-
|56 ||x||not used1
|-
|45 ||x- ||Colour number xnot used
|-
|34 ||x||rowspan="5" | Colour number x
|-
|23 ||x||
|-
|12 ||x||
|-
|01 ||x||
|-
| 0 || x
|}
==Register 2 - Select screen mode and ROM configuration == Hardware colour palette  This is a general purpose register responsible for the [[Video modes|screen mode]] and the ROM configuration.  ===Screen mode selection === The function of bits 1 and 0 is to define the screen mode. The settings for bits 1 and 0 and the corresponding screen mode are given in the table below.
{|{{Prettytable|width: 700px; font-size: 2em;}}
|''Colour Number''||''Colour Name''
|-
|''Bit 1'' || ''Bit 0'' ||White''Screen mode''
|-
|10 ||White (note 1)0 || Mode 0, 160x200 resolution, 16 colours
|-
|20 ||Sea Green1 || Mode 1, 320x200 resolution, 4 colours
|-
|31 ||Pastel Yellow0 || Mode 2, 640x200 resolution, 2 colours
|-
|1 || 1 || Mode 3, 160x200 resolution, 4 colours (undocumented)|} * Mode 3 is not official. From the combinations possible, we can see that 4 modes can be defined, although the Amstrad only has 3. Mode 3 is similar to mode 0, because it has the same resolution, but it is limited to only 4 colours. Mode 3 is not supported by the [[KC Compact]] (which outputs black in Mode 3). Mode changing is synchronised with HSYNC. If the mode is changed, it will take effect from the next HSYNC. === ROM configuration selection === Bit 2 is used to enable or disable the lower ROM area. The lower ROM area occupies memory addresses &amp;0000-&amp;3fff and is used to access the operating system ROM. When the lower ROM area is is enabled, reading from &amp;0000-&amp;3FFF will return data in the ROM. When a value is written to &amp;0000-&amp;3FFF, it will be written to the RAM underneath the RAM. When it is disabled, data read from &amp;0000-&amp;3FFF will return the data in the RAM.  Similarly, bit 3 controls enabling or disabling of the upper ROM area. The upper ROM area occupies memory addressess &amp;C000-&amp;FFFF and is BASIC or any expansion ROMs which may be plugged into a ROM board/box. See the document on [[Upper ROM Bank Number|upper rom selection]] for more details. When the upper ROM area enabled, reading from &amp;c000-&amp;ffff, will return data in the ROM. When data is written to &amp;c000-&amp;FFFF, it will be written to the RAM at the same address as the ROM. When the upper ROM area is disabled, and data is read from &amp;c000-&amp;ffff it will be the data in the RAM.  Bit 4controls the interrupt generation. It can be used to delay interrupts. See the document on interrupt generation for more information.  === Summary === {|{{Prettytable|Bluewidth: 700px; font-size: 2em;}}
|-
|5''Bit'' ||Purple''Value'' || ''Function''
|-
|67 ||Cyan1 || rowspan="2" | Gate Array function
|-
|76 ||Pink0
|-
|85 ||Purple (note 1)- || not used
|-
|94 ||Pastel Yellow (note 1)x || Interrupt generation control
|-
|103 ||Bright Yellowx || 1=Upper ROM area disable, 0=Upper ROM area enable
|-
|112 ||Bright Whitex || 1=Lower ROM area disable, 0=Lower ROM area enable
|-
|121 ||Bright Redx || rowspan="2" | Screen Mode slection
|-
|130 ||Bright Magentax|-}|14||Orange|== Register 3 -RAM Banking ==|15||Pastel Magenta|-|16||Blue This register exists only in CPCs with 128K RAM (note 1like the CPC 6128, or CPCs with [[Standard Memory Expansions]]). Note: In the CPC 6128, the register is a separate [[PAL16L8|-PAL]] that assists the Gate Array chip.|17||Sea Green (note 1){|-|18||Bright Green{{Prettytable|width: 700px; font-|19||Bright Cyan|-|20||Black|-|21||Bright Bluesize: 2em;}}
|-
|22''Bit'' ||Green''Value'' || ''Function''
|-
|237 ||Sky Blue1 || rowspan="2" | Gate Array function 3
|-
|246 ||Magenta1
|-
|255 ||Pastel Greenb || rowspan="3" |64K bank number (0..7); always 0 on an unexpanded CPC6128, 0-7 on [[Standard Memory Expansions]]
|-
|264 ||Limeb
|-
|273 ||Pastel Cyanb
|-
|282 ||Redx || rowspan="3" | RAM Config (0..7)
|-
|291 ||Mauve|-|30||Yellow|-|31||Pastel Bluex
|-
| 0 || x
|}
===== Notes =====
This The 3bit RAM Config value is not an official colour used to access the second 64K of the total 128K RAM that is built into the CPC 6128 or the additional 64K-512K of standard memory expansions. These contain up to eight 64K ram banks, which are selected with bit 3-5. A standard CPC 6128 only contains bank 0. Normally the register is set to 0, so that only the first 64K RAM are used (identical to the CPC 464 and 664 models). The register can be used to select between the following eight predefined configurations only:
Select screen mode and rom configuration -Address- 0 1 2 3 4 5 6 7 0000-3FFF RAM_0 RAM_0 '''RAM_4''' RAM_0 RAM_0 RAM_0 RAM_0 RAM_0 4000-7FFF RAM_1 RAM_1 '''RAM_5''' '''RAM_3''' '''RAM_4''' '''RAM_5''' '''RAM_6''' '''RAM_7''' 8000-BFFF RAM_2 RAM_2 '''RAM_6''' RAM_2 RAM_2 RAM_2 RAM_2 RAM_2 C000-FFFF RAM_3 '''RAM_7''' '''RAM_7''' '''RAM_7''' RAM_3 RAM_3 RAM_3 RAM_3
This The Video RAM is a general purpose register responsible for always located in the screen mode and the rom configurationfirst 64K, VRAM is in no way affected by this register.
==== Screen mode selection ==Programming the Gate Array - Examples ==
The function of bits 1 and Defining the colours, <br>Setting pen 0 is to define the screen modeBright White. The settings for bits 1 and <pre>LD BC,7F00&nbsp;;Gate Array portLD A,%00000000+0 &nbsp;;Pen number (and the corresponding screen mode are given in the table below.Gate Array function)OUT (C),A&nbsp;;Send pen numberLD A,%01000000+11&nbsp;;Pen colour (and Gate Array function)OUT (C),A&nbsp;;Send itRET
{|{{Prettytable|width: 700px; font-size: 2em;}}|''Bit 1''||''Bit 0''||''Screen Setting the mode'' |-|0||0||Mode 0and ROM configuration, 160x200 resolution, 16 colours|-|0||1||Mode 1, 320x200 resolution, 4 colours|-|1||0||Mode 2, 640x200 resolution, 2 colours|-|1||1||Mode 3, 160x200 resolution, 4 colours (note 1)|-|}upper and lower ROM disabled.
This mode is not official. From the combinations possibleLD BC, we can see that 4 modes can be defined7F00&nbsp;;Gate array portLD A, although the Amstrad only has 3. %10000000+%00001110&nbsp;;Mode 3 is similar to mode 0and ROM selection (and Gate Array function)OUT (C), because A&nbsp;;Send it has the same resolution, but it is limited to only 4 colours.RET</pre>
Mode changing is synchronised with HSYNC. If the mode is changed, it will take effect from the next HSYNC.=== Misc ===
==== Rom configuration selection ====The hardware colour number is different to the colour range used by the firmware, so a conversion chart is provided for the corresponding firmware/hardware colour values and the corresponding colour name.
Bit 2 is used to enable or disable the lower rom area. The lower rom area occupies memory addressess &amp;0000-&amp;3fff and is used to access the operating system rom. When the lower rom area is is enabled, reading from &amp;0000-&amp;3FFF will return data in the rom. When a value is written to &amp;0000-&amp;3FFF, it will be written to the ram underneath the rom. When it is disabled, data read from &amp;0000-&amp;3FFF will return the data in the ram.=== Note ===
Similarly, bit 3 controls enabling or disabling The firmware keeps track of the upper rom area. The upper rom area occupies memory addressess &amp;C000-&amp;FFFF and colours it is BASIC or any expansion roms which may be plugged into a rom board/boxusing. See Every VSYNC (assuming interrupts are enabled) the firmware sets the document on upper rom selection for more detailscolours. When This enables the user to have flashing colours. If the upper rom area enabled, reading from &amp;c000-&amp;ffffuser selects a new colour using the gate array, the new colour will flash temporarily and then return data in the romto its original colour. When data This is written due to &amp;c000-&amp;FFFF, it will be written to the ram at the same address as firmware resetting the romcolour. When using the upper rom area is disabledfirmware, use its routines to select the colour, and data is read from &amp;c000-&amp;ffff the data returned colour will be the data in the ramremain.
Bit 4 controls the interrupt generation. It can be used Example: [For whatever reason, this example does NOT refer to delay interrupts. See the document on interrupt generation for more information.above firmware stuff]<pre>ld bc,7f00+1&nbsp;;Gate array function (set pen);and pen numberout (c),cld bc,7f00&nbsp;;41 ;Gate array function (set colour);and colour numberout (c),cret</pre>
===== Summary ===Palette R,G,B definitions ==
{|{{Prettytable|width: 700px; fontThere are 27 colours which are generated from red, green and blue mixed in different quantities. There are 3 levels of red, 3 levels of green and 3 levels of blue, and these can be thought of as off/no colour, half-on/half-size: 2em;}}colour, and on/full-colour.  To display a CPC image you will need to use a analogue monitor with a composite sync.  === Palette sorted by Hardware Colour Numbers === {|''Bit''||''Value''||''Function'' class="FCK__ShowTableBorders"
|-
|7''Hardware Number||0Firmware Number||Gate Array function ''Colour Name'' | ''R&nbsp;%'' || ''G&nbsp;%'' || ''B&nbsp;%'' || ''Colour''
|-
|6 0 (40h) ||113 || White || 50|| 50|| 50|| bgcolor="#808080" |
|-
|5 1 (41h) ||x(13) ||not usedWhite || 50|| 50|| 50|| bgcolor="#808080" |
|-
|4 2 (42h) ||x19 ||Interrupt generation controlSea Green || 0||100|| 50|| bgcolor="#00ff80" |
|-
| 3(43h) ||x25 ||*1 Upper rom area disable*0 Upper rom area enablePastel Yellow ||100||100|| 50|| bgcolor="#ffff80" |
|-
|2 4 (44h) ||x1 ||*1 Lower rom area disable*Blue || 0 Lower rom area enable|| 0|| 50|| bgcolor="#000080" |
|-
|1 5 (45h) ||x7 ||Mode slectionPurple ||100|| 0|| 50|| bgcolor="#ff0080" |
|-
| 6 (46h) || 10 || Cyan || 0||x50|| 50||bgcolor="#008080" |
|-
| 7 (47h) || 16 || Pink ||100|| 50|| 50|| bgcolor="#ff8080" |
|-
| 8 (48h) || (7) || Purple ||100|| 0|| 50|| bgcolor="#ff0080" |
|-
| 9 (49h) || (25) || Pastel Yellow ||100||100|| 50|| bgcolor="#ffff80" |
|-
| 10 (4Ah) || 24 || Bright Yellow ||100||100|| 0|| bgcolor="#ffff00" |
|-
| 11 (4Bh) || 26 || Bright White ||100||100||100|| bgcolor="#ffffff" |
|-
| 12 (4Ch) || 6 || Bright Red ||100|| 0|| 0|| bgcolor="#ff0000" |
|-
| 13 (4Dh) || 8 || Bright Magenta||100|| 0||100|| bgcolor="#ff00ff" |
|-
| 14 (4Eh) || 15 || Orange ||100|| 50|| 0|| bgcolor="#ff8000" |
|-
| 15 (4Fh) || 17 || Pastel Magenta||100|| 50||100|| bgcolor="#ff80ff" |
|-
| 16 (50h) || (1) || Blue || 0|| 0|| 50|| bgcolor="#000080" |
|-
| 17 (51h) || (19) || Sea Green || 0||100|| 50|| bgcolor="#00ff80" |
|-
| 18 (52h) || 18 || Bright Green || 0||100|| 0|| bgcolor="#00ff00" |
|-
| 19 (53h) || 20 || Bright Cyan || 0||100||100|| bgcolor="#00ffff" |
|-
| 20 (54h) || 0 || Black || 0|| 0|| 0|| bgcolor="#000000" |
|-
| 21 (55h) || 2 || Bright Blue || 0|| 0||100|| bgcolor="#0000ff" |
|-
| 22 (56h) || 9 || Green || 0|| 50|| 0|| bgcolor="#008000" |
|-
| 23 (57h) || 11 || Sky Blue || 0|| 50||100|| bgcolor="#0080ff" |
|-
| 24 (58h) || 4 || Magenta || 50|| 0|| 50|| bgcolor="#800080" |
|-
| 25 (59h) || 22 || Pastel Green || 50||100|| 50|| bgcolor="#80ff80" |
|-
| 26 (5Ah) || 21 || Lime || 50||100|| 0|| bgcolor="#80ff00" |
|-
| 27 (5Bh) || 23 || Pastel Cyan || 50||100||100|| bgcolor="#80ffff" |
|-
| 28 (5Ch) || 3 || Red || 50|| 0|| 0|| bgcolor="#800000" |
|-
| 29 (5Dh) || 5 || Mauve || 50|| 0||100|| bgcolor="#8000ff" |
|-
| 30 (5Eh) || 12 || Yellow || 50|| 50|| 0|| bgcolor="#808000" |
|-
| 31 (5Fh) || 14 || Pastel Blue || 50|| 50||100|| bgcolor="#8080ff" |
|}
== Programming the Gate Array - Examples = Palette sorted by Firmware Colour Numbers ===
Defining the colours, <br>Setting pen 0 to Bright White. <pre>LD BC,7F00 ;Gate Array portLD A,%00000000+0 ;Pen number (and Gate Array function)OUT (C),A ;Send pen numberLD A,%01000000+11 ;Pen colour (and Gate Array function)OUT (C),A ;Send itRET Setting the mode and rom configuration, Mode 2, upper and lower rom disabled. LD BC,7F00 ;Gate array portLD A,%10000000+%00001110 ;Mode and rom selection (and Gate Array function)OUT (C),A ;Send itRET</pre> ==== Conversion chart ==== The hardware colour number is different to the colour range used by the firmware, so a conversion chart is provided for the corresponding firmware/hardware colour values and the corresponding colour name. ===== Note ===== The firmware keeps track of the colours it is using. Every VSYNC (assuming interrupts are enabled) the firmware sets the colours. This enables the user to have flashing colours. If the user selects a new colour using the gate array, the new colour will flash temporarily and then return to it's original colour. This is due to the firmware re- setting the colour. When using the firmware, use it's routines to select the colour, and the colour will remain. {|{{Prettytable|width: 700px; font-size: 2em;}}|''Firmware Colour Number''||''Colour Name''||''Hardware Number''||''Quick reference colour value'' class="FCK__ShowTableBorders"
|-
|0''Firmware Number'' ||Black''Hardware Number'' ||20''Colour Name'' |''R&nbsp;%'' || ''G&54nbsp;%'' || ''B&nbsp;%'' || ''Colour''
|-
|10||Blue54h ||4Black ||&44 0|| 0|| 0||bgcolor="#000000"|
|-
|21|| 44h (or 50h) ||Bright Blue || 0|| 0||50|21|bgcolor="#000080"|&55
|-
|32||Red55h ||28Bright Blue ||&5C 0|| 0||100||bgcolor="#0000ff"|
|-
|43||Magenta5Ch ||24Red ||&5850|| 0|| 0||bgcolor="#800000"|
|-
|54||Mauve58h || 29Magenta ||&5D50|| 0|| 50||bgcolor="#800080"|
|-
|65||Bright Red5Dh ||12Mauve || &4C50|| 0||100||bgcolor="#8000ff"|
|-
|76||Purple4Ch || 5Bright Red ||&45100|| 0|| 0||bgcolor="#ff0000"|
|-
|87||Bright Magenta45h (or 48h) ||13Purple ||&4D100|| 0|| 50||bgcolor="#ff0080"|
|-
|98||Green4Dh ||22Bright Magenta ||&56100|| 0||100||bgcolor="#ff00ff"|
|-
|109||Cyan56h ||6Green ||&46 0|| 50|| 0||bgcolor="#008000"|
|-
|1110||Sky Blue46h ||23Cyan ||&57 0|| 50|| 50||bgcolor="#008080"|
|-
|1211||Yellow57h ||30Sky Blue ||&5E 0|| 50||100||bgcolor="#0080ff"|
|-
|1312||White5Eh ||Yellow || 50|| 50|| 0||&40bgcolor="#808000"|
|-
|1413||Pastel Blue40h (or 41h) ||31White ||&5F50|| 50|| 50||bgcolor="#808080"|
|-
|1514||Orange5Fh ||14Pastel Blue || 50|| 50||100||bgcolor="#8080ff"|&4E
|-
|1615||Pink4Eh ||7Orange ||&47100|| 50|| 0||bgcolor="#ff8000"|
|-
|1716||Pastel Magenta47h ||15Pink ||&4F100|| 50|| 50||bgcolor="#ff8080"|
|-
|1817||Bright Green4Fh ||18Pastel Magenta ||&52100|| 50||100||bgcolor="#ff80ff"|
|-
|1918||Sea 52h ||Bright Green || 0||100|| 0|2|bgcolor="#00ff00"|&42
|-
|2019||Bright Cyan42h (or 51h) ||19Sea Green || 0||100|| 50||bgcolor="#00ff80"|&53
|-
|2120||Lime53h ||26Bright Cyan ||&5A 0||100||100||bgcolor="#00ffff"|
|-
|2221||Pastel Green5Ah ||25Lime ||&5950||100|| 0||bgcolor="#80ff00"|
|-
|2322|| 59h ||Pastel CyanGreen || 50||100||50|27|bgcolor="#80ff80"|&5B
|-
|2423||Bright Yellow5Bh ||10Pastel Cyan ||&4A50||100||100||bgcolor="#80ffff"|
|-
|2524||Pastel 4Ah ||Bright Yellow ||100||100|| 0|3|bgcolor="#ffff00"|&43
|-
|2625||Bright White43h (or 49h) ||11Pastel Yellow ||&4B100||100|| 50||bgcolor="#ffff80"|
|-
|26|| 4Bh ||Bright White ||100||100||100||bgcolor="#ffffff"|
|}
This chart also gives a quick reference guide for programming the colours. The number is the colour number which can be sent directly, once the pen has been selected, to get the colour wanted.=== Intensities ===
Example:The 0%, 50%, and 100% values in the above tables are "should-be" values. However, the real hardware doesn't exactly match that intensities. The actual intensities depend on the luminance mixing (R,G,B tied together via resistors), on chipset (classic CPC, or newer ASIC ones), and on the load applied by external hardware (Monitor, or TV set).* [[CPC Palette]] - some more details
<pre>=== To calculate the colour value ===ld bc,7f00+1 '''Red'''  0% =&gt;Gate array function (set pen)do not add anything  50% =&gt;and pen numberadd 3 out (c),cld bc,7f00 100% =&gt;41 add 6  '''Green'''  0% =&gt;Gate array function (set colour)do not add anything  50% =&gt;and colour numberadd 9  100% =&gt; add 18  '''Blue'''  0% =&gt; do not add anything  50% =&gt; add 1  100% =&gt; add 2  === Green Screen Colours === out On a green screen (cwhere all colours are shades of green),cret<the colours (in the software/pre>firmware colours), are in order of increasing intensity. Black is very dark, and white is bright green, and colour 13 is a medium green. (Thanks to [[Mark Rison|Mark Rison]] for this information)
==== Pallette R,G,B definitions ==Pictures ==
There are 27 colours which are generated from red, green and blue mixed in different quantities<gallery>Image:40010_am2_metal. There are 3 levels of red, 3 levels of green and 3 levels of blue, and these can be thought of as offjpg|40010 GA Metal LayerImage:40010_am2_acid.jpg|40010 GA with Metal Layer removedImage:40226_am4_metal.jpg|40226 PreASIC Metal Layer</no colour, half-on/half-colour, and on/full-colour.gallery>
To display a CPC image you will need to use a analogue monitor with a composite sync.==See also==
This table shows the relationship between hardware colour number, colour name *[[Gate Array and RGB mixing.ASIC Pin-Outs]]
Hardware Colour Index Colour Name RGB <br>R % G % B % <br>0 White 50 50 50 <br>1 White 50 50 50 <br>2 Sea Green 0 100 50 <br>3 Pastel Yellow 100 100 50 <br>4 Blue 0 0 50 <br>5 Purple 100 0 50 <br>6 Cyan 0 50 50 <br>7 Pink 100 50 50 <br>8 Purple 100 0 50 <br>9 Pastel Yellow 100 100 50 <br>10 Bright Yellow 100 100 0 <br>11 Bright White 100 100 100 <br>12 Bright Red 100 0 0 <br>13 Bright Magenta 100 0 100 <br>14 Orange 100 50 0 <br>15 Pastel Magenta 100 50 100 <br>16 Blue 0 0 50 <br>17 Sea Green 0 100 50 <br>18 Bright Green 0 100 0 <br>19 Bright Cyan 0 100 100 <br>20 Black 0 0 0 <br>21 Bright Blue 0 0 100 <br>22 Green 0 50 0 <br>23 Sky Blue 0 50 100 <br>24 Magenta 50 0 50 <br>25 Pastel Green 50 100 50 <br>26 Lime 50 100 0 <br>27 Pastel Cyan 50 100 100 <br>28 Red 50 0 0 <br>29 Mauve 50 0 100 <br>30 Yellow 50 50 0 <br>31 Pastel Blue 50 50 100*[[Video modes]] : for other informations on colours and pixels.
*[[CRTC]] : the other video stuff.
*[[ASIC]] : for Plus users
*[[Synchronising with the CRTC and display]] : technical details on the relationship between Gate Array and CRTC.
<br>RGB assignments for the software colours<br>This is simply a sidenote to illustrate a pattern in the RGB assignments of the software colours and to show how their value is calculated*[[Media:40010-simplified V03. Firmware Colour Number Colour Name R % G % B % <br>0 Black 0 0 0 <br>1 Blue 0 0 50 <br>2 Bright Blue 0 0 100 <br>3 Red 50 0 0 <br>4 Magenta 50 0 50 <br>5 Mauve 50 0 100 <br>6 Bright Red 100 0 0 <br>7 Purple 100 0 50 <br>8 Bright Magenta 100 0 100 <br>9 Green 0 50 0 <br>10 Cyan 0 50 50 <br>11 Sky Blue 0 50 100 <br>12 Yellow 50 50 0 <br>13 White 50 50 50 <br>14 Pastel Blue 50 50 100 <br>15 Orange 100 50 0 <br>16 Pink 100 50 50 <br>17 Pastel Magenta 100 50 100 <br>18 Bright Green 0 100 0 <br>19 Sea Green 0 100 50 <br>20 Bright Cyan 0 100 100 <br>21 Lime 50 100 0 <br>22 Pastel Green 50 100 50 <br>23 Pastel Cyan 50 100 100 <br>24 Bright Yellow 100 100 0 <br>25 Pastel Yellow 100 100 50 <br>26 Bright White 100 100 100 <br>To calculate the colour valuepdf]] [https: <br>Red <br>0% =&gt; do not add anything <br>50% =&gt; add 3 <br>100% =&gt; add 6 <br>Green <br>0% =&gt; do not add anything <br>50% =&gt; add 9 <br>100% =&gt; add 18 <br>Blue <br>0% =&gt; do not add anything <br>50% =&gt; add 1 <br>100% =&gt; add 2//www.cpcwiki.eu/forum/amstrad-cpc-hardware/gate-array-decapped!/msg170713/#msg170713 Forum thread] Gate Array schematics - reverse engineered by Gerald
Green Screen Colours== External links ==On a green screen (where all colours are shades of green), *[https://bread80.com/2021/06/03/understanding-the colours (in the software-amstrad-cpc-video-ram-and-gate-array-subsystem/firmware colours), are in order Electronic signals analysis of increasing intensitythe Gate Array by Bread80]* [https://www. So that black is very dark, and white is bright green, and colour 13 is a medium greengrimware. org/doku.php/documentations/devices/gatearray Gate Array documentation from Grimware]* [http://quasar.cpcscene.net/doku.php?id=assem:gate_array Quasar Gate Array documentation (Thanks to Mark Rison for this informationin french) <br>]
[[Category:Hardware]][[Category:Programming]][[Category:Datasheet]][[Category:Graphic]][[Category:CPC Internal Components]][[Category:Electronic Component]]
7,122
edits