fformat.html 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654
  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-92 Link Protocol Guide - File formats</title>
  7. </head>
  8. <body bgcolor="#ffffe8">
  9. <p><b>TI-92 Link Protocol Guide</b> - File formats </p>
  10. <center>
  11. <h2>
  12. <hr align="center">File Formats</h2>
  13. </center>
  14. <p>The TI-92 Graph Link software stores variables in several types of
  15. files. Single variables are stored in files
  16. that have an extension that corresponds with their type. Groups of
  17. variables are stored in files with the extension
  18. ".92g" and backups with the extension ".92b". However, all of these
  19. file types have a common
  20. format.</p>
  21. <p>The different file types and contents that the TI-92 Graph Link
  22. software can read and write are shown below.
  23. <table border="1" cellspacing="0" width="66%">
  24. <tbody>
  25. <tr>
  26. <th bgcolor="#dddddd" width="13%">Extension</th>
  27. <th bgcolor="#dddddd">Description</th>
  28. </tr>
  29. <tr>
  30. <td width="13%">
  31. <p align="center">.92a </p>
  32. </td>
  33. <td>TI-92 figure</td>
  34. </tr>
  35. <tr>
  36. <td width="13%">
  37. <p align="center">.92b </p>
  38. </td>
  39. <td>TI-92 system backup</td>
  40. </tr>
  41. <tr>
  42. <td width="13%">
  43. <p align="center">.92c </p>
  44. </td>
  45. <td>TI-92 data</td>
  46. </tr>
  47. <tr>
  48. <td width="13%">
  49. <p align="center">.92d </p>
  50. </td>
  51. <td>TI-92 GDB (Graphic Data Base)</td>
  52. </tr>
  53. <tr>
  54. <td width="13%">
  55. <p align="center">.92e </p>
  56. </td>
  57. <td>TI-92 expression</td>
  58. </tr>
  59. <tr>
  60. <td width="13%">
  61. <p align="center">.92f </p>
  62. </td>
  63. <td>TI-92 function</td>
  64. </tr>
  65. <tr>
  66. <td width="13%">
  67. <p align="center">.92g </p>
  68. </td>
  69. <td>Multiple TI-92 variables of varying types (group)</td>
  70. </tr>
  71. <tr>
  72. <td width="13%">
  73. <p align="center">.92i </p>
  74. </td>
  75. <td>TI-92 picture (image)</td>
  76. </tr>
  77. <tr>
  78. <td width="13%">
  79. <p align="center">.92l </p>
  80. </td>
  81. <td>TI-92 list</td>
  82. </tr>
  83. <tr>
  84. <td width="13%">
  85. <p align="center">.92m </p>
  86. </td>
  87. <td>TI-92 matrix</td>
  88. </tr>
  89. <tr>
  90. <td width="13%">
  91. <p align="center">.92p </p>
  92. </td>
  93. <td>TI-92 program</td>
  94. </tr>
  95. <tr>
  96. <td width="13%">
  97. <p align="center">.92s </p>
  98. </td>
  99. <td>TI-92 string</td>
  100. </tr>
  101. <tr>
  102. <td width="13%">
  103. <p align="center">.92t </p>
  104. </td>
  105. <td>TI-92 text</td>
  106. </tr>
  107. <tr>
  108. <td width="13%">
  109. <p align="center">.92x </p>
  110. </td>
  111. <td>TI-92 macro</td>
  112. </tr>
  113. </tbody>
  114. </table>
  115. </p>
  116. <p></p>
  117. <p>Early link programs for the TI-92 used an additional file type
  118. ".92@" because the TI-Graph Link 92
  119. software had not been released for the PC. That format is described in
  120. this section as well.</p>
  121. <h3>
  122. <hr align="center">The TI-92 variable file format</h3>
  123. <p>The TI-92 variable file format has three parts: a header, a variable
  124. table and a data section.</p>
  125. <p>The header appears at the beginning of the file and takes the
  126. following format: <br>
  127. <i>Note - All 2-byte and 4-byte integers are stored little-endian
  128. Intel-style (least significant byte first).</i>
  129. <table border="1" cellspacing="0" width="92%">
  130. <tbody>
  131. <tr>
  132. <th bgcolor="#008800" width="8%"><font color="#ffffff">Offset</font></th>
  133. <th bgcolor="#008800" width="11%"><font color="#ffffff">Length</font></th>
  134. <th bgcolor="#008800" width="81%"><font color="#ffffff">Description</font></th>
  135. </tr>
  136. <tr>
  137. <td bgcolor="#ffffff" width="8%">0</td>
  138. <td bgcolor="#ffffff" width="11%">8 bytes</td>
  139. <td bgcolor="#ffffff" width="81%">8-character signature. The
  140. signature is always "<tt>**TI92**</tt>".</td>
  141. </tr>
  142. <tr>
  143. <td bgcolor="#ffffff" width="8%">8</td>
  144. <td bgcolor="#ffffff" width="11%">2 bytes</td>
  145. <td bgcolor="#ffffff" width="81%">2-byte further signature. These
  146. two bytes always contain {01h, 00h} = {1, 0}.</td>
  147. </tr>
  148. <tr>
  149. <td bgcolor="#ffffff" width="8%">10 (Ah)</td>
  150. <td bgcolor="#ffffff" width="11%">8 bytes</td>
  151. <td bgcolor="#ffffff" width="81%">Default folder name (zero
  152. terminated unless 8 characters long).</td>
  153. </tr>
  154. <tr>
  155. <td bgcolor="#ffffff" width="8%">18 (12h)</td>
  156. <td bgcolor="#ffffff" width="11%">40&nbsp;(28h)&nbsp;bytes</td>
  157. <td bgcolor="#ffffff" width="81%">Comment. The comment is either
  158. zero-terminated or padded on the right with space characters.</td>
  159. </tr>
  160. <tr>
  161. <td bgcolor="#ffffff" width="8%">58 (3Ah)</td>
  162. <td bgcolor="#ffffff" width="11%">2 bytes</td>
  163. <td bgcolor="#ffffff" width="81%">Number of variable and folder
  164. entries in the variable table.</td>
  165. </tr>
  166. </tbody>
  167. </table>
  168. <i>Note: If the first byte of the default folder name is 0, then the
  169. default folder is the current folder on the
  170. receiving unit.</i></p>
  171. <p></p>
  172. <p>The variable table comes immediately after the header and consists
  173. of a number of 16-byte entries, each taking the format described below.
  174. Folder entries share the same table. The variables described before the
  175. first folder entry are assumed to be in the default folder. Variables
  176. described after any given folder entry are placed in that folder. <br>
  177. If no folder entries are included, then variables are considered to be
  178. part of the folder named at file offset 0x0A. If this is null, then it
  179. is considered to be in the current directory when a link program sends
  180. it.</p>
  181. <p>Each variable entry follows this format:
  182. <table border="1" cellspacing="0" width="92%">
  183. <tbody>
  184. <tr>
  185. <th bgcolor="#008800" width="8%"><font color="#ffffff">Offset</font></th>
  186. <th bgcolor="#008800" width="11%"><font color="#ffffff">Length</font></th>
  187. <th bgcolor="#008800" width="81%"><font color="#ffffff">Description</font></th>
  188. </tr>
  189. <tr>
  190. <td bgcolor="#ffffff" width="8%">0</td>
  191. <td bgcolor="#ffffff" width="11%">4 bytes</td>
  192. <td bgcolor="#ffffff" width="81%">Offset to the data for this
  193. variable from the beginning of the file.</td>
  194. </tr>
  195. <tr>
  196. <td bgcolor="#ffffff" width="8%">4</td>
  197. <td bgcolor="#ffffff" width="11%">8 bytes</td>
  198. <td bgcolor="#ffffff" width="81%">Name of variable (zero
  199. terminated if not 8 characters long).</td>
  200. </tr>
  201. <tr>
  202. <td bgcolor="#ffffff" width="8%">12 (Ch)</td>
  203. <td bgcolor="#ffffff" width="11%">1 byte</td>
  204. <td bgcolor="#ffffff" width="81%">Type ID of the variable.</td>
  205. </tr>
  206. <tr>
  207. <td bgcolor="#ffffff" width="8%">13 (Dh)</td>
  208. <td bgcolor="#ffffff" width="11%">1 byte</td>
  209. <td bgcolor="#ffffff" width="81%">Attribute (0: none, 1: locked)</td>
  210. </tr>
  211. <tr>
  212. <td bgcolor="#ffffff" width="8%">14 (Eh)</td>
  213. <td bgcolor="#ffffff" width="11%">2 bytes</td>
  214. <td bgcolor="#ffffff" width="81%">Unused - each byte has a value
  215. of 0.</td>
  216. </tr>
  217. </tbody>
  218. </table>
  219. <br>
  220. Folder entries follow this format:
  221. <table border="1" cellspacing="0" width="92%">
  222. <tbody>
  223. <tr>
  224. <th bgcolor="#008800" width="8%"><font color="#ffffff">Offset</font></th>
  225. <th bgcolor="#008800" width="11%"><font color="#ffffff">Length</font></th>
  226. <th bgcolor="#008800" width="81%"><font color="#ffffff">Description</font></th>
  227. </tr>
  228. <tr>
  229. <td bgcolor="#ffffff" width="8%">0</td>
  230. <td bgcolor="#ffffff" width="11%">4 bytes</td>
  231. <td bgcolor="#ffffff" width="81%">Offset to the data for the next
  232. variable from the beginning of the file.</td>
  233. </tr>
  234. <tr>
  235. <td bgcolor="#ffffff" width="8%">4</td>
  236. <td bgcolor="#ffffff" width="11%">8 bytes</td>
  237. <td bgcolor="#ffffff" width="81%">Name of variable (zero
  238. terminated if not 8 characters long).</td>
  239. </tr>
  240. <tr>
  241. <td bgcolor="#ffffff" width="8%">12 (Ch)</td>
  242. <td bgcolor="#ffffff" width="11%">1 byte</td>
  243. <td bgcolor="#ffffff" width="81%">Type ID of the variable. For
  244. folders, this value is always 1Fh.</td>
  245. </tr>
  246. <tr>
  247. <td bgcolor="#ffffff" width="8%">13 (Dh)</td>
  248. <td bgcolor="#ffffff" width="11%">1 byte</td>
  249. <td bgcolor="#ffffff" width="81%">Unused - this byte has a value
  250. of 0.</td>
  251. </tr>
  252. <tr>
  253. <td bgcolor="#ffffff" width="8%">14 (Eh)</td>
  254. <td bgcolor="#ffffff" width="11%">2 bytes</td>
  255. <td bgcolor="#ffffff" width="81%">The number of variables in this
  256. folder.</td>
  257. </tr>
  258. </tbody>
  259. </table>
  260. <br>
  261. Finally, the data section, which follows the variable table, has this
  262. format:<br>
  263. <table border="1" cellspacing="0" width="92%">
  264. <tbody>
  265. <tr>
  266. <th bgcolor="#008800" width="8%"><font color="#ffffff">Offset</font></th>
  267. <th bgcolor="#008800" width="11%"><font color="#ffffff">Length</font></th>
  268. <th bgcolor="#008800" width="81%"><font color="#ffffff">Description</font></th>
  269. </tr>
  270. <tr>
  271. <td bgcolor="#ffffff" width="8%">0</td>
  272. <td bgcolor="#ffffff" width="11%">4 bytes</td>
  273. <td bgcolor="#ffffff" width="81%">The file size, in bytes.</td>
  274. </tr>
  275. <tr>
  276. <td bgcolor="#ffffff" width="8%">4</td>
  277. <td bgcolor="#ffffff" width="11%">2 bytes</td>
  278. <td bgcolor="#ffffff" width="81%">A 2-byte signature. These two
  279. bytes always contain {A5h, 5Ah}.</td>
  280. </tr>
  281. <tr>
  282. <td bgcolor="#ffffff" width="8%">6</td>
  283. <td bgcolor="#ffffff" width="11%"><i>n</i> bytes</td>
  284. <td bgcolor="#ffffff" width="81%">Data section.</td>
  285. </tr>
  286. </tbody>
  287. </table>
  288. </p>
  289. <p></p>
  290. <p>The data section consists of several variable data parts
  291. back-to-back, in order of their listing in the variable
  292. table. Each variable part has this format:
  293. <table border="1" cellspacing="0" width="92%">
  294. <tbody>
  295. <tr>
  296. <th bgcolor="#008800" width="8%"><font color="#ffffff">Offset</font></th>
  297. <th bgcolor="#008800" width="11%"><font color="#ffffff">Length</font></th>
  298. <th bgcolor="#008800" width="81%"><font color="#ffffff">Description</font></th>
  299. </tr>
  300. <tr>
  301. <td bgcolor="#ffffff" width="8%">0</td>
  302. <td bgcolor="#ffffff" width="11%"><i>m</i> bytes</td>
  303. <td bgcolor="#ffffff" width="81%">The variable data. This field
  304. includes all bytes transferred in data packets. The first four bytes
  305. usually all have a value of 0.</td>
  306. </tr>
  307. <tr>
  308. <td bgcolor="#ffffff" width="8%"><i>m</i></td>
  309. <td bgcolor="#ffffff" width="11%">2 bytes</td>
  310. <td bgcolor="#ffffff" width="81%">Checksum. This is the lower 16
  311. bits of the sum of all bytes in the first four bytes and the variable
  312. data.</td>
  313. </tr>
  314. </tbody>
  315. </table>
  316. </p>
  317. <p></p>
  318. <h3>
  319. <hr align="center">A simplification of the TI-92 file format for a
  320. single variable</h3>
  321. <p>Files containing single variables are a simple yet common example of
  322. the TI-92 file format. In this special
  323. case, the file format can be simplified as follows:
  324. <table border="1" cellspacing="0" width="92%">
  325. <tbody>
  326. <tr>
  327. <th bgcolor="#008800" width="8%"><font color="#ffffff">Offset</font></th>
  328. <th bgcolor="#008800" width="11%"><font color="#ffffff">Length</font></th>
  329. <th bgcolor="#008800" width="81%"><font color="#ffffff">Description</font></th>
  330. </tr>
  331. <tr>
  332. <td bgcolor="#ffffff" width="8%">0</td>
  333. <td bgcolor="#ffffff" width="11%">8 bytes</td>
  334. <td bgcolor="#ffffff" width="81%">8-character signature. The
  335. signature is always "<tt>**TI92**</tt>".</td>
  336. </tr>
  337. <tr>
  338. <td bgcolor="#ffffff" width="8%">8</td>
  339. <td bgcolor="#ffffff" width="11%">2 bytes</td>
  340. <td bgcolor="#ffffff" width="81%">2-byte further signature. These
  341. two bytes always contain {01h, 00h} = {1, 0}.</td>
  342. </tr>
  343. <tr>
  344. <td bgcolor="#ffffff" width="8%">10 (Ah)</td>
  345. <td bgcolor="#ffffff" width="11%">8 bytes</td>
  346. <td bgcolor="#ffffff" width="81%">The parent folder of the
  347. variable (zero terminated if not 8 characters long) - <i>See note below</i>.</td>
  348. </tr>
  349. <tr>
  350. <td bgcolor="#ffffff" width="8%">18 (12h)</td>
  351. <td bgcolor="#ffffff" width="11%">40 (28h) bytes</td>
  352. <td bgcolor="#ffffff" width="81%">Comment. The comment is either
  353. zero-terminated or padded on the right with space characters.</td>
  354. </tr>
  355. <tr>
  356. <td bgcolor="#ffffff" width="8%">58 (3Ah)</td>
  357. <td bgcolor="#ffffff" width="11%">6 bytes</td>
  358. <td bgcolor="#ffffff" width="81%">These 6 bytes always contain
  359. {01h, 00h, 52h, 00h, 00h, 00h} = {1, 0, 82, 0, 0, 0}.</td>
  360. </tr>
  361. <tr>
  362. <td bgcolor="#ffffff" width="8%">64 (40h)</td>
  363. <td bgcolor="#ffffff" width="11%">8 bytes</td>
  364. <td bgcolor="#ffffff" width="81%">The name of the variable (zero
  365. terminated if not 8 characters long).</td>
  366. </tr>
  367. <tr>
  368. <td bgcolor="#ffffff" width="8%">72 (48h)</td>
  369. <td bgcolor="#ffffff" width="11%">1 byte</td>
  370. <td bgcolor="#ffffff" width="81%">The type ID for this variable.</td>
  371. </tr>
  372. <tr>
  373. <td bgcolor="#ffffff" width="8%">73 (49h)</td>
  374. <td bgcolor="#ffffff" width="11%">3 bytes</td>
  375. <td bgcolor="#ffffff" width="81%">These three bytes always have a
  376. value of 0.</td>
  377. </tr>
  378. <tr>
  379. <td bgcolor="#ffffff" width="8%">76 (4Ch)</td>
  380. <td bgcolor="#ffffff" width="11%">4 bytes</td>
  381. <td bgcolor="#ffffff" width="81%">The file size, in bytes.</td>
  382. </tr>
  383. <tr>
  384. <td bgcolor="#ffffff" width="8%">80 (50h)</td>
  385. <td bgcolor="#ffffff" width="11%">2 bytes</td>
  386. <td bgcolor="#ffffff" width="81%">A 2-byte signature. These two
  387. bytes always contain {A5h, 5Ah}.</td>
  388. </tr>
  389. <tr>
  390. <td bgcolor="#ffffff" width="8%">82 (52h)</td>
  391. <td bgcolor="#ffffff" width="11%"><i>n</i> bytes</td>
  392. <td bgcolor="#ffffff" width="81%">The variable data. This field
  393. includes all bytes transferred in data packets. The first four bytes
  394. usually all have a value of 0.</td>
  395. </tr>
  396. <tr>
  397. <td bgcolor="#ffffff" width="8%">82 (52h)+<i>n</i></td>
  398. <td bgcolor="#ffffff" width="11%">2 bytes</td>
  399. <td bgcolor="#ffffff" width="81%">Checksum. This is the lower 16
  400. bits of the sum of all bytes in the variable data (@52h).</td>
  401. </tr>
  402. </tbody>
  403. </table>
  404. <i>Note: If the first byte of the name of the parent folder is 0, then
  405. the variable is put into the current folder
  406. on the receiving unit.</i>
  407. </p>
  408. <h3>
  409. <hr align="center">The TI-92 backup file format</h3>
  410. <p>The TI-92 backup file format is similar to the group file format,
  411. but there are some functional differences.
  412. Backup data cannot be stored in the same file as variable data, and
  413. some of the bytes in a backup file have special
  414. meanings. While the backup is sent in several sections, there is only
  415. one variable entry for the backup.</p>
  416. <p>TI-92 backup files follow this format:
  417. <table border="1" cellspacing="0" width="92%">
  418. <tbody>
  419. <tr>
  420. <th bgcolor="#008800" width="8%"><font color="#ffffff">Offset</font></th>
  421. <th bgcolor="#008800" width="11%"><font color="#ffffff">Length</font></th>
  422. <th bgcolor="#008800" width="81%"><font color="#ffffff">Description</font></th>
  423. </tr>
  424. <tr>
  425. <td bgcolor="#ffffff" width="8%">0</td>
  426. <td bgcolor="#ffffff" width="11%">8 bytes</td>
  427. <td bgcolor="#ffffff" width="81%">8-character signature. The
  428. signature is always "<tt>**TI92**</tt>".</td>
  429. </tr>
  430. <tr>
  431. <td bgcolor="#ffffff" width="8%">8</td>
  432. <td bgcolor="#ffffff" width="11%">2 bytes</td>
  433. <td bgcolor="#ffffff" width="81%">2-byte further signature. These
  434. two bytes always contain {01h, 00h} = {1, 0}.</td>
  435. </tr>
  436. <tr>
  437. <td bgcolor="#ffffff" width="8%">10 (Ah)</td>
  438. <td bgcolor="#ffffff" width="11%">8 bytes</td>
  439. <td bgcolor="#ffffff" width="81%">The first byte always has a
  440. value of 0; the other seven can have any value.</td>
  441. </tr>
  442. <tr>
  443. <td bgcolor="#ffffff" width="8%">18 (12h)</td>
  444. <td bgcolor="#ffffff" width="11%">40 (28h) bytes</td>
  445. <td bgcolor="#ffffff" width="81%">Comment. The comment is either
  446. zero-terminated or padded on the right with space characters.</td>
  447. </tr>
  448. <tr>
  449. <td bgcolor="#ffffff" width="8%">58 (3Ah)</td>
  450. <td bgcolor="#ffffff" width="11%">2 bytes</td>
  451. <td bgcolor="#ffffff" width="81%">These 2 bytes always contain
  452. {01h, 00h}.</td>
  453. </tr>
  454. <tr>
  455. <td bgcolor="#ffffff" width="8%">60 (3Ch)</td>
  456. <td bgcolor="#ffffff" width="11%">4 bytes</td>
  457. <td bgcolor="#ffffff" width="81%">These 4bytes always contain
  458. {52h, 00h, 00h, 00h} = {82, 0, 0, 0}.</td>
  459. </tr>
  460. <tr>
  461. <td bgcolor="#ffffff" width="8%">64 (40h)</td>
  462. <td bgcolor="#ffffff" width="11%">8 bytes</td>
  463. <td bgcolor="#ffffff" width="81%">A string which contains the ROM
  464. version of the calculator (zero-terminated). Examples: "1.11", "2.1"</td>
  465. </tr>
  466. <tr>
  467. <td bgcolor="#ffffff" width="8%">72 (48h)</td>
  468. <td bgcolor="#ffffff" width="11%">1 byte</td>
  469. <td bgcolor="#ffffff" width="81%">This byte always contains 1Dh.</td>
  470. </tr>
  471. <tr>
  472. <td bgcolor="#ffffff" width="8%">73 (49h)</td>
  473. <td bgcolor="#ffffff" width="11%">3 bytes</td>
  474. <td bgcolor="#ffffff" width="81%">These three bytes always have a
  475. value of 0.</td>
  476. </tr>
  477. <tr>
  478. <td bgcolor="#ffffff" width="8%">76 (4Ch)</td>
  479. <td bgcolor="#ffffff" width="11%">4 bytes</td>
  480. <td bgcolor="#ffffff" width="81%">The file size, in bytes.</td>
  481. </tr>
  482. <tr>
  483. <td bgcolor="#ffffff" width="8%">80 (50h)</td>
  484. <td bgcolor="#ffffff" width="11%">2 bytes</td>
  485. <td bgcolor="#ffffff" width="81%">A 2-byte further signature.
  486. These two bytes always contain {A5h, 5Ah}.</td>
  487. </tr>
  488. <tr>
  489. <td bgcolor="#ffffff" width="8%">82 (52h)</td>
  490. <td bgcolor="#ffffff" width="11%"><i>n</i> bytes</td>
  491. <td bgcolor="#ffffff" width="81%">Raw data, made up of the
  492. 1-kilobyte blocks stored back-to-back in order of transmission. These
  493. blocks do <b>not</b> include the first four bytes of each of the data
  494. packets.</td>
  495. </tr>
  496. <tr>
  497. <td bgcolor="#ffffff" width="8%">82 (52h)+<i>n</i></td>
  498. <td bgcolor="#ffffff" width="11%">2 bytes</td>
  499. <td bgcolor="#ffffff" width="81%">File checksum. This is the
  500. lower 16 bits of the sum of all bytes in the raw data (@52h).</td>
  501. </tr>
  502. </tbody>
  503. </table>
  504. </p>
  505. <p></p>
  506. <h3>
  507. <hr align="center">The early 92@ file format</h3>
  508. <p>Linking programs were available for the TI-92 before TI released the
  509. TI-92 Graph Link for the PC. The creators
  510. of Link92xp, one of these early TI-92 linking programs, designed this
  511. file format to store the information. While
  512. this format was never supported by TI and is now obsolete, there are
  513. still some 92@ files floating about the internet.</p>
  514. <p>92@ files start with a header with this format:<br>
  515. <table border="1" cellspacing="0" width="92%">
  516. <tbody>
  517. <tr>
  518. <th bgcolor="#008800" width="8%"><font color="#ffffff">Offset</font></th>
  519. <th bgcolor="#008800" width="11%"><font color="#ffffff">Length</font></th>
  520. <th bgcolor="#008800" width="81%"><font color="#ffffff">Description</font></th>
  521. </tr>
  522. <tr>
  523. <td bgcolor="#ffffff" width="8%">0</td>
  524. <td bgcolor="#ffffff" width="11%">8 bytes</td>
  525. <td bgcolor="#ffffff" width="81%">8-character signature. The
  526. signature is always "<tt>**TI92**</tt>".</td>
  527. </tr>
  528. <tr>
  529. <td bgcolor="#ffffff" width="8%">8</td>
  530. <td bgcolor="#ffffff" width="11%">3 bytes</td>
  531. <td bgcolor="#ffffff" width="81%">3-byte further signature. These
  532. two bytes always contain {1Ah, 0Ch, 00h} = {26, 12, 0}.</td>
  533. </tr>
  534. <tr>
  535. <td bgcolor="#ffffff" width="8%">11 (Bh)</td>
  536. <td bgcolor="#ffffff" width="11%">42 (2Ah) bytes</td>
  537. <td bgcolor="#ffffff" width="81%">Comment. The comment is either
  538. zero-terminated or padded on the right with space characters.</td>
  539. </tr>
  540. <tr>
  541. <td bgcolor="#ffffff" width="8%">53 (35h)</td>
  542. <td bgcolor="#ffffff" width="11%">2 bytes</td>
  543. <td bgcolor="#ffffff" width="81%">Length, in bytes, of the data
  544. section and the checksum (<i>n</i>+2). This value should be 37h less
  545. than the file length.</td>
  546. </tr>
  547. <tr>
  548. <td bgcolor="#ffffff" width="8%">55 (37h)</td>
  549. <td bgcolor="#ffffff" width="11%"><i>n</i> bytes</td>
  550. <td bgcolor="#ffffff" width="81%">Data section - made up of a
  551. number of entries, described below.</td>
  552. </tr>
  553. <tr>
  554. <td bgcolor="#ffffff" width="8%">54 (36h)+<i>n</i></td>
  555. <td bgcolor="#ffffff" width="11%">2 bytes</td>
  556. <td bgcolor="#ffffff" width="81%">File checksum. This is the
  557. lower 16 bits of the sum of all bytes in the data section.</td>
  558. </tr>
  559. </tbody>
  560. </table>
  561. </p>
  562. <p></p>
  563. <p>Each variable entry in the data section has this format:<br>
  564. <table border="1" cellspacing="0" width="92%">
  565. <tbody>
  566. <tr>
  567. <th bgcolor="#008800" width="8%"><font color="#ffffff">Offset</font></th>
  568. <th bgcolor="#008800" width="11%"><font color="#ffffff">Length</font></th>
  569. <th bgcolor="#008800" width="81%"><font color="#ffffff">Description</font></th>
  570. </tr>
  571. <tr>
  572. <td bgcolor="#ffffff" width="8%">0</td>
  573. <td bgcolor="#ffffff" width="11%">1 byte</td>
  574. <td bgcolor="#ffffff" width="81%">Offset from the next byte to
  575. the data length field. This number should be 4+<i>m</i>, where <i>m</i>
  576. is defined below.</td>
  577. </tr>
  578. <tr>
  579. <td bgcolor="#ffffff" width="8%">1</td>
  580. <td bgcolor="#ffffff" width="11%">2 bytes</td>
  581. <td bgcolor="#ffffff" width="81%">Offset from the beginning of
  582. the entry to the raw data. This number should be 3 more than the value
  583. at offset 0.</td>
  584. </tr>
  585. <tr>
  586. <td bgcolor="#ffffff" width="8%">3</td>
  587. <td bgcolor="#ffffff" width="11%">1 byte</td>
  588. <td bgcolor="#ffffff" width="81%">Variable type ID.</td>
  589. </tr>
  590. <tr>
  591. <td bgcolor="#ffffff" width="8%">4</td>
  592. <td bgcolor="#ffffff" width="11%">1 byte</td>
  593. <td bgcolor="#ffffff" width="81%">Length, in characters, of the
  594. variable directory/name field.</td>
  595. </tr>
  596. <tr>
  597. <td bgcolor="#ffffff" width="8%">5</td>
  598. <td bgcolor="#ffffff" width="11%"><i>m</i> bytes</td>
  599. <td bgcolor="#ffffff" width="81%">Variable directory/name. If a
  600. directory is specified, its name comes first, followed by a backslash
  601. (\) character, then the variable name. If no directory is specified,
  602. there is no backslash and the variable is put in the current directory
  603. of the calculator.</td>
  604. </tr>
  605. <tr>
  606. <td bgcolor="#ffffff" width="8%">5+<i>m</i></td>
  607. <td bgcolor="#ffffff" width="11%">2 bytes</td>
  608. <td bgcolor="#ffffff" width="81%">Length, in bytes, of the
  609. variable data.</td>
  610. </tr>
  611. <tr>
  612. <td bgcolor="#ffffff" width="8%">7+<i>m</i></td>
  613. <td bgcolor="#ffffff" width="11%"><i>n</i> bytes</td>
  614. <td bgcolor="#ffffff" width="81%">The variable data, not
  615. including the first five bytes sent with the data packet. The first
  616. four bytes of the packet are unimportant, and the fifth byte of the
  617. packet can be calculated by subtracting 2 from the value at offset <i>5+m</i>
  618. and taking the upper 8 bits.</td>
  619. </tr>
  620. </tbody>
  621. </table>
  622. </p>
  623. <p></p>
  624. <p>
  625. <table border="0" cellspacing="0" width="100%">
  626. <tbody>
  627. <tr>
  628. <td width="32%">
  629. <p align="center"><a href="vars.html"><img
  630. src="graphics/prevpage.gif" alt="[previous page]" align="bottom"
  631. border="2" height="32" width="32"></a> <br>
  632. <a href="vars.html">Variable Formats</a> </p>
  633. </td>
  634. <td width="34%">
  635. <p align="center"><a href="index.html"><img
  636. src="graphics/home.gif" alt="[home]" align="bottom" border="2"
  637. height="32" width="32"></a> <br>
  638. <a href="index.html">Table of Contents</a> </p>
  639. </td>
  640. <td width="34%">
  641. <p align="center"><a href="tokens.html"><img
  642. src="graphics/nextpage.gif" alt="[next page]" align="bottom" border="2"
  643. height="32" width="32"></a> <br>
  644. <a href="tokens.html">Tokens and Characters</a> </p>
  645. </td>
  646. </tr>
  647. </tbody>
  648. </table>
  649. </p>
  650. <hr align="center"><i>Site maintained by Romain Li&eacute;vin (</i><a
  651. href="mailto:roms@lpg.ticalc.org"><i>roms@lpg.ticalc.org</i></a><i>)
  652. and Tim Singer (</i><a href="mailto:tsinger@gladstone.uoregon.edu"><i>tsinger@gladstone.uoregon.edu</i></a><i>)</i>
  653. </body>
  654. </html>