1 ' DISASM - By Gary Weber, 1992 2 ' For the NEC PC-8201a/8300 3 ' Based on Phil Wheeler's original 4 ' disassembler for M100. 5 ' Machine language for reading 6 ' option ROM, by Gary Weber 10 PRINT "working..." 20 MAXFILES=1:CLEAR500 30 DIMH$(15),M$(255,1) 40 GOTO 100 50 ' *SUBROUTINE TO GET OPT ROM BYTE* 60 POKE63913!,X\256 70 POKE63912!,X-(X\256)*256 80 EXEC 64448! 90 RETURN 100 FOR A=0 TO 14 110 READ B:POKE 64448!+A,B 120 NEXT 130 DATA 243,219,160,79,246,1,211,161 140 DATA 70,121,211,161,120,251,201 150 FORA=0TO15:READH$(A):NEXT 160 FORA=0TO255:READM$(A,0):M$(A,1)="1":NEXT 170 FORA=1TO18:READB2:M$(B2,1)="2":NEXT 180 FORA=1TO26:READB3:M$(B3,1)="3":NEXT 190 SCREEN,0:CLS:PRINT " *** NEC 8085 DISASSEMBLER ***":PRINT "By Gary Weber, 1992. PUBLIC DOMAIN":PRINT 200 LINEINPUT"Output to: ";FL$:IFFL$=""THENFL$="LCD:":PRINT"LCD: assumed":PRINT 210 OPENFL$FOROUTPUTAS1 220 INPUT"Starting address (decimal) ";S 230 INPUT"Ending address (decimal) ";E 240 PRINT 250 IF E<=S THEN PRINT "INVALID ADDRESSES!":GOTO 220 260 IF S<32767 THEN PRINT"(O)ption ROM? ";:I$=INPUT$(1):IF ASC(I$)>96 THEN I$=CHR$(ASC(I$)-32) 270 IFI$="O"ORI$="Y"THENPRINT"Option ROM selected" ELSE PRINT "Standard ROM selected" 280 G=0 290 FOR AD=S TO E 300 IFI$<>"O"ANDI$<>"Y"THENP=PEEK(AD)ELSEX=AD:GOSUB60:P=PEEK(63911!) 310 DE=P:GOSUB420:HD$=H2$ 320 C=P:GOSUB510:CH$=C$ 330 DE=AD:GOSUB450:AD$=H4$ 340 IFG<1THENPRINT#1,AD$;" ";ELSEG=G-1:GOTO390 350 PRINT#1,M$(P,0); 360 IFM$(P,1)="2"THENG=1:DE=PEEK(AD+1):GOSUB420:HD$=HD$+H2$:W$="$"+H2$:PRINT#1,W$;:C=DE:GOSUB510:CH$=CH$+C$ 370 IFM$(P,1)="3"THENG=2:DE=PEEK(AD+1):GOSUB420:HD$=HD$+H2$:W$=H2$:C=DE:GOSUB510:CH$=CH$+C$:DE=PEEK(AD+2):GOSUB420:HD$=HD$+H2$:W$="$"+H2$+W$:C=DE:GOSUB510:CH$=CH$+C$:PRINT#1,W$; 380 PRINT#1," ;";HD$;" ";CH$ 390 NEXT AD 400 END 410 REM 1 byte to 2 hex digits 420 H2$=H$(DE\16)+H$(DEMOD16) 430 RETURN 440 REM 2 byte to 4 hex digits 450 IFDE>32767THENH4$=H$(DE/4096):DE=DE-4096*FIX(DE/4096)ELSEH4$=H$(DE\4096):DE=DEMOD4096 460 H4$=H4$+H$(DE\256):DE=DEMOD256 470 GOSUB420 480 H4$=H4$+H2$ 490 RETURN 500 REM ctrl char filter 510 IFC<32THENC$="^"+CHR$(C+64):RETURN 520 IFC>127THENC$="("+RIGHT$(STR$(C),LEN(STR$(C))-1)+")":RETURN 530 C$=CHR$(C):RETURN 540 DATA "0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F":DATA"NOP ","LXI BC,","STAX BC","INX BC","INR B","DCR B","MVI B,","RLC "," ","DAD BC","LDAX BC","DCX BC","INR C","DCR C","MVI C,","RRC " 550 DATA" ","LXI DE,","STAX DE","INX DE","INR D","DCR D","MVI D,","RAL "," ","DAD DE","LDAX DE","DCX DE","INR E","DCR E","MVI E,","RAR " 560 DATA"RIM ","LXI HL,","SHLD ","INX HL","INR H","DCR H","MVI H,","DAA"," ","DAD HL","LHLD ","DCX HL","INR L","DRC L","MVI L,","CMA " 570 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 " 580 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" 590 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" 600 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" 610 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" 620 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" 630 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" 640 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" 650 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" 660 DATA"RNZ ","POP BC","JNZ ","JMP ","CNZ ","PUSH BC","ADI ","RST 0","RZ ","RET ","JZ "," ","CZ ","CALL ","ACI ","RST 1":DATA"RNC ","POP DE","JNC ","OUT ","CNC ","PUSH DE","SUI ","RST 2","RC "," ","JC ","IN ","CC "," ","SBI ","RST 3" 670 DATA"RPO ","POP HL","JPO ","XTHL ","CPO ","PUSH HL","ANI ","RST 4","RPE ","PCHL ","JPE ","XCHG ","CPE "," ","XRI ","RST 5":DATA"RP ","POP AF","JP ","DI ","CP ","PUSH AF","ORI ","RST 6","RM ","SPHL ","JM ","EI ","CM "," ","CPI ","RST 7" 680 DATA 6,14,22,30,38,46,54,62,198,206,211,214,219,222,230,238,246,254: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