100 REM 8080 DISASSEMBLER D. NIXON/ B. PARHAM 4-20-77 110 DEFINT A-Z 120 DIM M$(255),N1(255) 130 PA=59:PC=0 140 FOR I = O TO 255:READ M$(I),N1(I):NEXT 150 INPUT "STARTING ADDRESS";S 160 INPUT "ENDING ADDRESS";E 170 PRINT:PRINT:PRINT 180 FOR N=S TO E 190 X=PEEK(N):L$=HEX$(X):GOSUB 440:B$=L$:A$=HEX$(N) 200 A$=STRING$(4-LEN(A$),"0")+A$ 210 N2$="":N3$="" 220 IF N1(X)>1 THEN L$=HEX$(PEEK(N+1)):GOSUB 440:N2$=L$ 230 IF N1(X)=3 THEN L$=HEX$(PEEK(N+2)):GOSUB 440:N3$=L$ 240 PRINT A$;TAB(6);B$; 250 IF N1(X)>1 THEN PRINT " ";N2$; 260 IF N1(X)>2 THEN PRINT " ";N3$; 270 LM=LEN(M$(X)) 280 IF LM<2 THEN 340 290 P=INSTR(M$(X)," ") 300 IF P=0 THEN PRINT TAB(20);M$(X);TAB(25);:GOTO320 310 PRINT TAB(20);LEFT$(M$(X),P-1);TAB(26);RIGHT$(M$(X),LM-P); 320 IF N1(X)>1 AND LM >4 THEN C$="," ELSE C$=" " 330 IFN1(X)>1 THEN PRINT C$+"0";N3$;N2$;"H"; 340 PRINT TAB(40);:Y=X:GOSUB 450 350 IF N1(X)>1 THEN Y=PEEK(N+1):GOSUB 450 360 IF N1(X)=3 THEN Y=PEEK(N+2):GOSUB 450 370 IF N1(X)>1 THEN PRINT TAB(50);M$(PEEK(N+1)); 380 IF N1(X)=3 THEN PRINT TAB(60);M$(PEEK(N+2)); 390 PRINT 400 N=N+N1(X)-1 410 PC=PC+1:IF PC>PA THEN PC=0:FOR I=1 TO 8:PRINT:NEXT I 420 NEXT N 430 END 440 L$=STRING$(2-LEN(L$),"0")+L$:RETURN 450 Z$=" ":IF Y> 127 THEN Y=Y-128:Z$="*" 460 IF Y<32 OR Y>126 THEN Y=42:Z$="*" 470 PRINT CHR$(Y);Z$;" "; 480 RETURN 490 DATA NOP,1,LXI B,3,STAX B,3,INX B,1,INR B,1,DCR B,1,MVI B,2,RCL 500 DATA1," ",1,DAD B,1,LDAX B,1,DCX B,1,INR C,1,DCR C,1,MVI C,2,RRC 510 DATA1," ",1,LXI D,3,STAX D,1,INX D,1,INR D,1,DCR D,1,MVI D,2,RAL,1 520 DATA" ",1,DAD D,1,LDAX D,1,DCX D,1,INR E,1,DCR E,1,MVI E,2,RAR,1 530 DATA" ",1,LXI H,3,SHLD,3,INX H,1,INR H,1,DCR H,1,MVI H,2,DAA,1 540 DATA" ",1,DAD H,1,LHLD,3,DCX H,1,INR L,1,DCR L,1,MVI L,2,CMA,1 550 DATA" ",1,LXI SP,3,STA,3,INX SP,1,INR M,1,DCR M,1,MVI M,2,STC,1 560 DATA" ",1,DAD SP,1,LDA,3,DCX SP,1,INR A,1,DCR A,1,MVI A,2,CMC,1 570 DATA "MOV B,B",1,"MOV B,C",1,"MOV B,D",1,"MOV B,E",1 580 DATA"MOV B,H",1,"MOV B,L",1,"MOV B,M",1,"MOV B,A",1 590 DATA"MOV C,B",1,"MOV C,C",1,"MOV C,D",1,"MOV C,E",1 600 DATA"MOV C,H",1,"MOV C,L",1,"MOV C,M",1,"MOV C,A",1 610 DATA"MOV D,B",1,"MOV D,C",1,"MOV D,D",1,"MOV D,E",1 620 DATA"MOV D,H",1,"MOV D,L",1,"MOV D,M",1,"MOV D,A",1 630 DATA"MOV E,B",1,"MOV E,C",1,"MOV E,D",1,"MOV E,E",1 640 DATA"MOV E,H",1,"MOV E,L",1,"MOV E,M",1,"MOV E,A",1 650 DATA"MOV H,B",1,"MOV H,C",1,"MOV H,D",1,"MOV H,E",1 660 DATA"MOV H,H",1,"MOV H,L",1,"MOV H,M",1,"MOV H,A",1 670 DATA"MOV L,B",1,"MOV L,C",1,"MOV L,D",1,"MOV L,E",1 680 DATA"MOV L,H",1,"MOV L,L",1,"MOV L,M",1,"MOV L,A",1 690 DATA"MOV M,B",1,"MOV M,C",1,"MOV M,D",1,"MOV M,E",1 700 DATA"MOV M,H",1,"MOV M,L",1,"HLT",1,"MOV M,A",1 710 DATA"MOV A,B",1,"MOV A,C",1,"MOV A,D",1,"MOV A,E",1 720 DATA"MOV A,H",1,"MOV A,L",1,"MOV A,M",1,"MOV A,A",1 730 DATAADD B,1,ADD C,1,ADD D,1,ADD E,1,ADD H,1,ADD L,1,ADD M,1,ADD A,1 740 DATAADC B,1,ADC C,1,ADC D,1,ADC E,1,ADC H,1,ADC L,1,ADC M,1,ADC A,1 750 DATASUB B,1,SUB C,1,SUB D,1,SUB E,1,SUB H,1,SUB L,1,SUB M,1,SUB A,1 760 DATASBB B,1,SBB C,1,SBB D,1,SBB E,1,SBB H,1,SBB L,1,SBB M,1,SBB A,1 770 DATAANA B,1,ANA C,1,ANA D,1,ANA E,1,ANA H,1,ANA L,1,ANA M,1,ANA A,1 780 DATAXRA B,1,XRA C,1,XRA D,1,XRA E,1,XRA H,1,XRA L,1,XRA M,1,XRA A,1 790 DATAORA B,1,ORA C,1,ORA D,1,ORA E,1,ORA H,1,ORA L,1,ORA M,1,ORA A,1 800 DATACMP B,1,CMP C,1,CMP D,1,CMP E,1,CMP H,1,CMP L,1,CMP M,1,CMP A,1 810 DATA RNZ,1,POP B,1,JNZ,3,JMP,3,CNZ,3,PUSH B,1,ADI,2,RST 0,1 820 DATA RZ,1,RET,1,JZ,3," ",1,CZ,3,CALL,3,ACI,2,RST 1,1 830 DATA RNC,1,POP D,1,JNC,3,OUT,2,CNC,3,PUSH D,1,SUI,2,RST 2,1 840 DATA RC,1," ",1,JC,3,IN,2,CC,3," ",1,SBI,2,RST 3,1 850 DATA"RPO",1,POP H,1,JPO,3,XTHL,1,CPO,3,PUSH H,1,ANI,2,RST 4,1 860 DATA RPE,1,PCHL,1,JPE,3,XCHG,1,CPE,3," ",1,XRI,2,RST 5,1 870 DATA RP,1,POP PSW,1,JP,3,DI,1,CP,3,PUSH PSW,1,ORI,2,PST 6,1 880 DATA RM,1,SPHL,1,JM,3,EI,1,CM,3," ",1,CPI,2,RST 7,1 5,1 870 DATA RP,1,POP PSW,1,JP,3,DI,1,CP,3,PUSH PSW,1,ORI,2,PST 6,1 880 DATA