packet.html 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
  2. <HTML>
  3. <HEAD>
  4. <META NAME="GENERATOR" Content="Visual Page 1.0 for Windows">
  5. <META HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=iso-8859-1">
  6. <TITLE>TI-82 Link Protocol Guide - Packet formats</TITLE>
  7. </HEAD>
  8. <BODY BGCOLOR="#FFFFE8">
  9. <P><B>TI-82 Link Protocol Guide v1.0</B> - Packet formats</P>
  10. <CENTER>
  11. <H2>
  12. <HR ALIGN="CENTER">
  13. Packet Formats</H2>
  14. </CENTER>
  15. <P>Texas Instruments calculators always send data and responses in self-contained &quot;packets.&quot;<BR>
  16. Packets have the following format:<BR>
  17. <I>Note - all 2-byte integers are transmitted little-endian Intel-style (least significant byte first).</I></P>
  18. <P>
  19. <TABLE BORDER="1" CELLSPACING="0" WIDTH="92%">
  20. <TR>
  21. <TH WIDTH="7%" BGCOLOR="#008800"><FONT COLOR="#FFFFFF">Offset</FONT></TH>
  22. <TH WIDTH="8%" BGCOLOR="#008800"><FONT COLOR="#FFFFFF">Length</FONT></TH>
  23. <TH WIDTH="85%" BGCOLOR="#008800"><FONT COLOR="#FFFFFF">Description</FONT></TH>
  24. </TR>
  25. <TR>
  26. <TD WIDTH="7%" BGCOLOR="#FFFFFF">0</TD>
  27. <TD WIDTH="8%" BGCOLOR="#FFFFFF">1 byte</TD>
  28. <TD WIDTH="85%" BGCOLOR="#FFFFFF">Machine ID byte</TD>
  29. </TR>
  30. <TR>
  31. <TD WIDTH="7%" BGCOLOR="#FFFFFF">1</TD>
  32. <TD WIDTH="8%" BGCOLOR="#FFFFFF">1 byte</TD>
  33. <TD WIDTH="85%" BGCOLOR="#FFFFFF">Command ID byte</TD>
  34. </TR>
  35. <TR>
  36. <TD WIDTH="7%" BGCOLOR="#FFFFFF">2</TD>
  37. <TD WIDTH="8%" BGCOLOR="#FFFFFF">2 bytes</TD>
  38. <TD WIDTH="85%" BGCOLOR="#FFFFFF">Length of data (see note below)</TD>
  39. </TR>
  40. <TR>
  41. <TD WIDTH="7%" BGCOLOR="#FFFFFF">4</TD>
  42. <TD WIDTH="8%" BGCOLOR="#FFFFFF"><I>n</I> bytes</TD>
  43. <TD WIDTH="85%" BGCOLOR="#FFFFFF">Data (if attached)</TD>
  44. </TR>
  45. <TR>
  46. <TD WIDTH="7%" BGCOLOR="#FFFFFF">4+<I>n</I></TD>
  47. <TD WIDTH="8%" BGCOLOR="#FFFFFF">2 bytes</TD>
  48. <TD WIDTH="85%" BGCOLOR="#FFFFFF">Checksum (if data is attached)</TD>
  49. </TR>
  50. </TABLE>
  51. <I>Note - The &quot;Length of data&quot; element may not be equal to zero if the packet contains no data. In this
  52. case, the Command ID byte will indicate that the packet contains no data.</I><p></P>
  53. <H4>The Machine ID Byte</H4>
  54. <P>The Machine ID byte identifies the machine that is sending the packet. It can have one of the following values:
  55. <TABLE BORDER="1" CELLSPACING="0" WIDTH="66%">
  56. <TR>
  57. <TH WIDTH="13%" BGCOLOR="#DDDDDD">Value</TH>
  58. <TH BGCOLOR="#DDDDDD">Description</TH>
  59. </TR>
  60. <TR>
  61. <TD WIDTH="13%">02h</TD>
  62. <TD>Computer sending TI-82 data</TD>
  63. </TR>
  64. <TR>
  65. <TD WIDTH="13%">82h</TD>
  66. <TD>TI-82</TD>
  67. </TR>
  68. </TABLE>
  69. <p></P>
  70. <H4>The Command ID Byte</H4>
  71. <P>The Command ID byte identifies the request or response that the machine is sending. It can have one of the following
  72. values:</P>
  73. <P>
  74. <TABLE BORDER="1" CELLSPACING="0" WIDTH="66%">
  75. <TR>
  76. <TH WIDTH="22%" BGCOLOR="#DDDDDD">Value</TH>
  77. <TH WIDTH="259" BGCOLOR="#DDDDDD">Description</TH>
  78. <TH BGCOLOR="#DDDDDD">Data Included</TH>
  79. </TR>
  80. <TR>
  81. <TD WIDTH="22%">06h</TD>
  82. <TD WIDTH="259">Variable Header (VAR)</TD>
  83. <TD>A <A HREF="#varheader">variable header</A></TD>
  84. </TR>
  85. <TR>
  86. <TD WIDTH="22%">09h</TD>
  87. <TD WIDTH="259">Clear to send (CTS)</TD>
  88. <TD><I>None</I></TD>
  89. </TR>
  90. <TR>
  91. <TD WIDTH="22%">15h</TD>
  92. <TD WIDTH="259">Data packet (DATA)</TD>
  93. <TD>Screenshot/variable/backup data</TD>
  94. </TR>
  95. <TR>
  96. <TD WIDTH="22%">36h</TD>
  97. <TD WIDTH="259">Skip/Exit (SKIP/EXIT)</TD>
  98. <TD>A one-byte rejection code (see codes below)</TD>
  99. </TR>
  100. <TR>
  101. <TD WIDTH="22%">56h</TD>
  102. <TD WIDTH="259">Acknowledge (ACK)</TD>
  103. <TD><I>None</I></TD>
  104. </TR>
  105. <TR>
  106. <TD WIDTH="22%">5Ah</TD>
  107. <TD WIDTH="259">Checksum Error (ERR)<BR>
  108. The previous packet must be sent again.</TD>
  109. <TD><I>None</I></TD>
  110. </TR>
  111. <TR>
  112. <TD WIDTH="22%">6Dh</TD>
  113. <TD WIDTH="259"><I>Silent</I> - Request Screenshot (SCR)</TD>
  114. <TD><I>None</I></TD>
  115. </TR>
  116. <TR>
  117. <TD WIDTH="22%">92h</TD>
  118. <TD WIDTH="259">End of Transmission (EOT)</TD>
  119. <TD><I>None</I></TD>
  120. </TR>
  121. <TR>
  122. <TD WIDTH="22%">A2h</TD>
  123. <TD WIDTH="259"><I>Silent</I> - Request Variable (REQ)</TD>
  124. <TD>A <A HREF="#varheader">variable header</A></TD>
  125. </TR>
  126. <TR>
  127. <TD WIDTH="22%">C9h</TD>
  128. <TD WIDTH="259"><I>Silent</I> - Request to Send Variable (RTS)</TD>
  129. <TD>A <A HREF="#varheader">variable header</A></TD>
  130. </TR>
  131. </TABLE>
  132. <p></P>
  133. <P>Rejection codes (used with Command ID 36h) can have one of the following values:</P>
  134. <P>
  135. <TABLE BORDER="1" CELLSPACING="0" WIDTH="66%">
  136. <TR>
  137. <TH WIDTH="13%" BGCOLOR="#DDDDDD">Value</TH>
  138. <TH BGCOLOR="#DDDDDD">Description</TH>
  139. </TR>
  140. <TR>
  141. <TD WIDTH="13%">01h</TD>
  142. <TD>EXIT - The entire transmission has been cancelled.</TD>
  143. </TR>
  144. <TR>
  145. <TD WIDTH="13%">02h</TD>
  146. <TD>SKIP - The current variable has been skipped.</TD>
  147. </TR>
  148. <TR>
  149. <TD WIDTH="13%">03h</TD>
  150. <TD>OUT OF MEMORY (silent transmissions only) - The receiving calculator is out of memory.</TD>
  151. </TR>
  152. </TABLE>
  153. <p></P>
  154. <H4>The Checksum</H4>
  155. <P>The checksum is a 16-bit value used to verify the integrity of the data in the packet. It only present if data
  156. is present.<BR>
  157. The checksum is calculated by taking the lower 16 bits of the sum of the data bytes, as shown below:</P>
  158. <PRE>int calculateChecksum(unsigned char* data, unsigned short datalength) {
  159. unsigned short x, checksum;
  160. for(x=0; x&lt;datalength; x++) {
  161. checksum+=data[x]; //overflow automatically limits to 16 bits
  162. }
  163. return checksum;
  164. }</PRE>
  165. <CENTER>
  166. <H3>
  167. <HR ALIGN="CENTER">
  168. <A NAME="varheader"></A>Variable Headers</H3>
  169. </CENTER>
  170. <P>A Variable header contains information about one variable in the calculator.<BR>
  171. <TABLE BORDER="1" CELLSPACING="0" WIDTH="92%">
  172. <TR>
  173. <TH WIDTH="7%" BGCOLOR="#008800"><FONT COLOR="#FFFFFF">Offset</FONT></TH>
  174. <TH WIDTH="8%" BGCOLOR="#008800"><FONT COLOR="#FFFFFF">Length</FONT></TH>
  175. <TH WIDTH="85%" BGCOLOR="#008800"><FONT COLOR="#FFFFFF">Description</FONT></TH>
  176. </TR>
  177. <TR>
  178. <TD WIDTH="7%" BGCOLOR="#FFFFFF">0</TD>
  179. <TD WIDTH="8%" BGCOLOR="#FFFFFF">2 bytes</TD>
  180. <TD WIDTH="85%" BGCOLOR="#FFFFFF">Size of actual variable data, in bytes</TD>
  181. </TR>
  182. <TR>
  183. <TD WIDTH="7%" BGCOLOR="#FFFFFF">2</TD>
  184. <TD WIDTH="8%" BGCOLOR="#FFFFFF">1 byte</TD>
  185. <TD WIDTH="85%" BGCOLOR="#FFFFFF">Type ID Byte (see type ID's below)</TD>
  186. </TR>
  187. <TR>
  188. <TD WIDTH="7%" BGCOLOR="#FFFFFF">3</TD>
  189. <TD WIDTH="8%" BGCOLOR="#FFFFFF">8 bytes</TD>
  190. <TD WIDTH="85%" BGCOLOR="#FFFFFF">Variable name, padded on the right with NULL characters (0h). This field is always tokenized.</TD>
  191. </TR>
  192. </TABLE>
  193. <p><I>Note: These bytes only make up the &quot;data&quot; section of the packet.<br>
  194. </I></p>
  195. <p><I>Note2:<br>
  196. - f</I><I>or named lists (not L1..L0), the first token is a single 5D byte,
  197. followed by up to 7 alphanumeric tokens.<br>
  198. - for lists (L1..L0), the first token is a 5D byte followed by another byte:
  199. 00 for L1 to 09 for L0.<br>
  200. - for matrices ([A]..[E]), the first token is 5C followed by another byte: 00
  201. for [A] to 04 for [E].<br>
  202. </I><I>- for equations: there are 30 equations (Y1..Y0 in func mode, X1t..X6t
  203. and Y1t..Y6t in param mode, r1..r6 in polar mode and Un, Vn in seq mode). The
  204. varname is 5E10 for Y1 to 5E19 for Y0. The varname is 5E20 for X1t, 5E21 for
  205. Y1t to 5E2A for X6t, 5E2B for Y6t. The varname is 5E40 for r1 to 5E45 for r6.
  206. The varname is 5E80 for Un or 5E81 for Vn. <br>
  207. - for pictures (Pic1.. Pic6), the first token is 60 followed by another byte:
  208. 00 for Pic1 to 06 for Pic6.<br>
  209. - for gdbs (GDB1..GDB6), the first token is 61 followed by another byte: 00
  210. for GDB1 to 09 for GDB6. <br>
  211. </I> </p>
  212. <p></P>
  213. <H4><A NAME="vartypes"></A>The Type ID Byte</H4>
  214. <P>The type ID byte specifies the type of variable that is being transmitted. It can have one of the following
  215. values:</P>
  216. <P>
  217. <TABLE BORDER="1" CELLSPACING="0" WIDTH="66%">
  218. <TR>
  219. <TH WIDTH="13%" BGCOLOR="#DDDDDD">Value</TH>
  220. <TH BGCOLOR="#DDDDDD">Description (click for variable format)</TH>
  221. </TR>
  222. <TR>
  223. <TD WIDTH="13%">00h</TD>
  224. <TD><A HREF="vars.html#real">Real Number</A></TD>
  225. </TR>
  226. <TR>
  227. <TD WIDTH="13%">01h</TD>
  228. <TD><A HREF="vars.html#list">List</A></TD>
  229. </TR>
  230. <TR>
  231. <TD WIDTH="13%">02h</TD>
  232. <TD><A HREF="vars.html#matrix">Matrix</A></TD>
  233. </TR>
  234. <TR>
  235. <TD WIDTH="13%">03h</TD>
  236. <TD><A HREF="vars.html#equation">Y-Variable</A></TD>
  237. </TR>
  238. <TR>
  239. <TD WIDTH="13%">05h</TD>
  240. <TD><A HREF="vars.html#program">Program</A></TD>
  241. </TR>
  242. <TR>
  243. <TD WIDTH="13%">06h</TD>
  244. <TD>Edit-locked <A HREF="vars.html#program">Program</A></TD>
  245. </TR>
  246. <TR>
  247. <TD WIDTH="13%">07h</TD>
  248. <TD><A HREF="vars.html#picture">Picture</A></TD>
  249. </TR>
  250. <TR>
  251. <TD WIDTH="13%">08h</TD>
  252. <TD><A HREF="vars.html#gdb">GDB</A></TD>
  253. </TR>
  254. <TR>
  255. <TD WIDTH="13%">0Bh</TD>
  256. <TD><A HREF="vars.html#window">Window Settings</A><I> &quot;Window&quot; (See note below)</I></TD>
  257. </TR>
  258. <TR>
  259. <TD WIDTH="13%">0Ch</TD>
  260. <TD><A HREF="vars.html#window">Saved Window Settings</A><I> &quot;RclWindow&quot; (See note below)</I></TD>
  261. </TR>
  262. <TR>
  263. <TD WIDTH="13%">0Dh</TD>
  264. <TD><A HREF="vars.html#table">Table Setup</A><I> &quot;TblSet&quot; (See note below)</I></TD>
  265. </TR>
  266. <TR>
  267. <TD WIDTH="13%">0Eh</TD>
  268. <TD><A HREF="screenshot.html">Screenshot</A> sent with PrintScreen</TD>
  269. </TR>
  270. <TR>
  271. <TD WIDTH="13%">0Fh</TD>
  272. <TD><A HREF="backup.html">Backup</A> <I>(no meaningful name)</I></TD>
  273. </TR>
  274. </TABLE>
  275. <I>Note - If the Type ID is in the range 0Bh - 0Eh, then the contents of the name field of the header do not matter.</I><p></P>
  276. <H4><A NAME="backup"></A>Backup Header Format</H4>
  277. <P>If the type ID byte specifies a backup, the variable header takes the following 9-byte format:</P>
  278. <P>
  279. <TABLE BORDER="1" CELLSPACING="0" WIDTH="92%">
  280. <TR>
  281. <TH WIDTH="7%" BGCOLOR="#008800"><FONT COLOR="#FFFFFF">Offset</FONT></TH>
  282. <TH WIDTH="8%" BGCOLOR="#008800"><FONT COLOR="#FFFFFF">Length</FONT></TH>
  283. <TH WIDTH="85%" BGCOLOR="#008800"><FONT COLOR="#FFFFFF">Description</FONT></TH>
  284. </TR>
  285. <TR>
  286. <TD WIDTH="7%" BGCOLOR="#FFFFFF">0</TD>
  287. <TD WIDTH="8%" BGCOLOR="#FFFFFF">2 bytes</TD>
  288. <TD WIDTH="85%" BGCOLOR="#FFFFFF">Size of first backup section, in bytes</TD>
  289. </TR>
  290. <TR>
  291. <TD WIDTH="7%" BGCOLOR="#FFFFFF">2</TD>
  292. <TD WIDTH="8%" BGCOLOR="#FFFFFF">1 byte</TD>
  293. <TD WIDTH="85%" BGCOLOR="#FFFFFF">Type ID Byte (1Dh in this case)</TD>
  294. </TR>
  295. <TR>
  296. <TD WIDTH="7%" BGCOLOR="#FFFFFF">3</TD>
  297. <TD WIDTH="8%" BGCOLOR="#FFFFFF">2 bytes</TD>
  298. <TD WIDTH="85%" BGCOLOR="#FFFFFF">Size of second backup section, in bytes</TD>
  299. </TR>
  300. <TR>
  301. <TD WIDTH="7%" BGCOLOR="#FFFFFF">5</TD>
  302. <TD WIDTH="8%" BGCOLOR="#FFFFFF">2 bytes</TD>
  303. <TD WIDTH="85%" BGCOLOR="#FFFFFF">Size of third backup section, in bytes</TD>
  304. </TR>
  305. <TR>
  306. <TD WIDTH="7%" BGCOLOR="#FFFFFF">7</TD>
  307. <TD WIDTH="8%" BGCOLOR="#FFFFFF">2 bytes</TD>
  308. <TD WIDTH="85%" BGCOLOR="#FFFFFF">Memory address of the second data section
  309. ?</TD>
  310. </TR>
  311. </TABLE>
  312. <p></P>
  313. <P>
  314. <TABLE BORDER="0" CELLSPACING="0" WIDTH="100%">
  315. <TR>
  316. <TD WIDTH="32%">
  317. <P ALIGN="CENTER"><A HREF="cable.html"><IMG SRC="graphics/prevpage.gif" WIDTH="32" HEIGHT="32" ALIGN="BOTTOM" ALT="[previous page]"
  318. BORDER="2"><BR>
  319. Link Cables</A>
  320. </TD>
  321. <TD WIDTH="34%">
  322. <P ALIGN="CENTER"><A HREF="index.html"><IMG SRC="graphics/home.gif" WIDTH="32" HEIGHT="32" ALIGN="BOTTOM" ALT="[home]"
  323. BORDER="2"><BR>
  324. Table of Contents</A>
  325. </TD>
  326. <TD WIDTH="34%">
  327. <P ALIGN="CENTER"><A HREF="screenshot.html"><IMG SRC="graphics/nextpage.gif" WIDTH="32" HEIGHT="32" ALIGN="BOTTOM"
  328. ALT="[next page]" BORDER="2"><BR>
  329. Screenshots</A>
  330. </TD>
  331. </TR>
  332. </TABLE>
  333. <HR ALIGN="CENTER">
  334. <I>Site maintained by Romain Li&eacute;vin (</I><A HREF="mailto:roms@lpg.ticalc.org"><I>roms@lpg.ticalc.org</I></A><I>)
  335. and Tim Singer (</I><A HREF="mailto:tsinger@gladstone.uoregon.edu"><I>tsinger@gladstone.uoregon.edu</I></A><I>)</I>
  336. </BODY>
  337. </HTML>