Table of Contents
- Resources
- High Voltage Serial Programmer for ATtiny85 micro-controller
- The Purchase
- Additional observations
It would be very nice if I could program some old specific PROMs. This programmer seems capable of that – there is open-source code for a slightly different PROM model. I’d just have to adapt that code, but how to go about building up intuition about this Universal Programmer ?
I decided to build an ATtiny85 High Voltage Serial Programmer first – since I’d be in a more familiar territory.
Resources
The resources I used:
Mr. Benoit webpage about HiLo ALL-03 Universal Programmer. This is the GO TO resource for this (and other similar) programmers: http://matthieu.benoit.free.fr/all03/source.htm
On Mr. Benoit page, one can find source code by Fabio Sturman (Italy) for programming old Atmel microcontrollers, including AT90S2343.
I am familiar with AT90S1200 and AT90S8535 having worked with them many moons ago. If I could understand Mr. Sturman’s HiLo code related to Low Voltage Serial Programming of AT90S2343, then maybe I could adapt it for an ATtiny85 High Voltage Serial Programmer ?
High Voltage Serial Programmer for ATtiny85 micro-controller
The adapter is built just following Mr. Sturman description of an adapter that he called A8T14VCC.
A8T14VCC
The connection diagram below is more detailed than the original textual description. The original was a bit too cryptic and confusing for me, I had to resort to Libre Calc to try to sort out my confusion.
Pin 11 of the 14 pin ZIF socket (which corresponds to pin 8 of ATtiny85, once installed) has to be routed to pin 14 of the DIY adapter. Pin 8 of the ATtiny85 has to reach pin 27 of the ALL03 ZIF Socket, everything else stays connected to the “nearest neighbor” pin.
As thus, Pin 14 of the 14 pin ZIF socket (holding the ATtiny85) should be left unconnected, as well as pins 1, 2, 3, 12 and 13.
Building the Adapter
I build the adapter on a small board of prototyping board, using a 14 pin ZIF socket and some 2.54mm spaced headers. This is the DIY socket in the diagram above.
Photos with the adapter inserted into the programmer:
I realized later that I should have made the DIY Adapter with 40 pins (instead of just 14). Is is very easy to insert it in the wrong position. Another problem is that the standard male headers are too long. The ZIF socket of the ALL-03 is not very deep and has some grooves inside. Thus, when dropped in, the DIY Adapter tips either left or right. For the photos, I kept the adapter in ‘air’ while locking the ALL03 ZIF socket.
Source code
The source code below is based on the original all03-20030702.zip file provided by Mr. Sturman. Code can be downloaded from Mr. Benoit’s page.
It is built using FreeDOS 1.3 (where I installed the DJGPP compiler by using fdimples and having the FreeDOS Bonus CD mounted). GCC version is 4.71a:
The original makefiles contained Linux commands. No problem with that, except I wanted to build on a FreeDOS Virtual Machine (before trying out on the real PC). Thus, I modified the makefiles to use FreeDOS commands.
Another problem was a folder within called “commandline”, which I renamed to “cmdline” to match the length 8.3 from DOS world.
Source code with executable is here: ATTINYHV_v1.zip
To use it, you need to unpack it alongside all the other folders of the initial archive all03-20030702.zip. I considered repacking the original archive to contain this folder as well as the makefile
changes. However, this code is more like an intellectual exercise for me to get accustomed to the HiLo ALL03 programmer – and not a big contribution to the library. I haven’t tackled the timing issues for example, as slowdown /A
works just fine.
The code probably works for other controllers: ATtiny25/ATtiny45. Chip Erase / Write Fuse bits seem identical across all three controllers, but I only tested with an ATtiny85.
Tests
I used an Xgecu T48 to program the RSTDISBL and CKSEL fuses, including the LB1/2 lock bit fuses. This renders ATtiny85 useless for Low Voltage Serial Programming:
It wasn’t clear for me if T48 supports High Voltage Serial Programming with the Atmel chip inserted directly into the ZIF socket, but it seems it does.
The video below is recorded from the PC where the ALL03 is attached to (a Pentium 3 CPU @ 500MHz – Slot1 on an Asus P2B-F motherboard).
You will notice that first attempt to read the Signature Bytes does not work (they are reported as 0xff 0xff 0xff
). This is because the PC is much faster than the timings in the code. I didn’t go into why, as I discovered that it works when using slowdown /A
command.
Chip Erase on the ATtiny85 also un-programs the Lock Bits. It must be executed first otherwise fuses cannot be programmed. Once unlocked, the fuses can then be written to their default values by an additional command.
The Purchase
FOIRE Radioamateur La Louvière is HAM Radio fleamarket that takes place in La Louvière / Belgium every year in September. There are many amazing devices to choose from and very well informed people looking for deals. For me, the visit itself is rather stressful. One has to be very quick to evaluate a device and its price. Otherwise, by the time of the second ‘walk-through’, the best deals are already gone.
So here I am, visiting in 2024 and I see a HiLo ALL-03 Universal Programmer. The asking price is 5 euros, including two accessories and an LPT programming cable. But I don’t know anything about it and don’t need an old programmer (I have the XGecu T48). I kept walking.
On my second walk-through, the programmer is still there. Nobody has bought it ? And it begins to grow on me. It has a lot of battle scars but still looks imposing. Once I’ll get the old motherboard going I thought, I’ll be able to use it! I assumed (and how wrong I was, but there is a price to pay for not knowing) I just need an old computer that still has a parallel port …
I took a bit of time to check online. What is this thing ? And landed on the page of Mr. Benoit, http://matthieu.benoit.free.fr/120.htm – dedicated to these programmers. Looking around, I saw it supports the old PROMs and the page was full of software that can still be downloaded. Impressive, I said to myself. This very old universal programmer still has people’s interest. And for 5 euros, even if it is broken, it is not a big loss. I still missed the obvious. The programmer is useless without a dedicated an old ISA card, called SAC-201A.
Once home, a sinking feeling started to settle in. I found the ISA card is a must. Mr Benoit’s page contains both a DIY ISA Card as well as a more modern USB adapter. I was caught between a rock and a hard stone. Shall I invest in building such cards, when I don’t even know if the programmer works ? How would I know what’s wrong ? Is it my build, is it the programmer, is it the OS ? The modern alternative with USB and modern FPGA is quite involving for me. One would need a custom build software to be used on modern OS. Ordering all the parts would also cost at least for shipping. I was willing to, but not knowing if programmer works ..
I started searching by the ISA card identifier SAC-201A, and as luck would have it, bump into an EBay listing form Australia just for the card itself. Whoa. But, made for another programmer called Proma-3. Comparing photos carefully with the ones on Mr. Benoit’s page and followed the advice that Proma-3 is very very similar to ALL-03A Programmer which is also very similar to ALL-03, I decided to risk it and import it.
This finally allowed me to verify that the programmer works, by testing some random logic ICs.
The two accessories that were included were AL3-EP32 and AL3-EP40:
Few photos with AL3-EP32:
as well as ALP-EP40:
Additional observations
Some SAC-201A photos show a missing transistor (and two resistors) close to the 16V8 IC. That would be transistor marked Q1 and resistors R1 and R2. The board I imported from Australia (which seller said it is for a Proma-3 programmer) has these components.
There is version 9.12 of the ALL-03 software at https://elmicro.com/files/hilo/all03/v912/ (link that I found from here) but I had troubles using the ictest.exe
and the accompanying ttl74.lib
file. It would hang for any IC with a number larger or equal to 32. The size of the ttl74.lib
file is 29227 bytes. Comparing it to a ttl74.lib
having 29188 bytes (found on the all03.zip file from Mr. Benoit website), I discovered that the 0x0D bytes inside the smaller file are saved as 0x0D0A in the larger file. I doubt somebody tried to edit the binary file in Windows. Most likely it was transferred via FTP set in ASCII mode ?
I corrected the lib files, which I copied to a separate folder beforehand, with this command:
# powershell -ExecutionPolicy Unrestricted
Get-ChildItem -File -Recurse | % { $x = get-content -raw -path $_.fullname; $x -replace "`r`n","`n" | set-content -nonewline -path $_.fullname }
About the CPU speed … the original software is meant to be used on late 80s / early 90s CPU not faster than 25MHz. And my PIII runs at 500MHz. What to do ? Disabling the Level 1 (and 2) caches in BIOS gets the speed right, at least ictest.exe
is able to test ICs. Drawback is that EVERYTHING is slow afterwards: boot, listing folders, etc. slowdown.exe
is perfect for this.
Now, onto programming those old PROMs.
Leave a Reply