The Museum of HP Calculators
The HP-97S I/O calculator was a crossover from the personal calculators of the Corvallis Advanced Products Division to the larger calculators of the Colorado Calculator Products Division. It was a crossover in price as well, fitting nicely in the price gap between the two model lines.
The Colorado division took the basic HP-97 and added BCD I/O which allowed it to control instruments and collect data. This was done by adding an internal connector and adding another module which contained the BCD interface. This module was similar in color to the HP-67. ("Before" and "after" pictures of the HP-97 circuit board are shown on the technology page.)
BCD interfaces were commonly used on instruments at the time and it was a natural for the calculator since it used BCD internally. There were 40 lines allowing10 BCD digits to be input in parallel or a single set of four lines could accept BCD character-serial data. Data entered could be integer, fixed or floating point. Besides the BCD digit encodings, the calculator also understood codes for the decimal point, sign change, Enter, EEX (enter exponent) and jump to label A.
The interface provided 5 control lines. Four of these were controlled by calculator flags and the other (LE') was generated by the interface to signal that the calculator was ready to accept data. The line was enabled whenever the interface didn't contain data, flag 3 was set and program execution was halted. A simple program to accept data from a device might look like:
Instruction ; comment LBL B ; Label B CF3 ; clear flag 3 (enable the interface) R/S ; Halt the calculator - now ready to receive data ... ; possibly other code here LBL A ; Label A - calculator jumped here when instructed by peripheral ... ; (flag 3 was automatically set before executing at label A) ... ; operate on the data GTOB ; jump back to Label B to set up for additional data
Depending on the interface design and programming, the calculator could be set to capture data when an external event occurred (load line triggered) or could sample data as needed with the pause command used to control the interval between samples.
A jump to Label A was the only direct program control that a peripheral could exercise. However, since the calculator allowed duplicate labels and always searched downward from the current location, it was possible to have multiple input routines if needed.
The manual provided wiring diagrams to connect to the calculator to various devices including those with floating point data, binary data, handshaking etc. An example circuit to decode 3 flag outputs into 8 output lines was also provided.
The connector on the BCD port was a 50 pin Centronix style connector. (Like a full-size SCSI connector.) It could be connected to TTL, DTL, CMOS, NMOS and high threshold logic. Data could be positive-true or negative-true. Inputs were protected against overvoltage and static discharge.
Connector Pins: GND -- 1 26 -- LE' F3' -- 2 27 -- LOAD' F2' -- 3 28 -- INHIBIT F1' -- 4 29 -- LOAD F0' -- 5 30 -- T/C' I1 -- 6 31 -- J1 I2 -- 7 32 -- J2 I4 -- 8 33 -- J4 I8 -- 9 34 -- J8 G1 -- 10 35 -- H1 G2 -- 11 36 -- H2 G4 -- 12 37 -- H4 G8 -- 13 38 -- H8 E1 -- 14 39 -- F1 E2 -- 15 40 -- F2 E4 -- 16 41 -- F4 E8 -- 17 42 -- F8 C1 -- 18 43 -- D1 C2 -- 19 44 -- D2 C4 -- 20 45 -- D4 C8 -- 21 46 -- D8 A1 -- 22 47 -- B1 A2 -- 23 48 -- B2 A4 -- 24 49 -- B4 A8 -- 25 50 -- B8
LE' went low when the device was ready to receive more data.
(See note on LE' above.)
LOAD and LOAD' could be used by the peripheral to indicate that data was ready to be read. LOAD read on high and LOAD' read on low. Only one was typically used. For continuous sampling, LE' could be connected to LOAD' causing the calculator to load data as quickly as it could.
INHIBIT had to be low for the interface to be active. The interface was inactive when INHIBIT was not connected.
T/C' (True/Complemented) selected positive-true or negative-true data inputs. If left unconnected, a logic high was a one and a logic-low a zero.
Load, T/C' and Inhibit all had internal pull-up resistors. Unconnected digits presented a NO-OP regardless of the T/C' setting.
Binary Encodings: 0000 0 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 1000 8 1001 9 1010 . 1011 EEX (enter exponent) 1100 Enter 1101 A (go to label A) 1110 CHS (change sign) 1111 NO-OP (leaving a set of lines unconnected became a NO-OP)
Picture of HP-97S (~86K)
Dimensions and Weight HP-97
BCD Interface Module:
Total Weight: 3.7lb
Technology and Packaging
HP-67/97 Programming Information
Go back to the main exhibit hall
Next Calculator Made
Previous Calculator Made
???? ?????? ???? ????? ????