In terms of tools, I’ve always wanted to have something to work with various ROM and Flash chips within computers and peripherals as this can often come in handy for recovering from a bad flash, updating an old ROM chip in a device to gain new abilities, or for backing up the contents of ROM chips for safe-keeping and analysis.
In the past, out of desperation, I resorted to inelegant hacks like the above. It’s fine if you only have a one-off curiosity you need satisfied immediately, but once you get into the realm of having several different chips and potentially a desire to reprogram them, the complexity shoots up and the time investment just isn’t worth it anymore.
As a result, I went searching for a programmer which would fit my needs. I settled on the XG autoelectric TL866CS MiniPro universal USB programmer. There are cheaper programmers out there, but none of them were able to meet the wide range of supported chips (over 14,000) that the MiniPro had, and many of them were not as well-finished and instead looked like a development board. The TL866-series programmers were also attractive because they were completely USB bus powered and could develop the high Vpp programming voltages directly from the bus. I managed to grab one for just under AU$55, which is a pretty reasonable price. A slightly more expensive TL866A is slightly more capable with ICSP for microcontrollers as well, which the CS version lacks, but if you’re not interested in that, you can save a little money.
The unit arrived in a colour print, matte finish cardboard box, with almost all Chinese writing. It claims support for up to Windows 8 on the box, which is a good sign. The same packaging is used for both TL866CS and TL866A variants.
A barcode and contact details are provided on the rear.
A label is affixed to the inside lid which is sort of a quick-start guide. Ultimately, you don’t need this, as it’s basically a case of downloading the latest software, installing it and following instructions. The website itself is very slow to respond, probably due to underprovisioning and sitting behind the “great firewall”, but you can complete the download if patient enough. It also tells you the inclusions – the ICSP feature only for the TL866A.
The programmer is protected inside a thin plastic bag, with its nice 3M 40-pin ZIF socket showing at the top.
Aside from that, you get a warranty card, a USB 2.0 cable with ferrite bead and a driver CD which you probably shouldn’t use if you wish to get the most from the product.
The programmer has a very nice moulded case with logos and markings on the faces, and slotted vents for ventilation.
The only input is USB, a type B female connector for power and data. As this is the CS version, the ICSP port is blanked off.
The underside claims to have a serial number, but it doesn’t – instead that’s just the barcode. There are four “feet” however, without any form of rubber on them. The plastic unit has quite a bit of weight to it, and feels very solid.
Taking the unit apart, at least, superficially is simple. Put the ZIF lever arm in the vertical position, undo the four screws on the underside and the casing comes apart. The board inside can be extracted out of the casing.
The internal design is a sandwich of two PCBs interconnected together with grounding pins soldered between the two boards and LEDs passed through slots making complete disassembly an utter pain (so I won’t do it). On the top side, we can see quality components already – 6 NXP 74HC373D octal D-type transparent latches. Near the top, it seems there is some power switching going on with SMD germanium diodes and transistors.
The weight of the unit becomes apparent when the centre section is examined – there are five fairly hefty inductors used for the boost/buck functions to derive the programming and data voltages. Some older chips needed close to 24V programming voltage, whereas some of the newer ones require 3.3V, which requires fairly flexible circuitry. I’m not sure, but I suspect this unit does not natively support 1.8V parts using its internal supply.
Peering in from the other side, we can see a crystal oscillator, and mostly empty space, with a row of pins (J1) that is probably used for initial programming.
The underside of the unit houses more fun, including a massive array of SMD resistors and Zener diodes which are likely to allow the inputs/outputs to handle overvoltage from shorts (e.g. Vpp to a data pin due to a faulty chip), or to allow for the data voltages to “adapt” to the provided Vcc by “crowbar-ing” the output. It might also serve to limit any fault currents from shorted pins with a logic level conflict. Two more octal D-latches can be seen underneath, along with a linear 3.3V regulator for the programming IC. Other components include a 74HC164D serial-to-parallel 8-bit shift register, two MC34063 switching regulators and a bunch of transistors, diodes and capacitors. The main IC is unknown, having its markings ground off during manufacture as a protection measure.
From a look inside, it seems that the unit has been designed with much thought to real-life “realities” and are built relatively well with quality components.
Setting Up and Using
Downloading the software from the site is an exercise in frustration, as the speed is as slow as dial-up (4kB/s), but at least it will complete after several attempts. Installation is straightforward, and will involve installing a special driver for this unit. Whether the software is completely free of vulnerabilities/nasties is not known, but I haven’t observed any strange behaviour myself.
The first thing it will do is prompt you to upgrade the firmware on the device, as it was shipped with a different firmware for an older version of the software. This is fast and relatively painless.
The about dialog shows that I’m using Version 6.50 of the software. The serial number of the programmer is actually displayed in the dialog box.
The software’s interface is fairly well thought out, although a little bit cramped. All of the features can be accessed through the menus, and most of the important ones can be accessed using the toolbar buttons – e.g. read chip ID, check the chip is blank, identify 25-type chips, compare, fill area, read, program, erase, CMOS logic chip test and multi-program.
The main part of the window shows the memory contents of the buffer, with certain programming options below in case certain variants of the chips have any particular special needs. The area above allows you to select the chip to be programmed.
As promised, the chip library is very extensive, and also features other less-expected types including some CMOS logic ICs for testing their functionality. That being said, the early pre-standard EPROMs from the late 70’s and early 80’s may not be supported – I found an Intel part in my collection which wasn’t in the database, and none of the other options with the same footprint had the same pinout.
The software supports loading Intel .HEX and standard .BIN files, which is a little bit lacking as sometimes other formats can be encountered. It also supports its own type of “project” file as well. Once all the requisite set-up is done, it’s a fairly simple job to program the chip, with automatic verify a standard feature.
Reading chips is also very quick due to the fast strategy and USB 2.0 interface.
For EPROM erasure, there is also a blank-check function to verify the chip is blank prior to programming.
Should you ever doubt the programmer, it also has an inbuilt self-check to test for internal shorts.
If you have a need to program multiple chips, serial numbering is also provided, as is a multi-programmer feature for up to four programmers to be driven by the one instance.
Of course, the chips you are interested in may not be of the DIP type, so adapters and tools are necessary, and can be purchased separately. For example, I desired to work with PLCC32 chips commonly used for BIOSes, so I got an adapter for a few dollars.
Of course, chip extraction is a bugger, so I also decided to spend a few dollars on an extraction tool. The packaging on this one could have done way better on the English.
Unfortunately, this one has relatively thick legs which doesn’t get into the SMD sockets quite so well. Pulling chips out is like pulling teeth – only with great care can you ensure that the pins aren’t damaged. Anyway, it’s as simple as popping the chip into the adapter, and the adapter into the ZIF socket.
If you don’t like to wait, it can be quite useful to have some of these adapters in stock or to buy them as a set, however, some types can be quite costly and rarely used, so I prefer to buy them individually from whoever has it selling for the least and only when I actually have a need for them.
I decided to pick up a PLCC44 adapter as well, since I probably have a candidate chip to read out in the near future.
The XG autoelectric TL866CS programmer is very much a well built, well designed “Swiss army knife” programmer which is likely to support many of the chips you might encounter. I was able to effortlessly dump and reprogram some of the spare chips I had lying around without much thought or time investment due to the large database of supported chips and straightforward operation. For the price, I think it’s both economical and very much ahead of similar offerings at the same price. If you just want to dump ROMs, it could be a worthwhile investment. If it helps you unbrick a single device, it definitely would have earned its keep.