+Home     Museum     Wanted     Specs     Previous     Next  

Canon Canola 164P Desktop Calculator

This wonderful machine comes to the Old Calculator Web Museum through the courtesy of Mr. Rich Hume. This machine came to the museum in its original box, with packing materials, manual, and dust cover. The calculator is in mint, nearly un-used condition. It operates perfectly. Sincere thanks to Mr. Hume for making it possible to acquire this amazingly well-preserved artifact.

Canon Manufacturing date code stamped inside of upper cabinet (January 18, 1971)

This particular 164P seems to be have built sometime in the February, 1971 time-frame, based on date codes on integrated circuits (latest date codes of Dec. 1970), and Canon's date stamps on various parts of the calculator, including those found on circuit boards, and the upper cabinet (see photo). Canon used a date code format of YY.MM.DD, with YY being the result of (production year - 1925); MM the month of the year; and DD being the day of the month. For example, the date stamp found on circuit board #2 is 46.1.14, which would be January 14, 1971. The latest date stamp found is on circuit board #5, of 46.1.30 (January 30, 1971), which indicates that the machine was finished sometime after this date.

Canon 164P Profile View

The Canon Canola 164P is part of a fairly long-line of Canon's third-generation electronic calculators, including machines such as the Canon 141, Canon 162, Canon 162P, Canon 163, Canon 167, Canon 167P, and the Canon 1614P. Along with Canon's marketing of this line of calculators, Canon had a business relationship with Monroe, whereby Monroe marketed similar machines (with differences in cabinet, and keyboard color schemes along with Monroe badging). Examples of Monroe's versions of this line of machines include the Monroe 950 and Monroe 990. Within this line of Canon-designed and manufactured calculators with similar architecture, there were a number of programmable calculators, designated by the "P" postfix after the model number. The 162P and 164P calculators were the first of the programmable machines, with the later 167P and 1614P offering improved programming features and additional memory and program step capacity.

Original Box, Top View and Front View

The Canola 164P provides the user with the standard four math functions, one-key automatic square root, three accumulating memory registers, and a fourth store/recall memory register. The machine also features a constant function for multiplication and division, as well as switch-selectable truncate/round off/round up Along with these functions, the 164P provides a simplistic programming capability, with up to 64 steps of learn-mode program. The program step memory can be divided up into two separate areas, one of 40 steps, and the other of 24, or it can be used as one contiguous area of 64 steps. Programs may be loaded into the calculator from the keyboard, by "learning" key-presses as the steps of a calculation are carried out, or can be loaded into the program memory via a built-in punched card reader.

Canon 164P Display Detail

The display is made up of 16 Nixie tubes, which are multiplexed. The tubes have 1/2-inch tall digits, and a right-hand decimal point. The machine also has discrete neon-lamp-based comma indicators located above the Nixie tubes, which group off the numbers on the display by threes for easier reading and transcription. The Nixies and Neon tubes run from 220V DC generated by the power supply. To the left of the Nixie tube display is the sign and overflow indication, which also use discrete neon lamps shining through "-" and "<-" (leftward facing arrow) for sign and overflow indication respectively. Below the left end of the display panel are three clear-jeweled indicators (again lit by discrete neon lamps) that provide indication of the status of the three memory accumulator registers (M1, M2, and M3). When any of the memory registers contains a non-zero value, the corresponding indicator for the register lights up. Memory register four, the store/recall-only register, has no provision for indicating its status. The display does not provide any form of leading or training zero suppression.

Memory Status Indicators

Like all of the Canon/Monroe machines in this series, the 164P uses a high-quality magnetic reed switch keyboard assembly. The assembly is based on a heavy plastic superstructure which supports the keys and reed switches. A hand-wired harness connects the array of reed switches to a circuit board that contains the diode matrix that encodes the key-presses into binary for use by the control circuits of the calculator. Also contained on this circuit board is a special circuit, proprietary to Canon, that monitors the keyboard for any occurrence of more than one key pressed at a time, and causes an overflow condition. This feature helps prevent mis-keying errors. Also on the keyboard panel are slide switches for selecting constant mode, rounding mode, and programming modes. The keyboard circuit board connects to the backplane of the machine via a bundle of individual wire connections.

Constant, Rounding Mode, and Decimal Point location controls

A complex rotary switch encodes the user-selected decimal point position at fixed locations including 0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12 and 14 digits behind the decimal point. The rounding mode of the calculator determines the handling of the least-significant digit behind the decimal point. The rounding switch has three positions, with "(UP)", "5/4", and "(DOWN)" positions. The left-most (UP) position forces all results to be rounded up. The 5/4 position rounds off according to the standard 5-up/4-down rule, and the right-most (DOWN) position truncates all results to the number of digits specified by the decimal point location switch. The "K" switch enables constant mode for multiplication and division. When in the "down"(K) position, the multiplicand becomes the constant for multiplication, and the divisor becomes the constant for division. The setting of the "K" switch has no effect on addition, subtraction, or square root.

Canola 164P Keyboard Detail

The keyboard controls are all pretty straightforward, with keys grouped into five main sections. The left-most grouping of keys contains the [C], [CI], [CM1], [CM2], [CM3], [RV], [D] and [->] keys. The [C] key is the master clear for the calculator, clearing all of the working registers of the machine, but not the memory registers. The [CI] key clears the keyboard input register, allowing the user to correct gross data input errors. The [->] key allows the user to back out data entry one digit for each depression of the key. This feature is very handy for correcting single-digit entry errors that are caught by the user. The [RV] key is used for swapping the operands of multiplication and division operations. The [D] key is used only in learn-mode programming, and precedes the programming of numeric constants. More about this in the section on programming, found below.

The next group of keys contains the standard numeric keypad, with a double-sized zero key, and decimal point. The [5] key has a rounded relief in the center of the key to allow it to be easily identified by touch. The next two groups of keys contain the math functions, as well as the [J] key. The calculator operates in arithmetic mode, with the [=] key performing addition, and the [=] key performing subtraction. The [X], [÷], and square root keys operate as expected. The [J] key is used during program entry and execution for designating when programmed halts or jumps are to occur. More on the [J] key in the programming section below.

The right-most group of keys controls the operation of the memory registers of the machine. These keys consist of the [AM1], [M1], [M2], [M3], [M1], [M2], [M3], [RM1], [RM2], [RM3], [SM4], and [RM4] keys. The [M1], [M2], and [M3] keys cause the content of the display to be added to the corresponding memory register. The [M1], [M2], and [M3] keys cause the content of the display to be subtracted from the appropriate memory register. The [RM1], [RM2], [RM3], and [RM4] keys cause the current content of the memory register to be recalled to the display. The memory register is not affected by the recall operation. The [SM4] key stores the current content of the display into the store/recall memory register, M4. The [AM1] key, a push-on/push-off switch, causes the automatic accumulation of multiplication and division results into memory register one, useful for streamlining sum-of-products calculations.

Programming Control Keys

The programmability of the Canola 164P is controlled by a group of three slide switches located on the keyboard panel below the display. The "ON/OFF" switch enables programming features. When this switch is in the "OFF" position, the calculator behaves like a non-programmable calculator.

The OPE/LRN/CHE switch sets the operating mode of the programming functionality when enabled by the ON/OFF switch. In the "OPE" position, the calculator operates like a regular calculator, but the program(s) stored in memory can be made to run, by pressing the [C] key to start the program at the beginning of area I or II (see below) as defined by the program selector switch setting. The "LRN" position of the switch enables learn mode program entry, where key-presses are sequentially stored in the program memory, or whereby programs can be loaded via the punched card reader. The "CHE" position allows troubleshooting to be performed on programs stored in memory, for debugging purposes. In "CHE" mode, programs are executed one step at a time, with each step executed by a press of the [=] key.

The program "I/II" switch defines which of the two program areas is active. The program memory is divided into two areas, area I is 40 steps in length, spanning from program memory address 1 through 40. Program area II is 24 steps in length, spanning from program memory steps 41 through 64. The program space is actually one 64-step storage area, with the program selection switch logically making the single address space appear as two separate program spaces. Program steps are encoded into seven-bit BCD codes, ranging from 0000000 (00) through 1111001 (79). Not all of the codes are used. In fact, only 34 of the possible 80 codes are actually used. The remaining codes are undefined, and can result in unexpected results if encountered during program execution. The program memory, along with with the operating registers of the calculator are stored in bit-serial form in a magnetostrictive delay line (more on the delay line in the hardware description below).

Program entry is accomplished by enabling the programming functionality of the calculator by setting the program switch to "ON", the program mode switch to "LRN", and then selecting the area program steps are to be stored in, either area I or area II. Operating the [C] key causes the selected program area to be cleared, and the step counter to be set to "1" or "41", depending if area I or area II is selected. At this point, the calculator is ready to receive program steps. To enter steps from the keyboard, keys are simply operated one at a time, in order as they would be entered for manual calculation. One exception is that it is necessary to press the [D] key before entering numerical constants. For example, to enter the constant 2.71828, the sequence of key-presses would be [D], [2], [.], [7], [1], [8], [2], [8]. The press of the [D] key isn't actually stored as a step in the program memory, it is simply a flag to the logic of the calculator to expect numerical entries which are to be stored in memory as a constant value. All keys on the keyboard except the [AM1], and [C] keys can be learned into program memory. Program steps are stored sequentially, one after another. If the end of the program memory is reached, the step counter simply cycles back around to the beginning of the program memory. In the case of program area I, the step counter will advance to 41 after step 40 is loaded, beginning to write into program area II, even though program area I is selected. Likewise, if program area II is the selected area, once the 24th step is entered, the step counter will roll over to step 1, which is the beginning of program area I.

A punched card, ready to be loaded via the card reader

Loading programs into the machine from punched card is quite simple. Once the calculator has had program mode enabled, and is in learn mode (LRN), the user simply inserts the program card into the card reader. A photoelectric cell detects the card entering the reader, and activates an electric motor which slowly pulls the card through the reading station (where photo-transistors detect the presence or absence of punched holes), causing the program codes to be sequentially read into program memory. The card exits out the rear panel of the calculator after it has been read. Each punched card can hold up to 40 program steps. A program that uses all 64 program steps would take one full program card, and a second card with 24 of the steps programmed.

The back panel of the 164P. (Note slot for punched card exit).

The punched cards are pre-scored (similar to the notorious Floridian "Butterfly Ballots" that caused so much controversy in the 2004 US Presidential election), so that a pencil point or other pointed object can be used to punch out the holes. Each card has 40 rows of punches, with each row containing seven columns. Program steps are punched row by row, in a binary-coded decimal form. One special program code, "1111111" (all columns punched in a row), is used to mark a punching error. Such codes are skipped when reading in the card. This feature allows an error punched into a card to be skipped without having to throw away the card and start with a new one. The chart below outlines the programming codes:

No Operation
Square Root
Dec. Pt.
Back Arrow
Rub Out

Canon Punched Card

The unused programming codes seem to have undefined or indeterminate functions. In some testing, I was able to lock up the calculator by attempting to execute some of these codes. The only way to remedy the wedge was to power-cycle the machine. Other codes appear to perform no function, and still others seem to duplicate the function of valid program codes.

The implementation of the "J" function is rather unusual. It can be used as a programmed stop for displaying results or waiting for user data entry, or as a jump instruction to cause the program to start over at the beginning (Step 1 if the program selection switch is in the "I" position, or step 41 if the switch is in the "II" position). Essentially, all the "J" instruction does is halt the calculator's execution of the program when it is encountered. From that point, what happens next is determined by the operator. If the [J] key is pressed on the keyboard, the program will restart at the beginning. Any other keys will result in their function occurring, except for the [=] key, which will perform its normal math function, then cause execution to resume at the next program step. The basic usage of the "J" function in the case of looping is that the user becomes the decision maker. For iterative types of calculations, the user can observe the progress of the calculation, pressing the [J] key at each stop to cause another loop to be performed. After sufficient iterations have occurred, then the user can press the [=] key to terminate the looping and finish off the calculation. In essence, the operator becomes the conditional branch intelligence for the calculator. Such an implementation limits the utility of the machine for completely unattended iterative calculations. Despite the limitation, the programming features of the machine provide a definite advantage for repeated types of operations.

Canon 164P without top cabinet

Internally, the 164P shares virtually the same design as it's non-programmable cousins. The physical layout of the cabinet, chassis, backplane, circuit board layout, and power supply are very similar. The 164P uses an larger magnetostrictive delay line to hold the calculators working registers, as well as the area for the 64-step program storage. The only real departure from the non-programmable machines is the addition of the punched card reader assembly, which perches partially atop part of the card cage, making it necessary to remove the card reader in order to extract the rear-most circuit boards from the card cage.

One of the circuit boards from the 164P

The majority of the circuitry of the calculator is contained on seven circuit boards. The circuit boards are made of phenolic, and have etch on both sides of the board, with mostly horizontal traces on the component side, and vertical traces on the back side. Feed-thrus connect both sides of the board together. For extra certainty of good connections between the sides of the board, the feed-through holes are soldered through. An occasional wire jumper on the component side of the board provides connections when trace density won't allow. Each board has two groups of edge connectors, each with 22 pins on each side of the board, for a total potential of 88 off-board connections. The edge connector fingers are gold plated for maximum reliability. The cards all have a plastic stiffener around them which both adds some structural rigidity to the board, as well as providing a means by which the boards may be secured within the card cage. The cards plug into a printed circuit backplane that has high-quality edge-connector sockets with gold-plated contacts. The card cage has slots for eight circuit boards, but one slot is an empty slot, and there is no corresponding edge connector socket on the backplane (nor even a place for it to exist on the backplane).

The circuit card backplane in the Canon 164P

The integrated circuit technology used in the calculator is early small-scale DTL (Diode-Transistor Logic) devices made by Texas Instruments. Canon had a strong relationship with Texas Instruments, which later resulted in the development of the Canon Pocketronic, the first "handheld" rechargeable printing electronic calculator. The IC's used in the 164P are all in Texas Instruments' SN39xx and SN45xx-family of devices. These IC's are small-scale devices that contain at most a few logic gates, or a couple of flip-flops.

The delay line in the 164P (in metal container)

The 164P uses a magnetostrictive delay line as its storage means. The delay line stores data in the form of a string of individual bits that are circulated through the delay line. The delay line consists of a number of loops of a special wire. At each end of the wire are transducers. One transducer serves translate electrical impulses into tiny torque variations in the wire. These torque variations, or 'twists', travel down the wire to the other end, where the other transducer translates the twists into electrical signals, which are amplified, circulated through the logic circuitry of the machine, and re-injected into the delay line. The delay line in the 164P contains something around 1K-bits, which includes space for the working registers of the calculator, the four memory registers, and the 64-steps of program storage space. The rear-most (8th backplane slot) circuit board in the card cage contains the majority of the circuitry relating to operating the delay line, as well as the clock generation and timing circuitry.

The punched card reader

The punched card reader assembly is rather complex, with a complicated gear arrangement that takes the rotation of a small electric motor and drives a series of shafts with rubber rollers that drive the punched card through the assembly. The motor is triggered by a photo-transistor that detects the presence of a punched card placed into the entry slot. From that point, the card is drawn through the reader at a constant rate (about 1 inch per second) through the assembly. Down inside the reader, a series of three small incandescent lamps shine on the surface of the card, and a series of seven photo-transistors detect the absence or presence of punches by detecting light passing through holes in the card. Once the card passes through the reading station, it exits the machine through a slot in the back panel of the machine.

Rear view of the insides, showing power supply and punched card reader

The power supply of the 164P is similar to that its non-programmable relatives. The power supply is situated along the back of the machine, on a separate circuit board that contains the power supply rectifiers, filter capacitors, and regulation circuitry. The voltage regulation is performed by zener diode references that control power transistors. Some of the voltages that the supply provides are adjustable, with calibration performed at the factory, or in field-service situations. A rather compact transformer tucked underneath the punched card reader assembly steps down the AC line to a number of different AC voltages that the power supply uses to create the regulated DC voltages needed by the machine.

The machine exhibited here came with the original instruction manual. The foreword to the manual is dated August, 1970, which is probably close to the time that the machine was introduced to the market. The manual clearly states on the cover that it is the "English Edition", although this designation is somewhat comical when one reads the manual. The text is obviously translated (rather poorly) from the original Japanese-language operator's manual. In some parts of the text, it is almost impossible to figure out what the author is trying to convey because of the poor quality of the translation. The manual is printed on high-quality heavyweight glossy paper, and has plenty of illustrations and examples of use that help the user decipher the rather poor-quality text.

The 164P is quite good at detecting overflow conditions. Overflows of the main accumulator or memory registers are immediately flagged by lighting the "←" overflow indicator. The overflow indicator is also lit if two numeric keys are accidentally depressed at the same time, helping to avoid data entry problems due to mis-keying. When the overflow indicator is lit, the keyboard is inhibited except for the operation of the [C] key, which clears the overflow condition, and clears the working registers of the calculator. In the case of overflow of a memory accumulator, the previous content of the memory register is retained, and since the [C] key does not clear the memory registers, it is possible to easily recover from a calculation that causes a memory accumulator to overflow. The 164P does not fair as well in handling illegal operations. Division by zero causes the machine to go into a loop trying to solve the problem, even though it is impossible. Pressing the [C] key halts the relentless pursuit of a non-existent answer, and clears the calculator. The machine offers no error condition on the extraction of square root of a negative number. The result is returned as a negative number. For example, asking for the square root of -2 results in -1.41421356237309 (in the 14-decimal setting). During calculations, the state of the M1 indicator is inverted (e.g., if on, it is turned off, and if off, it is turned on) during the time the calculation is proceeding, apparently acting as a "busy" indicator. After the calculation completes, the state of the "M1" indicator is returned to the state it was in before the calculation began. There is no mention of this busy indication "feature" in the instruction manual. The Nixie displays are left active during calculation, resulting in the wonderful "dancing Nixies" effect as the calculation progresses.

Canon 164P Dust Cover

The operating speed of the 164P is similar to that of the Monroe 990, it's closest architectural relative in the museum. Addition and subtraction operate virtually instantly. 99999999 x 99999999 completes in about 300 milliseconds. The standard Old Calculator Web Museum benchmark of all nine's divided by 1 takes just under 1/2 second to complete. The square root operation is quite quick, with the longest extraction taking no more than about 400 milliseconds (four tenths of a second) to complete. It appears that execution of program steps in OPE mode has very little overhead. Each step is executed in turn immediately after the previous operation completes. A simple program performing constant entry of two 16-digit numbers each followed by a [CI] (Clear Indicator) command (36 steps total), followed by entry of a 2-digit constant and a "J" (Stop) code (for a total of 40 steps) takes approximately 1/2 second to execute, which translates out to about 12.5 milliseconds per step, or a maximum of about 80 simple operations per second.

Text and images Copyright ©1997-2023, Rick Bensene.

All content on this site is not to be gathered, scraped, replicated, or accesed in any way for any use in populating machine learning or intelligence (Artificial Intelligence, a.k.a. AI) databases, language models, graphs, or other AI-related data structures. Such use is a violation of copyright law. Any such access will be reported to the Oregon Attorney General and prosecuted to the fullest extent the law allows.