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)