Some people get involved in retro computing to relive the experience of playing a favorite video game from childhood, while others like to spend their time repairing the hardware or hacking away at new software to teach these old dogs new tricks. Whichever way you happen to go, you will find that you eventually need to replace (or reprogram) a ROM chip. These early memory chips stored everything from operating systems and programming languages to applications and character set definitions.
Generally speaking, the ROM chips that were found in classic systems from the 1970s and 1980s are still available for purchase today, and at low prices, so they are not exactly hard to come by. But they can be a hassle to work with, especially if you want to iterate on new designs rapidly. The chip has to be pulled from the machine, then its contents have to be overwritten with a ROM programmer. The chips may be new, but the workflow is still quite dated.
SDRR (left) and the ROM chip it replaces (📷: piers rocks)
So for those that want a more modern development process, Piers Finlayson has come up with a great solution. Finlayson has developed what is called the Software Defined Retro ROM (SDRR). It uses an STM32 microcontroller to simulate the function of a ROM chip, which means that it can be programmed in more modern ways, and without having to pull the chip out of the hardware. Despite being based on a completely different technology, SDRR was designed to slot into the same exact footprints of real ROM chips.
The open source design of the hardware can work with a range of STM32 microcontrollers, ranging in speed from 100 MHz to 180 MHz. That is enough speed to emulate ROM chips in Commodore 64s, VIC-20s, and PETs, for starters — and toward the faster end of the spectrum, even some later machines. The firmware of SDRR supports emulation of 2364, 2332, and 2316 ROM chips, and there is enough memory to store up to 16 different images, which can be selected via jumpers.
If you would rather not load multiple images, you can simply leave the device connected to the programmer while it is in use. This makes it possible to update the ROM contents in real-time, without removing it from the hardware. Speaking of the programmer, nothing special or expensive is needed. Connecting a few wires to a Raspberry Pi Pico is all it takes (if you would rather use the Pico as the ROM emulator itself, check out my PicoROM project).
Finlayson has put together some excellent documentation on the board that explains how to create the hardware, program it, and use it in a retro computer. Be sure to check it out if you have got a hankering to do some retro computer hacking.