Last Change
25 May 2000

TI-Link Protocol


About Me

Light Dimming
Rotary Encoders
TI Calculators
Power Supply
LCD Projects




Email Me


What I am doing
I have recently begun to investigate the TI-Link protocol, so I can enable my PIC projects to communicate w/ the calculator using TI's basic.  Assembly programming would also (probably) be supported without the overhead of emulating the TI-Link protocol.  Some project ideas that have tickled my fancy are a clock/calendar/alarm/sound PIC (permanently mounted inside the calc, with a piezo speaker and simple tone support), a simple digital multimeter, a DMX-512 controller or troubleshooter, and a really simple expander type gizmo, also controlled from basic.

But right now I'm still dealing w/ the protocol of the TI-89.  It is very similar to the TI-92+, but the key mapping (used in some protocol commands) is different, and there are probably another few minor things.

I have only captured a number of communications between calculators and the graphlink program and a calculator.  I have not yet dissected them, but those familiar with TI-86 protocol and TI-92 protocol will immediately see obvious similarities. Documention about other protocols which I am using can be found here.

What the protocol consists of
You should know that there are really three distinct parts to what I am referring to as the TI-Link protocol.  First there is an electrical spec, which I have done little with, second there is the packet protocol, which is the major focus (at this point) of my investigation, and third, there is a variable protocol, which I will attack next.  Every graphing calculator shares the electrical spec and packet protocol, but each calculator has differences, both major and minor, when it comes to the variable protocol.

Description of included files
Below are two text files, one which is a capture of TI's Graphlink program to Calculator communications, the other is communications between the calculator and Rusty Wagner's Virtual TI emulator (I used a beta for the below runs, I will start using v2.0a4 this week.  Hopefully better results) running on a computer.  Neither is exhaustive, I did not try every variable combination, etc.   Right now I am trying to figure out the most efficient way of dealing with and processing packets.  Dealing with and processing variables will be my next problem.

Both files' communication listings are in hexadecimal.  They both include descriptions of setup and transfers about to take place, and should be pretty straightforward once you look at them.  Any questions should be referred to me.

Calc to Graphlink (text, 19k)

Calc to Emulator (text, 1k)

Both files Zipped (zip, 3k)

How I am getting this info
I have two computers, we'll label them A and B for now.  Computer A has the graphlink or emulator program running on it.  Computer B has my VB program running on it.  A:COM1 is connected to B:COM1 via null-modem cable, B:COM2 is connected to TI's GraphLink cable, which is connected to my TI-89.  B is running my Visual Basic program which shuttles data from/to com1 to/from com2 transparently.  It also toggles various status lines as necessary so it is completely transparent to the other computer and the graphlink cable.  Each time data is sent from either device, my program identifies it by the com port it comes from, and displays the device it came from and the hexadecimal listing of data that was shuttled through it.  I don't have the program here for download yet, as I want to make it a bit more flexible (change com ports and settings, etc) before I do.

I hope this is helpful, I will put up more as it comes.  Email me for comments and such.

Everything on/in this site is copyright Adam Davis, 1999, except where otherwise noted
[an error occurred while processing this directive]