Texas Instruments TI-88

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: Never  Display type: Alphanumeric display  
New price:   Display color: Black  
    Display technology: Liquid crystal display 
Size: 6"×3"×1½" Display size: 16 characters
Weight: 8 oz    
    Entry method: Algebraic with precedence 
Batteries: 1×"AA" NiCd Advanced functions: Trig Exp Lreg Cmem RTC Snd 
External power: AC-9133 (5.7VAC 240mA)   Memory functions: +/-/×/÷ 
I/O: I/O port, expansion ports     
    Programming model: Keystroke entry 
Precision: 13 digits Program functions: Jump Cond Subr Lbl Ind  
Memories: 120(0) numbers Program display: Mnemonic display  
Program memory: 960 program steps Program editing: Insert/delete capability  
Chipset:   Forensic result: 9.000000955917  

*Unreleased model

ti88.jpg (26814 bytes)In the late 1970s, cutthroat competition was taking place among leading calculator manufacturers. The two leaders of the pack were Hewlett-Packard and Texas Instruments; for many years, these two companies repeatedly leapfrogged each other with their ever more amazing new models. TI responded to the challenge represented by HP's first handheld programmable, the HP-65, with its own magnetic card marvel, the SR-52. HP's reply, the HP-67 soon found more than its match in TI's TI-59, a programmable calculator with magnetic cards, solid state software modules, and a printer port. HP's next move, however, was truly lethal: the HP-41, with its lightweight size and negligible power consumption, alphanumeric capability, huge memory capacity, and four expansion ports created a whole new category in handheld calculating machines.

For years, calculator enthusiasts were waiting with baited breath for TI's answer to this incredible challenge. Eventually, rumors surfaced, soon to be confirmed by advertising flyers sent to many proud owners of TI calculators: TI's new marvel, the alphanumeric, LCD display TI-88 is just around the corner, you might as well start saving the money now because it'll be in a store near you in no time.

Except that the TI-88 never arrived (for a detailed, fascinating history of this project, see Joerg Woerner's article on Project-X). Too little, too late... although an impressive machine on its own right, the TI-88 was not only no match for the HP-41, at the time of its release, HP was already investing into research that led to its next generation of calculators, among them their first graphical calculator, the HP-28. After a huge R&D expenditure, and just before the machine would have gone into production, TI cancelled the project. Although the legacy of the TI-88 lived on in the design of later TI models (and eventually, TI regained leadership in this field with their graphical calculator line aimed primarily towards students), the TI-88 became the biggest "vaporware" machine in the history of handheld electronic calculators.

Fortunately, not entirely vaporware. A few prototypes were produced, and some survived the years. The picture on the right (click the picture, or click here for a high-resolution, 150dpi version) is that of a genuine, working TI-88 prototype that I am proud to have in my collection. (There's also a picture of the back, and a high-resolution picture of the back label containing the serial number.)

After I opened this calculator, I was amazed to find out that its main circuit board is marked as made in Canada. The main circuit board, by the way, contains five chips; unfortunately, the little speaker is attached right to the top of what appears to be the main CPU chip, so this chip's markings are not visible (no, I am not going to remove the speaker. I opened the machine and scanned it; this is as far as I'm willing to go!)

The TI-88 presents a curious mixture of old and new features. Its keyboard is similar to that found on other early LCD TI calculators: in other words, it's quite terrible, with hard, not properly debounced keys. The entry method is similar to that found on many modern calculators, with many unary operators implemented as prefix operators (i.e., you type SIN 90 and not 90 SIN). Curiously, these work as postfix operators also, although you need to use the equals key (e.g., 90 SIN =).

In at least one area, the TI-88 provides more than a match for the rival HP-41: performance. I created a simple loop that I executed on both calculators; while certainly not a comprehensive benchmark test, this loop reveals that the TI-88 is approximately 2.5 times faster.

TI-88 HP-41
0000   Lbl
0001   B
0002   Dsz
0003   A
0004   Gto
0005   B
0006   Rtn
01  LBL 00
02  DSE 00
03  GTO 00
04  RTN

Both programs use the decrement-and-skip instruction and a jump to a label to execute a loop; both can be started by storing an initial value in register 00, positioning the program counter at the top of program memory, and hitting the R/S button. The result: if I store 100 in register 00 on the HP-41, and 250 in register 000 (register A) on the TI-88, the loops take approximately the same amount of time to execute.

The base TI-88 has a memory organization very similar to that of the TI-59: 960 program steps that can be converted into 120 memory registers. Additional memory can be added in the form of expansion modules: one module adds 148 memory registers, so the maximum capacity, with two modules, is 3328 steps or 416 memory registers. A "typical" configuration, however, would probably have one memory module and one solid state library module (e.g., the Master Library), so the total RAM capacity would be 268 registers, which can be converted into up to 2144 program steps.

Memory can be freely partitioned by the user: you tell the calculator how many registers you need, and the rest is available as program memory. A new feature (although a familiar one to SR-52 users) is the ability to perform "soft" partitioning: in this mode, memory can be addressed as both program and data memory at the same time, making it possible, for instance, to create self-modifying programs.

Memory partitioning is accomplished using the dreaded OP instruction, first introduced on the TI-58/59. There are up to 88 different OP codes, not to mention that many work also in combination with the INV key (just like some of its predecessors, most notably the SR-52, the TI-88 sure uses the INV key a lot.) Thank goodness OP 00 lists all the OP codes, otherwise you'd have to carry the large manual with you at all times.

OP codes control many aspects of the calculator's operation. With the correct OP code, it is possible, for instance, to display and manipulate data in "unformatted" form (i.e., as 16 BCD digits), hexadecimal form (this does not turn the TI-88 into a hexadecimal calculator; no, it allows, for instance, direct entry of program instructions using their hexadecimal code), or turn on features such as "implied multiply", which makes the calculator interpret keystroke sequences such as 2 ( 3 + 5 ) the same as 2 * ( 3 + 5 ). (Not quite the same; implied multiplication has precedence rules that are somewhat different from those of explicit multiplication.) Through OP codes, it is also possible to access the calculator's numerous hierarchy registers, which control its internal operations; this was also possible on the TI-58/59 as a hack, but in the case of the TI-88, hierarchy registers are actually well documented.

In addition to program memory, the TI-88 also has a formula memory. Using the EQN key, algebraic formulae up to 88 steps in length can be entered, edited, or evaluated. Since the calculator allows the use of the letters A to Z to reference memory registers 0 to 25, formulae can make use of such named variables. It is also possible to define variables that the calculator will prompt for when the formula is evaluated. Here's one example, a variation on Stirling's formula that approximates the Gamma function:

Dfn A A↑A↓÷ExpA×√(2×π÷A)×Exp(A−1÷12)=

Speaking of prompting, the TI-88 seems to follow the footsteps of one of the weirdest Texas Instruments monsters: the SR-60 in that both are "prompting calculators". The SR-60's prompting capability was very limited: the cryptic "PROMPTING DESIRED?" question was followed by "PRESS YES, LOAD CARD", after which further prompts, if any, had to come from the program just loaded from magnetic card. Not so on the TI-88; this machine has an elaborate prompting sequence that lets you either configure the calculator (e.g., enter the current date and time) or select and run a program from an installed library module.

Date and time, you ask? Yes, the TI-88 has a built-in clock and calendar. For the curious: the TI-88 is Y2K compatible. Interestingly, it contains no perpetual calendar that would allow it to compute the day of the week automatically; instead, it must be entered, in addition to the date.

The TI-88 also has a serial I/O port, which can connect it to a printer or tape peripheral (both never released) or another TI-88. The connector is identical to that used on the PC-200 printer that goes with later TI calculator models, such as the TI-66. Unfortunately, the PC-200 does not appear to be compatible with the TI-88. Judging the risk of harming either of the devices fairly low, I decided to test it, but I was unable to print anything (or even get the printer to show signs of life through the use of the TI-88's special I/O instructions.)

Programming the TI-88 is very similar to programming the TI-59; fans of vintage TI calculators would be right at home here. The main difference is that instead of numeric opcodes, mnemonics are used for program display; also, in addition to the current instruction, several previous instructions are also shown on the display, not altogether unlike on the much later TI-95.

Anybody familiar with my calculator pages knows my obsession with that simple mathematical problem, calculating the Gamma function accurately. After all, this was the first ever "serious" problem I solved on the first programmable device I ever owned, the PTK-1072. Naturally, I wrote a Gamma function program for the TI-88. This example actually calculates the Gamma function's logarithm (thus greatly extending the function's range); it does so to great accuracy, thanks in part to the ease with which constants with 13 significant digits can be entered into the calculator. As the program utilizes parenthesis and makes no use of the equals key, it is possible to invoke it as part of a chain calculation; e.g., you can type INV 2nd Ln 5 A to compute the Gamma function (not the logarithm) of 5.

0000	Lbl
0001	A
0002	Sto
0003	A
0004	(
0005	Ln
0006	(
0007	√
0008	(
0009	2
0010	×
0011	π
0012	)
0013	÷
0014	A
0015	×
0016	(
0017	1
0018	.
0019	0
0020	0
0021	0
0022	0
0023	0
0024	0
0025	0
0026	0
0027	0
0028	1
0029	9
0030	+
0031	7
0032	6
0033	.
0034	1
0035	8
0036	0
0037	0
0038	9
0039	1
0040	7
0041	2
0042	9
0043	4
0044	7
0045	÷
0046	(
0047	A
0048	+
0049	1
0050	)
0051	-
0052	8
0053	6
0054	.
0055	5
0056	0
0057	5
0058	3
0059	2
0060	0
0061	3
0062	2
0063	9
0064	4
0065	2
0066	÷
0067	(
0068	A
0069	+
0070	2
0071	)
0072	+
0073	2
0074	4
0075	.
0076	0
0077	1
0078	4
0079	0
0080	9
0081	8
0082	2
0083	4
0084	0
0085	8
0086	3
0087	÷
0088	(
0089	A
0090	+
0091	3
0092	)
0093	-
0094	1
0095	.
0096	2
0097	3
0098	1
0099	7
0100	3
0101	9
0102	5
0103	7
0104	2
0105	4
0106	5
0107	÷
0108	(
0109	A
0110	+
0111	4
0112	)
0113	+
0114	1
0115	.
0116	2
0117	0
0118	8
0119	6
0120	5
0121	0
0122	9
0123	7
0124	3
0125	8
0126	6
0127	6
0128	÷
0129	1
0130	0
0131	0
0132	0
0133	÷
0134	(
0135	A
0136	+
0137	5
0138	)
0139	-
0140	5
0141	.
0142	3
0143	9
0144	5
0145	2
0146	3
0147	9
0148	3
0149	8
0150	4
0151	4
0152	9
0153	5
0154	3
0155	÷
0156	1
0157	0
0158	0
0159	()³
0160	÷
0161	(
0162	A
0163	+
0164	6
0165	)
0166	)
0167	)
0168	+
0169	(
0170	A
0171	+
0172	.
0173	5
0174	)
0175	×
0176	Ln
0177	(
0178	A
0179	+
0180	5
0181	.
0182	5
0183	)
0184	-
0185	A
0186	-
0187	5
0188	.
0189	5
0190	)
0191	Rtn

As a footnote of sorts, it may not be immediately obvious that the variable A is retrieved using RCL A (this is shown as the symbol A in listings); the Rtn instruction is entered as INV SBR, as on many other Texas Instruments programmables.