Ruud's Commodore Site: EPROM emulator Home Email

EPROM emulator

What is it

An EPROM emulator capable of emulating the 2716, 2732, 2764, 27128 and 27256. It is operated from a bidirectional printer port of a PC.

Supporting other types

The 2364 is not supported directly but that can be solved by using an adapter. It is the same adapter that you need if you want to replace the 2364 of a C64, 1541 or VIC-20 with a 2764 or bigger EPROM.

Other types are supported as well if they fulfill the following condition: take a 2732 or 27256 as base. As long as it is only one or more address pins replaced by enable pins, the EPROM is supported. The emulator doesn't even have to know if it is a positive or negative enable input. By mirroring a smaller EPROM all over the memory, the data always pops up at the right place.

The hardware

The core is a 57256 32KB*8 SRAM (IC9). Two systems must be able to approach this SRAM so we must provide means of access to the address, data and control bus. A 32KB SRAM has:
* 15 address lines
* 3 control lines
* 8 data lines
To access these lines from the host system we need three 541 buffers for the address and data lines, IC7, IC8 and IC12, and one half of a 244 (IC10B) for the control lines.

The printer port does not supply address lines and therefore we have to supply them ourself using two 74ALS573s, IC1 and IC2. They get their input from the data bus of the printer port.

A 74LS139 2-to-4 demultiplexer, IC5B, takes care of selecting the 573 you want to update (Y0 and Y1). Output Y2 selects the SRAM. Y3 controls whether the 573s or 541s (IC7 and IC8) and one halve of the 244 (IC10A) are active.
The select lines of the 139 are controlled by two outputs of the printer port.

One problem is the use of the 'Chip Enable' (CE) and 'Output Enable' (OE) inputs of a ROM by a host system. Some systems only activate CE and connect OE to ground, others use only OE and again others use both inputs. ORing these inputs makes sure when we have to enable IC12 to output the data. To save an IC we use IC5A as an OR gate.

As you can see there are no provisions taken to avoid data collisions: this cannot be realized in hardware and is purely a matter of software. The moment the SRAM needs to be read by the host or PC, the data bus of the printer port must operate in input mode.

2732 and smaller EPROMS have only 24 pins. This means that the power supply is at pin 26 of our design. A diode (D3) routes the power to pin 28.
To make sure that the pins 2 and 27 have a defined level, two resistors pull these line up to +5V.

Power requirements

The host computer has to power the emulator. For this reason I advise you to use HCT versions of the needed IC to limit the current. In case of an old C=, IMHO there is a good chance you even need less power then the original ROM :)

The future

The 27256 is the largest EPROM used in C= 8 bitters AFAIK. So for the moment I have no interest in expanding the system.

The schematic.

Having questions or comment? You want more information?
You can email me here.