1/* Instruction opcode header for WDC 65816
2   (generated by the program sim/w65/gencode -a)
3
4   Copyright (C) 2001-2017 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     */
50struct opinfo {
51	int val;
52	int code;
53	char *name;
54	int amode;
55};
56const 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
569