100 BA=53280:PR=65490:CO=646:AC=780:PRINT"[147]":POKEBA,0:POKEBA+1,0 110 FORA=828TO985:READB:POKEA,B:NEXT 120 DATA 32,253,174,32,158,173,32,130,183,168,169,0,145,34,162,0,181,0,157 130 DATA 0,160,202,208,248,165,34,133,122,165,35,133,123,32,172,3,169,1,133 140 DATA 129,208,7,32,121,0,201,0,240,43,32,115,0,176,32,32,172,3,169 150 DATA 36,32,210,255,32,131,174,32,155,188,165,100,240,3,32,181,3,165,101 160 DATA 32,181,3,32,172,3,76,101,3,32,210,255,76,101,3,120,162,0,169 170 DATA 54,133,1,189,0,160,149,0,202,208,248,169,55,133,1,88,96,166,122 180 DATA 208,2,198,123,198,122,96,72,74,74,74,74,32,195,3,104,41,15,76 190 DATA 195,3,170,189,202,3,76,210,255,48,49,50,51,52,53,54,55,56,57 200 DATA 65,66,67,68,69,70 210 OPEN15,8,15:PRINT#15,"M-W";CHR$(106)CHR$(0)CHR$(1)CHR$(133):CLOSE15 220 OPEN1,0 230 POKEAC,147:SYSPR:DIM C$(255),C(255) 240 POKECO,1:PRINT" DISK DISASSEMBLER" 250 READA$,B,C:IFA$="END"THEN290 260 C$(B)=A$:C(B)=C 270 GOTO250 280 POKE152,0:OPEN1,0:PRINT"[147]"TAB(4)" DISK DISASSEMBLER":Q$="":NU$="" 290 PRINT:PRINT:PRINT"ENTER DISASSEMBLY: R[146]AM OR D[146]ISK" 300 GETMD$:IFMD$="D"ORMD$="R"THEN320 310 GOTO300 320 IFMD$="R"THEN340 330 GOTO390 340 PRINT:PRINT"ENTER STARTING ADDRESS: "; 350 INPUT#1,SA 360 PRINT:PRINT"ENTER ENDING ADDRESS" 370 PRINT"(IF NOT KNOWN PUT 0): "; 380 INPUT#1,ED:PRINT:GOTO420 390 PRINT:PRINT"ENTER ML FILE NAME: "; 400 INPUT#1,F$:OPEN2,8,2,"0:"+F$:CLOSE2:OPEN15,8,15:INPUT#15,A$,B$,C$,D$ 410 IFVAL(A$)>0THEN860 420 PRINT:PRINT"DO YOU WANT LIST HOLD [Y/N]: "; 430 GETSP$:IFSP$="Y"ORSP$="N"THEN450 440 GOTO430 450 PRINTSP$:IFSP$="Y"THENLH=1 460 IFSP$="N"THENLH=0 470 CLOSE15:POKE198,0 480 PRINT"SEND TO SCREEN [Y/N]: "; 490 GETSP$:IFSP$="Y"ORSP$="N"THEN510 500 GOTO490 510 POKE198,0 520 PRINTSP$:IFSP$="Y"THENSC=1 530 IFSP$="N"THENSC=0 540 PRINT"SEND TO PRINTER [Y/N]: "; 550 GETSP$:IFSP$="Y"ORSP$="N"THEN570 560 GOTO550 570 POKE198,0 580 PRINTSP$:IFSP$="Y"THENPR=1 590 IFSP$="N"THENPR=0 600 PRINT"SEND TO DISK [Y/N]: "; 610 POKE198,0 620 GETSP$:IFSP$="Y"ORSP$="N"THEN640 630 GOTO620 640 PRINTSP$:IFSP$="Y"THENDI=1 650 IFDI=1ANDLH=1THENPRINT"LIST HOLD DISACTIVATED[146]":LH=0:ER=1:GOSUB860 660 IFSP$="N"THENDI=0 670 IFDI=0THEN700 680 PRINT"ENTER DESTINATION'S FILE NAME: "; 690 INPUT#1,D$:PRINT:POKE198,0 700 HF=0:PRINT"HEXADECIMAL OUTPUT [Y/N]: ";:POKE198,0 710 GETSP$:IFSP$<>"Y"ANDSP$<>"N"THEN710 720 PRINTSP$:IFSP$="Y"THENHF=1 730 PRINT"INFORMATION CORRECT [Y/N]: "; 740 GETYN$:IFYN$="Y"ORYN$="N"THEN760 750 GOTO740 760 PRINTYN$:IFYN$="N"THEN280 770 PRINT"[147]ADDR. COMMAND OP CODE ":CLOSE1 780 PRINT"[163][163][163][163][163] [163][163][163][163][163][163][163] [163][163][163][163][163][163][163] " 790 IFMD$="D"THENOPEN15,8,15:PRINT#15,"I0" 800 IFMD$="D"THENOPEN2,8,0,F$:CLOSE1 810 IFST<>0THEN860 820 IFDI=1THENGOSUB1770:REM GOTO INIT FILE 830 IFPR=1THENOPEN4,4 840 IFST<>0THEN860 850 GOTO990 860 REM CHECK FOR ERROR 870 CC=0:IFVAL(A$)>0THENER=0 880 IFER<>1THENPRINT"IO/ERROR:[146] ";A$;",";B$;",";C$;",";D$ 890 IFER<>1THENCLOSE1:CLOSE2:CLOSE3:CLOSE15 900 POKE54276,0:S=54272:V=S+24:POKEV,4 910 POKES+5,0*16+0:POKES+6,15*16+0:POKES+4,33 920 POKES,4:POKES+1,48:FORA=0TO350:NEXT:POKES,2:POKES+1,24:FORA=0TO350:NEXT 930 CC=CC+1:IFCC<>3THEN920 940 POKEV,0:IFER=1THENRETURN 950 PRINT:PRINT"PRESS ANY KEY[146] TO RESTART" 960 IFPEEK(197)<>64THEN280 970 GOTO960 980 REM START DISASSEMBLER 990 IFMD$="D"THENGET#2,LO$:REM GET STARTING ADDRESS 1000 IFMD$="D"THENGET#2,HI$:LO=ASC(LO$+CHR$(0)):HI=ASC(HI$+CHR$(0)) 1010 IFMD$="D"THENSA=HI*256+LO:REM STARTING ADDRESS 1020 IFDI=1ANDQQ=0THENGOSUB1770 1030 IFPEEK(653)THEN1030 1040 SX=SX+1:IFSX=19ANDLH=1THENGOSUB2040 1050 IFHFANDSCANDQ$<>""THENSYS828,Q$:PRINTTAB(20);:SYS828,NU$:PRINT:GOTO1070 1060 IFSC=1THENPRINTQ$,NU$ 1070 IFPR=1THENPRINT#4,Q$+CHR$(16)+"20"+NU$ 1080 IFDI=1THENGOSUB1840 1090 Q$="":NU$="" 1100 GOSUB2000:REM GET THE COMMAND 1110 NU$=NU$+STR$(CD) 1120 IFST<>0ANDDI=1THENGOSUB1970:CLOSE1:CLOSE2:CLOSE4:CLOSE15:END 1130 IFST<>0THENCLOSE1:CLOSE2:CLOSE4:CLOSE15:END 1140 IFSA>ED+1ANDED<>0THENAA=1 1150 IFAA=1ANDDI=0THENCLOSE4:END 1160 IFDI=1ANDAA=1THENGOSUB1970:CLOSE1:CLOSE2:CLOSE4:CLOSE15:END 1170 C$=C$(CD):C=C(CD) 1180 Q$=Q$+RIGHT$("0000"+MID$(STR$(SA-1),2),5)+" "+LEFT$(C$,3) 1190 IFC(CD)=1THENQ$=Q$+" ":GOTO1030:REM 1 BYTE 1200 IFC(CD)=2THEN1250:REM 2 BYTE 1210 IFC(CD)=3THEN1420:REM 3 BYTE 1220 IFC(CD)=4THEN1710:REM CONDITIONS 1230 Q$=Q$+".BYTE " 1240 Q$=Q$+STR$(CD):GOTO1030 1250 REM 2 BYTE COMMAND 1260 D$=MID$(C$,4,1):GOSUB2000 1270 NU$=NU$+STR$(CD) 1280 S$=STR$(CD):Z$=RIGHT$(S$,LEN(S$)-1) 1290 IFD$="0"THEN1340 1300 IFD$="#"THEN1350 1310 IFD$="I"THEN1360 1320 IFD$="A"THEN1410 1330 GOTO1230:REM BAD COMMAND 1340 Q$=Q$+STR$(CD):GOTO1370 1350 Q$=Q$+" #"+Z$:GOTO1030 1360 Q$=Q$+" ("+Z$+")" 1370 D$=MID$(C$,5,1) 1380 IFD$="Y"THENQ$=Q$+",Y":GOTO1030 1390 IFD$="X"THENQ$=Q$+",X":GOTO1030 1400 GOTO1030 1410 Q$=Q$+Z$:GOTO1030 1420 REM 3 BYTE COMMAND 1430 D$=MID$(C$,4,1) 1440 GOSUB2000:LO=CD:NU$=NU$+STR$(LO) 1450 GOSUB2000:HI=CD:NU$=NU$+STR$(HI) 1460 CD=HI*256+LO 1470 CD$=RIGHT$(STR$(CD),LEN(STR$(CD))-1) 1480 IFD$="0"THEN1540 1490 IFD$="#"THEN1550 1500 IFD$="I"THEN1560 1510 IFD$="A"THEN1630 1520 IFD$=""THEN1690 1530 GOTO1230:REM BAD COMMAND 1540 Q$=Q$+" "+CD$:GOTO1030 1550 Q$=Q$+" #"+CD$:GOTO1030 1560 Q$=Q$+" ("+CD$+")" 1570 D$=MID$(C$,5,1) 1580 IFD$=""THEN1030 1590 IFD$="Y"THENQ$=Q$+",Y":GOTO1030 1600 IFD$="X"THENQ$=Q$+",X":GOTO1030 1610 IFD$="N"THEN1030 1620 GOTO1230:REM BAD COMMAND 1630 D$=MID$(C$,5,1) 1640 IFD$=""THENQ$=Q$+" "+CD$:GOTO1030 1650 Q$=Q$+" "+CD$ 1660 IFD$="X"THENQ$=Q$+",X" 1670 IFD$="Y"THENQ$=Q$+",Y" 1680 GOTO1030 1690 Q$=Q$+" "+CD$:GOTO1030 1700 GOTO1230:REM BAD COMMAND 1710 REM HANDLE CONDITION COMMANDS 1720 GOSUB2000 1730 TT=0:NU$=NU$+STR$(CD) 1740 IFCD>=129THENTT=1:CD=CD-128 1750 IFTT=1THENQ$=Q$+STR$(SA-(128-CD)):GOTO1030 1760 Q$=Q$+STR$(SA+CD):GOTO1030 1770 REM INITIALIZE TO DISK FILE 1780 OPEN1,8,1,"@0:"+D$+",P,W" 1790 LI=2049:QQ=1 1800 HI=INT(LI/256):LO=LI-(HI*256) 1810 PRINT#1,CHR$(LO); 1820 PRINT#1,CHR$(HI); 1830 RETURN 1840 REM GOTO DISK 1850 IFCD=199THENGOSUB1970:RETURN 1860 IFVAL(Q$)=0THENRETURN 1870 HI=INT(LI/256):LO=LI-(HI*256) 1880 PRINT#1,CHR$(LO); 1890 PRINT#1,CHR$(HI); 1900 SS=VAL(Q$) 1910 HI=INT(SS/256):LO=SS-(HI*256) 1920 PRINT#1,CHR$(LO); 1930 PRINT#1,CHR$(HI); 1940 DD$=MID$(Q$,7,20) 1950 PRINT#1,DD$;CHR$(0); 1960 RETURN 1970 REM CLOSE DISK 1980 PRINT#1,CHR$(0);CHR$(0);CHR$(0);CHR$(0) 1990 CLOSE1:RETURN 2000 REM*GET*BYTE*OFF*OF*DISK*OR*RAM 2010 IFMD$="D"THENGET#2,CD$:CD=ASC(CD$+CHR$(0)):SA=SA+1 2020 IFMD$="R"THENCD=PEEK(SA):SA=SA+1 2030 RETURN 2040 SX=0:PRINT:PRINT"PRESS ANY KEY[146] TO CONTINUE,F1[146] TO ABORT." 2050 GETA$:IFA$=""THEN2050 2060 IFA$<>"[133]"THEN2080 2070 CLOSE2:GOTO280 2080 PRINT"[147]ADDR. COMMAND OP CODE" 2090 PRINT"[163][163][163][163][163] [163][163][163][163][163][163][163] [163][163][163][163][163][163][163]":PRINT:RETURN 2100 DATAADC#,105,2,ADC00,101,2,ADC0X,117,2,ADCAB,109,3,ADCAX,128,3,ADCAY,121,3 2110 DATAADCIX,97,2,ADCIY,113,2 2120 DATAAND#,41,2,AND00,37,2,AND0X,53,2,ANDAB,45,3,ANDAX,61,3,ANDAY,57,3 2130 DATAANDIX,33,2,ANDIY,49,2 2140 DATAASLAC,10,1,ASL00,6,2,ASL0X,22,2,ASLAB,14,3,ASLAX,30,3 2150 DATABCC,144,4,BCS,176,4,BEQ,240,4,BIT00,36,2,BITAB,44,3,BMI,48,4,BNE,208,4 2160 DATABPL,16,4,BRK,0,1,BVC,80,4,BVS,112,4,CLC,24,1,CLD,216,1,CLI,88,1 2170 DATACLV,184,1,CMP#,201,2,CMP00,197,2,CMP0X,213,2,CMPAB,205,3,CMPAX,221,3 2180 DATACMPAY,217,3,CMPIX,193,2,CMPIY,209,2 2190 DATACPX#,224,2,CPX00,228,2,CPXAB,236,3,CPY#,192,2,CPY00,196,2,CPYAB,204,3 2200 DATADEC00,198,2,DEC0X,214,2,DECAB,206,3,DECAX,222,3,DEX,202,1,DEY,136,1 2210 DATAEOR#,73,2,EOR00,69,2,EOR0X,85,2,EORAB,77,3,EORAB,93,3,EORAX,93,3 2220 DATAEORAY,89,3,EORIX,65,2,EORIY,81,2,INC00,230,2,INC0X,246,2,INCAB,238,3 2230 DATAINCAX,254,3,INX,232,1,INY,200,1,JMPAB,76,3,JMPIN,108,3,JSR,32,3 2240 DATALDA#,169,2,LDA00,165,2,LDA0X,181,2,LDAAB,173,3,LDAAX,189,3,LDAAY,185,3 2250 DATALDAIX,161,2,LDAIY,177,2,LDX#,162,2,LDX00,166,2,LDX0Y,182,2,LDXAB,174,3 2260 DATALDXAY,190,3,LDY#,160,2,LDY00,164,2,LDY0X,180,2,LDYAB,172,3,LDYAX,188,3 2270 DATALSRAC,74,1,LSR00,70,2,LSR0X,86,2,LSRAB,78,3,LSRAX,94,3,NOP,234,1 2280 DATAORA#,9,2,ORA00,5,2,ORA0X,21,2,ORAAB,13,3,ORAAX,29,3,ORAAY,25,3 2290 DATAORAIX,1,2,ORAIY,17,2,PHA,72,1,PHP,8,1,PLA,104,1,PLP,40,1,ROLAC,42,1 2300 DATAROL00,38,2,ROL0X,54,2,ROLAB,46,3,ROLAX,62,3,RORAC,106,1,ROR00,102,2 2310 DATAROR0X,118,2,RORAB,110,3,RORAX,126,3,RTI,64,1,RTS,96,1,SBC#,233,2 2320 DATASBC00,229,2,SBC0X,245,2,SBCAB,237,3,SBCAX,253,3,SBCAY,249,3 2330 SBCIX,225,2 2340 DATASBCIY,241,2,SEC,56,1,SED,248,1,SEI,120,1,STA00,133,2,STA0X,149,2 2350 DATASTAAB,141,3,STAAX,157,3,STAAY,153,3,STAIX,129,2,STAIY,145,2 2360 STX00,134,2 2370 DATASTX0Y,150,2,STXAB,142,3,STY00,132,2,STY0X,148,2,STYAB,140,3 2380 DATATAX,170,1,TAY,168,1,TSX,186,1,TXA,138,1,TXS,154,1,TYA,152,1 2390 DATA"END",0,0