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 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 SBC-processor. 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 socket is capable 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. Additionally three 74HCT244 connect address and control lines and a 74HCT245 connects the data lines of the host SBC. An extra signal, ArduinoOnline, isolates the RAM from the SBC. An 74HCT02 makes sure the RAM is isolated from the SBC when the Arduino has access.
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 is made for each socket to be supported.
The 1.2 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 on 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.
Possible workflow. 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: 2022-11-03