zws.com logo

products:

An EPROM Reader For Under USD$5

IMPORTANT! An enhanced reader/burner (EPROMr 2), supporting all devices from 2764 to 27040, is also available. Although it's a more challenging and slightly more expensive project than the one on this page, it's well worth building. Read the EPROMR 2 product page and see photos of the hardware prototype! The culmination of this line was intended to be EPROMr 3 for MacOS and Windows, which supports flash and EEPROM devices and serial EEPROMs from 1Kbit to 8Mbit. This product line is, however, no longer under development.


Do you get an itching feeling at the thought that you have NO backups of your machinery's EPROMs? (You should! The data in EPROMs has a distinctly finite lifespan). Are people pestering you for copies of your ROMs so that they can repair their own boards? You can't afford a commercial EPROM burner? You have access to a PC, and you know how to wield a soldering iron? Then you need to build this project! It will allow you to read 27128 (16Kx8), 27256 (32Kx8) and 27512 (64Kx8) EPROMs using any PC with a bidirectional parallel port - with a little enhancement, it can also burn new EPROMs, and with a simple wiring adapter it can be modified to handle other types of memories, and larger or smaller devices, up to 128Mbit (yes, Mbit!), and certain types of microcontrollers.

EPROM Reader Closeup Picture

Fig.1 - The completed project in a small jiffy box. The green lump with two sets of wires coming out of it is a +5V regulator (a 78L05 and a 220µF 16V electrolytic smoothing capacitor). This lash-up allowed me to use a cheapo unregulated multi-voltage plugpack as the power supply for this project. You could steal +5V off the keyboard port if you don't want another plugpack under your desk.

Parts Manifest

  • 2 x 4040 (MC74HC4040) 12-bit binary ripple counter ICs
  • 1 x 25-pin male D connector
  • 1 x 28-pin IC socket (ZIF is best, but will quadruple the cost of the project)
  • Small piece of Veroboard
  • Short length of 14-way ribbon cable
  • Lots of small pieces of thin, insulated wire (I used wire-wrap wire - I recommend it for this project because there are a lot of wire links on the underside of that piece of Veroboard!)
  • A logic probe is handy but not essential

Estimated assembly time (for competent technician) is 30-45 minutes due to the large number of wire segments that need to be cut to size, stripped, and soldered.

Mounting the Veroboard on top of a small jiffy box ensures that the wiring is kept out of harm's way. It also provides a handy space to store a voltage regulator (if required), and/or the regulator and switching transistor which will be required to control Vpp if and when this project is extended to accomodate writing EPROMs as well as reading them.

Control Software

Driver Software Download

Software for DOS is available online. It was developed under and has been certified for use within OS/2 Warp (provided IOPL=YES). It should work under most versions of DOS. This software will NOT work inside Windows NT.

Theory

If you examine the circuit diagram below, you'll see just how incredibly simple this ROM reader is. The ROM is forced into "enable" state by tying its output enable and chip select inputs low. The address is generated using two 4040 12-bit binary counter ICs, and data is read through the data lines of the host's parallel printer port. The host can reset both counters simultaneously, and can clock each counter independently.

To read out an EPROM, the host first resets both counters (to 000000000000) by asserting their reset pins, which are tied together and connected to the _STROBE line of the parallel port. The first byte of data can then be read off the data bus. The host then clocks the lower 4040 (IC1) by pulsing the INIT line on the parallel port. The next byte of data can then be read on the parallel port's data bus. This process is repeated until 2^12 counts have been made - the upper counter is then clocked by pulsing XT. This continues until the desired amount of data has been read.

 

Troubleshooting

Random corruption: Keep your hands away from the reader while dumping ROMs. Touching the ROM, or even just bringing body parts within a few centimeters of the reader, can corrupt the results. Also see below.

All bytes read back are the same: If the reader consistently reads back the same byte, usually "FF", your machine's parallel port is probably configured for SPP (unidirectional) mode. Check the CMOS setup screen, under the "On-Board Ports", "Integrated Peripherals" or similar heading - on modern machines you should find some options related to parallel port settings. Ensure that your port is set to "EPP" mode (EPP1.7 or EPP1.9 are the same. DON'T set SPP or ECP mode). If your machine has no such CMOS setting, you need to investigate jumper settings on the I/O card or motherboard.

Spurious clocking causing bytes to be missed: If you encounter problems with spurious clocking, first ensure that your machine's parallel port is NOT set to ECP mode (you will find this setting in the CMOS setup screen on modern PCs, it will be a jumper setting on older machines). If that isn't the solution, then put 22pF plate capacitors across the power supply pins of the counter ICs and EPROM (for power supply decoupling), and 33k pullup resistors on the clock and reset pins of the counter ICs (for TTL/LS to CMOS level matching). These haven't been necessary on any of the PCs to which I have access.

Circuit Schematic

EPROM Reader Circuit Schematic


zws.com and all original content herein is © Copyright 2002 by Lewin A.R.W. Edwards. "zws.com" is a trademark protected under U.S. and international law. Infringement or attempted dilution of the intellectual property rights held by Lewin A.R.W. Edwards will be prosecuted to the fullest possible extent.