![]() |
DATAMATH CALCULATOR MUSEUM |
Cal-Tex Semiconductor, Inc. was founded in 1971 by former Texas Instruments and Nortec employees in Richardson, Texas, as a manufacturer of integrated circuits (ICs) for electronic calculators. The company later established operations in Santa Clara, California, with financial backing from Japan's Eiko Business Machine Co., Ltd., better known under its Unitrex brand.
When Mostek introduced in November 1970 with the MK6010 the Worlds first "single-chip calculator circuit", it was sold exclusively to Nippon Calculating Machine Corp of Japan for their Busicom Model 120-DM small desktop calculator, also known as the Busicom Junior.
Cal-Tex quickly recognized the gap in the market and moved to address it by developing the CT5001 as a drop-in replacement for Mostek's MK6010. The company formally introduced the CT5001 in November 1971, with first silicon becoming available by January 1972.
As a "socket-compatible" replacement of the MK6010 and MK5011, the CT5001 inherited a few oddities of the original Busicom Junior calculator:
|
Two power supply rails, VDD = -12.5 V and VGG = -22.5 V Two-phase clock with 25 kHz nominal frequency Negative logic for keyboard inputs BCD-encoded numeral inputs with "Zero" encoded as 'BCD 1010' or "Ten" with "No Key" encoded as 'BCD 0000' Negative logic of Digit and Segment outputs for easy interfacing to low-voltage VF Displays Fix-point arithmetic with decimal point set at position 0, 2, 3, or 4 [C] key performing a hardware reset, in combination with the negative logic of the Digit and Segment outputs resulting in displaying '000000000000' while the key is depressed Dividing numbers by Zero results in an infinite loop that can be interrupted only with the [C] key Displaying '0.0.0.0.0.0.0.0.0.0.0.0.' for input or calculating overflow Buggy behavior when switching decimal point position amid pending calculations |
The only difference we could find so far is the behavior of the [C] key:
|
MK6010 - Displaying '888888888888' while the [C] key is depressed CT5001 - Displaying '000000000000' while the [C] key is depressed |
Operating both chips with our DCM-50A PLAYGROUND and having a logic analyzer connect to the relevant signals, reveals even an identical "signature" of the Segment Outputs of the MK6010 and CT5001 during the infinite loop after a Division by Zero.
To completely understand the similarities in the implementation of the Mostek MK6010 (November 1970) and Cal-Tex CT5001 (November 1971), we decided here at the Datamath Calculator Museum to remove the lids of their ceramic packages and have their silicon dies photographed under a microscope with a magnification large enough to observe details smaller than 1 Micron (um).
Well, we can assure you that the two designs are 99.9% identical and we don't need to involve lawyers. In the United States the Semiconductor Chip Protection Act (SCPA) of 1984 created a special IP right called a
'mask work', giving 10 years of exclusive rights over the chip layout. The European Union followed in 1986/1987 and International since 1989 with the so-called Washington Treaty or WIPO (World Intellectual Property Organization) Treaty on Intellectual Property in Respect of Integrated Circuits.
The 'mask work' from Mostek is representing the physical implementation of the electronic circuitry of the MK6010, a custom-specific design with Nippon Calculating Machine Corp of Japan providing the original schematic diagrams of their Busicom Model 120-DM calculator. Mostek converted this circuitry from a mix of JMOS and Diode-Resistor logic to PMOS (p-channel Metaloxide Semiconductor) technology, before designing the production masks for the MK6010 chip. We couldn't locate any Mostek patent application from the 1969-1970 timeframe for the specific implementation of the MK6010 circuitry in their PMOS process.
QUICK-LINK to Cal-Tex Calculator Integrated Circuits.
| Type | Calculators | Keyboard | Constant (M-D-A-S) |
Digits | Fixed DP | Rounding | Special Functions |
Seg./Dig. Blanking |
(6,7,9) Font |
Seg. H | Entry Overflow Calculating Overflow |
| CT5001 | Unitrex 1200 (Type 27) | [+=][−=] | X-X-X-X | 12 | [0,2,3,4] | None | None | NONE S1, S8 |
| Description | Comments | |
| Architecture | Single-chip Calculator | First Generation |
| Category | Register Processor | Bit-serial |
| Related |
MK6010 MK5011 CT5012 CT5002 |
Original Mostek design Commercial Mostek product Low-voltage version LED-optimized design |
| ROM Size | n.a. | |
| RAM Size | 108 Bits | 2 Registers * 48 Bits (12 Digits) 12 Status Bits |
| Outputs | 12 Digits 9 Segments 1 Status |
External VFD Digit Drivers External VFD Segment Drivers Sign |
| Inputs | 4 Keyboard 6 Keyboard 2 Decimal Select 1 Clear |
Numerals BCD Functions Discrete 0, 2, 3, 4 Active Low |
Capacity: Up to 12 digits (positive and negative)
Logic: Algebraic Adding Machine Logic
[2] [x] [3] [+=] [4] [x] [5] [+=] → '20.'
Number Entry: Right-justified number entry, entering a thirteenth digit is resulting in an overflow condition and is only recoverable using the [C] key
[0 2 3 4]: [1] [2] [3] [4] [5] [6] [7] [8] [9] [0] [1] [2] [3] → '0.0.0.0.0.0.0.0.0.0.0.0.'
Decimal Point: First entered decimal point is used, additional decimal point entries are ignored
[0 2 3 4]: [1] [.] [2] [.] [3] → '1.23'
Fixed Decimal Point: The decimal point can be set to [0 2 3 4] digits
[0 2 3 4]: [1] [+=] [2] [+=] → '3.000'
Clear: Automatic power-up clear implemented. [C] key clears the whole calculator, [CE] key clears last entry of a number
[0 2 3 4]: [1] [+=] [2] [C] [3] [+=] → '3.'; [1] [+=] [2] [CE] [3] [+=] → '4.'
Change Sign: Not supported. When performing multiplication or division, a negative value can only be assigned to the first number by pressing the [−=] key after entering the number
[0 2 3 4]: [2] [−=] [x] [3] [+=] → '-6.'; [2] [x] [3] [−=] → '-1.'
Number Display: Right-justified number display with leading-zero suppression
Negative Numbers: Negative numbers are shown with an active signal at a dedicated output pin and usually connected to a discrete LED indicator
Calculating Overflow: An overflow results in displaying all zeros with all decimal points lit and is only recoverable using the [C] key
[0 2 3 4]: [1] [2] [3] [4] [5] [x] [1] [2] [3] [4] [5] [+=] → '0.0.0.0.0.0.0.0.0.0.0.0.', [C] → '0.0000'
Divide By Zero: A division of a positive or negative number by zero results in an infinity loop with the display blanked and is only recoverable using the [C] key
[0 2 3 4]: [1] [:] [0] [+=] → ' ', [C] → '0.'
Display Test: Pressing the [C] or [CE] key lit up all 12 digits of the display
[C] → '000000000000', [CE] → '000000000000'
Rounding: Rounding of displayed calculating results is not supported
[0 2 3 4]: [2] [0] [:] [3] [+=] → '6.666'
Known Calculator Logic Bugs:
Negative Zero Bug : Certain calculations result in displaying a negative zero
[0 2 3 4]: [1] [−=] → '-1.', [1] [+=] → '-0.'
Divide to Negative Zero Bug: Certain calculations result in displaying a negative zero
[0 2 3 4]: [0] [.] [0] [0] [0] [1] [−=] → '-0.0001', [:] [1] [0] [+=] → '-0.0000'
Fix Point Switch Bug: Changing the position of the Fix Point Switch during number entry leads to unexpected results
[0 2 3 4]: [1] [.] [2] [3] → '1.23', [0 2 3 4]: [+=] → '1230000'
Twelfth Digit Multiplication Bug: Multiplications with the sum of digits for multiplicand and multiplier larger than twelve result in an overflow
[0 2 3 4]: [1] [2] [3] [4] [5] [6] [7] [8] [9] [0] [1] [2] [x] → '123456789012.', [1] [+=] → '0.0.0.0.0.0.0.0.0.0.0.0.'
[0 2 3 4]: [6] [5] [4] [3] [2] [1] [x] → '654321.', [6] [5] [4] [3] [2] [1] [+=] → '428135971041.'
Twelfth Digit Division Bug: Divisions with the dividend or the divisor larger than eleven digits result in an overflow
[0 2 3 4]: [1] [2] [3] [4] [5] [6] [7] [8] [9] [0] [1] [2] [:] → '123456789012.', [1] [+=] → '0.0.0.0.0.0.0.0.0.0.0.0.'
[0 2 3 4]: [1] [:] → '1.', [1] [2] [3] [4] [5] [6] [7] [8] [9] [0] [1] [2] [+=] → '0.0.0.0.0.0.0.0.0.0.0.0.'
| Item | Min | Typ | Max | Unit | Comments |
| VSS | 0 | V | |||
| VDD | -12.5 | V | |||
| VGG | -22.5 | V | |||
| IDD | 2.0 | mA | REXT = 100k Ohm, Segment- and | ||
| IGG | 1.0 | mA | Digit-Driver Load 100k Ohm to VDD | ||
| Ext. CK | 25 | kHz | Two-phase clock | ||
| CP1 Width | 10 | us | Active low | ||
| CP2 Width | 10 | us | Active low | ||
| CP1 to CP2 Delay | 10 | us | Between pulses |
DISPLAY TESTING
Pulling the KC or KCE Inputs of the CT5001 to VDD or VGG (log.1) by pressing the [C] or [CE] keys is resulting in all Segment Outputs SA to SH activated for the 12 Digit Outputs D1 to D12, displaying '000000000000'.
Pulling the KC or KCE Inputs of the CT5001 back to VSS (log.0) by releasing the [C] or [CE] clears the display.
CALCULATING OVERFLOW
An overflow condition of the CT5001 is resulting in the Segment Outputs SA to SF and SDP activated for the 12 Digit Outputs D1 to D12, displaying '0.0.0.0.0.0.0.0.0.0.0.0.'.
The overflow condition is only recoverable using the [C] key.
DIVIDE BY ZERO LOOP
A division of a positive or negative number by zero of the CT5001 is resulting in the Segment Outputs SA to SF disabled, SG and SH activated and SDP pulsing while the 12 Digit Outputs D1 to D12 are disabled, hence blanking the display.
The Divide by Zero Loop is only recoverable using the [C] key.
DIGIT DRIVERS
The CT5001 single-chip calculator circuit is manufactured in a PMOS process and its Digit Scanning Outputs are high-side PMOS transistors. For easy interfacing to low-voltage VFDs (Vacuum Fluorescent Displays) or high-voltage gas-discharge displays, an activated digit corresponds to a logical 0 or open output. All other, non-activated digits have the PMOS transistors turned on. We characterized here at the Datamath Calculator Museum the Digit Driver Output pin D2 of an CT5001 and measured an output resistance of around 130 Ohm at an Output Voltage of -1.0 V.
SEGMENT DRIVERS
The CT5001 single-chip calculator circuit is manufactured in a PMOS process and its Segment Outputs are high-side PMOS transistors. For easy interfacing to low-voltage VFDs or high-voltage gas-discharge displays, an activated segment corresponds to a logical 0 or open output. We characterized here at the Datamath Calculator Museum the Segment Driver Output pin SG of an CT5001 and measured an output resistance of 130 Ohm at an Output Voltage of -1.0 V.
The Datamath Calculator Museum DCM-50A (PLAYGROUND) supports the Characterization of the CT5001 single-chip calculator circuit using the DCM-50A Playground MK6010 Adapter mounted on top of the DCM-50A PG Digit Inverter Frame Carrier and connected to the DCM-50A PG KBD102 Keyboard configured to MK6010 Mode. The voltage selector jumper on the MK6010 Adapter must be set to "high-voltage" (VGG = 24 V). The optional DCM-50A Playground Digilent I/O Extender supports Characterization and Reverse-engineering of CT5001 single-chip calculator circuits.
The CT5001 using a standard 0.6 wide 40-pin CDIP (Ceramic Dual In-line Package with a 0.1 / 2.54 mm lead pitch).
The CT5001 was manufactured in a 10 um metal gate PMOS process (metal width = 0.40 mil / 10.0 um, metal spacing = 0.40 mil / 10.0 um, diffusion width = 0.40 mil / 10.0 um, diffusion spacing = 0.40 mil / 10.0 um).
The die size of the CT5001 is approximately 185 mils * 170 mils / 4.7 mm * 4.3 mm.
| Pin | IO | Function | Pin | IO | Function |
| 1 | V | Common Voltage VSS | 40 | I | Digit driver 9 (MSD) |
| 2 | I | Clock Phase 2 | 39 | V | Negative Voltage VDD |
| 3 | V | Negative Voltage VGG | 38 | O | Segment driver H |
| 4 | O | Sign driver | 37 | O | Segment driver G |
| 5 | I | Encoded Key input '1' | 36 | O | Segment driver F |
| 6 | I | Encoded Key input '2' | 35 | O | Segment driver E |
| 7 | I | Encoded Key input '4' | 34 | O | Segment driver D |
| 8 | I | Encoded Key input '8' | 33 | O | Segment driver C |
| 9 | I | Key input [CE] | 32 | O | Segment driver B |
| 10 | I | Key input [C] | 31 | O | Segment driver A |
| 11 | I | Key input [−=] | 30 | O | Segment driver DP |
| 12 | I | Key input [x] | 29 | I | Decimal Point Sel.2 |
| 13 | I | Key input [:] | 28 | I | Decimal Point Sel.1 |
| 14 | I | Key input [+=] | 27 | O | Digit driver 12 (MSD) |
| 15 | I | Key input [.] | 26 | O | Digit driver 11 |
| 16 | O | Digit driver 1 (LSD) | 25 | O | Digit driver 10 |
| 17 | O | Digit driver 2 | 24 | O | Digit driver 9 |
| 18 | O | Digit driver 3 | 23 | O | Digit driver 8 |
| 19 | O | Digit driver 4 | 22 | O | Digit driver 7 |
| 20 | O | Digit driver 5 | 21 | O | Digit driver 6 |
| The Segment drivers A-H and DP (Decimal Point) are connected to the display in the pictured way. | ![]() |
The keyboards of all calculators based on the CT5001 consist of 10 number keys connected between VDD or VGG (log.1) with a diode matrix to the key inputs KN1 to KN4 (Numbers) and 7 function keys connected between VDD or VGG (log.1) to discrete key inputs. The position of the Decimal Point is selected with 2 additional switch inputs DP1 and DP2.
CT5001 | ||||
| KEY | KN8 | KN4 | KN2 | KN1 |
| [1] | - | - | - | log.1 |
| [2] | - | - | log.1 | - |
| [3] | - | - | log.1 | log.1 |
| [4] | - | log.1 | - | - |
| [5] | - | log.1 | - | log.1 |
| [6] | - | log.1 | log.1 | - |
| [7] | - | log.1 | log.1 | log.1 |
| [8] | log.1 | - | - | - |
| [9] | log.1 | - | - | log.1 |
| [0] | log.1 | - | log.1 | - |
CT5001 | |||||||
| KEY | KC | KCE | KD | KM | KS | KAE | KP |
| [C] | log.1 | - | - | - | - | - | - |
| [CE] | - | log.1 | - | - | - | - | - |
| [÷] | - | - | log.1 | - | - | - | - |
| [×] | - | - | - | log.1 | - | - | - |
| [−=] | - | - | - | - | log.1 | - | - |
| [+=] | - | - | - | - | - | log.1 | - |
| [.] | - | - | - | - | - | - | log.1 |
CT5001 | ||
| SWITCH | DP2 | DP1 |
| [4-3-2-0] | - | - |
| [4-3-2-0] | - | log.1 |
| [4-3-2-0] | log.1 | - |
| [4-3-2-0] | log.1 | log.1 |
Scanning is performed in D1 → D12 direction at a rate of about 480 Hz:
|
State Time = 0.5 Clocks = 0.020 ms @ CK=25 kHz Digit Time = 8 Clocks = 0.160 ms @ CK=25 kHz Scan Time = 13 Digit Times (D1 to D13 with D13 a dead cycle) = 2.08 ms @ CK=25 kHz |
Calculators based on the CT5001 typically make use of 12-digit low-voltage VFDs (Vacuum Fluorescent Displays) or high-voltage gas-discharge displays.
If you have additions to the above datasheet please email: joerg@datamath.org.
© Joerg Woerner, September 29, 2024. No reprints
without written permission.