'ë 7:ñ" *****65C02 ASSEMBLER*****" 5V%=2:ç ?&8015<>—"2" Œ ñ:ñ" Requires Basic 2.":à %ñ:ñ" Please wait 10 seconds..." ($ô (C) K.T.ACRES AUGUST 24th 1984 2ô*****65C02 ASSEMBLER***** <-Ó=&3C00:ãA%=0¸&3FFFˆ4:A%!&3C00=A%!&8000:í FStart=&A8D4 PLsb=Start+0 ZMsb=Start+1 dBasecode=Start+2 nGetnext=&8A97 xSyntax=&982A ‚Add16=&882C ŒAdd8=&882F –Add4=&8832  Variable=&9582 ªSaveIAC=&BD94 ´StoreP=&AE3A ¾Assign=&B4B4 ÈLabel=&85A5 ÒEvaluate=&8821 Üã PASS%=4 ¸ 6 ˆ 2 æ T%=0:$&3C09="65C02":?&3C0E=0 ð[OPT ¤NewPC(Start) úOPT ¤Table("BRK",&00) OPT ¤Table("CLC",&18) OPT ¤Table("CLD",&D8) OPT ¤Table("CLI",&58) "OPT ¤Table("CLV",&B8) ,OPT ¤Table("DEX",&CA) 6OPT ¤Table("DEY",&88) @OPT ¤Table("INX",&E8) JOPT ¤Table("INY",&C8) TOPT ¤Table("NOP",&EA) ^OPT ¤Table("PHA",&48) hOPT ¤Table("PHP",&08) rOPT ¤Table("PHX",&DA) |OPT ¤Table("PHY",&5A) †OPT ¤Table("PLA",&68) OPT ¤Table("PLP",&28) šOPT ¤Table("PLX",&FA) ¤OPT ¤Table("PLY",&7A) ®OPT ¤Table("RTI",&40) ¸OPT ¤Table("RTS",&60) ÂOPT ¤Table("SEC",&38) ÌOPT ¤Table("SED",&F8) ÖOPT ¤Table("SEI",&78) àOPT ¤Table("TAX",&AA) êOPT ¤Table("TAY",&A8) ôOPT ¤Table("TSX",&BA) þOPT ¤Table("TXA",&8A) OPT ¤Table("TXS",&9A) OPT ¤Table("TYA",&98)  .Group1 &OPT ¤Table("BCC",&90) 0OPT ¤Table("BCS",&B0) :OPT ¤Table("BEQ",&F0) DOPT ¤Table("BMI",&30) NOPT ¤Table("BNE",&D0) XOPT ¤Table("BPL",&10) bOPT ¤Table("BRA",&80) lOPT ¤Table("BVC",&50) vOPT ¤Table("BVS",&70) € .Group2 ŠOPT ¤Table("AND",&21) ”OPT ¤Table("EOR",&41) žOPT ¤Table("ORA",&01) ¨OPT ¤Table("ADC",&61) ²OPT ¤Table("CMP",&C1) ¼OPT ¤Table("LDA",&A1) ÆOPT ¤Table("SBC",&E1) Ð .Group3 ÚOPT ¤Table("ASL",&06) äOPT ¤Table("LSR",&46) îOPT ¤Table("ROL",&26) øOPT ¤Table("ROR",&66) OPT ¤Table("DEC",&C6)  OPT ¤Table("INC",&E6)  .Group4  OPT ¤Table("STZ",&64) * .Group5 4OPT ¤Table("TRB",&14) >OPT ¤Table("TSB",&04) H .Group6 ROPT ¤Table("BIT",&24) \ .Group7 fOPT ¤Table("CPX",&E0) pOPT ¤Table("CPY",&C0) z .Group8 „OPT ¤Table("JMP",&4C) ŽOPT ¤Table("JSR",&20) ˜ .Group9 ¢OPT ¤Table("LDX",&A2) ¬OPT ¤Table("LDY",&A0) ¶.Sta ÀOPT ¤Table("STA",&81) ÊOPT ¤Table("STX",&86) ÔOPT ¤Table("STY",&84) Þ .Group10 èOPT ¤Table("RMB",&07) òOPT ¤Table("SMB",&87) ü .Group11 OPT ¤Table("BBR",&0F) OPT ¤Table("BBS",&8F)  .Group12 $OPT ¤Table("OPT",&FF) .OPT ¤Table("EQU",&FF) 8OPT ¤Table("RES",&FF) B .Tabend LOPT ¤NewPC(&85BA) V .Assemble ` LDX#3 jJSR Getnext tLDY#0:STY&3D ~CMP#&3A:BEQ Ass1 ˆCMP#&0D:BEQ Ass1 ’CMP#&5C:BEQ Ass1 œCMP#&2E:BEQ Label ¦ DEC&A ° .Loop1 º LDY&A Ä INC&A Î LDA(&B),Y Ø BMI Token âCMP#&20:BEQ Search ìLDY#&5:ASL A:ASL A:ASL A ö .Loop2 ASL A:ROL&3D:ROL&3E  DEY:BNE Loop2 DEX:BNE Loop1  .Search (LDX#((Tabend-Start)/3) 2 LDA&3D < .s1l1 FCMP Lsb-1,X:BNE s1l2 P LDY Msb-1,X:CPY&3E:BEQ Bcode Z .s1l2 dDEX:BNE s1l1 n.Gosyntax JMP Syntax x .Token ‚.LDX#((Group2-Start)/3)+1:CMP#&80:BEQ Bcode ŒINX:CMP#&82:BEQ Bcode –INX:CMP#&84:BNE Gosyntax  ,INC&A:INY:LDA(&B),Y:CMP#&41:BNE Gosyntax ª .Bcode ´LDA Basecode-1,X:STA&29 ¾ LDY#1 È%CPX#((Group1-Start)/3)+1:BCS Grp2 Ò .Ass1 ÜLDA&440:STA&37:STY&39 æLDX&28:CPX#&4 ðLDX&441:STX&38 ú BCC P%+8 !LDA&43C:LDX&43D:STA&3A:STX&3B TYA:BEQ Exit:BPL P%+6 LDY&36:BEQ Exit " .a1l1 ,DEY 6LDA&29,Y:BIT&39:BPL P%+5 @LDA&600,Y:STA(&3A),Y JINC&440:BNE P%+5:INC&441 T&BCC P%+&A:INC&43C:BNE P%+5:INC&43D ^TYA:BNE a1l1 h .Exit RTS r .Grp2 |CPX#((Group2-Start)/3)+1 † BCS Grp3 JSR Evaluate šCLC:LDA&2A:SBC&440 ¤TAY:LDA&2B:SBC&441 ® CPY#1 ¸DEY  SBC#0 Ì BEQ g2l4 Ö CMP#&FF à BEQ g2l3 ê.g2l ôLDA&28:€#&FB:LSR A:BEQ g2l1 þ .range OPT ¤BRK(1,"Out of range")  .g2l1 TAY & .g2l2 0 STY&2A : .g2l5 DLDY#2:JMP Ass1 N .g2l3 XTYA:BMI g2l2:BPL g2l b .g2l4 lTYA:BPL g2l2:BMI g2l v .Grp3 €CPX#((Group3-Start)/3)+1 Š BCS Grp4 ”JSR Getnext ž CMP#&23 ¨ BNE g4l ² JSR Add8 ¼JSR Evaluate Æ .g3l1 Ð LDA&2B Ú BEQg2l5 ä .g3l2 îOPT ¤BRK(2,"Byte") ø .Grp4 CPX#((Sta-Start)/3)+1  BNE Grp5 JSR Getnext  .g4l * CMP#&28 4 BNE g4l3 >JSR Evaluate HJSR Getnext R CMP#&29 \ BNE g4l1 fJSR Getnext p CMP#&2C z BEQ P%+8 „ JSR Add17 Ž JMP g3l1 ˜ JSR Add16 ¢JSR Getnext ¬ CMP#&59 ¶ BNE g4l2 À BEQ g3l1 Ê .g4l1 Ô CMP#&2C Þ BNE g4l2 èJSR Getnext ò CMP#&58 ü BNE g4l2 JSR Getnext  CMP#&29  BEQ g3l1 $ .g4l2 .OPT ¤BRK(3,"Index") 8 .g4l3 B DEC&A LJSR Evaluate VJSR Getnext ` CMP#&2C j BNE g4l5 t JSR Add16 ~JSR Getnext ˆ CMP#&58 ’ BEQ g4l5 œ CMP#&59 ¦ BNE g4l2 ° .g4l4 º JSR Add8 Ä .g4exit Î LDY#3 Ø .g4ex â JMP Ass1 ì .g4l5 ö JSR Add4 .g4l6 LDA&2B  BNE g4l4  JMPg2l5 ( .Grp5 2CPX#((Group4-Start)/3)+1 < BCS Grp6 FJSR Getnext P CMP #—"A" Z BEQ g5l1 d .g5l4 n DEC&A xJSR Evaluate ‚.g5l ŒJSR Getnext – CMP #—","   BNE g4l6 ª JSR Add16 ´ .g5l3 ¾JSR Getnext È CMP #—"X" Ò BEQ g4l6 Ü BNE g4l2 æ .g5l1 ðCPX#((Group4-Start)/3)-1 ú BCC g5l2  BNE P%+8  LDA&29  SBC#&8C " BNE P%+6 , LDA&29 6 SBC#&CC @ STA&29 J BNE g5ex T .g5l2 ^ JSR Add4 h .g5ex r LDY#1 | BNE g4ex † .Grp6 CPX#((Group5-Start)/3)+1 š BCS Grp7 ¤JSR Evaluate ® LDA&2B ¸ BEQ g5l ÂJSR Getnext Ì CMP#&2C Ö BEQ P%+11 àCLC ê LDA&29 ô ADC#&30 þ STA&29  BNE g4l6 CLC  LDA&29 & ADC#&32 0 STA&29 : BNE g5l3 D .Grp7 NCPX#((Group6-Start)/3)+1 X BCS Grp8 bJSR Evaluate l JMP g4l6 v .Grp8 €CPX#((Group7-Start)/3)+1 Š BCS Grp9 ”JSR Getnext ž CMP#—"#" ¨ BNE g5l4 ² LDA&29 ¼CLC Æ ADC#&65 Ð STA&29 Ú.g8l äJMP g3l1-3 î .Grp9 øCPX#((Group8-Start)/3)+1  BCS Grp10 JSR Getnext  CMP#—"#" BEQ g8l * DEC&A 4JSR Evaluate > JMP g4l5 H .Grp10 RCPX#((Group9-Start)/3) \ BEQ g10l1 f BCC P%+5 p JMP Grp11 zJSR Getnext „ CMP #&28 Ž BEQ g10l3 ˜ DEC&A ¢ .g10l1 ¬JSR Evaluate ¶ .g10l2 ÀJMP g4exit Ê .g10l3 Ô JSR Add16 Þ .g10l4 èJSR Evaluate ò .g10l6 ü JSR Add16 JSR Getnext  CMP#&29  BEQ g10l2 $ CMP#&2C . BNE g10l5 8JSR Getnext B CMP#&58 L BEQ g10l6 V .g10l5 ` JMP g4l2 j .Add17 tINC&29:JMP Add16 ~OPT ¤NewPC(Tabend) ˆ .Grp11 ’CPX#((Group10-Start)/3)+1 œ BCS Grp12 ¦ LDA&3D °‚#1 º €#&1F ÄPHA ÎCPX#((Group10-Start)/3)-1 Ø BCS g11l2 âJSR Getnext ì CMP#&23 ö BNE g11l PLA  JMP g3l1-3  .g11l  DEC&A (JSR Evaluate 2PLA < STA&37 FJSR Getnext P CMP#&2C Z BEQ P%+5 d JMP g4l5 nJSR Getnext x €#&1F ‚ CMP&37 Œ BNEg11l1 – JSR Add16   JMP g4l5 ª .g11l1 ´ JMP g4l2 ¾ .g11l2 ÈJSR Evaluate ÒPLA Ü STA&37 æJSR Getnext ð CMP#&2C ú BNEg11l3 JSR Getnext  €#&1F  CMP&37 " BNE g11l1 , JSR Add16 6 LDA&2B @ BEQ g11l3 J JMP g3l2 T .g11l3 ^ JMP g4l6 h .Grp12 rCPX#((Group11-Start)/3)+1 | BCS Grp13 †JSR Checkbit JMP g3l1-3 š .Grp13 ¤CPX#((Group12-Start)/3)+1 ®0BCS Grp14:JMP GP13:.change:OPT ¤NewPC(&8451) ¸ .GP13 ÂJSR Checkbit ÌJSR Evaluate Ö LDA&2B à BEQ P%+5 ê JMPg3l2 ô LDA&2A þPHA JSR Evaluate  DEC&2A  BNEP%+4 & DEC&2B 0CLC : LDA&2A D SBC&440 NTAY X LDA&2B b SBC&441 l CPY#1 vDEY € SBC#0 Š BEQg13l4 ” CMP#&FF ž BEQg13l3 ¨ .g13l1 ² LDA&28 ¼ €#&FB Æ LSR A Ð BEQ P%+5 Ú JMP range äTAY î .g13l2 ø STY&2B PLA  STA&2A JMP g4exit  .g13l3 *TYA 4 BMI g13l2 > BPL g13l1 H .g13l4 R BPL g13l2 \ BMI g13l1 fOPT ¤NewPC(change) p .Grp14 zCPX#((Group12-Start)/3)+1 „BNE CheckEQU ŽJSR Evaluate ˜ LDA&2A ¢ STA&28 ¬ LDY#0 ¶ JMP Ass1 À .CheckEQU ÊCPX#((Group12-Start)/3)+2 ÔBNE CheckRES Þ JMP&883A è .CheckRES ò LDY#0 üJSR Evaluate  LDA&2B  BEQ P%+5  JMPg3l2 $ LDA&440 . STA&37 8 LDA&441 B STA&38 L LDA#0 V STA&39 ` LDX&28 j CPX#4 t .Reslp ~ INC&440 ˆ BNEP%+5 ’ INC&441 œ BCCP%+10 ¦ INC&43C ° BNEP%+5 º INC&43D Ä DEC&2A Î BNE Reslp ØRTS â .Checkbit ìJSR Evaluate ö LDA&2B BNE Biterror  LDA&2A  CMP#&08 BCS Biterror ( ASL A 2 ASL A < ASL A F ASL A PCLC Z ADC&29 d STA&29 nRTS x .Biterror ‚OPT ¤BRK(2,"Bit") Œ ]:í PASS% –&ñ:ñ" It's ready, press any key."  'A=¥:*SAVE 65C02 3C00+4000 8000 8000 ªà ´: ¾Ý ¤Table (Mnem$,B%) ÈM%=0 Òã N%=1 ¸ 3 Ü M%=M%*32 æM%=M%+—(ÁMnem$,N%,1))-64 ðí N% úM%=M% € &7FFF !?(Lsb-&8000+&3C00+T%)=M% ƒ256 ç PASS%<2 Œ Msb=Lsb+T%+1 !?(Msb-&8000+&3C00+T%)=M% 256 "%ç PASS%<2 Œ Basecode=Lsb+(2*T%)+2 ,!?(Basecode-&8000+&3C00+T%)=B% 6T%=T%+1:P%=P%+3:O%=O%+3 @ =PASS% JÝ ¤BRK(E%,A$) T!?O%=0:O%?1=E%:P%=P%+2:O%=O%+2 ^"$O%=A$:O%=O%+©(A$):P%=P%+©(A$) h?O%=0:P%=P%+1:O%=O%+1 r =PASS% |Ý ¤NewPC(PC%) †P%=PC%:O%=P%-&8000+&3C00  =PASS% ÿ