Skip to the content
PCBKitNew board
2 layers109 × 70 mmRom programmer, the printed circuit board in 3D

An EEPROM programmer for the 28Cx series of EEPROMs.

Size
109 × 70 mm
Copper layers
2
Thickness
1.6 mm
Parts
21
Nets
47
Pads
116
Tracks, vias
226, 93
Pours
1
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
26 Apr 2026
Updated
18 Jul 2026

Overview

Rom programmer is an open-source printed circuit board by NetworkEntropologist, from the NetworkEntropologist/28c-eeprom-programmer repository on GitHub. It is a 2-layer board of 109 × 70 mm with 21 parts on 47 nets, routed with 226 tracks and 93 vias.

It is built around the 74HC595. Its parts include 11 capacitors and 3 ICs. It belongs with the interfaces and adapters boards and the AVR (ATmega, ATtiny) boards of this library.

Main components

1

README

README.md

28c-eeprom-programmer

Hardware: CERN-OHL-S v2 Firmware & Software: MIT Python 3.10.19

Buy Me a Coffee

A parallel EEPROM programmer for the 28C family, built around an Arduino Nano. Simply drop an EEPROM into the ZIF socket, connect the Nano over USB, and burn a ROM image onto it from your computer.

If you've watched Ben Eater's 8-bit computer series, this will look familiar. That's where the idea came from. I wanted a proper PCB instead of the breadboard version, and a ZIF socket so I'm not bending chip pins every time I swap an EEPROM.

About this project

This is a personal project that I'm putting it up in case someone else finds it useful or interesting. I'm not planning to write full documentation right now, and I might not ever get to it. So for the moment, the board files and the code are the documentation.

If you find a bug, or you get it working with a chip I haven't tested, feel free to open an issue or a pull request. Just don't expect a fast reply — this is a side thing I work on when I have time.

Where this came from

For a number of years I have been interested in retrocomputing, when one day I stumbled across Ben Eater's YouTube channel. Following his series on espeially the 6502 breadboard computer project I wanted to start building this for myself, or rather using this as inspiration to design and build my own 6501 computer, and this EEPROM Programmer seemed like the best place to start, as this would be a required tool for pretty much everything else.

I have to mention at this point, two other related projects that I used heavily for both inspiration, as well as for insights into how other creators tackled this:

  • Ben Eater's eeprom-programmer — the one from his 8-bit computer series. Same core idea as mine: an Arduino driving the address lines through a pair of 74HC595 shift registers. If you've never seen it, watch his video first. He explains the whole thing better than I can here.
  • Erik van Zijst's eeprom — an Arduino Uno shield with a KiCad board and an interactive Python client. Seeing someone take the breadboard version and turn it into a proper PCB with host software was a big part of what pushed me to do my own board.

So thanks to both of them. My version borrows ideas from each and mixes in what I wanted out of it.

Does it actually work?

Short answer? Yes. First test on the PCB, after soldering it, was to attempt burning a copy of Wozmon onto the IC, which checked out byte exact. Turns out Wozmon is a really great test, as the contents is very well known and documented all over the internet.

What it does

  • Writes a ROM image to a 28C-family EEPROM over USB serial
  • Reads the chip back so you can verify the write

Supported chips

Anything in the 28C family that follows the 28C64 pinout should work. That being said, I've only tested it with a 28C64 so far. So treat everything else as should work rather than known good. If you run it with a 28C16 or 28C256, I'd like to hear how it goes.

Hardware / BOM

The main parts, leaving out the passives:

  • 1x Arduino Nano driving the entire process
  • 2x 74HC595 shift registers (serial in, parallel out) driving the address lines
  • 1x 28-pin ZIF socket

Repo layout

  • hardware/ — the full KiCad project (schematic and PCB)
  • firmware/ — the Arduino firmware for the Nano
  • software/ — the host-side Python that talks to the board

Getting boards made

The KiCad project lives in hardware/. Open it in KiCad, export the Gerbers, and send them off to whichever fab you like. I used JLCPCB with a purple soldermask and had no trouble — DRC passed and the boards were fine.

Flashing the firmware

The firmware in firmware/ was written with PlatformIO, not the regular Arduino IDE. So the easiest way to build and upload is with PlatformIO (either the VS Code extension or the CLI). Open the firmware/ folder as a PlatformIO project, plug in the Nano, and run the upload.

If you're using an older Nano clone, you may need to point the build at the old bootloader, otherwise the upload will fail. That's set in the platformio.ini.

This assumes you've used PlatformIO before. If you haven't, their docs cover installing it and uploading to a board better than I could here.

Using the software

The host software is in software/ and it's written in Python. Fair warning: it's still very much a work in progress. Because of that I'm not going to write down a fixed set of commands here that might change next week. Have a look in the software/ folder and read the code to see how it works for now.

I'm planning to rewrite this side in Rust later on, so expect it to change.

License

  • Hardware (everything in hardware/): CERN-OHL-S v2
  • Firmware and software (firmware/ and software/): MIT

Parts

21
QtyValueFootprintReferences
80.1uFCapacitor_SMD:C_0402_1005Metric_Pad0.74x0.62mm_HandSolderC2, C3, C4, C5, C7, C8, C10, C11
4MountingHoleMountingHole:MountingHole_2.2mm_M2H1, H2, H3, H4
31uFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC1, C6, C9
274HC595Package_SO:SOP-16_4.55x10.3mm_P1.27mmU1, U2
128C256Socket:DIP_Socket-28_W11.9mm_W12.7mm_W15.24mm_W17.78mm_W18.5mm_3M_228-1277-00-0602JU3
1Arduino_Nano_v2.xModule:Arduino_NanoA1
1LOGOtne logo tinyG***

The 20 most common of 21 parts.

Questions

How big is the Rom programmer PCB?

It measures 109 × 70 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Rom programmer use?

21 parts, built around the 74HC595. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Rom programmer KiCad files?

From the NetworkEntropologist/28c-eeprom-programmer repository on GitHub, at the commit this page was made from: the board is hardware/smd/rom-programmer.kicad_pcb and its schematic hardware/smd/rom-programmer.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Rom programmer design in my own project?

Its repository states no licence, so its author keeps all rights: ask NetworkEntropologist before reusing the design.

Similar boards

  • 2 layers45.7 × 31.8 mmLEDx16 board, the printed circuit board in 3D

    LEDx16 board

    tardate/LittleArduinoProjects

    a collection of "Little Electronic & Arduino Projects", most involving electronics or an Arduino in one way or another!

    36 parts803MIT
  • 2 layers228.6 × 100 mmMongus48, the printed circuit board in 3D

    Mongus48

    ChrisChrisLoLo/beyblock20

    The magnetic, modular, 20-key macropad that can join together to form an ortholinear board

    124 parts335GPL-3.0
  • 2 layers245.1 × 160 mm8-Bit CPU 32k, the printed circuit board in 3D

    8-Bit CPU 32k

    slu4coder/Minimal-64x4-Home-Computer

    My DIY TTL home computer with VGA and PS/2 and 4x the processing power of a Commodore C64 or Apple II.

    139 parts326
  • 2 layers100 × 95.1 mmProtoboard-6x4-breakout, the printed circuit board in 3D

    Protoboard-6x4-breakout

    electroniceel/protoboard

    Advanced protoboard layout with 1.27mm pitch for smd parts

    4,745 parts311CC-BY-4.0
  • 4 layers140 × 100 mmDc usv, the printed circuit board in 3D

    Dc usv

    TobleMiner/DC-UPS

    A small DC UPS, designed to keep small appliances like consumer network equipment running during power outages

    351 parts223CERN-OHL-P-2.0
  • 2 layers100.5 × 218.3 mmTraktorino, the printed circuit board in 3D

    Traktorino

    silveirago/traktorino

    The open-source DIY MIDI Controller for DJs.

    96 parts220
  • 2 layers287.8 × 126.7 mmNoName, the printed circuit board in 3D

    NoName

    AlaaSaadAbdo/battoota

    Keyboards

    267 parts188
  • 2 layers100 × 100 mmTommyPROM32-595, the printed circuit board in 3D

    TommyPROM32-595

    TomNisbet/TommyPROM

    Simple Arduino-based EEPROM programmer

    36 parts187