TI-83+ Link Protocol Guide - Flash 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, Romain has crashed a FLASH OS several times (10) 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 cable works fine, too.

There are 2 kinds of FLASH transfers:
- (free) 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-83+ 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.

Checking FLASH

The protocol for checking whether the calculator AMS has been upgraded is described below.
Step Direction Packet
Computer
===>
Calculator
REQ special: 00 68 00 00.
<===
ACK: either 73 56 00 00 (not upgraded), either 73 56 ?? ?? (upgraded).

Example:
PC: 00 68 00 00  Check whether the calc has been FLASHed
TI: 73 56 00 00 TI83+ with AMS v1.14
PC: 00 68 00 00  Check whether the calc has been FLASHed
TI: 73 56 ?? ?? TI83+ with AMS v?.??

Requesting ID list

Indeed, the request is as if the TI requested the 'IDLIST' variable: Ty=26 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
Computer
===>
Calculator
REQ with just type ID
<===
ACK (see note below)
<===
VAR (specifing the size without the extra four bytes) with IDLIST as varname
===>
ACK
===>
CTS
<===
ACK
<===
DATA with an extra four bytes at the beginning of the packet
===>
ACK
10 
===>
ACK

Example (PC receiving IDlist from TI):
PC: 73 A2 0B 00 00 00 26 00 00 00 00 00 00 00 00 26 00 Request the ID list
TI: 73 56 00 00 Acknowledgement of request
  73 06 0B 00 0B 00 26 00 00 00 00 00 00 00 00 31 00 Variable Header
PC: 73 56 00 00 Acknowledgement of variable header
  73 09 00 00 Clear to send variable
TI: 73 56 00 00 Acknowledgement of CTS
  73 15 0B 00 01 00 00 80 0A 32 CC E3 01 21 18 A6 00 Variable data: "0A32C-CE301-1821"
PC: 73 56 00 00 Acknowledgement of variable data

If the calculator does not have an IDLIST, it replies as following:

PC: 73 A2 0B 00 00 00 26 00 00 00 00 00 00 00 00 26 00 Request the ID list
TI: 73 36 05 00 00 00 00 00 03 03 00 Skip/Exit

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 an FLASH OS has been sent and the operation has crashed, you can wait that the TI83+ display 'Turn unit off and on'. 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.

Note: the TI83+ SE (Silver Edition) will reject any OS upgrade older than the currently installed.

In the case of a FLASH OS (AMS), the name is 'basecode'.

The protocol for silently sending a FLASH file is shown below:
Step Direction Packet
Computer
===>
Calculator
VAR with expected header including the FLASH application name and size. 
<===
ACK
<===
CTS
===>
ACK
===>
DATA with an extra four bytes at the beginning of the packet
<===
ACK/ERR (*)
    (Repeat steps 1-6 for as many pages as there are in the file)
===>
EOT
<===
ACK

(*) TI83+ SE will send an error packet if OS upgrade is older than the one currently installed.

Given that the TI83+ is a paged memory calculator, the protocol follows this scheme (see the TI83+ SDK guide for hardware informations). You have to send this page according to the protocol.

The size of the data part depends on the transfer type:
- os: 256 bytes (100h)
- app: 128 bytes (80h)

Example (PC sending an OS to TI):
PC: 23 06 0A 00 00 01 23 00 00 80 00 00 00 00 7D 02 send the first page(header informations for OS)
TI: 73 56 00 00 Acknowledgement of request
  73 09 0A 00  Clear to send variable
PC: 23 56 00 00 Acknowledgement of variable header
  23 15 00 01 <... 256/128 bytes of data ...> CHK Data block: 128 or 256 bytes
TI: 73 56 00 00 Acknowledgement of CTS
. . .
. . .
. . .
PC: 23 06 0A 00 00 01 23 00 00 00 00 40 00 00 7D 02 send the second page
TI: 73 56 00 00 Acknowledgement of request
  73 09 0A 00  Clear to send variable
PC: 23 56 00 00 Acknowledgement of variable header
  23 15 00 01 <... 256/128 bytes of data ...> CHK Data block: 128 or 256 bytes
TI: 73 56 00 00 Acknowledgement of CTS
. . .
. . .
. . .
PC: 23 92 00 00 End of Transmission
  73 56 00 00 Acknowledgement of EOT 

Important remark: for FLASH OS and TI73/83+/84+, a pause must be inserted:
- just after the first page (1 second),
- and just before sending the last page (which is the 'digital signature') otherwise the whole operation will not be validated. TI's soft seems to use a very long pause (2 to 3s). Practically, a pause of 1 second seems to be enough.

This pause is not needed at all for Silver Edition of TI83+ and TI84+ (it will make transfer fail in fact).


  Receiving FLASH

The protocol for silently receiving a FLASH file is shown below:
Step Direction Packet

1

Computer

===>

Calculator

REQ with request-style backup header.

2

<===

ACK

3

<===

VAR with flash-style header.

4

===>

ACK

5

===>

CTS

6

<===

ACK

7

<===

DATA (a 1-kilobyte backup block, with four extra bytes at the beginning)

8

===>

ACK

 

  (Repeat steps 3-8 for as many pages as there are)

Note: the TI84+ has a slightly different VAR header: it's the same as flash-style header.

Example (PC receiving an application from TI):

PC: 23 A2 0B 00 00 00 24 C B L E x p m t CHK Request the 'CBLExpmt' app.
TI: 73 56 00 00 Acknowledgement of request
. . .
. . .
. . .
  73 06 0A 00 LL HH 24 C B L Ol Oh Pl Ph CHK  TI reply a shorted name (CBL), block size, page offset and page number
PC: 23 56 00 00 Acknowledgement of variable header
  23 09 00 00 Acknowledgement of request
TI: 73 56 00 00 Acknowledgement of CTS
  73 15 LL HH <... HHLL bytes of data ...> CHK Data block: HHLL bytes
PC: 23 56 00 00 Acknowledgement of variable header
. . .
. . .
. . .
  73 06 0A 00 LL HH 24 C B L Ol Oh Pl Ph CHK  TI reply a shorted name (CBL), block size, page offset and page number
PC: 23 56 00 00 Acknowledgement of variable header
  23 09 00 00 Acknowledgement of request
TI: 73 56 00 00 Acknowledgement of CTS
  73 15 LL HH <... HHLL bytes of data ...> CHK Data block: HHLL bytes
PC: 23 56 00 00 Acknowledgement of variable header
. . .
. . .
. . .
  73 06 0A 00 LL HH 24 C B L Ol Oh Pl Ph CHK  TI reply a shorted name (CBL), block size, page offset and page number
PC: 23 56 00 00 Acknowledgement of variable header
  23 09 00 00 Acknowledgement of request
TI: 73 56 00 00 Acknowledgement of CTS
  73 15 LL HH <... HHLL bytes of data ...> CHK Data block: HHLL bytes
PC: 23 56 00 00 Acknowledgement of variable header
PC: 23 56 00 00 Acknowledgement

Receiving Certificate

The protocol for silently receiving a certificate is very similar to requesting a FLASH app (ID = 0x27 and name is "") but the VAR answer (step 3) has no data part.

Step Direction Packet

1

Computer

===>

Calculator

REQ with request-style idlist header.

2

<===

ACK

3

<===

VAR with no header

4

===>

ACK

5

===>

CTS

6

<===

ACK

7

<===

XDP (a 256 bytes block) or EOT

8

===>

ACK

 

  (Repeat steps 5-8 for as many pages as there are)

Example (PC receiving a certificate from TI):

PC: 23 A2 0B 00 00 00 27 00 00 00 00 00 00 00 00 27 00 Request certificate.
TI: 73 56 00 00 Acknowledgement of request
  73 06 00 00 TI reply with void VAR
PC: 23 56 00 00 Acknowledgement of variable header



  23 09 00 00 Acknowledgement of request
TI: 73 56 00 00 Acknowledgement of CTS
  73 15 01 00 <... 0100h bytes of data ...> CHK Data block: 256 bytes
PC: 23 56 00 00 Acknowledgement of variable header
...














...


 PC: 23 09 00 00 Acknowledgement of request
TI: 73 56 00 00 Acknowledgement of CTS
TI: 73 92 00 00 End Of Transmission
PC: 23 56 00 00 Acknowledgement of EOT

Sending a Certificate

The protocol for silently sending a certificate is very similar to sending a FLASH app (ID = 0x25 and name is "") but the VAR answer (step 3) has no data part.

Step Direction Packet

1

Computer

===>

Calculator

VAR with request-style flash header (offset = 4000h, page = 00h).

2

<===

ACK

3

<===

CTS

4

===>

ACK

5

===>

XDP

6

<===

ACK or nothing if EOT
7

<===

CTS
8

===>

ACK
9

===>

EOT

1

  (Repeat steps 5-8 for as many pages as there are and finish with step 9)

Example (PC sending a certificate to TI):

PC: 23 06 0A 00 E8 00 25 00 00 04 00 40 00 00 51 01 Request certificate.
TI: 73 56 00 00 Acknowledgement of request
  73 09 0A 00 Clear To Send
PC: 23 56 00 00 Acknowledgement of CTS



PC: 23 15 00 E8 <... 0100h bytes of data ...> CHK Data block : 232 bytes
TI: 73 56 00 00 Acknowledgement of request
  73 09 E8 00 TI reply with void VAR
PC: 23 56 00 00 Acknowledgement of variable header
... ... ...
PC: 23 15 00 E8 <... 0100h bytes of data ...> CHK Data block : 232 bytes
TI: 73 56 00 00 Acknowledgement of data
TI: 73 09 E8 00 Clear To Send
PC: 23 56 00 00 Acknowledgement of CTS
... ... ...
PC: 23 92 00 00 End Of Transmission


[previous page]
Silent transfers
[home]
Table of Contents
[next page]
Clock

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