Hi guys,

I had posted a comment regarding a TI-81 ViewScreen and my nefarious plans for it over on Reddit r/calculators. I was encouraged to post here with what I found and what my setup looked like.


So for clarity, I'm interested in being able to read the data going to the screen of a TI-81. My method was to take a TI-81 ViewScreen pair, cut the ViewScreen off, butcher the TI-81, and solder in flying leads to go to my logic analyzer. And then let the logic analyzer collect enough data to decode the signals and follow up with a bit of custom hardware to remove the logic analyzer from the equation.

So I made three videos and put them up on YouTube.

The two shorts show the hardware, while this video shows the output from the logic analyzer: https://www.youtube.com/watch?v=aAIXVZRyF6Y

The hardware mod (short): https://www.youtube.com/shorts/i6PTvPNpElI

And what's inside the ViewScreen (short): https://www.youtube.com/shorts/ccAoEfTHOoo


Let me know if you have any questions.


Thanks,

John
Hey very cool, I love the 81 - what is your goal once you have the display data read?

Any more vids or learnings?
There is a way of dumping the TI-81 ROM using three programs that will crash the calculator and dump the ROM to the LCD. And there have been folks who would video the screen as the ROM was passing by, and by using OCR, re-created the contents of the ROM.

My approach could be used to bypass the video/OCR part of the process. Ideally the logic analyzer would be replaced by a Pi that would create the hex code on the fly once we figure out what signals do what. Think of it as a "Video Modem".

I posted the process here because twisted_nematic57 over at Reddit asked me to. It ties into something that they are interested in doing.

And it all started out as a suggestion that I made to Tiny as a possibly easier way of getting the dump.

Feel free to make suggestions or just ask if you need better pictures of the process. I have export data from the LA that I can share, but the files can be substantial in size.

And yes, there is another video:




Thanks,

John
I've sort of "inherited" this setup after rootboy sent it my way to take a look. After a little bit of messing around, I've got a few interesting findings to share! (Forgive me for any mistakes in terminology, this is my first foray into any sort of hardware stuff)
Thanks to some help in #cemetech, I ended up looking into the display connections on the TI-86 ASIC (documented here), which proved to be a good starting point.

For reference, I'm still working with the previous logic analyzer setup:


The frame (ch 7) and frame pulse (ch 8) lines were pretty intuitive to identify, and from there I also guessed the row pulse on channel 5 (which could be easily confirmed with a little math - there were always 64 per frame, so it seemed like a pretty safe assumption). The pixel data took me a little longer, and I ended up getting thrown off by the homescreen cursor. I assumed that it was drawn at the initial pixel, but there was in fact a column of empty pixels before the cursor which I missed.

Since channels 0 - 3 were the only ones that seemed to change depending on the contents of the screen, it seemed like a pretty safe guess that they were responsible for screen data. After throwing some pixels around on an empty graph screen, I determined the format, which seems to alternate between the four lines on each pixel. The first pixel is determined by a high (on) or low (off) voltage on channel 3, the second on channel 2, third on channel 1, fourth on channel 0, fifth on channel 3 again, and so on. The timing seems to be determined by channel 6, specifically when the line dips from high to low.

For reference, here's what the first row of the screen with just the cursor on it looks like:

(Actual pixels)
Nice work! Have you looked into getting either of the LAs to decode for you? And by dropping the unnecessary channels, you can store a longer capture. You might (most likely) have to read the ROM in chunks, but you should be able to use the end of one chunk as the trigger for the next one. But ideally the way to do it would be to dynamically decode the channels to characters and store those in a file.

BTW, has anyone tried taking the ROM off of the PCB and reading it directly?

In other news, I'm finishing up my WP 34s conversion from a 30b project (hopefully anyway). And then I'll be finishing up the ElDrG LAs and the imania EPROM programmers.
rootboy wrote:
Nice work! Have you looked into getting either of the LAs to decode for you? And by dropping the unnecessary channels, you can store a longer capture. You might (most likely) have to read the ROM in chunks, but you should be able to use the end of one chunk as the trigger for the next one. But ideally the way to do it would be to dynamically decode the channels to characters and store those in a file.

BTW, has anyone tried taking the ROM off of the PCB and reading it directly?

In other news, I'm finishing up my WP 34s conversion from a 30b project (hopefully anyway). And then I'll be finishing up the ElDrG LAs and the imania EPROM programmers.


Yes I've successfully dumped the ROM by taking it off the board and reading it with an Arduino. I'll have to dig up my notes on pinout and code for reading.

Also I have been successful using the contrast pin that goes to the LCD board to dump the ROM but the fastest method was by just soldering to the GPIO pins on the ASIC (which are unused on the 81) as outlined here: https://github.com/tr1p1ea/ROMDUMP81
  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 1 of 1
» All times are UTC - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement