Mercurial > hg > Members > kono > nitros9-code
view 3rdparty/drivers/s16550/s16550.asm @ 878:b2983d97e218
Added for later use
author | boisy |
---|---|
date | Fri, 17 Jan 2003 04:12:47 +0000 |
parents | |
children |
line wrap: on
line source
00001 nam s16550 00002 ttl os9 device driver 00003 00004 * Disassembled 96/09/20 17:17:26 by Disasm v1.5 (C) 1988 by RML 00005 00006 ifp1 00007 use /dd/defs/os9defs 00008 endc 00009 00E1 tylg set Drivr+Objct 00010 0081 atrv set ReEnt+rev 00011 0001 rev set $01 00012 0000 87CD0799 mod eom,name,tylg,atrv,start,size 00013 D 0000 u0000 rmb 1 V.PAGE 00014 D 0001 u0001 rmb 2 V.PORT 00015 D 0003 u0003 rmb 1 V.LPRC 00016 D 0004 u0004 rmb 1 V.BUSY 00017 D 0005 u0005 rmb 1 V.WAKE 00018 D 0006 u0006 rmb 1 V.TYPE u0007 rmb 1 V.LINE 00019 D 0008 u0008 rmb 1 V.PAUS 00020 D 0009 u0009 rmb 2 V.DEV2 00022 D 000B u000B rmb 1 V.INTR 00023 D 000C u000C rmb 1 V.QUIT 00024 D 000D u000D rmb 1 V.PCHR 00025 D 000E u000E rmb 1 V.ERR 00026 D 000F u000F rmb 1 V.XON 00027 D 0010 u0010 rmb 4 V.XOFF u0011 rmb 1 V.KANJI u0012 rmb 2 V.KBUF 00028 D 0014 u0014 rmb 2 V.MODADR 00029 D 0016 u0016 rmb 2 V.PDLHD u0018 rmb 5 V.RSV 00030 D 001D u001D rmb 1 00031 D 001E u001E rmb 1 00032 D 001F u001F rmb 1 00033 D 0020 u0020 rmb 1 00034 D 0021 u0021 rmb 1 00035 D 0022 u0022 rmb 1 00036 D 0023 u0023 rmb 2 00037 D 0025 u0025 rmb 2 00038 D 0027 u0027 rmb 1 * signal code (for send) 00039 D 0028 u0028 rmb 1 00040 D 0029 u0029 rmb 1 00041 D 002A u002A rmb 2 00042 D 002C u002C rmb 2 00043 D 002E u002E rmb 2 00044 D 0030 u0030 rmb 2 00045 D 0032 u0032 rmb 2 V.BUFADDR 00046 D 0034 u0034 rmb 1 00047 D 0035 u0035 rmb 1 00048 D 0036 u0036 rmb 2 V.BUFSIZ 00049 D 0038 u0038 rmb 2 xmit buff addr? 00050 D 003A u003A rmb 1 00051 D 003B u003B rmb 1 00052 D 003C u003C rmb 2 00053 D 003E u003E rmb 2 00054 D 0040 u0040 rmb 1 00055 D 0041 u0041 rmb 2 00056 D 0043 u0043 rmb 1 00057 D 0044 u0044 rmb 52 00058 D 0078 u0078 rmb 8 00059 D 0080 u0080 rmb 128 * ???baud table??? 00060 D 0100 size equ . 00061 000D 03 fcb $03 00062 000E name equ * 00063 000E 73313635 fcs /s16550/ 00064 0014 10 fcb $10 00065 0015 03 L0015 fcb $03 00066 0016 start equ * 00067 0016 16005A lbra Iniz |SCF jump table 00068 0019 160160 lbra Read | 00069 001C 160114 lbra Write | 00070 001F 1601EC lbra GetSta | 00071 0022 160324 lbra SetSta | * Term | 00072 0025 5F clrb 00073 0026 340D pshs dp,b,cc 00074 0028 1704FB lbsr UtoDP 00075 002B 1A50 orcc #$50 00076 002D 4F clra 00077 002E DD34 std <u0034 00078 0030 9E32 ldx <u0032 00079 0032 9F2C stx <u002C 00080 0034 9F2E stx <u002E 00081 0036 3416 pshs x,b,a 00082 0038 E664 ldb $04,s 00083 003A 1F9A tfr b,cc 00084 003C BE0050 ldx >$0050 00085 003F A684 lda ,x 00086 0041 9704 sta <V.BUSY 00087 0043 9703 sta <V.LPRC 00088 0045 0D40 L0045 tst <u0040 00089 0047 2608 bne L0051 00090 0049 9E01 ldx <V.PORT 00091 004B E605 ldb $05,x 00092 004D C420 andb #$20 00093 004F 260D bne exit *exit routine 00094 0051 1704BA L0051 lbsr L050E 00095 0054 EC62 ldd $02,s 00096 0056 DD2C std <u002C 00097 0058 ECE4 ldd ,s 00098 005A DD34 std <u0034 00099 005C 20E7 bra L0045 00100 005E 3264 exit leas $04,s * EXIT----------------------- 00101 0060 6F01 clr $01,x 00102 0062 6F04 clr $04,x 00103 0064 DC36 ldd <V.BUFSIZ |num bytes to return 00104 0066 DE32 ldu <V.BUFADDR |st addr ram to return 00105 0068 103F29 os9 F$SRtMem |return system memory 00106 006B 8E0000 ldx #$0000 | 00107 006E 103F2A os9 F$IRQ |remove from poll 00108 0071 358D puls pc,dp,b,cc *** crash into init from exit? *** 00109 0073 5F Iniz clrb 00110 0074 340D pshs dp,b,cc 00111 0076 1704AD lbsr UtoDP 00112 0079 DC01 ldd <u0001 |dev. base addr 00113 007B C30002 addd #$0002 |status register=base+2 00114 007E 3420 pshs y dev.desc. addr>stack 00115 0080 308D06CF leax >Data,pcr |addr packet 00116 0084 318D04B3 leay >IRQser,pcr |addr irq service routine 00117 0088 103F2A os9 F$IRQ |add to poll 00118 008B 3520 puls y dev.desc. addr 00119 008D 2406 bcc checkdesc 00120 008F 3503 puls a,cc 00121 0091 1A01 orcc #$01 00122 0093 3588 puls pc,dp 00123 0095 A6A811 checkdesc lda <$11,y bytes in init table 00124 0098 811C cmpa #$1C 00125 009A 230E bls L00AA 00126 009C A6A82E lda <$2E,y 00127 009F 8410 anda #$10 00128 00A1 971F sta <u001F 00129 00A3 A6A82E lda <$2E,y 00130 00A6 840F anda #$0F 00131 00A8 2602 bne L00AC 00132 00AA 8601 L00AA lda #$01 00133 00AC 5F L00AC clrb 00134 00AD 3440 pshs u save U 00135 00AF 103F28 os9 F$SRqMem |Request System RAM |(D=byte cnt) 00136 00B2 1F31 tfr u,x |start addr to x 00137 00B4 3540 puls u restore U 00138 00B6 240D bcc L00C5 |error? 00139 00B8 E761 stb $01,s 00140 00BA 8E0000 ldx #$0000 set remove 00141 00BD 103F2A os9 F$IRQ Set IRQ (remove from poll) 00142 00C0 350D puls dp,b,cc 00143 00C2 1A01 orcc #$01 00144 00C4 39 rts 00145 00C5 9F32 L00C5 stx <u0032 00146 00C7 9F2C stx <u002C 00147 00C9 9F2E stx <u002E 00148 00CB DD36 std <u0036 00149 00CD 308B leax d,x 00150 00CF 9F30 stx <u0030 00151 00D1 1F89 tfr a,b 00152 00D3 4F clra 00153 00D4 CB03 addb #$03 00154 00D6 C40C andb #$0C 00155 00D8 58 lslb 00156 00D9 58 lslb 00157 00DA 58 lslb 00158 00DB 3406 pshs b,a 00159 00DD DC36 ldd <u0036 00160 00DF A3E1 subd ,s++ 00161 00E1 DD2A std <u002A 00162 00E3 30C844 leax <u0044,u 00163 00E6 9F3E stx <u003E 00164 00E8 9F38 stx <u0038 00165 00EA 9F3A stx <u003A 00166 00EC 30C90100 leax >u0100,u 00167 00F0 9F3C stx <u003C 00168 00F2 CC00BC ldd #$00BC 00169 00F5 DD41 std <u0041 00170 00F7 0F34 clr <u0034 00171 00F9 0F35 clr <u0035 00172 00FB 0F40 clr <u0040 00173 00FD ECA826 ldd <$26,y 00174 0100 DD1D std <u001D 00175 0102 170203 lbsr L0308 00176 0105 9E01 ldx <V.PORT 00177 0107 C610 ldb #$10 00178 0109 A605 L0109 lda $05,x 00179 010B A684 lda ,x 00180 010D 5A decb 00181 010E 26F9 bne L0109 00182 0110 1A50 orcc #$50 00183 0112 A68DFEFF lda >L0015,pcr 00184 0116 2B03 bmi L011B 00185 0118 B7FF7F sta >$FF7F * set mpi slot 00186 011B B6FF23 L011B lda >$FF23 * CART IRQ flag 00187 011E 84FC anda #$FC 00188 0120 B7FF23 sta >$FF23 * CART IRQ ctrl 00189 0123 B6FF22 lda >$FF22 * ???ram size??? 00190 0126 B60092 lda >$0092 00191 0129 8A01 ora #$01 00192 012B B70092 sta >$0092 00193 012E B7FF92 sta >$FF92 * IRQENR irq enable 00194 0131 358D puls pc,dp,b,cc 00195 0133 5F Write clrb 00196 0134 340D pshs dp,b,cc 00197 0136 1703ED lbsr UtoDP u=dev mem area 00198 0139 9E38 ldx <u0038 00199 013B A780 sta ,x+ character to write 00200 013D 9C3C cmpx <u003C 00201 013F 2502 bcs L0143 00202 0141 9E3E ldx <u003E 00203 0143 9C3A L0143 cmpx <u003A 00204 0145 260A bne L0151 00205 0147 3410 pshs x 00206 0149 8D19 bsr L0164 00207 014B 3510 puls x 00208 014D 24F4 bcc L0143 00209 014F 2006 bra L0157 00210 0151 9F38 L0151 stx <u0038 00211 0153 0C40 inc <u0040 00212 0155 8D02 bsr L0159 00213 0157 358D L0157 puls pc,dp,b,cc 00214 0159 860F L0159 lda #$0F 00215 015B 2002 bra L015F 00216 015D 860D lda #$0D 00217 015F 9E01 L015F ldx <V.PORT 00218 0161 A701 sta $01,x 00219 0163 39 rts 00220 0164 1703A7 L0164 lbsr L050E 00221 0167 BE0050 ldx >$0050 00222 016A E68819 ldb <$19,x 00223 016D 2704 beq L0173 00224 016F C103 cmpb #$03 00225 0171 2306 bls L0179 00226 0173 E60C L0173 ldb $0C,x 00227 0175 C402 andb #$02 00228 0177 2702 beq L017B 00229 0179 1A01 L0179 orcc #$01 00230 017B 39 L017B rts 00231 017C 5F Read clrb 00232 017D 340D pshs dp,b,cc 00233 017F 1703A4 lbsr UtoDP dev.mem. to dp 00234 0182 D60E ldb <V.ERR 00235 0184 262C bne ReadErr 00236 0186 1A50 L0186 orcc #$50 FIRQ,IRQ mask 00237 0188 DC34 ldd <u0034 00238 018A 271B beq L01A7 00239 018C 10830010 cmpd #$0010 00240 0190 2602 bne L0194 00241 0192 8D33 bsr L01C7 00242 0194 830001 L0194 subd #$0001 00243 0197 DD34 std <u0034 00244 0199 9E2E ldx <u002E 00245 019B A680 lda ,x+ 00246 019D 9C30 cmpx <u0030 00247 019F 2602 bne L01A3 00248 01A1 9E32 ldx <u0032 00249 01A3 9F2E L01A3 stx <u002E 00250 01A5 358D puls pc,dp,b,cc 00251 01A7 8DBB L01A7 bsr L0164 00252 01A9 2502 bcs L01AD 00253 01AB 20D9 bra L0186 00254 01AD 350B L01AD puls dp,a,cc 00255 01AF 1A01 orcc #$01 00256 01B1 39 rts 00257 01B2 E7A83A ReadErr stb <$3A,y b=V.ERR 00258 01B5 0F0E clr <V.ERR 00259 01B7 350B puls dp,a,cc 00260 01B9 C520 bitb #$20 $20=bit 5 00261 01BB 2705 beq L01C2 00262 01BD C6F4 ldb #$F4 00263 01BF 1A01 orcc #$01 00264 01C1 39 rts 00265 01C2 C6DC L01C2 ldb #$DC 00266 01C4 1A01 orcc #$01 00267 01C6 39 rts 00268 01C7 3407 L01C7 pshs b,a,cc 00269 01C9 9E01 ldx <V.PORT 00270 01CB D628 ldb <u0028 00271 01CD C570 bitb #$70 00272 01CF 2712 beq L01E3 00273 01D1 C520 bitb #$20 00274 01D3 2710 beq L01E5 00275 01D5 1A50 orcc #$50 00276 01D7 D628 ldb <u0028 00277 01D9 C4DF andb #$DF 00278 01DB D728 stb <u0028 00279 01DD A604 lda $04,x 00280 01DF 8A0A ora #$0A 00281 01E1 A704 sta $04,x 00282 01E3 3587 L01E3 puls pc,b,a,cc 00283 01E5 C510 L01E5 bitb #$10 00284 01E7 2710 beq L01F9 00285 01E9 1A50 orcc #$50 00286 01EB D628 ldb <u0028 00287 01ED C4EF andb #$EF 00288 01EF D728 stb <u0028 00289 01F1 A604 lda $04,x 00290 01F3 8A05 ora #$05 00291 01F5 A704 sta $04,x 00292 01F7 20EA bra L01E3 00293 01F9 C540 L01F9 bitb #$40 00294 01FB 27E6 beq L01E3 00295 01FD D60F ldb <V.XON 00296 01FF 1A50 orcc #$50 00297 0201 D743 stb <u0043 00298 0203 17FF53 lbsr L0159 00299 0206 D628 ldb <u0028 00300 0208 C4BF andb #$BF 00301 020A D728 stb <u0028 00302 020C 20D5 bra L01E3 00303 020E 5F GetSta clrb 00304 020F 340D pshs dp,b,cc 00305 0211 170312 lbsr UtoDP 00306 0214 8101 cmpa #$01 00307 0216 2618 bne L0230 00308 0218 DC34 ldd <u0034 00309 021A 270C beq L0228 00310 021C 4D tsta 00311 021D 2702 beq L0221 00312 021F C6FF ldb #$FF 00313 0221 AE26 L0221 ldx $06,y 00314 0223 E702 stb $02,x 00315 0225 1600DE lbra L0306 00316 0228 3505 L0228 puls b,cc 00317 022A 1A01 orcc #$01 00318 022C C6F6 ldb #$F6 00319 022E 3588 puls pc,dp 00320 0230 8128 L0230 cmpa #$28 00321 0232 2624 bne L0258 00322 0234 DC1D ldd <u001D 00323 0236 0D1F tst <u001F 00324 0238 2706 beq L0240 00325 023A C504 bitb #$04 00326 023C 2602 bne L0240 00327 023E C4F7 andb #$F7 00328 0240 AE26 L0240 ldx $06,y 00329 0242 ED06 std $06,x 00330 0244 5F clrb 00331 0245 9620 lda <u0020 00332 0247 8580 bita #$80 00333 0249 2602 bne L024D 00334 024B CA10 orb #$10 00335 024D 8520 L024D bita #$20 00336 024F 2602 bne L0253 00337 0251 CA40 orb #$40 00338 0253 E702 L0253 stb $02,x 00339 0255 1600AE lbra L0306 00340 0258 8106 L0258 cmpa #$06 00341 025A 2604 bne L0260 00342 025C 5F clrb 00343 025D 1600A6 lbra L0306 00344 0260 81D0 L0260 cmpa #$D0 00345 0262 266A bne L02CE 00346 0264 D60E ldb <V.ERR 00347 0266 1026FF48 lbne L01B2 00348 026A 1A50 orcc #$50 00349 026C DC30 ldd <u0030 00350 026E 932E subd <u002E 00351 0270 109334 cmpd <u0034 00352 0273 2504 bcs L0279 00353 0275 DC34 ldd <u0034 00354 0277 27AF beq L0228 00355 0279 1CAF L0279 andcc #$AF 00356 027B EE26 ldu $06,y 00357 027D 10A346 cmpd V.TYPE,u 00358 0280 2302 bls L0284 00359 0282 EC46 ldd V.TYPE,u 00360 0284 ED46 L0284 std V.TYPE,u 00361 0286 2744 beq L02CC 00362 0288 3406 pshs b,a 00363 028A 3470 pshs u,y,x 00364 028C ED62 std $02,s 00365 028E DC2E ldd <u002E 00366 0290 EDE4 std ,s 00367 0292 EC44 ldd V.BUSY,u 00368 0294 ED64 std $04,s 00369 0296 BE0050 ldx >$0050 00370 0299 E606 ldb $06,x * |dest task num 00371 029B B600D0 lda >$00D0 * |source task num 00372 029E 3570 puls u,y,x * |dest pt, bytes, srce pt 00373 02A0 103F38 os9 F$Move * |move data 00374 02A3 1A50 orcc #$50 00375 02A5 DC34 ldd <u0034 00376 02A7 A3E4 subd ,s 00377 02A9 DD34 std <u0034 00378 02AB 1CAF andcc #$AF 00379 02AD 10830010 cmpd #$0010 00380 02B1 240B bcc L02BE 00381 02B3 E3E4 addd ,s 00382 02B5 10830010 cmpd #$0010 00383 02B9 2503 bcs L02BE 00384 02BB 17FF09 lbsr L01C7 00385 02BE 3506 L02BE puls b,a 00386 02C0 9E2E ldx <u002E 00387 02C2 308B leax d,x 00388 02C4 9C30 cmpx <u0030 00389 02C6 2602 bne L02CA 00390 02C8 9E32 ldx <u0032 00391 02CA 9F2E L02CA stx <u002E 00392 02CC 2038 L02CC bra L0306 00393 02CE 81D2 L02CE cmpa #$D2 00394 02D0 2613 bne L02E5 00395 02D2 CC0B04 ldd #$0B04 00396 02D5 AE26 ldx $06,y 00397 02D7 ED01 std $01,x 00398 02D9 CC0707 ldd #$0707 00399 02DC ED04 std $04,x 00400 02DE CC0001 ldd #$0001 00401 02E1 ED06 std $06,x 00402 02E3 2021 bra L0306 00403 02E5 8126 L02E5 cmpa #$26 00404 02E7 2615 bne L02FE 00405 02E9 AE26 ldx $06,y 00406 02EB 10AE23 ldy $03,y 00407 02EE 10AE24 ldy $04,y 00408 02F1 4F clra 00409 02F2 E6A82C ldb <$2C,y 00410 02F5 ED04 std $04,x 00411 02F7 E6A82D ldb <$2D,y 00412 02FA ED06 std $06,x 00413 02FC 2008 bra L0306 00414 02FE 3505 L02FE puls b,cc 00415 0300 1A01 orcc #$01 00416 0302 C6D0 ldb #$D0 00417 0304 3588 puls pc,dp 00418 0306 358D L0306 puls pc,dp,b,cc 00419 0308 3440 L0308 pshs u 00420 030A 1F98 tfr b,a 00421 030C 338D0446 leau >L0756,pcr 00422 0310 9E01 ldx <V.PORT 00423 0312 C40F andb #$0F 00424 0314 58 lslb 00425 0315 58 lslb 00426 0316 33C5 leau b,u 00427 0318 44 lsra 00428 0319 44 lsra 00429 031A 44 lsra 00430 031B 44 lsra 00431 031C 44 lsra 00432 031D 8803 eora #$03 00433 031F 8403 anda #$03 00434 0321 3403 pshs a,cc 00435 0323 961D lda <u001D 00436 0325 44 lsra 00437 0326 44 lsra 00438 0327 8438 anda #$38 00439 0329 AA61 ora $01,s 00440 032B A761 sta $01,s 00441 032D 8A80 ora #$80 00442 032F 1A50 orcc #$50 00443 0331 A703 sta $03,x 00444 0333 ECC1 ldd ,u++ 00445 0335 1E89 exg a,b 00446 0337 ED84 std ,x 00447 0339 A661 lda $01,s 00448 033B A703 sta $03,x 00449 033D ECC4 ldd ,u 00450 033F 9721 sta <u0021 00451 0341 8A06 ora #$06 00452 0343 A702 sta $02,x 00453 0345 D729 stb <u0029 00454 0347 35C3 puls pc,u,a,cc 00455 0349 5F SetSta clrb 00456 034A 340D pshs dp,b,cc 00457 034C 1701D7 lbsr UtoDP 00458 034F 81D1 cmpa #$D1 00459 0351 267F bne L03D2 00460 0353 EE26 ldu $06,y 00461 0355 AE44 ldx V.BUSY,u 00462 0357 EC46 ldd V.TYPE,u 00463 0359 3416 pshs x,b,a 00464 035B 2764 beq L03C1 00465 035D DC3A L035D ldd <u003A 00466 035F 10933E cmpd <u003E 00467 0362 2607 bne L036B 00468 0364 DC3C ldd <u003C 00469 0366 830001 subd #$0001 00470 0369 200A bra L0375 00471 036B 830001 L036B subd #$0001 00472 036E 109338 cmpd <u0038 00473 0371 2402 bcc L0375 00474 0373 DC3C ldd <u003C 00475 0375 9338 L0375 subd <u0038 00476 0377 274D beq L03C6 00477 0379 10A3E4 cmpd ,s 00478 037C 2302 bls L0380 00479 037E ECE4 ldd ,s 00480 0380 3406 L0380 pshs b,a 00481 0382 BE0050 ldx >$0050 00482 0385 A606 lda $06,x 00483 0387 F600D0 ldb >$00D0 00484 038A DE38 ldu <u0038 00485 038C AE64 ldx $04,s 00486 038E 10AEE4 ldy ,s 00487 0391 1A50 orcc #$50 00488 0393 103F38 os9 F$Move 00489 0396 ECE4 ldd ,s 00490 0398 DE38 ldu <u0038 00491 039A 33CB leau d,u 00492 039C 11933C cmpu <u003C 00493 039F 2502 bcs L03A3 00494 03A1 DE3E ldu <u003E 00495 03A3 DF38 L03A3 stu <u0038 00496 03A5 4F clra 00497 03A6 D640 ldb <u0040 00498 03A8 E3E4 addd ,s 00499 03AA D740 stb <u0040 00500 03AC 1CAF andcc #$AF 00501 03AE ECE4 ldd ,s 00502 03B0 AE64 ldx $04,s 00503 03B2 308B leax d,x 00504 03B4 AF64 stx $04,s 00505 03B6 EC62 ldd $02,s 00506 03B8 A3E1 subd ,s++ 00507 03BA EDE4 std ,s 00508 03BC 269F bne L035D 00509 03BE 17FD98 lbsr L0159 00510 03C1 3264 L03C1 leas $04,s 00511 03C3 160146 lbra L050C 00512 03C6 1A50 L03C6 orcc #$50 00513 03C8 17FD8E lbsr L0159 00514 03CB 17FD96 lbsr L0164 00515 03CE 248D bcc L035D 00516 03D0 20EF bra L03C1 00517 03D2 8128 L03D2 cmpa #$28 00518 03D4 262C bne L0402 00519 03D6 AE26 ldx $06,y 00520 03D8 EC06 ldd $06,x 00521 03DA 0D1F tst <u001F 00522 03DC 2706 beq L03E4 00523 03DE C504 bitb #$04 00524 03E0 2602 bne L03E4 00525 03E2 CA08 orb #$08 00526 03E4 DD1D L03E4 std <u001D 00527 03E6 17FF1F lbsr L0308 00528 03E9 0F22 clr <u0022 00529 03EB 0D0C tst <V.QUIT 00530 03ED 2610 bne L03FF 00531 03EF 0D0B tst <V.INTR 00532 03F1 260C bne L03FF 00533 03F3 0D0D tst <V.PCHR 00534 03F5 2608 bne L03FF 00535 03F7 D61D ldb <u001D 00536 03F9 C504 bitb #$04 00537 03FB 2602 bne L03FF 00538 03FD 0C22 inc <u0022 00539 03FF 16010A L03FF lbra L050C 00540 0402 812B L0402 cmpa #$2B 00541 0404 2617 bne L041D 00542 0406 9E01 ldx <V.PORT 00543 0408 A604 lda $04,x 00544 040A 3412 pshs x,a 00545 040C 84FA anda #$FA 00546 040E A704 sta $04,x 00547 0410 8E001E ldx #$001E 00548 0413 103F0A os9 F$Sleep 00549 0416 3512 puls x,a 00550 0418 A704 sta $04,x 00551 041A 1600EF lbra L050C 00552 041D 811D L041D cmpa #$1D 00553 041F 2640 bne L0461 00554 0421 1A50 orcc #$50 00555 0423 9E01 ldx <V.PORT 00556 0425 9628 lda <u0028 00557 0427 8A08 ora #$08 00558 0429 9728 sta <u0028 00559 042B 8D50 bsr L047D 00560 042D 4F clra 00561 042E A784 sta ,x 00562 0430 1A50 L0430 orcc #$50 00563 0432 A605 lda $05,x 00564 0434 8540 bita #$40 00565 0436 260C bne L0444 00566 0438 1CAF andcc #$AF 00567 043A 8E0001 ldx #$0001 00568 043D 103F0A os9 F$Sleep 00569 0440 9E01 ldx <V.PORT 00570 0442 20EC bra L0430 00571 0444 8A40 L0444 ora #$40 00572 0446 A703 sta $03,x 00573 0448 8E001E ldx #$001E 00574 044B 103F0A os9 F$Sleep 00575 044E 9E01 ldx <V.PORT 00576 0450 1A50 orcc #$50 00577 0452 A603 lda $03,x 00578 0454 84BF anda #$BF 00579 0456 A703 sta $03,x 00580 0458 9628 lda <u0028 00581 045A 84F7 anda #$F7 00582 045C 9728 sta <u0028 00583 045E 1600AB lbra L050C 00584 0461 811A L0461 cmpa #$1A 00585 0463 262B bne L0490 00586 0465 A625 lda $05,y 00587 0467 AE26 ldx $06,y 00588 0469 E605 ldb $05,x 00589 046B 1A50 orcc #$50 00590 046D 9E34 ldx <u0034 00591 046F 2605 bne L0476 00592 0471 DD25 std <u0025 00593 0473 160096 lbra L050C 00594 0476 3501 L0476 puls cc 00595 0478 103F08 os9 F$Send 00596 047B 358C puls pc,dp,b 00597 047D 860D L047D lda #$0D 00598 047F A701 sta $01,x 00599 0481 0F40 clr <u0040 00600 0483 DC3E ldd <u003E 00601 0485 DD3A std <u003A 00602 0487 DD38 std <u0038 00603 0489 9621 lda <u0021 00604 048B 8A04 ora #$04 00605 048D A702 sta $02,x 00606 048F 39 rts 00607 0490 811B L0490 cmpa #$1B 00608 0492 260C bne L04A0 00609 0494 A625 lda $05,y 00610 0496 9125 cmpa <u0025 00611 0498 2604 bne L049E 00612 049A 4F clra 00613 049B 5F clrb 00614 049C DD25 std <u0025 00615 049E 206C L049E bra L050C 00616 04A0 819A L04A0 cmpa #$9A 00617 04A2 260A bne L04AE 00618 04A4 A625 lda $05,y 00619 04A6 AE26 ldx $06,y 00620 04A8 E605 ldb $05,x 00621 04AA DD23 std <u0023 00622 04AC 205E bra L050C 00623 04AE 819B L04AE cmpa #$9B 00624 04B0 260E bne L04C0 00625 04B2 1A50 orcc #$50 00626 04B4 A625 lda $05,y 00627 04B6 9123 cmpa <u0023 00628 04B8 2604 bne L04BE 00629 04BA 4F clra 00630 04BB 5F clrb 00631 04BC DD23 std <u0023 00632 04BE 204C L04BE bra L050C 00633 04C0 812A L04C0 cmpa #$2A 00634 04C2 2615 bne L04D9 00635 04C4 1A50 orcc #$50 00636 04C6 A625 lda $05,y 00637 04C8 8E0000 ldx #$0000 00638 04CB 9125 cmpa <u0025 00639 04CD 2602 bne L04D1 00640 04CF 9F25 stx <u0025 00641 04D1 9123 L04D1 cmpa <u0023 00642 04D3 2602 bne L04D7 00643 04D5 9F23 stx <u0023 00644 04D7 2033 L04D7 bra L050C 00645 04D9 8129 L04D9 cmpa #$29 00646 04DB 2627 bne L0504 00647 04DD 9E01 ldx <V.PORT 00648 04DF 1A50 orcc #$50 00649 04E1 0D28 tst <u0028 00650 04E3 2619 bne L04FE 00651 04E5 A606 lda $06,x 00652 04E7 84B0 anda #$B0 00653 04E9 9720 sta <u0020 00654 04EB 5F clrb 00655 04EC 8510 bita #$10 00656 04EE 2602 bne L04F2 00657 04F0 CA02 orb #$02 00658 04F2 8520 L04F2 bita #$20 00659 04F4 2602 bne L04F8 00660 04F6 CA01 orb #$01 00661 04F8 D728 L04F8 stb <u0028 00662 04FA 860F lda #$0F 00663 04FC A704 sta $04,x 00664 04FE C60F L04FE ldb #$0F 00665 0500 E701 stb $01,x 00666 0502 2008 bra L050C 00667 0504 3505 L0504 puls b,cc 00668 0506 1A01 orcc #$01 00669 0508 C6D0 ldb #$D0 00670 050A 3588 puls pc,dp 00671 050C 358D L050C puls pc,dp,b,cc 00672 050E 1A50 L050E orcc #$50 00673 0510 FC0050 ldd >$0050 00674 0513 9705 sta <V.WAKE 00675 0515 1F01 tfr d,x 00676 0517 A60C lda $0C,x 00677 0519 8A08 ora #$08 00678 051B A70C sta $0C,x 00679 051D 8E0001 ldx #$0001 * |remainer of slice 00680 0520 103F0A os9 F$Sleep * |sleep 00681 0523 1CAF andcc #$AF * |carry set on error 00682 0525 39 rts 00683 0526 3440 UtoDP pshs u U to DP, clean stack 00684 0528 3508 puls dp | 00685 052A 3261 leas $01,s | 00686 052C 39 rts | 00687 052D 01 L052D fcb $01 00688 052E 6F01 clr $01,x 00689 0530 1C00 andcc #$00 00690 0532 1D sex 00691 0533 01 fcb $01 00692 0534 C8FF eorb #$FF 00693 0536 F3FFF3 addd >$FFF3 00694 0539 002C neg <u002C 00695 053B 3408 IRQser pshs dp 00696 053D 8DE7 bsr UtoDP 00697 053F 0F27 clr <u0027 00698 0541 109E01 ldy <V.PORT 00699 0544 E622 ldb $02,y 00700 0546 C501 bitb #$01 00701 0548 2710 beq L055A 00702 054A 0D40 tst <u0040 00703 054C 2708 beq L0556 00704 054E E625 ldb $05,y 00705 0550 C520 bitb #$20 00706 0552 10260131 lbne L0687 00707 0556 1A01 L0556 orcc #$01 00708 0558 3588 puls pc,dp 00709 055A 308DFFCF L055A leax >L052D,pcr 00710 055E C40E andb #$0E 00711 0560 3A abx 00712 0561 1F50 tfr pc,d 00713 0563 E384 addd ,x 00714 0565 1F05 tfr d,pc 00715 0567 E622 L0567 ldb $02,y 00716 0569 C501 bitb #$01 00717 056B 27ED beq L055A 00718 056D 9605 lda <V.WAKE 00719 056F 270B beq L057C 00720 0571 5F clrb 00721 0572 D705 stb <V.WAKE 00722 0574 1F01 tfr d,x 00723 0576 A60C lda $0C,x 00724 0578 84F7 anda #$F7 00725 057A A70C sta $0C,x 00726 057C 1CFE L057C andcc #$FE 00727 057E 3588 puls pc,dp 00728 0580 9E2C ldx <u002C 00729 0582 A625 lda $05,y 00730 0584 2B0D bmi L0593 00731 0586 D629 ldb <u0029 00732 0588 8D2F L0588 bsr L05B9 00733 058A 5A decb 00734 058B 26FB bne L0588 00735 058D 2002 bra L0591 00736 058F 9E2C ldx <u002C 00737 0591 A625 L0591 lda $05,y 00738 0593 851E L0593 bita #$1E 00739 0595 2705 beq L059C 00740 0597 170198 lbsr L0732 00741 059A 20F5 bra L0591 00742 059C 8501 L059C bita #$01 00743 059E 2704 beq L05A4 00744 05A0 8D17 bsr L05B9 00745 05A2 20ED bra L0591 00746 05A4 0D27 L05A4 tst <u0027 00747 05A6 260D bne L05B5 00748 05A8 DC25 ldd <u0025 00749 05AA 2709 beq L05B5 00750 05AC D727 stb <u0027 * |signal code 00751 05AE 103F08 os9 F$Send * |send signal 00752 05B1 4F clra 00753 05B2 5F clrb 00754 05B3 DD25 std <u0025 00755 05B5 9F2C L05B5 stx <u002C 00756 05B7 20AE bra L0567 00757 05B9 3404 L05B9 pshs b 00758 05BB A6A4 lda ,y 00759 05BD 2736 beq L05F5 00760 05BF 0D22 tst <u0022 00761 05C1 2632 bne L05F5 00762 05C3 910C cmpa <V.QUIT 00763 05C5 2604 bne L05CB 00764 05C7 C602 ldb #$02 00765 05C9 2006 bra L05D1 00766 05CB 910B L05CB cmpa <V.INTR 00767 05CD 2611 bne L05E0 00768 05CF C603 ldb #$03 00769 05D1 3402 L05D1 pshs a 00770 05D3 0D27 tst <u0027 00771 05D5 2607 bne L05DE 00772 05D7 9603 lda <V.LPRC * | dest proc id 00773 05D9 D727 stb <u0027 * | signal code 00774 05DB 103F08 os9 F$Send * | send signal 00775 05DE 3502 L05DE puls a 00776 05E0 910F L05E0 cmpa <V.XON 00777 05E2 2773 beq L0657 00778 05E4 9110 cmpa <V.XOFF 00779 05E6 10270081 lbeq L066B 00780 05EA 910D cmpa <V.PCHR 00781 05EC 2607 bne L05F5 00782 05EE DE09 ldu <V.DEV2 00783 05F0 2703 beq L05F5 00784 05F2 A7C808 sta <V.PAUS,u 00785 05F5 A780 L05F5 sta ,x+ 00786 05F7 9C30 cmpx <u0030 00787 05F9 2602 bne L05FD 00788 05FB 9E32 ldx <u0032 00789 05FD 9C2E L05FD cmpx <u002E 00790 05FF 2610 bne L0611 00791 0601 C602 ldb #$02 00792 0603 DA0E orb <V.ERR 00793 0605 D70E stb <V.ERR 00794 0607 9C32 cmpx <u0032 00795 0609 2602 bne L060D 00796 060B 9E30 ldx <u0030 00797 060D 301F L060D leax -$01,x 00798 060F 200C bra L061D 00799 0611 DC34 L0611 ldd <u0034 00800 0613 C30001 addd #$0001 00801 0616 DD34 std <u0034 00802 0618 10932A cmpd <u002A 00803 061B 2702 beq L061F 00804 061D 3584 L061D puls pc,b 00805 061F D628 L061F ldb <u0028 00806 0621 C570 bitb #$70 00807 0623 26F8 bne L061D 00808 0625 961D lda <u001D 00809 0627 8502 bita #$02 00810 0629 270C beq L0637 00811 062B CA20 orb #$20 00812 062D D728 stb <u0028 00813 062F A624 lda $04,y 00814 0631 84F5 anda #$F5 00815 0633 A724 sta $04,y 00816 0635 20E6 bra L061D 00817 0637 8501 L0637 bita #$01 00818 0639 270C beq L0647 00819 063B CA10 orb #$10 00820 063D D728 stb <u0028 00821 063F A624 lda $04,y 00822 0641 84FA anda #$FA 00823 0643 A724 sta $04,y 00824 0645 20D6 bra L061D 00825 0647 9610 L0647 lda <V.XOFF 00826 0649 27D2 beq L061D 00827 064B CA40 orb #$40 00828 064D D728 stb <u0028 00829 064F 9743 sta <u0043 00830 0651 C60F ldb #$0F 00831 0653 E721 stb $01,y 00832 0655 20C6 bra L061D 00833 0657 D61D L0657 ldb <u001D 00834 0659 C504 bitb #$04 00835 065B 1027FF96 lbeq L05F5 00836 065F 9628 lda <u0028 00837 0661 84FB anda #$FB 00838 0663 9728 sta <u0028 00839 0665 860F lda #$0F 00840 0667 A721 sta $01,y 00841 0669 20B2 bra L061D 00842 066B D61D L066B ldb <u001D 00843 066D C504 bitb #$04 00844 066F 1027FF82 lbeq L05F5 00845 0673 9628 lda <u0028 00846 0675 8A04 ora #$04 00847 0677 9728 sta <u0028 00848 0679 860D lda #$0D 00849 067B A721 sta $01,y 00850 067D 209E bra L061D 00851 067F A625 lda $05,y 00852 0681 8520 bita #$20 00853 0683 1027FEE0 lbeq L0567 00854 0687 9E3A L0687 ldx <u003A 00855 0689 9643 lda <u0043 00856 068B 2F06 ble L0693 00857 068D A7A4 sta ,y 00858 068F 8A80 ora #$80 00859 0691 9743 sta <u0043 00860 0693 0D40 L0693 tst <u0040 00861 0695 2734 beq L06CB 00862 0697 D628 ldb <u0028 00863 0699 C508 bitb #$08 00864 069B 262E bne L06CB 00865 069D C407 andb #$07 00866 069F D41D andb <u001D 00867 06A1 2628 bne L06CB 00868 06A3 D63B ldb <u003B 00869 06A5 50 negb 00870 06A6 C10F cmpb #$0F 00871 06A8 2302 bls L06AC 00872 06AA C60F ldb #$0F 00873 06AC D140 L06AC cmpb <u0040 00874 06AE 2302 bls L06B2 00875 06B0 D640 ldb <u0040 00876 06B2 3404 L06B2 pshs b 00877 06B4 A680 L06B4 lda ,x+ 00878 06B6 A7A4 sta ,y 00879 06B8 5A decb 00880 06B9 26F9 bne L06B4 00881 06BB 9C3C cmpx <u003C 00882 06BD 2502 bcs L06C1 00883 06BF 9E3E ldx <u003E 00884 06C1 9F3A L06C1 stx <u003A 00885 06C3 D640 ldb <u0040 00886 06C5 E0E0 subb ,s+ 00887 06C7 D740 stb <u0040 00888 06C9 2604 bne L06CF 00889 06CB 860D L06CB lda #$0D 00890 06CD A721 sta $01,y 00891 06CF 16FE95 L06CF lbra L0567 00892 06D2 A626 lda $06,y 00893 06D4 1F89 tfr a,b 00894 06D6 C4B0 andb #$B0 00895 06D8 D720 stb <u0020 00896 06DA D628 ldb <u0028 00897 06DC C4FC andb #$FC 00898 06DE 8510 bita #$10 00899 06E0 2602 bne L06E4 00900 06E2 CA02 orb #$02 00901 06E4 8520 L06E4 bita #$20 00902 06E6 2602 bne L06EA 00903 06E8 CA01 orb #$01 00904 06EA D728 L06EA stb <u0028 00905 06EC 8508 bita #$08 00906 06EE 2734 beq L0724 00907 06F0 8580 bita #$80 00908 06F2 261E bne L0712 00909 06F4 961D lda <u001D 00910 06F6 8510 bita #$10 00911 06F8 270E beq L0708 00912 06FA 9E16 ldx <V.PDLHD 00913 06FC 270A beq L0708 00914 06FE 8601 lda #$01 00915 0700 A7883F L0700 sta <$3F,x 00916 0703 AE883D ldx <$3D,x 00917 0706 26F8 bne L0700 00918 0708 8620 L0708 lda #$20 00919 070A 9A0E ora <V.ERR 00920 070C 970E sta <V.ERR 00921 070E C4FB andb #$FB 00922 0710 D728 stb <u0028 00923 0712 0D27 L0712 tst <u0027 00924 0714 260E bne L0724 00925 0716 DC23 ldd <u0023 00926 0718 5D tstb 00927 0719 2709 beq L0724 00928 071B 103F08 os9 F$Send * |send signal 00929 071E D727 stb <u0027 00930 0720 4F clra 00931 0721 5F clrb 00932 0722 DD23 std <u0023 00933 0724 860F L0724 lda #$0F 00934 0726 A721 sta $01,y 00935 0728 16FE3C lbra L0567 00936 072B A625 lda $05,y 00937 072D 8D03 bsr L0732 00938 072F 16FE35 lbra L0567 00939 0732 3404 L0732 pshs b 00940 0734 5F clrb 00941 0735 8502 bita #$02 00942 0737 2702 beq L073B 00943 0739 CA04 orb #$04 00944 073B 8504 L073B bita #$04 00945 073D 2702 beq L0741 00946 073F CA01 orb #$01 00947 0741 8508 L0741 bita #$08 00948 0743 2702 beq L0747 00949 0745 CA02 orb #$02 00950 0747 8510 L0747 bita #$10 00951 0749 2606 bne L0751 00952 074B CA08 orb #$08 00953 074D DA0E orb <V.ERR 00954 074F D70E stb <V.ERR 00955 0751 3584 L0751 puls pc,b *[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ 00956 0753 01 Data fcb $01 00957 0754 01 fcb $01 00958 0755 0A28 dec <u0028 00959 0757 E901 adcb $01,x 00960 0759 01 fcb $01 00961 075A 0F00 clr <V.PAGE 00962 075C 01 fcb $01 00963 075D 01 fcb $01 00964 075E 0780 asr <u0080 00965 0760 41 fcb $41 A 00966 0761 0403 lsr <V.LPRC 00967 0763 C081 subb #$81 00968 0765 0801 lsl <V.PORT 00969 0767 E0C1 subb ,u++ 00970 0769 0E00 jmp <V.PAGE 00971 076B F0C10E subb >$C10E 00972 076E 0078 neg <u0078 00973 0770 C10E cmpb #$0E 00974 0772 003C neg <u003C 00975 0774 8108 cmpa #$08 00976 0776 001E neg <u001E 00977 0778 8108 cmpa #$08 00978 077A 0014 neg <V.MODADR 00979 077C 8108 cmpa #$08 00980 077E 000F neg <V.XON 00981 0780 8108 cmpa #$08 00982 0782 000A neg <u000A 00983 0784 8108 cmpa #$08 00984 0786 000A neg <u000A 00985 0788 8108 cmpa #$08 00986 078A 000A neg <u000A 00987 078C 8108 cmpa #$08 00988 078E 000A neg <u000A 00989 0790 8108 cmpa #$08 00990 0792 0025 neg <u0025 00991 0794 8108 cmpa #$08 00992 0796 85C9D1 emod 00993 0799 eom equ *