TI-86 Link Protocol Guide v1.0 - Silent Variable Transfers


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.

Directory Listing

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

Computer

===>

Calculator

REQ with data type=0x15 (see note under Type ID's for variable header format)

2

<===

ACK

3

<===

DATA (3-byte free memory count - see format below)

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

The data section of the transfer is three bytes long and takes the following format:

Offset Length Description
0 1 byte Most significant 8 bits of the free memory count
1 2 bytes Least significant 16 bits of the free memory count (little-endian)

Example:
PC: 06 A2 05 00 00 00 15 00 00 16 00 Directory request
TI: 86 56 05 00 Acknowledgement of request
  86 15 03 00 01 65 15 7B 00 Data: 71013 (11565h) bytes of free memory
PC: 06 56 00 00 Acknowledgement of data
TI:

86 06 0C 00 02 00 04 05 79 53 74 61 74 20 20 20 80 02

Variable Header: Real Number "xStat"
PC: 06 56 00 00 Acknowledgement of variable header
TI: 86 06 05 00 02 00 04 05 7A 53 74 61 74 20 20 20 81 02 Variable Header: Real Number "yStat"
PC: 06 56 00 00 Acknowledgement of variable header
TI: 86 92 00 00 No more variables
PC: 06 56 00 00 Acknowledgement of EOT

Requesting a Variable

The protocol for requesting and receiving a variable from the calculator is shown below.

Step Direction Packet

1

Computer

===>

Calculator

REQ with expected header

2

<===

ACK (see note below)

3

<===

VAR with actual header

4

===>

ACK

5

===>

CTS

6

<===

ACK

7

<===

DATA

8

===>

ACK
Note: If the requested variable does not exist, the calculator will send an EXIT packet after step 2, to which the computer will respond with an ACK packet. This would be the end of the transfer.

As with manual transfers, the data section contains the variable data. For information on variable formats, click here.

Example:
PC: 06 A2 0C 00 02 00 04 05 79 53 74 61 74 20 20 20 80 02 Request Unknown "xStat"
TI: 86 56 0C 00 Acknowledgement of request
  86 06 05 00 0A 00 00 01 41 4C 00 Variable Header: Real Number "A"
PC: 06 56 00 00 Acknowledgement of variable header
  06 09 00 00 Clear to send variable
TI: 86 56 00 00 Acknowledgement of CTS
  86 15 0A 00 00 00 FC 62 83 18 53 07 18 00 5B 02 Variable data: "6.28318530718"
PC: 06 56 00 00 Acknowledgement of variable data

Sending a Variable

The protocol for sending a variable to the calculator is shown below.

Step Direction Packet

1

Computer

===>

Calculator

RTS

2

<===

ACK

3

<===

CTS or SKIP/EXIT (see note below)

4

===>

ACK

5

===>

DATA

6

<===

ACK
7

===>

EOT
Note: If the calculator sends a SKIP/EXIT packet in step 3, it does not have enough free memory to accomodate the variable. In this case, step 4 will be the end of the transfer.

Again, the data section contains the variable data.

Examples:
PC: 06 C9 0C 00 0A 00 00 01 41 20 20 20 20 20 20 20 2C 01 Request to send Real Number "A"
TI: 86 56 0C 00 Acknowledgement of request
  86 09 0C 00 Clear to send variable
PC: 06 56 00 00 Acknowledgement of CTS
  06 15 0A 00 00 00 FC 62 83 18 53 07 18 00 5B 02 Variable data: "6.28318530718"
TI: 86 56 0A 00 Acknowledgement of data
PC: 06 92 00 00 End Of Transmission
     
PC: 06 C9 0C 00 0A 00 00 01 42 20 20 20 20 20 20 20 2D 01 Request to send Real Number "B"
TI: 86 56 00 00 Acknowledgement of request
  86 36 01 00 03 03 00 Out of memory
PC: 06 56 00 00 Acknowledgement of out of memory

[previous page]
Manual Transfers

[home]
Table of Contents

[next page]
Backups


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