Canon CP2010 Calculator
This calculator is in the museum not because it is particularly noteworthy from a rarity or antiquity point of view, but because it uses a 'general purpose' microcontroller to implement its functionality rather than a custom microcontroller or a dedicated function calculator chip. It's also an interesting machine because of the unique packaging, where the keyboard (which also houses the main calculating 'guts' of the machine) is a separate unit, connected with an 8-conductor cable (with RJ-45 type connectors) to the base unit, which houses the power supply, display, and printer. The code to run the calculator is contained in two EPROMs mounted on the main board in the keyboard unit. The total size of the code is 6K-bytes, one 4K-byte EPROM, and one 2K-byte EPROM. It is my guess that the programmers were serious embedded systems programmers -- I'd guess that all of the code was written in assembly language, as high-level languages for microcontrollers were not very code-size efficient back in early 1981 when this machine appears to have been made (based on date codes on IC's). The main board also has four 2111 static RAM chips, which are used to provide working storage for the microcontroller, and a couple of 7400-series glue-logic chips.
The keyboard and main board inside the 'keyboard' unit.
The Canon CP2010 utilizes Intel 8048 microcontrollers to run the entire operation of the calculator. There are two 8048's, one in the 'base' unit, which controls the printer, display, and communications with the 'keyboard' unit, and the second 8048, in the keyboard unit, which handles the keyboard, does all of the math and housekeeping for the calculator, and communicates with the 'base' unit for display and printing functions. Both 8048 processors run off of crystal controlled 6MHz clocks. Given the general purpose nature of the microcontroller, even with optimized programming, some operations can take quite some time to perform. Square root operations can take anywhere from <1 second to up to 3 seconds to complete. Some of the financial functions can also churn for up to 3 to 4 seconds before giving a result. Because of the possible calculation delays, the designers implemented a 'type ahead' buffer, which buffers keypresses even when calculations are underway. This is useful from two angles, one, when operations are slow, it allows (within limits) the operator to not break their train of thought while the calculator does its work. The other aspect of this design is that the printer is rather slow (similar to those used in modern-day electronic cash-registers), and without a type-ahead function, users would spend way too much time waiting for the printer.
The display module removed from the 'base' unit
The calculator is quite capable, with a mix of some scientific (x^y, Natural Log, Square Root, e^x, 1/x), and a comprehensive selection of financial functions, including calculation all types of interest and payment problems, amortization, percentage functions with mark up and mark down calculations, a couple of methods of depreciation, and more which I haven't figured out yet (don't have a manual). The calculator can also do 'date arithmetic', such as determining the number of days between two dates, or determining a date when a number of days are added to or subtracted from a given date. The machine has a 14-digit Vacuum Fluorescent display module, with special positions at the left and rightmost ends of the display for indicating sign, overflow/error, and memory status. The machine calculates results to 12 displayable digits. If a calculation exceeds 12-digits, the machine switches to scientific mode, with an exponent that can range from -99 to 99. The calculator has 10 memory registers (0 through 9) which can be independently added to or subtracted from. A handy "List Regs" function prints the content of all of the memory registers on the printer.
View of the inside of the 'base' unit
The printer in the base unit is unusual, as it is a full featured dot-matrix impact printer, made by Epson. A combination black & red ribbon is used, so negative numbers are printed in red. The base unit also houses the display module and the linear power supply.