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: LightEmitting Diode Liion: Lithiumion rechargeable battery Lreg: Linear regression (2variable statistics) mA: Milliamperes of current Mtrx: Matrix support NiCd: NickelCadmium rechargeable battery NiMH: Nickelmetalhydrite rechargeable battery Prnt: Printer RTC: Realtime clock Sdev: Standard deviation (1variable 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 


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 TI59, 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; floatingpoint 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.)