DATAMATH  CALCULATOR  MUSEUM

Texas Instruments TMS0600 Product Family

Features

With the TMS1802NC Texas Instruments announced on September 17, 1971 the first available standard calculator building block on a chip, it was later renamed into TMS0102. The chip integrates 3520-bit Read-Only program memory, a 182-bit Serial-Access memory and a decimal arithmetic logic unit as well as control, timing, and output decoders but no drivers for the display. This gives an overall complexity of roughly 5,000 transistors. 

Gordon Moore, the co-founder of Fairchild Semiconductor and Intel predicted already in 1965 that the numbers of transistors in Large-scale Integration (LSI) chips would double every year for the next 10 years. In 1975, looking forward to the next decade, he revised the forecast to doubling every two years, a compound annual growth rate (CAGR) of 41%. While Moore did not use empirical evidence in forecasting that the historical trend would continue, his prediction held since 1975 and has since become known as a "law". Main enablers were and are a combination of both reducing the size of the individual components (process shrink) and increasing the chip size (yield improvement). The manufacturing costs of an Integrated Circuit (IC) are calculated with:

IC cost = (Die cost + Testing cost + Packaging cost) / Final test yield

With the die cost roughly proportional to the die area, testing and packaging costs roughly proportional to the pin count, and the final test yield mostly inverse proportional to the die area, goals are well defined: Keep the die size as small as possible for a set of requirements agreed on. With both ROM (Read-Only Memory) and RWM (Read-Write Memory) sizes the main contributors to the die area of a single-chip calculator circuit and shift-register based data memory (SAM, Serial-Access Memory) of Register Processors denser than RAM (Random-Access Memory) of Digit Processors, Texas Instruments expanded the TMS0100 Product Family two years after its introduction into three different branches:

TMS0600: Increased ROM (384 Words * 11 Bits), Identical SAM (13 Digits Registers), external display drivers. Process shrink, higher functionality
TMS0700: Identical ROM (320 Words * 11 Bits), Identical SAM (13 Digits Registers), external display drivers. Process shrink, identical functionality, cost reduction of IC
TMS0800: Identical ROM (320 Words *11 Bits), Reduced SAM (11 Digits Registers), integrated segment drivers. Process shrink, reduced functionality, higher integration

Please notice that the members of the TMS0700 family were still marketed and marked as TMS0100 but both the die and the bottom of the chip package usually sport a TMS0700 marking.

While the TMS0600 architecture was based on the flexible design concept of the TMS0100 architecture with both programmable PLA and ROM techniques, only few design variations appeared. The first two designs of the small TMS0600 Product Family labeled TMS0601 and TMS0602 were just algorithm enhancements of existing designs labeled TMS0119 and TMS0120, respectively:

Features/
Device
[0]...[9]
[.]
[+] [−] [×] [÷]
[=]
[+/−] [C] [CE] [CONST] [F/2/4] [%] [Memory] [EE] [1/x] [x2] [√x] [PI] Display
Format
TMS0119 * *   * * *               E88888888
TMS0601 * *   * * * * *           E88888888
TMS0120 * * * *         * * * *   E88888888-88
TMS0602 * * * * *       * * * * * E88888888-88

Family Members and Applications

Type Calculators Keyboard Constant
(M-D-A-S)
Digits Fixed DP Rounding Special
Functions
Seg./Dig.
Blanking
(6,7,9)
Font
Seg. H Memory Entry
Overflow
Calculating
Overflow
Memory
Overflow
TMC0601
TMS0601
TI-2550 [+]−][=] 1-2-1-2 8 0-7, F 5/4 [M+][M−][MR][CM]
[%]
NONE
NONE
       
TMS0602 SR-11 [+][−][=] [ - K]
1-2-X-X
8+2 Float NONE [EE][+/−][1/x]
[x2][√x][PI]
NONE
NONE
       
TMS0603 Brother 827R (Version 2), Kovac LE-808M [+]−][=] 1-2-2-2 8 Float NONE [M+][M−][MR][CM]
[%][1/x][x2]
[X<>Y][X<>M]
S1, S13
S1, S13
Memory
(D8)
Others
Seg. H(D8)    
TMS0604 Dittel TMP608, Helec GT 539 [+=][−=] [ - K]
1-2-X-X
8 Float NONE [M+=][M−=][S]
[T][CM][ - ]
[%]
S1, S13
S1, S13
Memory
(D8)
Others
Seg. H(D8)    
TMC0605 Canon LE-81M [+][−][=] 1/2 8 Float NONE [T][ - ]
[√x][%±]
NONE
S1, S13
Memory
(D8)
Others
Seg. H(D8)      
TMS0611 Craig 4518, Kovac LE-808MR [+][−][=] 1/2 8 Float NONE [M+][M−][T]
[√x][%±]
S1, S13
S1, S13
     

Note: Learn more about the MOS Numbering System used by Texas Instruments' early MOS Chips.

Architecture

  Description Comments
Architecture Single-chip Calculator First Generation
Category Register Processor BCD-serial
Related TMS0700
TMS0800
Die-shrink
Integrated Segment Drivers
ROM Size 4,224 Bits 384 Words * 11 Bits
RAM Size 182 Bits 3 Registers * 13 Digits,
2 * 13 Bit-Flags
Outputs 11 Digits
 9 Segments
External Digit Drivers
External Segment Drivers
Inputs 4 Keyboard
0 Miscellaneous
Digit to Keyboard Scan-Matrix

Calculator Logic Implementation

TMS0601:

Capacity: Up to 8 digits (positive and negative)
Logic: Algebraic Chain Logic with Automatic Constant
   [2] [x] [3] [+] [4] [x] [5] [=] → '50.'
Number Entry: Right-justified number entry, entering a ninth digit is ignored
   [1] [2] [3] [4] [5] [6] [7] [8] [9] → '12345678.'
Decimal Point: First entered decimal point is used, additional decimal point entries are ignored
   [1] [.] [2] [.] [3] → '1.23'
Fixed Decimal Point: The decimal point can be set to [0 1 2 3 4 5 6 7 F] digits
   [0 1 2 3 4 5 6 7 F]: [1] [+=] [2] [+=] → '3.000'
Clear: Automatic power-up clear implemented. [C] key clears the whole calculator but the memory, [CE] key clears last entry of a number
   [1] [+] [2] [C] [3] [=] → '3.'; [1] [+] [2] [CE] [3] [=] → '4.'
Change Sign: Not supported. When performing multiplication or division, a negative value can be assigned by pressing the [−] key before entering the number
   [−] [2] [x] [3] [=] → '-   6.'; [−] [2] [x] [−] [3] [=] → '6.'
Number Display: Right-justified number display with leading-zero suppression
Negative Numbers: Negative numbers are shown with '-' at leftmost display position D11
Calculating Overflow: An overflow shows the result with the decimal point shifted 8 positions to the left and 'u' (or 'o' for negative numbers) in the leftmost position and is only recoverable with the [C] key
   [1] [2] [3] [4] [5] [x] [1] [2] [3] [4] [5] [=] → 'u1.5239902'
Memory: 4-key memory with [M+], [M−], [MR] and [CM] keys implemented. Memory store is indicated with 'upper n' in the leftmost position
   [CM] [3] [x] [2] [M+] → 'upper n   2.', [=] → 'upper n   6.', [C] → 'upper n   0.', [MR] → 'upper n   2.', [CM] → '2.'
Memory Overflow: A memory overflow keeps the displayed value in place and is indicated with '0.' (or '8' for negative numbers) in the leftmost position. It is only recoverable using the [CM] key
   [CM] [9] [9] [9] [9] [9] [9] [9] [8] [M+] → 'upper n 99999998.', [3] [M+] → '0   3.', [C] → '0   3.', [CM] → '3.'
Divide By Zero: A division of a positive or negative number by zero shows a '0' and 'u' in the leftmost position and is only recoverable using the [C] key
   [1] [:] [0] [=] → 'u   0.'; [−] [1] [:] [0] [=] → 'u   0.'
Timeout: Not supported
Rounding: Rounding of displayed calculating results is supported in Fixed decimal Point Mode
   [0 1 2 3 4 5 6 7 F]: [2] [0] [:] [3] [=] → '6.667'
Automatic Constant: Implemented for multiplication (1st number used as constant), division (2nd), addition (1st), and subtraction (2nd)
   [3] [x] [2] [=] [=] → '18.', [1] [=] → '3.'; [4] [x] [=] [=] → '64.'
   [3] [:] [2] [=] [=] → '0.75', [1] [=] → '0.5.'; [4] [:] [=] [=] → '0.25'
   [3] [+] [2] [=] [=] → '8.', [1] [=] → '4.'; [4] [+] [=] [=] → '12.'
   [3] [−] [2] [=] [=] → '-   1.', [1] [=] → '-   1.'; [4] [−] [=] [=] → '-   4.'
Percent Function: The [%] key followed by the [x] key allows with the [+] and [−] keys mark-up and discount calculations. Using the [=] key following the [%] key in multiplication leads to unexpected results
   [2] [0] [x] [5] [%] → '1.', [=] → '20.'
   [2] [0] [x] [5] [%] → '1.', [+] → '21.', [=] → '420.'
   [2] [0] [x] [5] [%] → '1.', [−] → '19.', [=] → '380.'
   [5] [:] [2] [0] [%] → '0.2', [=] → '25.'

Known Calculator Logic Bugs: None

TMS0602:

Capacity: Up to 8 digits (positive and negative) for mantissa and up 2 digits (positive and negative) for exponent
Logic: Algebraic Chain Logic with Constant
   [2] [x] [3] [+] [4] [x] [5] [=] → '50.'
Number Entry: Right-justified number entry, entering a ninth digit is ignored
   [1] [2] [3] [4] [5] [6] [7] [8] [9] → '12345678'
Decimal Point: First entered decimal point is used, additional decimal point entries are ignored
   [1] [.] [2] [.] [3] → '1.23'
Fixed Decimal Point: Fixed decimal point arithmetic is not supported
Clear: Automatic power-up clear implemented. [C] key clears the whole calculator, [CD] key clears last entry of a number
   [1] [+] [2] [C] [3] [=] → '3.'; [1] [+] [2] [CD] [3] [=] → '4.'
Change Sign: The change sign function can be used anytime for the mantissa before [EE] is pressed. Then it toggles the sign of the exponent 
   [+/−] [2] [x] [3] [+/−] [=] → '6.'; [2] [+/−] [EE] [3] [+/−] → '-   2 -03'
Number Display: Right-justified number display with leading-zero suppression
Negative Numbers: Negative numbers are shown with '-' for mantissa and Segment H for exponent at leftmost display position D11
Calculating Overflow: An overflow shows the result with the exponent shifted by 100 and 'C' (or 'E' for negative numbers) in the leftmost position and is recoverable with the [C] key
   [1] [.] [2] [3] [4] [5] [EE] [5] [0] [x] [1] [.] [2] [3] [4] [5] [EE] [6] [0] [=] → 'C1.5239902 10', [C] → '0'
Divide By Zero: A division of a positive or negative number by zero shows a 'C' and is recoverable with the [C] key
   [1] [:] [0] [=] → 'C   0.'; [+/−] [1] [:] [0] [=] → 'C   0.', [C] → '0'
Timeout: Not supported
Rounding: Rounding of displayed calculating results is not supported
   [2] [0] [:] [3] [=] → '6.6666666'
Constant: Automatic constant can be enabled with an external switch and is implemented for multiplication (1st number used as constant) and division (2nd)
   [- K] [3] [x] [2] [=] [=] → '6.', [1] [=] → '1.'; [4] [x] [=] [=] → '16.'
   [- K] [3] [x] [2] [=] [=] → '18.', [1] [=] → '3.'; [4] [x] [=] [=] → '64.'
   [- K] [3] [:] [2] [=] [=] → '0.75', [1] [=] → '0.5.'; [4] [:] [=] [=] → '0.25'
Reciprocal Overflow: Calculating the reciprocal of zero shows a zero and 'C' in the leftmost position and is recoverable with the [C] key
   [0] [1/x] → 'C   0.', [C] → '0'
Square Overflow: An overflow shows the result with the exponent shifted by 100 and 'C' in the leftmost position and is recoverable with the [C]
   [1] [.] [2] [3] [4] [5] [EE] [5] [5] [x2] → 'C1.5239902 10', [C] → '0
Negative Square Root: Negative square roots are not allowed and result in an overflow condition indicated with an 'E' in the leftmost position and is recoverable with the [C] key
   [8] [√x] → '2.8284271'; [+/−] [8] [√x] → 'E 2.828427'

Known Calculator Logic Bugs:

Calculator Overflow Bug: Calculator overflow is allowed and calculations can be continued by ignoring the overflow condition
   [1] [.] [2] [3] [4] [5] [EE] [5] [0] [x] [1] [.] [2] [3] [4] [5] [EE] [6] [0] [=] → 'C1.5239902 10', [:] [1] [0] [=] → 'C1.5239902 08'
   [1] [:] [0] [=] → 'C   0.', [+] [1] [=] → 'C
Negative Square Root Bug: Negative square roots are not allowed and result in a negative number with calculator overflow and calculations can be continued by ignoring the overflow condition
   [+/−] [8] [√x] → 'E 2.8284271', [+] [1] [=] → 'E 1.8284271'

TMS0603:

Capacity: Up to 8 digits (positive and negative)
Logic: Algebraic Chain Logic with Automatic Constant
   [2] [x] [3] [+] [4] [x] [5] [=] → '50.'
Number Entry: Right-justified number entry, entering a ninth digit is ignored
   [1] [2] [3] [4] [5] [6] [7] [8] [9] → '12345678.'
Decimal Point: First entered decimal point is used, additional decimal point entries are ignored
   [1] [.] [2] [.] [3] → '1.23'
Fixed Decimal Point: Fixed decimal point arithmetic is not supported
Decimal Alignment: Decimal alignment is supported for additions and subtractions
   [0] [.] [4] [5] [+] [0] [.] [5] [5] [=] → '1.00'
Clear: Automatic power-up clear implemented. [CA] key clears the whole calculator. First press of the [C/CE] key clears last entry of a number, second press clears the calculator but the memory
   [1] [+] [2] [C/CE] [3] [=] → '4.'; [1] [+] [2] [C/CE] [C/CE] [3] [=] → '3.'
Change Sign: Not supported. When performing multiplication or division, a negative value can be assigned by pressing the [−] key before entering the number
   [−] [2] [x] [3] [=] → '-   6.'; [−] [2] [x] [−] [3] [=] → '6.'
Number Display: Right-justified number display with leading-zero suppression
Negative Numbers: Negative numbers are shown with '-' at leftmost display position D11
Calculating Overflow: An overflow shows the result with the decimal point shifted 8 positions to the left and 'C' (or 'E' for negative numbers) in the leftmost position and is only recoverable with the [C/CE] or [CA] keys
   [1] [2] [3] [4] [5] [x] [1] [2] [3] [4] [5] [=] → 'C1.5239902'
Memory: 5-key memory with [M+], [M−], [MR], [CM] and [X<>M] keys implemented. Memory store is indicated with 'Segment H' in the position D8 (H8)
   [CM] [3] [x] [2] [M+] → 'H8   2.', [=] → 'H8   6.', [C] → 'H8   0.', [MR] → 'H8   2.', [CM] → '2.'
Auto-Summation: Auto-Summation can be enabled with an external switch and adds with each press of the [=] key the display result to the value already stored in the memory Memory store is indicated with '.' in the leftmost position
   [ - ] [CM] [3] [x] [2] [=] → 'H8   6.', [=] → 'H8   18.', [MR] → 'H8   24.'
Memory Overflow: A memory overflow is indicated with an 'upper n' in the leftmost position. It is recoverable using the [CA], [C/CE] or [CM] keys
   [CM] [9] [9] [9] [9] [9] [9] [9] [8] [M+] → 'H8 99999998.', [3] [M+] → 'upper n   3.', [C/CE] → 'upper n   0.', [CM] → '0.'
Divide By Zero: A division of a positive or negative number by zero shows a 'C' in the leftmost position and is only recoverable using the [CA] or [C/CE] keys
   [1] [:] [0] [=] → 'C   0.'; [−] [1] [:] [0] [=] → 'C   0.'
Timeout: Not supported
Rounding: Rounding of displayed calculating results is not supported
   [2] [0] [:] [3] [=] → '6.6666666'
Automatic Constant: Implemented for multiplication (1st number used as constant), division (2nd), addition (2nd), and subtraction (2nd)
   [3] [x] [2] [=] [=] → '18.', [1] [=] → '3.'; [4] [x] [=] [=] → '64.'
   [3] [:] [2] [=] [=] → '0.75', [1] [=] → '0.5.'; [4] [:] [=] [=] → '0.25'
   [3] [+] [2] [=] [=] → '7.', [1] [=] → '3.'; [4] [+] [=] [=] → '12.'
   [3] [−] [2] [=] [=] → '-   1.', [1] [=] → '-   1.'; [4] [−] [=] [=] → '-   4.'
Reciprocal Overflow: Calculating the reciprocal of zero shows a zero and 'C' in the leftmost position and is only recoverable with the [C/CE] or [CA] keys
   [0] [1/x] → 'C   0.', [C/CE] → '0.'
Square Overflow: An overflow shows the result with the decimal point shifted 8 positions to the left and 'C' in the leftmost position and is only recoverable with the [C/CE] or [CA] keys
   [1] [2] [3] [4] [5] [x2] → 'C1.5239902'
Percent Function: The [+] and [−] keys followed by the [%] key allows mark-up and discount calculations
   [2] [0] [+] [5] [%] → '1.', [=] → '21.'
   [2] [0] [-] [5] [%] → '1.', [=] → '19.'
Register Exchange: The [X<>Y] and [X<>M] keys allow the exchange of the display register with the operand register and memory register, respectively
   [1] [:] [2] → '2.', [X<>Y] → '1.', [=] → '2.'
   [1] [M+] [:] [2] [X<>M] → '1.', [=] → '1.'  

Known Calculator Logic Bugs:

Memory Overflow Bug: A memory overflows cleared with the [C/CE] key keeps the result with the decimal point shifted 8 positions to the left in the memory
   [CM] [9] [9] [9] [9] [9] [9] [9] [8] [M+] → 'H8 99999998.', [3] [M+] → 'upper n   3.', [C/CE] → 'upper n   0.', [C/CE] → 'H8   0.', [MR] → '1.0000000.'

TMS0604:

Capacity: Up to 8 digits (positive and negative)
Logic: Algebraic Adding Machine Logic with Constant
   [2] [x] [3] [+=] [4] [x] [5] [+=] → '20.'
Number Entry: Right-justified number entry, entering a ninth digit is ignored
   [1] [2] [3] [4] [5] [6] [7] [8] [9] → '12345678.'
Decimal Point: First entered decimal point is used, additional decimal point entries are ignored
   [1] [.] [2] [.] [3] → '1.23'
Fixed Decimal Point: Fixed decimal point arithmetic is not supported
Decimal Alignment: Decimal alignment is not supported
   [0] [.] [4] [5] [+=] [0] [.] [5] [5] [+=] → '1.'
Clear: Automatic power-up clear implemented. [CA] key clears the whole calculator. First press of the [C/CE] key clears last entry of a number, second press clears the calculator but the memory
   [1] [+=] [2] [C] [3] [+=] → '4.'; [1] [+=] [2] [C] [C] [3] [+=] → '3.'
Change Sign: Not supported. When performing multiplication or division, a negative value can be assigned by pressing the [−=] key after entering the number
   [2] [−=] [x] [3] [+=] → '-   6.'; [2] [−=] [x] [3] [−=] → '6.'
Number Display: Right-justified number display with leading-zero suppression
Negative Numbers: Negative numbers are shown with '-' at leftmost display position D11
Calculating Overflow: An overflow shows the result with the decimal point shifted 8 positions to the left and 'C' (or 'E' for negative numbers) in the leftmost position and is only recoverable with the [C/CE] or [CA] keys
   [1] [2] [3] [4] [5] [x] [1] [2] [3] [4] [5] [+=] → 'C1.5239902'
Memory: 5-key memory with [M+=], [M−=], [S], [T] and [CM] keys implemented. Memory store is indicated with 'Segment H' in the position D8 (H8)
   [CM] [3] [x] [2] [M+=] → 'H8   6.', [M+=] → 'H8   6.', [C/CE] → 'H8   0.', [S] → 'H8  12.', [C/CE] → 'H8   0.', [T] → '12.'
Auto-Summation: Auto-Summation can be enabled with an external switch and adds or subtracts with each press of the [+=] and [=] keys the display result to the value already stored in the memory. Memory store is indicated with 'Segment H' in the position D8 (H8)
   [ - ] [CM] [3] [x] [2] [+=] → 'H8   6.', [+=] → 'H8   12.', [S] → 'H8   12.'
Memory Overflow: A memory overflow is indicated with an 'upper n' in the leftmost position. It is recoverable using the [CA], [C/CE] or [CM] keys
   [CM] [9] [9] [9] [9] [9] [9] [9] [8] [M+=] → 'H8 99999998.', [3] [M+=] → 'upper n   3.', [C] → 'upper n   0.', [CM] → '0.'
Divide By Zero: A division of a positive or negative number by zero shows a 'C' in the leftmost position and is only recoverable using the [CA] or [C/CE] keys
   [1] [:] [0] [+=] → 'C   0.'; [1] [−=] [:] [0] [+=] → 'C   0.'
Timeout: Not supported
Rounding: Rounding of displayed calculating results is not supported
   [2] [0] [:] [3] [+=] → '6.6666666'
Constant: Automatic constant can be enabled with an external switch and is implemented for multiplication (1st number used as constant) and division (2nd)
   [- K] [3] [x] [2] [+=] [+=] → '9.', [1] [+=] → '10.'; [4] [x] [+=] [+=] → '20.'
   [- K] [3] [x] [2] [+=] [+=] → '18.', [1] [+=] → '3.'; [4] [x] [+=] [+=] → '64.'
   [- K] [3] [:] [2] [+=] [+=] → '0.75', [1] [+=] → '0.5.'; [4] [:] [+=] [+=] → '0.25'
Percent Function: The [%] key followed the [x] or [:] keys allows with the [+=] and [−=] keys mark-up and discount calculations
   [2] [0] [x] [5] [%] → '1.', [+=] → '21.'
   [2] [0] [x] [5] [%] → '1.', [−=] → '19.'
   [2] [0] [:] [5] [%] → '5.', [+=] → '21.052631'
   [2] [0] [:] [5] [%] → '5.', [−=] → '19.047619'

Known Calculator Logic Bugs:

Memory Overflow Bug: A memory overflows not cleared or cleared with the [C/CE] key keeps the result with the decimal point shifted 8 positions to the left in the memory
   [CM] [9] [9] [9] [9] [9] [9] [9] [8] [M+=] → 'H8 99999998.', [3] [M+=] → 'upper n   3.', [C/CE] → 'upper n   0.', [T] → '1.0000000.'

TMC0605:

Capacity: Up to 8 digits (positive and negative)
Logic: Algebraic Chain Logic with Automatic Constant
   [2] [x] [3] [+] [4] [x] [5] [=] → '50.'
Number Entry: Right-justified number entry, entering a ninth digit is ignored
   [1] [2] [3] [4] [5] [6] [7] [8] [9] → '12345678.'
Decimal Point: First entered decimal point is used, additional decimal point entries are ignored
   [1] [.] [2] [.] [3] → '1.23'
Fixed Decimal Point: Fixed decimal point arithmetic is not supported
Decimal Alignment: Decimal alignment is not supported
   [0] [.] [4] [5] [+] [0] [.] [5] [5] [=] → '1.'
Clear: Automatic power-up clear implemented. [C] key clears the whole calculator, [CE] key clears last entry of a number
   [1] [+] [2] [C] [3] [=] → '3.'; [1] [+] [2] [CE] [3] [=] → '4.'
Change Sign: Not supported. When performing multiplication or division, a negative value can be assigned by pressing the [−] key before entering the number
   [−] [2] [x] [3] [=] → '-   6.'; [−] [2] [x] [−] [3] [=] → '6.'
Number Display: Right-justified number display with leading-zero suppression
Negative Numbers: Negative numbers are shown with '-' at leftmost display position D11
Calculating Overflow: An overflow shows the result with the decimal point shifted 8 positions to the left and 'C' (or 'E' for negative numbers) in the leftmost position and is only recoverable with the [C] key
   [1] [2] [3] [4] [5] [x] [1] [2] [3] [4] [5] [=] → 'C1.5239902'
Memory: 1-key memory with [ - AM] switch and [T] key implemented. Memory store is indicated with 'Segment H' in the position D8 (H8)
Auto-Summation: Auto-Summation can be enabled with an external switch and adds with each press of the [=] key after a calculation the display result to the value already stored in the memory Memory store is indicated with '.' in the leftmost position
   [ - AM] [T] [3] [x] [2] [=] → 'H8   6.', [=] → 'H8   18.', [T] → '24.'
Memory Overflow: A memory overflow is indicated with a 'C' (or 'E' for negative numbers) in the leftmost position. It is only recoverable using the [C] key
   [T] [9] [9] [9] [9] [9] [9] [9] [8] [x] [1] [=] → 'H8 99999998.', [3] [x] [1] [=] → 'C3.0000000', [C] → 'H8   0.'
Divide By Zero: A division of a number by zero shows a 'C' (or 'E' for negative numbers) in the leftmost position and is only recoverable using the [C] key
   [1] [:] [0] [=] → 'C   0.'; [−] [1] [:] [0] [=] → 'E   0.'
Timeout: Not supported
Rounding: Rounding of displayed calculating results is not supported
   [2] [0] [:] [3] [=] → '6.6666666'
Automatic Constant: Implemented for multiplication (1st number used as constant) and division (2nd)
   [3] [x] [2] [=] [=] → '18.', [1] [=] → '3.'; [4] [x] [=] [=] → '64.'
   [3] [:] [2] [=] [=] → '0.75', [1] [=] → '0.5.'; [4] [:] [=] [=] → '0.25'
   [3] [+] [2] [=] [=] → '5.', [1] [=] → '1.'; [4] [+] [=] [=] → '4.'
   [3] [−] [2] [=] [=] → '1.', [1] [=] → '1.'; [4] [−] [=] [=] → '4.'
Negative Square Root: Negative square roots are not allowed and result in an overflow condition indicated with an 'E' in the leftmost position and is only recoverable with the [C] key
   [8] [√x] → '2.828427'; [−] [8] [√x] → 'E 2.828427'
Percent Function: The [%±] is implemented for addition and subtraction for add-on and discount calculations
   [2] [0] [x] [5] [%±] → '1.', [+] [=] → '21.'
   [2] [0] [x] [5] [%±] → '1.', [−] [=] → '19.'

Known Calculator Logic Bugs:

Memory Overflow Bug: A memory overflows cleared with the [C] key keeps the result with the decimal point shifted 8 positions to the left in the memory
   [T] [9] [9] [9] [9] [9] [9] [9] [8] [x] [1] [=] → 'H8 99999998.', [3] [x] [1] [=] → 'C3.0000000', [C] → 'H8   0.' [T] → '1.0000000.'

TMS0611:

Capacity: Up to 8 digits (positive and negative)
Logic: Algebraic Chain Logic with Automatic Constant
   [2] [x] [3] [+] [4] [x] [5] [=] → '50.'
Number Entry: Right-justified number entry, entering a ninth digit is ignored
   [1] [2] [3] [4] [5] [6] [7] [8] [9] → '12345678.'
Decimal Point: First entered decimal point is used, additional decimal point entries are ignored
   [1] [.] [2] [.] [3] → '1.23'
Fixed Decimal Point: Fixed decimal point arithmetic is not supported
Decimal Alignment: Decimal alignment is not supported
   [0] [.] [4] [5] [+] [0] [.] [5] [5] [=] → '1.'
Clear: Automatic power-up clear implemented. [C] key clears the whole calculator, [CE] key clears last entry of a number
   [1] [+] [2] [C] [3] [=] → '3.'; [1] [+] [2] [CE] [3] [=] → '4.'
Change Sign: Not supported. When performing multiplication or division, a negative value can be assigned by pressing the [−] key before entering the number
   [−] [2] [x] [3] [=] → '-   6.'; [−] [2] [x] [−] [3] [=] → '6.'
Number Display: Right-justified number display with leading-zero suppression
Negative Numbers: Negative numbers are shown with '-' at leftmost display position D11
Calculating Overflow: An overflow shows the result with the decimal point shifted 8 positions to the left and 'u' (or 'o' for negative numbers) in the leftmost position and is only recoverable with the [C] key
   [1] [2] [3] [4] [5] [x] [1] [2] [3] [4] [5] [=] → 'u1.5239902'
Memory: 3-key memory with [M+], [M] and [T] keys implemented. Memory store is indicated with 'Segment A' in the leftmost position (SA)
   [T] [3] [x] [2] [M+] → 'SA   2.', [=] → 'SA   6.', [C] → 'SA   0.', [T] → '2.'
Memory Overflow: A memory overflow is indicated with a 'u' (or 'o' for negative numbers) in the leftmost position. It is only recoverable using the [C] key
   [T] [9] [9] [9] [9] [9] [9] [9] [8] M+] → 'SA 99999998.', [3] [M+] → 'u1.0000000', [C] → '0.'
Divide By Zero: A division of a number by zero shows a 'u' (or 'o' for negative numbers) in the leftmost position and is only recoverable using the [C] key
   [1] [:] [0] [=] → 'u   0.'; [−] [1] [:] [0] [=] → 'o   0.'
Timeout: Not supported
Rounding: Rounding of displayed calculating results is not supported
   [2] [0] [:] [3] [=] → '6.6666666'
Automatic Constant: Implemented for multiplication (1st number used as constant) and division (2nd)
   [3] [x] [2] [=] [=] → '18.', [1] [=] → '3.'; [4] [x] [=] [=] → '64.'
   [3] [:] [2] [=] [=] → '0.75', [1] [=] → '0.5.'; [4] [:] [=] [=] → '0.25'
   [3] [+] [2] [=] [=] → '5.', [1] [=] → '1.'; [4] [+] [=] [=] → '4.'
   [3] [−] [2] [=] [=] → '1.', [1] [=] → '1.'; [4] [−] [=] [=] → '4.'
Percent Function: The [%±] is implemented for addition and subtraction for add-on and discount calculations
   [2] [0] [x] [5] [%±] → '1.', [+] [=] → '21.'
   [2] [0] [x] [5] [%±] → '1.', [−] [=] → '19.'

Known Calculator Logic Bugs:

Negative Square Root Bug: Negative square roots are allowed and result in a negative number
   [8] [√x] → '2.8284271'; [−] [8] [√x] → '-2.8284271'
Square Root Chain Bug: The result of a square root calculation can't be used as an operand in a chain calculation w/o pressing the [=] key before the function key
   [4] [√x] → '2.', [+] [1] [=] → '1.'
   [4] [√x] → '2.', [=] → '2.', [+] [1] [=] → '1.' 

Technical Specifications

Item Min Typ Max Unit Comments
VSS   0   V   
VDD -8.1 -7.2 -6.6 V   
VGG -16.2 -14.4 -13.2 V   
IDD   17 25 mA  
IGG   10 15 mA  
CK  100 250 400 kHz  Level between VSS and VGG       

DCM-50A Platform Compatibility

The Datamath Calculator Museum DCM-50A (Platform) supports the TMS0600 Product Family with its left-most TMS0100 Textool Test Socket set to DCM-50A (TMS0100) mode. Both Characterization of TMS0600 Calculator Circuits and Reverse-engineering of TMS0600 Calculator Circuits is supported by the DCM-50A (TMS0100).

Technology

The TMS0600 was manufactured in a 8 um metal gate PMOS process (metal width = 0.30 mil / 8.0 um, metal spacing = 0.35 mil / 9.0 um, diffusion width = 0.25 mil / 6.0 um, diffusion spacing = 0.35 mil / 9.0 um).

The die size of the TMS0600 is approximately 225 mils * 215 mils / 5.8 mm * 5.5 mm.

Packaging

The TMS0600 uses a standard 0.6” wide 28-pin DIP (Dual In-line Package with a 0.1” / 2.54 mm lead pitch).

Pin Configuration

Pin IO Function Pin IO Function
1 I Clock Input 28 V Common Voltage
2 I Keymatrix input P 27 I Keymatrix input Q
3 O Digit driver 1 (EXP LSD) 26 I Keymatrix input N
4 O Digit driver 2 (EXP MSD) 25 I Keymatrix input O
5 O Digit driver 3 (LSD) 24 O Segment driver DP
6 O Digit driver 4 23 O Segment driver H/G (EXP)
7 O Digit driver 5 22 O Segment driver G
8 O Digit driver 6 21 O Segment driver F
9 O Digit driver 7 20 O Segment driver E
10 O Digit driver 8 19 O Segment driver D
11 O Digit driver 9  18 O Segment driver C
12 O Digit driver 10 (MSD) 17 O Segment driver B
13 O Digit driver 11 (OVER) 16 O Segment driver A
14 V Negative Voltage VDD 15 V Negative Voltage VGG
The Segment drivers A-G and DP (Decimal Point) are connected to the display in the pictured way.
The Segment drivers A-G/H and DP (Decimal Point) are connected to the display in the pictured way. The TMS0602 repurposes the Segment H for the minus sign of the Exponent in the pictured way.

Keyboard Scan-Matrix

The keyboards of all calculators based on the TMS0600 Product Family consist of a x/y-matrix connected to the digit driver outputs D1-D11 and the keymatrix inputs KN (Numbers), KO (Operations), KP (Extended Functions), and KQ (Extended Memory Operations). In the fixed-point output format mode the position of the decimal point is selected with the KP (Decimal Point) input. The Constant/Chain switch is connected between D10-KQ (Constant).

Scanning is performed in D11 → D1 direction at a rate of about 584 Hz:

State Time = 3 Clocks = 0.012 ms @ CK=250 kHz
Digit Time = 13 States (1 Instruction Cycle) = 0.156 ms @ CK=250 kHz
Scan Time = 11 Digit Times (D1 to D11) = 1.712 ms @ CK=250 kHz
 

TMS0601

 

TMS0602

  KN KO KP KQ   KN KO KP KQ
D1 1 + [F 1]   D1 9    
D2 2 × [F 2]   D2 8 +    
D3 3 ÷ [F 3]   D3 7 ×    
D4 4 [F 4] M− D4 6 ÷    
D5 5 % [F 5]   D5 5 CD    
D6 6 M+ [F 6]   D6 4 EE x  
D7 7 = [F 7]   D7 3 +/−    
D8 8 CE   MR D8 2 = 1/x  
D9 9 .     D9 1 .    
D10 0 C [F 0] CM D10 0 PI x2 [- K]
D11         D11   C    

 

TMS0603

 

TMS0604

  KN KO KP KQ   KN KO KP KQ
D1 1 +     D1 1 S    
D2 2 ×     D2 2 ×    
D3 3 ÷     D3 3 ÷   [ - ]
D4 4     D4 4 +=    
D5 5 M+   X<>Y D5 5 −=    
D6 6 M−   CM D6 6 M+= T  
D7 7 RM   x2 D7 7 M−=    
D8 8 =   C/CE D8 8 % CM  
D9 9 .   1/x D9 9 .    
D10 0 X<>M     D10 0 C/CE   [ - K]
D11   CA [ - ] % D11   CA    

 

TMC0605

 

TMC0611

  KN KO KP KQ   KN KO KP KQ
D1 1 +     D1 1 +    
D2 2 ×     D2 2 ×    
D3 3 ÷     D3 3 ÷    
D4 4   [ - AM] D4 4    
D5 5 =     D5 5 M+    
D6 6 x     D6 6 M−    
D7 7 T     D7 7 x    
D8 8     D8 8 =  
D9 9 . C   D9 9 .    
D10 0 CE     D10 0 CE T  
D11         D11   C    

Display

Calculators based on the TMS0600 make use of either 9-digit or 12-digit LED (Light-Emitting-Diode) Displays with common cathode architecture.

horizontal rule

If you have additions to the above datasheet please email: joerg@datamath.org.

© Joerg Woerner, December 18, 2021. No reprints without written permission.