Skip to main content

Beginning the Repair and Refurbishment of an HP97 Programmable Calculator

HP97 photo from the instruction manual

My wife's grandfather was a professor of agronomy at Oregon State University. He was a brilliant man, but a bit of a luddite. Because of that, I was rather surprised when I found an HP97 in his things after his passing. It was in apparently pristine condition, and still in its box, so perhaps he didn't get much use out of it. Along with the calculator, he had purchased the statistics pac, so I'm guessing that's what he had in mind for it.

Somewhat after getting it, I decided to take it for a spin. I don't remember whether the display looked right, but I do remember that the card reader didn't work. Shortly after that time, we moved, and it spent about 2 years in storage. Lately, I've been watching a lot of Curious Marc on YouTube, which has inspired me to pull it out, and get to work fixing it.

HP97 internals

I found the HP Museum; a treasure trove of information about these old HP devices. Though that site, I found the Teenix's website which has even more great information. I set about formulating a plan for getting the calculator back to full functionality.

Battery replacement

The HP97 is a desktop calculator, and is weirdly designed around a rechargeable battery. It has an AC wall-adapter (simple transformer), but it can't really run off the transformer alone. Of course, as the calculator was built in 1976, the batteries are long-since shot.

Battery cells

I didn't want to bother with replacing the cells and reassembling them into a pack just yet, so I figured out a way to make the calculator 5v DC powered. This was pretty simple, because the battery contacts just attach to pins on the PCB. The pins are pretty big, but crimped 0.1" headers fit over them just fine. The image below is where the battery connections attach.

DC power pins

I simply took a spare 5v 2a power supply, crimped some new ends on it, and fed them through the hole in the lock (pre-Kensington).

Printer repair

Printer control PCB

The next issue was the print rollers. The printer on the HP97 uses some kind of rubber pinch rollers to grab and pull the paper from the roll. Over time, this rubber hardens, and as it does becomes quite smooth. The smooth rubber doesn't have much grip on the paper. Also, the constant pressure of the other pinch rollers on the rubber cause a flat spot to appear on the rubber. Some people take the rubber off of these rollers and replace it with silicone. Others sand it with 1000 grit sand paper to roughen the surface and sand below the flat spot. I elected the latter solution, and it worked perfectly.

Print head ribbon connector

There is a trick, by the way, to removing the print head ribbon. The connectors for the HP ribbon cables have metal fingers that are designed for one-way operation. They'll grab the ribbon quite tightly, unless something is inserted (ideally smooth and relatively hard) to allow the ribbon to be removed, the cables will be destroyed. I used cutouts from a spinach container from the grocery store.

69! on the HP97, with a printout

With that, I had a functional printer. I was worried about the print output being quite dark, but it turns out that thermal paper degrades, and 40 years of sitting around caused it to stop working well. A quick trip to staples was all that was required to get fresh paper.

Card Reader

The next issue was the card reader. I mentioned earlier that it didn't work, and the reason is well known in the vintage HP community. The rubber they used on the pinch roller that draws the card through the slot degrades. This was the case with mine as well. Again, there are many ways to repair these rollers, I chose the "o-ring method", which is simply taking 2 5/16" O-rings and putting them on the gear/shaft assembly. Mine needed to be sanded down a little to roll freely.

Debugging the CRC

Unfortunately, that didn't totally solve the problem for my HP97. I noticed that the motor simply didn't often start turning when a card was inserted. The signals to/from the read/write head were perfect, as were the flags from the card detect sensors. It was simply that the motor didn't start. Ultimately, I determined that the sense amplifier chip on the card reader board had probably failed in the motor driver section. I'm hoping that I can find someone that's willing to part with one, as this is most certainly not an IC that you can just buy from DigiKey.

Sense Amp IC

So, until I can find a sense amp, I'm kinda stuck. There's one thing that has me a little concerned, which is that, even when I power the motor from 2.5v from my lab power supply, I still get errors reading cards. It does appear that I can write cards successfully, though. I'm hoping that this problem is more related to motor speed, and is something that I can get dialed-in.

LED Display

In the image above, regarding the printer, you may have noticed that the top-left segment of the 7-segment display is lit on every digit. It's not supposed to be like that 😆. What's happening there, which I discovered after some experimentation, is that the ROM-0 output driver for that segment (segment F for those following along) has failed. I suspect that the transistor responsible for pulling it to ground has failed open-circuit.

Segment F output

In the oscilloscope trace above, notice that the lowest that the output for segment F out of ROM-0 never goes all the way to zero. It overs around 2.5v until it's pulled high for the output 0.00. This is another situation where I'm stuck until I can find a replacement IC.


For the curious among you, the above is an image of ROM Zero. All the ROMs in this calculator are very weird. This one converts bus signals to the 7-segment display signals. Normal companies would, one assumes, use a standard 7-segment display driver, but not HP...

Next steps

This catches us up to now. But I have plans, still, for this calculator. I'm hoping I can find a source for the ROM-0 and Sense amplifier chips. Failing that, I'm considering designing a replacement for the card reader. One option on the table is using a microcontroller that can read and write to the magnetic heads and replaces the Sense Amplifier chip and associated PCB. Another is to discard the card reading completely, and replace it with an esp32 (or similar) and allow for the emulation of magnetic cards. For the display, I don't have as many options, but Teenix has been developing a drop-in replacement CPU board for the HP97. This would obviate the need for ROM-0.

Thanks for reading along. I'm hoping that I'll be better about posting blog posts, now that I have my gitlab deployment system setup better. In the past, I had to download the artifacts from gitlab, sftp into the web server, ssh in and move the files all around. It doesn't sound like much, but it was enough for me to not bother... I think I've got it to a place where I can just click a button now.


Comments powered by Disqus