Data IO 29B PROM Programmer

Data IO was the king of PROM and PAL programming back in the days. Their instruments were the Cadillacs of PROM programming. The 29B is an excellent programmer for older PROMs, in particular the microcode Biplolar PROMs of old computers that can't be programmed by anything else. They are very popular instruments with arcade game restorers, and have a decent folllowing on the web.

The instrument itself is in two parts, the base, and an interchangeable drawer, generally black for PROMs and in white for PALs. Both the base and the interchangeable drawer contain a fair bit of electronics.

Data IO 29B Videos

Here is the playlist series about my Data IO 29B. Mine was particularly recalcitrant, and several repairs on the UniPak 2 drawer. But all was fine in the end, and I am using it regularly now, as I demonstrate in the last videos.


User and Service Manuals

Promlink PC (DOS) Software

Device Code Lists

Firmware Upgrades


The first steps detailed below are covered in this first video. It might be easier to watch the video first.

Changing the fan

You'll most likely need to change the fan. The filter crumbles away, and all the fan grow very noisy.

The fan is a 110V-120V AC 80mm x 38 mm high-speed fan.

I got mine from eBay, model HS8038A, from seller AC_Infinity.

At last check, AC Infinity still sold an equivalent CoolTron FA8038B with the following specs:

  • Size: 80 x 80 x 38 mm ( 3.1 x 3.1 x 1.5-Inch )
  • Airflow: 33 CFM
  • Noise: 36 dBA
  • Speed: 2700 RPM
  • Voltage: 115 V AC
  • Bearings: Dual Ball

CoolTron is a good brand and I recommend AC Electronics for vintage spec fans.

Cleaning the keys

You might need to clean the keys. Mine badly needed it. As seen in the video, the top of the keys remove easily, and vacuuming plus an application of DeoxIt was all that was needed. The keys are very nice Cherry switches, giving the keyboard an excellent feel you can't find in modern keyboards anymore. I paddled in a whole 2K of hex code way faster than I could on a

Checking the RAM, Base Unit firmware version and Drawer firmware version

If your unit powers without errors, the next thing you want to do is to check which version of the base unit and the drawer you have.


will give you the RAM and firmware info. Mine showed:


Which means I have the max memory (1 MB) installed and the latest firmware (v6). So I did not have to do anything. The procedure to upgrade memory is given here.

Next comes the drawer. The popular PROM drawers are the Unipak, Unipak 2, Unipak 2B and GangPak. The most desirable is probably the 2B which has an interchangeable socket subpanel. I have a Unipak 2 and a GangPak. The firmware version on the drawer was upgraded as new devices came out, and the later the revision, the more devices you can program.


gave me:

FA62 05 **

Meaning my Unipak 2 had a fairly old v05 firmware revision. The early Unipaks with revisions below v13 can only be upgraded to v12. Unipaks with firmware revisions v13 and higher can be upgraded to v23. The hardware is different to accomodate for the more memory addresses of the later ROMs, and is why you can't upgrade the early ones. The Unipak 2B can be upgraded all the way to v27. The way to upgrade them is to exchange two PROMs in the drawer with the newer version. So you need a PROM programmer to upgrade your PROM programmer! But the PROMs needed are supported by the early versions of the firmware, so I was able to program my PROMs on the drawer with the old firmware without issues. I upgraded my drawer to the max version possible which was v12. The firmware files are available for download further above on this page.

Note that for the v12, all you have to do it to change the 2 PROMs. For the v23 or v27, you might also have to program and change the PAL decoder - I think they later scrambled the ROMs to prevent copying so they won't work without the PAL. Files to burn the PALs are also included, but I have not tried the procedure.

My GangPak had the firmware version v08, which is a later one for the GangPak, so I can program most of the devices with the upgraded Unipak 2 and a few later larger devices with the GangPak. The GangPak allows 3 interesting operations:

  • Parallel progamming of duplicate PROMs
  • Sequential programming of PROMs, if the memory content does not fit on one PROM, it will automatically continue programming the rest on the next PROM.
  • Striping of PROMs for system with more than 8-bit width, so you can program a 16-bit or 32-bit PROM bank.

Exchanging Sockets

My unit gave me unreliable results with "device backwards" errors. I traced it back to corroded ZIF (Zero Insertion Force) sockets. No amount of contact cleaner would help, so I exchanged the ZIFs, and my life got much better for it. It's already enough to worry about failing vintage EPROMs, of which there are many, not to have additional flaky contact issues. It turns out it is a very easy operation, as this was routine maintenance that was expected in production. The ZIFs are themselves on sockets, so you just unscrew them and insert new ones. This is covered in video Part 4.

This video shows the socket exchange process, and also basic operation from the 29B keyboard.

Basic Keyboard Operation and Device Codes

You probably want to check operation at this point before connecting the 29B to a computer. Probably better followed from the video above.

But basically to dump a PROM to memory (the procedure is demonstrated in the first video):

  • Press COPY to start the copy operation (from DEVICE to RAM for a read, from RAM to DEVICE for programming)
  • Press DEVICE then START to accept the default start/stop addresses from the source
  • Press RAM then START to accept the default start/stop addresses of the destination
  • It then asks for the FAM and PIN codes, which are the family and pinout of your PROM. You find the code in the device code lists provided above (here is a direct link for the Unipak 2 for example). They are listed by manufacturer and device number, you'll see a pair of numbers like C1/01. The first one is the FAM code and the second one is the PIN code. Then further down the line there is also a vXXX number. That's the minimum number of your firmware revision you need for this code to be available. In this case you'd enter C1 01 START to select the device. An LED lights up in under the socket where you have to put your device.
  • Press START again and your PROM content should be dumped into the RAM of the Bata IO for examination using the EDIT key.

Some handy dandy SELECT codes

The basic keyboard operation is pretty self explanatory once you figure out the COPY DEVICE RAM trick explained above. The video 4 shows how to check for an empty device and program it. However there are many interesting functions that do not have a label on the keys though, so you have to call them by typing SELECT followed by a code. They are all described in the user manual, but here are some of the most useful ones:

  • A2 : fills the RAM with a single byte code
  • A4 : clears the RAM
  • B0 : find out the device size (0xXXXXXX by N)
  • B2 : the version of your 29B firmware
  • F5 : edit in binary
  • F6 : edit in octal
  • F7 : edit in hex
  • F1 : remote control mode. Press START twice afterwards!
  • EF : Unipak firmware version
  • E0 : EEPROM erase

Connecting the Data IO to a PC

Basic operation on the keyboard work well for everything, except downloading or uploading firmware image to a computer. So sooner or later you'll need to connect your 29B to a computer. It will have to be an old one that can run DOS, Win98 or WinXP and has a serial port that can be mapped to COM1 or COM2.

I cover the connection and the software on the last video in the series here, so you might want to watch this first.

Serial Link Configuration Switches

You'll need to find or make an appropriate serial cable and configure a few hidden switches. These are explained in the video above and in this document which is an excerpt of the user manual:

PROMLINK software

The DOS software is called PROMLINK. Use version 6.10 provided above. The best way to install it is to make two 3.5" diskettes. The original software does not run under XP, so there is a patch for it. I already patched a version for you, so I recommend you don't waste time and just download the patched version, which runs on DOS / Win98 and WinXP:

Setting the Data IO to REMOTE

One very important thing to do: once you have your computer hooked up and you manage to run PROMLINK in an antique DOS window, you need to turn the 29B to remote mode before trying to connect or you'll get an error. For that, enter the magic sequence below:


This is also demonstrated in the video above.

Choosing the right binary format

One last thing. ROM dumps are usually given in raw binary format. There are two binary formats to choose from the PROMLINK I/O format menu, and they are very confusingly named. The one you want is (16) Absolute Binary. Also demonstrated in the video.

Happy PROM programming!