Hewlett-Packard HP-65

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: 1974-1977 Display type: Numeric display  
New price: USD 795.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 Card 
External power: HP-82002 adapter   Memory functions: +/-/×/÷ 
I/O:      
    Programming model: Partially merged keystroke 
Precision: 10 digits Program functions: Jump Cond Subr Lbl  
Memories: 9 numbers Program display: Keycode display  
Program memory: 100 program steps Program editing: Auto-insert program entry  
Chipset:   Forensic result:  

hp65.jpg (24677 bytes)The year is 1973. The war in Vietnam is winding down. The Organization of Petroleum Exporting Countries imposes a ban on oil exports to the United States. The UPC (Universal Product Code) bar code standard is established. The US Department of Defense develops a new internetwork protocol, called TCP/IP. Apollo no longer flies to the Moon, but Pioneer 10 flies by Jupiter, and the Soviet Union resumes the Soyuz program after a tragic loss of three cosmonauts a year earlier. And a little boy from Hungary visits an aunt in Canada, telling every family friend and relative that he wants a "pocket calculator". Finally, somebody relents and buys him one... a mechanical contraption operated with a stylus. What the boy wanted of course was an electronic pocket calculator; little did he know that a bunch of engineers at Hewlett-Packard's Advanced Products Division in Corvallis, Oregon, were already working on something much more than that. Their next product, introduced early in the following year, was the first practical example of "wearable computing": a pocketable device with programmability, and permanent storage of programs and data on tiny magnetic cards.

The HP-65, introduced in 1974, was the first ever programmable handheld calculator; and what a calculator it is! A full complement of scientific functions, 100 partially merged program steps, 9 memories, labels, conditional branching, subroutines, simple program editing capability (inserting and deleting steps), and to top it all off, a magnetic card reader for recording programs. This calculator is nothing short of a stunning engineering achievement.

I now have one of these units and I even managed to get its card reader to work reliably. Needless to say, I am quite happy! There is something absolutely magical about it, when a 25-year old piece of hardware that includes mechanical parts still works the way its designers intended. Mind you, the fact that this, the world's first programmable pocket calculator, is still an eminently useful device in 1999, is no less amazing.

One result of my experimentation with this little marvel is yet another implementation of the Gamma function. This program is a little bit inelegant in that it requires 6 registers to be initialized by the user with preset values. Then again, a separate program can be created (and perhaps recorded on the back side of a magnetic card) that sets the values in these registers.

The program calculates the Gamma function for any real argument for which the function has a value. To use it, enter the argument and hit the A button.

M3: 83.86760434
M4: 1168.926495
M5: 8687.245297
M6: 36308.29515
M7: 80916.62790
M8: 75122.63315

00 23     LBL
01 11     A
02 01     1
03 35 02  STO 2
04 35 08  Rv
05 23     LBL
06 01     1
07 00     0
08 35 22  x<=y
09 22     GTO
10 02     2
11 35 08  Rv
12 33     STO
13 71     ×
14 02     2
15 01     1
16 61     +
17 22     GTO
18 01     1
19 23     LBL
20 02     2
21 35 08  Rv
22 33 01  STO 1
23 02     2
24 35     g
25 02     π
26 71     ×
27 31     f
28 09     √
29 71     ×
30 34 03  RCL 3
31 61     +
32 34 01  RCL 1
33 71     ×
34 34 04  RCL 4
35 61     +
36 34 01  RCL 1
37 71     ×
38 34 05  RCL 5
39 61     +
40 34 01  RCL 1
41 71     ×
42 34 06  RCL 6
43 61     +
44 34 01  RCL 1
45 71     ×
46 34 07  RCL 7
47 61     +
48 34 08  RCL 8
49 34 01  RCL 1
50 81     ÷
51 61     +
52 34 01  RCL 1
53 01     1
54 61     +
55 81     ÷
56 34 01  RCL 1
57 02     2
58 61     +
59 81     ÷
60 34 01  RCL 1
61 03     3
62 61     +
63 81     ÷
64 34 01  RCL 1
65 04     4
66 61     +
67 81     ÷
68 34 01  RCL 1
69 05     5
70  61     +
71 81     ÷
72  34 01  RCL 1
73 06     6
74 61     +
75 81     ÷
76 34 01  RCL 1
77 05     5
78 83     .
79 05     5
80 61     +
81 34 01  RCL 1
82 83     .
83 05     5
84 61     +
85 35     g
86 05     yx
87 71     ×
88 34 01  RCL 1
89 05     5
90 83     .
91 05     5
92 61     +
93 32     f−1
94 07     LN
95 81     ÷
96 34 02  RCL 2
97 81     ÷
98 24     RTN
99 35 01  NOP

Initialization program (hit E to execute):

00 23     LBL
01 11     E
02 08     8
03 03     3
04 83     .
05 08     8
06 06     6
07 07     7
08 06     6
09 00     0
10 04     4
11 03     3
12 04     4
13 33 03  STO 3
14 01     1
15 01     1
16 06     6
17 08     8
18 83     .
19 09     9
20 02     2
21 06     6
22 04     4
23 09     9
24 05     5
25 33 04  STO 4
26 08     8
27 06     6
28 08     8
29 07     7
30 83     .
31 02     2
32 04     4
33 05     5
34 02     2
35 09     9
36 07     7
37 33 05  STO 5
38 03     3
39 06     6
40 03     3
41 00     0
42 08     8
43 83     .
44 02     2
45 09     9
46 05     5
47 01     1
48 05     5
49 33 06  STO 6
50 08     8
51 00     0
52 09     9
53 01     1
54 06     6
55 83     .
56 06     6
57 02     2
58 07     7
59 09     9
60 33 07  STO 7
61 07     7
62 05     5
63 01     1
64 02     2
65 02     2
66 83     .
67 06     6
68 03     3
69 03     3
70 01     1
71 05     5
72 33 08  STO 8
73 31     f
74 42     STK
75 24     RTN
76 35 01  NOP
77 35 01  NOP
78 35 01  NOP
79 35 01  NOP
80 35 01  NOP
81 35 01  NOP
82 35 01  NOP
83 35 01  NOP
84 35 01  NOP
85 35 01  NOP
86 35 01  NOP
87 35 01  NOP
88 35 01  NOP
89 35 01  NOP
90 35 01  NOP
91 35 01  NOP
92 35 01  NOP
93 35 01  NOP
94 35 01  NOP
95 35 01  NOP
96 35 01  NOP
97 35 01  NOP
98 35 01  NOP
99 35 01  NOP