The Amstrad CPC 664
The CPC664 computer is built around the same architecture as the Amstrad CPC 464, but the aging tape drive was swapped out for a sequential disk drive system, the quick disk. This is the same disk drive that some of the later Spectrum computers used. It featured 3" disks, and data was written on them sequentially, making them not very fast compared to disk drives that used a random access format.
Amstrad CPC Computers
Amstrad was known for cheap hi-fi products but had not broken into the home computer market until the CPC 464. Their consumer electronic sales were starting to plateau and owner and founder Alan Sugar stated "We needed to move on and find another sector or product to bring us back to profit growth". Work started on the Amstrad home computer in 1983 with engineer Ivor Spital who concluded that Amstrad should enter the home computer market, offering a product that integrated low-cost hardware to be sold at an affordable "impulse-purchase price". Spital wanted to offer a device that would not commandeer the family TV but instead be an all-in-one computer with its own monitor, thus freeing up the TV and allowing others to play video games at the same time. Bill Poel, General Manager of Amsoft (Amstrad's software division), said during the launch press release that if the computers were not on the shelves by the end of June "I will be prepared to sit down and eat one in Trafalgar Square".
Many programs and peripherals were developed for the CPC computers. Amstrad's Operating System was AMSDOS. This OS is embedded in Basic using so-called RSX commands starting with |, but it could not format disks, for that you needed a special application. The 464 also could use CP/M 2.2 or 3.0 when used with an external Floppy disk unit (3" Hitachi, 180 KB / face). A lot of great CP/M software was adapted for the Amstrad CPC.
About 42 KB RAM was available for the user, the video memory and the ROM were mapped on the same addresses with a dedicated chip to switch the memory banks automatically.
The first Amstrad CPC prototype (called "Arnold", which gave the name ROLAND (Arnold acronym) to several CPC games) was built around a 6502 processor and then changed to a Z80 late in the computer's development. A few months later, the CPC series would be completed with a computer which offered a built-in floppy disk unit: the CPC 664.
The CPC series are powered by the Zilog Z80 processor after the original attempts to use the 6502 processor, being used in the Apple II amongst many other 8-bit computer families, failed. The Z80 runs at 4 MHz, has 64K of memory and runs AMSDOS, Amstrad's own OS. The unit includes a built in tape drive and the choice of a colour or green monochrome monitor.
Normal Video Modes
- Mode 0 - 160x200 in 16 colors
- Mode 1 - 320x200 in 4 colors
- Mode 2 - 640x200 in 2 colors
- Mode 3 - 160x200 in 4 colors*
Each color can be chosen from a palette of 27 colors total. The dimensions in pixels given could be raised with clever use of FullScreen Trick (often dubbed erronuously as overscan mode). This then allows with a video memory of 24 KB (approximately) to have alternate video modes.
Alternate Video Modes
- Alt Mode 0 - 192x272 in 16 colors
- Alt Mode 1 - 384x272 in 4 colors
- Alt Mode 2 - 768x272 in 2 colors
Amstrad Basic
Amstrad BASIC, officially known as Locomotive BASIC, was the built-in programming language and operating environment for the Amstrad CPC series (beginning with the CPC464 in 1984). Unlike the very limited BASICs bundled with machines such as the Commodore 64, Locomotive BASIC was designed to be both fast and feature-rich. It offered advanced constructs such as WHILE…WEND loops, REPEAT…UNTIL, structured error handling via ON ERROR GOTO, and integer as well as floating-point math routines. The interpreter was tightly integrated with the CPC’s firmware, which exposed consistent routines for screen handling, sound generation, cassette/disk I/O, and even the CRTC-driven video modes. Because of this, programmers could write comparatively high-level code without constantly dropping down into Z80 assembly, yet still exploit the CPC’s hardware in a predictable, consistent way.
Graphically, Locomotive BASIC was particularly powerful compared to its contemporaries. It supported three standard screen modes (160×200 with 16 colors, 320×200 with 4 colors, 640×200 with 2 colors), all addressable directly from BASIC commands such as MODE, PLOT, DRAW, and INK. Unlike Commodore’s PETSCII-style character graphics or the Spectrum’s blocky color attributes, the CPC offered flexible raster graphics primitives from within BASIC itself, without requiring PEEK/POKE gymnastics. Furthermore, sound was integrated via the SOUND command, providing programmable frequency, duration, envelope, and channel selection on the AY-3-8912 sound chip. These facilities placed Locomotive BASIC closer in spirit to Microsoft Extended BASIC implementations, though with custom extensions tuned for the Amstrad firmware.
In comparison with rival systems: Commodore 64 BASIC V2 was notoriously spartan, lacking any graphics or sound commands, leaving users dependent on memory-pokes or machine language for non-text applications. Atari BASIC (on Atari 400/800) did provide sound and graphics primitives, but with a slower interpreter and more cumbersome syntax. Sinclair Spectrum BASIC integrated graphics commands but was encumbered by its single-key keyword entry system, which simplified typing but limited editing flexibility and speed. Amstrad’s Locomotive BASIC distinguished itself as both complete and performant, balancing structured programming facilities with direct hardware access, and in doing so made the CPC line particularly attractive for hobbyists and semi-professional developers who wanted more than a token BASIC environment.
Video - The Motorola 6845 CRTC
The Motorola 6845 CRT Controller (CRTC), later second-sourced by Hitachi (HD6845), Rockwell, and others, was one of the most influential video timing chips of the late 1970s and 1980s. It was not a graphics generator in itself; instead, it produced the precise timing signals needed to drive a raster display, such as horizontal and vertical sync pulses, row and character addresses, and memory fetch cycles. Systems attached external character generators (ROMs) or pixel logic to interpret the memory data, while the 6845 ensured the scanlines appeared in the correct order and at stable refresh rates. Its programmability, registers controlling horizontal total, vertical total, sync widths, cursor position, and so forth, made it adaptable across a wide range of systems, from text terminals to microcomputers.
The 6845’s flexibility came from its ability to map arbitrary chunks of RAM to display regions using start address registers, row address counters, and cursor control. For instance, a designer could allocate just 2 KB of RAM for a 40×25 text screen, or more for bitmapped graphics, with the 6845 providing the address sequencing. Many early microcomputers such as the BBC Micro, Amstrad CPC, and Commodore PET derivatives used the chip, often combining it with a custom video gate array or ULA to generate the pixel stream. IBM also adopted the 6845 in its original Monochrome Display Adapter (MDA) and Color Graphics Adapter (CGA), cementing its influence on the emerging PC standard.
Although by itself the 6845 did not support modern concepts like sprites or hardware scrolling, its register set was exploited creatively. Programmers discovered that by rewriting registers mid-frame (a technique known as “raster tricks”), they could produce split-screen effects, palette changes, or smooth scrolling beyond the documented capabilities. Over time, more integrated graphics controllers absorbed the 6845’s functionality into larger chips that combined timing, pixel generation, and sometimes even acceleration. Nonetheless, the 6845’s architectural model, separating timing control from pixel memory, shaped early video hardware design and left a strong legacy in the personal computer industry.
The 6845s main function is to properly time access to the display memory, and to calculate the memory address of the next portion to be drawn. Other circuitry in the machine then uses the address provided by the 6845 to fetch the pattern and then draw it. The implementation of that hardware is entirely up to the designer and varied widely among machines. The 6845 is intended for character displays, but could also be used for pixel-based graphics, with some clever programming.
Computers that used the 6845 are, among others:
- BBC Micro
- Amstrad CPC
- Videx VideoTerm display cards for Apple II
Sound - The AY-3-8910 PSG
The AY-3-8910 is a 3-voice Programmable Sound Generator, or PSG. It was designed by General Instruments in 1978 for use with their own 8-bit PIC1650 and their 16-bit CP1610 computers.
The PSG is widely used in many arcade cabinets, pinball machines, and many micro-computers. Here is a list of some of the major brands of computer that used the AY-3-8910:
- Intellivision
- Vectrex
- Amstrad CPC range
- Oric-1
- Color Genie
- Elektor TV Games Computer
- All MSX-1 and MSX-2 computers
- ZX Spectrum home computers
General Instrument spun of MicroChip Technology in 1987 and the chip was sold under the MicroChip brand, and licensed to Yamaha as the YM2149F which the Atari ST range of computers use. Functionally the PSG is very similar to the Texas Instruments SN76489.
Variants:
-
AY-3-8910
Comes with 2 general purpose 8-bit parallel I/O ports, used for Keyboard and Joystick in for instance MSX. -
AY-3-8912
Same chip, but in a 28-pin package. Parallel port B is not connected to save cost and space. -
AY-3-8913
Same chip, but in a 24-pin package. Both parallel ports are not connected. -
AY-3-8914
The AY-3-8914 has the same pinout and is in the same 40-pin package as the AY-3-8910, except the control registers on the chip are shuffled around, and the 'expected input' on the A9 pin may be different. It was used in Mattel's Intellivision console and Aquarius computer. -
AY-3-8930
Backwards compatible but BC2 pin is ignored
YM2149F -
YM3439-D
CMOS version of the Y2149 in 40-pin DIP -
YM3439-F
CMOS version of the Y2149 in 44-pin QFP -
YMZ294
Variant of the YM3249 in an 18-pin package. Parallel ports not connected, and all sound channels mixed on 1 port. -
T7766A
Toshiba variant of the AY-3-8910, fully compatible. Used in some MSX models. - Winbond WF19054, JFC95101, and File KC89C72: Fully compatible versions of the AY-3-8910 produced for slot machines.
Yamaha Produced chip, same pin-out as the AY-3-8910, but pin 26 could halve the master clock. Can be used to replace the AY-3-8910 if pin 26 is left disconnected.
CPU - The Zilog Z80
The Z80 quickly became popular in the personal computer market, with many early personal computers, such as the TRS-80 and Sinclair ZX80, using the Z80 as their central processing unit (CPU). It was also widely used in home computers, such as the MSX range, SORD, and the Amstrad CPC, as well as in many arcade games. Additionally, it was also used in other applications such as industrial control systems, and embedded systems. The Z80 was widely used until the mid-1980s, when it was gradually replaced by newer microprocessors such as the Intel 80286 and the Motorola 68000.
The Z80 microprocessor was developed by Zilog, a company founded by Federico Faggin in 1974. The Z80 was released in July 1976, as a successor to the Intel 8080. It was designed to be fully compatible with the 8080, but also included new features such as an improved instruction set, more powerful interrupts, and a more sophisticated memory management system.
Originally the Z80 was intended for use in embedded systems, just as the 8080 CPU. But the combination of compatibility, superior performance to other CPUs of the era, and the affordability led to a widespread use in arcade video game systems, and later in home computers such as the Osborne 1, TRS-80, ColecoVision, ZX Spectrum, MSX, Sega's Master System and many more. The Z-80 ran the original Pac-Man arcade cabinet. The Z-80 was used even in the Game Gear (1990s), and the TI-81 and succeeding graphic calculators.
The Z-80 remained in production until June of 2024, 48 years after its original release. Zilog replaced the processor with its successor the eZ80, an 8-bit microprocessor that features expanded memory addressing up to 16 megabytes, and running up to 50MHz, comparable to a Z80 clocked at 150MHz.
VRAM: 16kB
320x200, 4 colors
640x200, 2 colors
27 color palette
