April 10, 2026
Inspired by Ben Eater's series to build a 6502 computer, I have decided to build my own 8-bit computer on a bunch of breadboards. More specifically, I'm building an Amstrad CPC 6128, a Z80 based computer, clocked at 4 MHz with 128 KB of RAM, which was very popular in Europe in the late 80s.

Rebuilding my childhood computer is going to be an exciting journey that I will document here, failures and successes alike. We should be learning a lot and hopefully not burn too many components while we're at it!
Let's not fool ourselves though. Building a computer is not that simple and we will cut corners. Probably a lot! But others have done it before, some a while ago, others more recently. There is also a very active community around the CPC who has made a ton of resources available to us. We will need them!
They say "it's not about the destination, it's about the journey". When my wife was struggling to finish school, a friend encouraged her to keep going by saying, "it's not about the journey, it's about the destination!" We thought the mistake was really funny until we realized she was also right - both things are true! While I am looking forward to the journey, I also need a destination: to run an original CPC game! I haven't decided which game yet, but maybe Bruce Lee, which is, to me, a quintessential game of the CPC.

Here are our main milestones to get there:
NOP instructionsReady screenI have the bad feeling that I am missing important steps here, but "oh well". I guess we will find out what they are soon enough!
We can't tackle a project like this without knowing what components lie in a CPC and how they work together, at least to some extent. So what's under the hood?

This is the circuit diagram of the CPC 464, same-ish computer with only 64 KB of RAM. It is a bit simpler than its 6128 counterpart and the colors make it easier to read. So what do we have here?
This diagram is going to be very important. It is the map that will guide us to our destination. Every connection between any two components of the machine is represented somewhere in this map.
Some of these chips are widely available while others are going to be more difficult to find. Some of these chips, despite being available, have more convenient alternatives. Let's see what parts of the design we can modify to make our life simpler and to make our goal reachable.
This is a bespoke chip made for the CPC. Each CPC model has a different one, specifically programmed for its hardware. There is no way we can get our hands on one of these and we need a replacement. These are the two options I can think of:
So let's start with the ESP32. But there is a risk, it might not be fast enough. In which case we'll switch to an FPGA and still keep it for its many interfaces that we'll use to emulate floppy drives and to get inputs for a keyboard.
Instead of parallelizing 8 chips of 64 Kb of DRAM, we can instead use one single chip of 64 KB of SRAM. Note the difference here: b stands for bit, B stands for byte. For the 6128 version, it's actually 2 chips instead of 16. While we're at it, let's go straight for a single chip of 128 KB SRAM if we can. And we're done! This design change is going to save us a lot of wiring and precious breadboard space. Also, SRAM doesn't need to periodically refreshed to keep its data alive like DRAM does.
Since we are changing this piece of hardware, we don't need multiplexers anymore. We are going to plug all 16 address lines directly into the SRAM. But we still need line drivers to switch between the address bus and the video controller. We'll use octal data buffers: they have 8 input lines, split into two sets of 4 bits that can be activated independently. With 4 of these, we will be able to select where we are getting the addresses from.
There are a couple of options we have to emulate the ROM. They all imply using a programmable ROM so that we can easily write to it, and even modify it if needed. It doesn't really matter if we use an EPROM, EEPROM or a Flash Memory. What matters is having enough of it (we need 32 KB) with a maximum access time of 200 ns. An important criteria is also what my local electronics store has in stock. The one chip that meets all these needs is a 512 KB Flash memory with a 90 ns access time. 512 KB is plenty, we'll only use a fraction of that. In theory, we could access more, maybe do some bank switching and use more than 32 KB, swap ROMs, store more games maybe? We'll see!
The original CPC runs on TTL technology. But today we have CMOS technology, which is faster, uses less power, but is also more vulnerable to static damage. Both technology have different logic voltage levels but are somewhat compatible. Mixing them is usually okay, but we must be careful about timing and voltages. Since I'm far from being an expert in such things though, I'd rather not mix them.
Another contender is CMOS with TTL compatibility technology. Just like CMOS, but with signals that play nicely with TTL chips. We'll go for that, because some of our chips will be TTL (like the Z80 itself).
In the original design, all chips belong to the 74LSx series, which is TTL. They all have a CMOS counterpart in the 74HCx series, and also a TTL compatible CMOS version in the 74HCTx series. Any of our integrated circuits will be from the HCT family.
So this is what we'll need for our journey:

Many parts of the original machine will be replaced with something else. We are going to end up with a bunch of disparate components, some of which not even at the same voltage levels, all slapped on a couple of breadboards and crudely wired together. Will that be a Amstrad CPC? Just like the Ship of Theseus, what gives a computer its identity? Its hardware? The software it runs? How it looks and how it sounds?
It will display the same pictures, play the same sounds, and run the same games, but in the inside, it will be nothing like the original. Clearly, it won't be a CPC, but what the world will come to call the Frankenstrad CPC 6128.