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.
Step | Direction | Packet | ||
---|---|---|---|---|
|
|
|
|
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?.?? |
The protocol for silently receiving the ID list is shown below:
Step | Direction | Packet | ||
---|---|---|---|---|
|
|
|
|
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 | ||
|
|
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 |
The protocol for silently sending a FLASH file is shown below:
Step | Direction | Packet | ||
---|---|---|---|---|
|
|
|
|
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+, a pause must be
inserted:
- just after the first page (1 second),
- and just
before sending the last page (which is the 'digital signature') else
the entire
operation will not be validated. TI's soft seems to use a very long
pause
(2..3s). Practically, a pause of 1 second seems to be enough.
This pause is not needed for TI84+ (it will make transfer fail in fact).
Step | Direction | Packet | ||
---|---|---|---|---|
1 |
|
|
|
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.
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 |
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 |
|
|
|
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) |
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 |
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 |
|
|
|
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) |
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 |
Silent transfers |
Table of Contents |
Clock |