<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://oldwiki.cpcwiki.eu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Phi2x</id>
		<title>CPCWiki - THE Amstrad CPC encyclopedia! - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://oldwiki.cpcwiki.eu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Phi2x"/>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php/Special:Contributions/Phi2x"/>
		<updated>2026-08-28T06:24:31Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.25.1</generator>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Gate_Array&amp;diff=126277</id>
		<title>Gate Array</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Gate_Array&amp;diff=126277"/>
				<updated>2025-05-24T10:05:17Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: Removing the false allegations. It is all based on common knowledge.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Amstrad 40007 Gate Array.png|right|thumb|Amstrad 40007 Gate Array]]&lt;br /&gt;
[[File:Amstrad 40010 Gate Array.png|right|thumb|Amstrad 40010 Gate Array]]&lt;br /&gt;
&lt;br /&gt;
Also designated as Video Gate Array (VGA, not to be confused with the IBM PC compatible graphic card spec).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Introduction  ==&lt;br /&gt;
&lt;br /&gt;
The Gate Array is a specially designed chip exclusively for use in the Amstrad CPC and was designed by Amstrad plc. &lt;br /&gt;
&lt;br /&gt;
In the CPC+ system, the functions of the Gate Array are integrated into a single [[ASIC|ASIC]]. When the ASIC is &amp;quot;locked&amp;quot;, the extra features are not available and the 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 &amp;quot;un-locked&amp;quot; to access the new features. &lt;br /&gt;
&lt;br /&gt;
In the [[KC Compact]] system, the functions of the Gate Array are &amp;quot;emulated&amp;quot; in TTL chips, [[CIO Overview|CIO]], and its color translation EPROM.&lt;br /&gt;
&lt;br /&gt;
In the &amp;quot;cost-down&amp;quot; version of the CPC6128, the functions of the Gate Array are integrated into an ASIC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== What does it do? ==&lt;br /&gt;
&lt;br /&gt;
The Gate Array is responsible for the display (colour palette, resolution, horizontal and vertical sync), bus arbitration, DRAM refresh, interrupt generation and memory arrangement. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bus arbitration ==&lt;br /&gt;
&lt;br /&gt;
The Gate Array arbitrates access to the RAM between the CPU and the video hardware (CRTC and Gate-Array).&lt;br /&gt;
&lt;br /&gt;
Every microsecond: &lt;br /&gt;
* The CRTC generates a memory address using it's MA and RA signal outputs. See the [[CRTC]] wiki page to know how the motherboard wiring transforms these signals into the Video Memory Address (VMA).&lt;br /&gt;
* The Gate Array fetches 2 bytes for each address. /CPU_ADDR is a 1MHz signal. So these 2 bytes are fetched sequentially. They are not interleaved with Z80 access. These bytes are fetched even when the border is on as this is required for DRAM refresh.&lt;br /&gt;
* The video hardware is given priority so that the display is not disrupted.&lt;br /&gt;
&lt;br /&gt;
The Gate-Array generates the &amp;quot;READY&amp;quot; signal which is connected to the &amp;quot;/WAIT&amp;quot; input signal of the CPU. This signal is used to stop the CPU accessing RAM while the video-hardware is accessing it.&lt;br /&gt;
&lt;br /&gt;
In fact, the Gate Array allows the Z80 to access the RAM in only 1 out of every 4 cycles. As a result, all instruction timings are stretched so that they are all multiples of a microsecond (1µs), and this gives an effective CPU clock of 3.3Mhz.&lt;br /&gt;
&lt;br /&gt;
Unlike the ZX Spectrum or the Amiga, where bus arbitration is restricted to the &amp;quot;contended memory&amp;quot; or &amp;quot;chip RAM&amp;quot;, on the CPC it also applies to ROM access and to RAM expansions. So the Z80 always runs at the same speed, regardless of the type of memory being accessed.&lt;br /&gt;
&lt;br /&gt;
Last but not least, bus arbitration also applies to I/O access. And memory access is not aligned with I/O access on Z80.&lt;br /&gt;
&lt;br /&gt;
Note: On Amstrad Plus, the ASIC also has to handle DMA instruction fetch from RAM.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DRAM refresh ==&lt;br /&gt;
&lt;br /&gt;
On Amstrad CPC, the Gate Array is responsible for the DRAM refresh, instead of using the Z80 built-in DRAM refresh mechanism. The reason is that there can only be 3 DRAM accesses per microsecond on this architecture. Doing DRAM refresh on each M1 cycle as it is done on MSX would bog down the CPU speed on CPC given its bus arbitration scheme.&lt;br /&gt;
&lt;br /&gt;
The Z80 generates a maximum of one request per microsecond. The CPC also requires two memory accesses per microsecond for reading video data.&lt;br /&gt;
&lt;br /&gt;
The CPC specs 4164-20 DRAMs. These require 330nS for a read or write cycle. The CPC also uses the optimised sequential CAS cycles to read the two video data bytes in half a microsecond. [https://www.cpcwiki.eu/forum/amstrad-cpc-hardware/the-cpc-revision-zero-article/msg243769/ Source]&lt;br /&gt;
&lt;br /&gt;
The way to cause the RAM refresh to fail in both a Plus or normal CPC is simply to stop a few bits of the CRTC address changing (ie. never refresh the selected area).&lt;br /&gt;
&lt;br /&gt;
Generally, only the Row address needs to be cycled, so stopping MA0 through MA7 from changing, and stopping the CPU from reading those rows, will cause data to be lost, quite quickly (generally around 4ms). [https://www.cpcwiki.eu/forum/amstrad-cpc-hardware/memory-refresh-plus/ Source]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Interrupt generation ==&lt;br /&gt;
&lt;br /&gt;
Interrupts on the CPC are created by the Gate Array based on settings from the CRTC. The Gate Array has an internal counter R52 (the R is for Raster) that counts from 0 to 51, incrementing after each HSYNC signal.&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, R52 interrupts always start 1µs after the end of an HSYNC. But on CRTCs 3/4, HSYNCs occur 1µs later than on CRTCs 0/1/2. Which means that on CRTCs 3/4, interrupts start 1µs later than on CRTCs 0/1/2. This can be adjusted by using the CRTC register 3.&lt;br /&gt;
&lt;br /&gt;
R52 will return to 0 and the Gate Array will send an interrupt request on any of these conditions:&lt;br /&gt;
* When it exceeds 51&lt;br /&gt;
* By setting bit4 of the RMR register of the Gate Array to 1&lt;br /&gt;
* At the end of the 2nd HSYNC after the start of the VSYNC&lt;br /&gt;
&lt;br /&gt;
When the Gate Array sends an interrupt request:&lt;br /&gt;
*If the interrupts were authorized at the time of the request, then bit5 of R52 is cleared (but R52 was reset to 0 anyway) and the interrupt takes place&lt;br /&gt;
*If interrupts are not authorized, then the R52 counter continues to increment and the interrupt remains armed (the Gate Array then maintains its INT signal). When interrupts are enabled (using the EI instruction), bit5 of R52 is cleared and the interrupt takes place. This happens only '''after the instruction that follows EI''' as this Z80 instruction has a 1-instruction delay.&lt;br /&gt;
&lt;br /&gt;
Note: On Amstrad Plus, the interrupt management system is seriously beefed up. See the [[ASIC]] wiki page.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CSYNC signal ==&lt;br /&gt;
&lt;br /&gt;
The HSYNC and VSYNC signals are received from the [[CRTC]]. These signals are then modified by the Gate Array to C-HSYNC and C-VSYNC and merged into a single CSYNC signal that will be sent to the display.&lt;br /&gt;
&lt;br /&gt;
When CRTC HSYNC is active, the Gate Array immediately outputs the palette colour black. If the HSYNC is set to 14 characters then black will be output for 14µs.&lt;br /&gt;
&lt;br /&gt;
If a graphics mode change is pending, the HSYNC pulse width needs to be at least 2µs for Gate Array to change the graphics mode.&lt;br /&gt;
&lt;br /&gt;
C-HSYNC begins 2µs after activation of the CRTC HSYNC and stays a maximum of 4µs (signal is cut short if HSYNC width is greater than 6).&lt;br /&gt;
&lt;br /&gt;
For example, if CRTC R2=46, and CRTC HSYNC width is 14 chars then C-HSYNC starts at 48 and lasts only until 51 included.&lt;br /&gt;
&lt;br /&gt;
On Gate Array, even if the duration of the CRTC VSYNC is reduced to 2 µseconds, the Gate Array will always output black for 26 lines with 4 lines of C-VSYNC to the monitor. While on ASIC/Pre-ASIC, the CRTC VSYNC must be active as long as the C-VSYNC signal is sent to the monitor.&lt;br /&gt;
&lt;br /&gt;
The Gate Array (and ASIC/Pre-ASIC) uses 2 internal counters to create its CSYNC signal:&lt;br /&gt;
* H06 counts the number of CRTC characters processed during an HSYNC. H06 is incremented by the Gate Array for each CRTC character when CRTC HSYNC is active. The Gate Array activates the C-HSYNC signal when H06 reaches 2, and changes its graphics mode if a change was pending. It deactivates this signal when H06 reaches 6.&lt;br /&gt;
* V26 counts the number of HSYNCs occuring during a VSYNC. V26 is incremented by the Gate Array when the CRTC signals an end of HSYNC. The Gate Array activates the C-VSYNC signal when V26 reaches 2 (and if VSYNC is active on ASIC/Pre-ASIC). It deactivates this signal when V26 reaches 6. After the 26th line has been processed, the Gate Array stops outputting the palette colour black.&lt;br /&gt;
&lt;br /&gt;
If CRTC VSYNC is activated again while V26 is still in progress, then V26 is reset to 0 and starts counting up again the HSYNC pulses.&lt;br /&gt;
&lt;br /&gt;
The HSYNC signal from the CRTC is 0 when inactive and 1 when active. Same for VSYNC.&lt;br /&gt;
&lt;br /&gt;
C-HSYNC and C-VSYNC are composited using the XNOR function. The resulting CSYNC signal produced by the Gate Array is 1 when inactive and 0 when active.&lt;br /&gt;
&lt;br /&gt;
On a CPC monitor, the CSYNC is rendered in &amp;quot;absolute black&amp;quot;. It is darker than the palette colour black output by the Gate Array. The electron beam is basically turned off. Turning up the brightness level won't make it any brighter.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Controlling the Gate Array  ==&lt;br /&gt;
&lt;br /&gt;
The gate array is controlled by I/O. The gate array is selected when bit 15 of the I/O port address is set to &amp;quot;0&amp;quot; and bit 14 of the I/O port address is set to &amp;quot;1&amp;quot;. The values of the other bits are ignored. However, to avoid conflict with other devices in the system, these bits should be set to &amp;quot;1&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
The recommended I/O port address is &amp;amp;7Fxx. &lt;br /&gt;
&lt;br /&gt;
The Gate Array is not connected to the CPU's RD and WR pins, so it cannot detect the bus's I/O direction. If you execute an I/O read operation on the Gate Array I/O address, the Gate Array will read an unpredictable value from the databus which will be in high-impedance state. If the value is a valid Gate Array command, it will be executed, otherwise nothing will happen. [https://www.grimware.org/doku.php/documentations/devices/gatearraydo=export_xhtml Source]&lt;br /&gt;
&lt;br /&gt;
The function to be performed is selected by writing data to the Gate Array, the first bits of the data define the function selected (see table below). It is not possible to read from the Gate Array. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=4| 8bit command&lt;br /&gt;
!rowspan=2| Machine&lt;br /&gt;
!rowspan=2| Register&lt;br /&gt;
!rowspan=2| Description&lt;br /&gt;
!rowspan=2| Chip&lt;br /&gt;
|-&lt;br /&gt;
! 7&lt;br /&gt;
! 6&lt;br /&gt;
! 5&lt;br /&gt;
! 4..0&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0 || x || style=&amp;quot;text-align: center;&amp;quot; | n || All || PENR || Select a color register || Gate Array&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1 || x || style=&amp;quot;text-align: center;&amp;quot; | n || All || INKR || Change the value of the currently selected color register || Gate Array&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0 || 0 || style=&amp;quot;text-align: center;&amp;quot; | n || All || RMR || Control Interrupt counter, ROM mapping and Graphics mode || Gate Array&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot;|1 || rowspan=&amp;quot;2&amp;quot;|0 || rowspan=&amp;quot;2&amp;quot;|1 || style=&amp;quot;text-align: center;&amp;quot; rowspan=&amp;quot;2&amp;quot; | n || All || RMR || ''Ghost register'' || Gate Array (CPC) or locked ASIC (Plus)&lt;br /&gt;
|-&lt;br /&gt;
| Plus || RMR2 || ASIC &amp;amp; Advanced ROM mapping || Unlocked ASIC&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1 ||colspan=2  style=&amp;quot;text-align: center;&amp;quot; | n || All || MMR || RAM memory mapping || PAL (only with 128KB or RAM expansion)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The MMR register is not available in the Gate Array, but is performed by a device at the same I/O port address location.&lt;br /&gt;
&lt;br /&gt;
In the CPC464, CPC664 and KC compact, MMR is performed in an external memory expansion (e.g. Dk'Tronics 64K RAM Expansion), if this expansion is not present then MMR is not available.&lt;br /&gt;
&lt;br /&gt;
In the CPC6128, MMR is performed by a [[PAL16L8|PAL chip]] located on the main PCB, or an external memory expansion.&lt;br /&gt;
&lt;br /&gt;
In the 464+ and 6128+, MMR is performed by the ASIC or an external memory expansion. Please read the document on RAM management for more information.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Registers ==&lt;br /&gt;
&lt;br /&gt;
Note: The Plus palette capabilities are only accessible through the [[Default I/O Port Summary|ASIC I/O page]]. Registers PENR and INKR are not needed in that case.&lt;br /&gt;
&lt;br /&gt;
=== Register PENR (Select a color register) ===&lt;br /&gt;
&lt;br /&gt;
When bit 7 and bit 6 are set to &amp;quot;0&amp;quot;, the remaining bits determine which pen is to have its colour changed. When bit 4 is set to &amp;quot;0&amp;quot;, bits 3 to 0 define which pen is to be selected. When bit 4 is set to &amp;quot;1&amp;quot;, the value contained in bits 3-0 is ignored and the border is selected. &lt;br /&gt;
&lt;br /&gt;
The pen remains selected until another is chosen. &lt;br /&gt;
&lt;br /&gt;
Each mode has a fixed number of pens. Mode 0 has 16 pens, mode 1 has 4 pens and mode 2 has 2 pens. &lt;br /&gt;
&lt;br /&gt;
==== Summary  ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Bit&lt;br /&gt;
!Value&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 0 || rowspan=&amp;quot;2&amp;quot; | Gate Array PENR register&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 0 &lt;br /&gt;
|-&lt;br /&gt;
| 5 || - || not used&lt;br /&gt;
|-&lt;br /&gt;
| 4 || 1 || Select border&lt;br /&gt;
|-&lt;br /&gt;
| 3 || x || rowspan=&amp;quot;4&amp;quot; | Ignored&lt;br /&gt;
|-&lt;br /&gt;
| 2 || x&lt;br /&gt;
|-&lt;br /&gt;
| 1 || x&lt;br /&gt;
|-&lt;br /&gt;
| 0 || x&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Bit&lt;br /&gt;
!Value&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 0 || rowspan=&amp;quot;2&amp;quot; | Gate Array PENR register&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 0&lt;br /&gt;
|-&lt;br /&gt;
| 5 || - || not used&lt;br /&gt;
|-&lt;br /&gt;
| 4 || 0 || Select pen&lt;br /&gt;
|-&lt;br /&gt;
| 3 || x || rowspan=&amp;quot;4&amp;quot; | Pen number&lt;br /&gt;
|-&lt;br /&gt;
| 2 || x&lt;br /&gt;
|-&lt;br /&gt;
| 1 || x&lt;br /&gt;
|-&lt;br /&gt;
| 0 || x&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Register INKR (Change the value of the currently selected color register) ===&lt;br /&gt;
&lt;br /&gt;
Once the pen has been selected its colour can then be changed. Bits 4 to 0 specify the hardware colour number from the hardware colour palette. &lt;br /&gt;
&lt;br /&gt;
Even though there is provision for 32 colours, only 27 are possible. The remaining colours are duplicates of those already in the colour palette. &lt;br /&gt;
&lt;br /&gt;
==== Summary  ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Bit&lt;br /&gt;
!Value&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 0 || rowspan=&amp;quot;2&amp;quot; | Gate Array INKR register&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 5 || - || not used&lt;br /&gt;
|-&lt;br /&gt;
| 4 || x || rowspan=&amp;quot;5&amp;quot; | Colour number x&lt;br /&gt;
|-&lt;br /&gt;
| 3 || x &lt;br /&gt;
|-&lt;br /&gt;
| 2 || x &lt;br /&gt;
|-&lt;br /&gt;
| 1 || x&lt;br /&gt;
|-&lt;br /&gt;
| 0 || x&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Register RMR (Control Interrupt counter, ROM mapping and Graphics mode) ===&lt;br /&gt;
&lt;br /&gt;
This is a general purpose register responsible for the [[Video modes|graphics mode]] and the ROM configuration. &lt;br /&gt;
&lt;br /&gt;
==== Graphics mode selection  ====&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Bit 1&lt;br /&gt;
!Bit 0&lt;br /&gt;
!Screen mode&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0 || Mode 0, 160x200 resolution, 16 colours&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1 || Mode 1, 320x200 resolution, 4 colours&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0 || Mode 2, 640x200 resolution, 2 colours&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1 || Mode 3, 160x200 resolution, 4 colours (undocumented)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* 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).&lt;br /&gt;
&lt;br /&gt;
Mode changing is synchronised with HSYNC. If the mode is changed, it will take effect from the next HSYNC.&lt;br /&gt;
&lt;br /&gt;
==== ROM configuration selection  ====&lt;br /&gt;
&lt;br /&gt;
Bit 2 is used to enable or disable the lower ROM area. The lower ROM area occupies memory addresses &amp;amp;amp;0000-&amp;amp;amp;3fff and is used to access the operating system ROM. When the lower ROM area is is enabled, reading from &amp;amp;amp;0000-&amp;amp;amp;3FFF will return data in the ROM. When a value is written to &amp;amp;amp;0000-&amp;amp;amp;3FFF, it will be written to the RAM underneath the ROM. When it is disabled, data read from &amp;amp;amp;0000-&amp;amp;amp;3FFF will return the data in the RAM. &lt;br /&gt;
&lt;br /&gt;
Similarly, bit 3 controls enabling or disabling of the upper ROM area. The upper ROM area occupies memory addressess &amp;amp;amp;C000-&amp;amp;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;amp;amp;c000-&amp;amp;amp;ffff, will return data in the ROM. When data is written to &amp;amp;amp;c000-&amp;amp;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;amp;amp;c000-&amp;amp;amp;ffff it will be the data in the RAM. &lt;br /&gt;
&lt;br /&gt;
Bit 4 controls the interrupt generation. It can be used to delay interrupts. See the document on interrupt generation for more information.&lt;br /&gt;
&lt;br /&gt;
==== Summary  ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Bit&lt;br /&gt;
!Value&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 1 || rowspan=&amp;quot;2&amp;quot; | Gate Array RMR register&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 0 &lt;br /&gt;
|-&lt;br /&gt;
| 5 || - || ''must be 0 on Plus machines with ASIC unlocked''&lt;br /&gt;
|-&lt;br /&gt;
| 4 || x || Interrupt generation control&lt;br /&gt;
|-&lt;br /&gt;
| 3 || x || 1=Upper ROM area disable, 0=Upper ROM area enable&lt;br /&gt;
|-&lt;br /&gt;
| 2 || x || 1=Lower ROM area disable, 0=Lower ROM area enable&lt;br /&gt;
|-&lt;br /&gt;
| 1 || x || rowspan=&amp;quot;2&amp;quot; | Graphics Mode selection&lt;br /&gt;
|-&lt;br /&gt;
| 0 || x&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Register RMR2 (ASIC &amp;amp; Advanced ROM mapping) ===&lt;br /&gt;
&lt;br /&gt;
This register exists only in Plus or GX4000, and is only accessible when the ASIC is unlocked.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Bit&lt;br /&gt;
!Value&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 1 || rowspan=&amp;quot;3&amp;quot; | Gate Array RMR2 register&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 0&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 4 || x || rowspan=&amp;quot;2&amp;quot; |RMR addressing mode&lt;br /&gt;
|-&lt;br /&gt;
| 3 || x&lt;br /&gt;
|-&lt;br /&gt;
| 2 || x || rowspan=&amp;quot;3&amp;quot; | Physical ROM number (0..7)&lt;br /&gt;
|-&lt;br /&gt;
| 1 || x&lt;br /&gt;
|-&lt;br /&gt;
| 0 || x&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ RMR addressing modes&lt;br /&gt;
!Bit 4&lt;br /&gt;
!Bit 3&lt;br /&gt;
!Lower ROM&lt;br /&gt;
![[ASIC|ASIC I/O page]]&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|&amp;amp;0000-&amp;amp;3FFF&lt;br /&gt;
|Disabled&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|1&lt;br /&gt;
|&amp;amp;4000-&amp;amp;7FFF&lt;br /&gt;
|Disabled&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|&amp;amp;8000-&amp;amp;BFFF&lt;br /&gt;
|Disabled&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|1&lt;br /&gt;
|&amp;amp;0000-&amp;amp;3FFF&lt;br /&gt;
|&amp;amp;4000-&amp;amp;7FFF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The physical ROMs are also accessible as upper ROMs by using the [[Upper ROM Bank Number]] port and the RMR register.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Register MMR (RAM memory mapping) ===&lt;br /&gt;
&lt;br /&gt;
This register exists only in CPCs with 128K RAM (like the CPC 6128), or CPCs equipped with [[Standard Memory Expansions]].&lt;br /&gt;
&lt;br /&gt;
Note: In the CPC 6128, the register is a separate [[PAL16L8|PAL chip]] that assists the Gate Array chip.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Bit&lt;br /&gt;
!Value&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 1 || rowspan=&amp;quot;2&amp;quot; | Gate Array MMR register&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 1 &lt;br /&gt;
|-&lt;br /&gt;
| 5 || x || rowspan=&amp;quot;3&amp;quot; |64K bank number (0..7); always 0 on an unexpanded CPC6128, 0-7 on [[Standard Memory Expansions]]&lt;br /&gt;
|-&lt;br /&gt;
| 4 || x&lt;br /&gt;
|-&lt;br /&gt;
| 3 || x&lt;br /&gt;
|-&lt;br /&gt;
| 2 || x || rowspan=&amp;quot;3&amp;quot; | RAM Config (0..7)&lt;br /&gt;
|-&lt;br /&gt;
| 1 || x&lt;br /&gt;
|-&lt;br /&gt;
| 0 || x&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The 3bit RAM Config value is 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:&lt;br /&gt;
&lt;br /&gt;
  -Address-     0      1      2      3      4      5      6      7&lt;br /&gt;
  0000-3FFF   RAM_0  RAM_0  '''RAM_4'''  RAM_0  RAM_0  RAM_0  RAM_0  RAM_0&lt;br /&gt;
  4000-7FFF   RAM_1  RAM_1  '''RAM_5'''  '''RAM_3'''  '''RAM_4'''  '''RAM_5'''  '''RAM_6'''  '''RAM_7'''&lt;br /&gt;
  8000-BFFF   RAM_2  RAM_2  '''RAM_6'''  RAM_2  RAM_2  RAM_2  RAM_2  RAM_2&lt;br /&gt;
  C000-FFFF   RAM_3  '''RAM_7'''  '''RAM_7'''  '''RAM_7'''  RAM_3  RAM_3  RAM_3  RAM_3&lt;br /&gt;
&lt;br /&gt;
The Video RAM is always located in the first 64K, VRAM is in no way affected by this register.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Programming the Gate Array - Examples  ==&lt;br /&gt;
&lt;br /&gt;
Defining the colours, &amp;lt;br&amp;gt;Setting pen 0 to Bright White. &lt;br /&gt;
&amp;lt;pre&amp;gt;LD BC,7F00&amp;amp;nbsp;;Gate Array port&lt;br /&gt;
LD A,%00000000+0&amp;amp;nbsp;;Pen number (and Gate Array function)&lt;br /&gt;
OUT (C),A&amp;amp;nbsp;;Send pen number&lt;br /&gt;
LD A,%01000000+11&amp;amp;nbsp;;Pen colour (and Gate Array function)&lt;br /&gt;
OUT (C),A&amp;amp;nbsp;;Send it&lt;br /&gt;
RET&lt;br /&gt;
&lt;br /&gt;
Setting the mode and ROM configuration, &lt;br /&gt;
Mode 2, upper and lower ROM disabled.&lt;br /&gt;
&lt;br /&gt;
LD BC,7F00&amp;amp;nbsp;;Gate array port&lt;br /&gt;
LD A,%10000000+%00001110&amp;amp;nbsp;;Mode and ROM selection (and Gate Array function)&lt;br /&gt;
OUT (C),A&amp;amp;nbsp;;Send it&lt;br /&gt;
RET&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Misc ===&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
=== Note ===&lt;br /&gt;
&lt;br /&gt;
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 its original colour. This is due to the firmware resetting the colour. When using the firmware, use its routines to select the colour, and the colour will remain.&lt;br /&gt;
&lt;br /&gt;
Example: [For whatever reason, this example does NOT refer to the above firmware stuff]&lt;br /&gt;
&amp;lt;pre&amp;gt;ld bc,7f00+1&amp;amp;nbsp;;Gate array function (set pen)&lt;br /&gt;
;and pen number&lt;br /&gt;
out (c),c&lt;br /&gt;
ld bc,7f00&amp;amp;nbsp;;41 &lt;br /&gt;
;Gate array function (set colour)&lt;br /&gt;
;and colour number&lt;br /&gt;
out (c),c&lt;br /&gt;
ret&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Video memory structure ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!rowspan=2|Graphics Mode&lt;br /&gt;
!colspan=8|VRAM byte&lt;br /&gt;
!colspan=8|Displayed Pixels&lt;br /&gt;
!rowspan=2|Definition&lt;br /&gt;
!rowspan=2|Pixel clock&lt;br /&gt;
!rowspan=2|Default resolution&lt;br /&gt;
|-&lt;br /&gt;
!7&lt;br /&gt;
!6&lt;br /&gt;
!5&lt;br /&gt;
!4&lt;br /&gt;
!3&lt;br /&gt;
!2&lt;br /&gt;
!1&lt;br /&gt;
!0&lt;br /&gt;
!1&lt;br /&gt;
!2&lt;br /&gt;
!3&lt;br /&gt;
!4&lt;br /&gt;
!5&lt;br /&gt;
!6&lt;br /&gt;
!7&lt;br /&gt;
!8&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|A0&lt;br /&gt;
|B0&lt;br /&gt;
|A2&lt;br /&gt;
|B2&lt;br /&gt;
|A1&lt;br /&gt;
|B1&lt;br /&gt;
|A3&lt;br /&gt;
|B3&lt;br /&gt;
|colspan=4 style=&amp;quot;text-align: center;&amp;quot;|A&lt;br /&gt;
|colspan=4 style=&amp;quot;text-align: center;&amp;quot;|B&lt;br /&gt;
|2 pixels in 16 colours&lt;br /&gt;
|4 MHz&lt;br /&gt;
|160x200, 20-column text&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|A0&lt;br /&gt;
|B0&lt;br /&gt;
|C0&lt;br /&gt;
|D0&lt;br /&gt;
|A1&lt;br /&gt;
|B1&lt;br /&gt;
|C1&lt;br /&gt;
|D1&lt;br /&gt;
|colspan=2 style=&amp;quot;text-align: center;&amp;quot;|A&lt;br /&gt;
|colspan=2 style=&amp;quot;text-align: center;&amp;quot;|B&lt;br /&gt;
|colspan=2 style=&amp;quot;text-align: center;&amp;quot;|C&lt;br /&gt;
|colspan=2 style=&amp;quot;text-align: center;&amp;quot;|D&lt;br /&gt;
|4 pixels in 4 colours&lt;br /&gt;
|8 MHz&lt;br /&gt;
|320x200, 40-column text&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|A0&lt;br /&gt;
|B0&lt;br /&gt;
|C0&lt;br /&gt;
|D0&lt;br /&gt;
|E0&lt;br /&gt;
|F0&lt;br /&gt;
|G0&lt;br /&gt;
|H0&lt;br /&gt;
|A&lt;br /&gt;
|B&lt;br /&gt;
|C&lt;br /&gt;
|D&lt;br /&gt;
|E&lt;br /&gt;
|F&lt;br /&gt;
|G&lt;br /&gt;
|H&lt;br /&gt;
|8 pixels in 2 colours&lt;br /&gt;
|16 MHz&lt;br /&gt;
|640x200, 80-column text&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|A0&lt;br /&gt;
|B0&lt;br /&gt;
|x&lt;br /&gt;
|x&lt;br /&gt;
|A1&lt;br /&gt;
|B1&lt;br /&gt;
|x&lt;br /&gt;
|x&lt;br /&gt;
|colspan=4 style=&amp;quot;text-align: center;&amp;quot;|A&lt;br /&gt;
|colspan=4 style=&amp;quot;text-align: center;&amp;quot;|B&lt;br /&gt;
|2 pixels in 4 colours&lt;br /&gt;
|4 MHz&lt;br /&gt;
|160x200, 20-column text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Split rasters ==&lt;br /&gt;
&lt;br /&gt;
On the CPC, split rasters occur halfway (after the 8th mode2 pixel) through the rendering of a CRTC character.&lt;br /&gt;
&lt;br /&gt;
On Amstrad Plus, split rasters occur quarter of the way (after the 4th mode2 pixel) through the rendering of a CRTC character.&lt;br /&gt;
&lt;br /&gt;
To easily make split rasters compatible with both the CPC and the Plus machines, one can use the ASIC soft-scroll control register (SSCR) to finely adjust the horizontal position of the graphics.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Palette R,G,B definitions ==&lt;br /&gt;
&lt;br /&gt;
There 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-colour, and on/full-colour. &lt;br /&gt;
&lt;br /&gt;
To display a CPC image you will need to use a analogue monitor with a composite sync.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Palette sorted by Firmware Colour Numbers ===&lt;br /&gt;
&lt;br /&gt;
The firmware colour palette is sorted by luminance value.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!Firmware Number&lt;br /&gt;
!Hardware Number&lt;br /&gt;
!Colour Name&lt;br /&gt;
!R %&lt;br /&gt;
!G %&lt;br /&gt;
!B %&lt;br /&gt;
!ASIC&lt;br /&gt;
!Colour&lt;br /&gt;
|-&lt;br /&gt;
| 0|| 54h          ||Black          ||  0||  0||  0|| #000||bgcolor=&amp;quot;#000000&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| 1|| 44h (or 50h) ||Blue           ||  0||  0|| 50|| #006||bgcolor=&amp;quot;#000080&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| 2|| 55h          ||Bright Blue    ||  0||  0||100|| #00F||bgcolor=&amp;quot;#0000ff&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| 3|| 5Ch          ||Red            || 50||  0||  0|| #600||bgcolor=&amp;quot;#800000&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| 4|| 58h          ||Magenta        || 50||  0|| 50|| #606||bgcolor=&amp;quot;#800080&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| 5|| 5Dh          ||Mauve          || 50||  0||100|| #60F||bgcolor=&amp;quot;#8000ff&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| 6|| 4Ch          ||Bright Red     ||100||  0||  0|| #F00||bgcolor=&amp;quot;#ff0000&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| 7|| 45h (or 48h) ||Purple         ||100||  0|| 50|| #F06||bgcolor=&amp;quot;#ff0080&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| 8|| 4Dh          ||Bright Magenta ||100||  0||100|| #F0F||bgcolor=&amp;quot;#ff00ff&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| 9|| 56h          ||Green          ||  0|| 50||  0|| #060||bgcolor=&amp;quot;#008000&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|10|| 46h          ||Cyan           ||  0|| 50|| 50|| #066||bgcolor=&amp;quot;#008080&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|11|| 57h          ||Sky Blue       ||  0|| 50||100|| #06F||bgcolor=&amp;quot;#0080ff&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|12|| 5Eh          ||Yellow         || 50|| 50||  0|| #660||bgcolor=&amp;quot;#808000&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|13|| 40h (or 41h) ||White          || 50|| 50|| 50||#666||bgcolor=&amp;quot;#808080&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|14|| 5Fh          ||Pastel Blue    || 50|| 50||100|| #66F||bgcolor=&amp;quot;#8080ff&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|15|| 4Eh          ||Orange         ||100|| 50||  0|| #F60|| bgcolor=&amp;quot;#ff8000&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|16|| 47h          ||Pink           ||100|| 50|| 50|| #F66||bgcolor=&amp;quot;#ff8080&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|17|| 4Fh          ||Pastel Magenta ||100|| 50||100|| #F6F||bgcolor=&amp;quot;#ff80ff&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|18|| 52h          ||Bright Green   ||  0||100||  0|| #0F0||bgcolor=&amp;quot;#00ff00&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|19|| 42h (or 51h) ||Sea Green      ||  0||100|| 50|| #0F6||bgcolor=&amp;quot;#00ff80&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|20|| 53h          ||Bright Cyan    ||  0||100||100|| #0FF||bgcolor=&amp;quot;#00ffff&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|21|| 5Ah          ||Lime           || 50||100||  0|| #6F0||bgcolor=&amp;quot;#80ff00&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|22|| 59h          ||Pastel Green   || 50||100|| 50|| #6F6||bgcolor=&amp;quot;#80ff80&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|23|| 5Bh          ||Pastel Cyan    || 50||100||100|| #6FF||bgcolor=&amp;quot;#80ffff&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|24|| 4Ah          ||Bright Yellow  ||100||100||  0|| #FF0||bgcolor=&amp;quot;#ffff00&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|25|| 43h (or 49h) ||Pastel Yellow  ||100||100|| 50||#FF6||bgcolor=&amp;quot;#ffff80&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|26|| 4Bh          ||Bright White   ||100||100||100|| #FFF||bgcolor=&amp;quot;#ffffff&amp;quot;|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note: We can observe that the official Amstrad names of some colours are a bit silly: &amp;quot;red&amp;quot; is in fact brown, &amp;quot;yellow&amp;quot; is in fact khaki and &amp;quot;white&amp;quot; is in fact grey.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Amstrad Colour Names ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Cpc 6128 master colour chat.jpg|Master colour chart&lt;br /&gt;
Cpc 6128 farbtabelle.jpg|Farbtabelle&lt;br /&gt;
Cpc 6128 palette des couleurs.jpg|Palette des couleurs&lt;br /&gt;
Cpc 6128 tabla de colores.jpg|Tabla de colores&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Palette sorted by Hardware Colour Numbers ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Hardware Number&lt;br /&gt;
!Firmware Number&lt;br /&gt;
!R %&lt;br /&gt;
!G %&lt;br /&gt;
!B %&lt;br /&gt;
!ASIC&lt;br /&gt;
!Colour&lt;br /&gt;
!Colour Name&lt;br /&gt;
!German Name&lt;br /&gt;
!French Name&lt;br /&gt;
!Spanish Name&lt;br /&gt;
|-&lt;br /&gt;
|  0 (40h) || 13   || 50|| 50|| 50|| #666|| bgcolor=&amp;quot;#808080&amp;quot; | || White         || Weiß            || Blanc           || Blanco&lt;br /&gt;
|-&lt;br /&gt;
|  1 (41h) || (13) || 50|| 50|| 50|| #666|| bgcolor=&amp;quot;#808080&amp;quot; | || White         || Weiß            || Blanc           || Blanco&lt;br /&gt;
|-&lt;br /&gt;
|  2 (42h) || 19   ||  0||100|| 50|| #0F6|| bgcolor=&amp;quot;#00ff80&amp;quot; | || Sea Green     || Seegrün         || Vert marin      || Verde marino&lt;br /&gt;
|-&lt;br /&gt;
|  3 (43h) || 25   ||100||100|| 50|| #FF6|| bgcolor=&amp;quot;#ffff80&amp;quot; | || Pastel Yellow || Pastellgelb     || Jaune pastel    || Amarillo pastel&lt;br /&gt;
|-&lt;br /&gt;
|  4 (44h) || 1    ||  0||  0|| 50|| #006|| bgcolor=&amp;quot;#000080&amp;quot; | || Blue          || Blau            || Bleu            || Azul&lt;br /&gt;
|-&lt;br /&gt;
|  5 (45h) || 7    ||100||  0|| 50|| #F06|| bgcolor=&amp;quot;#ff0080&amp;quot; | || Purple        || Purpur          || Pourpre         || Púrpura&lt;br /&gt;
|-&lt;br /&gt;
|  6 (46h) || 10   ||  0|| 50|| 50|| #066|| bgcolor=&amp;quot;#008080&amp;quot; | || Cyan          || Blaugrün        || Turquoise       || Ciano&lt;br /&gt;
|-&lt;br /&gt;
|  7 (47h) || 16   ||100|| 50|| 50|| #F66|| bgcolor=&amp;quot;#ff8080&amp;quot; | || Pink          || Rosa            || Rose            || Rosa&lt;br /&gt;
|-&lt;br /&gt;
|  8 (48h) || (7)  ||100||  0|| 50|| #F06|| bgcolor=&amp;quot;#ff0080&amp;quot; | || Purple        || Purpur          || Pourpre         || Púrpura&lt;br /&gt;
|-&lt;br /&gt;
|  9 (49h) || (25) ||100||100|| 50|| #FF6|| bgcolor=&amp;quot;#ffff80&amp;quot; | || Pastel Yellow || Pastellgelb     || Jaune pastel    || Amarillo pastel&lt;br /&gt;
|-&lt;br /&gt;
| 10 (4Ah) || 24   ||100||100||  0|| #FF0|| bgcolor=&amp;quot;#ffff00&amp;quot; | || Bright Yellow || Hellgelb        || Jaune vif       || Amarillo brillante&lt;br /&gt;
|-&lt;br /&gt;
| 11 (4Bh) || 26   ||100||100||100|| #FFF|| bgcolor=&amp;quot;#ffffff&amp;quot; | || Bright White  || Leuchtendweiß   || Blanc brillant  || Blanco brillante&lt;br /&gt;
|-&lt;br /&gt;
| 12 (4Ch) || 6    ||100||  0||  0|| #F00|| bgcolor=&amp;quot;#ff0000&amp;quot; | || Bright Red    || Hellrot         || Rouge vif       || Rojo brillante&lt;br /&gt;
|-&lt;br /&gt;
| 13 (4Dh) || 8    ||100||  0||100|| #F0F|| bgcolor=&amp;quot;#ff00ff&amp;quot; | || Bright Magenta|| helles Magenta  || Magenta vif     || Magenta brillante&lt;br /&gt;
|-&lt;br /&gt;
| 14 (4Eh) || 15   ||100|| 50||  0|| #F60|| bgcolor=&amp;quot;#ff8000&amp;quot; | || Orange        || Orange          || Orange          || Naranja&lt;br /&gt;
|-&lt;br /&gt;
| 15 (4Fh) || 17   ||100|| 50||100|| #F6F|| bgcolor=&amp;quot;#ff80ff&amp;quot; | || Pastel Magenta|| Pastell-magenta || Magenta pastel  || Magenta pastel&lt;br /&gt;
|-&lt;br /&gt;
| 16 (50h) || (1)  ||  0||  0|| 50|| #006|| bgcolor=&amp;quot;#000080&amp;quot; | || Blue          || Blau            || Bleu            || Azul&lt;br /&gt;
|-&lt;br /&gt;
| 17 (51h) || (19) ||  0||100|| 50|| #0F6|| bgcolor=&amp;quot;#00ff80&amp;quot; | || Sea Green     || Seegrün         || Vert marin      || Verde marino&lt;br /&gt;
|-&lt;br /&gt;
| 18 (52h) || 18   ||  0||100||  0|| #0F0|| bgcolor=&amp;quot;#00ff00&amp;quot; | || Bright Green  || Hellgrün        || Vert vif        || Verde brillante&lt;br /&gt;
|-&lt;br /&gt;
| 19 (53h) || 20   ||  0||100||100|| #0FF|| bgcolor=&amp;quot;#00ffff&amp;quot; | || Bright Cyan   || helles Blaugrün || Turquoise vif   || Ciano brillante&lt;br /&gt;
|-&lt;br /&gt;
| 20 (54h) || 0    ||  0||  0||  0|| #000|| bgcolor=&amp;quot;#000000&amp;quot; | || Black         || Schwarz         || Noir            || Negro&lt;br /&gt;
|-&lt;br /&gt;
| 21 (55h) || 2    ||  0||  0||100|| #00F|| bgcolor=&amp;quot;#0000ff&amp;quot; | || Bright Blue   || Hellblau        || Bleu vif        || Azul brillante&lt;br /&gt;
|-&lt;br /&gt;
| 22 (56h) || 9    ||  0|| 50||  0|| #060|| bgcolor=&amp;quot;#008000&amp;quot; | || Green         || Grün            || Vert            || Verde&lt;br /&gt;
|-&lt;br /&gt;
| 23 (57h) || 11   ||  0|| 50||100|| #06F|| bgcolor=&amp;quot;#0080ff&amp;quot; | || Sky Blue      || Himmelblau      || Bleu ciel       || Azul cielo&lt;br /&gt;
|-&lt;br /&gt;
| 24 (58h) || 4    || 50||  0|| 50|| #606|| bgcolor=&amp;quot;#800080&amp;quot; | || Magenta       || Magenta         || Magenta         || Magenta&lt;br /&gt;
|-&lt;br /&gt;
| 25 (59h) || 22   || 50||100|| 50|| #6F6|| bgcolor=&amp;quot;#80ff80&amp;quot; | || Pastel Green  || Pastellgrün     || Vert pastel     || Verde pastel&lt;br /&gt;
|-&lt;br /&gt;
| 26 (5Ah) || 21   || 50||100||  0|| #6F0|| bgcolor=&amp;quot;#80ff00&amp;quot; | || Lime          || Limonengrün     || Vert citron     || Verde lima&lt;br /&gt;
|-&lt;br /&gt;
| 27 (5Bh) || 23   || 50||100||100|| #6FF|| bgcolor=&amp;quot;#80ffff&amp;quot; | || Pastel Cyan   || Pastell-blaugrün|| Turquoise pastel|| Ciano pastel&lt;br /&gt;
|-&lt;br /&gt;
| 28 (5Ch) || 3    || 50||  0||  0|| #600|| bgcolor=&amp;quot;#800000&amp;quot; | || Red           || Rot             || Rouge           || Rojo&lt;br /&gt;
|-&lt;br /&gt;
| 29 (5Dh) || 5    || 50||  0||100|| #60F|| bgcolor=&amp;quot;#8000ff&amp;quot; | || Mauve         || Hellviolett     || Mauve           || Malva&lt;br /&gt;
|-&lt;br /&gt;
| 30 (5Eh) || 12   || 50|| 50||  0|| #660|| bgcolor=&amp;quot;#808000&amp;quot; | || Yellow        || Gelb            || Jaune           || Amarillo&lt;br /&gt;
|-&lt;br /&gt;
| 31 (5Fh) || 14   || 50|| 50||100|| #66F|| bgcolor=&amp;quot;#8080ff&amp;quot; | || Pastel Blue   || Pastellblau     || Bleu pastel     || Azul pastel&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Intensities ===&lt;br /&gt;
&lt;br /&gt;
The 0%, 50%, and 100% values in the above tables are &amp;quot;should-be&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
On an actual Amstrad CPC, the half-intensity colour signal is measured to be closer to 40% rather than the expected 50%. This was verified by [[Grim]] and independently confirmed by [[Nocash]]. [https://www.grimware.org/doku.php/documentations/devices/gatearray#inkr Source]&lt;br /&gt;
* [[CPC Palette]] - some more details&lt;br /&gt;
&lt;br /&gt;
This explains why the Amstrad engineers used the following values to adapt the old colour palette to the new 12-bit palette on the Amstrad Plus:&lt;br /&gt;
* 0% became #0&lt;br /&gt;
* 50% became #6. They specifically chose #6 for the 50% value instead of the expected #7 or #8, to better match the real Amstrad CPC palette.&lt;br /&gt;
* 100% became #F&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Green Screen Colours ===&lt;br /&gt;
&lt;br /&gt;
On a green screen, where all colours are shades of unsaturated green, the firmware colours are in order of increasing intensity. Black is darkest green, bright white is brightest green, and firmware colour 13 is a medium green.&lt;br /&gt;
&lt;br /&gt;
The luminance (Y) is not exactly correlated to the actual luminance of colour images broadcast in RGB. Amstrad preferred to propose a completely different image system, not comparable to a conversion to monochrome, which would have limited the number of brightness levels to 21 (for example, colours 9 and 6 would have had the same luminance).&lt;br /&gt;
&lt;br /&gt;
They opted for a table of 27 linear brightness steps. They assigned values of 1 (1kΩ) for blue, 3 (3.3kΩ) for red, and 9 (10kΩ) for green.&lt;br /&gt;
&lt;br /&gt;
==== To calculate the luminance value ====&lt;br /&gt;
&lt;br /&gt;
'''Red''' &lt;br /&gt;
&lt;br /&gt;
*0% =&amp;amp;gt; do not add anything &lt;br /&gt;
*50% =&amp;amp;gt; add 3 &lt;br /&gt;
*100% =&amp;amp;gt; add 6 &lt;br /&gt;
&lt;br /&gt;
'''Green''' &lt;br /&gt;
&lt;br /&gt;
*0% =&amp;amp;gt; do not add anything &lt;br /&gt;
*50% =&amp;amp;gt; add 9 &lt;br /&gt;
*100% =&amp;amp;gt; add 18 &lt;br /&gt;
&lt;br /&gt;
'''Blue''' &lt;br /&gt;
&lt;br /&gt;
*0% =&amp;amp;gt; do not add anything &lt;br /&gt;
*50% =&amp;amp;gt; add 1 &lt;br /&gt;
*100% =&amp;amp;gt; add 2 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pictures ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:40010_am2_metal.jpg|40010 GA Metal Layer&lt;br /&gt;
Image:40010_am2_acid.jpg|40010 GA with Metal Layer removed&lt;br /&gt;
Image:40226_am4_metal.jpg|40226 PreASIC Metal Layer&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Ga.pinout.40007.png]] [[File:Ga.pinout.40008.40010.png]]&lt;br /&gt;
&lt;br /&gt;
Note: Some CPC motherboards can accommodate both types of Gate Array pinouts. [https://thecheshirec.at/2024/10/06/il-existe-une-carte-multi-gate-array-et-cest-amstrad-qui-la-faite/ Source]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
*[https://bread80.com/2021/06/03/understanding-the-amstrad-cpc-video-ram-and-gate-array-subsystem/ Electronic signals analysis of the Gate Array by Bread80]&lt;br /&gt;
* [https://shaker.logonsystem.eu/ACCC1.8-EN.pdf Gate Array documentation in Amstrad CRTC Compendium]&lt;br /&gt;
* [https://www.grimware.org/doku.php/documentations/devices/gatearray Gate Array documentation from Grimware]&lt;br /&gt;
* [http://quasar.cpcscene.net/doku.php?id=assem:gate_array Quasar Gate Array documentation (in french)]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*[[Gate Array and ASIC Pin-Outs]]&lt;br /&gt;
*[[PAL16L8]] : for RAM arrangement&lt;br /&gt;
*[[ASIC]] : for Plus users&lt;br /&gt;
&lt;br /&gt;
*[[CRTC]] : the other video stuff&lt;br /&gt;
*[[Synchronising with the CRTC and display]] : technical details on the relationship between Gate Array and CRTC.&lt;br /&gt;
&lt;br /&gt;
*[[Video modes]] : for other informations on colours and pixels.&lt;br /&gt;
&lt;br /&gt;
*[[Media:40010-simplified V03.pdf]] [https://www.cpcwiki.eu/forum/amstrad-cpc-hardware/gate-array-decapped!/msg170713/#msg170713 Forum thread] Gate Array schematics - reverse engineered by Gerald&lt;br /&gt;
&lt;br /&gt;
[[Category:Hardware]][[Category:Programming]][[Category:Datasheet]][[Category:Graphic]][[Category:CPC Internal Components]][[Category:Electronic Component]]&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Gate_Array&amp;diff=126276</id>
		<title>Gate Array</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Gate_Array&amp;diff=126276"/>
				<updated>2025-05-24T10:01:56Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: Undo revision 126273 by Longshot (talk) Repairing the wiki&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Amstrad 40007 Gate Array.png|right|thumb|Amstrad 40007 Gate Array]]&lt;br /&gt;
[[File:Amstrad 40010 Gate Array.png|right|thumb|Amstrad 40010 Gate Array]]&lt;br /&gt;
&lt;br /&gt;
Also designated as Video Gate Array (VGA, not to be confused with the IBM PC compatible graphic card spec).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Introduction  ==&lt;br /&gt;
&lt;br /&gt;
The Gate Array is a specially designed chip exclusively for use in the Amstrad CPC and was designed by Amstrad plc. &lt;br /&gt;
&lt;br /&gt;
In the CPC+ system, the functions of the Gate Array are integrated into a single [[ASIC|ASIC]]. When the ASIC is &amp;quot;locked&amp;quot;, the extra features are not available and the 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 &amp;quot;un-locked&amp;quot; to access the new features. &lt;br /&gt;
&lt;br /&gt;
In the [[KC Compact]] system, the functions of the Gate Array are &amp;quot;emulated&amp;quot; in TTL chips, [[CIO Overview|CIO]], and its color translation EPROM.&lt;br /&gt;
&lt;br /&gt;
In the &amp;quot;cost-down&amp;quot; version of the CPC6128, the functions of the Gate Array are integrated into an ASIC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== What does it do? ==&lt;br /&gt;
&lt;br /&gt;
The Gate Array is responsible for the display (colour palette, resolution, horizontal and vertical sync), bus arbitration, DRAM refresh, interrupt generation and memory arrangement. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bus arbitration ==&lt;br /&gt;
&lt;br /&gt;
The Gate Array arbitrates access to the RAM between the CPU and the video hardware (CRTC and Gate-Array).&lt;br /&gt;
&lt;br /&gt;
Every microsecond: &lt;br /&gt;
* The CRTC generates a memory address using it's MA and RA signal outputs. See the [[CRTC]] wiki page to know how the motherboard wiring transforms these signals into the Video Memory Address (VMA).&lt;br /&gt;
* The Gate Array fetches 2 bytes for each address. /CPU_ADDR is a 1MHz signal. So these 2 bytes are fetched sequentially. They are not interleaved with Z80 access. These bytes are fetched even when the border is on as this is required for DRAM refresh.&lt;br /&gt;
* The video hardware is given priority so that the display is not disrupted.&lt;br /&gt;
&lt;br /&gt;
The Gate-Array generates the &amp;quot;READY&amp;quot; signal which is connected to the &amp;quot;/WAIT&amp;quot; input signal of the CPU. This signal is used to stop the CPU accessing RAM while the video-hardware is accessing it.&lt;br /&gt;
&lt;br /&gt;
In fact, the Gate Array allows the Z80 to access the RAM in only 1 out of every 4 cycles. As a result, all instruction timings are stretched so that they are all multiples of a microsecond (1µs), and this gives an effective CPU clock of 3.3Mhz.&lt;br /&gt;
&lt;br /&gt;
Unlike the ZX Spectrum or the Amiga, where bus arbitration is restricted to the &amp;quot;contended memory&amp;quot; or &amp;quot;chip RAM&amp;quot;, on the CPC it also applies to ROM access and to RAM expansions. So the Z80 always runs at the same speed, regardless of the type of memory being accessed.&lt;br /&gt;
&lt;br /&gt;
Last but not least, bus arbitration also applies to I/O access. And memory access is not aligned with I/O access on Z80.&lt;br /&gt;
&lt;br /&gt;
Note: On Amstrad Plus, the ASIC also has to handle DMA instruction fetch from RAM.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DRAM refresh ==&lt;br /&gt;
&lt;br /&gt;
On Amstrad CPC, the Gate Array is responsible for the DRAM refresh, instead of using the Z80 built-in DRAM refresh mechanism. The reason is that there can only be 3 DRAM accesses per microsecond on this architecture. Doing DRAM refresh on each M1 cycle as it is done on MSX would bog down the CPU speed on CPC given its bus arbitration scheme.&lt;br /&gt;
&lt;br /&gt;
The Z80 generates a maximum of one request per microsecond. The CPC also requires two memory accesses per microsecond for reading video data.&lt;br /&gt;
&lt;br /&gt;
The CPC specs 4164-20 DRAMs. These require 330nS for a read or write cycle. The CPC also uses the optimised sequential CAS cycles to read the two video data bytes in half a microsecond. [https://www.cpcwiki.eu/forum/amstrad-cpc-hardware/the-cpc-revision-zero-article/msg243769/ Source]&lt;br /&gt;
&lt;br /&gt;
The way to cause the RAM refresh to fail in both a Plus or normal CPC is simply to stop a few bits of the CRTC address changing (ie. never refresh the selected area).&lt;br /&gt;
&lt;br /&gt;
Generally, only the Row address needs to be cycled, so stopping MA0 through MA7 from changing, and stopping the CPU from reading those rows, will cause data to be lost, quite quickly (generally around 4ms). [https://www.cpcwiki.eu/forum/amstrad-cpc-hardware/memory-refresh-plus/ Source]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Interrupt generation ==&lt;br /&gt;
* '''This section relies largely on a single source and is suspected of infringing copyright protected under the [https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode CC BY-NC-ND 4.0 license].''' Readers are encouraged to refer directly to the original source material for accurate information. &lt;br /&gt;
** ''Original source material under copyright: [https://shaker.logonsystem.eu/ACCC1.8-EN.pdf  The Amstrad CPC CRTC Compendium]''&lt;br /&gt;
** ''Author: Serge Querné ([[Longshot]])''&lt;br /&gt;
&lt;br /&gt;
Interrupts on the CPC are created by the Gate Array based on settings from the CRTC. The Gate Array has an internal counter R52 (the R is for Raster) that counts from 0 to 51, incrementing after each HSYNC signal.&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, R52 interrupts always start 1µs after the end of an HSYNC. But on CRTCs 3/4, HSYNCs occur 1µs later than on CRTCs 0/1/2. Which means that on CRTCs 3/4, interrupts start 1µs later than on CRTCs 0/1/2. This can be adjusted by using the CRTC register 3.&lt;br /&gt;
&lt;br /&gt;
R52 will return to 0 and the Gate Array will send an interrupt request on any of these conditions:&lt;br /&gt;
* When it exceeds 51&lt;br /&gt;
* By setting bit4 of the RMR register of the Gate Array to 1&lt;br /&gt;
* At the end of the 2nd HSYNC after the start of the VSYNC&lt;br /&gt;
&lt;br /&gt;
When the Gate Array sends an interrupt request:&lt;br /&gt;
*If the interrupts were authorized at the time of the request, then bit5 of R52 is cleared (but R52 was reset to 0 anyway) and the interrupt takes place&lt;br /&gt;
*If interrupts are not authorized, then the R52 counter continues to increment and the interrupt remains armed (the Gate Array then maintains its INT signal). When interrupts are enabled (using the EI instruction), bit5 of R52 is cleared and the interrupt takes place. This happens only '''after the instruction that follows EI''' as this Z80 instruction has a 1-instruction delay.&lt;br /&gt;
&lt;br /&gt;
Note: On Amstrad Plus, the interrupt management system is seriously beefed up. See the [[ASIC]] wiki page.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CSYNC signal ==&lt;br /&gt;
* '''This section relies largely on a single source and is suspected of infringing copyright protected under the [https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode CC BY-NC-ND 4.0 license].''' Readers are encouraged to refer directly to the original source material for accurate information. &lt;br /&gt;
** ''Original source material under copyright: [https://shaker.logonsystem.eu/ACCC1.8-EN.pdf  The Amstrad CPC CRTC Compendium]''&lt;br /&gt;
** ''Author: Serge Querné ([[Longshot]])''&lt;br /&gt;
&lt;br /&gt;
The HSYNC and VSYNC signals are received from the [[CRTC]]. These signals are then modified by the Gate Array to C-HSYNC and C-VSYNC and merged into a single CSYNC signal that will be sent to the display.&lt;br /&gt;
&lt;br /&gt;
When CRTC HSYNC is active, the Gate Array immediately outputs the palette colour black. If the HSYNC is set to 14 characters then black will be output for 14µs.&lt;br /&gt;
&lt;br /&gt;
If a graphics mode change is pending, the HSYNC pulse width needs to be at least 2µs for Gate Array to change the graphics mode.&lt;br /&gt;
&lt;br /&gt;
C-HSYNC begins 2µs after activation of the CRTC HSYNC and stays a maximum of 4µs (signal is cut short if HSYNC width is greater than 6).&lt;br /&gt;
&lt;br /&gt;
For example, if CRTC R2=46, and CRTC HSYNC width is 14 chars then C-HSYNC starts at 48 and lasts only until 51 included.&lt;br /&gt;
&lt;br /&gt;
On Gate Array, even if the duration of the CRTC VSYNC is reduced to 2 µseconds, the Gate Array will always output black for 26 lines with 4 lines of C-VSYNC to the monitor. While on ASIC/Pre-ASIC, the CRTC VSYNC must be active as long as the C-VSYNC signal is sent to the monitor.&lt;br /&gt;
&lt;br /&gt;
The Gate Array (and ASIC/Pre-ASIC) uses 2 internal counters to create its CSYNC signal:&lt;br /&gt;
* H06 counts the number of CRTC characters processed during an HSYNC. H06 is incremented by the Gate Array for each CRTC character when CRTC HSYNC is active. The Gate Array activates the C-HSYNC signal when H06 reaches 2, and changes its graphics mode if a change was pending. It deactivates this signal when H06 reaches 6.&lt;br /&gt;
* V26 counts the number of HSYNCs occuring during a VSYNC. V26 is incremented by the Gate Array when the CRTC signals an end of HSYNC. The Gate Array activates the C-VSYNC signal when V26 reaches 2 (and if VSYNC is active on ASIC/Pre-ASIC). It deactivates this signal when V26 reaches 6. After the 26th line has been processed, the Gate Array stops outputting the palette colour black.&lt;br /&gt;
&lt;br /&gt;
If CRTC VSYNC is activated again while V26 is still in progress, then V26 is reset to 0 and starts counting up again the HSYNC pulses.&lt;br /&gt;
&lt;br /&gt;
The HSYNC signal from the CRTC is 0 when inactive and 1 when active. Same for VSYNC.&lt;br /&gt;
&lt;br /&gt;
C-HSYNC and C-VSYNC are composited using the XNOR function. The resulting CSYNC signal produced by the Gate Array is 1 when inactive and 0 when active.&lt;br /&gt;
&lt;br /&gt;
On a CPC monitor, the CSYNC is rendered in &amp;quot;absolute black&amp;quot;. It is darker than the palette colour black output by the Gate Array. The electron beam is basically turned off. Turning up the brightness level won't make it any brighter.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Controlling the Gate Array  ==&lt;br /&gt;
&lt;br /&gt;
The gate array is controlled by I/O. The gate array is selected when bit 15 of the I/O port address is set to &amp;quot;0&amp;quot; and bit 14 of the I/O port address is set to &amp;quot;1&amp;quot;. The values of the other bits are ignored. However, to avoid conflict with other devices in the system, these bits should be set to &amp;quot;1&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
The recommended I/O port address is &amp;amp;7Fxx. &lt;br /&gt;
&lt;br /&gt;
The Gate Array is not connected to the CPU's RD and WR pins, so it cannot detect the bus's I/O direction. If you execute an I/O read operation on the Gate Array I/O address, the Gate Array will read an unpredictable value from the databus which will be in high-impedance state. If the value is a valid Gate Array command, it will be executed, otherwise nothing will happen. [https://www.grimware.org/doku.php/documentations/devices/gatearraydo=export_xhtml Source]&lt;br /&gt;
&lt;br /&gt;
The function to be performed is selected by writing data to the Gate Array, the first bits of the data define the function selected (see table below). It is not possible to read from the Gate Array. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=4| 8bit command&lt;br /&gt;
!rowspan=2| Machine&lt;br /&gt;
!rowspan=2| Register&lt;br /&gt;
!rowspan=2| Description&lt;br /&gt;
!rowspan=2| Chip&lt;br /&gt;
|-&lt;br /&gt;
! 7&lt;br /&gt;
! 6&lt;br /&gt;
! 5&lt;br /&gt;
! 4..0&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0 || x || style=&amp;quot;text-align: center;&amp;quot; | n || All || PENR || Select a color register || Gate Array&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1 || x || style=&amp;quot;text-align: center;&amp;quot; | n || All || INKR || Change the value of the currently selected color register || Gate Array&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0 || 0 || style=&amp;quot;text-align: center;&amp;quot; | n || All || RMR || Control Interrupt counter, ROM mapping and Graphics mode || Gate Array&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot;|1 || rowspan=&amp;quot;2&amp;quot;|0 || rowspan=&amp;quot;2&amp;quot;|1 || style=&amp;quot;text-align: center;&amp;quot; rowspan=&amp;quot;2&amp;quot; | n || All || RMR || ''Ghost register'' || Gate Array (CPC) or locked ASIC (Plus)&lt;br /&gt;
|-&lt;br /&gt;
| Plus || RMR2 || ASIC &amp;amp; Advanced ROM mapping || Unlocked ASIC&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1 ||colspan=2  style=&amp;quot;text-align: center;&amp;quot; | n || All || MMR || RAM memory mapping || PAL (only with 128KB or RAM expansion)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The MMR register is not available in the Gate Array, but is performed by a device at the same I/O port address location.&lt;br /&gt;
&lt;br /&gt;
In the CPC464, CPC664 and KC compact, MMR is performed in an external memory expansion (e.g. Dk'Tronics 64K RAM Expansion), if this expansion is not present then MMR is not available.&lt;br /&gt;
&lt;br /&gt;
In the CPC6128, MMR is performed by a [[PAL16L8|PAL chip]] located on the main PCB, or an external memory expansion.&lt;br /&gt;
&lt;br /&gt;
In the 464+ and 6128+, MMR is performed by the ASIC or an external memory expansion. Please read the document on RAM management for more information.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Registers ==&lt;br /&gt;
&lt;br /&gt;
Note: The Plus palette capabilities are only accessible through the [[Default I/O Port Summary|ASIC I/O page]]. Registers PENR and INKR are not needed in that case.&lt;br /&gt;
&lt;br /&gt;
=== Register PENR (Select a color register) ===&lt;br /&gt;
&lt;br /&gt;
When bit 7 and bit 6 are set to &amp;quot;0&amp;quot;, the remaining bits determine which pen is to have its colour changed. When bit 4 is set to &amp;quot;0&amp;quot;, bits 3 to 0 define which pen is to be selected. When bit 4 is set to &amp;quot;1&amp;quot;, the value contained in bits 3-0 is ignored and the border is selected. &lt;br /&gt;
&lt;br /&gt;
The pen remains selected until another is chosen. &lt;br /&gt;
&lt;br /&gt;
Each mode has a fixed number of pens. Mode 0 has 16 pens, mode 1 has 4 pens and mode 2 has 2 pens. &lt;br /&gt;
&lt;br /&gt;
==== Summary  ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Bit&lt;br /&gt;
!Value&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 0 || rowspan=&amp;quot;2&amp;quot; | Gate Array PENR register&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 0 &lt;br /&gt;
|-&lt;br /&gt;
| 5 || - || not used&lt;br /&gt;
|-&lt;br /&gt;
| 4 || 1 || Select border&lt;br /&gt;
|-&lt;br /&gt;
| 3 || x || rowspan=&amp;quot;4&amp;quot; | Ignored&lt;br /&gt;
|-&lt;br /&gt;
| 2 || x&lt;br /&gt;
|-&lt;br /&gt;
| 1 || x&lt;br /&gt;
|-&lt;br /&gt;
| 0 || x&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Bit&lt;br /&gt;
!Value&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 0 || rowspan=&amp;quot;2&amp;quot; | Gate Array PENR register&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 0&lt;br /&gt;
|-&lt;br /&gt;
| 5 || - || not used&lt;br /&gt;
|-&lt;br /&gt;
| 4 || 0 || Select pen&lt;br /&gt;
|-&lt;br /&gt;
| 3 || x || rowspan=&amp;quot;4&amp;quot; | Pen number&lt;br /&gt;
|-&lt;br /&gt;
| 2 || x&lt;br /&gt;
|-&lt;br /&gt;
| 1 || x&lt;br /&gt;
|-&lt;br /&gt;
| 0 || x&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Register INKR (Change the value of the currently selected color register) ===&lt;br /&gt;
&lt;br /&gt;
Once the pen has been selected its colour can then be changed. Bits 4 to 0 specify the hardware colour number from the hardware colour palette. &lt;br /&gt;
&lt;br /&gt;
Even though there is provision for 32 colours, only 27 are possible. The remaining colours are duplicates of those already in the colour palette. &lt;br /&gt;
&lt;br /&gt;
==== Summary  ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Bit&lt;br /&gt;
!Value&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 0 || rowspan=&amp;quot;2&amp;quot; | Gate Array INKR register&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 5 || - || not used&lt;br /&gt;
|-&lt;br /&gt;
| 4 || x || rowspan=&amp;quot;5&amp;quot; | Colour number x&lt;br /&gt;
|-&lt;br /&gt;
| 3 || x &lt;br /&gt;
|-&lt;br /&gt;
| 2 || x &lt;br /&gt;
|-&lt;br /&gt;
| 1 || x&lt;br /&gt;
|-&lt;br /&gt;
| 0 || x&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Register RMR (Control Interrupt counter, ROM mapping and Graphics mode) ===&lt;br /&gt;
&lt;br /&gt;
This is a general purpose register responsible for the [[Video modes|graphics mode]] and the ROM configuration. &lt;br /&gt;
&lt;br /&gt;
==== Graphics mode selection  ====&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Bit 1&lt;br /&gt;
!Bit 0&lt;br /&gt;
!Screen mode&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0 || Mode 0, 160x200 resolution, 16 colours&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1 || Mode 1, 320x200 resolution, 4 colours&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0 || Mode 2, 640x200 resolution, 2 colours&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1 || Mode 3, 160x200 resolution, 4 colours (undocumented)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* 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).&lt;br /&gt;
&lt;br /&gt;
Mode changing is synchronised with HSYNC. If the mode is changed, it will take effect from the next HSYNC.&lt;br /&gt;
&lt;br /&gt;
==== ROM configuration selection  ====&lt;br /&gt;
&lt;br /&gt;
Bit 2 is used to enable or disable the lower ROM area. The lower ROM area occupies memory addresses &amp;amp;amp;0000-&amp;amp;amp;3fff and is used to access the operating system ROM. When the lower ROM area is is enabled, reading from &amp;amp;amp;0000-&amp;amp;amp;3FFF will return data in the ROM. When a value is written to &amp;amp;amp;0000-&amp;amp;amp;3FFF, it will be written to the RAM underneath the ROM. When it is disabled, data read from &amp;amp;amp;0000-&amp;amp;amp;3FFF will return the data in the RAM. &lt;br /&gt;
&lt;br /&gt;
Similarly, bit 3 controls enabling or disabling of the upper ROM area. The upper ROM area occupies memory addressess &amp;amp;amp;C000-&amp;amp;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;amp;amp;c000-&amp;amp;amp;ffff, will return data in the ROM. When data is written to &amp;amp;amp;c000-&amp;amp;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;amp;amp;c000-&amp;amp;amp;ffff it will be the data in the RAM. &lt;br /&gt;
&lt;br /&gt;
Bit 4 controls the interrupt generation. It can be used to delay interrupts. See the document on interrupt generation for more information.&lt;br /&gt;
&lt;br /&gt;
==== Summary  ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Bit&lt;br /&gt;
!Value&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 1 || rowspan=&amp;quot;2&amp;quot; | Gate Array RMR register&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 0 &lt;br /&gt;
|-&lt;br /&gt;
| 5 || - || ''must be 0 on Plus machines with ASIC unlocked''&lt;br /&gt;
|-&lt;br /&gt;
| 4 || x || Interrupt generation control&lt;br /&gt;
|-&lt;br /&gt;
| 3 || x || 1=Upper ROM area disable, 0=Upper ROM area enable&lt;br /&gt;
|-&lt;br /&gt;
| 2 || x || 1=Lower ROM area disable, 0=Lower ROM area enable&lt;br /&gt;
|-&lt;br /&gt;
| 1 || x || rowspan=&amp;quot;2&amp;quot; | Graphics Mode selection&lt;br /&gt;
|-&lt;br /&gt;
| 0 || x&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Register RMR2 (ASIC &amp;amp; Advanced ROM mapping) ===&lt;br /&gt;
&lt;br /&gt;
This register exists only in Plus or GX4000, and is only accessible when the ASIC is unlocked.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Bit&lt;br /&gt;
!Value&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 1 || rowspan=&amp;quot;3&amp;quot; | Gate Array RMR2 register&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 0&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 4 || x || rowspan=&amp;quot;2&amp;quot; |RMR addressing mode&lt;br /&gt;
|-&lt;br /&gt;
| 3 || x&lt;br /&gt;
|-&lt;br /&gt;
| 2 || x || rowspan=&amp;quot;3&amp;quot; | Physical ROM number (0..7)&lt;br /&gt;
|-&lt;br /&gt;
| 1 || x&lt;br /&gt;
|-&lt;br /&gt;
| 0 || x&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ RMR addressing modes&lt;br /&gt;
!Bit 4&lt;br /&gt;
!Bit 3&lt;br /&gt;
!Lower ROM&lt;br /&gt;
![[ASIC|ASIC I/O page]]&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|&amp;amp;0000-&amp;amp;3FFF&lt;br /&gt;
|Disabled&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|1&lt;br /&gt;
|&amp;amp;4000-&amp;amp;7FFF&lt;br /&gt;
|Disabled&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|&amp;amp;8000-&amp;amp;BFFF&lt;br /&gt;
|Disabled&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|1&lt;br /&gt;
|&amp;amp;0000-&amp;amp;3FFF&lt;br /&gt;
|&amp;amp;4000-&amp;amp;7FFF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The physical ROMs are also accessible as upper ROMs by using the [[Upper ROM Bank Number]] port and the RMR register.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Register MMR (RAM memory mapping) ===&lt;br /&gt;
&lt;br /&gt;
This register exists only in CPCs with 128K RAM (like the CPC 6128), or CPCs equipped with [[Standard Memory Expansions]].&lt;br /&gt;
&lt;br /&gt;
Note: In the CPC 6128, the register is a separate [[PAL16L8|PAL chip]] that assists the Gate Array chip.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Bit&lt;br /&gt;
!Value&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 1 || rowspan=&amp;quot;2&amp;quot; | Gate Array MMR register&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 1 &lt;br /&gt;
|-&lt;br /&gt;
| 5 || x || rowspan=&amp;quot;3&amp;quot; |64K bank number (0..7); always 0 on an unexpanded CPC6128, 0-7 on [[Standard Memory Expansions]]&lt;br /&gt;
|-&lt;br /&gt;
| 4 || x&lt;br /&gt;
|-&lt;br /&gt;
| 3 || x&lt;br /&gt;
|-&lt;br /&gt;
| 2 || x || rowspan=&amp;quot;3&amp;quot; | RAM Config (0..7)&lt;br /&gt;
|-&lt;br /&gt;
| 1 || x&lt;br /&gt;
|-&lt;br /&gt;
| 0 || x&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The 3bit RAM Config value is 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:&lt;br /&gt;
&lt;br /&gt;
  -Address-     0      1      2      3      4      5      6      7&lt;br /&gt;
  0000-3FFF   RAM_0  RAM_0  '''RAM_4'''  RAM_0  RAM_0  RAM_0  RAM_0  RAM_0&lt;br /&gt;
  4000-7FFF   RAM_1  RAM_1  '''RAM_5'''  '''RAM_3'''  '''RAM_4'''  '''RAM_5'''  '''RAM_6'''  '''RAM_7'''&lt;br /&gt;
  8000-BFFF   RAM_2  RAM_2  '''RAM_6'''  RAM_2  RAM_2  RAM_2  RAM_2  RAM_2&lt;br /&gt;
  C000-FFFF   RAM_3  '''RAM_7'''  '''RAM_7'''  '''RAM_7'''  RAM_3  RAM_3  RAM_3  RAM_3&lt;br /&gt;
&lt;br /&gt;
The Video RAM is always located in the first 64K, VRAM is in no way affected by this register.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Programming the Gate Array - Examples  ==&lt;br /&gt;
&lt;br /&gt;
Defining the colours, &amp;lt;br&amp;gt;Setting pen 0 to Bright White. &lt;br /&gt;
&amp;lt;pre&amp;gt;LD BC,7F00&amp;amp;nbsp;;Gate Array port&lt;br /&gt;
LD A,%00000000+0&amp;amp;nbsp;;Pen number (and Gate Array function)&lt;br /&gt;
OUT (C),A&amp;amp;nbsp;;Send pen number&lt;br /&gt;
LD A,%01000000+11&amp;amp;nbsp;;Pen colour (and Gate Array function)&lt;br /&gt;
OUT (C),A&amp;amp;nbsp;;Send it&lt;br /&gt;
RET&lt;br /&gt;
&lt;br /&gt;
Setting the mode and ROM configuration, &lt;br /&gt;
Mode 2, upper and lower ROM disabled.&lt;br /&gt;
&lt;br /&gt;
LD BC,7F00&amp;amp;nbsp;;Gate array port&lt;br /&gt;
LD A,%10000000+%00001110&amp;amp;nbsp;;Mode and ROM selection (and Gate Array function)&lt;br /&gt;
OUT (C),A&amp;amp;nbsp;;Send it&lt;br /&gt;
RET&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Misc ===&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
=== Note ===&lt;br /&gt;
&lt;br /&gt;
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 its original colour. This is due to the firmware resetting the colour. When using the firmware, use its routines to select the colour, and the colour will remain.&lt;br /&gt;
&lt;br /&gt;
Example: [For whatever reason, this example does NOT refer to the above firmware stuff]&lt;br /&gt;
&amp;lt;pre&amp;gt;ld bc,7f00+1&amp;amp;nbsp;;Gate array function (set pen)&lt;br /&gt;
;and pen number&lt;br /&gt;
out (c),c&lt;br /&gt;
ld bc,7f00&amp;amp;nbsp;;41 &lt;br /&gt;
;Gate array function (set colour)&lt;br /&gt;
;and colour number&lt;br /&gt;
out (c),c&lt;br /&gt;
ret&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Video memory structure ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!rowspan=2|Graphics Mode&lt;br /&gt;
!colspan=8|VRAM byte&lt;br /&gt;
!colspan=8|Displayed Pixels&lt;br /&gt;
!rowspan=2|Definition&lt;br /&gt;
!rowspan=2|Pixel clock&lt;br /&gt;
!rowspan=2|Default resolution&lt;br /&gt;
|-&lt;br /&gt;
!7&lt;br /&gt;
!6&lt;br /&gt;
!5&lt;br /&gt;
!4&lt;br /&gt;
!3&lt;br /&gt;
!2&lt;br /&gt;
!1&lt;br /&gt;
!0&lt;br /&gt;
!1&lt;br /&gt;
!2&lt;br /&gt;
!3&lt;br /&gt;
!4&lt;br /&gt;
!5&lt;br /&gt;
!6&lt;br /&gt;
!7&lt;br /&gt;
!8&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|A0&lt;br /&gt;
|B0&lt;br /&gt;
|A2&lt;br /&gt;
|B2&lt;br /&gt;
|A1&lt;br /&gt;
|B1&lt;br /&gt;
|A3&lt;br /&gt;
|B3&lt;br /&gt;
|colspan=4 style=&amp;quot;text-align: center;&amp;quot;|A&lt;br /&gt;
|colspan=4 style=&amp;quot;text-align: center;&amp;quot;|B&lt;br /&gt;
|2 pixels in 16 colours&lt;br /&gt;
|4 MHz&lt;br /&gt;
|160x200, 20-column text&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|A0&lt;br /&gt;
|B0&lt;br /&gt;
|C0&lt;br /&gt;
|D0&lt;br /&gt;
|A1&lt;br /&gt;
|B1&lt;br /&gt;
|C1&lt;br /&gt;
|D1&lt;br /&gt;
|colspan=2 style=&amp;quot;text-align: center;&amp;quot;|A&lt;br /&gt;
|colspan=2 style=&amp;quot;text-align: center;&amp;quot;|B&lt;br /&gt;
|colspan=2 style=&amp;quot;text-align: center;&amp;quot;|C&lt;br /&gt;
|colspan=2 style=&amp;quot;text-align: center;&amp;quot;|D&lt;br /&gt;
|4 pixels in 4 colours&lt;br /&gt;
|8 MHz&lt;br /&gt;
|320x200, 40-column text&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|A0&lt;br /&gt;
|B0&lt;br /&gt;
|C0&lt;br /&gt;
|D0&lt;br /&gt;
|E0&lt;br /&gt;
|F0&lt;br /&gt;
|G0&lt;br /&gt;
|H0&lt;br /&gt;
|A&lt;br /&gt;
|B&lt;br /&gt;
|C&lt;br /&gt;
|D&lt;br /&gt;
|E&lt;br /&gt;
|F&lt;br /&gt;
|G&lt;br /&gt;
|H&lt;br /&gt;
|8 pixels in 2 colours&lt;br /&gt;
|16 MHz&lt;br /&gt;
|640x200, 80-column text&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|A0&lt;br /&gt;
|B0&lt;br /&gt;
|x&lt;br /&gt;
|x&lt;br /&gt;
|A1&lt;br /&gt;
|B1&lt;br /&gt;
|x&lt;br /&gt;
|x&lt;br /&gt;
|colspan=4 style=&amp;quot;text-align: center;&amp;quot;|A&lt;br /&gt;
|colspan=4 style=&amp;quot;text-align: center;&amp;quot;|B&lt;br /&gt;
|2 pixels in 4 colours&lt;br /&gt;
|4 MHz&lt;br /&gt;
|160x200, 20-column text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Split rasters ==&lt;br /&gt;
&lt;br /&gt;
On the CPC, split rasters occur halfway (after the 8th mode2 pixel) through the rendering of a CRTC character.&lt;br /&gt;
&lt;br /&gt;
On Amstrad Plus, split rasters occur quarter of the way (after the 4th mode2 pixel) through the rendering of a CRTC character.&lt;br /&gt;
&lt;br /&gt;
To easily make split rasters compatible with both the CPC and the Plus machines, one can use the ASIC soft-scroll control register (SSCR) to finely adjust the horizontal position of the graphics.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Palette R,G,B definitions ==&lt;br /&gt;
&lt;br /&gt;
There 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-colour, and on/full-colour. &lt;br /&gt;
&lt;br /&gt;
To display a CPC image you will need to use a analogue monitor with a composite sync.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Palette sorted by Firmware Colour Numbers ===&lt;br /&gt;
&lt;br /&gt;
The firmware colour palette is sorted by luminance value.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!Firmware Number&lt;br /&gt;
!Hardware Number&lt;br /&gt;
!Colour Name&lt;br /&gt;
!R %&lt;br /&gt;
!G %&lt;br /&gt;
!B %&lt;br /&gt;
!ASIC&lt;br /&gt;
!Colour&lt;br /&gt;
|-&lt;br /&gt;
| 0|| 54h          ||Black          ||  0||  0||  0|| #000||bgcolor=&amp;quot;#000000&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| 1|| 44h (or 50h) ||Blue           ||  0||  0|| 50|| #006||bgcolor=&amp;quot;#000080&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| 2|| 55h          ||Bright Blue    ||  0||  0||100|| #00F||bgcolor=&amp;quot;#0000ff&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| 3|| 5Ch          ||Red            || 50||  0||  0|| #600||bgcolor=&amp;quot;#800000&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| 4|| 58h          ||Magenta        || 50||  0|| 50|| #606||bgcolor=&amp;quot;#800080&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| 5|| 5Dh          ||Mauve          || 50||  0||100|| #60F||bgcolor=&amp;quot;#8000ff&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| 6|| 4Ch          ||Bright Red     ||100||  0||  0|| #F00||bgcolor=&amp;quot;#ff0000&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| 7|| 45h (or 48h) ||Purple         ||100||  0|| 50|| #F06||bgcolor=&amp;quot;#ff0080&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| 8|| 4Dh          ||Bright Magenta ||100||  0||100|| #F0F||bgcolor=&amp;quot;#ff00ff&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| 9|| 56h          ||Green          ||  0|| 50||  0|| #060||bgcolor=&amp;quot;#008000&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|10|| 46h          ||Cyan           ||  0|| 50|| 50|| #066||bgcolor=&amp;quot;#008080&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|11|| 57h          ||Sky Blue       ||  0|| 50||100|| #06F||bgcolor=&amp;quot;#0080ff&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|12|| 5Eh          ||Yellow         || 50|| 50||  0|| #660||bgcolor=&amp;quot;#808000&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|13|| 40h (or 41h) ||White          || 50|| 50|| 50||#666||bgcolor=&amp;quot;#808080&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|14|| 5Fh          ||Pastel Blue    || 50|| 50||100|| #66F||bgcolor=&amp;quot;#8080ff&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|15|| 4Eh          ||Orange         ||100|| 50||  0|| #F60|| bgcolor=&amp;quot;#ff8000&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|16|| 47h          ||Pink           ||100|| 50|| 50|| #F66||bgcolor=&amp;quot;#ff8080&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|17|| 4Fh          ||Pastel Magenta ||100|| 50||100|| #F6F||bgcolor=&amp;quot;#ff80ff&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|18|| 52h          ||Bright Green   ||  0||100||  0|| #0F0||bgcolor=&amp;quot;#00ff00&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|19|| 42h (or 51h) ||Sea Green      ||  0||100|| 50|| #0F6||bgcolor=&amp;quot;#00ff80&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|20|| 53h          ||Bright Cyan    ||  0||100||100|| #0FF||bgcolor=&amp;quot;#00ffff&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|21|| 5Ah          ||Lime           || 50||100||  0|| #6F0||bgcolor=&amp;quot;#80ff00&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|22|| 59h          ||Pastel Green   || 50||100|| 50|| #6F6||bgcolor=&amp;quot;#80ff80&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|23|| 5Bh          ||Pastel Cyan    || 50||100||100|| #6FF||bgcolor=&amp;quot;#80ffff&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|24|| 4Ah          ||Bright Yellow  ||100||100||  0|| #FF0||bgcolor=&amp;quot;#ffff00&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|25|| 43h (or 49h) ||Pastel Yellow  ||100||100|| 50||#FF6||bgcolor=&amp;quot;#ffff80&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|26|| 4Bh          ||Bright White   ||100||100||100|| #FFF||bgcolor=&amp;quot;#ffffff&amp;quot;|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note: We can observe that the official Amstrad names of some colours are a bit silly: &amp;quot;red&amp;quot; is in fact brown, &amp;quot;yellow&amp;quot; is in fact khaki and &amp;quot;white&amp;quot; is in fact grey.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Amstrad Colour Names ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Cpc 6128 master colour chat.jpg|Master colour chart&lt;br /&gt;
Cpc 6128 farbtabelle.jpg|Farbtabelle&lt;br /&gt;
Cpc 6128 palette des couleurs.jpg|Palette des couleurs&lt;br /&gt;
Cpc 6128 tabla de colores.jpg|Tabla de colores&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Palette sorted by Hardware Colour Numbers ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Hardware Number&lt;br /&gt;
!Firmware Number&lt;br /&gt;
!R %&lt;br /&gt;
!G %&lt;br /&gt;
!B %&lt;br /&gt;
!ASIC&lt;br /&gt;
!Colour&lt;br /&gt;
!Colour Name&lt;br /&gt;
!German Name&lt;br /&gt;
!French Name&lt;br /&gt;
!Spanish Name&lt;br /&gt;
|-&lt;br /&gt;
|  0 (40h) || 13   || 50|| 50|| 50|| #666|| bgcolor=&amp;quot;#808080&amp;quot; | || White         || Weiß            || Blanc           || Blanco&lt;br /&gt;
|-&lt;br /&gt;
|  1 (41h) || (13) || 50|| 50|| 50|| #666|| bgcolor=&amp;quot;#808080&amp;quot; | || White         || Weiß            || Blanc           || Blanco&lt;br /&gt;
|-&lt;br /&gt;
|  2 (42h) || 19   ||  0||100|| 50|| #0F6|| bgcolor=&amp;quot;#00ff80&amp;quot; | || Sea Green     || Seegrün         || Vert marin      || Verde marino&lt;br /&gt;
|-&lt;br /&gt;
|  3 (43h) || 25   ||100||100|| 50|| #FF6|| bgcolor=&amp;quot;#ffff80&amp;quot; | || Pastel Yellow || Pastellgelb     || Jaune pastel    || Amarillo pastel&lt;br /&gt;
|-&lt;br /&gt;
|  4 (44h) || 1    ||  0||  0|| 50|| #006|| bgcolor=&amp;quot;#000080&amp;quot; | || Blue          || Blau            || Bleu            || Azul&lt;br /&gt;
|-&lt;br /&gt;
|  5 (45h) || 7    ||100||  0|| 50|| #F06|| bgcolor=&amp;quot;#ff0080&amp;quot; | || Purple        || Purpur          || Pourpre         || Púrpura&lt;br /&gt;
|-&lt;br /&gt;
|  6 (46h) || 10   ||  0|| 50|| 50|| #066|| bgcolor=&amp;quot;#008080&amp;quot; | || Cyan          || Blaugrün        || Turquoise       || Ciano&lt;br /&gt;
|-&lt;br /&gt;
|  7 (47h) || 16   ||100|| 50|| 50|| #F66|| bgcolor=&amp;quot;#ff8080&amp;quot; | || Pink          || Rosa            || Rose            || Rosa&lt;br /&gt;
|-&lt;br /&gt;
|  8 (48h) || (7)  ||100||  0|| 50|| #F06|| bgcolor=&amp;quot;#ff0080&amp;quot; | || Purple        || Purpur          || Pourpre         || Púrpura&lt;br /&gt;
|-&lt;br /&gt;
|  9 (49h) || (25) ||100||100|| 50|| #FF6|| bgcolor=&amp;quot;#ffff80&amp;quot; | || Pastel Yellow || Pastellgelb     || Jaune pastel    || Amarillo pastel&lt;br /&gt;
|-&lt;br /&gt;
| 10 (4Ah) || 24   ||100||100||  0|| #FF0|| bgcolor=&amp;quot;#ffff00&amp;quot; | || Bright Yellow || Hellgelb        || Jaune vif       || Amarillo brillante&lt;br /&gt;
|-&lt;br /&gt;
| 11 (4Bh) || 26   ||100||100||100|| #FFF|| bgcolor=&amp;quot;#ffffff&amp;quot; | || Bright White  || Leuchtendweiß   || Blanc brillant  || Blanco brillante&lt;br /&gt;
|-&lt;br /&gt;
| 12 (4Ch) || 6    ||100||  0||  0|| #F00|| bgcolor=&amp;quot;#ff0000&amp;quot; | || Bright Red    || Hellrot         || Rouge vif       || Rojo brillante&lt;br /&gt;
|-&lt;br /&gt;
| 13 (4Dh) || 8    ||100||  0||100|| #F0F|| bgcolor=&amp;quot;#ff00ff&amp;quot; | || Bright Magenta|| helles Magenta  || Magenta vif     || Magenta brillante&lt;br /&gt;
|-&lt;br /&gt;
| 14 (4Eh) || 15   ||100|| 50||  0|| #F60|| bgcolor=&amp;quot;#ff8000&amp;quot; | || Orange        || Orange          || Orange          || Naranja&lt;br /&gt;
|-&lt;br /&gt;
| 15 (4Fh) || 17   ||100|| 50||100|| #F6F|| bgcolor=&amp;quot;#ff80ff&amp;quot; | || Pastel Magenta|| Pastell-magenta || Magenta pastel  || Magenta pastel&lt;br /&gt;
|-&lt;br /&gt;
| 16 (50h) || (1)  ||  0||  0|| 50|| #006|| bgcolor=&amp;quot;#000080&amp;quot; | || Blue          || Blau            || Bleu            || Azul&lt;br /&gt;
|-&lt;br /&gt;
| 17 (51h) || (19) ||  0||100|| 50|| #0F6|| bgcolor=&amp;quot;#00ff80&amp;quot; | || Sea Green     || Seegrün         || Vert marin      || Verde marino&lt;br /&gt;
|-&lt;br /&gt;
| 18 (52h) || 18   ||  0||100||  0|| #0F0|| bgcolor=&amp;quot;#00ff00&amp;quot; | || Bright Green  || Hellgrün        || Vert vif        || Verde brillante&lt;br /&gt;
|-&lt;br /&gt;
| 19 (53h) || 20   ||  0||100||100|| #0FF|| bgcolor=&amp;quot;#00ffff&amp;quot; | || Bright Cyan   || helles Blaugrün || Turquoise vif   || Ciano brillante&lt;br /&gt;
|-&lt;br /&gt;
| 20 (54h) || 0    ||  0||  0||  0|| #000|| bgcolor=&amp;quot;#000000&amp;quot; | || Black         || Schwarz         || Noir            || Negro&lt;br /&gt;
|-&lt;br /&gt;
| 21 (55h) || 2    ||  0||  0||100|| #00F|| bgcolor=&amp;quot;#0000ff&amp;quot; | || Bright Blue   || Hellblau        || Bleu vif        || Azul brillante&lt;br /&gt;
|-&lt;br /&gt;
| 22 (56h) || 9    ||  0|| 50||  0|| #060|| bgcolor=&amp;quot;#008000&amp;quot; | || Green         || Grün            || Vert            || Verde&lt;br /&gt;
|-&lt;br /&gt;
| 23 (57h) || 11   ||  0|| 50||100|| #06F|| bgcolor=&amp;quot;#0080ff&amp;quot; | || Sky Blue      || Himmelblau      || Bleu ciel       || Azul cielo&lt;br /&gt;
|-&lt;br /&gt;
| 24 (58h) || 4    || 50||  0|| 50|| #606|| bgcolor=&amp;quot;#800080&amp;quot; | || Magenta       || Magenta         || Magenta         || Magenta&lt;br /&gt;
|-&lt;br /&gt;
| 25 (59h) || 22   || 50||100|| 50|| #6F6|| bgcolor=&amp;quot;#80ff80&amp;quot; | || Pastel Green  || Pastellgrün     || Vert pastel     || Verde pastel&lt;br /&gt;
|-&lt;br /&gt;
| 26 (5Ah) || 21   || 50||100||  0|| #6F0|| bgcolor=&amp;quot;#80ff00&amp;quot; | || Lime          || Limonengrün     || Vert citron     || Verde lima&lt;br /&gt;
|-&lt;br /&gt;
| 27 (5Bh) || 23   || 50||100||100|| #6FF|| bgcolor=&amp;quot;#80ffff&amp;quot; | || Pastel Cyan   || Pastell-blaugrün|| Turquoise pastel|| Ciano pastel&lt;br /&gt;
|-&lt;br /&gt;
| 28 (5Ch) || 3    || 50||  0||  0|| #600|| bgcolor=&amp;quot;#800000&amp;quot; | || Red           || Rot             || Rouge           || Rojo&lt;br /&gt;
|-&lt;br /&gt;
| 29 (5Dh) || 5    || 50||  0||100|| #60F|| bgcolor=&amp;quot;#8000ff&amp;quot; | || Mauve         || Hellviolett     || Mauve           || Malva&lt;br /&gt;
|-&lt;br /&gt;
| 30 (5Eh) || 12   || 50|| 50||  0|| #660|| bgcolor=&amp;quot;#808000&amp;quot; | || Yellow        || Gelb            || Jaune           || Amarillo&lt;br /&gt;
|-&lt;br /&gt;
| 31 (5Fh) || 14   || 50|| 50||100|| #66F|| bgcolor=&amp;quot;#8080ff&amp;quot; | || Pastel Blue   || Pastellblau     || Bleu pastel     || Azul pastel&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Intensities ===&lt;br /&gt;
&lt;br /&gt;
The 0%, 50%, and 100% values in the above tables are &amp;quot;should-be&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
On an actual Amstrad CPC, the half-intensity colour signal is measured to be closer to 40% rather than the expected 50%. This was verified by [[Grim]] and independently confirmed by [[Nocash]]. [https://www.grimware.org/doku.php/documentations/devices/gatearray#inkr Source]&lt;br /&gt;
* [[CPC Palette]] - some more details&lt;br /&gt;
&lt;br /&gt;
This explains why the Amstrad engineers used the following values to adapt the old colour palette to the new 12-bit palette on the Amstrad Plus:&lt;br /&gt;
* 0% became #0&lt;br /&gt;
* 50% became #6. They specifically chose #6 for the 50% value instead of the expected #7 or #8, to better match the real Amstrad CPC palette.&lt;br /&gt;
* 100% became #F&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Green Screen Colours ===&lt;br /&gt;
&lt;br /&gt;
On a green screen, where all colours are shades of unsaturated green, the firmware colours are in order of increasing intensity. Black is darkest green, bright white is brightest green, and firmware colour 13 is a medium green.&lt;br /&gt;
&lt;br /&gt;
The luminance (Y) is not exactly correlated to the actual luminance of colour images broadcast in RGB. Amstrad preferred to propose a completely different image system, not comparable to a conversion to monochrome, which would have limited the number of brightness levels to 21 (for example, colours 9 and 6 would have had the same luminance).&lt;br /&gt;
&lt;br /&gt;
They opted for a table of 27 linear brightness steps. They assigned values of 1 (1kΩ) for blue, 3 (3.3kΩ) for red, and 9 (10kΩ) for green.&lt;br /&gt;
&lt;br /&gt;
==== To calculate the luminance value ====&lt;br /&gt;
&lt;br /&gt;
'''Red''' &lt;br /&gt;
&lt;br /&gt;
*0% =&amp;amp;gt; do not add anything &lt;br /&gt;
*50% =&amp;amp;gt; add 3 &lt;br /&gt;
*100% =&amp;amp;gt; add 6 &lt;br /&gt;
&lt;br /&gt;
'''Green''' &lt;br /&gt;
&lt;br /&gt;
*0% =&amp;amp;gt; do not add anything &lt;br /&gt;
*50% =&amp;amp;gt; add 9 &lt;br /&gt;
*100% =&amp;amp;gt; add 18 &lt;br /&gt;
&lt;br /&gt;
'''Blue''' &lt;br /&gt;
&lt;br /&gt;
*0% =&amp;amp;gt; do not add anything &lt;br /&gt;
*50% =&amp;amp;gt; add 1 &lt;br /&gt;
*100% =&amp;amp;gt; add 2 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pictures ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:40010_am2_metal.jpg|40010 GA Metal Layer&lt;br /&gt;
Image:40010_am2_acid.jpg|40010 GA with Metal Layer removed&lt;br /&gt;
Image:40226_am4_metal.jpg|40226 PreASIC Metal Layer&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Ga.pinout.40007.png]] [[File:Ga.pinout.40008.40010.png]]&lt;br /&gt;
&lt;br /&gt;
Note: Some CPC motherboards can accommodate both types of Gate Array pinouts. [https://thecheshirec.at/2024/10/06/il-existe-une-carte-multi-gate-array-et-cest-amstrad-qui-la-faite/ Source]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
*[https://bread80.com/2021/06/03/understanding-the-amstrad-cpc-video-ram-and-gate-array-subsystem/ Electronic signals analysis of the Gate Array by Bread80]&lt;br /&gt;
* [https://shaker.logonsystem.eu/ACCC1.8-EN.pdf Gate Array documentation in Amstrad CRTC Compendium]&lt;br /&gt;
* [https://www.grimware.org/doku.php/documentations/devices/gatearray Gate Array documentation from Grimware]&lt;br /&gt;
* [http://quasar.cpcscene.net/doku.php?id=assem:gate_array Quasar Gate Array documentation (in french)]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*[[Gate Array and ASIC Pin-Outs]]&lt;br /&gt;
*[[PAL16L8]] : for RAM arrangement&lt;br /&gt;
*[[ASIC]] : for Plus users&lt;br /&gt;
&lt;br /&gt;
*[[CRTC]] : the other video stuff&lt;br /&gt;
*[[Synchronising with the CRTC and display]] : technical details on the relationship between Gate Array and CRTC.&lt;br /&gt;
&lt;br /&gt;
*[[Video modes]] : for other informations on colours and pixels.&lt;br /&gt;
&lt;br /&gt;
*[[Media:40010-simplified V03.pdf]] [https://www.cpcwiki.eu/forum/amstrad-cpc-hardware/gate-array-decapped!/msg170713/#msg170713 Forum thread] Gate Array schematics - reverse engineered by Gerald&lt;br /&gt;
&lt;br /&gt;
[[Category:Hardware]][[Category:Programming]][[Category:Datasheet]][[Category:Graphic]][[Category:CPC Internal Components]][[Category:Electronic Component]]&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Longshot&amp;diff=126275</id>
		<title>Longshot</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Longshot&amp;diff=126275"/>
				<updated>2025-05-24T09:57:45Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: Undo revision 126274 by Longshot (talk) Facts will remain here&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Longshot1996.jpg|thumb|Longshot 1996]]&lt;br /&gt;
&lt;br /&gt;
'''Longshot''' was a demo coder, founder and leader of the famous [[Logon System]] demo group. A pseudonym for Serge Querné, he was initially based in southern France but later moved to Paris.&lt;br /&gt;
&lt;br /&gt;
== Biography ==&lt;br /&gt;
&lt;br /&gt;
Initially going under the pseudonym 'Logon 1' (the name Logon he explained in a scrolltext as &amp;quot;a Belgian idea&amp;quot;), he released a series of single-part demos, each of them showcasing a new technique he had learned ‒ or, in many cases, discovered. These included raster bars, overscan, and split modes in the earliest productions. The first demo was coded while he was working at [http://fr.wikipedia.org/wiki/Ubisoft Ubi Soft]'s &amp;quot;castle&amp;quot; headquarters. Though some of these demos seem fairly simple in retrospect, at the time, Serge's demo-coding skill was only equalled by perhaps [[Fefesse]] and [[NWC]].&lt;br /&gt;
&lt;br /&gt;
A stepchange came with the [[Longshot Demo]], the first in which he adopted his new pseudonym. This included hardware splitting and combined more effects on screen at once. [[Revolog]] (or Revolution) followed in a similar vein but was a level more accomplished again. At the same time, Longshot participated in the [[Amazing Demo]] with [[Naminu]] and [[P007]] of [[Malibu Crackers]].&lt;br /&gt;
&lt;br /&gt;
[[Naminu]] would soon become one of the members of the new, expanded [[Logon System]]. The &amp;quot;supergroup&amp;quot;'s first release was the stunning [[The Demo]], where Longshot contributed three parts but, perhaps more significantly, oversaw the polished, coherent design that was unlike any CPC megademo previously released.&lt;br /&gt;
&lt;br /&gt;
The [[Euromeeting Demo]] would turn out to be his last demo release, but a further innovation was the [[B-ASIC]] utility which enabled Plus programmers to use the new features of their machines from BASIC. Longshot went on to the PC in turn, but has recently participated in French CPC forums such as [http://phenixinformatique.free.fr/ Phenix Informatique] once again. His [http://www.logonsystem.fr/ homepage] contains screenshots from the Logon era, a brief history, and downloads of his personal disc collection.&lt;br /&gt;
&lt;br /&gt;
Though most respected for his coding skills and innovations, Serge's main achievement was perhaps the creation and fostering of the Logon System supergroup, the like of which has not been seen since.&lt;br /&gt;
&lt;br /&gt;
Longshot has written technical articles in some columns of the French magazine [[Amstrad Cent Pour Cent]].&lt;br /&gt;
&lt;br /&gt;
== Demos ==&lt;br /&gt;
&lt;br /&gt;
* [[Logon Demo 1]]&lt;br /&gt;
* [[Logon Demo 2]]&lt;br /&gt;
* [[Logon Demo 3]]&lt;br /&gt;
* [[Logon Demo 5]]&lt;br /&gt;
* [[Longshot Demo]]&lt;br /&gt;
* [[Revolog]]&lt;br /&gt;
* [[Amazing Demo]]&lt;br /&gt;
* [[The Demo]]&lt;br /&gt;
* [[Euromeeting Demo]]&lt;br /&gt;
* [[DSC 4]]&lt;br /&gt;
&lt;br /&gt;
== Controversy ==&lt;br /&gt;
&lt;br /&gt;
'''The [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=19308 DSC 4] demo, produced by Longshot / Logon System, is suspected of infringing the copyright-protected material of [https://www.liquideo.com/en/e-liquides/1187-e-liquide-dr-hofmann.html Liquideo], a commercial company.'''&lt;br /&gt;
&lt;br /&gt;
[[File:DSC4 Dr Hofmann.png|400px]] [[File:Liquideo Dr Hofmann.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
== Other productions ==&lt;br /&gt;
&lt;br /&gt;
* [[Atlantis]] &lt;br /&gt;
* [[B-ASIC]]&lt;br /&gt;
* [[AntiMultiface]]&lt;br /&gt;
* [[MagicDOS]]&lt;br /&gt;
&lt;br /&gt;
== Groups ==&lt;br /&gt;
&lt;br /&gt;
* [[Logon System]]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.logonsystem.eu/ Longshot's homepage]&lt;br /&gt;
* [http://norecess.cpcscene.net/interview-longshot.html Interview with Longshot by NoRecess]&lt;br /&gt;
&lt;br /&gt;
[[Category:CPC scene members]]&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=CPC&amp;diff=126272</id>
		<title>CPC</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=CPC&amp;diff=126272"/>
				<updated>2025-05-24T06:54:32Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: /* ANT (Arnold Number Two) prototype */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:CPC History| ]]&lt;br /&gt;
[[Category:Hardware| ]][[Category:CPC Internal Components| ]][[Category:Amstrad Products| ]][[Category:CP/M]]&lt;br /&gt;
The Real meaning of this Wiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The Amstrad CPC (Colour Personal Computer) series was a series of 8-bit home / personal computers that were manufactured by the British company [[Amstrad]] between 1984 (launch of the CPC464: 21st June 1984) and 1993 (?). The CPC, like most contemporary home micros, had an integrated computer-in-a-keyboard design. Also incorporated in the keyboard was the [[Datacorder|tape recorder]] or [[Disk drives|disc drive]].&lt;br /&gt;
&lt;br /&gt;
In general what Amstrad aimed for was to offer a completely integrated solution at a low price. Just as with Amstrad's stereo towers before, [[Alan M. Sugar]] wanted to provide a solution with as few separate components as possible, with as few cables as possible and at as low a price as possible. A truck driver, unfamiliar with computers, was often cited as the CPC's target market.&lt;br /&gt;
&lt;br /&gt;
As a result, Amstrad chose ready off-the-shelf components and used low-cost production methods in an effort to bring manufacturing costs down. They also included a monitor to connect the computer to - a move which, while raising the price, was designed to free the home TV from little brats hogging it for a dose of Ikari Warriors while Eastenders was on. This concept appealed to users and proved to be a success.&lt;br /&gt;
&lt;br /&gt;
However, at least in the UK, it was initially possible to buy the Amstrad CPC with a modulator instead of an Amstrad monitor:&lt;br /&gt;
&lt;br /&gt;
[[File:CPC6128 with modulator - UK ads.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
The combination of low cost, integrated design, good manufacturing quality and some impressive features like CP/M and an 80-column display mode (lacking in much of the competition, particularly the Sinclair [[ZX Spectrum]] and [[Commodore 64]]) proved to be a success both with home users and small businesses, and Amstrad went on to sell millions of CPCs.&lt;br /&gt;
&lt;br /&gt;
Because of its use of the Z80, which was also used in the Sinclair models, some of the earliest games found on the CPC were fairly direct ports of the Spectrum versions which failed to take advantage of the CPC's extra capabilities. The amount of Spectrum ports has often been overstated by those who wish to knock the machine, and in fact formed a comparatively small number of largely unsuccessful games. Nonetheless, those that were published left users and reviewers with a bad taste in their mouth.&lt;br /&gt;
&lt;br /&gt;
At its core, the CPC combined a standard 4MHz [[Z80|Z80A]] with off-the-shelf components and a custom [[Gate Array]] chip. The [[firmware]] comprised two 16k ROMs (combined onto one 32k chip): one was effectively the operating system, the other the fast and flexible [[Locomotive BASIC]] interpreter. All machines except the original 464 would also include a further 16k ROM (on a separate chip): the AMSDOS disc operating system.&lt;br /&gt;
&lt;br /&gt;
Besides AMSDOS, CPCs equipped with floppy drives also shipped with [[CP/M]], allowing access to its vast library of available software.&lt;br /&gt;
&lt;br /&gt;
In all, there were three 'classic' models, the CPC [[464]], [[664]] and [[6128]]; plus two short-lived later [[Plus|advanced]] models, the 464 Plus and the 6128 Plus. A final iteration was the [[Plus|GX4000]] games machine based on the CPC+ computers.&lt;br /&gt;
&lt;br /&gt;
3 million units sold.&lt;br /&gt;
&lt;br /&gt;
''See also: [[CPC Prototypes]].''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Price positioning ==&lt;br /&gt;
&lt;br /&gt;
At launch, the Amstrad CPC 464 was one of the most expensive 8bit computer on the market, as the consumer was forced to buy it with its tape recorder and monitor.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Machine&lt;br /&gt;
! Manufacturer&lt;br /&gt;
! Price (Francs)&lt;br /&gt;
! Source: [https://www.abandonware-magazines.org/affiche_mag.php?mag=41&amp;amp;page=1 Micro 7 #21 (11/1984)]&lt;br /&gt;
|-&lt;br /&gt;
| [[Atari|800XL (PAL)]]&lt;br /&gt;
| Atari&lt;br /&gt;
| 2199&lt;br /&gt;
| advertisement Atari&lt;br /&gt;
|-&lt;br /&gt;
| [[Atari|800XL (SCART)]]&lt;br /&gt;
| Atari&lt;br /&gt;
| 2499&lt;br /&gt;
| advertisement Atari&lt;br /&gt;
|-&lt;br /&gt;
| [[Matra Alice|Alice]]&lt;br /&gt;
| Matra&lt;br /&gt;
| 1199&lt;br /&gt;
| advertisement Alice&lt;br /&gt;
|-&lt;br /&gt;
| [[Matra Alice|Alice 32 in suitcase]]&lt;br /&gt;
| Matra&lt;br /&gt;
| 2495&lt;br /&gt;
| advertisement Alice&lt;br /&gt;
|-&lt;br /&gt;
| [[Oric-1/Atmos|Atmos]]&lt;br /&gt;
| Oric&lt;br /&gt;
| 2350&lt;br /&gt;
| advertisement Vismo&lt;br /&gt;
|-&lt;br /&gt;
| [[BBC Micro]]&lt;br /&gt;
| Acorn&lt;br /&gt;
| 5990&lt;br /&gt;
| advertisement JCS&lt;br /&gt;
|-&lt;br /&gt;
| [[C64|C64 (PAL)]]&lt;br /&gt;
| Commodore&lt;br /&gt;
| 2990&lt;br /&gt;
| advertisement Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| [[C64|C64 (SCART)]]&lt;br /&gt;
| Commodore&lt;br /&gt;
| 3990&lt;br /&gt;
| ads Ordividuel (C64 modified by Procep)&lt;br /&gt;
|-&lt;br /&gt;
| '''CPC 464 with colour monitor'''&lt;br /&gt;
| Amstrad&lt;br /&gt;
| 4490&lt;br /&gt;
| advertisements Vismo, JCS and Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| '''CPC 464 with monochrome monitor'''&lt;br /&gt;
| Amstrad&lt;br /&gt;
| 2990&lt;br /&gt;
| advertisements Vismo, JCS and Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| [[Exelvision EXL100|Exl 100]]&lt;br /&gt;
| Exelvision&lt;br /&gt;
| 3190&lt;br /&gt;
| advertisement JCS&lt;br /&gt;
|-&lt;br /&gt;
| Laser 200&lt;br /&gt;
| V-tech&lt;br /&gt;
| 1280&lt;br /&gt;
| advertisement Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| Laser 310&lt;br /&gt;
| V-tech&lt;br /&gt;
| 1490&lt;br /&gt;
| advertisement Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| Macintosh 512KB (all-in-one)&lt;br /&gt;
| Apple&lt;br /&gt;
| 29995&lt;br /&gt;
| article&lt;br /&gt;
|-&lt;br /&gt;
| [[Thomson computers|MO5]]&lt;br /&gt;
| Thomson&lt;br /&gt;
| 2450&lt;br /&gt;
| advertisement Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| [[MSX|MSX PHC-28]]&lt;br /&gt;
| Sanyo&lt;br /&gt;
| 2990&lt;br /&gt;
| advertisement Vismo&lt;br /&gt;
|-&lt;br /&gt;
| [[MSX|MSX Prism]]&lt;br /&gt;
| Goldstar&lt;br /&gt;
| 2950&lt;br /&gt;
| article&lt;br /&gt;
|-&lt;br /&gt;
| PC 128KB (all-in-one)&lt;br /&gt;
| Goupil&lt;br /&gt;
| 24200&lt;br /&gt;
| article&lt;br /&gt;
|-&lt;br /&gt;
| [[Thomson computers|TO7/70]]&lt;br /&gt;
| Thomson&lt;br /&gt;
| 3590&lt;br /&gt;
| advertisement Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| [[VG 5000]]&lt;br /&gt;
| Philips&lt;br /&gt;
| 1590&lt;br /&gt;
| article&lt;br /&gt;
|-&lt;br /&gt;
| [[ZX Spectrum|ZX Spectrum 48KB]]&lt;br /&gt;
| Sinclair&lt;br /&gt;
| 1990&lt;br /&gt;
| advertisement Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| [[ZX80/81|ZX81]]&lt;br /&gt;
| Sinclair&lt;br /&gt;
| 580&lt;br /&gt;
| advertisements Vismo and Ordividuel&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
But all things considered, it was an excellent value, as both a tape recorder and a monitor were expensive items. And most buyers didn’t have spare ones to reuse anyway as it was their first computer.&lt;br /&gt;
&lt;br /&gt;
A cheap Zenith zvm122 12inch monochrome monitor cost 990 Francs, a Novex Mc1414 14inch colour monitor cost 2800 Francs, a tape recorder for the C64 cost 450 Francs, a floppy drive for the C64 cost 3500 Francs. Source: Micro 7 #21 - 11/1984&lt;br /&gt;
&lt;br /&gt;
Note: In France we had an additional problem in that our TVs were [https://en.wikipedia.org/wiki/SECAM SECAM] only in the 80s. A monitor was required for foreign computers like the C64 PAL or the ZX Spectrum that didn't output RGB. TVs only became PAL/SECAM compatible in the 90s.&lt;br /&gt;
&lt;br /&gt;
The minimum wage in France in 11/1984 was at 4116 Francs per month for a full-time job. Source: http://www.cda-strasbourg.org/smic.htm&lt;br /&gt;
&lt;br /&gt;
In June 1985, the CPC 664 was launched at 4490 Francs for monochrome and 5990 Francs for colour. Source: Micro 7 #28 - 06/1985&lt;br /&gt;
&lt;br /&gt;
The evolution of Amstrad CPC prices over the years is described in that article: [https://www.cpc-power.com/cpcarchives/index.php?page=articles&amp;amp;num=90 L'histoire des CPC selon GENERAL]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Late to the market ==&lt;br /&gt;
&lt;br /&gt;
Amstrad jumped into the home computer market in June 1984, one year after the [[MSX]] Standard of June 1983 which was thought at the time to be the end of the &amp;quot;cowboy&amp;quot; era of disparate and incompatible 8-bit computers.&lt;br /&gt;
&lt;br /&gt;
It was just in time to shake things up with its unique all-in-one concept for the home market. &lt;br /&gt;
&lt;br /&gt;
While earlier computers like the Tandy TRS-80 Model III, Commodore PET, Commodore Educator 64, Apple Lisa and Apple Macintosh had pioneered the all-in-one design, they were primarily aimed at businesses and education.&lt;br /&gt;
&lt;br /&gt;
By the end of 1985, all the big names were already established in both 8-bit and the newer 16-bit systems, leaving no room for newcomers.&lt;br /&gt;
&lt;br /&gt;
From there, it turned into a survival game, with the weaker players getting pushed out. After that, no new companies managed to break into the market, except for PC clones.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The CPC series ==&lt;br /&gt;
&lt;br /&gt;
=== The 464 ===&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
464.png|Amstrad CPC [[464]] with colour monitor&lt;br /&gt;
CPC464 pre-production sample.jpg|Pre-production sample made by Orion Japan for Amstrad UK&lt;br /&gt;
Schneider cpc 464 ddi1.jpg|Schneider CPC [[464]] with monochrome monitor and [[Amstrad External Disk Drive|DDI-1]] extension&lt;br /&gt;
Amstrad CPC464 grey keys.jpg|Amstrad CPC464 with grey keys&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:CPC464 english ad.jpg|English ad&lt;br /&gt;
File:CPC464 australian ad.jpg| Australian ad&lt;br /&gt;
File:CPC464 french ad.jpg|French ad&lt;br /&gt;
File:CPC464 spanish ad.jpg|Spanish ad&lt;br /&gt;
File:CPC464 danish ad.jpg|Danish ad&lt;br /&gt;
File:CPC464 greek ad.jpg|Greek ad&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
First came the CPC464, the father of the CPC family, released on the 21st June 1984 (with production ceasing in 1990). This model used an integrated tape recorder and offered 64KB of RAM.&lt;br /&gt;
&lt;br /&gt;
It sold around two million units in Europe and, technology-wise, was more impressive than the [[ZX Spectrum]] and on a similar level with the [[Commodore 64]]. The firmware of the CPC was also leagues ahead of the C64.&lt;br /&gt;
&lt;br /&gt;
One notable exception was the sound chip: while the C64 employed the splendid custom [[SID]] chip, Amstrad opted for a generic sound chip - [[AY|AY-3-8912]] - with unremarkable features. It is no surprise though as there was not much choice in off-the-shelf sound chips in early 1984.&lt;br /&gt;
&lt;br /&gt;
At its core was a [[Z80]] clocked at 4MHz - though screen display considerations, and the particular design of the [[Gate Array]] limited this to an effective 3.3MHz in practice - while the display was managed by the [[CRTC|6845 CRTC]] along with a gate-array chip.&lt;br /&gt;
&lt;br /&gt;
The CPC464 sported a palette of 27 colours and [[Video modes|three distinct resolutions]]: 160x200x16 colours (mode 0), 320x200x4 colours (mode 1) and 640x200x2 colours (mode 2, 80-column mode).&lt;br /&gt;
&lt;br /&gt;
Before the launch of the CPC 464, 45 pre-production hand built machines with a grey case had been issued to software houses to get their games ready on time.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The 472 ===&lt;br /&gt;
[[image:CPC_472_es.jpg|right|thumb|300px|Spanish Amstrad CPC 472]]&lt;br /&gt;
The [[472|CPC 472]] was a Spanish version of the CPC 464 with an additional, non-functional 8KB RAM. The reason was that Spain charged an import tax on home computers with 64K or less RAM, the fake &amp;quot;72K&amp;quot; CPC version bypassed that tax. The tax was invented in September 1985, and was dropped a few months later (when Spain joined the EEC). Also in 1985, but independtly of that tax, Spain dictated that computers must have spanish keyboards, which resulted in two CPC 472 versions: Older models with english keys, newer ones with spanish keys. Another oddity is that the older CPC472 had BASIC 1.1 while the newer CPC472 had BASIC 1.0. The CPC 472 is very rare.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;''We had basically stuck two fingers in the air to the Spanish government, who were trying to screw our business, and there wasn’t much they could do about it''&amp;quot; — Alan Sugar&lt;br /&gt;
&lt;br /&gt;
Read the full story behind the CPC 472 directly from the horse's mouth: https://amstrad.com/product/cpc472/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The 664 ===&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Amstrad-cpc-664.png|Amstrad CPC 664&lt;br /&gt;
Schneider cpc 664.jpg|Schneider CPC 664&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In June 1985, Amstrad took the initial design and, building upon the same idea, removed the tape recorder and replaced it with a disc drive, using the same hardware sold as the [[DDI-1]] add-on for 464 owners. The result: the CPC664. Sporting a less colourful and easier-to-type-on keyboard, the CPC664 appealed as a more serious machine and proved a success, especially due to its quite fast 3&amp;quot;, 180KB/side drive.&lt;br /&gt;
&lt;br /&gt;
Never the less, the 664 did have a very short life and was soon replaced by the 6128 (according to [[Amstrad Action]], Issue 1, Oct 1985, page [[:File:Amstrad Action001 08.jpg|8]], the 664 was produced only from May until August 1985).&lt;br /&gt;
&lt;br /&gt;
* ''[http://www.gondolin.org.uk/hchof/review.php?id=29&amp;amp;mcid=27 Your Computer (June 1985) review of the CPC664]''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The 6128 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Amstrad CPC6128.jpg|Amstrad CPC 6128&lt;br /&gt;
File:Amstrad CPC 6128 white.jpg|Amstrad CPC 6128 with white sticker&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Shortly afterwards, Amstrad launched the CPC6128 for the American market only, through its distributor [[Indescomp]]. The new machine sported 128k of memory and a still more sober appearance, but was otherwise nearly identical to the 664. The height of the case was greatly reduced, and the cursor keys were arranged more comfortably, both making the keyboard more ergonomically than the 464/664. Internally, the keyboard consists of two foils, although such membrane foils are relative fragile, they were more robust and reliable than the single foil used in the 664.&lt;br /&gt;
&lt;br /&gt;
Despite initial denials, the machine was launched in Europe shortly afterwards, replacing the 664 for the same price - a situation which understandably irritated some of those who had recently purchased 664s. As well as the [[CP/M]] 2.2 and [[DR Logo]] that had shipped with the DDI-1 and the CPC664, the 6128 came bundled with CP/M Plus (with the GSX graphics extension) making it an appealing all-round computer at a low price. Though the 128KB of memory could not be accessed all at once from BASIC (due to limitations of the [[Z80]]), the upper 64KB could be used readily from machine code courtesy of an upgraded [[Gate Array]]. A bundled program, [[Bankman]], provided some access from BASIC.&lt;br /&gt;
&lt;br /&gt;
The presence of this extra memory and the clever design of Amstrad's CP/M Plus implementation allowed for a TPA (Transient Program Area) of 61KB, more than enough to run all CP/M software.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Accessories ===&lt;br /&gt;
&lt;br /&gt;
Amstrad pushed the all-in-one package concept even further by selling unusual accessories to go along with their computer. Most notably, they proposed:&lt;br /&gt;
* A [[Amstrad CT-1 Radio/Alarm-Clock|clock/radio/alarm module]]&lt;br /&gt;
* A [[MP-3|TV tuner]] to transform the Amstrad CPC into a TV&lt;br /&gt;
* A [[CS-10 Computer Desk|computer desk]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Amstrad CPC accessories.jpg|200px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ANT (Arnold Number Two) prototype ==&lt;br /&gt;
&lt;br /&gt;
At the same time, Amstrad was designing the immensely successful [[PCW]] word-processor series, also with software by [[Locomotive Software|Locomotive]] and featuring an all-in-one Z80-based design.&lt;br /&gt;
&lt;br /&gt;
A shared architecture was developed that would encompass both the PCW and a new, upgraded CPC - codenamed [[ANT]], or Arnold Number Two. It shared many features with the PCW, such as its larger memory and its exceptionally elegant screen-handling hardware, but boasted colour and sound, and retained CPC compatibility. The aim was to see off the Atari ST and Commodore Amiga, next-generation games machines already on the horizon.&lt;br /&gt;
&lt;br /&gt;
A few of the PCW's design features which don't appear to make any sense on their own stem from this shared ancestry. But the project was dropped at a fairly early stage, and the CPC Classic lived on before eventually succumbing to the Plus. Only one prototype board is believed to survive, in the possession of ex-Locomotive Software engineer [[Richard Clayton]].&lt;br /&gt;
&lt;br /&gt;
&amp;quot;''We did an Amstrad machine basically a [[PCW]] with hi-res colour and sound synth, called ANT (Arnold Number Two) but it never went anywhere as production. It was really nice, but by then [[Amiga]] did everything we wanted to do, 8-bit was meh, and [[Amstrad PC|PCs]] were more important.''&amp;quot; — Vik Olliver [https://x.com/VikOlliver/status/1191156134876311554 Source]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The Plus series ==&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
cpc6128plus.jpg|Amstrad [[Plus|6128 Plus]] with colour monitor&lt;br /&gt;
Amstrad 464 Plus.jpg|Amstrad [[Plus|464 Plus]]&lt;br /&gt;
File:Amstrad-plus-ad.jpg|English advertisement&lt;br /&gt;
File:Amstrad-plus-french-ad.jpg|French advertisement&lt;br /&gt;
File:Amstrad-plus-spanish-ad.jpg|Spanish advertisement&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
The last models in the Amstrad CPC range were the [[Plus|Amstrad 464 Plus]] and [[Plus|Amstrad 6128 Plus]], launched together in 1990. The CPC name is said to have been dropped because of a legal dispute with a French firm, though it is also likely that &amp;quot;CPC 6128 Plus&amp;quot; was considered too unwieldy a name and one redolent of the machine's mid-80s heritage. However, the &amp;quot;CPC Plus&amp;quot; branding was used by Amstrad España in their advertising material.&lt;br /&gt;
&lt;br /&gt;
The Plus series were quite (but not 100%) compatible with the original CPC computers. The compatibility issues came mostly from:&lt;br /&gt;
* The emulated [[8255|PPI]] chip, making the keyboard unresponsive&lt;br /&gt;
* The emulated [[CRTC]], breaking CPC demos&lt;br /&gt;
* Unlike the original model, the 464 Plus lacks a tape counter for tracking cassette positions. It also omits the distinctive loading sounds that were once audible through the speaker during tape operations on the original CPC 464&lt;br /&gt;
* Unlike the original model, the 464 Plus features the BASIC 1.1 ROM&lt;br /&gt;
* The new AMSDOS ROM, breaking ROM access to the floppy drive&lt;br /&gt;
&lt;br /&gt;
ROM issues can be easily fixed by using a [[Plus System Cartridge|Downgrade System cartridge]].&lt;br /&gt;
&lt;br /&gt;
The Plus series incorporated a list of [[ASIC|new features]], like a cartridge port for instant program loading, DMA for the [[AY]] soundchip, enhanced hardware scrolling, programmable interrupts, 16 hardware zoomable sprites (not vectorized) with an independent palette of 15 colours, and a choice of 4096 colours all in a new, sleek case which mimicked the keyboard-computer design that was ''en vogue'' in the 16-bit market (ST, Amiga etc). &lt;br /&gt;
&lt;br /&gt;
Described as a solution of 'too little, too late', this was Amstrad's effort to prolong the life of its 8-bit computer series in the face of fierce competition from new 16-bit machines (notably, the [[Atari ST]] and the Commodore [[Amiga]]).&lt;br /&gt;
&lt;br /&gt;
While the Amstrad Plus computers were one of the most advanced 8-bit computers ever built for the mass market, they died an early death as the 16-bit era was in full swing. And 32-bit computers were already appearing. The year before, Amstrad launched its first 32-bit PC, the [[Amstrad PC|PC2386]].&lt;br /&gt;
&lt;br /&gt;
Also, the [[Apple II|Apple IIGS]] and the [[MSX|MSX Turbo-R]] proved that 8-bit machines could be upgraded to 16-bit. It would have been possible with the CPC if Amstrad had decided to do so.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The GX4000 ==&lt;br /&gt;
[[Image:Amstrad-GX4000-Console.jpg|right|thumb|300px|The Amstrad GX4000]]&lt;br /&gt;
By 1990 Amstrad had realised that the home market was heading towards the 16-bit machines, on one hand, and towards the new generation of game consoles like the Sega Master System or the Nintendo Entertainment System, on the other. Therefore, just as they created the 464 Plus and 6128 Plus to compete against the ST and the Amiga, they also created a stripped-down variant called the [[Plus|GX4000]].&lt;br /&gt;
&lt;br /&gt;
The GX4000 was, in essence, an Amstrad 464+ motherboard in a new case, with no keyboard, cassette deck nor disc drive, and with most extension ports gone - save for the cartridge port and two joypads.&lt;br /&gt;
&lt;br /&gt;
The GX4000 was officially announced along with the 464 plus and 6128 plus computers at the CNIT Centre in Paris in August 1990.&lt;br /&gt;
&lt;br /&gt;
The system was launched a month later in four countries: Britain, France, Spain, and Italy. It was priced at £99.99 in Britain and 990F in France; software was priced at £25 for most games. [https://en.wikipedia.org/wiki/Amstrad_GX4000 Source]&lt;br /&gt;
&lt;br /&gt;
As expected, the GX4000 was a flop that could not break the stranglehold that Sega and Nintendo had on the market at the time. The Nintendo NES was a best seller and Sega released the Mega Drive in November 1990 in Europe.&lt;br /&gt;
&lt;br /&gt;
As a result, the GX4000 was soon to be found selling at ridiculously low prices - as little as £19.99 in the UK - as dealers tried to offload their stock. It was a shame, because if Amstrad had realised the market potential and produced this console a few years earlier, it could well have been a success.&lt;br /&gt;
&lt;br /&gt;
As it was, the GX4000 joined the long list of failed attempts to repurpose computers as game consoles, alongside the Atari XEGS, the Commodore 64GS, the Amiga CDTV, the Amiga CD32, the FM Towns Marty and the Apple Pippin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Clones ==&lt;br /&gt;
&lt;br /&gt;
There were two clones of the CPC, neither of which were 100% compatible with the CPC.&lt;br /&gt;
&lt;br /&gt;
* [[KC Compact]]: An East German clone. The Gate-Array was replaced with TTL logic which performed a similar function. There are some hardware differences, especially in the interrupts. This clone is much closer to the CPC in terms of functionality.&lt;br /&gt;
&lt;br /&gt;
* [[Aleste 520EX]]: This clone also had some MSX like hardware which made it possible to run some modified MSX titles. This clone also ran faster than the original CPC.&lt;br /&gt;
&lt;br /&gt;
* [https://hackaday.io/project/188511-xialeste XiAleste]: This expanded clone is the successor of the Aleste. Currently under development.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Outro ==&lt;br /&gt;
&lt;br /&gt;
All in all, the CPC series met with great success. Although they would never achieve the universal status of the [[Commodore 64]] or the humble [[ZX Spectrum]] series, the CPCs managed to sell very well.&lt;br /&gt;
&lt;br /&gt;
France was the sole market where the CPCs achieved the top position for years. Still, the CPCs were very popular in the UK, Spain, Greece, Germany and Australia, to name a few countries.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*[[CPC timeline]]&lt;br /&gt;
*[https://youtu.be/MTsCiZ3ZBD4 Entrevista a ROLAND PERRY] by [[Las Cosas Retro]]&lt;br /&gt;
*[https://youtu.be/bD_gBz2fwDM Amstrad CPC - Top 150 games (1984-2020)] Top 50 CPC games from [https://youtu.be/F3pVjc4tmCU 1984] [https://youtu.be/8w7Rx1dOmPs 1985] [https://youtu.be/c18muwWbVZc 1986] [https://youtu.be/NpL1uq0IAz4 1987] [https://youtu.be/0mnR3vTJXw8 1988]&lt;br /&gt;
*[https://youtu.be/ZOOwlWwlltM All Amstrad CPC games] from [https://youtu.be/Smpv8v1OP5A 1984] [https://youtu.be/_JJjHXNGEyY 1985] [https://youtu.be/5XRyZIW4c9s 1986] [https://youtu.be/V7yRLp-Xvfs 1987] [https://youtu.be/afn70FPDRoQ 1988] [https://youtu.be/tpQ1PhUWnYw 1989] [https://youtu.be/8_JvuGdumC4 1990] [https://youtu.be/yJsm1DeF7Pk 1991] [https://youtu.be/LQmDzkNs0P4 1992]&lt;br /&gt;
*[https://youtu.be/hBlHUWRlmug Amstrad CPC - Best of Music with Video (3 hours)]&lt;br /&gt;
*[https://youtu.be/BvramomEtSM Amstrad TV adverts] [https://youtu.be/n7U6E7bDFlc Amstrad French TV adverts]&lt;br /&gt;
*[https://youtu.be/8o1OTwFv7WQ Part 1] [https://youtu.be/f1KS7nSKnxE Part 2] Amstrad CPC Story by [[Nostalgia Nerd]]&lt;br /&gt;
*[https://youtu.be/fB9M6RMtMUE Partie 1] [https://youtu.be/F0CzNJjjkO4 Partie 2] [https://youtu.be/la5IhBbrqPc Partie 3] [https://youtu.be/uUR5oKBxRzA Partie 4] Histoire de l'Amstrad CPC by [[Génération Micros]]&lt;br /&gt;
*[https://youtu.be/mesZ1zbA654 Amstrad : La gamme CPC (1984/1985)] [https://youtu.be/Ijuqsz69Euk Amstrad 6128 Plus] by [[Rodrik Studio]]&lt;br /&gt;
*[https://www.youtube.com/watch?v=O0vvdDx4egk&amp;amp;list=PLIX9fyYxV0k9phQiqATmOe2OZJyeMuY0a C64 vs Amstrad CPC] [https://www.youtube.com/watch?v=JfZ77Ltkols&amp;amp;list=PLIX9fyYxV0k_VOgMOIxseJH1c91KKcxKB ZX Spectrum vs Amstrad CPC]&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=CPC&amp;diff=126271</id>
		<title>CPC</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=CPC&amp;diff=126271"/>
				<updated>2025-05-24T06:54:03Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: /* The 472 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:CPC History| ]]&lt;br /&gt;
[[Category:Hardware| ]][[Category:CPC Internal Components| ]][[Category:Amstrad Products| ]][[Category:CP/M]]&lt;br /&gt;
The Real meaning of this Wiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The Amstrad CPC (Colour Personal Computer) series was a series of 8-bit home / personal computers that were manufactured by the British company [[Amstrad]] between 1984 (launch of the CPC464: 21st June 1984) and 1993 (?). The CPC, like most contemporary home micros, had an integrated computer-in-a-keyboard design. Also incorporated in the keyboard was the [[Datacorder|tape recorder]] or [[Disk drives|disc drive]].&lt;br /&gt;
&lt;br /&gt;
In general what Amstrad aimed for was to offer a completely integrated solution at a low price. Just as with Amstrad's stereo towers before, [[Alan M. Sugar]] wanted to provide a solution with as few separate components as possible, with as few cables as possible and at as low a price as possible. A truck driver, unfamiliar with computers, was often cited as the CPC's target market.&lt;br /&gt;
&lt;br /&gt;
As a result, Amstrad chose ready off-the-shelf components and used low-cost production methods in an effort to bring manufacturing costs down. They also included a monitor to connect the computer to - a move which, while raising the price, was designed to free the home TV from little brats hogging it for a dose of Ikari Warriors while Eastenders was on. This concept appealed to users and proved to be a success.&lt;br /&gt;
&lt;br /&gt;
However, at least in the UK, it was initially possible to buy the Amstrad CPC with a modulator instead of an Amstrad monitor:&lt;br /&gt;
&lt;br /&gt;
[[File:CPC6128 with modulator - UK ads.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
The combination of low cost, integrated design, good manufacturing quality and some impressive features like CP/M and an 80-column display mode (lacking in much of the competition, particularly the Sinclair [[ZX Spectrum]] and [[Commodore 64]]) proved to be a success both with home users and small businesses, and Amstrad went on to sell millions of CPCs.&lt;br /&gt;
&lt;br /&gt;
Because of its use of the Z80, which was also used in the Sinclair models, some of the earliest games found on the CPC were fairly direct ports of the Spectrum versions which failed to take advantage of the CPC's extra capabilities. The amount of Spectrum ports has often been overstated by those who wish to knock the machine, and in fact formed a comparatively small number of largely unsuccessful games. Nonetheless, those that were published left users and reviewers with a bad taste in their mouth.&lt;br /&gt;
&lt;br /&gt;
At its core, the CPC combined a standard 4MHz [[Z80|Z80A]] with off-the-shelf components and a custom [[Gate Array]] chip. The [[firmware]] comprised two 16k ROMs (combined onto one 32k chip): one was effectively the operating system, the other the fast and flexible [[Locomotive BASIC]] interpreter. All machines except the original 464 would also include a further 16k ROM (on a separate chip): the AMSDOS disc operating system.&lt;br /&gt;
&lt;br /&gt;
Besides AMSDOS, CPCs equipped with floppy drives also shipped with [[CP/M]], allowing access to its vast library of available software.&lt;br /&gt;
&lt;br /&gt;
In all, there were three 'classic' models, the CPC [[464]], [[664]] and [[6128]]; plus two short-lived later [[Plus|advanced]] models, the 464 Plus and the 6128 Plus. A final iteration was the [[Plus|GX4000]] games machine based on the CPC+ computers.&lt;br /&gt;
&lt;br /&gt;
3 million units sold.&lt;br /&gt;
&lt;br /&gt;
''See also: [[CPC Prototypes]].''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Price positioning ==&lt;br /&gt;
&lt;br /&gt;
At launch, the Amstrad CPC 464 was one of the most expensive 8bit computer on the market, as the consumer was forced to buy it with its tape recorder and monitor.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Machine&lt;br /&gt;
! Manufacturer&lt;br /&gt;
! Price (Francs)&lt;br /&gt;
! Source: [https://www.abandonware-magazines.org/affiche_mag.php?mag=41&amp;amp;page=1 Micro 7 #21 (11/1984)]&lt;br /&gt;
|-&lt;br /&gt;
| [[Atari|800XL (PAL)]]&lt;br /&gt;
| Atari&lt;br /&gt;
| 2199&lt;br /&gt;
| advertisement Atari&lt;br /&gt;
|-&lt;br /&gt;
| [[Atari|800XL (SCART)]]&lt;br /&gt;
| Atari&lt;br /&gt;
| 2499&lt;br /&gt;
| advertisement Atari&lt;br /&gt;
|-&lt;br /&gt;
| [[Matra Alice|Alice]]&lt;br /&gt;
| Matra&lt;br /&gt;
| 1199&lt;br /&gt;
| advertisement Alice&lt;br /&gt;
|-&lt;br /&gt;
| [[Matra Alice|Alice 32 in suitcase]]&lt;br /&gt;
| Matra&lt;br /&gt;
| 2495&lt;br /&gt;
| advertisement Alice&lt;br /&gt;
|-&lt;br /&gt;
| [[Oric-1/Atmos|Atmos]]&lt;br /&gt;
| Oric&lt;br /&gt;
| 2350&lt;br /&gt;
| advertisement Vismo&lt;br /&gt;
|-&lt;br /&gt;
| [[BBC Micro]]&lt;br /&gt;
| Acorn&lt;br /&gt;
| 5990&lt;br /&gt;
| advertisement JCS&lt;br /&gt;
|-&lt;br /&gt;
| [[C64|C64 (PAL)]]&lt;br /&gt;
| Commodore&lt;br /&gt;
| 2990&lt;br /&gt;
| advertisement Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| [[C64|C64 (SCART)]]&lt;br /&gt;
| Commodore&lt;br /&gt;
| 3990&lt;br /&gt;
| ads Ordividuel (C64 modified by Procep)&lt;br /&gt;
|-&lt;br /&gt;
| '''CPC 464 with colour monitor'''&lt;br /&gt;
| Amstrad&lt;br /&gt;
| 4490&lt;br /&gt;
| advertisements Vismo, JCS and Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| '''CPC 464 with monochrome monitor'''&lt;br /&gt;
| Amstrad&lt;br /&gt;
| 2990&lt;br /&gt;
| advertisements Vismo, JCS and Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| [[Exelvision EXL100|Exl 100]]&lt;br /&gt;
| Exelvision&lt;br /&gt;
| 3190&lt;br /&gt;
| advertisement JCS&lt;br /&gt;
|-&lt;br /&gt;
| Laser 200&lt;br /&gt;
| V-tech&lt;br /&gt;
| 1280&lt;br /&gt;
| advertisement Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| Laser 310&lt;br /&gt;
| V-tech&lt;br /&gt;
| 1490&lt;br /&gt;
| advertisement Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| Macintosh 512KB (all-in-one)&lt;br /&gt;
| Apple&lt;br /&gt;
| 29995&lt;br /&gt;
| article&lt;br /&gt;
|-&lt;br /&gt;
| [[Thomson computers|MO5]]&lt;br /&gt;
| Thomson&lt;br /&gt;
| 2450&lt;br /&gt;
| advertisement Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| [[MSX|MSX PHC-28]]&lt;br /&gt;
| Sanyo&lt;br /&gt;
| 2990&lt;br /&gt;
| advertisement Vismo&lt;br /&gt;
|-&lt;br /&gt;
| [[MSX|MSX Prism]]&lt;br /&gt;
| Goldstar&lt;br /&gt;
| 2950&lt;br /&gt;
| article&lt;br /&gt;
|-&lt;br /&gt;
| PC 128KB (all-in-one)&lt;br /&gt;
| Goupil&lt;br /&gt;
| 24200&lt;br /&gt;
| article&lt;br /&gt;
|-&lt;br /&gt;
| [[Thomson computers|TO7/70]]&lt;br /&gt;
| Thomson&lt;br /&gt;
| 3590&lt;br /&gt;
| advertisement Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| [[VG 5000]]&lt;br /&gt;
| Philips&lt;br /&gt;
| 1590&lt;br /&gt;
| article&lt;br /&gt;
|-&lt;br /&gt;
| [[ZX Spectrum|ZX Spectrum 48KB]]&lt;br /&gt;
| Sinclair&lt;br /&gt;
| 1990&lt;br /&gt;
| advertisement Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| [[ZX80/81|ZX81]]&lt;br /&gt;
| Sinclair&lt;br /&gt;
| 580&lt;br /&gt;
| advertisements Vismo and Ordividuel&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
But all things considered, it was an excellent value, as both a tape recorder and a monitor were expensive items. And most buyers didn’t have spare ones to reuse anyway as it was their first computer.&lt;br /&gt;
&lt;br /&gt;
A cheap Zenith zvm122 12inch monochrome monitor cost 990 Francs, a Novex Mc1414 14inch colour monitor cost 2800 Francs, a tape recorder for the C64 cost 450 Francs, a floppy drive for the C64 cost 3500 Francs. Source: Micro 7 #21 - 11/1984&lt;br /&gt;
&lt;br /&gt;
Note: In France we had an additional problem in that our TVs were [https://en.wikipedia.org/wiki/SECAM SECAM] only in the 80s. A monitor was required for foreign computers like the C64 PAL or the ZX Spectrum that didn't output RGB. TVs only became PAL/SECAM compatible in the 90s.&lt;br /&gt;
&lt;br /&gt;
The minimum wage in France in 11/1984 was at 4116 Francs per month for a full-time job. Source: http://www.cda-strasbourg.org/smic.htm&lt;br /&gt;
&lt;br /&gt;
In June 1985, the CPC 664 was launched at 4490 Francs for monochrome and 5990 Francs for colour. Source: Micro 7 #28 - 06/1985&lt;br /&gt;
&lt;br /&gt;
The evolution of Amstrad CPC prices over the years is described in that article: [https://www.cpc-power.com/cpcarchives/index.php?page=articles&amp;amp;num=90 L'histoire des CPC selon GENERAL]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Late to the market ==&lt;br /&gt;
&lt;br /&gt;
Amstrad jumped into the home computer market in June 1984, one year after the [[MSX]] Standard of June 1983 which was thought at the time to be the end of the &amp;quot;cowboy&amp;quot; era of disparate and incompatible 8-bit computers.&lt;br /&gt;
&lt;br /&gt;
It was just in time to shake things up with its unique all-in-one concept for the home market. &lt;br /&gt;
&lt;br /&gt;
While earlier computers like the Tandy TRS-80 Model III, Commodore PET, Commodore Educator 64, Apple Lisa and Apple Macintosh had pioneered the all-in-one design, they were primarily aimed at businesses and education.&lt;br /&gt;
&lt;br /&gt;
By the end of 1985, all the big names were already established in both 8-bit and the newer 16-bit systems, leaving no room for newcomers.&lt;br /&gt;
&lt;br /&gt;
From there, it turned into a survival game, with the weaker players getting pushed out. After that, no new companies managed to break into the market, except for PC clones.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The CPC series ==&lt;br /&gt;
&lt;br /&gt;
=== The 464 ===&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
464.png|Amstrad CPC [[464]] with colour monitor&lt;br /&gt;
CPC464 pre-production sample.jpg|Pre-production sample made by Orion Japan for Amstrad UK&lt;br /&gt;
Schneider cpc 464 ddi1.jpg|Schneider CPC [[464]] with monochrome monitor and [[Amstrad External Disk Drive|DDI-1]] extension&lt;br /&gt;
Amstrad CPC464 grey keys.jpg|Amstrad CPC464 with grey keys&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:CPC464 english ad.jpg|English ad&lt;br /&gt;
File:CPC464 australian ad.jpg| Australian ad&lt;br /&gt;
File:CPC464 french ad.jpg|French ad&lt;br /&gt;
File:CPC464 spanish ad.jpg|Spanish ad&lt;br /&gt;
File:CPC464 danish ad.jpg|Danish ad&lt;br /&gt;
File:CPC464 greek ad.jpg|Greek ad&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
First came the CPC464, the father of the CPC family, released on the 21st June 1984 (with production ceasing in 1990). This model used an integrated tape recorder and offered 64KB of RAM.&lt;br /&gt;
&lt;br /&gt;
It sold around two million units in Europe and, technology-wise, was more impressive than the [[ZX Spectrum]] and on a similar level with the [[Commodore 64]]. The firmware of the CPC was also leagues ahead of the C64.&lt;br /&gt;
&lt;br /&gt;
One notable exception was the sound chip: while the C64 employed the splendid custom [[SID]] chip, Amstrad opted for a generic sound chip - [[AY|AY-3-8912]] - with unremarkable features. It is no surprise though as there was not much choice in off-the-shelf sound chips in early 1984.&lt;br /&gt;
&lt;br /&gt;
At its core was a [[Z80]] clocked at 4MHz - though screen display considerations, and the particular design of the [[Gate Array]] limited this to an effective 3.3MHz in practice - while the display was managed by the [[CRTC|6845 CRTC]] along with a gate-array chip.&lt;br /&gt;
&lt;br /&gt;
The CPC464 sported a palette of 27 colours and [[Video modes|three distinct resolutions]]: 160x200x16 colours (mode 0), 320x200x4 colours (mode 1) and 640x200x2 colours (mode 2, 80-column mode).&lt;br /&gt;
&lt;br /&gt;
Before the launch of the CPC 464, 45 pre-production hand built machines with a grey case had been issued to software houses to get their games ready on time.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The 472 ===&lt;br /&gt;
[[image:CPC_472_es.jpg|right|thumb|300px|Spanish Amstrad CPC 472]]&lt;br /&gt;
The [[472|CPC 472]] was a Spanish version of the CPC 464 with an additional, non-functional 8KB RAM. The reason was that Spain charged an import tax on home computers with 64K or less RAM, the fake &amp;quot;72K&amp;quot; CPC version bypassed that tax. The tax was invented in September 1985, and was dropped a few months later (when Spain joined the EEC). Also in 1985, but independtly of that tax, Spain dictated that computers must have spanish keyboards, which resulted in two CPC 472 versions: Older models with english keys, newer ones with spanish keys. Another oddity is that the older CPC472 had BASIC 1.1 while the newer CPC472 had BASIC 1.0. The CPC 472 is very rare.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;''We had basically stuck two fingers in the air to the Spanish government, who were trying to screw our business, and there wasn’t much they could do about it''&amp;quot; — Alan Sugar&lt;br /&gt;
&lt;br /&gt;
Read the full story behind the CPC 472 directly from the horse's mouth: https://amstrad.com/product/cpc472/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The 664 ===&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Amstrad-cpc-664.png|Amstrad CPC 664&lt;br /&gt;
Schneider cpc 664.jpg|Schneider CPC 664&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In June 1985, Amstrad took the initial design and, building upon the same idea, removed the tape recorder and replaced it with a disc drive, using the same hardware sold as the [[DDI-1]] add-on for 464 owners. The result: the CPC664. Sporting a less colourful and easier-to-type-on keyboard, the CPC664 appealed as a more serious machine and proved a success, especially due to its quite fast 3&amp;quot;, 180KB/side drive.&lt;br /&gt;
&lt;br /&gt;
Never the less, the 664 did have a very short life and was soon replaced by the 6128 (according to [[Amstrad Action]], Issue 1, Oct 1985, page [[:File:Amstrad Action001 08.jpg|8]], the 664 was produced only from May until August 1985).&lt;br /&gt;
&lt;br /&gt;
* ''[http://www.gondolin.org.uk/hchof/review.php?id=29&amp;amp;mcid=27 Your Computer (June 1985) review of the CPC664]''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The 6128 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Amstrad CPC6128.jpg|Amstrad CPC 6128&lt;br /&gt;
File:Amstrad CPC 6128 white.jpg|Amstrad CPC 6128 with white sticker&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Shortly afterwards, Amstrad launched the CPC6128 for the American market only, through its distributor [[Indescomp]]. The new machine sported 128k of memory and a still more sober appearance, but was otherwise nearly identical to the 664. The height of the case was greatly reduced, and the cursor keys were arranged more comfortably, both making the keyboard more ergonomically than the 464/664. Internally, the keyboard consists of two foils, although such membrane foils are relative fragile, they were more robust and reliable than the single foil used in the 664.&lt;br /&gt;
&lt;br /&gt;
Despite initial denials, the machine was launched in Europe shortly afterwards, replacing the 664 for the same price - a situation which understandably irritated some of those who had recently purchased 664s. As well as the [[CP/M]] 2.2 and [[DR Logo]] that had shipped with the DDI-1 and the CPC664, the 6128 came bundled with CP/M Plus (with the GSX graphics extension) making it an appealing all-round computer at a low price. Though the 128KB of memory could not be accessed all at once from BASIC (due to limitations of the [[Z80]]), the upper 64KB could be used readily from machine code courtesy of an upgraded [[Gate Array]]. A bundled program, [[Bankman]], provided some access from BASIC.&lt;br /&gt;
&lt;br /&gt;
The presence of this extra memory and the clever design of Amstrad's CP/M Plus implementation allowed for a TPA (Transient Program Area) of 61KB, more than enough to run all CP/M software.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Accessories ===&lt;br /&gt;
&lt;br /&gt;
Amstrad pushed the all-in-one package concept even further by selling unusual accessories to go along with their computer. Most notably, they proposed:&lt;br /&gt;
* A [[Amstrad CT-1 Radio/Alarm-Clock|clock/radio/alarm module]]&lt;br /&gt;
* A [[MP-3|TV tuner]] to transform the Amstrad CPC into a TV&lt;br /&gt;
* A [[CS-10 Computer Desk|computer desk]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Amstrad CPC accessories.jpg|200px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ANT (Arnold Number Two) prototype ==&lt;br /&gt;
&lt;br /&gt;
At the same time, Amstrad was designing the immensely successful [[PCW]] word-processor series, also with software by [[Locomotive Software|Locomotive]] and featuring an all-in-one Z80-based design.&lt;br /&gt;
&lt;br /&gt;
A shared architecture was developed that would encompass both the PCW and a new, upgraded CPC - codenamed [[ANT]], or Arnold Number Two. It shared many features with the PCW, such as its larger memory and its exceptionally elegant screen-handling hardware, but boasted colour and sound, and retained CPC compatibility. The aim was to see off the Atari ST and Commodore Amiga, next-generation games machines already on the horizon.&lt;br /&gt;
&lt;br /&gt;
A few of the PCW's design features which don't appear to make any sense on their own stem from this shared ancestry. But the project was dropped at a fairly early stage, and the CPC Classic lived on before eventually succumbing to the Plus. Only one prototype board is believed to survive, in the possession of ex-Locomotive Software engineer [[Richard Clayton]].&lt;br /&gt;
&lt;br /&gt;
&amp;quot;''We did an Amstrad machine basically a [[PCW]] with hi-res colour and sound synth, called ANT (Arnold Number Two) but it never went anywhere as production. It was really nice, but by then [[Amiga]] did everything we wanted to do, 8-bit was meh, and [[Amstrad PC|PCs]] were more important.''&amp;quot; – Vik Olliver [https://x.com/VikOlliver/status/1191156134876311554 Source]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The Plus series ==&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
cpc6128plus.jpg|Amstrad [[Plus|6128 Plus]] with colour monitor&lt;br /&gt;
Amstrad 464 Plus.jpg|Amstrad [[Plus|464 Plus]]&lt;br /&gt;
File:Amstrad-plus-ad.jpg|English advertisement&lt;br /&gt;
File:Amstrad-plus-french-ad.jpg|French advertisement&lt;br /&gt;
File:Amstrad-plus-spanish-ad.jpg|Spanish advertisement&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
The last models in the Amstrad CPC range were the [[Plus|Amstrad 464 Plus]] and [[Plus|Amstrad 6128 Plus]], launched together in 1990. The CPC name is said to have been dropped because of a legal dispute with a French firm, though it is also likely that &amp;quot;CPC 6128 Plus&amp;quot; was considered too unwieldy a name and one redolent of the machine's mid-80s heritage. However, the &amp;quot;CPC Plus&amp;quot; branding was used by Amstrad España in their advertising material.&lt;br /&gt;
&lt;br /&gt;
The Plus series were quite (but not 100%) compatible with the original CPC computers. The compatibility issues came mostly from:&lt;br /&gt;
* The emulated [[8255|PPI]] chip, making the keyboard unresponsive&lt;br /&gt;
* The emulated [[CRTC]], breaking CPC demos&lt;br /&gt;
* Unlike the original model, the 464 Plus lacks a tape counter for tracking cassette positions. It also omits the distinctive loading sounds that were once audible through the speaker during tape operations on the original CPC 464&lt;br /&gt;
* Unlike the original model, the 464 Plus features the BASIC 1.1 ROM&lt;br /&gt;
* The new AMSDOS ROM, breaking ROM access to the floppy drive&lt;br /&gt;
&lt;br /&gt;
ROM issues can be easily fixed by using a [[Plus System Cartridge|Downgrade System cartridge]].&lt;br /&gt;
&lt;br /&gt;
The Plus series incorporated a list of [[ASIC|new features]], like a cartridge port for instant program loading, DMA for the [[AY]] soundchip, enhanced hardware scrolling, programmable interrupts, 16 hardware zoomable sprites (not vectorized) with an independent palette of 15 colours, and a choice of 4096 colours all in a new, sleek case which mimicked the keyboard-computer design that was ''en vogue'' in the 16-bit market (ST, Amiga etc). &lt;br /&gt;
&lt;br /&gt;
Described as a solution of 'too little, too late', this was Amstrad's effort to prolong the life of its 8-bit computer series in the face of fierce competition from new 16-bit machines (notably, the [[Atari ST]] and the Commodore [[Amiga]]).&lt;br /&gt;
&lt;br /&gt;
While the Amstrad Plus computers were one of the most advanced 8-bit computers ever built for the mass market, they died an early death as the 16-bit era was in full swing. And 32-bit computers were already appearing. The year before, Amstrad launched its first 32-bit PC, the [[Amstrad PC|PC2386]].&lt;br /&gt;
&lt;br /&gt;
Also, the [[Apple II|Apple IIGS]] and the [[MSX|MSX Turbo-R]] proved that 8-bit machines could be upgraded to 16-bit. It would have been possible with the CPC if Amstrad had decided to do so.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The GX4000 ==&lt;br /&gt;
[[Image:Amstrad-GX4000-Console.jpg|right|thumb|300px|The Amstrad GX4000]]&lt;br /&gt;
By 1990 Amstrad had realised that the home market was heading towards the 16-bit machines, on one hand, and towards the new generation of game consoles like the Sega Master System or the Nintendo Entertainment System, on the other. Therefore, just as they created the 464 Plus and 6128 Plus to compete against the ST and the Amiga, they also created a stripped-down variant called the [[Plus|GX4000]].&lt;br /&gt;
&lt;br /&gt;
The GX4000 was, in essence, an Amstrad 464+ motherboard in a new case, with no keyboard, cassette deck nor disc drive, and with most extension ports gone - save for the cartridge port and two joypads.&lt;br /&gt;
&lt;br /&gt;
The GX4000 was officially announced along with the 464 plus and 6128 plus computers at the CNIT Centre in Paris in August 1990.&lt;br /&gt;
&lt;br /&gt;
The system was launched a month later in four countries: Britain, France, Spain, and Italy. It was priced at £99.99 in Britain and 990F in France; software was priced at £25 for most games. [https://en.wikipedia.org/wiki/Amstrad_GX4000 Source]&lt;br /&gt;
&lt;br /&gt;
As expected, the GX4000 was a flop that could not break the stranglehold that Sega and Nintendo had on the market at the time. The Nintendo NES was a best seller and Sega released the Mega Drive in November 1990 in Europe.&lt;br /&gt;
&lt;br /&gt;
As a result, the GX4000 was soon to be found selling at ridiculously low prices - as little as £19.99 in the UK - as dealers tried to offload their stock. It was a shame, because if Amstrad had realised the market potential and produced this console a few years earlier, it could well have been a success.&lt;br /&gt;
&lt;br /&gt;
As it was, the GX4000 joined the long list of failed attempts to repurpose computers as game consoles, alongside the Atari XEGS, the Commodore 64GS, the Amiga CDTV, the Amiga CD32, the FM Towns Marty and the Apple Pippin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Clones ==&lt;br /&gt;
&lt;br /&gt;
There were two clones of the CPC, neither of which were 100% compatible with the CPC.&lt;br /&gt;
&lt;br /&gt;
* [[KC Compact]]: An East German clone. The Gate-Array was replaced with TTL logic which performed a similar function. There are some hardware differences, especially in the interrupts. This clone is much closer to the CPC in terms of functionality.&lt;br /&gt;
&lt;br /&gt;
* [[Aleste 520EX]]: This clone also had some MSX like hardware which made it possible to run some modified MSX titles. This clone also ran faster than the original CPC.&lt;br /&gt;
&lt;br /&gt;
* [https://hackaday.io/project/188511-xialeste XiAleste]: This expanded clone is the successor of the Aleste. Currently under development.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Outro ==&lt;br /&gt;
&lt;br /&gt;
All in all, the CPC series met with great success. Although they would never achieve the universal status of the [[Commodore 64]] or the humble [[ZX Spectrum]] series, the CPCs managed to sell very well.&lt;br /&gt;
&lt;br /&gt;
France was the sole market where the CPCs achieved the top position for years. Still, the CPCs were very popular in the UK, Spain, Greece, Germany and Australia, to name a few countries.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*[[CPC timeline]]&lt;br /&gt;
*[https://youtu.be/MTsCiZ3ZBD4 Entrevista a ROLAND PERRY] by [[Las Cosas Retro]]&lt;br /&gt;
*[https://youtu.be/bD_gBz2fwDM Amstrad CPC - Top 150 games (1984-2020)] Top 50 CPC games from [https://youtu.be/F3pVjc4tmCU 1984] [https://youtu.be/8w7Rx1dOmPs 1985] [https://youtu.be/c18muwWbVZc 1986] [https://youtu.be/NpL1uq0IAz4 1987] [https://youtu.be/0mnR3vTJXw8 1988]&lt;br /&gt;
*[https://youtu.be/ZOOwlWwlltM All Amstrad CPC games] from [https://youtu.be/Smpv8v1OP5A 1984] [https://youtu.be/_JJjHXNGEyY 1985] [https://youtu.be/5XRyZIW4c9s 1986] [https://youtu.be/V7yRLp-Xvfs 1987] [https://youtu.be/afn70FPDRoQ 1988] [https://youtu.be/tpQ1PhUWnYw 1989] [https://youtu.be/8_JvuGdumC4 1990] [https://youtu.be/yJsm1DeF7Pk 1991] [https://youtu.be/LQmDzkNs0P4 1992]&lt;br /&gt;
*[https://youtu.be/hBlHUWRlmug Amstrad CPC - Best of Music with Video (3 hours)]&lt;br /&gt;
*[https://youtu.be/BvramomEtSM Amstrad TV adverts] [https://youtu.be/n7U6E7bDFlc Amstrad French TV adverts]&lt;br /&gt;
*[https://youtu.be/8o1OTwFv7WQ Part 1] [https://youtu.be/f1KS7nSKnxE Part 2] Amstrad CPC Story by [[Nostalgia Nerd]]&lt;br /&gt;
*[https://youtu.be/fB9M6RMtMUE Partie 1] [https://youtu.be/F0CzNJjjkO4 Partie 2] [https://youtu.be/la5IhBbrqPc Partie 3] [https://youtu.be/uUR5oKBxRzA Partie 4] Histoire de l'Amstrad CPC by [[Génération Micros]]&lt;br /&gt;
*[https://youtu.be/mesZ1zbA654 Amstrad : La gamme CPC (1984/1985)] [https://youtu.be/Ijuqsz69Euk Amstrad 6128 Plus] by [[Rodrik Studio]]&lt;br /&gt;
*[https://www.youtube.com/watch?v=O0vvdDx4egk&amp;amp;list=PLIX9fyYxV0k9phQiqATmOe2OZJyeMuY0a C64 vs Amstrad CPC] [https://www.youtube.com/watch?v=JfZ77Ltkols&amp;amp;list=PLIX9fyYxV0k_VOgMOIxseJH1c91KKcxKB ZX Spectrum vs Amstrad CPC]&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=CPC&amp;diff=126270</id>
		<title>CPC</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=CPC&amp;diff=126270"/>
				<updated>2025-05-24T06:37:54Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: /* The GX4000 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:CPC History| ]]&lt;br /&gt;
[[Category:Hardware| ]][[Category:CPC Internal Components| ]][[Category:Amstrad Products| ]][[Category:CP/M]]&lt;br /&gt;
The Real meaning of this Wiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The Amstrad CPC (Colour Personal Computer) series was a series of 8-bit home / personal computers that were manufactured by the British company [[Amstrad]] between 1984 (launch of the CPC464: 21st June 1984) and 1993 (?). The CPC, like most contemporary home micros, had an integrated computer-in-a-keyboard design. Also incorporated in the keyboard was the [[Datacorder|tape recorder]] or [[Disk drives|disc drive]].&lt;br /&gt;
&lt;br /&gt;
In general what Amstrad aimed for was to offer a completely integrated solution at a low price. Just as with Amstrad's stereo towers before, [[Alan M. Sugar]] wanted to provide a solution with as few separate components as possible, with as few cables as possible and at as low a price as possible. A truck driver, unfamiliar with computers, was often cited as the CPC's target market.&lt;br /&gt;
&lt;br /&gt;
As a result, Amstrad chose ready off-the-shelf components and used low-cost production methods in an effort to bring manufacturing costs down. They also included a monitor to connect the computer to - a move which, while raising the price, was designed to free the home TV from little brats hogging it for a dose of Ikari Warriors while Eastenders was on. This concept appealed to users and proved to be a success.&lt;br /&gt;
&lt;br /&gt;
However, at least in the UK, it was initially possible to buy the Amstrad CPC with a modulator instead of an Amstrad monitor:&lt;br /&gt;
&lt;br /&gt;
[[File:CPC6128 with modulator - UK ads.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
The combination of low cost, integrated design, good manufacturing quality and some impressive features like CP/M and an 80-column display mode (lacking in much of the competition, particularly the Sinclair [[ZX Spectrum]] and [[Commodore 64]]) proved to be a success both with home users and small businesses, and Amstrad went on to sell millions of CPCs.&lt;br /&gt;
&lt;br /&gt;
Because of its use of the Z80, which was also used in the Sinclair models, some of the earliest games found on the CPC were fairly direct ports of the Spectrum versions which failed to take advantage of the CPC's extra capabilities. The amount of Spectrum ports has often been overstated by those who wish to knock the machine, and in fact formed a comparatively small number of largely unsuccessful games. Nonetheless, those that were published left users and reviewers with a bad taste in their mouth.&lt;br /&gt;
&lt;br /&gt;
At its core, the CPC combined a standard 4MHz [[Z80|Z80A]] with off-the-shelf components and a custom [[Gate Array]] chip. The [[firmware]] comprised two 16k ROMs (combined onto one 32k chip): one was effectively the operating system, the other the fast and flexible [[Locomotive BASIC]] interpreter. All machines except the original 464 would also include a further 16k ROM (on a separate chip): the AMSDOS disc operating system.&lt;br /&gt;
&lt;br /&gt;
Besides AMSDOS, CPCs equipped with floppy drives also shipped with [[CP/M]], allowing access to its vast library of available software.&lt;br /&gt;
&lt;br /&gt;
In all, there were three 'classic' models, the CPC [[464]], [[664]] and [[6128]]; plus two short-lived later [[Plus|advanced]] models, the 464 Plus and the 6128 Plus. A final iteration was the [[Plus|GX4000]] games machine based on the CPC+ computers.&lt;br /&gt;
&lt;br /&gt;
3 million units sold.&lt;br /&gt;
&lt;br /&gt;
''See also: [[CPC Prototypes]].''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Price positioning ==&lt;br /&gt;
&lt;br /&gt;
At launch, the Amstrad CPC 464 was one of the most expensive 8bit computer on the market, as the consumer was forced to buy it with its tape recorder and monitor.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Machine&lt;br /&gt;
! Manufacturer&lt;br /&gt;
! Price (Francs)&lt;br /&gt;
! Source: [https://www.abandonware-magazines.org/affiche_mag.php?mag=41&amp;amp;page=1 Micro 7 #21 (11/1984)]&lt;br /&gt;
|-&lt;br /&gt;
| [[Atari|800XL (PAL)]]&lt;br /&gt;
| Atari&lt;br /&gt;
| 2199&lt;br /&gt;
| advertisement Atari&lt;br /&gt;
|-&lt;br /&gt;
| [[Atari|800XL (SCART)]]&lt;br /&gt;
| Atari&lt;br /&gt;
| 2499&lt;br /&gt;
| advertisement Atari&lt;br /&gt;
|-&lt;br /&gt;
| [[Matra Alice|Alice]]&lt;br /&gt;
| Matra&lt;br /&gt;
| 1199&lt;br /&gt;
| advertisement Alice&lt;br /&gt;
|-&lt;br /&gt;
| [[Matra Alice|Alice 32 in suitcase]]&lt;br /&gt;
| Matra&lt;br /&gt;
| 2495&lt;br /&gt;
| advertisement Alice&lt;br /&gt;
|-&lt;br /&gt;
| [[Oric-1/Atmos|Atmos]]&lt;br /&gt;
| Oric&lt;br /&gt;
| 2350&lt;br /&gt;
| advertisement Vismo&lt;br /&gt;
|-&lt;br /&gt;
| [[BBC Micro]]&lt;br /&gt;
| Acorn&lt;br /&gt;
| 5990&lt;br /&gt;
| advertisement JCS&lt;br /&gt;
|-&lt;br /&gt;
| [[C64|C64 (PAL)]]&lt;br /&gt;
| Commodore&lt;br /&gt;
| 2990&lt;br /&gt;
| advertisement Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| [[C64|C64 (SCART)]]&lt;br /&gt;
| Commodore&lt;br /&gt;
| 3990&lt;br /&gt;
| ads Ordividuel (C64 modified by Procep)&lt;br /&gt;
|-&lt;br /&gt;
| '''CPC 464 with colour monitor'''&lt;br /&gt;
| Amstrad&lt;br /&gt;
| 4490&lt;br /&gt;
| advertisements Vismo, JCS and Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| '''CPC 464 with monochrome monitor'''&lt;br /&gt;
| Amstrad&lt;br /&gt;
| 2990&lt;br /&gt;
| advertisements Vismo, JCS and Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| [[Exelvision EXL100|Exl 100]]&lt;br /&gt;
| Exelvision&lt;br /&gt;
| 3190&lt;br /&gt;
| advertisement JCS&lt;br /&gt;
|-&lt;br /&gt;
| Laser 200&lt;br /&gt;
| V-tech&lt;br /&gt;
| 1280&lt;br /&gt;
| advertisement Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| Laser 310&lt;br /&gt;
| V-tech&lt;br /&gt;
| 1490&lt;br /&gt;
| advertisement Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| Macintosh 512KB (all-in-one)&lt;br /&gt;
| Apple&lt;br /&gt;
| 29995&lt;br /&gt;
| article&lt;br /&gt;
|-&lt;br /&gt;
| [[Thomson computers|MO5]]&lt;br /&gt;
| Thomson&lt;br /&gt;
| 2450&lt;br /&gt;
| advertisement Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| [[MSX|MSX PHC-28]]&lt;br /&gt;
| Sanyo&lt;br /&gt;
| 2990&lt;br /&gt;
| advertisement Vismo&lt;br /&gt;
|-&lt;br /&gt;
| [[MSX|MSX Prism]]&lt;br /&gt;
| Goldstar&lt;br /&gt;
| 2950&lt;br /&gt;
| article&lt;br /&gt;
|-&lt;br /&gt;
| PC 128KB (all-in-one)&lt;br /&gt;
| Goupil&lt;br /&gt;
| 24200&lt;br /&gt;
| article&lt;br /&gt;
|-&lt;br /&gt;
| [[Thomson computers|TO7/70]]&lt;br /&gt;
| Thomson&lt;br /&gt;
| 3590&lt;br /&gt;
| advertisement Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| [[VG 5000]]&lt;br /&gt;
| Philips&lt;br /&gt;
| 1590&lt;br /&gt;
| article&lt;br /&gt;
|-&lt;br /&gt;
| [[ZX Spectrum|ZX Spectrum 48KB]]&lt;br /&gt;
| Sinclair&lt;br /&gt;
| 1990&lt;br /&gt;
| advertisement Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| [[ZX80/81|ZX81]]&lt;br /&gt;
| Sinclair&lt;br /&gt;
| 580&lt;br /&gt;
| advertisements Vismo and Ordividuel&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
But all things considered, it was an excellent value, as both a tape recorder and a monitor were expensive items. And most buyers didn’t have spare ones to reuse anyway as it was their first computer.&lt;br /&gt;
&lt;br /&gt;
A cheap Zenith zvm122 12inch monochrome monitor cost 990 Francs, a Novex Mc1414 14inch colour monitor cost 2800 Francs, a tape recorder for the C64 cost 450 Francs, a floppy drive for the C64 cost 3500 Francs. Source: Micro 7 #21 - 11/1984&lt;br /&gt;
&lt;br /&gt;
Note: In France we had an additional problem in that our TVs were [https://en.wikipedia.org/wiki/SECAM SECAM] only in the 80s. A monitor was required for foreign computers like the C64 PAL or the ZX Spectrum that didn't output RGB. TVs only became PAL/SECAM compatible in the 90s.&lt;br /&gt;
&lt;br /&gt;
The minimum wage in France in 11/1984 was at 4116 Francs per month for a full-time job. Source: http://www.cda-strasbourg.org/smic.htm&lt;br /&gt;
&lt;br /&gt;
In June 1985, the CPC 664 was launched at 4490 Francs for monochrome and 5990 Francs for colour. Source: Micro 7 #28 - 06/1985&lt;br /&gt;
&lt;br /&gt;
The evolution of Amstrad CPC prices over the years is described in that article: [https://www.cpc-power.com/cpcarchives/index.php?page=articles&amp;amp;num=90 L'histoire des CPC selon GENERAL]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Late to the market ==&lt;br /&gt;
&lt;br /&gt;
Amstrad jumped into the home computer market in June 1984, one year after the [[MSX]] Standard of June 1983 which was thought at the time to be the end of the &amp;quot;cowboy&amp;quot; era of disparate and incompatible 8-bit computers.&lt;br /&gt;
&lt;br /&gt;
It was just in time to shake things up with its unique all-in-one concept for the home market. &lt;br /&gt;
&lt;br /&gt;
While earlier computers like the Tandy TRS-80 Model III, Commodore PET, Commodore Educator 64, Apple Lisa and Apple Macintosh had pioneered the all-in-one design, they were primarily aimed at businesses and education.&lt;br /&gt;
&lt;br /&gt;
By the end of 1985, all the big names were already established in both 8-bit and the newer 16-bit systems, leaving no room for newcomers.&lt;br /&gt;
&lt;br /&gt;
From there, it turned into a survival game, with the weaker players getting pushed out. After that, no new companies managed to break into the market, except for PC clones.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The CPC series ==&lt;br /&gt;
&lt;br /&gt;
=== The 464 ===&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
464.png|Amstrad CPC [[464]] with colour monitor&lt;br /&gt;
CPC464 pre-production sample.jpg|Pre-production sample made by Orion Japan for Amstrad UK&lt;br /&gt;
Schneider cpc 464 ddi1.jpg|Schneider CPC [[464]] with monochrome monitor and [[Amstrad External Disk Drive|DDI-1]] extension&lt;br /&gt;
Amstrad CPC464 grey keys.jpg|Amstrad CPC464 with grey keys&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:CPC464 english ad.jpg|English ad&lt;br /&gt;
File:CPC464 australian ad.jpg| Australian ad&lt;br /&gt;
File:CPC464 french ad.jpg|French ad&lt;br /&gt;
File:CPC464 spanish ad.jpg|Spanish ad&lt;br /&gt;
File:CPC464 danish ad.jpg|Danish ad&lt;br /&gt;
File:CPC464 greek ad.jpg|Greek ad&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
First came the CPC464, the father of the CPC family, released on the 21st June 1984 (with production ceasing in 1990). This model used an integrated tape recorder and offered 64KB of RAM.&lt;br /&gt;
&lt;br /&gt;
It sold around two million units in Europe and, technology-wise, was more impressive than the [[ZX Spectrum]] and on a similar level with the [[Commodore 64]]. The firmware of the CPC was also leagues ahead of the C64.&lt;br /&gt;
&lt;br /&gt;
One notable exception was the sound chip: while the C64 employed the splendid custom [[SID]] chip, Amstrad opted for a generic sound chip - [[AY|AY-3-8912]] - with unremarkable features. It is no surprise though as there was not much choice in off-the-shelf sound chips in early 1984.&lt;br /&gt;
&lt;br /&gt;
At its core was a [[Z80]] clocked at 4MHz - though screen display considerations, and the particular design of the [[Gate Array]] limited this to an effective 3.3MHz in practice - while the display was managed by the [[CRTC|6845 CRTC]] along with a gate-array chip.&lt;br /&gt;
&lt;br /&gt;
The CPC464 sported a palette of 27 colours and [[Video modes|three distinct resolutions]]: 160x200x16 colours (mode 0), 320x200x4 colours (mode 1) and 640x200x2 colours (mode 2, 80-column mode).&lt;br /&gt;
&lt;br /&gt;
Before the launch of the CPC 464, 45 pre-production hand built machines with a grey case had been issued to software houses to get their games ready on time.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The 472 ===&lt;br /&gt;
[[image:CPC_472_es.jpg|right|thumb|300px|Spanish Amstrad CPC 472]]&lt;br /&gt;
The [[472|CPC 472]] was a Spanish version of the CPC 464 with an additional, non-functional 8KB RAM. The reason was that Spain charged an import tax on home computers with 64K or less RAM, the fake &amp;quot;72K&amp;quot; CPC version bypassed that tax. The tax was invented in September 1985, and was dropped a few months later (when Spain joined the EEC). Also in 1985, but independtly of that tax, Spain dictated that computers must have spanish keyboards, which resulted in two CPC 472 versions: Older models with english keys, newer ones with spanish keys. Another oddity is that the older CPC472 had BASIC 1.1 while the newer CPC472 had BASIC 1.0. The CPC 472 is very rare.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;We had basically stuck two fingers in the air to the Spanish government, who were trying to screw our business, and there wasn’t much they could do about it&amp;quot; — Alan Sugar&lt;br /&gt;
&lt;br /&gt;
Read the full story behind the CPC 472 directly from the horse's mouth: https://amstrad.com/product/cpc472/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The 664 ===&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Amstrad-cpc-664.png|Amstrad CPC 664&lt;br /&gt;
Schneider cpc 664.jpg|Schneider CPC 664&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In June 1985, Amstrad took the initial design and, building upon the same idea, removed the tape recorder and replaced it with a disc drive, using the same hardware sold as the [[DDI-1]] add-on for 464 owners. The result: the CPC664. Sporting a less colourful and easier-to-type-on keyboard, the CPC664 appealed as a more serious machine and proved a success, especially due to its quite fast 3&amp;quot;, 180KB/side drive.&lt;br /&gt;
&lt;br /&gt;
Never the less, the 664 did have a very short life and was soon replaced by the 6128 (according to [[Amstrad Action]], Issue 1, Oct 1985, page [[:File:Amstrad Action001 08.jpg|8]], the 664 was produced only from May until August 1985).&lt;br /&gt;
&lt;br /&gt;
* ''[http://www.gondolin.org.uk/hchof/review.php?id=29&amp;amp;mcid=27 Your Computer (June 1985) review of the CPC664]''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The 6128 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Amstrad CPC6128.jpg|Amstrad CPC 6128&lt;br /&gt;
File:Amstrad CPC 6128 white.jpg|Amstrad CPC 6128 with white sticker&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Shortly afterwards, Amstrad launched the CPC6128 for the American market only, through its distributor [[Indescomp]]. The new machine sported 128k of memory and a still more sober appearance, but was otherwise nearly identical to the 664. The height of the case was greatly reduced, and the cursor keys were arranged more comfortably, both making the keyboard more ergonomically than the 464/664. Internally, the keyboard consists of two foils, although such membrane foils are relative fragile, they were more robust and reliable than the single foil used in the 664.&lt;br /&gt;
&lt;br /&gt;
Despite initial denials, the machine was launched in Europe shortly afterwards, replacing the 664 for the same price - a situation which understandably irritated some of those who had recently purchased 664s. As well as the [[CP/M]] 2.2 and [[DR Logo]] that had shipped with the DDI-1 and the CPC664, the 6128 came bundled with CP/M Plus (with the GSX graphics extension) making it an appealing all-round computer at a low price. Though the 128KB of memory could not be accessed all at once from BASIC (due to limitations of the [[Z80]]), the upper 64KB could be used readily from machine code courtesy of an upgraded [[Gate Array]]. A bundled program, [[Bankman]], provided some access from BASIC.&lt;br /&gt;
&lt;br /&gt;
The presence of this extra memory and the clever design of Amstrad's CP/M Plus implementation allowed for a TPA (Transient Program Area) of 61KB, more than enough to run all CP/M software.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Accessories ===&lt;br /&gt;
&lt;br /&gt;
Amstrad pushed the all-in-one package concept even further by selling unusual accessories to go along with their computer. Most notably, they proposed:&lt;br /&gt;
* A [[Amstrad CT-1 Radio/Alarm-Clock|clock/radio/alarm module]]&lt;br /&gt;
* A [[MP-3|TV tuner]] to transform the Amstrad CPC into a TV&lt;br /&gt;
* A [[CS-10 Computer Desk|computer desk]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Amstrad CPC accessories.jpg|200px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ANT (Arnold Number Two) prototype ==&lt;br /&gt;
&lt;br /&gt;
At the same time, Amstrad was designing the immensely successful [[PCW]] word-processor series, also with software by [[Locomotive Software|Locomotive]] and featuring an all-in-one Z80-based design.&lt;br /&gt;
&lt;br /&gt;
A shared architecture was developed that would encompass both the PCW and a new, upgraded CPC - codenamed [[ANT]], or Arnold Number Two. It shared many features with the PCW, such as its larger memory and its exceptionally elegant screen-handling hardware, but boasted colour and sound, and retained CPC compatibility. The aim was to see off the Atari ST and Commodore Amiga, next-generation games machines already on the horizon.&lt;br /&gt;
&lt;br /&gt;
A few of the PCW's design features which don't appear to make any sense on their own stem from this shared ancestry. But the project was dropped at a fairly early stage, and the CPC Classic lived on before eventually succumbing to the Plus. Only one prototype board is believed to survive, in the possession of ex-Locomotive Software engineer [[Richard Clayton]].&lt;br /&gt;
&lt;br /&gt;
&amp;quot;''We did an Amstrad machine basically a [[PCW]] with hi-res colour and sound synth, called ANT (Arnold Number Two) but it never went anywhere as production. It was really nice, but by then [[Amiga]] did everything we wanted to do, 8-bit was meh, and [[Amstrad PC|PCs]] were more important.''&amp;quot; – Vik Olliver [https://x.com/VikOlliver/status/1191156134876311554 Source]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The Plus series ==&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
cpc6128plus.jpg|Amstrad [[Plus|6128 Plus]] with colour monitor&lt;br /&gt;
Amstrad 464 Plus.jpg|Amstrad [[Plus|464 Plus]]&lt;br /&gt;
File:Amstrad-plus-ad.jpg|English advertisement&lt;br /&gt;
File:Amstrad-plus-french-ad.jpg|French advertisement&lt;br /&gt;
File:Amstrad-plus-spanish-ad.jpg|Spanish advertisement&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
The last models in the Amstrad CPC range were the [[Plus|Amstrad 464 Plus]] and [[Plus|Amstrad 6128 Plus]], launched together in 1990. The CPC name is said to have been dropped because of a legal dispute with a French firm, though it is also likely that &amp;quot;CPC 6128 Plus&amp;quot; was considered too unwieldy a name and one redolent of the machine's mid-80s heritage. However, the &amp;quot;CPC Plus&amp;quot; branding was used by Amstrad España in their advertising material.&lt;br /&gt;
&lt;br /&gt;
The Plus series were quite (but not 100%) compatible with the original CPC computers. The compatibility issues came mostly from:&lt;br /&gt;
* The emulated [[8255|PPI]] chip, making the keyboard unresponsive&lt;br /&gt;
* The emulated [[CRTC]], breaking CPC demos&lt;br /&gt;
* Unlike the original model, the 464 Plus lacks a tape counter for tracking cassette positions. It also omits the distinctive loading sounds that were once audible through the speaker during tape operations on the original CPC 464&lt;br /&gt;
* Unlike the original model, the 464 Plus features the BASIC 1.1 ROM&lt;br /&gt;
* The new AMSDOS ROM, breaking ROM access to the floppy drive&lt;br /&gt;
&lt;br /&gt;
ROM issues can be easily fixed by using a [[Plus System Cartridge|Downgrade System cartridge]].&lt;br /&gt;
&lt;br /&gt;
The Plus series incorporated a list of [[ASIC|new features]], like a cartridge port for instant program loading, DMA for the [[AY]] soundchip, enhanced hardware scrolling, programmable interrupts, 16 hardware zoomable sprites (not vectorized) with an independent palette of 15 colours, and a choice of 4096 colours all in a new, sleek case which mimicked the keyboard-computer design that was ''en vogue'' in the 16-bit market (ST, Amiga etc). &lt;br /&gt;
&lt;br /&gt;
Described as a solution of 'too little, too late', this was Amstrad's effort to prolong the life of its 8-bit computer series in the face of fierce competition from new 16-bit machines (notably, the [[Atari ST]] and the Commodore [[Amiga]]).&lt;br /&gt;
&lt;br /&gt;
While the Amstrad Plus computers were one of the most advanced 8-bit computers ever built for the mass market, they died an early death as the 16-bit era was in full swing. And 32-bit computers were already appearing. The year before, Amstrad launched its first 32-bit PC, the [[Amstrad PC|PC2386]].&lt;br /&gt;
&lt;br /&gt;
Also, the [[Apple II|Apple IIGS]] and the [[MSX|MSX Turbo-R]] proved that 8-bit machines could be upgraded to 16-bit. It would have been possible with the CPC if Amstrad had decided to do so.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The GX4000 ==&lt;br /&gt;
[[Image:Amstrad-GX4000-Console.jpg|right|thumb|300px|The Amstrad GX4000]]&lt;br /&gt;
By 1990 Amstrad had realised that the home market was heading towards the 16-bit machines, on one hand, and towards the new generation of game consoles like the Sega Master System or the Nintendo Entertainment System, on the other. Therefore, just as they created the 464 Plus and 6128 Plus to compete against the ST and the Amiga, they also created a stripped-down variant called the [[Plus|GX4000]].&lt;br /&gt;
&lt;br /&gt;
The GX4000 was, in essence, an Amstrad 464+ motherboard in a new case, with no keyboard, cassette deck nor disc drive, and with most extension ports gone - save for the cartridge port and two joypads.&lt;br /&gt;
&lt;br /&gt;
The GX4000 was officially announced along with the 464 plus and 6128 plus computers at the CNIT Centre in Paris in August 1990.&lt;br /&gt;
&lt;br /&gt;
The system was launched a month later in four countries: Britain, France, Spain, and Italy. It was priced at £99.99 in Britain and 990F in France; software was priced at £25 for most games. [https://en.wikipedia.org/wiki/Amstrad_GX4000 Source]&lt;br /&gt;
&lt;br /&gt;
As expected, the GX4000 was a flop that could not break the stranglehold that Sega and Nintendo had on the market at the time. The Nintendo NES was a best seller and Sega released the Mega Drive in November 1990 in Europe.&lt;br /&gt;
&lt;br /&gt;
As a result, the GX4000 was soon to be found selling at ridiculously low prices - as little as £19.99 in the UK - as dealers tried to offload their stock. It was a shame, because if Amstrad had realised the market potential and produced this console a few years earlier, it could well have been a success.&lt;br /&gt;
&lt;br /&gt;
As it was, the GX4000 joined the long list of failed attempts to repurpose computers as game consoles, alongside the Atari XEGS, the Commodore 64GS, the Amiga CDTV, the Amiga CD32, the FM Towns Marty and the Apple Pippin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Clones ==&lt;br /&gt;
&lt;br /&gt;
There were two clones of the CPC, neither of which were 100% compatible with the CPC.&lt;br /&gt;
&lt;br /&gt;
* [[KC Compact]]: An East German clone. The Gate-Array was replaced with TTL logic which performed a similar function. There are some hardware differences, especially in the interrupts. This clone is much closer to the CPC in terms of functionality.&lt;br /&gt;
&lt;br /&gt;
* [[Aleste 520EX]]: This clone also had some MSX like hardware which made it possible to run some modified MSX titles. This clone also ran faster than the original CPC.&lt;br /&gt;
&lt;br /&gt;
* [https://hackaday.io/project/188511-xialeste XiAleste]: This expanded clone is the successor of the Aleste. Currently under development.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Outro ==&lt;br /&gt;
&lt;br /&gt;
All in all, the CPC series met with great success. Although they would never achieve the universal status of the [[Commodore 64]] or the humble [[ZX Spectrum]] series, the CPCs managed to sell very well.&lt;br /&gt;
&lt;br /&gt;
France was the sole market where the CPCs achieved the top position for years. Still, the CPCs were very popular in the UK, Spain, Greece, Germany and Australia, to name a few countries.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*[[CPC timeline]]&lt;br /&gt;
*[https://youtu.be/MTsCiZ3ZBD4 Entrevista a ROLAND PERRY] by [[Las Cosas Retro]]&lt;br /&gt;
*[https://youtu.be/bD_gBz2fwDM Amstrad CPC - Top 150 games (1984-2020)] Top 50 CPC games from [https://youtu.be/F3pVjc4tmCU 1984] [https://youtu.be/8w7Rx1dOmPs 1985] [https://youtu.be/c18muwWbVZc 1986] [https://youtu.be/NpL1uq0IAz4 1987] [https://youtu.be/0mnR3vTJXw8 1988]&lt;br /&gt;
*[https://youtu.be/ZOOwlWwlltM All Amstrad CPC games] from [https://youtu.be/Smpv8v1OP5A 1984] [https://youtu.be/_JJjHXNGEyY 1985] [https://youtu.be/5XRyZIW4c9s 1986] [https://youtu.be/V7yRLp-Xvfs 1987] [https://youtu.be/afn70FPDRoQ 1988] [https://youtu.be/tpQ1PhUWnYw 1989] [https://youtu.be/8_JvuGdumC4 1990] [https://youtu.be/yJsm1DeF7Pk 1991] [https://youtu.be/LQmDzkNs0P4 1992]&lt;br /&gt;
*[https://youtu.be/hBlHUWRlmug Amstrad CPC - Best of Music with Video (3 hours)]&lt;br /&gt;
*[https://youtu.be/BvramomEtSM Amstrad TV adverts] [https://youtu.be/n7U6E7bDFlc Amstrad French TV adverts]&lt;br /&gt;
*[https://youtu.be/8o1OTwFv7WQ Part 1] [https://youtu.be/f1KS7nSKnxE Part 2] Amstrad CPC Story by [[Nostalgia Nerd]]&lt;br /&gt;
*[https://youtu.be/fB9M6RMtMUE Partie 1] [https://youtu.be/F0CzNJjjkO4 Partie 2] [https://youtu.be/la5IhBbrqPc Partie 3] [https://youtu.be/uUR5oKBxRzA Partie 4] Histoire de l'Amstrad CPC by [[Génération Micros]]&lt;br /&gt;
*[https://youtu.be/mesZ1zbA654 Amstrad : La gamme CPC (1984/1985)] [https://youtu.be/Ijuqsz69Euk Amstrad 6128 Plus] by [[Rodrik Studio]]&lt;br /&gt;
*[https://www.youtube.com/watch?v=O0vvdDx4egk&amp;amp;list=PLIX9fyYxV0k9phQiqATmOe2OZJyeMuY0a C64 vs Amstrad CPC] [https://www.youtube.com/watch?v=JfZ77Ltkols&amp;amp;list=PLIX9fyYxV0k_VOgMOIxseJH1c91KKcxKB ZX Spectrum vs Amstrad CPC]&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=CPC&amp;diff=126267</id>
		<title>CPC</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=CPC&amp;diff=126267"/>
				<updated>2025-05-23T20:58:02Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: /* ANT (Arnold Number Two) prototype */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:CPC History| ]]&lt;br /&gt;
[[Category:Hardware| ]][[Category:CPC Internal Components| ]][[Category:Amstrad Products| ]][[Category:CP/M]]&lt;br /&gt;
The Real meaning of this Wiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The Amstrad CPC (Colour Personal Computer) series was a series of 8-bit home / personal computers that were manufactured by the British company [[Amstrad]] between 1984 (launch of the CPC464: 21st June 1984) and 1993 (?). The CPC, like most contemporary home micros, had an integrated computer-in-a-keyboard design. Also incorporated in the keyboard was the [[Datacorder|tape recorder]] or [[Disk drives|disc drive]].&lt;br /&gt;
&lt;br /&gt;
In general what Amstrad aimed for was to offer a completely integrated solution at a low price. Just as with Amstrad's stereo towers before, [[Alan M. Sugar]] wanted to provide a solution with as few separate components as possible, with as few cables as possible and at as low a price as possible. A truck driver, unfamiliar with computers, was often cited as the CPC's target market.&lt;br /&gt;
&lt;br /&gt;
As a result, Amstrad chose ready off-the-shelf components and used low-cost production methods in an effort to bring manufacturing costs down. They also included a monitor to connect the computer to - a move which, while raising the price, was designed to free the home TV from little brats hogging it for a dose of Ikari Warriors while Eastenders was on. This concept appealed to users and proved to be a success.&lt;br /&gt;
&lt;br /&gt;
However, at least in the UK, it was initially possible to buy the Amstrad CPC with a modulator instead of an Amstrad monitor:&lt;br /&gt;
&lt;br /&gt;
[[File:CPC6128 with modulator - UK ads.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
The combination of low cost, integrated design, good manufacturing quality and some impressive features like CP/M and an 80-column display mode (lacking in much of the competition, particularly the Sinclair [[ZX Spectrum]] and [[Commodore 64]]) proved to be a success both with home users and small businesses, and Amstrad went on to sell millions of CPCs.&lt;br /&gt;
&lt;br /&gt;
Because of its use of the Z80, which was also used in the Sinclair models, some of the earliest games found on the CPC were fairly direct ports of the Spectrum versions which failed to take advantage of the CPC's extra capabilities. The amount of Spectrum ports has often been overstated by those who wish to knock the machine, and in fact formed a comparatively small number of largely unsuccessful games. Nonetheless, those that were published left users and reviewers with a bad taste in their mouth.&lt;br /&gt;
&lt;br /&gt;
At its core, the CPC combined a standard 4MHz [[Z80|Z80A]] with off-the-shelf components and a custom [[Gate Array]] chip. The [[firmware]] comprised two 16k ROMs (combined onto one 32k chip): one was effectively the operating system, the other the fast and flexible [[Locomotive BASIC]] interpreter. All machines except the original 464 would also include a further 16k ROM (on a separate chip): the AMSDOS disc operating system.&lt;br /&gt;
&lt;br /&gt;
Besides AMSDOS, CPCs equipped with floppy drives also shipped with [[CP/M]], allowing access to its vast library of available software.&lt;br /&gt;
&lt;br /&gt;
In all, there were three 'classic' models, the CPC [[464]], [[664]] and [[6128]]; plus two short-lived later [[Plus|advanced]] models, the 464 Plus and the 6128 Plus. A final iteration was the [[Plus|GX4000]] games machine based on the CPC+ computers.&lt;br /&gt;
&lt;br /&gt;
3 million units sold.&lt;br /&gt;
&lt;br /&gt;
''See also: [[CPC Prototypes]].''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Price positioning ==&lt;br /&gt;
&lt;br /&gt;
At launch, the Amstrad CPC 464 was one of the most expensive 8bit computer on the market, as the consumer was forced to buy it with its tape recorder and monitor.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Machine&lt;br /&gt;
! Manufacturer&lt;br /&gt;
! Price (Francs)&lt;br /&gt;
! Source: [https://www.abandonware-magazines.org/affiche_mag.php?mag=41&amp;amp;page=1 Micro 7 #21 (11/1984)]&lt;br /&gt;
|-&lt;br /&gt;
| [[Atari|800XL (PAL)]]&lt;br /&gt;
| Atari&lt;br /&gt;
| 2199&lt;br /&gt;
| advertisement Atari&lt;br /&gt;
|-&lt;br /&gt;
| [[Atari|800XL (SCART)]]&lt;br /&gt;
| Atari&lt;br /&gt;
| 2499&lt;br /&gt;
| advertisement Atari&lt;br /&gt;
|-&lt;br /&gt;
| [[Matra Alice|Alice]]&lt;br /&gt;
| Matra&lt;br /&gt;
| 1199&lt;br /&gt;
| advertisement Alice&lt;br /&gt;
|-&lt;br /&gt;
| [[Matra Alice|Alice 32 in suitcase]]&lt;br /&gt;
| Matra&lt;br /&gt;
| 2495&lt;br /&gt;
| advertisement Alice&lt;br /&gt;
|-&lt;br /&gt;
| [[Oric-1/Atmos|Atmos]]&lt;br /&gt;
| Oric&lt;br /&gt;
| 2350&lt;br /&gt;
| advertisement Vismo&lt;br /&gt;
|-&lt;br /&gt;
| [[BBC Micro]]&lt;br /&gt;
| Acorn&lt;br /&gt;
| 5990&lt;br /&gt;
| advertisement JCS&lt;br /&gt;
|-&lt;br /&gt;
| [[C64|C64 (PAL)]]&lt;br /&gt;
| Commodore&lt;br /&gt;
| 2990&lt;br /&gt;
| advertisement Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| [[C64|C64 (SCART)]]&lt;br /&gt;
| Commodore&lt;br /&gt;
| 3990&lt;br /&gt;
| ads Ordividuel (C64 modified by Procep)&lt;br /&gt;
|-&lt;br /&gt;
| '''CPC 464 with colour monitor'''&lt;br /&gt;
| Amstrad&lt;br /&gt;
| 4490&lt;br /&gt;
| advertisements Vismo, JCS and Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| '''CPC 464 with monochrome monitor'''&lt;br /&gt;
| Amstrad&lt;br /&gt;
| 2990&lt;br /&gt;
| advertisements Vismo, JCS and Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| [[Exelvision EXL100|Exl 100]]&lt;br /&gt;
| Exelvision&lt;br /&gt;
| 3190&lt;br /&gt;
| advertisement JCS&lt;br /&gt;
|-&lt;br /&gt;
| Laser 200&lt;br /&gt;
| V-tech&lt;br /&gt;
| 1280&lt;br /&gt;
| advertisement Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| Laser 310&lt;br /&gt;
| V-tech&lt;br /&gt;
| 1490&lt;br /&gt;
| advertisement Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| Macintosh 512KB (all-in-one)&lt;br /&gt;
| Apple&lt;br /&gt;
| 29995&lt;br /&gt;
| article&lt;br /&gt;
|-&lt;br /&gt;
| [[Thomson computers|MO5]]&lt;br /&gt;
| Thomson&lt;br /&gt;
| 2450&lt;br /&gt;
| advertisement Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| [[MSX|MSX PHC-28]]&lt;br /&gt;
| Sanyo&lt;br /&gt;
| 2990&lt;br /&gt;
| advertisement Vismo&lt;br /&gt;
|-&lt;br /&gt;
| [[MSX|MSX Prism]]&lt;br /&gt;
| Goldstar&lt;br /&gt;
| 2950&lt;br /&gt;
| article&lt;br /&gt;
|-&lt;br /&gt;
| PC 128KB (all-in-one)&lt;br /&gt;
| Goupil&lt;br /&gt;
| 24200&lt;br /&gt;
| article&lt;br /&gt;
|-&lt;br /&gt;
| [[Thomson computers|TO7/70]]&lt;br /&gt;
| Thomson&lt;br /&gt;
| 3590&lt;br /&gt;
| advertisement Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| [[VG 5000]]&lt;br /&gt;
| Philips&lt;br /&gt;
| 1590&lt;br /&gt;
| article&lt;br /&gt;
|-&lt;br /&gt;
| [[ZX Spectrum|ZX Spectrum 48KB]]&lt;br /&gt;
| Sinclair&lt;br /&gt;
| 1990&lt;br /&gt;
| advertisement Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| [[ZX80/81|ZX81]]&lt;br /&gt;
| Sinclair&lt;br /&gt;
| 580&lt;br /&gt;
| advertisements Vismo and Ordividuel&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
But all things considered, it was an excellent value, as both a tape recorder and a monitor were expensive items. And most buyers didn’t have spare ones to reuse anyway as it was their first computer.&lt;br /&gt;
&lt;br /&gt;
A cheap Zenith zvm122 12inch monochrome monitor cost 990 Francs, a Novex Mc1414 14inch colour monitor cost 2800 Francs, a tape recorder for the C64 cost 450 Francs, a floppy drive for the C64 cost 3500 Francs. Source: Micro 7 #21 - 11/1984&lt;br /&gt;
&lt;br /&gt;
Note: In France we had an additional problem in that our TVs were [https://en.wikipedia.org/wiki/SECAM SECAM] only in the 80s. A monitor was required for foreign computers like the C64 PAL or the ZX Spectrum that didn't output RGB. TVs only became PAL/SECAM compatible in the 90s.&lt;br /&gt;
&lt;br /&gt;
The minimum wage in France in 11/1984 was at 4116 Francs per month for a full-time job. Source: http://www.cda-strasbourg.org/smic.htm&lt;br /&gt;
&lt;br /&gt;
In June 1985, the CPC 664 was launched at 4490 Francs for monochrome and 5990 Francs for colour. Source: Micro 7 #28 - 06/1985&lt;br /&gt;
&lt;br /&gt;
The evolution of Amstrad CPC prices over the years is described in that article: [https://www.cpc-power.com/cpcarchives/index.php?page=articles&amp;amp;num=90 L'histoire des CPC selon GENERAL]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Late to the market ==&lt;br /&gt;
&lt;br /&gt;
Amstrad jumped into the home computer market in June 1984, one year after the [[MSX]] Standard of June 1983 which was thought at the time to be the end of the &amp;quot;cowboy&amp;quot; era of disparate and incompatible 8-bit computers.&lt;br /&gt;
&lt;br /&gt;
It was just in time to shake things up with its unique all-in-one concept for the home market. &lt;br /&gt;
&lt;br /&gt;
While earlier computers like the Tandy TRS-80 Model III, Commodore PET, Commodore Educator 64, Apple Lisa and Apple Macintosh had pioneered the all-in-one design, they were primarily aimed at businesses and education.&lt;br /&gt;
&lt;br /&gt;
By the end of 1985, all the big names were already established in both 8-bit and the newer 16-bit systems, leaving no room for newcomers.&lt;br /&gt;
&lt;br /&gt;
From there, it turned into a survival game, with the weaker players getting pushed out. After that, no new companies managed to break into the market, except for PC clones.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The CPC series ==&lt;br /&gt;
&lt;br /&gt;
=== The 464 ===&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
464.png|Amstrad CPC [[464]] with colour monitor&lt;br /&gt;
CPC464 pre-production sample.jpg|Pre-production sample made by Orion Japan for Amstrad UK&lt;br /&gt;
Schneider cpc 464 ddi1.jpg|Schneider CPC [[464]] with monochrome monitor and [[Amstrad External Disk Drive|DDI-1]] extension&lt;br /&gt;
Amstrad CPC464 grey keys.jpg|Amstrad CPC464 with grey keys&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:CPC464 english ad.jpg|English ad&lt;br /&gt;
File:CPC464 australian ad.jpg| Australian ad&lt;br /&gt;
File:CPC464 french ad.jpg|French ad&lt;br /&gt;
File:CPC464 spanish ad.jpg|Spanish ad&lt;br /&gt;
File:CPC464 danish ad.jpg|Danish ad&lt;br /&gt;
File:CPC464 greek ad.jpg|Greek ad&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
First came the CPC464, the father of the CPC family, released on the 21st June 1984 (with production ceasing in 1990). This model used an integrated tape recorder and offered 64KB of RAM.&lt;br /&gt;
&lt;br /&gt;
It sold around two million units in Europe and, technology-wise, was more impressive than the [[ZX Spectrum]] and on a similar level with the [[Commodore 64]]. The firmware of the CPC was also leagues ahead of the C64.&lt;br /&gt;
&lt;br /&gt;
One notable exception was the sound chip: while the C64 employed the splendid custom [[SID]] chip, Amstrad opted for a generic sound chip - [[AY|AY-3-8912]] - with unremarkable features. It is no surprise though as there was not much choice in off-the-shelf sound chips in early 1984.&lt;br /&gt;
&lt;br /&gt;
At its core was a [[Z80]] clocked at 4MHz - though screen display considerations, and the particular design of the [[Gate Array]] limited this to an effective 3.3MHz in practice - while the display was managed by the [[CRTC|6845 CRTC]] along with a gate-array chip.&lt;br /&gt;
&lt;br /&gt;
The CPC464 sported a palette of 27 colours and [[Video modes|three distinct resolutions]]: 160x200x16 colours (mode 0), 320x200x4 colours (mode 1) and 640x200x2 colours (mode 2, 80-column mode).&lt;br /&gt;
&lt;br /&gt;
Before the launch of the CPC 464, 45 pre-production hand built machines with a grey case had been issued to software houses to get their games ready on time.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The 472 ===&lt;br /&gt;
[[image:CPC_472_es.jpg|right|thumb|300px|Spanish Amstrad CPC 472]]&lt;br /&gt;
The [[472|CPC 472]] was a Spanish version of the CPC 464 with an additional, non-functional 8KB RAM. The reason was that Spain charged an import tax on home computers with 64K or less RAM, the fake &amp;quot;72K&amp;quot; CPC version bypassed that tax. The tax was invented in September 1985, and was dropped a few months later (when Spain joined the EEC). Also in 1985, but independtly of that tax, Spain dictated that computers must have spanish keyboards, which resulted in two CPC 472 versions: Older models with english keys, newer ones with spanish keys. Another oddity is that the older CPC472 had BASIC 1.1 while the newer CPC472 had BASIC 1.0. The CPC 472 is very rare.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;We had basically stuck two fingers in the air to the Spanish government, who were trying to screw our business, and there wasn’t much they could do about it&amp;quot; — Alan Sugar&lt;br /&gt;
&lt;br /&gt;
Read the full story behind the CPC 472 directly from the horse's mouth: https://amstrad.com/product/cpc472/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The 664 ===&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Amstrad-cpc-664.png|Amstrad CPC 664&lt;br /&gt;
Schneider cpc 664.jpg|Schneider CPC 664&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In June 1985, Amstrad took the initial design and, building upon the same idea, removed the tape recorder and replaced it with a disc drive, using the same hardware sold as the [[DDI-1]] add-on for 464 owners. The result: the CPC664. Sporting a less colourful and easier-to-type-on keyboard, the CPC664 appealed as a more serious machine and proved a success, especially due to its quite fast 3&amp;quot;, 180KB/side drive.&lt;br /&gt;
&lt;br /&gt;
Never the less, the 664 did have a very short life and was soon replaced by the 6128 (according to [[Amstrad Action]], Issue 1, Oct 1985, page [[:File:Amstrad Action001 08.jpg|8]], the 664 was produced only from May until August 1985).&lt;br /&gt;
&lt;br /&gt;
* ''[http://www.gondolin.org.uk/hchof/review.php?id=29&amp;amp;mcid=27 Your Computer (June 1985) review of the CPC664]''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The 6128 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Amstrad CPC6128.jpg|Amstrad CPC 6128&lt;br /&gt;
File:Amstrad CPC 6128 white.jpg|Amstrad CPC 6128 with white sticker&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Shortly afterwards, Amstrad launched the CPC6128 for the American market only, through its distributor [[Indescomp]]. The new machine sported 128k of memory and a still more sober appearance, but was otherwise nearly identical to the 664. The height of the case was greatly reduced, and the cursor keys were arranged more comfortably, both making the keyboard more ergonomically than the 464/664. Internally, the keyboard consists of two foils, although such membrane foils are relative fragile, they were more robust and reliable than the single foil used in the 664.&lt;br /&gt;
&lt;br /&gt;
Despite initial denials, the machine was launched in Europe shortly afterwards, replacing the 664 for the same price - a situation which understandably irritated some of those who had recently purchased 664s. As well as the [[CP/M]] 2.2 and [[DR Logo]] that had shipped with the DDI-1 and the CPC664, the 6128 came bundled with CP/M Plus (with the GSX graphics extension) making it an appealing all-round computer at a low price. Though the 128KB of memory could not be accessed all at once from BASIC (due to limitations of the [[Z80]]), the upper 64KB could be used readily from machine code courtesy of an upgraded [[Gate Array]]. A bundled program, [[Bankman]], provided some access from BASIC.&lt;br /&gt;
&lt;br /&gt;
The presence of this extra memory and the clever design of Amstrad's CP/M Plus implementation allowed for a TPA (Transient Program Area) of 61KB, more than enough to run all CP/M software.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Accessories ===&lt;br /&gt;
&lt;br /&gt;
Amstrad pushed the all-in-one package concept even further by selling unusual accessories to go along with their computer. Most notably, they proposed:&lt;br /&gt;
* A [[Amstrad CT-1 Radio/Alarm-Clock|clock/radio/alarm module]]&lt;br /&gt;
* A [[MP-3|TV tuner]] to transform the Amstrad CPC into a TV&lt;br /&gt;
* A [[CS-10 Computer Desk|computer desk]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Amstrad CPC accessories.jpg|200px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ANT (Arnold Number Two) prototype ==&lt;br /&gt;
&lt;br /&gt;
At the same time, Amstrad was designing the immensely successful [[PCW]] word-processor series, also with software by [[Locomotive Software|Locomotive]] and featuring an all-in-one Z80-based design.&lt;br /&gt;
&lt;br /&gt;
A shared architecture was developed that would encompass both the PCW and a new, upgraded CPC - codenamed [[ANT]], or Arnold Number Two. It shared many features with the PCW, such as its larger memory and its exceptionally elegant screen-handling hardware, but boasted colour and sound, and retained CPC compatibility. The aim was to see off the Atari ST and Commodore Amiga, next-generation games machines already on the horizon.&lt;br /&gt;
&lt;br /&gt;
A few of the PCW's design features which don't appear to make any sense on their own stem from this shared ancestry. But the project was dropped at a fairly early stage, and the CPC Classic lived on before eventually succumbing to the Plus. Only one prototype board is believed to survive, in the possession of ex-Locomotive Software engineer [[Richard Clayton]].&lt;br /&gt;
&lt;br /&gt;
&amp;quot;''We did an Amstrad machine basically a [[PCW]] with hi-res colour and sound synth, called ANT (Arnold Number Two) but it never went anywhere as production. It was really nice, but by then [[Amiga]] did everything we wanted to do, 8-bit was meh, and [[Amstrad PC|PCs]] were more important.''&amp;quot; – Vik Olliver [https://x.com/VikOlliver/status/1191156134876311554 Source]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The Plus series ==&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
cpc6128plus.jpg|Amstrad [[Plus|6128 Plus]] with colour monitor&lt;br /&gt;
Amstrad 464 Plus.jpg|Amstrad [[Plus|464 Plus]]&lt;br /&gt;
File:Amstrad-plus-ad.jpg|English advertisement&lt;br /&gt;
File:Amstrad-plus-french-ad.jpg|French advertisement&lt;br /&gt;
File:Amstrad-plus-spanish-ad.jpg|Spanish advertisement&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
The last models in the Amstrad CPC range were the [[Plus|Amstrad 464 Plus]] and [[Plus|Amstrad 6128 Plus]], launched together in 1990. The CPC name is said to have been dropped because of a legal dispute with a French firm, though it is also likely that &amp;quot;CPC 6128 Plus&amp;quot; was considered too unwieldy a name and one redolent of the machine's mid-80s heritage. However, the &amp;quot;CPC Plus&amp;quot; branding was used by Amstrad España in their advertising material.&lt;br /&gt;
&lt;br /&gt;
The Plus series were quite (but not 100%) compatible with the original CPC computers. The compatibility issues came mostly from:&lt;br /&gt;
* The emulated [[8255|PPI]] chip, making the keyboard unresponsive&lt;br /&gt;
* The emulated [[CRTC]], breaking CPC demos&lt;br /&gt;
* Unlike the original model, the 464 Plus lacks a tape counter for tracking cassette positions. It also omits the distinctive loading sounds that were once audible through the speaker during tape operations on the original CPC 464&lt;br /&gt;
* Unlike the original model, the 464 Plus features the BASIC 1.1 ROM&lt;br /&gt;
* The new AMSDOS ROM, breaking ROM access to the floppy drive&lt;br /&gt;
&lt;br /&gt;
ROM issues can be easily fixed by using a [[Plus System Cartridge|Downgrade System cartridge]].&lt;br /&gt;
&lt;br /&gt;
The Plus series incorporated a list of [[ASIC|new features]], like a cartridge port for instant program loading, DMA for the [[AY]] soundchip, enhanced hardware scrolling, programmable interrupts, 16 hardware zoomable sprites (not vectorized) with an independent palette of 15 colours, and a choice of 4096 colours all in a new, sleek case which mimicked the keyboard-computer design that was ''en vogue'' in the 16-bit market (ST, Amiga etc). &lt;br /&gt;
&lt;br /&gt;
Described as a solution of 'too little, too late', this was Amstrad's effort to prolong the life of its 8-bit computer series in the face of fierce competition from new 16-bit machines (notably, the [[Atari ST]] and the Commodore [[Amiga]]).&lt;br /&gt;
&lt;br /&gt;
While the Amstrad Plus computers were one of the most advanced 8-bit computers ever built for the mass market, they died an early death as the 16-bit era was in full swing. And 32-bit computers were already appearing. The year before, Amstrad launched its first 32-bit PC, the [[Amstrad PC|PC2386]].&lt;br /&gt;
&lt;br /&gt;
Also, the [[Apple II|Apple IIGS]] and the [[MSX|MSX Turbo-R]] proved that 8-bit machines could be upgraded to 16-bit. It would have been possible with the CPC if Amstrad had decided to do so.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The GX4000 ==&lt;br /&gt;
[[Image:Amstrad-GX4000-Console.jpg|right|thumb|300px|The Amstrad GX4000]]&lt;br /&gt;
By 1990 Amstrad had realised that the home market was heading towards the 16-bit machines, on one hand, and towards the new generation of game consoles like the Sega Master System or the Nintendo Entertainment System, on the other. Therefore, just as they created the 464 Plus and 6128 Plus to compete against the ST and the Amiga, they also created a stripped-down variant called the [[Plus|GX4000]]. &lt;br /&gt;
&lt;br /&gt;
The GX4000 was, in essence, an Amstrad 464+ motherboard in a new case, with no keyboard, cassette deck nor disc drive, and with most extension ports gone - save for the cartridge port and two joypads.&lt;br /&gt;
&lt;br /&gt;
As expected, the GX4000 was a flop that could not break the stranglehold that Sega and Nintendo had on the market at the time. As a result, the GX4000 was soon to be found selling at ridiculously low prices - as little as £19.99 in the UK - as dealers tried to offload their stock. It was a shame, because if Amstrad had realised the market potential and produced this console a few years earlier, it could well have been a success.&lt;br /&gt;
&lt;br /&gt;
As it was, the GX4000 joined the long list of failed attempts to repurpose computers as game consoles, alongside the Atari XEGS, the Commodore 64GS, the Amiga CDTV, the Amiga CD32, the FM Towns Marty and the Apple Pippin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Clones ==&lt;br /&gt;
&lt;br /&gt;
There were two clones of the CPC, neither of which were 100% compatible with the CPC.&lt;br /&gt;
&lt;br /&gt;
* [[KC Compact]]: An East German clone. The Gate-Array was replaced with TTL logic which performed a similar function. There are some hardware differences, especially in the interrupts. This clone is much closer to the CPC in terms of functionality.&lt;br /&gt;
&lt;br /&gt;
* [[Aleste 520EX]]: This clone also had some MSX like hardware which made it possible to run some modified MSX titles. This clone also ran faster than the original CPC.&lt;br /&gt;
&lt;br /&gt;
* [https://hackaday.io/project/188511-xialeste XiAleste]: This expanded clone is the successor of the Aleste. Currently under development.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Outro ==&lt;br /&gt;
&lt;br /&gt;
All in all, the CPC series met with great success. Although they would never achieve the universal status of the [[Commodore 64]] or the humble [[ZX Spectrum]] series, the CPCs managed to sell very well.&lt;br /&gt;
&lt;br /&gt;
France was the sole market where the CPCs achieved the top position for years. Still, the CPCs were very popular in the UK, Spain, Greece, Germany and Australia, to name a few countries.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*[[CPC timeline]]&lt;br /&gt;
*[https://youtu.be/MTsCiZ3ZBD4 Entrevista a ROLAND PERRY] by [[Las Cosas Retro]]&lt;br /&gt;
*[https://youtu.be/bD_gBz2fwDM Amstrad CPC - Top 150 games (1984-2020)] Top 50 CPC games from [https://youtu.be/F3pVjc4tmCU 1984] [https://youtu.be/8w7Rx1dOmPs 1985] [https://youtu.be/c18muwWbVZc 1986] [https://youtu.be/NpL1uq0IAz4 1987] [https://youtu.be/0mnR3vTJXw8 1988]&lt;br /&gt;
*[https://youtu.be/ZOOwlWwlltM All Amstrad CPC games] from [https://youtu.be/Smpv8v1OP5A 1984] [https://youtu.be/_JJjHXNGEyY 1985] [https://youtu.be/5XRyZIW4c9s 1986] [https://youtu.be/V7yRLp-Xvfs 1987] [https://youtu.be/afn70FPDRoQ 1988] [https://youtu.be/tpQ1PhUWnYw 1989] [https://youtu.be/8_JvuGdumC4 1990] [https://youtu.be/yJsm1DeF7Pk 1991] [https://youtu.be/LQmDzkNs0P4 1992]&lt;br /&gt;
*[https://youtu.be/hBlHUWRlmug Amstrad CPC - Best of Music with Video (3 hours)]&lt;br /&gt;
*[https://youtu.be/BvramomEtSM Amstrad TV adverts] [https://youtu.be/n7U6E7bDFlc Amstrad French TV adverts]&lt;br /&gt;
*[https://youtu.be/8o1OTwFv7WQ Part 1] [https://youtu.be/f1KS7nSKnxE Part 2] Amstrad CPC Story by [[Nostalgia Nerd]]&lt;br /&gt;
*[https://youtu.be/fB9M6RMtMUE Partie 1] [https://youtu.be/F0CzNJjjkO4 Partie 2] [https://youtu.be/la5IhBbrqPc Partie 3] [https://youtu.be/uUR5oKBxRzA Partie 4] Histoire de l'Amstrad CPC by [[Génération Micros]]&lt;br /&gt;
*[https://youtu.be/mesZ1zbA654 Amstrad : La gamme CPC (1984/1985)] [https://youtu.be/Ijuqsz69Euk Amstrad 6128 Plus] by [[Rodrik Studio]]&lt;br /&gt;
*[https://www.youtube.com/watch?v=O0vvdDx4egk&amp;amp;list=PLIX9fyYxV0k9phQiqATmOe2OZJyeMuY0a C64 vs Amstrad CPC] [https://www.youtube.com/watch?v=JfZ77Ltkols&amp;amp;list=PLIX9fyYxV0k_VOgMOIxseJH1c91KKcxKB ZX Spectrum vs Amstrad CPC]&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=CPC&amp;diff=126266</id>
		<title>CPC</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=CPC&amp;diff=126266"/>
				<updated>2025-05-23T20:56:36Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: /* ANT (Arnold Number Two) prototype */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:CPC History| ]]&lt;br /&gt;
[[Category:Hardware| ]][[Category:CPC Internal Components| ]][[Category:Amstrad Products| ]][[Category:CP/M]]&lt;br /&gt;
The Real meaning of this Wiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The Amstrad CPC (Colour Personal Computer) series was a series of 8-bit home / personal computers that were manufactured by the British company [[Amstrad]] between 1984 (launch of the CPC464: 21st June 1984) and 1993 (?). The CPC, like most contemporary home micros, had an integrated computer-in-a-keyboard design. Also incorporated in the keyboard was the [[Datacorder|tape recorder]] or [[Disk drives|disc drive]].&lt;br /&gt;
&lt;br /&gt;
In general what Amstrad aimed for was to offer a completely integrated solution at a low price. Just as with Amstrad's stereo towers before, [[Alan M. Sugar]] wanted to provide a solution with as few separate components as possible, with as few cables as possible and at as low a price as possible. A truck driver, unfamiliar with computers, was often cited as the CPC's target market.&lt;br /&gt;
&lt;br /&gt;
As a result, Amstrad chose ready off-the-shelf components and used low-cost production methods in an effort to bring manufacturing costs down. They also included a monitor to connect the computer to - a move which, while raising the price, was designed to free the home TV from little brats hogging it for a dose of Ikari Warriors while Eastenders was on. This concept appealed to users and proved to be a success.&lt;br /&gt;
&lt;br /&gt;
However, at least in the UK, it was initially possible to buy the Amstrad CPC with a modulator instead of an Amstrad monitor:&lt;br /&gt;
&lt;br /&gt;
[[File:CPC6128 with modulator - UK ads.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
The combination of low cost, integrated design, good manufacturing quality and some impressive features like CP/M and an 80-column display mode (lacking in much of the competition, particularly the Sinclair [[ZX Spectrum]] and [[Commodore 64]]) proved to be a success both with home users and small businesses, and Amstrad went on to sell millions of CPCs.&lt;br /&gt;
&lt;br /&gt;
Because of its use of the Z80, which was also used in the Sinclair models, some of the earliest games found on the CPC were fairly direct ports of the Spectrum versions which failed to take advantage of the CPC's extra capabilities. The amount of Spectrum ports has often been overstated by those who wish to knock the machine, and in fact formed a comparatively small number of largely unsuccessful games. Nonetheless, those that were published left users and reviewers with a bad taste in their mouth.&lt;br /&gt;
&lt;br /&gt;
At its core, the CPC combined a standard 4MHz [[Z80|Z80A]] with off-the-shelf components and a custom [[Gate Array]] chip. The [[firmware]] comprised two 16k ROMs (combined onto one 32k chip): one was effectively the operating system, the other the fast and flexible [[Locomotive BASIC]] interpreter. All machines except the original 464 would also include a further 16k ROM (on a separate chip): the AMSDOS disc operating system.&lt;br /&gt;
&lt;br /&gt;
Besides AMSDOS, CPCs equipped with floppy drives also shipped with [[CP/M]], allowing access to its vast library of available software.&lt;br /&gt;
&lt;br /&gt;
In all, there were three 'classic' models, the CPC [[464]], [[664]] and [[6128]]; plus two short-lived later [[Plus|advanced]] models, the 464 Plus and the 6128 Plus. A final iteration was the [[Plus|GX4000]] games machine based on the CPC+ computers.&lt;br /&gt;
&lt;br /&gt;
3 million units sold.&lt;br /&gt;
&lt;br /&gt;
''See also: [[CPC Prototypes]].''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Price positioning ==&lt;br /&gt;
&lt;br /&gt;
At launch, the Amstrad CPC 464 was one of the most expensive 8bit computer on the market, as the consumer was forced to buy it with its tape recorder and monitor.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Machine&lt;br /&gt;
! Manufacturer&lt;br /&gt;
! Price (Francs)&lt;br /&gt;
! Source: [https://www.abandonware-magazines.org/affiche_mag.php?mag=41&amp;amp;page=1 Micro 7 #21 (11/1984)]&lt;br /&gt;
|-&lt;br /&gt;
| [[Atari|800XL (PAL)]]&lt;br /&gt;
| Atari&lt;br /&gt;
| 2199&lt;br /&gt;
| advertisement Atari&lt;br /&gt;
|-&lt;br /&gt;
| [[Atari|800XL (SCART)]]&lt;br /&gt;
| Atari&lt;br /&gt;
| 2499&lt;br /&gt;
| advertisement Atari&lt;br /&gt;
|-&lt;br /&gt;
| [[Matra Alice|Alice]]&lt;br /&gt;
| Matra&lt;br /&gt;
| 1199&lt;br /&gt;
| advertisement Alice&lt;br /&gt;
|-&lt;br /&gt;
| [[Matra Alice|Alice 32 in suitcase]]&lt;br /&gt;
| Matra&lt;br /&gt;
| 2495&lt;br /&gt;
| advertisement Alice&lt;br /&gt;
|-&lt;br /&gt;
| [[Oric-1/Atmos|Atmos]]&lt;br /&gt;
| Oric&lt;br /&gt;
| 2350&lt;br /&gt;
| advertisement Vismo&lt;br /&gt;
|-&lt;br /&gt;
| [[BBC Micro]]&lt;br /&gt;
| Acorn&lt;br /&gt;
| 5990&lt;br /&gt;
| advertisement JCS&lt;br /&gt;
|-&lt;br /&gt;
| [[C64|C64 (PAL)]]&lt;br /&gt;
| Commodore&lt;br /&gt;
| 2990&lt;br /&gt;
| advertisement Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| [[C64|C64 (SCART)]]&lt;br /&gt;
| Commodore&lt;br /&gt;
| 3990&lt;br /&gt;
| ads Ordividuel (C64 modified by Procep)&lt;br /&gt;
|-&lt;br /&gt;
| '''CPC 464 with colour monitor'''&lt;br /&gt;
| Amstrad&lt;br /&gt;
| 4490&lt;br /&gt;
| advertisements Vismo, JCS and Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| '''CPC 464 with monochrome monitor'''&lt;br /&gt;
| Amstrad&lt;br /&gt;
| 2990&lt;br /&gt;
| advertisements Vismo, JCS and Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| [[Exelvision EXL100|Exl 100]]&lt;br /&gt;
| Exelvision&lt;br /&gt;
| 3190&lt;br /&gt;
| advertisement JCS&lt;br /&gt;
|-&lt;br /&gt;
| Laser 200&lt;br /&gt;
| V-tech&lt;br /&gt;
| 1280&lt;br /&gt;
| advertisement Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| Laser 310&lt;br /&gt;
| V-tech&lt;br /&gt;
| 1490&lt;br /&gt;
| advertisement Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| Macintosh 512KB (all-in-one)&lt;br /&gt;
| Apple&lt;br /&gt;
| 29995&lt;br /&gt;
| article&lt;br /&gt;
|-&lt;br /&gt;
| [[Thomson computers|MO5]]&lt;br /&gt;
| Thomson&lt;br /&gt;
| 2450&lt;br /&gt;
| advertisement Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| [[MSX|MSX PHC-28]]&lt;br /&gt;
| Sanyo&lt;br /&gt;
| 2990&lt;br /&gt;
| advertisement Vismo&lt;br /&gt;
|-&lt;br /&gt;
| [[MSX|MSX Prism]]&lt;br /&gt;
| Goldstar&lt;br /&gt;
| 2950&lt;br /&gt;
| article&lt;br /&gt;
|-&lt;br /&gt;
| PC 128KB (all-in-one)&lt;br /&gt;
| Goupil&lt;br /&gt;
| 24200&lt;br /&gt;
| article&lt;br /&gt;
|-&lt;br /&gt;
| [[Thomson computers|TO7/70]]&lt;br /&gt;
| Thomson&lt;br /&gt;
| 3590&lt;br /&gt;
| advertisement Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| [[VG 5000]]&lt;br /&gt;
| Philips&lt;br /&gt;
| 1590&lt;br /&gt;
| article&lt;br /&gt;
|-&lt;br /&gt;
| [[ZX Spectrum|ZX Spectrum 48KB]]&lt;br /&gt;
| Sinclair&lt;br /&gt;
| 1990&lt;br /&gt;
| advertisement Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| [[ZX80/81|ZX81]]&lt;br /&gt;
| Sinclair&lt;br /&gt;
| 580&lt;br /&gt;
| advertisements Vismo and Ordividuel&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
But all things considered, it was an excellent value, as both a tape recorder and a monitor were expensive items. And most buyers didn’t have spare ones to reuse anyway as it was their first computer.&lt;br /&gt;
&lt;br /&gt;
A cheap Zenith zvm122 12inch monochrome monitor cost 990 Francs, a Novex Mc1414 14inch colour monitor cost 2800 Francs, a tape recorder for the C64 cost 450 Francs, a floppy drive for the C64 cost 3500 Francs. Source: Micro 7 #21 - 11/1984&lt;br /&gt;
&lt;br /&gt;
Note: In France we had an additional problem in that our TVs were [https://en.wikipedia.org/wiki/SECAM SECAM] only in the 80s. A monitor was required for foreign computers like the C64 PAL or the ZX Spectrum that didn't output RGB. TVs only became PAL/SECAM compatible in the 90s.&lt;br /&gt;
&lt;br /&gt;
The minimum wage in France in 11/1984 was at 4116 Francs per month for a full-time job. Source: http://www.cda-strasbourg.org/smic.htm&lt;br /&gt;
&lt;br /&gt;
In June 1985, the CPC 664 was launched at 4490 Francs for monochrome and 5990 Francs for colour. Source: Micro 7 #28 - 06/1985&lt;br /&gt;
&lt;br /&gt;
The evolution of Amstrad CPC prices over the years is described in that article: [https://www.cpc-power.com/cpcarchives/index.php?page=articles&amp;amp;num=90 L'histoire des CPC selon GENERAL]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Late to the market ==&lt;br /&gt;
&lt;br /&gt;
Amstrad jumped into the home computer market in June 1984, one year after the [[MSX]] Standard of June 1983 which was thought at the time to be the end of the &amp;quot;cowboy&amp;quot; era of disparate and incompatible 8-bit computers.&lt;br /&gt;
&lt;br /&gt;
It was just in time to shake things up with its unique all-in-one concept for the home market. &lt;br /&gt;
&lt;br /&gt;
While earlier computers like the Tandy TRS-80 Model III, Commodore PET, Commodore Educator 64, Apple Lisa and Apple Macintosh had pioneered the all-in-one design, they were primarily aimed at businesses and education.&lt;br /&gt;
&lt;br /&gt;
By the end of 1985, all the big names were already established in both 8-bit and the newer 16-bit systems, leaving no room for newcomers.&lt;br /&gt;
&lt;br /&gt;
From there, it turned into a survival game, with the weaker players getting pushed out. After that, no new companies managed to break into the market, except for PC clones.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The CPC series ==&lt;br /&gt;
&lt;br /&gt;
=== The 464 ===&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
464.png|Amstrad CPC [[464]] with colour monitor&lt;br /&gt;
CPC464 pre-production sample.jpg|Pre-production sample made by Orion Japan for Amstrad UK&lt;br /&gt;
Schneider cpc 464 ddi1.jpg|Schneider CPC [[464]] with monochrome monitor and [[Amstrad External Disk Drive|DDI-1]] extension&lt;br /&gt;
Amstrad CPC464 grey keys.jpg|Amstrad CPC464 with grey keys&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:CPC464 english ad.jpg|English ad&lt;br /&gt;
File:CPC464 australian ad.jpg| Australian ad&lt;br /&gt;
File:CPC464 french ad.jpg|French ad&lt;br /&gt;
File:CPC464 spanish ad.jpg|Spanish ad&lt;br /&gt;
File:CPC464 danish ad.jpg|Danish ad&lt;br /&gt;
File:CPC464 greek ad.jpg|Greek ad&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
First came the CPC464, the father of the CPC family, released on the 21st June 1984 (with production ceasing in 1990). This model used an integrated tape recorder and offered 64KB of RAM.&lt;br /&gt;
&lt;br /&gt;
It sold around two million units in Europe and, technology-wise, was more impressive than the [[ZX Spectrum]] and on a similar level with the [[Commodore 64]]. The firmware of the CPC was also leagues ahead of the C64.&lt;br /&gt;
&lt;br /&gt;
One notable exception was the sound chip: while the C64 employed the splendid custom [[SID]] chip, Amstrad opted for a generic sound chip - [[AY|AY-3-8912]] - with unremarkable features. It is no surprise though as there was not much choice in off-the-shelf sound chips in early 1984.&lt;br /&gt;
&lt;br /&gt;
At its core was a [[Z80]] clocked at 4MHz - though screen display considerations, and the particular design of the [[Gate Array]] limited this to an effective 3.3MHz in practice - while the display was managed by the [[CRTC|6845 CRTC]] along with a gate-array chip.&lt;br /&gt;
&lt;br /&gt;
The CPC464 sported a palette of 27 colours and [[Video modes|three distinct resolutions]]: 160x200x16 colours (mode 0), 320x200x4 colours (mode 1) and 640x200x2 colours (mode 2, 80-column mode).&lt;br /&gt;
&lt;br /&gt;
Before the launch of the CPC 464, 45 pre-production hand built machines with a grey case had been issued to software houses to get their games ready on time.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The 472 ===&lt;br /&gt;
[[image:CPC_472_es.jpg|right|thumb|300px|Spanish Amstrad CPC 472]]&lt;br /&gt;
The [[472|CPC 472]] was a Spanish version of the CPC 464 with an additional, non-functional 8KB RAM. The reason was that Spain charged an import tax on home computers with 64K or less RAM, the fake &amp;quot;72K&amp;quot; CPC version bypassed that tax. The tax was invented in September 1985, and was dropped a few months later (when Spain joined the EEC). Also in 1985, but independtly of that tax, Spain dictated that computers must have spanish keyboards, which resulted in two CPC 472 versions: Older models with english keys, newer ones with spanish keys. Another oddity is that the older CPC472 had BASIC 1.1 while the newer CPC472 had BASIC 1.0. The CPC 472 is very rare.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;We had basically stuck two fingers in the air to the Spanish government, who were trying to screw our business, and there wasn’t much they could do about it&amp;quot; — Alan Sugar&lt;br /&gt;
&lt;br /&gt;
Read the full story behind the CPC 472 directly from the horse's mouth: https://amstrad.com/product/cpc472/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The 664 ===&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Amstrad-cpc-664.png|Amstrad CPC 664&lt;br /&gt;
Schneider cpc 664.jpg|Schneider CPC 664&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In June 1985, Amstrad took the initial design and, building upon the same idea, removed the tape recorder and replaced it with a disc drive, using the same hardware sold as the [[DDI-1]] add-on for 464 owners. The result: the CPC664. Sporting a less colourful and easier-to-type-on keyboard, the CPC664 appealed as a more serious machine and proved a success, especially due to its quite fast 3&amp;quot;, 180KB/side drive.&lt;br /&gt;
&lt;br /&gt;
Never the less, the 664 did have a very short life and was soon replaced by the 6128 (according to [[Amstrad Action]], Issue 1, Oct 1985, page [[:File:Amstrad Action001 08.jpg|8]], the 664 was produced only from May until August 1985).&lt;br /&gt;
&lt;br /&gt;
* ''[http://www.gondolin.org.uk/hchof/review.php?id=29&amp;amp;mcid=27 Your Computer (June 1985) review of the CPC664]''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The 6128 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Amstrad CPC6128.jpg|Amstrad CPC 6128&lt;br /&gt;
File:Amstrad CPC 6128 white.jpg|Amstrad CPC 6128 with white sticker&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Shortly afterwards, Amstrad launched the CPC6128 for the American market only, through its distributor [[Indescomp]]. The new machine sported 128k of memory and a still more sober appearance, but was otherwise nearly identical to the 664. The height of the case was greatly reduced, and the cursor keys were arranged more comfortably, both making the keyboard more ergonomically than the 464/664. Internally, the keyboard consists of two foils, although such membrane foils are relative fragile, they were more robust and reliable than the single foil used in the 664.&lt;br /&gt;
&lt;br /&gt;
Despite initial denials, the machine was launched in Europe shortly afterwards, replacing the 664 for the same price - a situation which understandably irritated some of those who had recently purchased 664s. As well as the [[CP/M]] 2.2 and [[DR Logo]] that had shipped with the DDI-1 and the CPC664, the 6128 came bundled with CP/M Plus (with the GSX graphics extension) making it an appealing all-round computer at a low price. Though the 128KB of memory could not be accessed all at once from BASIC (due to limitations of the [[Z80]]), the upper 64KB could be used readily from machine code courtesy of an upgraded [[Gate Array]]. A bundled program, [[Bankman]], provided some access from BASIC.&lt;br /&gt;
&lt;br /&gt;
The presence of this extra memory and the clever design of Amstrad's CP/M Plus implementation allowed for a TPA (Transient Program Area) of 61KB, more than enough to run all CP/M software.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Accessories ===&lt;br /&gt;
&lt;br /&gt;
Amstrad pushed the all-in-one package concept even further by selling unusual accessories to go along with their computer. Most notably, they proposed:&lt;br /&gt;
* A [[Amstrad CT-1 Radio/Alarm-Clock|clock/radio/alarm module]]&lt;br /&gt;
* A [[MP-3|TV tuner]] to transform the Amstrad CPC into a TV&lt;br /&gt;
* A [[CS-10 Computer Desk|computer desk]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Amstrad CPC accessories.jpg|200px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ANT (Arnold Number Two) prototype ==&lt;br /&gt;
&lt;br /&gt;
At the same time, Amstrad was designing the immensely successful [[PCW]] word-processor series, also with software by [[Locomotive Software|Locomotive]] and featuring an all-in-one Z80-based design.&lt;br /&gt;
&lt;br /&gt;
A shared architecture was developed that would encompass both the PCW and a new, upgraded CPC - codenamed [[ANT]], or Arnold Number Two. It shared many features with the PCW, such as its larger memory and its exceptionally elegant screen-handling hardware, but boasted colour and sound, and retained CPC compatibility. The aim was to see off the Atari ST and Commodore Amiga, next-generation games machines already on the horizon.&lt;br /&gt;
&lt;br /&gt;
A few of the PCW's design features which don't appear to make any sense on their own stem from this shared ancestry. But the project was dropped at a fairly early stage, and the CPC Classic lived on before eventually succumbing to the Plus. Only one prototype board is believed to survive, in the possession of ex-Locomotive Software engineer [[Richard Clayton]].&lt;br /&gt;
&lt;br /&gt;
&amp;quot;''We did an Amstrad machine basically a PCW with hi-res colour and sound synth, called ANT (Arnold Number Two) but it never went anywhere as production. It was really nice, but by then Amiga did everything we wanted to do, 8-bit was meh, and PCs were more important.''&amp;quot; – Vik Olliver [https://x.com/VikOlliver/status/1191156134876311554 Source]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The Plus series ==&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
cpc6128plus.jpg|Amstrad [[Plus|6128 Plus]] with colour monitor&lt;br /&gt;
Amstrad 464 Plus.jpg|Amstrad [[Plus|464 Plus]]&lt;br /&gt;
File:Amstrad-plus-ad.jpg|English advertisement&lt;br /&gt;
File:Amstrad-plus-french-ad.jpg|French advertisement&lt;br /&gt;
File:Amstrad-plus-spanish-ad.jpg|Spanish advertisement&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
The last models in the Amstrad CPC range were the [[Plus|Amstrad 464 Plus]] and [[Plus|Amstrad 6128 Plus]], launched together in 1990. The CPC name is said to have been dropped because of a legal dispute with a French firm, though it is also likely that &amp;quot;CPC 6128 Plus&amp;quot; was considered too unwieldy a name and one redolent of the machine's mid-80s heritage. However, the &amp;quot;CPC Plus&amp;quot; branding was used by Amstrad España in their advertising material.&lt;br /&gt;
&lt;br /&gt;
The Plus series were quite (but not 100%) compatible with the original CPC computers. The compatibility issues came mostly from:&lt;br /&gt;
* The emulated [[8255|PPI]] chip, making the keyboard unresponsive&lt;br /&gt;
* The emulated [[CRTC]], breaking CPC demos&lt;br /&gt;
* Unlike the original model, the 464 Plus lacks a tape counter for tracking cassette positions. It also omits the distinctive loading sounds that were once audible through the speaker during tape operations on the original CPC 464&lt;br /&gt;
* Unlike the original model, the 464 Plus features the BASIC 1.1 ROM&lt;br /&gt;
* The new AMSDOS ROM, breaking ROM access to the floppy drive&lt;br /&gt;
&lt;br /&gt;
ROM issues can be easily fixed by using a [[Plus System Cartridge|Downgrade System cartridge]].&lt;br /&gt;
&lt;br /&gt;
The Plus series incorporated a list of [[ASIC|new features]], like a cartridge port for instant program loading, DMA for the [[AY]] soundchip, enhanced hardware scrolling, programmable interrupts, 16 hardware zoomable sprites (not vectorized) with an independent palette of 15 colours, and a choice of 4096 colours all in a new, sleek case which mimicked the keyboard-computer design that was ''en vogue'' in the 16-bit market (ST, Amiga etc). &lt;br /&gt;
&lt;br /&gt;
Described as a solution of 'too little, too late', this was Amstrad's effort to prolong the life of its 8-bit computer series in the face of fierce competition from new 16-bit machines (notably, the [[Atari ST]] and the Commodore [[Amiga]]).&lt;br /&gt;
&lt;br /&gt;
While the Amstrad Plus computers were one of the most advanced 8-bit computers ever built for the mass market, they died an early death as the 16-bit era was in full swing. And 32-bit computers were already appearing. The year before, Amstrad launched its first 32-bit PC, the [[Amstrad PC|PC2386]].&lt;br /&gt;
&lt;br /&gt;
Also, the [[Apple II|Apple IIGS]] and the [[MSX|MSX Turbo-R]] proved that 8-bit machines could be upgraded to 16-bit. It would have been possible with the CPC if Amstrad had decided to do so.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The GX4000 ==&lt;br /&gt;
[[Image:Amstrad-GX4000-Console.jpg|right|thumb|300px|The Amstrad GX4000]]&lt;br /&gt;
By 1990 Amstrad had realised that the home market was heading towards the 16-bit machines, on one hand, and towards the new generation of game consoles like the Sega Master System or the Nintendo Entertainment System, on the other. Therefore, just as they created the 464 Plus and 6128 Plus to compete against the ST and the Amiga, they also created a stripped-down variant called the [[Plus|GX4000]]. &lt;br /&gt;
&lt;br /&gt;
The GX4000 was, in essence, an Amstrad 464+ motherboard in a new case, with no keyboard, cassette deck nor disc drive, and with most extension ports gone - save for the cartridge port and two joypads.&lt;br /&gt;
&lt;br /&gt;
As expected, the GX4000 was a flop that could not break the stranglehold that Sega and Nintendo had on the market at the time. As a result, the GX4000 was soon to be found selling at ridiculously low prices - as little as £19.99 in the UK - as dealers tried to offload their stock. It was a shame, because if Amstrad had realised the market potential and produced this console a few years earlier, it could well have been a success.&lt;br /&gt;
&lt;br /&gt;
As it was, the GX4000 joined the long list of failed attempts to repurpose computers as game consoles, alongside the Atari XEGS, the Commodore 64GS, the Amiga CDTV, the Amiga CD32, the FM Towns Marty and the Apple Pippin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Clones ==&lt;br /&gt;
&lt;br /&gt;
There were two clones of the CPC, neither of which were 100% compatible with the CPC.&lt;br /&gt;
&lt;br /&gt;
* [[KC Compact]]: An East German clone. The Gate-Array was replaced with TTL logic which performed a similar function. There are some hardware differences, especially in the interrupts. This clone is much closer to the CPC in terms of functionality.&lt;br /&gt;
&lt;br /&gt;
* [[Aleste 520EX]]: This clone also had some MSX like hardware which made it possible to run some modified MSX titles. This clone also ran faster than the original CPC.&lt;br /&gt;
&lt;br /&gt;
* [https://hackaday.io/project/188511-xialeste XiAleste]: This expanded clone is the successor of the Aleste. Currently under development.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Outro ==&lt;br /&gt;
&lt;br /&gt;
All in all, the CPC series met with great success. Although they would never achieve the universal status of the [[Commodore 64]] or the humble [[ZX Spectrum]] series, the CPCs managed to sell very well.&lt;br /&gt;
&lt;br /&gt;
France was the sole market where the CPCs achieved the top position for years. Still, the CPCs were very popular in the UK, Spain, Greece, Germany and Australia, to name a few countries.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*[[CPC timeline]]&lt;br /&gt;
*[https://youtu.be/MTsCiZ3ZBD4 Entrevista a ROLAND PERRY] by [[Las Cosas Retro]]&lt;br /&gt;
*[https://youtu.be/bD_gBz2fwDM Amstrad CPC - Top 150 games (1984-2020)] Top 50 CPC games from [https://youtu.be/F3pVjc4tmCU 1984] [https://youtu.be/8w7Rx1dOmPs 1985] [https://youtu.be/c18muwWbVZc 1986] [https://youtu.be/NpL1uq0IAz4 1987] [https://youtu.be/0mnR3vTJXw8 1988]&lt;br /&gt;
*[https://youtu.be/ZOOwlWwlltM All Amstrad CPC games] from [https://youtu.be/Smpv8v1OP5A 1984] [https://youtu.be/_JJjHXNGEyY 1985] [https://youtu.be/5XRyZIW4c9s 1986] [https://youtu.be/V7yRLp-Xvfs 1987] [https://youtu.be/afn70FPDRoQ 1988] [https://youtu.be/tpQ1PhUWnYw 1989] [https://youtu.be/8_JvuGdumC4 1990] [https://youtu.be/yJsm1DeF7Pk 1991] [https://youtu.be/LQmDzkNs0P4 1992]&lt;br /&gt;
*[https://youtu.be/hBlHUWRlmug Amstrad CPC - Best of Music with Video (3 hours)]&lt;br /&gt;
*[https://youtu.be/BvramomEtSM Amstrad TV adverts] [https://youtu.be/n7U6E7bDFlc Amstrad French TV adverts]&lt;br /&gt;
*[https://youtu.be/8o1OTwFv7WQ Part 1] [https://youtu.be/f1KS7nSKnxE Part 2] Amstrad CPC Story by [[Nostalgia Nerd]]&lt;br /&gt;
*[https://youtu.be/fB9M6RMtMUE Partie 1] [https://youtu.be/F0CzNJjjkO4 Partie 2] [https://youtu.be/la5IhBbrqPc Partie 3] [https://youtu.be/uUR5oKBxRzA Partie 4] Histoire de l'Amstrad CPC by [[Génération Micros]]&lt;br /&gt;
*[https://youtu.be/mesZ1zbA654 Amstrad : La gamme CPC (1984/1985)] [https://youtu.be/Ijuqsz69Euk Amstrad 6128 Plus] by [[Rodrik Studio]]&lt;br /&gt;
*[https://www.youtube.com/watch?v=O0vvdDx4egk&amp;amp;list=PLIX9fyYxV0k9phQiqATmOe2OZJyeMuY0a C64 vs Amstrad CPC] [https://www.youtube.com/watch?v=JfZ77Ltkols&amp;amp;list=PLIX9fyYxV0k_VOgMOIxseJH1c91KKcxKB ZX Spectrum vs Amstrad CPC]&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Amiga&amp;diff=126265</id>
		<title>Amiga</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Amiga&amp;diff=126265"/>
				<updated>2025-05-23T20:35:08Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: /* Range */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Amiga500 system.jpg|thumb|right|Amiga 500]]&lt;br /&gt;
[[File:Amiga 600.jpg|thumb|right|Amiga 600]]&lt;br /&gt;
[[File:Amiga 1200.jpg|thumb|right|Amiga 1200]]&lt;br /&gt;
[[File:Amiga A1000.jpg|thumb|right|Amiga 1000]]&lt;br /&gt;
[[File:Amiga 2000.gif|thumb|right|Amiga 2000]]&lt;br /&gt;
[[File:Amiga-3000T-compleet.jpg|thumb|right|Amiga 3000T-040]]&lt;br /&gt;
[[File:Amiga CDTV.jpg|thumb|right|Amiga CDTV with all accessories]]&lt;br /&gt;
[[File:Amiga-CD32-wController-L-TRSP.png|thumb|right|Amiga CD32]]&lt;br /&gt;
&lt;br /&gt;
Commodore's 16 bit home computer AMIGA is one of the best known and loved of its generation.&lt;br /&gt;
&lt;br /&gt;
It was maybe the first real Multi Media home computer long before Apple's Mac.&lt;br /&gt;
&lt;br /&gt;
Superficially similar to the [[Atari ST]], using the same [[Motorola 68000]] processor and similar memory and screen modes, but it had a lot of co-processor and sweet architecture tricks making it a powerful computer, with excellent sound hardware for its time. Many early releases were lazy conversions from the ST that did not fully exploit the above (rather like what the Amstrad suffered with Spectrum ports) but later releases largely did exploit the system.&lt;br /&gt;
&lt;br /&gt;
The Amiga had a revolutionary custom-built sound chip that didn't sound like any other computer of its era. What it sounds like is a Fairlight CMI synth - in other words, virtually anything you want. Waveforms are held in RAM and read out at various speeds. &lt;br /&gt;
&lt;br /&gt;
The A500 was perhaps the most well known emblematic model. Famous Amiga originals released for the CPC include [[Lemmings]], [[Defender of the Crown]], [[Sim City]], [[Shadow of the Beast]] and [[Pinball Dreams]].&lt;br /&gt;
&lt;br /&gt;
Although it was great, it was eventually left behind by the PC standard thanks to Commodore's Corporates non sense and failure to develop the design further. The ECS chipset offered minimal improvements over the original, and even the AGA chipset was underwhelming. This is a kind of sweet vengeance for Amstrad users (who suffered the same thing, thank you Lord Sugar...).&lt;br /&gt;
&lt;br /&gt;
Fun fact: the Amiga engineers left an hidden message in some Amigas, triggered by using some key combination, that said: &amp;quot;We made Amiga, They fucked it up&amp;quot;. [https://youtu.be/omMOuyTLmyg Source]&lt;br /&gt;
&lt;br /&gt;
4.85 million units sold.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Range==&lt;br /&gt;
&lt;br /&gt;
*A1000 (1985): Technically an avant-gardiste multimedia PC. Has the OCS chipset.&lt;br /&gt;
*A500 (1987): The first mass-market Amiga model, the most successful, and the one the most games were designed around. The case is the Combo style shared with [[Atari ST]] or even Amstrad [[Plus]] range. All but the latest models use the OCS chipset&lt;br /&gt;
*A2000 (1987): Like the A1000, a PC style professionnal machine. In 1990, Commodore UK sold the A1500, a variant of the A2000 with 2 floppy drives and no hard drive. Like the A1500, the A2500 is not a distinct model but an A2000 equipped with a 68020 or 68030 accelerator card.&lt;br /&gt;
*A3000 (1990): A workstation system aimed at productivity users, using a 68030 processor and the new Kickstart 2 and Workbench 2. In 1991 came the A3000T, an A3000 in a tower case.&lt;br /&gt;
*CDTV (1991): Home multimedia entertainment and video game console. It is essentially an A500 home computer with a CD-ROM drive and remote control. With optional keyboard, mouse, and floppy disk drive, it gained the functionality of the regular Amiga.&lt;br /&gt;
*A500+ (1991): Features the updated Kickstart 2 and Workbench 2, 1MB internal memory and the ECS (Enhanced Chip Set).&lt;br /&gt;
*A600 (1992): a compact A500 with no numeric keypad, looks a lot like the newer C64 (not the bread bin ones). Similar internal hardware to the A500+, though with space for an internal hard drive.&lt;br /&gt;
*A1200 (1992): Intended as a long-term replacement for the A500, with 2MB memory and the new AGA chipset.&lt;br /&gt;
*A4000 (1992): A replacement for the A3000, has the AGA chipset and either a 68030 or 68040 processor. In 1994 came the A4000T, an A4000 in a tower case.&lt;br /&gt;
*CD32 (1993): Video game console marketed as the first 32-bit games console. It is essentially a keyboard-less A1200 home computer without the I/O ports, but with the addition of a CD-ROM drive and an improved version of the AGA chipset. It is the final hardware to be developed by Commodore.&lt;br /&gt;
&lt;br /&gt;
Commodore shut down the Amiga division on April 26, 1994, and filed for bankruptcy three days later. Commodore's assets were purchased by Escom, a German PC manufacturer, who created the subsidiary company Amiga Technologies. They re-released the A1200 and A4000T, and introduced a new 68060 version of the A4000T. But Escom went bankrupt in 1996.&lt;br /&gt;
&lt;br /&gt;
Gateway, an American PC manufacturer, eventually acquired the Amiga brand and technology in 1997. Gateway was then working on a brand new Amiga platform. However this did not materialize and in 2000, Gateway sold the Amiga brand without having released any products.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Block Diagram==&lt;br /&gt;
&lt;br /&gt;
[[File:A500-block-diagram.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
'''Agnus''' (Address GeNerator UnitS) is the core chip in the system, managing all access to chip RAM for the 68000 processor and other custom chips through a complex priority system. It includes the '''Blitter''', which enables fast memory data transfers without processor involvement, and the '''Copper''', a video-synchronized co-processor.&lt;br /&gt;
&lt;br /&gt;
'''Denise''' (Display ENabler) serves as the primary video processor, handling a display of 320 or 640 pixels wide by 200 (NTSC) or 256 (PAL) pixels tall without overscan. It supports interlacing for doubled vertical resolution, though this causes flickering on older monitors. Denise uses planar bitmap graphics with one to five bitplanes for 2 to 32 colors from a 4096-color palette, plus a sixth bitplane for special modes like Halfbrite and Hold-And-Modify (HAM). It also manages eight sprites, single-pixel scrolling, &amp;quot;dual-playfield&amp;quot; mode, and processes mouse and digital joystick inputs.&lt;br /&gt;
&lt;br /&gt;
'''Paula''' (Ports, Audio, Uart and Logic) is the audio chip, featuring four hardware-mixed 8-bit PCM sound channels and sample rates up to 28kHz. Beyond audio, Paula manages interrupts, floppy disk drive, serial port, and analog joystick inputs, along with other I/O tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
*{{EnWiki}}&lt;br /&gt;
*[https://www.amigawiki.org/ AmigaWiki]&lt;br /&gt;
*[https://youtu.be/GhXC_vQ5IkM The iconic &amp;quot;Only Amiga makes it possible&amp;quot; promo video] [https://youtu.be/C97Q-v-YDZE Amiga Commercials]&lt;br /&gt;
*[https://youtu.be/ivpWpffg6G4 All Commodore Amiga games] [https://youtu.be/fe8thkiVrpo Over 100 Amiga games in under 1 hour] [https://youtu.be/TAFUZKzQRa0 Over 100 Amiga AGA games in under 1 hour]&lt;br /&gt;
*[https://www.amiga500archive.com/ Amiga 500 Archive]&lt;br /&gt;
*[https://grandis.nu/turran/ Turran FTP]&lt;br /&gt;
*[https://amiga.net.au/files/Tech_Amiga/Commodore_Amiga_500_Technical_Manual.pdf Amiga 500 Service Manual]&lt;br /&gt;
*[http://amigadev.elowar.com/read/ADCD_2.1/Hardware_Manual_guide/node0001.html Amiga Hardware Reference Manual] [https://retro-commodore.eu/files/downloads/amigamanuals-xiik.net/Other/Amiga%20Hardware%20Reference%20Manual-ENG.pdf PDF version]&lt;br /&gt;
*[https://eab.abime.net/ English Amiga Board]&lt;br /&gt;
*[https://youtu.be/kjapiUQOi2s Commodore History - The Amiga 1000] by [[The 8-Bit Guy]]&lt;br /&gt;
*[https://youtu.be/ws3DJF7MbMU Part 1] [https://youtu.be/BcXcy2b1dRM Part 2] Amiga Story by [[Nostalgia Nerd]]&lt;br /&gt;
*[https://youtu.be/wv4_3WLgyr0 Amiga 1000] [https://youtu.be/I8D_ciE4zi0 Amiga 500] [https://youtu.be/qX7Ki0WkFxk Amiga 600] [https://youtu.be/-GGfu6_gEZs Amiga 3000] presented by [[Rodrik Studio]]&lt;br /&gt;
*[https://www.youtube.com/watch?v=wdUa20kUXM8&amp;amp;list=PLIX9fyYxV0k_NtBiHZtXs_UIccGTbnAjz PC vs Amiga] [https://youtu.be/fQU-WZZ67yM C64 SID vs Amiga Paula sound chip]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: Non CPC Computers]]&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Amiga&amp;diff=126264</id>
		<title>Amiga</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Amiga&amp;diff=126264"/>
				<updated>2025-05-23T20:28:50Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: /* Range */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Amiga500 system.jpg|thumb|right|Amiga 500]]&lt;br /&gt;
[[File:Amiga 600.jpg|thumb|right|Amiga 600]]&lt;br /&gt;
[[File:Amiga 1200.jpg|thumb|right|Amiga 1200]]&lt;br /&gt;
[[File:Amiga A1000.jpg|thumb|right|Amiga 1000]]&lt;br /&gt;
[[File:Amiga 2000.gif|thumb|right|Amiga 2000]]&lt;br /&gt;
[[File:Amiga-3000T-compleet.jpg|thumb|right|Amiga 3000T-040]]&lt;br /&gt;
[[File:Amiga CDTV.jpg|thumb|right|Amiga CDTV with all accessories]]&lt;br /&gt;
[[File:Amiga-CD32-wController-L-TRSP.png|thumb|right|Amiga CD32]]&lt;br /&gt;
&lt;br /&gt;
Commodore's 16 bit home computer AMIGA is one of the best known and loved of its generation.&lt;br /&gt;
&lt;br /&gt;
It was maybe the first real Multi Media home computer long before Apple's Mac.&lt;br /&gt;
&lt;br /&gt;
Superficially similar to the [[Atari ST]], using the same [[Motorola 68000]] processor and similar memory and screen modes, but it had a lot of co-processor and sweet architecture tricks making it a powerful computer, with excellent sound hardware for its time. Many early releases were lazy conversions from the ST that did not fully exploit the above (rather like what the Amstrad suffered with Spectrum ports) but later releases largely did exploit the system.&lt;br /&gt;
&lt;br /&gt;
The Amiga had a revolutionary custom-built sound chip that didn't sound like any other computer of its era. What it sounds like is a Fairlight CMI synth - in other words, virtually anything you want. Waveforms are held in RAM and read out at various speeds. &lt;br /&gt;
&lt;br /&gt;
The A500 was perhaps the most well known emblematic model. Famous Amiga originals released for the CPC include [[Lemmings]], [[Defender of the Crown]], [[Sim City]], [[Shadow of the Beast]] and [[Pinball Dreams]].&lt;br /&gt;
&lt;br /&gt;
Although it was great, it was eventually left behind by the PC standard thanks to Commodore's Corporates non sense and failure to develop the design further. The ECS chipset offered minimal improvements over the original, and even the AGA chipset was underwhelming. This is a kind of sweet vengeance for Amstrad users (who suffered the same thing, thank you Lord Sugar...).&lt;br /&gt;
&lt;br /&gt;
Fun fact: the Amiga engineers left an hidden message in some Amigas, triggered by using some key combination, that said: &amp;quot;We made Amiga, They fucked it up&amp;quot;. [https://youtu.be/omMOuyTLmyg Source]&lt;br /&gt;
&lt;br /&gt;
4.85 million units sold.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Range==&lt;br /&gt;
&lt;br /&gt;
*A1000 (1985): Technically an avant-gardiste multimedia PC. Has the OCS chipset.&lt;br /&gt;
*A500 (1987): The first mass-market Amiga model, the most successful, and the one the most games were designed around. The case is the Combo style shared with [[Atari ST]] or even Amstrad [[Plus]] range. All but the latest models use the OCS chipset&lt;br /&gt;
*A2000 (1987): Like the A1000, a PC style professionnal machine. In 1990, Commodore UK sold the A1500, a variant of the A2000 with 2 floppy drives and no hard drive. Like the A1500, the A2500 is not a distinct model but an A2000 equipped with a 68020 or 68030 accelerator card.&lt;br /&gt;
*A3000 (1990): A workstation system aimed at productivity users, using a 68030 processor and the new Kickstart 2 and Workbench 2. In 1991 came the A3000T, an A3000 in a tower case.&lt;br /&gt;
*CDTV (1991): Home multimedia entertainment and video game console. It is essentially an A500 home computer with a CD-ROM drive and remote control. With optional keyboard, mouse, and floppy disk drive, it gained the functionality of the regular Amiga.&lt;br /&gt;
*A500+ (1991): Features the updated Kickstart 2 and Workbench 2, 1MB internal memory and the ECS (Enhanced Chip Set).&lt;br /&gt;
*A600 (1992): a compact A500 with no numeric keypad, looks a lot like the newer C64 (not the bread bin ones). Similar internal hardware to the A500+, though with space for an internal hard drive.&lt;br /&gt;
*A1200 (1992): Intended as a long-term replacement for the A500, with 2MB memory and the new AGA chipset.&lt;br /&gt;
*A4000 (1992): A replacement for the A3000, has the AGA chipset and either a 68030 or 68040 processor. In 1994 came the A4000T, an A4000 in a tower case.&lt;br /&gt;
*CD32 (1993): Video game console marketed as the first 32-bit games console. It is essentially a keyboard-less A1200 home computer without the I/O ports, but with the addition of a CD-ROM drive and an improved version of the AGA chipset. It is the final hardware to be developed by Commodore.&lt;br /&gt;
&lt;br /&gt;
Commodore shut down the Amiga division on April 26, 1994, and filed for bankruptcy three days later. Commodore's assets were purchased by Escom, a German PC manufacturer, who created the subsidiary company Amiga Technologies. They re-released the A1200 and A4000T, and introduced a new 68060 version of the A4000T. But Escom went bankrupt in 1996.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Block Diagram==&lt;br /&gt;
&lt;br /&gt;
[[File:A500-block-diagram.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
'''Agnus''' (Address GeNerator UnitS) is the core chip in the system, managing all access to chip RAM for the 68000 processor and other custom chips through a complex priority system. It includes the '''Blitter''', which enables fast memory data transfers without processor involvement, and the '''Copper''', a video-synchronized co-processor.&lt;br /&gt;
&lt;br /&gt;
'''Denise''' (Display ENabler) serves as the primary video processor, handling a display of 320 or 640 pixels wide by 200 (NTSC) or 256 (PAL) pixels tall without overscan. It supports interlacing for doubled vertical resolution, though this causes flickering on older monitors. Denise uses planar bitmap graphics with one to five bitplanes for 2 to 32 colors from a 4096-color palette, plus a sixth bitplane for special modes like Halfbrite and Hold-And-Modify (HAM). It also manages eight sprites, single-pixel scrolling, &amp;quot;dual-playfield&amp;quot; mode, and processes mouse and digital joystick inputs.&lt;br /&gt;
&lt;br /&gt;
'''Paula''' (Ports, Audio, Uart and Logic) is the audio chip, featuring four hardware-mixed 8-bit PCM sound channels and sample rates up to 28kHz. Beyond audio, Paula manages interrupts, floppy disk drive, serial port, and analog joystick inputs, along with other I/O tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
*{{EnWiki}}&lt;br /&gt;
*[https://www.amigawiki.org/ AmigaWiki]&lt;br /&gt;
*[https://youtu.be/GhXC_vQ5IkM The iconic &amp;quot;Only Amiga makes it possible&amp;quot; promo video] [https://youtu.be/C97Q-v-YDZE Amiga Commercials]&lt;br /&gt;
*[https://youtu.be/ivpWpffg6G4 All Commodore Amiga games] [https://youtu.be/fe8thkiVrpo Over 100 Amiga games in under 1 hour] [https://youtu.be/TAFUZKzQRa0 Over 100 Amiga AGA games in under 1 hour]&lt;br /&gt;
*[https://www.amiga500archive.com/ Amiga 500 Archive]&lt;br /&gt;
*[https://grandis.nu/turran/ Turran FTP]&lt;br /&gt;
*[https://amiga.net.au/files/Tech_Amiga/Commodore_Amiga_500_Technical_Manual.pdf Amiga 500 Service Manual]&lt;br /&gt;
*[http://amigadev.elowar.com/read/ADCD_2.1/Hardware_Manual_guide/node0001.html Amiga Hardware Reference Manual] [https://retro-commodore.eu/files/downloads/amigamanuals-xiik.net/Other/Amiga%20Hardware%20Reference%20Manual-ENG.pdf PDF version]&lt;br /&gt;
*[https://eab.abime.net/ English Amiga Board]&lt;br /&gt;
*[https://youtu.be/kjapiUQOi2s Commodore History - The Amiga 1000] by [[The 8-Bit Guy]]&lt;br /&gt;
*[https://youtu.be/ws3DJF7MbMU Part 1] [https://youtu.be/BcXcy2b1dRM Part 2] Amiga Story by [[Nostalgia Nerd]]&lt;br /&gt;
*[https://youtu.be/wv4_3WLgyr0 Amiga 1000] [https://youtu.be/I8D_ciE4zi0 Amiga 500] [https://youtu.be/qX7Ki0WkFxk Amiga 600] [https://youtu.be/-GGfu6_gEZs Amiga 3000] presented by [[Rodrik Studio]]&lt;br /&gt;
*[https://www.youtube.com/watch?v=wdUa20kUXM8&amp;amp;list=PLIX9fyYxV0k_NtBiHZtXs_UIccGTbnAjz PC vs Amiga] [https://youtu.be/fQU-WZZ67yM C64 SID vs Amiga Paula sound chip]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: Non CPC Computers]]&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Amiga&amp;diff=126263</id>
		<title>Amiga</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Amiga&amp;diff=126263"/>
				<updated>2025-05-23T20:22:15Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Amiga500 system.jpg|thumb|right|Amiga 500]]&lt;br /&gt;
[[File:Amiga 600.jpg|thumb|right|Amiga 600]]&lt;br /&gt;
[[File:Amiga 1200.jpg|thumb|right|Amiga 1200]]&lt;br /&gt;
[[File:Amiga A1000.jpg|thumb|right|Amiga 1000]]&lt;br /&gt;
[[File:Amiga 2000.gif|thumb|right|Amiga 2000]]&lt;br /&gt;
[[File:Amiga-3000T-compleet.jpg|thumb|right|Amiga 3000T-040]]&lt;br /&gt;
[[File:Amiga CDTV.jpg|thumb|right|Amiga CDTV with all accessories]]&lt;br /&gt;
[[File:Amiga-CD32-wController-L-TRSP.png|thumb|right|Amiga CD32]]&lt;br /&gt;
&lt;br /&gt;
Commodore's 16 bit home computer AMIGA is one of the best known and loved of its generation.&lt;br /&gt;
&lt;br /&gt;
It was maybe the first real Multi Media home computer long before Apple's Mac.&lt;br /&gt;
&lt;br /&gt;
Superficially similar to the [[Atari ST]], using the same [[Motorola 68000]] processor and similar memory and screen modes, but it had a lot of co-processor and sweet architecture tricks making it a powerful computer, with excellent sound hardware for its time. Many early releases were lazy conversions from the ST that did not fully exploit the above (rather like what the Amstrad suffered with Spectrum ports) but later releases largely did exploit the system.&lt;br /&gt;
&lt;br /&gt;
The Amiga had a revolutionary custom-built sound chip that didn't sound like any other computer of its era. What it sounds like is a Fairlight CMI synth - in other words, virtually anything you want. Waveforms are held in RAM and read out at various speeds. &lt;br /&gt;
&lt;br /&gt;
The A500 was perhaps the most well known emblematic model. Famous Amiga originals released for the CPC include [[Lemmings]], [[Defender of the Crown]], [[Sim City]], [[Shadow of the Beast]] and [[Pinball Dreams]].&lt;br /&gt;
&lt;br /&gt;
Although it was great, it was eventually left behind by the PC standard thanks to Commodore's Corporates non sense and failure to develop the design further. The ECS chipset offered minimal improvements over the original, and even the AGA chipset was underwhelming. This is a kind of sweet vengeance for Amstrad users (who suffered the same thing, thank you Lord Sugar...).&lt;br /&gt;
&lt;br /&gt;
Fun fact: the Amiga engineers left an hidden message in some Amigas, triggered by using some key combination, that said: &amp;quot;We made Amiga, They fucked it up&amp;quot;. [https://youtu.be/omMOuyTLmyg Source]&lt;br /&gt;
&lt;br /&gt;
4.85 million units sold.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Range==&lt;br /&gt;
&lt;br /&gt;
*A1000 (1985): Technically an avant-gardiste multimedia PC. Has the OCS chipset.&lt;br /&gt;
*A500 (1987): The first mass-market Amiga model, the most successful, and the one the most games were designed around. The case is the Combo style shared with [[Atari ST]] or even Amstrad [[Plus]] range. All but the latest models use the OCS chipset&lt;br /&gt;
*A2000 (1987): Like the A1000, a PC style professionnal machine. In 1990, Commodore UK sold the A1500, a variant of the A2000 with 2 floppy drives and no hard drive. Like the A1500, the A2500 is not a distinct model but an A2000 equipped with a 68020 or 68030 accelerator card.&lt;br /&gt;
*A3000 (1990): A workstation system aimed at productivity users, using a 68030 processor and the new Kickstart 2 and Workbench 2. In 1991 came the A3000T, an A3000 in a tower case.&lt;br /&gt;
*CDTV (1991): Home multimedia entertainment and video game console. It is essentially an A500 home computer with a CD-ROM drive and remote control. With optional keyboard, mouse, and floppy disk drive, it gained the functionality of the regular Amiga.&lt;br /&gt;
*A500+ (1991): Features the updated Kickstart 2 and Workbench 2, 1MB internal memory and the ECS (Enhanced Chip Set).&lt;br /&gt;
*A600 (1992): a compact A500 with no numeric keypad, looks a lot like the newer C64 (not the bread bin ones). Similar internal hardware to the A500+, though with space for an internal hard drive.&lt;br /&gt;
*A1200 (1992): Intended as a long-term replacement for the A500, with 2MB memory and the new AGA chipset.&lt;br /&gt;
*A4000 (1992): A replacement for the A3000, has the AGA chipset and either a 68030 or 68040 processor. In 1994 came the A4000T, an A4000 in a tower case.&lt;br /&gt;
*CD32 (1993): Video game console marketed as the first 32-bit games console. It is essentially a keyboard-less A1200 home computer without the I/O ports, but with the addition of a CD-ROM drive and an improved version of the AGA chipset. It is the final hardware to be developed by Commodore.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Block Diagram==&lt;br /&gt;
&lt;br /&gt;
[[File:A500-block-diagram.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
'''Agnus''' (Address GeNerator UnitS) is the core chip in the system, managing all access to chip RAM for the 68000 processor and other custom chips through a complex priority system. It includes the '''Blitter''', which enables fast memory data transfers without processor involvement, and the '''Copper''', a video-synchronized co-processor.&lt;br /&gt;
&lt;br /&gt;
'''Denise''' (Display ENabler) serves as the primary video processor, handling a display of 320 or 640 pixels wide by 200 (NTSC) or 256 (PAL) pixels tall without overscan. It supports interlacing for doubled vertical resolution, though this causes flickering on older monitors. Denise uses planar bitmap graphics with one to five bitplanes for 2 to 32 colors from a 4096-color palette, plus a sixth bitplane for special modes like Halfbrite and Hold-And-Modify (HAM). It also manages eight sprites, single-pixel scrolling, &amp;quot;dual-playfield&amp;quot; mode, and processes mouse and digital joystick inputs.&lt;br /&gt;
&lt;br /&gt;
'''Paula''' (Ports, Audio, Uart and Logic) is the audio chip, featuring four hardware-mixed 8-bit PCM sound channels and sample rates up to 28kHz. Beyond audio, Paula manages interrupts, floppy disk drive, serial port, and analog joystick inputs, along with other I/O tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
*{{EnWiki}}&lt;br /&gt;
*[https://www.amigawiki.org/ AmigaWiki]&lt;br /&gt;
*[https://youtu.be/GhXC_vQ5IkM The iconic &amp;quot;Only Amiga makes it possible&amp;quot; promo video] [https://youtu.be/C97Q-v-YDZE Amiga Commercials]&lt;br /&gt;
*[https://youtu.be/ivpWpffg6G4 All Commodore Amiga games] [https://youtu.be/fe8thkiVrpo Over 100 Amiga games in under 1 hour] [https://youtu.be/TAFUZKzQRa0 Over 100 Amiga AGA games in under 1 hour]&lt;br /&gt;
*[https://www.amiga500archive.com/ Amiga 500 Archive]&lt;br /&gt;
*[https://grandis.nu/turran/ Turran FTP]&lt;br /&gt;
*[https://amiga.net.au/files/Tech_Amiga/Commodore_Amiga_500_Technical_Manual.pdf Amiga 500 Service Manual]&lt;br /&gt;
*[http://amigadev.elowar.com/read/ADCD_2.1/Hardware_Manual_guide/node0001.html Amiga Hardware Reference Manual] [https://retro-commodore.eu/files/downloads/amigamanuals-xiik.net/Other/Amiga%20Hardware%20Reference%20Manual-ENG.pdf PDF version]&lt;br /&gt;
*[https://eab.abime.net/ English Amiga Board]&lt;br /&gt;
*[https://youtu.be/kjapiUQOi2s Commodore History - The Amiga 1000] by [[The 8-Bit Guy]]&lt;br /&gt;
*[https://youtu.be/ws3DJF7MbMU Part 1] [https://youtu.be/BcXcy2b1dRM Part 2] Amiga Story by [[Nostalgia Nerd]]&lt;br /&gt;
*[https://youtu.be/wv4_3WLgyr0 Amiga 1000] [https://youtu.be/I8D_ciE4zi0 Amiga 500] [https://youtu.be/qX7Ki0WkFxk Amiga 600] [https://youtu.be/-GGfu6_gEZs Amiga 3000] presented by [[Rodrik Studio]]&lt;br /&gt;
*[https://www.youtube.com/watch?v=wdUa20kUXM8&amp;amp;list=PLIX9fyYxV0k_NtBiHZtXs_UIccGTbnAjz PC vs Amiga] [https://youtu.be/fQU-WZZ67yM C64 SID vs Amiga Paula sound chip]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: Non CPC Computers]]&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=File:Amiga_1200.jpg&amp;diff=126262</id>
		<title>File:Amiga 1200.jpg</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=File:Amiga_1200.jpg&amp;diff=126262"/>
				<updated>2025-05-23T20:18:44Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Amiga&amp;diff=126260</id>
		<title>Amiga</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Amiga&amp;diff=126260"/>
				<updated>2025-05-23T19:57:47Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Amiga A1000.jpg|thumb|right|Amiga 1000]]&lt;br /&gt;
[[File:Amiga500 system.jpg|thumb|right|Amiga 500]]&lt;br /&gt;
[[File:Amiga 600.jpg|thumb|right|Amiga 600]]&lt;br /&gt;
[[File:Amiga 2000.gif|thumb|right|Amiga 2000]]&lt;br /&gt;
[[File:Amiga-3000T-compleet.jpg|thumb|right|Amiga 3000T-040]]&lt;br /&gt;
[[File:Amiga CDTV.jpg|thumb|right|Amiga CDTV with all accessories]]&lt;br /&gt;
[[File:Amiga-CD32-wController-L-TRSP.png|thumb|right|Amiga CD32]]&lt;br /&gt;
&lt;br /&gt;
Commodore's 16 bit home computer AMIGA is one of the best known and loved of its generation.&lt;br /&gt;
&lt;br /&gt;
It was maybe the first real Multi Media home computer long before Apple's Mac.&lt;br /&gt;
&lt;br /&gt;
Superficially similar to the [[Atari ST]], using the same [[Motorola 68000]] processor and similar memory and screen modes, but it had a lot of co-processor and sweet architecture tricks making it a powerful computer, with excellent sound hardware for its time. Many early releases were lazy conversions from the ST that did not fully exploit the above (rather like what the Amstrad suffered with Spectrum ports) but later releases largely did exploit the system.&lt;br /&gt;
&lt;br /&gt;
The Amiga had a revolutionary custom-built sound chip that didn't sound like any other computer of its era. What it sounds like is a Fairlight CMI synth - in other words, virtually anything you want. Waveforms are held in RAM and read out at various speeds. &lt;br /&gt;
&lt;br /&gt;
The A500 was perhaps the most well known emblematic model. Famous Amiga originals released for the CPC include [[Lemmings]], [[Defender of the Crown]], [[Sim City]], [[Shadow of the Beast]] and [[Pinball Dreams]].&lt;br /&gt;
&lt;br /&gt;
Although it was great, it was eventually left behind by the PC standard thanks to Commodore's Corporates non sense and failure to develop the design further. The ECS chipset offered minimal improvements over the original, and even the AGA chipset was underwhelming. This is a kind of sweet vengeance for Amstrad users (who suffered the same thing, thank you Lord Sugar...).&lt;br /&gt;
&lt;br /&gt;
Fun fact: the Amiga engineers left an hidden message in some Amigas, triggered by using some key combination, that said: &amp;quot;We made Amiga, They fucked it up&amp;quot;. [https://youtu.be/omMOuyTLmyg Source]&lt;br /&gt;
&lt;br /&gt;
4.85 million units sold.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Range==&lt;br /&gt;
&lt;br /&gt;
*A1000 (1985): Technically an avant-gardiste multimedia PC. Has the OCS chipset.&lt;br /&gt;
*A500 (1987): The first mass-market Amiga model, the most successful, and the one the most games were designed around. The case is the Combo style shared with [[Atari ST]] or even Amstrad [[Plus]] range. All but the latest models use the OCS chipset&lt;br /&gt;
*A2000 (1987): Like the A1000, a PC style professionnal machine. In 1990, Commodore UK sold the A1500, a variant of the A2000 with 2 floppy drives and no hard drive. Like the A1500, the A2500 is not a distinct model but an A2000 equipped with a 68020 or 68030 accelerator card.&lt;br /&gt;
*A3000 (1990): A workstation system aimed at productivity users, using a 68030 processor and the new Kickstart 2 and Workbench 2. In 1991 came the A3000T, an A3000 in a tower case.&lt;br /&gt;
*CDTV (1991): Home multimedia entertainment and video game console. It is essentially an A500 home computer with a CD-ROM drive and remote control. With optional keyboard, mouse, and floppy disk drive, it gained the functionality of the regular Amiga.&lt;br /&gt;
*A500+ (1991): Features the updated Kickstart 2 and Workbench 2, 1MB internal memory and the ECS (Enhanced Chip Set).&lt;br /&gt;
*A600 (1992): a compact A500 with no numeric keypad, looks a lot like the newer C64 (not the bread bin ones). Similar internal hardware to the A500+, though with space for an internal hard drive.&lt;br /&gt;
*A1200 (1992): Intended as a long-term replacement for the A500, with 2MB memory and the new AGA chipset.&lt;br /&gt;
*A4000 (1992): A replacement for the A3000, has the AGA chipset and either a 68030 or 68040 processor. In 1994 came the A4000T, an A4000 in a tower case.&lt;br /&gt;
*CD32 (1993): Video game console marketed as the first 32-bit games console. It is essentially a keyboard-less A1200 home computer without the I/O ports, but with the addition of a CD-ROM drive and an improved version of the AGA chipset. It is the final hardware to be developed by Commodore.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Block Diagram==&lt;br /&gt;
&lt;br /&gt;
[[File:A500-block-diagram.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
'''Agnus''' (Address GeNerator UnitS) is the core chip in the system, managing all access to chip RAM for the 68000 processor and other custom chips through a complex priority system. It includes the '''Blitter''', which enables fast memory data transfers without processor involvement, and the '''Copper''', a video-synchronized co-processor.&lt;br /&gt;
&lt;br /&gt;
'''Denise''' (Display ENabler) serves as the primary video processor, handling a display of 320 or 640 pixels wide by 200 (NTSC) or 256 (PAL) pixels tall without overscan. It supports interlacing for doubled vertical resolution, though this causes flickering on older monitors. Denise uses planar bitmap graphics with one to five bitplanes for 2 to 32 colors from a 4096-color palette, plus a sixth bitplane for special modes like Halfbrite and Hold-And-Modify (HAM). It also manages eight sprites, single-pixel scrolling, &amp;quot;dual-playfield&amp;quot; mode, and processes mouse and digital joystick inputs.&lt;br /&gt;
&lt;br /&gt;
'''Paula''' (Ports, Audio, Uart and Logic) is the audio chip, featuring four hardware-mixed 8-bit PCM sound channels and sample rates up to 28kHz. Beyond audio, Paula manages interrupts, floppy disk drive, serial port, and analog joystick inputs, along with other I/O tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
*{{EnWiki}}&lt;br /&gt;
*[https://www.amigawiki.org/ AmigaWiki]&lt;br /&gt;
*[https://youtu.be/GhXC_vQ5IkM The iconic &amp;quot;Only Amiga makes it possible&amp;quot; promo video] [https://youtu.be/C97Q-v-YDZE Amiga Commercials]&lt;br /&gt;
*[https://youtu.be/ivpWpffg6G4 All Commodore Amiga games] [https://youtu.be/fe8thkiVrpo Over 100 Amiga games in under 1 hour] [https://youtu.be/TAFUZKzQRa0 Over 100 Amiga AGA games in under 1 hour]&lt;br /&gt;
*[https://www.amiga500archive.com/ Amiga 500 Archive]&lt;br /&gt;
*[https://grandis.nu/turran/ Turran FTP]&lt;br /&gt;
*[https://amiga.net.au/files/Tech_Amiga/Commodore_Amiga_500_Technical_Manual.pdf Amiga 500 Service Manual]&lt;br /&gt;
*[http://amigadev.elowar.com/read/ADCD_2.1/Hardware_Manual_guide/node0001.html Amiga Hardware Reference Manual] [https://retro-commodore.eu/files/downloads/amigamanuals-xiik.net/Other/Amiga%20Hardware%20Reference%20Manual-ENG.pdf PDF version]&lt;br /&gt;
*[https://eab.abime.net/ English Amiga Board]&lt;br /&gt;
*[https://youtu.be/kjapiUQOi2s Commodore History - The Amiga 1000] by [[The 8-Bit Guy]]&lt;br /&gt;
*[https://youtu.be/ws3DJF7MbMU Part 1] [https://youtu.be/BcXcy2b1dRM Part 2] Amiga Story by [[Nostalgia Nerd]]&lt;br /&gt;
*[https://youtu.be/wv4_3WLgyr0 Amiga 1000] [https://youtu.be/I8D_ciE4zi0 Amiga 500] [https://youtu.be/qX7Ki0WkFxk Amiga 600] [https://youtu.be/-GGfu6_gEZs Amiga 3000] presented by [[Rodrik Studio]]&lt;br /&gt;
*[https://www.youtube.com/watch?v=wdUa20kUXM8&amp;amp;list=PLIX9fyYxV0k_NtBiHZtXs_UIccGTbnAjz PC vs Amiga] [https://youtu.be/fQU-WZZ67yM C64 SID vs Amiga Paula sound chip]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: Non CPC Computers]]&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Amiga&amp;diff=126259</id>
		<title>Amiga</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Amiga&amp;diff=126259"/>
				<updated>2025-05-23T19:57:29Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Amiga A1000.jpg|thumb|right|Amiga 1000]]&lt;br /&gt;
[[File:Amiga500 system.jpg|thumb|right|Amiga 500]]&lt;br /&gt;
[[File:Amiga 600.jpg|thumb|right|Amiga 600]]&lt;br /&gt;
[[File:Amiga 2000.gif|thumb|right|Amiga 2000]]&lt;br /&gt;
[[File:Amiga-3000T-compleet.jpg|thumb|right|Amiga 3000T-040]]&lt;br /&gt;
[[File:Amiga CDTV.jpg|thumb|right|Amiga CDTV with all accessories]]&lt;br /&gt;
[[File:Amiga-CD32-wController-L-TRSP.png|thumb|right|Amiga CD32]]&lt;br /&gt;
&lt;br /&gt;
Commodore's 16 bit home computer AMIGA is one of the best known and loved of its generation.&lt;br /&gt;
&lt;br /&gt;
It was maybe the first real Multi Media home computer long before Apple's Mac.&lt;br /&gt;
&lt;br /&gt;
Superficially similar to the [[Atari ST]], using the same [[Motorola 68000]] processor and similar memory and screen modes, but it had a lot of co-processor and sweet architecture tricks making it a powerful computer, with excellent sound hardware for its time. Many early releases were lazy conversions from the ST that did not fully exploit the above (rather like what the Amstrad suffered with Spectrum ports) but later releases largely did exploit the system.&lt;br /&gt;
&lt;br /&gt;
The Amiga had a revolutionary custom-built sound chip that didn't sound like any other computer of its era. It sounds like a Fairlight CMI synth - in other words, virtually anything you want. Waveforms are held in RAM and read out at various speeds. &lt;br /&gt;
&lt;br /&gt;
The A500 was perhaps the most well known emblematic model. Famous Amiga originals released for the CPC include [[Lemmings]], [[Defender of the Crown]], [[Sim City]], [[Shadow of the Beast]] and [[Pinball Dreams]].&lt;br /&gt;
&lt;br /&gt;
Although it was great, it was eventually left behind by the PC standard thanks to Commodore's Corporates non sense and failure to develop the design further. The ECS chipset offered minimal improvements over the original, and even the AGA chipset was underwhelming. This is a kind of sweet vengeance for Amstrad users (who suffered the same thing, thank you Lord Sugar...).&lt;br /&gt;
&lt;br /&gt;
Fun fact: the Amiga engineers left an hidden message in some Amigas, triggered by using some key combination, that said: &amp;quot;We made Amiga, They fucked it up&amp;quot;. [https://youtu.be/omMOuyTLmyg Source]&lt;br /&gt;
&lt;br /&gt;
4.85 million units sold.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Range==&lt;br /&gt;
&lt;br /&gt;
*A1000 (1985): Technically an avant-gardiste multimedia PC. Has the OCS chipset.&lt;br /&gt;
*A500 (1987): The first mass-market Amiga model, the most successful, and the one the most games were designed around. The case is the Combo style shared with [[Atari ST]] or even Amstrad [[Plus]] range. All but the latest models use the OCS chipset&lt;br /&gt;
*A2000 (1987): Like the A1000, a PC style professionnal machine. In 1990, Commodore UK sold the A1500, a variant of the A2000 with 2 floppy drives and no hard drive. Like the A1500, the A2500 is not a distinct model but an A2000 equipped with a 68020 or 68030 accelerator card.&lt;br /&gt;
*A3000 (1990): A workstation system aimed at productivity users, using a 68030 processor and the new Kickstart 2 and Workbench 2. In 1991 came the A3000T, an A3000 in a tower case.&lt;br /&gt;
*CDTV (1991): Home multimedia entertainment and video game console. It is essentially an A500 home computer with a CD-ROM drive and remote control. With optional keyboard, mouse, and floppy disk drive, it gained the functionality of the regular Amiga.&lt;br /&gt;
*A500+ (1991): Features the updated Kickstart 2 and Workbench 2, 1MB internal memory and the ECS (Enhanced Chip Set).&lt;br /&gt;
*A600 (1992): a compact A500 with no numeric keypad, looks a lot like the newer C64 (not the bread bin ones). Similar internal hardware to the A500+, though with space for an internal hard drive.&lt;br /&gt;
*A1200 (1992): Intended as a long-term replacement for the A500, with 2MB memory and the new AGA chipset.&lt;br /&gt;
*A4000 (1992): A replacement for the A3000, has the AGA chipset and either a 68030 or 68040 processor. In 1994 came the A4000T, an A4000 in a tower case.&lt;br /&gt;
*CD32 (1993): Video game console marketed as the first 32-bit games console. It is essentially a keyboard-less A1200 home computer without the I/O ports, but with the addition of a CD-ROM drive and an improved version of the AGA chipset. It is the final hardware to be developed by Commodore.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Block Diagram==&lt;br /&gt;
&lt;br /&gt;
[[File:A500-block-diagram.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
'''Agnus''' (Address GeNerator UnitS) is the core chip in the system, managing all access to chip RAM for the 68000 processor and other custom chips through a complex priority system. It includes the '''Blitter''', which enables fast memory data transfers without processor involvement, and the '''Copper''', a video-synchronized co-processor.&lt;br /&gt;
&lt;br /&gt;
'''Denise''' (Display ENabler) serves as the primary video processor, handling a display of 320 or 640 pixels wide by 200 (NTSC) or 256 (PAL) pixels tall without overscan. It supports interlacing for doubled vertical resolution, though this causes flickering on older monitors. Denise uses planar bitmap graphics with one to five bitplanes for 2 to 32 colors from a 4096-color palette, plus a sixth bitplane for special modes like Halfbrite and Hold-And-Modify (HAM). It also manages eight sprites, single-pixel scrolling, &amp;quot;dual-playfield&amp;quot; mode, and processes mouse and digital joystick inputs.&lt;br /&gt;
&lt;br /&gt;
'''Paula''' (Ports, Audio, Uart and Logic) is the audio chip, featuring four hardware-mixed 8-bit PCM sound channels and sample rates up to 28kHz. Beyond audio, Paula manages interrupts, floppy disk drive, serial port, and analog joystick inputs, along with other I/O tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
*{{EnWiki}}&lt;br /&gt;
*[https://www.amigawiki.org/ AmigaWiki]&lt;br /&gt;
*[https://youtu.be/GhXC_vQ5IkM The iconic &amp;quot;Only Amiga makes it possible&amp;quot; promo video] [https://youtu.be/C97Q-v-YDZE Amiga Commercials]&lt;br /&gt;
*[https://youtu.be/ivpWpffg6G4 All Commodore Amiga games] [https://youtu.be/fe8thkiVrpo Over 100 Amiga games in under 1 hour] [https://youtu.be/TAFUZKzQRa0 Over 100 Amiga AGA games in under 1 hour]&lt;br /&gt;
*[https://www.amiga500archive.com/ Amiga 500 Archive]&lt;br /&gt;
*[https://grandis.nu/turran/ Turran FTP]&lt;br /&gt;
*[https://amiga.net.au/files/Tech_Amiga/Commodore_Amiga_500_Technical_Manual.pdf Amiga 500 Service Manual]&lt;br /&gt;
*[http://amigadev.elowar.com/read/ADCD_2.1/Hardware_Manual_guide/node0001.html Amiga Hardware Reference Manual] [https://retro-commodore.eu/files/downloads/amigamanuals-xiik.net/Other/Amiga%20Hardware%20Reference%20Manual-ENG.pdf PDF version]&lt;br /&gt;
*[https://eab.abime.net/ English Amiga Board]&lt;br /&gt;
*[https://youtu.be/kjapiUQOi2s Commodore History - The Amiga 1000] by [[The 8-Bit Guy]]&lt;br /&gt;
*[https://youtu.be/ws3DJF7MbMU Part 1] [https://youtu.be/BcXcy2b1dRM Part 2] Amiga Story by [[Nostalgia Nerd]]&lt;br /&gt;
*[https://youtu.be/wv4_3WLgyr0 Amiga 1000] [https://youtu.be/I8D_ciE4zi0 Amiga 500] [https://youtu.be/qX7Ki0WkFxk Amiga 600] [https://youtu.be/-GGfu6_gEZs Amiga 3000] presented by [[Rodrik Studio]]&lt;br /&gt;
*[https://www.youtube.com/watch?v=wdUa20kUXM8&amp;amp;list=PLIX9fyYxV0k_NtBiHZtXs_UIccGTbnAjz PC vs Amiga] [https://youtu.be/fQU-WZZ67yM C64 SID vs Amiga Paula sound chip]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: Non CPC Computers]]&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Amiga&amp;diff=126256</id>
		<title>Amiga</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Amiga&amp;diff=126256"/>
				<updated>2025-05-23T19:40:48Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Amiga A1000.jpg|thumb|right|Amiga 1000]]&lt;br /&gt;
[[File:Amiga500 system.jpg|thumb|right|Amiga 500]]&lt;br /&gt;
[[File:Amiga 600.jpg|thumb|right|Amiga 600]]&lt;br /&gt;
[[File:Amiga 2000.gif|thumb|right|Amiga 2000]]&lt;br /&gt;
[[File:Amiga-3000T-compleet.jpg|thumb|right|Amiga 3000T-040]]&lt;br /&gt;
[[File:Amiga CDTV.jpg|thumb|right|Amiga CDTV with all accessories]]&lt;br /&gt;
[[File:Amiga-CD32-wController-L-TRSP.png|thumb|right|Amiga CD32]]&lt;br /&gt;
&lt;br /&gt;
Commodore's 16 bit home computer AMIGA is one of the best known and loved of its generation.&lt;br /&gt;
&lt;br /&gt;
It was maybe the first real Multi Media home computer long before Apple's Mac.&lt;br /&gt;
&lt;br /&gt;
Superficially similar to the [[Atari ST]], using the same [[Motorola 68000]] processor and similar memory and screen modes, but it had a lot of co-processor and sweet architecture tricks making it a powerful computer, with excellent sound hardware for its time. Many early releases were lazy conversions from the ST that did not fully exploit the above (rather like what the Amstrad suffered with Spectrum ports) but later releases largely did exploit the system.&lt;br /&gt;
&lt;br /&gt;
The Amiga had a revolutionary custom-built sound chip that didn't sound like any other computer of its era. It sounds like is a Fairlight CMI synth - in other words, virtually anything you want. Waveforms are held in RAM and read out at various speeds. &lt;br /&gt;
&lt;br /&gt;
The A500 was perhaps the most well known emblematic model. Famous Amiga originals released for the CPC include [[Lemmings]], [[Defender of the Crown]], [[Sim City]], [[Shadow of the Beast]] and [[Pinball Dreams]].&lt;br /&gt;
&lt;br /&gt;
Although it was great, it was eventually left behind by the PC standard thanks to Commodore's Corporates non sense and failure to develop the design further. The ECS chipset offered minimal improvements over the original, and even the AGA chipset was underwhelming. This is a kind of sweet vengeance for Amstrad users (who suffered the same thing, thank you Lord Sugar...).&lt;br /&gt;
&lt;br /&gt;
Fun fact: the Amiga engineers left an hidden message in some Amigas, triggered by using some key combination, that said: &amp;quot;We made Amiga, They fucked it up&amp;quot;. [https://youtu.be/omMOuyTLmyg Source]&lt;br /&gt;
&lt;br /&gt;
4.85 million units sold.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Range==&lt;br /&gt;
&lt;br /&gt;
*A1000 (1985): Technically an avant-gardiste multimedia PC. Has the OCS chipset.&lt;br /&gt;
*A500 (1987): The first mass-market Amiga model, the most successful, and the one the most games were designed around. The case is the Combo style shared with [[Atari ST]] or even Amstrad [[Plus]] range. All but the latest models use the OCS chipset&lt;br /&gt;
*A2000 (1987): Like the A1000, a PC style professionnal machine. In 1990, Commodore UK sold the A1500, a variant of the A2000 with 2 floppy drives and no hard drive. Like the A1500, the A2500 is not a distinct model but an A2000 equipped with a 68020 or 68030 accelerator card.&lt;br /&gt;
*A3000 (1990): A workstation system aimed at productivity users, using a 68030 processor and the new Kickstart 2 and Workbench 2. In 1991 came the A3000T, an A3000 in a tower case.&lt;br /&gt;
*CDTV (1991): Home multimedia entertainment and video game console. It is essentially an A500 home computer with a CD-ROM drive and remote control. With optional keyboard, mouse, and floppy disk drive, it gained the functionality of the regular Amiga.&lt;br /&gt;
*A500+ (1991): Features the updated Kickstart 2 and Workbench 2, 1MB internal memory and the ECS (Enhanced Chip Set).&lt;br /&gt;
*A600 (1992): a compact A500 with no numeric keypad, looks a lot like the newer C64 (not the bread bin ones). Similar internal hardware to the A500+, though with space for an internal hard drive.&lt;br /&gt;
*A1200 (1992): Intended as a long-term replacement for the A500, with 2MB memory and the new AGA chipset.&lt;br /&gt;
*A4000 (1992): A replacement for the A3000, has the AGA chipset and either a 68030 or 68040 processor. In 1994 came the A4000T, an A4000 in a tower case.&lt;br /&gt;
*CD32 (1993): Video game console marketed as the first 32-bit games console. It is essentially a keyboard-less A1200 home computer without the I/O ports, but with the addition of a CD-ROM drive and an improved version of the AGA chipset. It is the final hardware to be developed by Commodore.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Block Diagram==&lt;br /&gt;
&lt;br /&gt;
[[File:A500-block-diagram.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
'''Agnus''' (Address GeNerator UnitS) is the core chip in the system, managing all access to chip RAM for the 68000 processor and other custom chips through a complex priority system. It includes the '''Blitter''', which enables fast memory data transfers without processor involvement, and the '''Copper''', a video-synchronized co-processor.&lt;br /&gt;
&lt;br /&gt;
'''Denise''' (Display ENabler) serves as the primary video processor, handling a display of 320 or 640 pixels wide by 200 (NTSC) or 256 (PAL) pixels tall without overscan. It supports interlacing for doubled vertical resolution, though this causes flickering on older monitors. Denise uses planar bitmap graphics with one to five bitplanes for 2 to 32 colors from a 4096-color palette, plus a sixth bitplane for special modes like Halfbrite and Hold-And-Modify (HAM). It also manages eight sprites, single-pixel scrolling, &amp;quot;dual-playfield&amp;quot; mode, and processes mouse and digital joystick inputs.&lt;br /&gt;
&lt;br /&gt;
'''Paula''' (Ports, Audio, Uart and Logic) is the audio chip, featuring four hardware-mixed 8-bit PCM sound channels and sample rates up to 28kHz. Beyond audio, Paula manages interrupts, floppy disk drive, serial port, and analog joystick inputs, along with other I/O tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
*{{EnWiki}}&lt;br /&gt;
*[https://www.amigawiki.org/ AmigaWiki]&lt;br /&gt;
*[https://youtu.be/GhXC_vQ5IkM The iconic &amp;quot;Only Amiga makes it possible&amp;quot; promo video] [https://youtu.be/C97Q-v-YDZE Amiga Commercials]&lt;br /&gt;
*[https://youtu.be/ivpWpffg6G4 All Commodore Amiga games] [https://youtu.be/fe8thkiVrpo Over 100 Amiga games in under 1 hour] [https://youtu.be/TAFUZKzQRa0 Over 100 Amiga AGA games in under 1 hour]&lt;br /&gt;
*[https://www.amiga500archive.com/ Amiga 500 Archive]&lt;br /&gt;
*[https://grandis.nu/turran/ Turran FTP]&lt;br /&gt;
*[https://amiga.net.au/files/Tech_Amiga/Commodore_Amiga_500_Technical_Manual.pdf Amiga 500 Service Manual]&lt;br /&gt;
*[http://amigadev.elowar.com/read/ADCD_2.1/Hardware_Manual_guide/node0001.html Amiga Hardware Reference Manual] [https://retro-commodore.eu/files/downloads/amigamanuals-xiik.net/Other/Amiga%20Hardware%20Reference%20Manual-ENG.pdf PDF version]&lt;br /&gt;
*[https://eab.abime.net/ English Amiga Board]&lt;br /&gt;
*[https://youtu.be/kjapiUQOi2s Commodore History - The Amiga 1000] by [[The 8-Bit Guy]]&lt;br /&gt;
*[https://youtu.be/ws3DJF7MbMU Part 1] [https://youtu.be/BcXcy2b1dRM Part 2] Amiga Story by [[Nostalgia Nerd]]&lt;br /&gt;
*[https://youtu.be/wv4_3WLgyr0 Amiga 1000] [https://youtu.be/I8D_ciE4zi0 Amiga 500] [https://youtu.be/qX7Ki0WkFxk Amiga 600] [https://youtu.be/-GGfu6_gEZs Amiga 3000] presented by [[Rodrik Studio]]&lt;br /&gt;
*[https://www.youtube.com/watch?v=wdUa20kUXM8&amp;amp;list=PLIX9fyYxV0k_NtBiHZtXs_UIccGTbnAjz PC vs Amiga] [https://youtu.be/fQU-WZZ67yM C64 SID vs Amiga Paula sound chip]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: Non CPC Computers]]&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=ZX_Spectrum&amp;diff=126255</id>
		<title>ZX Spectrum</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=ZX_Spectrum&amp;diff=126255"/>
				<updated>2025-05-23T19:30:49Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: /* ZX Spectrum +2B and +3B */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Modified from [http://en.wikipedia.org/w/index.php?title=ZX_Spectrum Wikipedia']'&lt;br /&gt;
&lt;br /&gt;
The '''ZX Spectrum''' (the &amp;quot;Z&amp;quot; is pronounced &amp;quot;Zed&amp;quot; in its original [[British English]] branding) is an 8-bit personal home computer released in the United Kingdom in 1982 by Sinclair Research Ltd. Referred to during development as the ''ZX81 Colour'' and ''ZX82'', the machine was launched as the ''ZX Spectrum'' by Sinclair to highlight the machine's colour display, compared with the black-and-white of its predecessor, the [[ZX80/81|Sinclair ZX81]]. The Spectrum was released in eight different models, ranging from the entry level model with 16KB RAM released in 1982 to the ZX Spectrum +3 with 128 KB RAM and built in floppy disk drive in 1987; together they sold in excess of 5 million units worldwide.&lt;br /&gt;
&lt;br /&gt;
The Spectrum was among the first mainstream audience home computers in the UK, similar in significance to the Commodore 64 in the USA. The introduction of the ZX Spectrum led to a boom in companies producing software and hardware for the machine, some credit it as the machine which launched the UK IT industry. Licensing deals and clones followed, and earned Clive Sinclair a knighthood for &amp;quot;services to British industry&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The [[c64|Commodore 64]], [[BBC Micro]] and later the [[CPC|Amstrad CPC]] range were major rivals to the Spectrum in the UK market during the early 1980s. The ZX Spectrum has enjoyed a resurgence in popularity thanks to the accessibility of ZX Spectrum emulators, allowing 1980s video game enthusiasts to enjoy classic titles without the long loading times associated with data cassettes. Over 20,000 titles have been released since the Spectrum's launch and new titles continue to be released, with over 90 new ones in 2010.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Hardware==&lt;br /&gt;
[[File:ZXspectrum mb.jpg|right|350px|thumb|ZX Spectrum 48K motherboard (Issue 3B — 1983, heat sink removed)]]&lt;br /&gt;
&lt;br /&gt;
The Spectrum is based on a [[Z80|Zilog Z80]]A Central processing unit running at 3.5MHz (or NEC D780C-1 clone). The original model Spectrum has 16KB (16*1024 bytes) of ROM and either 16KB or 48KB of RAM. Hardware design was by Richard Altwasser of Sinclair Research, and the machine's outward appearance was designed by Sinclair's industrial designer Rick Dickinson.&lt;br /&gt;
&lt;br /&gt;
Video output is through an RF modulator and was designed for use with contemporary portable television sets, for a simple colour graphic display. Text can be displayed using 32 columns * 24 rows of characters from the ZX Spectrum character set or from a set provided within an application, from a palette of 15 shades: seven colours at two levels of brightness each, plus black. The image resolution is 256*192 with the same colour limitations. To conserve memory, colour is stored separate from the pixel bitmap in a low resolution, 32*24 grid overlay, corresponding to the character cells.  Altwasser received a patent for this design.&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;attribute&amp;quot; consists of a foreground and a background colour, a brightness level (normal or bright) and a flashing &amp;quot;flag&amp;quot; which, when set, causes the two colours to swap at regular intervals. Unfortunately, this scheme leads to what was dubbed ''colour clash'' or ''attribute clash'' with some bizarre effects in the animated graphics of arcade style games. This problem became a distinctive feature of the Spectrum and an in-joke among Spectrum users, as well as a point of derision by advocates of other systems. Other machines available around the same time, for example the [[CPC|Amstrad CPC]], did not suffer from this limitation. The [[C64|Commodore 64]] used colour attributes in a similar way, but a special multicolour mode, hardware sprites and hardware scrolling were used to avoid attribute clash.&lt;br /&gt;
&lt;br /&gt;
Sound output is through a beeper on the machine itself. This is capable of producing one channel with 10 octaves. The machine also includes an expansion bus edge connector and audio in/out ports for the connection of a cassette recorder for loading and saving programs and data.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Firmware==&lt;br /&gt;
The machine's Sinclair BASIC interpreter is stored in ROM (along with fundamental system-routines) and was written by Steve Vickers on contract from Nine Tiles Ltd. The Spectrum's chiclet keyboard (on top of a membrane, similar to calculator keys) is marked with BASIC keywords, so that, for example, pressing &amp;quot;G&amp;quot; when in programming mode would insert the BASIC command GOTO.&lt;br /&gt;
&lt;br /&gt;
The BASIC was developed from that used on the ZX81 and a ZX81 BASIC program can be typed into a Spectrum largely unmodified, but Spectrum BASIC included many extra features making it easier to use. The ZX Spectrum character set was expanded from that of the ZX81, which did not feature lower-case letters. Spectrum BASIC included extra keywords for the more advanced display and sound, and also supported multi-statement lines. The cassette interface was also much more advanced, saving and loading around four times faster than the ZX81, and much more reliably. As well as being able to save programs, the Spectrum could in addition save the contents of arrays, the contents of the screen memory, and the contents of any defined range of memory addresses.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sinclair Research models==&lt;br /&gt;
[[File:ZXSpectrum48k.jpg|right|thumb|ZX Spectrum 16K/48K (Dimensions (mm): 233*144*30 (W*H*D) @ ~552 grams)]]&lt;br /&gt;
[[File:ZX Spectrum+.jpg|thumb|ZX Spectrum+ (Dimensions (mm): 319?149?38 (W?H?D))]]&lt;br /&gt;
[[File:ZX Spectrum128K.jpg|thumb|ZX Spectrum 128]]&lt;br /&gt;
&lt;br /&gt;
===Pre-production designs===&lt;br /&gt;
Rick Dickinson came up with a number of designs for the &amp;quot;ZX82&amp;quot; project before the final ZX Spectrum design. A number of the keyboard legends changed during the design phase including ''ARC'' becoming ''CIRCLE'', ''FORE'' becoming ''INK'' and ''BACK'' becoming ''PAPER''.&lt;br /&gt;
&lt;br /&gt;
===ZX Spectrum 16K/48K===&lt;br /&gt;
The original ZX Spectrum is remembered for its Chiclet keyboard, diminutive size and distinctive rainbow motif. It was originally released in 1982 with 16KB of RAM for £125 or with 48 KB for £175; these prices were later reduced to £99 and £129 respectively. Owners of the 16 KB model could purchase an internal 32 KB RAM upgrade, which for early &amp;quot;Issue 1&amp;quot; machines consisted of a daughterboard. Later issue machines required the fitting of 8 Dynamic dynamic RAM chips and a few TTL chips. Users could mail their 16K Spectrums to Sinclair to be upgraded to 48 KB versions. To reduce the price, the 32 KB extension used eight faulty 64Kb chips with only one half of their capacity working and/or available. Links on the PCB were configured accordingly so as to place these faulty memory locations in the other (unused) half of each IC. External 32 KB RAM packs that mounted in the rear expansion slot were also available from third parties. Both machines had 16 KB of onboard ROM.&lt;br /&gt;
&lt;br /&gt;
About 60,000 &amp;quot;Issue 1&amp;quot; ZX Spectrums were manufactured; they can be distinguished from later models by the colour of the keys (light grey for Issue 1, blue-grey for later models).&lt;br /&gt;
&lt;br /&gt;
===ZX Spectrum+===&lt;br /&gt;
Planning of the '''ZX Spectrum+''' started in June 1984, and the machine was released in October the same year. This 48 KB Spectrum (development code-name ''TB'') introduced a new Sinclair QL-style case with an injection-moulded keyboard and a reset button. Electronically, it was identical to the previous 48 KB model. It retailed for £179.95. A DIY conversion-kit for older machines was also available. Early on, the machine outsold the rubber-key model 2:1; however, some retailers reported a failure rate of up to 30%, compared with a more usual 5-6%.&lt;br /&gt;
&lt;br /&gt;
===ZX Spectrum 128===&lt;br /&gt;
Sinclair developed the '''ZX Spectrum 128''' (code-named ''Derby'') in conjunction with their Spanish distributor Investronica. Investronica had helped adapt the ZX Spectrum+ to the Spanish market after the Spanish government introduced a special tax on all computers with 64KB RAM or less, and a law which obliged all computers sold in Spain to support the Spanish alphabet (such as n-tilde) and show messages in Spanish.&lt;br /&gt;
&lt;br /&gt;
New features included 128KB RAM, three-channel audio via the AY-3-8912 chip, MIDI compatibility, an RS-232 serial port, an RGB monitor port, 32KB of ROM including an improved BASIC editor, and an external keypad.&lt;br /&gt;
&lt;br /&gt;
The machine was simultaneously presented for the first time and launched in September 1985 at the SIMO '85 trade show in Spain, with a price of 44,250 pesetas. Because of the large number of unsold Spectrum+ models, Sinclair decided not to start selling in the UK until January 1986 at a price of £179.95. No external keypad was available for the UK release, although the ROM routines to use it and the port itself, which was hastily renamed &amp;quot;AUX&amp;quot;, remained.&lt;br /&gt;
&lt;br /&gt;
The Z80 processor used in the Spectrum has a 16-bit address bus, which means only 64KB of memory can be directly addressed. To facilitate the extra 80KB of RAM the designers used bank switching so that the new memory would be available as eight pages of 16KB at the top of the address space. The same technique was also used to page between the new 16KB editor ROM and the original 16KB BASIC ROM at the bottom of the address space.&lt;br /&gt;
&lt;br /&gt;
The new sound chip and MIDI out abilities were exposed to the BASIC programming language with the command ''PLAY'' and a new command ''SPECTRUM'' was added to switch the machine into 48K mode, keeping the current BASIC program intact (although there is no way to switch back to 128K mode). To enable BASIC programmers to access the additional memory, a RAM disk was created where files could be stored in the additional 80KB of RAM. The new commands took the place of two existing user-defined-character spaces causing compatibility problems with some BASIC programs.&lt;br /&gt;
&lt;br /&gt;
The Spanish version had the &amp;quot;128K&amp;quot; logo in white while the English one had the same logo in red.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Timex models ==&lt;br /&gt;
&lt;br /&gt;
[[File:Timex sinclair 2068.jpg|thumb|right|Timex Sinclair 2068]]&lt;br /&gt;
[[File:Timex Computer 2048.jpg|thumb|right|Timex Computer 2048]]&lt;br /&gt;
&lt;br /&gt;
=== Timex Sinclair 2068 ===&lt;br /&gt;
&lt;br /&gt;
The TS 2068 was released in November 1983. It was Timex Sinclair's third and last home computer for the United States market.&lt;br /&gt;
&lt;br /&gt;
It is a more sophisticated computer compared to its UK ancestor, the ZX Spectrum. It added a number of new features:&lt;br /&gt;
*an AY-3-8912 sound chip, as later used by Sinclair in the ZX Spectrum 128 (but mapped to different I/O ports and thus incompatible)&lt;br /&gt;
*twin joystick ports&lt;br /&gt;
*a slightly better &amp;quot;chiclet keyboard&amp;quot; with plastic keycaps&lt;br /&gt;
*a cartridge port to the right of the keyboard for ROM-based software&lt;br /&gt;
*Timex SCLD chip instead of the Spectrum's ULA, offering additional Extended Color, Dual Screen and High Resolution screen modes:&lt;br /&gt;
**Text: 32×24 characters (8×8 pixels, rendered in graphics mode)&lt;br /&gt;
**Graphics: 256×192 pixels, 15 colours (two simultaneous colours - &amp;quot;attributes&amp;quot; - per 8×8 pixels, causing attribute clash)&lt;br /&gt;
**Extended Color: 256×192 pixels, 15 colors with colour resolution of 32×192 (two simultaneous colours - &amp;quot;attributes&amp;quot; - per 8×1 pixels)&lt;br /&gt;
**Dual Screen: (two 256×192 pixels screens can be placed in memory)&lt;br /&gt;
**High Resolution: 512×192 mode with 2 colours (Four palettes: Black &amp;amp; White, Blue &amp;amp; Yellow, Red &amp;amp; Cyan, Magenta &amp;amp; Green).&lt;br /&gt;
*improved TS 2000 BASIC, that extends Sinclair BASIC with new keywords to address new hardware and bank-switched memory, allowing ROM cartridges to be mapped in.&lt;br /&gt;
&lt;br /&gt;
Because Timex added more commands, the ROM could not fit on 16K so an 8K ROM was added. Timex moved some of the original ZX BASIC commands to this new 8K ROM, making programs that used ROM routines unusable.&lt;br /&gt;
&lt;br /&gt;
With this change, only about 7% of ZX Spectrum software worked on TS2068. Using a ZX Spectrum ROM cartridge fixes it, raising compatibility to 97%.&lt;br /&gt;
&lt;br /&gt;
=== Timex Computer 2068 ===&lt;br /&gt;
&lt;br /&gt;
When Timex Computer Corp folded in North America in February 1984, Timex of Portugal made a new version of the SCLD chip to support PAL TVs. It was marketed as Timex Computer 2068, ditching the Sinclair brand of it.&lt;br /&gt;
&lt;br /&gt;
A variant was sold in Poland after 1986 under the name Unipolbrit Komputer 2086.&lt;br /&gt;
&lt;br /&gt;
=== Timex Computer 2048 ===&lt;br /&gt;
&lt;br /&gt;
Timex of Portugal also produced the Timex Computer 2048, a modified TC2068 to be a Sinclair ZX Spectrum clone, more affordable than the TC2068 and more reliable than the ZX Spectrum since it uses fewer ICs.&lt;br /&gt;
&lt;br /&gt;
The AY-3-8912 sound generator and the cartridge port were removed, the 2 joysticks ports were replaced by 1 Kempson joystick port and the TC2068 ROMs were replaced with a ZX Spectrum ROM. Because the TC2048 uses the same SCLD chip that TC2068 uses, it also has the special display modes of TC2068.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Amstrad models ==&lt;br /&gt;
&lt;br /&gt;
In April 1986, Amstrad acquired Sinclair for 5 million pounds. See [https://youtu.be/rGzqvyKYVVI The Amazing TRUE Story Of How Amstrad Bought Sinclair] by [[ChinnyVision]].&lt;br /&gt;
&lt;br /&gt;
At the time of the Amstrad deal, Sinclair was well advanced with development plans for a new Spectrum micro - the £200 SuperSpectrum. The full details can be found here: [https://sinclairuser.com/051/loki.htm Sinclair User article - June 1986]&lt;br /&gt;
&lt;br /&gt;
=== ZX Spectrum +2 ===&lt;br /&gt;
[[File:ZX Spectrum+2.jpg|thumb|ZX Spectrum +2]]&lt;br /&gt;
The '''ZX Spectrum +2''' was [[Amstrad]]'s first Spectrum, coming shortly after their [[Sinclair Research Ltd#Amstrad acquisition|purchase of Sinclair Research Ltd]]. The machine featured an all-new grey case featuring a spring-loaded keyboard, dual joystick ports, and a built-in cassette recorder dubbed the &amp;quot;Datacorder&amp;quot; (like the [[Amstrad CPC 464]]), but was in most respects identical to the ZX Spectrum 128. The main menu screen lacked the Spectrum 128's &amp;quot;Tape Test&amp;quot; option, and the ROM was altered to account for a new 1986 Amstrad copyright message. These changes resulted in minor incompatibility problems with software that accessed ROM routines at certain addresses. Production costs had been reduced and the retail price dropped to £139–£149.&lt;br /&gt;
&lt;br /&gt;
The new keyboard did not include the BASIC keyword markings that were found on earlier Spectrums, except for the keywords ''LOAD'', ''CODE'' and ''RUN'' which were useful for loading software. This was not a major issue however, as the +2 boasted a menu system, almost identical to the ZX Spectrum 128, where one could switch between 48k BASIC programming with the keywords, and 128k BASIC programming in which all words (keywords and otherwise) must be typed out in full (although the keywords are still stored internally as one character each). Despite these changes, the layout remained identical to that of the 128.&lt;br /&gt;
&lt;br /&gt;
The ZX Spectrum +2 power supply was a grey version of the ZX Spectrum+ and 128 power supply.&lt;br /&gt;
&lt;br /&gt;
=== ZX Spectrum +2A ===&lt;br /&gt;
[[File:Spectrum 128-2.png|thumb|ZX Spectrum +2A]]&lt;br /&gt;
The '''ZX Spectrum +2A''' was a variant of the Spectrum +3 housed a black version of the Spectrum +2 case mouldings. The Spectrum +2A/+3 motherboard (AMSTRAD part number Z70830) was designed such that it could be assembled without the [[floppy disk controller]] or associated logic and a +2 style &amp;quot;datacorder&amp;quot; connected. Originally, Amstrad planned to introduce an additional disk interface for the +2A/+2B called the '''AMSTRAD SI-1''', however this never appeared. If an external disk drive was added, the &amp;quot;+2A&amp;quot; on the system OS menu would change to a +3.&lt;br /&gt;
&lt;br /&gt;
The power supply of the ZX Spectrum +2A used the same [[pinout]] as the +3. However, the power supply purchased with the +2A/B had &amp;quot;Sinclair +2&amp;quot; written on the case.&lt;br /&gt;
&lt;br /&gt;
Starting with the +2A, a Gate Array chip produced by Amstrad incorporates the functionalities from the ULA, PCF and HAL chips into a single package. It comes in QFP form instead of the traditional DIP.&lt;br /&gt;
&lt;br /&gt;
=== ZX Spectrum +3 ===&lt;br /&gt;
&lt;br /&gt;
[[File:ZX Spectrum Plus3.jpeg|thumb|ZX Spectrum +3]]&lt;br /&gt;
The '''ZX Spectrum +3''' looked similar to the +2 but featured a built-in 3-inch [[floppy disk]] drive (like the Amstrad CPC 6128) instead of the tape drive, and was in a black case. It was launched in 1987, initially retailed for £249 and then later £199.&lt;br /&gt;
&lt;br /&gt;
The ZX Spectrum +3 included CP/M support in ROM and was the only Spectrum capable of running the [[CP/M]] operating system without additional hardware, allowing access to its vast library of available software.&lt;br /&gt;
&lt;br /&gt;
The +3 saw the addition of two more 16&amp;amp;nbsp;kB ROMs. One was home to the second part of the reorganised 128 ROM and the other hosted the +3's disk operating system. This was a modified version of Amstrad's [[PCWDOS]] (the disk access code used in [[LocoScript]]), called +3DOS. These two new 16&amp;amp;nbsp;kB ROMs and the original two 16&amp;amp;nbsp;kB ROMs were now physically implemented together as two 32&amp;amp;nbsp;kB chips.  To be able to run CP/M, which requires RAM at the bottom of the address space, the bank-switching was further improved, allowing the ROM to be paged out for another 16&amp;amp;nbsp;kB of RAM.&lt;br /&gt;
&lt;br /&gt;
Such core changes brought incompatibilities:&lt;br /&gt;
&lt;br /&gt;
* Removal of several lines on the expansion bus edge connector (video, power, and IORQGE); caused many external devices problems; some such as the VTX5000 modem could be used via the &amp;quot;FixIt&amp;quot; device.&lt;br /&gt;
* Dividing ROMCS into 2 lines, to disable both ROMs&lt;br /&gt;
* Reading a non-existent I/O port no longer returned the last attribute; caused some games such as ''[[Arkanoid]]'' to be unplayable&lt;br /&gt;
* Memory timing changes; some of the RAM banks were now contended causing high-speed colour-changing effects to fail&lt;br /&gt;
* The keypad scanning routines from the ROM were removed&lt;br /&gt;
* move 1 byte address in ROM&lt;br /&gt;
&lt;br /&gt;
Some older 48K and a few older 128K games were incompatible with the machine. The ZX Interface 1 was incompatible due to differences in ROM and expansion connector; therefore it was not possible to connect and use the Microdrive units.&lt;br /&gt;
&lt;br /&gt;
The ZX Spectrum +3 power supply provides the same voltages as the one supplied with +2A/B. This power supply has the same DIN connector so can also be used with the +2A/B. However, the power supply purchased with the +3 had &amp;quot;Sinclair +3&amp;quot; written on the case.&lt;br /&gt;
&lt;br /&gt;
Production of the +3 ceased in December 1990, believed to be in response for Amstrad relaunching their CPC range. At the time, it was estimated about 15% of ZX Spectrums sold had been +3 models. Production of the +2B (the only other model then still in production) continued, as it was believed not to be in competition with other computers in Amstrad's product range.&lt;br /&gt;
&lt;br /&gt;
=== ZX Spectrum +2B and +3B ===&lt;br /&gt;
&lt;br /&gt;
The ''ZX Spectrum +2B'' and ''ZX Spectrum +3B'' were functionally similar in design to the Spectrum +2A and +3. The main electronic differences being simply changes to the generation of the audio output signal to resolve problems with [[Clipping (audio)|clipping]] and the removal of the external tape loading input (&amp;quot;ear&amp;quot; pin).&lt;br /&gt;
&lt;br /&gt;
Unlike the +2A, the Spectrum +2B motherboard (AMSTRAD part number Z70833) does not have provision for floppy disk controller circuitry so cannot be assembled as a +3B. The +3B motherboard is Amstrad part number Z70835.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&lt;br /&gt;
* From an Amstrad CPC user's point of view, the ZX Spectrum is well known for being the source of [[Speccy Port|Speccy Ports]].&lt;br /&gt;
* The Spectrum +2 case design is comparable to the CPC464's case design because of the internal datacorder. The Spectrum +3 design shares some similarities with the CPC6128, the case design is similar with it's internal 3&amp;quot; disc drive, and the disc controller is the same as the CPC6128's. The CPC464 and CPC6128 came before these Spectrum's, so it is clear Amstrad used those as inspirations to update the Spectrum design.&lt;br /&gt;
* In France, every machine that didn't provide an RGB output was doomed as TVs were in SECAM, not PAL. Had Sinclair understood the need for an RGB output in France, the ZX Spectrum would have certainly been a success there, just like it did in the UK and Spain. The success of the [[Oric 1/Atmos|Oric]] in France proves it.&lt;br /&gt;
&lt;br /&gt;
=== General Sound ===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;General Sound&amp;quot; (GS) is a sound card for ZX-Spectrum 48/128/etc... developed by X-Trade in 1997 as a commercial product. It is a 4 channel, 8-bit sound board with similar sound capabilities as the [[Amiga]] Paula chip. It has its own Z80 CPU onboard running at 12MHz, and 128KB of memory (16KB ROM and 112KB of RAM). The GS was very popular in Eastern Europe. [https://spectrumcomputing.co.uk/entry/1000171/Hardware/General_Sound Source]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://youtu.be/QIxf9bUit_g Over 100 ZX Spectrum 48K games in under 1 hour] [https://youtu.be/4MjqKswDx8I Over 50 ZX Spectrum 128K games in 30 minutes] [https://youtu.be/PUE4yboY5hk 25 modern games that push the limits]&lt;br /&gt;
* [https://www.youtube.com/watch?v=yOorvZ1nlzg&amp;amp;list=PLxOanVBhqd3tzVff-Ii1Eo1ykLSdLAnrV ZX Spectrum All Years TOP 10 playlists] [https://youtu.be/jLN4WhGruUY 5 hours with 600+ top quality colourful games] [https://youtu.be/Wd7lHltOGbA 3000 ZX Spectrum HD clips]&lt;br /&gt;
* [https://www.youtube.com/watch?v=CxPG2GUoUTE&amp;amp;list=PLxOanVBhqd3uSP_gBFdIkEvPxwuQr7DvA ZX Spectrum 48K Beeper chiptunes] [https://www.youtube.com/watch?v=e-3G2Fnh0YQ&amp;amp;list=PLxOanVBhqd3s-6c4Mz7h9NWFgKRvq_ipz ZX Spectrum 128K AY chiptunes]&lt;br /&gt;
* [https://youtu.be/MPSSJ_hFYhQ ZX Spectrum Commercials]&lt;br /&gt;
* [https://youtu.be/l5N937V8ZOw Sinclair C5 Infomercial] The ideal vehicle for ZX Spectrum lovers&lt;br /&gt;
* [https://sinclair.zilog.fr Sinclair's Spirit (FR)] Learn how to code with Z80 Assembler on ZX Spectrum with [[BDCIron]]&lt;br /&gt;
* [https://problemkaputt.de/zxdocs.htm Noca$h's ZXdocs] [https://spectrumcomputing.co.uk/entry/2000357/Book/Spectrum_Hardware_Manual Spectrum Hardware Manual] [https://pdfcoffee.com/the-zx-spectrum-ula-how-to-design-a-micro-chris-smith-pdf-free.html The ZX Spectrum ULA ebook]&lt;br /&gt;
* [https://worldofspectrum.net/documentation/ World of Spectrum] [https://www.spectrumforeveryone.com/technical/ Spectrum for Everyone] [https://sinclair.wiki.zxnet.co.uk Sinclair Wiki] Documentation&lt;br /&gt;
* [https://worldofspectrum.net/pub/sinclair/ World of Spectrum file server]&lt;br /&gt;
* [https://tzxvault.org/ The TZX Vault]&lt;br /&gt;
* [https://www.speccy.org/ Speccy.org] El portal español del Spectrum&lt;br /&gt;
* [https://youtu.be/I9dHI6EwWTU Sinclair ZX Spectrum Story - Birth of a Classic] by [[Nostalgia Nerd]]&lt;br /&gt;
* [https://youtu.be/fTKckoSj-OE Timex Sinclair 2068 - The American ZX Spectrum] by [[The 8-Bit Guy]]&lt;br /&gt;
* [https://youtu.be/36TtdthpKT8 Electronica CIP-03 - Le ZX Spectrum Roumain !] by [[Olipix]]&lt;br /&gt;
* [https://www.sinclaircollection.site/ Sinclair Collection Site] [https://en.wikipedia.org/wiki/List_of_ZX_Spectrum_clones List of ZX Spectrum clones]&lt;br /&gt;
* [https://www.youtube.com/watch?v=JfZ77Ltkols&amp;amp;list=PLIX9fyYxV0k_VOgMOIxseJH1c91KKcxKB ZX Spectrum vs Amstrad CPC] [https://www.youtube.com/watch?v=Wce82Q54dpA&amp;amp;list=PLIX9fyYxV0k_CanGbwkXdtlhmdtO62ZRW ZX Spectrum vs C64]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: Non CPC Computers]] [[Category:Amstrad Products|*]] [[Category:CPC History]]&lt;br /&gt;
[[Category:CP/M]]&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=ZX_Spectrum&amp;diff=126254</id>
		<title>ZX Spectrum</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=ZX_Spectrum&amp;diff=126254"/>
				<updated>2025-05-23T19:17:29Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: /* Amstrad models */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Modified from [http://en.wikipedia.org/w/index.php?title=ZX_Spectrum Wikipedia']'&lt;br /&gt;
&lt;br /&gt;
The '''ZX Spectrum''' (the &amp;quot;Z&amp;quot; is pronounced &amp;quot;Zed&amp;quot; in its original [[British English]] branding) is an 8-bit personal home computer released in the United Kingdom in 1982 by Sinclair Research Ltd. Referred to during development as the ''ZX81 Colour'' and ''ZX82'', the machine was launched as the ''ZX Spectrum'' by Sinclair to highlight the machine's colour display, compared with the black-and-white of its predecessor, the [[ZX80/81|Sinclair ZX81]]. The Spectrum was released in eight different models, ranging from the entry level model with 16KB RAM released in 1982 to the ZX Spectrum +3 with 128 KB RAM and built in floppy disk drive in 1987; together they sold in excess of 5 million units worldwide.&lt;br /&gt;
&lt;br /&gt;
The Spectrum was among the first mainstream audience home computers in the UK, similar in significance to the Commodore 64 in the USA. The introduction of the ZX Spectrum led to a boom in companies producing software and hardware for the machine, some credit it as the machine which launched the UK IT industry. Licensing deals and clones followed, and earned Clive Sinclair a knighthood for &amp;quot;services to British industry&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The [[c64|Commodore 64]], [[BBC Micro]] and later the [[CPC|Amstrad CPC]] range were major rivals to the Spectrum in the UK market during the early 1980s. The ZX Spectrum has enjoyed a resurgence in popularity thanks to the accessibility of ZX Spectrum emulators, allowing 1980s video game enthusiasts to enjoy classic titles without the long loading times associated with data cassettes. Over 20,000 titles have been released since the Spectrum's launch and new titles continue to be released, with over 90 new ones in 2010.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Hardware==&lt;br /&gt;
[[File:ZXspectrum mb.jpg|right|350px|thumb|ZX Spectrum 48K motherboard (Issue 3B — 1983, heat sink removed)]]&lt;br /&gt;
&lt;br /&gt;
The Spectrum is based on a [[Z80|Zilog Z80]]A Central processing unit running at 3.5MHz (or NEC D780C-1 clone). The original model Spectrum has 16KB (16*1024 bytes) of ROM and either 16KB or 48KB of RAM. Hardware design was by Richard Altwasser of Sinclair Research, and the machine's outward appearance was designed by Sinclair's industrial designer Rick Dickinson.&lt;br /&gt;
&lt;br /&gt;
Video output is through an RF modulator and was designed for use with contemporary portable television sets, for a simple colour graphic display. Text can be displayed using 32 columns * 24 rows of characters from the ZX Spectrum character set or from a set provided within an application, from a palette of 15 shades: seven colours at two levels of brightness each, plus black. The image resolution is 256*192 with the same colour limitations. To conserve memory, colour is stored separate from the pixel bitmap in a low resolution, 32*24 grid overlay, corresponding to the character cells.  Altwasser received a patent for this design.&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;attribute&amp;quot; consists of a foreground and a background colour, a brightness level (normal or bright) and a flashing &amp;quot;flag&amp;quot; which, when set, causes the two colours to swap at regular intervals. Unfortunately, this scheme leads to what was dubbed ''colour clash'' or ''attribute clash'' with some bizarre effects in the animated graphics of arcade style games. This problem became a distinctive feature of the Spectrum and an in-joke among Spectrum users, as well as a point of derision by advocates of other systems. Other machines available around the same time, for example the [[CPC|Amstrad CPC]], did not suffer from this limitation. The [[C64|Commodore 64]] used colour attributes in a similar way, but a special multicolour mode, hardware sprites and hardware scrolling were used to avoid attribute clash.&lt;br /&gt;
&lt;br /&gt;
Sound output is through a beeper on the machine itself. This is capable of producing one channel with 10 octaves. The machine also includes an expansion bus edge connector and audio in/out ports for the connection of a cassette recorder for loading and saving programs and data.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Firmware==&lt;br /&gt;
The machine's Sinclair BASIC interpreter is stored in ROM (along with fundamental system-routines) and was written by Steve Vickers on contract from Nine Tiles Ltd. The Spectrum's chiclet keyboard (on top of a membrane, similar to calculator keys) is marked with BASIC keywords, so that, for example, pressing &amp;quot;G&amp;quot; when in programming mode would insert the BASIC command GOTO.&lt;br /&gt;
&lt;br /&gt;
The BASIC was developed from that used on the ZX81 and a ZX81 BASIC program can be typed into a Spectrum largely unmodified, but Spectrum BASIC included many extra features making it easier to use. The ZX Spectrum character set was expanded from that of the ZX81, which did not feature lower-case letters. Spectrum BASIC included extra keywords for the more advanced display and sound, and also supported multi-statement lines. The cassette interface was also much more advanced, saving and loading around four times faster than the ZX81, and much more reliably. As well as being able to save programs, the Spectrum could in addition save the contents of arrays, the contents of the screen memory, and the contents of any defined range of memory addresses.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sinclair Research models==&lt;br /&gt;
[[File:ZXSpectrum48k.jpg|right|thumb|ZX Spectrum 16K/48K (Dimensions (mm): 233*144*30 (W*H*D) @ ~552 grams)]]&lt;br /&gt;
[[File:ZX Spectrum+.jpg|thumb|ZX Spectrum+ (Dimensions (mm): 319?149?38 (W?H?D))]]&lt;br /&gt;
[[File:ZX Spectrum128K.jpg|thumb|ZX Spectrum 128]]&lt;br /&gt;
&lt;br /&gt;
===Pre-production designs===&lt;br /&gt;
Rick Dickinson came up with a number of designs for the &amp;quot;ZX82&amp;quot; project before the final ZX Spectrum design. A number of the keyboard legends changed during the design phase including ''ARC'' becoming ''CIRCLE'', ''FORE'' becoming ''INK'' and ''BACK'' becoming ''PAPER''.&lt;br /&gt;
&lt;br /&gt;
===ZX Spectrum 16K/48K===&lt;br /&gt;
The original ZX Spectrum is remembered for its Chiclet keyboard, diminutive size and distinctive rainbow motif. It was originally released in 1982 with 16KB of RAM for £125 or with 48 KB for £175; these prices were later reduced to £99 and £129 respectively. Owners of the 16 KB model could purchase an internal 32 KB RAM upgrade, which for early &amp;quot;Issue 1&amp;quot; machines consisted of a daughterboard. Later issue machines required the fitting of 8 Dynamic dynamic RAM chips and a few TTL chips. Users could mail their 16K Spectrums to Sinclair to be upgraded to 48 KB versions. To reduce the price, the 32 KB extension used eight faulty 64Kb chips with only one half of their capacity working and/or available. Links on the PCB were configured accordingly so as to place these faulty memory locations in the other (unused) half of each IC. External 32 KB RAM packs that mounted in the rear expansion slot were also available from third parties. Both machines had 16 KB of onboard ROM.&lt;br /&gt;
&lt;br /&gt;
About 60,000 &amp;quot;Issue 1&amp;quot; ZX Spectrums were manufactured; they can be distinguished from later models by the colour of the keys (light grey for Issue 1, blue-grey for later models).&lt;br /&gt;
&lt;br /&gt;
===ZX Spectrum+===&lt;br /&gt;
Planning of the '''ZX Spectrum+''' started in June 1984, and the machine was released in October the same year. This 48 KB Spectrum (development code-name ''TB'') introduced a new Sinclair QL-style case with an injection-moulded keyboard and a reset button. Electronically, it was identical to the previous 48 KB model. It retailed for £179.95. A DIY conversion-kit for older machines was also available. Early on, the machine outsold the rubber-key model 2:1; however, some retailers reported a failure rate of up to 30%, compared with a more usual 5-6%.&lt;br /&gt;
&lt;br /&gt;
===ZX Spectrum 128===&lt;br /&gt;
Sinclair developed the '''ZX Spectrum 128''' (code-named ''Derby'') in conjunction with their Spanish distributor Investronica. Investronica had helped adapt the ZX Spectrum+ to the Spanish market after the Spanish government introduced a special tax on all computers with 64KB RAM or less, and a law which obliged all computers sold in Spain to support the Spanish alphabet (such as n-tilde) and show messages in Spanish.&lt;br /&gt;
&lt;br /&gt;
New features included 128KB RAM, three-channel audio via the AY-3-8912 chip, MIDI compatibility, an RS-232 serial port, an RGB monitor port, 32KB of ROM including an improved BASIC editor, and an external keypad.&lt;br /&gt;
&lt;br /&gt;
The machine was simultaneously presented for the first time and launched in September 1985 at the SIMO '85 trade show in Spain, with a price of 44,250 pesetas. Because of the large number of unsold Spectrum+ models, Sinclair decided not to start selling in the UK until January 1986 at a price of £179.95. No external keypad was available for the UK release, although the ROM routines to use it and the port itself, which was hastily renamed &amp;quot;AUX&amp;quot;, remained.&lt;br /&gt;
&lt;br /&gt;
The Z80 processor used in the Spectrum has a 16-bit address bus, which means only 64KB of memory can be directly addressed. To facilitate the extra 80KB of RAM the designers used bank switching so that the new memory would be available as eight pages of 16KB at the top of the address space. The same technique was also used to page between the new 16KB editor ROM and the original 16KB BASIC ROM at the bottom of the address space.&lt;br /&gt;
&lt;br /&gt;
The new sound chip and MIDI out abilities were exposed to the BASIC programming language with the command ''PLAY'' and a new command ''SPECTRUM'' was added to switch the machine into 48K mode, keeping the current BASIC program intact (although there is no way to switch back to 128K mode). To enable BASIC programmers to access the additional memory, a RAM disk was created where files could be stored in the additional 80KB of RAM. The new commands took the place of two existing user-defined-character spaces causing compatibility problems with some BASIC programs.&lt;br /&gt;
&lt;br /&gt;
The Spanish version had the &amp;quot;128K&amp;quot; logo in white while the English one had the same logo in red.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Timex models ==&lt;br /&gt;
&lt;br /&gt;
[[File:Timex sinclair 2068.jpg|thumb|right|Timex Sinclair 2068]]&lt;br /&gt;
[[File:Timex Computer 2048.jpg|thumb|right|Timex Computer 2048]]&lt;br /&gt;
&lt;br /&gt;
=== Timex Sinclair 2068 ===&lt;br /&gt;
&lt;br /&gt;
The TS 2068 was released in November 1983. It was Timex Sinclair's third and last home computer for the United States market.&lt;br /&gt;
&lt;br /&gt;
It is a more sophisticated computer compared to its UK ancestor, the ZX Spectrum. It added a number of new features:&lt;br /&gt;
*an AY-3-8912 sound chip, as later used by Sinclair in the ZX Spectrum 128 (but mapped to different I/O ports and thus incompatible)&lt;br /&gt;
*twin joystick ports&lt;br /&gt;
*a slightly better &amp;quot;chiclet keyboard&amp;quot; with plastic keycaps&lt;br /&gt;
*a cartridge port to the right of the keyboard for ROM-based software&lt;br /&gt;
*Timex SCLD chip instead of the Spectrum's ULA, offering additional Extended Color, Dual Screen and High Resolution screen modes:&lt;br /&gt;
**Text: 32×24 characters (8×8 pixels, rendered in graphics mode)&lt;br /&gt;
**Graphics: 256×192 pixels, 15 colours (two simultaneous colours - &amp;quot;attributes&amp;quot; - per 8×8 pixels, causing attribute clash)&lt;br /&gt;
**Extended Color: 256×192 pixels, 15 colors with colour resolution of 32×192 (two simultaneous colours - &amp;quot;attributes&amp;quot; - per 8×1 pixels)&lt;br /&gt;
**Dual Screen: (two 256×192 pixels screens can be placed in memory)&lt;br /&gt;
**High Resolution: 512×192 mode with 2 colours (Four palettes: Black &amp;amp; White, Blue &amp;amp; Yellow, Red &amp;amp; Cyan, Magenta &amp;amp; Green).&lt;br /&gt;
*improved TS 2000 BASIC, that extends Sinclair BASIC with new keywords to address new hardware and bank-switched memory, allowing ROM cartridges to be mapped in.&lt;br /&gt;
&lt;br /&gt;
Because Timex added more commands, the ROM could not fit on 16K so an 8K ROM was added. Timex moved some of the original ZX BASIC commands to this new 8K ROM, making programs that used ROM routines unusable.&lt;br /&gt;
&lt;br /&gt;
With this change, only about 7% of ZX Spectrum software worked on TS2068. Using a ZX Spectrum ROM cartridge fixes it, raising compatibility to 97%.&lt;br /&gt;
&lt;br /&gt;
=== Timex Computer 2068 ===&lt;br /&gt;
&lt;br /&gt;
When Timex Computer Corp folded in North America in February 1984, Timex of Portugal made a new version of the SCLD chip to support PAL TVs. It was marketed as Timex Computer 2068, ditching the Sinclair brand of it.&lt;br /&gt;
&lt;br /&gt;
A variant was sold in Poland after 1986 under the name Unipolbrit Komputer 2086.&lt;br /&gt;
&lt;br /&gt;
=== Timex Computer 2048 ===&lt;br /&gt;
&lt;br /&gt;
Timex of Portugal also produced the Timex Computer 2048, a modified TC2068 to be a Sinclair ZX Spectrum clone, more affordable than the TC2068 and more reliable than the ZX Spectrum since it uses fewer ICs.&lt;br /&gt;
&lt;br /&gt;
The AY-3-8912 sound generator and the cartridge port were removed, the 2 joysticks ports were replaced by 1 Kempson joystick port and the TC2068 ROMs were replaced with a ZX Spectrum ROM. Because the TC2048 uses the same SCLD chip that TC2068 uses, it also has the special display modes of TC2068.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Amstrad models ==&lt;br /&gt;
&lt;br /&gt;
In April 1986, Amstrad acquired Sinclair for 5 million pounds. See [https://youtu.be/rGzqvyKYVVI The Amazing TRUE Story Of How Amstrad Bought Sinclair] by [[ChinnyVision]].&lt;br /&gt;
&lt;br /&gt;
At the time of the Amstrad deal, Sinclair was well advanced with development plans for a new Spectrum micro - the £200 SuperSpectrum. The full details can be found here: [https://sinclairuser.com/051/loki.htm Sinclair User article - June 1986]&lt;br /&gt;
&lt;br /&gt;
=== ZX Spectrum +2 ===&lt;br /&gt;
[[File:ZX Spectrum+2.jpg|thumb|ZX Spectrum +2]]&lt;br /&gt;
The '''ZX Spectrum +2''' was [[Amstrad]]'s first Spectrum, coming shortly after their [[Sinclair Research Ltd#Amstrad acquisition|purchase of Sinclair Research Ltd]]. The machine featured an all-new grey case featuring a spring-loaded keyboard, dual joystick ports, and a built-in cassette recorder dubbed the &amp;quot;Datacorder&amp;quot; (like the [[Amstrad CPC 464]]), but was in most respects identical to the ZX Spectrum 128. The main menu screen lacked the Spectrum 128's &amp;quot;Tape Test&amp;quot; option, and the ROM was altered to account for a new 1986 Amstrad copyright message. These changes resulted in minor incompatibility problems with software that accessed ROM routines at certain addresses. Production costs had been reduced and the retail price dropped to £139–£149.&lt;br /&gt;
&lt;br /&gt;
The new keyboard did not include the BASIC keyword markings that were found on earlier Spectrums, except for the keywords ''LOAD'', ''CODE'' and ''RUN'' which were useful for loading software. This was not a major issue however, as the +2 boasted a menu system, almost identical to the ZX Spectrum 128, where one could switch between 48k BASIC programming with the keywords, and 128k BASIC programming in which all words (keywords and otherwise) must be typed out in full (although the keywords are still stored internally as one character each). Despite these changes, the layout remained identical to that of the 128.&lt;br /&gt;
&lt;br /&gt;
The ZX Spectrum +2 power supply was a grey version of the ZX Spectrum+ and 128 power supply.&lt;br /&gt;
&lt;br /&gt;
=== ZX Spectrum +2A ===&lt;br /&gt;
[[File:Spectrum 128-2.png|thumb|ZX Spectrum +2A]]&lt;br /&gt;
The '''ZX Spectrum +2A''' was a variant of the Spectrum +3 housed a black version of the Spectrum +2 case mouldings. The Spectrum +2A/+3 motherboard (AMSTRAD part number Z70830) was designed such that it could be assembled without the [[floppy disk controller]] or associated logic and a +2 style &amp;quot;datacorder&amp;quot; connected. Originally, Amstrad planned to introduce an additional disk interface for the +2A/+2B called the '''AMSTRAD SI-1''', however this never appeared. If an external disk drive was added, the &amp;quot;+2A&amp;quot; on the system OS menu would change to a +3.&lt;br /&gt;
&lt;br /&gt;
The power supply of the ZX Spectrum +2A used the same [[pinout]] as the +3. However, the power supply purchased with the +2A/B had &amp;quot;Sinclair +2&amp;quot; written on the case.&lt;br /&gt;
&lt;br /&gt;
Starting with the +2A, a Gate Array chip produced by Amstrad incorporates the functionalities from the ULA, PCF and HAL chips into a single package. It comes in QFP form instead of the traditional DIP.&lt;br /&gt;
&lt;br /&gt;
=== ZX Spectrum +3 ===&lt;br /&gt;
&lt;br /&gt;
[[File:ZX Spectrum Plus3.jpeg|thumb|ZX Spectrum +3]]&lt;br /&gt;
The '''ZX Spectrum +3''' looked similar to the +2 but featured a built-in 3-inch [[floppy disk]] drive (like the Amstrad CPC 6128) instead of the tape drive, and was in a black case. It was launched in 1987, initially retailed for £249 and then later £199.&lt;br /&gt;
&lt;br /&gt;
The ZX Spectrum +3 included CP/M support in ROM and was the only Spectrum capable of running the [[CP/M]] operating system without additional hardware, allowing access to its vast library of available software.&lt;br /&gt;
&lt;br /&gt;
The +3 saw the addition of two more 16&amp;amp;nbsp;kB ROMs. One was home to the second part of the reorganised 128 ROM and the other hosted the +3's disk operating system. This was a modified version of Amstrad's [[PCWDOS]] (the disk access code used in [[LocoScript]]), called +3DOS. These two new 16&amp;amp;nbsp;kB ROMs and the original two 16&amp;amp;nbsp;kB ROMs were now physically implemented together as two 32&amp;amp;nbsp;kB chips.  To be able to run CP/M, which requires RAM at the bottom of the address space, the bank-switching was further improved, allowing the ROM to be paged out for another 16&amp;amp;nbsp;kB of RAM.&lt;br /&gt;
&lt;br /&gt;
Such core changes brought incompatibilities:&lt;br /&gt;
&lt;br /&gt;
* Removal of several lines on the expansion bus edge connector (video, power, and IORQGE); caused many external devices problems; some such as the VTX5000 modem could be used via the &amp;quot;FixIt&amp;quot; device.&lt;br /&gt;
* Dividing ROMCS into 2 lines, to disable both ROMs&lt;br /&gt;
* Reading a non-existent I/O port no longer returned the last attribute; caused some games such as ''[[Arkanoid]]'' to be unplayable&lt;br /&gt;
* Memory timing changes; some of the RAM banks were now contended causing high-speed colour-changing effects to fail&lt;br /&gt;
* The keypad scanning routines from the ROM were removed&lt;br /&gt;
* move 1 byte address in ROM&lt;br /&gt;
&lt;br /&gt;
Some older 48K and a few older 128K games were incompatible with the machine. The ZX Interface 1 was incompatible due to differences in ROM and expansion connector; therefore it was not possible to connect and use the Microdrive units.&lt;br /&gt;
&lt;br /&gt;
The ZX Spectrum +3 power supply provides the same voltages as the one supplied with +2A/B. This power supply has the same DIN connector so can also be used with the +2A/B. However, the power supply purchased with the +3 had &amp;quot;Sinclair +3&amp;quot; written on the case.&lt;br /&gt;
&lt;br /&gt;
Production of the +3 ceased in December 1990, believed to be in response for Amstrad relaunching their CPC range. At the time, it was estimated about 15% of ZX Spectrums sold had been +3 models. Production of the +2B (the only other model then still in production) continued, as it was believed not to be in competition with other computers in Amstrad's product range.&lt;br /&gt;
&lt;br /&gt;
=== ZX Spectrum +2B and +3B ===&lt;br /&gt;
&lt;br /&gt;
The ''ZX Spectrum +2B'' and ''ZX Spectrum +3B'' were functionally similar in design to the Spectrum +2A and +3. The main electronic differences being simply changes to the generation of the audio output signal to resolve problems with [[Clipping (audio)|clipping]] and the removal of the external tape loading input (&amp;quot;ear&amp;quot; pin).&lt;br /&gt;
&lt;br /&gt;
Unlike the +2A the Spectrum +2B motherboard (AMSTRAD part number Z70833) does not have provision for floppy disk controller circuitry so cannot be assembled as a +3B. The +3B motherboard is Amstrad part number Z70835.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&lt;br /&gt;
* From an Amstrad CPC user's point of view, the ZX Spectrum is well known for being the source of [[Speccy Port|Speccy Ports]].&lt;br /&gt;
* The Spectrum +2 case design is comparable to the CPC464's case design because of the internal datacorder. The Spectrum +3 design shares some similarities with the CPC6128, the case design is similar with it's internal 3&amp;quot; disc drive, and the disc controller is the same as the CPC6128's. The CPC464 and CPC6128 came before these Spectrum's, so it is clear Amstrad used those as inspirations to update the Spectrum design.&lt;br /&gt;
* In France, every machine that didn't provide an RGB output was doomed as TVs were in SECAM, not PAL. Had Sinclair understood the need for an RGB output in France, the ZX Spectrum would have certainly been a success there, just like it did in the UK and Spain. The success of the [[Oric 1/Atmos|Oric]] in France proves it.&lt;br /&gt;
&lt;br /&gt;
=== General Sound ===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;General Sound&amp;quot; (GS) is a sound card for ZX-Spectrum 48/128/etc... developed by X-Trade in 1997 as a commercial product. It is a 4 channel, 8-bit sound board with similar sound capabilities as the [[Amiga]] Paula chip. It has its own Z80 CPU onboard running at 12MHz, and 128KB of memory (16KB ROM and 112KB of RAM). The GS was very popular in Eastern Europe. [https://spectrumcomputing.co.uk/entry/1000171/Hardware/General_Sound Source]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://youtu.be/QIxf9bUit_g Over 100 ZX Spectrum 48K games in under 1 hour] [https://youtu.be/4MjqKswDx8I Over 50 ZX Spectrum 128K games in 30 minutes] [https://youtu.be/PUE4yboY5hk 25 modern games that push the limits]&lt;br /&gt;
* [https://www.youtube.com/watch?v=yOorvZ1nlzg&amp;amp;list=PLxOanVBhqd3tzVff-Ii1Eo1ykLSdLAnrV ZX Spectrum All Years TOP 10 playlists] [https://youtu.be/jLN4WhGruUY 5 hours with 600+ top quality colourful games] [https://youtu.be/Wd7lHltOGbA 3000 ZX Spectrum HD clips]&lt;br /&gt;
* [https://www.youtube.com/watch?v=CxPG2GUoUTE&amp;amp;list=PLxOanVBhqd3uSP_gBFdIkEvPxwuQr7DvA ZX Spectrum 48K Beeper chiptunes] [https://www.youtube.com/watch?v=e-3G2Fnh0YQ&amp;amp;list=PLxOanVBhqd3s-6c4Mz7h9NWFgKRvq_ipz ZX Spectrum 128K AY chiptunes]&lt;br /&gt;
* [https://youtu.be/MPSSJ_hFYhQ ZX Spectrum Commercials]&lt;br /&gt;
* [https://youtu.be/l5N937V8ZOw Sinclair C5 Infomercial] The ideal vehicle for ZX Spectrum lovers&lt;br /&gt;
* [https://sinclair.zilog.fr Sinclair's Spirit (FR)] Learn how to code with Z80 Assembler on ZX Spectrum with [[BDCIron]]&lt;br /&gt;
* [https://problemkaputt.de/zxdocs.htm Noca$h's ZXdocs] [https://spectrumcomputing.co.uk/entry/2000357/Book/Spectrum_Hardware_Manual Spectrum Hardware Manual] [https://pdfcoffee.com/the-zx-spectrum-ula-how-to-design-a-micro-chris-smith-pdf-free.html The ZX Spectrum ULA ebook]&lt;br /&gt;
* [https://worldofspectrum.net/documentation/ World of Spectrum] [https://www.spectrumforeveryone.com/technical/ Spectrum for Everyone] [https://sinclair.wiki.zxnet.co.uk Sinclair Wiki] Documentation&lt;br /&gt;
* [https://worldofspectrum.net/pub/sinclair/ World of Spectrum file server]&lt;br /&gt;
* [https://tzxvault.org/ The TZX Vault]&lt;br /&gt;
* [https://www.speccy.org/ Speccy.org] El portal español del Spectrum&lt;br /&gt;
* [https://youtu.be/I9dHI6EwWTU Sinclair ZX Spectrum Story - Birth of a Classic] by [[Nostalgia Nerd]]&lt;br /&gt;
* [https://youtu.be/fTKckoSj-OE Timex Sinclair 2068 - The American ZX Spectrum] by [[The 8-Bit Guy]]&lt;br /&gt;
* [https://youtu.be/36TtdthpKT8 Electronica CIP-03 - Le ZX Spectrum Roumain !] by [[Olipix]]&lt;br /&gt;
* [https://www.sinclaircollection.site/ Sinclair Collection Site] [https://en.wikipedia.org/wiki/List_of_ZX_Spectrum_clones List of ZX Spectrum clones]&lt;br /&gt;
* [https://www.youtube.com/watch?v=JfZ77Ltkols&amp;amp;list=PLIX9fyYxV0k_VOgMOIxseJH1c91KKcxKB ZX Spectrum vs Amstrad CPC] [https://www.youtube.com/watch?v=Wce82Q54dpA&amp;amp;list=PLIX9fyYxV0k_CanGbwkXdtlhmdtO62ZRW ZX Spectrum vs C64]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: Non CPC Computers]] [[Category:Amstrad Products|*]] [[Category:CPC History]]&lt;br /&gt;
[[Category:CP/M]]&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=CPC&amp;diff=126253</id>
		<title>CPC</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=CPC&amp;diff=126253"/>
				<updated>2025-05-23T19:14:15Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: /* ANT (Arnold Number Two) prototype */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:CPC History| ]]&lt;br /&gt;
[[Category:Hardware| ]][[Category:CPC Internal Components| ]][[Category:Amstrad Products| ]][[Category:CP/M]]&lt;br /&gt;
The Real meaning of this Wiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The Amstrad CPC (Colour Personal Computer) series was a series of 8-bit home / personal computers that were manufactured by the British company [[Amstrad]] between 1984 (launch of the CPC464: 21st June 1984) and 1993 (?). The CPC, like most contemporary home micros, had an integrated computer-in-a-keyboard design. Also incorporated in the keyboard was the [[Datacorder|tape recorder]] or [[Disk drives|disc drive]].&lt;br /&gt;
&lt;br /&gt;
In general what Amstrad aimed for was to offer a completely integrated solution at a low price. Just as with Amstrad's stereo towers before, [[Alan M. Sugar]] wanted to provide a solution with as few separate components as possible, with as few cables as possible and at as low a price as possible. A truck driver, unfamiliar with computers, was often cited as the CPC's target market.&lt;br /&gt;
&lt;br /&gt;
As a result, Amstrad chose ready off-the-shelf components and used low-cost production methods in an effort to bring manufacturing costs down. They also included a monitor to connect the computer to - a move which, while raising the price, was designed to free the home TV from little brats hogging it for a dose of Ikari Warriors while Eastenders was on. This concept appealed to users and proved to be a success.&lt;br /&gt;
&lt;br /&gt;
However, at least in the UK, it was initially possible to buy the Amstrad CPC with a modulator instead of an Amstrad monitor:&lt;br /&gt;
&lt;br /&gt;
[[File:CPC6128 with modulator - UK ads.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
The combination of low cost, integrated design, good manufacturing quality and some impressive features like CP/M and an 80-column display mode (lacking in much of the competition, particularly the Sinclair [[ZX Spectrum]] and [[Commodore 64]]) proved to be a success both with home users and small businesses, and Amstrad went on to sell millions of CPCs.&lt;br /&gt;
&lt;br /&gt;
Because of its use of the Z80, which was also used in the Sinclair models, some of the earliest games found on the CPC were fairly direct ports of the Spectrum versions which failed to take advantage of the CPC's extra capabilities. The amount of Spectrum ports has often been overstated by those who wish to knock the machine, and in fact formed a comparatively small number of largely unsuccessful games. Nonetheless, those that were published left users and reviewers with a bad taste in their mouth.&lt;br /&gt;
&lt;br /&gt;
At its core, the CPC combined a standard 4MHz [[Z80|Z80A]] with off-the-shelf components and a custom [[Gate Array]] chip. The [[firmware]] comprised two 16k ROMs (combined onto one 32k chip): one was effectively the operating system, the other the fast and flexible [[Locomotive BASIC]] interpreter. All machines except the original 464 would also include a further 16k ROM (on a separate chip): the AMSDOS disc operating system.&lt;br /&gt;
&lt;br /&gt;
Besides AMSDOS, CPCs equipped with floppy drives also shipped with [[CP/M]], allowing access to its vast library of available software.&lt;br /&gt;
&lt;br /&gt;
In all, there were three 'classic' models, the CPC [[464]], [[664]] and [[6128]]; plus two short-lived later [[Plus|advanced]] models, the 464 Plus and the 6128 Plus. A final iteration was the [[Plus|GX4000]] games machine based on the CPC+ computers.&lt;br /&gt;
&lt;br /&gt;
3 million units sold.&lt;br /&gt;
&lt;br /&gt;
''See also: [[CPC Prototypes]].''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Price positioning ==&lt;br /&gt;
&lt;br /&gt;
At launch, the Amstrad CPC 464 was one of the most expensive 8bit computer on the market, as the consumer was forced to buy it with its tape recorder and monitor.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Machine&lt;br /&gt;
! Manufacturer&lt;br /&gt;
! Price (Francs)&lt;br /&gt;
! Source: [https://www.abandonware-magazines.org/affiche_mag.php?mag=41&amp;amp;page=1 Micro 7 #21 (11/1984)]&lt;br /&gt;
|-&lt;br /&gt;
| [[Atari|800XL (PAL)]]&lt;br /&gt;
| Atari&lt;br /&gt;
| 2199&lt;br /&gt;
| advertisement Atari&lt;br /&gt;
|-&lt;br /&gt;
| [[Atari|800XL (SCART)]]&lt;br /&gt;
| Atari&lt;br /&gt;
| 2499&lt;br /&gt;
| advertisement Atari&lt;br /&gt;
|-&lt;br /&gt;
| [[Matra Alice|Alice]]&lt;br /&gt;
| Matra&lt;br /&gt;
| 1199&lt;br /&gt;
| advertisement Alice&lt;br /&gt;
|-&lt;br /&gt;
| [[Matra Alice|Alice 32 in suitcase]]&lt;br /&gt;
| Matra&lt;br /&gt;
| 2495&lt;br /&gt;
| advertisement Alice&lt;br /&gt;
|-&lt;br /&gt;
| [[Oric-1/Atmos|Atmos]]&lt;br /&gt;
| Oric&lt;br /&gt;
| 2350&lt;br /&gt;
| advertisement Vismo&lt;br /&gt;
|-&lt;br /&gt;
| [[BBC Micro]]&lt;br /&gt;
| Acorn&lt;br /&gt;
| 5990&lt;br /&gt;
| advertisement JCS&lt;br /&gt;
|-&lt;br /&gt;
| [[C64|C64 (PAL)]]&lt;br /&gt;
| Commodore&lt;br /&gt;
| 2990&lt;br /&gt;
| advertisement Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| [[C64|C64 (SCART)]]&lt;br /&gt;
| Commodore&lt;br /&gt;
| 3990&lt;br /&gt;
| ads Ordividuel (C64 modified by Procep)&lt;br /&gt;
|-&lt;br /&gt;
| '''CPC 464 with colour monitor'''&lt;br /&gt;
| Amstrad&lt;br /&gt;
| 4490&lt;br /&gt;
| advertisements Vismo, JCS and Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| '''CPC 464 with monochrome monitor'''&lt;br /&gt;
| Amstrad&lt;br /&gt;
| 2990&lt;br /&gt;
| advertisements Vismo, JCS and Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| [[Exelvision EXL100|Exl 100]]&lt;br /&gt;
| Exelvision&lt;br /&gt;
| 3190&lt;br /&gt;
| advertisement JCS&lt;br /&gt;
|-&lt;br /&gt;
| Laser 200&lt;br /&gt;
| V-tech&lt;br /&gt;
| 1280&lt;br /&gt;
| advertisement Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| Laser 310&lt;br /&gt;
| V-tech&lt;br /&gt;
| 1490&lt;br /&gt;
| advertisement Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| Macintosh 512KB (all-in-one)&lt;br /&gt;
| Apple&lt;br /&gt;
| 29995&lt;br /&gt;
| article&lt;br /&gt;
|-&lt;br /&gt;
| [[Thomson computers|MO5]]&lt;br /&gt;
| Thomson&lt;br /&gt;
| 2450&lt;br /&gt;
| advertisement Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| [[MSX|MSX PHC-28]]&lt;br /&gt;
| Sanyo&lt;br /&gt;
| 2990&lt;br /&gt;
| advertisement Vismo&lt;br /&gt;
|-&lt;br /&gt;
| [[MSX|MSX Prism]]&lt;br /&gt;
| Goldstar&lt;br /&gt;
| 2950&lt;br /&gt;
| article&lt;br /&gt;
|-&lt;br /&gt;
| PC 128KB (all-in-one)&lt;br /&gt;
| Goupil&lt;br /&gt;
| 24200&lt;br /&gt;
| article&lt;br /&gt;
|-&lt;br /&gt;
| [[Thomson computers|TO7/70]]&lt;br /&gt;
| Thomson&lt;br /&gt;
| 3590&lt;br /&gt;
| advertisement Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| [[VG 5000]]&lt;br /&gt;
| Philips&lt;br /&gt;
| 1590&lt;br /&gt;
| article&lt;br /&gt;
|-&lt;br /&gt;
| [[ZX Spectrum|ZX Spectrum 48KB]]&lt;br /&gt;
| Sinclair&lt;br /&gt;
| 1990&lt;br /&gt;
| advertisement Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| [[ZX80/81|ZX81]]&lt;br /&gt;
| Sinclair&lt;br /&gt;
| 580&lt;br /&gt;
| advertisements Vismo and Ordividuel&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
But all things considered, it was an excellent value, as both a tape recorder and a monitor were expensive items. And most buyers didn’t have spare ones to reuse anyway as it was their first computer.&lt;br /&gt;
&lt;br /&gt;
A cheap Zenith zvm122 12inch monochrome monitor cost 990 Francs, a Novex Mc1414 14inch colour monitor cost 2800 Francs, a tape recorder for the C64 cost 450 Francs, a floppy drive for the C64 cost 3500 Francs. Source: Micro 7 #21 - 11/1984&lt;br /&gt;
&lt;br /&gt;
Note: In France we had an additional problem in that our TVs were [https://en.wikipedia.org/wiki/SECAM SECAM] only in the 80s. A monitor was required for foreign computers like the C64 PAL or the ZX Spectrum that didn't output RGB. TVs only became PAL/SECAM compatible in the 90s.&lt;br /&gt;
&lt;br /&gt;
The minimum wage in France in 11/1984 was at 4116 Francs per month for a full-time job. Source: http://www.cda-strasbourg.org/smic.htm&lt;br /&gt;
&lt;br /&gt;
In June 1985, the CPC 664 was launched at 4490 Francs for monochrome and 5990 Francs for colour. Source: Micro 7 #28 - 06/1985&lt;br /&gt;
&lt;br /&gt;
The evolution of Amstrad CPC prices over the years is described in that article: [https://www.cpc-power.com/cpcarchives/index.php?page=articles&amp;amp;num=90 L'histoire des CPC selon GENERAL]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Late to the market ==&lt;br /&gt;
&lt;br /&gt;
Amstrad jumped into the home computer market in June 1984, one year after the [[MSX]] Standard of June 1983 which was thought at the time to be the end of the &amp;quot;cowboy&amp;quot; era of disparate and incompatible 8-bit computers.&lt;br /&gt;
&lt;br /&gt;
It was just in time to shake things up with its unique all-in-one concept for the home market. &lt;br /&gt;
&lt;br /&gt;
While earlier computers like the Tandy TRS-80 Model III, Commodore PET, Commodore Educator 64, Apple Lisa and Apple Macintosh had pioneered the all-in-one design, they were primarily aimed at businesses and education.&lt;br /&gt;
&lt;br /&gt;
By the end of 1985, all the big names were already established in both 8-bit and the newer 16-bit systems, leaving no room for newcomers.&lt;br /&gt;
&lt;br /&gt;
From there, it turned into a survival game, with the weaker players getting pushed out. After that, no new companies managed to break into the market, except for PC clones.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The CPC series ==&lt;br /&gt;
&lt;br /&gt;
=== The 464 ===&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
464.png|Amstrad CPC [[464]] with colour monitor&lt;br /&gt;
CPC464 pre-production sample.jpg|Pre-production sample made by Orion Japan for Amstrad UK&lt;br /&gt;
Schneider cpc 464 ddi1.jpg|Schneider CPC [[464]] with monochrome monitor and [[Amstrad External Disk Drive|DDI-1]] extension&lt;br /&gt;
Amstrad CPC464 grey keys.jpg|Amstrad CPC464 with grey keys&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:CPC464 english ad.jpg|English ad&lt;br /&gt;
File:CPC464 australian ad.jpg| Australian ad&lt;br /&gt;
File:CPC464 french ad.jpg|French ad&lt;br /&gt;
File:CPC464 spanish ad.jpg|Spanish ad&lt;br /&gt;
File:CPC464 danish ad.jpg|Danish ad&lt;br /&gt;
File:CPC464 greek ad.jpg|Greek ad&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
First came the CPC464, the father of the CPC family, released on the 21st June 1984 (with production ceasing in 1990). This model used an integrated tape recorder and offered 64KB of RAM.&lt;br /&gt;
&lt;br /&gt;
It sold around two million units in Europe and, technology-wise, was more impressive than the [[ZX Spectrum]] and on a similar level with the [[Commodore 64]]. The firmware of the CPC was also leagues ahead of the C64.&lt;br /&gt;
&lt;br /&gt;
One notable exception was the sound chip: while the C64 employed the splendid custom [[SID]] chip, Amstrad opted for a generic sound chip - [[AY|AY-3-8912]] - with unremarkable features. It is no surprise though as there was not much choice in off-the-shelf sound chips in early 1984.&lt;br /&gt;
&lt;br /&gt;
At its core was a [[Z80]] clocked at 4MHz - though screen display considerations, and the particular design of the [[Gate Array]] limited this to an effective 3.3MHz in practice - while the display was managed by the [[CRTC|6845 CRTC]] along with a gate-array chip.&lt;br /&gt;
&lt;br /&gt;
The CPC464 sported a palette of 27 colours and [[Video modes|three distinct resolutions]]: 160x200x16 colours (mode 0), 320x200x4 colours (mode 1) and 640x200x2 colours (mode 2, 80-column mode).&lt;br /&gt;
&lt;br /&gt;
Before the launch of the CPC 464, 45 pre-production hand built machines with a grey case had been issued to software houses to get their games ready on time.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The 472 ===&lt;br /&gt;
[[image:CPC_472_es.jpg|right|thumb|300px|Spanish Amstrad CPC 472]]&lt;br /&gt;
The [[472|CPC 472]] was a Spanish version of the CPC 464 with an additional, non-functional 8KB RAM. The reason was that Spain charged an import tax on home computers with 64K or less RAM, the fake &amp;quot;72K&amp;quot; CPC version bypassed that tax. The tax was invented in September 1985, and was dropped a few months later (when Spain joined the EEC). Also in 1985, but independtly of that tax, Spain dictated that computers must have spanish keyboards, which resulted in two CPC 472 versions: Older models with english keys, newer ones with spanish keys. Another oddity is that the older CPC472 had BASIC 1.1 while the newer CPC472 had BASIC 1.0. The CPC 472 is very rare.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;We had basically stuck two fingers in the air to the Spanish government, who were trying to screw our business, and there wasn’t much they could do about it&amp;quot; — Alan Sugar&lt;br /&gt;
&lt;br /&gt;
Read the full story behind the CPC 472 directly from the horse's mouth: https://amstrad.com/product/cpc472/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The 664 ===&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Amstrad-cpc-664.png|Amstrad CPC 664&lt;br /&gt;
Schneider cpc 664.jpg|Schneider CPC 664&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In June 1985, Amstrad took the initial design and, building upon the same idea, removed the tape recorder and replaced it with a disc drive, using the same hardware sold as the [[DDI-1]] add-on for 464 owners. The result: the CPC664. Sporting a less colourful and easier-to-type-on keyboard, the CPC664 appealed as a more serious machine and proved a success, especially due to its quite fast 3&amp;quot;, 180KB/side drive.&lt;br /&gt;
&lt;br /&gt;
Never the less, the 664 did have a very short life and was soon replaced by the 6128 (according to [[Amstrad Action]], Issue 1, Oct 1985, page [[:File:Amstrad Action001 08.jpg|8]], the 664 was produced only from May until August 1985).&lt;br /&gt;
&lt;br /&gt;
* ''[http://www.gondolin.org.uk/hchof/review.php?id=29&amp;amp;mcid=27 Your Computer (June 1985) review of the CPC664]''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The 6128 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Amstrad CPC6128.jpg|Amstrad CPC 6128&lt;br /&gt;
File:Amstrad CPC 6128 white.jpg|Amstrad CPC 6128 with white sticker&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Shortly afterwards, Amstrad launched the CPC6128 for the American market only, through its distributor [[Indescomp]]. The new machine sported 128k of memory and a still more sober appearance, but was otherwise nearly identical to the 664. The height of the case was greatly reduced, and the cursor keys were arranged more comfortably, both making the keyboard more ergonomically than the 464/664. Internally, the keyboard consists of two foils, although such membrane foils are relative fragile, they were more robust and reliable than the single foil used in the 664.&lt;br /&gt;
&lt;br /&gt;
Despite initial denials, the machine was launched in Europe shortly afterwards, replacing the 664 for the same price - a situation which understandably irritated some of those who had recently purchased 664s. As well as the [[CP/M]] 2.2 and [[DR Logo]] that had shipped with the DDI-1 and the CPC664, the 6128 came bundled with CP/M Plus (with the GSX graphics extension) making it an appealing all-round computer at a low price. Though the 128KB of memory could not be accessed all at once from BASIC (due to limitations of the [[Z80]]), the upper 64KB could be used readily from machine code courtesy of an upgraded [[Gate Array]]. A bundled program, [[Bankman]], provided some access from BASIC.&lt;br /&gt;
&lt;br /&gt;
The presence of this extra memory and the clever design of Amstrad's CP/M Plus implementation allowed for a TPA (Transient Program Area) of 61KB, more than enough to run all CP/M software.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Accessories ===&lt;br /&gt;
&lt;br /&gt;
Amstrad pushed the all-in-one package concept even further by selling unusual accessories to go along with their computer. Most notably, they proposed:&lt;br /&gt;
* A [[Amstrad CT-1 Radio/Alarm-Clock|clock/radio/alarm module]]&lt;br /&gt;
* A [[MP-3|TV tuner]] to transform the Amstrad CPC into a TV&lt;br /&gt;
* A [[CS-10 Computer Desk|computer desk]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Amstrad CPC accessories.jpg|200px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ANT (Arnold Number Two) prototype ==&lt;br /&gt;
&lt;br /&gt;
At the same time, Amstrad was designing the immensely successful [[PCW]] word-processor series, also with software by [[Locomotive Software|Locomotive]] and featuring an all-in-one Z80-based design.&lt;br /&gt;
&lt;br /&gt;
A shared architecture was developed that would encompass both the PCW and a new, upgraded CPC - codenamed [[ANT]], or Arnold Number Two. It shared many features with the PCW, such as its larger memory and its exceptionally elegant screen-handling hardware, but boasted colour and sound, and retained CPC compatibility. The aim was to see off the Atari ST and Commodore Amiga, next-generation games machines already on the horizon.&lt;br /&gt;
&lt;br /&gt;
A few of the PCW's design features which don't appear to make any sense on their own stem from this shared ancestry. But the project was dropped at a fairly early stage, and the CPC Classic lived on before eventually succumbing to the Plus. Only one prototype board is believed to survive, in the possession of ex-Locomotive Software engineer [[Richard Clayton]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The Plus series ==&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
cpc6128plus.jpg|Amstrad [[Plus|6128 Plus]] with colour monitor&lt;br /&gt;
Amstrad 464 Plus.jpg|Amstrad [[Plus|464 Plus]]&lt;br /&gt;
File:Amstrad-plus-ad.jpg|English advertisement&lt;br /&gt;
File:Amstrad-plus-french-ad.jpg|French advertisement&lt;br /&gt;
File:Amstrad-plus-spanish-ad.jpg|Spanish advertisement&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
The last models in the Amstrad CPC range were the [[Plus|Amstrad 464 Plus]] and [[Plus|Amstrad 6128 Plus]], launched together in 1990. The CPC name is said to have been dropped because of a legal dispute with a French firm, though it is also likely that &amp;quot;CPC 6128 Plus&amp;quot; was considered too unwieldy a name and one redolent of the machine's mid-80s heritage. However, the &amp;quot;CPC Plus&amp;quot; branding was used by Amstrad España in their advertising material.&lt;br /&gt;
&lt;br /&gt;
The Plus series were quite (but not 100%) compatible with the original CPC computers. The compatibility issues came mostly from:&lt;br /&gt;
* The emulated [[8255|PPI]] chip, making the keyboard unresponsive&lt;br /&gt;
* The emulated [[CRTC]], breaking CPC demos&lt;br /&gt;
* Unlike the original model, the 464 Plus lacks a tape counter for tracking cassette positions. It also omits the distinctive loading sounds that were once audible through the speaker during tape operations on the original CPC 464&lt;br /&gt;
* Unlike the original model, the 464 Plus features the BASIC 1.1 ROM&lt;br /&gt;
* The new AMSDOS ROM, breaking ROM access to the floppy drive&lt;br /&gt;
&lt;br /&gt;
ROM issues can be easily fixed by using a [[Plus System Cartridge|Downgrade System cartridge]].&lt;br /&gt;
&lt;br /&gt;
The Plus series incorporated a list of [[ASIC|new features]], like a cartridge port for instant program loading, DMA for the [[AY]] soundchip, enhanced hardware scrolling, programmable interrupts, 16 hardware zoomable sprites (not vectorized) with an independent palette of 15 colours, and a choice of 4096 colours all in a new, sleek case which mimicked the keyboard-computer design that was ''en vogue'' in the 16-bit market (ST, Amiga etc). &lt;br /&gt;
&lt;br /&gt;
Described as a solution of 'too little, too late', this was Amstrad's effort to prolong the life of its 8-bit computer series in the face of fierce competition from new 16-bit machines (notably, the [[Atari ST]] and the Commodore [[Amiga]]).&lt;br /&gt;
&lt;br /&gt;
While the Amstrad Plus computers were one of the most advanced 8-bit computers ever built for the mass market, they died an early death as the 16-bit era was in full swing. And 32-bit computers were already appearing. The year before, Amstrad launched its first 32-bit PC, the [[Amstrad PC|PC2386]].&lt;br /&gt;
&lt;br /&gt;
Also, the [[Apple II|Apple IIGS]] and the [[MSX|MSX Turbo-R]] proved that 8-bit machines could be upgraded to 16-bit. It would have been possible with the CPC if Amstrad had decided to do so.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The GX4000 ==&lt;br /&gt;
[[Image:Amstrad-GX4000-Console.jpg|right|thumb|300px|The Amstrad GX4000]]&lt;br /&gt;
By 1990 Amstrad had realised that the home market was heading towards the 16-bit machines, on one hand, and towards the new generation of game consoles like the Sega Master System or the Nintendo Entertainment System, on the other. Therefore, just as they created the 464 Plus and 6128 Plus to compete against the ST and the Amiga, they also created a stripped-down variant called the [[Plus|GX4000]]. &lt;br /&gt;
&lt;br /&gt;
The GX4000 was, in essence, an Amstrad 464+ motherboard in a new case, with no keyboard, cassette deck nor disc drive, and with most extension ports gone - save for the cartridge port and two joypads.&lt;br /&gt;
&lt;br /&gt;
As expected, the GX4000 was a flop that could not break the stranglehold that Sega and Nintendo had on the market at the time. As a result, the GX4000 was soon to be found selling at ridiculously low prices - as little as £19.99 in the UK - as dealers tried to offload their stock. It was a shame, because if Amstrad had realised the market potential and produced this console a few years earlier, it could well have been a success.&lt;br /&gt;
&lt;br /&gt;
As it was, the GX4000 joined the long list of failed attempts to repurpose computers as game consoles, alongside the Atari XEGS, the Commodore 64GS, the Amiga CDTV, the Amiga CD32, the FM Towns Marty and the Apple Pippin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Clones ==&lt;br /&gt;
&lt;br /&gt;
There were two clones of the CPC, neither of which were 100% compatible with the CPC.&lt;br /&gt;
&lt;br /&gt;
* [[KC Compact]]: An East German clone. The Gate-Array was replaced with TTL logic which performed a similar function. There are some hardware differences, especially in the interrupts. This clone is much closer to the CPC in terms of functionality.&lt;br /&gt;
&lt;br /&gt;
* [[Aleste 520EX]]: This clone also had some MSX like hardware which made it possible to run some modified MSX titles. This clone also ran faster than the original CPC.&lt;br /&gt;
&lt;br /&gt;
* [https://hackaday.io/project/188511-xialeste XiAleste]: This expanded clone is the successor of the Aleste. Currently under development.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Outro ==&lt;br /&gt;
&lt;br /&gt;
All in all, the CPC series met with great success. Although they would never achieve the universal status of the [[Commodore 64]] or the humble [[ZX Spectrum]] series, the CPCs managed to sell very well.&lt;br /&gt;
&lt;br /&gt;
France was the sole market where the CPCs achieved the top position for years. Still, the CPCs were very popular in the UK, Spain, Greece, Germany and Australia, to name a few countries.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*[[CPC timeline]]&lt;br /&gt;
*[https://youtu.be/MTsCiZ3ZBD4 Entrevista a ROLAND PERRY] by [[Las Cosas Retro]]&lt;br /&gt;
*[https://youtu.be/bD_gBz2fwDM Amstrad CPC - Top 150 games (1984-2020)] Top 50 CPC games from [https://youtu.be/F3pVjc4tmCU 1984] [https://youtu.be/8w7Rx1dOmPs 1985] [https://youtu.be/c18muwWbVZc 1986] [https://youtu.be/NpL1uq0IAz4 1987] [https://youtu.be/0mnR3vTJXw8 1988]&lt;br /&gt;
*[https://youtu.be/ZOOwlWwlltM All Amstrad CPC games] from [https://youtu.be/Smpv8v1OP5A 1984] [https://youtu.be/_JJjHXNGEyY 1985] [https://youtu.be/5XRyZIW4c9s 1986] [https://youtu.be/V7yRLp-Xvfs 1987] [https://youtu.be/afn70FPDRoQ 1988] [https://youtu.be/tpQ1PhUWnYw 1989] [https://youtu.be/8_JvuGdumC4 1990] [https://youtu.be/yJsm1DeF7Pk 1991] [https://youtu.be/LQmDzkNs0P4 1992]&lt;br /&gt;
*[https://youtu.be/hBlHUWRlmug Amstrad CPC - Best of Music with Video (3 hours)]&lt;br /&gt;
*[https://youtu.be/BvramomEtSM Amstrad TV adverts] [https://youtu.be/n7U6E7bDFlc Amstrad French TV adverts]&lt;br /&gt;
*[https://youtu.be/8o1OTwFv7WQ Part 1] [https://youtu.be/f1KS7nSKnxE Part 2] Amstrad CPC Story by [[Nostalgia Nerd]]&lt;br /&gt;
*[https://youtu.be/fB9M6RMtMUE Partie 1] [https://youtu.be/F0CzNJjjkO4 Partie 2] [https://youtu.be/la5IhBbrqPc Partie 3] [https://youtu.be/uUR5oKBxRzA Partie 4] Histoire de l'Amstrad CPC by [[Génération Micros]]&lt;br /&gt;
*[https://youtu.be/mesZ1zbA654 Amstrad : La gamme CPC (1984/1985)] [https://youtu.be/Ijuqsz69Euk Amstrad 6128 Plus] by [[Rodrik Studio]]&lt;br /&gt;
*[https://www.youtube.com/watch?v=O0vvdDx4egk&amp;amp;list=PLIX9fyYxV0k9phQiqATmOe2OZJyeMuY0a C64 vs Amstrad CPC] [https://www.youtube.com/watch?v=JfZ77Ltkols&amp;amp;list=PLIX9fyYxV0k_VOgMOIxseJH1c91KKcxKB ZX Spectrum vs Amstrad CPC]&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=CPC&amp;diff=126252</id>
		<title>CPC</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=CPC&amp;diff=126252"/>
				<updated>2025-05-23T19:02:21Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: /* ANT (Arnold Number Two) prototype */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:CPC History| ]]&lt;br /&gt;
[[Category:Hardware| ]][[Category:CPC Internal Components| ]][[Category:Amstrad Products| ]][[Category:CP/M]]&lt;br /&gt;
The Real meaning of this Wiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The Amstrad CPC (Colour Personal Computer) series was a series of 8-bit home / personal computers that were manufactured by the British company [[Amstrad]] between 1984 (launch of the CPC464: 21st June 1984) and 1993 (?). The CPC, like most contemporary home micros, had an integrated computer-in-a-keyboard design. Also incorporated in the keyboard was the [[Datacorder|tape recorder]] or [[Disk drives|disc drive]].&lt;br /&gt;
&lt;br /&gt;
In general what Amstrad aimed for was to offer a completely integrated solution at a low price. Just as with Amstrad's stereo towers before, [[Alan M. Sugar]] wanted to provide a solution with as few separate components as possible, with as few cables as possible and at as low a price as possible. A truck driver, unfamiliar with computers, was often cited as the CPC's target market.&lt;br /&gt;
&lt;br /&gt;
As a result, Amstrad chose ready off-the-shelf components and used low-cost production methods in an effort to bring manufacturing costs down. They also included a monitor to connect the computer to - a move which, while raising the price, was designed to free the home TV from little brats hogging it for a dose of Ikari Warriors while Eastenders was on. This concept appealed to users and proved to be a success.&lt;br /&gt;
&lt;br /&gt;
However, at least in the UK, it was initially possible to buy the Amstrad CPC with a modulator instead of an Amstrad monitor:&lt;br /&gt;
&lt;br /&gt;
[[File:CPC6128 with modulator - UK ads.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
The combination of low cost, integrated design, good manufacturing quality and some impressive features like CP/M and an 80-column display mode (lacking in much of the competition, particularly the Sinclair [[ZX Spectrum]] and [[Commodore 64]]) proved to be a success both with home users and small businesses, and Amstrad went on to sell millions of CPCs.&lt;br /&gt;
&lt;br /&gt;
Because of its use of the Z80, which was also used in the Sinclair models, some of the earliest games found on the CPC were fairly direct ports of the Spectrum versions which failed to take advantage of the CPC's extra capabilities. The amount of Spectrum ports has often been overstated by those who wish to knock the machine, and in fact formed a comparatively small number of largely unsuccessful games. Nonetheless, those that were published left users and reviewers with a bad taste in their mouth.&lt;br /&gt;
&lt;br /&gt;
At its core, the CPC combined a standard 4MHz [[Z80|Z80A]] with off-the-shelf components and a custom [[Gate Array]] chip. The [[firmware]] comprised two 16k ROMs (combined onto one 32k chip): one was effectively the operating system, the other the fast and flexible [[Locomotive BASIC]] interpreter. All machines except the original 464 would also include a further 16k ROM (on a separate chip): the AMSDOS disc operating system.&lt;br /&gt;
&lt;br /&gt;
Besides AMSDOS, CPCs equipped with floppy drives also shipped with [[CP/M]], allowing access to its vast library of available software.&lt;br /&gt;
&lt;br /&gt;
In all, there were three 'classic' models, the CPC [[464]], [[664]] and [[6128]]; plus two short-lived later [[Plus|advanced]] models, the 464 Plus and the 6128 Plus. A final iteration was the [[Plus|GX4000]] games machine based on the CPC+ computers.&lt;br /&gt;
&lt;br /&gt;
3 million units sold.&lt;br /&gt;
&lt;br /&gt;
''See also: [[CPC Prototypes]].''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Price positioning ==&lt;br /&gt;
&lt;br /&gt;
At launch, the Amstrad CPC 464 was one of the most expensive 8bit computer on the market, as the consumer was forced to buy it with its tape recorder and monitor.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Machine&lt;br /&gt;
! Manufacturer&lt;br /&gt;
! Price (Francs)&lt;br /&gt;
! Source: [https://www.abandonware-magazines.org/affiche_mag.php?mag=41&amp;amp;page=1 Micro 7 #21 (11/1984)]&lt;br /&gt;
|-&lt;br /&gt;
| [[Atari|800XL (PAL)]]&lt;br /&gt;
| Atari&lt;br /&gt;
| 2199&lt;br /&gt;
| advertisement Atari&lt;br /&gt;
|-&lt;br /&gt;
| [[Atari|800XL (SCART)]]&lt;br /&gt;
| Atari&lt;br /&gt;
| 2499&lt;br /&gt;
| advertisement Atari&lt;br /&gt;
|-&lt;br /&gt;
| [[Matra Alice|Alice]]&lt;br /&gt;
| Matra&lt;br /&gt;
| 1199&lt;br /&gt;
| advertisement Alice&lt;br /&gt;
|-&lt;br /&gt;
| [[Matra Alice|Alice 32 in suitcase]]&lt;br /&gt;
| Matra&lt;br /&gt;
| 2495&lt;br /&gt;
| advertisement Alice&lt;br /&gt;
|-&lt;br /&gt;
| [[Oric-1/Atmos|Atmos]]&lt;br /&gt;
| Oric&lt;br /&gt;
| 2350&lt;br /&gt;
| advertisement Vismo&lt;br /&gt;
|-&lt;br /&gt;
| [[BBC Micro]]&lt;br /&gt;
| Acorn&lt;br /&gt;
| 5990&lt;br /&gt;
| advertisement JCS&lt;br /&gt;
|-&lt;br /&gt;
| [[C64|C64 (PAL)]]&lt;br /&gt;
| Commodore&lt;br /&gt;
| 2990&lt;br /&gt;
| advertisement Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| [[C64|C64 (SCART)]]&lt;br /&gt;
| Commodore&lt;br /&gt;
| 3990&lt;br /&gt;
| ads Ordividuel (C64 modified by Procep)&lt;br /&gt;
|-&lt;br /&gt;
| '''CPC 464 with colour monitor'''&lt;br /&gt;
| Amstrad&lt;br /&gt;
| 4490&lt;br /&gt;
| advertisements Vismo, JCS and Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| '''CPC 464 with monochrome monitor'''&lt;br /&gt;
| Amstrad&lt;br /&gt;
| 2990&lt;br /&gt;
| advertisements Vismo, JCS and Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| [[Exelvision EXL100|Exl 100]]&lt;br /&gt;
| Exelvision&lt;br /&gt;
| 3190&lt;br /&gt;
| advertisement JCS&lt;br /&gt;
|-&lt;br /&gt;
| Laser 200&lt;br /&gt;
| V-tech&lt;br /&gt;
| 1280&lt;br /&gt;
| advertisement Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| Laser 310&lt;br /&gt;
| V-tech&lt;br /&gt;
| 1490&lt;br /&gt;
| advertisement Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| Macintosh 512KB (all-in-one)&lt;br /&gt;
| Apple&lt;br /&gt;
| 29995&lt;br /&gt;
| article&lt;br /&gt;
|-&lt;br /&gt;
| [[Thomson computers|MO5]]&lt;br /&gt;
| Thomson&lt;br /&gt;
| 2450&lt;br /&gt;
| advertisement Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| [[MSX|MSX PHC-28]]&lt;br /&gt;
| Sanyo&lt;br /&gt;
| 2990&lt;br /&gt;
| advertisement Vismo&lt;br /&gt;
|-&lt;br /&gt;
| [[MSX|MSX Prism]]&lt;br /&gt;
| Goldstar&lt;br /&gt;
| 2950&lt;br /&gt;
| article&lt;br /&gt;
|-&lt;br /&gt;
| PC 128KB (all-in-one)&lt;br /&gt;
| Goupil&lt;br /&gt;
| 24200&lt;br /&gt;
| article&lt;br /&gt;
|-&lt;br /&gt;
| [[Thomson computers|TO7/70]]&lt;br /&gt;
| Thomson&lt;br /&gt;
| 3590&lt;br /&gt;
| advertisement Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| [[VG 5000]]&lt;br /&gt;
| Philips&lt;br /&gt;
| 1590&lt;br /&gt;
| article&lt;br /&gt;
|-&lt;br /&gt;
| [[ZX Spectrum|ZX Spectrum 48KB]]&lt;br /&gt;
| Sinclair&lt;br /&gt;
| 1990&lt;br /&gt;
| advertisement Ordividuel&lt;br /&gt;
|-&lt;br /&gt;
| [[ZX80/81|ZX81]]&lt;br /&gt;
| Sinclair&lt;br /&gt;
| 580&lt;br /&gt;
| advertisements Vismo and Ordividuel&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
But all things considered, it was an excellent value, as both a tape recorder and a monitor were expensive items. And most buyers didn’t have spare ones to reuse anyway as it was their first computer.&lt;br /&gt;
&lt;br /&gt;
A cheap Zenith zvm122 12inch monochrome monitor cost 990 Francs, a Novex Mc1414 14inch colour monitor cost 2800 Francs, a tape recorder for the C64 cost 450 Francs, a floppy drive for the C64 cost 3500 Francs. Source: Micro 7 #21 - 11/1984&lt;br /&gt;
&lt;br /&gt;
Note: In France we had an additional problem in that our TVs were [https://en.wikipedia.org/wiki/SECAM SECAM] only in the 80s. A monitor was required for foreign computers like the C64 PAL or the ZX Spectrum that didn't output RGB. TVs only became PAL/SECAM compatible in the 90s.&lt;br /&gt;
&lt;br /&gt;
The minimum wage in France in 11/1984 was at 4116 Francs per month for a full-time job. Source: http://www.cda-strasbourg.org/smic.htm&lt;br /&gt;
&lt;br /&gt;
In June 1985, the CPC 664 was launched at 4490 Francs for monochrome and 5990 Francs for colour. Source: Micro 7 #28 - 06/1985&lt;br /&gt;
&lt;br /&gt;
The evolution of Amstrad CPC prices over the years is described in that article: [https://www.cpc-power.com/cpcarchives/index.php?page=articles&amp;amp;num=90 L'histoire des CPC selon GENERAL]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Late to the market ==&lt;br /&gt;
&lt;br /&gt;
Amstrad jumped into the home computer market in June 1984, one year after the [[MSX]] Standard of June 1983 which was thought at the time to be the end of the &amp;quot;cowboy&amp;quot; era of disparate and incompatible 8-bit computers.&lt;br /&gt;
&lt;br /&gt;
It was just in time to shake things up with its unique all-in-one concept for the home market. &lt;br /&gt;
&lt;br /&gt;
While earlier computers like the Tandy TRS-80 Model III, Commodore PET, Commodore Educator 64, Apple Lisa and Apple Macintosh had pioneered the all-in-one design, they were primarily aimed at businesses and education.&lt;br /&gt;
&lt;br /&gt;
By the end of 1985, all the big names were already established in both 8-bit and the newer 16-bit systems, leaving no room for newcomers.&lt;br /&gt;
&lt;br /&gt;
From there, it turned into a survival game, with the weaker players getting pushed out. After that, no new companies managed to break into the market, except for PC clones.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The CPC series ==&lt;br /&gt;
&lt;br /&gt;
=== The 464 ===&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
464.png|Amstrad CPC [[464]] with colour monitor&lt;br /&gt;
CPC464 pre-production sample.jpg|Pre-production sample made by Orion Japan for Amstrad UK&lt;br /&gt;
Schneider cpc 464 ddi1.jpg|Schneider CPC [[464]] with monochrome monitor and [[Amstrad External Disk Drive|DDI-1]] extension&lt;br /&gt;
Amstrad CPC464 grey keys.jpg|Amstrad CPC464 with grey keys&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:CPC464 english ad.jpg|English ad&lt;br /&gt;
File:CPC464 australian ad.jpg| Australian ad&lt;br /&gt;
File:CPC464 french ad.jpg|French ad&lt;br /&gt;
File:CPC464 spanish ad.jpg|Spanish ad&lt;br /&gt;
File:CPC464 danish ad.jpg|Danish ad&lt;br /&gt;
File:CPC464 greek ad.jpg|Greek ad&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
First came the CPC464, the father of the CPC family, released on the 21st June 1984 (with production ceasing in 1990). This model used an integrated tape recorder and offered 64KB of RAM.&lt;br /&gt;
&lt;br /&gt;
It sold around two million units in Europe and, technology-wise, was more impressive than the [[ZX Spectrum]] and on a similar level with the [[Commodore 64]]. The firmware of the CPC was also leagues ahead of the C64.&lt;br /&gt;
&lt;br /&gt;
One notable exception was the sound chip: while the C64 employed the splendid custom [[SID]] chip, Amstrad opted for a generic sound chip - [[AY|AY-3-8912]] - with unremarkable features. It is no surprise though as there was not much choice in off-the-shelf sound chips in early 1984.&lt;br /&gt;
&lt;br /&gt;
At its core was a [[Z80]] clocked at 4MHz - though screen display considerations, and the particular design of the [[Gate Array]] limited this to an effective 3.3MHz in practice - while the display was managed by the [[CRTC|6845 CRTC]] along with a gate-array chip.&lt;br /&gt;
&lt;br /&gt;
The CPC464 sported a palette of 27 colours and [[Video modes|three distinct resolutions]]: 160x200x16 colours (mode 0), 320x200x4 colours (mode 1) and 640x200x2 colours (mode 2, 80-column mode).&lt;br /&gt;
&lt;br /&gt;
Before the launch of the CPC 464, 45 pre-production hand built machines with a grey case had been issued to software houses to get their games ready on time.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The 472 ===&lt;br /&gt;
[[image:CPC_472_es.jpg|right|thumb|300px|Spanish Amstrad CPC 472]]&lt;br /&gt;
The [[472|CPC 472]] was a Spanish version of the CPC 464 with an additional, non-functional 8KB RAM. The reason was that Spain charged an import tax on home computers with 64K or less RAM, the fake &amp;quot;72K&amp;quot; CPC version bypassed that tax. The tax was invented in September 1985, and was dropped a few months later (when Spain joined the EEC). Also in 1985, but independtly of that tax, Spain dictated that computers must have spanish keyboards, which resulted in two CPC 472 versions: Older models with english keys, newer ones with spanish keys. Another oddity is that the older CPC472 had BASIC 1.1 while the newer CPC472 had BASIC 1.0. The CPC 472 is very rare.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;We had basically stuck two fingers in the air to the Spanish government, who were trying to screw our business, and there wasn’t much they could do about it&amp;quot; — Alan Sugar&lt;br /&gt;
&lt;br /&gt;
Read the full story behind the CPC 472 directly from the horse's mouth: https://amstrad.com/product/cpc472/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The 664 ===&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Amstrad-cpc-664.png|Amstrad CPC 664&lt;br /&gt;
Schneider cpc 664.jpg|Schneider CPC 664&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In June 1985, Amstrad took the initial design and, building upon the same idea, removed the tape recorder and replaced it with a disc drive, using the same hardware sold as the [[DDI-1]] add-on for 464 owners. The result: the CPC664. Sporting a less colourful and easier-to-type-on keyboard, the CPC664 appealed as a more serious machine and proved a success, especially due to its quite fast 3&amp;quot;, 180KB/side drive.&lt;br /&gt;
&lt;br /&gt;
Never the less, the 664 did have a very short life and was soon replaced by the 6128 (according to [[Amstrad Action]], Issue 1, Oct 1985, page [[:File:Amstrad Action001 08.jpg|8]], the 664 was produced only from May until August 1985).&lt;br /&gt;
&lt;br /&gt;
* ''[http://www.gondolin.org.uk/hchof/review.php?id=29&amp;amp;mcid=27 Your Computer (June 1985) review of the CPC664]''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The 6128 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Amstrad CPC6128.jpg|Amstrad CPC 6128&lt;br /&gt;
File:Amstrad CPC 6128 white.jpg|Amstrad CPC 6128 with white sticker&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Shortly afterwards, Amstrad launched the CPC6128 for the American market only, through its distributor [[Indescomp]]. The new machine sported 128k of memory and a still more sober appearance, but was otherwise nearly identical to the 664. The height of the case was greatly reduced, and the cursor keys were arranged more comfortably, both making the keyboard more ergonomically than the 464/664. Internally, the keyboard consists of two foils, although such membrane foils are relative fragile, they were more robust and reliable than the single foil used in the 664.&lt;br /&gt;
&lt;br /&gt;
Despite initial denials, the machine was launched in Europe shortly afterwards, replacing the 664 for the same price - a situation which understandably irritated some of those who had recently purchased 664s. As well as the [[CP/M]] 2.2 and [[DR Logo]] that had shipped with the DDI-1 and the CPC664, the 6128 came bundled with CP/M Plus (with the GSX graphics extension) making it an appealing all-round computer at a low price. Though the 128KB of memory could not be accessed all at once from BASIC (due to limitations of the [[Z80]]), the upper 64KB could be used readily from machine code courtesy of an upgraded [[Gate Array]]. A bundled program, [[Bankman]], provided some access from BASIC.&lt;br /&gt;
&lt;br /&gt;
The presence of this extra memory and the clever design of Amstrad's CP/M Plus implementation allowed for a TPA (Transient Program Area) of 61KB, more than enough to run all CP/M software.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Accessories ===&lt;br /&gt;
&lt;br /&gt;
Amstrad pushed the all-in-one package concept even further by selling unusual accessories to go along with their computer. Most notably, they proposed:&lt;br /&gt;
* A [[Amstrad CT-1 Radio/Alarm-Clock|clock/radio/alarm module]]&lt;br /&gt;
* A [[MP-3|TV tuner]] to transform the Amstrad CPC into a TV&lt;br /&gt;
* A [[CS-10 Computer Desk|computer desk]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Amstrad CPC accessories.jpg|200px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ANT (Arnold Number Two) prototype ==&lt;br /&gt;
&lt;br /&gt;
[[File:20250523 194636.jpg|thumb|right|ANT prototype]]&lt;br /&gt;
&lt;br /&gt;
At the same time, Amstrad was designing the immensely successful [[PCW]] word-processor series, also with software by [[Locomotive Software|Locomotive]] and featuring an all-in-one Z80-based design.&lt;br /&gt;
&lt;br /&gt;
A shared architecture was developed that would encompass both the PCW and a new, upgraded CPC - codenamed [[ANT]], or Arnold Number Two. It shared many features with the PCW, such as its larger memory and its exceptionally elegant screen-handling hardware, but boasted colour and sound, and retained CPC compatibility. The aim was to see off the Atari ST and Commodore Amiga, next-generation games machines already on the horizon.&lt;br /&gt;
&lt;br /&gt;
A few of the PCW's design features which don't appear to make any sense on their own stem from this shared ancestry. But the project was dropped at a fairly early stage, and the CPC Classic lived on before eventually succumbing to the Plus. Only one prototype board is believed to survive, in the possession of ex-Locomotive Software engineer [[Richard Clayton]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The Plus series ==&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
cpc6128plus.jpg|Amstrad [[Plus|6128 Plus]] with colour monitor&lt;br /&gt;
Amstrad 464 Plus.jpg|Amstrad [[Plus|464 Plus]]&lt;br /&gt;
File:Amstrad-plus-ad.jpg|English advertisement&lt;br /&gt;
File:Amstrad-plus-french-ad.jpg|French advertisement&lt;br /&gt;
File:Amstrad-plus-spanish-ad.jpg|Spanish advertisement&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
The last models in the Amstrad CPC range were the [[Plus|Amstrad 464 Plus]] and [[Plus|Amstrad 6128 Plus]], launched together in 1990. The CPC name is said to have been dropped because of a legal dispute with a French firm, though it is also likely that &amp;quot;CPC 6128 Plus&amp;quot; was considered too unwieldy a name and one redolent of the machine's mid-80s heritage. However, the &amp;quot;CPC Plus&amp;quot; branding was used by Amstrad España in their advertising material.&lt;br /&gt;
&lt;br /&gt;
The Plus series were quite (but not 100%) compatible with the original CPC computers. The compatibility issues came mostly from:&lt;br /&gt;
* The emulated [[8255|PPI]] chip, making the keyboard unresponsive&lt;br /&gt;
* The emulated [[CRTC]], breaking CPC demos&lt;br /&gt;
* Unlike the original model, the 464 Plus lacks a tape counter for tracking cassette positions. It also omits the distinctive loading sounds that were once audible through the speaker during tape operations on the original CPC 464&lt;br /&gt;
* Unlike the original model, the 464 Plus features the BASIC 1.1 ROM&lt;br /&gt;
* The new AMSDOS ROM, breaking ROM access to the floppy drive&lt;br /&gt;
&lt;br /&gt;
ROM issues can be easily fixed by using a [[Plus System Cartridge|Downgrade System cartridge]].&lt;br /&gt;
&lt;br /&gt;
The Plus series incorporated a list of [[ASIC|new features]], like a cartridge port for instant program loading, DMA for the [[AY]] soundchip, enhanced hardware scrolling, programmable interrupts, 16 hardware zoomable sprites (not vectorized) with an independent palette of 15 colours, and a choice of 4096 colours all in a new, sleek case which mimicked the keyboard-computer design that was ''en vogue'' in the 16-bit market (ST, Amiga etc). &lt;br /&gt;
&lt;br /&gt;
Described as a solution of 'too little, too late', this was Amstrad's effort to prolong the life of its 8-bit computer series in the face of fierce competition from new 16-bit machines (notably, the [[Atari ST]] and the Commodore [[Amiga]]).&lt;br /&gt;
&lt;br /&gt;
While the Amstrad Plus computers were one of the most advanced 8-bit computers ever built for the mass market, they died an early death as the 16-bit era was in full swing. And 32-bit computers were already appearing. The year before, Amstrad launched its first 32-bit PC, the [[Amstrad PC|PC2386]].&lt;br /&gt;
&lt;br /&gt;
Also, the [[Apple II|Apple IIGS]] and the [[MSX|MSX Turbo-R]] proved that 8-bit machines could be upgraded to 16-bit. It would have been possible with the CPC if Amstrad had decided to do so.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The GX4000 ==&lt;br /&gt;
[[Image:Amstrad-GX4000-Console.jpg|right|thumb|300px|The Amstrad GX4000]]&lt;br /&gt;
By 1990 Amstrad had realised that the home market was heading towards the 16-bit machines, on one hand, and towards the new generation of game consoles like the Sega Master System or the Nintendo Entertainment System, on the other. Therefore, just as they created the 464 Plus and 6128 Plus to compete against the ST and the Amiga, they also created a stripped-down variant called the [[Plus|GX4000]]. &lt;br /&gt;
&lt;br /&gt;
The GX4000 was, in essence, an Amstrad 464+ motherboard in a new case, with no keyboard, cassette deck nor disc drive, and with most extension ports gone - save for the cartridge port and two joypads.&lt;br /&gt;
&lt;br /&gt;
As expected, the GX4000 was a flop that could not break the stranglehold that Sega and Nintendo had on the market at the time. As a result, the GX4000 was soon to be found selling at ridiculously low prices - as little as £19.99 in the UK - as dealers tried to offload their stock. It was a shame, because if Amstrad had realised the market potential and produced this console a few years earlier, it could well have been a success.&lt;br /&gt;
&lt;br /&gt;
As it was, the GX4000 joined the long list of failed attempts to repurpose computers as game consoles, alongside the Atari XEGS, the Commodore 64GS, the Amiga CDTV, the Amiga CD32, the FM Towns Marty and the Apple Pippin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Clones ==&lt;br /&gt;
&lt;br /&gt;
There were two clones of the CPC, neither of which were 100% compatible with the CPC.&lt;br /&gt;
&lt;br /&gt;
* [[KC Compact]]: An East German clone. The Gate-Array was replaced with TTL logic which performed a similar function. There are some hardware differences, especially in the interrupts. This clone is much closer to the CPC in terms of functionality.&lt;br /&gt;
&lt;br /&gt;
* [[Aleste 520EX]]: This clone also had some MSX like hardware which made it possible to run some modified MSX titles. This clone also ran faster than the original CPC.&lt;br /&gt;
&lt;br /&gt;
* [https://hackaday.io/project/188511-xialeste XiAleste]: This expanded clone is the successor of the Aleste. Currently under development.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Outro ==&lt;br /&gt;
&lt;br /&gt;
All in all, the CPC series met with great success. Although they would never achieve the universal status of the [[Commodore 64]] or the humble [[ZX Spectrum]] series, the CPCs managed to sell very well.&lt;br /&gt;
&lt;br /&gt;
France was the sole market where the CPCs achieved the top position for years. Still, the CPCs were very popular in the UK, Spain, Greece, Germany and Australia, to name a few countries.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*[[CPC timeline]]&lt;br /&gt;
*[https://youtu.be/MTsCiZ3ZBD4 Entrevista a ROLAND PERRY] by [[Las Cosas Retro]]&lt;br /&gt;
*[https://youtu.be/bD_gBz2fwDM Amstrad CPC - Top 150 games (1984-2020)] Top 50 CPC games from [https://youtu.be/F3pVjc4tmCU 1984] [https://youtu.be/8w7Rx1dOmPs 1985] [https://youtu.be/c18muwWbVZc 1986] [https://youtu.be/NpL1uq0IAz4 1987] [https://youtu.be/0mnR3vTJXw8 1988]&lt;br /&gt;
*[https://youtu.be/ZOOwlWwlltM All Amstrad CPC games] from [https://youtu.be/Smpv8v1OP5A 1984] [https://youtu.be/_JJjHXNGEyY 1985] [https://youtu.be/5XRyZIW4c9s 1986] [https://youtu.be/V7yRLp-Xvfs 1987] [https://youtu.be/afn70FPDRoQ 1988] [https://youtu.be/tpQ1PhUWnYw 1989] [https://youtu.be/8_JvuGdumC4 1990] [https://youtu.be/yJsm1DeF7Pk 1991] [https://youtu.be/LQmDzkNs0P4 1992]&lt;br /&gt;
*[https://youtu.be/hBlHUWRlmug Amstrad CPC - Best of Music with Video (3 hours)]&lt;br /&gt;
*[https://youtu.be/BvramomEtSM Amstrad TV adverts] [https://youtu.be/n7U6E7bDFlc Amstrad French TV adverts]&lt;br /&gt;
*[https://youtu.be/8o1OTwFv7WQ Part 1] [https://youtu.be/f1KS7nSKnxE Part 2] Amstrad CPC Story by [[Nostalgia Nerd]]&lt;br /&gt;
*[https://youtu.be/fB9M6RMtMUE Partie 1] [https://youtu.be/F0CzNJjjkO4 Partie 2] [https://youtu.be/la5IhBbrqPc Partie 3] [https://youtu.be/uUR5oKBxRzA Partie 4] Histoire de l'Amstrad CPC by [[Génération Micros]]&lt;br /&gt;
*[https://youtu.be/mesZ1zbA654 Amstrad : La gamme CPC (1984/1985)] [https://youtu.be/Ijuqsz69Euk Amstrad 6128 Plus] by [[Rodrik Studio]]&lt;br /&gt;
*[https://www.youtube.com/watch?v=O0vvdDx4egk&amp;amp;list=PLIX9fyYxV0k9phQiqATmOe2OZJyeMuY0a C64 vs Amstrad CPC] [https://www.youtube.com/watch?v=JfZ77Ltkols&amp;amp;list=PLIX9fyYxV0k_VOgMOIxseJH1c91KKcxKB ZX Spectrum vs Amstrad CPC]&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Longshot&amp;diff=126244</id>
		<title>Longshot</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Longshot&amp;diff=126244"/>
				<updated>2025-05-22T23:48:16Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Longshot1996.jpg|thumb|Longshot 1996]]&lt;br /&gt;
&lt;br /&gt;
'''Longshot''' was a demo coder, founder and leader of the famous [[Logon System]] demo group. A pseudonym for Serge Querné, he was initially based in southern France but later moved to Paris.&lt;br /&gt;
&lt;br /&gt;
== Biography ==&lt;br /&gt;
&lt;br /&gt;
Initially going under the pseudonym 'Logon 1' (the name Logon he explained in a scrolltext as &amp;quot;a Belgian idea&amp;quot;), he released a series of single-part demos, each of them showcasing a new technique he had learned ‒ or, in many cases, discovered. These included raster bars, overscan, and split modes in the earliest productions. The first demo was coded while he was working at [http://fr.wikipedia.org/wiki/Ubisoft Ubi Soft]'s &amp;quot;castle&amp;quot; headquarters. Though some of these demos seem fairly simple in retrospect, at the time, Serge's demo-coding skill was only equalled by perhaps [[Fefesse]] and [[NWC]].&lt;br /&gt;
&lt;br /&gt;
A stepchange came with the [[Longshot Demo]], the first in which he adopted his new pseudonym. This included hardware splitting and combined more effects on screen at once. [[Revolog]] (or Revolution) followed in a similar vein but was a level more accomplished again. At the same time, Longshot participated in the [[Amazing Demo]] with [[Naminu]] and [[P007]] of [[Malibu Crackers]].&lt;br /&gt;
&lt;br /&gt;
[[Naminu]] would soon become one of the members of the new, expanded [[Logon System]]. The &amp;quot;supergroup&amp;quot;'s first release was the stunning [[The Demo]], where Longshot contributed three parts but, perhaps more significantly, oversaw the polished, coherent design that was unlike any CPC megademo previously released.&lt;br /&gt;
&lt;br /&gt;
The [[Euromeeting Demo]] would turn out to be his last demo release, but a further innovation was the [[B-ASIC]] utility which enabled Plus programmers to use the new features of their machines from BASIC. Longshot went on to the PC in turn, but has recently participated in French CPC forums such as [http://phenixinformatique.free.fr/ Phenix Informatique] once again. His [http://www.logonsystem.fr/ homepage] contains screenshots from the Logon era, a brief history, and downloads of his personal disc collection.&lt;br /&gt;
&lt;br /&gt;
Though most respected for his coding skills and innovations, Serge's main achievement was perhaps the creation and fostering of the Logon System supergroup, the like of which has not been seen since.&lt;br /&gt;
&lt;br /&gt;
Longshot has written technical articles in some columns of the French magazine [[Amstrad Cent Pour Cent]].&lt;br /&gt;
&lt;br /&gt;
== Demos ==&lt;br /&gt;
&lt;br /&gt;
* [[Logon Demo 1]]&lt;br /&gt;
* [[Logon Demo 2]]&lt;br /&gt;
* [[Logon Demo 3]]&lt;br /&gt;
* [[Logon Demo 5]]&lt;br /&gt;
* [[Longshot Demo]]&lt;br /&gt;
* [[Revolog]]&lt;br /&gt;
* [[Amazing Demo]]&lt;br /&gt;
* [[The Demo]]&lt;br /&gt;
* [[Euromeeting Demo]]&lt;br /&gt;
* [[DSC 4]]&lt;br /&gt;
&lt;br /&gt;
== Controversy ==&lt;br /&gt;
&lt;br /&gt;
'''The [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=19308 DSC 4] demo, produced by Longshot / Logon System, is suspected of infringing the copyright-protected material of [https://www.liquideo.com/en/e-liquides/1187-e-liquide-dr-hofmann.html Liquideo], a commercial company.'''&lt;br /&gt;
&lt;br /&gt;
[[File:DSC4 Dr Hofmann.png|400px]] [[File:Liquideo Dr Hofmann.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
== Other productions ==&lt;br /&gt;
&lt;br /&gt;
* [[Atlantis]] &lt;br /&gt;
* [[B-ASIC]]&lt;br /&gt;
* [[AntiMultiface]]&lt;br /&gt;
* [[MagicDOS]]&lt;br /&gt;
&lt;br /&gt;
== Groups ==&lt;br /&gt;
&lt;br /&gt;
* [[Logon System]]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.logonsystem.eu/ Longshot's homepage]&lt;br /&gt;
* [http://norecess.cpcscene.net/interview-longshot.html Interview with Longshot by NoRecess]&lt;br /&gt;
&lt;br /&gt;
[[Category:CPC scene members]]&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Longshot&amp;diff=126243</id>
		<title>Longshot</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Longshot&amp;diff=126243"/>
				<updated>2025-05-22T21:34:00Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: /* Controversy */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Longshot1996.jpg|thumb|Longshot 1996]]&lt;br /&gt;
&lt;br /&gt;
'''Longshot''' was a demo coder, founder and leader of the famous [[Logon System]] demo group. A pseudonym for Serge Querné, he was initially based in southern France but later moved to Paris.&lt;br /&gt;
&lt;br /&gt;
== Biography ==&lt;br /&gt;
&lt;br /&gt;
Initially going under the pseudonym 'Logon 1' (the name Logon he explained in a scrolltext as &amp;quot;a Belgian idea&amp;quot;), he released a series of single-part demos, each of them showcasing a new technique he had learned ‒ or, in many cases, discovered. These included raster bars, overscan, and split modes in the earliest productions. The first demo was coded while he was working at [http://fr.wikipedia.org/wiki/Ubisoft Ubi Soft]'s &amp;quot;castle&amp;quot; headquarters. Though some of these demos seem fairly simple in retrospect, at the time, Serge's demo-coding skill was only equalled by perhaps [[Fefesse]] and [[NWC]].&lt;br /&gt;
&lt;br /&gt;
A stepchange came with the [[Longshot Demo]], the first in which he adopted his new pseudonym. This included hardware splitting and combined more effects on screen at once. [[Revolog]] (or Revolution) followed in a similar vein but was a level more accomplished again. At the same time, Longshot participated in the [[Amazing Demo]] with [[Naminu]] and [[P007]] of [[Malibu Crackers]].&lt;br /&gt;
&lt;br /&gt;
[[Naminu]] would soon become one of the members of the new, expanded [[Logon System]]. The &amp;quot;supergroup&amp;quot;'s first release was the stunning [[The Demo]], where Longshot contributed three parts but, perhaps more significantly, oversaw the polished, coherent design that was unlike any CPC megademo previously released.&lt;br /&gt;
&lt;br /&gt;
The [[Euromeeting Demo]] would turn out to be his last demo release, but a further innovation was the [[B-ASIC]] utility which enabled Plus programmers to use the new features of their machines from BASIC. Longshot went on to the PC in turn, but has recently participated in French CPC forums such as [http://phenixinformatique.free.fr/ Phenix Informatique] once again. His [http://www.logonsystem.fr/ homepage] contains screenshots from the Logon era, a brief history, and downloads of his personal disc collection.&lt;br /&gt;
&lt;br /&gt;
Though most respected for his coding skills and innovations, Serge's main achievement was perhaps the creation and fostering of the Logon System supergroup, the like of which has not been seen since.&lt;br /&gt;
&lt;br /&gt;
Longshot has written technical articles in some columns of the French magazine [[Amstrad Cent Pour Cent]].&lt;br /&gt;
&lt;br /&gt;
== Demos ==&lt;br /&gt;
&lt;br /&gt;
* [[Logon Demo 1]]&lt;br /&gt;
* [[Logon Demo 2]]&lt;br /&gt;
* [[Logon Demo 3]]&lt;br /&gt;
* [[Logon Demo 5]]&lt;br /&gt;
* [[Longshot Demo]]&lt;br /&gt;
* [[Revolog]]&lt;br /&gt;
* [[Amazing Demo]]&lt;br /&gt;
* [[The Demo]]&lt;br /&gt;
* [[Euromeeting Demo]]&lt;br /&gt;
* [[DSC 4]]&lt;br /&gt;
&lt;br /&gt;
== Controversy ==&lt;br /&gt;
&lt;br /&gt;
'''The [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=19308 DSC 4] demo, produced by Longshot / Logon System, is suspected of infringing copyright protected material of the commercial company [https://www.liquideo.com/en/e-liquides/1187-e-liquide-dr-hofmann.html Liquideo]'''.&lt;br /&gt;
&lt;br /&gt;
[[File:DSC4 Dr Hofmann.png|400px]] [[File:Liquideo Dr Hofmann.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
== Other productions ==&lt;br /&gt;
&lt;br /&gt;
* [[Atlantis]] &lt;br /&gt;
* [[B-ASIC]]&lt;br /&gt;
* [[AntiMultiface]]&lt;br /&gt;
* [[MagicDOS]]&lt;br /&gt;
&lt;br /&gt;
== Groups ==&lt;br /&gt;
&lt;br /&gt;
* [[Logon System]]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.logonsystem.eu/ Longshot's homepage]&lt;br /&gt;
* [http://norecess.cpcscene.net/interview-longshot.html Interview with Longshot by NoRecess]&lt;br /&gt;
&lt;br /&gt;
[[Category:CPC scene members]]&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=CRTC&amp;diff=126242</id>
		<title>CRTC</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=CRTC&amp;diff=126242"/>
				<updated>2025-05-22T20:38:28Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:CRTC Type 0.jpg|thumb|right|CRTC Type 0 (Hitachi)]]&lt;br /&gt;
[[File:CRTC UMC Type 0.png|thumb|right|CRTC Type 0 (UMC)]]&lt;br /&gt;
[[File:CRTC Type 1.png|thumb|right|CRTC Type 1]]&lt;br /&gt;
[[File:CRTC6845-Type2.jpg|thumb|right|CRTC Type 2]]&lt;br /&gt;
&lt;br /&gt;
The 6845 '''CRTC''' (Cathode Ray Tube Controller) chip was created by Motorola in 1977. It works with the [[Gate Array]] to generate the video signal on the Amstrad CPC.&lt;br /&gt;
&lt;br /&gt;
This chip is also used in the [[BBC Micro]], [[Lynx|Camputers Lynx]], [[EG2000 Colour Genie]], [[Sharp X1]], [[MicroBee]], [[Commodore PET]] and the early graphics cards (MDA, Hercules, CGA, Plantronics Colorplus) for [[IBM PC]]. And it is found in some [https://www.msx.org/wiki/Hitachi_HD6845 MSX1 expansions], providing an 80-column text mode.&lt;br /&gt;
&lt;br /&gt;
It's important to note that the CRTC chip is primarily designed for character-based displays. It explains why, on the Amstrad CPC, the video memory is organized into a grid of characters rather than a purely linear bitmap.&lt;br /&gt;
&lt;br /&gt;
NOTES: &lt;br /&gt;
* This document describes the functionality in terms of the CPC with its separate CRTC and Gate-Array. The Plus has both integrated into the same IC, but could be considered to have two functional blocks, one for CRTC and one for Gate-Array. In this document the term 'Gate-Array' is used, but this also applies to the ASIC.&lt;br /&gt;
* '''This article relies largely on a single source and is suspected of infringing copyright protected under the [https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode CC BY-NC-ND 4.0 license].''' Readers are encouraged to refer directly to the original source material for accurate information. &lt;br /&gt;
** ''Original source material under copyright: [https://shaker.logonsystem.eu/ACCC1.8-EN.pdf  The Amstrad CPC CRTC Compendium]''&lt;br /&gt;
** ''Author: Serge Querné ([[Longshot]])''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The 6845 Cathode Ray Tube Controller (CRTC) is a programmable IC used to generate video displays. This IC is used in a variety of computers including the Amstrad CPC, Amstrad Plus and KC Compact. &lt;br /&gt;
&lt;br /&gt;
The CRTC is a simple chip. It is made up of counters and equality operators, tied by simple logic. All the complexity stems from its multiple independent implementations with their subtle differences.&lt;br /&gt;
&lt;br /&gt;
The CRTC was a common part available from many different manufacturers. During the life of the CPC, Amstrad sourced the CRTC from various manufacturers. &lt;br /&gt;
&lt;br /&gt;
All ICs used were based on the same design but have a different implementation. As a result they do not operate identically in all situations. This document highlights these differences. &lt;br /&gt;
&lt;br /&gt;
This table lists the known ICs used, with their part number, manufacturer and type number. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Part number&lt;br /&gt;
!Manufacturer&lt;br /&gt;
!Type number (note 3)&lt;br /&gt;
|-&lt;br /&gt;
|HD6845S||Hitachi||0&lt;br /&gt;
|-&lt;br /&gt;
|UM6845||UMC||0&lt;br /&gt;
|-&lt;br /&gt;
|UM6845R||UMC||1&lt;br /&gt;
|-&lt;br /&gt;
|MC6845||Motorola||2&lt;br /&gt;
|-&lt;br /&gt;
|AMS40489||Amstrad||3 (note 1)&lt;br /&gt;
|-&lt;br /&gt;
|AMS40226||Amstrad||4 (note 2)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''NOTES''' &lt;br /&gt;
&lt;br /&gt;
1. The CRTC functionality is integrated into the CPC+ ASIC. This type exists only in the 464 Plus, 6128 Plus and GX4000. &lt;br /&gt;
&lt;br /&gt;
2. This type exists in &amp;quot;cost-down&amp;quot; CPC464 and CPC6128 systems. In the &amp;quot;cost-down&amp;quot; the CRTC functionality is integrated into a single ASIC IC. This ASIC is often refered to as the &amp;quot;Pre-ASIC&amp;quot; because it preceeded the CPC+ ASIC. The CRTC functionality of the Pre-ASIC is almost identical to the CRTC within the ASIC.&lt;br /&gt;
 &lt;br /&gt;
3. In the Amstrad community each 6845 implementation has been assigned a type number. This type identifies a group of implementations which operate in exactly the same way. The type number system was originally used by demo programmers. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Programming==&lt;br /&gt;
&lt;br /&gt;
The 6845 is selected when bit 14 of the I/O port address is set to &amp;quot;0&amp;quot;. Bit 9 and 8 of the I/O port address define the function to access. The remaining bits can be any value, but it is adviseable to set these to &amp;quot;1&amp;quot; to avoid conflict with other devices in the system.&lt;br /&gt;
&lt;br /&gt;
The recommended I/O port addresses are:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!I/O port address&lt;br /&gt;
!/CS (A14)&lt;br /&gt;
!R/W (A9)&lt;br /&gt;
!RS (A8)&lt;br /&gt;
!Function&lt;br /&gt;
!Read/Write&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;BCxx||0||0||0||Select 6845 register||Write only&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;BDxx||0||0||1||Write to selected internal 6845 register||Write only&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;BExx||0||1||0||&lt;br /&gt;
* CRTCs 0/2: —&lt;br /&gt;
* CRTC 1: Read Status Register&lt;br /&gt;
* CRTCs 3/4: Read from selected internal 6845 register&lt;br /&gt;
||Read only&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;BFxx||0||1||1||Read from selected internal 6845 register||Read only&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The CRTC is not connected to the CPU's RD and WR pins, so it cannot detect the bus's I/O direction. Therefore, executing an IN instruction to the select or write functions causes the CRTC to write the unpredictable data provided by the high-impedance bus to its registers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Z80 I/O access timings ===&lt;br /&gt;
&lt;br /&gt;
The clock provided to the CRTC by the ASIC/Pre-ASIC is phase-shifted compared to the one provided by the Gate Array.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! Instructions !! Duration !! I/O CRTCs 0/1/2 !! I/O CRTCs 3/4&lt;br /&gt;
|-&lt;br /&gt;
| OUT (C),r8 || 4 µsec || '''3rd µsec''' || 4th µsec&lt;br /&gt;
|-&lt;br /&gt;
| OUT (C),0 || 4 µsec || '''3rd µsec''' || 4th µsec&lt;br /&gt;
|-&lt;br /&gt;
| OUT (n),A || 3 µsec || 3rd µsec || 3rd µsec&lt;br /&gt;
|-&lt;br /&gt;
| OUTI || 5 µsec || 5th µsec || 5th µsec&lt;br /&gt;
|-&lt;br /&gt;
| OUTD || 5 µsec || 5th µsec || 5th µsec&lt;br /&gt;
|-&lt;br /&gt;
| IN r8,(C) || 4 µsec || 4th µsec || 4th µsec&lt;br /&gt;
|-&lt;br /&gt;
| INI || 5 µsec || '''4th µsec''' || '''4th µsec'''&lt;br /&gt;
|-&lt;br /&gt;
| IND || 5 µsec || '''4th µsec''' || '''4th µsec'''&lt;br /&gt;
|-&lt;br /&gt;
| IN A,(n) || 3 µsec || 3rd µsec || 3rd µsec&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Video Memory Address (VMA)==&lt;br /&gt;
&lt;br /&gt;
The VMA of the [[Gate Array]] is constructed from the CRTC MA and RA signals:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Video Memory Address&lt;br /&gt;
!Signal source&lt;br /&gt;
!Signal name&lt;br /&gt;
|-&lt;br /&gt;
|A15||6845||MA13 &lt;br /&gt;
|-&lt;br /&gt;
|A14||6845||MA12&lt;br /&gt;
|-&lt;br /&gt;
|A13||6845||'''RA2'''&lt;br /&gt;
|-&lt;br /&gt;
|A12||6845||'''RA1'''&lt;br /&gt;
|-&lt;br /&gt;
|A11||6845||'''RA0'''&lt;br /&gt;
|-&lt;br /&gt;
|A10||6845||MA9 &lt;br /&gt;
|-&lt;br /&gt;
|A9||6845||MA8 &lt;br /&gt;
|-&lt;br /&gt;
|A8||6845||MA7 &lt;br /&gt;
|-&lt;br /&gt;
|A7||6845||MA6 &lt;br /&gt;
|-&lt;br /&gt;
|A6||6845||MA5 &lt;br /&gt;
|-&lt;br /&gt;
|A5||6845||MA4 &lt;br /&gt;
|-&lt;br /&gt;
|A4||6845||MA3 &lt;br /&gt;
|-&lt;br /&gt;
|A3||6845||MA2 &lt;br /&gt;
|-&lt;br /&gt;
|A2||6845||MA1 &lt;br /&gt;
|-&lt;br /&gt;
|A1||6845||MA0&lt;br /&gt;
|-&lt;br /&gt;
|A0||Gate-Array||CCLK&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
CRTC generates the address, Gate Array reads the data and converts it to pixels based on its current graphics mode and palette.&lt;br /&gt;
&lt;br /&gt;
CRTC pins RA3, RA4, MA10, MA11 are not connected on CPC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Overscan bits ===&lt;br /&gt;
&lt;br /&gt;
It is possible to use 32KB screen size (used for [[Programming:Overscan|overscan]]) by setting bits 11 and 10 of Register 12 both to 1. Bits MA11 and MA10 of the address generated by the CRTC are not written on the address bus to access video memory; settings both bits to 1 is the only way to cause a carry to bit MA12 when address pass over the end of current video page to change the memory address to the next video page.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ CRTC Display Start Address&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;8&amp;quot; | Register 12&lt;br /&gt;
! colspan=&amp;quot;8&amp;quot; | Register 13&lt;br /&gt;
|-&lt;br /&gt;
! 15 !! 14 !! 13 !! 12 !! 11 !! 10 !! 9 !! 8&lt;br /&gt;
! 7 !! 6 !! 5 !! 4 !! 3 !! 2 !! 1 !! 0&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Unused&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Video Page&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Page Size&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot; | Start Address (1024 positions)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;white-space: nowrap;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-right: 32px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bit 13 !! Bit 12 !! Video Page&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0 || 0000 - 3FFF&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1 || 4000 - 7FFF&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0 || 8000 - BFFF&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1 || C000 - FFFF&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bit 11 !! Bit 10 !! Page Size&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0 || 16KB&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1 || 16KB&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0 || 16KB&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1 || '''32KB'''&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Coarse hardware scrolling ===&lt;br /&gt;
&lt;br /&gt;
The start address can be manipulated to achieve horizontal and/or vertical hardware scrolling:&lt;br /&gt;
&lt;br /&gt;
*To move right: &amp;lt;code&amp;gt;start_address := start_address + 1&amp;lt;/code&amp;gt;&lt;br /&gt;
*To move left: &amp;lt;code&amp;gt;start_address := start_address - 1&amp;lt;/code&amp;gt;&lt;br /&gt;
*To move down: &amp;lt;code&amp;gt;start_address := start_address + R1&amp;lt;/code&amp;gt;&lt;br /&gt;
*To move up: &amp;lt;code&amp;gt;start_address := start_address - R1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
However, it is a position in word (16 bits), not in byte. So, the screen will move two bytes at a time horizontally. Also, the precision will be one CRTC character vertically.&lt;br /&gt;
&lt;br /&gt;
The first game that used R12/R13 for both horizontal and vertical hardware scrolling is [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1839 Roland on the Ropes], released in 1984.&lt;br /&gt;
&lt;br /&gt;
The following BASIC program demonstrates the coarse scrolling by setting the R12 and R13 registers based on keyboard input:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10 ma%=0&lt;br /&gt;
20 IF INKEY(1)=0 THEN GOSUB 100&lt;br /&gt;
30 IF INKEY(2)=0 THEN GOSUB 300&lt;br /&gt;
40 IF INKEY(8)=0 THEN GOSUB 500&lt;br /&gt;
50 IF INKEY(0)=0 THEN GOSUB 700&lt;br /&gt;
60 GOTO 20&lt;br /&gt;
100 ' right&lt;br /&gt;
110 ma%=ma%+1: GOSUB 900: RETURN&lt;br /&gt;
300 ' down&lt;br /&gt;
310 ma%=ma%+40: GOSUB 900: RETURN&lt;br /&gt;
500 ' left&lt;br /&gt;
510 ma%=ABS(ma%-1): GOSUB 900: RETURN&lt;br /&gt;
700 ' up&lt;br /&gt;
710 ma%=ABS(ma%-40): GOSUB 900: RETURN&lt;br /&gt;
900 ' set R12 and R13&lt;br /&gt;
910 l%=ma% AND 255: h%=&amp;amp;30 OR ((ma%\256) AND 3) :OUT &amp;amp;BC00,13:OUT &amp;amp;BD00,l%: OUT &amp;amp;BC00,12:OUT &amp;amp;BD00,h%&lt;br /&gt;
930 RETURN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Which looks like the following:&lt;br /&gt;
&lt;br /&gt;
[[File:CRTC-Coarse-scroll.gif]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Advanced hardware scrolling ===&lt;br /&gt;
&lt;br /&gt;
To achieve smoother hardware scrolling, other tricks are required in complement to R12/R13. Usually, R3 is used for smooth horizontal scroll and R5 for smooth vertical scroll.&lt;br /&gt;
&lt;br /&gt;
A good example of smooth hardware multidirectional scrolling game on CPC is [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=2119 Super Cauldron], released in 1993.&lt;br /&gt;
&lt;br /&gt;
Everything you need to know about hardware scrolling on CPC can be found [https://www.cpcwiki.eu/forum/programming/hardware-scrolling-21687/ there].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Split screen (aka Rupture) ==&lt;br /&gt;
&lt;br /&gt;
While there is usually 1 CRTC frame per screen frame, the screen frame can be divided into multiple CRTC frames of varying proportions.&lt;br /&gt;
&lt;br /&gt;
This is useful for defining different scrolling zones in your screen frame. For example, it was used for hardware parallax scrolling in the game [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1307 The Living Daylights], released in 1987. [https://www.cpcwiki.eu/forum/programming/the-living-daylights-extra-colours-in-mode-1-rasters-screen-splits/ Source]&lt;br /&gt;
&lt;br /&gt;
And this is basically the bread and butter of innumerable CPC demos.&lt;br /&gt;
&lt;br /&gt;
Some rules of thumb [https://www.cpcwiki.eu/forum/programming/advice-on-split-screen-code/msg242186/ Source]:&lt;br /&gt;
* changes to the screen address have to be done anywhere in the previous split&lt;br /&gt;
* changes to the height of the split have to be done inside the current split (after it has started, in the area of the size of the previous split)&lt;br /&gt;
* changes to screen mode and colours are happening immediately&lt;br /&gt;
&lt;br /&gt;
CRTC registers and screen splitting:&lt;br /&gt;
*reg 0 (63) = x-screenwidth (usually always 63)&lt;br /&gt;
*reg 1 (50) = x-splitwidth (e.g.50)&lt;br /&gt;
*reg 2 (51) = x-splitstart (e.g. 51)&lt;br /&gt;
*reg 3 (08) = x-finestart (maybe use this for half-char scrolling)&lt;br /&gt;
*reg 4 (##) = y-splitheight-1 (set this inside the current split)&lt;br /&gt;
*reg 5 (00) = y-finestart&lt;br /&gt;
*reg 6 (25) = y-max visible splitpart (same like 4)&lt;br /&gt;
*reg 7 (##) = inside last split -&amp;gt; set to 0; inside first split, but after vblank -&amp;gt; set to 255&lt;br /&gt;
*reg 9 (07) = y-lines/char-1&lt;br /&gt;
&lt;br /&gt;
Set this inside the previous split:&lt;br /&gt;
*reg12 (##) = address high (char / 256 + block * 16)&lt;br /&gt;
*reg13 (##) = address low  (char mod 256)&lt;br /&gt;
&lt;br /&gt;
Total height of all splits must be 39.&lt;br /&gt;
&lt;br /&gt;
The [https://www.cpcwiki.eu/forum/programming/interrupt-positions-with-various-sized-screens/ IntPos tool] by Kevin Thacker can help visualize the potential split screen areas.&lt;br /&gt;
&lt;br /&gt;
Note: If all you want is multiple graphics modes in the same frame, you don't need to touch the CRTC at all. More information here: [https://www.cpc-power.com/cpcarchives/index.php?page=articles&amp;amp;num=184 Multi-Mode Graphique (FR)]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CUDISP (aka CURSOR) ==&lt;br /&gt;
&lt;br /&gt;
CUDISP (Cursor Display) signal defines the hardware cursor.&lt;br /&gt;
&lt;br /&gt;
CRTC pin CUDISP is not connected to the Gate Array, so it has no effect on a barebone CPC or Plus machine.&lt;br /&gt;
&lt;br /&gt;
However, this signal is provided to the [[Connector:Expansion port]]. And it is used by the [[PlayCity]] and [[Play2CPC]] expansions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DISPTMG (aka Display Enable) ==&lt;br /&gt;
&lt;br /&gt;
DISPTMG (Display Timing) signal defines the border. When DISPTMG is &amp;quot;0&amp;quot; the border colour is output by the Gate Array to the display.&lt;br /&gt;
&lt;br /&gt;
The border has higher priority than pixels but lower priority than the black colour output when HSYNC/VSYNC are active.&lt;br /&gt;
&lt;br /&gt;
While border is active, all the CRTC counters continue to increment normally and addresses continue to be generated.&lt;br /&gt;
&lt;br /&gt;
The DISPTMG signal is composited from its 3 internal subcomponents: HBORDER (Horizontal), VBORDER (Vertical), SBORDER (Split) by using the NOR function. DISPTMG is &amp;quot;0&amp;quot; if at least one of its subcomponents is &amp;quot;1&amp;quot;. These 3 subcomponents are all independent of each other.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HBORDER ===&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, HBORDER is disabled when HCC=0 and enabled when HCC=R1.&lt;br /&gt;
&lt;br /&gt;
The exception is for CRTC2 during an HSYNC: the HCC=0 check is skipped, so HBORDER stays on.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== VBORDER ===&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, VBORDER is disabled when VCC=0 and enabled when VCC=R6.&lt;br /&gt;
&lt;br /&gt;
On CRTCs 0/1/2, the condition VCC=R6 is tested on every cycle.&lt;br /&gt;
&lt;br /&gt;
On CRTCs 3/4, the condition VCC=R6 is tested only at each new character line start (when VLC=0 and HCC=0).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SBORDER ===&lt;br /&gt;
&lt;br /&gt;
Split border is a technique similar to split rasters, except that it is handled by the CRTC instead of the [[Gate Array]].&lt;br /&gt;
&lt;br /&gt;
DISPTMG can be temporarily forced to 0 by using R8 (DISPTMG Skew) on CRTCs 0/3/4, or by setting R6=0 on CRTC 1.&lt;br /&gt;
&lt;br /&gt;
It is not possible to force DISPTMG on CRTC 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Border bytes ===&lt;br /&gt;
&lt;br /&gt;
Despite their 1MHz clock speed, CRTCs 0/2 have been observed to change state at a rate equivalent to 2MHz chips by responding to both the rising and falling edges of each clock cycle.&lt;br /&gt;
&lt;br /&gt;
==== Interline border ====&lt;br /&gt;
On CRTCs 0/2, R1&amp;gt;R0 generates one byte (0.5µs) of border at the end of the raster line. On CRTCs 1/3/4, it does not.&lt;br /&gt;
&lt;br /&gt;
If border skew is used, the border byte will skew and change into a full character-width border instead.&lt;br /&gt;
&lt;br /&gt;
==== Border conflict ====&lt;br /&gt;
If R1=0 and HCC=0, we expect HBORDER to activate as HCC=R1 and we also expect HBORDER to deactivate as HCC=0. In this situation, all CRTCs activate HBORDER.&lt;br /&gt;
&lt;br /&gt;
If R6=0 and VCC=0, we expect VBORDER to activate as VCC=R6 and we also expect VBORDER to deactivate as VCC=0. In this situation, all CRTCs activate VBORDER. On CRTC 1, even SBORDER is activated. But on CRTCs 0/2, the first raster line shows an alternation of bytes of VBORDER and displayable characters.&lt;br /&gt;
&lt;br /&gt;
To see the border bytes with your own eyes, type this BASIC line after reset:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BORDER 6:OUT &amp;amp;BC00,6:OUT &amp;amp;BD00,0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== HSYNC ==&lt;br /&gt;
&lt;br /&gt;
The HSYNC signal from the CRTC is not directly connected to the display. It is passed to the [[Gate Array]] for further modification. See its wiki page.&lt;br /&gt;
&lt;br /&gt;
While HSYNC is active, all the CRTC counters continue to increment normally and addresses continue to be generated.&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, while an HSYNC is ongoing, the condition HCC=R2 is ignored. So we cannot trigger a new HSYNC during an HSYNC.&lt;br /&gt;
&lt;br /&gt;
=== Contiguous HSYNCs ===&lt;br /&gt;
&lt;br /&gt;
On CRTC 0, two HSYNCs cannot be contiguous. They are always separated by at least 1 CRTC character. What happens is that when HSC=R3 and HCC=R2, the condition HSC=R3 takes precedence over the condition HCC=R2 and HSYNC is stopped.&lt;br /&gt;
&lt;br /&gt;
On CRTCs 1/2/3/4, HSYNCs can be contiguous.&lt;br /&gt;
&lt;br /&gt;
=== Signal delay ===&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, there is a 1µs delay in display between when the CRTC provides a video pointer, and when the Gate Array displays the corresponding 16-bit character.&lt;br /&gt;
&lt;br /&gt;
But on CRTCs 0/1/2, there is no delay for HSYNC. On CRTCs 3/4, the Amstrad engineers fixed the issue by adding a 1µs delay for the HSYNC signal to match the display signal. &lt;br /&gt;
&lt;br /&gt;
So now we have a bigger issue: on CRTCs 3/4, HSYNC occurs 1µs later than on CRTCs 0/1/2. Interrupts being dependent on HSYNC, this is a serious compatibility issue for time-sensitive code. It also explains why the CTM monitor has to be calibrated differently on CRTCs 3/4. Fortunately, the issue is easy to fix, by adjusting the HSYNC width with CRTC register 3.&lt;br /&gt;
&lt;br /&gt;
=== Discolouration effect ===&lt;br /&gt;
&lt;br /&gt;
On CRT monitors from other brands, a colour calibration can happen just after the C-HSYNC pulse.&lt;br /&gt;
&lt;br /&gt;
So even when a fully valid C-HSYNC pulse of 4µs is emitted, an HSYNC shorter than usual combined with a coloured border can induce a discolouration effect on those monitors.&lt;br /&gt;
&lt;br /&gt;
=== Screen wobbling and Fine horizontal hardware scroll ===&lt;br /&gt;
&lt;br /&gt;
These effects use invalid HSYNC signals, which are poorly supported by modern displays. However, these effects were used in commercial-era CPC games, so it's fine if you choose to use them.&lt;br /&gt;
&lt;br /&gt;
When R2 increases by 1, the screen is shifted to the left by 16 mode2 pixels.&lt;br /&gt;
&lt;br /&gt;
When R2 decreases by 1, the screen is shifted to the right by 16 mode2 pixels.&lt;br /&gt;
&lt;br /&gt;
When R3l increases by 1 (and if &amp;lt;6), the screen is shifted to the left by 8 mode2 pixels.&lt;br /&gt;
&lt;br /&gt;
When R3l decreases by 1 (and if &amp;gt;2), the screen is shifted to the right by 8 mode2 pixels.&lt;br /&gt;
&lt;br /&gt;
The shift is not instantaneous but follows a logarithmic attenuation across several raster lines. This property can be used to get even finer horizontal control by modifying R2/R3 on each raster line.&lt;br /&gt;
&lt;br /&gt;
[[Longshot]] has demonstrated [https://youtu.be/1q7RQykZoKY horizontal hardware scroll] with one-pixel precision in mode1 on all CRTCs. However, because you have to synchronize with each line, it takes a lot of CPU time if it's done in fullscreen (272 lines).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VSYNC ==&lt;br /&gt;
&lt;br /&gt;
The VSYNC signal from the CRTC is not directly connected to the display. It is passed to the [[Gate Array]] for further modification. See its wiki page.&lt;br /&gt;
&lt;br /&gt;
While VSYNC is active, all the CRTC counters continue to increment normally and addresses continue to be generated.&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, while a VSYNC is ongoing, the condition VCC=R7 is ignored. So we cannot trigger a new VSYNC during a VSYNC. &lt;br /&gt;
&lt;br /&gt;
On CRTCs 0/1/2, the sole condition to trigger a VSYNC is that VCC=R7. While on CRTCs 3/4, it is necessary to have VCC=R7 and HCC=0 and VLC=0 to trigger a VSYNC.&lt;br /&gt;
&lt;br /&gt;
=== Blocked VSYNC ===&lt;br /&gt;
&lt;br /&gt;
On CRTC 0, if R7 is modified with the value of VCC when HCC&amp;lt;2, we are in blocked VSYNC. Then, the VSYNC can no longer occur on VCC=R7 until an unblocking condition is produced (VCC or R7 update). Source: §16.4 &amp;quot;Conditions to consider&amp;quot; of the CRTC Compendium&lt;br /&gt;
&lt;br /&gt;
=== Ghost VSYNC ===&lt;br /&gt;
&lt;br /&gt;
On CRTC 2, if a VSYNC is triggered during an HSYNC, the CRTC produces a ghost VSYNC. The CRTC then counts the lines as if a VSYNC were taking place by preventing a new VSYNC from occurring, but without the VSYNC pin being enabled.&lt;br /&gt;
&lt;br /&gt;
=== PPI VSYNC ===&lt;br /&gt;
&lt;br /&gt;
The VSYNC pin of the CRTC is directly connected to bit0 of port B of the PPI. There is no delay involved.&lt;br /&gt;
&lt;br /&gt;
On Amstrad CPC (not Plus!), it is also possible to reverse the direction of PPI port B to output a &amp;quot;fake&amp;quot; VSYNC signal directly from the PPI to the Gate Array.&lt;br /&gt;
&lt;br /&gt;
As an exception, the Ghost VSYNC of CRTC 2 overpowers the Fake VSYNC.&lt;br /&gt;
&lt;br /&gt;
=== Subpixel vertical hardware scroll ===&lt;br /&gt;
&lt;br /&gt;
By tuning very precisely when the VSYNC signal is sent to the monitor,  Longshot has demonstrated [https://youtu.be/bSjRU6Wye00 vertical hardware scroll] with a precision of 1/128th of a pixel. Furthermore, subpixel vertical scrolling consumes very little CPU.&lt;br /&gt;
&lt;br /&gt;
=== Mid-VSYNC ===&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, in both interlace modes, a mid-VSYNC is generated when VCC=R7 on the even field. The VSYNC pulse starts in the middle of the raster line, at HCC=R0/2.&lt;br /&gt;
&lt;br /&gt;
As an exception, on CRTCs 3/4, if R7=0 then mid-VSYNC will instead occur on the odd field. Source: §19.7 &amp;quot;Mid-VSYNC&amp;quot; of the CRTC Compendium.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Interlace modes ==&lt;br /&gt;
&lt;br /&gt;
Note: Some details about the CRTC interlace implementations are missing in this article. Consider it as an introduction to the topic.&lt;br /&gt;
&lt;br /&gt;
[[File:CRTC Interlace modes.png]]&lt;br /&gt;
&lt;br /&gt;
For a CRTC character line with n raster lines, R9 must be set to n-1 on all CRTCs, regardless of the interlace settings. The exception is for CRTCs 0/3/4 in IVM mode, where R9 must be set to n-2.&lt;br /&gt;
&lt;br /&gt;
=== Interlace sync mode (ISM) ===&lt;br /&gt;
&lt;br /&gt;
In this mode, the same information is painted in both fields to enhance readability. Reprogramming the CRTC is not necessary.&lt;br /&gt;
&lt;br /&gt;
=== Interlace sync and video mode (IVM) ===&lt;br /&gt;
&lt;br /&gt;
In this mode, alternating lines are displayed in the even and odd field to double the resolution.&lt;br /&gt;
&lt;br /&gt;
On the even field, the CRTC displays the lines for which VLC is even. On the odd field, the CRTC displays the lines for which VLC is odd.&lt;br /&gt;
&lt;br /&gt;
It is necessary to reprogram the CRTC as if we were building a frame of 624 lines.&lt;br /&gt;
&lt;br /&gt;
CRTC 2 is the exception: R4, R5, R6, R7 do not need to be reprogrammed as it considers each character line to be a double character line.&lt;br /&gt;
&lt;br /&gt;
=== Interlace adjustment line ===&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, in both interlace modes, an additional line (the 625th line) is added automatically by the CRTC at the end of the even field. This line is added after the lines of the vertical adjustment mode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRTC registers ==&lt;br /&gt;
&lt;br /&gt;
The Internal registers of the 6845 are:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!rowspan=2|Register Index&lt;br /&gt;
!rowspan=2|Register Name&lt;br /&gt;
!colspan=3|Read/Write&lt;br /&gt;
!rowspan=2|Range&lt;br /&gt;
!rowspan=2|CPC Setting&lt;br /&gt;
!rowspan=2|Notes&lt;br /&gt;
|-&lt;br /&gt;
!CRTC 0&lt;br /&gt;
!CRTCs 1/2&lt;br /&gt;
!CRTCs 3/4&lt;br /&gt;
|-&lt;br /&gt;
|0||Horizontal Total (-1)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||00000000||63||Width of the screen, in characters. Should always be 63 (64 characters). 1 character == 1μs.&lt;br /&gt;
|-&lt;br /&gt;
|1||Horizontal Displayed||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||00000000||40||Number of characters displayed. Once horizontal character count (HCC) matches this value, DISPTMG is set to 1.&lt;br /&gt;
|-&lt;br /&gt;
|2||Horizontal Sync Position||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||00000000||46||When to start the HSync signal.&lt;br /&gt;
|-&lt;br /&gt;
|3||Horizontal and Vertical Sync Widths||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||VVVVHHHH||128+14||VSync width in scan-lines (Not present on all CRTCs, fixed to 16 lines on these) ; HSync pulse width in characters.&lt;br /&gt;
|-&lt;br /&gt;
|4||Vertical Total (-1)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||x0000000||38||Height of the screen, in characters.&lt;br /&gt;
|-&lt;br /&gt;
|5||Vertical Total Adjust||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||xxx00000||0||Measured in scanlines, can be used for smooth vertical scrolling on CPC.&lt;br /&gt;
|-&lt;br /&gt;
|6||Vertical Displayed||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||x0000000||25||Height of displayed screen in characters. Once vertical character count (VCC) matches this value, DISPTMG is set to 1.&lt;br /&gt;
|-&lt;br /&gt;
|7||Vertical Sync Position||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||x0000000||30||When to start the VSync signal, in characters.&lt;br /&gt;
|-&lt;br /&gt;
|8||Interlace and Skew||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||CCDDxxII||0||CC: Cursor Skew (Only in CRTCs 0, 3 and 4). DD: Display Skew (Only in CRTCs 0, 3 and 4). II: Interlace Mode.&lt;br /&gt;
|-&lt;br /&gt;
|9||Maximum Raster Address (aka Number of Scan Lines) (-1)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||xxx00000||7||Maximum scan line address on CPC can hold between 0 and 7, higher values' upper bits are ignored.&lt;br /&gt;
|-&lt;br /&gt;
|10||Cursor Start Raster||style=&amp;quot;text-align: center;&amp;quot;|Write||style=&amp;quot;text-align: center;&amp;quot;|Write||Read/Write||xBP00000||0||B = Blink On/Off; P = Blink Period Control (16 or 32 frames). Sets first raster row of character that cursor is on to invert.&lt;br /&gt;
|-&lt;br /&gt;
|11||Cursor End Raster||style=&amp;quot;text-align: center;&amp;quot;|Write||style=&amp;quot;text-align: center;&amp;quot;|Write||Read/Write||xxx00000||0||Sets last raster row of character that cursor is on to invert.&lt;br /&gt;
|-&lt;br /&gt;
|12||Display Start Address (High)||Read/Write||style=&amp;quot;text-align: center;&amp;quot;|Write||Read/Write||xx000000||48||On Amstrad Plus, bit7 of the printer port is controlled by bit3 of CRTC R12 (ie. bit11 of Display Start Address).&lt;br /&gt;
|-&lt;br /&gt;
|13||Display Start Address (Low)||Read/Write||style=&amp;quot;text-align: center;&amp;quot;|Write||Read/Write||00000000||0||Allows you to offset the start of screen memory for hardware scrolling, and if using memory from address &amp;amp;0000 with the firmware.&lt;br /&gt;
|-&lt;br /&gt;
|14||Cursor Address (High)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Read/Write||xx000000||0||&lt;br /&gt;
|-&lt;br /&gt;
|15||Cursor Address (Low)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Read/Write||00000000||0||&lt;br /&gt;
|-&lt;br /&gt;
|16||Light Pen Address (High)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Read||xx000000||||On CRTC1, bit6 of Status register goes to 0 when R16 is read.&lt;br /&gt;
|-&lt;br /&gt;
|17||Light Pen Address (Low)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Read||00000000||||On CRTC1, bit6 of Status register goes to 0 when R17 is read.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Screen size ===&lt;br /&gt;
&lt;br /&gt;
We can calculate the screen size in words by multiplying R1 x R6 x (R9+1). And then multiplying the result by 2 to have the screen size in bytes.&lt;br /&gt;
&lt;br /&gt;
With the default CRTC values, we obtain 40 x 25 x (7+1) x 2 = 16000 bytes.&lt;br /&gt;
&lt;br /&gt;
So we can observe that only part of the 16384 bytes (=16KB) page of VRAM is actually displayed on screen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Register access ===&lt;br /&gt;
&lt;br /&gt;
On CRTCs 0/1/2, if a Write Only register is read from, &amp;quot;0&amp;quot; is returned. The register accessing scheme on CRTCs 3/4 makes it impossible to happen.&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, only the 5 least significant bits of the selected register number are considered to write to a register. The other bits are ignored.&lt;br /&gt;
&lt;br /&gt;
On CRTCs 0/1/2, only the 5 least significant bits of the selected register number are considered to read a register:&lt;br /&gt;
* On CRTCs 0/2, registers 18-31 read as 0&lt;br /&gt;
* On CRTC 1, registers 18-30 read as 0, register 31 reads as &amp;amp;FF&lt;br /&gt;
&lt;br /&gt;
On CRTCs 3/4, only the 3 least significant bits of the selected register number are considered to read a register, according to the following table:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Nb&lt;br /&gt;
!Register&lt;br /&gt;
!Definition&lt;br /&gt;
|-&lt;br /&gt;
|0||R16||Light Pen Address (High)&lt;br /&gt;
|-&lt;br /&gt;
|1||R17||Light Pen Address (Low)&lt;br /&gt;
|-&lt;br /&gt;
|2||R10||Cursor Start Raster&lt;br /&gt;
|-&lt;br /&gt;
|3||R11||Cursor End Raster&lt;br /&gt;
|-&lt;br /&gt;
|4||R12||Display Start Address (High)&lt;br /&gt;
|-&lt;br /&gt;
|5||R13||Display Start Address (Low)&lt;br /&gt;
|-&lt;br /&gt;
|6||R14||Cursor Address (High)&lt;br /&gt;
|-&lt;br /&gt;
|7||R15||Cursor Address (Low)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRTC register differences ==&lt;br /&gt;
&lt;br /&gt;
CRTC types 3 and 4 are identical in every way, except for the unlocking mechanism, split screen, hardware soft scroll and 8-bit printer port functionalities specific to the [[ASIC]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== R10/R11 on ASIC/Pre-ASIC  ===&lt;br /&gt;
&lt;br /&gt;
The cursor raster registers R10/R11 act as status registers when read on CRTCs 3/4. They behave as normal cursor raster registers upon write.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! R10 - Bit number&lt;br /&gt;
! Bit value&lt;br /&gt;
! Event&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|1&lt;br /&gt;
|C0=R0&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|C0=R0/2&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|C0=R1-1 (if R0&amp;gt;=R1)&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|0&lt;br /&gt;
|C0=R2&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|C0=R2+R3&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|0&lt;br /&gt;
1&lt;br /&gt;
|R3h&amp;gt;0 : C0=0..R0 on the line R3h from Vsync (C4=R7)&lt;br /&gt;
R3h=0 : C0=0..R0 over 15 lines from Vsync (C4=R7)&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|1&lt;br /&gt;
|Always 1&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|0&lt;br /&gt;
0&lt;br /&gt;
|C0=0..R0-1 : VMA.Lsb=0xFF&lt;br /&gt;
C0=R0 : VMA'.Lsb=0x00 (same cond if C0=R0=0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! R11 - Bit number&lt;br /&gt;
! Bit value&lt;br /&gt;
! Event&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|C4=R4 and C9=R9 and C0=R0 : Last char of screen&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|C4=R6-1 and C9=R9 and C0=R0 : Last char displayed&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|C4=R7-1 and C9=R9 and C0=R0 : Last char before Vsync&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|0/1&lt;br /&gt;
|Timer 16 CRTC frames&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|Always 1&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|0&lt;br /&gt;
|C9=R9 : C0=0 to R0&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|0&lt;br /&gt;
|Always 0&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|1&lt;br /&gt;
|(C9=R9 and C0=R0) or (C9=0 and C0=0 to R0-1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Horizontal and Vertical Sync (R3) ===&lt;br /&gt;
&lt;br /&gt;
Type 0:&lt;br /&gt;
*Bits 7..4 define Vertical Sync Width. If 0 is programmed, this gives 16 lines of VSYNC.&lt;br /&gt;
*Bits 3..0 define Horizontal Sync Width. If 0 is programmed, no HSYNC is generated (and therefore, no interrupts).&lt;br /&gt;
&lt;br /&gt;
Type 1:&lt;br /&gt;
*Bits 7..4 are ignored. Vertical Sync is fixed at 16 lines.&lt;br /&gt;
*Bits 3..0 define Horizontal Sync Width. If 0 is programmed, no HSYNC is generated (and therefore, no interrupts).&lt;br /&gt;
&lt;br /&gt;
Type 2:&lt;br /&gt;
*Bits 7..4 are ignored. Vertical Sync is fixed at 16 lines.&lt;br /&gt;
*Bits 3..0 define Horizontal Sync Width. If 0 is programmed, this gives a HSYNC width of 16.&lt;br /&gt;
&lt;br /&gt;
Types 3/4:&lt;br /&gt;
*Bits 7..4 define Vertical Sync Width. If 0 is programmed, this gives 16 lines of VSYNC.&lt;br /&gt;
*Bits 3..0 define Horizontal Sync Width. If 0 is programmed, this gives a HSYNC width of 16.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Interlace and Skew (R8) ===&lt;br /&gt;
&lt;br /&gt;
Types 0/3/4:&lt;br /&gt;
*Bits 7..6 define the skew (delay) of the CUDISP signal (00 = Non-skew ; 01 = One-character skew ; 10 = Two-character skew ; 11 = Non-output).&lt;br /&gt;
*Bits 5..4 define the skew (delay) of the DISPTMG signal (00 = Non-skew ; 01 = One-character skew ; 10 = Two-character skew ; 11 = Non-output).&lt;br /&gt;
*Bits 3..2 are ignored.&lt;br /&gt;
*Bits 1..0 define the interlace mode (00 = No Interlace ; 01 = Interlace Sync ; 10 = No Interlace ; 11 = Interlace Sync and Video).&lt;br /&gt;
&lt;br /&gt;
Types 1/2:&lt;br /&gt;
*Bits 7..2 are ignored.&lt;br /&gt;
*Bits 1..0 define the interlace mode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== R31 on Type 1 ===&lt;br /&gt;
&lt;br /&gt;
R31 is described in the UM6845R documentation as &amp;quot;Dummy Register&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Its use is described in the documentation for the Rockwell R6545 in combination with R18, R19 and R8 and the Status Register.&lt;br /&gt;
&lt;br /&gt;
In the UM6845R it appears to have no effect. Reading and writing does nothing. Reading it returns &amp;amp;FF.&lt;br /&gt;
&lt;br /&gt;
R31 doesn't exist on CRTCs 0/2/3/4.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Status register on Type 1 ===&lt;br /&gt;
&lt;br /&gt;
The UM6845R has a status register that can be read using port &amp;amp;BExx.&lt;br /&gt;
&lt;br /&gt;
Bit 6 is set to 1 if there is a strobe input to the /LPEN signal. It is cleared to 0 when either R17 or R16 (LPEN address) of the CRTC are read. It signals there is a valid LPEN input. On Kevin Thacker's CPC with UM6845R, it is triggered at power on, R17 and R16 have the values 0 when read.&lt;br /&gt;
&lt;br /&gt;
Bit 5 is set to 1 when CRTC is in &amp;quot;vertical blanking&amp;quot;. Vertical blanking is when the vertical border is active. i.e. VCC&amp;gt;=R6. &lt;br /&gt;
&lt;br /&gt;
It is cleared when the frame is started (VCC=0). It is not directly related to the DISPTMG output (used by the CPC to display the border colour) because that output is a combination of horizontal and vertical blanking.&lt;br /&gt;
This bit will be 0 when pixels are being displayed.&lt;br /&gt;
&lt;br /&gt;
All the other bits read as 0 and don't have any function.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRTC Type Detection ==&lt;br /&gt;
&lt;br /&gt;
It is possible to detect the CRTC Type using software methods, and this is done to: &lt;br /&gt;
&lt;br /&gt;
* warn that the software was not designed for the detected 6845 and may function incorrectly&lt;br /&gt;
* to adapt the software so that it will run with the detected 6845 &lt;br /&gt;
* In most cases, the type of the detected 6845 is reported&lt;br /&gt;
&lt;br /&gt;
Detection routine in BASIC:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10 MODE 1:' Reinitialize screen&lt;br /&gt;
20 OUT &amp;amp;BC00,31:IF INP(&amp;amp;BF00)=255 THEN PRINT&amp;quot;crtc 1&amp;quot;:END&lt;br /&gt;
30 OUT &amp;amp;BC00,12:IF INP(&amp;amp;BF00)=0 THEN PRINT&amp;quot;crtc 2&amp;quot;:END&lt;br /&gt;
40 OUT &amp;amp;BC00,20:IF INP(&amp;amp;BF00)=0 THEN PRINT&amp;quot;crtc 0&amp;quot;:END&lt;br /&gt;
50 PRINT&amp;quot;crtc 3/4&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Distinguishing between CRTCs 3 and 4 can be done by trying to [[Programming:Unlocking ASIC|unlock the ASIC]] or by testing the [[8255|PPI chip]]. On ASIC, if PPI Port B is set as output it will behave the same as input.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRTC Timing Diagrams ==&lt;br /&gt;
[[File:CRTC Timing Diagram Rockwell.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:CRTC timing small.gif]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Internal Counters ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Counter name&lt;br /&gt;
! Abbr&lt;br /&gt;
! Alternate name&lt;br /&gt;
! Compared with&lt;br /&gt;
! Comment&lt;br /&gt;
|-&lt;br /&gt;
|Horizontal Character Counter&lt;br /&gt;
|HCC&lt;br /&gt;
|C0&lt;br /&gt;
|R0, R1, R2&lt;br /&gt;
| Increments on every clock cycle&lt;br /&gt;
|-&lt;br /&gt;
|Horizontal Sync Counter&lt;br /&gt;
|HSC&lt;br /&gt;
|C3l&lt;br /&gt;
|R3l&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Vertical Character Counter&lt;br /&gt;
|VCC&lt;br /&gt;
|C4&lt;br /&gt;
|R4, R6, R7&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Vertical Sync Counter&lt;br /&gt;
|VSC&lt;br /&gt;
|C3h&lt;br /&gt;
|R3h&lt;br /&gt;
|R3h is fixed to 0 on CRTCs 1/2. This gives 16 lines of VSYNC&lt;br /&gt;
|-&lt;br /&gt;
|Vertical Line Counter&lt;br /&gt;
|VLC&lt;br /&gt;
|C9&lt;br /&gt;
|R9, R10, R11&lt;br /&gt;
|If not in IVM mode, this counter is exposed on CRTC pins RA0..RA4&lt;br /&gt;
|-&lt;br /&gt;
|Vertical Total Adjust Counter&lt;br /&gt;
|VTAC&lt;br /&gt;
|C5&lt;br /&gt;
|R5&lt;br /&gt;
|This counter does not exist on CRTCs 0/3/4. C9 is reused instead&lt;br /&gt;
|-&lt;br /&gt;
|Frame Counter&lt;br /&gt;
|FC&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|Used to alternate frames in interlace and for CRTC cursor blinking&lt;br /&gt;
|-&lt;br /&gt;
|Memory Address&lt;br /&gt;
|MA&lt;br /&gt;
|&lt;br /&gt;
|R14/R15&lt;br /&gt;
|This counter is exposed on CRTC pins MA0..MA13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When IVM mode is activated, VLC continues to increment normally. However, RA is not identical to VLC anymore. Instead, VLC is considered shifted left by 1 bit, and bit0 represents the parity of the field (even/odd).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRTC counter differences ==&lt;br /&gt;
&lt;br /&gt;
=== MA buffering ===&lt;br /&gt;
&lt;br /&gt;
No matter its type, the CRTC never buffers any of its counters, except for the video pointer MA. The buffer MA' is needed because MA has to be reloaded at the beginning of every raster line.&lt;br /&gt;
&lt;br /&gt;
At the end of the display of the last raster line of each character line (ie. when HCC=R1 and VLC=R9), MA' captures the current value of MA.&lt;br /&gt;
&lt;br /&gt;
CRTC 2 is the exception: at the end of the display of the last raster line of the frame, MA' captures R12/R13 instead of MA.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MA reload ===&lt;br /&gt;
&lt;br /&gt;
On CRTCs 0/3/4, at the beginning of the first raster line of the frame, MA and MA' are loaded with R12/R13. Otherwise, MA is loaded with MA'.&lt;br /&gt;
&lt;br /&gt;
On CRTC 2, at the beginning of every raster line of the frame (including the first one), MA is loaded with MA'.&lt;br /&gt;
&lt;br /&gt;
On CRTC 1, at the beginning of every raster line of the first character line of the frame (ie. when VCC=0), MA is loaded with R12/R13 instead of MA'. '''This is a major source of incompatibility if the programmer does not take care.''' In demos and games, to be compatible with all CRTCs, program R12/R13 only when VCC≠0. This will then take effect at the next CRTC frame start.&lt;br /&gt;
&lt;br /&gt;
==== Rupture For Dummies (R5 bug) ====&lt;br /&gt;
&lt;br /&gt;
CRTC 1 has a bug that occurs when R5 is updated with a non-zero value when HCC=R0 and VLC≠R9, but only when R5 was previously 0. This changes the MA update source to R12/R13 instead of MA'. The CRTC then loads R12/R13 into MA at the beginning of every scanline, regardless of the VCC value.&lt;br /&gt;
&lt;br /&gt;
This R5 bug also messes with the frame parity management. However, it is possible to fix the parity of the frame by activating/deactivating the IVM interlace mode.&lt;br /&gt;
&lt;br /&gt;
The vertical adjustment operates normally after the RFD is triggered. If vertical adjustment is not needed, R5 can be reset at any time after the RFD is activated.&lt;br /&gt;
&lt;br /&gt;
This effect is used in the [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=19308 DSC4 demo].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== VSC (C3h) overflow ===&lt;br /&gt;
&lt;br /&gt;
During a VSYNC on CRTCs 0/3/4, if VSYNC Width (R3h) is changed with a value less than the current VSC, then VSC overflows and will count up to its maximum value (15) before looping back and counting up again until it reaches the new value of R3h.&lt;br /&gt;
&lt;br /&gt;
On CRTCs 1/2, the VSYNC width is fixed to 16 characters. It is not possible to modify it. Therefore, VSC cannot be overflowed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HSC (C3l) overflow ===&lt;br /&gt;
&lt;br /&gt;
During an HSYNC, if HSYNC Width (R3l) is changed with a value less than the current HSC, then HSC overflows and will count up to its maximum value (15) before looping back and counting up again until it reaches the new value of R3l.&lt;br /&gt;
&lt;br /&gt;
The only exception is for CRTC 1 with a value of 0, which immediately cancels the current HSYNC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== VCC (C4) overflow ===&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, if Vertical Total (R4) is changed with a value less than VCC, then:&lt;br /&gt;
* if this update was done when VCC &amp;lt; R4, then VCC overflows and will count up to its maximum value (127) before looping back and counting up again until it reaches the new value of R4&lt;br /&gt;
* if this update was done when VCC = R4, the current character line was already decided to be the last one of the current frame. No update to R4 will make the CRTC change its mind for the current frame&lt;br /&gt;
&lt;br /&gt;
The only exception when VCC = R4 is for CRTC 1 with a value of 0, which will cause VCC to overflow.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HCC (C0) overflow ===&lt;br /&gt;
&lt;br /&gt;
If Horizontal Total (R0) is changed with a value less than the current HCC, then:&lt;br /&gt;
* on CRTCs 0/1/2, HCC overflows and will count up to its maximum value (255) before looping back and counting up again until it reaches the new value of R0&lt;br /&gt;
* on CRTCs 3/4, the current line is considered finished and HCC is immediately reset to 0 on the next line&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== VLC (C9) overflow ===&lt;br /&gt;
&lt;br /&gt;
If Number of Scan Lines (R9) is changed with a value less than the current VLC, then:&lt;br /&gt;
* on CRTCs 0/1/2, VLC overflows and will count up to its maximum value (31) before looping back and counting up again until it reaches the new value of R9&lt;br /&gt;
* on CRTCs 3/4, the current line is considered the last one of this CRTC character and VLC will reset to 0 on the next line&lt;br /&gt;
&lt;br /&gt;
As an exception, on CRTCs 0/2, if VLC is modified during the last frame line, then the updated value will not be considered for the current frame.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== VTAC (C5/C9) overflow ===&lt;br /&gt;
&lt;br /&gt;
During vertical adjustment mode, if Vertical Total Adjust (R5) is changed with a value less than the current VTAC, then:&lt;br /&gt;
* on CRTCs 0/1/2, VTAC overflows and will count up to its maximum value (31) before looping back and counting up again until it reaches the new value of R5&lt;br /&gt;
* on CRTCs 3/4, the current line is considered the last one of the current frame and vertical adjustment will end&lt;br /&gt;
&lt;br /&gt;
As an exception, on CRTCs 0/2, if VTAC is modified during the last frame line, then the updated value will not be considered for the current frame.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Vertical Adjustment mode ===&lt;br /&gt;
&lt;br /&gt;
On CRTCs 3/4, this mode does not increment VCC, so VCC remains equal to R4.&lt;br /&gt;
&lt;br /&gt;
On CRTC 0, this mode increments VCC, causing it to exceed R4, but this increment occurs only once.&lt;br /&gt;
&lt;br /&gt;
On CRTCs 1/2, this mode increments VCC, causing it to exceed R4, and this increment can happen multiple times depending on the values of R5 and R9.&lt;br /&gt;
&lt;br /&gt;
Also, only CRTCs 1/2 have a dedicated C5 counter. On CRTCs 0/3/4, during Vertical Adjustment, C9 has to fullfil the VTAC role which means that it cannot fullfil its VLC role. This impacts address generation as R9 is not considered anymore.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Counter freezes ===&lt;br /&gt;
&lt;br /&gt;
On CRTCs 1/2/3/4, R0 accepts all values without causing any problems for counters.&lt;br /&gt;
&lt;br /&gt;
On CRTC 0:&lt;br /&gt;
* Setting R0 to 0 will cause numerous issues that stem from the fact that VLC is frozen. As HCC never reaches 1, the logic that increments VLC is never triggered.&lt;br /&gt;
* The logic that triggers vertical adjustment is broken if R0&amp;lt;2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Block Diagrams ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Hitachi&lt;br /&gt;
!UMC&lt;br /&gt;
!Motorola&lt;br /&gt;
|-&lt;br /&gt;
|[[File:CRTC Block Diagram.png|Hitachi]]&lt;br /&gt;
|[[File:UMC CRTC Block Diagram.png|UMC]]&lt;br /&gt;
|[[File:Motorola CRTC Block Diagram.png|Motorola]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRTC-II (aka Type 5) ==&lt;br /&gt;
&lt;br /&gt;
The [[Media:CRTC-5-HD6345.pdf|HD6345 datasheet]] states it is upward-compatible with the HD6845S in pin and software.&lt;br /&gt;
&lt;br /&gt;
This chip was never used by Amstrad. However, some CPC enthusiasts have replaced the original CRTC chip in their CPC with this one.&lt;br /&gt;
&lt;br /&gt;
With this chip, split-screen becomes easy: [https://thecheshirec.at/2024/05/20/des-splitscreens-en-basic-sur-crtc5/ Split-screen in BASIC]. And 3 new graphics modes (160x100x16c, 320x100x4c, 640x100x2c) are available: [https://thecheshirec.at/2024/11/10/trois-nouveaux-modes-video-grace-au-crtc-5/ New graphics modes in BASIC].&lt;br /&gt;
&lt;br /&gt;
This is the cheapest way to upgrade the CPC's graphics capabilities, costing only 1.29€. [https://thecheshirec.at/2024/05/19/des-crtc5-a-129e/ Source]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Datasheets ==&lt;br /&gt;
&lt;br /&gt;
==== Used by Amstrad ====&lt;br /&gt;
* [[Media:hd6845.hitachi.pdf|HD6845S (Hitachi)]] aka Type 0&lt;br /&gt;
* [[Media:UM6845-UMC.pdf|UM6845 (UMC)]] aka Type 0&lt;br /&gt;
* [[Media:Um6845r.umc.pdf|UM6845R (UMC)]] aka Type 1&lt;br /&gt;
* [[Media:Mc6845.motorola.pdf|MC6845 (Motorola)]] aka Type 2&lt;br /&gt;
* [[Media:CPC_Plus_Asic_Schematic.GIF|AMS40489 (Amstrad)]] aka Type 3 ([[ASIC]])&lt;br /&gt;
* [[AMS40226 (Amstrad)]] aka Type 4 (Pre-ASIC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Unused clones ====&lt;br /&gt;
* [[CM607P]] a Bulgarian clone made in Pravetz factory. It is used in the [[Aleste 520EX]].&lt;br /&gt;
* [[Media:hd6845.hitachi.pdf|HD6845R]] by Hitachi. According to Kevin Thacker, the [[KC Compact]] used HD6845R only.&lt;br /&gt;
* [[Media:UM6845E-UMC.pdf|UM6845E]] by UMC&lt;br /&gt;
* [[Media:Mc6845.pdf|MC6845-1]] by Motorola&lt;br /&gt;
* [[Media:F6845.pdf|F6845]] by Fairchild&lt;br /&gt;
* [[Media:EF6845P.pdf|EF6845]] by Thomson Semiconductors&lt;br /&gt;
* [[Media:VL6845 VTi.pdf|VL6845]] by VTi&lt;br /&gt;
* [[Media:C6845 CRTC (CAST).pdf|C6845]] by Cast&lt;br /&gt;
* [[Media:MB89321B FUJ.pdf|MB89321B]] by Fujitsu. It is pin-compatible with the 6845&lt;br /&gt;
* [[Media:MB89321A datasheet CRTC.pdf|MB89321A]] by Fujitsu. Enhanced version that adds smooth scroll, screen partitioning, independent scrolling of screen partitions, and other convenient features&lt;br /&gt;
* [[Media:Mos 6545-1 crtc.pdf|MOS 6545]] (MOS, Rockwell, Synertek) is pin-compatible with the 6845. Its differences are found in the R8 register.&lt;br /&gt;
* [https://www.cpcwiki.eu/forum/other-retro/interesting-discussion-about-the-c128-s-cpm-poor-performance/msg223058/#msg223058 MOS 8563] It is an evolution of the 6545/6845 CRTC chip, with blitter abilities to autonomously perform block memory copies within its dedicated video RAM.&lt;br /&gt;
* [https://github.com/hoglet67/BeebFpga/blob/dev/src/common/mc6845.vhd BeebFpga] [https://github.com/MiSTer-devel/Amstrad_MiSTer/blob/master/rtl/UM6845R.v MiSTer] [https://opencores.org/websvn/filedetails?repname=System09&amp;amp;path=%2FSystem09%2Ftrunk%2Frtl%2FVHDL%2Fcrtc6845.vhd OpenCores] Verilog/VHDL implementations of the 6845&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tools about CRTC ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.cpcwiki.eu/imgs/9/99/Elmar_Krieger-SPECIAL_EFFECTS.dsk  some BASIC tools to detect CRTC types 0-1-2 and show some effects] by [[Elmar Krieger]] (DSK for Emulators)&lt;br /&gt;
* [[File:Shaker26.dsk]] Shaker - Suite of CRTC tests associated with the CPC CRTC compendium (many of them will not work correctly on emulators and that was the purpose of the tests, to help create more compatible emulation)&lt;br /&gt;
* [[File:Shaker addon.dsk]] Shaker Add-On (Pixel 1 Hard Scroll / Vertical Rupture all Crtc)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/6845 Wikipedia on the CRTC]&lt;br /&gt;
* [[Media:ACCC1.8-EN.pdf]] CPC CRTC Compendium - Latest (04/2024!) document containing in-depth info about CRTC programming on CPC.&lt;br /&gt;
* [[Media:CRTC Compendium Podcast.mp3]] The CRTC Compendium digested in podcast format&lt;br /&gt;
* [http://www.grimware.org/doku.php/documentations/devices/crtc CRTC documentation from Grimware]&lt;br /&gt;
* [http://quasar.cpcscene.net/doku.php?id=assem:crtc Quasar CRTC documentation (in french)]&lt;br /&gt;
* [https://pulkomandy.github.io/shinra.github.io/crtc.html PulkoMandy's table] [https://www.theoddys.com/acorn/the_6845_crtc/6845%20Variants.xlsx Oddy's table] Differences between CRTC types&lt;br /&gt;
* [[Media:Dossier Rupture(Gozeur Paradox).pdf]]&lt;br /&gt;
* [[Media:Dossier CRTC(Ramlaid Mortel).pdf]] Les entrailles du CRTC&lt;br /&gt;
* [https://thecheshirec.at/tag/crtc6845/ Leçons CRTC (CheshireCat)]&lt;br /&gt;
* [https://martin.hinner.info/vga/pal.html PAL video timing specification]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related pages==&lt;br /&gt;
&lt;br /&gt;
*[[Gate Array]]&lt;br /&gt;
&lt;br /&gt;
*[[ASIC]]&lt;br /&gt;
&lt;br /&gt;
*[[Video modes]]&lt;br /&gt;
&lt;br /&gt;
*[[Synchronising with the CRTC and display]] : technic and details on the relationship between Gate Array and CRTC.&lt;br /&gt;
&lt;br /&gt;
*[[VIDI digitizer]] This extension contains its own CRTC chip&lt;br /&gt;
&lt;br /&gt;
[[Category:Hardware]] [[Category:CPC Internal Components]] [[Category:Electronic Component]] [[Category:Programming]] [[Category:Datasheet]] [[Category:Graphic]]&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Gate_Array&amp;diff=126241</id>
		<title>Gate Array</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Gate_Array&amp;diff=126241"/>
				<updated>2025-05-22T20:38:06Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Amstrad 40007 Gate Array.png|right|thumb|Amstrad 40007 Gate Array]]&lt;br /&gt;
[[File:Amstrad 40010 Gate Array.png|right|thumb|Amstrad 40010 Gate Array]]&lt;br /&gt;
&lt;br /&gt;
Also designated as Video Gate Array (VGA, not to be confused with the IBM PC compatible graphic card spec).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Introduction  ==&lt;br /&gt;
&lt;br /&gt;
The Gate Array is a specially designed chip exclusively for use in the Amstrad CPC and was designed by Amstrad plc. &lt;br /&gt;
&lt;br /&gt;
In the CPC+ system, the functions of the Gate Array are integrated into a single [[ASIC|ASIC]]. When the ASIC is &amp;quot;locked&amp;quot;, the extra features are not available and the 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 &amp;quot;un-locked&amp;quot; to access the new features. &lt;br /&gt;
&lt;br /&gt;
In the [[KC Compact]] system, the functions of the Gate Array are &amp;quot;emulated&amp;quot; in TTL chips, [[CIO Overview|CIO]], and its color translation EPROM.&lt;br /&gt;
&lt;br /&gt;
In the &amp;quot;cost-down&amp;quot; version of the CPC6128, the functions of the Gate Array are integrated into an ASIC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== What does it do? ==&lt;br /&gt;
&lt;br /&gt;
The Gate Array is responsible for the display (colour palette, resolution, horizontal and vertical sync), bus arbitration, DRAM refresh, interrupt generation and memory arrangement. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bus arbitration ==&lt;br /&gt;
&lt;br /&gt;
The Gate Array arbitrates access to the RAM between the CPU and the video hardware (CRTC and Gate-Array).&lt;br /&gt;
&lt;br /&gt;
Every microsecond: &lt;br /&gt;
* The CRTC generates a memory address using it's MA and RA signal outputs. See the [[CRTC]] wiki page to know how the motherboard wiring transforms these signals into the Video Memory Address (VMA).&lt;br /&gt;
* The Gate Array fetches 2 bytes for each address. /CPU_ADDR is a 1MHz signal. So these 2 bytes are fetched sequentially. They are not interleaved with Z80 access. These bytes are fetched even when the border is on as this is required for DRAM refresh.&lt;br /&gt;
* The video hardware is given priority so that the display is not disrupted.&lt;br /&gt;
&lt;br /&gt;
The Gate-Array generates the &amp;quot;READY&amp;quot; signal which is connected to the &amp;quot;/WAIT&amp;quot; input signal of the CPU. This signal is used to stop the CPU accessing RAM while the video-hardware is accessing it.&lt;br /&gt;
&lt;br /&gt;
In fact, the Gate Array allows the Z80 to access the RAM in only 1 out of every 4 cycles. As a result, all instruction timings are stretched so that they are all multiples of a microsecond (1µs), and this gives an effective CPU clock of 3.3Mhz.&lt;br /&gt;
&lt;br /&gt;
Unlike the ZX Spectrum or the Amiga, where bus arbitration is restricted to the &amp;quot;contended memory&amp;quot; or &amp;quot;chip RAM&amp;quot;, on the CPC it also applies to ROM access and to RAM expansions. So the Z80 always runs at the same speed, regardless of the type of memory being accessed.&lt;br /&gt;
&lt;br /&gt;
Last but not least, bus arbitration also applies to I/O access. And memory access is not aligned with I/O access on Z80.&lt;br /&gt;
&lt;br /&gt;
Note: On Amstrad Plus, the ASIC also has to handle DMA instruction fetch from RAM.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DRAM refresh ==&lt;br /&gt;
&lt;br /&gt;
On Amstrad CPC, the Gate Array is responsible for the DRAM refresh, instead of using the Z80 built-in DRAM refresh mechanism. The reason is that there can only be 3 DRAM accesses per microsecond on this architecture. Doing DRAM refresh on each M1 cycle as it is done on MSX would bog down the CPU speed on CPC given its bus arbitration scheme.&lt;br /&gt;
&lt;br /&gt;
The Z80 generates a maximum of one request per microsecond. The CPC also requires two memory accesses per microsecond for reading video data.&lt;br /&gt;
&lt;br /&gt;
The CPC specs 4164-20 DRAMs. These require 330nS for a read or write cycle. The CPC also uses the optimised sequential CAS cycles to read the two video data bytes in half a microsecond. [https://www.cpcwiki.eu/forum/amstrad-cpc-hardware/the-cpc-revision-zero-article/msg243769/ Source]&lt;br /&gt;
&lt;br /&gt;
The way to cause the RAM refresh to fail in both a Plus or normal CPC is simply to stop a few bits of the CRTC address changing (ie. never refresh the selected area).&lt;br /&gt;
&lt;br /&gt;
Generally, only the Row address needs to be cycled, so stopping MA0 through MA7 from changing, and stopping the CPU from reading those rows, will cause data to be lost, quite quickly (generally around 4ms). [https://www.cpcwiki.eu/forum/amstrad-cpc-hardware/memory-refresh-plus/ Source]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Interrupt generation ==&lt;br /&gt;
* '''This section relies largely on a single source and is suspected of infringing copyright protected under the [https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode CC BY-NC-ND 4.0 license].''' Readers are encouraged to refer directly to the original source material for accurate information. &lt;br /&gt;
** ''Original source material under copyright: [https://shaker.logonsystem.eu/ACCC1.8-EN.pdf  The Amstrad CPC CRTC Compendium]''&lt;br /&gt;
** ''Author: Serge Querné ([[Longshot]])''&lt;br /&gt;
&lt;br /&gt;
Interrupts on the CPC are created by the Gate Array based on settings from the CRTC. The Gate Array has an internal counter R52 (the R is for Raster) that counts from 0 to 51, incrementing after each HSYNC signal.&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, R52 interrupts always start 1µs after the end of an HSYNC. But on CRTCs 3/4, HSYNCs occur 1µs later than on CRTCs 0/1/2. Which means that on CRTCs 3/4, interrupts start 1µs later than on CRTCs 0/1/2. This can be adjusted by using the CRTC register 3.&lt;br /&gt;
&lt;br /&gt;
R52 will return to 0 and the Gate Array will send an interrupt request on any of these conditions:&lt;br /&gt;
* When it exceeds 51&lt;br /&gt;
* By setting bit4 of the RMR register of the Gate Array to 1&lt;br /&gt;
* At the end of the 2nd HSYNC after the start of the VSYNC&lt;br /&gt;
&lt;br /&gt;
When the Gate Array sends an interrupt request:&lt;br /&gt;
*If the interrupts were authorized at the time of the request, then bit5 of R52 is cleared (but R52 was reset to 0 anyway) and the interrupt takes place&lt;br /&gt;
*If interrupts are not authorized, then the R52 counter continues to increment and the interrupt remains armed (the Gate Array then maintains its INT signal). When interrupts are enabled (using the EI instruction), bit5 of R52 is cleared and the interrupt takes place. This happens only '''after the instruction that follows EI''' as this Z80 instruction has a 1-instruction delay.&lt;br /&gt;
&lt;br /&gt;
Note: On Amstrad Plus, the interrupt management system is seriously beefed up. See the [[ASIC]] wiki page.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CSYNC signal ==&lt;br /&gt;
* '''This section relies largely on a single source and is suspected of infringing copyright protected under the [https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode CC BY-NC-ND 4.0 license].''' Readers are encouraged to refer directly to the original source material for accurate information. &lt;br /&gt;
** ''Original source material under copyright: [https://shaker.logonsystem.eu/ACCC1.8-EN.pdf  The Amstrad CPC CRTC Compendium]''&lt;br /&gt;
** ''Author: Serge Querné ([[Longshot]])''&lt;br /&gt;
&lt;br /&gt;
The HSYNC and VSYNC signals are received from the [[CRTC]]. These signals are then modified by the Gate Array to C-HSYNC and C-VSYNC and merged into a single CSYNC signal that will be sent to the display.&lt;br /&gt;
&lt;br /&gt;
When CRTC HSYNC is active, the Gate Array immediately outputs the palette colour black. If the HSYNC is set to 14 characters then black will be output for 14µs.&lt;br /&gt;
&lt;br /&gt;
If a graphics mode change is pending, the HSYNC pulse width needs to be at least 2µs for Gate Array to change the graphics mode.&lt;br /&gt;
&lt;br /&gt;
C-HSYNC begins 2µs after activation of the CRTC HSYNC and stays a maximum of 4µs (signal is cut short if HSYNC width is greater than 6).&lt;br /&gt;
&lt;br /&gt;
For example, if CRTC R2=46, and CRTC HSYNC width is 14 chars then C-HSYNC starts at 48 and lasts only until 51 included.&lt;br /&gt;
&lt;br /&gt;
On Gate Array, even if the duration of the CRTC VSYNC is reduced to 2 µseconds, the Gate Array will always output black for 26 lines with 4 lines of C-VSYNC to the monitor. While on ASIC/Pre-ASIC, the CRTC VSYNC must be active as long as the C-VSYNC signal is sent to the monitor.&lt;br /&gt;
&lt;br /&gt;
The Gate Array (and ASIC/Pre-ASIC) uses 2 internal counters to create its CSYNC signal:&lt;br /&gt;
* H06 counts the number of CRTC characters processed during an HSYNC. H06 is incremented by the Gate Array for each CRTC character when CRTC HSYNC is active. The Gate Array activates the C-HSYNC signal when H06 reaches 2, and changes its graphics mode if a change was pending. It deactivates this signal when H06 reaches 6.&lt;br /&gt;
* V26 counts the number of HSYNCs occuring during a VSYNC. V26 is incremented by the Gate Array when the CRTC signals an end of HSYNC. The Gate Array activates the C-VSYNC signal when V26 reaches 2 (and if VSYNC is active on ASIC/Pre-ASIC). It deactivates this signal when V26 reaches 6. After the 26th line has been processed, the Gate Array stops outputting the palette colour black.&lt;br /&gt;
&lt;br /&gt;
If CRTC VSYNC is activated again while V26 is still in progress, then V26 is reset to 0 and starts counting up again the HSYNC pulses.&lt;br /&gt;
&lt;br /&gt;
The HSYNC signal from the CRTC is 0 when inactive and 1 when active. Same for VSYNC.&lt;br /&gt;
&lt;br /&gt;
C-HSYNC and C-VSYNC are composited using the XNOR function. The resulting CSYNC signal produced by the Gate Array is 1 when inactive and 0 when active.&lt;br /&gt;
&lt;br /&gt;
On a CPC monitor, the CSYNC is rendered in &amp;quot;absolute black&amp;quot;. It is darker than the palette colour black output by the Gate Array. The electron beam is basically turned off. Turning up the brightness level won't make it any brighter.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Controlling the Gate Array  ==&lt;br /&gt;
&lt;br /&gt;
The gate array is controlled by I/O. The gate array is selected when bit 15 of the I/O port address is set to &amp;quot;0&amp;quot; and bit 14 of the I/O port address is set to &amp;quot;1&amp;quot;. The values of the other bits are ignored. However, to avoid conflict with other devices in the system, these bits should be set to &amp;quot;1&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
The recommended I/O port address is &amp;amp;7Fxx. &lt;br /&gt;
&lt;br /&gt;
The Gate Array is not connected to the CPU's RD and WR pins, so it cannot detect the bus's I/O direction. If you execute an I/O read operation on the Gate Array I/O address, the Gate Array will read an unpredictable value from the databus which will be in high-impedance state. If the value is a valid Gate Array command, it will be executed, otherwise nothing will happen. [https://www.grimware.org/doku.php/documentations/devices/gatearraydo=export_xhtml Source]&lt;br /&gt;
&lt;br /&gt;
The function to be performed is selected by writing data to the Gate Array, the first bits of the data define the function selected (see table below). It is not possible to read from the Gate Array. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=4| 8bit command&lt;br /&gt;
!rowspan=2| Machine&lt;br /&gt;
!rowspan=2| Register&lt;br /&gt;
!rowspan=2| Description&lt;br /&gt;
!rowspan=2| Chip&lt;br /&gt;
|-&lt;br /&gt;
! 7&lt;br /&gt;
! 6&lt;br /&gt;
! 5&lt;br /&gt;
! 4..0&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0 || x || style=&amp;quot;text-align: center;&amp;quot; | n || All || PENR || Select a color register || Gate Array&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1 || x || style=&amp;quot;text-align: center;&amp;quot; | n || All || INKR || Change the value of the currently selected color register || Gate Array&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0 || 0 || style=&amp;quot;text-align: center;&amp;quot; | n || All || RMR || Control Interrupt counter, ROM mapping and Graphics mode || Gate Array&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot;|1 || rowspan=&amp;quot;2&amp;quot;|0 || rowspan=&amp;quot;2&amp;quot;|1 || style=&amp;quot;text-align: center;&amp;quot; rowspan=&amp;quot;2&amp;quot; | n || All || RMR || ''Ghost register'' || Gate Array (CPC) or locked ASIC (Plus)&lt;br /&gt;
|-&lt;br /&gt;
| Plus || RMR2 || ASIC &amp;amp; Advanced ROM mapping || Unlocked ASIC&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1 ||colspan=2  style=&amp;quot;text-align: center;&amp;quot; | n || All || MMR || RAM memory mapping || PAL (only with 128KB or RAM expansion)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The MMR register is not available in the Gate Array, but is performed by a device at the same I/O port address location.&lt;br /&gt;
&lt;br /&gt;
In the CPC464, CPC664 and KC compact, MMR is performed in an external memory expansion (e.g. Dk'Tronics 64K RAM Expansion), if this expansion is not present then MMR is not available.&lt;br /&gt;
&lt;br /&gt;
In the CPC6128, MMR is performed by a [[PAL16L8|PAL chip]] located on the main PCB, or an external memory expansion.&lt;br /&gt;
&lt;br /&gt;
In the 464+ and 6128+, MMR is performed by the ASIC or an external memory expansion. Please read the document on RAM management for more information.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Registers ==&lt;br /&gt;
&lt;br /&gt;
Note: The Plus palette capabilities are only accessible through the [[Default I/O Port Summary|ASIC I/O page]]. Registers PENR and INKR are not needed in that case.&lt;br /&gt;
&lt;br /&gt;
=== Register PENR (Select a color register) ===&lt;br /&gt;
&lt;br /&gt;
When bit 7 and bit 6 are set to &amp;quot;0&amp;quot;, the remaining bits determine which pen is to have its colour changed. When bit 4 is set to &amp;quot;0&amp;quot;, bits 3 to 0 define which pen is to be selected. When bit 4 is set to &amp;quot;1&amp;quot;, the value contained in bits 3-0 is ignored and the border is selected. &lt;br /&gt;
&lt;br /&gt;
The pen remains selected until another is chosen. &lt;br /&gt;
&lt;br /&gt;
Each mode has a fixed number of pens. Mode 0 has 16 pens, mode 1 has 4 pens and mode 2 has 2 pens. &lt;br /&gt;
&lt;br /&gt;
==== Summary  ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Bit&lt;br /&gt;
!Value&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 0 || rowspan=&amp;quot;2&amp;quot; | Gate Array PENR register&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 0 &lt;br /&gt;
|-&lt;br /&gt;
| 5 || - || not used&lt;br /&gt;
|-&lt;br /&gt;
| 4 || 1 || Select border&lt;br /&gt;
|-&lt;br /&gt;
| 3 || x || rowspan=&amp;quot;4&amp;quot; | Ignored&lt;br /&gt;
|-&lt;br /&gt;
| 2 || x&lt;br /&gt;
|-&lt;br /&gt;
| 1 || x&lt;br /&gt;
|-&lt;br /&gt;
| 0 || x&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Bit&lt;br /&gt;
!Value&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 0 || rowspan=&amp;quot;2&amp;quot; | Gate Array PENR register&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 0&lt;br /&gt;
|-&lt;br /&gt;
| 5 || - || not used&lt;br /&gt;
|-&lt;br /&gt;
| 4 || 0 || Select pen&lt;br /&gt;
|-&lt;br /&gt;
| 3 || x || rowspan=&amp;quot;4&amp;quot; | Pen number&lt;br /&gt;
|-&lt;br /&gt;
| 2 || x&lt;br /&gt;
|-&lt;br /&gt;
| 1 || x&lt;br /&gt;
|-&lt;br /&gt;
| 0 || x&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Register INKR (Change the value of the currently selected color register) ===&lt;br /&gt;
&lt;br /&gt;
Once the pen has been selected its colour can then be changed. Bits 4 to 0 specify the hardware colour number from the hardware colour palette. &lt;br /&gt;
&lt;br /&gt;
Even though there is provision for 32 colours, only 27 are possible. The remaining colours are duplicates of those already in the colour palette. &lt;br /&gt;
&lt;br /&gt;
==== Summary  ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Bit&lt;br /&gt;
!Value&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 0 || rowspan=&amp;quot;2&amp;quot; | Gate Array INKR register&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 5 || - || not used&lt;br /&gt;
|-&lt;br /&gt;
| 4 || x || rowspan=&amp;quot;5&amp;quot; | Colour number x&lt;br /&gt;
|-&lt;br /&gt;
| 3 || x &lt;br /&gt;
|-&lt;br /&gt;
| 2 || x &lt;br /&gt;
|-&lt;br /&gt;
| 1 || x&lt;br /&gt;
|-&lt;br /&gt;
| 0 || x&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Register RMR (Control Interrupt counter, ROM mapping and Graphics mode) ===&lt;br /&gt;
&lt;br /&gt;
This is a general purpose register responsible for the [[Video modes|graphics mode]] and the ROM configuration. &lt;br /&gt;
&lt;br /&gt;
==== Graphics mode selection  ====&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Bit 1&lt;br /&gt;
!Bit 0&lt;br /&gt;
!Screen mode&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0 || Mode 0, 160x200 resolution, 16 colours&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1 || Mode 1, 320x200 resolution, 4 colours&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0 || Mode 2, 640x200 resolution, 2 colours&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1 || Mode 3, 160x200 resolution, 4 colours (undocumented)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* 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).&lt;br /&gt;
&lt;br /&gt;
Mode changing is synchronised with HSYNC. If the mode is changed, it will take effect from the next HSYNC.&lt;br /&gt;
&lt;br /&gt;
==== ROM configuration selection  ====&lt;br /&gt;
&lt;br /&gt;
Bit 2 is used to enable or disable the lower ROM area. The lower ROM area occupies memory addresses &amp;amp;amp;0000-&amp;amp;amp;3fff and is used to access the operating system ROM. When the lower ROM area is is enabled, reading from &amp;amp;amp;0000-&amp;amp;amp;3FFF will return data in the ROM. When a value is written to &amp;amp;amp;0000-&amp;amp;amp;3FFF, it will be written to the RAM underneath the ROM. When it is disabled, data read from &amp;amp;amp;0000-&amp;amp;amp;3FFF will return the data in the RAM. &lt;br /&gt;
&lt;br /&gt;
Similarly, bit 3 controls enabling or disabling of the upper ROM area. The upper ROM area occupies memory addressess &amp;amp;amp;C000-&amp;amp;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;amp;amp;c000-&amp;amp;amp;ffff, will return data in the ROM. When data is written to &amp;amp;amp;c000-&amp;amp;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;amp;amp;c000-&amp;amp;amp;ffff it will be the data in the RAM. &lt;br /&gt;
&lt;br /&gt;
Bit 4 controls the interrupt generation. It can be used to delay interrupts. See the document on interrupt generation for more information.&lt;br /&gt;
&lt;br /&gt;
==== Summary  ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Bit&lt;br /&gt;
!Value&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 1 || rowspan=&amp;quot;2&amp;quot; | Gate Array RMR register&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 0 &lt;br /&gt;
|-&lt;br /&gt;
| 5 || - || ''must be 0 on Plus machines with ASIC unlocked''&lt;br /&gt;
|-&lt;br /&gt;
| 4 || x || Interrupt generation control&lt;br /&gt;
|-&lt;br /&gt;
| 3 || x || 1=Upper ROM area disable, 0=Upper ROM area enable&lt;br /&gt;
|-&lt;br /&gt;
| 2 || x || 1=Lower ROM area disable, 0=Lower ROM area enable&lt;br /&gt;
|-&lt;br /&gt;
| 1 || x || rowspan=&amp;quot;2&amp;quot; | Graphics Mode selection&lt;br /&gt;
|-&lt;br /&gt;
| 0 || x&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Register RMR2 (ASIC &amp;amp; Advanced ROM mapping) ===&lt;br /&gt;
&lt;br /&gt;
This register exists only in Plus or GX4000, and is only accessible when the ASIC is unlocked.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Bit&lt;br /&gt;
!Value&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 1 || rowspan=&amp;quot;3&amp;quot; | Gate Array RMR2 register&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 0&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 4 || x || rowspan=&amp;quot;2&amp;quot; |RMR addressing mode&lt;br /&gt;
|-&lt;br /&gt;
| 3 || x&lt;br /&gt;
|-&lt;br /&gt;
| 2 || x || rowspan=&amp;quot;3&amp;quot; | Physical ROM number (0..7)&lt;br /&gt;
|-&lt;br /&gt;
| 1 || x&lt;br /&gt;
|-&lt;br /&gt;
| 0 || x&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ RMR addressing modes&lt;br /&gt;
!Bit 4&lt;br /&gt;
!Bit 3&lt;br /&gt;
!Lower ROM&lt;br /&gt;
![[ASIC|ASIC I/O page]]&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|&amp;amp;0000-&amp;amp;3FFF&lt;br /&gt;
|Disabled&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|1&lt;br /&gt;
|&amp;amp;4000-&amp;amp;7FFF&lt;br /&gt;
|Disabled&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|&amp;amp;8000-&amp;amp;BFFF&lt;br /&gt;
|Disabled&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|1&lt;br /&gt;
|&amp;amp;0000-&amp;amp;3FFF&lt;br /&gt;
|&amp;amp;4000-&amp;amp;7FFF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The physical ROMs are also accessible as upper ROMs by using the [[Upper ROM Bank Number]] port and the RMR register.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Register MMR (RAM memory mapping) ===&lt;br /&gt;
&lt;br /&gt;
This register exists only in CPCs with 128K RAM (like the CPC 6128), or CPCs equipped with [[Standard Memory Expansions]].&lt;br /&gt;
&lt;br /&gt;
Note: In the CPC 6128, the register is a separate [[PAL16L8|PAL chip]] that assists the Gate Array chip.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Bit&lt;br /&gt;
!Value&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 1 || rowspan=&amp;quot;2&amp;quot; | Gate Array MMR register&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 1 &lt;br /&gt;
|-&lt;br /&gt;
| 5 || x || rowspan=&amp;quot;3&amp;quot; |64K bank number (0..7); always 0 on an unexpanded CPC6128, 0-7 on [[Standard Memory Expansions]]&lt;br /&gt;
|-&lt;br /&gt;
| 4 || x&lt;br /&gt;
|-&lt;br /&gt;
| 3 || x&lt;br /&gt;
|-&lt;br /&gt;
| 2 || x || rowspan=&amp;quot;3&amp;quot; | RAM Config (0..7)&lt;br /&gt;
|-&lt;br /&gt;
| 1 || x&lt;br /&gt;
|-&lt;br /&gt;
| 0 || x&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The 3bit RAM Config value is 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:&lt;br /&gt;
&lt;br /&gt;
  -Address-     0      1      2      3      4      5      6      7&lt;br /&gt;
  0000-3FFF   RAM_0  RAM_0  '''RAM_4'''  RAM_0  RAM_0  RAM_0  RAM_0  RAM_0&lt;br /&gt;
  4000-7FFF   RAM_1  RAM_1  '''RAM_5'''  '''RAM_3'''  '''RAM_4'''  '''RAM_5'''  '''RAM_6'''  '''RAM_7'''&lt;br /&gt;
  8000-BFFF   RAM_2  RAM_2  '''RAM_6'''  RAM_2  RAM_2  RAM_2  RAM_2  RAM_2&lt;br /&gt;
  C000-FFFF   RAM_3  '''RAM_7'''  '''RAM_7'''  '''RAM_7'''  RAM_3  RAM_3  RAM_3  RAM_3&lt;br /&gt;
&lt;br /&gt;
The Video RAM is always located in the first 64K, VRAM is in no way affected by this register.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Programming the Gate Array - Examples  ==&lt;br /&gt;
&lt;br /&gt;
Defining the colours, &amp;lt;br&amp;gt;Setting pen 0 to Bright White. &lt;br /&gt;
&amp;lt;pre&amp;gt;LD BC,7F00&amp;amp;nbsp;;Gate Array port&lt;br /&gt;
LD A,%00000000+0&amp;amp;nbsp;;Pen number (and Gate Array function)&lt;br /&gt;
OUT (C),A&amp;amp;nbsp;;Send pen number&lt;br /&gt;
LD A,%01000000+11&amp;amp;nbsp;;Pen colour (and Gate Array function)&lt;br /&gt;
OUT (C),A&amp;amp;nbsp;;Send it&lt;br /&gt;
RET&lt;br /&gt;
&lt;br /&gt;
Setting the mode and ROM configuration, &lt;br /&gt;
Mode 2, upper and lower ROM disabled.&lt;br /&gt;
&lt;br /&gt;
LD BC,7F00&amp;amp;nbsp;;Gate array port&lt;br /&gt;
LD A,%10000000+%00001110&amp;amp;nbsp;;Mode and ROM selection (and Gate Array function)&lt;br /&gt;
OUT (C),A&amp;amp;nbsp;;Send it&lt;br /&gt;
RET&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Misc ===&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
=== Note ===&lt;br /&gt;
&lt;br /&gt;
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 its original colour. This is due to the firmware resetting the colour. When using the firmware, use its routines to select the colour, and the colour will remain.&lt;br /&gt;
&lt;br /&gt;
Example: [For whatever reason, this example does NOT refer to the above firmware stuff]&lt;br /&gt;
&amp;lt;pre&amp;gt;ld bc,7f00+1&amp;amp;nbsp;;Gate array function (set pen)&lt;br /&gt;
;and pen number&lt;br /&gt;
out (c),c&lt;br /&gt;
ld bc,7f00&amp;amp;nbsp;;41 &lt;br /&gt;
;Gate array function (set colour)&lt;br /&gt;
;and colour number&lt;br /&gt;
out (c),c&lt;br /&gt;
ret&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Video memory structure ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!rowspan=2|Graphics Mode&lt;br /&gt;
!colspan=8|VRAM byte&lt;br /&gt;
!colspan=8|Displayed Pixels&lt;br /&gt;
!rowspan=2|Definition&lt;br /&gt;
!rowspan=2|Pixel clock&lt;br /&gt;
!rowspan=2|Default resolution&lt;br /&gt;
|-&lt;br /&gt;
!7&lt;br /&gt;
!6&lt;br /&gt;
!5&lt;br /&gt;
!4&lt;br /&gt;
!3&lt;br /&gt;
!2&lt;br /&gt;
!1&lt;br /&gt;
!0&lt;br /&gt;
!1&lt;br /&gt;
!2&lt;br /&gt;
!3&lt;br /&gt;
!4&lt;br /&gt;
!5&lt;br /&gt;
!6&lt;br /&gt;
!7&lt;br /&gt;
!8&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|A0&lt;br /&gt;
|B0&lt;br /&gt;
|A2&lt;br /&gt;
|B2&lt;br /&gt;
|A1&lt;br /&gt;
|B1&lt;br /&gt;
|A3&lt;br /&gt;
|B3&lt;br /&gt;
|colspan=4 style=&amp;quot;text-align: center;&amp;quot;|A&lt;br /&gt;
|colspan=4 style=&amp;quot;text-align: center;&amp;quot;|B&lt;br /&gt;
|2 pixels in 16 colours&lt;br /&gt;
|4 MHz&lt;br /&gt;
|160x200, 20-column text&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|A0&lt;br /&gt;
|B0&lt;br /&gt;
|C0&lt;br /&gt;
|D0&lt;br /&gt;
|A1&lt;br /&gt;
|B1&lt;br /&gt;
|C1&lt;br /&gt;
|D1&lt;br /&gt;
|colspan=2 style=&amp;quot;text-align: center;&amp;quot;|A&lt;br /&gt;
|colspan=2 style=&amp;quot;text-align: center;&amp;quot;|B&lt;br /&gt;
|colspan=2 style=&amp;quot;text-align: center;&amp;quot;|C&lt;br /&gt;
|colspan=2 style=&amp;quot;text-align: center;&amp;quot;|D&lt;br /&gt;
|4 pixels in 4 colours&lt;br /&gt;
|8 MHz&lt;br /&gt;
|320x200, 40-column text&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|A0&lt;br /&gt;
|B0&lt;br /&gt;
|C0&lt;br /&gt;
|D0&lt;br /&gt;
|E0&lt;br /&gt;
|F0&lt;br /&gt;
|G0&lt;br /&gt;
|H0&lt;br /&gt;
|A&lt;br /&gt;
|B&lt;br /&gt;
|C&lt;br /&gt;
|D&lt;br /&gt;
|E&lt;br /&gt;
|F&lt;br /&gt;
|G&lt;br /&gt;
|H&lt;br /&gt;
|8 pixels in 2 colours&lt;br /&gt;
|16 MHz&lt;br /&gt;
|640x200, 80-column text&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|A0&lt;br /&gt;
|B0&lt;br /&gt;
|x&lt;br /&gt;
|x&lt;br /&gt;
|A1&lt;br /&gt;
|B1&lt;br /&gt;
|x&lt;br /&gt;
|x&lt;br /&gt;
|colspan=4 style=&amp;quot;text-align: center;&amp;quot;|A&lt;br /&gt;
|colspan=4 style=&amp;quot;text-align: center;&amp;quot;|B&lt;br /&gt;
|2 pixels in 4 colours&lt;br /&gt;
|4 MHz&lt;br /&gt;
|160x200, 20-column text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Split rasters ==&lt;br /&gt;
&lt;br /&gt;
On the CPC, split rasters occur halfway (after the 8th mode2 pixel) through the rendering of a CRTC character.&lt;br /&gt;
&lt;br /&gt;
On Amstrad Plus, split rasters occur quarter of the way (after the 4th mode2 pixel) through the rendering of a CRTC character.&lt;br /&gt;
&lt;br /&gt;
To easily make split rasters compatible with both the CPC and the Plus machines, one can use the ASIC soft-scroll control register (SSCR) to finely adjust the horizontal position of the graphics.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Palette R,G,B definitions ==&lt;br /&gt;
&lt;br /&gt;
There 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-colour, and on/full-colour. &lt;br /&gt;
&lt;br /&gt;
To display a CPC image you will need to use a analogue monitor with a composite sync.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Palette sorted by Firmware Colour Numbers ===&lt;br /&gt;
&lt;br /&gt;
The firmware colour palette is sorted by luminance value.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!Firmware Number&lt;br /&gt;
!Hardware Number&lt;br /&gt;
!Colour Name&lt;br /&gt;
!R %&lt;br /&gt;
!G %&lt;br /&gt;
!B %&lt;br /&gt;
!ASIC&lt;br /&gt;
!Colour&lt;br /&gt;
|-&lt;br /&gt;
| 0|| 54h          ||Black          ||  0||  0||  0|| #000||bgcolor=&amp;quot;#000000&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| 1|| 44h (or 50h) ||Blue           ||  0||  0|| 50|| #006||bgcolor=&amp;quot;#000080&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| 2|| 55h          ||Bright Blue    ||  0||  0||100|| #00F||bgcolor=&amp;quot;#0000ff&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| 3|| 5Ch          ||Red            || 50||  0||  0|| #600||bgcolor=&amp;quot;#800000&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| 4|| 58h          ||Magenta        || 50||  0|| 50|| #606||bgcolor=&amp;quot;#800080&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| 5|| 5Dh          ||Mauve          || 50||  0||100|| #60F||bgcolor=&amp;quot;#8000ff&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| 6|| 4Ch          ||Bright Red     ||100||  0||  0|| #F00||bgcolor=&amp;quot;#ff0000&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| 7|| 45h (or 48h) ||Purple         ||100||  0|| 50|| #F06||bgcolor=&amp;quot;#ff0080&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| 8|| 4Dh          ||Bright Magenta ||100||  0||100|| #F0F||bgcolor=&amp;quot;#ff00ff&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| 9|| 56h          ||Green          ||  0|| 50||  0|| #060||bgcolor=&amp;quot;#008000&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|10|| 46h          ||Cyan           ||  0|| 50|| 50|| #066||bgcolor=&amp;quot;#008080&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|11|| 57h          ||Sky Blue       ||  0|| 50||100|| #06F||bgcolor=&amp;quot;#0080ff&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|12|| 5Eh          ||Yellow         || 50|| 50||  0|| #660||bgcolor=&amp;quot;#808000&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|13|| 40h (or 41h) ||White          || 50|| 50|| 50||#666||bgcolor=&amp;quot;#808080&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|14|| 5Fh          ||Pastel Blue    || 50|| 50||100|| #66F||bgcolor=&amp;quot;#8080ff&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|15|| 4Eh          ||Orange         ||100|| 50||  0|| #F60|| bgcolor=&amp;quot;#ff8000&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|16|| 47h          ||Pink           ||100|| 50|| 50|| #F66||bgcolor=&amp;quot;#ff8080&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|17|| 4Fh          ||Pastel Magenta ||100|| 50||100|| #F6F||bgcolor=&amp;quot;#ff80ff&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|18|| 52h          ||Bright Green   ||  0||100||  0|| #0F0||bgcolor=&amp;quot;#00ff00&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|19|| 42h (or 51h) ||Sea Green      ||  0||100|| 50|| #0F6||bgcolor=&amp;quot;#00ff80&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|20|| 53h          ||Bright Cyan    ||  0||100||100|| #0FF||bgcolor=&amp;quot;#00ffff&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|21|| 5Ah          ||Lime           || 50||100||  0|| #6F0||bgcolor=&amp;quot;#80ff00&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|22|| 59h          ||Pastel Green   || 50||100|| 50|| #6F6||bgcolor=&amp;quot;#80ff80&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|23|| 5Bh          ||Pastel Cyan    || 50||100||100|| #6FF||bgcolor=&amp;quot;#80ffff&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|24|| 4Ah          ||Bright Yellow  ||100||100||  0|| #FF0||bgcolor=&amp;quot;#ffff00&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|25|| 43h (or 49h) ||Pastel Yellow  ||100||100|| 50||#FF6||bgcolor=&amp;quot;#ffff80&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|26|| 4Bh          ||Bright White   ||100||100||100|| #FFF||bgcolor=&amp;quot;#ffffff&amp;quot;|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note: We can observe that the official Amstrad names of some colours are a bit silly: &amp;quot;red&amp;quot; is in fact brown, &amp;quot;yellow&amp;quot; is in fact khaki and &amp;quot;white&amp;quot; is in fact grey.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Amstrad Colour Names ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Cpc 6128 master colour chat.jpg|Master colour chart&lt;br /&gt;
Cpc 6128 farbtabelle.jpg|Farbtabelle&lt;br /&gt;
Cpc 6128 palette des couleurs.jpg|Palette des couleurs&lt;br /&gt;
Cpc 6128 tabla de colores.jpg|Tabla de colores&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Palette sorted by Hardware Colour Numbers ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Hardware Number&lt;br /&gt;
!Firmware Number&lt;br /&gt;
!R %&lt;br /&gt;
!G %&lt;br /&gt;
!B %&lt;br /&gt;
!ASIC&lt;br /&gt;
!Colour&lt;br /&gt;
!Colour Name&lt;br /&gt;
!German Name&lt;br /&gt;
!French Name&lt;br /&gt;
!Spanish Name&lt;br /&gt;
|-&lt;br /&gt;
|  0 (40h) || 13   || 50|| 50|| 50|| #666|| bgcolor=&amp;quot;#808080&amp;quot; | || White         || Weiß            || Blanc           || Blanco&lt;br /&gt;
|-&lt;br /&gt;
|  1 (41h) || (13) || 50|| 50|| 50|| #666|| bgcolor=&amp;quot;#808080&amp;quot; | || White         || Weiß            || Blanc           || Blanco&lt;br /&gt;
|-&lt;br /&gt;
|  2 (42h) || 19   ||  0||100|| 50|| #0F6|| bgcolor=&amp;quot;#00ff80&amp;quot; | || Sea Green     || Seegrün         || Vert marin      || Verde marino&lt;br /&gt;
|-&lt;br /&gt;
|  3 (43h) || 25   ||100||100|| 50|| #FF6|| bgcolor=&amp;quot;#ffff80&amp;quot; | || Pastel Yellow || Pastellgelb     || Jaune pastel    || Amarillo pastel&lt;br /&gt;
|-&lt;br /&gt;
|  4 (44h) || 1    ||  0||  0|| 50|| #006|| bgcolor=&amp;quot;#000080&amp;quot; | || Blue          || Blau            || Bleu            || Azul&lt;br /&gt;
|-&lt;br /&gt;
|  5 (45h) || 7    ||100||  0|| 50|| #F06|| bgcolor=&amp;quot;#ff0080&amp;quot; | || Purple        || Purpur          || Pourpre         || Púrpura&lt;br /&gt;
|-&lt;br /&gt;
|  6 (46h) || 10   ||  0|| 50|| 50|| #066|| bgcolor=&amp;quot;#008080&amp;quot; | || Cyan          || Blaugrün        || Turquoise       || Ciano&lt;br /&gt;
|-&lt;br /&gt;
|  7 (47h) || 16   ||100|| 50|| 50|| #F66|| bgcolor=&amp;quot;#ff8080&amp;quot; | || Pink          || Rosa            || Rose            || Rosa&lt;br /&gt;
|-&lt;br /&gt;
|  8 (48h) || (7)  ||100||  0|| 50|| #F06|| bgcolor=&amp;quot;#ff0080&amp;quot; | || Purple        || Purpur          || Pourpre         || Púrpura&lt;br /&gt;
|-&lt;br /&gt;
|  9 (49h) || (25) ||100||100|| 50|| #FF6|| bgcolor=&amp;quot;#ffff80&amp;quot; | || Pastel Yellow || Pastellgelb     || Jaune pastel    || Amarillo pastel&lt;br /&gt;
|-&lt;br /&gt;
| 10 (4Ah) || 24   ||100||100||  0|| #FF0|| bgcolor=&amp;quot;#ffff00&amp;quot; | || Bright Yellow || Hellgelb        || Jaune vif       || Amarillo brillante&lt;br /&gt;
|-&lt;br /&gt;
| 11 (4Bh) || 26   ||100||100||100|| #FFF|| bgcolor=&amp;quot;#ffffff&amp;quot; | || Bright White  || Leuchtendweiß   || Blanc brillant  || Blanco brillante&lt;br /&gt;
|-&lt;br /&gt;
| 12 (4Ch) || 6    ||100||  0||  0|| #F00|| bgcolor=&amp;quot;#ff0000&amp;quot; | || Bright Red    || Hellrot         || Rouge vif       || Rojo brillante&lt;br /&gt;
|-&lt;br /&gt;
| 13 (4Dh) || 8    ||100||  0||100|| #F0F|| bgcolor=&amp;quot;#ff00ff&amp;quot; | || Bright Magenta|| helles Magenta  || Magenta vif     || Magenta brillante&lt;br /&gt;
|-&lt;br /&gt;
| 14 (4Eh) || 15   ||100|| 50||  0|| #F60|| bgcolor=&amp;quot;#ff8000&amp;quot; | || Orange        || Orange          || Orange          || Naranja&lt;br /&gt;
|-&lt;br /&gt;
| 15 (4Fh) || 17   ||100|| 50||100|| #F6F|| bgcolor=&amp;quot;#ff80ff&amp;quot; | || Pastel Magenta|| Pastell-magenta || Magenta pastel  || Magenta pastel&lt;br /&gt;
|-&lt;br /&gt;
| 16 (50h) || (1)  ||  0||  0|| 50|| #006|| bgcolor=&amp;quot;#000080&amp;quot; | || Blue          || Blau            || Bleu            || Azul&lt;br /&gt;
|-&lt;br /&gt;
| 17 (51h) || (19) ||  0||100|| 50|| #0F6|| bgcolor=&amp;quot;#00ff80&amp;quot; | || Sea Green     || Seegrün         || Vert marin      || Verde marino&lt;br /&gt;
|-&lt;br /&gt;
| 18 (52h) || 18   ||  0||100||  0|| #0F0|| bgcolor=&amp;quot;#00ff00&amp;quot; | || Bright Green  || Hellgrün        || Vert vif        || Verde brillante&lt;br /&gt;
|-&lt;br /&gt;
| 19 (53h) || 20   ||  0||100||100|| #0FF|| bgcolor=&amp;quot;#00ffff&amp;quot; | || Bright Cyan   || helles Blaugrün || Turquoise vif   || Ciano brillante&lt;br /&gt;
|-&lt;br /&gt;
| 20 (54h) || 0    ||  0||  0||  0|| #000|| bgcolor=&amp;quot;#000000&amp;quot; | || Black         || Schwarz         || Noir            || Negro&lt;br /&gt;
|-&lt;br /&gt;
| 21 (55h) || 2    ||  0||  0||100|| #00F|| bgcolor=&amp;quot;#0000ff&amp;quot; | || Bright Blue   || Hellblau        || Bleu vif        || Azul brillante&lt;br /&gt;
|-&lt;br /&gt;
| 22 (56h) || 9    ||  0|| 50||  0|| #060|| bgcolor=&amp;quot;#008000&amp;quot; | || Green         || Grün            || Vert            || Verde&lt;br /&gt;
|-&lt;br /&gt;
| 23 (57h) || 11   ||  0|| 50||100|| #06F|| bgcolor=&amp;quot;#0080ff&amp;quot; | || Sky Blue      || Himmelblau      || Bleu ciel       || Azul cielo&lt;br /&gt;
|-&lt;br /&gt;
| 24 (58h) || 4    || 50||  0|| 50|| #606|| bgcolor=&amp;quot;#800080&amp;quot; | || Magenta       || Magenta         || Magenta         || Magenta&lt;br /&gt;
|-&lt;br /&gt;
| 25 (59h) || 22   || 50||100|| 50|| #6F6|| bgcolor=&amp;quot;#80ff80&amp;quot; | || Pastel Green  || Pastellgrün     || Vert pastel     || Verde pastel&lt;br /&gt;
|-&lt;br /&gt;
| 26 (5Ah) || 21   || 50||100||  0|| #6F0|| bgcolor=&amp;quot;#80ff00&amp;quot; | || Lime          || Limonengrün     || Vert citron     || Verde lima&lt;br /&gt;
|-&lt;br /&gt;
| 27 (5Bh) || 23   || 50||100||100|| #6FF|| bgcolor=&amp;quot;#80ffff&amp;quot; | || Pastel Cyan   || Pastell-blaugrün|| Turquoise pastel|| Ciano pastel&lt;br /&gt;
|-&lt;br /&gt;
| 28 (5Ch) || 3    || 50||  0||  0|| #600|| bgcolor=&amp;quot;#800000&amp;quot; | || Red           || Rot             || Rouge           || Rojo&lt;br /&gt;
|-&lt;br /&gt;
| 29 (5Dh) || 5    || 50||  0||100|| #60F|| bgcolor=&amp;quot;#8000ff&amp;quot; | || Mauve         || Hellviolett     || Mauve           || Malva&lt;br /&gt;
|-&lt;br /&gt;
| 30 (5Eh) || 12   || 50|| 50||  0|| #660|| bgcolor=&amp;quot;#808000&amp;quot; | || Yellow        || Gelb            || Jaune           || Amarillo&lt;br /&gt;
|-&lt;br /&gt;
| 31 (5Fh) || 14   || 50|| 50||100|| #66F|| bgcolor=&amp;quot;#8080ff&amp;quot; | || Pastel Blue   || Pastellblau     || Bleu pastel     || Azul pastel&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Intensities ===&lt;br /&gt;
&lt;br /&gt;
The 0%, 50%, and 100% values in the above tables are &amp;quot;should-be&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
On an actual Amstrad CPC, the half-intensity colour signal is measured to be closer to 40% rather than the expected 50%. This was verified by [[Grim]] and independently confirmed by [[Nocash]]. [https://www.grimware.org/doku.php/documentations/devices/gatearray#inkr Source]&lt;br /&gt;
* [[CPC Palette]] - some more details&lt;br /&gt;
&lt;br /&gt;
This explains why the Amstrad engineers used the following values to adapt the old colour palette to the new 12-bit palette on the Amstrad Plus:&lt;br /&gt;
* 0% became #0&lt;br /&gt;
* 50% became #6. They specifically chose #6 for the 50% value instead of the expected #7 or #8, to better match the real Amstrad CPC palette.&lt;br /&gt;
* 100% became #F&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Green Screen Colours ===&lt;br /&gt;
&lt;br /&gt;
On a green screen, where all colours are shades of unsaturated green, the firmware colours are in order of increasing intensity. Black is darkest green, bright white is brightest green, and firmware colour 13 is a medium green.&lt;br /&gt;
&lt;br /&gt;
The luminance (Y) is not exactly correlated to the actual luminance of colour images broadcast in RGB. Amstrad preferred to propose a completely different image system, not comparable to a conversion to monochrome, which would have limited the number of brightness levels to 21 (for example, colours 9 and 6 would have had the same luminance).&lt;br /&gt;
&lt;br /&gt;
They opted for a table of 27 linear brightness steps. They assigned values of 1 (1kΩ) for blue, 3 (3.3kΩ) for red, and 9 (10kΩ) for green.&lt;br /&gt;
&lt;br /&gt;
==== To calculate the luminance value ====&lt;br /&gt;
&lt;br /&gt;
'''Red''' &lt;br /&gt;
&lt;br /&gt;
*0% =&amp;amp;gt; do not add anything &lt;br /&gt;
*50% =&amp;amp;gt; add 3 &lt;br /&gt;
*100% =&amp;amp;gt; add 6 &lt;br /&gt;
&lt;br /&gt;
'''Green''' &lt;br /&gt;
&lt;br /&gt;
*0% =&amp;amp;gt; do not add anything &lt;br /&gt;
*50% =&amp;amp;gt; add 9 &lt;br /&gt;
*100% =&amp;amp;gt; add 18 &lt;br /&gt;
&lt;br /&gt;
'''Blue''' &lt;br /&gt;
&lt;br /&gt;
*0% =&amp;amp;gt; do not add anything &lt;br /&gt;
*50% =&amp;amp;gt; add 1 &lt;br /&gt;
*100% =&amp;amp;gt; add 2 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pictures ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:40010_am2_metal.jpg|40010 GA Metal Layer&lt;br /&gt;
Image:40010_am2_acid.jpg|40010 GA with Metal Layer removed&lt;br /&gt;
Image:40226_am4_metal.jpg|40226 PreASIC Metal Layer&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Ga.pinout.40007.png]] [[File:Ga.pinout.40008.40010.png]]&lt;br /&gt;
&lt;br /&gt;
Note: Some CPC motherboards can accommodate both types of Gate Array pinouts. [https://thecheshirec.at/2024/10/06/il-existe-une-carte-multi-gate-array-et-cest-amstrad-qui-la-faite/ Source]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
*[https://bread80.com/2021/06/03/understanding-the-amstrad-cpc-video-ram-and-gate-array-subsystem/ Electronic signals analysis of the Gate Array by Bread80]&lt;br /&gt;
* [https://shaker.logonsystem.eu/ACCC1.8-EN.pdf Gate Array documentation in Amstrad CRTC Compendium]&lt;br /&gt;
* [https://www.grimware.org/doku.php/documentations/devices/gatearray Gate Array documentation from Grimware]&lt;br /&gt;
* [http://quasar.cpcscene.net/doku.php?id=assem:gate_array Quasar Gate Array documentation (in french)]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*[[Gate Array and ASIC Pin-Outs]]&lt;br /&gt;
*[[PAL16L8]] : for RAM arrangement&lt;br /&gt;
*[[ASIC]] : for Plus users&lt;br /&gt;
&lt;br /&gt;
*[[CRTC]] : the other video stuff&lt;br /&gt;
*[[Synchronising with the CRTC and display]] : technical details on the relationship between Gate Array and CRTC.&lt;br /&gt;
&lt;br /&gt;
*[[Video modes]] : for other informations on colours and pixels.&lt;br /&gt;
&lt;br /&gt;
*[[Media:40010-simplified V03.pdf]] [https://www.cpcwiki.eu/forum/amstrad-cpc-hardware/gate-array-decapped!/msg170713/#msg170713 Forum thread] Gate Array schematics - reverse engineered by Gerald&lt;br /&gt;
&lt;br /&gt;
[[Category:Hardware]][[Category:Programming]][[Category:Datasheet]][[Category:Graphic]][[Category:CPC Internal Components]][[Category:Electronic Component]]&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Longshot&amp;diff=126240</id>
		<title>Longshot</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Longshot&amp;diff=126240"/>
				<updated>2025-05-22T20:13:44Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: GFY&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Longshot1996.jpg|thumb|Longshot 1996]]&lt;br /&gt;
&lt;br /&gt;
'''Longshot''' was a demo coder, founder and leader of the famous [[Logon System]] demo group. A pseudonym for Serge Querné, he was initially based in southern France but later moved to Paris.&lt;br /&gt;
&lt;br /&gt;
== Biography ==&lt;br /&gt;
&lt;br /&gt;
Initially going under the pseudonym 'Logon 1' (the name Logon he explained in a scrolltext as &amp;quot;a Belgian idea&amp;quot;), he released a series of single-part demos, each of them showcasing a new technique he had learned ‒ or, in many cases, discovered. These included raster bars, overscan, and split modes in the earliest productions. The first demo was coded while he was working at [http://fr.wikipedia.org/wiki/Ubisoft Ubi Soft]'s &amp;quot;castle&amp;quot; headquarters. Though some of these demos seem fairly simple in retrospect, at the time, Serge's demo-coding skill was only equalled by perhaps [[Fefesse]] and [[NWC]].&lt;br /&gt;
&lt;br /&gt;
A stepchange came with the [[Longshot Demo]], the first in which he adopted his new pseudonym. This included hardware splitting and combined more effects on screen at once. [[Revolog]] (or Revolution) followed in a similar vein but was a level more accomplished again. At the same time, Longshot participated in the [[Amazing Demo]] with [[Naminu]] and [[P007]] of [[Malibu Crackers]].&lt;br /&gt;
&lt;br /&gt;
[[Naminu]] would soon become one of the members of the new, expanded [[Logon System]]. The &amp;quot;supergroup&amp;quot;'s first release was the stunning [[The Demo]], where Longshot contributed three parts but, perhaps more significantly, oversaw the polished, coherent design that was unlike any CPC megademo previously released.&lt;br /&gt;
&lt;br /&gt;
The [[Euromeeting Demo]] would turn out to be his last demo release, but a further innovation was the [[B-ASIC]] utility which enabled Plus programmers to use the new features of their machines from BASIC. Longshot went on to the PC in turn, but has recently participated in French CPC forums such as [http://phenixinformatique.free.fr/ Phenix Informatique] once again. His [http://www.logonsystem.fr/ homepage] contains screenshots from the Logon era, a brief history, and downloads of his personal disc collection.&lt;br /&gt;
&lt;br /&gt;
Though most respected for his coding skills and innovations, Serge's main achievement was perhaps the creation and fostering of the Logon System supergroup, the like of which has not been seen since.&lt;br /&gt;
&lt;br /&gt;
Longshot has written technical articles in some columns of the French magazine [[Amstrad Cent Pour Cent]].&lt;br /&gt;
&lt;br /&gt;
== Demos ==&lt;br /&gt;
&lt;br /&gt;
* [[Logon Demo 1]]&lt;br /&gt;
* [[Logon Demo 2]]&lt;br /&gt;
* [[Logon Demo 3]]&lt;br /&gt;
* [[Logon Demo 5]]&lt;br /&gt;
* [[Longshot Demo]]&lt;br /&gt;
* [[Revolog]]&lt;br /&gt;
* [[Amazing Demo]]&lt;br /&gt;
* [[The Demo]]&lt;br /&gt;
* [[Euromeeting Demo]]&lt;br /&gt;
* [[DSC 4]]&lt;br /&gt;
&lt;br /&gt;
== Controversy ==&lt;br /&gt;
&lt;br /&gt;
'''The [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=19308 DSC 4] demo, produced by Longshot / Logon System, is suspected of infringing copyright protected material of the commercial company [https://www.liquideo.com/fr/e-liquides/1187-e-liquide-dr-hofmann.html Liquideo]'''.&lt;br /&gt;
&lt;br /&gt;
[[File:DSC4 Dr Hofmann.png|400px]] [[File:Liquideo Dr Hofmann.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
== Other productions ==&lt;br /&gt;
&lt;br /&gt;
* [[Atlantis]] &lt;br /&gt;
* [[B-ASIC]]&lt;br /&gt;
* [[AntiMultiface]]&lt;br /&gt;
* [[MagicDOS]]&lt;br /&gt;
&lt;br /&gt;
== Groups ==&lt;br /&gt;
&lt;br /&gt;
* [[Logon System]]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.logonsystem.eu/ Longshot's homepage]&lt;br /&gt;
* [http://norecess.cpcscene.net/interview-longshot.html Interview with Longshot by NoRecess]&lt;br /&gt;
&lt;br /&gt;
[[Category:CPC scene members]]&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=File:Liquideo_Dr_Hofmann.jpg&amp;diff=126239</id>
		<title>File:Liquideo Dr Hofmann.jpg</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=File:Liquideo_Dr_Hofmann.jpg&amp;diff=126239"/>
				<updated>2025-05-22T20:07:11Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=File:DSC4_Dr_Hofmann.png&amp;diff=126238</id>
		<title>File:DSC4 Dr Hofmann.png</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=File:DSC4_Dr_Hofmann.png&amp;diff=126238"/>
				<updated>2025-05-22T20:06:59Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Emulator_evaluation_tools&amp;diff=126197</id>
		<title>Emulator evaluation tools</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Emulator_evaluation_tools&amp;diff=126197"/>
				<updated>2025-05-20T12:14:01Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: /* Diagnostics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;While it is easy to create an approximate emulation, the [[Amstrad CPC]] and Plus are very difficult to emulate accurately.&lt;br /&gt;
&lt;br /&gt;
Each chip has its own challenges:&lt;br /&gt;
*[[Z80]] is a bloated architecture, with lots of special cases and complex bus logic. The difference with the lean [[GBZ80]] and [[MOS 6502|6502]] is striking.&lt;br /&gt;
*[[CRTC]] has a character-based addressing logic, many incompatible chip implementations, and requires accurate VDU emulation too.&lt;br /&gt;
*[[Gate Array]] has a weird interrupt system and adds an unnecessary layer of complexity to sync signals.&lt;br /&gt;
*[[ASIC]] is buggy and lacks precise documentation.&lt;br /&gt;
*[[PAL16L8|Memory management]] is overly complex and limited.&lt;br /&gt;
*[[8255|PPI]] has more functionalities than what the CPC needs.&lt;br /&gt;
*[[PSG]] cannot be accessed directly as it is behind the PPI. It is simple to emulate though, but it cannot do much.&lt;br /&gt;
*[[FDC|765 FDC]] is bloated with 40 pins, compared to 28 pins for the WD1772 FDC used in the [[Atari ST]]. It is also a black box internally, while the [[C64]] uses a regular 6502 (with its own ROM and RAM) as FDC.&lt;br /&gt;
&lt;br /&gt;
And unlike the [[ZX Spectrum]] and the [[MSX]], on the Amstrad CPC and Plus things often go catastrophically wrong if timings are not accurately emulated.&lt;br /&gt;
&lt;br /&gt;
Thankfully, many tools and tests exist to help emulation authors.&lt;br /&gt;
&lt;br /&gt;
= Quick evaluation =&lt;br /&gt;
*[https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7529 From Scratch demo] with reference images (CRTC 1): [[Media:From Scratch logo.png]] [[Media:From Scratch tetris.png]] [[Media:From Scratch ovl.png]]&lt;br /&gt;
*[https://www.cpc-power.com/index.php?page=detail&amp;amp;num=19308 DSC4 v2 demo] with reference images (CRTC 1): [[Media:DSC4 reference1.png]] [[Media:DSC4 reference2.png]] [https://blog.logonsystem.eu/vomitiks-5-sink-mode/ Technical explanation]&lt;br /&gt;
*[https://www.cpc-power.com/index.php?page=detail&amp;amp;num=8041 Other World 3 demo]  with reference image (CRTC 0/1): [[Media:Other World 3.png]]&lt;br /&gt;
*[https://www.cpc-power.com/index.php?page=detail&amp;amp;num=9029 BSC7 Interlace demo] with reference image (CRTC 0/2/3/4): [[Media:BSC7 reference.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Categories =&lt;br /&gt;
&lt;br /&gt;
== Z80 CPU ==&lt;br /&gt;
*🔥[https://www.cpc-power.com/index.php?page=database&amp;amp;lemot=raxoft Raxoft tests] (CPC port of [https://github.com/raxoft/z80test z80test]) [https://github.com/redcode/Z80/wiki/Tests Redcode Z80 tests list with expected results] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=19611 Z80 XCF Flavor] [https://github.com/skiselev/z80-tests z80type] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=6346 ZEX] Z80 CPU instruction set exercisers&lt;br /&gt;
*[https://www.cpc-power.com/index.php?page=detail&amp;amp;num=298 Arkanoid] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=460 Boulder Dash] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1006 The Great Escape] Using Z80 Interrupt Mode 2&lt;br /&gt;
*[https://www.cpc-power.com/index.php?page=detail&amp;amp;num=2280 Trailblazer (using HALT)] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=427 L'anneau de Zengara (using Z80 register R)] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1299 Light Corridor (Z80 useless instruction prefixes)] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=735 Dogsbody (accessing non-standard I/O ports)] [https://youtu.be/UVNUD9qRbSI Pinball Dreams (Z80 NMOS only)]&lt;br /&gt;
*[https://zxe.io/software/Z80/documentation/latest/thanks.html Weird Z80 behaviour] [https://www.cpc-power.com/cpcarchives/index.php?page=articles&amp;amp;num=48 I/O port allocation] [https://www.grimware.org/doku.php/documentations/devices/io.devices I/O access] Technical documentation&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Diagnostics ==&lt;br /&gt;
*[https://auamstrad.es/software/aua-utilidades/ AUA Utilidades] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=5113 Amstest] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=17932 Amstrad Diagnostics] [https://www.cpcwiki.eu/forum/amstrad-cpc-hardware/amstrad-diagnostics-rom/msg243665/] [https://www.cpcwiki.eu/forum/software-related/8255-manufacturer-detection/] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=6545 STS SysInfo] [https://www.cpc-power.com/index.php?page=database&amp;amp;r1=1&amp;amp;lemot=test%20crtc%20v Test CRTC type] [http://quasar.cpcscene.net/doku.php?id=coding:test_crtc] [http://cpc.sylvestre.org/technique/technique_identifier_crtc.html Identifying CRTC visually] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=11446 Basic Program Status Window] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=12584 Version du Firmware Basic]&lt;br /&gt;
*[http://www.symbos.de/appinfo.htm?00061 SyMon] [http://www.symbos.de/appinfo.htm?00047 HexE] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=6987 RAM Expansion Test] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=14833 MemTest] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=14834 RAM Test CRTC4] [https://www.cpcwiki.eu/forum/technical-support/test-ram-de-mcleod-ideafix/ Test RAM de McLeod Ideafix] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=15739 RAM Check] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=13386 Testprogram For All ERAM] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=16010 Test RAM Basic] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=19185 Xenon 2] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=12188 Take On Me] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=14339 Trololo Experiments] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=19406 Still The One] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=16084 Post Scriptum] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=18658 Onescreen Colonies #2 256K] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=15985 A tribute to the sisters] [https://amstrad-ggp.itch.io/mightysf Mighty Steel Fighters] [https://cpcrulez.fr/info-chany-enhanced_edition.htm Chany 512K cracks] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=14814 Anti-Multiface] [https://www.cpc-power.com/cpcarchives/index.php?page=articles&amp;amp;num=151 Expanded RAM software list] RAM exercisers&lt;br /&gt;
*[https://www.cpc-power.com/index.php?page=detail&amp;amp;num=15975 FutureOS] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=4174 CP/M Plus] [https://www.cpcwiki.eu/forum/software-related/what-software-requires-c3-ram-banking/msg246339/#msg246339 Fuzix OS] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=10030 Phortem] [https://www.cpcwiki.eu/forum/software-related/what-software-requires-c3-ram-banking/msg246582/#msg246582 PhX] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=19308 DSC4] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7270 Pac-Man Emulator] Problematic [[PAL16L8|RAM mode &amp;amp;C3]] on CPC464/664&lt;br /&gt;
*🔥[http://www.cpctech.org.uk/test.zip Kevin Thacker's &amp;quot;Acid tests&amp;quot; suite] [https://cpctech.cpcwiki.de/download/test.zip Older version] [https://www.cpcwiki.eu/forum/emulators/amstrad-cpc-'acid'-test/ Forum thread] [http://ace.cpcscene.net/tests:arnold_test_suite Tests results in ACE] Collection of tests which are used to verify emulators operation against real CPC, Plus and expansions&lt;br /&gt;
*🔥[http://www.winape.net/downloads.jsp Richard Wilson's Plus Test suite] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=15242] CPC and CPC+ Emulator test suite (including Instruction and Interrupt timing tests)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Amstrad Plus ==&lt;br /&gt;
*[https://www.cpc-power.com/index.php?page=detail&amp;amp;num=9627 Arnold 5 Diagnostic] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=8838 Cartridge Software Demonstrator] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=8308 4096 Colors Preview] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=18998 4096K tester] [[File:Roudoudou CPR tests.zip]] [https://www.cpcwiki.eu/forum/emulators/amstrad-cpc-'acid'-test/75/] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=3575 No Exit (uninitialised stack pointer)] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=3580 Pang (RMR2)] [https://www.pouet.net/prod.php?which=103929 3DManiaks 2 (512K)] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=3576 Tennis Cup 2 (analogue joystick)] Plus testing tools&lt;br /&gt;
*[https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7530 Delirium Tremens] [https://www.youtube.com/watch?v=yJcBsQwMzuw Delirium Tremens running on real hardware] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=18016 Bulles] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=9169 Funerapolis] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7532 X-mas 2008] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=19239 USS Cygnus 192] To test hardware sprites&lt;br /&gt;
*[https://www.cpc-power.com/index.php?page=detail&amp;amp;num=8874 6128 Plus DMA] [https://cpcrulez.fr/demostestDO_fairy-breakpoint_2010.htm Fairy] [https://soundtrackerdma.cpcscene.net/doku.php?id=en:download Soundtracker DMA] To test DMA sound&lt;br /&gt;
*[https://www.cpc-power.com/index.php?page=detail&amp;amp;num=14940 CRTC3] To test RAM expansion compatibility with ASIC [https://pulkomandy.github.io/shinra.github.io/gemini.html Source]&lt;br /&gt;
*[https://cpctech.cpcwiki.de/docs/cpcplus.html Arnoldemu] [http://tj.gpa.free.fr/html/coding/cpcplus.htm T&amp;amp;J] [http://cpc.sylvestre.org/articles/articles_amstrad_plus.html Sylvestre] [https://cpcrulez.fr/coding_cpcplus48.htm Longshot] [https://cpcrulez.fr/coding_cpcplus47.htm] [http://quasar.cpcscene.net/doku.php?id=dossier:plus Offset] [http://quasar.cpcscene.net/doku.php?id=assem:asic] [[Plus Vectored Interrupt Bug]] Plus hardware bugs documented&lt;br /&gt;
*[https://www.cpc-power.com/index.php?page=detail&amp;amp;num=89 L'Aigle d'Or le Retour] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=500 Bumpy's Arcade Fantasy] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=384 Kick Boxing Gold] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=9528 D.Day] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=2098 Striker in the Crypts of Trogan] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1682 Prehistorik II] [https://www.cpc-power.com/index.php?page=database&amp;amp;lemot=Demo%20with%20Plus%20features&amp;amp;r1=0&amp;amp;r2=1&amp;amp;r3=0&amp;amp;r4=1 CPC Demos with Plus features] To test Amstrad Plus enhancement of CPC software&lt;br /&gt;
*[https://www.cpc-power.com/index.php?page=database&amp;amp;cpcplus=1&amp;amp;cats=100 Plus Games] [https://www.cpc-power.com/index.php?page=database&amp;amp;lemot=Demo%20for%20Plus%20only&amp;amp;r1=0&amp;amp;r2=1&amp;amp;r3=0&amp;amp;r4=1 Demos for Plus only] Search filters to verify the entire Plus software library&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Colorimetry ==&lt;br /&gt;
*[https://www.cpc-power.com/index.php?page=detail&amp;amp;num=18093 CPC DiAG] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=11826 Raster] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=12282 Toutes les couleurs du CPC] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=4793 Couleurs] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=15519 Les split-rasters] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=16722 Mir'Color] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=14259 Test Interlace Color] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=10757 Infinite Colours] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=11500 Mode 1 Tramage et Choix des Couleurs] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=12534 FED] Colour calibration&lt;br /&gt;
*[https://www.grimware.org/doku.php/documentations/devices/gatearray Minor difference in colorimetry between CPC and Plus] On CPC (not Plus!), green half-intensity is significantly higher than red and blue half-intensities&lt;br /&gt;
*Major difference in colorimetry between the real Amstrad displays and emulators display. CPC DiAG shows clearly why, by demonstrating the weak response of Amstrad monitors to the Red component:&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Border 8 - real CPC display.png|Border 8 on real CPC&lt;br /&gt;
Border 8 - real Plus display.png|Border 8 on real Plus&lt;br /&gt;
Border 8 - emulator display.png|Border 8 on emulators&lt;br /&gt;
Palette - real CPC.png|Palette on real CPC&lt;br /&gt;
Palette - real Plus.png|Palette on real Plus&lt;br /&gt;
Palette - emulator.png|Palette on emulators&lt;br /&gt;
True CTM colorimetry.png|Still The One on real CPC&lt;br /&gt;
CTM Emulator Shader colorimetry.png|Still The One on emulators&lt;br /&gt;
Cpc diag real.jpg|CPC DiAG on real Plus&lt;br /&gt;
Cpc diag emulator.png|CPC DiAG on emulators&lt;br /&gt;
Scanlines CRT green screen.png|Scanlines on GT65&lt;br /&gt;
CTM Slot Mask.jpg|Slot mask on CTM&lt;br /&gt;
CRT mask types en-de.svg|CRT mask types&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
* CPC DiAG also shows that the primary colours themselves are a bit different. Blue is more vivid and Green is less fluorescent on Amstrad displays.&lt;br /&gt;
* Colours are less saturated and black is not as profound on CRT monitors than they are on modern displays.&lt;br /&gt;
* On CRT displays, bright pixels will spill on their neighbours while dark pixels will get eaten by their neighbours (ie. bright pixels are bigger than dark pixels on CRT displays), affecting dithered colours. This effect is absent on LCD displays.&lt;br /&gt;
* The usual scanline effect of CRT monitors is barely noticeable on the Amstrad CTM colour monitor. But it is very pronounced on Amstrad monochrome monitors.&lt;br /&gt;
* The slot mask is the texture that is visible in the CTM colour monitor. CRT masks do not exist on monochrome monitors.&lt;br /&gt;
* To test emulators VSYNC (screen-tearing and skipped frames): [https://www.cpcwiki.eu/forum/emulators/sugarbox-a-cpc-emulator-for-windows/msg245065/#msg245065 Source]&lt;br /&gt;
 border 22,17:ink 0,4,9:speed ink 1,1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Graphics ==&lt;br /&gt;
*🔥[https://shaker.logonsystem.eu/ Shakerland] Ultra accurate CRTC documentation and its associated CPC testing tool&lt;br /&gt;
*[https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7562 5KB 2 (tweakable demo)] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=12906 HSYNC test] [https://www.cpc-power.com/index.php?page=database&amp;amp;lemot=crtc%20programmierung CRTC Programmierung] [https://www.cpc-power.com/index.php?page=database&amp;amp;lemot=cote%gamers Côté Gamers] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=13656 Screen Effect] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=9154 Blitter] [[File:CheshireCat - Scroll hard en Basic.dsk]] [https://youtu.be/6fB36wbGQdY] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=16025 Out-Screen II] [https://www.planetemu.net/rom/amstrad-cpc-applications-dsk/crtc-editor-v5-1-1994-brain-of-chaos CRTC editor] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=10221 Control del CRT] CRTC testing tools&lt;br /&gt;
*[http://logon.system.free.fr/down/shaker_addon.dsk Vertical and Horizontal 1-pixel mode1 hardware scroll for all CRTCs] [[File:Lister-of-smeg vertscroll4.dsk]] [https://cpcrulez.fr/coding_src-demo-smooth_crtc_register_3_scrolling_test.htm Smooth CRTC Register 3 scrolling test] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1949 Skate Wars] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1211 Jinks] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=68 Out of this World] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=159 Killer Cobra] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=10465 Edge Grinder] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=10072 Relentless] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=17739 Corsair Trainer] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1982 Warhawk] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=99 Mission Genocide] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1028 Axys] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=15809 Red Sunset] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=974 Ghosts'n Goblins] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=671 Danger Street] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1698 Profanation] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1290 Legend of Kage] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=2119 Super Cauldron] Smooth CRTC R3/R5 hardware scrolling&lt;br /&gt;
*[https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7514 BSC 91] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=8772 Voyage 1993] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7751 OVL '96] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7662 Byte 98] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=8625 Divine] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7910 Paradise] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=8621 Power System] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=8875 Prodatron] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7744 Longshot] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7668 Amazing] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7714 KKB First] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=8509 Hage's First] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7762 New Age] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=8464 Flore Dentro] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=8259 Chany Dream End] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7591 S&amp;amp;Koh] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=8064 Overflow Previews] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7755 Mystery] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7404 Little One] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=8301 Freedelire] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=8516 Spy Hunter Scroller] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7648 Big'O Full'O Dem'O] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7499 Sea You Soon] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7504 Plasma] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=8519 Wobbler] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7459 Mad Rast] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7543 Odyssey] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=8650 Synergy] Early CRTC demos&lt;br /&gt;
*[https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7560 Ze Meeting 2003] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7737 Camembert 4] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7728 DemoIzArt] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7765 Not Dead] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7736 Croco Chanel] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7828 Tire Au Flan] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7464 Arôme Tomate] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=8753 Twistimus] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7729 DTC] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=8552 Synergy 2] CRTC demos from 2000s&lt;br /&gt;
*[https://www.cpc-power.com/index.php?page=detail&amp;amp;num=15200 OSC #0] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=15101 OSC #1] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=9970 Still Rising] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=9175 Still the Bests] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=15298 Still Scrolling] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=9097 River Scroll] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=15209 Scroll Factory] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=2799 Battro] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=9181 Bloc Us] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=9248 Wake Up] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=14230 Wunderbar] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=14992 Cookie] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=9589 Yet Another Plasma] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=15100 Isometrikum] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=14225 Logon's Run] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=16068 Octopus Pocus] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=9502 Sugarlumps] CRTC demos from 2010s&lt;br /&gt;
*[https://www.cpc-power.com/index.php?page=detail&amp;amp;num=18658 OSC #2] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=19119 OSC #3] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=19313 Stand Up] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=19024 The One] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=18676 Swingin'] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=18846 Return of the Droid] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=19214 Mike's Scrollers] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=18790 Foursome] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=19004 Checkmate] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=18760 Debris] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=19453 Ghost Nop] Latest CRTC demos&lt;br /&gt;
*[https://www.cpc-power.com/index.php?page=detail&amp;amp;num=12683 Points Barres (Mode 3)] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=11091 New Mode] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=12905 &amp;quot;Mode 5&amp;quot; Viewer] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=19220 Raster Slideshow] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=16075 Brutal Deluxe] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=12528 Rhino-Raster] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=16466 Split-Rasters Test CRTC1] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=491 Crazy Ball] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=2280 Trailblazer] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=931 Fugitif] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=3963 Sudoku Master] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=18626 Flush Wishes You a Happy New Year] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=18680 Pixel Free] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=11825 Overscan Megatext] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=14763 Gozeur Intro 2] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=13136 Interlace viewer] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=9564 Interlaced 800x600] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7396 Interlace] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7701 Climax] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=9160 Kvety] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=19347 Flipraster] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=13139 Perfect Pix Paint] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=12030 Bat-Moule] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=17706 Tetris] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=13359 Imperial Mahjong] Special graphics modes [http://cpc.sylvestre.org/articles/articles_imperial_mahjong.html Mode EGX] [[Mode R]] [https://code.google.com/archive/p/grafx2/issues/342 Mode 5] Technical explanations&lt;br /&gt;
*[https://www.cpc-power.com/index.php?page=detail&amp;amp;num=16027 Mire] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=8257 Chany Dream 5] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=8307 4 Sins] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=11820 TV Noise] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7826 Climax-G] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=8395 Nice Picture Show] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7937 Fatal Beauties] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=9090 JavaCPC Overscan] [https://www.cpc-power.com/index.php?page=database&amp;amp;r1=1&amp;amp;lemot=pixel%nation Pixel Nation] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7897 Twinblast] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=8081 MCS 6] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7593 Schadel] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7451 Scandinavian Flag] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7858 Kill JLCS] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=15705 Deleting Disc] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=9085 Plasma Pas Cher] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=13528 Wavy] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=14778 Vagues sur l'écran] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=18654 Bildschirmverzerrer] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=2224 Thunder Blade (292 lines)] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=454 Bonanza Bros (295 lines)] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=2318 Turrican (296 lines)] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=102 Wonder Boy (296 lines)] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1960 Sliders (330 lines)] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1763 Rastan (336 lines)] [https://www.gamopat-forum.com/t122994p900-amstrad-cpc-topic-officiel Bomb Jack remake (over-overscan)] To test the VDU&lt;br /&gt;
*[https://www.cpcwiki.eu/forum/games/street-fighter-ii-cpc/msg248822/#msg248822 Street Fighter II proto (crtc0)] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1546 Octoplex (crtc1)] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=781 Dynamic Duo (crtc1)] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=818 Druid II (crtc1)] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=15672 Legend of Steel (crtc1)] [https://www.cpcwiki.eu/forum/programming/the-living-daylights-extra-colours-in-mode-1-rasters-screen-splits/msg249849/#msg249849 The Living Daylights (crtc1)] [https://forum.system-cfg.com/viewtopic.php?p=234421#p234421 FMR (crtc1)] Some known bugs on real CRTCs&lt;br /&gt;
*[https://www.cpc-power.com/index.php?page=detail&amp;amp;num=8615 Welcom-X 2 (crtc0)] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7479 Madness (crtc1)] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7561 5KB 1 (crtc1)] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=9102 Scrolling Hard Vertical (crtc2)] Some programs that only run correctly on one type of CRTC&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Audio ==&lt;br /&gt;
*[https://www.cpc-power.com/index.php?page=detail&amp;amp;num=41 Trantor] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=204 3D Starfighter] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=726 Treasure Island Dizzy] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=971 Ghost Hunters] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=2132 Super Robin Hood] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=237 Advanced Pinball Simulator] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1200 Jet Bike Simulator] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1002 Grand Prix Simulator] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=183 Darts 180] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1243 Killapede] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7210 Startest] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1194 Jail Break] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1815 Robocop] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=100 Chase HQ] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1926 Shinobi] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=895 Fly Spy] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1388 Meltdown] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=17788 Throne Legacy] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=19569 Léon Marchand's Olympic Challenge] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=17587 Just Get 9] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=8892 4-Bit Digi Try] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=8580 OctoBear] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=4372 Speech] Software English vocal sounds&lt;br /&gt;
*[https://www.cpc-power.com/index.php?page=detail&amp;amp;num=814 El Enigma de Aceps] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1349 Le Manoir de Mortvielle] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=286 Etrange Castel] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=910 Forteresse] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=511 Canadair] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1140 L'île] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1199 Jaws] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1102 Holocauste] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=284 Apocalypse] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1722 Punk Star] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=132 Afteroids] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=274 Amstroids] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1098 Hold-Up] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=879 Fire &amp;amp; Forget] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1433 Xyphoes Fantasy] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=5088 Spectra] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=17000 Space Race] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7456 Yao demo] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=8311 Terrific] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7548 Face Hugger Ultimate] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7415 Smallest Scroll] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=14765 Xenon] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=17542 Musik100] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=15311 Digital Synthesizer] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=5031 Echosoft] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=4735 Mega Sound] [https://www.cpc-power.com/index.php?page=database&amp;amp;lemot=digitracker&amp;amp;compagnie=906 Digitracker NGS] Other software sound effects [https://www.cpc-power.com/index.php?page=database&amp;amp;audiotape=1 Audio-tape included software list]&lt;br /&gt;
*[https://www.cpc-power.com/index.php?page=detail&amp;amp;num=17913 RUN!] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=9179 Now that's what I call Chip Tunes] [https://www.cpc-power.com/index.php?page=database&amp;amp;lemot=amstream Amstream Automated Music Player] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=10467 We Are All Old] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7700 Anthology] [https://www.cpc-power.com/index.php?page=database&amp;amp;lemot=ayc%20sound AYC Sound] [https://www.cpc-power.com/index.php?page=database&amp;amp;lemot=shap%20audio Shap Audio] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=18997 Amstrad CPC Mix] [https://www.youtube.com/@hermol2903/playlists YM!Rulez (real hardware recordings)] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=9734 Soundtrakker 128k] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=11771 ST128 Song Modules by BSC] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=17447 Starkos] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=11770 Starkos Song Modules] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=6266 Ams'Orgue] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=18265 Sintetizador de Sonidos] To test the PSG emulation&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Peripherals ==&lt;br /&gt;
*[https://www.cpc-power.com/index.php?page=database&amp;amp;lemot=TMPI%20speech%20synthesizer TMPI software list] Multilingual [https://www.cpc-power.com/index.php?page=database&amp;amp;lemot=SSA-1 SSA-1 software list] [https://www.cpc-power.com/index.php?page=database&amp;amp;lemot=DK%27Tronics%20Speech%20Synthesizer Dk'Tronics software list] English-only speech synthesizers&lt;br /&gt;
*[https://www.cpc-power.com/index.php?page=detail&amp;amp;num=16011 Cocoon Player] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7655 Bordelik 4] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7535 Digital Orgasm] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=19225 Bloood] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=17445 Megamix 2020] [https://cpcrulez.fr/applications_music-the_drumming_cpc.htm Drumming CPC] [https://www.cpc-power.com/index.php?page=database&amp;amp;lemot=Digitracker%20v&amp;amp;r1=1 Digitracker Symbiosis] [https://www.cpc-power.com/index.php?page=database&amp;amp;lemot=Prodatron%20MDL Prodatron MDL packs] [[File:DigiTracker Amdrum.zip]] [https://www.cpcwiki.eu/forum/applications/prodatrons-digitrackker-1-4-now-vor-lambdaspeak-amdrum-in-8-bit-mode!/] [https://www.cpc-power.com/index.php?page=database&amp;amp;lemot=Amdrum Amdrum] To test [[Digiblaster]] and [[Amdrum]] soundcards emulation&lt;br /&gt;
*[https://framagit.org/shinra/vgmplay VGMplay] [http://www.roudoudou.com/ACE-DL/ OPL3 VGM pack] [https://drive.google.com/drive/folders/1o1KKHB4rzLe324VmfAEhzJt-zb7IS5bI SID Player] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=4682 MidiTrack Performer] To test [[Willy|Willy OPL3]], [https://youtu.be/_LWbnjvXN4g RSF3 SID] and [[EMR MIDI Interface]] ([https://youtu.be/YOjV9AaIVKM RSF3]) soundcards emulation&lt;br /&gt;
*[https://www.cpc-power.com/index.php?page=database&amp;amp;lemot=hardware_phaser_loriciels West Phaser] [https://www.cpc-power.com/index.php?page=database&amp;amp;lemot=hardware_gunstick Gunstick] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=4303 Trojan LP-1] To test lightguns and lightpens connected to joystick port [https://www.cpc-power.com/index.php?page=database&amp;amp;lemot=hardware_magnum Magnum Light Phaser] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=3583 SkeetShoot] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=3584 The Enforcer] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=3992 Dk'Tronics Light Pen] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=4955 Light Pen Mark II] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=5853 Dart Light Pen] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=15975 FutureOS] To test lightguns and lightpens connected to expansion port&lt;br /&gt;
*[https://www.cpc-power.com/index.php?page=detail&amp;amp;num=19482 The Key] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1349 Le Manoir de Mortvielle] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=11808 Pro-Design] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=5039 Cherry Paint] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=5348 EasiArt] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=4291 GPaint] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=4286 AMX Art] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=4012 Advanced OCP Art Studio] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=6351 Max Desktop] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=5208 Worktop] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=4733 DES] [[Stream2]] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=15975 FutureOS] [[SymbOS|SymbOS]] To test [[AMX Mouse]] and [[Albireo|Albireo USB mouse]] emulation&lt;br /&gt;
*[https://www.cpc-power.com/index.php?page=detail&amp;amp;num=4026 Tasword] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=4028 Tasprint] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=4672 Print Master] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=12589 ProText] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=9583 ProType] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=4668 ProPrint] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=12745 Miraprint] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=4666 Qualitas Plus] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=4516 BrunWord] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=5212 CPC-Word] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=4104 MicroDesign] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=15528 Page Printer] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=4657 Stop Press (AMX Pagemaker)] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=5315 X-Press] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=10004 Page Publisher] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=5204 PowerPage 128] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=14009 Page Setter 64] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=12116 StarMouse] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=5551 Impr'Image] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=6127 Speedtrans screen dump] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=17613 Kdump] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=4016 Printer Pac II] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=5712 Impression] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=5576 RSX Imprimante] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=5157 Scrypte] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=6287 Machine à écrire] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=5883 DemoImp] [http://www.symbos.de/appinfo.htm?00069 PrintIt] [http://www.symbos.de/appinfo.htm?00066 Wordpad] To test printer emulation&lt;br /&gt;
*[[HDCPM]] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=15975 FutureOS] [http://www.roudoudou.com/ACE-DL/ SymbOS] [[UniDOS]] [http://amsnet.chez.com/ UniLoad] To test RTC and mass-storage emulation&lt;br /&gt;
*[https://cpcrulez.fr/applications_util-rulez-change-m4wifi.htm RulezCharge] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=16746 CPChessNet] [https://github.com/fergusleen/m4ewenterm Ewen] [https://www.github.com/salafek/KCNet-software-for-Net4CPC KCNet utilities] [http://www.symbos.de/appinfo.htm?00017 NsLookUp] [http://www.symbos.de/appinfo.htm?00020 SymTel] [http://www.symbos.de/appinfo.htm?00019 WGet] [http://www.symbos.de/ SymbOS] [[UniDOS]] To test the network emulation&lt;br /&gt;
*[https://www.cpc-power.com/index.php?page=detail&amp;amp;num=12972 X-MEM FW] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=9866 32 Roms Booster] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=10969 Roman] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=19236 CatRun] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=18901 CowSay] [http://impdraw.wikidot.com iMPdraw] [http://imptiles.wikidot.com/ iMPtiles] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=4008 Graph'OS] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=6129 Nirvana] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=6353 Utopia] [[Hexam]] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=12552 Orgams] [https://cpcrulez.fr/applications_disc-yet_another_norton-commander_clone.htm YANCC] [[HDCPM]] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=15975 FutureOS] [http://www.symbos.de/ SymbOS] [[UniDOS]] [https://archive.org/details/cpc-roms ROM Games] To test ROMboard emulation&lt;br /&gt;
*[https://www.cpc-power.com/index.php?page=detail&amp;amp;num=17567 Alcon 2020] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=18843 Hyperdrive] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=18503 Puzzle Bobble] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=18888 Revenge of Trasmoz] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=19111 Crazy Piri Chronicle] [[Converted GX4000 Software]] [https://futureos.cpc-live.com/ FutureOS] [http://www.symbos.de/ SymbOS] [http://amsnet.chez.com/ UniDOS Cartridge Creator] To test [[Plus2CPC]] or compatible ([[Play2CPC]], [[Cartridge Emulator]], [[M4 Board]]) CPC cartridge slot expansion&lt;br /&gt;
*[https://www.cpc-power.com/index.php?page=detail&amp;amp;num=14498 Multiface Protector] [https://www.cpc-power.com/index.php?page=protection&amp;amp;lenom=Multiface%202%20Protection Anti-Multiface II software list] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1855 RX 220] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1980 War in Middle Earth] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1322 Zap't'Balls advanced] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=5266 The Insider] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=5271 MF2RR] [https://grimware.org/doku.php/documentations/expansions/mf2/start Technical documentation] [https://www.cpc-power.com/cpcarchives/index.php?page=articles&amp;amp;num=433] To test [[Multiface II]] emulation&lt;br /&gt;
*[https://www.cpc-power.com/cpcarchives/index.php?page=articles&amp;amp;num=9 LensLok] [https://www.cpc-power.com/index.php?page=database&amp;amp;lemot=hardware_dandanator Dandanator] [[8bit Printer Ports]] Exotic hardware components that are essential for some CPC software and should therefore be emulated&lt;br /&gt;
*Everything else is a nice bonus&lt;br /&gt;
&lt;br /&gt;
Note: Open standards like Albireo (CH376 USB and mass storage) and Net4CPC (W5100S Ethernet) should be favored over proprietary protocols (Multiplay, Symbiface 3, M4 Board)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Copy-protection ==&lt;br /&gt;
*[http://www.cpctech.org.uk/download/fdctest.zip FDC test suite] [http://www.cpctech.org.uk/download/drivetest.zip Disk drive tests] [http://www.cpctech.org.uk/download/cdttst.zip CDT/TZX test suite] Set of tests by arnoldemu [https://archive.org/details/UnRenamedFiles-Amstrad Various dump formats (CDT, TZX, CSW, VOC, WAV, MP3, DSK, HFE, IPF, SCP, etc...)] [https://cpcrulez.fr/info-uploads-ipf.htm IPF dumps] [https://cpcrulez.fr/info-uploads-ct-raw.htm CT-RAW dumps] [https://cpcrulez.fr/info-uploads-kf-scp.htm SCP dumps]&lt;br /&gt;
*[https://www.cpc-power.com/index.php?page=detail&amp;amp;num=6091 Azimut Locator] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=13564 Tape Speed Checker] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=10919 Motor Control] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=8881 Odd Border] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=4194 Ultra Son] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=16963 Catalogueur de Cassettes] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=5998 Tape Utility] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=10475 Soft-Lok] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=5299 Soft-Arc] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=6057 Deconnect] [https://www.cpc-power.com/index.php?page=protection&amp;amp;lenom=NoAMSDOS NoAMSDOS software list] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=3871 Computer Hits] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1359 Marmelade] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1412 Mickey Mouse] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=365 Basil] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1364 Mask] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=2035 Split Personalities] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=911 Frank Bruno's Boxing] [https://www.cpc-power.com/index.php?page=database&amp;amp;lemot=baudload Baudload software list] [https://www.cpc-power.com/index.php?page=protection&amp;amp;lenom=Keytone Keytone software list] [https://www.cpc-power.com/index.php?page=protection&amp;amp;lenom=COMPTEUR%20CASSETTE Tape Counter software list] [https://mega.nz/folder/93pR2KiA#qlkiFakrZhSzmko65EbTWw/folder/l35Q2QaA Brundij Loading Screens slideshows] [http://www.symbos.de/appinfo.htm?00073 Tape Deck] To test Tape emulation&lt;br /&gt;
*[https://www.cpc-power.com/index.php?page=detail&amp;amp;num=8548 Musical Loader] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=19368 FatMag 2] [https://blog.logonsystem.eu/magicsystem/ FatMag 2 technical analysis] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7405 5KB 3] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=9211 Backtro] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=8623 Unique] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=8746 The Demo] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=266 Fres Fighter II Turbo] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=13108 CPC 30th Anniversary] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7542 Midline Process] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=17902 Can Robots Take Control] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=15102 PhX] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=9156 Batman Forever] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=16736 Pinball Dreams] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7174 R-Type 128K] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=6661 Nheredia] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=13426 Doomsday Lost Echoes] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=19013 The Elves of Maroland] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=4025 Orion Prime] Musical loader, Multi-drives, 3.5 inch (dual-head and 80 tracks) floppy drives support [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1112 House of Usher (5.25 inch)] [https://www.cpc-power.com/index.php?page=database&amp;amp;lemot=Parados&amp;amp;r1=0&amp;amp;r2=1&amp;amp;r3=0&amp;amp;r4=1 ParaDOS software list] [https://www.cpcwiki.eu/forum/emulators/differentiating-between-cpc-pcw-and-zx-dsk-images/msg245290/#msg245290 Triple-format CPC/+3/PCW]&lt;br /&gt;
*[https://www.cpc-power.com/index.php?page=detail&amp;amp;num=10029 RPM] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=15518 DskTest] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=6268 Discover] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=5071 Dir Doktor] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=9369 Optimize] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=14201 Crazy] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=15144 Dlfrsilver Dump Tool Test Suite] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=4812 Format II] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=19465 Magic Transfert] [https://cpcrulez.fr/applications_disc-magic_dos.htm Magic DOS] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=11044 DOS-copy] [[ParaDOS]] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=4933 Xexor] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=6118 Discology] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=4179 Hercule II] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=4015 OddJob] [https://www.seasip.info/Cpm/disckit.html DiscKit] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=5997 Master Disc] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=16060 UltraDisc] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=4284 Disc+Ultra] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=5244 Disc'o'Magic] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=5050 Crime] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=9297 Multi Mark] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=12051 Demonstration of KBI protection] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=5586 Protector] To test FDC emulation&lt;br /&gt;
*[https://cpcrulez.fr/demostestDM_fatmag_01.htm FatMag (HFE version)] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=19512 BND4 Invitro (sick mode)] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=17853 Open Tower Defense] Rigorous FDC tests by Roudoudou [https://www.cpc-power.com/index.php?page=database&amp;amp;lemot=AutoDetect%20Disk%20Change Disk Swapping Autodetect software list] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=10000 Superpix] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=8244 Bad Mag Issue 2] Disk swapping detection [https://www.cpc-power.com/index.php?page=detail&amp;amp;onglet=dumps&amp;amp;num=8623 Unique Diskmaker (generating discs in noiseload format)] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7646 Big Cheese 2 (FDC VU-meter effect)] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=2024 Sphaira (accessing the 3rd drive)] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=14747 The Shadows of Sergoth (unformatted track)]&lt;br /&gt;
*[https://www.cpc-power.com/index.php?page=protection&amp;amp;stafftype=1&amp;amp;lenom=Weak%20Sectors Weak Sectors] [https://www.cpc-power.com/index.php?page=protection&amp;amp;stafftype=1&amp;amp;lenom=Gaps Custom Gaps] [https://www.cpc-power.com/index.php?page=protection&amp;amp;stafftype=0&amp;amp;lenom=Gap2 Custom Gap2] [https://www.cpc-power.com/index.php?page=protection&amp;amp;stafftype=1&amp;amp;lenom=SectorSizeX Sector SizeX] [https://www.cpc-power.com/index.php?page=protection&amp;amp;stafftype=1&amp;amp;lenom=SectorSize8 Sector Size8] [https://www.cpc-power.com/index.php?page=protection&amp;amp;stafftype=1&amp;amp;lenom=SectorSize7 Sector Size7] [https://www.cpc-power.com/index.php?page=protection&amp;amp;stafftype=1&amp;amp;lenom=SectorSize6 Sector Size6] [https://www.cpc-power.com/index.php?page=protection&amp;amp;stafftype=1&amp;amp;lenom=SectorErased Sector Erased] [https://www.cpc-power.com/index.php?page=protection&amp;amp;stafftype=1&amp;amp;lenom=64sectors 64 Sectors] [https://www.cpc-power.com/index.php?page=protection&amp;amp;lenom=Overlap Overlap] [https://www.cpc-power.com/index.php?page=protection&amp;amp;stafftype=1&amp;amp;lenom=Custom Custom] [https://www.cpc-power.com/index.php?page=protection&amp;amp;lenom=HERBULOT Rémi Herbulot] [https://www.cpc-power.com/index.php?page=protection&amp;amp;lenom=Brice%20Rive Brice Rivé] [https://www.cpc-power.com/index.php?page=protection&amp;amp;lenom=Rubi Rubi] [https://www.cpc-power.com/index.php?page=protection&amp;amp;lenom=MBC%20D7 MBC] Protected software lists&lt;br /&gt;
*[https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1681 Prehistorik] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1699 Profession Détective] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=291 Emlyn Hugues Arcade Quiz] Other copy-protection schemes [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=674 Dark Sceptre] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1269 Krypton Factor] Works only on older floppy drives [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=17257 TokiMap] [https://www.cpcwiki.eu/forum/programming/fdc-tools-amsdos-direct-load-reliability/msg227259/ Technical explanation] Unreliable FDC loader&lt;br /&gt;
*[https://www.cpc-power.com/index.php?page=detail&amp;amp;num=180 1001 BC] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1887 Scott Winder Reporter] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1102 Holocauste] [https://www.cpc-power.com/cpcarchives/index.php?page=articles&amp;amp;num=196 Speedlock AAAA] Destructive copy-protection [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1944 Sir Lancelot] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1897 Secret Defense] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1390 M'enfin] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=111 Turbo Cup] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=825 Erebus] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1607 Le Passager du Temps] [https://www.cpc-power.com/cpcarchives/index.php?page=articles&amp;amp;num=435 Anti-copy bug software list] Exotic copy-protection [https://www.cpc-power.com/index.php?page=protection&amp;amp;stafftype=1&amp;amp;lenom=MotorON MotorON software list]&lt;br /&gt;
*[https://www.cpc-power.com/cpcarchives/index.php?page=articles&amp;amp;cat=12 Protection schemes documented] [https://www.cpc-power.com/cpcarchives/index.php?page=articles&amp;amp;num=207 Gaps] [https://www.cpc-power.com/cpcarchives/index.php?page=articles&amp;amp;num=384 Latis] [https://web.archive.org/web/20190308042601/http://birdsanctuary.co.uk/lenslok/ LensLok] [https://simonowen.com/samdisk/sys_cpc/ Copy-protection in EDSK images] [https://forum.system-cfg.com/viewtopic.php?p=195705#p195705 Implementation in SugarBox emulator] [https://64nops.wordpress.com/2021/07/04/a-la-decouverte-du-fdc/ FDC blog articles] [https://www.cpc-power.com/cpcarchives/index.php?page=articles&amp;amp;num=38 Autoboot] [https://www.seasip.info/Cpm/amsform.html Amsdos disk format] [https://muckypaws.com/2024/02/21/amstrad-and-zx-spectrum-dsk-tool/ Disk structure] [https://muckypaws.com/2024/02/03/discsys-xor/ DiscSys] [https://muckypaws.com/2024/01/29/speedlock-1987/ Speedlock K7 1987] [https://www.cpcwiki.eu/forum/programming/speedlock-d7-1989-completely-documented/ Speedlock D7 1989] Technical explanations&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
*[https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1173 Into the Eagle's Nest] [http://www.cpctech.org.uk/docs/cpcplus.html Technical explanation] Floating bus making the bottom border appear black on CPC, purple on 464+ and green on 6128+&lt;br /&gt;
*[https://www.cpc-power.com/index.php?page=detail&amp;amp;num=17793 The Abduction of Oscar Z] [https://www.cpcwiki.eu/forum/games/background-oscar-z/ Technical explanation] Neat unintended colour gradient effect on non-CTM monitors&lt;br /&gt;
*[https://www.cpc-power.com/index.php?page=detail&amp;amp;num=3905 The Eternal Light] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=18813 Druid &amp;amp; Droid] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=19341 Paulina's Potions] [https://www.cpcwiki.eu/forum/games/harrier-attack-reloaded/msg247674 Harrier Attack Reloaded] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=5197 Claudia BMP Converter] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=9251 Snoozing] Programs that only run fine on flawed emulators but are broken on real machines&lt;br /&gt;
*[https://www.cpc-power.com/index.php?page=detail&amp;amp;num=8524 Equalizor] [https://forum.system-cfg.com/viewtopic.php?p=229698#p229698 Revolog] [https://forum.system-cfg.com/viewtopic.php?p=256995#p256995 Technical explanation] Some believe it could be a random hardware bug of CRTC1 chip. But it could also be explained by the LD A,R instruction which is known to be buggy on NMOS Z80 when interrupted.&lt;br /&gt;
*[https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1682 Prehistorik II] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=10069 Uwol] Screen calibration [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=625 Get Dexter] Different screen transition effect depending on the detected CRTC type [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=19595 Borderline] Different demo depending on the detected CRTC type&lt;br /&gt;
*[https://www.cpc-power.com/index.php?page=detail&amp;amp;num=2009 Space Racer] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=441 Bob Winner] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1873 Sapiens (Tape)] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1372 Mata Hari (Tape)] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=2209 Thai Boxing] CPC keyboard detection [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1225 Jungle Jane] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=4737 3D Megacode] Firmware detection&lt;br /&gt;
*[https://www.cpc-power.com/index.php?page=detail&amp;amp;num=2266 The Untouchables] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=135 Batman The Movie] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=2318 Turrican] [https://www.cpc-power.com/cpcarchives/index.php?page=articles&amp;amp;num=80 Technical explanation] CPC keyboard clash [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=2224 Thunder Blade (6 keys)] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=244 Agent X II (7 keys)] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=11846 Wishing-Well (8 keys)] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1886 Score 3020 (9 keys)] Simultaneous keypresses for cheat mode&lt;br /&gt;
*[https://www.cpc-power.com/index.php?page=detail&amp;amp;num=19283 Raytracing in BASIC] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=6680 Reliefs Mathématiques] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=19273 Cherry Blossom] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=15685 Deuligne Julia Fractal] [https://www.github.com/litwr2/rosetta-mandelbrot Rosetta Mandelbrot] [https://www.github.com/litwr2/rosetta-pi-spigot Rosetta Pi Spigot] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=15734 Life] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=7460 Highway To Hell] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=8188 Chain] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=8066 Overflow Tome 2] [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=9281 Montre] [https://www.cpc-power.com/index.php?page=protection&amp;amp;lenom=COMPTEUR%20CASSETTE Tape Counter software list] To benchmark emulators using their fullspeed mode&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Emulator detection methods =&lt;br /&gt;
&lt;br /&gt;
If you are a programmer who wants to promote usage of real CPC computers, you can detect CPC emulators by:&lt;br /&gt;
*Checking if the memory is initialised with zeroes, as RAM in real machines is not initialised during boot. [https://www.cpcwiki.eu/forum/emulators/weird-thing-about-memory-dump-on-winapecaprice-vs-cpcemuace/msg243929/ Source]&lt;br /&gt;
*Configuring the CRTC to stop refreshing part of the RAM. This behaviour has never been emulated. [https://www.cpcwiki.eu/forum/amstrad-cpc-hardware/memory-refresh-plus/ Source]&lt;br /&gt;
 The way to cause the RAM refresh to fail in both a Plus or normal CPC is simply to stop a few bits of the CRTC address changing (ie. never refresh the selected area).&lt;br /&gt;
 Generally, only the Row address needs to be cycled, so stopping MA0 through MA7 from changing, and stopping the CPU from reading those rows, will cause data to be lost, quite quickly (generally around 4ms).&lt;br /&gt;
*Detecting corruption in the PSG registers when a register write is not validated. [https://www.cpcwiki.eu/forum/programming/interesting-walkthrough-video-coding-a-pet-to-play-samples-at-60khz/msg250874/#msg250874 Source]&lt;br /&gt;
*Playing with the &amp;quot;floating&amp;quot; bus. Using Z80 read I/O commands to write to chip registers. Accessing ghost registers. Using undocumented I/O ports. Writing to multiple chips simultaneously. Changing PPI and PSG ports direction.&lt;br /&gt;
*Focusing on the minute details in [[Z80]], [[CRTC]], [[8255|PPI]] and [[PAL16L8|PAL]] chips. They are most often wrong in emulators.&lt;br /&gt;
*Examining the [[FDC]] chip. It is only replicated more or less superficially in all emulators because the internals of the chip are still unknown. Many emulators don't even support the FDC SCAN or FORMAT TRACK commands.&lt;br /&gt;
&lt;br /&gt;
Combining these methods will definitely get you a 100% success rate in detecting emulators, even the toughest ones.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Emulator undetected.png|Emulator undetected in Open Tower Defense&lt;br /&gt;
Emulator detected.png|Emulator detected in Open Tower Defense&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additionally, an [[Emulator_IDs|Emulator IDs]] system is available for easier detection of CPC emulators.&lt;br /&gt;
&lt;br /&gt;
On ZX Spectrum, gamedevs are challenging emulators real hard with titles like [https://spectrumcomputing.co.uk/entry/31198/ZX-Spectrum/MEMPTR_Snake MEMPTR Snake], [https://github.com/redcode/Z80/wiki/Super-HALT-Invaders-Test Super HALT Invaders Test] and [https://spectrumcomputing.co.uk/entry/31261/ZX-Spectrum/Chromatrons_Attack Chromatrons Attack].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Emulator]] [[Category:Emulation Tools]]&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=CRTC&amp;diff=126059</id>
		<title>CRTC</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=CRTC&amp;diff=126059"/>
				<updated>2025-05-18T22:22:10Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: /* Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:CRTC Type 0.jpg|thumb|right|CRTC Type 0 (Hitachi)]]&lt;br /&gt;
[[File:CRTC UMC Type 0.png|thumb|right|CRTC Type 0 (UMC)]]&lt;br /&gt;
[[File:CRTC Type 1.png|thumb|right|CRTC Type 1]]&lt;br /&gt;
[[File:CRTC6845-Type2.jpg|thumb|right|CRTC Type 2]]&lt;br /&gt;
&lt;br /&gt;
The 6845 '''CRTC''' (Cathode Ray Tube Controller) chip was created by Motorola in 1977. It works with the [[Gate Array]] to generate the video signal on the Amstrad CPC.&lt;br /&gt;
&lt;br /&gt;
This chip is also used in the [[BBC Micro]], [[Lynx|Camputers Lynx]], [[EG2000 Colour Genie]], [[Sharp X1]], [[MicroBee]], [[Commodore PET]] and the early graphics cards (MDA, Hercules, CGA, Plantronics Colorplus) for [[IBM PC]]. And it is found in some [https://www.msx.org/wiki/Hitachi_HD6845 MSX1 expansions], providing an 80-column text mode.&lt;br /&gt;
&lt;br /&gt;
It's important to note that the CRTC chip is primarily designed for character-based displays. It explains why, on the Amstrad CPC, the video memory is organized into a grid of characters rather than a purely linear bitmap.&lt;br /&gt;
&lt;br /&gt;
NOTES: &lt;br /&gt;
* This document describes the functionality in terms of the CPC with its separate CRTC and Gate-Array. The Plus has both integrated into the same IC, but could be considered to have two functional blocks, one for CRTC and one for Gate-Array. In this document the term 'Gate-Array' is used, but this also applies to the ASIC.&lt;br /&gt;
* Much information has been drawn from the [https://shaker.logonsystem.eu/ CRTC Compendium] documentation. For more details, timing diagrams, code examples, coding tips, and more, refer to that documentation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The 6845 Cathode Ray Tube Controller (CRTC) is a programmable IC used to generate video displays. This IC is used in a variety of computers including the Amstrad CPC, Amstrad Plus and KC Compact. &lt;br /&gt;
&lt;br /&gt;
The CRTC is a simple chip. It is made up of counters and equality operators, tied by simple logic. All the complexity stems from its multiple independent implementations with their subtle differences.&lt;br /&gt;
&lt;br /&gt;
The CRTC was a common part available from many different manufacturers. During the life of the CPC, Amstrad sourced the CRTC from various manufacturers. &lt;br /&gt;
&lt;br /&gt;
All ICs used were based on the same design but have a different implementation. As a result they do not operate identically in all situations. This document highlights these differences. &lt;br /&gt;
&lt;br /&gt;
This table lists the known ICs used, with their part number, manufacturer and type number. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Part number&lt;br /&gt;
!Manufacturer&lt;br /&gt;
!Type number (note 3)&lt;br /&gt;
|-&lt;br /&gt;
|HD6845S||Hitachi||0&lt;br /&gt;
|-&lt;br /&gt;
|UM6845||UMC||0&lt;br /&gt;
|-&lt;br /&gt;
|UM6845R||UMC||1&lt;br /&gt;
|-&lt;br /&gt;
|MC6845||Motorola||2&lt;br /&gt;
|-&lt;br /&gt;
|AMS40489||Amstrad||3 (note 1)&lt;br /&gt;
|-&lt;br /&gt;
|AMS40226||Amstrad||4 (note 2)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''NOTES''' &lt;br /&gt;
&lt;br /&gt;
1. The CRTC functionality is integrated into the CPC+ ASIC. This type exists only in the 464 Plus, 6128 Plus and GX4000. &lt;br /&gt;
&lt;br /&gt;
2. This type exists in &amp;quot;cost-down&amp;quot; CPC464 and CPC6128 systems. In the &amp;quot;cost-down&amp;quot; the CRTC functionality is integrated into a single ASIC IC. This ASIC is often refered to as the &amp;quot;Pre-ASIC&amp;quot; because it preceeded the CPC+ ASIC. The CRTC functionality of the Pre-ASIC is almost identical to the CRTC within the ASIC.&lt;br /&gt;
 &lt;br /&gt;
3. In the Amstrad community each 6845 implementation has been assigned a type number. This type identifies a group of implementations which operate in exactly the same way. The type number system was originally used by demo programmers. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Programming==&lt;br /&gt;
&lt;br /&gt;
The 6845 is selected when bit 14 of the I/O port address is set to &amp;quot;0&amp;quot;. Bit 9 and 8 of the I/O port address define the function to access. The remaining bits can be any value, but it is adviseable to set these to &amp;quot;1&amp;quot; to avoid conflict with other devices in the system.&lt;br /&gt;
&lt;br /&gt;
The recommended I/O port addresses are:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!I/O port address&lt;br /&gt;
!/CS (A14)&lt;br /&gt;
!R/W (A9)&lt;br /&gt;
!RS (A8)&lt;br /&gt;
!Function&lt;br /&gt;
!Read/Write&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;BCxx||0||0||0||Select 6845 register||Write only&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;BDxx||0||0||1||Write to selected internal 6845 register||Write only&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;BExx||0||1||0||&lt;br /&gt;
* CRTCs 0/2: —&lt;br /&gt;
* CRTC 1: Read Status Register&lt;br /&gt;
* CRTCs 3/4: Read from selected internal 6845 register&lt;br /&gt;
||Read only&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;BFxx||0||1||1||Read from selected internal 6845 register||Read only&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The CRTC is not connected to the CPU's RD and WR pins, so it cannot detect the bus's I/O direction. Therefore, executing an IN instruction to the select or write functions causes the CRTC to write the unpredictable data provided by the high-impedance bus to its registers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Z80 I/O access timings ===&lt;br /&gt;
&lt;br /&gt;
The clock provided to the CRTC by the ASIC/Pre-ASIC is phase-shifted compared to the one provided by the Gate Array.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! Instructions !! Duration !! I/O CRTCs 0/1/2 !! I/O CRTCs 3/4&lt;br /&gt;
|-&lt;br /&gt;
| OUT (C),r8 || 4 µsec || '''3rd µsec''' || 4th µsec&lt;br /&gt;
|-&lt;br /&gt;
| OUT (C),0 || 4 µsec || '''3rd µsec''' || 4th µsec&lt;br /&gt;
|-&lt;br /&gt;
| OUT (n),A || 3 µsec || 3rd µsec || 3rd µsec&lt;br /&gt;
|-&lt;br /&gt;
| OUTI || 5 µsec || 5th µsec || 5th µsec&lt;br /&gt;
|-&lt;br /&gt;
| OUTD || 5 µsec || 5th µsec || 5th µsec&lt;br /&gt;
|-&lt;br /&gt;
| IN r8,(C) || 4 µsec || 4th µsec || 4th µsec&lt;br /&gt;
|-&lt;br /&gt;
| INI || 5 µsec || '''4th µsec''' || '''4th µsec'''&lt;br /&gt;
|-&lt;br /&gt;
| IND || 5 µsec || '''4th µsec''' || '''4th µsec'''&lt;br /&gt;
|-&lt;br /&gt;
| IN A,(n) || 3 µsec || 3rd µsec || 3rd µsec&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Video Memory Address (VMA)==&lt;br /&gt;
&lt;br /&gt;
The VMA of the [[Gate Array]] is constructed from the CRTC MA and RA signals:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Video Memory Address&lt;br /&gt;
!Signal source&lt;br /&gt;
!Signal name&lt;br /&gt;
|-&lt;br /&gt;
|A15||6845||MA13 &lt;br /&gt;
|-&lt;br /&gt;
|A14||6845||MA12&lt;br /&gt;
|-&lt;br /&gt;
|A13||6845||'''RA2'''&lt;br /&gt;
|-&lt;br /&gt;
|A12||6845||'''RA1'''&lt;br /&gt;
|-&lt;br /&gt;
|A11||6845||'''RA0'''&lt;br /&gt;
|-&lt;br /&gt;
|A10||6845||MA9 &lt;br /&gt;
|-&lt;br /&gt;
|A9||6845||MA8 &lt;br /&gt;
|-&lt;br /&gt;
|A8||6845||MA7 &lt;br /&gt;
|-&lt;br /&gt;
|A7||6845||MA6 &lt;br /&gt;
|-&lt;br /&gt;
|A6||6845||MA5 &lt;br /&gt;
|-&lt;br /&gt;
|A5||6845||MA4 &lt;br /&gt;
|-&lt;br /&gt;
|A4||6845||MA3 &lt;br /&gt;
|-&lt;br /&gt;
|A3||6845||MA2 &lt;br /&gt;
|-&lt;br /&gt;
|A2||6845||MA1 &lt;br /&gt;
|-&lt;br /&gt;
|A1||6845||MA0&lt;br /&gt;
|-&lt;br /&gt;
|A0||Gate-Array||CCLK&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
CRTC generates the address, Gate Array reads the data and converts it to pixels based on its current graphics mode and palette.&lt;br /&gt;
&lt;br /&gt;
CRTC pins RA3, RA4, MA10, MA11 are not connected on CPC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Overscan bits ===&lt;br /&gt;
&lt;br /&gt;
It is possible to use 32KB screen size (used for [[Programming:Overscan|overscan]]) by setting bits 11 and 10 of Register 12 both to 1. Bits MA11 and MA10 of the address generated by the CRTC are not written on the address bus to access video memory; settings both bits to 1 is the only way to cause a carry to bit MA12 when address pass over the end of current video page to change the memory address to the next video page.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ CRTC Display Start Address&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;8&amp;quot; | Register 12&lt;br /&gt;
! colspan=&amp;quot;8&amp;quot; | Register 13&lt;br /&gt;
|-&lt;br /&gt;
! 15 !! 14 !! 13 !! 12 !! 11 !! 10 !! 9 !! 8&lt;br /&gt;
! 7 !! 6 !! 5 !! 4 !! 3 !! 2 !! 1 !! 0&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Unused&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Video Page&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Page Size&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot; | Start Address (1024 positions)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;white-space: nowrap;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-right: 32px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bit 13 !! Bit 12 !! Video Page&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0 || 0000 - 3FFF&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1 || 4000 - 7FFF&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0 || 8000 - BFFF&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1 || C000 - FFFF&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bit 11 !! Bit 10 !! Page Size&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0 || 16KB&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1 || 16KB&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0 || 16KB&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1 || '''32KB'''&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Coarse hardware scrolling ===&lt;br /&gt;
&lt;br /&gt;
The start address can be manipulated to achieve horizontal and/or vertical hardware scrolling:&lt;br /&gt;
&lt;br /&gt;
*To move right: &amp;lt;code&amp;gt;start_address := start_address + 1&amp;lt;/code&amp;gt;&lt;br /&gt;
*To move left: &amp;lt;code&amp;gt;start_address := start_address - 1&amp;lt;/code&amp;gt;&lt;br /&gt;
*To move down: &amp;lt;code&amp;gt;start_address := start_address + R1&amp;lt;/code&amp;gt;&lt;br /&gt;
*To move up: &amp;lt;code&amp;gt;start_address := start_address - R1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
However, it is a position in word (16 bits), not in byte. So, the screen will move two bytes at a time horizontally. Also, the precision will be one CRTC character vertically.&lt;br /&gt;
&lt;br /&gt;
The first game that used R12/R13 for both horizontal and vertical hardware scrolling is [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1839 Roland on the Ropes], released in 1984.&lt;br /&gt;
&lt;br /&gt;
The following BASIC program demonstrates the coarse scrolling by setting the R12 and R13 registers based on keyboard input:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10 ma%=0&lt;br /&gt;
20 IF INKEY(1)=0 THEN GOSUB 100&lt;br /&gt;
30 IF INKEY(2)=0 THEN GOSUB 300&lt;br /&gt;
40 IF INKEY(8)=0 THEN GOSUB 500&lt;br /&gt;
50 IF INKEY(0)=0 THEN GOSUB 700&lt;br /&gt;
60 GOTO 20&lt;br /&gt;
100 ' right&lt;br /&gt;
110 ma%=ma%+1: GOSUB 900: RETURN&lt;br /&gt;
300 ' down&lt;br /&gt;
310 ma%=ma%+40: GOSUB 900: RETURN&lt;br /&gt;
500 ' left&lt;br /&gt;
510 ma%=ABS(ma%-1): GOSUB 900: RETURN&lt;br /&gt;
700 ' up&lt;br /&gt;
710 ma%=ABS(ma%-40): GOSUB 900: RETURN&lt;br /&gt;
900 ' set R12 and R13&lt;br /&gt;
910 l%=ma% AND 255: h%=&amp;amp;30 OR ((ma%\256) AND 3) :OUT &amp;amp;BC00,13:OUT &amp;amp;BD00,l%: OUT &amp;amp;BC00,12:OUT &amp;amp;BD00,h%&lt;br /&gt;
930 RETURN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Which looks like the following:&lt;br /&gt;
&lt;br /&gt;
[[File:CRTC-Coarse-scroll.gif]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Advanced hardware scrolling ===&lt;br /&gt;
&lt;br /&gt;
To achieve smoother hardware scrolling, other tricks are required in complement to R12/R13. Usually, R3 is used for smooth horizontal scroll and R5 for smooth vertical scroll.&lt;br /&gt;
&lt;br /&gt;
A good example of smooth hardware multidirectional scrolling game on CPC is [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=2119 Super Cauldron], released in 1993.&lt;br /&gt;
&lt;br /&gt;
Everything you need to know about hardware scrolling on CPC can be found [https://www.cpcwiki.eu/forum/programming/hardware-scrolling-21687/ there].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Split screen (aka Rupture) ==&lt;br /&gt;
&lt;br /&gt;
While there is usually 1 CRTC frame per screen frame, the screen frame can be divided into multiple CRTC frames of varying proportions.&lt;br /&gt;
&lt;br /&gt;
This is useful for defining different scrolling zones in your screen frame. For example, it was used for hardware parallax scrolling in the game [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1307 The Living Daylights], released in 1987. [https://www.cpcwiki.eu/forum/programming/the-living-daylights-extra-colours-in-mode-1-rasters-screen-splits/ Source]&lt;br /&gt;
&lt;br /&gt;
And this is basically the bread and butter of innumerable CPC demos.&lt;br /&gt;
&lt;br /&gt;
Some rules of thumb [https://www.cpcwiki.eu/forum/programming/advice-on-split-screen-code/msg242186/ Source]:&lt;br /&gt;
* changes to the screen address have to be done anywhere in the previous split&lt;br /&gt;
* changes to the height of the split have to be done inside the current split (after it has started, in the area of the size of the previous split)&lt;br /&gt;
* changes to screen mode and colours are happening immediately&lt;br /&gt;
&lt;br /&gt;
CRTC registers and screen splitting:&lt;br /&gt;
*reg 0 (63) = x-screenwidth (usually always 63)&lt;br /&gt;
*reg 1 (50) = x-splitwidth (e.g.50)&lt;br /&gt;
*reg 2 (51) = x-splitstart (e.g. 51)&lt;br /&gt;
*reg 3 (08) = x-finestart (maybe use this for half-char scrolling)&lt;br /&gt;
*reg 4 (##) = y-splitheight-1 (set this inside the current split)&lt;br /&gt;
*reg 5 (00) = y-finestart&lt;br /&gt;
*reg 6 (25) = y-max visible splitpart (same like 4)&lt;br /&gt;
*reg 7 (##) = inside last split -&amp;gt; set to 0; inside first split, but after vblank -&amp;gt; set to 255&lt;br /&gt;
*reg 9 (07) = y-lines/char-1&lt;br /&gt;
&lt;br /&gt;
Set this inside the previous split:&lt;br /&gt;
*reg12 (##) = address high (char / 256 + block * 16)&lt;br /&gt;
*reg13 (##) = address low  (char mod 256)&lt;br /&gt;
&lt;br /&gt;
Total height of all splits must be 39.&lt;br /&gt;
&lt;br /&gt;
The [https://www.cpcwiki.eu/forum/programming/interrupt-positions-with-various-sized-screens/ IntPos tool] by Kevin Thacker can help visualize the potential split screen areas.&lt;br /&gt;
&lt;br /&gt;
Note: If all you want is multiple graphics modes in the same frame, you don't need to touch the CRTC at all. More information here: [https://www.cpc-power.com/cpcarchives/index.php?page=articles&amp;amp;num=184 Multi-Mode Graphique (FR)]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CUDISP (aka CURSOR) ==&lt;br /&gt;
&lt;br /&gt;
CUDISP (Cursor Display) signal defines the hardware cursor.&lt;br /&gt;
&lt;br /&gt;
CRTC pin CUDISP is not connected to the Gate Array, so it has no effect on a barebone CPC or Plus machine.&lt;br /&gt;
&lt;br /&gt;
However, this signal is provided to the [[Connector:Expansion port]]. And it is used by the [[PlayCity]] and [[Play2CPC]] expansions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DISPTMG (aka Display Enable) ==&lt;br /&gt;
&lt;br /&gt;
DISPTMG (Display Timing) signal defines the border. When DISPTMG is &amp;quot;0&amp;quot; the border colour is output by the Gate Array to the display.&lt;br /&gt;
&lt;br /&gt;
The border has higher priority than pixels but lower priority than the black colour output when HSYNC/VSYNC are active.&lt;br /&gt;
&lt;br /&gt;
While border is active, all the CRTC counters continue to increment normally and addresses continue to be generated.&lt;br /&gt;
&lt;br /&gt;
The DISPTMG signal is composited from its 3 internal subcomponents: HBORDER (Horizontal), VBORDER (Vertical), SBORDER (Split) by using the NOR function. DISPTMG is &amp;quot;0&amp;quot; if at least one of its subcomponents is &amp;quot;1&amp;quot;. These 3 subcomponents are all independent of each other.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HBORDER ===&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, HBORDER is disabled when HCC=0 and enabled when HCC=R1.&lt;br /&gt;
&lt;br /&gt;
The exception is for CRTC2 during an HSYNC: the HCC=0 check is skipped, so HBORDER stays on.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== VBORDER ===&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, VBORDER is disabled when VCC=0 and enabled when VCC=R6.&lt;br /&gt;
&lt;br /&gt;
On CRTCs 0/1/2, the condition VCC=R6 is tested on every cycle.&lt;br /&gt;
&lt;br /&gt;
On CRTCs 3/4, the condition VCC=R6 is tested only at each new character line start (when VLC=0 and HCC=0).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SBORDER ===&lt;br /&gt;
&lt;br /&gt;
Split border is a technique similar to split rasters, except that it is handled by the CRTC instead of the [[Gate Array]].&lt;br /&gt;
&lt;br /&gt;
DISPTMG can be temporarily forced to 0 by using R8 (DISPTMG Skew) on CRTCs 0/3/4, or by setting R6=0 on CRTC 1.&lt;br /&gt;
&lt;br /&gt;
It is not possible to force DISPTMG on CRTC 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Border bytes ===&lt;br /&gt;
&lt;br /&gt;
Despite their 1MHz clock speed, CRTCs 0/2 have been observed to change state at a rate equivalent to 2MHz chips by responding to both the rising and falling edges of each clock cycle.&lt;br /&gt;
&lt;br /&gt;
==== Interline border ====&lt;br /&gt;
On CRTCs 0/2, R1&amp;gt;R0 generates one byte (0.5µs) of border at the end of the raster line. On CRTCs 1/3/4, it does not.&lt;br /&gt;
&lt;br /&gt;
If border skew is used, the border byte will skew and change into a full character-width border instead.&lt;br /&gt;
&lt;br /&gt;
==== Border conflict ====&lt;br /&gt;
If R1=0 and HCC=0, we expect HBORDER to activate as HCC=R1 and we also expect HBORDER to deactivate as HCC=0. In this situation, all CRTCs activate HBORDER.&lt;br /&gt;
&lt;br /&gt;
If R6=0 and VCC=0, we expect VBORDER to activate as VCC=R6 and we also expect VBORDER to deactivate as VCC=0. In this situation, all CRTCs activate VBORDER. On CRTC 1, even SBORDER is activated. But on CRTCs 0/2, the first raster line shows an alternation of bytes of VBORDER and displayable characters.&lt;br /&gt;
&lt;br /&gt;
To see the border bytes with your own eyes, type this BASIC line after reset:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BORDER 6:OUT &amp;amp;BC00,6:OUT &amp;amp;BD00,0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== HSYNC ==&lt;br /&gt;
&lt;br /&gt;
The HSYNC signal from the CRTC is not directly connected to the display. It is passed to the [[Gate Array]] for further modification. See its wiki page.&lt;br /&gt;
&lt;br /&gt;
While HSYNC is active, all the CRTC counters continue to increment normally and addresses continue to be generated.&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, while an HSYNC is ongoing, the condition HCC=R2 is ignored. So we cannot trigger a new HSYNC during an HSYNC.&lt;br /&gt;
&lt;br /&gt;
=== Contiguous HSYNCs ===&lt;br /&gt;
&lt;br /&gt;
On CRTC 0, two HSYNCs cannot be contiguous. They are always separated by at least 1 CRTC character. What happens is that when HSC=R3 and HCC=R2, the condition HSC=R3 takes precedence over the condition HCC=R2 and HSYNC is stopped.&lt;br /&gt;
&lt;br /&gt;
On CRTCs 1/2/3/4, HSYNCs can be contiguous.&lt;br /&gt;
&lt;br /&gt;
=== Signal delay ===&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, there is a 1µs delay in display between when the CRTC provides a video pointer, and when the Gate Array displays the corresponding 16-bit character.&lt;br /&gt;
&lt;br /&gt;
But on CRTCs 0/1/2, there is no delay for HSYNC. On CRTCs 3/4, the Amstrad engineers fixed the issue by adding a 1µs delay for the HSYNC signal to match the display signal. &lt;br /&gt;
&lt;br /&gt;
So now we have a bigger issue: on CRTCs 3/4, HSYNC occurs 1µs later than on CRTCs 0/1/2. Interrupts being dependent on HSYNC, this is a serious compatibility issue for time-sensitive code. It also explains why the CTM monitor has to be calibrated differently on CRTCs 3/4. Fortunately, the issue is easy to fix, by adjusting the HSYNC width with CRTC register 3.&lt;br /&gt;
&lt;br /&gt;
=== Discolouration effect ===&lt;br /&gt;
&lt;br /&gt;
On CRT monitors from other brands, a colour calibration can happen just after the C-HSYNC pulse.&lt;br /&gt;
&lt;br /&gt;
So even when a fully valid C-HSYNC pulse of 4µs is emitted, an HSYNC shorter than usual combined with a coloured border can induce a discolouration effect on those monitors.&lt;br /&gt;
&lt;br /&gt;
=== Screen wobbling and Fine horizontal hardware scroll ===&lt;br /&gt;
&lt;br /&gt;
These effects use invalid HSYNC signals, which are poorly supported by modern displays. However, these effects were used in commercial-era CPC games, so it's fine if you choose to use them.&lt;br /&gt;
&lt;br /&gt;
When R2 increases by 1, the screen is shifted to the left by 16 mode2 pixels.&lt;br /&gt;
&lt;br /&gt;
When R2 decreases by 1, the screen is shifted to the right by 16 mode2 pixels.&lt;br /&gt;
&lt;br /&gt;
When R3l increases by 1 (and if &amp;lt;6), the screen is shifted to the left by 8 mode2 pixels.&lt;br /&gt;
&lt;br /&gt;
When R3l decreases by 1 (and if &amp;gt;2), the screen is shifted to the right by 8 mode2 pixels.&lt;br /&gt;
&lt;br /&gt;
The shift is not instantaneous but follows a logarithmic attenuation across several raster lines. This property can be used to get even finer horizontal control by modifying R2/R3 on each raster line.&lt;br /&gt;
&lt;br /&gt;
[[Longshot]] has demonstrated [https://youtu.be/1q7RQykZoKY horizontal hardware scroll] with one-pixel precision in mode1 on all CRTCs. However, because you have to synchronize with each line, it takes a lot of CPU time if it's done in fullscreen (272 lines).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VSYNC ==&lt;br /&gt;
&lt;br /&gt;
The VSYNC signal from the CRTC is not directly connected to the display. It is passed to the [[Gate Array]] for further modification. See its wiki page.&lt;br /&gt;
&lt;br /&gt;
While VSYNC is active, all the CRTC counters continue to increment normally and addresses continue to be generated.&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, while a VSYNC is ongoing, the condition VCC=R7 is ignored. So we cannot trigger a new VSYNC during a VSYNC. &lt;br /&gt;
&lt;br /&gt;
On CRTCs 0/1/2, the sole condition to trigger a VSYNC is that VCC=R7. While on CRTCs 3/4, it is necessary to have VCC=R7 and HCC=0 and VLC=0 to trigger a VSYNC.&lt;br /&gt;
&lt;br /&gt;
=== Blocked VSYNC ===&lt;br /&gt;
&lt;br /&gt;
On CRTC 0, if R7 is modified with the value of VCC when HCC&amp;lt;2, we are in blocked VSYNC. Then, the VSYNC can no longer occur on VCC=R7 until an unblocking condition is produced (VCC or R7 update). Source: §16.4 &amp;quot;Conditions to consider&amp;quot; of the CRTC Compendium&lt;br /&gt;
&lt;br /&gt;
=== Ghost VSYNC ===&lt;br /&gt;
&lt;br /&gt;
On CRTC 2, if a VSYNC is triggered during an HSYNC, the CRTC produces a ghost VSYNC. The CRTC then counts the lines as if a VSYNC were taking place by preventing a new VSYNC from occurring, but without the VSYNC pin being enabled.&lt;br /&gt;
&lt;br /&gt;
=== PPI VSYNC ===&lt;br /&gt;
&lt;br /&gt;
The VSYNC pin of the CRTC is directly connected to bit0 of port B of the PPI. There is no delay involved.&lt;br /&gt;
&lt;br /&gt;
On Amstrad CPC (not Plus!), it is also possible to reverse the direction of PPI port B to output a &amp;quot;fake&amp;quot; VSYNC signal directly from the PPI to the Gate Array.&lt;br /&gt;
&lt;br /&gt;
As an exception, the Ghost VSYNC of CRTC 2 overpowers the Fake VSYNC.&lt;br /&gt;
&lt;br /&gt;
=== Subpixel vertical hardware scroll ===&lt;br /&gt;
&lt;br /&gt;
By tuning very precisely when the VSYNC signal is sent to the monitor,  Longshot has demonstrated [https://youtu.be/bSjRU6Wye00 vertical hardware scroll] with a precision of 1/128th of a pixel. Furthermore, subpixel vertical scrolling consumes very little CPU.&lt;br /&gt;
&lt;br /&gt;
=== Mid-VSYNC ===&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, in both interlace modes, a mid-VSYNC is generated when VCC=R7 on the even field. The VSYNC pulse starts in the middle of the raster line, at HCC=R0/2.&lt;br /&gt;
&lt;br /&gt;
As an exception, on CRTCs 3/4, if R7=0 then mid-VSYNC will instead occur on the odd field. Source: §19.7 &amp;quot;Mid-VSYNC&amp;quot; of the CRTC Compendium.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Interlace modes ==&lt;br /&gt;
&lt;br /&gt;
Note: Some details about the CRTC interlace implementations are missing in this article. Consider it as an introduction to the topic.&lt;br /&gt;
&lt;br /&gt;
[[File:CRTC Interlace modes.png]]&lt;br /&gt;
&lt;br /&gt;
For a CRTC character line with n raster lines, R9 must be set to n-1 on all CRTCs, regardless of the interlace settings. The exception is for CRTCs 0/3/4 in IVM mode, where R9 must be set to n-2.&lt;br /&gt;
&lt;br /&gt;
=== Interlace sync mode (ISM) ===&lt;br /&gt;
&lt;br /&gt;
In this mode, the same information is painted in both fields to enhance readability. Reprogramming the CRTC is not necessary.&lt;br /&gt;
&lt;br /&gt;
=== Interlace sync and video mode (IVM) ===&lt;br /&gt;
&lt;br /&gt;
In this mode, alternating lines are displayed in the even and odd field to double the resolution.&lt;br /&gt;
&lt;br /&gt;
On the even field, the CRTC displays the lines for which VLC is even. On the odd field, the CRTC displays the lines for which VLC is odd.&lt;br /&gt;
&lt;br /&gt;
It is necessary to reprogram the CRTC as if we were building a frame of 624 lines.&lt;br /&gt;
&lt;br /&gt;
CRTC 2 is the exception: R4, R5, R6, R7 do not need to be reprogrammed as it considers each character line to be a double character line.&lt;br /&gt;
&lt;br /&gt;
=== Interlace adjustment line ===&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, in both interlace modes, an additional line (the 625th line) is added automatically by the CRTC at the end of the even field. This line is added after the lines of the vertical adjustment mode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRTC registers ==&lt;br /&gt;
&lt;br /&gt;
The Internal registers of the 6845 are:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!rowspan=2|Register Index&lt;br /&gt;
!rowspan=2|Register Name&lt;br /&gt;
!colspan=3|Read/Write&lt;br /&gt;
!rowspan=2|Range&lt;br /&gt;
!rowspan=2|CPC Setting&lt;br /&gt;
!rowspan=2|Notes&lt;br /&gt;
|-&lt;br /&gt;
!CRTC 0&lt;br /&gt;
!CRTCs 1/2&lt;br /&gt;
!CRTCs 3/4&lt;br /&gt;
|-&lt;br /&gt;
|0||Horizontal Total (-1)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||00000000||63||Width of the screen, in characters. Should always be 63 (64 characters). 1 character == 1μs.&lt;br /&gt;
|-&lt;br /&gt;
|1||Horizontal Displayed||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||00000000||40||Number of characters displayed. Once horizontal character count (HCC) matches this value, DISPTMG is set to 1.&lt;br /&gt;
|-&lt;br /&gt;
|2||Horizontal Sync Position||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||00000000||46||When to start the HSync signal.&lt;br /&gt;
|-&lt;br /&gt;
|3||Horizontal and Vertical Sync Widths||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||VVVVHHHH||128+14||VSync width in scan-lines (Not present on all CRTCs, fixed to 16 lines on these) ; HSync pulse width in characters.&lt;br /&gt;
|-&lt;br /&gt;
|4||Vertical Total (-1)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||x0000000||38||Height of the screen, in characters.&lt;br /&gt;
|-&lt;br /&gt;
|5||Vertical Total Adjust||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||xxx00000||0||Measured in scanlines, can be used for smooth vertical scrolling on CPC.&lt;br /&gt;
|-&lt;br /&gt;
|6||Vertical Displayed||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||x0000000||25||Height of displayed screen in characters. Once vertical character count (VCC) matches this value, DISPTMG is set to 1.&lt;br /&gt;
|-&lt;br /&gt;
|7||Vertical Sync Position||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||x0000000||30||When to start the VSync signal, in characters.&lt;br /&gt;
|-&lt;br /&gt;
|8||Interlace and Skew||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||CCDDxxII||0||CC: Cursor Skew (Only in CRTCs 0, 3 and 4). DD: Display Skew (Only in CRTCs 0, 3 and 4). II: Interlace Mode.&lt;br /&gt;
|-&lt;br /&gt;
|9||Maximum Raster Address (aka Number of Scan Lines) (-1)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||xxx00000||7||Maximum scan line address on CPC can hold between 0 and 7, higher values' upper bits are ignored.&lt;br /&gt;
|-&lt;br /&gt;
|10||Cursor Start Raster||style=&amp;quot;text-align: center;&amp;quot;|Write||style=&amp;quot;text-align: center;&amp;quot;|Write||Read/Write||xBP00000||0||B = Blink On/Off; P = Blink Period Control (16 or 32 frames). Sets first raster row of character that cursor is on to invert.&lt;br /&gt;
|-&lt;br /&gt;
|11||Cursor End Raster||style=&amp;quot;text-align: center;&amp;quot;|Write||style=&amp;quot;text-align: center;&amp;quot;|Write||Read/Write||xxx00000||0||Sets last raster row of character that cursor is on to invert.&lt;br /&gt;
|-&lt;br /&gt;
|12||Display Start Address (High)||Read/Write||style=&amp;quot;text-align: center;&amp;quot;|Write||Read/Write||xx000000||48||On Amstrad Plus, bit7 of the printer port is controlled by bit3 of CRTC R12 (ie. bit11 of Display Start Address).&lt;br /&gt;
|-&lt;br /&gt;
|13||Display Start Address (Low)||Read/Write||style=&amp;quot;text-align: center;&amp;quot;|Write||Read/Write||00000000||0||Allows you to offset the start of screen memory for hardware scrolling, and if using memory from address &amp;amp;0000 with the firmware.&lt;br /&gt;
|-&lt;br /&gt;
|14||Cursor Address (High)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Read/Write||xx000000||0||&lt;br /&gt;
|-&lt;br /&gt;
|15||Cursor Address (Low)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Read/Write||00000000||0||&lt;br /&gt;
|-&lt;br /&gt;
|16||Light Pen Address (High)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Read||xx000000||||On CRTC1, bit6 of Status register goes to 0 when R16 is read.&lt;br /&gt;
|-&lt;br /&gt;
|17||Light Pen Address (Low)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Read||00000000||||On CRTC1, bit6 of Status register goes to 0 when R17 is read.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Screen size ===&lt;br /&gt;
&lt;br /&gt;
We can calculate the screen size in words by multiplying R1 x R6 x (R9+1). And then multiplying the result by 2 to have the screen size in bytes.&lt;br /&gt;
&lt;br /&gt;
With the default CRTC values, we obtain 40 x 25 x (7+1) x 2 = 16000 bytes.&lt;br /&gt;
&lt;br /&gt;
So we can observe that only part of the 16384 bytes (=16KB) page of VRAM is actually displayed on screen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Register access ===&lt;br /&gt;
&lt;br /&gt;
On CRTCs 0/1/2, if a Write Only register is read from, &amp;quot;0&amp;quot; is returned. The register accessing scheme on CRTCs 3/4 makes it impossible to happen.&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, only the 5 least significant bits of the selected register number are considered to write to a register. The other bits are ignored.&lt;br /&gt;
&lt;br /&gt;
On CRTCs 0/1/2, only the 5 least significant bits of the selected register number are considered to read a register:&lt;br /&gt;
* On CRTCs 0/2, registers 18-31 read as 0&lt;br /&gt;
* On CRTC 1, registers 18-30 read as 0, register 31 reads as &amp;amp;FF&lt;br /&gt;
&lt;br /&gt;
On CRTCs 3/4, only the 3 least significant bits of the selected register number are considered to read a register, according to the following table:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Nb&lt;br /&gt;
!Register&lt;br /&gt;
!Definition&lt;br /&gt;
|-&lt;br /&gt;
|0||R16||Light Pen Address (High)&lt;br /&gt;
|-&lt;br /&gt;
|1||R17||Light Pen Address (Low)&lt;br /&gt;
|-&lt;br /&gt;
|2||R10||Cursor Start Raster&lt;br /&gt;
|-&lt;br /&gt;
|3||R11||Cursor End Raster&lt;br /&gt;
|-&lt;br /&gt;
|4||R12||Display Start Address (High)&lt;br /&gt;
|-&lt;br /&gt;
|5||R13||Display Start Address (Low)&lt;br /&gt;
|-&lt;br /&gt;
|6||R14||Cursor Address (High)&lt;br /&gt;
|-&lt;br /&gt;
|7||R15||Cursor Address (Low)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRTC register differences ==&lt;br /&gt;
&lt;br /&gt;
CRTC types 3 and 4 are identical in every way, except for the unlocking mechanism, split screen, hardware soft scroll and 8-bit printer port functionalities specific to the [[ASIC]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== R10/R11 on ASIC/Pre-ASIC  ===&lt;br /&gt;
&lt;br /&gt;
The cursor raster registers R10/R11 act as status registers when read on CRTCs 3/4. They behave as normal cursor raster registers upon write.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! R10 - Bit number&lt;br /&gt;
! Bit value&lt;br /&gt;
! Event&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|1&lt;br /&gt;
|C0=R0&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|C0=R0/2&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|C0=R1-1 (if R0&amp;gt;=R1)&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|0&lt;br /&gt;
|C0=R2&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|C0=R2+R3&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|0&lt;br /&gt;
1&lt;br /&gt;
|R3h&amp;gt;0 : C0=0..R0 on the line R3h from Vsync (C4=R7)&lt;br /&gt;
R3h=0 : C0=0..R0 over 15 lines from Vsync (C4=R7)&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|1&lt;br /&gt;
|Always 1&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|0&lt;br /&gt;
0&lt;br /&gt;
|C0=0..R0-1 : VMA.Lsb=0xFF&lt;br /&gt;
C0=R0 : VMA'.Lsb=0x00 (same cond if C0=R0=0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! R11 - Bit number&lt;br /&gt;
! Bit value&lt;br /&gt;
! Event&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|C4=R4 and C9=R9 and C0=R0 : Last char of screen&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|C4=R6-1 and C9=R9 and C0=R0 : Last char displayed&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|C4=R7-1 and C9=R9 and C0=R0 : Last char before Vsync&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|0/1&lt;br /&gt;
|Timer 16 CRTC frames&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|Always 1&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|0&lt;br /&gt;
|C9=R9 : C0=0 to R0&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|0&lt;br /&gt;
|Always 0&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|1&lt;br /&gt;
|(C9=R9 and C0=R0) or (C9=0 and C0=0 to R0-1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Horizontal and Vertical Sync (R3) ===&lt;br /&gt;
&lt;br /&gt;
Type 0:&lt;br /&gt;
*Bits 7..4 define Vertical Sync Width. If 0 is programmed, this gives 16 lines of VSYNC.&lt;br /&gt;
*Bits 3..0 define Horizontal Sync Width. If 0 is programmed, no HSYNC is generated (and therefore, no interrupts).&lt;br /&gt;
&lt;br /&gt;
Type 1:&lt;br /&gt;
*Bits 7..4 are ignored. Vertical Sync is fixed at 16 lines.&lt;br /&gt;
*Bits 3..0 define Horizontal Sync Width. If 0 is programmed, no HSYNC is generated (and therefore, no interrupts).&lt;br /&gt;
&lt;br /&gt;
Type 2:&lt;br /&gt;
*Bits 7..4 are ignored. Vertical Sync is fixed at 16 lines.&lt;br /&gt;
*Bits 3..0 define Horizontal Sync Width. If 0 is programmed, this gives a HSYNC width of 16.&lt;br /&gt;
&lt;br /&gt;
Types 3/4:&lt;br /&gt;
*Bits 7..4 define Vertical Sync Width. If 0 is programmed, this gives 16 lines of VSYNC.&lt;br /&gt;
*Bits 3..0 define Horizontal Sync Width. If 0 is programmed, this gives a HSYNC width of 16.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Interlace and Skew (R8) ===&lt;br /&gt;
&lt;br /&gt;
Types 0/3/4:&lt;br /&gt;
*Bits 7..6 define the skew (delay) of the CUDISP signal (00 = Non-skew ; 01 = One-character skew ; 10 = Two-character skew ; 11 = Non-output).&lt;br /&gt;
*Bits 5..4 define the skew (delay) of the DISPTMG signal (00 = Non-skew ; 01 = One-character skew ; 10 = Two-character skew ; 11 = Non-output).&lt;br /&gt;
*Bits 3..2 are ignored.&lt;br /&gt;
*Bits 1..0 define the interlace mode (00 = No Interlace ; 01 = Interlace Sync ; 10 = No Interlace ; 11 = Interlace Sync and Video).&lt;br /&gt;
&lt;br /&gt;
Types 1/2:&lt;br /&gt;
*Bits 7..2 are ignored.&lt;br /&gt;
*Bits 1..0 define the interlace mode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== R31 on Type 1 ===&lt;br /&gt;
&lt;br /&gt;
R31 is described in the UM6845R documentation as &amp;quot;Dummy Register&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Its use is described in the documentation for the Rockwell R6545 in combination with R18, R19 and R8 and the Status Register.&lt;br /&gt;
&lt;br /&gt;
In the UM6845R it appears to have no effect. Reading and writing does nothing. Reading it returns &amp;amp;FF.&lt;br /&gt;
&lt;br /&gt;
R31 doesn't exist on CRTCs 0/2/3/4.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Status register on Type 1 ===&lt;br /&gt;
&lt;br /&gt;
The UM6845R has a status register that can be read using port &amp;amp;BExx.&lt;br /&gt;
&lt;br /&gt;
Bit 6 is set to 1 if there is a strobe input to the /LPEN signal. It is cleared to 0 when either R17 or R16 (LPEN address) of the CRTC are read. It signals there is a valid LPEN input. On Kevin Thacker's CPC with UM6845R, it is triggered at power on, R17 and R16 have the values 0 when read.&lt;br /&gt;
&lt;br /&gt;
Bit 5 is set to 1 when CRTC is in &amp;quot;vertical blanking&amp;quot;. Vertical blanking is when the vertical border is active. i.e. VCC&amp;gt;=R6. &lt;br /&gt;
&lt;br /&gt;
It is cleared when the frame is started (VCC=0). It is not directly related to the DISPTMG output (used by the CPC to display the border colour) because that output is a combination of horizontal and vertical blanking.&lt;br /&gt;
This bit will be 0 when pixels are being displayed.&lt;br /&gt;
&lt;br /&gt;
All the other bits read as 0 and don't have any function.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRTC Type Detection ==&lt;br /&gt;
&lt;br /&gt;
It is possible to detect the CRTC Type using software methods, and this is done to: &lt;br /&gt;
&lt;br /&gt;
* warn that the software was not designed for the detected 6845 and may function incorrectly&lt;br /&gt;
* to adapt the software so that it will run with the detected 6845 &lt;br /&gt;
* In most cases, the type of the detected 6845 is reported&lt;br /&gt;
&lt;br /&gt;
Detection routine in BASIC:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10 MODE 1:' Reinitialize screen&lt;br /&gt;
20 OUT &amp;amp;BC00,31:IF INP(&amp;amp;BF00)=255 THEN PRINT&amp;quot;crtc 1&amp;quot;:END&lt;br /&gt;
30 OUT &amp;amp;BC00,12:IF INP(&amp;amp;BF00)=0 THEN PRINT&amp;quot;crtc 2&amp;quot;:END&lt;br /&gt;
40 OUT &amp;amp;BC00,20:IF INP(&amp;amp;BF00)=0 THEN PRINT&amp;quot;crtc 0&amp;quot;:END&lt;br /&gt;
50 PRINT&amp;quot;crtc 3/4&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Distinguishing between CRTCs 3 and 4 can be done by trying to [[Programming:Unlocking ASIC|unlock the ASIC]] or by testing the [[8255|PPI chip]]. On ASIC, if PPI Port B is set as output it will behave the same as input.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRTC Timing Diagrams ==&lt;br /&gt;
[[File:CRTC Timing Diagram Rockwell.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:CRTC timing small.gif]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Internal Counters ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Counter name&lt;br /&gt;
! Abbr&lt;br /&gt;
! Alternate name&lt;br /&gt;
! Compared with&lt;br /&gt;
! Comment&lt;br /&gt;
|-&lt;br /&gt;
|Horizontal Character Counter&lt;br /&gt;
|HCC&lt;br /&gt;
|C0&lt;br /&gt;
|R0, R1, R2&lt;br /&gt;
| Increments on every clock cycle&lt;br /&gt;
|-&lt;br /&gt;
|Horizontal Sync Counter&lt;br /&gt;
|HSC&lt;br /&gt;
|C3l&lt;br /&gt;
|R3l&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Vertical Character Counter&lt;br /&gt;
|VCC&lt;br /&gt;
|C4&lt;br /&gt;
|R4, R6, R7&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Vertical Sync Counter&lt;br /&gt;
|VSC&lt;br /&gt;
|C3h&lt;br /&gt;
|R3h&lt;br /&gt;
|R3h is fixed to 0 on CRTCs 1/2. This gives 16 lines of VSYNC&lt;br /&gt;
|-&lt;br /&gt;
|Vertical Line Counter&lt;br /&gt;
|VLC&lt;br /&gt;
|C9&lt;br /&gt;
|R9, R10, R11&lt;br /&gt;
|If not in IVM mode, this counter is exposed on CRTC pins RA0..RA4&lt;br /&gt;
|-&lt;br /&gt;
|Vertical Total Adjust Counter&lt;br /&gt;
|VTAC&lt;br /&gt;
|C5&lt;br /&gt;
|R5&lt;br /&gt;
|This counter does not exist on CRTCs 0/3/4. C9 is reused instead&lt;br /&gt;
|-&lt;br /&gt;
|Frame Counter&lt;br /&gt;
|FC&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|Used to alternate frames in interlace and for CRTC cursor blinking&lt;br /&gt;
|-&lt;br /&gt;
|Memory Address&lt;br /&gt;
|MA&lt;br /&gt;
|&lt;br /&gt;
|R14/R15&lt;br /&gt;
|This counter is exposed on CRTC pins MA0..MA13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When IVM mode is activated, VLC continues to increment normally. However, RA is not identical to VLC anymore. Instead, VLC is considered shifted left by 1 bit, and bit0 represents the parity of the field (even/odd).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRTC counter differences ==&lt;br /&gt;
&lt;br /&gt;
=== MA buffering ===&lt;br /&gt;
&lt;br /&gt;
No matter its type, the CRTC never buffers any of its counters, except for the video pointer MA. The buffer MA' is needed because MA has to be reloaded at the beginning of every raster line.&lt;br /&gt;
&lt;br /&gt;
At the end of the display of the last raster line of each character line (ie. when HCC=R1 and VLC=R9), MA' captures the current value of MA.&lt;br /&gt;
&lt;br /&gt;
CRTC 2 is the exception: at the end of the display of the last raster line of the frame, MA' captures R12/R13 instead of MA.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MA reload ===&lt;br /&gt;
&lt;br /&gt;
On CRTCs 0/3/4, at the beginning of the first raster line of the frame, MA and MA' are loaded with R12/R13. Otherwise, MA is loaded with MA'.&lt;br /&gt;
&lt;br /&gt;
On CRTC 2, at the beginning of every raster line of the frame (including the first one), MA is loaded with MA'.&lt;br /&gt;
&lt;br /&gt;
On CRTC 1, at the beginning of every raster line of the first character line of the frame (ie. when VCC=0), MA is loaded with R12/R13 instead of MA'. '''This is a major source of incompatibility if the programmer does not take care.''' In demos and games, to be compatible with all CRTCs, program R12/R13 only when VCC≠0. This will then take effect at the next CRTC frame start.&lt;br /&gt;
&lt;br /&gt;
==== Rupture For Dummies (R5 bug) ====&lt;br /&gt;
&lt;br /&gt;
CRTC 1 has a bug that occurs when R5 is updated with a non-zero value when HCC=R0 and VLC≠R9, but only when R5 was previously 0. This changes the MA update source to R12/R13 instead of MA'. The CRTC then loads R12/R13 into MA at the beginning of every scanline, regardless of the VCC value.&lt;br /&gt;
&lt;br /&gt;
This R5 bug also messes with the frame parity management. However, it is possible to fix the parity of the frame by activating/deactivating the IVM interlace mode.&lt;br /&gt;
&lt;br /&gt;
The vertical adjustment operates normally after the RFD is triggered. If vertical adjustment is not needed, R5 can be reset at any time after the RFD is activated.&lt;br /&gt;
&lt;br /&gt;
This effect is used in the [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=19308 DSC4 demo].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== VSC (C3h) overflow ===&lt;br /&gt;
&lt;br /&gt;
During a VSYNC on CRTCs 0/3/4, if VSYNC Width (R3h) is changed with a value less than the current VSC, then VSC overflows and will count up to its maximum value (15) before looping back and counting up again until it reaches the new value of R3h.&lt;br /&gt;
&lt;br /&gt;
On CRTCs 1/2, the VSYNC width is fixed to 16 characters. It is not possible to modify it. Therefore, VSC cannot be overflowed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HSC (C3l) overflow ===&lt;br /&gt;
&lt;br /&gt;
During an HSYNC, if HSYNC Width (R3l) is changed with a value less than the current HSC, then HSC overflows and will count up to its maximum value (15) before looping back and counting up again until it reaches the new value of R3l.&lt;br /&gt;
&lt;br /&gt;
The only exception is for CRTC 1 with a value of 0, which immediately cancels the current HSYNC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== VCC (C4) overflow ===&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, if Vertical Total (R4) is changed with a value less than VCC, then:&lt;br /&gt;
* if this update was done when VCC &amp;lt; R4, then VCC overflows and will count up to its maximum value (127) before looping back and counting up again until it reaches the new value of R4&lt;br /&gt;
* if this update was done when VCC = R4, the current character line was already decided to be the last one of the current frame. No update to R4 will make the CRTC change its mind for the current frame&lt;br /&gt;
&lt;br /&gt;
The only exception when VCC = R4 is for CRTC 1 with a value of 0, which will cause VCC to overflow.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HCC (C0) overflow ===&lt;br /&gt;
&lt;br /&gt;
If Horizontal Total (R0) is changed with a value less than the current HCC, then:&lt;br /&gt;
* on CRTCs 0/1/2, HCC overflows and will count up to its maximum value (255) before looping back and counting up again until it reaches the new value of R0&lt;br /&gt;
* on CRTCs 3/4, the current line is considered finished and HCC is immediately reset to 0 on the next line&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== VLC (C9) overflow ===&lt;br /&gt;
&lt;br /&gt;
If Number of Scan Lines (R9) is changed with a value less than the current VLC, then:&lt;br /&gt;
* on CRTCs 0/1/2, VLC overflows and will count up to its maximum value (31) before looping back and counting up again until it reaches the new value of R9&lt;br /&gt;
* on CRTCs 3/4, the current line is considered the last one of this CRTC character and VLC will reset to 0 on the next line&lt;br /&gt;
&lt;br /&gt;
As an exception, on CRTCs 0/2, if VLC is modified during the last frame line, then the updated value will not be considered for the current frame.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== VTAC (C5/C9) overflow ===&lt;br /&gt;
&lt;br /&gt;
During vertical adjustment mode, if Vertical Total Adjust (R5) is changed with a value less than the current VTAC, then:&lt;br /&gt;
* on CRTCs 0/1/2, VTAC overflows and will count up to its maximum value (31) before looping back and counting up again until it reaches the new value of R5&lt;br /&gt;
* on CRTCs 3/4, the current line is considered the last one of the current frame and vertical adjustment will end&lt;br /&gt;
&lt;br /&gt;
As an exception, on CRTCs 0/2, if VTAC is modified during the last frame line, then the updated value will not be considered for the current frame.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Vertical Adjustment mode ===&lt;br /&gt;
&lt;br /&gt;
On CRTCs 3/4, this mode does not increment VCC, so VCC remains equal to R4.&lt;br /&gt;
&lt;br /&gt;
On CRTC 0, this mode increments VCC, causing it to exceed R4, but this increment occurs only once.&lt;br /&gt;
&lt;br /&gt;
On CRTCs 1/2, this mode increments VCC, causing it to exceed R4, and this increment can happen multiple times depending on the values of R5 and R9.&lt;br /&gt;
&lt;br /&gt;
Also, only CRTCs 1/2 have a dedicated C5 counter. On CRTCs 0/3/4, during Vertical Adjustment, C9 has to fullfil the VTAC role which means that it cannot fullfil its VLC role. This impacts address generation as R9 is not considered anymore.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Counter freezes ===&lt;br /&gt;
&lt;br /&gt;
On CRTCs 1/2/3/4, R0 accepts all values without causing any problems for counters.&lt;br /&gt;
&lt;br /&gt;
On CRTC 0:&lt;br /&gt;
* Setting R0 to 0 will cause numerous issues that stem from the fact that VLC is frozen. As HCC never reaches 1, the logic that increments VLC is never triggered.&lt;br /&gt;
* The logic that triggers vertical adjustment is broken if R0&amp;lt;2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Block Diagrams ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Hitachi&lt;br /&gt;
!UMC&lt;br /&gt;
!Motorola&lt;br /&gt;
|-&lt;br /&gt;
|[[File:CRTC Block Diagram.png|Hitachi]]&lt;br /&gt;
|[[File:UMC CRTC Block Diagram.png|UMC]]&lt;br /&gt;
|[[File:Motorola CRTC Block Diagram.png|Motorola]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRTC-II (aka Type 5) ==&lt;br /&gt;
&lt;br /&gt;
The [[Media:CRTC-5-HD6345.pdf|HD6345 datasheet]] states it is upward-compatible with the HD6845S in pin and software.&lt;br /&gt;
&lt;br /&gt;
This chip was never used by Amstrad. However, some CPC enthusiasts have replaced the original CRTC chip in their CPC with this one.&lt;br /&gt;
&lt;br /&gt;
With this chip, split-screen becomes easy: [https://thecheshirec.at/2024/05/20/des-splitscreens-en-basic-sur-crtc5/ Split-screen in BASIC]. And 3 new graphics modes (160x100x16c, 320x100x4c, 640x100x2c) are available: [https://thecheshirec.at/2024/11/10/trois-nouveaux-modes-video-grace-au-crtc-5/ New graphics modes in BASIC].&lt;br /&gt;
&lt;br /&gt;
This is the cheapest way to upgrade the CPC's graphics capabilities, costing only 1.29€. [https://thecheshirec.at/2024/05/19/des-crtc5-a-129e/ Source]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Datasheets ==&lt;br /&gt;
&lt;br /&gt;
==== Used by Amstrad ====&lt;br /&gt;
* [[Media:hd6845.hitachi.pdf|HD6845S (Hitachi)]] aka Type 0&lt;br /&gt;
* [[Media:UM6845-UMC.pdf|UM6845 (UMC)]] aka Type 0&lt;br /&gt;
* [[Media:Um6845r.umc.pdf|UM6845R (UMC)]] aka Type 1&lt;br /&gt;
* [[Media:Mc6845.motorola.pdf|MC6845 (Motorola)]] aka Type 2&lt;br /&gt;
* [[Media:CPC_Plus_Asic_Schematic.GIF|AMS40489 (Amstrad)]] aka Type 3 ([[ASIC]])&lt;br /&gt;
* [[AMS40226 (Amstrad)]] aka Type 4 (Pre-ASIC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Unused clones ====&lt;br /&gt;
* [[CM607P]] a Bulgarian clone made in Pravetz factory. It is used in the [[Aleste 520EX]].&lt;br /&gt;
* [[Media:hd6845.hitachi.pdf|HD6845R]] by Hitachi. According to Kevin Thacker, the [[KC Compact]] used HD6845R only.&lt;br /&gt;
* [[Media:UM6845E-UMC.pdf|UM6845E]] by UMC&lt;br /&gt;
* [[Media:Mc6845.pdf|MC6845-1]] by Motorola&lt;br /&gt;
* [[Media:F6845.pdf|F6845]] by Fairchild&lt;br /&gt;
* [[Media:EF6845P.pdf|EF6845]] by Thomson Semiconductors&lt;br /&gt;
* [[Media:VL6845 VTi.pdf|VL6845]] by VTi&lt;br /&gt;
* [[Media:C6845 CRTC (CAST).pdf|C6845]] by Cast&lt;br /&gt;
* [[Media:MB89321B FUJ.pdf|MB89321B]] by Fujitsu. It is pin-compatible with the 6845&lt;br /&gt;
* [[Media:MB89321A datasheet CRTC.pdf|MB89321A]] by Fujitsu. Enhanced version that adds smooth scroll, screen partitioning, independent scrolling of screen partitions, and other convenient features&lt;br /&gt;
* [[Media:Mos 6545-1 crtc.pdf|MOS 6545]] (MOS, Rockwell, Synertek) is pin-compatible with the 6845. Its differences are found in the R8 register.&lt;br /&gt;
* [https://www.cpcwiki.eu/forum/other-retro/interesting-discussion-about-the-c128-s-cpm-poor-performance/msg223058/#msg223058 MOS 8563] It is an evolution of the 6545/6845 CRTC chip, with blitter abilities to autonomously perform block memory copies within its dedicated video RAM.&lt;br /&gt;
* [https://github.com/hoglet67/BeebFpga/blob/dev/src/common/mc6845.vhd BeebFpga] [https://github.com/MiSTer-devel/Amstrad_MiSTer/blob/master/rtl/UM6845R.v MiSTer] [https://opencores.org/websvn/filedetails?repname=System09&amp;amp;path=%2FSystem09%2Ftrunk%2Frtl%2FVHDL%2Fcrtc6845.vhd OpenCores] Verilog/VHDL implementations of the 6845&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tools about CRTC ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.cpcwiki.eu/imgs/9/99/Elmar_Krieger-SPECIAL_EFFECTS.dsk  some BASIC tools to detect CRTC types 0-1-2 and show some effects] by [[Elmar Krieger]] (DSK for Emulators)&lt;br /&gt;
* [[File:Shaker26.dsk]] Shaker - Suite of CRTC tests associated with the CPC CRTC compendium (many of them will not work correctly on emulators and that was the purpose of the tests, to help create more compatible emulation)&lt;br /&gt;
* [[File:Shaker addon.dsk]] Shaker Add-On (Pixel 1 Hard Scroll / Vertical Rupture all Crtc)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/6845 Wikipedia on the CRTC]&lt;br /&gt;
* [[Media:ACCC1.8-EN.pdf]] CPC CRTC Compendium - Latest (04/2024!) document containing in-depth info about CRTC programming on CPC.&lt;br /&gt;
* [[Media:CRTC Compendium Podcast.mp3]] The CRTC Compendium digested in podcast format&lt;br /&gt;
* [http://www.grimware.org/doku.php/documentations/devices/crtc CRTC documentation from Grimware]&lt;br /&gt;
* [http://quasar.cpcscene.net/doku.php?id=assem:crtc Quasar CRTC documentation (in french)]&lt;br /&gt;
* [https://pulkomandy.github.io/shinra.github.io/crtc.html PulkoMandy's table] [https://www.theoddys.com/acorn/the_6845_crtc/6845%20Variants.xlsx Oddy's table] Differences between CRTC types&lt;br /&gt;
* [[Media:Dossier Rupture(Gozeur Paradox).pdf]]&lt;br /&gt;
* [[Media:Dossier CRTC(Ramlaid Mortel).pdf]] Les entrailles du CRTC&lt;br /&gt;
* [https://thecheshirec.at/tag/crtc6845/ Leçons CRTC (CheshireCat)]&lt;br /&gt;
* [https://martin.hinner.info/vga/pal.html PAL video timing specification]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related pages==&lt;br /&gt;
&lt;br /&gt;
*[[Gate Array]]&lt;br /&gt;
&lt;br /&gt;
*[[ASIC]]&lt;br /&gt;
&lt;br /&gt;
*[[Video modes]]&lt;br /&gt;
&lt;br /&gt;
*[[Synchronising with the CRTC and display]] : technic and details on the relationship between Gate Array and CRTC.&lt;br /&gt;
&lt;br /&gt;
*[[VIDI digitizer]] This extension contains its own CRTC chip&lt;br /&gt;
&lt;br /&gt;
[[Category:Hardware]] [[Category:CPC Internal Components]] [[Category:Electronic Component]] [[Category:Programming]] [[Category:Datasheet]] [[Category:Graphic]]&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=CRTC&amp;diff=126058</id>
		<title>CRTC</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=CRTC&amp;diff=126058"/>
				<updated>2025-05-18T22:15:24Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: /* CRTC Type Detection */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:CRTC Type 0.jpg|thumb|right|CRTC Type 0 (Hitachi)]]&lt;br /&gt;
[[File:CRTC UMC Type 0.png|thumb|right|CRTC Type 0 (UMC)]]&lt;br /&gt;
[[File:CRTC Type 1.png|thumb|right|CRTC Type 1]]&lt;br /&gt;
[[File:CRTC6845-Type2.jpg|thumb|right|CRTC Type 2]]&lt;br /&gt;
&lt;br /&gt;
The 6845 '''CRTC''' (Cathode Ray Tube Controller) chip was created by Motorola in 1977. It works with the [[Gate Array]] to generate the video signal on the Amstrad CPC.&lt;br /&gt;
&lt;br /&gt;
This chip is also used in the [[BBC Micro]], [[Lynx|Camputers Lynx]], [[EG2000 Colour Genie]], [[Sharp X1]], [[MicroBee]], [[Commodore PET]] and the early graphics cards (MDA, Hercules, CGA, Plantronics Colorplus) for [[IBM PC]]. And it is found in some [https://www.msx.org/wiki/Hitachi_HD6845 MSX1 expansions], providing an 80-column text mode.&lt;br /&gt;
&lt;br /&gt;
It's important to note that the CRTC chip is primarily designed for character-based displays. It explains why, on the Amstrad CPC, the video memory is organized into a grid of characters rather than a purely linear bitmap.&lt;br /&gt;
&lt;br /&gt;
NOTES: &lt;br /&gt;
* This document describes the functionality in terms of the CPC with its separate CRTC and Gate-Array. The Plus has both integrated into the same IC, but could be considered to have two functional blocks, one for CRTC and one for Gate-Array. In this document the term 'Gate-Array' is used, but this also applies to the ASIC.&lt;br /&gt;
* Much information has been drawn from the [https://shaker.logonsystem.eu/ CRTC Compendium] documentation. For more details, timing diagrams, code examples, coding tips, and more, refer to that documentation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The 6845 Cathode Ray Tube Controller (CRTC) is a programmable IC used to generate video displays. This IC is used in a variety of computers including the Amstrad CPC, Amstrad Plus and KC Compact. &lt;br /&gt;
&lt;br /&gt;
The CRTC is a simple chip. It is made up of counters and equality operators, tied by simple logic. All the complexity stems from its multiple independent implementations with their subtle differences.&lt;br /&gt;
&lt;br /&gt;
The CRTC was a common part available from many different manufacturers. During the life of the CPC, Amstrad sourced the CRTC from various manufacturers. &lt;br /&gt;
&lt;br /&gt;
All ICs used were based on the same design but have a different implementation. As a result they do not operate identically in all situations. This document highlights these differences. &lt;br /&gt;
&lt;br /&gt;
This table lists the known ICs used, with their part number, manufacturer and type number. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Part number&lt;br /&gt;
!Manufacturer&lt;br /&gt;
!Type number (note 3)&lt;br /&gt;
|-&lt;br /&gt;
|HD6845S||Hitachi||0&lt;br /&gt;
|-&lt;br /&gt;
|UM6845||UMC||0&lt;br /&gt;
|-&lt;br /&gt;
|UM6845R||UMC||1&lt;br /&gt;
|-&lt;br /&gt;
|MC6845||Motorola||2&lt;br /&gt;
|-&lt;br /&gt;
|AMS40489||Amstrad||3 (note 1)&lt;br /&gt;
|-&lt;br /&gt;
|AMS40226||Amstrad||4 (note 2)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''NOTES''' &lt;br /&gt;
&lt;br /&gt;
1. The CRTC functionality is integrated into the CPC+ ASIC. This type exists only in the 464 Plus, 6128 Plus and GX4000. &lt;br /&gt;
&lt;br /&gt;
2. This type exists in &amp;quot;cost-down&amp;quot; CPC464 and CPC6128 systems. In the &amp;quot;cost-down&amp;quot; the CRTC functionality is integrated into a single ASIC IC. This ASIC is often refered to as the &amp;quot;Pre-ASIC&amp;quot; because it preceeded the CPC+ ASIC. The CRTC functionality of the Pre-ASIC is almost identical to the CRTC within the ASIC.&lt;br /&gt;
 &lt;br /&gt;
3. In the Amstrad community each 6845 implementation has been assigned a type number. This type identifies a group of implementations which operate in exactly the same way. The type number system was originally used by demo programmers. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Programming==&lt;br /&gt;
&lt;br /&gt;
The 6845 is selected when bit 14 of the I/O port address is set to &amp;quot;0&amp;quot;. Bit 9 and 8 of the I/O port address define the function to access. The remaining bits can be any value, but it is adviseable to set these to &amp;quot;1&amp;quot; to avoid conflict with other devices in the system.&lt;br /&gt;
&lt;br /&gt;
The recommended I/O port addresses are:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!I/O port address&lt;br /&gt;
!/CS (A14)&lt;br /&gt;
!R/W (A9)&lt;br /&gt;
!RS (A8)&lt;br /&gt;
!Function&lt;br /&gt;
!Read/Write&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;BCxx||0||0||0||Select 6845 register||Write only&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;BDxx||0||0||1||Write to selected internal 6845 register||Write only&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;BExx||0||1||0||&lt;br /&gt;
* CRTCs 0/2: —&lt;br /&gt;
* CRTC 1: Read Status Register&lt;br /&gt;
* CRTCs 3/4: Read from selected internal 6845 register&lt;br /&gt;
||Read only&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;BFxx||0||1||1||Read from selected internal 6845 register||Read only&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The CRTC is not connected to the CPU's RD and WR pins, so it cannot detect the bus's I/O direction. Therefore, executing an IN instruction to the select or write functions causes the CRTC to write the unpredictable data provided by the high-impedance bus to its registers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Z80 I/O access timings ===&lt;br /&gt;
&lt;br /&gt;
The clock provided to the CRTC by the ASIC/Pre-ASIC is phase-shifted compared to the one provided by the Gate Array.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! Instructions !! Duration !! I/O CRTCs 0/1/2 !! I/O CRTCs 3/4&lt;br /&gt;
|-&lt;br /&gt;
| OUT (C),r8 || 4 µsec || '''3rd µsec''' || 4th µsec&lt;br /&gt;
|-&lt;br /&gt;
| OUT (C),0 || 4 µsec || '''3rd µsec''' || 4th µsec&lt;br /&gt;
|-&lt;br /&gt;
| OUT (n),A || 3 µsec || 3rd µsec || 3rd µsec&lt;br /&gt;
|-&lt;br /&gt;
| OUTI || 5 µsec || 5th µsec || 5th µsec&lt;br /&gt;
|-&lt;br /&gt;
| OUTD || 5 µsec || 5th µsec || 5th µsec&lt;br /&gt;
|-&lt;br /&gt;
| IN r8,(C) || 4 µsec || 4th µsec || 4th µsec&lt;br /&gt;
|-&lt;br /&gt;
| INI || 5 µsec || '''4th µsec''' || '''4th µsec'''&lt;br /&gt;
|-&lt;br /&gt;
| IND || 5 µsec || '''4th µsec''' || '''4th µsec'''&lt;br /&gt;
|-&lt;br /&gt;
| IN A,(n) || 3 µsec || 3rd µsec || 3rd µsec&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Video Memory Address (VMA)==&lt;br /&gt;
&lt;br /&gt;
The VMA of the [[Gate Array]] is constructed from the CRTC MA and RA signals:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Video Memory Address&lt;br /&gt;
!Signal source&lt;br /&gt;
!Signal name&lt;br /&gt;
|-&lt;br /&gt;
|A15||6845||MA13 &lt;br /&gt;
|-&lt;br /&gt;
|A14||6845||MA12&lt;br /&gt;
|-&lt;br /&gt;
|A13||6845||'''RA2'''&lt;br /&gt;
|-&lt;br /&gt;
|A12||6845||'''RA1'''&lt;br /&gt;
|-&lt;br /&gt;
|A11||6845||'''RA0'''&lt;br /&gt;
|-&lt;br /&gt;
|A10||6845||MA9 &lt;br /&gt;
|-&lt;br /&gt;
|A9||6845||MA8 &lt;br /&gt;
|-&lt;br /&gt;
|A8||6845||MA7 &lt;br /&gt;
|-&lt;br /&gt;
|A7||6845||MA6 &lt;br /&gt;
|-&lt;br /&gt;
|A6||6845||MA5 &lt;br /&gt;
|-&lt;br /&gt;
|A5||6845||MA4 &lt;br /&gt;
|-&lt;br /&gt;
|A4||6845||MA3 &lt;br /&gt;
|-&lt;br /&gt;
|A3||6845||MA2 &lt;br /&gt;
|-&lt;br /&gt;
|A2||6845||MA1 &lt;br /&gt;
|-&lt;br /&gt;
|A1||6845||MA0&lt;br /&gt;
|-&lt;br /&gt;
|A0||Gate-Array||CCLK&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
CRTC generates the address, Gate Array reads the data and converts it to pixels based on its current graphics mode and palette.&lt;br /&gt;
&lt;br /&gt;
CRTC pins RA3, RA4, MA10, MA11 are not connected on CPC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Overscan bits ===&lt;br /&gt;
&lt;br /&gt;
It is possible to use 32KB screen size (used for [[Programming:Overscan|overscan]]) by setting bits 11 and 10 of Register 12 both to 1. Bits MA11 and MA10 of the address generated by the CRTC are not written on the address bus to access video memory; settings both bits to 1 is the only way to cause a carry to bit MA12 when address pass over the end of current video page to change the memory address to the next video page.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ CRTC Display Start Address&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;8&amp;quot; | Register 12&lt;br /&gt;
! colspan=&amp;quot;8&amp;quot; | Register 13&lt;br /&gt;
|-&lt;br /&gt;
! 15 !! 14 !! 13 !! 12 !! 11 !! 10 !! 9 !! 8&lt;br /&gt;
! 7 !! 6 !! 5 !! 4 !! 3 !! 2 !! 1 !! 0&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Unused&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Video Page&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Page Size&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot; | Start Address (1024 positions)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;white-space: nowrap;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-right: 32px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bit 13 !! Bit 12 !! Video Page&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0 || 0000 - 3FFF&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1 || 4000 - 7FFF&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0 || 8000 - BFFF&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1 || C000 - FFFF&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bit 11 !! Bit 10 !! Page Size&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0 || 16KB&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1 || 16KB&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0 || 16KB&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1 || '''32KB'''&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Coarse hardware scrolling ===&lt;br /&gt;
&lt;br /&gt;
The start address can be manipulated to achieve horizontal and/or vertical hardware scrolling:&lt;br /&gt;
&lt;br /&gt;
*To move right: &amp;lt;code&amp;gt;start_address := start_address + 1&amp;lt;/code&amp;gt;&lt;br /&gt;
*To move left: &amp;lt;code&amp;gt;start_address := start_address - 1&amp;lt;/code&amp;gt;&lt;br /&gt;
*To move down: &amp;lt;code&amp;gt;start_address := start_address + R1&amp;lt;/code&amp;gt;&lt;br /&gt;
*To move up: &amp;lt;code&amp;gt;start_address := start_address - R1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
However, it is a position in word (16 bits), not in byte. So, the screen will move two bytes at a time horizontally. Also, the precision will be one CRTC character vertically.&lt;br /&gt;
&lt;br /&gt;
The first game that used R12/R13 for both horizontal and vertical hardware scrolling is [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1839 Roland on the Ropes], released in 1984.&lt;br /&gt;
&lt;br /&gt;
The following BASIC program demonstrates the coarse scrolling by setting the R12 and R13 registers based on keyboard input:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10 ma%=0&lt;br /&gt;
20 IF INKEY(1)=0 THEN GOSUB 100&lt;br /&gt;
30 IF INKEY(2)=0 THEN GOSUB 300&lt;br /&gt;
40 IF INKEY(8)=0 THEN GOSUB 500&lt;br /&gt;
50 IF INKEY(0)=0 THEN GOSUB 700&lt;br /&gt;
60 GOTO 20&lt;br /&gt;
100 ' right&lt;br /&gt;
110 ma%=ma%+1: GOSUB 900: RETURN&lt;br /&gt;
300 ' down&lt;br /&gt;
310 ma%=ma%+40: GOSUB 900: RETURN&lt;br /&gt;
500 ' left&lt;br /&gt;
510 ma%=ABS(ma%-1): GOSUB 900: RETURN&lt;br /&gt;
700 ' up&lt;br /&gt;
710 ma%=ABS(ma%-40): GOSUB 900: RETURN&lt;br /&gt;
900 ' set R12 and R13&lt;br /&gt;
910 l%=ma% AND 255: h%=&amp;amp;30 OR ((ma%\256) AND 3) :OUT &amp;amp;BC00,13:OUT &amp;amp;BD00,l%: OUT &amp;amp;BC00,12:OUT &amp;amp;BD00,h%&lt;br /&gt;
930 RETURN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Which looks like the following:&lt;br /&gt;
&lt;br /&gt;
[[File:CRTC-Coarse-scroll.gif]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Advanced hardware scrolling ===&lt;br /&gt;
&lt;br /&gt;
To achieve smoother hardware scrolling, other tricks are required in complement to R12/R13. Usually, R3 is used for smooth horizontal scroll and R5 for smooth vertical scroll.&lt;br /&gt;
&lt;br /&gt;
A good example of smooth hardware multidirectional scrolling game on CPC is [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=2119 Super Cauldron], released in 1993.&lt;br /&gt;
&lt;br /&gt;
Everything you need to know about hardware scrolling on CPC can be found [https://www.cpcwiki.eu/forum/programming/hardware-scrolling-21687/ there].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Split screen (aka Rupture) ==&lt;br /&gt;
&lt;br /&gt;
While there is usually 1 CRTC frame per screen frame, the screen frame can be divided into multiple CRTC frames of varying proportions.&lt;br /&gt;
&lt;br /&gt;
This is useful for defining different scrolling zones in your screen frame. For example, it was used for hardware parallax scrolling in the game [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1307 The Living Daylights], released in 1987. [https://www.cpcwiki.eu/forum/programming/the-living-daylights-extra-colours-in-mode-1-rasters-screen-splits/ Source]&lt;br /&gt;
&lt;br /&gt;
And this is basically the bread and butter of innumerable CPC demos.&lt;br /&gt;
&lt;br /&gt;
Some rules of thumb [https://www.cpcwiki.eu/forum/programming/advice-on-split-screen-code/msg242186/ Source]:&lt;br /&gt;
* changes to the screen address have to be done anywhere in the previous split&lt;br /&gt;
* changes to the height of the split have to be done inside the current split (after it has started, in the area of the size of the previous split)&lt;br /&gt;
* changes to screen mode and colours are happening immediately&lt;br /&gt;
&lt;br /&gt;
CRTC registers and screen splitting:&lt;br /&gt;
*reg 0 (63) = x-screenwidth (usually always 63)&lt;br /&gt;
*reg 1 (50) = x-splitwidth (e.g.50)&lt;br /&gt;
*reg 2 (51) = x-splitstart (e.g. 51)&lt;br /&gt;
*reg 3 (08) = x-finestart (maybe use this for half-char scrolling)&lt;br /&gt;
*reg 4 (##) = y-splitheight-1 (set this inside the current split)&lt;br /&gt;
*reg 5 (00) = y-finestart&lt;br /&gt;
*reg 6 (25) = y-max visible splitpart (same like 4)&lt;br /&gt;
*reg 7 (##) = inside last split -&amp;gt; set to 0; inside first split, but after vblank -&amp;gt; set to 255&lt;br /&gt;
*reg 9 (07) = y-lines/char-1&lt;br /&gt;
&lt;br /&gt;
Set this inside the previous split:&lt;br /&gt;
*reg12 (##) = address high (char / 256 + block * 16)&lt;br /&gt;
*reg13 (##) = address low  (char mod 256)&lt;br /&gt;
&lt;br /&gt;
Total height of all splits must be 39.&lt;br /&gt;
&lt;br /&gt;
The [https://www.cpcwiki.eu/forum/programming/interrupt-positions-with-various-sized-screens/ IntPos tool] by Kevin Thacker can help visualize the potential split screen areas.&lt;br /&gt;
&lt;br /&gt;
Note: If all you want is multiple graphics modes in the same frame, you don't need to touch the CRTC at all. More information here: [https://www.cpc-power.com/cpcarchives/index.php?page=articles&amp;amp;num=184 Multi-Mode Graphique (FR)]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CUDISP (aka CURSOR) ==&lt;br /&gt;
&lt;br /&gt;
CUDISP (Cursor Display) signal defines the hardware cursor.&lt;br /&gt;
&lt;br /&gt;
CRTC pin CUDISP is not connected to the Gate Array, so it has no effect on a barebone CPC or Plus machine.&lt;br /&gt;
&lt;br /&gt;
However, this signal is provided to the [[Connector:Expansion port]]. And it is used by the [[PlayCity]] and [[Play2CPC]] expansions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DISPTMG (aka Display Enable) ==&lt;br /&gt;
&lt;br /&gt;
DISPTMG (Display Timing) signal defines the border. When DISPTMG is &amp;quot;0&amp;quot; the border colour is output by the Gate Array to the display.&lt;br /&gt;
&lt;br /&gt;
The border has higher priority than pixels but lower priority than the black colour output when HSYNC/VSYNC are active.&lt;br /&gt;
&lt;br /&gt;
While border is active, all the CRTC counters continue to increment normally and addresses continue to be generated.&lt;br /&gt;
&lt;br /&gt;
The DISPTMG signal is composited from its 3 internal subcomponents: HBORDER (Horizontal), VBORDER (Vertical), SBORDER (Split) by using the NOR function. DISPTMG is &amp;quot;0&amp;quot; if at least one of its subcomponents is &amp;quot;1&amp;quot;. These 3 subcomponents are all independent of each other.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HBORDER ===&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, HBORDER is disabled when HCC=0 and enabled when HCC=R1.&lt;br /&gt;
&lt;br /&gt;
The exception is for CRTC2 during an HSYNC: the HCC=0 check is skipped, so HBORDER stays on.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== VBORDER ===&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, VBORDER is disabled when VCC=0 and enabled when VCC=R6.&lt;br /&gt;
&lt;br /&gt;
On CRTCs 0/1/2, the condition VCC=R6 is tested on every cycle.&lt;br /&gt;
&lt;br /&gt;
On CRTCs 3/4, the condition VCC=R6 is tested only at each new character line start (when VLC=0 and HCC=0).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SBORDER ===&lt;br /&gt;
&lt;br /&gt;
Split border is a technique similar to split rasters, except that it is handled by the CRTC instead of the [[Gate Array]].&lt;br /&gt;
&lt;br /&gt;
DISPTMG can be temporarily forced to 0 by using R8 (DISPTMG Skew) on CRTCs 0/3/4, or by setting R6=0 on CRTC 1.&lt;br /&gt;
&lt;br /&gt;
It is not possible to force DISPTMG on CRTC 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Border bytes ===&lt;br /&gt;
&lt;br /&gt;
Despite their 1MHz clock speed, CRTCs 0/2 have been observed to change state at a rate equivalent to 2MHz chips by responding to both the rising and falling edges of each clock cycle.&lt;br /&gt;
&lt;br /&gt;
==== Interline border ====&lt;br /&gt;
On CRTCs 0/2, R1&amp;gt;R0 generates one byte (0.5µs) of border at the end of the raster line. On CRTCs 1/3/4, it does not.&lt;br /&gt;
&lt;br /&gt;
If border skew is used, the border byte will skew and change into a full character-width border instead.&lt;br /&gt;
&lt;br /&gt;
==== Border conflict ====&lt;br /&gt;
If R1=0 and HCC=0, we expect HBORDER to activate as HCC=R1 and we also expect HBORDER to deactivate as HCC=0. In this situation, all CRTCs activate HBORDER.&lt;br /&gt;
&lt;br /&gt;
If R6=0 and VCC=0, we expect VBORDER to activate as VCC=R6 and we also expect VBORDER to deactivate as VCC=0. In this situation, all CRTCs activate VBORDER. On CRTC 1, even SBORDER is activated. But on CRTCs 0/2, the first raster line shows an alternation of bytes of VBORDER and displayable characters.&lt;br /&gt;
&lt;br /&gt;
To see the border bytes with your own eyes, type this BASIC line after reset:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BORDER 6:OUT &amp;amp;BC00,6:OUT &amp;amp;BD00,0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== HSYNC ==&lt;br /&gt;
&lt;br /&gt;
The HSYNC signal from the CRTC is not directly connected to the display. It is passed to the [[Gate Array]] for further modification. See its wiki page.&lt;br /&gt;
&lt;br /&gt;
While HSYNC is active, all the CRTC counters continue to increment normally and addresses continue to be generated.&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, while an HSYNC is ongoing, the condition HCC=R2 is ignored. So we cannot trigger a new HSYNC during an HSYNC.&lt;br /&gt;
&lt;br /&gt;
=== Contiguous HSYNCs ===&lt;br /&gt;
&lt;br /&gt;
On CRTC 0, two HSYNCs cannot be contiguous. They are always separated by at least 1 CRTC character. What happens is that when HSC=R3 and HCC=R2, the condition HSC=R3 takes precedence over the condition HCC=R2 and HSYNC is stopped.&lt;br /&gt;
&lt;br /&gt;
On CRTCs 1/2/3/4, HSYNCs can be contiguous.&lt;br /&gt;
&lt;br /&gt;
=== Signal delay ===&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, there is a 1µs delay in display between when the CRTC provides a video pointer, and when the Gate Array displays the corresponding 16-bit character.&lt;br /&gt;
&lt;br /&gt;
But on CRTCs 0/1/2, there is no delay for HSYNC. On CRTCs 3/4, the Amstrad engineers fixed the issue by adding a 1µs delay for the HSYNC signal to match the display signal. &lt;br /&gt;
&lt;br /&gt;
So now we have a bigger issue: on CRTCs 3/4, HSYNC occurs 1µs later than on CRTCs 0/1/2. Interrupts being dependent on HSYNC, this is a serious compatibility issue for time-sensitive code. It also explains why the CTM monitor has to be calibrated differently on CRTCs 3/4. Fortunately, the issue is easy to fix, by adjusting the HSYNC width with CRTC register 3.&lt;br /&gt;
&lt;br /&gt;
=== Discolouration effect ===&lt;br /&gt;
&lt;br /&gt;
On CRT monitors from other brands, a colour calibration can happen just after the C-HSYNC pulse.&lt;br /&gt;
&lt;br /&gt;
So even when a fully valid C-HSYNC pulse of 4µs is emitted, an HSYNC shorter than usual combined with a coloured border can induce a discolouration effect on those monitors.&lt;br /&gt;
&lt;br /&gt;
=== Screen wobbling and Fine horizontal hardware scroll ===&lt;br /&gt;
&lt;br /&gt;
These effects use invalid HSYNC signals, which are poorly supported by modern displays. However, these effects were used in commercial-era CPC games, so it's fine if you choose to use them.&lt;br /&gt;
&lt;br /&gt;
When R2 increases by 1, the screen is shifted to the left by 16 mode2 pixels.&lt;br /&gt;
&lt;br /&gt;
When R2 decreases by 1, the screen is shifted to the right by 16 mode2 pixels.&lt;br /&gt;
&lt;br /&gt;
When R3l increases by 1 (and if &amp;lt;6), the screen is shifted to the left by 8 mode2 pixels.&lt;br /&gt;
&lt;br /&gt;
When R3l decreases by 1 (and if &amp;gt;2), the screen is shifted to the right by 8 mode2 pixels.&lt;br /&gt;
&lt;br /&gt;
The shift is not instantaneous but follows a logarithmic attenuation across several raster lines. This property can be used to get even finer horizontal control by modifying R2/R3 on each raster line.&lt;br /&gt;
&lt;br /&gt;
[[Longshot]] has demonstrated [https://youtu.be/1q7RQykZoKY horizontal hardware scroll] with one-pixel precision in mode1 on all CRTCs. However, because you have to synchronize with each line, it takes a lot of CPU time if it's done in fullscreen (272 lines).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VSYNC ==&lt;br /&gt;
&lt;br /&gt;
The VSYNC signal from the CRTC is not directly connected to the display. It is passed to the [[Gate Array]] for further modification. See its wiki page.&lt;br /&gt;
&lt;br /&gt;
While VSYNC is active, all the CRTC counters continue to increment normally and addresses continue to be generated.&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, while a VSYNC is ongoing, the condition VCC=R7 is ignored. So we cannot trigger a new VSYNC during a VSYNC. &lt;br /&gt;
&lt;br /&gt;
On CRTCs 0/1/2, the sole condition to trigger a VSYNC is that VCC=R7. While on CRTCs 3/4, it is necessary to have VCC=R7 and HCC=0 and VLC=0 to trigger a VSYNC.&lt;br /&gt;
&lt;br /&gt;
=== Blocked VSYNC ===&lt;br /&gt;
&lt;br /&gt;
On CRTC 0, if R7 is modified with the value of VCC when HCC&amp;lt;2, we are in blocked VSYNC. Then, the VSYNC can no longer occur on VCC=R7 until an unblocking condition is produced (VCC or R7 update). Source: §16.4 &amp;quot;Conditions to consider&amp;quot; of the CRTC Compendium&lt;br /&gt;
&lt;br /&gt;
=== Ghost VSYNC ===&lt;br /&gt;
&lt;br /&gt;
On CRTC 2, if a VSYNC is triggered during an HSYNC, the CRTC produces a ghost VSYNC. The CRTC then counts the lines as if a VSYNC were taking place by preventing a new VSYNC from occurring, but without the VSYNC pin being enabled.&lt;br /&gt;
&lt;br /&gt;
=== PPI VSYNC ===&lt;br /&gt;
&lt;br /&gt;
The VSYNC pin of the CRTC is directly connected to bit0 of port B of the PPI. There is no delay involved.&lt;br /&gt;
&lt;br /&gt;
On Amstrad CPC (not Plus!), it is also possible to reverse the direction of PPI port B to output a &amp;quot;fake&amp;quot; VSYNC signal directly from the PPI to the Gate Array.&lt;br /&gt;
&lt;br /&gt;
As an exception, the Ghost VSYNC of CRTC 2 overpowers the Fake VSYNC.&lt;br /&gt;
&lt;br /&gt;
=== Subpixel vertical hardware scroll ===&lt;br /&gt;
&lt;br /&gt;
By tuning very precisely when the VSYNC signal is sent to the monitor,  Longshot has demonstrated [https://youtu.be/bSjRU6Wye00 vertical hardware scroll] with a precision of 1/128th of a pixel. Furthermore, subpixel vertical scrolling consumes very little CPU.&lt;br /&gt;
&lt;br /&gt;
=== Mid-VSYNC ===&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, in both interlace modes, a mid-VSYNC is generated when VCC=R7 on the even field. The VSYNC pulse starts in the middle of the raster line, at HCC=R0/2.&lt;br /&gt;
&lt;br /&gt;
As an exception, on CRTCs 3/4, if R7=0 then mid-VSYNC will instead occur on the odd field. Source: §19.7 &amp;quot;Mid-VSYNC&amp;quot; of the CRTC Compendium.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Interlace modes ==&lt;br /&gt;
&lt;br /&gt;
Note: Some details about the CRTC interlace implementations are missing in this article. Consider it as an introduction to the topic.&lt;br /&gt;
&lt;br /&gt;
[[File:CRTC Interlace modes.png]]&lt;br /&gt;
&lt;br /&gt;
For a CRTC character line with n raster lines, R9 must be set to n-1 on all CRTCs, regardless of the interlace settings. The exception is for CRTCs 0/3/4 in IVM mode, where R9 must be set to n-2.&lt;br /&gt;
&lt;br /&gt;
=== Interlace sync mode (ISM) ===&lt;br /&gt;
&lt;br /&gt;
In this mode, the same information is painted in both fields to enhance readability. Reprogramming the CRTC is not necessary.&lt;br /&gt;
&lt;br /&gt;
=== Interlace sync and video mode (IVM) ===&lt;br /&gt;
&lt;br /&gt;
In this mode, alternating lines are displayed in the even and odd field to double the resolution.&lt;br /&gt;
&lt;br /&gt;
On the even field, the CRTC displays the lines for which VLC is even. On the odd field, the CRTC displays the lines for which VLC is odd.&lt;br /&gt;
&lt;br /&gt;
It is necessary to reprogram the CRTC as if we were building a frame of 624 lines.&lt;br /&gt;
&lt;br /&gt;
CRTC 2 is the exception: R4, R5, R6, R7 do not need to be reprogrammed as it considers each character line to be a double character line.&lt;br /&gt;
&lt;br /&gt;
=== Interlace adjustment line ===&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, in both interlace modes, an additional line (the 625th line) is added automatically by the CRTC at the end of the even field. This line is added after the lines of the vertical adjustment mode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRTC registers ==&lt;br /&gt;
&lt;br /&gt;
The Internal registers of the 6845 are:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!rowspan=2|Register Index&lt;br /&gt;
!rowspan=2|Register Name&lt;br /&gt;
!colspan=3|Read/Write&lt;br /&gt;
!rowspan=2|Range&lt;br /&gt;
!rowspan=2|CPC Setting&lt;br /&gt;
!rowspan=2|Notes&lt;br /&gt;
|-&lt;br /&gt;
!CRTC 0&lt;br /&gt;
!CRTCs 1/2&lt;br /&gt;
!CRTCs 3/4&lt;br /&gt;
|-&lt;br /&gt;
|0||Horizontal Total (-1)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||00000000||63||Width of the screen, in characters. Should always be 63 (64 characters). 1 character == 1μs.&lt;br /&gt;
|-&lt;br /&gt;
|1||Horizontal Displayed||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||00000000||40||Number of characters displayed. Once horizontal character count (HCC) matches this value, DISPTMG is set to 1.&lt;br /&gt;
|-&lt;br /&gt;
|2||Horizontal Sync Position||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||00000000||46||When to start the HSync signal.&lt;br /&gt;
|-&lt;br /&gt;
|3||Horizontal and Vertical Sync Widths||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||VVVVHHHH||128+14||VSync width in scan-lines (Not present on all CRTCs, fixed to 16 lines on these) ; HSync pulse width in characters.&lt;br /&gt;
|-&lt;br /&gt;
|4||Vertical Total (-1)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||x0000000||38||Height of the screen, in characters.&lt;br /&gt;
|-&lt;br /&gt;
|5||Vertical Total Adjust||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||xxx00000||0||Measured in scanlines, can be used for smooth vertical scrolling on CPC.&lt;br /&gt;
|-&lt;br /&gt;
|6||Vertical Displayed||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||x0000000||25||Height of displayed screen in characters. Once vertical character count (VCC) matches this value, DISPTMG is set to 1.&lt;br /&gt;
|-&lt;br /&gt;
|7||Vertical Sync Position||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||x0000000||30||When to start the VSync signal, in characters.&lt;br /&gt;
|-&lt;br /&gt;
|8||Interlace and Skew||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||CCDDxxII||0||CC: Cursor Skew (Only in CRTCs 0, 3 and 4). DD: Display Skew (Only in CRTCs 0, 3 and 4). II: Interlace Mode.&lt;br /&gt;
|-&lt;br /&gt;
|9||Maximum Raster Address (aka Number of Scan Lines) (-1)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||xxx00000||7||Maximum scan line address on CPC can hold between 0 and 7, higher values' upper bits are ignored.&lt;br /&gt;
|-&lt;br /&gt;
|10||Cursor Start Raster||style=&amp;quot;text-align: center;&amp;quot;|Write||style=&amp;quot;text-align: center;&amp;quot;|Write||Read/Write||xBP00000||0||B = Blink On/Off; P = Blink Period Control (16 or 32 frames). Sets first raster row of character that cursor is on to invert.&lt;br /&gt;
|-&lt;br /&gt;
|11||Cursor End Raster||style=&amp;quot;text-align: center;&amp;quot;|Write||style=&amp;quot;text-align: center;&amp;quot;|Write||Read/Write||xxx00000||0||Sets last raster row of character that cursor is on to invert.&lt;br /&gt;
|-&lt;br /&gt;
|12||Display Start Address (High)||Read/Write||style=&amp;quot;text-align: center;&amp;quot;|Write||Read/Write||xx000000||48||On Amstrad Plus, bit7 of the printer port is controlled by bit3 of CRTC R12 (ie. bit11 of Display Start Address).&lt;br /&gt;
|-&lt;br /&gt;
|13||Display Start Address (Low)||Read/Write||style=&amp;quot;text-align: center;&amp;quot;|Write||Read/Write||00000000||0||Allows you to offset the start of screen memory for hardware scrolling, and if using memory from address &amp;amp;0000 with the firmware.&lt;br /&gt;
|-&lt;br /&gt;
|14||Cursor Address (High)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Read/Write||xx000000||0||&lt;br /&gt;
|-&lt;br /&gt;
|15||Cursor Address (Low)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Read/Write||00000000||0||&lt;br /&gt;
|-&lt;br /&gt;
|16||Light Pen Address (High)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Read||xx000000||||On CRTC1, bit6 of Status register goes to 0 when R16 is read.&lt;br /&gt;
|-&lt;br /&gt;
|17||Light Pen Address (Low)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Read||00000000||||On CRTC1, bit6 of Status register goes to 0 when R17 is read.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Screen size ===&lt;br /&gt;
&lt;br /&gt;
We can calculate the screen size in words by multiplying R1 x R6 x (R9+1). And then multiplying the result by 2 to have the screen size in bytes.&lt;br /&gt;
&lt;br /&gt;
With the default CRTC values, we obtain 40 x 25 x (7+1) x 2 = 16000 bytes.&lt;br /&gt;
&lt;br /&gt;
So we can observe that only part of the 16384 bytes (=16KB) page of VRAM is actually displayed on screen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Register access ===&lt;br /&gt;
&lt;br /&gt;
On CRTCs 0/1/2, if a Write Only register is read from, &amp;quot;0&amp;quot; is returned. The register accessing scheme on CRTCs 3/4 makes it impossible to happen.&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, only the 5 least significant bits of the selected register number are considered to write to a register. The other bits are ignored.&lt;br /&gt;
&lt;br /&gt;
On CRTCs 0/1/2, only the 5 least significant bits of the selected register number are considered to read a register:&lt;br /&gt;
* On CRTCs 0/2, registers 18-31 read as 0&lt;br /&gt;
* On CRTC 1, registers 18-30 read as 0, register 31 reads as &amp;amp;FF&lt;br /&gt;
&lt;br /&gt;
On CRTCs 3/4, only the 3 least significant bits of the selected register number are considered to read a register, according to the following table:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Nb&lt;br /&gt;
!Register&lt;br /&gt;
!Definition&lt;br /&gt;
|-&lt;br /&gt;
|0||R16||Light Pen Address (High)&lt;br /&gt;
|-&lt;br /&gt;
|1||R17||Light Pen Address (Low)&lt;br /&gt;
|-&lt;br /&gt;
|2||R10||Cursor Start Raster&lt;br /&gt;
|-&lt;br /&gt;
|3||R11||Cursor End Raster&lt;br /&gt;
|-&lt;br /&gt;
|4||R12||Display Start Address (High)&lt;br /&gt;
|-&lt;br /&gt;
|5||R13||Display Start Address (Low)&lt;br /&gt;
|-&lt;br /&gt;
|6||R14||Cursor Address (High)&lt;br /&gt;
|-&lt;br /&gt;
|7||R15||Cursor Address (Low)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRTC register differences ==&lt;br /&gt;
&lt;br /&gt;
CRTC types 3 and 4 are identical in every way, except for the unlocking mechanism, split screen, hardware soft scroll and 8-bit printer port functionalities specific to the [[ASIC]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== R10/R11 on ASIC/Pre-ASIC  ===&lt;br /&gt;
&lt;br /&gt;
The cursor raster registers R10/R11 act as status registers when read on CRTCs 3/4. They behave as normal cursor raster registers upon write.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! R10 - Bit number&lt;br /&gt;
! Bit value&lt;br /&gt;
! Event&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|1&lt;br /&gt;
|C0=R0&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|C0=R0/2&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|C0=R1-1 (if R0&amp;gt;=R1)&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|0&lt;br /&gt;
|C0=R2&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|C0=R2+R3&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|0&lt;br /&gt;
1&lt;br /&gt;
|R3h&amp;gt;0 : C0=0..R0 on the line R3h from Vsync (C4=R7)&lt;br /&gt;
R3h=0 : C0=0..R0 over 15 lines from Vsync (C4=R7)&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|1&lt;br /&gt;
|Always 1&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|0&lt;br /&gt;
0&lt;br /&gt;
|C0=0..R0-1 : VMA.Lsb=0xFF&lt;br /&gt;
C0=R0 : VMA'.Lsb=0x00 (same cond if C0=R0=0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! R11 - Bit number&lt;br /&gt;
! Bit value&lt;br /&gt;
! Event&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|C4=R4 and C9=R9 and C0=R0 : Last char of screen&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|C4=R6-1 and C9=R9 and C0=R0 : Last char displayed&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|C4=R7-1 and C9=R9 and C0=R0 : Last char before Vsync&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|0/1&lt;br /&gt;
|Timer 16 CRTC frames&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|Always 1&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|0&lt;br /&gt;
|C9=R9 : C0=0 to R0&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|0&lt;br /&gt;
|Always 0&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|1&lt;br /&gt;
|(C9=R9 and C0=R0) or (C9=0 and C0=0 to R0-1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Horizontal and Vertical Sync (R3) ===&lt;br /&gt;
&lt;br /&gt;
Type 0:&lt;br /&gt;
*Bits 7..4 define Vertical Sync Width. If 0 is programmed, this gives 16 lines of VSYNC.&lt;br /&gt;
*Bits 3..0 define Horizontal Sync Width. If 0 is programmed, no HSYNC is generated (and therefore, no interrupts).&lt;br /&gt;
&lt;br /&gt;
Type 1:&lt;br /&gt;
*Bits 7..4 are ignored. Vertical Sync is fixed at 16 lines.&lt;br /&gt;
*Bits 3..0 define Horizontal Sync Width. If 0 is programmed, no HSYNC is generated (and therefore, no interrupts).&lt;br /&gt;
&lt;br /&gt;
Type 2:&lt;br /&gt;
*Bits 7..4 are ignored. Vertical Sync is fixed at 16 lines.&lt;br /&gt;
*Bits 3..0 define Horizontal Sync Width. If 0 is programmed, this gives a HSYNC width of 16.&lt;br /&gt;
&lt;br /&gt;
Types 3/4:&lt;br /&gt;
*Bits 7..4 define Vertical Sync Width. If 0 is programmed, this gives 16 lines of VSYNC.&lt;br /&gt;
*Bits 3..0 define Horizontal Sync Width. If 0 is programmed, this gives a HSYNC width of 16.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Interlace and Skew (R8) ===&lt;br /&gt;
&lt;br /&gt;
Types 0/3/4:&lt;br /&gt;
*Bits 7..6 define the skew (delay) of the CUDISP signal (00 = Non-skew ; 01 = One-character skew ; 10 = Two-character skew ; 11 = Non-output).&lt;br /&gt;
*Bits 5..4 define the skew (delay) of the DISPTMG signal (00 = Non-skew ; 01 = One-character skew ; 10 = Two-character skew ; 11 = Non-output).&lt;br /&gt;
*Bits 3..2 are ignored.&lt;br /&gt;
*Bits 1..0 define the interlace mode (00 = No Interlace ; 01 = Interlace Sync ; 10 = No Interlace ; 11 = Interlace Sync and Video).&lt;br /&gt;
&lt;br /&gt;
Types 1/2:&lt;br /&gt;
*Bits 7..2 are ignored.&lt;br /&gt;
*Bits 1..0 define the interlace mode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== R31 on Type 1 ===&lt;br /&gt;
&lt;br /&gt;
R31 is described in the UM6845R documentation as &amp;quot;Dummy Register&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Its use is described in the documentation for the Rockwell R6545 in combination with R18, R19 and R8 and the Status Register.&lt;br /&gt;
&lt;br /&gt;
In the UM6845R it appears to have no effect. Reading and writing does nothing. Reading it returns &amp;amp;FF.&lt;br /&gt;
&lt;br /&gt;
R31 doesn't exist on CRTCs 0/2/3/4.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Status register on Type 1 ===&lt;br /&gt;
&lt;br /&gt;
The UM6845R has a status register that can be read using port &amp;amp;BExx.&lt;br /&gt;
&lt;br /&gt;
Bit 6 is set to 1 if there is a strobe input to the /LPEN signal. It is cleared to 0 when either R17 or R16 (LPEN address) of the CRTC are read. It signals there is a valid LPEN input. On Kevin Thacker's CPC with UM6845R, it is triggered at power on, R17 and R16 have the values 0 when read.&lt;br /&gt;
&lt;br /&gt;
Bit 5 is set to 1 when CRTC is in &amp;quot;vertical blanking&amp;quot;. Vertical blanking is when the vertical border is active. i.e. VCC&amp;gt;=R6. &lt;br /&gt;
&lt;br /&gt;
It is cleared when the frame is started (VCC=0). It is not directly related to the DISPTMG output (used by the CPC to display the border colour) because that output is a combination of horizontal and vertical blanking.&lt;br /&gt;
This bit will be 0 when pixels are being displayed.&lt;br /&gt;
&lt;br /&gt;
All the other bits read as 0 and don't have any function.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRTC Type Detection ==&lt;br /&gt;
&lt;br /&gt;
It is possible to detect the CRTC Type using software methods, and this is done to: &lt;br /&gt;
&lt;br /&gt;
* warn that the software was not designed for the detected 6845 and may function incorrectly&lt;br /&gt;
* to adapt the software so that it will run with the detected 6845 &lt;br /&gt;
* In most cases, the type of the detected 6845 is reported&lt;br /&gt;
&lt;br /&gt;
Detection routine in BASIC:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10 MODE 1:' Reinitialize screen&lt;br /&gt;
20 OUT &amp;amp;BC00,31:IF INP(&amp;amp;BF00)=255 THEN PRINT&amp;quot;crtc 1&amp;quot;:END&lt;br /&gt;
30 OUT &amp;amp;BC00,12:IF INP(&amp;amp;BF00)=0 THEN PRINT&amp;quot;crtc 2&amp;quot;:END&lt;br /&gt;
40 OUT &amp;amp;BC00,20:IF INP(&amp;amp;BF00)=0 THEN PRINT&amp;quot;crtc 0&amp;quot;:END&lt;br /&gt;
50 PRINT&amp;quot;crtc 3/4&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Distinguishing between CRTCs 3 and 4 can be done by trying to [[Programming:Unlocking ASIC|unlock the ASIC]] or by testing the [[8255|PPI chip]]. On ASIC, if PPI Port B is set as output it will behave the same as input.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRTC Timing Diagrams ==&lt;br /&gt;
[[File:CRTC Timing Diagram Rockwell.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:CRTC timing small.gif]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Internal Counters ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Counter name&lt;br /&gt;
! Abbr&lt;br /&gt;
! Alternate name&lt;br /&gt;
! Compared with&lt;br /&gt;
! Comment&lt;br /&gt;
|-&lt;br /&gt;
|Horizontal Character Counter&lt;br /&gt;
|HCC&lt;br /&gt;
|C0&lt;br /&gt;
|R0, R1, R2&lt;br /&gt;
| Increments on every clock cycle&lt;br /&gt;
|-&lt;br /&gt;
|Horizontal Sync Counter&lt;br /&gt;
|HSC&lt;br /&gt;
|C3l&lt;br /&gt;
|R3l&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Vertical Character Counter&lt;br /&gt;
|VCC&lt;br /&gt;
|C4&lt;br /&gt;
|R4, R6, R7&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Vertical Sync Counter&lt;br /&gt;
|VSC&lt;br /&gt;
|C3h&lt;br /&gt;
|R3h&lt;br /&gt;
|R3h is fixed to 0 on CRTCs 1/2. This gives 16 lines of VSYNC&lt;br /&gt;
|-&lt;br /&gt;
|Vertical Line Counter&lt;br /&gt;
|VLC&lt;br /&gt;
|C9&lt;br /&gt;
|R9, R10, R11&lt;br /&gt;
|If not in IVM mode, this counter is exposed on CRTC pins RA0..RA4&lt;br /&gt;
|-&lt;br /&gt;
|Vertical Total Adjust Counter&lt;br /&gt;
|VTAC&lt;br /&gt;
|C5&lt;br /&gt;
|R5&lt;br /&gt;
|This counter does not exist on CRTCs 0/3/4. C9 is reused instead&lt;br /&gt;
|-&lt;br /&gt;
|Frame Counter&lt;br /&gt;
|FC&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|Used to alternate frames in interlace and for CRTC cursor blinking&lt;br /&gt;
|-&lt;br /&gt;
|Memory Address&lt;br /&gt;
|MA&lt;br /&gt;
|&lt;br /&gt;
|R14/R15&lt;br /&gt;
|This counter is exposed on CRTC pins MA0..MA13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When IVM mode is activated, VLC continues to increment normally. However, RA is not identical to VLC anymore. Instead, VLC is considered shifted left by 1 bit, and bit0 represents the parity of the field (even/odd).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRTC counter differences ==&lt;br /&gt;
&lt;br /&gt;
=== MA buffering ===&lt;br /&gt;
&lt;br /&gt;
No matter its type, the CRTC never buffers any of its counters, except for the video pointer MA. The buffer MA' is needed because MA has to be reloaded at the beginning of every raster line.&lt;br /&gt;
&lt;br /&gt;
At the end of the display of the last raster line of each character line (ie. when HCC=R1 and VLC=R9), MA' captures the current value of MA.&lt;br /&gt;
&lt;br /&gt;
CRTC 2 is the exception: at the end of the display of the last raster line of the frame, MA' captures R12/R13 instead of MA.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MA reload ===&lt;br /&gt;
&lt;br /&gt;
On CRTCs 0/3/4, at the beginning of the first raster line of the frame, MA and MA' are loaded with R12/R13. Otherwise, MA is loaded with MA'.&lt;br /&gt;
&lt;br /&gt;
On CRTC 2, at the beginning of every raster line of the frame (including the first one), MA is loaded with MA'.&lt;br /&gt;
&lt;br /&gt;
On CRTC 1, at the beginning of every raster line of the first character line of the frame (ie. when VCC=0), MA is loaded with R12/R13 instead of MA'. '''This is a major source of incompatibility if the programmer does not take care.''' In demos and games, to be compatible with all CRTCs, program R12/R13 only when VCC≠0. This will then take effect at the next CRTC frame start.&lt;br /&gt;
&lt;br /&gt;
==== Rupture For Dummies (R5 bug) ====&lt;br /&gt;
&lt;br /&gt;
CRTC 1 has a bug that occurs when R5 is updated with a non-zero value when HCC=R0 and VLC≠R9, but only when R5 was previously 0. This changes the MA update source to R12/R13 instead of MA'. The CRTC then loads R12/R13 into MA at the beginning of every scanline, regardless of the VCC value.&lt;br /&gt;
&lt;br /&gt;
This R5 bug also messes with the frame parity management. However, it is possible to fix the parity of the frame by activating/deactivating the IVM interlace mode.&lt;br /&gt;
&lt;br /&gt;
The vertical adjustment operates normally after the RFD is triggered. If vertical adjustment is not needed, R5 can be reset at any time after the RFD is activated.&lt;br /&gt;
&lt;br /&gt;
This effect is used in the [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=19308 DSC4 demo].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== VSC (C3h) overflow ===&lt;br /&gt;
&lt;br /&gt;
During a VSYNC on CRTCs 0/3/4, if VSYNC Width (R3h) is changed with a value less than the current VSC, then VSC overflows and will count up to its maximum value (15) before looping back and counting up again until it reaches the new value of R3h.&lt;br /&gt;
&lt;br /&gt;
On CRTCs 1/2, the VSYNC width is fixed to 16 characters. It is not possible to modify it. Therefore, VSC cannot be overflowed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HSC (C3l) overflow ===&lt;br /&gt;
&lt;br /&gt;
During an HSYNC, if HSYNC Width (R3l) is changed with a value less than the current HSC, then HSC overflows and will count up to its maximum value (15) before looping back and counting up again until it reaches the new value of R3l.&lt;br /&gt;
&lt;br /&gt;
The only exception is for CRTC 1 with a value of 0, which immediately cancels the current HSYNC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== VCC (C4) overflow ===&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, if Vertical Total (R4) is changed with a value less than VCC, then:&lt;br /&gt;
* if this update was done when VCC &amp;lt; R4, then VCC overflows and will count up to its maximum value (127) before looping back and counting up again until it reaches the new value of R4&lt;br /&gt;
* if this update was done when VCC = R4, the current character line was already decided to be the last one of the current frame. No update to R4 will make the CRTC change its mind for the current frame&lt;br /&gt;
&lt;br /&gt;
The only exception when VCC = R4 is for CRTC 1 with a value of 0, which will cause VCC to overflow.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HCC (C0) overflow ===&lt;br /&gt;
&lt;br /&gt;
If Horizontal Total (R0) is changed with a value less than the current HCC, then:&lt;br /&gt;
* on CRTCs 0/1/2, HCC overflows and will count up to its maximum value (255) before looping back and counting up again until it reaches the new value of R0&lt;br /&gt;
* on CRTCs 3/4, the current line is considered finished and HCC is immediately reset to 0 on the next line&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== VLC (C9) overflow ===&lt;br /&gt;
&lt;br /&gt;
If Number of Scan Lines (R9) is changed with a value less than the current VLC, then:&lt;br /&gt;
* on CRTCs 0/1/2, VLC overflows and will count up to its maximum value (31) before looping back and counting up again until it reaches the new value of R9&lt;br /&gt;
* on CRTCs 3/4, the current line is considered the last one of this CRTC character and VLC will reset to 0 on the next line&lt;br /&gt;
&lt;br /&gt;
As an exception, on CRTCs 0/2, if VLC is modified during the last frame line, then the updated value will not be considered for the current frame.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== VTAC (C5/C9) overflow ===&lt;br /&gt;
&lt;br /&gt;
During vertical adjustment mode, if Vertical Total Adjust (R5) is changed with a value less than the current VTAC, then:&lt;br /&gt;
* on CRTCs 0/1/2, VTAC overflows and will count up to its maximum value (31) before looping back and counting up again until it reaches the new value of R5&lt;br /&gt;
* on CRTCs 3/4, the current line is considered the last one of the current frame and vertical adjustment will end&lt;br /&gt;
&lt;br /&gt;
As an exception, on CRTCs 0/2, if VTAC is modified during the last frame line, then the updated value will not be considered for the current frame.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Vertical Adjustment mode ===&lt;br /&gt;
&lt;br /&gt;
On CRTCs 3/4, this mode does not increment VCC, so VCC remains equal to R4.&lt;br /&gt;
&lt;br /&gt;
On CRTC 0, this mode increments VCC, causing it to exceed R4, but this increment occurs only once.&lt;br /&gt;
&lt;br /&gt;
On CRTCs 1/2, this mode increments VCC, causing it to exceed R4, and this increment can happen multiple times depending on the values of R5 and R9.&lt;br /&gt;
&lt;br /&gt;
Also, only CRTCs 1/2 have a dedicated C5 counter. On CRTCs 0/3/4, during Vertical Adjustment, C9 has to fullfil the VTAC role which means that it cannot fullfil its VLC role. This impacts address generation as R9 is not considered anymore.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Counter freezes ===&lt;br /&gt;
&lt;br /&gt;
On CRTCs 1/2/3/4, R0 accepts all values without causing any problems for counters.&lt;br /&gt;
&lt;br /&gt;
On CRTC 0:&lt;br /&gt;
* Setting R0 to 0 will cause numerous issues that stem from the fact that VLC is frozen. As HCC never reaches 1, the logic that increments VLC is never triggered.&lt;br /&gt;
* The logic that triggers vertical adjustment is broken if R0&amp;lt;2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Block Diagrams ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Hitachi&lt;br /&gt;
!UMC&lt;br /&gt;
!Motorola&lt;br /&gt;
|-&lt;br /&gt;
|[[File:CRTC Block Diagram.png|Hitachi]]&lt;br /&gt;
|[[File:UMC CRTC Block Diagram.png|UMC]]&lt;br /&gt;
|[[File:Motorola CRTC Block Diagram.png|Motorola]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRTC-II (aka Type 5) ==&lt;br /&gt;
&lt;br /&gt;
The [[Media:CRTC-5-HD6345.pdf|HD6345 datasheet]] states it is upward-compatible with the HD6845S in pin and software.&lt;br /&gt;
&lt;br /&gt;
This chip was never used by Amstrad. However, some CPC enthusiasts have replaced the original CRTC chip in their CPC with this one.&lt;br /&gt;
&lt;br /&gt;
With this chip, split-screen becomes easy: [https://thecheshirec.at/2024/05/20/des-splitscreens-en-basic-sur-crtc5/ Split-screen in BASIC]. And 3 new graphics modes (160x100x16c, 320x100x4c, 640x100x2c) are available: [https://thecheshirec.at/2024/11/10/trois-nouveaux-modes-video-grace-au-crtc-5/ New graphics modes in BASIC].&lt;br /&gt;
&lt;br /&gt;
This is the cheapest way to upgrade the CPC's graphics capabilities, costing only 1.29€. [https://thecheshirec.at/2024/05/19/des-crtc5-a-129e/ Source]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Datasheets ==&lt;br /&gt;
&lt;br /&gt;
==== Used by Amstrad ====&lt;br /&gt;
* [[Media:hd6845.hitachi.pdf|HD6845S (Hitachi)]] aka Type 0&lt;br /&gt;
* [[Media:UM6845-UMC.pdf|UM6845 (UMC)]] aka Type 0&lt;br /&gt;
* [[Media:Um6845r.umc.pdf|UM6845R (UMC)]] aka Type 1&lt;br /&gt;
* [[Media:Mc6845.motorola.pdf|MC6845 (Motorola)]] aka Type 2&lt;br /&gt;
* [[Media:CPC_Plus_Asic_Schematic.GIF|AMS40489 (Amstrad)]] aka Type 3 ([[ASIC]])&lt;br /&gt;
* [[AMS40226 (Amstrad)]] aka Type 4 (Pre-ASIC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Unused clones ====&lt;br /&gt;
* [[CM607P]] a Bulgarian clone made in Pravetz factory. It is used in the [[Aleste 520EX]].&lt;br /&gt;
* [[Media:hd6845.hitachi.pdf|HD6845R]] by Hitachi. According to Kevin Thacker, the [[KC Compact]] used HD6845R only.&lt;br /&gt;
* [[Media:UM6845E-UMC.pdf|UM6845E]] by UMC&lt;br /&gt;
* [[Media:Mc6845.pdf|MC6845-1]] by Motorola&lt;br /&gt;
* [[Media:F6845.pdf|F6845]] by Fairchild&lt;br /&gt;
* [[Media:EF6845P.pdf|EF6845]] by Thomson Semiconductors&lt;br /&gt;
* [[Media:VL6845 VTi.pdf|VL6845]] by VTi&lt;br /&gt;
* [[Media:C6845 CRTC (CAST).pdf|C6845]] by Cast&lt;br /&gt;
* [[Media:MB89321B FUJ.pdf|MB89321B]] by Fujitsu. It is pin-compatible with the 6845&lt;br /&gt;
* [[Media:MB89321A datasheet CRTC.pdf|MB89321A]] by Fujitsu. Enhanced version that adds smooth scroll, screen partitioning, independent scrolling of screen partitions, and other convenient features&lt;br /&gt;
* [[Media:Mos 6545-1 crtc.pdf|MOS 6545]] (MOS, Rockwell, Synertek) is pin-compatible with the 6845. Its differences are found in the R8 register.&lt;br /&gt;
* [https://www.cpcwiki.eu/forum/other-retro/interesting-discussion-about-the-c128-s-cpm-poor-performance/msg223058/#msg223058 MOS 8563] It is an evolution of the 6545/6845 CRTC chip, with blitter abilities to autonomously perform block memory copies within its dedicated video RAM.&lt;br /&gt;
* [https://github.com/hoglet67/BeebFpga/blob/dev/src/common/mc6845.vhd BeebFpga] [https://github.com/MiSTer-devel/Amstrad_MiSTer/blob/master/rtl/UM6845R.v MiSTer] [https://opencores.org/websvn/filedetails?repname=System09&amp;amp;path=%2FSystem09%2Ftrunk%2Frtl%2FVHDL%2Fcrtc6845.vhd OpenCores] Verilog/VHDL implementations of the 6845&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tools about CRTC ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.cpcwiki.eu/imgs/9/99/Elmar_Krieger-SPECIAL_EFFECTS.dsk  some BASIC tools to detect CRTC types 0-1-2 and show some effects] by [[Elmar Krieger]] (DSK for Emulators)&lt;br /&gt;
* [[File:Shaker26.dsk]] Shaker - Suite of CRTC tests associated with the CPC CRTC compendium (many of them will not work correctly on emulators and that was the purpose of the tests, to help create more compatible emulation)&lt;br /&gt;
* [[File:Shaker addon.dsk]] Shaker Add-On (Pixel 1 Hard Scroll / Vertical Rupture all Crtc)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/6845 Wikipedia on the CRTC]&lt;br /&gt;
* [[Media:ACCC1.8-EN.pdf]] CPC CRTC Compendium - Latest (04/2024!) document containing in-depth info about CRTC programming on CPC.&lt;br /&gt;
* [http://www.grimware.org/doku.php/documentations/devices/crtc CRTC documentation from Grimware]&lt;br /&gt;
* [http://quasar.cpcscene.net/doku.php?id=assem:crtc Quasar CRTC documentation (in french)]&lt;br /&gt;
* [https://pulkomandy.github.io/shinra.github.io/crtc.html PulkoMandy's table] [https://www.theoddys.com/acorn/the_6845_crtc/6845%20Variants.xlsx Oddy's table] Differences between CRTC types&lt;br /&gt;
* [[Media:Dossier Rupture(Gozeur Paradox).pdf]]&lt;br /&gt;
* [[Media:Dossier CRTC(Ramlaid Mortel).pdf]] Les entrailles du CRTC&lt;br /&gt;
* [https://thecheshirec.at/tag/crtc6845/ Leçons CRTC (CheshireCat)]&lt;br /&gt;
* [[Media:CRTC Compendium Podcast.mp3]] The CRTC Compendium digested in podcast format&lt;br /&gt;
* [https://martin.hinner.info/vga/pal.html PAL video timing specification]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related pages==&lt;br /&gt;
&lt;br /&gt;
*[[Gate Array]]&lt;br /&gt;
&lt;br /&gt;
*[[ASIC]]&lt;br /&gt;
&lt;br /&gt;
*[[Video modes]]&lt;br /&gt;
&lt;br /&gt;
*[[Synchronising with the CRTC and display]] : technic and details on the relationship between Gate Array and CRTC.&lt;br /&gt;
&lt;br /&gt;
*[[VIDI digitizer]] This extension contains its own CRTC chip&lt;br /&gt;
&lt;br /&gt;
[[Category:Hardware]] [[Category:CPC Internal Components]] [[Category:Electronic Component]] [[Category:Programming]] [[Category:Datasheet]] [[Category:Graphic]]&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=CRTC&amp;diff=126057</id>
		<title>CRTC</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=CRTC&amp;diff=126057"/>
				<updated>2025-05-18T22:13:18Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: /* Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:CRTC Type 0.jpg|thumb|right|CRTC Type 0 (Hitachi)]]&lt;br /&gt;
[[File:CRTC UMC Type 0.png|thumb|right|CRTC Type 0 (UMC)]]&lt;br /&gt;
[[File:CRTC Type 1.png|thumb|right|CRTC Type 1]]&lt;br /&gt;
[[File:CRTC6845-Type2.jpg|thumb|right|CRTC Type 2]]&lt;br /&gt;
&lt;br /&gt;
The 6845 '''CRTC''' (Cathode Ray Tube Controller) chip was created by Motorola in 1977. It works with the [[Gate Array]] to generate the video signal on the Amstrad CPC.&lt;br /&gt;
&lt;br /&gt;
This chip is also used in the [[BBC Micro]], [[Lynx|Camputers Lynx]], [[EG2000 Colour Genie]], [[Sharp X1]], [[MicroBee]], [[Commodore PET]] and the early graphics cards (MDA, Hercules, CGA, Plantronics Colorplus) for [[IBM PC]]. And it is found in some [https://www.msx.org/wiki/Hitachi_HD6845 MSX1 expansions], providing an 80-column text mode.&lt;br /&gt;
&lt;br /&gt;
It's important to note that the CRTC chip is primarily designed for character-based displays. It explains why, on the Amstrad CPC, the video memory is organized into a grid of characters rather than a purely linear bitmap.&lt;br /&gt;
&lt;br /&gt;
NOTES: &lt;br /&gt;
* This document describes the functionality in terms of the CPC with its separate CRTC and Gate-Array. The Plus has both integrated into the same IC, but could be considered to have two functional blocks, one for CRTC and one for Gate-Array. In this document the term 'Gate-Array' is used, but this also applies to the ASIC.&lt;br /&gt;
* Much information has been drawn from the [https://shaker.logonsystem.eu/ CRTC Compendium] documentation. For more details, timing diagrams, code examples, coding tips, and more, refer to that documentation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The 6845 Cathode Ray Tube Controller (CRTC) is a programmable IC used to generate video displays. This IC is used in a variety of computers including the Amstrad CPC, Amstrad Plus and KC Compact. &lt;br /&gt;
&lt;br /&gt;
The CRTC is a simple chip. It is made up of counters and equality operators, tied by simple logic. All the complexity stems from its multiple independent implementations with their subtle differences.&lt;br /&gt;
&lt;br /&gt;
The CRTC was a common part available from many different manufacturers. During the life of the CPC, Amstrad sourced the CRTC from various manufacturers. &lt;br /&gt;
&lt;br /&gt;
All ICs used were based on the same design but have a different implementation. As a result they do not operate identically in all situations. This document highlights these differences. &lt;br /&gt;
&lt;br /&gt;
This table lists the known ICs used, with their part number, manufacturer and type number. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Part number&lt;br /&gt;
!Manufacturer&lt;br /&gt;
!Type number (note 3)&lt;br /&gt;
|-&lt;br /&gt;
|HD6845S||Hitachi||0&lt;br /&gt;
|-&lt;br /&gt;
|UM6845||UMC||0&lt;br /&gt;
|-&lt;br /&gt;
|UM6845R||UMC||1&lt;br /&gt;
|-&lt;br /&gt;
|MC6845||Motorola||2&lt;br /&gt;
|-&lt;br /&gt;
|AMS40489||Amstrad||3 (note 1)&lt;br /&gt;
|-&lt;br /&gt;
|AMS40226||Amstrad||4 (note 2)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''NOTES''' &lt;br /&gt;
&lt;br /&gt;
1. The CRTC functionality is integrated into the CPC+ ASIC. This type exists only in the 464 Plus, 6128 Plus and GX4000. &lt;br /&gt;
&lt;br /&gt;
2. This type exists in &amp;quot;cost-down&amp;quot; CPC464 and CPC6128 systems. In the &amp;quot;cost-down&amp;quot; the CRTC functionality is integrated into a single ASIC IC. This ASIC is often refered to as the &amp;quot;Pre-ASIC&amp;quot; because it preceeded the CPC+ ASIC. The CRTC functionality of the Pre-ASIC is almost identical to the CRTC within the ASIC.&lt;br /&gt;
 &lt;br /&gt;
3. In the Amstrad community each 6845 implementation has been assigned a type number. This type identifies a group of implementations which operate in exactly the same way. The type number system was originally used by demo programmers. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Programming==&lt;br /&gt;
&lt;br /&gt;
The 6845 is selected when bit 14 of the I/O port address is set to &amp;quot;0&amp;quot;. Bit 9 and 8 of the I/O port address define the function to access. The remaining bits can be any value, but it is adviseable to set these to &amp;quot;1&amp;quot; to avoid conflict with other devices in the system.&lt;br /&gt;
&lt;br /&gt;
The recommended I/O port addresses are:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!I/O port address&lt;br /&gt;
!/CS (A14)&lt;br /&gt;
!R/W (A9)&lt;br /&gt;
!RS (A8)&lt;br /&gt;
!Function&lt;br /&gt;
!Read/Write&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;BCxx||0||0||0||Select 6845 register||Write only&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;BDxx||0||0||1||Write to selected internal 6845 register||Write only&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;BExx||0||1||0||&lt;br /&gt;
* CRTCs 0/2: —&lt;br /&gt;
* CRTC 1: Read Status Register&lt;br /&gt;
* CRTCs 3/4: Read from selected internal 6845 register&lt;br /&gt;
||Read only&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;BFxx||0||1||1||Read from selected internal 6845 register||Read only&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The CRTC is not connected to the CPU's RD and WR pins, so it cannot detect the bus's I/O direction. Therefore, executing an IN instruction to the select or write functions causes the CRTC to write the unpredictable data provided by the high-impedance bus to its registers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Z80 I/O access timings ===&lt;br /&gt;
&lt;br /&gt;
The clock provided to the CRTC by the ASIC/Pre-ASIC is phase-shifted compared to the one provided by the Gate Array.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! Instructions !! Duration !! I/O CRTCs 0/1/2 !! I/O CRTCs 3/4&lt;br /&gt;
|-&lt;br /&gt;
| OUT (C),r8 || 4 µsec || '''3rd µsec''' || 4th µsec&lt;br /&gt;
|-&lt;br /&gt;
| OUT (C),0 || 4 µsec || '''3rd µsec''' || 4th µsec&lt;br /&gt;
|-&lt;br /&gt;
| OUT (n),A || 3 µsec || 3rd µsec || 3rd µsec&lt;br /&gt;
|-&lt;br /&gt;
| OUTI || 5 µsec || 5th µsec || 5th µsec&lt;br /&gt;
|-&lt;br /&gt;
| OUTD || 5 µsec || 5th µsec || 5th µsec&lt;br /&gt;
|-&lt;br /&gt;
| IN r8,(C) || 4 µsec || 4th µsec || 4th µsec&lt;br /&gt;
|-&lt;br /&gt;
| INI || 5 µsec || '''4th µsec''' || '''4th µsec'''&lt;br /&gt;
|-&lt;br /&gt;
| IND || 5 µsec || '''4th µsec''' || '''4th µsec'''&lt;br /&gt;
|-&lt;br /&gt;
| IN A,(n) || 3 µsec || 3rd µsec || 3rd µsec&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Video Memory Address (VMA)==&lt;br /&gt;
&lt;br /&gt;
The VMA of the [[Gate Array]] is constructed from the CRTC MA and RA signals:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Video Memory Address&lt;br /&gt;
!Signal source&lt;br /&gt;
!Signal name&lt;br /&gt;
|-&lt;br /&gt;
|A15||6845||MA13 &lt;br /&gt;
|-&lt;br /&gt;
|A14||6845||MA12&lt;br /&gt;
|-&lt;br /&gt;
|A13||6845||'''RA2'''&lt;br /&gt;
|-&lt;br /&gt;
|A12||6845||'''RA1'''&lt;br /&gt;
|-&lt;br /&gt;
|A11||6845||'''RA0'''&lt;br /&gt;
|-&lt;br /&gt;
|A10||6845||MA9 &lt;br /&gt;
|-&lt;br /&gt;
|A9||6845||MA8 &lt;br /&gt;
|-&lt;br /&gt;
|A8||6845||MA7 &lt;br /&gt;
|-&lt;br /&gt;
|A7||6845||MA6 &lt;br /&gt;
|-&lt;br /&gt;
|A6||6845||MA5 &lt;br /&gt;
|-&lt;br /&gt;
|A5||6845||MA4 &lt;br /&gt;
|-&lt;br /&gt;
|A4||6845||MA3 &lt;br /&gt;
|-&lt;br /&gt;
|A3||6845||MA2 &lt;br /&gt;
|-&lt;br /&gt;
|A2||6845||MA1 &lt;br /&gt;
|-&lt;br /&gt;
|A1||6845||MA0&lt;br /&gt;
|-&lt;br /&gt;
|A0||Gate-Array||CCLK&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
CRTC generates the address, Gate Array reads the data and converts it to pixels based on its current graphics mode and palette.&lt;br /&gt;
&lt;br /&gt;
CRTC pins RA3, RA4, MA10, MA11 are not connected on CPC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Overscan bits ===&lt;br /&gt;
&lt;br /&gt;
It is possible to use 32KB screen size (used for [[Programming:Overscan|overscan]]) by setting bits 11 and 10 of Register 12 both to 1. Bits MA11 and MA10 of the address generated by the CRTC are not written on the address bus to access video memory; settings both bits to 1 is the only way to cause a carry to bit MA12 when address pass over the end of current video page to change the memory address to the next video page.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ CRTC Display Start Address&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;8&amp;quot; | Register 12&lt;br /&gt;
! colspan=&amp;quot;8&amp;quot; | Register 13&lt;br /&gt;
|-&lt;br /&gt;
! 15 !! 14 !! 13 !! 12 !! 11 !! 10 !! 9 !! 8&lt;br /&gt;
! 7 !! 6 !! 5 !! 4 !! 3 !! 2 !! 1 !! 0&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Unused&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Video Page&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Page Size&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot; | Start Address (1024 positions)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;white-space: nowrap;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-right: 32px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bit 13 !! Bit 12 !! Video Page&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0 || 0000 - 3FFF&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1 || 4000 - 7FFF&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0 || 8000 - BFFF&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1 || C000 - FFFF&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bit 11 !! Bit 10 !! Page Size&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0 || 16KB&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1 || 16KB&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0 || 16KB&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1 || '''32KB'''&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Coarse hardware scrolling ===&lt;br /&gt;
&lt;br /&gt;
The start address can be manipulated to achieve horizontal and/or vertical hardware scrolling:&lt;br /&gt;
&lt;br /&gt;
*To move right: &amp;lt;code&amp;gt;start_address := start_address + 1&amp;lt;/code&amp;gt;&lt;br /&gt;
*To move left: &amp;lt;code&amp;gt;start_address := start_address - 1&amp;lt;/code&amp;gt;&lt;br /&gt;
*To move down: &amp;lt;code&amp;gt;start_address := start_address + R1&amp;lt;/code&amp;gt;&lt;br /&gt;
*To move up: &amp;lt;code&amp;gt;start_address := start_address - R1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
However, it is a position in word (16 bits), not in byte. So, the screen will move two bytes at a time horizontally. Also, the precision will be one CRTC character vertically.&lt;br /&gt;
&lt;br /&gt;
The first game that used R12/R13 for both horizontal and vertical hardware scrolling is [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1839 Roland on the Ropes], released in 1984.&lt;br /&gt;
&lt;br /&gt;
The following BASIC program demonstrates the coarse scrolling by setting the R12 and R13 registers based on keyboard input:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10 ma%=0&lt;br /&gt;
20 IF INKEY(1)=0 THEN GOSUB 100&lt;br /&gt;
30 IF INKEY(2)=0 THEN GOSUB 300&lt;br /&gt;
40 IF INKEY(8)=0 THEN GOSUB 500&lt;br /&gt;
50 IF INKEY(0)=0 THEN GOSUB 700&lt;br /&gt;
60 GOTO 20&lt;br /&gt;
100 ' right&lt;br /&gt;
110 ma%=ma%+1: GOSUB 900: RETURN&lt;br /&gt;
300 ' down&lt;br /&gt;
310 ma%=ma%+40: GOSUB 900: RETURN&lt;br /&gt;
500 ' left&lt;br /&gt;
510 ma%=ABS(ma%-1): GOSUB 900: RETURN&lt;br /&gt;
700 ' up&lt;br /&gt;
710 ma%=ABS(ma%-40): GOSUB 900: RETURN&lt;br /&gt;
900 ' set R12 and R13&lt;br /&gt;
910 l%=ma% AND 255: h%=&amp;amp;30 OR ((ma%\256) AND 3) :OUT &amp;amp;BC00,13:OUT &amp;amp;BD00,l%: OUT &amp;amp;BC00,12:OUT &amp;amp;BD00,h%&lt;br /&gt;
930 RETURN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Which looks like the following:&lt;br /&gt;
&lt;br /&gt;
[[File:CRTC-Coarse-scroll.gif]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Advanced hardware scrolling ===&lt;br /&gt;
&lt;br /&gt;
To achieve smoother hardware scrolling, other tricks are required in complement to R12/R13. Usually, R3 is used for smooth horizontal scroll and R5 for smooth vertical scroll.&lt;br /&gt;
&lt;br /&gt;
A good example of smooth hardware multidirectional scrolling game on CPC is [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=2119 Super Cauldron], released in 1993.&lt;br /&gt;
&lt;br /&gt;
Everything you need to know about hardware scrolling on CPC can be found [https://www.cpcwiki.eu/forum/programming/hardware-scrolling-21687/ there].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Split screen (aka Rupture) ==&lt;br /&gt;
&lt;br /&gt;
While there is usually 1 CRTC frame per screen frame, the screen frame can be divided into multiple CRTC frames of varying proportions.&lt;br /&gt;
&lt;br /&gt;
This is useful for defining different scrolling zones in your screen frame. For example, it was used for hardware parallax scrolling in the game [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1307 The Living Daylights], released in 1987. [https://www.cpcwiki.eu/forum/programming/the-living-daylights-extra-colours-in-mode-1-rasters-screen-splits/ Source]&lt;br /&gt;
&lt;br /&gt;
And this is basically the bread and butter of innumerable CPC demos.&lt;br /&gt;
&lt;br /&gt;
Some rules of thumb [https://www.cpcwiki.eu/forum/programming/advice-on-split-screen-code/msg242186/ Source]:&lt;br /&gt;
* changes to the screen address have to be done anywhere in the previous split&lt;br /&gt;
* changes to the height of the split have to be done inside the current split (after it has started, in the area of the size of the previous split)&lt;br /&gt;
* changes to screen mode and colours are happening immediately&lt;br /&gt;
&lt;br /&gt;
CRTC registers and screen splitting:&lt;br /&gt;
*reg 0 (63) = x-screenwidth (usually always 63)&lt;br /&gt;
*reg 1 (50) = x-splitwidth (e.g.50)&lt;br /&gt;
*reg 2 (51) = x-splitstart (e.g. 51)&lt;br /&gt;
*reg 3 (08) = x-finestart (maybe use this for half-char scrolling)&lt;br /&gt;
*reg 4 (##) = y-splitheight-1 (set this inside the current split)&lt;br /&gt;
*reg 5 (00) = y-finestart&lt;br /&gt;
*reg 6 (25) = y-max visible splitpart (same like 4)&lt;br /&gt;
*reg 7 (##) = inside last split -&amp;gt; set to 0; inside first split, but after vblank -&amp;gt; set to 255&lt;br /&gt;
*reg 9 (07) = y-lines/char-1&lt;br /&gt;
&lt;br /&gt;
Set this inside the previous split:&lt;br /&gt;
*reg12 (##) = address high (char / 256 + block * 16)&lt;br /&gt;
*reg13 (##) = address low  (char mod 256)&lt;br /&gt;
&lt;br /&gt;
Total height of all splits must be 39.&lt;br /&gt;
&lt;br /&gt;
The [https://www.cpcwiki.eu/forum/programming/interrupt-positions-with-various-sized-screens/ IntPos tool] by Kevin Thacker can help visualize the potential split screen areas.&lt;br /&gt;
&lt;br /&gt;
Note: If all you want is multiple graphics modes in the same frame, you don't need to touch the CRTC at all. More information here: [https://www.cpc-power.com/cpcarchives/index.php?page=articles&amp;amp;num=184 Multi-Mode Graphique (FR)]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CUDISP (aka CURSOR) ==&lt;br /&gt;
&lt;br /&gt;
CUDISP (Cursor Display) signal defines the hardware cursor.&lt;br /&gt;
&lt;br /&gt;
CRTC pin CUDISP is not connected to the Gate Array, so it has no effect on a barebone CPC or Plus machine.&lt;br /&gt;
&lt;br /&gt;
However, this signal is provided to the [[Connector:Expansion port]]. And it is used by the [[PlayCity]] and [[Play2CPC]] expansions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DISPTMG (aka Display Enable) ==&lt;br /&gt;
&lt;br /&gt;
DISPTMG (Display Timing) signal defines the border. When DISPTMG is &amp;quot;0&amp;quot; the border colour is output by the Gate Array to the display.&lt;br /&gt;
&lt;br /&gt;
The border has higher priority than pixels but lower priority than the black colour output when HSYNC/VSYNC are active.&lt;br /&gt;
&lt;br /&gt;
While border is active, all the CRTC counters continue to increment normally and addresses continue to be generated.&lt;br /&gt;
&lt;br /&gt;
The DISPTMG signal is composited from its 3 internal subcomponents: HBORDER (Horizontal), VBORDER (Vertical), SBORDER (Split) by using the NOR function. DISPTMG is &amp;quot;0&amp;quot; if at least one of its subcomponents is &amp;quot;1&amp;quot;. These 3 subcomponents are all independent of each other.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HBORDER ===&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, HBORDER is disabled when HCC=0 and enabled when HCC=R1.&lt;br /&gt;
&lt;br /&gt;
The exception is for CRTC2 during an HSYNC: the HCC=0 check is skipped, so HBORDER stays on.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== VBORDER ===&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, VBORDER is disabled when VCC=0 and enabled when VCC=R6.&lt;br /&gt;
&lt;br /&gt;
On CRTCs 0/1/2, the condition VCC=R6 is tested on every cycle.&lt;br /&gt;
&lt;br /&gt;
On CRTCs 3/4, the condition VCC=R6 is tested only at each new character line start (when VLC=0 and HCC=0).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SBORDER ===&lt;br /&gt;
&lt;br /&gt;
Split border is a technique similar to split rasters, except that it is handled by the CRTC instead of the [[Gate Array]].&lt;br /&gt;
&lt;br /&gt;
DISPTMG can be temporarily forced to 0 by using R8 (DISPTMG Skew) on CRTCs 0/3/4, or by setting R6=0 on CRTC 1.&lt;br /&gt;
&lt;br /&gt;
It is not possible to force DISPTMG on CRTC 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Border bytes ===&lt;br /&gt;
&lt;br /&gt;
Despite their 1MHz clock speed, CRTCs 0/2 have been observed to change state at a rate equivalent to 2MHz chips by responding to both the rising and falling edges of each clock cycle.&lt;br /&gt;
&lt;br /&gt;
==== Interline border ====&lt;br /&gt;
On CRTCs 0/2, R1&amp;gt;R0 generates one byte (0.5µs) of border at the end of the raster line. On CRTCs 1/3/4, it does not.&lt;br /&gt;
&lt;br /&gt;
If border skew is used, the border byte will skew and change into a full character-width border instead.&lt;br /&gt;
&lt;br /&gt;
==== Border conflict ====&lt;br /&gt;
If R1=0 and HCC=0, we expect HBORDER to activate as HCC=R1 and we also expect HBORDER to deactivate as HCC=0. In this situation, all CRTCs activate HBORDER.&lt;br /&gt;
&lt;br /&gt;
If R6=0 and VCC=0, we expect VBORDER to activate as VCC=R6 and we also expect VBORDER to deactivate as VCC=0. In this situation, all CRTCs activate VBORDER. On CRTC 1, even SBORDER is activated. But on CRTCs 0/2, the first raster line shows an alternation of bytes of VBORDER and displayable characters.&lt;br /&gt;
&lt;br /&gt;
To see the border bytes with your own eyes, type this BASIC line after reset:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BORDER 6:OUT &amp;amp;BC00,6:OUT &amp;amp;BD00,0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== HSYNC ==&lt;br /&gt;
&lt;br /&gt;
The HSYNC signal from the CRTC is not directly connected to the display. It is passed to the [[Gate Array]] for further modification. See its wiki page.&lt;br /&gt;
&lt;br /&gt;
While HSYNC is active, all the CRTC counters continue to increment normally and addresses continue to be generated.&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, while an HSYNC is ongoing, the condition HCC=R2 is ignored. So we cannot trigger a new HSYNC during an HSYNC.&lt;br /&gt;
&lt;br /&gt;
=== Contiguous HSYNCs ===&lt;br /&gt;
&lt;br /&gt;
On CRTC 0, two HSYNCs cannot be contiguous. They are always separated by at least 1 CRTC character. What happens is that when HSC=R3 and HCC=R2, the condition HSC=R3 takes precedence over the condition HCC=R2 and HSYNC is stopped.&lt;br /&gt;
&lt;br /&gt;
On CRTCs 1/2/3/4, HSYNCs can be contiguous.&lt;br /&gt;
&lt;br /&gt;
=== Signal delay ===&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, there is a 1µs delay in display between when the CRTC provides a video pointer, and when the Gate Array displays the corresponding 16-bit character.&lt;br /&gt;
&lt;br /&gt;
But on CRTCs 0/1/2, there is no delay for HSYNC. On CRTCs 3/4, the Amstrad engineers fixed the issue by adding a 1µs delay for the HSYNC signal to match the display signal. &lt;br /&gt;
&lt;br /&gt;
So now we have a bigger issue: on CRTCs 3/4, HSYNC occurs 1µs later than on CRTCs 0/1/2. Interrupts being dependent on HSYNC, this is a serious compatibility issue for time-sensitive code. It also explains why the CTM monitor has to be calibrated differently on CRTCs 3/4. Fortunately, the issue is easy to fix, by adjusting the HSYNC width with CRTC register 3.&lt;br /&gt;
&lt;br /&gt;
=== Discolouration effect ===&lt;br /&gt;
&lt;br /&gt;
On CRT monitors from other brands, a colour calibration can happen just after the C-HSYNC pulse.&lt;br /&gt;
&lt;br /&gt;
So even when a fully valid C-HSYNC pulse of 4µs is emitted, an HSYNC shorter than usual combined with a coloured border can induce a discolouration effect on those monitors.&lt;br /&gt;
&lt;br /&gt;
=== Screen wobbling and Fine horizontal hardware scroll ===&lt;br /&gt;
&lt;br /&gt;
These effects use invalid HSYNC signals, which are poorly supported by modern displays. However, these effects were used in commercial-era CPC games, so it's fine if you choose to use them.&lt;br /&gt;
&lt;br /&gt;
When R2 increases by 1, the screen is shifted to the left by 16 mode2 pixels.&lt;br /&gt;
&lt;br /&gt;
When R2 decreases by 1, the screen is shifted to the right by 16 mode2 pixels.&lt;br /&gt;
&lt;br /&gt;
When R3l increases by 1 (and if &amp;lt;6), the screen is shifted to the left by 8 mode2 pixels.&lt;br /&gt;
&lt;br /&gt;
When R3l decreases by 1 (and if &amp;gt;2), the screen is shifted to the right by 8 mode2 pixels.&lt;br /&gt;
&lt;br /&gt;
The shift is not instantaneous but follows a logarithmic attenuation across several raster lines. This property can be used to get even finer horizontal control by modifying R2/R3 on each raster line.&lt;br /&gt;
&lt;br /&gt;
[[Longshot]] has demonstrated [https://youtu.be/1q7RQykZoKY horizontal hardware scroll] with one-pixel precision in mode1 on all CRTCs. However, because you have to synchronize with each line, it takes a lot of CPU time if it's done in fullscreen (272 lines).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VSYNC ==&lt;br /&gt;
&lt;br /&gt;
The VSYNC signal from the CRTC is not directly connected to the display. It is passed to the [[Gate Array]] for further modification. See its wiki page.&lt;br /&gt;
&lt;br /&gt;
While VSYNC is active, all the CRTC counters continue to increment normally and addresses continue to be generated.&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, while a VSYNC is ongoing, the condition VCC=R7 is ignored. So we cannot trigger a new VSYNC during a VSYNC. &lt;br /&gt;
&lt;br /&gt;
On CRTCs 0/1/2, the sole condition to trigger a VSYNC is that VCC=R7. While on CRTCs 3/4, it is necessary to have VCC=R7 and HCC=0 and VLC=0 to trigger a VSYNC.&lt;br /&gt;
&lt;br /&gt;
=== Blocked VSYNC ===&lt;br /&gt;
&lt;br /&gt;
On CRTC 0, if R7 is modified with the value of VCC when HCC&amp;lt;2, we are in blocked VSYNC. Then, the VSYNC can no longer occur on VCC=R7 until an unblocking condition is produced (VCC or R7 update). Source: §16.4 &amp;quot;Conditions to consider&amp;quot; of the CRTC Compendium&lt;br /&gt;
&lt;br /&gt;
=== Ghost VSYNC ===&lt;br /&gt;
&lt;br /&gt;
On CRTC 2, if a VSYNC is triggered during an HSYNC, the CRTC produces a ghost VSYNC. The CRTC then counts the lines as if a VSYNC were taking place by preventing a new VSYNC from occurring, but without the VSYNC pin being enabled.&lt;br /&gt;
&lt;br /&gt;
=== PPI VSYNC ===&lt;br /&gt;
&lt;br /&gt;
The VSYNC pin of the CRTC is directly connected to bit0 of port B of the PPI. There is no delay involved.&lt;br /&gt;
&lt;br /&gt;
On Amstrad CPC (not Plus!), it is also possible to reverse the direction of PPI port B to output a &amp;quot;fake&amp;quot; VSYNC signal directly from the PPI to the Gate Array.&lt;br /&gt;
&lt;br /&gt;
As an exception, the Ghost VSYNC of CRTC 2 overpowers the Fake VSYNC.&lt;br /&gt;
&lt;br /&gt;
=== Subpixel vertical hardware scroll ===&lt;br /&gt;
&lt;br /&gt;
By tuning very precisely when the VSYNC signal is sent to the monitor,  Longshot has demonstrated [https://youtu.be/bSjRU6Wye00 vertical hardware scroll] with a precision of 1/128th of a pixel. Furthermore, subpixel vertical scrolling consumes very little CPU.&lt;br /&gt;
&lt;br /&gt;
=== Mid-VSYNC ===&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, in both interlace modes, a mid-VSYNC is generated when VCC=R7 on the even field. The VSYNC pulse starts in the middle of the raster line, at HCC=R0/2.&lt;br /&gt;
&lt;br /&gt;
As an exception, on CRTCs 3/4, if R7=0 then mid-VSYNC will instead occur on the odd field. Source: §19.7 &amp;quot;Mid-VSYNC&amp;quot; of the CRTC Compendium.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Interlace modes ==&lt;br /&gt;
&lt;br /&gt;
Note: Some details about the CRTC interlace implementations are missing in this article. Consider it as an introduction to the topic.&lt;br /&gt;
&lt;br /&gt;
[[File:CRTC Interlace modes.png]]&lt;br /&gt;
&lt;br /&gt;
For a CRTC character line with n raster lines, R9 must be set to n-1 on all CRTCs, regardless of the interlace settings. The exception is for CRTCs 0/3/4 in IVM mode, where R9 must be set to n-2.&lt;br /&gt;
&lt;br /&gt;
=== Interlace sync mode (ISM) ===&lt;br /&gt;
&lt;br /&gt;
In this mode, the same information is painted in both fields to enhance readability. Reprogramming the CRTC is not necessary.&lt;br /&gt;
&lt;br /&gt;
=== Interlace sync and video mode (IVM) ===&lt;br /&gt;
&lt;br /&gt;
In this mode, alternating lines are displayed in the even and odd field to double the resolution.&lt;br /&gt;
&lt;br /&gt;
On the even field, the CRTC displays the lines for which VLC is even. On the odd field, the CRTC displays the lines for which VLC is odd.&lt;br /&gt;
&lt;br /&gt;
It is necessary to reprogram the CRTC as if we were building a frame of 624 lines.&lt;br /&gt;
&lt;br /&gt;
CRTC 2 is the exception: R4, R5, R6, R7 do not need to be reprogrammed as it considers each character line to be a double character line.&lt;br /&gt;
&lt;br /&gt;
=== Interlace adjustment line ===&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, in both interlace modes, an additional line (the 625th line) is added automatically by the CRTC at the end of the even field. This line is added after the lines of the vertical adjustment mode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRTC registers ==&lt;br /&gt;
&lt;br /&gt;
The Internal registers of the 6845 are:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!rowspan=2|Register Index&lt;br /&gt;
!rowspan=2|Register Name&lt;br /&gt;
!colspan=3|Read/Write&lt;br /&gt;
!rowspan=2|Range&lt;br /&gt;
!rowspan=2|CPC Setting&lt;br /&gt;
!rowspan=2|Notes&lt;br /&gt;
|-&lt;br /&gt;
!CRTC 0&lt;br /&gt;
!CRTCs 1/2&lt;br /&gt;
!CRTCs 3/4&lt;br /&gt;
|-&lt;br /&gt;
|0||Horizontal Total (-1)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||00000000||63||Width of the screen, in characters. Should always be 63 (64 characters). 1 character == 1μs.&lt;br /&gt;
|-&lt;br /&gt;
|1||Horizontal Displayed||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||00000000||40||Number of characters displayed. Once horizontal character count (HCC) matches this value, DISPTMG is set to 1.&lt;br /&gt;
|-&lt;br /&gt;
|2||Horizontal Sync Position||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||00000000||46||When to start the HSync signal.&lt;br /&gt;
|-&lt;br /&gt;
|3||Horizontal and Vertical Sync Widths||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||VVVVHHHH||128+14||VSync width in scan-lines (Not present on all CRTCs, fixed to 16 lines on these) ; HSync pulse width in characters.&lt;br /&gt;
|-&lt;br /&gt;
|4||Vertical Total (-1)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||x0000000||38||Height of the screen, in characters.&lt;br /&gt;
|-&lt;br /&gt;
|5||Vertical Total Adjust||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||xxx00000||0||Measured in scanlines, can be used for smooth vertical scrolling on CPC.&lt;br /&gt;
|-&lt;br /&gt;
|6||Vertical Displayed||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||x0000000||25||Height of displayed screen in characters. Once vertical character count (VCC) matches this value, DISPTMG is set to 1.&lt;br /&gt;
|-&lt;br /&gt;
|7||Vertical Sync Position||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||x0000000||30||When to start the VSync signal, in characters.&lt;br /&gt;
|-&lt;br /&gt;
|8||Interlace and Skew||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||CCDDxxII||0||CC: Cursor Skew (Only in CRTCs 0, 3 and 4). DD: Display Skew (Only in CRTCs 0, 3 and 4). II: Interlace Mode.&lt;br /&gt;
|-&lt;br /&gt;
|9||Maximum Raster Address (aka Number of Scan Lines) (-1)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||xxx00000||7||Maximum scan line address on CPC can hold between 0 and 7, higher values' upper bits are ignored.&lt;br /&gt;
|-&lt;br /&gt;
|10||Cursor Start Raster||style=&amp;quot;text-align: center;&amp;quot;|Write||style=&amp;quot;text-align: center;&amp;quot;|Write||Read/Write||xBP00000||0||B = Blink On/Off; P = Blink Period Control (16 or 32 frames). Sets first raster row of character that cursor is on to invert.&lt;br /&gt;
|-&lt;br /&gt;
|11||Cursor End Raster||style=&amp;quot;text-align: center;&amp;quot;|Write||style=&amp;quot;text-align: center;&amp;quot;|Write||Read/Write||xxx00000||0||Sets last raster row of character that cursor is on to invert.&lt;br /&gt;
|-&lt;br /&gt;
|12||Display Start Address (High)||Read/Write||style=&amp;quot;text-align: center;&amp;quot;|Write||Read/Write||xx000000||48||On Amstrad Plus, bit7 of the printer port is controlled by bit3 of CRTC R12 (ie. bit11 of Display Start Address).&lt;br /&gt;
|-&lt;br /&gt;
|13||Display Start Address (Low)||Read/Write||style=&amp;quot;text-align: center;&amp;quot;|Write||Read/Write||00000000||0||Allows you to offset the start of screen memory for hardware scrolling, and if using memory from address &amp;amp;0000 with the firmware.&lt;br /&gt;
|-&lt;br /&gt;
|14||Cursor Address (High)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Read/Write||xx000000||0||&lt;br /&gt;
|-&lt;br /&gt;
|15||Cursor Address (Low)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Read/Write||00000000||0||&lt;br /&gt;
|-&lt;br /&gt;
|16||Light Pen Address (High)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Read||xx000000||||On CRTC1, bit6 of Status register goes to 0 when R16 is read.&lt;br /&gt;
|-&lt;br /&gt;
|17||Light Pen Address (Low)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Read||00000000||||On CRTC1, bit6 of Status register goes to 0 when R17 is read.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Screen size ===&lt;br /&gt;
&lt;br /&gt;
We can calculate the screen size in words by multiplying R1 x R6 x (R9+1). And then multiplying the result by 2 to have the screen size in bytes.&lt;br /&gt;
&lt;br /&gt;
With the default CRTC values, we obtain 40 x 25 x (7+1) x 2 = 16000 bytes.&lt;br /&gt;
&lt;br /&gt;
So we can observe that only part of the 16384 bytes (=16KB) page of VRAM is actually displayed on screen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Register access ===&lt;br /&gt;
&lt;br /&gt;
On CRTCs 0/1/2, if a Write Only register is read from, &amp;quot;0&amp;quot; is returned. The register accessing scheme on CRTCs 3/4 makes it impossible to happen.&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, only the 5 least significant bits of the selected register number are considered to write to a register. The other bits are ignored.&lt;br /&gt;
&lt;br /&gt;
On CRTCs 0/1/2, only the 5 least significant bits of the selected register number are considered to read a register:&lt;br /&gt;
* On CRTCs 0/2, registers 18-31 read as 0&lt;br /&gt;
* On CRTC 1, registers 18-30 read as 0, register 31 reads as &amp;amp;FF&lt;br /&gt;
&lt;br /&gt;
On CRTCs 3/4, only the 3 least significant bits of the selected register number are considered to read a register, according to the following table:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Nb&lt;br /&gt;
!Register&lt;br /&gt;
!Definition&lt;br /&gt;
|-&lt;br /&gt;
|0||R16||Light Pen Address (High)&lt;br /&gt;
|-&lt;br /&gt;
|1||R17||Light Pen Address (Low)&lt;br /&gt;
|-&lt;br /&gt;
|2||R10||Cursor Start Raster&lt;br /&gt;
|-&lt;br /&gt;
|3||R11||Cursor End Raster&lt;br /&gt;
|-&lt;br /&gt;
|4||R12||Display Start Address (High)&lt;br /&gt;
|-&lt;br /&gt;
|5||R13||Display Start Address (Low)&lt;br /&gt;
|-&lt;br /&gt;
|6||R14||Cursor Address (High)&lt;br /&gt;
|-&lt;br /&gt;
|7||R15||Cursor Address (Low)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRTC register differences ==&lt;br /&gt;
&lt;br /&gt;
CRTC types 3 and 4 are identical in every way, except for the unlocking mechanism, split screen, hardware soft scroll and 8-bit printer port functionalities specific to the [[ASIC]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== R10/R11 on ASIC/Pre-ASIC  ===&lt;br /&gt;
&lt;br /&gt;
The cursor raster registers R10/R11 act as status registers when read on CRTCs 3/4. They behave as normal cursor raster registers upon write.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! R10 - Bit number&lt;br /&gt;
! Bit value&lt;br /&gt;
! Event&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|1&lt;br /&gt;
|C0=R0&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|C0=R0/2&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|C0=R1-1 (if R0&amp;gt;=R1)&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|0&lt;br /&gt;
|C0=R2&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|C0=R2+R3&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|0&lt;br /&gt;
1&lt;br /&gt;
|R3h&amp;gt;0 : C0=0..R0 on the line R3h from Vsync (C4=R7)&lt;br /&gt;
R3h=0 : C0=0..R0 over 15 lines from Vsync (C4=R7)&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|1&lt;br /&gt;
|Always 1&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|0&lt;br /&gt;
0&lt;br /&gt;
|C0=0..R0-1 : VMA.Lsb=0xFF&lt;br /&gt;
C0=R0 : VMA'.Lsb=0x00 (same cond if C0=R0=0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! R11 - Bit number&lt;br /&gt;
! Bit value&lt;br /&gt;
! Event&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|C4=R4 and C9=R9 and C0=R0 : Last char of screen&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|C4=R6-1 and C9=R9 and C0=R0 : Last char displayed&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|C4=R7-1 and C9=R9 and C0=R0 : Last char before Vsync&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|0/1&lt;br /&gt;
|Timer 16 CRTC frames&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|Always 1&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|0&lt;br /&gt;
|C9=R9 : C0=0 to R0&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|0&lt;br /&gt;
|Always 0&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|1&lt;br /&gt;
|(C9=R9 and C0=R0) or (C9=0 and C0=0 to R0-1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Horizontal and Vertical Sync (R3) ===&lt;br /&gt;
&lt;br /&gt;
Type 0:&lt;br /&gt;
*Bits 7..4 define Vertical Sync Width. If 0 is programmed, this gives 16 lines of VSYNC.&lt;br /&gt;
*Bits 3..0 define Horizontal Sync Width. If 0 is programmed, no HSYNC is generated (and therefore, no interrupts).&lt;br /&gt;
&lt;br /&gt;
Type 1:&lt;br /&gt;
*Bits 7..4 are ignored. Vertical Sync is fixed at 16 lines.&lt;br /&gt;
*Bits 3..0 define Horizontal Sync Width. If 0 is programmed, no HSYNC is generated (and therefore, no interrupts).&lt;br /&gt;
&lt;br /&gt;
Type 2:&lt;br /&gt;
*Bits 7..4 are ignored. Vertical Sync is fixed at 16 lines.&lt;br /&gt;
*Bits 3..0 define Horizontal Sync Width. If 0 is programmed, this gives a HSYNC width of 16.&lt;br /&gt;
&lt;br /&gt;
Types 3/4:&lt;br /&gt;
*Bits 7..4 define Vertical Sync Width. If 0 is programmed, this gives 16 lines of VSYNC.&lt;br /&gt;
*Bits 3..0 define Horizontal Sync Width. If 0 is programmed, this gives a HSYNC width of 16.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Interlace and Skew (R8) ===&lt;br /&gt;
&lt;br /&gt;
Types 0/3/4:&lt;br /&gt;
*Bits 7..6 define the skew (delay) of the CUDISP signal (00 = Non-skew ; 01 = One-character skew ; 10 = Two-character skew ; 11 = Non-output).&lt;br /&gt;
*Bits 5..4 define the skew (delay) of the DISPTMG signal (00 = Non-skew ; 01 = One-character skew ; 10 = Two-character skew ; 11 = Non-output).&lt;br /&gt;
*Bits 3..2 are ignored.&lt;br /&gt;
*Bits 1..0 define the interlace mode (00 = No Interlace ; 01 = Interlace Sync ; 10 = No Interlace ; 11 = Interlace Sync and Video).&lt;br /&gt;
&lt;br /&gt;
Types 1/2:&lt;br /&gt;
*Bits 7..2 are ignored.&lt;br /&gt;
*Bits 1..0 define the interlace mode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== R31 on Type 1 ===&lt;br /&gt;
&lt;br /&gt;
R31 is described in the UM6845R documentation as &amp;quot;Dummy Register&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Its use is described in the documentation for the Rockwell R6545 in combination with R18, R19 and R8 and the Status Register.&lt;br /&gt;
&lt;br /&gt;
In the UM6845R it appears to have no effect. Reading and writing does nothing. Reading it returns &amp;amp;FF.&lt;br /&gt;
&lt;br /&gt;
R31 doesn't exist on CRTCs 0/2/3/4.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Status register on Type 1 ===&lt;br /&gt;
&lt;br /&gt;
The UM6845R has a status register that can be read using port &amp;amp;BExx.&lt;br /&gt;
&lt;br /&gt;
Bit 6 is set to 1 if there is a strobe input to the /LPEN signal. It is cleared to 0 when either R17 or R16 (LPEN address) of the CRTC are read. It signals there is a valid LPEN input. On Kevin Thacker's CPC with UM6845R, it is triggered at power on, R17 and R16 have the values 0 when read.&lt;br /&gt;
&lt;br /&gt;
Bit 5 is set to 1 when CRTC is in &amp;quot;vertical blanking&amp;quot;. Vertical blanking is when the vertical border is active. i.e. VCC&amp;gt;=R6. &lt;br /&gt;
&lt;br /&gt;
It is cleared when the frame is started (VCC=0). It is not directly related to the DISPTMG output (used by the CPC to display the border colour) because that output is a combination of horizontal and vertical blanking.&lt;br /&gt;
This bit will be 0 when pixels are being displayed.&lt;br /&gt;
&lt;br /&gt;
All the other bits read as 0 and don't have any function.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRTC Type Detection ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10 MODE 1:' Reinitialize screen&lt;br /&gt;
20 OUT &amp;amp;BC00,31:IF INP(&amp;amp;BF00)=255 THEN PRINT&amp;quot;crtc 1&amp;quot;:END&lt;br /&gt;
30 OUT &amp;amp;BC00,12:IF INP(&amp;amp;BF00)=0 THEN PRINT&amp;quot;crtc 2&amp;quot;:END&lt;br /&gt;
40 OUT &amp;amp;BC00,20:IF INP(&amp;amp;BF00)=0 THEN PRINT&amp;quot;crtc 0&amp;quot;:END&lt;br /&gt;
50 PRINT&amp;quot;crtc 3/4&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Distinguishing between CRTCs 3 and 4 can be done by trying to [[Programming:Unlocking ASIC|unlock the ASIC]] or by testing the [[8255|PPI chip]]. On ASIC, if PPI Port B is set as output it will behave the same as input.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRTC Timing Diagrams ==&lt;br /&gt;
[[File:CRTC Timing Diagram Rockwell.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:CRTC timing small.gif]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Internal Counters ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Counter name&lt;br /&gt;
! Abbr&lt;br /&gt;
! Alternate name&lt;br /&gt;
! Compared with&lt;br /&gt;
! Comment&lt;br /&gt;
|-&lt;br /&gt;
|Horizontal Character Counter&lt;br /&gt;
|HCC&lt;br /&gt;
|C0&lt;br /&gt;
|R0, R1, R2&lt;br /&gt;
| Increments on every clock cycle&lt;br /&gt;
|-&lt;br /&gt;
|Horizontal Sync Counter&lt;br /&gt;
|HSC&lt;br /&gt;
|C3l&lt;br /&gt;
|R3l&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Vertical Character Counter&lt;br /&gt;
|VCC&lt;br /&gt;
|C4&lt;br /&gt;
|R4, R6, R7&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Vertical Sync Counter&lt;br /&gt;
|VSC&lt;br /&gt;
|C3h&lt;br /&gt;
|R3h&lt;br /&gt;
|R3h is fixed to 0 on CRTCs 1/2. This gives 16 lines of VSYNC&lt;br /&gt;
|-&lt;br /&gt;
|Vertical Line Counter&lt;br /&gt;
|VLC&lt;br /&gt;
|C9&lt;br /&gt;
|R9, R10, R11&lt;br /&gt;
|If not in IVM mode, this counter is exposed on CRTC pins RA0..RA4&lt;br /&gt;
|-&lt;br /&gt;
|Vertical Total Adjust Counter&lt;br /&gt;
|VTAC&lt;br /&gt;
|C5&lt;br /&gt;
|R5&lt;br /&gt;
|This counter does not exist on CRTCs 0/3/4. C9 is reused instead&lt;br /&gt;
|-&lt;br /&gt;
|Frame Counter&lt;br /&gt;
|FC&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|Used to alternate frames in interlace and for CRTC cursor blinking&lt;br /&gt;
|-&lt;br /&gt;
|Memory Address&lt;br /&gt;
|MA&lt;br /&gt;
|&lt;br /&gt;
|R14/R15&lt;br /&gt;
|This counter is exposed on CRTC pins MA0..MA13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When IVM mode is activated, VLC continues to increment normally. However, RA is not identical to VLC anymore. Instead, VLC is considered shifted left by 1 bit, and bit0 represents the parity of the field (even/odd).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRTC counter differences ==&lt;br /&gt;
&lt;br /&gt;
=== MA buffering ===&lt;br /&gt;
&lt;br /&gt;
No matter its type, the CRTC never buffers any of its counters, except for the video pointer MA. The buffer MA' is needed because MA has to be reloaded at the beginning of every raster line.&lt;br /&gt;
&lt;br /&gt;
At the end of the display of the last raster line of each character line (ie. when HCC=R1 and VLC=R9), MA' captures the current value of MA.&lt;br /&gt;
&lt;br /&gt;
CRTC 2 is the exception: at the end of the display of the last raster line of the frame, MA' captures R12/R13 instead of MA.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MA reload ===&lt;br /&gt;
&lt;br /&gt;
On CRTCs 0/3/4, at the beginning of the first raster line of the frame, MA and MA' are loaded with R12/R13. Otherwise, MA is loaded with MA'.&lt;br /&gt;
&lt;br /&gt;
On CRTC 2, at the beginning of every raster line of the frame (including the first one), MA is loaded with MA'.&lt;br /&gt;
&lt;br /&gt;
On CRTC 1, at the beginning of every raster line of the first character line of the frame (ie. when VCC=0), MA is loaded with R12/R13 instead of MA'. '''This is a major source of incompatibility if the programmer does not take care.''' In demos and games, to be compatible with all CRTCs, program R12/R13 only when VCC≠0. This will then take effect at the next CRTC frame start.&lt;br /&gt;
&lt;br /&gt;
==== Rupture For Dummies (R5 bug) ====&lt;br /&gt;
&lt;br /&gt;
CRTC 1 has a bug that occurs when R5 is updated with a non-zero value when HCC=R0 and VLC≠R9, but only when R5 was previously 0. This changes the MA update source to R12/R13 instead of MA'. The CRTC then loads R12/R13 into MA at the beginning of every scanline, regardless of the VCC value.&lt;br /&gt;
&lt;br /&gt;
This R5 bug also messes with the frame parity management. However, it is possible to fix the parity of the frame by activating/deactivating the IVM interlace mode.&lt;br /&gt;
&lt;br /&gt;
The vertical adjustment operates normally after the RFD is triggered. If vertical adjustment is not needed, R5 can be reset at any time after the RFD is activated.&lt;br /&gt;
&lt;br /&gt;
This effect is used in the [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=19308 DSC4 demo].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== VSC (C3h) overflow ===&lt;br /&gt;
&lt;br /&gt;
During a VSYNC on CRTCs 0/3/4, if VSYNC Width (R3h) is changed with a value less than the current VSC, then VSC overflows and will count up to its maximum value (15) before looping back and counting up again until it reaches the new value of R3h.&lt;br /&gt;
&lt;br /&gt;
On CRTCs 1/2, the VSYNC width is fixed to 16 characters. It is not possible to modify it. Therefore, VSC cannot be overflowed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HSC (C3l) overflow ===&lt;br /&gt;
&lt;br /&gt;
During an HSYNC, if HSYNC Width (R3l) is changed with a value less than the current HSC, then HSC overflows and will count up to its maximum value (15) before looping back and counting up again until it reaches the new value of R3l.&lt;br /&gt;
&lt;br /&gt;
The only exception is for CRTC 1 with a value of 0, which immediately cancels the current HSYNC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== VCC (C4) overflow ===&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, if Vertical Total (R4) is changed with a value less than VCC, then:&lt;br /&gt;
* if this update was done when VCC &amp;lt; R4, then VCC overflows and will count up to its maximum value (127) before looping back and counting up again until it reaches the new value of R4&lt;br /&gt;
* if this update was done when VCC = R4, the current character line was already decided to be the last one of the current frame. No update to R4 will make the CRTC change its mind for the current frame&lt;br /&gt;
&lt;br /&gt;
The only exception when VCC = R4 is for CRTC 1 with a value of 0, which will cause VCC to overflow.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HCC (C0) overflow ===&lt;br /&gt;
&lt;br /&gt;
If Horizontal Total (R0) is changed with a value less than the current HCC, then:&lt;br /&gt;
* on CRTCs 0/1/2, HCC overflows and will count up to its maximum value (255) before looping back and counting up again until it reaches the new value of R0&lt;br /&gt;
* on CRTCs 3/4, the current line is considered finished and HCC is immediately reset to 0 on the next line&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== VLC (C9) overflow ===&lt;br /&gt;
&lt;br /&gt;
If Number of Scan Lines (R9) is changed with a value less than the current VLC, then:&lt;br /&gt;
* on CRTCs 0/1/2, VLC overflows and will count up to its maximum value (31) before looping back and counting up again until it reaches the new value of R9&lt;br /&gt;
* on CRTCs 3/4, the current line is considered the last one of this CRTC character and VLC will reset to 0 on the next line&lt;br /&gt;
&lt;br /&gt;
As an exception, on CRTCs 0/2, if VLC is modified during the last frame line, then the updated value will not be considered for the current frame.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== VTAC (C5/C9) overflow ===&lt;br /&gt;
&lt;br /&gt;
During vertical adjustment mode, if Vertical Total Adjust (R5) is changed with a value less than the current VTAC, then:&lt;br /&gt;
* on CRTCs 0/1/2, VTAC overflows and will count up to its maximum value (31) before looping back and counting up again until it reaches the new value of R5&lt;br /&gt;
* on CRTCs 3/4, the current line is considered the last one of the current frame and vertical adjustment will end&lt;br /&gt;
&lt;br /&gt;
As an exception, on CRTCs 0/2, if VTAC is modified during the last frame line, then the updated value will not be considered for the current frame.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Vertical Adjustment mode ===&lt;br /&gt;
&lt;br /&gt;
On CRTCs 3/4, this mode does not increment VCC, so VCC remains equal to R4.&lt;br /&gt;
&lt;br /&gt;
On CRTC 0, this mode increments VCC, causing it to exceed R4, but this increment occurs only once.&lt;br /&gt;
&lt;br /&gt;
On CRTCs 1/2, this mode increments VCC, causing it to exceed R4, and this increment can happen multiple times depending on the values of R5 and R9.&lt;br /&gt;
&lt;br /&gt;
Also, only CRTCs 1/2 have a dedicated C5 counter. On CRTCs 0/3/4, during Vertical Adjustment, C9 has to fullfil the VTAC role which means that it cannot fullfil its VLC role. This impacts address generation as R9 is not considered anymore.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Counter freezes ===&lt;br /&gt;
&lt;br /&gt;
On CRTCs 1/2/3/4, R0 accepts all values without causing any problems for counters.&lt;br /&gt;
&lt;br /&gt;
On CRTC 0:&lt;br /&gt;
* Setting R0 to 0 will cause numerous issues that stem from the fact that VLC is frozen. As HCC never reaches 1, the logic that increments VLC is never triggered.&lt;br /&gt;
* The logic that triggers vertical adjustment is broken if R0&amp;lt;2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Block Diagrams ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Hitachi&lt;br /&gt;
!UMC&lt;br /&gt;
!Motorola&lt;br /&gt;
|-&lt;br /&gt;
|[[File:CRTC Block Diagram.png|Hitachi]]&lt;br /&gt;
|[[File:UMC CRTC Block Diagram.png|UMC]]&lt;br /&gt;
|[[File:Motorola CRTC Block Diagram.png|Motorola]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRTC-II (aka Type 5) ==&lt;br /&gt;
&lt;br /&gt;
The [[Media:CRTC-5-HD6345.pdf|HD6345 datasheet]] states it is upward-compatible with the HD6845S in pin and software.&lt;br /&gt;
&lt;br /&gt;
This chip was never used by Amstrad. However, some CPC enthusiasts have replaced the original CRTC chip in their CPC with this one.&lt;br /&gt;
&lt;br /&gt;
With this chip, split-screen becomes easy: [https://thecheshirec.at/2024/05/20/des-splitscreens-en-basic-sur-crtc5/ Split-screen in BASIC]. And 3 new graphics modes (160x100x16c, 320x100x4c, 640x100x2c) are available: [https://thecheshirec.at/2024/11/10/trois-nouveaux-modes-video-grace-au-crtc-5/ New graphics modes in BASIC].&lt;br /&gt;
&lt;br /&gt;
This is the cheapest way to upgrade the CPC's graphics capabilities, costing only 1.29€. [https://thecheshirec.at/2024/05/19/des-crtc5-a-129e/ Source]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Datasheets ==&lt;br /&gt;
&lt;br /&gt;
==== Used by Amstrad ====&lt;br /&gt;
* [[Media:hd6845.hitachi.pdf|HD6845S (Hitachi)]] aka Type 0&lt;br /&gt;
* [[Media:UM6845-UMC.pdf|UM6845 (UMC)]] aka Type 0&lt;br /&gt;
* [[Media:Um6845r.umc.pdf|UM6845R (UMC)]] aka Type 1&lt;br /&gt;
* [[Media:Mc6845.motorola.pdf|MC6845 (Motorola)]] aka Type 2&lt;br /&gt;
* [[Media:CPC_Plus_Asic_Schematic.GIF|AMS40489 (Amstrad)]] aka Type 3 ([[ASIC]])&lt;br /&gt;
* [[AMS40226 (Amstrad)]] aka Type 4 (Pre-ASIC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Unused clones ====&lt;br /&gt;
* [[CM607P]] a Bulgarian clone made in Pravetz factory. It is used in the [[Aleste 520EX]].&lt;br /&gt;
* [[Media:hd6845.hitachi.pdf|HD6845R]] by Hitachi. According to Kevin Thacker, the [[KC Compact]] used HD6845R only.&lt;br /&gt;
* [[Media:UM6845E-UMC.pdf|UM6845E]] by UMC&lt;br /&gt;
* [[Media:Mc6845.pdf|MC6845-1]] by Motorola&lt;br /&gt;
* [[Media:F6845.pdf|F6845]] by Fairchild&lt;br /&gt;
* [[Media:EF6845P.pdf|EF6845]] by Thomson Semiconductors&lt;br /&gt;
* [[Media:VL6845 VTi.pdf|VL6845]] by VTi&lt;br /&gt;
* [[Media:C6845 CRTC (CAST).pdf|C6845]] by Cast&lt;br /&gt;
* [[Media:MB89321B FUJ.pdf|MB89321B]] by Fujitsu. It is pin-compatible with the 6845&lt;br /&gt;
* [[Media:MB89321A datasheet CRTC.pdf|MB89321A]] by Fujitsu. Enhanced version that adds smooth scroll, screen partitioning, independent scrolling of screen partitions, and other convenient features&lt;br /&gt;
* [[Media:Mos 6545-1 crtc.pdf|MOS 6545]] (MOS, Rockwell, Synertek) is pin-compatible with the 6845. Its differences are found in the R8 register.&lt;br /&gt;
* [https://www.cpcwiki.eu/forum/other-retro/interesting-discussion-about-the-c128-s-cpm-poor-performance/msg223058/#msg223058 MOS 8563] It is an evolution of the 6545/6845 CRTC chip, with blitter abilities to autonomously perform block memory copies within its dedicated video RAM.&lt;br /&gt;
* [https://github.com/hoglet67/BeebFpga/blob/dev/src/common/mc6845.vhd BeebFpga] [https://github.com/MiSTer-devel/Amstrad_MiSTer/blob/master/rtl/UM6845R.v MiSTer] [https://opencores.org/websvn/filedetails?repname=System09&amp;amp;path=%2FSystem09%2Ftrunk%2Frtl%2FVHDL%2Fcrtc6845.vhd OpenCores] Verilog/VHDL implementations of the 6845&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tools about CRTC ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.cpcwiki.eu/imgs/9/99/Elmar_Krieger-SPECIAL_EFFECTS.dsk  some BASIC tools to detect CRTC types 0-1-2 and show some effects] by [[Elmar Krieger]] (DSK for Emulators)&lt;br /&gt;
* [[File:Shaker26.dsk]] Shaker - Suite of CRTC tests associated with the CPC CRTC compendium (many of them will not work correctly on emulators and that was the purpose of the tests, to help create more compatible emulation)&lt;br /&gt;
* [[File:Shaker addon.dsk]] Shaker Add-On (Pixel 1 Hard Scroll / Vertical Rupture all Crtc)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/6845 Wikipedia on the CRTC]&lt;br /&gt;
* [[Media:ACCC1.8-EN.pdf]] CPC CRTC Compendium - Latest (04/2024!) document containing in-depth info about CRTC programming on CPC.&lt;br /&gt;
* [http://www.grimware.org/doku.php/documentations/devices/crtc CRTC documentation from Grimware]&lt;br /&gt;
* [http://quasar.cpcscene.net/doku.php?id=assem:crtc Quasar CRTC documentation (in french)]&lt;br /&gt;
* [https://pulkomandy.github.io/shinra.github.io/crtc.html PulkoMandy's table] [https://www.theoddys.com/acorn/the_6845_crtc/6845%20Variants.xlsx Oddy's table] Differences between CRTC types&lt;br /&gt;
* [[Media:Dossier Rupture(Gozeur Paradox).pdf]]&lt;br /&gt;
* [[Media:Dossier CRTC(Ramlaid Mortel).pdf]] Les entrailles du CRTC&lt;br /&gt;
* [https://thecheshirec.at/tag/crtc6845/ Leçons CRTC (CheshireCat)]&lt;br /&gt;
* [[Media:CRTC Compendium Podcast.mp3]] The CRTC Compendium digested in podcast format&lt;br /&gt;
* [https://martin.hinner.info/vga/pal.html PAL video timing specification]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related pages==&lt;br /&gt;
&lt;br /&gt;
*[[Gate Array]]&lt;br /&gt;
&lt;br /&gt;
*[[ASIC]]&lt;br /&gt;
&lt;br /&gt;
*[[Video modes]]&lt;br /&gt;
&lt;br /&gt;
*[[Synchronising with the CRTC and display]] : technic and details on the relationship between Gate Array and CRTC.&lt;br /&gt;
&lt;br /&gt;
*[[VIDI digitizer]] This extension contains its own CRTC chip&lt;br /&gt;
&lt;br /&gt;
[[Category:Hardware]] [[Category:CPC Internal Components]] [[Category:Electronic Component]] [[Category:Programming]] [[Category:Datasheet]] [[Category:Graphic]]&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Gate_Array&amp;diff=126055</id>
		<title>Gate Array</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Gate_Array&amp;diff=126055"/>
				<updated>2025-05-18T21:34:45Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Amstrad 40007 Gate Array.png|right|thumb|Amstrad 40007 Gate Array]]&lt;br /&gt;
[[File:Amstrad 40010 Gate Array.png|right|thumb|Amstrad 40010 Gate Array]]&lt;br /&gt;
&lt;br /&gt;
Also designated as Video Gate Array (VGA, not to be confused with the IBM PC compatible graphic card spec).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Introduction  ==&lt;br /&gt;
&lt;br /&gt;
The Gate Array is a specially designed chip exclusively for use in the Amstrad CPC and was designed by Amstrad plc. &lt;br /&gt;
&lt;br /&gt;
In the CPC+ system, the functions of the Gate Array are integrated into a single [[ASIC|ASIC]]. When the ASIC is &amp;quot;locked&amp;quot;, the extra features are not available and the 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 &amp;quot;un-locked&amp;quot; to access the new features. &lt;br /&gt;
&lt;br /&gt;
In the [[KC Compact]] system, the functions of the Gate Array are &amp;quot;emulated&amp;quot; in TTL chips, [[CIO Overview|CIO]], and its color translation EPROM.&lt;br /&gt;
&lt;br /&gt;
In the &amp;quot;cost-down&amp;quot; version of the CPC6128, the functions of the Gate Array are integrated into an ASIC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== What does it do? ==&lt;br /&gt;
&lt;br /&gt;
The Gate Array is responsible for the display (colour palette, resolution, horizontal and vertical sync), bus arbitration, DRAM refresh, interrupt generation and memory arrangement. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bus arbitration ==&lt;br /&gt;
&lt;br /&gt;
The Gate Array arbitrates access to the RAM between the CPU and the video hardware (CRTC and Gate-Array).&lt;br /&gt;
&lt;br /&gt;
Every microsecond: &lt;br /&gt;
* The CRTC generates a memory address using it's MA and RA signal outputs. See the [[CRTC]] wiki page to know how the motherboard wiring transforms these signals into the Video Memory Address (VMA).&lt;br /&gt;
* The Gate Array fetches 2 bytes for each address. /CPU_ADDR is a 1MHz signal. So these 2 bytes are fetched sequentially. They are not interleaved with Z80 access. These bytes are fetched even when the border is on as this is required for DRAM refresh.&lt;br /&gt;
* The video hardware is given priority so that the display is not disrupted.&lt;br /&gt;
&lt;br /&gt;
The Gate-Array generates the &amp;quot;READY&amp;quot; signal which is connected to the &amp;quot;/WAIT&amp;quot; input signal of the CPU. This signal is used to stop the CPU accessing RAM while the video-hardware is accessing it.&lt;br /&gt;
&lt;br /&gt;
In fact, the Gate Array allows the Z80 to access the RAM in only 1 out of every 4 cycles. As a result, all instruction timings are stretched so that they are all multiples of a microsecond (1µs), and this gives an effective CPU clock of 3.3Mhz.&lt;br /&gt;
&lt;br /&gt;
Unlike the ZX Spectrum or the Amiga, where bus arbitration is restricted to the &amp;quot;contended memory&amp;quot; or &amp;quot;chip RAM&amp;quot;, on the CPC it also applies to ROM access and to RAM expansions. So the Z80 always runs at the same speed, regardless of the type of memory being accessed.&lt;br /&gt;
&lt;br /&gt;
Last but not least, bus arbitration also applies to I/O access. And memory access is not aligned with I/O access on Z80.&lt;br /&gt;
&lt;br /&gt;
Note: On Amstrad Plus, the ASIC also has to handle DMA instruction fetch from RAM.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DRAM refresh ==&lt;br /&gt;
&lt;br /&gt;
On Amstrad CPC, the Gate Array is responsible for the DRAM refresh, instead of using the Z80 built-in DRAM refresh mechanism. The reason is that there can only be 3 DRAM accesses per microsecond on this architecture. Doing DRAM refresh on each M1 cycle as it is done on MSX would bog down the CPU speed on CPC given its bus arbitration scheme.&lt;br /&gt;
&lt;br /&gt;
The Z80 generates a maximum of one request per microsecond. The CPC also requires two memory accesses per microsecond for reading video data.&lt;br /&gt;
&lt;br /&gt;
The CPC specs 4164-20 DRAMs. These require 330nS for a read or write cycle. The CPC also uses the optimised sequential CAS cycles to read the two video data bytes in half a microsecond. [https://www.cpcwiki.eu/forum/amstrad-cpc-hardware/the-cpc-revision-zero-article/msg243769/ Source]&lt;br /&gt;
&lt;br /&gt;
The way to cause the RAM refresh to fail in both a Plus or normal CPC is simply to stop a few bits of the CRTC address changing (ie. never refresh the selected area).&lt;br /&gt;
&lt;br /&gt;
Generally, only the Row address needs to be cycled, so stopping MA0 through MA7 from changing, and stopping the CPU from reading those rows, will cause data to be lost, quite quickly (generally around 4ms). [https://www.cpcwiki.eu/forum/amstrad-cpc-hardware/memory-refresh-plus/ Source]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Interrupt generation ==&lt;br /&gt;
&lt;br /&gt;
Interrupts on the CPC are created by the Gate Array based on settings from the CRTC. The Gate Array has an internal counter R52 (the R is for Raster) that counts from 0 to 51, incrementing after each HSYNC signal.&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, R52 interrupts always start 1µs after the end of an HSYNC. But on CRTCs 3/4, HSYNCs occur 1µs later than on CRTCs 0/1/2. Which means that on CRTCs 3/4, interrupts start 1µs later than on CRTCs 0/1/2. This can be adjusted by using the CRTC register 3.&lt;br /&gt;
&lt;br /&gt;
R52 will return to 0 and the Gate Array will send an interrupt request on any of these conditions:&lt;br /&gt;
* When it exceeds 51&lt;br /&gt;
* By setting bit4 of the RMR register of the Gate Array to 1&lt;br /&gt;
* At the end of the 2nd HSYNC after the start of the VSYNC&lt;br /&gt;
&lt;br /&gt;
When the Gate Array sends an interrupt request:&lt;br /&gt;
*If the interrupts were authorized at the time of the request, then bit5 of R52 is cleared (but R52 was reset to 0 anyway) and the interrupt takes place&lt;br /&gt;
*If interrupts are not authorized, then the R52 counter continues to increment and the interrupt remains armed (the Gate Array then maintains its INT signal). When interrupts are enabled (using the EI instruction), bit5 of R52 is cleared and the interrupt takes place. This happens only '''after the instruction that follows EI''' as this Z80 instruction has a 1-instruction delay.&lt;br /&gt;
&lt;br /&gt;
[https://shaker.logonsystem.eu/ACCC1.8-EN.pdf Source]&lt;br /&gt;
&lt;br /&gt;
Note: On Amstrad Plus, the interrupt management system is seriously beefed up. See the [[ASIC]] wiki page.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CSYNC signal ==&lt;br /&gt;
&lt;br /&gt;
The HSYNC and VSYNC signals are received from the [[CRTC]]. These signals are then modified by the Gate Array to C-HSYNC and C-VSYNC and merged into a single CSYNC signal that will be sent to the display.&lt;br /&gt;
&lt;br /&gt;
When CRTC HSYNC is active, the Gate Array immediately outputs the palette colour black. If the HSYNC is set to 14 characters then black will be output for 14µs.&lt;br /&gt;
&lt;br /&gt;
If a graphics mode change is pending, the HSYNC pulse width needs to be at least 2µs for Gate Array to change the graphics mode.&lt;br /&gt;
&lt;br /&gt;
C-HSYNC begins 2µs after activation of the CRTC HSYNC and stays a maximum of 4µs (signal is cut short if HSYNC width is greater than 6).&lt;br /&gt;
&lt;br /&gt;
For example, if CRTC R2=46, and CRTC HSYNC width is 14 chars then C-HSYNC starts at 48 and lasts only until 51 included.&lt;br /&gt;
&lt;br /&gt;
On Gate Array, even if the duration of the CRTC VSYNC is reduced to 2 µseconds, the Gate Array will always output black for 26 lines with 4 lines of C-VSYNC to the monitor. While on ASIC/Pre-ASIC, the CRTC VSYNC must be active as long as the C-VSYNC signal is sent to the monitor.&lt;br /&gt;
&lt;br /&gt;
The Gate Array (and ASIC/Pre-ASIC) uses 2 internal counters to create its CSYNC signal:&lt;br /&gt;
* H06 counts the number of CRTC characters processed during an HSYNC. H06 is incremented by the Gate Array for each CRTC character when CRTC HSYNC is active. The Gate Array activates the C-HSYNC signal when H06 reaches 2, and changes its graphics mode if a change was pending. It deactivates this signal when H06 reaches 6.&lt;br /&gt;
* V26 counts the number of HSYNCs occuring during a VSYNC. V26 is incremented by the Gate Array when the CRTC signals an end of HSYNC. The Gate Array activates the C-VSYNC signal when V26 reaches 2 (and if VSYNC is active on ASIC/Pre-ASIC). It deactivates this signal when V26 reaches 6. After the 26th line has been processed, the Gate Array stops outputting the palette colour black.&lt;br /&gt;
&lt;br /&gt;
If CRTC VSYNC is activated again while V26 is still in progress, then V26 is reset to 0 and starts counting up again the HSYNC pulses.&lt;br /&gt;
&lt;br /&gt;
The HSYNC signal from the CRTC is 0 when inactive and 1 when active. Same for VSYNC.&lt;br /&gt;
&lt;br /&gt;
C-HSYNC and C-VSYNC are composited using the XNOR function. The resulting CSYNC signal produced by the Gate Array is 1 when inactive and 0 when active.&lt;br /&gt;
&lt;br /&gt;
On a CPC monitor, the CSYNC is rendered in &amp;quot;absolute black&amp;quot;. It is darker than the palette colour black output by the Gate Array. The electron beam is basically turned off. Turning up the brightness level won't make it any brighter.&lt;br /&gt;
&lt;br /&gt;
[https://shaker.logonsystem.eu/ACCC1.8-EN.pdf Source]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Controlling the Gate Array  ==&lt;br /&gt;
&lt;br /&gt;
The gate array is controlled by I/O. The gate array is selected when bit 15 of the I/O port address is set to &amp;quot;0&amp;quot; and bit 14 of the I/O port address is set to &amp;quot;1&amp;quot;. The values of the other bits are ignored. However, to avoid conflict with other devices in the system, these bits should be set to &amp;quot;1&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
The recommended I/O port address is &amp;amp;7Fxx. &lt;br /&gt;
&lt;br /&gt;
The Gate Array is not connected to the CPU's RD and WR pins, so it cannot detect the bus's I/O direction. If you execute an I/O read operation on the Gate Array I/O address, the Gate Array will read an unpredictable value from the databus which will be in high-impedance state. If the value is a valid Gate Array command, it will be executed, otherwise nothing will happen. [https://www.grimware.org/doku.php/documentations/devices/gatearraydo=export_xhtml Source]&lt;br /&gt;
&lt;br /&gt;
The function to be performed is selected by writing data to the Gate Array, the first bits of the data define the function selected (see table below). It is not possible to read from the Gate Array. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=4| 8bit command&lt;br /&gt;
!rowspan=2| Machine&lt;br /&gt;
!rowspan=2| Register&lt;br /&gt;
!rowspan=2| Description&lt;br /&gt;
!rowspan=2| Chip&lt;br /&gt;
|-&lt;br /&gt;
! 7&lt;br /&gt;
! 6&lt;br /&gt;
! 5&lt;br /&gt;
! 4..0&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0 || x || style=&amp;quot;text-align: center;&amp;quot; | n || All || PENR || Select a color register || Gate Array&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1 || x || style=&amp;quot;text-align: center;&amp;quot; | n || All || INKR || Change the value of the currently selected color register || Gate Array&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0 || 0 || style=&amp;quot;text-align: center;&amp;quot; | n || All || RMR || Control Interrupt counter, ROM mapping and Graphics mode || Gate Array&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot;|1 || rowspan=&amp;quot;2&amp;quot;|0 || rowspan=&amp;quot;2&amp;quot;|1 || style=&amp;quot;text-align: center;&amp;quot; rowspan=&amp;quot;2&amp;quot; | n || All || RMR || ''Ghost register'' || Gate Array (CPC) or locked ASIC (Plus)&lt;br /&gt;
|-&lt;br /&gt;
| Plus || RMR2 || ASIC &amp;amp; Advanced ROM mapping || Unlocked ASIC&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1 ||colspan=2  style=&amp;quot;text-align: center;&amp;quot; | n || All || MMR || RAM memory mapping || PAL (only with 128KB or RAM expansion)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The MMR register is not available in the Gate Array, but is performed by a device at the same I/O port address location.&lt;br /&gt;
&lt;br /&gt;
In the CPC464, CPC664 and KC compact, MMR is performed in an external memory expansion (e.g. Dk'Tronics 64K RAM Expansion), if this expansion is not present then MMR is not available.&lt;br /&gt;
&lt;br /&gt;
In the CPC6128, MMR is performed by a [[PAL16L8|PAL chip]] located on the main PCB, or an external memory expansion.&lt;br /&gt;
&lt;br /&gt;
In the 464+ and 6128+, MMR is performed by the ASIC or an external memory expansion. Please read the document on RAM management for more information.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Registers ==&lt;br /&gt;
&lt;br /&gt;
Note: The Plus palette capabilities are only accessible through the [[Default I/O Port Summary|ASIC I/O page]]. Registers PENR and INKR are not needed in that case.&lt;br /&gt;
&lt;br /&gt;
=== Register PENR (Select a color register) ===&lt;br /&gt;
&lt;br /&gt;
When bit 7 and bit 6 are set to &amp;quot;0&amp;quot;, the remaining bits determine which pen is to have its colour changed. When bit 4 is set to &amp;quot;0&amp;quot;, bits 3 to 0 define which pen is to be selected. When bit 4 is set to &amp;quot;1&amp;quot;, the value contained in bits 3-0 is ignored and the border is selected. &lt;br /&gt;
&lt;br /&gt;
The pen remains selected until another is chosen. &lt;br /&gt;
&lt;br /&gt;
Each mode has a fixed number of pens. Mode 0 has 16 pens, mode 1 has 4 pens and mode 2 has 2 pens. &lt;br /&gt;
&lt;br /&gt;
==== Summary  ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Bit&lt;br /&gt;
!Value&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 0 || rowspan=&amp;quot;2&amp;quot; | Gate Array PENR register&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 0 &lt;br /&gt;
|-&lt;br /&gt;
| 5 || - || not used&lt;br /&gt;
|-&lt;br /&gt;
| 4 || 1 || Select border&lt;br /&gt;
|-&lt;br /&gt;
| 3 || x || rowspan=&amp;quot;4&amp;quot; | Ignored&lt;br /&gt;
|-&lt;br /&gt;
| 2 || x&lt;br /&gt;
|-&lt;br /&gt;
| 1 || x&lt;br /&gt;
|-&lt;br /&gt;
| 0 || x&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Bit&lt;br /&gt;
!Value&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 0 || rowspan=&amp;quot;2&amp;quot; | Gate Array PENR register&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 0&lt;br /&gt;
|-&lt;br /&gt;
| 5 || - || not used&lt;br /&gt;
|-&lt;br /&gt;
| 4 || 0 || Select pen&lt;br /&gt;
|-&lt;br /&gt;
| 3 || x || rowspan=&amp;quot;4&amp;quot; | Pen number&lt;br /&gt;
|-&lt;br /&gt;
| 2 || x&lt;br /&gt;
|-&lt;br /&gt;
| 1 || x&lt;br /&gt;
|-&lt;br /&gt;
| 0 || x&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Register INKR (Change the value of the currently selected color register) ===&lt;br /&gt;
&lt;br /&gt;
Once the pen has been selected its colour can then be changed. Bits 4 to 0 specify the hardware colour number from the hardware colour palette. &lt;br /&gt;
&lt;br /&gt;
Even though there is provision for 32 colours, only 27 are possible. The remaining colours are duplicates of those already in the colour palette. &lt;br /&gt;
&lt;br /&gt;
==== Summary  ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Bit&lt;br /&gt;
!Value&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 0 || rowspan=&amp;quot;2&amp;quot; | Gate Array INKR register&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 5 || - || not used&lt;br /&gt;
|-&lt;br /&gt;
| 4 || x || rowspan=&amp;quot;5&amp;quot; | Colour number x&lt;br /&gt;
|-&lt;br /&gt;
| 3 || x &lt;br /&gt;
|-&lt;br /&gt;
| 2 || x &lt;br /&gt;
|-&lt;br /&gt;
| 1 || x&lt;br /&gt;
|-&lt;br /&gt;
| 0 || x&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Register RMR (Control Interrupt counter, ROM mapping and Graphics mode) ===&lt;br /&gt;
&lt;br /&gt;
This is a general purpose register responsible for the [[Video modes|graphics mode]] and the ROM configuration. &lt;br /&gt;
&lt;br /&gt;
==== Graphics mode selection  ====&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Bit 1&lt;br /&gt;
!Bit 0&lt;br /&gt;
!Screen mode&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0 || Mode 0, 160x200 resolution, 16 colours&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1 || Mode 1, 320x200 resolution, 4 colours&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0 || Mode 2, 640x200 resolution, 2 colours&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1 || Mode 3, 160x200 resolution, 4 colours (undocumented)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* 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).&lt;br /&gt;
&lt;br /&gt;
Mode changing is synchronised with HSYNC. If the mode is changed, it will take effect from the next HSYNC.&lt;br /&gt;
&lt;br /&gt;
==== ROM configuration selection  ====&lt;br /&gt;
&lt;br /&gt;
Bit 2 is used to enable or disable the lower ROM area. The lower ROM area occupies memory addresses &amp;amp;amp;0000-&amp;amp;amp;3fff and is used to access the operating system ROM. When the lower ROM area is is enabled, reading from &amp;amp;amp;0000-&amp;amp;amp;3FFF will return data in the ROM. When a value is written to &amp;amp;amp;0000-&amp;amp;amp;3FFF, it will be written to the RAM underneath the ROM. When it is disabled, data read from &amp;amp;amp;0000-&amp;amp;amp;3FFF will return the data in the RAM. &lt;br /&gt;
&lt;br /&gt;
Similarly, bit 3 controls enabling or disabling of the upper ROM area. The upper ROM area occupies memory addressess &amp;amp;amp;C000-&amp;amp;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;amp;amp;c000-&amp;amp;amp;ffff, will return data in the ROM. When data is written to &amp;amp;amp;c000-&amp;amp;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;amp;amp;c000-&amp;amp;amp;ffff it will be the data in the RAM. &lt;br /&gt;
&lt;br /&gt;
Bit 4 controls the interrupt generation. It can be used to delay interrupts. See the document on interrupt generation for more information.&lt;br /&gt;
&lt;br /&gt;
==== Summary  ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Bit&lt;br /&gt;
!Value&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 1 || rowspan=&amp;quot;2&amp;quot; | Gate Array RMR register&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 0 &lt;br /&gt;
|-&lt;br /&gt;
| 5 || - || ''must be 0 on Plus machines with ASIC unlocked''&lt;br /&gt;
|-&lt;br /&gt;
| 4 || x || Interrupt generation control&lt;br /&gt;
|-&lt;br /&gt;
| 3 || x || 1=Upper ROM area disable, 0=Upper ROM area enable&lt;br /&gt;
|-&lt;br /&gt;
| 2 || x || 1=Lower ROM area disable, 0=Lower ROM area enable&lt;br /&gt;
|-&lt;br /&gt;
| 1 || x || rowspan=&amp;quot;2&amp;quot; | Graphics Mode selection&lt;br /&gt;
|-&lt;br /&gt;
| 0 || x&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Register RMR2 (ASIC &amp;amp; Advanced ROM mapping) ===&lt;br /&gt;
&lt;br /&gt;
This register exists only in Plus or GX4000, and is only accessible when the ASIC is unlocked.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Bit&lt;br /&gt;
!Value&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 1 || rowspan=&amp;quot;3&amp;quot; | Gate Array RMR2 register&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 0&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 4 || x || rowspan=&amp;quot;2&amp;quot; |RMR addressing mode&lt;br /&gt;
|-&lt;br /&gt;
| 3 || x&lt;br /&gt;
|-&lt;br /&gt;
| 2 || x || rowspan=&amp;quot;3&amp;quot; | Physical ROM number (0..7)&lt;br /&gt;
|-&lt;br /&gt;
| 1 || x&lt;br /&gt;
|-&lt;br /&gt;
| 0 || x&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ RMR addressing modes&lt;br /&gt;
!Bit 4&lt;br /&gt;
!Bit 3&lt;br /&gt;
!Lower ROM&lt;br /&gt;
![[ASIC|ASIC I/O page]]&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|&amp;amp;0000-&amp;amp;3FFF&lt;br /&gt;
|Disabled&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|1&lt;br /&gt;
|&amp;amp;4000-&amp;amp;7FFF&lt;br /&gt;
|Disabled&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|&amp;amp;8000-&amp;amp;BFFF&lt;br /&gt;
|Disabled&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|1&lt;br /&gt;
|&amp;amp;0000-&amp;amp;3FFF&lt;br /&gt;
|&amp;amp;4000-&amp;amp;7FFF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The physical ROMs are also accessible as upper ROMs by using the [[Upper ROM Bank Number]] port and the RMR register.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Register MMR (RAM memory mapping) ===&lt;br /&gt;
&lt;br /&gt;
This register exists only in CPCs with 128K RAM (like the CPC 6128), or CPCs equipped with [[Standard Memory Expansions]].&lt;br /&gt;
&lt;br /&gt;
Note: In the CPC 6128, the register is a separate [[PAL16L8|PAL chip]] that assists the Gate Array chip.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Bit&lt;br /&gt;
!Value&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 1 || rowspan=&amp;quot;2&amp;quot; | Gate Array MMR register&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 1 &lt;br /&gt;
|-&lt;br /&gt;
| 5 || x || rowspan=&amp;quot;3&amp;quot; |64K bank number (0..7); always 0 on an unexpanded CPC6128, 0-7 on [[Standard Memory Expansions]]&lt;br /&gt;
|-&lt;br /&gt;
| 4 || x&lt;br /&gt;
|-&lt;br /&gt;
| 3 || x&lt;br /&gt;
|-&lt;br /&gt;
| 2 || x || rowspan=&amp;quot;3&amp;quot; | RAM Config (0..7)&lt;br /&gt;
|-&lt;br /&gt;
| 1 || x&lt;br /&gt;
|-&lt;br /&gt;
| 0 || x&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The 3bit RAM Config value is 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:&lt;br /&gt;
&lt;br /&gt;
  -Address-     0      1      2      3      4      5      6      7&lt;br /&gt;
  0000-3FFF   RAM_0  RAM_0  '''RAM_4'''  RAM_0  RAM_0  RAM_0  RAM_0  RAM_0&lt;br /&gt;
  4000-7FFF   RAM_1  RAM_1  '''RAM_5'''  '''RAM_3'''  '''RAM_4'''  '''RAM_5'''  '''RAM_6'''  '''RAM_7'''&lt;br /&gt;
  8000-BFFF   RAM_2  RAM_2  '''RAM_6'''  RAM_2  RAM_2  RAM_2  RAM_2  RAM_2&lt;br /&gt;
  C000-FFFF   RAM_3  '''RAM_7'''  '''RAM_7'''  '''RAM_7'''  RAM_3  RAM_3  RAM_3  RAM_3&lt;br /&gt;
&lt;br /&gt;
The Video RAM is always located in the first 64K, VRAM is in no way affected by this register.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Programming the Gate Array - Examples  ==&lt;br /&gt;
&lt;br /&gt;
Defining the colours, &amp;lt;br&amp;gt;Setting pen 0 to Bright White. &lt;br /&gt;
&amp;lt;pre&amp;gt;LD BC,7F00&amp;amp;nbsp;;Gate Array port&lt;br /&gt;
LD A,%00000000+0&amp;amp;nbsp;;Pen number (and Gate Array function)&lt;br /&gt;
OUT (C),A&amp;amp;nbsp;;Send pen number&lt;br /&gt;
LD A,%01000000+11&amp;amp;nbsp;;Pen colour (and Gate Array function)&lt;br /&gt;
OUT (C),A&amp;amp;nbsp;;Send it&lt;br /&gt;
RET&lt;br /&gt;
&lt;br /&gt;
Setting the mode and ROM configuration, &lt;br /&gt;
Mode 2, upper and lower ROM disabled.&lt;br /&gt;
&lt;br /&gt;
LD BC,7F00&amp;amp;nbsp;;Gate array port&lt;br /&gt;
LD A,%10000000+%00001110&amp;amp;nbsp;;Mode and ROM selection (and Gate Array function)&lt;br /&gt;
OUT (C),A&amp;amp;nbsp;;Send it&lt;br /&gt;
RET&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Misc ===&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
=== Note ===&lt;br /&gt;
&lt;br /&gt;
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 its original colour. This is due to the firmware resetting the colour. When using the firmware, use its routines to select the colour, and the colour will remain.&lt;br /&gt;
&lt;br /&gt;
Example: [For whatever reason, this example does NOT refer to the above firmware stuff]&lt;br /&gt;
&amp;lt;pre&amp;gt;ld bc,7f00+1&amp;amp;nbsp;;Gate array function (set pen)&lt;br /&gt;
;and pen number&lt;br /&gt;
out (c),c&lt;br /&gt;
ld bc,7f00&amp;amp;nbsp;;41 &lt;br /&gt;
;Gate array function (set colour)&lt;br /&gt;
;and colour number&lt;br /&gt;
out (c),c&lt;br /&gt;
ret&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Video memory structure ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!rowspan=2|Graphics Mode&lt;br /&gt;
!colspan=8|VRAM byte&lt;br /&gt;
!colspan=8|Displayed Pixels&lt;br /&gt;
!rowspan=2|Definition&lt;br /&gt;
!rowspan=2|Pixel clock&lt;br /&gt;
!rowspan=2|Default resolution&lt;br /&gt;
|-&lt;br /&gt;
!7&lt;br /&gt;
!6&lt;br /&gt;
!5&lt;br /&gt;
!4&lt;br /&gt;
!3&lt;br /&gt;
!2&lt;br /&gt;
!1&lt;br /&gt;
!0&lt;br /&gt;
!1&lt;br /&gt;
!2&lt;br /&gt;
!3&lt;br /&gt;
!4&lt;br /&gt;
!5&lt;br /&gt;
!6&lt;br /&gt;
!7&lt;br /&gt;
!8&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|A0&lt;br /&gt;
|B0&lt;br /&gt;
|A2&lt;br /&gt;
|B2&lt;br /&gt;
|A1&lt;br /&gt;
|B1&lt;br /&gt;
|A3&lt;br /&gt;
|B3&lt;br /&gt;
|colspan=4 style=&amp;quot;text-align: center;&amp;quot;|A&lt;br /&gt;
|colspan=4 style=&amp;quot;text-align: center;&amp;quot;|B&lt;br /&gt;
|2 pixels in 16 colours&lt;br /&gt;
|4 MHz&lt;br /&gt;
|160x200, 20-column text&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|A0&lt;br /&gt;
|B0&lt;br /&gt;
|C0&lt;br /&gt;
|D0&lt;br /&gt;
|A1&lt;br /&gt;
|B1&lt;br /&gt;
|C1&lt;br /&gt;
|D1&lt;br /&gt;
|colspan=2 style=&amp;quot;text-align: center;&amp;quot;|A&lt;br /&gt;
|colspan=2 style=&amp;quot;text-align: center;&amp;quot;|B&lt;br /&gt;
|colspan=2 style=&amp;quot;text-align: center;&amp;quot;|C&lt;br /&gt;
|colspan=2 style=&amp;quot;text-align: center;&amp;quot;|D&lt;br /&gt;
|4 pixels in 4 colours&lt;br /&gt;
|8 MHz&lt;br /&gt;
|320x200, 40-column text&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|A0&lt;br /&gt;
|B0&lt;br /&gt;
|C0&lt;br /&gt;
|D0&lt;br /&gt;
|E0&lt;br /&gt;
|F0&lt;br /&gt;
|G0&lt;br /&gt;
|H0&lt;br /&gt;
|A&lt;br /&gt;
|B&lt;br /&gt;
|C&lt;br /&gt;
|D&lt;br /&gt;
|E&lt;br /&gt;
|F&lt;br /&gt;
|G&lt;br /&gt;
|H&lt;br /&gt;
|8 pixels in 2 colours&lt;br /&gt;
|16 MHz&lt;br /&gt;
|640x200, 80-column text&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|A0&lt;br /&gt;
|B0&lt;br /&gt;
|x&lt;br /&gt;
|x&lt;br /&gt;
|A1&lt;br /&gt;
|B1&lt;br /&gt;
|x&lt;br /&gt;
|x&lt;br /&gt;
|colspan=4 style=&amp;quot;text-align: center;&amp;quot;|A&lt;br /&gt;
|colspan=4 style=&amp;quot;text-align: center;&amp;quot;|B&lt;br /&gt;
|2 pixels in 4 colours&lt;br /&gt;
|4 MHz&lt;br /&gt;
|160x200, 20-column text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Split rasters ==&lt;br /&gt;
&lt;br /&gt;
On the CPC, split rasters occur halfway (after the 8th mode2 pixel) through the rendering of a CRTC character.&lt;br /&gt;
&lt;br /&gt;
On Amstrad Plus, split rasters occur quarter of the way (after the 4th mode2 pixel) through the rendering of a CRTC character.&lt;br /&gt;
&lt;br /&gt;
To easily make split rasters compatible with both the CPC and the Plus machines, one can use the ASIC soft-scroll control register (SSCR) to finely adjust the horizontal position of the graphics.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Palette R,G,B definitions ==&lt;br /&gt;
&lt;br /&gt;
There 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-colour, and on/full-colour. &lt;br /&gt;
&lt;br /&gt;
To display a CPC image you will need to use a analogue monitor with a composite sync.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Palette sorted by Firmware Colour Numbers ===&lt;br /&gt;
&lt;br /&gt;
The firmware colour palette is sorted by luminance value.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!Firmware Number&lt;br /&gt;
!Hardware Number&lt;br /&gt;
!Colour Name&lt;br /&gt;
!R %&lt;br /&gt;
!G %&lt;br /&gt;
!B %&lt;br /&gt;
!ASIC&lt;br /&gt;
!Colour&lt;br /&gt;
|-&lt;br /&gt;
| 0|| 54h          ||Black          ||  0||  0||  0|| #000||bgcolor=&amp;quot;#000000&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| 1|| 44h (or 50h) ||Blue           ||  0||  0|| 50|| #006||bgcolor=&amp;quot;#000080&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| 2|| 55h          ||Bright Blue    ||  0||  0||100|| #00F||bgcolor=&amp;quot;#0000ff&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| 3|| 5Ch          ||Red            || 50||  0||  0|| #600||bgcolor=&amp;quot;#800000&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| 4|| 58h          ||Magenta        || 50||  0|| 50|| #606||bgcolor=&amp;quot;#800080&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| 5|| 5Dh          ||Mauve          || 50||  0||100|| #60F||bgcolor=&amp;quot;#8000ff&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| 6|| 4Ch          ||Bright Red     ||100||  0||  0|| #F00||bgcolor=&amp;quot;#ff0000&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| 7|| 45h (or 48h) ||Purple         ||100||  0|| 50|| #F06||bgcolor=&amp;quot;#ff0080&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| 8|| 4Dh          ||Bright Magenta ||100||  0||100|| #F0F||bgcolor=&amp;quot;#ff00ff&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| 9|| 56h          ||Green          ||  0|| 50||  0|| #060||bgcolor=&amp;quot;#008000&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|10|| 46h          ||Cyan           ||  0|| 50|| 50|| #066||bgcolor=&amp;quot;#008080&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|11|| 57h          ||Sky Blue       ||  0|| 50||100|| #06F||bgcolor=&amp;quot;#0080ff&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|12|| 5Eh          ||Yellow         || 50|| 50||  0|| #660||bgcolor=&amp;quot;#808000&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|13|| 40h (or 41h) ||White          || 50|| 50|| 50||#666||bgcolor=&amp;quot;#808080&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|14|| 5Fh          ||Pastel Blue    || 50|| 50||100|| #66F||bgcolor=&amp;quot;#8080ff&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|15|| 4Eh          ||Orange         ||100|| 50||  0|| #F60|| bgcolor=&amp;quot;#ff8000&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|16|| 47h          ||Pink           ||100|| 50|| 50|| #F66||bgcolor=&amp;quot;#ff8080&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|17|| 4Fh          ||Pastel Magenta ||100|| 50||100|| #F6F||bgcolor=&amp;quot;#ff80ff&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|18|| 52h          ||Bright Green   ||  0||100||  0|| #0F0||bgcolor=&amp;quot;#00ff00&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|19|| 42h (or 51h) ||Sea Green      ||  0||100|| 50|| #0F6||bgcolor=&amp;quot;#00ff80&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|20|| 53h          ||Bright Cyan    ||  0||100||100|| #0FF||bgcolor=&amp;quot;#00ffff&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|21|| 5Ah          ||Lime           || 50||100||  0|| #6F0||bgcolor=&amp;quot;#80ff00&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|22|| 59h          ||Pastel Green   || 50||100|| 50|| #6F6||bgcolor=&amp;quot;#80ff80&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|23|| 5Bh          ||Pastel Cyan    || 50||100||100|| #6FF||bgcolor=&amp;quot;#80ffff&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|24|| 4Ah          ||Bright Yellow  ||100||100||  0|| #FF0||bgcolor=&amp;quot;#ffff00&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|25|| 43h (or 49h) ||Pastel Yellow  ||100||100|| 50||#FF6||bgcolor=&amp;quot;#ffff80&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|26|| 4Bh          ||Bright White   ||100||100||100|| #FFF||bgcolor=&amp;quot;#ffffff&amp;quot;|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note: We can observe that the official Amstrad names of some colours are a bit silly: &amp;quot;red&amp;quot; is in fact brown, &amp;quot;yellow&amp;quot; is in fact khaki and &amp;quot;white&amp;quot; is in fact grey.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Amstrad Colour Names ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Cpc 6128 master colour chat.jpg|Master colour chart&lt;br /&gt;
Cpc 6128 farbtabelle.jpg|Farbtabelle&lt;br /&gt;
Cpc 6128 palette des couleurs.jpg|Palette des couleurs&lt;br /&gt;
Cpc 6128 tabla de colores.jpg|Tabla de colores&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Palette sorted by Hardware Colour Numbers ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Hardware Number&lt;br /&gt;
!Firmware Number&lt;br /&gt;
!R %&lt;br /&gt;
!G %&lt;br /&gt;
!B %&lt;br /&gt;
!ASIC&lt;br /&gt;
!Colour&lt;br /&gt;
!Colour Name&lt;br /&gt;
!German Name&lt;br /&gt;
!French Name&lt;br /&gt;
!Spanish Name&lt;br /&gt;
|-&lt;br /&gt;
|  0 (40h) || 13   || 50|| 50|| 50|| #666|| bgcolor=&amp;quot;#808080&amp;quot; | || White         || Weiß            || Blanc           || Blanco&lt;br /&gt;
|-&lt;br /&gt;
|  1 (41h) || (13) || 50|| 50|| 50|| #666|| bgcolor=&amp;quot;#808080&amp;quot; | || White         || Weiß            || Blanc           || Blanco&lt;br /&gt;
|-&lt;br /&gt;
|  2 (42h) || 19   ||  0||100|| 50|| #0F6|| bgcolor=&amp;quot;#00ff80&amp;quot; | || Sea Green     || Seegrün         || Vert marin      || Verde marino&lt;br /&gt;
|-&lt;br /&gt;
|  3 (43h) || 25   ||100||100|| 50|| #FF6|| bgcolor=&amp;quot;#ffff80&amp;quot; | || Pastel Yellow || Pastellgelb     || Jaune pastel    || Amarillo pastel&lt;br /&gt;
|-&lt;br /&gt;
|  4 (44h) || 1    ||  0||  0|| 50|| #006|| bgcolor=&amp;quot;#000080&amp;quot; | || Blue          || Blau            || Bleu            || Azul&lt;br /&gt;
|-&lt;br /&gt;
|  5 (45h) || 7    ||100||  0|| 50|| #F06|| bgcolor=&amp;quot;#ff0080&amp;quot; | || Purple        || Purpur          || Pourpre         || Púrpura&lt;br /&gt;
|-&lt;br /&gt;
|  6 (46h) || 10   ||  0|| 50|| 50|| #066|| bgcolor=&amp;quot;#008080&amp;quot; | || Cyan          || Blaugrün        || Turquoise       || Ciano&lt;br /&gt;
|-&lt;br /&gt;
|  7 (47h) || 16   ||100|| 50|| 50|| #F66|| bgcolor=&amp;quot;#ff8080&amp;quot; | || Pink          || Rosa            || Rose            || Rosa&lt;br /&gt;
|-&lt;br /&gt;
|  8 (48h) || (7)  ||100||  0|| 50|| #F06|| bgcolor=&amp;quot;#ff0080&amp;quot; | || Purple        || Purpur          || Pourpre         || Púrpura&lt;br /&gt;
|-&lt;br /&gt;
|  9 (49h) || (25) ||100||100|| 50|| #FF6|| bgcolor=&amp;quot;#ffff80&amp;quot; | || Pastel Yellow || Pastellgelb     || Jaune pastel    || Amarillo pastel&lt;br /&gt;
|-&lt;br /&gt;
| 10 (4Ah) || 24   ||100||100||  0|| #FF0|| bgcolor=&amp;quot;#ffff00&amp;quot; | || Bright Yellow || Hellgelb        || Jaune vif       || Amarillo brillante&lt;br /&gt;
|-&lt;br /&gt;
| 11 (4Bh) || 26   ||100||100||100|| #FFF|| bgcolor=&amp;quot;#ffffff&amp;quot; | || Bright White  || Leuchtendweiß   || Blanc brillant  || Blanco brillante&lt;br /&gt;
|-&lt;br /&gt;
| 12 (4Ch) || 6    ||100||  0||  0|| #F00|| bgcolor=&amp;quot;#ff0000&amp;quot; | || Bright Red    || Hellrot         || Rouge vif       || Rojo brillante&lt;br /&gt;
|-&lt;br /&gt;
| 13 (4Dh) || 8    ||100||  0||100|| #F0F|| bgcolor=&amp;quot;#ff00ff&amp;quot; | || Bright Magenta|| helles Magenta  || Magenta vif     || Magenta brillante&lt;br /&gt;
|-&lt;br /&gt;
| 14 (4Eh) || 15   ||100|| 50||  0|| #F60|| bgcolor=&amp;quot;#ff8000&amp;quot; | || Orange        || Orange          || Orange          || Naranja&lt;br /&gt;
|-&lt;br /&gt;
| 15 (4Fh) || 17   ||100|| 50||100|| #F6F|| bgcolor=&amp;quot;#ff80ff&amp;quot; | || Pastel Magenta|| Pastell-magenta || Magenta pastel  || Magenta pastel&lt;br /&gt;
|-&lt;br /&gt;
| 16 (50h) || (1)  ||  0||  0|| 50|| #006|| bgcolor=&amp;quot;#000080&amp;quot; | || Blue          || Blau            || Bleu            || Azul&lt;br /&gt;
|-&lt;br /&gt;
| 17 (51h) || (19) ||  0||100|| 50|| #0F6|| bgcolor=&amp;quot;#00ff80&amp;quot; | || Sea Green     || Seegrün         || Vert marin      || Verde marino&lt;br /&gt;
|-&lt;br /&gt;
| 18 (52h) || 18   ||  0||100||  0|| #0F0|| bgcolor=&amp;quot;#00ff00&amp;quot; | || Bright Green  || Hellgrün        || Vert vif        || Verde brillante&lt;br /&gt;
|-&lt;br /&gt;
| 19 (53h) || 20   ||  0||100||100|| #0FF|| bgcolor=&amp;quot;#00ffff&amp;quot; | || Bright Cyan   || helles Blaugrün || Turquoise vif   || Ciano brillante&lt;br /&gt;
|-&lt;br /&gt;
| 20 (54h) || 0    ||  0||  0||  0|| #000|| bgcolor=&amp;quot;#000000&amp;quot; | || Black         || Schwarz         || Noir            || Negro&lt;br /&gt;
|-&lt;br /&gt;
| 21 (55h) || 2    ||  0||  0||100|| #00F|| bgcolor=&amp;quot;#0000ff&amp;quot; | || Bright Blue   || Hellblau        || Bleu vif        || Azul brillante&lt;br /&gt;
|-&lt;br /&gt;
| 22 (56h) || 9    ||  0|| 50||  0|| #060|| bgcolor=&amp;quot;#008000&amp;quot; | || Green         || Grün            || Vert            || Verde&lt;br /&gt;
|-&lt;br /&gt;
| 23 (57h) || 11   ||  0|| 50||100|| #06F|| bgcolor=&amp;quot;#0080ff&amp;quot; | || Sky Blue      || Himmelblau      || Bleu ciel       || Azul cielo&lt;br /&gt;
|-&lt;br /&gt;
| 24 (58h) || 4    || 50||  0|| 50|| #606|| bgcolor=&amp;quot;#800080&amp;quot; | || Magenta       || Magenta         || Magenta         || Magenta&lt;br /&gt;
|-&lt;br /&gt;
| 25 (59h) || 22   || 50||100|| 50|| #6F6|| bgcolor=&amp;quot;#80ff80&amp;quot; | || Pastel Green  || Pastellgrün     || Vert pastel     || Verde pastel&lt;br /&gt;
|-&lt;br /&gt;
| 26 (5Ah) || 21   || 50||100||  0|| #6F0|| bgcolor=&amp;quot;#80ff00&amp;quot; | || Lime          || Limonengrün     || Vert citron     || Verde lima&lt;br /&gt;
|-&lt;br /&gt;
| 27 (5Bh) || 23   || 50||100||100|| #6FF|| bgcolor=&amp;quot;#80ffff&amp;quot; | || Pastel Cyan   || Pastell-blaugrün|| Turquoise pastel|| Ciano pastel&lt;br /&gt;
|-&lt;br /&gt;
| 28 (5Ch) || 3    || 50||  0||  0|| #600|| bgcolor=&amp;quot;#800000&amp;quot; | || Red           || Rot             || Rouge           || Rojo&lt;br /&gt;
|-&lt;br /&gt;
| 29 (5Dh) || 5    || 50||  0||100|| #60F|| bgcolor=&amp;quot;#8000ff&amp;quot; | || Mauve         || Hellviolett     || Mauve           || Malva&lt;br /&gt;
|-&lt;br /&gt;
| 30 (5Eh) || 12   || 50|| 50||  0|| #660|| bgcolor=&amp;quot;#808000&amp;quot; | || Yellow        || Gelb            || Jaune           || Amarillo&lt;br /&gt;
|-&lt;br /&gt;
| 31 (5Fh) || 14   || 50|| 50||100|| #66F|| bgcolor=&amp;quot;#8080ff&amp;quot; | || Pastel Blue   || Pastellblau     || Bleu pastel     || Azul pastel&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Intensities ===&lt;br /&gt;
&lt;br /&gt;
The 0%, 50%, and 100% values in the above tables are &amp;quot;should-be&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
On an actual Amstrad CPC, the half-intensity colour signal is measured to be closer to 40% rather than the expected 50%. This was verified by [[Grim]] and independently confirmed by [[Nocash]]. [https://www.grimware.org/doku.php/documentations/devices/gatearray#inkr Source]&lt;br /&gt;
* [[CPC Palette]] - some more details&lt;br /&gt;
&lt;br /&gt;
This explains why the Amstrad engineers used the following values to adapt the old colour palette to the new 12-bit palette on the Amstrad Plus:&lt;br /&gt;
* 0% became #0&lt;br /&gt;
* 50% became #6. They specifically chose #6 for the 50% value instead of the expected #7 or #8, to better match the real Amstrad CPC palette.&lt;br /&gt;
* 100% became #F&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Green Screen Colours ===&lt;br /&gt;
&lt;br /&gt;
On a green screen, where all colours are shades of unsaturated green, the firmware colours are in order of increasing intensity. Black is darkest green, bright white is brightest green, and firmware colour 13 is a medium green.&lt;br /&gt;
&lt;br /&gt;
The luminance (Y) is not exactly correlated to the actual luminance of colour images broadcast in RGB. Amstrad preferred to propose a completely different image system, not comparable to a conversion to monochrome, which would have limited the number of brightness levels to 21 (for example, colours 9 and 6 would have had the same luminance).&lt;br /&gt;
&lt;br /&gt;
They opted for a table of 27 linear brightness steps. They assigned values of 1 (1kΩ) for blue, 3 (3.3kΩ) for red, and 9 (10kΩ) for green.&lt;br /&gt;
&lt;br /&gt;
==== To calculate the luminance value ====&lt;br /&gt;
&lt;br /&gt;
'''Red''' &lt;br /&gt;
&lt;br /&gt;
*0% =&amp;amp;gt; do not add anything &lt;br /&gt;
*50% =&amp;amp;gt; add 3 &lt;br /&gt;
*100% =&amp;amp;gt; add 6 &lt;br /&gt;
&lt;br /&gt;
'''Green''' &lt;br /&gt;
&lt;br /&gt;
*0% =&amp;amp;gt; do not add anything &lt;br /&gt;
*50% =&amp;amp;gt; add 9 &lt;br /&gt;
*100% =&amp;amp;gt; add 18 &lt;br /&gt;
&lt;br /&gt;
'''Blue''' &lt;br /&gt;
&lt;br /&gt;
*0% =&amp;amp;gt; do not add anything &lt;br /&gt;
*50% =&amp;amp;gt; add 1 &lt;br /&gt;
*100% =&amp;amp;gt; add 2 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pictures ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:40010_am2_metal.jpg|40010 GA Metal Layer&lt;br /&gt;
Image:40010_am2_acid.jpg|40010 GA with Metal Layer removed&lt;br /&gt;
Image:40226_am4_metal.jpg|40226 PreASIC Metal Layer&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Ga.pinout.40007.png]] [[File:Ga.pinout.40008.40010.png]]&lt;br /&gt;
&lt;br /&gt;
Note: Some CPC motherboards can accommodate both types of Gate Array pinouts. [https://thecheshirec.at/2024/10/06/il-existe-une-carte-multi-gate-array-et-cest-amstrad-qui-la-faite/ Source]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
*[https://bread80.com/2021/06/03/understanding-the-amstrad-cpc-video-ram-and-gate-array-subsystem/ Electronic signals analysis of the Gate Array by Bread80]&lt;br /&gt;
* [https://www.grimware.org/doku.php/documentations/devices/gatearray Gate Array documentation from Grimware]&lt;br /&gt;
* [http://quasar.cpcscene.net/doku.php?id=assem:gate_array Quasar Gate Array documentation (in french)]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*[[Gate Array and ASIC Pin-Outs]]&lt;br /&gt;
*[[PAL16L8]] : for RAM arrangement&lt;br /&gt;
*[[ASIC]] : for Plus users&lt;br /&gt;
&lt;br /&gt;
*[[CRTC]] : the other video stuff&lt;br /&gt;
*[[Synchronising with the CRTC and display]] : technical details on the relationship between Gate Array and CRTC.&lt;br /&gt;
&lt;br /&gt;
*[[Video modes]] : for other informations on colours and pixels.&lt;br /&gt;
&lt;br /&gt;
*[[Media:40010-simplified V03.pdf]] [https://www.cpcwiki.eu/forum/amstrad-cpc-hardware/gate-array-decapped!/msg170713/#msg170713 Forum thread] Gate Array schematics - reverse engineered by Gerald&lt;br /&gt;
&lt;br /&gt;
[[Category:Hardware]][[Category:Programming]][[Category:Datasheet]][[Category:Graphic]][[Category:CPC Internal Components]][[Category:Electronic Component]]&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=File:Amstrad_40007_Gate_Array.png&amp;diff=126054</id>
		<title>File:Amstrad 40007 Gate Array.png</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=File:Amstrad_40007_Gate_Array.png&amp;diff=126054"/>
				<updated>2025-05-18T21:33:36Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=File:CRTC_Type_1.png&amp;diff=126053</id>
		<title>File:CRTC Type 1.png</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=File:CRTC_Type_1.png&amp;diff=126053"/>
				<updated>2025-05-18T21:24:48Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: Phi2x uploaded a new version of File:CRTC Type 1.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=CRTC&amp;diff=126052</id>
		<title>CRTC</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=CRTC&amp;diff=126052"/>
				<updated>2025-05-18T21:21:27Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:CRTC Type 0.jpg|thumb|right|CRTC Type 0 (Hitachi)]]&lt;br /&gt;
[[File:CRTC UMC Type 0.png|thumb|right|CRTC Type 0 (UMC)]]&lt;br /&gt;
[[File:CRTC Type 1.png|thumb|right|CRTC Type 1]]&lt;br /&gt;
[[File:CRTC6845-Type2.jpg|thumb|right|CRTC Type 2]]&lt;br /&gt;
&lt;br /&gt;
The 6845 '''CRTC''' (Cathode Ray Tube Controller) chip was created by Motorola in 1977. It works with the [[Gate Array]] to generate the video signal on the Amstrad CPC.&lt;br /&gt;
&lt;br /&gt;
This chip is also used in the [[BBC Micro]], [[Lynx|Camputers Lynx]], [[EG2000 Colour Genie]], [[Sharp X1]], [[MicroBee]], [[Commodore PET]] and the early graphics cards (MDA, Hercules, CGA, Plantronics Colorplus) for [[IBM PC]]. And it is found in some [https://www.msx.org/wiki/Hitachi_HD6845 MSX1 expansions], providing an 80-column text mode.&lt;br /&gt;
&lt;br /&gt;
It's important to note that the CRTC chip is primarily designed for character-based displays. It explains why, on the Amstrad CPC, the video memory is organized into a grid of characters rather than a purely linear bitmap.&lt;br /&gt;
&lt;br /&gt;
NOTES: &lt;br /&gt;
* This document describes the functionality in terms of the CPC with its separate CRTC and Gate-Array. The Plus has both integrated into the same IC, but could be considered to have two functional blocks, one for CRTC and one for Gate-Array. In this document the term 'Gate-Array' is used, but this also applies to the ASIC.&lt;br /&gt;
* Much information has been drawn from the [https://shaker.logonsystem.eu/ CRTC Compendium] documentation. For more details, timing diagrams, code examples, coding tips, and more, refer to that documentation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The 6845 Cathode Ray Tube Controller (CRTC) is a programmable IC used to generate video displays. This IC is used in a variety of computers including the Amstrad CPC, Amstrad Plus and KC Compact. &lt;br /&gt;
&lt;br /&gt;
The CRTC is a simple chip. It is made up of counters and equality operators, tied by simple logic. All the complexity stems from its multiple independent implementations with their subtle differences.&lt;br /&gt;
&lt;br /&gt;
The CRTC was a common part available from many different manufacturers. During the life of the CPC, Amstrad sourced the CRTC from various manufacturers. &lt;br /&gt;
&lt;br /&gt;
All ICs used were based on the same design but have a different implementation. As a result they do not operate identically in all situations. This document highlights these differences. &lt;br /&gt;
&lt;br /&gt;
This table lists the known ICs used, with their part number, manufacturer and type number. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Part number&lt;br /&gt;
!Manufacturer&lt;br /&gt;
!Type number (note 3)&lt;br /&gt;
|-&lt;br /&gt;
|HD6845S||Hitachi||0&lt;br /&gt;
|-&lt;br /&gt;
|UM6845||UMC||0&lt;br /&gt;
|-&lt;br /&gt;
|UM6845R||UMC||1&lt;br /&gt;
|-&lt;br /&gt;
|MC6845||Motorola||2&lt;br /&gt;
|-&lt;br /&gt;
|AMS40489||Amstrad||3 (note 1)&lt;br /&gt;
|-&lt;br /&gt;
|AMS40226||Amstrad||4 (note 2)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''NOTES''' &lt;br /&gt;
&lt;br /&gt;
1. The CRTC functionality is integrated into the CPC+ ASIC. This type exists only in the 464 Plus, 6128 Plus and GX4000. &lt;br /&gt;
&lt;br /&gt;
2. This type exists in &amp;quot;cost-down&amp;quot; CPC464 and CPC6128 systems. In the &amp;quot;cost-down&amp;quot; the CRTC functionality is integrated into a single ASIC IC. This ASIC is often refered to as the &amp;quot;Pre-ASIC&amp;quot; because it preceeded the CPC+ ASIC. The CRTC functionality of the Pre-ASIC is almost identical to the CRTC within the ASIC.&lt;br /&gt;
 &lt;br /&gt;
3. In the Amstrad community each 6845 implementation has been assigned a type number. This type identifies a group of implementations which operate in exactly the same way. The type number system was originally used by demo programmers. &lt;br /&gt;
&lt;br /&gt;
It is possible to detect the 6845 present using software methods, and this is done to: &lt;br /&gt;
&lt;br /&gt;
* warn that the software was not designed for the detected 6845 and may function incorrectly&lt;br /&gt;
* to adapt the software so that it will run with the detected 6845 &lt;br /&gt;
* In most cases, the type of the detected 6845 is reported&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Programming==&lt;br /&gt;
&lt;br /&gt;
The 6845 is selected when bit 14 of the I/O port address is set to &amp;quot;0&amp;quot;. Bit 9 and 8 of the I/O port address define the function to access. The remaining bits can be any value, but it is adviseable to set these to &amp;quot;1&amp;quot; to avoid conflict with other devices in the system.&lt;br /&gt;
&lt;br /&gt;
The recommended I/O port addresses are:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!I/O port address&lt;br /&gt;
!/CS (A14)&lt;br /&gt;
!R/W (A9)&lt;br /&gt;
!RS (A8)&lt;br /&gt;
!Function&lt;br /&gt;
!Read/Write&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;BCxx||0||0||0||Select 6845 register||Write only&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;BDxx||0||0||1||Write to selected internal 6845 register||Write only&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;BExx||0||1||0||&lt;br /&gt;
* CRTCs 0/2: —&lt;br /&gt;
* CRTC 1: Read Status Register&lt;br /&gt;
* CRTCs 3/4: Read from selected internal 6845 register&lt;br /&gt;
||Read only&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;BFxx||0||1||1||Read from selected internal 6845 register||Read only&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The CRTC is not connected to the CPU's RD and WR pins, so it cannot detect the bus's I/O direction. Therefore, executing an IN instruction to the select or write functions causes the CRTC to write the unpredictable data provided by the high-impedance bus to its registers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Z80 I/O access timings ===&lt;br /&gt;
&lt;br /&gt;
The clock provided to the CRTC by the ASIC/Pre-ASIC is phase-shifted compared to the one provided by the Gate Array.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! Instructions !! Duration !! I/O CRTCs 0/1/2 !! I/O CRTCs 3/4&lt;br /&gt;
|-&lt;br /&gt;
| OUT (C),r8 || 4 µsec || '''3rd µsec''' || 4th µsec&lt;br /&gt;
|-&lt;br /&gt;
| OUT (C),0 || 4 µsec || '''3rd µsec''' || 4th µsec&lt;br /&gt;
|-&lt;br /&gt;
| OUT (n),A || 3 µsec || 3rd µsec || 3rd µsec&lt;br /&gt;
|-&lt;br /&gt;
| OUTI || 5 µsec || 5th µsec || 5th µsec&lt;br /&gt;
|-&lt;br /&gt;
| OUTD || 5 µsec || 5th µsec || 5th µsec&lt;br /&gt;
|-&lt;br /&gt;
| IN r8,(C) || 4 µsec || 4th µsec || 4th µsec&lt;br /&gt;
|-&lt;br /&gt;
| INI || 5 µsec || '''4th µsec''' || '''4th µsec'''&lt;br /&gt;
|-&lt;br /&gt;
| IND || 5 µsec || '''4th µsec''' || '''4th µsec'''&lt;br /&gt;
|-&lt;br /&gt;
| IN A,(n) || 3 µsec || 3rd µsec || 3rd µsec&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Video Memory Address (VMA)==&lt;br /&gt;
&lt;br /&gt;
The VMA of the [[Gate Array]] is constructed from the CRTC MA and RA signals:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Video Memory Address&lt;br /&gt;
!Signal source&lt;br /&gt;
!Signal name&lt;br /&gt;
|-&lt;br /&gt;
|A15||6845||MA13 &lt;br /&gt;
|-&lt;br /&gt;
|A14||6845||MA12&lt;br /&gt;
|-&lt;br /&gt;
|A13||6845||'''RA2'''&lt;br /&gt;
|-&lt;br /&gt;
|A12||6845||'''RA1'''&lt;br /&gt;
|-&lt;br /&gt;
|A11||6845||'''RA0'''&lt;br /&gt;
|-&lt;br /&gt;
|A10||6845||MA9 &lt;br /&gt;
|-&lt;br /&gt;
|A9||6845||MA8 &lt;br /&gt;
|-&lt;br /&gt;
|A8||6845||MA7 &lt;br /&gt;
|-&lt;br /&gt;
|A7||6845||MA6 &lt;br /&gt;
|-&lt;br /&gt;
|A6||6845||MA5 &lt;br /&gt;
|-&lt;br /&gt;
|A5||6845||MA4 &lt;br /&gt;
|-&lt;br /&gt;
|A4||6845||MA3 &lt;br /&gt;
|-&lt;br /&gt;
|A3||6845||MA2 &lt;br /&gt;
|-&lt;br /&gt;
|A2||6845||MA1 &lt;br /&gt;
|-&lt;br /&gt;
|A1||6845||MA0&lt;br /&gt;
|-&lt;br /&gt;
|A0||Gate-Array||CCLK&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
CRTC generates the address, Gate Array reads the data and converts it to pixels based on its current graphics mode and palette.&lt;br /&gt;
&lt;br /&gt;
CRTC pins RA3, RA4, MA10, MA11 are not connected on CPC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Overscan bits ===&lt;br /&gt;
&lt;br /&gt;
It is possible to use 32KB screen size (used for [[Programming:Overscan|overscan]]) by setting bits 11 and 10 of Register 12 both to 1. Bits MA11 and MA10 of the address generated by the CRTC are not written on the address bus to access video memory; settings both bits to 1 is the only way to cause a carry to bit MA12 when address pass over the end of current video page to change the memory address to the next video page.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ CRTC Display Start Address&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;8&amp;quot; | Register 12&lt;br /&gt;
! colspan=&amp;quot;8&amp;quot; | Register 13&lt;br /&gt;
|-&lt;br /&gt;
! 15 !! 14 !! 13 !! 12 !! 11 !! 10 !! 9 !! 8&lt;br /&gt;
! 7 !! 6 !! 5 !! 4 !! 3 !! 2 !! 1 !! 0&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Unused&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Video Page&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Page Size&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot; | Start Address (1024 positions)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;white-space: nowrap;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-right: 32px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bit 13 !! Bit 12 !! Video Page&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0 || 0000 - 3FFF&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1 || 4000 - 7FFF&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0 || 8000 - BFFF&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1 || C000 - FFFF&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bit 11 !! Bit 10 !! Page Size&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0 || 16KB&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1 || 16KB&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0 || 16KB&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1 || '''32KB'''&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Coarse hardware scrolling ===&lt;br /&gt;
&lt;br /&gt;
The start address can be manipulated to achieve horizontal and/or vertical hardware scrolling:&lt;br /&gt;
&lt;br /&gt;
*To move right: &amp;lt;code&amp;gt;start_address := start_address + 1&amp;lt;/code&amp;gt;&lt;br /&gt;
*To move left: &amp;lt;code&amp;gt;start_address := start_address - 1&amp;lt;/code&amp;gt;&lt;br /&gt;
*To move down: &amp;lt;code&amp;gt;start_address := start_address + R1&amp;lt;/code&amp;gt;&lt;br /&gt;
*To move up: &amp;lt;code&amp;gt;start_address := start_address - R1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
However, it is a position in word (16 bits), not in byte. So, the screen will move two bytes at a time horizontally. Also, the precision will be one CRTC character vertically.&lt;br /&gt;
&lt;br /&gt;
The first game that used R12/R13 for both horizontal and vertical hardware scrolling is [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1839 Roland on the Ropes], released in 1984.&lt;br /&gt;
&lt;br /&gt;
The following BASIC program demonstrates the coarse scrolling by setting the R12 and R13 registers based on keyboard input:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10 ma%=0&lt;br /&gt;
20 IF INKEY(1)=0 THEN GOSUB 100&lt;br /&gt;
30 IF INKEY(2)=0 THEN GOSUB 300&lt;br /&gt;
40 IF INKEY(8)=0 THEN GOSUB 500&lt;br /&gt;
50 IF INKEY(0)=0 THEN GOSUB 700&lt;br /&gt;
60 GOTO 20&lt;br /&gt;
100 ' right&lt;br /&gt;
110 ma%=ma%+1: GOSUB 900: RETURN&lt;br /&gt;
300 ' down&lt;br /&gt;
310 ma%=ma%+40: GOSUB 900: RETURN&lt;br /&gt;
500 ' left&lt;br /&gt;
510 ma%=ABS(ma%-1): GOSUB 900: RETURN&lt;br /&gt;
700 ' up&lt;br /&gt;
710 ma%=ABS(ma%-40): GOSUB 900: RETURN&lt;br /&gt;
900 ' set R12 and R13&lt;br /&gt;
910 l%=ma% AND 255: h%=&amp;amp;30 OR ((ma%\256) AND 3) :OUT &amp;amp;BC00,13:OUT &amp;amp;BD00,l%: OUT &amp;amp;BC00,12:OUT &amp;amp;BD00,h%&lt;br /&gt;
930 RETURN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Which looks like the following:&lt;br /&gt;
&lt;br /&gt;
[[File:CRTC-Coarse-scroll.gif]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Advanced hardware scrolling ===&lt;br /&gt;
&lt;br /&gt;
To achieve smoother hardware scrolling, other tricks are required in complement to R12/R13. Usually, R3 is used for smooth horizontal scroll and R5 for smooth vertical scroll.&lt;br /&gt;
&lt;br /&gt;
A good example of smooth hardware multidirectional scrolling game on CPC is [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=2119 Super Cauldron], released in 1993.&lt;br /&gt;
&lt;br /&gt;
Everything you need to know about hardware scrolling on CPC can be found [https://www.cpcwiki.eu/forum/programming/hardware-scrolling-21687/ there].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Split screen (aka Rupture) ==&lt;br /&gt;
&lt;br /&gt;
While there is usually 1 CRTC frame per screen frame, the screen frame can be divided into multiple CRTC frames of varying proportions.&lt;br /&gt;
&lt;br /&gt;
This is useful for defining different scrolling zones in your screen frame. For example, it was used for hardware parallax scrolling in the game [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1307 The Living Daylights], released in 1987. [https://www.cpcwiki.eu/forum/programming/the-living-daylights-extra-colours-in-mode-1-rasters-screen-splits/ Source]&lt;br /&gt;
&lt;br /&gt;
And this is basically the bread and butter of innumerable CPC demos.&lt;br /&gt;
&lt;br /&gt;
Some rules of thumb [https://www.cpcwiki.eu/forum/programming/advice-on-split-screen-code/msg242186/ Source]:&lt;br /&gt;
* changes to the screen address have to be done anywhere in the previous split&lt;br /&gt;
* changes to the height of the split have to be done inside the current split (after it has started, in the area of the size of the previous split)&lt;br /&gt;
* changes to screen mode and colours are happening immediately&lt;br /&gt;
&lt;br /&gt;
CRTC registers and screen splitting:&lt;br /&gt;
*reg 0 (63) = x-screenwidth (usually always 63)&lt;br /&gt;
*reg 1 (50) = x-splitwidth (e.g.50)&lt;br /&gt;
*reg 2 (51) = x-splitstart (e.g. 51)&lt;br /&gt;
*reg 3 (08) = x-finestart (maybe use this for half-char scrolling)&lt;br /&gt;
*reg 4 (##) = y-splitheight-1 (set this inside the current split)&lt;br /&gt;
*reg 5 (00) = y-finestart&lt;br /&gt;
*reg 6 (25) = y-max visible splitpart (same like 4)&lt;br /&gt;
*reg 7 (##) = inside last split -&amp;gt; set to 0; inside first split, but after vblank -&amp;gt; set to 255&lt;br /&gt;
*reg 9 (07) = y-lines/char-1&lt;br /&gt;
&lt;br /&gt;
Set this inside the previous split:&lt;br /&gt;
*reg12 (##) = address high (char / 256 + block * 16)&lt;br /&gt;
*reg13 (##) = address low  (char mod 256)&lt;br /&gt;
&lt;br /&gt;
Total height of all splits must be 39.&lt;br /&gt;
&lt;br /&gt;
The [https://www.cpcwiki.eu/forum/programming/interrupt-positions-with-various-sized-screens/ IntPos tool] by Kevin Thacker can help visualize the potential split screen areas.&lt;br /&gt;
&lt;br /&gt;
Note: If all you want is multiple graphics modes in the same frame, you don't need to touch the CRTC at all. More information here: [https://www.cpc-power.com/cpcarchives/index.php?page=articles&amp;amp;num=184 Multi-Mode Graphique (FR)]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CUDISP (aka CURSOR) ==&lt;br /&gt;
&lt;br /&gt;
CUDISP (Cursor Display) signal defines the hardware cursor.&lt;br /&gt;
&lt;br /&gt;
CRTC pin CUDISP is not connected to the Gate Array, so it has no effect on a barebone CPC or Plus machine.&lt;br /&gt;
&lt;br /&gt;
However, this signal is provided to the [[Connector:Expansion port]]. And it is used by the [[PlayCity]] and [[Play2CPC]] expansions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DISPTMG (aka Display Enable) ==&lt;br /&gt;
&lt;br /&gt;
DISPTMG (Display Timing) signal defines the border. When DISPTMG is &amp;quot;0&amp;quot; the border colour is output by the Gate Array to the display.&lt;br /&gt;
&lt;br /&gt;
The border has higher priority than pixels but lower priority than the black colour output when HSYNC/VSYNC are active.&lt;br /&gt;
&lt;br /&gt;
While border is active, all the CRTC counters continue to increment normally and addresses continue to be generated.&lt;br /&gt;
&lt;br /&gt;
The DISPTMG signal is composited from its 3 internal subcomponents: HBORDER (Horizontal), VBORDER (Vertical), SBORDER (Split) by using the NOR function. DISPTMG is &amp;quot;0&amp;quot; if at least one of its subcomponents is &amp;quot;1&amp;quot;. These 3 subcomponents are all independent of each other.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HBORDER ===&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, HBORDER is disabled when HCC=0 and enabled when HCC=R1.&lt;br /&gt;
&lt;br /&gt;
The exception is for CRTC2 during an HSYNC: the HCC=0 check is skipped, so HBORDER stays on.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== VBORDER ===&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, VBORDER is disabled when VCC=0 and enabled when VCC=R6.&lt;br /&gt;
&lt;br /&gt;
On CRTCs 0/1/2, the condition VCC=R6 is tested on every cycle.&lt;br /&gt;
&lt;br /&gt;
On CRTCs 3/4, the condition VCC=R6 is tested only at each new character line start (when VLC=0 and HCC=0).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SBORDER ===&lt;br /&gt;
&lt;br /&gt;
Split border is a technique similar to split rasters, except that it is handled by the CRTC instead of the [[Gate Array]].&lt;br /&gt;
&lt;br /&gt;
DISPTMG can be temporarily forced to 0 by using R8 (DISPTMG Skew) on CRTCs 0/3/4, or by setting R6=0 on CRTC 1.&lt;br /&gt;
&lt;br /&gt;
It is not possible to force DISPTMG on CRTC 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Border bytes ===&lt;br /&gt;
&lt;br /&gt;
Despite their 1MHz clock speed, CRTCs 0/2 have been observed to change state at a rate equivalent to 2MHz chips by responding to both the rising and falling edges of each clock cycle.&lt;br /&gt;
&lt;br /&gt;
==== Interline border ====&lt;br /&gt;
On CRTCs 0/2, R1&amp;gt;R0 generates one byte (0.5µs) of border at the end of the raster line. On CRTCs 1/3/4, it does not.&lt;br /&gt;
&lt;br /&gt;
If border skew is used, the border byte will skew and change into a full character-width border instead.&lt;br /&gt;
&lt;br /&gt;
==== Border conflict ====&lt;br /&gt;
If R1=0 and HCC=0, we expect HBORDER to activate as HCC=R1 and we also expect HBORDER to deactivate as HCC=0. In this situation, all CRTCs activate HBORDER.&lt;br /&gt;
&lt;br /&gt;
If R6=0 and VCC=0, we expect VBORDER to activate as VCC=R6 and we also expect VBORDER to deactivate as VCC=0. In this situation, all CRTCs activate VBORDER. On CRTC 1, even SBORDER is activated. But on CRTCs 0/2, the first raster line shows an alternation of bytes of VBORDER and displayable characters.&lt;br /&gt;
&lt;br /&gt;
To see the border bytes with your own eyes, type this BASIC line after reset:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BORDER 6:OUT &amp;amp;BC00,6:OUT &amp;amp;BD00,0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== HSYNC ==&lt;br /&gt;
&lt;br /&gt;
The HSYNC signal from the CRTC is not directly connected to the display. It is passed to the [[Gate Array]] for further modification. See its wiki page.&lt;br /&gt;
&lt;br /&gt;
While HSYNC is active, all the CRTC counters continue to increment normally and addresses continue to be generated.&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, while an HSYNC is ongoing, the condition HCC=R2 is ignored. So we cannot trigger a new HSYNC during an HSYNC.&lt;br /&gt;
&lt;br /&gt;
=== Contiguous HSYNCs ===&lt;br /&gt;
&lt;br /&gt;
On CRTC 0, two HSYNCs cannot be contiguous. They are always separated by at least 1 CRTC character. What happens is that when HSC=R3 and HCC=R2, the condition HSC=R3 takes precedence over the condition HCC=R2 and HSYNC is stopped.&lt;br /&gt;
&lt;br /&gt;
On CRTCs 1/2/3/4, HSYNCs can be contiguous.&lt;br /&gt;
&lt;br /&gt;
=== Signal delay ===&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, there is a 1µs delay in display between when the CRTC provides a video pointer, and when the Gate Array displays the corresponding 16-bit character.&lt;br /&gt;
&lt;br /&gt;
But on CRTCs 0/1/2, there is no delay for HSYNC. On CRTCs 3/4, the Amstrad engineers fixed the issue by adding a 1µs delay for the HSYNC signal to match the display signal. &lt;br /&gt;
&lt;br /&gt;
So now we have a bigger issue: on CRTCs 3/4, HSYNC occurs 1µs later than on CRTCs 0/1/2. Interrupts being dependent on HSYNC, this is a serious compatibility issue for time-sensitive code. It also explains why the CTM monitor has to be calibrated differently on CRTCs 3/4. Fortunately, the issue is easy to fix, by adjusting the HSYNC width with CRTC register 3.&lt;br /&gt;
&lt;br /&gt;
=== Discolouration effect ===&lt;br /&gt;
&lt;br /&gt;
On CRT monitors from other brands, a colour calibration can happen just after the C-HSYNC pulse.&lt;br /&gt;
&lt;br /&gt;
So even when a fully valid C-HSYNC pulse of 4µs is emitted, an HSYNC shorter than usual combined with a coloured border can induce a discolouration effect on those monitors.&lt;br /&gt;
&lt;br /&gt;
=== Screen wobbling and Fine horizontal hardware scroll ===&lt;br /&gt;
&lt;br /&gt;
These effects use invalid HSYNC signals, which are poorly supported by modern displays. However, these effects were used in commercial-era CPC games, so it's fine if you choose to use them.&lt;br /&gt;
&lt;br /&gt;
When R2 increases by 1, the screen is shifted to the left by 16 mode2 pixels.&lt;br /&gt;
&lt;br /&gt;
When R2 decreases by 1, the screen is shifted to the right by 16 mode2 pixels.&lt;br /&gt;
&lt;br /&gt;
When R3l increases by 1 (and if &amp;lt;6), the screen is shifted to the left by 8 mode2 pixels.&lt;br /&gt;
&lt;br /&gt;
When R3l decreases by 1 (and if &amp;gt;2), the screen is shifted to the right by 8 mode2 pixels.&lt;br /&gt;
&lt;br /&gt;
The shift is not instantaneous but follows a logarithmic attenuation across several raster lines. This property can be used to get even finer horizontal control by modifying R2/R3 on each raster line.&lt;br /&gt;
&lt;br /&gt;
[[Longshot]] has demonstrated [https://youtu.be/1q7RQykZoKY horizontal hardware scroll] with one-pixel precision in mode1 on all CRTCs. However, because you have to synchronize with each line, it takes a lot of CPU time if it's done in fullscreen (272 lines).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VSYNC ==&lt;br /&gt;
&lt;br /&gt;
The VSYNC signal from the CRTC is not directly connected to the display. It is passed to the [[Gate Array]] for further modification. See its wiki page.&lt;br /&gt;
&lt;br /&gt;
While VSYNC is active, all the CRTC counters continue to increment normally and addresses continue to be generated.&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, while a VSYNC is ongoing, the condition VCC=R7 is ignored. So we cannot trigger a new VSYNC during a VSYNC. &lt;br /&gt;
&lt;br /&gt;
On CRTCs 0/1/2, the sole condition to trigger a VSYNC is that VCC=R7. While on CRTCs 3/4, it is necessary to have VCC=R7 and HCC=0 and VLC=0 to trigger a VSYNC.&lt;br /&gt;
&lt;br /&gt;
=== Blocked VSYNC ===&lt;br /&gt;
&lt;br /&gt;
On CRTC 0, if R7 is modified with the value of VCC when HCC&amp;lt;2, we are in blocked VSYNC. Then, the VSYNC can no longer occur on VCC=R7 until an unblocking condition is produced (VCC or R7 update). Source: §16.4 &amp;quot;Conditions to consider&amp;quot; of the CRTC Compendium&lt;br /&gt;
&lt;br /&gt;
=== Ghost VSYNC ===&lt;br /&gt;
&lt;br /&gt;
On CRTC 2, if a VSYNC is triggered during an HSYNC, the CRTC produces a ghost VSYNC. The CRTC then counts the lines as if a VSYNC were taking place by preventing a new VSYNC from occurring, but without the VSYNC pin being enabled.&lt;br /&gt;
&lt;br /&gt;
=== PPI VSYNC ===&lt;br /&gt;
&lt;br /&gt;
The VSYNC pin of the CRTC is directly connected to bit0 of port B of the PPI. There is no delay involved.&lt;br /&gt;
&lt;br /&gt;
On Amstrad CPC (not Plus!), it is also possible to reverse the direction of PPI port B to output a &amp;quot;fake&amp;quot; VSYNC signal directly from the PPI to the Gate Array.&lt;br /&gt;
&lt;br /&gt;
As an exception, the Ghost VSYNC of CRTC 2 overpowers the Fake VSYNC.&lt;br /&gt;
&lt;br /&gt;
=== Subpixel vertical hardware scroll ===&lt;br /&gt;
&lt;br /&gt;
By tuning very precisely when the VSYNC signal is sent to the monitor,  Longshot has demonstrated [https://youtu.be/bSjRU6Wye00 vertical hardware scroll] with a precision of 1/128th of a pixel. Furthermore, subpixel vertical scrolling consumes very little CPU.&lt;br /&gt;
&lt;br /&gt;
=== Mid-VSYNC ===&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, in both interlace modes, a mid-VSYNC is generated when VCC=R7 on the even field. The VSYNC pulse starts in the middle of the raster line, at HCC=R0/2.&lt;br /&gt;
&lt;br /&gt;
As an exception, on CRTCs 3/4, if R7=0 then mid-VSYNC will instead occur on the odd field. Source: §19.7 &amp;quot;Mid-VSYNC&amp;quot; of the CRTC Compendium.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Interlace modes ==&lt;br /&gt;
&lt;br /&gt;
Note: Some details about the CRTC interlace implementations are missing in this article. Consider it as an introduction to the topic.&lt;br /&gt;
&lt;br /&gt;
[[File:CRTC Interlace modes.png]]&lt;br /&gt;
&lt;br /&gt;
For a CRTC character line with n raster lines, R9 must be set to n-1 on all CRTCs, regardless of the interlace settings. The exception is for CRTCs 0/3/4 in IVM mode, where R9 must be set to n-2.&lt;br /&gt;
&lt;br /&gt;
=== Interlace sync mode (ISM) ===&lt;br /&gt;
&lt;br /&gt;
In this mode, the same information is painted in both fields to enhance readability. Reprogramming the CRTC is not necessary.&lt;br /&gt;
&lt;br /&gt;
=== Interlace sync and video mode (IVM) ===&lt;br /&gt;
&lt;br /&gt;
In this mode, alternating lines are displayed in the even and odd field to double the resolution.&lt;br /&gt;
&lt;br /&gt;
On the even field, the CRTC displays the lines for which VLC is even. On the odd field, the CRTC displays the lines for which VLC is odd.&lt;br /&gt;
&lt;br /&gt;
It is necessary to reprogram the CRTC as if we were building a frame of 624 lines.&lt;br /&gt;
&lt;br /&gt;
CRTC 2 is the exception: R4, R5, R6, R7 do not need to be reprogrammed as it considers each character line to be a double character line.&lt;br /&gt;
&lt;br /&gt;
=== Interlace adjustment line ===&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, in both interlace modes, an additional line (the 625th line) is added automatically by the CRTC at the end of the even field. This line is added after the lines of the vertical adjustment mode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRTC registers ==&lt;br /&gt;
&lt;br /&gt;
The Internal registers of the 6845 are:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!rowspan=2|Register Index&lt;br /&gt;
!rowspan=2|Register Name&lt;br /&gt;
!colspan=3|Read/Write&lt;br /&gt;
!rowspan=2|Range&lt;br /&gt;
!rowspan=2|CPC Setting&lt;br /&gt;
!rowspan=2|Notes&lt;br /&gt;
|-&lt;br /&gt;
!CRTC 0&lt;br /&gt;
!CRTCs 1/2&lt;br /&gt;
!CRTCs 3/4&lt;br /&gt;
|-&lt;br /&gt;
|0||Horizontal Total (-1)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||00000000||63||Width of the screen, in characters. Should always be 63 (64 characters). 1 character == 1μs.&lt;br /&gt;
|-&lt;br /&gt;
|1||Horizontal Displayed||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||00000000||40||Number of characters displayed. Once horizontal character count (HCC) matches this value, DISPTMG is set to 1.&lt;br /&gt;
|-&lt;br /&gt;
|2||Horizontal Sync Position||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||00000000||46||When to start the HSync signal.&lt;br /&gt;
|-&lt;br /&gt;
|3||Horizontal and Vertical Sync Widths||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||VVVVHHHH||128+14||VSync width in scan-lines (Not present on all CRTCs, fixed to 16 lines on these) ; HSync pulse width in characters.&lt;br /&gt;
|-&lt;br /&gt;
|4||Vertical Total (-1)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||x0000000||38||Height of the screen, in characters.&lt;br /&gt;
|-&lt;br /&gt;
|5||Vertical Total Adjust||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||xxx00000||0||Measured in scanlines, can be used for smooth vertical scrolling on CPC.&lt;br /&gt;
|-&lt;br /&gt;
|6||Vertical Displayed||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||x0000000||25||Height of displayed screen in characters. Once vertical character count (VCC) matches this value, DISPTMG is set to 1.&lt;br /&gt;
|-&lt;br /&gt;
|7||Vertical Sync Position||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||x0000000||30||When to start the VSync signal, in characters.&lt;br /&gt;
|-&lt;br /&gt;
|8||Interlace and Skew||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||CCDDxxII||0||CC: Cursor Skew (Only in CRTCs 0, 3 and 4). DD: Display Skew (Only in CRTCs 0, 3 and 4). II: Interlace Mode.&lt;br /&gt;
|-&lt;br /&gt;
|9||Maximum Raster Address (aka Number of Scan Lines) (-1)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||xxx00000||7||Maximum scan line address on CPC can hold between 0 and 7, higher values' upper bits are ignored.&lt;br /&gt;
|-&lt;br /&gt;
|10||Cursor Start Raster||style=&amp;quot;text-align: center;&amp;quot;|Write||style=&amp;quot;text-align: center;&amp;quot;|Write||Read/Write||xBP00000||0||B = Blink On/Off; P = Blink Period Control (16 or 32 frames). Sets first raster row of character that cursor is on to invert.&lt;br /&gt;
|-&lt;br /&gt;
|11||Cursor End Raster||style=&amp;quot;text-align: center;&amp;quot;|Write||style=&amp;quot;text-align: center;&amp;quot;|Write||Read/Write||xxx00000||0||Sets last raster row of character that cursor is on to invert.&lt;br /&gt;
|-&lt;br /&gt;
|12||Display Start Address (High)||Read/Write||style=&amp;quot;text-align: center;&amp;quot;|Write||Read/Write||xx000000||48||On Amstrad Plus, bit7 of the printer port is controlled by bit3 of CRTC R12 (ie. bit11 of Display Start Address).&lt;br /&gt;
|-&lt;br /&gt;
|13||Display Start Address (Low)||Read/Write||style=&amp;quot;text-align: center;&amp;quot;|Write||Read/Write||00000000||0||Allows you to offset the start of screen memory for hardware scrolling, and if using memory from address &amp;amp;0000 with the firmware.&lt;br /&gt;
|-&lt;br /&gt;
|14||Cursor Address (High)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Read/Write||xx000000||0||&lt;br /&gt;
|-&lt;br /&gt;
|15||Cursor Address (Low)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Read/Write||00000000||0||&lt;br /&gt;
|-&lt;br /&gt;
|16||Light Pen Address (High)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Read||xx000000||||On CRTC1, bit6 of Status register goes to 0 when R16 is read.&lt;br /&gt;
|-&lt;br /&gt;
|17||Light Pen Address (Low)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Read||00000000||||On CRTC1, bit6 of Status register goes to 0 when R17 is read.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Screen size ===&lt;br /&gt;
&lt;br /&gt;
We can calculate the screen size in words by multiplying R1 x R6 x (R9+1). And then multiplying the result by 2 to have the screen size in bytes.&lt;br /&gt;
&lt;br /&gt;
With the default CRTC values, we obtain 40 x 25 x (7+1) x 2 = 16000 bytes.&lt;br /&gt;
&lt;br /&gt;
So we can observe that only part of the 16384 bytes (=16KB) page of VRAM is actually displayed on screen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Register access ===&lt;br /&gt;
&lt;br /&gt;
On CRTCs 0/1/2, if a Write Only register is read from, &amp;quot;0&amp;quot; is returned. The register accessing scheme on CRTCs 3/4 makes it impossible to happen.&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, only the 5 least significant bits of the selected register number are considered to write to a register. The other bits are ignored.&lt;br /&gt;
&lt;br /&gt;
On CRTCs 0/1/2, only the 5 least significant bits of the selected register number are considered to read a register:&lt;br /&gt;
* On CRTCs 0/2, registers 18-31 read as 0&lt;br /&gt;
* On CRTC 1, registers 18-30 read as 0, register 31 reads as &amp;amp;FF&lt;br /&gt;
&lt;br /&gt;
On CRTCs 3/4, only the 3 least significant bits of the selected register number are considered to read a register, according to the following table:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Nb&lt;br /&gt;
!Register&lt;br /&gt;
!Definition&lt;br /&gt;
|-&lt;br /&gt;
|0||R16||Light Pen Address (High)&lt;br /&gt;
|-&lt;br /&gt;
|1||R17||Light Pen Address (Low)&lt;br /&gt;
|-&lt;br /&gt;
|2||R10||Cursor Start Raster&lt;br /&gt;
|-&lt;br /&gt;
|3||R11||Cursor End Raster&lt;br /&gt;
|-&lt;br /&gt;
|4||R12||Display Start Address (High)&lt;br /&gt;
|-&lt;br /&gt;
|5||R13||Display Start Address (Low)&lt;br /&gt;
|-&lt;br /&gt;
|6||R14||Cursor Address (High)&lt;br /&gt;
|-&lt;br /&gt;
|7||R15||Cursor Address (Low)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRTC register differences ==&lt;br /&gt;
&lt;br /&gt;
CRTC types 3 and 4 are identical in every way, except for the unlocking mechanism, split screen, hardware soft scroll and 8-bit printer port functionalities specific to the [[ASIC]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== R10/R11 on ASIC/Pre-ASIC  ===&lt;br /&gt;
&lt;br /&gt;
The cursor raster registers R10/R11 act as status registers when read on CRTCs 3/4. They behave as normal cursor raster registers upon write.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! R10 - Bit number&lt;br /&gt;
! Bit value&lt;br /&gt;
! Event&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|1&lt;br /&gt;
|C0=R0&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|C0=R0/2&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|C0=R1-1 (if R0&amp;gt;=R1)&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|0&lt;br /&gt;
|C0=R2&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|C0=R2+R3&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|0&lt;br /&gt;
1&lt;br /&gt;
|R3h&amp;gt;0 : C0=0..R0 on the line R3h from Vsync (C4=R7)&lt;br /&gt;
R3h=0 : C0=0..R0 over 15 lines from Vsync (C4=R7)&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|1&lt;br /&gt;
|Always 1&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|0&lt;br /&gt;
0&lt;br /&gt;
|C0=0..R0-1 : VMA.Lsb=0xFF&lt;br /&gt;
C0=R0 : VMA'.Lsb=0x00 (same cond if C0=R0=0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! R11 - Bit number&lt;br /&gt;
! Bit value&lt;br /&gt;
! Event&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|C4=R4 and C9=R9 and C0=R0 : Last char of screen&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|C4=R6-1 and C9=R9 and C0=R0 : Last char displayed&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|C4=R7-1 and C9=R9 and C0=R0 : Last char before Vsync&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|0/1&lt;br /&gt;
|Timer 16 CRTC frames&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|Always 1&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|0&lt;br /&gt;
|C9=R9 : C0=0 to R0&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|0&lt;br /&gt;
|Always 0&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|1&lt;br /&gt;
|(C9=R9 and C0=R0) or (C9=0 and C0=0 to R0-1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Horizontal and Vertical Sync (R3) ===&lt;br /&gt;
&lt;br /&gt;
Type 0:&lt;br /&gt;
*Bits 7..4 define Vertical Sync Width. If 0 is programmed, this gives 16 lines of VSYNC.&lt;br /&gt;
*Bits 3..0 define Horizontal Sync Width. If 0 is programmed, no HSYNC is generated (and therefore, no interrupts).&lt;br /&gt;
&lt;br /&gt;
Type 1:&lt;br /&gt;
*Bits 7..4 are ignored. Vertical Sync is fixed at 16 lines.&lt;br /&gt;
*Bits 3..0 define Horizontal Sync Width. If 0 is programmed, no HSYNC is generated (and therefore, no interrupts).&lt;br /&gt;
&lt;br /&gt;
Type 2:&lt;br /&gt;
*Bits 7..4 are ignored. Vertical Sync is fixed at 16 lines.&lt;br /&gt;
*Bits 3..0 define Horizontal Sync Width. If 0 is programmed, this gives a HSYNC width of 16.&lt;br /&gt;
&lt;br /&gt;
Types 3/4:&lt;br /&gt;
*Bits 7..4 define Vertical Sync Width. If 0 is programmed, this gives 16 lines of VSYNC.&lt;br /&gt;
*Bits 3..0 define Horizontal Sync Width. If 0 is programmed, this gives a HSYNC width of 16.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Interlace and Skew (R8) ===&lt;br /&gt;
&lt;br /&gt;
Types 0/3/4:&lt;br /&gt;
*Bits 7..6 define the skew (delay) of the CUDISP signal (00 = Non-skew ; 01 = One-character skew ; 10 = Two-character skew ; 11 = Non-output).&lt;br /&gt;
*Bits 5..4 define the skew (delay) of the DISPTMG signal (00 = Non-skew ; 01 = One-character skew ; 10 = Two-character skew ; 11 = Non-output).&lt;br /&gt;
*Bits 3..2 are ignored.&lt;br /&gt;
*Bits 1..0 define the interlace mode (00 = No Interlace ; 01 = Interlace Sync ; 10 = No Interlace ; 11 = Interlace Sync and Video).&lt;br /&gt;
&lt;br /&gt;
Types 1/2:&lt;br /&gt;
*Bits 7..2 are ignored.&lt;br /&gt;
*Bits 1..0 define the interlace mode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== R31 on Type 1 ===&lt;br /&gt;
&lt;br /&gt;
R31 is described in the UM6845R documentation as &amp;quot;Dummy Register&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Its use is described in the documentation for the Rockwell R6545 in combination with R18, R19 and R8 and the Status Register.&lt;br /&gt;
&lt;br /&gt;
In the UM6845R it appears to have no effect. Reading and writing does nothing. Reading it returns &amp;amp;FF.&lt;br /&gt;
&lt;br /&gt;
R31 doesn't exist on CRTCs 0/2/3/4.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Status register on Type 1 ===&lt;br /&gt;
&lt;br /&gt;
The UM6845R has a status register that can be read using port &amp;amp;BExx.&lt;br /&gt;
&lt;br /&gt;
Bit 6 is set to 1 if there is a strobe input to the /LPEN signal. It is cleared to 0 when either R17 or R16 (LPEN address) of the CRTC are read. It signals there is a valid LPEN input. On Kevin Thacker's CPC with UM6845R, it is triggered at power on, R17 and R16 have the values 0 when read.&lt;br /&gt;
&lt;br /&gt;
Bit 5 is set to 1 when CRTC is in &amp;quot;vertical blanking&amp;quot;. Vertical blanking is when the vertical border is active. i.e. VCC&amp;gt;=R6. &lt;br /&gt;
&lt;br /&gt;
It is cleared when the frame is started (VCC=0). It is not directly related to the DISPTMG output (used by the CPC to display the border colour) because that output is a combination of horizontal and vertical blanking.&lt;br /&gt;
This bit will be 0 when pixels are being displayed.&lt;br /&gt;
&lt;br /&gt;
All the other bits read as 0 and don't have any function.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRTC Type Detection ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10 MODE 1:' Reinitialize screen&lt;br /&gt;
20 OUT &amp;amp;BC00,31:IF INP(&amp;amp;BF00)=255 THEN PRINT&amp;quot;crtc 1&amp;quot;:END&lt;br /&gt;
30 OUT &amp;amp;BC00,12:IF INP(&amp;amp;BF00)=0 THEN PRINT&amp;quot;crtc 2&amp;quot;:END&lt;br /&gt;
40 OUT &amp;amp;BC00,20:IF INP(&amp;amp;BF00)=0 THEN PRINT&amp;quot;crtc 0&amp;quot;:END&lt;br /&gt;
50 PRINT&amp;quot;crtc 3/4&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Distinguishing between CRTCs 3 and 4 can be done by trying to [[Programming:Unlocking ASIC|unlock the ASIC]] or by testing the [[8255|PPI chip]]. On ASIC, if PPI Port B is set as output it will behave the same as input.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRTC Timing Diagrams ==&lt;br /&gt;
[[File:CRTC Timing Diagram Rockwell.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:CRTC timing small.gif]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Internal Counters ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Counter name&lt;br /&gt;
! Abbr&lt;br /&gt;
! Alternate name&lt;br /&gt;
! Compared with&lt;br /&gt;
! Comment&lt;br /&gt;
|-&lt;br /&gt;
|Horizontal Character Counter&lt;br /&gt;
|HCC&lt;br /&gt;
|C0&lt;br /&gt;
|R0, R1, R2&lt;br /&gt;
| Increments on every clock cycle&lt;br /&gt;
|-&lt;br /&gt;
|Horizontal Sync Counter&lt;br /&gt;
|HSC&lt;br /&gt;
|C3l&lt;br /&gt;
|R3l&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Vertical Character Counter&lt;br /&gt;
|VCC&lt;br /&gt;
|C4&lt;br /&gt;
|R4, R6, R7&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Vertical Sync Counter&lt;br /&gt;
|VSC&lt;br /&gt;
|C3h&lt;br /&gt;
|R3h&lt;br /&gt;
|R3h is fixed to 0 on CRTCs 1/2. This gives 16 lines of VSYNC&lt;br /&gt;
|-&lt;br /&gt;
|Vertical Line Counter&lt;br /&gt;
|VLC&lt;br /&gt;
|C9&lt;br /&gt;
|R9, R10, R11&lt;br /&gt;
|If not in IVM mode, this counter is exposed on CRTC pins RA0..RA4&lt;br /&gt;
|-&lt;br /&gt;
|Vertical Total Adjust Counter&lt;br /&gt;
|VTAC&lt;br /&gt;
|C5&lt;br /&gt;
|R5&lt;br /&gt;
|This counter does not exist on CRTCs 0/3/4. C9 is reused instead&lt;br /&gt;
|-&lt;br /&gt;
|Frame Counter&lt;br /&gt;
|FC&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|Used to alternate frames in interlace and for CRTC cursor blinking&lt;br /&gt;
|-&lt;br /&gt;
|Memory Address&lt;br /&gt;
|MA&lt;br /&gt;
|&lt;br /&gt;
|R14/R15&lt;br /&gt;
|This counter is exposed on CRTC pins MA0..MA13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When IVM mode is activated, VLC continues to increment normally. However, RA is not identical to VLC anymore. Instead, VLC is considered shifted left by 1 bit, and bit0 represents the parity of the field (even/odd).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRTC counter differences ==&lt;br /&gt;
&lt;br /&gt;
=== MA buffering ===&lt;br /&gt;
&lt;br /&gt;
No matter its type, the CRTC never buffers any of its counters, except for the video pointer MA. The buffer MA' is needed because MA has to be reloaded at the beginning of every raster line.&lt;br /&gt;
&lt;br /&gt;
At the end of the display of the last raster line of each character line (ie. when HCC=R1 and VLC=R9), MA' captures the current value of MA.&lt;br /&gt;
&lt;br /&gt;
CRTC 2 is the exception: at the end of the display of the last raster line of the frame, MA' captures R12/R13 instead of MA.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MA reload ===&lt;br /&gt;
&lt;br /&gt;
On CRTCs 0/3/4, at the beginning of the first raster line of the frame, MA and MA' are loaded with R12/R13. Otherwise, MA is loaded with MA'.&lt;br /&gt;
&lt;br /&gt;
On CRTC 2, at the beginning of every raster line of the frame (including the first one), MA is loaded with MA'.&lt;br /&gt;
&lt;br /&gt;
On CRTC 1, at the beginning of every raster line of the first character line of the frame (ie. when VCC=0), MA is loaded with R12/R13 instead of MA'. '''This is a major source of incompatibility if the programmer does not take care.''' In demos and games, to be compatible with all CRTCs, program R12/R13 only when VCC≠0. This will then take effect at the next CRTC frame start.&lt;br /&gt;
&lt;br /&gt;
==== Rupture For Dummies (R5 bug) ====&lt;br /&gt;
&lt;br /&gt;
CRTC 1 has a bug that occurs when R5 is updated with a non-zero value when HCC=R0 and VLC≠R9, but only when R5 was previously 0. This changes the MA update source to R12/R13 instead of MA'. The CRTC then loads R12/R13 into MA at the beginning of every scanline, regardless of the VCC value.&lt;br /&gt;
&lt;br /&gt;
This R5 bug also messes with the frame parity management. However, it is possible to fix the parity of the frame by activating/deactivating the IVM interlace mode.&lt;br /&gt;
&lt;br /&gt;
The vertical adjustment operates normally after the RFD is triggered. If vertical adjustment is not needed, R5 can be reset at any time after the RFD is activated.&lt;br /&gt;
&lt;br /&gt;
This effect is used in the [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=19308 DSC4 demo].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== VSC (C3h) overflow ===&lt;br /&gt;
&lt;br /&gt;
During a VSYNC on CRTCs 0/3/4, if VSYNC Width (R3h) is changed with a value less than the current VSC, then VSC overflows and will count up to its maximum value (15) before looping back and counting up again until it reaches the new value of R3h.&lt;br /&gt;
&lt;br /&gt;
On CRTCs 1/2, the VSYNC width is fixed to 16 characters. It is not possible to modify it. Therefore, VSC cannot be overflowed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HSC (C3l) overflow ===&lt;br /&gt;
&lt;br /&gt;
During an HSYNC, if HSYNC Width (R3l) is changed with a value less than the current HSC, then HSC overflows and will count up to its maximum value (15) before looping back and counting up again until it reaches the new value of R3l.&lt;br /&gt;
&lt;br /&gt;
The only exception is for CRTC 1 with a value of 0, which immediately cancels the current HSYNC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== VCC (C4) overflow ===&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, if Vertical Total (R4) is changed with a value less than VCC, then:&lt;br /&gt;
* if this update was done when VCC &amp;lt; R4, then VCC overflows and will count up to its maximum value (127) before looping back and counting up again until it reaches the new value of R4&lt;br /&gt;
* if this update was done when VCC = R4, the current character line was already decided to be the last one of the current frame. No update to R4 will make the CRTC change its mind for the current frame&lt;br /&gt;
&lt;br /&gt;
The only exception when VCC = R4 is for CRTC 1 with a value of 0, which will cause VCC to overflow.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HCC (C0) overflow ===&lt;br /&gt;
&lt;br /&gt;
If Horizontal Total (R0) is changed with a value less than the current HCC, then:&lt;br /&gt;
* on CRTCs 0/1/2, HCC overflows and will count up to its maximum value (255) before looping back and counting up again until it reaches the new value of R0&lt;br /&gt;
* on CRTCs 3/4, the current line is considered finished and HCC is immediately reset to 0 on the next line&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== VLC (C9) overflow ===&lt;br /&gt;
&lt;br /&gt;
If Number of Scan Lines (R9) is changed with a value less than the current VLC, then:&lt;br /&gt;
* on CRTCs 0/1/2, VLC overflows and will count up to its maximum value (31) before looping back and counting up again until it reaches the new value of R9&lt;br /&gt;
* on CRTCs 3/4, the current line is considered the last one of this CRTC character and VLC will reset to 0 on the next line&lt;br /&gt;
&lt;br /&gt;
As an exception, on CRTCs 0/2, if VLC is modified during the last frame line, then the updated value will not be considered for the current frame.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== VTAC (C5/C9) overflow ===&lt;br /&gt;
&lt;br /&gt;
During vertical adjustment mode, if Vertical Total Adjust (R5) is changed with a value less than the current VTAC, then:&lt;br /&gt;
* on CRTCs 0/1/2, VTAC overflows and will count up to its maximum value (31) before looping back and counting up again until it reaches the new value of R5&lt;br /&gt;
* on CRTCs 3/4, the current line is considered the last one of the current frame and vertical adjustment will end&lt;br /&gt;
&lt;br /&gt;
As an exception, on CRTCs 0/2, if VTAC is modified during the last frame line, then the updated value will not be considered for the current frame.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Vertical Adjustment mode ===&lt;br /&gt;
&lt;br /&gt;
On CRTCs 3/4, this mode does not increment VCC, so VCC remains equal to R4.&lt;br /&gt;
&lt;br /&gt;
On CRTC 0, this mode increments VCC, causing it to exceed R4, but this increment occurs only once.&lt;br /&gt;
&lt;br /&gt;
On CRTCs 1/2, this mode increments VCC, causing it to exceed R4, and this increment can happen multiple times depending on the values of R5 and R9.&lt;br /&gt;
&lt;br /&gt;
Also, only CRTCs 1/2 have a dedicated C5 counter. On CRTCs 0/3/4, during Vertical Adjustment, C9 has to fullfil the VTAC role which means that it cannot fullfil its VLC role. This impacts address generation as R9 is not considered anymore.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Counter freezes ===&lt;br /&gt;
&lt;br /&gt;
On CRTCs 1/2/3/4, R0 accepts all values without causing any problems for counters.&lt;br /&gt;
&lt;br /&gt;
On CRTC 0:&lt;br /&gt;
* Setting R0 to 0 will cause numerous issues that stem from the fact that VLC is frozen. As HCC never reaches 1, the logic that increments VLC is never triggered.&lt;br /&gt;
* The logic that triggers vertical adjustment is broken if R0&amp;lt;2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Block Diagrams ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Hitachi&lt;br /&gt;
!UMC&lt;br /&gt;
!Motorola&lt;br /&gt;
|-&lt;br /&gt;
|[[File:CRTC Block Diagram.png|Hitachi]]&lt;br /&gt;
|[[File:UMC CRTC Block Diagram.png|UMC]]&lt;br /&gt;
|[[File:Motorola CRTC Block Diagram.png|Motorola]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRTC-II (aka Type 5) ==&lt;br /&gt;
&lt;br /&gt;
The [[Media:CRTC-5-HD6345.pdf|HD6345 datasheet]] states it is upward-compatible with the HD6845S in pin and software.&lt;br /&gt;
&lt;br /&gt;
This chip was never used by Amstrad. However, some CPC enthusiasts have replaced the original CRTC chip in their CPC with this one.&lt;br /&gt;
&lt;br /&gt;
With this chip, split-screen becomes easy: [https://thecheshirec.at/2024/05/20/des-splitscreens-en-basic-sur-crtc5/ Split-screen in BASIC]. And 3 new graphics modes (160x100x16c, 320x100x4c, 640x100x2c) are available: [https://thecheshirec.at/2024/11/10/trois-nouveaux-modes-video-grace-au-crtc-5/ New graphics modes in BASIC].&lt;br /&gt;
&lt;br /&gt;
This is the cheapest way to upgrade the CPC's graphics capabilities, costing only 1.29€. [https://thecheshirec.at/2024/05/19/des-crtc5-a-129e/ Source]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Datasheets ==&lt;br /&gt;
&lt;br /&gt;
==== Used by Amstrad ====&lt;br /&gt;
* [[Media:hd6845.hitachi.pdf|HD6845S (Hitachi)]] aka Type 0&lt;br /&gt;
* [[Media:UM6845-UMC.pdf|UM6845 (UMC)]] aka Type 0&lt;br /&gt;
* [[Media:Um6845r.umc.pdf|UM6845R (UMC)]] aka Type 1&lt;br /&gt;
* [[Media:Mc6845.motorola.pdf|MC6845 (Motorola)]] aka Type 2&lt;br /&gt;
* [[Media:CPC_Plus_Asic_Schematic.GIF|AMS40489 (Amstrad)]] aka Type 3 ([[ASIC]])&lt;br /&gt;
* [[AMS40226 (Amstrad)]] aka Type 4 (Pre-ASIC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Unused clones ====&lt;br /&gt;
* [[CM607P]] a Bulgarian clone made in Pravetz factory. It is used in the [[Aleste 520EX]].&lt;br /&gt;
* [[Media:hd6845.hitachi.pdf|HD6845R]] by Hitachi. According to Kevin Thacker, the [[KC Compact]] used HD6845R only.&lt;br /&gt;
* [[Media:UM6845E-UMC.pdf|UM6845E]] by UMC&lt;br /&gt;
* [[Media:Mc6845.pdf|MC6845-1]] by Motorola&lt;br /&gt;
* [[Media:F6845.pdf|F6845]] by Fairchild&lt;br /&gt;
* [[Media:EF6845P.pdf|EF6845]] by Thomson Semiconductors&lt;br /&gt;
* [[Media:VL6845 VTi.pdf|VL6845]] by VTi&lt;br /&gt;
* [[Media:C6845 CRTC (CAST).pdf|C6845]] by Cast&lt;br /&gt;
* [[Media:MB89321B FUJ.pdf|MB89321B]] by Fujitsu. It is pin-compatible with the 6845&lt;br /&gt;
* [[Media:MB89321A datasheet CRTC.pdf|MB89321A]] by Fujitsu. Enhanced version that adds smooth scroll, screen partitioning, independent scrolling of screen partitions, and other convenient features&lt;br /&gt;
* [[Media:Mos 6545-1 crtc.pdf|MOS 6545]] (MOS, Rockwell, Synertek) is pin-compatible with the 6845. Its differences are found in the R8 register.&lt;br /&gt;
* [https://www.cpcwiki.eu/forum/other-retro/interesting-discussion-about-the-c128-s-cpm-poor-performance/msg223058/#msg223058 MOS 8563] It is an evolution of the 6545/6845 CRTC chip, with blitter abilities to autonomously perform block memory copies within its dedicated video RAM.&lt;br /&gt;
* [https://github.com/hoglet67/BeebFpga/blob/dev/src/common/mc6845.vhd BeebFpga] [https://github.com/MiSTer-devel/Amstrad_MiSTer/blob/master/rtl/UM6845R.v MiSTer] [https://opencores.org/websvn/filedetails?repname=System09&amp;amp;path=%2FSystem09%2Ftrunk%2Frtl%2FVHDL%2Fcrtc6845.vhd OpenCores] Verilog/VHDL implementations of the 6845&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tools about CRTC ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.cpcwiki.eu/imgs/9/99/Elmar_Krieger-SPECIAL_EFFECTS.dsk  some BASIC tools to detect CRTC types 0-1-2 and show some effects] by [[Elmar Krieger]] (DSK for Emulators)&lt;br /&gt;
* [[File:Shaker26.dsk]] Shaker - Suite of CRTC tests associated with the CPC CRTC compendium (many of them will not work correctly on emulators and that was the purpose of the tests, to help create more compatible emulation)&lt;br /&gt;
* [[File:Shaker addon.dsk]] Shaker Add-On (Pixel 1 Hard Scroll / Vertical Rupture all Crtc)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/6845 Wikipedia on the CRTC]&lt;br /&gt;
* [[Media:ACCC1.8-EN.pdf]] CPC CRTC Compendium - Latest (04/2024!) document containing in-depth info about CRTC programming on CPC.&lt;br /&gt;
* [http://www.grimware.org/doku.php/documentations/devices/crtc CRTC documentation from Grimware]&lt;br /&gt;
* [http://quasar.cpcscene.net/doku.php?id=assem:crtc Quasar CRTC documentation (in french)]&lt;br /&gt;
* [https://pulkomandy.github.io/shinra.github.io/crtc.html PulkoMandy's table] [https://www.theoddys.com/acorn/the_6845_crtc/6845%20Variants.xlsx Oddy's table] Differences between CRTC types&lt;br /&gt;
* [[Media:Dossier Rupture(Gozeur Paradox).pdf]]&lt;br /&gt;
* [[Media:Dossier CRTC(Ramlaid Mortel).pdf]] Les entrailles du CRTC&lt;br /&gt;
* [https://thecheshirec.at/tag/crtc6845/ Leçons CRTC (CheshireCat)]&lt;br /&gt;
* [[Media:CRTC Compendium Podcast.mp3]] The CRTC Compendium digested in podcast format&lt;br /&gt;
* [https://martin.hinner.info/vga/pal.html PAL video timing specification]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related pages==&lt;br /&gt;
&lt;br /&gt;
*[[Gate Array]]&lt;br /&gt;
&lt;br /&gt;
*[[ASIC]]&lt;br /&gt;
&lt;br /&gt;
*[[Video modes]]&lt;br /&gt;
&lt;br /&gt;
*[[Synchronising with the CRTC and display]] : technic and details on the relationship between Gate Array and CRTC.&lt;br /&gt;
&lt;br /&gt;
*[[VIDI digitizer]] This extension contains its own CRTC chip&lt;br /&gt;
&lt;br /&gt;
[[Category:Hardware]] [[Category:CPC Internal Components]] [[Category:Electronic Component]] [[Category:Programming]] [[Category:Datasheet]] [[Category:Graphic]]&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=File:CRTC_UMC_Type_0.png&amp;diff=126051</id>
		<title>File:CRTC UMC Type 0.png</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=File:CRTC_UMC_Type_0.png&amp;diff=126051"/>
				<updated>2025-05-18T21:20:12Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=CRTC&amp;diff=126050</id>
		<title>CRTC</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=CRTC&amp;diff=126050"/>
				<updated>2025-05-18T21:17:01Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:CRTC Type 0.jpg|thumb|right|CRTC Type 0]]&lt;br /&gt;
[[File:CRTC Type 1.png|thumb|right|CRTC Type 1]]&lt;br /&gt;
[[File:CRTC6845-Type2.jpg|thumb|right|CRTC Type 2]]&lt;br /&gt;
&lt;br /&gt;
The 6845 '''CRTC''' (Cathode Ray Tube Controller) chip was created by Motorola in 1977. It works with the [[Gate Array]] to generate the video signal on the Amstrad CPC.&lt;br /&gt;
&lt;br /&gt;
This chip is also used in the [[BBC Micro]], [[Lynx|Camputers Lynx]], [[EG2000 Colour Genie]], [[Sharp X1]], [[MicroBee]], [[Commodore PET]] and the early graphics cards (MDA, Hercules, CGA, Plantronics Colorplus) for [[IBM PC]]. And it is found in some [https://www.msx.org/wiki/Hitachi_HD6845 MSX1 expansions], providing an 80-column text mode.&lt;br /&gt;
&lt;br /&gt;
It's important to note that the CRTC chip is primarily designed for character-based displays. It explains why, on the Amstrad CPC, the video memory is organized into a grid of characters rather than a purely linear bitmap.&lt;br /&gt;
&lt;br /&gt;
NOTES: &lt;br /&gt;
* This document describes the functionality in terms of the CPC with its separate CRTC and Gate-Array. The Plus has both integrated into the same IC, but could be considered to have two functional blocks, one for CRTC and one for Gate-Array. In this document the term 'Gate-Array' is used, but this also applies to the ASIC.&lt;br /&gt;
* Much information has been drawn from the [https://shaker.logonsystem.eu/ CRTC Compendium] documentation. For more details, timing diagrams, code examples, coding tips, and more, refer to that documentation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The 6845 Cathode Ray Tube Controller (CRTC) is a programmable IC used to generate video displays. This IC is used in a variety of computers including the Amstrad CPC, Amstrad Plus and KC Compact. &lt;br /&gt;
&lt;br /&gt;
The CRTC is a simple chip. It is made up of counters and equality operators, tied by simple logic. All the complexity stems from its multiple independent implementations with their subtle differences.&lt;br /&gt;
&lt;br /&gt;
The CRTC was a common part available from many different manufacturers. During the life of the CPC, Amstrad sourced the CRTC from various manufacturers. &lt;br /&gt;
&lt;br /&gt;
All ICs used were based on the same design but have a different implementation. As a result they do not operate identically in all situations. This document highlights these differences. &lt;br /&gt;
&lt;br /&gt;
This table lists the known ICs used, with their part number, manufacturer and type number. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Part number&lt;br /&gt;
!Manufacturer&lt;br /&gt;
!Type number (note 3)&lt;br /&gt;
|-&lt;br /&gt;
|HD6845S||Hitachi||0&lt;br /&gt;
|-&lt;br /&gt;
|UM6845||UMC||0&lt;br /&gt;
|-&lt;br /&gt;
|UM6845R||UMC||1&lt;br /&gt;
|-&lt;br /&gt;
|MC6845||Motorola||2&lt;br /&gt;
|-&lt;br /&gt;
|AMS40489||Amstrad||3 (note 1)&lt;br /&gt;
|-&lt;br /&gt;
|AMS40226||Amstrad||4 (note 2)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''NOTES''' &lt;br /&gt;
&lt;br /&gt;
1. The CRTC functionality is integrated into the CPC+ ASIC. This type exists only in the 464 Plus, 6128 Plus and GX4000. &lt;br /&gt;
&lt;br /&gt;
2. This type exists in &amp;quot;cost-down&amp;quot; CPC464 and CPC6128 systems. In the &amp;quot;cost-down&amp;quot; the CRTC functionality is integrated into a single ASIC IC. This ASIC is often refered to as the &amp;quot;Pre-ASIC&amp;quot; because it preceeded the CPC+ ASIC. The CRTC functionality of the Pre-ASIC is almost identical to the CRTC within the ASIC.&lt;br /&gt;
 &lt;br /&gt;
3. In the Amstrad community each 6845 implementation has been assigned a type number. This type identifies a group of implementations which operate in exactly the same way. The type number system was originally used by demo programmers. &lt;br /&gt;
&lt;br /&gt;
It is possible to detect the 6845 present using software methods, and this is done to: &lt;br /&gt;
&lt;br /&gt;
* warn that the software was not designed for the detected 6845 and may function incorrectly&lt;br /&gt;
* to adapt the software so that it will run with the detected 6845 &lt;br /&gt;
* In most cases, the type of the detected 6845 is reported&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Programming==&lt;br /&gt;
&lt;br /&gt;
The 6845 is selected when bit 14 of the I/O port address is set to &amp;quot;0&amp;quot;. Bit 9 and 8 of the I/O port address define the function to access. The remaining bits can be any value, but it is adviseable to set these to &amp;quot;1&amp;quot; to avoid conflict with other devices in the system.&lt;br /&gt;
&lt;br /&gt;
The recommended I/O port addresses are:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!I/O port address&lt;br /&gt;
!/CS (A14)&lt;br /&gt;
!R/W (A9)&lt;br /&gt;
!RS (A8)&lt;br /&gt;
!Function&lt;br /&gt;
!Read/Write&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;BCxx||0||0||0||Select 6845 register||Write only&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;BDxx||0||0||1||Write to selected internal 6845 register||Write only&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;BExx||0||1||0||&lt;br /&gt;
* CRTCs 0/2: —&lt;br /&gt;
* CRTC 1: Read Status Register&lt;br /&gt;
* CRTCs 3/4: Read from selected internal 6845 register&lt;br /&gt;
||Read only&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;BFxx||0||1||1||Read from selected internal 6845 register||Read only&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The CRTC is not connected to the CPU's RD and WR pins, so it cannot detect the bus's I/O direction. Therefore, executing an IN instruction to the select or write functions causes the CRTC to write the unpredictable data provided by the high-impedance bus to its registers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Z80 I/O access timings ===&lt;br /&gt;
&lt;br /&gt;
The clock provided to the CRTC by the ASIC/Pre-ASIC is phase-shifted compared to the one provided by the Gate Array.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! Instructions !! Duration !! I/O CRTCs 0/1/2 !! I/O CRTCs 3/4&lt;br /&gt;
|-&lt;br /&gt;
| OUT (C),r8 || 4 µsec || '''3rd µsec''' || 4th µsec&lt;br /&gt;
|-&lt;br /&gt;
| OUT (C),0 || 4 µsec || '''3rd µsec''' || 4th µsec&lt;br /&gt;
|-&lt;br /&gt;
| OUT (n),A || 3 µsec || 3rd µsec || 3rd µsec&lt;br /&gt;
|-&lt;br /&gt;
| OUTI || 5 µsec || 5th µsec || 5th µsec&lt;br /&gt;
|-&lt;br /&gt;
| OUTD || 5 µsec || 5th µsec || 5th µsec&lt;br /&gt;
|-&lt;br /&gt;
| IN r8,(C) || 4 µsec || 4th µsec || 4th µsec&lt;br /&gt;
|-&lt;br /&gt;
| INI || 5 µsec || '''4th µsec''' || '''4th µsec'''&lt;br /&gt;
|-&lt;br /&gt;
| IND || 5 µsec || '''4th µsec''' || '''4th µsec'''&lt;br /&gt;
|-&lt;br /&gt;
| IN A,(n) || 3 µsec || 3rd µsec || 3rd µsec&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Video Memory Address (VMA)==&lt;br /&gt;
&lt;br /&gt;
The VMA of the [[Gate Array]] is constructed from the CRTC MA and RA signals:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Video Memory Address&lt;br /&gt;
!Signal source&lt;br /&gt;
!Signal name&lt;br /&gt;
|-&lt;br /&gt;
|A15||6845||MA13 &lt;br /&gt;
|-&lt;br /&gt;
|A14||6845||MA12&lt;br /&gt;
|-&lt;br /&gt;
|A13||6845||'''RA2'''&lt;br /&gt;
|-&lt;br /&gt;
|A12||6845||'''RA1'''&lt;br /&gt;
|-&lt;br /&gt;
|A11||6845||'''RA0'''&lt;br /&gt;
|-&lt;br /&gt;
|A10||6845||MA9 &lt;br /&gt;
|-&lt;br /&gt;
|A9||6845||MA8 &lt;br /&gt;
|-&lt;br /&gt;
|A8||6845||MA7 &lt;br /&gt;
|-&lt;br /&gt;
|A7||6845||MA6 &lt;br /&gt;
|-&lt;br /&gt;
|A6||6845||MA5 &lt;br /&gt;
|-&lt;br /&gt;
|A5||6845||MA4 &lt;br /&gt;
|-&lt;br /&gt;
|A4||6845||MA3 &lt;br /&gt;
|-&lt;br /&gt;
|A3||6845||MA2 &lt;br /&gt;
|-&lt;br /&gt;
|A2||6845||MA1 &lt;br /&gt;
|-&lt;br /&gt;
|A1||6845||MA0&lt;br /&gt;
|-&lt;br /&gt;
|A0||Gate-Array||CCLK&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
CRTC generates the address, Gate Array reads the data and converts it to pixels based on its current graphics mode and palette.&lt;br /&gt;
&lt;br /&gt;
CRTC pins RA3, RA4, MA10, MA11 are not connected on CPC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Overscan bits ===&lt;br /&gt;
&lt;br /&gt;
It is possible to use 32KB screen size (used for [[Programming:Overscan|overscan]]) by setting bits 11 and 10 of Register 12 both to 1. Bits MA11 and MA10 of the address generated by the CRTC are not written on the address bus to access video memory; settings both bits to 1 is the only way to cause a carry to bit MA12 when address pass over the end of current video page to change the memory address to the next video page.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ CRTC Display Start Address&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;8&amp;quot; | Register 12&lt;br /&gt;
! colspan=&amp;quot;8&amp;quot; | Register 13&lt;br /&gt;
|-&lt;br /&gt;
! 15 !! 14 !! 13 !! 12 !! 11 !! 10 !! 9 !! 8&lt;br /&gt;
! 7 !! 6 !! 5 !! 4 !! 3 !! 2 !! 1 !! 0&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Unused&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Video Page&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Page Size&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot; | Start Address (1024 positions)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;white-space: nowrap;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-right: 32px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bit 13 !! Bit 12 !! Video Page&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0 || 0000 - 3FFF&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1 || 4000 - 7FFF&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0 || 8000 - BFFF&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1 || C000 - FFFF&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bit 11 !! Bit 10 !! Page Size&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0 || 16KB&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1 || 16KB&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0 || 16KB&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1 || '''32KB'''&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Coarse hardware scrolling ===&lt;br /&gt;
&lt;br /&gt;
The start address can be manipulated to achieve horizontal and/or vertical hardware scrolling:&lt;br /&gt;
&lt;br /&gt;
*To move right: &amp;lt;code&amp;gt;start_address := start_address + 1&amp;lt;/code&amp;gt;&lt;br /&gt;
*To move left: &amp;lt;code&amp;gt;start_address := start_address - 1&amp;lt;/code&amp;gt;&lt;br /&gt;
*To move down: &amp;lt;code&amp;gt;start_address := start_address + R1&amp;lt;/code&amp;gt;&lt;br /&gt;
*To move up: &amp;lt;code&amp;gt;start_address := start_address - R1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
However, it is a position in word (16 bits), not in byte. So, the screen will move two bytes at a time horizontally. Also, the precision will be one CRTC character vertically.&lt;br /&gt;
&lt;br /&gt;
The first game that used R12/R13 for both horizontal and vertical hardware scrolling is [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1839 Roland on the Ropes], released in 1984.&lt;br /&gt;
&lt;br /&gt;
The following BASIC program demonstrates the coarse scrolling by setting the R12 and R13 registers based on keyboard input:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10 ma%=0&lt;br /&gt;
20 IF INKEY(1)=0 THEN GOSUB 100&lt;br /&gt;
30 IF INKEY(2)=0 THEN GOSUB 300&lt;br /&gt;
40 IF INKEY(8)=0 THEN GOSUB 500&lt;br /&gt;
50 IF INKEY(0)=0 THEN GOSUB 700&lt;br /&gt;
60 GOTO 20&lt;br /&gt;
100 ' right&lt;br /&gt;
110 ma%=ma%+1: GOSUB 900: RETURN&lt;br /&gt;
300 ' down&lt;br /&gt;
310 ma%=ma%+40: GOSUB 900: RETURN&lt;br /&gt;
500 ' left&lt;br /&gt;
510 ma%=ABS(ma%-1): GOSUB 900: RETURN&lt;br /&gt;
700 ' up&lt;br /&gt;
710 ma%=ABS(ma%-40): GOSUB 900: RETURN&lt;br /&gt;
900 ' set R12 and R13&lt;br /&gt;
910 l%=ma% AND 255: h%=&amp;amp;30 OR ((ma%\256) AND 3) :OUT &amp;amp;BC00,13:OUT &amp;amp;BD00,l%: OUT &amp;amp;BC00,12:OUT &amp;amp;BD00,h%&lt;br /&gt;
930 RETURN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Which looks like the following:&lt;br /&gt;
&lt;br /&gt;
[[File:CRTC-Coarse-scroll.gif]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Advanced hardware scrolling ===&lt;br /&gt;
&lt;br /&gt;
To achieve smoother hardware scrolling, other tricks are required in complement to R12/R13. Usually, R3 is used for smooth horizontal scroll and R5 for smooth vertical scroll.&lt;br /&gt;
&lt;br /&gt;
A good example of smooth hardware multidirectional scrolling game on CPC is [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=2119 Super Cauldron], released in 1993.&lt;br /&gt;
&lt;br /&gt;
Everything you need to know about hardware scrolling on CPC can be found [https://www.cpcwiki.eu/forum/programming/hardware-scrolling-21687/ there].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Split screen (aka Rupture) ==&lt;br /&gt;
&lt;br /&gt;
While there is usually 1 CRTC frame per screen frame, the screen frame can be divided into multiple CRTC frames of varying proportions.&lt;br /&gt;
&lt;br /&gt;
This is useful for defining different scrolling zones in your screen frame. For example, it was used for hardware parallax scrolling in the game [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1307 The Living Daylights], released in 1987. [https://www.cpcwiki.eu/forum/programming/the-living-daylights-extra-colours-in-mode-1-rasters-screen-splits/ Source]&lt;br /&gt;
&lt;br /&gt;
And this is basically the bread and butter of innumerable CPC demos.&lt;br /&gt;
&lt;br /&gt;
Some rules of thumb [https://www.cpcwiki.eu/forum/programming/advice-on-split-screen-code/msg242186/ Source]:&lt;br /&gt;
* changes to the screen address have to be done anywhere in the previous split&lt;br /&gt;
* changes to the height of the split have to be done inside the current split (after it has started, in the area of the size of the previous split)&lt;br /&gt;
* changes to screen mode and colours are happening immediately&lt;br /&gt;
&lt;br /&gt;
CRTC registers and screen splitting:&lt;br /&gt;
*reg 0 (63) = x-screenwidth (usually always 63)&lt;br /&gt;
*reg 1 (50) = x-splitwidth (e.g.50)&lt;br /&gt;
*reg 2 (51) = x-splitstart (e.g. 51)&lt;br /&gt;
*reg 3 (08) = x-finestart (maybe use this for half-char scrolling)&lt;br /&gt;
*reg 4 (##) = y-splitheight-1 (set this inside the current split)&lt;br /&gt;
*reg 5 (00) = y-finestart&lt;br /&gt;
*reg 6 (25) = y-max visible splitpart (same like 4)&lt;br /&gt;
*reg 7 (##) = inside last split -&amp;gt; set to 0; inside first split, but after vblank -&amp;gt; set to 255&lt;br /&gt;
*reg 9 (07) = y-lines/char-1&lt;br /&gt;
&lt;br /&gt;
Set this inside the previous split:&lt;br /&gt;
*reg12 (##) = address high (char / 256 + block * 16)&lt;br /&gt;
*reg13 (##) = address low  (char mod 256)&lt;br /&gt;
&lt;br /&gt;
Total height of all splits must be 39.&lt;br /&gt;
&lt;br /&gt;
The [https://www.cpcwiki.eu/forum/programming/interrupt-positions-with-various-sized-screens/ IntPos tool] by Kevin Thacker can help visualize the potential split screen areas.&lt;br /&gt;
&lt;br /&gt;
Note: If all you want is multiple graphics modes in the same frame, you don't need to touch the CRTC at all. More information here: [https://www.cpc-power.com/cpcarchives/index.php?page=articles&amp;amp;num=184 Multi-Mode Graphique (FR)]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CUDISP (aka CURSOR) ==&lt;br /&gt;
&lt;br /&gt;
CUDISP (Cursor Display) signal defines the hardware cursor.&lt;br /&gt;
&lt;br /&gt;
CRTC pin CUDISP is not connected to the Gate Array, so it has no effect on a barebone CPC or Plus machine.&lt;br /&gt;
&lt;br /&gt;
However, this signal is provided to the [[Connector:Expansion port]]. And it is used by the [[PlayCity]] and [[Play2CPC]] expansions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DISPTMG (aka Display Enable) ==&lt;br /&gt;
&lt;br /&gt;
DISPTMG (Display Timing) signal defines the border. When DISPTMG is &amp;quot;0&amp;quot; the border colour is output by the Gate Array to the display.&lt;br /&gt;
&lt;br /&gt;
The border has higher priority than pixels but lower priority than the black colour output when HSYNC/VSYNC are active.&lt;br /&gt;
&lt;br /&gt;
While border is active, all the CRTC counters continue to increment normally and addresses continue to be generated.&lt;br /&gt;
&lt;br /&gt;
The DISPTMG signal is composited from its 3 internal subcomponents: HBORDER (Horizontal), VBORDER (Vertical), SBORDER (Split) by using the NOR function. DISPTMG is &amp;quot;0&amp;quot; if at least one of its subcomponents is &amp;quot;1&amp;quot;. These 3 subcomponents are all independent of each other.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HBORDER ===&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, HBORDER is disabled when HCC=0 and enabled when HCC=R1.&lt;br /&gt;
&lt;br /&gt;
The exception is for CRTC2 during an HSYNC: the HCC=0 check is skipped, so HBORDER stays on.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== VBORDER ===&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, VBORDER is disabled when VCC=0 and enabled when VCC=R6.&lt;br /&gt;
&lt;br /&gt;
On CRTCs 0/1/2, the condition VCC=R6 is tested on every cycle.&lt;br /&gt;
&lt;br /&gt;
On CRTCs 3/4, the condition VCC=R6 is tested only at each new character line start (when VLC=0 and HCC=0).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SBORDER ===&lt;br /&gt;
&lt;br /&gt;
Split border is a technique similar to split rasters, except that it is handled by the CRTC instead of the [[Gate Array]].&lt;br /&gt;
&lt;br /&gt;
DISPTMG can be temporarily forced to 0 by using R8 (DISPTMG Skew) on CRTCs 0/3/4, or by setting R6=0 on CRTC 1.&lt;br /&gt;
&lt;br /&gt;
It is not possible to force DISPTMG on CRTC 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Border bytes ===&lt;br /&gt;
&lt;br /&gt;
Despite their 1MHz clock speed, CRTCs 0/2 have been observed to change state at a rate equivalent to 2MHz chips by responding to both the rising and falling edges of each clock cycle.&lt;br /&gt;
&lt;br /&gt;
==== Interline border ====&lt;br /&gt;
On CRTCs 0/2, R1&amp;gt;R0 generates one byte (0.5µs) of border at the end of the raster line. On CRTCs 1/3/4, it does not.&lt;br /&gt;
&lt;br /&gt;
If border skew is used, the border byte will skew and change into a full character-width border instead.&lt;br /&gt;
&lt;br /&gt;
==== Border conflict ====&lt;br /&gt;
If R1=0 and HCC=0, we expect HBORDER to activate as HCC=R1 and we also expect HBORDER to deactivate as HCC=0. In this situation, all CRTCs activate HBORDER.&lt;br /&gt;
&lt;br /&gt;
If R6=0 and VCC=0, we expect VBORDER to activate as VCC=R6 and we also expect VBORDER to deactivate as VCC=0. In this situation, all CRTCs activate VBORDER. On CRTC 1, even SBORDER is activated. But on CRTCs 0/2, the first raster line shows an alternation of bytes of VBORDER and displayable characters.&lt;br /&gt;
&lt;br /&gt;
To see the border bytes with your own eyes, type this BASIC line after reset:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BORDER 6:OUT &amp;amp;BC00,6:OUT &amp;amp;BD00,0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== HSYNC ==&lt;br /&gt;
&lt;br /&gt;
The HSYNC signal from the CRTC is not directly connected to the display. It is passed to the [[Gate Array]] for further modification. See its wiki page.&lt;br /&gt;
&lt;br /&gt;
While HSYNC is active, all the CRTC counters continue to increment normally and addresses continue to be generated.&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, while an HSYNC is ongoing, the condition HCC=R2 is ignored. So we cannot trigger a new HSYNC during an HSYNC.&lt;br /&gt;
&lt;br /&gt;
=== Contiguous HSYNCs ===&lt;br /&gt;
&lt;br /&gt;
On CRTC 0, two HSYNCs cannot be contiguous. They are always separated by at least 1 CRTC character. What happens is that when HSC=R3 and HCC=R2, the condition HSC=R3 takes precedence over the condition HCC=R2 and HSYNC is stopped.&lt;br /&gt;
&lt;br /&gt;
On CRTCs 1/2/3/4, HSYNCs can be contiguous.&lt;br /&gt;
&lt;br /&gt;
=== Signal delay ===&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, there is a 1µs delay in display between when the CRTC provides a video pointer, and when the Gate Array displays the corresponding 16-bit character.&lt;br /&gt;
&lt;br /&gt;
But on CRTCs 0/1/2, there is no delay for HSYNC. On CRTCs 3/4, the Amstrad engineers fixed the issue by adding a 1µs delay for the HSYNC signal to match the display signal. &lt;br /&gt;
&lt;br /&gt;
So now we have a bigger issue: on CRTCs 3/4, HSYNC occurs 1µs later than on CRTCs 0/1/2. Interrupts being dependent on HSYNC, this is a serious compatibility issue for time-sensitive code. It also explains why the CTM monitor has to be calibrated differently on CRTCs 3/4. Fortunately, the issue is easy to fix, by adjusting the HSYNC width with CRTC register 3.&lt;br /&gt;
&lt;br /&gt;
=== Discolouration effect ===&lt;br /&gt;
&lt;br /&gt;
On CRT monitors from other brands, a colour calibration can happen just after the C-HSYNC pulse.&lt;br /&gt;
&lt;br /&gt;
So even when a fully valid C-HSYNC pulse of 4µs is emitted, an HSYNC shorter than usual combined with a coloured border can induce a discolouration effect on those monitors.&lt;br /&gt;
&lt;br /&gt;
=== Screen wobbling and Fine horizontal hardware scroll ===&lt;br /&gt;
&lt;br /&gt;
These effects use invalid HSYNC signals, which are poorly supported by modern displays. However, these effects were used in commercial-era CPC games, so it's fine if you choose to use them.&lt;br /&gt;
&lt;br /&gt;
When R2 increases by 1, the screen is shifted to the left by 16 mode2 pixels.&lt;br /&gt;
&lt;br /&gt;
When R2 decreases by 1, the screen is shifted to the right by 16 mode2 pixels.&lt;br /&gt;
&lt;br /&gt;
When R3l increases by 1 (and if &amp;lt;6), the screen is shifted to the left by 8 mode2 pixels.&lt;br /&gt;
&lt;br /&gt;
When R3l decreases by 1 (and if &amp;gt;2), the screen is shifted to the right by 8 mode2 pixels.&lt;br /&gt;
&lt;br /&gt;
The shift is not instantaneous but follows a logarithmic attenuation across several raster lines. This property can be used to get even finer horizontal control by modifying R2/R3 on each raster line.&lt;br /&gt;
&lt;br /&gt;
[[Longshot]] has demonstrated [https://youtu.be/1q7RQykZoKY horizontal hardware scroll] with one-pixel precision in mode1 on all CRTCs. However, because you have to synchronize with each line, it takes a lot of CPU time if it's done in fullscreen (272 lines).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VSYNC ==&lt;br /&gt;
&lt;br /&gt;
The VSYNC signal from the CRTC is not directly connected to the display. It is passed to the [[Gate Array]] for further modification. See its wiki page.&lt;br /&gt;
&lt;br /&gt;
While VSYNC is active, all the CRTC counters continue to increment normally and addresses continue to be generated.&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, while a VSYNC is ongoing, the condition VCC=R7 is ignored. So we cannot trigger a new VSYNC during a VSYNC. &lt;br /&gt;
&lt;br /&gt;
On CRTCs 0/1/2, the sole condition to trigger a VSYNC is that VCC=R7. While on CRTCs 3/4, it is necessary to have VCC=R7 and HCC=0 and VLC=0 to trigger a VSYNC.&lt;br /&gt;
&lt;br /&gt;
=== Blocked VSYNC ===&lt;br /&gt;
&lt;br /&gt;
On CRTC 0, if R7 is modified with the value of VCC when HCC&amp;lt;2, we are in blocked VSYNC. Then, the VSYNC can no longer occur on VCC=R7 until an unblocking condition is produced (VCC or R7 update). Source: §16.4 &amp;quot;Conditions to consider&amp;quot; of the CRTC Compendium&lt;br /&gt;
&lt;br /&gt;
=== Ghost VSYNC ===&lt;br /&gt;
&lt;br /&gt;
On CRTC 2, if a VSYNC is triggered during an HSYNC, the CRTC produces a ghost VSYNC. The CRTC then counts the lines as if a VSYNC were taking place by preventing a new VSYNC from occurring, but without the VSYNC pin being enabled.&lt;br /&gt;
&lt;br /&gt;
=== PPI VSYNC ===&lt;br /&gt;
&lt;br /&gt;
The VSYNC pin of the CRTC is directly connected to bit0 of port B of the PPI. There is no delay involved.&lt;br /&gt;
&lt;br /&gt;
On Amstrad CPC (not Plus!), it is also possible to reverse the direction of PPI port B to output a &amp;quot;fake&amp;quot; VSYNC signal directly from the PPI to the Gate Array.&lt;br /&gt;
&lt;br /&gt;
As an exception, the Ghost VSYNC of CRTC 2 overpowers the Fake VSYNC.&lt;br /&gt;
&lt;br /&gt;
=== Subpixel vertical hardware scroll ===&lt;br /&gt;
&lt;br /&gt;
By tuning very precisely when the VSYNC signal is sent to the monitor,  Longshot has demonstrated [https://youtu.be/bSjRU6Wye00 vertical hardware scroll] with a precision of 1/128th of a pixel. Furthermore, subpixel vertical scrolling consumes very little CPU.&lt;br /&gt;
&lt;br /&gt;
=== Mid-VSYNC ===&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, in both interlace modes, a mid-VSYNC is generated when VCC=R7 on the even field. The VSYNC pulse starts in the middle of the raster line, at HCC=R0/2.&lt;br /&gt;
&lt;br /&gt;
As an exception, on CRTCs 3/4, if R7=0 then mid-VSYNC will instead occur on the odd field. Source: §19.7 &amp;quot;Mid-VSYNC&amp;quot; of the CRTC Compendium.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Interlace modes ==&lt;br /&gt;
&lt;br /&gt;
Note: Some details about the CRTC interlace implementations are missing in this article. Consider it as an introduction to the topic.&lt;br /&gt;
&lt;br /&gt;
[[File:CRTC Interlace modes.png]]&lt;br /&gt;
&lt;br /&gt;
For a CRTC character line with n raster lines, R9 must be set to n-1 on all CRTCs, regardless of the interlace settings. The exception is for CRTCs 0/3/4 in IVM mode, where R9 must be set to n-2.&lt;br /&gt;
&lt;br /&gt;
=== Interlace sync mode (ISM) ===&lt;br /&gt;
&lt;br /&gt;
In this mode, the same information is painted in both fields to enhance readability. Reprogramming the CRTC is not necessary.&lt;br /&gt;
&lt;br /&gt;
=== Interlace sync and video mode (IVM) ===&lt;br /&gt;
&lt;br /&gt;
In this mode, alternating lines are displayed in the even and odd field to double the resolution.&lt;br /&gt;
&lt;br /&gt;
On the even field, the CRTC displays the lines for which VLC is even. On the odd field, the CRTC displays the lines for which VLC is odd.&lt;br /&gt;
&lt;br /&gt;
It is necessary to reprogram the CRTC as if we were building a frame of 624 lines.&lt;br /&gt;
&lt;br /&gt;
CRTC 2 is the exception: R4, R5, R6, R7 do not need to be reprogrammed as it considers each character line to be a double character line.&lt;br /&gt;
&lt;br /&gt;
=== Interlace adjustment line ===&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, in both interlace modes, an additional line (the 625th line) is added automatically by the CRTC at the end of the even field. This line is added after the lines of the vertical adjustment mode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRTC registers ==&lt;br /&gt;
&lt;br /&gt;
The Internal registers of the 6845 are:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!rowspan=2|Register Index&lt;br /&gt;
!rowspan=2|Register Name&lt;br /&gt;
!colspan=3|Read/Write&lt;br /&gt;
!rowspan=2|Range&lt;br /&gt;
!rowspan=2|CPC Setting&lt;br /&gt;
!rowspan=2|Notes&lt;br /&gt;
|-&lt;br /&gt;
!CRTC 0&lt;br /&gt;
!CRTCs 1/2&lt;br /&gt;
!CRTCs 3/4&lt;br /&gt;
|-&lt;br /&gt;
|0||Horizontal Total (-1)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||00000000||63||Width of the screen, in characters. Should always be 63 (64 characters). 1 character == 1μs.&lt;br /&gt;
|-&lt;br /&gt;
|1||Horizontal Displayed||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||00000000||40||Number of characters displayed. Once horizontal character count (HCC) matches this value, DISPTMG is set to 1.&lt;br /&gt;
|-&lt;br /&gt;
|2||Horizontal Sync Position||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||00000000||46||When to start the HSync signal.&lt;br /&gt;
|-&lt;br /&gt;
|3||Horizontal and Vertical Sync Widths||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||VVVVHHHH||128+14||VSync width in scan-lines (Not present on all CRTCs, fixed to 16 lines on these) ; HSync pulse width in characters.&lt;br /&gt;
|-&lt;br /&gt;
|4||Vertical Total (-1)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||x0000000||38||Height of the screen, in characters.&lt;br /&gt;
|-&lt;br /&gt;
|5||Vertical Total Adjust||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||xxx00000||0||Measured in scanlines, can be used for smooth vertical scrolling on CPC.&lt;br /&gt;
|-&lt;br /&gt;
|6||Vertical Displayed||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||x0000000||25||Height of displayed screen in characters. Once vertical character count (VCC) matches this value, DISPTMG is set to 1.&lt;br /&gt;
|-&lt;br /&gt;
|7||Vertical Sync Position||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||x0000000||30||When to start the VSync signal, in characters.&lt;br /&gt;
|-&lt;br /&gt;
|8||Interlace and Skew||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||CCDDxxII||0||CC: Cursor Skew (Only in CRTCs 0, 3 and 4). DD: Display Skew (Only in CRTCs 0, 3 and 4). II: Interlace Mode.&lt;br /&gt;
|-&lt;br /&gt;
|9||Maximum Raster Address (aka Number of Scan Lines) (-1)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||xxx00000||7||Maximum scan line address on CPC can hold between 0 and 7, higher values' upper bits are ignored.&lt;br /&gt;
|-&lt;br /&gt;
|10||Cursor Start Raster||style=&amp;quot;text-align: center;&amp;quot;|Write||style=&amp;quot;text-align: center;&amp;quot;|Write||Read/Write||xBP00000||0||B = Blink On/Off; P = Blink Period Control (16 or 32 frames). Sets first raster row of character that cursor is on to invert.&lt;br /&gt;
|-&lt;br /&gt;
|11||Cursor End Raster||style=&amp;quot;text-align: center;&amp;quot;|Write||style=&amp;quot;text-align: center;&amp;quot;|Write||Read/Write||xxx00000||0||Sets last raster row of character that cursor is on to invert.&lt;br /&gt;
|-&lt;br /&gt;
|12||Display Start Address (High)||Read/Write||style=&amp;quot;text-align: center;&amp;quot;|Write||Read/Write||xx000000||48||On Amstrad Plus, bit7 of the printer port is controlled by bit3 of CRTC R12 (ie. bit11 of Display Start Address).&lt;br /&gt;
|-&lt;br /&gt;
|13||Display Start Address (Low)||Read/Write||style=&amp;quot;text-align: center;&amp;quot;|Write||Read/Write||00000000||0||Allows you to offset the start of screen memory for hardware scrolling, and if using memory from address &amp;amp;0000 with the firmware.&lt;br /&gt;
|-&lt;br /&gt;
|14||Cursor Address (High)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Read/Write||xx000000||0||&lt;br /&gt;
|-&lt;br /&gt;
|15||Cursor Address (Low)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Read/Write||00000000||0||&lt;br /&gt;
|-&lt;br /&gt;
|16||Light Pen Address (High)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Read||xx000000||||On CRTC1, bit6 of Status register goes to 0 when R16 is read.&lt;br /&gt;
|-&lt;br /&gt;
|17||Light Pen Address (Low)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Read||00000000||||On CRTC1, bit6 of Status register goes to 0 when R17 is read.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Screen size ===&lt;br /&gt;
&lt;br /&gt;
We can calculate the screen size in words by multiplying R1 x R6 x (R9+1). And then multiplying the result by 2 to have the screen size in bytes.&lt;br /&gt;
&lt;br /&gt;
With the default CRTC values, we obtain 40 x 25 x (7+1) x 2 = 16000 bytes.&lt;br /&gt;
&lt;br /&gt;
So we can observe that only part of the 16384 bytes (=16KB) page of VRAM is actually displayed on screen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Register access ===&lt;br /&gt;
&lt;br /&gt;
On CRTCs 0/1/2, if a Write Only register is read from, &amp;quot;0&amp;quot; is returned. The register accessing scheme on CRTCs 3/4 makes it impossible to happen.&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, only the 5 least significant bits of the selected register number are considered to write to a register. The other bits are ignored.&lt;br /&gt;
&lt;br /&gt;
On CRTCs 0/1/2, only the 5 least significant bits of the selected register number are considered to read a register:&lt;br /&gt;
* On CRTCs 0/2, registers 18-31 read as 0&lt;br /&gt;
* On CRTC 1, registers 18-30 read as 0, register 31 reads as &amp;amp;FF&lt;br /&gt;
&lt;br /&gt;
On CRTCs 3/4, only the 3 least significant bits of the selected register number are considered to read a register, according to the following table:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Nb&lt;br /&gt;
!Register&lt;br /&gt;
!Definition&lt;br /&gt;
|-&lt;br /&gt;
|0||R16||Light Pen Address (High)&lt;br /&gt;
|-&lt;br /&gt;
|1||R17||Light Pen Address (Low)&lt;br /&gt;
|-&lt;br /&gt;
|2||R10||Cursor Start Raster&lt;br /&gt;
|-&lt;br /&gt;
|3||R11||Cursor End Raster&lt;br /&gt;
|-&lt;br /&gt;
|4||R12||Display Start Address (High)&lt;br /&gt;
|-&lt;br /&gt;
|5||R13||Display Start Address (Low)&lt;br /&gt;
|-&lt;br /&gt;
|6||R14||Cursor Address (High)&lt;br /&gt;
|-&lt;br /&gt;
|7||R15||Cursor Address (Low)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRTC register differences ==&lt;br /&gt;
&lt;br /&gt;
CRTC types 3 and 4 are identical in every way, except for the unlocking mechanism, split screen, hardware soft scroll and 8-bit printer port functionalities specific to the [[ASIC]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== R10/R11 on ASIC/Pre-ASIC  ===&lt;br /&gt;
&lt;br /&gt;
The cursor raster registers R10/R11 act as status registers when read on CRTCs 3/4. They behave as normal cursor raster registers upon write.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! R10 - Bit number&lt;br /&gt;
! Bit value&lt;br /&gt;
! Event&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|1&lt;br /&gt;
|C0=R0&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|C0=R0/2&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|C0=R1-1 (if R0&amp;gt;=R1)&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|0&lt;br /&gt;
|C0=R2&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|C0=R2+R3&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|0&lt;br /&gt;
1&lt;br /&gt;
|R3h&amp;gt;0 : C0=0..R0 on the line R3h from Vsync (C4=R7)&lt;br /&gt;
R3h=0 : C0=0..R0 over 15 lines from Vsync (C4=R7)&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|1&lt;br /&gt;
|Always 1&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|0&lt;br /&gt;
0&lt;br /&gt;
|C0=0..R0-1 : VMA.Lsb=0xFF&lt;br /&gt;
C0=R0 : VMA'.Lsb=0x00 (same cond if C0=R0=0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! R11 - Bit number&lt;br /&gt;
! Bit value&lt;br /&gt;
! Event&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|C4=R4 and C9=R9 and C0=R0 : Last char of screen&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|C4=R6-1 and C9=R9 and C0=R0 : Last char displayed&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|C4=R7-1 and C9=R9 and C0=R0 : Last char before Vsync&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|0/1&lt;br /&gt;
|Timer 16 CRTC frames&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|Always 1&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|0&lt;br /&gt;
|C9=R9 : C0=0 to R0&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|0&lt;br /&gt;
|Always 0&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|1&lt;br /&gt;
|(C9=R9 and C0=R0) or (C9=0 and C0=0 to R0-1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Horizontal and Vertical Sync (R3) ===&lt;br /&gt;
&lt;br /&gt;
Type 0:&lt;br /&gt;
*Bits 7..4 define Vertical Sync Width. If 0 is programmed, this gives 16 lines of VSYNC.&lt;br /&gt;
*Bits 3..0 define Horizontal Sync Width. If 0 is programmed, no HSYNC is generated (and therefore, no interrupts).&lt;br /&gt;
&lt;br /&gt;
Type 1:&lt;br /&gt;
*Bits 7..4 are ignored. Vertical Sync is fixed at 16 lines.&lt;br /&gt;
*Bits 3..0 define Horizontal Sync Width. If 0 is programmed, no HSYNC is generated (and therefore, no interrupts).&lt;br /&gt;
&lt;br /&gt;
Type 2:&lt;br /&gt;
*Bits 7..4 are ignored. Vertical Sync is fixed at 16 lines.&lt;br /&gt;
*Bits 3..0 define Horizontal Sync Width. If 0 is programmed, this gives a HSYNC width of 16.&lt;br /&gt;
&lt;br /&gt;
Types 3/4:&lt;br /&gt;
*Bits 7..4 define Vertical Sync Width. If 0 is programmed, this gives 16 lines of VSYNC.&lt;br /&gt;
*Bits 3..0 define Horizontal Sync Width. If 0 is programmed, this gives a HSYNC width of 16.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Interlace and Skew (R8) ===&lt;br /&gt;
&lt;br /&gt;
Types 0/3/4:&lt;br /&gt;
*Bits 7..6 define the skew (delay) of the CUDISP signal (00 = Non-skew ; 01 = One-character skew ; 10 = Two-character skew ; 11 = Non-output).&lt;br /&gt;
*Bits 5..4 define the skew (delay) of the DISPTMG signal (00 = Non-skew ; 01 = One-character skew ; 10 = Two-character skew ; 11 = Non-output).&lt;br /&gt;
*Bits 3..2 are ignored.&lt;br /&gt;
*Bits 1..0 define the interlace mode (00 = No Interlace ; 01 = Interlace Sync ; 10 = No Interlace ; 11 = Interlace Sync and Video).&lt;br /&gt;
&lt;br /&gt;
Types 1/2:&lt;br /&gt;
*Bits 7..2 are ignored.&lt;br /&gt;
*Bits 1..0 define the interlace mode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== R31 on Type 1 ===&lt;br /&gt;
&lt;br /&gt;
R31 is described in the UM6845R documentation as &amp;quot;Dummy Register&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Its use is described in the documentation for the Rockwell R6545 in combination with R18, R19 and R8 and the Status Register.&lt;br /&gt;
&lt;br /&gt;
In the UM6845R it appears to have no effect. Reading and writing does nothing. Reading it returns &amp;amp;FF.&lt;br /&gt;
&lt;br /&gt;
R31 doesn't exist on CRTCs 0/2/3/4.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Status register on Type 1 ===&lt;br /&gt;
&lt;br /&gt;
The UM6845R has a status register that can be read using port &amp;amp;BExx.&lt;br /&gt;
&lt;br /&gt;
Bit 6 is set to 1 if there is a strobe input to the /LPEN signal. It is cleared to 0 when either R17 or R16 (LPEN address) of the CRTC are read. It signals there is a valid LPEN input. On Kevin Thacker's CPC with UM6845R, it is triggered at power on, R17 and R16 have the values 0 when read.&lt;br /&gt;
&lt;br /&gt;
Bit 5 is set to 1 when CRTC is in &amp;quot;vertical blanking&amp;quot;. Vertical blanking is when the vertical border is active. i.e. VCC&amp;gt;=R6. &lt;br /&gt;
&lt;br /&gt;
It is cleared when the frame is started (VCC=0). It is not directly related to the DISPTMG output (used by the CPC to display the border colour) because that output is a combination of horizontal and vertical blanking.&lt;br /&gt;
This bit will be 0 when pixels are being displayed.&lt;br /&gt;
&lt;br /&gt;
All the other bits read as 0 and don't have any function.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRTC Type Detection ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10 MODE 1:' Reinitialize screen&lt;br /&gt;
20 OUT &amp;amp;BC00,31:IF INP(&amp;amp;BF00)=255 THEN PRINT&amp;quot;crtc 1&amp;quot;:END&lt;br /&gt;
30 OUT &amp;amp;BC00,12:IF INP(&amp;amp;BF00)=0 THEN PRINT&amp;quot;crtc 2&amp;quot;:END&lt;br /&gt;
40 OUT &amp;amp;BC00,20:IF INP(&amp;amp;BF00)=0 THEN PRINT&amp;quot;crtc 0&amp;quot;:END&lt;br /&gt;
50 PRINT&amp;quot;crtc 3/4&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Distinguishing between CRTCs 3 and 4 can be done by trying to [[Programming:Unlocking ASIC|unlock the ASIC]] or by testing the [[8255|PPI chip]]. On ASIC, if PPI Port B is set as output it will behave the same as input.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRTC Timing Diagrams ==&lt;br /&gt;
[[File:CRTC Timing Diagram Rockwell.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:CRTC timing small.gif]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Internal Counters ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Counter name&lt;br /&gt;
! Abbr&lt;br /&gt;
! Alternate name&lt;br /&gt;
! Compared with&lt;br /&gt;
! Comment&lt;br /&gt;
|-&lt;br /&gt;
|Horizontal Character Counter&lt;br /&gt;
|HCC&lt;br /&gt;
|C0&lt;br /&gt;
|R0, R1, R2&lt;br /&gt;
| Increments on every clock cycle&lt;br /&gt;
|-&lt;br /&gt;
|Horizontal Sync Counter&lt;br /&gt;
|HSC&lt;br /&gt;
|C3l&lt;br /&gt;
|R3l&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Vertical Character Counter&lt;br /&gt;
|VCC&lt;br /&gt;
|C4&lt;br /&gt;
|R4, R6, R7&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Vertical Sync Counter&lt;br /&gt;
|VSC&lt;br /&gt;
|C3h&lt;br /&gt;
|R3h&lt;br /&gt;
|R3h is fixed to 0 on CRTCs 1/2. This gives 16 lines of VSYNC&lt;br /&gt;
|-&lt;br /&gt;
|Vertical Line Counter&lt;br /&gt;
|VLC&lt;br /&gt;
|C9&lt;br /&gt;
|R9, R10, R11&lt;br /&gt;
|If not in IVM mode, this counter is exposed on CRTC pins RA0..RA4&lt;br /&gt;
|-&lt;br /&gt;
|Vertical Total Adjust Counter&lt;br /&gt;
|VTAC&lt;br /&gt;
|C5&lt;br /&gt;
|R5&lt;br /&gt;
|This counter does not exist on CRTCs 0/3/4. C9 is reused instead&lt;br /&gt;
|-&lt;br /&gt;
|Frame Counter&lt;br /&gt;
|FC&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|Used to alternate frames in interlace and for CRTC cursor blinking&lt;br /&gt;
|-&lt;br /&gt;
|Memory Address&lt;br /&gt;
|MA&lt;br /&gt;
|&lt;br /&gt;
|R14/R15&lt;br /&gt;
|This counter is exposed on CRTC pins MA0..MA13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When IVM mode is activated, VLC continues to increment normally. However, RA is not identical to VLC anymore. Instead, VLC is considered shifted left by 1 bit, and bit0 represents the parity of the field (even/odd).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRTC counter differences ==&lt;br /&gt;
&lt;br /&gt;
=== MA buffering ===&lt;br /&gt;
&lt;br /&gt;
No matter its type, the CRTC never buffers any of its counters, except for the video pointer MA. The buffer MA' is needed because MA has to be reloaded at the beginning of every raster line.&lt;br /&gt;
&lt;br /&gt;
At the end of the display of the last raster line of each character line (ie. when HCC=R1 and VLC=R9), MA' captures the current value of MA.&lt;br /&gt;
&lt;br /&gt;
CRTC 2 is the exception: at the end of the display of the last raster line of the frame, MA' captures R12/R13 instead of MA.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MA reload ===&lt;br /&gt;
&lt;br /&gt;
On CRTCs 0/3/4, at the beginning of the first raster line of the frame, MA and MA' are loaded with R12/R13. Otherwise, MA is loaded with MA'.&lt;br /&gt;
&lt;br /&gt;
On CRTC 2, at the beginning of every raster line of the frame (including the first one), MA is loaded with MA'.&lt;br /&gt;
&lt;br /&gt;
On CRTC 1, at the beginning of every raster line of the first character line of the frame (ie. when VCC=0), MA is loaded with R12/R13 instead of MA'. '''This is a major source of incompatibility if the programmer does not take care.''' In demos and games, to be compatible with all CRTCs, program R12/R13 only when VCC≠0. This will then take effect at the next CRTC frame start.&lt;br /&gt;
&lt;br /&gt;
==== Rupture For Dummies (R5 bug) ====&lt;br /&gt;
&lt;br /&gt;
CRTC 1 has a bug that occurs when R5 is updated with a non-zero value when HCC=R0 and VLC≠R9, but only when R5 was previously 0. This changes the MA update source to R12/R13 instead of MA'. The CRTC then loads R12/R13 into MA at the beginning of every scanline, regardless of the VCC value.&lt;br /&gt;
&lt;br /&gt;
This R5 bug also messes with the frame parity management. However, it is possible to fix the parity of the frame by activating/deactivating the IVM interlace mode.&lt;br /&gt;
&lt;br /&gt;
The vertical adjustment operates normally after the RFD is triggered. If vertical adjustment is not needed, R5 can be reset at any time after the RFD is activated.&lt;br /&gt;
&lt;br /&gt;
This effect is used in the [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=19308 DSC4 demo].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== VSC (C3h) overflow ===&lt;br /&gt;
&lt;br /&gt;
During a VSYNC on CRTCs 0/3/4, if VSYNC Width (R3h) is changed with a value less than the current VSC, then VSC overflows and will count up to its maximum value (15) before looping back and counting up again until it reaches the new value of R3h.&lt;br /&gt;
&lt;br /&gt;
On CRTCs 1/2, the VSYNC width is fixed to 16 characters. It is not possible to modify it. Therefore, VSC cannot be overflowed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HSC (C3l) overflow ===&lt;br /&gt;
&lt;br /&gt;
During an HSYNC, if HSYNC Width (R3l) is changed with a value less than the current HSC, then HSC overflows and will count up to its maximum value (15) before looping back and counting up again until it reaches the new value of R3l.&lt;br /&gt;
&lt;br /&gt;
The only exception is for CRTC 1 with a value of 0, which immediately cancels the current HSYNC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== VCC (C4) overflow ===&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, if Vertical Total (R4) is changed with a value less than VCC, then:&lt;br /&gt;
* if this update was done when VCC &amp;lt; R4, then VCC overflows and will count up to its maximum value (127) before looping back and counting up again until it reaches the new value of R4&lt;br /&gt;
* if this update was done when VCC = R4, the current character line was already decided to be the last one of the current frame. No update to R4 will make the CRTC change its mind for the current frame&lt;br /&gt;
&lt;br /&gt;
The only exception when VCC = R4 is for CRTC 1 with a value of 0, which will cause VCC to overflow.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HCC (C0) overflow ===&lt;br /&gt;
&lt;br /&gt;
If Horizontal Total (R0) is changed with a value less than the current HCC, then:&lt;br /&gt;
* on CRTCs 0/1/2, HCC overflows and will count up to its maximum value (255) before looping back and counting up again until it reaches the new value of R0&lt;br /&gt;
* on CRTCs 3/4, the current line is considered finished and HCC is immediately reset to 0 on the next line&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== VLC (C9) overflow ===&lt;br /&gt;
&lt;br /&gt;
If Number of Scan Lines (R9) is changed with a value less than the current VLC, then:&lt;br /&gt;
* on CRTCs 0/1/2, VLC overflows and will count up to its maximum value (31) before looping back and counting up again until it reaches the new value of R9&lt;br /&gt;
* on CRTCs 3/4, the current line is considered the last one of this CRTC character and VLC will reset to 0 on the next line&lt;br /&gt;
&lt;br /&gt;
As an exception, on CRTCs 0/2, if VLC is modified during the last frame line, then the updated value will not be considered for the current frame.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== VTAC (C5/C9) overflow ===&lt;br /&gt;
&lt;br /&gt;
During vertical adjustment mode, if Vertical Total Adjust (R5) is changed with a value less than the current VTAC, then:&lt;br /&gt;
* on CRTCs 0/1/2, VTAC overflows and will count up to its maximum value (31) before looping back and counting up again until it reaches the new value of R5&lt;br /&gt;
* on CRTCs 3/4, the current line is considered the last one of the current frame and vertical adjustment will end&lt;br /&gt;
&lt;br /&gt;
As an exception, on CRTCs 0/2, if VTAC is modified during the last frame line, then the updated value will not be considered for the current frame.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Vertical Adjustment mode ===&lt;br /&gt;
&lt;br /&gt;
On CRTCs 3/4, this mode does not increment VCC, so VCC remains equal to R4.&lt;br /&gt;
&lt;br /&gt;
On CRTC 0, this mode increments VCC, causing it to exceed R4, but this increment occurs only once.&lt;br /&gt;
&lt;br /&gt;
On CRTCs 1/2, this mode increments VCC, causing it to exceed R4, and this increment can happen multiple times depending on the values of R5 and R9.&lt;br /&gt;
&lt;br /&gt;
Also, only CRTCs 1/2 have a dedicated C5 counter. On CRTCs 0/3/4, during Vertical Adjustment, C9 has to fullfil the VTAC role which means that it cannot fullfil its VLC role. This impacts address generation as R9 is not considered anymore.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Counter freezes ===&lt;br /&gt;
&lt;br /&gt;
On CRTCs 1/2/3/4, R0 accepts all values without causing any problems for counters.&lt;br /&gt;
&lt;br /&gt;
On CRTC 0:&lt;br /&gt;
* Setting R0 to 0 will cause numerous issues that stem from the fact that VLC is frozen. As HCC never reaches 1, the logic that increments VLC is never triggered.&lt;br /&gt;
* The logic that triggers vertical adjustment is broken if R0&amp;lt;2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Block Diagrams ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Hitachi&lt;br /&gt;
!UMC&lt;br /&gt;
!Motorola&lt;br /&gt;
|-&lt;br /&gt;
|[[File:CRTC Block Diagram.png|Hitachi]]&lt;br /&gt;
|[[File:UMC CRTC Block Diagram.png|UMC]]&lt;br /&gt;
|[[File:Motorola CRTC Block Diagram.png|Motorola]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRTC-II (aka Type 5) ==&lt;br /&gt;
&lt;br /&gt;
The [[Media:CRTC-5-HD6345.pdf|HD6345 datasheet]] states it is upward-compatible with the HD6845S in pin and software.&lt;br /&gt;
&lt;br /&gt;
This chip was never used by Amstrad. However, some CPC enthusiasts have replaced the original CRTC chip in their CPC with this one.&lt;br /&gt;
&lt;br /&gt;
With this chip, split-screen becomes easy: [https://thecheshirec.at/2024/05/20/des-splitscreens-en-basic-sur-crtc5/ Split-screen in BASIC]. And 3 new graphics modes (160x100x16c, 320x100x4c, 640x100x2c) are available: [https://thecheshirec.at/2024/11/10/trois-nouveaux-modes-video-grace-au-crtc-5/ New graphics modes in BASIC].&lt;br /&gt;
&lt;br /&gt;
This is the cheapest way to upgrade the CPC's graphics capabilities, costing only 1.29€. [https://thecheshirec.at/2024/05/19/des-crtc5-a-129e/ Source]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Datasheets ==&lt;br /&gt;
&lt;br /&gt;
==== Used by Amstrad ====&lt;br /&gt;
* [[Media:hd6845.hitachi.pdf|HD6845S (Hitachi)]] aka Type 0&lt;br /&gt;
* [[Media:UM6845-UMC.pdf|UM6845 (UMC)]] aka Type 0&lt;br /&gt;
* [[Media:Um6845r.umc.pdf|UM6845R (UMC)]] aka Type 1&lt;br /&gt;
* [[Media:Mc6845.motorola.pdf|MC6845 (Motorola)]] aka Type 2&lt;br /&gt;
* [[Media:CPC_Plus_Asic_Schematic.GIF|AMS40489 (Amstrad)]] aka Type 3 ([[ASIC]])&lt;br /&gt;
* [[AMS40226 (Amstrad)]] aka Type 4 (Pre-ASIC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Unused clones ====&lt;br /&gt;
* [[CM607P]] a Bulgarian clone made in Pravetz factory. It is used in the [[Aleste 520EX]].&lt;br /&gt;
* [[Media:hd6845.hitachi.pdf|HD6845R]] by Hitachi. According to Kevin Thacker, the [[KC Compact]] used HD6845R only.&lt;br /&gt;
* [[Media:UM6845E-UMC.pdf|UM6845E]] by UMC&lt;br /&gt;
* [[Media:Mc6845.pdf|MC6845-1]] by Motorola&lt;br /&gt;
* [[Media:F6845.pdf|F6845]] by Fairchild&lt;br /&gt;
* [[Media:EF6845P.pdf|EF6845]] by Thomson Semiconductors&lt;br /&gt;
* [[Media:VL6845 VTi.pdf|VL6845]] by VTi&lt;br /&gt;
* [[Media:C6845 CRTC (CAST).pdf|C6845]] by Cast&lt;br /&gt;
* [[Media:MB89321B FUJ.pdf|MB89321B]] by Fujitsu. It is pin-compatible with the 6845&lt;br /&gt;
* [[Media:MB89321A datasheet CRTC.pdf|MB89321A]] by Fujitsu. Enhanced version that adds smooth scroll, screen partitioning, independent scrolling of screen partitions, and other convenient features&lt;br /&gt;
* [[Media:Mos 6545-1 crtc.pdf|MOS 6545]] (MOS, Rockwell, Synertek) is pin-compatible with the 6845. Its differences are found in the R8 register.&lt;br /&gt;
* [https://www.cpcwiki.eu/forum/other-retro/interesting-discussion-about-the-c128-s-cpm-poor-performance/msg223058/#msg223058 MOS 8563] It is an evolution of the 6545/6845 CRTC chip, with blitter abilities to autonomously perform block memory copies within its dedicated video RAM.&lt;br /&gt;
* [https://github.com/hoglet67/BeebFpga/blob/dev/src/common/mc6845.vhd BeebFpga] [https://github.com/MiSTer-devel/Amstrad_MiSTer/blob/master/rtl/UM6845R.v MiSTer] [https://opencores.org/websvn/filedetails?repname=System09&amp;amp;path=%2FSystem09%2Ftrunk%2Frtl%2FVHDL%2Fcrtc6845.vhd OpenCores] Verilog/VHDL implementations of the 6845&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tools about CRTC ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.cpcwiki.eu/imgs/9/99/Elmar_Krieger-SPECIAL_EFFECTS.dsk  some BASIC tools to detect CRTC types 0-1-2 and show some effects] by [[Elmar Krieger]] (DSK for Emulators)&lt;br /&gt;
* [[File:Shaker26.dsk]] Shaker - Suite of CRTC tests associated with the CPC CRTC compendium (many of them will not work correctly on emulators and that was the purpose of the tests, to help create more compatible emulation)&lt;br /&gt;
* [[File:Shaker addon.dsk]] Shaker Add-On (Pixel 1 Hard Scroll / Vertical Rupture all Crtc)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/6845 Wikipedia on the CRTC]&lt;br /&gt;
* [[Media:ACCC1.8-EN.pdf]] CPC CRTC Compendium - Latest (04/2024!) document containing in-depth info about CRTC programming on CPC.&lt;br /&gt;
* [http://www.grimware.org/doku.php/documentations/devices/crtc CRTC documentation from Grimware]&lt;br /&gt;
* [http://quasar.cpcscene.net/doku.php?id=assem:crtc Quasar CRTC documentation (in french)]&lt;br /&gt;
* [https://pulkomandy.github.io/shinra.github.io/crtc.html PulkoMandy's table] [https://www.theoddys.com/acorn/the_6845_crtc/6845%20Variants.xlsx Oddy's table] Differences between CRTC types&lt;br /&gt;
* [[Media:Dossier Rupture(Gozeur Paradox).pdf]]&lt;br /&gt;
* [[Media:Dossier CRTC(Ramlaid Mortel).pdf]] Les entrailles du CRTC&lt;br /&gt;
* [https://thecheshirec.at/tag/crtc6845/ Leçons CRTC (CheshireCat)]&lt;br /&gt;
* [[Media:CRTC Compendium Podcast.mp3]] The CRTC Compendium digested in podcast format&lt;br /&gt;
* [https://martin.hinner.info/vga/pal.html PAL video timing specification]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related pages==&lt;br /&gt;
&lt;br /&gt;
*[[Gate Array]]&lt;br /&gt;
&lt;br /&gt;
*[[ASIC]]&lt;br /&gt;
&lt;br /&gt;
*[[Video modes]]&lt;br /&gt;
&lt;br /&gt;
*[[Synchronising with the CRTC and display]] : technic and details on the relationship between Gate Array and CRTC.&lt;br /&gt;
&lt;br /&gt;
*[[VIDI digitizer]] This extension contains its own CRTC chip&lt;br /&gt;
&lt;br /&gt;
[[Category:Hardware]] [[Category:CPC Internal Components]] [[Category:Electronic Component]] [[Category:Programming]] [[Category:Datasheet]] [[Category:Graphic]]&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=File:CRTC_Type_1.png&amp;diff=126049</id>
		<title>File:CRTC Type 1.png</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=File:CRTC_Type_1.png&amp;diff=126049"/>
				<updated>2025-05-18T21:16:09Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=CRTC&amp;diff=126048</id>
		<title>CRTC</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=CRTC&amp;diff=126048"/>
				<updated>2025-05-18T20:53:51Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:CRTC Type 0.jpg|thumb|right|CRTC Type 0]]&lt;br /&gt;
[[File:CRTC6845-Type2.jpg|thumb|right|CRTC Type 2]]&lt;br /&gt;
&lt;br /&gt;
The 6845 '''CRTC''' (Cathode Ray Tube Controller) chip was created by Motorola in 1977. It works with the [[Gate Array]] to generate the video signal on the Amstrad CPC.&lt;br /&gt;
&lt;br /&gt;
This chip is also used in the [[BBC Micro]], [[Lynx|Camputers Lynx]], [[EG2000 Colour Genie]], [[Sharp X1]], [[MicroBee]], [[Commodore PET]] and the early graphics cards (MDA, Hercules, CGA, Plantronics Colorplus) for [[IBM PC]]. And it is found in some [https://www.msx.org/wiki/Hitachi_HD6845 MSX1 expansions], providing an 80-column text mode.&lt;br /&gt;
&lt;br /&gt;
It's important to note that the CRTC chip is primarily designed for character-based displays. It explains why, on the Amstrad CPC, the video memory is organized into a grid of characters rather than a purely linear bitmap.&lt;br /&gt;
&lt;br /&gt;
NOTES: &lt;br /&gt;
* This document describes the functionality in terms of the CPC with its separate CRTC and Gate-Array. The Plus has both integrated into the same IC, but could be considered to have two functional blocks, one for CRTC and one for Gate-Array. In this document the term 'Gate-Array' is used, but this also applies to the ASIC.&lt;br /&gt;
* Much information has been drawn from the [https://shaker.logonsystem.eu/ CRTC Compendium] documentation. For more details, timing diagrams, code examples, coding tips, and more, refer to that documentation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The 6845 Cathode Ray Tube Controller (CRTC) is a programmable IC used to generate video displays. This IC is used in a variety of computers including the Amstrad CPC, Amstrad Plus and KC Compact. &lt;br /&gt;
&lt;br /&gt;
The CRTC is a simple chip. It is made up of counters and equality operators, tied by simple logic. All the complexity stems from its multiple independent implementations with their subtle differences.&lt;br /&gt;
&lt;br /&gt;
The CRTC was a common part available from many different manufacturers. During the life of the CPC, Amstrad sourced the CRTC from various manufacturers. &lt;br /&gt;
&lt;br /&gt;
All ICs used were based on the same design but have a different implementation. As a result they do not operate identically in all situations. This document highlights these differences. &lt;br /&gt;
&lt;br /&gt;
This table lists the known ICs used, with their part number, manufacturer and type number. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Part number&lt;br /&gt;
!Manufacturer&lt;br /&gt;
!Type number (note 3)&lt;br /&gt;
|-&lt;br /&gt;
|HD6845S||Hitachi||0&lt;br /&gt;
|-&lt;br /&gt;
|UM6845||UMC||0&lt;br /&gt;
|-&lt;br /&gt;
|UM6845R||UMC||1&lt;br /&gt;
|-&lt;br /&gt;
|MC6845||Motorola||2&lt;br /&gt;
|-&lt;br /&gt;
|AMS40489||Amstrad||3 (note 1)&lt;br /&gt;
|-&lt;br /&gt;
|AMS40226||Amstrad||4 (note 2)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''NOTES''' &lt;br /&gt;
&lt;br /&gt;
1. The CRTC functionality is integrated into the CPC+ ASIC. This type exists only in the 464 Plus, 6128 Plus and GX4000. &lt;br /&gt;
&lt;br /&gt;
2. This type exists in &amp;quot;cost-down&amp;quot; CPC464 and CPC6128 systems. In the &amp;quot;cost-down&amp;quot; the CRTC functionality is integrated into a single ASIC IC. This ASIC is often refered to as the &amp;quot;Pre-ASIC&amp;quot; because it preceeded the CPC+ ASIC. The CRTC functionality of the Pre-ASIC is almost identical to the CRTC within the ASIC.&lt;br /&gt;
 &lt;br /&gt;
3. In the Amstrad community each 6845 implementation has been assigned a type number. This type identifies a group of implementations which operate in exactly the same way. The type number system was originally used by demo programmers. &lt;br /&gt;
&lt;br /&gt;
It is possible to detect the 6845 present using software methods, and this is done to: &lt;br /&gt;
&lt;br /&gt;
* warn that the software was not designed for the detected 6845 and may function incorrectly&lt;br /&gt;
* to adapt the software so that it will run with the detected 6845 &lt;br /&gt;
* In most cases, the type of the detected 6845 is reported&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Programming==&lt;br /&gt;
&lt;br /&gt;
The 6845 is selected when bit 14 of the I/O port address is set to &amp;quot;0&amp;quot;. Bit 9 and 8 of the I/O port address define the function to access. The remaining bits can be any value, but it is adviseable to set these to &amp;quot;1&amp;quot; to avoid conflict with other devices in the system.&lt;br /&gt;
&lt;br /&gt;
The recommended I/O port addresses are:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!I/O port address&lt;br /&gt;
!/CS (A14)&lt;br /&gt;
!R/W (A9)&lt;br /&gt;
!RS (A8)&lt;br /&gt;
!Function&lt;br /&gt;
!Read/Write&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;BCxx||0||0||0||Select 6845 register||Write only&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;BDxx||0||0||1||Write to selected internal 6845 register||Write only&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;BExx||0||1||0||&lt;br /&gt;
* CRTCs 0/2: —&lt;br /&gt;
* CRTC 1: Read Status Register&lt;br /&gt;
* CRTCs 3/4: Read from selected internal 6845 register&lt;br /&gt;
||Read only&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;BFxx||0||1||1||Read from selected internal 6845 register||Read only&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The CRTC is not connected to the CPU's RD and WR pins, so it cannot detect the bus's I/O direction. Therefore, executing an IN instruction to the select or write functions causes the CRTC to write the unpredictable data provided by the high-impedance bus to its registers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Z80 I/O access timings ===&lt;br /&gt;
&lt;br /&gt;
The clock provided to the CRTC by the ASIC/Pre-ASIC is phase-shifted compared to the one provided by the Gate Array.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! Instructions !! Duration !! I/O CRTCs 0/1/2 !! I/O CRTCs 3/4&lt;br /&gt;
|-&lt;br /&gt;
| OUT (C),r8 || 4 µsec || '''3rd µsec''' || 4th µsec&lt;br /&gt;
|-&lt;br /&gt;
| OUT (C),0 || 4 µsec || '''3rd µsec''' || 4th µsec&lt;br /&gt;
|-&lt;br /&gt;
| OUT (n),A || 3 µsec || 3rd µsec || 3rd µsec&lt;br /&gt;
|-&lt;br /&gt;
| OUTI || 5 µsec || 5th µsec || 5th µsec&lt;br /&gt;
|-&lt;br /&gt;
| OUTD || 5 µsec || 5th µsec || 5th µsec&lt;br /&gt;
|-&lt;br /&gt;
| IN r8,(C) || 4 µsec || 4th µsec || 4th µsec&lt;br /&gt;
|-&lt;br /&gt;
| INI || 5 µsec || '''4th µsec''' || '''4th µsec'''&lt;br /&gt;
|-&lt;br /&gt;
| IND || 5 µsec || '''4th µsec''' || '''4th µsec'''&lt;br /&gt;
|-&lt;br /&gt;
| IN A,(n) || 3 µsec || 3rd µsec || 3rd µsec&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Video Memory Address (VMA)==&lt;br /&gt;
&lt;br /&gt;
The VMA of the [[Gate Array]] is constructed from the CRTC MA and RA signals:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Video Memory Address&lt;br /&gt;
!Signal source&lt;br /&gt;
!Signal name&lt;br /&gt;
|-&lt;br /&gt;
|A15||6845||MA13 &lt;br /&gt;
|-&lt;br /&gt;
|A14||6845||MA12&lt;br /&gt;
|-&lt;br /&gt;
|A13||6845||'''RA2'''&lt;br /&gt;
|-&lt;br /&gt;
|A12||6845||'''RA1'''&lt;br /&gt;
|-&lt;br /&gt;
|A11||6845||'''RA0'''&lt;br /&gt;
|-&lt;br /&gt;
|A10||6845||MA9 &lt;br /&gt;
|-&lt;br /&gt;
|A9||6845||MA8 &lt;br /&gt;
|-&lt;br /&gt;
|A8||6845||MA7 &lt;br /&gt;
|-&lt;br /&gt;
|A7||6845||MA6 &lt;br /&gt;
|-&lt;br /&gt;
|A6||6845||MA5 &lt;br /&gt;
|-&lt;br /&gt;
|A5||6845||MA4 &lt;br /&gt;
|-&lt;br /&gt;
|A4||6845||MA3 &lt;br /&gt;
|-&lt;br /&gt;
|A3||6845||MA2 &lt;br /&gt;
|-&lt;br /&gt;
|A2||6845||MA1 &lt;br /&gt;
|-&lt;br /&gt;
|A1||6845||MA0&lt;br /&gt;
|-&lt;br /&gt;
|A0||Gate-Array||CCLK&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
CRTC generates the address, Gate Array reads the data and converts it to pixels based on its current graphics mode and palette.&lt;br /&gt;
&lt;br /&gt;
CRTC pins RA3, RA4, MA10, MA11 are not connected on CPC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Overscan bits ===&lt;br /&gt;
&lt;br /&gt;
It is possible to use 32KB screen size (used for [[Programming:Overscan|overscan]]) by setting bits 11 and 10 of Register 12 both to 1. Bits MA11 and MA10 of the address generated by the CRTC are not written on the address bus to access video memory; settings both bits to 1 is the only way to cause a carry to bit MA12 when address pass over the end of current video page to change the memory address to the next video page.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ CRTC Display Start Address&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;8&amp;quot; | Register 12&lt;br /&gt;
! colspan=&amp;quot;8&amp;quot; | Register 13&lt;br /&gt;
|-&lt;br /&gt;
! 15 !! 14 !! 13 !! 12 !! 11 !! 10 !! 9 !! 8&lt;br /&gt;
! 7 !! 6 !! 5 !! 4 !! 3 !! 2 !! 1 !! 0&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Unused&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Video Page&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Page Size&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot; | Start Address (1024 positions)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;white-space: nowrap;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-right: 32px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bit 13 !! Bit 12 !! Video Page&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0 || 0000 - 3FFF&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1 || 4000 - 7FFF&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0 || 8000 - BFFF&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1 || C000 - FFFF&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bit 11 !! Bit 10 !! Page Size&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0 || 16KB&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1 || 16KB&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0 || 16KB&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1 || '''32KB'''&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Coarse hardware scrolling ===&lt;br /&gt;
&lt;br /&gt;
The start address can be manipulated to achieve horizontal and/or vertical hardware scrolling:&lt;br /&gt;
&lt;br /&gt;
*To move right: &amp;lt;code&amp;gt;start_address := start_address + 1&amp;lt;/code&amp;gt;&lt;br /&gt;
*To move left: &amp;lt;code&amp;gt;start_address := start_address - 1&amp;lt;/code&amp;gt;&lt;br /&gt;
*To move down: &amp;lt;code&amp;gt;start_address := start_address + R1&amp;lt;/code&amp;gt;&lt;br /&gt;
*To move up: &amp;lt;code&amp;gt;start_address := start_address - R1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
However, it is a position in word (16 bits), not in byte. So, the screen will move two bytes at a time horizontally. Also, the precision will be one CRTC character vertically.&lt;br /&gt;
&lt;br /&gt;
The first game that used R12/R13 for both horizontal and vertical hardware scrolling is [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1839 Roland on the Ropes], released in 1984.&lt;br /&gt;
&lt;br /&gt;
The following BASIC program demonstrates the coarse scrolling by setting the R12 and R13 registers based on keyboard input:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10 ma%=0&lt;br /&gt;
20 IF INKEY(1)=0 THEN GOSUB 100&lt;br /&gt;
30 IF INKEY(2)=0 THEN GOSUB 300&lt;br /&gt;
40 IF INKEY(8)=0 THEN GOSUB 500&lt;br /&gt;
50 IF INKEY(0)=0 THEN GOSUB 700&lt;br /&gt;
60 GOTO 20&lt;br /&gt;
100 ' right&lt;br /&gt;
110 ma%=ma%+1: GOSUB 900: RETURN&lt;br /&gt;
300 ' down&lt;br /&gt;
310 ma%=ma%+40: GOSUB 900: RETURN&lt;br /&gt;
500 ' left&lt;br /&gt;
510 ma%=ABS(ma%-1): GOSUB 900: RETURN&lt;br /&gt;
700 ' up&lt;br /&gt;
710 ma%=ABS(ma%-40): GOSUB 900: RETURN&lt;br /&gt;
900 ' set R12 and R13&lt;br /&gt;
910 l%=ma% AND 255: h%=&amp;amp;30 OR ((ma%\256) AND 3) :OUT &amp;amp;BC00,13:OUT &amp;amp;BD00,l%: OUT &amp;amp;BC00,12:OUT &amp;amp;BD00,h%&lt;br /&gt;
930 RETURN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Which looks like the following:&lt;br /&gt;
&lt;br /&gt;
[[File:CRTC-Coarse-scroll.gif]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Advanced hardware scrolling ===&lt;br /&gt;
&lt;br /&gt;
To achieve smoother hardware scrolling, other tricks are required in complement to R12/R13. Usually, R3 is used for smooth horizontal scroll and R5 for smooth vertical scroll.&lt;br /&gt;
&lt;br /&gt;
A good example of smooth hardware multidirectional scrolling game on CPC is [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=2119 Super Cauldron], released in 1993.&lt;br /&gt;
&lt;br /&gt;
Everything you need to know about hardware scrolling on CPC can be found [https://www.cpcwiki.eu/forum/programming/hardware-scrolling-21687/ there].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Split screen (aka Rupture) ==&lt;br /&gt;
&lt;br /&gt;
While there is usually 1 CRTC frame per screen frame, the screen frame can be divided into multiple CRTC frames of varying proportions.&lt;br /&gt;
&lt;br /&gt;
This is useful for defining different scrolling zones in your screen frame. For example, it was used for hardware parallax scrolling in the game [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=1307 The Living Daylights], released in 1987. [https://www.cpcwiki.eu/forum/programming/the-living-daylights-extra-colours-in-mode-1-rasters-screen-splits/ Source]&lt;br /&gt;
&lt;br /&gt;
And this is basically the bread and butter of innumerable CPC demos.&lt;br /&gt;
&lt;br /&gt;
Some rules of thumb [https://www.cpcwiki.eu/forum/programming/advice-on-split-screen-code/msg242186/ Source]:&lt;br /&gt;
* changes to the screen address have to be done anywhere in the previous split&lt;br /&gt;
* changes to the height of the split have to be done inside the current split (after it has started, in the area of the size of the previous split)&lt;br /&gt;
* changes to screen mode and colours are happening immediately&lt;br /&gt;
&lt;br /&gt;
CRTC registers and screen splitting:&lt;br /&gt;
*reg 0 (63) = x-screenwidth (usually always 63)&lt;br /&gt;
*reg 1 (50) = x-splitwidth (e.g.50)&lt;br /&gt;
*reg 2 (51) = x-splitstart (e.g. 51)&lt;br /&gt;
*reg 3 (08) = x-finestart (maybe use this for half-char scrolling)&lt;br /&gt;
*reg 4 (##) = y-splitheight-1 (set this inside the current split)&lt;br /&gt;
*reg 5 (00) = y-finestart&lt;br /&gt;
*reg 6 (25) = y-max visible splitpart (same like 4)&lt;br /&gt;
*reg 7 (##) = inside last split -&amp;gt; set to 0; inside first split, but after vblank -&amp;gt; set to 255&lt;br /&gt;
*reg 9 (07) = y-lines/char-1&lt;br /&gt;
&lt;br /&gt;
Set this inside the previous split:&lt;br /&gt;
*reg12 (##) = address high (char / 256 + block * 16)&lt;br /&gt;
*reg13 (##) = address low  (char mod 256)&lt;br /&gt;
&lt;br /&gt;
Total height of all splits must be 39.&lt;br /&gt;
&lt;br /&gt;
The [https://www.cpcwiki.eu/forum/programming/interrupt-positions-with-various-sized-screens/ IntPos tool] by Kevin Thacker can help visualize the potential split screen areas.&lt;br /&gt;
&lt;br /&gt;
Note: If all you want is multiple graphics modes in the same frame, you don't need to touch the CRTC at all. More information here: [https://www.cpc-power.com/cpcarchives/index.php?page=articles&amp;amp;num=184 Multi-Mode Graphique (FR)]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CUDISP (aka CURSOR) ==&lt;br /&gt;
&lt;br /&gt;
CUDISP (Cursor Display) signal defines the hardware cursor.&lt;br /&gt;
&lt;br /&gt;
CRTC pin CUDISP is not connected to the Gate Array, so it has no effect on a barebone CPC or Plus machine.&lt;br /&gt;
&lt;br /&gt;
However, this signal is provided to the [[Connector:Expansion port]]. And it is used by the [[PlayCity]] and [[Play2CPC]] expansions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DISPTMG (aka Display Enable) ==&lt;br /&gt;
&lt;br /&gt;
DISPTMG (Display Timing) signal defines the border. When DISPTMG is &amp;quot;0&amp;quot; the border colour is output by the Gate Array to the display.&lt;br /&gt;
&lt;br /&gt;
The border has higher priority than pixels but lower priority than the black colour output when HSYNC/VSYNC are active.&lt;br /&gt;
&lt;br /&gt;
While border is active, all the CRTC counters continue to increment normally and addresses continue to be generated.&lt;br /&gt;
&lt;br /&gt;
The DISPTMG signal is composited from its 3 internal subcomponents: HBORDER (Horizontal), VBORDER (Vertical), SBORDER (Split) by using the NOR function. DISPTMG is &amp;quot;0&amp;quot; if at least one of its subcomponents is &amp;quot;1&amp;quot;. These 3 subcomponents are all independent of each other.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HBORDER ===&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, HBORDER is disabled when HCC=0 and enabled when HCC=R1.&lt;br /&gt;
&lt;br /&gt;
The exception is for CRTC2 during an HSYNC: the HCC=0 check is skipped, so HBORDER stays on.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== VBORDER ===&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, VBORDER is disabled when VCC=0 and enabled when VCC=R6.&lt;br /&gt;
&lt;br /&gt;
On CRTCs 0/1/2, the condition VCC=R6 is tested on every cycle.&lt;br /&gt;
&lt;br /&gt;
On CRTCs 3/4, the condition VCC=R6 is tested only at each new character line start (when VLC=0 and HCC=0).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SBORDER ===&lt;br /&gt;
&lt;br /&gt;
Split border is a technique similar to split rasters, except that it is handled by the CRTC instead of the [[Gate Array]].&lt;br /&gt;
&lt;br /&gt;
DISPTMG can be temporarily forced to 0 by using R8 (DISPTMG Skew) on CRTCs 0/3/4, or by setting R6=0 on CRTC 1.&lt;br /&gt;
&lt;br /&gt;
It is not possible to force DISPTMG on CRTC 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Border bytes ===&lt;br /&gt;
&lt;br /&gt;
Despite their 1MHz clock speed, CRTCs 0/2 have been observed to change state at a rate equivalent to 2MHz chips by responding to both the rising and falling edges of each clock cycle.&lt;br /&gt;
&lt;br /&gt;
==== Interline border ====&lt;br /&gt;
On CRTCs 0/2, R1&amp;gt;R0 generates one byte (0.5µs) of border at the end of the raster line. On CRTCs 1/3/4, it does not.&lt;br /&gt;
&lt;br /&gt;
If border skew is used, the border byte will skew and change into a full character-width border instead.&lt;br /&gt;
&lt;br /&gt;
==== Border conflict ====&lt;br /&gt;
If R1=0 and HCC=0, we expect HBORDER to activate as HCC=R1 and we also expect HBORDER to deactivate as HCC=0. In this situation, all CRTCs activate HBORDER.&lt;br /&gt;
&lt;br /&gt;
If R6=0 and VCC=0, we expect VBORDER to activate as VCC=R6 and we also expect VBORDER to deactivate as VCC=0. In this situation, all CRTCs activate VBORDER. On CRTC 1, even SBORDER is activated. But on CRTCs 0/2, the first raster line shows an alternation of bytes of VBORDER and displayable characters.&lt;br /&gt;
&lt;br /&gt;
To see the border bytes with your own eyes, type this BASIC line after reset:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BORDER 6:OUT &amp;amp;BC00,6:OUT &amp;amp;BD00,0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== HSYNC ==&lt;br /&gt;
&lt;br /&gt;
The HSYNC signal from the CRTC is not directly connected to the display. It is passed to the [[Gate Array]] for further modification. See its wiki page.&lt;br /&gt;
&lt;br /&gt;
While HSYNC is active, all the CRTC counters continue to increment normally and addresses continue to be generated.&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, while an HSYNC is ongoing, the condition HCC=R2 is ignored. So we cannot trigger a new HSYNC during an HSYNC.&lt;br /&gt;
&lt;br /&gt;
=== Contiguous HSYNCs ===&lt;br /&gt;
&lt;br /&gt;
On CRTC 0, two HSYNCs cannot be contiguous. They are always separated by at least 1 CRTC character. What happens is that when HSC=R3 and HCC=R2, the condition HSC=R3 takes precedence over the condition HCC=R2 and HSYNC is stopped.&lt;br /&gt;
&lt;br /&gt;
On CRTCs 1/2/3/4, HSYNCs can be contiguous.&lt;br /&gt;
&lt;br /&gt;
=== Signal delay ===&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, there is a 1µs delay in display between when the CRTC provides a video pointer, and when the Gate Array displays the corresponding 16-bit character.&lt;br /&gt;
&lt;br /&gt;
But on CRTCs 0/1/2, there is no delay for HSYNC. On CRTCs 3/4, the Amstrad engineers fixed the issue by adding a 1µs delay for the HSYNC signal to match the display signal. &lt;br /&gt;
&lt;br /&gt;
So now we have a bigger issue: on CRTCs 3/4, HSYNC occurs 1µs later than on CRTCs 0/1/2. Interrupts being dependent on HSYNC, this is a serious compatibility issue for time-sensitive code. It also explains why the CTM monitor has to be calibrated differently on CRTCs 3/4. Fortunately, the issue is easy to fix, by adjusting the HSYNC width with CRTC register 3.&lt;br /&gt;
&lt;br /&gt;
=== Discolouration effect ===&lt;br /&gt;
&lt;br /&gt;
On CRT monitors from other brands, a colour calibration can happen just after the C-HSYNC pulse.&lt;br /&gt;
&lt;br /&gt;
So even when a fully valid C-HSYNC pulse of 4µs is emitted, an HSYNC shorter than usual combined with a coloured border can induce a discolouration effect on those monitors.&lt;br /&gt;
&lt;br /&gt;
=== Screen wobbling and Fine horizontal hardware scroll ===&lt;br /&gt;
&lt;br /&gt;
These effects use invalid HSYNC signals, which are poorly supported by modern displays. However, these effects were used in commercial-era CPC games, so it's fine if you choose to use them.&lt;br /&gt;
&lt;br /&gt;
When R2 increases by 1, the screen is shifted to the left by 16 mode2 pixels.&lt;br /&gt;
&lt;br /&gt;
When R2 decreases by 1, the screen is shifted to the right by 16 mode2 pixels.&lt;br /&gt;
&lt;br /&gt;
When R3l increases by 1 (and if &amp;lt;6), the screen is shifted to the left by 8 mode2 pixels.&lt;br /&gt;
&lt;br /&gt;
When R3l decreases by 1 (and if &amp;gt;2), the screen is shifted to the right by 8 mode2 pixels.&lt;br /&gt;
&lt;br /&gt;
The shift is not instantaneous but follows a logarithmic attenuation across several raster lines. This property can be used to get even finer horizontal control by modifying R2/R3 on each raster line.&lt;br /&gt;
&lt;br /&gt;
[[Longshot]] has demonstrated [https://youtu.be/1q7RQykZoKY horizontal hardware scroll] with one-pixel precision in mode1 on all CRTCs. However, because you have to synchronize with each line, it takes a lot of CPU time if it's done in fullscreen (272 lines).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VSYNC ==&lt;br /&gt;
&lt;br /&gt;
The VSYNC signal from the CRTC is not directly connected to the display. It is passed to the [[Gate Array]] for further modification. See its wiki page.&lt;br /&gt;
&lt;br /&gt;
While VSYNC is active, all the CRTC counters continue to increment normally and addresses continue to be generated.&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, while a VSYNC is ongoing, the condition VCC=R7 is ignored. So we cannot trigger a new VSYNC during a VSYNC. &lt;br /&gt;
&lt;br /&gt;
On CRTCs 0/1/2, the sole condition to trigger a VSYNC is that VCC=R7. While on CRTCs 3/4, it is necessary to have VCC=R7 and HCC=0 and VLC=0 to trigger a VSYNC.&lt;br /&gt;
&lt;br /&gt;
=== Blocked VSYNC ===&lt;br /&gt;
&lt;br /&gt;
On CRTC 0, if R7 is modified with the value of VCC when HCC&amp;lt;2, we are in blocked VSYNC. Then, the VSYNC can no longer occur on VCC=R7 until an unblocking condition is produced (VCC or R7 update). Source: §16.4 &amp;quot;Conditions to consider&amp;quot; of the CRTC Compendium&lt;br /&gt;
&lt;br /&gt;
=== Ghost VSYNC ===&lt;br /&gt;
&lt;br /&gt;
On CRTC 2, if a VSYNC is triggered during an HSYNC, the CRTC produces a ghost VSYNC. The CRTC then counts the lines as if a VSYNC were taking place by preventing a new VSYNC from occurring, but without the VSYNC pin being enabled.&lt;br /&gt;
&lt;br /&gt;
=== PPI VSYNC ===&lt;br /&gt;
&lt;br /&gt;
The VSYNC pin of the CRTC is directly connected to bit0 of port B of the PPI. There is no delay involved.&lt;br /&gt;
&lt;br /&gt;
On Amstrad CPC (not Plus!), it is also possible to reverse the direction of PPI port B to output a &amp;quot;fake&amp;quot; VSYNC signal directly from the PPI to the Gate Array.&lt;br /&gt;
&lt;br /&gt;
As an exception, the Ghost VSYNC of CRTC 2 overpowers the Fake VSYNC.&lt;br /&gt;
&lt;br /&gt;
=== Subpixel vertical hardware scroll ===&lt;br /&gt;
&lt;br /&gt;
By tuning very precisely when the VSYNC signal is sent to the monitor,  Longshot has demonstrated [https://youtu.be/bSjRU6Wye00 vertical hardware scroll] with a precision of 1/128th of a pixel. Furthermore, subpixel vertical scrolling consumes very little CPU.&lt;br /&gt;
&lt;br /&gt;
=== Mid-VSYNC ===&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, in both interlace modes, a mid-VSYNC is generated when VCC=R7 on the even field. The VSYNC pulse starts in the middle of the raster line, at HCC=R0/2.&lt;br /&gt;
&lt;br /&gt;
As an exception, on CRTCs 3/4, if R7=0 then mid-VSYNC will instead occur on the odd field. Source: §19.7 &amp;quot;Mid-VSYNC&amp;quot; of the CRTC Compendium.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Interlace modes ==&lt;br /&gt;
&lt;br /&gt;
Note: Some details about the CRTC interlace implementations are missing in this article. Consider it as an introduction to the topic.&lt;br /&gt;
&lt;br /&gt;
[[File:CRTC Interlace modes.png]]&lt;br /&gt;
&lt;br /&gt;
For a CRTC character line with n raster lines, R9 must be set to n-1 on all CRTCs, regardless of the interlace settings. The exception is for CRTCs 0/3/4 in IVM mode, where R9 must be set to n-2.&lt;br /&gt;
&lt;br /&gt;
=== Interlace sync mode (ISM) ===&lt;br /&gt;
&lt;br /&gt;
In this mode, the same information is painted in both fields to enhance readability. Reprogramming the CRTC is not necessary.&lt;br /&gt;
&lt;br /&gt;
=== Interlace sync and video mode (IVM) ===&lt;br /&gt;
&lt;br /&gt;
In this mode, alternating lines are displayed in the even and odd field to double the resolution.&lt;br /&gt;
&lt;br /&gt;
On the even field, the CRTC displays the lines for which VLC is even. On the odd field, the CRTC displays the lines for which VLC is odd.&lt;br /&gt;
&lt;br /&gt;
It is necessary to reprogram the CRTC as if we were building a frame of 624 lines.&lt;br /&gt;
&lt;br /&gt;
CRTC 2 is the exception: R4, R5, R6, R7 do not need to be reprogrammed as it considers each character line to be a double character line.&lt;br /&gt;
&lt;br /&gt;
=== Interlace adjustment line ===&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, in both interlace modes, an additional line (the 625th line) is added automatically by the CRTC at the end of the even field. This line is added after the lines of the vertical adjustment mode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRTC registers ==&lt;br /&gt;
&lt;br /&gt;
The Internal registers of the 6845 are:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!rowspan=2|Register Index&lt;br /&gt;
!rowspan=2|Register Name&lt;br /&gt;
!colspan=3|Read/Write&lt;br /&gt;
!rowspan=2|Range&lt;br /&gt;
!rowspan=2|CPC Setting&lt;br /&gt;
!rowspan=2|Notes&lt;br /&gt;
|-&lt;br /&gt;
!CRTC 0&lt;br /&gt;
!CRTCs 1/2&lt;br /&gt;
!CRTCs 3/4&lt;br /&gt;
|-&lt;br /&gt;
|0||Horizontal Total (-1)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||00000000||63||Width of the screen, in characters. Should always be 63 (64 characters). 1 character == 1μs.&lt;br /&gt;
|-&lt;br /&gt;
|1||Horizontal Displayed||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||00000000||40||Number of characters displayed. Once horizontal character count (HCC) matches this value, DISPTMG is set to 1.&lt;br /&gt;
|-&lt;br /&gt;
|2||Horizontal Sync Position||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||00000000||46||When to start the HSync signal.&lt;br /&gt;
|-&lt;br /&gt;
|3||Horizontal and Vertical Sync Widths||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||VVVVHHHH||128+14||VSync width in scan-lines (Not present on all CRTCs, fixed to 16 lines on these) ; HSync pulse width in characters.&lt;br /&gt;
|-&lt;br /&gt;
|4||Vertical Total (-1)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||x0000000||38||Height of the screen, in characters.&lt;br /&gt;
|-&lt;br /&gt;
|5||Vertical Total Adjust||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||xxx00000||0||Measured in scanlines, can be used for smooth vertical scrolling on CPC.&lt;br /&gt;
|-&lt;br /&gt;
|6||Vertical Displayed||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||x0000000||25||Height of displayed screen in characters. Once vertical character count (VCC) matches this value, DISPTMG is set to 1.&lt;br /&gt;
|-&lt;br /&gt;
|7||Vertical Sync Position||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||x0000000||30||When to start the VSync signal, in characters.&lt;br /&gt;
|-&lt;br /&gt;
|8||Interlace and Skew||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||CCDDxxII||0||CC: Cursor Skew (Only in CRTCs 0, 3 and 4). DD: Display Skew (Only in CRTCs 0, 3 and 4). II: Interlace Mode.&lt;br /&gt;
|-&lt;br /&gt;
|9||Maximum Raster Address (aka Number of Scan Lines) (-1)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Write||xxx00000||7||Maximum scan line address on CPC can hold between 0 and 7, higher values' upper bits are ignored.&lt;br /&gt;
|-&lt;br /&gt;
|10||Cursor Start Raster||style=&amp;quot;text-align: center;&amp;quot;|Write||style=&amp;quot;text-align: center;&amp;quot;|Write||Read/Write||xBP00000||0||B = Blink On/Off; P = Blink Period Control (16 or 32 frames). Sets first raster row of character that cursor is on to invert.&lt;br /&gt;
|-&lt;br /&gt;
|11||Cursor End Raster||style=&amp;quot;text-align: center;&amp;quot;|Write||style=&amp;quot;text-align: center;&amp;quot;|Write||Read/Write||xxx00000||0||Sets last raster row of character that cursor is on to invert.&lt;br /&gt;
|-&lt;br /&gt;
|12||Display Start Address (High)||Read/Write||style=&amp;quot;text-align: center;&amp;quot;|Write||Read/Write||xx000000||48||On Amstrad Plus, bit7 of the printer port is controlled by bit3 of CRTC R12 (ie. bit11 of Display Start Address).&lt;br /&gt;
|-&lt;br /&gt;
|13||Display Start Address (Low)||Read/Write||style=&amp;quot;text-align: center;&amp;quot;|Write||Read/Write||00000000||0||Allows you to offset the start of screen memory for hardware scrolling, and if using memory from address &amp;amp;0000 with the firmware.&lt;br /&gt;
|-&lt;br /&gt;
|14||Cursor Address (High)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Read/Write||xx000000||0||&lt;br /&gt;
|-&lt;br /&gt;
|15||Cursor Address (Low)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Read/Write||00000000||0||&lt;br /&gt;
|-&lt;br /&gt;
|16||Light Pen Address (High)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Read||xx000000||||On CRTC1, bit6 of Status register goes to 0 when R16 is read.&lt;br /&gt;
|-&lt;br /&gt;
|17||Light Pen Address (Low)||colspan=3 style=&amp;quot;text-align: center;&amp;quot;|Read||00000000||||On CRTC1, bit6 of Status register goes to 0 when R17 is read.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Screen size ===&lt;br /&gt;
&lt;br /&gt;
We can calculate the screen size in words by multiplying R1 x R6 x (R9+1). And then multiplying the result by 2 to have the screen size in bytes.&lt;br /&gt;
&lt;br /&gt;
With the default CRTC values, we obtain 40 x 25 x (7+1) x 2 = 16000 bytes.&lt;br /&gt;
&lt;br /&gt;
So we can observe that only part of the 16384 bytes (=16KB) page of VRAM is actually displayed on screen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Register access ===&lt;br /&gt;
&lt;br /&gt;
On CRTCs 0/1/2, if a Write Only register is read from, &amp;quot;0&amp;quot; is returned. The register accessing scheme on CRTCs 3/4 makes it impossible to happen.&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, only the 5 least significant bits of the selected register number are considered to write to a register. The other bits are ignored.&lt;br /&gt;
&lt;br /&gt;
On CRTCs 0/1/2, only the 5 least significant bits of the selected register number are considered to read a register:&lt;br /&gt;
* On CRTCs 0/2, registers 18-31 read as 0&lt;br /&gt;
* On CRTC 1, registers 18-30 read as 0, register 31 reads as &amp;amp;FF&lt;br /&gt;
&lt;br /&gt;
On CRTCs 3/4, only the 3 least significant bits of the selected register number are considered to read a register, according to the following table:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Nb&lt;br /&gt;
!Register&lt;br /&gt;
!Definition&lt;br /&gt;
|-&lt;br /&gt;
|0||R16||Light Pen Address (High)&lt;br /&gt;
|-&lt;br /&gt;
|1||R17||Light Pen Address (Low)&lt;br /&gt;
|-&lt;br /&gt;
|2||R10||Cursor Start Raster&lt;br /&gt;
|-&lt;br /&gt;
|3||R11||Cursor End Raster&lt;br /&gt;
|-&lt;br /&gt;
|4||R12||Display Start Address (High)&lt;br /&gt;
|-&lt;br /&gt;
|5||R13||Display Start Address (Low)&lt;br /&gt;
|-&lt;br /&gt;
|6||R14||Cursor Address (High)&lt;br /&gt;
|-&lt;br /&gt;
|7||R15||Cursor Address (Low)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRTC register differences ==&lt;br /&gt;
&lt;br /&gt;
CRTC types 3 and 4 are identical in every way, except for the unlocking mechanism, split screen, hardware soft scroll and 8-bit printer port functionalities specific to the [[ASIC]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== R10/R11 on ASIC/Pre-ASIC  ===&lt;br /&gt;
&lt;br /&gt;
The cursor raster registers R10/R11 act as status registers when read on CRTCs 3/4. They behave as normal cursor raster registers upon write.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! R10 - Bit number&lt;br /&gt;
! Bit value&lt;br /&gt;
! Event&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|1&lt;br /&gt;
|C0=R0&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|C0=R0/2&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|C0=R1-1 (if R0&amp;gt;=R1)&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|0&lt;br /&gt;
|C0=R2&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|C0=R2+R3&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|0&lt;br /&gt;
1&lt;br /&gt;
|R3h&amp;gt;0 : C0=0..R0 on the line R3h from Vsync (C4=R7)&lt;br /&gt;
R3h=0 : C0=0..R0 over 15 lines from Vsync (C4=R7)&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|1&lt;br /&gt;
|Always 1&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|0&lt;br /&gt;
0&lt;br /&gt;
|C0=0..R0-1 : VMA.Lsb=0xFF&lt;br /&gt;
C0=R0 : VMA'.Lsb=0x00 (same cond if C0=R0=0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! R11 - Bit number&lt;br /&gt;
! Bit value&lt;br /&gt;
! Event&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|C4=R4 and C9=R9 and C0=R0 : Last char of screen&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|C4=R6-1 and C9=R9 and C0=R0 : Last char displayed&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|C4=R7-1 and C9=R9 and C0=R0 : Last char before Vsync&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|0/1&lt;br /&gt;
|Timer 16 CRTC frames&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|Always 1&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|0&lt;br /&gt;
|C9=R9 : C0=0 to R0&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|0&lt;br /&gt;
|Always 0&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|1&lt;br /&gt;
|(C9=R9 and C0=R0) or (C9=0 and C0=0 to R0-1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Horizontal and Vertical Sync (R3) ===&lt;br /&gt;
&lt;br /&gt;
Type 0:&lt;br /&gt;
*Bits 7..4 define Vertical Sync Width. If 0 is programmed, this gives 16 lines of VSYNC.&lt;br /&gt;
*Bits 3..0 define Horizontal Sync Width. If 0 is programmed, no HSYNC is generated (and therefore, no interrupts).&lt;br /&gt;
&lt;br /&gt;
Type 1:&lt;br /&gt;
*Bits 7..4 are ignored. Vertical Sync is fixed at 16 lines.&lt;br /&gt;
*Bits 3..0 define Horizontal Sync Width. If 0 is programmed, no HSYNC is generated (and therefore, no interrupts).&lt;br /&gt;
&lt;br /&gt;
Type 2:&lt;br /&gt;
*Bits 7..4 are ignored. Vertical Sync is fixed at 16 lines.&lt;br /&gt;
*Bits 3..0 define Horizontal Sync Width. If 0 is programmed, this gives a HSYNC width of 16.&lt;br /&gt;
&lt;br /&gt;
Types 3/4:&lt;br /&gt;
*Bits 7..4 define Vertical Sync Width. If 0 is programmed, this gives 16 lines of VSYNC.&lt;br /&gt;
*Bits 3..0 define Horizontal Sync Width. If 0 is programmed, this gives a HSYNC width of 16.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Interlace and Skew (R8) ===&lt;br /&gt;
&lt;br /&gt;
Types 0/3/4:&lt;br /&gt;
*Bits 7..6 define the skew (delay) of the CUDISP signal (00 = Non-skew ; 01 = One-character skew ; 10 = Two-character skew ; 11 = Non-output).&lt;br /&gt;
*Bits 5..4 define the skew (delay) of the DISPTMG signal (00 = Non-skew ; 01 = One-character skew ; 10 = Two-character skew ; 11 = Non-output).&lt;br /&gt;
*Bits 3..2 are ignored.&lt;br /&gt;
*Bits 1..0 define the interlace mode (00 = No Interlace ; 01 = Interlace Sync ; 10 = No Interlace ; 11 = Interlace Sync and Video).&lt;br /&gt;
&lt;br /&gt;
Types 1/2:&lt;br /&gt;
*Bits 7..2 are ignored.&lt;br /&gt;
*Bits 1..0 define the interlace mode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== R31 on Type 1 ===&lt;br /&gt;
&lt;br /&gt;
R31 is described in the UM6845R documentation as &amp;quot;Dummy Register&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Its use is described in the documentation for the Rockwell R6545 in combination with R18, R19 and R8 and the Status Register.&lt;br /&gt;
&lt;br /&gt;
In the UM6845R it appears to have no effect. Reading and writing does nothing. Reading it returns &amp;amp;FF.&lt;br /&gt;
&lt;br /&gt;
R31 doesn't exist on CRTCs 0/2/3/4.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Status register on Type 1 ===&lt;br /&gt;
&lt;br /&gt;
The UM6845R has a status register that can be read using port &amp;amp;BExx.&lt;br /&gt;
&lt;br /&gt;
Bit 6 is set to 1 if there is a strobe input to the /LPEN signal. It is cleared to 0 when either R17 or R16 (LPEN address) of the CRTC are read. It signals there is a valid LPEN input. On Kevin Thacker's CPC with UM6845R, it is triggered at power on, R17 and R16 have the values 0 when read.&lt;br /&gt;
&lt;br /&gt;
Bit 5 is set to 1 when CRTC is in &amp;quot;vertical blanking&amp;quot;. Vertical blanking is when the vertical border is active. i.e. VCC&amp;gt;=R6. &lt;br /&gt;
&lt;br /&gt;
It is cleared when the frame is started (VCC=0). It is not directly related to the DISPTMG output (used by the CPC to display the border colour) because that output is a combination of horizontal and vertical blanking.&lt;br /&gt;
This bit will be 0 when pixels are being displayed.&lt;br /&gt;
&lt;br /&gt;
All the other bits read as 0 and don't have any function.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRTC Type Detection ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10 MODE 1:' Reinitialize screen&lt;br /&gt;
20 OUT &amp;amp;BC00,31:IF INP(&amp;amp;BF00)=255 THEN PRINT&amp;quot;crtc 1&amp;quot;:END&lt;br /&gt;
30 OUT &amp;amp;BC00,12:IF INP(&amp;amp;BF00)=0 THEN PRINT&amp;quot;crtc 2&amp;quot;:END&lt;br /&gt;
40 OUT &amp;amp;BC00,20:IF INP(&amp;amp;BF00)=0 THEN PRINT&amp;quot;crtc 0&amp;quot;:END&lt;br /&gt;
50 PRINT&amp;quot;crtc 3/4&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Distinguishing between CRTCs 3 and 4 can be done by trying to [[Programming:Unlocking ASIC|unlock the ASIC]] or by testing the [[8255|PPI chip]]. On ASIC, if PPI Port B is set as output it will behave the same as input.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRTC Timing Diagrams ==&lt;br /&gt;
[[File:CRTC Timing Diagram Rockwell.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:CRTC timing small.gif]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Internal Counters ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Counter name&lt;br /&gt;
! Abbr&lt;br /&gt;
! Alternate name&lt;br /&gt;
! Compared with&lt;br /&gt;
! Comment&lt;br /&gt;
|-&lt;br /&gt;
|Horizontal Character Counter&lt;br /&gt;
|HCC&lt;br /&gt;
|C0&lt;br /&gt;
|R0, R1, R2&lt;br /&gt;
| Increments on every clock cycle&lt;br /&gt;
|-&lt;br /&gt;
|Horizontal Sync Counter&lt;br /&gt;
|HSC&lt;br /&gt;
|C3l&lt;br /&gt;
|R3l&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Vertical Character Counter&lt;br /&gt;
|VCC&lt;br /&gt;
|C4&lt;br /&gt;
|R4, R6, R7&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Vertical Sync Counter&lt;br /&gt;
|VSC&lt;br /&gt;
|C3h&lt;br /&gt;
|R3h&lt;br /&gt;
|R3h is fixed to 0 on CRTCs 1/2. This gives 16 lines of VSYNC&lt;br /&gt;
|-&lt;br /&gt;
|Vertical Line Counter&lt;br /&gt;
|VLC&lt;br /&gt;
|C9&lt;br /&gt;
|R9, R10, R11&lt;br /&gt;
|If not in IVM mode, this counter is exposed on CRTC pins RA0..RA4&lt;br /&gt;
|-&lt;br /&gt;
|Vertical Total Adjust Counter&lt;br /&gt;
|VTAC&lt;br /&gt;
|C5&lt;br /&gt;
|R5&lt;br /&gt;
|This counter does not exist on CRTCs 0/3/4. C9 is reused instead&lt;br /&gt;
|-&lt;br /&gt;
|Frame Counter&lt;br /&gt;
|FC&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|Used to alternate frames in interlace and for CRTC cursor blinking&lt;br /&gt;
|-&lt;br /&gt;
|Memory Address&lt;br /&gt;
|MA&lt;br /&gt;
|&lt;br /&gt;
|R14/R15&lt;br /&gt;
|This counter is exposed on CRTC pins MA0..MA13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When IVM mode is activated, VLC continues to increment normally. However, RA is not identical to VLC anymore. Instead, VLC is considered shifted left by 1 bit, and bit0 represents the parity of the field (even/odd).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRTC counter differences ==&lt;br /&gt;
&lt;br /&gt;
=== MA buffering ===&lt;br /&gt;
&lt;br /&gt;
No matter its type, the CRTC never buffers any of its counters, except for the video pointer MA. The buffer MA' is needed because MA has to be reloaded at the beginning of every raster line.&lt;br /&gt;
&lt;br /&gt;
At the end of the display of the last raster line of each character line (ie. when HCC=R1 and VLC=R9), MA' captures the current value of MA.&lt;br /&gt;
&lt;br /&gt;
CRTC 2 is the exception: at the end of the display of the last raster line of the frame, MA' captures R12/R13 instead of MA.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MA reload ===&lt;br /&gt;
&lt;br /&gt;
On CRTCs 0/3/4, at the beginning of the first raster line of the frame, MA and MA' are loaded with R12/R13. Otherwise, MA is loaded with MA'.&lt;br /&gt;
&lt;br /&gt;
On CRTC 2, at the beginning of every raster line of the frame (including the first one), MA is loaded with MA'.&lt;br /&gt;
&lt;br /&gt;
On CRTC 1, at the beginning of every raster line of the first character line of the frame (ie. when VCC=0), MA is loaded with R12/R13 instead of MA'. '''This is a major source of incompatibility if the programmer does not take care.''' In demos and games, to be compatible with all CRTCs, program R12/R13 only when VCC≠0. This will then take effect at the next CRTC frame start.&lt;br /&gt;
&lt;br /&gt;
==== Rupture For Dummies (R5 bug) ====&lt;br /&gt;
&lt;br /&gt;
CRTC 1 has a bug that occurs when R5 is updated with a non-zero value when HCC=R0 and VLC≠R9, but only when R5 was previously 0. This changes the MA update source to R12/R13 instead of MA'. The CRTC then loads R12/R13 into MA at the beginning of every scanline, regardless of the VCC value.&lt;br /&gt;
&lt;br /&gt;
This R5 bug also messes with the frame parity management. However, it is possible to fix the parity of the frame by activating/deactivating the IVM interlace mode.&lt;br /&gt;
&lt;br /&gt;
The vertical adjustment operates normally after the RFD is triggered. If vertical adjustment is not needed, R5 can be reset at any time after the RFD is activated.&lt;br /&gt;
&lt;br /&gt;
This effect is used in the [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=19308 DSC4 demo].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== VSC (C3h) overflow ===&lt;br /&gt;
&lt;br /&gt;
During a VSYNC on CRTCs 0/3/4, if VSYNC Width (R3h) is changed with a value less than the current VSC, then VSC overflows and will count up to its maximum value (15) before looping back and counting up again until it reaches the new value of R3h.&lt;br /&gt;
&lt;br /&gt;
On CRTCs 1/2, the VSYNC width is fixed to 16 characters. It is not possible to modify it. Therefore, VSC cannot be overflowed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HSC (C3l) overflow ===&lt;br /&gt;
&lt;br /&gt;
During an HSYNC, if HSYNC Width (R3l) is changed with a value less than the current HSC, then HSC overflows and will count up to its maximum value (15) before looping back and counting up again until it reaches the new value of R3l.&lt;br /&gt;
&lt;br /&gt;
The only exception is for CRTC 1 with a value of 0, which immediately cancels the current HSYNC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== VCC (C4) overflow ===&lt;br /&gt;
&lt;br /&gt;
On all CRTCs, if Vertical Total (R4) is changed with a value less than VCC, then:&lt;br /&gt;
* if this update was done when VCC &amp;lt; R4, then VCC overflows and will count up to its maximum value (127) before looping back and counting up again until it reaches the new value of R4&lt;br /&gt;
* if this update was done when VCC = R4, the current character line was already decided to be the last one of the current frame. No update to R4 will make the CRTC change its mind for the current frame&lt;br /&gt;
&lt;br /&gt;
The only exception when VCC = R4 is for CRTC 1 with a value of 0, which will cause VCC to overflow.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HCC (C0) overflow ===&lt;br /&gt;
&lt;br /&gt;
If Horizontal Total (R0) is changed with a value less than the current HCC, then:&lt;br /&gt;
* on CRTCs 0/1/2, HCC overflows and will count up to its maximum value (255) before looping back and counting up again until it reaches the new value of R0&lt;br /&gt;
* on CRTCs 3/4, the current line is considered finished and HCC is immediately reset to 0 on the next line&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== VLC (C9) overflow ===&lt;br /&gt;
&lt;br /&gt;
If Number of Scan Lines (R9) is changed with a value less than the current VLC, then:&lt;br /&gt;
* on CRTCs 0/1/2, VLC overflows and will count up to its maximum value (31) before looping back and counting up again until it reaches the new value of R9&lt;br /&gt;
* on CRTCs 3/4, the current line is considered the last one of this CRTC character and VLC will reset to 0 on the next line&lt;br /&gt;
&lt;br /&gt;
As an exception, on CRTCs 0/2, if VLC is modified during the last frame line, then the updated value will not be considered for the current frame.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== VTAC (C5/C9) overflow ===&lt;br /&gt;
&lt;br /&gt;
During vertical adjustment mode, if Vertical Total Adjust (R5) is changed with a value less than the current VTAC, then:&lt;br /&gt;
* on CRTCs 0/1/2, VTAC overflows and will count up to its maximum value (31) before looping back and counting up again until it reaches the new value of R5&lt;br /&gt;
* on CRTCs 3/4, the current line is considered the last one of the current frame and vertical adjustment will end&lt;br /&gt;
&lt;br /&gt;
As an exception, on CRTCs 0/2, if VTAC is modified during the last frame line, then the updated value will not be considered for the current frame.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Vertical Adjustment mode ===&lt;br /&gt;
&lt;br /&gt;
On CRTCs 3/4, this mode does not increment VCC, so VCC remains equal to R4.&lt;br /&gt;
&lt;br /&gt;
On CRTC 0, this mode increments VCC, causing it to exceed R4, but this increment occurs only once.&lt;br /&gt;
&lt;br /&gt;
On CRTCs 1/2, this mode increments VCC, causing it to exceed R4, and this increment can happen multiple times depending on the values of R5 and R9.&lt;br /&gt;
&lt;br /&gt;
Also, only CRTCs 1/2 have a dedicated C5 counter. On CRTCs 0/3/4, during Vertical Adjustment, C9 has to fullfil the VTAC role which means that it cannot fullfil its VLC role. This impacts address generation as R9 is not considered anymore.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Counter freezes ===&lt;br /&gt;
&lt;br /&gt;
On CRTCs 1/2/3/4, R0 accepts all values without causing any problems for counters.&lt;br /&gt;
&lt;br /&gt;
On CRTC 0:&lt;br /&gt;
* Setting R0 to 0 will cause numerous issues that stem from the fact that VLC is frozen. As HCC never reaches 1, the logic that increments VLC is never triggered.&lt;br /&gt;
* The logic that triggers vertical adjustment is broken if R0&amp;lt;2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Block Diagrams ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Hitachi&lt;br /&gt;
!UMC&lt;br /&gt;
!Motorola&lt;br /&gt;
|-&lt;br /&gt;
|[[File:CRTC Block Diagram.png|Hitachi]]&lt;br /&gt;
|[[File:UMC CRTC Block Diagram.png|UMC]]&lt;br /&gt;
|[[File:Motorola CRTC Block Diagram.png|Motorola]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRTC-II (aka Type 5) ==&lt;br /&gt;
&lt;br /&gt;
The [[Media:CRTC-5-HD6345.pdf|HD6345 datasheet]] states it is upward-compatible with the HD6845S in pin and software.&lt;br /&gt;
&lt;br /&gt;
This chip was never used by Amstrad. However, some CPC enthusiasts have replaced the original CRTC chip in their CPC with this one.&lt;br /&gt;
&lt;br /&gt;
With this chip, split-screen becomes easy: [https://thecheshirec.at/2024/05/20/des-splitscreens-en-basic-sur-crtc5/ Split-screen in BASIC]. And 3 new graphics modes (160x100x16c, 320x100x4c, 640x100x2c) are available: [https://thecheshirec.at/2024/11/10/trois-nouveaux-modes-video-grace-au-crtc-5/ New graphics modes in BASIC].&lt;br /&gt;
&lt;br /&gt;
This is the cheapest way to upgrade the CPC's graphics capabilities, costing only 1.29€. [https://thecheshirec.at/2024/05/19/des-crtc5-a-129e/ Source]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Datasheets ==&lt;br /&gt;
&lt;br /&gt;
==== Used by Amstrad ====&lt;br /&gt;
* [[Media:hd6845.hitachi.pdf|HD6845S (Hitachi)]] aka Type 0&lt;br /&gt;
* [[Media:UM6845-UMC.pdf|UM6845 (UMC)]] aka Type 0&lt;br /&gt;
* [[Media:Um6845r.umc.pdf|UM6845R (UMC)]] aka Type 1&lt;br /&gt;
* [[Media:Mc6845.motorola.pdf|MC6845 (Motorola)]] aka Type 2&lt;br /&gt;
* [[Media:CPC_Plus_Asic_Schematic.GIF|AMS40489 (Amstrad)]] aka Type 3 ([[ASIC]])&lt;br /&gt;
* [[AMS40226 (Amstrad)]] aka Type 4 (Pre-ASIC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Unused clones ====&lt;br /&gt;
* [[CM607P]] a Bulgarian clone made in Pravetz factory. It is used in the [[Aleste 520EX]].&lt;br /&gt;
* [[Media:hd6845.hitachi.pdf|HD6845R]] by Hitachi. According to Kevin Thacker, the [[KC Compact]] used HD6845R only.&lt;br /&gt;
* [[Media:UM6845E-UMC.pdf|UM6845E]] by UMC&lt;br /&gt;
* [[Media:Mc6845.pdf|MC6845-1]] by Motorola&lt;br /&gt;
* [[Media:F6845.pdf|F6845]] by Fairchild&lt;br /&gt;
* [[Media:EF6845P.pdf|EF6845]] by Thomson Semiconductors&lt;br /&gt;
* [[Media:VL6845 VTi.pdf|VL6845]] by VTi&lt;br /&gt;
* [[Media:C6845 CRTC (CAST).pdf|C6845]] by Cast&lt;br /&gt;
* [[Media:MB89321B FUJ.pdf|MB89321B]] by Fujitsu. It is pin-compatible with the 6845&lt;br /&gt;
* [[Media:MB89321A datasheet CRTC.pdf|MB89321A]] by Fujitsu. Enhanced version that adds smooth scroll, screen partitioning, independent scrolling of screen partitions, and other convenient features&lt;br /&gt;
* [[Media:Mos 6545-1 crtc.pdf|MOS 6545]] (MOS, Rockwell, Synertek) is pin-compatible with the 6845. Its differences are found in the R8 register.&lt;br /&gt;
* [https://www.cpcwiki.eu/forum/other-retro/interesting-discussion-about-the-c128-s-cpm-poor-performance/msg223058/#msg223058 MOS 8563] It is an evolution of the 6545/6845 CRTC chip, with blitter abilities to autonomously perform block memory copies within its dedicated video RAM.&lt;br /&gt;
* [https://github.com/hoglet67/BeebFpga/blob/dev/src/common/mc6845.vhd BeebFpga] [https://github.com/MiSTer-devel/Amstrad_MiSTer/blob/master/rtl/UM6845R.v MiSTer] [https://opencores.org/websvn/filedetails?repname=System09&amp;amp;path=%2FSystem09%2Ftrunk%2Frtl%2FVHDL%2Fcrtc6845.vhd OpenCores] Verilog/VHDL implementations of the 6845&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tools about CRTC ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.cpcwiki.eu/imgs/9/99/Elmar_Krieger-SPECIAL_EFFECTS.dsk  some BASIC tools to detect CRTC types 0-1-2 and show some effects] by [[Elmar Krieger]] (DSK for Emulators)&lt;br /&gt;
* [[File:Shaker26.dsk]] Shaker - Suite of CRTC tests associated with the CPC CRTC compendium (many of them will not work correctly on emulators and that was the purpose of the tests, to help create more compatible emulation)&lt;br /&gt;
* [[File:Shaker addon.dsk]] Shaker Add-On (Pixel 1 Hard Scroll / Vertical Rupture all Crtc)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/6845 Wikipedia on the CRTC]&lt;br /&gt;
* [[Media:ACCC1.8-EN.pdf]] CPC CRTC Compendium - Latest (04/2024!) document containing in-depth info about CRTC programming on CPC.&lt;br /&gt;
* [http://www.grimware.org/doku.php/documentations/devices/crtc CRTC documentation from Grimware]&lt;br /&gt;
* [http://quasar.cpcscene.net/doku.php?id=assem:crtc Quasar CRTC documentation (in french)]&lt;br /&gt;
* [https://pulkomandy.github.io/shinra.github.io/crtc.html PulkoMandy's table] [https://www.theoddys.com/acorn/the_6845_crtc/6845%20Variants.xlsx Oddy's table] Differences between CRTC types&lt;br /&gt;
* [[Media:Dossier Rupture(Gozeur Paradox).pdf]]&lt;br /&gt;
* [[Media:Dossier CRTC(Ramlaid Mortel).pdf]] Les entrailles du CRTC&lt;br /&gt;
* [https://thecheshirec.at/tag/crtc6845/ Leçons CRTC (CheshireCat)]&lt;br /&gt;
* [[Media:CRTC Compendium Podcast.mp3]] The CRTC Compendium digested in podcast format&lt;br /&gt;
* [https://martin.hinner.info/vga/pal.html PAL video timing specification]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related pages==&lt;br /&gt;
&lt;br /&gt;
*[[Gate Array]]&lt;br /&gt;
&lt;br /&gt;
*[[ASIC]]&lt;br /&gt;
&lt;br /&gt;
*[[Video modes]]&lt;br /&gt;
&lt;br /&gt;
*[[Synchronising with the CRTC and display]] : technic and details on the relationship between Gate Array and CRTC.&lt;br /&gt;
&lt;br /&gt;
*[[VIDI digitizer]] This extension contains its own CRTC chip&lt;br /&gt;
&lt;br /&gt;
[[Category:Hardware]] [[Category:CPC Internal Components]] [[Category:Electronic Component]] [[Category:Programming]] [[Category:Datasheet]] [[Category:Graphic]]&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=File:CRTC_Type_0.jpg&amp;diff=126047</id>
		<title>File:CRTC Type 0.jpg</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=File:CRTC_Type_0.jpg&amp;diff=126047"/>
				<updated>2025-05-18T20:53:17Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Links&amp;diff=126046</id>
		<title>Links</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Links&amp;diff=126046"/>
				<updated>2025-05-18T20:48:11Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: /* Blogs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Websites| ]][[Category:Network| ]][[Category:Scene group| ]][[Category:Wiki| ]][[Category:Hardware| ]][[Category:Software| ]][[Category:CPC History|**]]&lt;br /&gt;
&lt;br /&gt;
==== Collections  ====&lt;br /&gt;
----&lt;br /&gt;
*[https://acpc.me/index.php?language=eng Amstrad CPC Memory Engraved] Huge collection of documents, manuals, literature, magazines, marketing material and much more&lt;br /&gt;
*[https://www.cpc-power.com/cpcarchives/ CPC Archives] Collection of documents and tools related to the Amstrad CPC&lt;br /&gt;
*[https://archive.org/details/AmstradCPCManuals_201812 Amstrad CPC Manuals] Manuals for the games released on the Amstrad CPC&lt;br /&gt;
*[https://www.cpc-power.com/ CPC-Power] Collection of most of the software that was ever released. Also includes ROMs and patched versions for programs with bugs.&lt;br /&gt;
*[https://cpcrulez.fr CPC Rulez (FR)] A great french site, updated frequently, with games, reviews, utilities, type-ins, demos, hardware info. A treasure and a must-visit (french pages can easily be translated with Google translate or similar tools).&lt;br /&gt;
*[http://www.amstrad.es/ Amstrad ESP (ES)] Collection of CPC software downloadable individually with Spanish media and manual&lt;br /&gt;
*[https://www.velus.be/ Crackers Velus (FR)] Collection of thousands of CPC games downloadable individually&lt;br /&gt;
*[http://cpccrackers.free.fr/Downloads/index.php CPC Crackers Downloads] Collection of thousands of cracked CPC games, sorted by cracking group&lt;br /&gt;
*[http://cngsoft.no-ip.org/cpc_lzx.htm CPC Compactages by CNGsoft] CPC softwares compressed in compact archives&lt;br /&gt;
*[http://cpcgamescd.amstrad.es/ CPCGamesCD] ISO containing a Windows launcher and 4429 CPC games included&lt;br /&gt;
*[https://acpc.me/ACME/?COLLECTIONS/ABRAXAS Abraxas CPC Collection] 1800 titles in dsk and cdt formats on 2 DVDs&lt;br /&gt;
*[https://github.com/Amstrad-CPC-File-Archive/ Amstrad Demo Files/Discs Archives] Collection of scene artifacts&lt;br /&gt;
*[https://archive.org/details/DemobaseAmstradCpc Demobase Amstrad CPC] [https://gb64.com/forum/viewtopic.php?t=5053] Downloadable archive of demos from the CPC demoscene&lt;br /&gt;
*[https://www.cpc-power.com/gamebasecpc/index.php?page=full Gamebase CPC] [https://gb64.com/forum/viewtopic.php?t=2025&amp;amp;start=195] Amstrad CPC Gamebase by Loic Daneels containing 3300 softwares dumped only from originals and complete with scans, manuals, media, etc...&lt;br /&gt;
*[https://gb64.com/forum/viewtopic.php?t=4233&amp;amp;start=90 Amstrad Mania] Amstrad CPC Gamebase by Mark (Sparky) Hardman containing 5782 softwares. Contains a selection of everything: original disk &amp;amp; tape dumps, hacks, cracks and trainers, homebrews&lt;br /&gt;
*[https://archive.org/details/GoodCPCV3.1415 GoodCPC] Downloadable archive of 27103 softwares for the CPC. Tons of duplicates though&lt;br /&gt;
*[https://archive.org/details/Amstrad_CPC_TOSEC_2012_04_23 Amstrad CPC TOSEC] Downloadable archive of 5575 softwares for the CPC. Dumps are of dubious quality&lt;br /&gt;
*[https://archive.org/details/amstrad-cpc-clean-db Clean CPC DB] Based on tosec+cpcpower site. A database that has checked every game so that you don't have to&lt;br /&gt;
*[https://archive.org/details/hearto-1g1r-collection Hearto's 1G1R (1game=1rom) collection] Tosec 2020-10-31, trimmed manually&lt;br /&gt;
*[https://archive.org/details/mame-merged MAME SL ROM Set (Merged)] MAME software archives cpc_flop.zip and cpc_cass.zip for Amstrad CPC&lt;br /&gt;
*[https://archive.org/details/AmstradCPCGameCollectionByGhostware Amstrad CPC Game Collection] Downloadable archive of 4242 game files by Ghostware. Lots of duplicates though&lt;br /&gt;
*[https://archive.org/details/amstrad-cpc_202203 Amstrad CPC ROM set] Downloadable archive of 2416 game files by rfl0wpr with no duplicate&lt;br /&gt;
*[https://archive.org/details/amstrad-cpc-cdt-collection Amstrad CPC cassette images] Collection of over 3500 tape-images by VincentGR&lt;br /&gt;
*[https://mega.nz/folder/93pR2KiA#qlkiFakrZhSzmko65EbTWw/folder/d7gyjSBS Juegos en MP3] Collection of tape-images in MP3 format&lt;br /&gt;
*[https://www.spinpoint.org/M4backup.zip M4backup by Mr.DVG] Collection of 1300 games tested and working with [[M4 Board]]&lt;br /&gt;
*[https://mega.nz/folder/93pR2KiA#qlkiFakrZhSzmko65EbTWw/file/Yu50QDCa Epidemiom M4-HFE] Collection of 900 games and programs in DSK and HFE for the [[M4 Board]]&lt;br /&gt;
*[[Converted GX4000 Software]] Collection of 1000+ games converted to standard Amstrad cartridges&lt;br /&gt;
*[http://www.cpcgamereviews.com/ CPC Game Reviews] Collection of 2400+ CPC games with review and download link. Also contains a collection of advertisements which have been scanned from Amstrad CPC magazines.&lt;br /&gt;
*[https://computeremuzone.com/amstrad/?l=en Amstrad Zone] Collection of 500+ CPC games with review and download link&lt;br /&gt;
*[http://www.cpc-history.com CPC History] CPC database listing 3200+ titles&lt;br /&gt;
*[https://www.mobygames.com/platform/cpc/ Moby Games] Games database listing 2300+ games for Amstrad CPC&lt;br /&gt;
*[https://archive.org/details/cpc-roms CPC Roms] Collection of 16KB ROM chip games by VincentGR&lt;br /&gt;
*[[Snapshot Archive|CPCWiki Snapshot Archive]] Collection of game snapshots&lt;br /&gt;
*[https://www.cpc-power.com/cpcarchives/index.php?page=articles&amp;amp;num=10 CPC-Power SNR sessions] Collection of 400+ SNR game sessions&lt;br /&gt;
*[https://amstradmuseum.emu-france.info/Fichiers/Projets/cpcloadingscreenremake_CPC/cpcloadingscreenremake.html Remakes écrans-titres CPC] Collection of CPC title screens remake&lt;br /&gt;
*[https://amstradmuseum.emu-france.info/Fichiers/Liens&amp;amp;Outils/Screenshots/ Amstrad Museum Screenshots] Collection of CPC game screenshots&lt;br /&gt;
*[https://www.spriters-resource.com/amstrad_cpc/ The Spriters Resource] Collection of sprite sheets ripped from Amstrad CPC games&lt;br /&gt;
*[https://github.com/cpcepower/CPCMix/ CPCMix] Collection of thousands of Amstrad music files ripped in ASM and BASIC format&lt;br /&gt;
*[https://amstradmuseum.emu-france.info/Fichiers/Liens&amp;amp;Outils/TopMusic/YM/ TopMusic YM] Small collection of Amstrad YM music files&lt;br /&gt;
*[https://amstradmuseum.emu-france.info/Fichiers/Liens&amp;amp;Outils/Jaquettes/ Amstrad Museum Jaquettes] All CPC game covers&lt;br /&gt;
*[https://www.la-collec-cpc.fr/ La Collec' CPC] 800 game covers and media stickers remastered for the best games of the CPC&lt;br /&gt;
*[http://cpmarchives.classiccmp.org/ Humongous CP/M software archives] Collection of the great CP/M repositories past and present&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Game Launchers for real CPCs =====&lt;br /&gt;
&lt;br /&gt;
*[https://cdtplayer.hypha.ws/ Hypha's CDT collection and player] Web-browser based cdt/wav/flac/mp3 player with thousands of games available to use&lt;br /&gt;
*[https://pelrun.github.io/PlayUEF/PlayUEF.html Pelrun's CDT collection and player] Web-browser based cdt/tzx/uef player with thousands of games available to use&lt;br /&gt;
*[[Amsteam]] Online service that is currently free of charge, but the creator has mentioned that some future games will require payment. To be used on specific Amsteam hardware&lt;br /&gt;
*[https://cpcrulez.fr/applications_util-rulez-change-m4wifi.htm RulezCharge] Online service that is free of charge. To be used on M4 Board or CPC Booster. Note: &amp;quot;Charge&amp;quot; means &amp;quot;Load&amp;quot; in french, as in download. It does not mean charging money&lt;br /&gt;
*[https://github.com/Frange/Amstrad-M4-Board Amstrad M4] Navigation and execution of programs and games from a mobile Android device to an Amstrad CPC equipped with an M4 Board&lt;br /&gt;
*[[M4FE - A front-end for M4|M4FE]] Front-end for the M4 Board available as a ROM&lt;br /&gt;
*[https://web.archive.org/web/20181113190515/http://amstrad.esy.es/ M4 Explorer] Another front-end for the M4 Board. It is not in ROM format. The files are installed on the root of the microSD card&lt;br /&gt;
*[https://www.cpcwiki.eu/forum/applications/filelauncher-(acmedosm4dos)/ FileLauncher] Front-end for the X-Mass or M4 Board available as a ROM&lt;br /&gt;
*[https://www.cpcwiki.eu/forum/applications/lilicpc-2-2-m4-ulifac-loaders-available-now/ LiliCPC] Warehouse of thousands of loaders to run the games and applications, organized in intuitive navigation menus to be used on CPC with an ULIfAC or M4 Board&lt;br /&gt;
*[http://amsnet.chez.com/ UniLoad] CPC Launcher with 1000+ games included to be used on CPC with any mass-storage expansion supported by [[UniDOS]] (M4 Board, X-Mass, Symbiface II, Albireo, etc...). A tool is also provided to create your own game database&lt;br /&gt;
*[https://cpcrulez.fr/applications_disc-hxc_floppy_emulator_manager.htm HxC Floppy Emulator Manager] CPC front-end for the [[Gotek]] floppy drive with [[HxC Floppy Emulator|HxC]] or [[FlashFloppy]]&lt;br /&gt;
*[https://cpcrulez.fr/applications_util-cprselect.htm CprSelect] Front-end for the [[C4CPC]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Online Emulators  =====&lt;br /&gt;
&lt;br /&gt;
*[http://crocods.org/web/ CrocoDS]&lt;br /&gt;
*[https://floooh.github.io/tiny8bit/ Tiny Emus]&lt;br /&gt;
*[https://devilmarkus.de/ WebGL 3d 8-bit]&lt;br /&gt;
*[https://8bitworkshop.com/v3.11.0/?file=hello.asm&amp;amp;platform=cpc.6128 8bitworkshop IDE]&lt;br /&gt;
*[https://benchmarko.github.io/CPCBasic/index.html?example=cpcbasic CPC BASIC]&lt;br /&gt;
*[https://bzhgames.xyz/amstrad.php BZH Games] Includes ongoing highscore competition&lt;br /&gt;
*[https://www.amstradcpc.es/doku.php?id=emus Amstrad ESP]&lt;br /&gt;
*[https://amstradpower.es/juega-online/ Juega Online]&lt;br /&gt;
*[https://www.juegotk.com/emulador-online/2/amstrad-cpc464.html JuegoTk]&lt;br /&gt;
*[http://www.amstradcpcgames.eu AmstradCPCgames.eu]&lt;br /&gt;
*[https://online.oldgames.sk/play/cpc Online OldGames]&lt;br /&gt;
*[[Emulators]] Full list of Amstrad CPC emulators&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== File servers  ====&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
*[https://ftp.nvg.ntnu.no/pub/cpc/ NVG]&lt;br /&gt;
*[https://ftp.lip6.fr/pub/amstrad/ LIP6] &lt;br /&gt;
*[http://cpmarchives.classiccmp.org/cpm/mirrors/ftp.demon.com/pub/cpm/ CPM] - related Amstrad things&lt;br /&gt;
*[ftp://ftp.cpcszene.de/ CPC Szene]&lt;br /&gt;
*[ftp://amstrad:amstrad@amstrad.serveftp.com Amstrad ServeFTP]&lt;br /&gt;
*[https://amstradmuseum.emu-france.info/Fichiers/DSK/ Amstrad Museum GoodCPC DSK full-set]&lt;br /&gt;
*[https://two-mag.com/cpc/ Two-Mag CPC games]&lt;br /&gt;
*[https://mega.nz/folder/93pR2KiA#qlkiFakrZhSzmko65EbTWw Amstrad Power folder on MEGA]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Chat  ====&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
*[https://web.libera.chat/#cpc-fr IRC channel] #cpc-fr on Libera-chat network, french scene channel (replacing #cpc on freenode, #cpc on Neoxys and #cpc on Europnet)&lt;br /&gt;
*[news://comp.sys.amstrad.8bit Newsgroup CSA8]&lt;br /&gt;
*[https://amstrad.simulant.uk/ Amstrad BBS] Telnet Bulletin Board System&lt;br /&gt;
&lt;br /&gt;
===== ChatGPT =====&lt;br /&gt;
&lt;br /&gt;
*[https://chatgpt.com/g/g-4N6Ts4Y3O-amstrad-cpc-engineer Amstrad CPC Engineer (by Fergus Leen)] Specialised in Z80 Assembly for the Amstrad CPC&lt;br /&gt;
*[https://chatgpt.com/g/g-V3gsOcx7F-cpc-z80-assembly-engineer CPC Z80 Assembly Engineer (by Vassilis N. Perantzakis)] Formal, beginner-friendly Z80 assembly guide&lt;br /&gt;
*[https://github.com/markburns/amstrad_gpt AmstradGpt] Get your Amstrad CPC to talk to ChatGPT via a USB to RS232 serial cable&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Discord Servers =====&lt;br /&gt;
&lt;br /&gt;
*[https://discord.gg/4QZqfCr Amstrad CPC Community]&lt;br /&gt;
*[https://discord.gg/eFmDcMu Amstrad.eu (FR)]&lt;br /&gt;
*[https://discord.gg/YP3tVvx NoixDeCroco (FR)]&lt;br /&gt;
*[https://discord.gg/dwNNbTupT8 ASMtrad CPC (FR)]&lt;br /&gt;
*[https://discord.gg/FvpPbNQ5ju Orgams]&lt;br /&gt;
*[https://discord.gg/rKxFPndHPw Praline]&lt;br /&gt;
*[https://discord.gg/nd476U5 Xyphoe's Amserver]&lt;br /&gt;
*[https://discord.gg/eVQQnzFYkD SymbOS &amp;amp; Quigs]&lt;br /&gt;
*[https://discord.gg/ZXy3TZMSrj Rodrik Studio - PicoCPC]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Telegram Groups =====&lt;br /&gt;
&lt;br /&gt;
*[https://t.me/amstradeterno Amstrad Eterno]&lt;br /&gt;
*[https://t.me/amstradpower Amstrad Power]&lt;br /&gt;
*[https://t.me/ensambladorZXSpectrum Ensamblador Z80 (ZX Spectrum, Amstrad, MSX y más)]&lt;br /&gt;
*[https://t.me/cpctelera_asm CPCtelera]&lt;br /&gt;
*[https://t.me/LiliCPC LiliCPC]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Facebook Groups =====&lt;br /&gt;
&lt;br /&gt;
*[https://www.facebook.com/groups/5357712057 Amstrad CPC 464] - the biggest and most active english speaking group - not only for 464&lt;br /&gt;
*[https://www.facebook.com/groups/298743294763933 Amstrad CPC 6128]&lt;br /&gt;
*[https://www.facebook.com/groups/1066160190075999/ AMSTRAD CPC CLASSIC GAMING AND DEMOS]&lt;br /&gt;
*[https://www.facebook.com/groups/354709275176426/ AMSTRAD CPC LATEST GAMES]&lt;br /&gt;
*[https://www.facebook.com/cpclegends/ CPC Legends]&lt;br /&gt;
*[https://www.facebook.com/groups/281939335598581/ Amstrad GX4000/PLUS Users]&lt;br /&gt;
*[https://www.facebook.com/groups/688629749193585/ Amstrad CPC/PCW/NC/GX Users]&lt;br /&gt;
*[https://www.facebook.com/groups/amstrad4ever Amstrad 4Ever]&lt;br /&gt;
*[https://www.facebook.com/groups/1380187495418957/ Amstrad For Everyone] - not only CPC&lt;br /&gt;
*[https://www.facebook.com/groups/181195638970447/ Amstrad 8bit computers]&lt;br /&gt;
*[https://www.facebook.com/groups/168233427111563/ Amstrad Collective]&lt;br /&gt;
*[https://www.facebook.com/groups/2137490036569352/ Somos de Amstrad !]&lt;br /&gt;
*[https://www.facebook.com/groups/577133703114361/ Asociación Amstrad Eterno]&lt;br /&gt;
*[https://www.facebook.com/groups/guamstrad/ Grupo de Usuarios Amstrad (GUA)]&lt;br /&gt;
*[https://www.facebook.com/groups/auamstrad/ Amigos y Usuarios de Amstrad (AUA)]&lt;br /&gt;
*[https://www.facebook.com/groups/cpcuser Amstrad CPC User] - Italian group&lt;br /&gt;
*[https://www.facebook.com/groups/2277697035789023/ Amstrad - Schneider CPC] - German group&lt;br /&gt;
*[https://www.facebook.com/groups/466173504171187/ AMSTRAD.PL] - Polish group&lt;br /&gt;
*[https://www.facebook.com/groups/940816202700187/ Amstrad CPC Danmark]&lt;br /&gt;
*[https://www.facebook.com/groups/AmstradCpcCom/ Amstrad CPC Türkiye]&lt;br /&gt;
*[https://www.facebook.com/groups/3348293601902686/ Amstrad CPC Greek Community]&lt;br /&gt;
*[https://www.facebook.com/groups/462601654365944/ Amstrad Cpc Users Group Australia]&lt;br /&gt;
*[https://www.facebook.com/groups/amstradbelgique/ Amstrad Belgique]&lt;br /&gt;
*[https://www.facebook.com/groups/amstrad.eu/ Amstrad.eu CPC 464 / 664 / 6128 Old &amp;amp; + / GX4000] - mostly French &lt;br /&gt;
*[https://www.facebook.com/groups/1120607071477318/ Amstrad CPC pour toujours and beyond]&lt;br /&gt;
*[https://www.facebook.com/groups/AmstradCPCMemoireEcrite/ Amstrad CPC Mémoire Ecrite]&lt;br /&gt;
*[https://www.facebook.com/groups/699366355196951/ 100% Amstrad CPC]&lt;br /&gt;
*[https://www.facebook.com/groups/amstradiens/ Amstradiens] - the biggest and most active group&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Web Forums =====&lt;br /&gt;
&lt;br /&gt;
*[https://www.cpcwiki.eu/forum/ CPCwiki forum]&lt;br /&gt;
*[https://cpcrulez.fr/forum/ CPCRulez forum (FR)]&lt;br /&gt;
*[https://amstrad.eu/ Amstrad.eu (FR)] [https://phenixinformatique.com Old website phenixinformatique.com] Previously used the URL cpcscene.com&lt;br /&gt;
*[https://amstradplus.forumactif.com/ Amstrad Plus / Cpc Forum (FR)]&lt;br /&gt;
*[http://www.amstrad.es/forum/ Amstrad ESP forum (ES)]&lt;br /&gt;
*[https://cpcwiki.de/forum/ CPCwiki.de forum (DE)]&lt;br /&gt;
*[https://computeremuzone.com/amstrad/?l=en Amstrad Zone] Subsection of computeremuzone.com&lt;br /&gt;
*[https://www.reddit.com/r/Amstrad/ r/Amstrad] Amstrad sub-Reddit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Shops / Groups to buy/sell hardware and games  ====&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
*[https://hobbyretro.com/amstrad Hobbyretro.com] Spanish shop&lt;br /&gt;
*[https://www.cpcstore.co.uk/ CPCStore.co.uk] UK shop&lt;br /&gt;
*[https://www.sellmyretro.com/category/Retro+Computers/Amstrad Sell-My-Retro] portal - some sellers including Zaxon sell through this shop&lt;br /&gt;
*[https://www.sintech-shop.de/retro-atari-commodore-sinclair-etc/amstrad-schneider Sintech] some software, 6128/Plus keyboard membranes&lt;br /&gt;
*[https://lotharek.pl/ Lotharek's Lair] Retro hardware manufacturer&lt;br /&gt;
*[https://www.icompplus.com/ IcompPlus] original new-old-stock Amstrad ICs&lt;br /&gt;
*[https://www.facebook.com/groups/amstradforsale/ Amstrad for sale] Facebook group&lt;br /&gt;
*[http://www.amibay.com/forumdisplay.php?f=44 AMIBAY - Hardware For Sale]&lt;br /&gt;
*[http://www.amibay.com/forumdisplay.php?f=50 AMIBAY - Wanted Hardware]&lt;br /&gt;
*[https://www.ebay.co.uk/str/abiantfosdxr Amstrad and Co]&lt;br /&gt;
*[https://pixel.rodrik.ch/cartouche Rodrik cartridges] Game cartridges 100% compatible with the original&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Blogs/Websites of individuals and groups ====&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===== Hardware-related  =====&lt;br /&gt;
&lt;br /&gt;
*[http://www.zock.com/8-Bit/D_CPCguide.HTML G.o.St.-SOFT's CPC-Hardwareführer at 8-Bit-Nirvana (DE)] Lots of tips and tricks, but no recent updates&lt;br /&gt;
*[https://www.oocities.org/siliconvalley/park/6129/engmain.htm Virtual Net 96] Amstrad CPC local network protocol&lt;br /&gt;
*[http://siou.free.fr/General/Pages/index-cpc6128.html Siou's projects] CPCISA and Video digitizer&lt;br /&gt;
*[https://www.hanssummers.com/cpcng.html CPCng] CPC Next Generation&lt;br /&gt;
*[https://bread80.com/category/amstrad-cpc/ bread80.com] Some analysis of Firmware and BASIC logic (and also the video subsystem- hardware)&lt;br /&gt;
*[http://www.amstradtoday.com/ Amstrad Today (FR)] Many Tips for Amstrad CPC&lt;br /&gt;
*[https://www.centpourcent.net/ Cent Pour Cent] TotO's MX4 hardware expansions&lt;br /&gt;
*[[PulkoTronics]] PulkoMandy's hardware expansions&lt;br /&gt;
*[http://www.tmtlogic.com/ TMTLogic] CPC and MSX hardware expansions&lt;br /&gt;
*[https://www.spinpoint.org/ Spinpoint] Duke's M4 Board and Imperium Solo hardware&lt;br /&gt;
*[http://retroworkbench.blogspot.com/ ikonsgr 80's Home Micros WorkBench] CPC, Spectrum, Amiga hardware projects&lt;br /&gt;
*[https://pelrun.github.io/cpc-schematics/ CPC schematics] KiCad transcription of the CPC6128 motherboard&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Software-related  =====&lt;br /&gt;
&lt;br /&gt;
*[https://espsoft.blogspot.com ESPsoft (ES)] Blog on Spanish homebrews for the CPC.&lt;br /&gt;
*[https://playonretro.itch.io/ Play on retro] Homebrew retro games editor&lt;br /&gt;
*[http://www.mojontwins.com The Mojon Twins (ES)] Homebrew developer group that focuses on creating games for retro systems, among which is the CPC.&lt;br /&gt;
*[https://www.4mhz.es/en/ 4MHz]  Homebrew developer group that focuses on creating games for retro systems that use the Z80 CPU.&lt;br /&gt;
*[http://www.retroworks.es/index_en.php RetroWorks]  Z80 homebrew games developer&lt;br /&gt;
*[https://altanerus-dog.itch.io/ Altanerus Dog (ES)] CPC and PC homebrew games developer&lt;br /&gt;
*[https://www.usebox.net/jjm/ Usebox.net] Homebrew studio that focuses on creating games for retro systems, among which is the CPC.&lt;br /&gt;
*[https://mananuk.itch.io/ Mananuk] Homebrew game developer for retro systems, including the CPC&lt;br /&gt;
*[https://x.com/AmstradGGP AmstradGGP] Twitter account of this CPC homebrew games developer group&lt;br /&gt;
*[https://zisquier.itch.io/ Zisquier games] CPC homebrew games developer&lt;br /&gt;
*[http://www.prodatron.net Prodatron's page] ([[Prodatron|Prodatrons]] homepage includes info and downloads of his productions as well as a lot of downloads for CPC Digitracker modules (MDL), OCP Art Studio pictures and Scene demos)&lt;br /&gt;
*[http://www.symbos.de SymbOS] Graphical Z80 Multitasking Operating System [[SymbOS]]&lt;br /&gt;
*[http://www.FutureOS.de FutureOS] [[FutureOS]] is an revolutionary operating system for the CPC6128 and CPCPlus&lt;br /&gt;
*[http://orgams.wikidot.com/ Orgams] Ultimate Z80 suite on Amstrad CPC&lt;br /&gt;
*[http://www.cpcmania.com/news.htm CPC Mania] - some tools like CPR tools, CPCDiskXP, CPCTapeXP - plus some technical informations&lt;br /&gt;
*[http://schneidercpc.cf2.de Domes-DOS Schneider/Amstrad CPC dedication] - Domes-DOS's CPC website in the design of an GT65 green monitor (with download of his DART-logging tool and lots of infos about the CPC series)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Demoscene =====&lt;br /&gt;
&lt;br /&gt;
*[https://memoryfull.net/index.php Memory Full] All about the CPC demoscene&lt;br /&gt;
*[https://64nops.wordpress.com/ 64 NOPs] CPC demoscene tech blog&lt;br /&gt;
*[http://cpc.sylvestre.org/index.html Les Sucres en morceaux (FR)] all the news relating to the productions of &amp;quot;Les Sucres en Morceaux&amp;quot; and many articles relating to the Amstrad CPC.&lt;br /&gt;
*[https://amstradmuseum.emu-france.info/ Amstrad Museum (FR)] Website of the CPC graphic artist [[Titan]]&lt;br /&gt;
*[https://www.praline-cpc.fr/barjack/ Barjack (FR)] Website of the CPC graphic artist [[Barjack]] / Praline&lt;br /&gt;
*[https://twitter.com/batman_group Batman Group (ES)] Twitter account of the Amstrad and Amiga Demogroup [[Batman Group]]&lt;br /&gt;
*[http://tj.gpa.free.fr/ Tom&amp;amp;Jerry GPA (FR)] The page of [[GPA]] Demogroup&lt;br /&gt;
*[https://astimpact.weebly.com/ AST Impact (FR)] The page of [[Impact]] Demogroup&lt;br /&gt;
*[http://arkos.cpcscene.com/ Arkos Demogroup] - The page of [[Arkos|Arkos]], with some great demos, diskmags, games and tools.&lt;br /&gt;
*[http://futurs.chez.com/ Futurs'] The page of [[Futurs']] Demogroup&lt;br /&gt;
*[http://www.logonsystem.eu/ Logon System] The page of [[Logon System]] Demogroup&lt;br /&gt;
*[http://benediction.cpcscene.net/ Benediction] The page of [[Benediction]] Demogroup&lt;br /&gt;
*[https://vanity.memoryfull.net/ Vanity] The page of [[Vanity]] Demogroup&lt;br /&gt;
*[https://pulkomandy.github.io/shinra.github.io/ Shinra] The page of [[Shinra]] Demogroup&lt;br /&gt;
*[http://tafcpc.free.fr/ TAF HQ] The page of [[TAF]] Demogroup&lt;br /&gt;
*[https://betasoftcologne.github.io/ BetaSoftCologne's place] The page of [[BSC]] Demogroup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Blogs =====&lt;br /&gt;
&lt;br /&gt;
*[http://norecess.cpcscene.net NoRecess] Blog of [[NoRecess]]&lt;br /&gt;
*[https://blog.logonsystem.eu/ Logon System (FR)] Blog of [[Longshot]]&lt;br /&gt;
*[https://overflowlogonsystem.wixsite.com/amstradcpc/ Overflow's RAndom Memory] Blog of [[Overflow]]&lt;br /&gt;
*[https://muckypaws.com/category/amstrad/ Mucky Paws] [[The Argonaut]] blog&lt;br /&gt;
*[http://retropoke.canalblog.com Rétro Poke (FR)] Philippe Moulin's CPC programming blog&lt;br /&gt;
*[https://www.sikorama.fr Sikorama (FR)] [https://z80code.sikorama.fr/browse z80code] Stéphane Sikora's CPC programming blog&lt;br /&gt;
*[https://amstradsakis.blogspot.com/ Amstrad Sakis] Blog of [[Sakis]]&lt;br /&gt;
*[https://deadketchup.kyuran.be My Ketchup Is Dead (FR)] Blog of [[RedBug]]&lt;br /&gt;
*[http://bdciron.canalblog.com/ Retroblog de BDCIron (FR)] Blog of [[BDCIron]]&lt;br /&gt;
*[https://thecheshirec.at/ CheshireCat's basket (FR)] Blog of [[CheshireCat]]&lt;br /&gt;
*[https://www.amstrad-noob.com/ Amstrad noob] Blog of [[Niall Brady]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Youtube and Twitch ====&lt;br /&gt;
&lt;br /&gt;
*[https://www.youtube.com/@NoelsRetroLab Noels Retro Lab] - lots of hardware related videos, especially repairs&lt;br /&gt;
*[https://www.youtube.com/@AmstradESP Amstrad ESP] El Amstrad CPC en España&lt;br /&gt;
*[https://www.youtube.com/@somosdeamstrad Somos de Amstrad !] Youtube channel of that Facebook group&lt;br /&gt;
*[https://www.youtube.com/@Novabug Novabug] - many CPC games&lt;br /&gt;
*[https://www.youtube.com/@John_B_Gage John Gage] - lots of game reviews but a lot of swearing and sound driven heavily into saturation&lt;br /&gt;
*[https://www.youtube.com/@tempsnyx Temps Nyx (FR)] CPC game reviews&lt;br /&gt;
*[https://youtube.com/@oursonretrogames OursoN Retrogames (FR)] CPC game reviews&lt;br /&gt;
*[https://www.youtube.com/@amaurydurand Amaury Durand] [[BDCIron]]'s CPC demoscene channel&lt;br /&gt;
*[https://www.youtube.com/@AmstradMystical Thomas Naslin] [[Oneman]]'s CPC demoscene channel&lt;br /&gt;
*[https://www.youtube.com/@edouardberge Edouard Bergé] [[Roudoudou]]'s channel, including CPC demoscene and long gameplays of adventure games&lt;br /&gt;
*[https://www.youtube.com/@amstradmaniaque Amstrad Maniaque] Long Gameplays&lt;br /&gt;
*[https://www.youtube.com/@AmstradCPCWorld Amstrad CPC World] Long Gameplays&lt;br /&gt;
*[https://www.youtube.com/@xenomorph50 XeNoMoRPH] Short Gameplays&lt;br /&gt;
*[https://www.youtube.com/@amstradman8836 Amstrad Man] Short Gameplays&lt;br /&gt;
*[https://www.youtube.com/@Orko_Ready Orko Ready (FR)] Amstrad CPC channel&lt;br /&gt;
*[https://www.youtube.com/@DarkArcade_ DarkArcade (FR)] [[DarkSteph]]'s channel&lt;br /&gt;
*[https://www.youtube.com/@monstrogoth Eric Boulat (FR)] [[Ldir Hector]]'s BASIC programming channel&lt;br /&gt;
*[https://www.youtube.com/@Nemo-xq7fi Nemo 59 (FR)] CPC Turbo Pascal programming channel&lt;br /&gt;
*[https://www.youtube.com/@ProfesorRetroman Profesor Retroman (ES)] CPC GameDev con C y Z80 ensemblador&lt;br /&gt;
*[https://www.youtube.com/watch?v=gEZx8QnbZCI&amp;amp;list=PLnpak17jeo9fDUE1zZSxsDkCAX6H-ejhp Apprendre et programmer des jeux en Assembleur Z80 sur Amstrad CPC (FR)] Tutorials by [[Yreggor]]&lt;br /&gt;
*[https://www.youtube.com/@amstradienschannel1643 Amstradiens] Amstrad CPC Channel for Amstrad Fans&lt;br /&gt;
*[https://www.youtube.com/@Xyphoe Xyphoe] - Gaming - almost every week a several hour long live stream on YouTube&lt;br /&gt;
*[https://www.youtube.com/@Amstariga Zisquier (Amstariga) (FR)] Lives&lt;br /&gt;
*[https://www.youtube.com/@KhomenorNostalgeek Khomenor (FR)] Lives&lt;br /&gt;
*[https://www.youtube.com/@jbdaron JB le Daron (FR)] Lives&lt;br /&gt;
*[https://www.youtube.com/@GeekoRex Geekorex (FR)] Lives&lt;br /&gt;
*[https://twitch.tv/noixdecroco NoixDeCroco (FR)] Lives&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Radios and Podcasts ====&lt;br /&gt;
*[https://rolandradio.net/ Roland Radio] [http://streaming.rolandradio.net/rolandradio Stream] [http://streaming.rolandradio.net/ Icecast2 status] Plays 24h the finest Amstrad CPC sounds&lt;br /&gt;
*[https://radio.cpcscene.com/ CPC Scene Radio] Alternative to Roland Radio&lt;br /&gt;
*[https://amstradmuseum.emu-france.info/Fichiers/Liens&amp;amp;Outils/Audiotheque/Audiotheque.htm Audiothèque Amstrad Museum] CPC tunes in MP3 format&lt;br /&gt;
*[https://www.youtube.com/playlist?list=PLBEUG_9b-mC_5Pq5vlCVxd4yQD2jWPL1s YM!Rulez Radio] Tunes recorded on real CPC hardware&lt;br /&gt;
*[https://youtube.com/@AmstradMusic Amstrad Music] Tunes recorded on emulator&lt;br /&gt;
*[http://www.cepeceros.com Cepeceros (ES)] Tu Podcast sobre juegos de Amstrad CPC&lt;br /&gt;
*[https://www.amstrad.es/podcast/ PODCAmSTrad (ES)] El podcast del Amstrad CPC&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Fanzines ====&lt;br /&gt;
&lt;br /&gt;
*[https://fusionretrobooks.com/collections/amtixcpc Amtix! CPC] [https://fusionretrobooks.com/products/fusion-cpc Fusion CPC]&lt;br /&gt;
*[https://www.cpcstore.co.uk/ Colour Personal Computing]&lt;br /&gt;
*[https://archive.org/details/Amstrad-CPC-User-Club-01--ACUC-Magazine- ACUC - Amstrad CPC User Club magazine]&lt;br /&gt;
*[https://shop.amiga-addict.com/amstrad-addict/amstrad-addict-magazine Amstrad Addict]&lt;br /&gt;
*[https://archive.org/details/AmstradAction052 Amstrad Action]&lt;br /&gt;
*[https://fr.ulule.com/users/memory_full/ 64 NOPs]&lt;br /&gt;
*[https://cpcrulez.fr/Scene_Papermags/index.php CPCRulez Scene Papermags Archive]&lt;br /&gt;
*[https://www.zyvaprod.fr/cracknrom/cnrsite/downloadcnr.html Crack'n Rom (FR)] [https://www.zyvaprod.fr/cracknrom/cnrsite/downloadcfb.html CPC Fanz Bzh (FR)] [https://www.zyvaprod.fr/cracknrom/cnrsite/downloadlcd.html Le Canard Déchainé (FR)] [https://www.zyvaprod.fr/cracknrom/cnrsite/articles.html Webzine (FR)]&lt;br /&gt;
*[https://www.la-collec-cpc.fr/ CoverBook (FR)]&lt;br /&gt;
*[http://futurs.chez.com/FQuasarCPC.html Quasar CPC (FR)]&lt;br /&gt;
*[https://ucpmblog.ovh/ ùCPM (FR)] [https://ucpmblog.ovh/ Disc Missing (FR)]&lt;br /&gt;
*[https://elegance-editions.eproshopping.fr/catalogue/318478-Fanzines-Magazines CPC-Anachronie (FR)] [https://elegance-editions.eproshopping.fr/catalogue/318478-Fanzines-Magazines Fanzine GX (FR)]&lt;br /&gt;
*[https://amstradcentpourcent.darkarcade.fr Amstrad Cent Pour Cent (FR)]&lt;br /&gt;
*[https://amstradmuseum.emu-france.info/Fichiers/Liens&amp;amp;Outils/Presse/Presse.htm Presse Amstrad (FR)] Commercial-era Amstrad magazines&lt;br /&gt;
*[https://www.retro-format.com/eightbit.php Eight Bit] All 8-bit computers, not only Amstrad&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Fanbooks ====&lt;br /&gt;
&lt;br /&gt;
*[https://archive.org/details/CesOrdinateursSontDangereux/ Ces ordinateurs sont dangereux - L'aventure Amstrad (1993) (FR)] Written by an employee of Amstrad France&lt;br /&gt;
*[https://www.amazon.es/dp/B0F2L182WH Lo Increíble (2025) (ES)] [https://www.amazon.es/Jes%C3%BAs-Mart%C3%ADnez-del-Vas/dp/841795628X Queremos su dinero (2019) (ES)] El hombre tras Amstrad España&lt;br /&gt;
*[https://omakebooks.com/fr/archives-visuelles/542-les-pubs-de-jeux-amstrad-9782379891663.html Les pubs de jeux Amstrad (2022) (FR)] 160-pages hardcover book&lt;br /&gt;
*[https://fr.ulule.com/users/memory_full/ Memory Full - Une histoire de la demoscene Amstrad CPC (2023) (FR)] 180-pages hardcover book&lt;br /&gt;
*[https://www.amazon.fr/Nos-ann%C3%A9es-Amstrad-Alexandre-Brillant/dp/B0CPDY5WGL Nos années Amstrad (2023) (FR)] 136-pages paperback book&lt;br /&gt;
*[https://www.verkami.com/projects/33020-amstrad-cpc-forever Amstrad CPC Forever (2023) (ES)] 250-pages hardcover book&lt;br /&gt;
*[https://www.editionspixnlove.com/accueil/1104-generation-amstrad-cpc-9782371882225.html Génération Amstrad CPC (2024) (FR)] 536-pages hardcover book&lt;br /&gt;
*[https://gunhedshop.com/Marion-et-les-crocodiles-dAmstrad-p653961281 Marion et les crocodiles d'Amstrad (2024) (FR)] The surprising and little-known story of Amstrad France by Gunhed TV&lt;br /&gt;
*[https://www.amazon.com/dp/B0D577X9VS The Amstrad CPC Reference Guide (2024)] 798-pages paperback book&lt;br /&gt;
*[https://archive.org/details/Alan_Sugar_The_Amstrad_Story_1990_Century Alan Sugar - The Amstrad story (1990)] Written by David Thomas&lt;br /&gt;
*[https://books.google.cd/books?id=9yGtDwAAQBAJ&amp;amp;printsec=frontcover Sir Alan Sugar - The Biography (2009)] Written by Charlie Burden&lt;br /&gt;
*[https://www.amazon.co.uk/stores/author/B0034PP4Q8 Books written by Alan Sugar] Autobiographies&lt;br /&gt;
*[https://www.amazon.co.uk/history-Ocean-Software-Chris-Wilkins-ebook/dp/B0753XYBHP The story of Ocean (2017)] 268-pages book&lt;br /&gt;
*[https://www.amazon.co.uk/Story-US-Gold-Chris-Wilkins-ebook/dp/B07544DG4C The story of US Gold (2017)] 236-pages book&lt;br /&gt;
*[https://www.amazon.fr/Ubisoft-ans-cr%C3%A9ation-depuis-1986/dp/2918771430 Ubisoft, 30 ans de création (2016) (FR)] 224-pages hardcover book&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Technical Documentation ==== &lt;br /&gt;
----&lt;br /&gt;
*[https://archive.org/details/wiki-www.cpcwiki.eu-20230926 CPCWiki (20230926)] CPCWiki - THE Amstrad CPC encyclopedia! dumped with [https://github.com/saveweb/wikiteam3/ wikiteam3 tools]&lt;br /&gt;
*[https://archive.org/details/cpcbooks CPC Books] Books and writings about the Amstrad CPC family of computers&lt;br /&gt;
*[https://mega.nz/folder/93pR2KiA#qlkiFakrZhSzmko65EbTWw/folder/QjxRVKTY Libros y Manuales (ES)] Technical CPC books in Spanish&lt;br /&gt;
*[[User Manual]] Official Amstrad user manuals&lt;br /&gt;
*[[Soft968: CPC 464/664/6128 Firmware]] Official developer documentation&lt;br /&gt;
*[https://acpc.me/ACME/?DOCUMENTS_TECHNIQUES/WEKA Classeurs Weka (FR)] The 1220-pages french reference for CPC developers&lt;br /&gt;
*[http://www.cpctech.org.uk/ Unofficial WWW Amstrad Resource]&lt;br /&gt;
*[https://www.chibiakumas.com/z80/ Learn Assembly Programming with ChibiAkumas] Multi-platform Z80 tutorial &lt;br /&gt;
*[https://asmtradcpc.zilog.fr ASMtrad CPC (FR)] Learn how to code with Z80 Assembler on Amstrad CPC with [[BDCIron]]&lt;br /&gt;
*[https://roudoudou.com/AmstradCPC/programmationAssembleur.html Wanna learn assembly? (FR)] Learn how to code with Z80 Assembler on Amstrad CPC with [[Roudoudou]]&lt;br /&gt;
*[http://logonsystem.eu/html/downloadlogon.htm CRTC Compendium] Everything about the CRTC - incl. examples&lt;br /&gt;
*[http://grimware.org/doku.php Grimware] is a really nice site with hardware info and hacks for the CPC machines... give it a try!&lt;br /&gt;
*[https://web.archive.org/web/20160714235951/https://www.grimware.org/doku.php/documentations/firmware/guide/jumpblock Amstrad Firmware reference] Built-in firmware functions explained&lt;br /&gt;
*[https://web.archive.org/web/20170830173253/https://www.grimware.org/doku.php/documentations/software/locomotive.basic/start Locomotive BASIC reference] Built-in functions and keywords explained&lt;br /&gt;
*[https://www.sean.co.uk/books/amstrad/index.shtm The Basic Idea] Amstrad Basic tutorial by Campursoft&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== News websites ====&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
*[https://www.genesis8bit.fr Genesis 8] - Genesis 8 is a spartan, but often-updated Amstrad-related news site.&lt;br /&gt;
*[https://minitel.darkarcade.fr/index3.php DarkArcade Minitel (FR)] Videotex Amstrad news service&lt;br /&gt;
*[https://www.zyvaprod.fr/cracknrom/cnrsite/archivenews.html Crack'n Rom news (FR)] News archive from CNR webzine&lt;br /&gt;
*[https://www.indieretronews.com/search/label/AMSTRAD%20CPC Indie Retro News] Amstrad CPC news filtering&lt;br /&gt;
*[https://auamstrad.es/ Amigos y Usuarios Amstrad (ES)] News website that has lessons on software development and hardware restoration. It also has a forum, and reviews on software and hardware.&lt;br /&gt;
*[https://amstradpower.es/ Amstrad Power] Spanish CPC-related news site.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Events ====&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
*[https://www.youtube.com/results?search_query=%22Amstrad+Video+Game+Awards+Show%22 The Sugars] Annual Amstrad video game awards show by [[Xyphoe]]&lt;br /&gt;
*[https://bndcodingparty.memoryfull.net/ Benediction Coding Party] Annual Amstrad demoparty organised by [[Eliot]] / Benediction&lt;br /&gt;
*[https://www.demoparty.net/platform/amstrad-cpc Amstrad CPC demoparties] Listing of demoscene events&lt;br /&gt;
*[https://logiker.com/Vintage-Computing-Christmas-Challenge Vintage Computing Christmas Challenge] Annual size coding challenge for retro machines including CPC by [[Logiker]]&lt;br /&gt;
*[https://logiker.com/AMSCII-Compo AMSCII Compo] Annual Amstrad ASCII competition by [[Logiker]]&lt;br /&gt;
*[https://jerres12.net/run/index.htm Border 0: Run&amp;quot;] CPC high-score gaming competition organised periodically by [[Jerres12]]&lt;br /&gt;
*[https://crocofest.fr/ CrocoFest] Annual gathering of Amstradists and other retro computer users. No game console allowed except the GX4000&lt;br /&gt;
*[https://amstradeterno.com/ Amstrad Eterno] The first Amstrad fair in Spain. Includes the Amstrad Eterno awards ceremony for the best games of the year&lt;br /&gt;
*[https://auamstrad.es/retroescena/amstrad-mania-2024/ Amstrad Mania] Exposition, talks and repair workshop&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Others ====&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
*[https://amstrad.com Amstrad.com] Official Amstrad website&lt;br /&gt;
*[https://amstraddigital.co.uk Amstrad Digital] Current marketing agency founded by Alan Sugar and led by his grandson&lt;br /&gt;
*[https://amstradworld.com/ Amstrad India] Official independent Amstrad franchise&lt;br /&gt;
*[https://youtu.be/wp_OhXOIQn4 Amstrad Gamebox] [https://youtu.be/x_l0JI_5VyE Review] [https://youtu.be/cLv-W7-yFCU Drama] New retrogaming console by Amstrad&lt;br /&gt;
*[https://www.amazon.fr/stores/AMSTRAD/page/E4B24068-D603-4465-83F6-1E56A2D44B50 Amstrad store] on Amazon (also distributed in French retail stores)&lt;br /&gt;
*[https://github.com/topics/amstrad-cpc GitHub #amstrad-cpc] GitHub topic filter&lt;br /&gt;
*[https://8bitsdepoder.blogspot.com 8 bits de poder (ES)] Programación del Amstrad CPC usando la libreria 8BP desde BASIC&lt;br /&gt;
*[http://cpccrackers.free.fr CPCCRACKERS] - French site about crackers for the CPC.&lt;br /&gt;
*[https://www.two-mag.com/ Two-Mag] The page of [[Two-Mag]] CPC cracker&lt;br /&gt;
*[https://jerres12.net Border 0] French site about CPC games&lt;br /&gt;
*[http://turpas3.angelfire.com Programming Turbo Pascal on a CPC!] - A collection of Turbo Pascal programs with some CPC Specific programs. &lt;br /&gt;
*[http://www.oldschool-gaming.com/view_index.php?4mat=9 Oldschool gaming] - Games reviews of recent games for the CPC!&lt;br /&gt;
*[http://homebrew.amstradtoday.com/index_uk.htm Amstrad Today Homebrew] Website dedicated to homebrews for the CPC&lt;br /&gt;
*[http://gx4000.co.uk GX4000.co.uk] Website devoted to the hardware and software of the oft-neglected games console.&lt;br /&gt;
*[https://www.gx4000.net/ GX4000.net] French website dedicated to the GX4000&lt;br /&gt;
*[https://cpcwiki.de/ CPCwiki.de] German CPCwiki&lt;br /&gt;
*[https://www.habisoft.com/pcwwiki/doku.php?id=en:start PcwWiki] Amstrad PCW / Schneider Joyce wiki&lt;br /&gt;
*[https://youtu.be/XXBxV6-zamM Micro Men (2009)] BBC movie about the rivalry between Sinclair and Acorn in the early 1980's. Alan Sugar briefly appears in the end.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Outdated / abandoned ====&lt;br /&gt;
----&lt;br /&gt;
*[http://www.octoate.de Octoate.de] - CPC news website in English. Last updated in 2019&lt;br /&gt;
*[http://tacgr.emuunlim.com/ The Amstrad Computer Game Resource] Last updated in 2006&lt;br /&gt;
*[http://thesnakebecomesthekey.wordpress.com The Snake Becomes the Key] is a very nicely-written blog with reviews and thoughts on various CPC games. Last updated in 2007&lt;br /&gt;
*[http://antoine.rozanski.free.fr CPC Museum (FR)] Website dedicated to the Amstrad CPC. Last updated in 2003&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== DEAD  ====&lt;br /&gt;
----&lt;br /&gt;
*[http://www.cepece.info/ CePeCe (ES)] Spanish CPC portal and web-hosting facilities for your CPC webpage.&lt;br /&gt;
*[http://amstrad.cpc.free.fr Amstradeus (FR)] Lots of interviews, manuals for download and much more.&lt;br /&gt;
*[https://web.archive.org/web/20080317151434/https://optimus.demoscene.gr/cpcscene/ The CPC Demoscene] Optimus website about the CPC demoscene with a list of some of the best CPC demos with reviews and screenshots. &lt;br /&gt;
*[https://web.archive.org/web/20250114135536/https://cpcfreak.cpc-live.com/ CPC Freak] Homepage of Kevin (arnoldemu) Thacker's CPC productions&lt;br /&gt;
*[http://www.cpczone.net CPC Zone] Home of the Gamebase, the ultimate collection of information (with screenshots, cover scans, reviews etc) on all games CPC. Also home of the Zone Forum.&lt;br /&gt;
*[http://8bit.yarek.pl/index.html 8bit Projects for Everyone] - Hardware updates for 8-bit computers, also for CPC&lt;br /&gt;
*[https://web.archive.org/web/20081216010826/http://cpc-hardware.com/index.php?op=edito CPC Hardware (FR)] Forum, nice downloads, hardware projects; also an online store for hardware stuff like [[RS232|RS232]] interfaces etc.&lt;br /&gt;
*[http://www.cpc-forum.de CPC-Forum (DE)] The new most important discussion forum for the German-speaking part of the CPC scene.&lt;br /&gt;
*[http://www.cpc6128.eu CPC 6128 Europe] European portal.&lt;br /&gt;
*[http://cpcoxygen.fxwebdevelopment.com/ CPC Oxygen] Home of the same-name great fanzine and AA scan repository.&lt;br /&gt;
*[http://www.terra.es/personal/diegovp Various Amstrad stuff] Including instructions on how to fit or connect a 3.5&amp;quot; drive, hot to connect your CPC to your PC and how to transfer files, among others.&lt;br /&gt;
*[http://cpcretrodev.byterealms.com/en/ #CPCRetroDev] Annual Amstrad CPC game development contest that ran from 2013 to 2023. It is now a GameBoy development contest [https://www.cpcwiki.eu/forum/general-discussion/hi-folks-21822/msg248223/#msg248223 Source]&lt;br /&gt;
*[https://web.archive.org/web/20150827210126/https://pushnpop.net/ Push'n'Pop] Amstrad Demoscene.&lt;br /&gt;
*[http://www.frappr.com/cpcscene/ CPC scene map]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Gotek&amp;diff=126040</id>
		<title>Gotek</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Gotek&amp;diff=126040"/>
				<updated>2025-05-18T18:08:12Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Gotek standard.jpg|thumb|right|Standard Gotek drive]]&lt;br /&gt;
[[File:Custom Gotek drive.jpg|thumb|right|Custom Gotek drive by [[Rodrik Studio]]]]&lt;br /&gt;
&lt;br /&gt;
Gotek is a floppy simulator which works with the CPC. The drives are cheap. &lt;br /&gt;
&lt;br /&gt;
The basic Gotek has a 7-segment 2 digit display which shows the currently selected disk image, a USB socket for a USB memory stick, and 2 buttons to choose previous and next image. &lt;br /&gt;
&lt;br /&gt;
There are additional mods that can be bought:&lt;br /&gt;
* speaker (to simulate the sound of the read/write head stepping as heard in a real drive)&lt;br /&gt;
* eject button&lt;br /&gt;
* rotary dial (turn the dial to select the disc image)&lt;br /&gt;
* LCD/OLED display (this shows more information including the name of the image)&lt;br /&gt;
&lt;br /&gt;
To be useful on the CPC they need:&lt;br /&gt;
* appropriate firmware uploaded to them (e.g. HxC or FlashFloppy)&lt;br /&gt;
* 5v power (an old PC power supply can be used, or you can use the monitor's 5V power output with a Y-splitter cable)&lt;br /&gt;
* a ribbon cable to connect it to the CPC (e.g. an old PC floppy cable which has both 3.5&amp;quot; and 5.25&amp;quot; connectors).&lt;br /&gt;
&lt;br /&gt;
If you have the technical ability then it's easy to install a firmware onto the Gotek, if not, then you can buy Gotek drives with pre-installed firmware.&lt;br /&gt;
&lt;br /&gt;
CPC Disk images are put onto a USB drive which is then plugged into the front of the Gotek.&lt;br /&gt;
&lt;br /&gt;
Now the Gotek behaves as if it is a normal drive connected to the CPC.&lt;br /&gt;
&lt;br /&gt;
There is a difference compared to a real drive: the disc motor signal is not connected internally to the Gotek. This means the ready signal will be active even if the disc motor is off.&lt;br /&gt;
&lt;br /&gt;
EDIT: This is true for the old models. The new model SFRKC30.AT4.35 can pass the motor signal and reacts (delayed if wanted) to it for the ready signal. See below for Flashfloppy firmware.&lt;br /&gt;
&lt;br /&gt;
==HxC Floppy Emulator firmware==&lt;br /&gt;
&lt;br /&gt;
There is a version of the HxC Floppy Emulator firmware that can be used on the Gotek. It must be purchased from the HxC website and can then be installed and used.&lt;br /&gt;
&lt;br /&gt;
The firmware supports multiple computers and their disk image formats as well as the HFE v1 &amp;amp; v3 file formats.&lt;br /&gt;
&lt;br /&gt;
Once the firmware has been installed into a Gotek it can be updated through the USB memory stick.&lt;br /&gt;
&lt;br /&gt;
==FlashFloppy firmware==&lt;br /&gt;
&lt;br /&gt;
FlashFloppy is a free firmware for the Gotek written by Keir Fraser. Although free, Keir welcomes donations to [https://www.macmillan.org.uk/ Macmillan Cancer Support charity in the UK]. &lt;br /&gt;
&lt;br /&gt;
The firmware supports multiple computers and their disk image formats. &lt;br /&gt;
&lt;br /&gt;
As of today the firmware can be installed via a special USB cable into a Gotek and it can be updated through the USB memory stick.&lt;br /&gt;
&lt;br /&gt;
To best attach the Gotek to any CPC, use the following FF.cfg setting:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Floppy-drive interface mode&lt;br /&gt;
interface = shugart&lt;br /&gt;
&lt;br /&gt;
# Host platform&lt;br /&gt;
host = unspecified&lt;br /&gt;
&lt;br /&gt;
# Pins 2 &amp;amp; 34 output (drive-&amp;gt;host) manual configuration&lt;br /&gt;
pin02 = high&lt;br /&gt;
pin34 = rdy&lt;br /&gt;
&lt;br /&gt;
# Rotational offset of disk after a track change&lt;br /&gt;
track-change = realtime&lt;br /&gt;
&lt;br /&gt;
# Rotational offset of disk after draining a write to Flash&lt;br /&gt;
write-drain = realtime&lt;br /&gt;
&lt;br /&gt;
# Index pulses suppressed when RDATA and WDATA inactive?&lt;br /&gt;
index-suppression = yes&lt;br /&gt;
&lt;br /&gt;
# Milliseconds from head-step start to RDATA active.&lt;br /&gt;
head-settle-ms = 12&lt;br /&gt;
&lt;br /&gt;
# Milliseconds delay from motor-on to drive ready.&lt;br /&gt;
motor-delay = 200&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rest of the settings can be used to your liking as they depend on preference and not on hardware emulation.&lt;br /&gt;
&lt;br /&gt;
The best Gotek to buy currently (12/22) is the Model SFRKC30.AT4.35.&lt;br /&gt;
This model features a Artery AT32F435 APU and as well a motor jumper. This completes the emulation as it simulates the motor spinup time.&lt;br /&gt;
You should get one with Rotary encoder and with 128x64 oled display.&lt;br /&gt;
&lt;br /&gt;
The first firmware with correct support for RDATA line release is 3.38 or 4.7 (both to be released as of now). Firmware 3.37 and 4.6a have a bug that prevents it to work correctly. The older Gotek models such as SFR1M44-U100K, SFRM72-U100 or SFRC922D.&lt;br /&gt;
&lt;br /&gt;
For more details on which models to use and which to avoide, see here:&lt;br /&gt;
[https://github.com/keirf/flashfloppy/wiki/Gotek-Models Gotek models on Flashfloppy wiki]&lt;br /&gt;
&lt;br /&gt;
==Physical connection==&lt;br /&gt;
To connect the gotek to the CPC, you can directly connect it to the DDI-1  cable connector (you would need to cut off the noses on the bottom of the cable). It can work both as A drive (no 3&amp;quot; drive required) or as drive B. It can even work as a 3.5&amp;quot; or 5.25&amp;quot; drive for example with parados or VDOS. Please be aware that you cannot use an unmodified DDI-1 together with the Gotek without a normal 3&amp;quot; FD-1 drive. That is because the FD-1 delivers the 5V power to the DDI-1 and without it, it simply does not get any power to run. &lt;br /&gt;
&lt;br /&gt;
You can also connect it to the original cable using an extension like this one:&lt;br /&gt;
&lt;br /&gt;
[https://www.ebay.de/itm/266012797289 1 Stk. x IDC Verlängerungskabel 34 polig 20cm 2.54mm Verbinder #A3769]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.ebay.com/itm/291263866470 6 inch 34-Pin 2x17 2.54-Pitch IDC 34-Wire Flat Ribbon Extension Cable, FF-E06]&lt;br /&gt;
&lt;br /&gt;
There is no cablemode required - neither for the CPC464 nor for 664/6128 external disk connector.&lt;br /&gt;
&lt;br /&gt;
==Related==&lt;br /&gt;
* [[HxC_Floppy_Emulator|HxC Floppy Emulator]]&lt;br /&gt;
* [[FlashFloppy]]&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* [https://github.com/keirf/FlashFloppy FlashFloppy on github]&lt;br /&gt;
* [https://github.com/keirf/flashfloppy/wiki/Gotek-Models Gotek models on Flashfloppy wiki]&lt;br /&gt;
* [https://hxc2001.com/ HxC Floppy Emulator Homepage]&lt;br /&gt;
* [http://www.cpcwiki.eu/forum/applications/cubeios-fat16fat32-rom-for-the-cpc's-with-xmass/ OS-Support]&lt;br /&gt;
* [https://youtu.be/QSLcgWLRztE Un Gotek sur CPC 664/6128 sans rien démonter] by [[Rodrik Studio]]&lt;br /&gt;
* [https://youtu.be/E3raN1yi54c L'ultime Gotek que j'ai dessiné pour CPC] by [[Rodrik Studio]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Peripherals]] [[Category:DIY]][[Category:DATA Storage]] [[Category:Emulator]]&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=File:Custom_Gotek_drive.jpg&amp;diff=126039</id>
		<title>File:Custom Gotek drive.jpg</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=File:Custom_Gotek_drive.jpg&amp;diff=126039"/>
				<updated>2025-05-18T18:07:11Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Gotek&amp;diff=126038</id>
		<title>Gotek</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Gotek&amp;diff=126038"/>
				<updated>2025-05-18T18:06:29Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Gotek standard.jpg|thumb|right|Standard Gotek drive]]&lt;br /&gt;
&lt;br /&gt;
Gotek is a floppy simulator which works with the CPC. The drives are cheap. &lt;br /&gt;
&lt;br /&gt;
The basic Gotek has a 7-segment 2 digit display which shows the currently selected disk image, a USB socket for a USB memory stick, and 2 buttons to choose previous and next image. &lt;br /&gt;
&lt;br /&gt;
There are additional mods that can be bought:&lt;br /&gt;
* speaker (to simulate the sound of the read/write head stepping as heard in a real drive)&lt;br /&gt;
* eject button&lt;br /&gt;
* rotary dial (turn the dial to select the disc image)&lt;br /&gt;
* LCD/OLED display (this shows more information including the name of the image)&lt;br /&gt;
&lt;br /&gt;
To be useful on the CPC they need:&lt;br /&gt;
* appropriate firmware uploaded to them (e.g. HxC or FlashFloppy)&lt;br /&gt;
* 5v power (an old PC power supply can be used, or you can use the monitor's 5V power output with a Y-splitter cable)&lt;br /&gt;
* a ribbon cable to connect it to the CPC (e.g. an old PC floppy cable which has both 3.5&amp;quot; and 5.25&amp;quot; connectors).&lt;br /&gt;
&lt;br /&gt;
If you have the technical ability then it's easy to install a firmware onto the Gotek, if not, then you can buy Gotek drives with pre-installed firmware.&lt;br /&gt;
&lt;br /&gt;
CPC Disk images are put onto a USB drive which is then plugged into the front of the Gotek.&lt;br /&gt;
&lt;br /&gt;
Now the Gotek behaves as if it is a normal drive connected to the CPC.&lt;br /&gt;
&lt;br /&gt;
There is a difference compared to a real drive: the disc motor signal is not connected internally to the Gotek. This means the ready signal will be active even if the disc motor is off.&lt;br /&gt;
&lt;br /&gt;
EDIT: This is true for the old models. The new model SFRKC30.AT4.35 can pass the motor signal and reacts (delayed if wanted) to it for the ready signal. See below for Flashfloppy firmware.&lt;br /&gt;
&lt;br /&gt;
==HxC Floppy Emulator firmware==&lt;br /&gt;
&lt;br /&gt;
There is a version of the HxC Floppy Emulator firmware that can be used on the Gotek. It must be purchased from the HxC website and can then be installed and used.&lt;br /&gt;
&lt;br /&gt;
The firmware supports multiple computers and their disk image formats as well as the HFE v1 &amp;amp; v3 file formats.&lt;br /&gt;
&lt;br /&gt;
Once the firmware has been installed into a Gotek it can be updated through the USB memory stick.&lt;br /&gt;
&lt;br /&gt;
==FlashFloppy firmware==&lt;br /&gt;
&lt;br /&gt;
FlashFloppy is a free firmware for the Gotek written by Keir Fraser. Although free, Keir welcomes donations to [https://www.macmillan.org.uk/ Macmillan Cancer Support charity in the UK]. &lt;br /&gt;
&lt;br /&gt;
The firmware supports multiple computers and their disk image formats. &lt;br /&gt;
&lt;br /&gt;
As of today the firmware can be installed via a special USB cable into a Gotek and it can be updated through the USB memory stick.&lt;br /&gt;
&lt;br /&gt;
To best attach the Gotek to any CPC, use the following FF.cfg setting:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Floppy-drive interface mode&lt;br /&gt;
interface = shugart&lt;br /&gt;
&lt;br /&gt;
# Host platform&lt;br /&gt;
host = unspecified&lt;br /&gt;
&lt;br /&gt;
# Pins 2 &amp;amp; 34 output (drive-&amp;gt;host) manual configuration&lt;br /&gt;
pin02 = high&lt;br /&gt;
pin34 = rdy&lt;br /&gt;
&lt;br /&gt;
# Rotational offset of disk after a track change&lt;br /&gt;
track-change = realtime&lt;br /&gt;
&lt;br /&gt;
# Rotational offset of disk after draining a write to Flash&lt;br /&gt;
write-drain = realtime&lt;br /&gt;
&lt;br /&gt;
# Index pulses suppressed when RDATA and WDATA inactive?&lt;br /&gt;
index-suppression = yes&lt;br /&gt;
&lt;br /&gt;
# Milliseconds from head-step start to RDATA active.&lt;br /&gt;
head-settle-ms = 12&lt;br /&gt;
&lt;br /&gt;
# Milliseconds delay from motor-on to drive ready.&lt;br /&gt;
motor-delay = 200&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rest of the settings can be used to your liking as they depend on preference and not on hardware emulation.&lt;br /&gt;
&lt;br /&gt;
The best Gotek to buy currently (12/22) is the Model SFRKC30.AT4.35.&lt;br /&gt;
This model features a Artery AT32F435 APU and as well a motor jumper. This completes the emulation as it simulates the motor spinup time.&lt;br /&gt;
You should get one with Rotary encoder and with 128x64 oled display.&lt;br /&gt;
&lt;br /&gt;
The first firmware with correct support for RDATA line release is 3.38 or 4.7 (both to be released as of now). Firmware 3.37 and 4.6a have a bug that prevents it to work correctly. The older Gotek models such as SFR1M44-U100K, SFRM72-U100 or SFRC922D.&lt;br /&gt;
&lt;br /&gt;
For more details on which models to use and which to avoide, see here:&lt;br /&gt;
[https://github.com/keirf/flashfloppy/wiki/Gotek-Models Gotek models on Flashfloppy wiki]&lt;br /&gt;
&lt;br /&gt;
==Physical connection==&lt;br /&gt;
To connect the gotek to the CPC, you can directly connect it to the DDI-1  cable connector (you would need to cut off the noses on the bottom of the cable). It can work both as A drive (no 3&amp;quot; drive required) or as drive B. It can even work as a 3.5&amp;quot; or 5.25&amp;quot; drive for example with parados or VDOS. Please be aware that you cannot use an unmodified DDI-1 together with the Gotek without a normal 3&amp;quot; FD-1 drive. That is because the FD-1 delivers the 5V power to the DDI-1 and without it, it simply does not get any power to run. &lt;br /&gt;
&lt;br /&gt;
You can also connect it to the original cable using an extension like this one:&lt;br /&gt;
&lt;br /&gt;
[https://www.ebay.de/itm/266012797289 1 Stk. x IDC Verlängerungskabel 34 polig 20cm 2.54mm Verbinder #A3769]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.ebay.com/itm/291263866470 6 inch 34-Pin 2x17 2.54-Pitch IDC 34-Wire Flat Ribbon Extension Cable, FF-E06]&lt;br /&gt;
&lt;br /&gt;
There is no cablemode required - neither for the CPC464 nor for 664/6128 external disk connector.&lt;br /&gt;
&lt;br /&gt;
==Related==&lt;br /&gt;
* [[HxC_Floppy_Emulator|HxC Floppy Emulator]]&lt;br /&gt;
* [[FlashFloppy]]&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* [https://github.com/keirf/FlashFloppy FlashFloppy on github]&lt;br /&gt;
* [https://github.com/keirf/flashfloppy/wiki/Gotek-Models Gotek models on Flashfloppy wiki]&lt;br /&gt;
* [https://hxc2001.com/ HxC Floppy Emulator Homepage]&lt;br /&gt;
* [http://www.cpcwiki.eu/forum/applications/cubeios-fat16fat32-rom-for-the-cpc's-with-xmass/ OS-Support]&lt;br /&gt;
* [https://youtu.be/QSLcgWLRztE Un Gotek sur CPC 664/6128 sans rien démonter] by [[Rodrik Studio]]&lt;br /&gt;
* [https://youtu.be/E3raN1yi54c L'ultime Gotek que j'ai dessiné pour CPC] by [[Rodrik Studio]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Peripherals]] [[Category:DIY]][[Category:DATA Storage]] [[Category:Emulator]]&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=File:Gotek_standard.jpg&amp;diff=126037</id>
		<title>File:Gotek standard.jpg</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=File:Gotek_standard.jpg&amp;diff=126037"/>
				<updated>2025-05-18T18:05:31Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Minitel&amp;diff=126036</id>
		<title>Minitel</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Minitel&amp;diff=126036"/>
				<updated>2025-05-18T17:54:45Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: /* Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Minitel terminal.jpg|thumb|right|Minitel 1B]]&lt;br /&gt;
[[File:Minitel Amcharge.jpg|thumb|right|3615 AMCHARGE]]&lt;br /&gt;
&lt;br /&gt;
The Télétel (usually called Minitel, named after the terminal) was a videotex online service accessible through telephone lines. Videotex is a modified interactive version of the Teletext protocol that existed in TV broadcast.&lt;br /&gt;
&lt;br /&gt;
Launched commercially in 1982, it was the world's first and most successful mass-market online service prior to the World Wide Web.&lt;br /&gt;
&lt;br /&gt;
Only the Minitel service, which used on-demand access through the telephone network, was commercially successful for a long time. Subscription-based services like Prestel (UK), Bildschirmtext (Germany), Videotel (Italy), Télidon (Canada), and Captain (Japan) failed commercially and were stopped soon after testing.&lt;br /&gt;
&lt;br /&gt;
In the United States, there was a stalled attempt by USWest to bring this service to two test markets: Minneapolis and Omaha. [https://fullempty.sh/posts/exeltel2.html Source]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Amstrad CPC services ==&lt;br /&gt;
&lt;br /&gt;
In the CPC era, multiple services existed to download games for the Amstrad CPC via Minitel, like 3615 AMSTRAD, 3615 AMCHARGE and 3615 MICROCHARGE.&lt;br /&gt;
&lt;br /&gt;
[[File:Minitel CPC kits.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nowadays ==&lt;br /&gt;
&lt;br /&gt;
The Minitel can still be used today to access your Amstrad news.&lt;br /&gt;
&lt;br /&gt;
[[File:Minitel MiniPAVI.jpg|400px]]&lt;br /&gt;
[[File:Minitel Amstrad News.jpg|400px]]&lt;br /&gt;
[[File:Minitel DarkArcade Server.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
*[https://minitel.darkarcade.fr/index3.php DarkArcade Minitel (FR)] Videotex Amstrad news service&lt;br /&gt;
*[https://xn--multipli-i1a.fr/minimit/ Minimit] To connect your Minitel to servers as the PSTN has been retired&lt;br /&gt;
*[https://youtu.be/BpDrWriI7lo Je teste le Minimit] [https://youtu.be/F2mgDSBWOxI Le Minitel en 2023, petit tour sur des Micro-serveurs] [https://youtu.be/WVX69zegK2c Le Minitel en 2025] by [[Kaspius Le Vrai]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Non CPC Computers]]&lt;br /&gt;
[[Category:Peripherals]]&lt;br /&gt;
[[Category:Network]]&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Links&amp;diff=126035</id>
		<title>Links</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Links&amp;diff=126035"/>
				<updated>2025-05-18T17:54:12Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: /* News websites */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Websites| ]][[Category:Network| ]][[Category:Scene group| ]][[Category:Wiki| ]][[Category:Hardware| ]][[Category:Software| ]][[Category:CPC History|**]]&lt;br /&gt;
&lt;br /&gt;
==== Collections  ====&lt;br /&gt;
----&lt;br /&gt;
*[https://acpc.me/index.php?language=eng Amstrad CPC Memory Engraved] Huge collection of documents, manuals, literature, magazines, marketing material and much more&lt;br /&gt;
*[https://www.cpc-power.com/cpcarchives/ CPC Archives] Collection of documents and tools related to the Amstrad CPC&lt;br /&gt;
*[https://archive.org/details/AmstradCPCManuals_201812 Amstrad CPC Manuals] Manuals for the games released on the Amstrad CPC&lt;br /&gt;
*[https://www.cpc-power.com/ CPC-Power] Collection of most of the software that was ever released. Also includes ROMs and patched versions for programs with bugs.&lt;br /&gt;
*[https://cpcrulez.fr CPC Rulez (FR)] A great french site, updated frequently, with games, reviews, utilities, type-ins, demos, hardware info. A treasure and a must-visit (french pages can easily be translated with Google translate or similar tools).&lt;br /&gt;
*[http://www.amstrad.es/ Amstrad ESP (ES)] Collection of CPC software downloadable individually with Spanish media and manual&lt;br /&gt;
*[https://www.velus.be/ Crackers Velus (FR)] Collection of thousands of CPC games downloadable individually&lt;br /&gt;
*[http://cpccrackers.free.fr/Downloads/index.php CPC Crackers Downloads] Collection of thousands of cracked CPC games, sorted by cracking group&lt;br /&gt;
*[http://cngsoft.no-ip.org/cpc_lzx.htm CPC Compactages by CNGsoft] CPC softwares compressed in compact archives&lt;br /&gt;
*[http://cpcgamescd.amstrad.es/ CPCGamesCD] ISO containing a Windows launcher and 4429 CPC games included&lt;br /&gt;
*[https://acpc.me/ACME/?COLLECTIONS/ABRAXAS Abraxas CPC Collection] 1800 titles in dsk and cdt formats on 2 DVDs&lt;br /&gt;
*[https://github.com/Amstrad-CPC-File-Archive/ Amstrad Demo Files/Discs Archives] Collection of scene artifacts&lt;br /&gt;
*[https://archive.org/details/DemobaseAmstradCpc Demobase Amstrad CPC] [https://gb64.com/forum/viewtopic.php?t=5053] Downloadable archive of demos from the CPC demoscene&lt;br /&gt;
*[https://www.cpc-power.com/gamebasecpc/index.php?page=full Gamebase CPC] [https://gb64.com/forum/viewtopic.php?t=2025&amp;amp;start=195] Amstrad CPC Gamebase by Loic Daneels containing 3300 softwares dumped only from originals and complete with scans, manuals, media, etc...&lt;br /&gt;
*[https://gb64.com/forum/viewtopic.php?t=4233&amp;amp;start=90 Amstrad Mania] Amstrad CPC Gamebase by Mark (Sparky) Hardman containing 5782 softwares. Contains a selection of everything: original disk &amp;amp; tape dumps, hacks, cracks and trainers, homebrews&lt;br /&gt;
*[https://archive.org/details/GoodCPCV3.1415 GoodCPC] Downloadable archive of 27103 softwares for the CPC. Tons of duplicates though&lt;br /&gt;
*[https://archive.org/details/Amstrad_CPC_TOSEC_2012_04_23 Amstrad CPC TOSEC] Downloadable archive of 5575 softwares for the CPC. Dumps are of dubious quality&lt;br /&gt;
*[https://archive.org/details/amstrad-cpc-clean-db Clean CPC DB] Based on tosec+cpcpower site. A database that has checked every game so that you don't have to&lt;br /&gt;
*[https://archive.org/details/hearto-1g1r-collection Hearto's 1G1R (1game=1rom) collection] Tosec 2020-10-31, trimmed manually&lt;br /&gt;
*[https://archive.org/details/mame-merged MAME SL ROM Set (Merged)] MAME software archives cpc_flop.zip and cpc_cass.zip for Amstrad CPC&lt;br /&gt;
*[https://archive.org/details/AmstradCPCGameCollectionByGhostware Amstrad CPC Game Collection] Downloadable archive of 4242 game files by Ghostware. Lots of duplicates though&lt;br /&gt;
*[https://archive.org/details/amstrad-cpc_202203 Amstrad CPC ROM set] Downloadable archive of 2416 game files by rfl0wpr with no duplicate&lt;br /&gt;
*[https://archive.org/details/amstrad-cpc-cdt-collection Amstrad CPC cassette images] Collection of over 3500 tape-images by VincentGR&lt;br /&gt;
*[https://mega.nz/folder/93pR2KiA#qlkiFakrZhSzmko65EbTWw/folder/d7gyjSBS Juegos en MP3] Collection of tape-images in MP3 format&lt;br /&gt;
*[https://www.spinpoint.org/M4backup.zip M4backup by Mr.DVG] Collection of 1300 games tested and working with [[M4 Board]]&lt;br /&gt;
*[https://mega.nz/folder/93pR2KiA#qlkiFakrZhSzmko65EbTWw/file/Yu50QDCa Epidemiom M4-HFE] Collection of 900 games and programs in DSK and HFE for the [[M4 Board]]&lt;br /&gt;
*[[Converted GX4000 Software]] Collection of 1000+ games converted to standard Amstrad cartridges&lt;br /&gt;
*[http://www.cpcgamereviews.com/ CPC Game Reviews] Collection of 2400+ CPC games with review and download link. Also contains a collection of advertisements which have been scanned from Amstrad CPC magazines.&lt;br /&gt;
*[https://computeremuzone.com/amstrad/?l=en Amstrad Zone] Collection of 500+ CPC games with review and download link&lt;br /&gt;
*[http://www.cpc-history.com CPC History] CPC database listing 3200+ titles&lt;br /&gt;
*[https://www.mobygames.com/platform/cpc/ Moby Games] Games database listing 2300+ games for Amstrad CPC&lt;br /&gt;
*[https://archive.org/details/cpc-roms CPC Roms] Collection of 16KB ROM chip games by VincentGR&lt;br /&gt;
*[[Snapshot Archive|CPCWiki Snapshot Archive]] Collection of game snapshots&lt;br /&gt;
*[https://www.cpc-power.com/cpcarchives/index.php?page=articles&amp;amp;num=10 CPC-Power SNR sessions] Collection of 400+ SNR game sessions&lt;br /&gt;
*[https://amstradmuseum.emu-france.info/Fichiers/Projets/cpcloadingscreenremake_CPC/cpcloadingscreenremake.html Remakes écrans-titres CPC] Collection of CPC title screens remake&lt;br /&gt;
*[https://amstradmuseum.emu-france.info/Fichiers/Liens&amp;amp;Outils/Screenshots/ Amstrad Museum Screenshots] Collection of CPC game screenshots&lt;br /&gt;
*[https://www.spriters-resource.com/amstrad_cpc/ The Spriters Resource] Collection of sprite sheets ripped from Amstrad CPC games&lt;br /&gt;
*[https://github.com/cpcepower/CPCMix/ CPCMix] Collection of thousands of Amstrad music files ripped in ASM and BASIC format&lt;br /&gt;
*[https://amstradmuseum.emu-france.info/Fichiers/Liens&amp;amp;Outils/TopMusic/YM/ TopMusic YM] Small collection of Amstrad YM music files&lt;br /&gt;
*[https://amstradmuseum.emu-france.info/Fichiers/Liens&amp;amp;Outils/Jaquettes/ Amstrad Museum Jaquettes] All CPC game covers&lt;br /&gt;
*[https://www.la-collec-cpc.fr/ La Collec' CPC] 800 game covers and media stickers remastered for the best games of the CPC&lt;br /&gt;
*[http://cpmarchives.classiccmp.org/ Humongous CP/M software archives] Collection of the great CP/M repositories past and present&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Game Launchers for real CPCs =====&lt;br /&gt;
&lt;br /&gt;
*[https://cdtplayer.hypha.ws/ Hypha's CDT collection and player] Web-browser based cdt/wav/flac/mp3 player with thousands of games available to use&lt;br /&gt;
*[https://pelrun.github.io/PlayUEF/PlayUEF.html Pelrun's CDT collection and player] Web-browser based cdt/tzx/uef player with thousands of games available to use&lt;br /&gt;
*[[Amsteam]] Online service that is currently free of charge, but the creator has mentioned that some future games will require payment. To be used on specific Amsteam hardware&lt;br /&gt;
*[https://cpcrulez.fr/applications_util-rulez-change-m4wifi.htm RulezCharge] Online service that is free of charge. To be used on M4 Board or CPC Booster. Note: &amp;quot;Charge&amp;quot; means &amp;quot;Load&amp;quot; in french, as in download. It does not mean charging money&lt;br /&gt;
*[https://github.com/Frange/Amstrad-M4-Board Amstrad M4] Navigation and execution of programs and games from a mobile Android device to an Amstrad CPC equipped with an M4 Board&lt;br /&gt;
*[[M4FE - A front-end for M4|M4FE]] Front-end for the M4 Board available as a ROM&lt;br /&gt;
*[https://web.archive.org/web/20181113190515/http://amstrad.esy.es/ M4 Explorer] Another front-end for the M4 Board. It is not in ROM format. The files are installed on the root of the microSD card&lt;br /&gt;
*[https://www.cpcwiki.eu/forum/applications/filelauncher-(acmedosm4dos)/ FileLauncher] Front-end for the X-Mass or M4 Board available as a ROM&lt;br /&gt;
*[https://www.cpcwiki.eu/forum/applications/lilicpc-2-2-m4-ulifac-loaders-available-now/ LiliCPC] Warehouse of thousands of loaders to run the games and applications, organized in intuitive navigation menus to be used on CPC with an ULIfAC or M4 Board&lt;br /&gt;
*[http://amsnet.chez.com/ UniLoad] CPC Launcher with 1000+ games included to be used on CPC with any mass-storage expansion supported by [[UniDOS]] (M4 Board, X-Mass, Symbiface II, Albireo, etc...). A tool is also provided to create your own game database&lt;br /&gt;
*[https://cpcrulez.fr/applications_disc-hxc_floppy_emulator_manager.htm HxC Floppy Emulator Manager] CPC front-end for the [[Gotek]] floppy drive with [[HxC Floppy Emulator|HxC]] or [[FlashFloppy]]&lt;br /&gt;
*[https://cpcrulez.fr/applications_util-cprselect.htm CprSelect] Front-end for the [[C4CPC]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Online Emulators  =====&lt;br /&gt;
&lt;br /&gt;
*[http://crocods.org/web/ CrocoDS]&lt;br /&gt;
*[https://floooh.github.io/tiny8bit/ Tiny Emus]&lt;br /&gt;
*[https://devilmarkus.de/ WebGL 3d 8-bit]&lt;br /&gt;
*[https://8bitworkshop.com/v3.11.0/?file=hello.asm&amp;amp;platform=cpc.6128 8bitworkshop IDE]&lt;br /&gt;
*[https://benchmarko.github.io/CPCBasic/index.html?example=cpcbasic CPC BASIC]&lt;br /&gt;
*[https://bzhgames.xyz/amstrad.php BZH Games] Includes ongoing highscore competition&lt;br /&gt;
*[https://www.amstradcpc.es/doku.php?id=emus Amstrad ESP]&lt;br /&gt;
*[https://amstradpower.es/juega-online/ Juega Online]&lt;br /&gt;
*[https://www.juegotk.com/emulador-online/2/amstrad-cpc464.html JuegoTk]&lt;br /&gt;
*[http://www.amstradcpcgames.eu AmstradCPCgames.eu]&lt;br /&gt;
*[https://online.oldgames.sk/play/cpc Online OldGames]&lt;br /&gt;
*[[Emulators]] Full list of Amstrad CPC emulators&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== File servers  ====&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
*[https://ftp.nvg.ntnu.no/pub/cpc/ NVG]&lt;br /&gt;
*[https://ftp.lip6.fr/pub/amstrad/ LIP6] &lt;br /&gt;
*[http://cpmarchives.classiccmp.org/cpm/mirrors/ftp.demon.com/pub/cpm/ CPM] - related Amstrad things&lt;br /&gt;
*[ftp://ftp.cpcszene.de/ CPC Szene]&lt;br /&gt;
*[ftp://amstrad:amstrad@amstrad.serveftp.com Amstrad ServeFTP]&lt;br /&gt;
*[https://amstradmuseum.emu-france.info/Fichiers/DSK/ Amstrad Museum GoodCPC DSK full-set]&lt;br /&gt;
*[https://two-mag.com/cpc/ Two-Mag CPC games]&lt;br /&gt;
*[https://mega.nz/folder/93pR2KiA#qlkiFakrZhSzmko65EbTWw Amstrad Power folder on MEGA]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Chat  ====&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
*[https://web.libera.chat/#cpc-fr IRC channel] #cpc-fr on Libera-chat network, french scene channel (replacing #cpc on freenode, #cpc on Neoxys and #cpc on Europnet)&lt;br /&gt;
*[news://comp.sys.amstrad.8bit Newsgroup CSA8]&lt;br /&gt;
*[https://amstrad.simulant.uk/ Amstrad BBS] Telnet Bulletin Board System&lt;br /&gt;
&lt;br /&gt;
===== ChatGPT =====&lt;br /&gt;
&lt;br /&gt;
*[https://chatgpt.com/g/g-4N6Ts4Y3O-amstrad-cpc-engineer Amstrad CPC Engineer (by Fergus Leen)] Specialised in Z80 Assembly for the Amstrad CPC&lt;br /&gt;
*[https://chatgpt.com/g/g-V3gsOcx7F-cpc-z80-assembly-engineer CPC Z80 Assembly Engineer (by Vassilis N. Perantzakis)] Formal, beginner-friendly Z80 assembly guide&lt;br /&gt;
*[https://github.com/markburns/amstrad_gpt AmstradGpt] Get your Amstrad CPC to talk to ChatGPT via a USB to RS232 serial cable&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Discord Servers =====&lt;br /&gt;
&lt;br /&gt;
*[https://discord.gg/4QZqfCr Amstrad CPC Community]&lt;br /&gt;
*[https://discord.gg/eFmDcMu Amstrad.eu (FR)]&lt;br /&gt;
*[https://discord.gg/YP3tVvx NoixDeCroco (FR)]&lt;br /&gt;
*[https://discord.gg/dwNNbTupT8 ASMtrad CPC (FR)]&lt;br /&gt;
*[https://discord.gg/FvpPbNQ5ju Orgams]&lt;br /&gt;
*[https://discord.gg/rKxFPndHPw Praline]&lt;br /&gt;
*[https://discord.gg/nd476U5 Xyphoe's Amserver]&lt;br /&gt;
*[https://discord.gg/eVQQnzFYkD SymbOS &amp;amp; Quigs]&lt;br /&gt;
*[https://discord.gg/ZXy3TZMSrj Rodrik Studio - PicoCPC]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Telegram Groups =====&lt;br /&gt;
&lt;br /&gt;
*[https://t.me/amstradeterno Amstrad Eterno]&lt;br /&gt;
*[https://t.me/amstradpower Amstrad Power]&lt;br /&gt;
*[https://t.me/ensambladorZXSpectrum Ensamblador Z80 (ZX Spectrum, Amstrad, MSX y más)]&lt;br /&gt;
*[https://t.me/cpctelera_asm CPCtelera]&lt;br /&gt;
*[https://t.me/LiliCPC LiliCPC]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Facebook Groups =====&lt;br /&gt;
&lt;br /&gt;
*[https://www.facebook.com/groups/5357712057 Amstrad CPC 464] - the biggest and most active english speaking group - not only for 464&lt;br /&gt;
*[https://www.facebook.com/groups/298743294763933 Amstrad CPC 6128]&lt;br /&gt;
*[https://www.facebook.com/groups/1066160190075999/ AMSTRAD CPC CLASSIC GAMING AND DEMOS]&lt;br /&gt;
*[https://www.facebook.com/groups/354709275176426/ AMSTRAD CPC LATEST GAMES]&lt;br /&gt;
*[https://www.facebook.com/cpclegends/ CPC Legends]&lt;br /&gt;
*[https://www.facebook.com/groups/281939335598581/ Amstrad GX4000/PLUS Users]&lt;br /&gt;
*[https://www.facebook.com/groups/688629749193585/ Amstrad CPC/PCW/NC/GX Users]&lt;br /&gt;
*[https://www.facebook.com/groups/amstrad4ever Amstrad 4Ever]&lt;br /&gt;
*[https://www.facebook.com/groups/1380187495418957/ Amstrad For Everyone] - not only CPC&lt;br /&gt;
*[https://www.facebook.com/groups/181195638970447/ Amstrad 8bit computers]&lt;br /&gt;
*[https://www.facebook.com/groups/168233427111563/ Amstrad Collective]&lt;br /&gt;
*[https://www.facebook.com/groups/2137490036569352/ Somos de Amstrad !]&lt;br /&gt;
*[https://www.facebook.com/groups/577133703114361/ Asociación Amstrad Eterno]&lt;br /&gt;
*[https://www.facebook.com/groups/guamstrad/ Grupo de Usuarios Amstrad (GUA)]&lt;br /&gt;
*[https://www.facebook.com/groups/auamstrad/ Amigos y Usuarios de Amstrad (AUA)]&lt;br /&gt;
*[https://www.facebook.com/groups/cpcuser Amstrad CPC User] - Italian group&lt;br /&gt;
*[https://www.facebook.com/groups/2277697035789023/ Amstrad - Schneider CPC] - German group&lt;br /&gt;
*[https://www.facebook.com/groups/466173504171187/ AMSTRAD.PL] - Polish group&lt;br /&gt;
*[https://www.facebook.com/groups/940816202700187/ Amstrad CPC Danmark]&lt;br /&gt;
*[https://www.facebook.com/groups/AmstradCpcCom/ Amstrad CPC Türkiye]&lt;br /&gt;
*[https://www.facebook.com/groups/3348293601902686/ Amstrad CPC Greek Community]&lt;br /&gt;
*[https://www.facebook.com/groups/462601654365944/ Amstrad Cpc Users Group Australia]&lt;br /&gt;
*[https://www.facebook.com/groups/amstradbelgique/ Amstrad Belgique]&lt;br /&gt;
*[https://www.facebook.com/groups/amstrad.eu/ Amstrad.eu CPC 464 / 664 / 6128 Old &amp;amp; + / GX4000] - mostly French &lt;br /&gt;
*[https://www.facebook.com/groups/1120607071477318/ Amstrad CPC pour toujours and beyond]&lt;br /&gt;
*[https://www.facebook.com/groups/AmstradCPCMemoireEcrite/ Amstrad CPC Mémoire Ecrite]&lt;br /&gt;
*[https://www.facebook.com/groups/699366355196951/ 100% Amstrad CPC]&lt;br /&gt;
*[https://www.facebook.com/groups/amstradiens/ Amstradiens] - the biggest and most active group&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Web Forums =====&lt;br /&gt;
&lt;br /&gt;
*[https://www.cpcwiki.eu/forum/ CPCwiki forum]&lt;br /&gt;
*[https://cpcrulez.fr/forum/ CPCRulez forum (FR)]&lt;br /&gt;
*[https://amstrad.eu/ Amstrad.eu (FR)] [https://phenixinformatique.com Old website phenixinformatique.com] Previously used the URL cpcscene.com&lt;br /&gt;
*[https://amstradplus.forumactif.com/ Amstrad Plus / Cpc Forum (FR)]&lt;br /&gt;
*[http://www.amstrad.es/forum/ Amstrad ESP forum (ES)]&lt;br /&gt;
*[https://cpcwiki.de/forum/ CPCwiki.de forum (DE)]&lt;br /&gt;
*[https://computeremuzone.com/amstrad/?l=en Amstrad Zone] Subsection of computeremuzone.com&lt;br /&gt;
*[https://www.reddit.com/r/Amstrad/ r/Amstrad] Amstrad sub-Reddit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Shops / Groups to buy/sell hardware and games  ====&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
*[https://hobbyretro.com/amstrad Hobbyretro.com] Spanish shop&lt;br /&gt;
*[https://www.cpcstore.co.uk/ CPCStore.co.uk] UK shop&lt;br /&gt;
*[https://www.sellmyretro.com/category/Retro+Computers/Amstrad Sell-My-Retro] portal - some sellers including Zaxon sell through this shop&lt;br /&gt;
*[https://www.sintech-shop.de/retro-atari-commodore-sinclair-etc/amstrad-schneider Sintech] some software, 6128/Plus keyboard membranes&lt;br /&gt;
*[https://lotharek.pl/ Lotharek's Lair] Retro hardware manufacturer&lt;br /&gt;
*[https://www.icompplus.com/ IcompPlus] original new-old-stock Amstrad ICs&lt;br /&gt;
*[https://www.facebook.com/groups/amstradforsale/ Amstrad for sale] Facebook group&lt;br /&gt;
*[http://www.amibay.com/forumdisplay.php?f=44 AMIBAY - Hardware For Sale]&lt;br /&gt;
*[http://www.amibay.com/forumdisplay.php?f=50 AMIBAY - Wanted Hardware]&lt;br /&gt;
*[https://www.ebay.co.uk/str/abiantfosdxr Amstrad and Co]&lt;br /&gt;
*[https://pixel.rodrik.ch/cartouche Rodrik cartridges] Game cartridges 100% compatible with the original&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Blogs/Websites of individuals and groups ====&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===== Hardware-related  =====&lt;br /&gt;
&lt;br /&gt;
*[http://www.zock.com/8-Bit/D_CPCguide.HTML G.o.St.-SOFT's CPC-Hardwareführer at 8-Bit-Nirvana (DE)] Lots of tips and tricks, but no recent updates&lt;br /&gt;
*[https://www.oocities.org/siliconvalley/park/6129/engmain.htm Virtual Net 96] Amstrad CPC local network protocol&lt;br /&gt;
*[http://siou.free.fr/General/Pages/index-cpc6128.html Siou's projects] CPCISA and Video digitizer&lt;br /&gt;
*[https://www.hanssummers.com/cpcng.html CPCng] CPC Next Generation&lt;br /&gt;
*[https://bread80.com/category/amstrad-cpc/ bread80.com] Some analysis of Firmware and BASIC logic (and also the video subsystem- hardware)&lt;br /&gt;
*[http://www.amstradtoday.com/ Amstrad Today (FR)] Many Tips for Amstrad CPC&lt;br /&gt;
*[https://www.centpourcent.net/ Cent Pour Cent] TotO's MX4 hardware expansions&lt;br /&gt;
*[[PulkoTronics]] PulkoMandy's hardware expansions&lt;br /&gt;
*[http://www.tmtlogic.com/ TMTLogic] CPC and MSX hardware expansions&lt;br /&gt;
*[https://www.spinpoint.org/ Spinpoint] Duke's M4 Board and Imperium Solo hardware&lt;br /&gt;
*[http://retroworkbench.blogspot.com/ ikonsgr 80's Home Micros WorkBench] CPC, Spectrum, Amiga hardware projects&lt;br /&gt;
*[https://pelrun.github.io/cpc-schematics/ CPC schematics] KiCad transcription of the CPC6128 motherboard&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Software-related  =====&lt;br /&gt;
&lt;br /&gt;
*[https://espsoft.blogspot.com ESPsoft (ES)] Blog on Spanish homebrews for the CPC.&lt;br /&gt;
*[https://playonretro.itch.io/ Play on retro] Homebrew retro games editor&lt;br /&gt;
*[http://www.mojontwins.com The Mojon Twins (ES)] Homebrew developer group that focuses on creating games for retro systems, among which is the CPC.&lt;br /&gt;
*[https://www.4mhz.es/en/ 4MHz]  Homebrew developer group that focuses on creating games for retro systems that use the Z80 CPU.&lt;br /&gt;
*[http://www.retroworks.es/index_en.php RetroWorks]  Z80 homebrew games developer&lt;br /&gt;
*[https://altanerus-dog.itch.io/ Altanerus Dog (ES)] CPC and PC homebrew games developer&lt;br /&gt;
*[https://www.usebox.net/jjm/ Usebox.net] Homebrew studio that focuses on creating games for retro systems, among which is the CPC.&lt;br /&gt;
*[https://mananuk.itch.io/ Mananuk] Homebrew game developer for retro systems, including the CPC&lt;br /&gt;
*[https://x.com/AmstradGGP AmstradGGP] Twitter account of this CPC homebrew games developer group&lt;br /&gt;
*[https://zisquier.itch.io/ Zisquier games] CPC homebrew games developer&lt;br /&gt;
*[http://www.prodatron.net Prodatron's page] ([[Prodatron|Prodatrons]] homepage includes info and downloads of his productions as well as a lot of downloads for CPC Digitracker modules (MDL), OCP Art Studio pictures and Scene demos)&lt;br /&gt;
*[http://www.symbos.de SymbOS] Graphical Z80 Multitasking Operating System [[SymbOS]]&lt;br /&gt;
*[http://www.FutureOS.de FutureOS] [[FutureOS]] is an revolutionary operating system for the CPC6128 and CPCPlus&lt;br /&gt;
*[http://orgams.wikidot.com/ Orgams] Ultimate Z80 suite on Amstrad CPC&lt;br /&gt;
*[http://www.cpcmania.com/news.htm CPC Mania] - some tools like CPR tools, CPCDiskXP, CPCTapeXP - plus some technical informations&lt;br /&gt;
*[http://schneidercpc.cf2.de Domes-DOS Schneider/Amstrad CPC dedication] - Domes-DOS's CPC website in the design of an GT65 green monitor (with download of his DART-logging tool and lots of infos about the CPC series)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Demoscene =====&lt;br /&gt;
&lt;br /&gt;
*[https://memoryfull.net/index.php Memory Full] All about the CPC demoscene&lt;br /&gt;
*[https://64nops.wordpress.com/ 64 NOPs] CPC demoscene tech blog&lt;br /&gt;
*[http://cpc.sylvestre.org/index.html Les Sucres en morceaux (FR)] all the news relating to the productions of &amp;quot;Les Sucres en Morceaux&amp;quot; and many articles relating to the Amstrad CPC.&lt;br /&gt;
*[https://amstradmuseum.emu-france.info/ Amstrad Museum (FR)] Website of the CPC graphic artist [[Titan]]&lt;br /&gt;
*[https://www.praline-cpc.fr/barjack/ Barjack (FR)] Website of the CPC graphic artist [[Barjack]] / Praline&lt;br /&gt;
*[https://twitter.com/batman_group Batman Group (ES)] Twitter account of the Amstrad and Amiga Demogroup [[Batman Group]]&lt;br /&gt;
*[http://tj.gpa.free.fr/ Tom&amp;amp;Jerry GPA (FR)] The page of [[GPA]] Demogroup&lt;br /&gt;
*[https://astimpact.weebly.com/ AST Impact (FR)] The page of [[Impact]] Demogroup&lt;br /&gt;
*[http://arkos.cpcscene.com/ Arkos Demogroup] - The page of [[Arkos|Arkos]], with some great demos, diskmags, games and tools.&lt;br /&gt;
*[http://futurs.chez.com/ Futurs'] The page of [[Futurs']] Demogroup&lt;br /&gt;
*[http://www.logonsystem.eu/ Logon System] The page of [[Logon System]] Demogroup&lt;br /&gt;
*[http://benediction.cpcscene.net/ Benediction] The page of [[Benediction]] Demogroup&lt;br /&gt;
*[https://vanity.memoryfull.net/ Vanity] The page of [[Vanity]] Demogroup&lt;br /&gt;
*[https://pulkomandy.github.io/shinra.github.io/ Shinra] The page of [[Shinra]] Demogroup&lt;br /&gt;
*[http://tafcpc.free.fr/ TAF HQ] The page of [[TAF]] Demogroup&lt;br /&gt;
*[https://betasoftcologne.github.io/ BetaSoftCologne's place] The page of [[BSC]] Demogroup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Blogs =====&lt;br /&gt;
&lt;br /&gt;
*[http://norecess.cpcscene.net NoRecess] Blog of [[NoRecess]]&lt;br /&gt;
*[https://blog.logonsystem.eu/ Logon System (FR)] Blog of [[Longshot]]&lt;br /&gt;
*[https://overflowlogonsystem.wixsite.com/amstradcpc/ Overflow's RAndom Memory] Blog of [[Overflow]]&lt;br /&gt;
*[https://muckypaws.com/category/amstrad/ Mucky Paws] [[The Argonaut]] blog&lt;br /&gt;
*[http://retropoke.canalblog.com Rétro Poke (FR)] Philippe Moulin's CPC programming blog&lt;br /&gt;
*[https://www.sikorama.fr Sikorama (FR)] Stéphane Sikora's CPC programming blog&lt;br /&gt;
*[https://amstradsakis.blogspot.com/ Amstrad Sakis] Blog of [[Sakis]]&lt;br /&gt;
*[https://deadketchup.kyuran.be My Ketchup Is Dead (FR)] Blog of [[RedBug]]&lt;br /&gt;
*[http://bdciron.canalblog.com/ Retroblog de BDCIron (FR)] Blog of [[BDCIron]]&lt;br /&gt;
*[https://thecheshirec.at/ CheshireCat's basket (FR)] Blog of [[CheshireCat]]&lt;br /&gt;
*[https://www.amstrad-noob.com/ Amstrad noob] Blog of [[Niall Brady]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Youtube and Twitch ====&lt;br /&gt;
&lt;br /&gt;
*[https://www.youtube.com/@NoelsRetroLab Noels Retro Lab] - lots of hardware related videos, especially repairs&lt;br /&gt;
*[https://www.youtube.com/@AmstradESP Amstrad ESP] El Amstrad CPC en España&lt;br /&gt;
*[https://www.youtube.com/@somosdeamstrad Somos de Amstrad !] Youtube channel of that Facebook group&lt;br /&gt;
*[https://www.youtube.com/@Novabug Novabug] - many CPC games&lt;br /&gt;
*[https://www.youtube.com/@John_B_Gage John Gage] - lots of game reviews but a lot of swearing and sound driven heavily into saturation&lt;br /&gt;
*[https://www.youtube.com/@tempsnyx Temps Nyx (FR)] CPC game reviews&lt;br /&gt;
*[https://youtube.com/@oursonretrogames OursoN Retrogames (FR)] CPC game reviews&lt;br /&gt;
*[https://www.youtube.com/@amaurydurand Amaury Durand] [[BDCIron]]'s CPC demoscene channel&lt;br /&gt;
*[https://www.youtube.com/@AmstradMystical Thomas Naslin] [[Oneman]]'s CPC demoscene channel&lt;br /&gt;
*[https://www.youtube.com/@edouardberge Edouard Bergé] [[Roudoudou]]'s channel, including CPC demoscene and long gameplays of adventure games&lt;br /&gt;
*[https://www.youtube.com/@amstradmaniaque Amstrad Maniaque] Long Gameplays&lt;br /&gt;
*[https://www.youtube.com/@AmstradCPCWorld Amstrad CPC World] Long Gameplays&lt;br /&gt;
*[https://www.youtube.com/@xenomorph50 XeNoMoRPH] Short Gameplays&lt;br /&gt;
*[https://www.youtube.com/@amstradman8836 Amstrad Man] Short Gameplays&lt;br /&gt;
*[https://www.youtube.com/@Orko_Ready Orko Ready (FR)] Amstrad CPC channel&lt;br /&gt;
*[https://www.youtube.com/@DarkArcade_ DarkArcade (FR)] [[DarkSteph]]'s channel&lt;br /&gt;
*[https://www.youtube.com/@monstrogoth Eric Boulat (FR)] [[Ldir Hector]]'s BASIC programming channel&lt;br /&gt;
*[https://www.youtube.com/@Nemo-xq7fi Nemo 59 (FR)] CPC Turbo Pascal programming channel&lt;br /&gt;
*[https://www.youtube.com/@ProfesorRetroman Profesor Retroman (ES)] CPC GameDev con C y Z80 ensemblador&lt;br /&gt;
*[https://www.youtube.com/watch?v=gEZx8QnbZCI&amp;amp;list=PLnpak17jeo9fDUE1zZSxsDkCAX6H-ejhp Apprendre et programmer des jeux en Assembleur Z80 sur Amstrad CPC (FR)] Tutorials by [[Yreggor]]&lt;br /&gt;
*[https://www.youtube.com/@amstradienschannel1643 Amstradiens] Amstrad CPC Channel for Amstrad Fans&lt;br /&gt;
*[https://www.youtube.com/@Xyphoe Xyphoe] - Gaming - almost every week a several hour long live stream on YouTube&lt;br /&gt;
*[https://www.youtube.com/@Amstariga Zisquier (Amstariga) (FR)] Lives&lt;br /&gt;
*[https://www.youtube.com/@KhomenorNostalgeek Khomenor (FR)] Lives&lt;br /&gt;
*[https://www.youtube.com/@jbdaron JB le Daron (FR)] Lives&lt;br /&gt;
*[https://www.youtube.com/@GeekoRex Geekorex (FR)] Lives&lt;br /&gt;
*[https://twitch.tv/noixdecroco NoixDeCroco (FR)] Lives&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Radios and Podcasts ====&lt;br /&gt;
*[https://rolandradio.net/ Roland Radio] [http://streaming.rolandradio.net/rolandradio Stream] [http://streaming.rolandradio.net/ Icecast2 status] Plays 24h the finest Amstrad CPC sounds&lt;br /&gt;
*[https://radio.cpcscene.com/ CPC Scene Radio] Alternative to Roland Radio&lt;br /&gt;
*[https://amstradmuseum.emu-france.info/Fichiers/Liens&amp;amp;Outils/Audiotheque/Audiotheque.htm Audiothèque Amstrad Museum] CPC tunes in MP3 format&lt;br /&gt;
*[https://www.youtube.com/playlist?list=PLBEUG_9b-mC_5Pq5vlCVxd4yQD2jWPL1s YM!Rulez Radio] Tunes recorded on real CPC hardware&lt;br /&gt;
*[https://youtube.com/@AmstradMusic Amstrad Music] Tunes recorded on emulator&lt;br /&gt;
*[http://www.cepeceros.com Cepeceros (ES)] Tu Podcast sobre juegos de Amstrad CPC&lt;br /&gt;
*[https://www.amstrad.es/podcast/ PODCAmSTrad (ES)] El podcast del Amstrad CPC&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Fanzines ====&lt;br /&gt;
&lt;br /&gt;
*[https://fusionretrobooks.com/collections/amtixcpc Amtix! CPC] [https://fusionretrobooks.com/products/fusion-cpc Fusion CPC]&lt;br /&gt;
*[https://www.cpcstore.co.uk/ Colour Personal Computing]&lt;br /&gt;
*[https://archive.org/details/Amstrad-CPC-User-Club-01--ACUC-Magazine- ACUC - Amstrad CPC User Club magazine]&lt;br /&gt;
*[https://shop.amiga-addict.com/amstrad-addict/amstrad-addict-magazine Amstrad Addict]&lt;br /&gt;
*[https://archive.org/details/AmstradAction052 Amstrad Action]&lt;br /&gt;
*[https://fr.ulule.com/users/memory_full/ 64 NOPs]&lt;br /&gt;
*[https://cpcrulez.fr/Scene_Papermags/index.php CPCRulez Scene Papermags Archive]&lt;br /&gt;
*[https://www.zyvaprod.fr/cracknrom/cnrsite/downloadcnr.html Crack'n Rom (FR)] [https://www.zyvaprod.fr/cracknrom/cnrsite/downloadcfb.html CPC Fanz Bzh (FR)] [https://www.zyvaprod.fr/cracknrom/cnrsite/downloadlcd.html Le Canard Déchainé (FR)] [https://www.zyvaprod.fr/cracknrom/cnrsite/articles.html Webzine (FR)]&lt;br /&gt;
*[https://www.la-collec-cpc.fr/ CoverBook (FR)]&lt;br /&gt;
*[http://futurs.chez.com/FQuasarCPC.html Quasar CPC (FR)]&lt;br /&gt;
*[https://ucpmblog.ovh/ ùCPM (FR)] [https://ucpmblog.ovh/ Disc Missing (FR)]&lt;br /&gt;
*[https://elegance-editions.eproshopping.fr/catalogue/318478-Fanzines-Magazines CPC-Anachronie (FR)] [https://elegance-editions.eproshopping.fr/catalogue/318478-Fanzines-Magazines Fanzine GX (FR)]&lt;br /&gt;
*[https://amstradcentpourcent.darkarcade.fr Amstrad Cent Pour Cent (FR)]&lt;br /&gt;
*[https://amstradmuseum.emu-france.info/Fichiers/Liens&amp;amp;Outils/Presse/Presse.htm Presse Amstrad (FR)] Commercial-era Amstrad magazines&lt;br /&gt;
*[https://www.retro-format.com/eightbit.php Eight Bit] All 8-bit computers, not only Amstrad&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Fanbooks ====&lt;br /&gt;
&lt;br /&gt;
*[https://archive.org/details/CesOrdinateursSontDangereux/ Ces ordinateurs sont dangereux - L'aventure Amstrad (1993) (FR)] Written by an employee of Amstrad France&lt;br /&gt;
*[https://www.amazon.es/dp/B0F2L182WH Lo Increíble (2025) (ES)] [https://www.amazon.es/Jes%C3%BAs-Mart%C3%ADnez-del-Vas/dp/841795628X Queremos su dinero (2019) (ES)] El hombre tras Amstrad España&lt;br /&gt;
*[https://omakebooks.com/fr/archives-visuelles/542-les-pubs-de-jeux-amstrad-9782379891663.html Les pubs de jeux Amstrad (2022) (FR)] 160-pages hardcover book&lt;br /&gt;
*[https://fr.ulule.com/users/memory_full/ Memory Full - Une histoire de la demoscene Amstrad CPC (2023) (FR)] 180-pages hardcover book&lt;br /&gt;
*[https://www.amazon.fr/Nos-ann%C3%A9es-Amstrad-Alexandre-Brillant/dp/B0CPDY5WGL Nos années Amstrad (2023) (FR)] 136-pages paperback book&lt;br /&gt;
*[https://www.verkami.com/projects/33020-amstrad-cpc-forever Amstrad CPC Forever (2023) (ES)] 250-pages hardcover book&lt;br /&gt;
*[https://www.editionspixnlove.com/accueil/1104-generation-amstrad-cpc-9782371882225.html Génération Amstrad CPC (2024) (FR)] 536-pages hardcover book&lt;br /&gt;
*[https://gunhedshop.com/Marion-et-les-crocodiles-dAmstrad-p653961281 Marion et les crocodiles d'Amstrad (2024) (FR)] The surprising and little-known story of Amstrad France by Gunhed TV&lt;br /&gt;
*[https://www.amazon.com/dp/B0D577X9VS The Amstrad CPC Reference Guide (2024)] 798-pages paperback book&lt;br /&gt;
*[https://archive.org/details/Alan_Sugar_The_Amstrad_Story_1990_Century Alan Sugar - The Amstrad story (1990)] Written by David Thomas&lt;br /&gt;
*[https://books.google.cd/books?id=9yGtDwAAQBAJ&amp;amp;printsec=frontcover Sir Alan Sugar - The Biography (2009)] Written by Charlie Burden&lt;br /&gt;
*[https://www.amazon.co.uk/stores/author/B0034PP4Q8 Books written by Alan Sugar] Autobiographies&lt;br /&gt;
*[https://www.amazon.co.uk/history-Ocean-Software-Chris-Wilkins-ebook/dp/B0753XYBHP The story of Ocean (2017)] 268-pages book&lt;br /&gt;
*[https://www.amazon.co.uk/Story-US-Gold-Chris-Wilkins-ebook/dp/B07544DG4C The story of US Gold (2017)] 236-pages book&lt;br /&gt;
*[https://www.amazon.fr/Ubisoft-ans-cr%C3%A9ation-depuis-1986/dp/2918771430 Ubisoft, 30 ans de création (2016) (FR)] 224-pages hardcover book&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Technical Documentation ==== &lt;br /&gt;
----&lt;br /&gt;
*[https://archive.org/details/wiki-www.cpcwiki.eu-20230926 CPCWiki (20230926)] CPCWiki - THE Amstrad CPC encyclopedia! dumped with [https://github.com/saveweb/wikiteam3/ wikiteam3 tools]&lt;br /&gt;
*[https://archive.org/details/cpcbooks CPC Books] Books and writings about the Amstrad CPC family of computers&lt;br /&gt;
*[https://mega.nz/folder/93pR2KiA#qlkiFakrZhSzmko65EbTWw/folder/QjxRVKTY Libros y Manuales (ES)] Technical CPC books in Spanish&lt;br /&gt;
*[[User Manual]] Official Amstrad user manuals&lt;br /&gt;
*[[Soft968: CPC 464/664/6128 Firmware]] Official developer documentation&lt;br /&gt;
*[https://acpc.me/ACME/?DOCUMENTS_TECHNIQUES/WEKA Classeurs Weka (FR)] The 1220-pages french reference for CPC developers&lt;br /&gt;
*[http://www.cpctech.org.uk/ Unofficial WWW Amstrad Resource]&lt;br /&gt;
*[https://www.chibiakumas.com/z80/ Learn Assembly Programming with ChibiAkumas] Multi-platform Z80 tutorial &lt;br /&gt;
*[https://asmtradcpc.zilog.fr ASMtrad CPC (FR)] Learn how to code with Z80 Assembler on Amstrad CPC with [[BDCIron]]&lt;br /&gt;
*[https://roudoudou.com/AmstradCPC/programmationAssembleur.html Wanna learn assembly? (FR)] Learn how to code with Z80 Assembler on Amstrad CPC with [[Roudoudou]]&lt;br /&gt;
*[http://logonsystem.eu/html/downloadlogon.htm CRTC Compendium] Everything about the CRTC - incl. examples&lt;br /&gt;
*[http://grimware.org/doku.php Grimware] is a really nice site with hardware info and hacks for the CPC machines... give it a try!&lt;br /&gt;
*[https://web.archive.org/web/20160714235951/https://www.grimware.org/doku.php/documentations/firmware/guide/jumpblock Amstrad Firmware reference] Built-in firmware functions explained&lt;br /&gt;
*[https://web.archive.org/web/20170830173253/https://www.grimware.org/doku.php/documentations/software/locomotive.basic/start Locomotive BASIC reference] Built-in functions and keywords explained&lt;br /&gt;
*[https://www.sean.co.uk/books/amstrad/index.shtm The Basic Idea] Amstrad Basic tutorial by Campursoft&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== News websites ====&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
*[https://www.genesis8bit.fr Genesis 8] - Genesis 8 is a spartan, but often-updated Amstrad-related news site.&lt;br /&gt;
*[https://minitel.darkarcade.fr/index3.php DarkArcade Minitel (FR)] Videotex Amstrad news service&lt;br /&gt;
*[https://www.zyvaprod.fr/cracknrom/cnrsite/archivenews.html Crack'n Rom news (FR)] News archive from CNR webzine&lt;br /&gt;
*[https://www.indieretronews.com/search/label/AMSTRAD%20CPC Indie Retro News] Amstrad CPC news filtering&lt;br /&gt;
*[https://auamstrad.es/ Amigos y Usuarios Amstrad (ES)] News website that has lessons on software development and hardware restoration. It also has a forum, and reviews on software and hardware.&lt;br /&gt;
*[https://amstradpower.es/ Amstrad Power] Spanish CPC-related news site.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Events ====&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
*[https://www.youtube.com/results?search_query=%22Amstrad+Video+Game+Awards+Show%22 The Sugars] Annual Amstrad video game awards show by [[Xyphoe]]&lt;br /&gt;
*[https://bndcodingparty.memoryfull.net/ Benediction Coding Party] Annual Amstrad demoparty organised by [[Eliot]] / Benediction&lt;br /&gt;
*[https://www.demoparty.net/platform/amstrad-cpc Amstrad CPC demoparties] Listing of demoscene events&lt;br /&gt;
*[https://logiker.com/Vintage-Computing-Christmas-Challenge Vintage Computing Christmas Challenge] Annual size coding challenge for retro machines including CPC by [[Logiker]]&lt;br /&gt;
*[https://logiker.com/AMSCII-Compo AMSCII Compo] Annual Amstrad ASCII competition by [[Logiker]]&lt;br /&gt;
*[https://jerres12.net/run/index.htm Border 0: Run&amp;quot;] CPC high-score gaming competition organised periodically by [[Jerres12]]&lt;br /&gt;
*[https://crocofest.fr/ CrocoFest] Annual gathering of Amstradists and other retro computer users. No game console allowed except the GX4000&lt;br /&gt;
*[https://amstradeterno.com/ Amstrad Eterno] The first Amstrad fair in Spain. Includes the Amstrad Eterno awards ceremony for the best games of the year&lt;br /&gt;
*[https://auamstrad.es/retroescena/amstrad-mania-2024/ Amstrad Mania] Exposition, talks and repair workshop&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Others ====&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
*[https://amstrad.com Amstrad.com] Official Amstrad website&lt;br /&gt;
*[https://amstraddigital.co.uk Amstrad Digital] Current marketing agency founded by Alan Sugar and led by his grandson&lt;br /&gt;
*[https://amstradworld.com/ Amstrad India] Official independent Amstrad franchise&lt;br /&gt;
*[https://youtu.be/wp_OhXOIQn4 Amstrad Gamebox] [https://youtu.be/x_l0JI_5VyE Review] [https://youtu.be/cLv-W7-yFCU Drama] New retrogaming console by Amstrad&lt;br /&gt;
*[https://www.amazon.fr/stores/AMSTRAD/page/E4B24068-D603-4465-83F6-1E56A2D44B50 Amstrad store] on Amazon (also distributed in French retail stores)&lt;br /&gt;
*[https://github.com/topics/amstrad-cpc GitHub #amstrad-cpc] GitHub topic filter&lt;br /&gt;
*[https://8bitsdepoder.blogspot.com 8 bits de poder (ES)] Programación del Amstrad CPC usando la libreria 8BP desde BASIC&lt;br /&gt;
*[http://cpccrackers.free.fr CPCCRACKERS] - French site about crackers for the CPC.&lt;br /&gt;
*[https://www.two-mag.com/ Two-Mag] The page of [[Two-Mag]] CPC cracker&lt;br /&gt;
*[https://jerres12.net Border 0] French site about CPC games&lt;br /&gt;
*[http://turpas3.angelfire.com Programming Turbo Pascal on a CPC!] - A collection of Turbo Pascal programs with some CPC Specific programs. &lt;br /&gt;
*[http://www.oldschool-gaming.com/view_index.php?4mat=9 Oldschool gaming] - Games reviews of recent games for the CPC!&lt;br /&gt;
*[http://homebrew.amstradtoday.com/index_uk.htm Amstrad Today Homebrew] Website dedicated to homebrews for the CPC&lt;br /&gt;
*[http://gx4000.co.uk GX4000.co.uk] Website devoted to the hardware and software of the oft-neglected games console.&lt;br /&gt;
*[https://www.gx4000.net/ GX4000.net] French website dedicated to the GX4000&lt;br /&gt;
*[https://cpcwiki.de/ CPCwiki.de] German CPCwiki&lt;br /&gt;
*[https://www.habisoft.com/pcwwiki/doku.php?id=en:start PcwWiki] Amstrad PCW / Schneider Joyce wiki&lt;br /&gt;
*[https://youtu.be/XXBxV6-zamM Micro Men (2009)] BBC movie about the rivalry between Sinclair and Acorn in the early 1980's. Alan Sugar briefly appears in the end.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Outdated / abandoned ====&lt;br /&gt;
----&lt;br /&gt;
*[http://www.octoate.de Octoate.de] - CPC news website in English. Last updated in 2019&lt;br /&gt;
*[http://tacgr.emuunlim.com/ The Amstrad Computer Game Resource] Last updated in 2006&lt;br /&gt;
*[http://thesnakebecomesthekey.wordpress.com The Snake Becomes the Key] is a very nicely-written blog with reviews and thoughts on various CPC games. Last updated in 2007&lt;br /&gt;
*[http://antoine.rozanski.free.fr CPC Museum (FR)] Website dedicated to the Amstrad CPC. Last updated in 2003&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== DEAD  ====&lt;br /&gt;
----&lt;br /&gt;
*[http://www.cepece.info/ CePeCe (ES)] Spanish CPC portal and web-hosting facilities for your CPC webpage.&lt;br /&gt;
*[http://amstrad.cpc.free.fr Amstradeus (FR)] Lots of interviews, manuals for download and much more.&lt;br /&gt;
*[https://web.archive.org/web/20080317151434/https://optimus.demoscene.gr/cpcscene/ The CPC Demoscene] Optimus website about the CPC demoscene with a list of some of the best CPC demos with reviews and screenshots. &lt;br /&gt;
*[https://web.archive.org/web/20250114135536/https://cpcfreak.cpc-live.com/ CPC Freak] Homepage of Kevin (arnoldemu) Thacker's CPC productions&lt;br /&gt;
*[http://www.cpczone.net CPC Zone] Home of the Gamebase, the ultimate collection of information (with screenshots, cover scans, reviews etc) on all games CPC. Also home of the Zone Forum.&lt;br /&gt;
*[http://8bit.yarek.pl/index.html 8bit Projects for Everyone] - Hardware updates for 8-bit computers, also for CPC&lt;br /&gt;
*[https://web.archive.org/web/20081216010826/http://cpc-hardware.com/index.php?op=edito CPC Hardware (FR)] Forum, nice downloads, hardware projects; also an online store for hardware stuff like [[RS232|RS232]] interfaces etc.&lt;br /&gt;
*[http://www.cpc-forum.de CPC-Forum (DE)] The new most important discussion forum for the German-speaking part of the CPC scene.&lt;br /&gt;
*[http://www.cpc6128.eu CPC 6128 Europe] European portal.&lt;br /&gt;
*[http://cpcoxygen.fxwebdevelopment.com/ CPC Oxygen] Home of the same-name great fanzine and AA scan repository.&lt;br /&gt;
*[http://www.terra.es/personal/diegovp Various Amstrad stuff] Including instructions on how to fit or connect a 3.5&amp;quot; drive, hot to connect your CPC to your PC and how to transfer files, among others.&lt;br /&gt;
*[http://cpcretrodev.byterealms.com/en/ #CPCRetroDev] Annual Amstrad CPC game development contest that ran from 2013 to 2023. It is now a GameBoy development contest [https://www.cpcwiki.eu/forum/general-discussion/hi-folks-21822/msg248223/#msg248223 Source]&lt;br /&gt;
*[https://web.archive.org/web/20150827210126/https://pushnpop.net/ Push'n'Pop] Amstrad Demoscene.&lt;br /&gt;
*[http://www.frappr.com/cpcscene/ CPC scene map]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Links&amp;diff=126034</id>
		<title>Links</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Links&amp;diff=126034"/>
				<updated>2025-05-18T17:52:03Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: /* News websites */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Websites| ]][[Category:Network| ]][[Category:Scene group| ]][[Category:Wiki| ]][[Category:Hardware| ]][[Category:Software| ]][[Category:CPC History|**]]&lt;br /&gt;
&lt;br /&gt;
==== Collections  ====&lt;br /&gt;
----&lt;br /&gt;
*[https://acpc.me/index.php?language=eng Amstrad CPC Memory Engraved] Huge collection of documents, manuals, literature, magazines, marketing material and much more&lt;br /&gt;
*[https://www.cpc-power.com/cpcarchives/ CPC Archives] Collection of documents and tools related to the Amstrad CPC&lt;br /&gt;
*[https://archive.org/details/AmstradCPCManuals_201812 Amstrad CPC Manuals] Manuals for the games released on the Amstrad CPC&lt;br /&gt;
*[https://www.cpc-power.com/ CPC-Power] Collection of most of the software that was ever released. Also includes ROMs and patched versions for programs with bugs.&lt;br /&gt;
*[https://cpcrulez.fr CPC Rulez (FR)] A great french site, updated frequently, with games, reviews, utilities, type-ins, demos, hardware info. A treasure and a must-visit (french pages can easily be translated with Google translate or similar tools).&lt;br /&gt;
*[http://www.amstrad.es/ Amstrad ESP (ES)] Collection of CPC software downloadable individually with Spanish media and manual&lt;br /&gt;
*[https://www.velus.be/ Crackers Velus (FR)] Collection of thousands of CPC games downloadable individually&lt;br /&gt;
*[http://cpccrackers.free.fr/Downloads/index.php CPC Crackers Downloads] Collection of thousands of cracked CPC games, sorted by cracking group&lt;br /&gt;
*[http://cngsoft.no-ip.org/cpc_lzx.htm CPC Compactages by CNGsoft] CPC softwares compressed in compact archives&lt;br /&gt;
*[http://cpcgamescd.amstrad.es/ CPCGamesCD] ISO containing a Windows launcher and 4429 CPC games included&lt;br /&gt;
*[https://acpc.me/ACME/?COLLECTIONS/ABRAXAS Abraxas CPC Collection] 1800 titles in dsk and cdt formats on 2 DVDs&lt;br /&gt;
*[https://github.com/Amstrad-CPC-File-Archive/ Amstrad Demo Files/Discs Archives] Collection of scene artifacts&lt;br /&gt;
*[https://archive.org/details/DemobaseAmstradCpc Demobase Amstrad CPC] [https://gb64.com/forum/viewtopic.php?t=5053] Downloadable archive of demos from the CPC demoscene&lt;br /&gt;
*[https://www.cpc-power.com/gamebasecpc/index.php?page=full Gamebase CPC] [https://gb64.com/forum/viewtopic.php?t=2025&amp;amp;start=195] Amstrad CPC Gamebase by Loic Daneels containing 3300 softwares dumped only from originals and complete with scans, manuals, media, etc...&lt;br /&gt;
*[https://gb64.com/forum/viewtopic.php?t=4233&amp;amp;start=90 Amstrad Mania] Amstrad CPC Gamebase by Mark (Sparky) Hardman containing 5782 softwares. Contains a selection of everything: original disk &amp;amp; tape dumps, hacks, cracks and trainers, homebrews&lt;br /&gt;
*[https://archive.org/details/GoodCPCV3.1415 GoodCPC] Downloadable archive of 27103 softwares for the CPC. Tons of duplicates though&lt;br /&gt;
*[https://archive.org/details/Amstrad_CPC_TOSEC_2012_04_23 Amstrad CPC TOSEC] Downloadable archive of 5575 softwares for the CPC. Dumps are of dubious quality&lt;br /&gt;
*[https://archive.org/details/amstrad-cpc-clean-db Clean CPC DB] Based on tosec+cpcpower site. A database that has checked every game so that you don't have to&lt;br /&gt;
*[https://archive.org/details/hearto-1g1r-collection Hearto's 1G1R (1game=1rom) collection] Tosec 2020-10-31, trimmed manually&lt;br /&gt;
*[https://archive.org/details/mame-merged MAME SL ROM Set (Merged)] MAME software archives cpc_flop.zip and cpc_cass.zip for Amstrad CPC&lt;br /&gt;
*[https://archive.org/details/AmstradCPCGameCollectionByGhostware Amstrad CPC Game Collection] Downloadable archive of 4242 game files by Ghostware. Lots of duplicates though&lt;br /&gt;
*[https://archive.org/details/amstrad-cpc_202203 Amstrad CPC ROM set] Downloadable archive of 2416 game files by rfl0wpr with no duplicate&lt;br /&gt;
*[https://archive.org/details/amstrad-cpc-cdt-collection Amstrad CPC cassette images] Collection of over 3500 tape-images by VincentGR&lt;br /&gt;
*[https://mega.nz/folder/93pR2KiA#qlkiFakrZhSzmko65EbTWw/folder/d7gyjSBS Juegos en MP3] Collection of tape-images in MP3 format&lt;br /&gt;
*[https://www.spinpoint.org/M4backup.zip M4backup by Mr.DVG] Collection of 1300 games tested and working with [[M4 Board]]&lt;br /&gt;
*[https://mega.nz/folder/93pR2KiA#qlkiFakrZhSzmko65EbTWw/file/Yu50QDCa Epidemiom M4-HFE] Collection of 900 games and programs in DSK and HFE for the [[M4 Board]]&lt;br /&gt;
*[[Converted GX4000 Software]] Collection of 1000+ games converted to standard Amstrad cartridges&lt;br /&gt;
*[http://www.cpcgamereviews.com/ CPC Game Reviews] Collection of 2400+ CPC games with review and download link. Also contains a collection of advertisements which have been scanned from Amstrad CPC magazines.&lt;br /&gt;
*[https://computeremuzone.com/amstrad/?l=en Amstrad Zone] Collection of 500+ CPC games with review and download link&lt;br /&gt;
*[http://www.cpc-history.com CPC History] CPC database listing 3200+ titles&lt;br /&gt;
*[https://www.mobygames.com/platform/cpc/ Moby Games] Games database listing 2300+ games for Amstrad CPC&lt;br /&gt;
*[https://archive.org/details/cpc-roms CPC Roms] Collection of 16KB ROM chip games by VincentGR&lt;br /&gt;
*[[Snapshot Archive|CPCWiki Snapshot Archive]] Collection of game snapshots&lt;br /&gt;
*[https://www.cpc-power.com/cpcarchives/index.php?page=articles&amp;amp;num=10 CPC-Power SNR sessions] Collection of 400+ SNR game sessions&lt;br /&gt;
*[https://amstradmuseum.emu-france.info/Fichiers/Projets/cpcloadingscreenremake_CPC/cpcloadingscreenremake.html Remakes écrans-titres CPC] Collection of CPC title screens remake&lt;br /&gt;
*[https://amstradmuseum.emu-france.info/Fichiers/Liens&amp;amp;Outils/Screenshots/ Amstrad Museum Screenshots] Collection of CPC game screenshots&lt;br /&gt;
*[https://www.spriters-resource.com/amstrad_cpc/ The Spriters Resource] Collection of sprite sheets ripped from Amstrad CPC games&lt;br /&gt;
*[https://github.com/cpcepower/CPCMix/ CPCMix] Collection of thousands of Amstrad music files ripped in ASM and BASIC format&lt;br /&gt;
*[https://amstradmuseum.emu-france.info/Fichiers/Liens&amp;amp;Outils/TopMusic/YM/ TopMusic YM] Small collection of Amstrad YM music files&lt;br /&gt;
*[https://amstradmuseum.emu-france.info/Fichiers/Liens&amp;amp;Outils/Jaquettes/ Amstrad Museum Jaquettes] All CPC game covers&lt;br /&gt;
*[https://www.la-collec-cpc.fr/ La Collec' CPC] 800 game covers and media stickers remastered for the best games of the CPC&lt;br /&gt;
*[http://cpmarchives.classiccmp.org/ Humongous CP/M software archives] Collection of the great CP/M repositories past and present&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Game Launchers for real CPCs =====&lt;br /&gt;
&lt;br /&gt;
*[https://cdtplayer.hypha.ws/ Hypha's CDT collection and player] Web-browser based cdt/wav/flac/mp3 player with thousands of games available to use&lt;br /&gt;
*[https://pelrun.github.io/PlayUEF/PlayUEF.html Pelrun's CDT collection and player] Web-browser based cdt/tzx/uef player with thousands of games available to use&lt;br /&gt;
*[[Amsteam]] Online service that is currently free of charge, but the creator has mentioned that some future games will require payment. To be used on specific Amsteam hardware&lt;br /&gt;
*[https://cpcrulez.fr/applications_util-rulez-change-m4wifi.htm RulezCharge] Online service that is free of charge. To be used on M4 Board or CPC Booster. Note: &amp;quot;Charge&amp;quot; means &amp;quot;Load&amp;quot; in french, as in download. It does not mean charging money&lt;br /&gt;
*[https://github.com/Frange/Amstrad-M4-Board Amstrad M4] Navigation and execution of programs and games from a mobile Android device to an Amstrad CPC equipped with an M4 Board&lt;br /&gt;
*[[M4FE - A front-end for M4|M4FE]] Front-end for the M4 Board available as a ROM&lt;br /&gt;
*[https://web.archive.org/web/20181113190515/http://amstrad.esy.es/ M4 Explorer] Another front-end for the M4 Board. It is not in ROM format. The files are installed on the root of the microSD card&lt;br /&gt;
*[https://www.cpcwiki.eu/forum/applications/filelauncher-(acmedosm4dos)/ FileLauncher] Front-end for the X-Mass or M4 Board available as a ROM&lt;br /&gt;
*[https://www.cpcwiki.eu/forum/applications/lilicpc-2-2-m4-ulifac-loaders-available-now/ LiliCPC] Warehouse of thousands of loaders to run the games and applications, organized in intuitive navigation menus to be used on CPC with an ULIfAC or M4 Board&lt;br /&gt;
*[http://amsnet.chez.com/ UniLoad] CPC Launcher with 1000+ games included to be used on CPC with any mass-storage expansion supported by [[UniDOS]] (M4 Board, X-Mass, Symbiface II, Albireo, etc...). A tool is also provided to create your own game database&lt;br /&gt;
*[https://cpcrulez.fr/applications_disc-hxc_floppy_emulator_manager.htm HxC Floppy Emulator Manager] CPC front-end for the [[Gotek]] floppy drive with [[HxC Floppy Emulator|HxC]] or [[FlashFloppy]]&lt;br /&gt;
*[https://cpcrulez.fr/applications_util-cprselect.htm CprSelect] Front-end for the [[C4CPC]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Online Emulators  =====&lt;br /&gt;
&lt;br /&gt;
*[http://crocods.org/web/ CrocoDS]&lt;br /&gt;
*[https://floooh.github.io/tiny8bit/ Tiny Emus]&lt;br /&gt;
*[https://devilmarkus.de/ WebGL 3d 8-bit]&lt;br /&gt;
*[https://8bitworkshop.com/v3.11.0/?file=hello.asm&amp;amp;platform=cpc.6128 8bitworkshop IDE]&lt;br /&gt;
*[https://benchmarko.github.io/CPCBasic/index.html?example=cpcbasic CPC BASIC]&lt;br /&gt;
*[https://bzhgames.xyz/amstrad.php BZH Games] Includes ongoing highscore competition&lt;br /&gt;
*[https://www.amstradcpc.es/doku.php?id=emus Amstrad ESP]&lt;br /&gt;
*[https://amstradpower.es/juega-online/ Juega Online]&lt;br /&gt;
*[https://www.juegotk.com/emulador-online/2/amstrad-cpc464.html JuegoTk]&lt;br /&gt;
*[http://www.amstradcpcgames.eu AmstradCPCgames.eu]&lt;br /&gt;
*[https://online.oldgames.sk/play/cpc Online OldGames]&lt;br /&gt;
*[[Emulators]] Full list of Amstrad CPC emulators&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== File servers  ====&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
*[https://ftp.nvg.ntnu.no/pub/cpc/ NVG]&lt;br /&gt;
*[https://ftp.lip6.fr/pub/amstrad/ LIP6] &lt;br /&gt;
*[http://cpmarchives.classiccmp.org/cpm/mirrors/ftp.demon.com/pub/cpm/ CPM] - related Amstrad things&lt;br /&gt;
*[ftp://ftp.cpcszene.de/ CPC Szene]&lt;br /&gt;
*[ftp://amstrad:amstrad@amstrad.serveftp.com Amstrad ServeFTP]&lt;br /&gt;
*[https://amstradmuseum.emu-france.info/Fichiers/DSK/ Amstrad Museum GoodCPC DSK full-set]&lt;br /&gt;
*[https://two-mag.com/cpc/ Two-Mag CPC games]&lt;br /&gt;
*[https://mega.nz/folder/93pR2KiA#qlkiFakrZhSzmko65EbTWw Amstrad Power folder on MEGA]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Chat  ====&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
*[https://web.libera.chat/#cpc-fr IRC channel] #cpc-fr on Libera-chat network, french scene channel (replacing #cpc on freenode, #cpc on Neoxys and #cpc on Europnet)&lt;br /&gt;
*[news://comp.sys.amstrad.8bit Newsgroup CSA8]&lt;br /&gt;
*[https://amstrad.simulant.uk/ Amstrad BBS] Telnet Bulletin Board System&lt;br /&gt;
&lt;br /&gt;
===== ChatGPT =====&lt;br /&gt;
&lt;br /&gt;
*[https://chatgpt.com/g/g-4N6Ts4Y3O-amstrad-cpc-engineer Amstrad CPC Engineer (by Fergus Leen)] Specialised in Z80 Assembly for the Amstrad CPC&lt;br /&gt;
*[https://chatgpt.com/g/g-V3gsOcx7F-cpc-z80-assembly-engineer CPC Z80 Assembly Engineer (by Vassilis N. Perantzakis)] Formal, beginner-friendly Z80 assembly guide&lt;br /&gt;
*[https://github.com/markburns/amstrad_gpt AmstradGpt] Get your Amstrad CPC to talk to ChatGPT via a USB to RS232 serial cable&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Discord Servers =====&lt;br /&gt;
&lt;br /&gt;
*[https://discord.gg/4QZqfCr Amstrad CPC Community]&lt;br /&gt;
*[https://discord.gg/eFmDcMu Amstrad.eu (FR)]&lt;br /&gt;
*[https://discord.gg/YP3tVvx NoixDeCroco (FR)]&lt;br /&gt;
*[https://discord.gg/dwNNbTupT8 ASMtrad CPC (FR)]&lt;br /&gt;
*[https://discord.gg/FvpPbNQ5ju Orgams]&lt;br /&gt;
*[https://discord.gg/rKxFPndHPw Praline]&lt;br /&gt;
*[https://discord.gg/nd476U5 Xyphoe's Amserver]&lt;br /&gt;
*[https://discord.gg/eVQQnzFYkD SymbOS &amp;amp; Quigs]&lt;br /&gt;
*[https://discord.gg/ZXy3TZMSrj Rodrik Studio - PicoCPC]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Telegram Groups =====&lt;br /&gt;
&lt;br /&gt;
*[https://t.me/amstradeterno Amstrad Eterno]&lt;br /&gt;
*[https://t.me/amstradpower Amstrad Power]&lt;br /&gt;
*[https://t.me/ensambladorZXSpectrum Ensamblador Z80 (ZX Spectrum, Amstrad, MSX y más)]&lt;br /&gt;
*[https://t.me/cpctelera_asm CPCtelera]&lt;br /&gt;
*[https://t.me/LiliCPC LiliCPC]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Facebook Groups =====&lt;br /&gt;
&lt;br /&gt;
*[https://www.facebook.com/groups/5357712057 Amstrad CPC 464] - the biggest and most active english speaking group - not only for 464&lt;br /&gt;
*[https://www.facebook.com/groups/298743294763933 Amstrad CPC 6128]&lt;br /&gt;
*[https://www.facebook.com/groups/1066160190075999/ AMSTRAD CPC CLASSIC GAMING AND DEMOS]&lt;br /&gt;
*[https://www.facebook.com/groups/354709275176426/ AMSTRAD CPC LATEST GAMES]&lt;br /&gt;
*[https://www.facebook.com/cpclegends/ CPC Legends]&lt;br /&gt;
*[https://www.facebook.com/groups/281939335598581/ Amstrad GX4000/PLUS Users]&lt;br /&gt;
*[https://www.facebook.com/groups/688629749193585/ Amstrad CPC/PCW/NC/GX Users]&lt;br /&gt;
*[https://www.facebook.com/groups/amstrad4ever Amstrad 4Ever]&lt;br /&gt;
*[https://www.facebook.com/groups/1380187495418957/ Amstrad For Everyone] - not only CPC&lt;br /&gt;
*[https://www.facebook.com/groups/181195638970447/ Amstrad 8bit computers]&lt;br /&gt;
*[https://www.facebook.com/groups/168233427111563/ Amstrad Collective]&lt;br /&gt;
*[https://www.facebook.com/groups/2137490036569352/ Somos de Amstrad !]&lt;br /&gt;
*[https://www.facebook.com/groups/577133703114361/ Asociación Amstrad Eterno]&lt;br /&gt;
*[https://www.facebook.com/groups/guamstrad/ Grupo de Usuarios Amstrad (GUA)]&lt;br /&gt;
*[https://www.facebook.com/groups/auamstrad/ Amigos y Usuarios de Amstrad (AUA)]&lt;br /&gt;
*[https://www.facebook.com/groups/cpcuser Amstrad CPC User] - Italian group&lt;br /&gt;
*[https://www.facebook.com/groups/2277697035789023/ Amstrad - Schneider CPC] - German group&lt;br /&gt;
*[https://www.facebook.com/groups/466173504171187/ AMSTRAD.PL] - Polish group&lt;br /&gt;
*[https://www.facebook.com/groups/940816202700187/ Amstrad CPC Danmark]&lt;br /&gt;
*[https://www.facebook.com/groups/AmstradCpcCom/ Amstrad CPC Türkiye]&lt;br /&gt;
*[https://www.facebook.com/groups/3348293601902686/ Amstrad CPC Greek Community]&lt;br /&gt;
*[https://www.facebook.com/groups/462601654365944/ Amstrad Cpc Users Group Australia]&lt;br /&gt;
*[https://www.facebook.com/groups/amstradbelgique/ Amstrad Belgique]&lt;br /&gt;
*[https://www.facebook.com/groups/amstrad.eu/ Amstrad.eu CPC 464 / 664 / 6128 Old &amp;amp; + / GX4000] - mostly French &lt;br /&gt;
*[https://www.facebook.com/groups/1120607071477318/ Amstrad CPC pour toujours and beyond]&lt;br /&gt;
*[https://www.facebook.com/groups/AmstradCPCMemoireEcrite/ Amstrad CPC Mémoire Ecrite]&lt;br /&gt;
*[https://www.facebook.com/groups/699366355196951/ 100% Amstrad CPC]&lt;br /&gt;
*[https://www.facebook.com/groups/amstradiens/ Amstradiens] - the biggest and most active group&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Web Forums =====&lt;br /&gt;
&lt;br /&gt;
*[https://www.cpcwiki.eu/forum/ CPCwiki forum]&lt;br /&gt;
*[https://cpcrulez.fr/forum/ CPCRulez forum (FR)]&lt;br /&gt;
*[https://amstrad.eu/ Amstrad.eu (FR)] [https://phenixinformatique.com Old website phenixinformatique.com] Previously used the URL cpcscene.com&lt;br /&gt;
*[https://amstradplus.forumactif.com/ Amstrad Plus / Cpc Forum (FR)]&lt;br /&gt;
*[http://www.amstrad.es/forum/ Amstrad ESP forum (ES)]&lt;br /&gt;
*[https://cpcwiki.de/forum/ CPCwiki.de forum (DE)]&lt;br /&gt;
*[https://computeremuzone.com/amstrad/?l=en Amstrad Zone] Subsection of computeremuzone.com&lt;br /&gt;
*[https://www.reddit.com/r/Amstrad/ r/Amstrad] Amstrad sub-Reddit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Shops / Groups to buy/sell hardware and games  ====&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
*[https://hobbyretro.com/amstrad Hobbyretro.com] Spanish shop&lt;br /&gt;
*[https://www.cpcstore.co.uk/ CPCStore.co.uk] UK shop&lt;br /&gt;
*[https://www.sellmyretro.com/category/Retro+Computers/Amstrad Sell-My-Retro] portal - some sellers including Zaxon sell through this shop&lt;br /&gt;
*[https://www.sintech-shop.de/retro-atari-commodore-sinclair-etc/amstrad-schneider Sintech] some software, 6128/Plus keyboard membranes&lt;br /&gt;
*[https://lotharek.pl/ Lotharek's Lair] Retro hardware manufacturer&lt;br /&gt;
*[https://www.icompplus.com/ IcompPlus] original new-old-stock Amstrad ICs&lt;br /&gt;
*[https://www.facebook.com/groups/amstradforsale/ Amstrad for sale] Facebook group&lt;br /&gt;
*[http://www.amibay.com/forumdisplay.php?f=44 AMIBAY - Hardware For Sale]&lt;br /&gt;
*[http://www.amibay.com/forumdisplay.php?f=50 AMIBAY - Wanted Hardware]&lt;br /&gt;
*[https://www.ebay.co.uk/str/abiantfosdxr Amstrad and Co]&lt;br /&gt;
*[https://pixel.rodrik.ch/cartouche Rodrik cartridges] Game cartridges 100% compatible with the original&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Blogs/Websites of individuals and groups ====&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===== Hardware-related  =====&lt;br /&gt;
&lt;br /&gt;
*[http://www.zock.com/8-Bit/D_CPCguide.HTML G.o.St.-SOFT's CPC-Hardwareführer at 8-Bit-Nirvana (DE)] Lots of tips and tricks, but no recent updates&lt;br /&gt;
*[https://www.oocities.org/siliconvalley/park/6129/engmain.htm Virtual Net 96] Amstrad CPC local network protocol&lt;br /&gt;
*[http://siou.free.fr/General/Pages/index-cpc6128.html Siou's projects] CPCISA and Video digitizer&lt;br /&gt;
*[https://www.hanssummers.com/cpcng.html CPCng] CPC Next Generation&lt;br /&gt;
*[https://bread80.com/category/amstrad-cpc/ bread80.com] Some analysis of Firmware and BASIC logic (and also the video subsystem- hardware)&lt;br /&gt;
*[http://www.amstradtoday.com/ Amstrad Today (FR)] Many Tips for Amstrad CPC&lt;br /&gt;
*[https://www.centpourcent.net/ Cent Pour Cent] TotO's MX4 hardware expansions&lt;br /&gt;
*[[PulkoTronics]] PulkoMandy's hardware expansions&lt;br /&gt;
*[http://www.tmtlogic.com/ TMTLogic] CPC and MSX hardware expansions&lt;br /&gt;
*[https://www.spinpoint.org/ Spinpoint] Duke's M4 Board and Imperium Solo hardware&lt;br /&gt;
*[http://retroworkbench.blogspot.com/ ikonsgr 80's Home Micros WorkBench] CPC, Spectrum, Amiga hardware projects&lt;br /&gt;
*[https://pelrun.github.io/cpc-schematics/ CPC schematics] KiCad transcription of the CPC6128 motherboard&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Software-related  =====&lt;br /&gt;
&lt;br /&gt;
*[https://espsoft.blogspot.com ESPsoft (ES)] Blog on Spanish homebrews for the CPC.&lt;br /&gt;
*[https://playonretro.itch.io/ Play on retro] Homebrew retro games editor&lt;br /&gt;
*[http://www.mojontwins.com The Mojon Twins (ES)] Homebrew developer group that focuses on creating games for retro systems, among which is the CPC.&lt;br /&gt;
*[https://www.4mhz.es/en/ 4MHz]  Homebrew developer group that focuses on creating games for retro systems that use the Z80 CPU.&lt;br /&gt;
*[http://www.retroworks.es/index_en.php RetroWorks]  Z80 homebrew games developer&lt;br /&gt;
*[https://altanerus-dog.itch.io/ Altanerus Dog (ES)] CPC and PC homebrew games developer&lt;br /&gt;
*[https://www.usebox.net/jjm/ Usebox.net] Homebrew studio that focuses on creating games for retro systems, among which is the CPC.&lt;br /&gt;
*[https://mananuk.itch.io/ Mananuk] Homebrew game developer for retro systems, including the CPC&lt;br /&gt;
*[https://x.com/AmstradGGP AmstradGGP] Twitter account of this CPC homebrew games developer group&lt;br /&gt;
*[https://zisquier.itch.io/ Zisquier games] CPC homebrew games developer&lt;br /&gt;
*[http://www.prodatron.net Prodatron's page] ([[Prodatron|Prodatrons]] homepage includes info and downloads of his productions as well as a lot of downloads for CPC Digitracker modules (MDL), OCP Art Studio pictures and Scene demos)&lt;br /&gt;
*[http://www.symbos.de SymbOS] Graphical Z80 Multitasking Operating System [[SymbOS]]&lt;br /&gt;
*[http://www.FutureOS.de FutureOS] [[FutureOS]] is an revolutionary operating system for the CPC6128 and CPCPlus&lt;br /&gt;
*[http://orgams.wikidot.com/ Orgams] Ultimate Z80 suite on Amstrad CPC&lt;br /&gt;
*[http://www.cpcmania.com/news.htm CPC Mania] - some tools like CPR tools, CPCDiskXP, CPCTapeXP - plus some technical informations&lt;br /&gt;
*[http://schneidercpc.cf2.de Domes-DOS Schneider/Amstrad CPC dedication] - Domes-DOS's CPC website in the design of an GT65 green monitor (with download of his DART-logging tool and lots of infos about the CPC series)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Demoscene =====&lt;br /&gt;
&lt;br /&gt;
*[https://memoryfull.net/index.php Memory Full] All about the CPC demoscene&lt;br /&gt;
*[https://64nops.wordpress.com/ 64 NOPs] CPC demoscene tech blog&lt;br /&gt;
*[http://cpc.sylvestre.org/index.html Les Sucres en morceaux (FR)] all the news relating to the productions of &amp;quot;Les Sucres en Morceaux&amp;quot; and many articles relating to the Amstrad CPC.&lt;br /&gt;
*[https://amstradmuseum.emu-france.info/ Amstrad Museum (FR)] Website of the CPC graphic artist [[Titan]]&lt;br /&gt;
*[https://www.praline-cpc.fr/barjack/ Barjack (FR)] Website of the CPC graphic artist [[Barjack]] / Praline&lt;br /&gt;
*[https://twitter.com/batman_group Batman Group (ES)] Twitter account of the Amstrad and Amiga Demogroup [[Batman Group]]&lt;br /&gt;
*[http://tj.gpa.free.fr/ Tom&amp;amp;Jerry GPA (FR)] The page of [[GPA]] Demogroup&lt;br /&gt;
*[https://astimpact.weebly.com/ AST Impact (FR)] The page of [[Impact]] Demogroup&lt;br /&gt;
*[http://arkos.cpcscene.com/ Arkos Demogroup] - The page of [[Arkos|Arkos]], with some great demos, diskmags, games and tools.&lt;br /&gt;
*[http://futurs.chez.com/ Futurs'] The page of [[Futurs']] Demogroup&lt;br /&gt;
*[http://www.logonsystem.eu/ Logon System] The page of [[Logon System]] Demogroup&lt;br /&gt;
*[http://benediction.cpcscene.net/ Benediction] The page of [[Benediction]] Demogroup&lt;br /&gt;
*[https://vanity.memoryfull.net/ Vanity] The page of [[Vanity]] Demogroup&lt;br /&gt;
*[https://pulkomandy.github.io/shinra.github.io/ Shinra] The page of [[Shinra]] Demogroup&lt;br /&gt;
*[http://tafcpc.free.fr/ TAF HQ] The page of [[TAF]] Demogroup&lt;br /&gt;
*[https://betasoftcologne.github.io/ BetaSoftCologne's place] The page of [[BSC]] Demogroup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Blogs =====&lt;br /&gt;
&lt;br /&gt;
*[http://norecess.cpcscene.net NoRecess] Blog of [[NoRecess]]&lt;br /&gt;
*[https://blog.logonsystem.eu/ Logon System (FR)] Blog of [[Longshot]]&lt;br /&gt;
*[https://overflowlogonsystem.wixsite.com/amstradcpc/ Overflow's RAndom Memory] Blog of [[Overflow]]&lt;br /&gt;
*[https://muckypaws.com/category/amstrad/ Mucky Paws] [[The Argonaut]] blog&lt;br /&gt;
*[http://retropoke.canalblog.com Rétro Poke (FR)] Philippe Moulin's CPC programming blog&lt;br /&gt;
*[https://www.sikorama.fr Sikorama (FR)] Stéphane Sikora's CPC programming blog&lt;br /&gt;
*[https://amstradsakis.blogspot.com/ Amstrad Sakis] Blog of [[Sakis]]&lt;br /&gt;
*[https://deadketchup.kyuran.be My Ketchup Is Dead (FR)] Blog of [[RedBug]]&lt;br /&gt;
*[http://bdciron.canalblog.com/ Retroblog de BDCIron (FR)] Blog of [[BDCIron]]&lt;br /&gt;
*[https://thecheshirec.at/ CheshireCat's basket (FR)] Blog of [[CheshireCat]]&lt;br /&gt;
*[https://www.amstrad-noob.com/ Amstrad noob] Blog of [[Niall Brady]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Youtube and Twitch ====&lt;br /&gt;
&lt;br /&gt;
*[https://www.youtube.com/@NoelsRetroLab Noels Retro Lab] - lots of hardware related videos, especially repairs&lt;br /&gt;
*[https://www.youtube.com/@AmstradESP Amstrad ESP] El Amstrad CPC en España&lt;br /&gt;
*[https://www.youtube.com/@somosdeamstrad Somos de Amstrad !] Youtube channel of that Facebook group&lt;br /&gt;
*[https://www.youtube.com/@Novabug Novabug] - many CPC games&lt;br /&gt;
*[https://www.youtube.com/@John_B_Gage John Gage] - lots of game reviews but a lot of swearing and sound driven heavily into saturation&lt;br /&gt;
*[https://www.youtube.com/@tempsnyx Temps Nyx (FR)] CPC game reviews&lt;br /&gt;
*[https://youtube.com/@oursonretrogames OursoN Retrogames (FR)] CPC game reviews&lt;br /&gt;
*[https://www.youtube.com/@amaurydurand Amaury Durand] [[BDCIron]]'s CPC demoscene channel&lt;br /&gt;
*[https://www.youtube.com/@AmstradMystical Thomas Naslin] [[Oneman]]'s CPC demoscene channel&lt;br /&gt;
*[https://www.youtube.com/@edouardberge Edouard Bergé] [[Roudoudou]]'s channel, including CPC demoscene and long gameplays of adventure games&lt;br /&gt;
*[https://www.youtube.com/@amstradmaniaque Amstrad Maniaque] Long Gameplays&lt;br /&gt;
*[https://www.youtube.com/@AmstradCPCWorld Amstrad CPC World] Long Gameplays&lt;br /&gt;
*[https://www.youtube.com/@xenomorph50 XeNoMoRPH] Short Gameplays&lt;br /&gt;
*[https://www.youtube.com/@amstradman8836 Amstrad Man] Short Gameplays&lt;br /&gt;
*[https://www.youtube.com/@Orko_Ready Orko Ready (FR)] Amstrad CPC channel&lt;br /&gt;
*[https://www.youtube.com/@DarkArcade_ DarkArcade (FR)] [[DarkSteph]]'s channel&lt;br /&gt;
*[https://www.youtube.com/@monstrogoth Eric Boulat (FR)] [[Ldir Hector]]'s BASIC programming channel&lt;br /&gt;
*[https://www.youtube.com/@Nemo-xq7fi Nemo 59 (FR)] CPC Turbo Pascal programming channel&lt;br /&gt;
*[https://www.youtube.com/@ProfesorRetroman Profesor Retroman (ES)] CPC GameDev con C y Z80 ensemblador&lt;br /&gt;
*[https://www.youtube.com/watch?v=gEZx8QnbZCI&amp;amp;list=PLnpak17jeo9fDUE1zZSxsDkCAX6H-ejhp Apprendre et programmer des jeux en Assembleur Z80 sur Amstrad CPC (FR)] Tutorials by [[Yreggor]]&lt;br /&gt;
*[https://www.youtube.com/@amstradienschannel1643 Amstradiens] Amstrad CPC Channel for Amstrad Fans&lt;br /&gt;
*[https://www.youtube.com/@Xyphoe Xyphoe] - Gaming - almost every week a several hour long live stream on YouTube&lt;br /&gt;
*[https://www.youtube.com/@Amstariga Zisquier (Amstariga) (FR)] Lives&lt;br /&gt;
*[https://www.youtube.com/@KhomenorNostalgeek Khomenor (FR)] Lives&lt;br /&gt;
*[https://www.youtube.com/@jbdaron JB le Daron (FR)] Lives&lt;br /&gt;
*[https://www.youtube.com/@GeekoRex Geekorex (FR)] Lives&lt;br /&gt;
*[https://twitch.tv/noixdecroco NoixDeCroco (FR)] Lives&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Radios and Podcasts ====&lt;br /&gt;
*[https://rolandradio.net/ Roland Radio] [http://streaming.rolandradio.net/rolandradio Stream] [http://streaming.rolandradio.net/ Icecast2 status] Plays 24h the finest Amstrad CPC sounds&lt;br /&gt;
*[https://radio.cpcscene.com/ CPC Scene Radio] Alternative to Roland Radio&lt;br /&gt;
*[https://amstradmuseum.emu-france.info/Fichiers/Liens&amp;amp;Outils/Audiotheque/Audiotheque.htm Audiothèque Amstrad Museum] CPC tunes in MP3 format&lt;br /&gt;
*[https://www.youtube.com/playlist?list=PLBEUG_9b-mC_5Pq5vlCVxd4yQD2jWPL1s YM!Rulez Radio] Tunes recorded on real CPC hardware&lt;br /&gt;
*[https://youtube.com/@AmstradMusic Amstrad Music] Tunes recorded on emulator&lt;br /&gt;
*[http://www.cepeceros.com Cepeceros (ES)] Tu Podcast sobre juegos de Amstrad CPC&lt;br /&gt;
*[https://www.amstrad.es/podcast/ PODCAmSTrad (ES)] El podcast del Amstrad CPC&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Fanzines ====&lt;br /&gt;
&lt;br /&gt;
*[https://fusionretrobooks.com/collections/amtixcpc Amtix! CPC] [https://fusionretrobooks.com/products/fusion-cpc Fusion CPC]&lt;br /&gt;
*[https://www.cpcstore.co.uk/ Colour Personal Computing]&lt;br /&gt;
*[https://archive.org/details/Amstrad-CPC-User-Club-01--ACUC-Magazine- ACUC - Amstrad CPC User Club magazine]&lt;br /&gt;
*[https://shop.amiga-addict.com/amstrad-addict/amstrad-addict-magazine Amstrad Addict]&lt;br /&gt;
*[https://archive.org/details/AmstradAction052 Amstrad Action]&lt;br /&gt;
*[https://fr.ulule.com/users/memory_full/ 64 NOPs]&lt;br /&gt;
*[https://cpcrulez.fr/Scene_Papermags/index.php CPCRulez Scene Papermags Archive]&lt;br /&gt;
*[https://www.zyvaprod.fr/cracknrom/cnrsite/downloadcnr.html Crack'n Rom (FR)] [https://www.zyvaprod.fr/cracknrom/cnrsite/downloadcfb.html CPC Fanz Bzh (FR)] [https://www.zyvaprod.fr/cracknrom/cnrsite/downloadlcd.html Le Canard Déchainé (FR)] [https://www.zyvaprod.fr/cracknrom/cnrsite/articles.html Webzine (FR)]&lt;br /&gt;
*[https://www.la-collec-cpc.fr/ CoverBook (FR)]&lt;br /&gt;
*[http://futurs.chez.com/FQuasarCPC.html Quasar CPC (FR)]&lt;br /&gt;
*[https://ucpmblog.ovh/ ùCPM (FR)] [https://ucpmblog.ovh/ Disc Missing (FR)]&lt;br /&gt;
*[https://elegance-editions.eproshopping.fr/catalogue/318478-Fanzines-Magazines CPC-Anachronie (FR)] [https://elegance-editions.eproshopping.fr/catalogue/318478-Fanzines-Magazines Fanzine GX (FR)]&lt;br /&gt;
*[https://amstradcentpourcent.darkarcade.fr Amstrad Cent Pour Cent (FR)]&lt;br /&gt;
*[https://amstradmuseum.emu-france.info/Fichiers/Liens&amp;amp;Outils/Presse/Presse.htm Presse Amstrad (FR)] Commercial-era Amstrad magazines&lt;br /&gt;
*[https://www.retro-format.com/eightbit.php Eight Bit] All 8-bit computers, not only Amstrad&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Fanbooks ====&lt;br /&gt;
&lt;br /&gt;
*[https://archive.org/details/CesOrdinateursSontDangereux/ Ces ordinateurs sont dangereux - L'aventure Amstrad (1993) (FR)] Written by an employee of Amstrad France&lt;br /&gt;
*[https://www.amazon.es/dp/B0F2L182WH Lo Increíble (2025) (ES)] [https://www.amazon.es/Jes%C3%BAs-Mart%C3%ADnez-del-Vas/dp/841795628X Queremos su dinero (2019) (ES)] El hombre tras Amstrad España&lt;br /&gt;
*[https://omakebooks.com/fr/archives-visuelles/542-les-pubs-de-jeux-amstrad-9782379891663.html Les pubs de jeux Amstrad (2022) (FR)] 160-pages hardcover book&lt;br /&gt;
*[https://fr.ulule.com/users/memory_full/ Memory Full - Une histoire de la demoscene Amstrad CPC (2023) (FR)] 180-pages hardcover book&lt;br /&gt;
*[https://www.amazon.fr/Nos-ann%C3%A9es-Amstrad-Alexandre-Brillant/dp/B0CPDY5WGL Nos années Amstrad (2023) (FR)] 136-pages paperback book&lt;br /&gt;
*[https://www.verkami.com/projects/33020-amstrad-cpc-forever Amstrad CPC Forever (2023) (ES)] 250-pages hardcover book&lt;br /&gt;
*[https://www.editionspixnlove.com/accueil/1104-generation-amstrad-cpc-9782371882225.html Génération Amstrad CPC (2024) (FR)] 536-pages hardcover book&lt;br /&gt;
*[https://gunhedshop.com/Marion-et-les-crocodiles-dAmstrad-p653961281 Marion et les crocodiles d'Amstrad (2024) (FR)] The surprising and little-known story of Amstrad France by Gunhed TV&lt;br /&gt;
*[https://www.amazon.com/dp/B0D577X9VS The Amstrad CPC Reference Guide (2024)] 798-pages paperback book&lt;br /&gt;
*[https://archive.org/details/Alan_Sugar_The_Amstrad_Story_1990_Century Alan Sugar - The Amstrad story (1990)] Written by David Thomas&lt;br /&gt;
*[https://books.google.cd/books?id=9yGtDwAAQBAJ&amp;amp;printsec=frontcover Sir Alan Sugar - The Biography (2009)] Written by Charlie Burden&lt;br /&gt;
*[https://www.amazon.co.uk/stores/author/B0034PP4Q8 Books written by Alan Sugar] Autobiographies&lt;br /&gt;
*[https://www.amazon.co.uk/history-Ocean-Software-Chris-Wilkins-ebook/dp/B0753XYBHP The story of Ocean (2017)] 268-pages book&lt;br /&gt;
*[https://www.amazon.co.uk/Story-US-Gold-Chris-Wilkins-ebook/dp/B07544DG4C The story of US Gold (2017)] 236-pages book&lt;br /&gt;
*[https://www.amazon.fr/Ubisoft-ans-cr%C3%A9ation-depuis-1986/dp/2918771430 Ubisoft, 30 ans de création (2016) (FR)] 224-pages hardcover book&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Technical Documentation ==== &lt;br /&gt;
----&lt;br /&gt;
*[https://archive.org/details/wiki-www.cpcwiki.eu-20230926 CPCWiki (20230926)] CPCWiki - THE Amstrad CPC encyclopedia! dumped with [https://github.com/saveweb/wikiteam3/ wikiteam3 tools]&lt;br /&gt;
*[https://archive.org/details/cpcbooks CPC Books] Books and writings about the Amstrad CPC family of computers&lt;br /&gt;
*[https://mega.nz/folder/93pR2KiA#qlkiFakrZhSzmko65EbTWw/folder/QjxRVKTY Libros y Manuales (ES)] Technical CPC books in Spanish&lt;br /&gt;
*[[User Manual]] Official Amstrad user manuals&lt;br /&gt;
*[[Soft968: CPC 464/664/6128 Firmware]] Official developer documentation&lt;br /&gt;
*[https://acpc.me/ACME/?DOCUMENTS_TECHNIQUES/WEKA Classeurs Weka (FR)] The 1220-pages french reference for CPC developers&lt;br /&gt;
*[http://www.cpctech.org.uk/ Unofficial WWW Amstrad Resource]&lt;br /&gt;
*[https://www.chibiakumas.com/z80/ Learn Assembly Programming with ChibiAkumas] Multi-platform Z80 tutorial &lt;br /&gt;
*[https://asmtradcpc.zilog.fr ASMtrad CPC (FR)] Learn how to code with Z80 Assembler on Amstrad CPC with [[BDCIron]]&lt;br /&gt;
*[https://roudoudou.com/AmstradCPC/programmationAssembleur.html Wanna learn assembly? (FR)] Learn how to code with Z80 Assembler on Amstrad CPC with [[Roudoudou]]&lt;br /&gt;
*[http://logonsystem.eu/html/downloadlogon.htm CRTC Compendium] Everything about the CRTC - incl. examples&lt;br /&gt;
*[http://grimware.org/doku.php Grimware] is a really nice site with hardware info and hacks for the CPC machines... give it a try!&lt;br /&gt;
*[https://web.archive.org/web/20160714235951/https://www.grimware.org/doku.php/documentations/firmware/guide/jumpblock Amstrad Firmware reference] Built-in firmware functions explained&lt;br /&gt;
*[https://web.archive.org/web/20170830173253/https://www.grimware.org/doku.php/documentations/software/locomotive.basic/start Locomotive BASIC reference] Built-in functions and keywords explained&lt;br /&gt;
*[https://www.sean.co.uk/books/amstrad/index.shtm The Basic Idea] Amstrad Basic tutorial by Campursoft&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== News websites ====&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
*[https://www.genesis8bit.fr Genesis 8] - Genesis 8 is a spartan, but often-updated Amstrad-related news site.&lt;br /&gt;
*[https://www.minipavi.fr/emulminitel/index.php?gw=wss%3A%2F%2Fgo.minipavi.fr%3A8181%2F%3Furl%3Dhttps%253A%252F%252Fminitel.darkarcade.fr%252Findex3.php DarkArcade Minitel (FR)] Videotex Amstrad news service&lt;br /&gt;
*[https://www.zyvaprod.fr/cracknrom/cnrsite/archivenews.html Crack'n Rom news (FR)] News archive from CNR webzine&lt;br /&gt;
*[https://www.indieretronews.com/search/label/AMSTRAD%20CPC Indie Retro News] Amstrad CPC news filtering&lt;br /&gt;
*[https://auamstrad.es/ Amigos y Usuarios Amstrad (ES)] News website that has lessons on software development and hardware restoration. It also has a forum, and reviews on software and hardware.&lt;br /&gt;
*[https://amstradpower.es/ Amstrad Power] Spanish CPC-related news site.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Events ====&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
*[https://www.youtube.com/results?search_query=%22Amstrad+Video+Game+Awards+Show%22 The Sugars] Annual Amstrad video game awards show by [[Xyphoe]]&lt;br /&gt;
*[https://bndcodingparty.memoryfull.net/ Benediction Coding Party] Annual Amstrad demoparty organised by [[Eliot]] / Benediction&lt;br /&gt;
*[https://www.demoparty.net/platform/amstrad-cpc Amstrad CPC demoparties] Listing of demoscene events&lt;br /&gt;
*[https://logiker.com/Vintage-Computing-Christmas-Challenge Vintage Computing Christmas Challenge] Annual size coding challenge for retro machines including CPC by [[Logiker]]&lt;br /&gt;
*[https://logiker.com/AMSCII-Compo AMSCII Compo] Annual Amstrad ASCII competition by [[Logiker]]&lt;br /&gt;
*[https://jerres12.net/run/index.htm Border 0: Run&amp;quot;] CPC high-score gaming competition organised periodically by [[Jerres12]]&lt;br /&gt;
*[https://crocofest.fr/ CrocoFest] Annual gathering of Amstradists and other retro computer users. No game console allowed except the GX4000&lt;br /&gt;
*[https://amstradeterno.com/ Amstrad Eterno] The first Amstrad fair in Spain. Includes the Amstrad Eterno awards ceremony for the best games of the year&lt;br /&gt;
*[https://auamstrad.es/retroescena/amstrad-mania-2024/ Amstrad Mania] Exposition, talks and repair workshop&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Others ====&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
*[https://amstrad.com Amstrad.com] Official Amstrad website&lt;br /&gt;
*[https://amstraddigital.co.uk Amstrad Digital] Current marketing agency founded by Alan Sugar and led by his grandson&lt;br /&gt;
*[https://amstradworld.com/ Amstrad India] Official independent Amstrad franchise&lt;br /&gt;
*[https://youtu.be/wp_OhXOIQn4 Amstrad Gamebox] [https://youtu.be/x_l0JI_5VyE Review] [https://youtu.be/cLv-W7-yFCU Drama] New retrogaming console by Amstrad&lt;br /&gt;
*[https://www.amazon.fr/stores/AMSTRAD/page/E4B24068-D603-4465-83F6-1E56A2D44B50 Amstrad store] on Amazon (also distributed in French retail stores)&lt;br /&gt;
*[https://github.com/topics/amstrad-cpc GitHub #amstrad-cpc] GitHub topic filter&lt;br /&gt;
*[https://8bitsdepoder.blogspot.com 8 bits de poder (ES)] Programación del Amstrad CPC usando la libreria 8BP desde BASIC&lt;br /&gt;
*[http://cpccrackers.free.fr CPCCRACKERS] - French site about crackers for the CPC.&lt;br /&gt;
*[https://www.two-mag.com/ Two-Mag] The page of [[Two-Mag]] CPC cracker&lt;br /&gt;
*[https://jerres12.net Border 0] French site about CPC games&lt;br /&gt;
*[http://turpas3.angelfire.com Programming Turbo Pascal on a CPC!] - A collection of Turbo Pascal programs with some CPC Specific programs. &lt;br /&gt;
*[http://www.oldschool-gaming.com/view_index.php?4mat=9 Oldschool gaming] - Games reviews of recent games for the CPC!&lt;br /&gt;
*[http://homebrew.amstradtoday.com/index_uk.htm Amstrad Today Homebrew] Website dedicated to homebrews for the CPC&lt;br /&gt;
*[http://gx4000.co.uk GX4000.co.uk] Website devoted to the hardware and software of the oft-neglected games console.&lt;br /&gt;
*[https://www.gx4000.net/ GX4000.net] French website dedicated to the GX4000&lt;br /&gt;
*[https://cpcwiki.de/ CPCwiki.de] German CPCwiki&lt;br /&gt;
*[https://www.habisoft.com/pcwwiki/doku.php?id=en:start PcwWiki] Amstrad PCW / Schneider Joyce wiki&lt;br /&gt;
*[https://youtu.be/XXBxV6-zamM Micro Men (2009)] BBC movie about the rivalry between Sinclair and Acorn in the early 1980's. Alan Sugar briefly appears in the end.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Outdated / abandoned ====&lt;br /&gt;
----&lt;br /&gt;
*[http://www.octoate.de Octoate.de] - CPC news website in English. Last updated in 2019&lt;br /&gt;
*[http://tacgr.emuunlim.com/ The Amstrad Computer Game Resource] Last updated in 2006&lt;br /&gt;
*[http://thesnakebecomesthekey.wordpress.com The Snake Becomes the Key] is a very nicely-written blog with reviews and thoughts on various CPC games. Last updated in 2007&lt;br /&gt;
*[http://antoine.rozanski.free.fr CPC Museum (FR)] Website dedicated to the Amstrad CPC. Last updated in 2003&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== DEAD  ====&lt;br /&gt;
----&lt;br /&gt;
*[http://www.cepece.info/ CePeCe (ES)] Spanish CPC portal and web-hosting facilities for your CPC webpage.&lt;br /&gt;
*[http://amstrad.cpc.free.fr Amstradeus (FR)] Lots of interviews, manuals for download and much more.&lt;br /&gt;
*[https://web.archive.org/web/20080317151434/https://optimus.demoscene.gr/cpcscene/ The CPC Demoscene] Optimus website about the CPC demoscene with a list of some of the best CPC demos with reviews and screenshots. &lt;br /&gt;
*[https://web.archive.org/web/20250114135536/https://cpcfreak.cpc-live.com/ CPC Freak] Homepage of Kevin (arnoldemu) Thacker's CPC productions&lt;br /&gt;
*[http://www.cpczone.net CPC Zone] Home of the Gamebase, the ultimate collection of information (with screenshots, cover scans, reviews etc) on all games CPC. Also home of the Zone Forum.&lt;br /&gt;
*[http://8bit.yarek.pl/index.html 8bit Projects for Everyone] - Hardware updates for 8-bit computers, also for CPC&lt;br /&gt;
*[https://web.archive.org/web/20081216010826/http://cpc-hardware.com/index.php?op=edito CPC Hardware (FR)] Forum, nice downloads, hardware projects; also an online store for hardware stuff like [[RS232|RS232]] interfaces etc.&lt;br /&gt;
*[http://www.cpc-forum.de CPC-Forum (DE)] The new most important discussion forum for the German-speaking part of the CPC scene.&lt;br /&gt;
*[http://www.cpc6128.eu CPC 6128 Europe] European portal.&lt;br /&gt;
*[http://cpcoxygen.fxwebdevelopment.com/ CPC Oxygen] Home of the same-name great fanzine and AA scan repository.&lt;br /&gt;
*[http://www.terra.es/personal/diegovp Various Amstrad stuff] Including instructions on how to fit or connect a 3.5&amp;quot; drive, hot to connect your CPC to your PC and how to transfer files, among others.&lt;br /&gt;
*[http://cpcretrodev.byterealms.com/en/ #CPCRetroDev] Annual Amstrad CPC game development contest that ran from 2013 to 2023. It is now a GameBoy development contest [https://www.cpcwiki.eu/forum/general-discussion/hi-folks-21822/msg248223/#msg248223 Source]&lt;br /&gt;
*[https://web.archive.org/web/20150827210126/https://pushnpop.net/ Push'n'Pop] Amstrad Demoscene.&lt;br /&gt;
*[http://www.frappr.com/cpcscene/ CPC scene map]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Minitel&amp;diff=126033</id>
		<title>Minitel</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Minitel&amp;diff=126033"/>
				<updated>2025-05-18T17:51:28Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: /* Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Minitel terminal.jpg|thumb|right|Minitel 1B]]&lt;br /&gt;
[[File:Minitel Amcharge.jpg|thumb|right|3615 AMCHARGE]]&lt;br /&gt;
&lt;br /&gt;
The Télétel (usually called Minitel, named after the terminal) was a videotex online service accessible through telephone lines. Videotex is a modified interactive version of the Teletext protocol that existed in TV broadcast.&lt;br /&gt;
&lt;br /&gt;
Launched commercially in 1982, it was the world's first and most successful mass-market online service prior to the World Wide Web.&lt;br /&gt;
&lt;br /&gt;
Only the Minitel service, which used on-demand access through the telephone network, was commercially successful for a long time. Subscription-based services like Prestel (UK), Bildschirmtext (Germany), Videotel (Italy), Télidon (Canada), and Captain (Japan) failed commercially and were stopped soon after testing.&lt;br /&gt;
&lt;br /&gt;
In the United States, there was a stalled attempt by USWest to bring this service to two test markets: Minneapolis and Omaha. [https://fullempty.sh/posts/exeltel2.html Source]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Amstrad CPC services ==&lt;br /&gt;
&lt;br /&gt;
In the CPC era, multiple services existed to download games for the Amstrad CPC via Minitel, like 3615 AMSTRAD, 3615 AMCHARGE and 3615 MICROCHARGE.&lt;br /&gt;
&lt;br /&gt;
[[File:Minitel CPC kits.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nowadays ==&lt;br /&gt;
&lt;br /&gt;
The Minitel can still be used today to access your Amstrad news.&lt;br /&gt;
&lt;br /&gt;
[[File:Minitel MiniPAVI.jpg|400px]]&lt;br /&gt;
[[File:Minitel Amstrad News.jpg|400px]]&lt;br /&gt;
[[File:Minitel DarkArcade Server.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
*[https://www.minipavi.fr/emulminitel/index.php?gw=wss%3A%2F%2Fgo.minipavi.fr%3A8181%2F%3Furl%3Dhttps%253A%252F%252Fminitel.darkarcade.fr%252Findex3.php DarkArcade Minitel (FR)] Videotex Amstrad news service&lt;br /&gt;
*[https://xn--multipli-i1a.fr/minimit/ Minimit] To connect your Minitel to servers as the PSTN has been retired&lt;br /&gt;
*[https://youtu.be/BpDrWriI7lo Je teste le Minimit] [https://youtu.be/F2mgDSBWOxI Le Minitel en 2023, petit tour sur des Micro-serveurs] [https://youtu.be/WVX69zegK2c Le Minitel en 2025] by [[Kaspius Le Vrai]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Non CPC Computers]]&lt;br /&gt;
[[Category:Peripherals]]&lt;br /&gt;
[[Category:Network]]&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Minitel&amp;diff=126032</id>
		<title>Minitel</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Minitel&amp;diff=126032"/>
				<updated>2025-05-18T17:31:55Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: /* Amstrad CPC services */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Minitel terminal.jpg|thumb|right|Minitel 1B]]&lt;br /&gt;
[[File:Minitel Amcharge.jpg|thumb|right|3615 AMCHARGE]]&lt;br /&gt;
&lt;br /&gt;
The Télétel (usually called Minitel, named after the terminal) was a videotex online service accessible through telephone lines. Videotex is a modified interactive version of the Teletext protocol that existed in TV broadcast.&lt;br /&gt;
&lt;br /&gt;
Launched commercially in 1982, it was the world's first and most successful mass-market online service prior to the World Wide Web.&lt;br /&gt;
&lt;br /&gt;
Only the Minitel service, which used on-demand access through the telephone network, was commercially successful for a long time. Subscription-based services like Prestel (UK), Bildschirmtext (Germany), Videotel (Italy), Télidon (Canada), and Captain (Japan) failed commercially and were stopped soon after testing.&lt;br /&gt;
&lt;br /&gt;
In the United States, there was a stalled attempt by USWest to bring this service to two test markets: Minneapolis and Omaha. [https://fullempty.sh/posts/exeltel2.html Source]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Amstrad CPC services ==&lt;br /&gt;
&lt;br /&gt;
In the CPC era, multiple services existed to download games for the Amstrad CPC via Minitel, like 3615 AMSTRAD, 3615 AMCHARGE and 3615 MICROCHARGE.&lt;br /&gt;
&lt;br /&gt;
[[File:Minitel CPC kits.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nowadays ==&lt;br /&gt;
&lt;br /&gt;
The Minitel can still be used today to access your Amstrad news.&lt;br /&gt;
&lt;br /&gt;
[[File:Minitel MiniPAVI.jpg|400px]]&lt;br /&gt;
[[File:Minitel Amstrad News.jpg|400px]]&lt;br /&gt;
[[File:Minitel DarkArcade Server.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
*[https://www.minipavi.fr/emulminitel/index.php?gw=wss%3A%2F%2Fgo.minipavi.fr%3A8181%2F%3Furl%3Dhttps%253A%252F%252Fwww.darkarcade.fr%252Findex3.php DarkArcade Minitel (FR)] Videotex Amstrad news service&lt;br /&gt;
*[https://xn--multipli-i1a.fr/minimit/ Minimit] To connect your Minitel to servers as the PSTN has been retired&lt;br /&gt;
*[https://youtu.be/BpDrWriI7lo Je teste le Minimit] [https://youtu.be/F2mgDSBWOxI Le Minitel en 2023, petit tour sur des Micro-serveurs] [https://youtu.be/WVX69zegK2c Le Minitel en 2025] by [[Kaspius Le Vrai]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Non CPC Computers]]&lt;br /&gt;
[[Category:Peripherals]]&lt;br /&gt;
[[Category:Network]]&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=File:Minitel_CPC_kits.jpg&amp;diff=126031</id>
		<title>File:Minitel CPC kits.jpg</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=File:Minitel_CPC_kits.jpg&amp;diff=126031"/>
				<updated>2025-05-18T17:31:11Z</updated>
		
		<summary type="html">&lt;p&gt;Phi2x: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Phi2x</name></author>	</entry>

	</feed>