While working with the TI-80 graphing calculator, I've come across many units having the common issue of columns of pixels missing or nothing rendering at all. I started to wonder if I could replace the LCD with something else. While the TI-80 firmware is locked in ROM, we have the datasheet for the T6B79 LCD controller and conveniently all the LCD pins are wired to an unused ViewScreen port. With a bit of soldering, I can imagine wiring a ribbon or flex cable to this unused port and to some controller that would drive a different screen.
As a proof of concept, I wired in a Raspberry Pi Pico to this bus while keeping the LCD connected. The Pico just acts as a monitor waiting for LCD /CE to be asserted, observing the read/write transaction, and updating an internal state machine. Wired on the other side of the Pico is an SSD1306 244mm (0.96in) monochrome OLED screen where I push the pixels out.
A bit of the firmware architecture. I split the controller into 3 discrete state machines:
1. PIO block waiting for /CE assertion and reading all data and control pins at the appropriate time
2. Main thread running on Core 0, handling data from PIO, updating LCD state machine, managing /STB interrupts, and passing data to OLED controller
3. OLED controller running on Core 1. This likely could run on Core 0, but I didn't want to risk starving the PIO RX FIFO and missing a command.
Proof of concept video running both self test and Input exploit. Since the OLED (128x64) is larger than the TI-80 LCD (64x48), but not large enough to upscale, I added a pixel Texas and TI-80 text at the top. When /STB is asserted, the firmware draws a border.
I'm not sure how far I'll go with this concept, but I'd like to see if I can get a thin lithium ion battery to replace the power. I wired in level shifters into this proof of concept so the Pico can run at its 3.3V and the calculator 5-6V, but I've tested running the entire setup on 3.3V from the Pico itself and there were no issues. I'm also looking for a more appropriately sized OLED screen since this one is very small and not the correct ratio. Given how simple this is, firmware on RPi is likely overkill and a small CPLD or FPGA might be able to handle it.
As a proof of concept, I wired in a Raspberry Pi Pico to this bus while keeping the LCD connected. The Pico just acts as a monitor waiting for LCD /CE to be asserted, observing the read/write transaction, and updating an internal state machine. Wired on the other side of the Pico is an SSD1306 244mm (0.96in) monochrome OLED screen where I push the pixels out.
A bit of the firmware architecture. I split the controller into 3 discrete state machines:
1. PIO block waiting for /CE assertion and reading all data and control pins at the appropriate time
2. Main thread running on Core 0, handling data from PIO, updating LCD state machine, managing /STB interrupts, and passing data to OLED controller
3. OLED controller running on Core 1. This likely could run on Core 0, but I didn't want to risk starving the PIO RX FIFO and missing a command.
Proof of concept video running both self test and Input exploit. Since the OLED (128x64) is larger than the TI-80 LCD (64x48), but not large enough to upscale, I added a pixel Texas and TI-80 text at the top. When /STB is asserted, the firmware draws a border.
I'm not sure how far I'll go with this concept, but I'd like to see if I can get a thin lithium ion battery to replace the power. I wired in level shifters into this proof of concept so the Pico can run at its 3.3V and the calculator 5-6V, but I've tested running the entire setup on 3.3V from the Pico itself and there were no issues. I'm also looking for a more appropriately sized OLED screen since this one is very small and not the correct ratio. Given how simple this is, firmware on RPi is likely overkill and a small CPLD or FPGA might be able to handle it.










