There were no digital IC chips in the HP 9100. The arithmetic unit was all discrete circuitry. The RAM was magnetic cores, and the ROM came in both printed circuit board and wire braid toroidal core varieties. The only IC chips were a few op-amps used in the card reader board. These early analog ICs (4 in the 9100A and 8 in the 9100B) were the equivalent of around 20 discrete devices each.
The CPU worked on a digit (nibble) serial basis. Each digit of a Binary Coded Decimal (BCD) number was fetched and operated on successively. The machine used a 1.21MHz clock. The hard-wired logic gates were created with diode-resistor logic. To keep the huge board (which also served as the motherboard) as simple as possible, all diodes were oriented the same way and most resistors had the same value. All interconnections were made on 6 internal layers making the board almost immune to solder bridges and other shorts. Plugged into this board were boards containing 40 flip flops, a board containing control logic, the core memory board, and the core sense amplifier board.
The HP 9100 contained 32K bits (512 64-bit words) of ROM program memory. The program ROM was built on a 16-layer printed circuit board and achieved a density of 1000 bits per square inch. Pulses were sent down two lines and were inductively coupled on a sense line. Signals from the two lines either reinforced or canceled each other producing a 1 or 0 on the sense line. 64 sense amplifier/latch circuits read the results and in turn drove the calculator's logic circuits.
All of the HP 9100s read only data, including functions, constants and the character encoders and CRT modulating pattern fit into the 32k bits of circuit board ROM. The ROM was on a large board that occupied the bottom of the machine.
The calculator also contained 1.8k bits (64 29-bit words) of read only control memory. The control ROM used a wire braid toroidal core design which was chosen because it was extremely reliable and compact. These cores can be seen in this picture (~104K) of the control logic board. (The toroids are the row of 29 black and white objects at the bottom of the board under the metal bar.) There were 64 wires passing through this set of toroids. Each wire either passed through or around each toroid. Sending a pulse down one of the wires activated each threaded toroid which acted as a transformer and activated a transistor connected to the toroid's winding. This produced the appropriate 29-bit control word at the outputs of the transistors. (A simplified diagram showing 2 3-bit words is shown below. Each of the red and blue wires addresses a word which is output on the toroid windings.)
The HP 9100A contained 2208 bits of coincident current memory using lithium cores. Memory was organized as 6x16x23 bits. (The HP 9100B contained twice as much memory.) The current drive sources were temperature compensated to make the memory insensitive to temperature and power supply variations.
Core memory consisted of small toroid (donut) shaped pieces of metallic, magnetic material. Each toroid (or core) stored a single bit of information whose value was determined by its magnetic polarity. Cores were arranged in a 3D fashion with the number of planes equal to the number of bits in a word. The HP 9100 had 6 planes (6 bits per word.)
Each core was held in place with a horizontal and vertical wire. A third sense wire passed through each diagonally. (In fact, a single sense wire was threaded through every core on a plane.) A fourth inhibit wire ran in parallel to each horizontal wire and was also threaded through every core in a plane. To reduce the number of addressing circuits, all the corresponding X and Y wires were connected between planes. (In other words, the processor addressed words rather than individual bits.)
To read a word, pulses were sent down the appropriate pair of X and Y wires. The amplitudes of the pulses were such that, alone, they were insufficient to change the state of a core. However, at the intersection, the coincident pulse was strong enough to set the core. If the core's polarity was changed during this operation, voltage was induced which could be detected on the sense line. (The polarity of each pulse was set to leave the core in a zero state so that a one in the core caused a pulse in the sense line.) Since the X and Y wires for each plane were connected, the values for each corresponding core were produced at the same time, each on the sense wire for that plane. (This also resulted in the cores for that word all having the same polarity - in other words that word was read and cleared.)
The destructive read needed to be followed by a write to restore the original polarities. Writing, was like reading, only with the pulses applied in the opposite polarity (to turn the zeroed cores back to ones) and any voltages produced on the sense lines were ignored. An additional complication, however, was that since the X and Y lines were connected across all planes, a write would set all bits in a word to the same value. The inhibit lines were activated on selected planes to prevent this. They provided a pulse of the opposite polarity to cancel out the write pulse for those planes which were supposed to remain cleared.
The first question many people ask when seeing core memory is how all the tiny cores (typically 1/30" in diameter) got threaded on all those wires. The answer in most cases is: by hand. Core threading was a delicate and laborious process, however, in the U.S. alone, about 25 billion cores were threaded annually by the late 1960's.
Core memory was inherently nonvolitile ("continuous"). Unlike CMOS which requires a small amount of power to maintain data, core data is retained with no power at all.
Because core memory is inherently nonvolitile ("continuous"), special circuitry was added to the CPU to keep it from writing to core during a power up or power down. This ensured that the user could turn the calculator off and on without losing data or programs.
Floating point addition and subtraction could be done in 2ms. Multiplies and divides took 22ms and 27ms respectively. Natural logs took 70ms and antilogs required 130ms. Trig functions were the longest at 330ms.
During a write, program instructions were recorded onto three tracks while a clock signal was recorded onto a fourth. This clock track ensured that cards were compatible between machines. The three data track design was a natural match for the 6-bit instruction size. The card could be inserted in two directions so that two programs could be stored on each card. (Or in the case of the HP 9100B, a card could be used to store the complete 392 steps of memory.)
The CRT display used in the calculator was made by HP. It generated a bright green image and used a filter in front of the screen to improve contrast. The entire three level stack was displayed on three lines. The numbers were formed from an 8-segment format just like the LED displays that came later in order to minimize ROM space. I.E.:
_ |_| |_|
(This saved a lot of precious ROM space compared to full-formed characters common on CRTs today.)
The keyboard used the double shot injection molding process that helped make HP's later handhelds legendary. (The characters on the keys are molded through and can't wear off.) The key switches were specially designed to produce pleasing feel and proper feedback and had gold alloy contacts. The contacts were arranged in a matrix with an interlock to prevent errors due to multiple keys pressed simultaneously. Keys were debounced by delaying the key signal.
The HP 9100 came in an attractive die cast aluminum case that still looks good decades later. Aluminum was selected because it offered excellent RFI shielding, good heat transfer and it was strong and durable. After removing a few screws, the top part of the case could be rotated up and locked into the upright position, exposing all of the main subassemblies. Even with its very large complement of components, the calculator was designed with natural convection and radiant cooling so no fan was required making the calculator absolutely silent. (Quite a change from the motor-driven mechanical calculators found on most engineer's desks at the time.)
HP began to earn its reputation for reliable calculators right from the start. All transistors were aged for 96 hours and tested before being used to manufacture a unit. Subassemblies were tested by computer and each finished calculator was "burned in" at an ambient temperature of 130 degrees F for 5 days
Credit:
Thanks to Tony Duell for pointing out the op-amps on the card reader board. Tony also noticed that some of the resistors on the ROM board have different values.
Picture of an open HP 9100B. (What looks like a colorful background on the base board is actually part of the diode/resistor logic that can be seen more clearly in the third picture.) Small large |
|
Another view of the Interior. Small large |
|
A closer view of some of the logic. Small Large |
|
Picture of the control logic board. Display |
|
A closer view of the ROM. Display |