1 #ifndef _DJGPP_INCLUDE_DIS_CST_H 2 #define _DJGPP_INCLUDE_DIS_CST_H 3 4 /* now define table contents: */ 5 6 typedef struct op { 7 int addr_mode; 8 char * opname; 9 } operation; 10 11 /* A bit modified to include Break Points : "BP?" at $?B */ 12 /* Beware, the name does import, invalid opcodes got "???" as name or are BP */ 13 14 operation optable[256] = { 15 { AM_IMPL, "BRK" }, /* $00 */ 16 { AM_ZPINDX, "ORA" }, /* $01 */ 17 { AM_IMPL, "SXY" }, /* $02 */ 18 { AM_IMMED, "ST0" }, /* $03 */ 19 { AM_ZP, "TSB" }, /* $04 */ 20 { AM_ZP, "ORA" }, /* $05 */ 21 { AM_ZP, "ASL" }, /* $06 */ 22 { AM_ZP, "RMB0" }, /* $07 */ 23 { AM_IMPL, "PHP" }, /* $08 */ 24 { AM_IMMED, "ORA" }, /* $09 */ 25 { AM_IMPL, "ASL" }, /* $0A */ 26 { AM_IMPL, "BP0" }, /* $0B */ 27 { AM_ABS, "TSB" }, /* $0C */ 28 { AM_ABS, "ORA" }, /* $0D */ 29 { AM_ABS, "ASL" }, /* $0E */ 30 { AM_PSREL, "BBR0" }, /* $0F */ 31 { AM_REL, "BPL" }, /* $10 */ 32 { AM_ZPINDY, "ORA" }, /* $11 */ 33 { AM_ZPIND, "ORA" }, /* $12 */ 34 { AM_IMMED, "ST1" }, /* $13 */ 35 { AM_ZP, "TRB" }, /* $14 */ 36 { AM_ZPX, "ORA" }, /* $15 */ 37 { AM_ZPX, "ASL" }, /* $16 */ 38 { AM_ZP, "RMB1" }, /* $17 */ 39 { AM_IMPL, "CLC" }, /* $18 */ 40 { AM_ABSY, "ORA" }, /* $19 */ 41 { AM_IMPL, "INC" }, /* $1A */ 42 { AM_IMPL, "BP1" }, /* $1B */ 43 { AM_ABS, "TRB" }, /* $1C */ 44 { AM_ABSX, "ORA" }, /* $1D */ 45 { AM_ABSX, "ASL" }, /* $1E */ 46 { AM_PSREL, "BBR1" }, /* $1F */ 47 { AM_ABS, "JSR" }, /* $20 */ 48 { AM_ZPINDX, "AND" }, /* $21 */ 49 { AM_IMPL, "SAX" }, /* $22 */ 50 { AM_IMMED, "ST2" }, /* $23 */ 51 { AM_ZP, "BIT" }, /* $24 */ 52 { AM_ZP, "AND" }, /* $25 */ 53 { AM_ZP, "ROL" }, /* $26 */ 54 { AM_ZP, "RMB2" }, /* $27 */ 55 { AM_IMPL, "PLP" }, /* $28 */ 56 { AM_IMMED, "AND" }, /* $29 */ 57 { AM_IMPL, "ROL" }, /* $2A */ 58 { AM_IMPL, "BP2" }, /* $2B */ 59 { AM_ABS, "BIT" }, /* $2C */ 60 { AM_ABS, "AND" }, /* $2D */ 61 { AM_ABS, "ROL" }, /* $2E */ 62 { AM_PSREL, "BBR2" }, /* $2F */ 63 { AM_REL, "BMI" }, /* $30 */ 64 { AM_ZPINDY, "AND" }, /* $31 */ 65 { AM_ZPIND, "AND" }, /* $32 */ 66 { AM_IMPL, "???" }, /* $33 */ 67 { AM_ZPX, "BIT" }, /* $34 */ 68 { AM_ZPX, "AND" }, /* $35 */ 69 { AM_ZPX, "ROL" }, /* $36 */ 70 { AM_ZP, "RMB3" }, /* $37 */ 71 { AM_IMPL, "SEC" }, /* $38 */ 72 { AM_ABSY, "AND" }, /* $39 */ 73 { AM_IMPL, "DEC" }, /* $3A */ 74 { AM_IMPL, "BP3" }, /* $3B */ 75 { AM_ABSX, "BIT" }, /* $3C */ 76 { AM_ABSX, "AND" }, /* $3D */ 77 { AM_ABSX, "ROL" }, /* $3E */ 78 { AM_PSREL, "BBR3" }, /* $3F */ 79 { AM_IMPL, "RTI" }, /* $40 */ 80 { AM_ZPINDX, "EOR" }, /* $41 */ 81 { AM_IMPL, "SAY" }, /* $42 */ 82 { AM_IMMED, "TMA" }, /* $43 */ 83 { AM_REL, "BSR" }, /* $44 */ 84 { AM_ZP, "EOR" }, /* $45 */ 85 { AM_ZP, "LSR" }, /* $46 */ 86 { AM_ZP, "RMB4" }, /* $47 */ 87 { AM_IMPL, "PHA" }, /* $48 */ 88 { AM_IMMED, "EOR" }, /* $49 */ 89 { AM_IMPL, "LSR" }, /* $4A */ 90 { AM_IMPL, "BP4" }, /* $4B */ 91 { AM_ABS, "JMP" }, /* $4C */ 92 { AM_ABS, "EOR" }, /* $4D */ 93 { AM_ABS, "LSR" }, /* $4E */ 94 { AM_PSREL, "BBR4" }, /* $4F */ 95 { AM_REL, "BVC" }, /* $50 */ 96 { AM_ZPINDY, "EOR" }, /* $51 */ 97 { AM_ZPIND, "EOR" }, /* $52 */ 98 { AM_IMMED, "TAM" }, /* $53 */ 99 { AM_IMPL, "???" }, /* $54 */ 100 { AM_ZPX, "EOR" }, /* $55 */ 101 { AM_ZPX, "LSR" }, /* $56 */ 102 { AM_ZP, "RMB5" }, /* $57 */ 103 { AM_IMPL, "CLI" }, /* $58 */ 104 { AM_ABSY, "EOR" }, /* $59 */ 105 { AM_IMPL, "PHY" }, /* $5A */ 106 { AM_IMPL, "BP5" }, /* $5B */ 107 { AM_IMPL, "???" }, /* $5C */ 108 { AM_ABSX, "EOR" }, /* $5D */ 109 { AM_ABSX, "LSR" }, /* $5E */ 110 { AM_PSREL, "BBR5" }, /* $5F */ 111 { AM_IMPL, "RTS" }, /* $60 */ 112 { AM_ZPINDX, "ADC" }, /* $61 */ 113 { AM_IMPL, "CLA" }, /* $62 */ 114 { AM_IMPL, "???" }, /* $63 */ 115 { AM_ZP, "STZ" }, /* $64 */ 116 { AM_ZP, "ADC" }, /* $65 */ 117 { AM_ZP, "ROR" }, /* $66 */ 118 { AM_ZP, "RMB6" }, /* $67 */ 119 { AM_IMPL, "PLA" }, /* $68 */ 120 { AM_IMMED, "ADC" }, /* $69 */ 121 { AM_IMPL, "ROR" }, /* $6A */ 122 { AM_IMPL, "BP6" }, /* $6B */ 123 { AM_ABSIND, "JMP" }, /* $6C */ 124 { AM_ABS, "ADC" }, /* $6D */ 125 { AM_ABS, "ROR" }, /* $6E */ 126 { AM_PSREL, "BBR6" }, /* $6F */ 127 { AM_REL, "BVS" }, /* $70 */ 128 { AM_ZPINDY, "ADC" }, /* $71 */ 129 { AM_ZPIND, "ADC" }, /* $72 */ 130 { AM_XFER, "TII" }, /* $73 */ 131 { AM_ZPX, "STZ" }, /* $74 */ 132 { AM_ZPX, "ADC" }, /* $75 */ 133 { AM_ZPX, "ROR" }, /* $76 */ 134 { AM_ZP, "RMB7" }, /* $77 */ 135 { AM_IMPL, "SEI" }, /* $78 */ 136 { AM_ABSY, "ADC" }, /* $79 */ 137 { AM_IMPL, "PLY" }, /* $7A */ 138 { AM_IMPL, "BP7" }, /* $7B */ 139 { AM_ABSINDX, "JMP" }, /* $7C */ 140 { AM_ABSX, "ADC" }, /* $7D */ 141 { AM_ABSX, "ROR" }, /* $7E */ 142 { AM_PSREL, "BBR7" }, /* $7F */ 143 { AM_REL, "BRA" }, /* $80 */ 144 { AM_ZPINDX, "STA" }, /* $81 */ 145 { AM_IMPL, "CLX" }, /* $82 */ 146 { AM_TST_ZP, "TST" }, /* $83 */ 147 { AM_ZP, "STY" }, /* $84 */ 148 { AM_ZP, "STA" }, /* $85 */ 149 { AM_ZP, "STX" }, /* $86 */ 150 { AM_ZP, "SMB0" }, /* $87 */ 151 { AM_IMPL, "DEY" }, /* $88 */ 152 { AM_IMMED, "BIT" }, /* $89 */ 153 { AM_IMPL, "TXA" }, /* $8A */ 154 { AM_IMPL, "BP8" }, /* $8B */ 155 { AM_ABS, "STY" }, /* $8C */ 156 { AM_ABS, "STA" }, /* $8D */ 157 { AM_ABS, "STX" }, /* $8E */ 158 { AM_PSREL, "BBS0" }, /* $8F */ 159 { AM_REL, "BCC" }, /* $90 */ 160 { AM_ZPINDY, "STA" }, /* $91 */ 161 { AM_ZPIND, "STA" }, /* $92 */ 162 { AM_TST_ABS, "TST" }, /* $93 */ 163 { AM_ZPX, "STY" }, /* $94 */ 164 { AM_ZPX, "STA" }, /* $95 */ 165 { AM_ZPY, "STX" }, /* $96 */ 166 { AM_ZP, "SMB1" }, /* $97 */ 167 { AM_IMPL, "TYA" }, /* $98 */ 168 { AM_ABSY, "STA" }, /* $99 */ 169 { AM_IMPL, "TXS" }, /* $9A */ 170 { AM_IMPL, "BP9" }, /* $9B */ 171 { AM_ABS, "STZ" }, /* $9C */ 172 { AM_ABSX, "STA" }, /* $9D */ 173 { AM_ABSX, "STZ" }, /* $9E */ 174 { AM_PSREL, "BBS1" }, /* $9F */ 175 { AM_IMMED, "LDY" }, /* $A0 */ 176 { AM_ZPINDX, "LDA" }, /* $A1 */ 177 { AM_IMMED, "LDX" }, /* $A2 */ 178 { AM_TST_ZPX, "TST" }, /* $A3 */ 179 { AM_ZP, "LDY" }, /* $A4 */ 180 { AM_ZP, "LDA" }, /* $A5 */ 181 { AM_ZP, "LDX" }, /* $A6 */ 182 { AM_ZP, "SMB2" }, /* $A7 */ 183 { AM_IMPL, "TAY" }, /* $A8 */ 184 { AM_IMMED, "LDA" }, /* $A9 */ 185 { AM_IMPL, "TAX" }, /* $AA */ 186 { AM_IMPL, "BPA" }, /* $AB */ 187 { AM_ABS, "LDY" }, /* $AC */ 188 { AM_ABS, "LDA" }, /* $AD */ 189 { AM_ABS, "LDX" }, /* $AE */ 190 { AM_PSREL, "BBS2" }, /* $AF */ 191 { AM_REL, "BCS" }, /* $B0 */ 192 { AM_ZPINDY, "LDA" }, /* $B1 */ 193 { AM_ZPIND, "LDA" }, /* $B2 */ 194 { AM_TST_ABSX,"TST" }, /* $B3 */ 195 { AM_ZPX, "LDY" }, /* $B4 */ 196 { AM_ZPX, "LDA" }, /* $B5 */ 197 { AM_ZPY, "LDX" }, /* $B6 */ 198 { AM_ZP, "SMB3" }, /* $B7 */ 199 { AM_IMPL, "CLV" }, /* $B8 */ 200 { AM_ABSY, "LDA" }, /* $B9 */ 201 { AM_IMPL, "TSX" }, /* $BA */ 202 { AM_IMPL, "BPB" }, /* $BB */ 203 { AM_ABSX, "LDY" }, /* $BC */ 204 { AM_ABSX, "LDA" }, /* $BD */ 205 { AM_ABSY, "LDX" }, /* $BE */ 206 { AM_PSREL, "BBS3" }, /* $BF */ 207 { AM_IMMED, "CPY" }, /* $C0 */ 208 { AM_ZPINDX, "CMP" }, /* $C1 */ 209 { AM_IMPL, "CLY" }, /* $C2 */ 210 { AM_XFER, "TDD" }, /* $C3 */ 211 { AM_ZP, "CPY" }, /* $C4 */ 212 { AM_ZP, "CMP" }, /* $C5 */ 213 { AM_ZP, "DEC" }, /* $C6 */ 214 { AM_ZP, "SMB4" }, /* $C7 */ 215 { AM_IMPL, "INY" }, /* $C8 */ 216 { AM_IMMED, "CMP" }, /* $C9 */ 217 { AM_IMPL, "DEX" }, /* $CA */ 218 { AM_IMPL, "BPC" }, /* $CB */ 219 { AM_ABS, "CPY" }, /* $CC */ 220 { AM_ABS, "CMP" }, /* $CD */ 221 { AM_ABS, "DEC" }, /* $CE */ 222 { AM_PSREL, "BBS4" }, /* $CF */ 223 { AM_REL, "BNE" }, /* $D0 */ 224 { AM_ZPINDY, "CMP" }, /* $D1 */ 225 { AM_ZPIND, "CMP" }, /* $D2 */ 226 { AM_XFER, "TIN" }, /* $D3 */ 227 { AM_IMPL, "CSH" }, /* $D4 */ 228 { AM_ZPX, "CMP" }, /* $D5 */ 229 { AM_ZPX, "DEC" }, /* $D6 */ 230 { AM_ZP, "SMB5" }, /* $D7 */ 231 { AM_IMPL, "CLD" }, /* $D8 */ 232 { AM_ABSY, "CMP" }, /* $D9 */ 233 { AM_IMPL, "PHX" }, /* $DA */ 234 { AM_IMPL, "BPD" }, /* $DB */ 235 { AM_IMPL, "???" }, /* $DC */ 236 { AM_ABSX, "CMP" }, /* $DD */ 237 { AM_ABSX, "DEC" }, /* $DE */ 238 { AM_PSREL, "BBS5" }, /* $DF */ 239 { AM_IMMED, "CPX" }, /* $E0 */ 240 { AM_ZPINDX, "SBC" }, /* $E1 */ 241 { AM_IMPL, "???" }, /* $E2 */ 242 { AM_XFER, "TIA" }, /* $E3 */ 243 { AM_ZP, "CPX" }, /* $E4 */ 244 { AM_ZP, "SBC" }, /* $E5 */ 245 { AM_ZP, "INC" }, /* $E6 */ 246 { AM_ZP, "SMB6" }, /* $E7 */ 247 { AM_IMPL, "INX" }, /* $E8 */ 248 { AM_IMMED, "SBC" }, /* $E9 */ 249 { AM_IMPL, "NOP" }, /* $EA */ 250 { AM_IMPL, "BPE" }, /* $EB */ 251 { AM_ABS, "CPX" }, /* $EC */ 252 { AM_ABS, "SBC" }, /* $ED */ 253 { AM_ABS, "INC" }, /* $EE */ 254 { AM_PSREL, "BBS6" }, /* $EF */ 255 { AM_REL, "BEQ" }, /* $F0 */ 256 { AM_ZPINDY, "SBC" }, /* $F1 */ 257 { AM_ZPIND, "SBC" }, /* $F2 */ 258 { AM_XFER, "TAI" }, /* $F3 */ 259 { AM_IMPL, "SET" }, /* $F4 */ 260 { AM_ZPX, "SBC" }, /* $F5 */ 261 { AM_ZPX, "INC" }, /* $F6 */ 262 { AM_ZP, "SMB7" }, /* $F7 */ 263 { AM_IMPL, "SED" }, /* $F8 */ 264 { AM_ABSY, "SBC" }, /* $F9 */ 265 { AM_IMPL, "PLX" }, /* $FA */ 266 { AM_IMPL, "BPF" }, /* $FB */ 267 { AM_IMPL, "???" }, /* $FC */ 268 { AM_ABSX, "SBC" }, /* $FD */ 269 { AM_ABSX, "INC" }, /* $FE */ 270 { AM_PSREL, "BBS7" } /* $FF */ 271 }; 272 273 274 /* number of bytes per instruction in each addressing mode */ 275 276 mode_struct addr_info[MAX_MODES] = { 277 { 1, &(implicit) }, /* implicit */ 278 { 2, &(immed) }, /* immediate */ 279 { 2, &(relative) }, /* relative */ 280 { 2, &(ind_zp) }, /* zero page */ 281 { 2, &(ind_zpx) }, /* zero page, x */ 282 { 2, &(ind_zpy) }, /* zero page, y */ 283 { 2, &(ind_zpind) }, /* zero page indirect */ 284 { 2, &(ind_zpix) }, /* zero page indirect, x */ 285 { 2, &(ind_zpiy) }, /* zero page indirect, y */ 286 { 3, &(absol) }, /* absolute */ 287 { 3, &(absx) }, /* absolute, x */ 288 { 3, &(absy) }, /* absolute, y */ 289 { 3, &(absind) }, /* absolute indirect */ 290 { 3, &(absindx) }, /* absolute indirect */ 291 { 3, &(pseudorel) }, /* pseudo-relative */ 292 { 3, &(tst_zp) }, /* special 'TST' addressing mode */ 293 { 4, &(tst_abs) }, /* special 'TST' addressing mode */ 294 { 3, &(tst_zpx) }, /* special 'TST' addressing mode */ 295 { 4, &(tst_absx) }, /* special 'TST' addressing mode */ 296 { 7, &(xfer) } /* special 7-byte transfer addressing mode */ 297 }; 298 299 #endif 300