Mercurial > hg > Members > kono > nitros9-code
changeset 878:b2983d97e218
Added for later use
author | boisy |
---|---|
date | Fri, 17 Jan 2003 04:12:47 +0000 |
parents | c684d4897a63 |
children | c3702f05f6c0 |
files | 3rdparty/drivers/s16550/s16550.asm |
diffstat | 1 files changed, 1194 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/3rdparty/drivers/s16550/s16550.asm Fri Jan 17 04:12:47 2003 +0000 @@ -0,0 +1,1194 @@ +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 *