home *** CD-ROM | disk | FTP | other *** search
- 100 POKE 55,0:POKE 56,40:CLR
- 110 PRINT CHR$(147)
- 120 A$="": INPUT "INSTRUCTIONS Y OR <CR>/NO";A$
- 130 IF A$="" THEN 390
- 140 PRINT CHR$(147);
- 150 PRINT "1) THE DISASSEMBLER CAN TAKE CODE"
- 160 PRINT " FROM MEMORY OR DISK. IF FROM"
- 170 PRINT " DISK,IT MUST BE A PROGRAM FILE"
- 180 PRINT " WHERE THE FIRST TWO BYTES ARE"
- 190 PRINT " ARE USED AS THE START ADRESS."
- 200 PRINT
- 210 PRINT "2) THE AREA OF MEMORY STARTING FROM"
- 220 PRINT " 10 K CAN BE USED AS A BUFFER TO"
- 230 PRINT " DISASSEMBLE FROM."
- 240 PRINT
- 250 PRINT "3) THE PROGRAM PROMPTS THE USER"
- 260 PRINT " FOR ALL INPUT WHEN NEEDED.ENTER A"
- 270 PRINT " <CR> TO CHANGE PREVIOUS OPTION"
- 280 PRINT " OR IF VALUE NOT APPLICABLE."
- 290 PRINT
- 300 PRINT "4) PRESSING THE 'SHIFT KEY' DURING"
- 310 PRINT " OUTPUT HALTS THE SCREEN SCROLL"
- 320 PRINT " UNTIL IT IS RELEASED."
- 330 PRINT
- 340 PRINT " PRESSING THE '*' TERMINATES THE"
- 350 PRINT " CURRENT DISASSEMBLY AND ALLOWS"
- 360 PRINT " NEW PARAMETERS TO BE ENTERED."
- 370 PRINT:PRINT "PRESS ANY KEY TO CONTINUE"
- 380 A$="":GET A$:IF A$="" THEN380
- 390 PRINT CHR$(147)
- 400 PRINT "READING DATA PLEASE WAIT ....."
- 410 DIM MN$(255),AM%(255)
- 420 FORI=0TO255: READ MN$(I),AM%(I): NEXT
- 430 PRINT CHR$(147)
- 440 LC=0:FC=0:SP=0:FP=0:D=0:FG=0:ED=0
- 450 A$="":INPUT"INPUT DEVICE: DISK OR MEMORY";A$
- 460 IF LEFT$(A$,1)="D" THEN FG=1:OPEN 15,8,15:GOTO 500
- 470 IF LEFT$(A$,1)="M" THEN 630
- 480 IF A$="" THEN POKE 55,0:POKE 56,158:CLR:END
- 490 GOTO450
- 500 A$="":INPUT"ENTER NAME OF FILE";A$
- 510 IF A$="" THEN CLOSE 15:GOTO 450
- 520 OPEN 5,8,5,A$+",P,R":INPUT#15,E1,E$
- 530 IF E1<>0 THEN PRINT E$:CLOSE 5:GOTO 500
- 540 S1=2100:S2=2200:S3=2300
- 550 GET#5,T1$,T2$
- 560 LC=ASC(T1$+CHR$(0))+256*ASC(T2$+CHR$(0))
- 570 A$="":PRINT "ENTER LOAD ADRESS IF DIFFERENT"
- 580 INPUT " FROM THAT ON DISK";A$
- 590 IF A$="" THEN 620
- 600 A=VAL(A$):IF A<0 OR A>65535 THEN 570
- 610 LC=A
- 620 GOTO 780
- 630 A=-1:INPUT"ENTER START ADDRESS";A
- 640 IF A=-1 THEN 450
- 650 IF A<0 OR A>65535 THEN 630
- 660 LC=A
- 670 A$="":INPUT "ENTER LOAD ADRESS IF DIFFERENT";A$
- 680 IF A$="" THEN 710
- 690 A=VAL(A$):IF A<0 OR A>65535 THEN 670
- 700 D=LC-A
- 710 A=0:INPUT"ENTER END ADDRESS";A
- 720 IF A>0 AND A<65536 THEN SP=A:GOTO 770
- 730 IF A>65535 THEN SP=65535:GOTO 770
- 740 A=0:INPUT"ENTER # OF BYTES";A
- 750 IF A=0 THEN 710
- 760 SP=LC+A:IF SP>65535 THEN SP=65535
- 770 S1=3100:S2=3200:S3=3300
- 780 A$="":PRINT"OUTPUT DEVICE:"
- 790 INPUT" SCREEN,DISK,OR PRINTER";A$
- 800 IF LEFT$(A$,1)="S" THEN OPEN 6,3:GOTO 980
- 810 IF LEFT$(A$,1)<>"P" THEN 860
- 820 OPEN 6,4,6:A$="":INPUT"ENTER HEADER OR <CR>";A$
- 830 IF A$="" THEN 980
- 840 PRINT#6,CHR$(14);SPC(INT((110-LEN(A$))/4));A$:PRINT#6," ":PRINT#6," ":FP=1
- 850 FC=57:GOTO 980
- 860 IF LEFT$(A$,1)<>"D" THEN 780
- 870 IF FG<>1 THEN OPEN 15,8,15
- 880 A$="":INPUT"ENTER OUTPUT FILE NAME";A$
- 890 IF A$="" THEN 780
- 900 OPEN 6,8,6,A$+",S,W":INPUT#15,E1,E$
- 910 IF E1=0 THEN 980
- 920 CLOSE6
- 930 IF E1<>63 THEN PRINT E$:GOTO 880
- 940 B$="":PRINT"FILE EXISTS,"
- 950 INPUT" DO YOU WISH TO OVERWRITE";B$
- 960 IF LEFT$(B$,1)<>"Y" THEN 880
- 970 OPEN 6,8,6,"@:"+A$+",S,W"
- 980 IF S1=2100 THEN GOSUB 2020
- 990 IF S1=3100 THEN GOSUB 2150
- 1000 PRINT#6,LC-D;SPC(6-LEN(STR$(LC)));OC;SPC(4-LEN(STR$(OC)));:LC=LC+1
- 1010 ON AM%(OC) GOTO1310,1020,1040,1060,1080,1100,1130,1160,1190,1210,1230,1240,1260,1290
- 1020 IF S2=2200 THEN GOSUB 2050:PRINT#6,"(";E;",X )";:GOTO1330
- 1030 IF S2=3200 THEN GOSUB 2170:PRINT#6,"(";E;",X )";:GOTO1330
- 1040 IF S2=2200 THEN GOSUB 2050:PRINT#6,"(";E;"),Y";:GOTO1330
- 1050 IF S2=3200 THEN GOSUB 2170:PRINT#6,"(";E;"),Y";:GOTO1330
- 1060 IF S3=2300 THEN GOSUB 2090:PRINT#6," ";E;",Y";:GOTO1330
- 1070 IF S3=3300 THEN GOSUB 2200:PRINT#6," ";E;",Y";:GOTO1330
- 1080 IF S2=2200 THEN GOSUB 2050:PRINT#6," ";E;",Y";:GOTO1330
- 1090 IF S2=3200 THEN GOSUB 2170:PRINT#6," ";E;",Y";:GOTO1330
- 1100 IF S2=2200 THEN GOSUB 2050:PRINT#6,"#";E;
- 1110 IF S2=3200 THEN GOSUB 2170:PRINT#6,"#";E;
- 1120 GOTO1330
- 1130 IF S2=2200 THEN GOSUB 2050:PRINT#6," ";E;
- 1140 IF S2=3200 THEN GOSUB 2170:PRINT#6," ";E;
- 1150 GOTO1330
- 1160 IF S3=2300 THEN GOSUB 2090:PRINT#6," ";E;
- 1170 IF S3=3300 THEN GOSUB 2200:PRINT#6," ";E;
- 1180 GOTO1330
- 1190 IF S3=2300 THEN GOSUB 2090:PRINT#6," ";E;",X";:GOTO1330
- 1200 IF S3=3300 THEN GOSUB 2200:PRINT#6," ";E;",X";:GOTO1330
- 1210 IF S2=2200 THEN GOSUB 2050:PRINT#6," ";E;",X";:GOTO1330
- 1220 IF S2=3200 THEN GOSUB 2170:PRINT#6," ";E;",X";:GOTO1330
- 1230 PRINT#6,SPC(11);MN$(OC);" ";"A";:GOTO1330
- 1240 IF S3=2300 THEN GOSUB 2090:PRINT#6,"(";E;")";:GOTO1330
- 1250 IF S3=3300 THEN GOSUB 2200:PRINT#6,"(";E;")";:GOTO1330
- 1260 IF S2=2200 THEN GOSUB 2050:IF E>127 THEN E=E-256
- 1270 IF S2=3200 THEN GOSUB 2170:IF E>127 THEN E=E-256
- 1280 PRINT#6," ";LC+E;:GOTO1330
- 1290 E=OC:PRINT#6,SPC(11);MN$(OC);" ";E;
- 1300 GOTO1330
- 1310 PRINT#6," ";
- 1320 PRINT#6,MN$(OC);
- 1330 PRINT#6:FC=FC-1:IF FC=0 AND FP=1 THEN PRINT#6,CHR$(11):FC=60
- 1340 GET A$:IF A$="*" THEN1370
- 1350 SYS 65439:IF PEEK(653)=1 THEN 1350
- 1360 IF ED<>1 THEN 980
- 1370 CLOSE6:CLOSE5:CLOSE15:GOTO440
- 1380 DATA BRK,1,ORA,2,.BYT,14,.BYT,14
- 1390 DATA .BYT,14,ORA,7,ASL,7,.BYT,14
- 1400 DATA PHP,1,ORA,6,ASL,11,.BYT,14
- 1410 DATA .BYT,14,ORA,8,ASL,8,.BYT,14
- 1420 DATA BPL,13,ORA,3,.BYT,14,.BYT,14
- 1430 DATA .BYT,14,ORA,10,ASL,10,.BYT,14
- 1440 DATA CLC,1,ORA,4,.BYT,14,.BYT,14
- 1450 DATA .BYT,14,ORA,9,ASL,9,.BYT,14
- 1460 DATA JSR,8,AND,2,.BYT,14,.BYT,14
- 1470 DATA BIT,7,AND,7,ROL,7,.BYT,14
- 1480 DATA PLP,1,AND,6,ROL,11,.BYT,14
- 1490 DATA BIT,8,AND,8,ROL,8,.BYT,14
- 1500 DATA BMI,13,AND,3,.BYT,14,.BYT,14
- 1510 DATA .BYT,14,AND,10,ROL,10,.BYT,14
- 1520 DATA SEC,1,AND,4,.BYT,14,.BYT,14
- 1530 DATA .BYT,14,AND,9,ROL,9,.BYT,14
- 1540 DATA RTI,1,EOR,2,.BYT,14,.BYT,14
- 1550 DATA .BYT,14,EOR,7,LSR,7,.BYT,14
- 1560 DATA PHA,1,EOR,6,LSR,11,.BYT,14
- 1570 DATA JMP,8,EOR,8,LSR,8,.BYT,14
- 1580 DATA BVC,13,EOR,3,.BYT,14,.BYT,14
- 1590 DATA .BYT,14,EOR,10,LSR,10,.BYT,14
- 1600 DATA CLI,1,EOR,4,.BYT,14,.BYT,14
- 1610 DATA .BYT,14,EOR,9,LSR,9,.BYT,14
- 1620 DATA RTS,1,ADC,2,.BYT,14,.BYT,14
- 1630 DATA .BYT,14,ADC,7,ROR,7,.BYT,14
- 1640 DATA PLA,1,ADC,6,ROR,11,.BYT,14
- 1650 DATA JMP,12,ADC,8,ROR,8,.BYT,14
- 1660 DATA BVS,13,ADC,3,.BYT,14,.BYT,14
- 1670 DATA .BYT,14,ADC,10,ROR,10,.BYT,14
- 1680 DATA SEI,1,ADC,4,.BYT,14,.BYT,14
- 1690 DATA .BYT,14,ADC,9,ROR,9,.BYT,14
- 1700 DATA .BYT,14,STA,2,.BYT,14,.BYT,14
- 1710 DATA STY,7,STA,7,STX,7,.BYT,14
- 1720 DATA DEY,1,.BYT,14,TXA,1,.BYT,14
- 1730 DATA STY,8,STA,8,STX,8,.BYT,14
- 1740 DATA BCC,13,STA,3,.BYT,14,.BYT,14
- 1750 DATA STY,10,STA,10,STX,5,.BYT,14
- 1760 DATA TYA,1,STA,4,TXS,1,.BYT,14
- 1770 DATA .BYT,14,STA,9,.BYT,14,.BYT,14
- 1780 DATA LDY,6,LDA,2,LDX,6,.BYT,14
- 1790 DATA LDY,7,LDA,7,LDX,7,.BYT,14
- 1800 DATA TAY,1,LDA,6,TAX,1,.BYT,14
- 1810 DATA LDY,8,LDA,8,LDX,8,.BYT,14
- 1820 DATA BCS,13,LDA,3,.BYT,14,.BYT,14
- 1830 DATA LDY,10,LDA,10,LDX,10,.BYT,14
- 1840 DATA CLV,1,LDA,4,TSX,1,.BYT,14
- 1850 DATA LDY,9,LDA,9,LDX,4,.BYT,14
- 1860 DATA CPY,6,CMP,2,.BYT,14,.BYT,14
- 1870 DATA CPY,7,CMP,7,DEC,7,.BYT,14
- 1880 DATA INY,1,CMP,6,DEX,1,.BYT,14
- 1890 DATA CPY,8,CMP,8,DEC,8,.BYT,14
- 1900 DATA BNE,13,CMP,3,.BYT,14,.BYT,14
- 1910 DATA .BYT,14,CMP,10,DEC,10,.BYT,14
- 1920 DATA CLD,1,CMP,4,.BYT,14,.BYT,14
- 1930 DATA .BYT,14,CMP,9,DEC,9,.BYT,14
- 1940 DATA CPX,6,SBC,2,.BYT,14,.BYT,14
- 1950 DATA CPX,7,SBC,7,INC,7,.BYT,14
- 1960 DATA INX,1,SBC,6,NOP,1,.BYT,14
- 1970 DATA CPX,8,SBC,8,INC,8,.BYT,14
- 1980 DATA BEQ,13,SBC,3,.BYT,14,.BYT,14
- 1990 DATA .BYT,14,SBC,10,INC,10,.BYT,14
- 2000 DATA SED,1,SBC,4,.BYT,14,.BYT,14
- 2010 DATA .BYT,14,SBC,9,INC,9,.BYT,14
- 2020 GET#5,TE$:IF ST>0 THEN ED=1
- 2030 OC=ASC(TE$+CHR$(0))
- 2040 RETURN
- 2050 GET#5,TE$:IF ST>0 THEN ED=1
- 2060 E=ASC(TE$+CHR$(0))
- 2070 PRINT#6,E;SPC(10-LEN(STR$(E)));MN$(OC);" ";:LC=LC+1
- 2080 RETURN
- 2090 GET#5,TE$,TF$:IF ST>0 THEN ED=1
- 2100 TE=ASC(TE$+CHR$(0)):TF=ASC(TF$+CHR$(0))
- 2110 E=TE+256*TF:LC=LC+2
- 2120 PRINT#6,TE;SPC(4-LEN(STR$(TE)));TF;SPC(5-LEN(STR$(TF)));
- 2130 PRINT#6,MN$(OC);" ";
- 2140 RETURN
- 2150 OC=PEEK(LC):IF LC+1>SP THEN ED=1
- 2160 RETURN
- 2170 E=PEEK(LC):PRINT#6,E;SPC(10-LEN(STR$(E)));MN$(OC);" ";
- 2180 IF LC+1>SP THEN ED=1
- 2190 LC=LC+1:RETURN
- 2200 E1=PEEK(LC):E2=PEEK(LC+1)
- 2210 E=E1+256*E2:IF LC+2>SP THEN ED=1
- 2220 PRINT#6,E1;SPC(4-LEN(STR$(E1)));E2;SPC(5-LEN(STR$(E2)));MN$(OC);" ";
- 2230 LC=LC+2:RETURN
-