Compucolor.org – Virtual Media

Listing of file='DASM.BAS;01' on disk='vmedia/utility-sector.ccvf'

10 REM   8080 DISASSEMBLER - OUTPUT TO CRT
20 PLOT 12
50 DATA "0","1","2","3","4","5","6","7"
53 DATA "8","9","A","B","C","D","E","F"
100 DATA "NOP",1,"LXI  B,",3
102 DATA "STAX B",1,"INX  B",1
104 DATA "INR  B",1,"DCR  B",1
106 DATA "MVI  B,",2,"RLC",1
108 DATA "??=08",1,"DAD  B",1
110 DATA "LDAX B",1,"DCX  B",1
112 DATA "INR  C",1,"DCR  C",1
114 DATA "MVI  C,",2,"RRC",1
116 DATA "??=10",1,"LXI  D,",3
118 DATA "STAX D",1,"INX  D",1
120 DATA "INR  D",1,"DCR  D",1
122 DATA "MVI  D,",2,"RAL",1
124 DATA "??=18",1,"DAD  D",1
126 DATA "LDAX D",1,"DCX  D",1
128 DATA "INR  E",1,"DCR  E",1
130 DATA "MVI  E,",2,"RAR",1
132 DATA "??=20",1,"LXI  H,",3
134 DATA "SHLD ",3,"INX  H",1
136 DATA "INR  R",1,"DCR  H",1
138 DATA "MVI  H,",2,"DAA",1
140 DATA "??=28",1,"DAD  H",1
142 DATA "LHLD ",3,"DCX  H",1
144 DATA "INR  L",1,"DCR  L",1
146 DATA "MVI  L,",2,"CMA",1
148 DATA "??=30",1,"LXI  SP,",3
150 DATA "STA  ",3,"INX  SP",1
152 DATA "INR  M",1,"DCR  M",1
154 DATA "MVI  M,",2,"STC",1
156 DATA "??=38",1,"DAD  SP",1
158 DATA "LDA  ",3,"DCX  SP",1
160 DATA "INR  A",1,"DCR  A",1
162 DATA "MVI  A,",2,"CMC",1
164 DATA "MOV  B,B",1,"MOV  B,C",1
166 DATA "MOV  B,D",1,"MOV  B,E",1
168 DATA "MOV  B,H",1,"MOV  B,L",1
170 DATA "MOV  B,M",1,"MOV  B,A",1
172 DATA "MOV  C,B",1,"MOV  C,C",1
174 DATA "MOV  C,D",1,"MOV  C,E",1
176 DATA "MOV  C,H",1,"MOV  C,L",1
178 DATA "MOV  C,M",1,"MOV  C,A",1
180 DATA "MOV  D,B",1,"MOV  D,C",1
182 DATA "MOV  D,D",1,"MOV  D,E",1
184 DATA "MOV  D,H",1,"MOV  D,L",1
186 DATA "MOV  D,M",1,"MOV  D,A",1
188 DATA "MOV  E,B",1,"MOV  E,C",1
190 DATA "MOV  E,D",1,"MOV  E,E",1
192 DATA "MOV  E,H",1,"MOV  E,L",1
194 DATA "MOV  E,M",1,"MOV  E,A",1
196 DATA "MOV  H,B",1,"MOV  H,C",1
198 DATA "MOV  H,D",1,"MOV  H,E",1
200 DATA "MOV  H,H",1,"MOV  H,L",1
202 DATA "MOV  H,M",1,"MOV  H,A",1
204 DATA "MOV  L,B",1,"MOV  L,C",1
206 DATA "MOV  L,D",1,"MOV  L,E",1
208 DATA "MOV  L,H",1,"MOV  L,L",1
210 DATA "MOV  L,M",1,"MOV  L,A",1
212 DATA "MOV  M,B",1,"MOV  M,C",1
214 DATA "MOV  M,D",1,"MOV  M,E",1
216 DATA "MOV  M,H",1,"MOV  M,L",1
218 DATA "HALT",1,"MOV  M,A",1
220 DATA "MOV  A,B",1,"MOV  A,C",1
222 DATA "MOV  A,D",1,"MOV  A,E",1
224 DATA "MOV  A,H",1,"MOV  A,L",1
226 DATA "MOV  A,M",1,"MOV  A,A",1
228 DATA "ADD  B",1,"ADD  C",1
230 DATA "ADD  D",1,"ADD  E",1
232 DATA "ADD  H",1,"ADD  L",1
234 DATA "ADD  M",1,"ADD  A",1
236 DATA "ADC  B",1,"ADC  C",1
238 DATA "ADC  D",1,"ADC  E",1
240 DATA "ADC  H",1,"ADC  L",1
242 DATA "ADC  M",1,"ADC  A",1
244 DATA "SUB  B",1,"SUB  C",1
246 DATA "SUB  D",1,"SUB  E",1
248 DATA "SUB  H",1,"SUB  L",1
250 DATA "SUB  M",1,"SUB  A",1
252 DATA "SBB  B",1,"SBB  C",1
254 DATA "SBB  D",1,"SBB  E",1
256 DATA "SBB  H",1,"SBB  L",1
258 DATA "SBB  M",1,"SBB  A",1
408 DATA "ANA  B",1,"ANA  C",1
410 DATA "ANA  D",1,"ANA  E",1
412 DATA "ANA  H",1,"ANA  L",1
414 DATA "ANA  M",1,"ANA  A",1
416 DATA "XRA  B",1,"XRA  C",1
418 DATA "XRA  D",1,"XRA  E",1
420 DATA "XRA  H",1,"XRA  L",1
422 DATA "XRA  M",1,"XRA  A",1
424 DATA "ORA  B",1,"ORA  C",1
426 DATA "ORA  D",1,"ORA  E",1
428 DATA "ORA  H",1,"ORA  L",1
430 DATA "ORA  M",1,"ORA  A",1
432 DATA "CMP  B",1,"CMP  C",1
434 DATA "CMP  D",1,"CMP  E",1
436 DATA "CMP  H",1,"CMP  L",1
438 DATA "CMP  M",1,"CMP  A",1
440 DATA "RNZ",1,"POP  B",1
442 DATA "JNZ  ",3,"JMP  ",3
444 DATA "CNZ  ",3,"PUSH B",1
446 DATA "ADI  ",2,"RST  00H",1
448 DATA "RZ",1,"RET",1
450 DATA "JZ   ",3,"??=CB",1
452 DATA "CZ   ",3,"CALL ",3
454 DATA "ACI  ",2,"RST  08H",1
456 DATA "RNZ",1,"POP  D",1
458 DATA "JNC  ",3,"OUT  ",2
460 DATA "CNC  ",3,"PUSH D",1
462 DATA "SUI  ",2,"RST  10H",1
464 DATA "RC",1,"??=D9",1
466 DATA "JC   ",3,"IN   ",2
468 DATA "CC   ",3,"??=DD",1
470 DATA "SBI  ",2,"RST  18H",1
472 DATA "RPO",1,"POP  H",1
474 DATA "JPO  ",3,"XTHL",1
476 DATA "CPO  ",3,"PUSH H",1
478 DATA "ANI  ",2,"RST  20H",1
480 DATA "RPE",1,"PCHL",1
482 DATA "JPE  ",3,"XCHG",1
484 DATA "CPE  ",3,"??=ED",1
486 DATA "XRI  ",2,"RST  28H",1
488 DATA "RP",1,"POP  PSW",1
490 DATA "JP   ",3,"DI",1
492 DATA "CP   ",3,"PUSH PSW",1
494 DATA "ORI  ",2,"RST  30H",1
496 DATA "RM",1,"SPHL",1
498 DATA "JM   ",3,"EI",1
500 DATA "CM   ",3,"??=FD",1
502 DATA "CPI  ",2,"RST  38H",1
1010 PRINT "8080 DISASSEMBLER - OUTPUT TO CRT"
1011 CLEAR 100
1012 DIM N1$(255),NB(255)
1014 DIM HX$(15)
1016 FOR J= 0TO 15
1017 READ HX$(J)
1018 NEXT J
1020 INPUT "START ADDRESS (HEX)? ";ST$
1022 AD$= ST$
1024 GOSUB 3300
1026 ST= AD
1030 INPUT "END   ADDRESS (HEX)? ";ND$
1032 AD$= ND$
1034 GOSUB 3300
1036 ND= AD
1038 FOR I= 0TO 255
1040 READ N1$(I),NB(I)
1042 NEXT I
1048 I= ST
1050 B= PEEK (I)
1052 AD= B:GOSUB 3006:C1$= AD$:C2$= "  ":C3$= "  "
1054 AD= I
1056 GOSUB 3000
1058 LOCN$= AD$
1060 N1$= N1$(B)
1062 N2$= ""
1070 NO= NB(B)
1080 IF NO= 1THEN 2000
1090 I= I+ 1
1100 B= PEEK (I)
1112 AD= B
1114 GOSUB 3006:C2$= AD$
1116 IF NO= 2THEN 1170
1120 I= I+ 1
1130 C= PEEK (I)
1132 AD= C:GOSUB 3006:C3$= AD$
1140 B= B+ 256* C
1150 AD= B
1160 GOSUB 3000
1170 N2$= AD$+ "H"
2000 REM
2008 PRINT LOCN$;"H ";C1$;C2$;C3$;" ";N1$;N2$
2010 I= I+ 1
2020 IF I< = NDGOTO 1050
2999 END
3000 REM  *** CONVERT ADDRESS AD TO HEX
3005 AD$= "":GOTO 3010
3006 AD$= "":GOTO 3070
3010 V= INT (AD/ 4096)
3020 AD= AD- V* 4096
3030 GOSUB 3200
3040 V= INT (AD/ 256)
3050 AD= AD- V* 256
3060 GOSUB 3200
3070 V= INT (AD/ 16)
3080 AD= AD- V* 16
3090 GOSUB 3200
3100 V= INT (AD)
3110 AD= AD- V
3120 GOSUB 3200
3130 RETURN
3200 IF V< 10THEN AD$= AD$+ RIGHT$ (STR$ (V),1)
3210 IF V= 10THEN AD$= AD$+ "A"
3220 IF V= 11THEN AD$= AD$+ "B"
3230 IF V= 12THEN AD$= AD$+ "C"
3240 IF V= 13THEN AD$= AD$+ "D"
3250 IF V= 14THEN AD$= AD$+ "E"
3260 IF V= 15THEN AD$= AD$+ "F"
3270 RETURN
3300 REM  *** CONVERT HEX ADDRESS TO DECIMAL
3310 AD= 0
3320 FOR KA= 1TO 4
3330 C$= MID$ (AD$,KA,1)
3340 FOR KB= 0TO 15
3350 IF C$= HX$(KB)THEN 3390
3360 NEXT KB
3370 PRINT "ADDRESS NOT IN HEX"
3380 RUN
3390 AD= INT (AD+ KB* 16^ (4- KA)+ 0.5)
3400 NEXT KA
3410 RETURN