ROM emulator

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.

Version 1.1 of the ROMemu Arduino shield with flatcabe and 
socket-pod.

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.

Technical details.

Simplified diagram of the ROM Emulator

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:

small linked image of the schematic

Schema of the EmuPod

Operation

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:

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.

Pod configuration connecting non-fixed signals between socket and flatcable.

Local links

Other resources:


Last updated: 2024-08-09

e-mail