00001 00005 #ifndef INSTRUCTIONS_H 00006 #define INSTRUCTIONS_H 00007 00009 typedef enum { 00010 IMPL, ACC, IMM, ABS, ABSX, ABSY, ZP, ZPX, ZPY, REL, IND, INDX, INDY 00011 } AdrType; 00012 00014 typedef struct _Instr { 00015 char* name; 00016 AdrType aType; 00017 unsigned char len; 00018 } Instr; 00019 00021 const Instr INSTRUCTIONS[256] = { 00022 { "BRK", IMPL, 1 }, 00023 { "ORA", INDX, 2 }, 00024 { "UNKNOWN", IMPL, 1 }, 00025 { "UNKNOWN", IMPL, 1 }, 00026 { "UNKNOWN", IMPL, 1 }, 00027 { "ORA", ZP, 2 }, 00028 { "ASL", ZP, 2 }, 00029 { "UNKNOWN", IMPL, 1 }, 00030 { "PHP", IMPL, 1 }, 00031 { "ORA", IMM, 2 }, 00032 { "ASL", ACC, 1 }, 00033 { "UNKNOWN", IMPL, 1 }, 00034 { "UNKNOWN", IMPL, 1 }, 00035 { "ORA", ABS, 3 }, 00036 { "ASL", ABS, 3 }, 00037 { "UNKNOWN", IMPL, 1 }, 00038 { "BPL", REL, 2 }, 00039 { "ORA", INDY, 2 }, 00040 { "UNKNOWN", IMPL, 1 }, 00041 { "UNKNOWN", IMPL, 1 }, 00042 { "UNKNOWN", IMPL, 1 }, 00043 { "ORA", ZPX, 2 }, 00044 { "ASL", ZPX, 2 }, 00045 { "UNKNOWN", IMPL, 1 }, 00046 { "CLC", IMPL, 1 }, 00047 { "ORA", ABSY, 3 }, 00048 { "UNKNOWN", IMPL, 1 }, 00049 { "UNKNOWN", IMPL, 1 }, 00050 { "UNKNOWN", IMPL, 1 }, 00051 { "ORA", ABSX, 3 }, 00052 { "ASL", ABSX, 3 }, 00053 { "UNKNOWN", IMPL, 1 }, 00054 { "JSR", ABS, 3 }, 00055 { "AND", INDX, 2 }, 00056 { "UNKNOWN", IMPL, 1 }, 00057 { "UNKNOWN", IMPL, 1 }, 00058 { "BIT", ZP, 2 }, 00059 { "AND", ZP, 2 }, 00060 { "ROL", ZP, 2 }, 00061 { "UNKNOWN", IMPL, 1 }, 00062 { "PLP", IMPL, 1 }, 00063 { "AND", IMM, 2 }, 00064 { "ROL", ACC, 1 }, 00065 { "UNKNOWN", IMPL, 1 }, 00066 { "BIT", ABS, 3 }, 00067 { "AND", ABS, 3 }, 00068 { "ROL", ABS, 3 }, 00069 { "UNKNOWN", IMPL, 1 }, 00070 { "BMI", REL, 2 }, 00071 { "AND", INDY, 2 }, 00072 { "UNKNOWN", IMPL, 1 }, 00073 { "UNKNOWN", IMPL, 1 }, 00074 { "UNKNOWN", IMPL, 1 }, 00075 { "AND", ZPX, 2 }, 00076 { "ROL", ZPX, 2 }, 00077 { "UNKNOWN", IMPL, 1 }, 00078 { "SEC", IMPL, 1 }, 00079 { "AND", ABSY, 3 }, 00080 { "UNKNOWN", IMPL, 1 }, 00081 { "UNKNOWN", IMPL, 1 }, 00082 { "UNKNOWN", IMPL, 1 }, 00083 { "AND", ABSX, 3 }, 00084 { "ROL", ABSX, 3 }, 00085 { "UNKNOWN", IMPL, 1 }, 00086 { "RTI", IMPL, 1 }, 00087 { "EOR", INDX, 2 }, 00088 { "UNKNOWN", IMPL, 1 }, 00089 { "UNKNOWN", IMPL, 1 }, 00090 { "UNKNOWN", IMPL, 1 }, 00091 { "EOR", ZP, 2 }, 00092 { "LSR", ZP, 2 }, 00093 { "UNKNOWN", IMPL, 1 }, 00094 { "PHA", IMPL, 1 }, 00095 { "EOR", IMM, 2 }, 00096 { "LSR", ACC, 1 }, 00097 { "UNKNOWN", IMPL, 1 }, 00098 { "JMP", ABS, 3 }, 00099 { "EOR", ABS, 3 }, 00100 { "LSR", ABS, 3 }, 00101 { "UNKNOWN", IMPL, 1 }, 00102 { "BVC", REL, 2 }, 00103 { "EOR", INDY, 2 }, 00104 { "UNKNOWN", IMPL, 1 }, 00105 { "UNKNOWN", IMPL, 1 }, 00106 { "UNKNOWN", IMPL, 1 }, 00107 { "EOR", ZPX, 2 }, 00108 { "LSR", ZPX, 2 }, 00109 { "UNKNOWN", IMPL, 1 }, 00110 { "CLI", IMPL, 1 }, 00111 { "EOR", ABSY, 3 }, 00112 { "UNKNOWN", IMPL, 1 }, 00113 { "UNKNOWN", IMPL, 1 }, 00114 { "UNKNOWN", IMPL, 1 }, 00115 { "EOR", ABSX, 3 }, 00116 { "LSR", ABSX, 3 }, 00117 { "UNKNOWN", IMPL, 1 }, 00118 { "RTS", IMPL, 1 }, 00119 { "ADC", INDX, 2 }, 00120 { "UNKNOWN", IMPL, 1 }, 00121 { "UNKNOWN", IMPL, 1 }, 00122 { "UNKNOWN", IMPL, 1 }, 00123 { "ADC", ZP, 2 }, 00124 { "ROR", ZP, 2 }, 00125 { "UNKNOWN", IMPL, 1 }, 00126 { "PLA", IMPL, 1 }, 00127 { "ADC", IMM, 2 }, 00128 { "ROR", ACC, 1 }, 00129 { "UNKNOWN", IMPL, 1 }, 00130 { "JMP", IND, 3 }, 00131 { "ADC", ABS, 3 }, 00132 { "ROR", ABS, 3 }, 00133 { "UNKNOWN", IMPL, 1 }, 00134 { "BVS", REL, 2 }, 00135 { "ADC", INDY, 2 }, 00136 { "UNKNOWN", IMPL, 1 }, 00137 { "UNKNOWN", IMPL, 1 }, 00138 { "UNKNOWN", IMPL, 1 }, 00139 { "ADC", ZPX, 2 }, 00140 { "ROR", ZPX, 2 }, 00141 { "UNKNOWN", IMPL, 1 }, 00142 { "SEI", IMPL, 1 }, 00143 { "ADC", ABSY, 3 }, 00144 { "UNKNOWN", IMPL, 1 }, 00145 { "UNKNOWN", IMPL, 1 }, 00146 { "UNKNOWN", IMPL, 1 }, 00147 { "ADC", ABSX, 3 }, 00148 { "ROR", ABSX, 3 }, 00149 { "UNKNOWN", IMPL, 1 }, 00150 { "UNKNOWN", IMPL, 1 }, 00151 { "STA", INDX, 2 }, 00152 { "UNKNOWN", IMPL, 1 }, 00153 { "UNKNOWN", IMPL, 1 }, 00154 { "STY", ZP, 2 }, 00155 { "STA", ZP, 2 }, 00156 { "STX", ZP, 2 }, 00157 { "UNKNOWN", IMPL, 1 }, 00158 { "DEY", IMPL, 1 }, 00159 { "UNKNOWN", IMPL, 1 }, 00160 { "TXA", IMPL, 1 }, 00161 { "UNKNOWN", IMPL, 1 }, 00162 { "STY", ABS, 3 }, 00163 { "STA", ABS, 3 }, 00164 { "STX", ABS, 3 }, 00165 { "UNKNOWN", IMPL, 1 }, 00166 { "BCC", REL, 2 }, 00167 { "STA", INDY, 2 }, 00168 { "UNKNOWN", IMPL, 1 }, 00169 { "UNKNOWN", IMPL, 1 }, 00170 { "STY", ZPX, 2 }, 00171 { "STA", ZPX, 2 }, 00172 { "STX", ZPX, 2 }, 00173 { "UNKNOWN", IMPL, 1 }, 00174 { "TYA", IMPL, 1 }, 00175 { "STA", ABSY, 3 }, 00176 { "TXS", IMPL, 1 }, 00177 { "UNKNOWN", IMPL, 1 }, 00178 { "UNKNOWN", IMPL, 1 }, 00179 { "STA", ABSX, 3 }, 00180 { "UNKNOWN", IMPL, 1 }, 00181 { "UNKNOWN", IMPL, 1 }, 00182 { "LDY", IMM, 2 }, 00183 { "LDA", INDX, 2 }, 00184 { "LDX", IMM, 2 }, 00185 { "UNKNOWN", IMPL, 1 }, 00186 { "LDY", ZP, 2 }, 00187 { "LDA", ZP, 2 }, 00188 { "LDX", ZP, 2 }, 00189 { "UNKNOWN", IMPL, 1 }, 00190 { "TAY", IMPL, 1 }, 00191 { "LDA", IMM, 2 }, 00192 { "TAX", IMPL, 1 }, 00193 { "UNKNOWN", IMPL, 1 }, 00194 { "LDY", ABS, 3 }, 00195 { "LDA", ABS, 3 }, 00196 { "LDX", ABS, 3 }, 00197 { "BCS", REL, 2 }, 00198 { "UNKNOWN", IMPL, 1 }, 00199 { "LDA", INDY, 2 }, 00200 { "UNKNOWN", IMPL, 1 }, 00201 { "UNKNOWN", IMPL, 1 }, 00202 { "LDY", ZPX, 2 }, 00203 { "LDA", ZPX, 2 }, 00204 { "LDX", ZPY, 2 }, 00205 { "UNKNOWN", IMPL, 1 }, 00206 { "CLV", IMPL, 1 }, 00207 { "LDA", ABSY, 3 }, 00208 { "TSX", IMPL, 1 }, 00209 { "UNKNOWN", IMPL, 1 }, 00210 { "LDY", ABSX, 3 }, 00211 { "LDA", ABSX, 3 }, 00212 { "LDX", ABSY, 3 }, 00213 { "UNKNOWN", IMPL, 1 }, 00214 { "CPY", IMM, 2 }, 00215 { "CMP", INDX, 2 }, 00216 { "UNKNOWN", IMPL, 1 }, 00217 { "UNKNOWN", IMPL, 1 }, 00218 { "CPY", ZP, 2 }, 00219 { "CMP", ZP, 2 }, 00220 { "DEC", ZP, 2 }, 00221 { "UNKNOWN", IMPL, 1 }, 00222 { "INY", IMPL, 1 }, 00223 { "CMP", IMM, 2 }, 00224 { "DEX", IMPL, 1 }, 00225 { "UNKNOWN", IMPL, 1 }, 00226 { "CPY", ABS, 3 }, 00227 { "CMP", ABS, 3 }, 00228 { "DEC", ABS, 3 }, 00229 { "UNKNOWN", IMPL, 1 }, 00230 { "BNE", REL, 2 }, 00231 { "CMP", INDY, 2 }, 00232 { "UNKNOWN", IMPL, 1 }, 00233 { "UNKNOWN", IMPL, 1 }, 00234 { "UNKNOWN", IMPL, 1 }, 00235 { "CMP", ZPX, 2 }, 00236 { "DEC", ZPX, 2 }, 00237 { "UNKNOWN", IMPL, 1 }, 00238 { "CLD", IMPL, 1 }, 00239 { "CMP", ABSY, 3 }, 00240 { "UNKNOWN", IMPL, 1 }, 00241 { "UNKNOWN", IMPL, 1 }, 00242 { "UNKNOWN", IMPL, 1 }, 00243 { "CMP", ABSX, 3 }, 00244 { "DEC", ABSX, 3 }, 00245 { "UNKNOWN", IMPL, 1 }, 00246 { "CPX", IMM, 2 }, 00247 { "SBC", INDX, 2 }, 00248 { "UNKNOWN", IMPL, 1 }, 00249 { "UNKNOWN", IMPL, 1 }, 00250 { "CPX", ZP, 2 }, 00251 { "SBC", ZP, 2 }, 00252 { "INC", ZP, 2 }, 00253 { "UNKNOWN", IMPL, 1 }, 00254 { "INX", IMPL, 1 }, 00255 { "SBC", IMM, 2 }, 00256 { "NOP", IMPL, 1 }, 00257 { "UNKNOWN", IMPL, 1 }, 00258 { "CPX", ABS, 3 }, 00259 { "SBC", ABS, 3 }, 00260 { "INC", ABS, 3 }, 00261 { "UNKNOWN", IMPL, 1 }, 00262 { "BEQ", REL, 2 }, 00263 { "SBC", INDY, 2 }, 00264 { "UNKNOWN", IMPL, 1 }, 00265 { "UNKNOWN", IMPL, 1 }, 00266 { "UNKNOWN", IMPL, 1 }, 00267 { "SBC", ZPX, 2 }, 00268 { "UNKNOWN", IMPL, 1 }, 00269 { "UNKNOWN", IMPL, 1 }, 00270 { "SED", IMPL, 1 }, 00271 { "SBC", ABSY, 3 }, 00272 { "UNKNOWN", IMPL, 1 }, 00273 { "UNKNOWN", IMPL, 1 }, 00274 { "UNKNOWN", IMPL, 1 }, 00275 { "SBC", ABSX, 3 }, 00276 { "INC", ABSX, 3 }, 00277 { "UNKNOWN", IMPL, 1 } 00278 }; 00279 00280 #endif INSTRUCTIONS_H