; :"":L$(200),A%(255),LA$(50),P(50),D%(200),C$(200)ZA$(255):J0254:A$(J):yJ0255:A$(J)""A%(J)(2" 6502 ASSEMBLER"<" "F"(C) P.J. HORTON 1982"P1410:*** INPUT ROUTINE ***ZJ0d*** SETUP FOR ASSEMBLY ***3nJJ1:C0:D%(J)DKx(L$(J),1)"."370`L$(J)"END"450zCC1:C(L$(J))190(L$(J),C,1)" "C$(J)C$(J)(L$(J),C,1):140C$(J)"BYT"1050:110C$(J)"*="230:110C$(J)"DL"290:110 F0255BC$(J)A$(F)::"?SYNTAX ERROR IN";:ER1:1900PDDA%(F)Y110r*** NEW MEM LOC ***K1(L$(J)):(L$(J),K,1)" ":"?SYNTAX ERROR IN";:ER1:1900T$(L$(J),(L$(J))K)C$(J)"M"2200D(T$):ADD:"*** DEF LABEL ***&,NLNL1:C3e6CC1:(L$(J),C,1)" "LA$(NL)LA$(NL)(L$(J),C,1):310@T$(L$(J),(L$(J))C):2200:P(NL)(T$)JNL1360TF1NL1:LA$(F)LA$(NL)"LABEL REPEATED IN";:ER1:1900^hr*** LABEL ***|NLNL1:C1NCC1:(L$(J),C,1)" "LA$(NL)LA$(NL)(L$(J),C,1):390\NL1430F1NL1:LA$(F)LA$(NL)"LABEL REPEATED IN";:ER1:1900P(NL)D140*** ASSEMBLE ***" LOC CODE":SC0N0:F1J1"C$(F)"M"ADD%(F1):7006C$(F)"DL"700PC$(F)"B"1090:690d:D%(F);:NN1K0255:A$(K)C$(F)DNK:740&12);H$;0LA11350:A%(K)1:690D(C$(F),1)"B"C$(F)"BIT"850:690NA%(K)2940:690 X*** 2 BYTE JMP ETC. ***JbK(L$(F))11:(L$(F),K,1)" "elT$(L$(F),(L$(F))K)ov2200T(T$):D1(T256):D2TD1256DND2:740:15);H$;LA11350DND1:740:18);H$LA11350SCSC1:SC11720 F:1380"*** SCREEN FULL ***5Z$:Z$""720E"":SC0:Z*** DEC-HEX ***lN1(DN4096)D2DNN14096:N2(D2256)D2D2N2256:N3(D216) D2D2N316:N4D2H$(N148(N19)7) H$H$(N248(N29)7)*H$H$(N348(N39)7)+4H$H$(N448(N49)7)Z>(H$,1)"0"(H$)2H$(H$,(H$)1):830`HtR*** BRANCH ***\K(L$(F))11:(L$(F),K,1)" "fT$(L$(F),(L$(F))K)p2200zDN(T$):TD%(F):DNTDNDNT2:910DN255(TDN1)740:15);H$#LA11350)E*** 1BYTE JMP ETC. ***oK(L$(F))11:(L$(F),K,1)" "T$(L$(F),(L$(F))K)2200DN(T$):740:15);H$LA11350*** HEX-DEC ***DN0:H1(H$)0DNDN(((H$,H,1))48(((H$,H,1))57)7)(16((H$)H)):H6G*** BYT ***$K(L$(J))11:(L$(J),K,1)"'"(L$(J),K,1)"P":1080.DD(L$(J))K:C$(J)"B":8:"?SYNTAX ERROR IN";:ER1:1900B*** ASSEMBLE BYT ***LJ(L$(F))11:(L$(F),J,1)"'"1130/V(L$(F),J,1)"P"1250;`:1200VjB$(L$(F),(L$(F))J)gtJ1(B$):~D%(F)J1;:DN((B$,J,1)):740:12);H$TP11,H$LA11350SCSC1:SC11720:*** NUMBER ***T$(L$(F),(L$(F))J)2200)DN(T$):740:12);H$9LA11350Q*** POKE ALPHA ***lB$(L$(F),(L$(F))J)}J1(B$):D%(F)J1;12); DN(((B$,J,1))128)2(((B$,J,1))63)740:12);H$TP11,H$(LA11350 2SCSC1:SC11720<:0F*** ASSEMBLER LOADER ***aPDN255:"NUMBER TOO LARGE IN";:ER1:1900vZAD,DN:ADAD1:d*** END ***nTP11,"END":1x720:1900*** INPUT ***2,0"READY."2,L$: L$"NEW"J1N:L$(J)""::N0:1440+ (L$,4)"LIST"1980@ L$"END""":[ (L$,6)"DISASS"2450q (L$,1)"?"2100 (L$,8)"ASSEMBLE"1800 (L$,4)"LOAD"1700 (L$,5)"*LOAD"2790 (L$,4)"SAVE"1750 (L$,5)"*SAVE"2670 !N1(L$):N10:"?SYNTAX ERROR":1450>!"(((L$)))1(L$)1650\!,NN1:N1L$(1)L$:1450x!6J1N1:(L$(J))N1!@(L$(J))N1L$(J)L$:NN1:1450!JKNJ1!TL$(K)L$(K1):!^L$(J)L$!h1450!r*** SPLAT LINE ***"|K1N:(L$(K))(L$):14504"LKN:L$(L)L$(L1)::NN1A"N0N0K"1450]"*** LOAD ***v"1,1,0,(L$,(L$)4)"1,N:J1N"1,L$(J):"1::"READY.":1450"*** SAVE ***"1,1,1,(L$,(L$)4)"1,N:J1N"1,L$(J):#1::"READY.":1450&#*** ENTERED ***/#LA0E#(L$,1)"M"LA1f#&N0"NO CODE ERROR":1440}#0:" WORKING..."#:J1N#DNC(L$(J)):NC((NC))1#NL$(J)(L$(J),(L$(J))NC)#X(L$(J),1)" "L$(J)(L$(J),(L$(J))1):1880 $bJ:SNN:90!$l*** RENUM&CONT ***6$vER1ER0:10JK$E21E20:10F|$NSN:J1N:L$(J)(10J)" "L$(J):C$(J)""$L$(J)(L$(J),(L$(J))1):$J1NL:LA$(J)"":P(J)0::NL0$""$1440$*** LIST ***$SC0%L$"LIST"SL1:2040 %SL((L$,(L$)4))B%J1N:SL(L$(J))TEN:1440K%SLJ^%JSLN:L$(J)v%SCSC1:SC152070% :1440%Z$:Z$""2070% Z$"E":1440%*SC0:2060%4*** CONVERSIONS ***%>(L$)3"?SYNTAX ERROR":1440&H(L$,2,1)"D"2170;&R(L$,2,1)"H""?SYNTAX ERROR":1440S&\DN((L$,(L$)2))h&f740:"HEX=";H$r&p1440&zH$(L$,(L$)2)&1010:"DEC=";DN&1440&*** NUMBER T$ ***&NN0&L2(T$) 'A$(T$,L,1):A$"+"A$"-"A$"*"A$"/"2440"'L:NNNN1:T$(NN)T$4'FI0:NU1NNC'NU12280w'S$(NU)(T$(NU),1):T$(NU)(T$(NU),(T$(NU))1)'(T$(NU),1)"$"H$(T$(NU),(T$(NU))1):1010:T$(NU)(DN)'(T$(NU),1)"."2400'NU' NU1NN:NU1FI(T$(1)):2360( S$(NU)"+"FIFI(T$(NU))?( S$(NU)"-"FIFI(T$(NU))_($ S$(NU)"*"FIFI(T$(NU))(. S$(NU)"/"FIFI(T$(NU))(8 NU(B T$(FI)(L (V *** LABEL ***(` A$(T$(NU),(T$(NU))1)(j TE1NL:LA$(TE)A$T$(NU)(P(TE)):2300#)t TE::"NO SUCH LABEL IN";:E21:19007)~ *** NEW NO ***m) NNNN1:T$(NN)(T$,L1):T$(T$,(T$)L1):2220) *** DISASS ***) SC0) (L$)6"?SYNTAX ERROR":1440) T$(L$,(L$)6):2200:D2(T$):"") SCSC1:SC11720:Z$"E"1440* D265535639991* D2;:A(D2):A$(A)""2660A* 7);A$(A);V* A%(A)1:2590|* (A$(A),1)"B"A$(A)"BRK"2610* A%(A)2DN(D21):D2D22* A%(A)3DN(D21)((D22)256):D2D23* 13);DN* :2490* D2D21*( :2490+2 *** BRANCH ***%+< (D21)1272640G+F DND2(D21)2:D2D22:2570Y+P *** BACK ***+Z DND2(255((D21)1)):D2D22:2570+d 7);"BYT";14);(34);(20);(A):2590+n *** MEM-TAPE ***+x J6(L$):(L$,J,1)(34):"?SYNTAX ERROR":1440 , NSJ1G, JNS1(L$):(L$,J,1)(34):"?SYNTAX ERROR":1440R, NEJ1j, F$(L$,NS,NENS1), JNE2(L$):(L$,J,1)"-":"?SYNTAX ERROR":1440, T$(L$,NE2,JNE2):2200:D2(T$), T$(L$,(L$)J):2200:DE(T$), 1,1,1,F$- 1,D2:1,DE:JD2DE7- N1%(J):1,N1%::1:1440M- *** TAPE-MEM ***- J6(L$):(L$,J,1)(34):"?SYNTAX ERROR":1440- NSJ1- JNS1(L$):(L$,J,1)(34):"?SYNTAX ERROR":1440- NEJ1- F$(L$,NS,NENS1)." 1,1,0,F$., 1,D2:1,DE0.6 JD2DE:1,N1%:J,N1%::1I.@ "START ADDRESS";D2f.J "END ADDRESS";DE:1440.T *** MNEMONIC DATA ***.^ BRK,ORA(X),,,,ORAZ,ASLZ,,PHP,ORA#,ASLA,,,ORA,ASL,,BPL.h ORA(Y),,,,ORAZX,ASLZX,,CLC,ORAY,,,,ORAX2/r ASLX,,JSR,AND(X),,,BITZ,ANDZ,ROLZ,,PLP,AND#,ROLA,,BIT,AND,ROL,,BMI_/| AND(Y),,,,ANDZX,ROLZX,,SEC,ANDY,,,,ANDX/ ROLX,,RTI,EOR(X),,,,EORZ,LSRZ,,PHA,EOR#,LSRA,,JMP/ EOR,LSR,,BVC,EOR(Y),,,,EORZX,LSRZX,,CLI,EORY,,,,EORX 0 LSRX,,RTS,ADC(X),,,,ADCZ,RORZ,,PLA,ADC#,RORA,,JMP(I)D0 ADC,ROR,,BVS,ADC(Y),,,,ADCZX,RORZX,,SEI,ADCY,,,,ADCX{0 RORX,,,STA(X),,,STYZ,STAZ,STXZ,,DEY,,TXA,,STY,STA0 STX,,BCC,STA(Y),,,STYZX,STAZX,STXZY,,TYA,STAY,TXS,,,STAX,,,LDY#0 LDA(X),LDX#,,LDYZ,LDAZ,LDXZ,,TAY1 LDA#,TAX,,LDY,LDA,LDX,,BCSJ1 LDA(Y),,,LDYZX,LDAZX,LDXZY,,CLV,LDAY,TSX,,LDYX,LDAX,LDXY,,CPY#1 CMP(X),,,CPYZ,CMPZ,DECZ,,INY,CMP#,DEX,,CPY,CMP,DEC,,BNE1 CMP(Y),,,,CMPZX,DECZX,,CLD,CMPY,,,,CMPX,DECX,,CPX#1 SBC(X),,,CPXZ,SBCZ,INCZ,,INX,SBC#,NOP,,CPX,SBC,INC,,BEQ.2 SBC(Y),,,,SBCZX,INCZX,,SED,SBCY,,,,SBCX,INCXF2 *** BYTES DATA ***w2 1,2,2,2,1,2,1,3,3,2,2,2,2,1,3,3,3,3,2,2,2,22 1,2,1,3,3,3,2,2,2,2,1,3,1,3,1,2,2,2,1,2,1,3,3,32& 2,2,2,2,1,3,3,3,1,2,2,2,1,2,1,2,3,3,2,2,2,2,1,330 3,3,2,2,2,2,1,1,3,3,3,2,2,2,2,2,1,3,1,3,2,2,2K3: 2,2,2,1,2,1,3,3,3,2,2,2,2,2,1,3,1,3,3,3,2,2,2,2,23D 1,2,1,3,3,3,2,2,2,2,1,3,3,3,2,2,2,2,2,1,2,1,3,3,3,2,2,2,23N 1,3,3,3