CPC Pico ROM Emulator

A ROM emulator for the Amstrad CPC using a Raspberry Pi Pico

Similar projects worth following
A ROM emulator using a Pi Pico and no other active components. Emulates lower ROM plus 8 upper ROMs.

*** WARNING ***

The Pico IO pads are not rated for 5V, and this circuit contains no level shifters. However I've seen comments saying that the inputs are probably 5V tolerant (but they are not certified to be), so I thought I would try it. So far, I've had no issues.

Use at you own risk.


The project uses a Pi Pico and a handful of passive components. All of the Pico GPIO pins are used; 15 for address bus (A14 not connected), 8 for the data bus, and 3 control lines.

Multiple upper and lower ROMs can be stored in the Pico's 2MB onboard flash. 1 lower and 8 upper ROMS are supported.  A control ROM is included which allows the selection of which ROMs (from the flash) are loaded into the available slots.

The Pico is overclocked to 225 MHZ, with one core providing ROM emulation whilst the other handles ROM switching and processing commands from the CPC (with the help of a PIO state machine)

More details are in the readme file on github

  • 1 × Raspberry Pi Pico
  • 5 × 1n4148 Discrete Semiconductors / Diodes and Rectifiers
  • 1 × 50 pin edge connector
  • 1 × Prototype board
  • 2 × Push Button

View all 7 components

  • PCBs Built

    Matt Callow06/14/2023 at 09:24 0 comments

    Finally the edge connectors arrived and I was able to build the circuit on one of the PCBs supplied by PCBWay.

    I added the optional USB interface as well and it all worked first time! The USB interface is compatible with the Albireo card so Alberio DOS or UniDOS work.

    I have had one problem with the reset of the CPC from the Pico. This problem was reported to be by a user on the CPC Wiki, but my original prototype worked fine. The PCB version is using a different Pico, so I think I maybe got lucky with the prototype.

    I will investigate this further. I'm thinking I will try increasing the drive current on the reset GPIO.

  • PCBs

    Matt Callow05/18/2023 at 01:21 1 comment

    I was not going to design a PCB for this, but then the nice people at PCBWay reached out and offered to make some for free.   So after failing to get Eagle running, a installed KiCad and knocked up a quick PCB. I decided to add a USB adapter based on the CH367 breakout board (similar to Albireo)

    I now have the boards back from PCBWay and they look great. I'm waiting on some new edge connectors before I can build them up and test them. Once I have confirmed it works, I will update github

  • Why?

    Matt Callow04/18/2023 at 10:59 0 comments

    Having recently picked up an old CPC464, I wanted to load some software. First step is to add some sideways ROM. I decided to make my own board as I wanted to learn more about using the Pi Pico and also the CPC.

    I'd seen a couple of projects using a micro controller as a ROM emulator, so  I knew it could be done. I'd also seen some projects using the Pico on 5V, apparently with no issues.  I was also fascinated by the PIO inside the Pico. So I did a bit of research and worked out that I would just have enough pins on the Pico to do what I wanted.

    Next steps, build the circuit on a proto board, and start coding...

View all 3 project logs

Enjoy this project?



Michael Wessel wrote 04/21/2023 at 02:12 point


I had this

on my to-do list for the CPC for quite some time, but never got to it.

Great to see you got it done! And much more feature complete as well. Nice!

  Are you sure? yes | no

Matt Callow wrote 04/21/2023 at 07:14 point

yes, I'd seen that too. I found that I didn't need to clock the Pico as fast, which means that I can still read from the flash to load new images. (but when serving the ROM image to the CPC both the code and data need to be in the Pico's RAM)

  Are you sure? yes | no

aaaaaa wrote 04/19/2023 at 11:41 point

mac os 6-7 too?

  Are you sure? yes | no

Does this project spark your interest?

Become a member to follow this project and never miss any updates