home *** CD-ROM | disk | FTP | other *** search
/ ftp.whtech.com / ftp.whtech.com.tar / ftp.whtech.com / source / ti-rs232-card.src < prev    next >
Text File  |  2006-10-19  |  33KB  |  997 lines

  1. 4000           DATA >AA01,>0000,>4010,>0000,>4016,>0000,>406C,>0000,>0000
  2. 4012           DATA >40F4,>0000,>4020,>416E,>0552,>5332,>3332,>402C,>416E
  3. 4024           DATA >0752,>5332,>3332,>2F31,>4038,>4174,>0752,>5332,>3332
  4. 4036           DATA >2F32,>4040,>415E,>0350,>494F,>404A,>415E,>0550,>494F
  5. 4048           DATA >2F31,>4054,>4164,>0550,>494F,>2F32,>4060,>4180,>0752
  6. 405A           DATA >5332,>3332,>2F33,>0000,>417A,>0752,>5332,>3332,>2F34
  7. 406C           DATA >0000,>40D2,>0000,>0800,>0303,>4543,>4512,>4352,>4518
  8. 407E           DATA >4C46,>451E,>4E55,>4524,>4441,>4570,>4241,>4536,>5041
  9. 4090           DATA >4540,>5457,>4596,>4348,>452A,>0000,>0028,>40B6,>0030
  10. 40A2           DATA >40C4,>0000,>006E,>012C,>0258,>04B0,>0960,>12C0,>2580
  11. 40B4           DATA >0000,>8563,>8482,>8209,>015B,>8082,>8041,>002B,>85AA
  12. 40C6           DATA >849C,>8271,>01A1,>809C,>804E,>8027
  13.  
  14. 4000 AA             BYTE >AA        Identification
  15. 4001 01             BYTE 1        Version number
  16. 4002 00             BYTE 0        Number of programs
  17. 4003 00             BYTE 0        Reserved
  18. 4004 4010           DATA >4010        Power up routine
  19. 4006 0000           DATA 0        User program header
  20. 4008 4016           DATA >4016        DSR Header
  21. 400A 0000           DATA 0        Subroutine link header
  22. 400C 406C           DATA >406C          Address of interrupt link
  23. 400E 0000           DATA 0        Address of BASIC subroutine libraries
  24.  
  25. 4010 0000           DATA 0        Power up routines
  26. 4012 40F4           DATA >40F4
  27.  
  28. 4014 0000           DATA 0
  29.  
  30. 4016 4020           DATA >4020          DEVICE NAME TABLES LIST
  31.      416E           DATA >416E
  32.      05             BYTE 5
  33.      5253323332     TEXT 'RS232'
  34. 4020 402C           DATA >402C
  35.      416E           DATA >416E
  36.      07             BYTE 7
  37.      52533233322F31 TEXT 'RS232/1'
  38. 402C 4038           DATA >4038
  39.      4174           DATA >4174
  40.      07             BYTE 7
  41.      52533233322F32 TEXT 'RS232/2'
  42. 4038 4040           DATA >4040
  43.      415E           DATA >415E
  44.      03             BYTE 3
  45.      50495F         TEXT 'PIO'
  46. 4040 404A           DATA >404A
  47.      415E           DATA >415E
  48.      05             BYTE 5
  49.      50494F2F31     TEXT 'PIO/1'
  50. 404A 4054           DATA >4054
  51.      4164           DATA >4164
  52.      05             BYTE 5
  53.      50494F2F32     TEXT 'PIO/2'
  54. 4054 4060           DATA >4060
  55.      4180           DATA >4180
  56.      07             BYTE 7
  57.      52533233322F33 TEXT 'RS232/3'
  58. 4060 0000           DATA 0
  59.      417A           DATA >417A
  60.      07             BYTE 7
  61.      52533233322F34 TEXT 'RS232/4'
  62.  
  63. 406C 0000           DATA 0
  64.      40D2           DATA >40D2          INTERRUPT ROUTINE ADDRESS
  65.      0000           DATA 0
  66.      0800           DATA >0800
  67.      0303           DATA >0303
  68.  
  69. 4076 4543           DATA 'EC'        These options can be used with
  70.      4512           DATA >4512        any I/O op code except LOAD and SAVE
  71.      4352           DATA 'CR'
  72.      4518           DATA >4518
  73.      4C46           DATA 'LF'
  74.      451E           DATA >451E
  75.      4E55           DATA 'NU'
  76.      4524           DATA >4524
  77.      4441           DATA 'DA'
  78.      4570           DATA >4570
  79. 408A 4241           DATA 'BA'        These option can be used with any
  80.      4536           DATA >4536        I/O op code
  81.      5041           DATA 'PA'
  82.      4540           DATA >4540
  83.      5457           DATA 'TW'
  84.      4596           DATA >4596
  85.      4348           DATA 'CH'
  86.      452A           DATA >452A
  87.      0000           DATA 0
  88.  
  89. * Possible clock speeds and corresponding baud rate table
  90.  
  91. 409C 0028           DATA >0028        2.5 Mhz
  92.      40B6           DATA >40B6
  93.      0030           DATA >0030        3.0 Mhz
  94.      40C4           DATA >40C4
  95.      0000           DATA 0
  96.  
  97. 40A6 006E           DATA 110
  98.      012C           DATA 300
  99.      0258           DATA 600
  100.      04B0           DATA 1200
  101.      0960           DATA 2400
  102.      12C0           DATA 4800
  103.      2580           DATA 9600
  104.      0000           DATA 0
  105.  
  106. * 2.5 MHz Baud rate table
  107.  
  108. 40B6 8563           DATA >8563        110
  109.      8482           DATA >8482        300
  110.      8209           DATA >8209        600
  111.      015B           DATA >015B        1200
  112.      8082           DATA >8082        2400
  113.      8041           DATA >8041        4800
  114.      002B           DATA >002B        9600
  115.  
  116. * 3.0 MHz Baud rate table
  117.  
  118. 40C4 85AA           DATA >85AA        110
  119.      949C           DATA >949C        300
  120.      8271           DATA >8271        600
  121.      01A1           DATA >01A1        1200
  122.      809C           DATA >809C        2400
  123.      804E           DATA >804E        4800
  124.      8027           DATA >8027        9600
  125.  
  126. *************************************************************************
  127. *                                    *
  128. *  Interrupt routine                            *
  129. *                                    *
  130. *     This routine gets called if the 9902 chip has interrupts enabled    *
  131. *  and the chip sends an interrupt signal.  It checks to see if a byte    *
  132. *  of information has been received by either 9902.  If so, it stores    *
  133. *  it in a buffer in VDP RAM.  If not it resets both 9902s.        *
  134. *                                    *
  135. *************************************************************************
  136.  
  137. 40D2 02A4           STWP R4
  138. 40D4 1D07           SBO  7        Turn on LED
  139. 40D6 C14B           MOV  R11,R5
  140. 40D8 C18C           MOV  R12,R6
  141. 40DA 022C 0040      AI   R12,>0040
  142. 40DE 1F10           TB   16        Receiver interrupt?
  143. 40E0 1316           JEQ  >410E
  144. 40E2 1F1F           TB   31        Interrupt?
  145. 40E4 1306           JEQ  >40F2
  146. 40E6 022C 0040      AI   R12,>0040
  147. 40EA 1F10           TB   16        Receiver interrupt?
  148. 40EC 1310           JEQ  >410E
  149. 40EE 1F1F           TB   31        Interrupt?
  150. 40F0 1632           JNE  >4156        *BUG* should be JNE  >4158
  151. 40F2 C306           MOV  R6,R12
  152. 40F4 C18C           MOV  R12,R6        Power up routine
  153. 40F6 1D07           SBO  7        Turn on LED
  154. 40F8 1D02           SBO  2
  155. 40FA 1E01           SBZ  1
  156. 40FC 022C 0040      AI   R12,>0040
  157. 4100 1D1F           SBO  31        Reset 9902 chip on port 1
  158. 4102 022C 0040      AI   R12,>0040
  159. 4106 1D1F           SBO  31        Reset 9902 chip on port 2
  160. 4108 C306           MOV  R6,R12
  161. 410A 1E07           SBZ  7        Turn off LED
  162. 410C 045B           RT
  163.  
  164. 410E 06A0 4874      BL   @>4874        Make sure data is there
  165. 4112 1621           JNE  >4156
  166. 4114 D064 FF24      MOVB @>FF24(R4),R1
  167. 4118 B060 45F9      AB   @>45F9,R1    Add 1 to R1
  168. 411C 9901 FF22      CB   R1,@>FF22(R4)
  169. 4120 1201           JLE  >4124
  170. 4122 04C1           CLR  R1
  171. 4124 9901 FF23      CB   R1,@>FF23(R4)
  172. 4128 1306           JEQ  >4136
  173. 412A 3607           STCR R7,8        Read data byte
  174. 412C 1F09           TB   9        Receive error?
  175. 412E 1607           JNE  >413E
  176. 4130 0207 FF00      LI   R7,>FF00    If error, store a >FF
  177. 4134 1004           JMP  >413E
  178. 4136 0207 FE00      LI   R7,>FE00    Buffer overflow, store a >FE
  179. 413A D064 FF24      MOVB @>FF24(R4),R1
  180. 413E D901 FF24      MOVB R1,@>FF24(R4)
  181. 4142 0981           SRL  R1,8
  182. 4144 A064 FF20      A    @>FF20(R4),R1
  183. 4148 0241 3FFF      ANDI R1,>3FFF
  184. 414C 06A0 484E      BL   @>484E
  185. 4150 4000           DATA >4000
  186. 4152 DBC7 FFFE      MOVB R7,@>FFFE(R15)        Store in VDP buffer
  187. 4156 1D12           SBO  18        Set Receive Interrupt Enable
  188. 4158 C306           MOV  R6,R12
  189. 415A 1E07           SBZ  7        Turn off LED
  190. 415C 0455           B    *R5
  191.  
  192. *************************************************************************
  193. *                                    *
  194. *  PIO and PIO/1 DSR Routine                        *
  195. *                                    *
  196. *************************************************************************
  197.  
  198. 415E 0206 0001      LI   R6,>0001
  199. 4162 1002           JMP  >4168
  200.  
  201. *************************************************************************
  202. *                                    *
  203. *  PIO/2 DSR Routine                            *
  204. *                                    *
  205. *************************************************************************
  206.  
  207. 4164 0206 0002      LI   R6,>0002
  208. 4168 0703           SETO R3
  209. 416A 04C2           CLR  R2
  210. 416C 1011           JMP  >4190
  211.  
  212. *************************************************************************
  213. *                                    *
  214. *  RS232 and RS232/1 DSR Routine                    *
  215. *                                    *
  216. *************************************************************************
  217.  
  218. 416E 0206 0001      LI   R6,>0001
  219. 4172 1008           JMP  >4184
  220.  
  221. *************************************************************************
  222. *                                    *
  223. *  RS232/2 DSR Routine                            *
  224. *                                    *
  225. *************************************************************************
  226.  
  227. 4174 0206 0001      LI   R6,>0001
  228. 4178 1008           JMP  >418A
  229.  
  230. *************************************************************************
  231. *                                    *
  232. *  RS232/4 DSR Routine                            *
  233. *                                    *
  234. *************************************************************************
  235.  
  236. 417A 0206 0002      LI   R6,>0002
  237. 417E 1005           JMP  >418A
  238.  
  239. *************************************************************************
  240. *                                    *
  241. *  RS232/3 DSR Routine                            *
  242. *                                    *
  243. *************************************************************************
  244.  
  245. 4180 0206 0002      LI   R6,>0002    R6 = RS232 card #
  246. 4184 0202 0040      LI   R2,>0040    R2 = CRU offset
  247. 4188 1002           JMP  >418E
  248. 418A 0202 0080      LI   R2,>0080
  249.  
  250. 418E 04C3           CLR  R3
  251. 4190 02A4           STWP R4
  252. 4192 C90B FF84      MOV  R11,@>FF84(R4)
  253. 4196 8181           C    R1,R6
  254. 4198 1302           JEQ  >419E
  255. 419A 0460 4480      B    @>4480        Wrong card, quit
  256. 419E C184           MOV  R4,R6
  257. 41A0 0226 FF78      AI   R6,>FF78
  258. 41A4 0205 0006      LI   R5,6
  259. 41A8 04F6           CLR  *R6+
  260. 41AA 0605           DEC  R5
  261. 41AC 16FD           JNE  >41A8
  262. 41AE 1D07           SBO  7        Turn on LED
  263. 41B0 A302           A    R2,R12
  264. 41B2 06A0 4842      BL   @>4842        Set VDP read address to PAB
  265. 41B6 0000           DATA 0
  266. 41B8 0205 000A      LI   R5,>000A
  267. 41BC C184           MOV  R4,R6
  268. 41BE 0226 FF6A      AI   R6,>FF6A
  269. 41C2 DDAF FBFE      MOVB @>FBFE(R15),*R6+    COPY PAB TO >834A (10 bytes)
  270. 41C6 0605           DEC  R5
  271. 41C8 16FC           JNE  >41C2
  272. 41CA 5920 460B FF6B SZCB @>460B,@>FF6B(R4)    Set error code to >00
  273. 41D0 9920 40B3 FF6A CB   @>40B3,@>FF6A(R4)
  274. 41D6 1606           JNE  >41E4
  275. 41D8 F920 4132 FF7D SOCB @>4132,@>FF7D(R4)
  276. 41DE 5920 40B3 FF6A SZCB @>40B3,@>FF6A(R4)
  277. 41E4 9824 FF6A 41A7 CB   @>FF6A(R4),@>41A7    Check I/O op code
  278. 41EA 1202           JLE  >41F0
  279. 41EC 0460 4450      B    @>4450            If op code > 6, error
  280. 41F0 06A0 4490      BL   @>4490            Parse the string
  281. 41F4 D164 FF6A      MOVB @>FF6A(R4),R5        Put I/O op code in R5
  282. 41F8 0985           SRL  R5,8
  283. 41FA 0A15           SLA  R5,1
  284. 41FC C165 4202      MOV  @>4202(R5),R5        Get address from jump table
  285. 4200 0455           B    *R5
  286.  
  287. * I/O op code jump table
  288.  
  289. 4202 4210           DATA >4210        I/O op code 0 - OPEN
  290. 4204 4464           DATA >4464        I/O op code 1 - CLOSE
  291. 4206 4236           DATA >4236        I/O op code 2 - READ
  292. 4208 42FA           DATA >42FA        I/O op code 3 - WRITE
  293. 420A 4450           DATA >4450        I/O op code 4 - Illegal
  294. 420C 4338           DATA >4338        I/O op code 5 - LOAD
  295. 420E 43D2           DATA >43D2        I/O op code 6 - SAVE
  296.  
  297. *************************************************************************
  298. *                                    *
  299. *  I/O op code 0 - OPEN                            *
  300. *                                    *
  301. *************************************************************************
  302.  
  303. 4210 D0A4 FF6E      MOVB @>FF6E(R4),R2        R2 = record length
  304. 4214 1609           JNE  >4228
  305. 4216 06A0 4842      BL   @>4842            If record length is 0,
  306. 421A 4004           DATA >4004            set it to the default 80
  307. 421C 0202 5000      LI   R2,>5000
  308. 4220 D902 FF6E      MOVB R2,@>FF6E(R4)
  309. 4224 DBC2 FFFE      MOVB R2,@>FFFE(R15)
  310. 4228 D064 FF6B      MOVB @>FF6B(R4),R1
  311. 422C 2060 43CA      COC  @>43CA,1        Sequential?
  312. 4230 1663           JNE  >42F8
  313. 4232 0460 444A      B    @>444A            Error #2
  314.  
  315. *************************************************************************
  316. *                                    *
  317. *  I/O op code 2 - READ                            *
  318. *                                    *
  319. *************************************************************************
  320.  
  321. 4236 0743           ABS  R3
  322. 4238 5920 4132 FF6F SZCB @>4132,@>FF6F(R4)
  323. 423E D1E4 FF6E      MOVB @>FF6E(R4),R7
  324. 4242 C264 FF6C      MOV  @>FF6C(R4),R9
  325. 4246 06A0 4740      BL   @>4740
  326. 424A 1607           JNE  >425A
  327. 424C 06A0 463A      BL   @>463A
  328. 4250 9187           CB   R7,R6
  329. 4252 1402           JHE  >4258
  330. 4254 0460 4456      B    @>4456
  331. 4258 C1C6           MOV  R6,R7
  332. 425A 0987           SRL  R7,8
  333. 425C 1348           JEQ  >42EE
  334. 425E 06A0 463A      BL   @>463A
  335. 4262 06A0 4740      BL   @>4740
  336. 4266 133A           JEQ  >42DC
  337. 4268 D064 FF78      MOVB @>FF78(R4),R1
  338. 426C 1307           JEQ  >427C
  339. 426E 06A0 474A      BL   @>474A
  340. 4272 1334           JEQ  >42DC
  341. 4274 0286 0D00      CI   R6,>0D00
  342. 4278 1631           JNE  >42DC
  343. 427A 1039           JMP  >42EE
  344. 427C 0286 0D00      CI   R6,>0D00
  345. 4280 1325           JEQ  >42CC
  346. 4282 0286 7F00      CI   R6,>7F00
  347. 4286 1312           JEQ  >42AC
  348. 4288 0286 1200      CI   R6,>1200
  349. 428C 1625           JNE  >42D8
  350. 428E C064 FF6C      MOV  @>FF6C(R4),R1
  351. 4292 06A0 4850      BL   @>4850
  352. 4296 06A0 46EE      BL   @>46EE
  353. 429A C089           MOV  R9,R2
  354. 429C 60A4 FF6C      S    @>FF6C(R4),R2
  355. 42A0 1003           JMP  >42A8
  356. 42A2 06A0 47DE      BL   @>47DE
  357. 42A6 0602           DEC  R2
  358. 42A8 16FC           JNE  >42A2
  359. 42AA 10D9           JMP  >425E
  360. 42AC 8264 FF6C      C    @>FF6C(R4),R9
  361. 42B0 13D6           JEQ  >425E
  362. 42B2 0587           INC  R7
  363. 42B4 0609           DEC  R9
  364. 42B6 C049           MOV  R9,R1
  365. 42B8 06A0 4850      BL   @>4850
  366. 42BC 06A0 47DE      BL   @>47DE
  367. 42C0 0286 0D00      CI   R6,>0D00
  368. 42C4 16CC           JNE  >425E
  369. 42C6 06A0 4700      BL   @>4700
  370. 42CA 10C9           JMP  >425E
  371. 42CC 06A0 474A      BL   @>474A
  372. 42D0 1303           JEQ  >42D8
  373. 42D2 06A0 46EE      BL   @>46EE
  374. 42D6 100B           JMP  >42EE
  375. 42D8 06A0 47E6      BL   @>47E6
  376. 42DC C049           MOV  R9,R1
  377. 42DE 06A0 484E      BL   @>484E
  378. 42E2 4000           DATA >4000
  379. 42E4 DBC6 FFFE      MOVB R6,@>FFFE(R15)
  380. 42E8 0589           INC  R9
  381. 42EA 0607           DEC  R7
  382. 42EC 16B8           JNE  >425E
  383. 42EE 6264 FF6C      S    @>FF6C(R4),R9
  384. 42F2 0A89           SLA  R9,8
  385. 42F4 D909 FF6F      MOVB R9,@>FF6F(R4)
  386. 42F8 101D           JMP  >4334
  387. 42FA C0C3           MOV  R3,R3
  388.  
  389. *************************************************************************
  390. *                                    *
  391. *  I/O op code 3 - WRITE                        *
  392. *                                    *
  393. *************************************************************************
  394.  
  395. 42FC 1301           JEQ  >4300
  396. 42FE 0703           SETO R3
  397. 4300 C064 FF6C      MOV  @>FF6C(R4),R1
  398. 4304 06A0 4850      BL   @>4850
  399. 4308 D1E4 FF6F      MOVB @>FF6F(R4),R7
  400. 430C 06A0 4740      BL   @>4740
  401. 4310 1603           JNE  >4318
  402. 4312 C187           MOV  R7,R6
  403. 4314 06A0 47E6      BL   @>47E6
  404. 4318 0987           SRL  R7,8
  405. 431A 1304           JEQ  >4324
  406. 431C 06A0 47DE      BL   @>47DE
  407. 4320 0607           DEC  R7
  408. 4322 16FC           JNE  >431C
  409. 4324 06A0 4740      BL   @>4740
  410. 4328 1305           JEQ  >4334
  411. 432A 06A0 474A      BL   @>474A
  412. 432E 1302           JEQ  >4334
  413. 4330 06A0 46EE      BL   @>46EE
  414. 4334 0460 4464      B    @>4464
  415.  
  416. *************************************************************************
  417. *                                    *
  418. *  I/O op code 4 - LOAD                            *
  419. *                                    *
  420. *************************************************************************
  421.  
  422. 4338 C024 FF70      MOV  @>FF70(R4),R0
  423. 433C 06A0 47E4      BL   @>47E4
  424. 4340 1600           NOP
  425. 4342 0205 0007      LI   R5,>0007
  426. 4346 0201 C01C      LI   R1,>C01C
  427. 434A 06A0 4870      BL   @>4870
  428. 434E 1307           JEQ  >435E
  429. 4350 0601           DEC  R1
  430. 4352 16FB           JNE  >434A
  431. 4354 06A0 4880      BL   @>4880
  432. 4358 0605           DEC  R5
  433. 435A 16F5           JNE  >4346
  434. 435C 10EF           JMP  >433C
  435. 435E 0709           SETO R9
  436. 4360 06A0 45C6      BL   @>45C6
  437. 4364 C1C6           MOV  R6,R7
  438. 4366 06A0 45C6      BL   @>45C6
  439. 436A 0986           SRL  R6,8
  440. 436C E1C6           SOC  R6,R7
  441. 436E 06A0 45A0      BL   @>45A0
  442. 4372 06A0 46B4      BL   @>46B4
  443. 4376 8248           C    R8,R9
  444. 4378 1304           JEQ  >4382
  445. 437A 06A0 47E4      BL   @>47E4
  446. 437E 1500           NOP
  447. 4380 10EE           JMP  >435E
  448. 4382 81C0           C    R0,R7
  449. 4384 1A68           JL   >4456
  450. 4386 06A0 47E4      BL   @>47E4
  451. 438A 0600           DEC  R0
  452. 438C 06A0 4686      BL   @>4686
  453. 4390 0709           SETO R9
  454. 4392 C04A           MOV  R10,R1
  455. 4394 06A0 484E      BL   @>484E
  456. 4398 4000           DATA >4000
  457. 439A 06A0 45C6      BL   @>45C6
  458. 439E DBC6 FFFE      MOVB R6,@>FFFE(R15)
  459. 43A2 0607           DEC  R7
  460. 43A4 16FA           JNE  >439A
  461. 43A6 06A0 45A0      BL   @>45A0
  462. 43AA C0C3           MOV  R3,R3
  463. 43AC 1302           JEQ  >43B2
  464. 43AE 06A0 48A2      BL   @>48A2        Slight delay
  465. 43B2 8209           C    R9,R8
  466. 43B4 1306           JEQ  >43C2
  467. 43B6 C1E4 FF80      MOV  @>FF80(R4),R7
  468. 43BA 06A0 47E4      BL   @>47E4
  469. 43BE 1500           NOP
  470. 43C0 10E7           JMP  >4390
  471. 43C2 06A0 47E4      BL   @>47E4
  472. 43C6 0600           DEC  R0
  473. 43C8 022A 0100      AI   R10,>0100
  474. 43CC C1E4 FF7E      MOV  @>FF7E(R4),R7
  475. 43D0 10DD           JMP  >438C
  476.  
  477. *************************************************************************
  478. *                                    *
  479. *  I/O op code 5 - SAVE                            *
  480. *                                    *
  481. *************************************************************************
  482.  
  483. 43D2 C04A           MOV  R10,R1
  484. 43D4 06A0 4850      BL   @>4850
  485. 43D8 06A0 463A      BL   @>463A
  486. 43DC 0286 1600      CI   R6,>1600
  487. 43E0 16FB           JNE  >43D8
  488. 43E2 0709           SETO R9
  489. 43E4 C0C3           MOV  R3,R3
  490. 43E6 1302           JEQ  >43EC
  491. 43E8 06A0 48A2      BL   @>48A2        Slight delay
  492. 43EC C1A4 FF70      MOV  @>FF70(R4),R6
  493. 43F0 06A0 45D0      BL   @>45D0
  494. 43F4 06C6           SWPB R6
  495. 43F6 06A0 45D0      BL   @>45D0
  496. 43FA 06A0 45B4      BL   @>45B4
  497. 43FE 06A0 463A      BL   @>463A
  498. 4402 0286 0600      CI   R6,>0600
  499. 4406 16ED           JNE  >43E2
  500. 4408 C1E4 FF70      MOV  @>FF70(R4),R7
  501. 440C 06A0 4686      BL   @>4686
  502. 4410 0709           SETO R9
  503. 4412 C04A           MOV  R10,R1
  504. 4414 06A0 4850      BL   @>4850
  505. 4418 D1AF FBFE      MOVB @>FBFE(R15),R6
  506. 441C 06A0 45D0      BL   @>45D0
  507. 4420 0607           DEC  R7
  508. 4422 16FA           JNE  >4418
  509. 4424 06A0 45B4      BL   @>45B4
  510. 4428 06A0 463A      BL   @>463A
  511. 442C 0286 0600      CI   R6,>0600
  512. 4430 1307           JEQ  >4440
  513. 4432 C0C3           MOV  R3,R3
  514. 4434 1302           JEQ  >443A
  515. 4436 06A0 48A2      BL   @>48A2        Slight delay
  516. 443A C1E4 FF80      MOV  @>FF80(R4),R7
  517. 443E 10E8           JMP  >4410
  518. 4440 022A 0100      AI   R10,>0100
  519. 4444 C1E4 FF7E      MOV  @>FF7E(R4),R7
  520. 4448 10E1           JMP  >440C
  521.  
  522. * Error reporting routines
  523.  
  524. 444A 0201 4000      LI   R1,>4000        I/O error code 2
  525. 444E 1008           JMP  >4460
  526.  
  527. 4450 0201 6000      LI   R1,>6000        I/O error code 3
  528. 4454 1005           JMP  >4460            Illegal I/O op code
  529.  
  530. 4456 0201 8000      LI   R1,>8000        I/O error code 4
  531. 445A 1002           JMP  >4460
  532.  
  533. 445C 0201 C000      LI   R1,>C000        I/O error code 6
  534.  
  535. 4460 F901 FF6B      SOCB R1,@>FF6B(R4)
  536.  
  537. *************************************************************************
  538. *                                    *
  539. *  I/O op code 1 - CLOSE                        *
  540. *                                    *
  541. *************************************************************************
  542.  
  543. 4464 06A0 4842      BL   @>4842
  544. 4468 4001           DATA >4001
  545. 446A DBE4 FF6B FFFE MOVB @>FF6B(R4),@>FFFE(R15)
  546. 4470 06A0 4842      BL   @>4842
  547. 4474 4005           DATA >4005
  548. 4476 DBE4 FF6F FFFE MOVB @>FF6F(R4),@>FFFE(R15)
  549. 447C 05E4 FF84      INCT @>FF84(R4)
  550. 4480 024C FF00      ANDI R12,>FF00
  551. 4484 C2E4 FF84      MOV  @>FF84(R4),R11
  552. 4488 1D02           SBO  2
  553. 448A 1E01           SBZ  1
  554. 448C 1E07           SBZ  7        Turn off LED
  555. 448E 045B           RT
  556.  
  557. *************************************************************************
  558. *                                    *
  559. *  This is the highly sophisticated parser.  Its job is to determine    *
  560. *  what options have been specified.  For example .BA=300, .PA=E etc.    *
  561. *                                    *
  562. *************************************************************************
  563.  
  564. 4490 C90B FF86      MOV  R11,@>FF86(R4)
  565. 4494 06A0 4730      BL   @>4730        Check for LOAD or SAVE operation
  566. 4498 1305           JEQ  >44A4
  567. 449A 0208 4076      LI   R8,>4076    Select option table
  568. 449E 0201 B200      LI   R1,>B200
  569. 44A2 1004           JMP  >44AC
  570. 44A4 0208 408A      LI   R8,>408A    Select more limited option table
  571. 44A8 0201 8300      LI   R1,>8300
  572. 44AC 0205 012C      LI   R5,>012C
  573. 44B0 C244           MOV  R4,R9
  574. 44B2 0229 FFFA      AI   R9,>FFFA
  575. 44B6 D641           MOVB R1,*R9
  576. 44B8 06A0 45F4      BL   @>45F4
  577. 44BC D024 FF73      MOVB @>FF73(R4),R0    Length of device name + options
  578. 44C0 0980           SRL  R0,8
  579. 44C2 6024 FF74      S    @>FF74(R4),R0    Subtract device name length
  580. 44C6 1217           JLE  >44F6
  581. 44C8 C064 FF76      MOV  @>FF76(R4),R1    R1 points to device name in VDP ram
  582. 44CC 06A0 4850      BL   @>4850        Set VDP read address to R1
  583. 44D0 0706           SETO R6
  584. 44D2 C000           MOV  R0,R0
  585. 44D4 1310           JEQ  >44F6
  586. 44D6 06A0 4798      BL   @>4798        Locates next '.' in options string
  587. 44DA 2E00           DATA >2E00        ASCII '.'
  588. 44DC 130C           JEQ  >44F6        If not found, we are done parsing
  589. 44DE C1C8           MOV  R8,R7        Store pointer to options table in R7
  590. 44E0 0986           SRL  R6,8
  591. 44E2 D1AF FBFE      MOVB @>FBFE(R15),R6       Get first 2 characters of option
  592. 44E6 0600           DEC  R0
  593. 44E8 06C6           SWPB R6
  594. 44EA C077           MOV  *R7+,R1    Check for valid option
  595. 44EC 1311           JEQ  >4510        If invalid, error code #2
  596. 44EE C0B7           MOV  *R7+,R2
  597. 44F0 8181           C    R1,R6        If this the option?
  598. 44F2 16FB           JNE  >44EA        If not, try next one
  599. 44F4 0452           B    *R2        Otherwise, jump to the routine
  600.  
  601. 44F6 D064 FF6A      MOVB @>FF6A(R4),R1    Get I/O op code
  602. 44FA 1307           JEQ  >450A        jump if it equals OPEN
  603. 44FC 06A0 4730      BL   @>4730        check for SAVE or LOAD
  604. 4500 1606           JNE  >450E
  605. 4502 06A0 46B2      BL   @>46B2        Display "255" at top of screen
  606. 4506 C2A4 FF6C      MOV  @>FF6C(R4),R10
  607. 450A 06A0 4822      BL   @>4822
  608. 450E 1066           JMP  >45DC
  609. 4510 109C           JMP  >444A
  610.  
  611. 4512 0201 FF78      LI   R1,>FF78    EC - Echo
  612. 4516 100B           JMP  >452E
  613. 4518 0201 FF79      LI   R1,>FF79    CR
  614. 451C 1008           JMP  >452E
  615. 451E 0201 FF7A      LI   R1,>FF7A    LF
  616. 4522 1005           JMP  >452E
  617. 4524 0201 FF7C      LI   R1,>FF7C    NU
  618. 4528 1002           JMP  >452E
  619. 452A 0201 FF7B      LI   R1,>FF7B    CH
  620. 452E A044           A    R4,R1
  621. 4530 F460 4132      SOCB @>4132,*R1
  622. 4534 1034           JMP  >459E
  623.  
  624. *  BA - Baud rate selection
  625.  
  626. 4536 C0C3           MOV  R3,R3
  627. 4538 1632           JNE  >459E
  628. 453A 06A0 45E2      BL   @>45E2
  629. 453E 102F           JMP  >459E
  630.  
  631. *  PA - Parity selection
  632.  
  633. 4540 C0C3           MOV  R3,R3
  634. 4542 162D           JNE  >459E
  635. 4544 06A0 4798      BL   @>4798        Located next '=' in options string
  636. 4548 3D00           DATA >3D00        '='
  637. 454A 13E2           JEQ  >4510        I/O error #2
  638. 454C 5660 40A1      SZCB @>40A1,*R9
  639. 4550 0986           SRL  R6,8
  640. 4552 0286 004E      CI   R6,>004E
  641. 4556 1323           JEQ  >459E
  642. 4558 0286 0045      CI   R6,>0045
  643. 455C 1306           JEQ  >456A
  644. 455E 0286 004F      CI   R6,>004F
  645. 4562 16D6           JNE  >4510        I/O error #2
  646. 4564 F660 40A1      SOCB @>40A1,*R9
  647. 4568 101A           JMP  >459E
  648. 456A F660 422C      SOCB @>422C,*R9
  649. 456E 1017           JMP  >459E
  650.  
  651. *  DA - number of data bits
  652.  
  653. 4570 C0C3           MOV  R3,R3
  654. 4572 1615           JNE  >459E
  655. 4574 06A0 4798      BL   @>4798        Locates next '=' in options string
  656. 4578 3D00           DATA >3D00        '='
  657. 457A 13CA           JEQ  >4510        I/O error #2
  658. 457C 06A0 4754      BL   @>4754
  659. 4580 F660 4074      SOCB @>4074,*R9
  660. 4584 0225 FFF9      AI   R5,>FFF9
  661. 4588 1303           JEQ  >4590
  662. 458A 0605           DEC  R5
  663. 458C 16C1           JNE  >4510        I/O error #2
  664. 458E 1002           JMP  >4594
  665. 4590 5660 45F9      SZCB @>45F9,*R9
  666. 4594 1004           JMP  >459E
  667.  
  668. * TW - Two stop bits
  669.  
  670. 4596 5660 42DC      SZCB @>42DC,*R9
  671. 459A F660 4004      SOCB @>4004,*R9
  672. 459E 1099           JMP  >44D2
  673. 45A0 C90B FF86      MOV  R11,@>FF86(R4)
  674. 45A4 06A0 463A      BL   @>463A
  675. 45A8 C206           MOV  R6,R8
  676. 45AA 06A0 463A      BL   @>463A
  677. 45AE 06C6           SWPB R6
  678. 45B0 E206           SOC  R6,R8
  679. 45B2 1014           JMP  >45DC
  680. 45B4 C90B FF86      MOV  R11,@>FF86(R4)
  681. 45B8 C189           MOV  R9,R6
  682. 45BA 06A0 47E6      BL   @>47E6
  683. 45BE 06C6           SWPB R6
  684. 45C0 06A0 47E6      BL   @>47E6
  685. 45C4 100B           JMP  >45DC
  686. 45C6 C90B FF86      MOV  R11,@>FF86(R4)
  687. 45CA 06A0 463A      BL   @>463A
  688. 45CE 1004           JMP  >45D8
  689. 45D0 C90B FF86      MOV  R11,@>FF86(R4)
  690. 45D4 06A0 47E6      BL   @>47E6
  691. 45D8 06A0 47C0      BL   @>47C0
  692. 45DC C2E4 FF86      MOV  @>FF86(R4),R11
  693. 45E0 045B           RT
  694.  
  695. 45E2 C90B FF88      MOV  R11,@>FF88(R4)
  696. 45E6 06A0 4798      BL   @>4798        Locates next '=' in options string
  697. 45EA 3D00           DATA >3D00        ASCII '='
  698. 45EC 1391           JEQ  >4510        I/O error #2
  699. 45EE 06A0 4754      BL   @>4754
  700. 45F2 1002           JMP  >45F8
  701. 45F4 C90B FF88      MOV  R11,@>FF88(R4)
  702. 45F8 0201 40A6      LI   R1,>40A6
  703. 45FC 04C2           CLR  R2
  704. 45FE C2F1           MOV  *R1+,R11
  705. 4600 1387           JEQ  >4510        I/O error #2
  706. 4602 82C5           C    R5,R11
  707. 4604 1302           JEQ  >460A
  708. 4606 05C2           INCT R2
  709. 4608 10FA           JMP  >45FE
  710. 460A D2E0 000C      MOVB @>000C,R11        Check clock speed
  711. 460E 098B           SRL  R11,8
  712. 4610 0201 409C      LI   R1,>409C
  713. 4614 C171           MOV  *R1+,R5
  714. 4616 1327           JEQ  >4666        Jump if clock speed is invalid
  715. 4618 82C5           C    R5,R11
  716. 461A 1302           JEQ  >4620
  717. 461C 05C1           INCT R1
  718. 461E 10FA           JMP  >4614
  719. 4620 A091           A    *R1,R2
  720. 4622 C052           MOV  *R2,R1
  721. 4624 1505           JGT  >4630
  722. 4626 F660 4072      SOCB @>4072,*R9
  723. 462A 0241 7FFF      ANDI R1,>7FFF
  724. 462E 1002           JMP  >4634
  725. 4630 5660 4072      SZCB @>4072,*R9
  726. 4634 C901 FFFE      MOV  R1,@>FFFE(R4)
  727. 4638 1023           JMP  >4680
  728. 463A C90B FF88      MOV  R11,@>FF88(R4)
  729. 463E 06A0 4870      BL   @>4870
  730. 4642 1303           JEQ  >464A
  731. 4644 06A0 4880      BL   @>4880
  732. 4648 10FA           JMP  >463E
  733. 464A C0C3           MOV  R3,R3
  734. 464C 160E           JNE  >466A
  735. 464E 04C6           CLR  R6
  736. 4650 3606           STCR R6,8
  737. 4652 1E12           SBZ  18
  738. 4654 1F0B           TB   11
  739. 4656 1307           JEQ  >4666
  740. 4658 1F0C           TB   12
  741. 465A 1305           JEQ  >4666
  742. 465C D2E4 FF7B      MOVB @>FF7B(R4),R11
  743. 4660 130F           JEQ  >4680
  744. 4662 1F0A           TB   10
  745. 4664 160D           JNE  >4680
  746. 4666 0460 445C      B    @>445C
  747. 466A 1D01           SBO  1
  748. 466C 1E02           SBZ  2
  749. 466E 1F02           TB   2
  750. 4670 1603           JNE  >4678
  751. 4672 06A0 4880      BL   @>4880
  752. 4676 10FB           JMP  >466E
  753. 4678 04C6           CLR  R6
  754. 467A D1A0 5000      MOVB @>5000,R6
  755. 467E 1D02           SBO  2
  756. 4680 C2E4 FF88      MOV  @>FF88(R4),R11
  757. 4684 045B           RT
  758.  
  759. 4686 C90B FF88      MOV  R11,@>FF88(R4)
  760. 468A D1C7           MOVB R7,R7
  761. 468C 1309           JEQ  >46A0
  762. 468E 06A0 46B4      BL   @>46B4
  763. 4692 0227 FF00      AI   R7,>FF00
  764. 4696 C907 FF7E      MOV  R7,@>FF7E(R4)
  765. 469A 0207 0100      LI   R7,>0100
  766. 469E 1006           JMP  >46AC
  767. 46A0 C1C7           MOV  R7,R7
  768. 46A2 1602           JNE  >46A8
  769. 46A4 0460 4464      B    @>4464
  770. 46A8 04E4 FF7E      CLR  @>FF7E(R4)
  771. 46AC C907 FF80      MOV  R7,@>FF80(R4)
  772. 46B0 10E7           JMP  >4680
  773. 46B2 0707           SETO R7            R7 = -1
  774. 46B4 C90B FF8A      MOV  R11,@>FF8A(R4)        Save return address
  775. 46B8 04C1           CLR  R1            R1 = 0
  776. 46BA 06A0 484E      BL   @>484E            Set VDP write address to R0
  777. 46BE 4000           DATA >4000
  778. 46C0 06A0 485A      BL   @>485A            Display 14 spaces on screen
  779.  
  780. * I don't understand what they are doing here.  It just displays
  781. * "255" at the top of the screen.
  782.  
  783. 46C4 C087           MOV  R7,R2
  784. 46C6 0982           SRL  R2,8
  785. 46C8 0206 0064      LI   R6,>0064        100 decimal
  786. 46CC 04C1           CLR  R1
  787. 46CE 3C46           DIV  R6,1            255/100
  788. 46D0 0221 0030      AI   R1,>0030        '0'
  789. 46D4 0A81           SLA  R1,8
  790. 46D6 B064 FF72      AB   @>FF72(R4),R1        Add screen offset character
  791. 46DA DBC1 FFFE      MOVB R1,@>FFFE(R15)        and display on screen
  792. 46DE 04C5           CLR  R5
  793. 46E0 3D60 4796      DIV  @>4796,5        divide r5|r6 by 10
  794. 46E4 C185           MOV  R5,R6
  795. 46E6 16F2           JNE  >46CC
  796. 46E8 06A0 485A      BL   @>485A            display 14 more blanks
  797. 46EC 101E           JMP  >472A
  798.  
  799. 46EE C90B FF8A      MOV  R11,@>FF8A(R4)
  800. 46F2 D2E4 FF79      MOVB @>FF79(R4),R11
  801. 46F6 1619           JNE  >472A
  802. 46F8 06A0 47E4      BL   @>47E4
  803. 46FC 0D00           SRC  R0,0
  804. 46FE 1002           JMP  >4704
  805. 4700 C90B FF8A      MOV  R11,@>FF8A(R4)
  806. 4704 D064 FF7C      MOVB @>FF7C(R4),R1
  807. 4708 1307           JEQ  >4718
  808. 470A 0205 0006      LI   R5,>0006
  809. 470E 06A0 47E4      BL   @>47E4
  810. 4712 0000           DATA 0
  811. 4714 0605           DEC  R5
  812. 4716 16FB           JNE  >470E
  813. 4718 D064 FF79      MOVB @>FF79(R4),R1
  814. 471C 1606           JNE  >472A
  815. 471E D064 FF7A      MOVB @>FF7A(R4),R1
  816. 4722 1603           JNE  >472A
  817. 4724 06A0 47E4      BL   @>47E4
  818. 4728 0A00           SLA  R0,0
  819. 472A C2E4 FF8A      MOV  @>FF8A(R4),R11        Restore return address
  820. 472E 045B           RT
  821.  
  822. *************************************************************************
  823. *                                    *
  824. *  This simple little procedure seems to set the Equal status bit if    *
  825. *  the I/O op code is 5 or 6 (SAVE or LOAD)                *
  826. *                                    *
  827. *************************************************************************
  828.  
  829. 4730 D064 FF6A      MOVB @>FF6A(R4),R1        I/O op code
  830. 4734 0981           SRL  R1,8            Move to lower byte
  831. 4736 0221 FFFB      AI   R1,>FFFB        Subtract 5
  832. 473A 1301           JEQ  >473E
  833. 473C 0601           DEC  R1
  834. 473E 045B           RT
  835.  
  836. 4740 D064 FF6B      MOVB @>FF6B(R4),R1        See if we have a certain error
  837. 4744 2060 4072      COC  @>4072,1        (>0800)
  838. 4748 045B           RT
  839.  
  840. 474A D064 FF6B      MOVB @>FF6B(R4),R1
  841. 474E 0241 1000      ANDI R1,>1000
  842. 4752 045B           RT
  843.  
  844. 4754 C90B FF8A      MOV  R11,@>FF8A(R4)
  845. 4758 04C1           CLR  R1
  846. 475A 04CB           CLR  R11
  847. 475C 1003           JMP  >4764
  848. 475E D1AF FBFE      MOVB @>FBFE(R15),R6
  849. 4762 0600           DEC  R0
  850. 4764 C1C6           MOV  R6,R7
  851. 4766 0987           SRL  R7,8
  852. 4768 0227 FFD0      AI   R7,>FFD0
  853. 476C 110C           JLT  >4786
  854. 476E 0287 0009      CI   R7,>0009
  855. 4772 1B09           JH   >4786
  856. 4774 058B           INC  R11
  857. 4776 3860 4796      MPY  @>4796,1
  858. 477A C041           MOV  R1,R1
  859. 477C 1606           JNE  >478A
  860. 477E A087           A    R7,R2
  861. 4780 C042           MOV  R2,R1
  862. 4782 C000           MOV  R0,R0
  863. 4784 16EC           JNE  >475E
  864. 4786 C2CB           MOV  R11,R11
  865. 4788 1602           JNE  >478E
  866. 478A 0460 444A      B    @>444A
  867. 478E C141           MOV  R1,R5
  868. 4790 C2E4 FF8A      MOV  @>FF8A(R4),R11
  869. 4794 045B           RT
  870.  
  871. 4796 000A           DATA 10
  872.  
  873. 4798 C17B           MOV  *R11+,R5
  874. 479A 9185           CB   R5,R6
  875. 479C 1307           JEQ  >47AC
  876. 479E D1AF FBFE      MOVB @>FBFE(R15),R6
  877. 47A2 0600           DEC  R0
  878. 47A4 9185           CB   R5,R6
  879. 47A6 1302           JEQ  >47AC
  880. 47A8 C000           MOV  R0,R0
  881. 47AA 16F9           JNE  >479E
  882. 47AC C000           MOV  R0,R0
  883. 47AE 1307           JEQ  >47BE
  884. 47B0 04C6           CLR  R6
  885. 47B2 D1AF FBFE      MOVB @>FBFE(R15),R6
  886. 47B6 0600           DEC  R0
  887. 47B8 0286 2000      CI   R6,>2000
  888. 47BC 13F7           JEQ  >47AC
  889. 47BE 045B           RT
  890.  
  891. 47C0 C046           MOV  R6,R1
  892. 47C2 0241 FF00      ANDI R1,>FF00
  893. 47C6 2A41           XOR  R1,9
  894. 47C8 C049           MOV  R9,R1
  895. 47CA 0941           SRL  R1,4
  896. 47CC 2849           XOR  R9,1
  897. 47CE 0241 FF00      ANDI R1,>FF00
  898. 47D2 0941           SRL  R1,4
  899. 47D4 2A41           XOR  R1,9
  900. 47D6 0B71           SRC  R1,7
  901. 47D8 2A41           XOR  R1,9
  902. 47DA 06C9           SWPB R9
  903. 47DC 045B           RT
  904.  
  905. 47DE D1AF FBFE      MOVB @>FBFE(R15),R6
  906. 47E2 1001           JMP  >47E6
  907. 47E4 C1BB           MOV  *R11+,R6
  908. 47E6 C90B FF8C      MOV  R11,@>FF8C(R4)
  909. 47EA C0C3           MOV  R3,R3
  910. 47EC 160D           JNE  >4808
  911. 47EE 1D10           SBO  16
  912. 47F0 1F1B           TB   27
  913. 47F2 1602           JNE  >47F8
  914. 47F4 1F16           TB   22
  915. 47F6 1303           JEQ  >47FE
  916. 47F8 06A0 4880      BL   @>4880
  917. 47FC 10F6           JMP  >47EA
  918. 47FE 3206           LDCR R6,8
  919. 4800 1E10           SBZ  16
  920. 4802 C2E4 FF8C      MOV  @>FF8C(R4),R11
  921. 4806 045B           RT
  922.  
  923. 4808 1E01           SBZ  1
  924. 480A 1F02           TB   2
  925. 480C 13F5           JEQ  >47F8
  926. 480E D806 5000      MOVB R6,@>5000
  927. 4812 1E02           SBZ  2
  928. 4814 1F02           TB   2
  929. 4816 1303           JEQ  >481E
  930. 4818 06A0 4880      BL   @>4880
  931. 481C 10FB           JMP  >4814
  932. 481E 1D02           SBO  2
  933. 4820 10F0           JMP  >4802
  934. 4822 C0C3           MOV  R3,R3
  935. 4824 1303           JEQ  >482C
  936. 4826 1D02           SBO  2
  937. 4828 1E01           SBZ  1
  938. 482A 045B           RT
  939.  
  940. 482C 1D1F           SBO  31
  941. 482E 3224 FFFA      LDCR @>FFFA(R4),8
  942. 4832 1E0D           SBZ  13
  943. 4834 3324 FFFE      LDCR @>FFFE(R4),12
  944. 4838 D064 FF7D      MOVB @>FF7D(R4),R1
  945. 483C 1301           JEQ  >4840
  946. 483E 1D12           SBO  18
  947. 4840 045B           RT
  948.  
  949. 4842 C064 FF76      MOV  @>FF76(R4),R1
  950. 4846 6064 FF74      S    @>FF74(R4),R1
  951. 484A 0221 FFF6      AI   R1,>FFF6
  952. 484E A07B           A    *R11+,R1
  953. 4850 D7E4 0003      MOVB @>0003(R4),*R15
  954. 4854 1000           NOP
  955. 4856 D7C1           MOVB R1,*R15
  956. 4858 045B           RT
  957.  
  958. 485A 0201 2020      LI   R1,>2020
  959. 485E B064 FF72      AB   @>FF72(R4),R1
  960. 4862 0202 000E      LI   R2,>000E
  961. 4866 DBC1 FFFE      MOVB R1,@>FFFE(R15)
  962. 486A 0602           DEC  R2
  963. 486C 16FC           JNE  >4866
  964. 486E 045B           RT
  965.  
  966. 4870 C0C3           MOV  R3,R3
  967. 4872 1604           JNE  >487C
  968. 4874 1F1B           TB   27    Data set ready?
  969. 4876 1601           JNE  >487A
  970. 4878 1F15           TB   21    Receive Buffer register loaded?
  971. 487A 045B           RT
  972. 487C 1F02           TB   2    
  973. 487E 045B           RT
  974.  
  975. 4880 C04C           MOV  R12,R1
  976. 4882 020C 0024      LI   R12,>0024
  977. 4886 30E0 4073      LDCR @>4073,3
  978. 488A 1FF5           TB   -11
  979. 488C 1304           JEQ  >4896
  980. 488E 30E0 4074      LDCR @>4074,3
  981. 4892 1FF5           TB   -11
  982. 4894 1602           JNE  >489A
  983. 4896 C301           MOV  R1,R12
  984. 4898 045B           RT
  985.  
  986. 489A C301           MOV  R1,R12
  987. 489C 0460 445C      B    @>445C        I/O error code 6
  988.  
  989. 48A0 ABCD           DATA >ABCD        ????
  990. 48A2 0B80           SRC  R0,8        This must be some sort of a delay
  991. 48A4 0B80           SRC  R0,8        routine
  992. 48A6 0B80           SRC  R0,8
  993. 48A8 0B80           SRC  R0,8
  994. 48AA 0B80           SRC  R0,8
  995. 48AC 0B80           SRC  R0,8
  996. 48AE 045B           RT
  997.