10 DEFINT A-Z 20 GOTO 2210 999 REM OPCODE TABLE 1000 DATA "NOP" 1001 DATA "LXI B,@" 1002 DATA "STAX B" 1003 DATA "INX B" 1004 DATA "INR B" 1005 DATA "DCR B" 1006 DATA "MVI B,#" 1007 DATA "RLC" 1008 DATA "---" 1009 DATA "DAD B" 1010 DATA "LDAX B" 1011 DATA "DCX B" 1012 DATA "INR C" 1013 DATA "DCR C" 1014 DATA "MVI C,#" 1015 DATA "RRC" 1016 DATA "---" 1017 DATA "LXI D,@" 1018 DATA "STAX D" 1019 DATA "INX D" 1020 DATA "INR D" 1021 DATA "DCR D" 1022 DATA "MVI D,#" 1023 DATA "RAL" 1024 DATA "---" 1025 DATA "DAD D" 1026 DATA "LDAX D" 1027 DATA "DCX D" 1028 DATA "INR E" 1029 DATA "DCR E" 1030 DATA "MVI E,#" 1031 DATA "RAR" 1032 DATA "RIM" 1033 DATA "LXI H,@" 1034 DATA "SHLD (@)" 1035 DATA "INX H" 1036 DATA "INR H" 1037 DATA "DCR H" 1038 DATA "MVI H,#" 1039 DATA "DAA" 1040 DATA "---" 1041 DATA "DAD H" 1042 DATA "LHLD (@)" 1043 DATA "DCX H" 1044 DATA "INR L" 1045 DATA "DCR L" 1046 DATA "MVI L,#" 1047 DATA "CMA" 1048 DATA "SIM" 1049 DATA "LXI SP,@" 1050 DATA "STA (@)" 1051 DATA "INX SP" 1052 DATA "INR M" 1053 DATA "DCR M" 1054 DATA "MVI M,#" 1055 DATA "STF" 1056 DATA "---" 1057 DATA "DAD SP" 1058 DATA "LDA (@)" 1059 DATA "DCX SP" 1060 DATA "INR A" 1061 DATA "DCR A" 1062 DATA "MVI A,#" 1063 DATA "CMC" 1064 DATA "MOV B,B" 1065 DATA "MOV B,C" 1066 DATA "MOV B,D" 1067 DATA "MOV B,E" 1068 DATA "MOV B,H" 1069 DATA "MOV B,L" 1070 DATA "MOV B,M" 1071 DATA "MOV B,A" 1072 DATA "MOV C,B" 1073 DATA "MOV C,C" 1074 DATA "MOV C,D" 1075 DATA "MOV C,E" 1076 DATA "MOV C,H" 1077 DATA "MOV C,L" 1078 DATA "MOV C,M" 1079 DATA "MOV C,A" 1080 DATA "MOV D,B" 1081 DATA "MOV D,C" 1082 DATA "MOV D,D" 1083 DATA "MOV D,E" 1084 DATA "MOV D,H" 1085 DATA "MOV D,L" 1086 DATA "MOV D,M" 1087 DATA "MOV D,A" 1088 DATA "MOV E,B" 1089 DATA "MOV E,C" 1090 DATA "MOV E,D" 1091 DATA "MOV E,E" 1092 DATA "MOV E,H" 1093 DATA "MOV E,L" 1094 DATA "MOV E,M" 1095 DATA "MOV E,A" 1096 DATA "MOV H,B" 1097 DATA "MOV H,C" 1098 DATA "MOV H,D" 1099 DATA "MOV H,E" 1100 DATA "MOV H,H" 1101 DATA "MOV H,L" 1102 DATA "MOV H,M" 1103 DATA "MOV H,A" 1104 DATA "MOV L,B" 1105 DATA "MOV L,C" 1106 DATA "MOV L,D" 1107 DATA "MOV L,E" 1108 DATA "MOV L,H" 1109 DATA "MOV L,L" 1110 DATA "MOV L,M" 1111 DATA "MOV L,A" 1112 DATA "MOV M,B" 1113 DATA "MOV M,C" 1114 DATA "MOV M,D" 1115 DATA "MOV M,E" 1116 DATA "MOV M,H" 1117 DATA "MOV M,L" 1118 DATA "HLT" 1119 DATA "MOV M,A" 1120 DATA "MOV A,B" 1121 DATA "MOV A,C" 1122 DATA "MOV A,D" 1123 DATA "MOV A,E" 1124 DATA "MOV A,H" 1125 DATA "MOV A,L" 1126 DATA "MOV A,M" 1127 DATA "MOV A,A" 1128 DATA "ADD B" 1129 DATA "ADD C" 1130 DATA "ADD D" 1131 DATA "ADD E" 1132 DATA "ADD H" 1133 DATA "ADD L" 1134 DATA "ADD M" 1135 DATA "ADD A" 1136 DATA "ADC B" 1137 DATA "ADC C" 1138 DATA "ADC D" 1139 DATA "ADC E" 1140 DATA "ADC H" 1141 DATA "ADC L" 1142 DATA "ADC M" 1143 DATA "ADC A" 1144 DATA "SUB B" 1145 DATA "SUB C" 1146 DATA "SUB D" 1147 DATA "SUB E" 1148 DATA "SUB H" 1149 DATA "SUB L" 1150 DATA "SUB M" 1151 DATA "SUB A" 1152 DATA "SBB B" 1153 DATA "SBB C" 1154 DATA "SBB D" 1155 DATA "SBB E" 1156 DATA "SBB H" 1157 DATA "SBB L" 1158 DATA "SBB M" 1159 DATA "SBB A" 1160 DATA "ANA B" 1161 DATA "ANA C" 1162 DATA "ANA D" 1163 DATA "ANA E" 1164 DATA "ANA H" 1165 DATA "ANA L" 1166 DATA "ANA M" 1167 DATA "ANA A" 1168 DATA "XRA B" 1169 DATA "XRA C" 1170 DATA "XRA D" 1171 DATA "XRA E" 1172 DATA "XRA H" 1173 DATA "XRA L" 1174 DATA "XRA M" 1175 DATA "XRA A" 1176 DATA "ORA B" 1177 DATA "ORA C" 1178 DATA "ORA D" 1179 DATA "ORA E" 1180 DATA "ORA H" 1181 DATA "ORA L" 1182 DATA "ORA M" 1183 DATA "ORA A" 1184 DATA "CMP B" 1185 DATA "CMP C" 1186 DATA "CMP D" 1187 DATA "CMP E" 1188 DATA "CMP H" 1189 DATA "CMP L" 1190 DATA "CMP M" 1191 DATA "CMP A" 1192 DATA "RNZ" 1193 DATA "POP B" 1194 DATA "JNZ,@" 1195 DATA "JMP,@" 1196 DATA "CNZ,@" 1197 DATA "PUSH B" 1198 DATA "ADI #" 1199 DATA "RST 0" 1200 DATA "RZ" 1201 DATA "RET" 1202 DATA "JZ @" 1203 DATA "---" 1204 DATA "CZ,@" 1205 DATA "CALL @" 1206 DATA "ACI #" 1207 DATA "RST 1" 1208 DATA "RNC" 1209 DATA "POP D" 1210 DATA "JNC @" 1211 DATA "OUT (#)" 1212 DATA "CNC,@" 1213 DATA "PUSH D" 1214 DATA "SUI #" 1215 DATA "RST 2" 1216 DATA "RC" 1217 DATA "---" 1218 DATA "JC,@" 1219 DATA "IN (#)" 1220 DATA "CC,@" 1221 DATA "---" 1222 DATA "SBI #" 1223 DATA "RST 3" 1224 DATA "RPO" 1225 DATA "POP H" 1226 DATA "JPO @" 1227 DATA "XTHL" 1228 DATA "CPO,@" 1229 DATA "PUSH H" 1230 DATA "ANI #" 1231 DATA "RST 4" 1232 DATA "RPE" 1233 DATA "PCHL" 1234 DATA "JPE @" 1235 DATA "XCHG" 1236 DATA "CPE,@" 1237 DATA "---" 1238 DATA "XRI #" 1239 DATA "RST 5" 1240 DATA "RP" 1241 DATA "POP PSW" 1242 DATA "JP @" 1243 DATA "DI" 1244 DATA "CP,@" 1245 DATA "PUSH PSW" 1246 DATA "ORI #" 1247 DATA "RST 6" 1248 DATA "RM" 1249 DATA "SPHL" 1250 DATA "JM @" 1251 DATA "EI" 1252 DATA "CM,@" 1253 DATA "---" 1254 DATA "CPI #" 1255 DATA "RST 7" 2210 ON ERROR GOTO3320'** SET POINTER TO LINE 3320 2220 PA!=PEEK(64217!)*256+PEEK(64216!)' ** PA! POINTS TO LINE 3320 ** 2230 ON ERROR GOTO 0'** CLEAR ERROR TRAP ** 3200 CLS:PRINT"Disassembler-NEC: Adapted from";CHR$(34);"Disassem-bler 100";CHR$(34); 3201 PRINT" by Jesse Bob Overholt & DennisF.Brothers,DISFIX patch by Chuck WelbornAdapted for PC-8201 by Robinson Markel" 3210 INPUT "Start address";X$:IF LEFT$(X$,1)="H"THEN X$=MID$(X$,2):GOSUB 20000:AD!=X!ELSE AD!=VAL(X$) 3220 INPUT " End address";X$:IFLEFT$(X$,1)="H"THEN X$=MID$(X$,2):GOSUB 20000:EA!=X!ELSE EA!=VAL(X$) 3230 LINE INPUT "Output to: ";FL$:IF FL$="" THEN FL$="LCD:" 3240 IF FL$="LCD" OR FL$="LPT" OR FL$="RAM" THEN FL$=FL$+":" 3245 IFFL$="RAM:"THENLOCATE14,5:INPUT": FILE NAME";FL$ 3250 OPEN FL$ FOR OUTPUT AS 1 3260 LC=0 3300 X!=AD!:GOSUB 21000:AD$=X$ 3310 OP$=STR$(1000+PEEK(AD!)):FOR I=1 TO LEN(OP$):POKEPA!+7+I,ASC(MID$(OP$,I,1)) :NEXT I 3320 RESTORE 1210 : REM DON'T CHANGE THIS LINE 3330 READ OP$:A$="":H$="":GOSUB 10000:AD!=AD!+1 3400 L=INSTR(OP$,"@"):IF L=0 THEN 3500 3410 X!=PEEK(AD!)+PEEK(AD!+1)*256:GOSUB 21000:OP$=LEFT$(OP$,L-1)+X$+MID$(OP$,L+1) 3420 GOSUB 10000:AD!=AD!+1:GOSUB 10000:AD!=AD!+1 3430 GOTO 3600 3500 L=INSTR(OP$,"#"):IF L=0 THEN 3600 3510 X!=PEEK(AD!):GOSUB 21000:GOSUB 10000:AD!=AD!+1 3520 OP$=LEFT$(OP$,L-1)+RIGHT$(X$,2)+MID$(OP$,L+1):GOTO 3600 3600 H$=H$+SPACE$(11-LEN(H$)) 3610 OP$=OP$+SPACE$(18-LEN(OP$)) 3620 IF FL$="LPT:" AND LC>=54 THEN PRINT #1,CHR$(12);:LC=0 3630 IF FL$="LPT:" THEN PRINT #1,SPACE$(10); 3640 PRINT#1,AD$;" ";H$;OP$;"/";A$;"/" 3650 LC=LC+1 3660 IF INKEY$="" AND AD!<=EA! THEN GOTO 3300 3670 IF FL$="LPT:" AND LC<>0 THEN PRINT #1,CHR$(12); 3680 CLOSE #1: LINE INPUT "ENTER to restart:";L$:GOTO 3200 10000 I=PEEK(AD!):IF I<32 OR I>126 THEN A$=A$+"."ELSE A$=A$+CHR$(I) 10010 X!=I:GOSUB 21000: H$=H$+" "+RIGHT$(X$,2) 10020 RETURN 20000 X!=0:X=LEN(X$):IF X<1 OR X>4 THEN 20050 20010 FOR I=1 TO X:K=ASC(MID$(X$,I,1))-48:IF K>9 THEN K=K-7 20020 K=K+32*(K>41):IF K>15THEN 20050 20030 X!=X!*16+K 20040 NEXT I 20050 RETURN 21000 X$="0000":IF X!<0 OR X!>65535! THEN 21040 21010 FOR I=4 TO 1 STEP -1:K=X!-INT(X!/16)*16:IF K>9 THEN K=K+7 21020 X$=LEFT$(X$,I-1)+CHR$(K+48)+MID$(X$,I+1):X!=INT(X!/16) 21030 NEXT I 21040 RETURN