TI-83 Link Protocol Guide v1.0 - Packet formats


Packet Formats

Texas Instruments calculators always send data and responses in self-contained "packets."
Packets have the following format:
Note - all 2-byte integers are transmitted little-endian Intel-style (least significant byte first).

Offset Length Description
0 1 byte Machine ID byte
1 1 byte Command ID byte
2 2 bytes Length of data (see note below)
4 n bytes Data (if attached)
4+n 2 bytes Checksum (if data is attached)
Note - The "Length of data" element may not be equal to zero if the packet contains no data. In this case, the Command ID byte will indicate that the packet contains no data.

The Machine ID Byte

The Machine ID byte identifies the machine that is sending the packet. It can have one of the following values:
Value Description
02h Computer sending TI-82 data
03h Computer sending TI-83 data
82h TI-82
83h TI-83
Note: The TI-83 accepts TI-82 Machine ID bytes in order to transfer data between a TI-82 and a TI-83.

The Command ID Byte

The Command ID byte identifies the request or response that the machine is sending. It can have one of the following values:

Value Description Data Included
06h Variable Header (VAR) A variable header
09h Clear to send (CTS) None
15h Data packet (DATA) Screenshot/variable/backup data
36h Skip/Exit (SKIP/EXIT) A one-byte rejection code (see codes below)
56h Acknowledge (ACK) None
5Ah Checksum Error (ERR)
The previous packet must be sent again.
None
6Dh Silent - Request Screenshot (SCR) None
92h End of Transmission (EOT) None
A2h Silent - Request Variable (REQ) A variable header
C9h Silent - Request to Send Variable (RTS) A variable header

Rejection codes (used with Command ID 36h) can have one of the following values:

Value Description
01h EXIT - The entire transmission has been cancelled.
02h SKIP - The current variable has been skipped.
03h OUT OF MEMORY (silent transmissions only) - The receiving calculator is out of memory.

The Checksum

The checksum is a 16-bit value used to verify the integrity of the data in the packet. It only present if data is present.
The checksum is calculated by taking the lower 16 bits of the sum of the data bytes, as shown below:

int calculateChecksum(unsigned char* data, unsigned short datalength) {
unsigned short x, checksum;
for(x=0; x<datalength; x++) {
checksum+=data[x]; //overflow automatically limits to 16 bits
}
return checksum;
}


Variable Headers

A Variable header contains information about one variable in the calculator.
Offset Length Description
0 2 bytes Size of actual variable data, in bytes
2 1 byte Type ID Byte (see type ID's below)
3 8 bytes Variable name, padded on the right with NULL characters (0h). This field is always tokenized.
Note: These bytes only make up the "data" section of the packet.
Note2:
- for lists: there are 10 lists (L1..L0). The varname is 5D00 for L1 to 5D09 for L0. But, there may be other lists. The varname is 5D[Name (7 chars max)].
- for matrix: there are 10 matrix ([A]..[J]). The varname is 5C00 for [A] to 5C09 for [J].
- for equations: there are 31 equations (Y1..Y0 in func mode, X1t..X6t and Y1t..Y6t in param mode, r1..r6 in polar mode and u..w in seq mode).  The varname is 5E10 for Y1 to 5E19 for Y0. The varname is 5E20 for X1t, 5E21 for Y1t to 5E2A for X6t, 5E2B for Y6t. The varname is 5E40 for r1 to 5E45 for r6. The varname is 5E80 for u to 5E82 for w.
- for strings: there are 10 strings (Str1..Str9). The varname is AA00 for Str1 to AA09 for Str0.
- for pictures: there are 10 pictures (Pic1..Pic0). The varname is 6000 for Pic1 to 6009 for Pic0.
- for gdbs: there are 10 gdbs (GDB1..GDB0). The varname is 6100 for GDB1 to 6109 for GDB9.

The Type ID Byte

The type ID byte specifies the type of variable that is being transmitted. It can have one of the following values:

Value Description (click for variable format)
00h Real Number
01h Real List
02h Matrix
03h Y-Variable
04h String
05h Program
06h Edit-locked Program
07h Picture
08h GDB
0Ch Complex Number
0Dh Complex List
0Fh Window Settings (See note below)
10h Saved Window Settings (See note below)
11h Table Setup (See note below)
13h Backup
19h Directory (See note below) - only used when requesting a directory
Note - If the Type ID is in the range 0Fh - 12h or 19h, then the contents of the name field of the header do not matter.

Backup Header Format

If the type ID byte specifies a backup, the variable header takes the following 9-byte format:

Offset Length Description
0 2 bytes Size of first backup section, in bytes
2 1 byte Type ID Byte (1Dh in this case)
3 2 bytes Size of second backup section, in bytes
5 2 bytes Size of third backup section, in bytes
7 2 bytes Memory address of the second data section

[previous page]
Link Cables

[home]
Table of Contents

[next page]
Remote Control


Site maintained by Romain Liévin (roms@lpg.ticalc.org) and Tim Singer (tsinger@gladstone.uoregon.edu)