dbus.html 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492
  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-73...92+/V200 TI Link Guide</title>
  7. </head>
  8. <body bgcolor="#ffffe8">
  9. <p><b>DBus hardware access </b>- From TI view (registers) </p>
  10. <center>
  11. <h2>
  12. <hr align="center">DBus hardware access (TI9x only)<br>
  13. </h2>
  14. </center>
  15. <p>Well, the whole doc is focused on link from a PC view. This topic
  16. add a TI view. <br>
  17. While I was working on TiEmu II, I had to fix linkport support which
  18. was quite broken. Unfortunately, I didn't know very much about how
  19. linkport works on TI side. This was quite annoying. Then, I decided to
  20. dis-assemble low-level linkport routines and the result of this work is
  21. below.<br>
  22. </p>
  23. <span style="font-weight: bold;">1&deg;) DBus registers in
  24. $600000 ports</span><br>
  25. <br>
  26. Informations below comes from Johan Eilert's j89hw.txt documentation
  27. and TI's TI89/TI92 Plus Developper Guide:<br>
  28. <br>
  29. <table style="width: 100%; text-align: left;" border="1" cellpadding="2"
  30. cellspacing="2">
  31. <tbody>
  32. <tr align="center">
  33. <td colspan="16" rowspan="1" style="vertical-align: top;">DBus
  34. Control &amp; Status<br>
  35. </td>
  36. </tr>
  37. <tr>
  38. <td colspan="8" rowspan="1"
  39. style="vertical-align: top; text-align: center;">Control ($60000C)<br>
  40. </td>
  41. <td colspan="8" rowspan="1"
  42. style="vertical-align: top; text-align: center;">Status ($60000D)</td>
  43. </tr>
  44. <tr>
  45. <td style="vertical-align: top; text-align: center; width: 15px;">15<br>
  46. </td>
  47. <td style="vertical-align: top; text-align: center; width: 15px;">14<br>
  48. </td>
  49. <td style="vertical-align: top; text-align: center; width: 15px;">13<br>
  50. </td>
  51. <td style="vertical-align: top; text-align: center; width: 15px;">12<br>
  52. </td>
  53. <td style="vertical-align: top; text-align: center; width: 15px;">11<br>
  54. </td>
  55. <td style="vertical-align: top; text-align: center; width: 15px;">10<br>
  56. </td>
  57. <td style="vertical-align: top; text-align: center; width: 15px;">9<br>
  58. </td>
  59. <td style="vertical-align: top; text-align: center; width: 15px;">8<br>
  60. </td>
  61. <td style="vertical-align: top; text-align: center; width: 15px;">7<br>
  62. </td>
  63. <td style="vertical-align: top; text-align: center; width: 15px;">6<br>
  64. </td>
  65. <td style="vertical-align: top; text-align: center; width: 15px;">5<br>
  66. </td>
  67. <td style="vertical-align: top; text-align: center; width: 15px;">4<br>
  68. </td>
  69. <td style="vertical-align: top; text-align: center; width: 15px;">3<br>
  70. </td>
  71. <td style="vertical-align: top; text-align: center; width: 15px;">2<br>
  72. </td>
  73. <td style="vertical-align: top; text-align: center; width: 15px;">1<br>
  74. </td>
  75. <td style="vertical-align: top; text-align: center; width: 15px;">0<br>
  76. </td>
  77. </tr>
  78. <tr>
  79. <td style="vertical-align: top; text-align: center; width: 15px;">AE<br>
  80. </td>
  81. <td style="vertical-align: top; text-align: center; width: 15px;">LD<br>
  82. </td>
  83. <td style="vertical-align: top; text-align: center; width: 15px;">LTO<br>
  84. </td>
  85. <td style="vertical-align: top; text-align: center; width: 15px;"><br>
  86. </td>
  87. <td style="vertical-align: top; text-align: center; width: 15px;">CLE<br>
  88. </td>
  89. <td style="vertical-align: top; text-align: center; width: 15px;">CA<br>
  90. </td>
  91. <td style="vertical-align: top; text-align: center; width: 15px;">CTX<br>
  92. </td>
  93. <td style="vertical-align: top; text-align: center; width: 15px;">CRX<br>
  94. </td>
  95. <td style="vertical-align: top; text-align: center; width: 15px;">SLE<br>
  96. </td>
  97. <td style="vertical-align: top; text-align: center; width: 15px;">STX<br>
  98. </td>
  99. <td style="vertical-align: top; text-align: center; width: 15px;">SRX<br>
  100. </td>
  101. <td style="vertical-align: top; text-align: center; width: 15px;">SLI<br>
  102. </td>
  103. <td style="vertical-align: top; text-align: center; width: 15px;">SA<br>
  104. </td>
  105. <td style="vertical-align: top; text-align: center; width: 15px;">EA?<br>
  106. </td>
  107. <td style="vertical-align: top; text-align: center; width: 15px;"><br>
  108. </td>
  109. <td style="vertical-align: top; text-align: center; width: 15px;"><br>
  110. </td>
  111. </tr>
  112. </tbody>
  113. </table>
  114. <br>
  115. Control:<br>
  116. <table style="width: 100%; text-align: left;" border="1" cellpadding="2"
  117. cellspacing="2">
  118. <tbody>
  119. <tr>
  120. <td style="vertical-align: top;">AE<br>
  121. </td>
  122. <td style="vertical-align: top;">Autostart Enable<br>
  123. </td>
  124. <td style="vertical-align: top;">Bit set and bit 3 of $600005 set
  125. : wake-up calc on Dbus activity.<br>
  126. </td>
  127. </tr>
  128. <tr>
  129. <td style="vertical-align: top;">LD<br>
  130. </td>
  131. <td style="vertical-align: top;">Link Disable<br>
  132. </td>
  133. <td style="vertical-align: top;">Set it to 1 when you want to use
  134. direct access to register $60000E. Disable byte sender/receiver.<br>
  135. </td>
  136. </tr>
  137. <tr>
  138. <td style="vertical-align: top;">LTO<br>
  139. </td>
  140. <td style="vertical-align: top;">Link Time-out Disable<br>
  141. </td>
  142. <td style="vertical-align: top;">Disable link time-out (red/white
  143. are low for more than 2 seconds).<br>
  144. </td>
  145. </tr>
  146. <tr>
  147. <td style="vertical-align: top;"><br>
  148. </td>
  149. <td style="vertical-align: top;"><br>
  150. </td>
  151. <td style="vertical-align: top;"><br>
  152. </td>
  153. </tr>
  154. <tr>
  155. <td style="vertical-align: top;">CLE<br>
  156. </td>
  157. <td style="vertical-align: top;">Link Error Interrupt Enable<br>
  158. </td>
  159. <td style="vertical-align: top;">Allow SLE to trigger interrupt.<br>
  160. </td>
  161. </tr>
  162. <tr>
  163. <td style="vertical-align: top;">CA<br>
  164. </td>
  165. <td style="vertical-align: top;">AutoStart Interrupt Enable</td>
  166. <td style="vertical-align: top;">Allow SA to trigger interrupt.<br>
  167. </td>
  168. </tr>
  169. <tr>
  170. <td style="vertical-align: top;">CTX<br>
  171. </td>
  172. <td style="vertical-align: top;">TX buffer empty Interrupt Enable</td>
  173. <td style="vertical-align: top;">Allow STX to trigger interrupt
  174. (and triggers interrupt <span style="font-style: italic;">immediately</span>
  175. given that STX is usually set).</td>
  176. </tr>
  177. <tr>
  178. <td style="vertical-align: top;">CRX<br>
  179. </td>
  180. <td style="vertical-align: top;">RX buffer full Interrupt Enable</td>
  181. <td style="vertical-align: top;">Allow SRX to trigger interrupt.</td>
  182. </tr>
  183. </tbody>
  184. </table>
  185. <span style="font-style: italic;"></span><br>
  186. Status:<br>
  187. <table style="width: 100%; text-align: left;" border="1" cellpadding="2"
  188. cellspacing="2">
  189. <tbody>
  190. <tr>
  191. <td style="vertical-align: top;">SLE<br>
  192. </td>
  193. <td style="vertical-align: top;">Link Error<br>
  194. </td>
  195. <td style="vertical-align: top;">Dbus error (timing or protocol
  196. violation).<br>
  197. </td>
  198. </tr>
  199. <tr>
  200. <td style="vertical-align: top;">STX<br>
  201. </td>
  202. <td style="vertical-align: top;">TX buffer empty<br>
  203. </td>
  204. <td style="vertical-align: top;">Transmit buffer is empty.<br>
  205. </td>
  206. </tr>
  207. <tr>
  208. <td style="vertical-align: top;">SRX<br>
  209. </td>
  210. <td style="vertical-align: top;">RX buffer full<br>
  211. </td>
  212. <td style="vertical-align: top;">Receive buffer is empty.<br>
  213. </td>
  214. </tr>
  215. <tr>
  216. <td style="vertical-align: top;">SLI<br>
  217. </td>
  218. <td style="vertical-align: top;">Link Interrupt<br>
  219. </td>
  220. <td style="vertical-align: top;">Never used (at least in TI AMS).
  221. SLI = SLE | STX | SRX | SA.<br>
  222. </td>
  223. </tr>
  224. <tr>
  225. <td style="vertical-align: top;">SA<br>
  226. </td>
  227. <td style="vertical-align: top;">AutoStart<br>
  228. </td>
  229. <td style="vertical-align: top;">Link activity on DBus port.<br>
  230. </td>
  231. </tr>
  232. <tr>
  233. <td style="vertical-align: top;">EA ?<br>
  234. </td>
  235. <td style="vertical-align: top;">External Activity ?<br>
  236. </td>
  237. <td style="vertical-align: top;">External activity (DBus lines
  238. are toggling). Used by AMS &gt;= 2.08<br>
  239. </td>
  240. </tr>
  241. <tr>
  242. <td style="vertical-align: top;"><br>
  243. </td>
  244. <td style="vertical-align: top;"><br>
  245. </td>
  246. <td style="vertical-align: top;">Always 1.</td>
  247. </tr>
  248. <tr>
  249. <td style="vertical-align: top;"><br>
  250. </td>
  251. <td style="vertical-align: top;"><br>
  252. </td>
  253. <td style="vertical-align: top;">Always 0.<br>
  254. </td>
  255. </tr>
  256. </tbody>
  257. </table>
  258. <span style="font-style: italic;">Warning:</span> reading this register
  259. resets it ! Take to read it once and store its value for subsequent
  260. operations.<br>
  261. <span style="font-style: italic;">Warning2:</span> this is what TI says
  262. in their SDK but I'm not sure that's true (at least in TiEmu).<br>
  263. <br>
  264. <table style="width: 100%; text-align: left;" border="1" cellpadding="2"
  265. cellspacing="2">
  266. <tbody>
  267. <tr align="center">
  268. <td colspan="16" rowspan="1" style="vertical-align: top;">DBus
  269. Direct &amp; Data <br>
  270. </td>
  271. </tr>
  272. <tr>
  273. <td colspan="8" rowspan="1"
  274. style="vertical-align: top; text-align: center;">Direct ($60000E)<br>
  275. </td>
  276. <td colspan="8" rowspan="1"
  277. style="vertical-align: top; text-align: center;">Data ($60000F)</td>
  278. </tr>
  279. <tr>
  280. <td style="vertical-align: top; text-align: center; width: 15px;">15<br>
  281. </td>
  282. <td style="vertical-align: top; text-align: center; width: 15px;">14<br>
  283. </td>
  284. <td style="vertical-align: top; text-align: center; width: 15px;">13<br>
  285. </td>
  286. <td style="vertical-align: top; text-align: center; width: 15px;">12<br>
  287. </td>
  288. <td style="vertical-align: top; text-align: center; width: 15px;">11<br>
  289. </td>
  290. <td style="vertical-align: top; text-align: center; width: 15px;">10<br>
  291. </td>
  292. <td style="vertical-align: top; text-align: center; width: 15px;">9<br>
  293. </td>
  294. <td style="vertical-align: top; text-align: center; width: 15px;">8<br>
  295. </td>
  296. <td style="vertical-align: top; text-align: center; width: 15px;">7<br>
  297. </td>
  298. <td style="vertical-align: top; text-align: center; width: 15px;">6<br>
  299. </td>
  300. <td style="vertical-align: top; text-align: center; width: 15px;">5<br>
  301. </td>
  302. <td style="vertical-align: top; text-align: center; width: 15px;">4<br>
  303. </td>
  304. <td style="vertical-align: top; text-align: center; width: 15px;">3<br>
  305. </td>
  306. <td style="vertical-align: top; text-align: center; width: 15px;">2<br>
  307. </td>
  308. <td style="vertical-align: top; text-align: center; width: 15px;">1<br>
  309. </td>
  310. <td style="vertical-align: top; text-align: center; width: 15px;">0<br>
  311. </td>
  312. </tr>
  313. <tr>
  314. <td style="vertical-align: top; text-align: center; width: 15px;"><br>
  315. </td>
  316. <td style="vertical-align: top; text-align: center; width: 15px;"><br>
  317. </td>
  318. <td style="vertical-align: top; text-align: center; width: 15px;"><br>
  319. </td>
  320. <td style="vertical-align: top; text-align: center; width: 15px;"><br>
  321. </td>
  322. <td style="vertical-align: top; text-align: center; width: 15px;">D1I<br>
  323. (white)<br>
  324. </td>
  325. <td style="vertical-align: top; text-align: center; width: 15px;">D0I<br>
  326. (red)<br>
  327. </td>
  328. <td style="vertical-align: top; text-align: center; width: 15px;">D1O<br>
  329. </td>
  330. <td style="vertical-align: top; text-align: center; width: 15px;">D0O<br>
  331. </td>
  332. <td colspan="8" rowspan="1"
  333. style="vertical-align: top; text-align: center; width: 15px;">RX/TX
  334. 1-byte buffer<br>
  335. </td>
  336. </tr>
  337. </tbody>
  338. </table>
  339. <br>
  340. Direct access:<br>
  341. <table style="width: 100%; text-align: left;" border="1" cellpadding="2"
  342. cellspacing="2">
  343. <tbody>
  344. <tr>
  345. <td style="vertical-align: top;">D1I<br>
  346. </td>
  347. <td style="vertical-align: top;">D1 input<br>
  348. </td>
  349. <td style="vertical-align: top;">Live status of
  350. D1/ring/white&nbsp; (1=pulled down).<br>
  351. </td>
  352. </tr>
  353. <tr>
  354. <td style="vertical-align: top;">D0I<br>
  355. </td>
  356. <td style="vertical-align: top;">D0 input<br>
  357. </td>
  358. <td style="vertical-align: top;">Live status of D0/tip/red&nbsp;
  359. (1=pulled down).<br>
  360. </td>
  361. </tr>
  362. <tr>
  363. <td style="vertical-align: top;">D1O<br>
  364. </td>
  365. <td style="vertical-align: top;">D1 output<br>
  366. </td>
  367. <td style="vertical-align: top;">Activate (pull down)
  368. D1/ring/white.<br>
  369. </td>
  370. </tr>
  371. <tr>
  372. <td style="vertical-align: top;">D0O<br>
  373. </td>
  374. <td style="vertical-align: top;">D0 output<br>
  375. </td>
  376. <td style="vertical-align: top;">Activate (pull down)
  377. D1/ring/white.<br>
  378. </td>
  379. </tr>
  380. </tbody>
  381. </table>
  382. <br style="font-weight: bold;">
  383. <span style="font-weight: bold;">2&deg;) Link behaviour</span><span
  384. style="text-decoration: underline;"><br>
  385. </span><br>
  386. The link is interrupt-driven and relies on 2 circular buffers of 128
  387. bytes each. Each buffer is managed as a stucture.<br>
  388. In normal operating mode, AE, CLE, CA and CRX are enabled. CTX is set
  389. in the transmit routine. It is disabled at the end of the
  390. handler when
  391. no more chars have to be transmitted.<br>
  392. <br>
  393. Some informations comes from dis-assembling, some others comes from
  394. TIGCC documentation (after check-up).<br>
  395. <br>
  396. <span style="text-decoration: underline;">* AI4 handler :</span> it
  397. begins by checking some flags in the control register:<br>
  398. - SA=1 =&gt; exit,<br>
  399. - SLE=1 =&gt; reset link port ($E0, $8D in ctrl reg),<br>
  400. - SRX=1 =&gt; receive char from rx/tx register and put it in circular
  401. buffer,<br>
  402. AMS &lt; 2.08:<br>
  403. - STX=1 =&gt; transmit char from circular buffer (please note this step
  404. is blocking),<br>
  405. AMS &gt;= 2.08: (AMS208 add a bit check before entering into tx
  406. routine).<br>
  407. - EA = 0 =&gt; exit,<br>
  408. - STX=1 =&gt; transmit char.<br>
  409. <br>
  410. <br>
  411. <span style="text-decoration: underline;">* OSLinkReset :</span>
  412. OSLinkReset resets the link interface. It also resets all link
  413. variables and performs OSLinkClose. Ints are disabled during call.<br>
  414. <br>
  415. <span style="text-decoration: underline;">* OSLinkOpen :</span>
  416. OSLinkOpen clears both transmit and receive queues, then set a flag
  417. which tells that the communication is opened.<br>
  418. <br>
  419. <span style="text-decoration: underline;">* OSLinkClose :</span>
  420. OSLinkClose waits until eventual bytes waiting in transmit queue are
  421. sent out, then clears both transmit and receive queues, and clear a
  422. flag which tells that the communication is opened. Ints are disabled
  423. during call.<br>
  424. <br>
  425. <span style="text-decoration: underline;">* OSLinkTxQueueInquire :</span>
  426. OSLinkTxQueueInquire returns the number of free bytes in the link
  427. transmit buffer. Ints are disabled during call.<br>
  428. <br>
  429. <span style="text-decoration: underline;">* OSLinkTxQueueActive :</span>
  430. OSLinkTxQueueActive returns TRUE if the transmit queue is active, else
  431. returns FALSE. This function checks CTX bit. Ints are disabled during
  432. call.<br>
  433. <br>
  434. <span style="text-decoration: underline;">* OSWriteLinkBlock :</span>
  435. inserts <i>num</i> bytes from <i>buffer</i> into the link transmit
  436. buffer. Returns 0 if the operation was sucessful, else returns a
  437. non-zero value. <i>num</i> must be in the range 1-128. Ints are
  438. disabled during call.<br>
  439. Note: the routine enables TX interrupt by setting the CTX bit.
  440. Consequently, the AI4 handler will be called as soon as ints (SR) will
  441. be enabled given that STX is set.<br>
  442. &nbsp;<br>
  443. <span style="text-decoration: underline;">* OSCheckSilentLink :</span>
  444. OSCheckSilentLink returns an integer which determines the link state..<br>
  445. <br>
  446. <span style="text-decoration: underline;">* OSLinkCmd :</span> to do...<br>
  447. <br>
  448. Dis-assembled output: <a href="ti89/linkport.txt">here</a>. The output
  449. contains comments only. I can put source code, this is strictly
  450. forbidden by TI. I will not distribute it, neither here, nor by mail.<br>
  451. <br style="font-weight: bold;">
  452. <span style="font-weight: bold;">3&deg;) Remarks<br>
  453. <br>
  454. </span>Sending 4 bytes on the linkport sets the followinf flags : TRIA
  455. TRIA TRIA TRI TI ( T = STX, R = SRX, I = SLI and A = EA).<span
  456. style="font-weight: bold;"><br>
  457. </span><span style="text-decoration: underline;"></span>
  458. <h4>More Information</h4>
  459. <p>You may find some informations in the TIGCC <a
  460. href="http://tigcc.ticalc.org/">documentation</a>.
  461. </p>
  462. <p>
  463. <table border="0" cellspacing="0" width="100%">
  464. <tbody>
  465. <tr>
  466. <td width="32%">
  467. <p align="center"><a href="intro.html"><img
  468. src="graphics/prevpage.gif" alt="[previous page]" align="bottom"
  469. border="2" height="32" width="32"><br>
  470. Introduction</a> </p>
  471. </td>
  472. <td width="34%">
  473. <p align="center"><a href="index.html"><img
  474. src="graphics/home.gif" alt="[home]" align="bottom" border="2"
  475. height="32" width="32"><br>
  476. Table of Contents</a> </p>
  477. </td>
  478. <td width="34%">
  479. <p align="center"><a href="cable.html"><img
  480. src="graphics/nextpage.gif" alt="[next page]" align="bottom" border="2"
  481. height="32" width="32"><br>
  482. Link Cables</a> </p>
  483. </td>
  484. </tr>
  485. </tbody>
  486. </table>
  487. </p>
  488. <hr align="center"><i>Site maintained by Romain Li&eacute;vin (</i><a
  489. href="mailto:roms@tilp.info"><i>roms@tilp.info</i></a><i>)
  490. and Tim Singer (</i><a href="mailto:tsinger@gladstone.uoregon.edu"><i>tsinger@gladstone.uoregon.edu</i></a><i>)</i>
  491. </body>
  492. </html>