TI-89 Link Protocol Guide - System Backup Transfers

##

Flash Transfers

Beware: in the worst case, a FLASH operation can completely lock up your calculator and there is no way than returning the calcultator to Texas Instruments in this case.
We (Tim. Singer and Romain Liévin) can not be responsible of this.
Personnaly, I (Romain) have crashed a FLASH OS several times without crashing the calculator but you have been warned !
A last remark: the link cables which are the more reliable and efficient for these operations (especially OS flashing) are RS232 cables such as Grey TIGL, fastAVRlink (even at 4x = 38400 bauds) or PIClink (not tested but should work). The SilverLink is slower than others for FLASHing (strange, don't ask us why !).

There are 2 kinds of FLASH transfers:
- FLASH applications which are variables stored in the FLASH memory of the calculator.
- AMS (Advanced Mathematic Software) which is the Operating System of the calculator.
A Flash transfer is a one (large) transmission containing data (up to 2 Mb for AMS). The file format that the TI-89 Graph Link software uses can be found in the file formats section of this documentation.

A FLASH OS must be transferred silently whereas FLASH apps can be transferred manually or silently. Silent transfers can only be done between a computer and a calculator, and require that the computer make the request or request-to-send.

This section does not cover sending of certificates or applications sold by TI.

#### Checking FLASH

The protocol for checking whether the calculator AMS has been upgraded is described below.

Step | Direction | Packet
--- | --- | ---
1 |  |  |  | REQ special: 00 68 00 00.
2 |  | ACK: either 98 56 00 10 (not upgraded), either 98 56 10 04 (upgraded).

Note: the 04h value seems to be a revision value. AMS208 returns 0Ch.

Example:

PC: | `00 68 00 00` | Check whether the calc has been FLASHed
TI: | `98 56 00 10` | TI89 with AMS 1.00

PC: | `00 68 00 00` | Check whether the calc has been FLASHed
TI: | `98 56 04 10` | TI89 with AMS 2.05
PC: | `00 68 00 00` | Check whether the calc has been FLASHed
TI: | `98 56 0C 10` | TI89 with AMS 2.08

#### Requesting ID list

Indeed, the request is as if the TI requested the 'IDLIST' variable: Ty=22 and Nl=00.
This request works only with upgraded calculator (check if TI has been upgraded before).

The protocol for silently receiving the ID list is shown below:

Step | Direction | Packet
--- | --- | ---
1 |  |  |  | REQ with expected header including the folder name, if necessary
2 |  | ACK (see note below)
3 |  | VAR (specifing the size without the extra four bytes) with actual header and no folder name
4 |  | ACK
5 |  | CTS
6 |  | ACK
7 |  | DATA with an extra four bytes at the beginning of the packet
8 |  | ACK
9 |  | EOT
10 |  | ACK

Example (PC receiving IDlist from TI):

PC: | `08 A2 06 00 00 00 00 00 22 00 22 00` | Request the ID list
TI: | `98 56 00 00` | Acknowledgement of request
| `98 06 0D 00 12 00 00 00 22 06 I D L I S T 00 6A 00` | Variable Header: String "IDLIST"
PC: | `08 56 00 00` | Acknowledgement of variable header
| `08 09 00 00` | Clear to send variable
TI: | `98 56 00 00` | Acknowledgement of CTS
| `98 15 16 00 00 00 00 00 01 00 0E 00 30 33 30 36 39 44 31 42 41 33 46 46 41 42 24 00` | Variable data: "03069-D1BA3-FFAB"
PC: | `08 56 00 00` | Acknowledgement of variable data
TI: | `98 92 00 00` | End Of Transmission
PC: | `08 56 00 00` | Acknowledgement of EOT

#### Sending FLASH

Warning: We (Tim. Singer and Romain Liévin) could not be responsible if your calculator has been locked or damaged with a FLASH OS.
If a FLASH OS has been sent and the operation has crashed, you can wait that the TI89 display 'Ready to receive'. Then, try again the transfer.
If the calculator is really locked, remove batteries, wait some time and put them again. Next, press I for 'Install code' and retry transfer.
In the case of a FLASH OS (AMS), there is no name : 08 c9 06 00 47 e3 12 00 23 00 5f 01. Older AMS releases sent 'basecode' but I'm unsure.
TI89 Titanium and V200PLT use a slightly different packet : 08 c9 09 00 b3 4e 14 00 23 00 08 00 0X 49 01 where 0X is the hardware ID (1 = 92+, 3 = 89, 8 = V200, 9 = Titanium).

The protocol for silently sending a FLASH file is shown below:

Step | Direction | Packet
--- | --- | ---
1 |  |  |  | RTS with expected header including the FLASH application name and size.
2 |  | ACK
3 |  | CTS
4 |  | ACK
5 |  | DATA
6 |  | ACK
7 |  | CONT or EOT - if CONT, then go to step 2.
8 |  | ACK or ERR (if certificate is rejected)

Example (PC sending a free FLASH application to TI):

PC: | `08 C9 0C 00 59 85 00 00 24 05 54 49 46 52 41 01 7D 02` | Send the "TIFRA" flash application
TI: | `98 56 00 00` | Acknowledgement of request
| `98 09 00 00` | Clear to send variable
PC: | `08 56 00 00` | Acknowledgement of variable header
| `08 15 00 00 <... 65536 bytes of data ...> CHK` | Data block: 64 Kbytes
TI: | `98 56 00 00` | Acknowledgement of CTS
PC: | `08 78 00 00` | Continue transmission
. . . | . . . | . . .
TI: | `98 56 00 00` | Acknowledgement of request
| `98 09 00 00` | Clear to send variable
PC: | `08 56 00 00` | Acknowledgement of variable header
| `08 15 00 00 <... 65536 bytes of data ...> CHK` | Data block: 64 Kbytes
TI: | `98 56 00 00` | Acknowledgement of CTS
PC: | `08 78 00 00` | Continue transmission
. . . | . . . | . . .
TI: | `98 56 00 00` | Acknowledgement of request
| `98 09 00 00` | Clear to send variable
PC: | `08 56 00 00` | Acknowledgement of variable header
| `08 15 59 85 <... 34137 bytes of data ...> CHK` | Data block: 34137 bytes of remaining data for instance
TI: | `98 56 00 00` | Acknowledgement of CTS
PC: | `08 92 00 00` | End Of Transmission
TI: | `98 56 00 00` | Acknowledgement of EOT

#### Receiving FLASH

The protocol for silently receving a FLASH file is shown below:

Step | Direction | Packet
--- | --- | ---
1 |  |  |  | REQ with expected header including the application name
2 |  | ACK (see note below)
3 |  | VAR (specifing the size) with actual header and no folder name
4 |  | ACK
5 |  | CTS
6 |  | ACK
7 |  | DATA
8 |  | ACK
9 |  | CONT/EOT - if CONT, then go to step 4.
10 |  | ACK

Example (PC receiving a free FLASH application to TI):

PC: | `08 A2 0E 00 00 00 00 00 24 08 54 49 43 41 42 46 52 41 68 02` | Request to Send the "TICABFRA" flash application
TI: | `98 56 00 00` | Acknowledgement of request
| `98 06 0F 00` `8D 1D 00 00 24 08 54 49 43 41 42 46 52 41 04` `16 03` | Application Header: String "TICABFRA"
PC: | `08 56 00 00` | Acknowledgement of variable header
| `08 09 00 00` | Clear to send variable
TI: | `98 56 00 00` | Acknowledgement of CTS
| `98 15 B6 06 <block of data> 24 00` | Variable data
PC: | `08 56 00 00` | Acknowledgement of variable data
TI: | `98 78 00 00` | End Of Transmission
. . . | . . . | . . .
PC: | `08 56 00 00` | Acknowledgement of variable header
| `08 09 00 00` | Clear to send variable
TI: | `98 56 00 00` | Acknowledgement of CTS
| `98 15 FE 03 <block of data> 24 00` | Variable data
PC: | `08 56 00 00` | Acknowledgement of variable data
TI: | `98 78 00 00` | End Of Transmission
. . . | . . . | . . .
PC: | `08 56 00 00` | Acknowledgement of variable header
| `08 09 00 00` | Clear to send variable
TI: | `98 56 00 00` | Acknowledgement of CTS
| `98 15 19 02 <block of data> 24 00` | Variable data
PC: | `08 56 00 00` | Acknowledgement of variable data
TI: | `98 92 00 00` | Acknowledgement of EOT
PC: | `08 56 00 00` | End Of Transmission

#### Receiving Certificate

Same as requesting FLASH app but type ID is 20h and name is "".

#### Sending Certificate

Same as sending FLASH app but type ID is 20h and name is "".
When rejected, this ERR packets is sent : 88 36 00 05 05 00 0A 00 00 0F 00

Silent transfers | Table of Contents | Clock

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