Hewlett-Packard HP-97
Datasheet legend
Ab/c:
Fractions calculation
AC: Alternating current BaseN: Number base calculations Card: Magnetic card storage Cmem: Continuous memory Cond: Conditional execution Const: Scientific constants Cplx: Complex number arithmetic DC: Direct current Eqlib: Equation library Exp: Exponential/logarithmic functions Fin: Financial functions Grph: Graphing capability Hyp: Hyperbolic functions Ind: Indirect addressing Intg: Numerical integration Jump: Unconditional jump (GOTO) Lbl: Program labels LCD: Liquid Crystal Display LED: Light-Emitting Diode Li-ion: Lithium-ion rechargeable battery Lreg: Linear regression (2-variable statistics) mA: Milliamperes of current Mtrx: Matrix support NiCd: Nickel-Cadmium rechargeable battery NiMH: Nickel-metal-hydrite rechargeable battery Prnt: Printer RTC: Real-time clock Sdev: Standard deviation (1-variable statistics) Solv: Equation solver Subr: Subroutine call capability Symb: Symbolic computing Tape: Magnetic tape storage Trig: Trigonometric functions Units: Unit conversions VAC: Volts AC VDC: Volts DC |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Some ten years ago, a good friend of mine worked as the manager of a local flying club where I was taking flying lessons. I helped him with some computer problems there and he wanted to compensate me for my efforts. I told him that he shouldn't, but then I noticed this old, discarded HP-97 calculator collecting dust there on top of a filing cabinet, and asked him to give it to me. He happily obliged.
At home, I took the machine apart and cleaned it thoroughly. I then phoned Hewlett-Packard, and was delighted to find out that they still provided support for this model: I was able to order a new rechargeable battery, a manual, and a set of magnetic cards. When these arrived, I was able to power up the calculator, which worked perfectly.
For several years afterwards, I used the calculator and its built-in printer to help me with my tax calculations. I also wrote a couple of simple programs on it just for fun, reminding myself of the old days when calculator programming was one of the most important hobbies in my life.
Unfortunately about five years ago, the calculator's card reader began acting up, and eventually stopped working altogether. Cards weren't pulled through and when I tried, a yucky deposit appeared on them. Eventually the calculator fell into disuse.
Last year, I rediscovered this beast. Its battery was again dead of course, but to my delight, Batteries Plus rebuilt the pack professionally for a modest fee. The calculator was still working, without its card reader of course; but this time, I was determined to find out what was wrong and perhaps repair it if I can.
So I took the calculator apart and removed, then disassembled its card reader. The problem didn't take long to discover: the rubber of a wheel that is used to forward the cards through the reader (the rubber pinch wheel is what I believe it is called) has completely disintegrated. I did my best to remove all the rubber deposits from the reader, put the reader back together, and began scratching my head as to where I can find a suitable replacement for the pinch wheel.
Earlier this year I found a solution: a small rubber ball that we purchased as a toy for our cat seemed to have the right kind of material. I was able to shape a suitably round and smooth wheel out of it, which I inserted into the reader. I also managed to readjust the small pressure switches inside that sense the card as it moves through the unit. Another problem, as it turned out, was the worn clutch of the motor that drives the mechanism; worn because of repeated attempts to spin the motor when the reader mechanism itself was stuck. After many tries, however, I eventually ended up with a reader that was able to record and read cards perfectly, and has been working reliably for some time now. Being a software guy, I viewed my hardware success as a major victory!
This calculator works so well, in fact, that I now use it as a prototype testbed for some simple algorithms. It's really nice when you have a reliable card reader! Mind you, I still have this acquired habit of always recording my programs in triplicate and keeping two copies after I verified their readability... as they say, the Devil never sleeps. I also used my newly acquired skills to fix the card readers and other problems in two additional HP-97s that I recently obtained; these will be good as spares or as units for trade.
Turning to the subject of programming, the HP-97 (along with its printerless twin, the HP-67), a member of Hewlett-Packard's second generation of personal calculators, offered fairly sophisticated programming features. It had 224 fully merged program steps (many multikey functions, including some requiring three keystrokes, used only a single step of program memory), 26 data registers, a collection of flags, conditional statements, label addressing, and more. The entire contents of program memory could be recorded on the two sides of a magnetic card. Along with the usual complement of scientific and statistical functions, this made the HP-97 a very nice calculator indeed.
Here is my current implementation of the infamous Gamma function for the HP-67/HP-97. Unlike some of my other Gamma function programs, this one does not require that you enter any constants into data registers; the constants are part of the code. This program calculates the Gamma function for any real argument, except for negative integers, for which the function has no value. The program only uses registers D and E for temporary storage.
001 21 11 LBL A
002 01 1
003 -41 x-y
004 21 02 LBL 2
005 16-44 x>0?
006 22 01 GTO 1
007 -21 ENTER
008 -31 Rv
009 -35 ×
010 16-31 R^
011 01 1
012 -55 +
013 22 02 GTO 2
014 21 01 LBL 1
015 35 15 STO E
016 -41 x-y
017 35 14 STO D
018 07 7
019 06 6
020 -62 .
021 01 1
022 08 8
023 00 0
024 00 0
025 09 9
026 01 1
027 07 7
028 03 3
029 36 15 RCL E
030 01 1
031 -55 +
032 -24 ÷
033 08 8
034 06 6
035 -62 .
036 05 5
037 00 0
038 05 5
039 03 3
040 02 2
041 00 0
042 03 3
043 03 3
044 36 15 RCL E
045 02 2
046 -55 +
047 -24 ÷
048 -45 -
049 02 2
050 04 4
051 -62 .
052 00 0
053 01 1
054 04 4
055 00 0
056 09 9
057 08 8
058 02 2
059 04 4
060 36 15 RCL E
061 03 3
062 -55 +
063 -24 ÷
064 -55 +
065 01 1
066 -62 .
067 02 2
068 03 3
069 01 1
070 07 7
071 03 3
072 09 9
073 05 5
074 07 7
075 02 2
076 36 15 RCL E
077 04 4
078 -55 +
079 -24 ÷
080 -45 -
081 01 1
082 -62 .
083 02 2
084 00 0
085 08 8
086 06 6
087 05 5
088 00 0
089 09 9
090 07 7
091 04 4
092 -23 EEX
093 03 3
094 -22 CHS
095 36 15 RCL E
096 05 5
097 -55 +
098 -24 ÷
099 -55 +
100 05 5
101 -62 .
102 03 3
103 09 9
104 05 5
105 02 2
106 03 3
107 09 9
108 03 3
109 08 8
110 05 5
111 -23 EEX
112 06 6
113 -22 CHS
114 36 15 RCL E
115 06 6
116 -55 +
117 -24 ÷
118 -45 -
119 01 1
120 -55 +
121 16-24 π
122 02 2
123 -35 ×
124 54 √
125 -35 ×
126 36 15 RCL E
127 -24 ÷
128 32 LN
129 36 15 RCL E
130 05 5
131 -62 .
132 05 5
133 -55 +
134 32 LN
135 36 15 RCL E
136 -62 .
137 05 5
138 -55 +
139 -35 ×
140 -55 +
141 36 15 RCL E
142 -45 -
143 05 5
144 -62 .
145 05 5
146 -45 -
147 33 ex
148 36 14 RCL D
149 -24 ÷
150 24 RTN