summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/mc68hc11/hc11ops.h
blob: ee8c538a72f0bb47ebe242fad8e6745fa36f7d03 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
// license:BSD-3-Clause
// copyright-holders:Ville Linde, Angelo Salese, hap

const mc68hc11_cpu_device::hc11_opcode_list_struct mc68hc11_cpu_device::hc11_opcode_list[] =
{
	/*  page    opcode          handler                     */
	{   0,      0x1b,           &HC11OP(aba)                },
	{   0,      0x3a,           &HC11OP(abx)                },
	{   0x18,   0x3a,           &HC11OP(aby)                },
	{   0,      0x89,           &HC11OP(adca_imm)           },
	{   0,      0x99,           &HC11OP(adca_dir)           },
	{   0,      0xb9,           &HC11OP(adca_ext)           },
	{   0,      0xa9,           &HC11OP(adca_indx)          },
	{   0x18,   0xa9,           &HC11OP(adca_indy)          },
	{   0,      0xc9,           &HC11OP(adcb_imm)           },
	{   0,      0xd9,           &HC11OP(adcb_dir)           },
	{   0,      0xf9,           &HC11OP(adcb_ext)           },
	{   0,      0xe9,           &HC11OP(adcb_indx)          },
	{   0x18,   0xe9,           &HC11OP(adcb_indy)          },
	{   0,      0x8b,           &HC11OP(adda_imm)           },
	{   0,      0x9b,           &HC11OP(adda_dir)           },
	{   0,      0xbb,           &HC11OP(adda_ext)           },
	{   0,      0xab,           &HC11OP(adda_indx)          },
	{   0x18,   0xab,           &HC11OP(adda_indy)          },
	{   0,      0xcb,           &HC11OP(addb_imm)           },
	{   0,      0xdb,           &HC11OP(addb_dir)           },
	{   0,      0xfb,           &HC11OP(addb_ext)           },
	{   0,      0xeb,           &HC11OP(addb_indx)          },
	{   0x18,   0xeb,           &HC11OP(addb_indy)          },
	{   0,      0xc3,           &HC11OP(addd_imm)           },
	{   0,      0xd3,           &HC11OP(addd_dir)           },
	{   0,      0xf3,           &HC11OP(addd_ext)           },
	{   0,      0xe3,           &HC11OP(addd_indx)          },
	{   0x18,   0xe3,           &HC11OP(addd_indy)          },
	{   0,      0x84,           &HC11OP(anda_imm)           },
	{   0,      0x94,           &HC11OP(anda_dir)           },
	{   0,      0xb4,           &HC11OP(anda_ext)           },
	{   0,      0xa4,           &HC11OP(anda_indx)          },
	{   0x18,   0xa4,           &HC11OP(anda_indy)          },
	{   0,      0xc4,           &HC11OP(andb_imm)           },
	{   0,      0xd4,           &HC11OP(andb_dir)           },
	{   0,      0xf4,           &HC11OP(andb_ext)           },
	{   0,      0xe4,           &HC11OP(andb_indx)          },
	{   0x18,   0xe4,           &HC11OP(andb_indy)          },
	{   0,      0x48,           &HC11OP(asla)               },
	{   0,      0x58,           &HC11OP(aslb)               },
	{   0,      0x78,           &HC11OP(asl_ext)            },
	{   0,      0x68,           &HC11OP(asl_indx)           },
	{   0x18,   0x68,           &HC11OP(asl_indy)           },
	{   0,      0x47,           &HC11OP(asra)               },
	{   0,      0x57,           &HC11OP(asrb)               },
	{   0,      0x77,           &HC11OP(asr_ext)            },
	{   0,      0x67,           &HC11OP(asr_indx)           },
	{   0x18,   0x67,           &HC11OP(asr_indy)           },
	{   0,      0x24,           &HC11OP(bcc)                },
	{   0,      0x15,           &HC11OP(bclr_dir)           },
	{   0,      0x1d,           &HC11OP(bclr_indx)          },
	{   0x18,   0x1d,           &HC11OP(bclr_indy)          },
	{   0,      0x25,           &HC11OP(bcs)                },
	{   0,      0x27,           &HC11OP(beq)                },
	{   0,      0x2c,           &HC11OP(bge)                },
	{   0,      0x2e,           &HC11OP(bgt)                },
	{   0,      0x22,           &HC11OP(bhi)                },
	{   0,      0x85,           &HC11OP(bita_imm)           },
	{   0,      0x95,           &HC11OP(bita_dir)           },
	{   0,      0xb5,           &HC11OP(bita_ext)           },
	{   0,      0xa5,           &HC11OP(bita_indx)          },
	{   0x18,   0xa5,           &HC11OP(bita_indy)          },
	{   0,      0xc5,           &HC11OP(bitb_imm)           },
	{   0,      0xd5,           &HC11OP(bitb_dir)           },
	{   0,      0xf5,           &HC11OP(bitb_ext)           },
	{   0,      0xe5,           &HC11OP(bitb_indx)          },
	{   0x18,   0xe5,           &HC11OP(bitb_indy)          },
	{   0,      0x2f,           &HC11OP(ble)                },
	{   0,      0x23,           &HC11OP(bls)                },
	{   0,      0x2d,           &HC11OP(blt)                },
	{   0,      0x2b,           &HC11OP(bmi)                },
	{   0,      0x26,           &HC11OP(bne)                },
	{   0,      0x2a,           &HC11OP(bpl)                },
	{   0,      0x20,           &HC11OP(bra)                },
	{   0,      0x13,           &HC11OP(brclr_dir)          },
	{   0,      0x1f,           &HC11OP(brclr_indx)         },
	{   0x18,   0x1f,           &HC11OP(brclr_indy)         },
	{   0,      0x21,           &HC11OP(brn)                },
	{   0,      0x12,           &HC11OP(brset_dir)          },
	{   0,      0x1e,           &HC11OP(brset_indx)         },
	{   0x18,   0x1e,           &HC11OP(brset_indy)         },
	{   0,      0x14,           &HC11OP(bset_dir)           },
	{   0,      0x1c,           &HC11OP(bset_indx)          },
	{   0x18,   0x1c,           &HC11OP(bset_indy)          },
	{   0,      0x8d,           &HC11OP(bsr)                },
	{   0,      0x28,           &HC11OP(bvc)                },
	{   0,      0x29,           &HC11OP(bvs)                },
	{   0,      0x11,           &HC11OP(cba)                },
	{   0,      0x0c,           &HC11OP(clc)                },
	{   0,      0x0e,           &HC11OP(cli)                },
	{   0,      0x4f,           &HC11OP(clra)               },
	{   0,      0x5f,           &HC11OP(clrb)               },
	{   0,      0x7f,           &HC11OP(clr_ext)            },
	{   0,      0x6f,           &HC11OP(clr_indx)           },
	{   0x18,   0x6f,           &HC11OP(clr_indy)           },
	{   0,      0x0a,           &HC11OP(clv)                },
	{   0,      0x81,           &HC11OP(cmpa_imm)           },
	{   0,      0x91,           &HC11OP(cmpa_dir)           },
	{   0,      0xb1,           &HC11OP(cmpa_ext)           },
	{   0,      0xa1,           &HC11OP(cmpa_indx)          },
	{   0x18,   0xa1,           &HC11OP(cmpa_indy)          },
	{   0,      0xc1,           &HC11OP(cmpb_imm)           },
	{   0,      0xd1,           &HC11OP(cmpb_dir)           },
	{   0,      0xf1,           &HC11OP(cmpb_ext)           },
	{   0,      0xe1,           &HC11OP(cmpb_indx)          },
	{   0x18,   0xe1,           &HC11OP(cmpb_indy)          },
	{   0,      0x43,           &HC11OP(coma)               },
	{   0,      0x53,           &HC11OP(comb)               },
	{   0,      0x73,           &HC11OP(com_ext)            },
	{   0,      0x63,           &HC11OP(com_indx)           },
	{   0x18,   0x63,           &HC11OP(com_indy)           },
	{   0x1a,   0x83,           &HC11OP(cpd_imm)            },
	{   0x1a,   0x93,           &HC11OP(cpd_dir)            },
	{   0x1a,   0xb3,           &HC11OP(cpd_ext)            },
	{   0x1a,   0xa3,           &HC11OP(cpd_indx)           },
	{   0xcd,   0xa3,           &HC11OP(cpd_indy)           },
	{   0,      0x8c,           &HC11OP(cpx_imm)            },
	{   0,      0x9c,           &HC11OP(cpx_dir)            },
	{   0,      0xbc,           &HC11OP(cpx_ext)            },
	{   0,      0xac,           &HC11OP(cpx_indx)           },
	{   0xcd,   0xac,           &HC11OP(cpx_indy)           },
	{   0x18,   0x8c,           &HC11OP(cpy_imm)            },
	{   0x18,   0x9c,           &HC11OP(cpy_dir)            },
	{   0x18,   0xbc,           &HC11OP(cpy_ext)            },
	{   0x1a,   0xac,           &HC11OP(cpy_indx)           },
	{   0x18,   0xac,           &HC11OP(cpy_indy)           },
	{   0,      0x19,           &HC11OP(daa)                },
	{   0,      0x4a,           &HC11OP(deca)               },
	{   0,      0x5a,           &HC11OP(decb)               },
	{   0,      0x7a,           &HC11OP(dec_ext)            },
	{   0,      0x6a,           &HC11OP(dec_indx)           },
	{   0x18,   0x6a,           &HC11OP(dec_indy)           },
	{   0,      0x34,           &HC11OP(des)                },
	{   0,      0x09,           &HC11OP(dex)                },
	{   0x18,   0x09,           &HC11OP(dey)                },
	{   0,      0x88,           &HC11OP(eora_imm)           },
	{   0,      0x98,           &HC11OP(eora_dir)           },
	{   0,      0xb8,           &HC11OP(eora_ext)           },
	{   0,      0xa8,           &HC11OP(eora_indx)          },
	{   0x18,   0xa8,           &HC11OP(eora_indy)          },
	{   0,      0xc8,           &HC11OP(eorb_imm)           },
	{   0,      0xd8,           &HC11OP(eorb_dir)           },
	{   0,      0xf8,           &HC11OP(eorb_ext)           },
	{   0,      0xe8,           &HC11OP(eorb_indx)          },
	{   0x18,   0xe8,           &HC11OP(eorb_indy)          },
//  {   0,      0x03,           &HC11OP(fdiv)               },
	{   0,      0x02,           &HC11OP(idiv)               },
	{   0,      0x4c,           &HC11OP(inca)               },
	{   0,      0x5c,           &HC11OP(incb)               },
	{   0,      0x7c,           &HC11OP(inc_ext)            },
	{   0,      0x6c,           &HC11OP(inc_indx)           },
	{   0x18,   0x6c,           &HC11OP(inc_indy)           },
	{   0,      0x31,           &HC11OP(ins)                },
	{   0,      0x08,           &HC11OP(inx)                },
	{   0x18,   0x08,           &HC11OP(iny)                },
	{   0,      0x7e,           &HC11OP(jmp_ext)            },
	{   0,      0x6e,           &HC11OP(jmp_indx)           },
	{   0x18,   0x6e,           &HC11OP(jmp_indy)           },
	{   0,      0x9d,           &HC11OP(jsr_dir)            },
	{   0,      0xbd,           &HC11OP(jsr_ext)            },
	{   0,      0xad,           &HC11OP(jsr_indx)           },
	{   0x18,   0xad,           &HC11OP(jsr_indy)           },
	{   0,      0x86,           &HC11OP(ldaa_imm)           },
	{   0,      0x96,           &HC11OP(ldaa_dir)           },
	{   0,      0xb6,           &HC11OP(ldaa_ext)           },
	{   0,      0xa6,           &HC11OP(ldaa_indx)          },
	{   0x18,   0xa6,           &HC11OP(ldaa_indy)          },
	{   0,      0xc6,           &HC11OP(ldab_imm)           },
	{   0,      0xd6,           &HC11OP(ldab_dir)           },
	{   0,      0xf6,           &HC11OP(ldab_ext)           },
	{   0,      0xe6,           &HC11OP(ldab_indx)          },
	{   0x18,   0xe6,           &HC11OP(ldab_indy)          },
	{   0,      0xcc,           &HC11OP(ldd_imm)            },
	{   0,      0xdc,           &HC11OP(ldd_dir)            },
	{   0,      0xfc,           &HC11OP(ldd_ext)            },
	{   0,      0xec,           &HC11OP(ldd_indx)           },
	{   0x18,   0xec,           &HC11OP(ldd_indy)           },
	{   0,      0x8e,           &HC11OP(lds_imm)            },
	{   0,      0x9e,           &HC11OP(lds_dir)            },
	{   0,      0xbe,           &HC11OP(lds_ext)            },
	{   0,      0xae,           &HC11OP(lds_indx)           },
	{   0x18,   0xae,           &HC11OP(lds_indy)           },
	{   0,      0xce,           &HC11OP(ldx_imm)            },
	{   0,      0xde,           &HC11OP(ldx_dir)            },
	{   0,      0xfe,           &HC11OP(ldx_ext)            },
	{   0,      0xee,           &HC11OP(ldx_indx)           },
	{   0xcd,   0xee,           &HC11OP(ldx_indy)           },
	{   0x18,   0xce,           &HC11OP(ldy_imm)            },
	{   0x18,   0xde,           &HC11OP(ldy_dir)            },
	{   0x18,   0xfe,           &HC11OP(ldy_ext)            },
	{   0x1a,   0xee,           &HC11OP(ldy_indx)           },
	{   0x18,   0xee,           &HC11OP(ldy_indy)           },
	{   0,      0x05,           &HC11OP(lsld)               },
	{   0,      0x44,           &HC11OP(lsra)               },
	{   0,      0x54,           &HC11OP(lsrb)               },
	{   0,      0x74,           &HC11OP(lsr_ext)            },
	{   0,      0x64,           &HC11OP(lsr_indx)           },
	{   0x18,   0x64,           &HC11OP(lsr_indy)           },
	{   0,      0x04,           &HC11OP(lsrd)               },
	{   0,      0x3d,           &HC11OP(mul)                },
	{   0,      0x40,           &HC11OP(nega)               },
	{   0,      0x50,           &HC11OP(negb)               },
	{   0,      0x70,           &HC11OP(neg_ext)            },
	{   0,      0x60,           &HC11OP(neg_indx)           },
	{   0x18,   0x60,           &HC11OP(neg_indy)           },
	{   0,      0x01,           &HC11OP(nop)                },
	{   0,      0x8a,           &HC11OP(oraa_imm)           },
	{   0,      0x9a,           &HC11OP(oraa_dir)           },
	{   0,      0xba,           &HC11OP(oraa_ext)           },
	{   0,      0xaa,           &HC11OP(oraa_indx)          },
	{   0x18,   0xaa,           &HC11OP(oraa_indy)          },
	{   0,      0xca,           &HC11OP(orab_imm)           },
	{   0,      0xda,           &HC11OP(orab_dir)           },
	{   0,      0xfa,           &HC11OP(orab_ext)           },
	{   0,      0xea,           &HC11OP(orab_indx)          },
	{   0x18,   0xea,           &HC11OP(orab_indy)          },
	{   0,      0x36,           &HC11OP(psha)               },
	{   0,      0x37,           &HC11OP(pshb)               },
	{   0,      0x3c,           &HC11OP(pshx)               },
	{   0x18,   0x3c,           &HC11OP(pshy)               },
	{   0,      0x32,           &HC11OP(pula)               },
	{   0,      0x33,           &HC11OP(pulb)               },
	{   0,      0x38,           &HC11OP(pulx)               },
	{   0x18,   0x38,           &HC11OP(puly)               },
	{   0,      0x49,           &HC11OP(rola)               },
	{   0,      0x59,           &HC11OP(rolb)               },
	{   0,      0x79,           &HC11OP(rol_ext)            },
	{   0,      0x69,           &HC11OP(rol_indx)           },
	{   0x18,   0x69,           &HC11OP(rol_indy)           },
	{   0,      0x46,           &HC11OP(rora)               },
	{   0,      0x56,           &HC11OP(rorb)               },
	{   0,      0x76,           &HC11OP(ror_ext)            },
	{   0,      0x66,           &HC11OP(ror_indx)           },
	{   0x18,   0x66,           &HC11OP(ror_indy)           },
	{   0,      0x3b,           &HC11OP(rti)                },
	{   0,      0x39,           &HC11OP(rts)                },
	{   0,      0x10,           &HC11OP(sba)                },
	{   0,      0x82,           &HC11OP(sbca_imm)           },
	{   0,      0x92,           &HC11OP(sbca_dir)           },
	{   0,      0xb2,           &HC11OP(sbca_ext)           },
	{   0,      0xa2,           &HC11OP(sbca_indx)          },
	{   0x18,   0xa2,           &HC11OP(sbca_indy)          },
	{   0,      0xc2,           &HC11OP(sbcb_imm)           },
	{   0,      0xd2,           &HC11OP(sbcb_dir)           },
	{   0,      0xf2,           &HC11OP(sbcb_ext)           },
	{   0,      0xe2,           &HC11OP(sbcb_indx)          },
	{   0x18,   0xe2,           &HC11OP(sbcb_indy)          },
	{   0,      0x0d,           &HC11OP(sec)                },
	{   0,      0x0f,           &HC11OP(sei)                },
	{   0,      0x0b,           &HC11OP(sev)                },
	{   0,      0x97,           &HC11OP(staa_dir)           },
	{   0,      0xb7,           &HC11OP(staa_ext)           },
	{   0,      0xa7,           &HC11OP(staa_indx)          },
	{   0x18,   0xa7,           &HC11OP(staa_indy)          },
	{   0,      0xd7,           &HC11OP(stab_dir)           },
	{   0,      0xf7,           &HC11OP(stab_ext)           },
	{   0,      0xe7,           &HC11OP(stab_indx)          },
	{   0x18,   0xe7,           &HC11OP(stab_indy)          },
	{   0,      0xdd,           &HC11OP(std_dir)            },
	{   0,      0xfd,           &HC11OP(std_ext)            },
	{   0,      0xed,           &HC11OP(std_indx)           },
	{   0x18,   0xed,           &HC11OP(std_indy)           },
	{   0,      0x9f,           &HC11OP(sts_dir)            },
	{   0,      0xbf,           &HC11OP(sts_ext)            },
	{   0,      0xaf,           &HC11OP(sts_indx)           },
	{   0x18,   0xaf,           &HC11OP(sts_indy)           },
	{   0,      0xdf,           &HC11OP(stx_dir)            },
	{   0,      0xff,           &HC11OP(stx_ext)            },
	{   0,      0xef,           &HC11OP(stx_indx)           },
	{   0xcd,   0xef,           &HC11OP(stx_indy)           },
	{   0x18,   0xdf,           &HC11OP(sty_dir)            },
	{   0x18,   0xff,           &HC11OP(sty_ext)            },
	{   0x1a,   0xef,           &HC11OP(sty_indx)           },
	{   0x18,   0xef,           &HC11OP(sty_indy)           },
	{   0,      0xcf,           &HC11OP(stop)               },
	{   0,      0x80,           &HC11OP(suba_imm)           },
	{   0,      0x90,           &HC11OP(suba_dir)           },
	{   0,      0xb0,           &HC11OP(suba_ext)           },
	{   0,      0xa0,           &HC11OP(suba_indx)          },
	{   0x18,   0xa0,           &HC11OP(suba_indy)          },
	{   0,      0xc0,           &HC11OP(subb_imm)           },
	{   0,      0xd0,           &HC11OP(subb_dir)           },
	{   0,      0xf0,           &HC11OP(subb_ext)           },
	{   0,      0xe0,           &HC11OP(subb_indx)          },
	{   0x18,   0xe0,           &HC11OP(subb_indy)          },
	{   0,      0x83,           &HC11OP(subd_imm)           },
	{   0,      0x93,           &HC11OP(subd_dir)           },
	{   0,      0xb3,           &HC11OP(subd_ext)           },
	{   0,      0xa3,           &HC11OP(subd_indx)          },
	{   0x18,   0xa3,           &HC11OP(subd_indy)          },
	{   0,      0x3f,           &HC11OP(swi)                },
	{   0,      0x16,           &HC11OP(tab)                },
	{   0,      0x06,           &HC11OP(tap)                },
	{   0,      0x17,           &HC11OP(tba)                },
	{   0,      0x00,           &HC11OP(test)               },
	{   0,      0x07,           &HC11OP(tpa)                },
	{   0,      0x4d,           &HC11OP(tsta)               },
	{   0,      0x5d,           &HC11OP(tstb)               },
	{   0,      0x7d,           &HC11OP(tst_ext)            },
	{   0,      0x6d,           &HC11OP(tst_indx)           },
	{   0x18,   0x6d,           &HC11OP(tst_indy)           },
	{   0,      0x30,           &HC11OP(tsx)                },
	{   0x18,   0x30,           &HC11OP(tsy)                },
	{   0,      0x35,           &HC11OP(txs)                },
	{   0x18,   0x35,           &HC11OP(tys)                },
	{   0,      0x3e,           &HC11OP(wai)                },
	{   0,      0x8f,           &HC11OP(xgdx)               },
	{   0x18,   0x8f,           &HC11OP(xgdy)               },

	{   0,      0x18,           &HC11OP(page2)              },
	{   0,      0x1a,           &HC11OP(page3)              },
	{   0,      0xcd,           &HC11OP(page4)              },
};