The Museum of HP Calculators
by Curtis D. Brown and Jack M. Walden
IN KEYBOARD LANGUAGE AND APPEARANCE, Model 10 of the 9800 Series, or Model 9810A, is closely related to the 9100A/B Calculators, HP's first programmable calculators and the predecessors of the 9800 Series. Most of the 9810A keys are marked the same as the 9100A/B keys, and when used in the same way, perform the same operations The same "reverse Polish" keyboard language is used. What's more, the keycodes stored in the program memory are the same when the keys are marked the same. This close similarity was maintained wherever possible to provide a useful carryover of the well established 9100A/B keyboard operations and associated programming techniques. However, 9100A/B operations are a subset of the 9810A's. Many new capabilities and features have been added in the new calculator.
In hardware implementation the 9810A bears no resemblance to the 9100A/B. Rather, it is similar to the other 9800-Series Calculators, Models 20 and 30. 9800-Series Calculators are all implemented from a common hardware base which is actually a 16-bit-word, general-purpose minicomputer. Individual calculator-model characteristics are obtained by internal ROM-stored machine-language programming. The unique hardware for each model consists primarily of the keyboard and display, which are tailored to the needs of the individual models.
The most important individual characteristics of the 9810A are:
The three-register LED display is one of the most conspicuous front-of-machine changes noticed by those familiar with the 9100A/B's CRT display. LED display was chosen because it is a bright, highly visible display whose brightness and size of characters are practically uninfluenced by line voltage, it fits in a small space, and its low supply voltages and signal levels interface directly to internal logic levels and supply voltages.
The magnetic card reader has a new feedthrough card path, allowing the use of longer cards than those used in the 9100A/B. The longer cards have greatly increased storage capacity, a necessity for making full use of the larger program and data memories of the 9810A and 9820A Calculators.
The 9810A and 9820A Calculators each have three sockets for plug-in read-only-memory (ROM) modules. These are direct extensions of the internal ROM. They allow expansion of operating features and redefinition of the lefthand keyblock. In the 9810A the lefthand keys may be defined at the user's option to provide standard mathematical functions (almost identical to the 9100A/B), statistical calculations, user-definable (keyboard language) functions, or programming aids.
The optional plotter, cassette, typewriter, and other peripherals are controlled by other plug-in blocks that are accessed by use of the FMT key on the keyboard. This plug-in block concept allows the user to configure and reconfigure the machine and peripheral-control facilities to suit the needs of the moment.
The thermal strip printer, housed within the calculator case, is controlled by internal programming. The basic 9810A provides for the printing of numeric values as they appear in the x register, or the listing of programs as they appear in the program-mode display. An optional plug-in block provides for message printing and the addition of keycode mnemonics (functional abbreviations) to the program listings.
While the 9810A has a much larger bit-storage capacity than the 9100A/B, its memory is effectively made still larger by some new step-saving features. A major change from the 9100A/B is the decimal addressing structure for programs and data. The novice programmer adapts more quickly to decimal addressing, but a more important reason for its adoption is that it is necessary for the indirect addressing mode. An indirect reference to register a, say, will result in using the value of register a as a new register address. For example, the keystroke sequence x->, INDIRECT, a, will store the contents of the calculator's x register in the register whose address is given by the contents of a.
The indirect capability of the calculator can save many steps when a number of data registers are to undergo equivalent operations. One data register can be set aside as a pointer. The value of the pointer register designates one of the data registers to which the operations are to be applied. By incrementing the pointer register, a common subroutine can operate on the desired data registers in turn, saving many program steps over the direct reference method.
Another important step-saving feature in the 9810A is the register arithmetic capability. Normally, if one wanted to add the x register to register 10, one would recall register 10 to the y register, add the x register, and store the results in register 10. With register arithmetic, however, a mathematical operator may be specified preceding the transfer address in a store or recall operation. One would then say x->, +, 10 to do the above operation.
This capability is bidirectional. Thus x <-, +, 10 will add register 10 to the x register. Since any of the four arithmetic operations (+, - , x, ÷) may be used, each register of the 9810A is in effect a powerful accumulator. This feature greatly increases programming flexibility by reducing the amount of shuffling of the x, y, and z registers.
Indirect addressing may be used with register arithmetic by including the INDIRECT key either before or after the arithmetic operator.
Because of the size of the 9810A memory, an improvement in programming and debugging ease over the 9100A/B was vital. Three new features attack this problem directly: label goto's; alphanumeric key mnemonics; and a printed record of entered keystrokes (keylogging).
Labeled transfers are most useful during the program creation phase, where actual program step addresses either are not known or may change frequently as debugging progresses. Any step in the calculator program may be assigned a label by entering the LABEL key followed by any other key stroke. Control may later be transferred to that step by executing a GOTO or GOSUB LBL, then the same keystroke. A search is initiated, beginning at program step zero, and continuing through the program area until the label is found. Later, when the program is operating satisfactorily, absolute addresses may be substituted for each labeled GOTO; this gives a speed advantage by eliminating the search. (Model 9820A also has these capabilities.)
An alternative to remembering the numerical equivalents of all 64 keys is provided by an optional ROM, which generates three-letter mnemonics during listings on the thermal printer. These are useful for program debugging or documentation. This ROM also allows printing of messages during program execution, using the Format key to change the definition of the calculator keyboard. Two consecutive FMT keystrokes begin the character print mode. Keys that follow are interpreted as characters of the alphabet, rather than as their assigned function, and are printed a line at a time on the strip printer. Another FMT key terminates the character print mode and restores normal calculator operation.
The keylog feature provides a printed record of all calculator keyboard operations. When the keylog mode is selected each key entered from the keyboard is automatically printed. If the calculator is in keyboard mode, the steps in a certain calculation may be verified. In program mode, the result is a full step-by-step listing of the program entered. With the optional plug-in ROM, mnemonics are printed along with the keycode.
Another feature that simplifies the operator's interaction with the 9810A is a backstep key. The backstep key decrements the calculator program step counter. It's helpful in examination of stored programs.
To one person, his 9810A may be an aid in statistics, to another it may be a purely mathematical or scientific machine, while to a third, it may be a peripheral controller. This changing nature of the 9810A is made possible by the plug-in ROM concept. The implementation of this concept posed a special problem for the machine coding. How can blocks yet to be conceived be slot-independent and still interface readily to the basic calculator?
The solution was to use the Format key to initiate a search through possible ROM block locations. The key following the FMT is compared with a special identifier word in each ROM, and when these codes match, the desired ROM has been found.
Many operations which could not be included in the keyboard directly are
also implemented through the FMT key:
These routines are all contained in the basic 9810A.
Curtis D. Brown
Curt Brown worked on firmware development for the 9810A and 9820A. He received his B.S.E.E. degree from the University of California at Davis in 1969 and his M.S.E.E. degree from Massachusetts Institute of Technology in 1970, He joined HP in 1970. He's a member of IEEE and AAAS. Of his spare-time activities, Curt says they include "all the standard sports," and adds, "My wife and I have adopted a modified form of the good life. Our private yacht is an 11-foot styrofoam sailboat, and our personal aircraft is a 1954 Piper Tripacer."
Jack M. Walden
Adventure and fortune beckoned to Jack Walden soon after he got his B.S. degree in engineering physics at South Dakota School of Mines and Technology in 1944. He headed for Alaska, where for the next 15 years he was involved in designing, building, and operating most of the radio and television stations there. In 1960 he became a student again, this time at Oklahoma State University, where he received his M.S.E.E. and Ph.D. degrees in 1962 and 1965. He stayed on at O.S.U. as an associate professor of electrical engineering and computer science, teaching a variety of graduate and undergraduate courses, then in 1969 he joined HP to work on the 9810A Calculator project. He's now an engineering group leader. Jack is a senior member of IEEE, a member of ACM, and a member of Phi Kappa Phi. His wide-ranging interests include music, hi fi, water skiing, programming calculators and computers, mathematics, and amateur radio.
Go back to the HP Journal library
Go back to the main exhibit hall