Commodore P50

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:   Display type: Numeric display  
New price:   Display color: Red  
    Display technology: Light-emitting diode 
Size: 6"×3"×1" Display size: 8+2 digits
Weight: 8 oz    
    Entry method: Algebraic 
Batteries: 1×9V alkaline Advanced functions: Trig Exp 
External power: Commodore 707 adapter (6V DC 300mA)   Memory functions: +/× 
I/O:      
    Programming model: Keystroke entry 
Precision: 11 digits Program functions: Jump Cond  
Memories: 1 numbers Program display:  
Program memory: 24 program steps Program editing:  
Chipset:   Forensic result: 9.027775748  

p50.jpg (25575 bytes)The P50 was one of two programmable calculators made by Commodore in the 1970s. It was significantly less capable than its bigger brother, the PR-100. Only 24 program steps, 1 memory register, no parentheses, no program display or editing... very limited indeed. This scientific calculator doesn't even have a raise-to-the-power-of (yx) function! Then again, it at least has conditional and unconditional control transfer instructions, making it a "real" programmable; contrast this with numerous machines in my collection whose "programming" consists of the unconditional execution of a stored keystroke sequence.

In surprising contrast with its sparse functionality and limited capacity, the calculator has not one, but three different conditional jump instructions. Also somewhat surprisingly, it has the ability to "merge" inverse trigonometric functions and also merge the two-digit address following a GOTO command into a single program step. Could there be some synthetic programming secrets hidden here? I don't know yet, but I've been able to determine the keycodes (not normally displayed by the calculator during program entry) using a simple method. I entered the program GOTO 00 R/S R/S ... (filling the rest of program memory with R/S instructions); then in run mode, I keyed GOTO 01, entered learn mode again, and hit a key. Next, run mode again, followed by GOTO 00 R/S. The program counter now went to the position corresponding to the selected key's code and executed an instruction there; this was either an R/S instruction or an invalid instruction (if the counter was greater than 23) in which case an error is displayed. Either way, going into learn mode again I was able to determine the next program position; subtracting one gave the key code.

Anyway, to make a long story short, here is the table of key codes:

 
 lrn 18
 R/S 48
SSTP 
GOTO 40
.
 SKZ 41
 SKN 43
 SKP 42
 INT 28
  n! 29
  π  13
 deg 14
 rad 15
 gra 16
  25
 arc 
 sin 34
 cos 35
 tan 36
 26
 log 32
 10x 33
  ln 30
  ex 31
 1/x 27
 STO 44
 x-M 38
 x-y 39
  EE 10
  ÷  23
 RCL 45
  7  07
  8  08
  9  09
  ×  22
 46
  4  04
  5  05
  6  06
  -  21
  M+ 47
  1  01
  2  02
  3  03
  +  20
C/CE 19
  0  00
  .  12
 +/- 11
  =  24

Since it is possible to key in instructions such as GOTO 77, it makes me wonder: what about codes 17 and 49-79? Also, it appears that codes beginning with 80 represent the pressing of the arc key before another key (of course, this only has a meaningful effect for trigonometric functions.)

Only 24 program steps: ouch, that's tiny! Worse even than the Sinclair Cambridge Programmable. Never mind anything as fancy as the Gamma function: how am I going to fit even Stirling's formula in here? With a shoehorn, that's the answer; only with a further compromise in accuracy. However, since Stirling's formula isn't that accurate to begin with, this is not a great difference. Instead of √2π (2.5066283...) I used the value 2.5 in the program below, thereby saving a few program steps. Sorry, no GOTO 00 at the end; you'll have to type it in by hand after each time the program is used. (Don't you just hate programmable calculators in which a few additional steps from the already limited program memory must be reserved for something as silly as R/S GOTO 00?)

00	STO
01	+
02	1
03	2
04	1/x
05	÷
06	RCL
07	ex
08	÷
09	RCL
10	√
11	×
12	2
13	.
14	5
15	=
16	x-M
17	×
18	ln
19	=
20	ex
21	M×
22	RCL
23	R/S