Hewlett-Packard HP-55

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
Years of production: 1975-1977 Display type: Numeric display  
New price: USD 395.00   Display color: Red  
    Display technology: Light-emitting diode 
Size: 6"×3"×1½" Display size: 10+2 digits
Weight: 12 oz    
    Entry method: Reverse Polish Notation 
Batteries: 3×"AA" NiCd Advanced functions: Trig Exp RTC 
External power: HP-82002 adapter   Memory functions: +/-/×/÷ 
I/O:      
    Programming model: Keystroke entry 
Precision: 10 digits Program functions: Jump Cond  
Memories: 20 numbers Program display: Keycode display  
Program memory: 49 program steps Program editing: Overwrite capability  
Chipset:   Forensic result:  

hp55.jpg (23345 bytes)The HP-55 is a unique calculator. A cheaper alternative to the HP-65, it had no magnetic cards; what it had instead was a built-in quartz timer, making it probably the first pocket-size calculator ever with such a capability. In timer mode, the R/S key was used to start or stop the timer, and while the timer was running, the number keys could be used to store the current value in a numbered register.

The story of my HP-55, received in non-working condition, began with a crushed transistor. Two display driver chips replaced, with inhuman effort, by identical chips taken from a thoroughly dead HP-65. Still, no working calculator. Then came the oscilloscope, the voltmeter, some headscratching, more measurements, circuit tracing, even more headscratching, mumbling, swearing, then a spark of inspiration: where, exactly, is this chip getting power from? And why isn't it getting it? I wonder... could this diode be faulty? Five minutes later: a working calculator in my hands. Now I can start exploring this beast that I just brought back to life...

The HP-55 had a fair number (20) of registers but a very small program memory. Only 49 program steps, and these were completely unmerged, with the exception of the GTO instruction that required only one step for the instruction itself and the line number. (Could this be the only HP calculator in which even register references are unmerged?) I would like to create a Gamma function program on this calculator for demonstration purposes, but in 49 program steps, it just doesn't seem possible.

Or does it? After all, I have not one, but two alternative solutions! I can sacrifice accuracy and satisfy myself with a program for Stirling's formula. Or, I can sacrifice speed and write a program that calculates the incomplete Gamma function (and, by extension, approximates the Gamma function itself) iteratively. Hmmm... why don't I do both?

Here's what Stirling's formula looks like on the HP-55:

01. 41    ENTER
02. 41    ENTER
03. 22    x-y
04. 02    2
05. 71    ×
06. 31    f
07. 83    π
08. 71    ×
09. 31    f
10. 42    √
11. 22    x-y
12. 41    ENTER
13. 12    yx
14. 71    ×
15. 22    x-y
16. 32    g
17. 22    ex
18. 81    ÷
19. 22    x-y
20. 13    1/x
21. 01    1
22. 02    2
23. 81    ÷
24. 01    1
25. 61    +
26. 71    ×

Fast, simple, and inaccurate. To use the program, enter the argument and press BST (to reset the program counter) followed by R/S.

The incomplete Gamma function program is listed below. To use, enter the function argument, hit ENTER, then enter the integration limit, hit BST, and hit R/S. Execution time may be several minutes, depending on the integration limit used. Note that this version works only for positive arguments.

01.  33   STO
02.  01   1
03.  22   x-y
04.  33   STO
05.  02   2
06.  12   yx
07.  34   RCL
08.  02   2
09.  81   ÷
10.  33   STO
11.  03   3
12.  34   RCL
13.  01   1
14.  34   RCL
15.  02   2
16.  01   1
17.  61   +
18.  33   STO
19.  02   2
20.  81   ÷
21.  34   RCL
22.  03   3
23.  71   ×
24.  33   STO
25.  03   3
26.  61   +
27.  32   g
28. -30   x=y 30
29. -12   GTO 12
30.  34   RCL
31.  01   1
32.  32   g
33.  22   ex
34.  81   ÷