Listing of file='DISASM.BAS;01' on disk='vmedia/ncc_10-sector.ccvf'
100 REM BY MYRON T. STEFFY. SUN CITY, ARIZONA 8/79 110 PLOT 12,15,22 120 PRINT TAB( 10)"MACHINE TO ASSEMBLY LANGUAGE CONVERTER" 130 PRINT 180 PRINT TAB( 10)"THIS WILL TAKE 20 SECONDS TO LOAD THE ARRAY" 200 DIM D$(15,15) 210 FOR M= 0TO 15 220 FOR L= 0TO 15 230 READ D$(M,L) 240 DATA "NOP","LXI B, ++","STAX B","INX B","INR B","DCR B","MVI B, +","RLC" 250 DATA "0","DAD B","LDAX B","DCX B","INR C","DCR C","MVI C, +","RRC" 260 DATA "0","LXI D, ++","STAX D","INX D","INR D","DCR D","MVI D, +","RAL" 270 DATA "0","DAD D","LDAX D","DCX D","INR E","DCR E","MVI E, +","RAR" 280 DATA "RIM (8085)","LXI H, ++","SHLD ++","INX H","INR H","DCR H","MVI H, +","DAA" 290 DATA "0","DAD H","LHLD ++","DCX H","INR L","DCR L","MVI L, +","CMA" 300 DATA "SIM (8085)","LXI SP, ++","STA ++","INX SP","INR M","DCR M","MVI M, +","STC" 310 DATA "0","DAD SP","LDA ++","DCX SP","INR A","DCR A","MVI A, +","CMC" 320 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" 330 DATA "MOV C,B","MOV C,C","MOV C,D","MOV C,E","MOV C,H","MOV C,L","MOV C,M","MOV C,A" 340 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" 350 DATA "MOV E,B","MOV E,C","MOV E,D","MOV E,E","MOV E,H","MOV E,L","MOV E,M","MOV E,A" 360 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" 370 DATA "MOV L,B","MOV L,C","MOV L,D","MOV L,E","MOV L,H","MOV L,L","MOV L,M","MOV L,A" 380 DATA "MOV M,B","MOV M,C","MOV M,D","MOV M,E","MOV M,H","MOV M,L","HLT","MOV M,A" 390 DATA "MOV A,B","MOV A,C","MOV A,D","MOV A,E","MOV A,H","MOV A,L","MOV A,M","MOV A,A" 400 DATA "ADD B","ADD C","ADD D","ADD E","ADD H","ADD L","ADD M","ADD A" 410 DATA "ADC B","ADC C","ADC D","ADC E","ADC H","ADC L","ADC M","ADC A" 420 DATA "SUB B","SUB C","SUB D","SUB E","SUB H","SUB L","SUB M","SUB A" 430 DATA "SBB B","SBB C","SBB D","SBB E","SBB H","SBB L","SBB M","SBB A" 440 DATA "ANA B","ANA C","ANA D","ANA E","ANA H","ANA L","ANA M","ANA A" 450 DATA "XRA B","XRA C","XRA D","XRA E","XRA H","XRA L","XRA M","XRA A" 460 DATA "ORA B","ORA C","ORA D","ORA E","ORA H","ORA L","ORA M","ORA A" 470 DATA "CMP B","CMP C","CMP D","CMP E","CMP H","CMP L","CMP M","CMP A" 480 DATA "RNZ","POP B","JNZ ++","JMP ++","CNZ ++","PUSH B","ADI +","RST 0" 490 DATA "RZ","RET","JZ ++","0","CZ ++","CALL ++","ACI +","RST 1" 500 DATA "RNC","POP D","JNC ++","OUT +","CNC ++","PUSH D","SUI +","RST 2" 510 DATA "RC","0","JC ++","IN +","CC ++","0","SBI +","RST 3" 520 DATA "RPO","POP H","JPO ++","XTHL","CPO ++","PUSH H","ANI +","RST 4" 530 DATA "RPE","PCHL","JPE ++","XCHG","CPE ++","0","XRI +","RST 5" 540 DATA "RP","POP PSW","JP ++","DI","CP ++","PUSH PSW","ORI +","RST 6" 550 DATA "RM","SPHL","JM ++","EI","CM ++","0","CPI +","RST 7" 570 NEXT L 580 PRINT TAB( 28)"WORKING" 590 NEXT M 600 INPUT "WHAT IS THE STARTING ADDRESS IN DECIMAL ?";AD 601 IF AD< > 0THEN T= AD:GOSUB 1100:AD$= H$:GOTO 610 605 INPUT "WHAT IS THE STARTING ADDRESS IN HEX ?";AD$ 610 INPUT "WHAT IS THE SIZE IN BLOCKS FROM DISC DIRECTORY ? ";SZ$ 620 INPUT "INPUT THE LAST BYTE COUNT FROM DIRECTORY ? ";BT$ 625 GOSUB 50000:PRINT 630 H$= AD$:GOSUB 1000:AD= T 640 H$= SZ$:GOSUB 1000:SZ= T 650 H$= BT$:GOSUB 1000:BT= T 660 TM= AD+ ((SZ- 1)* 128)+ BT 665 CT= 7:REM STARTING LINE COUNT FOR PAGING 670 FOR D= ADTO TM 675 IF CT> 59THEN CT= 0:FOR C6= 0TO 6:PRINT :NEXT C6 680 N= PEEK (D) 690 M= INT (N/ 16):L= N- (M* 16) 700 G$= D$(M,L) 710 IF RIGHT$ (G$,2)= "++"THEN 900 720 IF RIGHT$ (G$,1)= "+"THEN 800 730 PRINT D;:PRINT TAB( 8)N; 735 CT= CT+ 1 740 PRINT TAB( 26)G$; 745 IF N> 31AND N< 97THEN PRINT TAB( 45)CHR$ (N); 750 T= D:GOSUB 1100:PRINT TAB( 50)H$+ " "; 760 T= N:GOSUB 1100:PRINT H$ 770 IF D> TMTHEN 985 780 NEXT D 790 GOTO 985 800 PRINT D;:PRINT TAB( 8)N; 810 CT= CT+ 1 820 PRINT TAB( 12)PEEK (D+ 1); 830 PRINT TAB( 26)G$; 835 PRINT TAB( 36)PEEK (D+ 1); 836 IF N> 31AND N< 97THEN PRINT TAB( 45)CHR$ (N); 840 T= D:GOSUB 1100:PRINT TAB( 50)H$+ " "; 850 T= N:GOSUB 1100:PRINT H$+ " "; 860 T= PEEK (D+ 1):GOSUB 1100:PRINT H$ 870 D= D+ 1:IF D> TMTHEN 985 880 NEXT D 890 GOTO 985 900 PRINT D;:PRINT TAB( 8)N; 910 CT= CT+ 1 920 PRINT TAB( 12)PEEK (D+ 1);:PRINT PEEK (D+ 2); 930 PRINT TAB( 26)G$; 935 PRINT TAB( 35)PEEK (D+ 1)+ PEEK (D+ 2)* 256; 936 IF N> 31AND N< 97THEN PRINT TAB( 45)CHR$ (N); 940 T= D:GOSUB 1100:PRINT TAB( 50)H$+ " "; 950 T= N:GOSUB 1100:PRINT H$+ " "; 960 T= PEEK (D+ 1):GOSUB 1100:PRINT H$+ " "; 970 T= PEEK (D+ 2):GOSUB 1100:PRINT H$ 975 D= D+ 2:IF D> TMTHEN 985 980 NEXT D 985 C= (D- AD- 1):T= C:GOSUB 1100 990 PRINT TAB( 15)"BYTE COUNT IS";C;" ";"( ";H$+ " H )" 995 GOSUB 51000:END 1000 REM HEX TO DECIMAL CONVERSION 1010 T= 0:E= 0:X= 1 1020 FOR I= LEN (H$)TO 1STEP - 1 1030 H= ASC (MID$ (H$,I,1))- 48:IF H> 9THEN H= H- 7 1040 IF (H< 0OR H> 15)THEN E= 1:RETURN 1050 T= T+ (H* X) 1060 X= X* 16 1070 NEXT I 1080 RETURN 1090 REM DECIMAL TO HEX CONVERSION 1100 H$= "":X= 4096:E= 0:IF (T< 0OR T> 65535)THEN E= 1:RETURN 1110 IF T< 256THEN X= 16 1120 H= INT (T/ X):T= T- (H* X) 1130 H= H+ 48:IF H> 57THEN H= H+ 7 1140 H$= H$+ CHR$ (H) 1150 X= X/ 16:IF X< 1THEN RETURN 1160 GOTO 1120 1170 END 50000 REM PRINTING SUBROUTINE 50010 INPUT "DO YOU WISH TO PRINT THE TABLE ? ( Y OR N ) ";PR$ 50020 IF PR$< > "Y"THEN RETURN 50025 INPUT "SET BAUD RATE ";BR 50030 PLOT 14,27,18,BR,15 50040 POKE 33289,80 50050 PLOT 27,13:REM ALL OUTPUT TO RS-232 PORT 50060 OUT 8,4:REM DISABLE INTERUPTS 50070 RETURN 51000 REM BACK TO BASIC SUBROUTINE 51010 OUT 8,255:REM ENABLES ALL INTERUPTS 51020 POKE 33265,0:REM RESTORES OUTPUT TO CRT 51030 RETURN