ROMemu is a combination of software and hardware that allows the usage of modern software development tools for simple, old style single board computer systems. It emulates an (EP)ROM programmer to the development software and an in-circuit ROM/RAM on the target board.
The current version 1.1 uses an Arduino Mega 2560 with a shield containing a 32 kByte RAM-chip which is (partially) readable by the processor on the target board. The Arduino USB-connection is available as serial port to the development system. This allows to write Intel-hex data to the RAM.
ROMemu has two modes;
Using the ROMemu as RAM is an option, provided the board logic allows writing to the socket and a write signal is available.
The Arduino firmware supports Intel-hex format transfer to and from the emulator and some diagnosics.
The basis of the ROMemu is an Arduino shield with a static RAM chip, fully connected to Arduino pins. The RAM chip is isolated from the target board with buffers (74LS244 for address and control lines, 74LS245 for data lines). The Arduino controls the buffers, isolating the RAM from the board during transfers from PC to the RAM. The data line buffers are bidirectional, so the board could actually write to the RAM assuming a write signal is provided.
A short flatcable and an adapter board (pod) makes sure the RAM-chip signals are properly configured for the socket. The pod consists of two parts, an adapter between the RAM-pins and the pins provided by the socket and a set pins for the socket. A pod configuration has to be made for each socket (=EPROM type) to be supported.
The 1.3 version of the schematic:
Getting code into an old SBC usually means assembly by hand or an desktop computer and retyping the HEX-codes into the SBC with an 7-segment display and simple keyboard. The ROMemu makes this more fun and less chance for typo's (but not really simpler).
If the write signal is properly configured, the SBC can write to the emulated ROM. The Arduino firmware allows downloading the RAM in Intel-Hex format back to the host computer.
There are two tools to download hex-intel data to the ROM Emulator:
It is assumed the ROMemu is connected to the development system (desktop PC) and the SBC.
Current command set of the Arduino sketch:
-- ROM emulator 0.4 command set Operational commands: D[ssss[-eeee]]- Dump memory from ssss to eeee Fhhhh - AddressOffset H - This help text :ssaaaatthhhh...hhcc - hex intel record ;ssss-eeee - Generate hex intel data records E - Generate hex intel end record Test commands Bpp - blink pin p (in hex) Sssss-eeee:v - fill a memory range with a value Tp - exercise port p V - view ports C, L, A, CS, OE, WR, ARDUINOONLINE Wpp v - Write pin (in hex) values 0, 1 ? - This help text
Here an example pod configuration, for the 2532 EPROM. With the WR* signal connected to the Vpp pin, write access is possible. Note only the memory range 0000h-1FFFh (Arduino side) is visible to the SBC at the address range of the ROM-socket.
Last updated: 2024-08-09