Monroe 1655 Programmable Desktop Calculator
The Monroe 1655 is an example of Monroe's line of electronic calculators from the early 1970's that were actually designed and built by Computer Design Corporation, also known as Compucorp. Computer Design Corp. developed the design for a sophisticated Large Scale Integration IC chipset that predated the microprocessor, but provided much the same functionalty as early microprocessors. Monroe had a wide range of machines in both the 1600 (Nixie Tube Display) and 1700(Printing) series calculators that spanned disciplines including scientific, mathematics and others. See the essay on the history and machines of Computer Design Corporation for more information.
The 1655 is an entry-level scientific programmable desktop calculator. It provides a good assortment of built-in mathematical operations, as well as the ability for the user to create their own programs to perform customized calculations. As with all of the calculators in the Monroe 1600/1700-Series machines, the 1655 uses Computer Design Corporation's first-generation "HTL" chipset. This chipset, which consists of 19 different chips, provides a microcoded engine that carries out the operation of the calculator based on a program contained in Read-Only Memory (ROM) chips. The 1655 provides up to 256 steps of learn-mode program memory, ten direct access memory storage registers, simple unconditional branching capabilities, and a Nixie-tube display which can display numbers both in standard and scientific notation.
The machine displays up to ten significant digits, along with an exponent of -99 to +99 for scientific notation. Internally calculations are carried out with 14 digits of precision, providing additional accuracy for all calculations. The display is made from genuine Burroughs Nixie tubes, with 1/2" tall digits, and right-hand decimal point. A special sign tube, containing both a + and - sign, is positioned to the left of both the mantissa and exponent displays. The display is left-justified, with insignificant leading zeroes automatically eliminated. Trailing zeroes are always displayed. Digit entry is from left-to-right with a blanked digit serving as a cursor to indicate the position of the next-entered digit. A switch on the control panel switches between automatic display (with the display switching to scientific mode for numbers that have an exponent greater than 106), and forced scientific mode where all numbers are displayed in scientific notation.
Profile view of Monroe 1655
At the left end of the display panel is a neon indicator (marked ERROR) that illuminates in the event of an error condition, and at the right end is an overflow indicator (marked OFLOW) that lights when the calculating range of the calculator has been exceeded. The ERROR indicator lights when an illegal operation is attempted. For example, dividing by zero, extracting the square root of a negative number, or other operations that are mathematically improper. When such a condition is detected, the keyboard is logically locked out so that kepresses are ignored. Pressing the [RESET] or [CLEAR x] key will clear the display to "+0.00000000" and extinguish the error indication. Likewise, if the numeric capacity of the calculator is exceeded, the OFLOW indicator will light. This condition is detected both on numeric entry as well as during calculation. When an overflow is detected (except in some limited circumstances), the OFLOW lamp lights, the display is cleared to "+0.000000000", and the keyboard is logically locked until the [RESET] or [CLEAR x] key is pressed. There are some cases, for example, performing a factorial operation which exceedes the capacity of the machine, the OFLOW indicator will light, but the calculation will continue until completed, resulting in an answer that is of no use, and can't be carried forward because the keyboard is locked out.
Display during numeric entry. Note blanked nixie tube acting as a cursor.
During numeric entry, it is possible to enter up to 14 significant digits before an overflow condition will be flagged, and still have these digits avialable for use in further calculation, although the digits are not displayed. The first ten significant digits entered will be displayed as normal. Any additional digits entered after the tenth digit will be entered into the calculator, but not displayed. For example, entering 3.1415926535898 (14 significant digits) will result in this value being retained in its entirety for calculation. After entering this sequence, the display will show "+3.141592653", but the additional digits of "5898" are retained internally. To show how this works, entering this sequence, then performing [-]  [X]   [=] will give the result of "+1.415926535", showing that the extra digits are indeed retained. The fact that the machine actually allows entry of more digits that can be displayed in unusual for electronic calculators. It is also interesting to note that during numeric entry, the machine displays a cursor in the form of a blanked digit which indicates to the user where the next digit will be entered into the display. Since digit entry on these machines is left to right (with many calculators entering digits on the right end of the display), this display method helps the user better keep track of where they are in the numeric entry process.
As with all machines from Monroe/Compucorp that use the HTL chipset, the 1655 operates with algebraic entry, although the machines do not provide parenthesis keys for grouping math operations, nor do they operate using the mathematical rules of precedence.
The 1655 provides a solid complement of built-in math functions primarily related to scientific types of applications. These functions include: base 10 Logarithm; base e Logarithm; factorial; square root; 1/x; and ax; sine and cosine (which accept their input in degrees); inverse sine and cosine (which, oddly, provide their output in radians); radian to degree conversion, and angular calculations.
Detail view of the Monroe 1655 keyboard
The keyboard is grouped into five different areas. The left-most group of eight keys provides memory functions, the [2ND FUNC] key that provides access to the alternate function of two-funtion keys, memory register 7 and 8 summation functions, and the [RESET] key, which performs a limited master clear of the machine. The [RESET] key clears the display register to "+0.000000000", clearing any pending operations, resetting the ERROR and OFLOW state, and setting memory registers 7, 8, and 9 to zero. The content of memory registers 0 through 6 are not disturbed by the [RESET] key. The [RESET] key will also interrupt execution of a running program, leaving the program counter at the current location.
The next group of four keys provide access to the two numerical constants e and π, entering exponent entry mode [EXP], and the [CLEAR x] key clears the ERROR and OFLOW states, clears any pending operations, resets the display register to "+0.000000000", and leaves all memory registers untouched.
The center grouping of keys contain the numeric input keypad, as well as the [CHG SIGN] key, which toggles the sign between + and - on each depression. It can be used at any time during mantissa and exponent entry to change the sign.
The next group of keys contain the basic math functions, along with the [ax] key for raising a number to any power, and a key used for performing calculations involving polar/rectangular conversions.
The last group of keys contains the more advanced math functions, including reciprocal, logarithms, factorial, square root, degree/radian conversion, trig, and summation functions. Some of these keys have dual functions (e.g., the trigonometric functions) where the second function result can be recalled by pressing the [2ND FUNC] key. The Compucorp HTL-chipset calculators are unusual in that when a dual function key is pressed, both of the calculations are performed, and the result of the primary key function is displayed, with the result of the secondary function recalled by pressing the [2ND FUNC] key.
The 1655 provides ten memory registers, identified by a single digit ranging from 0 through 9. A number on the display is stored directly into a memory register by pressing the [↑[ ]] key, followed by a single digit on the numeric keyboard indicating which register should receive the value. The [↕[ ]] key exchanges the content of the selected memory register with the content of the display. The content of any memory register may be recalled by pressing the [↓[ ]] key followed by the memory register number. The [↑] key provides a single-key means for storing the number in the display into memory register zero. Memory registers 7, 8 and 9 are used for some of the summation functions the machine has, accumulating totals such as item counts, sums, and sums of squares of lists of numbers entered into the machine. The memory registers are volatile, meaning that the content of memories is not retained when the machine is powered off. Some versions of the operating microcode for these calculators do not clear memory registers 0 through 6 at power-on, allowing the non-deterministic content to be called to the display, which can result in some unusual displays and odd behavior of the calculator if calculations are performed with the result.
Serial Number Tag for Monroe 1655. Note Rockwell International Property Tag
The 1655 shares the same mechanical design of all of the first-generation Computer Design Corporation-designed Nixie display calculators. All of the machines share the same lower cabinet (different color variations exist), chassis, power supply assembly, display assembly, backplane circuit board, and circuit card cage. The top part of the cabinet varies depending on the marketer of the machine. Compucorp calculators use a slightly less bulky upper cabinet than the Monroe machines, which have a chunky look to them. Both the upper and lower cabinet pieces are made from thick plastic castings with a glued-in keyboard bezel and display panel. The keyboard assemblies are of the same basic design, using high-quality gold contact keyswitches. Keyboard layouts vary in key placement and number of keys, depending on the model of machine and its capabilities. Keyboard keycaps are made of high-quality injection-molded plastic with key legends that are molded into the key to prevent them from wearing off.
The "I/O LOGIC" Circuit Board
The exhibited Monroe 1655 is of early construction, with chips dated in the third quarter of 1970. Two circuit boards make up the calculating engine of the machine. The top-most board is called the "I/O LOGIC" board, and contains the main control and arithmetic logic, input and output logic, and what Computer Design Corp. called the "LEMP" (an acronym for LEarn Mode Programmer) as well as the program step memory used by the LEMP. LEMP memory consists of a base of two chips (for base-equipped machines with 128 steps of program memory) or four chips for machines equipped with the expanded 256-step program memory. The exhibited machine is configured with 256 steps of program memory.
The "ROM LOGIC" Circuit Board
The bottom circuit board is called the "ROM LOGIC" circuit board, which contains ROM addressing and control logic, memory chips for keeping track of the state of the CPU and holding the content of the calculator's ten memory registers, and two sets of ROMs; one set consisting of two 2K-bit ROMs (4K bits total) that contains the common microcode for all of the HTL-chipset calculators; and up to seven 4K-bit ROMs that contain the specific microcode that gives each model calculator its own functional personality. Early versions of the Computer Design Corporation HTL chipset-based calculators used a ROM LOGIC board that is populated with AMI-made ROM chips that were contained in 24 pin ceramic packages. Later, the ROM LOGIC circuit board was redesigned to use ROM chips made by Texas Instruments that were packaged in 18-pin plastic packages.
The keyboard and display subsystem are modular, and are shared between the various models of the series of machines. The display circuit board holds the Nixie tubes along with discrete transistor drivers for the tubes. The display subsystem connects to the main logic via a cable with an edge connector on the end which plugs into the "I/O Logic" circuit board. The keyboard uses high-quality contact-type switch modules with removable keycaps. The keycaps have moulded in nomenclature. The keyboard assembly connects to the "I/O Logic" board via a cable with edge connector termination. The power supply of the machine is a conventional transformer-based linear supply with transistor regulation. The power supply resides behind the display panel, taking up the rearmost area of the cabinet.
The 1655 has relatively extensive
programming functionality. The machine uses classic "Learn Mode Programming",
representing keypresses are stored in program memory in a sequential fashion,
and when the program is run, the keypresses are essentially played back
to the calculator as fast as the machine can perform the operations.
A separate set of keys and indicators make up the controls for the
programmer functions. The programmer control panel has keys for
putting the calculator into learn mode, starting or resuming
execution of a program, selecting display of program address or operation
code, allowing single-stepping of programs, and basic program control
functions such as branch instructions, halting programs, stopping programs
for data entry, and subroutine control functions. The program memory has
capacity to hold 128 or 256 keypresses (depending on the option configuration
of the machine), and is volatile, meaning that the program
in memory is lost when power is removed. The program memory is not
merged with numeric storage (memory) registers, so it is not directly
possible to have self-modifying code. Program memory is
grouped into 16 groups of 16 instructions each for purposes of branching.
"GO TO" instructions can only branch on 16-step boundaries, meaning that
programmer has to waste steps to assure that branch destinations fall
on these boundaries. The machine has a built-in six-level stack for
subroutine linkage. Any time a branch instruction is executed, the address
following the branch instruction is pushed onto the stack. A special
instruction called "RCLP" pops the top value off the stack into the program
counter, effectively returning to the instruction following the branch to the
subroutine. Some math operations use the subroutine stack as temporary
storage, meaning that programmers must be careful with function usage inside
Learn-mode branching capabilities are quite rudimentary, with instructions
unconditionally branching to one of the 16 branch points (via the [TO()] key
on the programmer's keyboard) within the program step space. There are
two conditional branches, one that branches if the [SENSE] key on the
programmer's keyboard is depressed, and another that will branch if the number
in the display is less than or equal to zero. An optional
punched card reader can be plugged into a female DB-25 connector on the
back panel of the calculator that allows programs to be loaded into the
machine via special punched cards. The punched cards allow access to all of
the possible 512 operation codes (nine bits are used for operation codes,
but only the low eight bits are shown on the programmer's console display).
Through the additional operation codes allowed to be entered via punched cards,
more powerful programming can be performed, including more detailed
conditional and branching capabilities, access to internal ROM microcode
routines, and other advanced functions that are not available through
standard keyboard-based learn mode programming.
As with all of the calculators built with Compucorp's HTL-series chipset,
the 1655 is quite fast. Most basic math operations complete virtually
instantaneously, but more complex operations, such as the factorial
function, can take up to three seconds to complete. During calculations
and program execution, the Nixie display is left active, resulting in
interesting patterns in the display during longer calculations.
As with all of the calculators built with Compucorp's HTL-series chipset, the 1655 is quite fast. Most basic math operations complete virtually instantaneously, but more complex operations, such as the factorial function, can take up to three seconds to complete. During calculations and program execution, the Nixie display is left active, resulting in interesting patterns in the display during longer calculations.