Classic 27c256 27c512 EPROM Programmer Using Nano

by coopzone in Circuits > Computers

2027 Views, 1 Favorites, 0 Comments

Classic 27c256 27c512 EPROM Programmer Using Nano

IMG_0878.JPG

This project was build to program the original 1980's EPROMS, the typical UV erasable glass top ones used in many projects back in the day. This initial version only programs the 256k or 512k (giving 32kb or 64kb) versions typically called 27C256 or 27C512.

The main reason for just these two so far is that I used it to help build some RC2014 z80 retro computers - so far it has successfully programmed EPROMS fro:

sc108 z80 CPU board by Stephen C Cousins.

sc114 z80 SBC computer by Stephen C Cousins

simple80 SBC by Plasmo (AKA Bill Shen)

They are now all running perfectly.

Note: you will need a 12.7v PSU, I used my bench power supply for this to save on cost. It really does need to be 12.7 and not 12v. Other suggestions would be a cheap buck (step up) voltage converter. I have used one from Ebay and it seems to work fine. So the whole board can be powered at 5v.

The PCB design and Circuit for this project are now published on OSHWLab and can be found here:

https://oshwlab.com/mycoopzone/eprom_copy


Happy times.

Supplies

IMG_0871.JPG

Not much to be said here really, all the parts are basic items available from places like ebay.

1 100nF C1,C2,C3,C4,C6 5

2 100uf C5 1

3 1N4004 D1,D2 2

4 PWR J1 1

5 ARDUINO NANO 1

6 47k R1 1

7 DPDT S1,S2 2

8 78L05C U1 1

9 SN74HC595N U2,U3 2

10 Ziff Socket 28 pin 1

11 PCB for the project 1

Optionally sockets for the IC and Nano (normally just soldered to the PCB)

Notes:

The PCB gerber files are published on Github, see last section for resources

Ziff is optional, depends how many your going to program!

DPDT switches are the minature type with 2.53 mm pitch.

The IN4004 can be 4001 or 4002, only used to adjust the VCC to program voltage.

External 12.7 volt supply, normally use a bench PSU for this. Or an adjustable buck converter set to 12.7v

Program the Nano

Untitled 2.jpg

I am assuming that you already now the process of using / programming an Arduino. This setup does not require any special settings etc. Just choose the correct board from the drop down menu.

Download / clone this github site into you Arduino sketch directory.

https://github.com/coopzone-dc/Eprom-27c512-27c256

Open the eprom.ini file and click upload to Arduino.

Once done you can do a quick test from a terminal program, for example minicom etc.

Use settings 115200 8N1 with no hardware flow control, it all went ok you will get this menu:


Started V 1.3 12/8/23
 a nnnnn - Set address (for debug)
 r nnnnn mmmmm - show mmmmm bytes at address nnnnn
 i nnnnn mmmmm - show mmmmm bytes at address nnnnn in Intex Hex format
 w nnnnn - write to eprom using xmodem transfer
 m nnnnn mmmmm - md5sum rom content starting at nnnnn for mmmmmm bytes long
 b nnnnn mmmmm - Check for FF's from nnnnn for mmmmmm bytes long
 h repeat this menu


A few notes before looking at the option:

The address's and any ranges are in 5 digit hex numbers, the second (mmmmm) numbers are all counters NOT end address's so, for example, the r command needs two 5 digit hex numbers 00000 00011 would display the bytes from 00000 to 00010 (not 11), it starts at 0 not 1. Like this:


% r 00000 00011

0x00000 : 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 
0x00010 : 41 


You would use w 08000 to program the second 32k block in a 512(64k) eeprom.









The Commands

A set address

For debug,

R read

As it suggests it will display the contents (or part) of an eeprom. Can be useful if you capture the output to a file from the terminal program,

I Intel hex

Same as read, but the output is in intel hex format. This makes it a lot more useful if you capture the output. You can for example save an existing eeprom to a hex file (may need a bit of cleaning up in a text editor) then convert it to a binary file ready to program a new eeprom.

w write

write a binary file to eeprom starting at address nnnnn. You will be prompted to switch to program mode and start an xmodem upload. The file has to be in binary.

m md5

Gives the md5 value for the given start/count in the eprom. typically used to sum up what you wrote so that you can compare it to the md5 of the binary file. A check to show the write worked correctly.

b blank check

confirms the locations in the eeprom are FF's and ready to write to.

h help

Repeats the menu, just in case it's scrolled of the screen!

Some Useful Tools

Checking.

These are all commands for use in linux, I would think windows has similar ones, but I don't use windows.

Generate an md5 for a given file to compare it with the md5 of the eeprom

cat XXXXXX | openssl md5

like this:

cat SST39SF040.mpj | openssl md5
MD5(stdin)= e3a1764bf21ef95830cf57b916489686


Converting

This programmer only accepts binary data. Many files you can download are in intel hex format. So to convert from Intel Hex to binary use:

srec_cat XXXXXXX.hex -intel -o YYYYYYYY.bin -binary

srec_cat SCM_ROM-19200.hex -intel -o SCM_ROM-19200.bin -binary

You may need to tweak the hex file a little, for example remove any extra lines that are not relevant to write to an eeprom.

You can use the opposite command to convert from binary to intel hex:

srec_cat XXXXXXX.bin -binary -o YYYYYYYY.hex -intel

srec_cat SCM_ROM-19200.bin-binary -o SCM_ROM-19200.hex -intel


Have fun.