DATAMATH  CALCULATOR  MUSEUM

The Birth of DCM-0500

Early in Summer 2023 a member of the TI-59 Community contacted the Datamath Calculator Museum and shared his sorrows with us. He is volunteering to type out the various programs of the TI-59 Solid State Software Modules™ (SSSMs) to make them available for future generations using TI-59 Emulators on Smartphones. Over the course of just a handful selected programs from his large collection of SSSMs he encountered multiple challenges:

Manually copying the decimal Key Codes of the TI-59 programs from the Seven-Segment Display is error prone
Some programs do not fit into the memory of the calculator – they are either too long or see next bullet point
When the TI-59 is loading a particular program from the SSSM into its memory and this program is calling another program from the SSSM, it is copied into the memory, too and often resulting in an overflow
Some programs can be copied into the memory of the calculator but don't operate out of the memory reliable
Some programs can't be copied at all into the TI-59 memory due to a "copy protection" mechanism and hence work only with the SSSM inserted into a physical calculator

Here at the Datamath Calculator Museum we are dedicated to understand and document Texas Instruments' earliest calculators and created the DCM-50A Platform to dive deeper into the TMS0100 single-chip calculator circuits used with the famous TI-2500 Datamath and many, many other calculators between 1971 and 1974. Our original plan was to start with the TMS0100 and its sibling TMS0700 before looking into their single-chip successors TMS0600, TMS0800, and TMS1000 before diving into the TMS0200/300/400 Building Blocks for Desktop Calculators (1973-1974). Next would have been the TMS0500 Building Blocks for Scientific and Programmable Calculators (1974-1978).

Well, a short email changed these planes in Summer 2023 completely and we decided to look into the TMC0540 CROM (Customer Read-Only Memory) that is used in the tiny Solid State Software Modules plugged into the TI-59 and its stablemates TI-58/TI-58C.

Peeking already into the schematics (on transistor level) of the TMS0800 single-chip calculator circuit and realizing that its internal program memory can be read out electronically and learning from Sean Riddle and others how to "dump" ROMs without decapping their packages and reading bit by bit under a microscope, we had a very simple thought: If a TI-59 developed in the Seventies can read and execute the Keycodes from the SSSM, a modern 21st Century microcomputer should be able at least to read them. No need to execute them, this is why other enthusiasts develop TI-59 Emulators.

Please enjoy some of the pictures we took from our humble beginnings of understanding the tiny Solid State Software Modules to the celebration of the DCM-0500 Platform. Yes, celebration! While studying the TMS0500 Building Blocks, we realized that the "Slide Rule" calculator SR-50 was the first product using the TMC0501 Arithmetic Chip and matching TMC0521 SCOM (Scanning Read-Only Memory) Chip. With the SR-50 officially introduced on January 15th, 1974 we revised the timeline for our DCM-0500 to coincidence with the 50th Anniversary of TI's greatest calculator development leading the way to the eternal TI-59.

A common approach to fully understand a component within a product is called reverse-engineering, basically disassembling the product into its individual parts and and observing and analyzing its operation before modeling it as proof of a complete and correct understanding. Observing and analyzing of the TMC0540 CROM Chip used in the Solid State Software Module should be rather easy and straightforward – this Integrated Circuit (IC) has only 8 pins:

VSS, VDD, VGG: Power Supply (-10.0V and -15.8V)
PHI1, PHI2, IDLE: Two-Phase Clock (227.5 kHz) and Sync Signal for TMC0501E State Times (S0)
IRG, EXT: Serial Inter-chip communication (Instructions and Address/Data)

In a first step we removed the SSSM from a "Donor" TI-58, placed it on a solderless breadboard and wired it to the 8 contacts of the TI-58's SSSM bay. Next we connected a Hewlett-Packard HP-54645D Mixed-Signal Oscilloscope (MSO) to the Clock and Data Pins – just to realize that our own TMC0540 "Datasheet" was wrong and we corrected it accordingly! With the pinning of the TMC0540 identical to the TMS0560 Bare-ROM of the TMS0500 Building Blocks, we assumed that the function of the pins is identical, too. It is obvious that the TMC0540 is not shifting out its Key Codes through the IRG pin, but it is obvious, too that the TMC0540 is not the primary Program Memory of the TMC0501E Enhanced Arithmetic Chip. These are the TMC0520, TMC0530, TMC0560, and TMC0580 Chips. And studying some of Texas Instruments' patent applications about the TI-59 reveals that they differentiate between "First ROM" for Program Memory and "Second ROM" for Key Code memory.

During Program Memory access a 13-bit Address is shifted out serially on the EXT pin from the TMC0501E Enhanced Arithmetic Chip to at least one "First ROM" which could have a capacity between 1,024 13-bit Words or 2,560 13-bit Words and responds on its IRG pin. The 13-bit Address allows a maximum program size of 8,192 Words and each of the "First ROMs" has an integrated Address Decoder and its data output (IRG pin) is only enabled if the 13-bit Address matches. This feature allows multiplexing the output pins of multiple First ROMs, only one output would be enabled while all others are disabled. Modern serial Inter-chip communication protocols for CMOS (Complementary Metal-Oxide-Semiconductor) Chips use so-called Tri-State outputs than can be completely isolated from the bus, the TMS0500 Building Blocks are manufactured in PMOS (P-channel Metal–Oxide–Semiconductor) technology and use Open-Drain outputs with an external pull-down resistor. Without data on the bus the pull-down resistor defines a logical zero (low) while an enabled First ROM can force the bus line to high while outputting a logical one.

With the data flowing always in one direction during Program Memory access, Address from TMC0501E on its EXT pin the to First ROM and receiving Data (Instruction) on its IRG pin, but Data (Key Codes) read from the Second ROM on the very same EXT pin, we needed to find a way to detect the "direction" of the information on the bidirectional EXT pin. Without having so-called Chip-Select pins dedicated for this purpose, we used a pair of diodes to electrically separate the multiplexed EXT pin of the TI-58 from the EXT pin of the TMC0541 retrieved from Texas Instruments' Master Library and observed the direction of the data flow with analog comparators to gain a better understanding under what conditions the TMC0541 is "talking".

We immediately realized that while the TMC0501E Enhanced Arithmetic Chip received its instructions from the First ROM on the IRG pin, the TMC0540 CROM actively listens into these instructions and decodes four of them. One of the four instructions is loading the 4-digit BCD Address (0000-4999) of the desired Key Code with the EXT pin serially into the TMC0540 in four chunks of 4 Bits, each. Another instruction is reading the first 4 Bits of the 2-digits BCD Key Code from the EXT pin of the TMC0540 while a third instruction is reading the next 4 Bits of the Key Code and increments the Address Pointer of the TMC0540 to the next Key Code. Meaning we would need to listen to the serial 16-bit Words on the IRG and EXT signals synchronized with the internal TMC0501E State Times and decode the four commands prompting the TMC0540 to respond. Sounds like a lot of manual work to program a Logic Analyzer for these tasks and we consequently decided to breadboard an Arduino Nano Every microcomputer with some Level Converters from the PMOS signals of the TI-58 to CMOS signals of the Arduino together with two 16-bit Shift Registers and some logic to count the internal State Times of the TMC0501E.


First tests of the setup revealed immediately that the Arduino Nano Every is too slow to follow the pace of the TI-58 with its instruction cycle of about 70 us and we switched to a beefier Arduino DUE. The first iteration of our "TMS0500 DATA Recorder" Software running on the Arduino DUE simply logged the information from the IRG and EXT pins and listed it in a human readable form in a terminal window. We immediately recognized the first Instructions of the TI-58 accessed after a power-up sequence and eventually recorded the two pins while the TI-58 was accessing Program ML-24 Unit Conversions (1) of the Master Library.

Seeing now the TMC0501E instructions to load the 4-digit BCD Address into the TMC0541 and observing how the 2-digit BCD Key Codes are read out, we started to emulate these instructions on an Arduino Nano Every microcomputer and converted the signals to the PMOS levels of -10.0 Volt and -15.8 Volt necessary for the TMC0541. Another step was replacing the generic "TMS0500 DATA Recorder" Software running on the Arduino DUE with a TMC0540 specific "ROM Recorder" Software to generate listings of the Key Codes together with their corresponding Addresses. Proof-of-Concept was easily given with the help of a patent application filed by Texas Instruments in 1977 and providing a complete listing of the TMC0541 "Program Codes".

Adding an adapter with pogo pins to contact the TMC0540 used with the Solid State Software Modules without opening the modules was the last step before we could fulfill the request of our TI-59 Enthusiast to provide a ROM Image of the Surveying Module.

Four weekends into this side project we reached our first goal and started Recording of ROM Images of many other Solid State Software Modules for release on January 15th, 2024 – the 50th Anniversary of the SR-50 introducing the amazing TMS0500 Building Blocks used with the TI Programmable 58 and many more TI calculators.

Talking about the SR-50 with its TMC0521 SCOM (Scanning Read-Only Memory) Chip, we always wanted to know what Constants this device is holding to achieve the phenomenal accuracy of the implemented algorithm for the transcendental functions. Okay, the Constants are communicated over a 4-bit wide, bidirectional bus. Do we really want to breadboard another four 16-bit Shift Registers?

And why did the accuracy of the SR-50 algorithm improve over time while the HP-35 algorithm got worse over time? Maybe we should provide the Texas Instruments Calculator Community some Recorded ROM Images of the different software revisions of the TMC0521 ROM. And how comes that the SR-51-II based on the TMC0501E and TMC0581 DSCOM (Double Scanning Read-Only Memory) doesn't use a clock oscillator on its printed circuit board?

Enter DCM-0500 Platform.

The End.

Update: We took over spring break 2024 a "Python Crash Course (A Hands-on, Project-based Introduction to Programming by Eric Matthes)" and developed as first projects a Disassembler for both SR-56 Key Codes and TI-58/58C/59 Key Codes and started providing Key Code Program Listings of selected Solid State Software Modules.

IMPORTANT NOTE: This information is provided as a service of the Datamath Calculator Museum to enthusiasts of early Texas Instruments calculators and please be aware that the Copyright of the Software transcribed in the ROM Images, the underlying algorithm or application might be owned by Texas Instruments or other third parties. The commercial use of the published Recorded ROM Images is strictly prohibited. In case of questions please contact us using the email address listed in the footer of this webpage.


horizontal rule

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

© Joerg Woerner, December 17, 2023. No reprints without written permission.