L k}  X c0C)HCCH Mhhݩh `eCDiCD`  RWH   * 1H0@WP Y0.`i`#(PMRRҶ  }i 0  " @ , ՠ`d   0DDԝLUS;; PROVIDE FOR EXPRESSIONS IN OPERANDS;MUL16LDAOPNDL-1,XSTASECVALLDAOPNDH-1,XSTASECVAL+1LDAOPNDH-2,XPHA}LDAOPNDL-2,XTAXLDA#0STAVALUESTAVALUE+1;LDA#8STACNTPLAML0JSRMUL1DECCNTBNEML0;LDA#8STACNT}TXAML1JSRMUL1DECCNTBNEML1RTS;MUL1ASLVALUEROLVALUE+1MUL0ASLABCCMEXPHACLCLDAVALUEADCSECVAL}STAVALUELDAVALUE+1ADCSECVAL+1STAVALUE+1PLAMEXRTS;DIV16LDAOPNDL-1,XSTASECVALLDAOPNDH-1,XSTASECVAL+1}LDAOPNDL-2,XPHALDAOPNDH-2,XTAXLDA#0STAVALUESTAVALUE+1LDA#-16STACNTPLAGETSIZBITSECVAL+1BMIDOD }VSASLSECVALROLSECVAL+1INCCNTBNEGETSIZRTS;DODVSPHALDACNTAND#$0FSTACNTPLACMP16CPXSECVAL+1BNEC }MPXCMPSECVALCMPXPHPROLVALUEROLVALUE+1PLPBCCNOSUBSBCSECVALPHATXASBCSECVAL+1TAXPLANOSUBLSRSECV }AL+1RORSECVALDECCNTBPLCMP16RTS;DOADDCLCLDAOPNDL-2,XADCOPNDL-1,XSTAOPNDL-2,XLDAOPNDH-2,XADCOPNDH- }1,XSTAOPNDH-2,XJMPDOOPXB;DOSUBSECLDAOPNDL-2,XSBCOPNDL-1,XSTAOPNDL-2,XLDAOPNDH-2,XSBCOPNDH-1,XSTAOP }NDH-2,XJMPDOOPXB;DONEGSECLDA#0SBCOPNDL-1,XSTAOPNDL-1,XLDA#0SBCOPNDH-1,XSTAOPNDH-1,XJMPDOOPXU;DOO}PLDXOPDSPCMP#'+'BEQDOADDCMP#'-'BEQDOSUBCMP#'!'BEQDONEGCMP#'*'BEQDOMULCMP#'/'BEQDODIVCMP#'%}'BEQDOMODCMP#'&'BEQDOANDCMP#'|'BEQDOORDOOPXBDECOPDSPDOOPXUDECOPRSPLDXOPRSPLDAOPERS+1,XCLCRTS;}DOMULJSRMUL16LDXOPDSPLDAVALUESTAOPNDL-2,XLDAVALUE+1STAOPNDH-2,XJMPDOOPXB;DODIVJSRDIV16LDXOPDSPL}DAVALUESTAOPNDL-2,XLDAVALUE+1STAOPNDH-2,XJMPDOOPXB;DOMODJSRDIV16PHATXALDXOPDSPSTAOPNDH-2,XPLAS}TAOPNDL-2,XJMPDOOPXB;DOANDLDAOPNDL-2,XANDOPNDL-1,XSTAOPNDL-2,XLDAOPNDH-2,XANDOPNDH-1,XSTAOPNDH-2,XJM}PDOOPXB;DOORLDAOPNDL-2,XORAOPNDL-1,XSTAOPNDL-2,XLDAOPNDH-2,XORAOPNDH-1,XSTAOPNDH-2,XJMPDOOPXB;; SYM}BOLIC FUNCTION TESTS;LTESTLDASYMBOLCMP#'L'BNENOTMLDASYMBOL+1CMP#'O'BNENOTMLDASYMBOL+2BEQTMATCHCMP}#'W'BNENOTMLDASYMBOL+3BNENOTM;TMATCHSECRTS;CY=1;HTESTLDASYMBOLCMP#'H'BNENOTMLDASYMBOL+1CMP#'}I'BNENOTMLDASYMBOL+2BEQTMATCHCMP#'G'BNENOTMLDASYMBOL+3CMP#'H'BNENOTMLDASYMBOL+4BEQTMATCHNOTMC}LCRTS;DOFUNLDXOPDSPLDAFUNCCMP#'H'BNESAVLOLDAOPNDH-1,XSTAOPNDL-1,XSAVLOLDA#0STAOPNDH-1,XBEQUNEXI}T;LOWFUNLDA#'L'BNELFXIT;HIGHFUNLDA#'H'LFXITSTAFUNCLDA(TEXTP),YCMP#'['BNENOBMPINYNOBMPLDA#'@'BNE}PUSHOP;CKPARENLDA(TEXTP),YINYCMP#'-';UNARY MINUS?BEQPSHCOMCMP#'['BEQPUSHOPRETERRSECRTS;ELSE, EXPR}ESSION ERROR!;PSHCOMLDA#'!';UNARY MINUS ON STACKPUSHOPLDXOPRSPSTAOPERS,X;PUT NEW OPERATOR ON STACKINCOPRSP}JMPEVAL;UNESTLDXOPRSPBEQRETERRLDAOPERS-1,XCMP#'['BEQUNEXITCMP#'@'BEQDOFUNJSRDOOPBCCUNESTRTS;}UNEXITDECOPRSPJMPGETOPR;EVALABLDA#0STAOPRSPSTAOPDSP;CLEAR EVALUATION STACKSJSRNXTFLDEVALSTYTXTPTRJSR}GETSYMJSRHTESTBCSHIGHFUNJSRLTESTBCSLOWFUNLDYTXTPTR;NOT A SYMBOLIC FUNCTIONJSRPRIMRYBCSCKPARENLDXOP}DSPLDAVALUESTAOPNDL,XLDAVALUE+1STAOPNDH,XINCOPDSP;GETOPRLDA(TEXTP),YINYCMP#'-'BEQADDSUBCMP#'+'}BEQADDSUBCMP#'*'BEQMULDIVCMP#'/'BEQMULDIVCMP#'%'BEQMULDIVCMP#'&'BEQANDOPCMP#'|'BEQOROPCMP# }']'BEQUNESTWRPUPLDXOPRSPBEQEVDONLDAOPERS-1,XCMP#'['BEQEVDONJSRDOOPBCCWRPUPRTS;EVDONCLCDECOPDS!}PBEQEVNXITSECEVNXITLDAOPNDLSTAVALUELDAOPNDHSTAVALUE+1RTS;ADDSUBLDXOPRSPSTAOPERS,X;IF WE NEED TO D"}O IT NOWBEQEXITLDAOPERS-1,XCMP#'['BEQEXITCMP#'@'BEQEXITJSRDOOPBCCADDSUBRTS;ANDOPLDXOPRSPSTAO#}PERS,XBEQEXITLDAOPERS-1,XCMP#'!'BNEEXITJSRDOOPBCCANDOPRTS;EXITINCOPRSPJMPEVAL;MULDIVLDXOPRSP$}STAOPERS,XBEQEXITLDAOPERS-1,XCMP#'+'BEQEXITCMP#'-'BEQEXITCMP#'['BEQEXITCMP#'@'BEQEXITJSRDOO%}PBCCMULDIVRTS;OROPLDXOPRSPSTAOPERS,XBEQEXITLDAOPERS-1,XCMP#'!'BEQORDOOPCMP#'&'BNEEXITORDOOPJS&}RDOOPBCCOROPRTS;EVLSYMSTYTXTPTRJSRFIND;GET SYMBOL FROM TABLEBCSUNDFSM;IF SYMBOL UNDEFINEDJSRGETVALBI'}TSFLGSBMIUNDFSMLDASVALSTAVALUELDASVAL+1STAVALUE+1EVSXITLDYTXTPTRCLCRTS;UNDFSMLDA#'U'STAADRERR(}BNEEVSXIT;; EVALUATE AN OPERAND EXPRESSION;PRIMRYLDA#0STAVALUESTAVALUE+1STASYMBOLJSRGETSYMLDASYMBOLB)}NEEVLSYM;IF A SYMBOL WAS FOUNDLDA(TEXTP),YCMP#'$'BNENOTHEXHEXCVLINYLDA(TEXTP),YCMP#'f'+1BCSENDEXPCMP*}#'a'BCCNLCHDSBC#'a'-10BCSHEXDGT;NLCHDCMP#'F'+1BCSENDEXPCMP#'A'BCCNUCHDSBC#'A'-10BCSHEXDGT;NUCH+}DCMP#'9'+1BCSENDEXPCMP#'0'BCCENDEXPSBC#'0'HEXDGTASLVALUEROLVALUE+1ASLVALUEROLVALUE+1ASLVALUERO,}LVALUE+1ASLVALUEROLVALUE+1ORAVALUESTAVALUEJMPHEXCVL;ENDEXPCLCRTS;NOPRIMSECRTS;NOTHEXCMP#'%'BE-}QISBINCMP#'@'BEQISOCTCMP#'*'BEQISPCCMP#$27;QUOTED CHARACTERSBEQISQSTRCMP#'9'+1BCSNOPRIMCMP#'0'.}BCCNOPRIMDECCVLCMP#'9'+1BCSENDEXPCMP#'0'BCCENDEXPSBC#'0'PHAASLVALUEROLVALUE+1LDAVALUE+1STATEMP/}LDAVALUEASLAROLTEMPASLAROLTEMPCLCADCVALUESTAVALUELDATEMPADCVALUE+1STAVALUE+1CLCPLAADCVA0}LUESTAVALUELDA#0ADCVALUE+1STAVALUE+1INYLDA(TEXTP),YJMPDECCVL;ISBININYLDA(TEXTP),YCMP#'0'BCCEN1}DEXPCMP#'1'BCCSHFTBNBNEENDEXPSHFTBNROLVALUEROLVALUE+1JMPISBIN;ISOCTINYLDA(TEXTP),YCMP#'7'+1ENDOCT2}BCSENDEXPCMP#'0'ND2OCTBCCENDEXPSBC#'0'ASLVALUEROLVALUE+1ASLVALUEROLVALUE+1ASLVALUEROLVALUE+1OR3}AVALUESTAVALUEJMPISOCT;ISPCINYLDAPCSTAVALUELDAPC+1STAVALUE+1BCSENDOCT;ISQSTRINYLDA(TEXTP),YI4}NYCMP#$27BEQENDOCTSTAVALUELDA(TEXTP),YINYCMP#$27BEQENDOCTSTAVALUE+1LDA(TEXTP),YINYCMP#$27BEQ5}ENDOCTLDA#'S'STAADRERRJMPENDEXP;GETSYMLDX#0GSYMLPLDA(TEXTP),YGSLP1CMP#'z'+1BCSENDOPCCMP#'a'BCSST6}CHARNOLCOPCMP#'Z'+1BCSENDOPCCMP#'A'BCCENDOPCSTCHARINYCPX#SYMSIZ;ALLOW 8 CHAR SYMBOLSBCSGSYMLPSTASYMB7}OL,XINXLDA(TEXTP),YCMP#'9'+1BCSGSLP1CMP#'0'BCSSTCHAR;ENDOPCLDA#0INXSTASYMBOL-1,XRTS;SKPTXTLDA8}(TEXTP),YCMP#EOLBEQSKXITCMP#' 'BEQSKXITCMP#TABBNESKPTXTSKIPFINYNXTFLDLDA(TEXTP),YCMP#' 'BEQSKIP9}FCMP#TABBEQSKIPFSKXITRTSMP#' 'BEQSKXITCMP#TABBNESKPTXTSKIPFINYNXTFLDLDA(TEXTP),YCMP#' 'BEQSKIP!;; PROMPT FOR COMMAND INPUT;PROMPTPLASTALOWPPLASTALOWP+1PRETRYLDA#11STAICMDLDY#1LDX#0STXILENSTX;}ILEN+1PMTLPLDA(LOWP),YBEQPMTENDINYSTYTEMPJSRCIOVLDYTEMPBNEPMTLP;PMTENDINYLDA(LOWP),YSTAHIGHPI<}NYLDA(LOWP),YSTAHIGHP+1STYTEMPLDA#5STAICMDLDA#FNSIZE-2STAILENLDA#0STAILEN+1LDA#LOW[FNBUF]STA=}IBUFLDA#HIGH[FNBUF]STAIBUF+1JSRCIOVBMIPRETRYJSRBLDFNBLDY#$FFCPFNLPINYLDAFNBUF,YSTA(HIGHP),YBPLCP>}FNLPCLCLDATEMPADCLOWPSTATEMPLDALOWP+1ADC#0PHALDATEMPPHARTS;BLDFNBLDX#0LDY#0STXTEMP+1LDA?}FNBUFBPLBLDFNEDEYKEEPNMINYLDAINF,YSTAFNBUF,YBMINOTDFLTCMP#'.'BNEKEEPNMNOTDFLTLDA#EOLSTAFNBUF,Y@}LDY#0BEQBLDFNE;BLDFNLCMP#':'BNEBLDFCPDEXBLDFCPCMP#'.'BNEBLDFNDDECTEMP+1BLDFNDINYBLDFNELDAFNBUF,YA}BPLBLDFNLLDATEMP+1BNEGOTEXTLDA#'.'STAFNBUF,YINYLDAEXTTXTSTAFNBUF,YINYLDAEXTTXT+1STAFNBUF,YINYB}LDAEXTTXT+2STAFNBUF,YINYLDA#EOLSTAFNBUF,YGOTEXTTXABNEGOTPFXSHFTBFLDAFNBUF,YSTAFNBUF+2,YDEYBPLSHFC}TBFLDA#'D'STAFNBUFLDA#':'STAFNBUF+1GOTPFXRTSXTTXABNEGOTPFXSHFTBFLDAFNBUF,YSTAFNBUF+2,YDEYBPLSHF;;SystemequatesusedLINZBS=$00CASINI=$02RAMLO=$04DOSVEC=$0APOKMSK=$10ICHIDZ=$20ICBLHZ=$29CRITIC=$42FE}MSZPG=$43DRKMSK=$4ECOLRSH=$4FHOLD1=$51RMARGN=$53ROWCRS=$54COLCRS=$55SAVMSC=$58NEWROW=$60LOGCOL=$F}63SAVADR=$68COLAC=$72ICCOM=$0342ICBAL=$0344ICBAH=$0345ICBLL=$0348ICBLH=$0349ICAX1=$034ACIOV=$E456G};Endofsystemequates;Zero-pageequatesZ0016=$86Z0017=$84Z0018=$85Z0021=$A8Z0027=$8FZ0034=$96Z0035=$A5H}Z0036=$97Z0037=$A6Z0039=$9BZ0044=$C6Z0045=$9AZ0060=$80Z0070=$F2Z0080=$FFZ0094=$A4Z0102=$94Z010I}7=$C2Z0109=$D6Z0111=$CEZ0115=$95Z0117=$9CZ0122=$98Z0125=$82Z0126=$83Z0127=$99Z0130=$B1Z0134=$J}87Z0135=$88Z0136=$89Z0171=$F0Z0195=$ADZ0227=$8CZ0230=$8AZ0231=$8BZ0234=$9DZ0235=$9EZ0237=$9FZ0K}238=$A0Z0239=$91Z0258=$8DZ0259=$8EZ0273=$92Z0300=$90Z0301=$93Z0305=$A7Z0306=$AAZ0308=$A9Z0336=L}$D4Z0337=$D5Z0354=$D0Z0389=$81;Endofzero-pageequatesORG$39BCLDA#$87STAL0001;$4817TAXDB$FFSTXLM}0002;$4813INXSTXL0003;$481ASTXL0004;$4815STXL0005;$4816STXL0006;$4818LDA#$3BSTAL0007;$4814LDA#$4N}1STAL0008;$481DLDA#$53STAL0009;$481ELDA#$4DSTAL0010;$481FJSRL0011;$4675DB$53,$6FADCCOLAC,X;$0072O}DB$63ADCICHIDZ;$0020RORSAVADR+1;$0069JMP(L0012);$2065DB$3D,$20,$00JSRL0013;$A948L0020DB$4FSTAL000P}8;$481DLDA#$42STAL0009;$481ELDA#$4ASTAL0010;$481FJSRL0011;$4675DB$4F,$62RORAADCLOGCOL;$0063DBQ}$74JSRL0014;$6966JMP(L0012);$2065DB$3D,$20,$00DB$33PHALDA#$4CSTAL0008;$481DLDA#$53STAL0009;$481R}ELDA#$54STAL0010;$481FJSRL0011;$4675JMPL0015;$7369DB$74JSRL0014;$6966JMP(L0012);$2065DB$3D,$20,$S}00LSRFMSZPG+5;$0048LDA#$01STAZ0016;$0086LDA#$F5STAZ0017;$0084LDA#$48STAZ0018;$0085TAXDB$FFSTXT}L0019;$48F5TAXBPLL0020;$39FCLSRZ0021;$00A8PHAJSRL0022;$4759BMIL0023;$3AA8LDA#$41STAL0008;$481DU}LDA#$53STAL0009;$481EL0041LDA#$4DSTAL0010;$481FL0054LDA#$00STAL0024;$4819TAXBMIL0025;$39F8DB$9BV}LDA#$20TAYPHAJSRL0026;$473DBMIL0023;$3AA8L0038LDA#$00STAZ0027;$008FSTAL0028;$48EBJSRL0029;$4768W}BMIL0030;$3AB8DB$20,$00,$00JSRL0031;$4363JSRL0032;$4481BMIL0023;$3AA8LDAL0024;$4819BNEL0033;$3ABCCX}LCLDAZ0034;$0096ADCZ0035;$00A5STAZ0035;$00A5LDAZ0036;$0097ADCZ0037;$00A6STAZ0037;$00A6JMPL0038;$3Y}A7CL0023LDXZ0039;$009BJSRL0040;$4735TXASECSBC#$10TAXINXBMIL0041;$3A65DB$F4BCCL0042;$3AC9L0030Z}INYDEYBNEL0023;$3AA8L0033LDXZ0039;$009BJSRL0040;$4735INXBMIL0043;$3A94EOR(Z0044),Y;$00C6STXPOKMSK[};$0010DB$17L0042LDYZ0045;$009ABEQL0046;$3AD0JSRL0047;$463FL0046TAXJSRL0048;$3520DB$47JSRL0049;$42\}F4TAXBPLL0050;$3AFBANDFMSZPG+4,X;$0047JMP(DOSVEC);$000ATAXJSRL0051;$33A9TAYPHAJSRL0022;$4759BMI]}L0023;$3AA8LDA#$FFSTAL0052;$3864STAL0053;$3865LDA#$02STAICBLL;$0348LDA#$00STAICBLH;$0349STAZ004^}5;$009ALDA#$0BSTAICCOM;$0342LDA#$64STAICBAL;$0344LDA#$38STAICBAH;$0345JSRCIOV;$E456BMIL0023;$3A_}A8JMPL0054;$3A6ATXASBC#$10STAZ0039;$009BLDAL0024;$4819BNEL0033;$3ABCJMPL0038;$3A7CLDA(CASINI),Y;`}$0002EOR(FMSZPG+1,X);$0044DB$43STA(CASINI),Y;$0002EOR(DRKMSK,X);$004EDB$44,$82,$04EOR(RMARGN,X);$0053a}JMPL0055;$01C8DB$42,$43,$43CLDORA(CRITIC,X);$0042DB$43,$53SEDORA(CRITIC,X);$0042EORHOLD1;$0051BCCLb}0056;$3B4CDB$42EOR#$54TYAORA(CRITIC,X);$0042EORL0057;$E849L0056ORA(CRITIC,X);$0042LSRL0058;$8845ORc}A(CRITIC,X);$0042BVCL0059;$3BA1CPY#$01DB$42,$52EOR(Z0060,X);$0080BRKDB$42,$52,$4BTAYORA(CRITIC,X);d}$0042LSRFMSZPG,X;$0043CLVORA(CRITIC,X);$0042LSRRMARGN,X;$0053STYL0061;$4300JMPL0062;$EC43BRKDB$43e}JMPL0063;$AC44BRKDB$43JMPL0064;$DC49BRKDB$43JMPL0065;$E156DB$02,$43EORL0066;$F050DB$03,$43BVf}CL0067;$3BDFCPX#$03DB$43BVCL0068;$3BE5DB$FFEOR#$44DB$42,$FFLSRADB$44,$43,$E2,$07,$44EORFMSZPG;g}$0043INCLINZBS;$0000DB$44EORSAVMSC;$0058CPYLINZBS;$0000DB$44L0059EORSAVMSC+1;$0059DB$FF,$43,$44,$53,h}$FFPHADB$44,$57,$FF,$42EORDRKMSK;$004EDB$44LDA(CASINI,X);$0002EORCOLRSH;$004FDB$52,$FFEOR(FMSZPG+2,i}X);$0045EOR(COLCRS),Y;$0055DB$FFEORFMSZPG+6;$0049LSRL0069;$4C43EORFMSZPG+1,X;$0044EORZ0070;$00F2DBj}$07EOR#$4EDB$43,$F4BRKEOR#$4ECLICPXLINZBS;$0000EOR#$4EEORL0071,Y;$0AA0LSRAEORL0072;$8C50DB$k}0BLSRADB$53,$52CMP(CASINI),Y;$0002JMPL0073;$4144DB$D2,$03JMPL0074;$5844BNEL0075;$3BEBJMPL0076;$5l}944L0075DB$FF,$44JMPL0077;$5349DB$54LDX#$04JMPL0078;$5253INCLINZBS,X;$0000LSRL0079;$504FSTA(CASINm}I,X);$0002DB$4F,$52EOR(Z0080,X);$00FFRTIDB$4F,$52,$47,$FF,$4BBVCL0081;$3C4ADB$47EORZ0039;$009BDB$9n}BLSRFMSZPG+2,X;$0045DB$52EORL0082,Y;$4620EORDRKMSK,X;$004ELSRL0083;$2059DB$4FBVCL0084;$3C5EDB$4Fo},$44EORICHIDZ;$0020PLPEOR(CRITIC,X);$0042LSRL0085;$524FEORL0086;$4C41AND#$9BDB$42,$53CLIDB$9BEp}OR(CRITIC,X);$0042DB$53CLIDB$9BJSRL0087;$4228EOR#$54DB$32JSRL0086;$4C41L0100DB$57EOR(SAVMSC+1,Xq});$0059DB$53JSRL0088;$2930DB$9B,$03JMPL0089;$392BCMP#$21L0081BNEL0090;$3C4FJMPL0091;$38FFL0090CMPr}#$5FBEQL0092;$3C80CMP#$3BBNEL0093;$3C6CLDAZ0094;$00A4BNEL0095;$3CA8LDY#$00LDA(LINZBS),Y;$0000DBs}$3C,$FF,$3B,$FFRTIDB$4F,$52,$47,$54EORFMSZPG+1,X;$0044EORZ0017;$0084L0093LDA#$48STAZ0018;$0085TAXDB$t}FFSTXL0019;$48F5TAXBPLL0096;$3C21LSRZ0021;$00A8PHAJSRL0097;$A459BRKBVCL0098;$3CC9EOR(Z0017,X);$u}0084BRKBVCL0099;$3CCEBVCL0100;$3C3CBRKBVCL0101;$3CD7EOR(Z0102,X);$0094BRKBVCL0103;$3CDCBVCL0104v};$3C24DB$04,$52,$4FJMPL0105;$04B2DB$52,$4F,$52LDY#$00DB$52,$54EOR#$B0BRKDB$52,$54,$53SBC(CASINI),Yw};$0002DB$53L0095DB$42,$43,$9CBRKDB$53EORFMSZPG;$0043DB$FCBRKDB$53EORFMSZPG+1;$0044LDYL0106,X;x}$5300EORFMSZPG+6;$0049CMP(RAMLO+1,X);$0005DB$53,$54EOR(Z0107,X);$00C2ASLRMARGN;$0053DB$54CLICPY#$0y}8DB$53,$54EORL0108,Y;$47FFDB$53EORCRITIC,X;$0042DB$54L0099DB$54DB$4C,$D6,$00DB$54EOR(SAVMSC,X);z}$0058DB$D4BRKL0101DB$54EOR(SAVMSC+1,X);$0059DB$FFLSRROWCRS;$0054EOR#$54JMPL0110;$DE45BRKDB$54,{}$53CLIDECLINZBS;$0000DB$54CLIEOR(Z0111,X);$00CEBRKDB$54CLIDB$53CPYL0112;$5400EORL0113,Y;$FF4|}1DB$FFL0123LDAL0028;$48EBBNEL0114;$3D00L0221LDA#$80STAZ0115;$0095L0114CLCRTSTAYBRKJSRL0116;$42A}}DLDAZ0117;$009CBEQL0118;$3D15TAXORA#$A5DB$9BSTAL0119;$48EADEXBNEL0120;$3D0DL0118JSRL0121;$42E8~}LDA#$00STAZ0115;$0095STAZ0102;$0094STAZ0034;$0096STAZ0036;$0097LDA#$20STAZ0122;$0098JSRL0121;$42}E8CMP#$3BBEQL0123;$3CF7TAXBMIL0123;$3CF7CMP#$3DBNEL0124;$3D45LDA#$B5STAZ0125;$0082LDA#$3BSTA}Z0126;$0083INYJSRL0121;$42E8STYZ0127;$0099JMPL0128;$3D93L0124JSRL0116;$42ADJSRL0121;$42E8STYZ0127;}$0099LDA#$22STAZ0125;$0082LDA#$3BSTAZ0126;$0083TAYBRKL0129INYLDA(Z0125),Y;$0082BPLL0129;$3D57CL}CTYAADCZ0125;$0082STAZ0125;$0082LDA#$00ADCZ0126;$0083STAZ0126;$0083TAYORA(Z0130,X);$00B1DB$82}BMIL0131;$3D7CTAXDB$FFL0133INXINYLDAZ0117;$009CBEQL0132;$3D8FCMP(Z0125),Y;$0082BNEL0129;$3D57BEQ}L0133;$3D70L0131LDA#$4FSTAZ0122;$0098LDA#$EASTAZ0134;$0087STAZ0135;$0088STAZ0136;$0089LDA#$03STA}Z0034;$0096TAYBRKRTSL0132LDA(Z0125),Y;$0082BPLL0129;$3D57L0128TAYBRKLDA(Z0125),Y;$0082STAZ0134;$0}087INYINCZ0034;$0096LDA(Z0125),Y;$0082BEQL0137;$3DB4LDYZ0127;$0099CMP#$40BCCL0138;$3DA9JMPL0139;}$4010L0138JSRL0140;$3E1ASTYZ0127;$0099BCCL0137;$3DB4LDA#$45STAZ0122;$0098L0137LDAZ0134;$0087AND#$FC}CLCADCZ0134;$0087CLCADCZ0102;$0094STAZ0134;$0087JMPL0141;$45FEL0151JSRL0142;$411CCLCLDAZ0135;$0}088SBCZ0035;$00A5STAZ0135;$0088BNEL0143;$3DD1DECZ0136;$0089L0143LDAZ0136;$0089SBCZ0037;$00A6STAZ01}36;$0089DECZ0135;$0088LDAZ0135;$0088ASLALDAZ0136;$0089ADC#$00BEQL0144;$3DECLDA#$20CMPZ0122;$009}8BCCL0144;$3DECLDA#$56STAZ0122;$0098L0144CLCRTSL0152LDA(Z0060),Y;$0080CMP#$28BNEL0145;$3E06DB$A9}ORG$3CF5DB$2CORG$3DF6STAZ0102;$0094INYJSRL0142;$411CDEYLDA(Z0060),Y;$0080CMP#$29BNEL0146;$3E6}3JMPL0147;$3EF8L0145JSRL0142;$411CJMPL0148;$3EB1L0155LDA#$01STAZ0034;$0096BNEL0149;$3E15L0153JSRL01}42;$411CL0149LDA#$08JMPL0150;$3EF6L0140INCZ0034;$0096CMP#$01BEQL0151;$3DC3INCZ0034;$0096CMP#$0ABE}QL0152;$3DEECMP#$0BBEQL0153;$3E12TAXLDA(Z0060),Y;$0080INXDB$04BNEL0154;$3E43CMP#$41BNEL0154;$3}E43INYLDA(Z0060),Y;$0080CMP#$30BCCL0155;$3E0CCMP#$7BBCSL0155;$3E0CDEYBCCL0156;$3E4BL0154CMP#$23}BEQL0157;$3E8DCMP#$28BEQL0158;$3E65L0156JSRL0142;$411CLDAZ0136;$0089BEQL0159;$3EB9L0167LDA(Z0060),Y};$0080CMP#$2CBNEL0148;$3EB1INYLDA(Z0060),Y;$0080CMP#$59BEQL0160;$3EDECMP#$58BEQL0161;$3EB5L0146S}ECRTSL0158DECZ0034;$0096INYJSRL0142;$411CLDAZ0136;$0089BNEL0146;$3E63DEYLDA(Z0060),Y;$0080CMP#$2}CBEQL0162;$3EE6CMP#$29BNEL0146;$3E63INYLDA(Z0060),Y;$0080CMP#$2CBNEL0163;$3EFAINYLDA(Z0060),Y;$}0080CMP#$59BNEL0146;$3E63L0172LDA#$10JMPL0150;$3EF6L0157DECZ0034;$0096INYJSRL0142;$411CLDAZ0136;$}0089BEQL0164;$3EA9LDAZ0135;$0088BPLL0165;$3E9FINCZ0136;$0089BEQL0164;$3EA9L0165LDA#$20CMPZ0122;$00}98BCCL0164;$3EA9LDA#$56STAZ0122;$0098L0164INXDB$03BEQL0166;$3EF4LDA#$08BNEL0150;$3EF6L0148LDA#$}0CBNEL0150;$3EF6L0161LDA#$1CBNEL0150;$3EF6L0159LDAZ0122;$0098CMP#$20BNEL0167;$3E52DECZ0034;$0096L}DA(Z0060),Y;$0080CMP#$2CBNEL0168;$3EFEINYLDA(Z0060),Y;$0080CMP#$58BNEL0169;$3ED2L0170LDA#$14BNEL0}150;$3EF6L0169CMP#$59L0173BNEL0146;$3E63INXDB$03BEQL0170;$3ECEINXASLZ0171;$00F0BEQL0172;$3E88DB}$03STAZ0034;$0096LDA#$18BNEL0150;$3EF6L0162INYLDA(Z0060),Y;$0080CMP#$58BNEL0173;$3ED4INYLDA(Z006}0),Y;$0080CMP#$29BNEL0173;$3ED4L0166LDA#$00L0150STAZ0102;$0094L0147CLCRTSL0163LDA#$11BNEL0150;$3EF6}L0168LDA#$04BNEL0150;$3EF6L0216TAYSEILDA#$20L0175STAL0174;$4858DEYBNEL0175;$3F06LDYZ0127;$0099D}EXBEQL0176;$3F41DEXBEQL0177;$3F45DEXBEQL0178;$3F24DEXBEQL0179;$3F60DEXBEQL0180;$3F5CDEXBNEL0}181;$3F23JMPL0182;$3FE2L0181RTSL0178JSRL0142;$411CLDAZ0135;$0088LDXZ0034;$0096STAL0183;$4859INXLDA}Z0136;$0089STAL0183;$4859INXSTXZ0034;$0096DEYLDA(Z0060),Y;$0080INYCMP#$2CBEQL0178;$3F24BNEL0184};$3F94L0176LDA#$02BNEL0185;$3F47L0177LDA#$01L0185BITL0006;$4818BEQL0186;$3F50LDAZ0016;$0086BNEL0187};$3FA3L0186TAXLDAL0188;$400DORAL0006,X;$4818STAL0006,X;$4818BNEL0179;$3F60L0180LDA#$80BMIL0189;$3F6}2L0179LDA#$00L0189STAZ0102;$0094TAXBRKL0192LDA(Z0060),Y;$0080CMP#$27BEQL0190;$3FA5INXSEIBCSL0191};$3FB6JSRL0142;$411CLDAZ0135;$0088LDXZ0034;$0096STAL0183;$4859INXDEYL0200STXZ0034;$0096LDA(Z0060)},Y;$0080INYCMP#$2CBEQL0192;$3F66L0199BITL0006;$4818BMIL0193;$3FBFBVSL0194;$3FD5LDAZ0102;$0094EOR}L0174;$4858STAL0174;$4858L0184TAXASLZ0195;$00ADCLIPHASTAZ0016;$0086DEXBNEL0196;$3F96STXZ0102;$00}94JSRL0197;$45E9L0187CLCRTSL0190INYLDA(Z0060),Y;$0080CMP#$27BEQL0198;$3FBCSTAL0183;$4859INXINX}SEIBCCL0190;$3FA5STXZ0034;$0096L0191LDA#$53STAZ0122;$0098BNEL0199;$3F85L0198INYBNEL0200;$3F7CL0193}TAXDB$3CL0202LDAL0174;$4858STAL0201;$478CDEXBNEL0202;$3FC1L0205STXZ0034;$0096LDAL0006;$4818AND#$0}3STAL0006;$4818RTSL0194TAXDB$3CL0204LDAL0174;$4858STAL0203;$47D4DEXBNEL0204;$3FD7BEQL0205;$3FCA}L0182LDAL0002;$4813BEQL0206;$3FECLDA#$FFSTAL0002;$4813L0206JSRL0207;$4001BCCL0208;$3FFFJSRL0142;$41}1CLDAZ0136;$0089BNEL0209;$400CLDAZ0135;$0088BMIL0209;$400CSTAL0007;$4814L0208CLCRTSL0207JSRL0121;}$42E8CMP#$9BBEQL0208;$3FFFCMP#$3BBEQL0208;$3FFFL0209SECL0188RTSDB$82CMP(Z0044,X);$00C6STXICBLHZ,Y};$0029DB$3FBEQL0210;$4029TAXDEXBEQL0211;$403FDEXBEQL0212;$4045DEXBEQL0213;$4063DEXBEQL0214;}$4075DEXBEQL0215;$4078JMPL0216;$3F02L0210JSRL0142;$411CLDAZ0135;$0088LDXZ0035;$00A5STAZ0035;$00A5}STXZ0135;$0088LDAZ0136;$0089LDXZ0037;$00A6STAZ0037;$00A6STXZ0136;$0089INCZ0115;$0095RTSL0211JSRL01}42;$411CINCZ0115;$0095RTSL0212LDA(Z0060),Y;$0080CMP#$3BBEQL0217;$405FCMP#$9BBEQL0217;$405FJSRL014}2;$411CLDAZ0135;$0088STAL0218;$481BLDAZ0136;$0089STAL0219;$481CDECL0003;$481AL0217DB$DAORAL0220,Y};$6048L0213JSRL0142;$411CLDAZ0135;$0088STAZ0034;$0096LDAZ0136;$0089STAZ0036;$0097LDA#$FFSTAZ0102;$}0094RTSL0226STXZ0039;$009BL0214JMPL0221;$3CFCL0215LDA(Z0060),Y;$0080CMP#$7BBCSL0222;$408BCMP#$2EBCC}L0222;$408BSTAL0223;$48D7INYINXINXDB$12BNEL0215;$4078L0222LDA#$9BSTAL0223;$48D7JSRL0224;$46E1}CLCLDAZ0039;$009BADC#$10BMIL0225;$40A4TAXLDA#$D7TAYPHAJSRL0026;$473DBPLL0226;$4073L0225LDA#$49}STAZ0122;$0098BNEL0214;$4075L0249BITZ0227;$008CPHALDAZ0227;$008CCMP#$2BBEQL0228;$40C5CMP#$2DBNE}L0229;$40D6SECLDAZ0230;$008ASBCZ0135;$0088STAZ0230;$008ALDAZ0231;$008BSBCZ0136;$0089JMPL0232;$40D}0L0228CLCLDAZ0230;$008AADCZ0135;$0088STAZ0230;$008ALDAZ0231;$008BADCZ0136;$0089L0232STAZ0231;$008B}PLASTAZ0227;$008CRTSL0229PLASTAZ0227;$008CLDAZ0135;$0088STAZ0230;$008ALDAZ0136;$0089STAZ0231;$00}8BRTSL0242LDAZ0117;$009CCMP#$4CBNEL0233;$411ALDAZ0234;$009DCMP#$4FBNEL0233;$411ALDAZ0235;$009EB}EQL0236;$40FACMP#$57BNEL0233;$411ALDAZ0237;$009FBNEL0233;$411AL0236SECRTSL0240LDAZ0117;$009CCMP#$}48BNEL0233;$411ALDAZ0234;$009DCMP#$49BNEL0233;$411ALDAZ0235;$009EBEQL0236;$40FACMP#$47BNEL0233;}$411ALDAZ0237;$009FCMP#$48BNEL0233;$411ALDAZ0238;$00A0BEQL0236;$40FAL0233CLCRTSL0142LDA#$00STAZ0}239;$0091L0251JSRL0121;$42E8LDA#$00STAZ0227;$008CSTYZ0127;$0099JSRL0116;$42ADJSRL0240;$40FCBCSL024}1;$4176JSRL0242;$40E2BCSL0243;$4170LDYZ0127;$0099L0252JSRL0244;$41A7BCSL0245;$415CL0254LDA(Z0060),Y;}$0080INYCMP#$2DBEQL0246;$416AL0073CMP#$2BBEQL0246;$416ACMP#$5DBEQL0247;$4182LDAZ0227;$008CBEQL0}248;$415BJSRL0249;$40AALDAZ0230;$008ASTAZ0135;$0088LDAZ0231;$008BSTAZ0136;$0089L0248RTSL0245LDA(Z00}60),Y;$0080INYCMP#$5BBEQL0250;$4165SECRTSL0250INCZ0239;$0091JMPL0251;$4120L0246JSRL0249;$40AAJMP}L0252;$4138L0243JSRL0251;$4120JMPL0253;$417DL0241JSRL0251;$4120LDAZ0136;$0089STAZ0135;$0088L0253LDA#$}00STAZ0136;$0089RTSL0247DECZ0239;$0091JMPL0254;$413DL0261STYZ0127;$0099JSRL0255;$43F8BCSL0256;$41A1}JSRL0257;$43DABITZ0027;$008FBMIL0256;$41A1LDAZ0258;$008DSTAZ0135;$0088LDAZ0259;$008ESTAZ0136;$008}9L0260LDYZ0127;$0099CLCRTSL0256LDA#$55STAZ0122;$0098BNEL0260;$419DL0244LDA#$00STAZ0135;$0088STAZ}0136;$0089STAZ0117;$009CJSRL0116;$42ADLDAZ0117;$009CBNEL0261;$4187LDA(Z0060),Y;$0080CMP#$24BNEL026}2;$41FCL0267INYLDA(Z0060),Y;$0080CMP#$67BCSL0263;$41F8CMP#$61BCCL0264;$41CBSBC#$57BCSL0265;$41E1}L0264CMP#$47BCSL0263;$41F8CMP#$41BCCL0266;$41D7SBC#$37BCSL0265;$41E1L0266CMP#$3ABCSL0263;$41F8CM}P#$30BCCL0263;$41F8SBC#$30L0265ASLZ0135;$0088ROLZ0136;$0089ASLZ0135;$0088ROLZ0136;$0089ASLZ0135;$}0088ROLZ0136;$0089ASLZ0135;$0088ROLZ0136;$0089ORAZ0135;$0088STAZ0135;$0088JMPL0267;$41BCL0263CLCR}TSL0272SECRTSL0262CMP#$25BEQL0268;$424CCMP#$40BEQL0269;$4260CMP#$2ABEQL0270;$4280CMP#$27BEQL02}71;$428BCMP#$3ABCSL0272;$41FACMP#$30BCCL0272;$41FAL0274CMP#$3ABCSL0263;$41F8CMP#$30BCCL0263;$41F}8SBC#$30PHAASLZ0135;$0088ROLZ0136;$0089LDAZ0136;$0089STAZ0273;$0092LDAZ0135;$0088ASLAROLZ0273};$0092ASLAROLZ0273;$0092CLCADCZ0135;$0088STAZ0135;$0088LDAZ0273;$0092ADCZ0136;$0089STAZ0136;$008}9CLCPLAADCZ0135;$0088STAZ0135;$0088LDA#$00ADCZ0136;$0089STAZ0136;$0089INYLDA(Z0060),Y;$0080JMP}L0274;$4214L0268INYLDA(Z0060),Y;$0080CMP#$30BCCL0263;$41F8CMP#$31BCCL0275;$4259BNEL0263;$41F8L0275}ROLZ0135;$0088ROLZ0136;$0089JMPL0268;$424CL0269INYLDA(Z0060),Y;$0080CMP#$38L0276BCSL0263;$41F8CMP#}$30BCCL0263;$41F8SBC#$30ASLZ0135;$0088ROLZ0136;$0089ASLZ0135;$0088ROLZ0136;$0089ASLZ0135;$0088RO}LZ0136;$0089ORAZ0135;$0088STAZ0135;$0088JMPL0269;$4260L0270INYLDAZ0035;$00A5STAZ0135;$0088LDAZ0037};$00A6STAZ0136;$0089BCSL0276;$4265L0271INYLDA(Z0060),Y;$0080INYCMP#$27BEQL0276;$4265STAZ0135;$008}8LDA(Z0060),Y;$0080INYCMP#$27BEQL0276;$4265STAZ0136;$0089LDA(Z0060),Y;$0080INYCMP#$27BEQL0276;$}4265LDA#$53DB$99,$98,$00JMPL0263;$41F8L0116TAXBRKL0279LDA(Z0060),Y;$0080L0280CMP#$7BBCSL0277;$42D3}CMP#$61BCSL0278;$42C1CMP#$5BBCSL0277;$42D3CMP#$41BCCL0277;$42D3L0278INYINXPHPBCSL0279;$42AFSTA}Z0117;$009CINXLDA(Z0060),Y;$0080CMP#$3ABCSL0280;$42B1CMP#$30BCSL0278;$42C1L0277LDA#$00INXSTAZ00}39;$009BRTSL0282LDA(Z0060),Y;$0080CMP#$9BBEQL0281;$42F2CMP#$20BEQL0281;$42F2CMP#$7FBNEL0282;$42D9}L0283INYL0121LDA(Z0060),Y;$0080CMP#$20BEQL0283;$42E7CMP#$7FBEQL0283;$42E7L0281RTSL0285RTSL0049LDA#}$F5STAZ0125;$0082LDA#$48STAZ0126;$0083L0295JSRL0284;$4575LDA#$00L0292STAZ0127;$0099LDAZ0126;$0083}LDXZ0125;$0082CPXZ0017;$0084SBCZ0018;$0085BCSL0285;$42F3DB$20ORG$420EDB$DA,$43ORG$4310LDXZ0127;}$0099LDAZ0259;$008EJSRL0286;$4558LDAZ0258;$008DJSRL0286;$4558INXBITZ0027;$008FBPLL0287;$4326LDA#}$55STAL0288;$396AL0287INXLDA#$4CBVCL0289;$432DLDA#$47L0289STAL0288;$396ALDA#$20TAYDB$02L0290INX}INYSTAL0288;$396ALDA(Z0125),Y;$0082BPLL0290;$4334STXZ0127;$0099CLCTYAADCZ0125;$0082STAZ0125;$00}82LDA#$00ADCZ0126;$0083STAZ0126;$0083LDA#$00L0291CLCADC#$11CMPZ0127;$0099BCCL0291;$434DCMP#$3F}BCCL0292;$4301LDA#$9BSTAL0293;$396BJSRL0294;$44D9JMPL0295;$42FCL0031LDAL0028;$48EBBEQL0296;$43D9L}DXZ0135;$0088LDYZ0136;$0089LDAZ0115;$0095BNEL0297;$4374LDXZ0035;$00A5LDYZ0037;$00A6L0297STXZ0258;$0}08DSTYZ0259;$008ETAXDB$02L0299INXLDAL0298;$48E8STAZ0127;$0099BNEL0299;$437ASTXZ0300;$0090JSRL02}55;$43F8BCCL0296;$43D9LDAZ0018;$0085STAZ0301;$0093LDYZ0017;$0084L0303STYZ0273;$0092TAYBRKLDA(Z027}3),Y;$0092LDYZ0300;$0090STA(Z0273),Y;$0092LDYZ0273;$0092BNEL0302;$439FDECZ0301;$0093L0302DEYLDAZ030}1;$0093CPYZ0125;$0082SBCZ0126;$0083BCSL0303;$438FLDAZ0300;$0090TAYADCZ0017;$0084STAZ0017;$0084LD}A#$00ADCZ0018;$0085STAZ0018;$0085L0304DEYLDAZ0127;$0099STA(Z0125),Y;$0082INYDB$03BNEL0304;$43B5}LDAZ0259;$008ELSRAPHPTAYDB$02STA(Z0125),Y;$0082LDAZ0258;$008DLSRADEYSTA(Z0125),Y;$0082DEYTYA}RORAPLPRORALSRALSRAORAZ0027;$008FSECRORASTA(Z0125),Y;$0082L0296RTSL0257TAYBRKLDA(Z0125),Y};$0082ASLAPHAANDZ0111;$00CESTAZ0027;$008FPLAASLAASLAASLAPHPASLAINYLDA(Z0125),Y;$0082ROL}ASTAZ0258;$008DPLPINYLDA(Z0125),Y;$0082ROLASTAZ0259;$008EL0316RTSL0255LDXZ0017;$0084STXZ0305;$0}0A7LDAZ0018;$0085STAZ0021;$00A8TAXSBCZ0016,X;$0086LDA#$A9PHASTAZ0306;$00AASTAZ0126;$0083STXZ012}5;$0082CPXZ0305;$00A7SBCZ0021;$00A8BCSL0307;$4465L0320SECLDAZ0305;$00A7ADCZ0308;$00A9STAZ0125;$008}2LDAZ0021;$00A8ADCZ0306;$00AARORARORZ0125;$0082STAZ0126;$0083TAYBRKLDA(Z0125),Y;$0082BMIL0309;}$4434L0311LDAZ0125;$0082BNEL0310;$442EDECZ0126;$0083L0310DECZ0125;$0082LDA(Z0125),Y;$0082BPLL0311;$44}28L0309TAYDB$03L0315LDA(Z0125),Y;$0082BMIL0312;$4443CMPZ0127;$0099BCCL0313;$444ABNEL0314;$446CINY}BCSL0315;$4436L0312CLCLDAZ0127;$0099BEQL0316;$43F7BNEL0317;$444BL0313INYL0317LDA(Z0125),Y;$0082BPLL}0313;$444ACLCTYAADCZ0125;$0082LDYZ0126;$0083BCCL0318;$4458INYL0318CLDTAYBRKBCCL0319;$4466CMPZ}0305;$00A7BCCL0319;$4466STAZ0125;$0082STYZ0126;$0083L0307RTSL0319STYZ0306;$00AASTAZ0308;$00A9BCCL03}20;$4412L0314LDAZ0308;$00A9CMPZ0125;$0082LDAZ0306;$00AASBCZ0126;$0083BCSL0307;$4465LDAZ0125;$0082S}TAZ0305;$00A7LDAZ0126;$0083STAZ0021;$00A8BCCL0320;$4412L0321RTSL0032LDAZ0016;$0086BNEL0321;$4480JSR}L0284;$4575LDAZ0122;$0098STAL0288;$396ATAXDB$02LDAZ0115;$0095BMIL0322;$44A9BNEL0323;$449FLDAZ00}37;$00A6JSRL0286;$4558LDAZ0035;$00A5JMPL0324;$44A6L0323LDAZ0136;$0089JSRL0286;$4558LDAZ0135;$0088L0}324JSRL0286;$4558L0322LDAZ0034;$0096STAZ0273;$0092BEQL0325;$44B6LDAZ0102;$0094BMIL0325;$44B6JSRL032}6;$45BEL0325TAXDB$14JSRL0327;$4587L0330JSRL0294;$44D9BMIL0328;$44D8LDAZ0102;$0094BMIL0329;$44D6LD}AZ0273;$0092BEQL0328;$44D8JSRL0284;$4575JSRL0326;$45BELDA#$9BSTAL0288;$396AJMPL0330;$44BBL0329LDA}#$00L0328RTSL0294LDAL0002;$4813INCL0002;$4813CMPL0007;$4814BCCL0331;$453ALDA#$20L0343STAL0332;$47D2}STAL0333;$47D1STAL0334;$47D0LDA#$00STAL0002;$4813INCL0004;$4815BNEL0335;$44FCINCL0005;$4816L0335L}DAL0004;$4815STAZ0336;$00D4LDAL0005;$4816STAZ0337;$00D5JSRL0338;$D9AAJSRL0339;$D8E6TAYDB$FFL0341 }INYDB$B1ORG$4410DB$F3ORG$4511STAL0340;$47CFBPLL0341;$450EAND#$7FSTAL0340;$47CFTAXBPLL0342;$4 }4C7DB$0BSTAICCOM;$0342LDA#$8CSTAICBAL;$0344LDA#$47STAICBAH;$0345LDAL0001;$4817STAICBLL;$0348LD }A#$00STAICBLH;$0349JSRCIOV;$E456L0331TAXBPLL0343;$44E6ORA#$8DDB$42,$03LDA#$6ASTAICBAL;$0344LDA }#$39STAICBAH;$0345LDA#$51STAICBLL;$0348LDA#$00STAICBLH;$0349JMPCIOV;$E456L0286PHALSRALSRALSR }ALSRASEDSECSBC#$0AADC#$3ASTAL0288;$396AINXPLAAND#$0FSECSBC#$0AADC#$3ACLDSTAL0288;$396A }INXRTSL0284TAXBRKLDA#$20STAL0288;$396AINXINXBVCL0344;$4510INCZ0308,X;$00A9DB$9BSTAL0288;$396 }ARTSL0327TAYBRKLDA(Z0060),Y;$0080CMP#$7FBNEL0345;$459ETXATAXDB$12L0347DEXCMPL0346;$45ACBCCL0 }347;$4592LDAL0348;$45ADTAXBCSL0349;$45A6L0345STAL0288;$396ACMP#$9BBEQL0350;$45ABINXL0349INYINXB }VCL0331;$453ADB$DE,$60,$00L0348DB$02,$07,$14ORAL0351,X;$2B23DB$33,$3B,$43PHAEOR#$4ADB$4BJMPL0352;$ }4E4DDB$4FL0326TAXDB$07TAYBRKSTYZ0301;$0093LDAZ0134;$0087JSRL0286;$4558DECZ0273;$0092BEQL0353; }$45E8INCZ0301;$0093LDYZ0301;$0093INYASLZ0354;$00D0DB$EFL0356LDAL0355;$485ESTAZ0016;$0086DEYBNEL }0356;$45D5L0358LDAL0357;$485FSTAL0183;$4859INYCPYZ0273;$0092BCCL0358;$45DDL0353RTSL0197LDYZ0016;$008 }6BNEL0359;$45FDJSRL0360;$4612L0362LDAL0183;$4859JSRL0361;$4639INXCPXZ0034;$0096BNEL0362;$45F0STY }Z0045;$009AL0359RTSL0141LDYZ0016;$0086BNEL0359;$45FDJSRL0360;$4612L0363LDAZ0134;$0087JSRL0361;$4639I }NXCPXZ0034;$0096BNEL0363;$4605STYZ0045;$009AL0368RTSL0360LDYZ0045;$009ABEQL0364;$462CTYAADCL0052; }$3864LDXL0053;$3865BCCL0082;$4620INXL0082SECSBCZ0035;$00A5BNEL0365;$4629CPXZ0037;$00A6BEQL0366;$4 }636L0365JSRL0047;$463FL0364LDAZ0035;$00A5STAL0052;$3864LDAZ0037;$00A6STAL0053;$3865L0366TAXBRKRTSL }0361STAL0367;$3868INYBNEL0368;$4611L0047STXZ0306;$00AADEYTYAPHALDXL0053;$3865CLCADCL0052;$3864 }STAL0369;$3866BCCL0370;$4651INXL0370STXL0371;$3867TAXJSRL0372;$6838ADC#$04STAICBLL;$0348LDA#$01 }BCSL0373;$4663LDA#$00L0373STAICBLH;$0349JSRCIOV;$E456BMIL0374;$4670LDXZ0306;$00AATAYBRKRTSL0374B }RKNOPJMP(DOSVEC);$000AL0011PLASTAZ0308;$00A9PLASTAZ0306;$00AAL0377LDA#$0BSTAICCOM;$0342TAYORA(Z }0306,X);$00AABRKSTXICBLL;$0348STXICBLH;$0349L0376LDA(Z0308),Y;$00A9BEQL0375;$4698INYSTYZ0273;$0092 }JSRCIOV;$E456LDYZ0273;$0092BNEL0376;$468AL0375INYLDA(Z0308),Y;$00A9DB$99,$A7,$00INYLDA(Z0308),Y;$00A }9STAZ0021;$00A8STYZ0273;$0092LDA#$05STAICCOM;$0342LDA#$10STAICBLL;$0348LDA#$00STAICBLH;$0349LD }A#$D7STAICBAL;$0344LDA#$48STAICBAH;$0345JSRCIOV;$E456BMIL0377;$467BJSRL0224;$46E1TAYDB$FFL0378 }INYLDAL0223;$48D7STA(Z0305),Y;$00A7BPLL0378;$46C8CLCLDAZ0273;$0092ADCZ0308;$00A9STAZ0273;$0092DB }$B9,$AA,$00ADC#$00PHALDAZ0273;$0092PHARTSL0224TAXBRKTAYBRKSTXZ0301;$0093BEQL0379;$46F5L0382CMP }#$3ABNEL0380;$46EEDEXL0380CMP#$2EBNEL0381;$46F4DECZ0301;$0093L0381INYL0379LDAL0223;$48D7BPLL0382; }$46E9LDAZ0301;$0093BNEL0383;$471ELDA#$2ESTAL0223;$48D7INYLDAL0008;$481DSTAL0223;$48D7INYLDAL000 }9;$481ESTAL0223;$48D7INYLDAL0010;$481FSTAL0223;$48D7INYLDA#$9BSTAL0223;$48D7L0383TXABNEL0384;$4 }734L0386LDAL0223;$48D7STAL0385;$48D9DEYBPLL0386;$4721LDA#$44STAL0223;$48D7LDA#$3ASTAL0387;$48D8L }0384RTSL0040LDA#$0CSTAICCOM;$0342JMPCIOV;$E456L0026STYZ0273;$0092PHAJSRL0040;$4735LDA#$04L0388STA }ICAX1;$034APLASTAICBAL;$0344LDAZ0273;$0092STAICBAH;$0345LDA#$03STAICCOM;$0342JMPCIOV;$E456L0022ST !}YZ0273;$0092PHALDA#$0CSTAICCOM;$0342JSRCIOV;$E456LDA#$08BNEL0388;$4745L0029LDXZ0039;$009BLDA#$05 "}STAICCOM;$0342LDA#$64STAICBLL;$0348LDA#$00STAICBLH;$0349STAZ0127;$0099LDA#$00STAICBAL;$0344STA #}Z0060;$0080LDA#$38STAICBAH;$0345STAZ0389;$0081JMPCIOV;$E456L0201DB$0CJSRL0390;$2020JSRL0390;$2020 $}JSRL0390;$2020JSRL0390;$2020JSRL0390;$2020JSRL0390;$2020JSRL0390;$2020JSRL0390;$2020JSRL0390;$202 %}0JSRL0390;$2020JSRL0390;$2020JSRL0390;$2020JSRL0390;$2020JSRL0390;$2020JSRL0390;$2020JSRL0390;$20 &}20JSRL0390;$2020JSRL0390;$2020JSRL0390;$2020JSRL0390;$2020JSRL0391;$6150DB$67ADCICHIDZ;$0020L0340 '}JSRL0390;$2020L0332JSRL0392;$9B20JSRL0390;$2020JSRL0390;$2020JSRL0390;$2020JSRL0390;$2020JSRL0390; (}$2020JSRL0390;$2020JSRL0390;$2020JSRL0390;$2020JSRL0390;$2020JSRL0390;$2020JSRL0390;$2020JSRL0390 )};$2020JSRL0390;$2020JSRL0390;$2020L0108JSRL0390;$2020JSRL0390;$2020JSRL0390;$2020JSRL0390;$2020JSR *}L0390;$2020JSRL0390;$2020DB$9B,$9B;ExternalreferenceequatesL0001=$4817L0003=$481AL0004=$4815L0005=$481 +}6L0006=$4818L0007=$4814L0008=$481DL0009=$481EL0010=$481FL0012=$2065L0013=$A948L0014=$6966L0015=$73 ,}69L0019=$48F5L0024=$4819L0025=$39F8L0028=$48EBL0043=$3A94L0048=$3520L0050=$3AFBL0051=$33A9L0052=$3 -}864L0053=$3865L0055=$01C8L0057=$E849L0058=$8845L0061=$4300L0062=$EC43L0063=$AC44L0064=$DC49L0065=$ .}E156L0066=$F050L0067=$3BDFL0068=$3BE5L0069=$4C43L0071=$0AA0L0072=$8C50L0074=$5844L0076=$5944L0077= /}$5349L0078=$5253L0079=$504FL0083=$2059L0084=$3C5EL0085=$524FL0086=$4C41L0087=$4228L0088=$2930L0089= 0}$392BL0091=$38FFL0092=$3C80L0096=$3C21L0097=$A459L0098=$3CC9L0103=$3CDCL0104=$3C24L0105=$04B2L0106 1}=$5300L0110=$DE45L0112=$5400L0113=$FF41L0119=$48EAL0120=$3D0DL0139=$4010L0160=$3EDEL0174=$4858L0183 2}=$4859L0196=$3F96L0203=$47D4L0218=$481BL0219=$481CL0220=$6048L0223=$48D7L0288=$396AL0293=$396BL029 3}8=$48E8L0333=$47D1L0334=$47D0L0338=$D9AAL0339=$D8E6L0342=$44C7L0344=$4510L0346=$45ACL0350=$45ABL03 4}51=$2B23L0352=$4E4DL0355=$485EL0357=$485FL0367=$3868L0369=$3866L0371=$3867L0372=$6838L0385=$48D9L0 5}387=$48D8L0390=$2020L0391=$6150L0392=$9B20;End of external referencesEND=$3867L0372=$6838L0385=$48D9L0W;; PUT CONTENTS OF THE DATA BUFFER INTO THE OBJECT FILE;DATOBJLDYPASSNOBNENOOBJGJSROBJSETDOLOOPLDADATBUF,XJS 7}RWRTBYTE;PUT EACH BYTE INTO THE BUFFERINXCPXLEN;DONE?BNEDOLOOPSTYOBJPTRNOOBJGRTS;; PUT THE CONTENTS OF T 8}HE MACHINE CODE BUFFER INTO THE OBJECT FILE;CODOBJLDYPASSNOBNENOOBJGJSROBJSETCODELPLDAOPCODE,XJSRWRTBYTEINX 9}CPXLENBNECODELPSTYOBJPTRRTS;; INSURE THE PC AGREES WITH THE LOCATION BEING LOADED;OBJSETLDYOBJPTRBEQNEWS :}ET;IF NOTHING IN BUFFERTYACLCADCOBJBUFLDXOBJBUF+1;ELSE COMPARE BUF ADDR AND PCBCCNOBXINXNOBXCMPPCBNEN ;}OTSETCPXPC+1BEQSETXIT;IF NEXT BYTE ADDR MATCHES PCNOTSETJSRWRTOBJ;NEWSETLDAPCSTAOBJBUFLDAPC+1STAOBJBU <}F+1SETXITLDX#0WRTXITRTS;; WRITE A BYTE TO THE OBJECT FILE BUFFER;WRTBYTESTAOBJBUF+4,YINYBNEWRTXIT;IF NOT T =}HE END OF THE BUFFER;; WRITE A BLOCK OF OBJECT TEXT IN OBJBUF;WRTOBJSTXLOWP+1DEYTYAPHALDXOBJBUF+1CLCADCO >}BJBUFSTAOBJBUF+2BCCWRTEQLINXWRTEQLSTXOBJBUF+3LDX#OBUNITSECPLAADC#4STAILEN,XLDA#1BCSZEROPBLDA ?}#0ZEROPBSTAILEN+1,XJSRCIOVBMIOBJERRLDAOBJBUF+3STAOBJBUF+1LDYOBJBUF+2INYSTYOBJBUFBNEWRTOUTINCOBJB @}UF+1WRTOUTLDXLOWP+1LDY#0RTS;OBJERRBRKNOPJMP($000A)BUF+1LDYOBJBUF+2INYSTYOBJBUFBNEWRTOUTINCOBJB C;; OPCODE TABLE AND OPERAND EVALUATION ROUTINES;; BYTE 0, BASE OPCODE VALUE: BITS 7-3 RIGHT SHIFTED 1 BIT (BIT2 ALWAYS 0)B}; BYTE 1, CODE IDENTIFYING VALID OPERAND MODES;; 0 -- NO OPERAND ALLOWED; 1 -- RELATIVE ADDRESSING; 2 -- XIND, ZP, IMC}M, ABS, INDY, ZPIND, ZPX, ABSY, ABSX; 3 -- ZP, IMM, ABS; 4 -- ZP, ACC, ABS, ZPX, ABSX; 5 -- XIND, ZP, ABS, INDY, ZPIND,D} ZPX, ABSY, ABSX; 6 -- ZP, ABS, ZPYSP; 7 -- ZP, ABS, ZPX, ABSX (DEC, INC); 8 -- ZP, ABS, ZPX; 9 -- ZP, ABS (BIT); 10E} -- ABS, ABSIND (JMP); 11 -- (JSR);; DEFINE MODES;XIND=$00ZP=$04ACC=$08IMM=$08ABS=$0CINDY=$10ZPIND=F}$11ZPX=$14ABSY=$18ABSX=$1C;OPSDB$B1,$02,'ADC'DB$91,$02,'AND'DB$82,$04,'ASL'DB$C8,$01,'BCC'DB$D8,$01,G}'BCS'DB$F8,$01,'BEQ'DB$90,$09,'BIT'DB$98,$01,'BMI'DB$E8,$01,'BNE'DB$88,$01,'BPL'DB$C0,$01,'BRA'DB$80,$00H},'BRK'DB$A8,$01,'BVC'DB$B8,$01,'BVS'DB$8C,$00,'CLC'DB$EC,$00,'CLD'DB$AC,$00,'CLI'DB$DC,$00,'CLV'DB$E1,$0I}2,'CMP'DB$F0,$03,'CPX'DB$E0,$03,'CPY'DB$FF,$49,'DB'DB$FF,$4A,'DC'DB$E2,$07,'DEC'DB$E6,$00,'DEX'DB$C4,$00J},'DEY'DB$FF,$43,'DS'DB$FF,$48,'DW'DB$FF,$42,'END'DB$A1,$02,'EOR'EQCODEDB$FF,$41,'EQU'DB$FF,$45,'INCLUDE'DK}B$F2,$07,'INC'DB$F4,$00,'INX'DB$E4,$00,'INY'DB$A0,$0A,'JMP'DB$8C,$0B,'JSR';VERY FUNNY OPCODE (ABNORMAL)DB$D1L},$02,'LDA'DB$D2,$03,'LDX'DB$D0,$03,'LDY'DB$FF,$44,'LIST'DB$A2,$04,'LSR'DB$F6,$00,'NOP'DB$81,$02,'ORA'DB$M}FF,$40,'ORG'DB$FF,$4B,'PAGE'DB$A4,$00,'PHA'DB$84,$00,'PHP'DB$B4,$00,'PLA'DB$94,$00,'PLP'DB$92,$04,'ROL'DBN}$B2,$04,'ROR'DB$A0,$00,'RTI'DB$B0,$00,'RTS'DB$F1,$02,'SBC'DB$9C,$00,'SEC'DB$FC,$00,'SED'DB$BC,$00,'SEI'DO}B$C1,$05,'STA'DB$C2,$06,'STX'DB$C0,$08,'STY'DB$FF,$47,'SUBTTL'DB$D6,$00,'TAX'DB$D4,$00,'TAY'DB$FF,$46,'TITP}LE'DB$DE,$00,'TSX'DB$C6,$00,'TXA'DB$CE,$00,'TXS'DB$CC,$00,'TYA'ENDOPSDB$FF,$FF;NOTHGLDALABELBNELABONLCQ}OMMNTLDA#$80STAISVALLABONLCLCRTS;GENCODELDY#0JSRGETSYM;LABEL?LDASYMBOLBEQNOLBL;NO DO OPCODE THENLR}DX#SYMSIZ+1SAVLABLDASYMBOL-1,XSTALABEL-1,XDEXBNESAVLAB;NOLBLJSRNXTFLD;NEXT, SKIP OVER TO OPCODELDA#0STS}AISVALSTAMODESTALENSTALEN+1LDA#' 'STAADRERRJSRNXTFLDCMP#';';COMMENT?BEQNOTHGTAXBMINOTHGCMPT}#'='BNENOTEQLDA#LOW[EQCODE]STATABPTRLDA#HIGH[EQCODE]STATABPTR+1INYJSRNXTFLDSTYTXTPTRJMPSPCLOP;NOTU}EQJSRGETSYMJSRNXTFLDSTYTXTPTR;LDA#LOW[OPS-1]STATABPTRLDA#HIGH[OPS-1]STATABPTR+1LDY#0FINDOPINYLDAV}(TABPTR),YBPLFINDOPCLCTYAADCTABPTRSTATABPTRLDA#0ADCTABPTR+1STATABPTR+1LDY#1LDA(TABPTR),YBMINOTW}OPC;IF NO MATCH IN THE TABLELDX#$FFOPCPLINXINYLDASYMBOL,XBEQTSTEM;END OF SYMBOL, END OF TABENT?CMP(TABPTRX}),YBNEFINDOPBEQOPCPL;NOTOPCLDA#'O'STAADRERRLDA#$EA;3 NOP INSTRUCTIONSSTAOPCODESTAVALUESTAVALUE+1Y}LDA#3STALENLDY#0;CC=ZERO, PLUS (ERROR)RTS;TSTEMLDA(TABPTR),YBPLFINDOP;NOT END OF TABLE ENTRY, NO MATCH;Z}SPCLOPLDY#0LDA(TABPTR),YSTAOPCODEINYINCLENLDA(TABPTR),YBEQOPNDOKLDYTXTPTRCMP#$40BCCMACHCD;IF 65[}02 INSTRUCTIONJMPASSDIR;MACHCDJSRRDOPNDSTYTXTPTRBCCOPNDOKLDA#'E'STAADRERROPNDOKLDAOPCODEAND#$FCCLC\}ADCOPCODECLCADCMODESTAOPCODEJMPCODOBJ;; ESTABLISH MODE FROM SYNTAX OF OPERAND;RELJMPJSREVALAB;EVALUATE]} ADDRESSCLCLDAVALUESBCPCSTAVALUEBNEGRELVDECVALUE+1GRELVLDAVALUE+1SBCPC+1STAVALUE+1DECVALUE;LD^}AVALUEASLALDAVALUE+1ADC#0BEQRRELVLDA#' 'CMPADRERRBCCRRELVLDA#'V'STAADRERRRRELVCLCRTS;JMPGRP_}LDA(TEXTP),YCMP#'('BNEJABSLDA#$2C;MODE OFFSET = 2CSTAMODEINYJSREVALABDEYLDA(TEXTP),YCMP#')'BNE`}SMERRJSMRETJMPSMXIT;JABSJSREVALABJMPSMABS;ACCREFLDA#1STALENBNEACCJ;JSUBJSREVALABACCJLDA#ACCJMPSa}MRET;RDOPNDINCLENCMP#1;IF RELATIVE BRANCH, SPECIALBEQRELJMPINCLENCMP#$0A;IF JUMP, ONLY ABS AND ABSIND AREb} ALLOWEDBEQJMPGRPCMP#$0BBEQJSUBTAX;SAVE FOR FUTURE REF.STAMODELDA(TEXTP),YCPX#4BNENOACCCMP#'A'c}BNENOACCINYLDA(TEXTP),YCMP#'0'BCCACCREFCMP#'z'+1BCSACCREFDEYBCCGOTACHNOACCCMP#'#'BEQSMIMMCMP#d}'('BEQSMINDGOTACHJSREVALAB;EVALUATE ABSOLUTE OPERANDDEYLDAVALUE+1BEQZPOPNDABSOPDLDA(TEXTP),YCMP#','BNe}ESMABSINYLDA(TEXTP),YCMP#'Y'BEQSMAYCMP#'X'BEQSMAXSMERRSEC;ELSE, ERRORRTS;SMINDDECLENINYJSREf}VALABLDAVALUE+1BNESMERRDEYLDA(TEXTP),YCMP#','BEQSMINXCMP#')'BNESMERRINYLDA(TEXTP),YCMP#','BNg}ESZIINYLDA(TEXTP),YCMP#'Y'BNESMERRLDA#INDYJMPSMRET;SMABSLDA#ABSBNESMRET;SMAXLDA#ABSXBNESMRETq}B6EXPR MACB :INPUT MACBDCHECK MACB 6OBJECT MACB-AOPCODE MACB wASMDEF MACB DIREC MACBSYMBOLS MACBPRINT MACB&A65 MACBDATA MACBTESTPGM ASMBTEST ASMB$A65 OBJB$A65 B$ A65 BINBDBOCMP BASB4oAVERS BA65 DOCBDUMPTEST BMEDITMACECFBMEDITASTECF;SMZPYCMP#'Y'TSMERRBNESMERRLDXMODECPX#3BEQZPYSPCPX#6BEQZPYSP;SMAYLDA#3STALENLDA#ABSYBNESMREr}T;ZPOPNDLDAADRERRCMP#' 'BNEABSOPDDECLENLDA(TEXTP),YCMP#','BNESMZPINYLDA(TEXTP),YCMP#'X'BNESMs}ZPYZPYSPLDA#ZPXBNESMRET;SMIMMDECLENINYJSREVALABLDAVALUE+1BEQSMIMOKLDAVALUEBPLSMIMBDINCVALUE+1t}BEQSMIMOKSMIMBDLDA#' 'CMPADRERRBCCSMIMOKLDA#'V'STAADRERRSMIMOKLDXMODECPX#3BEQXYIMMLDA#IMMBNESMu}RET;SMINXINYLDA(TEXTP),YCMP#'X'BNETSMERRINYLDA(TEXTP),YCMP#')'BNETSMERRXYIMMLDA#XINDSMRETSTAMODEv}SMXITCLCRTS;SZILDA#ZPINDBNESMRET;SMZPLDA#ZPBNESMRET,YCMP#')'BNETSMERRXYIMMLDA#XINDSMRETSTAMODEF;; PARAMETERS OF THE ASSEMBLER;SYMSIZ=8;MAX NUMBER OF CHARACTERS IN A SYMBOLFNSIZE=18;MAX LENGTH OF A FILE NAME STx}RINGSTRMAX=120;MAX LENGTH OF QUOTED STRINGLINLEN=100;MAX LENGTH OF AN INPUT LINEPRTLEN=80;PRINT LINE WIDTHBUFLENy}=256+6;MAX SIZE OUTPUT RECORDCWIDTH=SYMSIZ+9;TAB=$7FEOL=$9B;; REGISTERS ON ZERO PAGE;DOSVEC=$0A;ORG$0z}080TEXTPDS2;ADDRESS OF TEXT BUFFERTABPTRDS2;ADDRESS OF OPCODE ENTRYENDSTABDS2;ADDRESS OF END OF SYMTABPASSNODS{}1;CURRENT ASSEMBLER PASSOPCODEDS1;OPCODE VALUEVALUEDS2;VALUE OF OPERANDSECVALDS2OPERDS1SVALDS2;SYMBOL VALU|}ESFLGSDS1;SYMBOL FLAGS; BIT 7=UNDEFINED; BIT 6=GLOBAL; BIT 5=0; BIT 4=0; BIT 3-1=ORG COUNT; BIT 0}}=UNUSEDSLENDS1PARENSDS1TEMPDS2;GENERAL TEMPORARIESCNT=TEMPMODEDS1;ADDRESSING MODE OFFSETISVALDS1;FLAG (N~}ONZERO -> LABEL=VALUE)LENDS2;LENGTH OF CURRENT INSTRUCTIONADRERRDS1;ADDRESS ERROR FIELDTXTPTRDS1;CURRENT TEXT BYT}E OFFSETOBJPTRDS1;NEXT BYTE IN OBJECT BUFFERFILEDS1;IOCB USED CURRENTLY FOR INPUTSYMBOLDSSYMSIZ;RESERVE 9 BYTES F}OR THE SYMBOLDS1PCDS2;CURRENT VALUE OF *HIGHPDS2LOWPDS2OPRSPDS1;OPERATOR STACK POINTEROPDSPDS1;OPERAND S}TACK POINTERFUNCDS1;HIGH/LOW FUNCTION FLAG;FR0=$D4FR1=$E0INBUFF=$F3;RUNVEC=$02E0INIVEC=$02E2;ORG$034}0DS2ICMDDS1ISTATDS1IBUFDS2DS2ILENDS2IAUXDS2DS2DS2;FASCII=$D8E6IFP=$D9AACIOV=$E456G$034w;; HANDLE ASSEMBLER DIRECTIVES;ASSDIRDECLENAND#$3FBEQASSORGTAXDEXBEQASSEQUDEXBEQASSENDDEXBEQASSD}EFSDEXBEQASSLISTDEXBEQASSINCLJMPDSGRP;ASSORGJSREVALABLDAVALUELDXPCSTAPCSTXVALUELDAVALUE+1LD}XPC+1STAPC+1STXVALUE+1INCISVALRTS;ASSEQUJSREVALABINCISVALRTS;ASSENDLDA(TEXTP),YCMP#';'BEQNOEND}VCMP#EOLBEQNOENDVJSREVALABDEYLDA(TEXTP),YINYCMP#','BNERUNENDLDAVALUESTAINIPTLDAVALUE+1STAIN}IPT+1DECINIFLGBNEASSEND;RUNENDLDAVALUESTAENTPTLDAVALUE+1STAENTPT+1DECENTPTFNOENDVDECENDFLGRTS;AS}SDEFSJSREVALABLDAVALUESTALENLDAVALUE+1STALEN+1LDA#$FFSTAMODERTS;BMPFILSTXFILECMTXITJMPCOMMNT;A}SSINCLLDA(TEXTP),YCMP#'z'+1BCSICLXITCMP#'.'BCCICLXITSTAFNBUF,XINYINXCPX#FNSIZEBNEASSINCL;ICLXIT}LDA#EOLSTAFNBUF,XJSRBLDFNBCLCLDAFILEADC#$10BMITMINCFTAXLDA#LOW[FNBUF]LDY#HIGH[FNBUF]JSROPENINB}PLBMPFIL;TMINCFLDA#'I'STAADRERRBNECMTXIT;ASSLISTEQUCMTXIT;NOT IMPLEMENTED YETLDY#HIGH[FNBUF]JSROPENINB^;; SYMBOL TABLE FORMAT:;; BYTE 0: FLAGS AND BITS 8 AND 0 OF VALUE; BIT 7 -- ALWAYS 1; BIT 6 -- UNDEFINE}D; BIT 5 -- GLOBAL; BIT 4 -- VALUE BIT 8; BIT 3 -- VALUE BIT 0; BITS 2-0 -- ORIGIN NUMBER};; BYTE 1: BITS 7-1 OF VALUE;; BYTE 2: BITS 15-9 OF VALUE;; PRINT THE SYMBOL TABLE;PRTABERTS;PRSTABLDA#LOW[SYMT}AB]STATABPTRLDA#HIGH[SYMTAB]STATABPTR+1PRTALNJSRCLEARLDA#0PRTABLSTATXTPTRLDATABPTR+1LDXTABPTRCPXEN}DSTABSBCENDSTAB+1BCSPRTABEJSRGETVALLDXTXTPTRLDASVAL+1JSRPRHEXLDASVALJSRPRHEXINXBITSFLGSBPLSYM}DFDLDA#'U'STAPRBUF,XSYMDFDINXLDA#'L'BVCSYMLCLLDA#'G'SYMLCLSTAPRBUF,XLDA#' 'LDY#2SYMNLPINXINYS}TAPRBUF,XLDA(TABPTR),YBPLSYMNLPSTXTXTPTRCLCTYAADCTABPTRSTATABPTRLDA#0ADCTABPTR+1STATABPTR+1LDA}#0NXTCOLCLCADC#CWIDTHCMPTXTPTRBCCNXTCOLCMP#PRTLEN-CWIDTHBCCPRTABLLDA#EOLSTAPRBUF+1,XJSRLISTJMPP}RTALN;; ADD A SYMBOL AND VALUE TO THE SYMBOL TABLE;ADDSYMLDALABELBEQOLDSYMLDXVALUELDYVALUE+1LDAISVALBNE}USEVALLDXPCLDYPC+1USEVALSTXSVALSTYSVAL+1;LDX#2FESYMINXLDALABEL-3,XSTASYMBOL-3,XBNEFESYMSTXSLEN}JSRFINDBCCOLDSYMLDAENDSTAB+1STATEMP+1LDYENDSTAB;POINT TO END OF SYMBOL TABLECPFS1STYTEMPLDY#0LDA(TEM}P),Y;AND MAKE ROOM FORLDYSLEN;NEW ENTRY OF SLEN BYTESSTA(TEMP),YLDYTEMPBNEDECFS1DECTEMP+1DECFS1DEYFSNDCK}LDATEMP+1;START OF NEW SYMBOL?CPYTABPTRSBCTABPTR+1BCSCPFS1;NO, MOVE ANOTHER BYTE;LDASLENTAYADCENDSTAB};POINT TO END OFSTAENDSTAB;LONGER SYMBOL TABLELDA#0ADCENDSTAB+1STAENDSTAB+1NEWTXTDEYLDASYMBOL-3,YSTA(}TABPTR),YCPY#3BNENEWTXT;; SAVE VALUE AND FLAGS IN SYMBOL TABLE ENTRY;PUTVALLDASVAL+1LSRAPHPLDY#2STA(T}ABPTR),YLDASVALLSRADEYSTA(TABPTR),YDEYTYARORAPLPRORALSRALSRAORASFLGSSECRORASTA(TABPTR}),YOLDSYMRTS;; RECOVER VALUE AND FLAGS FROM SYMBOL TABLE ENTRY;GETVALLDY#0LDA(TABPTR),Y;GET FLAGSASLAPHA}AND$CE;EXTRACT FLAGSSTASFLGS;AND SAVE THEMPLAASLAASLAASLA;SAVE BIT 8 IN CYPHPASLA;PUT BIT 0 INTO }CYINYLDA(TABPTR),YROLA;MERGE BITS 0 AND 1-7STASVALPLPINYLDA(TABPTR),YROLA;MERGE BITS 8 AND 9-15STA}SVAL+1SYMFNDRTS;; FIND LOCATION FOR A SYMBOL IN THE TABLE;FINDLDXENDSTABSTXHIGHPLDAENDSTAB+1STAHIGHP+1LD}X#LOW[SYMTAB]STXLOWPLDA#HIGH[SYMTAB]STALOWP+1STATABPTR+1STXTABPTR;CPXHIGHPSBCHIGHP+1BCSSNFND;HALV}ESECLDAHIGHPADCLOWPSTATABPTRLDAHIGHP+1ADCLOWP+1RORARORTABPTRSTATABPTR+1LDY#0LDA(TABPTR),YBMI}GSTRT;FOUND START OF A SYMBOLNOT1STLDATABPTRBNEFBKUPDECTABPTR+1FBKUPDECTABPTRLDA(TABPTR),YBPLNOT1ST;GS}TRTLDY#3FCHRLPLDA(TABPTR),YBMIMTCHOKCMPSYMBOL-3,Y;MATCH?BCCFADVC1;TABLE ENT. < SYMBOLBNEFBKUP1;TABLE E}NT. > SYMBOLINYBCSFCHRLP;MTCHOKCLCLDASYMBOL-3,YBEQSYMFND;SYMBOL FOUND (CY=0)BNEFADVC2;FADVC1INYFADVC2}LDA(TABPTR),YBPLFADVC1CLCTYAADCTABPTRLDYTABPTR+1BCCFADVNIINYFADVNICPYHIGHP+1BCCFADVC3CMPHIGHPBC}CFADVC3STATABPTR;SYMBOL NOT FOUND (CY=1)STYTABPTR+1SNFNDRTS;FADVC3STYLOWP+1STALOWPBCCHALVE;FBKUP1LDA}LOWPCMPTABPTRLDALOWP+1SBCTABPTR+1BCSSNFND;SYMBOL NOT FOUND (CY=1)LDATABPTRSTAHIGHPLDATABPTR+1STAHIG}HP+1BCCHALVELDALOWP+1SBCTABPTR+1BCSSNFND;SYMBOL NOT FOUND (CY=1)LDATABPTRSTAHIGHPLDATABPTR+1STAHIG;; PRINT THE GENERATED CODE/SOURCE LINE;PRINTJSRCLEARLDAADRERRSTAPRBUF;LDX#2LDAISVALBMINOADDRBNEVALA!}DR;LDAPC+1JSRPRHEXLDAPCJMPLSTHLF;VALADRLDAVALUE+1JSRPRHEXLDAVALUELSTHLFJSRPRHEX;NOADDRLDALENS!}TATEMPBEQNODATALDAMODEBMINODATAJSRPROBJT;PRINT 1 TO 6 BYTES OF OBJECT CODENODATALDX#20JSRPRSRCEXCODEJSR!}LISTBMILINXITLDAMODEBMILOKXITLDATEMPBEQLINXITJSRCLEARJSRPROBJTLDA#EOLSTAPRBUF,XJMPEXCODE;LOK!}XITLDA#0LINXITRTS;; PRINT A FORMATTED LINE TO LISTING DEVICE;LISTLDACURLINEINCCURLINECMPLPP;NUMBER OF LINE!}S/PAGEBCCNONEWPLDA#' 'STAPAGE+3;BLANK OUT PAGE NO.STAPAGE+2STAPAGE+1LDA#0STACURLINE;START OF NEW PAG!}EINCCURPAGEBNEPAGEOKINCCURPAGE+1PAGEOKLDACURPAGESTAFR0LDACURPAGE+1STAFR0+1JSRIFPJSRFASCII;CONVER!}T TO ASCII STRINGLDY#$FFPGCPLPINYLDA(INBUFF),YSTAPAGE,Y;COPY TO HEADING BUFFERBPLPGCPLPAND#$7FSTAPAGE,Y!};LDX#PRUNITLDA#11;PRINT MULTIPLE LINESSTAICMD,XLDA#LOW[TTLINE]STAIBUF,XLDA#HIGH[TTLINE]STAIBUF+1,XL!}DATTLLENSTAILEN,XLDA#0STAILEN+1JSRCIOV;WRITE TITLE LINE;NONEWPLDX#PRUNITLDA#9STAICMD,X;PRINT A LIN!}E ENDING WITH EOLLDA#LOW[PRBUF]STAIBUF,XLDA#HIGH[PRBUF]STAIBUF+1,XLDA#81STAILEN,XLDA#0STAILEN+1,XJM!}PCIOV;; CONVERT NUMBER TO HEX IN PRINT LINE;PRHEXPHALSRALSRALSRALSRASEDSECSBC#9+1ADC#'9'+1STA!}PRBUF,XINXPLAAND#$0FSECSBC#9+1ADC#'9'+1CLDSTAPRBUF,XINXRTS;; CLEAR THE PRINT LINE;CLEARLDX#0C!}LLPLDA#' 'STAPRBUF,XINXCPX#80BCCCLLPLDA#EOLSTAPRBUF,XRTS;; PRINT SOURCE LINE;PRSRCLDY#0PRSCPLDA!}(TEXTP),YCMP#TABBNESTINBF;TXALDX#NTABSNXTTABDEXCMPTABTAB,XBCCNXTTABLDATABTAB+1,XTAXBCSPRBMPYSTI!}NBFSTAPRBUF,XCMP#EOLBEQGOTEOLINXPRBMPYINYCPX#80BCCPRSCPGOTEOLRTS;TABTABDB0,2,7,20,29DB35,43,51,59,!}67DB72,73,74,75,76DB77,78,79NTABS=*-TABTAB;; PRINT OUT A CHUNK OF OBJECT CODE;PROBJTLDX#7LDY#0STYTEMP+1!}OBJPRLLDAOPCODE,YJSRPRHEXDECTEMPBEQHEXITINCTEMP+1LDYTEMP+1CPY#6BNEOBJPRL;LDOUTBLDADATBUF-1+6,YS!}TAOPCODE-1,YDEYBNELDOUTB;PRNX6LDADATBUF+6,YSTADATBUF,YINYCPYTEMPBCCPRNX6;HEXITRTSLDADATBUF-1+6,YS jTITLE'6502/65C02 ASSEMBLER'SUBTTL'SOURCE = A65.MAC, 6/24/84'PRUNIT=$10;LIST OUTPUT IOCBOBUNIT=$20;OBJECT FILE IO%}CBINUNIT=$30;SOURCE FILE IOCBLISTI;INCLUDED2:ASMDEF.MAC;ORG$2000;END OF RESIDENT MYDOS 3.316OPERSDS50;EXP%}RESSION STACKSOPNDLDS50OPNDHDS50;TEXTBFDSLINLENOBJBUFDSBUFLENPRBUFDSPRTLEN+2;STARTLDA#TTLSIZESTATTLLEN%}LDX#$FFSTXCURLINEINXSTXCURPAGESTXCURPAGE+1STXTTLFLGLDA#59;DEFAULT LINES/PAGESTALPPLDA#'A'STAEXT%}TXTLDA#'S'STAEXTTXT+1LDA#'M'STAEXTTXT+2JSRPROMPTDB'Source file = ',0DWINF;LDA#'O'STAEXTTXTLDA#%}'B'STAEXTTXT+1LDA#'J'STAEXTTXT+2JSRPROMPTDB'Object file = ',0DWOUTF;LDA#'L'STAEXTTXTLDA#'S'STA%}EXTTXT+1LDA#'T'STAEXTTXT+2JSRPROMPTDB'List file = ',0DWPRF;LDA#1;FIRST PASS IS 1STAPASSNO;SECOND PA%}SS IS 0;LDA#LOW[SYMTAB]STAENDSTABLDA#HIGH[SYMTAB]STAENDSTAB+1LDX#$FFSTXSYMTAB;LDAPRF+2CMP#'-'BEQ%}NOPRNTLDX#PRUNITLDA#LOW[PRF]LDY#HIGH[PRF]JSROPNOUTBMIABORT;NOPRNTLDA#'A'STAEXTTXTLDA#'S'STAEXTTXT%}+1LDA#'M'STAEXTTXT+2;PASSLPLDA#0STAENDFLGSTAENTPTFSTAINIFLGLDX#INUNITSTXFILELDA#LOW[INF]LDY#HI%}GH[INF]JSROPENINBMIABORT;LOOPLDA#$00STASFLGSSTALABELJSRREADLNBMICKEOFJSRGENCODE;GENERATE CODE/DO D%}IRECTIVEJSRADDSYM;IF LABEL DEFINED, ADD TO SYM/TABLDAPASSNOBNENOPLIN;IF NOT PASS 2, SKIP PRINTINGLDAICMD-2+PR%}UNITBMINOPLINJSRPRINT;LIST LINE TO PRINTERBMIABORTNOPLINLDAENDFLGBNEASDONE;CLCLDALENADCPCSTAPC%}LDALEN+1ADCPC+1STAPC+1JMPLOOP;ABORTLDXFILECLINFSJSRCLOSEFTXASECSBC#$10TAXCPX#INUNITBCSCLINFS%}BCCABXIT;CKEOFCPY#136;IS THIS EOF?BNEABORT;IF SO, THEN TREAT AS 'END'ASDONELDXFILEJSRCLOSEFCPX#INUNIT%}BNEENDINCLDECPASSNOBPLPASS2ABXITJMPASMXIT;ASSEMBLY DONE, GO WRAP UP!;PASS2LDX#OBUNITLDA#LOW[OUTF]LDY#HI%}GH[OUTF]JSROPNOUTBMIABORT;LDA#$FFSTAOBJBUFSTAOBJBUF+1LDA#2STAILEN,XLDA#0STAILEN+1,XSTAOBJPTR%};NO DATA IN BUFFER YET (LEN=0)LDA#11STAICMD,XLDA#LOW[OBJBUF]STAIBUF,XLDA#HIGH[OBJBUF]STAIBUF+1,XJSRCIOV%}BMIABORTJMPPASSLP;ENDINCLTXASBC#$10STAFILELDAENDFLGBNEASDONEJMPLOOP;ASMXITLDAENTPTFBEQNOENTVL%}DX#2LDA#LOW[RUNVEC]STAPCLDA#HIGH[RUNVEC]STAPC+1LDX#2LDAINIFLGBEQVECT2LDX#4LDAINIPTSTAOPCODE+2%}LDAINIPT+1STAOPCODE+3;VECT2LDAENTPTSTAOPCODELDAENTPT+1STAOPCODE+1JMPWRVECT;NOENTVLDAINIFLGBEQNOIN%}IVLDAINIPTSTAOPCODELDAINIPT+1STAOPCODE+1LDA#LOW[INIVEC]STAPCLDA#HIGH[INIVEC]STAPC+1LDX#2WRVECTST%}XLENJSRCODOBJ+4LDX#VECLLCPYVLLDAVECLIN-1,XSTATEXTBF-1,XDEXBNECPYVLJSRPRINT;PRINT VECTOR CODE LINENOIN%}IVLDYOBJPTRBEQNOOBJBJSRWRTOBJNOOBJBLDX#OBUNITJSRCLOSEFLDAICMD-2+PRUNITBMINOPSYMLDA#' 'STAPRBUFLDA%}#EOLSTAPRBUF+1JSRLISTJSRPRSTAB;PRINT SYMBOL TABLELDX#PRUNITJSRCLOSEFNOPSYMJMP(DOSVEC);AND RETURN TO DOS%};VECLINDB'<<< RUN/INIT VECTORS >>>',$9BVECLL=*-VECLIN;INCLUDED2:OPCODE.MACINCLUDED2:DATA.MACINCLUDED2:DIREC.%}MACINCLUDED2:EXPR.MACINCLUDED2:SYMBOLS.MACINCLUDED2:PRINT.MACINCLUDED2:OBJECT.MACINCLUDED2:INPUT.MAC;; CLOS%}E A FILE;CLOSEFLDA#12STAICMD,XJMPCIOV;; OPEN A FILE FOR INPUT;OPENINSTYTEMPPHAJSRCLOSEFLDA#4DOPENS%}TAIAUX,XPLASTAIBUF,XLDATEMPSTAIBUF+1,XLDA#3STAICMD,XJMPCIOV;OPEN INPUT FILE;; OPEN LIST OR OBJECT F%}ILE;OPNOUTSTYTEMPPHALDA#12STAICMD,XJSRCIOVLDA#8BNEDOPEN;; READ A LINE INTO THE TEXT BUFFER; AND INI%}TIALIZE THE TEXT POINTERS;READLNLDXFILE;READ SELECTED FILELDA#5STAICMD,XLDA#LINLENSTAILEN,XLDA#0STAIL%}EN+1,XSTATXTPTRLDA#LOW[TEXTBF]STAIBUF,XSTATEXTPLDA#HIGH[TEXTBF]STAIBUF+1,XSTATEXTP+1JSRCIOVLDAILEN%},XTAXLDA#EOLSTATEXTBF,XTYARTS;TTLINEDB$0C;FORMFEEDTITLEDB' 'DB' %} ',' Page 'PAGEDB' ',EOLSUBTTLDB' 'DB' %} ',' (C) 1984',EOLDB' 'DB' ','WORDMARK Systems',EOLTTLSIZE=%}*-TTLINE;; NON-ZERO PAGE RAM;CURLINEDS1LPPDS1CURPAGEDS2TTLLENDS1TTLFLGDS1ENDFLGDS1ENTPTFDS1INIFLG%}DS1ENTPTDS2INIPTDS2EXTTXTDS3INFDSFNSIZEDS1OUTFDSFNSIZEDS1PRFDSFNSIZEDS1DATBUFDSSTRMAXDS6FN%}BUFDSFNSIZEDS2LABELDSSYMSIZDS2;SYMTABENDSTARTTFDSFNSIZEDS1PRFDSFNSIZEDS1DATBUFDSSTRMAXDS6FN$=DSGRPLDY#STRMAXLDA#' 'CLRSTRSTADATBUF-1,YDEYBNECLRSTR;LDYTXTPTRDEXBEQGETTTLDEXBEQGETSTLDEXBEQ)}DEFWOPDEXBEQDEFBOPDEXBEQDEFCOPDEXBNEDATXITJMPDOEJECTDATXITRTS;DEFWOPJSREVALABLDAVALUELDXLENST)}ADATBUF,XINXLDAVALUE+1STADATBUF,XINXSTXLENDEYLDA(TEXTP),YINYCMP#','BEQDEFWOPBNEEXITWS;GETTTL)}LDA#2BNETTLSGETSTLLDA#1TTLSBITTTLFLGBEQDOTTLLDXPASSNOBNEIGNTTLDOTTLTAXLDATTLCODE,XORATTLFLGSTAT)}TLFLGBNEDEFBOP;DEFCOPLDA#$80BMIDEFBENDEFBOPLDA#0DEFBENSTAMODELDX#0DEFBLPLDA(TEXTP),YCMP#$27;STARTIN)}G QUOTE?BEQQTSTRCPX#STRMAXBCSTOLONGJSREVALABLDAVALUELDXLENSTADATBUF,XINXDEYENDBSSTXLENLDAMODE)}EORDATBUF-1,XSTADATBUF-1,XLDA(TEXTP),YINYCMP#','BEQDEFBLPEXITBSBITTTLFLGBMILDTITLBVSLDSTTLEXITWSLD)}X#6CPYTXTLDADATBUF-1,XSTAOPCODE-1,XDEXBNECPYTXTSTXMODEJSRDATOBJIGNTTLCLCRTS;QTSTRINYLDA(TEXTP),Y)}CMP#$27;END QUOTE?BEQCLQUOTSTADATBUF,XINXCPX#STRMAXBCCQTSTRSTXLEN;TOLONGLDA#'S'STAADRERRBNEEXIT)}BS;CLQUOTINYBNEENDBS;LDTITLLDX#60LDTITALDADATBUF-1,XSTATITLE-1,XDEXBNELDTITATTLXITSTXLENLDA#$80S)}TAISVALLDATTLFLGAND#3STATTLFLGRTS;LDSTTLLDX#60LDSTTALDADATBUF-1,XSTASUBTTL-1,XDEXBNELDSTTABEQTT)}LXIT;DOEJECTLDACURLINEBEQALREADYLDA#$FFSTACURLINE;FORCE A PAGE EJECTALREADYJSRIFARGBCCNOARGJSREVALAB)}LDAVALUE+1BNETERRORLDAVALUEBMITERRORSTALPPNOARGCLCRTS;IFARGJSRNXTFLDCMP#EOLBEQNOARGCMP#';'BE)}QNOARG;TERRORSECRTS;TTLCODE=*-1DB$41,$82PPNOARGCLCRTS;IFARGJSRNXTFLDCMP#EOLBEQNOARGCMP#';'BE(6 TAX TXA LDX #2 TITLE $0E,'A TITLE š',$0FORG$44ZP1 = $20ZP2 DS 4ZP3 DS 1;ORG$1000STRINGDC'THIS'-}BYTESDB7,'1',$12,%11001WORDSDW1,2DW 3,4LIST-L THIS ;IS AN ERROR, SHOULD BE PRINTED;THIS IS NOT, IT SHOULD NO-}T BE PRINTEDITEMM2 LDA ($40),Y LIST L ;RESTORE LISTING, TWO BYTES HAVE BEEN GENERATED;ITEM LDA #LOW $567-}8 SUBTTL 'THE REAL SUB-TITLE, BURIED IN THE MIDDLE' TITLE 'AND A SECOND TITLE' PAGE 20 DC 'THIS IS A STRING WITH L-}OTS OF STUFF AND ' DC 'WITH THE PARITY BITS TURNED ' LDA (ZP1),Y LDA (ZP1,X) JMP (ZP3) JMP (ITEM) LDA (ZP1) ST-}A HIGH[$3412] BRA ITEMLABEL BRA LABEL BEQ NEWLABELNEWLABEL ADC #3+1 SBC #3-1 JMP NEWLABEL-5TESTEQ=12ANOTH-}ER = 100 LSR [LABEL-1] PAGE ENDBADERROR LDA NEWLABEL ;THIS FOLLOWS THE END AND SHOULD NOT BE INCLUDED AT ALLQ=12ANOTH,sTITLE'6502/65C02 ASSEMBLER'VAL=1*1VAL8=8*1VAL9=1*8VAL64=8*8PRUNIT=$10;LIST OUTPUT IOCBOBUNIT=$20;OBJECT1} FILE IOCBINUNIT=$32/5;SOURCE FILE IOCBLISTIPRTLEN=80;PRINT LINE WIDTHBUFLEN=[256+6];MAX SIZE OUTPUT RECORDCW1}IDTH=[SYMSIZ]+9PRF=$1234;ORG$4000LDX#PRUNITSTXPRFILELDA#LOW[PRF+5]LDY#HIGH[PRF+5]LDA[$300+5]*3END11},$300+5*6MSIZ]+9PRF=$1234;ORG$4000LDX#PRUNITSTXPRFILELDA#LOW[PRF+5]LDY#HIGH[PRF+5]LDA[$300+5]*3END10 R"M#ٍv3r3t3u3w3;s3A3S3M3 _1Source file = 3O3B3J3 _1Object file = 3L3S3T3 _1List f5}ile = 3W4W43- 3 [20\A3S3M3x3y3z303 ?205M4 j209 % <. P0 [/0x3$e5}eN#I$L# 7280즛 720=ƆL# 3 [20ѩ HI BD E V0L#x3аL#y3*5}z3 }3~3{3|3L$z3'}3~3Ⅵ 0;$ [/ 1 72P0 "" / - 72l 5}<<< RUN/INIT VJ$E%ECTORS >>>ADCANDASLBCCBCSBEQ BITBMIBNEBPLBRABRKBVCBVSCLCCLDCLICLVCMP6}CPXCPYIDBJDCDECDEXDEYCDSHDWBENDEORAEQUEINCLUDEINCINXINY JMP JSRLDALDXLDYDLISTLSRNOPORA6}@ORGKPAGEPHAPHF%A&PPLAPLPROLRORRTIRTSSBCSECSEDSEISTASTXSTYGSUBTTLTAXTAYFTITLETSXTXA6}TXSTYAM4` - L4 - -;ʪ0=煂$ -LS& - -T$ȱee6}0ȵтOB&='`Ġ斱@L( &E)eeL0 +奅Ɖ妅ƈ i6} ŘV`(, +)cL' +LP' +L' 誅Aȱ0{ʈ#~( +Y,5ȱ6}YDX.8`Ɩ +􈱀,t)>'9(,}ȱY۩L' ieYʦ!O СƖ,IȱXթ6Ɩ +6} ŘVȱXЦȱ)П`x 301 F?L(` +3襉3膖,S,w36}S( w3w30'9xF +:(5)3舆]33,,w30-pE3 0`ȱ'3x񆖩Sн<36}2w3)w3`<32r3r3 ( +0s3` -ɛ;8`AƖ)?%(ZiiL' +`6 } +`;+ɛ' +,}3~3z3ܥ6)1*{3|3y3x3` +`L%{ . 9494 1i0 94 ?6 }2ϩI˽1 c b H0 h )ƒ )ƒ`& Heeh`1 c 0 Hb h$0 &`H6 })hŊ&&(H勪hFfƒ`0 }1 0 b 2*-+}c b L*80 1 0 b c b L*81 1 c c L*+-!*/6 })%7&D|UƬƫ ` )0 b L* )0 b L* )Hb h0 L*0 =1 0 b =c b L*0 1 0 b c b L*L6 }2O,W$ 8`HIG H`.+),Hc 1 c ALH[ȩ@-[8`! L+6}[ @ e*`ƫL+ - - + * ,2 d 欱->+:*g/c%_&B|w]𖦫 [ e*`Ƭ6}82 d ` %[@ e*` ! e*`L+*,%- +-[@ e*` Խ!& e*` 6}. .$0 `U -ѱ$@ȱg5aWG)A7 :00&&&&L,`8`%L@\*x6}':0:00H& & &eeheeȱL,&-!.ȱ01П&&L&-ȱ800&&&L:-6}ȱ'҅'Ʌ'SL,{a[A镜豀:0蕛`ɛ ȱ ``W4 K06}兰 . .0 .0$U"LPG" ȝ"ee"./iř?" /L-M4r6}J4 .QƓĂ僰祐eeJJj(jJJ8j` H%΅h  ȱ*(ȱ6}*`W4娰T8eejf0 ƃƂ0 ٙ ,Ȱ/0ȱeĨ ŧ`6}ł僰壟 K0"0 .0L|/ .0 .00 0 ]0 /00 K0 0"L/`r3r3s3V 226}2r3t3u3t3ԭu3 ؠȱ2)2 BD2Ev3HI V B01D"EQHILVHJJJJ8 i:"6}h)8 i:؝"` "P"`݂00"ɛP`#+3;CHIJKLMNO .0ƒ擤336}3Ē` 03 1` 0 1`m ť 1 ` 12H m  8hi6}HI V0 Ȍ  `l hh BHI Ȅ V䤒ȱȱBHI9D4E V0 16}ȹ94eiHH`94#ȹ3940.󩛙94 :.Ɠȹ94肋 .94ȭ394ȭ392 34ȭ394ȩ9494;46}D94::4` BLV䄒H 72JhDEBLV䄒H B VݦBdHID E VH ` 6} Page 3q3 6} (C) 1984 WORDMARK SystemsR" 3q3 4YR"Q#ٍv3r3t3u3w3;s3A3S3M3 _1Source file = 3O3B3J3 _1Object file = 3L3S3T3 _1List f:L}R"Q#ٍv3r3t3u3w3;s3A3S3M3 _1Source file = 3O3B3J3 _1Object file = 3L3S3T3 _1List f>!}ile = 3W4W43- 3 [20\A3S3M3x3y3z303 ?205M4 j209 % <. P0 [/0x3$e>"}eL#R#Q$ 7280즛 720=ƆL# 3 [20ѩ HI BD E V0L#x3аL#y3*>#}z3 }3~3{3|3L$z3'}3~3Ⅵ 0;$ [/ 1 72P0 "" / - 72l >$}<<< RUN/INIT VECTORS >R$Q%>>ADCANDASLBCCBCSBEQ BITBMIBNEBPLBRABRKBVCBVSCLCCLDCLICLVCMP>%}CPXCPYIDBJDCDECDEXDEYCDSHDWBENDEORAEQUEINCLUDEINCINXINY JMP JSRLDALDXLDYDLISTLSRNOPORA>&}@ORGKPAGEPHAPHPPLAPLPR%Q&ROLRORRTIRTSSBCSECSEDSEISTASTXSTYGSUBTTLTAXTAYFTITLETSXTXA>'}TXSTYAM4` - L4 - -;ʪ0=煂$ -LS& - -T$ȱee>(}0ȵтOꅇ`R&Q'Ġ斱@L( &E)eeL0 +奅Ɖ妅ƈ i>)} ŘV`(, +)cL' +LP' +L' 誅Aȱ0{ʈ#~( +Y,5ȱ>*}YDX.8`Ɩ +􈱀,t)ȱ,}ȱY۩L' R'Q(ieYʦ!O СƖ,IȱXթ6Ɩ +>+} ŘVȱXЦȱ)П`x 301 F?L(` +3襉3膖,S,w3>,}S( w3w30'9xF +3舆,,w305pR(Q)M]333 0`ȱ'3x񆖩Sн<3>-}2w3)w3`<32r3r3 ( +0s3` -ɛ;8`AƖ)?%(ZiiL' +`>.} +`;+ɛ' +,}3~3z3ܥ{3|3y3x3` +R)Q*`L%{ . 9494 1i0 94 ?>/}2ϩI˽1 c b H0 h )ƒ )ƒ`& Heeh`1 c 0 Hb h$0 &`H>0})hŊ&&(H勪hFfƒ`0 }1 0 b }c b L*80 1 0 b c b L*8R*Q+1 1 c c L*+-!*/>1})%7&D|UƬƫ ` )0 b L* )0 b L* )Hb h0 L*0 =1 0 b =c b L*0 1 0 b c b L*L>2}2O,W$ 8`HIG H`Hc 1 c ALH[ȩ@R+Q,-[8`! L+>3}[ @ e*`ƫL+ - - + * ,2 d 欱->+:*g/c%_&B|w]𖦫 [ e*`Ƭ>4}82 d ` %[@ e*` ! e*`L+ +-[@ e*` ԽR,Q-!& e*` >5}. .$0 `U -ѱ$@ȱg5aWG)A7 :00&&&&L,`8`%L@\*x>6}':0:00H& & &eeheeȱL,ȱ01П&&L&-ȱ800&&&R-Q.L:->7}ȱ'҅'Ʌ'SL,{a[A镜豀:0蕛`ɛ ȱ ``W4 K0>8}兰 . .0 .0$U"LPG" ȝ"eeiř?" /L-M4rR.Q>9}/J4 .QƓĂ僰祐eeJJj(jJJ8j` H%΅h  ȱ*(ȱ>:}*`W4娰T8eejf0 ƃƂ0 ٙ ,ȰȱeĨ ŧ`ł>;}僰R/Q0 K0"0 .0L|/ .0 .00 0 ]0 /00 K0 0"L/`r3r3s3V 22><}2r3t3u3t3ԭu3 ؠȱ2)2 BD2Ev3HI V BD"EQHILVHJJJJ8 i:"h)8>=} i:؝"` "R0Q1P"`݂00"ɛP`#+3;CHIJKLMNO .0ƒ擤33>>}3Ē` 03 1` 0 1`m ť 1 ` H m  8hiH>?}I V0 Ȍ R1Q2 `l hh BHI Ȅ V䤒ȱȱBHI9D4E V0 1>@}ȹ94eiHH`94#ȹ3940.󩛙94 :.Ɠȹ94肋 .94ȭ394ȭ394ȭ394ȩ9494;4>A}D94::4` BLV䄒H 72JhDER2Q3BLV䄒H B VݦBdHID E VH ` >B} Page (C>C}) 1984 R3q3 WORDMARK SystemsR" (C<Y#$WkNAMEADSTARADENADCUDATXXA BXA6A7A7A8@4 @BE} P6-A 6-BXZ;@ ,d MEMORY VERIFIERi33@9@@BF} D2:A65.OBJn++@@ D2:A65.BINs A0x AP AP 6- AP 6-BG} 6-)@F:,A6-%@A A0@ DONE!BH})@)@6-AV$%$"  MISMATCH AT ,6-P:'AV,6 A@6-&AVBI}$J AT  IS ^ 6-F:,h Ar  VS. | 6- A  A6-P:'@BJ},6-&$@!@ 6-%@!@ 6-%@ >:@H%,>:@H%,$BK} D2:BOCMP.BAS$@!@ 6-%@!@ 6-%@ >:@H%,>:@H%,$@ile = 3W4W43- 3 [20\A3S3M3x3y3z303 ?205M4 j209 % <. P0 [/0x3$e:M}eL#R#Q$ 7280즛 720=ƆL# 3 [20ѩ HI BD E V0L#x3аL#y3*:N}z3 }3~3{3|3L$z3'}3~3Ⅵ 0;$ [/ 1 72P0 "" / - 72l :O}<<< RUN/INIT VECTORS >R$Q%>>ADCANDASLBCCBCSBEQ BITBMIBNEBPLBRABRKBVCBVSCLCCLDCLICLVCMP:P}CPXCPYIDBJDCDECDEXDEYCDSHDWBENDEORAEQUEINCLUDEINCINXINY JMP JSRLDALDXLDYDLISTLSRNOPORA:Q}@ORGKPAGEPHAPHPPLAPLPR%Q&ROLRORRTIRTSSBCSECSEDSEISTASTXSTYGSUBTTLTAXTAYFTITLETSXTXA:R}TXSTYAM4` - L4 - -;ʪ0=煂$ -LS& - -T$ȱee:S}0ȵтOꅇ`R&Q'Ġ斱@L( &E)eeL0 +奅Ɖ妅ƈ i:T} ŘV`(, +)cL' +LP' +L' 誅Aȱ0{ʈ#~( +Y,5ȱ:U}YDX.8`Ɩ +􈱀,t)ȱ,}ȱY۩L' R'Q(ieYʦ!O СƖ,IȱXթ6Ɩ +:V} ŘVȱXЦȱ)П`x 301 F?L(` +3襉3膖,S,w3:W}S( w3w30'9xF +3舆,,w305pR(Q)M]333 0`ȱ'3x񆖩Sн<3:X}2w3)w3`<32r3r3 ( +0s3` -ɛ;8`AƖ)?%(ZiiL' +`:Y} +`;+ɛ' +,}3~3z3ܥ{3|3y3x3` +R)Q*`L%{ . 9494 1i0 94 ?:Z}2ϩI˽2 d 1 Hc h )ƒ )ƒ`& Heeh`2 d 1 Hc h$0 &`H:[})hŊ&&(H勪hFfƒ`0 }1 0 b }c b L*80 1 0 b c b L*8R*Q+1 1 c c L*+-!*/:\})%7&D|UƬƫ ` )0 b L* )0 b L* )Hb h0 L*0 =1 0 b =c b L*0 1 0 b c b L*L:]}2O,W$ 8`HIG H`Hc 1 c ALH[ȩ@R+Q,-[8`! L+:^}[ @ e*`ƫL+ - - + * ,2 d 欱->+:*g/c%_&B|w]𖦫 [ e*`Ƭ:_}82 d ` %[@ e*` ! e*`L+ +-[@ e*` ԽR,Q-!& e*` :`}. .$0 `U -ѱ$@ȱg5aWG)A7 :00&&&&L,`8`%L@\*x:a}':0:00H& & &eeheeȱL,ȱ01П&&L&-ȱ800&&&R-Q.L:-:b}ȱ'҅'Ʌ'SL,{a[A镜豀:0蕛`ɛ ȱ ``W4 K0:c}兰 . .0 .0$U"LPG" ȝ"eeiř?" /L-M4rR.Q:d}/J4 .QƓĂ僰祐eeJJj(jJJ8j` H%΅h  ȱ*(ȱ:e}*`W4娰T8eejf0 ƃƂ0 ٙ ,ȰȱeĨ ŧ`ł:f}僰R/Q0 K0"0 .0L|/ .0 .00 0 ]0 /00 K0 0"L/`r3r3s3V 22:g}2r3t3u3t3ԭu3 ؠȱ2)2 BD2Ev3HI V BD"EQHILVHJJJJ8 i:"h)8:h} i:؝"` "R0Q1P"`݂00"ɛP`#+3;CHIJKLMNO .0ƒ擤33:i}3Ē` 03 1` 0 1`m ť 1 ` H m  8hiH:j}I V0 Ȍ R1Q2 `l hh BHI Ȅ V䤒ȱȱBHI9D4E V0 1:k}ȹ94eiHH`94#ȹ3940.󩛙94 :.Ɠȹ94肋 .94ȭ394ȭ394ȭ394ȩ9494;4:l}D94::4` BLV䄒H 72JhDER2Q3BLV䄒H B VݦBdHID E VH ` :m} Page (C:n}) 1984 R3q3 WORDMARK SystemsR" (C8YL   X c0C)HCCH Mhhݩh `CmDiCD`  RWHFp}   * 1H0@WP Y0.`i`#(PMRRz \  P 7i w Fq}0 [  @  ՠ]   0DDԝLFr}iFs} D?Ft}Fu}Fv}Fw}AVERS O  )?JH)  * J j *  hJJJ )HJ   h i @ YSFx} S0 i` I B*a)L3  C )aPE 5 L(G :  k l Yd NklkFy}L; ( : wLF(0i( yL E0W +)&IC   H 8 Ch j i  :c 8gh CDFz}LH ^CFe M  LF Ia)LMed%")dF$F$ 5 Y)ݨF/Șe]dijЮЉF{}/A! Ka)Jed/0 ^۬"))d$F$F 5 L $eF@cc(Ldee$$%8(d()` IF|} - :LF Ia)$>c,  kC l ) @aL\>c L C )b i jE`cekl`LF}}H:$ȱ$@+[_#{ - Խnm! ii - : I t   C H h  B F~} DȰ - y C   DL\ : 1 z  Y`LH ,/ -C )/  D? ̩/ F}gh/LBc0?MhLg cMjLi zNdeLFLHgLhMeNLF I"&*F}ըSH]H` Z" )  FȑF! /GF \H"+0**! F sɐLHgFLF} *g [ JJjD+)+, g)1JJJg(g*h   ghghFgȱFh=F}g!H < I9 9 H8ZjF7 8 D 6  <    1imn D DffF}FLHv*&!t*aD { 0d [:0[`t 0I$$%()()&JH h [$% [8F}i8$(%)0hhhH ] h`() 0H 0h`hh&JJ ] (ll B LH qghHH 9 9F} HghH߽ghg I9 9    H 1 8 Ch g   FghLuF} F E E`LFuF e0HF/eɛe׽`E  D _  FɛL FREE SECTOF}RS C H) *Fh ):FȽ F FC  /HH HdHCD0I8HDCHIII//FIhեH 0F}/Fȩ/F.e`.nim$:H !A SmnHȱ$*?ȝ 2. ? [_{ (0F}):% 0$:WI  IЦ,LHH 0hLC ) m n`C ?(  0(.` )E  F}R o!  S0C [ bEE v C 0) ? 0E08j2458jJ3)1) 1F}x(420J(0241 өX.`8FG \hg (Lc bI` jFȽiFȽbe(F}I}IF 0=kligjhijed`cc0  c aLW ijI : 07bI FJJ`' QF}FjȱFiȱFHbh0})Hhd`LWB!48``EE v )8. oD}mni( ɃũLH_! ) ^F} :_`^^_8 oh  mm (g (!` L\CJfCJfCJfCDfC` ^ F}  ` `g)8jHgiPhiJIjFIjFIjhFI` ^ I I LH8j Y 8j F}Y &I &I &IHeH.iIij   `!.莼 2Jjj }.f Ȉ!f FG`F} [ ɩLH x  c Hb4 \ Ȍ  8 iI0 h !`F}C Y-.`DOS SYS BI `C ) ۩.C/`0.ff, 9\   ,F}<,  ' '0 l , BLVDE`8hhJ ȱHȱIȱBȱDȱEeeHF}HLV  ,#,0&,p+  0  !  '   LB$  V0 s s,pPF Խ٩F}׆  0`l, 0  !LD1:AUTORUN.SYSD1:MEM.SAVE:D1:DUP.SYSF}C )0 )Cɛ B0  )0 }`C)C JCI fCI HC Ix,0 X`F} FG ȄFC)  )ECI  DDCFC)0C ) 0 }0`,0,9 50HHJJJ0F}++h0 )DD`8GF8IHީ ]0 E _R@  LY䭥0`D* @F}`,pEix X` RHU 2hRE< Lm4өHI F}<`") J IHHH``,`p` 50-` ) ]0{Q}X ELsxHIFGҩxҭ)F}ҍҹҍҩҍҍҍҠ Q )) XL*+L*+F}*`,p*)Js Q*Jj 2U*J)P %*I 2L} *{ ]0zW" Y0G S F}ȌZLY,lHH @ >ؘHHI ) *ȹ ҄HI%) %ҥ ,hh@ؘH hh@ ҤG F}ҍ I)DFG FD`҄E`,0,0P0,,hh` 0`i~ h>!Ӄ2.PPF}pQ >Q>UP2 LE=. oGnV(HI%) %ҥ ,hh@ؘH hh@ ҤF}G ҍ I)DFG FD`҄E`,0,0P0,,hh` 0`i~ h>!Ӄ2.F}PPpQ >Q>UP2 LE=. oGnV(yF} LE=. oGnV(yDA65 (A very simple 6502 assembler)The A65 assembler is modeled after the Atari MACRO Assembler (AMAC) thatwas distributed J}by APX along with the MEDIT editor and the DDT debugger.The most significant thing about it is that the source files cannot J}containline numbers (so editors that use line numbers must be able to write anunnumbered output file). A second characteriJ}stic is that it is a disk-to-disk assembler (the source must be in a disk (or cassette) file and theobject cannot be insertJ}ed directly into memory.The assembler is run from the DOS menu using the 'L' command, and promptsyou for the source file nJ}ame, the object file name and the listing filename: a RETURN in response to the object and listing prompts will causethe aJ}ssembler to generate files on the same drive with extensions '.OBJ'and '.LST' using the same file name as the source file. J}If no '.' appearsin the source file name, '.ASM' is its assumed extension. A listing canbe printed directly by specifying J}'P:' as the list file or dumped to thescreen by specifying 'E:'. A '-' should cause the listing to be omitted,and it does,J} but it also results in the object file being garbled(???).Some of the 65C02 opcodes are implemented, but they have not beeJ}n testedvery thouroughly. Otherwise, the machine instructions are as any otherstandard 6502 assembler would expect. ExpreJ}ssions can include +, -, *and / operators as well as HI[] and LO[] functions to extract the high andlow bytes of 16-bit numJ}bers. Brackets, [ and ], may be used to group termsin an expression if necessary. Symbols may have up to 8 characters.ThJ}e assembler directives are:DB defines a byte, in decimal (12), hex ($0C), octal (@14) or binary (%00001100) anJ}d may also be a character string (enclosed in quotes)DC defines a byte, as above, but with the high bit set (if defininJ}g a string, only on the last byte of the string)DW defines a word, low byte first, as if an indirect pointerDSJ} allocates a number of bytes without storing any data in themEND terminates the program and specifies INIT and RUN J}addressesEQU defines a symbol to have a specific value= same as EQUINCLUDE causes the file specified to be inserJ}ted at this point in the assembly (cannot be nested)ORG sets the location counter to a fixed address*= samJ}e as ORGPAGE causes the assembler to go to the top of th next listing pageSUBTTL allows entering a second title lineTIJ}TLE specifies the first title lineOctal numbers, EQU, *=, and INIT and RUN addresses may have bugs in them --good luck. J} Most of the rest has been debugged reasonably well.The END statement can have the following forms: END J} no RUN or INIT vectors generated at all END ADDR ADDR is the RUN entry point END ADDR, ADDR isJ} the INIT entry point (no RUN vector) END INIT,RUN both vectors specified(This is what I call minimum documentatJ}ion, I will add to it as questionsare asked) Charles Marslett 8/21/85ntatHy/FYAAUA0@d,,@@ D2:TEST.OBJx A6-N}56-)@(6-@5)@(\:$AV%, %6-%@% @A0(N} A0"A 6.\:$AV%,(7@<,( D2:DUMPTESTA0(Lmr@( (.\:$AV%,(7@<,( D2:DUMPTESTA0(P*r@( (.\:$AV%,(7@<,( D2:DUMPTESTA0(T*