TI-83 Link Protocol Guide v1.0 - Silent Variable Transfers
"Silent Linking" is a capability that Texas Instruments built into the TI-83, TI-83+, TI-86, TI-89, TI-92 and TI-92+. It enables the calculator to transfer data to and from a computer without any special preparation required on the calculator end. The only drawback to the silent linking method is that when using this protocol, the calculator will automatically overwrite any data in a variable that has the same name as one being sent to it. Any program that incorporates silent linking must check for this; otherwise data may be lost.
Because silent linking protocols are one-sided (i.e. the user interaction is solely on the computer), there are three different transfer sequences required. First a directory listing must be downloaded from the calculator in order to choose the variables to transfer or to check for duplicate names and out-of-memory conditions. Then, if variables are to be downloaded, a variable request action must be initiated by the computer. Finally, if variables are to be uploaded, a request-to-send action must be sent by the computer.
A directory listing is a list of all user variables in the calculator's memory and a number specifying how many bytes of free memory are left.
The protocol for requesting a directory listing is shown below. For information on packet formats, click here.
Step | Direction | Packet | ||
---|---|---|---|---|
1 |
|
|
|
REQ with data type=19h (see note under Type ID's for variable header format) |
2 |
|
ACK | ||
3 |
|
DATA: 2-byte free memory count (little-endian) | ||
4 |
|
ACK | ||
(Repeat steps 5 and 6 for all user variables in the calculator's memory) | ||||
5 |
|
VAR (with padded variable header) - one entry | ||
6 |
|
ACK | ||
7 |
|
EOT | ||
8 |
|
ACK |
Example:
PC: | 03 A2 0B 00 00 00 19 00 00 00 00 00 00 00 00 19 00 | Directory request |
TI: | 83 56 0B 00 | Acknowledgement of request |
83 15 02 00 66 5B C1 00 | Data: 23398 (5B66h) bytes of free memory | |
PC: | 03 56 00 00 | Acknowledgement of data |
TI: | 83 06 0B 00 09 00 00 41 00 00 00 00 00 00 00 4A 00 | Variable Header: Real Number "A" |
PC: | 03 56 00 00 | Acknowledgement of variable header |
TI: | 83 06 0B 00 09 00 00 42 00 00 00 00 00 00 00 4B 00 | Variable Header: Real Number "B" |
PC: | 03 56 00 00 | Acknowledgement of variable header |
TI: | 83 92 00 00 | No more variables |
PC: | 03 56 00 00 | Acknowledgement of EOT |
The protocol for requesting and receiving a variable from the calculator is shown below.
Step | Direction | Packet | ||
---|---|---|---|---|
1 |
|
|
|
REQ with expected header |
2 |
|
ACK (see note below) | ||
3 |
|
VAR with actual header | ||
4 |
|
ACK | ||
5 |
|
CTS | ||
6 |
|
ACK | ||
7 |
|
DATA | ||
8 |
|
ACK |
As with manual transfers, the data section contains the variable data. For information on variable formats, click here.
Example:
PC: | 03 A2 0B 00 09 00 00 41 00 00 00 00 00 00 00 4A 00 | Request Real Number "A" |
TI: | 83 56 0B 00 | Acknowledgement of request |
83 06 0B 00 09 00 00 41 00 00 00 00 00 00 00 4A 00 | Variable Header: Real Number "A" | |
PC: | 03 56 00 00 | Acknowledgement of variable header |
03 09 00 00 | Clear to send variable | |
TI: | 83 56 00 00 | Acknowledgement of CTS |
83 15 09 00 00 80 12 56 34 78 85 25 55 93 02 | Variable data: "1.2563478852555" | |
PC: | 03 56 00 00 | Acknowledgement of variable data |
The protocol for sending a variable to the calculator is shown below.
Step | Direction | Packet | ||
---|---|---|---|---|
1 |
|
|
|
RTS |
2 |
|
ACK | ||
3 |
|
CTS or SKIP/EXIT (see note below) | ||
4 |
|
ACK | ||
5 |
|
DATA | ||
6 |
|
ACK | ||
7 |
|
EOT |
Again, the data section contains the variable data.
Examples:
PC: | 03 C9 0B 00 09 00 00 41 00 00 00 00 00 00 00 4A 00 | Request to send Real Number "A" |
TI: | 83 56 0B 00 | Acknowledgement of request |
83 09 0B 00 | Clear to send variable | |
PC: | 03 56 00 00 | Acknowledgement of CTS |
03 15 09 00 00 80 12 56 34 78 85 25 55 93 02 | Variable data: "1.2563478852555" | |
TI: | 83 56 09 00 | Acknowledgement of data |
PC: | 03 92 00 00 | End of Transmission |
PC: | 03 C9 0B 00 09 00 00 42 00 00 00 00 00 00 00 4B 00 | Request to send Real Number "B" |
TI: | 83 56 0B 00 | Acknowledgement of request |
83 36 01 00 03 03 00 | Out of memory | |
PC: | 03 56 01 00 | Acknowledgement of out of memory |