þþIdX;nX;-----------xX;I/O CONTROL‚X;-----------ŒX;–X;Print to command window X;ª…PCOMWP„INDR;;save address´ '„INDR¾%>ȃPCAQ@„INDR7;;get a charÒP…COMND8;;on screenÜR>;;a '?'?æFƒPCN;;yes. done.ð3;;up countúHƒPCA;;try againƒPCN:;;leaveX;X;Position cursor at line 15"X;, …POS15Q>6 P†ROWCRS@:JX;TX;Scroll Screen?^X;h†SCROLLQ†ROWCRS;;Y-posrR>;;14th line?|H„SCRL;;no.†…SCRL2 †MOVE32;;yes. scrollQ> ;;pos. 13š P†ROWCRS¤„SCRL!„IOL3;;print buffer®X;¸X;Pause screen scrollÂX;Ì…PAUSEQ‚CH;;key scanÖR>ÿ;;no touch?àF†CLRKEY;;yes.ê †CLRKEY;;clear it.ôR>;;was it ESC?þFƒPA2;;yup.R>!;;space bar?H†CLRKEY;;no. †CLRKEY;;clear.&ƒPA3Q‚CH;;wait again0R>!;;space?:F†CLRKEY;;yes.D R>;;ESC?NHƒPA3;;no. wait.XƒPA27;;have an ESC.b7;;pull RTSlX;vX;Clear key€X;Š†CLRKEY5;;save A”Q>ÿ;;clear CHžP‚CH;;to no touch¨7;;restore A² :;;leave.¼X;ÆX;Page thru DisaÐX;Ú †PGTHRUQ>4„PGTR;;print optionä%>5„PGTR;;Up or Down?î …PCOMWø„PGL2 †GETKEY;;get choice R> U;;Up? H„TDN?;;no.Q>;;put scroll up P…PGWAY;;flag*H†PGLOOP;;do it!4„TDN?R> D;;Down?>H„PGL2;;no.HQ>;;insert scrollRP…PGWAY;;down flag\†PGLOOP †CLRCMD;;clear stufff †CLRWINp…PGJSR …PAUSE;;scroll!z Q…PGWAY„F„DWAY;;pause screen?Ž …SCRUP;;do again.˜ !…PGJSR¢„DWAY …SCRDN¬ !…PGJSR¶X;ÀX;Disassemble to a deviceÊX;Ô †DISDEV †COPFIL;;get filenameÞ „GADR;;and start adrèQ>;;open IOCB forò ‡OPENFIL;;write onlyüQƒFR0;;copy in adr P„ADDR QƒFR0 P„ADDR$ƒOLP ‡DISAMEM;;disa a line.Q> ;;remove arrow8P…MYBUF;;in disaBQ…MYBUF;;LIƒDPRV „INV2`ƒDPR †DPRINT;;print itj ‡ERASTAT;;clear linet …POS15;;on status~Q>ƒEOL;;set so onlyˆP…MYBUF;;addr is shown’ „IOL3;;print disaœ Q‚CH;;key?¦R>ÿ;;no touch?°FƒOLP;;yes. go againº †CLRKEY;;clear itÄ ‡ERASTAT;;clear lineÎ!†DCLOSE;;close IOCBØX;âX;Get deviceìX;ö†GETDEV †CLRWIN;;no junkQ>4‡DEVNAMS;;copy devices %>5‡DEVNAMS;;onto the …PCOMW;;screen„DEV2 †GETKEY;;get a key( R>;;ESC?2H…FNDEV;;no.<7;;pull of the 2F7;;RTS's fromP7;;the stackZ7d:;;and leaven…FNDEV%>;;check if legalx„DEV3R„DEVS8;;device‚F†HAVDEV;;got one!Œ1;;not this–I„DEV3;;try next one  †GOTERR;;sorry wrongª!„DEV2;;go again´†HAVDEV:;;bye.¾X;ÈX;Scroll downÒX;Ü…SCRDN$>;;check if scræƒSCKA;;has info allðT?;;the way downú?;;to the lastQ„SCRN8;;screen line.P„TEMP;;get the lineQ„SCRN8;;address from"P„TEMP;;table.,%>;;zero index6Q@„TEMP7;;get a char@F…DOWHL;;have a spaceJ2;;try next lineT(>;;at 14 yet?^ HƒSCK;;no.h †FINLINr …SCRL2|$>;;copy the addr†ƒGX1Q†MYSCRN9;;from the scr †IC2ASC;;into mybufšR> ;;a space?¤FƒGX2;;yes, done.®P…MYBUF9;;save it¸2;;next charÂHƒGX1̃GX2Q>ƒEOL;;insert EOLÖP…MYBUF9;;in mybufà%>ê „GET4;;make integerôQƒFR0;;now copy thisþP†TOPADR;;to TOPADRQƒFR0;;for next time.P†TOPADR :;;done!&…DOWHLQƒLN2;;put second0PƒFR0;;address in FR0: QƒLN2DPƒFR0;;and disa allN!†TOEDEV;;16 lines.XX;bX;Scroll uplX;v…SCRUPQ†TOPADR;;move down€;;;byte in memoryŠ S„BBCK”PƒFR0;;save in FR0žQ†TOPADR¨S>;;take care of²PƒFR0;;Hi byte¼!†TOEDEV;;do it!ÆX;ÐX;Clear Command typeÚX;ä†CLRCMDQ>;;make commandîP…COMND;;2 spacesø P…COMND :;;bye. X;X;Clear Command Window X;*†CLRWIN%>;;do 21 chars4Q>;;a blank>‚CWP…COMLN8;;in commandH1;;line bufferRI‚CW;;do next\:;;so long.fX;pX;Free break pointszX;„†FREBRK%>Ž'„FREN;;none free˜„FRE1'…SAVEY;;save Y¢Q…SETLO8;;get addr¬PƒFR0;;and put in FR0¶ Q…SETHI8À PƒFR0Ê ‡BIN2HEX;;convert to hexÔ%…SAVEY;;get YÞ$…BRKLN8;;get pos on scrè%>ò„FRE2Q…LBUFF8;;hex digitü;;;make icode S>  P„FRLN9;;on screen 2$ 3. )>;;4 chars?8 H„FRE2;;no.B %…SAVEY;;restore YL Q…OPSET8;;BRK set?V H„FRE3;;yes.` #„FREN;;inc free pointsj „FRE33;;up Yt )>;;6 BRK's yet?~ H„FRE1;;noˆ Q„FREN;;get free’ ,œ O>;;make icode¦ P„FRLN;;on screen° :;;all doneº X;Ä X;Break Point HandlerÎ X;Ø †BKPHAN †CLRCMD;;clear commsâ Q>";;a 'B'ì P…COMNDö  …INPUT;;get a line DƒBKG;;good? yes! :;;no. bye ƒBKGQ…MYBUF;;get number ;;;subtr 49 (0-5)( S>12 >;;save in X< R>F E…NUMER;;>5? yes.P R>;;<0?Z D…NUMER;;yes.d Q…MYBUF;;next charn R>ƒEOL;;EOL?x F‡DORESET;;yes. reset it‚ %>Œ &…CNTLO;;save X–  „GTDR;;get addr  $…CNTLO;;restore Xª %>´ Q@ƒFR07;;get opcode¾ F…SETER;;BRK? yes.È Q…OPSET9;;set already?Ò F…SETIT;;no.Ü …SETER%>˜æ !…IOERRð …NUMER!†GOTERR;;BEEP!ú …SETITQƒFR0;;save address P…SETLO9 QƒFR0 P…SETHI9" Q@ƒFR07;;get opcode, P…OLDOP9;;save it6 C;;zero Acc@ P@ƒFR07;;insert BRKJ #…OPSET9;;show setT !†FREBRK;;and leave^ X;h ‡DORESET †CLRCMD;;no junkr %>;;zero Y| Q…OPSET9;;Set yet?† F†RESER2;;no. error Q…SETLO9;;get addressš P„INDR;;of Bpoint¤ Q…SETHI9;;and save in® P„INDR;;2 Zpage locs¸ Q…OLDOP9;;get old opcode P@„INDR7;;put it back.Ì C;;A = 0Ö P…OPSET9;;not set.à P…SETLO9ê P…SETHI9ô !†FREBRK;;update freeþ †RESER2%>–;;give user !…IOERR;;Error # 150 X; X;Find memory& X;0 †FINDIT †CLRCMD;;clear line: Q>;;a '?'D P…COMNDN P„NCHK;;don't checkX  …INPUT;;keys on inputb DƒFCS;;good inputl :;;byev ƒFCS%>;;check to see€ ƒFCPQ…MYBUF8;;if input endsŠ R>ƒEOL;;with an EOL” F„FCP2;;or a comma.ž R>,;;if comma the¨ F„FCP2;;get an address² P„MBF28;;also copy line¼ 3;;into a tempÆ )> ;;bufferÐ HƒFCPÚ „FCP2'„SLFS;;save Yä R>,;;a comma?î H„FCP3;;no.ø  „GADR;;get address QƒFR0;;to start from ;;;subtract 1 S>;;from it. P‚SL;;and save it* QƒFR04 S>> P‚SLH %>ÿ;;force aR H„FCP4;;branch\ „FCP3%>ÿ;;set up $FFFFf '‚SLp '‚SLz „FCP43„ '…DISKCŽ 'ƒSTL˜ 'ƒSTL;;end at $FFFF¢ †CLRSCR¬ ƒFC1Q‚SL;;add one to¶ ,;;current addrÀ O>Ê P‚SLÔ Q‚SLÞ O>è P‚SLò R>5…MYBUF;;at buffersü HƒFC9;;yet? no.Q‚SL R>4…MYBUF HƒFC9;;no.$Q>4†ENDBUF;;skip over.P‚SL;;the input8Q>5†ENDBUF;;and page 0-2BP‚SL;;buffers.LƒFC9Q…DISKC;;first run?VFƒFC3;;yes.`Q‚SL;;at $0000?j L‚SLt HƒFC3;;no.~:;;yes. done.ˆƒFC3%>;;second pass’ '…DISKCœ 1;;Y = 0¦ƒFC4Q@‚SL7;;a char°R„MBF28;;= to mbf2?º HƒFC1;;no.Ä3;;a match?Î)„SLFS;;done yet?Ø HƒFC4;;no.â „ZBUF;;set up bufferì$>;;to show whatöƒFC5Q„FTXT9;;find thisP…MYBUF9;;was and at 0;;what addressIƒFC5;;the stringQ‚SL;;was found at.(PƒFR02Q‚SL;;address< PƒFR0F ‡BIN2HEXP%>Z$>dƒFC6Q…LBUFF8;;Hex addressn P…MYBUF9x0‚1ŒIƒFC6–Q> $;;add '$'  P…MYBUF9ªQ>ƒEOL;;add in the´P…MYBUF;;eol¾#ƒSTL;;up # of findsÈHƒNH4Ò #ƒSTL܃NH4QƒSTL;;now add inæPƒFR0;;the find #.ð QƒSTLú PƒFR0$> &„HXDC ‡COPYNUM" …PAUSE;;pause?, †SCROLL;;scroll screen6!ƒFC1;;go again@X;JX;Load a binary fileTX;^†DOLOADQ> D;;filenameh …COPFLrQ>;;signal first|P„SLFS;;pass†Q>;;get bytesP†DISKC2;;savešQ>;;read only¤ ‡OPENFIL;;open file!® …READ2;;get 2 bytes¸G„BLO2;;error? yes.ÂQƒBAL;;is header?Ì R>ÿ;;$FF?ÖH„BDLO;;no.àRƒBAL;;other one?êF…DLOAD;;yes. = $FFô„BDLO%>•;;ERROR 149þ„BLO2'…SAVEY;;save it †DCLOSE;;close Device%…SAVEY;;get error!…IOERR;;and leave&…DLOAD …READ2;;2 more bytes0Q„SLFS;;pass = 1?: HƒCHD;;no.DQƒBAL;;copy loadNPƒFR0;;addr to safeXQƒBAL;;placeb PƒFR0l#„SLFS;;pass = 2vƒCHD †CHKHED;;$FF?€ …STRAD;;set startŠ …READ2;;2 more bytes” …ENDAD;;set end adrž †BUFLEN;;calc buf len¨ †GETDAT;;get stuff²G…LOADD;;if error done¼!…DLOAD;;keep going.Æ…LOADDC;;error in AÐ 5;;save itÚ †DCLOSE;;close devä7;;get errorî R>ˆ;;EOF?øH†LODERR;;no. Error! „ZBUF;;clear buffer %>;;'LOAD AT'ƒLLPQ…LODAD8  P…MYBUF8*14IƒLLP> ‡BIN2HEX;;convert addrH%>;;to hex©R$> \„LLP1Q…LBUFF8;;insert #f P…MYBUF9p0z1„ I„LLP1ŽQ> $;;add a '$'˜ P…MYBUF9¢Q>ƒEOL;;install EOL¬ P…MYBUF ¶ …POS15;;on STAT:À!„IOL3;;print it.ʆLODERR?;;in YÔ!…IOERR;;show errorÞX;èX;Read in 2 file bytesòX;ü…READ2Q>4ƒBAL;;point toP‚SL;;2 byte buffer Q>5ƒBAL P‚SL$Q>;;only 2 bytes.PƒBLL;;in length8Q>;;and fall thruBPƒBLL;;to getrecLX;VX;Get file segment`X;j†GETREC$>„DDEV;;DevicetQ†DISKC2;;command~ P…ICCOM9ˆQ‚SL;;buffer adr’ P…ICBAL9œ Q‚SL¦ P…ICBAH9°QƒBLL;;buffer lengthº P…ICBLL9Ä QƒBLLÎ P…ICBLH9Ø!„CIOV;;get itâX;ìX;Calculate buffer lengthöX;†BUFLENQƒENL;;take end and ;;;subtract startSƒSTL;;to calc lengthPƒBLL( QƒENL2 SƒSTL< PƒBLLFQƒBLL;;then add 1P ,;;for CIOZO>dPƒBLLn QƒBLLxO>;;add carry‚ PƒBLLŒ:;;and leave–X; X;Put in start addrªX;´…STRADQƒBAL;;move in start¾PƒSTL;;addressÈ QƒBALÒ PƒSTLÜ:æX;ðX;Put in end addrúX;…ENDADQƒBAL;;move in endPƒENL;;addr. QƒBAL" PƒENL,:6X;@X;Check if headerJX;T†CHKHED$ƒBAL;;first byte^ 2;;up by 1hF„TNXT;;zero? yes.r :;;nope.|„TNXT$ƒBAL;;second byte† 2;;up itF…ITSFF;;zero? yes.š :;;no.¤…ITSFF!…READ2;;2 more bytes®X;¸ X;Get DATAÂX;̆GETDATQƒSTL;;set up startÖP‚SL;;loadind addrà QƒSTLê P‚SLô!†GETREC;;and load itþX;X;Open DiskX;‡OPENFILP…DISKC;;save I/O& †DCLOSE;;close IOCB0Q…DISKC;;get I/O type:$>„DDEV;;device chanDP„AUX19;;in AUX1NQ>;;AUX2 = 0X P„AUX29bQ>;;open commandl P…ICCOM9vQ>4†FILNAM;;point to€P…ICBAL9;;filenameŠ Q>5†FILNAM” P…ICBAH9ž „CIOV;;open it!¨G…OPENR;;sorry error.²:;;good open.¼…OPENR7;;pull RTSÆ7;;and show errorÐ !…IOERRÚX;äX;Copy filenameîX;ø†COPFIL †GETDEV;;device.…COPFL5;;save it P†FILNAM;;in filenameQ>ƒEOL;;3 char is EOL P†FILNAM* 7;;device4R> D;;to Disk?>FƒTOD;;yes.H:;;no fname.RƒTOD †CLRCMD;;clr window\ Q>;;a ?f P…COMNDp …INPUT;;get namezD„CQP1;;if good branch„7;;pull RTSŽ7˜:;;next command¢„CQP1$>;;offset is 2¬%>;;zero Y¶„COPLQ…MYBUF8;;charÀR> ,;;a comma?ÊF…GNAME;;yes.ÔR>ƒEOL;;EOL?ÞF…GNAME;;yes.èP†FILNAM9;;save in nameò3;;up pointersü2(>;;18 chars yet?H„COPL;;no.%>¥;;Fname error$7.78!…IOERR;;show itB…GNAMEQ>ƒEOL;;add EOLLP†FILNAM9;;to FnameV :;;leave`X;jX;Save a FiletX;~†DOSAVEQ> D;;Fnameˆ …COPFL’Q> ;;put bytesœ P†DISKC2¦ „GADR;;save start°QƒFR0;;copy itºPƒSTLÄ QƒFR0Î PƒSTLØ „GADR;;save endâQƒFR0;;copy itìPƒENLöQƒFR0;;is end;;write onlyZ ‡OPENFIL;;open it!dQ>ÿ;;Install headernPƒBALx PƒBAL‚ …READ2;;put it outŒG„SIOR;;error–QƒSTL;;start bytes PƒBALª QƒSTL´ PƒBAL¾ …READ2;;put themÈ G„SIORÒQƒENL;;end bytesÜPƒBALæ QƒENLð PƒBALú …READ2;;put them G„SIOR †BUFLEN;;calc length †GETDAT;;and save it" G„SIOR,!†DCLOSE;;close it6…SIOR2%>™;;ADR ERROR@ „SIORCJ5T †DCLOSE^7h?r!…IOERR;;show it|X;†!X;This is the command text andX;addresses of routinesšX;plus string positions for¤X;Show command.®X;¸†CMDTXT A‰QDRN*CGLSA A‰BT-=FPH.EĂCMDADR †DOSCMD;;QuitÖ …ALTER;;Displayà †DOREGS;;Registersê …CREGS;;New registerô †DISMEM;;*=addrþ †CHGMEM;;Change „GMEM;;Go †DOLOAD;;Load †DOSAVE;;Save& †BKPHAN;;Break pnt han0 …TRACE;;Trace: …SCRUP;;-D …SCRDN;;=N †FINDIT;;FindX †DISDEV;;Printb †PGTHRU;;High speedl „PRDH;;.v …ERASE;;Erase€X;ŠX;Disassembler Vectors”X;ž…DCOMT …IMMED;;immediate¨ „ZPAG;;Zpage² …ZPAGX;;Zpage,X¼ …ABSOL;;AbsoluteÆ †ABSOLX;;Absolute,XÐ †ABSOLY;;Absolute,YÚ „INDX;;(indirect,X)ä „INDY;;(indirect),Yî …ACCUM;;Accumulatorø „RELA;;Relative ƒIMP;;Implied  „INDI;;(indirect) …ZPAGY;;Zpage,Y †STRPOS == ===*X;4X;Screen line address table>X;H„SCRN †MYSCRN ;;ln 0R †MYSCRN! ;;ln 1\ †MYSCRNA ;;ln 2f †MYSCRNa ;;ln 3p †MYSCRN ;;ln 4z †MYSCRN¡ ;;ln 5„ †MYSCRNÁ ;;ln 6Ž †MYSCRNá ;;ln 7˜ †MYSCRN ;;ln 8¢ †MYSCRN! ;;ln 9¬ †MYSCRNA ;;ln 10¶ †MYSCRNa ;;ln 11À †MYSCRN ;;ln 12Ê †MYSCRN¡ ;;ln 13Ô …ERRLN;;ln 14Þ †STATLN;;ln 15è ƒBAL =ò…DRPOS == ==ü„BRKS = „EXEC …BRKLN == ===„TKEY =$X;. X;Branch Instrs + branch bits8X;B„BRAL =P==ÐL„BRAH 0=p=°=ðV„BBIT €=@==`X;jX;Custom Display ListtX;~…DLIST p=p=p=Bˆ …LINE1’ == =Bœ †MYSCRN¦ ===° ===º ===Ä = =BÎ …LINE2Ø ==â ===ì ===Aö …DLISTX; X;Screen MemoryX;1…LINE1 €=A  DEBUG+ by: Bryan Schappel A(+ €=A  ADDR B1 B2 B3 MNEMONICS A21…LINE2 €=A  PC| A| X| Y|SP|NV_BDIZC|MODE A<,„PCNT A  | | | | | |DISA AF €=A‡ INPUT:AP Z…COMND A‚ Ad…COMLN A An A‡ Ax €=A‡ ERROR:A‚ Œ%…ERRLN A˜ A– €=A‡ STAT:A  ª&†STATLN A˜ A´+ €=A BRK1|BRK2|BRK3|BRK4|BRK5|BRK6|FRA¾,„FRLN A  | | | | | |00AÈX;ÒX;Run and trace data tablesÜX;æ „USRA ð „USRX ú „USRY  „USRS  „USRP …USRPC ="X;,X;Register Table6X;@†REGTAB „USRAJ „USRXT „USRY^ „USRSh „USRPr „BITS ===== =@=€|X;†X;Icode/Asc convert tablesX;šƒA2I @== =`¤ƒI2A  =@==`®X;¸X;BRK point data tablesÂX;Ì …SETLO =====;;LSBÖ …SETHI =====;;MSBà#…OLDOP =====;;opcodeê!…OPSET =====;;flagôX;þX;Special Key presses X; „KEYS ÿ=þ=ý=Ÿ=ž  =œ=›==~&  }====0  : X;D X;Error codes numbersN X;X „ERRS €=‚=‰=Š=‹b  =’=¢=¤=¥l  §=©=ª=•v  –=—=˜=™€ X;Š X;Error code addresses” X;ž †ERRTAB „I128=„I130=„I137¨  „I138=„I139=„I144²  „I146=„I162=„I164¼  „I165=„I167=„I169Æ  „I170=„I149=„I150Ð  „I151=„I152=„I153Ú X;ä X;Miscellaneous Text & Devsî X;ø ‡DEVNAMS A†(D,P)?A!„PGTR A†(U,D)?A !„SLOF Aˆ(S,F,O)?A!†REGTXT Aˆ(AXYSP)?A !„DEVS A‚DPA*!†FILNAM AŠ : A4! A„ A=ƒEOL>!…REGIS A…AXYSPAH!†BRKPNT ABRK POINT FOUNDAR!…LEGAL ›=œ=~=A‚,.A\!†HEXDIG A0123456789ABCDEFAf! A”GHIJKLMNOPQRSTUVWXYZAp!„FTXT A†FIND #Az!†COMMAX Aƒ,X)A„!†COMMAY AƒY,)AŽ!…LODAD A‡LOAD ATA˜!X;¢!X;English Error Codes¬!X;¶!„I128ABREAK KEY ABORTAÀ!„I130A‘NO DEVICE HANDLERAÊ!„I137ATRUNCATED RECORDAÔ!„I138AŽDEVICE TIMEOUTAÞ!„I139AŠDEVICE NAKAè!„I144AWRITE PROTECTEDAò!„I146A‘FUNCTION NOT DONEAü!„I162A‰DISK FULLA"„I164A‘FILE NUM MISMATCHA"„I165ABAD FILE NAMEA"„I167A‹FILE LOCKEDA$"„I169AŽDIRECTORY FULLA."„I170AŽFILE NOT FOUNDA8"„I149AFILE NOT BINARYAB"„I150ANO SET BRK POINTAL"„I151AŽINVALID OPCODEAV"„I152ABRK POINT SETA`"„I153AADR RANGE ERRORAj"X;t" X;These are the mnemonics for~"X;the disassembler. They areˆ""X;arranged here in alphabetical’" X;order.œ"X;¦"ƒMNE AADCANDASLBCCBCSA°" ABEQBITBMIBNEBPLAº" AÂÒËBVCBVSCLCCLDAÄ" ACLICLVCMPCPXCPYAÎ" ADECDEXDEYEORINCAØ" AINXINYJMPJSRLDAAâ" ALDXLDYLSRNOPORAAì" APHAPHPPLAPLPROLAö" ARORRTIRTSSBCSECA# ASEDSEISTASTXSTYA # ATAXTAYTSXTXATXSA# A†TYA???A#X;(# X;Opcodes2#X;<# †OPCODEF# i=e=u=m;;ADCP# }=y=a=qZ# )=%=5=-;;ANDd# ==9=!=1n#  ===;;ASLx# ‚# ;;BCCŒ# °;;BCS–# ð;;BEQ # $=,;;BITª# 0;;BMI´# Ð;;BNE¾# ;;BPLÈ# ;;BRKÒ# P;;BVCÜ# p;;BVSæ# ;;CLCð# Ø;;CLDú# X;;CLI$ ¸;;CLV$ É=Å=Õ=Í;;CMP$ Ý=Ù=Á=Ñ"$ à=ä=ì;;CPX,$ À=Ä=Ì;;CPY6$ Æ=Ö=Î=Þ;;DEC@$ Ê;;DEXJ$ ˆ;;DEYT$ I=E=U=M;;EOR^$ ]=Y=A=Qh$ æ=ö=î=þ;;INCr$ è;;INX|$ È;;INY†$ L=l;;JMP$  ;;JSRš$ ©=¥=µ=­;;LDA¤$ ½=¹=¡=±®$ ¢=¦=¶=®;;LDX¸$ ¾Â$  =¤=´=¬;;LDYÌ$ ¼Ö$ J=F=V=N;;LSRà$ ^ê$ ê;;NOPô$  === ;;ORAþ$ ===% H;;PHA% ;;PHP% h;;PLA&% (;;PLP0% *=&=6=.;;ROL:% >D% j=f=v=n;;RORN% ~X% @;;RTIb% `;;RTSl% é=å=õ=í;;SBCv% ý=ù=á=ñ€% 8;;SECŠ% ø;;SED”% x;;SEIž% …=•=;;STA¨% =™==‘²% †=–=Ž;;STX¼% „=”=Œ;;STYÆ% ª;;TAXÐ% ¨;;TAYÚ% º;;TSXä% Š;;TXAî% š;;TXSø% ˜;;TYA&X; & X;Offsets into Mnemonic table&X; & †OFFSET*& =======;;ADC4& =======;;AND>& ====;;ASLH&  ;;BCCR&  ;;BCS\& ;;BEQf& =;;BITp& ;;BMIz& ;;BNE„& ;;BPLŽ& ;;BRK˜& !;;BVC¢& $;;BVS¬& ';;CLC¶& *;;CLDÀ& -;;CLIÊ& 0;;CLVÔ& 3=3=3=3;;CMPÞ& 3=3=3=3è& 6=6=6;;CPXò& 9=9=9;;CPYü& <=<=<=<;;DEC' ?;;DEX' B;;DEY' E=E=E=E;;EOR$' E=E=E=E.' H=H=H=H;;INC8' K;;INXB' N;;INYL' Q=Q;;JMPV' T;;JSR`' W=W=W=W;;LDAj' W=W=W=Wt' Z=Z=Z=Z=Z;;LDX~' ]=]=]=]=];;LDYˆ' `=`=`=`=`;;LSR’' c;;NOPœ' f=f=f=f;;ORA¦' f=f=f=f°' i;;PHAº' l;;PHPÄ' o;;PLAÎ' r;;PLPØ' u=u=u=u;;ROLâ' uì' x=x=x=x;;RORö' x( {;;RTI ( ~;;RTS( ===;;SBC( ===(( „;;SEC2( ‡;;SED<( Š;;SEIF( ===;;STAP( ==Z( ==;;STXd( “=“=“;;STYn( –;;TAXx( ™;;TAY‚( œ;;TSXŒ( Ÿ;;TXA–( ¢;;TXS ( ¥;;TYAª( ¨;;???´(X;¾(X;Instruction TypesÈ(X;Ò(X; 0 = ImmediateÜ(X; 1 = Zero pageæ(X; 2 = Zero page,Xð(X; 3 = Absoluteú(X; 4 = Absolute,X)X; 5 = Absolute,Y)X; 6 = Indirect,X)X; 7 = Indirect,Y")X; 8 = Accumulator,)X; 9 = Relative6)X;10 = Implied@)X;11 = IndirectJ)X;12 = Zero page,YT)X;^) …ITYPEh) =======;;ADCr) =======;;AND|) ====;;ASL†)  ;;BCC)  ;;BCSš)  ;;BEQ¤) =;;BIT®)  ;;BMI¸)  ;;BNEÂ)  ;;BPLÌ)  ;;BRKÖ)  ;;BVCà)  ;;BVSê)  ;;CLCô)  ;;CLDþ)  ;;CLI*  ;;CLV* =======;;CMP* ==;;CPX&* ==;;CPY0* ===;;DEC:*  ;;DEXD*  ;;DEYN* =======;;EORX* ===;;INCb*  ;;INXl*  ;;INYv* = ;;JMP€* ;;JSRŠ* =======;;LDA”* == ==;;LDXž* ====;;LDY¨* ====;;LSR²*  ;;NOP¼* =======;;ORAÆ*  ;;PHAÐ*  ;;PHPÚ*  ;;PLAä*  ;;PLPî* ====;;ROLø* ====;;ROR+  ;;RTI +  ;;RTS+ =======;;SBC +  ;;SEC*+  ;;SED4+  ;;SEI>+ ======;;STAH+ = =;;STXR+ ==;;STY\+  ;;TAXf+  ;;TAYp+  ;;TSXz+  ;;TXA„+  ;;TXSŽ+  ;;TYA˜+  ;;???¢+X;¬+…MYBUF(;;I/O buffer¶+„MBF2;;temp save buffÀ+…MYZPG;;zero pageÊ+…MYPG1;;stackÔ+…MYPG2;;page twoÞ+†ENDBUF ;;end of buffersè+†MYSCRN½;;scr mem 3pgsò+X;ü+à, „DISA,