Linux EPROM Programmer

A day came where I needed to burn an EPROM, but I didn't have access to a regular commerical EPROM burner, so instead of forking over $300, I decided to look around and see how hard it was to make my own. (Luckily, I had access to an EPROM eraser since I was doing PIC programming.)

A little google-searching later, I found the fantastic specifications listed at, and made myself a shopping list. One trip to the local micro-electronics store and Radio Shack and I was ready to build it. Probably the most expensive piece was the project board. (I think I spent about $60, including some tools.)

After reading over the schematic and realizing there wasn't any software to run the board under Linux, I figured I'd just write my own software. Turns out that I didn't like how the schematic was built, and after reading the 27c801 datasheet I decided the the programming time listed on the project ("20 minutes") was just totally unrealistic. It shouldn't take that long. The datasheet spec'd 52 seconds.

So I made some changes to the wiring:

Changes to design:
Parallel port control pins:
        addr clock:         /C0 (par pin 1  - same as original design)
        enable programming: /C3 (par pin 17 - instead of 16)
        enable EPROM:       /C1 (par pin 14 - wired to EPROM /CE pin 22)
        addr reset:          C2 (par pin 16 - instead of 14)
Hi Addr Counter pin Q9 is not wired to anything.
15V 300mA power supply.

For construction details (NOT including my changes above), I made a mirror of the original project site here.

When I was done, the programming time was under 2 minutes, with the reading time near 15 seconds (instead of 10 minutes).

You can find a Tar/GZ file with the programming software, or you can browse the code. It has been written under the GNU General Public License.

Other references I used

Pin-out of a 4040 chip:
 1 -|Q11  Vdd|- 16
 2 -|Q5   Q10|- 15
 3 -|Q4    Q9|- 14
 4 -|Q6    Q7|- 13
 5 -|Q3    Q8|- 12
 6 -|Q2     R|- 11
 7 -|Q1   /CP|- 10
 8 -|Vss   Q0|-  9
Parallel port pin-out
Parallel port registers

2003-10-16, Kees Cook