Chris Ward's 6502 and EEPROM Programmer Pages
Chris Ward's EEPROM Programmer Project Page
Get the schematic here in GIF format.
Early on in the project, I realised that I was going to need to program my own ROM chips. EEPROMs (or E2PROMs if you prefer) sounded like the easiest type of ROM to work with, as they don't need to be erased with expensive UV boxes and they don't need a seperate +12V programming voltage. With commercial programmers being very expensive and doing a lot more than I needed, I set about designing my own PC controlled programmer.
The design is very simple. Three 8-bit shift registers are fed with serial data from the parallel port, and their outputs control the address and data lines of the ROM.
To allow for reading there is also a parallel-to-serial shift register on the data lines. An octal buffer disconnects the other shift register when reading, otherwise there would be two devices trying to control the bus.
Other parallel port lines are directly connected to the control pins of the ROM - chip enable, write enable, output enable and ready/busy. Three jumpers are provided to configure the programmer for different devices, although it was originally intended for M28C64C EEPROMS. See table below.
|Jumper 1||Jumper 2||Jumper 3||Device|
|OFF||1-2||ON||2817 EEPROM (Note 1) (untested)|
|OFF||1-2||ON||2864 EEPROM (Note 2)|
|OFF||1-2||OFF||2764 EPROM (read only) (untested)|
|ON||1-2||OFF||27128 EPROM (read only) (untested)|
|ON||2-3||OFF||27256 EPROM (read only)|
Note 1: A 28-pin device with Ready/Busy pin, e.g. Microchip 28C17A. The
24-pin 2816 devices won't work.
Note 2: Must have Ready/Busy pin - I use ST Microelectronics M28C64C.
The programmer is controlled by a Windows program written with Visual C++. It can load and save file in raw binary or Intel Hex format. Read and write support is provided for the 2817 and 2864, and read-only for the 2764, 27128 and 27256. Below is a screenshot from the program:
The software has the following bugs/problems/missing features:
You can download the Windows executable or the source code (Visual C++ 5).