[AArch64][PATCH 13/14] Support FP16 Adv.SIMD Shift By Immediate instructions.
[external/binutils.git] / opcodes / w65-opc.h
1 /* Instruction opcode header for WDC 65816
2    (generated by the program sim/w65/gencode -a)
3
4    Copyright (C) 2001-2015 Free Software Foundation, Inc.
5
6    This file is part of the GNU opcodes library.
7
8    This library is free software; you can redistribute it and/or modify
9    it under the terms of the GNU General Public License as published by
10    the Free Software Foundation; either version 3, or (at your option)
11    any later version.
12
13    It is distributed in the hope that it will be useful, but WITHOUT
14    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
15    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
16    License for more details.
17
18    You should have received a copy of the GNU General Public License
19    along with this file; see the file COPYING.  If not, write to the
20    Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston,
21    MA 02110-1301, USA.  */
22
23 #define ADDR_IMMTOA              1       /* #a      */
24 #define ADDR_IMMCOP              2       /* #c      */
25 #define ADDR_IMMTOI              3       /* #i      */
26 #define ADDR_ACC                 4       /* A       */
27 #define ADDR_PC_REL              5       /* r       */
28 #define ADDR_PC_REL_LONG         6       /* rl      */
29 #define ADDR_IMPLIED             7       /* i       */
30 #define ADDR_STACK               8       /* s       */
31 #define ADDR_DIR                 9       /* d       */
32 #define ADDR_DIR_IDX_X           10      /* d,x     */
33 #define ADDR_DIR_IDX_Y           11      /* d,y     */
34 #define ADDR_DIR_IND             12      /* (d)     */
35 #define ADDR_DIR_IDX_IND_X       13      /* (d,x)   */
36 #define ADDR_DIR_IND_IDX_Y       14      /* (d),y   */
37 #define ADDR_DIR_IND_LONG        15      /* [d]     */
38 #define ADDR_DIR_IND_IDX_Y_LONG  16      /* [d],y   */
39 #define ADDR_ABS                 17      /* a       */
40 #define ADDR_ABS_IDX_X           18      /* a,x     */
41 #define ADDR_ABS_IDX_Y           19      /* a,y     */
42 #define ADDR_ABS_LONG            20      /* al      */
43 #define ADDR_ABS_IND_LONG        21      /* [a]     */
44 #define ADDR_ABS_LONG_IDX_X      22      /* al,x    */
45 #define ADDR_STACK_REL           23      /* d,s     */
46 #define ADDR_STACK_REL_INDX_IDX  24      /* (d,s),y */
47 #define ADDR_ABS_IND             25      /* (a)     */
48 #define ADDR_ABS_IND_IDX         26      /* (a,x)   */
49 #define ADDR_BLOCK_MOVE          27      /* xyz     */
50 struct opinfo {
51         int val;
52         int code;
53         char *name;
54         int amode;
55 };
56 const struct opinfo optable[257]={
57 #define O_adc 1
58 #define O_and 2
59 #define O_asl 3
60 #define O_bcc 4
61 #define O_bcs 5
62 #define O_beq 6
63 #define O_bit 7
64 #define O_bmi 8
65 #define O_bne 9
66 #define O_bpl 10
67 #define O_bra 11
68 #define O_brk 12
69 #define O_brl 13
70 #define O_bvc 14
71 #define O_bvs 15
72 #define O_clc 16
73 #define O_cld 17
74 #define O_cli 18
75 #define O_clv 19
76 #define O_cmp 20
77 #define O_cop 21
78 #define O_cpx 22
79 #define O_cpy 23
80 #define O_dec 24
81 #define O_dex 25
82 #define O_dey 26
83 #define O_eor 27
84 #define O_inc 28
85 #define O_inx 29
86 #define O_iny 30
87 #define O_jmp 31
88 #define O_jsr 32
89 #define O_lda 33
90 #define O_ldx 34
91 #define O_ldy 35
92 #define O_lsr 36
93 #define O_mvn 37
94 #define O_mvp 38
95 #define O_nop 39
96 #define O_ora 40
97 #define O_pea 41
98 #define O_pei 42
99 #define O_per 43
100 #define O_pha 44
101 #define O_phb 45
102 #define O_phd 46
103 #define O_phk 47
104 #define O_php 48
105 #define O_phx 49
106 #define O_phy 50
107 #define O_pla 51
108 #define O_plb 52
109 #define O_pld 53
110 #define O_plp 54
111 #define O_plx 55
112 #define O_ply 56
113 #define O_rep 57
114 #define O_rol 58
115 #define O_ror 59
116 #define O_rti 60
117 #define O_rtl 61
118 #define O_rts 62
119 #define O_sbc 63
120 #define O_sec 64
121 #define O_sed 65
122 #define O_sei 66
123 #define O_sep 67
124 #define O_sta 68
125 #define O_stp 69
126 #define O_stx 70
127 #define O_sty 71
128 #define O_stz 72
129 #define O_tax 73
130 #define O_tay 74
131 #define O_tcd 75
132 #define O_tcs 76
133 #define O_tdc 77
134 #define O_trb 78
135 #define O_tsb 79
136 #define O_tsc 80
137 #define O_tsx 81
138 #define O_txa 82
139 #define O_txs 83
140 #define O_txy 84
141 #define O_tya 85
142 #define O_tyx 86
143 #define O_wai 87
144 #define O_wdm 88
145 #define O_xba 89
146 #define O_xce 90
147 #ifdef DEFINE_TABLE
148         {0x69,  O_adc,  "adc",  ADDR_IMMTOA},
149         {0x72,  O_adc,  "adc",  ADDR_DIR_IND},
150         {0x71,  O_adc,  "adc",  ADDR_DIR_IND_IDX_Y},
151         {0x73,  O_adc,  "adc",  ADDR_STACK_REL_INDX_IDX},
152         {0x61,  O_adc,  "adc",  ADDR_DIR_IDX_IND_X},
153         {0x67,  O_adc,  "adc",  ADDR_DIR_IND_LONG},
154         {0x77,  O_adc,  "adc",  ADDR_DIR_IND_IDX_Y_LONG},
155         {0x6D,  O_adc,  "adc",  ADDR_ABS},
156         {0x7D,  O_adc,  "adc",  ADDR_ABS_IDX_X},
157         {0x79,  O_adc,  "adc",  ADDR_ABS_IDX_Y},
158         {0x6F,  O_adc,  "adc",  ADDR_ABS_LONG},
159         {0x7F,  O_adc,  "adc",  ADDR_ABS_LONG_IDX_X},
160         {0x65,  O_adc,  "adc",  ADDR_DIR},
161         {0x63,  O_adc,  "adc",  ADDR_STACK_REL},
162         {0x75,  O_adc,  "adc",  ADDR_DIR_IDX_X},
163         {0x29,  O_and,  "and",  ADDR_IMMTOA},
164         {0x32,  O_and,  "and",  ADDR_DIR_IND},
165         {0x31,  O_and,  "and",  ADDR_DIR_IND_IDX_Y},
166         {0x33,  O_and,  "and",  ADDR_STACK_REL_INDX_IDX},
167         {0x21,  O_and,  "and",  ADDR_DIR_IDX_IND_X},
168         {0x27,  O_and,  "and",  ADDR_DIR_IND_LONG},
169         {0x37,  O_and,  "and",  ADDR_DIR_IND_IDX_Y_LONG},
170         {0x2D,  O_and,  "and",  ADDR_ABS},
171         {0x3D,  O_and,  "and",  ADDR_ABS_IDX_X},
172         {0x39,  O_and,  "and",  ADDR_ABS_IDX_Y},
173         {0x2F,  O_and,  "and",  ADDR_ABS_LONG},
174         {0x3F,  O_and,  "and",  ADDR_ABS_LONG_IDX_X},
175         {0x25,  O_and,  "and",  ADDR_DIR},
176         {0x23,  O_and,  "and",  ADDR_STACK_REL},
177         {0x35,  O_and,  "and",  ADDR_DIR_IDX_X},
178         {0x0A,  O_asl,  "asl",  ADDR_ACC},
179         {0x0E,  O_asl,  "asl",  ADDR_ABS},
180         {0x1E,  O_asl,  "asl",  ADDR_ABS_IDX_X},
181         {0x06,  O_asl,  "asl",  ADDR_DIR},
182         {0x16,  O_asl,  "asl",  ADDR_DIR_IDX_X},
183         {0x90,  O_bcc,  "bcc",  ADDR_PC_REL},
184         {0xB0,  O_bcs,  "bcs",  ADDR_PC_REL},
185         {0xF0,  O_beq,  "beq",  ADDR_PC_REL},
186         {0x89,  O_bit,  "bit",  ADDR_IMMTOA},
187         {0x24,  O_bit,  "bit",  ADDR_DIR_IND},
188         {0x34,  O_bit,  "bit",  ADDR_DIR_IDX_IND_X},
189         {0x2C,  O_bit,  "bit",  ADDR_ABS},
190         {0x3C,  O_bit,  "bit",  ADDR_ABS_IDX_X},
191         {0x30,  O_bmi,  "bmi",  ADDR_PC_REL},
192         {0xD0,  O_bne,  "bne",  ADDR_PC_REL},
193         {0x10,  O_bpl,  "bpl",  ADDR_PC_REL},
194         {0x80,  O_bra,  "bra",  ADDR_PC_REL},
195         {0x00,  O_brk,  "brk",  ADDR_STACK},
196         {0x82,  O_brl,  "brl",  ADDR_PC_REL_LONG},
197         {0x50,  O_bvc,  "bvc",  ADDR_PC_REL},
198         {0x70,  O_bvs,  "bvs",  ADDR_PC_REL},
199         {0x18,  O_clc,  "clc",  ADDR_IMPLIED},
200         {0xD8,  O_cld,  "cld",  ADDR_IMPLIED},
201         {0x58,  O_cli,  "cli",  ADDR_IMPLIED},
202         {0xB8,  O_clv,  "clv",  ADDR_IMPLIED},
203         {0xC9,  O_cmp,  "cmp",  ADDR_IMMTOA},
204         {0xD2,  O_cmp,  "cmp",  ADDR_DIR_IND},
205         {0xD1,  O_cmp,  "cmp",  ADDR_DIR_IND_IDX_Y},
206         {0xD3,  O_cmp,  "cmp",  ADDR_STACK_REL_INDX_IDX},
207         {0xC1,  O_cmp,  "cmp",  ADDR_DIR_IDX_IND_X},
208         {0xC7,  O_cmp,  "cmp",  ADDR_DIR_IND_LONG},
209         {0xD7,  O_cmp,  "cmp",  ADDR_DIR_IND_IDX_Y_LONG},
210         {0xCD,  O_cmp,  "cmp",  ADDR_ABS},
211         {0xDD,  O_cmp,  "cmp",  ADDR_ABS_IDX_X},
212         {0xD9,  O_cmp,  "cmp",  ADDR_ABS_IDX_Y},
213         {0xCF,  O_cmp,  "cmp",  ADDR_ABS_LONG},
214         {0xDF,  O_cmp,  "cmp",  ADDR_ABS_LONG_IDX_X},
215         {0xC5,  O_cmp,  "cmp",  ADDR_DIR},
216         {0xC3,  O_cmp,  "cmp",  ADDR_STACK_REL},
217         {0xD5,  O_cmp,  "cmp",  ADDR_DIR_IDX_X},
218         {0x02,  O_cop,  "cop",  ADDR_IMMCOP},
219         {0xE0,  O_cpx,  "cpx",  ADDR_IMMTOI},
220         {0xEC,  O_cpx,  "cpx",  ADDR_ABS},
221         {0xE4,  O_cpx,  "cpx",  ADDR_DIR},
222         {0xC0,  O_cpy,  "cpy",  ADDR_IMMTOI},
223         {0xCC,  O_cpy,  "cpy",  ADDR_ABS},
224         {0xC4,  O_cpy,  "cpy",  ADDR_DIR},
225         {0x3A,  O_dec,  "dec",  ADDR_ACC},
226         {0xCE,  O_dec,  "dec",  ADDR_ABS},
227         {0xDE,  O_dec,  "dec",  ADDR_ABS_IDX_X},
228         {0xC6,  O_dec,  "dec",  ADDR_DIR},
229         {0xD6,  O_dec,  "dec",  ADDR_DIR_IDX_X},
230         {0xCA,  O_dex,  "dex",  ADDR_IMPLIED},
231         {0x88,  O_dey,  "dey",  ADDR_IMPLIED},
232         {0x49,  O_eor,  "eor",  ADDR_IMMTOA},
233         {0x52,  O_eor,  "eor",  ADDR_DIR_IND},
234         {0x51,  O_eor,  "eor",  ADDR_DIR_IND_IDX_Y},
235         {0x53,  O_eor,  "eor",  ADDR_STACK_REL_INDX_IDX},
236         {0x41,  O_eor,  "eor",  ADDR_DIR_IDX_IND_X},
237         {0x47,  O_eor,  "eor",  ADDR_DIR_IND_LONG},
238         {0x57,  O_eor,  "eor",  ADDR_DIR_IND_IDX_Y_LONG},
239         {0x4D,  O_eor,  "eor",  ADDR_ABS},
240         {0x5D,  O_eor,  "eor",  ADDR_ABS_IDX_X},
241         {0x59,  O_eor,  "eor",  ADDR_ABS_IDX_Y},
242         {0x4F,  O_eor,  "eor",  ADDR_ABS_LONG},
243         {0x5F,  O_eor,  "eor",  ADDR_ABS_LONG_IDX_X},
244         {0x45,  O_eor,  "eor",  ADDR_DIR},
245         {0x43,  O_eor,  "eor",  ADDR_STACK_REL},
246         {0x55,  O_eor,  "eor",  ADDR_DIR_IDX_X},
247         {0x1A,  O_inc,  "inc",  ADDR_ACC},
248         {0xEE,  O_inc,  "inc",  ADDR_ABS},
249         {0xFE,  O_inc,  "inc",  ADDR_ABS_IDX_X},
250         {0xE6,  O_inc,  "inc",  ADDR_DIR},
251         {0xF6,  O_inc,  "inc",  ADDR_DIR_IDX_X},
252         {0xE8,  O_inx,  "inx",  ADDR_IMPLIED},
253         {0xC8,  O_iny,  "iny",  ADDR_IMPLIED},
254         {0x6C,  O_jmp,  "jmp",  ADDR_ABS_IND},
255         {0x7C,  O_jmp,  "jmp",  ADDR_ABS_IND_IDX},
256         {0xDC,  O_jmp,  "jmp",  ADDR_ABS_IND_LONG},
257         {0x4C,  O_jmp,  "jmp",  ADDR_ABS},
258         {0x5C,  O_jmp,  "jmp",  ADDR_ABS_LONG},
259         {0xFC,  O_jsr,  "jsr",  ADDR_ABS_IND_IDX},
260         {0x20,  O_jsr,  "jsr",  ADDR_ABS},
261         {0x22,  O_jsr,  "jsr",  ADDR_ABS_LONG},
262         {0xA9,  O_lda,  "lda",  ADDR_IMMTOA},
263         {0xB2,  O_lda,  "lda",  ADDR_DIR_IND},
264         {0xB1,  O_lda,  "lda",  ADDR_DIR_IND_IDX_Y},
265         {0xB3,  O_lda,  "lda",  ADDR_STACK_REL_INDX_IDX},
266         {0xA1,  O_lda,  "lda",  ADDR_DIR_IDX_IND_X},
267         {0xA7,  O_lda,  "lda",  ADDR_DIR_IND_LONG},
268         {0xB7,  O_lda,  "lda",  ADDR_DIR_IND_IDX_Y_LONG},
269         {0xAD,  O_lda,  "lda",  ADDR_ABS},
270         {0xBD,  O_lda,  "lda",  ADDR_ABS_IDX_X},
271         {0xB9,  O_lda,  "lda",  ADDR_ABS_IDX_Y},
272         {0xAF,  O_lda,  "lda",  ADDR_ABS_LONG},
273         {0xBF,  O_lda,  "lda",  ADDR_ABS_LONG_IDX_X},
274         {0xA5,  O_lda,  "lda",  ADDR_DIR},
275         {0xA3,  O_lda,  "lda",  ADDR_STACK_REL},
276         {0xB5,  O_lda,  "lda",  ADDR_DIR_IDX_X},
277         {0xA2,  O_ldx,  "ldx",  ADDR_IMMTOI},
278         {0xAE,  O_ldx,  "ldx",  ADDR_ABS},
279         {0xBE,  O_ldx,  "ldx",  ADDR_ABS_IDX_Y},
280         {0xA6,  O_ldx,  "ldx",  ADDR_DIR},
281         {0xB6,  O_ldx,  "ldx",  ADDR_DIR_IDX_Y},
282         {0xA0,  O_ldy,  "ldy",  ADDR_IMMTOI},
283         {0xAC,  O_ldy,  "ldy",  ADDR_ABS},
284         {0xBC,  O_ldy,  "ldy",  ADDR_ABS_IDX_X},
285         {0xA4,  O_ldy,  "ldy",  ADDR_DIR},
286         {0xB4,  O_ldy,  "ldy",  ADDR_DIR_IDX_X},
287         {0x4A,  O_lsr,  "lsr",  ADDR_ACC},
288         {0x4E,  O_lsr,  "lsr",  ADDR_ABS},
289         {0x5E,  O_lsr,  "lsr",  ADDR_ABS_IDX_X},
290         {0x46,  O_lsr,  "lsr",  ADDR_DIR},
291         {0x56,  O_lsr,  "lsr",  ADDR_DIR_IDX_X},
292         {0x54,  O_mvn,  "mvn",  ADDR_BLOCK_MOVE},
293         {0x44,  O_mvp,  "mvp",  ADDR_BLOCK_MOVE},
294         {0xEA,  O_nop,  "nop",  ADDR_IMPLIED},
295         {0x09,  O_ora,  "ora",  ADDR_IMMTOA},
296         {0x12,  O_ora,  "ora",  ADDR_DIR_IND},
297         {0x11,  O_ora,  "ora",  ADDR_DIR_IND_IDX_Y},
298         {0x13,  O_ora,  "ora",  ADDR_STACK_REL_INDX_IDX},
299         {0x01,  O_ora,  "ora",  ADDR_DIR_IDX_IND_X},
300         {0x07,  O_ora,  "ora",  ADDR_DIR_IND_LONG},
301         {0x17,  O_ora,  "ora",  ADDR_DIR_IND_IDX_Y_LONG},
302         {0x0D,  O_ora,  "ora",  ADDR_ABS},
303         {0x1D,  O_ora,  "ora",  ADDR_ABS_IDX_X},
304         {0x19,  O_ora,  "ora",  ADDR_ABS_IDX_Y},
305         {0x0F,  O_ora,  "ora",  ADDR_ABS_LONG},
306         {0x1F,  O_ora,  "ora",  ADDR_ABS_LONG_IDX_X},
307         {0x05,  O_ora,  "ora",  ADDR_DIR},
308         {0x03,  O_ora,  "ora",  ADDR_STACK_REL},
309         {0x15,  O_ora,  "ora",  ADDR_DIR_IDX_X},
310         {0xF4,  O_pea,  "pea",  ADDR_ABS},
311         {0xD4,  O_pei,  "pei",  ADDR_DIR},
312         {0x62,  O_per,  "per",  ADDR_PC_REL_LONG},
313         {0x48,  O_pha,  "pha",  ADDR_STACK},
314         {0x8B,  O_phb,  "phb",  ADDR_STACK},
315         {0x0B,  O_phd,  "phd",  ADDR_STACK},
316         {0x4B,  O_phk,  "phk",  ADDR_STACK},
317         {0x08,  O_php,  "php",  ADDR_STACK},
318         {0xDA,  O_phx,  "phx",  ADDR_STACK},
319         {0x5A,  O_phy,  "phy",  ADDR_STACK},
320         {0x68,  O_pla,  "pla",  ADDR_STACK},
321         {0xAB,  O_plb,  "plb",  ADDR_STACK},
322         {0x2B,  O_pld,  "pld",  ADDR_STACK},
323         {0x28,  O_plp,  "plp",  ADDR_STACK},
324         {0xFA,  O_plx,  "plx",  ADDR_STACK},
325         {0x7A,  O_ply,  "ply",  ADDR_STACK},
326         {0xC2,  O_rep,  "rep",  ADDR_IMMCOP},
327         {0x2A,  O_rol,  "rol",  ADDR_ACC},
328         {0x2E,  O_rol,  "rol",  ADDR_ABS},
329         {0x3E,  O_rol,  "rol",  ADDR_ABS_IDX_X},
330         {0x26,  O_rol,  "rol",  ADDR_DIR},
331         {0x36,  O_rol,  "rol",  ADDR_DIR_IDX_X},
332         {0x6A,  O_ror,  "ror",  ADDR_ACC},
333         {0x6E,  O_ror,  "ror",  ADDR_ABS},
334         {0x7E,  O_ror,  "ror",  ADDR_ABS_IDX_X},
335         {0x66,  O_ror,  "ror",  ADDR_DIR},
336         {0x76,  O_ror,  "ror",  ADDR_DIR_IDX_X},
337         {0x40,  O_rti,  "rti",  ADDR_STACK},
338         {0x6B,  O_rtl,  "rtl",  ADDR_STACK},
339         {0x60,  O_rts,  "rts",  ADDR_STACK},
340         {0xE9,  O_sbc,  "sbc",  ADDR_IMMTOA},
341         {0xF2,  O_sbc,  "sbc",  ADDR_DIR_IND},
342         {0xF1,  O_sbc,  "sbc",  ADDR_DIR_IND_IDX_Y},
343         {0xF3,  O_sbc,  "sbc",  ADDR_STACK_REL_INDX_IDX},
344         {0xE1,  O_sbc,  "sbc",  ADDR_DIR_IDX_IND_X},
345         {0xE7,  O_sbc,  "sbc",  ADDR_DIR_IND_LONG},
346         {0xF7,  O_sbc,  "sbc",  ADDR_DIR_IND_IDX_Y_LONG},
347         {0xED,  O_sbc,  "sbc",  ADDR_ABS},
348         {0xFD,  O_sbc,  "sbc",  ADDR_ABS_IDX_X},
349         {0xF9,  O_sbc,  "sbc",  ADDR_ABS_IDX_Y},
350         {0xEF,  O_sbc,  "sbc",  ADDR_ABS_LONG},
351         {0xFF,  O_sbc,  "sbc",  ADDR_ABS_LONG_IDX_X},
352         {0xE5,  O_sbc,  "sbc",  ADDR_DIR},
353         {0xE3,  O_sbc,  "sbc",  ADDR_STACK_REL},
354         {0xF5,  O_sbc,  "sbc",  ADDR_DIR_IDX_X},
355         {0x38,  O_sec,  "sec",  ADDR_IMPLIED},
356         {0xF8,  O_sed,  "sed",  ADDR_IMPLIED},
357         {0x78,  O_sei,  "sei",  ADDR_IMPLIED},
358         {0xE2,  O_sep,  "sep",  ADDR_IMMCOP},
359         {0x92,  O_sta,  "sta",  ADDR_DIR_IND},
360         {0x91,  O_sta,  "sta",  ADDR_DIR_IND_IDX_Y},
361         {0x93,  O_sta,  "sta",  ADDR_STACK_REL_INDX_IDX},
362         {0x81,  O_sta,  "sta",  ADDR_DIR_IDX_IND_X},
363         {0x87,  O_sta,  "sta",  ADDR_DIR_IND_LONG},
364         {0x97,  O_sta,  "sta",  ADDR_DIR_IND_IDX_Y_LONG},
365         {0x8D,  O_sta,  "sta",  ADDR_ABS},
366         {0x9D,  O_sta,  "sta",  ADDR_ABS_IDX_X},
367         {0x99,  O_sta,  "sta",  ADDR_ABS_IDX_Y},
368         {0x8F,  O_sta,  "sta",  ADDR_ABS_LONG},
369         {0x9F,  O_sta,  "sta",  ADDR_ABS_LONG_IDX_X},
370         {0x85,  O_sta,  "sta",  ADDR_DIR},
371         {0x83,  O_sta,  "sta",  ADDR_STACK_REL},
372         {0x95,  O_sta,  "sta",  ADDR_DIR_IDX_X},
373         {0xDB,  O_stp,  "stp",  ADDR_IMPLIED},
374         {0x8E,  O_stx,  "stx",  ADDR_ABS},
375         {0x86,  O_stx,  "stx",  ADDR_DIR},
376         {0x96,  O_stx,  "stx",  ADDR_DIR_IDX_X},
377         {0x8C,  O_sty,  "sty",  ADDR_ABS},
378         {0x84,  O_sty,  "sty",  ADDR_DIR},
379         {0x94,  O_sty,  "sty",  ADDR_DIR_IDX_X},
380         {0x9C,  O_stz,  "stz",  ADDR_ABS},
381         {0x9E,  O_stz,  "stz",  ADDR_ABS_IDX_X},
382         {0x64,  O_stz,  "stz",  ADDR_DIR},
383         {0x74,  O_stz,  "stz",  ADDR_DIR_IDX_X},
384         {0xAA,  O_tax,  "tax",  ADDR_IMPLIED},
385         {0xA8,  O_tay,  "tay",  ADDR_IMPLIED},
386         {0x5B,  O_tcd,  "tcd",  ADDR_IMPLIED},
387         {0x1B,  O_tcs,  "tcs",  ADDR_IMPLIED},
388         {0x7B,  O_tdc,  "tdc",  ADDR_IMPLIED},
389         {0x1C,  O_trb,  "trb",  ADDR_ABS},
390         {0x14,  O_trb,  "trb",  ADDR_DIR},
391         {0x0C,  O_tsb,  "tsb",  ADDR_ABS},
392         {0x04,  O_tsb,  "tsb",  ADDR_DIR},
393         {0x3B,  O_tsc,  "tsc",  ADDR_IMPLIED},
394         {0xBA,  O_tsx,  "tsx",  ADDR_IMPLIED},
395         {0x8A,  O_txa,  "txa",  ADDR_IMPLIED},
396         {0x9A,  O_txs,  "txs",  ADDR_IMPLIED},
397         {0x9B,  O_txy,  "txy",  ADDR_IMPLIED},
398         {0x98,  O_tya,  "tya",  ADDR_IMPLIED},
399         {0xBB,  O_tyx,  "tyx",  ADDR_IMPLIED},
400         {0xCB,  O_wai,  "wai",  ADDR_IMPLIED},
401         {0x42,  O_wdm,  "wdm",  ADDR_IMPLIED},
402         {0xEB,  O_xba,  "xba",  ADDR_IMPLIED},
403         {0xFB,  O_xce,  "xce",  ADDR_IMPLIED},
404         { 0, 0, NULL, 0 }
405 };
406 #endif
407 #define DISASM()\
408   case ADDR_IMMTOA:\
409         args[0] = M==0 ? asR_W65_ABS16 : asR_W65_ABS8;\
410         print_operand (0, "     #$0", args);\
411         size += M==0 ? 2:1;\
412         break;\
413   case ADDR_IMMCOP:\
414         args[0] = asR_W65_ABS8;\
415         print_operand (0, "     #$0", args);\
416         size += 1;\
417         break;\
418   case ADDR_IMMTOI:\
419         args[0] = X==0 ? asR_W65_ABS16 : asR_W65_ABS8;\
420         print_operand (0, "     #$0", args);\
421         size += X==0 ? 2:1;\
422         break;\
423   case ADDR_ACC:\
424         print_operand (0, "     a", 0);\
425         size += 0;\
426         break;\
427   case ADDR_PC_REL:\
428         args[0] = asR_W65_PCR8;\
429         print_operand (0, "     $0", args);\
430         size += 1;\
431         break;\
432   case ADDR_PC_REL_LONG:\
433         args[0] = asR_W65_PCR16;\
434         print_operand (0, "     $0", args);\
435         size += 2;\
436         break;\
437   case ADDR_IMPLIED:\
438                 size += 0;\
439         break;\
440   case ADDR_STACK:\
441                 size += 0;\
442         break;\
443   case ADDR_DIR:\
444         args[0] = asR_W65_ABS8;\
445         print_operand (1, "     <$0", args);\
446         size += 1;\
447         break;\
448   case ADDR_DIR_IDX_X:\
449         args[0] = asR_W65_ABS8;\
450         print_operand (1, "     <$0,x", args);\
451         size += 1;\
452         break;\
453   case ADDR_DIR_IDX_Y:\
454         args[0] = asR_W65_ABS8;\
455         print_operand (1, "     <$0,y", args);\
456         size += 1;\
457         break;\
458   case ADDR_DIR_IND:\
459         args[0] = asR_W65_ABS8;\
460         print_operand (1, "     (<$0)", args);\
461         size += 1;\
462         break;\
463   case ADDR_DIR_IDX_IND_X:\
464         args[0] = asR_W65_ABS8;\
465         print_operand (1, "     (<$0,x)", args);\
466         size += 1;\
467         break;\
468   case ADDR_DIR_IND_IDX_Y:\
469         args[0] = asR_W65_ABS8;\
470         print_operand (1, "     (<$0),y", args);\
471         size += 1;\
472         break;\
473   case ADDR_DIR_IND_LONG:\
474         args[0] = asR_W65_ABS8;\
475         print_operand (1, "     [$0]", args);\
476         size += 1;\
477         break;\
478   case ADDR_DIR_IND_IDX_Y_LONG:\
479         args[0] = asR_W65_ABS8;\
480         print_operand (1, "     [$0],y", args);\
481         size += 1;\
482         break;\
483   case ADDR_ABS:\
484         args[0] = asR_W65_ABS16;\
485         print_operand (1, "     !$0", args);\
486         size += 2;\
487         break;\
488   case ADDR_ABS_IDX_X:\
489         args[0] = asR_W65_ABS16;\
490         print_operand (1, "     !$0,x", args);\
491         size += 2;\
492         break;\
493   case ADDR_ABS_IDX_Y:\
494         args[0] = asR_W65_ABS16;\
495         print_operand (1, "     !$0,y", args);\
496         size += 2;\
497         break;\
498   case ADDR_ABS_LONG:\
499         args[0] = asR_W65_ABS24;\
500         print_operand (1, "     >$0", args);\
501         size += 3;\
502         break;\
503   case ADDR_ABS_IND_LONG:\
504         args[0] = asR_W65_ABS16;\
505         print_operand (1, "     [>$0]", args);\
506         size += 2;\
507         break;\
508   case ADDR_ABS_LONG_IDX_X:\
509         args[0] = asR_W65_ABS24;\
510         print_operand (1, "     >$0,x", args);\
511         size += 3;\
512         break;\
513   case ADDR_STACK_REL:\
514         args[0] = asR_W65_ABS8;\
515         print_operand (0, "     $0,s", args);\
516         size += 1;\
517         break;\
518   case ADDR_STACK_REL_INDX_IDX:\
519         args[0] = asR_W65_ABS8;\
520         print_operand (0, "     ($0,s),y", args);\
521         size += 1;\
522         break;\
523   case ADDR_ABS_IND:\
524         args[0] = asR_W65_ABS16;\
525         print_operand (1, "     ($0)", args);\
526         size += 2;\
527         break;\
528   case ADDR_ABS_IND_IDX:\
529         args[0] = asR_W65_ABS16;\
530         print_operand (1, "     ($0,x)", args);\
531         size += 2;\
532         break;\
533   case ADDR_BLOCK_MOVE:\
534         args[0] = (asR_W65_ABS16 >>8) &0xff;\
535         args[1] = ( asR_W65_ABS16 & 0xff);\
536         print_operand (0,"      $0,$1",args);\
537         size += 2;\
538         break;\
539
540 #define GETINFO(size,type,pcrel)\
541         case ADDR_IMMTOA: size = M==0 ? 2:1;type=M==0 ? R_W65_ABS16 : R_W65_ABS8;pcrel=0;break;\
542         case ADDR_IMMCOP: size = 1;type=R_W65_ABS8;pcrel=0;break;\
543         case ADDR_IMMTOI: size = X==0 ? 2:1;type=X==0 ? R_W65_ABS16 : R_W65_ABS8;pcrel=0;break;\
544         case ADDR_ACC: size = 0;type=-1;pcrel=0;break;\
545         case ADDR_PC_REL: size = 1;type=R_W65_PCR8;pcrel=0;break;\
546         case ADDR_PC_REL_LONG: size = 2;type=R_W65_PCR16;pcrel=0;break;\
547         case ADDR_IMPLIED: size = 0;type=-1;pcrel=0;break;\
548         case ADDR_STACK: size = 0;type=-1;pcrel=0;break;\
549         case ADDR_DIR: size = 1;type=R_W65_ABS8;pcrel=0;break;\
550         case ADDR_DIR_IDX_X: size = 1;type=R_W65_ABS8;pcrel=0;break;\
551         case ADDR_DIR_IDX_Y: size = 1;type=R_W65_ABS8;pcrel=0;break;\
552         case ADDR_DIR_IND: size = 1;type=R_W65_ABS8;pcrel=0;break;\
553         case ADDR_DIR_IDX_IND_X: size = 1;type=R_W65_ABS8;pcrel=0;break;\
554         case ADDR_DIR_IND_IDX_Y: size = 1;type=R_W65_ABS8;pcrel=0;break;\
555         case ADDR_DIR_IND_LONG: size = 1;type=R_W65_ABS8;pcrel=0;break;\
556         case ADDR_DIR_IND_IDX_Y_LONG: size = 1;type=R_W65_ABS8;pcrel=0;break;\
557         case ADDR_ABS: size = 2;type=R_W65_ABS16;pcrel=0;break;\
558         case ADDR_ABS_IDX_X: size = 2;type=R_W65_ABS16;pcrel=0;break;\
559         case ADDR_ABS_IDX_Y: size = 2;type=R_W65_ABS16;pcrel=0;break;\
560         case ADDR_ABS_LONG: size = 3;type=R_W65_ABS24;pcrel=0;break;\
561         case ADDR_ABS_IND_LONG: size = 2;type=R_W65_ABS16;pcrel=0;break;\
562         case ADDR_ABS_LONG_IDX_X: size = 3;type=R_W65_ABS24;pcrel=0;break;\
563         case ADDR_STACK_REL: size = 1;type=R_W65_ABS8;pcrel=0;break;\
564         case ADDR_STACK_REL_INDX_IDX: size = 1;type=R_W65_ABS8;pcrel=0;break;\
565         case ADDR_ABS_IND: size = 2;type=R_W65_ABS16;pcrel=0;break;\
566         case ADDR_ABS_IND_IDX: size = 2;type=R_W65_ABS16;pcrel=0;break;\
567         case ADDR_BLOCK_MOVE: size = 2;type=-1;pcrel=0;break;\
568