HP-01 original microcode extracted!
For the first time ever the original HP-01 microcode was extracted.
Today I completed the last step of my preparations and could read the microcode of both ROM dies directly from the HP-01 hybrid module. Believe it or not, it was an odyssey.
Since last year I planned to read the original ROM of one of my two HP-01s for making an exact replica as part of my repair kit at all costs. But I did not even know how to open the sealed ceramic case. For a long time it just lay in my drawer waiting for what to come. Then, in february this year, I took some courage and heated up the case and could melt the glue, that connected the upper and lower ceramic parts and for the first time I could separate them and see the hybrid module and its 6 silicon dies inside. All the years before, there existed only a black and white photo, which was reproduced in the December 1977 HP Journal.
The HP-01 Hybrid module in color.
Again after hesitating many weeks before going on, I finally connected 1.5 Volt power to the module and tried to measure some signals with the oscilloscope. This was very difficult, because I could damage easily one of the tiny bond wires while applying the probes. And after 10 Minutes of measuring exactly this happened. I was totally upset, because I never could reconnect any bond wire, and I saw my last chance gone to get to the ROM code. My idea just to listen to the instructions and call every possible function step by step to collect the ROM code was not longer possible, because the watch wasn't running any more. As I recognized later the carry bit of the Arithmetic and Register Circuit was ripped off and the program flow was wrong, it not even came out of the initialization and was caught in an endless loop. But I was very lucky that it was not another more important signal.
The HP-01 ROMs
Close up
The bond wires near the ROMs were still intact. And possibly they could be read by applying addresses externally and reading the opcodes. But how could I apply probes without fear to damage the circuit even more. I got the idea to buy expensive spring loaded pogo pins and to use the old toy microscope of my son as an elevator to establish the contacts. This was indeed very practical. Then I was thinking about how to injects the signals. It turned out, that this time I had to deliberately rip off a bond wire to inject my signals. This decision was very hard for me. Before I tried to cut one of the gold paths by a scalpel, with no avail, then I tried to cut the trace with a 0.6mm drill and a small drilling machine, with no success. The traces behaved like steel instead of gold. The only remaining chance was to remove the bond wire. Fortunately this went well. First I thought that I needed four connections to apply system clock and sync signals and so on. Then I could reduce the no of pins necessary from four to only two for connecting a PIC microprocessor to apply the addresses asynchronously. It needed also a passive bidirectional level converter to interface from 3.3V to 1.5 Volt. Always knowing, if I made another mistake it would be over. Buying another HP-01 just for damaging it as well, was beyond my imagination.
Bond wires
After two days, the program was working and preparations were done, the interface was working. And with all my courage I connected the HP-01 with the PIC processor (I used an new ACT for this purpose) via the interface and got miraculously a signal from the ROM. It answered the opcode of address 0000. Immediately I saw that it was a jump instruction. This was what I expected. Then I could increment the addresses via terminal and could write down the next opcodes. And they also made sense. They were similar to the beginning of the prototype microcode, that was published in the US patent 4158285. Only a few hours later I was able to read and verify the complete 2k ROM code automatically.
Microscopic surgery
Pogo pins
The first signal on the scope
I read three times the whole 2k ROM with different timings and all readings were identical.
But it would have been too easy, it is not running completely yet. I discovered eight new opcodes, which are not used in the documented prototype code and therefore unknown to me. After some time, I deduced, that they must be direct jump instructions between ROM pages and changed the emulator to what I thought it should be right. For the first time, I got the emulation running until it showed
"0." in the display and entered sleep mode waiting for keys. By pressing keys I could see, that also time and stopwatch are running. But number entry doesn't work yet. But I'm sure the reason can be found soon.
(
"5-12-16.": Finally the microcode is running completely. It used program counter increments over page boundaries, which the emulator can handle now.)
If all goes well, the first HP-01 repair kit will be available in july as promised, running the original microcode.
Bernhard