Matt Callow Turns a Raspberry Pi Pico Into a Low-Cost ROM Emulator for the Amstrad CPC Family

Built using a bare minimum of components, this ROM emulator packs in 2MB of CPC-compatible software.

Vintage computing enthusiast Matt Callow has put together a handy accessory for the Amstrad CPC owner: a ROM emulator, powered by the low-cost Raspberry Pi Pico microcontroller board and surprisingly little else.

"[This is] a ROM emulator using a [Raspberry] Pi Pico and no other active components," Callow explains of his creation, which is built to a bare minimal bill of materials. "[It] emulates lower ROM plus 8 upper ROMs. All of the Pico GPIO pins are used; 15 for address bus (A14 not connected), 8 for the data bus, and 3 control lines."

If you've got an Amstrad CPC and a Raspberry Pi Pico lying around, you're in for a treat. (📷: Matt Callow)

The emulator is designed for use with an Amstrad CPC, a color home computer first released by Amstrad in 1984 as a competitor to the popular ZX Spectrum and Commodore 64. Like many machines of the era, it included an integrated ROM while loading add-in software from cassette tape — but additional ROMs could be added in order to load software instantaneously.

"Multiple upper and lower ROMs can be stored in the Pico's 2MB onboard flash," Callow explains of his design. "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 [Programmable Input/Output] state machine)."

A control ROM allows multiple different ROM files to be saved to the Pico's flash and loaded from a menu. (📷: Matt Callow)

The source code for the emulator has been published on GitHub under an unspecified open source license, along with an explanation of how the Raspberry Pi Pico should be wired to the CPC. "The Pico IO pads are not rated for 5V, and this circuit contains no level shifters," Callow admits. "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."

More information is available on the project's Hackaday.io page.

ghalfacree

Freelance journalist, technical author, hacker, tinkerer, erstwhile sysadmin. For hire: freelance@halfacree.co.uk.

Latest Articles