This is meant to be a cheap way to program W27C512 EEPROMs which require 14V erasure voltage and 12V programming voltage... Or basically any other 24/28/32 pin ROM requiring from 5V to 27V programming/erasure voltage.
You can either make your own, get a PCB from JLCPCB using the guide below or order a kit with SMD components presoldered from iMania.dk (sockets available if needed). Kits with SMD components presoldered are available from my store, iMania.dk
Requires a dev board with a processor or microcontroller. Like a 65uino or Arduino Uno for instance.
#1 Don't attach the Programmer shield while power is on.
#2 Don't turn on power if the controller (Arduino/65uino/Nucleo board) isn't programmed with appropriate firmware.
#3 Don't insert a ROM in the socket until you're ready to write it. Don't leave a ROM in the socket during reset or programming.
If you just want to get started fast, there's an amazing third party firmware and desktop software available in the form of Henols's Firestarter Firestarter is recommended if you just want to program ROMs cheaply and don't care too much about the technical details.
Remember: Don't insert a ROM in the socket until you're ready to write it. Don't leave a ROM in the socket during reset or programming. Program Arduino before attaching shield. Attach shield before powering on Arduino.
6502 assembly code is available in the 65uino repo (to be separated and moved here "soon").
Arduino sketch is available in this repo's /software
Both the 6502 firmware (65uino) and the Arduino sketch use the command line python scripts in this repo for burning and reading ROMs.
read_binary.py reads a ROM via serial.
send_binary.py burns a ROM via serial.
send_command.py issues commands (erase for instance)
Rev 0 photos (The Rev 1 added a voltage divider for reading VPP/VEP, Rev2 has replaced the jumpers with transistors for automatic pin count selection)
The Relatively Universal ROM Programmer relies on the standard JEDEC ROM footprint and common "high voltage" pins to work. BJT drivers handle putting the 12-27V programming voltage on the relevant pins. Which "high voltage" pins are active can be selected in software but jumpers have to be set for the different package sizes. A common configuration is to connect "A" to 5V and B to "A13", which covers the Winbond 27C512 and many other common 28 pin ROMs. This configuration also covers the 32 pin SST39SF010 (5V programmable).
The "high voltage", VPE, is calibrated using the trimpot on the front of the board after activating the regulator in software. Please be aware that some dev boards WILL put VPE on several pins during reset - especially if reset is held down manually. This MAY damage a chip in the socket (especially if it's only 5V programmable). Clarity: It's best to NOT reset the controller with a ROM in the socket to be on the safe side.
Documentation will be updated with FAQ.
This project is kindly sponsored by JLCPCB. They offer cheap, professional looking PCBs and super fast delivery.
Step 1: Get the gerber file zip package from the /hardware folder /hardware/rev2/rev2-1316.zip for instance.
Step 2: Upload to JLCPCB https://jlcpcb.com
Step 3: Pick your color, surface finish and order.
If you want JLCPCB to assemble a board, the BOM and placement files are also in the repo.
You can use these affiliate links to get a board for $2 and also get $80 worth of New User Coupons at: https://jlcpcb.com/?from=Anders_N
And in case you also want to order a 3D-printed case you can use this link. How to Get a $7 3D Printing Coupon: https://jlc3dp.com/?from=Anders_N