0 'DISASM.PW4 -- Produces Custom Software source with labels 1 'Saves some work in making new sources from CO files, but not all! 2 'Phil Wheeler -- 71266,125 [11/15/87] 9 ' 10 MAXFILES=1:CLEAR500:DIMH$(15),M$(255,1):E$=CHR$(27):FG=0:GOTO400 40 H2$=H$(DE\16)+H$(DEMOD16):RETURN 50 IFDE>32767THENH4$=H$(DE/4096):DE=DE-4096*FIX(DE/4096)ELSEH4$=H$(DE\4096):DE=DEMOD4096 52 H4$=H4$+H$(DE\256):DE=DEMOD256:GOSUB40:H4$=H4$+H2$:RETURN 100 FORA=0TO15:READH$(A):NEXT 105 FORA=0TO255:READM$(A,0):M$(A,1)="1":NEXT 110 FORA=1TO18:READB2:M$(B2,1)="2":NEXT 120 FORA=1TO26:READB3:M$(B3,1)="3":NEXT 130 G=0 200 FOR AD=S TO E 230 P=PEEK(AD) 240 DE=P:GOSUB40:HD$=H2$ 250 C=P 260 DE=AD+OS:GOSUB50:AO$=H4$ 270 IFG<1THENPRINT#1,"L";AO$;CHR$(9);ELSEG=G-1:GOTO320 280 PRINT#1,M$(P,0);:IFP=195ORP=201THENFG=1 290 IFM$(P,1)="2"THENG=1:DE=PEEK(AD+1):GOSUB40:HD$=HD$+H2$:W$=H2$:PRINT#1,"$";W$;:C=DE 300 IFM$(P,1)="3"THENG=2:DE=PEEK(AD+1):GOSUB40:HD$=HD$+H2$:W$=H2$:C=DE:DE=PEEK(AD+2):GOSUB40:HD$=HD$+H2$:W$=H2$+W$:C=DE:PRINT#1,"$";W$; 310 PRINT#1, 315 IFFG=1THENFG=0:PRINT#1,";***" 320 NEXT AD 330 CLOSE 399 END 400 'initialization 420 CLS:PRINTE$"p DISASM.PW4 -- Menu File Disassembler (for Labeled Custom Assembler Source) "E$"q";:FILES 430 F$="":PRINTE$"pFile for DisAsm"E$"q ";:INPUTF$:IFF$=""THENMENU 432 B=INSTR(F$,"."):IFB=0THENF$=LEFT$(F$,6)+".":B=INSTR(F$,".") 434 IFMID$(F$,B+1,2)<>"CO"THENF$=LEFT$(F$,B)+"CO" 440 FORK=1TOLEN(F$):X=ASC(MID$(F$,K,1)):IFX>96ANDX<123THENMID$(F$,K,1)=CHR$(X-32):NEXTELSENEXT 445 H$="":FORK=1TOB-1:H$=H$+MID$(F$,K,1):NEXT:H$=H$+SPACE$(7-B)+RIGHT$(F$,2) 450 FORA=63842TO64129STEP11 455 G$="":FORK=3TO10:G$=G$+CHR$(PEEK(A+K)):NEXT 460 IFG$=H$ANDPEEK(A)<>0THENI=PEEK(A+1)+256*PEEK(A+2):GOTO470ELSENEXT 465 BEEP:PRINT"CO File Not Found; Try Again! ":GOTO430 470 S=I+6:E=S+PEEK(I+2)+256*PEEK(I+3)-1:OS=PEEK(I)+256*PEEK(I+1)-S 480 PRINTE$"pOutput to (Not RAM File):"E$"q ";:LINEINPUTFL$:IFFL$=""THEN480ELSEOPENFL$FOROUTPUTAS1:FA=VARPTR(#1):IFPEEK(FA+4)=248THENBEEP:CLOSE:PRINT"RAM Output will Give Erroneous Result":GOTO480 490 GOTO100 9000 DATA "0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F" 9005 DATA"NOP ","LXI B,","STAX B","INX B","INR B","DCR B","MVI B,","RLC "," ","DAD B","LDAX B","DCX B","INR C","DCR C","MVI C,","RRC " 9010 DATA" ","LXI D,","STAX D","INX D","INR D","DCR D","MVI D,","RAL "," ","DAD D","LDAX D","DCX D","INR E","DCR E","MVI E,","RAR " 9020 DATA"RIM ","LXI H,","SHLD ","INX H","INR H","DCR H","MVI H,","DAA"," ","DAD H","LHLD ","DCX H","INR L","DCR L","MVI L,","CMA " 9030 DATA"SIM ","LXI SP,","STA ","INX SP","INR M","DCR M","MVI M,","STC "," ","DAD SP","LDA ","DCX SP","INR A","DCR A","MVI A,","CMC " 9040 DATA"MOV B,B","MOV B,C","MOV B,D","MOV B,E","MOV B,H","MOV B,L","MOV B,M","MOV B,A","MOV C,B","MOV C,C","MOV C,D","MOV C,E","MOV C,H","MOV C,L","MOV C,M","MOV C,A" 9050 DATA"MOV D,B","MOV D,C","MOV D,D","MOV D,E","MOV D,H","MOV D,L","MOV D,M","MOV D,A","MOV E,B","MOV E,C","MOV E,D","MOV E,E","MOV E,H","MOV E,L","MOV E,M","MOV E,A" 9060 DATA"MOV H,B","MOV H,C","MOV H,D","MOV H,E","MOV H,H","MOV H,L","MOV H,M","MOV H,A","MOV L,B","MOV L,C","MOV L,D","MOV L,E","MOV L,H","MOV L,L","MOV L,M","MOV L,A" 9070 DATA"MOV M,B","MOV M,C","MOV M,D","MOV M,E","MOV M,H","MOV M,L","HLT","MOV M,A","MOV A,B","MOV A,C","MOV A,D","MOV A,E","MOV A,H","MOV A,L","MOV A,M","MOV A,A" 9080 DATA"ADD B","ADD C","ADD D","ADD E","ADD H","ADD L","ADD M","ADD A","ADC B","ADC C","ADC D","ADC E","ADC H","ADC L","ADC M","ADC A" 9090 DATA"SUB B","SUB C","SUB D","SUB E","SUB H","SUB L","SUB M","SUB A","SBB B","SBB C","SBB D","SBB E","SBB H","SBB L","SBB M","SBB A" 9100 DATA"ANA B","ANA C","ANA D","ANA E","ANA H","ANA L","ANA M","ANA A","XRA B","XRA C","XRA D","XRA E","XRA H","XRA L","XRA M","XRA A" 9110 DATA"ORA B","ORA C","ORA D","ORA E","ORA H","ORA L","ORA M","ORA A","CMP B","CMP C","CMP D","CMP E","CMP H","CMP L","CMP M","CMP A" 9120 DATA"RNZ ","POP B","JNZ ","JMP ","CNZ ","PUSH B","ADI ","RST 0","RZ ","RET ","JZ "," ","CZ ","CALL ","ACI ","RST 1" 9130 DATA"RNC ","POP D","JNC ","OUT ","CNC ","PUSH D","SUI ","RST 2","RC "," ","JC ","IN ","CC "," ","SBI ","RST 3" 9140 DATA"RPO ","POP H","JPO ","XTHL ","CPO ","PUSH H","ANI ","RST 4","RPE ","PCHL ","JPE ","XCHG ","CPE "," ","XRI ","RST 5" 9150 DATA"RP ","POP A","JP ","DI ","CP ","PUSH A","ORI ","RST 6","RM ","SPHL ","JM ","EI ","CM "," ","CPI ","RST 7" 9300 DATA 6,14,22,30,38,46,54,62,198,206,211,214,219,222,230,238,246,254 9310 DATA 1,17,33,34,42,49,50,58,194,195,196,202,204,205,210,212,218,220,226,228,234,236,242,244,250,252