REM > 6809/SRC REM Source for Acorn System 6809 CPU card OS_CLI=&FFF7:OSBYTE=&FFF4:OSWORD=&FFF1:OSWRCH=&FFEE OSWRCR=&FFEC:OSNEWL=&FFE7:OSASCI=&FFE3:OSRDCH=&FFE0 load%=&F800 DIM mcode% &814 FOR P=0 TO 1 P%=load%:O%=mcode% [OPT P*3+4 \ Memory \ ====== \ Workspace, pointed to by DP within monitor code EQUW &035B :\ 035B= 03 5B EQUW &0000 :\ 035D= 00 00 EQUW &7FFF :\ 035F= 7F FF EQUB &00 :\ 0361= 00 Output destination, 0 or <>0 EQUB &0A :\ 0362= 0A Printer Ignore character EQUW &00 :\ 0363= 00 EQUW &CD :\ 0364= CD EQUW LF95B :\ 0365= F9 5B Character output vector EQUW LFA5E :\ 0367= FA 5E EQUW LFD25 :\ 0369= FD 25 EQUW LFD53 :\ 036B= FD 53 EQUW LFA9D :\ 036D= FA 9D Printer Character output vector EQUW LFF7F :\ 036F= FF 7F EQUW LFF51 :\ 0371= FF 51 EQUW LFF05 :\ 0373= FF 05 VIA Timer1 vector EQUW &0000 :\ 0375= 00 00 EQUW LFF05 :\ 0377= FF 05 Reserved vector EQUW LFF05 :\ 0379= FF 05 SWI3 vector EQUW LFF05 :\ 037B= FF 05 SWI2 vector EQUW LFF05 :\ 037D= FF 05 FIRQ vector EQUW LFEE0 :\ 037F= FE E0 IRQ vector EQUW LFBC3 :\ 0381= FB C3 SWI vector EQUW LFF05 :\ 0383= FF 05 NMI vector EQUW &0000 :\ 0385= 00 00 :\ 0387= .. .. Initialised to 03AE :\ 0389= .. .. Initialised to 03AE :\ 038B= .. .. Initialised to 03AE :\ 038D= .. .. :\ 038F :\ 03DE= .. .. Saved Stack pointer \ I/O space \ --------- \ 0980 - VIA registers \ F7FC/D - reset intercept vector \ F7FE/F - &A55A to vector on reset \ \ RESET \ ===== .LF800 LDA #&03:TFR A,DP :\ Set DataPage to &0300 LDX #LFF25 :\ Point to initial data LDU #&035B :\ Point to RAM .LF80A LDA X+:STA U+ :\ Copy a byte from initial table to RAM CMPX #LFF51:BNE LF80A :\ Loop until end of table LDS &DE :\ Get stack pointer from &03DE/F LDX &F7FE :\ Get a byte from I/O register CMPX #&A55A:BNE LF822 :\ If not magic value, skip past JSR [&F7FC] :\ Call code pointed to by I/O register .LF822 LDU #LFBEA :\ Point User SP to LFBEA PSHS U :\ Push User SP onto System Stack LDD #&000C :\ A=&00, B=&0C .LF82A PSHS A :\ Push A onto System Stack DECB:BNE LF82A :\ Push &00 twelve times STS &DF :\ Store stack pointer in &00DF/E0 LDX #&03AE :\ Point X to something STX &89 :\ Set &0389/A to &03AE STX &87 :\ Set &0387/8 to &03AE STX &8B :\ Set &038B/C to &03AE LBSR LF924 :\ F83B= 17 00 E7 ..g LBSR LF911 :\ F83E= 17 00 D1 ..Q CLR &A2 :\ F841= 0F A2 ." LBSR LFC46 :\ F843= 17 04 00 ... LDX #LFFFF :\ F846= 8E FF FF ... STX &A3 :\ F849= 9F A3 .# ANDCC #&EF :\ F84B= 1C EF .o .LF84D LDA #&2A :\ F84D= 86 2A .* LDX &0375 :\ F84F= BE 03 75 >.u BNE LF857 :\ F852= 26 03 &. LBSR LFA21 :\ F854= 17 01 CA ..J .LF857 STA &03A1 :\ F857= B7 03 A1 7.! .LF85A LDA #&03 :\ F85A= 86 03 .. TFR A,DP :\ F85C= 1F 8B .. LDX &75 :\ F85E= 9E 75 .u BEQ LF866 :\ F860= 27 04 '. LDA X :\ F862= A6 84 &. BEQ LF8A7 :\ F864= 27 41 'A .LF866 BSR LF87F :\ F866= 8D 17 .. BEQ LF84D :\ F868= 27 E3 'c LDX &71 :\ F86A= 9E 71 .q LBSR LF9A5 :\ F86C= 17 01 37 ..7 BRA LF85A :\ F86F= 20 E9 i BCC LF87B :\ F871* 34 08 4. STS LFF03 :\ F873= 10 FF 03 8D .... STX &0375 :\ F877= BF 03 75 ?.u CLR &03A2 :\ F87A= 7F 03 A2 .." BRA LF84D :\ F87D= 20 CE N .LF87F LDA #&0D :\ F87F= 86 0D .. TST &03A1 :\ F881= 7D 03 A1 }.! BEQ LF88C :\ F884= 27 06 '. BSR LF890 :\ F886= 8D 08 .. CMPA #&0D :\ F888= 81 0D .. BNE LF88F :\ F88A= 26 03 &. .LF88C CLR &03A1 :\ F88C= 7F 03 A1 ..! .LF88F BVS LF8C5 :\ F88F* 39 34 94 EQUB &18 :\ F891= 18 . LDA #&03 :\ F892= 86 03 .. TFR A,DP :\ F894= 1F 8B .. LDA &A2 :\ F896= 96 A2 ." .LF898 BEQ LF89E :\ F898= 27 04 '. CLR &A2 :\ F89A= 0F A2 ." BCS LF836 :\ F89C* 35 98 5. .LF89E LDX &75 :\ F89E= 9E 75 .u BEQ LF8B0 :\ F8A0= 27 0E '. LDA X+ :\ F8A2= A6 80 &. BNE LF8B4 :\ F8A4= 26 0E &. DECA :\ F8A6= 4A J .LF8A7 LDS &DE :\ F8A7= 10 DE 8D .^. CLR &75 :\ F8AA= 0F 75 .u CLR &76 :\ F8AC= 0F 76 .v BCS LF838 :\ F8AE* 35 88 5. .LF8B0 JSR [&0367] :\ F8B0= AD 9F 03 67 -..g .LF8B4 STX &75 :\ F8B4= 9F 75 .u BCS LF850 :\ F8B6* 35 98 5. LDX #LFF96 :\ Point to register list BSR LF8EC :\ Output register list LDU &AA :\ F8BD= DE AA ^* LDB #&04 :\ F8BF= C6 04 F. .LF8C1 LDA U+ :\ F8C1= A6 C0 &@ LBSR LFA96 :\ F8C3= 17 01 D1 ..Q DECB :\ F8C6= 5A Z BNE LF8C1 :\ F8C7= 26 F8 &x LDB #&04 :\ F8C9= C6 04 F. .LF8CB LDX U++ :\ F8CB= AE C1 .A LBSR LFA74 :\ F8CD= 17 01 A5 ..% DECB :\ F8D0= 5A Z BNE LF8CB :\ F8D1= 26 F8 &x LDX &AA :\ F8D3= 9E AA .* LBSR LFA74 :\ F8D5= 17 01 9D ... LDU 10,X :\ F8D8= EE 0A n. .LF8DA LDX #LFFBD :\ F8DA= 8E FF BD ..= BSR LF8EC :\ F8DD= 8D 0D .. LDB #&05 :\ F8DF= C6 05 F. .LF8E1 LDA U+ :\ F8E1= A6 C0 &@ LBSR LFA96 :\ F8E3= 17 01 B1 ..1 DECB :\ F8E6= 5A Z BNE LF8E1 :\ F8E7= 26 F8 &x LDX #LFF93 :\ Point to CRLF \ Output message pointed to by X \ ------------------------------ .LF8EC PSHS A :\ Save A .LF8EE LDA X+ :\ Get character at X, inc. X .LF8F0 BEQ LF8F7 :\ If zero, jump to exit LBSR LFA21 :\ Output character BRA LF8EE :\ Loop back for next character .LF8F7 PULS A,PC :\ Pop A and return .LF8F9 LDA #&28 :\ F8F9= 86 28 .( LDB &8F :\ F8FB= D6 8F V. BLT LF8DA :\ F8FD* 3D DB =[ SUBA &89 :\ F8FF= 90 89 .. NEG &D3 :\ F901= 00 D3 .S CMPA &39 :\ F903= 91 39 .9 .LF905 BCC LF90D :\ F905* 34 06 4. BSR LF8F9 :\ F907= 8D F0 .p ANDA #&03 :\ F909= 84 03 .. ADDD #&0400 :\ F90B= C3 04 00 C.. TFR D,X :\ F90E= 1F 01 .. BCS LF898 :\ F910* 35 86 5. LDD #&EFD0 :\ F912= CC EF D0 LoP LDX #&0980 :\ F915= 8E 09 80 ... STA 12,X :\ F918= A7 0C '. STB 14,X :\ F91A= E7 0E g. LDA #&7F :\ F91C= 86 7F .. STA 3,X :\ F91E= A7 03 '. LDA 13,X :\ F920= A6 0D &. STA 13,X :\ F922= A7 0D '. .LF924 BVS LF8B4 :\ F924* 39 8E 9. STU &0DCC :\ F926= FF 0D CC ..L TST &AA :\ F929= 0D AA .* STD &0800 :\ F92B= FD 08 00 }.. CMPB &0801 :\ F92E= F1 08 01 q.. BEQ LF935 :\ F931= 27 02 '. LEAX n,x :\ F933* 30 0C 0. .LF935 LDA #&0B :\ F935= 86 0B .. .LF937 LDB A,X :\ F937= E6 86 f. STD &0800 :\ F939= FD 08 00 }.. DECA :\ F93C= 4A J BPL LF937 :\ F93D= 2A F8 *x CLR &8F :\ F93F= 0F 8F .. .LF941 CLR &90 :\ F941= 0F 90 .. CLR &91 :\ F943= 0F 91 .. CLR &92 :\ F945= 0F 92 .. LBSR LF9E5 :\ F947= 17 00 9C ... LBSR LF9ED :\ F94A= 17 00 A1 ..! LDD #&2020 :\ F94D= CC 20 20 L LDX #&0400 :\ F950= 8E 04 00 ... .LF953 STD X++ :\ F953= ED 81 m. CMPX #&0800 :\ F955= 8C 08 00 ... BNE LF953 :\ F958= 26 F9 &y RTS LF990 :\ F95A= 39 9 \ Output character in A \ ===================== .LF95B PSHS S,Y,X,DP,B,A,CC :\ Push everything LDB #&03:TFR B,DP :\ Set Data Page to &0300 LDX &6F :\ Get X from &036F/70 (&FF7F) ORCC #&10 :\ Set a flag BSR LF9A6 PULS S,Y,X,DP,B,A,CC,PC :\ Pop all and return .LF969 BSR LF905 :\ F969= 8D 9A .. STA X :\ F96B= A7 84 '. INC &90 :\ F96D= 0C 90 .. LDA &90 :\ F96F= 96 90 .. CMPA #&28 :\ F971= 81 28 .( BNE LF983 :\ F973= 26 0E &. CLR &90 :\ F975= 0F 90 .. INC &8F :\ F977= 0C 8F .. LDA &8F :\ F979= 96 8F .. CMPA #&19 :\ F97B= 81 19 .. BNE LF983 :\ F97D= 26 04 &. DEC &8F :\ F97F= 0A 8F .. BSR LF9C3 :\ F981= 8D 40 .@ .LF983 BRA LF9EE :\ F983= 20 69 i BSR LF98F :\ F985= 8D 08 .. LDA #&20 :\ F987= 86 20 . BSR LF95B :\ F989= 8D D0 .P BSR LF98F :\ F98B= 8D 02 .. .LF98D BRA LF9EE :\ F98D= 20 5F _ .LF98F DEC &90 :\ F98F= 0A 90 .. BPL LF99F :\ F991= 2A 0C *. LDA #&27 :\ F993= 86 27 .' STA &90 :\ F995= 97 90 .. DEC &8F :\ F997= 0A 8F .. .LF999 BPL LF99F :\ F999= 2A 04 *. CLR &8F :\ F99B= 0F 8F .. CLR &90 :\ F99D= 0F 90 .. .LF99F BVS LF98D :\ F99F* 39 EC 9l ANDA #&ED :\ F9A1= 84 ED .m EQUB &62 :\ F9A3= 62 b BCS LF9FC :\ F9A4* 35 56 5V \ Output a character \ ------------------ .LF9A6 PSHS S,X,B,A :\ Save registers LDB X++ :\ Get B from X and inc. X .LF9AA CMPA -1,X:BEQ LF9B9 LEAX 3,X :\ X=X+3 DECB:BNE LF9AA .LF9B3 TST -1,X :\ F9B3= 6D 1F m. BEQ LF9C1 :\ F9B5= 27 0A '. BMI LF9A0 :\ F9B7= 2B E7 +g .LF9B9 LDD X :\ F9B9= EC 84 l. ADDD 2,S :\ F9BB= E3 62 cb STD 4,S :\ F9BD= ED 64 md BCS LF957 :\ F9BF* 35 96 5. .LF9C1 BCS LF999 :\ F9C1* 35 D6 5V .LF9C3 LDD &91 :\ F9C3= DC 91 \. ADDD #&03E8 :\ F9C5= C3 03 E8 C.h LDX #&0400 :\ F9C8= 8E 04 00 ... LDU #&2020 :\ F9CB= CE 20 20 N LDY #&8E00 :\ F9CE= 10 8E 00 14 .... .LF9D2 ANDA #&03 :\ F9D2= 84 03 .. STU D,X :\ F9D4= EF 8B o. ADDD #&0002 :\ F9D6= C3 00 02 C.. BRN LFA1A :\ F9D9* 31 3F 1? BNE LF9D2 :\ F9DB= 26 F5 &u SUBD #&03E8 :\ F9DD= 83 03 E8 ..h ANDA #&03 :\ F9E0= 84 03 .. STD &91 :\ F9E2= DD 91 ]. BSR LF9EE :\ F9E4= 8D 08 .. LDX &91 :\ F9E6= 9E 91 .. LDA #&0C :\ F9E8= 86 0C .. BRA LF9F5 :\ F9EA= 20 09 . CLR &90 :\ F9EC= 0F 90 .. .LF9EE LBSR LF8F9 ::\ F9EE= 17 FF 08 ... TFR D,X :\ F9F1= 1F 01 .. LDA #&0E :\ F9F3= 86 0E .. .LF9F5 BCC LFA07 :\ F9F5* 34 10 4. BCS LF9FD :\ F9F7* 35 04 5. STD &0800 :\ F9F9= FD 08 00 }.. .LF9FC INCA :\ F9FC= 4C L .LF9FD BCS LFA03 :\ F9FD* 35 04 5. STD &0800 :\ F9FF= FD 08 00 }.. .LFA02 BVS LF9DA :\ FA02* 39 D6 9V .LFA04 NEG 10,Y :\ FA04= 60 2A `* .LFA06 LSR &81 :\ FA06= 04 81 .. CLR &2723 :\ FA08= 7F 27 23 .'# BSR LFA44 :\ FA0B= 8D 37 .7 BEQ LFA52 :\ FA0D= 27 43 'C TSTB :\ FA0F= 5D ] BPL LFA1A :\ FA10= 2A 08 *. CMPA #&0D :\ FA12= 81 0D .. BNE LFA1C :\ FA14= 26 06 &. BSR LFA1C :\ FA16= 8D 04 .. LDA #&0A :\ FA18= 86 0A .. .LFA1A STX &87 :\ FA1A= 9F 87 .. .LFA1C LDB &60 :\ FA1C= D6 60 V` ASLB :\ FA1E= 58 X BPL LFA52 :\ FA1F= 2A 31 *1 \ Output character in A \ --------------------- .LFA21 TST &0361:BEQ LFA2A :\ If &0361 is zero, jump via &0365 JSR [&036D] :\ &0361<>0, jump via &036D .LFA2A JMP [&0365] .LFA2E LDX &89 :\ FA2E= 9E 89 .. CMPX &87 :\ FA30= 9C 87 .. BEQ LFA52 :\ FA32= 27 1E '. CMPX #&03AE :\ FA34= 8C 03 AE ... BNE LFA3C :\ FA37= 26 03 &. LEAX n,x :\ FA39* 30 88 0. EQUB &52 :\ FA3B= 52 R .LFA3C LEAX n,x :\ FA3C* 30 1F 0. STX &89 :\ FA3E= 9F 89 .. LDA &5F :\ FA40= 96 5F ._ BRA LFA1C :\ FA42= 20 D8 X .LFA44 LDX &89 :\ FA44= 9E 89 .. BSR LFA53 :\ FA46= 8D 0B .. CMPX &8B :\ FA48= 9C 8B .. BEQ LFA52 :\ FA4A= 27 06 '. STA X :\ FA4C= A7 84 '. STX &89 :\ FA4E= 9F 89 .. ANDCC #&FB :\ FA50= 1C FB .{ .LFA52 BVS LFA84 :\ FA52* 39 30 90 EQUB &01 :\ FA54= 01 . CMPX #&0400 :\ FA55= 8C 04 00 ... BNE LFA5D :\ FA58= 26 03 &. LDX #&03AE :\ FA5A= 8E 03 AE ... .LFA5D RTS :\ FA5D= 39 9 .LFA5E PSHS X,CC :\ FA5E= 34 11 4. BRA LFA64 :\ FA60= 20 02 . .LFA62 BGE LFA53 :\ FA62* 3C EF .. CMPX &0387 :\ FA67= BC 03 87 <.. BEQ LFA62 :\ FA6A= 27 F6 'v BSR LFA53 :\ FA6C= 8D E5 .e LDA X :\ FA6E= A6 84 &. STX &038B :\ FA70= BF 03 8B ?.. BCS LFA06 :\ FA73* 35 91 5. BCC LFA7D :\ FA75* 34 06 4. TFR X,D :\ FA77= 1F 10 .. BSR LFA81 :\ FA79= 8D 06 .. TFR B,A :\ FA7B= 1F 98 .. .LFA7D BSR LFA97 :\ FA7D= 8D 18 .. BCS LFA07 :\ FA7F* 35 86 5. .LFA81 BCC LFA85 :\ FA81* 34 02 4. LSRA :\ FA83= 44 D .LFA84 LSRA :\ FA84= 44 D .LFA85 LSRA :\ FA85= 44 D LSRA :\ FA86= 44 D BSR LFA8D :\ FA87= 8D 04 .. LDA S+ :\ FA89= A6 E0 &` ANDA #&0F :\ FA8B= 84 0F .. .LFA8D ADDA #&30 :\ FA8D= 8B 30 .0 CMPA #&39 :\ FA8F= 81 39 .9 BLS LFA95 :\ FA91= 23 02 #. .LFA93 ADDA #&07 :\ FA93= 8B 07 .. .LFA95 BRA LFA21 :\ FA95= 20 8A . .LFA97 BSR LFA81 :\ FA97= 8D E8 .h LDA #&20 :\ FA99= 86 20 . BRA LFA95 :\ FA9B= 20 F8 x \ Output character to printer port \ -------------------------------- .LFA9D PSHS U,DP,B,A,CC :\ Save registers LDU #&0980 :\ Point U to base of VIA registers CMPA &0362:BEQ LFAB5 :\ If A=Ignore character, jump to... .LFAA7 LDB 15,U:BMI LFAA7 :\ Loop until PA7=0 STA 1,U :\ Output character to port A LDB #&ED:STB 12,U :\ Drop CA2 LDB #&EF:STB 12,U :\ Raise CA2 .LFAB5 PULS PC,U,B,A :\ Pull registers and return .LFAB7 ASL &56 :\ FAB7= 08 56 .V NEG &2C :\ FAB9= 00 2C ., ASRA :\ FABB= 47 G NEG &34 :\ FABC= 00 34 .4 NEGB :\ FABE= 50 P NEG &3C :\ FABF= 00 3C .< EQUB &52 :\ FAC1= 52 R NEG &42 :\ FAC2= 00 42 .B BRA LFAC6 :\ FAC4= 20 00 . .LFAC6 EQUB &51 :\ FAC6= 51 Q BGE LFAC9 :\ FAC7= 2C 00 ,. .LFAC9 DEC &3B00 :\ FAC9= 7A 3B 00 z;. OR A #&2D :\ FACC= 8A 2D .- NEG &8E :\ FACE= 00 8E .. EQUB &01 :\ FAD0= 01 . NEG &71 :\ FAD1= 00 71 .q .LFAD3 LSR &20 :\ FAD3= 04 20 . NEG &5E :\ FAD5= 00 5E .^ BGE LFAD9 :\ FAD7= 2C 00 ,. .LFAD9 BSR LFB16 :\ FAD9= 8D 3B .; NEG &69 :\ FADB= 00 69 .i BLT LFADF :\ FADD= 2D 00 -. .LFADF EQUB &72 :\ FADF= 72 r EQUB &01 :\ FAE0= 01 . NEG &7B :\ FAE1= 00 7B .{ LBSR LFC46 :\ FAE3= 17 01 60 ..` LDU #&03A3 :\ FAE6= CE 03 A3 N.# BRA LFAEE :\ FAE9= 20 03 . LDU #&0395 :\ FAEB= CE 03 95 N.. .LFAEE EQUB &10 :\ FAEE= 10 . LDX U :\ FAEF= AE C4 .D BRA LFB31 :\ FAF1= 20 3E > LDU &AA :\ FAF3= DE AA ^* BLS LFB41 :\ FAF5* 33 4A 3J BRA LFAEE :\ FAF7= 20 F5 u LDY &9E :\ FAF9= 10 9E AA ..* LDU #&03AC :\ FAFC= CE 03 AC N., BRA LFB31 :\ FAFF= 20 30 0 LDU #&0393 :\ FB01= CE 03 93 N.. EQUB &10 :\ FB04= 10 . LDX U :\ FB05= AE C4 .D CLRB :\ FB07= 5F _ LBSR LF87F ::\ FB08= 17 FD 74 .}t BEQ LFB18 :\ FB0B= 27 0B '. LDX #LFAB7 :\ FB0D= 8E FA B7 .z7 .LFB10 LBRA LF9A5 :\ FB10= 16 FE 93 .~. .LFB13 TSTB :\ FB13= 5D ] BLE LFB18 :\ FB14= 2F 02 /. .LFB16 BRN LFB39 :\ FB16* 31 21 1! .LFB18 TFR Y,X :\ FB18= 1F 21 .! LBSR LFA75 ::\ FB1A= 17 FF 58 ..X LDA X :\ FB1D= A6 84 &. LBSR LFA97 ::\ FB1F= 17 FF 75 ..u LDB #&01 :\ FB22= C6 01 F. STB &A1 :\ FB24= D7 A1 W! BRA LFB31 :\ FB26= 20 09 . STA &A2 :\ FB28= 97 A2 ." BSR LFB6C :\ FB2A= 8D 40 .@ BVS LFB66 :\ FB2C= 29 38 )8 TFR D,Y :\ FB2E= 1F 02 .. .LFB30 CLRB :\ FB30= 5F _ .LFB31 LBSR LF87F ::\ FB31= 17 FD 4B .}K BEQ LFB13 :\ FB34= 27 DD '] LDX #LFAD3 :\ FB36= 8E FA D3 .zS .LFB39 LBRA LF9A5 :\ FB39= 16 FE 6A .~j TSTB :\ FB3C= 5D ] BGE LFB41 :\ FB3D= 2C 02 ,. BRN LFB80 :\ FB3F* 31 3F 1? .LFB41 STY &C439 :\ FB41= 10 AF C4 39 31 ./D91 BLE LFBA5 :\ FB46* 3F 5D ?] BGE LFB4C :\ FB48= 2C 02 ,. BRN LFB8B :\ FB4A* 31 3F 1? .LFB4C BRA LFB30 :\ FB4C= 20 E2 b STA &A2 :\ FB4E= 97 A2 ." BSR LFB6C :\ FB50= 8D 1A .. BVS LFB66 :\ FB52= 29 12 ). STB Y :\ FB54= E7 A4 g$ CMPB Y :\ FB56= E1 A4 a$ BEQ LFB60 :\ FB58= 27 06 '. LDX #LFF8F :\ Point to 'Rom?' message LBSR LF8EC :\ Output message at X .LFB60 LEAY 1,Y :\ Y=Y+1 LDB #&FF :\ B=&FF BRA LFB31 .LFB66 LBSR LF87F ::\ FB66= 17 FD 16 .}. LBRA LFC88 :\ FB69= 16 01 1D ... .LFB6C CLRA :\ FB6C= 4F O CLRB :\ FB6D= 5F _ BCC LFB76 :\ FB6E* 34 06 4. BSR LFB8A :\ FB70= 8D 18 .. BVS LFB88 :\ FB72= 29 14 ). .LFB74 LDB #&04 :\ FB74= C6 04 F. .LFB76 ASLA :\ FB76= 48 H ASLA :\ FB77= 48 H ASLA :\ FB78= 48 H ASLA :\ FB79= 48 H .LFB7A ASLA :\ FB7A= 48 H ROL 1,S :\ FB7B= 69 61 ia ROL 0,S :\ FB7D= 69 60 i` DECB :\ FB7F= 5A Z .LFB80 BNE LFB7A :\ FB80= 26 F8 &x BSR LFB95 :\ FB82= 8D 11 .. BVC LFB74 :\ FB84= 28 EE (n ANDCC #&FD :\ FB86= 1C FD .} .LFB88 BCS LFB10 :\ FB88* 35 86 5. .LFB8A LBSR LF87F ::\ FB8A= 17 FC F2 .|r BEQ LFBB1 :\ FB8D= 27 22 '" CMPA #&20 :\ FB8F= 81 20 . BEQ LFB8A :\ FB91= 27 F7 'w BRA LFB9A :\ FB93= 20 05 . .LFB95 LBSR LF87F ::\ FB95= 17 FC E7 .|g BEQ LFBB1 :\ FB98= 27 17 '. .LFB9A CMPA #&30 :\ FB9A= 81 30 .0 BCS LFBAA :\ FB9C= 25 0C %. CMPA #&39 :\ FB9E= 81 39 .9 BLS LFBB6 :\ FBA0= 23 14 #. CMPA #&41 :\ FBA2= 81 41 .A BCS LFBAA :\ FBA4= 25 04 %. CMPA #&46 :\ FBA6= 81 46 .F BLS LFBB4 :\ FBA8= 23 0A #. .LFBAA CMPA #&2C :\ FBAA= 81 2C ., BEQ LFBB1 :\ FBAC= 27 03 '. STA &03A2 :\ FBAE= B7 03 A2 7." .LFBB1 ORCC #&02 :\ FBB1= 1A 02 .. BVS LFB35 :\ FBB3* 39 80 9. ASR &80 :\ FBB5= 07 80 .. LEAX n,x :\ FBB7* 30 39 09 BHI LFC1D :\ FBB9* 32 62 2b .LFBBB BSR LFB6C :\ FBBB= 8D AF ./ STD &A5 :\ FBBD= DD A5 ]% .LFBBF BSR LFC2D :\ FBBF= 8D 6C .l PULS PC,S,Y,X,DP,B,A,CC :\ Pop all and return \ SWI HANDLER \ =========== \ On entry, SP=>CC,A,B,DP,Xhi,Xlo,Yhi,Ylo,Uhi,Ulo,PChi,PClo .LFBC3 LDA #&03:TFR A,DP :\ Point DP to &0300 LDX 10,S :\ Get X from word on stack (PC?) LEAX -1,X :\ X=X-1 STX 10,S :\ Put X back on stack BSR LFC46 :\ Copy byte at &03A7 to location pointed to by &03A3/4 LDX &A5:BEQ LFBDB :\ If &03A5/6=0, jump ahead LEAX -1,X :\ X=X-1 STX &A5 :\ Store X back in &03A5/6 BSR LFC4F :\ Do something BRA LFBBF .LFBDB STS &DF :\ FBDB= 10 DF AA ._* LBSR LF8B8 ::\ FBDE= 17 FC D7 .|W BRA LFBFC :\ FBE1= 20 19 . .LFBE3 BSR LFB6C :\ FBE3= 8D 87 .. BVS LFBE9 :\ FBE5= 29 02 ). TFR D,X :\ FBE7= 1F 01 .. .LFBE9 BVS LFC1D :\ FBE9* 39 32 92 JMP &34FF :\ FBEB= 7E 34 FF ~4. LDX #LFBEA :\ FBEE= 8E FB EA .{j STX 12,S :\ FBF1= AF 6C /l LDB #&03 :\ FBF3= C6 03 F. TFR B,DP :\ FBF5= 1F 9B .. BSR LFC46 :\ FBF7= 8D 4D .M STS &DF :\ FBF9= 10 DF AA ._* .LFBFC ANDCC #&EF :\ FBFC= 1C EF .o LBRA LF859 :\ FBFE= 16 FC 59 .|Y CLR &A5 :\ FC01= 0F A5 .% CLR &A6 :\ FC03= 0F A6 .& LDU &5B :\ FC05= DE 5B ^[ LDX #LFBEA :\ FC07= 8E FB EA .{j STX --U :\ FC0A= AF C3 /C LDB #&0D :\ FC0C= C6 0D F. .LFC0E LDA B,S :\ FC0E= A6 E5 &e STA -U :\ FC10= A7 C2 'B DECB :\ FC12= 5A Z BPL LFC0E :\ FC13= 2A F9 *y BHI LFC59 :\ FC15* 32 42 2B LDX &95 :\ FC17= 9E 95 .. BSR LFBE3 :\ FC19= 8D C8 .H STX &95 :\ FC1B= 9F 95 .. .LFC1D STX 10,S :\ FC1D= AF 6A /j BSR LFC2D :\ FC1F= 8D 0C .. BCS LFC22 :\ FC21* 35 FF 5. BSR LFC46 :\ FC23= 8D 21 .! LDX #LFFFF :\ FC25= 8E FF FF ... .LFC28 BSR LFBE3 :\ FC28= 8D B9 .9 STX &A3 :\ FC2A= 9F A3 .# RTS :\ FC2C= 39 9 .LFC2D BSR LFC37 :\ FC2D= 8D 09 .. BEQ LFC37 :\ FC2F= 27 06 ' STA &A7 :\ FC31= 97 A7 LDA #&3F :\ FC33= 86 3F .? STA [X] :\ FC35= A7 84 RTS :\ FC37= 39 9 .LFC38 LDX &A3 :\ Get X from &03A3/4 CMPX #&FFFF:BEQ LFC44 :\ If &FFFF, return from calling routine LDA X :\ Get byte from X CMPA #&3F:RTS :\ Compare with '?' and return .LFC44 PULS PC,X :\ Drop an address and return \ Called by SWI \ ------------- .LFC46 BSR LFC38:BNE LFC4E :\ Exit if byte at &03A3/4 not '?' LDA &A7:STA X :\ Get byte at &03A7, store at X .LFC4E RTS :\ FC4E= 39 9 .LFC4F :\ FC4F= 35 STY &9F :\ FC50= 10 9F 73 ..s LDA #&EF :\ FC53= 86 EF .o ANDA S :\ FC55= A4 E4 $d STA S :\ FC57= A7 E4 'd .LFC59 LDD #&0F00 :\ FC59= CC 0F 00 L.. STD &0984 :\ FC5C= FD 09 84 }.. BCS LFC60 :\ FC5F* 35 FF 5. LBSR LFB6C ::\ FC61= 17 FF 08 ... STD &5D :\ FC64= DD 5D ]] .LFC66 BVS LFC06 :\ FC66* 39 9E 9. TSTB :\ FC68= 5D ] BEQ LFC66 :\ FC69= 27 FB '{ BHI LFCCF :\ FC6B* 32 62 2b .LFC6D STX &A8 :\ FC6D= 9F A8 .( BSR LFC4F :\ FC6F= 8D DE .^ LDX &A8 :\ FC71= 9E A8 .( BRA LFC94 :\ FC73* 30 1F 0. BNE LFC6D :\ FC75= 26 F6 &v LBRA LFBDA :\ FC77= 16 FF 61 ..a .LFC7A LBSR LF87F ::\ FC7A= 17 FC 02 .|. BEQ LFC85 :\ FC7D= 27 06 '. CMPA #&2B :\ FC7F= 81 2B .+ BEQ LFC86 :\ FC81= 27 03 '. STA &A2 :\ FC83= 97 A2 ." .LFC85 CLRA :\ FC85= 4F O .LFC86 STA &61 :\ FC86= 97 61 .a .LFC88 BVS LFC28 :\ FC88* 39 9E 9. EQUB &75 :\ FC8A= 75 u LBNE &2389 :\ FC8B= 10 26 FC .&| EQUB &18 :\ FC8E= 18 . LDX #LFFC3 :\ FC8F= 8E FF C3 ..C LBSR LF8EC ::\ FC92= 17 FC 57 .|W LBSR LFA21 ::\ FC95= 17 FD 89 .}. LBSR LF8E9 ::\ FC98= 17 FC 4E .|N .LFC9B LBSR LF87F ::\ FC9B= 17 FB E1 .{a BNE LFC9B :\ FC9E= 26 FB &{ BVS LFCB9 :\ FCA0* 39 17 9. NEG &D1 :\ FCA2= 00 D1 .Q LBSR LFB6C ::\ FCA4= 17 FE C5 .~E STD &85 :\ FCA7= DD 85 ]. .LFCA9 LDX #&0397 :\ FCA9= 8E 03 97 ... .LFCAC LDA #&30 :\ FCAC= 86 30 .0 BSR LFCFE :\ FCAE= 8D 4E .N BNE LFCAC :\ FCB0= 26 FA &z LDB #&06 :\ FCB2= C6 06 F. STB &AC :\ FCB4= D7 AC W, .LFCB6 BSR LFD1E :\ FCB6= 8D 66 .f LDB X+ :\ FCB8= E6 80 f. CMPB #&3F :\ FCBA= C1 3F A? BEQ LFCC2 :\ FCBC= 27 04 '. CMPA -1,X :\ FCBE= A1 1F !. BNE LFCA9 :\ FCC0= 26 E7 &g .LFCC2 DEC &AC :\ FCC2= 0A AC ., BNE LFCB6 :\ FCC4= 26 F0 &p BSR LFD1E :\ FCC6= 8D 56 .V .LFCC8 LDA #&31 :\ FCC8= 86 31 .1 BSR LFCFE :\ FCCA= 8D 32 .2 .LFCCC BNE LFCF2 :\ FCCC= 26 24 &$ BSR LFD13 :\ FCCE= 8D 43 .C TFR D,X :\ FCD0= 1F 01 .. BSR LFD13 :\ FCD2= 8D 3F .? BCC LFCDC :\ FCD4* 34 06 4. .LFCD6 BSR LFD1E :\ FCD6= 8D 46 .F STA X+ :\ FCD8= A7 80 '. CMPX S :\ FCDA= AC E4 ,d .LFCDC BLS LFCD6 :\ FCDC= 23 F8 #x BSR LFD1E :\ FCDE= 8D 3E .> .LFCE0 BCS LFCF2 :\ FCE0* 35 10 5. LBSR LFA75 ::\ FCE2= 17 FD 90 .}. TFR U,D :\ FCE5= 1F 30 .0 COMB :\ FCE7= 53 S BEQ LFCC8 :\ FCE8= 27 DE '^ .LFCEA LDX #LFFCD :\ FCEA= 8E FF CD ..M LBSR LF8EC ::\ FCED= 17 FB FC .{| BRA LFCF6 :\ FCF0= 20 04 . .LFCF2 CMPA #&39 :\ FCF2= 81 39 .9 BNE LFCC8 :\ FCF4= 26 D2 &R .LFCF6 LDA #&90 :\ FCF6= 86 90 .. STA &098E :\ FCF8= B7 09 8E 7.. LBRA LF8E8 :\ FCFB= 16 FB EB .{k .LFCFE BCC LFD02 :\ FCFE* 34 02 4. LDA #&10 :\ FD00= 86 10 .. .LFD02 STA &098E :\ FD02= B7 09 8E 7.. .LFD05 BSR LFD1E :\ FD05= 8D 17 .. CMPA #&D8 :\ FD07= 81 D8 .X .LFD09 BNE LFD05 :\ FD09= 26 FA &z BSR LFD1E :\ FD0B= 8D 11 .. LDU #&0000 :\ FD0D= CE 00 00 N.. CMPA S+ :\ FD10= A1 E0 !` BVS LFCA1 :\ FD12* 39 8D 9. ROL &1F :\ FD14= 09 1F .. ADCA #&8D :\ FD16= 89 8D .. EQUB &05 :\ FD18= 05 . EXG A,B :\ FD19= 1E 89 .. ADDD &85 :\ FD1B= D3 85 S. BVS LFCCC :\ FD1D* 39 AD 9- STX &03 :\ FD1F= 9F 03 .. EQUB &6B :\ FD21= 6B k BLS LFCEA :\ FD22* 33 C6 3F BVS LFD5A :\ FD24* 39 34 94 LBSR &1778 :\ FD26= 17 1A 50 ..P LDB #&0B :\ FD29= C6 0B F. BCC LFD31 :\ FD2B* 34 04 4. LDB #&CF :\ FD2D= C6 CF FO COMA :\ FD2F= 43 C .LFD30 NOP :\ FD30= 12 . .LFD31 BRA LFD33 :\ FD31= 20 00 . .LFD33 DEC S :\ FD33= 6A E4 jd BMI LFD45 :\ FD35= 2B 0E +. STB &098C :\ FD37= F7 09 8C w.. BSR LFD49 :\ FD3A= 8D 0D .. ANDB #&DF :\ FD3C= C4 DF D_ LSRA :\ FD3E= 44 D BCS LFD30 :\ FD3F= 25 EF %o OR B #&20 :\ FD41= CA 20 J BRA LFD33 :\ FD43= 20 EE n .LFD45 BHI LFDA8 :\ FD45* 32 61 2a BCS LFCE0 :\ FD47* 35 97 5. .LFD49 BSR LFD4B :\ FD49= 8D 00 .. .LFD4B LDX &0363 :\ FD4B= BE 03 63 >.c .LFD4E BRA LFD6F :\ FD4E* 30 1F 0. BNE LFD4E :\ FD50= 26 FC &| BVS LFD88 :\ FD52* 39 34 94 EQUB &14 :\ FD54= 14 . LDA #&80 :\ FD55= 86 80 .. .LFD57 LDB &0980 :\ FD57= F6 09 80 v.. .LFD5A BMI LFD57 :\ FD5A= 2B FB +{ BSR LFD4B :\ FD5C= 8D ED .m LDB &0980 :\ FD5E= F6 09 80 v.. BMI LFD57 :\ FD61= 2B F4 +t .LFD63 BSR LFD49 :\ FD63= 8D E4 .d LDB &0980 :\ FD65= F6 09 80 v.. CMPX S :\ FD68= AC E4 ,d CMPS &E4,PC :\ FD6A= 11 AC E4 58 .,dX RORA :\ FD6E= 46 F .LFD6F BCC LFD63 :\ FD6F= 24 F2 $r BSR LFD49 :\ FD71= 8D D6 .V BCS LFD09 :\ FD73* 35 94 5. LDX #&039D :\ FD75= 8E 03 9D ... .LFD78 LBSR LF87F ::\ FD78= 17 FB 04 .{. BEQ LFDA0 :\ FD7B= 27 23 '# CMPA #&20 :\ FD7D= 81 20 . BEQ LFD78 :\ FD7F= 27 F7 'w CMPA #&2C :\ FD81= 81 2C ., BEQ LFDA0 :\ FD83= 27 1B '. LDB #&FA :\ FD85= C6 FA Fz .LFD87 STA B,X :\ FD87= A7 85 '. INCB :\ FD89= 5C \ BEQ LFDA1 :\ FD8A= 27 15 '. LBSR LF87F ::\ FD8C= 17 FA F0 .zp BEQ LFD99 :\ FD8F= 27 08 '. CMPA #&20 :\ FD91= 81 20 . BEQ LFD9B :\ FD93= 27 06 '. CMPA #&2C :\ FD95= 81 2C ., BNE LFD87 :\ FD97= 26 EE &n .LFD99 LDA #&20 :\ FD99= 86 20 . .LFD9B STA B,X :\ FD9B= A7 85 '. INCB :\ FD9D= 5C \ BNE LFD9B :\ FD9E= 26 FB &{ .LFDA0 BVS LFDB9 :\ FDA0* 39 17 9. OR B &DB27 :\ FDA2= FA DB 27 z[' OR B &812C :\ FDA5= FA 81 2C z., .LFDA8 BEQ LFDA0 :\ FDA8= 27 F6 'v STA &A2 :\ FDAA= 97 A2 ." BVS LFD4C :\ FDAC* 39 9E 9. JSR &17 :\ FDAE= 9D 17 .. LDU &319F :\ FDB0= FE 31 9F ~1. JSR &9E :\ FDB3= 9D 9E .. STX &17 :\ FDB5= 9F 17 .. .LFDB7 LDU &2A9F :\ FDB7= FE 2A 9F ~*. STX &8D :\ FDBA= 9F 8D .. EORA &C630 :\ FDBC= B8 C6 30 8F0 BSR LFDFD :\ FDBF= 8D 3C .< LDB #&06 :\ FDC1= C6 06 F. BRA LFDDF :\ FDC3* 30 1A 0. BSR LFE0D :\ FDC5= 8D 46 .F BSR LFE17 :\ FDC7= 8D 4E .N LDX &9D :\ FDC9= 9E 9D .. .LFDCB BCC LFDDD :\ FDCB* 34 10 4. LDD &9F :\ FDCD= DC 9F \. SUBD S++ :\ FDCF= A3 E1 #a BCS LFDF0 :\ FDD1= 25 1D %. TSTA :\ FDD3= 4D M BEQ LFDD9 :\ FDD4= 27 03 '. LDD #&00FF :\ FDD6= CC 00 FF L.. .LFDD9 BLS LFD66 :\ FDD9* 33 8B 3. BCC LFE33 :\ FDDB* 34 56 4V .LFDDD LDB #&31 :\ FDDD= C6 31 F1 .LFDDF BSR LFDFD :\ FDDF= 8D 1C .. BRA LFE45 :\ FDE1* 30 62 0b LDB #&04 :\ FDE3= C6 04 F. BSR LFE0D :\ FDE5= 8D 26 .& BCS LFE3F :\ FDE7* 35 56 5V INCB :\ FDE9= 5C \ BSR LFE0D :\ FDEA= 8D 21 .! BSR LFE17 :\ FDEC= 8D 29 .) BRA LFDCB :\ FDEE= 20 DB [ .LFDF0 LBSR LF87F ::\ FDF0= 17 FA 8C .z. BEQ LFDFB :\ FDF3= 27 06 '. CMPA #&2D :\ FDF5= 81 2D .- BEQ LFE16 :\ FDF7= 27 1D '. STA &A2 :\ FDF9= 97 A2 ." .LFDFB LDB #&39 :\ FDFB= C6 39 F9 .LFDFD LDY #&8E00 :\ FDFD= 10 8E 00 00 .... .LFE01 BRN LFE42 :\ FE01* 31 3F 1? .LFE03 BNE LFE01 :\ FE03= 26 FC &| LDA #&D8 :\ FE05= 86 D8 .X BSR LFE1C :\ FE07= 8D 13 .. TFR B,A :\ FE09= 1F 98 .. BRA LFE1C :\ FE0B= 20 0F . .LFE0D LDA X+ :\ FE0D= A6 80 &. BRN LFDB7 :\ FE0F* 31 A6 1& BSR LFE1C :\ FE11= 8D 09 .. DECB :\ FE13= 5A Z BNE LFE0D :\ FE14= 26 F7 &w .LFE16 BVS LFE37 :\ FE16* 39 1F 9. BRA LFE39 :\ FE18= 20 1F . EORA &43 :\ FE1A= 98 43 .C .LFE1C JMP [&0369] :\ FE1C= 6E 9F 03 69 n..i .LFE20 BCS LFE26 :\ FE20* 35 04 5. TST &14 :\ FE22= 0D 14 .. EQUB &05 :\ FE24= 05 . OR A -11,Y :\ FE25= AA 35 *5 LSR &10 :\ FE27= 04 10 .. STU LFFFF :\ FE29= FF FF FF ... DEC &0217 :\ FE2C= 7A 02 17 z.. CMPB #&7A :\ FE2F= C1 7A Az EQUB &02 :\ FE31= 02 . BLS LFE9C :\ FE32= 23 68 #h INC 0,X :\ FE34= 6C 00 l. ROL 1,X :\ FE36= 69 01 i. NEG &6C :\ FE38= 00 6C .l NEG &53 :\ FE3A= 00 53 .S COM &00 :\ FE3C= 03 00 .. EQUB &02 :\ FE3E= 02 . .LFE3F BRN LFE94 :\ FE3F= 21 53 !S EQUB &02 :\ FE41= 02 . .LFE42 NEG &03 :\ FE42= 00 03 .. LDX #LFF04 :\ FE44= 8E FF 04 ... STX &83 :\ FE47= 9F 83 .. LDA #&0A :\ FE49= 86 0A .. TFR A,DP :\ FE4B= 1F 8B .. LDX #LFE20 :\ FE4D= 8E FE 20 .~ BSR LFE9F :\ FE50= 8D 4D .M BSR LFE9F :\ FE52= 8D 4B .K BSR LFE9F :\ FE54= 8D 49 .I BSR LFE9F :\ FE56= 8D 47 .G BSR LFEB6 :\ FE58= 8D 5C .\ BSR LFE9F :\ FE5A= 8D 43 .C BSR LFEB6 :\ FE5C= 8D 58 .X BSR LFE9F :\ FE5E= 8D 3F .? LDU #&0000 :\ FE60= CE 00 00 N.. TFR U,Y :\ FE63= 1F 32 .2 BSR LFEC9 :\ FE65= 8D 62 .b .LFE67 BNE LFE93 :\ FE67= 26 2A &* LDD #LFF41+1 :\ FE69= CC FF 42 L.B CMPD --Y :\ FE6C= 10 A3 A1 .#! BNE LFE93 :\ FE6F= 26 22 &" BSR LFE9F :\ FE71= 8D 2C ., LDU Y++ :\ FE73= EE A1 n! LDA Y+ :\ FE75= A6 A0 & EQUB &10 :\ FE77= 10 . LDX Y :\ FE78= AE A4 .$ ADDA #&20 :\ FE7A= 8B 20 . .LFE7C LDB &00 :\ FE7C= D6 00 V. BITB #&20 :\ FE7E= C5 20 E BNE LFE7C :\ FE80= 26 FA &z STA &01 :\ FE82= 97 01 .. BSR LFEC9 :\ FE84= 8D 43 .C BNE LFE93 :\ FE86= 26 0B &. LBSR LFB6C ::\ FE88= 17 FC E1 .|a BVC LFEC8 :\ FE8B= 28 3B (; LDS LFE03 :\ FE8D= 10 FE 03 5B .~.[ JMP Y :\ FE91= 6E A4 n$ .LFE93 LDX #OSFIND :\ FE93= 8E FF CE ..N LBSR LF8EC ::\ FE96= 17 FA 53 .zS LBSR LFA81 ::\ FE99= 17 FB E5 .{e .LFE9C LBRA LF8E8 :\ FE9C= 16 FA 4A .zJ .LFE9F LDD X++ :\ FE9F= EC 81 l. .LFEA1 TST &00 :\ FEA1= 0D 00 .. BMI LFEA1 :\ FEA3= 2B FC +| STA &00 :\ FEA5= 97 00 .. .LFEA7 DECB :\ FEA7= 5A Z BMI LFEC8 :\ FEA8= 2B 1E +. .LFEAA LDA &00 :\ FEAA= 96 00 .. BITA #&20 :\ FEAC= 85 20 . BNE LFEAA :\ FEAE= 26 FA &z LDA X+ :\ FEB0= A6 80 &. STA &01 :\ FEB2= 97 01 .. BRA LFEA7 :\ FEB4= 20 F1 q .LFEB6 TFR X,U :\ FEB6= 1F 13 .. .LFEB8 TFR U,X :\ FEB8= 1F 31 .1 BSR LFE9F :\ FEBA= 8D E3 .c .LFEBC LDA &00 :\ FEBC= 96 00 .. BITA #&10 :\ FEBE= 85 10 .. BEQ LFEBC :\ FEC0= 27 FA 'z LDA &01 :\ FEC2= 96 01 .. BITA #&04 :\ FEC4= 85 04 .. BEQ LFEB8 :\ FEC6= 27 F0 'p .LFEC8 BVS LFEFE :\ FEC8* 39 34 94 EQUB &01 :\ FECA= 01 . ORCC #&50 :\ FECB= 1A 50 .P LDB #&04 :\ FECD= C6 04 F. BRA LFED5 :\ FECF= 20 04 . .LFED1 LDA &04 :\ FED1= 96 04 .. STA U+ :\ FED3= A7 C0 '@ .LFED5 BGE LFED6 :\ FED5* 3C FF <. BITB &00 :\ FED7= D5 00 U. BNE LFED1 :\ FED9= 26 F6 &v BCS LFEDE :\ FEDB* 35 01 5. LDA &01 :\ FEDD= 96 01 .. RTS :\ FEDF= 39 9 \ IRQ Handler \ =========== .LFEE0 LDA #03:TFR A,DP :\ Set Data Page to &0300 LDX #&0980 :\ Point to base of VIA registers LDA 13,X:BPL LFF05 :\ VIA didn't generate this IRQ, give error ANDA #&40:BEQ LFEF5 :\ Not Timer1, skip past STA 13,X :\ Ack. the IRQ JMP [&0373] :\ Call timer vector .LFEF5 LDA 13,X :\ Get IRQ status ANDA #&10:BEQ LFF05 :\ Not CB1, give error STA 13,X :\ Ack. the IRQ LDA 0,X:ANDA #&7F :\ Get byte from Port B and drop b7 LBSR LFA03 :\ Do something with it .LFF04 RTI \ Default handler for various vectors \ =================================== .LFF05 LDX #LFFCC :\ Point to 'I-Err' LBSR LF8EC :\ Output string .LFF0B BRA LFF0B :\ Infinite loop .LFF0D SWI :\ FF0D= 3F EQUB &28 :\ FF0E= 28 BCC LFF55 :\ FF0F* 34 44 4D EXG D,Y :\ FF11= 1E 02 .. DAA :\ FF13= 19 . EQUB &1B :\ FF14= 1B . COM &12 :\ FF15= 03 12 .. NEG &133F :\ FF17= 70 13 3F p.? BVC LFF50 :\ FF1A= 28 34 (4 LSR &1E :\ FF1C= 04 1E .. EQUB &02 :\ FF1E= 02 . DAA :\ FF1F= 19 . EQUB &1B :\ FF20= 1B . NEG &09 :\ FF21= 00 09 .. ASL 9,X :\ FF23= 68 09 h. \ Initial values copied to &035B .LFF25 EQUW &035B :\ 035B= 03 5B EQUW &0000 :\ 035D= 00 00 EQUW &7FFF :\ 035F= 7F FF EQUW &000A :\ 0361= 00 0A EQUW &00CD :\ 0363= 00 CD EQUW LF95B :\ 0365= F9 5B EQUW LFA5E :\ 0367= FA 5E EQUW LFD25 :\ 0369= FD 25 EQUW LFD53 :\ 036B= FD 53 EQUW LFA9D :\ 036D= FA 9D EQUW LFF7F :\ 036F= FF 7F EQUW LFF51 :\ 0371= FF 51 EQUW LFF05 :\ 0373= FF 05 EQUW &0000 :\ 0375= 00 00 .LFF41 EQUW LFF05 :\ 0377= FF 05 Reserved vector EQUW LFF05 :\ 0379= FF 05 SWI3 vector EQUW LFF05 :\ 037B= FF 05 SWI2 vector EQUW LFF05 :\ 037D= FF 05 FIRQ vector EQUW LFEE0 :\ 037F= FE E0 IRQ vector EQUW LFBC3 :\ 0381= FB C3 SWI vector EQUW LFF05 :\ 0383= FF 05 NMI vector EQUW &0000 :\ 0385= 00 00 .LFF51 JMP &47 :\ FF51= 0E 47 .G LDD &B04D :\ FF53= FC B0 4D |0M ADDB &B052 :\ FF56= FB B0 52 {0R ADCB &6750 :\ FF59= F9 67 50 ygP LDD &6854 :\ FF5C= FC 68 54 |hT STD &1053 :\ FF5F= FD 10 53 }.S LDU &5C4C :\ FF62= FE 5C 4C ~\L STD &5056 :\ FF65= FD 50 56 }PV LDD &D244 :\ FF68= FC D2 44 |RD LDU &F343 :\ FF6B= FE F3 43 ~sC STD &2920 :\ FF6E= FD 29 20 }) ADDB &0C2C :\ FF71= FB 0C 2C {., ADDB &0C2E :\ FF74= FB 0C 2E {.. STD &1646 :\ FF77= FD 16 46 }.F STD &7701 :\ FF7A= FD 77 01 }w. STD &3804 :\ FF7D= FD 38 04 }8. TST &FA :\ FF80= 0D FA .z TST 10,X :\ FF82= 6D 0A m. ADCB LF87F :\ FF84= F9 F8 7F yx. OR B &060C :\ FF87= FA 06 0C z.. ADCB &A601 :\ FF8A= F9 A6 01 y&. EQUB &F9 EQUB &EA .LFF8F:EQUS "Rom?" .LFF93:EQUB 13:EQUB 10:EQUB 0 .LFF96:EQUS "CC A B DP X Y U PC S" EQUB 13:EQUB 10:EQUB 0 .LFFBC:EQUB 13:EQUB 10:EQUS "PC]":EQUB 0 .LFFC3:EQUS "What is:":EQUB 0 .LFFCC:EQUS "I" .LFFCD:EQUS "-Err ":EQUB 0 \ HARDWARE VECTOR DISPATCH TABLE \ ============================== .LFFD3:JMP [&0377] :\ Dispatch reserved event .LFFD7:JMP [&0379] :\ Dispatch SWI3 .LFFDB:JMP [&037B] :\ Dispatch SWI2 .LFFDF:JMP [&037D] :\ Dispatch FIRQ .LFFE3:JMP [&037F] :\ Dispatch IRQ .LFFE7:JMP [&0381] :\ Dispatch SWI .LFFEB:JMP [&0383] :\ Dispatch NMI EQUB &00 \ HARDWARE VECTORS \ ================ EQUW LFFD3 :\ FFF0 RESERVED VECTOR EQUW LFFD7 :\ FFF2 SWI3 VECTOR EQUW LFFDB :\ FFF4 SWI2 VECTOR EQUW LFFDF :\ FFF6 FIRQ VECTOR EQUW LFFE3 :\ FFF8 IRQ VECTOR EQUW LFFE7 :\ FFFA SWI VECTOR EQUW LFFEB :\ FFFC NMI VECTOR EQUW LF800 :\ FFFE RESET VECTOR ]NEXT PRINT "*SAVE ";~mcode%;" ";~O%;" ";~exec%;" ";~load%