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: ~1978-1981 Display type: 7-segment
New price:   Display color: Red
    Display technology: LED
Size: 8"×11"×1" Display size: 12 digits
Weight: 10 oz
    Entry method: N/A
Batteries: N/A Advanced functions: N/A
External power: TI adapter (+5V, -12V, +12V) Memory functions: N/A
I/O: I/O port, cassette port    
    Programming model: Machine code
Precision: N/A Program functions: Machine code monitor
Memories: 1 kB
Program display: Machine code monitor
Program memory: 1 kB
Program editing: Machine code monitor
Chipset:   Forensic result:  

tm990.jpg (140084 bytes)The TM990/189 is a very unusual contraption. About the only reason why it's present in my calculator collection is its unusual keypad: it is clearly recognizable as the keypad of a TI-59, simply relabeled.

The TM990/189 is not a calculator, but an experimental computer. It was, apparently, used for educational and development purposes.

Thanks to a fellow collector, I now have a copy of some of the documentation of this board. As a result, I was able to write simple programs to test its functionality. No Gamma function yet; floating-point calculations are far beyond my current skills on this board. However, here is an implementation of the factorial:

addr  code  instruction
0200  C002  MOV R2,R0
0202  0602  DEC R2
0204  1501  JGT 0208
0206  10FF  JMP 0206
0208  3802  MPY R2,R0
020A  C001  MOV R1,R0
020C  10FA  JMP 0202

In order to use this program, it must first be keyed in, the program counter and workspace pointer need to be initialized, and the function argument must be entered into register 2. After turning the unit on, hit the Ret key to enter the UNIBUG debugger. Then initialize the program counter and workspace pointer:

P 0200<Ret>
W 0300<Ret>

The easiest way to enter the program is by using the M command. Type M 0200 and then enter the opcodes from the listing above, separated by the Sp key. After the last line, hit Ret instead of Sp.

Once the program is in memory, set the contents of register 2:

R2 5<Ret>

The program can be executed using the E command. It is best to specify the address 0206 as a breakpoint address; this will cause the debugger to interrupt program execution when the address 0206 is reached, which is where our program ends:

E 0206<Ret>

Immediately afterwards, you should see BP 0206 on the display. If you entered 5 into register zero previously, register 0 (which you can examine using the R0 command) should now contain 78 (hexadecimal; equal to decimal 120, which is the factorial of 5.)

For another programming example, please see Jason Zinserling's program to calculate perfect numbers.