Listing of file='8080D.BAS;01' on disk='vmedia/utility-sector.ccvf'
5 DIM X(8):CLEAR 200 10 DIM SR$(7):FOR X= 0TO 7:READ SR$(X):NEXT 20 DATA "B","C","D","E","H","L","M","A" 30 DIM CF$(7):FOR X= 0TO 7:READ CF$(X):NEXT 40 DATA "NZ","Z","NC","C","PO","PE","P ","M " 50 DIM DR$(7):FOR X= 0TO 7:READ DR$(X):NEXT 60 DATA "B","BC","D","DE","H","HL","SP","SP" 70 DIM CH$(32):FOR X= 0TO 32:READ CH$(X):NEXT 80 DATA "<NULL>","<AUTO>","<PLOT>","<CURSR X,Y>","?","?","<CCI>" 90 DATA "?","<HOME>","<TAB>","<LNFEED>","<ERASE LN>" 100 DATA "<ERASE PG>","<RETN>","<A7 ON>","<BLNK/A7 OFF>" 110 DATA "<BLACK>","<RED>","<GREEN>","<YELLOW>","<BLUE>" 120 DATA "<MAGNTA>","<CYAN>","<WHITE>","<TRNSMIT>" 130 DATA "<CRSR RGHT>","<CRSR LFT>","<ESC>","<CRSR UP>" 140 DATA "<FG ON/FL OFF>","<BG ON/FL ON>","<BLNK ON>","<SPACE>" 145 PLOT 12 147 PRINT 150 PRINT TAB( 10);"==========8080 DISASSEMBLER==========" 160 PRINT TAB( 18);"BY L.J. WILSON (8/1980)" 170 PRINT :PRINT 180 INPUT "ENTER MEMORY START ADDRESS ( DECIMAL ):";N 190 INPUT "ENTER MEMORY STEPS TO END :";STP:M= N+ STP 195 PLOT 11,28,11,28,11 196 PRINT " ----- --- --- ------------------------- -----------" 197 PRINT " MEM";TAB( 21);"ASSEMBLY";TAB( 42);"ASCII REF'S" 198 PRINT " ORY (DEC)(OCT) INSTRUCTION" 199 PRINT " ----- --- --- ------------------------- -----------" 200 IF M< 0OR M> 65536THEN PRINT "OUT OF RANGE":GOTO 180 230 IF M< NTHEN 3000:REM REPEAT ROUTINE 240 PRINT "":PRINT N; 250 Q= PEEK (N):S= (QAND 56)/ 8:T= QAND 7 252 U= Q 255 PRINT TAB( 6);"";Q; 257 GOSUB 4000 260 PRINT TAB( 11);"";C;" ";TAB( 16); 280 ON U/ 64+ 1GOSUB 500,1000,1500,2000 290 PRINT TAB( 41);CHR$ (28);:Z= U:GOSUB 330 300 Z= V:GOSUB 330 310 Z= O:GOSUB 330 320 U= 257:V= 257:O= 257:N= N+ 1:GOTO 230 330 IF Z> 32AND Z< 127THEN PRINT CHR$ (Z);:RETURN 340 IF Z= 257THEN RETURN 350 GOSUB 2700 360 RETURN 370 N= N+ 1:GOTO 230 500 ON T+ 1GOTO 510,530,550,650,680,690,700,720 510 IF S= 0THEN PRINT "NOP":RETURN 520 PRINT "ILLOGICAL":RETURN 530 ON S+ 1GOTO 535,545,535,545,535,545,535,545 535 PRINT "LXI ";DR$(S);:GOSUB 2500 540 PRINT :RETURN 545 PRINT "DAD ";DR$(S):RETURN 550 ON S+ 1GOTO 560,570,560,570,580,600,610,630 560 PRINT "STAX ";DR$(S):RETURN 570 PRINT "LDAX ";DR$(S):RETURN 580 PRINT "SHLD ";:GOSUB 2500 590 PRINT :RETURN 600 PRINT "LHLD ";:GOSUB 2500 605 PRINT :RETURN 610 PRINT "STA ";:GOSUB 2500 620 PRINT :RETURN 630 PRINT "LDA ";:GOSUB 2500 640 PRINT :RETURN 650 ON S+ 1GOTO 660,670,660,670,660,670,660,670 660 PRINT "INX ";DR$(S):RETURN 670 PRINT "DCX ";DR$(S):RETURN 680 PRINT "INR ";DR$(S):RETURN 690 PRINT "DCR ";DR$(S):RETURN 700 PRINT "MVI ";SR$(S);:GOSUB 2600 710 PRINT :RETURN 720 ON S+ 1GOTO 730,740,750,760,770,780,790,800 730 PRINT "RLC ":RETURN 740 PRINT "RRC ":RETURN 750 PRINT "RAL ":RETURN 760 PRINT "RAR ":RETURN 770 PRINT "DAA ":RETURN 780 PRINT "CMA ":RETURN 790 PRINT "STC ":RETURN 800 PRINT "CMC ":RETURN 1000 IF S= 6AND T= 6THEN PRINT "HLT":RETURN 1010 PRINT "MOV ";SR$(S);",";SR$(T):RETURN 1500 ON S+ 1GOTO 1510,1520,1530,1540,1550,1560,1570,1580 1510 PRINT "ADD ";SR$(T):RETURN 1520 PRINT "ADC ";SR$(T):RETURN 1530 PRINT "SUB ";SR$(T):RETURN 1540 PRINT "SBB ";SR$(T):RETURN 1550 PRINT "ANA ";SR$(T):RETURN 1560 PRINT "XRA ";SR$(T):RETURN 1570 PRINT "ORA ";SR$(T):RETURN 1580 PRINT "CMP ";SR$(T):RETURN 2000 ON T+ 1GOTO 2010,2020,2090,2110,2230,2250,2320,2470 2010 PRINT "R";CF$(S):RETURN 2020 ON S+ 1GOTO 2030,2040,2030,2050,2030,2060,2070,2080 2030 PRINT "POP ";DR$(S):RETURN 2040 PRINT "RET":RETURN 2050 PRINT "ILLOGICAL":RETURN 2060 PRINT "PCHL":RETURN 2070 PRINT "POP PSW":RETURN 2080 PRINT "SPHL":RETURN 2090 PRINT "J";CF$(S);:GOSUB 2500 2100 PRINT :RETURN 2110 ON S+ 1GOTO 2120,2140,2150,2170,2190,2200,2210,2220 2120 PRINT "JMP ";:GOSUB 2500 2130 PRINT :RETURN 2140 PRINT "ILLOGICAL":RETURN 2150 PRINT "OUT ";:GOSUB 2600 2160 PRINT :RETURN 2170 PRINT "IN ";:GOSUB 2600 2180 PRINT :RETURN 2190 PRINT "XTHL":RETURN 2200 PRINT "XCHG":RETURN 2210 PRINT "DI":RETURN 2220 PRINT "EI":RETURN 2230 PRINT "C";CF$(S);:GOSUB 2500 2240 PRINT :RETURN 2250 ON S+ 1GOTO 2260,2270,2260,2290,2260,2290,2300,2290 2260 PRINT "PUSH";DR$(S):RETURN 2270 PRINT "CALL";:GOSUB 2500 2280 PRINT :RETURN 2290 PRINT "ILLOGICAL":RETURN 2300 PRINT "PUSH PSW":RETURN 2320 ON S+ 1GOTO 2330,2350,2370,2390,2410,2430,2430,2450 2330 PRINT "ADI ";:GOSUB 2600 2340 PRINT :RETURN 2350 PRINT "ACI ";:GOSUB 2600 2360 PRINT :RETURN 2370 PRINT "SUI ";:GOSUB 2600 2380 PRINT :RETURN 2390 PRINT "SBI ";:GOSUB 2600 2400 PRINT :RETURN 2410 PRINT "ANI ";:GOSUB 2600 2420 PRINT :RETURN 2430 PRINT "XRI ";:GOSUB 2600 2440 PRINT :RETURN 2450 PRINT "CPI ";:GOSUB 2600 2460 PRINT :RETURN 2470 PRINT "RST ";S:RETURN 2500 X= PEEK (N+ 2):Y= PEEK (N+ 1):N= N+ 2:W= 256* X+ Y 2510 V= Y:O= X 2520 PRINT "<";Y;"><";X;">";W;:RETURN 2600 X= PEEK (N+ 1):N= N+ 1:V= X 2610 PRINT "<";X;">";:RETURN 2700 IF Z= 127THEN PRINT "<DEL>";:RETURN 2710 IF Z> 127AND Z< 240THEN PRINT "?";:RETURN 2720 IF Z> 239AND Z< 256THEN PRINT "<PLT MODE>";:RETURN 2730 IF Z< 33THEN PRINT TAB( 39);CH$(Z);:RETURN 3000 PRINT :INPUT "HIT RETURN TO CONTINUE / Y TO RE-START / E TO END :";Q$ 3010 IF Q$= ""THEN PLOT 28,11:N= M:M= N+ STP:GOTO 200 3050 FOR I= 0TO 31:PLOT 3,0,I,11:NEXT 3070 IF Q$= "Y"THEN 145 3080 PLOT 12:END 4000 REM OCTAL CONVERSION ROUTINE 4140 C$= "" 4150 FOR D= 7TO 0STEP - 1 4160 DV= 2^ D:REM DV=DIVISOR 4170 C= INT (Q/ DV) 4180 IF C= 1THEN C$= C$+ "1":Q= Q- DV:GOTO 4200 4190 C$= C$+ "0" 4200 NEXT D 4230 FOR I= 1TO 8 4240 X(I)= VAL (MID$ (C$,I,1)) 4250 NEXT I 4270 A= X(6)* 4+ X(7)* 2+ X(8) 4280 B= (X(3)* 4+ X(4)* 2+ X(5))* 10 4290 C= (X(1)* 2+ X(2))* 100 4300 C= C+ B+ A 4310 RETURN