Open Source Universal ROM Programmer Grows Up

When we first looked at [Anders Nielsen’s] EEPROM programmer project, it was nice but needed some software and manual intervention and had some limitations on the parts you could program. But through the magic of Open-Source collaboration, revision 2 of the project overcomes all of these limitations and—as you can see in the video below—looks very polished.

If you recall, the programmer is in a “shield” format that can plug into an Arduino or — if you prefer a retrocomputer — a 6502uno. Along with hardware improvements from the community, [Henrik Olsson] wrote Python software to handle the programming (see the second video below).

The biggest change in the new version is that you don’t have to configure the voltages with jumpers anymore. This was required because different devices draw power on different pins, but a clever two-transistor circuit lets the software handle it. There is still one jumper for switching between 32-pin and 28-pin EEPROMs. The extra transistors added four cents to the total price, although if you buy the kit from [Anders], it is still $9, just like before.

Skimming the database, we don’t see any Microcontrollers (MPUs). However, it looks like the device should be able to program flash MPUs, too.

We covered the first edition of this project, and we were impressed even then. We do hope people will add MPUs and other devices like PALs to the project over time.

18 thoughts on “Open Source Universal ROM Programmer Grows Up

    1. Normally, you are programming PROMs (programmable – write once), or EPROMs (erasable, programmable – write many). EPROMs are erased with UV light, EEPROMs are erased electronically and may be updated in circuit.
      True ROMs are burnt in silicon when they are manufactured and are not programmed at all.

    2. In normal operation, the data on PROM/EPROM/EEPROM devices is read-only and act just like true ROM memory, hence the read-only aspect. However, these devices can be programmed with the application of non-nominal voltages and/or signal sequences, hence the programmable aspect.

      Unlike RAM or SSD, these devices are not intended to be programmed during normal usage. Most of these devices can be reprogrammed a very limited number of times, much less than what is desired for writable storage, and they require the entire device (or a large block) to be erased before being reprogrammed, so they are considered to be ROMs.

    3. Here is an example. The firmware in your PC or phone is usually in an EPROM. It remains there even when the device is powered off. It is only read during normal operation. However when you download a software update, new firmware is written to the EPROM. Some old ROM chips were actually write once, think of each bit being a fuse that blows (or doesn’t) after the first write cycle. Think of like an old school video game cartridge like Atari. That would mean changing the chips to do a firmware update. Every ROM requires some kind of way to program it in the first place. Some older EPROMs (electronically programmable read only memory) required a window of the chip package to be uncovered and exposed to UV light to enable erasing and rewrites. EEPROMs (electronically eraseable read only memory) are electronically writable by either using elevated voltages and specifc write enable pins to be energized for to erasing and rewriting.

      Another general rule (there are some exceptions). ROMs retain data when powered off. RAM usually does not. So, why use RAM…read write speeds are usually higher and the number of lifetime write cycles are very high. Most ROMs are much more limited in the number of times you can write to them. Think of ROM today as “write once in a awhile” memory.

      To all the computer nerds, yes I know everything above has exceptions and generalities but it gets the point across.

    4. For a simpler analogy/example, PROM:ROM::CD-R:CD. All are read-only under normal circumstances, but the PROM and the CD-R can be transitioned into a mode where they’ll accept data written to them, something that’s normally not possible.

      EPROMs are thus analogous to CD-RWs. Not only can they be programmed, under specific circumstances, but you can also clear the existing contents and do it over again.

  1. Thanks for the nice writeup! :)
    The main cost-cutting measure of the Programmer is to rely on the standard JEDEC layout of ROMs and RAMs – 8051’s, GALs, PALs, and the like don’t try to follow the same arrangement of the pins.
    That means the only bidirectional pins are the ones of the databus – and they only align well with the standard.

    The programmer does make it easy to get at all the signals and separately controllable voltages, so it’s a good starting point if you have a GAL or MCU on a breadboard.
    Active adapters can be made for things like 40 pin ROMs too (fourth register) and passive adapters for things like the TMS2532 that doesn’t strictly adhere to the standard.

    1. Flashrom generally only supports 25 series SPI NOR flash, with a handful of older Low Pin Count/Firmware Hub and Parallel 29 series Parallel NOR flash. It doesn’t support the 27 series EEPROMs that this project targets.

  2. Sorry if I’m a bit thick, but it seems to imply that this is technically better than a TL866. Now I know this is open source, which is great, but from what I understand from the video it’s not as flexible (less chips supported, needs some jumpers config, etc) and it’s arguably not much cheaper (need to buy the Arduino + PCB + others parts + manual assy) when my TL866II Plus cost me about £20 from Taobao (granted few years back). I also notice someone in the comments saying that it doesn’t ship to the UK anyway (not sure what they refer to as I couldn’t find the shop).
    So obviously I’m missing something, can someone explain to me how it’s better than the TL866II Plus? I mean again, apart from being open source, which I agree is great, and as mentioned in the video, that means it can be upgraded by the community whereas the TL866 is not updated anymore (I mean, it’s still supported by Xgpro but I don’t believe it has any firmware updates).

    1. I made it because the cheapest I ever found a TL866II was 70$ or around 56$ + shipping. And the new replacements are more than that.
      At 9$ and all you have to do is add the THT headers and a socket of your choice, I get why it’s popular – and most of the target audience have an Uno.
      It also has adjustable programming and erasure voltage unlike the fixed steps to max 18V on the TL866II (max 27V for mine) – and for some reason it programs w27c512’s twice as fast as the TL866II – and it doesn’t have to program the whole chip if you only need to program 1K of it.
      It doesn’t do everything the expensive ones do but it’s a steal for what it does – since I get to say so myself :)
      It doesn’t ship to the UK because HMRC requires all EU companies to register for UK VAT with no minimum – which is nuts and unique to UK.
      You will find Rev0 on eBay.co.uk from Tim’s Retro in the UK – maybe rev2 soon.

      1. Yikes! Ok, thanks, I didn’t keep up with prices, but yes, that’s a lot of money for a TL866 so I see the point now.
        Having it open source is great too, and hopefully supported chips will increase fast.
        I don’t know if it’s possible, but one thing I like about my Xgecu programmer is it can test 4xxx and 7xxx logical chips, I suppose that could be added too.

  3. All you need for an eeprom flasher

    Daisy chain 74595 for the address bus

    Write signal

    And 12v program pulse if needed

    Only about 10 gpio pins instead of 24+

    Compatible with any microcontroller with a USB or uart

    Just need to have a serial tokenizer and shit to encode the rom bits over the connection and the microcontroller spits it over the shift Register

    And even can do flash verification

    Relatively simple

    USB would allow you to flash much quicker but 115200 would be fast unless you are using a large nor or nand flash in 8bit legacy mode

  4. All you need for an eeprom flasher

    Daisy chain 74595 for the address bus

    Write signal

    And 12v program pulse if needed

    Only about 10 gpio pins instead of 24+

    Compatible with any microcontroller with a USB or uart

    Just need to have a serial tokenizer and shit to encode the rom bits over the connection and the microcontroller spits it over the shift Register

    And even can do flash verification

    Relatively simple

    USB would allow you to flash much quicker but 115200 would be fast unless you are using a large nor or nand flash in 8bit legacy mode

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.