fformat.html 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757
  1. <!DOCTYPE doctype PUBLIC "-//w3c//dtd html 4.0 transitional//en">
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type"
  5. content="text/html; charset=iso-8859-1">
  6. <meta name="GENERATOR"
  7. content="Mozilla/4.7 [en] (X11; I; Linux 2.4.0-test6 i586) [Netscape]">
  8. <title>TI-89 Link Protocol Guide - File formats</title>
  9. </head>
  10. <body bgcolor="#ffffe8">
  11. <b>TI-89 Link Protocol Guide</b> - File formats
  12. <center>
  13. <h2>
  14. <hr align="center">File Formats</h2>
  15. </center>
  16. The TI-89 Graph Link software stores variables in several types of
  17. files. Single variables are stored in files that have an extension that
  18. corresponds with their type. Groups of variables are stored in files
  19. with the extension ".89g" and backups with the extension ".89g" also.
  20. However, all of these file
  21. types have a common format apart from FLASH files. <br>
  22. Note: TI89/92/92+ have the same common file format.
  23. <p>The different file types and contents that the TI-89 Graph Link
  24. software can read and write are shown below.
  25. <table border="1" cellspacing="0" width="66%">
  26. <tbody>
  27. <tr>
  28. <th bgcolor="#dddddd" width="13%">Extension</th>
  29. <th bgcolor="#dddddd" width="13%">Extension</th>
  30. <th bgcolor="#dddddd" width="13%">Extension</th>
  31. <th bgcolor="#dddddd">Description</th>
  32. </tr>
  33. <tr>
  34. <td width="13%">
  35. <center> .89a&nbsp; </center>
  36. </td>
  37. <td width="13%">
  38. <center> .9xa&nbsp; </center>
  39. </td>
  40. <td width="13%">
  41. <center> .v2a&nbsp; </center>
  42. </td>
  43. <td>TI-89 figure</td>
  44. </tr>
  45. <tr>
  46. <td width="13%">
  47. <center> .89g&nbsp; </center>
  48. </td>
  49. <td width="13%">
  50. <center> .89g&nbsp; </center>
  51. </td>
  52. <td width="13%">
  53. <center> .89g&nbsp; </center>
  54. </td>
  55. <td>TI-89 system backup</td>
  56. </tr>
  57. <tr>
  58. <td width="13%">
  59. <center> .89c&nbsp; </center>
  60. </td>
  61. <td width="13%">
  62. <center> .89c&nbsp; </center>
  63. </td>
  64. <td width="13%">
  65. <center> .89c&nbsp; </center>
  66. </td>
  67. <td>TI-89 data</td>
  68. </tr>
  69. <tr>
  70. <td width="13%">
  71. <center> .89d&nbsp; </center>
  72. </td>
  73. <td width="13%">
  74. <center> .89d&nbsp; </center>
  75. </td>
  76. <td width="13%">
  77. <center> .89d&nbsp; </center>
  78. </td>
  79. <td>TI-89 GDB (Graphic Data Base)</td>
  80. </tr>
  81. <tr>
  82. <td width="13%">
  83. <center> .89e&nbsp; </center>
  84. </td>
  85. <td width="13%">
  86. <center> .89e&nbsp; </center>
  87. </td>
  88. <td width="13%">
  89. <center> .89e&nbsp; </center>
  90. </td>
  91. <td>TI-89 expression</td>
  92. </tr>
  93. <tr>
  94. <td width="13%">
  95. <center> .89f&nbsp; </center>
  96. </td>
  97. <td width="13%">
  98. <center> .89f&nbsp; </center>
  99. </td>
  100. <td width="13%">
  101. <center> .89f&nbsp; </center>
  102. </td>
  103. <td>TI-89 function</td>
  104. </tr>
  105. <tr>
  106. <td width="13%">
  107. <center> .89g&nbsp; </center>
  108. </td>
  109. <td width="13%">
  110. <center> .89g&nbsp; </center>
  111. </td>
  112. <td width="13%">
  113. <center> .89g&nbsp; </center>
  114. </td>
  115. <td>Multiple TI-89 variables of varying types (group)</td>
  116. </tr>
  117. <tr>
  118. <td width="13%">
  119. <center> .89i&nbsp; </center>
  120. </td>
  121. <td width="13%">
  122. <center> .89i&nbsp; </center>
  123. </td>
  124. <td width="13%">
  125. <center> .89i&nbsp; </center>
  126. </td>
  127. <td>TI-89 picture (image)</td>
  128. </tr>
  129. <tr>
  130. <td width="13%">
  131. <center> .89k </center>
  132. </td>
  133. <td width="13%">
  134. <center> .89k </center>
  135. </td>
  136. <td width="13%">
  137. <center> .89k </center>
  138. </td>
  139. <td>TI-89 FLASH application</td>
  140. </tr>
  141. <tr>
  142. <td width="13%">
  143. <center> .89l&nbsp; </center>
  144. </td>
  145. <td width="13%">
  146. <center> .89l&nbsp; </center>
  147. </td>
  148. <td width="13%">
  149. <center> .89l&nbsp; </center>
  150. </td>
  151. <td>TI-89 list</td>
  152. </tr>
  153. <tr>
  154. <td width="13%">
  155. <center> .89m&nbsp; </center>
  156. </td>
  157. <td width="13%">
  158. <center> .89m&nbsp; </center>
  159. </td>
  160. <td width="13%">
  161. <center> .89m&nbsp; </center>
  162. </td>
  163. <td>TI-89 matrix</td>
  164. </tr>
  165. <tr>
  166. <td width="13%">
  167. <center> .89p&nbsp; </center>
  168. </td>
  169. <td width="13%">
  170. <center> .89p&nbsp; </center>
  171. </td>
  172. <td width="13%">
  173. <center> .89p&nbsp; </center>
  174. </td>
  175. <td>TI-89 program</td>
  176. </tr>
  177. <tr>
  178. <td width="13%">
  179. <center> .89s&nbsp; </center>
  180. </td>
  181. <td width="13%">
  182. <center> .89s&nbsp; </center>
  183. </td>
  184. <td width="13%">
  185. <center> .89s&nbsp; </center>
  186. </td>
  187. <td>TI-89 string</td>
  188. </tr>
  189. <tr>
  190. <td width="13%">
  191. <center> .89t&nbsp; </center>
  192. </td>
  193. <td width="13%">
  194. <center> .89t&nbsp; </center>
  195. </td>
  196. <td width="13%">
  197. <center> .89t&nbsp; </center>
  198. </td>
  199. <td>TI-89 text</td>
  200. </tr>
  201. <tr>
  202. <td width="13%">
  203. <center> .89u </center>
  204. </td>
  205. <td width="13%">
  206. <center> .89u </center>
  207. </td>
  208. <td width="13%">
  209. <center> .89u </center>
  210. </td>
  211. <td>TI-89 Operating System (AMS)</td>
  212. </tr>
  213. <tr>
  214. <td width="13%">
  215. <center> .89x&nbsp; </center>
  216. </td>
  217. <td width="13%">
  218. <center> .89x&nbsp; </center>
  219. </td>
  220. <td width="13%">
  221. <center> .89x&nbsp; </center>
  222. </td>
  223. <td>TI-89 macro</td>
  224. </tr>
  225. <tr>
  226. <td width="13%">
  227. <center> .89z </center>
  228. </td>
  229. <td width="13%">
  230. <center> .89z </center>
  231. </td>
  232. <td width="13%">
  233. <center> .89z </center>
  234. </td>
  235. <td>TI89 assembly program</td>
  236. </tr>
  237. </tbody>
  238. </table>
  239. <br>
  240. &nbsp; </p>
  241. <h3>
  242. <hr align="center">The TI-89 variable file format</h3>
  243. The TI-89 variable file format has three parts: a header, a variable
  244. table and a data section.
  245. <p>The header appears at the beginning of the file and takes the
  246. following format: <br>
  247. <i>Note - All 2-byte and 4-byte integers are stored little-endian
  248. Intel-style (least significant byte first).</i>
  249. <table border="1" cellspacing="0" width="92%">
  250. <tbody>
  251. <tr>
  252. <th bgcolor="#008800" width="8%"><font color="#ffffff">Offset</font></th>
  253. <th bgcolor="#008800" width="11%"><font color="#ffffff">Length</font></th>
  254. <th bgcolor="#008800" width="81%"><font color="#ffffff">Description</font></th>
  255. </tr>
  256. <tr>
  257. <td bgcolor="#ffffff" width="8%">0</td>
  258. <td bgcolor="#ffffff" width="11%">8 bytes</td>
  259. <td bgcolor="#ffffff" width="81%">8-character signature. The
  260. signature is
  261. always "<tt>**TI89**</tt>".</td>
  262. </tr>
  263. <tr>
  264. <td bgcolor="#ffffff" width="8%">8</td>
  265. <td bgcolor="#ffffff" width="11%">2 bytes</td>
  266. <td bgcolor="#ffffff" width="81%">2-byte further signature. These
  267. two bytes always contain {01h, 00h} = {1, 0}.</td>
  268. </tr>
  269. <tr>
  270. <td bgcolor="#ffffff" width="8%">10 (Ah)</td>
  271. <td bgcolor="#ffffff" width="11%">8 bytes</td>
  272. <td bgcolor="#ffffff" width="81%">Default folder name (zero
  273. terminated unless
  274. 8 characters long).</td>
  275. </tr>
  276. <tr>
  277. <td bgcolor="#ffffff" width="8%">18 (12h)</td>
  278. <td bgcolor="#ffffff" width="11%">40 (28h) bytes</td>
  279. <td bgcolor="#ffffff" width="81%">Comment. The comment is either
  280. zero-terminated or padded on the right with space characters.</td>
  281. </tr>
  282. <tr>
  283. <td bgcolor="#ffffff" width="8%">58 (3Ah)</td>
  284. <td bgcolor="#ffffff" width="11%">2 bytes</td>
  285. <td bgcolor="#ffffff" width="81%">Number of variable and folder
  286. entries in the variable table.</td>
  287. </tr>
  288. </tbody>
  289. </table>
  290. <i>Note: If the first byte of the default folder name is 0, then the
  291. default folder is the current folder on the receiving unit.</i> </p>
  292. <p>The variable table comes immediately after the header and consists
  293. of
  294. a number of 16-byte entries, each taking the format described below.
  295. Folder
  296. entries share the same table. The variables described before the first
  297. folder entry are assumed to be in the default folder. Variables
  298. described
  299. after any given folder entry are placed in that folder.<br>
  300. If no folder entries are included, then variables are considered to be
  301. part of the folder named at file offset 0x0A. If this is null, then it
  302. is considered to be in the current directory when a link program sends
  303. it.<br>
  304. <br>
  305. </p>
  306. <p>Each variable entry follows this format:
  307. <table border="1" cellspacing="0" width="92%">
  308. <tbody>
  309. <tr>
  310. <th bgcolor="#008800" width="8%"><font color="#ffffff">Offset</font></th>
  311. <th bgcolor="#008800" width="11%"><font color="#ffffff">Length</font></th>
  312. <th bgcolor="#008800" width="81%"><font color="#ffffff">Description</font></th>
  313. </tr>
  314. <tr>
  315. <td bgcolor="#ffffff" width="8%">0</td>
  316. <td bgcolor="#ffffff" width="11%">4 bytes</td>
  317. <td bgcolor="#ffffff" width="81%">Offset to the data for this
  318. variable
  319. from the beginning of the file.</td>
  320. </tr>
  321. <tr>
  322. <td bgcolor="#ffffff" width="8%">4</td>
  323. <td bgcolor="#ffffff" width="11%">8 bytes</td>
  324. <td bgcolor="#ffffff" width="81%">Name of variable (zero
  325. terminated
  326. if not 8 characters long).</td>
  327. </tr>
  328. <tr>
  329. <td bgcolor="#ffffff" width="8%">12 (Ch)</td>
  330. <td bgcolor="#ffffff" width="11%">1 byte</td>
  331. <td bgcolor="#ffffff" width="81%">Type ID of the variable.</td>
  332. </tr>
  333. <tr>
  334. <td bgcolor="#ffffff" width="8%">13 (Dh)</td>
  335. <td bgcolor="#ffffff" width="11%">1 byte</td>
  336. <td bgcolor="#ffffff" width="81%">Attribute (0: none, 1: locked,
  337. 2:
  338. archived)</td>
  339. </tr>
  340. <tr>
  341. <td bgcolor="#ffffff" width="8%">14 (Eh)</td>
  342. <td bgcolor="#ffffff" width="11%">2 bytes</td>
  343. <td bgcolor="#ffffff" width="81%">Unused - each byte has a value
  344. of
  345. 0.</td>
  346. </tr>
  347. </tbody>
  348. </table>
  349. <br>
  350. Folder entries follow this format:
  351. <table border="1" cellspacing="0" width="92%">
  352. <tbody>
  353. <tr>
  354. <th bgcolor="#008800" width="8%"><font color="#ffffff">Offset</font></th>
  355. <th bgcolor="#008800" width="11%"><font color="#ffffff">Length</font></th>
  356. <th bgcolor="#008800" width="81%"><font color="#ffffff">Description</font></th>
  357. </tr>
  358. <tr>
  359. <td bgcolor="#ffffff" width="8%">0</td>
  360. <td bgcolor="#ffffff" width="11%">4 bytes</td>
  361. <td bgcolor="#ffffff" width="81%">Offset to the data for the next
  362. variable from the beginning of the file.</td>
  363. </tr>
  364. <tr>
  365. <td bgcolor="#ffffff" width="8%">4</td>
  366. <td bgcolor="#ffffff" width="11%">8 bytes</td>
  367. <td bgcolor="#ffffff" width="81%">Name of variable (zero
  368. terminated if not
  369. 8 characters long).</td>
  370. </tr>
  371. <tr>
  372. <td bgcolor="#ffffff" width="8%">12 (Ch)</td>
  373. <td bgcolor="#ffffff" width="11%">1 byte</td>
  374. <td bgcolor="#ffffff" width="81%">Type ID of the variable. For
  375. folders, this value is always 1Fh.</td>
  376. </tr>
  377. <tr>
  378. <td bgcolor="#ffffff" width="8%">13 (Dh)</td>
  379. <td bgcolor="#ffffff" width="11%">1 byte</td>
  380. <td bgcolor="#ffffff" width="81%">Unused - this byte has a value
  381. of 0.</td>
  382. </tr>
  383. <tr>
  384. <td bgcolor="#ffffff" width="8%">14 (Eh)</td>
  385. <td bgcolor="#ffffff" width="11%">2 bytes</td>
  386. <td bgcolor="#ffffff" width="81%">The number of variables in this
  387. folder.</td>
  388. </tr>
  389. </tbody>
  390. </table>
  391. </p>
  392. <p>Finally, the data section, which follows the variable table, has
  393. this format:
  394. <table border="1" cellspacing="0" width="92%">
  395. <tbody>
  396. <tr>
  397. <th bgcolor="#008800" width="8%"><font color="#ffffff">Offset</font></th>
  398. <th bgcolor="#008800" width="11%"><font color="#ffffff">Length</font></th>
  399. <th bgcolor="#008800" width="81%"><font color="#ffffff">Description</font></th>
  400. </tr>
  401. <tr>
  402. <td bgcolor="#ffffff" width="8%">0</td>
  403. <td bgcolor="#ffffff" width="11%">4 bytes</td>
  404. <td bgcolor="#ffffff" width="81%">The file size, in bytes.</td>
  405. </tr>
  406. <tr>
  407. <td bgcolor="#ffffff" width="8%">4</td>
  408. <td bgcolor="#ffffff" width="11%">2 bytes</td>
  409. <td bgcolor="#ffffff" width="81%">A 2-byte signature. These two
  410. bytes always contain {A5h, 5Ah}.</td>
  411. </tr>
  412. <tr>
  413. <td bgcolor="#ffffff" width="8%">6</td>
  414. <td bgcolor="#ffffff" width="11%"><i>n</i> bytes</td>
  415. <td bgcolor="#ffffff" width="81%">Data section.</td>
  416. </tr>
  417. </tbody>
  418. </table>
  419. </p>
  420. <p>The data section consists of several variable data parts
  421. back-to-back, in order of their listing in the variable table. Each
  422. variable part has this
  423. format:
  424. <table border="1" cellspacing="0" width="92%">
  425. <tbody>
  426. <tr>
  427. <th bgcolor="#008800" width="8%"><font color="#ffffff">Offset</font></th>
  428. <th bgcolor="#008800" width="11%"><font color="#ffffff">Length</font></th>
  429. <th bgcolor="#008800" width="81%"><font color="#ffffff">Description</font></th>
  430. </tr>
  431. <tr>
  432. <td bgcolor="#ffffff" width="8%">0</td>
  433. <td bgcolor="#ffffff" width="11%"><i>m</i> bytes</td>
  434. <td bgcolor="#ffffff" width="81%">The variable data. This field
  435. includes all bytes transferred in data packets. The first five bytes
  436. usually all have
  437. a value of 0.</td>
  438. </tr>
  439. <tr>
  440. <td bgcolor="#ffffff" width="8%"><i>m</i></td>
  441. <td bgcolor="#ffffff" width="11%">2 bytes</td>
  442. <td bgcolor="#ffffff" width="81%">Checksum. This is the lower 16
  443. bits of the sum of all bytes in the first four bytes and the variable
  444. data.</td>
  445. </tr>
  446. </tbody>
  447. </table>
  448. </p>
  449. <h3>
  450. <hr align="center">A simplification of the TI-89 file format for a
  451. single variable</h3>
  452. Files containing single variables are a simple yet common example of
  453. the TI-89 file format. In this special case, the file format can be
  454. simplified as follows:
  455. <table border="1" cellspacing="0" width="92%">
  456. <tbody>
  457. <tr>
  458. <th bgcolor="#008800" width="8%"><font color="#ffffff">Offset</font></th>
  459. <th bgcolor="#008800" width="11%"><font color="#ffffff">Length</font></th>
  460. <th bgcolor="#008800" width="81%"><font color="#ffffff">Description</font></th>
  461. </tr>
  462. <tr>
  463. <td bgcolor="#ffffff" width="8%">0</td>
  464. <td bgcolor="#ffffff" width="11%">8 bytes</td>
  465. <td bgcolor="#ffffff" width="81%">8-character signature. The
  466. signature is
  467. always "<tt>**TI89**</tt>".</td>
  468. </tr>
  469. <tr>
  470. <td bgcolor="#ffffff" width="8%">8</td>
  471. <td bgcolor="#ffffff" width="11%">2 bytes</td>
  472. <td bgcolor="#ffffff" width="81%">2-byte further signature. These
  473. two bytes always contain {01h, 00h} = {1, 0}.</td>
  474. </tr>
  475. <tr>
  476. <td bgcolor="#ffffff" width="8%">10 (Ah)</td>
  477. <td bgcolor="#ffffff" width="11%">8 bytes</td>
  478. <td bgcolor="#ffffff" width="81%">The parent folder of the
  479. variable (zero terminated if not 8 characters long) - <i>See note below</i>.</td>
  480. </tr>
  481. <tr>
  482. <td bgcolor="#ffffff" width="8%">18 (12h)</td>
  483. <td bgcolor="#ffffff" width="11%">40 (28h) bytes</td>
  484. <td bgcolor="#ffffff" width="81%">Comment. The comment is either
  485. zero-terminated or padded on the right with space characters.</td>
  486. </tr>
  487. <tr>
  488. <td bgcolor="#ffffff" width="8%">58 (3Ah)</td>
  489. <td bgcolor="#ffffff" width="11%">6 bytes</td>
  490. <td bgcolor="#ffffff" width="81%">These 6 bytes always contain
  491. {01h, 00h, 52h, 00h, 00h, 00h} = {1, 0, 82, 0, 0, 0}.</td>
  492. </tr>
  493. <tr>
  494. <td bgcolor="#ffffff" width="8%">64 (40h)</td>
  495. <td bgcolor="#ffffff" width="11%">8 bytes</td>
  496. <td bgcolor="#ffffff" width="81%">The name of the variable (zero
  497. terminated if not 8 characters long).</td>
  498. </tr>
  499. <tr>
  500. <td bgcolor="#ffffff" width="8%">72 (48h)</td>
  501. <td bgcolor="#ffffff" width="11%">1 byte</td>
  502. <td bgcolor="#ffffff" width="81%">The type ID for this variable.</td>
  503. </tr>
  504. <tr>
  505. <td bgcolor="#ffffff" width="8%">73 (49h)</td>
  506. <td bgcolor="#ffffff" width="11%">3 bytes</td>
  507. <td bgcolor="#ffffff" width="81%">These three bytes always have a
  508. value of 0.</td>
  509. </tr>
  510. <tr>
  511. <td bgcolor="#ffffff" width="8%">76 (4Ch)</td>
  512. <td bgcolor="#ffffff" width="11%">4 bytes</td>
  513. <td bgcolor="#ffffff" width="81%">The file size, in bytes.</td>
  514. </tr>
  515. <tr>
  516. <td bgcolor="#ffffff" width="8%">80 (50h)</td>
  517. <td bgcolor="#ffffff" width="11%">2 bytes</td>
  518. <td bgcolor="#ffffff" width="81%">A 2-byte signature. These two
  519. bytes always contain {A5h, 5Ah}.</td>
  520. </tr>
  521. <tr>
  522. <td bgcolor="#ffffff" width="8%">82 (52h)</td>
  523. <td bgcolor="#ffffff" width="11%"><i>n</i> bytes</td>
  524. <td bgcolor="#ffffff" width="81%">The variable data. This field
  525. includes all bytes transferred in data packets. The first four bytes
  526. usually all have
  527. a value of 0.</td>
  528. </tr>
  529. <tr>
  530. <td bgcolor="#ffffff" width="8%">82 (52h)+<i>n</i></td>
  531. <td bgcolor="#ffffff" width="11%">2 bytes</td>
  532. <td bgcolor="#ffffff" width="81%">Checksum. This is the lower 16
  533. bits of the sum of all bytes in the variable data.</td>
  534. </tr>
  535. </tbody>
  536. </table>
  537. <i>Note: If the first byte of the name of the parent folder is 0, then
  538. the
  539. variable is put into the current folder on the receiving unit.</i>
  540. <h3>
  541. <hr align="center">The TI-89 backup file format</h3>
  542. The TI-89 does not have a true backup capability. Indeed, a backup file
  543. is
  544. simply a group file and have the .89g file extension. <br>
  545. Nethertheless, backup files get with the TIGL software does not keep
  546. the
  547. attribute of the variable (locked or archived). So, if a backup with
  548. previously
  549. archived variables is sent to the calc, the variables will not be
  550. archived
  551. and a 'Not enough memory' may occur ! <br>
  552. But, TiLP supports a slightly modified .89g file format which allow to
  553. keep
  554. this attribute. This enhanced group file format is 100% fully
  555. compatible with
  556. the TIGL software.
  557. <p>The only modification (<i>in italic</i>) has been made on the
  558. variable entry format: <br>
  559. &nbsp;
  560. <table border="1" cellspacing="0" width="92%">
  561. <tbody>
  562. <tr>
  563. <th bgcolor="#008800" width="8%"><font color="#ffffff">Offset</font></th>
  564. <th bgcolor="#008800" width="11%"><font color="#ffffff">Length</font></th>
  565. <th bgcolor="#008800" width="81%"><font color="#ffffff">Description</font></th>
  566. </tr>
  567. <tr>
  568. <td bgcolor="#ffffff" width="8%">0</td>
  569. <td bgcolor="#ffffff" width="11%">4 bytes</td>
  570. <td bgcolor="#ffffff" width="81%">Offset to the data for this
  571. variable from
  572. the beginning of the file.</td>
  573. </tr>
  574. <tr>
  575. <td bgcolor="#ffffff" width="8%">4</td>
  576. <td bgcolor="#ffffff" width="11%">8 bytes</td>
  577. <td bgcolor="#ffffff" width="81%">Name of variable (zero
  578. terminated if not
  579. 8 characters long).</td>
  580. </tr>
  581. <tr>
  582. <td bgcolor="#ffffff" width="8%">12 (Ch)</td>
  583. <td bgcolor="#ffffff" width="11%">1 byte</td>
  584. <td bgcolor="#ffffff" width="81%">Type ID of the variable.</td>
  585. </tr>
  586. <tr>
  587. <td bgcolor="#ffffff" width="8%">13 (Dh)</td>
  588. <td bgcolor="#ffffff" width="11%">1 bytes</td>
  589. <td bgcolor="#ffffff" width="81%"><i>Attribute: 1Dh (none), 26h
  590. (locked) or 27h (archived)</i>&nbsp;</td>
  591. </tr>
  592. <tr>
  593. <td bgcolor="#ffffff" width="8%">14 (Eh)</td>
  594. <td bgcolor="#ffffff" width="11%">2 bytes</td>
  595. <td bgcolor="#ffffff" width="81%">Unused - each byte has a value
  596. of 0.</td>
  597. </tr>
  598. </tbody>
  599. </table>
  600. </p>
  601. <h3>
  602. <hr align="center">The TI-89 FLASH file format</h3>
  603. A FLASH file usually contains between 1 and 3 headers with data and the
  604. header has
  605. the same format than the TI83+ one.<br>
  606. Headers can contain : license or data (app/os/certificate).<br>
  607. <p>The header takes the following format: <br>
  608. <i>Note - All 2-byte and 4-byte integers are stored little-endian
  609. Intel-style (least significant byte first).</i>
  610. <table style="width: 92%;" border="1" cellspacing="0">
  611. <tbody>
  612. <tr>
  613. <th bgcolor="#008800" width="8%"><font color="#ffffff">Offset</font></th>
  614. <th bgcolor="#008800" width="11%"><font color="#ffffff">Length</font></th>
  615. <th bgcolor="#008800" width="81%"><font color="#ffffff">Description</font></th>
  616. </tr>
  617. <tr>
  618. <td bgcolor="#ffffff" width="8%">0</td>
  619. <td bgcolor="#ffffff" width="11%">8 bytes</td>
  620. <td bgcolor="#ffffff" width="81%">8-character signature. The
  621. signature
  622. is always "<tt>**TIFL**</tt>".</td>
  623. </tr>
  624. <tr>
  625. <td bgcolor="#ffffff" width="8%">8</td>
  626. <td bgcolor="#ffffff" width="11%">2 bytes</td>
  627. <td bgcolor="#ffffff" width="81%">Revision number (BCD coded):
  628. major.minor.</td>
  629. </tr>
  630. <tr>
  631. <td bgcolor="#ffffff" width="8%">9</td>
  632. <td bgcolor="#ffffff" width="11%">1 byte</td>
  633. <td bgcolor="#ffffff" width="81%">Flags (usually set to 00h).</td>
  634. </tr>
  635. <tr>
  636. <td bgcolor="#ffffff" width="8%">10 (Ah)</td>
  637. <td bgcolor="#ffffff" width="11%">1 byte</td>
  638. <td bgcolor="#ffffff" width="81%">Object type (00h).</td>
  639. </tr>
  640. <tr>
  641. <td bgcolor="#ffffff" width="8%">12 (Ch)</td>
  642. <td bgcolor="#ffffff" width="11%">4 bytes</td>
  643. <td bgcolor="#ffffff" width="81%">Binary-Coded-Decimal date such
  644. as
  645. {dd, mm, yy, yy} for 'dd/mm/yyyy'.</td>
  646. </tr>
  647. <tr>
  648. <td bgcolor="#ffffff" width="8%">16 (10h)</td>
  649. <td bgcolor="#ffffff" width="11%">1 bytes</td>
  650. <td bgcolor="#ffffff" width="81%">Name length</td>
  651. </tr>
  652. <tr>
  653. <td bgcolor="#ffffff" width="8%">17 (11h)</td>
  654. <td bgcolor="#ffffff" width="11%">8 bytes</td>
  655. <td bgcolor="#ffffff" width="81%">Application name or 'basecode'
  656. for
  657. OS or '' for certificate. Name is null-terminated unless 8 characters
  658. long.</td>
  659. </tr>
  660. <tr>
  661. <td bgcolor="#ffffff" width="8%">25 (19h)</td>
  662. <td bgcolor="#ffffff" width="11%">23 bytes</td>
  663. <td bgcolor="#ffffff" width="81%">Filler (unused, set to 00h).</td>
  664. </tr>
  665. <tr>
  666. <td bgcolor="#ffffff" width="8%">48 (30h)</td>
  667. <td bgcolor="#ffffff" width="11%">1 byte</td>
  668. <td bgcolor="#ffffff" width="81%">Device type (TI73: 74h, TI83+:
  669. 73h,
  670. TI89: 98h, TI92+: 88h)</td>
  671. </tr>
  672. <tr>
  673. <td bgcolor="#ffffff" width="8%">49 (31h)</td>
  674. <td bgcolor="#ffffff" width="11%">1 byte</td>
  675. <td bgcolor="#ffffff" width="81%">Data type (os: 23h,
  676. application: 24h,
  677. certificate: 25h, license: 3Eh)</td>
  678. </tr>
  679. <tr>
  680. <td bgcolor="#ffffff" width="8%">50 (32H)</td>
  681. <td bgcolor="#ffffff" width="11%">22 bytes</td>
  682. <td bgcolor="#ffffff" width="81%">Filler (unused, set to 00h).</td>
  683. </tr>
  684. <tr>
  685. <td
  686. style="vertical-align: top; background-color: rgb(255, 255, 255);">72
  687. (48h)<br>
  688. </td>
  689. <td
  690. style="vertical-align: top; background-color: rgb(255, 255, 255);">2
  691. bytes<br>
  692. </td>
  693. <td
  694. style="background-color: rgb(255, 255, 255); vertical-align: top;">Hardware
  695. ID (1 = 92+, 3 = 89, 8
  696. = V200, 9 = Titanium); see TIGCC doc.</td>
  697. </tr>
  698. <tr>
  699. <td bgcolor="#ffffff" width="8%">74 (4Ah)</td>
  700. <td bgcolor="#ffffff" width="11%">4 bytes</td>
  701. <td style="width: 81%; background-color: rgb(255, 255, 255);">Size
  702. of data in bytes</td>
  703. </tr>
  704. <tr>
  705. <td bgcolor="#ffffff" width="8%">78 (4Eh)</td>
  706. <td bgcolor="#ffffff" width="11%"><i>n</i> bytes</td>
  707. <td bgcolor="#ffffff" width="81%">Data.</td>
  708. </tr>
  709. <tr>
  710. <td bgcolor="#ffffff" width="8%">78 (4Eh)+<i>n</i></td>
  711. <td bgcolor="#ffffff" width="11%">2 bytes</td>
  712. <td bgcolor="#ffffff" width="81%">Checksum. This is the lower 16
  713. bits
  714. of the sum of all bytes in the variable data.</td>
  715. </tr>
  716. </tbody>
  717. </table>
  718. </p>
  719. <p>The data section contains pure raw data which are directly sent to
  720. the
  721. calculator.</p>
  722. <p>There is an old format, called <a href="TibFormat.txt">TIB</a> but
  723. still used by developers. Its format is below: The document comes from
  724. PedRom sources and is copyrighted as GPL by <a
  725. href="http://www.timetoteam.fr.st">Patrick Pelissier</a>.<br>
  726. <br>
  727. <table border="0" cellspacing="0" width="100%">
  728. <tbody>
  729. <tr>
  730. <td width="32%">
  731. <center><a href="vars.html"><img src="graphics/prevpage.gif"
  732. alt="[previous page]" align="bottom" border="2" height="32" width="32">
  733. </a> <br>
  734. <a href="vars.html">Variable Formats</a></center>
  735. </td>
  736. <td width="34%">
  737. <center><a href="index.html"><img src="graphics/home.gif"
  738. alt="[home]" align="bottom" border="2" height="32" width="32"> </a> <br>
  739. <a href="index.html">Table of Contents</a></center>
  740. </td>
  741. <td width="34%">
  742. <center><a href="tokens.html"><img src="graphics/nextpage.gif"
  743. alt="[next page]" align="bottom" border="2" height="32" width="32"> </a>
  744. <br>
  745. <a href="tokens.html">Tokens and Characters</a></center>
  746. </td>
  747. </tr>
  748. </tbody>
  749. </table>
  750. </p>
  751. <hr align="center"><i>Site maintained by Romain Li&eacute;vin (<a
  752. href="mailto:roms@lpg.ticalc.org">roms@lpg.ticalc.org</a>) and Tim
  753. Singer
  754. (<a href="mailto:tsinger@gladstone.uoregon.edu">tsinger@gladstone.uoregon.edu</a>)</i>
  755. <br>
  756. </body>
  757. </html>