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.
The protocol for requesting a directory listing is shown below. For information on packet formats, click here.
Step | Direction | Packet | ||
---|---|---|---|---|
|
|
|
|
REQ with data type=19h (see note under Type ID's for variable header format) and with a particular filter. |
|
|
ACK | ||
|
|
VAR - a variable information packet (see format below) | ||
|
|
ACK | ||
|
|
CTS | ||
|
|
ACK | ||
|
|
DATA - a variable entry (see format below). | ||
|
|
ACK | ||
|
|
CONT or EOT - if CONT, then go to step 4. | ||
|
|
ACK |
The request has the following format according to the operation (global directory list or local directory list):
Offset | Length | Description |
---|---|---|
0 | 4 bytes | Always {00h, 00h, 00h, 00}. |
4 | 1 bytes | This byte always has a value of 19h (directory list request). |
5 | 1 byte | The length, in characters, of the name field. Here, it is always 0. |
The data in the variable information packet has the following format:
Offset | Length | Description |
---|---|---|
0 | 4 bytes | Unknown. |
4 | 1 bytes | This byte always has a value of 53h (???). |
5 | 1 byte | The length, in characters, of the name field. Always 04h. |
6 | 4 bytes | The name of the current folder. Always "main". |
The var section (data packet) of the transfer is always 18 bytes long and takes the following format:
Offset | Length | Description |
---|---|---|
0 | 4 bytes | These four bytes always have a value of 0. |
4 | 8 bytes | Variable name padded with NULL chars if necessary. |
12 | 1 byte | Variable type ID. |
13 | 1 byte | Variable attribute: 00h = unlocked, 01h = locked. |
14 | 4 bytes | If folders are listed, this field contains the number of variables
in this folder. If variables are listed, this field contains the length, in bytes, of the variable data for this variable without the extra four bytes at the beginning of the data packet. |
Example: (to do, my examples are too big !)
PC: | 09 A2 06 00 00 00 00 00 19 00 39 00 | Directory list request |
TI: | 89 56 00 00 | Acknowledgement of request |
89 06 0A 00 0E 00 00 00 5304 6D 61 69 6E 03 52 02 | Variable header - complete directory starting with "main". | |
PC: | 09 56 00 00 | Acknowledgement of header |
09 09 FF FF | Clear to send | |
TI: | 89 56 00 00 | Acknowledgement of clear to send |
89 15 12 00 00 00 00 00 41 00 00 00 00 00 00 00 03 00 01 00 00 00 66 13 | Variable entry - Unlocked folder "base" with one variable | |
PC: | 09 56 00 00 | Acknowledgement of variable entry |
TI: | 89 78 00 00 | Continue |
PC: | 09 56 00 00 | Acknowledgement of header |
09 09 FF FF | Clear to send | |
TI: | 89 56 00 00 | Acknowledgement of clear to send |
89 15 12 00 00 00 00 00 42 00 00 00 00 00 00 00 03 00 01 00 00 00 66 13 | Variable entry - Unlocked folder "base" with one variable | |
PC: | 09 56 00 00 | Acknowledgement of variable entry |
TI: | 89 92 00 00 | End of transmission - no more variables |
PC: | 09 56 00 00 | Acknowledgement of EOT |
Step | Direction | Packet | ||
---|---|---|---|---|
|
|
|
|
REQ with expected header including the folder name, if necessary |
|
|
ACK (see note below) | ||
|
|
VAR (specifing the size without the extra four bytes) with actual header and no folder name | ||
|
|
ACK | ||
|
|
CTS | ||
|
|
ACK | ||
|
|
DATA with an extra four bytes at the beginning of the packet | ||
|
|
ACK | ||
|
|
EOT | ||
|
|
ACK |
As with manual transfers, the data section contains the variable data. For information on variable formats, click here.
Example:
PC: | 09 A2 0C 00 00 00 00 00 00 06 6D 61 69 6E 5C 64 93 02 | Request Known Variable "d" in the "main" folder |
TI: | 89 56 00 00 | Acknowledgement of request |
89 06 08 00 05 00 00 00 00 01 64 6A 00 | Variable Header: String "d" | |
PC: | 09 56 00 00 | Acknowledgement of variable header |
09 09 FF FF | Clear to send variable | |
TI: | 89 56 00 00 | Acknowledgement of CTS |
89 15 09 00 00 00 00 00 00 03 01 01 1F 24 00 | Variable data: ? | |
PC: | 09 56 00 00 | Acknowledgement of variable data |
TI: | 89 92 00 00 | End Of Transmission |
PC: | 09 56 00 00 | Acknowledgement of EOT |
The protocol for sending a variable to the calculator is shown below.
Step | Direction | Packet | ||
---|---|---|---|---|
|
|
|
|
RTS (specifing the size with the extra four bytes) |
|
|
ACK | ||
|
|
CTS or SKIP/EXIT (see note below) | ||
|
|
ACK | ||
|
|
DATA | ||
|
|
ACK | ||
|
|
EOT - if there are several variables to transmit, steps 7 and 8 can be skipped until the last variable. | ||
|
|
ACK |
Again, the data section contains the variable data.
Example:
PC: | 09 06 0D 00 0C 00 00 00 0C 07 74 64 73 5C 73 74 72 20 03 | Request to send String "str" in the "tds" folder |
TI: | 89 56 00 00 | Acknowledgement of request |
89 09 00 00 | Clear to send variable | |
PC: | 09 56 00 00 | Acknowledgement of CTS |
09 15 0C 00 00 00 00 00 00 06 00 61 62 63 00 2D 59 01 | Variable data: "abc" | |
TI: | 89 56 00 00 | Acknowledgement of data |
PC: | 09 92 00 00 | End Of Transmission |
TI: | 89 56 00 00 | Acknowledgement of EOT |
Manual Transfers |
Table of Contents |
Backups |