123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556 |
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
- <html>
- <head>
- <meta name="GENERATOR" content="Visual Page 1.0 for Windows">
- <meta http-equiv="Content-Type" content="text/html;CHARSET=iso-8859-1">
- <title>TI-73 Link Protocol Guide - Silent Transfers</title>
- </head>
- <body bgcolor="#ffffe8">
- <p><b>TI-73 Link Protocol Guide v1.0</b> - Silent Variable Transfers</p>
- <center>
- <h2>
- <hr align="center">Silent Variable Transfers</h2>
- </center>
- <p>"Silent Linking" is a capability that Texas Instruments built into
- the TI-83, TI-73, 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.</p>
- <p>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 <a href="#dir">directory
- listing</a> 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 <a
- href="#request">variable request</a> action must be initiated
- by the computer. Finally, if variables are to be uploaded, a <a
- href="#rts">request-to-send</a> action must be
- sent by the computer.</p>
- <h4><a name="dir"></a>Directory Listing</h4>
- <p>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.</p>
- <p>The protocol for requesting a directory listing is shown below. For
- information on packet formats, <a href="packet.html">click
- here</a>.</p>
- <p>
- <table bgcolor="#ffffff" border="1" cellspacing="0" width="92%">
- <tbody>
- <tr>
- <th bgcolor="#008800" width="7%"><font color="#ffffff">Step</font></th>
- <th colspan="3" bgcolor="#008800"><font color="#ffffff">Direction</font></th>
- <th bgcolor="#008800" width="80%"><font color="#ffffff">Packet</font></th>
- </tr>
- <tr>
- <td bgcolor="#ffffff" width="7%">
- <p align="center">1 </p>
- </td>
- <td rowspan="9">
- <p align="center"><img src="graphics/comp.gif" alt="Computer"
- align="bottom" border="0" height="33" width="30"> </p>
- </td>
- <td bgcolor="#ffffff">
- <p align="center"><img src="graphics/right.gif" alt="===>"
- align="bottom" border="0" height="13" width="22"> </p>
- </td>
- <td rowspan="9">
- <p align="center"><img src="graphics/calc.gif" alt="Calculator"
- align="bottom" border="0" height="67" width="30"> </p>
- </td>
- <td bgcolor="#ffffff" width="80%">REQ with data type=0x19 (see <a
- href="packet.html#15h">note under Type ID's</a> for variable header
- format)</td>
- </tr>
- <tr>
- <td bgcolor="#ffffff" width="7%">
- <p align="center">2 </p>
- </td>
- <td bgcolor="#ffffff">
- <p align="center"><img src="graphics/left.gif" alt="<==="
- align="bottom" border="0" height="13" width="22"> </p>
- </td>
- <td bgcolor="#ffffff" width="80%">ACK</td>
- </tr>
- <tr>
- <td bgcolor="#ffffff" width="7%">
- <p align="center">3 </p>
- </td>
- <td bgcolor="#ffffff">
- <p align="center"><img src="graphics/left.gif" alt="<==="
- align="bottom" border="0" height="13" width="22"> </p>
- </td>
- <td bgcolor="#ffffff" width="80%">DATA: 2-byte free memory count <i>(little-endian)</i></td>
- </tr>
- <tr>
- <td bgcolor="#ffffff" width="7%">
- <p align="center">4 </p>
- </td>
- <td bgcolor="#ffffff">
- <p align="center"><img src="graphics/right.gif" alt="===>"
- align="bottom" border="0" height="13" width="22"> </p>
- </td>
- <td bgcolor="#ffffff" width="80%">ACK</td>
- </tr>
- <tr>
- <td width="7%"> </td>
- <td> </td>
- <td width="80%"><i> (Repeat steps 5 and 6 for all user variables
- in the calculator's memory)</i></td>
- </tr>
- <tr>
- <td width="7%">
- <p align="center">5 </p>
- </td>
- <td>
- <p align="center"><img src="graphics/left.gif" alt="<==="
- align="bottom" border="0" height="13" width="22"> </p>
- </td>
- <td width="80%">VAR (with padded variable header) - one entry</td>
- </tr>
- <tr>
- <td width="7%">
- <p align="center">6 </p>
- </td>
- <td>
- <p align="center"><img src="graphics/right.gif" alt="===>"
- align="bottom" border="0" height="13" width="22"> </p>
- </td>
- <td width="80%">ACK</td>
- </tr>
- <tr>
- <td width="7%">
- <p align="center">7 </p>
- </td>
- <td>
- <p align="center"><img src="graphics/left.gif" alt="<==="
- align="bottom" border="0" height="13" width="22"> </p>
- </td>
- <td width="80%">EOT</td>
- </tr>
- <tr>
- <td width="7%">
- <p align="center">8 </p>
- </td>
- <td>
- <p align="center"><img src="graphics/right.gif" alt="===>"
- align="bottom" border="0" height="13" width="22"> </p>
- </td>
- <td width="80%">ACK</td>
- </tr>
- </tbody>
- </table>
- </p>
- <p></p>
- <p><u>Example:<br>
- </u>
- <table bgcolor="#ffffff" border="0" cellspacing="0" width="100%">
- <tbody>
- <tr>
- <td bgcolor="#ccffcc">PC:</td>
- <td bgcolor="#ccffcc" width="50%"><b><tt>07 A2 0B 00 </tt></b><tt>00 00 19 00 00 00 00 00 00 00 00 <b>19 00</b></tt></td>
- <td bgcolor="#ccffcc" width="50%"><i>Directory request</i></td>
- </tr>
- <tr>
- <td bgcolor="#ffcccc">TI:</td>
- <td bgcolor="#ffcccc" width="50%"><b><tt>74 56 00 00</tt></b></td>
- <td bgcolor="#ffcccc" width="50%"><i>Acknowledgement of request</i></td>
- </tr>
- <tr>
- <td bgcolor="#ffcccc"> </td>
- <td bgcolor="#ffcccc" width="50%"><b><tt>74 15 02 00 </tt></b><tt>66 5B <b>C1
- 00</b></tt></td>
- <td bgcolor="#ffcccc" width="50%"><i>Data: 23398 (5B66h) bytes of
- free memory</i></td>
- </tr>
- <tr>
- <td bgcolor="#ccffcc">PC:</td>
- <td bgcolor="#ccffcc" width="50%"><b><tt>07 56 00 00</tt></b></td>
- <td bgcolor="#ccffcc" width="50%"><i>Acknowledgement of data</i></td>
- </tr>
- <tr>
- <td bgcolor="#ffcccc">TI:</td>
- <td bgcolor="#ffcccc" width="50%"><b><tt>74 06 0B 00 </tt></b><tt>09 00 00 41 00 00 00 00 00 00 00 <b>4A 00</b></tt></td>
- <td bgcolor="#ffcccc" width="50%"><i>Variable Header: Real Number
- "A"</i></td>
- </tr>
- <tr>
- <td bgcolor="#ccffcc">PC:</td>
- <td bgcolor="#ccffcc" width="50%"><b><tt>07 56 00 00</tt></b></td>
- <td bgcolor="#ccffcc" width="50%"><i>Acknowledgement of variable
- header</i></td>
- </tr>
- <tr>
- <td bgcolor="#ffcccc">TI:</td>
- <td bgcolor="#ffcccc" width="50%"><b><tt>74 06 0B 00 </tt></b><tt>09 00 00 42 00 00 00 00 00 00 00 <b>CB 00</b></tt></td>
- <td bgcolor="#ffcccc" width="50%"><i>Variable Header: Real Number
- "B" which is archived</i></td>
- </tr>
- <tr>
- <td bgcolor="#ccffcc">PC:</td>
- <td bgcolor="#ccffcc" width="50%"><b><tt>07 56 00 00</tt></b></td>
- <td bgcolor="#ccffcc" width="50%"><i>Acknowledgement of variable
- header</i></td>
- </tr>
- <tr>
- <td bgcolor="#ffcccc">TI:</td>
- <td bgcolor="#ffcccc" width="50%"><b><tt>74 92 00 00</tt></b></td>
- <td bgcolor="#ffcccc" width="50%"><i>No more variables</i></td>
- </tr>
- <tr>
- <td bgcolor="#ccffcc">PC:</td>
- <td bgcolor="#ccffcc" width="50%"><b><tt>07 56 00 00</tt></b></td>
- <td bgcolor="#ccffcc" width="50%"><i>Acknowledgement of EOT</i></td>
- </tr>
- </tbody>
- </table>
- </p>
- <p></p>
- <h4><a name="request"></a>Requesting a Variable</h4>
- <p>The protocol for requesting and receiving a variable from the
- calculator is shown below.</p>
- <p>
- <table bgcolor="#ffffff" border="1" cellspacing="0" width="92%">
- <tbody>
- <tr>
- <th bgcolor="#008800" width="7%"><font color="#ffffff">Step</font></th>
- <th colspan="3" bgcolor="#008800"><font color="#ffffff">Direction</font></th>
- <th bgcolor="#008800" width="80%"><font color="#ffffff">Packet</font></th>
- </tr>
- <tr>
- <td bgcolor="#ffffff" width="7%">
- <p align="center">1 </p>
- </td>
- <td rowspan="8">
- <p align="center"><img src="graphics/comp.gif" alt="Computer"
- align="bottom" border="0" height="33" width="30"> </p>
- </td>
- <td bgcolor="#ffffff">
- <p align="center"><img src="graphics/right.gif" alt="===>"
- align="bottom" border="0" height="13" width="22"> </p>
- </td>
- <td rowspan="8">
- <p align="center"><img src="graphics/calc.gif" alt="Calculator"
- align="bottom" border="0" height="67" width="30"> </p>
- </td>
- <td bgcolor="#ffffff" width="80%">REQ with expected header</td>
- </tr>
- <tr>
- <td bgcolor="#ffffff" width="7%">
- <p align="center">2 </p>
- </td>
- <td bgcolor="#ffffff">
- <p align="center"><img src="graphics/left.gif" alt="<==="
- align="bottom" border="0" height="13" width="22"> </p>
- </td>
- <td bgcolor="#ffffff" width="80%">ACK (see note below)</td>
- </tr>
- <tr>
- <td bgcolor="#ffffff" width="7%">
- <p align="center">3 </p>
- </td>
- <td bgcolor="#ffffff">
- <p align="center"><img src="graphics/left.gif" alt="<==="
- align="bottom" border="0" height="13" width="22"> </p>
- </td>
- <td bgcolor="#ffffff" width="80%">VAR with actual header</td>
- </tr>
- <tr>
- <td bgcolor="#ffffff" width="7%">
- <p align="center">4 </p>
- </td>
- <td bgcolor="#ffffff">
- <p align="center"><img src="graphics/right.gif" alt="===>"
- align="bottom" border="0" height="13" width="22"> </p>
- </td>
- <td bgcolor="#ffffff" width="80%">ACK</td>
- </tr>
- <tr>
- <td width="7%">
- <p align="center">5 </p>
- </td>
- <td>
- <p align="center"><img src="graphics/right.gif" alt="===>"
- align="bottom" border="0" height="13" width="22"> </p>
- </td>
- <td width="80%">CTS</td>
- </tr>
- <tr>
- <td width="7%">
- <p align="center">6 </p>
- </td>
- <td>
- <p align="center"><img src="graphics/left.gif" alt="<==="
- align="bottom" border="0" height="13" width="22"> </p>
- </td>
- <td width="80%">ACK</td>
- </tr>
- <tr>
- <td width="7%">
- <p align="center">7 </p>
- </td>
- <td>
- <p align="center"><img src="graphics/left.gif" alt="<==="
- align="bottom" border="0" height="13" width="22"> </p>
- </td>
- <td width="80%">DATA</td>
- </tr>
- <tr>
- <td width="7%">
- <p align="center">8 </p>
- </td>
- <td>
- <p align="center"><img src="graphics/right.gif" alt="===>"
- align="bottom" border="0" height="13" width="22"> </p>
- </td>
- <td width="80%">ACK</td>
- </tr>
- </tbody>
- </table>
- <i>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.</i></p>
- <p></p>
- <p>As with manual transfers, the data section contains the variable
- data. For information on variable formats,
- <a href="vars.html">click here</a>.</p>
- <p><u>Example:</u>
- <table border="0" cellspacing="0" width="100%">
- <tbody>
- <tr>
- <td bgcolor="#ccffcc">PC:</td>
- <td bgcolor="#ccffcc" width="50%"><b><tt>07 A2 0B 00 </tt></b><tt>00
- 00 01 5D 01 00 00 00 00 00 00 <b>4A 00</b></tt></td>
- <td bgcolor="#ccffcc" width="50%"><i>Request List "L1"</i></td>
- </tr>
- <tr>
- <td bgcolor="#ffcccc">TI:</td>
- <td bgcolor="#ffcccc" width="50%"><b><tt>74 56 00 00</tt></b></td>
- <td bgcolor="#ffcccc" width="50%"><i>Acknowledgement of request</i></td>
- </tr>
- <tr>
- <td bgcolor="#ffcccc"> </td>
- <td bgcolor="#ffcccc" width="50%"><b><tt>74 06 0B 00
- </tt></b><tt>02 00 01 5D 01 00 00 00 00 00 00 <b>61 00</b></tt></td>
- <td bgcolor="#ffcccc" width="50%"><i>Variable Header: List "L1"</i></td>
- </tr>
- <tr>
- <td bgcolor="#ccffcc">PC:</td>
- <td bgcolor="#ccffcc" width="50%"><b><tt>07 56 00 00</tt></b></td>
- <td bgcolor="#ccffcc" width="50%"><i>Acknowledgement of variable
- header</i></td>
- </tr>
- <tr>
- <td bgcolor="#ccffcc"> </td>
- <td bgcolor="#ccffcc" width="50%"><b><tt>07 09 00 00</tt></b></td>
- <td bgcolor="#ccffcc" width="50%">Clear to send variable</td>
- </tr>
- <tr>
- <td bgcolor="#ffcccc">TI:</td>
- <td bgcolor="#ffcccc" width="50%"><b><tt>74 56 00 00</tt></b></td>
- <td bgcolor="#ffcccc" width="50%"><i>Acknowledgement of CTS</i></td>
- </tr>
- <tr>
- <td bgcolor="#ffcccc"> </td>
- <td bgcolor="#ffcccc" width="50%"><b><tt>74 15 02
- 00 </tt></b><tt>00 00 <b>00 00</b></tt></td>
- <td bgcolor="#ffcccc" width="50%"><i>Variable data</i></td>
- </tr>
- <tr>
- <td bgcolor="#ccffcc">PC:</td>
- <td bgcolor="#ccffcc" width="50%"><b><tt>07 56 00 00</tt></b></td>
- <td bgcolor="#ccffcc" width="50%"><i>Acknowledgement of variable
- data</i></td>
- </tr>
- </tbody>
- </table>
- </p>
- <p></p>
- <h4><a name="rts"></a>Sending a Variable</h4>
- <p>The protocol for sending a variable to the calculator is shown below.</p>
- <p>
- <table bgcolor="#ffffff" border="1" cellspacing="0" width="92%">
- <tbody>
- <tr>
- <th bgcolor="#008800" width="7%"><font color="#ffffff">Step</font></th>
- <th colspan="3" bgcolor="#008800"><font color="#ffffff">Direction</font></th>
- <th bgcolor="#008800" width="80%"><font color="#ffffff">Packet</font></th>
- </tr>
- <tr>
- <td bgcolor="#ffffff" width="7%">
- <p align="center">1 </p>
- </td>
- <td rowspan="6">
- <p align="center"><img src="graphics/comp.gif" alt="Computer"
- align="bottom" border="0" height="33" width="30"> </p>
- </td>
- <td bgcolor="#ffffff">
- <p align="center"><img src="graphics/right.gif" alt="===>"
- align="bottom" border="0" height="13" width="22"> </p>
- </td>
- <td rowspan="6">
- <p align="center"><img src="graphics/calc.gif" alt="Calculator"
- align="bottom" border="0" height="67" width="30"> </p>
- </td>
- <td bgcolor="#ffffff" width="80%">RTS</td>
- </tr>
- <tr>
- <td bgcolor="#ffffff" width="7%">
- <p align="center">2 </p>
- </td>
- <td bgcolor="#ffffff">
- <p align="center"><img src="graphics/left.gif" alt="<==="
- align="bottom" border="0" height="13" width="22"> </p>
- </td>
- <td bgcolor="#ffffff" width="80%">ACK</td>
- </tr>
- <tr>
- <td bgcolor="#ffffff" width="7%">
- <p align="center">3 </p>
- </td>
- <td bgcolor="#ffffff">
- <p align="center"><img src="graphics/left.gif" alt="<==="
- align="bottom" border="0" height="13" width="22"> </p>
- </td>
- <td bgcolor="#ffffff" width="80%">CTS or SKIP/EXIT (see note
- below)</td>
- </tr>
- <tr>
- <td bgcolor="#ffffff" width="7%">
- <p align="center">4 </p>
- </td>
- <td bgcolor="#ffffff">
- <p align="center"><img src="graphics/right.gif" alt="===>"
- align="bottom" border="0" height="13" width="22"> </p>
- </td>
- <td bgcolor="#ffffff" width="80%">ACK</td>
- </tr>
- <tr>
- <td width="7%">
- <p align="center">5 </p>
- </td>
- <td>
- <p align="center"><img src="graphics/right.gif" alt="===>"
- align="bottom" border="0" height="13" width="22"> </p>
- </td>
- <td width="80%">DATA</td>
- </tr>
- <tr>
- <td width="7%">
- <p align="center">6 </p>
- </td>
- <td>
- <p align="center"><img src="graphics/left.gif" alt="<==="
- align="bottom" border="0" height="13" width="22"> </p>
- </td>
- <td width="80%">ACK</td>
- </tr>
- </tbody>
- </table>
- <i>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.</i></p>
- <p></p>
- <p>Again, the data section contains the variable data.</p>
- <p><u>Examples:<br>
- </u>
- <table border="0" cellspacing="0" width="100%">
- <tbody>
- <tr>
- <td bgcolor="#ccffcc">PC:</td>
- <td bgcolor="#ccffcc" width="50%"><b><tt>07 C9 0B 00
- </tt></b><tt>02 00 01 5D 01 00 00 00 00 00 00 <b>61 00</b></tt></td>
- <td bgcolor="#ccffcc" width="50%"><i>Request to send List "L1"</i></td>
- </tr>
- <tr>
- <td bgcolor="#ffcccc">TI:</td>
- <td bgcolor="#ffcccc" width="50%"><b><tt>74 56 00 00</tt></b></td>
- <td bgcolor="#ffcccc" width="50%"><i>Acknowledgement of request</i></td>
- </tr>
- <tr>
- <td bgcolor="#ffcccc"> </td>
- <td bgcolor="#ffcccc" width="50%"><b><tt>74 09 00 00</tt></b></td>
- <td bgcolor="#ffcccc" width="50%"><i>Clear to send variable</i></td>
- </tr>
- <tr>
- <td bgcolor="#ccffcc">PC:</td>
- <td bgcolor="#ccffcc" width="50%"><b><tt>07 56 00 00</tt></b></td>
- <td bgcolor="#ccffcc" width="50%"><i>Acknowledgement of CTS</i></td>
- </tr>
- <tr>
- <td bgcolor="#ccffcc"> </td>
- <td bgcolor="#ccffcc" width="50%"><b><tt>07 15 02
- 00 </tt></b><tt>00 00 <b>00 00</b></tt></td>
- <td bgcolor="#ccffcc" width="50%"><i>Variable data</i></td>
- </tr>
- <tr>
- <td bgcolor="#ffcccc">TI:</td>
- <td bgcolor="#ffcccc" width="50%"><b><tt>74 56 00 00</tt></b></td>
- <td bgcolor="#ffcccc" width="50%"><i>Acknowledgement of data</i></td>
- </tr>
- <tr>
- <td> </td>
- <td width="50%"> </td>
- <td width="50%"> </td>
- </tr>
- <tr>
- <td bgcolor="#ccffcc">PC:</td>
- <td bgcolor="#ccffcc" width="50%"><b><tt>07 C9 0B 00 </tt></b><tt>09 00 00 42 00 00 00 00 00 00 00 <b>4B 00</b></tt></td>
- <td bgcolor="#ccffcc" width="50%"><i>Request to send Real Number
- "B"</i></td>
- </tr>
- <tr>
- <td bgcolor="#ffcccc">TI:</td>
- <td bgcolor="#ffcccc" width="50%"><b><tt>74 56 00 00</tt></b></td>
- <td bgcolor="#ffcccc" width="50%"><i>Acknowledgement of request</i></td>
- </tr>
- <tr>
- <td bgcolor="#ffcccc"> </td>
- <td bgcolor="#ffcccc" width="50%"><b><tt>74 36 01 00 </tt></b><tt>03 <b>03 00</b></tt></td>
- <td bgcolor="#ffcccc" width="50%"><i>Out of memory</i></td>
- </tr>
- <tr>
- <td bgcolor="#ccffcc">PC:</td>
- <td bgcolor="#ccffcc" width="50%"><b><tt>07 56 00 00</tt></b></td>
- <td bgcolor="#ccffcc" width="50%"><i>Acknowledgement of out of
- memory</i></td>
- </tr>
- </tbody>
- </table>
- <br>
- <table border="0" cellspacing="0" width="100%">
- <tbody>
- <tr>
- <td width="32%">
- <p align="center"><a href="manual.html"><img
- src="graphics/prevpage.gif" alt="[previous page]" align="bottom"
- border="2" height="32" width="32"><br>
- Manual Transfers</a> </p>
- </td>
- <td width="34%">
- <p align="center"><a href="index.html"><img
- src="graphics/home.gif" alt="[home]" align="bottom" border="2"
- height="32" width="32"><br>
- Table of Contents</a> </p>
- </td>
- <td width="34%">
- <p align="center"><a href="backup.html"><img
- src="graphics/nextpage.gif" alt="[next page]" align="bottom" border="2"
- height="32" width="32"><br>
- Backups</a> </p>
- </td>
- </tr>
- </tbody>
- </table>
- </p>
- <hr align="center"><i>Site maintained by Romain Liévin (</i><a
- href="mailto:roms@lpg.ticalc.org"><i>roms@lpg.ticalc.org</i></a><i>)
- and Tim Singer (</i><a href="mailto:tsinger@gladstone.uoregon.edu"><i>tsinger@gladstone.uoregon.edu</i></a><i>)</i>
- </body>
- </html>
|