Hewlett Packard 9810A Programmable Calculator
The Hewlett Packard 9810A was the first in the 9800-series of IC-based machines that followed on after the famous HP 9100A and 9100B transistorized calculators. The first round of 9800-series machines (the 9810, the 9820 and the 9830) all shared in the advantages of small and medium-scale integrated circuit technology for the logic of the machines, and large-scale integration devices for Read-Only Memory (ROM) and Random Access Memory (RAM). Integrated circuit technology in the first 9800-series calculators served as a foundation for smaller (though the 9810 is a still a rather large machine) and more powerful programmable machines than the earlier transistorized calculators. Gone were the core memory, toroid-based microcode sequencing store, and the complex diode and resistor-packed gating circuit board, along with the complex multi-layer circuit board ROM that served as the core of the 9100 calculators, all replaced with integrated circuits.
The 9800-series calculators from Hewlett Packard proved to be the undoing of one of HP's competitors in the high-end calculator business, Wang Laboratories. The predecessors to HP's 9800-series machines, the 9100A and 9100B, forced Wang Labs to come up with a new series of high-end calculators to regain the market share that the 9100's stole from Wang's earlier 300-series calculators, such as the Wang 360SE. The Wang 700-series calculators, like the Wang 720C were this response. While the Wang 700-series calculators were quite powerful, just as Wang's new machines got solidly into the marketplace, HP hit Wang hard with the introduction of the 9800-series calculators. While Wang did introduce some less-expensive follow-on machines to the 700-series calculators, they never really recovered in the calculator marketplace, and quietly exited the calculator marketplace in the late 1970's. Today, HP is one of the survivors in the calculator business, a testimony to their strategy and innovation back in the early days of the high-end calculator wars.
The 4-board CPU engine common to the 9810, 9820, and 9830
By 1971, when the 9810 was introduced, the reign of the transistorized calculator had ended. Later, other machines in the 9800-series were introduced, such as the 9815 and the 9825. These later calculators further leveraged the rapidly-changing state-of-the-art in integrated circuit technology, resulting in higher levels of integration. Though the 9810 was the first, the 9820 and 9830 shared an identical CPU, made up of four plug-in circuit boards crammed with small and medium-scale integrated circuit logic. The major difference between the 9810, 9820, and 9830 was simply the firmware embedded in the machine's ROMs, along with some differences in display technology and keyboard layouts.
Even though the 9810 is a technically more advanced calculator, surprisingly, the base 9810A is actually somewhat less capable in terms of built-in math functions than its predecessor. Out of the box, the 9810 only provides functions to raise a number to a power, calculate square roots, square a number, and calculate reciprocals, along with the standard four functions. Hewlett Packard opted to make the 9810 expandable with ROM modules that plug into three slots in the top panel of the machine. These ROM slots, in conjunction with a ROM-definable 3x5 array of keys on the left end of the keyboard, allowed more flexibility for customizing the function of the machine to the customer's needs. ROM modules were available which provided advanced mathematics (e.g., trig, logarithms, polar<->rectangular conversions), alphanumeric capabilities for the (optional) thermal printer, statistics, extensions for input/output interfaces and other functions. The 9810A also has four slots in the back panel for plugging in input/output interfaces that allow the calculator to interface with a myriad of devices including plotters, printers, mass storage devices, and instrumentation controllers. This combination of modular ROM firmware and I/O interfaces made the 9810A a very capable general purpose computing device in it's time. It wasn't quite a computer in the true sense, but it came very close, and in fact was a heck of a lot less expensive than the minicomputers of the day, with a base introductory price of around $2500.
The 9810A's LED Display Circuit Board
One obvious difference between the 9810 and the earlier 9100 machines is that Light Emitting Diode (LED) display elements were used versus the oscilloscope-like CRT display of the 9100 calculators. Hewlett Packard developed and manufactured the LED display modules for the 9810 expressly for the function of replacing the expensive and complex CRT electronics of the 9100 calculators. The displays form digits by the familiar "pieces of eight"' seven-segment arrangement, however, the segments are formed of lines of tiny LED dots. At some point during the production of the 9810A, the display was redesigned to use modular (five digits in one module) display elements, similar to that used in HP revolutionary HP 35 calculator. These display elements had somewhat smaller digits than the original display. The 9810A exhibited here uses the earlier individual LED displays.
The LED Display of the 9810A in Operation
Three rows of fifteen each of the LED modules allow the RPN stack to be shown in full. The digits are smaller than those that were drawn on the CRT of the 9100 calculators, but are bright and very readable.
A View of the 9810 with Top Cover Removed
The 9810 displays ten digits of precision, the same as the 9100 calculators, and, like the 9100's, had extra digits that were calculated but not displayed, in order to improve the accuracy of the machine. The display format on the 9810 is changed by keystrokes, with a [FLOAT] key setting the machine to display all registers in scientific notation (with a discrete LED indicator under the FLOAT key lighting to remind the user), and a [FIX()] key, which, when pressed, causes the machine to accept the next digit (zero through nine) from the keyboard as the number of digits to display behind the decimal point, and set the display to operate in fixed decimal point mode (lighting another discrete LED under the [FIX()] key). If a number is too large to display in fixed-decimal point mode, the machine will display it in scientific notation. The 9100, by contrast, used a thumbwheel switch to set the fixed decimal point location, and a toggle switch on the keyboard to select between scientific and fixed decimal point display modes.
A Magnetic Card for HP9810 Calculator
The 9810, unlike the 9100 calculators, has separate RAM for storage of memory registers and program steps. On the 9100 machines, the core storage was shared across these two functions. The 9810 in base form has access to 51 memory registers. Two of the memory registers are directly accessable by the [a] and [b] keys. The remaining memory registers (000 through 048) are accessed via pressing a memory function key followed by a three digit address of the desired memory register. Additional memory register RAM can be added as an option, expanding the total number of memory registers to 111. A powerful feature was added to memory register access on the 9810: Indirect addressing. This feature made it possible to use a memory register as a pointer to access other memory registers. This made programs like array and list processing functions much easier to write. Program step memory was also expandable, with up to 2036 steps available. Each keypress when in program mode consumes a single step of program memory, in contrast to newer HP calculators, which can encode multi-key sequences (such as "GTO 0648") as a single program step. When the calculator is in programming mode, the LED display changes to show the previous two memory locations and their content, as well as the current memory location and its content. [BACK STEP] and [STEP PRGM] keys can be used in programming mode to step through the memory to view or edit program code. If the "PRINTER ALPHA" ROM pack is installed, and the 9810 is equipped with the optional thermal printer, programs can be listed out in mnemonic form, with alphanumeric codes describing each step in the program. If the "PRINTER ALPHA" ROM isn't available, programs are listed out using keycode numbers which must be looked up in a table. Programming the 9810A is very similar to programming on the 9100, but with a few additions. Most notably the 9810 has the notion of branching labels. Rather than having to use absolute step numbers when performing branching operations, various points in a program can be marked with a label that can be referred to later by GOTO or branching instructions. This makes programs easier to develop, and also makes it easier to edit programs, as inserting an extra instruction in the middle of a program does not disturb the labels. Given that the program memory on the 9810 is volatile (e.g., the memory content is lost when the power is turned off, as contrasted to the non-volatile core memory on the 9100s), the 9810 has more of a need for a magnetic card reader for offline storage of program and memory registers. The magnetic cards are physically larger than those on the 9100, mainly because the capacity for program steps and memory registers is larger than on the 9100's, requiring more magnetic real-estate.
The 9810 is a very fast calculator, in fact, it is significantly
faster than many of today's electronic calculators. Part of the reason
the machine can run as fast as it does is that it doesn't have to rely
on batteries for power. One way to extend battery life on portable
computing equipment is to reduce the speed at which the circuits operate.
Faster-running circuits require more power. Because the 9810 doesn't
have to rely on batteries (and has a very beefy power supply), compromises
on the speed of components were not as important.
The simple program below (Showing the address, mnemonic and keycode, with
comments following for descriptive purposes) simply loops over and over
again, adding one to the X register at each loop:
0000-- CLR---20 Clear the stack
0001-- 1 ---01 Enter a '1'
0002-- UP---27 Push onto the stack
0003-- UP---27 ..again
0004-- UP---27 ..and again, now the stack is full of 1's
0005-- LBL---51 Create a branch label..
0006-- 1 ---01 ..called 1
0007-- + ---33 Add the X and Y registers together, put the result in X
0008-- GTO---44 Loop back..
0009-- LBL---51 ..to label..
0010-- 1 ---01 ..1
This program will count approximately 300 loops per second, showing that the 9810 runs quite quickly. In calculator mode, most math functions return virtually instantaneous results, with some of the advanced math functions taking a barely detectable time to return an answer. During calculation, and also while programs are running, the display is blanked. A "PAUSE" instruction can be inserted into programs which causes the display to show the current content of the stack for approximately 1/2 second. A "PRINT" instruction can cause the content of the X register of the stack to be printed under program control.
This particular 9810A was made in the early part of 1973, based on date codes stamped on circuit boards, and also on integrated circuits within the machine. This machine is optioned with OPTION 002, which expands program memory to 1012 steps, and OPTION 004, which adds the thermal printer. The machine also has the 11210A Mathematics ROM pack, and the 11211A Printer Alpha ROM.
For much more detailed and comprehensive information on the HP 9810A
and other HP calculators, Dave Hicks'
Museum of HP Calculators
is considered by many (including myself) as the authoritative source for
information on Hewlett Packard calculating machines.