- Reverse Engineering the TI-80 Graphing Calculator
- 14 Aug 2025 09:58:18 pm
- Last edited by queueRAM on 26 Aug 2025 12:24:22 am; edited 1 time in total
I took a stab at reverse engineering some of the TI-80 hardware to shed more light on the circuitry and pins and produce a schematic and PCB layout that can be used as reference.
To recap, the hardware architecture contains four main devices: CPU ASIC, external ROM, external RAM, and LCD controller. These devices are wired together on a shared 8-bit bidirectional parallel bus and 15 bit address bus. There are separate chip select/chip enable control pins going to the individual ROM, RAM, LCD modules.
Full writeup and schematics are available in this repository: https://github.com/queueRAM/ti80_calculator
PCB layout and Schematics
Full schematic is included in this repository along with the notes used to markup the PCB photos. The schematic is broken into different sections grouping related components. It does not include all the individual test points, but includes the ones of interest. Full schematic is included in the repository as TI-80 schematic PDF or KiCad.
The PCB was reverse engineered using clean photos of the front and back PCB and marking up the traces in Inkscape and probing individual pins and vias. This was then captured in KiCad PCB layout in the repo. The repo contains both the KiCad PCB capture and the Inkscape SVG with layers for front, back, vias, labels, and notes.
Interesting findings:
(1) External ROM circuitry supports up to 16 address bits from the CPU, but A15 is tied high through J15 so only 32k are accessible. The ROM is likely only 32K.
(2) Pin 80 is unconnected, but strobes low for the duration of every external bus access (ROM, RAM, LCD). I named this pin `FRAME` in the schematic. Below is an example logic trace of it in action.
(3) Pin 52 is connected to a pull-up resistor R2 (1MΩ) so likely some sort of input. Tying this to GND doesn’t have obvious side effects. Need to investigate further.
(4) Pin 50 is wired out to a test pad, but not anything else. This is likely some test pin for debug or factory usage, but I have not observed anything interesting on it yet. Need to investigate further.
(5) J5 shorts one of the diodes used for reverse battery protection. This diode would like cause additional voltage drop and calculator becoming unusable due to the lower voltage powering the LCD.
(6) Calculator remains powered with only one battery installed, preserving the contents of SRAM. The slide switch in the battery compartment keeps /RST asserted while changing batteries. However, if manually de-asserted, the CPU, RAM, and ROM continue to run properly at 3V. The contrast of the LCD makes it unusable in this state. As an example, I was able to dump the external ROM at 3.3V.
(7) J17/J18 control which CPU pin is connected to ROM /CE (fitted J17 = pin 18, not-fitted J18 = pin 43). Pin 43 is closer to the other chip enable pins for LCD (41) and RAM (42). Not sure why there were options or why pin 18 was preferable.
I very much appreciate the documentation and assistance from the experts such as Zeroko who have looked at this before me. Adding most of my references here:
* ti80doc - TI-80 calculator HW/FW documentation
* ti80emu - TI-80 emulator
* DataMath | Texas Instruments TI-80 ViewScreen™
* MAME | TI-80 calculator CPU
* TI Planet | dumping TI-80
* Cemetech | Dumping TI-80 ROM directly
* Cemetech | TI-80 Hardware Revisions and ViewScreenification™
* Silicon Prawn | T6M53A die photos
* onidev | T6M53A die photos
2025-Aug-26 edit: updated to rev3 schematic and PCB renderings
To recap, the hardware architecture contains four main devices: CPU ASIC, external ROM, external RAM, and LCD controller. These devices are wired together on a shared 8-bit bidirectional parallel bus and 15 bit address bus. There are separate chip select/chip enable control pins going to the individual ROM, RAM, LCD modules.
Full writeup and schematics are available in this repository: https://github.com/queueRAM/ti80_calculator
PCB layout and Schematics
Full schematic is included in this repository along with the notes used to markup the PCB photos. The schematic is broken into different sections grouping related components. It does not include all the individual test points, but includes the ones of interest. Full schematic is included in the repository as TI-80 schematic PDF or KiCad.
The PCB was reverse engineered using clean photos of the front and back PCB and marking up the traces in Inkscape and probing individual pins and vias. This was then captured in KiCad PCB layout in the repo. The repo contains both the KiCad PCB capture and the Inkscape SVG with layers for front, back, vias, labels, and notes.
Interesting findings:
(1) External ROM circuitry supports up to 16 address bits from the CPU, but A15 is tied high through J15 so only 32k are accessible. The ROM is likely only 32K.
(2) Pin 80 is unconnected, but strobes low for the duration of every external bus access (ROM, RAM, LCD). I named this pin `FRAME` in the schematic. Below is an example logic trace of it in action.
(3) Pin 52 is connected to a pull-up resistor R2 (1MΩ) so likely some sort of input. Tying this to GND doesn’t have obvious side effects. Need to investigate further.
(4) Pin 50 is wired out to a test pad, but not anything else. This is likely some test pin for debug or factory usage, but I have not observed anything interesting on it yet. Need to investigate further.
(5) J5 shorts one of the diodes used for reverse battery protection. This diode would like cause additional voltage drop and calculator becoming unusable due to the lower voltage powering the LCD.
(6) Calculator remains powered with only one battery installed, preserving the contents of SRAM. The slide switch in the battery compartment keeps /RST asserted while changing batteries. However, if manually de-asserted, the CPU, RAM, and ROM continue to run properly at 3V. The contrast of the LCD makes it unusable in this state. As an example, I was able to dump the external ROM at 3.3V.
(7) J17/J18 control which CPU pin is connected to ROM /CE (fitted J17 = pin 18, not-fitted J18 = pin 43). Pin 43 is closer to the other chip enable pins for LCD (41) and RAM (42). Not sure why there were options or why pin 18 was preferable.
I very much appreciate the documentation and assistance from the experts such as Zeroko who have looked at this before me. Adding most of my references here:
* ti80doc - TI-80 calculator HW/FW documentation
* ti80emu - TI-80 emulator
* DataMath | Texas Instruments TI-80 ViewScreen™
* MAME | TI-80 calculator CPU
* TI Planet | dumping TI-80
* Cemetech | Dumping TI-80 ROM directly
* Cemetech | TI-80 Hardware Revisions and ViewScreenification™
* Silicon Prawn | T6M53A die photos
* onidev | T6M53A die photos
2025-Aug-26 edit: updated to rev3 schematic and PCB renderings
