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