1 
2 /* ======================================================================== */
3 /* ============== CYCLE-ACCURATE DIV/MUL EXECUTION ======================== */
4 /* ======================================================================== */
5 
UseDivuCycles(uint32 dst,uint32 src)6 INLINE void UseDivuCycles(uint32 dst, uint32 src)
7 {
8   int i;
9 
10   /* minimum cycle time */
11   uint mcycles = 38 * MUL;
12 
13   /* 16-bit divisor */
14   src <<= 16;
15 
16   /* 16-bit dividend */
17   for (i=0; i<15; i++)
18   {
19     /* check if carry bit set  */
20     if ((sint32) dst < 0)
21     {
22       /* shift dividend and apply divisor */
23       dst <<= 1;
24       dst -= src;
25     }
26     else
27     {
28       /* shift dividend and add two cycles */
29       dst <<= 1;
30       mcycles += (2 * MUL);
31 
32       if (dst >= src)
33       {
34         /* apply divisor and remove one cycle */
35         dst -= src;
36         mcycles -= 1 * MUL;
37       }
38     }
39   }
40 
41   USE_CYCLES(mcycles << 1);
42 }
43 
UseDivsCycles(sint32 dst,sint16 src)44 INLINE void UseDivsCycles(sint32 dst, sint16 src)
45 {
46   /* minimum cycle time */
47   uint mcycles = 6 * MUL;
48 
49   /* negative dividend */
50   if (dst < 0) mcycles += 1 * MUL;
51 
52   if ((abs(dst) >> 16) < abs(src))
53   {
54     int i;
55 
56     /* absolute quotient */
57     uint32 quotient = abs(dst) / abs(src);
58 
59     /* add default cycle time */
60     mcycles += (55 * MUL);
61 
62     /* positive divisor */
63     if (src >= 0)
64     {
65       /* check dividend sign */
66       if (dst >= 0) mcycles -= 1 * MUL;
67       else mcycles += 1 * MUL;
68     }
69 
70     /* check higher 15-bits of quotient */
71     for (i=0; i<15; i++)
72     {
73       quotient >>= 1;
74       if (!(quotient & 1)) mcycles += 1 * MUL;
75     }
76   }
77   else
78   {
79     /* absolute overflow */
80     mcycles += (2 * MUL);
81   }
82 
83   USE_CYCLES(mcycles << 1);
84 }
85 
UseMuluCycles(uint16 src)86 INLINE void UseMuluCycles(uint16 src)
87 {
88   /* minimum cycle time */
89   uint mcycles = 38 * MUL;
90 
91   /* count number of bits set to 1 */
92   while (src)
93   {
94     if (src & 1) mcycles += (2 * MUL);
95     src >>= 1;
96   }
97 
98   /* 38 + 2*N */
99   USE_CYCLES(mcycles);
100 }
101 
UseMulsCycles(sint16 src)102 INLINE void UseMulsCycles(sint16 src)
103 {
104   /* minimum cycle time */
105   uint mcycles = 38 * MUL;
106 
107   /* detect 01 or 10 patterns */
108   sint32 tmp = src << 1;
109   tmp = (tmp ^ src) & 0xFFFF;
110 
111   /* count number of bits set to 1 */
112   while (tmp)
113   {
114     if (tmp & 1) mcycles += (2 * MUL);
115     tmp >>= 1;
116   }
117 
118   /* 38 + 2*N */
119   USE_CYCLES(mcycles);
120 }
121 
122 
123 /* ======================================================================== */
124 /* ========================= INSTRUCTION HANDLERS ========================= */
125 /* ======================================================================== */
126 
127 
m68k_op_1010(void)128 static void m68k_op_1010(void)
129 {
130   m68ki_exception_1010();
131 }
132 
133 
m68k_op_1111(void)134 static void m68k_op_1111(void)
135 {
136   m68ki_exception_1111();
137 }
138 
139 
m68k_op_abcd_8_rr(void)140 static void m68k_op_abcd_8_rr(void)
141 {
142   uint* r_dst = &DX;
143   uint src = DY;
144   uint dst = *r_dst;
145   uint res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_AS_1();
146   uint corf = 0;
147 
148   if(res > 9)
149     corf = 6;
150   res += HIGH_NIBBLE(src) + HIGH_NIBBLE(dst);
151   FLAG_V = ~res; /* Undefined V behavior */
152 
153   res += corf;
154   FLAG_X = FLAG_C = (res > 0x9f) << 8;
155   if(FLAG_C)
156     res -= 0xa0;
157 
158   FLAG_V &= res; /* Undefined V behavior part II */
159   FLAG_N = NFLAG_8(res); /* Undefined N behavior */
160 
161   res = MASK_OUT_ABOVE_8(res);
162   FLAG_Z |= res;
163 
164   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
165 }
166 
167 
m68k_op_abcd_8_mm_ax7(void)168 static void m68k_op_abcd_8_mm_ax7(void)
169 {
170   uint src = OPER_AY_PD_8();
171   uint ea  = EA_A7_PD_8();
172   uint dst = m68ki_read_8(ea);
173   uint res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_AS_1();
174   uint corf = 0;
175 
176   if(res > 9)
177     corf = 6;
178   res += HIGH_NIBBLE(src) + HIGH_NIBBLE(dst);
179   FLAG_V = ~res; /* Undefined V behavior */
180 
181   res += corf;
182   FLAG_X = FLAG_C = (res > 0x9f) << 8;
183   if(FLAG_C)
184     res -= 0xa0;
185 
186   FLAG_V &= res; /* Undefined V behavior part II */
187   FLAG_N = NFLAG_8(res); /* Undefined N behavior */
188 
189   res = MASK_OUT_ABOVE_8(res);
190   FLAG_Z |= res;
191 
192   m68ki_write_8(ea, res);
193 }
194 
195 
m68k_op_abcd_8_mm_ay7(void)196 static void m68k_op_abcd_8_mm_ay7(void)
197 {
198   uint src = OPER_A7_PD_8();
199   uint ea  = EA_AX_PD_8();
200   uint dst = m68ki_read_8(ea);
201   uint res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_AS_1();
202   uint corf = 0;
203 
204   if(res > 9)
205     corf = 6;
206   res += HIGH_NIBBLE(src) + HIGH_NIBBLE(dst);
207   FLAG_V = ~res; /* Undefined V behavior */
208 
209   res += corf;
210   FLAG_X = FLAG_C = (res > 0x9f) << 8;
211   if(FLAG_C)
212     res -= 0xa0;
213 
214   FLAG_V &= res; /* Undefined V behavior part II */
215   FLAG_N = NFLAG_8(res); /* Undefined N behavior */
216 
217   res = MASK_OUT_ABOVE_8(res);
218   FLAG_Z |= res;
219 
220   m68ki_write_8(ea, res);
221 }
222 
223 
m68k_op_abcd_8_mm_axy7(void)224 static void m68k_op_abcd_8_mm_axy7(void)
225 {
226   uint src = OPER_A7_PD_8();
227   uint ea  = EA_A7_PD_8();
228   uint dst = m68ki_read_8(ea);
229   uint res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_AS_1();
230   uint corf = 0;
231 
232   if(res > 9)
233     corf = 6;
234   res += HIGH_NIBBLE(src) + HIGH_NIBBLE(dst);
235   FLAG_V = ~res; /* Undefined V behavior */
236 
237   res += corf;
238   FLAG_X = FLAG_C = (res > 0x9f) << 8;
239   if(FLAG_C)
240     res -= 0xa0;
241 
242   FLAG_V &= res; /* Undefined V behavior part II */
243   FLAG_N = NFLAG_8(res); /* Undefined N behavior */
244 
245   res = MASK_OUT_ABOVE_8(res);
246   FLAG_Z |= res;
247 
248   m68ki_write_8(ea, res);
249 }
250 
251 
m68k_op_abcd_8_mm(void)252 static void m68k_op_abcd_8_mm(void)
253 {
254   uint src = OPER_AY_PD_8();
255   uint ea  = EA_AX_PD_8();
256   uint dst = m68ki_read_8(ea);
257   uint res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_AS_1();
258   uint corf = 0;
259 
260   if(res > 9)
261     corf = 6;
262   res += HIGH_NIBBLE(src) + HIGH_NIBBLE(dst);
263   FLAG_V = ~res; /* Undefined V behavior */
264 
265   res += corf;
266   FLAG_X = FLAG_C = (res > 0x9f) << 8;
267   if(FLAG_C)
268     res -= 0xa0;
269 
270   FLAG_V &= res; /* Undefined V behavior part II */
271   FLAG_N = NFLAG_8(res); /* Undefined N behavior */
272 
273   res = MASK_OUT_ABOVE_8(res);
274   FLAG_Z |= res;
275 
276   m68ki_write_8(ea, res);
277 }
278 
279 
m68k_op_add_8_er_d(void)280 static void m68k_op_add_8_er_d(void)
281 {
282   uint* r_dst = &DX;
283   uint src = MASK_OUT_ABOVE_8(DY);
284   uint dst = MASK_OUT_ABOVE_8(*r_dst);
285   uint res = src + dst;
286 
287   FLAG_N = NFLAG_8(res);
288   FLAG_V = VFLAG_ADD_8(src, dst, res);
289   FLAG_X = FLAG_C = CFLAG_8(res);
290   FLAG_Z = MASK_OUT_ABOVE_8(res);
291 
292   *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
293 }
294 
295 
m68k_op_add_8_er_ai(void)296 static void m68k_op_add_8_er_ai(void)
297 {
298   uint* r_dst = &DX;
299   uint src = OPER_AY_AI_8();
300   uint dst = MASK_OUT_ABOVE_8(*r_dst);
301   uint res = src + dst;
302 
303   FLAG_N = NFLAG_8(res);
304   FLAG_V = VFLAG_ADD_8(src, dst, res);
305   FLAG_X = FLAG_C = CFLAG_8(res);
306   FLAG_Z = MASK_OUT_ABOVE_8(res);
307 
308   *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
309 }
310 
311 
m68k_op_add_8_er_pi(void)312 static void m68k_op_add_8_er_pi(void)
313 {
314   uint* r_dst = &DX;
315   uint src = OPER_AY_PI_8();
316   uint dst = MASK_OUT_ABOVE_8(*r_dst);
317   uint res = src + dst;
318 
319   FLAG_N = NFLAG_8(res);
320   FLAG_V = VFLAG_ADD_8(src, dst, res);
321   FLAG_X = FLAG_C = CFLAG_8(res);
322   FLAG_Z = MASK_OUT_ABOVE_8(res);
323 
324   *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
325 }
326 
327 
m68k_op_add_8_er_pi7(void)328 static void m68k_op_add_8_er_pi7(void)
329 {
330   uint* r_dst = &DX;
331   uint src = OPER_A7_PI_8();
332   uint dst = MASK_OUT_ABOVE_8(*r_dst);
333   uint res = src + dst;
334 
335   FLAG_N = NFLAG_8(res);
336   FLAG_V = VFLAG_ADD_8(src, dst, res);
337   FLAG_X = FLAG_C = CFLAG_8(res);
338   FLAG_Z = MASK_OUT_ABOVE_8(res);
339 
340   *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
341 }
342 
343 
m68k_op_add_8_er_pd(void)344 static void m68k_op_add_8_er_pd(void)
345 {
346   uint* r_dst = &DX;
347   uint src = OPER_AY_PD_8();
348   uint dst = MASK_OUT_ABOVE_8(*r_dst);
349   uint res = src + dst;
350 
351   FLAG_N = NFLAG_8(res);
352   FLAG_V = VFLAG_ADD_8(src, dst, res);
353   FLAG_X = FLAG_C = CFLAG_8(res);
354   FLAG_Z = MASK_OUT_ABOVE_8(res);
355 
356   *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
357 }
358 
359 
m68k_op_add_8_er_pd7(void)360 static void m68k_op_add_8_er_pd7(void)
361 {
362   uint* r_dst = &DX;
363   uint src = OPER_A7_PD_8();
364   uint dst = MASK_OUT_ABOVE_8(*r_dst);
365   uint res = src + dst;
366 
367   FLAG_N = NFLAG_8(res);
368   FLAG_V = VFLAG_ADD_8(src, dst, res);
369   FLAG_X = FLAG_C = CFLAG_8(res);
370   FLAG_Z = MASK_OUT_ABOVE_8(res);
371 
372   *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
373 }
374 
375 
m68k_op_add_8_er_di(void)376 static void m68k_op_add_8_er_di(void)
377 {
378   uint* r_dst = &DX;
379   uint src = OPER_AY_DI_8();
380   uint dst = MASK_OUT_ABOVE_8(*r_dst);
381   uint res = src + dst;
382 
383   FLAG_N = NFLAG_8(res);
384   FLAG_V = VFLAG_ADD_8(src, dst, res);
385   FLAG_X = FLAG_C = CFLAG_8(res);
386   FLAG_Z = MASK_OUT_ABOVE_8(res);
387 
388   *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
389 }
390 
391 
m68k_op_add_8_er_ix(void)392 static void m68k_op_add_8_er_ix(void)
393 {
394   uint* r_dst = &DX;
395   uint src = OPER_AY_IX_8();
396   uint dst = MASK_OUT_ABOVE_8(*r_dst);
397   uint res = src + dst;
398 
399   FLAG_N = NFLAG_8(res);
400   FLAG_V = VFLAG_ADD_8(src, dst, res);
401   FLAG_X = FLAG_C = CFLAG_8(res);
402   FLAG_Z = MASK_OUT_ABOVE_8(res);
403 
404   *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
405 }
406 
407 
m68k_op_add_8_er_aw(void)408 static void m68k_op_add_8_er_aw(void)
409 {
410   uint* r_dst = &DX;
411   uint src = OPER_AW_8();
412   uint dst = MASK_OUT_ABOVE_8(*r_dst);
413   uint res = src + dst;
414 
415   FLAG_N = NFLAG_8(res);
416   FLAG_V = VFLAG_ADD_8(src, dst, res);
417   FLAG_X = FLAG_C = CFLAG_8(res);
418   FLAG_Z = MASK_OUT_ABOVE_8(res);
419 
420   *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
421 }
422 
423 
m68k_op_add_8_er_al(void)424 static void m68k_op_add_8_er_al(void)
425 {
426   uint* r_dst = &DX;
427   uint src = OPER_AL_8();
428   uint dst = MASK_OUT_ABOVE_8(*r_dst);
429   uint res = src + dst;
430 
431   FLAG_N = NFLAG_8(res);
432   FLAG_V = VFLAG_ADD_8(src, dst, res);
433   FLAG_X = FLAG_C = CFLAG_8(res);
434   FLAG_Z = MASK_OUT_ABOVE_8(res);
435 
436   *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
437 }
438 
439 
m68k_op_add_8_er_pcdi(void)440 static void m68k_op_add_8_er_pcdi(void)
441 {
442   uint* r_dst = &DX;
443   uint src = OPER_PCDI_8();
444   uint dst = MASK_OUT_ABOVE_8(*r_dst);
445   uint res = src + dst;
446 
447   FLAG_N = NFLAG_8(res);
448   FLAG_V = VFLAG_ADD_8(src, dst, res);
449   FLAG_X = FLAG_C = CFLAG_8(res);
450   FLAG_Z = MASK_OUT_ABOVE_8(res);
451 
452   *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
453 }
454 
455 
m68k_op_add_8_er_pcix(void)456 static void m68k_op_add_8_er_pcix(void)
457 {
458   uint* r_dst = &DX;
459   uint src = OPER_PCIX_8();
460   uint dst = MASK_OUT_ABOVE_8(*r_dst);
461   uint res = src + dst;
462 
463   FLAG_N = NFLAG_8(res);
464   FLAG_V = VFLAG_ADD_8(src, dst, res);
465   FLAG_X = FLAG_C = CFLAG_8(res);
466   FLAG_Z = MASK_OUT_ABOVE_8(res);
467 
468   *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
469 }
470 
471 
m68k_op_add_8_er_i(void)472 static void m68k_op_add_8_er_i(void)
473 {
474   uint* r_dst = &DX;
475   uint src = OPER_I_8();
476   uint dst = MASK_OUT_ABOVE_8(*r_dst);
477   uint res = src + dst;
478 
479   FLAG_N = NFLAG_8(res);
480   FLAG_V = VFLAG_ADD_8(src, dst, res);
481   FLAG_X = FLAG_C = CFLAG_8(res);
482   FLAG_Z = MASK_OUT_ABOVE_8(res);
483 
484   *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
485 }
486 
487 
m68k_op_add_16_er_d(void)488 static void m68k_op_add_16_er_d(void)
489 {
490   uint* r_dst = &DX;
491   uint src = MASK_OUT_ABOVE_16(DY);
492   uint dst = MASK_OUT_ABOVE_16(*r_dst);
493   uint res = src + dst;
494 
495   FLAG_N = NFLAG_16(res);
496   FLAG_V = VFLAG_ADD_16(src, dst, res);
497   FLAG_X = FLAG_C = CFLAG_16(res);
498   FLAG_Z = MASK_OUT_ABOVE_16(res);
499 
500   *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
501 }
502 
503 
m68k_op_add_16_er_a(void)504 static void m68k_op_add_16_er_a(void)
505 {
506   uint* r_dst = &DX;
507   uint src = MASK_OUT_ABOVE_16(AY);
508   uint dst = MASK_OUT_ABOVE_16(*r_dst);
509   uint res = src + dst;
510 
511   FLAG_N = NFLAG_16(res);
512   FLAG_V = VFLAG_ADD_16(src, dst, res);
513   FLAG_X = FLAG_C = CFLAG_16(res);
514   FLAG_Z = MASK_OUT_ABOVE_16(res);
515 
516   *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
517 }
518 
519 
m68k_op_add_16_er_ai(void)520 static void m68k_op_add_16_er_ai(void)
521 {
522   uint* r_dst = &DX;
523   uint src = OPER_AY_AI_16();
524   uint dst = MASK_OUT_ABOVE_16(*r_dst);
525   uint res = src + dst;
526 
527   FLAG_N = NFLAG_16(res);
528   FLAG_V = VFLAG_ADD_16(src, dst, res);
529   FLAG_X = FLAG_C = CFLAG_16(res);
530   FLAG_Z = MASK_OUT_ABOVE_16(res);
531 
532   *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
533 }
534 
535 
m68k_op_add_16_er_pi(void)536 static void m68k_op_add_16_er_pi(void)
537 {
538   uint* r_dst = &DX;
539   uint src = OPER_AY_PI_16();
540   uint dst = MASK_OUT_ABOVE_16(*r_dst);
541   uint res = src + dst;
542 
543   FLAG_N = NFLAG_16(res);
544   FLAG_V = VFLAG_ADD_16(src, dst, res);
545   FLAG_X = FLAG_C = CFLAG_16(res);
546   FLAG_Z = MASK_OUT_ABOVE_16(res);
547 
548   *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
549 }
550 
551 
m68k_op_add_16_er_pd(void)552 static void m68k_op_add_16_er_pd(void)
553 {
554   uint* r_dst = &DX;
555   uint src = OPER_AY_PD_16();
556   uint dst = MASK_OUT_ABOVE_16(*r_dst);
557   uint res = src + dst;
558 
559   FLAG_N = NFLAG_16(res);
560   FLAG_V = VFLAG_ADD_16(src, dst, res);
561   FLAG_X = FLAG_C = CFLAG_16(res);
562   FLAG_Z = MASK_OUT_ABOVE_16(res);
563 
564   *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
565 }
566 
567 
m68k_op_add_16_er_di(void)568 static void m68k_op_add_16_er_di(void)
569 {
570   uint* r_dst = &DX;
571   uint src = OPER_AY_DI_16();
572   uint dst = MASK_OUT_ABOVE_16(*r_dst);
573   uint res = src + dst;
574 
575   FLAG_N = NFLAG_16(res);
576   FLAG_V = VFLAG_ADD_16(src, dst, res);
577   FLAG_X = FLAG_C = CFLAG_16(res);
578   FLAG_Z = MASK_OUT_ABOVE_16(res);
579 
580   *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
581 }
582 
583 
m68k_op_add_16_er_ix(void)584 static void m68k_op_add_16_er_ix(void)
585 {
586   uint* r_dst = &DX;
587   uint src = OPER_AY_IX_16();
588   uint dst = MASK_OUT_ABOVE_16(*r_dst);
589   uint res = src + dst;
590 
591   FLAG_N = NFLAG_16(res);
592   FLAG_V = VFLAG_ADD_16(src, dst, res);
593   FLAG_X = FLAG_C = CFLAG_16(res);
594   FLAG_Z = MASK_OUT_ABOVE_16(res);
595 
596   *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
597 }
598 
599 
m68k_op_add_16_er_aw(void)600 static void m68k_op_add_16_er_aw(void)
601 {
602   uint* r_dst = &DX;
603   uint src = OPER_AW_16();
604   uint dst = MASK_OUT_ABOVE_16(*r_dst);
605   uint res = src + dst;
606 
607   FLAG_N = NFLAG_16(res);
608   FLAG_V = VFLAG_ADD_16(src, dst, res);
609   FLAG_X = FLAG_C = CFLAG_16(res);
610   FLAG_Z = MASK_OUT_ABOVE_16(res);
611 
612   *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
613 }
614 
615 
m68k_op_add_16_er_al(void)616 static void m68k_op_add_16_er_al(void)
617 {
618   uint* r_dst = &DX;
619   uint src = OPER_AL_16();
620   uint dst = MASK_OUT_ABOVE_16(*r_dst);
621   uint res = src + dst;
622 
623   FLAG_N = NFLAG_16(res);
624   FLAG_V = VFLAG_ADD_16(src, dst, res);
625   FLAG_X = FLAG_C = CFLAG_16(res);
626   FLAG_Z = MASK_OUT_ABOVE_16(res);
627 
628   *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
629 }
630 
631 
m68k_op_add_16_er_pcdi(void)632 static void m68k_op_add_16_er_pcdi(void)
633 {
634   uint* r_dst = &DX;
635   uint src = OPER_PCDI_16();
636   uint dst = MASK_OUT_ABOVE_16(*r_dst);
637   uint res = src + dst;
638 
639   FLAG_N = NFLAG_16(res);
640   FLAG_V = VFLAG_ADD_16(src, dst, res);
641   FLAG_X = FLAG_C = CFLAG_16(res);
642   FLAG_Z = MASK_OUT_ABOVE_16(res);
643 
644   *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
645 }
646 
647 
m68k_op_add_16_er_pcix(void)648 static void m68k_op_add_16_er_pcix(void)
649 {
650   uint* r_dst = &DX;
651   uint src = OPER_PCIX_16();
652   uint dst = MASK_OUT_ABOVE_16(*r_dst);
653   uint res = src + dst;
654 
655   FLAG_N = NFLAG_16(res);
656   FLAG_V = VFLAG_ADD_16(src, dst, res);
657   FLAG_X = FLAG_C = CFLAG_16(res);
658   FLAG_Z = MASK_OUT_ABOVE_16(res);
659 
660   *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
661 }
662 
663 
m68k_op_add_16_er_i(void)664 static void m68k_op_add_16_er_i(void)
665 {
666   uint* r_dst = &DX;
667   uint src = OPER_I_16();
668   uint dst = MASK_OUT_ABOVE_16(*r_dst);
669   uint res = src + dst;
670 
671   FLAG_N = NFLAG_16(res);
672   FLAG_V = VFLAG_ADD_16(src, dst, res);
673   FLAG_X = FLAG_C = CFLAG_16(res);
674   FLAG_Z = MASK_OUT_ABOVE_16(res);
675 
676   *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
677 }
678 
679 
m68k_op_add_32_er_d(void)680 static void m68k_op_add_32_er_d(void)
681 {
682   uint* r_dst = &DX;
683   uint src = DY;
684   uint dst = *r_dst;
685   uint res = src + dst;
686 
687   FLAG_N = NFLAG_32(res);
688   FLAG_V = VFLAG_ADD_32(src, dst, res);
689   FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);
690   FLAG_Z = MASK_OUT_ABOVE_32(res);
691 
692   *r_dst = FLAG_Z;
693 }
694 
695 
m68k_op_add_32_er_a(void)696 static void m68k_op_add_32_er_a(void)
697 {
698   uint* r_dst = &DX;
699   uint src = AY;
700   uint dst = *r_dst;
701   uint res = src + dst;
702 
703   FLAG_N = NFLAG_32(res);
704   FLAG_V = VFLAG_ADD_32(src, dst, res);
705   FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);
706   FLAG_Z = MASK_OUT_ABOVE_32(res);
707 
708   *r_dst = FLAG_Z;
709 }
710 
711 
m68k_op_add_32_er_ai(void)712 static void m68k_op_add_32_er_ai(void)
713 {
714   uint* r_dst = &DX;
715   uint src = OPER_AY_AI_32();
716   uint dst = *r_dst;
717   uint res = src + dst;
718 
719   FLAG_N = NFLAG_32(res);
720   FLAG_V = VFLAG_ADD_32(src, dst, res);
721   FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);
722   FLAG_Z = MASK_OUT_ABOVE_32(res);
723 
724   *r_dst = FLAG_Z;
725 }
726 
727 
m68k_op_add_32_er_pi(void)728 static void m68k_op_add_32_er_pi(void)
729 {
730   uint* r_dst = &DX;
731   uint src = OPER_AY_PI_32();
732   uint dst = *r_dst;
733   uint res = src + dst;
734 
735   FLAG_N = NFLAG_32(res);
736   FLAG_V = VFLAG_ADD_32(src, dst, res);
737   FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);
738   FLAG_Z = MASK_OUT_ABOVE_32(res);
739 
740   *r_dst = FLAG_Z;
741 }
742 
743 
m68k_op_add_32_er_pd(void)744 static void m68k_op_add_32_er_pd(void)
745 {
746   uint* r_dst = &DX;
747   uint src = OPER_AY_PD_32();
748   uint dst = *r_dst;
749   uint res = src + dst;
750 
751   FLAG_N = NFLAG_32(res);
752   FLAG_V = VFLAG_ADD_32(src, dst, res);
753   FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);
754   FLAG_Z = MASK_OUT_ABOVE_32(res);
755 
756   *r_dst = FLAG_Z;
757 }
758 
759 
m68k_op_add_32_er_di(void)760 static void m68k_op_add_32_er_di(void)
761 {
762   uint* r_dst = &DX;
763   uint src = OPER_AY_DI_32();
764   uint dst = *r_dst;
765   uint res = src + dst;
766 
767   FLAG_N = NFLAG_32(res);
768   FLAG_V = VFLAG_ADD_32(src, dst, res);
769   FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);
770   FLAG_Z = MASK_OUT_ABOVE_32(res);
771 
772   *r_dst = FLAG_Z;
773 }
774 
775 
m68k_op_add_32_er_ix(void)776 static void m68k_op_add_32_er_ix(void)
777 {
778   uint* r_dst = &DX;
779   uint src = OPER_AY_IX_32();
780   uint dst = *r_dst;
781   uint res = src + dst;
782 
783   FLAG_N = NFLAG_32(res);
784   FLAG_V = VFLAG_ADD_32(src, dst, res);
785   FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);
786   FLAG_Z = MASK_OUT_ABOVE_32(res);
787 
788   *r_dst = FLAG_Z;
789 }
790 
791 
m68k_op_add_32_er_aw(void)792 static void m68k_op_add_32_er_aw(void)
793 {
794   uint* r_dst = &DX;
795   uint src = OPER_AW_32();
796   uint dst = *r_dst;
797   uint res = src + dst;
798 
799   FLAG_N = NFLAG_32(res);
800   FLAG_V = VFLAG_ADD_32(src, dst, res);
801   FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);
802   FLAG_Z = MASK_OUT_ABOVE_32(res);
803 
804   *r_dst = FLAG_Z;
805 }
806 
807 
m68k_op_add_32_er_al(void)808 static void m68k_op_add_32_er_al(void)
809 {
810   uint* r_dst = &DX;
811   uint src = OPER_AL_32();
812   uint dst = *r_dst;
813   uint res = src + dst;
814 
815   FLAG_N = NFLAG_32(res);
816   FLAG_V = VFLAG_ADD_32(src, dst, res);
817   FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);
818   FLAG_Z = MASK_OUT_ABOVE_32(res);
819 
820   *r_dst = FLAG_Z;
821 }
822 
823 
m68k_op_add_32_er_pcdi(void)824 static void m68k_op_add_32_er_pcdi(void)
825 {
826   uint* r_dst = &DX;
827   uint src = OPER_PCDI_32();
828   uint dst = *r_dst;
829   uint res = src + dst;
830 
831   FLAG_N = NFLAG_32(res);
832   FLAG_V = VFLAG_ADD_32(src, dst, res);
833   FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);
834   FLAG_Z = MASK_OUT_ABOVE_32(res);
835 
836   *r_dst = FLAG_Z;
837 }
838 
839 
m68k_op_add_32_er_pcix(void)840 static void m68k_op_add_32_er_pcix(void)
841 {
842   uint* r_dst = &DX;
843   uint src = OPER_PCIX_32();
844   uint dst = *r_dst;
845   uint res = src + dst;
846 
847   FLAG_N = NFLAG_32(res);
848   FLAG_V = VFLAG_ADD_32(src, dst, res);
849   FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);
850   FLAG_Z = MASK_OUT_ABOVE_32(res);
851 
852   *r_dst = FLAG_Z;
853 }
854 
855 
m68k_op_add_32_er_i(void)856 static void m68k_op_add_32_er_i(void)
857 {
858   uint* r_dst = &DX;
859   uint src = OPER_I_32();
860   uint dst = *r_dst;
861   uint res = src + dst;
862 
863   FLAG_N = NFLAG_32(res);
864   FLAG_V = VFLAG_ADD_32(src, dst, res);
865   FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);
866   FLAG_Z = MASK_OUT_ABOVE_32(res);
867 
868   *r_dst = FLAG_Z;
869 }
870 
871 
m68k_op_add_8_re_ai(void)872 static void m68k_op_add_8_re_ai(void)
873 {
874   uint ea = EA_AY_AI_8();
875   uint src = MASK_OUT_ABOVE_8(DX);
876   uint dst = m68ki_read_8(ea);
877   uint res = src + dst;
878 
879   FLAG_N = NFLAG_8(res);
880   FLAG_V = VFLAG_ADD_8(src, dst, res);
881   FLAG_X = FLAG_C = CFLAG_8(res);
882   FLAG_Z = MASK_OUT_ABOVE_8(res);
883 
884   m68ki_write_8(ea, FLAG_Z);
885 }
886 
887 
m68k_op_add_8_re_pi(void)888 static void m68k_op_add_8_re_pi(void)
889 {
890   uint ea = EA_AY_PI_8();
891   uint src = MASK_OUT_ABOVE_8(DX);
892   uint dst = m68ki_read_8(ea);
893   uint res = src + dst;
894 
895   FLAG_N = NFLAG_8(res);
896   FLAG_V = VFLAG_ADD_8(src, dst, res);
897   FLAG_X = FLAG_C = CFLAG_8(res);
898   FLAG_Z = MASK_OUT_ABOVE_8(res);
899 
900   m68ki_write_8(ea, FLAG_Z);
901 }
902 
903 
m68k_op_add_8_re_pi7(void)904 static void m68k_op_add_8_re_pi7(void)
905 {
906   uint ea = EA_A7_PI_8();
907   uint src = MASK_OUT_ABOVE_8(DX);
908   uint dst = m68ki_read_8(ea);
909   uint res = src + dst;
910 
911   FLAG_N = NFLAG_8(res);
912   FLAG_V = VFLAG_ADD_8(src, dst, res);
913   FLAG_X = FLAG_C = CFLAG_8(res);
914   FLAG_Z = MASK_OUT_ABOVE_8(res);
915 
916   m68ki_write_8(ea, FLAG_Z);
917 }
918 
919 
m68k_op_add_8_re_pd(void)920 static void m68k_op_add_8_re_pd(void)
921 {
922   uint ea = EA_AY_PD_8();
923   uint src = MASK_OUT_ABOVE_8(DX);
924   uint dst = m68ki_read_8(ea);
925   uint res = src + dst;
926 
927   FLAG_N = NFLAG_8(res);
928   FLAG_V = VFLAG_ADD_8(src, dst, res);
929   FLAG_X = FLAG_C = CFLAG_8(res);
930   FLAG_Z = MASK_OUT_ABOVE_8(res);
931 
932   m68ki_write_8(ea, FLAG_Z);
933 }
934 
935 
m68k_op_add_8_re_pd7(void)936 static void m68k_op_add_8_re_pd7(void)
937 {
938   uint ea = EA_A7_PD_8();
939   uint src = MASK_OUT_ABOVE_8(DX);
940   uint dst = m68ki_read_8(ea);
941   uint res = src + dst;
942 
943   FLAG_N = NFLAG_8(res);
944   FLAG_V = VFLAG_ADD_8(src, dst, res);
945   FLAG_X = FLAG_C = CFLAG_8(res);
946   FLAG_Z = MASK_OUT_ABOVE_8(res);
947 
948   m68ki_write_8(ea, FLAG_Z);
949 }
950 
951 
m68k_op_add_8_re_di(void)952 static void m68k_op_add_8_re_di(void)
953 {
954   uint ea = EA_AY_DI_8();
955   uint src = MASK_OUT_ABOVE_8(DX);
956   uint dst = m68ki_read_8(ea);
957   uint res = src + dst;
958 
959   FLAG_N = NFLAG_8(res);
960   FLAG_V = VFLAG_ADD_8(src, dst, res);
961   FLAG_X = FLAG_C = CFLAG_8(res);
962   FLAG_Z = MASK_OUT_ABOVE_8(res);
963 
964   m68ki_write_8(ea, FLAG_Z);
965 }
966 
967 
m68k_op_add_8_re_ix(void)968 static void m68k_op_add_8_re_ix(void)
969 {
970   uint ea = EA_AY_IX_8();
971   uint src = MASK_OUT_ABOVE_8(DX);
972   uint dst = m68ki_read_8(ea);
973   uint res = src + dst;
974 
975   FLAG_N = NFLAG_8(res);
976   FLAG_V = VFLAG_ADD_8(src, dst, res);
977   FLAG_X = FLAG_C = CFLAG_8(res);
978   FLAG_Z = MASK_OUT_ABOVE_8(res);
979 
980   m68ki_write_8(ea, FLAG_Z);
981 }
982 
983 
m68k_op_add_8_re_aw(void)984 static void m68k_op_add_8_re_aw(void)
985 {
986   uint ea = EA_AW_8();
987   uint src = MASK_OUT_ABOVE_8(DX);
988   uint dst = m68ki_read_8(ea);
989   uint res = src + dst;
990 
991   FLAG_N = NFLAG_8(res);
992   FLAG_V = VFLAG_ADD_8(src, dst, res);
993   FLAG_X = FLAG_C = CFLAG_8(res);
994   FLAG_Z = MASK_OUT_ABOVE_8(res);
995 
996   m68ki_write_8(ea, FLAG_Z);
997 }
998 
999 
m68k_op_add_8_re_al(void)1000 static void m68k_op_add_8_re_al(void)
1001 {
1002   uint ea = EA_AL_8();
1003   uint src = MASK_OUT_ABOVE_8(DX);
1004   uint dst = m68ki_read_8(ea);
1005   uint res = src + dst;
1006 
1007   FLAG_N = NFLAG_8(res);
1008   FLAG_V = VFLAG_ADD_8(src, dst, res);
1009   FLAG_X = FLAG_C = CFLAG_8(res);
1010   FLAG_Z = MASK_OUT_ABOVE_8(res);
1011 
1012   m68ki_write_8(ea, FLAG_Z);
1013 }
1014 
1015 
m68k_op_add_16_re_ai(void)1016 static void m68k_op_add_16_re_ai(void)
1017 {
1018   uint ea = EA_AY_AI_16();
1019   uint src = MASK_OUT_ABOVE_16(DX);
1020   uint dst = m68ki_read_16(ea);
1021   uint res = src + dst;
1022 
1023   FLAG_N = NFLAG_16(res);
1024   FLAG_V = VFLAG_ADD_16(src, dst, res);
1025   FLAG_X = FLAG_C = CFLAG_16(res);
1026   FLAG_Z = MASK_OUT_ABOVE_16(res);
1027 
1028   m68ki_write_16(ea, FLAG_Z);
1029 }
1030 
1031 
m68k_op_add_16_re_pi(void)1032 static void m68k_op_add_16_re_pi(void)
1033 {
1034   uint ea = EA_AY_PI_16();
1035   uint src = MASK_OUT_ABOVE_16(DX);
1036   uint dst = m68ki_read_16(ea);
1037   uint res = src + dst;
1038 
1039   FLAG_N = NFLAG_16(res);
1040   FLAG_V = VFLAG_ADD_16(src, dst, res);
1041   FLAG_X = FLAG_C = CFLAG_16(res);
1042   FLAG_Z = MASK_OUT_ABOVE_16(res);
1043 
1044   m68ki_write_16(ea, FLAG_Z);
1045 }
1046 
1047 
m68k_op_add_16_re_pd(void)1048 static void m68k_op_add_16_re_pd(void)
1049 {
1050   uint ea = EA_AY_PD_16();
1051   uint src = MASK_OUT_ABOVE_16(DX);
1052   uint dst = m68ki_read_16(ea);
1053   uint res = src + dst;
1054 
1055   FLAG_N = NFLAG_16(res);
1056   FLAG_V = VFLAG_ADD_16(src, dst, res);
1057   FLAG_X = FLAG_C = CFLAG_16(res);
1058   FLAG_Z = MASK_OUT_ABOVE_16(res);
1059 
1060   m68ki_write_16(ea, FLAG_Z);
1061 }
1062 
1063 
m68k_op_add_16_re_di(void)1064 static void m68k_op_add_16_re_di(void)
1065 {
1066   uint ea = EA_AY_DI_16();
1067   uint src = MASK_OUT_ABOVE_16(DX);
1068   uint dst = m68ki_read_16(ea);
1069   uint res = src + dst;
1070 
1071   FLAG_N = NFLAG_16(res);
1072   FLAG_V = VFLAG_ADD_16(src, dst, res);
1073   FLAG_X = FLAG_C = CFLAG_16(res);
1074   FLAG_Z = MASK_OUT_ABOVE_16(res);
1075 
1076   m68ki_write_16(ea, FLAG_Z);
1077 }
1078 
1079 
m68k_op_add_16_re_ix(void)1080 static void m68k_op_add_16_re_ix(void)
1081 {
1082   uint ea = EA_AY_IX_16();
1083   uint src = MASK_OUT_ABOVE_16(DX);
1084   uint dst = m68ki_read_16(ea);
1085   uint res = src + dst;
1086 
1087   FLAG_N = NFLAG_16(res);
1088   FLAG_V = VFLAG_ADD_16(src, dst, res);
1089   FLAG_X = FLAG_C = CFLAG_16(res);
1090   FLAG_Z = MASK_OUT_ABOVE_16(res);
1091 
1092   m68ki_write_16(ea, FLAG_Z);
1093 }
1094 
1095 
m68k_op_add_16_re_aw(void)1096 static void m68k_op_add_16_re_aw(void)
1097 {
1098   uint ea = EA_AW_16();
1099   uint src = MASK_OUT_ABOVE_16(DX);
1100   uint dst = m68ki_read_16(ea);
1101   uint res = src + dst;
1102 
1103   FLAG_N = NFLAG_16(res);
1104   FLAG_V = VFLAG_ADD_16(src, dst, res);
1105   FLAG_X = FLAG_C = CFLAG_16(res);
1106   FLAG_Z = MASK_OUT_ABOVE_16(res);
1107 
1108   m68ki_write_16(ea, FLAG_Z);
1109 }
1110 
1111 
m68k_op_add_16_re_al(void)1112 static void m68k_op_add_16_re_al(void)
1113 {
1114   uint ea = EA_AL_16();
1115   uint src = MASK_OUT_ABOVE_16(DX);
1116   uint dst = m68ki_read_16(ea);
1117   uint res = src + dst;
1118 
1119   FLAG_N = NFLAG_16(res);
1120   FLAG_V = VFLAG_ADD_16(src, dst, res);
1121   FLAG_X = FLAG_C = CFLAG_16(res);
1122   FLAG_Z = MASK_OUT_ABOVE_16(res);
1123 
1124   m68ki_write_16(ea, FLAG_Z);
1125 }
1126 
1127 
m68k_op_add_32_re_ai(void)1128 static void m68k_op_add_32_re_ai(void)
1129 {
1130   uint ea = EA_AY_AI_32();
1131   uint src = DX;
1132   uint dst = m68ki_read_32(ea);
1133   uint res = src + dst;
1134 
1135   FLAG_N = NFLAG_32(res);
1136   FLAG_V = VFLAG_ADD_32(src, dst, res);
1137   FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);
1138   FLAG_Z = MASK_OUT_ABOVE_32(res);
1139 
1140   m68ki_write_32(ea, FLAG_Z);
1141 }
1142 
1143 
m68k_op_add_32_re_pi(void)1144 static void m68k_op_add_32_re_pi(void)
1145 {
1146   uint ea = EA_AY_PI_32();
1147   uint src = DX;
1148   uint dst = m68ki_read_32(ea);
1149   uint res = src + dst;
1150 
1151   FLAG_N = NFLAG_32(res);
1152   FLAG_V = VFLAG_ADD_32(src, dst, res);
1153   FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);
1154   FLAG_Z = MASK_OUT_ABOVE_32(res);
1155 
1156   m68ki_write_32(ea, FLAG_Z);
1157 }
1158 
1159 
m68k_op_add_32_re_pd(void)1160 static void m68k_op_add_32_re_pd(void)
1161 {
1162   uint ea = EA_AY_PD_32();
1163   uint src = DX;
1164   uint dst = m68ki_read_32(ea);
1165   uint res = src + dst;
1166 
1167   FLAG_N = NFLAG_32(res);
1168   FLAG_V = VFLAG_ADD_32(src, dst, res);
1169   FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);
1170   FLAG_Z = MASK_OUT_ABOVE_32(res);
1171 
1172   m68ki_write_32(ea, FLAG_Z);
1173 }
1174 
1175 
m68k_op_add_32_re_di(void)1176 static void m68k_op_add_32_re_di(void)
1177 {
1178   uint ea = EA_AY_DI_32();
1179   uint src = DX;
1180   uint dst = m68ki_read_32(ea);
1181   uint res = src + dst;
1182 
1183   FLAG_N = NFLAG_32(res);
1184   FLAG_V = VFLAG_ADD_32(src, dst, res);
1185   FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);
1186   FLAG_Z = MASK_OUT_ABOVE_32(res);
1187 
1188   m68ki_write_32(ea, FLAG_Z);
1189 }
1190 
1191 
m68k_op_add_32_re_ix(void)1192 static void m68k_op_add_32_re_ix(void)
1193 {
1194   uint ea = EA_AY_IX_32();
1195   uint src = DX;
1196   uint dst = m68ki_read_32(ea);
1197   uint res = src + dst;
1198 
1199   FLAG_N = NFLAG_32(res);
1200   FLAG_V = VFLAG_ADD_32(src, dst, res);
1201   FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);
1202   FLAG_Z = MASK_OUT_ABOVE_32(res);
1203 
1204   m68ki_write_32(ea, FLAG_Z);
1205 }
1206 
1207 
m68k_op_add_32_re_aw(void)1208 static void m68k_op_add_32_re_aw(void)
1209 {
1210   uint ea = EA_AW_32();
1211   uint src = DX;
1212   uint dst = m68ki_read_32(ea);
1213   uint res = src + dst;
1214 
1215   FLAG_N = NFLAG_32(res);
1216   FLAG_V = VFLAG_ADD_32(src, dst, res);
1217   FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);
1218   FLAG_Z = MASK_OUT_ABOVE_32(res);
1219 
1220   m68ki_write_32(ea, FLAG_Z);
1221 }
1222 
1223 
m68k_op_add_32_re_al(void)1224 static void m68k_op_add_32_re_al(void)
1225 {
1226   uint ea = EA_AL_32();
1227   uint src = DX;
1228   uint dst = m68ki_read_32(ea);
1229   uint res = src + dst;
1230 
1231   FLAG_N = NFLAG_32(res);
1232   FLAG_V = VFLAG_ADD_32(src, dst, res);
1233   FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);
1234   FLAG_Z = MASK_OUT_ABOVE_32(res);
1235 
1236   m68ki_write_32(ea, FLAG_Z);
1237 }
1238 
1239 
m68k_op_adda_16_d(void)1240 static void m68k_op_adda_16_d(void)
1241 {
1242   uint* r_dst = &AX;
1243 
1244   *r_dst = MASK_OUT_ABOVE_32(*r_dst + MAKE_INT_16(DY));
1245 }
1246 
1247 
m68k_op_adda_16_a(void)1248 static void m68k_op_adda_16_a(void)
1249 {
1250   uint* r_dst = &AX;
1251 
1252   *r_dst = MASK_OUT_ABOVE_32(*r_dst + MAKE_INT_16(AY));
1253 }
1254 
1255 
m68k_op_adda_16_ai(void)1256 static void m68k_op_adda_16_ai(void)
1257 {
1258   uint* r_dst = &AX;
1259   uint src = MAKE_INT_16(OPER_AY_AI_16());
1260 
1261   *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
1262 }
1263 
1264 
m68k_op_adda_16_pi(void)1265 static void m68k_op_adda_16_pi(void)
1266 {
1267   uint* r_dst = &AX;
1268   uint src = MAKE_INT_16(OPER_AY_PI_16());
1269 
1270   *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
1271 }
1272 
1273 
m68k_op_adda_16_pd(void)1274 static void m68k_op_adda_16_pd(void)
1275 {
1276   uint* r_dst = &AX;
1277   uint src = MAKE_INT_16(OPER_AY_PD_16());
1278 
1279   *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
1280 }
1281 
1282 
m68k_op_adda_16_di(void)1283 static void m68k_op_adda_16_di(void)
1284 {
1285   uint* r_dst = &AX;
1286   uint src = MAKE_INT_16(OPER_AY_DI_16());
1287 
1288   *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
1289 }
1290 
1291 
m68k_op_adda_16_ix(void)1292 static void m68k_op_adda_16_ix(void)
1293 {
1294   uint* r_dst = &AX;
1295   uint src = MAKE_INT_16(OPER_AY_IX_16());
1296 
1297   *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
1298 }
1299 
1300 
m68k_op_adda_16_aw(void)1301 static void m68k_op_adda_16_aw(void)
1302 {
1303   uint* r_dst = &AX;
1304   uint src = MAKE_INT_16(OPER_AW_16());
1305 
1306   *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
1307 }
1308 
1309 
m68k_op_adda_16_al(void)1310 static void m68k_op_adda_16_al(void)
1311 {
1312   uint* r_dst = &AX;
1313   uint src = MAKE_INT_16(OPER_AL_16());
1314 
1315   *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
1316 }
1317 
1318 
m68k_op_adda_16_pcdi(void)1319 static void m68k_op_adda_16_pcdi(void)
1320 {
1321   uint* r_dst = &AX;
1322   uint src = MAKE_INT_16(OPER_PCDI_16());
1323 
1324   *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
1325 }
1326 
1327 
m68k_op_adda_16_pcix(void)1328 static void m68k_op_adda_16_pcix(void)
1329 {
1330   uint* r_dst = &AX;
1331   uint src = MAKE_INT_16(OPER_PCIX_16());
1332 
1333   *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
1334 }
1335 
1336 
m68k_op_adda_16_i(void)1337 static void m68k_op_adda_16_i(void)
1338 {
1339   uint* r_dst = &AX;
1340   uint src = MAKE_INT_16(OPER_I_16());
1341 
1342   *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
1343 }
1344 
1345 
m68k_op_adda_32_d(void)1346 static void m68k_op_adda_32_d(void)
1347 {
1348   uint* r_dst = &AX;
1349 
1350   *r_dst = MASK_OUT_ABOVE_32(*r_dst + DY);
1351 }
1352 
1353 
m68k_op_adda_32_a(void)1354 static void m68k_op_adda_32_a(void)
1355 {
1356   uint* r_dst = &AX;
1357 
1358   *r_dst = MASK_OUT_ABOVE_32(*r_dst + AY);
1359 }
1360 
1361 
m68k_op_adda_32_ai(void)1362 static void m68k_op_adda_32_ai(void)
1363 {
1364   uint* r_dst = &AX;
1365 
1366   *r_dst = MASK_OUT_ABOVE_32(OPER_AY_AI_32() + *r_dst);
1367 }
1368 
1369 
m68k_op_adda_32_pi(void)1370 static void m68k_op_adda_32_pi(void)
1371 {
1372   uint* r_dst = &AX;
1373 
1374   *r_dst = MASK_OUT_ABOVE_32(OPER_AY_PI_32() + *r_dst);
1375 }
1376 
1377 
m68k_op_adda_32_pd(void)1378 static void m68k_op_adda_32_pd(void)
1379 {
1380   uint* r_dst = &AX;
1381 
1382   *r_dst = MASK_OUT_ABOVE_32(OPER_AY_PD_32() + *r_dst);
1383 }
1384 
1385 
m68k_op_adda_32_di(void)1386 static void m68k_op_adda_32_di(void)
1387 {
1388   uint* r_dst = &AX;
1389 
1390   *r_dst = MASK_OUT_ABOVE_32(OPER_AY_DI_32() + *r_dst);
1391 }
1392 
1393 
m68k_op_adda_32_ix(void)1394 static void m68k_op_adda_32_ix(void)
1395 {
1396   uint* r_dst = &AX;
1397 
1398   *r_dst = MASK_OUT_ABOVE_32(OPER_AY_IX_32() + *r_dst);
1399 }
1400 
1401 
m68k_op_adda_32_aw(void)1402 static void m68k_op_adda_32_aw(void)
1403 {
1404   uint* r_dst = &AX;
1405 
1406   *r_dst = MASK_OUT_ABOVE_32(OPER_AW_32() + *r_dst);
1407 }
1408 
1409 
m68k_op_adda_32_al(void)1410 static void m68k_op_adda_32_al(void)
1411 {
1412   uint* r_dst = &AX;
1413 
1414   *r_dst = MASK_OUT_ABOVE_32(OPER_AL_32() + *r_dst);
1415 }
1416 
1417 
m68k_op_adda_32_pcdi(void)1418 static void m68k_op_adda_32_pcdi(void)
1419 {
1420   uint* r_dst = &AX;
1421 
1422   *r_dst = MASK_OUT_ABOVE_32(OPER_PCDI_32() + *r_dst);
1423 }
1424 
1425 
m68k_op_adda_32_pcix(void)1426 static void m68k_op_adda_32_pcix(void)
1427 {
1428   uint* r_dst = &AX;
1429 
1430   *r_dst = MASK_OUT_ABOVE_32(OPER_PCIX_32() + *r_dst);
1431 }
1432 
1433 
m68k_op_adda_32_i(void)1434 static void m68k_op_adda_32_i(void)
1435 {
1436   uint* r_dst = &AX;
1437 
1438   *r_dst = MASK_OUT_ABOVE_32(OPER_I_32() + *r_dst);
1439 }
1440 
1441 
m68k_op_addi_8_d(void)1442 static void m68k_op_addi_8_d(void)
1443 {
1444   uint* r_dst = &DY;
1445   uint src = OPER_I_8();
1446   uint dst = MASK_OUT_ABOVE_8(*r_dst);
1447   uint res = src + dst;
1448 
1449   FLAG_N = NFLAG_8(res);
1450   FLAG_V = VFLAG_ADD_8(src, dst, res);
1451   FLAG_X = FLAG_C = CFLAG_8(res);
1452   FLAG_Z = MASK_OUT_ABOVE_8(res);
1453 
1454   *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
1455 }
1456 
1457 
m68k_op_addi_8_ai(void)1458 static void m68k_op_addi_8_ai(void)
1459 {
1460   uint src = OPER_I_8();
1461   uint ea = EA_AY_AI_8();
1462   uint dst = m68ki_read_8(ea);
1463   uint res = src + dst;
1464 
1465   FLAG_N = NFLAG_8(res);
1466   FLAG_V = VFLAG_ADD_8(src, dst, res);
1467   FLAG_X = FLAG_C = CFLAG_8(res);
1468   FLAG_Z = MASK_OUT_ABOVE_8(res);
1469 
1470   m68ki_write_8(ea, FLAG_Z);
1471 }
1472 
1473 
m68k_op_addi_8_pi(void)1474 static void m68k_op_addi_8_pi(void)
1475 {
1476   uint src = OPER_I_8();
1477   uint ea = EA_AY_PI_8();
1478   uint dst = m68ki_read_8(ea);
1479   uint res = src + dst;
1480 
1481   FLAG_N = NFLAG_8(res);
1482   FLAG_V = VFLAG_ADD_8(src, dst, res);
1483   FLAG_X = FLAG_C = CFLAG_8(res);
1484   FLAG_Z = MASK_OUT_ABOVE_8(res);
1485 
1486   m68ki_write_8(ea, FLAG_Z);
1487 }
1488 
1489 
m68k_op_addi_8_pi7(void)1490 static void m68k_op_addi_8_pi7(void)
1491 {
1492   uint src = OPER_I_8();
1493   uint ea = EA_A7_PI_8();
1494   uint dst = m68ki_read_8(ea);
1495   uint res = src + dst;
1496 
1497   FLAG_N = NFLAG_8(res);
1498   FLAG_V = VFLAG_ADD_8(src, dst, res);
1499   FLAG_X = FLAG_C = CFLAG_8(res);
1500   FLAG_Z = MASK_OUT_ABOVE_8(res);
1501 
1502   m68ki_write_8(ea, FLAG_Z);
1503 }
1504 
1505 
m68k_op_addi_8_pd(void)1506 static void m68k_op_addi_8_pd(void)
1507 {
1508   uint src = OPER_I_8();
1509   uint ea = EA_AY_PD_8();
1510   uint dst = m68ki_read_8(ea);
1511   uint res = src + dst;
1512 
1513   FLAG_N = NFLAG_8(res);
1514   FLAG_V = VFLAG_ADD_8(src, dst, res);
1515   FLAG_X = FLAG_C = CFLAG_8(res);
1516   FLAG_Z = MASK_OUT_ABOVE_8(res);
1517 
1518   m68ki_write_8(ea, FLAG_Z);
1519 }
1520 
1521 
m68k_op_addi_8_pd7(void)1522 static void m68k_op_addi_8_pd7(void)
1523 {
1524   uint src = OPER_I_8();
1525   uint ea = EA_A7_PD_8();
1526   uint dst = m68ki_read_8(ea);
1527   uint res = src + dst;
1528 
1529   FLAG_N = NFLAG_8(res);
1530   FLAG_V = VFLAG_ADD_8(src, dst, res);
1531   FLAG_X = FLAG_C = CFLAG_8(res);
1532   FLAG_Z = MASK_OUT_ABOVE_8(res);
1533 
1534   m68ki_write_8(ea, FLAG_Z);
1535 }
1536 
1537 
m68k_op_addi_8_di(void)1538 static void m68k_op_addi_8_di(void)
1539 {
1540   uint src = OPER_I_8();
1541   uint ea = EA_AY_DI_8();
1542   uint dst = m68ki_read_8(ea);
1543   uint res = src + dst;
1544 
1545   FLAG_N = NFLAG_8(res);
1546   FLAG_V = VFLAG_ADD_8(src, dst, res);
1547   FLAG_X = FLAG_C = CFLAG_8(res);
1548   FLAG_Z = MASK_OUT_ABOVE_8(res);
1549 
1550   m68ki_write_8(ea, FLAG_Z);
1551 }
1552 
1553 
m68k_op_addi_8_ix(void)1554 static void m68k_op_addi_8_ix(void)
1555 {
1556   uint src = OPER_I_8();
1557   uint ea = EA_AY_IX_8();
1558   uint dst = m68ki_read_8(ea);
1559   uint res = src + dst;
1560 
1561   FLAG_N = NFLAG_8(res);
1562   FLAG_V = VFLAG_ADD_8(src, dst, res);
1563   FLAG_X = FLAG_C = CFLAG_8(res);
1564   FLAG_Z = MASK_OUT_ABOVE_8(res);
1565 
1566   m68ki_write_8(ea, FLAG_Z);
1567 }
1568 
1569 
m68k_op_addi_8_aw(void)1570 static void m68k_op_addi_8_aw(void)
1571 {
1572   uint src = OPER_I_8();
1573   uint ea = EA_AW_8();
1574   uint dst = m68ki_read_8(ea);
1575   uint res = src + dst;
1576 
1577   FLAG_N = NFLAG_8(res);
1578   FLAG_V = VFLAG_ADD_8(src, dst, res);
1579   FLAG_X = FLAG_C = CFLAG_8(res);
1580   FLAG_Z = MASK_OUT_ABOVE_8(res);
1581 
1582   m68ki_write_8(ea, FLAG_Z);
1583 }
1584 
1585 
m68k_op_addi_8_al(void)1586 static void m68k_op_addi_8_al(void)
1587 {
1588   uint src = OPER_I_8();
1589   uint ea = EA_AL_8();
1590   uint dst = m68ki_read_8(ea);
1591   uint res = src + dst;
1592 
1593   FLAG_N = NFLAG_8(res);
1594   FLAG_V = VFLAG_ADD_8(src, dst, res);
1595   FLAG_X = FLAG_C = CFLAG_8(res);
1596   FLAG_Z = MASK_OUT_ABOVE_8(res);
1597 
1598   m68ki_write_8(ea, FLAG_Z);
1599 }
1600 
1601 
m68k_op_addi_16_d(void)1602 static void m68k_op_addi_16_d(void)
1603 {
1604   uint* r_dst = &DY;
1605   uint src = OPER_I_16();
1606   uint dst = MASK_OUT_ABOVE_16(*r_dst);
1607   uint res = src + dst;
1608 
1609   FLAG_N = NFLAG_16(res);
1610   FLAG_V = VFLAG_ADD_16(src, dst, res);
1611   FLAG_X = FLAG_C = CFLAG_16(res);
1612   FLAG_Z = MASK_OUT_ABOVE_16(res);
1613 
1614   *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
1615 }
1616 
1617 
m68k_op_addi_16_ai(void)1618 static void m68k_op_addi_16_ai(void)
1619 {
1620   uint src = OPER_I_16();
1621   uint ea = EA_AY_AI_16();
1622   uint dst = m68ki_read_16(ea);
1623   uint res = src + dst;
1624 
1625   FLAG_N = NFLAG_16(res);
1626   FLAG_V = VFLAG_ADD_16(src, dst, res);
1627   FLAG_X = FLAG_C = CFLAG_16(res);
1628   FLAG_Z = MASK_OUT_ABOVE_16(res);
1629 
1630   m68ki_write_16(ea, FLAG_Z);
1631 }
1632 
1633 
m68k_op_addi_16_pi(void)1634 static void m68k_op_addi_16_pi(void)
1635 {
1636   uint src = OPER_I_16();
1637   uint ea = EA_AY_PI_16();
1638   uint dst = m68ki_read_16(ea);
1639   uint res = src + dst;
1640 
1641   FLAG_N = NFLAG_16(res);
1642   FLAG_V = VFLAG_ADD_16(src, dst, res);
1643   FLAG_X = FLAG_C = CFLAG_16(res);
1644   FLAG_Z = MASK_OUT_ABOVE_16(res);
1645 
1646   m68ki_write_16(ea, FLAG_Z);
1647 }
1648 
1649 
m68k_op_addi_16_pd(void)1650 static void m68k_op_addi_16_pd(void)
1651 {
1652   uint src = OPER_I_16();
1653   uint ea = EA_AY_PD_16();
1654   uint dst = m68ki_read_16(ea);
1655   uint res = src + dst;
1656 
1657   FLAG_N = NFLAG_16(res);
1658   FLAG_V = VFLAG_ADD_16(src, dst, res);
1659   FLAG_X = FLAG_C = CFLAG_16(res);
1660   FLAG_Z = MASK_OUT_ABOVE_16(res);
1661 
1662   m68ki_write_16(ea, FLAG_Z);
1663 }
1664 
1665 
m68k_op_addi_16_di(void)1666 static void m68k_op_addi_16_di(void)
1667 {
1668   uint src = OPER_I_16();
1669   uint ea = EA_AY_DI_16();
1670   uint dst = m68ki_read_16(ea);
1671   uint res = src + dst;
1672 
1673   FLAG_N = NFLAG_16(res);
1674   FLAG_V = VFLAG_ADD_16(src, dst, res);
1675   FLAG_X = FLAG_C = CFLAG_16(res);
1676   FLAG_Z = MASK_OUT_ABOVE_16(res);
1677 
1678   m68ki_write_16(ea, FLAG_Z);
1679 }
1680 
1681 
m68k_op_addi_16_ix(void)1682 static void m68k_op_addi_16_ix(void)
1683 {
1684   uint src = OPER_I_16();
1685   uint ea = EA_AY_IX_16();
1686   uint dst = m68ki_read_16(ea);
1687   uint res = src + dst;
1688 
1689   FLAG_N = NFLAG_16(res);
1690   FLAG_V = VFLAG_ADD_16(src, dst, res);
1691   FLAG_X = FLAG_C = CFLAG_16(res);
1692   FLAG_Z = MASK_OUT_ABOVE_16(res);
1693 
1694   m68ki_write_16(ea, FLAG_Z);
1695 }
1696 
1697 
m68k_op_addi_16_aw(void)1698 static void m68k_op_addi_16_aw(void)
1699 {
1700   uint src = OPER_I_16();
1701   uint ea = EA_AW_16();
1702   uint dst = m68ki_read_16(ea);
1703   uint res = src + dst;
1704 
1705   FLAG_N = NFLAG_16(res);
1706   FLAG_V = VFLAG_ADD_16(src, dst, res);
1707   FLAG_X = FLAG_C = CFLAG_16(res);
1708   FLAG_Z = MASK_OUT_ABOVE_16(res);
1709 
1710   m68ki_write_16(ea, FLAG_Z);
1711 }
1712 
1713 
m68k_op_addi_16_al(void)1714 static void m68k_op_addi_16_al(void)
1715 {
1716   uint src = OPER_I_16();
1717   uint ea = EA_AL_16();
1718   uint dst = m68ki_read_16(ea);
1719   uint res = src + dst;
1720 
1721   FLAG_N = NFLAG_16(res);
1722   FLAG_V = VFLAG_ADD_16(src, dst, res);
1723   FLAG_X = FLAG_C = CFLAG_16(res);
1724   FLAG_Z = MASK_OUT_ABOVE_16(res);
1725 
1726   m68ki_write_16(ea, FLAG_Z);
1727 }
1728 
1729 
m68k_op_addi_32_d(void)1730 static void m68k_op_addi_32_d(void)
1731 {
1732   uint* r_dst = &DY;
1733   uint src = OPER_I_32();
1734   uint dst = *r_dst;
1735   uint res = src + dst;
1736 
1737   FLAG_N = NFLAG_32(res);
1738   FLAG_V = VFLAG_ADD_32(src, dst, res);
1739   FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);
1740   FLAG_Z = MASK_OUT_ABOVE_32(res);
1741 
1742   *r_dst = FLAG_Z;
1743 }
1744 
1745 
m68k_op_addi_32_ai(void)1746 static void m68k_op_addi_32_ai(void)
1747 {
1748   uint src = OPER_I_32();
1749   uint ea = EA_AY_AI_32();
1750   uint dst = m68ki_read_32(ea);
1751   uint res = src + dst;
1752 
1753   FLAG_N = NFLAG_32(res);
1754   FLAG_V = VFLAG_ADD_32(src, dst, res);
1755   FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);
1756   FLAG_Z = MASK_OUT_ABOVE_32(res);
1757 
1758   m68ki_write_32(ea, FLAG_Z);
1759 }
1760 
1761 
m68k_op_addi_32_pi(void)1762 static void m68k_op_addi_32_pi(void)
1763 {
1764   uint src = OPER_I_32();
1765   uint ea = EA_AY_PI_32();
1766   uint dst = m68ki_read_32(ea);
1767   uint res = src + dst;
1768 
1769   FLAG_N = NFLAG_32(res);
1770   FLAG_V = VFLAG_ADD_32(src, dst, res);
1771   FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);
1772   FLAG_Z = MASK_OUT_ABOVE_32(res);
1773 
1774   m68ki_write_32(ea, FLAG_Z);
1775 }
1776 
1777 
m68k_op_addi_32_pd(void)1778 static void m68k_op_addi_32_pd(void)
1779 {
1780   uint src = OPER_I_32();
1781   uint ea = EA_AY_PD_32();
1782   uint dst = m68ki_read_32(ea);
1783   uint res = src + dst;
1784 
1785   FLAG_N = NFLAG_32(res);
1786   FLAG_V = VFLAG_ADD_32(src, dst, res);
1787   FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);
1788   FLAG_Z = MASK_OUT_ABOVE_32(res);
1789 
1790   m68ki_write_32(ea, FLAG_Z);
1791 }
1792 
1793 
m68k_op_addi_32_di(void)1794 static void m68k_op_addi_32_di(void)
1795 {
1796   uint src = OPER_I_32();
1797   uint ea = EA_AY_DI_32();
1798   uint dst = m68ki_read_32(ea);
1799   uint res = src + dst;
1800 
1801   FLAG_N = NFLAG_32(res);
1802   FLAG_V = VFLAG_ADD_32(src, dst, res);
1803   FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);
1804   FLAG_Z = MASK_OUT_ABOVE_32(res);
1805 
1806   m68ki_write_32(ea, FLAG_Z);
1807 }
1808 
1809 
m68k_op_addi_32_ix(void)1810 static void m68k_op_addi_32_ix(void)
1811 {
1812   uint src = OPER_I_32();
1813   uint ea = EA_AY_IX_32();
1814   uint dst = m68ki_read_32(ea);
1815   uint res = src + dst;
1816 
1817   FLAG_N = NFLAG_32(res);
1818   FLAG_V = VFLAG_ADD_32(src, dst, res);
1819   FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);
1820   FLAG_Z = MASK_OUT_ABOVE_32(res);
1821 
1822   m68ki_write_32(ea, FLAG_Z);
1823 }
1824 
1825 
m68k_op_addi_32_aw(void)1826 static void m68k_op_addi_32_aw(void)
1827 {
1828   uint src = OPER_I_32();
1829   uint ea = EA_AW_32();
1830   uint dst = m68ki_read_32(ea);
1831   uint res = src + dst;
1832 
1833   FLAG_N = NFLAG_32(res);
1834   FLAG_V = VFLAG_ADD_32(src, dst, res);
1835   FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);
1836   FLAG_Z = MASK_OUT_ABOVE_32(res);
1837 
1838   m68ki_write_32(ea, FLAG_Z);
1839 }
1840 
1841 
m68k_op_addi_32_al(void)1842 static void m68k_op_addi_32_al(void)
1843 {
1844   uint src = OPER_I_32();
1845   uint ea = EA_AL_32();
1846   uint dst = m68ki_read_32(ea);
1847   uint res = src + dst;
1848 
1849   FLAG_N = NFLAG_32(res);
1850   FLAG_V = VFLAG_ADD_32(src, dst, res);
1851   FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);
1852   FLAG_Z = MASK_OUT_ABOVE_32(res);
1853 
1854   m68ki_write_32(ea, FLAG_Z);
1855 }
1856 
1857 
m68k_op_addq_8_d(void)1858 static void m68k_op_addq_8_d(void)
1859 {
1860   uint* r_dst = &DY;
1861   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
1862   uint dst = MASK_OUT_ABOVE_8(*r_dst);
1863   uint res = src + dst;
1864 
1865   FLAG_N = NFLAG_8(res);
1866   FLAG_V = VFLAG_ADD_8(src, dst, res);
1867   FLAG_X = FLAG_C = CFLAG_8(res);
1868   FLAG_Z = MASK_OUT_ABOVE_8(res);
1869 
1870   *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
1871 }
1872 
1873 
m68k_op_addq_8_ai(void)1874 static void m68k_op_addq_8_ai(void)
1875 {
1876   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
1877   uint ea = EA_AY_AI_8();
1878   uint dst = m68ki_read_8(ea);
1879   uint res = src + dst;
1880 
1881   FLAG_N = NFLAG_8(res);
1882   FLAG_V = VFLAG_ADD_8(src, dst, res);
1883   FLAG_X = FLAG_C = CFLAG_8(res);
1884   FLAG_Z = MASK_OUT_ABOVE_8(res);
1885 
1886   m68ki_write_8(ea, FLAG_Z);
1887 }
1888 
1889 
m68k_op_addq_8_pi(void)1890 static void m68k_op_addq_8_pi(void)
1891 {
1892   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
1893   uint ea = EA_AY_PI_8();
1894   uint dst = m68ki_read_8(ea);
1895   uint res = src + dst;
1896 
1897   FLAG_N = NFLAG_8(res);
1898   FLAG_V = VFLAG_ADD_8(src, dst, res);
1899   FLAG_X = FLAG_C = CFLAG_8(res);
1900   FLAG_Z = MASK_OUT_ABOVE_8(res);
1901 
1902   m68ki_write_8(ea, FLAG_Z);
1903 }
1904 
1905 
m68k_op_addq_8_pi7(void)1906 static void m68k_op_addq_8_pi7(void)
1907 {
1908   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
1909   uint ea = EA_A7_PI_8();
1910   uint dst = m68ki_read_8(ea);
1911   uint res = src + dst;
1912 
1913   FLAG_N = NFLAG_8(res);
1914   FLAG_V = VFLAG_ADD_8(src, dst, res);
1915   FLAG_X = FLAG_C = CFLAG_8(res);
1916   FLAG_Z = MASK_OUT_ABOVE_8(res);
1917 
1918   m68ki_write_8(ea, FLAG_Z);
1919 }
1920 
1921 
m68k_op_addq_8_pd(void)1922 static void m68k_op_addq_8_pd(void)
1923 {
1924   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
1925   uint ea = EA_AY_PD_8();
1926   uint dst = m68ki_read_8(ea);
1927   uint res = src + dst;
1928 
1929   FLAG_N = NFLAG_8(res);
1930   FLAG_V = VFLAG_ADD_8(src, dst, res);
1931   FLAG_X = FLAG_C = CFLAG_8(res);
1932   FLAG_Z = MASK_OUT_ABOVE_8(res);
1933 
1934   m68ki_write_8(ea, FLAG_Z);
1935 }
1936 
1937 
m68k_op_addq_8_pd7(void)1938 static void m68k_op_addq_8_pd7(void)
1939 {
1940   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
1941   uint ea = EA_A7_PD_8();
1942   uint dst = m68ki_read_8(ea);
1943   uint res = src + dst;
1944 
1945   FLAG_N = NFLAG_8(res);
1946   FLAG_V = VFLAG_ADD_8(src, dst, res);
1947   FLAG_X = FLAG_C = CFLAG_8(res);
1948   FLAG_Z = MASK_OUT_ABOVE_8(res);
1949 
1950   m68ki_write_8(ea, FLAG_Z);
1951 }
1952 
1953 
m68k_op_addq_8_di(void)1954 static void m68k_op_addq_8_di(void)
1955 {
1956   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
1957   uint ea = EA_AY_DI_8();
1958   uint dst = m68ki_read_8(ea);
1959   uint res = src + dst;
1960 
1961   FLAG_N = NFLAG_8(res);
1962   FLAG_V = VFLAG_ADD_8(src, dst, res);
1963   FLAG_X = FLAG_C = CFLAG_8(res);
1964   FLAG_Z = MASK_OUT_ABOVE_8(res);
1965 
1966   m68ki_write_8(ea, FLAG_Z);
1967 }
1968 
1969 
m68k_op_addq_8_ix(void)1970 static void m68k_op_addq_8_ix(void)
1971 {
1972   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
1973   uint ea = EA_AY_IX_8();
1974   uint dst = m68ki_read_8(ea);
1975   uint res = src + dst;
1976 
1977   FLAG_N = NFLAG_8(res);
1978   FLAG_V = VFLAG_ADD_8(src, dst, res);
1979   FLAG_X = FLAG_C = CFLAG_8(res);
1980   FLAG_Z = MASK_OUT_ABOVE_8(res);
1981 
1982   m68ki_write_8(ea, FLAG_Z);
1983 }
1984 
1985 
m68k_op_addq_8_aw(void)1986 static void m68k_op_addq_8_aw(void)
1987 {
1988   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
1989   uint ea = EA_AW_8();
1990   uint dst = m68ki_read_8(ea);
1991   uint res = src + dst;
1992 
1993   FLAG_N = NFLAG_8(res);
1994   FLAG_V = VFLAG_ADD_8(src, dst, res);
1995   FLAG_X = FLAG_C = CFLAG_8(res);
1996   FLAG_Z = MASK_OUT_ABOVE_8(res);
1997 
1998   m68ki_write_8(ea, FLAG_Z);
1999 }
2000 
2001 
m68k_op_addq_8_al(void)2002 static void m68k_op_addq_8_al(void)
2003 {
2004   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
2005   uint ea = EA_AL_8();
2006   uint dst = m68ki_read_8(ea);
2007   uint res = src + dst;
2008 
2009   FLAG_N = NFLAG_8(res);
2010   FLAG_V = VFLAG_ADD_8(src, dst, res);
2011   FLAG_X = FLAG_C = CFLAG_8(res);
2012   FLAG_Z = MASK_OUT_ABOVE_8(res);
2013 
2014   m68ki_write_8(ea, FLAG_Z);
2015 }
2016 
2017 
m68k_op_addq_16_d(void)2018 static void m68k_op_addq_16_d(void)
2019 {
2020   uint* r_dst = &DY;
2021   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
2022   uint dst = MASK_OUT_ABOVE_16(*r_dst);
2023   uint res = src + dst;
2024 
2025   FLAG_N = NFLAG_16(res);
2026   FLAG_V = VFLAG_ADD_16(src, dst, res);
2027   FLAG_X = FLAG_C = CFLAG_16(res);
2028   FLAG_Z = MASK_OUT_ABOVE_16(res);
2029 
2030   *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
2031 }
2032 
2033 
m68k_op_addq_16_a(void)2034 static void m68k_op_addq_16_a(void)
2035 {
2036   uint* r_dst = &AY;
2037 
2038   *r_dst = MASK_OUT_ABOVE_32(*r_dst + (((REG_IR >> 9) - 1) & 7) + 1);
2039 }
2040 
2041 
m68k_op_addq_16_ai(void)2042 static void m68k_op_addq_16_ai(void)
2043 {
2044   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
2045   uint ea = EA_AY_AI_16();
2046   uint dst = m68ki_read_16(ea);
2047   uint res = src + dst;
2048 
2049   FLAG_N = NFLAG_16(res);
2050   FLAG_V = VFLAG_ADD_16(src, dst, res);
2051   FLAG_X = FLAG_C = CFLAG_16(res);
2052   FLAG_Z = MASK_OUT_ABOVE_16(res);
2053 
2054   m68ki_write_16(ea, FLAG_Z);
2055 }
2056 
2057 
m68k_op_addq_16_pi(void)2058 static void m68k_op_addq_16_pi(void)
2059 {
2060   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
2061   uint ea = EA_AY_PI_16();
2062   uint dst = m68ki_read_16(ea);
2063   uint res = src + dst;
2064 
2065   FLAG_N = NFLAG_16(res);
2066   FLAG_V = VFLAG_ADD_16(src, dst, res);
2067   FLAG_X = FLAG_C = CFLAG_16(res);
2068   FLAG_Z = MASK_OUT_ABOVE_16(res);
2069 
2070   m68ki_write_16(ea, FLAG_Z);
2071 }
2072 
2073 
m68k_op_addq_16_pd(void)2074 static void m68k_op_addq_16_pd(void)
2075 {
2076   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
2077   uint ea = EA_AY_PD_16();
2078   uint dst = m68ki_read_16(ea);
2079   uint res = src + dst;
2080 
2081   FLAG_N = NFLAG_16(res);
2082   FLAG_V = VFLAG_ADD_16(src, dst, res);
2083   FLAG_X = FLAG_C = CFLAG_16(res);
2084   FLAG_Z = MASK_OUT_ABOVE_16(res);
2085 
2086   m68ki_write_16(ea, FLAG_Z);
2087 }
2088 
2089 
m68k_op_addq_16_di(void)2090 static void m68k_op_addq_16_di(void)
2091 {
2092   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
2093   uint ea = EA_AY_DI_16();
2094   uint dst = m68ki_read_16(ea);
2095   uint res = src + dst;
2096 
2097   FLAG_N = NFLAG_16(res);
2098   FLAG_V = VFLAG_ADD_16(src, dst, res);
2099   FLAG_X = FLAG_C = CFLAG_16(res);
2100   FLAG_Z = MASK_OUT_ABOVE_16(res);
2101 
2102   m68ki_write_16(ea, FLAG_Z);
2103 }
2104 
2105 
m68k_op_addq_16_ix(void)2106 static void m68k_op_addq_16_ix(void)
2107 {
2108   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
2109   uint ea = EA_AY_IX_16();
2110   uint dst = m68ki_read_16(ea);
2111   uint res = src + dst;
2112 
2113   FLAG_N = NFLAG_16(res);
2114   FLAG_V = VFLAG_ADD_16(src, dst, res);
2115   FLAG_X = FLAG_C = CFLAG_16(res);
2116   FLAG_Z = MASK_OUT_ABOVE_16(res);
2117 
2118   m68ki_write_16(ea, FLAG_Z);
2119 }
2120 
2121 
m68k_op_addq_16_aw(void)2122 static void m68k_op_addq_16_aw(void)
2123 {
2124   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
2125   uint ea = EA_AW_16();
2126   uint dst = m68ki_read_16(ea);
2127   uint res = src + dst;
2128 
2129   FLAG_N = NFLAG_16(res);
2130   FLAG_V = VFLAG_ADD_16(src, dst, res);
2131   FLAG_X = FLAG_C = CFLAG_16(res);
2132   FLAG_Z = MASK_OUT_ABOVE_16(res);
2133 
2134   m68ki_write_16(ea, FLAG_Z);
2135 }
2136 
2137 
m68k_op_addq_16_al(void)2138 static void m68k_op_addq_16_al(void)
2139 {
2140   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
2141   uint ea = EA_AL_16();
2142   uint dst = m68ki_read_16(ea);
2143   uint res = src + dst;
2144 
2145   FLAG_N = NFLAG_16(res);
2146   FLAG_V = VFLAG_ADD_16(src, dst, res);
2147   FLAG_X = FLAG_C = CFLAG_16(res);
2148   FLAG_Z = MASK_OUT_ABOVE_16(res);
2149 
2150   m68ki_write_16(ea, FLAG_Z);
2151 }
2152 
2153 
m68k_op_addq_32_d(void)2154 static void m68k_op_addq_32_d(void)
2155 {
2156   uint* r_dst = &DY;
2157   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
2158   uint dst = *r_dst;
2159   uint res = src + dst;
2160 
2161   FLAG_N = NFLAG_32(res);
2162   FLAG_V = VFLAG_ADD_32(src, dst, res);
2163   FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);
2164   FLAG_Z = MASK_OUT_ABOVE_32(res);
2165 
2166   *r_dst = FLAG_Z;
2167 }
2168 
2169 
m68k_op_addq_32_a(void)2170 static void m68k_op_addq_32_a(void)
2171 {
2172   uint* r_dst = &AY;
2173 
2174   *r_dst = MASK_OUT_ABOVE_32(*r_dst + (((REG_IR >> 9) - 1) & 7) + 1);
2175 }
2176 
2177 
m68k_op_addq_32_ai(void)2178 static void m68k_op_addq_32_ai(void)
2179 {
2180   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
2181   uint ea = EA_AY_AI_32();
2182   uint dst = m68ki_read_32(ea);
2183   uint res = src + dst;
2184 
2185 
2186   FLAG_N = NFLAG_32(res);
2187   FLAG_V = VFLAG_ADD_32(src, dst, res);
2188   FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);
2189   FLAG_Z = MASK_OUT_ABOVE_32(res);
2190 
2191   m68ki_write_32(ea, FLAG_Z);
2192 }
2193 
2194 
m68k_op_addq_32_pi(void)2195 static void m68k_op_addq_32_pi(void)
2196 {
2197   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
2198   uint ea = EA_AY_PI_32();
2199   uint dst = m68ki_read_32(ea);
2200   uint res = src + dst;
2201 
2202 
2203   FLAG_N = NFLAG_32(res);
2204   FLAG_V = VFLAG_ADD_32(src, dst, res);
2205   FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);
2206   FLAG_Z = MASK_OUT_ABOVE_32(res);
2207 
2208   m68ki_write_32(ea, FLAG_Z);
2209 }
2210 
2211 
m68k_op_addq_32_pd(void)2212 static void m68k_op_addq_32_pd(void)
2213 {
2214   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
2215   uint ea = EA_AY_PD_32();
2216   uint dst = m68ki_read_32(ea);
2217   uint res = src + dst;
2218 
2219 
2220   FLAG_N = NFLAG_32(res);
2221   FLAG_V = VFLAG_ADD_32(src, dst, res);
2222   FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);
2223   FLAG_Z = MASK_OUT_ABOVE_32(res);
2224 
2225   m68ki_write_32(ea, FLAG_Z);
2226 }
2227 
2228 
m68k_op_addq_32_di(void)2229 static void m68k_op_addq_32_di(void)
2230 {
2231   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
2232   uint ea = EA_AY_DI_32();
2233   uint dst = m68ki_read_32(ea);
2234   uint res = src + dst;
2235 
2236 
2237   FLAG_N = NFLAG_32(res);
2238   FLAG_V = VFLAG_ADD_32(src, dst, res);
2239   FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);
2240   FLAG_Z = MASK_OUT_ABOVE_32(res);
2241 
2242   m68ki_write_32(ea, FLAG_Z);
2243 }
2244 
2245 
m68k_op_addq_32_ix(void)2246 static void m68k_op_addq_32_ix(void)
2247 {
2248   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
2249   uint ea = EA_AY_IX_32();
2250   uint dst = m68ki_read_32(ea);
2251   uint res = src + dst;
2252 
2253 
2254   FLAG_N = NFLAG_32(res);
2255   FLAG_V = VFLAG_ADD_32(src, dst, res);
2256   FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);
2257   FLAG_Z = MASK_OUT_ABOVE_32(res);
2258 
2259   m68ki_write_32(ea, FLAG_Z);
2260 }
2261 
2262 
m68k_op_addq_32_aw(void)2263 static void m68k_op_addq_32_aw(void)
2264 {
2265   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
2266   uint ea = EA_AW_32();
2267   uint dst = m68ki_read_32(ea);
2268   uint res = src + dst;
2269 
2270 
2271   FLAG_N = NFLAG_32(res);
2272   FLAG_V = VFLAG_ADD_32(src, dst, res);
2273   FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);
2274   FLAG_Z = MASK_OUT_ABOVE_32(res);
2275 
2276   m68ki_write_32(ea, FLAG_Z);
2277 }
2278 
2279 
m68k_op_addq_32_al(void)2280 static void m68k_op_addq_32_al(void)
2281 {
2282   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
2283   uint ea = EA_AL_32();
2284   uint dst = m68ki_read_32(ea);
2285   uint res = src + dst;
2286 
2287 
2288   FLAG_N = NFLAG_32(res);
2289   FLAG_V = VFLAG_ADD_32(src, dst, res);
2290   FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);
2291   FLAG_Z = MASK_OUT_ABOVE_32(res);
2292 
2293   m68ki_write_32(ea, FLAG_Z);
2294 }
2295 
2296 
m68k_op_addx_8_rr(void)2297 static void m68k_op_addx_8_rr(void)
2298 {
2299   uint* r_dst = &DX;
2300   uint src = MASK_OUT_ABOVE_8(DY);
2301   uint dst = MASK_OUT_ABOVE_8(*r_dst);
2302   uint res = src + dst + XFLAG_AS_1();
2303 
2304   FLAG_N = NFLAG_8(res);
2305   FLAG_V = VFLAG_ADD_8(src, dst, res);
2306   FLAG_X = FLAG_C = CFLAG_8(res);
2307 
2308   res = MASK_OUT_ABOVE_8(res);
2309   FLAG_Z |= res;
2310 
2311   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
2312 }
2313 
2314 
m68k_op_addx_16_rr(void)2315 static void m68k_op_addx_16_rr(void)
2316 {
2317   uint* r_dst = &DX;
2318   uint src = MASK_OUT_ABOVE_16(DY);
2319   uint dst = MASK_OUT_ABOVE_16(*r_dst);
2320   uint res = src + dst + XFLAG_AS_1();
2321 
2322   FLAG_N = NFLAG_16(res);
2323   FLAG_V = VFLAG_ADD_16(src, dst, res);
2324   FLAG_X = FLAG_C = CFLAG_16(res);
2325 
2326   res = MASK_OUT_ABOVE_16(res);
2327   FLAG_Z |= res;
2328 
2329   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
2330 }
2331 
2332 
m68k_op_addx_32_rr(void)2333 static void m68k_op_addx_32_rr(void)
2334 {
2335   uint* r_dst = &DX;
2336   uint src = DY;
2337   uint dst = *r_dst;
2338   uint res = src + dst + XFLAG_AS_1();
2339 
2340   FLAG_N = NFLAG_32(res);
2341   FLAG_V = VFLAG_ADD_32(src, dst, res);
2342   FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);
2343 
2344   res = MASK_OUT_ABOVE_32(res);
2345   FLAG_Z |= res;
2346 
2347   *r_dst = res;
2348 }
2349 
2350 
m68k_op_addx_8_mm_ax7(void)2351 static void m68k_op_addx_8_mm_ax7(void)
2352 {
2353   uint src = OPER_AY_PD_8();
2354   uint ea  = EA_A7_PD_8();
2355   uint dst = m68ki_read_8(ea);
2356   uint res = src + dst + XFLAG_AS_1();
2357 
2358   FLAG_N = NFLAG_8(res);
2359   FLAG_V = VFLAG_ADD_8(src, dst, res);
2360   FLAG_X = FLAG_C = CFLAG_8(res);
2361 
2362   res = MASK_OUT_ABOVE_8(res);
2363   FLAG_Z |= res;
2364 
2365   m68ki_write_8(ea, res);
2366 }
2367 
2368 
m68k_op_addx_8_mm_ay7(void)2369 static void m68k_op_addx_8_mm_ay7(void)
2370 {
2371   uint src = OPER_A7_PD_8();
2372   uint ea  = EA_AX_PD_8();
2373   uint dst = m68ki_read_8(ea);
2374   uint res = src + dst + XFLAG_AS_1();
2375 
2376   FLAG_N = NFLAG_8(res);
2377   FLAG_V = VFLAG_ADD_8(src, dst, res);
2378   FLAG_X = FLAG_C = CFLAG_8(res);
2379 
2380   res = MASK_OUT_ABOVE_8(res);
2381   FLAG_Z |= res;
2382 
2383   m68ki_write_8(ea, res);
2384 }
2385 
2386 
m68k_op_addx_8_mm_axy7(void)2387 static void m68k_op_addx_8_mm_axy7(void)
2388 {
2389   uint src = OPER_A7_PD_8();
2390   uint ea  = EA_A7_PD_8();
2391   uint dst = m68ki_read_8(ea);
2392   uint res = src + dst + XFLAG_AS_1();
2393 
2394   FLAG_N = NFLAG_8(res);
2395   FLAG_V = VFLAG_ADD_8(src, dst, res);
2396   FLAG_X = FLAG_C = CFLAG_8(res);
2397 
2398   res = MASK_OUT_ABOVE_8(res);
2399   FLAG_Z |= res;
2400 
2401   m68ki_write_8(ea, res);
2402 }
2403 
2404 
m68k_op_addx_8_mm(void)2405 static void m68k_op_addx_8_mm(void)
2406 {
2407   uint src = OPER_AY_PD_8();
2408   uint ea  = EA_AX_PD_8();
2409   uint dst = m68ki_read_8(ea);
2410   uint res = src + dst + XFLAG_AS_1();
2411 
2412   FLAG_N = NFLAG_8(res);
2413   FLAG_V = VFLAG_ADD_8(src, dst, res);
2414   FLAG_X = FLAG_C = CFLAG_8(res);
2415 
2416   res = MASK_OUT_ABOVE_8(res);
2417   FLAG_Z |= res;
2418 
2419   m68ki_write_8(ea, res);
2420 }
2421 
2422 
m68k_op_addx_16_mm(void)2423 static void m68k_op_addx_16_mm(void)
2424 {
2425   uint src = OPER_AY_PD_16();
2426   uint ea  = EA_AX_PD_16();
2427   uint dst = m68ki_read_16(ea);
2428   uint res = src + dst + XFLAG_AS_1();
2429 
2430   FLAG_N = NFLAG_16(res);
2431   FLAG_V = VFLAG_ADD_16(src, dst, res);
2432   FLAG_X = FLAG_C = CFLAG_16(res);
2433 
2434   res = MASK_OUT_ABOVE_16(res);
2435   FLAG_Z |= res;
2436 
2437   m68ki_write_16(ea, res);
2438 }
2439 
2440 
m68k_op_addx_32_mm(void)2441 static void m68k_op_addx_32_mm(void)
2442 {
2443   uint src = OPER_AY_PD_32();
2444   uint ea  = EA_AX_PD_32();
2445   uint dst = m68ki_read_32(ea);
2446   uint res = src + dst + XFLAG_AS_1();
2447 
2448   FLAG_N = NFLAG_32(res);
2449   FLAG_V = VFLAG_ADD_32(src, dst, res);
2450   FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);
2451 
2452   res = MASK_OUT_ABOVE_32(res);
2453   FLAG_Z |= res;
2454 
2455   m68ki_write_32(ea, res);
2456 }
2457 
2458 
m68k_op_and_8_er_d(void)2459 static void m68k_op_and_8_er_d(void)
2460 {
2461   FLAG_Z = MASK_OUT_ABOVE_8(DX &= (DY | 0xffffff00));
2462 
2463   FLAG_N = NFLAG_8(FLAG_Z);
2464   FLAG_C = CFLAG_CLEAR;
2465   FLAG_V = VFLAG_CLEAR;
2466 }
2467 
2468 
m68k_op_and_8_er_ai(void)2469 static void m68k_op_and_8_er_ai(void)
2470 {
2471   FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_AY_AI_8() | 0xffffff00));
2472 
2473   FLAG_N = NFLAG_8(FLAG_Z);
2474   FLAG_C = CFLAG_CLEAR;
2475   FLAG_V = VFLAG_CLEAR;
2476 }
2477 
2478 
m68k_op_and_8_er_pi(void)2479 static void m68k_op_and_8_er_pi(void)
2480 {
2481   FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_AY_PI_8() | 0xffffff00));
2482 
2483   FLAG_N = NFLAG_8(FLAG_Z);
2484   FLAG_C = CFLAG_CLEAR;
2485   FLAG_V = VFLAG_CLEAR;
2486 }
2487 
2488 
m68k_op_and_8_er_pi7(void)2489 static void m68k_op_and_8_er_pi7(void)
2490 {
2491   FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_A7_PI_8() | 0xffffff00));
2492 
2493   FLAG_N = NFLAG_8(FLAG_Z);
2494   FLAG_C = CFLAG_CLEAR;
2495   FLAG_V = VFLAG_CLEAR;
2496 }
2497 
2498 
m68k_op_and_8_er_pd(void)2499 static void m68k_op_and_8_er_pd(void)
2500 {
2501   FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_AY_PD_8() | 0xffffff00));
2502 
2503   FLAG_N = NFLAG_8(FLAG_Z);
2504   FLAG_C = CFLAG_CLEAR;
2505   FLAG_V = VFLAG_CLEAR;
2506 }
2507 
2508 
m68k_op_and_8_er_pd7(void)2509 static void m68k_op_and_8_er_pd7(void)
2510 {
2511   FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_A7_PD_8() | 0xffffff00));
2512 
2513   FLAG_N = NFLAG_8(FLAG_Z);
2514   FLAG_C = CFLAG_CLEAR;
2515   FLAG_V = VFLAG_CLEAR;
2516 }
2517 
2518 
m68k_op_and_8_er_di(void)2519 static void m68k_op_and_8_er_di(void)
2520 {
2521   FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_AY_DI_8() | 0xffffff00));
2522 
2523   FLAG_N = NFLAG_8(FLAG_Z);
2524   FLAG_C = CFLAG_CLEAR;
2525   FLAG_V = VFLAG_CLEAR;
2526 }
2527 
2528 
m68k_op_and_8_er_ix(void)2529 static void m68k_op_and_8_er_ix(void)
2530 {
2531   FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_AY_IX_8() | 0xffffff00));
2532 
2533   FLAG_N = NFLAG_8(FLAG_Z);
2534   FLAG_C = CFLAG_CLEAR;
2535   FLAG_V = VFLAG_CLEAR;
2536 }
2537 
2538 
m68k_op_and_8_er_aw(void)2539 static void m68k_op_and_8_er_aw(void)
2540 {
2541   FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_AW_8() | 0xffffff00));
2542 
2543   FLAG_N = NFLAG_8(FLAG_Z);
2544   FLAG_C = CFLAG_CLEAR;
2545   FLAG_V = VFLAG_CLEAR;
2546 }
2547 
2548 
m68k_op_and_8_er_al(void)2549 static void m68k_op_and_8_er_al(void)
2550 {
2551   FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_AL_8() | 0xffffff00));
2552 
2553   FLAG_N = NFLAG_8(FLAG_Z);
2554   FLAG_C = CFLAG_CLEAR;
2555   FLAG_V = VFLAG_CLEAR;
2556 }
2557 
2558 
m68k_op_and_8_er_pcdi(void)2559 static void m68k_op_and_8_er_pcdi(void)
2560 {
2561   FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_PCDI_8() | 0xffffff00));
2562 
2563   FLAG_N = NFLAG_8(FLAG_Z);
2564   FLAG_C = CFLAG_CLEAR;
2565   FLAG_V = VFLAG_CLEAR;
2566 }
2567 
2568 
m68k_op_and_8_er_pcix(void)2569 static void m68k_op_and_8_er_pcix(void)
2570 {
2571   FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_PCIX_8() | 0xffffff00));
2572 
2573   FLAG_N = NFLAG_8(FLAG_Z);
2574   FLAG_C = CFLAG_CLEAR;
2575   FLAG_V = VFLAG_CLEAR;
2576 }
2577 
2578 
m68k_op_and_8_er_i(void)2579 static void m68k_op_and_8_er_i(void)
2580 {
2581   FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_I_8() | 0xffffff00));
2582 
2583   FLAG_N = NFLAG_8(FLAG_Z);
2584   FLAG_C = CFLAG_CLEAR;
2585   FLAG_V = VFLAG_CLEAR;
2586 }
2587 
2588 
m68k_op_and_16_er_d(void)2589 static void m68k_op_and_16_er_d(void)
2590 {
2591   FLAG_Z = MASK_OUT_ABOVE_16(DX &= (DY | 0xffff0000));
2592 
2593   FLAG_N = NFLAG_16(FLAG_Z);
2594   FLAG_C = CFLAG_CLEAR;
2595   FLAG_V = VFLAG_CLEAR;
2596 }
2597 
2598 
m68k_op_and_16_er_ai(void)2599 static void m68k_op_and_16_er_ai(void)
2600 {
2601   FLAG_Z = MASK_OUT_ABOVE_16(DX &= (OPER_AY_AI_16() | 0xffff0000));
2602 
2603   FLAG_N = NFLAG_16(FLAG_Z);
2604   FLAG_C = CFLAG_CLEAR;
2605   FLAG_V = VFLAG_CLEAR;
2606 }
2607 
2608 
m68k_op_and_16_er_pi(void)2609 static void m68k_op_and_16_er_pi(void)
2610 {
2611   FLAG_Z = MASK_OUT_ABOVE_16(DX &= (OPER_AY_PI_16() | 0xffff0000));
2612 
2613   FLAG_N = NFLAG_16(FLAG_Z);
2614   FLAG_C = CFLAG_CLEAR;
2615   FLAG_V = VFLAG_CLEAR;
2616 }
2617 
2618 
m68k_op_and_16_er_pd(void)2619 static void m68k_op_and_16_er_pd(void)
2620 {
2621   FLAG_Z = MASK_OUT_ABOVE_16(DX &= (OPER_AY_PD_16() | 0xffff0000));
2622 
2623   FLAG_N = NFLAG_16(FLAG_Z);
2624   FLAG_C = CFLAG_CLEAR;
2625   FLAG_V = VFLAG_CLEAR;
2626 }
2627 
2628 
m68k_op_and_16_er_di(void)2629 static void m68k_op_and_16_er_di(void)
2630 {
2631   FLAG_Z = MASK_OUT_ABOVE_16(DX &= (OPER_AY_DI_16() | 0xffff0000));
2632 
2633   FLAG_N = NFLAG_16(FLAG_Z);
2634   FLAG_C = CFLAG_CLEAR;
2635   FLAG_V = VFLAG_CLEAR;
2636 }
2637 
2638 
m68k_op_and_16_er_ix(void)2639 static void m68k_op_and_16_er_ix(void)
2640 {
2641   FLAG_Z = MASK_OUT_ABOVE_16(DX &= (OPER_AY_IX_16() | 0xffff0000));
2642 
2643   FLAG_N = NFLAG_16(FLAG_Z);
2644   FLAG_C = CFLAG_CLEAR;
2645   FLAG_V = VFLAG_CLEAR;
2646 }
2647 
2648 
m68k_op_and_16_er_aw(void)2649 static void m68k_op_and_16_er_aw(void)
2650 {
2651   FLAG_Z = MASK_OUT_ABOVE_16(DX &= (OPER_AW_16() | 0xffff0000));
2652 
2653   FLAG_N = NFLAG_16(FLAG_Z);
2654   FLAG_C = CFLAG_CLEAR;
2655   FLAG_V = VFLAG_CLEAR;
2656 }
2657 
2658 
m68k_op_and_16_er_al(void)2659 static void m68k_op_and_16_er_al(void)
2660 {
2661   FLAG_Z = MASK_OUT_ABOVE_16(DX &= (OPER_AL_16() | 0xffff0000));
2662 
2663   FLAG_N = NFLAG_16(FLAG_Z);
2664   FLAG_C = CFLAG_CLEAR;
2665   FLAG_V = VFLAG_CLEAR;
2666 }
2667 
2668 
m68k_op_and_16_er_pcdi(void)2669 static void m68k_op_and_16_er_pcdi(void)
2670 {
2671   FLAG_Z = MASK_OUT_ABOVE_16(DX &= (OPER_PCDI_16() | 0xffff0000));
2672 
2673   FLAG_N = NFLAG_16(FLAG_Z);
2674   FLAG_C = CFLAG_CLEAR;
2675   FLAG_V = VFLAG_CLEAR;
2676 }
2677 
2678 
m68k_op_and_16_er_pcix(void)2679 static void m68k_op_and_16_er_pcix(void)
2680 {
2681   FLAG_Z = MASK_OUT_ABOVE_16(DX &= (OPER_PCIX_16() | 0xffff0000));
2682 
2683   FLAG_N = NFLAG_16(FLAG_Z);
2684   FLAG_C = CFLAG_CLEAR;
2685   FLAG_V = VFLAG_CLEAR;
2686 }
2687 
2688 
m68k_op_and_16_er_i(void)2689 static void m68k_op_and_16_er_i(void)
2690 {
2691   FLAG_Z = MASK_OUT_ABOVE_16(DX &= (OPER_I_16() | 0xffff0000));
2692 
2693   FLAG_N = NFLAG_16(FLAG_Z);
2694   FLAG_C = CFLAG_CLEAR;
2695   FLAG_V = VFLAG_CLEAR;
2696 }
2697 
2698 
m68k_op_and_32_er_d(void)2699 static void m68k_op_and_32_er_d(void)
2700 {
2701   FLAG_Z = DX &= DY;
2702 
2703   FLAG_N = NFLAG_32(FLAG_Z);
2704   FLAG_C = CFLAG_CLEAR;
2705   FLAG_V = VFLAG_CLEAR;
2706 }
2707 
2708 
m68k_op_and_32_er_ai(void)2709 static void m68k_op_and_32_er_ai(void)
2710 {
2711   FLAG_Z = DX &= OPER_AY_AI_32();
2712 
2713   FLAG_N = NFLAG_32(FLAG_Z);
2714   FLAG_C = CFLAG_CLEAR;
2715   FLAG_V = VFLAG_CLEAR;
2716 }
2717 
2718 
m68k_op_and_32_er_pi(void)2719 static void m68k_op_and_32_er_pi(void)
2720 {
2721   FLAG_Z = DX &= OPER_AY_PI_32();
2722 
2723   FLAG_N = NFLAG_32(FLAG_Z);
2724   FLAG_C = CFLAG_CLEAR;
2725   FLAG_V = VFLAG_CLEAR;
2726 }
2727 
2728 
m68k_op_and_32_er_pd(void)2729 static void m68k_op_and_32_er_pd(void)
2730 {
2731   FLAG_Z = DX &= OPER_AY_PD_32();
2732 
2733   FLAG_N = NFLAG_32(FLAG_Z);
2734   FLAG_C = CFLAG_CLEAR;
2735   FLAG_V = VFLAG_CLEAR;
2736 }
2737 
2738 
m68k_op_and_32_er_di(void)2739 static void m68k_op_and_32_er_di(void)
2740 {
2741   FLAG_Z = DX &= OPER_AY_DI_32();
2742 
2743   FLAG_N = NFLAG_32(FLAG_Z);
2744   FLAG_C = CFLAG_CLEAR;
2745   FLAG_V = VFLAG_CLEAR;
2746 }
2747 
2748 
m68k_op_and_32_er_ix(void)2749 static void m68k_op_and_32_er_ix(void)
2750 {
2751   FLAG_Z = DX &= OPER_AY_IX_32();
2752 
2753   FLAG_N = NFLAG_32(FLAG_Z);
2754   FLAG_C = CFLAG_CLEAR;
2755   FLAG_V = VFLAG_CLEAR;
2756 }
2757 
2758 
m68k_op_and_32_er_aw(void)2759 static void m68k_op_and_32_er_aw(void)
2760 {
2761   FLAG_Z = DX &= OPER_AW_32();
2762 
2763   FLAG_N = NFLAG_32(FLAG_Z);
2764   FLAG_C = CFLAG_CLEAR;
2765   FLAG_V = VFLAG_CLEAR;
2766 }
2767 
2768 
m68k_op_and_32_er_al(void)2769 static void m68k_op_and_32_er_al(void)
2770 {
2771   FLAG_Z = DX &= OPER_AL_32();
2772 
2773   FLAG_N = NFLAG_32(FLAG_Z);
2774   FLAG_C = CFLAG_CLEAR;
2775   FLAG_V = VFLAG_CLEAR;
2776 }
2777 
2778 
m68k_op_and_32_er_pcdi(void)2779 static void m68k_op_and_32_er_pcdi(void)
2780 {
2781   FLAG_Z = DX &= OPER_PCDI_32();
2782 
2783   FLAG_N = NFLAG_32(FLAG_Z);
2784   FLAG_C = CFLAG_CLEAR;
2785   FLAG_V = VFLAG_CLEAR;
2786 }
2787 
2788 
m68k_op_and_32_er_pcix(void)2789 static void m68k_op_and_32_er_pcix(void)
2790 {
2791   FLAG_Z = DX &= OPER_PCIX_32();
2792 
2793   FLAG_N = NFLAG_32(FLAG_Z);
2794   FLAG_C = CFLAG_CLEAR;
2795   FLAG_V = VFLAG_CLEAR;
2796 }
2797 
2798 
m68k_op_and_32_er_i(void)2799 static void m68k_op_and_32_er_i(void)
2800 {
2801   FLAG_Z = DX &= OPER_I_32();
2802 
2803   FLAG_N = NFLAG_32(FLAG_Z);
2804   FLAG_C = CFLAG_CLEAR;
2805   FLAG_V = VFLAG_CLEAR;
2806 }
2807 
2808 
m68k_op_and_8_re_ai(void)2809 static void m68k_op_and_8_re_ai(void)
2810 {
2811   uint ea = EA_AY_AI_8();
2812   uint res = DX & m68ki_read_8(ea);
2813 
2814   FLAG_N = NFLAG_8(res);
2815   FLAG_C = CFLAG_CLEAR;
2816   FLAG_V = VFLAG_CLEAR;
2817   FLAG_Z = MASK_OUT_ABOVE_8(res);
2818 
2819   m68ki_write_8(ea, FLAG_Z);
2820 }
2821 
2822 
m68k_op_and_8_re_pi(void)2823 static void m68k_op_and_8_re_pi(void)
2824 {
2825   uint ea = EA_AY_PI_8();
2826   uint res = DX & m68ki_read_8(ea);
2827 
2828   FLAG_N = NFLAG_8(res);
2829   FLAG_C = CFLAG_CLEAR;
2830   FLAG_V = VFLAG_CLEAR;
2831   FLAG_Z = MASK_OUT_ABOVE_8(res);
2832 
2833   m68ki_write_8(ea, FLAG_Z);
2834 }
2835 
2836 
m68k_op_and_8_re_pi7(void)2837 static void m68k_op_and_8_re_pi7(void)
2838 {
2839   uint ea = EA_A7_PI_8();
2840   uint res = DX & m68ki_read_8(ea);
2841 
2842   FLAG_N = NFLAG_8(res);
2843   FLAG_C = CFLAG_CLEAR;
2844   FLAG_V = VFLAG_CLEAR;
2845   FLAG_Z = MASK_OUT_ABOVE_8(res);
2846 
2847   m68ki_write_8(ea, FLAG_Z);
2848 }
2849 
2850 
m68k_op_and_8_re_pd(void)2851 static void m68k_op_and_8_re_pd(void)
2852 {
2853   uint ea = EA_AY_PD_8();
2854   uint res = DX & m68ki_read_8(ea);
2855 
2856   FLAG_N = NFLAG_8(res);
2857   FLAG_C = CFLAG_CLEAR;
2858   FLAG_V = VFLAG_CLEAR;
2859   FLAG_Z = MASK_OUT_ABOVE_8(res);
2860 
2861   m68ki_write_8(ea, FLAG_Z);
2862 }
2863 
2864 
m68k_op_and_8_re_pd7(void)2865 static void m68k_op_and_8_re_pd7(void)
2866 {
2867   uint ea = EA_A7_PD_8();
2868   uint res = DX & m68ki_read_8(ea);
2869 
2870   FLAG_N = NFLAG_8(res);
2871   FLAG_C = CFLAG_CLEAR;
2872   FLAG_V = VFLAG_CLEAR;
2873   FLAG_Z = MASK_OUT_ABOVE_8(res);
2874 
2875   m68ki_write_8(ea, FLAG_Z);
2876 }
2877 
2878 
m68k_op_and_8_re_di(void)2879 static void m68k_op_and_8_re_di(void)
2880 {
2881   uint ea = EA_AY_DI_8();
2882   uint res = DX & m68ki_read_8(ea);
2883 
2884   FLAG_N = NFLAG_8(res);
2885   FLAG_C = CFLAG_CLEAR;
2886   FLAG_V = VFLAG_CLEAR;
2887   FLAG_Z = MASK_OUT_ABOVE_8(res);
2888 
2889   m68ki_write_8(ea, FLAG_Z);
2890 }
2891 
2892 
m68k_op_and_8_re_ix(void)2893 static void m68k_op_and_8_re_ix(void)
2894 {
2895   uint ea = EA_AY_IX_8();
2896   uint res = DX & m68ki_read_8(ea);
2897 
2898   FLAG_N = NFLAG_8(res);
2899   FLAG_C = CFLAG_CLEAR;
2900   FLAG_V = VFLAG_CLEAR;
2901   FLAG_Z = MASK_OUT_ABOVE_8(res);
2902 
2903   m68ki_write_8(ea, FLAG_Z);
2904 }
2905 
2906 
m68k_op_and_8_re_aw(void)2907 static void m68k_op_and_8_re_aw(void)
2908 {
2909   uint ea = EA_AW_8();
2910   uint res = DX & m68ki_read_8(ea);
2911 
2912   FLAG_N = NFLAG_8(res);
2913   FLAG_C = CFLAG_CLEAR;
2914   FLAG_V = VFLAG_CLEAR;
2915   FLAG_Z = MASK_OUT_ABOVE_8(res);
2916 
2917   m68ki_write_8(ea, FLAG_Z);
2918 }
2919 
2920 
m68k_op_and_8_re_al(void)2921 static void m68k_op_and_8_re_al(void)
2922 {
2923   uint ea = EA_AL_8();
2924   uint res = DX & m68ki_read_8(ea);
2925 
2926   FLAG_N = NFLAG_8(res);
2927   FLAG_C = CFLAG_CLEAR;
2928   FLAG_V = VFLAG_CLEAR;
2929   FLAG_Z = MASK_OUT_ABOVE_8(res);
2930 
2931   m68ki_write_8(ea, FLAG_Z);
2932 }
2933 
2934 
m68k_op_and_16_re_ai(void)2935 static void m68k_op_and_16_re_ai(void)
2936 {
2937   uint ea = EA_AY_AI_16();
2938   uint res = DX & m68ki_read_16(ea);
2939 
2940   FLAG_N = NFLAG_16(res);
2941   FLAG_C = CFLAG_CLEAR;
2942   FLAG_V = VFLAG_CLEAR;
2943   FLAG_Z = MASK_OUT_ABOVE_16(res);
2944 
2945   m68ki_write_16(ea, FLAG_Z);
2946 }
2947 
2948 
m68k_op_and_16_re_pi(void)2949 static void m68k_op_and_16_re_pi(void)
2950 {
2951   uint ea = EA_AY_PI_16();
2952   uint res = DX & m68ki_read_16(ea);
2953 
2954   FLAG_N = NFLAG_16(res);
2955   FLAG_C = CFLAG_CLEAR;
2956   FLAG_V = VFLAG_CLEAR;
2957   FLAG_Z = MASK_OUT_ABOVE_16(res);
2958 
2959   m68ki_write_16(ea, FLAG_Z);
2960 }
2961 
2962 
m68k_op_and_16_re_pd(void)2963 static void m68k_op_and_16_re_pd(void)
2964 {
2965   uint ea = EA_AY_PD_16();
2966   uint res = DX & m68ki_read_16(ea);
2967 
2968   FLAG_N = NFLAG_16(res);
2969   FLAG_C = CFLAG_CLEAR;
2970   FLAG_V = VFLAG_CLEAR;
2971   FLAG_Z = MASK_OUT_ABOVE_16(res);
2972 
2973   m68ki_write_16(ea, FLAG_Z);
2974 }
2975 
2976 
m68k_op_and_16_re_di(void)2977 static void m68k_op_and_16_re_di(void)
2978 {
2979   uint ea = EA_AY_DI_16();
2980   uint res = DX & m68ki_read_16(ea);
2981 
2982   FLAG_N = NFLAG_16(res);
2983   FLAG_C = CFLAG_CLEAR;
2984   FLAG_V = VFLAG_CLEAR;
2985   FLAG_Z = MASK_OUT_ABOVE_16(res);
2986 
2987   m68ki_write_16(ea, FLAG_Z);
2988 }
2989 
2990 
m68k_op_and_16_re_ix(void)2991 static void m68k_op_and_16_re_ix(void)
2992 {
2993   uint ea = EA_AY_IX_16();
2994   uint res = DX & m68ki_read_16(ea);
2995 
2996   FLAG_N = NFLAG_16(res);
2997   FLAG_C = CFLAG_CLEAR;
2998   FLAG_V = VFLAG_CLEAR;
2999   FLAG_Z = MASK_OUT_ABOVE_16(res);
3000 
3001   m68ki_write_16(ea, FLAG_Z);
3002 }
3003 
3004 
m68k_op_and_16_re_aw(void)3005 static void m68k_op_and_16_re_aw(void)
3006 {
3007   uint ea = EA_AW_16();
3008   uint res = DX & m68ki_read_16(ea);
3009 
3010   FLAG_N = NFLAG_16(res);
3011   FLAG_C = CFLAG_CLEAR;
3012   FLAG_V = VFLAG_CLEAR;
3013   FLAG_Z = MASK_OUT_ABOVE_16(res);
3014 
3015   m68ki_write_16(ea, FLAG_Z);
3016 }
3017 
3018 
m68k_op_and_16_re_al(void)3019 static void m68k_op_and_16_re_al(void)
3020 {
3021   uint ea = EA_AL_16();
3022   uint res = DX & m68ki_read_16(ea);
3023 
3024   FLAG_N = NFLAG_16(res);
3025   FLAG_C = CFLAG_CLEAR;
3026   FLAG_V = VFLAG_CLEAR;
3027   FLAG_Z = MASK_OUT_ABOVE_16(res);
3028 
3029   m68ki_write_16(ea, FLAG_Z);
3030 }
3031 
3032 
m68k_op_and_32_re_ai(void)3033 static void m68k_op_and_32_re_ai(void)
3034 {
3035   uint ea = EA_AY_AI_32();
3036   uint res = DX & m68ki_read_32(ea);
3037 
3038   FLAG_N = NFLAG_32(res);
3039   FLAG_Z = res;
3040   FLAG_C = CFLAG_CLEAR;
3041   FLAG_V = VFLAG_CLEAR;
3042 
3043   m68ki_write_32(ea, res);
3044 }
3045 
3046 
m68k_op_and_32_re_pi(void)3047 static void m68k_op_and_32_re_pi(void)
3048 {
3049   uint ea = EA_AY_PI_32();
3050   uint res = DX & m68ki_read_32(ea);
3051 
3052   FLAG_N = NFLAG_32(res);
3053   FLAG_Z = res;
3054   FLAG_C = CFLAG_CLEAR;
3055   FLAG_V = VFLAG_CLEAR;
3056 
3057   m68ki_write_32(ea, res);
3058 }
3059 
3060 
m68k_op_and_32_re_pd(void)3061 static void m68k_op_and_32_re_pd(void)
3062 {
3063   uint ea = EA_AY_PD_32();
3064   uint res = DX & m68ki_read_32(ea);
3065 
3066   FLAG_N = NFLAG_32(res);
3067   FLAG_Z = res;
3068   FLAG_C = CFLAG_CLEAR;
3069   FLAG_V = VFLAG_CLEAR;
3070 
3071   m68ki_write_32(ea, res);
3072 }
3073 
3074 
m68k_op_and_32_re_di(void)3075 static void m68k_op_and_32_re_di(void)
3076 {
3077   uint ea = EA_AY_DI_32();
3078   uint res = DX & m68ki_read_32(ea);
3079 
3080   FLAG_N = NFLAG_32(res);
3081   FLAG_Z = res;
3082   FLAG_C = CFLAG_CLEAR;
3083   FLAG_V = VFLAG_CLEAR;
3084 
3085   m68ki_write_32(ea, res);
3086 }
3087 
3088 
m68k_op_and_32_re_ix(void)3089 static void m68k_op_and_32_re_ix(void)
3090 {
3091   uint ea = EA_AY_IX_32();
3092   uint res = DX & m68ki_read_32(ea);
3093 
3094   FLAG_N = NFLAG_32(res);
3095   FLAG_Z = res;
3096   FLAG_C = CFLAG_CLEAR;
3097   FLAG_V = VFLAG_CLEAR;
3098 
3099   m68ki_write_32(ea, res);
3100 }
3101 
3102 
m68k_op_and_32_re_aw(void)3103 static void m68k_op_and_32_re_aw(void)
3104 {
3105   uint ea = EA_AW_32();
3106   uint res = DX & m68ki_read_32(ea);
3107 
3108   FLAG_N = NFLAG_32(res);
3109   FLAG_Z = res;
3110   FLAG_C = CFLAG_CLEAR;
3111   FLAG_V = VFLAG_CLEAR;
3112 
3113   m68ki_write_32(ea, res);
3114 }
3115 
3116 
m68k_op_and_32_re_al(void)3117 static void m68k_op_and_32_re_al(void)
3118 {
3119   uint ea = EA_AL_32();
3120   uint res = DX & m68ki_read_32(ea);
3121 
3122   FLAG_N = NFLAG_32(res);
3123   FLAG_Z = res;
3124   FLAG_C = CFLAG_CLEAR;
3125   FLAG_V = VFLAG_CLEAR;
3126 
3127   m68ki_write_32(ea, res);
3128 }
3129 
3130 
m68k_op_andi_8_d(void)3131 static void m68k_op_andi_8_d(void)
3132 {
3133   FLAG_Z = MASK_OUT_ABOVE_8(DY &= (OPER_I_8() | 0xffffff00));
3134 
3135   FLAG_N = NFLAG_8(FLAG_Z);
3136   FLAG_C = CFLAG_CLEAR;
3137   FLAG_V = VFLAG_CLEAR;
3138 }
3139 
3140 
m68k_op_andi_8_ai(void)3141 static void m68k_op_andi_8_ai(void)
3142 {
3143   uint src = OPER_I_8();
3144   uint ea = EA_AY_AI_8();
3145   uint res = src & m68ki_read_8(ea);
3146 
3147   FLAG_N = NFLAG_8(res);
3148   FLAG_Z = res;
3149   FLAG_C = CFLAG_CLEAR;
3150   FLAG_V = VFLAG_CLEAR;
3151 
3152   m68ki_write_8(ea, res);
3153 }
3154 
3155 
m68k_op_andi_8_pi(void)3156 static void m68k_op_andi_8_pi(void)
3157 {
3158   uint src = OPER_I_8();
3159   uint ea = EA_AY_PI_8();
3160   uint res = src & m68ki_read_8(ea);
3161 
3162   FLAG_N = NFLAG_8(res);
3163   FLAG_Z = res;
3164   FLAG_C = CFLAG_CLEAR;
3165   FLAG_V = VFLAG_CLEAR;
3166 
3167   m68ki_write_8(ea, res);
3168 }
3169 
3170 
m68k_op_andi_8_pi7(void)3171 static void m68k_op_andi_8_pi7(void)
3172 {
3173   uint src = OPER_I_8();
3174   uint ea = EA_A7_PI_8();
3175   uint res = src & m68ki_read_8(ea);
3176 
3177   FLAG_N = NFLAG_8(res);
3178   FLAG_Z = res;
3179   FLAG_C = CFLAG_CLEAR;
3180   FLAG_V = VFLAG_CLEAR;
3181 
3182   m68ki_write_8(ea, res);
3183 }
3184 
3185 
m68k_op_andi_8_pd(void)3186 static void m68k_op_andi_8_pd(void)
3187 {
3188   uint src = OPER_I_8();
3189   uint ea = EA_AY_PD_8();
3190   uint res = src & m68ki_read_8(ea);
3191 
3192   FLAG_N = NFLAG_8(res);
3193   FLAG_Z = res;
3194   FLAG_C = CFLAG_CLEAR;
3195   FLAG_V = VFLAG_CLEAR;
3196 
3197   m68ki_write_8(ea, res);
3198 }
3199 
3200 
m68k_op_andi_8_pd7(void)3201 static void m68k_op_andi_8_pd7(void)
3202 {
3203   uint src = OPER_I_8();
3204   uint ea = EA_A7_PD_8();
3205   uint res = src & m68ki_read_8(ea);
3206 
3207   FLAG_N = NFLAG_8(res);
3208   FLAG_Z = res;
3209   FLAG_C = CFLAG_CLEAR;
3210   FLAG_V = VFLAG_CLEAR;
3211 
3212   m68ki_write_8(ea, res);
3213 }
3214 
3215 
m68k_op_andi_8_di(void)3216 static void m68k_op_andi_8_di(void)
3217 {
3218   uint src = OPER_I_8();
3219   uint ea = EA_AY_DI_8();
3220   uint res = src & m68ki_read_8(ea);
3221 
3222   FLAG_N = NFLAG_8(res);
3223   FLAG_Z = res;
3224   FLAG_C = CFLAG_CLEAR;
3225   FLAG_V = VFLAG_CLEAR;
3226 
3227   m68ki_write_8(ea, res);
3228 }
3229 
3230 
m68k_op_andi_8_ix(void)3231 static void m68k_op_andi_8_ix(void)
3232 {
3233   uint src = OPER_I_8();
3234   uint ea = EA_AY_IX_8();
3235   uint res = src & m68ki_read_8(ea);
3236 
3237   FLAG_N = NFLAG_8(res);
3238   FLAG_Z = res;
3239   FLAG_C = CFLAG_CLEAR;
3240   FLAG_V = VFLAG_CLEAR;
3241 
3242   m68ki_write_8(ea, res);
3243 }
3244 
3245 
m68k_op_andi_8_aw(void)3246 static void m68k_op_andi_8_aw(void)
3247 {
3248   uint src = OPER_I_8();
3249   uint ea = EA_AW_8();
3250   uint res = src & m68ki_read_8(ea);
3251 
3252   FLAG_N = NFLAG_8(res);
3253   FLAG_Z = res;
3254   FLAG_C = CFLAG_CLEAR;
3255   FLAG_V = VFLAG_CLEAR;
3256 
3257   m68ki_write_8(ea, res);
3258 }
3259 
3260 
m68k_op_andi_8_al(void)3261 static void m68k_op_andi_8_al(void)
3262 {
3263   uint src = OPER_I_8();
3264   uint ea = EA_AL_8();
3265   uint res = src & m68ki_read_8(ea);
3266 
3267   FLAG_N = NFLAG_8(res);
3268   FLAG_Z = res;
3269   FLAG_C = CFLAG_CLEAR;
3270   FLAG_V = VFLAG_CLEAR;
3271 
3272   m68ki_write_8(ea, res);
3273 }
3274 
3275 
m68k_op_andi_16_d(void)3276 static void m68k_op_andi_16_d(void)
3277 {
3278   FLAG_Z = MASK_OUT_ABOVE_16(DY &= (OPER_I_16() | 0xffff0000));
3279 
3280   FLAG_N = NFLAG_16(FLAG_Z);
3281   FLAG_C = CFLAG_CLEAR;
3282   FLAG_V = VFLAG_CLEAR;
3283 }
3284 
3285 
m68k_op_andi_16_ai(void)3286 static void m68k_op_andi_16_ai(void)
3287 {
3288   uint src = OPER_I_16();
3289   uint ea = EA_AY_AI_16();
3290   uint res = src & m68ki_read_16(ea);
3291 
3292   FLAG_N = NFLAG_16(res);
3293   FLAG_Z = res;
3294   FLAG_C = CFLAG_CLEAR;
3295   FLAG_V = VFLAG_CLEAR;
3296 
3297   m68ki_write_16(ea, res);
3298 }
3299 
3300 
m68k_op_andi_16_pi(void)3301 static void m68k_op_andi_16_pi(void)
3302 {
3303   uint src = OPER_I_16();
3304   uint ea = EA_AY_PI_16();
3305   uint res = src & m68ki_read_16(ea);
3306 
3307   FLAG_N = NFLAG_16(res);
3308   FLAG_Z = res;
3309   FLAG_C = CFLAG_CLEAR;
3310   FLAG_V = VFLAG_CLEAR;
3311 
3312   m68ki_write_16(ea, res);
3313 }
3314 
3315 
m68k_op_andi_16_pd(void)3316 static void m68k_op_andi_16_pd(void)
3317 {
3318   uint src = OPER_I_16();
3319   uint ea = EA_AY_PD_16();
3320   uint res = src & m68ki_read_16(ea);
3321 
3322   FLAG_N = NFLAG_16(res);
3323   FLAG_Z = res;
3324   FLAG_C = CFLAG_CLEAR;
3325   FLAG_V = VFLAG_CLEAR;
3326 
3327   m68ki_write_16(ea, res);
3328 }
3329 
3330 
m68k_op_andi_16_di(void)3331 static void m68k_op_andi_16_di(void)
3332 {
3333   uint src = OPER_I_16();
3334   uint ea = EA_AY_DI_16();
3335   uint res = src & m68ki_read_16(ea);
3336 
3337   FLAG_N = NFLAG_16(res);
3338   FLAG_Z = res;
3339   FLAG_C = CFLAG_CLEAR;
3340   FLAG_V = VFLAG_CLEAR;
3341 
3342   m68ki_write_16(ea, res);
3343 }
3344 
3345 
m68k_op_andi_16_ix(void)3346 static void m68k_op_andi_16_ix(void)
3347 {
3348   uint src = OPER_I_16();
3349   uint ea = EA_AY_IX_16();
3350   uint res = src & m68ki_read_16(ea);
3351 
3352   FLAG_N = NFLAG_16(res);
3353   FLAG_Z = res;
3354   FLAG_C = CFLAG_CLEAR;
3355   FLAG_V = VFLAG_CLEAR;
3356 
3357   m68ki_write_16(ea, res);
3358 }
3359 
3360 
m68k_op_andi_16_aw(void)3361 static void m68k_op_andi_16_aw(void)
3362 {
3363   uint src = OPER_I_16();
3364   uint ea = EA_AW_16();
3365   uint res = src & m68ki_read_16(ea);
3366 
3367   FLAG_N = NFLAG_16(res);
3368   FLAG_Z = res;
3369   FLAG_C = CFLAG_CLEAR;
3370   FLAG_V = VFLAG_CLEAR;
3371 
3372   m68ki_write_16(ea, res);
3373 }
3374 
3375 
m68k_op_andi_16_al(void)3376 static void m68k_op_andi_16_al(void)
3377 {
3378   uint src = OPER_I_16();
3379   uint ea = EA_AL_16();
3380   uint res = src & m68ki_read_16(ea);
3381 
3382   FLAG_N = NFLAG_16(res);
3383   FLAG_Z = res;
3384   FLAG_C = CFLAG_CLEAR;
3385   FLAG_V = VFLAG_CLEAR;
3386 
3387   m68ki_write_16(ea, res);
3388 }
3389 
3390 
m68k_op_andi_32_d(void)3391 static void m68k_op_andi_32_d(void)
3392 {
3393   FLAG_Z = DY &= (OPER_I_32());
3394 
3395   FLAG_N = NFLAG_32(FLAG_Z);
3396   FLAG_C = CFLAG_CLEAR;
3397   FLAG_V = VFLAG_CLEAR;
3398 }
3399 
3400 
m68k_op_andi_32_ai(void)3401 static void m68k_op_andi_32_ai(void)
3402 {
3403   uint src = OPER_I_32();
3404   uint ea = EA_AY_AI_32();
3405   uint res = src & m68ki_read_32(ea);
3406 
3407   FLAG_N = NFLAG_32(res);
3408   FLAG_Z = res;
3409   FLAG_C = CFLAG_CLEAR;
3410   FLAG_V = VFLAG_CLEAR;
3411 
3412   m68ki_write_32(ea, res);
3413 }
3414 
3415 
m68k_op_andi_32_pi(void)3416 static void m68k_op_andi_32_pi(void)
3417 {
3418   uint src = OPER_I_32();
3419   uint ea = EA_AY_PI_32();
3420   uint res = src & m68ki_read_32(ea);
3421 
3422   FLAG_N = NFLAG_32(res);
3423   FLAG_Z = res;
3424   FLAG_C = CFLAG_CLEAR;
3425   FLAG_V = VFLAG_CLEAR;
3426 
3427   m68ki_write_32(ea, res);
3428 }
3429 
3430 
m68k_op_andi_32_pd(void)3431 static void m68k_op_andi_32_pd(void)
3432 {
3433   uint src = OPER_I_32();
3434   uint ea = EA_AY_PD_32();
3435   uint res = src & m68ki_read_32(ea);
3436 
3437   FLAG_N = NFLAG_32(res);
3438   FLAG_Z = res;
3439   FLAG_C = CFLAG_CLEAR;
3440   FLAG_V = VFLAG_CLEAR;
3441 
3442   m68ki_write_32(ea, res);
3443 }
3444 
3445 
m68k_op_andi_32_di(void)3446 static void m68k_op_andi_32_di(void)
3447 {
3448   uint src = OPER_I_32();
3449   uint ea = EA_AY_DI_32();
3450   uint res = src & m68ki_read_32(ea);
3451 
3452   FLAG_N = NFLAG_32(res);
3453   FLAG_Z = res;
3454   FLAG_C = CFLAG_CLEAR;
3455   FLAG_V = VFLAG_CLEAR;
3456 
3457   m68ki_write_32(ea, res);
3458 }
3459 
3460 
m68k_op_andi_32_ix(void)3461 static void m68k_op_andi_32_ix(void)
3462 {
3463   uint src = OPER_I_32();
3464   uint ea = EA_AY_IX_32();
3465   uint res = src & m68ki_read_32(ea);
3466 
3467   FLAG_N = NFLAG_32(res);
3468   FLAG_Z = res;
3469   FLAG_C = CFLAG_CLEAR;
3470   FLAG_V = VFLAG_CLEAR;
3471 
3472   m68ki_write_32(ea, res);
3473 }
3474 
3475 
m68k_op_andi_32_aw(void)3476 static void m68k_op_andi_32_aw(void)
3477 {
3478   uint src = OPER_I_32();
3479   uint ea = EA_AW_32();
3480   uint res = src & m68ki_read_32(ea);
3481 
3482   FLAG_N = NFLAG_32(res);
3483   FLAG_Z = res;
3484   FLAG_C = CFLAG_CLEAR;
3485   FLAG_V = VFLAG_CLEAR;
3486 
3487   m68ki_write_32(ea, res);
3488 }
3489 
3490 
m68k_op_andi_32_al(void)3491 static void m68k_op_andi_32_al(void)
3492 {
3493   uint src = OPER_I_32();
3494   uint ea = EA_AL_32();
3495   uint res = src & m68ki_read_32(ea);
3496 
3497   FLAG_N = NFLAG_32(res);
3498   FLAG_Z = res;
3499   FLAG_C = CFLAG_CLEAR;
3500   FLAG_V = VFLAG_CLEAR;
3501 
3502   m68ki_write_32(ea, res);
3503 }
3504 
3505 
m68k_op_andi_16_toc(void)3506 static void m68k_op_andi_16_toc(void)
3507 {
3508   m68ki_set_ccr(m68ki_get_ccr() & OPER_I_16());
3509 }
3510 
3511 
m68k_op_andi_16_tos(void)3512 static void m68k_op_andi_16_tos(void)
3513 {
3514   if(FLAG_S)
3515   {
3516     uint src = OPER_I_16();
3517     m68ki_set_sr(m68ki_get_sr() & src);
3518     return;
3519   }
3520   m68ki_exception_privilege_violation();
3521 }
3522 
3523 
m68k_op_asr_8_s(void)3524 static void m68k_op_asr_8_s(void)
3525 {
3526   uint* r_dst = &DY;
3527   uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
3528   uint src = MASK_OUT_ABOVE_8(*r_dst);
3529   uint res = src >> shift;
3530 
3531   if(shift != 0)
3532     USE_CYCLES(shift * CYC_SHIFT);
3533 
3534   if(GET_MSB_8(src))
3535     res |= m68ki_shift_8_table[shift];
3536 
3537   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
3538 
3539   FLAG_N = NFLAG_8(res);
3540   FLAG_Z = res;
3541   FLAG_V = VFLAG_CLEAR;
3542   FLAG_X = FLAG_C = src << (9-shift);
3543 }
3544 
3545 
m68k_op_asr_16_s(void)3546 static void m68k_op_asr_16_s(void)
3547 {
3548   uint* r_dst = &DY;
3549   uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
3550   uint src = MASK_OUT_ABOVE_16(*r_dst);
3551   uint res = src >> shift;
3552 
3553   if(shift != 0)
3554     USE_CYCLES(shift * CYC_SHIFT);
3555 
3556   if(GET_MSB_16(src))
3557     res |= m68ki_shift_16_table[shift];
3558 
3559   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
3560 
3561   FLAG_N = NFLAG_16(res);
3562   FLAG_Z = res;
3563   FLAG_V = VFLAG_CLEAR;
3564   FLAG_X = FLAG_C = src << (9-shift);
3565 }
3566 
3567 
m68k_op_asr_32_s(void)3568 static void m68k_op_asr_32_s(void)
3569 {
3570   uint* r_dst = &DY;
3571   uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
3572   uint src = *r_dst;
3573   uint res = src >> shift;
3574 
3575   if(shift != 0)
3576     USE_CYCLES(shift * CYC_SHIFT);
3577 
3578   if(GET_MSB_32(src))
3579     res |= m68ki_shift_32_table[shift];
3580 
3581   *r_dst = res;
3582 
3583   FLAG_N = NFLAG_32(res);
3584   FLAG_Z = res;
3585   FLAG_V = VFLAG_CLEAR;
3586   FLAG_X = FLAG_C = src << (9-shift);
3587 }
3588 
3589 
m68k_op_asr_8_r(void)3590 static void m68k_op_asr_8_r(void)
3591 {
3592   uint* r_dst = &DY;
3593   uint shift = DX & 0x3f;
3594   uint src = MASK_OUT_ABOVE_8(*r_dst);
3595   uint res = src >> shift;
3596 
3597   if(shift != 0)
3598   {
3599     USE_CYCLES(shift * CYC_SHIFT);
3600 
3601     if(shift < 8)
3602     {
3603       if(GET_MSB_8(src))
3604         res |= m68ki_shift_8_table[shift];
3605 
3606       *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
3607 
3608       FLAG_X = FLAG_C = src << (9-shift);
3609       FLAG_N = NFLAG_8(res);
3610       FLAG_Z = res;
3611       FLAG_V = VFLAG_CLEAR;
3612       return;
3613     }
3614 
3615     if(GET_MSB_8(src))
3616     {
3617       *r_dst |= 0xff;
3618       FLAG_C = CFLAG_SET;
3619       FLAG_X = XFLAG_SET;
3620       FLAG_N = NFLAG_SET;
3621       FLAG_Z = ZFLAG_CLEAR;
3622       FLAG_V = VFLAG_CLEAR;
3623       return;
3624     }
3625 
3626     *r_dst &= 0xffffff00;
3627     FLAG_C = CFLAG_CLEAR;
3628     FLAG_X = XFLAG_CLEAR;
3629     FLAG_N = NFLAG_CLEAR;
3630     FLAG_Z = ZFLAG_SET;
3631     FLAG_V = VFLAG_CLEAR;
3632     return;
3633   }
3634 
3635   FLAG_C = CFLAG_CLEAR;
3636   FLAG_N = NFLAG_8(src);
3637   FLAG_Z = src;
3638   FLAG_V = VFLAG_CLEAR;
3639 }
3640 
3641 
m68k_op_asr_16_r(void)3642 static void m68k_op_asr_16_r(void)
3643 {
3644   uint* r_dst = &DY;
3645   uint shift = DX & 0x3f;
3646   uint src = MASK_OUT_ABOVE_16(*r_dst);
3647   uint res = src >> shift;
3648 
3649   if(shift != 0)
3650   {
3651     USE_CYCLES(shift * CYC_SHIFT);
3652 
3653     if(shift < 16)
3654     {
3655       if(GET_MSB_16(src))
3656         res |= m68ki_shift_16_table[shift];
3657 
3658       *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
3659 
3660       FLAG_C = FLAG_X = (src >> (shift - 1))<<8;
3661       FLAG_N = NFLAG_16(res);
3662       FLAG_Z = res;
3663       FLAG_V = VFLAG_CLEAR;
3664       return;
3665     }
3666 
3667     if(GET_MSB_16(src))
3668     {
3669       *r_dst |= 0xffff;
3670       FLAG_C = CFLAG_SET;
3671       FLAG_X = XFLAG_SET;
3672       FLAG_N = NFLAG_SET;
3673       FLAG_Z = ZFLAG_CLEAR;
3674       FLAG_V = VFLAG_CLEAR;
3675       return;
3676     }
3677 
3678     *r_dst &= 0xffff0000;
3679     FLAG_C = CFLAG_CLEAR;
3680     FLAG_X = XFLAG_CLEAR;
3681     FLAG_N = NFLAG_CLEAR;
3682     FLAG_Z = ZFLAG_SET;
3683     FLAG_V = VFLAG_CLEAR;
3684     return;
3685   }
3686 
3687   FLAG_C = CFLAG_CLEAR;
3688   FLAG_N = NFLAG_16(src);
3689   FLAG_Z = src;
3690   FLAG_V = VFLAG_CLEAR;
3691 }
3692 
3693 
m68k_op_asr_32_r(void)3694 static void m68k_op_asr_32_r(void)
3695 {
3696   uint* r_dst = &DY;
3697   uint shift = DX & 0x3f;
3698   uint src = *r_dst;
3699   uint res = src >> shift;
3700 
3701   if(shift != 0)
3702   {
3703     USE_CYCLES(shift * CYC_SHIFT);
3704 
3705     if(shift < 32)
3706     {
3707       if(GET_MSB_32(src))
3708         res |= m68ki_shift_32_table[shift];
3709 
3710       *r_dst = res;
3711 
3712       FLAG_C = FLAG_X = (src >> (shift - 1))<<8;
3713       FLAG_N = NFLAG_32(res);
3714       FLAG_Z = res;
3715       FLAG_V = VFLAG_CLEAR;
3716       return;
3717     }
3718 
3719     if(GET_MSB_32(src))
3720     {
3721       *r_dst = 0xffffffff;
3722       FLAG_C = CFLAG_SET;
3723       FLAG_X = XFLAG_SET;
3724       FLAG_N = NFLAG_SET;
3725       FLAG_Z = ZFLAG_CLEAR;
3726       FLAG_V = VFLAG_CLEAR;
3727       return;
3728     }
3729 
3730     *r_dst = 0;
3731     FLAG_C = CFLAG_CLEAR;
3732     FLAG_X = XFLAG_CLEAR;
3733     FLAG_N = NFLAG_CLEAR;
3734     FLAG_Z = ZFLAG_SET;
3735     FLAG_V = VFLAG_CLEAR;
3736     return;
3737   }
3738 
3739   FLAG_C = CFLAG_CLEAR;
3740   FLAG_N = NFLAG_32(src);
3741   FLAG_Z = src;
3742   FLAG_V = VFLAG_CLEAR;
3743 }
3744 
3745 
m68k_op_asr_16_ai(void)3746 static void m68k_op_asr_16_ai(void)
3747 {
3748   uint ea = EA_AY_AI_16();
3749   uint src = m68ki_read_16(ea);
3750   uint res = src >> 1;
3751 
3752   if(GET_MSB_16(src))
3753     res |= 0x8000;
3754 
3755   m68ki_write_16(ea, res);
3756 
3757   FLAG_N = NFLAG_16(res);
3758   FLAG_Z = res;
3759   FLAG_V = VFLAG_CLEAR;
3760   FLAG_C = FLAG_X = src << 8;
3761 }
3762 
3763 
m68k_op_asr_16_pi(void)3764 static void m68k_op_asr_16_pi(void)
3765 {
3766   uint ea = EA_AY_PI_16();
3767   uint src = m68ki_read_16(ea);
3768   uint res = src >> 1;
3769 
3770   if(GET_MSB_16(src))
3771     res |= 0x8000;
3772 
3773   m68ki_write_16(ea, res);
3774 
3775   FLAG_N = NFLAG_16(res);
3776   FLAG_Z = res;
3777   FLAG_V = VFLAG_CLEAR;
3778   FLAG_C = FLAG_X = src << 8;
3779 }
3780 
3781 
m68k_op_asr_16_pd(void)3782 static void m68k_op_asr_16_pd(void)
3783 {
3784   uint ea = EA_AY_PD_16();
3785   uint src = m68ki_read_16(ea);
3786   uint res = src >> 1;
3787 
3788   if(GET_MSB_16(src))
3789     res |= 0x8000;
3790 
3791   m68ki_write_16(ea, res);
3792 
3793   FLAG_N = NFLAG_16(res);
3794   FLAG_Z = res;
3795   FLAG_V = VFLAG_CLEAR;
3796   FLAG_C = FLAG_X = src << 8;
3797 }
3798 
3799 
m68k_op_asr_16_di(void)3800 static void m68k_op_asr_16_di(void)
3801 {
3802   uint ea = EA_AY_DI_16();
3803   uint src = m68ki_read_16(ea);
3804   uint res = src >> 1;
3805 
3806   if(GET_MSB_16(src))
3807     res |= 0x8000;
3808 
3809   m68ki_write_16(ea, res);
3810 
3811   FLAG_N = NFLAG_16(res);
3812   FLAG_Z = res;
3813   FLAG_V = VFLAG_CLEAR;
3814   FLAG_C = FLAG_X = src << 8;
3815 }
3816 
3817 
m68k_op_asr_16_ix(void)3818 static void m68k_op_asr_16_ix(void)
3819 {
3820   uint ea = EA_AY_IX_16();
3821   uint src = m68ki_read_16(ea);
3822   uint res = src >> 1;
3823 
3824   if(GET_MSB_16(src))
3825     res |= 0x8000;
3826 
3827   m68ki_write_16(ea, res);
3828 
3829   FLAG_N = NFLAG_16(res);
3830   FLAG_Z = res;
3831   FLAG_V = VFLAG_CLEAR;
3832   FLAG_C = FLAG_X = src << 8;
3833 }
3834 
3835 
m68k_op_asr_16_aw(void)3836 static void m68k_op_asr_16_aw(void)
3837 {
3838   uint ea = EA_AW_16();
3839   uint src = m68ki_read_16(ea);
3840   uint res = src >> 1;
3841 
3842   if(GET_MSB_16(src))
3843     res |= 0x8000;
3844 
3845   m68ki_write_16(ea, res);
3846 
3847   FLAG_N = NFLAG_16(res);
3848   FLAG_Z = res;
3849   FLAG_V = VFLAG_CLEAR;
3850   FLAG_C = FLAG_X = src << 8;
3851 }
3852 
3853 
m68k_op_asr_16_al(void)3854 static void m68k_op_asr_16_al(void)
3855 {
3856   uint ea = EA_AL_16();
3857   uint src = m68ki_read_16(ea);
3858   uint res = src >> 1;
3859 
3860   if(GET_MSB_16(src))
3861     res |= 0x8000;
3862 
3863   m68ki_write_16(ea, res);
3864 
3865   FLAG_N = NFLAG_16(res);
3866   FLAG_Z = res;
3867   FLAG_V = VFLAG_CLEAR;
3868   FLAG_C = FLAG_X = src << 8;
3869 }
3870 
3871 
m68k_op_asl_8_s(void)3872 static void m68k_op_asl_8_s(void)
3873 {
3874   uint* r_dst = &DY;
3875   uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
3876   uint src = MASK_OUT_ABOVE_8(*r_dst);
3877   uint res = MASK_OUT_ABOVE_8(src << shift);
3878 
3879   if(shift != 0)
3880     USE_CYCLES(shift * CYC_SHIFT);
3881 
3882   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
3883 
3884   FLAG_X = FLAG_C = src << shift;
3885   FLAG_N = NFLAG_8(res);
3886   FLAG_Z = res;
3887   src &= m68ki_shift_8_table[shift + 1];
3888   FLAG_V = (!(src == 0 || (src == m68ki_shift_8_table[shift + 1] && shift < 8)))<<7;
3889 }
3890 
3891 
m68k_op_asl_16_s(void)3892 static void m68k_op_asl_16_s(void)
3893 {
3894   uint* r_dst = &DY;
3895   uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
3896   uint src = MASK_OUT_ABOVE_16(*r_dst);
3897   uint res = MASK_OUT_ABOVE_16(src << shift);
3898 
3899   if(shift != 0)
3900     USE_CYCLES(shift * CYC_SHIFT);
3901 
3902   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
3903 
3904   FLAG_N = NFLAG_16(res);
3905   FLAG_Z = res;
3906   FLAG_X = FLAG_C = src >> (8-shift);
3907   src &= m68ki_shift_16_table[shift + 1];
3908   FLAG_V = (!(src == 0 || src == m68ki_shift_16_table[shift + 1]))<<7;
3909 }
3910 
3911 
m68k_op_asl_32_s(void)3912 static void m68k_op_asl_32_s(void)
3913 {
3914   uint* r_dst = &DY;
3915   uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
3916   uint src = *r_dst;
3917   uint res = MASK_OUT_ABOVE_32(src << shift);
3918 
3919   if(shift != 0)
3920     USE_CYCLES(shift * CYC_SHIFT);
3921 
3922   *r_dst = res;
3923 
3924   FLAG_N = NFLAG_32(res);
3925   FLAG_Z = res;
3926   FLAG_X = FLAG_C = src >> (24-shift);
3927   src &= m68ki_shift_32_table[shift + 1];
3928   FLAG_V = (!(src == 0 || src == m68ki_shift_32_table[shift + 1]))<<7;
3929 }
3930 
3931 
m68k_op_asl_8_r(void)3932 static void m68k_op_asl_8_r(void)
3933 {
3934   uint* r_dst = &DY;
3935   uint shift = DX & 0x3f;
3936   uint src = MASK_OUT_ABOVE_8(*r_dst);
3937   uint res = MASK_OUT_ABOVE_8(src << shift);
3938 
3939   if(shift != 0)
3940   {
3941     USE_CYCLES(shift * CYC_SHIFT);
3942 
3943     if(shift < 8)
3944     {
3945       *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
3946       FLAG_X = FLAG_C = src << shift;
3947       FLAG_N = NFLAG_8(res);
3948       FLAG_Z = res;
3949       src &= m68ki_shift_8_table[shift + 1];
3950       FLAG_V = (!(src == 0 || src == m68ki_shift_8_table[shift + 1]))<<7;
3951       return;
3952     }
3953 
3954     *r_dst &= 0xffffff00;
3955     FLAG_X = FLAG_C = ((shift == 8 ? src & 1 : 0))<<8;
3956     FLAG_N = NFLAG_CLEAR;
3957     FLAG_Z = ZFLAG_SET;
3958     FLAG_V = (!(src == 0))<<7;
3959     return;
3960   }
3961 
3962   FLAG_C = CFLAG_CLEAR;
3963   FLAG_N = NFLAG_8(src);
3964   FLAG_Z = src;
3965   FLAG_V = VFLAG_CLEAR;
3966 }
3967 
3968 
m68k_op_asl_16_r(void)3969 static void m68k_op_asl_16_r(void)
3970 {
3971   uint* r_dst = &DY;
3972   uint shift = DX & 0x3f;
3973   uint src = MASK_OUT_ABOVE_16(*r_dst);
3974   uint res = MASK_OUT_ABOVE_16(src << shift);
3975 
3976   if(shift != 0)
3977   {
3978     USE_CYCLES(shift * CYC_SHIFT);
3979 
3980     if(shift < 16)
3981     {
3982       *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
3983       FLAG_X = FLAG_C = (src << shift) >> 8;
3984       FLAG_N = NFLAG_16(res);
3985       FLAG_Z = res;
3986       src &= m68ki_shift_16_table[shift + 1];
3987       FLAG_V = (!(src == 0 || src == m68ki_shift_16_table[shift + 1]))<<7;
3988       return;
3989     }
3990 
3991     *r_dst &= 0xffff0000;
3992     FLAG_X = FLAG_C = ((shift == 16 ? src & 1 : 0))<<8;
3993     FLAG_N = NFLAG_CLEAR;
3994     FLAG_Z = ZFLAG_SET;
3995     FLAG_V = (!(src == 0))<<7;
3996     return;
3997   }
3998 
3999   FLAG_C = CFLAG_CLEAR;
4000   FLAG_N = NFLAG_16(src);
4001   FLAG_Z = src;
4002   FLAG_V = VFLAG_CLEAR;
4003 }
4004 
4005 
m68k_op_asl_32_r(void)4006 static void m68k_op_asl_32_r(void)
4007 {
4008   uint* r_dst = &DY;
4009   uint shift = DX & 0x3f;
4010   uint src = *r_dst;
4011   uint res = MASK_OUT_ABOVE_32(src << shift);
4012 
4013   if(shift != 0)
4014   {
4015     USE_CYCLES(shift * CYC_SHIFT);
4016 
4017     if(shift < 32)
4018     {
4019       *r_dst = res;
4020       FLAG_X = FLAG_C = (src >> (32 - shift)) << 8;
4021       FLAG_N = NFLAG_32(res);
4022       FLAG_Z = res;
4023       src &= m68ki_shift_32_table[shift + 1];
4024       FLAG_V = (!(src == 0 || src == m68ki_shift_32_table[shift + 1]))<<7;
4025       return;
4026     }
4027 
4028     *r_dst = 0;
4029     FLAG_X = FLAG_C = ((shift == 32 ? src & 1 : 0))<<8;
4030     FLAG_N = NFLAG_CLEAR;
4031     FLAG_Z = ZFLAG_SET;
4032     FLAG_V = (!(src == 0))<<7;
4033     return;
4034   }
4035 
4036   FLAG_C = CFLAG_CLEAR;
4037   FLAG_N = NFLAG_32(src);
4038   FLAG_Z = src;
4039   FLAG_V = VFLAG_CLEAR;
4040 }
4041 
4042 
m68k_op_asl_16_ai(void)4043 static void m68k_op_asl_16_ai(void)
4044 {
4045   uint ea = EA_AY_AI_16();
4046   uint src = m68ki_read_16(ea);
4047   uint res = MASK_OUT_ABOVE_16(src << 1);
4048 
4049   m68ki_write_16(ea, res);
4050 
4051   FLAG_N = NFLAG_16(res);
4052   FLAG_Z = res;
4053   FLAG_X = FLAG_C = src >> 7;
4054   src &= 0xc000;
4055   FLAG_V = (!(src == 0 || src == 0xc000))<<7;
4056 }
4057 
4058 
m68k_op_asl_16_pi(void)4059 static void m68k_op_asl_16_pi(void)
4060 {
4061   uint ea = EA_AY_PI_16();
4062   uint src = m68ki_read_16(ea);
4063   uint res = MASK_OUT_ABOVE_16(src << 1);
4064 
4065   m68ki_write_16(ea, res);
4066 
4067   FLAG_N = NFLAG_16(res);
4068   FLAG_Z = res;
4069   FLAG_X = FLAG_C = src >> 7;
4070   src &= 0xc000;
4071   FLAG_V = (!(src == 0 || src == 0xc000))<<7;
4072 }
4073 
4074 
m68k_op_asl_16_pd(void)4075 static void m68k_op_asl_16_pd(void)
4076 {
4077   uint ea = EA_AY_PD_16();
4078   uint src = m68ki_read_16(ea);
4079   uint res = MASK_OUT_ABOVE_16(src << 1);
4080 
4081   m68ki_write_16(ea, res);
4082 
4083   FLAG_N = NFLAG_16(res);
4084   FLAG_Z = res;
4085   FLAG_X = FLAG_C = src >> 7;
4086   src &= 0xc000;
4087   FLAG_V = (!(src == 0 || src == 0xc000))<<7;
4088 }
4089 
4090 
m68k_op_asl_16_di(void)4091 static void m68k_op_asl_16_di(void)
4092 {
4093   uint ea = EA_AY_DI_16();
4094   uint src = m68ki_read_16(ea);
4095   uint res = MASK_OUT_ABOVE_16(src << 1);
4096 
4097   m68ki_write_16(ea, res);
4098 
4099   FLAG_N = NFLAG_16(res);
4100   FLAG_Z = res;
4101   FLAG_X = FLAG_C = src >> 7;
4102   src &= 0xc000;
4103   FLAG_V = (!(src == 0 || src == 0xc000))<<7;
4104 }
4105 
4106 
m68k_op_asl_16_ix(void)4107 static void m68k_op_asl_16_ix(void)
4108 {
4109   uint ea = EA_AY_IX_16();
4110   uint src = m68ki_read_16(ea);
4111   uint res = MASK_OUT_ABOVE_16(src << 1);
4112 
4113   m68ki_write_16(ea, res);
4114 
4115   FLAG_N = NFLAG_16(res);
4116   FLAG_Z = res;
4117   FLAG_X = FLAG_C = src >> 7;
4118   src &= 0xc000;
4119   FLAG_V = (!(src == 0 || src == 0xc000))<<7;
4120 }
4121 
4122 
m68k_op_asl_16_aw(void)4123 static void m68k_op_asl_16_aw(void)
4124 {
4125   uint ea = EA_AW_16();
4126   uint src = m68ki_read_16(ea);
4127   uint res = MASK_OUT_ABOVE_16(src << 1);
4128 
4129   m68ki_write_16(ea, res);
4130 
4131   FLAG_N = NFLAG_16(res);
4132   FLAG_Z = res;
4133   FLAG_X = FLAG_C = src >> 7;
4134   src &= 0xc000;
4135   FLAG_V = (!(src == 0 || src == 0xc000))<<7;
4136 }
4137 
4138 
m68k_op_asl_16_al(void)4139 static void m68k_op_asl_16_al(void)
4140 {
4141   uint ea = EA_AL_16();
4142   uint src = m68ki_read_16(ea);
4143   uint res = MASK_OUT_ABOVE_16(src << 1);
4144 
4145   m68ki_write_16(ea, res);
4146 
4147   FLAG_N = NFLAG_16(res);
4148   FLAG_Z = res;
4149   FLAG_X = FLAG_C = src >> 7;
4150   src &= 0xc000;
4151   FLAG_V = (!(src == 0 || src == 0xc000))<<7;
4152 }
4153 
4154 
m68k_op_bhi_8(void)4155 static void m68k_op_bhi_8(void)
4156 {
4157   if(COND_HI())
4158   {
4159     m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));
4160     return;
4161   }
4162   USE_CYCLES(CYC_BCC_NOTAKE_B);
4163 }
4164 
4165 
m68k_op_bls_8(void)4166 static void m68k_op_bls_8(void)
4167 {
4168   if(COND_LS())
4169   {
4170     m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));
4171     return;
4172   }
4173   USE_CYCLES(CYC_BCC_NOTAKE_B);
4174 }
4175 
4176 
m68k_op_bcc_8(void)4177 static void m68k_op_bcc_8(void)
4178 {
4179   if(COND_CC())
4180   {
4181     m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));
4182     return;
4183   }
4184   USE_CYCLES(CYC_BCC_NOTAKE_B);
4185 }
4186 
4187 
m68k_op_bcs_8(void)4188 static void m68k_op_bcs_8(void)
4189 {
4190   if(COND_CS())
4191   {
4192     m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));
4193     return;
4194   }
4195   USE_CYCLES(CYC_BCC_NOTAKE_B);
4196 }
4197 
4198 
m68k_op_bne_8(void)4199 static void m68k_op_bne_8(void)
4200 {
4201   if(COND_NE())
4202   {
4203     m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));
4204     return;
4205   }
4206   USE_CYCLES(CYC_BCC_NOTAKE_B);
4207 }
4208 
4209 
m68k_op_beq_8(void)4210 static void m68k_op_beq_8(void)
4211 {
4212   if(COND_EQ())
4213   {
4214     m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));
4215     return;
4216   }
4217   USE_CYCLES(CYC_BCC_NOTAKE_B);
4218 }
4219 
4220 
m68k_op_bvc_8(void)4221 static void m68k_op_bvc_8(void)
4222 {
4223   if(COND_VC())
4224   {
4225     m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));
4226     return;
4227   }
4228   USE_CYCLES(CYC_BCC_NOTAKE_B);
4229 }
4230 
4231 
m68k_op_bvs_8(void)4232 static void m68k_op_bvs_8(void)
4233 {
4234   if(COND_VS())
4235   {
4236     m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));
4237     return;
4238   }
4239   USE_CYCLES(CYC_BCC_NOTAKE_B);
4240 }
4241 
4242 
m68k_op_bpl_8(void)4243 static void m68k_op_bpl_8(void)
4244 {
4245   if(COND_PL())
4246   {
4247     m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));
4248     return;
4249   }
4250   USE_CYCLES(CYC_BCC_NOTAKE_B);
4251 }
4252 
4253 
m68k_op_bmi_8(void)4254 static void m68k_op_bmi_8(void)
4255 {
4256   if(COND_MI())
4257   {
4258     m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));
4259     return;
4260   }
4261   USE_CYCLES(CYC_BCC_NOTAKE_B);
4262 }
4263 
4264 
m68k_op_bge_8(void)4265 static void m68k_op_bge_8(void)
4266 {
4267   if(COND_GE())
4268   {
4269     m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));
4270     return;
4271   }
4272   USE_CYCLES(CYC_BCC_NOTAKE_B);
4273 }
4274 
4275 
m68k_op_blt_8(void)4276 static void m68k_op_blt_8(void)
4277 {
4278   if(COND_LT())
4279   {
4280     m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));
4281     return;
4282   }
4283   USE_CYCLES(CYC_BCC_NOTAKE_B);
4284 }
4285 
4286 
m68k_op_bgt_8(void)4287 static void m68k_op_bgt_8(void)
4288 {
4289   if(COND_GT())
4290   {
4291     m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));
4292     return;
4293   }
4294   USE_CYCLES(CYC_BCC_NOTAKE_B);
4295 }
4296 
4297 
m68k_op_ble_8(void)4298 static void m68k_op_ble_8(void)
4299 {
4300   if(COND_LE())
4301   {
4302     m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));
4303     return;
4304   }
4305   USE_CYCLES(CYC_BCC_NOTAKE_B);
4306 }
4307 
4308 
m68k_op_bhi_16(void)4309 static void m68k_op_bhi_16(void)
4310 {
4311   if(COND_HI())
4312   {
4313     uint offset = OPER_I_16();
4314     REG_PC -= 2;
4315     m68ki_branch_16(offset);
4316     return;
4317   }
4318   REG_PC += 2;
4319   USE_CYCLES(CYC_BCC_NOTAKE_W);
4320 }
4321 
4322 
m68k_op_bls_16(void)4323 static void m68k_op_bls_16(void)
4324 {
4325   if(COND_LS())
4326   {
4327     uint offset = OPER_I_16();
4328     REG_PC -= 2;
4329     m68ki_branch_16(offset);
4330     return;
4331   }
4332   REG_PC += 2;
4333   USE_CYCLES(CYC_BCC_NOTAKE_W);
4334 }
4335 
4336 
m68k_op_bcc_16(void)4337 static void m68k_op_bcc_16(void)
4338 {
4339   if(COND_CC())
4340   {
4341     uint offset = OPER_I_16();
4342     REG_PC -= 2;
4343     m68ki_branch_16(offset);
4344     return;
4345   }
4346   REG_PC += 2;
4347   USE_CYCLES(CYC_BCC_NOTAKE_W);
4348 }
4349 
4350 
m68k_op_bcs_16(void)4351 static void m68k_op_bcs_16(void)
4352 {
4353   if(COND_CS())
4354   {
4355     uint offset = OPER_I_16();
4356     REG_PC -= 2;
4357     m68ki_branch_16(offset);
4358     return;
4359   }
4360   REG_PC += 2;
4361   USE_CYCLES(CYC_BCC_NOTAKE_W);
4362 }
4363 
4364 
m68k_op_bne_16(void)4365 static void m68k_op_bne_16(void)
4366 {
4367   if(COND_NE())
4368   {
4369     uint offset = OPER_I_16();
4370     REG_PC -= 2;
4371     m68ki_branch_16(offset);
4372     return;
4373   }
4374   REG_PC += 2;
4375   USE_CYCLES(CYC_BCC_NOTAKE_W);
4376 }
4377 
4378 
m68k_op_beq_16(void)4379 static void m68k_op_beq_16(void)
4380 {
4381   if(COND_EQ())
4382   {
4383     uint offset = OPER_I_16();
4384     REG_PC -= 2;
4385     m68ki_branch_16(offset);
4386     return;
4387   }
4388   REG_PC += 2;
4389   USE_CYCLES(CYC_BCC_NOTAKE_W);
4390 }
4391 
4392 
m68k_op_bvc_16(void)4393 static void m68k_op_bvc_16(void)
4394 {
4395   if(COND_VC())
4396   {
4397     uint offset = OPER_I_16();
4398     REG_PC -= 2;
4399     m68ki_branch_16(offset);
4400     return;
4401   }
4402   REG_PC += 2;
4403   USE_CYCLES(CYC_BCC_NOTAKE_W);
4404 }
4405 
4406 
m68k_op_bvs_16(void)4407 static void m68k_op_bvs_16(void)
4408 {
4409   if(COND_VS())
4410   {
4411     uint offset = OPER_I_16();
4412     REG_PC -= 2;
4413     m68ki_branch_16(offset);
4414     return;
4415   }
4416   REG_PC += 2;
4417   USE_CYCLES(CYC_BCC_NOTAKE_W);
4418 }
4419 
4420 
m68k_op_bpl_16(void)4421 static void m68k_op_bpl_16(void)
4422 {
4423   if(COND_PL())
4424   {
4425     uint offset = OPER_I_16();
4426     REG_PC -= 2;
4427     m68ki_branch_16(offset);
4428     return;
4429   }
4430   REG_PC += 2;
4431   USE_CYCLES(CYC_BCC_NOTAKE_W);
4432 }
4433 
4434 
m68k_op_bmi_16(void)4435 static void m68k_op_bmi_16(void)
4436 {
4437   if(COND_MI())
4438   {
4439     uint offset = OPER_I_16();
4440     REG_PC -= 2;
4441     m68ki_branch_16(offset);
4442     return;
4443   }
4444   REG_PC += 2;
4445   USE_CYCLES(CYC_BCC_NOTAKE_W);
4446 }
4447 
4448 
m68k_op_bge_16(void)4449 static void m68k_op_bge_16(void)
4450 {
4451   if(COND_GE())
4452   {
4453     uint offset = OPER_I_16();
4454     REG_PC -= 2;
4455     m68ki_branch_16(offset);
4456     return;
4457   }
4458   REG_PC += 2;
4459   USE_CYCLES(CYC_BCC_NOTAKE_W);
4460 }
4461 
4462 
m68k_op_blt_16(void)4463 static void m68k_op_blt_16(void)
4464 {
4465   if(COND_LT())
4466   {
4467     uint offset = OPER_I_16();
4468     REG_PC -= 2;
4469     m68ki_branch_16(offset);
4470     return;
4471   }
4472   REG_PC += 2;
4473   USE_CYCLES(CYC_BCC_NOTAKE_W);
4474 }
4475 
4476 
m68k_op_bgt_16(void)4477 static void m68k_op_bgt_16(void)
4478 {
4479   if(COND_GT())
4480   {
4481     uint offset = OPER_I_16();
4482     REG_PC -= 2;
4483     m68ki_branch_16(offset);
4484     return;
4485   }
4486   REG_PC += 2;
4487   USE_CYCLES(CYC_BCC_NOTAKE_W);
4488 }
4489 
4490 
m68k_op_ble_16(void)4491 static void m68k_op_ble_16(void)
4492 {
4493   if(COND_LE())
4494   {
4495     uint offset = OPER_I_16();
4496     REG_PC -= 2;
4497     m68ki_branch_16(offset);
4498     return;
4499   }
4500   REG_PC += 2;
4501   USE_CYCLES(CYC_BCC_NOTAKE_W);
4502 }
4503 
4504 
m68k_op_bhi_32(void)4505 static void m68k_op_bhi_32(void)
4506 {
4507   if(COND_HI())
4508   {
4509     m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));
4510     return;
4511   }
4512   USE_CYCLES(CYC_BCC_NOTAKE_B);
4513 }
4514 
4515 
m68k_op_bls_32(void)4516 static void m68k_op_bls_32(void)
4517 {
4518   if(COND_LS())
4519   {
4520     m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));
4521     return;
4522   }
4523   USE_CYCLES(CYC_BCC_NOTAKE_B);
4524 }
4525 
4526 
m68k_op_bcc_32(void)4527 static void m68k_op_bcc_32(void)
4528 {
4529   if(COND_CC())
4530   {
4531     m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));
4532     return;
4533   }
4534   USE_CYCLES(CYC_BCC_NOTAKE_B);
4535 }
4536 
4537 
m68k_op_bcs_32(void)4538 static void m68k_op_bcs_32(void)
4539 {
4540   if(COND_CS())
4541   {
4542     m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));
4543     return;
4544   }
4545   USE_CYCLES(CYC_BCC_NOTAKE_B);
4546 }
4547 
4548 
m68k_op_bne_32(void)4549 static void m68k_op_bne_32(void)
4550 {
4551   if(COND_NE())
4552   {
4553     m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));
4554     return;
4555   }
4556   USE_CYCLES(CYC_BCC_NOTAKE_B);
4557 }
4558 
4559 
m68k_op_beq_32(void)4560 static void m68k_op_beq_32(void)
4561 {
4562   if(COND_EQ())
4563   {
4564     m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));
4565     return;
4566   }
4567   USE_CYCLES(CYC_BCC_NOTAKE_B);
4568 }
4569 
4570 
m68k_op_bvc_32(void)4571 static void m68k_op_bvc_32(void)
4572 {
4573   if(COND_VC())
4574   {
4575     m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));
4576     return;
4577   }
4578   USE_CYCLES(CYC_BCC_NOTAKE_B);
4579 }
4580 
4581 
m68k_op_bvs_32(void)4582 static void m68k_op_bvs_32(void)
4583 {
4584   if(COND_VS())
4585   {
4586     m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));
4587     return;
4588   }
4589   USE_CYCLES(CYC_BCC_NOTAKE_B);
4590 }
4591 
4592 
m68k_op_bpl_32(void)4593 static void m68k_op_bpl_32(void)
4594 {
4595   if(COND_PL())
4596   {
4597     m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));
4598     return;
4599   }
4600   USE_CYCLES(CYC_BCC_NOTAKE_B);
4601 }
4602 
4603 
m68k_op_bmi_32(void)4604 static void m68k_op_bmi_32(void)
4605 {
4606   if(COND_MI())
4607   {
4608     m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));
4609     return;
4610   }
4611   USE_CYCLES(CYC_BCC_NOTAKE_B);
4612 }
4613 
4614 
m68k_op_bge_32(void)4615 static void m68k_op_bge_32(void)
4616 {
4617   if(COND_GE())
4618   {
4619     m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));
4620     return;
4621   }
4622   USE_CYCLES(CYC_BCC_NOTAKE_B);
4623 }
4624 
4625 
m68k_op_blt_32(void)4626 static void m68k_op_blt_32(void)
4627 {
4628   if(COND_LT())
4629   {
4630     m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));
4631     return;
4632   }
4633   USE_CYCLES(CYC_BCC_NOTAKE_B);
4634 }
4635 
4636 
m68k_op_bgt_32(void)4637 static void m68k_op_bgt_32(void)
4638 {
4639   if(COND_GT())
4640   {
4641     m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));
4642     return;
4643   }
4644   USE_CYCLES(CYC_BCC_NOTAKE_B);
4645 }
4646 
4647 
m68k_op_ble_32(void)4648 static void m68k_op_ble_32(void)
4649 {
4650   if(COND_LE())
4651   {
4652     m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));
4653     return;
4654   }
4655   USE_CYCLES(CYC_BCC_NOTAKE_B);
4656 }
4657 
4658 
m68k_op_bchg_32_r_d(void)4659 static void m68k_op_bchg_32_r_d(void)
4660 {
4661   uint* r_dst = &DY;
4662   uint mask = 1 << (DX & 0x1f);
4663 
4664   FLAG_Z = *r_dst & mask;
4665   *r_dst ^= mask;
4666 }
4667 
4668 
m68k_op_bchg_8_r_ai(void)4669 static void m68k_op_bchg_8_r_ai(void)
4670 {
4671   uint ea = EA_AY_AI_8();
4672   uint src = m68ki_read_8(ea);
4673   uint mask = 1 << (DX & 7);
4674 
4675   FLAG_Z = src & mask;
4676   m68ki_write_8(ea, src ^ mask);
4677 }
4678 
4679 
m68k_op_bchg_8_r_pi(void)4680 static void m68k_op_bchg_8_r_pi(void)
4681 {
4682   uint ea = EA_AY_PI_8();
4683   uint src = m68ki_read_8(ea);
4684   uint mask = 1 << (DX & 7);
4685 
4686   FLAG_Z = src & mask;
4687   m68ki_write_8(ea, src ^ mask);
4688 }
4689 
4690 
m68k_op_bchg_8_r_pi7(void)4691 static void m68k_op_bchg_8_r_pi7(void)
4692 {
4693   uint ea = EA_A7_PI_8();
4694   uint src = m68ki_read_8(ea);
4695   uint mask = 1 << (DX & 7);
4696 
4697   FLAG_Z = src & mask;
4698   m68ki_write_8(ea, src ^ mask);
4699 }
4700 
4701 
m68k_op_bchg_8_r_pd(void)4702 static void m68k_op_bchg_8_r_pd(void)
4703 {
4704   uint ea = EA_AY_PD_8();
4705   uint src = m68ki_read_8(ea);
4706   uint mask = 1 << (DX & 7);
4707 
4708   FLAG_Z = src & mask;
4709   m68ki_write_8(ea, src ^ mask);
4710 }
4711 
4712 
m68k_op_bchg_8_r_pd7(void)4713 static void m68k_op_bchg_8_r_pd7(void)
4714 {
4715   uint ea = EA_A7_PD_8();
4716   uint src = m68ki_read_8(ea);
4717   uint mask = 1 << (DX & 7);
4718 
4719   FLAG_Z = src & mask;
4720   m68ki_write_8(ea, src ^ mask);
4721 }
4722 
4723 
m68k_op_bchg_8_r_di(void)4724 static void m68k_op_bchg_8_r_di(void)
4725 {
4726   uint ea = EA_AY_DI_8();
4727   uint src = m68ki_read_8(ea);
4728   uint mask = 1 << (DX & 7);
4729 
4730   FLAG_Z = src & mask;
4731   m68ki_write_8(ea, src ^ mask);
4732 }
4733 
4734 
m68k_op_bchg_8_r_ix(void)4735 static void m68k_op_bchg_8_r_ix(void)
4736 {
4737   uint ea = EA_AY_IX_8();
4738   uint src = m68ki_read_8(ea);
4739   uint mask = 1 << (DX & 7);
4740 
4741   FLAG_Z = src & mask;
4742   m68ki_write_8(ea, src ^ mask);
4743 }
4744 
4745 
m68k_op_bchg_8_r_aw(void)4746 static void m68k_op_bchg_8_r_aw(void)
4747 {
4748   uint ea = EA_AW_8();
4749   uint src = m68ki_read_8(ea);
4750   uint mask = 1 << (DX & 7);
4751 
4752   FLAG_Z = src & mask;
4753   m68ki_write_8(ea, src ^ mask);
4754 }
4755 
4756 
m68k_op_bchg_8_r_al(void)4757 static void m68k_op_bchg_8_r_al(void)
4758 {
4759   uint ea = EA_AL_8();
4760   uint src = m68ki_read_8(ea);
4761   uint mask = 1 << (DX & 7);
4762 
4763   FLAG_Z = src & mask;
4764   m68ki_write_8(ea, src ^ mask);
4765 }
4766 
4767 
m68k_op_bchg_32_s_d(void)4768 static void m68k_op_bchg_32_s_d(void)
4769 {
4770   uint* r_dst = &DY;
4771   uint mask = 1 << (OPER_I_8() & 0x1f);
4772 
4773   FLAG_Z = *r_dst & mask;
4774   *r_dst ^= mask;
4775 }
4776 
4777 
m68k_op_bchg_8_s_ai(void)4778 static void m68k_op_bchg_8_s_ai(void)
4779 {
4780   uint mask = 1 << (OPER_I_8() & 7);
4781   uint ea = EA_AY_AI_8();
4782   uint src = m68ki_read_8(ea);
4783 
4784   FLAG_Z = src & mask;
4785   m68ki_write_8(ea, src ^ mask);
4786 }
4787 
4788 
m68k_op_bchg_8_s_pi(void)4789 static void m68k_op_bchg_8_s_pi(void)
4790 {
4791   uint mask = 1 << (OPER_I_8() & 7);
4792   uint ea = EA_AY_PI_8();
4793   uint src = m68ki_read_8(ea);
4794 
4795   FLAG_Z = src & mask;
4796   m68ki_write_8(ea, src ^ mask);
4797 }
4798 
4799 
m68k_op_bchg_8_s_pi7(void)4800 static void m68k_op_bchg_8_s_pi7(void)
4801 {
4802   uint mask = 1 << (OPER_I_8() & 7);
4803   uint ea = EA_A7_PI_8();
4804   uint src = m68ki_read_8(ea);
4805 
4806   FLAG_Z = src & mask;
4807   m68ki_write_8(ea, src ^ mask);
4808 }
4809 
4810 
m68k_op_bchg_8_s_pd(void)4811 static void m68k_op_bchg_8_s_pd(void)
4812 {
4813   uint mask = 1 << (OPER_I_8() & 7);
4814   uint ea = EA_AY_PD_8();
4815   uint src = m68ki_read_8(ea);
4816 
4817   FLAG_Z = src & mask;
4818   m68ki_write_8(ea, src ^ mask);
4819 }
4820 
4821 
m68k_op_bchg_8_s_pd7(void)4822 static void m68k_op_bchg_8_s_pd7(void)
4823 {
4824   uint mask = 1 << (OPER_I_8() & 7);
4825   uint ea = EA_A7_PD_8();
4826   uint src = m68ki_read_8(ea);
4827 
4828   FLAG_Z = src & mask;
4829   m68ki_write_8(ea, src ^ mask);
4830 }
4831 
4832 
m68k_op_bchg_8_s_di(void)4833 static void m68k_op_bchg_8_s_di(void)
4834 {
4835   uint mask = 1 << (OPER_I_8() & 7);
4836   uint ea = EA_AY_DI_8();
4837   uint src = m68ki_read_8(ea);
4838 
4839   FLAG_Z = src & mask;
4840   m68ki_write_8(ea, src ^ mask);
4841 }
4842 
4843 
m68k_op_bchg_8_s_ix(void)4844 static void m68k_op_bchg_8_s_ix(void)
4845 {
4846   uint mask = 1 << (OPER_I_8() & 7);
4847   uint ea = EA_AY_IX_8();
4848   uint src = m68ki_read_8(ea);
4849 
4850   FLAG_Z = src & mask;
4851   m68ki_write_8(ea, src ^ mask);
4852 }
4853 
4854 
m68k_op_bchg_8_s_aw(void)4855 static void m68k_op_bchg_8_s_aw(void)
4856 {
4857   uint mask = 1 << (OPER_I_8() & 7);
4858   uint ea = EA_AW_8();
4859   uint src = m68ki_read_8(ea);
4860 
4861   FLAG_Z = src & mask;
4862   m68ki_write_8(ea, src ^ mask);
4863 }
4864 
4865 
m68k_op_bchg_8_s_al(void)4866 static void m68k_op_bchg_8_s_al(void)
4867 {
4868   uint mask = 1 << (OPER_I_8() & 7);
4869   uint ea = EA_AL_8();
4870   uint src = m68ki_read_8(ea);
4871 
4872   FLAG_Z = src & mask;
4873   m68ki_write_8(ea, src ^ mask);
4874 }
4875 
4876 
m68k_op_bclr_32_r_d(void)4877 static void m68k_op_bclr_32_r_d(void)
4878 {
4879   uint* r_dst = &DY;
4880   uint mask = 1 << (DX & 0x1f);
4881 
4882   FLAG_Z = *r_dst & mask;
4883   *r_dst &= ~mask;
4884 }
4885 
4886 
m68k_op_bclr_8_r_ai(void)4887 static void m68k_op_bclr_8_r_ai(void)
4888 {
4889   uint ea = EA_AY_AI_8();
4890   uint src = m68ki_read_8(ea);
4891   uint mask = 1 << (DX & 7);
4892 
4893   FLAG_Z = src & mask;
4894   m68ki_write_8(ea, src & ~mask);
4895 }
4896 
4897 
m68k_op_bclr_8_r_pi(void)4898 static void m68k_op_bclr_8_r_pi(void)
4899 {
4900   uint ea = EA_AY_PI_8();
4901   uint src = m68ki_read_8(ea);
4902   uint mask = 1 << (DX & 7);
4903 
4904   FLAG_Z = src & mask;
4905   m68ki_write_8(ea, src & ~mask);
4906 }
4907 
4908 
m68k_op_bclr_8_r_pi7(void)4909 static void m68k_op_bclr_8_r_pi7(void)
4910 {
4911   uint ea = EA_A7_PI_8();
4912   uint src = m68ki_read_8(ea);
4913   uint mask = 1 << (DX & 7);
4914 
4915   FLAG_Z = src & mask;
4916   m68ki_write_8(ea, src & ~mask);
4917 }
4918 
4919 
m68k_op_bclr_8_r_pd(void)4920 static void m68k_op_bclr_8_r_pd(void)
4921 {
4922   uint ea = EA_AY_PD_8();
4923   uint src = m68ki_read_8(ea);
4924   uint mask = 1 << (DX & 7);
4925 
4926   FLAG_Z = src & mask;
4927   m68ki_write_8(ea, src & ~mask);
4928 }
4929 
4930 
m68k_op_bclr_8_r_pd7(void)4931 static void m68k_op_bclr_8_r_pd7(void)
4932 {
4933   uint ea = EA_A7_PD_8();
4934   uint src = m68ki_read_8(ea);
4935   uint mask = 1 << (DX & 7);
4936 
4937   FLAG_Z = src & mask;
4938   m68ki_write_8(ea, src & ~mask);
4939 }
4940 
4941 
m68k_op_bclr_8_r_di(void)4942 static void m68k_op_bclr_8_r_di(void)
4943 {
4944   uint ea = EA_AY_DI_8();
4945   uint src = m68ki_read_8(ea);
4946   uint mask = 1 << (DX & 7);
4947 
4948   FLAG_Z = src & mask;
4949   m68ki_write_8(ea, src & ~mask);
4950 }
4951 
4952 
m68k_op_bclr_8_r_ix(void)4953 static void m68k_op_bclr_8_r_ix(void)
4954 {
4955   uint ea = EA_AY_IX_8();
4956   uint src = m68ki_read_8(ea);
4957   uint mask = 1 << (DX & 7);
4958 
4959   FLAG_Z = src & mask;
4960   m68ki_write_8(ea, src & ~mask);
4961 }
4962 
4963 
m68k_op_bclr_8_r_aw(void)4964 static void m68k_op_bclr_8_r_aw(void)
4965 {
4966   uint ea = EA_AW_8();
4967   uint src = m68ki_read_8(ea);
4968   uint mask = 1 << (DX & 7);
4969 
4970   FLAG_Z = src & mask;
4971   m68ki_write_8(ea, src & ~mask);
4972 }
4973 
4974 
m68k_op_bclr_8_r_al(void)4975 static void m68k_op_bclr_8_r_al(void)
4976 {
4977   uint ea = EA_AL_8();
4978   uint src = m68ki_read_8(ea);
4979   uint mask = 1 << (DX & 7);
4980 
4981   FLAG_Z = src & mask;
4982   m68ki_write_8(ea, src & ~mask);
4983 }
4984 
4985 
m68k_op_bclr_32_s_d(void)4986 static void m68k_op_bclr_32_s_d(void)
4987 {
4988   uint* r_dst = &DY;
4989   uint mask = 1 << (OPER_I_8() & 0x1f);
4990 
4991   FLAG_Z = *r_dst & mask;
4992   *r_dst &= ~mask;
4993 }
4994 
4995 
m68k_op_bclr_8_s_ai(void)4996 static void m68k_op_bclr_8_s_ai(void)
4997 {
4998   uint mask = 1 << (OPER_I_8() & 7);
4999   uint ea = EA_AY_AI_8();
5000   uint src = m68ki_read_8(ea);
5001 
5002   FLAG_Z = src & mask;
5003   m68ki_write_8(ea, src & ~mask);
5004 }
5005 
5006 
m68k_op_bclr_8_s_pi(void)5007 static void m68k_op_bclr_8_s_pi(void)
5008 {
5009   uint mask = 1 << (OPER_I_8() & 7);
5010   uint ea = EA_AY_PI_8();
5011   uint src = m68ki_read_8(ea);
5012 
5013   FLAG_Z = src & mask;
5014   m68ki_write_8(ea, src & ~mask);
5015 }
5016 
5017 
m68k_op_bclr_8_s_pi7(void)5018 static void m68k_op_bclr_8_s_pi7(void)
5019 {
5020   uint mask = 1 << (OPER_I_8() & 7);
5021   uint ea = EA_A7_PI_8();
5022   uint src = m68ki_read_8(ea);
5023 
5024   FLAG_Z = src & mask;
5025   m68ki_write_8(ea, src & ~mask);
5026 }
5027 
5028 
m68k_op_bclr_8_s_pd(void)5029 static void m68k_op_bclr_8_s_pd(void)
5030 {
5031   uint mask = 1 << (OPER_I_8() & 7);
5032   uint ea = EA_AY_PD_8();
5033   uint src = m68ki_read_8(ea);
5034 
5035   FLAG_Z = src & mask;
5036   m68ki_write_8(ea, src & ~mask);
5037 }
5038 
5039 
m68k_op_bclr_8_s_pd7(void)5040 static void m68k_op_bclr_8_s_pd7(void)
5041 {
5042   uint mask = 1 << (OPER_I_8() & 7);
5043   uint ea = EA_A7_PD_8();
5044   uint src = m68ki_read_8(ea);
5045 
5046   FLAG_Z = src & mask;
5047   m68ki_write_8(ea, src & ~mask);
5048 }
5049 
5050 
m68k_op_bclr_8_s_di(void)5051 static void m68k_op_bclr_8_s_di(void)
5052 {
5053   uint mask = 1 << (OPER_I_8() & 7);
5054   uint ea = EA_AY_DI_8();
5055   uint src = m68ki_read_8(ea);
5056 
5057   FLAG_Z = src & mask;
5058   m68ki_write_8(ea, src & ~mask);
5059 }
5060 
5061 
m68k_op_bclr_8_s_ix(void)5062 static void m68k_op_bclr_8_s_ix(void)
5063 {
5064   uint mask = 1 << (OPER_I_8() & 7);
5065   uint ea = EA_AY_IX_8();
5066   uint src = m68ki_read_8(ea);
5067 
5068   FLAG_Z = src & mask;
5069   m68ki_write_8(ea, src & ~mask);
5070 }
5071 
5072 
m68k_op_bclr_8_s_aw(void)5073 static void m68k_op_bclr_8_s_aw(void)
5074 {
5075   uint mask = 1 << (OPER_I_8() & 7);
5076   uint ea = EA_AW_8();
5077   uint src = m68ki_read_8(ea);
5078 
5079   FLAG_Z = src & mask;
5080   m68ki_write_8(ea, src & ~mask);
5081 }
5082 
5083 
m68k_op_bclr_8_s_al(void)5084 static void m68k_op_bclr_8_s_al(void)
5085 {
5086   uint mask = 1 << (OPER_I_8() & 7);
5087   uint ea = EA_AL_8();
5088   uint src = m68ki_read_8(ea);
5089 
5090   FLAG_Z = src & mask;
5091   m68ki_write_8(ea, src & ~mask);
5092 }
5093 
5094 
m68k_op_bra_8(void)5095 static void m68k_op_bra_8(void)
5096 {
5097   m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));
5098 }
5099 
5100 
m68k_op_bra_16(void)5101 static void m68k_op_bra_16(void)
5102 {
5103   uint offset = OPER_I_16();
5104   REG_PC -= 2;
5105   m68ki_branch_16(offset);
5106 }
5107 
5108 
m68k_op_bra_32(void)5109 static void m68k_op_bra_32(void)
5110 {
5111   m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));
5112 }
5113 
5114 
m68k_op_bset_32_r_d(void)5115 static void m68k_op_bset_32_r_d(void)
5116 {
5117   uint* r_dst = &DY;
5118   uint mask = 1 << (DX & 0x1f);
5119 
5120   FLAG_Z = *r_dst & mask;
5121   *r_dst |= mask;
5122 }
5123 
5124 
m68k_op_bset_8_r_ai(void)5125 static void m68k_op_bset_8_r_ai(void)
5126 {
5127   uint ea = EA_AY_AI_8();
5128   uint src = m68ki_read_8(ea);
5129   uint mask = 1 << (DX & 7);
5130 
5131   FLAG_Z = src & mask;
5132   m68ki_write_8(ea, src | mask);
5133 }
5134 
5135 
m68k_op_bset_8_r_pi(void)5136 static void m68k_op_bset_8_r_pi(void)
5137 {
5138   uint ea = EA_AY_PI_8();
5139   uint src = m68ki_read_8(ea);
5140   uint mask = 1 << (DX & 7);
5141 
5142   FLAG_Z = src & mask;
5143   m68ki_write_8(ea, src | mask);
5144 }
5145 
5146 
m68k_op_bset_8_r_pi7(void)5147 static void m68k_op_bset_8_r_pi7(void)
5148 {
5149   uint ea = EA_A7_PI_8();
5150   uint src = m68ki_read_8(ea);
5151   uint mask = 1 << (DX & 7);
5152 
5153   FLAG_Z = src & mask;
5154   m68ki_write_8(ea, src | mask);
5155 }
5156 
5157 
m68k_op_bset_8_r_pd(void)5158 static void m68k_op_bset_8_r_pd(void)
5159 {
5160   uint ea = EA_AY_PD_8();
5161   uint src = m68ki_read_8(ea);
5162   uint mask = 1 << (DX & 7);
5163 
5164   FLAG_Z = src & mask;
5165   m68ki_write_8(ea, src | mask);
5166 }
5167 
5168 
m68k_op_bset_8_r_pd7(void)5169 static void m68k_op_bset_8_r_pd7(void)
5170 {
5171   uint ea = EA_A7_PD_8();
5172   uint src = m68ki_read_8(ea);
5173   uint mask = 1 << (DX & 7);
5174 
5175   FLAG_Z = src & mask;
5176   m68ki_write_8(ea, src | mask);
5177 }
5178 
5179 
m68k_op_bset_8_r_di(void)5180 static void m68k_op_bset_8_r_di(void)
5181 {
5182   uint ea = EA_AY_DI_8();
5183   uint src = m68ki_read_8(ea);
5184   uint mask = 1 << (DX & 7);
5185 
5186   FLAG_Z = src & mask;
5187   m68ki_write_8(ea, src | mask);
5188 }
5189 
5190 
m68k_op_bset_8_r_ix(void)5191 static void m68k_op_bset_8_r_ix(void)
5192 {
5193   uint ea = EA_AY_IX_8();
5194   uint src = m68ki_read_8(ea);
5195   uint mask = 1 << (DX & 7);
5196 
5197   FLAG_Z = src & mask;
5198   m68ki_write_8(ea, src | mask);
5199 }
5200 
5201 
m68k_op_bset_8_r_aw(void)5202 static void m68k_op_bset_8_r_aw(void)
5203 {
5204   uint ea = EA_AW_8();
5205   uint src = m68ki_read_8(ea);
5206   uint mask = 1 << (DX & 7);
5207 
5208   FLAG_Z = src & mask;
5209   m68ki_write_8(ea, src | mask);
5210 }
5211 
5212 
m68k_op_bset_8_r_al(void)5213 static void m68k_op_bset_8_r_al(void)
5214 {
5215   uint ea = EA_AL_8();
5216   uint src = m68ki_read_8(ea);
5217   uint mask = 1 << (DX & 7);
5218 
5219   FLAG_Z = src & mask;
5220   m68ki_write_8(ea, src | mask);
5221 }
5222 
5223 
m68k_op_bset_32_s_d(void)5224 static void m68k_op_bset_32_s_d(void)
5225 {
5226   uint* r_dst = &DY;
5227   uint mask = 1 << (OPER_I_8() & 0x1f);
5228 
5229   FLAG_Z = *r_dst & mask;
5230   *r_dst |= mask;
5231 }
5232 
5233 
m68k_op_bset_8_s_ai(void)5234 static void m68k_op_bset_8_s_ai(void)
5235 {
5236   uint mask = 1 << (OPER_I_8() & 7);
5237   uint ea = EA_AY_AI_8();
5238   uint src = m68ki_read_8(ea);
5239 
5240   FLAG_Z = src & mask;
5241   m68ki_write_8(ea, src | mask);
5242 }
5243 
5244 
m68k_op_bset_8_s_pi(void)5245 static void m68k_op_bset_8_s_pi(void)
5246 {
5247   uint mask = 1 << (OPER_I_8() & 7);
5248   uint ea = EA_AY_PI_8();
5249   uint src = m68ki_read_8(ea);
5250 
5251   FLAG_Z = src & mask;
5252   m68ki_write_8(ea, src | mask);
5253 }
5254 
5255 
m68k_op_bset_8_s_pi7(void)5256 static void m68k_op_bset_8_s_pi7(void)
5257 {
5258   uint mask = 1 << (OPER_I_8() & 7);
5259   uint ea = EA_A7_PI_8();
5260   uint src = m68ki_read_8(ea);
5261 
5262   FLAG_Z = src & mask;
5263   m68ki_write_8(ea, src | mask);
5264 }
5265 
5266 
m68k_op_bset_8_s_pd(void)5267 static void m68k_op_bset_8_s_pd(void)
5268 {
5269   uint mask = 1 << (OPER_I_8() & 7);
5270   uint ea = EA_AY_PD_8();
5271   uint src = m68ki_read_8(ea);
5272 
5273   FLAG_Z = src & mask;
5274   m68ki_write_8(ea, src | mask);
5275 }
5276 
5277 
m68k_op_bset_8_s_pd7(void)5278 static void m68k_op_bset_8_s_pd7(void)
5279 {
5280   uint mask = 1 << (OPER_I_8() & 7);
5281   uint ea = EA_A7_PD_8();
5282   uint src = m68ki_read_8(ea);
5283 
5284   FLAG_Z = src & mask;
5285   m68ki_write_8(ea, src | mask);
5286 }
5287 
5288 
m68k_op_bset_8_s_di(void)5289 static void m68k_op_bset_8_s_di(void)
5290 {
5291   uint mask = 1 << (OPER_I_8() & 7);
5292   uint ea = EA_AY_DI_8();
5293   uint src = m68ki_read_8(ea);
5294 
5295   FLAG_Z = src & mask;
5296   m68ki_write_8(ea, src | mask);
5297 }
5298 
5299 
m68k_op_bset_8_s_ix(void)5300 static void m68k_op_bset_8_s_ix(void)
5301 {
5302   uint mask = 1 << (OPER_I_8() & 7);
5303   uint ea = EA_AY_IX_8();
5304   uint src = m68ki_read_8(ea);
5305 
5306   FLAG_Z = src & mask;
5307   m68ki_write_8(ea, src | mask);
5308 }
5309 
5310 
m68k_op_bset_8_s_aw(void)5311 static void m68k_op_bset_8_s_aw(void)
5312 {
5313   uint mask = 1 << (OPER_I_8() & 7);
5314   uint ea = EA_AW_8();
5315   uint src = m68ki_read_8(ea);
5316 
5317   FLAG_Z = src & mask;
5318   m68ki_write_8(ea, src | mask);
5319 }
5320 
5321 
m68k_op_bset_8_s_al(void)5322 static void m68k_op_bset_8_s_al(void)
5323 {
5324   uint mask = 1 << (OPER_I_8() & 7);
5325   uint ea = EA_AL_8();
5326   uint src = m68ki_read_8(ea);
5327 
5328   FLAG_Z = src & mask;
5329   m68ki_write_8(ea, src | mask);
5330 }
5331 
5332 
m68k_op_bsr_8(void)5333 static void m68k_op_bsr_8(void)
5334 {
5335   m68ki_push_32(REG_PC);
5336   m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));
5337 }
5338 
5339 
m68k_op_bsr_16(void)5340 static void m68k_op_bsr_16(void)
5341 {
5342   uint offset = OPER_I_16();
5343   m68ki_push_32(REG_PC);
5344   REG_PC -= 2;
5345   m68ki_branch_16(offset);
5346 }
5347 
5348 
m68k_op_bsr_32(void)5349 static void m68k_op_bsr_32(void)
5350 {
5351   m68ki_push_32(REG_PC);
5352   m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));
5353 }
5354 
5355 
m68k_op_btst_32_r_d(void)5356 static void m68k_op_btst_32_r_d(void)
5357 {
5358   FLAG_Z = DY & (1 << (DX & 0x1f));
5359 }
5360 
5361 
m68k_op_btst_8_r_ai(void)5362 static void m68k_op_btst_8_r_ai(void)
5363 {
5364   FLAG_Z = OPER_AY_AI_8() & (1 << (DX & 7));
5365 }
5366 
5367 
m68k_op_btst_8_r_pi(void)5368 static void m68k_op_btst_8_r_pi(void)
5369 {
5370   FLAG_Z = OPER_AY_PI_8() & (1 << (DX & 7));
5371 }
5372 
5373 
m68k_op_btst_8_r_pi7(void)5374 static void m68k_op_btst_8_r_pi7(void)
5375 {
5376   FLAG_Z = OPER_A7_PI_8() & (1 << (DX & 7));
5377 }
5378 
5379 
m68k_op_btst_8_r_pd(void)5380 static void m68k_op_btst_8_r_pd(void)
5381 {
5382   FLAG_Z = OPER_AY_PD_8() & (1 << (DX & 7));
5383 }
5384 
5385 
m68k_op_btst_8_r_pd7(void)5386 static void m68k_op_btst_8_r_pd7(void)
5387 {
5388   FLAG_Z = OPER_A7_PD_8() & (1 << (DX & 7));
5389 }
5390 
5391 
m68k_op_btst_8_r_di(void)5392 static void m68k_op_btst_8_r_di(void)
5393 {
5394   FLAG_Z = OPER_AY_DI_8() & (1 << (DX & 7));
5395 }
5396 
5397 
m68k_op_btst_8_r_ix(void)5398 static void m68k_op_btst_8_r_ix(void)
5399 {
5400   FLAG_Z = OPER_AY_IX_8() & (1 << (DX & 7));
5401 }
5402 
5403 
m68k_op_btst_8_r_aw(void)5404 static void m68k_op_btst_8_r_aw(void)
5405 {
5406   FLAG_Z = OPER_AW_8() & (1 << (DX & 7));
5407 }
5408 
5409 
m68k_op_btst_8_r_al(void)5410 static void m68k_op_btst_8_r_al(void)
5411 {
5412   FLAG_Z = OPER_AL_8() & (1 << (DX & 7));
5413 }
5414 
5415 
m68k_op_btst_8_r_pcdi(void)5416 static void m68k_op_btst_8_r_pcdi(void)
5417 {
5418   FLAG_Z = OPER_PCDI_8() & (1 << (DX & 7));
5419 }
5420 
5421 
m68k_op_btst_8_r_pcix(void)5422 static void m68k_op_btst_8_r_pcix(void)
5423 {
5424   FLAG_Z = OPER_PCIX_8() & (1 << (DX & 7));
5425 }
5426 
5427 
m68k_op_btst_8_r_i(void)5428 static void m68k_op_btst_8_r_i(void)
5429 {
5430   FLAG_Z = OPER_I_8() & (1 << (DX & 7));
5431 }
5432 
5433 
m68k_op_btst_32_s_d(void)5434 static void m68k_op_btst_32_s_d(void)
5435 {
5436   FLAG_Z = DY & (1 << (OPER_I_8() & 0x1f));
5437 }
5438 
5439 
m68k_op_btst_8_s_ai(void)5440 static void m68k_op_btst_8_s_ai(void)
5441 {
5442   uint bit = OPER_I_8() & 7;
5443 
5444   FLAG_Z = OPER_AY_AI_8() & (1 << bit);
5445 }
5446 
5447 
m68k_op_btst_8_s_pi(void)5448 static void m68k_op_btst_8_s_pi(void)
5449 {
5450   uint bit = OPER_I_8() & 7;
5451 
5452   FLAG_Z = OPER_AY_PI_8() & (1 << bit);
5453 }
5454 
5455 
m68k_op_btst_8_s_pi7(void)5456 static void m68k_op_btst_8_s_pi7(void)
5457 {
5458   uint bit = OPER_I_8() & 7;
5459 
5460   FLAG_Z = OPER_A7_PI_8() & (1 << bit);
5461 }
5462 
5463 
m68k_op_btst_8_s_pd(void)5464 static void m68k_op_btst_8_s_pd(void)
5465 {
5466   uint bit = OPER_I_8() & 7;
5467 
5468   FLAG_Z = OPER_AY_PD_8() & (1 << bit);
5469 }
5470 
5471 
m68k_op_btst_8_s_pd7(void)5472 static void m68k_op_btst_8_s_pd7(void)
5473 {
5474   uint bit = OPER_I_8() & 7;
5475 
5476   FLAG_Z = OPER_A7_PD_8() & (1 << bit);
5477 }
5478 
5479 
m68k_op_btst_8_s_di(void)5480 static void m68k_op_btst_8_s_di(void)
5481 {
5482   uint bit = OPER_I_8() & 7;
5483 
5484   FLAG_Z = OPER_AY_DI_8() & (1 << bit);
5485 }
5486 
5487 
m68k_op_btst_8_s_ix(void)5488 static void m68k_op_btst_8_s_ix(void)
5489 {
5490   uint bit = OPER_I_8() & 7;
5491 
5492   FLAG_Z = OPER_AY_IX_8() & (1 << bit);
5493 }
5494 
5495 
m68k_op_btst_8_s_aw(void)5496 static void m68k_op_btst_8_s_aw(void)
5497 {
5498   uint bit = OPER_I_8() & 7;
5499 
5500   FLAG_Z = OPER_AW_8() & (1 << bit);
5501 }
5502 
5503 
m68k_op_btst_8_s_al(void)5504 static void m68k_op_btst_8_s_al(void)
5505 {
5506   uint bit = OPER_I_8() & 7;
5507 
5508   FLAG_Z = OPER_AL_8() & (1 << bit);
5509 }
5510 
5511 
m68k_op_btst_8_s_pcdi(void)5512 static void m68k_op_btst_8_s_pcdi(void)
5513 {
5514   uint bit = OPER_I_8() & 7;
5515 
5516   FLAG_Z = OPER_PCDI_8() & (1 << bit);
5517 }
5518 
5519 
m68k_op_btst_8_s_pcix(void)5520 static void m68k_op_btst_8_s_pcix(void)
5521 {
5522   uint bit = OPER_I_8() & 7;
5523 
5524   FLAG_Z = OPER_PCIX_8() & (1 << bit);
5525 }
5526 
5527 
m68k_op_chk_16_d(void)5528 static void m68k_op_chk_16_d(void)
5529 {
5530   sint src = MAKE_INT_16(DX);
5531   sint bound = MAKE_INT_16(DY);
5532 
5533   FLAG_Z = ZFLAG_16(src); /* Undocumented */
5534   FLAG_V = VFLAG_CLEAR;   /* Undocumented */
5535   FLAG_C = CFLAG_CLEAR;   /* Undocumented */
5536 
5537   if(src >= 0 && src <= bound)
5538   {
5539     return;
5540   }
5541   FLAG_N = (src < 0)<<7;
5542   m68ki_exception_trap(EXCEPTION_CHK);
5543 }
5544 
5545 
m68k_op_chk_16_ai(void)5546 static void m68k_op_chk_16_ai(void)
5547 {
5548   sint src = MAKE_INT_16(DX);
5549   sint bound = MAKE_INT_16(OPER_AY_AI_16());
5550 
5551   FLAG_Z = ZFLAG_16(src); /* Undocumented */
5552   FLAG_V = VFLAG_CLEAR;   /* Undocumented */
5553   FLAG_C = CFLAG_CLEAR;   /* Undocumented */
5554 
5555   if(src >= 0 && src <= bound)
5556   {
5557     return;
5558   }
5559   FLAG_N = (src < 0)<<7;
5560   m68ki_exception_trap(EXCEPTION_CHK);
5561 }
5562 
5563 
m68k_op_chk_16_pi(void)5564 static void m68k_op_chk_16_pi(void)
5565 {
5566   sint src = MAKE_INT_16(DX);
5567   sint bound = MAKE_INT_16(OPER_AY_PI_16());
5568 
5569   FLAG_Z = ZFLAG_16(src); /* Undocumented */
5570   FLAG_V = VFLAG_CLEAR;   /* Undocumented */
5571   FLAG_C = CFLAG_CLEAR;   /* Undocumented */
5572 
5573   if(src >= 0 && src <= bound)
5574   {
5575     return;
5576   }
5577   FLAG_N = (src < 0)<<7;
5578   m68ki_exception_trap(EXCEPTION_CHK);
5579 }
5580 
5581 
m68k_op_chk_16_pd(void)5582 static void m68k_op_chk_16_pd(void)
5583 {
5584   sint src = MAKE_INT_16(DX);
5585   sint bound = MAKE_INT_16(OPER_AY_PD_16());
5586 
5587   FLAG_Z = ZFLAG_16(src); /* Undocumented */
5588   FLAG_V = VFLAG_CLEAR;   /* Undocumented */
5589   FLAG_C = CFLAG_CLEAR;   /* Undocumented */
5590 
5591   if(src >= 0 && src <= bound)
5592   {
5593     return;
5594   }
5595   FLAG_N = (src < 0)<<7;
5596   m68ki_exception_trap(EXCEPTION_CHK);
5597 }
5598 
5599 
m68k_op_chk_16_di(void)5600 static void m68k_op_chk_16_di(void)
5601 {
5602   sint src = MAKE_INT_16(DX);
5603   sint bound = MAKE_INT_16(OPER_AY_DI_16());
5604 
5605   FLAG_Z = ZFLAG_16(src); /* Undocumented */
5606   FLAG_V = VFLAG_CLEAR;   /* Undocumented */
5607   FLAG_C = CFLAG_CLEAR;   /* Undocumented */
5608 
5609   if(src >= 0 && src <= bound)
5610   {
5611     return;
5612   }
5613   FLAG_N = (src < 0)<<7;
5614   m68ki_exception_trap(EXCEPTION_CHK);
5615 }
5616 
5617 
m68k_op_chk_16_ix(void)5618 static void m68k_op_chk_16_ix(void)
5619 {
5620   sint src = MAKE_INT_16(DX);
5621   sint bound = MAKE_INT_16(OPER_AY_IX_16());
5622 
5623   FLAG_Z = ZFLAG_16(src); /* Undocumented */
5624   FLAG_V = VFLAG_CLEAR;   /* Undocumented */
5625   FLAG_C = CFLAG_CLEAR;   /* Undocumented */
5626 
5627   if(src >= 0 && src <= bound)
5628   {
5629     return;
5630   }
5631   FLAG_N = (src < 0)<<7;
5632   m68ki_exception_trap(EXCEPTION_CHK);
5633 }
5634 
5635 
m68k_op_chk_16_aw(void)5636 static void m68k_op_chk_16_aw(void)
5637 {
5638   sint src = MAKE_INT_16(DX);
5639   sint bound = MAKE_INT_16(OPER_AW_16());
5640 
5641   FLAG_Z = ZFLAG_16(src); /* Undocumented */
5642   FLAG_V = VFLAG_CLEAR;   /* Undocumented */
5643   FLAG_C = CFLAG_CLEAR;   /* Undocumented */
5644 
5645   if(src >= 0 && src <= bound)
5646   {
5647     return;
5648   }
5649   FLAG_N = (src < 0)<<7;
5650   m68ki_exception_trap(EXCEPTION_CHK);
5651 }
5652 
5653 
m68k_op_chk_16_al(void)5654 static void m68k_op_chk_16_al(void)
5655 {
5656   sint src = MAKE_INT_16(DX);
5657   sint bound = MAKE_INT_16(OPER_AL_16());
5658 
5659   FLAG_Z = ZFLAG_16(src); /* Undocumented */
5660   FLAG_V = VFLAG_CLEAR;   /* Undocumented */
5661   FLAG_C = CFLAG_CLEAR;   /* Undocumented */
5662 
5663   if(src >= 0 && src <= bound)
5664   {
5665     return;
5666   }
5667   FLAG_N = (src < 0)<<7;
5668   m68ki_exception_trap(EXCEPTION_CHK);
5669 }
5670 
5671 
m68k_op_chk_16_pcdi(void)5672 static void m68k_op_chk_16_pcdi(void)
5673 {
5674   sint src = MAKE_INT_16(DX);
5675   sint bound = MAKE_INT_16(OPER_PCDI_16());
5676 
5677   FLAG_Z = ZFLAG_16(src); /* Undocumented */
5678   FLAG_V = VFLAG_CLEAR;   /* Undocumented */
5679   FLAG_C = CFLAG_CLEAR;   /* Undocumented */
5680 
5681   if(src >= 0 && src <= bound)
5682   {
5683     return;
5684   }
5685   FLAG_N = (src < 0)<<7;
5686   m68ki_exception_trap(EXCEPTION_CHK);
5687 }
5688 
5689 
m68k_op_chk_16_pcix(void)5690 static void m68k_op_chk_16_pcix(void)
5691 {
5692   sint src = MAKE_INT_16(DX);
5693   sint bound = MAKE_INT_16(OPER_PCIX_16());
5694 
5695   FLAG_Z = ZFLAG_16(src); /* Undocumented */
5696   FLAG_V = VFLAG_CLEAR;   /* Undocumented */
5697   FLAG_C = CFLAG_CLEAR;   /* Undocumented */
5698 
5699   if(src >= 0 && src <= bound)
5700   {
5701     return;
5702   }
5703   FLAG_N = (src < 0)<<7;
5704   m68ki_exception_trap(EXCEPTION_CHK);
5705 }
5706 
5707 
m68k_op_chk_16_i(void)5708 static void m68k_op_chk_16_i(void)
5709 {
5710   sint src = MAKE_INT_16(DX);
5711   sint bound = MAKE_INT_16(OPER_I_16());
5712 
5713   FLAG_Z = ZFLAG_16(src); /* Undocumented */
5714   FLAG_V = VFLAG_CLEAR;   /* Undocumented */
5715   FLAG_C = CFLAG_CLEAR;   /* Undocumented */
5716 
5717   if(src >= 0 && src <= bound)
5718   {
5719     return;
5720   }
5721   FLAG_N = (src < 0)<<7;
5722   m68ki_exception_trap(EXCEPTION_CHK);
5723 }
5724 
5725 
m68k_op_clr_8_d(void)5726 static void m68k_op_clr_8_d(void)
5727 {
5728   DY &= 0xffffff00;
5729 
5730   FLAG_N = NFLAG_CLEAR;
5731   FLAG_V = VFLAG_CLEAR;
5732   FLAG_C = CFLAG_CLEAR;
5733   FLAG_Z = ZFLAG_SET;
5734 }
5735 
5736 
m68k_op_clr_8_ai(void)5737 static void m68k_op_clr_8_ai(void)
5738 {
5739   m68ki_write_8(EA_AY_AI_8(), 0);
5740 
5741   FLAG_N = NFLAG_CLEAR;
5742   FLAG_V = VFLAG_CLEAR;
5743   FLAG_C = CFLAG_CLEAR;
5744   FLAG_Z = ZFLAG_SET;
5745 }
5746 
5747 
m68k_op_clr_8_pi(void)5748 static void m68k_op_clr_8_pi(void)
5749 {
5750   m68ki_write_8(EA_AY_PI_8(), 0);
5751 
5752   FLAG_N = NFLAG_CLEAR;
5753   FLAG_V = VFLAG_CLEAR;
5754   FLAG_C = CFLAG_CLEAR;
5755   FLAG_Z = ZFLAG_SET;
5756 }
5757 
5758 
m68k_op_clr_8_pi7(void)5759 static void m68k_op_clr_8_pi7(void)
5760 {
5761   m68ki_write_8(EA_A7_PI_8(), 0);
5762 
5763   FLAG_N = NFLAG_CLEAR;
5764   FLAG_V = VFLAG_CLEAR;
5765   FLAG_C = CFLAG_CLEAR;
5766   FLAG_Z = ZFLAG_SET;
5767 }
5768 
5769 
m68k_op_clr_8_pd(void)5770 static void m68k_op_clr_8_pd(void)
5771 {
5772   m68ki_write_8(EA_AY_PD_8(), 0);
5773 
5774   FLAG_N = NFLAG_CLEAR;
5775   FLAG_V = VFLAG_CLEAR;
5776   FLAG_C = CFLAG_CLEAR;
5777   FLAG_Z = ZFLAG_SET;
5778 }
5779 
5780 
m68k_op_clr_8_pd7(void)5781 static void m68k_op_clr_8_pd7(void)
5782 {
5783   m68ki_write_8(EA_A7_PD_8(), 0);
5784 
5785   FLAG_N = NFLAG_CLEAR;
5786   FLAG_V = VFLAG_CLEAR;
5787   FLAG_C = CFLAG_CLEAR;
5788   FLAG_Z = ZFLAG_SET;
5789 }
5790 
5791 
m68k_op_clr_8_di(void)5792 static void m68k_op_clr_8_di(void)
5793 {
5794   m68ki_write_8(EA_AY_DI_8(), 0);
5795 
5796   FLAG_N = NFLAG_CLEAR;
5797   FLAG_V = VFLAG_CLEAR;
5798   FLAG_C = CFLAG_CLEAR;
5799   FLAG_Z = ZFLAG_SET;
5800 }
5801 
5802 
m68k_op_clr_8_ix(void)5803 static void m68k_op_clr_8_ix(void)
5804 {
5805   m68ki_write_8(EA_AY_IX_8(), 0);
5806 
5807   FLAG_N = NFLAG_CLEAR;
5808   FLAG_V = VFLAG_CLEAR;
5809   FLAG_C = CFLAG_CLEAR;
5810   FLAG_Z = ZFLAG_SET;
5811 }
5812 
5813 
m68k_op_clr_8_aw(void)5814 static void m68k_op_clr_8_aw(void)
5815 {
5816   m68ki_write_8(EA_AW_8(), 0);
5817 
5818   FLAG_N = NFLAG_CLEAR;
5819   FLAG_V = VFLAG_CLEAR;
5820   FLAG_C = CFLAG_CLEAR;
5821   FLAG_Z = ZFLAG_SET;
5822 }
5823 
5824 
m68k_op_clr_8_al(void)5825 static void m68k_op_clr_8_al(void)
5826 {
5827   m68ki_write_8(EA_AL_8(), 0);
5828 
5829   FLAG_N = NFLAG_CLEAR;
5830   FLAG_V = VFLAG_CLEAR;
5831   FLAG_C = CFLAG_CLEAR;
5832   FLAG_Z = ZFLAG_SET;
5833 }
5834 
5835 
m68k_op_clr_16_d(void)5836 static void m68k_op_clr_16_d(void)
5837 {
5838   DY &= 0xffff0000;
5839 
5840   FLAG_N = NFLAG_CLEAR;
5841   FLAG_V = VFLAG_CLEAR;
5842   FLAG_C = CFLAG_CLEAR;
5843   FLAG_Z = ZFLAG_SET;
5844 }
5845 
5846 
m68k_op_clr_16_ai(void)5847 static void m68k_op_clr_16_ai(void)
5848 {
5849   m68ki_write_16(EA_AY_AI_16(), 0);
5850 
5851   FLAG_N = NFLAG_CLEAR;
5852   FLAG_V = VFLAG_CLEAR;
5853   FLAG_C = CFLAG_CLEAR;
5854   FLAG_Z = ZFLAG_SET;
5855 }
5856 
5857 
m68k_op_clr_16_pi(void)5858 static void m68k_op_clr_16_pi(void)
5859 {
5860   m68ki_write_16(EA_AY_PI_16(), 0);
5861 
5862   FLAG_N = NFLAG_CLEAR;
5863   FLAG_V = VFLAG_CLEAR;
5864   FLAG_C = CFLAG_CLEAR;
5865   FLAG_Z = ZFLAG_SET;
5866 }
5867 
5868 
m68k_op_clr_16_pd(void)5869 static void m68k_op_clr_16_pd(void)
5870 {
5871   m68ki_write_16(EA_AY_PD_16(), 0);
5872 
5873   FLAG_N = NFLAG_CLEAR;
5874   FLAG_V = VFLAG_CLEAR;
5875   FLAG_C = CFLAG_CLEAR;
5876   FLAG_Z = ZFLAG_SET;
5877 }
5878 
5879 
m68k_op_clr_16_di(void)5880 static void m68k_op_clr_16_di(void)
5881 {
5882   m68ki_write_16(EA_AY_DI_16(), 0);
5883 
5884   FLAG_N = NFLAG_CLEAR;
5885   FLAG_V = VFLAG_CLEAR;
5886   FLAG_C = CFLAG_CLEAR;
5887   FLAG_Z = ZFLAG_SET;
5888 }
5889 
5890 
m68k_op_clr_16_ix(void)5891 static void m68k_op_clr_16_ix(void)
5892 {
5893   m68ki_write_16(EA_AY_IX_16(), 0);
5894 
5895   FLAG_N = NFLAG_CLEAR;
5896   FLAG_V = VFLAG_CLEAR;
5897   FLAG_C = CFLAG_CLEAR;
5898   FLAG_Z = ZFLAG_SET;
5899 }
5900 
5901 
m68k_op_clr_16_aw(void)5902 static void m68k_op_clr_16_aw(void)
5903 {
5904   m68ki_write_16(EA_AW_16(), 0);
5905 
5906   FLAG_N = NFLAG_CLEAR;
5907   FLAG_V = VFLAG_CLEAR;
5908   FLAG_C = CFLAG_CLEAR;
5909   FLAG_Z = ZFLAG_SET;
5910 }
5911 
5912 
m68k_op_clr_16_al(void)5913 static void m68k_op_clr_16_al(void)
5914 {
5915   m68ki_write_16(EA_AL_16(), 0);
5916 
5917   FLAG_N = NFLAG_CLEAR;
5918   FLAG_V = VFLAG_CLEAR;
5919   FLAG_C = CFLAG_CLEAR;
5920   FLAG_Z = ZFLAG_SET;
5921 }
5922 
5923 
m68k_op_clr_32_d(void)5924 static void m68k_op_clr_32_d(void)
5925 {
5926   DY = 0;
5927 
5928   FLAG_N = NFLAG_CLEAR;
5929   FLAG_V = VFLAG_CLEAR;
5930   FLAG_C = CFLAG_CLEAR;
5931   FLAG_Z = ZFLAG_SET;
5932 }
5933 
5934 
m68k_op_clr_32_ai(void)5935 static void m68k_op_clr_32_ai(void)
5936 {
5937   m68ki_write_32(EA_AY_AI_32(), 0);
5938 
5939   FLAG_N = NFLAG_CLEAR;
5940   FLAG_V = VFLAG_CLEAR;
5941   FLAG_C = CFLAG_CLEAR;
5942   FLAG_Z = ZFLAG_SET;
5943 }
5944 
5945 
m68k_op_clr_32_pi(void)5946 static void m68k_op_clr_32_pi(void)
5947 {
5948   m68ki_write_32(EA_AY_PI_32(), 0);
5949 
5950   FLAG_N = NFLAG_CLEAR;
5951   FLAG_V = VFLAG_CLEAR;
5952   FLAG_C = CFLAG_CLEAR;
5953   FLAG_Z = ZFLAG_SET;
5954 }
5955 
5956 
m68k_op_clr_32_pd(void)5957 static void m68k_op_clr_32_pd(void)
5958 {
5959   m68ki_write_32(EA_AY_PD_32(), 0);
5960 
5961   FLAG_N = NFLAG_CLEAR;
5962   FLAG_V = VFLAG_CLEAR;
5963   FLAG_C = CFLAG_CLEAR;
5964   FLAG_Z = ZFLAG_SET;
5965 }
5966 
5967 
m68k_op_clr_32_di(void)5968 static void m68k_op_clr_32_di(void)
5969 {
5970   m68ki_write_32(EA_AY_DI_32(), 0);
5971 
5972   FLAG_N = NFLAG_CLEAR;
5973   FLAG_V = VFLAG_CLEAR;
5974   FLAG_C = CFLAG_CLEAR;
5975   FLAG_Z = ZFLAG_SET;
5976 }
5977 
5978 
m68k_op_clr_32_ix(void)5979 static void m68k_op_clr_32_ix(void)
5980 {
5981   m68ki_write_32(EA_AY_IX_32(), 0);
5982 
5983   FLAG_N = NFLAG_CLEAR;
5984   FLAG_V = VFLAG_CLEAR;
5985   FLAG_C = CFLAG_CLEAR;
5986   FLAG_Z = ZFLAG_SET;
5987 }
5988 
5989 
m68k_op_clr_32_aw(void)5990 static void m68k_op_clr_32_aw(void)
5991 {
5992   m68ki_write_32(EA_AW_32(), 0);
5993 
5994   FLAG_N = NFLAG_CLEAR;
5995   FLAG_V = VFLAG_CLEAR;
5996   FLAG_C = CFLAG_CLEAR;
5997   FLAG_Z = ZFLAG_SET;
5998 }
5999 
6000 
m68k_op_clr_32_al(void)6001 static void m68k_op_clr_32_al(void)
6002 {
6003   m68ki_write_32(EA_AL_32(), 0);
6004 
6005   FLAG_N = NFLAG_CLEAR;
6006   FLAG_V = VFLAG_CLEAR;
6007   FLAG_C = CFLAG_CLEAR;
6008   FLAG_Z = ZFLAG_SET;
6009 }
6010 
6011 
m68k_op_cmp_8_d(void)6012 static void m68k_op_cmp_8_d(void)
6013 {
6014   uint src = MASK_OUT_ABOVE_8(DY);
6015   uint dst = MASK_OUT_ABOVE_8(DX);
6016   uint res = dst - src;
6017 
6018   FLAG_N = NFLAG_8(res);
6019   FLAG_Z = MASK_OUT_ABOVE_8(res);
6020   FLAG_V = VFLAG_SUB_8(src, dst, res);
6021   FLAG_C = CFLAG_8(res);
6022 }
6023 
6024 
m68k_op_cmp_8_ai(void)6025 static void m68k_op_cmp_8_ai(void)
6026 {
6027   uint src = OPER_AY_AI_8();
6028   uint dst = MASK_OUT_ABOVE_8(DX);
6029   uint res = dst - src;
6030 
6031   FLAG_N = NFLAG_8(res);
6032   FLAG_Z = MASK_OUT_ABOVE_8(res);
6033   FLAG_V = VFLAG_SUB_8(src, dst, res);
6034   FLAG_C = CFLAG_8(res);
6035 }
6036 
6037 
m68k_op_cmp_8_pi(void)6038 static void m68k_op_cmp_8_pi(void)
6039 {
6040   uint src = OPER_AY_PI_8();
6041   uint dst = MASK_OUT_ABOVE_8(DX);
6042   uint res = dst - src;
6043 
6044   FLAG_N = NFLAG_8(res);
6045   FLAG_Z = MASK_OUT_ABOVE_8(res);
6046   FLAG_V = VFLAG_SUB_8(src, dst, res);
6047   FLAG_C = CFLAG_8(res);
6048 }
6049 
6050 
m68k_op_cmp_8_pi7(void)6051 static void m68k_op_cmp_8_pi7(void)
6052 {
6053   uint src = OPER_A7_PI_8();
6054   uint dst = MASK_OUT_ABOVE_8(DX);
6055   uint res = dst - src;
6056 
6057   FLAG_N = NFLAG_8(res);
6058   FLAG_Z = MASK_OUT_ABOVE_8(res);
6059   FLAG_V = VFLAG_SUB_8(src, dst, res);
6060   FLAG_C = CFLAG_8(res);
6061 }
6062 
6063 
m68k_op_cmp_8_pd(void)6064 static void m68k_op_cmp_8_pd(void)
6065 {
6066   uint src = OPER_AY_PD_8();
6067   uint dst = MASK_OUT_ABOVE_8(DX);
6068   uint res = dst - src;
6069 
6070   FLAG_N = NFLAG_8(res);
6071   FLAG_Z = MASK_OUT_ABOVE_8(res);
6072   FLAG_V = VFLAG_SUB_8(src, dst, res);
6073   FLAG_C = CFLAG_8(res);
6074 }
6075 
6076 
m68k_op_cmp_8_pd7(void)6077 static void m68k_op_cmp_8_pd7(void)
6078 {
6079   uint src = OPER_A7_PD_8();
6080   uint dst = MASK_OUT_ABOVE_8(DX);
6081   uint res = dst - src;
6082 
6083   FLAG_N = NFLAG_8(res);
6084   FLAG_Z = MASK_OUT_ABOVE_8(res);
6085   FLAG_V = VFLAG_SUB_8(src, dst, res);
6086   FLAG_C = CFLAG_8(res);
6087 }
6088 
6089 
m68k_op_cmp_8_di(void)6090 static void m68k_op_cmp_8_di(void)
6091 {
6092   uint src = OPER_AY_DI_8();
6093   uint dst = MASK_OUT_ABOVE_8(DX);
6094   uint res = dst - src;
6095 
6096   FLAG_N = NFLAG_8(res);
6097   FLAG_Z = MASK_OUT_ABOVE_8(res);
6098   FLAG_V = VFLAG_SUB_8(src, dst, res);
6099   FLAG_C = CFLAG_8(res);
6100 }
6101 
6102 
m68k_op_cmp_8_ix(void)6103 static void m68k_op_cmp_8_ix(void)
6104 {
6105   uint src = OPER_AY_IX_8();
6106   uint dst = MASK_OUT_ABOVE_8(DX);
6107   uint res = dst - src;
6108 
6109   FLAG_N = NFLAG_8(res);
6110   FLAG_Z = MASK_OUT_ABOVE_8(res);
6111   FLAG_V = VFLAG_SUB_8(src, dst, res);
6112   FLAG_C = CFLAG_8(res);
6113 }
6114 
6115 
m68k_op_cmp_8_aw(void)6116 static void m68k_op_cmp_8_aw(void)
6117 {
6118   uint src = OPER_AW_8();
6119   uint dst = MASK_OUT_ABOVE_8(DX);
6120   uint res = dst - src;
6121 
6122   FLAG_N = NFLAG_8(res);
6123   FLAG_Z = MASK_OUT_ABOVE_8(res);
6124   FLAG_V = VFLAG_SUB_8(src, dst, res);
6125   FLAG_C = CFLAG_8(res);
6126 }
6127 
6128 
m68k_op_cmp_8_al(void)6129 static void m68k_op_cmp_8_al(void)
6130 {
6131   uint src = OPER_AL_8();
6132   uint dst = MASK_OUT_ABOVE_8(DX);
6133   uint res = dst - src;
6134 
6135   FLAG_N = NFLAG_8(res);
6136   FLAG_Z = MASK_OUT_ABOVE_8(res);
6137   FLAG_V = VFLAG_SUB_8(src, dst, res);
6138   FLAG_C = CFLAG_8(res);
6139 }
6140 
6141 
m68k_op_cmp_8_pcdi(void)6142 static void m68k_op_cmp_8_pcdi(void)
6143 {
6144   uint src = OPER_PCDI_8();
6145   uint dst = MASK_OUT_ABOVE_8(DX);
6146   uint res = dst - src;
6147 
6148   FLAG_N = NFLAG_8(res);
6149   FLAG_Z = MASK_OUT_ABOVE_8(res);
6150   FLAG_V = VFLAG_SUB_8(src, dst, res);
6151   FLAG_C = CFLAG_8(res);
6152 }
6153 
6154 
m68k_op_cmp_8_pcix(void)6155 static void m68k_op_cmp_8_pcix(void)
6156 {
6157   uint src = OPER_PCIX_8();
6158   uint dst = MASK_OUT_ABOVE_8(DX);
6159   uint res = dst - src;
6160 
6161   FLAG_N = NFLAG_8(res);
6162   FLAG_Z = MASK_OUT_ABOVE_8(res);
6163   FLAG_V = VFLAG_SUB_8(src, dst, res);
6164   FLAG_C = CFLAG_8(res);
6165 }
6166 
6167 
m68k_op_cmp_8_i(void)6168 static void m68k_op_cmp_8_i(void)
6169 {
6170   uint src = OPER_I_8();
6171   uint dst = MASK_OUT_ABOVE_8(DX);
6172   uint res = dst - src;
6173 
6174   FLAG_N = NFLAG_8(res);
6175   FLAG_Z = MASK_OUT_ABOVE_8(res);
6176   FLAG_V = VFLAG_SUB_8(src, dst, res);
6177   FLAG_C = CFLAG_8(res);
6178 }
6179 
6180 
m68k_op_cmp_16_d(void)6181 static void m68k_op_cmp_16_d(void)
6182 {
6183   uint src = MASK_OUT_ABOVE_16(DY);
6184   uint dst = MASK_OUT_ABOVE_16(DX);
6185   uint res = dst - src;
6186 
6187   FLAG_N = NFLAG_16(res);
6188   FLAG_Z = MASK_OUT_ABOVE_16(res);
6189   FLAG_V = VFLAG_SUB_16(src, dst, res);
6190   FLAG_C = CFLAG_16(res);
6191 }
6192 
6193 
m68k_op_cmp_16_a(void)6194 static void m68k_op_cmp_16_a(void)
6195 {
6196   uint src = MASK_OUT_ABOVE_16(AY);
6197   uint dst = MASK_OUT_ABOVE_16(DX);
6198   uint res = dst - src;
6199 
6200   FLAG_N = NFLAG_16(res);
6201   FLAG_Z = MASK_OUT_ABOVE_16(res);
6202   FLAG_V = VFLAG_SUB_16(src, dst, res);
6203   FLAG_C = CFLAG_16(res);
6204 }
6205 
6206 
m68k_op_cmp_16_ai(void)6207 static void m68k_op_cmp_16_ai(void)
6208 {
6209   uint src = OPER_AY_AI_16();
6210   uint dst = MASK_OUT_ABOVE_16(DX);
6211   uint res = dst - src;
6212 
6213   FLAG_N = NFLAG_16(res);
6214   FLAG_Z = MASK_OUT_ABOVE_16(res);
6215   FLAG_V = VFLAG_SUB_16(src, dst, res);
6216   FLAG_C = CFLAG_16(res);
6217 }
6218 
6219 
m68k_op_cmp_16_pi(void)6220 static void m68k_op_cmp_16_pi(void)
6221 {
6222   uint src = OPER_AY_PI_16();
6223   uint dst = MASK_OUT_ABOVE_16(DX);
6224   uint res = dst - src;
6225 
6226   FLAG_N = NFLAG_16(res);
6227   FLAG_Z = MASK_OUT_ABOVE_16(res);
6228   FLAG_V = VFLAG_SUB_16(src, dst, res);
6229   FLAG_C = CFLAG_16(res);
6230 }
6231 
6232 
m68k_op_cmp_16_pd(void)6233 static void m68k_op_cmp_16_pd(void)
6234 {
6235   uint src = OPER_AY_PD_16();
6236   uint dst = MASK_OUT_ABOVE_16(DX);
6237   uint res = dst - src;
6238 
6239   FLAG_N = NFLAG_16(res);
6240   FLAG_Z = MASK_OUT_ABOVE_16(res);
6241   FLAG_V = VFLAG_SUB_16(src, dst, res);
6242   FLAG_C = CFLAG_16(res);
6243 }
6244 
6245 
m68k_op_cmp_16_di(void)6246 static void m68k_op_cmp_16_di(void)
6247 {
6248   uint src = OPER_AY_DI_16();
6249   uint dst = MASK_OUT_ABOVE_16(DX);
6250   uint res = dst - src;
6251 
6252   FLAG_N = NFLAG_16(res);
6253   FLAG_Z = MASK_OUT_ABOVE_16(res);
6254   FLAG_V = VFLAG_SUB_16(src, dst, res);
6255   FLAG_C = CFLAG_16(res);
6256 }
6257 
6258 
m68k_op_cmp_16_ix(void)6259 static void m68k_op_cmp_16_ix(void)
6260 {
6261   uint src = OPER_AY_IX_16();
6262   uint dst = MASK_OUT_ABOVE_16(DX);
6263   uint res = dst - src;
6264 
6265   FLAG_N = NFLAG_16(res);
6266   FLAG_Z = MASK_OUT_ABOVE_16(res);
6267   FLAG_V = VFLAG_SUB_16(src, dst, res);
6268   FLAG_C = CFLAG_16(res);
6269 }
6270 
6271 
m68k_op_cmp_16_aw(void)6272 static void m68k_op_cmp_16_aw(void)
6273 {
6274   uint src = OPER_AW_16();
6275   uint dst = MASK_OUT_ABOVE_16(DX);
6276   uint res = dst - src;
6277 
6278   FLAG_N = NFLAG_16(res);
6279   FLAG_Z = MASK_OUT_ABOVE_16(res);
6280   FLAG_V = VFLAG_SUB_16(src, dst, res);
6281   FLAG_C = CFLAG_16(res);
6282 }
6283 
6284 
m68k_op_cmp_16_al(void)6285 static void m68k_op_cmp_16_al(void)
6286 {
6287   uint src = OPER_AL_16();
6288   uint dst = MASK_OUT_ABOVE_16(DX);
6289   uint res = dst - src;
6290 
6291   FLAG_N = NFLAG_16(res);
6292   FLAG_Z = MASK_OUT_ABOVE_16(res);
6293   FLAG_V = VFLAG_SUB_16(src, dst, res);
6294   FLAG_C = CFLAG_16(res);
6295 }
6296 
6297 
m68k_op_cmp_16_pcdi(void)6298 static void m68k_op_cmp_16_pcdi(void)
6299 {
6300   uint src = OPER_PCDI_16();
6301   uint dst = MASK_OUT_ABOVE_16(DX);
6302   uint res = dst - src;
6303 
6304   FLAG_N = NFLAG_16(res);
6305   FLAG_Z = MASK_OUT_ABOVE_16(res);
6306   FLAG_V = VFLAG_SUB_16(src, dst, res);
6307   FLAG_C = CFLAG_16(res);
6308 }
6309 
6310 
m68k_op_cmp_16_pcix(void)6311 static void m68k_op_cmp_16_pcix(void)
6312 {
6313   uint src = OPER_PCIX_16();
6314   uint dst = MASK_OUT_ABOVE_16(DX);
6315   uint res = dst - src;
6316 
6317   FLAG_N = NFLAG_16(res);
6318   FLAG_Z = MASK_OUT_ABOVE_16(res);
6319   FLAG_V = VFLAG_SUB_16(src, dst, res);
6320   FLAG_C = CFLAG_16(res);
6321 }
6322 
6323 
m68k_op_cmp_16_i(void)6324 static void m68k_op_cmp_16_i(void)
6325 {
6326   uint src = OPER_I_16();
6327   uint dst = MASK_OUT_ABOVE_16(DX);
6328   uint res = dst - src;
6329 
6330   FLAG_N = NFLAG_16(res);
6331   FLAG_Z = MASK_OUT_ABOVE_16(res);
6332   FLAG_V = VFLAG_SUB_16(src, dst, res);
6333   FLAG_C = CFLAG_16(res);
6334 }
6335 
6336 
m68k_op_cmp_32_d(void)6337 static void m68k_op_cmp_32_d(void)
6338 {
6339   uint src = DY;
6340   uint dst = DX;
6341   uint res = dst - src;
6342 
6343   FLAG_N = NFLAG_32(res);
6344   FLAG_Z = MASK_OUT_ABOVE_32(res);
6345   FLAG_V = VFLAG_SUB_32(src, dst, res);
6346   FLAG_C = CFLAG_SUB_32(src, dst, res);
6347 }
6348 
6349 
m68k_op_cmp_32_a(void)6350 static void m68k_op_cmp_32_a(void)
6351 {
6352   uint src = AY;
6353   uint dst = DX;
6354   uint res = dst - src;
6355 
6356   FLAG_N = NFLAG_32(res);
6357   FLAG_Z = MASK_OUT_ABOVE_32(res);
6358   FLAG_V = VFLAG_SUB_32(src, dst, res);
6359   FLAG_C = CFLAG_SUB_32(src, dst, res);
6360 }
6361 
6362 
m68k_op_cmp_32_ai(void)6363 static void m68k_op_cmp_32_ai(void)
6364 {
6365   uint src = OPER_AY_AI_32();
6366   uint dst = DX;
6367   uint res = dst - src;
6368 
6369   FLAG_N = NFLAG_32(res);
6370   FLAG_Z = MASK_OUT_ABOVE_32(res);
6371   FLAG_V = VFLAG_SUB_32(src, dst, res);
6372   FLAG_C = CFLAG_SUB_32(src, dst, res);
6373 }
6374 
6375 
m68k_op_cmp_32_pi(void)6376 static void m68k_op_cmp_32_pi(void)
6377 {
6378   uint src = OPER_AY_PI_32();
6379   uint dst = DX;
6380   uint res = dst - src;
6381 
6382   FLAG_N = NFLAG_32(res);
6383   FLAG_Z = MASK_OUT_ABOVE_32(res);
6384   FLAG_V = VFLAG_SUB_32(src, dst, res);
6385   FLAG_C = CFLAG_SUB_32(src, dst, res);
6386 }
6387 
6388 
m68k_op_cmp_32_pd(void)6389 static void m68k_op_cmp_32_pd(void)
6390 {
6391   uint src = OPER_AY_PD_32();
6392   uint dst = DX;
6393   uint res = dst - src;
6394 
6395   FLAG_N = NFLAG_32(res);
6396   FLAG_Z = MASK_OUT_ABOVE_32(res);
6397   FLAG_V = VFLAG_SUB_32(src, dst, res);
6398   FLAG_C = CFLAG_SUB_32(src, dst, res);
6399 }
6400 
6401 
m68k_op_cmp_32_di(void)6402 static void m68k_op_cmp_32_di(void)
6403 {
6404   uint src = OPER_AY_DI_32();
6405   uint dst = DX;
6406   uint res = dst - src;
6407 
6408   FLAG_N = NFLAG_32(res);
6409   FLAG_Z = MASK_OUT_ABOVE_32(res);
6410   FLAG_V = VFLAG_SUB_32(src, dst, res);
6411   FLAG_C = CFLAG_SUB_32(src, dst, res);
6412 }
6413 
6414 
m68k_op_cmp_32_ix(void)6415 static void m68k_op_cmp_32_ix(void)
6416 {
6417   uint src = OPER_AY_IX_32();
6418   uint dst = DX;
6419   uint res = dst - src;
6420 
6421   FLAG_N = NFLAG_32(res);
6422   FLAG_Z = MASK_OUT_ABOVE_32(res);
6423   FLAG_V = VFLAG_SUB_32(src, dst, res);
6424   FLAG_C = CFLAG_SUB_32(src, dst, res);
6425 }
6426 
6427 
m68k_op_cmp_32_aw(void)6428 static void m68k_op_cmp_32_aw(void)
6429 {
6430   uint src = OPER_AW_32();
6431   uint dst = DX;
6432   uint res = dst - src;
6433 
6434   FLAG_N = NFLAG_32(res);
6435   FLAG_Z = MASK_OUT_ABOVE_32(res);
6436   FLAG_V = VFLAG_SUB_32(src, dst, res);
6437   FLAG_C = CFLAG_SUB_32(src, dst, res);
6438 }
6439 
6440 
m68k_op_cmp_32_al(void)6441 static void m68k_op_cmp_32_al(void)
6442 {
6443   uint src = OPER_AL_32();
6444   uint dst = DX;
6445   uint res = dst - src;
6446 
6447   FLAG_N = NFLAG_32(res);
6448   FLAG_Z = MASK_OUT_ABOVE_32(res);
6449   FLAG_V = VFLAG_SUB_32(src, dst, res);
6450   FLAG_C = CFLAG_SUB_32(src, dst, res);
6451 }
6452 
6453 
m68k_op_cmp_32_pcdi(void)6454 static void m68k_op_cmp_32_pcdi(void)
6455 {
6456   uint src = OPER_PCDI_32();
6457   uint dst = DX;
6458   uint res = dst - src;
6459 
6460   FLAG_N = NFLAG_32(res);
6461   FLAG_Z = MASK_OUT_ABOVE_32(res);
6462   FLAG_V = VFLAG_SUB_32(src, dst, res);
6463   FLAG_C = CFLAG_SUB_32(src, dst, res);
6464 }
6465 
6466 
m68k_op_cmp_32_pcix(void)6467 static void m68k_op_cmp_32_pcix(void)
6468 {
6469   uint src = OPER_PCIX_32();
6470   uint dst = DX;
6471   uint res = dst - src;
6472 
6473   FLAG_N = NFLAG_32(res);
6474   FLAG_Z = MASK_OUT_ABOVE_32(res);
6475   FLAG_V = VFLAG_SUB_32(src, dst, res);
6476   FLAG_C = CFLAG_SUB_32(src, dst, res);
6477 }
6478 
6479 
m68k_op_cmp_32_i(void)6480 static void m68k_op_cmp_32_i(void)
6481 {
6482   uint src = OPER_I_32();
6483   uint dst = DX;
6484   uint res = dst - src;
6485 
6486   FLAG_N = NFLAG_32(res);
6487   FLAG_Z = MASK_OUT_ABOVE_32(res);
6488   FLAG_V = VFLAG_SUB_32(src, dst, res);
6489   FLAG_C = CFLAG_SUB_32(src, dst, res);
6490 }
6491 
6492 
m68k_op_cmpa_16_d(void)6493 static void m68k_op_cmpa_16_d(void)
6494 {
6495   uint src = MAKE_INT_16(DY);
6496   uint dst = AX;
6497   uint res = dst - src;
6498 
6499   FLAG_N = NFLAG_32(res);
6500   FLAG_Z = MASK_OUT_ABOVE_32(res);
6501   FLAG_V = VFLAG_SUB_32(src, dst, res);
6502   FLAG_C = CFLAG_SUB_32(src, dst, res);
6503 }
6504 
6505 
m68k_op_cmpa_16_a(void)6506 static void m68k_op_cmpa_16_a(void)
6507 {
6508   uint src = MAKE_INT_16(AY);
6509   uint dst = AX;
6510   uint res = dst - src;
6511 
6512   FLAG_N = NFLAG_32(res);
6513   FLAG_Z = MASK_OUT_ABOVE_32(res);
6514   FLAG_V = VFLAG_SUB_32(src, dst, res);
6515   FLAG_C = CFLAG_SUB_32(src, dst, res);
6516 }
6517 
6518 
m68k_op_cmpa_16_ai(void)6519 static void m68k_op_cmpa_16_ai(void)
6520 {
6521   uint src = MAKE_INT_16(OPER_AY_AI_16());
6522   uint dst = AX;
6523   uint res = dst - src;
6524 
6525   FLAG_N = NFLAG_32(res);
6526   FLAG_Z = MASK_OUT_ABOVE_32(res);
6527   FLAG_V = VFLAG_SUB_32(src, dst, res);
6528   FLAG_C = CFLAG_SUB_32(src, dst, res);
6529 }
6530 
6531 
m68k_op_cmpa_16_pi(void)6532 static void m68k_op_cmpa_16_pi(void)
6533 {
6534   uint src = MAKE_INT_16(OPER_AY_PI_16());
6535   uint dst = AX;
6536   uint res = dst - src;
6537 
6538   FLAG_N = NFLAG_32(res);
6539   FLAG_Z = MASK_OUT_ABOVE_32(res);
6540   FLAG_V = VFLAG_SUB_32(src, dst, res);
6541   FLAG_C = CFLAG_SUB_32(src, dst, res);
6542 }
6543 
6544 
m68k_op_cmpa_16_pd(void)6545 static void m68k_op_cmpa_16_pd(void)
6546 {
6547   uint src = MAKE_INT_16(OPER_AY_PD_16());
6548   uint dst = AX;
6549   uint res = dst - src;
6550 
6551   FLAG_N = NFLAG_32(res);
6552   FLAG_Z = MASK_OUT_ABOVE_32(res);
6553   FLAG_V = VFLAG_SUB_32(src, dst, res);
6554   FLAG_C = CFLAG_SUB_32(src, dst, res);
6555 }
6556 
6557 
m68k_op_cmpa_16_di(void)6558 static void m68k_op_cmpa_16_di(void)
6559 {
6560   uint src = MAKE_INT_16(OPER_AY_DI_16());
6561   uint dst = AX;
6562   uint res = dst - src;
6563 
6564   FLAG_N = NFLAG_32(res);
6565   FLAG_Z = MASK_OUT_ABOVE_32(res);
6566   FLAG_V = VFLAG_SUB_32(src, dst, res);
6567   FLAG_C = CFLAG_SUB_32(src, dst, res);
6568 }
6569 
6570 
m68k_op_cmpa_16_ix(void)6571 static void m68k_op_cmpa_16_ix(void)
6572 {
6573   uint src = MAKE_INT_16(OPER_AY_IX_16());
6574   uint dst = AX;
6575   uint res = dst - src;
6576 
6577   FLAG_N = NFLAG_32(res);
6578   FLAG_Z = MASK_OUT_ABOVE_32(res);
6579   FLAG_V = VFLAG_SUB_32(src, dst, res);
6580   FLAG_C = CFLAG_SUB_32(src, dst, res);
6581 }
6582 
6583 
m68k_op_cmpa_16_aw(void)6584 static void m68k_op_cmpa_16_aw(void)
6585 {
6586   uint src = MAKE_INT_16(OPER_AW_16());
6587   uint dst = AX;
6588   uint res = dst - src;
6589 
6590   FLAG_N = NFLAG_32(res);
6591   FLAG_Z = MASK_OUT_ABOVE_32(res);
6592   FLAG_V = VFLAG_SUB_32(src, dst, res);
6593   FLAG_C = CFLAG_SUB_32(src, dst, res);
6594 }
6595 
6596 
m68k_op_cmpa_16_al(void)6597 static void m68k_op_cmpa_16_al(void)
6598 {
6599   uint src = MAKE_INT_16(OPER_AL_16());
6600   uint dst = AX;
6601   uint res = dst - src;
6602 
6603   FLAG_N = NFLAG_32(res);
6604   FLAG_Z = MASK_OUT_ABOVE_32(res);
6605   FLAG_V = VFLAG_SUB_32(src, dst, res);
6606   FLAG_C = CFLAG_SUB_32(src, dst, res);
6607 }
6608 
6609 
m68k_op_cmpa_16_pcdi(void)6610 static void m68k_op_cmpa_16_pcdi(void)
6611 {
6612   uint src = MAKE_INT_16(OPER_PCDI_16());
6613   uint dst = AX;
6614   uint res = dst - src;
6615 
6616   FLAG_N = NFLAG_32(res);
6617   FLAG_Z = MASK_OUT_ABOVE_32(res);
6618   FLAG_V = VFLAG_SUB_32(src, dst, res);
6619   FLAG_C = CFLAG_SUB_32(src, dst, res);
6620 }
6621 
6622 
m68k_op_cmpa_16_pcix(void)6623 static void m68k_op_cmpa_16_pcix(void)
6624 {
6625   uint src = MAKE_INT_16(OPER_PCIX_16());
6626   uint dst = AX;
6627   uint res = dst - src;
6628 
6629   FLAG_N = NFLAG_32(res);
6630   FLAG_Z = MASK_OUT_ABOVE_32(res);
6631   FLAG_V = VFLAG_SUB_32(src, dst, res);
6632   FLAG_C = CFLAG_SUB_32(src, dst, res);
6633 }
6634 
6635 
m68k_op_cmpa_16_i(void)6636 static void m68k_op_cmpa_16_i(void)
6637 {
6638   uint src = MAKE_INT_16(OPER_I_16());
6639   uint dst = AX;
6640   uint res = dst - src;
6641 
6642   FLAG_N = NFLAG_32(res);
6643   FLAG_Z = MASK_OUT_ABOVE_32(res);
6644   FLAG_V = VFLAG_SUB_32(src, dst, res);
6645   FLAG_C = CFLAG_SUB_32(src, dst, res);
6646 }
6647 
6648 
m68k_op_cmpa_32_d(void)6649 static void m68k_op_cmpa_32_d(void)
6650 {
6651   uint src = DY;
6652   uint dst = AX;
6653   uint res = dst - src;
6654 
6655   FLAG_N = NFLAG_32(res);
6656   FLAG_Z = MASK_OUT_ABOVE_32(res);
6657   FLAG_V = VFLAG_SUB_32(src, dst, res);
6658   FLAG_C = CFLAG_SUB_32(src, dst, res);
6659 }
6660 
6661 
m68k_op_cmpa_32_a(void)6662 static void m68k_op_cmpa_32_a(void)
6663 {
6664   uint src = AY;
6665   uint dst = AX;
6666   uint res = dst - src;
6667 
6668   FLAG_N = NFLAG_32(res);
6669   FLAG_Z = MASK_OUT_ABOVE_32(res);
6670   FLAG_V = VFLAG_SUB_32(src, dst, res);
6671   FLAG_C = CFLAG_SUB_32(src, dst, res);
6672 }
6673 
6674 
m68k_op_cmpa_32_ai(void)6675 static void m68k_op_cmpa_32_ai(void)
6676 {
6677   uint src = OPER_AY_AI_32();
6678   uint dst = AX;
6679   uint res = dst - src;
6680 
6681   FLAG_N = NFLAG_32(res);
6682   FLAG_Z = MASK_OUT_ABOVE_32(res);
6683   FLAG_V = VFLAG_SUB_32(src, dst, res);
6684   FLAG_C = CFLAG_SUB_32(src, dst, res);
6685 }
6686 
6687 
m68k_op_cmpa_32_pi(void)6688 static void m68k_op_cmpa_32_pi(void)
6689 {
6690   uint src = OPER_AY_PI_32();
6691   uint dst = AX;
6692   uint res = dst - src;
6693 
6694   FLAG_N = NFLAG_32(res);
6695   FLAG_Z = MASK_OUT_ABOVE_32(res);
6696   FLAG_V = VFLAG_SUB_32(src, dst, res);
6697   FLAG_C = CFLAG_SUB_32(src, dst, res);
6698 }
6699 
6700 
m68k_op_cmpa_32_pd(void)6701 static void m68k_op_cmpa_32_pd(void)
6702 {
6703   uint src = OPER_AY_PD_32();
6704   uint dst = AX;
6705   uint res = dst - src;
6706 
6707   FLAG_N = NFLAG_32(res);
6708   FLAG_Z = MASK_OUT_ABOVE_32(res);
6709   FLAG_V = VFLAG_SUB_32(src, dst, res);
6710   FLAG_C = CFLAG_SUB_32(src, dst, res);
6711 }
6712 
6713 
m68k_op_cmpa_32_di(void)6714 static void m68k_op_cmpa_32_di(void)
6715 {
6716   uint src = OPER_AY_DI_32();
6717   uint dst = AX;
6718   uint res = dst - src;
6719 
6720   FLAG_N = NFLAG_32(res);
6721   FLAG_Z = MASK_OUT_ABOVE_32(res);
6722   FLAG_V = VFLAG_SUB_32(src, dst, res);
6723   FLAG_C = CFLAG_SUB_32(src, dst, res);
6724 }
6725 
6726 
m68k_op_cmpa_32_ix(void)6727 static void m68k_op_cmpa_32_ix(void)
6728 {
6729   uint src = OPER_AY_IX_32();
6730   uint dst = AX;
6731   uint res = dst - src;
6732 
6733   FLAG_N = NFLAG_32(res);
6734   FLAG_Z = MASK_OUT_ABOVE_32(res);
6735   FLAG_V = VFLAG_SUB_32(src, dst, res);
6736   FLAG_C = CFLAG_SUB_32(src, dst, res);
6737 }
6738 
6739 
m68k_op_cmpa_32_aw(void)6740 static void m68k_op_cmpa_32_aw(void)
6741 {
6742   uint src = OPER_AW_32();
6743   uint dst = AX;
6744   uint res = dst - src;
6745 
6746   FLAG_N = NFLAG_32(res);
6747   FLAG_Z = MASK_OUT_ABOVE_32(res);
6748   FLAG_V = VFLAG_SUB_32(src, dst, res);
6749   FLAG_C = CFLAG_SUB_32(src, dst, res);
6750 }
6751 
6752 
m68k_op_cmpa_32_al(void)6753 static void m68k_op_cmpa_32_al(void)
6754 {
6755   uint src = OPER_AL_32();
6756   uint dst = AX;
6757   uint res = dst - src;
6758 
6759   FLAG_N = NFLAG_32(res);
6760   FLAG_Z = MASK_OUT_ABOVE_32(res);
6761   FLAG_V = VFLAG_SUB_32(src, dst, res);
6762   FLAG_C = CFLAG_SUB_32(src, dst, res);
6763 }
6764 
6765 
m68k_op_cmpa_32_pcdi(void)6766 static void m68k_op_cmpa_32_pcdi(void)
6767 {
6768   uint src = OPER_PCDI_32();
6769   uint dst = AX;
6770   uint res = dst - src;
6771 
6772   FLAG_N = NFLAG_32(res);
6773   FLAG_Z = MASK_OUT_ABOVE_32(res);
6774   FLAG_V = VFLAG_SUB_32(src, dst, res);
6775   FLAG_C = CFLAG_SUB_32(src, dst, res);
6776 }
6777 
6778 
m68k_op_cmpa_32_pcix(void)6779 static void m68k_op_cmpa_32_pcix(void)
6780 {
6781   uint src = OPER_PCIX_32();
6782   uint dst = AX;
6783   uint res = dst - src;
6784 
6785   FLAG_N = NFLAG_32(res);
6786   FLAG_Z = MASK_OUT_ABOVE_32(res);
6787   FLAG_V = VFLAG_SUB_32(src, dst, res);
6788   FLAG_C = CFLAG_SUB_32(src, dst, res);
6789 }
6790 
6791 
m68k_op_cmpa_32_i(void)6792 static void m68k_op_cmpa_32_i(void)
6793 {
6794   uint src = OPER_I_32();
6795   uint dst = AX;
6796   uint res = dst - src;
6797 
6798   FLAG_N = NFLAG_32(res);
6799   FLAG_Z = MASK_OUT_ABOVE_32(res);
6800   FLAG_V = VFLAG_SUB_32(src, dst, res);
6801   FLAG_C = CFLAG_SUB_32(src, dst, res);
6802 }
6803 
6804 
m68k_op_cmpi_8_d(void)6805 static void m68k_op_cmpi_8_d(void)
6806 {
6807   uint src = OPER_I_8();
6808   uint dst = MASK_OUT_ABOVE_8(DY);
6809   uint res = dst - src;
6810 
6811   FLAG_N = NFLAG_8(res);
6812   FLAG_Z = MASK_OUT_ABOVE_8(res);
6813   FLAG_V = VFLAG_SUB_8(src, dst, res);
6814   FLAG_C = CFLAG_8(res);
6815 }
6816 
6817 
m68k_op_cmpi_8_ai(void)6818 static void m68k_op_cmpi_8_ai(void)
6819 {
6820   uint src = OPER_I_8();
6821   uint dst = OPER_AY_AI_8();
6822   uint res = dst - src;
6823 
6824   FLAG_N = NFLAG_8(res);
6825   FLAG_Z = MASK_OUT_ABOVE_8(res);
6826   FLAG_V = VFLAG_SUB_8(src, dst, res);
6827   FLAG_C = CFLAG_8(res);
6828 }
6829 
6830 
m68k_op_cmpi_8_pi(void)6831 static void m68k_op_cmpi_8_pi(void)
6832 {
6833   uint src = OPER_I_8();
6834   uint dst = OPER_AY_PI_8();
6835   uint res = dst - src;
6836 
6837   FLAG_N = NFLAG_8(res);
6838   FLAG_Z = MASK_OUT_ABOVE_8(res);
6839   FLAG_V = VFLAG_SUB_8(src, dst, res);
6840   FLAG_C = CFLAG_8(res);
6841 }
6842 
6843 
m68k_op_cmpi_8_pi7(void)6844 static void m68k_op_cmpi_8_pi7(void)
6845 {
6846   uint src = OPER_I_8();
6847   uint dst = OPER_A7_PI_8();
6848   uint res = dst - src;
6849 
6850   FLAG_N = NFLAG_8(res);
6851   FLAG_Z = MASK_OUT_ABOVE_8(res);
6852   FLAG_V = VFLAG_SUB_8(src, dst, res);
6853   FLAG_C = CFLAG_8(res);
6854 }
6855 
6856 
m68k_op_cmpi_8_pd(void)6857 static void m68k_op_cmpi_8_pd(void)
6858 {
6859   uint src = OPER_I_8();
6860   uint dst = OPER_AY_PD_8();
6861   uint res = dst - src;
6862 
6863   FLAG_N = NFLAG_8(res);
6864   FLAG_Z = MASK_OUT_ABOVE_8(res);
6865   FLAG_V = VFLAG_SUB_8(src, dst, res);
6866   FLAG_C = CFLAG_8(res);
6867 }
6868 
6869 
m68k_op_cmpi_8_pd7(void)6870 static void m68k_op_cmpi_8_pd7(void)
6871 {
6872   uint src = OPER_I_8();
6873   uint dst = OPER_A7_PD_8();
6874   uint res = dst - src;
6875 
6876   FLAG_N = NFLAG_8(res);
6877   FLAG_Z = MASK_OUT_ABOVE_8(res);
6878   FLAG_V = VFLAG_SUB_8(src, dst, res);
6879   FLAG_C = CFLAG_8(res);
6880 }
6881 
6882 
m68k_op_cmpi_8_di(void)6883 static void m68k_op_cmpi_8_di(void)
6884 {
6885   uint src = OPER_I_8();
6886   uint dst = OPER_AY_DI_8();
6887   uint res = dst - src;
6888 
6889   FLAG_N = NFLAG_8(res);
6890   FLAG_Z = MASK_OUT_ABOVE_8(res);
6891   FLAG_V = VFLAG_SUB_8(src, dst, res);
6892   FLAG_C = CFLAG_8(res);
6893 }
6894 
6895 
m68k_op_cmpi_8_ix(void)6896 static void m68k_op_cmpi_8_ix(void)
6897 {
6898   uint src = OPER_I_8();
6899   uint dst = OPER_AY_IX_8();
6900   uint res = dst - src;
6901 
6902   FLAG_N = NFLAG_8(res);
6903   FLAG_Z = MASK_OUT_ABOVE_8(res);
6904   FLAG_V = VFLAG_SUB_8(src, dst, res);
6905   FLAG_C = CFLAG_8(res);
6906 }
6907 
6908 
m68k_op_cmpi_8_aw(void)6909 static void m68k_op_cmpi_8_aw(void)
6910 {
6911   uint src = OPER_I_8();
6912   uint dst = OPER_AW_8();
6913   uint res = dst - src;
6914 
6915   FLAG_N = NFLAG_8(res);
6916   FLAG_Z = MASK_OUT_ABOVE_8(res);
6917   FLAG_V = VFLAG_SUB_8(src, dst, res);
6918   FLAG_C = CFLAG_8(res);
6919 }
6920 
6921 
m68k_op_cmpi_8_al(void)6922 static void m68k_op_cmpi_8_al(void)
6923 {
6924   uint src = OPER_I_8();
6925   uint dst = OPER_AL_8();
6926   uint res = dst - src;
6927 
6928   FLAG_N = NFLAG_8(res);
6929   FLAG_Z = MASK_OUT_ABOVE_8(res);
6930   FLAG_V = VFLAG_SUB_8(src, dst, res);
6931   FLAG_C = CFLAG_8(res);
6932 }
6933 
6934 
m68k_op_cmpi_16_d(void)6935 static void m68k_op_cmpi_16_d(void)
6936 {
6937   uint src = OPER_I_16();
6938   uint dst = MASK_OUT_ABOVE_16(DY);
6939   uint res = dst - src;
6940 
6941   FLAG_N = NFLAG_16(res);
6942   FLAG_Z = MASK_OUT_ABOVE_16(res);
6943   FLAG_V = VFLAG_SUB_16(src, dst, res);
6944   FLAG_C = CFLAG_16(res);
6945 }
6946 
6947 
m68k_op_cmpi_16_ai(void)6948 static void m68k_op_cmpi_16_ai(void)
6949 {
6950   uint src = OPER_I_16();
6951   uint dst = OPER_AY_AI_16();
6952   uint res = dst - src;
6953 
6954   FLAG_N = NFLAG_16(res);
6955   FLAG_Z = MASK_OUT_ABOVE_16(res);
6956   FLAG_V = VFLAG_SUB_16(src, dst, res);
6957   FLAG_C = CFLAG_16(res);
6958 }
6959 
6960 
m68k_op_cmpi_16_pi(void)6961 static void m68k_op_cmpi_16_pi(void)
6962 {
6963   uint src = OPER_I_16();
6964   uint dst = OPER_AY_PI_16();
6965   uint res = dst - src;
6966 
6967   FLAG_N = NFLAG_16(res);
6968   FLAG_Z = MASK_OUT_ABOVE_16(res);
6969   FLAG_V = VFLAG_SUB_16(src, dst, res);
6970   FLAG_C = CFLAG_16(res);
6971 }
6972 
6973 
m68k_op_cmpi_16_pd(void)6974 static void m68k_op_cmpi_16_pd(void)
6975 {
6976   uint src = OPER_I_16();
6977   uint dst = OPER_AY_PD_16();
6978   uint res = dst - src;
6979 
6980   FLAG_N = NFLAG_16(res);
6981   FLAG_Z = MASK_OUT_ABOVE_16(res);
6982   FLAG_V = VFLAG_SUB_16(src, dst, res);
6983   FLAG_C = CFLAG_16(res);
6984 }
6985 
6986 
m68k_op_cmpi_16_di(void)6987 static void m68k_op_cmpi_16_di(void)
6988 {
6989   uint src = OPER_I_16();
6990   uint dst = OPER_AY_DI_16();
6991   uint res = dst - src;
6992 
6993   FLAG_N = NFLAG_16(res);
6994   FLAG_Z = MASK_OUT_ABOVE_16(res);
6995   FLAG_V = VFLAG_SUB_16(src, dst, res);
6996   FLAG_C = CFLAG_16(res);
6997 }
6998 
6999 
m68k_op_cmpi_16_ix(void)7000 static void m68k_op_cmpi_16_ix(void)
7001 {
7002   uint src = OPER_I_16();
7003   uint dst = OPER_AY_IX_16();
7004   uint res = dst - src;
7005 
7006   FLAG_N = NFLAG_16(res);
7007   FLAG_Z = MASK_OUT_ABOVE_16(res);
7008   FLAG_V = VFLAG_SUB_16(src, dst, res);
7009   FLAG_C = CFLAG_16(res);
7010 }
7011 
7012 
m68k_op_cmpi_16_aw(void)7013 static void m68k_op_cmpi_16_aw(void)
7014 {
7015   uint src = OPER_I_16();
7016   uint dst = OPER_AW_16();
7017   uint res = dst - src;
7018 
7019   FLAG_N = NFLAG_16(res);
7020   FLAG_Z = MASK_OUT_ABOVE_16(res);
7021   FLAG_V = VFLAG_SUB_16(src, dst, res);
7022   FLAG_C = CFLAG_16(res);
7023 }
7024 
7025 
m68k_op_cmpi_16_al(void)7026 static void m68k_op_cmpi_16_al(void)
7027 {
7028   uint src = OPER_I_16();
7029   uint dst = OPER_AL_16();
7030   uint res = dst - src;
7031 
7032   FLAG_N = NFLAG_16(res);
7033   FLAG_Z = MASK_OUT_ABOVE_16(res);
7034   FLAG_V = VFLAG_SUB_16(src, dst, res);
7035   FLAG_C = CFLAG_16(res);
7036 }
7037 
7038 
m68k_op_cmpi_32_d(void)7039 static void m68k_op_cmpi_32_d(void)
7040 {
7041   uint src = OPER_I_32();
7042   uint dst = DY;
7043   uint res = dst - src;
7044 
7045   FLAG_N = NFLAG_32(res);
7046   FLAG_Z = MASK_OUT_ABOVE_32(res);
7047   FLAG_V = VFLAG_SUB_32(src, dst, res);
7048   FLAG_C = CFLAG_SUB_32(src, dst, res);
7049 }
7050 
7051 
m68k_op_cmpi_32_ai(void)7052 static void m68k_op_cmpi_32_ai(void)
7053 {
7054   uint src = OPER_I_32();
7055   uint dst = OPER_AY_AI_32();
7056   uint res = dst - src;
7057 
7058   FLAG_N = NFLAG_32(res);
7059   FLAG_Z = MASK_OUT_ABOVE_32(res);
7060   FLAG_V = VFLAG_SUB_32(src, dst, res);
7061   FLAG_C = CFLAG_SUB_32(src, dst, res);
7062 }
7063 
7064 
m68k_op_cmpi_32_pi(void)7065 static void m68k_op_cmpi_32_pi(void)
7066 {
7067   uint src = OPER_I_32();
7068   uint dst = OPER_AY_PI_32();
7069   uint res = dst - src;
7070 
7071   FLAG_N = NFLAG_32(res);
7072   FLAG_Z = MASK_OUT_ABOVE_32(res);
7073   FLAG_V = VFLAG_SUB_32(src, dst, res);
7074   FLAG_C = CFLAG_SUB_32(src, dst, res);
7075 }
7076 
7077 
m68k_op_cmpi_32_pd(void)7078 static void m68k_op_cmpi_32_pd(void)
7079 {
7080   uint src = OPER_I_32();
7081   uint dst = OPER_AY_PD_32();
7082   uint res = dst - src;
7083 
7084   FLAG_N = NFLAG_32(res);
7085   FLAG_Z = MASK_OUT_ABOVE_32(res);
7086   FLAG_V = VFLAG_SUB_32(src, dst, res);
7087   FLAG_C = CFLAG_SUB_32(src, dst, res);
7088 }
7089 
7090 
m68k_op_cmpi_32_di(void)7091 static void m68k_op_cmpi_32_di(void)
7092 {
7093   uint src = OPER_I_32();
7094   uint dst = OPER_AY_DI_32();
7095   uint res = dst - src;
7096 
7097   FLAG_N = NFLAG_32(res);
7098   FLAG_Z = MASK_OUT_ABOVE_32(res);
7099   FLAG_V = VFLAG_SUB_32(src, dst, res);
7100   FLAG_C = CFLAG_SUB_32(src, dst, res);
7101 }
7102 
7103 
m68k_op_cmpi_32_ix(void)7104 static void m68k_op_cmpi_32_ix(void)
7105 {
7106   uint src = OPER_I_32();
7107   uint dst = OPER_AY_IX_32();
7108   uint res = dst - src;
7109 
7110   FLAG_N = NFLAG_32(res);
7111   FLAG_Z = MASK_OUT_ABOVE_32(res);
7112   FLAG_V = VFLAG_SUB_32(src, dst, res);
7113   FLAG_C = CFLAG_SUB_32(src, dst, res);
7114 }
7115 
7116 
m68k_op_cmpi_32_aw(void)7117 static void m68k_op_cmpi_32_aw(void)
7118 {
7119   uint src = OPER_I_32();
7120   uint dst = OPER_AW_32();
7121   uint res = dst - src;
7122 
7123   FLAG_N = NFLAG_32(res);
7124   FLAG_Z = MASK_OUT_ABOVE_32(res);
7125   FLAG_V = VFLAG_SUB_32(src, dst, res);
7126   FLAG_C = CFLAG_SUB_32(src, dst, res);
7127 }
7128 
7129 
m68k_op_cmpi_32_al(void)7130 static void m68k_op_cmpi_32_al(void)
7131 {
7132   uint src = OPER_I_32();
7133   uint dst = OPER_AL_32();
7134   uint res = dst - src;
7135 
7136   FLAG_N = NFLAG_32(res);
7137   FLAG_Z = MASK_OUT_ABOVE_32(res);
7138   FLAG_V = VFLAG_SUB_32(src, dst, res);
7139   FLAG_C = CFLAG_SUB_32(src, dst, res);
7140 }
7141 
7142 
m68k_op_cmpm_8_ax7(void)7143 static void m68k_op_cmpm_8_ax7(void)
7144 {
7145   uint src = OPER_AY_PI_8();
7146   uint dst = OPER_A7_PI_8();
7147   uint res = dst - src;
7148 
7149   FLAG_N = NFLAG_8(res);
7150   FLAG_Z = MASK_OUT_ABOVE_8(res);
7151   FLAG_V = VFLAG_SUB_8(src, dst, res);
7152   FLAG_C = CFLAG_8(res);
7153 }
7154 
7155 
m68k_op_cmpm_8_ay7(void)7156 static void m68k_op_cmpm_8_ay7(void)
7157 {
7158   uint src = OPER_A7_PI_8();
7159   uint dst = OPER_AX_PI_8();
7160   uint res = dst - src;
7161 
7162   FLAG_N = NFLAG_8(res);
7163   FLAG_Z = MASK_OUT_ABOVE_8(res);
7164   FLAG_V = VFLAG_SUB_8(src, dst, res);
7165   FLAG_C = CFLAG_8(res);
7166 }
7167 
7168 
m68k_op_cmpm_8_axy7(void)7169 static void m68k_op_cmpm_8_axy7(void)
7170 {
7171   uint src = OPER_A7_PI_8();
7172   uint dst = OPER_A7_PI_8();
7173   uint res = dst - src;
7174 
7175   FLAG_N = NFLAG_8(res);
7176   FLAG_Z = MASK_OUT_ABOVE_8(res);
7177   FLAG_V = VFLAG_SUB_8(src, dst, res);
7178   FLAG_C = CFLAG_8(res);
7179 }
7180 
7181 
m68k_op_cmpm_8(void)7182 static void m68k_op_cmpm_8(void)
7183 {
7184   uint src = OPER_AY_PI_8();
7185   uint dst = OPER_AX_PI_8();
7186   uint res = dst - src;
7187 
7188   FLAG_N = NFLAG_8(res);
7189   FLAG_Z = MASK_OUT_ABOVE_8(res);
7190   FLAG_V = VFLAG_SUB_8(src, dst, res);
7191   FLAG_C = CFLAG_8(res);
7192 }
7193 
7194 
m68k_op_cmpm_16(void)7195 static void m68k_op_cmpm_16(void)
7196 {
7197   uint src = OPER_AY_PI_16();
7198   uint dst = OPER_AX_PI_16();
7199   uint res = dst - src;
7200 
7201   FLAG_N = NFLAG_16(res);
7202   FLAG_Z = MASK_OUT_ABOVE_16(res);
7203   FLAG_V = VFLAG_SUB_16(src, dst, res);
7204   FLAG_C = CFLAG_16(res);
7205 }
7206 
7207 
m68k_op_cmpm_32(void)7208 static void m68k_op_cmpm_32(void)
7209 {
7210   uint src = OPER_AY_PI_32();
7211   uint dst = OPER_AX_PI_32();
7212   uint res = dst - src;
7213 
7214   FLAG_N = NFLAG_32(res);
7215   FLAG_Z = MASK_OUT_ABOVE_32(res);
7216   FLAG_V = VFLAG_SUB_32(src, dst, res);
7217   FLAG_C = CFLAG_SUB_32(src, dst, res);
7218 }
7219 
7220 
m68k_op_dbt_16(void)7221 static void m68k_op_dbt_16(void)
7222 {
7223   REG_PC += 2;
7224 }
7225 
7226 
m68k_op_dbf_16(void)7227 static void m68k_op_dbf_16(void)
7228 {
7229   uint* r_dst = &DY;
7230   uint res = MASK_OUT_ABOVE_16(*r_dst - 1);
7231   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
7232 
7233   if(res != 0xffff)
7234   {
7235     uint offset = OPER_I_16();
7236     REG_PC -= 2;
7237     m68ki_branch_16(offset);
7238     USE_CYCLES(CYC_DBCC_F_NOEXP);
7239 
7240     /* reset idle loop detection */
7241     m68ki_cpu.poll.detected = 0;
7242     return;
7243   }
7244   REG_PC += 2;
7245   USE_CYCLES(CYC_DBCC_F_EXP);
7246 }
7247 
7248 
m68k_op_dbhi_16(void)7249 static void m68k_op_dbhi_16(void)
7250 {
7251   if(COND_NOT_HI())
7252   {
7253     uint* r_dst = &DY;
7254     uint res = MASK_OUT_ABOVE_16(*r_dst - 1);
7255 
7256     *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
7257     if(res != 0xffff)
7258     {
7259       uint offset = OPER_I_16();
7260       REG_PC -= 2;
7261       m68ki_branch_16(offset);
7262       USE_CYCLES(CYC_DBCC_F_NOEXP);
7263 
7264       /* reset idle loop detection */
7265       m68ki_cpu.poll.detected = 0;
7266       return;
7267     }
7268     REG_PC += 2;
7269     USE_CYCLES(CYC_DBCC_F_EXP);
7270     return;
7271   }
7272   REG_PC += 2;
7273 }
7274 
7275 
m68k_op_dbls_16(void)7276 static void m68k_op_dbls_16(void)
7277 {
7278   if(COND_NOT_LS())
7279   {
7280     uint* r_dst = &DY;
7281     uint res = MASK_OUT_ABOVE_16(*r_dst - 1);
7282 
7283     *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
7284     if(res != 0xffff)
7285     {
7286       uint offset = OPER_I_16();
7287       REG_PC -= 2;
7288       m68ki_branch_16(offset);
7289       USE_CYCLES(CYC_DBCC_F_NOEXP);
7290 
7291       /* reset idle loop detection */
7292       m68ki_cpu.poll.detected = 0;
7293       return;
7294     }
7295     REG_PC += 2;
7296     USE_CYCLES(CYC_DBCC_F_EXP);
7297     return;
7298   }
7299   REG_PC += 2;
7300 }
7301 
7302 
m68k_op_dbcc_16(void)7303 static void m68k_op_dbcc_16(void)
7304 {
7305   if(COND_NOT_CC())
7306   {
7307     uint* r_dst = &DY;
7308     uint res = MASK_OUT_ABOVE_16(*r_dst - 1);
7309 
7310     *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
7311     if(res != 0xffff)
7312     {
7313       uint offset = OPER_I_16();
7314       REG_PC -= 2;
7315       m68ki_branch_16(offset);
7316       USE_CYCLES(CYC_DBCC_F_NOEXP);
7317 
7318       /* reset idle loop detection */
7319       m68ki_cpu.poll.detected = 0;
7320       return;
7321     }
7322     REG_PC += 2;
7323     USE_CYCLES(CYC_DBCC_F_EXP);
7324     return;
7325   }
7326   REG_PC += 2;
7327 }
7328 
7329 
m68k_op_dbcs_16(void)7330 static void m68k_op_dbcs_16(void)
7331 {
7332   if(COND_NOT_CS())
7333   {
7334     uint* r_dst = &DY;
7335     uint res = MASK_OUT_ABOVE_16(*r_dst - 1);
7336 
7337     *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
7338     if(res != 0xffff)
7339     {
7340       uint offset = OPER_I_16();
7341       REG_PC -= 2;
7342       m68ki_branch_16(offset);
7343       USE_CYCLES(CYC_DBCC_F_NOEXP);
7344 
7345       /* reset idle loop detection */
7346       m68ki_cpu.poll.detected = 0;
7347       return;
7348     }
7349     REG_PC += 2;
7350     USE_CYCLES(CYC_DBCC_F_EXP);
7351     return;
7352   }
7353   REG_PC += 2;
7354 }
7355 
7356 
m68k_op_dbne_16(void)7357 static void m68k_op_dbne_16(void)
7358 {
7359   if(COND_NOT_NE())
7360   {
7361     uint* r_dst = &DY;
7362     uint res = MASK_OUT_ABOVE_16(*r_dst - 1);
7363 
7364     *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
7365     if(res != 0xffff)
7366     {
7367       uint offset = OPER_I_16();
7368       REG_PC -= 2;
7369       m68ki_branch_16(offset);
7370       USE_CYCLES(CYC_DBCC_F_NOEXP);
7371 
7372       /* reset idle loop detection */
7373       m68ki_cpu.poll.detected = 0;
7374       return;
7375     }
7376     REG_PC += 2;
7377     USE_CYCLES(CYC_DBCC_F_EXP);
7378     return;
7379   }
7380   REG_PC += 2;
7381 }
7382 
7383 
m68k_op_dbeq_16(void)7384 static void m68k_op_dbeq_16(void)
7385 {
7386   if(COND_NOT_EQ())
7387   {
7388     uint* r_dst = &DY;
7389     uint res = MASK_OUT_ABOVE_16(*r_dst - 1);
7390 
7391     *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
7392     if(res != 0xffff)
7393     {
7394       uint offset = OPER_I_16();
7395       REG_PC -= 2;
7396       m68ki_branch_16(offset);
7397       USE_CYCLES(CYC_DBCC_F_NOEXP);
7398 
7399       /* reset idle loop detection */
7400       m68ki_cpu.poll.detected = 0;
7401       return;
7402     }
7403     REG_PC += 2;
7404     USE_CYCLES(CYC_DBCC_F_EXP);
7405     return;
7406   }
7407   REG_PC += 2;
7408 }
7409 
7410 
m68k_op_dbvc_16(void)7411 static void m68k_op_dbvc_16(void)
7412 {
7413   if(COND_NOT_VC())
7414   {
7415     uint* r_dst = &DY;
7416     uint res = MASK_OUT_ABOVE_16(*r_dst - 1);
7417 
7418     *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
7419     if(res != 0xffff)
7420     {
7421       uint offset = OPER_I_16();
7422       REG_PC -= 2;
7423       m68ki_branch_16(offset);
7424       USE_CYCLES(CYC_DBCC_F_NOEXP);
7425 
7426       /* reset idle loop detection */
7427       m68ki_cpu.poll.detected = 0;
7428       return;
7429     }
7430     REG_PC += 2;
7431     USE_CYCLES(CYC_DBCC_F_EXP);
7432     return;
7433   }
7434   REG_PC += 2;
7435 }
7436 
7437 
m68k_op_dbvs_16(void)7438 static void m68k_op_dbvs_16(void)
7439 {
7440   if(COND_NOT_VS())
7441   {
7442     uint* r_dst = &DY;
7443     uint res = MASK_OUT_ABOVE_16(*r_dst - 1);
7444 
7445     *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
7446     if(res != 0xffff)
7447     {
7448       uint offset = OPER_I_16();
7449       REG_PC -= 2;
7450       m68ki_branch_16(offset);
7451       USE_CYCLES(CYC_DBCC_F_NOEXP);
7452 
7453       /* reset idle loop detection */
7454       m68ki_cpu.poll.detected = 0;
7455       return;
7456     }
7457     REG_PC += 2;
7458     USE_CYCLES(CYC_DBCC_F_EXP);
7459     return;
7460   }
7461   REG_PC += 2;
7462 }
7463 
7464 
m68k_op_dbpl_16(void)7465 static void m68k_op_dbpl_16(void)
7466 {
7467   if(COND_NOT_PL())
7468   {
7469     uint* r_dst = &DY;
7470     uint res = MASK_OUT_ABOVE_16(*r_dst - 1);
7471 
7472     *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
7473     if(res != 0xffff)
7474     {
7475       uint offset = OPER_I_16();
7476       REG_PC -= 2;
7477       m68ki_branch_16(offset);
7478       USE_CYCLES(CYC_DBCC_F_NOEXP);
7479 
7480       /* reset idle loop detection */
7481       m68ki_cpu.poll.detected = 0;
7482       return;
7483     }
7484     REG_PC += 2;
7485     USE_CYCLES(CYC_DBCC_F_EXP);
7486     return;
7487   }
7488   REG_PC += 2;
7489 }
7490 
7491 
m68k_op_dbmi_16(void)7492 static void m68k_op_dbmi_16(void)
7493 {
7494   if(COND_NOT_MI())
7495   {
7496     uint* r_dst = &DY;
7497     uint res = MASK_OUT_ABOVE_16(*r_dst - 1);
7498 
7499     *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
7500     if(res != 0xffff)
7501     {
7502       uint offset = OPER_I_16();
7503       REG_PC -= 2;
7504       m68ki_branch_16(offset);
7505       USE_CYCLES(CYC_DBCC_F_NOEXP);
7506 
7507       /* reset idle loop detection */
7508       m68ki_cpu.poll.detected = 0;
7509       return;
7510     }
7511     REG_PC += 2;
7512     USE_CYCLES(CYC_DBCC_F_EXP);
7513     return;
7514   }
7515   REG_PC += 2;
7516 }
7517 
7518 
m68k_op_dbge_16(void)7519 static void m68k_op_dbge_16(void)
7520 {
7521   if(COND_NOT_GE())
7522   {
7523     uint* r_dst = &DY;
7524     uint res = MASK_OUT_ABOVE_16(*r_dst - 1);
7525 
7526     *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
7527     if(res != 0xffff)
7528     {
7529       uint offset = OPER_I_16();
7530       REG_PC -= 2;
7531       m68ki_branch_16(offset);
7532       USE_CYCLES(CYC_DBCC_F_NOEXP);
7533 
7534       /* reset idle loop detection */
7535       m68ki_cpu.poll.detected = 0;
7536       return;
7537     }
7538     REG_PC += 2;
7539     USE_CYCLES(CYC_DBCC_F_EXP);
7540     return;
7541   }
7542   REG_PC += 2;
7543 }
7544 
7545 
m68k_op_dblt_16(void)7546 static void m68k_op_dblt_16(void)
7547 {
7548   if(COND_NOT_LT())
7549   {
7550     uint* r_dst = &DY;
7551     uint res = MASK_OUT_ABOVE_16(*r_dst - 1);
7552 
7553     *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
7554     if(res != 0xffff)
7555     {
7556       uint offset = OPER_I_16();
7557       REG_PC -= 2;
7558       m68ki_branch_16(offset);
7559       USE_CYCLES(CYC_DBCC_F_NOEXP);
7560 
7561       /* reset idle loop detection */
7562       m68ki_cpu.poll.detected = 0;
7563       return;
7564     }
7565     REG_PC += 2;
7566     USE_CYCLES(CYC_DBCC_F_EXP);
7567     return;
7568   }
7569   REG_PC += 2;
7570 }
7571 
7572 
m68k_op_dbgt_16(void)7573 static void m68k_op_dbgt_16(void)
7574 {
7575   if(COND_NOT_GT())
7576   {
7577     uint* r_dst = &DY;
7578     uint res = MASK_OUT_ABOVE_16(*r_dst - 1);
7579 
7580     *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
7581     if(res != 0xffff)
7582     {
7583       uint offset = OPER_I_16();
7584       REG_PC -= 2;
7585       m68ki_branch_16(offset);
7586       USE_CYCLES(CYC_DBCC_F_NOEXP);
7587 
7588       /* reset idle loop detection */
7589       m68ki_cpu.poll.detected = 0;
7590       return;
7591     }
7592     REG_PC += 2;
7593     USE_CYCLES(CYC_DBCC_F_EXP);
7594     return;
7595   }
7596   REG_PC += 2;
7597 }
7598 
7599 
m68k_op_dble_16(void)7600 static void m68k_op_dble_16(void)
7601 {
7602   if(COND_NOT_LE())
7603   {
7604     uint* r_dst = &DY;
7605     uint res = MASK_OUT_ABOVE_16(*r_dst - 1);
7606 
7607     *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
7608     if(res != 0xffff)
7609     {
7610       uint offset = OPER_I_16();
7611       REG_PC -= 2;
7612       m68ki_branch_16(offset);
7613       USE_CYCLES(CYC_DBCC_F_NOEXP);
7614 
7615       /* reset idle loop detection */
7616       m68ki_cpu.poll.detected = 0;
7617       return;
7618     }
7619     REG_PC += 2;
7620     USE_CYCLES(CYC_DBCC_F_EXP);
7621     return;
7622   }
7623   REG_PC += 2;
7624 }
7625 
7626 
m68k_op_divs_16_d(void)7627 static void m68k_op_divs_16_d(void)
7628 {
7629   uint* r_dst = &DX;
7630   sint src = MAKE_INT_16(DY);
7631   sint quotient;
7632   sint remainder;
7633 
7634   if(src != 0)
7635   {
7636     UseDivsCycles(*r_dst,src);
7637 
7638     if((uint32)*r_dst == 0x80000000 && src == -1)
7639     {
7640       FLAG_Z = 0;
7641       FLAG_N = NFLAG_CLEAR;
7642       FLAG_V = VFLAG_CLEAR;
7643       FLAG_C = CFLAG_CLEAR;
7644       *r_dst = 0;
7645       return;
7646     }
7647 
7648     quotient = MAKE_INT_32(*r_dst) / src;
7649     remainder = MAKE_INT_32(*r_dst) % src;
7650 
7651     if(quotient == MAKE_INT_16(quotient))
7652     {
7653       FLAG_Z = quotient;
7654       FLAG_N = NFLAG_16(quotient);
7655       FLAG_V = VFLAG_CLEAR;
7656       FLAG_C = CFLAG_CLEAR;
7657       *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
7658       return;
7659     }
7660     FLAG_V = VFLAG_SET;
7661     FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */
7662     FLAG_C = CFLAG_CLEAR;
7663     return;
7664   }
7665   FLAG_C = CFLAG_CLEAR;
7666   m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);
7667 }
7668 
7669 
m68k_op_divs_16_ai(void)7670 static void m68k_op_divs_16_ai(void)
7671 {
7672   uint* r_dst = &DX;
7673   sint src = MAKE_INT_16(OPER_AY_AI_16());
7674   sint quotient;
7675   sint remainder;
7676 
7677   if(src != 0)
7678   {
7679     UseDivsCycles(*r_dst,src);
7680 
7681     if((uint32)*r_dst == 0x80000000 && src == -1)
7682     {
7683       FLAG_Z = 0;
7684       FLAG_N = NFLAG_CLEAR;
7685       FLAG_V = VFLAG_CLEAR;
7686       FLAG_C = CFLAG_CLEAR;
7687       *r_dst = 0;
7688       return;
7689     }
7690 
7691     quotient = MAKE_INT_32(*r_dst) / src;
7692     remainder = MAKE_INT_32(*r_dst) % src;
7693 
7694     if(quotient == MAKE_INT_16(quotient))
7695     {
7696       FLAG_Z = quotient;
7697       FLAG_N = NFLAG_16(quotient);
7698       FLAG_V = VFLAG_CLEAR;
7699       FLAG_C = CFLAG_CLEAR;
7700       *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
7701       return;
7702     }
7703     FLAG_V = VFLAG_SET;
7704     FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */
7705     FLAG_C = CFLAG_CLEAR;
7706     return;
7707   }
7708   FLAG_C = CFLAG_CLEAR;
7709   m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);
7710 }
7711 
7712 
m68k_op_divs_16_pi(void)7713 static void m68k_op_divs_16_pi(void)
7714 {
7715   uint* r_dst = &DX;
7716   sint src = MAKE_INT_16(OPER_AY_PI_16());
7717   sint quotient;
7718   sint remainder;
7719 
7720   if(src != 0)
7721   {
7722     UseDivsCycles(*r_dst,src);
7723 
7724     if((uint32)*r_dst == 0x80000000 && src == -1)
7725     {
7726       FLAG_Z = 0;
7727       FLAG_N = NFLAG_CLEAR;
7728       FLAG_V = VFLAG_CLEAR;
7729       FLAG_C = CFLAG_CLEAR;
7730       *r_dst = 0;
7731       return;
7732     }
7733 
7734     quotient = MAKE_INT_32(*r_dst) / src;
7735     remainder = MAKE_INT_32(*r_dst) % src;
7736 
7737     if(quotient == MAKE_INT_16(quotient))
7738     {
7739       FLAG_Z = quotient;
7740       FLAG_N = NFLAG_16(quotient);
7741       FLAG_V = VFLAG_CLEAR;
7742       FLAG_C = CFLAG_CLEAR;
7743       *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
7744       return;
7745     }
7746     FLAG_V = VFLAG_SET;
7747     FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */
7748     FLAG_C = CFLAG_CLEAR;
7749     return;
7750   }
7751   FLAG_C = CFLAG_CLEAR;
7752   m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);
7753 }
7754 
7755 
m68k_op_divs_16_pd(void)7756 static void m68k_op_divs_16_pd(void)
7757 {
7758   uint* r_dst = &DX;
7759   sint src = MAKE_INT_16(OPER_AY_PD_16());
7760   sint quotient;
7761   sint remainder;
7762 
7763   if(src != 0)
7764   {
7765     UseDivsCycles(*r_dst,src);
7766 
7767     if((uint32)*r_dst == 0x80000000 && src == -1)
7768     {
7769       FLAG_Z = 0;
7770       FLAG_N = NFLAG_CLEAR;
7771       FLAG_V = VFLAG_CLEAR;
7772       FLAG_C = CFLAG_CLEAR;
7773       *r_dst = 0;
7774       return;
7775     }
7776 
7777     quotient = MAKE_INT_32(*r_dst) / src;
7778     remainder = MAKE_INT_32(*r_dst) % src;
7779 
7780     if(quotient == MAKE_INT_16(quotient))
7781     {
7782       FLAG_Z = quotient;
7783       FLAG_N = NFLAG_16(quotient);
7784       FLAG_V = VFLAG_CLEAR;
7785       FLAG_C = CFLAG_CLEAR;
7786       *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
7787       return;
7788     }
7789     FLAG_V = VFLAG_SET;
7790     FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */
7791     FLAG_C = CFLAG_CLEAR;
7792     return;
7793   }
7794   FLAG_C = CFLAG_CLEAR;
7795   m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);
7796 }
7797 
7798 
m68k_op_divs_16_di(void)7799 static void m68k_op_divs_16_di(void)
7800 {
7801   uint* r_dst = &DX;
7802   sint src = MAKE_INT_16(OPER_AY_DI_16());
7803   sint quotient;
7804   sint remainder;
7805 
7806   if(src != 0)
7807   {
7808     UseDivsCycles(*r_dst,src);
7809 
7810     if((uint32)*r_dst == 0x80000000 && src == -1)
7811     {
7812       FLAG_Z = 0;
7813       FLAG_N = NFLAG_CLEAR;
7814       FLAG_V = VFLAG_CLEAR;
7815       FLAG_C = CFLAG_CLEAR;
7816       *r_dst = 0;
7817       return;
7818     }
7819 
7820     quotient = MAKE_INT_32(*r_dst) / src;
7821     remainder = MAKE_INT_32(*r_dst) % src;
7822 
7823     if(quotient == MAKE_INT_16(quotient))
7824     {
7825       FLAG_Z = quotient;
7826       FLAG_N = NFLAG_16(quotient);
7827       FLAG_V = VFLAG_CLEAR;
7828       FLAG_C = CFLAG_CLEAR;
7829       *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
7830       return;
7831     }
7832     FLAG_V = VFLAG_SET;
7833     FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */
7834     FLAG_C = CFLAG_CLEAR;
7835     return;
7836   }
7837   FLAG_C = CFLAG_CLEAR;
7838   m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);
7839 }
7840 
7841 
m68k_op_divs_16_ix(void)7842 static void m68k_op_divs_16_ix(void)
7843 {
7844   uint* r_dst = &DX;
7845   sint src = MAKE_INT_16(OPER_AY_IX_16());
7846   sint quotient;
7847   sint remainder;
7848 
7849   if(src != 0)
7850   {
7851     UseDivsCycles(*r_dst,src);
7852 
7853     if((uint32)*r_dst == 0x80000000 && src == -1)
7854     {
7855       FLAG_Z = 0;
7856       FLAG_N = NFLAG_CLEAR;
7857       FLAG_V = VFLAG_CLEAR;
7858       FLAG_C = CFLAG_CLEAR;
7859       *r_dst = 0;
7860       return;
7861     }
7862 
7863     quotient = MAKE_INT_32(*r_dst) / src;
7864     remainder = MAKE_INT_32(*r_dst) % src;
7865 
7866     if(quotient == MAKE_INT_16(quotient))
7867     {
7868       FLAG_Z = quotient;
7869       FLAG_N = NFLAG_16(quotient);
7870       FLAG_V = VFLAG_CLEAR;
7871       FLAG_C = CFLAG_CLEAR;
7872       *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
7873       return;
7874     }
7875     FLAG_V = VFLAG_SET;
7876     FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */
7877     FLAG_C = CFLAG_CLEAR;
7878     return;
7879   }
7880   FLAG_C = CFLAG_CLEAR;
7881   m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);
7882 }
7883 
7884 
m68k_op_divs_16_aw(void)7885 static void m68k_op_divs_16_aw(void)
7886 {
7887   uint* r_dst = &DX;
7888   sint src = MAKE_INT_16(OPER_AW_16());
7889   sint quotient;
7890   sint remainder;
7891 
7892   if(src != 0)
7893   {
7894     UseDivsCycles(*r_dst,src);
7895 
7896     if((uint32)*r_dst == 0x80000000 && src == -1)
7897     {
7898       FLAG_Z = 0;
7899       FLAG_N = NFLAG_CLEAR;
7900       FLAG_V = VFLAG_CLEAR;
7901       FLAG_C = CFLAG_CLEAR;
7902       *r_dst = 0;
7903       return;
7904     }
7905 
7906     quotient = MAKE_INT_32(*r_dst) / src;
7907     remainder = MAKE_INT_32(*r_dst) % src;
7908 
7909     if(quotient == MAKE_INT_16(quotient))
7910     {
7911       FLAG_Z = quotient;
7912       FLAG_N = NFLAG_16(quotient);
7913       FLAG_V = VFLAG_CLEAR;
7914       FLAG_C = CFLAG_CLEAR;
7915       *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
7916       return;
7917     }
7918     FLAG_V = VFLAG_SET;
7919     FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */
7920     FLAG_C = CFLAG_CLEAR;
7921     return;
7922   }
7923   FLAG_C = CFLAG_CLEAR;
7924   m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);
7925 }
7926 
7927 
m68k_op_divs_16_al(void)7928 static void m68k_op_divs_16_al(void)
7929 {
7930   uint* r_dst = &DX;
7931   sint src = MAKE_INT_16(OPER_AL_16());
7932   sint quotient;
7933   sint remainder;
7934 
7935   if(src != 0)
7936   {
7937     UseDivsCycles(*r_dst,src);
7938 
7939     if((uint32)*r_dst == 0x80000000 && src == -1)
7940     {
7941       FLAG_Z = 0;
7942       FLAG_N = NFLAG_CLEAR;
7943       FLAG_V = VFLAG_CLEAR;
7944       FLAG_C = CFLAG_CLEAR;
7945       *r_dst = 0;
7946       return;
7947     }
7948 
7949     quotient = MAKE_INT_32(*r_dst) / src;
7950     remainder = MAKE_INT_32(*r_dst) % src;
7951 
7952     if(quotient == MAKE_INT_16(quotient))
7953     {
7954       FLAG_Z = quotient;
7955       FLAG_N = NFLAG_16(quotient);
7956       FLAG_V = VFLAG_CLEAR;
7957       FLAG_C = CFLAG_CLEAR;
7958       *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
7959       return;
7960     }
7961     FLAG_V = VFLAG_SET;
7962     FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */
7963     FLAG_C = CFLAG_CLEAR;
7964     return;
7965   }
7966   FLAG_C = CFLAG_CLEAR;
7967   m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);
7968 }
7969 
7970 
m68k_op_divs_16_pcdi(void)7971 static void m68k_op_divs_16_pcdi(void)
7972 {
7973   uint* r_dst = &DX;
7974   sint src = MAKE_INT_16(OPER_PCDI_16());
7975   sint quotient;
7976   sint remainder;
7977 
7978   if(src != 0)
7979   {
7980     UseDivsCycles(*r_dst,src);
7981 
7982     if((uint32)*r_dst == 0x80000000 && src == -1)
7983     {
7984       FLAG_Z = 0;
7985       FLAG_N = NFLAG_CLEAR;
7986       FLAG_V = VFLAG_CLEAR;
7987       FLAG_C = CFLAG_CLEAR;
7988       *r_dst = 0;
7989       return;
7990     }
7991 
7992     quotient = MAKE_INT_32(*r_dst) / src;
7993     remainder = MAKE_INT_32(*r_dst) % src;
7994 
7995     if(quotient == MAKE_INT_16(quotient))
7996     {
7997       FLAG_Z = quotient;
7998       FLAG_N = NFLAG_16(quotient);
7999       FLAG_V = VFLAG_CLEAR;
8000       FLAG_C = CFLAG_CLEAR;
8001       *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
8002       return;
8003     }
8004     FLAG_V = VFLAG_SET;
8005     FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */
8006     FLAG_C = CFLAG_CLEAR;
8007     return;
8008   }
8009   FLAG_C = CFLAG_CLEAR;
8010   m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);
8011 }
8012 
8013 
m68k_op_divs_16_pcix(void)8014 static void m68k_op_divs_16_pcix(void)
8015 {
8016   uint* r_dst = &DX;
8017   sint src = MAKE_INT_16(OPER_PCIX_16());
8018   sint quotient;
8019   sint remainder;
8020 
8021   if(src != 0)
8022   {
8023     UseDivsCycles(*r_dst,src);
8024 
8025     if((uint32)*r_dst == 0x80000000 && src == -1)
8026     {
8027       FLAG_Z = 0;
8028       FLAG_N = NFLAG_CLEAR;
8029       FLAG_V = VFLAG_CLEAR;
8030       FLAG_C = CFLAG_CLEAR;
8031       *r_dst = 0;
8032       return;
8033     }
8034 
8035     quotient = MAKE_INT_32(*r_dst) / src;
8036     remainder = MAKE_INT_32(*r_dst) % src;
8037 
8038     if(quotient == MAKE_INT_16(quotient))
8039     {
8040       FLAG_Z = quotient;
8041       FLAG_N = NFLAG_16(quotient);
8042       FLAG_V = VFLAG_CLEAR;
8043       FLAG_C = CFLAG_CLEAR;
8044       *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
8045       return;
8046     }
8047     FLAG_V = VFLAG_SET;
8048     FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */
8049     FLAG_C = CFLAG_CLEAR;
8050     return;
8051   }
8052   FLAG_C = CFLAG_CLEAR;
8053   m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);
8054 }
8055 
8056 
m68k_op_divs_16_i(void)8057 static void m68k_op_divs_16_i(void)
8058 {
8059   uint* r_dst = &DX;
8060   sint src = MAKE_INT_16(OPER_I_16());
8061   sint quotient;
8062   sint remainder;
8063 
8064   if(src != 0)
8065   {
8066     UseDivsCycles(*r_dst,src);
8067 
8068     if((uint32)*r_dst == 0x80000000 && src == -1)
8069     {
8070       FLAG_Z = 0;
8071       FLAG_N = NFLAG_CLEAR;
8072       FLAG_V = VFLAG_CLEAR;
8073       FLAG_C = CFLAG_CLEAR;
8074       *r_dst = 0;
8075       return;
8076     }
8077 
8078     quotient = MAKE_INT_32(*r_dst) / src;
8079     remainder = MAKE_INT_32(*r_dst) % src;
8080 
8081     if(quotient == MAKE_INT_16(quotient))
8082     {
8083       FLAG_Z = quotient;
8084       FLAG_N = NFLAG_16(quotient);
8085       FLAG_V = VFLAG_CLEAR;
8086       FLAG_C = CFLAG_CLEAR;
8087       *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
8088       return;
8089     }
8090     FLAG_V = VFLAG_SET;
8091     FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */
8092     FLAG_C = CFLAG_CLEAR;
8093     return;
8094   }
8095   FLAG_C = CFLAG_CLEAR;
8096   m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);
8097 }
8098 
8099 
m68k_op_divu_16_d(void)8100 static void m68k_op_divu_16_d(void)
8101 {
8102   uint* r_dst = &DX;
8103   uint src = MASK_OUT_ABOVE_16(DY);
8104 
8105   if(src != 0)
8106   {
8107     uint quotient = *r_dst / src;
8108     uint remainder = *r_dst % src;
8109 
8110     if(quotient < 0x10000)
8111     {
8112       UseDivuCycles(*r_dst,src);
8113       FLAG_Z = quotient;
8114       FLAG_N = NFLAG_16(quotient);
8115       FLAG_V = VFLAG_CLEAR;
8116       FLAG_C = CFLAG_CLEAR;
8117       *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
8118       return;
8119     }
8120     USE_CYCLES(MUL * 10);
8121     FLAG_V = VFLAG_SET;
8122     FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */
8123     FLAG_C = CFLAG_CLEAR;
8124     return;
8125   }
8126   FLAG_C = CFLAG_CLEAR;
8127   m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);
8128 }
8129 
8130 
m68k_op_divu_16_ai(void)8131 static void m68k_op_divu_16_ai(void)
8132 {
8133   uint* r_dst = &DX;
8134   uint src = OPER_AY_AI_16();
8135 
8136   if(src != 0)
8137   {
8138     uint quotient = *r_dst / src;
8139     uint remainder = *r_dst % src;
8140 
8141     if(quotient < 0x10000)
8142     {
8143       UseDivuCycles(*r_dst,src);
8144       FLAG_Z = quotient;
8145       FLAG_N = NFLAG_16(quotient);
8146       FLAG_V = VFLAG_CLEAR;
8147       FLAG_C = CFLAG_CLEAR;
8148       *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
8149       return;
8150     }
8151     USE_CYCLES(MUL * 10);
8152     FLAG_V = VFLAG_SET;
8153     FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */
8154     FLAG_C = CFLAG_CLEAR;
8155     return;
8156   }
8157   FLAG_C = CFLAG_CLEAR;
8158   m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);
8159 }
8160 
8161 
m68k_op_divu_16_pi(void)8162 static void m68k_op_divu_16_pi(void)
8163 {
8164   uint* r_dst = &DX;
8165   uint src = OPER_AY_PI_16();
8166 
8167   if(src != 0)
8168   {
8169     uint quotient = *r_dst / src;
8170     uint remainder = *r_dst % src;
8171 
8172     if(quotient < 0x10000)
8173     {
8174       UseDivuCycles(*r_dst,src);
8175       FLAG_Z = quotient;
8176       FLAG_N = NFLAG_16(quotient);
8177       FLAG_V = VFLAG_CLEAR;
8178       FLAG_C = CFLAG_CLEAR;
8179       *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
8180       return;
8181     }
8182     USE_CYCLES(MUL * 10);
8183     FLAG_V = VFLAG_SET;
8184     FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */
8185     FLAG_C = CFLAG_CLEAR;
8186     return;
8187   }
8188   FLAG_C = CFLAG_CLEAR;
8189   m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);
8190 }
8191 
8192 
m68k_op_divu_16_pd(void)8193 static void m68k_op_divu_16_pd(void)
8194 {
8195   uint* r_dst = &DX;
8196   uint src = OPER_AY_PD_16();
8197 
8198   if(src != 0)
8199   {
8200     uint quotient = *r_dst / src;
8201     uint remainder = *r_dst % src;
8202 
8203     if(quotient < 0x10000)
8204     {
8205       UseDivuCycles(*r_dst,src);
8206       FLAG_Z = quotient;
8207       FLAG_N = NFLAG_16(quotient);
8208       FLAG_V = VFLAG_CLEAR;
8209       FLAG_C = CFLAG_CLEAR;
8210       *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
8211       return;
8212     }
8213     USE_CYCLES(MUL * 10);
8214     FLAG_V = VFLAG_SET;
8215     FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */
8216     FLAG_C = CFLAG_CLEAR;
8217     return;
8218   }
8219   FLAG_C = CFLAG_CLEAR;
8220   m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);
8221 }
8222 
8223 
m68k_op_divu_16_di(void)8224 static void m68k_op_divu_16_di(void)
8225 {
8226   uint* r_dst = &DX;
8227   uint src = OPER_AY_DI_16();
8228 
8229   if(src != 0)
8230   {
8231     uint quotient = *r_dst / src;
8232     uint remainder = *r_dst % src;
8233 
8234     if(quotient < 0x10000)
8235     {
8236       UseDivuCycles(*r_dst,src);
8237       FLAG_Z = quotient;
8238       FLAG_N = NFLAG_16(quotient);
8239       FLAG_V = VFLAG_CLEAR;
8240       FLAG_C = CFLAG_CLEAR;
8241       *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
8242       return;
8243     }
8244     USE_CYCLES(MUL * 10);
8245     FLAG_V = VFLAG_SET;
8246     FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */
8247     FLAG_C = CFLAG_CLEAR;
8248     return;
8249   }
8250   FLAG_C = CFLAG_CLEAR;
8251   m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);
8252 }
8253 
8254 
m68k_op_divu_16_ix(void)8255 static void m68k_op_divu_16_ix(void)
8256 {
8257   uint* r_dst = &DX;
8258   uint src = OPER_AY_IX_16();
8259 
8260   if(src != 0)
8261   {
8262     uint quotient = *r_dst / src;
8263     uint remainder = *r_dst % src;
8264 
8265     if(quotient < 0x10000)
8266     {
8267       UseDivuCycles(*r_dst,src);
8268       FLAG_Z = quotient;
8269       FLAG_N = NFLAG_16(quotient);
8270       FLAG_V = VFLAG_CLEAR;
8271       FLAG_C = CFLAG_CLEAR;
8272       *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
8273       return;
8274     }
8275     USE_CYCLES(MUL * 10);
8276     FLAG_V = VFLAG_SET;
8277     FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */
8278     FLAG_C = CFLAG_CLEAR;
8279     return;
8280   }
8281   FLAG_C = CFLAG_CLEAR;
8282   m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);
8283 }
8284 
8285 
m68k_op_divu_16_aw(void)8286 static void m68k_op_divu_16_aw(void)
8287 {
8288   uint* r_dst = &DX;
8289   uint src = OPER_AW_16();
8290 
8291   if(src != 0)
8292   {
8293     uint quotient = *r_dst / src;
8294     uint remainder = *r_dst % src;
8295 
8296     if(quotient < 0x10000)
8297     {
8298       UseDivuCycles(*r_dst,src);
8299       FLAG_Z = quotient;
8300       FLAG_N = NFLAG_16(quotient);
8301       FLAG_V = VFLAG_CLEAR;
8302       FLAG_C = CFLAG_CLEAR;
8303       *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
8304       return;
8305     }
8306     USE_CYCLES(MUL * 10);
8307     FLAG_V = VFLAG_SET;
8308     FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */
8309     FLAG_C = CFLAG_CLEAR;
8310     return;
8311   }
8312   FLAG_C = CFLAG_CLEAR;
8313   m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);
8314 }
8315 
8316 
m68k_op_divu_16_al(void)8317 static void m68k_op_divu_16_al(void)
8318 {
8319   uint* r_dst = &DX;
8320   uint src = OPER_AL_16();
8321 
8322   if(src != 0)
8323   {
8324     uint quotient = *r_dst / src;
8325     uint remainder = *r_dst % src;
8326 
8327     if(quotient < 0x10000)
8328     {
8329       UseDivuCycles(*r_dst,src);
8330       FLAG_Z = quotient;
8331       FLAG_N = NFLAG_16(quotient);
8332       FLAG_V = VFLAG_CLEAR;
8333       FLAG_C = CFLAG_CLEAR;
8334       *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
8335       return;
8336     }
8337     USE_CYCLES(MUL * 10);
8338     FLAG_V = VFLAG_SET;
8339     FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */
8340     FLAG_C = CFLAG_CLEAR;
8341     return;
8342   }
8343   FLAG_C = CFLAG_CLEAR;
8344   m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);
8345 }
8346 
8347 
m68k_op_divu_16_pcdi(void)8348 static void m68k_op_divu_16_pcdi(void)
8349 {
8350   uint* r_dst = &DX;
8351   uint src = OPER_PCDI_16();
8352 
8353   if(src != 0)
8354   {
8355     uint quotient = *r_dst / src;
8356     uint remainder = *r_dst % src;
8357 
8358     if(quotient < 0x10000)
8359     {
8360       UseDivuCycles(*r_dst,src);
8361       FLAG_Z = quotient;
8362       FLAG_N = NFLAG_16(quotient);
8363       FLAG_V = VFLAG_CLEAR;
8364       FLAG_C = CFLAG_CLEAR;
8365       *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
8366       return;
8367     }
8368     USE_CYCLES(MUL * 10);
8369     FLAG_V = VFLAG_SET;
8370     FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */
8371     FLAG_C = CFLAG_CLEAR;
8372     return;
8373   }
8374   FLAG_C = CFLAG_CLEAR;
8375   m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);
8376 }
8377 
8378 
m68k_op_divu_16_pcix(void)8379 static void m68k_op_divu_16_pcix(void)
8380 {
8381   uint* r_dst = &DX;
8382   uint src = OPER_PCIX_16();
8383 
8384   if(src != 0)
8385   {
8386     uint quotient = *r_dst / src;
8387     uint remainder = *r_dst % src;
8388 
8389     if(quotient < 0x10000)
8390     {
8391       UseDivuCycles(*r_dst,src);
8392       FLAG_Z = quotient;
8393       FLAG_N = NFLAG_16(quotient);
8394       FLAG_V = VFLAG_CLEAR;
8395       FLAG_C = CFLAG_CLEAR;
8396       *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
8397       return;
8398     }
8399     USE_CYCLES(MUL * 10);
8400     FLAG_V = VFLAG_SET;
8401     FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */
8402     FLAG_C = CFLAG_CLEAR;
8403     return;
8404   }
8405   FLAG_C = CFLAG_CLEAR;
8406   m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);
8407 }
8408 
8409 
m68k_op_divu_16_i(void)8410 static void m68k_op_divu_16_i(void)
8411 {
8412   uint* r_dst = &DX;
8413   uint src = OPER_I_16();
8414 
8415   if(src != 0)
8416   {
8417     uint quotient = *r_dst / src;
8418     uint remainder = *r_dst % src;
8419 
8420     if(quotient < 0x10000)
8421     {
8422       UseDivuCycles(*r_dst,src);
8423       FLAG_Z = quotient;
8424       FLAG_N = NFLAG_16(quotient);
8425       FLAG_V = VFLAG_CLEAR;
8426       FLAG_C = CFLAG_CLEAR;
8427       *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
8428       return;
8429     }
8430     USE_CYCLES(MUL * 10);
8431     FLAG_V = VFLAG_SET;
8432     FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */
8433     FLAG_C = CFLAG_CLEAR;
8434     return;
8435   }
8436   FLAG_C = CFLAG_CLEAR;
8437   m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);
8438 }
8439 
8440 
m68k_op_eor_8_d(void)8441 static void m68k_op_eor_8_d(void)
8442 {
8443   uint res = MASK_OUT_ABOVE_8(DY ^= MASK_OUT_ABOVE_8(DX));
8444 
8445   FLAG_N = NFLAG_8(res);
8446   FLAG_Z = res;
8447   FLAG_C = CFLAG_CLEAR;
8448   FLAG_V = VFLAG_CLEAR;
8449 }
8450 
8451 
m68k_op_eor_8_ai(void)8452 static void m68k_op_eor_8_ai(void)
8453 {
8454   uint ea = EA_AY_AI_8();
8455   uint res = MASK_OUT_ABOVE_8(DX ^ m68ki_read_8(ea));
8456 
8457   m68ki_write_8(ea, res);
8458 
8459   FLAG_N = NFLAG_8(res);
8460   FLAG_Z = res;
8461   FLAG_C = CFLAG_CLEAR;
8462   FLAG_V = VFLAG_CLEAR;
8463 }
8464 
8465 
m68k_op_eor_8_pi(void)8466 static void m68k_op_eor_8_pi(void)
8467 {
8468   uint ea = EA_AY_PI_8();
8469   uint res = MASK_OUT_ABOVE_8(DX ^ m68ki_read_8(ea));
8470 
8471   m68ki_write_8(ea, res);
8472 
8473   FLAG_N = NFLAG_8(res);
8474   FLAG_Z = res;
8475   FLAG_C = CFLAG_CLEAR;
8476   FLAG_V = VFLAG_CLEAR;
8477 }
8478 
8479 
m68k_op_eor_8_pi7(void)8480 static void m68k_op_eor_8_pi7(void)
8481 {
8482   uint ea = EA_A7_PI_8();
8483   uint res = MASK_OUT_ABOVE_8(DX ^ m68ki_read_8(ea));
8484 
8485   m68ki_write_8(ea, res);
8486 
8487   FLAG_N = NFLAG_8(res);
8488   FLAG_Z = res;
8489   FLAG_C = CFLAG_CLEAR;
8490   FLAG_V = VFLAG_CLEAR;
8491 }
8492 
8493 
m68k_op_eor_8_pd(void)8494 static void m68k_op_eor_8_pd(void)
8495 {
8496   uint ea = EA_AY_PD_8();
8497   uint res = MASK_OUT_ABOVE_8(DX ^ m68ki_read_8(ea));
8498 
8499   m68ki_write_8(ea, res);
8500 
8501   FLAG_N = NFLAG_8(res);
8502   FLAG_Z = res;
8503   FLAG_C = CFLAG_CLEAR;
8504   FLAG_V = VFLAG_CLEAR;
8505 }
8506 
8507 
m68k_op_eor_8_pd7(void)8508 static void m68k_op_eor_8_pd7(void)
8509 {
8510   uint ea = EA_A7_PD_8();
8511   uint res = MASK_OUT_ABOVE_8(DX ^ m68ki_read_8(ea));
8512 
8513   m68ki_write_8(ea, res);
8514 
8515   FLAG_N = NFLAG_8(res);
8516   FLAG_Z = res;
8517   FLAG_C = CFLAG_CLEAR;
8518   FLAG_V = VFLAG_CLEAR;
8519 }
8520 
8521 
m68k_op_eor_8_di(void)8522 static void m68k_op_eor_8_di(void)
8523 {
8524   uint ea = EA_AY_DI_8();
8525   uint res = MASK_OUT_ABOVE_8(DX ^ m68ki_read_8(ea));
8526 
8527   m68ki_write_8(ea, res);
8528 
8529   FLAG_N = NFLAG_8(res);
8530   FLAG_Z = res;
8531   FLAG_C = CFLAG_CLEAR;
8532   FLAG_V = VFLAG_CLEAR;
8533 }
8534 
8535 
m68k_op_eor_8_ix(void)8536 static void m68k_op_eor_8_ix(void)
8537 {
8538   uint ea = EA_AY_IX_8();
8539   uint res = MASK_OUT_ABOVE_8(DX ^ m68ki_read_8(ea));
8540 
8541   m68ki_write_8(ea, res);
8542 
8543   FLAG_N = NFLAG_8(res);
8544   FLAG_Z = res;
8545   FLAG_C = CFLAG_CLEAR;
8546   FLAG_V = VFLAG_CLEAR;
8547 }
8548 
8549 
m68k_op_eor_8_aw(void)8550 static void m68k_op_eor_8_aw(void)
8551 {
8552   uint ea = EA_AW_8();
8553   uint res = MASK_OUT_ABOVE_8(DX ^ m68ki_read_8(ea));
8554 
8555   m68ki_write_8(ea, res);
8556 
8557   FLAG_N = NFLAG_8(res);
8558   FLAG_Z = res;
8559   FLAG_C = CFLAG_CLEAR;
8560   FLAG_V = VFLAG_CLEAR;
8561 }
8562 
8563 
m68k_op_eor_8_al(void)8564 static void m68k_op_eor_8_al(void)
8565 {
8566   uint ea = EA_AL_8();
8567   uint res = MASK_OUT_ABOVE_8(DX ^ m68ki_read_8(ea));
8568 
8569   m68ki_write_8(ea, res);
8570 
8571   FLAG_N = NFLAG_8(res);
8572   FLAG_Z = res;
8573   FLAG_C = CFLAG_CLEAR;
8574   FLAG_V = VFLAG_CLEAR;
8575 }
8576 
8577 
m68k_op_eor_16_d(void)8578 static void m68k_op_eor_16_d(void)
8579 {
8580   uint res = MASK_OUT_ABOVE_16(DY ^= MASK_OUT_ABOVE_16(DX));
8581 
8582   FLAG_N = NFLAG_16(res);
8583   FLAG_Z = res;
8584   FLAG_C = CFLAG_CLEAR;
8585   FLAG_V = VFLAG_CLEAR;
8586 }
8587 
8588 
m68k_op_eor_16_ai(void)8589 static void m68k_op_eor_16_ai(void)
8590 {
8591   uint ea = EA_AY_AI_16();
8592   uint res = MASK_OUT_ABOVE_16(DX ^ m68ki_read_16(ea));
8593 
8594   m68ki_write_16(ea, res);
8595 
8596   FLAG_N = NFLAG_16(res);
8597   FLAG_Z = res;
8598   FLAG_C = CFLAG_CLEAR;
8599   FLAG_V = VFLAG_CLEAR;
8600 }
8601 
8602 
m68k_op_eor_16_pi(void)8603 static void m68k_op_eor_16_pi(void)
8604 {
8605   uint ea = EA_AY_PI_16();
8606   uint res = MASK_OUT_ABOVE_16(DX ^ m68ki_read_16(ea));
8607 
8608   m68ki_write_16(ea, res);
8609 
8610   FLAG_N = NFLAG_16(res);
8611   FLAG_Z = res;
8612   FLAG_C = CFLAG_CLEAR;
8613   FLAG_V = VFLAG_CLEAR;
8614 }
8615 
8616 
m68k_op_eor_16_pd(void)8617 static void m68k_op_eor_16_pd(void)
8618 {
8619   uint ea = EA_AY_PD_16();
8620   uint res = MASK_OUT_ABOVE_16(DX ^ m68ki_read_16(ea));
8621 
8622   m68ki_write_16(ea, res);
8623 
8624   FLAG_N = NFLAG_16(res);
8625   FLAG_Z = res;
8626   FLAG_C = CFLAG_CLEAR;
8627   FLAG_V = VFLAG_CLEAR;
8628 }
8629 
8630 
m68k_op_eor_16_di(void)8631 static void m68k_op_eor_16_di(void)
8632 {
8633   uint ea = EA_AY_DI_16();
8634   uint res = MASK_OUT_ABOVE_16(DX ^ m68ki_read_16(ea));
8635 
8636   m68ki_write_16(ea, res);
8637 
8638   FLAG_N = NFLAG_16(res);
8639   FLAG_Z = res;
8640   FLAG_C = CFLAG_CLEAR;
8641   FLAG_V = VFLAG_CLEAR;
8642 }
8643 
8644 
m68k_op_eor_16_ix(void)8645 static void m68k_op_eor_16_ix(void)
8646 {
8647   uint ea = EA_AY_IX_16();
8648   uint res = MASK_OUT_ABOVE_16(DX ^ m68ki_read_16(ea));
8649 
8650   m68ki_write_16(ea, res);
8651 
8652   FLAG_N = NFLAG_16(res);
8653   FLAG_Z = res;
8654   FLAG_C = CFLAG_CLEAR;
8655   FLAG_V = VFLAG_CLEAR;
8656 }
8657 
8658 
m68k_op_eor_16_aw(void)8659 static void m68k_op_eor_16_aw(void)
8660 {
8661   uint ea = EA_AW_16();
8662   uint res = MASK_OUT_ABOVE_16(DX ^ m68ki_read_16(ea));
8663 
8664   m68ki_write_16(ea, res);
8665 
8666   FLAG_N = NFLAG_16(res);
8667   FLAG_Z = res;
8668   FLAG_C = CFLAG_CLEAR;
8669   FLAG_V = VFLAG_CLEAR;
8670 }
8671 
8672 
m68k_op_eor_16_al(void)8673 static void m68k_op_eor_16_al(void)
8674 {
8675   uint ea = EA_AL_16();
8676   uint res = MASK_OUT_ABOVE_16(DX ^ m68ki_read_16(ea));
8677 
8678   m68ki_write_16(ea, res);
8679 
8680   FLAG_N = NFLAG_16(res);
8681   FLAG_Z = res;
8682   FLAG_C = CFLAG_CLEAR;
8683   FLAG_V = VFLAG_CLEAR;
8684 }
8685 
8686 
m68k_op_eor_32_d(void)8687 static void m68k_op_eor_32_d(void)
8688 {
8689   uint res = DY ^= DX;
8690 
8691   FLAG_N = NFLAG_32(res);
8692   FLAG_Z = res;
8693   FLAG_C = CFLAG_CLEAR;
8694   FLAG_V = VFLAG_CLEAR;
8695 }
8696 
8697 
m68k_op_eor_32_ai(void)8698 static void m68k_op_eor_32_ai(void)
8699 {
8700   uint ea = EA_AY_AI_32();
8701   uint res = DX ^ m68ki_read_32(ea);
8702 
8703   m68ki_write_32(ea, res);
8704 
8705   FLAG_N = NFLAG_32(res);
8706   FLAG_Z = res;
8707   FLAG_C = CFLAG_CLEAR;
8708   FLAG_V = VFLAG_CLEAR;
8709 }
8710 
8711 
m68k_op_eor_32_pi(void)8712 static void m68k_op_eor_32_pi(void)
8713 {
8714   uint ea = EA_AY_PI_32();
8715   uint res = DX ^ m68ki_read_32(ea);
8716 
8717   m68ki_write_32(ea, res);
8718 
8719   FLAG_N = NFLAG_32(res);
8720   FLAG_Z = res;
8721   FLAG_C = CFLAG_CLEAR;
8722   FLAG_V = VFLAG_CLEAR;
8723 }
8724 
8725 
m68k_op_eor_32_pd(void)8726 static void m68k_op_eor_32_pd(void)
8727 {
8728   uint ea = EA_AY_PD_32();
8729   uint res = DX ^ m68ki_read_32(ea);
8730 
8731   m68ki_write_32(ea, res);
8732 
8733   FLAG_N = NFLAG_32(res);
8734   FLAG_Z = res;
8735   FLAG_C = CFLAG_CLEAR;
8736   FLAG_V = VFLAG_CLEAR;
8737 }
8738 
8739 
m68k_op_eor_32_di(void)8740 static void m68k_op_eor_32_di(void)
8741 {
8742   uint ea = EA_AY_DI_32();
8743   uint res = DX ^ m68ki_read_32(ea);
8744 
8745   m68ki_write_32(ea, res);
8746 
8747   FLAG_N = NFLAG_32(res);
8748   FLAG_Z = res;
8749   FLAG_C = CFLAG_CLEAR;
8750   FLAG_V = VFLAG_CLEAR;
8751 }
8752 
8753 
m68k_op_eor_32_ix(void)8754 static void m68k_op_eor_32_ix(void)
8755 {
8756   uint ea = EA_AY_IX_32();
8757   uint res = DX ^ m68ki_read_32(ea);
8758 
8759   m68ki_write_32(ea, res);
8760 
8761   FLAG_N = NFLAG_32(res);
8762   FLAG_Z = res;
8763   FLAG_C = CFLAG_CLEAR;
8764   FLAG_V = VFLAG_CLEAR;
8765 }
8766 
8767 
m68k_op_eor_32_aw(void)8768 static void m68k_op_eor_32_aw(void)
8769 {
8770   uint ea = EA_AW_32();
8771   uint res = DX ^ m68ki_read_32(ea);
8772 
8773   m68ki_write_32(ea, res);
8774 
8775   FLAG_N = NFLAG_32(res);
8776   FLAG_Z = res;
8777   FLAG_C = CFLAG_CLEAR;
8778   FLAG_V = VFLAG_CLEAR;
8779 }
8780 
8781 
m68k_op_eor_32_al(void)8782 static void m68k_op_eor_32_al(void)
8783 {
8784   uint ea = EA_AL_32();
8785   uint res = DX ^ m68ki_read_32(ea);
8786 
8787   m68ki_write_32(ea, res);
8788 
8789   FLAG_N = NFLAG_32(res);
8790   FLAG_Z = res;
8791   FLAG_C = CFLAG_CLEAR;
8792   FLAG_V = VFLAG_CLEAR;
8793 }
8794 
8795 
m68k_op_eori_8_d(void)8796 static void m68k_op_eori_8_d(void)
8797 {
8798   uint res = MASK_OUT_ABOVE_8(DY ^= OPER_I_8());
8799 
8800   FLAG_N = NFLAG_8(res);
8801   FLAG_Z = res;
8802   FLAG_C = CFLAG_CLEAR;
8803   FLAG_V = VFLAG_CLEAR;
8804 }
8805 
8806 
m68k_op_eori_8_ai(void)8807 static void m68k_op_eori_8_ai(void)
8808 {
8809   uint src = OPER_I_8();
8810   uint ea = EA_AY_AI_8();
8811   uint res = src ^ m68ki_read_8(ea);
8812 
8813   m68ki_write_8(ea, res);
8814 
8815   FLAG_N = NFLAG_8(res);
8816   FLAG_Z = res;
8817   FLAG_C = CFLAG_CLEAR;
8818   FLAG_V = VFLAG_CLEAR;
8819 }
8820 
8821 
m68k_op_eori_8_pi(void)8822 static void m68k_op_eori_8_pi(void)
8823 {
8824   uint src = OPER_I_8();
8825   uint ea = EA_AY_PI_8();
8826   uint res = src ^ m68ki_read_8(ea);
8827 
8828   m68ki_write_8(ea, res);
8829 
8830   FLAG_N = NFLAG_8(res);
8831   FLAG_Z = res;
8832   FLAG_C = CFLAG_CLEAR;
8833   FLAG_V = VFLAG_CLEAR;
8834 }
8835 
8836 
m68k_op_eori_8_pi7(void)8837 static void m68k_op_eori_8_pi7(void)
8838 {
8839   uint src = OPER_I_8();
8840   uint ea = EA_A7_PI_8();
8841   uint res = src ^ m68ki_read_8(ea);
8842 
8843   m68ki_write_8(ea, res);
8844 
8845   FLAG_N = NFLAG_8(res);
8846   FLAG_Z = res;
8847   FLAG_C = CFLAG_CLEAR;
8848   FLAG_V = VFLAG_CLEAR;
8849 }
8850 
8851 
m68k_op_eori_8_pd(void)8852 static void m68k_op_eori_8_pd(void)
8853 {
8854   uint src = OPER_I_8();
8855   uint ea = EA_AY_PD_8();
8856   uint res = src ^ m68ki_read_8(ea);
8857 
8858   m68ki_write_8(ea, res);
8859 
8860   FLAG_N = NFLAG_8(res);
8861   FLAG_Z = res;
8862   FLAG_C = CFLAG_CLEAR;
8863   FLAG_V = VFLAG_CLEAR;
8864 }
8865 
8866 
m68k_op_eori_8_pd7(void)8867 static void m68k_op_eori_8_pd7(void)
8868 {
8869   uint src = OPER_I_8();
8870   uint ea = EA_A7_PD_8();
8871   uint res = src ^ m68ki_read_8(ea);
8872 
8873   m68ki_write_8(ea, res);
8874 
8875   FLAG_N = NFLAG_8(res);
8876   FLAG_Z = res;
8877   FLAG_C = CFLAG_CLEAR;
8878   FLAG_V = VFLAG_CLEAR;
8879 }
8880 
8881 
m68k_op_eori_8_di(void)8882 static void m68k_op_eori_8_di(void)
8883 {
8884   uint src = OPER_I_8();
8885   uint ea = EA_AY_DI_8();
8886   uint res = src ^ m68ki_read_8(ea);
8887 
8888   m68ki_write_8(ea, res);
8889 
8890   FLAG_N = NFLAG_8(res);
8891   FLAG_Z = res;
8892   FLAG_C = CFLAG_CLEAR;
8893   FLAG_V = VFLAG_CLEAR;
8894 }
8895 
8896 
m68k_op_eori_8_ix(void)8897 static void m68k_op_eori_8_ix(void)
8898 {
8899   uint src = OPER_I_8();
8900   uint ea = EA_AY_IX_8();
8901   uint res = src ^ m68ki_read_8(ea);
8902 
8903   m68ki_write_8(ea, res);
8904 
8905   FLAG_N = NFLAG_8(res);
8906   FLAG_Z = res;
8907   FLAG_C = CFLAG_CLEAR;
8908   FLAG_V = VFLAG_CLEAR;
8909 }
8910 
8911 
m68k_op_eori_8_aw(void)8912 static void m68k_op_eori_8_aw(void)
8913 {
8914   uint src = OPER_I_8();
8915   uint ea = EA_AW_8();
8916   uint res = src ^ m68ki_read_8(ea);
8917 
8918   m68ki_write_8(ea, res);
8919 
8920   FLAG_N = NFLAG_8(res);
8921   FLAG_Z = res;
8922   FLAG_C = CFLAG_CLEAR;
8923   FLAG_V = VFLAG_CLEAR;
8924 }
8925 
8926 
m68k_op_eori_8_al(void)8927 static void m68k_op_eori_8_al(void)
8928 {
8929   uint src = OPER_I_8();
8930   uint ea = EA_AL_8();
8931   uint res = src ^ m68ki_read_8(ea);
8932 
8933   m68ki_write_8(ea, res);
8934 
8935   FLAG_N = NFLAG_8(res);
8936   FLAG_Z = res;
8937   FLAG_C = CFLAG_CLEAR;
8938   FLAG_V = VFLAG_CLEAR;
8939 }
8940 
8941 
m68k_op_eori_16_d(void)8942 static void m68k_op_eori_16_d(void)
8943 {
8944   uint res = MASK_OUT_ABOVE_16(DY ^= OPER_I_16());
8945 
8946   FLAG_N = NFLAG_16(res);
8947   FLAG_Z = res;
8948   FLAG_C = CFLAG_CLEAR;
8949   FLAG_V = VFLAG_CLEAR;
8950 }
8951 
8952 
m68k_op_eori_16_ai(void)8953 static void m68k_op_eori_16_ai(void)
8954 {
8955   uint src = OPER_I_16();
8956   uint ea = EA_AY_AI_16();
8957   uint res = src ^ m68ki_read_16(ea);
8958 
8959   m68ki_write_16(ea, res);
8960 
8961   FLAG_N = NFLAG_16(res);
8962   FLAG_Z = res;
8963   FLAG_C = CFLAG_CLEAR;
8964   FLAG_V = VFLAG_CLEAR;
8965 }
8966 
8967 
m68k_op_eori_16_pi(void)8968 static void m68k_op_eori_16_pi(void)
8969 {
8970   uint src = OPER_I_16();
8971   uint ea = EA_AY_PI_16();
8972   uint res = src ^ m68ki_read_16(ea);
8973 
8974   m68ki_write_16(ea, res);
8975 
8976   FLAG_N = NFLAG_16(res);
8977   FLAG_Z = res;
8978   FLAG_C = CFLAG_CLEAR;
8979   FLAG_V = VFLAG_CLEAR;
8980 }
8981 
8982 
m68k_op_eori_16_pd(void)8983 static void m68k_op_eori_16_pd(void)
8984 {
8985   uint src = OPER_I_16();
8986   uint ea = EA_AY_PD_16();
8987   uint res = src ^ m68ki_read_16(ea);
8988 
8989   m68ki_write_16(ea, res);
8990 
8991   FLAG_N = NFLAG_16(res);
8992   FLAG_Z = res;
8993   FLAG_C = CFLAG_CLEAR;
8994   FLAG_V = VFLAG_CLEAR;
8995 }
8996 
8997 
m68k_op_eori_16_di(void)8998 static void m68k_op_eori_16_di(void)
8999 {
9000   uint src = OPER_I_16();
9001   uint ea = EA_AY_DI_16();
9002   uint res = src ^ m68ki_read_16(ea);
9003 
9004   m68ki_write_16(ea, res);
9005 
9006   FLAG_N = NFLAG_16(res);
9007   FLAG_Z = res;
9008   FLAG_C = CFLAG_CLEAR;
9009   FLAG_V = VFLAG_CLEAR;
9010 }
9011 
9012 
m68k_op_eori_16_ix(void)9013 static void m68k_op_eori_16_ix(void)
9014 {
9015   uint src = OPER_I_16();
9016   uint ea = EA_AY_IX_16();
9017   uint res = src ^ m68ki_read_16(ea);
9018 
9019   m68ki_write_16(ea, res);
9020 
9021   FLAG_N = NFLAG_16(res);
9022   FLAG_Z = res;
9023   FLAG_C = CFLAG_CLEAR;
9024   FLAG_V = VFLAG_CLEAR;
9025 }
9026 
9027 
m68k_op_eori_16_aw(void)9028 static void m68k_op_eori_16_aw(void)
9029 {
9030   uint src = OPER_I_16();
9031   uint ea = EA_AW_16();
9032   uint res = src ^ m68ki_read_16(ea);
9033 
9034   m68ki_write_16(ea, res);
9035 
9036   FLAG_N = NFLAG_16(res);
9037   FLAG_Z = res;
9038   FLAG_C = CFLAG_CLEAR;
9039   FLAG_V = VFLAG_CLEAR;
9040 }
9041 
9042 
m68k_op_eori_16_al(void)9043 static void m68k_op_eori_16_al(void)
9044 {
9045   uint src = OPER_I_16();
9046   uint ea = EA_AL_16();
9047   uint res = src ^ m68ki_read_16(ea);
9048 
9049   m68ki_write_16(ea, res);
9050 
9051   FLAG_N = NFLAG_16(res);
9052   FLAG_Z = res;
9053   FLAG_C = CFLAG_CLEAR;
9054   FLAG_V = VFLAG_CLEAR;
9055 }
9056 
9057 
m68k_op_eori_32_d(void)9058 static void m68k_op_eori_32_d(void)
9059 {
9060   uint res = DY ^= OPER_I_32();
9061 
9062   FLAG_N = NFLAG_32(res);
9063   FLAG_Z = res;
9064   FLAG_C = CFLAG_CLEAR;
9065   FLAG_V = VFLAG_CLEAR;
9066 }
9067 
9068 
m68k_op_eori_32_ai(void)9069 static void m68k_op_eori_32_ai(void)
9070 {
9071   uint src = OPER_I_32();
9072   uint ea = EA_AY_AI_32();
9073   uint res = src ^ m68ki_read_32(ea);
9074 
9075   m68ki_write_32(ea, res);
9076 
9077   FLAG_N = NFLAG_32(res);
9078   FLAG_Z = res;
9079   FLAG_C = CFLAG_CLEAR;
9080   FLAG_V = VFLAG_CLEAR;
9081 }
9082 
9083 
m68k_op_eori_32_pi(void)9084 static void m68k_op_eori_32_pi(void)
9085 {
9086   uint src = OPER_I_32();
9087   uint ea = EA_AY_PI_32();
9088   uint res = src ^ m68ki_read_32(ea);
9089 
9090   m68ki_write_32(ea, res);
9091 
9092   FLAG_N = NFLAG_32(res);
9093   FLAG_Z = res;
9094   FLAG_C = CFLAG_CLEAR;
9095   FLAG_V = VFLAG_CLEAR;
9096 }
9097 
9098 
m68k_op_eori_32_pd(void)9099 static void m68k_op_eori_32_pd(void)
9100 {
9101   uint src = OPER_I_32();
9102   uint ea = EA_AY_PD_32();
9103   uint res = src ^ m68ki_read_32(ea);
9104 
9105   m68ki_write_32(ea, res);
9106 
9107   FLAG_N = NFLAG_32(res);
9108   FLAG_Z = res;
9109   FLAG_C = CFLAG_CLEAR;
9110   FLAG_V = VFLAG_CLEAR;
9111 }
9112 
9113 
m68k_op_eori_32_di(void)9114 static void m68k_op_eori_32_di(void)
9115 {
9116   uint src = OPER_I_32();
9117   uint ea = EA_AY_DI_32();
9118   uint res = src ^ m68ki_read_32(ea);
9119 
9120   m68ki_write_32(ea, res);
9121 
9122   FLAG_N = NFLAG_32(res);
9123   FLAG_Z = res;
9124   FLAG_C = CFLAG_CLEAR;
9125   FLAG_V = VFLAG_CLEAR;
9126 }
9127 
9128 
m68k_op_eori_32_ix(void)9129 static void m68k_op_eori_32_ix(void)
9130 {
9131   uint src = OPER_I_32();
9132   uint ea = EA_AY_IX_32();
9133   uint res = src ^ m68ki_read_32(ea);
9134 
9135   m68ki_write_32(ea, res);
9136 
9137   FLAG_N = NFLAG_32(res);
9138   FLAG_Z = res;
9139   FLAG_C = CFLAG_CLEAR;
9140   FLAG_V = VFLAG_CLEAR;
9141 }
9142 
9143 
m68k_op_eori_32_aw(void)9144 static void m68k_op_eori_32_aw(void)
9145 {
9146   uint src = OPER_I_32();
9147   uint ea = EA_AW_32();
9148   uint res = src ^ m68ki_read_32(ea);
9149 
9150   m68ki_write_32(ea, res);
9151 
9152   FLAG_N = NFLAG_32(res);
9153   FLAG_Z = res;
9154   FLAG_C = CFLAG_CLEAR;
9155   FLAG_V = VFLAG_CLEAR;
9156 }
9157 
9158 
m68k_op_eori_32_al(void)9159 static void m68k_op_eori_32_al(void)
9160 {
9161   uint src = OPER_I_32();
9162   uint ea = EA_AL_32();
9163   uint res = src ^ m68ki_read_32(ea);
9164 
9165   m68ki_write_32(ea, res);
9166 
9167   FLAG_N = NFLAG_32(res);
9168   FLAG_Z = res;
9169   FLAG_C = CFLAG_CLEAR;
9170   FLAG_V = VFLAG_CLEAR;
9171 }
9172 
9173 
m68k_op_eori_16_toc(void)9174 static void m68k_op_eori_16_toc(void)
9175 {
9176   m68ki_set_ccr(m68ki_get_ccr() ^ OPER_I_16());
9177 }
9178 
9179 
m68k_op_eori_16_tos(void)9180 static void m68k_op_eori_16_tos(void)
9181 {
9182   if(FLAG_S)
9183   {
9184     uint src = OPER_I_16();
9185     m68ki_set_sr(m68ki_get_sr() ^ src);
9186     return;
9187   }
9188   m68ki_exception_privilege_violation();
9189 }
9190 
9191 
m68k_op_exg_32_dd(void)9192 static void m68k_op_exg_32_dd(void)
9193 {
9194   uint* reg_a = &DX;
9195   uint* reg_b = &DY;
9196   uint tmp = *reg_a;
9197   *reg_a = *reg_b;
9198   *reg_b = tmp;
9199 }
9200 
9201 
m68k_op_exg_32_aa(void)9202 static void m68k_op_exg_32_aa(void)
9203 {
9204   uint* reg_a = &AX;
9205   uint* reg_b = &AY;
9206   uint tmp = *reg_a;
9207   *reg_a = *reg_b;
9208   *reg_b = tmp;
9209 }
9210 
9211 
m68k_op_exg_32_da(void)9212 static void m68k_op_exg_32_da(void)
9213 {
9214   uint* reg_a = &DX;
9215   uint* reg_b = &AY;
9216   uint tmp = *reg_a;
9217   *reg_a = *reg_b;
9218   *reg_b = tmp;
9219 }
9220 
9221 
m68k_op_ext_16(void)9222 static void m68k_op_ext_16(void)
9223 {
9224   uint* r_dst = &DY;
9225 
9226   *r_dst = MASK_OUT_BELOW_16(*r_dst) | MASK_OUT_ABOVE_8(*r_dst) | (GET_MSB_8(*r_dst) ? 0xff00 : 0);
9227 
9228   FLAG_N = NFLAG_16(*r_dst);
9229   FLAG_Z = MASK_OUT_ABOVE_16(*r_dst);
9230   FLAG_V = VFLAG_CLEAR;
9231   FLAG_C = CFLAG_CLEAR;
9232 }
9233 
9234 
m68k_op_ext_32(void)9235 static void m68k_op_ext_32(void)
9236 {
9237   uint* r_dst = &DY;
9238 
9239   *r_dst = MASK_OUT_ABOVE_16(*r_dst) | (GET_MSB_16(*r_dst) ? 0xffff0000 : 0);
9240 
9241   FLAG_N = NFLAG_32(*r_dst);
9242   FLAG_Z = *r_dst;
9243   FLAG_V = VFLAG_CLEAR;
9244   FLAG_C = CFLAG_CLEAR;
9245 }
9246 
9247 
m68k_op_illegal(void)9248 static void m68k_op_illegal(void)
9249 {
9250   m68ki_exception_illegal();
9251 }
9252 
9253 
m68k_op_jmp_32_ai(void)9254 static void m68k_op_jmp_32_ai(void)
9255 {
9256   m68ki_jump(EA_AY_AI_32());
9257 }
9258 
9259 
m68k_op_jmp_32_di(void)9260 static void m68k_op_jmp_32_di(void)
9261 {
9262   m68ki_jump(EA_AY_DI_32());
9263 }
9264 
9265 
m68k_op_jmp_32_ix(void)9266 static void m68k_op_jmp_32_ix(void)
9267 {
9268   m68ki_jump(EA_AY_IX_32());
9269 }
9270 
9271 
m68k_op_jmp_32_aw(void)9272 static void m68k_op_jmp_32_aw(void)
9273 {
9274   m68ki_jump(EA_AW_32());
9275 }
9276 
9277 
m68k_op_jmp_32_al(void)9278 static void m68k_op_jmp_32_al(void)
9279 {
9280   m68ki_jump(EA_AL_32());
9281 }
9282 
9283 
m68k_op_jmp_32_pcdi(void)9284 static void m68k_op_jmp_32_pcdi(void)
9285 {
9286   m68ki_jump(EA_PCDI_32());
9287 }
9288 
9289 
m68k_op_jmp_32_pcix(void)9290 static void m68k_op_jmp_32_pcix(void)
9291 {
9292   m68ki_jump(EA_PCIX_32());
9293 }
9294 
9295 
m68k_op_jsr_32_ai(void)9296 static void m68k_op_jsr_32_ai(void)
9297 {
9298   uint ea = EA_AY_AI_32();
9299   m68ki_push_32(REG_PC);
9300   m68ki_jump(ea);
9301 }
9302 
9303 
m68k_op_jsr_32_di(void)9304 static void m68k_op_jsr_32_di(void)
9305 {
9306   uint ea = EA_AY_DI_32();
9307   m68ki_push_32(REG_PC);
9308   m68ki_jump(ea);
9309 }
9310 
9311 
m68k_op_jsr_32_ix(void)9312 static void m68k_op_jsr_32_ix(void)
9313 {
9314   uint ea = EA_AY_IX_32();
9315   m68ki_push_32(REG_PC);
9316   m68ki_jump(ea);
9317 }
9318 
9319 
m68k_op_jsr_32_aw(void)9320 static void m68k_op_jsr_32_aw(void)
9321 {
9322   uint ea = EA_AW_32();
9323   m68ki_push_32(REG_PC);
9324   m68ki_jump(ea);
9325 }
9326 
9327 
m68k_op_jsr_32_al(void)9328 static void m68k_op_jsr_32_al(void)
9329 {
9330   uint ea = EA_AL_32();
9331   m68ki_push_32(REG_PC);
9332   m68ki_jump(ea);
9333 }
9334 
9335 
m68k_op_jsr_32_pcdi(void)9336 static void m68k_op_jsr_32_pcdi(void)
9337 {
9338   uint ea = EA_PCDI_32();
9339   m68ki_push_32(REG_PC);
9340   m68ki_jump(ea);
9341 }
9342 
9343 
m68k_op_jsr_32_pcix(void)9344 static void m68k_op_jsr_32_pcix(void)
9345 {
9346   uint ea = EA_PCIX_32();
9347   m68ki_push_32(REG_PC);
9348   m68ki_jump(ea);
9349 }
9350 
9351 
m68k_op_lea_32_ai(void)9352 static void m68k_op_lea_32_ai(void)
9353 {
9354   AX = EA_AY_AI_32();
9355 }
9356 
9357 
m68k_op_lea_32_di(void)9358 static void m68k_op_lea_32_di(void)
9359 {
9360   AX = EA_AY_DI_32();
9361 }
9362 
9363 
m68k_op_lea_32_ix(void)9364 static void m68k_op_lea_32_ix(void)
9365 {
9366   AX = EA_AY_IX_32();
9367 }
9368 
9369 
m68k_op_lea_32_aw(void)9370 static void m68k_op_lea_32_aw(void)
9371 {
9372   AX = EA_AW_32();
9373 }
9374 
9375 
m68k_op_lea_32_al(void)9376 static void m68k_op_lea_32_al(void)
9377 {
9378   AX = EA_AL_32();
9379 }
9380 
9381 
m68k_op_lea_32_pcdi(void)9382 static void m68k_op_lea_32_pcdi(void)
9383 {
9384   AX = EA_PCDI_32();
9385 }
9386 
9387 
m68k_op_lea_32_pcix(void)9388 static void m68k_op_lea_32_pcix(void)
9389 {
9390   AX = EA_PCIX_32();
9391 }
9392 
9393 
m68k_op_link_16_a7(void)9394 static void m68k_op_link_16_a7(void)
9395 {
9396   REG_A[7] -= 4;
9397   m68ki_write_32(REG_A[7], REG_A[7]);
9398   REG_A[7] = MASK_OUT_ABOVE_32(REG_A[7] + MAKE_INT_16(OPER_I_16()));
9399 }
9400 
9401 
m68k_op_link_16(void)9402 static void m68k_op_link_16(void)
9403 {
9404   uint* r_dst = &AY;
9405 
9406   m68ki_push_32(*r_dst);
9407   *r_dst = REG_A[7];
9408   REG_A[7] = MASK_OUT_ABOVE_32(REG_A[7] + MAKE_INT_16(OPER_I_16()));
9409 }
9410 
9411 
m68k_op_lsr_8_s(void)9412 static void m68k_op_lsr_8_s(void)
9413 {
9414   uint* r_dst = &DY;
9415   uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
9416   uint src = MASK_OUT_ABOVE_8(*r_dst);
9417   uint res = src >> shift;
9418 
9419   if(shift != 0)
9420     USE_CYCLES(shift * CYC_SHIFT);
9421 
9422   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
9423 
9424   FLAG_N = NFLAG_CLEAR;
9425   FLAG_Z = res;
9426   FLAG_X = FLAG_C = src << (9-shift);
9427   FLAG_V = VFLAG_CLEAR;
9428 }
9429 
9430 
m68k_op_lsr_16_s(void)9431 static void m68k_op_lsr_16_s(void)
9432 {
9433   uint* r_dst = &DY;
9434   uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
9435   uint src = MASK_OUT_ABOVE_16(*r_dst);
9436   uint res = src >> shift;
9437 
9438   if(shift != 0)
9439     USE_CYCLES(shift * CYC_SHIFT);
9440 
9441   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
9442 
9443   FLAG_N = NFLAG_CLEAR;
9444   FLAG_Z = res;
9445   FLAG_X = FLAG_C = src << (9-shift);
9446   FLAG_V = VFLAG_CLEAR;
9447 }
9448 
9449 
m68k_op_lsr_32_s(void)9450 static void m68k_op_lsr_32_s(void)
9451 {
9452   uint* r_dst = &DY;
9453   uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
9454   uint src = *r_dst;
9455   uint res = src >> shift;
9456 
9457   if(shift != 0)
9458     USE_CYCLES(shift * CYC_SHIFT);
9459 
9460   *r_dst = res;
9461 
9462   FLAG_N = NFLAG_CLEAR;
9463   FLAG_Z = res;
9464   FLAG_X = FLAG_C = src << (9-shift);
9465   FLAG_V = VFLAG_CLEAR;
9466 }
9467 
9468 
m68k_op_lsr_8_r(void)9469 static void m68k_op_lsr_8_r(void)
9470 {
9471   uint* r_dst = &DY;
9472   uint shift = DX & 0x3f;
9473   uint src = MASK_OUT_ABOVE_8(*r_dst);
9474   uint res = src >> shift;
9475 
9476   if(shift != 0)
9477   {
9478     USE_CYCLES(shift * CYC_SHIFT);
9479 
9480     if(shift <= 8)
9481     {
9482       *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
9483       FLAG_X = FLAG_C = src << (9-shift);
9484       FLAG_N = NFLAG_CLEAR;
9485       FLAG_Z = res;
9486       FLAG_V = VFLAG_CLEAR;
9487       return;
9488     }
9489 
9490     *r_dst &= 0xffffff00;
9491     FLAG_X = XFLAG_CLEAR;
9492     FLAG_C = CFLAG_CLEAR;
9493     FLAG_N = NFLAG_CLEAR;
9494     FLAG_Z = ZFLAG_SET;
9495     FLAG_V = VFLAG_CLEAR;
9496     return;
9497   }
9498 
9499   FLAG_C = CFLAG_CLEAR;
9500   FLAG_N = NFLAG_8(src);
9501   FLAG_Z = src;
9502   FLAG_V = VFLAG_CLEAR;
9503 }
9504 
9505 
m68k_op_lsr_16_r(void)9506 static void m68k_op_lsr_16_r(void)
9507 {
9508   uint* r_dst = &DY;
9509   uint shift = DX & 0x3f;
9510   uint src = MASK_OUT_ABOVE_16(*r_dst);
9511   uint res = src >> shift;
9512 
9513   if(shift != 0)
9514   {
9515     USE_CYCLES(shift * CYC_SHIFT);
9516 
9517     if(shift <= 16)
9518     {
9519       *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
9520       FLAG_C = FLAG_X = (src >> (shift - 1))<<8;
9521       FLAG_N = NFLAG_CLEAR;
9522       FLAG_Z = res;
9523       FLAG_V = VFLAG_CLEAR;
9524       return;
9525     }
9526 
9527     *r_dst &= 0xffff0000;
9528     FLAG_X = XFLAG_CLEAR;
9529     FLAG_C = CFLAG_CLEAR;
9530     FLAG_N = NFLAG_CLEAR;
9531     FLAG_Z = ZFLAG_SET;
9532     FLAG_V = VFLAG_CLEAR;
9533     return;
9534   }
9535 
9536   FLAG_C = CFLAG_CLEAR;
9537   FLAG_N = NFLAG_16(src);
9538   FLAG_Z = src;
9539   FLAG_V = VFLAG_CLEAR;
9540 }
9541 
9542 
m68k_op_lsr_32_r(void)9543 static void m68k_op_lsr_32_r(void)
9544 {
9545   uint* r_dst = &DY;
9546   uint shift = DX & 0x3f;
9547   uint src = *r_dst;
9548   uint res = src >> shift;
9549 
9550   if(shift != 0)
9551   {
9552     USE_CYCLES(shift * CYC_SHIFT);
9553 
9554     if(shift < 32)
9555     {
9556       *r_dst = res;
9557       FLAG_C = FLAG_X = (src >> (shift - 1))<<8;
9558       FLAG_N = NFLAG_CLEAR;
9559       FLAG_Z = res;
9560       FLAG_V = VFLAG_CLEAR;
9561       return;
9562     }
9563 
9564     *r_dst = 0;
9565     FLAG_X = FLAG_C = (shift == 32 ? GET_MSB_32(src)>>23 : 0);
9566     FLAG_N = NFLAG_CLEAR;
9567     FLAG_Z = ZFLAG_SET;
9568     FLAG_V = VFLAG_CLEAR;
9569     return;
9570   }
9571 
9572   FLAG_C = CFLAG_CLEAR;
9573   FLAG_N = NFLAG_32(src);
9574   FLAG_Z = src;
9575   FLAG_V = VFLAG_CLEAR;
9576 }
9577 
9578 
m68k_op_lsr_16_ai(void)9579 static void m68k_op_lsr_16_ai(void)
9580 {
9581   uint ea = EA_AY_AI_16();
9582   uint src = m68ki_read_16(ea);
9583   uint res = src >> 1;
9584 
9585   m68ki_write_16(ea, res);
9586 
9587   FLAG_N = NFLAG_CLEAR;
9588   FLAG_Z = res;
9589   FLAG_C = FLAG_X = src << 8;
9590   FLAG_V = VFLAG_CLEAR;
9591 }
9592 
9593 
m68k_op_lsr_16_pi(void)9594 static void m68k_op_lsr_16_pi(void)
9595 {
9596   uint ea = EA_AY_PI_16();
9597   uint src = m68ki_read_16(ea);
9598   uint res = src >> 1;
9599 
9600   m68ki_write_16(ea, res);
9601 
9602   FLAG_N = NFLAG_CLEAR;
9603   FLAG_Z = res;
9604   FLAG_C = FLAG_X = src << 8;
9605   FLAG_V = VFLAG_CLEAR;
9606 }
9607 
9608 
m68k_op_lsr_16_pd(void)9609 static void m68k_op_lsr_16_pd(void)
9610 {
9611   uint ea = EA_AY_PD_16();
9612   uint src = m68ki_read_16(ea);
9613   uint res = src >> 1;
9614 
9615   m68ki_write_16(ea, res);
9616 
9617   FLAG_N = NFLAG_CLEAR;
9618   FLAG_Z = res;
9619   FLAG_C = FLAG_X = src << 8;
9620   FLAG_V = VFLAG_CLEAR;
9621 }
9622 
9623 
m68k_op_lsr_16_di(void)9624 static void m68k_op_lsr_16_di(void)
9625 {
9626   uint ea = EA_AY_DI_16();
9627   uint src = m68ki_read_16(ea);
9628   uint res = src >> 1;
9629 
9630   m68ki_write_16(ea, res);
9631 
9632   FLAG_N = NFLAG_CLEAR;
9633   FLAG_Z = res;
9634   FLAG_C = FLAG_X = src << 8;
9635   FLAG_V = VFLAG_CLEAR;
9636 }
9637 
9638 
m68k_op_lsr_16_ix(void)9639 static void m68k_op_lsr_16_ix(void)
9640 {
9641   uint ea = EA_AY_IX_16();
9642   uint src = m68ki_read_16(ea);
9643   uint res = src >> 1;
9644 
9645   m68ki_write_16(ea, res);
9646 
9647   FLAG_N = NFLAG_CLEAR;
9648   FLAG_Z = res;
9649   FLAG_C = FLAG_X = src << 8;
9650   FLAG_V = VFLAG_CLEAR;
9651 }
9652 
9653 
m68k_op_lsr_16_aw(void)9654 static void m68k_op_lsr_16_aw(void)
9655 {
9656   uint ea = EA_AW_16();
9657   uint src = m68ki_read_16(ea);
9658   uint res = src >> 1;
9659 
9660   m68ki_write_16(ea, res);
9661 
9662   FLAG_N = NFLAG_CLEAR;
9663   FLAG_Z = res;
9664   FLAG_C = FLAG_X = src << 8;
9665   FLAG_V = VFLAG_CLEAR;
9666 }
9667 
9668 
m68k_op_lsr_16_al(void)9669 static void m68k_op_lsr_16_al(void)
9670 {
9671   uint ea = EA_AL_16();
9672   uint src = m68ki_read_16(ea);
9673   uint res = src >> 1;
9674 
9675   m68ki_write_16(ea, res);
9676 
9677   FLAG_N = NFLAG_CLEAR;
9678   FLAG_Z = res;
9679   FLAG_C = FLAG_X = src << 8;
9680   FLAG_V = VFLAG_CLEAR;
9681 }
9682 
9683 
m68k_op_lsl_8_s(void)9684 static void m68k_op_lsl_8_s(void)
9685 {
9686   uint* r_dst = &DY;
9687   uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
9688   uint src = MASK_OUT_ABOVE_8(*r_dst);
9689   uint res = MASK_OUT_ABOVE_8(src << shift);
9690 
9691   if(shift != 0)
9692     USE_CYCLES(shift * CYC_SHIFT);
9693 
9694   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
9695 
9696   FLAG_N = NFLAG_8(res);
9697   FLAG_Z = res;
9698   FLAG_X = FLAG_C = src << shift;
9699   FLAG_V = VFLAG_CLEAR;
9700 }
9701 
9702 
m68k_op_lsl_16_s(void)9703 static void m68k_op_lsl_16_s(void)
9704 {
9705   uint* r_dst = &DY;
9706   uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
9707   uint src = MASK_OUT_ABOVE_16(*r_dst);
9708   uint res = MASK_OUT_ABOVE_16(src << shift);
9709 
9710   if(shift != 0)
9711     USE_CYCLES(shift * CYC_SHIFT);
9712 
9713   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
9714 
9715   FLAG_N = NFLAG_16(res);
9716   FLAG_Z = res;
9717   FLAG_X = FLAG_C = src >> (8-shift);
9718   FLAG_V = VFLAG_CLEAR;
9719 }
9720 
9721 
m68k_op_lsl_32_s(void)9722 static void m68k_op_lsl_32_s(void)
9723 {
9724   uint* r_dst = &DY;
9725   uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
9726   uint src = *r_dst;
9727   uint res = MASK_OUT_ABOVE_32(src << shift);
9728 
9729   if(shift != 0)
9730     USE_CYCLES(shift * CYC_SHIFT);
9731 
9732   *r_dst = res;
9733 
9734   FLAG_N = NFLAG_32(res);
9735   FLAG_Z = res;
9736   FLAG_X = FLAG_C = src >> (24-shift);
9737   FLAG_V = VFLAG_CLEAR;
9738 }
9739 
9740 
m68k_op_lsl_8_r(void)9741 static void m68k_op_lsl_8_r(void)
9742 {
9743   uint* r_dst = &DY;
9744   uint shift = DX & 0x3f;
9745   uint src = MASK_OUT_ABOVE_8(*r_dst);
9746   uint res = MASK_OUT_ABOVE_8(src << shift);
9747 
9748   if(shift != 0)
9749   {
9750     USE_CYCLES(shift * CYC_SHIFT);
9751 
9752     if(shift <= 8)
9753     {
9754       *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
9755       FLAG_X = FLAG_C = src << shift;
9756       FLAG_N = NFLAG_8(res);
9757       FLAG_Z = res;
9758       FLAG_V = VFLAG_CLEAR;
9759       return;
9760     }
9761 
9762     *r_dst &= 0xffffff00;
9763     FLAG_X = XFLAG_CLEAR;
9764     FLAG_C = CFLAG_CLEAR;
9765     FLAG_N = NFLAG_CLEAR;
9766     FLAG_Z = ZFLAG_SET;
9767     FLAG_V = VFLAG_CLEAR;
9768     return;
9769   }
9770 
9771   FLAG_C = CFLAG_CLEAR;
9772   FLAG_N = NFLAG_8(src);
9773   FLAG_Z = src;
9774   FLAG_V = VFLAG_CLEAR;
9775 }
9776 
9777 
m68k_op_lsl_16_r(void)9778 static void m68k_op_lsl_16_r(void)
9779 {
9780   uint* r_dst = &DY;
9781   uint shift = DX & 0x3f;
9782   uint src = MASK_OUT_ABOVE_16(*r_dst);
9783   uint res = MASK_OUT_ABOVE_16(src << shift);
9784 
9785   if(shift != 0)
9786   {
9787     USE_CYCLES(shift * CYC_SHIFT);
9788 
9789     if(shift <= 16)
9790     {
9791       *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
9792       FLAG_X = FLAG_C = (src << shift) >> 8;
9793       FLAG_N = NFLAG_16(res);
9794       FLAG_Z = res;
9795       FLAG_V = VFLAG_CLEAR;
9796       return;
9797     }
9798 
9799     *r_dst &= 0xffff0000;
9800     FLAG_X = XFLAG_CLEAR;
9801     FLAG_C = CFLAG_CLEAR;
9802     FLAG_N = NFLAG_CLEAR;
9803     FLAG_Z = ZFLAG_SET;
9804     FLAG_V = VFLAG_CLEAR;
9805     return;
9806   }
9807 
9808   FLAG_C = CFLAG_CLEAR;
9809   FLAG_N = NFLAG_16(src);
9810   FLAG_Z = src;
9811   FLAG_V = VFLAG_CLEAR;
9812 }
9813 
9814 
m68k_op_lsl_32_r(void)9815 static void m68k_op_lsl_32_r(void)
9816 {
9817   uint* r_dst = &DY;
9818   uint shift = DX & 0x3f;
9819   uint src = *r_dst;
9820   uint res = MASK_OUT_ABOVE_32(src << shift);
9821 
9822   if(shift != 0)
9823   {
9824     USE_CYCLES(shift * CYC_SHIFT);
9825 
9826     if(shift < 32)
9827     {
9828       *r_dst = res;
9829       FLAG_X = FLAG_C = (src >> (32 - shift)) << 8;
9830       FLAG_N = NFLAG_32(res);
9831       FLAG_Z = res;
9832       FLAG_V = VFLAG_CLEAR;
9833       return;
9834     }
9835 
9836     *r_dst = 0;
9837     FLAG_X = FLAG_C = ((shift == 32 ? src & 1 : 0))<<8;
9838     FLAG_N = NFLAG_CLEAR;
9839     FLAG_Z = ZFLAG_SET;
9840     FLAG_V = VFLAG_CLEAR;
9841     return;
9842   }
9843 
9844   FLAG_C = CFLAG_CLEAR;
9845   FLAG_N = NFLAG_32(src);
9846   FLAG_Z = src;
9847   FLAG_V = VFLAG_CLEAR;
9848 }
9849 
9850 
m68k_op_lsl_16_ai(void)9851 static void m68k_op_lsl_16_ai(void)
9852 {
9853   uint ea = EA_AY_AI_16();
9854   uint src = m68ki_read_16(ea);
9855   uint res = MASK_OUT_ABOVE_16(src << 1);
9856 
9857   m68ki_write_16(ea, res);
9858 
9859   FLAG_N = NFLAG_16(res);
9860   FLAG_Z = res;
9861   FLAG_X = FLAG_C = src >> 7;
9862   FLAG_V = VFLAG_CLEAR;
9863 }
9864 
9865 
m68k_op_lsl_16_pi(void)9866 static void m68k_op_lsl_16_pi(void)
9867 {
9868   uint ea = EA_AY_PI_16();
9869   uint src = m68ki_read_16(ea);
9870   uint res = MASK_OUT_ABOVE_16(src << 1);
9871 
9872   m68ki_write_16(ea, res);
9873 
9874   FLAG_N = NFLAG_16(res);
9875   FLAG_Z = res;
9876   FLAG_X = FLAG_C = src >> 7;
9877   FLAG_V = VFLAG_CLEAR;
9878 }
9879 
9880 
m68k_op_lsl_16_pd(void)9881 static void m68k_op_lsl_16_pd(void)
9882 {
9883   uint ea = EA_AY_PD_16();
9884   uint src = m68ki_read_16(ea);
9885   uint res = MASK_OUT_ABOVE_16(src << 1);
9886 
9887   m68ki_write_16(ea, res);
9888 
9889   FLAG_N = NFLAG_16(res);
9890   FLAG_Z = res;
9891   FLAG_X = FLAG_C = src >> 7;
9892   FLAG_V = VFLAG_CLEAR;
9893 }
9894 
9895 
m68k_op_lsl_16_di(void)9896 static void m68k_op_lsl_16_di(void)
9897 {
9898   uint ea = EA_AY_DI_16();
9899   uint src = m68ki_read_16(ea);
9900   uint res = MASK_OUT_ABOVE_16(src << 1);
9901 
9902   m68ki_write_16(ea, res);
9903 
9904   FLAG_N = NFLAG_16(res);
9905   FLAG_Z = res;
9906   FLAG_X = FLAG_C = src >> 7;
9907   FLAG_V = VFLAG_CLEAR;
9908 }
9909 
9910 
m68k_op_lsl_16_ix(void)9911 static void m68k_op_lsl_16_ix(void)
9912 {
9913   uint ea = EA_AY_IX_16();
9914   uint src = m68ki_read_16(ea);
9915   uint res = MASK_OUT_ABOVE_16(src << 1);
9916 
9917   m68ki_write_16(ea, res);
9918 
9919   FLAG_N = NFLAG_16(res);
9920   FLAG_Z = res;
9921   FLAG_X = FLAG_C = src >> 7;
9922   FLAG_V = VFLAG_CLEAR;
9923 }
9924 
9925 
m68k_op_lsl_16_aw(void)9926 static void m68k_op_lsl_16_aw(void)
9927 {
9928   uint ea = EA_AW_16();
9929   uint src = m68ki_read_16(ea);
9930   uint res = MASK_OUT_ABOVE_16(src << 1);
9931 
9932   m68ki_write_16(ea, res);
9933 
9934   FLAG_N = NFLAG_16(res);
9935   FLAG_Z = res;
9936   FLAG_X = FLAG_C = src >> 7;
9937   FLAG_V = VFLAG_CLEAR;
9938 }
9939 
9940 
m68k_op_lsl_16_al(void)9941 static void m68k_op_lsl_16_al(void)
9942 {
9943   uint ea = EA_AL_16();
9944   uint src = m68ki_read_16(ea);
9945   uint res = MASK_OUT_ABOVE_16(src << 1);
9946 
9947   m68ki_write_16(ea, res);
9948 
9949   FLAG_N = NFLAG_16(res);
9950   FLAG_Z = res;
9951   FLAG_X = FLAG_C = src >> 7;
9952   FLAG_V = VFLAG_CLEAR;
9953 }
9954 
9955 
m68k_op_move_8_d_d(void)9956 static void m68k_op_move_8_d_d(void)
9957 {
9958   uint res = MASK_OUT_ABOVE_8(DY);
9959   uint* r_dst = &DX;
9960 
9961   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
9962 
9963   FLAG_N = NFLAG_8(res);
9964   FLAG_Z = res;
9965   FLAG_V = VFLAG_CLEAR;
9966   FLAG_C = CFLAG_CLEAR;
9967 }
9968 
9969 
m68k_op_move_8_d_ai(void)9970 static void m68k_op_move_8_d_ai(void)
9971 {
9972   uint res = OPER_AY_AI_8();
9973   uint* r_dst = &DX;
9974 
9975   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
9976 
9977   FLAG_N = NFLAG_8(res);
9978   FLAG_Z = res;
9979   FLAG_V = VFLAG_CLEAR;
9980   FLAG_C = CFLAG_CLEAR;
9981 }
9982 
9983 
m68k_op_move_8_d_pi(void)9984 static void m68k_op_move_8_d_pi(void)
9985 {
9986   uint res = OPER_AY_PI_8();
9987   uint* r_dst = &DX;
9988 
9989   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
9990 
9991   FLAG_N = NFLAG_8(res);
9992   FLAG_Z = res;
9993   FLAG_V = VFLAG_CLEAR;
9994   FLAG_C = CFLAG_CLEAR;
9995 }
9996 
9997 
m68k_op_move_8_d_pi7(void)9998 static void m68k_op_move_8_d_pi7(void)
9999 {
10000   uint res = OPER_A7_PI_8();
10001   uint* r_dst = &DX;
10002 
10003   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
10004 
10005   FLAG_N = NFLAG_8(res);
10006   FLAG_Z = res;
10007   FLAG_V = VFLAG_CLEAR;
10008   FLAG_C = CFLAG_CLEAR;
10009 }
10010 
10011 
m68k_op_move_8_d_pd(void)10012 static void m68k_op_move_8_d_pd(void)
10013 {
10014   uint res = OPER_AY_PD_8();
10015   uint* r_dst = &DX;
10016 
10017   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
10018 
10019   FLAG_N = NFLAG_8(res);
10020   FLAG_Z = res;
10021   FLAG_V = VFLAG_CLEAR;
10022   FLAG_C = CFLAG_CLEAR;
10023 }
10024 
10025 
m68k_op_move_8_d_pd7(void)10026 static void m68k_op_move_8_d_pd7(void)
10027 {
10028   uint res = OPER_A7_PD_8();
10029   uint* r_dst = &DX;
10030 
10031   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
10032 
10033   FLAG_N = NFLAG_8(res);
10034   FLAG_Z = res;
10035   FLAG_V = VFLAG_CLEAR;
10036   FLAG_C = CFLAG_CLEAR;
10037 }
10038 
10039 
m68k_op_move_8_d_di(void)10040 static void m68k_op_move_8_d_di(void)
10041 {
10042   uint res = OPER_AY_DI_8();
10043   uint* r_dst = &DX;
10044 
10045   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
10046 
10047   FLAG_N = NFLAG_8(res);
10048   FLAG_Z = res;
10049   FLAG_V = VFLAG_CLEAR;
10050   FLAG_C = CFLAG_CLEAR;
10051 }
10052 
10053 
m68k_op_move_8_d_ix(void)10054 static void m68k_op_move_8_d_ix(void)
10055 {
10056   uint res = OPER_AY_IX_8();
10057   uint* r_dst = &DX;
10058 
10059   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
10060 
10061   FLAG_N = NFLAG_8(res);
10062   FLAG_Z = res;
10063   FLAG_V = VFLAG_CLEAR;
10064   FLAG_C = CFLAG_CLEAR;
10065 }
10066 
10067 
m68k_op_move_8_d_aw(void)10068 static void m68k_op_move_8_d_aw(void)
10069 {
10070   uint res = OPER_AW_8();
10071   uint* r_dst = &DX;
10072 
10073   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
10074 
10075   FLAG_N = NFLAG_8(res);
10076   FLAG_Z = res;
10077   FLAG_V = VFLAG_CLEAR;
10078   FLAG_C = CFLAG_CLEAR;
10079 }
10080 
10081 
m68k_op_move_8_d_al(void)10082 static void m68k_op_move_8_d_al(void)
10083 {
10084   uint res = OPER_AL_8();
10085   uint* r_dst = &DX;
10086 
10087   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
10088 
10089   FLAG_N = NFLAG_8(res);
10090   FLAG_Z = res;
10091   FLAG_V = VFLAG_CLEAR;
10092   FLAG_C = CFLAG_CLEAR;
10093 }
10094 
10095 
m68k_op_move_8_d_pcdi(void)10096 static void m68k_op_move_8_d_pcdi(void)
10097 {
10098   uint res = OPER_PCDI_8();
10099   uint* r_dst = &DX;
10100 
10101   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
10102 
10103   FLAG_N = NFLAG_8(res);
10104   FLAG_Z = res;
10105   FLAG_V = VFLAG_CLEAR;
10106   FLAG_C = CFLAG_CLEAR;
10107 }
10108 
10109 
m68k_op_move_8_d_pcix(void)10110 static void m68k_op_move_8_d_pcix(void)
10111 {
10112   uint res = OPER_PCIX_8();
10113   uint* r_dst = &DX;
10114 
10115   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
10116 
10117   FLAG_N = NFLAG_8(res);
10118   FLAG_Z = res;
10119   FLAG_V = VFLAG_CLEAR;
10120   FLAG_C = CFLAG_CLEAR;
10121 }
10122 
10123 
m68k_op_move_8_d_i(void)10124 static void m68k_op_move_8_d_i(void)
10125 {
10126   uint res = OPER_I_8();
10127   uint* r_dst = &DX;
10128 
10129   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
10130 
10131   FLAG_N = NFLAG_8(res);
10132   FLAG_Z = res;
10133   FLAG_V = VFLAG_CLEAR;
10134   FLAG_C = CFLAG_CLEAR;
10135 }
10136 
10137 
m68k_op_move_8_ai_d(void)10138 static void m68k_op_move_8_ai_d(void)
10139 {
10140   uint res = MASK_OUT_ABOVE_8(DY);
10141   uint ea = EA_AX_AI_8();
10142 
10143   FLAG_N = NFLAG_8(res);
10144   FLAG_Z = res;
10145   FLAG_V = VFLAG_CLEAR;
10146   FLAG_C = CFLAG_CLEAR;
10147 
10148   m68ki_write_8(ea, res);
10149 }
10150 
10151 
m68k_op_move_8_ai_ai(void)10152 static void m68k_op_move_8_ai_ai(void)
10153 {
10154   uint res = OPER_AY_AI_8();
10155   uint ea = EA_AX_AI_8();
10156 
10157   FLAG_N = NFLAG_8(res);
10158   FLAG_Z = res;
10159   FLAG_V = VFLAG_CLEAR;
10160   FLAG_C = CFLAG_CLEAR;
10161 
10162   m68ki_write_8(ea, res);
10163 }
10164 
10165 
m68k_op_move_8_ai_pi(void)10166 static void m68k_op_move_8_ai_pi(void)
10167 {
10168   uint res = OPER_AY_PI_8();
10169   uint ea = EA_AX_AI_8();
10170 
10171   FLAG_N = NFLAG_8(res);
10172   FLAG_Z = res;
10173   FLAG_V = VFLAG_CLEAR;
10174   FLAG_C = CFLAG_CLEAR;
10175 
10176   m68ki_write_8(ea, res);
10177 }
10178 
10179 
m68k_op_move_8_ai_pi7(void)10180 static void m68k_op_move_8_ai_pi7(void)
10181 {
10182   uint res = OPER_A7_PI_8();
10183   uint ea = EA_AX_AI_8();
10184 
10185   FLAG_N = NFLAG_8(res);
10186   FLAG_Z = res;
10187   FLAG_V = VFLAG_CLEAR;
10188   FLAG_C = CFLAG_CLEAR;
10189 
10190   m68ki_write_8(ea, res);
10191 }
10192 
10193 
m68k_op_move_8_ai_pd(void)10194 static void m68k_op_move_8_ai_pd(void)
10195 {
10196   uint res = OPER_AY_PD_8();
10197   uint ea = EA_AX_AI_8();
10198 
10199   FLAG_N = NFLAG_8(res);
10200   FLAG_Z = res;
10201   FLAG_V = VFLAG_CLEAR;
10202   FLAG_C = CFLAG_CLEAR;
10203 
10204   m68ki_write_8(ea, res);
10205 }
10206 
10207 
m68k_op_move_8_ai_pd7(void)10208 static void m68k_op_move_8_ai_pd7(void)
10209 {
10210   uint res = OPER_A7_PD_8();
10211   uint ea = EA_AX_AI_8();
10212 
10213   FLAG_N = NFLAG_8(res);
10214   FLAG_Z = res;
10215   FLAG_V = VFLAG_CLEAR;
10216   FLAG_C = CFLAG_CLEAR;
10217 
10218   m68ki_write_8(ea, res);
10219 }
10220 
10221 
m68k_op_move_8_ai_di(void)10222 static void m68k_op_move_8_ai_di(void)
10223 {
10224   uint res = OPER_AY_DI_8();
10225   uint ea = EA_AX_AI_8();
10226 
10227   FLAG_N = NFLAG_8(res);
10228   FLAG_Z = res;
10229   FLAG_V = VFLAG_CLEAR;
10230   FLAG_C = CFLAG_CLEAR;
10231 
10232   m68ki_write_8(ea, res);
10233 }
10234 
10235 
m68k_op_move_8_ai_ix(void)10236 static void m68k_op_move_8_ai_ix(void)
10237 {
10238   uint res = OPER_AY_IX_8();
10239   uint ea = EA_AX_AI_8();
10240 
10241   FLAG_N = NFLAG_8(res);
10242   FLAG_Z = res;
10243   FLAG_V = VFLAG_CLEAR;
10244   FLAG_C = CFLAG_CLEAR;
10245 
10246   m68ki_write_8(ea, res);
10247 }
10248 
10249 
m68k_op_move_8_ai_aw(void)10250 static void m68k_op_move_8_ai_aw(void)
10251 {
10252   uint res = OPER_AW_8();
10253   uint ea = EA_AX_AI_8();
10254 
10255   FLAG_N = NFLAG_8(res);
10256   FLAG_Z = res;
10257   FLAG_V = VFLAG_CLEAR;
10258   FLAG_C = CFLAG_CLEAR;
10259 
10260   m68ki_write_8(ea, res);
10261 }
10262 
10263 
m68k_op_move_8_ai_al(void)10264 static void m68k_op_move_8_ai_al(void)
10265 {
10266   uint res = OPER_AL_8();
10267   uint ea = EA_AX_AI_8();
10268 
10269   FLAG_N = NFLAG_8(res);
10270   FLAG_Z = res;
10271   FLAG_V = VFLAG_CLEAR;
10272   FLAG_C = CFLAG_CLEAR;
10273 
10274   m68ki_write_8(ea, res);
10275 }
10276 
10277 
m68k_op_move_8_ai_pcdi(void)10278 static void m68k_op_move_8_ai_pcdi(void)
10279 {
10280   uint res = OPER_PCDI_8();
10281   uint ea = EA_AX_AI_8();
10282 
10283   FLAG_N = NFLAG_8(res);
10284   FLAG_Z = res;
10285   FLAG_V = VFLAG_CLEAR;
10286   FLAG_C = CFLAG_CLEAR;
10287 
10288   m68ki_write_8(ea, res);
10289 }
10290 
10291 
m68k_op_move_8_ai_pcix(void)10292 static void m68k_op_move_8_ai_pcix(void)
10293 {
10294   uint res = OPER_PCIX_8();
10295   uint ea = EA_AX_AI_8();
10296 
10297   FLAG_N = NFLAG_8(res);
10298   FLAG_Z = res;
10299   FLAG_V = VFLAG_CLEAR;
10300   FLAG_C = CFLAG_CLEAR;
10301 
10302   m68ki_write_8(ea, res);
10303 }
10304 
10305 
m68k_op_move_8_ai_i(void)10306 static void m68k_op_move_8_ai_i(void)
10307 {
10308   uint res = OPER_I_8();
10309   uint ea = EA_AX_AI_8();
10310 
10311   FLAG_N = NFLAG_8(res);
10312   FLAG_Z = res;
10313   FLAG_V = VFLAG_CLEAR;
10314   FLAG_C = CFLAG_CLEAR;
10315 
10316   m68ki_write_8(ea, res);
10317 }
10318 
10319 
m68k_op_move_8_pi7_d(void)10320 static void m68k_op_move_8_pi7_d(void)
10321 {
10322   uint res = MASK_OUT_ABOVE_8(DY);
10323   uint ea = EA_A7_PI_8();
10324 
10325   FLAG_N = NFLAG_8(res);
10326   FLAG_Z = res;
10327   FLAG_V = VFLAG_CLEAR;
10328   FLAG_C = CFLAG_CLEAR;
10329 
10330   m68ki_write_8(ea, res);
10331 }
10332 
10333 
m68k_op_move_8_pi_d(void)10334 static void m68k_op_move_8_pi_d(void)
10335 {
10336   uint res = MASK_OUT_ABOVE_8(DY);
10337   uint ea = EA_AX_PI_8();
10338 
10339   FLAG_N = NFLAG_8(res);
10340   FLAG_Z = res;
10341   FLAG_V = VFLAG_CLEAR;
10342   FLAG_C = CFLAG_CLEAR;
10343 
10344   m68ki_write_8(ea, res);
10345 }
10346 
10347 
m68k_op_move_8_pi7_ai(void)10348 static void m68k_op_move_8_pi7_ai(void)
10349 {
10350   uint res = OPER_AY_AI_8();
10351   uint ea = EA_A7_PI_8();
10352 
10353   FLAG_N = NFLAG_8(res);
10354   FLAG_Z = res;
10355   FLAG_V = VFLAG_CLEAR;
10356   FLAG_C = CFLAG_CLEAR;
10357 
10358   m68ki_write_8(ea, res);
10359 }
10360 
10361 
m68k_op_move_8_pi7_pi(void)10362 static void m68k_op_move_8_pi7_pi(void)
10363 {
10364   uint res = OPER_AY_PI_8();
10365   uint ea = EA_A7_PI_8();
10366 
10367   FLAG_N = NFLAG_8(res);
10368   FLAG_Z = res;
10369   FLAG_V = VFLAG_CLEAR;
10370   FLAG_C = CFLAG_CLEAR;
10371 
10372   m68ki_write_8(ea, res);
10373 }
10374 
10375 
m68k_op_move_8_pi7_pi7(void)10376 static void m68k_op_move_8_pi7_pi7(void)
10377 {
10378   uint res = OPER_A7_PI_8();
10379   uint ea = EA_A7_PI_8();
10380 
10381   FLAG_N = NFLAG_8(res);
10382   FLAG_Z = res;
10383   FLAG_V = VFLAG_CLEAR;
10384   FLAG_C = CFLAG_CLEAR;
10385 
10386   m68ki_write_8(ea, res);
10387 }
10388 
10389 
m68k_op_move_8_pi7_pd(void)10390 static void m68k_op_move_8_pi7_pd(void)
10391 {
10392   uint res = OPER_AY_PD_8();
10393   uint ea = EA_A7_PI_8();
10394 
10395   FLAG_N = NFLAG_8(res);
10396   FLAG_Z = res;
10397   FLAG_V = VFLAG_CLEAR;
10398   FLAG_C = CFLAG_CLEAR;
10399 
10400   m68ki_write_8(ea, res);
10401 }
10402 
10403 
m68k_op_move_8_pi7_pd7(void)10404 static void m68k_op_move_8_pi7_pd7(void)
10405 {
10406   uint res = OPER_A7_PD_8();
10407   uint ea = EA_A7_PI_8();
10408 
10409   FLAG_N = NFLAG_8(res);
10410   FLAG_Z = res;
10411   FLAG_V = VFLAG_CLEAR;
10412   FLAG_C = CFLAG_CLEAR;
10413 
10414   m68ki_write_8(ea, res);
10415 }
10416 
10417 
m68k_op_move_8_pi7_di(void)10418 static void m68k_op_move_8_pi7_di(void)
10419 {
10420   uint res = OPER_AY_DI_8();
10421   uint ea = EA_A7_PI_8();
10422 
10423   FLAG_N = NFLAG_8(res);
10424   FLAG_Z = res;
10425   FLAG_V = VFLAG_CLEAR;
10426   FLAG_C = CFLAG_CLEAR;
10427 
10428   m68ki_write_8(ea, res);
10429 }
10430 
10431 
m68k_op_move_8_pi7_ix(void)10432 static void m68k_op_move_8_pi7_ix(void)
10433 {
10434   uint res = OPER_AY_IX_8();
10435   uint ea = EA_A7_PI_8();
10436 
10437   FLAG_N = NFLAG_8(res);
10438   FLAG_Z = res;
10439   FLAG_V = VFLAG_CLEAR;
10440   FLAG_C = CFLAG_CLEAR;
10441 
10442   m68ki_write_8(ea, res);
10443 }
10444 
10445 
m68k_op_move_8_pi7_aw(void)10446 static void m68k_op_move_8_pi7_aw(void)
10447 {
10448   uint res = OPER_AW_8();
10449   uint ea = EA_A7_PI_8();
10450 
10451   FLAG_N = NFLAG_8(res);
10452   FLAG_Z = res;
10453   FLAG_V = VFLAG_CLEAR;
10454   FLAG_C = CFLAG_CLEAR;
10455 
10456   m68ki_write_8(ea, res);
10457 }
10458 
10459 
m68k_op_move_8_pi7_al(void)10460 static void m68k_op_move_8_pi7_al(void)
10461 {
10462   uint res = OPER_AL_8();
10463   uint ea = EA_A7_PI_8();
10464 
10465   FLAG_N = NFLAG_8(res);
10466   FLAG_Z = res;
10467   FLAG_V = VFLAG_CLEAR;
10468   FLAG_C = CFLAG_CLEAR;
10469 
10470   m68ki_write_8(ea, res);
10471 }
10472 
10473 
m68k_op_move_8_pi7_pcdi(void)10474 static void m68k_op_move_8_pi7_pcdi(void)
10475 {
10476   uint res = OPER_PCDI_8();
10477   uint ea = EA_A7_PI_8();
10478 
10479   FLAG_N = NFLAG_8(res);
10480   FLAG_Z = res;
10481   FLAG_V = VFLAG_CLEAR;
10482   FLAG_C = CFLAG_CLEAR;
10483 
10484   m68ki_write_8(ea, res);
10485 }
10486 
10487 
m68k_op_move_8_pi7_pcix(void)10488 static void m68k_op_move_8_pi7_pcix(void)
10489 {
10490   uint res = OPER_PCIX_8();
10491   uint ea = EA_A7_PI_8();
10492 
10493   FLAG_N = NFLAG_8(res);
10494   FLAG_Z = res;
10495   FLAG_V = VFLAG_CLEAR;
10496   FLAG_C = CFLAG_CLEAR;
10497 
10498   m68ki_write_8(ea, res);
10499 }
10500 
10501 
m68k_op_move_8_pi7_i(void)10502 static void m68k_op_move_8_pi7_i(void)
10503 {
10504   uint res = OPER_I_8();
10505   uint ea = EA_A7_PI_8();
10506 
10507   FLAG_N = NFLAG_8(res);
10508   FLAG_Z = res;
10509   FLAG_V = VFLAG_CLEAR;
10510   FLAG_C = CFLAG_CLEAR;
10511 
10512   m68ki_write_8(ea, res);
10513 }
10514 
10515 
m68k_op_move_8_pi_ai(void)10516 static void m68k_op_move_8_pi_ai(void)
10517 {
10518   uint res = OPER_AY_AI_8();
10519   uint ea = EA_AX_PI_8();
10520 
10521   FLAG_N = NFLAG_8(res);
10522   FLAG_Z = res;
10523   FLAG_V = VFLAG_CLEAR;
10524   FLAG_C = CFLAG_CLEAR;
10525 
10526   m68ki_write_8(ea, res);
10527 }
10528 
10529 
m68k_op_move_8_pi_pi(void)10530 static void m68k_op_move_8_pi_pi(void)
10531 {
10532   uint res = OPER_AY_PI_8();
10533   uint ea = EA_AX_PI_8();
10534 
10535   FLAG_N = NFLAG_8(res);
10536   FLAG_Z = res;
10537   FLAG_V = VFLAG_CLEAR;
10538   FLAG_C = CFLAG_CLEAR;
10539 
10540   m68ki_write_8(ea, res);
10541 }
10542 
10543 
m68k_op_move_8_pi_pi7(void)10544 static void m68k_op_move_8_pi_pi7(void)
10545 {
10546   uint res = OPER_A7_PI_8();
10547   uint ea = EA_AX_PI_8();
10548 
10549   FLAG_N = NFLAG_8(res);
10550   FLAG_Z = res;
10551   FLAG_V = VFLAG_CLEAR;
10552   FLAG_C = CFLAG_CLEAR;
10553 
10554   m68ki_write_8(ea, res);
10555 }
10556 
10557 
m68k_op_move_8_pi_pd(void)10558 static void m68k_op_move_8_pi_pd(void)
10559 {
10560   uint res = OPER_AY_PD_8();
10561   uint ea = EA_AX_PI_8();
10562 
10563   FLAG_N = NFLAG_8(res);
10564   FLAG_Z = res;
10565   FLAG_V = VFLAG_CLEAR;
10566   FLAG_C = CFLAG_CLEAR;
10567 
10568   m68ki_write_8(ea, res);
10569 }
10570 
10571 
m68k_op_move_8_pi_pd7(void)10572 static void m68k_op_move_8_pi_pd7(void)
10573 {
10574   uint res = OPER_A7_PD_8();
10575   uint ea = EA_AX_PI_8();
10576 
10577   FLAG_N = NFLAG_8(res);
10578   FLAG_Z = res;
10579   FLAG_V = VFLAG_CLEAR;
10580   FLAG_C = CFLAG_CLEAR;
10581 
10582   m68ki_write_8(ea, res);
10583 }
10584 
10585 
m68k_op_move_8_pi_di(void)10586 static void m68k_op_move_8_pi_di(void)
10587 {
10588   uint res = OPER_AY_DI_8();
10589   uint ea = EA_AX_PI_8();
10590 
10591   FLAG_N = NFLAG_8(res);
10592   FLAG_Z = res;
10593   FLAG_V = VFLAG_CLEAR;
10594   FLAG_C = CFLAG_CLEAR;
10595 
10596   m68ki_write_8(ea, res);
10597 }
10598 
10599 
m68k_op_move_8_pi_ix(void)10600 static void m68k_op_move_8_pi_ix(void)
10601 {
10602   uint res = OPER_AY_IX_8();
10603   uint ea = EA_AX_PI_8();
10604 
10605   FLAG_N = NFLAG_8(res);
10606   FLAG_Z = res;
10607   FLAG_V = VFLAG_CLEAR;
10608   FLAG_C = CFLAG_CLEAR;
10609 
10610   m68ki_write_8(ea, res);
10611 }
10612 
10613 
m68k_op_move_8_pi_aw(void)10614 static void m68k_op_move_8_pi_aw(void)
10615 {
10616   uint res = OPER_AW_8();
10617   uint ea = EA_AX_PI_8();
10618 
10619   FLAG_N = NFLAG_8(res);
10620   FLAG_Z = res;
10621   FLAG_V = VFLAG_CLEAR;
10622   FLAG_C = CFLAG_CLEAR;
10623 
10624   m68ki_write_8(ea, res);
10625 }
10626 
10627 
m68k_op_move_8_pi_al(void)10628 static void m68k_op_move_8_pi_al(void)
10629 {
10630   uint res = OPER_AL_8();
10631   uint ea = EA_AX_PI_8();
10632 
10633   FLAG_N = NFLAG_8(res);
10634   FLAG_Z = res;
10635   FLAG_V = VFLAG_CLEAR;
10636   FLAG_C = CFLAG_CLEAR;
10637 
10638   m68ki_write_8(ea, res);
10639 }
10640 
10641 
m68k_op_move_8_pi_pcdi(void)10642 static void m68k_op_move_8_pi_pcdi(void)
10643 {
10644   uint res = OPER_PCDI_8();
10645   uint ea = EA_AX_PI_8();
10646 
10647   FLAG_N = NFLAG_8(res);
10648   FLAG_Z = res;
10649   FLAG_V = VFLAG_CLEAR;
10650   FLAG_C = CFLAG_CLEAR;
10651 
10652   m68ki_write_8(ea, res);
10653 }
10654 
10655 
m68k_op_move_8_pi_pcix(void)10656 static void m68k_op_move_8_pi_pcix(void)
10657 {
10658   uint res = OPER_PCIX_8();
10659   uint ea = EA_AX_PI_8();
10660 
10661   FLAG_N = NFLAG_8(res);
10662   FLAG_Z = res;
10663   FLAG_V = VFLAG_CLEAR;
10664   FLAG_C = CFLAG_CLEAR;
10665 
10666   m68ki_write_8(ea, res);
10667 }
10668 
10669 
m68k_op_move_8_pi_i(void)10670 static void m68k_op_move_8_pi_i(void)
10671 {
10672   uint res = OPER_I_8();
10673   uint ea = EA_AX_PI_8();
10674 
10675   FLAG_N = NFLAG_8(res);
10676   FLAG_Z = res;
10677   FLAG_V = VFLAG_CLEAR;
10678   FLAG_C = CFLAG_CLEAR;
10679 
10680   m68ki_write_8(ea, res);
10681 }
10682 
10683 
m68k_op_move_8_pd7_d(void)10684 static void m68k_op_move_8_pd7_d(void)
10685 {
10686   uint res = MASK_OUT_ABOVE_8(DY);
10687   uint ea = EA_A7_PD_8();
10688 
10689   FLAG_N = NFLAG_8(res);
10690   FLAG_Z = res;
10691   FLAG_V = VFLAG_CLEAR;
10692   FLAG_C = CFLAG_CLEAR;
10693 
10694   m68ki_write_8(ea, res);
10695 }
10696 
10697 
m68k_op_move_8_pd_d(void)10698 static void m68k_op_move_8_pd_d(void)
10699 {
10700   uint res = MASK_OUT_ABOVE_8(DY);
10701   uint ea = EA_AX_PD_8();
10702 
10703   FLAG_N = NFLAG_8(res);
10704   FLAG_Z = res;
10705   FLAG_V = VFLAG_CLEAR;
10706   FLAG_C = CFLAG_CLEAR;
10707 
10708   m68ki_write_8(ea, res);
10709 }
10710 
10711 
m68k_op_move_8_pd7_ai(void)10712 static void m68k_op_move_8_pd7_ai(void)
10713 {
10714   uint res = OPER_AY_AI_8();
10715   uint ea = EA_A7_PD_8();
10716 
10717   FLAG_N = NFLAG_8(res);
10718   FLAG_Z = res;
10719   FLAG_V = VFLAG_CLEAR;
10720   FLAG_C = CFLAG_CLEAR;
10721 
10722   m68ki_write_8(ea, res);
10723 }
10724 
10725 
m68k_op_move_8_pd7_pi(void)10726 static void m68k_op_move_8_pd7_pi(void)
10727 {
10728   uint res = OPER_AY_PI_8();
10729   uint ea = EA_A7_PD_8();
10730 
10731   FLAG_N = NFLAG_8(res);
10732   FLAG_Z = res;
10733   FLAG_V = VFLAG_CLEAR;
10734   FLAG_C = CFLAG_CLEAR;
10735 
10736   m68ki_write_8(ea, res);
10737 }
10738 
10739 
m68k_op_move_8_pd7_pi7(void)10740 static void m68k_op_move_8_pd7_pi7(void)
10741 {
10742   uint res = OPER_A7_PI_8();
10743   uint ea = EA_A7_PD_8();
10744 
10745   FLAG_N = NFLAG_8(res);
10746   FLAG_Z = res;
10747   FLAG_V = VFLAG_CLEAR;
10748   FLAG_C = CFLAG_CLEAR;
10749 
10750   m68ki_write_8(ea, res);
10751 }
10752 
10753 
m68k_op_move_8_pd7_pd(void)10754 static void m68k_op_move_8_pd7_pd(void)
10755 {
10756   uint res = OPER_AY_PD_8();
10757   uint ea = EA_A7_PD_8();
10758 
10759   FLAG_N = NFLAG_8(res);
10760   FLAG_Z = res;
10761   FLAG_V = VFLAG_CLEAR;
10762   FLAG_C = CFLAG_CLEAR;
10763 
10764   m68ki_write_8(ea, res);
10765 }
10766 
10767 
m68k_op_move_8_pd7_pd7(void)10768 static void m68k_op_move_8_pd7_pd7(void)
10769 {
10770   uint res = OPER_A7_PD_8();
10771   uint ea = EA_A7_PD_8();
10772 
10773   FLAG_N = NFLAG_8(res);
10774   FLAG_Z = res;
10775   FLAG_V = VFLAG_CLEAR;
10776   FLAG_C = CFLAG_CLEAR;
10777 
10778   m68ki_write_8(ea, res);
10779 }
10780 
10781 
m68k_op_move_8_pd7_di(void)10782 static void m68k_op_move_8_pd7_di(void)
10783 {
10784   uint res = OPER_AY_DI_8();
10785   uint ea = EA_A7_PD_8();
10786 
10787   FLAG_N = NFLAG_8(res);
10788   FLAG_Z = res;
10789   FLAG_V = VFLAG_CLEAR;
10790   FLAG_C = CFLAG_CLEAR;
10791 
10792   m68ki_write_8(ea, res);
10793 }
10794 
10795 
m68k_op_move_8_pd7_ix(void)10796 static void m68k_op_move_8_pd7_ix(void)
10797 {
10798   uint res = OPER_AY_IX_8();
10799   uint ea = EA_A7_PD_8();
10800 
10801   FLAG_N = NFLAG_8(res);
10802   FLAG_Z = res;
10803   FLAG_V = VFLAG_CLEAR;
10804   FLAG_C = CFLAG_CLEAR;
10805 
10806   m68ki_write_8(ea, res);
10807 }
10808 
10809 
m68k_op_move_8_pd7_aw(void)10810 static void m68k_op_move_8_pd7_aw(void)
10811 {
10812   uint res = OPER_AW_8();
10813   uint ea = EA_A7_PD_8();
10814 
10815   FLAG_N = NFLAG_8(res);
10816   FLAG_Z = res;
10817   FLAG_V = VFLAG_CLEAR;
10818   FLAG_C = CFLAG_CLEAR;
10819 
10820   m68ki_write_8(ea, res);
10821 }
10822 
10823 
m68k_op_move_8_pd7_al(void)10824 static void m68k_op_move_8_pd7_al(void)
10825 {
10826   uint res = OPER_AL_8();
10827   uint ea = EA_A7_PD_8();
10828 
10829   FLAG_N = NFLAG_8(res);
10830   FLAG_Z = res;
10831   FLAG_V = VFLAG_CLEAR;
10832   FLAG_C = CFLAG_CLEAR;
10833 
10834   m68ki_write_8(ea, res);
10835 }
10836 
10837 
m68k_op_move_8_pd7_pcdi(void)10838 static void m68k_op_move_8_pd7_pcdi(void)
10839 {
10840   uint res = OPER_PCDI_8();
10841   uint ea = EA_A7_PD_8();
10842 
10843   FLAG_N = NFLAG_8(res);
10844   FLAG_Z = res;
10845   FLAG_V = VFLAG_CLEAR;
10846   FLAG_C = CFLAG_CLEAR;
10847 
10848   m68ki_write_8(ea, res);
10849 }
10850 
10851 
m68k_op_move_8_pd7_pcix(void)10852 static void m68k_op_move_8_pd7_pcix(void)
10853 {
10854   uint res = OPER_PCIX_8();
10855   uint ea = EA_A7_PD_8();
10856 
10857   FLAG_N = NFLAG_8(res);
10858   FLAG_Z = res;
10859   FLAG_V = VFLAG_CLEAR;
10860   FLAG_C = CFLAG_CLEAR;
10861 
10862   m68ki_write_8(ea, res);
10863 }
10864 
10865 
m68k_op_move_8_pd7_i(void)10866 static void m68k_op_move_8_pd7_i(void)
10867 {
10868   uint res = OPER_I_8();
10869   uint ea = EA_A7_PD_8();
10870 
10871   FLAG_N = NFLAG_8(res);
10872   FLAG_Z = res;
10873   FLAG_V = VFLAG_CLEAR;
10874   FLAG_C = CFLAG_CLEAR;
10875 
10876   m68ki_write_8(ea, res);
10877 }
10878 
10879 
m68k_op_move_8_pd_ai(void)10880 static void m68k_op_move_8_pd_ai(void)
10881 {
10882   uint res = OPER_AY_AI_8();
10883   uint ea = EA_AX_PD_8();
10884 
10885   FLAG_N = NFLAG_8(res);
10886   FLAG_Z = res;
10887   FLAG_V = VFLAG_CLEAR;
10888   FLAG_C = CFLAG_CLEAR;
10889 
10890   m68ki_write_8(ea, res);
10891 }
10892 
10893 
m68k_op_move_8_pd_pi(void)10894 static void m68k_op_move_8_pd_pi(void)
10895 {
10896   uint res = OPER_AY_PI_8();
10897   uint ea = EA_AX_PD_8();
10898 
10899   FLAG_N = NFLAG_8(res);
10900   FLAG_Z = res;
10901   FLAG_V = VFLAG_CLEAR;
10902   FLAG_C = CFLAG_CLEAR;
10903 
10904   m68ki_write_8(ea, res);
10905 }
10906 
10907 
m68k_op_move_8_pd_pi7(void)10908 static void m68k_op_move_8_pd_pi7(void)
10909 {
10910   uint res = OPER_A7_PI_8();
10911   uint ea = EA_AX_PD_8();
10912 
10913   FLAG_N = NFLAG_8(res);
10914   FLAG_Z = res;
10915   FLAG_V = VFLAG_CLEAR;
10916   FLAG_C = CFLAG_CLEAR;
10917 
10918   m68ki_write_8(ea, res);
10919 }
10920 
10921 
m68k_op_move_8_pd_pd(void)10922 static void m68k_op_move_8_pd_pd(void)
10923 {
10924   uint res = OPER_AY_PD_8();
10925   uint ea = EA_AX_PD_8();
10926 
10927   FLAG_N = NFLAG_8(res);
10928   FLAG_Z = res;
10929   FLAG_V = VFLAG_CLEAR;
10930   FLAG_C = CFLAG_CLEAR;
10931 
10932   m68ki_write_8(ea, res);
10933 }
10934 
10935 
m68k_op_move_8_pd_pd7(void)10936 static void m68k_op_move_8_pd_pd7(void)
10937 {
10938   uint res = OPER_A7_PD_8();
10939   uint ea = EA_AX_PD_8();
10940 
10941   FLAG_N = NFLAG_8(res);
10942   FLAG_Z = res;
10943   FLAG_V = VFLAG_CLEAR;
10944   FLAG_C = CFLAG_CLEAR;
10945 
10946   m68ki_write_8(ea, res);
10947 }
10948 
10949 
m68k_op_move_8_pd_di(void)10950 static void m68k_op_move_8_pd_di(void)
10951 {
10952   uint res = OPER_AY_DI_8();
10953   uint ea = EA_AX_PD_8();
10954 
10955   FLAG_N = NFLAG_8(res);
10956   FLAG_Z = res;
10957   FLAG_V = VFLAG_CLEAR;
10958   FLAG_C = CFLAG_CLEAR;
10959 
10960   m68ki_write_8(ea, res);
10961 }
10962 
10963 
m68k_op_move_8_pd_ix(void)10964 static void m68k_op_move_8_pd_ix(void)
10965 {
10966   uint res = OPER_AY_IX_8();
10967   uint ea = EA_AX_PD_8();
10968 
10969   FLAG_N = NFLAG_8(res);
10970   FLAG_Z = res;
10971   FLAG_V = VFLAG_CLEAR;
10972   FLAG_C = CFLAG_CLEAR;
10973 
10974   m68ki_write_8(ea, res);
10975 }
10976 
10977 
m68k_op_move_8_pd_aw(void)10978 static void m68k_op_move_8_pd_aw(void)
10979 {
10980   uint res = OPER_AW_8();
10981   uint ea = EA_AX_PD_8();
10982 
10983   FLAG_N = NFLAG_8(res);
10984   FLAG_Z = res;
10985   FLAG_V = VFLAG_CLEAR;
10986   FLAG_C = CFLAG_CLEAR;
10987 
10988   m68ki_write_8(ea, res);
10989 }
10990 
10991 
m68k_op_move_8_pd_al(void)10992 static void m68k_op_move_8_pd_al(void)
10993 {
10994   uint res = OPER_AL_8();
10995   uint ea = EA_AX_PD_8();
10996 
10997   FLAG_N = NFLAG_8(res);
10998   FLAG_Z = res;
10999   FLAG_V = VFLAG_CLEAR;
11000   FLAG_C = CFLAG_CLEAR;
11001 
11002   m68ki_write_8(ea, res);
11003 }
11004 
11005 
m68k_op_move_8_pd_pcdi(void)11006 static void m68k_op_move_8_pd_pcdi(void)
11007 {
11008   uint res = OPER_PCDI_8();
11009   uint ea = EA_AX_PD_8();
11010 
11011   FLAG_N = NFLAG_8(res);
11012   FLAG_Z = res;
11013   FLAG_V = VFLAG_CLEAR;
11014   FLAG_C = CFLAG_CLEAR;
11015 
11016   m68ki_write_8(ea, res);
11017 }
11018 
11019 
m68k_op_move_8_pd_pcix(void)11020 static void m68k_op_move_8_pd_pcix(void)
11021 {
11022   uint res = OPER_PCIX_8();
11023   uint ea = EA_AX_PD_8();
11024 
11025   FLAG_N = NFLAG_8(res);
11026   FLAG_Z = res;
11027   FLAG_V = VFLAG_CLEAR;
11028   FLAG_C = CFLAG_CLEAR;
11029 
11030   m68ki_write_8(ea, res);
11031 }
11032 
11033 
m68k_op_move_8_pd_i(void)11034 static void m68k_op_move_8_pd_i(void)
11035 {
11036   uint res = OPER_I_8();
11037   uint ea = EA_AX_PD_8();
11038 
11039   FLAG_N = NFLAG_8(res);
11040   FLAG_Z = res;
11041   FLAG_V = VFLAG_CLEAR;
11042   FLAG_C = CFLAG_CLEAR;
11043 
11044   m68ki_write_8(ea, res);
11045 }
11046 
11047 
m68k_op_move_8_di_d(void)11048 static void m68k_op_move_8_di_d(void)
11049 {
11050   uint res = MASK_OUT_ABOVE_8(DY);
11051   uint ea = EA_AX_DI_8();
11052 
11053   FLAG_N = NFLAG_8(res);
11054   FLAG_Z = res;
11055   FLAG_V = VFLAG_CLEAR;
11056   FLAG_C = CFLAG_CLEAR;
11057 
11058   m68ki_write_8(ea, res);
11059 }
11060 
11061 
m68k_op_move_8_di_ai(void)11062 static void m68k_op_move_8_di_ai(void)
11063 {
11064   uint res = OPER_AY_AI_8();
11065   uint ea = EA_AX_DI_8();
11066 
11067   FLAG_N = NFLAG_8(res);
11068   FLAG_Z = res;
11069   FLAG_V = VFLAG_CLEAR;
11070   FLAG_C = CFLAG_CLEAR;
11071 
11072   m68ki_write_8(ea, res);
11073 }
11074 
11075 
m68k_op_move_8_di_pi(void)11076 static void m68k_op_move_8_di_pi(void)
11077 {
11078   uint res = OPER_AY_PI_8();
11079   uint ea = EA_AX_DI_8();
11080 
11081   FLAG_N = NFLAG_8(res);
11082   FLAG_Z = res;
11083   FLAG_V = VFLAG_CLEAR;
11084   FLAG_C = CFLAG_CLEAR;
11085 
11086   m68ki_write_8(ea, res);
11087 }
11088 
11089 
m68k_op_move_8_di_pi7(void)11090 static void m68k_op_move_8_di_pi7(void)
11091 {
11092   uint res = OPER_A7_PI_8();
11093   uint ea = EA_AX_DI_8();
11094 
11095   FLAG_N = NFLAG_8(res);
11096   FLAG_Z = res;
11097   FLAG_V = VFLAG_CLEAR;
11098   FLAG_C = CFLAG_CLEAR;
11099 
11100   m68ki_write_8(ea, res);
11101 }
11102 
11103 
m68k_op_move_8_di_pd(void)11104 static void m68k_op_move_8_di_pd(void)
11105 {
11106   uint res = OPER_AY_PD_8();
11107   uint ea = EA_AX_DI_8();
11108 
11109   FLAG_N = NFLAG_8(res);
11110   FLAG_Z = res;
11111   FLAG_V = VFLAG_CLEAR;
11112   FLAG_C = CFLAG_CLEAR;
11113 
11114   m68ki_write_8(ea, res);
11115 }
11116 
11117 
m68k_op_move_8_di_pd7(void)11118 static void m68k_op_move_8_di_pd7(void)
11119 {
11120   uint res = OPER_A7_PD_8();
11121   uint ea = EA_AX_DI_8();
11122 
11123   FLAG_N = NFLAG_8(res);
11124   FLAG_Z = res;
11125   FLAG_V = VFLAG_CLEAR;
11126   FLAG_C = CFLAG_CLEAR;
11127 
11128   m68ki_write_8(ea, res);
11129 }
11130 
11131 
m68k_op_move_8_di_di(void)11132 static void m68k_op_move_8_di_di(void)
11133 {
11134   uint res = OPER_AY_DI_8();
11135   uint ea = EA_AX_DI_8();
11136 
11137   FLAG_N = NFLAG_8(res);
11138   FLAG_Z = res;
11139   FLAG_V = VFLAG_CLEAR;
11140   FLAG_C = CFLAG_CLEAR;
11141 
11142   m68ki_write_8(ea, res);
11143 }
11144 
11145 
m68k_op_move_8_di_ix(void)11146 static void m68k_op_move_8_di_ix(void)
11147 {
11148   uint res = OPER_AY_IX_8();
11149   uint ea = EA_AX_DI_8();
11150 
11151   FLAG_N = NFLAG_8(res);
11152   FLAG_Z = res;
11153   FLAG_V = VFLAG_CLEAR;
11154   FLAG_C = CFLAG_CLEAR;
11155 
11156   m68ki_write_8(ea, res);
11157 }
11158 
11159 
m68k_op_move_8_di_aw(void)11160 static void m68k_op_move_8_di_aw(void)
11161 {
11162   uint res = OPER_AW_8();
11163   uint ea = EA_AX_DI_8();
11164 
11165   FLAG_N = NFLAG_8(res);
11166   FLAG_Z = res;
11167   FLAG_V = VFLAG_CLEAR;
11168   FLAG_C = CFLAG_CLEAR;
11169 
11170   m68ki_write_8(ea, res);
11171 }
11172 
11173 
m68k_op_move_8_di_al(void)11174 static void m68k_op_move_8_di_al(void)
11175 {
11176   uint res = OPER_AL_8();
11177   uint ea = EA_AX_DI_8();
11178 
11179   FLAG_N = NFLAG_8(res);
11180   FLAG_Z = res;
11181   FLAG_V = VFLAG_CLEAR;
11182   FLAG_C = CFLAG_CLEAR;
11183 
11184   m68ki_write_8(ea, res);
11185 }
11186 
11187 
m68k_op_move_8_di_pcdi(void)11188 static void m68k_op_move_8_di_pcdi(void)
11189 {
11190   uint res = OPER_PCDI_8();
11191   uint ea = EA_AX_DI_8();
11192 
11193   FLAG_N = NFLAG_8(res);
11194   FLAG_Z = res;
11195   FLAG_V = VFLAG_CLEAR;
11196   FLAG_C = CFLAG_CLEAR;
11197 
11198   m68ki_write_8(ea, res);
11199 }
11200 
11201 
m68k_op_move_8_di_pcix(void)11202 static void m68k_op_move_8_di_pcix(void)
11203 {
11204   uint res = OPER_PCIX_8();
11205   uint ea = EA_AX_DI_8();
11206 
11207   FLAG_N = NFLAG_8(res);
11208   FLAG_Z = res;
11209   FLAG_V = VFLAG_CLEAR;
11210   FLAG_C = CFLAG_CLEAR;
11211 
11212   m68ki_write_8(ea, res);
11213 }
11214 
11215 
m68k_op_move_8_di_i(void)11216 static void m68k_op_move_8_di_i(void)
11217 {
11218   uint res = OPER_I_8();
11219   uint ea = EA_AX_DI_8();
11220 
11221   FLAG_N = NFLAG_8(res);
11222   FLAG_Z = res;
11223   FLAG_V = VFLAG_CLEAR;
11224   FLAG_C = CFLAG_CLEAR;
11225 
11226   m68ki_write_8(ea, res);
11227 }
11228 
11229 
m68k_op_move_8_ix_d(void)11230 static void m68k_op_move_8_ix_d(void)
11231 {
11232   uint res = MASK_OUT_ABOVE_8(DY);
11233   uint ea = EA_AX_IX_8();
11234 
11235   FLAG_N = NFLAG_8(res);
11236   FLAG_Z = res;
11237   FLAG_V = VFLAG_CLEAR;
11238   FLAG_C = CFLAG_CLEAR;
11239 
11240   m68ki_write_8(ea, res);
11241 }
11242 
11243 
m68k_op_move_8_ix_ai(void)11244 static void m68k_op_move_8_ix_ai(void)
11245 {
11246   uint res = OPER_AY_AI_8();
11247   uint ea = EA_AX_IX_8();
11248 
11249   FLAG_N = NFLAG_8(res);
11250   FLAG_Z = res;
11251   FLAG_V = VFLAG_CLEAR;
11252   FLAG_C = CFLAG_CLEAR;
11253 
11254   m68ki_write_8(ea, res);
11255 }
11256 
11257 
m68k_op_move_8_ix_pi(void)11258 static void m68k_op_move_8_ix_pi(void)
11259 {
11260   uint res = OPER_AY_PI_8();
11261   uint ea = EA_AX_IX_8();
11262 
11263   FLAG_N = NFLAG_8(res);
11264   FLAG_Z = res;
11265   FLAG_V = VFLAG_CLEAR;
11266   FLAG_C = CFLAG_CLEAR;
11267 
11268   m68ki_write_8(ea, res);
11269 }
11270 
11271 
m68k_op_move_8_ix_pi7(void)11272 static void m68k_op_move_8_ix_pi7(void)
11273 {
11274   uint res = OPER_A7_PI_8();
11275   uint ea = EA_AX_IX_8();
11276 
11277   FLAG_N = NFLAG_8(res);
11278   FLAG_Z = res;
11279   FLAG_V = VFLAG_CLEAR;
11280   FLAG_C = CFLAG_CLEAR;
11281 
11282   m68ki_write_8(ea, res);
11283 }
11284 
11285 
m68k_op_move_8_ix_pd(void)11286 static void m68k_op_move_8_ix_pd(void)
11287 {
11288   uint res = OPER_AY_PD_8();
11289   uint ea = EA_AX_IX_8();
11290 
11291   FLAG_N = NFLAG_8(res);
11292   FLAG_Z = res;
11293   FLAG_V = VFLAG_CLEAR;
11294   FLAG_C = CFLAG_CLEAR;
11295 
11296   m68ki_write_8(ea, res);
11297 }
11298 
11299 
m68k_op_move_8_ix_pd7(void)11300 static void m68k_op_move_8_ix_pd7(void)
11301 {
11302   uint res = OPER_A7_PD_8();
11303   uint ea = EA_AX_IX_8();
11304 
11305   FLAG_N = NFLAG_8(res);
11306   FLAG_Z = res;
11307   FLAG_V = VFLAG_CLEAR;
11308   FLAG_C = CFLAG_CLEAR;
11309 
11310   m68ki_write_8(ea, res);
11311 }
11312 
11313 
m68k_op_move_8_ix_di(void)11314 static void m68k_op_move_8_ix_di(void)
11315 {
11316   uint res = OPER_AY_DI_8();
11317   uint ea = EA_AX_IX_8();
11318 
11319   FLAG_N = NFLAG_8(res);
11320   FLAG_Z = res;
11321   FLAG_V = VFLAG_CLEAR;
11322   FLAG_C = CFLAG_CLEAR;
11323 
11324   m68ki_write_8(ea, res);
11325 }
11326 
11327 
m68k_op_move_8_ix_ix(void)11328 static void m68k_op_move_8_ix_ix(void)
11329 {
11330   uint res = OPER_AY_IX_8();
11331   uint ea = EA_AX_IX_8();
11332 
11333   FLAG_N = NFLAG_8(res);
11334   FLAG_Z = res;
11335   FLAG_V = VFLAG_CLEAR;
11336   FLAG_C = CFLAG_CLEAR;
11337 
11338   m68ki_write_8(ea, res);
11339 }
11340 
11341 
m68k_op_move_8_ix_aw(void)11342 static void m68k_op_move_8_ix_aw(void)
11343 {
11344   uint res = OPER_AW_8();
11345   uint ea = EA_AX_IX_8();
11346 
11347   FLAG_N = NFLAG_8(res);
11348   FLAG_Z = res;
11349   FLAG_V = VFLAG_CLEAR;
11350   FLAG_C = CFLAG_CLEAR;
11351 
11352   m68ki_write_8(ea, res);
11353 }
11354 
11355 
m68k_op_move_8_ix_al(void)11356 static void m68k_op_move_8_ix_al(void)
11357 {
11358   uint res = OPER_AL_8();
11359   uint ea = EA_AX_IX_8();
11360 
11361   FLAG_N = NFLAG_8(res);
11362   FLAG_Z = res;
11363   FLAG_V = VFLAG_CLEAR;
11364   FLAG_C = CFLAG_CLEAR;
11365 
11366   m68ki_write_8(ea, res);
11367 }
11368 
11369 
m68k_op_move_8_ix_pcdi(void)11370 static void m68k_op_move_8_ix_pcdi(void)
11371 {
11372   uint res = OPER_PCDI_8();
11373   uint ea = EA_AX_IX_8();
11374 
11375   FLAG_N = NFLAG_8(res);
11376   FLAG_Z = res;
11377   FLAG_V = VFLAG_CLEAR;
11378   FLAG_C = CFLAG_CLEAR;
11379 
11380   m68ki_write_8(ea, res);
11381 }
11382 
11383 
m68k_op_move_8_ix_pcix(void)11384 static void m68k_op_move_8_ix_pcix(void)
11385 {
11386   uint res = OPER_PCIX_8();
11387   uint ea = EA_AX_IX_8();
11388 
11389   FLAG_N = NFLAG_8(res);
11390   FLAG_Z = res;
11391   FLAG_V = VFLAG_CLEAR;
11392   FLAG_C = CFLAG_CLEAR;
11393 
11394   m68ki_write_8(ea, res);
11395 }
11396 
11397 
m68k_op_move_8_ix_i(void)11398 static void m68k_op_move_8_ix_i(void)
11399 {
11400   uint res = OPER_I_8();
11401   uint ea = EA_AX_IX_8();
11402 
11403   FLAG_N = NFLAG_8(res);
11404   FLAG_Z = res;
11405   FLAG_V = VFLAG_CLEAR;
11406   FLAG_C = CFLAG_CLEAR;
11407 
11408   m68ki_write_8(ea, res);
11409 }
11410 
11411 
m68k_op_move_8_aw_d(void)11412 static void m68k_op_move_8_aw_d(void)
11413 {
11414   uint res = MASK_OUT_ABOVE_8(DY);
11415   uint ea = EA_AW_8();
11416 
11417   FLAG_N = NFLAG_8(res);
11418   FLAG_Z = res;
11419   FLAG_V = VFLAG_CLEAR;
11420   FLAG_C = CFLAG_CLEAR;
11421 
11422   m68ki_write_8(ea, res);
11423 }
11424 
11425 
m68k_op_move_8_aw_ai(void)11426 static void m68k_op_move_8_aw_ai(void)
11427 {
11428   uint res = OPER_AY_AI_8();
11429   uint ea = EA_AW_8();
11430 
11431   FLAG_N = NFLAG_8(res);
11432   FLAG_Z = res;
11433   FLAG_V = VFLAG_CLEAR;
11434   FLAG_C = CFLAG_CLEAR;
11435 
11436   m68ki_write_8(ea, res);
11437 }
11438 
11439 
m68k_op_move_8_aw_pi(void)11440 static void m68k_op_move_8_aw_pi(void)
11441 {
11442   uint res = OPER_AY_PI_8();
11443   uint ea = EA_AW_8();
11444 
11445   FLAG_N = NFLAG_8(res);
11446   FLAG_Z = res;
11447   FLAG_V = VFLAG_CLEAR;
11448   FLAG_C = CFLAG_CLEAR;
11449 
11450   m68ki_write_8(ea, res);
11451 }
11452 
11453 
m68k_op_move_8_aw_pi7(void)11454 static void m68k_op_move_8_aw_pi7(void)
11455 {
11456   uint res = OPER_A7_PI_8();
11457   uint ea = EA_AW_8();
11458 
11459   FLAG_N = NFLAG_8(res);
11460   FLAG_Z = res;
11461   FLAG_V = VFLAG_CLEAR;
11462   FLAG_C = CFLAG_CLEAR;
11463 
11464   m68ki_write_8(ea, res);
11465 }
11466 
11467 
m68k_op_move_8_aw_pd(void)11468 static void m68k_op_move_8_aw_pd(void)
11469 {
11470   uint res = OPER_AY_PD_8();
11471   uint ea = EA_AW_8();
11472 
11473   FLAG_N = NFLAG_8(res);
11474   FLAG_Z = res;
11475   FLAG_V = VFLAG_CLEAR;
11476   FLAG_C = CFLAG_CLEAR;
11477 
11478   m68ki_write_8(ea, res);
11479 }
11480 
11481 
m68k_op_move_8_aw_pd7(void)11482 static void m68k_op_move_8_aw_pd7(void)
11483 {
11484   uint res = OPER_A7_PD_8();
11485   uint ea = EA_AW_8();
11486 
11487   FLAG_N = NFLAG_8(res);
11488   FLAG_Z = res;
11489   FLAG_V = VFLAG_CLEAR;
11490   FLAG_C = CFLAG_CLEAR;
11491 
11492   m68ki_write_8(ea, res);
11493 }
11494 
11495 
m68k_op_move_8_aw_di(void)11496 static void m68k_op_move_8_aw_di(void)
11497 {
11498   uint res = OPER_AY_DI_8();
11499   uint ea = EA_AW_8();
11500 
11501   FLAG_N = NFLAG_8(res);
11502   FLAG_Z = res;
11503   FLAG_V = VFLAG_CLEAR;
11504   FLAG_C = CFLAG_CLEAR;
11505 
11506   m68ki_write_8(ea, res);
11507 }
11508 
11509 
m68k_op_move_8_aw_ix(void)11510 static void m68k_op_move_8_aw_ix(void)
11511 {
11512   uint res = OPER_AY_IX_8();
11513   uint ea = EA_AW_8();
11514 
11515   FLAG_N = NFLAG_8(res);
11516   FLAG_Z = res;
11517   FLAG_V = VFLAG_CLEAR;
11518   FLAG_C = CFLAG_CLEAR;
11519 
11520   m68ki_write_8(ea, res);
11521 }
11522 
11523 
m68k_op_move_8_aw_aw(void)11524 static void m68k_op_move_8_aw_aw(void)
11525 {
11526   uint res = OPER_AW_8();
11527   uint ea = EA_AW_8();
11528 
11529   FLAG_N = NFLAG_8(res);
11530   FLAG_Z = res;
11531   FLAG_V = VFLAG_CLEAR;
11532   FLAG_C = CFLAG_CLEAR;
11533 
11534   m68ki_write_8(ea, res);
11535 }
11536 
11537 
m68k_op_move_8_aw_al(void)11538 static void m68k_op_move_8_aw_al(void)
11539 {
11540   uint res = OPER_AL_8();
11541   uint ea = EA_AW_8();
11542 
11543   FLAG_N = NFLAG_8(res);
11544   FLAG_Z = res;
11545   FLAG_V = VFLAG_CLEAR;
11546   FLAG_C = CFLAG_CLEAR;
11547 
11548   m68ki_write_8(ea, res);
11549 }
11550 
11551 
m68k_op_move_8_aw_pcdi(void)11552 static void m68k_op_move_8_aw_pcdi(void)
11553 {
11554   uint res = OPER_PCDI_8();
11555   uint ea = EA_AW_8();
11556 
11557   FLAG_N = NFLAG_8(res);
11558   FLAG_Z = res;
11559   FLAG_V = VFLAG_CLEAR;
11560   FLAG_C = CFLAG_CLEAR;
11561 
11562   m68ki_write_8(ea, res);
11563 }
11564 
11565 
m68k_op_move_8_aw_pcix(void)11566 static void m68k_op_move_8_aw_pcix(void)
11567 {
11568   uint res = OPER_PCIX_8();
11569   uint ea = EA_AW_8();
11570 
11571   FLAG_N = NFLAG_8(res);
11572   FLAG_Z = res;
11573   FLAG_V = VFLAG_CLEAR;
11574   FLAG_C = CFLAG_CLEAR;
11575 
11576   m68ki_write_8(ea, res);
11577 }
11578 
11579 
m68k_op_move_8_aw_i(void)11580 static void m68k_op_move_8_aw_i(void)
11581 {
11582   uint res = OPER_I_8();
11583   uint ea = EA_AW_8();
11584 
11585   FLAG_N = NFLAG_8(res);
11586   FLAG_Z = res;
11587   FLAG_V = VFLAG_CLEAR;
11588   FLAG_C = CFLAG_CLEAR;
11589 
11590   m68ki_write_8(ea, res);
11591 }
11592 
11593 
m68k_op_move_8_al_d(void)11594 static void m68k_op_move_8_al_d(void)
11595 {
11596   uint res = MASK_OUT_ABOVE_8(DY);
11597   uint ea = EA_AL_8();
11598 
11599   FLAG_N = NFLAG_8(res);
11600   FLAG_Z = res;
11601   FLAG_V = VFLAG_CLEAR;
11602   FLAG_C = CFLAG_CLEAR;
11603 
11604   m68ki_write_8(ea, res);
11605 }
11606 
11607 
m68k_op_move_8_al_ai(void)11608 static void m68k_op_move_8_al_ai(void)
11609 {
11610   uint res = OPER_AY_AI_8();
11611   uint ea = EA_AL_8();
11612 
11613   FLAG_N = NFLAG_8(res);
11614   FLAG_Z = res;
11615   FLAG_V = VFLAG_CLEAR;
11616   FLAG_C = CFLAG_CLEAR;
11617 
11618   m68ki_write_8(ea, res);
11619 }
11620 
11621 
m68k_op_move_8_al_pi(void)11622 static void m68k_op_move_8_al_pi(void)
11623 {
11624   uint res = OPER_AY_PI_8();
11625   uint ea = EA_AL_8();
11626 
11627   FLAG_N = NFLAG_8(res);
11628   FLAG_Z = res;
11629   FLAG_V = VFLAG_CLEAR;
11630   FLAG_C = CFLAG_CLEAR;
11631 
11632   m68ki_write_8(ea, res);
11633 }
11634 
11635 
m68k_op_move_8_al_pi7(void)11636 static void m68k_op_move_8_al_pi7(void)
11637 {
11638   uint res = OPER_A7_PI_8();
11639   uint ea = EA_AL_8();
11640 
11641   FLAG_N = NFLAG_8(res);
11642   FLAG_Z = res;
11643   FLAG_V = VFLAG_CLEAR;
11644   FLAG_C = CFLAG_CLEAR;
11645 
11646   m68ki_write_8(ea, res);
11647 }
11648 
11649 
m68k_op_move_8_al_pd(void)11650 static void m68k_op_move_8_al_pd(void)
11651 {
11652   uint res = OPER_AY_PD_8();
11653   uint ea = EA_AL_8();
11654 
11655   FLAG_N = NFLAG_8(res);
11656   FLAG_Z = res;
11657   FLAG_V = VFLAG_CLEAR;
11658   FLAG_C = CFLAG_CLEAR;
11659 
11660   m68ki_write_8(ea, res);
11661 }
11662 
11663 
m68k_op_move_8_al_pd7(void)11664 static void m68k_op_move_8_al_pd7(void)
11665 {
11666   uint res = OPER_A7_PD_8();
11667   uint ea = EA_AL_8();
11668 
11669   FLAG_N = NFLAG_8(res);
11670   FLAG_Z = res;
11671   FLAG_V = VFLAG_CLEAR;
11672   FLAG_C = CFLAG_CLEAR;
11673 
11674   m68ki_write_8(ea, res);
11675 }
11676 
11677 
m68k_op_move_8_al_di(void)11678 static void m68k_op_move_8_al_di(void)
11679 {
11680   uint res = OPER_AY_DI_8();
11681   uint ea = EA_AL_8();
11682 
11683   FLAG_N = NFLAG_8(res);
11684   FLAG_Z = res;
11685   FLAG_V = VFLAG_CLEAR;
11686   FLAG_C = CFLAG_CLEAR;
11687 
11688   m68ki_write_8(ea, res);
11689 }
11690 
11691 
m68k_op_move_8_al_ix(void)11692 static void m68k_op_move_8_al_ix(void)
11693 {
11694   uint res = OPER_AY_IX_8();
11695   uint ea = EA_AL_8();
11696 
11697   FLAG_N = NFLAG_8(res);
11698   FLAG_Z = res;
11699   FLAG_V = VFLAG_CLEAR;
11700   FLAG_C = CFLAG_CLEAR;
11701 
11702   m68ki_write_8(ea, res);
11703 }
11704 
11705 
m68k_op_move_8_al_aw(void)11706 static void m68k_op_move_8_al_aw(void)
11707 {
11708   uint res = OPER_AW_8();
11709   uint ea = EA_AL_8();
11710 
11711   FLAG_N = NFLAG_8(res);
11712   FLAG_Z = res;
11713   FLAG_V = VFLAG_CLEAR;
11714   FLAG_C = CFLAG_CLEAR;
11715 
11716   m68ki_write_8(ea, res);
11717 }
11718 
11719 
m68k_op_move_8_al_al(void)11720 static void m68k_op_move_8_al_al(void)
11721 {
11722   uint res = OPER_AL_8();
11723   uint ea = EA_AL_8();
11724 
11725   FLAG_N = NFLAG_8(res);
11726   FLAG_Z = res;
11727   FLAG_V = VFLAG_CLEAR;
11728   FLAG_C = CFLAG_CLEAR;
11729 
11730   m68ki_write_8(ea, res);
11731 }
11732 
11733 
m68k_op_move_8_al_pcdi(void)11734 static void m68k_op_move_8_al_pcdi(void)
11735 {
11736   uint res = OPER_PCDI_8();
11737   uint ea = EA_AL_8();
11738 
11739   FLAG_N = NFLAG_8(res);
11740   FLAG_Z = res;
11741   FLAG_V = VFLAG_CLEAR;
11742   FLAG_C = CFLAG_CLEAR;
11743 
11744   m68ki_write_8(ea, res);
11745 }
11746 
11747 
m68k_op_move_8_al_pcix(void)11748 static void m68k_op_move_8_al_pcix(void)
11749 {
11750   uint res = OPER_PCIX_8();
11751   uint ea = EA_AL_8();
11752 
11753   FLAG_N = NFLAG_8(res);
11754   FLAG_Z = res;
11755   FLAG_V = VFLAG_CLEAR;
11756   FLAG_C = CFLAG_CLEAR;
11757 
11758   m68ki_write_8(ea, res);
11759 }
11760 
11761 
m68k_op_move_8_al_i(void)11762 static void m68k_op_move_8_al_i(void)
11763 {
11764   uint res = OPER_I_8();
11765   uint ea = EA_AL_8();
11766 
11767   FLAG_N = NFLAG_8(res);
11768   FLAG_Z = res;
11769   FLAG_V = VFLAG_CLEAR;
11770   FLAG_C = CFLAG_CLEAR;
11771 
11772   m68ki_write_8(ea, res);
11773 }
11774 
11775 
m68k_op_move_16_d_d(void)11776 static void m68k_op_move_16_d_d(void)
11777 {
11778   uint res = MASK_OUT_ABOVE_16(DY);
11779   uint* r_dst = &DX;
11780 
11781   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
11782 
11783   FLAG_N = NFLAG_16(res);
11784   FLAG_Z = res;
11785   FLAG_V = VFLAG_CLEAR;
11786   FLAG_C = CFLAG_CLEAR;
11787 }
11788 
11789 
m68k_op_move_16_d_a(void)11790 static void m68k_op_move_16_d_a(void)
11791 {
11792   uint res = MASK_OUT_ABOVE_16(AY);
11793   uint* r_dst = &DX;
11794 
11795   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
11796 
11797   FLAG_N = NFLAG_16(res);
11798   FLAG_Z = res;
11799   FLAG_V = VFLAG_CLEAR;
11800   FLAG_C = CFLAG_CLEAR;
11801 }
11802 
11803 
m68k_op_move_16_d_ai(void)11804 static void m68k_op_move_16_d_ai(void)
11805 {
11806   uint res = OPER_AY_AI_16();
11807   uint* r_dst = &DX;
11808 
11809   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
11810 
11811   FLAG_N = NFLAG_16(res);
11812   FLAG_Z = res;
11813   FLAG_V = VFLAG_CLEAR;
11814   FLAG_C = CFLAG_CLEAR;
11815 }
11816 
11817 
m68k_op_move_16_d_pi(void)11818 static void m68k_op_move_16_d_pi(void)
11819 {
11820   uint res = OPER_AY_PI_16();
11821   uint* r_dst = &DX;
11822 
11823   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
11824 
11825   FLAG_N = NFLAG_16(res);
11826   FLAG_Z = res;
11827   FLAG_V = VFLAG_CLEAR;
11828   FLAG_C = CFLAG_CLEAR;
11829 }
11830 
11831 
m68k_op_move_16_d_pd(void)11832 static void m68k_op_move_16_d_pd(void)
11833 {
11834   uint res = OPER_AY_PD_16();
11835   uint* r_dst = &DX;
11836 
11837   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
11838 
11839   FLAG_N = NFLAG_16(res);
11840   FLAG_Z = res;
11841   FLAG_V = VFLAG_CLEAR;
11842   FLAG_C = CFLAG_CLEAR;
11843 }
11844 
11845 
m68k_op_move_16_d_di(void)11846 static void m68k_op_move_16_d_di(void)
11847 {
11848   uint res = OPER_AY_DI_16();
11849   uint* r_dst = &DX;
11850 
11851   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
11852 
11853   FLAG_N = NFLAG_16(res);
11854   FLAG_Z = res;
11855   FLAG_V = VFLAG_CLEAR;
11856   FLAG_C = CFLAG_CLEAR;
11857 }
11858 
11859 
m68k_op_move_16_d_ix(void)11860 static void m68k_op_move_16_d_ix(void)
11861 {
11862   uint res = OPER_AY_IX_16();
11863   uint* r_dst = &DX;
11864 
11865   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
11866 
11867   FLAG_N = NFLAG_16(res);
11868   FLAG_Z = res;
11869   FLAG_V = VFLAG_CLEAR;
11870   FLAG_C = CFLAG_CLEAR;
11871 }
11872 
11873 
m68k_op_move_16_d_aw(void)11874 static void m68k_op_move_16_d_aw(void)
11875 {
11876   uint res = OPER_AW_16();
11877   uint* r_dst = &DX;
11878 
11879   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
11880 
11881   FLAG_N = NFLAG_16(res);
11882   FLAG_Z = res;
11883   FLAG_V = VFLAG_CLEAR;
11884   FLAG_C = CFLAG_CLEAR;
11885 }
11886 
11887 
m68k_op_move_16_d_al(void)11888 static void m68k_op_move_16_d_al(void)
11889 {
11890   uint res = OPER_AL_16();
11891   uint* r_dst = &DX;
11892 
11893   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
11894 
11895   FLAG_N = NFLAG_16(res);
11896   FLAG_Z = res;
11897   FLAG_V = VFLAG_CLEAR;
11898   FLAG_C = CFLAG_CLEAR;
11899 }
11900 
11901 
m68k_op_move_16_d_pcdi(void)11902 static void m68k_op_move_16_d_pcdi(void)
11903 {
11904   uint res = OPER_PCDI_16();
11905   uint* r_dst = &DX;
11906 
11907   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
11908 
11909   FLAG_N = NFLAG_16(res);
11910   FLAG_Z = res;
11911   FLAG_V = VFLAG_CLEAR;
11912   FLAG_C = CFLAG_CLEAR;
11913 }
11914 
11915 
m68k_op_move_16_d_pcix(void)11916 static void m68k_op_move_16_d_pcix(void)
11917 {
11918   uint res = OPER_PCIX_16();
11919   uint* r_dst = &DX;
11920 
11921   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
11922 
11923   FLAG_N = NFLAG_16(res);
11924   FLAG_Z = res;
11925   FLAG_V = VFLAG_CLEAR;
11926   FLAG_C = CFLAG_CLEAR;
11927 }
11928 
11929 
m68k_op_move_16_d_i(void)11930 static void m68k_op_move_16_d_i(void)
11931 {
11932   uint res = OPER_I_16();
11933   uint* r_dst = &DX;
11934 
11935   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
11936 
11937   FLAG_N = NFLAG_16(res);
11938   FLAG_Z = res;
11939   FLAG_V = VFLAG_CLEAR;
11940   FLAG_C = CFLAG_CLEAR;
11941 }
11942 
11943 
m68k_op_move_16_ai_d(void)11944 static void m68k_op_move_16_ai_d(void)
11945 {
11946   uint res = MASK_OUT_ABOVE_16(DY);
11947   uint ea = EA_AX_AI_16();
11948 
11949   FLAG_N = NFLAG_16(res);
11950   FLAG_Z = res;
11951   FLAG_V = VFLAG_CLEAR;
11952   FLAG_C = CFLAG_CLEAR;
11953 
11954   m68ki_write_16(ea, res);
11955 }
11956 
11957 
m68k_op_move_16_ai_a(void)11958 static void m68k_op_move_16_ai_a(void)
11959 {
11960   uint res = MASK_OUT_ABOVE_16(AY);
11961   uint ea = EA_AX_AI_16();
11962 
11963   FLAG_N = NFLAG_16(res);
11964   FLAG_Z = res;
11965   FLAG_V = VFLAG_CLEAR;
11966   FLAG_C = CFLAG_CLEAR;
11967 
11968   m68ki_write_16(ea, res);
11969 }
11970 
11971 
m68k_op_move_16_ai_ai(void)11972 static void m68k_op_move_16_ai_ai(void)
11973 {
11974   uint res = OPER_AY_AI_16();
11975   uint ea = EA_AX_AI_16();
11976 
11977   FLAG_N = NFLAG_16(res);
11978   FLAG_Z = res;
11979   FLAG_V = VFLAG_CLEAR;
11980   FLAG_C = CFLAG_CLEAR;
11981 
11982   m68ki_write_16(ea, res);
11983 }
11984 
11985 
m68k_op_move_16_ai_pi(void)11986 static void m68k_op_move_16_ai_pi(void)
11987 {
11988   uint res = OPER_AY_PI_16();
11989   uint ea = EA_AX_AI_16();
11990 
11991   FLAG_N = NFLAG_16(res);
11992   FLAG_Z = res;
11993   FLAG_V = VFLAG_CLEAR;
11994   FLAG_C = CFLAG_CLEAR;
11995 
11996   m68ki_write_16(ea, res);
11997 }
11998 
11999 
m68k_op_move_16_ai_pd(void)12000 static void m68k_op_move_16_ai_pd(void)
12001 {
12002   uint res = OPER_AY_PD_16();
12003   uint ea = EA_AX_AI_16();
12004 
12005   FLAG_N = NFLAG_16(res);
12006   FLAG_Z = res;
12007   FLAG_V = VFLAG_CLEAR;
12008   FLAG_C = CFLAG_CLEAR;
12009 
12010   m68ki_write_16(ea, res);
12011 }
12012 
12013 
m68k_op_move_16_ai_di(void)12014 static void m68k_op_move_16_ai_di(void)
12015 {
12016   uint res = OPER_AY_DI_16();
12017   uint ea = EA_AX_AI_16();
12018 
12019   FLAG_N = NFLAG_16(res);
12020   FLAG_Z = res;
12021   FLAG_V = VFLAG_CLEAR;
12022   FLAG_C = CFLAG_CLEAR;
12023 
12024   m68ki_write_16(ea, res);
12025 }
12026 
12027 
m68k_op_move_16_ai_ix(void)12028 static void m68k_op_move_16_ai_ix(void)
12029 {
12030   uint res = OPER_AY_IX_16();
12031   uint ea = EA_AX_AI_16();
12032 
12033   FLAG_N = NFLAG_16(res);
12034   FLAG_Z = res;
12035   FLAG_V = VFLAG_CLEAR;
12036   FLAG_C = CFLAG_CLEAR;
12037 
12038   m68ki_write_16(ea, res);
12039 }
12040 
12041 
m68k_op_move_16_ai_aw(void)12042 static void m68k_op_move_16_ai_aw(void)
12043 {
12044   uint res = OPER_AW_16();
12045   uint ea = EA_AX_AI_16();
12046 
12047   FLAG_N = NFLAG_16(res);
12048   FLAG_Z = res;
12049   FLAG_V = VFLAG_CLEAR;
12050   FLAG_C = CFLAG_CLEAR;
12051 
12052   m68ki_write_16(ea, res);
12053 }
12054 
12055 
m68k_op_move_16_ai_al(void)12056 static void m68k_op_move_16_ai_al(void)
12057 {
12058   uint res = OPER_AL_16();
12059   uint ea = EA_AX_AI_16();
12060 
12061   FLAG_N = NFLAG_16(res);
12062   FLAG_Z = res;
12063   FLAG_V = VFLAG_CLEAR;
12064   FLAG_C = CFLAG_CLEAR;
12065 
12066   m68ki_write_16(ea, res);
12067 }
12068 
12069 
m68k_op_move_16_ai_pcdi(void)12070 static void m68k_op_move_16_ai_pcdi(void)
12071 {
12072   uint res = OPER_PCDI_16();
12073   uint ea = EA_AX_AI_16();
12074 
12075   FLAG_N = NFLAG_16(res);
12076   FLAG_Z = res;
12077   FLAG_V = VFLAG_CLEAR;
12078   FLAG_C = CFLAG_CLEAR;
12079 
12080   m68ki_write_16(ea, res);
12081 }
12082 
12083 
m68k_op_move_16_ai_pcix(void)12084 static void m68k_op_move_16_ai_pcix(void)
12085 {
12086   uint res = OPER_PCIX_16();
12087   uint ea = EA_AX_AI_16();
12088 
12089   FLAG_N = NFLAG_16(res);
12090   FLAG_Z = res;
12091   FLAG_V = VFLAG_CLEAR;
12092   FLAG_C = CFLAG_CLEAR;
12093 
12094   m68ki_write_16(ea, res);
12095 }
12096 
12097 
m68k_op_move_16_ai_i(void)12098 static void m68k_op_move_16_ai_i(void)
12099 {
12100   uint res = OPER_I_16();
12101   uint ea = EA_AX_AI_16();
12102 
12103   FLAG_N = NFLAG_16(res);
12104   FLAG_Z = res;
12105   FLAG_V = VFLAG_CLEAR;
12106   FLAG_C = CFLAG_CLEAR;
12107 
12108   m68ki_write_16(ea, res);
12109 }
12110 
12111 
m68k_op_move_16_pi_d(void)12112 static void m68k_op_move_16_pi_d(void)
12113 {
12114   uint res = MASK_OUT_ABOVE_16(DY);
12115   uint ea = EA_AX_PI_16();
12116 
12117   FLAG_N = NFLAG_16(res);
12118   FLAG_Z = res;
12119   FLAG_V = VFLAG_CLEAR;
12120   FLAG_C = CFLAG_CLEAR;
12121 
12122   m68ki_write_16(ea, res);
12123 }
12124 
12125 
m68k_op_move_16_pi_a(void)12126 static void m68k_op_move_16_pi_a(void)
12127 {
12128   uint res = MASK_OUT_ABOVE_16(AY);
12129   uint ea = EA_AX_PI_16();
12130 
12131   FLAG_N = NFLAG_16(res);
12132   FLAG_Z = res;
12133   FLAG_V = VFLAG_CLEAR;
12134   FLAG_C = CFLAG_CLEAR;
12135 
12136   m68ki_write_16(ea, res);
12137 }
12138 
12139 
m68k_op_move_16_pi_ai(void)12140 static void m68k_op_move_16_pi_ai(void)
12141 {
12142   uint res = OPER_AY_AI_16();
12143   uint ea = EA_AX_PI_16();
12144 
12145   FLAG_N = NFLAG_16(res);
12146   FLAG_Z = res;
12147   FLAG_V = VFLAG_CLEAR;
12148   FLAG_C = CFLAG_CLEAR;
12149 
12150   m68ki_write_16(ea, res);
12151 }
12152 
12153 
m68k_op_move_16_pi_pi(void)12154 static void m68k_op_move_16_pi_pi(void)
12155 {
12156   uint res = OPER_AY_PI_16();
12157   uint ea = EA_AX_PI_16();
12158 
12159   FLAG_N = NFLAG_16(res);
12160   FLAG_Z = res;
12161   FLAG_V = VFLAG_CLEAR;
12162   FLAG_C = CFLAG_CLEAR;
12163 
12164   m68ki_write_16(ea, res);
12165 }
12166 
12167 
m68k_op_move_16_pi_pd(void)12168 static void m68k_op_move_16_pi_pd(void)
12169 {
12170   uint res = OPER_AY_PD_16();
12171   uint ea = EA_AX_PI_16();
12172 
12173   FLAG_N = NFLAG_16(res);
12174   FLAG_Z = res;
12175   FLAG_V = VFLAG_CLEAR;
12176   FLAG_C = CFLAG_CLEAR;
12177 
12178   m68ki_write_16(ea, res);
12179 }
12180 
12181 
m68k_op_move_16_pi_di(void)12182 static void m68k_op_move_16_pi_di(void)
12183 {
12184   uint res = OPER_AY_DI_16();
12185   uint ea = EA_AX_PI_16();
12186 
12187   FLAG_N = NFLAG_16(res);
12188   FLAG_Z = res;
12189   FLAG_V = VFLAG_CLEAR;
12190   FLAG_C = CFLAG_CLEAR;
12191 
12192   m68ki_write_16(ea, res);
12193 }
12194 
12195 
m68k_op_move_16_pi_ix(void)12196 static void m68k_op_move_16_pi_ix(void)
12197 {
12198   uint res = OPER_AY_IX_16();
12199   uint ea = EA_AX_PI_16();
12200 
12201   FLAG_N = NFLAG_16(res);
12202   FLAG_Z = res;
12203   FLAG_V = VFLAG_CLEAR;
12204   FLAG_C = CFLAG_CLEAR;
12205 
12206   m68ki_write_16(ea, res);
12207 }
12208 
12209 
m68k_op_move_16_pi_aw(void)12210 static void m68k_op_move_16_pi_aw(void)
12211 {
12212   uint res = OPER_AW_16();
12213   uint ea = EA_AX_PI_16();
12214 
12215   FLAG_N = NFLAG_16(res);
12216   FLAG_Z = res;
12217   FLAG_V = VFLAG_CLEAR;
12218   FLAG_C = CFLAG_CLEAR;
12219 
12220   m68ki_write_16(ea, res);
12221 }
12222 
12223 
m68k_op_move_16_pi_al(void)12224 static void m68k_op_move_16_pi_al(void)
12225 {
12226   uint res = OPER_AL_16();
12227   uint ea = EA_AX_PI_16();
12228 
12229   FLAG_N = NFLAG_16(res);
12230   FLAG_Z = res;
12231   FLAG_V = VFLAG_CLEAR;
12232   FLAG_C = CFLAG_CLEAR;
12233 
12234   m68ki_write_16(ea, res);
12235 }
12236 
12237 
m68k_op_move_16_pi_pcdi(void)12238 static void m68k_op_move_16_pi_pcdi(void)
12239 {
12240   uint res = OPER_PCDI_16();
12241   uint ea = EA_AX_PI_16();
12242 
12243   FLAG_N = NFLAG_16(res);
12244   FLAG_Z = res;
12245   FLAG_V = VFLAG_CLEAR;
12246   FLAG_C = CFLAG_CLEAR;
12247 
12248   m68ki_write_16(ea, res);
12249 }
12250 
12251 
m68k_op_move_16_pi_pcix(void)12252 static void m68k_op_move_16_pi_pcix(void)
12253 {
12254   uint res = OPER_PCIX_16();
12255   uint ea = EA_AX_PI_16();
12256 
12257   FLAG_N = NFLAG_16(res);
12258   FLAG_Z = res;
12259   FLAG_V = VFLAG_CLEAR;
12260   FLAG_C = CFLAG_CLEAR;
12261 
12262   m68ki_write_16(ea, res);
12263 }
12264 
12265 
m68k_op_move_16_pi_i(void)12266 static void m68k_op_move_16_pi_i(void)
12267 {
12268   uint res = OPER_I_16();
12269   uint ea = EA_AX_PI_16();
12270 
12271   FLAG_N = NFLAG_16(res);
12272   FLAG_Z = res;
12273   FLAG_V = VFLAG_CLEAR;
12274   FLAG_C = CFLAG_CLEAR;
12275 
12276   m68ki_write_16(ea, res);
12277 }
12278 
12279 
m68k_op_move_16_pd_d(void)12280 static void m68k_op_move_16_pd_d(void)
12281 {
12282   uint res = MASK_OUT_ABOVE_16(DY);
12283   uint ea = EA_AX_PD_16();
12284 
12285   FLAG_N = NFLAG_16(res);
12286   FLAG_Z = res;
12287   FLAG_V = VFLAG_CLEAR;
12288   FLAG_C = CFLAG_CLEAR;
12289 
12290   m68ki_write_16(ea, res);
12291 }
12292 
12293 
m68k_op_move_16_pd_a(void)12294 static void m68k_op_move_16_pd_a(void)
12295 {
12296   uint res = MASK_OUT_ABOVE_16(AY);
12297   uint ea = EA_AX_PD_16();
12298 
12299   FLAG_N = NFLAG_16(res);
12300   FLAG_Z = res;
12301   FLAG_V = VFLAG_CLEAR;
12302   FLAG_C = CFLAG_CLEAR;
12303 
12304   m68ki_write_16(ea, res);
12305 }
12306 
12307 
m68k_op_move_16_pd_ai(void)12308 static void m68k_op_move_16_pd_ai(void)
12309 {
12310   uint res = OPER_AY_AI_16();
12311   uint ea = EA_AX_PD_16();
12312 
12313   FLAG_N = NFLAG_16(res);
12314   FLAG_Z = res;
12315   FLAG_V = VFLAG_CLEAR;
12316   FLAG_C = CFLAG_CLEAR;
12317 
12318   m68ki_write_16(ea, res);
12319 }
12320 
12321 
m68k_op_move_16_pd_pi(void)12322 static void m68k_op_move_16_pd_pi(void)
12323 {
12324   uint res = OPER_AY_PI_16();
12325   uint ea = EA_AX_PD_16();
12326 
12327   FLAG_N = NFLAG_16(res);
12328   FLAG_Z = res;
12329   FLAG_V = VFLAG_CLEAR;
12330   FLAG_C = CFLAG_CLEAR;
12331 
12332   m68ki_write_16(ea, res);
12333 }
12334 
12335 
m68k_op_move_16_pd_pd(void)12336 static void m68k_op_move_16_pd_pd(void)
12337 {
12338   uint res = OPER_AY_PD_16();
12339   uint ea = EA_AX_PD_16();
12340 
12341   FLAG_N = NFLAG_16(res);
12342   FLAG_Z = res;
12343   FLAG_V = VFLAG_CLEAR;
12344   FLAG_C = CFLAG_CLEAR;
12345 
12346   m68ki_write_16(ea, res);
12347 }
12348 
12349 
m68k_op_move_16_pd_di(void)12350 static void m68k_op_move_16_pd_di(void)
12351 {
12352   uint res = OPER_AY_DI_16();
12353   uint ea = EA_AX_PD_16();
12354 
12355   FLAG_N = NFLAG_16(res);
12356   FLAG_Z = res;
12357   FLAG_V = VFLAG_CLEAR;
12358   FLAG_C = CFLAG_CLEAR;
12359 
12360   m68ki_write_16(ea, res);
12361 }
12362 
12363 
m68k_op_move_16_pd_ix(void)12364 static void m68k_op_move_16_pd_ix(void)
12365 {
12366   uint res = OPER_AY_IX_16();
12367   uint ea = EA_AX_PD_16();
12368 
12369   FLAG_N = NFLAG_16(res);
12370   FLAG_Z = res;
12371   FLAG_V = VFLAG_CLEAR;
12372   FLAG_C = CFLAG_CLEAR;
12373 
12374   m68ki_write_16(ea, res);
12375 }
12376 
12377 
m68k_op_move_16_pd_aw(void)12378 static void m68k_op_move_16_pd_aw(void)
12379 {
12380   uint res = OPER_AW_16();
12381   uint ea = EA_AX_PD_16();
12382 
12383   FLAG_N = NFLAG_16(res);
12384   FLAG_Z = res;
12385   FLAG_V = VFLAG_CLEAR;
12386   FLAG_C = CFLAG_CLEAR;
12387 
12388   m68ki_write_16(ea, res);
12389 }
12390 
12391 
m68k_op_move_16_pd_al(void)12392 static void m68k_op_move_16_pd_al(void)
12393 {
12394   uint res = OPER_AL_16();
12395   uint ea = EA_AX_PD_16();
12396 
12397   FLAG_N = NFLAG_16(res);
12398   FLAG_Z = res;
12399   FLAG_V = VFLAG_CLEAR;
12400   FLAG_C = CFLAG_CLEAR;
12401 
12402   m68ki_write_16(ea, res);
12403 }
12404 
12405 
m68k_op_move_16_pd_pcdi(void)12406 static void m68k_op_move_16_pd_pcdi(void)
12407 {
12408   uint res = OPER_PCDI_16();
12409   uint ea = EA_AX_PD_16();
12410 
12411   FLAG_N = NFLAG_16(res);
12412   FLAG_Z = res;
12413   FLAG_V = VFLAG_CLEAR;
12414   FLAG_C = CFLAG_CLEAR;
12415 
12416   m68ki_write_16(ea, res);
12417 }
12418 
12419 
m68k_op_move_16_pd_pcix(void)12420 static void m68k_op_move_16_pd_pcix(void)
12421 {
12422   uint res = OPER_PCIX_16();
12423   uint ea = EA_AX_PD_16();
12424 
12425   FLAG_N = NFLAG_16(res);
12426   FLAG_Z = res;
12427   FLAG_V = VFLAG_CLEAR;
12428   FLAG_C = CFLAG_CLEAR;
12429 
12430   m68ki_write_16(ea, res);
12431 }
12432 
12433 
m68k_op_move_16_pd_i(void)12434 static void m68k_op_move_16_pd_i(void)
12435 {
12436   uint res = OPER_I_16();
12437   uint ea = EA_AX_PD_16();
12438 
12439   FLAG_N = NFLAG_16(res);
12440   FLAG_Z = res;
12441   FLAG_V = VFLAG_CLEAR;
12442   FLAG_C = CFLAG_CLEAR;
12443 
12444   m68ki_write_16(ea, res);
12445 }
12446 
12447 
m68k_op_move_16_di_d(void)12448 static void m68k_op_move_16_di_d(void)
12449 {
12450   uint res = MASK_OUT_ABOVE_16(DY);
12451   uint ea = EA_AX_DI_16();
12452 
12453   FLAG_N = NFLAG_16(res);
12454   FLAG_Z = res;
12455   FLAG_V = VFLAG_CLEAR;
12456   FLAG_C = CFLAG_CLEAR;
12457 
12458   m68ki_write_16(ea, res);
12459 }
12460 
12461 
m68k_op_move_16_di_a(void)12462 static void m68k_op_move_16_di_a(void)
12463 {
12464   uint res = MASK_OUT_ABOVE_16(AY);
12465   uint ea = EA_AX_DI_16();
12466 
12467   FLAG_N = NFLAG_16(res);
12468   FLAG_Z = res;
12469   FLAG_V = VFLAG_CLEAR;
12470   FLAG_C = CFLAG_CLEAR;
12471 
12472   m68ki_write_16(ea, res);
12473 }
12474 
12475 
m68k_op_move_16_di_ai(void)12476 static void m68k_op_move_16_di_ai(void)
12477 {
12478   uint res = OPER_AY_AI_16();
12479   uint ea = EA_AX_DI_16();
12480 
12481   FLAG_N = NFLAG_16(res);
12482   FLAG_Z = res;
12483   FLAG_V = VFLAG_CLEAR;
12484   FLAG_C = CFLAG_CLEAR;
12485 
12486   m68ki_write_16(ea, res);
12487 }
12488 
12489 
m68k_op_move_16_di_pi(void)12490 static void m68k_op_move_16_di_pi(void)
12491 {
12492   uint res = OPER_AY_PI_16();
12493   uint ea = EA_AX_DI_16();
12494 
12495   FLAG_N = NFLAG_16(res);
12496   FLAG_Z = res;
12497   FLAG_V = VFLAG_CLEAR;
12498   FLAG_C = CFLAG_CLEAR;
12499 
12500   m68ki_write_16(ea, res);
12501 }
12502 
12503 
m68k_op_move_16_di_pd(void)12504 static void m68k_op_move_16_di_pd(void)
12505 {
12506   uint res = OPER_AY_PD_16();
12507   uint ea = EA_AX_DI_16();
12508 
12509   FLAG_N = NFLAG_16(res);
12510   FLAG_Z = res;
12511   FLAG_V = VFLAG_CLEAR;
12512   FLAG_C = CFLAG_CLEAR;
12513 
12514   m68ki_write_16(ea, res);
12515 }
12516 
12517 
m68k_op_move_16_di_di(void)12518 static void m68k_op_move_16_di_di(void)
12519 {
12520   uint res = OPER_AY_DI_16();
12521   uint ea = EA_AX_DI_16();
12522 
12523   FLAG_N = NFLAG_16(res);
12524   FLAG_Z = res;
12525   FLAG_V = VFLAG_CLEAR;
12526   FLAG_C = CFLAG_CLEAR;
12527 
12528   m68ki_write_16(ea, res);
12529 }
12530 
12531 
m68k_op_move_16_di_ix(void)12532 static void m68k_op_move_16_di_ix(void)
12533 {
12534   uint res = OPER_AY_IX_16();
12535   uint ea = EA_AX_DI_16();
12536 
12537   FLAG_N = NFLAG_16(res);
12538   FLAG_Z = res;
12539   FLAG_V = VFLAG_CLEAR;
12540   FLAG_C = CFLAG_CLEAR;
12541 
12542   m68ki_write_16(ea, res);
12543 }
12544 
12545 
m68k_op_move_16_di_aw(void)12546 static void m68k_op_move_16_di_aw(void)
12547 {
12548   uint res = OPER_AW_16();
12549   uint ea = EA_AX_DI_16();
12550 
12551   FLAG_N = NFLAG_16(res);
12552   FLAG_Z = res;
12553   FLAG_V = VFLAG_CLEAR;
12554   FLAG_C = CFLAG_CLEAR;
12555 
12556   m68ki_write_16(ea, res);
12557 }
12558 
12559 
m68k_op_move_16_di_al(void)12560 static void m68k_op_move_16_di_al(void)
12561 {
12562   uint res = OPER_AL_16();
12563   uint ea = EA_AX_DI_16();
12564 
12565   FLAG_N = NFLAG_16(res);
12566   FLAG_Z = res;
12567   FLAG_V = VFLAG_CLEAR;
12568   FLAG_C = CFLAG_CLEAR;
12569 
12570   m68ki_write_16(ea, res);
12571 }
12572 
12573 
m68k_op_move_16_di_pcdi(void)12574 static void m68k_op_move_16_di_pcdi(void)
12575 {
12576   uint res = OPER_PCDI_16();
12577   uint ea = EA_AX_DI_16();
12578 
12579   FLAG_N = NFLAG_16(res);
12580   FLAG_Z = res;
12581   FLAG_V = VFLAG_CLEAR;
12582   FLAG_C = CFLAG_CLEAR;
12583 
12584   m68ki_write_16(ea, res);
12585 }
12586 
12587 
m68k_op_move_16_di_pcix(void)12588 static void m68k_op_move_16_di_pcix(void)
12589 {
12590   uint res = OPER_PCIX_16();
12591   uint ea = EA_AX_DI_16();
12592 
12593   FLAG_N = NFLAG_16(res);
12594   FLAG_Z = res;
12595   FLAG_V = VFLAG_CLEAR;
12596   FLAG_C = CFLAG_CLEAR;
12597 
12598   m68ki_write_16(ea, res);
12599 }
12600 
12601 
m68k_op_move_16_di_i(void)12602 static void m68k_op_move_16_di_i(void)
12603 {
12604   uint res = OPER_I_16();
12605   uint ea = EA_AX_DI_16();
12606 
12607   FLAG_N = NFLAG_16(res);
12608   FLAG_Z = res;
12609   FLAG_V = VFLAG_CLEAR;
12610   FLAG_C = CFLAG_CLEAR;
12611 
12612   m68ki_write_16(ea, res);
12613 }
12614 
12615 
m68k_op_move_16_ix_d(void)12616 static void m68k_op_move_16_ix_d(void)
12617 {
12618   uint res = MASK_OUT_ABOVE_16(DY);
12619   uint ea = EA_AX_IX_16();
12620 
12621   FLAG_N = NFLAG_16(res);
12622   FLAG_Z = res;
12623   FLAG_V = VFLAG_CLEAR;
12624   FLAG_C = CFLAG_CLEAR;
12625 
12626   m68ki_write_16(ea, res);
12627 }
12628 
12629 
m68k_op_move_16_ix_a(void)12630 static void m68k_op_move_16_ix_a(void)
12631 {
12632   uint res = MASK_OUT_ABOVE_16(AY);
12633   uint ea = EA_AX_IX_16();
12634 
12635   FLAG_N = NFLAG_16(res);
12636   FLAG_Z = res;
12637   FLAG_V = VFLAG_CLEAR;
12638   FLAG_C = CFLAG_CLEAR;
12639 
12640   m68ki_write_16(ea, res);
12641 }
12642 
12643 
m68k_op_move_16_ix_ai(void)12644 static void m68k_op_move_16_ix_ai(void)
12645 {
12646   uint res = OPER_AY_AI_16();
12647   uint ea = EA_AX_IX_16();
12648 
12649   FLAG_N = NFLAG_16(res);
12650   FLAG_Z = res;
12651   FLAG_V = VFLAG_CLEAR;
12652   FLAG_C = CFLAG_CLEAR;
12653 
12654   m68ki_write_16(ea, res);
12655 }
12656 
12657 
m68k_op_move_16_ix_pi(void)12658 static void m68k_op_move_16_ix_pi(void)
12659 {
12660   uint res = OPER_AY_PI_16();
12661   uint ea = EA_AX_IX_16();
12662 
12663   FLAG_N = NFLAG_16(res);
12664   FLAG_Z = res;
12665   FLAG_V = VFLAG_CLEAR;
12666   FLAG_C = CFLAG_CLEAR;
12667 
12668   m68ki_write_16(ea, res);
12669 }
12670 
12671 
m68k_op_move_16_ix_pd(void)12672 static void m68k_op_move_16_ix_pd(void)
12673 {
12674   uint res = OPER_AY_PD_16();
12675   uint ea = EA_AX_IX_16();
12676 
12677   FLAG_N = NFLAG_16(res);
12678   FLAG_Z = res;
12679   FLAG_V = VFLAG_CLEAR;
12680   FLAG_C = CFLAG_CLEAR;
12681 
12682   m68ki_write_16(ea, res);
12683 }
12684 
12685 
m68k_op_move_16_ix_di(void)12686 static void m68k_op_move_16_ix_di(void)
12687 {
12688   uint res = OPER_AY_DI_16();
12689   uint ea = EA_AX_IX_16();
12690 
12691   FLAG_N = NFLAG_16(res);
12692   FLAG_Z = res;
12693   FLAG_V = VFLAG_CLEAR;
12694   FLAG_C = CFLAG_CLEAR;
12695 
12696   m68ki_write_16(ea, res);
12697 }
12698 
12699 
m68k_op_move_16_ix_ix(void)12700 static void m68k_op_move_16_ix_ix(void)
12701 {
12702   uint res = OPER_AY_IX_16();
12703   uint ea = EA_AX_IX_16();
12704 
12705   FLAG_N = NFLAG_16(res);
12706   FLAG_Z = res;
12707   FLAG_V = VFLAG_CLEAR;
12708   FLAG_C = CFLAG_CLEAR;
12709 
12710   m68ki_write_16(ea, res);
12711 }
12712 
12713 
m68k_op_move_16_ix_aw(void)12714 static void m68k_op_move_16_ix_aw(void)
12715 {
12716   uint res = OPER_AW_16();
12717   uint ea = EA_AX_IX_16();
12718 
12719   FLAG_N = NFLAG_16(res);
12720   FLAG_Z = res;
12721   FLAG_V = VFLAG_CLEAR;
12722   FLAG_C = CFLAG_CLEAR;
12723 
12724   m68ki_write_16(ea, res);
12725 }
12726 
12727 
m68k_op_move_16_ix_al(void)12728 static void m68k_op_move_16_ix_al(void)
12729 {
12730   uint res = OPER_AL_16();
12731   uint ea = EA_AX_IX_16();
12732 
12733   FLAG_N = NFLAG_16(res);
12734   FLAG_Z = res;
12735   FLAG_V = VFLAG_CLEAR;
12736   FLAG_C = CFLAG_CLEAR;
12737 
12738   m68ki_write_16(ea, res);
12739 }
12740 
12741 
m68k_op_move_16_ix_pcdi(void)12742 static void m68k_op_move_16_ix_pcdi(void)
12743 {
12744   uint res = OPER_PCDI_16();
12745   uint ea = EA_AX_IX_16();
12746 
12747   FLAG_N = NFLAG_16(res);
12748   FLAG_Z = res;
12749   FLAG_V = VFLAG_CLEAR;
12750   FLAG_C = CFLAG_CLEAR;
12751 
12752   m68ki_write_16(ea, res);
12753 }
12754 
12755 
m68k_op_move_16_ix_pcix(void)12756 static void m68k_op_move_16_ix_pcix(void)
12757 {
12758   uint res = OPER_PCIX_16();
12759   uint ea = EA_AX_IX_16();
12760 
12761   FLAG_N = NFLAG_16(res);
12762   FLAG_Z = res;
12763   FLAG_V = VFLAG_CLEAR;
12764   FLAG_C = CFLAG_CLEAR;
12765 
12766   m68ki_write_16(ea, res);
12767 }
12768 
12769 
m68k_op_move_16_ix_i(void)12770 static void m68k_op_move_16_ix_i(void)
12771 {
12772   uint res = OPER_I_16();
12773   uint ea = EA_AX_IX_16();
12774 
12775   FLAG_N = NFLAG_16(res);
12776   FLAG_Z = res;
12777   FLAG_V = VFLAG_CLEAR;
12778   FLAG_C = CFLAG_CLEAR;
12779 
12780   m68ki_write_16(ea, res);
12781 }
12782 
12783 
m68k_op_move_16_aw_d(void)12784 static void m68k_op_move_16_aw_d(void)
12785 {
12786   uint res = MASK_OUT_ABOVE_16(DY);
12787   uint ea = EA_AW_16();
12788 
12789   FLAG_N = NFLAG_16(res);
12790   FLAG_Z = res;
12791   FLAG_V = VFLAG_CLEAR;
12792   FLAG_C = CFLAG_CLEAR;
12793 
12794   m68ki_write_16(ea, res);
12795 }
12796 
12797 
m68k_op_move_16_aw_a(void)12798 static void m68k_op_move_16_aw_a(void)
12799 {
12800   uint res = MASK_OUT_ABOVE_16(AY);
12801   uint ea = EA_AW_16();
12802 
12803   FLAG_N = NFLAG_16(res);
12804   FLAG_Z = res;
12805   FLAG_V = VFLAG_CLEAR;
12806   FLAG_C = CFLAG_CLEAR;
12807 
12808   m68ki_write_16(ea, res);
12809 }
12810 
12811 
m68k_op_move_16_aw_ai(void)12812 static void m68k_op_move_16_aw_ai(void)
12813 {
12814   uint res = OPER_AY_AI_16();
12815   uint ea = EA_AW_16();
12816 
12817   FLAG_N = NFLAG_16(res);
12818   FLAG_Z = res;
12819   FLAG_V = VFLAG_CLEAR;
12820   FLAG_C = CFLAG_CLEAR;
12821 
12822   m68ki_write_16(ea, res);
12823 }
12824 
12825 
m68k_op_move_16_aw_pi(void)12826 static void m68k_op_move_16_aw_pi(void)
12827 {
12828   uint res = OPER_AY_PI_16();
12829   uint ea = EA_AW_16();
12830 
12831   FLAG_N = NFLAG_16(res);
12832   FLAG_Z = res;
12833   FLAG_V = VFLAG_CLEAR;
12834   FLAG_C = CFLAG_CLEAR;
12835 
12836   m68ki_write_16(ea, res);
12837 }
12838 
12839 
m68k_op_move_16_aw_pd(void)12840 static void m68k_op_move_16_aw_pd(void)
12841 {
12842   uint res = OPER_AY_PD_16();
12843   uint ea = EA_AW_16();
12844 
12845   FLAG_N = NFLAG_16(res);
12846   FLAG_Z = res;
12847   FLAG_V = VFLAG_CLEAR;
12848   FLAG_C = CFLAG_CLEAR;
12849 
12850   m68ki_write_16(ea, res);
12851 }
12852 
12853 
m68k_op_move_16_aw_di(void)12854 static void m68k_op_move_16_aw_di(void)
12855 {
12856   uint res = OPER_AY_DI_16();
12857   uint ea = EA_AW_16();
12858 
12859   FLAG_N = NFLAG_16(res);
12860   FLAG_Z = res;
12861   FLAG_V = VFLAG_CLEAR;
12862   FLAG_C = CFLAG_CLEAR;
12863 
12864   m68ki_write_16(ea, res);
12865 }
12866 
12867 
m68k_op_move_16_aw_ix(void)12868 static void m68k_op_move_16_aw_ix(void)
12869 {
12870   uint res = OPER_AY_IX_16();
12871   uint ea = EA_AW_16();
12872 
12873   FLAG_N = NFLAG_16(res);
12874   FLAG_Z = res;
12875   FLAG_V = VFLAG_CLEAR;
12876   FLAG_C = CFLAG_CLEAR;
12877 
12878   m68ki_write_16(ea, res);
12879 }
12880 
12881 
m68k_op_move_16_aw_aw(void)12882 static void m68k_op_move_16_aw_aw(void)
12883 {
12884   uint res = OPER_AW_16();
12885   uint ea = EA_AW_16();
12886 
12887   FLAG_N = NFLAG_16(res);
12888   FLAG_Z = res;
12889   FLAG_V = VFLAG_CLEAR;
12890   FLAG_C = CFLAG_CLEAR;
12891 
12892   m68ki_write_16(ea, res);
12893 }
12894 
12895 
m68k_op_move_16_aw_al(void)12896 static void m68k_op_move_16_aw_al(void)
12897 {
12898   uint res = OPER_AL_16();
12899   uint ea = EA_AW_16();
12900 
12901   FLAG_N = NFLAG_16(res);
12902   FLAG_Z = res;
12903   FLAG_V = VFLAG_CLEAR;
12904   FLAG_C = CFLAG_CLEAR;
12905 
12906   m68ki_write_16(ea, res);
12907 }
12908 
12909 
m68k_op_move_16_aw_pcdi(void)12910 static void m68k_op_move_16_aw_pcdi(void)
12911 {
12912   uint res = OPER_PCDI_16();
12913   uint ea = EA_AW_16();
12914 
12915   FLAG_N = NFLAG_16(res);
12916   FLAG_Z = res;
12917   FLAG_V = VFLAG_CLEAR;
12918   FLAG_C = CFLAG_CLEAR;
12919 
12920   m68ki_write_16(ea, res);
12921 }
12922 
12923 
m68k_op_move_16_aw_pcix(void)12924 static void m68k_op_move_16_aw_pcix(void)
12925 {
12926   uint res = OPER_PCIX_16();
12927   uint ea = EA_AW_16();
12928 
12929   FLAG_N = NFLAG_16(res);
12930   FLAG_Z = res;
12931   FLAG_V = VFLAG_CLEAR;
12932   FLAG_C = CFLAG_CLEAR;
12933 
12934   m68ki_write_16(ea, res);
12935 }
12936 
12937 
m68k_op_move_16_aw_i(void)12938 static void m68k_op_move_16_aw_i(void)
12939 {
12940   uint res = OPER_I_16();
12941   uint ea = EA_AW_16();
12942 
12943   FLAG_N = NFLAG_16(res);
12944   FLAG_Z = res;
12945   FLAG_V = VFLAG_CLEAR;
12946   FLAG_C = CFLAG_CLEAR;
12947 
12948   m68ki_write_16(ea, res);
12949 }
12950 
12951 
m68k_op_move_16_al_d(void)12952 static void m68k_op_move_16_al_d(void)
12953 {
12954   uint res = MASK_OUT_ABOVE_16(DY);
12955   uint ea = EA_AL_16();
12956 
12957   FLAG_N = NFLAG_16(res);
12958   FLAG_Z = res;
12959   FLAG_V = VFLAG_CLEAR;
12960   FLAG_C = CFLAG_CLEAR;
12961 
12962   m68ki_write_16(ea, res);
12963 }
12964 
12965 
m68k_op_move_16_al_a(void)12966 static void m68k_op_move_16_al_a(void)
12967 {
12968   uint res = MASK_OUT_ABOVE_16(AY);
12969   uint ea = EA_AL_16();
12970 
12971   FLAG_N = NFLAG_16(res);
12972   FLAG_Z = res;
12973   FLAG_V = VFLAG_CLEAR;
12974   FLAG_C = CFLAG_CLEAR;
12975 
12976   m68ki_write_16(ea, res);
12977 }
12978 
12979 
m68k_op_move_16_al_ai(void)12980 static void m68k_op_move_16_al_ai(void)
12981 {
12982   uint res = OPER_AY_AI_16();
12983   uint ea = EA_AL_16();
12984 
12985   FLAG_N = NFLAG_16(res);
12986   FLAG_Z = res;
12987   FLAG_V = VFLAG_CLEAR;
12988   FLAG_C = CFLAG_CLEAR;
12989 
12990   m68ki_write_16(ea, res);
12991 }
12992 
12993 
m68k_op_move_16_al_pi(void)12994 static void m68k_op_move_16_al_pi(void)
12995 {
12996   uint res = OPER_AY_PI_16();
12997   uint ea = EA_AL_16();
12998 
12999   FLAG_N = NFLAG_16(res);
13000   FLAG_Z = res;
13001   FLAG_V = VFLAG_CLEAR;
13002   FLAG_C = CFLAG_CLEAR;
13003 
13004   m68ki_write_16(ea, res);
13005 }
13006 
13007 
m68k_op_move_16_al_pd(void)13008 static void m68k_op_move_16_al_pd(void)
13009 {
13010   uint res = OPER_AY_PD_16();
13011   uint ea = EA_AL_16();
13012 
13013   FLAG_N = NFLAG_16(res);
13014   FLAG_Z = res;
13015   FLAG_V = VFLAG_CLEAR;
13016   FLAG_C = CFLAG_CLEAR;
13017 
13018   m68ki_write_16(ea, res);
13019 }
13020 
13021 
m68k_op_move_16_al_di(void)13022 static void m68k_op_move_16_al_di(void)
13023 {
13024   uint res = OPER_AY_DI_16();
13025   uint ea = EA_AL_16();
13026 
13027   FLAG_N = NFLAG_16(res);
13028   FLAG_Z = res;
13029   FLAG_V = VFLAG_CLEAR;
13030   FLAG_C = CFLAG_CLEAR;
13031 
13032   m68ki_write_16(ea, res);
13033 }
13034 
13035 
m68k_op_move_16_al_ix(void)13036 static void m68k_op_move_16_al_ix(void)
13037 {
13038   uint res = OPER_AY_IX_16();
13039   uint ea = EA_AL_16();
13040 
13041   FLAG_N = NFLAG_16(res);
13042   FLAG_Z = res;
13043   FLAG_V = VFLAG_CLEAR;
13044   FLAG_C = CFLAG_CLEAR;
13045 
13046   m68ki_write_16(ea, res);
13047 }
13048 
13049 
m68k_op_move_16_al_aw(void)13050 static void m68k_op_move_16_al_aw(void)
13051 {
13052   uint res = OPER_AW_16();
13053   uint ea = EA_AL_16();
13054 
13055   FLAG_N = NFLAG_16(res);
13056   FLAG_Z = res;
13057   FLAG_V = VFLAG_CLEAR;
13058   FLAG_C = CFLAG_CLEAR;
13059 
13060   m68ki_write_16(ea, res);
13061 }
13062 
13063 
m68k_op_move_16_al_al(void)13064 static void m68k_op_move_16_al_al(void)
13065 {
13066   uint res = OPER_AL_16();
13067   uint ea = EA_AL_16();
13068 
13069   FLAG_N = NFLAG_16(res);
13070   FLAG_Z = res;
13071   FLAG_V = VFLAG_CLEAR;
13072   FLAG_C = CFLAG_CLEAR;
13073 
13074   m68ki_write_16(ea, res);
13075 }
13076 
13077 
m68k_op_move_16_al_pcdi(void)13078 static void m68k_op_move_16_al_pcdi(void)
13079 {
13080   uint res = OPER_PCDI_16();
13081   uint ea = EA_AL_16();
13082 
13083   FLAG_N = NFLAG_16(res);
13084   FLAG_Z = res;
13085   FLAG_V = VFLAG_CLEAR;
13086   FLAG_C = CFLAG_CLEAR;
13087 
13088   m68ki_write_16(ea, res);
13089 }
13090 
13091 
m68k_op_move_16_al_pcix(void)13092 static void m68k_op_move_16_al_pcix(void)
13093 {
13094   uint res = OPER_PCIX_16();
13095   uint ea = EA_AL_16();
13096 
13097   FLAG_N = NFLAG_16(res);
13098   FLAG_Z = res;
13099   FLAG_V = VFLAG_CLEAR;
13100   FLAG_C = CFLAG_CLEAR;
13101 
13102   m68ki_write_16(ea, res);
13103 }
13104 
13105 
m68k_op_move_16_al_i(void)13106 static void m68k_op_move_16_al_i(void)
13107 {
13108   uint res = OPER_I_16();
13109   uint ea = EA_AL_16();
13110 
13111   FLAG_N = NFLAG_16(res);
13112   FLAG_Z = res;
13113   FLAG_V = VFLAG_CLEAR;
13114   FLAG_C = CFLAG_CLEAR;
13115 
13116   m68ki_write_16(ea, res);
13117 }
13118 
13119 
m68k_op_move_32_d_d(void)13120 static void m68k_op_move_32_d_d(void)
13121 {
13122   uint res = DY;
13123   uint* r_dst = &DX;
13124 
13125   *r_dst = res;
13126 
13127   FLAG_N = NFLAG_32(res);
13128   FLAG_Z = res;
13129   FLAG_V = VFLAG_CLEAR;
13130   FLAG_C = CFLAG_CLEAR;
13131 }
13132 
13133 
m68k_op_move_32_d_a(void)13134 static void m68k_op_move_32_d_a(void)
13135 {
13136   uint res = AY;
13137   uint* r_dst = &DX;
13138 
13139   *r_dst = res;
13140 
13141   FLAG_N = NFLAG_32(res);
13142   FLAG_Z = res;
13143   FLAG_V = VFLAG_CLEAR;
13144   FLAG_C = CFLAG_CLEAR;
13145 }
13146 
13147 
m68k_op_move_32_d_ai(void)13148 static void m68k_op_move_32_d_ai(void)
13149 {
13150   uint res = OPER_AY_AI_32();
13151   uint* r_dst = &DX;
13152 
13153   *r_dst = res;
13154 
13155   FLAG_N = NFLAG_32(res);
13156   FLAG_Z = res;
13157   FLAG_V = VFLAG_CLEAR;
13158   FLAG_C = CFLAG_CLEAR;
13159 }
13160 
13161 
m68k_op_move_32_d_pi(void)13162 static void m68k_op_move_32_d_pi(void)
13163 {
13164   uint res = OPER_AY_PI_32();
13165   uint* r_dst = &DX;
13166 
13167   *r_dst = res;
13168 
13169   FLAG_N = NFLAG_32(res);
13170   FLAG_Z = res;
13171   FLAG_V = VFLAG_CLEAR;
13172   FLAG_C = CFLAG_CLEAR;
13173 }
13174 
13175 
m68k_op_move_32_d_pd(void)13176 static void m68k_op_move_32_d_pd(void)
13177 {
13178   uint res = OPER_AY_PD_32();
13179   uint* r_dst = &DX;
13180 
13181   *r_dst = res;
13182 
13183   FLAG_N = NFLAG_32(res);
13184   FLAG_Z = res;
13185   FLAG_V = VFLAG_CLEAR;
13186   FLAG_C = CFLAG_CLEAR;
13187 }
13188 
13189 
m68k_op_move_32_d_di(void)13190 static void m68k_op_move_32_d_di(void)
13191 {
13192   uint res = OPER_AY_DI_32();
13193   uint* r_dst = &DX;
13194 
13195   *r_dst = res;
13196 
13197   FLAG_N = NFLAG_32(res);
13198   FLAG_Z = res;
13199   FLAG_V = VFLAG_CLEAR;
13200   FLAG_C = CFLAG_CLEAR;
13201 }
13202 
13203 
m68k_op_move_32_d_ix(void)13204 static void m68k_op_move_32_d_ix(void)
13205 {
13206   uint res = OPER_AY_IX_32();
13207   uint* r_dst = &DX;
13208 
13209   *r_dst = res;
13210 
13211   FLAG_N = NFLAG_32(res);
13212   FLAG_Z = res;
13213   FLAG_V = VFLAG_CLEAR;
13214   FLAG_C = CFLAG_CLEAR;
13215 }
13216 
13217 
m68k_op_move_32_d_aw(void)13218 static void m68k_op_move_32_d_aw(void)
13219 {
13220   uint res = OPER_AW_32();
13221   uint* r_dst = &DX;
13222 
13223   *r_dst = res;
13224 
13225   FLAG_N = NFLAG_32(res);
13226   FLAG_Z = res;
13227   FLAG_V = VFLAG_CLEAR;
13228   FLAG_C = CFLAG_CLEAR;
13229 }
13230 
13231 
m68k_op_move_32_d_al(void)13232 static void m68k_op_move_32_d_al(void)
13233 {
13234   uint res = OPER_AL_32();
13235   uint* r_dst = &DX;
13236 
13237   *r_dst = res;
13238 
13239   FLAG_N = NFLAG_32(res);
13240   FLAG_Z = res;
13241   FLAG_V = VFLAG_CLEAR;
13242   FLAG_C = CFLAG_CLEAR;
13243 }
13244 
13245 
m68k_op_move_32_d_pcdi(void)13246 static void m68k_op_move_32_d_pcdi(void)
13247 {
13248   uint res = OPER_PCDI_32();
13249   uint* r_dst = &DX;
13250 
13251   *r_dst = res;
13252 
13253   FLAG_N = NFLAG_32(res);
13254   FLAG_Z = res;
13255   FLAG_V = VFLAG_CLEAR;
13256   FLAG_C = CFLAG_CLEAR;
13257 }
13258 
13259 
m68k_op_move_32_d_pcix(void)13260 static void m68k_op_move_32_d_pcix(void)
13261 {
13262   uint res = OPER_PCIX_32();
13263   uint* r_dst = &DX;
13264 
13265   *r_dst = res;
13266 
13267   FLAG_N = NFLAG_32(res);
13268   FLAG_Z = res;
13269   FLAG_V = VFLAG_CLEAR;
13270   FLAG_C = CFLAG_CLEAR;
13271 }
13272 
13273 
m68k_op_move_32_d_i(void)13274 static void m68k_op_move_32_d_i(void)
13275 {
13276   uint res = OPER_I_32();
13277   uint* r_dst = &DX;
13278 
13279   *r_dst = res;
13280 
13281   FLAG_N = NFLAG_32(res);
13282   FLAG_Z = res;
13283   FLAG_V = VFLAG_CLEAR;
13284   FLAG_C = CFLAG_CLEAR;
13285 }
13286 
13287 
m68k_op_move_32_ai_d(void)13288 static void m68k_op_move_32_ai_d(void)
13289 {
13290   uint res = DY;
13291   uint ea = EA_AX_AI_32();
13292 
13293   FLAG_N = NFLAG_32(res);
13294   FLAG_Z = res;
13295   FLAG_V = VFLAG_CLEAR;
13296   FLAG_C = CFLAG_CLEAR;
13297 
13298   m68ki_write_32(ea, res);
13299 }
13300 
13301 
m68k_op_move_32_ai_a(void)13302 static void m68k_op_move_32_ai_a(void)
13303 {
13304   uint res = AY;
13305   uint ea = EA_AX_AI_32();
13306 
13307   FLAG_N = NFLAG_32(res);
13308   FLAG_Z = res;
13309   FLAG_V = VFLAG_CLEAR;
13310   FLAG_C = CFLAG_CLEAR;
13311 
13312   m68ki_write_32(ea, res);
13313 }
13314 
13315 
m68k_op_move_32_ai_ai(void)13316 static void m68k_op_move_32_ai_ai(void)
13317 {
13318   uint res = OPER_AY_AI_32();
13319   uint ea = EA_AX_AI_32();
13320 
13321   FLAG_N = NFLAG_32(res);
13322   FLAG_Z = res;
13323   FLAG_V = VFLAG_CLEAR;
13324   FLAG_C = CFLAG_CLEAR;
13325 
13326   m68ki_write_32(ea, res);
13327 }
13328 
13329 
m68k_op_move_32_ai_pi(void)13330 static void m68k_op_move_32_ai_pi(void)
13331 {
13332   uint res = OPER_AY_PI_32();
13333   uint ea = EA_AX_AI_32();
13334 
13335   FLAG_N = NFLAG_32(res);
13336   FLAG_Z = res;
13337   FLAG_V = VFLAG_CLEAR;
13338   FLAG_C = CFLAG_CLEAR;
13339 
13340   m68ki_write_32(ea, res);
13341 }
13342 
13343 
m68k_op_move_32_ai_pd(void)13344 static void m68k_op_move_32_ai_pd(void)
13345 {
13346   uint res = OPER_AY_PD_32();
13347   uint ea = EA_AX_AI_32();
13348 
13349   FLAG_N = NFLAG_32(res);
13350   FLAG_Z = res;
13351   FLAG_V = VFLAG_CLEAR;
13352   FLAG_C = CFLAG_CLEAR;
13353 
13354   m68ki_write_32(ea, res);
13355 }
13356 
13357 
m68k_op_move_32_ai_di(void)13358 static void m68k_op_move_32_ai_di(void)
13359 {
13360   uint res = OPER_AY_DI_32();
13361   uint ea = EA_AX_AI_32();
13362 
13363   FLAG_N = NFLAG_32(res);
13364   FLAG_Z = res;
13365   FLAG_V = VFLAG_CLEAR;
13366   FLAG_C = CFLAG_CLEAR;
13367 
13368   m68ki_write_32(ea, res);
13369 }
13370 
13371 
m68k_op_move_32_ai_ix(void)13372 static void m68k_op_move_32_ai_ix(void)
13373 {
13374   uint res = OPER_AY_IX_32();
13375   uint ea = EA_AX_AI_32();
13376 
13377   FLAG_N = NFLAG_32(res);
13378   FLAG_Z = res;
13379   FLAG_V = VFLAG_CLEAR;
13380   FLAG_C = CFLAG_CLEAR;
13381 
13382   m68ki_write_32(ea, res);
13383 }
13384 
13385 
m68k_op_move_32_ai_aw(void)13386 static void m68k_op_move_32_ai_aw(void)
13387 {
13388   uint res = OPER_AW_32();
13389   uint ea = EA_AX_AI_32();
13390 
13391   FLAG_N = NFLAG_32(res);
13392   FLAG_Z = res;
13393   FLAG_V = VFLAG_CLEAR;
13394   FLAG_C = CFLAG_CLEAR;
13395 
13396   m68ki_write_32(ea, res);
13397 }
13398 
13399 
m68k_op_move_32_ai_al(void)13400 static void m68k_op_move_32_ai_al(void)
13401 {
13402   uint res = OPER_AL_32();
13403   uint ea = EA_AX_AI_32();
13404 
13405   FLAG_N = NFLAG_32(res);
13406   FLAG_Z = res;
13407   FLAG_V = VFLAG_CLEAR;
13408   FLAG_C = CFLAG_CLEAR;
13409 
13410   m68ki_write_32(ea, res);
13411 }
13412 
13413 
m68k_op_move_32_ai_pcdi(void)13414 static void m68k_op_move_32_ai_pcdi(void)
13415 {
13416   uint res = OPER_PCDI_32();
13417   uint ea = EA_AX_AI_32();
13418 
13419   FLAG_N = NFLAG_32(res);
13420   FLAG_Z = res;
13421   FLAG_V = VFLAG_CLEAR;
13422   FLAG_C = CFLAG_CLEAR;
13423 
13424   m68ki_write_32(ea, res);
13425 }
13426 
13427 
m68k_op_move_32_ai_pcix(void)13428 static void m68k_op_move_32_ai_pcix(void)
13429 {
13430   uint res = OPER_PCIX_32();
13431   uint ea = EA_AX_AI_32();
13432 
13433   FLAG_N = NFLAG_32(res);
13434   FLAG_Z = res;
13435   FLAG_V = VFLAG_CLEAR;
13436   FLAG_C = CFLAG_CLEAR;
13437 
13438   m68ki_write_32(ea, res);
13439 }
13440 
13441 
m68k_op_move_32_ai_i(void)13442 static void m68k_op_move_32_ai_i(void)
13443 {
13444   uint res = OPER_I_32();
13445   uint ea = EA_AX_AI_32();
13446 
13447   FLAG_N = NFLAG_32(res);
13448   FLAG_Z = res;
13449   FLAG_V = VFLAG_CLEAR;
13450   FLAG_C = CFLAG_CLEAR;
13451 
13452   m68ki_write_32(ea, res);
13453 }
13454 
13455 
m68k_op_move_32_pi_d(void)13456 static void m68k_op_move_32_pi_d(void)
13457 {
13458   uint res = DY;
13459   uint ea = EA_AX_PI_32();
13460 
13461   FLAG_N = NFLAG_32(res);
13462   FLAG_Z = res;
13463   FLAG_V = VFLAG_CLEAR;
13464   FLAG_C = CFLAG_CLEAR;
13465 
13466   m68ki_write_32(ea, res);
13467 }
13468 
13469 
m68k_op_move_32_pi_a(void)13470 static void m68k_op_move_32_pi_a(void)
13471 {
13472   uint res = AY;
13473   uint ea = EA_AX_PI_32();
13474 
13475   FLAG_N = NFLAG_32(res);
13476   FLAG_Z = res;
13477   FLAG_V = VFLAG_CLEAR;
13478   FLAG_C = CFLAG_CLEAR;
13479 
13480   m68ki_write_32(ea, res);
13481 }
13482 
13483 
m68k_op_move_32_pi_ai(void)13484 static void m68k_op_move_32_pi_ai(void)
13485 {
13486   uint res = OPER_AY_AI_32();
13487   uint ea = EA_AX_PI_32();
13488 
13489   FLAG_N = NFLAG_32(res);
13490   FLAG_Z = res;
13491   FLAG_V = VFLAG_CLEAR;
13492   FLAG_C = CFLAG_CLEAR;
13493 
13494   m68ki_write_32(ea, res);
13495 }
13496 
13497 
m68k_op_move_32_pi_pi(void)13498 static void m68k_op_move_32_pi_pi(void)
13499 {
13500   uint res = OPER_AY_PI_32();
13501   uint ea = EA_AX_PI_32();
13502 
13503   FLAG_N = NFLAG_32(res);
13504   FLAG_Z = res;
13505   FLAG_V = VFLAG_CLEAR;
13506   FLAG_C = CFLAG_CLEAR;
13507 
13508   m68ki_write_32(ea, res);
13509 }
13510 
13511 
m68k_op_move_32_pi_pd(void)13512 static void m68k_op_move_32_pi_pd(void)
13513 {
13514   uint res = OPER_AY_PD_32();
13515   uint ea = EA_AX_PI_32();
13516 
13517   FLAG_N = NFLAG_32(res);
13518   FLAG_Z = res;
13519   FLAG_V = VFLAG_CLEAR;
13520   FLAG_C = CFLAG_CLEAR;
13521 
13522   m68ki_write_32(ea, res);
13523 }
13524 
13525 
m68k_op_move_32_pi_di(void)13526 static void m68k_op_move_32_pi_di(void)
13527 {
13528   uint res = OPER_AY_DI_32();
13529   uint ea = EA_AX_PI_32();
13530 
13531   FLAG_N = NFLAG_32(res);
13532   FLAG_Z = res;
13533   FLAG_V = VFLAG_CLEAR;
13534   FLAG_C = CFLAG_CLEAR;
13535 
13536   m68ki_write_32(ea, res);
13537 }
13538 
13539 
m68k_op_move_32_pi_ix(void)13540 static void m68k_op_move_32_pi_ix(void)
13541 {
13542   uint res = OPER_AY_IX_32();
13543   uint ea = EA_AX_PI_32();
13544 
13545   FLAG_N = NFLAG_32(res);
13546   FLAG_Z = res;
13547   FLAG_V = VFLAG_CLEAR;
13548   FLAG_C = CFLAG_CLEAR;
13549 
13550   m68ki_write_32(ea, res);
13551 }
13552 
13553 
m68k_op_move_32_pi_aw(void)13554 static void m68k_op_move_32_pi_aw(void)
13555 {
13556   uint res = OPER_AW_32();
13557   uint ea = EA_AX_PI_32();
13558 
13559   FLAG_N = NFLAG_32(res);
13560   FLAG_Z = res;
13561   FLAG_V = VFLAG_CLEAR;
13562   FLAG_C = CFLAG_CLEAR;
13563 
13564   m68ki_write_32(ea, res);
13565 }
13566 
13567 
m68k_op_move_32_pi_al(void)13568 static void m68k_op_move_32_pi_al(void)
13569 {
13570   uint res = OPER_AL_32();
13571   uint ea = EA_AX_PI_32();
13572 
13573   FLAG_N = NFLAG_32(res);
13574   FLAG_Z = res;
13575   FLAG_V = VFLAG_CLEAR;
13576   FLAG_C = CFLAG_CLEAR;
13577 
13578   m68ki_write_32(ea, res);
13579 }
13580 
13581 
m68k_op_move_32_pi_pcdi(void)13582 static void m68k_op_move_32_pi_pcdi(void)
13583 {
13584   uint res = OPER_PCDI_32();
13585   uint ea = EA_AX_PI_32();
13586 
13587   FLAG_N = NFLAG_32(res);
13588   FLAG_Z = res;
13589   FLAG_V = VFLAG_CLEAR;
13590   FLAG_C = CFLAG_CLEAR;
13591 
13592   m68ki_write_32(ea, res);
13593 }
13594 
13595 
m68k_op_move_32_pi_pcix(void)13596 static void m68k_op_move_32_pi_pcix(void)
13597 {
13598   uint res = OPER_PCIX_32();
13599   uint ea = EA_AX_PI_32();
13600 
13601   FLAG_N = NFLAG_32(res);
13602   FLAG_Z = res;
13603   FLAG_V = VFLAG_CLEAR;
13604   FLAG_C = CFLAG_CLEAR;
13605 
13606   m68ki_write_32(ea, res);
13607 }
13608 
13609 
m68k_op_move_32_pi_i(void)13610 static void m68k_op_move_32_pi_i(void)
13611 {
13612   uint res = OPER_I_32();
13613   uint ea = EA_AX_PI_32();
13614 
13615   FLAG_N = NFLAG_32(res);
13616   FLAG_Z = res;
13617   FLAG_V = VFLAG_CLEAR;
13618   FLAG_C = CFLAG_CLEAR;
13619 
13620   m68ki_write_32(ea, res);
13621 }
13622 
13623 
m68k_op_move_32_pd_d(void)13624 static void m68k_op_move_32_pd_d(void)
13625 {
13626   uint res = DY;
13627   uint ea = EA_AX_PD_32();
13628 
13629   FLAG_N = NFLAG_32(res);
13630   FLAG_Z = res;
13631   FLAG_V = VFLAG_CLEAR;
13632   FLAG_C = CFLAG_CLEAR;
13633 
13634   m68ki_write_16(ea+2, res & 0xFFFF );
13635   m68ki_write_16(ea, (res >> 16) & 0xFFFF );
13636 }
13637 
13638 
m68k_op_move_32_pd_a(void)13639 static void m68k_op_move_32_pd_a(void)
13640 {
13641   uint res = AY;
13642   uint ea = EA_AX_PD_32();
13643 
13644   FLAG_N = NFLAG_32(res);
13645   FLAG_Z = res;
13646   FLAG_V = VFLAG_CLEAR;
13647   FLAG_C = CFLAG_CLEAR;
13648 
13649   m68ki_write_16(ea+2, res & 0xFFFF );
13650   m68ki_write_16(ea, (res >> 16) & 0xFFFF );
13651 }
13652 
13653 
m68k_op_move_32_pd_ai(void)13654 static void m68k_op_move_32_pd_ai(void)
13655 {
13656   uint res = OPER_AY_AI_32();
13657   uint ea = EA_AX_PD_32();
13658 
13659   FLAG_N = NFLAG_32(res);
13660   FLAG_Z = res;
13661   FLAG_V = VFLAG_CLEAR;
13662   FLAG_C = CFLAG_CLEAR;
13663 
13664   m68ki_write_16(ea+2, res & 0xFFFF );
13665   m68ki_write_16(ea, (res >> 16) & 0xFFFF );
13666 }
13667 
13668 
m68k_op_move_32_pd_pi(void)13669 static void m68k_op_move_32_pd_pi(void)
13670 {
13671   uint res = OPER_AY_PI_32();
13672   uint ea = EA_AX_PD_32();
13673 
13674   FLAG_N = NFLAG_32(res);
13675   FLAG_Z = res;
13676   FLAG_V = VFLAG_CLEAR;
13677   FLAG_C = CFLAG_CLEAR;
13678 
13679   m68ki_write_16(ea+2, res & 0xFFFF );
13680   m68ki_write_16(ea, (res >> 16) & 0xFFFF );
13681 }
13682 
13683 
m68k_op_move_32_pd_pd(void)13684 static void m68k_op_move_32_pd_pd(void)
13685 {
13686   uint res = OPER_AY_PD_32();
13687   uint ea = EA_AX_PD_32();
13688 
13689   FLAG_N = NFLAG_32(res);
13690   FLAG_Z = res;
13691   FLAG_V = VFLAG_CLEAR;
13692   FLAG_C = CFLAG_CLEAR;
13693 
13694   m68ki_write_16(ea+2, res & 0xFFFF );
13695   m68ki_write_16(ea, (res >> 16) & 0xFFFF );
13696 }
13697 
13698 
m68k_op_move_32_pd_di(void)13699 static void m68k_op_move_32_pd_di(void)
13700 {
13701   uint res = OPER_AY_DI_32();
13702   uint ea = EA_AX_PD_32();
13703 
13704   FLAG_N = NFLAG_32(res);
13705   FLAG_Z = res;
13706   FLAG_V = VFLAG_CLEAR;
13707   FLAG_C = CFLAG_CLEAR;
13708 
13709   m68ki_write_16(ea+2, res & 0xFFFF );
13710   m68ki_write_16(ea, (res >> 16) & 0xFFFF );
13711 }
13712 
13713 
m68k_op_move_32_pd_ix(void)13714 static void m68k_op_move_32_pd_ix(void)
13715 {
13716   uint res = OPER_AY_IX_32();
13717   uint ea = EA_AX_PD_32();
13718 
13719   FLAG_N = NFLAG_32(res);
13720   FLAG_Z = res;
13721   FLAG_V = VFLAG_CLEAR;
13722   FLAG_C = CFLAG_CLEAR;
13723 
13724   m68ki_write_16(ea+2, res & 0xFFFF );
13725   m68ki_write_16(ea, (res >> 16) & 0xFFFF );
13726 }
13727 
13728 
m68k_op_move_32_pd_aw(void)13729 static void m68k_op_move_32_pd_aw(void)
13730 {
13731   uint res = OPER_AW_32();
13732   uint ea = EA_AX_PD_32();
13733 
13734   FLAG_N = NFLAG_32(res);
13735   FLAG_Z = res;
13736   FLAG_V = VFLAG_CLEAR;
13737   FLAG_C = CFLAG_CLEAR;
13738 
13739   m68ki_write_16(ea+2, res & 0xFFFF );
13740   m68ki_write_16(ea, (res >> 16) & 0xFFFF );
13741 }
13742 
13743 
m68k_op_move_32_pd_al(void)13744 static void m68k_op_move_32_pd_al(void)
13745 {
13746   uint res = OPER_AL_32();
13747   uint ea = EA_AX_PD_32();
13748 
13749   FLAG_N = NFLAG_32(res);
13750   FLAG_Z = res;
13751   FLAG_V = VFLAG_CLEAR;
13752   FLAG_C = CFLAG_CLEAR;
13753 
13754   m68ki_write_16(ea+2, res & 0xFFFF );
13755   m68ki_write_16(ea, (res >> 16) & 0xFFFF );
13756 }
13757 
13758 
m68k_op_move_32_pd_pcdi(void)13759 static void m68k_op_move_32_pd_pcdi(void)
13760 {
13761   uint res = OPER_PCDI_32();
13762   uint ea = EA_AX_PD_32();
13763 
13764   FLAG_N = NFLAG_32(res);
13765   FLAG_Z = res;
13766   FLAG_V = VFLAG_CLEAR;
13767   FLAG_C = CFLAG_CLEAR;
13768 
13769   m68ki_write_16(ea+2, res & 0xFFFF );
13770   m68ki_write_16(ea, (res >> 16) & 0xFFFF );
13771 }
13772 
13773 
m68k_op_move_32_pd_pcix(void)13774 static void m68k_op_move_32_pd_pcix(void)
13775 {
13776   uint res = OPER_PCIX_32();
13777   uint ea = EA_AX_PD_32();
13778 
13779   FLAG_N = NFLAG_32(res);
13780   FLAG_Z = res;
13781   FLAG_V = VFLAG_CLEAR;
13782   FLAG_C = CFLAG_CLEAR;
13783 
13784   m68ki_write_16(ea+2, res & 0xFFFF );
13785   m68ki_write_16(ea, (res >> 16) & 0xFFFF );
13786 }
13787 
13788 
m68k_op_move_32_pd_i(void)13789 static void m68k_op_move_32_pd_i(void)
13790 {
13791   uint res = OPER_I_32();
13792   uint ea = EA_AX_PD_32();
13793 
13794   FLAG_N = NFLAG_32(res);
13795   FLAG_Z = res;
13796   FLAG_V = VFLAG_CLEAR;
13797   FLAG_C = CFLAG_CLEAR;
13798 
13799   m68ki_write_16(ea+2, res & 0xFFFF );
13800   m68ki_write_16(ea, (res >> 16) & 0xFFFF );
13801 }
13802 
13803 
m68k_op_move_32_di_d(void)13804 static void m68k_op_move_32_di_d(void)
13805 {
13806   uint res = DY;
13807   uint ea = EA_AX_DI_32();
13808 
13809   FLAG_N = NFLAG_32(res);
13810   FLAG_Z = res;
13811   FLAG_V = VFLAG_CLEAR;
13812   FLAG_C = CFLAG_CLEAR;
13813 
13814   m68ki_write_32(ea, res);
13815 }
13816 
13817 
m68k_op_move_32_di_a(void)13818 static void m68k_op_move_32_di_a(void)
13819 {
13820   uint res = AY;
13821   uint ea = EA_AX_DI_32();
13822 
13823   FLAG_N = NFLAG_32(res);
13824   FLAG_Z = res;
13825   FLAG_V = VFLAG_CLEAR;
13826   FLAG_C = CFLAG_CLEAR;
13827 
13828   m68ki_write_32(ea, res);
13829 }
13830 
13831 
m68k_op_move_32_di_ai(void)13832 static void m68k_op_move_32_di_ai(void)
13833 {
13834   uint res = OPER_AY_AI_32();
13835   uint ea = EA_AX_DI_32();
13836 
13837   FLAG_N = NFLAG_32(res);
13838   FLAG_Z = res;
13839   FLAG_V = VFLAG_CLEAR;
13840   FLAG_C = CFLAG_CLEAR;
13841 
13842   m68ki_write_32(ea, res);
13843 }
13844 
13845 
m68k_op_move_32_di_pi(void)13846 static void m68k_op_move_32_di_pi(void)
13847 {
13848   uint res = OPER_AY_PI_32();
13849   uint ea = EA_AX_DI_32();
13850 
13851   FLAG_N = NFLAG_32(res);
13852   FLAG_Z = res;
13853   FLAG_V = VFLAG_CLEAR;
13854   FLAG_C = CFLAG_CLEAR;
13855 
13856   m68ki_write_32(ea, res);
13857 }
13858 
13859 
m68k_op_move_32_di_pd(void)13860 static void m68k_op_move_32_di_pd(void)
13861 {
13862   uint res = OPER_AY_PD_32();
13863   uint ea = EA_AX_DI_32();
13864 
13865   FLAG_N = NFLAG_32(res);
13866   FLAG_Z = res;
13867   FLAG_V = VFLAG_CLEAR;
13868   FLAG_C = CFLAG_CLEAR;
13869 
13870   m68ki_write_32(ea, res);
13871 }
13872 
13873 
m68k_op_move_32_di_di(void)13874 static void m68k_op_move_32_di_di(void)
13875 {
13876   uint res = OPER_AY_DI_32();
13877   uint ea = EA_AX_DI_32();
13878 
13879   FLAG_N = NFLAG_32(res);
13880   FLAG_Z = res;
13881   FLAG_V = VFLAG_CLEAR;
13882   FLAG_C = CFLAG_CLEAR;
13883 
13884   m68ki_write_32(ea, res);
13885 }
13886 
13887 
m68k_op_move_32_di_ix(void)13888 static void m68k_op_move_32_di_ix(void)
13889 {
13890   uint res = OPER_AY_IX_32();
13891   uint ea = EA_AX_DI_32();
13892 
13893   FLAG_N = NFLAG_32(res);
13894   FLAG_Z = res;
13895   FLAG_V = VFLAG_CLEAR;
13896   FLAG_C = CFLAG_CLEAR;
13897 
13898   m68ki_write_32(ea, res);
13899 }
13900 
13901 
m68k_op_move_32_di_aw(void)13902 static void m68k_op_move_32_di_aw(void)
13903 {
13904   uint res = OPER_AW_32();
13905   uint ea = EA_AX_DI_32();
13906 
13907   FLAG_N = NFLAG_32(res);
13908   FLAG_Z = res;
13909   FLAG_V = VFLAG_CLEAR;
13910   FLAG_C = CFLAG_CLEAR;
13911 
13912   m68ki_write_32(ea, res);
13913 }
13914 
13915 
m68k_op_move_32_di_al(void)13916 static void m68k_op_move_32_di_al(void)
13917 {
13918   uint res = OPER_AL_32();
13919   uint ea = EA_AX_DI_32();
13920 
13921   FLAG_N = NFLAG_32(res);
13922   FLAG_Z = res;
13923   FLAG_V = VFLAG_CLEAR;
13924   FLAG_C = CFLAG_CLEAR;
13925 
13926   m68ki_write_32(ea, res);
13927 }
13928 
13929 
m68k_op_move_32_di_pcdi(void)13930 static void m68k_op_move_32_di_pcdi(void)
13931 {
13932   uint res = OPER_PCDI_32();
13933   uint ea = EA_AX_DI_32();
13934 
13935   FLAG_N = NFLAG_32(res);
13936   FLAG_Z = res;
13937   FLAG_V = VFLAG_CLEAR;
13938   FLAG_C = CFLAG_CLEAR;
13939 
13940   m68ki_write_32(ea, res);
13941 }
13942 
13943 
m68k_op_move_32_di_pcix(void)13944 static void m68k_op_move_32_di_pcix(void)
13945 {
13946   uint res = OPER_PCIX_32();
13947   uint ea = EA_AX_DI_32();
13948 
13949   FLAG_N = NFLAG_32(res);
13950   FLAG_Z = res;
13951   FLAG_V = VFLAG_CLEAR;
13952   FLAG_C = CFLAG_CLEAR;
13953 
13954   m68ki_write_32(ea, res);
13955 }
13956 
13957 
m68k_op_move_32_di_i(void)13958 static void m68k_op_move_32_di_i(void)
13959 {
13960   uint res = OPER_I_32();
13961   uint ea = EA_AX_DI_32();
13962 
13963   FLAG_N = NFLAG_32(res);
13964   FLAG_Z = res;
13965   FLAG_V = VFLAG_CLEAR;
13966   FLAG_C = CFLAG_CLEAR;
13967 
13968   m68ki_write_32(ea, res);
13969 }
13970 
13971 
m68k_op_move_32_ix_d(void)13972 static void m68k_op_move_32_ix_d(void)
13973 {
13974   uint res = DY;
13975   uint ea = EA_AX_IX_32();
13976 
13977   FLAG_N = NFLAG_32(res);
13978   FLAG_Z = res;
13979   FLAG_V = VFLAG_CLEAR;
13980   FLAG_C = CFLAG_CLEAR;
13981 
13982   m68ki_write_32(ea, res);
13983 }
13984 
13985 
m68k_op_move_32_ix_a(void)13986 static void m68k_op_move_32_ix_a(void)
13987 {
13988   uint res = AY;
13989   uint ea = EA_AX_IX_32();
13990 
13991   FLAG_N = NFLAG_32(res);
13992   FLAG_Z = res;
13993   FLAG_V = VFLAG_CLEAR;
13994   FLAG_C = CFLAG_CLEAR;
13995 
13996   m68ki_write_32(ea, res);
13997 }
13998 
13999 
m68k_op_move_32_ix_ai(void)14000 static void m68k_op_move_32_ix_ai(void)
14001 {
14002   uint res = OPER_AY_AI_32();
14003   uint ea = EA_AX_IX_32();
14004 
14005   FLAG_N = NFLAG_32(res);
14006   FLAG_Z = res;
14007   FLAG_V = VFLAG_CLEAR;
14008   FLAG_C = CFLAG_CLEAR;
14009 
14010   m68ki_write_32(ea, res);
14011 }
14012 
14013 
m68k_op_move_32_ix_pi(void)14014 static void m68k_op_move_32_ix_pi(void)
14015 {
14016   uint res = OPER_AY_PI_32();
14017   uint ea = EA_AX_IX_32();
14018 
14019   FLAG_N = NFLAG_32(res);
14020   FLAG_Z = res;
14021   FLAG_V = VFLAG_CLEAR;
14022   FLAG_C = CFLAG_CLEAR;
14023 
14024   m68ki_write_32(ea, res);
14025 }
14026 
14027 
m68k_op_move_32_ix_pd(void)14028 static void m68k_op_move_32_ix_pd(void)
14029 {
14030   uint res = OPER_AY_PD_32();
14031   uint ea = EA_AX_IX_32();
14032 
14033   FLAG_N = NFLAG_32(res);
14034   FLAG_Z = res;
14035   FLAG_V = VFLAG_CLEAR;
14036   FLAG_C = CFLAG_CLEAR;
14037 
14038   m68ki_write_32(ea, res);
14039 }
14040 
14041 
m68k_op_move_32_ix_di(void)14042 static void m68k_op_move_32_ix_di(void)
14043 {
14044   uint res = OPER_AY_DI_32();
14045   uint ea = EA_AX_IX_32();
14046 
14047   FLAG_N = NFLAG_32(res);
14048   FLAG_Z = res;
14049   FLAG_V = VFLAG_CLEAR;
14050   FLAG_C = CFLAG_CLEAR;
14051 
14052   m68ki_write_32(ea, res);
14053 }
14054 
14055 
m68k_op_move_32_ix_ix(void)14056 static void m68k_op_move_32_ix_ix(void)
14057 {
14058   uint res = OPER_AY_IX_32();
14059   uint ea = EA_AX_IX_32();
14060 
14061   FLAG_N = NFLAG_32(res);
14062   FLAG_Z = res;
14063   FLAG_V = VFLAG_CLEAR;
14064   FLAG_C = CFLAG_CLEAR;
14065 
14066   m68ki_write_32(ea, res);
14067 }
14068 
14069 
m68k_op_move_32_ix_aw(void)14070 static void m68k_op_move_32_ix_aw(void)
14071 {
14072   uint res = OPER_AW_32();
14073   uint ea = EA_AX_IX_32();
14074 
14075   FLAG_N = NFLAG_32(res);
14076   FLAG_Z = res;
14077   FLAG_V = VFLAG_CLEAR;
14078   FLAG_C = CFLAG_CLEAR;
14079 
14080   m68ki_write_32(ea, res);
14081 }
14082 
14083 
m68k_op_move_32_ix_al(void)14084 static void m68k_op_move_32_ix_al(void)
14085 {
14086   uint res = OPER_AL_32();
14087   uint ea = EA_AX_IX_32();
14088 
14089   FLAG_N = NFLAG_32(res);
14090   FLAG_Z = res;
14091   FLAG_V = VFLAG_CLEAR;
14092   FLAG_C = CFLAG_CLEAR;
14093 
14094   m68ki_write_32(ea, res);
14095 }
14096 
14097 
m68k_op_move_32_ix_pcdi(void)14098 static void m68k_op_move_32_ix_pcdi(void)
14099 {
14100   uint res = OPER_PCDI_32();
14101   uint ea = EA_AX_IX_32();
14102 
14103   FLAG_N = NFLAG_32(res);
14104   FLAG_Z = res;
14105   FLAG_V = VFLAG_CLEAR;
14106   FLAG_C = CFLAG_CLEAR;
14107 
14108   m68ki_write_32(ea, res);
14109 }
14110 
14111 
m68k_op_move_32_ix_pcix(void)14112 static void m68k_op_move_32_ix_pcix(void)
14113 {
14114   uint res = OPER_PCIX_32();
14115   uint ea = EA_AX_IX_32();
14116 
14117   FLAG_N = NFLAG_32(res);
14118   FLAG_Z = res;
14119   FLAG_V = VFLAG_CLEAR;
14120   FLAG_C = CFLAG_CLEAR;
14121 
14122   m68ki_write_32(ea, res);
14123 }
14124 
14125 
m68k_op_move_32_ix_i(void)14126 static void m68k_op_move_32_ix_i(void)
14127 {
14128   uint res = OPER_I_32();
14129   uint ea = EA_AX_IX_32();
14130 
14131   FLAG_N = NFLAG_32(res);
14132   FLAG_Z = res;
14133   FLAG_V = VFLAG_CLEAR;
14134   FLAG_C = CFLAG_CLEAR;
14135 
14136   m68ki_write_32(ea, res);
14137 }
14138 
14139 
m68k_op_move_32_aw_d(void)14140 static void m68k_op_move_32_aw_d(void)
14141 {
14142   uint res = DY;
14143   uint ea = EA_AW_32();
14144 
14145   FLAG_N = NFLAG_32(res);
14146   FLAG_Z = res;
14147   FLAG_V = VFLAG_CLEAR;
14148   FLAG_C = CFLAG_CLEAR;
14149 
14150   m68ki_write_32(ea, res);
14151 }
14152 
14153 
m68k_op_move_32_aw_a(void)14154 static void m68k_op_move_32_aw_a(void)
14155 {
14156   uint res = AY;
14157   uint ea = EA_AW_32();
14158 
14159   FLAG_N = NFLAG_32(res);
14160   FLAG_Z = res;
14161   FLAG_V = VFLAG_CLEAR;
14162   FLAG_C = CFLAG_CLEAR;
14163 
14164   m68ki_write_32(ea, res);
14165 }
14166 
14167 
m68k_op_move_32_aw_ai(void)14168 static void m68k_op_move_32_aw_ai(void)
14169 {
14170   uint res = OPER_AY_AI_32();
14171   uint ea = EA_AW_32();
14172 
14173   FLAG_N = NFLAG_32(res);
14174   FLAG_Z = res;
14175   FLAG_V = VFLAG_CLEAR;
14176   FLAG_C = CFLAG_CLEAR;
14177 
14178   m68ki_write_32(ea, res);
14179 }
14180 
14181 
m68k_op_move_32_aw_pi(void)14182 static void m68k_op_move_32_aw_pi(void)
14183 {
14184   uint res = OPER_AY_PI_32();
14185   uint ea = EA_AW_32();
14186 
14187   FLAG_N = NFLAG_32(res);
14188   FLAG_Z = res;
14189   FLAG_V = VFLAG_CLEAR;
14190   FLAG_C = CFLAG_CLEAR;
14191 
14192   m68ki_write_32(ea, res);
14193 }
14194 
14195 
m68k_op_move_32_aw_pd(void)14196 static void m68k_op_move_32_aw_pd(void)
14197 {
14198   uint res = OPER_AY_PD_32();
14199   uint ea = EA_AW_32();
14200 
14201   FLAG_N = NFLAG_32(res);
14202   FLAG_Z = res;
14203   FLAG_V = VFLAG_CLEAR;
14204   FLAG_C = CFLAG_CLEAR;
14205 
14206   m68ki_write_32(ea, res);
14207 }
14208 
14209 
m68k_op_move_32_aw_di(void)14210 static void m68k_op_move_32_aw_di(void)
14211 {
14212   uint res = OPER_AY_DI_32();
14213   uint ea = EA_AW_32();
14214 
14215   FLAG_N = NFLAG_32(res);
14216   FLAG_Z = res;
14217   FLAG_V = VFLAG_CLEAR;
14218   FLAG_C = CFLAG_CLEAR;
14219 
14220   m68ki_write_32(ea, res);
14221 }
14222 
14223 
m68k_op_move_32_aw_ix(void)14224 static void m68k_op_move_32_aw_ix(void)
14225 {
14226   uint res = OPER_AY_IX_32();
14227   uint ea = EA_AW_32();
14228 
14229   FLAG_N = NFLAG_32(res);
14230   FLAG_Z = res;
14231   FLAG_V = VFLAG_CLEAR;
14232   FLAG_C = CFLAG_CLEAR;
14233 
14234   m68ki_write_32(ea, res);
14235 }
14236 
14237 
m68k_op_move_32_aw_aw(void)14238 static void m68k_op_move_32_aw_aw(void)
14239 {
14240   uint res = OPER_AW_32();
14241   uint ea = EA_AW_32();
14242 
14243   FLAG_N = NFLAG_32(res);
14244   FLAG_Z = res;
14245   FLAG_V = VFLAG_CLEAR;
14246   FLAG_C = CFLAG_CLEAR;
14247 
14248   m68ki_write_32(ea, res);
14249 }
14250 
14251 
m68k_op_move_32_aw_al(void)14252 static void m68k_op_move_32_aw_al(void)
14253 {
14254   uint res = OPER_AL_32();
14255   uint ea = EA_AW_32();
14256 
14257   FLAG_N = NFLAG_32(res);
14258   FLAG_Z = res;
14259   FLAG_V = VFLAG_CLEAR;
14260   FLAG_C = CFLAG_CLEAR;
14261 
14262   m68ki_write_32(ea, res);
14263 }
14264 
14265 
m68k_op_move_32_aw_pcdi(void)14266 static void m68k_op_move_32_aw_pcdi(void)
14267 {
14268   uint res = OPER_PCDI_32();
14269   uint ea = EA_AW_32();
14270 
14271   FLAG_N = NFLAG_32(res);
14272   FLAG_Z = res;
14273   FLAG_V = VFLAG_CLEAR;
14274   FLAG_C = CFLAG_CLEAR;
14275 
14276   m68ki_write_32(ea, res);
14277 }
14278 
14279 
m68k_op_move_32_aw_pcix(void)14280 static void m68k_op_move_32_aw_pcix(void)
14281 {
14282   uint res = OPER_PCIX_32();
14283   uint ea = EA_AW_32();
14284 
14285   FLAG_N = NFLAG_32(res);
14286   FLAG_Z = res;
14287   FLAG_V = VFLAG_CLEAR;
14288   FLAG_C = CFLAG_CLEAR;
14289 
14290   m68ki_write_32(ea, res);
14291 }
14292 
14293 
m68k_op_move_32_aw_i(void)14294 static void m68k_op_move_32_aw_i(void)
14295 {
14296   uint res = OPER_I_32();
14297   uint ea = EA_AW_32();
14298 
14299   FLAG_N = NFLAG_32(res);
14300   FLAG_Z = res;
14301   FLAG_V = VFLAG_CLEAR;
14302   FLAG_C = CFLAG_CLEAR;
14303 
14304   m68ki_write_32(ea, res);
14305 }
14306 
14307 
m68k_op_move_32_al_d(void)14308 static void m68k_op_move_32_al_d(void)
14309 {
14310   uint res = DY;
14311   uint ea = EA_AL_32();
14312 
14313   FLAG_N = NFLAG_32(res);
14314   FLAG_Z = res;
14315   FLAG_V = VFLAG_CLEAR;
14316   FLAG_C = CFLAG_CLEAR;
14317 
14318   m68ki_write_32(ea, res);
14319 }
14320 
14321 
m68k_op_move_32_al_a(void)14322 static void m68k_op_move_32_al_a(void)
14323 {
14324   uint res = AY;
14325   uint ea = EA_AL_32();
14326 
14327   FLAG_N = NFLAG_32(res);
14328   FLAG_Z = res;
14329   FLAG_V = VFLAG_CLEAR;
14330   FLAG_C = CFLAG_CLEAR;
14331 
14332   m68ki_write_32(ea, res);
14333 }
14334 
14335 
m68k_op_move_32_al_ai(void)14336 static void m68k_op_move_32_al_ai(void)
14337 {
14338   uint res = OPER_AY_AI_32();
14339   uint ea = EA_AL_32();
14340 
14341   FLAG_N = NFLAG_32(res);
14342   FLAG_Z = res;
14343   FLAG_V = VFLAG_CLEAR;
14344   FLAG_C = CFLAG_CLEAR;
14345 
14346   m68ki_write_32(ea, res);
14347 }
14348 
14349 
m68k_op_move_32_al_pi(void)14350 static void m68k_op_move_32_al_pi(void)
14351 {
14352   uint res = OPER_AY_PI_32();
14353   uint ea = EA_AL_32();
14354 
14355   FLAG_N = NFLAG_32(res);
14356   FLAG_Z = res;
14357   FLAG_V = VFLAG_CLEAR;
14358   FLAG_C = CFLAG_CLEAR;
14359 
14360   m68ki_write_32(ea, res);
14361 }
14362 
14363 
m68k_op_move_32_al_pd(void)14364 static void m68k_op_move_32_al_pd(void)
14365 {
14366   uint res = OPER_AY_PD_32();
14367   uint ea = EA_AL_32();
14368 
14369   FLAG_N = NFLAG_32(res);
14370   FLAG_Z = res;
14371   FLAG_V = VFLAG_CLEAR;
14372   FLAG_C = CFLAG_CLEAR;
14373 
14374   m68ki_write_32(ea, res);
14375 }
14376 
14377 
m68k_op_move_32_al_di(void)14378 static void m68k_op_move_32_al_di(void)
14379 {
14380   uint res = OPER_AY_DI_32();
14381   uint ea = EA_AL_32();
14382 
14383   FLAG_N = NFLAG_32(res);
14384   FLAG_Z = res;
14385   FLAG_V = VFLAG_CLEAR;
14386   FLAG_C = CFLAG_CLEAR;
14387 
14388   m68ki_write_32(ea, res);
14389 }
14390 
14391 
m68k_op_move_32_al_ix(void)14392 static void m68k_op_move_32_al_ix(void)
14393 {
14394   uint res = OPER_AY_IX_32();
14395   uint ea = EA_AL_32();
14396 
14397   FLAG_N = NFLAG_32(res);
14398   FLAG_Z = res;
14399   FLAG_V = VFLAG_CLEAR;
14400   FLAG_C = CFLAG_CLEAR;
14401 
14402   m68ki_write_32(ea, res);
14403 }
14404 
14405 
m68k_op_move_32_al_aw(void)14406 static void m68k_op_move_32_al_aw(void)
14407 {
14408   uint res = OPER_AW_32();
14409   uint ea = EA_AL_32();
14410 
14411   FLAG_N = NFLAG_32(res);
14412   FLAG_Z = res;
14413   FLAG_V = VFLAG_CLEAR;
14414   FLAG_C = CFLAG_CLEAR;
14415 
14416   m68ki_write_32(ea, res);
14417 }
14418 
14419 
m68k_op_move_32_al_al(void)14420 static void m68k_op_move_32_al_al(void)
14421 {
14422   uint res = OPER_AL_32();
14423   uint ea = EA_AL_32();
14424 
14425   FLAG_N = NFLAG_32(res);
14426   FLAG_Z = res;
14427   FLAG_V = VFLAG_CLEAR;
14428   FLAG_C = CFLAG_CLEAR;
14429 
14430   m68ki_write_32(ea, res);
14431 }
14432 
14433 
m68k_op_move_32_al_pcdi(void)14434 static void m68k_op_move_32_al_pcdi(void)
14435 {
14436   uint res = OPER_PCDI_32();
14437   uint ea = EA_AL_32();
14438 
14439   FLAG_N = NFLAG_32(res);
14440   FLAG_Z = res;
14441   FLAG_V = VFLAG_CLEAR;
14442   FLAG_C = CFLAG_CLEAR;
14443 
14444   m68ki_write_32(ea, res);
14445 }
14446 
14447 
m68k_op_move_32_al_pcix(void)14448 static void m68k_op_move_32_al_pcix(void)
14449 {
14450   uint res = OPER_PCIX_32();
14451   uint ea = EA_AL_32();
14452 
14453   FLAG_N = NFLAG_32(res);
14454   FLAG_Z = res;
14455   FLAG_V = VFLAG_CLEAR;
14456   FLAG_C = CFLAG_CLEAR;
14457 
14458   m68ki_write_32(ea, res);
14459 }
14460 
14461 
m68k_op_move_32_al_i(void)14462 static void m68k_op_move_32_al_i(void)
14463 {
14464   uint res = OPER_I_32();
14465   uint ea = EA_AL_32();
14466 
14467   FLAG_N = NFLAG_32(res);
14468   FLAG_Z = res;
14469   FLAG_V = VFLAG_CLEAR;
14470   FLAG_C = CFLAG_CLEAR;
14471 
14472   m68ki_write_32(ea, res);
14473 }
14474 
14475 
m68k_op_movea_16_d(void)14476 static void m68k_op_movea_16_d(void)
14477 {
14478   AX = MAKE_INT_16(DY);
14479 }
14480 
14481 
m68k_op_movea_16_a(void)14482 static void m68k_op_movea_16_a(void)
14483 {
14484   AX = MAKE_INT_16(AY);
14485 }
14486 
14487 
m68k_op_movea_16_ai(void)14488 static void m68k_op_movea_16_ai(void)
14489 {
14490   AX = MAKE_INT_16(OPER_AY_AI_16());
14491 }
14492 
14493 
m68k_op_movea_16_pi(void)14494 static void m68k_op_movea_16_pi(void)
14495 {
14496   AX = MAKE_INT_16(OPER_AY_PI_16());
14497 }
14498 
14499 
m68k_op_movea_16_pd(void)14500 static void m68k_op_movea_16_pd(void)
14501 {
14502   AX = MAKE_INT_16(OPER_AY_PD_16());
14503 }
14504 
14505 
m68k_op_movea_16_di(void)14506 static void m68k_op_movea_16_di(void)
14507 {
14508   AX = MAKE_INT_16(OPER_AY_DI_16());
14509 }
14510 
14511 
m68k_op_movea_16_ix(void)14512 static void m68k_op_movea_16_ix(void)
14513 {
14514   AX = MAKE_INT_16(OPER_AY_IX_16());
14515 }
14516 
14517 
m68k_op_movea_16_aw(void)14518 static void m68k_op_movea_16_aw(void)
14519 {
14520   AX = MAKE_INT_16(OPER_AW_16());
14521 }
14522 
14523 
m68k_op_movea_16_al(void)14524 static void m68k_op_movea_16_al(void)
14525 {
14526   AX = MAKE_INT_16(OPER_AL_16());
14527 }
14528 
14529 
m68k_op_movea_16_pcdi(void)14530 static void m68k_op_movea_16_pcdi(void)
14531 {
14532   AX = MAKE_INT_16(OPER_PCDI_16());
14533 }
14534 
14535 
m68k_op_movea_16_pcix(void)14536 static void m68k_op_movea_16_pcix(void)
14537 {
14538   AX = MAKE_INT_16(OPER_PCIX_16());
14539 }
14540 
14541 
m68k_op_movea_16_i(void)14542 static void m68k_op_movea_16_i(void)
14543 {
14544   AX = MAKE_INT_16(OPER_I_16());
14545 }
14546 
14547 
m68k_op_movea_32_d(void)14548 static void m68k_op_movea_32_d(void)
14549 {
14550   AX = DY;
14551 }
14552 
14553 
m68k_op_movea_32_a(void)14554 static void m68k_op_movea_32_a(void)
14555 {
14556   AX = AY;
14557 }
14558 
14559 
m68k_op_movea_32_ai(void)14560 static void m68k_op_movea_32_ai(void)
14561 {
14562   AX = OPER_AY_AI_32();
14563 }
14564 
14565 
m68k_op_movea_32_pi(void)14566 static void m68k_op_movea_32_pi(void)
14567 {
14568   AX = OPER_AY_PI_32();
14569 }
14570 
14571 
m68k_op_movea_32_pd(void)14572 static void m68k_op_movea_32_pd(void)
14573 {
14574   AX = OPER_AY_PD_32();
14575 }
14576 
14577 
m68k_op_movea_32_di(void)14578 static void m68k_op_movea_32_di(void)
14579 {
14580   AX = OPER_AY_DI_32();
14581 }
14582 
14583 
m68k_op_movea_32_ix(void)14584 static void m68k_op_movea_32_ix(void)
14585 {
14586   AX = OPER_AY_IX_32();
14587 }
14588 
14589 
m68k_op_movea_32_aw(void)14590 static void m68k_op_movea_32_aw(void)
14591 {
14592   AX = OPER_AW_32();
14593 }
14594 
14595 
m68k_op_movea_32_al(void)14596 static void m68k_op_movea_32_al(void)
14597 {
14598   AX = OPER_AL_32();
14599 }
14600 
14601 
m68k_op_movea_32_pcdi(void)14602 static void m68k_op_movea_32_pcdi(void)
14603 {
14604   AX = OPER_PCDI_32();
14605 }
14606 
14607 
m68k_op_movea_32_pcix(void)14608 static void m68k_op_movea_32_pcix(void)
14609 {
14610   AX = OPER_PCIX_32();
14611 }
14612 
14613 
m68k_op_movea_32_i(void)14614 static void m68k_op_movea_32_i(void)
14615 {
14616   AX = OPER_I_32();
14617 }
14618 
m68k_op_move_16_toc_d(void)14619 static void m68k_op_move_16_toc_d(void)
14620 {
14621   m68ki_set_ccr(DY);
14622 }
14623 
14624 
m68k_op_move_16_toc_ai(void)14625 static void m68k_op_move_16_toc_ai(void)
14626 {
14627   m68ki_set_ccr(OPER_AY_AI_16());
14628 }
14629 
14630 
m68k_op_move_16_toc_pi(void)14631 static void m68k_op_move_16_toc_pi(void)
14632 {
14633   m68ki_set_ccr(OPER_AY_PI_16());
14634 }
14635 
14636 
m68k_op_move_16_toc_pd(void)14637 static void m68k_op_move_16_toc_pd(void)
14638 {
14639   m68ki_set_ccr(OPER_AY_PD_16());
14640 }
14641 
14642 
m68k_op_move_16_toc_di(void)14643 static void m68k_op_move_16_toc_di(void)
14644 {
14645   m68ki_set_ccr(OPER_AY_DI_16());
14646 }
14647 
14648 
m68k_op_move_16_toc_ix(void)14649 static void m68k_op_move_16_toc_ix(void)
14650 {
14651   m68ki_set_ccr(OPER_AY_IX_16());
14652 }
14653 
14654 
m68k_op_move_16_toc_aw(void)14655 static void m68k_op_move_16_toc_aw(void)
14656 {
14657   m68ki_set_ccr(OPER_AW_16());
14658 }
14659 
14660 
m68k_op_move_16_toc_al(void)14661 static void m68k_op_move_16_toc_al(void)
14662 {
14663   m68ki_set_ccr(OPER_AL_16());
14664 }
14665 
14666 
m68k_op_move_16_toc_pcdi(void)14667 static void m68k_op_move_16_toc_pcdi(void)
14668 {
14669   m68ki_set_ccr(OPER_PCDI_16());
14670 }
14671 
14672 
m68k_op_move_16_toc_pcix(void)14673 static void m68k_op_move_16_toc_pcix(void)
14674 {
14675   m68ki_set_ccr(OPER_PCIX_16());
14676 }
14677 
14678 
m68k_op_move_16_toc_i(void)14679 static void m68k_op_move_16_toc_i(void)
14680 {
14681   m68ki_set_ccr(OPER_I_16());
14682 }
14683 
14684 
m68k_op_move_16_frs_d(void)14685 static void m68k_op_move_16_frs_d(void)
14686 {
14687   DY = MASK_OUT_BELOW_16(DY) | m68ki_get_sr();
14688 }
14689 
14690 
m68k_op_move_16_frs_ai(void)14691 static void m68k_op_move_16_frs_ai(void)
14692 {
14693   uint ea = EA_AY_AI_16();
14694   m68ki_write_16(ea, m68ki_get_sr());
14695 }
14696 
14697 
m68k_op_move_16_frs_pi(void)14698 static void m68k_op_move_16_frs_pi(void)
14699 {
14700   uint ea = EA_AY_PI_16();
14701   m68ki_write_16(ea, m68ki_get_sr());
14702 }
14703 
14704 
m68k_op_move_16_frs_pd(void)14705 static void m68k_op_move_16_frs_pd(void)
14706 {
14707   uint ea = EA_AY_PD_16();
14708   m68ki_write_16(ea, m68ki_get_sr());
14709 }
14710 
14711 
m68k_op_move_16_frs_di(void)14712 static void m68k_op_move_16_frs_di(void)
14713 {
14714   uint ea = EA_AY_DI_16();
14715   m68ki_write_16(ea, m68ki_get_sr());
14716 }
14717 
14718 
m68k_op_move_16_frs_ix(void)14719 static void m68k_op_move_16_frs_ix(void)
14720 {
14721   uint ea = EA_AY_IX_16();
14722   m68ki_write_16(ea, m68ki_get_sr());
14723 }
14724 
14725 
m68k_op_move_16_frs_aw(void)14726 static void m68k_op_move_16_frs_aw(void)
14727 {
14728   uint ea = EA_AW_16();
14729   m68ki_write_16(ea, m68ki_get_sr());
14730 }
14731 
14732 
m68k_op_move_16_frs_al(void)14733 static void m68k_op_move_16_frs_al(void)
14734 {
14735   uint ea = EA_AL_16();
14736   m68ki_write_16(ea, m68ki_get_sr());
14737 }
14738 
14739 
m68k_op_move_16_tos_d(void)14740 static void m68k_op_move_16_tos_d(void)
14741 {
14742   if(FLAG_S)
14743   {
14744     m68ki_set_sr(DY);
14745     return;
14746   }
14747   m68ki_exception_privilege_violation();
14748 }
14749 
14750 
m68k_op_move_16_tos_ai(void)14751 static void m68k_op_move_16_tos_ai(void)
14752 {
14753   if(FLAG_S)
14754   {
14755     uint new_sr = OPER_AY_AI_16();
14756     m68ki_set_sr(new_sr);
14757     return;
14758   }
14759   m68ki_exception_privilege_violation();
14760 }
14761 
14762 
m68k_op_move_16_tos_pi(void)14763 static void m68k_op_move_16_tos_pi(void)
14764 {
14765   if(FLAG_S)
14766   {
14767     uint new_sr = OPER_AY_PI_16();
14768     m68ki_set_sr(new_sr);
14769     return;
14770   }
14771   m68ki_exception_privilege_violation();
14772 }
14773 
14774 
m68k_op_move_16_tos_pd(void)14775 static void m68k_op_move_16_tos_pd(void)
14776 {
14777   if(FLAG_S)
14778   {
14779     uint new_sr = OPER_AY_PD_16();
14780     m68ki_set_sr(new_sr);
14781     return;
14782   }
14783   m68ki_exception_privilege_violation();
14784 }
14785 
14786 
m68k_op_move_16_tos_di(void)14787 static void m68k_op_move_16_tos_di(void)
14788 {
14789   if(FLAG_S)
14790   {
14791     uint new_sr = OPER_AY_DI_16();
14792     m68ki_set_sr(new_sr);
14793     return;
14794   }
14795   m68ki_exception_privilege_violation();
14796 }
14797 
14798 
m68k_op_move_16_tos_ix(void)14799 static void m68k_op_move_16_tos_ix(void)
14800 {
14801   if(FLAG_S)
14802   {
14803     uint new_sr = OPER_AY_IX_16();
14804     m68ki_set_sr(new_sr);
14805     return;
14806   }
14807   m68ki_exception_privilege_violation();
14808 }
14809 
14810 
m68k_op_move_16_tos_aw(void)14811 static void m68k_op_move_16_tos_aw(void)
14812 {
14813   if(FLAG_S)
14814   {
14815     uint new_sr = OPER_AW_16();
14816     m68ki_set_sr(new_sr);
14817     return;
14818   }
14819   m68ki_exception_privilege_violation();
14820 }
14821 
14822 
m68k_op_move_16_tos_al(void)14823 static void m68k_op_move_16_tos_al(void)
14824 {
14825   if(FLAG_S)
14826   {
14827     uint new_sr = OPER_AL_16();
14828     m68ki_set_sr(new_sr);
14829     return;
14830   }
14831   m68ki_exception_privilege_violation();
14832 }
14833 
14834 
m68k_op_move_16_tos_pcdi(void)14835 static void m68k_op_move_16_tos_pcdi(void)
14836 {
14837   if(FLAG_S)
14838   {
14839     uint new_sr = OPER_PCDI_16();
14840     m68ki_set_sr(new_sr);
14841     return;
14842   }
14843   m68ki_exception_privilege_violation();
14844 }
14845 
14846 
m68k_op_move_16_tos_pcix(void)14847 static void m68k_op_move_16_tos_pcix(void)
14848 {
14849   if(FLAG_S)
14850   {
14851     uint new_sr = OPER_PCIX_16();
14852     m68ki_set_sr(new_sr);
14853     return;
14854   }
14855   m68ki_exception_privilege_violation();
14856 }
14857 
14858 
m68k_op_move_16_tos_i(void)14859 static void m68k_op_move_16_tos_i(void)
14860 {
14861   if(FLAG_S)
14862   {
14863     uint new_sr = OPER_I_16();
14864     m68ki_set_sr(new_sr);
14865     return;
14866   }
14867   m68ki_exception_privilege_violation();
14868 }
14869 
14870 
m68k_op_move_32_fru(void)14871 static void m68k_op_move_32_fru(void)
14872 {
14873   if(FLAG_S)
14874   {
14875     AY = REG_USP;
14876     return;
14877   }
14878   m68ki_exception_privilege_violation();
14879 }
14880 
14881 
m68k_op_move_32_tou(void)14882 static void m68k_op_move_32_tou(void)
14883 {
14884   if(FLAG_S)
14885   {
14886     REG_USP = AY;
14887     return;
14888   }
14889   m68ki_exception_privilege_violation();
14890 }
14891 
14892 
m68k_op_movem_16_re_pd(void)14893 static void m68k_op_movem_16_re_pd(void)
14894 {
14895   uint i = 0;
14896   uint register_list = OPER_I_16();
14897   uint ea = AY;
14898   uint count = 0;
14899 
14900   for(; i < 16; i++)
14901     if(register_list & (1 << i))
14902     {
14903       ea -= 2;
14904       m68ki_write_16(ea, MASK_OUT_ABOVE_16(REG_DA[15-i]));
14905       count++;
14906     }
14907   AY = ea;
14908 
14909   USE_CYCLES(count * CYC_MOVEM_W);
14910 }
14911 
14912 
m68k_op_movem_16_re_ai(void)14913 static void m68k_op_movem_16_re_ai(void)
14914 {
14915   uint i = 0;
14916   uint register_list = OPER_I_16();
14917   uint ea = EA_AY_AI_16();
14918   uint count = 0;
14919 
14920   for(; i < 16; i++)
14921     if(register_list & (1 << i))
14922     {
14923       m68ki_write_16(ea, MASK_OUT_ABOVE_16(REG_DA[i]));
14924       ea += 2;
14925       count++;
14926     }
14927 
14928   USE_CYCLES(count * CYC_MOVEM_W);
14929 }
14930 
14931 
m68k_op_movem_16_re_di(void)14932 static void m68k_op_movem_16_re_di(void)
14933 {
14934   uint i = 0;
14935   uint register_list = OPER_I_16();
14936   uint ea = EA_AY_DI_16();
14937   uint count = 0;
14938 
14939   for(; i < 16; i++)
14940     if(register_list & (1 << i))
14941     {
14942       m68ki_write_16(ea, MASK_OUT_ABOVE_16(REG_DA[i]));
14943       ea += 2;
14944       count++;
14945     }
14946 
14947   USE_CYCLES(count * CYC_MOVEM_W);
14948 }
14949 
14950 
m68k_op_movem_16_re_ix(void)14951 static void m68k_op_movem_16_re_ix(void)
14952 {
14953   uint i = 0;
14954   uint register_list = OPER_I_16();
14955   uint ea = EA_AY_IX_16();
14956   uint count = 0;
14957 
14958   for(; i < 16; i++)
14959     if(register_list & (1 << i))
14960     {
14961       m68ki_write_16(ea, MASK_OUT_ABOVE_16(REG_DA[i]));
14962       ea += 2;
14963       count++;
14964     }
14965 
14966   USE_CYCLES(count * CYC_MOVEM_W);
14967 }
14968 
14969 
m68k_op_movem_16_re_aw(void)14970 static void m68k_op_movem_16_re_aw(void)
14971 {
14972   uint i = 0;
14973   uint register_list = OPER_I_16();
14974   uint ea = EA_AW_16();
14975   uint count = 0;
14976 
14977   for(; i < 16; i++)
14978     if(register_list & (1 << i))
14979     {
14980       m68ki_write_16(ea, MASK_OUT_ABOVE_16(REG_DA[i]));
14981       ea += 2;
14982       count++;
14983     }
14984 
14985   USE_CYCLES(count * CYC_MOVEM_W);
14986 }
14987 
14988 
m68k_op_movem_16_re_al(void)14989 static void m68k_op_movem_16_re_al(void)
14990 {
14991   uint i = 0;
14992   uint register_list = OPER_I_16();
14993   uint ea = EA_AL_16();
14994   uint count = 0;
14995 
14996   for(; i < 16; i++)
14997     if(register_list & (1 << i))
14998     {
14999       m68ki_write_16(ea, MASK_OUT_ABOVE_16(REG_DA[i]));
15000       ea += 2;
15001       count++;
15002     }
15003 
15004   USE_CYCLES(count * CYC_MOVEM_W);
15005 }
15006 
15007 
m68k_op_movem_32_re_pd(void)15008 static void m68k_op_movem_32_re_pd(void)
15009 {
15010   uint i = 0;
15011   uint register_list = OPER_I_16();
15012   uint ea = AY;
15013   uint count = 0;
15014 
15015   for(; i < 16; i++)
15016     if(register_list & (1 << i))
15017     {
15018       ea -= 4;
15019       m68ki_write_16(ea+2, REG_DA[15-i] & 0xFFFF );
15020       m68ki_write_16(ea, (REG_DA[15-i] >> 16) & 0xFFFF );
15021       count++;
15022     }
15023   AY = ea;
15024 
15025   USE_CYCLES(count * CYC_MOVEM_L);
15026 }
15027 
15028 
m68k_op_movem_32_re_ai(void)15029 static void m68k_op_movem_32_re_ai(void)
15030 {
15031   uint i = 0;
15032   uint register_list = OPER_I_16();
15033   uint ea = EA_AY_AI_32();
15034   uint count = 0;
15035 
15036   for(; i < 16; i++)
15037     if(register_list & (1 << i))
15038     {
15039       m68ki_write_32(ea, REG_DA[i]);
15040       ea += 4;
15041       count++;
15042     }
15043 
15044   USE_CYCLES(count * CYC_MOVEM_L);
15045 }
15046 
15047 
m68k_op_movem_32_re_di(void)15048 static void m68k_op_movem_32_re_di(void)
15049 {
15050   uint i = 0;
15051   uint register_list = OPER_I_16();
15052   uint ea = EA_AY_DI_32();
15053   uint count = 0;
15054 
15055   for(; i < 16; i++)
15056     if(register_list & (1 << i))
15057     {
15058       m68ki_write_32(ea, REG_DA[i]);
15059       ea += 4;
15060       count++;
15061     }
15062 
15063   USE_CYCLES(count * CYC_MOVEM_L);
15064 }
15065 
15066 
m68k_op_movem_32_re_ix(void)15067 static void m68k_op_movem_32_re_ix(void)
15068 {
15069   uint i = 0;
15070   uint register_list = OPER_I_16();
15071   uint ea = EA_AY_IX_32();
15072   uint count = 0;
15073 
15074   for(; i < 16; i++)
15075     if(register_list & (1 << i))
15076     {
15077       m68ki_write_32(ea, REG_DA[i]);
15078       ea += 4;
15079       count++;
15080     }
15081 
15082   USE_CYCLES(count * CYC_MOVEM_L);
15083 }
15084 
15085 
m68k_op_movem_32_re_aw(void)15086 static void m68k_op_movem_32_re_aw(void)
15087 {
15088   uint i = 0;
15089   uint register_list = OPER_I_16();
15090   uint ea = EA_AW_32();
15091   uint count = 0;
15092 
15093   for(; i < 16; i++)
15094     if(register_list & (1 << i))
15095     {
15096       m68ki_write_32(ea, REG_DA[i]);
15097       ea += 4;
15098       count++;
15099     }
15100 
15101   USE_CYCLES(count * CYC_MOVEM_L);
15102 }
15103 
15104 
m68k_op_movem_32_re_al(void)15105 static void m68k_op_movem_32_re_al(void)
15106 {
15107   uint i = 0;
15108   uint register_list = OPER_I_16();
15109   uint ea = EA_AL_32();
15110   uint count = 0;
15111 
15112   for(; i < 16; i++)
15113     if(register_list & (1 << i))
15114     {
15115       m68ki_write_32(ea, REG_DA[i]);
15116       ea += 4;
15117       count++;
15118     }
15119 
15120   USE_CYCLES(count * CYC_MOVEM_L);
15121 }
15122 
15123 
m68k_op_movem_16_er_pi(void)15124 static void m68k_op_movem_16_er_pi(void)
15125 {
15126   uint i = 0;
15127   uint register_list = OPER_I_16();
15128   uint ea = AY;
15129   uint count = 0;
15130 
15131   for(; i < 16; i++)
15132     if(register_list & (1 << i))
15133     {
15134       REG_DA[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_16(ea)));
15135       ea += 2;
15136       count++;
15137     }
15138   AY = ea;
15139 
15140   USE_CYCLES(count * CYC_MOVEM_W);
15141 }
15142 
15143 
m68k_op_movem_16_er_pcdi(void)15144 static void m68k_op_movem_16_er_pcdi(void)
15145 {
15146   uint i = 0;
15147   uint register_list = OPER_I_16();
15148   uint ea = EA_PCDI_16();
15149   uint count = 0;
15150 
15151   for(; i < 16; i++)
15152     if(register_list & (1 << i))
15153     {
15154       REG_DA[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_pcrel_16(ea)));
15155       ea += 2;
15156       count++;
15157     }
15158 
15159   USE_CYCLES(count * CYC_MOVEM_W);
15160 }
15161 
15162 
m68k_op_movem_16_er_pcix(void)15163 static void m68k_op_movem_16_er_pcix(void)
15164 {
15165   uint i = 0;
15166   uint register_list = OPER_I_16();
15167   uint ea = EA_PCIX_16();
15168   uint count = 0;
15169 
15170   for(; i < 16; i++)
15171     if(register_list & (1 << i))
15172     {
15173       REG_DA[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_pcrel_16(ea)));
15174       ea += 2;
15175       count++;
15176     }
15177 
15178   USE_CYCLES(count * CYC_MOVEM_W);
15179 }
15180 
15181 
m68k_op_movem_16_er_ai(void)15182 static void m68k_op_movem_16_er_ai(void)
15183 {
15184   uint i = 0;
15185   uint register_list = OPER_I_16();
15186   uint ea = EA_AY_AI_16();
15187   uint count = 0;
15188 
15189   for(; i < 16; i++)
15190     if(register_list & (1 << i))
15191     {
15192       REG_DA[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_16(ea)));
15193       ea += 2;
15194       count++;
15195     }
15196 
15197   USE_CYCLES(count * CYC_MOVEM_W);
15198 }
15199 
15200 
m68k_op_movem_16_er_di(void)15201 static void m68k_op_movem_16_er_di(void)
15202 {
15203   uint i = 0;
15204   uint register_list = OPER_I_16();
15205   uint ea = EA_AY_DI_16();
15206   uint count = 0;
15207 
15208   for(; i < 16; i++)
15209     if(register_list & (1 << i))
15210     {
15211       REG_DA[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_16(ea)));
15212       ea += 2;
15213       count++;
15214     }
15215 
15216   USE_CYCLES(count * CYC_MOVEM_W);
15217 }
15218 
15219 
m68k_op_movem_16_er_ix(void)15220 static void m68k_op_movem_16_er_ix(void)
15221 {
15222   uint i = 0;
15223   uint register_list = OPER_I_16();
15224   uint ea = EA_AY_IX_16();
15225   uint count = 0;
15226 
15227   for(; i < 16; i++)
15228     if(register_list & (1 << i))
15229     {
15230       REG_DA[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_16(ea)));
15231       ea += 2;
15232       count++;
15233     }
15234 
15235   USE_CYCLES(count * CYC_MOVEM_W);
15236 }
15237 
15238 
m68k_op_movem_16_er_aw(void)15239 static void m68k_op_movem_16_er_aw(void)
15240 {
15241   uint i = 0;
15242   uint register_list = OPER_I_16();
15243   uint ea = EA_AW_16();
15244   uint count = 0;
15245 
15246   for(; i < 16; i++)
15247     if(register_list & (1 << i))
15248     {
15249       REG_DA[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_16(ea)));
15250       ea += 2;
15251       count++;
15252     }
15253 
15254   USE_CYCLES(count * CYC_MOVEM_W);
15255 }
15256 
15257 
m68k_op_movem_16_er_al(void)15258 static void m68k_op_movem_16_er_al(void)
15259 {
15260   uint i = 0;
15261   uint register_list = OPER_I_16();
15262   uint ea = EA_AL_16();
15263   uint count = 0;
15264 
15265   for(; i < 16; i++)
15266     if(register_list & (1 << i))
15267     {
15268       REG_DA[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_16(ea)));
15269       ea += 2;
15270       count++;
15271     }
15272 
15273   USE_CYCLES(count * CYC_MOVEM_W);
15274 }
15275 
15276 
m68k_op_movem_32_er_pi(void)15277 static void m68k_op_movem_32_er_pi(void)
15278 {
15279   uint i = 0;
15280   uint register_list = OPER_I_16();
15281   uint ea = AY;
15282   uint count = 0;
15283 
15284   for(; i < 16; i++)
15285     if(register_list & (1 << i))
15286     {
15287       REG_DA[i] = m68ki_read_32(ea);
15288       ea += 4;
15289       count++;
15290     }
15291   AY = ea;
15292 
15293   USE_CYCLES(count * CYC_MOVEM_L);
15294 }
15295 
15296 
m68k_op_movem_32_er_pcdi(void)15297 static void m68k_op_movem_32_er_pcdi(void)
15298 {
15299   uint i = 0;
15300   uint register_list = OPER_I_16();
15301   uint ea = EA_PCDI_32();
15302   uint count = 0;
15303 
15304   for(; i < 16; i++)
15305     if(register_list & (1 << i))
15306     {
15307       REG_DA[i] = m68ki_read_pcrel_32(ea);
15308       ea += 4;
15309       count++;
15310     }
15311 
15312   USE_CYCLES(count * CYC_MOVEM_L);
15313 }
15314 
15315 
m68k_op_movem_32_er_pcix(void)15316 static void m68k_op_movem_32_er_pcix(void)
15317 {
15318   uint i = 0;
15319   uint register_list = OPER_I_16();
15320   uint ea = EA_PCIX_32();
15321   uint count = 0;
15322 
15323   for(; i < 16; i++)
15324     if(register_list & (1 << i))
15325     {
15326       REG_DA[i] = m68ki_read_pcrel_32(ea);
15327       ea += 4;
15328       count++;
15329     }
15330 
15331   USE_CYCLES(count * CYC_MOVEM_L);
15332 }
15333 
15334 
m68k_op_movem_32_er_ai(void)15335 static void m68k_op_movem_32_er_ai(void)
15336 {
15337   uint i = 0;
15338   uint register_list = OPER_I_16();
15339   uint ea = EA_AY_AI_32();
15340   uint count = 0;
15341 
15342   for(; i < 16; i++)
15343     if(register_list & (1 << i))
15344     {
15345       REG_DA[i] = m68ki_read_32(ea);
15346       ea += 4;
15347       count++;
15348     }
15349 
15350   USE_CYCLES(count * CYC_MOVEM_L);
15351 }
15352 
15353 
m68k_op_movem_32_er_di(void)15354 static void m68k_op_movem_32_er_di(void)
15355 {
15356   uint i = 0;
15357   uint register_list = OPER_I_16();
15358   uint ea = EA_AY_DI_32();
15359   uint count = 0;
15360 
15361   for(; i < 16; i++)
15362     if(register_list & (1 << i))
15363     {
15364       REG_DA[i] = m68ki_read_32(ea);
15365       ea += 4;
15366       count++;
15367     }
15368 
15369   USE_CYCLES(count * CYC_MOVEM_L);
15370 }
15371 
15372 
m68k_op_movem_32_er_ix(void)15373 static void m68k_op_movem_32_er_ix(void)
15374 {
15375   uint i = 0;
15376   uint register_list = OPER_I_16();
15377   uint ea = EA_AY_IX_32();
15378   uint count = 0;
15379 
15380   for(; i < 16; i++)
15381     if(register_list & (1 << i))
15382     {
15383       REG_DA[i] = m68ki_read_32(ea);
15384       ea += 4;
15385       count++;
15386     }
15387 
15388   USE_CYCLES(count * CYC_MOVEM_L);
15389 }
15390 
15391 
m68k_op_movem_32_er_aw(void)15392 static void m68k_op_movem_32_er_aw(void)
15393 {
15394   uint i = 0;
15395   uint register_list = OPER_I_16();
15396   uint ea = EA_AW_32();
15397   uint count = 0;
15398 
15399   for(; i < 16; i++)
15400     if(register_list & (1 << i))
15401     {
15402       REG_DA[i] = m68ki_read_32(ea);
15403       ea += 4;
15404       count++;
15405     }
15406 
15407   USE_CYCLES(count * CYC_MOVEM_L);
15408 }
15409 
15410 
m68k_op_movem_32_er_al(void)15411 static void m68k_op_movem_32_er_al(void)
15412 {
15413   uint i = 0;
15414   uint register_list = OPER_I_16();
15415   uint ea = EA_AL_32();
15416   uint count = 0;
15417 
15418   for(; i < 16; i++)
15419     if(register_list & (1 << i))
15420     {
15421       REG_DA[i] = m68ki_read_32(ea);
15422       ea += 4;
15423       count++;
15424     }
15425 
15426   USE_CYCLES(count * CYC_MOVEM_L);
15427 }
15428 
15429 
m68k_op_movep_16_re(void)15430 static void m68k_op_movep_16_re(void)
15431 {
15432   uint ea = EA_AY_DI_16();
15433   uint src = DX;
15434 
15435   m68ki_write_8(ea, MASK_OUT_ABOVE_8(src >> 8));
15436   m68ki_write_8(ea += 2, MASK_OUT_ABOVE_8(src));
15437 }
15438 
15439 
m68k_op_movep_32_re(void)15440 static void m68k_op_movep_32_re(void)
15441 {
15442   uint ea = EA_AY_DI_32();
15443   uint src = DX;
15444 
15445   m68ki_write_8(ea, MASK_OUT_ABOVE_8(src >> 24));
15446   m68ki_write_8(ea += 2, MASK_OUT_ABOVE_8(src >> 16));
15447   m68ki_write_8(ea += 2, MASK_OUT_ABOVE_8(src >> 8));
15448   m68ki_write_8(ea += 2, MASK_OUT_ABOVE_8(src));
15449 }
15450 
15451 
m68k_op_movep_16_er(void)15452 static void m68k_op_movep_16_er(void)
15453 {
15454   uint ea = EA_AY_DI_16();
15455   uint* r_dst = &DX;
15456 
15457   *r_dst = MASK_OUT_BELOW_16(*r_dst) | ((m68ki_read_8(ea) << 8) + m68ki_read_8(ea + 2));
15458 }
15459 
15460 
m68k_op_movep_32_er(void)15461 static void m68k_op_movep_32_er(void)
15462 {
15463   uint ea = EA_AY_DI_32();
15464 
15465   DX = (m68ki_read_8(ea) << 24) + (m68ki_read_8(ea + 2) << 16)
15466     + (m68ki_read_8(ea + 4) << 8) + m68ki_read_8(ea + 6);
15467 }
15468 
15469 
m68k_op_moveq_32(void)15470 static void m68k_op_moveq_32(void)
15471 {
15472   uint res = DX = MAKE_INT_8(MASK_OUT_ABOVE_8(REG_IR));
15473 
15474   FLAG_N = NFLAG_32(res);
15475   FLAG_Z = res;
15476   FLAG_V = VFLAG_CLEAR;
15477   FLAG_C = CFLAG_CLEAR;
15478 }
15479 
15480 
m68k_op_muls_16_d(void)15481 static void m68k_op_muls_16_d(void)
15482 {
15483   uint* r_dst = &DX;
15484   sint src = MAKE_INT_16(DY);
15485   uint res = MASK_OUT_ABOVE_32( src * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst)));
15486 
15487   UseMulsCycles(src);
15488 
15489   *r_dst = res;
15490 
15491   FLAG_Z = res;
15492   FLAG_N = NFLAG_32(res);
15493   FLAG_V = VFLAG_CLEAR;
15494   FLAG_C = CFLAG_CLEAR;
15495 }
15496 
15497 
m68k_op_muls_16_ai(void)15498 static void m68k_op_muls_16_ai(void)
15499 {
15500   uint* r_dst = &DX;
15501   sint src = MAKE_INT_16(OPER_AY_AI_16());
15502   uint res = MASK_OUT_ABOVE_32( src * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst)));
15503 
15504   UseMulsCycles(src);
15505 
15506   *r_dst = res;
15507 
15508   FLAG_Z = res;
15509   FLAG_N = NFLAG_32(res);
15510   FLAG_V = VFLAG_CLEAR;
15511   FLAG_C = CFLAG_CLEAR;
15512 }
15513 
15514 
m68k_op_muls_16_pi(void)15515 static void m68k_op_muls_16_pi(void)
15516 {
15517   uint* r_dst = &DX;
15518   sint src = MAKE_INT_16(OPER_AY_PI_16());
15519   uint res = MASK_OUT_ABOVE_32( src * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst)));
15520 
15521   UseMulsCycles(src);
15522 
15523   *r_dst = res;
15524 
15525   FLAG_Z = res;
15526   FLAG_N = NFLAG_32(res);
15527   FLAG_V = VFLAG_CLEAR;
15528   FLAG_C = CFLAG_CLEAR;
15529 }
15530 
15531 
m68k_op_muls_16_pd(void)15532 static void m68k_op_muls_16_pd(void)
15533 {
15534   uint* r_dst = &DX;
15535   sint src = MAKE_INT_16(OPER_AY_PD_16());
15536   uint res = MASK_OUT_ABOVE_32( src * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst)));
15537 
15538   UseMulsCycles(src);
15539 
15540   *r_dst = res;
15541 
15542   FLAG_Z = res;
15543   FLAG_N = NFLAG_32(res);
15544   FLAG_V = VFLAG_CLEAR;
15545   FLAG_C = CFLAG_CLEAR;
15546 }
15547 
15548 
m68k_op_muls_16_di(void)15549 static void m68k_op_muls_16_di(void)
15550 {
15551   uint* r_dst = &DX;
15552   sint src = MAKE_INT_16(OPER_AY_DI_16());
15553   uint res = MASK_OUT_ABOVE_32( src * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst)));
15554 
15555   UseMulsCycles(src);
15556 
15557   *r_dst = res;
15558 
15559   FLAG_Z = res;
15560   FLAG_N = NFLAG_32(res);
15561   FLAG_V = VFLAG_CLEAR;
15562   FLAG_C = CFLAG_CLEAR;
15563 }
15564 
15565 
m68k_op_muls_16_ix(void)15566 static void m68k_op_muls_16_ix(void)
15567 {
15568   uint* r_dst = &DX;
15569   sint src = MAKE_INT_16(OPER_AY_IX_16());
15570   uint res = MASK_OUT_ABOVE_32( src * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst)));
15571 
15572   UseMulsCycles(src);
15573 
15574   *r_dst = res;
15575 
15576   FLAG_Z = res;
15577   FLAG_N = NFLAG_32(res);
15578   FLAG_V = VFLAG_CLEAR;
15579   FLAG_C = CFLAG_CLEAR;
15580 }
15581 
15582 
m68k_op_muls_16_aw(void)15583 static void m68k_op_muls_16_aw(void)
15584 {
15585   uint* r_dst = &DX;
15586   sint src = MAKE_INT_16(OPER_AW_16());
15587   uint res = MASK_OUT_ABOVE_32( src * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst)));
15588 
15589   UseMulsCycles(src);
15590 
15591   *r_dst = res;
15592 
15593   FLAG_Z = res;
15594   FLAG_N = NFLAG_32(res);
15595   FLAG_V = VFLAG_CLEAR;
15596   FLAG_C = CFLAG_CLEAR;
15597 }
15598 
15599 
m68k_op_muls_16_al(void)15600 static void m68k_op_muls_16_al(void)
15601 {
15602   uint* r_dst = &DX;
15603   sint src = MAKE_INT_16(OPER_AL_16());
15604   uint res = MASK_OUT_ABOVE_32( src * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst)));
15605 
15606   UseMulsCycles(src);
15607 
15608   *r_dst = res;
15609 
15610   FLAG_Z = res;
15611   FLAG_N = NFLAG_32(res);
15612   FLAG_V = VFLAG_CLEAR;
15613   FLAG_C = CFLAG_CLEAR;
15614 }
15615 
15616 
m68k_op_muls_16_pcdi(void)15617 static void m68k_op_muls_16_pcdi(void)
15618 {
15619   uint* r_dst = &DX;
15620   sint src = MAKE_INT_16(OPER_PCDI_16());
15621   uint res = MASK_OUT_ABOVE_32( src * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst)));
15622 
15623   UseMulsCycles(src);
15624 
15625   *r_dst = res;
15626 
15627   FLAG_Z = res;
15628   FLAG_N = NFLAG_32(res);
15629   FLAG_V = VFLAG_CLEAR;
15630   FLAG_C = CFLAG_CLEAR;
15631 }
15632 
15633 
m68k_op_muls_16_pcix(void)15634 static void m68k_op_muls_16_pcix(void)
15635 {
15636   uint* r_dst = &DX;
15637   sint src = MAKE_INT_16(OPER_PCIX_16());
15638   uint res = MASK_OUT_ABOVE_32( src * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst)));
15639 
15640   UseMulsCycles(src);
15641 
15642   *r_dst = res;
15643 
15644   FLAG_Z = res;
15645   FLAG_N = NFLAG_32(res);
15646   FLAG_V = VFLAG_CLEAR;
15647   FLAG_C = CFLAG_CLEAR;
15648 }
15649 
15650 
m68k_op_muls_16_i(void)15651 static void m68k_op_muls_16_i(void)
15652 {
15653   uint* r_dst = &DX;
15654   sint src = MAKE_INT_16(OPER_I_16());
15655   uint res = MASK_OUT_ABOVE_32( src * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst)));
15656 
15657   UseMulsCycles(src);
15658 
15659   *r_dst = res;
15660 
15661   FLAG_Z = res;
15662   FLAG_N = NFLAG_32(res);
15663   FLAG_V = VFLAG_CLEAR;
15664   FLAG_C = CFLAG_CLEAR;
15665 }
15666 
15667 
m68k_op_mulu_16_d(void)15668 static void m68k_op_mulu_16_d(void)
15669 {
15670   uint* r_dst = &DX;
15671   uint src = MASK_OUT_ABOVE_16(DY);
15672   uint res = src * MASK_OUT_ABOVE_16(*r_dst);
15673 
15674   UseMuluCycles(src);
15675 
15676   *r_dst = res;
15677 
15678   FLAG_Z = res;
15679   FLAG_N = NFLAG_32(res);
15680   FLAG_V = VFLAG_CLEAR;
15681   FLAG_C = CFLAG_CLEAR;
15682 }
15683 
15684 
m68k_op_mulu_16_ai(void)15685 static void m68k_op_mulu_16_ai(void)
15686 {
15687   uint* r_dst = &DX;
15688   uint src = OPER_AY_AI_16();
15689   uint res = src * MASK_OUT_ABOVE_16(*r_dst);
15690 
15691   UseMuluCycles(src);
15692 
15693   *r_dst = res;
15694 
15695   FLAG_Z = res;
15696   FLAG_N = NFLAG_32(res);
15697   FLAG_V = VFLAG_CLEAR;
15698   FLAG_C = CFLAG_CLEAR;
15699 }
15700 
15701 
m68k_op_mulu_16_pi(void)15702 static void m68k_op_mulu_16_pi(void)
15703 {
15704   uint* r_dst = &DX;
15705   uint src = OPER_AY_PI_16();
15706   uint res = src * MASK_OUT_ABOVE_16(*r_dst);
15707 
15708   UseMuluCycles(src);
15709 
15710   *r_dst = res;
15711 
15712   FLAG_Z = res;
15713   FLAG_N = NFLAG_32(res);
15714   FLAG_V = VFLAG_CLEAR;
15715   FLAG_C = CFLAG_CLEAR;
15716 }
15717 
15718 
m68k_op_mulu_16_pd(void)15719 static void m68k_op_mulu_16_pd(void)
15720 {
15721   uint* r_dst = &DX;
15722   uint src = OPER_AY_PD_16();
15723   uint res = src * MASK_OUT_ABOVE_16(*r_dst);
15724 
15725   UseMuluCycles(src);
15726 
15727   *r_dst = res;
15728 
15729   FLAG_Z = res;
15730   FLAG_N = NFLAG_32(res);
15731   FLAG_V = VFLAG_CLEAR;
15732   FLAG_C = CFLAG_CLEAR;
15733 }
15734 
15735 
m68k_op_mulu_16_di(void)15736 static void m68k_op_mulu_16_di(void)
15737 {
15738   uint* r_dst = &DX;
15739   uint src = OPER_AY_DI_16();
15740   uint res = src * MASK_OUT_ABOVE_16(*r_dst);
15741 
15742   UseMuluCycles(src);
15743 
15744   *r_dst = res;
15745 
15746   FLAG_Z = res;
15747   FLAG_N = NFLAG_32(res);
15748   FLAG_V = VFLAG_CLEAR;
15749   FLAG_C = CFLAG_CLEAR;
15750 }
15751 
15752 
m68k_op_mulu_16_ix(void)15753 static void m68k_op_mulu_16_ix(void)
15754 {
15755   uint* r_dst = &DX;
15756   uint src = OPER_AY_IX_16();
15757   uint res = src * MASK_OUT_ABOVE_16(*r_dst);
15758 
15759   UseMuluCycles(src);
15760 
15761   *r_dst = res;
15762 
15763   FLAG_Z = res;
15764   FLAG_N = NFLAG_32(res);
15765   FLAG_V = VFLAG_CLEAR;
15766   FLAG_C = CFLAG_CLEAR;
15767 }
15768 
15769 
m68k_op_mulu_16_aw(void)15770 static void m68k_op_mulu_16_aw(void)
15771 {
15772   uint* r_dst = &DX;
15773   uint src = OPER_AW_16();
15774   uint res = src * MASK_OUT_ABOVE_16(*r_dst);
15775 
15776   UseMuluCycles(src);
15777 
15778   *r_dst = res;
15779 
15780   FLAG_Z = res;
15781   FLAG_N = NFLAG_32(res);
15782   FLAG_V = VFLAG_CLEAR;
15783   FLAG_C = CFLAG_CLEAR;
15784 }
15785 
15786 
m68k_op_mulu_16_al(void)15787 static void m68k_op_mulu_16_al(void)
15788 {
15789   uint* r_dst = &DX;
15790   uint src = OPER_AL_16();
15791   uint res = src * MASK_OUT_ABOVE_16(*r_dst);
15792 
15793   UseMuluCycles(src);
15794 
15795   *r_dst = res;
15796 
15797   FLAG_Z = res;
15798   FLAG_N = NFLAG_32(res);
15799   FLAG_V = VFLAG_CLEAR;
15800   FLAG_C = CFLAG_CLEAR;
15801 }
15802 
15803 
m68k_op_mulu_16_pcdi(void)15804 static void m68k_op_mulu_16_pcdi(void)
15805 {
15806   uint* r_dst = &DX;
15807   uint src = OPER_PCDI_16();
15808   uint res = src * MASK_OUT_ABOVE_16(*r_dst);
15809 
15810   UseMuluCycles(src);
15811 
15812   *r_dst = res;
15813 
15814   FLAG_Z = res;
15815   FLAG_N = NFLAG_32(res);
15816   FLAG_V = VFLAG_CLEAR;
15817   FLAG_C = CFLAG_CLEAR;
15818 }
15819 
15820 
m68k_op_mulu_16_pcix(void)15821 static void m68k_op_mulu_16_pcix(void)
15822 {
15823   uint* r_dst = &DX;
15824   uint src = OPER_PCIX_16();
15825   uint res = src * MASK_OUT_ABOVE_16(*r_dst);
15826 
15827   UseMuluCycles(src);
15828 
15829   *r_dst = res;
15830 
15831   FLAG_Z = res;
15832   FLAG_N = NFLAG_32(res);
15833   FLAG_V = VFLAG_CLEAR;
15834   FLAG_C = CFLAG_CLEAR;
15835 }
15836 
15837 
m68k_op_mulu_16_i(void)15838 static void m68k_op_mulu_16_i(void)
15839 {
15840   uint* r_dst = &DX;
15841   uint src = OPER_I_16();
15842   uint res = src * MASK_OUT_ABOVE_16(*r_dst);
15843 
15844   UseMuluCycles(src);
15845 
15846   *r_dst = res;
15847 
15848   FLAG_Z = res;
15849   FLAG_N = NFLAG_32(res);
15850   FLAG_V = VFLAG_CLEAR;
15851   FLAG_C = CFLAG_CLEAR;
15852 }
15853 
15854 
m68k_op_nbcd_8_d(void)15855 static void m68k_op_nbcd_8_d(void)
15856 {
15857   uint* r_dst = &DY;
15858   uint dst = MASK_OUT_ABOVE_8(*r_dst);
15859   uint res = -dst - XFLAG_AS_1();
15860 
15861   if(res)
15862   {
15863     FLAG_V = res; /* Undefined V behavior */
15864 
15865     if(((res|dst) & 0x0f) == 0x0)
15866       res = (res & 0xf0) + 6;
15867 
15868     res = MASK_OUT_ABOVE_8(res+0x9a);
15869 
15870     FLAG_V &= ~res; /* Undefined V behavior part II */
15871 
15872     *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
15873 
15874     FLAG_Z |= res;
15875     FLAG_C = CFLAG_SET;
15876     FLAG_X = XFLAG_SET;
15877     FLAG_N = NFLAG_8(res);  /* Undefined N behavior */
15878   }
15879   else
15880   {
15881     FLAG_V = VFLAG_CLEAR;
15882     FLAG_C = CFLAG_CLEAR;
15883     FLAG_X = XFLAG_CLEAR;
15884     FLAG_N = NFLAG_CLEAR;
15885   }
15886 }
15887 
15888 
m68k_op_nbcd_8_ai(void)15889 static void m68k_op_nbcd_8_ai(void)
15890 {
15891   uint ea = EA_AY_AI_8();
15892   uint dst = m68ki_read_8(ea);
15893   uint res = -dst - XFLAG_AS_1();
15894 
15895   if(res)
15896   {
15897     FLAG_V = res; /* Undefined V behavior */
15898 
15899     if(((res|dst) & 0x0f) == 0x0)
15900       res = (res & 0xf0) + 6;
15901 
15902     res = MASK_OUT_ABOVE_8(res+0x9a);
15903 
15904     FLAG_V &= ~res; /* Undefined V behavior part II */
15905 
15906     m68ki_write_8(ea, res);
15907 
15908     FLAG_Z |= res;
15909     FLAG_C = CFLAG_SET;
15910     FLAG_X = XFLAG_SET;
15911     FLAG_N = NFLAG_8(res);  /* Undefined N behavior */
15912   }
15913   else
15914   {
15915     FLAG_V = VFLAG_CLEAR;
15916     FLAG_C = CFLAG_CLEAR;
15917     FLAG_X = XFLAG_CLEAR;
15918     FLAG_N = NFLAG_CLEAR;
15919   }
15920 }
15921 
15922 
m68k_op_nbcd_8_pi(void)15923 static void m68k_op_nbcd_8_pi(void)
15924 {
15925   uint ea = EA_AY_PI_8();
15926   uint dst = m68ki_read_8(ea);
15927   uint res = -dst - XFLAG_AS_1();
15928 
15929   if(res)
15930   {
15931     FLAG_V = res; /* Undefined V behavior */
15932 
15933     if(((res|dst) & 0x0f) == 0x0)
15934       res = (res & 0xf0) + 6;
15935 
15936     res = MASK_OUT_ABOVE_8(res+0x9a);
15937 
15938     FLAG_V &= ~res; /* Undefined V behavior part II */
15939 
15940     m68ki_write_8(ea, res);
15941 
15942     FLAG_Z |= res;
15943     FLAG_C = CFLAG_SET;
15944     FLAG_X = XFLAG_SET;
15945     FLAG_N = NFLAG_8(res);  /* Undefined N behavior */
15946   }
15947   else
15948   {
15949     FLAG_V = VFLAG_CLEAR;
15950     FLAG_C = CFLAG_CLEAR;
15951     FLAG_X = XFLAG_CLEAR;
15952     FLAG_N = NFLAG_CLEAR;
15953   }
15954 }
15955 
15956 
m68k_op_nbcd_8_pi7(void)15957 static void m68k_op_nbcd_8_pi7(void)
15958 {
15959   uint ea = EA_A7_PI_8();
15960   uint dst = m68ki_read_8(ea);
15961   uint res = -dst - XFLAG_AS_1();
15962 
15963   if(res)
15964   {
15965     FLAG_V = res; /* Undefined V behavior */
15966 
15967     if(((res|dst) & 0x0f) == 0x0)
15968       res = (res & 0xf0) + 6;
15969 
15970     res = MASK_OUT_ABOVE_8(res+0x9a);
15971 
15972     FLAG_V &= ~res; /* Undefined V behavior part II */
15973 
15974     m68ki_write_8(ea, res);
15975 
15976     FLAG_Z |= res;
15977     FLAG_C = CFLAG_SET;
15978     FLAG_X = XFLAG_SET;
15979     FLAG_N = NFLAG_8(res);  /* Undefined N behavior */
15980   }
15981   else
15982   {
15983     FLAG_V = VFLAG_CLEAR;
15984     FLAG_C = CFLAG_CLEAR;
15985     FLAG_X = XFLAG_CLEAR;
15986     FLAG_N = NFLAG_CLEAR;
15987   }
15988 }
15989 
15990 
m68k_op_nbcd_8_pd(void)15991 static void m68k_op_nbcd_8_pd(void)
15992 {
15993   uint ea = EA_AY_PD_8();
15994   uint dst = m68ki_read_8(ea);
15995   uint res = -dst - XFLAG_AS_1();
15996 
15997   if(res)
15998   {
15999     FLAG_V = res; /* Undefined V behavior */
16000 
16001     if(((res|dst) & 0x0f) == 0x0)
16002       res = (res & 0xf0) + 6;
16003 
16004     res = MASK_OUT_ABOVE_8(res+0x9a);
16005 
16006     FLAG_V &= ~res; /* Undefined V behavior part II */
16007 
16008     m68ki_write_8(ea, res);
16009 
16010     FLAG_Z |= res;
16011     FLAG_C = CFLAG_SET;
16012     FLAG_X = XFLAG_SET;
16013     FLAG_N = NFLAG_8(res);  /* Undefined N behavior */
16014   }
16015   else
16016   {
16017     FLAG_V = VFLAG_CLEAR;
16018     FLAG_C = CFLAG_CLEAR;
16019     FLAG_X = XFLAG_CLEAR;
16020     FLAG_N = NFLAG_CLEAR;
16021   }
16022 }
16023 
16024 
m68k_op_nbcd_8_pd7(void)16025 static void m68k_op_nbcd_8_pd7(void)
16026 {
16027   uint ea = EA_A7_PD_8();
16028   uint dst = m68ki_read_8(ea);
16029   uint res = -dst - XFLAG_AS_1();
16030 
16031   if(res)
16032   {
16033     FLAG_V = res; /* Undefined V behavior */
16034 
16035     if(((res|dst) & 0x0f) == 0x0)
16036       res = (res & 0xf0) + 6;
16037 
16038     res = MASK_OUT_ABOVE_8(res+0x9a);
16039 
16040     FLAG_V &= ~res; /* Undefined V behavior part II */
16041 
16042     m68ki_write_8(ea, res);
16043 
16044     FLAG_Z |= res;
16045     FLAG_C = CFLAG_SET;
16046     FLAG_X = XFLAG_SET;
16047     FLAG_N = NFLAG_8(res);  /* Undefined N behavior */
16048   }
16049   else
16050   {
16051     FLAG_V = VFLAG_CLEAR;
16052     FLAG_C = CFLAG_CLEAR;
16053     FLAG_X = XFLAG_CLEAR;
16054     FLAG_N = NFLAG_CLEAR;
16055   }
16056 }
16057 
16058 
m68k_op_nbcd_8_di(void)16059 static void m68k_op_nbcd_8_di(void)
16060 {
16061   uint ea = EA_AY_DI_8();
16062   uint dst = m68ki_read_8(ea);
16063   uint res = -dst - XFLAG_AS_1();
16064 
16065   if(res)
16066   {
16067     FLAG_V = res; /* Undefined V behavior */
16068 
16069     if(((res|dst) & 0x0f) == 0x0)
16070       res = (res & 0xf0) + 6;
16071 
16072     res = MASK_OUT_ABOVE_8(res+0x9a);
16073 
16074     FLAG_V &= ~res; /* Undefined V behavior part II */
16075 
16076     m68ki_write_8(ea, res);
16077 
16078     FLAG_Z |= res;
16079     FLAG_C = CFLAG_SET;
16080     FLAG_X = XFLAG_SET;
16081     FLAG_N = NFLAG_8(res);  /* Undefined N behavior */
16082   }
16083   else
16084   {
16085     FLAG_V = VFLAG_CLEAR;
16086     FLAG_C = CFLAG_CLEAR;
16087     FLAG_X = XFLAG_CLEAR;
16088     FLAG_N = NFLAG_CLEAR;
16089   }
16090 }
16091 
16092 
m68k_op_nbcd_8_ix(void)16093 static void m68k_op_nbcd_8_ix(void)
16094 {
16095   uint ea = EA_AY_IX_8();
16096   uint dst = m68ki_read_8(ea);
16097   uint res = -dst - XFLAG_AS_1();
16098 
16099   if(res)
16100   {
16101     FLAG_V = res; /* Undefined V behavior */
16102 
16103     if(((res|dst) & 0x0f) == 0x0)
16104       res = (res & 0xf0) + 6;
16105 
16106     res = MASK_OUT_ABOVE_8(res+0x9a);
16107 
16108     FLAG_V &= ~res; /* Undefined V behavior part II */
16109 
16110     m68ki_write_8(ea, res);
16111 
16112     FLAG_Z |= res;
16113     FLAG_C = CFLAG_SET;
16114     FLAG_X = XFLAG_SET;
16115     FLAG_N = NFLAG_8(res);  /* Undefined N behavior */
16116   }
16117   else
16118   {
16119     FLAG_V = VFLAG_CLEAR;
16120     FLAG_C = CFLAG_CLEAR;
16121     FLAG_X = XFLAG_CLEAR;
16122     FLAG_N = NFLAG_CLEAR;
16123   }
16124 }
16125 
16126 
m68k_op_nbcd_8_aw(void)16127 static void m68k_op_nbcd_8_aw(void)
16128 {
16129   uint ea = EA_AW_8();
16130   uint dst = m68ki_read_8(ea);
16131   uint res = -dst - XFLAG_AS_1();
16132 
16133   if(res)
16134   {
16135     FLAG_V = res; /* Undefined V behavior */
16136 
16137     if(((res|dst) & 0x0f) == 0x0)
16138       res = (res & 0xf0) + 6;
16139 
16140     res = MASK_OUT_ABOVE_8(res+0x9a);
16141 
16142     FLAG_V &= ~res; /* Undefined V behavior part II */
16143 
16144     m68ki_write_8(ea, res);
16145 
16146     FLAG_Z |= res;
16147     FLAG_C = CFLAG_SET;
16148     FLAG_X = XFLAG_SET;
16149     FLAG_N = NFLAG_8(res);  /* Undefined N behavior */
16150   }
16151   else
16152   {
16153     FLAG_V = VFLAG_CLEAR;
16154     FLAG_C = CFLAG_CLEAR;
16155     FLAG_X = XFLAG_CLEAR;
16156     FLAG_N = NFLAG_CLEAR;
16157   }
16158 }
16159 
16160 
m68k_op_nbcd_8_al(void)16161 static void m68k_op_nbcd_8_al(void)
16162 {
16163   uint ea = EA_AL_8();
16164   uint dst = m68ki_read_8(ea);
16165   uint res = -dst - XFLAG_AS_1();
16166 
16167   if(res)
16168   {
16169     FLAG_V = res; /* Undefined V behavior */
16170 
16171     if(((res|dst) & 0x0f) == 0x0)
16172       res = (res & 0xf0) + 6;
16173 
16174     res = MASK_OUT_ABOVE_8(res+0x9a);
16175 
16176     FLAG_V &= ~res; /* Undefined V behavior part II */
16177 
16178     m68ki_write_8(ea, res);
16179 
16180     FLAG_Z |= res;
16181     FLAG_C = CFLAG_SET;
16182     FLAG_X = XFLAG_SET;
16183     FLAG_N = NFLAG_8(res);  /* Undefined N behavior */
16184   }
16185   else
16186   {
16187     FLAG_V = VFLAG_CLEAR;
16188     FLAG_C = CFLAG_CLEAR;
16189     FLAG_X = XFLAG_CLEAR;
16190     FLAG_N = NFLAG_CLEAR;
16191   }
16192 }
16193 
16194 
m68k_op_neg_8_d(void)16195 static void m68k_op_neg_8_d(void)
16196 {
16197   uint* r_dst = &DY;
16198   uint res = 0 - MASK_OUT_ABOVE_8(*r_dst);
16199 
16200   FLAG_N = NFLAG_8(res);
16201   FLAG_C = FLAG_X = CFLAG_8(res);
16202   FLAG_V = *r_dst & res;
16203   FLAG_Z = MASK_OUT_ABOVE_8(res);
16204 
16205   *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
16206 }
16207 
16208 
m68k_op_neg_8_ai(void)16209 static void m68k_op_neg_8_ai(void)
16210 {
16211   uint ea = EA_AY_AI_8();
16212   uint src = m68ki_read_8(ea);
16213   uint res = 0 - src;
16214 
16215   FLAG_N = NFLAG_8(res);
16216   FLAG_C = FLAG_X = CFLAG_8(res);
16217   FLAG_V = src & res;
16218   FLAG_Z = MASK_OUT_ABOVE_8(res);
16219 
16220   m68ki_write_8(ea, FLAG_Z);
16221 }
16222 
16223 
m68k_op_neg_8_pi(void)16224 static void m68k_op_neg_8_pi(void)
16225 {
16226   uint ea = EA_AY_PI_8();
16227   uint src = m68ki_read_8(ea);
16228   uint res = 0 - src;
16229 
16230   FLAG_N = NFLAG_8(res);
16231   FLAG_C = FLAG_X = CFLAG_8(res);
16232   FLAG_V = src & res;
16233   FLAG_Z = MASK_OUT_ABOVE_8(res);
16234 
16235   m68ki_write_8(ea, FLAG_Z);
16236 }
16237 
16238 
m68k_op_neg_8_pi7(void)16239 static void m68k_op_neg_8_pi7(void)
16240 {
16241   uint ea = EA_A7_PI_8();
16242   uint src = m68ki_read_8(ea);
16243   uint res = 0 - src;
16244 
16245   FLAG_N = NFLAG_8(res);
16246   FLAG_C = FLAG_X = CFLAG_8(res);
16247   FLAG_V = src & res;
16248   FLAG_Z = MASK_OUT_ABOVE_8(res);
16249 
16250   m68ki_write_8(ea, FLAG_Z);
16251 }
16252 
16253 
m68k_op_neg_8_pd(void)16254 static void m68k_op_neg_8_pd(void)
16255 {
16256   uint ea = EA_AY_PD_8();
16257   uint src = m68ki_read_8(ea);
16258   uint res = 0 - src;
16259 
16260   FLAG_N = NFLAG_8(res);
16261   FLAG_C = FLAG_X = CFLAG_8(res);
16262   FLAG_V = src & res;
16263   FLAG_Z = MASK_OUT_ABOVE_8(res);
16264 
16265   m68ki_write_8(ea, FLAG_Z);
16266 }
16267 
16268 
m68k_op_neg_8_pd7(void)16269 static void m68k_op_neg_8_pd7(void)
16270 {
16271   uint ea = EA_A7_PD_8();
16272   uint src = m68ki_read_8(ea);
16273   uint res = 0 - src;
16274 
16275   FLAG_N = NFLAG_8(res);
16276   FLAG_C = FLAG_X = CFLAG_8(res);
16277   FLAG_V = src & res;
16278   FLAG_Z = MASK_OUT_ABOVE_8(res);
16279 
16280   m68ki_write_8(ea, FLAG_Z);
16281 }
16282 
16283 
m68k_op_neg_8_di(void)16284 static void m68k_op_neg_8_di(void)
16285 {
16286   uint ea = EA_AY_DI_8();
16287   uint src = m68ki_read_8(ea);
16288   uint res = 0 - src;
16289 
16290   FLAG_N = NFLAG_8(res);
16291   FLAG_C = FLAG_X = CFLAG_8(res);
16292   FLAG_V = src & res;
16293   FLAG_Z = MASK_OUT_ABOVE_8(res);
16294 
16295   m68ki_write_8(ea, FLAG_Z);
16296 }
16297 
16298 
m68k_op_neg_8_ix(void)16299 static void m68k_op_neg_8_ix(void)
16300 {
16301   uint ea = EA_AY_IX_8();
16302   uint src = m68ki_read_8(ea);
16303   uint res = 0 - src;
16304 
16305   FLAG_N = NFLAG_8(res);
16306   FLAG_C = FLAG_X = CFLAG_8(res);
16307   FLAG_V = src & res;
16308   FLAG_Z = MASK_OUT_ABOVE_8(res);
16309 
16310   m68ki_write_8(ea, FLAG_Z);
16311 }
16312 
16313 
m68k_op_neg_8_aw(void)16314 static void m68k_op_neg_8_aw(void)
16315 {
16316   uint ea = EA_AW_8();
16317   uint src = m68ki_read_8(ea);
16318   uint res = 0 - src;
16319 
16320   FLAG_N = NFLAG_8(res);
16321   FLAG_C = FLAG_X = CFLAG_8(res);
16322   FLAG_V = src & res;
16323   FLAG_Z = MASK_OUT_ABOVE_8(res);
16324 
16325   m68ki_write_8(ea, FLAG_Z);
16326 }
16327 
16328 
m68k_op_neg_8_al(void)16329 static void m68k_op_neg_8_al(void)
16330 {
16331   uint ea = EA_AL_8();
16332   uint src = m68ki_read_8(ea);
16333   uint res = 0 - src;
16334 
16335   FLAG_N = NFLAG_8(res);
16336   FLAG_C = FLAG_X = CFLAG_8(res);
16337   FLAG_V = src & res;
16338   FLAG_Z = MASK_OUT_ABOVE_8(res);
16339 
16340   m68ki_write_8(ea, FLAG_Z);
16341 }
16342 
16343 
m68k_op_neg_16_d(void)16344 static void m68k_op_neg_16_d(void)
16345 {
16346   uint* r_dst = &DY;
16347   uint res = 0 - MASK_OUT_ABOVE_16(*r_dst);
16348 
16349   FLAG_N = NFLAG_16(res);
16350   FLAG_C = FLAG_X = CFLAG_16(res);
16351   FLAG_V = (*r_dst & res)>>8;
16352   FLAG_Z = MASK_OUT_ABOVE_16(res);
16353 
16354   *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
16355 }
16356 
16357 
m68k_op_neg_16_ai(void)16358 static void m68k_op_neg_16_ai(void)
16359 {
16360   uint ea = EA_AY_AI_16();
16361   uint src = m68ki_read_16(ea);
16362   uint res = 0 - src;
16363 
16364   FLAG_N = NFLAG_16(res);
16365   FLAG_C = FLAG_X = CFLAG_16(res);
16366   FLAG_V = (src & res)>>8;
16367   FLAG_Z = MASK_OUT_ABOVE_16(res);
16368 
16369   m68ki_write_16(ea, FLAG_Z);
16370 }
16371 
16372 
m68k_op_neg_16_pi(void)16373 static void m68k_op_neg_16_pi(void)
16374 {
16375   uint ea = EA_AY_PI_16();
16376   uint src = m68ki_read_16(ea);
16377   uint res = 0 - src;
16378 
16379   FLAG_N = NFLAG_16(res);
16380   FLAG_C = FLAG_X = CFLAG_16(res);
16381   FLAG_V = (src & res)>>8;
16382   FLAG_Z = MASK_OUT_ABOVE_16(res);
16383 
16384   m68ki_write_16(ea, FLAG_Z);
16385 }
16386 
16387 
m68k_op_neg_16_pd(void)16388 static void m68k_op_neg_16_pd(void)
16389 {
16390   uint ea = EA_AY_PD_16();
16391   uint src = m68ki_read_16(ea);
16392   uint res = 0 - src;
16393 
16394   FLAG_N = NFLAG_16(res);
16395   FLAG_C = FLAG_X = CFLAG_16(res);
16396   FLAG_V = (src & res)>>8;
16397   FLAG_Z = MASK_OUT_ABOVE_16(res);
16398 
16399   m68ki_write_16(ea, FLAG_Z);
16400 }
16401 
16402 
m68k_op_neg_16_di(void)16403 static void m68k_op_neg_16_di(void)
16404 {
16405   uint ea = EA_AY_DI_16();
16406   uint src = m68ki_read_16(ea);
16407   uint res = 0 - src;
16408 
16409   FLAG_N = NFLAG_16(res);
16410   FLAG_C = FLAG_X = CFLAG_16(res);
16411   FLAG_V = (src & res)>>8;
16412   FLAG_Z = MASK_OUT_ABOVE_16(res);
16413 
16414   m68ki_write_16(ea, FLAG_Z);
16415 }
16416 
16417 
m68k_op_neg_16_ix(void)16418 static void m68k_op_neg_16_ix(void)
16419 {
16420   uint ea = EA_AY_IX_16();
16421   uint src = m68ki_read_16(ea);
16422   uint res = 0 - src;
16423 
16424   FLAG_N = NFLAG_16(res);
16425   FLAG_C = FLAG_X = CFLAG_16(res);
16426   FLAG_V = (src & res)>>8;
16427   FLAG_Z = MASK_OUT_ABOVE_16(res);
16428 
16429   m68ki_write_16(ea, FLAG_Z);
16430 }
16431 
16432 
m68k_op_neg_16_aw(void)16433 static void m68k_op_neg_16_aw(void)
16434 {
16435   uint ea = EA_AW_16();
16436   uint src = m68ki_read_16(ea);
16437   uint res = 0 - src;
16438 
16439   FLAG_N = NFLAG_16(res);
16440   FLAG_C = FLAG_X = CFLAG_16(res);
16441   FLAG_V = (src & res)>>8;
16442   FLAG_Z = MASK_OUT_ABOVE_16(res);
16443 
16444   m68ki_write_16(ea, FLAG_Z);
16445 }
16446 
16447 
m68k_op_neg_16_al(void)16448 static void m68k_op_neg_16_al(void)
16449 {
16450   uint ea = EA_AL_16();
16451   uint src = m68ki_read_16(ea);
16452   uint res = 0 - src;
16453 
16454   FLAG_N = NFLAG_16(res);
16455   FLAG_C = FLAG_X = CFLAG_16(res);
16456   FLAG_V = (src & res)>>8;
16457   FLAG_Z = MASK_OUT_ABOVE_16(res);
16458 
16459   m68ki_write_16(ea, FLAG_Z);
16460 }
16461 
16462 
m68k_op_neg_32_d(void)16463 static void m68k_op_neg_32_d(void)
16464 {
16465   uint* r_dst = &DY;
16466   uint res = 0 - *r_dst;
16467 
16468   FLAG_N = NFLAG_32(res);
16469   FLAG_C = FLAG_X = CFLAG_SUB_32(*r_dst, 0, res);
16470   FLAG_V = (*r_dst & res)>>24;
16471   FLAG_Z = MASK_OUT_ABOVE_32(res);
16472 
16473   *r_dst = FLAG_Z;
16474 }
16475 
16476 
m68k_op_neg_32_ai(void)16477 static void m68k_op_neg_32_ai(void)
16478 {
16479   uint ea = EA_AY_AI_32();
16480   uint src = m68ki_read_32(ea);
16481   uint res = 0 - src;
16482 
16483   FLAG_N = NFLAG_32(res);
16484   FLAG_C = FLAG_X = CFLAG_SUB_32(src, 0, res);
16485   FLAG_V = (src & res)>>24;
16486   FLAG_Z = MASK_OUT_ABOVE_32(res);
16487 
16488   m68ki_write_32(ea, FLAG_Z);
16489 }
16490 
16491 
m68k_op_neg_32_pi(void)16492 static void m68k_op_neg_32_pi(void)
16493 {
16494   uint ea = EA_AY_PI_32();
16495   uint src = m68ki_read_32(ea);
16496   uint res = 0 - src;
16497 
16498   FLAG_N = NFLAG_32(res);
16499   FLAG_C = FLAG_X = CFLAG_SUB_32(src, 0, res);
16500   FLAG_V = (src & res)>>24;
16501   FLAG_Z = MASK_OUT_ABOVE_32(res);
16502 
16503   m68ki_write_32(ea, FLAG_Z);
16504 }
16505 
16506 
m68k_op_neg_32_pd(void)16507 static void m68k_op_neg_32_pd(void)
16508 {
16509   uint ea = EA_AY_PD_32();
16510   uint src = m68ki_read_32(ea);
16511   uint res = 0 - src;
16512 
16513   FLAG_N = NFLAG_32(res);
16514   FLAG_C = FLAG_X = CFLAG_SUB_32(src, 0, res);
16515   FLAG_V = (src & res)>>24;
16516   FLAG_Z = MASK_OUT_ABOVE_32(res);
16517 
16518   m68ki_write_32(ea, FLAG_Z);
16519 }
16520 
16521 
m68k_op_neg_32_di(void)16522 static void m68k_op_neg_32_di(void)
16523 {
16524   uint ea = EA_AY_DI_32();
16525   uint src = m68ki_read_32(ea);
16526   uint res = 0 - src;
16527 
16528   FLAG_N = NFLAG_32(res);
16529   FLAG_C = FLAG_X = CFLAG_SUB_32(src, 0, res);
16530   FLAG_V = (src & res)>>24;
16531   FLAG_Z = MASK_OUT_ABOVE_32(res);
16532 
16533   m68ki_write_32(ea, FLAG_Z);
16534 }
16535 
16536 
m68k_op_neg_32_ix(void)16537 static void m68k_op_neg_32_ix(void)
16538 {
16539   uint ea = EA_AY_IX_32();
16540   uint src = m68ki_read_32(ea);
16541   uint res = 0 - src;
16542 
16543   FLAG_N = NFLAG_32(res);
16544   FLAG_C = FLAG_X = CFLAG_SUB_32(src, 0, res);
16545   FLAG_V = (src & res)>>24;
16546   FLAG_Z = MASK_OUT_ABOVE_32(res);
16547 
16548   m68ki_write_32(ea, FLAG_Z);
16549 }
16550 
16551 
m68k_op_neg_32_aw(void)16552 static void m68k_op_neg_32_aw(void)
16553 {
16554   uint ea = EA_AW_32();
16555   uint src = m68ki_read_32(ea);
16556   uint res = 0 - src;
16557 
16558   FLAG_N = NFLAG_32(res);
16559   FLAG_C = FLAG_X = CFLAG_SUB_32(src, 0, res);
16560   FLAG_V = (src & res)>>24;
16561   FLAG_Z = MASK_OUT_ABOVE_32(res);
16562 
16563   m68ki_write_32(ea, FLAG_Z);
16564 }
16565 
16566 
m68k_op_neg_32_al(void)16567 static void m68k_op_neg_32_al(void)
16568 {
16569   uint ea = EA_AL_32();
16570   uint src = m68ki_read_32(ea);
16571   uint res = 0 - src;
16572 
16573   FLAG_N = NFLAG_32(res);
16574   FLAG_C = FLAG_X = CFLAG_SUB_32(src, 0, res);
16575   FLAG_V = (src & res)>>24;
16576   FLAG_Z = MASK_OUT_ABOVE_32(res);
16577 
16578   m68ki_write_32(ea, FLAG_Z);
16579 }
16580 
16581 
m68k_op_negx_8_d(void)16582 static void m68k_op_negx_8_d(void)
16583 {
16584   uint* r_dst = &DY;
16585   uint res = 0 - MASK_OUT_ABOVE_8(*r_dst) - XFLAG_AS_1();
16586 
16587   FLAG_N = NFLAG_8(res);
16588   FLAG_X = FLAG_C = CFLAG_8(res);
16589   FLAG_V = *r_dst & res;
16590 
16591   res = MASK_OUT_ABOVE_8(res);
16592   FLAG_Z |= res;
16593 
16594   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
16595 }
16596 
16597 
m68k_op_negx_8_ai(void)16598 static void m68k_op_negx_8_ai(void)
16599 {
16600   uint ea = EA_AY_AI_8();
16601   uint src = m68ki_read_8(ea);
16602   uint res = 0 - src - XFLAG_AS_1();
16603 
16604   FLAG_N = NFLAG_8(res);
16605   FLAG_X = FLAG_C = CFLAG_8(res);
16606   FLAG_V = src & res;
16607 
16608   res = MASK_OUT_ABOVE_8(res);
16609   FLAG_Z |= res;
16610 
16611   m68ki_write_8(ea, res);
16612 }
16613 
16614 
m68k_op_negx_8_pi(void)16615 static void m68k_op_negx_8_pi(void)
16616 {
16617   uint ea = EA_AY_PI_8();
16618   uint src = m68ki_read_8(ea);
16619   uint res = 0 - src - XFLAG_AS_1();
16620 
16621   FLAG_N = NFLAG_8(res);
16622   FLAG_X = FLAG_C = CFLAG_8(res);
16623   FLAG_V = src & res;
16624 
16625   res = MASK_OUT_ABOVE_8(res);
16626   FLAG_Z |= res;
16627 
16628   m68ki_write_8(ea, res);
16629 }
16630 
16631 
m68k_op_negx_8_pi7(void)16632 static void m68k_op_negx_8_pi7(void)
16633 {
16634   uint ea = EA_A7_PI_8();
16635   uint src = m68ki_read_8(ea);
16636   uint res = 0 - src - XFLAG_AS_1();
16637 
16638   FLAG_N = NFLAG_8(res);
16639   FLAG_X = FLAG_C = CFLAG_8(res);
16640   FLAG_V = src & res;
16641 
16642   res = MASK_OUT_ABOVE_8(res);
16643   FLAG_Z |= res;
16644 
16645   m68ki_write_8(ea, res);
16646 }
16647 
16648 
m68k_op_negx_8_pd(void)16649 static void m68k_op_negx_8_pd(void)
16650 {
16651   uint ea = EA_AY_PD_8();
16652   uint src = m68ki_read_8(ea);
16653   uint res = 0 - src - XFLAG_AS_1();
16654 
16655   FLAG_N = NFLAG_8(res);
16656   FLAG_X = FLAG_C = CFLAG_8(res);
16657   FLAG_V = src & res;
16658 
16659   res = MASK_OUT_ABOVE_8(res);
16660   FLAG_Z |= res;
16661 
16662   m68ki_write_8(ea, res);
16663 }
16664 
16665 
m68k_op_negx_8_pd7(void)16666 static void m68k_op_negx_8_pd7(void)
16667 {
16668   uint ea = EA_A7_PD_8();
16669   uint src = m68ki_read_8(ea);
16670   uint res = 0 - src - XFLAG_AS_1();
16671 
16672   FLAG_N = NFLAG_8(res);
16673   FLAG_X = FLAG_C = CFLAG_8(res);
16674   FLAG_V = src & res;
16675 
16676   res = MASK_OUT_ABOVE_8(res);
16677   FLAG_Z |= res;
16678 
16679   m68ki_write_8(ea, res);
16680 }
16681 
16682 
m68k_op_negx_8_di(void)16683 static void m68k_op_negx_8_di(void)
16684 {
16685   uint ea = EA_AY_DI_8();
16686   uint src = m68ki_read_8(ea);
16687   uint res = 0 - src - XFLAG_AS_1();
16688 
16689   FLAG_N = NFLAG_8(res);
16690   FLAG_X = FLAG_C = CFLAG_8(res);
16691   FLAG_V = src & res;
16692 
16693   res = MASK_OUT_ABOVE_8(res);
16694   FLAG_Z |= res;
16695 
16696   m68ki_write_8(ea, res);
16697 }
16698 
16699 
m68k_op_negx_8_ix(void)16700 static void m68k_op_negx_8_ix(void)
16701 {
16702   uint ea = EA_AY_IX_8();
16703   uint src = m68ki_read_8(ea);
16704   uint res = 0 - src - XFLAG_AS_1();
16705 
16706   FLAG_N = NFLAG_8(res);
16707   FLAG_X = FLAG_C = CFLAG_8(res);
16708   FLAG_V = src & res;
16709 
16710   res = MASK_OUT_ABOVE_8(res);
16711   FLAG_Z |= res;
16712 
16713   m68ki_write_8(ea, res);
16714 }
16715 
16716 
m68k_op_negx_8_aw(void)16717 static void m68k_op_negx_8_aw(void)
16718 {
16719   uint ea = EA_AW_8();
16720   uint src = m68ki_read_8(ea);
16721   uint res = 0 - src - XFLAG_AS_1();
16722 
16723   FLAG_N = NFLAG_8(res);
16724   FLAG_X = FLAG_C = CFLAG_8(res);
16725   FLAG_V = src & res;
16726 
16727   res = MASK_OUT_ABOVE_8(res);
16728   FLAG_Z |= res;
16729 
16730   m68ki_write_8(ea, res);
16731 }
16732 
16733 
m68k_op_negx_8_al(void)16734 static void m68k_op_negx_8_al(void)
16735 {
16736   uint ea = EA_AL_8();
16737   uint src = m68ki_read_8(ea);
16738   uint res = 0 - src - XFLAG_AS_1();
16739 
16740   FLAG_N = NFLAG_8(res);
16741   FLAG_X = FLAG_C = CFLAG_8(res);
16742   FLAG_V = src & res;
16743 
16744   res = MASK_OUT_ABOVE_8(res);
16745   FLAG_Z |= res;
16746 
16747   m68ki_write_8(ea, res);
16748 }
16749 
16750 
m68k_op_negx_16_d(void)16751 static void m68k_op_negx_16_d(void)
16752 {
16753   uint* r_dst = &DY;
16754   uint res = 0 - MASK_OUT_ABOVE_16(*r_dst) - XFLAG_AS_1();
16755 
16756   FLAG_N = NFLAG_16(res);
16757   FLAG_X = FLAG_C = CFLAG_16(res);
16758   FLAG_V = (*r_dst & res)>>8;
16759 
16760   res = MASK_OUT_ABOVE_16(res);
16761   FLAG_Z |= res;
16762 
16763   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
16764 }
16765 
16766 
m68k_op_negx_16_ai(void)16767 static void m68k_op_negx_16_ai(void)
16768 {
16769   uint ea  = EA_AY_AI_16();
16770   uint src = m68ki_read_16(ea);
16771   uint res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1();
16772 
16773   FLAG_N = NFLAG_16(res);
16774   FLAG_X = FLAG_C = CFLAG_16(res);
16775   FLAG_V = (src & res)>>8;
16776 
16777   res = MASK_OUT_ABOVE_16(res);
16778   FLAG_Z |= res;
16779 
16780   m68ki_write_16(ea, res);
16781 }
16782 
16783 
m68k_op_negx_16_pi(void)16784 static void m68k_op_negx_16_pi(void)
16785 {
16786   uint ea  = EA_AY_PI_16();
16787   uint src = m68ki_read_16(ea);
16788   uint res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1();
16789 
16790   FLAG_N = NFLAG_16(res);
16791   FLAG_X = FLAG_C = CFLAG_16(res);
16792   FLAG_V = (src & res)>>8;
16793 
16794   res = MASK_OUT_ABOVE_16(res);
16795   FLAG_Z |= res;
16796 
16797   m68ki_write_16(ea, res);
16798 }
16799 
16800 
m68k_op_negx_16_pd(void)16801 static void m68k_op_negx_16_pd(void)
16802 {
16803   uint ea  = EA_AY_PD_16();
16804   uint src = m68ki_read_16(ea);
16805   uint res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1();
16806 
16807   FLAG_N = NFLAG_16(res);
16808   FLAG_X = FLAG_C = CFLAG_16(res);
16809   FLAG_V = (src & res)>>8;
16810 
16811   res = MASK_OUT_ABOVE_16(res);
16812   FLAG_Z |= res;
16813 
16814   m68ki_write_16(ea, res);
16815 }
16816 
16817 
m68k_op_negx_16_di(void)16818 static void m68k_op_negx_16_di(void)
16819 {
16820   uint ea  = EA_AY_DI_16();
16821   uint src = m68ki_read_16(ea);
16822   uint res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1();
16823 
16824   FLAG_N = NFLAG_16(res);
16825   FLAG_X = FLAG_C = CFLAG_16(res);
16826   FLAG_V = (src & res)>>8;
16827 
16828   res = MASK_OUT_ABOVE_16(res);
16829   FLAG_Z |= res;
16830 
16831   m68ki_write_16(ea, res);
16832 }
16833 
16834 
m68k_op_negx_16_ix(void)16835 static void m68k_op_negx_16_ix(void)
16836 {
16837   uint ea  = EA_AY_IX_16();
16838   uint src = m68ki_read_16(ea);
16839   uint res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1();
16840 
16841   FLAG_N = NFLAG_16(res);
16842   FLAG_X = FLAG_C = CFLAG_16(res);
16843   FLAG_V = (src & res)>>8;
16844 
16845   res = MASK_OUT_ABOVE_16(res);
16846   FLAG_Z |= res;
16847 
16848   m68ki_write_16(ea, res);
16849 }
16850 
16851 
m68k_op_negx_16_aw(void)16852 static void m68k_op_negx_16_aw(void)
16853 {
16854   uint ea  = EA_AW_16();
16855   uint src = m68ki_read_16(ea);
16856   uint res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1();
16857 
16858   FLAG_N = NFLAG_16(res);
16859   FLAG_X = FLAG_C = CFLAG_16(res);
16860   FLAG_V = (src & res)>>8;
16861 
16862   res = MASK_OUT_ABOVE_16(res);
16863   FLAG_Z |= res;
16864 
16865   m68ki_write_16(ea, res);
16866 }
16867 
16868 
m68k_op_negx_16_al(void)16869 static void m68k_op_negx_16_al(void)
16870 {
16871   uint ea  = EA_AL_16();
16872   uint src = m68ki_read_16(ea);
16873   uint res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1();
16874 
16875   FLAG_N = NFLAG_16(res);
16876   FLAG_X = FLAG_C = CFLAG_16(res);
16877   FLAG_V = (src & res)>>8;
16878 
16879   res = MASK_OUT_ABOVE_16(res);
16880   FLAG_Z |= res;
16881 
16882   m68ki_write_16(ea, res);
16883 }
16884 
16885 
m68k_op_negx_32_d(void)16886 static void m68k_op_negx_32_d(void)
16887 {
16888   uint* r_dst = &DY;
16889   uint res = 0 - MASK_OUT_ABOVE_32(*r_dst) - XFLAG_AS_1();
16890 
16891   FLAG_N = NFLAG_32(res);
16892   FLAG_X = FLAG_C = CFLAG_SUB_32(*r_dst, 0, res);
16893   FLAG_V = (*r_dst & res)>>24;
16894 
16895   res = MASK_OUT_ABOVE_32(res);
16896   FLAG_Z |= res;
16897 
16898   *r_dst = res;
16899 }
16900 
16901 
m68k_op_negx_32_ai(void)16902 static void m68k_op_negx_32_ai(void)
16903 {
16904   uint ea  = EA_AY_AI_32();
16905   uint src = m68ki_read_32(ea);
16906   uint res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1();
16907 
16908   FLAG_N = NFLAG_32(res);
16909   FLAG_X = FLAG_C = CFLAG_SUB_32(src, 0, res);
16910   FLAG_V = (src & res)>>24;
16911 
16912   res = MASK_OUT_ABOVE_32(res);
16913   FLAG_Z |= res;
16914 
16915   m68ki_write_32(ea, res);
16916 }
16917 
16918 
m68k_op_negx_32_pi(void)16919 static void m68k_op_negx_32_pi(void)
16920 {
16921   uint ea  = EA_AY_PI_32();
16922   uint src = m68ki_read_32(ea);
16923   uint res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1();
16924 
16925   FLAG_N = NFLAG_32(res);
16926   FLAG_X = FLAG_C = CFLAG_SUB_32(src, 0, res);
16927   FLAG_V = (src & res)>>24;
16928 
16929   res = MASK_OUT_ABOVE_32(res);
16930   FLAG_Z |= res;
16931 
16932   m68ki_write_32(ea, res);
16933 }
16934 
16935 
m68k_op_negx_32_pd(void)16936 static void m68k_op_negx_32_pd(void)
16937 {
16938   uint ea  = EA_AY_PD_32();
16939   uint src = m68ki_read_32(ea);
16940   uint res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1();
16941 
16942   FLAG_N = NFLAG_32(res);
16943   FLAG_X = FLAG_C = CFLAG_SUB_32(src, 0, res);
16944   FLAG_V = (src & res)>>24;
16945 
16946   res = MASK_OUT_ABOVE_32(res);
16947   FLAG_Z |= res;
16948 
16949   m68ki_write_32(ea, res);
16950 }
16951 
16952 
m68k_op_negx_32_di(void)16953 static void m68k_op_negx_32_di(void)
16954 {
16955   uint ea  = EA_AY_DI_32();
16956   uint src = m68ki_read_32(ea);
16957   uint res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1();
16958 
16959   FLAG_N = NFLAG_32(res);
16960   FLAG_X = FLAG_C = CFLAG_SUB_32(src, 0, res);
16961   FLAG_V = (src & res)>>24;
16962 
16963   res = MASK_OUT_ABOVE_32(res);
16964   FLAG_Z |= res;
16965 
16966   m68ki_write_32(ea, res);
16967 }
16968 
16969 
m68k_op_negx_32_ix(void)16970 static void m68k_op_negx_32_ix(void)
16971 {
16972   uint ea  = EA_AY_IX_32();
16973   uint src = m68ki_read_32(ea);
16974   uint res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1();
16975 
16976   FLAG_N = NFLAG_32(res);
16977   FLAG_X = FLAG_C = CFLAG_SUB_32(src, 0, res);
16978   FLAG_V = (src & res)>>24;
16979 
16980   res = MASK_OUT_ABOVE_32(res);
16981   FLAG_Z |= res;
16982 
16983   m68ki_write_32(ea, res);
16984 }
16985 
16986 
m68k_op_negx_32_aw(void)16987 static void m68k_op_negx_32_aw(void)
16988 {
16989   uint ea  = EA_AW_32();
16990   uint src = m68ki_read_32(ea);
16991   uint res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1();
16992 
16993   FLAG_N = NFLAG_32(res);
16994   FLAG_X = FLAG_C = CFLAG_SUB_32(src, 0, res);
16995   FLAG_V = (src & res)>>24;
16996 
16997   res = MASK_OUT_ABOVE_32(res);
16998   FLAG_Z |= res;
16999 
17000   m68ki_write_32(ea, res);
17001 }
17002 
17003 
m68k_op_negx_32_al(void)17004 static void m68k_op_negx_32_al(void)
17005 {
17006   uint ea  = EA_AL_32();
17007   uint src = m68ki_read_32(ea);
17008   uint res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1();
17009 
17010   FLAG_N = NFLAG_32(res);
17011   FLAG_X = FLAG_C = CFLAG_SUB_32(src, 0, res);
17012   FLAG_V = (src & res)>>24;
17013 
17014   res = MASK_OUT_ABOVE_32(res);
17015   FLAG_Z |= res;
17016 
17017   m68ki_write_32(ea, res);
17018 }
17019 
17020 
m68k_op_nop(void)17021 static void m68k_op_nop(void)
17022 {
17023 }
17024 
17025 
m68k_op_not_8_d(void)17026 static void m68k_op_not_8_d(void)
17027 {
17028   uint* r_dst = &DY;
17029   uint res = MASK_OUT_ABOVE_8(~*r_dst);
17030 
17031   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
17032 
17033   FLAG_N = NFLAG_8(res);
17034   FLAG_Z = res;
17035   FLAG_C = CFLAG_CLEAR;
17036   FLAG_V = VFLAG_CLEAR;
17037 }
17038 
17039 
m68k_op_not_8_ai(void)17040 static void m68k_op_not_8_ai(void)
17041 {
17042   uint ea = EA_AY_AI_8();
17043   uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea));
17044 
17045   m68ki_write_8(ea, res);
17046 
17047   FLAG_N = NFLAG_8(res);
17048   FLAG_Z = res;
17049   FLAG_C = CFLAG_CLEAR;
17050   FLAG_V = VFLAG_CLEAR;
17051 }
17052 
17053 
m68k_op_not_8_pi(void)17054 static void m68k_op_not_8_pi(void)
17055 {
17056   uint ea = EA_AY_PI_8();
17057   uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea));
17058 
17059   m68ki_write_8(ea, res);
17060 
17061   FLAG_N = NFLAG_8(res);
17062   FLAG_Z = res;
17063   FLAG_C = CFLAG_CLEAR;
17064   FLAG_V = VFLAG_CLEAR;
17065 }
17066 
17067 
m68k_op_not_8_pi7(void)17068 static void m68k_op_not_8_pi7(void)
17069 {
17070   uint ea = EA_A7_PI_8();
17071   uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea));
17072 
17073   m68ki_write_8(ea, res);
17074 
17075   FLAG_N = NFLAG_8(res);
17076   FLAG_Z = res;
17077   FLAG_C = CFLAG_CLEAR;
17078   FLAG_V = VFLAG_CLEAR;
17079 }
17080 
17081 
m68k_op_not_8_pd(void)17082 static void m68k_op_not_8_pd(void)
17083 {
17084   uint ea = EA_AY_PD_8();
17085   uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea));
17086 
17087   m68ki_write_8(ea, res);
17088 
17089   FLAG_N = NFLAG_8(res);
17090   FLAG_Z = res;
17091   FLAG_C = CFLAG_CLEAR;
17092   FLAG_V = VFLAG_CLEAR;
17093 }
17094 
17095 
m68k_op_not_8_pd7(void)17096 static void m68k_op_not_8_pd7(void)
17097 {
17098   uint ea = EA_A7_PD_8();
17099   uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea));
17100 
17101   m68ki_write_8(ea, res);
17102 
17103   FLAG_N = NFLAG_8(res);
17104   FLAG_Z = res;
17105   FLAG_C = CFLAG_CLEAR;
17106   FLAG_V = VFLAG_CLEAR;
17107 }
17108 
17109 
m68k_op_not_8_di(void)17110 static void m68k_op_not_8_di(void)
17111 {
17112   uint ea = EA_AY_DI_8();
17113   uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea));
17114 
17115   m68ki_write_8(ea, res);
17116 
17117   FLAG_N = NFLAG_8(res);
17118   FLAG_Z = res;
17119   FLAG_C = CFLAG_CLEAR;
17120   FLAG_V = VFLAG_CLEAR;
17121 }
17122 
17123 
m68k_op_not_8_ix(void)17124 static void m68k_op_not_8_ix(void)
17125 {
17126   uint ea = EA_AY_IX_8();
17127   uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea));
17128 
17129   m68ki_write_8(ea, res);
17130 
17131   FLAG_N = NFLAG_8(res);
17132   FLAG_Z = res;
17133   FLAG_C = CFLAG_CLEAR;
17134   FLAG_V = VFLAG_CLEAR;
17135 }
17136 
17137 
m68k_op_not_8_aw(void)17138 static void m68k_op_not_8_aw(void)
17139 {
17140   uint ea = EA_AW_8();
17141   uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea));
17142 
17143   m68ki_write_8(ea, res);
17144 
17145   FLAG_N = NFLAG_8(res);
17146   FLAG_Z = res;
17147   FLAG_C = CFLAG_CLEAR;
17148   FLAG_V = VFLAG_CLEAR;
17149 }
17150 
17151 
m68k_op_not_8_al(void)17152 static void m68k_op_not_8_al(void)
17153 {
17154   uint ea = EA_AL_8();
17155   uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea));
17156 
17157   m68ki_write_8(ea, res);
17158 
17159   FLAG_N = NFLAG_8(res);
17160   FLAG_Z = res;
17161   FLAG_C = CFLAG_CLEAR;
17162   FLAG_V = VFLAG_CLEAR;
17163 }
17164 
17165 
m68k_op_not_16_d(void)17166 static void m68k_op_not_16_d(void)
17167 {
17168   uint* r_dst = &DY;
17169   uint res = MASK_OUT_ABOVE_16(~*r_dst);
17170 
17171   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
17172 
17173   FLAG_N = NFLAG_16(res);
17174   FLAG_Z = res;
17175   FLAG_C = CFLAG_CLEAR;
17176   FLAG_V = VFLAG_CLEAR;
17177 }
17178 
17179 
m68k_op_not_16_ai(void)17180 static void m68k_op_not_16_ai(void)
17181 {
17182   uint ea = EA_AY_AI_16();
17183   uint res = MASK_OUT_ABOVE_16(~m68ki_read_16(ea));
17184 
17185   m68ki_write_16(ea, res);
17186 
17187   FLAG_N = NFLAG_16(res);
17188   FLAG_Z = res;
17189   FLAG_C = CFLAG_CLEAR;
17190   FLAG_V = VFLAG_CLEAR;
17191 }
17192 
17193 
m68k_op_not_16_pi(void)17194 static void m68k_op_not_16_pi(void)
17195 {
17196   uint ea = EA_AY_PI_16();
17197   uint res = MASK_OUT_ABOVE_16(~m68ki_read_16(ea));
17198 
17199   m68ki_write_16(ea, res);
17200 
17201   FLAG_N = NFLAG_16(res);
17202   FLAG_Z = res;
17203   FLAG_C = CFLAG_CLEAR;
17204   FLAG_V = VFLAG_CLEAR;
17205 }
17206 
17207 
m68k_op_not_16_pd(void)17208 static void m68k_op_not_16_pd(void)
17209 {
17210   uint ea = EA_AY_PD_16();
17211   uint res = MASK_OUT_ABOVE_16(~m68ki_read_16(ea));
17212 
17213   m68ki_write_16(ea, res);
17214 
17215   FLAG_N = NFLAG_16(res);
17216   FLAG_Z = res;
17217   FLAG_C = CFLAG_CLEAR;
17218   FLAG_V = VFLAG_CLEAR;
17219 }
17220 
17221 
m68k_op_not_16_di(void)17222 static void m68k_op_not_16_di(void)
17223 {
17224   uint ea = EA_AY_DI_16();
17225   uint res = MASK_OUT_ABOVE_16(~m68ki_read_16(ea));
17226 
17227   m68ki_write_16(ea, res);
17228 
17229   FLAG_N = NFLAG_16(res);
17230   FLAG_Z = res;
17231   FLAG_C = CFLAG_CLEAR;
17232   FLAG_V = VFLAG_CLEAR;
17233 }
17234 
17235 
m68k_op_not_16_ix(void)17236 static void m68k_op_not_16_ix(void)
17237 {
17238   uint ea = EA_AY_IX_16();
17239   uint res = MASK_OUT_ABOVE_16(~m68ki_read_16(ea));
17240 
17241   m68ki_write_16(ea, res);
17242 
17243   FLAG_N = NFLAG_16(res);
17244   FLAG_Z = res;
17245   FLAG_C = CFLAG_CLEAR;
17246   FLAG_V = VFLAG_CLEAR;
17247 }
17248 
17249 
m68k_op_not_16_aw(void)17250 static void m68k_op_not_16_aw(void)
17251 {
17252   uint ea = EA_AW_16();
17253   uint res = MASK_OUT_ABOVE_16(~m68ki_read_16(ea));
17254 
17255   m68ki_write_16(ea, res);
17256 
17257   FLAG_N = NFLAG_16(res);
17258   FLAG_Z = res;
17259   FLAG_C = CFLAG_CLEAR;
17260   FLAG_V = VFLAG_CLEAR;
17261 }
17262 
17263 
m68k_op_not_16_al(void)17264 static void m68k_op_not_16_al(void)
17265 {
17266   uint ea = EA_AL_16();
17267   uint res = MASK_OUT_ABOVE_16(~m68ki_read_16(ea));
17268 
17269   m68ki_write_16(ea, res);
17270 
17271   FLAG_N = NFLAG_16(res);
17272   FLAG_Z = res;
17273   FLAG_C = CFLAG_CLEAR;
17274   FLAG_V = VFLAG_CLEAR;
17275 }
17276 
17277 
m68k_op_not_32_d(void)17278 static void m68k_op_not_32_d(void)
17279 {
17280   uint* r_dst = &DY;
17281   uint res = *r_dst = MASK_OUT_ABOVE_32(~*r_dst);
17282 
17283   FLAG_N = NFLAG_32(res);
17284   FLAG_Z = res;
17285   FLAG_C = CFLAG_CLEAR;
17286   FLAG_V = VFLAG_CLEAR;
17287 }
17288 
17289 
m68k_op_not_32_ai(void)17290 static void m68k_op_not_32_ai(void)
17291 {
17292   uint ea = EA_AY_AI_32();
17293   uint res = MASK_OUT_ABOVE_32(~m68ki_read_32(ea));
17294 
17295   m68ki_write_32(ea, res);
17296 
17297   FLAG_N = NFLAG_32(res);
17298   FLAG_Z = res;
17299   FLAG_C = CFLAG_CLEAR;
17300   FLAG_V = VFLAG_CLEAR;
17301 }
17302 
17303 
m68k_op_not_32_pi(void)17304 static void m68k_op_not_32_pi(void)
17305 {
17306   uint ea = EA_AY_PI_32();
17307   uint res = MASK_OUT_ABOVE_32(~m68ki_read_32(ea));
17308 
17309   m68ki_write_32(ea, res);
17310 
17311   FLAG_N = NFLAG_32(res);
17312   FLAG_Z = res;
17313   FLAG_C = CFLAG_CLEAR;
17314   FLAG_V = VFLAG_CLEAR;
17315 }
17316 
17317 
m68k_op_not_32_pd(void)17318 static void m68k_op_not_32_pd(void)
17319 {
17320   uint ea = EA_AY_PD_32();
17321   uint res = MASK_OUT_ABOVE_32(~m68ki_read_32(ea));
17322 
17323   m68ki_write_32(ea, res);
17324 
17325   FLAG_N = NFLAG_32(res);
17326   FLAG_Z = res;
17327   FLAG_C = CFLAG_CLEAR;
17328   FLAG_V = VFLAG_CLEAR;
17329 }
17330 
17331 
m68k_op_not_32_di(void)17332 static void m68k_op_not_32_di(void)
17333 {
17334   uint ea = EA_AY_DI_32();
17335   uint res = MASK_OUT_ABOVE_32(~m68ki_read_32(ea));
17336 
17337   m68ki_write_32(ea, res);
17338 
17339   FLAG_N = NFLAG_32(res);
17340   FLAG_Z = res;
17341   FLAG_C = CFLAG_CLEAR;
17342   FLAG_V = VFLAG_CLEAR;
17343 }
17344 
17345 
m68k_op_not_32_ix(void)17346 static void m68k_op_not_32_ix(void)
17347 {
17348   uint ea = EA_AY_IX_32();
17349   uint res = MASK_OUT_ABOVE_32(~m68ki_read_32(ea));
17350 
17351   m68ki_write_32(ea, res);
17352 
17353   FLAG_N = NFLAG_32(res);
17354   FLAG_Z = res;
17355   FLAG_C = CFLAG_CLEAR;
17356   FLAG_V = VFLAG_CLEAR;
17357 }
17358 
17359 
m68k_op_not_32_aw(void)17360 static void m68k_op_not_32_aw(void)
17361 {
17362   uint ea = EA_AW_32();
17363   uint res = MASK_OUT_ABOVE_32(~m68ki_read_32(ea));
17364 
17365   m68ki_write_32(ea, res);
17366 
17367   FLAG_N = NFLAG_32(res);
17368   FLAG_Z = res;
17369   FLAG_C = CFLAG_CLEAR;
17370   FLAG_V = VFLAG_CLEAR;
17371 }
17372 
17373 
m68k_op_not_32_al(void)17374 static void m68k_op_not_32_al(void)
17375 {
17376   uint ea = EA_AL_32();
17377   uint res = MASK_OUT_ABOVE_32(~m68ki_read_32(ea));
17378 
17379   m68ki_write_32(ea, res);
17380 
17381   FLAG_N = NFLAG_32(res);
17382   FLAG_Z = res;
17383   FLAG_C = CFLAG_CLEAR;
17384   FLAG_V = VFLAG_CLEAR;
17385 }
17386 
17387 
m68k_op_or_8_er_d(void)17388 static void m68k_op_or_8_er_d(void)
17389 {
17390   uint res = MASK_OUT_ABOVE_8((DX |= MASK_OUT_ABOVE_8(DY)));
17391 
17392   FLAG_N = NFLAG_8(res);
17393   FLAG_Z = res;
17394   FLAG_C = CFLAG_CLEAR;
17395   FLAG_V = VFLAG_CLEAR;
17396 }
17397 
17398 
m68k_op_or_8_er_ai(void)17399 static void m68k_op_or_8_er_ai(void)
17400 {
17401   uint res = MASK_OUT_ABOVE_8((DX |= OPER_AY_AI_8()));
17402 
17403   FLAG_N = NFLAG_8(res);
17404   FLAG_Z = res;
17405   FLAG_C = CFLAG_CLEAR;
17406   FLAG_V = VFLAG_CLEAR;
17407 }
17408 
17409 
m68k_op_or_8_er_pi(void)17410 static void m68k_op_or_8_er_pi(void)
17411 {
17412   uint res = MASK_OUT_ABOVE_8((DX |= OPER_AY_PI_8()));
17413 
17414   FLAG_N = NFLAG_8(res);
17415   FLAG_Z = res;
17416   FLAG_C = CFLAG_CLEAR;
17417   FLAG_V = VFLAG_CLEAR;
17418 }
17419 
17420 
m68k_op_or_8_er_pi7(void)17421 static void m68k_op_or_8_er_pi7(void)
17422 {
17423   uint res = MASK_OUT_ABOVE_8((DX |= OPER_A7_PI_8()));
17424 
17425   FLAG_N = NFLAG_8(res);
17426   FLAG_Z = res;
17427   FLAG_C = CFLAG_CLEAR;
17428   FLAG_V = VFLAG_CLEAR;
17429 }
17430 
17431 
m68k_op_or_8_er_pd(void)17432 static void m68k_op_or_8_er_pd(void)
17433 {
17434   uint res = MASK_OUT_ABOVE_8((DX |= OPER_AY_PD_8()));
17435 
17436   FLAG_N = NFLAG_8(res);
17437   FLAG_Z = res;
17438   FLAG_C = CFLAG_CLEAR;
17439   FLAG_V = VFLAG_CLEAR;
17440 }
17441 
17442 
m68k_op_or_8_er_pd7(void)17443 static void m68k_op_or_8_er_pd7(void)
17444 {
17445   uint res = MASK_OUT_ABOVE_8((DX |= OPER_A7_PD_8()));
17446 
17447   FLAG_N = NFLAG_8(res);
17448   FLAG_Z = res;
17449   FLAG_C = CFLAG_CLEAR;
17450   FLAG_V = VFLAG_CLEAR;
17451 }
17452 
17453 
m68k_op_or_8_er_di(void)17454 static void m68k_op_or_8_er_di(void)
17455 {
17456   uint res = MASK_OUT_ABOVE_8((DX |= OPER_AY_DI_8()));
17457 
17458   FLAG_N = NFLAG_8(res);
17459   FLAG_Z = res;
17460   FLAG_C = CFLAG_CLEAR;
17461   FLAG_V = VFLAG_CLEAR;
17462 }
17463 
17464 
m68k_op_or_8_er_ix(void)17465 static void m68k_op_or_8_er_ix(void)
17466 {
17467   uint res = MASK_OUT_ABOVE_8((DX |= OPER_AY_IX_8()));
17468 
17469   FLAG_N = NFLAG_8(res);
17470   FLAG_Z = res;
17471   FLAG_C = CFLAG_CLEAR;
17472   FLAG_V = VFLAG_CLEAR;
17473 }
17474 
17475 
m68k_op_or_8_er_aw(void)17476 static void m68k_op_or_8_er_aw(void)
17477 {
17478   uint res = MASK_OUT_ABOVE_8((DX |= OPER_AW_8()));
17479 
17480   FLAG_N = NFLAG_8(res);
17481   FLAG_Z = res;
17482   FLAG_C = CFLAG_CLEAR;
17483   FLAG_V = VFLAG_CLEAR;
17484 }
17485 
17486 
m68k_op_or_8_er_al(void)17487 static void m68k_op_or_8_er_al(void)
17488 {
17489   uint res = MASK_OUT_ABOVE_8((DX |= OPER_AL_8()));
17490 
17491   FLAG_N = NFLAG_8(res);
17492   FLAG_Z = res;
17493   FLAG_C = CFLAG_CLEAR;
17494   FLAG_V = VFLAG_CLEAR;
17495 }
17496 
17497 
m68k_op_or_8_er_pcdi(void)17498 static void m68k_op_or_8_er_pcdi(void)
17499 {
17500   uint res = MASK_OUT_ABOVE_8((DX |= OPER_PCDI_8()));
17501 
17502   FLAG_N = NFLAG_8(res);
17503   FLAG_Z = res;
17504   FLAG_C = CFLAG_CLEAR;
17505   FLAG_V = VFLAG_CLEAR;
17506 }
17507 
17508 
m68k_op_or_8_er_pcix(void)17509 static void m68k_op_or_8_er_pcix(void)
17510 {
17511   uint res = MASK_OUT_ABOVE_8((DX |= OPER_PCIX_8()));
17512 
17513   FLAG_N = NFLAG_8(res);
17514   FLAG_Z = res;
17515   FLAG_C = CFLAG_CLEAR;
17516   FLAG_V = VFLAG_CLEAR;
17517 }
17518 
17519 
m68k_op_or_8_er_i(void)17520 static void m68k_op_or_8_er_i(void)
17521 {
17522   uint res = MASK_OUT_ABOVE_8((DX |= OPER_I_8()));
17523 
17524   FLAG_N = NFLAG_8(res);
17525   FLAG_Z = res;
17526   FLAG_C = CFLAG_CLEAR;
17527   FLAG_V = VFLAG_CLEAR;
17528 }
17529 
17530 
m68k_op_or_16_er_d(void)17531 static void m68k_op_or_16_er_d(void)
17532 {
17533   uint res = MASK_OUT_ABOVE_16((DX |= MASK_OUT_ABOVE_16(DY)));
17534 
17535   FLAG_N = NFLAG_16(res);
17536   FLAG_Z = res;
17537   FLAG_C = CFLAG_CLEAR;
17538   FLAG_V = VFLAG_CLEAR;
17539 }
17540 
17541 
m68k_op_or_16_er_ai(void)17542 static void m68k_op_or_16_er_ai(void)
17543 {
17544   uint res = MASK_OUT_ABOVE_16((DX |= OPER_AY_AI_16()));
17545 
17546   FLAG_N = NFLAG_16(res);
17547   FLAG_Z = res;
17548   FLAG_C = CFLAG_CLEAR;
17549   FLAG_V = VFLAG_CLEAR;
17550 }
17551 
17552 
m68k_op_or_16_er_pi(void)17553 static void m68k_op_or_16_er_pi(void)
17554 {
17555   uint res = MASK_OUT_ABOVE_16((DX |= OPER_AY_PI_16()));
17556 
17557   FLAG_N = NFLAG_16(res);
17558   FLAG_Z = res;
17559   FLAG_C = CFLAG_CLEAR;
17560   FLAG_V = VFLAG_CLEAR;
17561 }
17562 
17563 
m68k_op_or_16_er_pd(void)17564 static void m68k_op_or_16_er_pd(void)
17565 {
17566   uint res = MASK_OUT_ABOVE_16((DX |= OPER_AY_PD_16()));
17567 
17568   FLAG_N = NFLAG_16(res);
17569   FLAG_Z = res;
17570   FLAG_C = CFLAG_CLEAR;
17571   FLAG_V = VFLAG_CLEAR;
17572 }
17573 
17574 
m68k_op_or_16_er_di(void)17575 static void m68k_op_or_16_er_di(void)
17576 {
17577   uint res = MASK_OUT_ABOVE_16((DX |= OPER_AY_DI_16()));
17578 
17579   FLAG_N = NFLAG_16(res);
17580   FLAG_Z = res;
17581   FLAG_C = CFLAG_CLEAR;
17582   FLAG_V = VFLAG_CLEAR;
17583 }
17584 
17585 
m68k_op_or_16_er_ix(void)17586 static void m68k_op_or_16_er_ix(void)
17587 {
17588   uint res = MASK_OUT_ABOVE_16((DX |= OPER_AY_IX_16()));
17589 
17590   FLAG_N = NFLAG_16(res);
17591   FLAG_Z = res;
17592   FLAG_C = CFLAG_CLEAR;
17593   FLAG_V = VFLAG_CLEAR;
17594 }
17595 
17596 
m68k_op_or_16_er_aw(void)17597 static void m68k_op_or_16_er_aw(void)
17598 {
17599   uint res = MASK_OUT_ABOVE_16((DX |= OPER_AW_16()));
17600 
17601   FLAG_N = NFLAG_16(res);
17602   FLAG_Z = res;
17603   FLAG_C = CFLAG_CLEAR;
17604   FLAG_V = VFLAG_CLEAR;
17605 }
17606 
17607 
m68k_op_or_16_er_al(void)17608 static void m68k_op_or_16_er_al(void)
17609 {
17610   uint res = MASK_OUT_ABOVE_16((DX |= OPER_AL_16()));
17611 
17612   FLAG_N = NFLAG_16(res);
17613   FLAG_Z = res;
17614   FLAG_C = CFLAG_CLEAR;
17615   FLAG_V = VFLAG_CLEAR;
17616 }
17617 
17618 
m68k_op_or_16_er_pcdi(void)17619 static void m68k_op_or_16_er_pcdi(void)
17620 {
17621   uint res = MASK_OUT_ABOVE_16((DX |= OPER_PCDI_16()));
17622 
17623   FLAG_N = NFLAG_16(res);
17624   FLAG_Z = res;
17625   FLAG_C = CFLAG_CLEAR;
17626   FLAG_V = VFLAG_CLEAR;
17627 }
17628 
17629 
m68k_op_or_16_er_pcix(void)17630 static void m68k_op_or_16_er_pcix(void)
17631 {
17632   uint res = MASK_OUT_ABOVE_16((DX |= OPER_PCIX_16()));
17633 
17634   FLAG_N = NFLAG_16(res);
17635   FLAG_Z = res;
17636   FLAG_C = CFLAG_CLEAR;
17637   FLAG_V = VFLAG_CLEAR;
17638 }
17639 
17640 
m68k_op_or_16_er_i(void)17641 static void m68k_op_or_16_er_i(void)
17642 {
17643   uint res = MASK_OUT_ABOVE_16((DX |= OPER_I_16()));
17644 
17645   FLAG_N = NFLAG_16(res);
17646   FLAG_Z = res;
17647   FLAG_C = CFLAG_CLEAR;
17648   FLAG_V = VFLAG_CLEAR;
17649 }
17650 
17651 
m68k_op_or_32_er_d(void)17652 static void m68k_op_or_32_er_d(void)
17653 {
17654   uint res = DX |= DY;
17655 
17656   FLAG_N = NFLAG_32(res);
17657   FLAG_Z = res;
17658   FLAG_C = CFLAG_CLEAR;
17659   FLAG_V = VFLAG_CLEAR;
17660 }
17661 
17662 
m68k_op_or_32_er_ai(void)17663 static void m68k_op_or_32_er_ai(void)
17664 {
17665   uint res = DX |= OPER_AY_AI_32();
17666 
17667   FLAG_N = NFLAG_32(res);
17668   FLAG_Z = res;
17669   FLAG_C = CFLAG_CLEAR;
17670   FLAG_V = VFLAG_CLEAR;
17671 }
17672 
17673 
m68k_op_or_32_er_pi(void)17674 static void m68k_op_or_32_er_pi(void)
17675 {
17676   uint res = DX |= OPER_AY_PI_32();
17677 
17678   FLAG_N = NFLAG_32(res);
17679   FLAG_Z = res;
17680   FLAG_C = CFLAG_CLEAR;
17681   FLAG_V = VFLAG_CLEAR;
17682 }
17683 
17684 
m68k_op_or_32_er_pd(void)17685 static void m68k_op_or_32_er_pd(void)
17686 {
17687   uint res = DX |= OPER_AY_PD_32();
17688 
17689   FLAG_N = NFLAG_32(res);
17690   FLAG_Z = res;
17691   FLAG_C = CFLAG_CLEAR;
17692   FLAG_V = VFLAG_CLEAR;
17693 }
17694 
17695 
m68k_op_or_32_er_di(void)17696 static void m68k_op_or_32_er_di(void)
17697 {
17698   uint res = DX |= OPER_AY_DI_32();
17699 
17700   FLAG_N = NFLAG_32(res);
17701   FLAG_Z = res;
17702   FLAG_C = CFLAG_CLEAR;
17703   FLAG_V = VFLAG_CLEAR;
17704 }
17705 
17706 
m68k_op_or_32_er_ix(void)17707 static void m68k_op_or_32_er_ix(void)
17708 {
17709   uint res = DX |= OPER_AY_IX_32();
17710 
17711   FLAG_N = NFLAG_32(res);
17712   FLAG_Z = res;
17713   FLAG_C = CFLAG_CLEAR;
17714   FLAG_V = VFLAG_CLEAR;
17715 }
17716 
17717 
m68k_op_or_32_er_aw(void)17718 static void m68k_op_or_32_er_aw(void)
17719 {
17720   uint res = DX |= OPER_AW_32();
17721 
17722   FLAG_N = NFLAG_32(res);
17723   FLAG_Z = res;
17724   FLAG_C = CFLAG_CLEAR;
17725   FLAG_V = VFLAG_CLEAR;
17726 }
17727 
17728 
m68k_op_or_32_er_al(void)17729 static void m68k_op_or_32_er_al(void)
17730 {
17731   uint res = DX |= OPER_AL_32();
17732 
17733   FLAG_N = NFLAG_32(res);
17734   FLAG_Z = res;
17735   FLAG_C = CFLAG_CLEAR;
17736   FLAG_V = VFLAG_CLEAR;
17737 }
17738 
17739 
m68k_op_or_32_er_pcdi(void)17740 static void m68k_op_or_32_er_pcdi(void)
17741 {
17742   uint res = DX |= OPER_PCDI_32();
17743 
17744   FLAG_N = NFLAG_32(res);
17745   FLAG_Z = res;
17746   FLAG_C = CFLAG_CLEAR;
17747   FLAG_V = VFLAG_CLEAR;
17748 }
17749 
17750 
m68k_op_or_32_er_pcix(void)17751 static void m68k_op_or_32_er_pcix(void)
17752 {
17753   uint res = DX |= OPER_PCIX_32();
17754 
17755   FLAG_N = NFLAG_32(res);
17756   FLAG_Z = res;
17757   FLAG_C = CFLAG_CLEAR;
17758   FLAG_V = VFLAG_CLEAR;
17759 }
17760 
17761 
m68k_op_or_32_er_i(void)17762 static void m68k_op_or_32_er_i(void)
17763 {
17764   uint res = DX |= OPER_I_32();
17765 
17766   FLAG_N = NFLAG_32(res);
17767   FLAG_Z = res;
17768   FLAG_C = CFLAG_CLEAR;
17769   FLAG_V = VFLAG_CLEAR;
17770 }
17771 
17772 
m68k_op_or_8_re_ai(void)17773 static void m68k_op_or_8_re_ai(void)
17774 {
17775   uint ea = EA_AY_AI_8();
17776   uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea));
17777 
17778   m68ki_write_8(ea, res);
17779 
17780   FLAG_N = NFLAG_8(res);
17781   FLAG_Z = res;
17782   FLAG_C = CFLAG_CLEAR;
17783   FLAG_V = VFLAG_CLEAR;
17784 }
17785 
17786 
m68k_op_or_8_re_pi(void)17787 static void m68k_op_or_8_re_pi(void)
17788 {
17789   uint ea = EA_AY_PI_8();
17790   uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea));
17791 
17792   m68ki_write_8(ea, res);
17793 
17794   FLAG_N = NFLAG_8(res);
17795   FLAG_Z = res;
17796   FLAG_C = CFLAG_CLEAR;
17797   FLAG_V = VFLAG_CLEAR;
17798 }
17799 
17800 
m68k_op_or_8_re_pi7(void)17801 static void m68k_op_or_8_re_pi7(void)
17802 {
17803   uint ea = EA_A7_PI_8();
17804   uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea));
17805 
17806   m68ki_write_8(ea, res);
17807 
17808   FLAG_N = NFLAG_8(res);
17809   FLAG_Z = res;
17810   FLAG_C = CFLAG_CLEAR;
17811   FLAG_V = VFLAG_CLEAR;
17812 }
17813 
17814 
m68k_op_or_8_re_pd(void)17815 static void m68k_op_or_8_re_pd(void)
17816 {
17817   uint ea = EA_AY_PD_8();
17818   uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea));
17819 
17820   m68ki_write_8(ea, res);
17821 
17822   FLAG_N = NFLAG_8(res);
17823   FLAG_Z = res;
17824   FLAG_C = CFLAG_CLEAR;
17825   FLAG_V = VFLAG_CLEAR;
17826 }
17827 
17828 
m68k_op_or_8_re_pd7(void)17829 static void m68k_op_or_8_re_pd7(void)
17830 {
17831   uint ea = EA_A7_PD_8();
17832   uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea));
17833 
17834   m68ki_write_8(ea, res);
17835 
17836   FLAG_N = NFLAG_8(res);
17837   FLAG_Z = res;
17838   FLAG_C = CFLAG_CLEAR;
17839   FLAG_V = VFLAG_CLEAR;
17840 }
17841 
17842 
m68k_op_or_8_re_di(void)17843 static void m68k_op_or_8_re_di(void)
17844 {
17845   uint ea = EA_AY_DI_8();
17846   uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea));
17847 
17848   m68ki_write_8(ea, res);
17849 
17850   FLAG_N = NFLAG_8(res);
17851   FLAG_Z = res;
17852   FLAG_C = CFLAG_CLEAR;
17853   FLAG_V = VFLAG_CLEAR;
17854 }
17855 
17856 
m68k_op_or_8_re_ix(void)17857 static void m68k_op_or_8_re_ix(void)
17858 {
17859   uint ea = EA_AY_IX_8();
17860   uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea));
17861 
17862   m68ki_write_8(ea, res);
17863 
17864   FLAG_N = NFLAG_8(res);
17865   FLAG_Z = res;
17866   FLAG_C = CFLAG_CLEAR;
17867   FLAG_V = VFLAG_CLEAR;
17868 }
17869 
17870 
m68k_op_or_8_re_aw(void)17871 static void m68k_op_or_8_re_aw(void)
17872 {
17873   uint ea = EA_AW_8();
17874   uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea));
17875 
17876   m68ki_write_8(ea, res);
17877 
17878   FLAG_N = NFLAG_8(res);
17879   FLAG_Z = res;
17880   FLAG_C = CFLAG_CLEAR;
17881   FLAG_V = VFLAG_CLEAR;
17882 }
17883 
17884 
m68k_op_or_8_re_al(void)17885 static void m68k_op_or_8_re_al(void)
17886 {
17887   uint ea = EA_AL_8();
17888   uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea));
17889 
17890   m68ki_write_8(ea, res);
17891 
17892   FLAG_N = NFLAG_8(res);
17893   FLAG_Z = res;
17894   FLAG_C = CFLAG_CLEAR;
17895   FLAG_V = VFLAG_CLEAR;
17896 }
17897 
17898 
m68k_op_or_16_re_ai(void)17899 static void m68k_op_or_16_re_ai(void)
17900 {
17901   uint ea = EA_AY_AI_16();
17902   uint res = MASK_OUT_ABOVE_16(DX | m68ki_read_16(ea));
17903 
17904   m68ki_write_16(ea, res);
17905 
17906   FLAG_N = NFLAG_16(res);
17907   FLAG_Z = res;
17908   FLAG_C = CFLAG_CLEAR;
17909   FLAG_V = VFLAG_CLEAR;
17910 }
17911 
17912 
m68k_op_or_16_re_pi(void)17913 static void m68k_op_or_16_re_pi(void)
17914 {
17915   uint ea = EA_AY_PI_16();
17916   uint res = MASK_OUT_ABOVE_16(DX | m68ki_read_16(ea));
17917 
17918   m68ki_write_16(ea, res);
17919 
17920   FLAG_N = NFLAG_16(res);
17921   FLAG_Z = res;
17922   FLAG_C = CFLAG_CLEAR;
17923   FLAG_V = VFLAG_CLEAR;
17924 }
17925 
17926 
m68k_op_or_16_re_pd(void)17927 static void m68k_op_or_16_re_pd(void)
17928 {
17929   uint ea = EA_AY_PD_16();
17930   uint res = MASK_OUT_ABOVE_16(DX | m68ki_read_16(ea));
17931 
17932   m68ki_write_16(ea, res);
17933 
17934   FLAG_N = NFLAG_16(res);
17935   FLAG_Z = res;
17936   FLAG_C = CFLAG_CLEAR;
17937   FLAG_V = VFLAG_CLEAR;
17938 }
17939 
17940 
m68k_op_or_16_re_di(void)17941 static void m68k_op_or_16_re_di(void)
17942 {
17943   uint ea = EA_AY_DI_16();
17944   uint res = MASK_OUT_ABOVE_16(DX | m68ki_read_16(ea));
17945 
17946   m68ki_write_16(ea, res);
17947 
17948   FLAG_N = NFLAG_16(res);
17949   FLAG_Z = res;
17950   FLAG_C = CFLAG_CLEAR;
17951   FLAG_V = VFLAG_CLEAR;
17952 }
17953 
17954 
m68k_op_or_16_re_ix(void)17955 static void m68k_op_or_16_re_ix(void)
17956 {
17957   uint ea = EA_AY_IX_16();
17958   uint res = MASK_OUT_ABOVE_16(DX | m68ki_read_16(ea));
17959 
17960   m68ki_write_16(ea, res);
17961 
17962   FLAG_N = NFLAG_16(res);
17963   FLAG_Z = res;
17964   FLAG_C = CFLAG_CLEAR;
17965   FLAG_V = VFLAG_CLEAR;
17966 }
17967 
17968 
m68k_op_or_16_re_aw(void)17969 static void m68k_op_or_16_re_aw(void)
17970 {
17971   uint ea = EA_AW_16();
17972   uint res = MASK_OUT_ABOVE_16(DX | m68ki_read_16(ea));
17973 
17974   m68ki_write_16(ea, res);
17975 
17976   FLAG_N = NFLAG_16(res);
17977   FLAG_Z = res;
17978   FLAG_C = CFLAG_CLEAR;
17979   FLAG_V = VFLAG_CLEAR;
17980 }
17981 
17982 
m68k_op_or_16_re_al(void)17983 static void m68k_op_or_16_re_al(void)
17984 {
17985   uint ea = EA_AL_16();
17986   uint res = MASK_OUT_ABOVE_16(DX | m68ki_read_16(ea));
17987 
17988   m68ki_write_16(ea, res);
17989 
17990   FLAG_N = NFLAG_16(res);
17991   FLAG_Z = res;
17992   FLAG_C = CFLAG_CLEAR;
17993   FLAG_V = VFLAG_CLEAR;
17994 }
17995 
17996 
m68k_op_or_32_re_ai(void)17997 static void m68k_op_or_32_re_ai(void)
17998 {
17999   uint ea = EA_AY_AI_32();
18000   uint res = DX | m68ki_read_32(ea);
18001 
18002   m68ki_write_32(ea, res);
18003 
18004   FLAG_N = NFLAG_32(res);
18005   FLAG_Z = res;
18006   FLAG_C = CFLAG_CLEAR;
18007   FLAG_V = VFLAG_CLEAR;
18008 }
18009 
18010 
m68k_op_or_32_re_pi(void)18011 static void m68k_op_or_32_re_pi(void)
18012 {
18013   uint ea = EA_AY_PI_32();
18014   uint res = DX | m68ki_read_32(ea);
18015 
18016   m68ki_write_32(ea, res);
18017 
18018   FLAG_N = NFLAG_32(res);
18019   FLAG_Z = res;
18020   FLAG_C = CFLAG_CLEAR;
18021   FLAG_V = VFLAG_CLEAR;
18022 }
18023 
18024 
m68k_op_or_32_re_pd(void)18025 static void m68k_op_or_32_re_pd(void)
18026 {
18027   uint ea = EA_AY_PD_32();
18028   uint res = DX | m68ki_read_32(ea);
18029 
18030   m68ki_write_32(ea, res);
18031 
18032   FLAG_N = NFLAG_32(res);
18033   FLAG_Z = res;
18034   FLAG_C = CFLAG_CLEAR;
18035   FLAG_V = VFLAG_CLEAR;
18036 }
18037 
18038 
m68k_op_or_32_re_di(void)18039 static void m68k_op_or_32_re_di(void)
18040 {
18041   uint ea = EA_AY_DI_32();
18042   uint res = DX | m68ki_read_32(ea);
18043 
18044   m68ki_write_32(ea, res);
18045 
18046   FLAG_N = NFLAG_32(res);
18047   FLAG_Z = res;
18048   FLAG_C = CFLAG_CLEAR;
18049   FLAG_V = VFLAG_CLEAR;
18050 }
18051 
18052 
m68k_op_or_32_re_ix(void)18053 static void m68k_op_or_32_re_ix(void)
18054 {
18055   uint ea = EA_AY_IX_32();
18056   uint res = DX | m68ki_read_32(ea);
18057 
18058   m68ki_write_32(ea, res);
18059 
18060   FLAG_N = NFLAG_32(res);
18061   FLAG_Z = res;
18062   FLAG_C = CFLAG_CLEAR;
18063   FLAG_V = VFLAG_CLEAR;
18064 }
18065 
18066 
m68k_op_or_32_re_aw(void)18067 static void m68k_op_or_32_re_aw(void)
18068 {
18069   uint ea = EA_AW_32();
18070   uint res = DX | m68ki_read_32(ea);
18071 
18072   m68ki_write_32(ea, res);
18073 
18074   FLAG_N = NFLAG_32(res);
18075   FLAG_Z = res;
18076   FLAG_C = CFLAG_CLEAR;
18077   FLAG_V = VFLAG_CLEAR;
18078 }
18079 
18080 
m68k_op_or_32_re_al(void)18081 static void m68k_op_or_32_re_al(void)
18082 {
18083   uint ea = EA_AL_32();
18084   uint res = DX | m68ki_read_32(ea);
18085 
18086   m68ki_write_32(ea, res);
18087 
18088   FLAG_N = NFLAG_32(res);
18089   FLAG_Z = res;
18090   FLAG_C = CFLAG_CLEAR;
18091   FLAG_V = VFLAG_CLEAR;
18092 }
18093 
18094 
m68k_op_ori_8_d(void)18095 static void m68k_op_ori_8_d(void)
18096 {
18097   uint res = MASK_OUT_ABOVE_8((DY |= OPER_I_8()));
18098 
18099   FLAG_N = NFLAG_8(res);
18100   FLAG_Z = res;
18101   FLAG_C = CFLAG_CLEAR;
18102   FLAG_V = VFLAG_CLEAR;
18103 }
18104 
18105 
m68k_op_ori_8_ai(void)18106 static void m68k_op_ori_8_ai(void)
18107 {
18108   uint src = OPER_I_8();
18109   uint ea = EA_AY_AI_8();
18110   uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea));
18111 
18112   m68ki_write_8(ea, res);
18113 
18114   FLAG_N = NFLAG_8(res);
18115   FLAG_Z = res;
18116   FLAG_C = CFLAG_CLEAR;
18117   FLAG_V = VFLAG_CLEAR;
18118 }
18119 
18120 
m68k_op_ori_8_pi(void)18121 static void m68k_op_ori_8_pi(void)
18122 {
18123   uint src = OPER_I_8();
18124   uint ea = EA_AY_PI_8();
18125   uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea));
18126 
18127   m68ki_write_8(ea, res);
18128 
18129   FLAG_N = NFLAG_8(res);
18130   FLAG_Z = res;
18131   FLAG_C = CFLAG_CLEAR;
18132   FLAG_V = VFLAG_CLEAR;
18133 }
18134 
18135 
m68k_op_ori_8_pi7(void)18136 static void m68k_op_ori_8_pi7(void)
18137 {
18138   uint src = OPER_I_8();
18139   uint ea = EA_A7_PI_8();
18140   uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea));
18141 
18142   m68ki_write_8(ea, res);
18143 
18144   FLAG_N = NFLAG_8(res);
18145   FLAG_Z = res;
18146   FLAG_C = CFLAG_CLEAR;
18147   FLAG_V = VFLAG_CLEAR;
18148 }
18149 
18150 
m68k_op_ori_8_pd(void)18151 static void m68k_op_ori_8_pd(void)
18152 {
18153   uint src = OPER_I_8();
18154   uint ea = EA_AY_PD_8();
18155   uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea));
18156 
18157   m68ki_write_8(ea, res);
18158 
18159   FLAG_N = NFLAG_8(res);
18160   FLAG_Z = res;
18161   FLAG_C = CFLAG_CLEAR;
18162   FLAG_V = VFLAG_CLEAR;
18163 }
18164 
18165 
m68k_op_ori_8_pd7(void)18166 static void m68k_op_ori_8_pd7(void)
18167 {
18168   uint src = OPER_I_8();
18169   uint ea = EA_A7_PD_8();
18170   uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea));
18171 
18172   m68ki_write_8(ea, res);
18173 
18174   FLAG_N = NFLAG_8(res);
18175   FLAG_Z = res;
18176   FLAG_C = CFLAG_CLEAR;
18177   FLAG_V = VFLAG_CLEAR;
18178 }
18179 
18180 
m68k_op_ori_8_di(void)18181 static void m68k_op_ori_8_di(void)
18182 {
18183   uint src = OPER_I_8();
18184   uint ea = EA_AY_DI_8();
18185   uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea));
18186 
18187   m68ki_write_8(ea, res);
18188 
18189   FLAG_N = NFLAG_8(res);
18190   FLAG_Z = res;
18191   FLAG_C = CFLAG_CLEAR;
18192   FLAG_V = VFLAG_CLEAR;
18193 }
18194 
18195 
m68k_op_ori_8_ix(void)18196 static void m68k_op_ori_8_ix(void)
18197 {
18198   uint src = OPER_I_8();
18199   uint ea = EA_AY_IX_8();
18200   uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea));
18201 
18202   m68ki_write_8(ea, res);
18203 
18204   FLAG_N = NFLAG_8(res);
18205   FLAG_Z = res;
18206   FLAG_C = CFLAG_CLEAR;
18207   FLAG_V = VFLAG_CLEAR;
18208 }
18209 
18210 
m68k_op_ori_8_aw(void)18211 static void m68k_op_ori_8_aw(void)
18212 {
18213   uint src = OPER_I_8();
18214   uint ea = EA_AW_8();
18215   uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea));
18216 
18217   m68ki_write_8(ea, res);
18218 
18219   FLAG_N = NFLAG_8(res);
18220   FLAG_Z = res;
18221   FLAG_C = CFLAG_CLEAR;
18222   FLAG_V = VFLAG_CLEAR;
18223 }
18224 
18225 
m68k_op_ori_8_al(void)18226 static void m68k_op_ori_8_al(void)
18227 {
18228   uint src = OPER_I_8();
18229   uint ea = EA_AL_8();
18230   uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea));
18231 
18232   m68ki_write_8(ea, res);
18233 
18234   FLAG_N = NFLAG_8(res);
18235   FLAG_Z = res;
18236   FLAG_C = CFLAG_CLEAR;
18237   FLAG_V = VFLAG_CLEAR;
18238 }
18239 
18240 
m68k_op_ori_16_d(void)18241 static void m68k_op_ori_16_d(void)
18242 {
18243   uint res = MASK_OUT_ABOVE_16(DY |= OPER_I_16());
18244 
18245   FLAG_N = NFLAG_16(res);
18246   FLAG_Z = res;
18247   FLAG_C = CFLAG_CLEAR;
18248   FLAG_V = VFLAG_CLEAR;
18249 }
18250 
18251 
m68k_op_ori_16_ai(void)18252 static void m68k_op_ori_16_ai(void)
18253 {
18254   uint src = OPER_I_16();
18255   uint ea = EA_AY_AI_16();
18256   uint res = MASK_OUT_ABOVE_16(src | m68ki_read_16(ea));
18257 
18258   m68ki_write_16(ea, res);
18259 
18260   FLAG_N = NFLAG_16(res);
18261   FLAG_Z = res;
18262   FLAG_C = CFLAG_CLEAR;
18263   FLAG_V = VFLAG_CLEAR;
18264 }
18265 
18266 
m68k_op_ori_16_pi(void)18267 static void m68k_op_ori_16_pi(void)
18268 {
18269   uint src = OPER_I_16();
18270   uint ea = EA_AY_PI_16();
18271   uint res = MASK_OUT_ABOVE_16(src | m68ki_read_16(ea));
18272 
18273   m68ki_write_16(ea, res);
18274 
18275   FLAG_N = NFLAG_16(res);
18276   FLAG_Z = res;
18277   FLAG_C = CFLAG_CLEAR;
18278   FLAG_V = VFLAG_CLEAR;
18279 }
18280 
18281 
m68k_op_ori_16_pd(void)18282 static void m68k_op_ori_16_pd(void)
18283 {
18284   uint src = OPER_I_16();
18285   uint ea = EA_AY_PD_16();
18286   uint res = MASK_OUT_ABOVE_16(src | m68ki_read_16(ea));
18287 
18288   m68ki_write_16(ea, res);
18289 
18290   FLAG_N = NFLAG_16(res);
18291   FLAG_Z = res;
18292   FLAG_C = CFLAG_CLEAR;
18293   FLAG_V = VFLAG_CLEAR;
18294 }
18295 
18296 
m68k_op_ori_16_di(void)18297 static void m68k_op_ori_16_di(void)
18298 {
18299   uint src = OPER_I_16();
18300   uint ea = EA_AY_DI_16();
18301   uint res = MASK_OUT_ABOVE_16(src | m68ki_read_16(ea));
18302 
18303   m68ki_write_16(ea, res);
18304 
18305   FLAG_N = NFLAG_16(res);
18306   FLAG_Z = res;
18307   FLAG_C = CFLAG_CLEAR;
18308   FLAG_V = VFLAG_CLEAR;
18309 }
18310 
18311 
m68k_op_ori_16_ix(void)18312 static void m68k_op_ori_16_ix(void)
18313 {
18314   uint src = OPER_I_16();
18315   uint ea = EA_AY_IX_16();
18316   uint res = MASK_OUT_ABOVE_16(src | m68ki_read_16(ea));
18317 
18318   m68ki_write_16(ea, res);
18319 
18320   FLAG_N = NFLAG_16(res);
18321   FLAG_Z = res;
18322   FLAG_C = CFLAG_CLEAR;
18323   FLAG_V = VFLAG_CLEAR;
18324 }
18325 
18326 
m68k_op_ori_16_aw(void)18327 static void m68k_op_ori_16_aw(void)
18328 {
18329   uint src = OPER_I_16();
18330   uint ea = EA_AW_16();
18331   uint res = MASK_OUT_ABOVE_16(src | m68ki_read_16(ea));
18332 
18333   m68ki_write_16(ea, res);
18334 
18335   FLAG_N = NFLAG_16(res);
18336   FLAG_Z = res;
18337   FLAG_C = CFLAG_CLEAR;
18338   FLAG_V = VFLAG_CLEAR;
18339 }
18340 
18341 
m68k_op_ori_16_al(void)18342 static void m68k_op_ori_16_al(void)
18343 {
18344   uint src = OPER_I_16();
18345   uint ea = EA_AL_16();
18346   uint res = MASK_OUT_ABOVE_16(src | m68ki_read_16(ea));
18347 
18348   m68ki_write_16(ea, res);
18349 
18350   FLAG_N = NFLAG_16(res);
18351   FLAG_Z = res;
18352   FLAG_C = CFLAG_CLEAR;
18353   FLAG_V = VFLAG_CLEAR;
18354 }
18355 
18356 
m68k_op_ori_32_d(void)18357 static void m68k_op_ori_32_d(void)
18358 {
18359   uint res = DY |= OPER_I_32();
18360 
18361   FLAG_N = NFLAG_32(res);
18362   FLAG_Z = res;
18363   FLAG_C = CFLAG_CLEAR;
18364   FLAG_V = VFLAG_CLEAR;
18365 }
18366 
18367 
m68k_op_ori_32_ai(void)18368 static void m68k_op_ori_32_ai(void)
18369 {
18370   uint src = OPER_I_32();
18371   uint ea = EA_AY_AI_32();
18372   uint res = src | m68ki_read_32(ea);
18373 
18374   m68ki_write_32(ea, res);
18375 
18376   FLAG_N = NFLAG_32(res);
18377   FLAG_Z = res;
18378   FLAG_C = CFLAG_CLEAR;
18379   FLAG_V = VFLAG_CLEAR;
18380 }
18381 
18382 
m68k_op_ori_32_pi(void)18383 static void m68k_op_ori_32_pi(void)
18384 {
18385   uint src = OPER_I_32();
18386   uint ea = EA_AY_PI_32();
18387   uint res = src | m68ki_read_32(ea);
18388 
18389   m68ki_write_32(ea, res);
18390 
18391   FLAG_N = NFLAG_32(res);
18392   FLAG_Z = res;
18393   FLAG_C = CFLAG_CLEAR;
18394   FLAG_V = VFLAG_CLEAR;
18395 }
18396 
18397 
m68k_op_ori_32_pd(void)18398 static void m68k_op_ori_32_pd(void)
18399 {
18400   uint src = OPER_I_32();
18401   uint ea = EA_AY_PD_32();
18402   uint res = src | m68ki_read_32(ea);
18403 
18404   m68ki_write_32(ea, res);
18405 
18406   FLAG_N = NFLAG_32(res);
18407   FLAG_Z = res;
18408   FLAG_C = CFLAG_CLEAR;
18409   FLAG_V = VFLAG_CLEAR;
18410 }
18411 
18412 
m68k_op_ori_32_di(void)18413 static void m68k_op_ori_32_di(void)
18414 {
18415   uint src = OPER_I_32();
18416   uint ea = EA_AY_DI_32();
18417   uint res = src | m68ki_read_32(ea);
18418 
18419   m68ki_write_32(ea, res);
18420 
18421   FLAG_N = NFLAG_32(res);
18422   FLAG_Z = res;
18423   FLAG_C = CFLAG_CLEAR;
18424   FLAG_V = VFLAG_CLEAR;
18425 }
18426 
18427 
m68k_op_ori_32_ix(void)18428 static void m68k_op_ori_32_ix(void)
18429 {
18430   uint src = OPER_I_32();
18431   uint ea = EA_AY_IX_32();
18432   uint res = src | m68ki_read_32(ea);
18433 
18434   m68ki_write_32(ea, res);
18435 
18436   FLAG_N = NFLAG_32(res);
18437   FLAG_Z = res;
18438   FLAG_C = CFLAG_CLEAR;
18439   FLAG_V = VFLAG_CLEAR;
18440 }
18441 
18442 
m68k_op_ori_32_aw(void)18443 static void m68k_op_ori_32_aw(void)
18444 {
18445   uint src = OPER_I_32();
18446   uint ea = EA_AW_32();
18447   uint res = src | m68ki_read_32(ea);
18448 
18449   m68ki_write_32(ea, res);
18450 
18451   FLAG_N = NFLAG_32(res);
18452   FLAG_Z = res;
18453   FLAG_C = CFLAG_CLEAR;
18454   FLAG_V = VFLAG_CLEAR;
18455 }
18456 
18457 
m68k_op_ori_32_al(void)18458 static void m68k_op_ori_32_al(void)
18459 {
18460   uint src = OPER_I_32();
18461   uint ea = EA_AL_32();
18462   uint res = src | m68ki_read_32(ea);
18463 
18464   m68ki_write_32(ea, res);
18465 
18466   FLAG_N = NFLAG_32(res);
18467   FLAG_Z = res;
18468   FLAG_C = CFLAG_CLEAR;
18469   FLAG_V = VFLAG_CLEAR;
18470 }
18471 
18472 
m68k_op_ori_16_toc(void)18473 static void m68k_op_ori_16_toc(void)
18474 {
18475   m68ki_set_ccr(m68ki_get_ccr() | OPER_I_16());
18476 }
18477 
18478 
m68k_op_ori_16_tos(void)18479 static void m68k_op_ori_16_tos(void)
18480 {
18481   if(FLAG_S)
18482   {
18483     uint src = OPER_I_16();
18484     m68ki_set_sr(m68ki_get_sr() | src);
18485     return;
18486   }
18487   m68ki_exception_privilege_violation();
18488 }
18489 
18490 
m68k_op_pea_32_ai(void)18491 static void m68k_op_pea_32_ai(void)
18492 {
18493   uint ea = EA_AY_AI_32();
18494 
18495   m68ki_push_32(ea);
18496 }
18497 
18498 
m68k_op_pea_32_di(void)18499 static void m68k_op_pea_32_di(void)
18500 {
18501   uint ea = EA_AY_DI_32();
18502 
18503   m68ki_push_32(ea);
18504 }
18505 
18506 
m68k_op_pea_32_ix(void)18507 static void m68k_op_pea_32_ix(void)
18508 {
18509   uint ea = EA_AY_IX_32();
18510 
18511   m68ki_push_32(ea);
18512 }
18513 
18514 
m68k_op_pea_32_aw(void)18515 static void m68k_op_pea_32_aw(void)
18516 {
18517   uint ea = EA_AW_32();
18518 
18519   m68ki_push_32(ea);
18520 }
18521 
18522 
m68k_op_pea_32_al(void)18523 static void m68k_op_pea_32_al(void)
18524 {
18525   uint ea = EA_AL_32();
18526 
18527   m68ki_push_32(ea);
18528 }
18529 
18530 
m68k_op_pea_32_pcdi(void)18531 static void m68k_op_pea_32_pcdi(void)
18532 {
18533   uint ea = EA_PCDI_32();
18534 
18535   m68ki_push_32(ea);
18536 }
18537 
18538 
m68k_op_pea_32_pcix(void)18539 static void m68k_op_pea_32_pcix(void)
18540 {
18541   uint ea = EA_PCIX_32();
18542 
18543   m68ki_push_32(ea);
18544 }
18545 
18546 
m68k_op_reset(void)18547 static void m68k_op_reset(void)
18548 {
18549   if(FLAG_S)
18550   {
18551     m68ki_output_reset()       /* auto-disable (see m68kcpu.h) */
18552     USE_CYCLES(CYC_RESET);
18553     return;
18554   }
18555   m68ki_exception_privilege_violation();
18556 }
18557 
18558 
m68k_op_ror_8_s(void)18559 static void m68k_op_ror_8_s(void)
18560 {
18561   uint* r_dst = &DY;
18562   uint orig_shift = (((REG_IR >> 9) - 1) & 7) + 1;
18563   uint shift = orig_shift & 7;
18564   uint src = MASK_OUT_ABOVE_8(*r_dst);
18565   uint res = ROR_8(src, shift);
18566 
18567   if(orig_shift != 0)
18568     USE_CYCLES(orig_shift * CYC_SHIFT);
18569 
18570   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
18571 
18572   FLAG_N = NFLAG_8(res);
18573   FLAG_Z = res;
18574   FLAG_C = src << (9-orig_shift);
18575   FLAG_V = VFLAG_CLEAR;
18576 }
18577 
18578 
m68k_op_ror_16_s(void)18579 static void m68k_op_ror_16_s(void)
18580 {
18581   uint* r_dst = &DY;
18582   uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
18583   uint src = MASK_OUT_ABOVE_16(*r_dst);
18584   uint res = ROR_16(src, shift);
18585 
18586   if(shift != 0)
18587     USE_CYCLES(shift * CYC_SHIFT);
18588 
18589   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
18590 
18591   FLAG_N = NFLAG_16(res);
18592   FLAG_Z = res;
18593   FLAG_C = src << (9-shift);
18594   FLAG_V = VFLAG_CLEAR;
18595 }
18596 
18597 
m68k_op_ror_32_s(void)18598 static void m68k_op_ror_32_s(void)
18599 {
18600   uint* r_dst = &DY;
18601   uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
18602   uint64 src = *r_dst;
18603   uint res = ROR_32(src, shift);
18604 
18605   if(shift != 0)
18606     USE_CYCLES(shift * CYC_SHIFT);
18607 
18608   *r_dst = res;
18609 
18610   FLAG_N = NFLAG_32(res);
18611   FLAG_Z = res;
18612   FLAG_C = src << (9-shift);
18613   FLAG_V = VFLAG_CLEAR;
18614 }
18615 
18616 
m68k_op_ror_8_r(void)18617 static void m68k_op_ror_8_r(void)
18618 {
18619   uint* r_dst = &DY;
18620   uint orig_shift = DX & 0x3f;
18621   uint shift = orig_shift & 7;
18622   uint src = MASK_OUT_ABOVE_8(*r_dst);
18623   uint res = ROR_8(src, shift);
18624 
18625   if(orig_shift != 0)
18626   {
18627     USE_CYCLES(orig_shift * CYC_SHIFT);
18628 
18629     *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
18630     FLAG_C = src << (8-((shift-1)&7));
18631     FLAG_N = NFLAG_8(res);
18632     FLAG_Z = res;
18633     FLAG_V = VFLAG_CLEAR;
18634     return;
18635   }
18636 
18637   FLAG_C = CFLAG_CLEAR;
18638   FLAG_N = NFLAG_8(src);
18639   FLAG_Z = src;
18640   FLAG_V = VFLAG_CLEAR;
18641 }
18642 
18643 
m68k_op_ror_16_r(void)18644 static void m68k_op_ror_16_r(void)
18645 {
18646   uint* r_dst = &DY;
18647   uint orig_shift = DX & 0x3f;
18648   uint shift = orig_shift & 15;
18649   uint src = MASK_OUT_ABOVE_16(*r_dst);
18650   uint res = ROR_16(src, shift);
18651 
18652   if(orig_shift != 0)
18653   {
18654     USE_CYCLES(orig_shift * CYC_SHIFT);
18655 
18656     *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
18657     FLAG_C = (src >> ((shift - 1) & 15)) << 8;
18658     FLAG_N = NFLAG_16(res);
18659     FLAG_Z = res;
18660     FLAG_V = VFLAG_CLEAR;
18661     return;
18662   }
18663 
18664   FLAG_C = CFLAG_CLEAR;
18665   FLAG_N = NFLAG_16(src);
18666   FLAG_Z = src;
18667   FLAG_V = VFLAG_CLEAR;
18668 }
18669 
18670 
m68k_op_ror_32_r(void)18671 static void m68k_op_ror_32_r(void)
18672 {
18673   uint* r_dst = &DY;
18674   uint orig_shift = DX & 0x3f;
18675   uint shift = orig_shift & 31;
18676   uint64 src = *r_dst;
18677   uint res = ROR_32(src, shift);
18678 
18679   if(orig_shift != 0)
18680   {
18681     USE_CYCLES(orig_shift * CYC_SHIFT);
18682 
18683     *r_dst = res;
18684     FLAG_C = (src >> ((shift - 1) & 31)) << 8;
18685     FLAG_N = NFLAG_32(res);
18686     FLAG_Z = res;
18687     FLAG_V = VFLAG_CLEAR;
18688     return;
18689   }
18690 
18691   FLAG_C = CFLAG_CLEAR;
18692   FLAG_N = NFLAG_32(src);
18693   FLAG_Z = src;
18694   FLAG_V = VFLAG_CLEAR;
18695 }
18696 
18697 
m68k_op_ror_16_ai(void)18698 static void m68k_op_ror_16_ai(void)
18699 {
18700   uint ea = EA_AY_AI_16();
18701   uint src = m68ki_read_16(ea);
18702   uint res = ROR_16(src, 1);
18703 
18704   m68ki_write_16(ea, res);
18705 
18706   FLAG_N = NFLAG_16(res);
18707   FLAG_Z = res;
18708   FLAG_C = src << 8;
18709   FLAG_V = VFLAG_CLEAR;
18710 }
18711 
18712 
m68k_op_ror_16_pi(void)18713 static void m68k_op_ror_16_pi(void)
18714 {
18715   uint ea = EA_AY_PI_16();
18716   uint src = m68ki_read_16(ea);
18717   uint res = ROR_16(src, 1);
18718 
18719   m68ki_write_16(ea, res);
18720 
18721   FLAG_N = NFLAG_16(res);
18722   FLAG_Z = res;
18723   FLAG_C = src << 8;
18724   FLAG_V = VFLAG_CLEAR;
18725 }
18726 
18727 
m68k_op_ror_16_pd(void)18728 static void m68k_op_ror_16_pd(void)
18729 {
18730   uint ea = EA_AY_PD_16();
18731   uint src = m68ki_read_16(ea);
18732   uint res = ROR_16(src, 1);
18733 
18734   m68ki_write_16(ea, res);
18735 
18736   FLAG_N = NFLAG_16(res);
18737   FLAG_Z = res;
18738   FLAG_C = src << 8;
18739   FLAG_V = VFLAG_CLEAR;
18740 }
18741 
18742 
m68k_op_ror_16_di(void)18743 static void m68k_op_ror_16_di(void)
18744 {
18745   uint ea = EA_AY_DI_16();
18746   uint src = m68ki_read_16(ea);
18747   uint res = ROR_16(src, 1);
18748 
18749   m68ki_write_16(ea, res);
18750 
18751   FLAG_N = NFLAG_16(res);
18752   FLAG_Z = res;
18753   FLAG_C = src << 8;
18754   FLAG_V = VFLAG_CLEAR;
18755 }
18756 
18757 
m68k_op_ror_16_ix(void)18758 static void m68k_op_ror_16_ix(void)
18759 {
18760   uint ea = EA_AY_IX_16();
18761   uint src = m68ki_read_16(ea);
18762   uint res = ROR_16(src, 1);
18763 
18764   m68ki_write_16(ea, res);
18765 
18766   FLAG_N = NFLAG_16(res);
18767   FLAG_Z = res;
18768   FLAG_C = src << 8;
18769   FLAG_V = VFLAG_CLEAR;
18770 }
18771 
18772 
m68k_op_ror_16_aw(void)18773 static void m68k_op_ror_16_aw(void)
18774 {
18775   uint ea = EA_AW_16();
18776   uint src = m68ki_read_16(ea);
18777   uint res = ROR_16(src, 1);
18778 
18779   m68ki_write_16(ea, res);
18780 
18781   FLAG_N = NFLAG_16(res);
18782   FLAG_Z = res;
18783   FLAG_C = src << 8;
18784   FLAG_V = VFLAG_CLEAR;
18785 }
18786 
18787 
m68k_op_ror_16_al(void)18788 static void m68k_op_ror_16_al(void)
18789 {
18790   uint ea = EA_AL_16();
18791   uint src = m68ki_read_16(ea);
18792   uint res = ROR_16(src, 1);
18793 
18794   m68ki_write_16(ea, res);
18795 
18796   FLAG_N = NFLAG_16(res);
18797   FLAG_Z = res;
18798   FLAG_C = src << 8;
18799   FLAG_V = VFLAG_CLEAR;
18800 }
18801 
18802 
m68k_op_rol_8_s(void)18803 static void m68k_op_rol_8_s(void)
18804 {
18805   uint* r_dst = &DY;
18806   uint orig_shift = (((REG_IR >> 9) - 1) & 7) + 1;
18807   uint shift = orig_shift & 7;
18808   uint src = MASK_OUT_ABOVE_8(*r_dst);
18809   uint res = ROL_8(src, shift);
18810 
18811   if(orig_shift != 0)
18812     USE_CYCLES(orig_shift * CYC_SHIFT);
18813 
18814   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
18815 
18816   FLAG_N = NFLAG_8(res);
18817   FLAG_Z = res;
18818   FLAG_C = src << orig_shift;
18819   FLAG_V = VFLAG_CLEAR;
18820 }
18821 
18822 
m68k_op_rol_16_s(void)18823 static void m68k_op_rol_16_s(void)
18824 {
18825   uint* r_dst = &DY;
18826   uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
18827   uint src = MASK_OUT_ABOVE_16(*r_dst);
18828   uint res = ROL_16(src, shift);
18829 
18830   if(shift != 0)
18831     USE_CYCLES(shift * CYC_SHIFT);
18832 
18833   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
18834 
18835   FLAG_N = NFLAG_16(res);
18836   FLAG_Z = res;
18837   FLAG_C = src >> (8-shift);
18838   FLAG_V = VFLAG_CLEAR;
18839 }
18840 
18841 
m68k_op_rol_32_s(void)18842 static void m68k_op_rol_32_s(void)
18843 {
18844   uint* r_dst = &DY;
18845   uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
18846   uint64 src = *r_dst;
18847   uint res = ROL_32(src, shift);
18848 
18849   if(shift != 0)
18850     USE_CYCLES(shift * CYC_SHIFT);
18851 
18852   *r_dst = res;
18853 
18854   FLAG_N = NFLAG_32(res);
18855   FLAG_Z = res;
18856   FLAG_C = src >> (24-shift);
18857   FLAG_V = VFLAG_CLEAR;
18858 }
18859 
18860 
m68k_op_rol_8_r(void)18861 static void m68k_op_rol_8_r(void)
18862 {
18863   uint* r_dst = &DY;
18864   uint orig_shift = DX & 0x3f;
18865   uint shift = orig_shift & 7;
18866   uint src = MASK_OUT_ABOVE_8(*r_dst);
18867   uint res = ROL_8(src, shift);
18868 
18869   if(orig_shift != 0)
18870   {
18871     USE_CYCLES(orig_shift * CYC_SHIFT);
18872 
18873     if(shift != 0)
18874     {
18875       *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
18876       FLAG_C = src << shift;
18877       FLAG_N = NFLAG_8(res);
18878       FLAG_Z = res;
18879       FLAG_V = VFLAG_CLEAR;
18880       return;
18881     }
18882     FLAG_C = (src & 1)<<8;
18883     FLAG_N = NFLAG_8(src);
18884     FLAG_Z = src;
18885     FLAG_V = VFLAG_CLEAR;
18886     return;
18887   }
18888 
18889   FLAG_C = CFLAG_CLEAR;
18890   FLAG_N = NFLAG_8(src);
18891   FLAG_Z = src;
18892   FLAG_V = VFLAG_CLEAR;
18893 }
18894 
18895 
m68k_op_rol_16_r(void)18896 static void m68k_op_rol_16_r(void)
18897 {
18898   uint* r_dst = &DY;
18899   uint orig_shift = DX & 0x3f;
18900   uint shift = orig_shift & 15;
18901   uint src = MASK_OUT_ABOVE_16(*r_dst);
18902   uint res = MASK_OUT_ABOVE_16(ROL_16(src, shift));
18903 
18904   if(orig_shift != 0)
18905   {
18906     USE_CYCLES(orig_shift * CYC_SHIFT);
18907 
18908     if(shift != 0)
18909     {
18910       *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
18911       FLAG_C = (src << shift) >> 8;
18912       FLAG_N = NFLAG_16(res);
18913       FLAG_Z = res;
18914       FLAG_V = VFLAG_CLEAR;
18915       return;
18916     }
18917     FLAG_C = (src & 1)<<8;
18918     FLAG_N = NFLAG_16(src);
18919     FLAG_Z = src;
18920     FLAG_V = VFLAG_CLEAR;
18921     return;
18922   }
18923 
18924   FLAG_C = CFLAG_CLEAR;
18925   FLAG_N = NFLAG_16(src);
18926   FLAG_Z = src;
18927   FLAG_V = VFLAG_CLEAR;
18928 }
18929 
18930 
m68k_op_rol_32_r(void)18931 static void m68k_op_rol_32_r(void)
18932 {
18933   uint* r_dst = &DY;
18934   uint orig_shift = DX & 0x3f;
18935   uint shift = orig_shift & 31;
18936   uint64 src = *r_dst;
18937   uint res = ROL_32(src, shift);
18938 
18939   if(orig_shift != 0)
18940   {
18941     USE_CYCLES(orig_shift * CYC_SHIFT);
18942 
18943     *r_dst = res;
18944 
18945     FLAG_C = (src >> ((32 - shift) & 0x1f)) << 8;
18946     FLAG_N = NFLAG_32(res);
18947     FLAG_Z = res;
18948     FLAG_V = VFLAG_CLEAR;
18949     return;
18950   }
18951 
18952   FLAG_C = CFLAG_CLEAR;
18953   FLAG_N = NFLAG_32(src);
18954   FLAG_Z = src;
18955   FLAG_V = VFLAG_CLEAR;
18956 }
18957 
18958 
m68k_op_rol_16_ai(void)18959 static void m68k_op_rol_16_ai(void)
18960 {
18961   uint ea = EA_AY_AI_16();
18962   uint src = m68ki_read_16(ea);
18963   uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1));
18964 
18965   m68ki_write_16(ea, res);
18966 
18967   FLAG_N = NFLAG_16(res);
18968   FLAG_Z = res;
18969   FLAG_C = src >> 7;
18970   FLAG_V = VFLAG_CLEAR;
18971 }
18972 
18973 
m68k_op_rol_16_pi(void)18974 static void m68k_op_rol_16_pi(void)
18975 {
18976   uint ea = EA_AY_PI_16();
18977   uint src = m68ki_read_16(ea);
18978   uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1));
18979 
18980   m68ki_write_16(ea, res);
18981 
18982   FLAG_N = NFLAG_16(res);
18983   FLAG_Z = res;
18984   FLAG_C = src >> 7;
18985   FLAG_V = VFLAG_CLEAR;
18986 }
18987 
18988 
m68k_op_rol_16_pd(void)18989 static void m68k_op_rol_16_pd(void)
18990 {
18991   uint ea = EA_AY_PD_16();
18992   uint src = m68ki_read_16(ea);
18993   uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1));
18994 
18995   m68ki_write_16(ea, res);
18996 
18997   FLAG_N = NFLAG_16(res);
18998   FLAG_Z = res;
18999   FLAG_C = src >> 7;
19000   FLAG_V = VFLAG_CLEAR;
19001 }
19002 
19003 
m68k_op_rol_16_di(void)19004 static void m68k_op_rol_16_di(void)
19005 {
19006   uint ea = EA_AY_DI_16();
19007   uint src = m68ki_read_16(ea);
19008   uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1));
19009 
19010   m68ki_write_16(ea, res);
19011 
19012   FLAG_N = NFLAG_16(res);
19013   FLAG_Z = res;
19014   FLAG_C = src >> 7;
19015   FLAG_V = VFLAG_CLEAR;
19016 }
19017 
19018 
m68k_op_rol_16_ix(void)19019 static void m68k_op_rol_16_ix(void)
19020 {
19021   uint ea = EA_AY_IX_16();
19022   uint src = m68ki_read_16(ea);
19023   uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1));
19024 
19025   m68ki_write_16(ea, res);
19026 
19027   FLAG_N = NFLAG_16(res);
19028   FLAG_Z = res;
19029   FLAG_C = src >> 7;
19030   FLAG_V = VFLAG_CLEAR;
19031 }
19032 
19033 
m68k_op_rol_16_aw(void)19034 static void m68k_op_rol_16_aw(void)
19035 {
19036   uint ea = EA_AW_16();
19037   uint src = m68ki_read_16(ea);
19038   uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1));
19039 
19040   m68ki_write_16(ea, res);
19041 
19042   FLAG_N = NFLAG_16(res);
19043   FLAG_Z = res;
19044   FLAG_C = src >> 7;
19045   FLAG_V = VFLAG_CLEAR;
19046 }
19047 
19048 
m68k_op_rol_16_al(void)19049 static void m68k_op_rol_16_al(void)
19050 {
19051   uint ea = EA_AL_16();
19052   uint src = m68ki_read_16(ea);
19053   uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1));
19054 
19055   m68ki_write_16(ea, res);
19056 
19057   FLAG_N = NFLAG_16(res);
19058   FLAG_Z = res;
19059   FLAG_C = src >> 7;
19060   FLAG_V = VFLAG_CLEAR;
19061 }
19062 
19063 
m68k_op_roxr_8_s(void)19064 static void m68k_op_roxr_8_s(void)
19065 {
19066   uint* r_dst = &DY;
19067   uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
19068   uint src = MASK_OUT_ABOVE_8(*r_dst);
19069   uint res = ROR_9(src | (XFLAG_AS_1() << 8), shift);
19070 
19071   if(shift != 0)
19072     USE_CYCLES(shift * CYC_SHIFT);
19073 
19074   FLAG_C = FLAG_X = res;
19075   res = MASK_OUT_ABOVE_8(res);
19076 
19077   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
19078 
19079   FLAG_N = NFLAG_8(res);
19080   FLAG_Z = res;
19081   FLAG_V = VFLAG_CLEAR;
19082 }
19083 
19084 
m68k_op_roxr_16_s(void)19085 static void m68k_op_roxr_16_s(void)
19086 {
19087   uint* r_dst = &DY;
19088   uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
19089   uint src = MASK_OUT_ABOVE_16(*r_dst);
19090   uint res = ROR_17(src | (XFLAG_AS_1() << 16), shift);
19091 
19092   if(shift != 0)
19093     USE_CYCLES(shift * CYC_SHIFT);
19094 
19095   FLAG_C = FLAG_X = res >> 8;
19096   res = MASK_OUT_ABOVE_16(res);
19097 
19098   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
19099 
19100   FLAG_N = NFLAG_16(res);
19101   FLAG_Z = res;
19102   FLAG_V = VFLAG_CLEAR;
19103 }
19104 
19105 
m68k_op_roxr_32_s(void)19106 static void m68k_op_roxr_32_s(void)
19107 {
19108 #if M68K_USE_64_BIT
19109 
19110   uint*  r_dst = &DY;
19111   uint   shift = (((REG_IR >> 9) - 1) & 7) + 1;
19112   uint64 src   = *r_dst;
19113   uint64 res   = src | (((uint64)XFLAG_AS_1()) << 32);
19114 
19115   if(shift != 0)
19116     USE_CYCLES(shift * CYC_SHIFT);
19117 
19118   res = ROR_33_64(res, shift);
19119 
19120   FLAG_C = FLAG_X = res >> 24;
19121   res = MASK_OUT_ABOVE_32(res);
19122 
19123   *r_dst =  res;
19124 
19125   FLAG_N = NFLAG_32(res);
19126   FLAG_Z = res;
19127   FLAG_V = VFLAG_CLEAR;
19128 
19129 #else
19130 
19131   uint* r_dst = &DY;
19132   uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
19133   uint src = *r_dst;
19134   uint res = MASK_OUT_ABOVE_32((ROR_33(src, shift) & ~(1 << (32 - shift))) | (XFLAG_AS_1() << (32 - shift)));
19135   uint new_x_flag = src & (1 << (shift - 1));
19136 
19137   if(shift != 0)
19138     USE_CYCLES(shift * CYC_SHIFT);
19139 
19140   *r_dst = res;
19141 
19142   FLAG_C = FLAG_X = (new_x_flag != 0)<<8;
19143   FLAG_N = NFLAG_32(res);
19144   FLAG_Z = res;
19145   FLAG_V = VFLAG_CLEAR;
19146 
19147 #endif
19148 }
19149 
19150 
m68k_op_roxr_8_r(void)19151 static void m68k_op_roxr_8_r(void)
19152 {
19153   uint* r_dst = &DY;
19154   uint orig_shift = DX & 0x3f;
19155 
19156   if(orig_shift != 0)
19157   {
19158     uint shift = orig_shift % 9;
19159     uint src   = MASK_OUT_ABOVE_8(*r_dst);
19160     uint res   = ROR_9(src | (XFLAG_AS_1() << 8), shift);
19161 
19162     USE_CYCLES(orig_shift * CYC_SHIFT);
19163 
19164     FLAG_C = FLAG_X = res;
19165     res = MASK_OUT_ABOVE_8(res);
19166 
19167     *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
19168     FLAG_N = NFLAG_8(res);
19169     FLAG_Z = res;
19170     FLAG_V = VFLAG_CLEAR;
19171     return;
19172   }
19173 
19174   FLAG_C = FLAG_X;
19175   FLAG_N = NFLAG_8(*r_dst);
19176   FLAG_Z = MASK_OUT_ABOVE_8(*r_dst);
19177   FLAG_V = VFLAG_CLEAR;
19178 }
19179 
19180 
m68k_op_roxr_16_r(void)19181 static void m68k_op_roxr_16_r(void)
19182 {
19183   uint* r_dst = &DY;
19184   uint orig_shift = DX & 0x3f;
19185 
19186   if(orig_shift != 0)
19187   {
19188     uint shift = orig_shift % 17;
19189     uint src   = MASK_OUT_ABOVE_16(*r_dst);
19190     uint res   = ROR_17(src | (XFLAG_AS_1() << 16), shift);
19191 
19192     USE_CYCLES(orig_shift * CYC_SHIFT);
19193 
19194     FLAG_C = FLAG_X = res >> 8;
19195     res = MASK_OUT_ABOVE_16(res);
19196 
19197     *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
19198     FLAG_N = NFLAG_16(res);
19199     FLAG_Z = res;
19200     FLAG_V = VFLAG_CLEAR;
19201     return;
19202   }
19203 
19204   FLAG_C = FLAG_X;
19205   FLAG_N = NFLAG_16(*r_dst);
19206   FLAG_Z = MASK_OUT_ABOVE_16(*r_dst);
19207   FLAG_V = VFLAG_CLEAR;
19208 }
19209 
19210 
m68k_op_roxr_32_r(void)19211 static void m68k_op_roxr_32_r(void)
19212 {
19213 #if M68K_USE_64_BIT
19214 
19215   uint*  r_dst = &DY;
19216   uint   orig_shift = DX & 0x3f;
19217 
19218   if(orig_shift != 0)
19219   {
19220     uint   shift = orig_shift % 33;
19221     uint64 src   = *r_dst;
19222     uint64 res   = src | (((uint64)XFLAG_AS_1()) << 32);
19223 
19224     res = ROR_33_64(res, shift);
19225 
19226     USE_CYCLES(orig_shift * CYC_SHIFT);
19227 
19228     FLAG_C = FLAG_X = res >> 24;
19229     res = MASK_OUT_ABOVE_32(res);
19230 
19231     *r_dst = res;
19232     FLAG_N = NFLAG_32(res);
19233     FLAG_Z = res;
19234     FLAG_V = VFLAG_CLEAR;
19235     return;
19236   }
19237 
19238   FLAG_C = FLAG_X;
19239   FLAG_N = NFLAG_32(*r_dst);
19240   FLAG_Z = *r_dst;
19241   FLAG_V = VFLAG_CLEAR;
19242 
19243 #else
19244 
19245   uint* r_dst = &DY;
19246   uint orig_shift = DX & 0x3f;
19247   uint shift = orig_shift % 33;
19248   uint src = *r_dst;
19249   uint res = MASK_OUT_ABOVE_32((ROR_33(src, shift) & ~(1 << (32 - shift))) | (XFLAG_AS_1() << (32 - shift)));
19250   uint new_x_flag = src & (1 << (shift - 1));
19251 
19252   if(orig_shift != 0)
19253     USE_CYCLES(orig_shift * CYC_SHIFT);
19254 
19255   if(shift != 0)
19256   {
19257     *r_dst = res;
19258     FLAG_X = (new_x_flag != 0)<<8;
19259   }
19260   else
19261     res = src;
19262   FLAG_C = FLAG_X;
19263   FLAG_N = NFLAG_32(res);
19264   FLAG_Z = res;
19265   FLAG_V = VFLAG_CLEAR;
19266 
19267 #endif
19268 }
19269 
19270 
m68k_op_roxr_16_ai(void)19271 static void m68k_op_roxr_16_ai(void)
19272 {
19273   uint ea = EA_AY_AI_16();
19274   uint src = m68ki_read_16(ea);
19275   uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1);
19276 
19277   FLAG_C = FLAG_X = res >> 8;
19278   res = MASK_OUT_ABOVE_16(res);
19279 
19280   m68ki_write_16(ea, res);
19281 
19282   FLAG_N = NFLAG_16(res);
19283   FLAG_Z = res;
19284   FLAG_V = VFLAG_CLEAR;
19285 }
19286 
19287 
m68k_op_roxr_16_pi(void)19288 static void m68k_op_roxr_16_pi(void)
19289 {
19290   uint ea = EA_AY_PI_16();
19291   uint src = m68ki_read_16(ea);
19292   uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1);
19293 
19294   FLAG_C = FLAG_X = res >> 8;
19295   res = MASK_OUT_ABOVE_16(res);
19296 
19297   m68ki_write_16(ea, res);
19298 
19299   FLAG_N = NFLAG_16(res);
19300   FLAG_Z = res;
19301   FLAG_V = VFLAG_CLEAR;
19302 }
19303 
19304 
m68k_op_roxr_16_pd(void)19305 static void m68k_op_roxr_16_pd(void)
19306 {
19307   uint ea = EA_AY_PD_16();
19308   uint src = m68ki_read_16(ea);
19309   uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1);
19310 
19311   FLAG_C = FLAG_X = res >> 8;
19312   res = MASK_OUT_ABOVE_16(res);
19313 
19314   m68ki_write_16(ea, res);
19315 
19316   FLAG_N = NFLAG_16(res);
19317   FLAG_Z = res;
19318   FLAG_V = VFLAG_CLEAR;
19319 }
19320 
19321 
m68k_op_roxr_16_di(void)19322 static void m68k_op_roxr_16_di(void)
19323 {
19324   uint ea = EA_AY_DI_16();
19325   uint src = m68ki_read_16(ea);
19326   uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1);
19327 
19328   FLAG_C = FLAG_X = res >> 8;
19329   res = MASK_OUT_ABOVE_16(res);
19330 
19331   m68ki_write_16(ea, res);
19332 
19333   FLAG_N = NFLAG_16(res);
19334   FLAG_Z = res;
19335   FLAG_V = VFLAG_CLEAR;
19336 }
19337 
19338 
m68k_op_roxr_16_ix(void)19339 static void m68k_op_roxr_16_ix(void)
19340 {
19341   uint ea = EA_AY_IX_16();
19342   uint src = m68ki_read_16(ea);
19343   uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1);
19344 
19345   FLAG_C = FLAG_X = res >> 8;
19346   res = MASK_OUT_ABOVE_16(res);
19347 
19348   m68ki_write_16(ea, res);
19349 
19350   FLAG_N = NFLAG_16(res);
19351   FLAG_Z = res;
19352   FLAG_V = VFLAG_CLEAR;
19353 }
19354 
19355 
m68k_op_roxr_16_aw(void)19356 static void m68k_op_roxr_16_aw(void)
19357 {
19358   uint ea = EA_AW_16();
19359   uint src = m68ki_read_16(ea);
19360   uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1);
19361 
19362   FLAG_C = FLAG_X = res >> 8;
19363   res = MASK_OUT_ABOVE_16(res);
19364 
19365   m68ki_write_16(ea, res);
19366 
19367   FLAG_N = NFLAG_16(res);
19368   FLAG_Z = res;
19369   FLAG_V = VFLAG_CLEAR;
19370 }
19371 
19372 
m68k_op_roxr_16_al(void)19373 static void m68k_op_roxr_16_al(void)
19374 {
19375   uint ea = EA_AL_16();
19376   uint src = m68ki_read_16(ea);
19377   uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1);
19378 
19379   FLAG_C = FLAG_X = res >> 8;
19380   res = MASK_OUT_ABOVE_16(res);
19381 
19382   m68ki_write_16(ea, res);
19383 
19384   FLAG_N = NFLAG_16(res);
19385   FLAG_Z = res;
19386   FLAG_V = VFLAG_CLEAR;
19387 }
19388 
19389 
m68k_op_roxl_8_s(void)19390 static void m68k_op_roxl_8_s(void)
19391 {
19392   uint* r_dst = &DY;
19393   uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
19394   uint src = MASK_OUT_ABOVE_8(*r_dst);
19395   uint res = ROL_9(src | (XFLAG_AS_1() << 8), shift);
19396 
19397   if(shift != 0)
19398     USE_CYCLES(shift * CYC_SHIFT);
19399 
19400   FLAG_C = FLAG_X = res;
19401   res = MASK_OUT_ABOVE_8(res);
19402 
19403   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
19404 
19405   FLAG_N = NFLAG_8(res);
19406   FLAG_Z = res;
19407   FLAG_V = VFLAG_CLEAR;
19408 }
19409 
19410 
m68k_op_roxl_16_s(void)19411 static void m68k_op_roxl_16_s(void)
19412 {
19413   uint* r_dst = &DY;
19414   uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
19415   uint src = MASK_OUT_ABOVE_16(*r_dst);
19416   uint res = ROL_17(src | (XFLAG_AS_1() << 16), shift);
19417 
19418   if(shift != 0)
19419     USE_CYCLES(shift * CYC_SHIFT);
19420 
19421   FLAG_C = FLAG_X = res >> 8;
19422   res = MASK_OUT_ABOVE_16(res);
19423 
19424   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
19425 
19426   FLAG_N = NFLAG_16(res);
19427   FLAG_Z = res;
19428   FLAG_V = VFLAG_CLEAR;
19429 }
19430 
19431 
m68k_op_roxl_32_s(void)19432 static void m68k_op_roxl_32_s(void)
19433 {
19434 #if M68K_USE_64_BIT
19435 
19436   uint*  r_dst = &DY;
19437   uint   shift = (((REG_IR >> 9) - 1) & 7) + 1;
19438   uint64 src   = *r_dst;
19439   uint64 res   = src | (((uint64)XFLAG_AS_1()) << 32);
19440 
19441   if(shift != 0)
19442     USE_CYCLES(shift * CYC_SHIFT);
19443 
19444   res = ROL_33_64(res, shift);
19445 
19446   FLAG_C = FLAG_X = res >> 24;
19447   res = MASK_OUT_ABOVE_32(res);
19448 
19449   *r_dst = res;
19450 
19451   FLAG_N = NFLAG_32(res);
19452   FLAG_Z = res;
19453   FLAG_V = VFLAG_CLEAR;
19454 
19455 #else
19456 
19457   uint* r_dst = &DY;
19458   uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
19459   uint src = *r_dst;
19460   uint res = MASK_OUT_ABOVE_32((ROL_33(src, shift) & ~(1 << (shift - 1))) | (XFLAG_AS_1() << (shift - 1)));
19461   uint new_x_flag = src & (1 << (32 - shift));
19462 
19463   if(shift != 0)
19464     USE_CYCLES(shift * CYC_SHIFT);
19465 
19466   *r_dst = res;
19467 
19468   FLAG_C = FLAG_X = (new_x_flag != 0)<<8;
19469   FLAG_N = NFLAG_32(res);
19470   FLAG_Z = res;
19471   FLAG_V = VFLAG_CLEAR;
19472 
19473 #endif
19474 }
19475 
19476 
m68k_op_roxl_8_r(void)19477 static void m68k_op_roxl_8_r(void)
19478 {
19479   uint* r_dst = &DY;
19480   uint orig_shift = DX & 0x3f;
19481 
19482 
19483   if(orig_shift != 0)
19484   {
19485     uint shift = orig_shift % 9;
19486     uint src   = MASK_OUT_ABOVE_8(*r_dst);
19487     uint res   = ROL_9(src | (XFLAG_AS_1() << 8), shift);
19488 
19489     USE_CYCLES(orig_shift * CYC_SHIFT);
19490 
19491     FLAG_C = FLAG_X = res;
19492     res = MASK_OUT_ABOVE_8(res);
19493 
19494     *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
19495     FLAG_N = NFLAG_8(res);
19496     FLAG_Z = res;
19497     FLAG_V = VFLAG_CLEAR;
19498     return;
19499   }
19500 
19501   FLAG_C = FLAG_X;
19502   FLAG_N = NFLAG_8(*r_dst);
19503   FLAG_Z = MASK_OUT_ABOVE_8(*r_dst);
19504   FLAG_V = VFLAG_CLEAR;
19505 }
19506 
19507 
m68k_op_roxl_16_r(void)19508 static void m68k_op_roxl_16_r(void)
19509 {
19510   uint* r_dst = &DY;
19511   uint orig_shift = DX & 0x3f;
19512 
19513   if(orig_shift != 0)
19514   {
19515     uint shift = orig_shift % 17;
19516     uint src   = MASK_OUT_ABOVE_16(*r_dst);
19517     uint res   = ROL_17(src | (XFLAG_AS_1() << 16), shift);
19518 
19519     USE_CYCLES(orig_shift * CYC_SHIFT);
19520 
19521     FLAG_C = FLAG_X = res >> 8;
19522     res = MASK_OUT_ABOVE_16(res);
19523 
19524     *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
19525     FLAG_N = NFLAG_16(res);
19526     FLAG_Z = res;
19527     FLAG_V = VFLAG_CLEAR;
19528     return;
19529   }
19530 
19531   FLAG_C = FLAG_X;
19532   FLAG_N = NFLAG_16(*r_dst);
19533   FLAG_Z = MASK_OUT_ABOVE_16(*r_dst);
19534   FLAG_V = VFLAG_CLEAR;
19535 }
19536 
19537 
m68k_op_roxl_32_r(void)19538 static void m68k_op_roxl_32_r(void)
19539 {
19540 #if M68K_USE_64_BIT
19541 
19542   uint*  r_dst = &DY;
19543   uint   orig_shift = DX & 0x3f;
19544 
19545   if(orig_shift != 0)
19546   {
19547     uint   shift = orig_shift % 33;
19548     uint64 src   = *r_dst;
19549     uint64 res   = src | (((uint64)XFLAG_AS_1()) << 32);
19550 
19551     res = ROL_33_64(res, shift);
19552 
19553     USE_CYCLES(orig_shift * CYC_SHIFT);
19554 
19555     FLAG_C = FLAG_X = res >> 24;
19556     res = MASK_OUT_ABOVE_32(res);
19557 
19558     *r_dst = res;
19559     FLAG_N = NFLAG_32(res);
19560     FLAG_Z = res;
19561     FLAG_V = VFLAG_CLEAR;
19562     return;
19563   }
19564 
19565   FLAG_C = FLAG_X;
19566   FLAG_N = NFLAG_32(*r_dst);
19567   FLAG_Z = *r_dst;
19568   FLAG_V = VFLAG_CLEAR;
19569 
19570 #else
19571 
19572   uint* r_dst = &DY;
19573   uint orig_shift = DX & 0x3f;
19574   uint shift = orig_shift % 33;
19575   uint src = *r_dst;
19576   uint res = MASK_OUT_ABOVE_32((ROL_33(src, shift) & ~(1 << (shift - 1))) | (XFLAG_AS_1() << (shift - 1)));
19577   uint new_x_flag = src & (1 << (32 - shift));
19578 
19579   if(orig_shift != 0)
19580     USE_CYCLES(orig_shift * CYC_SHIFT);
19581 
19582   if(shift != 0)
19583   {
19584     *r_dst = res;
19585     FLAG_X = (new_x_flag != 0)<<8;
19586   }
19587   else
19588     res = src;
19589   FLAG_C = FLAG_X;
19590   FLAG_N = NFLAG_32(res);
19591   FLAG_Z = res;
19592   FLAG_V = VFLAG_CLEAR;
19593 
19594 #endif
19595 }
19596 
19597 
m68k_op_roxl_16_ai(void)19598 static void m68k_op_roxl_16_ai(void)
19599 {
19600   uint ea = EA_AY_AI_16();
19601   uint src = m68ki_read_16(ea);
19602   uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1);
19603 
19604   FLAG_C = FLAG_X = res >> 8;
19605   res = MASK_OUT_ABOVE_16(res);
19606 
19607   m68ki_write_16(ea, res);
19608 
19609   FLAG_N = NFLAG_16(res);
19610   FLAG_Z = res;
19611   FLAG_V = VFLAG_CLEAR;
19612 }
19613 
19614 
m68k_op_roxl_16_pi(void)19615 static void m68k_op_roxl_16_pi(void)
19616 {
19617   uint ea = EA_AY_PI_16();
19618   uint src = m68ki_read_16(ea);
19619   uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1);
19620 
19621   FLAG_C = FLAG_X = res >> 8;
19622   res = MASK_OUT_ABOVE_16(res);
19623 
19624   m68ki_write_16(ea, res);
19625 
19626   FLAG_N = NFLAG_16(res);
19627   FLAG_Z = res;
19628   FLAG_V = VFLAG_CLEAR;
19629 }
19630 
19631 
m68k_op_roxl_16_pd(void)19632 static void m68k_op_roxl_16_pd(void)
19633 {
19634   uint ea = EA_AY_PD_16();
19635   uint src = m68ki_read_16(ea);
19636   uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1);
19637 
19638   FLAG_C = FLAG_X = res >> 8;
19639   res = MASK_OUT_ABOVE_16(res);
19640 
19641   m68ki_write_16(ea, res);
19642 
19643   FLAG_N = NFLAG_16(res);
19644   FLAG_Z = res;
19645   FLAG_V = VFLAG_CLEAR;
19646 }
19647 
19648 
m68k_op_roxl_16_di(void)19649 static void m68k_op_roxl_16_di(void)
19650 {
19651   uint ea = EA_AY_DI_16();
19652   uint src = m68ki_read_16(ea);
19653   uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1);
19654 
19655   FLAG_C = FLAG_X = res >> 8;
19656   res = MASK_OUT_ABOVE_16(res);
19657 
19658   m68ki_write_16(ea, res);
19659 
19660   FLAG_N = NFLAG_16(res);
19661   FLAG_Z = res;
19662   FLAG_V = VFLAG_CLEAR;
19663 }
19664 
19665 
m68k_op_roxl_16_ix(void)19666 static void m68k_op_roxl_16_ix(void)
19667 {
19668   uint ea = EA_AY_IX_16();
19669   uint src = m68ki_read_16(ea);
19670   uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1);
19671 
19672   FLAG_C = FLAG_X = res >> 8;
19673   res = MASK_OUT_ABOVE_16(res);
19674 
19675   m68ki_write_16(ea, res);
19676 
19677   FLAG_N = NFLAG_16(res);
19678   FLAG_Z = res;
19679   FLAG_V = VFLAG_CLEAR;
19680 }
19681 
19682 
m68k_op_roxl_16_aw(void)19683 static void m68k_op_roxl_16_aw(void)
19684 {
19685   uint ea = EA_AW_16();
19686   uint src = m68ki_read_16(ea);
19687   uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1);
19688 
19689   FLAG_C = FLAG_X = res >> 8;
19690   res = MASK_OUT_ABOVE_16(res);
19691 
19692   m68ki_write_16(ea, res);
19693 
19694   FLAG_N = NFLAG_16(res);
19695   FLAG_Z = res;
19696   FLAG_V = VFLAG_CLEAR;
19697 }
19698 
19699 
m68k_op_roxl_16_al(void)19700 static void m68k_op_roxl_16_al(void)
19701 {
19702   uint ea = EA_AL_16();
19703   uint src = m68ki_read_16(ea);
19704   uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1);
19705 
19706   FLAG_C = FLAG_X = res >> 8;
19707   res = MASK_OUT_ABOVE_16(res);
19708 
19709   m68ki_write_16(ea, res);
19710 
19711   FLAG_N = NFLAG_16(res);
19712   FLAG_Z = res;
19713   FLAG_V = VFLAG_CLEAR;
19714 }
19715 
19716 
m68k_op_rte_32(void)19717 static void m68k_op_rte_32(void)
19718 {
19719   if(FLAG_S)
19720   {
19721     uint new_sr;
19722     uint new_pc;
19723 
19724     new_sr = m68ki_pull_16();
19725     new_pc = m68ki_pull_32();
19726     m68ki_jump(new_pc);
19727     m68ki_set_sr(new_sr);
19728 
19729 #if M68K_EMULATE_ADDRESS_ERROR
19730     CPU_INSTR_MODE = INSTRUCTION_YES;
19731     CPU_RUN_MODE = RUN_MODE_NORMAL;
19732 #endif
19733 
19734     return;
19735   }
19736   m68ki_exception_privilege_violation();
19737 }
19738 
19739 
m68k_op_rtr_32(void)19740 static void m68k_op_rtr_32(void)
19741 {
19742   m68ki_set_ccr(m68ki_pull_16());
19743   m68ki_jump(m68ki_pull_32());
19744 }
19745 
19746 
m68k_op_rts_32(void)19747 static void m68k_op_rts_32(void)
19748 {
19749   m68ki_jump(m68ki_pull_32());
19750 }
19751 
19752 
m68k_op_sbcd_8_rr(void)19753 static void m68k_op_sbcd_8_rr(void)
19754 {
19755   uint* r_dst = &DX;
19756   uint src = DY;
19757   uint dst = *r_dst;
19758   uint res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1();
19759   uint corf = 0;
19760 
19761   if(res > 0xf)
19762     corf = 6;
19763 
19764   res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src);
19765   FLAG_V = res; /* Undefined V behavior */
19766 
19767   if(res > 0xff)
19768   {
19769     res += 0xa0;
19770     FLAG_X = FLAG_C = CFLAG_SET;
19771   }
19772   else if(res < corf)
19773     FLAG_X = FLAG_C = CFLAG_SET;
19774   else
19775     FLAG_X = FLAG_C = 0;
19776 
19777   res = MASK_OUT_ABOVE_8(res-corf);
19778 
19779   FLAG_V &= ~res; /* Undefined V behavior part II */
19780   FLAG_N = NFLAG_8(res); /* Undefined N behavior */
19781   FLAG_Z |= res;
19782 
19783   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
19784 }
19785 
19786 
m68k_op_sbcd_8_mm_ax7(void)19787 static void m68k_op_sbcd_8_mm_ax7(void)
19788 {
19789   uint src = OPER_AY_PD_8();
19790   uint ea  = EA_A7_PD_8();
19791   uint dst = m68ki_read_8(ea);
19792   uint res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1();
19793   uint corf = 0;
19794 
19795   if(res > 0xf)
19796     corf = 6;
19797   res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src);
19798   FLAG_V = res; /* Undefined V behavior */
19799 
19800   if(res > 0xff)
19801   {
19802     res += 0xa0;
19803     FLAG_X = FLAG_C = CFLAG_SET;
19804   }
19805   else if(res < corf)
19806     FLAG_X = FLAG_C = CFLAG_SET;
19807   else
19808     FLAG_X = FLAG_C = 0;
19809 
19810   res = MASK_OUT_ABOVE_8(res-corf);
19811 
19812   FLAG_V &= ~res; /* Undefined V behavior part II */
19813   FLAG_N = NFLAG_8(res); /* Undefined N behavior */
19814   FLAG_Z |= res;
19815 
19816   m68ki_write_8(ea, res);
19817 }
19818 
19819 
m68k_op_sbcd_8_mm_ay7(void)19820 static void m68k_op_sbcd_8_mm_ay7(void)
19821 {
19822   uint src = OPER_A7_PD_8();
19823   uint ea  = EA_AX_PD_8();
19824   uint dst = m68ki_read_8(ea);
19825   uint res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1();
19826   uint corf = 0;
19827 
19828   if(res > 0xf)
19829     corf = 6;
19830   res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src);
19831   FLAG_V = res; /* Undefined V behavior */
19832 
19833   if(res > 0xff)
19834   {
19835     res += 0xa0;
19836     FLAG_X = FLAG_C = CFLAG_SET;
19837   }
19838   else if(res < corf)
19839     FLAG_X = FLAG_C = CFLAG_SET;
19840   else
19841     FLAG_X = FLAG_C = 0;
19842 
19843   res = MASK_OUT_ABOVE_8(res-corf);
19844 
19845   FLAG_V &= ~res; /* Undefined V behavior part II */
19846   FLAG_N = NFLAG_8(res); /* Undefined N behavior */
19847   FLAG_Z |= res;
19848 
19849   m68ki_write_8(ea, res);
19850 }
19851 
19852 
m68k_op_sbcd_8_mm_axy7(void)19853 static void m68k_op_sbcd_8_mm_axy7(void)
19854 {
19855   uint src = OPER_A7_PD_8();
19856   uint ea  = EA_A7_PD_8();
19857   uint dst = m68ki_read_8(ea);
19858   uint res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1();
19859   uint corf = 0;
19860 
19861   if(res > 0xf)
19862     corf = 6;
19863   res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src);
19864   FLAG_V = res; /* Undefined V behavior */
19865 
19866   if(res > 0xff)
19867   {
19868     res += 0xa0;
19869     FLAG_X = FLAG_C = CFLAG_SET;
19870   }
19871   else if(res < corf)
19872     FLAG_X = FLAG_C = CFLAG_SET;
19873   else
19874     FLAG_X = FLAG_C = 0;
19875 
19876   res = MASK_OUT_ABOVE_8(res-corf);
19877 
19878   FLAG_V &= ~res; /* Undefined V behavior part II */
19879   FLAG_N = NFLAG_8(res); /* Undefined N behavior */
19880   FLAG_Z |= res;
19881 
19882   m68ki_write_8(ea, res);
19883 }
19884 
19885 
m68k_op_sbcd_8_mm(void)19886 static void m68k_op_sbcd_8_mm(void)
19887 {
19888   uint src = OPER_AY_PD_8();
19889   uint ea  = EA_AX_PD_8();
19890   uint dst = m68ki_read_8(ea);
19891   uint res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1();
19892   uint corf = 0;
19893 
19894   if(res > 0xf)
19895     corf = 6;
19896   res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src);
19897   FLAG_V = res; /* Undefined V behavior */
19898 
19899   if(res > 0xff)
19900   {
19901     res += 0xa0;
19902     FLAG_X = FLAG_C = CFLAG_SET;
19903   }
19904   else if(res < corf)
19905     FLAG_X = FLAG_C = CFLAG_SET;
19906   else
19907     FLAG_X = FLAG_C = 0;
19908 
19909   res = MASK_OUT_ABOVE_8(res-corf);
19910 
19911   FLAG_V &= ~res; /* Undefined V behavior part II */
19912   FLAG_N = NFLAG_8(res); /* Undefined N behavior */
19913   FLAG_Z |= res;
19914 
19915   m68ki_write_8(ea, res);
19916 }
19917 
19918 
m68k_op_st_8_d(void)19919 static void m68k_op_st_8_d(void)
19920 {
19921   DY |= 0xff;
19922 }
19923 
19924 
m68k_op_st_8_ai(void)19925 static void m68k_op_st_8_ai(void)
19926 {
19927   m68ki_write_8(EA_AY_AI_8(), 0xff);
19928 }
19929 
19930 
m68k_op_st_8_pi(void)19931 static void m68k_op_st_8_pi(void)
19932 {
19933   m68ki_write_8(EA_AY_PI_8(), 0xff);
19934 }
19935 
19936 
m68k_op_st_8_pi7(void)19937 static void m68k_op_st_8_pi7(void)
19938 {
19939   m68ki_write_8(EA_A7_PI_8(), 0xff);
19940 }
19941 
19942 
m68k_op_st_8_pd(void)19943 static void m68k_op_st_8_pd(void)
19944 {
19945   m68ki_write_8(EA_AY_PD_8(), 0xff);
19946 }
19947 
19948 
m68k_op_st_8_pd7(void)19949 static void m68k_op_st_8_pd7(void)
19950 {
19951   m68ki_write_8(EA_A7_PD_8(), 0xff);
19952 }
19953 
19954 
m68k_op_st_8_di(void)19955 static void m68k_op_st_8_di(void)
19956 {
19957   m68ki_write_8(EA_AY_DI_8(), 0xff);
19958 }
19959 
19960 
m68k_op_st_8_ix(void)19961 static void m68k_op_st_8_ix(void)
19962 {
19963   m68ki_write_8(EA_AY_IX_8(), 0xff);
19964 }
19965 
19966 
m68k_op_st_8_aw(void)19967 static void m68k_op_st_8_aw(void)
19968 {
19969   m68ki_write_8(EA_AW_8(), 0xff);
19970 }
19971 
19972 
m68k_op_st_8_al(void)19973 static void m68k_op_st_8_al(void)
19974 {
19975   m68ki_write_8(EA_AL_8(), 0xff);
19976 }
19977 
19978 
m68k_op_sf_8_d(void)19979 static void m68k_op_sf_8_d(void)
19980 {
19981   DY &= 0xffffff00;
19982 }
19983 
19984 
m68k_op_sf_8_ai(void)19985 static void m68k_op_sf_8_ai(void)
19986 {
19987   m68ki_write_8(EA_AY_AI_8(), 0);
19988 }
19989 
19990 
m68k_op_sf_8_pi(void)19991 static void m68k_op_sf_8_pi(void)
19992 {
19993   m68ki_write_8(EA_AY_PI_8(), 0);
19994 }
19995 
19996 
m68k_op_sf_8_pi7(void)19997 static void m68k_op_sf_8_pi7(void)
19998 {
19999   m68ki_write_8(EA_A7_PI_8(), 0);
20000 }
20001 
20002 
m68k_op_sf_8_pd(void)20003 static void m68k_op_sf_8_pd(void)
20004 {
20005   m68ki_write_8(EA_AY_PD_8(), 0);
20006 }
20007 
20008 
m68k_op_sf_8_pd7(void)20009 static void m68k_op_sf_8_pd7(void)
20010 {
20011   m68ki_write_8(EA_A7_PD_8(), 0);
20012 }
20013 
20014 
m68k_op_sf_8_di(void)20015 static void m68k_op_sf_8_di(void)
20016 {
20017   m68ki_write_8(EA_AY_DI_8(), 0);
20018 }
20019 
20020 
m68k_op_sf_8_ix(void)20021 static void m68k_op_sf_8_ix(void)
20022 {
20023   m68ki_write_8(EA_AY_IX_8(), 0);
20024 }
20025 
20026 
m68k_op_sf_8_aw(void)20027 static void m68k_op_sf_8_aw(void)
20028 {
20029   m68ki_write_8(EA_AW_8(), 0);
20030 }
20031 
20032 
m68k_op_sf_8_al(void)20033 static void m68k_op_sf_8_al(void)
20034 {
20035   m68ki_write_8(EA_AL_8(), 0);
20036 }
20037 
20038 
m68k_op_shi_8_d(void)20039 static void m68k_op_shi_8_d(void)
20040 {
20041   if(COND_HI())
20042   {
20043     DY |= 0xff;
20044     USE_CYCLES(CYC_SCC_R_TRUE);
20045     return;
20046   }
20047   DY &= 0xffffff00;
20048 }
20049 
20050 
m68k_op_sls_8_d(void)20051 static void m68k_op_sls_8_d(void)
20052 {
20053   if(COND_LS())
20054   {
20055     DY |= 0xff;
20056     USE_CYCLES(CYC_SCC_R_TRUE);
20057     return;
20058   }
20059   DY &= 0xffffff00;
20060 }
20061 
20062 
m68k_op_scc_8_d(void)20063 static void m68k_op_scc_8_d(void)
20064 {
20065   if(COND_CC())
20066   {
20067     DY |= 0xff;
20068     USE_CYCLES(CYC_SCC_R_TRUE);
20069     return;
20070   }
20071   DY &= 0xffffff00;
20072 }
20073 
20074 
m68k_op_scs_8_d(void)20075 static void m68k_op_scs_8_d(void)
20076 {
20077   if(COND_CS())
20078   {
20079     DY |= 0xff;
20080     USE_CYCLES(CYC_SCC_R_TRUE);
20081     return;
20082   }
20083   DY &= 0xffffff00;
20084 }
20085 
20086 
m68k_op_sne_8_d(void)20087 static void m68k_op_sne_8_d(void)
20088 {
20089   if(COND_NE())
20090   {
20091     DY |= 0xff;
20092     USE_CYCLES(CYC_SCC_R_TRUE);
20093     return;
20094   }
20095   DY &= 0xffffff00;
20096 }
20097 
20098 
m68k_op_seq_8_d(void)20099 static void m68k_op_seq_8_d(void)
20100 {
20101   if(COND_EQ())
20102   {
20103     DY |= 0xff;
20104     USE_CYCLES(CYC_SCC_R_TRUE);
20105     return;
20106   }
20107   DY &= 0xffffff00;
20108 }
20109 
20110 
m68k_op_svc_8_d(void)20111 static void m68k_op_svc_8_d(void)
20112 {
20113   if(COND_VC())
20114   {
20115     DY |= 0xff;
20116     USE_CYCLES(CYC_SCC_R_TRUE);
20117     return;
20118   }
20119   DY &= 0xffffff00;
20120 }
20121 
20122 
m68k_op_svs_8_d(void)20123 static void m68k_op_svs_8_d(void)
20124 {
20125   if(COND_VS())
20126   {
20127     DY |= 0xff;
20128     USE_CYCLES(CYC_SCC_R_TRUE);
20129     return;
20130   }
20131   DY &= 0xffffff00;
20132 }
20133 
20134 
m68k_op_spl_8_d(void)20135 static void m68k_op_spl_8_d(void)
20136 {
20137   if(COND_PL())
20138   {
20139     DY |= 0xff;
20140     USE_CYCLES(CYC_SCC_R_TRUE);
20141     return;
20142   }
20143   DY &= 0xffffff00;
20144 }
20145 
20146 
m68k_op_smi_8_d(void)20147 static void m68k_op_smi_8_d(void)
20148 {
20149   if(COND_MI())
20150   {
20151     DY |= 0xff;
20152     USE_CYCLES(CYC_SCC_R_TRUE);
20153     return;
20154   }
20155   DY &= 0xffffff00;
20156 }
20157 
20158 
m68k_op_sge_8_d(void)20159 static void m68k_op_sge_8_d(void)
20160 {
20161   if(COND_GE())
20162   {
20163     DY |= 0xff;
20164     USE_CYCLES(CYC_SCC_R_TRUE);
20165     return;
20166   }
20167   DY &= 0xffffff00;
20168 }
20169 
20170 
m68k_op_slt_8_d(void)20171 static void m68k_op_slt_8_d(void)
20172 {
20173   if(COND_LT())
20174   {
20175     DY |= 0xff;
20176     USE_CYCLES(CYC_SCC_R_TRUE);
20177     return;
20178   }
20179   DY &= 0xffffff00;
20180 }
20181 
20182 
m68k_op_sgt_8_d(void)20183 static void m68k_op_sgt_8_d(void)
20184 {
20185   if(COND_GT())
20186   {
20187     DY |= 0xff;
20188     USE_CYCLES(CYC_SCC_R_TRUE);
20189     return;
20190   }
20191   DY &= 0xffffff00;
20192 }
20193 
20194 
m68k_op_sle_8_d(void)20195 static void m68k_op_sle_8_d(void)
20196 {
20197   if(COND_LE())
20198   {
20199     DY |= 0xff;
20200     USE_CYCLES(CYC_SCC_R_TRUE);
20201     return;
20202   }
20203   DY &= 0xffffff00;
20204 }
20205 
20206 
m68k_op_shi_8_ai(void)20207 static void m68k_op_shi_8_ai(void)
20208 {
20209   m68ki_write_8(EA_AY_AI_8(), COND_HI() ? 0xff : 0);
20210 }
20211 
20212 
m68k_op_shi_8_pi(void)20213 static void m68k_op_shi_8_pi(void)
20214 {
20215   m68ki_write_8(EA_AY_PI_8(), COND_HI() ? 0xff : 0);
20216 }
20217 
20218 
m68k_op_shi_8_pi7(void)20219 static void m68k_op_shi_8_pi7(void)
20220 {
20221   m68ki_write_8(EA_A7_PI_8(), COND_HI() ? 0xff : 0);
20222 }
20223 
20224 
m68k_op_shi_8_pd(void)20225 static void m68k_op_shi_8_pd(void)
20226 {
20227   m68ki_write_8(EA_AY_PD_8(), COND_HI() ? 0xff : 0);
20228 }
20229 
20230 
m68k_op_shi_8_pd7(void)20231 static void m68k_op_shi_8_pd7(void)
20232 {
20233   m68ki_write_8(EA_A7_PD_8(), COND_HI() ? 0xff : 0);
20234 }
20235 
20236 
m68k_op_shi_8_di(void)20237 static void m68k_op_shi_8_di(void)
20238 {
20239   m68ki_write_8(EA_AY_DI_8(), COND_HI() ? 0xff : 0);
20240 }
20241 
20242 
m68k_op_shi_8_ix(void)20243 static void m68k_op_shi_8_ix(void)
20244 {
20245   m68ki_write_8(EA_AY_IX_8(), COND_HI() ? 0xff : 0);
20246 }
20247 
20248 
m68k_op_shi_8_aw(void)20249 static void m68k_op_shi_8_aw(void)
20250 {
20251   m68ki_write_8(EA_AW_8(), COND_HI() ? 0xff : 0);
20252 }
20253 
20254 
m68k_op_shi_8_al(void)20255 static void m68k_op_shi_8_al(void)
20256 {
20257   m68ki_write_8(EA_AL_8(), COND_HI() ? 0xff : 0);
20258 }
20259 
20260 
m68k_op_sls_8_ai(void)20261 static void m68k_op_sls_8_ai(void)
20262 {
20263   m68ki_write_8(EA_AY_AI_8(), COND_LS() ? 0xff : 0);
20264 }
20265 
20266 
m68k_op_sls_8_pi(void)20267 static void m68k_op_sls_8_pi(void)
20268 {
20269   m68ki_write_8(EA_AY_PI_8(), COND_LS() ? 0xff : 0);
20270 }
20271 
20272 
m68k_op_sls_8_pi7(void)20273 static void m68k_op_sls_8_pi7(void)
20274 {
20275   m68ki_write_8(EA_A7_PI_8(), COND_LS() ? 0xff : 0);
20276 }
20277 
20278 
m68k_op_sls_8_pd(void)20279 static void m68k_op_sls_8_pd(void)
20280 {
20281   m68ki_write_8(EA_AY_PD_8(), COND_LS() ? 0xff : 0);
20282 }
20283 
20284 
m68k_op_sls_8_pd7(void)20285 static void m68k_op_sls_8_pd7(void)
20286 {
20287   m68ki_write_8(EA_A7_PD_8(), COND_LS() ? 0xff : 0);
20288 }
20289 
20290 
m68k_op_sls_8_di(void)20291 static void m68k_op_sls_8_di(void)
20292 {
20293   m68ki_write_8(EA_AY_DI_8(), COND_LS() ? 0xff : 0);
20294 }
20295 
20296 
m68k_op_sls_8_ix(void)20297 static void m68k_op_sls_8_ix(void)
20298 {
20299   m68ki_write_8(EA_AY_IX_8(), COND_LS() ? 0xff : 0);
20300 }
20301 
20302 
m68k_op_sls_8_aw(void)20303 static void m68k_op_sls_8_aw(void)
20304 {
20305   m68ki_write_8(EA_AW_8(), COND_LS() ? 0xff : 0);
20306 }
20307 
20308 
m68k_op_sls_8_al(void)20309 static void m68k_op_sls_8_al(void)
20310 {
20311   m68ki_write_8(EA_AL_8(), COND_LS() ? 0xff : 0);
20312 }
20313 
20314 
m68k_op_scc_8_ai(void)20315 static void m68k_op_scc_8_ai(void)
20316 {
20317   m68ki_write_8(EA_AY_AI_8(), COND_CC() ? 0xff : 0);
20318 }
20319 
20320 
m68k_op_scc_8_pi(void)20321 static void m68k_op_scc_8_pi(void)
20322 {
20323   m68ki_write_8(EA_AY_PI_8(), COND_CC() ? 0xff : 0);
20324 }
20325 
20326 
m68k_op_scc_8_pi7(void)20327 static void m68k_op_scc_8_pi7(void)
20328 {
20329   m68ki_write_8(EA_A7_PI_8(), COND_CC() ? 0xff : 0);
20330 }
20331 
20332 
m68k_op_scc_8_pd(void)20333 static void m68k_op_scc_8_pd(void)
20334 {
20335   m68ki_write_8(EA_AY_PD_8(), COND_CC() ? 0xff : 0);
20336 }
20337 
20338 
m68k_op_scc_8_pd7(void)20339 static void m68k_op_scc_8_pd7(void)
20340 {
20341   m68ki_write_8(EA_A7_PD_8(), COND_CC() ? 0xff : 0);
20342 }
20343 
20344 
m68k_op_scc_8_di(void)20345 static void m68k_op_scc_8_di(void)
20346 {
20347   m68ki_write_8(EA_AY_DI_8(), COND_CC() ? 0xff : 0);
20348 }
20349 
20350 
m68k_op_scc_8_ix(void)20351 static void m68k_op_scc_8_ix(void)
20352 {
20353   m68ki_write_8(EA_AY_IX_8(), COND_CC() ? 0xff : 0);
20354 }
20355 
20356 
m68k_op_scc_8_aw(void)20357 static void m68k_op_scc_8_aw(void)
20358 {
20359   m68ki_write_8(EA_AW_8(), COND_CC() ? 0xff : 0);
20360 }
20361 
20362 
m68k_op_scc_8_al(void)20363 static void m68k_op_scc_8_al(void)
20364 {
20365   m68ki_write_8(EA_AL_8(), COND_CC() ? 0xff : 0);
20366 }
20367 
20368 
m68k_op_scs_8_ai(void)20369 static void m68k_op_scs_8_ai(void)
20370 {
20371   m68ki_write_8(EA_AY_AI_8(), COND_CS() ? 0xff : 0);
20372 }
20373 
20374 
m68k_op_scs_8_pi(void)20375 static void m68k_op_scs_8_pi(void)
20376 {
20377   m68ki_write_8(EA_AY_PI_8(), COND_CS() ? 0xff : 0);
20378 }
20379 
20380 
m68k_op_scs_8_pi7(void)20381 static void m68k_op_scs_8_pi7(void)
20382 {
20383   m68ki_write_8(EA_A7_PI_8(), COND_CS() ? 0xff : 0);
20384 }
20385 
20386 
m68k_op_scs_8_pd(void)20387 static void m68k_op_scs_8_pd(void)
20388 {
20389   m68ki_write_8(EA_AY_PD_8(), COND_CS() ? 0xff : 0);
20390 }
20391 
20392 
m68k_op_scs_8_pd7(void)20393 static void m68k_op_scs_8_pd7(void)
20394 {
20395   m68ki_write_8(EA_A7_PD_8(), COND_CS() ? 0xff : 0);
20396 }
20397 
20398 
m68k_op_scs_8_di(void)20399 static void m68k_op_scs_8_di(void)
20400 {
20401   m68ki_write_8(EA_AY_DI_8(), COND_CS() ? 0xff : 0);
20402 }
20403 
20404 
m68k_op_scs_8_ix(void)20405 static void m68k_op_scs_8_ix(void)
20406 {
20407   m68ki_write_8(EA_AY_IX_8(), COND_CS() ? 0xff : 0);
20408 }
20409 
20410 
m68k_op_scs_8_aw(void)20411 static void m68k_op_scs_8_aw(void)
20412 {
20413   m68ki_write_8(EA_AW_8(), COND_CS() ? 0xff : 0);
20414 }
20415 
20416 
m68k_op_scs_8_al(void)20417 static void m68k_op_scs_8_al(void)
20418 {
20419   m68ki_write_8(EA_AL_8(), COND_CS() ? 0xff : 0);
20420 }
20421 
20422 
m68k_op_sne_8_ai(void)20423 static void m68k_op_sne_8_ai(void)
20424 {
20425   m68ki_write_8(EA_AY_AI_8(), COND_NE() ? 0xff : 0);
20426 }
20427 
20428 
m68k_op_sne_8_pi(void)20429 static void m68k_op_sne_8_pi(void)
20430 {
20431   m68ki_write_8(EA_AY_PI_8(), COND_NE() ? 0xff : 0);
20432 }
20433 
20434 
m68k_op_sne_8_pi7(void)20435 static void m68k_op_sne_8_pi7(void)
20436 {
20437   m68ki_write_8(EA_A7_PI_8(), COND_NE() ? 0xff : 0);
20438 }
20439 
20440 
m68k_op_sne_8_pd(void)20441 static void m68k_op_sne_8_pd(void)
20442 {
20443   m68ki_write_8(EA_AY_PD_8(), COND_NE() ? 0xff : 0);
20444 }
20445 
20446 
m68k_op_sne_8_pd7(void)20447 static void m68k_op_sne_8_pd7(void)
20448 {
20449   m68ki_write_8(EA_A7_PD_8(), COND_NE() ? 0xff : 0);
20450 }
20451 
20452 
m68k_op_sne_8_di(void)20453 static void m68k_op_sne_8_di(void)
20454 {
20455   m68ki_write_8(EA_AY_DI_8(), COND_NE() ? 0xff : 0);
20456 }
20457 
20458 
m68k_op_sne_8_ix(void)20459 static void m68k_op_sne_8_ix(void)
20460 {
20461   m68ki_write_8(EA_AY_IX_8(), COND_NE() ? 0xff : 0);
20462 }
20463 
20464 
m68k_op_sne_8_aw(void)20465 static void m68k_op_sne_8_aw(void)
20466 {
20467   m68ki_write_8(EA_AW_8(), COND_NE() ? 0xff : 0);
20468 }
20469 
20470 
m68k_op_sne_8_al(void)20471 static void m68k_op_sne_8_al(void)
20472 {
20473   m68ki_write_8(EA_AL_8(), COND_NE() ? 0xff : 0);
20474 }
20475 
20476 
m68k_op_seq_8_ai(void)20477 static void m68k_op_seq_8_ai(void)
20478 {
20479   m68ki_write_8(EA_AY_AI_8(), COND_EQ() ? 0xff : 0);
20480 }
20481 
20482 
m68k_op_seq_8_pi(void)20483 static void m68k_op_seq_8_pi(void)
20484 {
20485   m68ki_write_8(EA_AY_PI_8(), COND_EQ() ? 0xff : 0);
20486 }
20487 
20488 
m68k_op_seq_8_pi7(void)20489 static void m68k_op_seq_8_pi7(void)
20490 {
20491   m68ki_write_8(EA_A7_PI_8(), COND_EQ() ? 0xff : 0);
20492 }
20493 
20494 
m68k_op_seq_8_pd(void)20495 static void m68k_op_seq_8_pd(void)
20496 {
20497   m68ki_write_8(EA_AY_PD_8(), COND_EQ() ? 0xff : 0);
20498 }
20499 
20500 
m68k_op_seq_8_pd7(void)20501 static void m68k_op_seq_8_pd7(void)
20502 {
20503   m68ki_write_8(EA_A7_PD_8(), COND_EQ() ? 0xff : 0);
20504 }
20505 
20506 
m68k_op_seq_8_di(void)20507 static void m68k_op_seq_8_di(void)
20508 {
20509   m68ki_write_8(EA_AY_DI_8(), COND_EQ() ? 0xff : 0);
20510 }
20511 
20512 
m68k_op_seq_8_ix(void)20513 static void m68k_op_seq_8_ix(void)
20514 {
20515   m68ki_write_8(EA_AY_IX_8(), COND_EQ() ? 0xff : 0);
20516 }
20517 
20518 
m68k_op_seq_8_aw(void)20519 static void m68k_op_seq_8_aw(void)
20520 {
20521   m68ki_write_8(EA_AW_8(), COND_EQ() ? 0xff : 0);
20522 }
20523 
20524 
m68k_op_seq_8_al(void)20525 static void m68k_op_seq_8_al(void)
20526 {
20527   m68ki_write_8(EA_AL_8(), COND_EQ() ? 0xff : 0);
20528 }
20529 
20530 
m68k_op_svc_8_ai(void)20531 static void m68k_op_svc_8_ai(void)
20532 {
20533   m68ki_write_8(EA_AY_AI_8(), COND_VC() ? 0xff : 0);
20534 }
20535 
20536 
m68k_op_svc_8_pi(void)20537 static void m68k_op_svc_8_pi(void)
20538 {
20539   m68ki_write_8(EA_AY_PI_8(), COND_VC() ? 0xff : 0);
20540 }
20541 
20542 
m68k_op_svc_8_pi7(void)20543 static void m68k_op_svc_8_pi7(void)
20544 {
20545   m68ki_write_8(EA_A7_PI_8(), COND_VC() ? 0xff : 0);
20546 }
20547 
20548 
m68k_op_svc_8_pd(void)20549 static void m68k_op_svc_8_pd(void)
20550 {
20551   m68ki_write_8(EA_AY_PD_8(), COND_VC() ? 0xff : 0);
20552 }
20553 
20554 
m68k_op_svc_8_pd7(void)20555 static void m68k_op_svc_8_pd7(void)
20556 {
20557   m68ki_write_8(EA_A7_PD_8(), COND_VC() ? 0xff : 0);
20558 }
20559 
20560 
m68k_op_svc_8_di(void)20561 static void m68k_op_svc_8_di(void)
20562 {
20563   m68ki_write_8(EA_AY_DI_8(), COND_VC() ? 0xff : 0);
20564 }
20565 
20566 
m68k_op_svc_8_ix(void)20567 static void m68k_op_svc_8_ix(void)
20568 {
20569   m68ki_write_8(EA_AY_IX_8(), COND_VC() ? 0xff : 0);
20570 }
20571 
20572 
m68k_op_svc_8_aw(void)20573 static void m68k_op_svc_8_aw(void)
20574 {
20575   m68ki_write_8(EA_AW_8(), COND_VC() ? 0xff : 0);
20576 }
20577 
20578 
m68k_op_svc_8_al(void)20579 static void m68k_op_svc_8_al(void)
20580 {
20581   m68ki_write_8(EA_AL_8(), COND_VC() ? 0xff : 0);
20582 }
20583 
20584 
m68k_op_svs_8_ai(void)20585 static void m68k_op_svs_8_ai(void)
20586 {
20587   m68ki_write_8(EA_AY_AI_8(), COND_VS() ? 0xff : 0);
20588 }
20589 
20590 
m68k_op_svs_8_pi(void)20591 static void m68k_op_svs_8_pi(void)
20592 {
20593   m68ki_write_8(EA_AY_PI_8(), COND_VS() ? 0xff : 0);
20594 }
20595 
20596 
m68k_op_svs_8_pi7(void)20597 static void m68k_op_svs_8_pi7(void)
20598 {
20599   m68ki_write_8(EA_A7_PI_8(), COND_VS() ? 0xff : 0);
20600 }
20601 
20602 
m68k_op_svs_8_pd(void)20603 static void m68k_op_svs_8_pd(void)
20604 {
20605   m68ki_write_8(EA_AY_PD_8(), COND_VS() ? 0xff : 0);
20606 }
20607 
20608 
m68k_op_svs_8_pd7(void)20609 static void m68k_op_svs_8_pd7(void)
20610 {
20611   m68ki_write_8(EA_A7_PD_8(), COND_VS() ? 0xff : 0);
20612 }
20613 
20614 
m68k_op_svs_8_di(void)20615 static void m68k_op_svs_8_di(void)
20616 {
20617   m68ki_write_8(EA_AY_DI_8(), COND_VS() ? 0xff : 0);
20618 }
20619 
20620 
m68k_op_svs_8_ix(void)20621 static void m68k_op_svs_8_ix(void)
20622 {
20623   m68ki_write_8(EA_AY_IX_8(), COND_VS() ? 0xff : 0);
20624 }
20625 
20626 
m68k_op_svs_8_aw(void)20627 static void m68k_op_svs_8_aw(void)
20628 {
20629   m68ki_write_8(EA_AW_8(), COND_VS() ? 0xff : 0);
20630 }
20631 
20632 
m68k_op_svs_8_al(void)20633 static void m68k_op_svs_8_al(void)
20634 {
20635   m68ki_write_8(EA_AL_8(), COND_VS() ? 0xff : 0);
20636 }
20637 
20638 
m68k_op_spl_8_ai(void)20639 static void m68k_op_spl_8_ai(void)
20640 {
20641   m68ki_write_8(EA_AY_AI_8(), COND_PL() ? 0xff : 0);
20642 }
20643 
20644 
m68k_op_spl_8_pi(void)20645 static void m68k_op_spl_8_pi(void)
20646 {
20647   m68ki_write_8(EA_AY_PI_8(), COND_PL() ? 0xff : 0);
20648 }
20649 
20650 
m68k_op_spl_8_pi7(void)20651 static void m68k_op_spl_8_pi7(void)
20652 {
20653   m68ki_write_8(EA_A7_PI_8(), COND_PL() ? 0xff : 0);
20654 }
20655 
20656 
m68k_op_spl_8_pd(void)20657 static void m68k_op_spl_8_pd(void)
20658 {
20659   m68ki_write_8(EA_AY_PD_8(), COND_PL() ? 0xff : 0);
20660 }
20661 
20662 
m68k_op_spl_8_pd7(void)20663 static void m68k_op_spl_8_pd7(void)
20664 {
20665   m68ki_write_8(EA_A7_PD_8(), COND_PL() ? 0xff : 0);
20666 }
20667 
20668 
m68k_op_spl_8_di(void)20669 static void m68k_op_spl_8_di(void)
20670 {
20671   m68ki_write_8(EA_AY_DI_8(), COND_PL() ? 0xff : 0);
20672 }
20673 
20674 
m68k_op_spl_8_ix(void)20675 static void m68k_op_spl_8_ix(void)
20676 {
20677   m68ki_write_8(EA_AY_IX_8(), COND_PL() ? 0xff : 0);
20678 }
20679 
20680 
m68k_op_spl_8_aw(void)20681 static void m68k_op_spl_8_aw(void)
20682 {
20683   m68ki_write_8(EA_AW_8(), COND_PL() ? 0xff : 0);
20684 }
20685 
20686 
m68k_op_spl_8_al(void)20687 static void m68k_op_spl_8_al(void)
20688 {
20689   m68ki_write_8(EA_AL_8(), COND_PL() ? 0xff : 0);
20690 }
20691 
20692 
m68k_op_smi_8_ai(void)20693 static void m68k_op_smi_8_ai(void)
20694 {
20695   m68ki_write_8(EA_AY_AI_8(), COND_MI() ? 0xff : 0);
20696 }
20697 
20698 
m68k_op_smi_8_pi(void)20699 static void m68k_op_smi_8_pi(void)
20700 {
20701   m68ki_write_8(EA_AY_PI_8(), COND_MI() ? 0xff : 0);
20702 }
20703 
20704 
m68k_op_smi_8_pi7(void)20705 static void m68k_op_smi_8_pi7(void)
20706 {
20707   m68ki_write_8(EA_A7_PI_8(), COND_MI() ? 0xff : 0);
20708 }
20709 
20710 
m68k_op_smi_8_pd(void)20711 static void m68k_op_smi_8_pd(void)
20712 {
20713   m68ki_write_8(EA_AY_PD_8(), COND_MI() ? 0xff : 0);
20714 }
20715 
20716 
m68k_op_smi_8_pd7(void)20717 static void m68k_op_smi_8_pd7(void)
20718 {
20719   m68ki_write_8(EA_A7_PD_8(), COND_MI() ? 0xff : 0);
20720 }
20721 
20722 
m68k_op_smi_8_di(void)20723 static void m68k_op_smi_8_di(void)
20724 {
20725   m68ki_write_8(EA_AY_DI_8(), COND_MI() ? 0xff : 0);
20726 }
20727 
20728 
m68k_op_smi_8_ix(void)20729 static void m68k_op_smi_8_ix(void)
20730 {
20731   m68ki_write_8(EA_AY_IX_8(), COND_MI() ? 0xff : 0);
20732 }
20733 
20734 
m68k_op_smi_8_aw(void)20735 static void m68k_op_smi_8_aw(void)
20736 {
20737   m68ki_write_8(EA_AW_8(), COND_MI() ? 0xff : 0);
20738 }
20739 
20740 
m68k_op_smi_8_al(void)20741 static void m68k_op_smi_8_al(void)
20742 {
20743   m68ki_write_8(EA_AL_8(), COND_MI() ? 0xff : 0);
20744 }
20745 
20746 
m68k_op_sge_8_ai(void)20747 static void m68k_op_sge_8_ai(void)
20748 {
20749   m68ki_write_8(EA_AY_AI_8(), COND_GE() ? 0xff : 0);
20750 }
20751 
20752 
m68k_op_sge_8_pi(void)20753 static void m68k_op_sge_8_pi(void)
20754 {
20755   m68ki_write_8(EA_AY_PI_8(), COND_GE() ? 0xff : 0);
20756 }
20757 
20758 
m68k_op_sge_8_pi7(void)20759 static void m68k_op_sge_8_pi7(void)
20760 {
20761   m68ki_write_8(EA_A7_PI_8(), COND_GE() ? 0xff : 0);
20762 }
20763 
20764 
m68k_op_sge_8_pd(void)20765 static void m68k_op_sge_8_pd(void)
20766 {
20767   m68ki_write_8(EA_AY_PD_8(), COND_GE() ? 0xff : 0);
20768 }
20769 
20770 
m68k_op_sge_8_pd7(void)20771 static void m68k_op_sge_8_pd7(void)
20772 {
20773   m68ki_write_8(EA_A7_PD_8(), COND_GE() ? 0xff : 0);
20774 }
20775 
20776 
m68k_op_sge_8_di(void)20777 static void m68k_op_sge_8_di(void)
20778 {
20779   m68ki_write_8(EA_AY_DI_8(), COND_GE() ? 0xff : 0);
20780 }
20781 
20782 
m68k_op_sge_8_ix(void)20783 static void m68k_op_sge_8_ix(void)
20784 {
20785   m68ki_write_8(EA_AY_IX_8(), COND_GE() ? 0xff : 0);
20786 }
20787 
20788 
m68k_op_sge_8_aw(void)20789 static void m68k_op_sge_8_aw(void)
20790 {
20791   m68ki_write_8(EA_AW_8(), COND_GE() ? 0xff : 0);
20792 }
20793 
20794 
m68k_op_sge_8_al(void)20795 static void m68k_op_sge_8_al(void)
20796 {
20797   m68ki_write_8(EA_AL_8(), COND_GE() ? 0xff : 0);
20798 }
20799 
20800 
m68k_op_slt_8_ai(void)20801 static void m68k_op_slt_8_ai(void)
20802 {
20803   m68ki_write_8(EA_AY_AI_8(), COND_LT() ? 0xff : 0);
20804 }
20805 
20806 
m68k_op_slt_8_pi(void)20807 static void m68k_op_slt_8_pi(void)
20808 {
20809   m68ki_write_8(EA_AY_PI_8(), COND_LT() ? 0xff : 0);
20810 }
20811 
20812 
m68k_op_slt_8_pi7(void)20813 static void m68k_op_slt_8_pi7(void)
20814 {
20815   m68ki_write_8(EA_A7_PI_8(), COND_LT() ? 0xff : 0);
20816 }
20817 
20818 
m68k_op_slt_8_pd(void)20819 static void m68k_op_slt_8_pd(void)
20820 {
20821   m68ki_write_8(EA_AY_PD_8(), COND_LT() ? 0xff : 0);
20822 }
20823 
20824 
m68k_op_slt_8_pd7(void)20825 static void m68k_op_slt_8_pd7(void)
20826 {
20827   m68ki_write_8(EA_A7_PD_8(), COND_LT() ? 0xff : 0);
20828 }
20829 
20830 
m68k_op_slt_8_di(void)20831 static void m68k_op_slt_8_di(void)
20832 {
20833   m68ki_write_8(EA_AY_DI_8(), COND_LT() ? 0xff : 0);
20834 }
20835 
20836 
m68k_op_slt_8_ix(void)20837 static void m68k_op_slt_8_ix(void)
20838 {
20839   m68ki_write_8(EA_AY_IX_8(), COND_LT() ? 0xff : 0);
20840 }
20841 
20842 
m68k_op_slt_8_aw(void)20843 static void m68k_op_slt_8_aw(void)
20844 {
20845   m68ki_write_8(EA_AW_8(), COND_LT() ? 0xff : 0);
20846 }
20847 
20848 
m68k_op_slt_8_al(void)20849 static void m68k_op_slt_8_al(void)
20850 {
20851   m68ki_write_8(EA_AL_8(), COND_LT() ? 0xff : 0);
20852 }
20853 
20854 
m68k_op_sgt_8_ai(void)20855 static void m68k_op_sgt_8_ai(void)
20856 {
20857   m68ki_write_8(EA_AY_AI_8(), COND_GT() ? 0xff : 0);
20858 }
20859 
20860 
m68k_op_sgt_8_pi(void)20861 static void m68k_op_sgt_8_pi(void)
20862 {
20863   m68ki_write_8(EA_AY_PI_8(), COND_GT() ? 0xff : 0);
20864 }
20865 
20866 
m68k_op_sgt_8_pi7(void)20867 static void m68k_op_sgt_8_pi7(void)
20868 {
20869   m68ki_write_8(EA_A7_PI_8(), COND_GT() ? 0xff : 0);
20870 }
20871 
20872 
m68k_op_sgt_8_pd(void)20873 static void m68k_op_sgt_8_pd(void)
20874 {
20875   m68ki_write_8(EA_AY_PD_8(), COND_GT() ? 0xff : 0);
20876 }
20877 
20878 
m68k_op_sgt_8_pd7(void)20879 static void m68k_op_sgt_8_pd7(void)
20880 {
20881   m68ki_write_8(EA_A7_PD_8(), COND_GT() ? 0xff : 0);
20882 }
20883 
20884 
m68k_op_sgt_8_di(void)20885 static void m68k_op_sgt_8_di(void)
20886 {
20887   m68ki_write_8(EA_AY_DI_8(), COND_GT() ? 0xff : 0);
20888 }
20889 
20890 
m68k_op_sgt_8_ix(void)20891 static void m68k_op_sgt_8_ix(void)
20892 {
20893   m68ki_write_8(EA_AY_IX_8(), COND_GT() ? 0xff : 0);
20894 }
20895 
20896 
m68k_op_sgt_8_aw(void)20897 static void m68k_op_sgt_8_aw(void)
20898 {
20899   m68ki_write_8(EA_AW_8(), COND_GT() ? 0xff : 0);
20900 }
20901 
20902 
m68k_op_sgt_8_al(void)20903 static void m68k_op_sgt_8_al(void)
20904 {
20905   m68ki_write_8(EA_AL_8(), COND_GT() ? 0xff : 0);
20906 }
20907 
20908 
m68k_op_sle_8_ai(void)20909 static void m68k_op_sle_8_ai(void)
20910 {
20911   m68ki_write_8(EA_AY_AI_8(), COND_LE() ? 0xff : 0);
20912 }
20913 
20914 
m68k_op_sle_8_pi(void)20915 static void m68k_op_sle_8_pi(void)
20916 {
20917   m68ki_write_8(EA_AY_PI_8(), COND_LE() ? 0xff : 0);
20918 }
20919 
20920 
m68k_op_sle_8_pi7(void)20921 static void m68k_op_sle_8_pi7(void)
20922 {
20923   m68ki_write_8(EA_A7_PI_8(), COND_LE() ? 0xff : 0);
20924 }
20925 
20926 
m68k_op_sle_8_pd(void)20927 static void m68k_op_sle_8_pd(void)
20928 {
20929   m68ki_write_8(EA_AY_PD_8(), COND_LE() ? 0xff : 0);
20930 }
20931 
20932 
m68k_op_sle_8_pd7(void)20933 static void m68k_op_sle_8_pd7(void)
20934 {
20935   m68ki_write_8(EA_A7_PD_8(), COND_LE() ? 0xff : 0);
20936 }
20937 
20938 
m68k_op_sle_8_di(void)20939 static void m68k_op_sle_8_di(void)
20940 {
20941   m68ki_write_8(EA_AY_DI_8(), COND_LE() ? 0xff : 0);
20942 }
20943 
20944 
m68k_op_sle_8_ix(void)20945 static void m68k_op_sle_8_ix(void)
20946 {
20947   m68ki_write_8(EA_AY_IX_8(), COND_LE() ? 0xff : 0);
20948 }
20949 
20950 
m68k_op_sle_8_aw(void)20951 static void m68k_op_sle_8_aw(void)
20952 {
20953   m68ki_write_8(EA_AW_8(), COND_LE() ? 0xff : 0);
20954 }
20955 
20956 
m68k_op_sle_8_al(void)20957 static void m68k_op_sle_8_al(void)
20958 {
20959   m68ki_write_8(EA_AL_8(), COND_LE() ? 0xff : 0);
20960 }
20961 
20962 
m68k_op_stop(void)20963 static void m68k_op_stop(void)
20964 {
20965   if(FLAG_S)
20966   {
20967     uint new_sr = OPER_I_16();
20968     CPU_STOPPED |= STOP_LEVEL_STOP;
20969     m68ki_set_sr(new_sr);
20970     SET_CYCLES(m68ki_cpu.cycle_end - 4*MUL);
20971     return;
20972   }
20973   m68ki_exception_privilege_violation();
20974 }
20975 
20976 
m68k_op_sub_8_er_d(void)20977 static void m68k_op_sub_8_er_d(void)
20978 {
20979   uint* r_dst = &DX;
20980   uint src = MASK_OUT_ABOVE_8(DY);
20981   uint dst = MASK_OUT_ABOVE_8(*r_dst);
20982   uint res = dst - src;
20983 
20984   FLAG_N = NFLAG_8(res);
20985   FLAG_X = FLAG_C = CFLAG_8(res);
20986   FLAG_V = VFLAG_SUB_8(src, dst, res);
20987   FLAG_Z = MASK_OUT_ABOVE_8(res);
20988 
20989   *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
20990 }
20991 
20992 
m68k_op_sub_8_er_ai(void)20993 static void m68k_op_sub_8_er_ai(void)
20994 {
20995   uint* r_dst = &DX;
20996   uint src = OPER_AY_AI_8();
20997   uint dst = MASK_OUT_ABOVE_8(*r_dst);
20998   uint res = dst - src;
20999 
21000   FLAG_N = NFLAG_8(res);
21001   FLAG_X = FLAG_C = CFLAG_8(res);
21002   FLAG_V = VFLAG_SUB_8(src, dst, res);
21003   FLAG_Z = MASK_OUT_ABOVE_8(res);
21004 
21005   *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
21006 }
21007 
21008 
m68k_op_sub_8_er_pi(void)21009 static void m68k_op_sub_8_er_pi(void)
21010 {
21011   uint* r_dst = &DX;
21012   uint src = OPER_AY_PI_8();
21013   uint dst = MASK_OUT_ABOVE_8(*r_dst);
21014   uint res = dst - src;
21015 
21016   FLAG_N = NFLAG_8(res);
21017   FLAG_X = FLAG_C = CFLAG_8(res);
21018   FLAG_V = VFLAG_SUB_8(src, dst, res);
21019   FLAG_Z = MASK_OUT_ABOVE_8(res);
21020 
21021   *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
21022 }
21023 
21024 
m68k_op_sub_8_er_pi7(void)21025 static void m68k_op_sub_8_er_pi7(void)
21026 {
21027   uint* r_dst = &DX;
21028   uint src = OPER_A7_PI_8();
21029   uint dst = MASK_OUT_ABOVE_8(*r_dst);
21030   uint res = dst - src;
21031 
21032   FLAG_N = NFLAG_8(res);
21033   FLAG_X = FLAG_C = CFLAG_8(res);
21034   FLAG_V = VFLAG_SUB_8(src, dst, res);
21035   FLAG_Z = MASK_OUT_ABOVE_8(res);
21036 
21037   *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
21038 }
21039 
21040 
m68k_op_sub_8_er_pd(void)21041 static void m68k_op_sub_8_er_pd(void)
21042 {
21043   uint* r_dst = &DX;
21044   uint src = OPER_AY_PD_8();
21045   uint dst = MASK_OUT_ABOVE_8(*r_dst);
21046   uint res = dst - src;
21047 
21048   FLAG_N = NFLAG_8(res);
21049   FLAG_X = FLAG_C = CFLAG_8(res);
21050   FLAG_V = VFLAG_SUB_8(src, dst, res);
21051   FLAG_Z = MASK_OUT_ABOVE_8(res);
21052 
21053   *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
21054 }
21055 
21056 
m68k_op_sub_8_er_pd7(void)21057 static void m68k_op_sub_8_er_pd7(void)
21058 {
21059   uint* r_dst = &DX;
21060   uint src = OPER_A7_PD_8();
21061   uint dst = MASK_OUT_ABOVE_8(*r_dst);
21062   uint res = dst - src;
21063 
21064   FLAG_N = NFLAG_8(res);
21065   FLAG_X = FLAG_C = CFLAG_8(res);
21066   FLAG_V = VFLAG_SUB_8(src, dst, res);
21067   FLAG_Z = MASK_OUT_ABOVE_8(res);
21068 
21069   *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
21070 }
21071 
21072 
m68k_op_sub_8_er_di(void)21073 static void m68k_op_sub_8_er_di(void)
21074 {
21075   uint* r_dst = &DX;
21076   uint src = OPER_AY_DI_8();
21077   uint dst = MASK_OUT_ABOVE_8(*r_dst);
21078   uint res = dst - src;
21079 
21080   FLAG_N = NFLAG_8(res);
21081   FLAG_X = FLAG_C = CFLAG_8(res);
21082   FLAG_V = VFLAG_SUB_8(src, dst, res);
21083   FLAG_Z = MASK_OUT_ABOVE_8(res);
21084 
21085   *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
21086 }
21087 
21088 
m68k_op_sub_8_er_ix(void)21089 static void m68k_op_sub_8_er_ix(void)
21090 {
21091   uint* r_dst = &DX;
21092   uint src = OPER_AY_IX_8();
21093   uint dst = MASK_OUT_ABOVE_8(*r_dst);
21094   uint res = dst - src;
21095 
21096   FLAG_N = NFLAG_8(res);
21097   FLAG_X = FLAG_C = CFLAG_8(res);
21098   FLAG_V = VFLAG_SUB_8(src, dst, res);
21099   FLAG_Z = MASK_OUT_ABOVE_8(res);
21100 
21101   *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
21102 }
21103 
21104 
m68k_op_sub_8_er_aw(void)21105 static void m68k_op_sub_8_er_aw(void)
21106 {
21107   uint* r_dst = &DX;
21108   uint src = OPER_AW_8();
21109   uint dst = MASK_OUT_ABOVE_8(*r_dst);
21110   uint res = dst - src;
21111 
21112   FLAG_N = NFLAG_8(res);
21113   FLAG_X = FLAG_C = CFLAG_8(res);
21114   FLAG_V = VFLAG_SUB_8(src, dst, res);
21115   FLAG_Z = MASK_OUT_ABOVE_8(res);
21116 
21117   *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
21118 }
21119 
21120 
m68k_op_sub_8_er_al(void)21121 static void m68k_op_sub_8_er_al(void)
21122 {
21123   uint* r_dst = &DX;
21124   uint src = OPER_AL_8();
21125   uint dst = MASK_OUT_ABOVE_8(*r_dst);
21126   uint res = dst - src;
21127 
21128   FLAG_N = NFLAG_8(res);
21129   FLAG_X = FLAG_C = CFLAG_8(res);
21130   FLAG_V = VFLAG_SUB_8(src, dst, res);
21131   FLAG_Z = MASK_OUT_ABOVE_8(res);
21132 
21133   *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
21134 }
21135 
21136 
m68k_op_sub_8_er_pcdi(void)21137 static void m68k_op_sub_8_er_pcdi(void)
21138 {
21139   uint* r_dst = &DX;
21140   uint src = OPER_PCDI_8();
21141   uint dst = MASK_OUT_ABOVE_8(*r_dst);
21142   uint res = dst - src;
21143 
21144   FLAG_N = NFLAG_8(res);
21145   FLAG_X = FLAG_C = CFLAG_8(res);
21146   FLAG_V = VFLAG_SUB_8(src, dst, res);
21147   FLAG_Z = MASK_OUT_ABOVE_8(res);
21148 
21149   *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
21150 }
21151 
21152 
m68k_op_sub_8_er_pcix(void)21153 static void m68k_op_sub_8_er_pcix(void)
21154 {
21155   uint* r_dst = &DX;
21156   uint src = OPER_PCIX_8();
21157   uint dst = MASK_OUT_ABOVE_8(*r_dst);
21158   uint res = dst - src;
21159 
21160   FLAG_N = NFLAG_8(res);
21161   FLAG_X = FLAG_C = CFLAG_8(res);
21162   FLAG_V = VFLAG_SUB_8(src, dst, res);
21163   FLAG_Z = MASK_OUT_ABOVE_8(res);
21164 
21165   *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
21166 }
21167 
21168 
m68k_op_sub_8_er_i(void)21169 static void m68k_op_sub_8_er_i(void)
21170 {
21171   uint* r_dst = &DX;
21172   uint src = OPER_I_8();
21173   uint dst = MASK_OUT_ABOVE_8(*r_dst);
21174   uint res = dst - src;
21175 
21176   FLAG_N = NFLAG_8(res);
21177   FLAG_X = FLAG_C = CFLAG_8(res);
21178   FLAG_V = VFLAG_SUB_8(src, dst, res);
21179   FLAG_Z = MASK_OUT_ABOVE_8(res);
21180 
21181   *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
21182 }
21183 
21184 
m68k_op_sub_16_er_d(void)21185 static void m68k_op_sub_16_er_d(void)
21186 {
21187   uint* r_dst = &DX;
21188   uint src = MASK_OUT_ABOVE_16(DY);
21189   uint dst = MASK_OUT_ABOVE_16(*r_dst);
21190   uint res = dst - src;
21191 
21192   FLAG_N = NFLAG_16(res);
21193   FLAG_X = FLAG_C = CFLAG_16(res);
21194   FLAG_V = VFLAG_SUB_16(src, dst, res);
21195   FLAG_Z = MASK_OUT_ABOVE_16(res);
21196 
21197   *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
21198 }
21199 
21200 
m68k_op_sub_16_er_a(void)21201 static void m68k_op_sub_16_er_a(void)
21202 {
21203   uint* r_dst = &DX;
21204   uint src = MASK_OUT_ABOVE_16(AY);
21205   uint dst = MASK_OUT_ABOVE_16(*r_dst);
21206   uint res = dst - src;
21207 
21208   FLAG_N = NFLAG_16(res);
21209   FLAG_X = FLAG_C = CFLAG_16(res);
21210   FLAG_V = VFLAG_SUB_16(src, dst, res);
21211   FLAG_Z = MASK_OUT_ABOVE_16(res);
21212 
21213   *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
21214 }
21215 
21216 
m68k_op_sub_16_er_ai(void)21217 static void m68k_op_sub_16_er_ai(void)
21218 {
21219   uint* r_dst = &DX;
21220   uint src = OPER_AY_AI_16();
21221   uint dst = MASK_OUT_ABOVE_16(*r_dst);
21222   uint res = dst - src;
21223 
21224   FLAG_N = NFLAG_16(res);
21225   FLAG_X = FLAG_C = CFLAG_16(res);
21226   FLAG_V = VFLAG_SUB_16(src, dst, res);
21227   FLAG_Z = MASK_OUT_ABOVE_16(res);
21228 
21229   *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
21230 }
21231 
21232 
m68k_op_sub_16_er_pi(void)21233 static void m68k_op_sub_16_er_pi(void)
21234 {
21235   uint* r_dst = &DX;
21236   uint src = OPER_AY_PI_16();
21237   uint dst = MASK_OUT_ABOVE_16(*r_dst);
21238   uint res = dst - src;
21239 
21240   FLAG_N = NFLAG_16(res);
21241   FLAG_X = FLAG_C = CFLAG_16(res);
21242   FLAG_V = VFLAG_SUB_16(src, dst, res);
21243   FLAG_Z = MASK_OUT_ABOVE_16(res);
21244 
21245   *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
21246 }
21247 
21248 
m68k_op_sub_16_er_pd(void)21249 static void m68k_op_sub_16_er_pd(void)
21250 {
21251   uint* r_dst = &DX;
21252   uint src = OPER_AY_PD_16();
21253   uint dst = MASK_OUT_ABOVE_16(*r_dst);
21254   uint res = dst - src;
21255 
21256   FLAG_N = NFLAG_16(res);
21257   FLAG_X = FLAG_C = CFLAG_16(res);
21258   FLAG_V = VFLAG_SUB_16(src, dst, res);
21259   FLAG_Z = MASK_OUT_ABOVE_16(res);
21260 
21261   *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
21262 }
21263 
21264 
m68k_op_sub_16_er_di(void)21265 static void m68k_op_sub_16_er_di(void)
21266 {
21267   uint* r_dst = &DX;
21268   uint src = OPER_AY_DI_16();
21269   uint dst = MASK_OUT_ABOVE_16(*r_dst);
21270   uint res = dst - src;
21271 
21272   FLAG_N = NFLAG_16(res);
21273   FLAG_X = FLAG_C = CFLAG_16(res);
21274   FLAG_V = VFLAG_SUB_16(src, dst, res);
21275   FLAG_Z = MASK_OUT_ABOVE_16(res);
21276 
21277   *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
21278 }
21279 
21280 
m68k_op_sub_16_er_ix(void)21281 static void m68k_op_sub_16_er_ix(void)
21282 {
21283   uint* r_dst = &DX;
21284   uint src = OPER_AY_IX_16();
21285   uint dst = MASK_OUT_ABOVE_16(*r_dst);
21286   uint res = dst - src;
21287 
21288   FLAG_N = NFLAG_16(res);
21289   FLAG_X = FLAG_C = CFLAG_16(res);
21290   FLAG_V = VFLAG_SUB_16(src, dst, res);
21291   FLAG_Z = MASK_OUT_ABOVE_16(res);
21292 
21293   *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
21294 }
21295 
21296 
m68k_op_sub_16_er_aw(void)21297 static void m68k_op_sub_16_er_aw(void)
21298 {
21299   uint* r_dst = &DX;
21300   uint src = OPER_AW_16();
21301   uint dst = MASK_OUT_ABOVE_16(*r_dst);
21302   uint res = dst - src;
21303 
21304   FLAG_N = NFLAG_16(res);
21305   FLAG_X = FLAG_C = CFLAG_16(res);
21306   FLAG_V = VFLAG_SUB_16(src, dst, res);
21307   FLAG_Z = MASK_OUT_ABOVE_16(res);
21308 
21309   *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
21310 }
21311 
21312 
m68k_op_sub_16_er_al(void)21313 static void m68k_op_sub_16_er_al(void)
21314 {
21315   uint* r_dst = &DX;
21316   uint src = OPER_AL_16();
21317   uint dst = MASK_OUT_ABOVE_16(*r_dst);
21318   uint res = dst - src;
21319 
21320   FLAG_N = NFLAG_16(res);
21321   FLAG_X = FLAG_C = CFLAG_16(res);
21322   FLAG_V = VFLAG_SUB_16(src, dst, res);
21323   FLAG_Z = MASK_OUT_ABOVE_16(res);
21324 
21325   *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
21326 }
21327 
21328 
m68k_op_sub_16_er_pcdi(void)21329 static void m68k_op_sub_16_er_pcdi(void)
21330 {
21331   uint* r_dst = &DX;
21332   uint src = OPER_PCDI_16();
21333   uint dst = MASK_OUT_ABOVE_16(*r_dst);
21334   uint res = dst - src;
21335 
21336   FLAG_N = NFLAG_16(res);
21337   FLAG_X = FLAG_C = CFLAG_16(res);
21338   FLAG_V = VFLAG_SUB_16(src, dst, res);
21339   FLAG_Z = MASK_OUT_ABOVE_16(res);
21340 
21341   *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
21342 }
21343 
21344 
m68k_op_sub_16_er_pcix(void)21345 static void m68k_op_sub_16_er_pcix(void)
21346 {
21347   uint* r_dst = &DX;
21348   uint src = OPER_PCIX_16();
21349   uint dst = MASK_OUT_ABOVE_16(*r_dst);
21350   uint res = dst - src;
21351 
21352   FLAG_N = NFLAG_16(res);
21353   FLAG_X = FLAG_C = CFLAG_16(res);
21354   FLAG_V = VFLAG_SUB_16(src, dst, res);
21355   FLAG_Z = MASK_OUT_ABOVE_16(res);
21356 
21357   *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
21358 }
21359 
21360 
m68k_op_sub_16_er_i(void)21361 static void m68k_op_sub_16_er_i(void)
21362 {
21363   uint* r_dst = &DX;
21364   uint src = OPER_I_16();
21365   uint dst = MASK_OUT_ABOVE_16(*r_dst);
21366   uint res = dst - src;
21367 
21368   FLAG_N = NFLAG_16(res);
21369   FLAG_X = FLAG_C = CFLAG_16(res);
21370   FLAG_V = VFLAG_SUB_16(src, dst, res);
21371   FLAG_Z = MASK_OUT_ABOVE_16(res);
21372 
21373   *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
21374 }
21375 
21376 
m68k_op_sub_32_er_d(void)21377 static void m68k_op_sub_32_er_d(void)
21378 {
21379   uint* r_dst = &DX;
21380   uint src = DY;
21381   uint dst = *r_dst;
21382   uint res = dst - src;
21383 
21384   FLAG_N = NFLAG_32(res);
21385   FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
21386   FLAG_V = VFLAG_SUB_32(src, dst, res);
21387   FLAG_Z = MASK_OUT_ABOVE_32(res);
21388 
21389   *r_dst = FLAG_Z;
21390 }
21391 
21392 
m68k_op_sub_32_er_a(void)21393 static void m68k_op_sub_32_er_a(void)
21394 {
21395   uint* r_dst = &DX;
21396   uint src = AY;
21397   uint dst = *r_dst;
21398   uint res = dst - src;
21399 
21400   FLAG_N = NFLAG_32(res);
21401   FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
21402   FLAG_V = VFLAG_SUB_32(src, dst, res);
21403   FLAG_Z = MASK_OUT_ABOVE_32(res);
21404 
21405   *r_dst = FLAG_Z;
21406 }
21407 
21408 
m68k_op_sub_32_er_ai(void)21409 static void m68k_op_sub_32_er_ai(void)
21410 {
21411   uint* r_dst = &DX;
21412   uint src = OPER_AY_AI_32();
21413   uint dst = *r_dst;
21414   uint res = dst - src;
21415 
21416   FLAG_N = NFLAG_32(res);
21417   FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
21418   FLAG_V = VFLAG_SUB_32(src, dst, res);
21419   FLAG_Z = MASK_OUT_ABOVE_32(res);
21420 
21421   *r_dst = FLAG_Z;
21422 }
21423 
21424 
m68k_op_sub_32_er_pi(void)21425 static void m68k_op_sub_32_er_pi(void)
21426 {
21427   uint* r_dst = &DX;
21428   uint src = OPER_AY_PI_32();
21429   uint dst = *r_dst;
21430   uint res = dst - src;
21431 
21432   FLAG_N = NFLAG_32(res);
21433   FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
21434   FLAG_V = VFLAG_SUB_32(src, dst, res);
21435   FLAG_Z = MASK_OUT_ABOVE_32(res);
21436 
21437   *r_dst = FLAG_Z;
21438 }
21439 
21440 
m68k_op_sub_32_er_pd(void)21441 static void m68k_op_sub_32_er_pd(void)
21442 {
21443   uint* r_dst = &DX;
21444   uint src = OPER_AY_PD_32();
21445   uint dst = *r_dst;
21446   uint res = dst - src;
21447 
21448   FLAG_N = NFLAG_32(res);
21449   FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
21450   FLAG_V = VFLAG_SUB_32(src, dst, res);
21451   FLAG_Z = MASK_OUT_ABOVE_32(res);
21452 
21453   *r_dst = FLAG_Z;
21454 }
21455 
21456 
m68k_op_sub_32_er_di(void)21457 static void m68k_op_sub_32_er_di(void)
21458 {
21459   uint* r_dst = &DX;
21460   uint src = OPER_AY_DI_32();
21461   uint dst = *r_dst;
21462   uint res = dst - src;
21463 
21464   FLAG_N = NFLAG_32(res);
21465   FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
21466   FLAG_V = VFLAG_SUB_32(src, dst, res);
21467   FLAG_Z = MASK_OUT_ABOVE_32(res);
21468 
21469   *r_dst = FLAG_Z;
21470 }
21471 
21472 
m68k_op_sub_32_er_ix(void)21473 static void m68k_op_sub_32_er_ix(void)
21474 {
21475   uint* r_dst = &DX;
21476   uint src = OPER_AY_IX_32();
21477   uint dst = *r_dst;
21478   uint res = dst - src;
21479 
21480   FLAG_N = NFLAG_32(res);
21481   FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
21482   FLAG_V = VFLAG_SUB_32(src, dst, res);
21483   FLAG_Z = MASK_OUT_ABOVE_32(res);
21484 
21485   *r_dst = FLAG_Z;
21486 }
21487 
21488 
m68k_op_sub_32_er_aw(void)21489 static void m68k_op_sub_32_er_aw(void)
21490 {
21491   uint* r_dst = &DX;
21492   uint src = OPER_AW_32();
21493   uint dst = *r_dst;
21494   uint res = dst - src;
21495 
21496   FLAG_N = NFLAG_32(res);
21497   FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
21498   FLAG_V = VFLAG_SUB_32(src, dst, res);
21499   FLAG_Z = MASK_OUT_ABOVE_32(res);
21500 
21501   *r_dst = FLAG_Z;
21502 }
21503 
21504 
m68k_op_sub_32_er_al(void)21505 static void m68k_op_sub_32_er_al(void)
21506 {
21507   uint* r_dst = &DX;
21508   uint src = OPER_AL_32();
21509   uint dst = *r_dst;
21510   uint res = dst - src;
21511 
21512   FLAG_N = NFLAG_32(res);
21513   FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
21514   FLAG_V = VFLAG_SUB_32(src, dst, res);
21515   FLAG_Z = MASK_OUT_ABOVE_32(res);
21516 
21517   *r_dst = FLAG_Z;
21518 }
21519 
21520 
m68k_op_sub_32_er_pcdi(void)21521 static void m68k_op_sub_32_er_pcdi(void)
21522 {
21523   uint* r_dst = &DX;
21524   uint src = OPER_PCDI_32();
21525   uint dst = *r_dst;
21526   uint res = dst - src;
21527 
21528   FLAG_N = NFLAG_32(res);
21529   FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
21530   FLAG_V = VFLAG_SUB_32(src, dst, res);
21531   FLAG_Z = MASK_OUT_ABOVE_32(res);
21532 
21533   *r_dst = FLAG_Z;
21534 }
21535 
21536 
m68k_op_sub_32_er_pcix(void)21537 static void m68k_op_sub_32_er_pcix(void)
21538 {
21539   uint* r_dst = &DX;
21540   uint src = OPER_PCIX_32();
21541   uint dst = *r_dst;
21542   uint res = dst - src;
21543 
21544   FLAG_N = NFLAG_32(res);
21545   FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
21546   FLAG_V = VFLAG_SUB_32(src, dst, res);
21547   FLAG_Z = MASK_OUT_ABOVE_32(res);
21548 
21549   *r_dst = FLAG_Z;
21550 }
21551 
21552 
m68k_op_sub_32_er_i(void)21553 static void m68k_op_sub_32_er_i(void)
21554 {
21555   uint* r_dst = &DX;
21556   uint src = OPER_I_32();
21557   uint dst = *r_dst;
21558   uint res = dst - src;
21559 
21560   FLAG_N = NFLAG_32(res);
21561   FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
21562   FLAG_V = VFLAG_SUB_32(src, dst, res);
21563   FLAG_Z = MASK_OUT_ABOVE_32(res);
21564 
21565   *r_dst = FLAG_Z;
21566 }
21567 
21568 
m68k_op_sub_8_re_ai(void)21569 static void m68k_op_sub_8_re_ai(void)
21570 {
21571   uint ea = EA_AY_AI_8();
21572   uint src = MASK_OUT_ABOVE_8(DX);
21573   uint dst = m68ki_read_8(ea);
21574   uint res = dst - src;
21575 
21576   FLAG_N = NFLAG_8(res);
21577   FLAG_Z = MASK_OUT_ABOVE_8(res);
21578   FLAG_X = FLAG_C = CFLAG_8(res);
21579   FLAG_V = VFLAG_SUB_8(src, dst, res);
21580 
21581   m68ki_write_8(ea, FLAG_Z);
21582 }
21583 
21584 
m68k_op_sub_8_re_pi(void)21585 static void m68k_op_sub_8_re_pi(void)
21586 {
21587   uint ea = EA_AY_PI_8();
21588   uint src = MASK_OUT_ABOVE_8(DX);
21589   uint dst = m68ki_read_8(ea);
21590   uint res = dst - src;
21591 
21592   FLAG_N = NFLAG_8(res);
21593   FLAG_Z = MASK_OUT_ABOVE_8(res);
21594   FLAG_X = FLAG_C = CFLAG_8(res);
21595   FLAG_V = VFLAG_SUB_8(src, dst, res);
21596 
21597   m68ki_write_8(ea, FLAG_Z);
21598 }
21599 
21600 
m68k_op_sub_8_re_pi7(void)21601 static void m68k_op_sub_8_re_pi7(void)
21602 {
21603   uint ea = EA_A7_PI_8();
21604   uint src = MASK_OUT_ABOVE_8(DX);
21605   uint dst = m68ki_read_8(ea);
21606   uint res = dst - src;
21607 
21608   FLAG_N = NFLAG_8(res);
21609   FLAG_Z = MASK_OUT_ABOVE_8(res);
21610   FLAG_X = FLAG_C = CFLAG_8(res);
21611   FLAG_V = VFLAG_SUB_8(src, dst, res);
21612 
21613   m68ki_write_8(ea, FLAG_Z);
21614 }
21615 
21616 
m68k_op_sub_8_re_pd(void)21617 static void m68k_op_sub_8_re_pd(void)
21618 {
21619   uint ea = EA_AY_PD_8();
21620   uint src = MASK_OUT_ABOVE_8(DX);
21621   uint dst = m68ki_read_8(ea);
21622   uint res = dst - src;
21623 
21624   FLAG_N = NFLAG_8(res);
21625   FLAG_Z = MASK_OUT_ABOVE_8(res);
21626   FLAG_X = FLAG_C = CFLAG_8(res);
21627   FLAG_V = VFLAG_SUB_8(src, dst, res);
21628 
21629   m68ki_write_8(ea, FLAG_Z);
21630 }
21631 
21632 
m68k_op_sub_8_re_pd7(void)21633 static void m68k_op_sub_8_re_pd7(void)
21634 {
21635   uint ea = EA_A7_PD_8();
21636   uint src = MASK_OUT_ABOVE_8(DX);
21637   uint dst = m68ki_read_8(ea);
21638   uint res = dst - src;
21639 
21640   FLAG_N = NFLAG_8(res);
21641   FLAG_Z = MASK_OUT_ABOVE_8(res);
21642   FLAG_X = FLAG_C = CFLAG_8(res);
21643   FLAG_V = VFLAG_SUB_8(src, dst, res);
21644 
21645   m68ki_write_8(ea, FLAG_Z);
21646 }
21647 
21648 
m68k_op_sub_8_re_di(void)21649 static void m68k_op_sub_8_re_di(void)
21650 {
21651   uint ea = EA_AY_DI_8();
21652   uint src = MASK_OUT_ABOVE_8(DX);
21653   uint dst = m68ki_read_8(ea);
21654   uint res = dst - src;
21655 
21656   FLAG_N = NFLAG_8(res);
21657   FLAG_Z = MASK_OUT_ABOVE_8(res);
21658   FLAG_X = FLAG_C = CFLAG_8(res);
21659   FLAG_V = VFLAG_SUB_8(src, dst, res);
21660 
21661   m68ki_write_8(ea, FLAG_Z);
21662 }
21663 
21664 
m68k_op_sub_8_re_ix(void)21665 static void m68k_op_sub_8_re_ix(void)
21666 {
21667   uint ea = EA_AY_IX_8();
21668   uint src = MASK_OUT_ABOVE_8(DX);
21669   uint dst = m68ki_read_8(ea);
21670   uint res = dst - src;
21671 
21672   FLAG_N = NFLAG_8(res);
21673   FLAG_Z = MASK_OUT_ABOVE_8(res);
21674   FLAG_X = FLAG_C = CFLAG_8(res);
21675   FLAG_V = VFLAG_SUB_8(src, dst, res);
21676 
21677   m68ki_write_8(ea, FLAG_Z);
21678 }
21679 
21680 
m68k_op_sub_8_re_aw(void)21681 static void m68k_op_sub_8_re_aw(void)
21682 {
21683   uint ea = EA_AW_8();
21684   uint src = MASK_OUT_ABOVE_8(DX);
21685   uint dst = m68ki_read_8(ea);
21686   uint res = dst - src;
21687 
21688   FLAG_N = NFLAG_8(res);
21689   FLAG_Z = MASK_OUT_ABOVE_8(res);
21690   FLAG_X = FLAG_C = CFLAG_8(res);
21691   FLAG_V = VFLAG_SUB_8(src, dst, res);
21692 
21693   m68ki_write_8(ea, FLAG_Z);
21694 }
21695 
21696 
m68k_op_sub_8_re_al(void)21697 static void m68k_op_sub_8_re_al(void)
21698 {
21699   uint ea = EA_AL_8();
21700   uint src = MASK_OUT_ABOVE_8(DX);
21701   uint dst = m68ki_read_8(ea);
21702   uint res = dst - src;
21703 
21704   FLAG_N = NFLAG_8(res);
21705   FLAG_Z = MASK_OUT_ABOVE_8(res);
21706   FLAG_X = FLAG_C = CFLAG_8(res);
21707   FLAG_V = VFLAG_SUB_8(src, dst, res);
21708 
21709   m68ki_write_8(ea, FLAG_Z);
21710 }
21711 
21712 
m68k_op_sub_16_re_ai(void)21713 static void m68k_op_sub_16_re_ai(void)
21714 {
21715   uint ea = EA_AY_AI_16();
21716   uint src = MASK_OUT_ABOVE_16(DX);
21717   uint dst = m68ki_read_16(ea);
21718   uint res = dst - src;
21719 
21720   FLAG_N = NFLAG_16(res);
21721   FLAG_Z = MASK_OUT_ABOVE_16(res);
21722   FLAG_X = FLAG_C = CFLAG_16(res);
21723   FLAG_V = VFLAG_SUB_16(src, dst, res);
21724 
21725   m68ki_write_16(ea, FLAG_Z);
21726 }
21727 
21728 
m68k_op_sub_16_re_pi(void)21729 static void m68k_op_sub_16_re_pi(void)
21730 {
21731   uint ea = EA_AY_PI_16();
21732   uint src = MASK_OUT_ABOVE_16(DX);
21733   uint dst = m68ki_read_16(ea);
21734   uint res = dst - src;
21735 
21736   FLAG_N = NFLAG_16(res);
21737   FLAG_Z = MASK_OUT_ABOVE_16(res);
21738   FLAG_X = FLAG_C = CFLAG_16(res);
21739   FLAG_V = VFLAG_SUB_16(src, dst, res);
21740 
21741   m68ki_write_16(ea, FLAG_Z);
21742 }
21743 
21744 
m68k_op_sub_16_re_pd(void)21745 static void m68k_op_sub_16_re_pd(void)
21746 {
21747   uint ea = EA_AY_PD_16();
21748   uint src = MASK_OUT_ABOVE_16(DX);
21749   uint dst = m68ki_read_16(ea);
21750   uint res = dst - src;
21751 
21752   FLAG_N = NFLAG_16(res);
21753   FLAG_Z = MASK_OUT_ABOVE_16(res);
21754   FLAG_X = FLAG_C = CFLAG_16(res);
21755   FLAG_V = VFLAG_SUB_16(src, dst, res);
21756 
21757   m68ki_write_16(ea, FLAG_Z);
21758 }
21759 
21760 
m68k_op_sub_16_re_di(void)21761 static void m68k_op_sub_16_re_di(void)
21762 {
21763   uint ea = EA_AY_DI_16();
21764   uint src = MASK_OUT_ABOVE_16(DX);
21765   uint dst = m68ki_read_16(ea);
21766   uint res = dst - src;
21767 
21768   FLAG_N = NFLAG_16(res);
21769   FLAG_Z = MASK_OUT_ABOVE_16(res);
21770   FLAG_X = FLAG_C = CFLAG_16(res);
21771   FLAG_V = VFLAG_SUB_16(src, dst, res);
21772 
21773   m68ki_write_16(ea, FLAG_Z);
21774 }
21775 
21776 
m68k_op_sub_16_re_ix(void)21777 static void m68k_op_sub_16_re_ix(void)
21778 {
21779   uint ea = EA_AY_IX_16();
21780   uint src = MASK_OUT_ABOVE_16(DX);
21781   uint dst = m68ki_read_16(ea);
21782   uint res = dst - src;
21783 
21784   FLAG_N = NFLAG_16(res);
21785   FLAG_Z = MASK_OUT_ABOVE_16(res);
21786   FLAG_X = FLAG_C = CFLAG_16(res);
21787   FLAG_V = VFLAG_SUB_16(src, dst, res);
21788 
21789   m68ki_write_16(ea, FLAG_Z);
21790 }
21791 
21792 
m68k_op_sub_16_re_aw(void)21793 static void m68k_op_sub_16_re_aw(void)
21794 {
21795   uint ea = EA_AW_16();
21796   uint src = MASK_OUT_ABOVE_16(DX);
21797   uint dst = m68ki_read_16(ea);
21798   uint res = dst - src;
21799 
21800   FLAG_N = NFLAG_16(res);
21801   FLAG_Z = MASK_OUT_ABOVE_16(res);
21802   FLAG_X = FLAG_C = CFLAG_16(res);
21803   FLAG_V = VFLAG_SUB_16(src, dst, res);
21804 
21805   m68ki_write_16(ea, FLAG_Z);
21806 }
21807 
21808 
m68k_op_sub_16_re_al(void)21809 static void m68k_op_sub_16_re_al(void)
21810 {
21811   uint ea = EA_AL_16();
21812   uint src = MASK_OUT_ABOVE_16(DX);
21813   uint dst = m68ki_read_16(ea);
21814   uint res = dst - src;
21815 
21816   FLAG_N = NFLAG_16(res);
21817   FLAG_Z = MASK_OUT_ABOVE_16(res);
21818   FLAG_X = FLAG_C = CFLAG_16(res);
21819   FLAG_V = VFLAG_SUB_16(src, dst, res);
21820 
21821   m68ki_write_16(ea, FLAG_Z);
21822 }
21823 
21824 
m68k_op_sub_32_re_ai(void)21825 static void m68k_op_sub_32_re_ai(void)
21826 {
21827   uint ea = EA_AY_AI_32();
21828   uint src = DX;
21829   uint dst = m68ki_read_32(ea);
21830   uint res = dst - src;
21831 
21832   FLAG_N = NFLAG_32(res);
21833   FLAG_Z = MASK_OUT_ABOVE_32(res);
21834   FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
21835   FLAG_V = VFLAG_SUB_32(src, dst, res);
21836 
21837   m68ki_write_32(ea, FLAG_Z);
21838 }
21839 
21840 
m68k_op_sub_32_re_pi(void)21841 static void m68k_op_sub_32_re_pi(void)
21842 {
21843   uint ea = EA_AY_PI_32();
21844   uint src = DX;
21845   uint dst = m68ki_read_32(ea);
21846   uint res = dst - src;
21847 
21848   FLAG_N = NFLAG_32(res);
21849   FLAG_Z = MASK_OUT_ABOVE_32(res);
21850   FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
21851   FLAG_V = VFLAG_SUB_32(src, dst, res);
21852 
21853   m68ki_write_32(ea, FLAG_Z);
21854 }
21855 
21856 
m68k_op_sub_32_re_pd(void)21857 static void m68k_op_sub_32_re_pd(void)
21858 {
21859   uint ea = EA_AY_PD_32();
21860   uint src = DX;
21861   uint dst = m68ki_read_32(ea);
21862   uint res = dst - src;
21863 
21864   FLAG_N = NFLAG_32(res);
21865   FLAG_Z = MASK_OUT_ABOVE_32(res);
21866   FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
21867   FLAG_V = VFLAG_SUB_32(src, dst, res);
21868 
21869   m68ki_write_32(ea, FLAG_Z);
21870 }
21871 
21872 
m68k_op_sub_32_re_di(void)21873 static void m68k_op_sub_32_re_di(void)
21874 {
21875   uint ea = EA_AY_DI_32();
21876   uint src = DX;
21877   uint dst = m68ki_read_32(ea);
21878   uint res = dst - src;
21879 
21880   FLAG_N = NFLAG_32(res);
21881   FLAG_Z = MASK_OUT_ABOVE_32(res);
21882   FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
21883   FLAG_V = VFLAG_SUB_32(src, dst, res);
21884 
21885   m68ki_write_32(ea, FLAG_Z);
21886 }
21887 
21888 
m68k_op_sub_32_re_ix(void)21889 static void m68k_op_sub_32_re_ix(void)
21890 {
21891   uint ea = EA_AY_IX_32();
21892   uint src = DX;
21893   uint dst = m68ki_read_32(ea);
21894   uint res = dst - src;
21895 
21896   FLAG_N = NFLAG_32(res);
21897   FLAG_Z = MASK_OUT_ABOVE_32(res);
21898   FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
21899   FLAG_V = VFLAG_SUB_32(src, dst, res);
21900 
21901   m68ki_write_32(ea, FLAG_Z);
21902 }
21903 
21904 
m68k_op_sub_32_re_aw(void)21905 static void m68k_op_sub_32_re_aw(void)
21906 {
21907   uint ea = EA_AW_32();
21908   uint src = DX;
21909   uint dst = m68ki_read_32(ea);
21910   uint res = dst - src;
21911 
21912   FLAG_N = NFLAG_32(res);
21913   FLAG_Z = MASK_OUT_ABOVE_32(res);
21914   FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
21915   FLAG_V = VFLAG_SUB_32(src, dst, res);
21916 
21917   m68ki_write_32(ea, FLAG_Z);
21918 }
21919 
21920 
m68k_op_sub_32_re_al(void)21921 static void m68k_op_sub_32_re_al(void)
21922 {
21923   uint ea = EA_AL_32();
21924   uint src = DX;
21925   uint dst = m68ki_read_32(ea);
21926   uint res = dst - src;
21927 
21928   FLAG_N = NFLAG_32(res);
21929   FLAG_Z = MASK_OUT_ABOVE_32(res);
21930   FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
21931   FLAG_V = VFLAG_SUB_32(src, dst, res);
21932 
21933   m68ki_write_32(ea, FLAG_Z);
21934 }
21935 
21936 
m68k_op_suba_16_d(void)21937 static void m68k_op_suba_16_d(void)
21938 {
21939   uint* r_dst = &AX;
21940 
21941   *r_dst = MASK_OUT_ABOVE_32(*r_dst - MAKE_INT_16(DY));
21942 }
21943 
21944 
m68k_op_suba_16_a(void)21945 static void m68k_op_suba_16_a(void)
21946 {
21947   uint* r_dst = &AX;
21948 
21949   *r_dst = MASK_OUT_ABOVE_32(*r_dst - MAKE_INT_16(AY));
21950 }
21951 
21952 
m68k_op_suba_16_ai(void)21953 static void m68k_op_suba_16_ai(void)
21954 {
21955   uint* r_dst = &AX;
21956   uint src = MAKE_INT_16(OPER_AY_AI_16());
21957 
21958   *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
21959 }
21960 
21961 
m68k_op_suba_16_pi(void)21962 static void m68k_op_suba_16_pi(void)
21963 {
21964   uint* r_dst = &AX;
21965   uint src = MAKE_INT_16(OPER_AY_PI_16());
21966 
21967   *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
21968 }
21969 
21970 
m68k_op_suba_16_pd(void)21971 static void m68k_op_suba_16_pd(void)
21972 {
21973   uint* r_dst = &AX;
21974   uint src = MAKE_INT_16(OPER_AY_PD_16());
21975 
21976   *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
21977 }
21978 
21979 
m68k_op_suba_16_di(void)21980 static void m68k_op_suba_16_di(void)
21981 {
21982   uint* r_dst = &AX;
21983   uint src = MAKE_INT_16(OPER_AY_DI_16());
21984 
21985   *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
21986 }
21987 
21988 
m68k_op_suba_16_ix(void)21989 static void m68k_op_suba_16_ix(void)
21990 {
21991   uint* r_dst = &AX;
21992   uint src = MAKE_INT_16(OPER_AY_IX_16());
21993 
21994   *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
21995 }
21996 
21997 
m68k_op_suba_16_aw(void)21998 static void m68k_op_suba_16_aw(void)
21999 {
22000   uint* r_dst = &AX;
22001   uint src = MAKE_INT_16(OPER_AW_16());
22002 
22003   *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
22004 }
22005 
22006 
m68k_op_suba_16_al(void)22007 static void m68k_op_suba_16_al(void)
22008 {
22009   uint* r_dst = &AX;
22010   uint src = MAKE_INT_16(OPER_AL_16());
22011 
22012   *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
22013 }
22014 
22015 
m68k_op_suba_16_pcdi(void)22016 static void m68k_op_suba_16_pcdi(void)
22017 {
22018   uint* r_dst = &AX;
22019   uint src = MAKE_INT_16(OPER_PCDI_16());
22020 
22021   *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
22022 }
22023 
22024 
m68k_op_suba_16_pcix(void)22025 static void m68k_op_suba_16_pcix(void)
22026 {
22027   uint* r_dst = &AX;
22028   uint src = MAKE_INT_16(OPER_PCIX_16());
22029 
22030   *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
22031 }
22032 
22033 
m68k_op_suba_16_i(void)22034 static void m68k_op_suba_16_i(void)
22035 {
22036   uint* r_dst = &AX;
22037   uint src = MAKE_INT_16(OPER_I_16());
22038 
22039   *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
22040 }
22041 
22042 
m68k_op_suba_32_d(void)22043 static void m68k_op_suba_32_d(void)
22044 {
22045   uint* r_dst = &AX;
22046 
22047   *r_dst = MASK_OUT_ABOVE_32(*r_dst - DY);
22048 }
22049 
22050 
m68k_op_suba_32_a(void)22051 static void m68k_op_suba_32_a(void)
22052 {
22053   uint* r_dst = &AX;
22054 
22055   *r_dst = MASK_OUT_ABOVE_32(*r_dst - AY);
22056 }
22057 
22058 
m68k_op_suba_32_ai(void)22059 static void m68k_op_suba_32_ai(void)
22060 {
22061   uint* r_dst = &AX;
22062   uint src = OPER_AY_AI_32();
22063 
22064   *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
22065 }
22066 
22067 
m68k_op_suba_32_pi(void)22068 static void m68k_op_suba_32_pi(void)
22069 {
22070   uint* r_dst = &AX;
22071   uint src = OPER_AY_PI_32();
22072 
22073   *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
22074 }
22075 
22076 
m68k_op_suba_32_pd(void)22077 static void m68k_op_suba_32_pd(void)
22078 {
22079   uint* r_dst = &AX;
22080   uint src = OPER_AY_PD_32();
22081 
22082   *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
22083 }
22084 
22085 
m68k_op_suba_32_di(void)22086 static void m68k_op_suba_32_di(void)
22087 {
22088   uint* r_dst = &AX;
22089   uint src = OPER_AY_DI_32();
22090 
22091   *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
22092 }
22093 
22094 
m68k_op_suba_32_ix(void)22095 static void m68k_op_suba_32_ix(void)
22096 {
22097   uint* r_dst = &AX;
22098   uint src = OPER_AY_IX_32();
22099 
22100   *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
22101 }
22102 
22103 
m68k_op_suba_32_aw(void)22104 static void m68k_op_suba_32_aw(void)
22105 {
22106   uint* r_dst = &AX;
22107   uint src = OPER_AW_32();
22108 
22109   *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
22110 }
22111 
22112 
m68k_op_suba_32_al(void)22113 static void m68k_op_suba_32_al(void)
22114 {
22115   uint* r_dst = &AX;
22116   uint src = OPER_AL_32();
22117 
22118   *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
22119 }
22120 
22121 
m68k_op_suba_32_pcdi(void)22122 static void m68k_op_suba_32_pcdi(void)
22123 {
22124   uint* r_dst = &AX;
22125   uint src = OPER_PCDI_32();
22126 
22127   *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
22128 }
22129 
22130 
m68k_op_suba_32_pcix(void)22131 static void m68k_op_suba_32_pcix(void)
22132 {
22133   uint* r_dst = &AX;
22134   uint src = OPER_PCIX_32();
22135 
22136   *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
22137 }
22138 
22139 
m68k_op_suba_32_i(void)22140 static void m68k_op_suba_32_i(void)
22141 {
22142   uint* r_dst = &AX;
22143   uint src = OPER_I_32();
22144 
22145   *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
22146 }
22147 
22148 
m68k_op_subi_8_d(void)22149 static void m68k_op_subi_8_d(void)
22150 {
22151   uint* r_dst = &DY;
22152   uint src = OPER_I_8();
22153   uint dst = MASK_OUT_ABOVE_8(*r_dst);
22154   uint res = dst - src;
22155 
22156   FLAG_N = NFLAG_8(res);
22157   FLAG_Z = MASK_OUT_ABOVE_8(res);
22158   FLAG_X = FLAG_C = CFLAG_8(res);
22159   FLAG_V = VFLAG_SUB_8(src, dst, res);
22160 
22161   *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
22162 }
22163 
22164 
m68k_op_subi_8_ai(void)22165 static void m68k_op_subi_8_ai(void)
22166 {
22167   uint src = OPER_I_8();
22168   uint ea = EA_AY_AI_8();
22169   uint dst = m68ki_read_8(ea);
22170   uint res = dst - src;
22171 
22172   FLAG_N = NFLAG_8(res);
22173   FLAG_Z = MASK_OUT_ABOVE_8(res);
22174   FLAG_X = FLAG_C = CFLAG_8(res);
22175   FLAG_V = VFLAG_SUB_8(src, dst, res);
22176 
22177   m68ki_write_8(ea, FLAG_Z);
22178 }
22179 
22180 
m68k_op_subi_8_pi(void)22181 static void m68k_op_subi_8_pi(void)
22182 {
22183   uint src = OPER_I_8();
22184   uint ea = EA_AY_PI_8();
22185   uint dst = m68ki_read_8(ea);
22186   uint res = dst - src;
22187 
22188   FLAG_N = NFLAG_8(res);
22189   FLAG_Z = MASK_OUT_ABOVE_8(res);
22190   FLAG_X = FLAG_C = CFLAG_8(res);
22191   FLAG_V = VFLAG_SUB_8(src, dst, res);
22192 
22193   m68ki_write_8(ea, FLAG_Z);
22194 }
22195 
22196 
m68k_op_subi_8_pi7(void)22197 static void m68k_op_subi_8_pi7(void)
22198 {
22199   uint src = OPER_I_8();
22200   uint ea = EA_A7_PI_8();
22201   uint dst = m68ki_read_8(ea);
22202   uint res = dst - src;
22203 
22204   FLAG_N = NFLAG_8(res);
22205   FLAG_Z = MASK_OUT_ABOVE_8(res);
22206   FLAG_X = FLAG_C = CFLAG_8(res);
22207   FLAG_V = VFLAG_SUB_8(src, dst, res);
22208 
22209   m68ki_write_8(ea, FLAG_Z);
22210 }
22211 
22212 
m68k_op_subi_8_pd(void)22213 static void m68k_op_subi_8_pd(void)
22214 {
22215   uint src = OPER_I_8();
22216   uint ea = EA_AY_PD_8();
22217   uint dst = m68ki_read_8(ea);
22218   uint res = dst - src;
22219 
22220   FLAG_N = NFLAG_8(res);
22221   FLAG_Z = MASK_OUT_ABOVE_8(res);
22222   FLAG_X = FLAG_C = CFLAG_8(res);
22223   FLAG_V = VFLAG_SUB_8(src, dst, res);
22224 
22225   m68ki_write_8(ea, FLAG_Z);
22226 }
22227 
22228 
m68k_op_subi_8_pd7(void)22229 static void m68k_op_subi_8_pd7(void)
22230 {
22231   uint src = OPER_I_8();
22232   uint ea = EA_A7_PD_8();
22233   uint dst = m68ki_read_8(ea);
22234   uint res = dst - src;
22235 
22236   FLAG_N = NFLAG_8(res);
22237   FLAG_Z = MASK_OUT_ABOVE_8(res);
22238   FLAG_X = FLAG_C = CFLAG_8(res);
22239   FLAG_V = VFLAG_SUB_8(src, dst, res);
22240 
22241   m68ki_write_8(ea, FLAG_Z);
22242 }
22243 
22244 
m68k_op_subi_8_di(void)22245 static void m68k_op_subi_8_di(void)
22246 {
22247   uint src = OPER_I_8();
22248   uint ea = EA_AY_DI_8();
22249   uint dst = m68ki_read_8(ea);
22250   uint res = dst - src;
22251 
22252   FLAG_N = NFLAG_8(res);
22253   FLAG_Z = MASK_OUT_ABOVE_8(res);
22254   FLAG_X = FLAG_C = CFLAG_8(res);
22255   FLAG_V = VFLAG_SUB_8(src, dst, res);
22256 
22257   m68ki_write_8(ea, FLAG_Z);
22258 }
22259 
22260 
m68k_op_subi_8_ix(void)22261 static void m68k_op_subi_8_ix(void)
22262 {
22263   uint src = OPER_I_8();
22264   uint ea = EA_AY_IX_8();
22265   uint dst = m68ki_read_8(ea);
22266   uint res = dst - src;
22267 
22268   FLAG_N = NFLAG_8(res);
22269   FLAG_Z = MASK_OUT_ABOVE_8(res);
22270   FLAG_X = FLAG_C = CFLAG_8(res);
22271   FLAG_V = VFLAG_SUB_8(src, dst, res);
22272 
22273   m68ki_write_8(ea, FLAG_Z);
22274 }
22275 
22276 
m68k_op_subi_8_aw(void)22277 static void m68k_op_subi_8_aw(void)
22278 {
22279   uint src = OPER_I_8();
22280   uint ea = EA_AW_8();
22281   uint dst = m68ki_read_8(ea);
22282   uint res = dst - src;
22283 
22284   FLAG_N = NFLAG_8(res);
22285   FLAG_Z = MASK_OUT_ABOVE_8(res);
22286   FLAG_X = FLAG_C = CFLAG_8(res);
22287   FLAG_V = VFLAG_SUB_8(src, dst, res);
22288 
22289   m68ki_write_8(ea, FLAG_Z);
22290 }
22291 
22292 
m68k_op_subi_8_al(void)22293 static void m68k_op_subi_8_al(void)
22294 {
22295   uint src = OPER_I_8();
22296   uint ea = EA_AL_8();
22297   uint dst = m68ki_read_8(ea);
22298   uint res = dst - src;
22299 
22300   FLAG_N = NFLAG_8(res);
22301   FLAG_Z = MASK_OUT_ABOVE_8(res);
22302   FLAG_X = FLAG_C = CFLAG_8(res);
22303   FLAG_V = VFLAG_SUB_8(src, dst, res);
22304 
22305   m68ki_write_8(ea, FLAG_Z);
22306 }
22307 
22308 
m68k_op_subi_16_d(void)22309 static void m68k_op_subi_16_d(void)
22310 {
22311   uint* r_dst = &DY;
22312   uint src = OPER_I_16();
22313   uint dst = MASK_OUT_ABOVE_16(*r_dst);
22314   uint res = dst - src;
22315 
22316   FLAG_N = NFLAG_16(res);
22317   FLAG_Z = MASK_OUT_ABOVE_16(res);
22318   FLAG_X = FLAG_C = CFLAG_16(res);
22319   FLAG_V = VFLAG_SUB_16(src, dst, res);
22320 
22321   *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
22322 }
22323 
22324 
m68k_op_subi_16_ai(void)22325 static void m68k_op_subi_16_ai(void)
22326 {
22327   uint src = OPER_I_16();
22328   uint ea = EA_AY_AI_16();
22329   uint dst = m68ki_read_16(ea);
22330   uint res = dst - src;
22331 
22332   FLAG_N = NFLAG_16(res);
22333   FLAG_Z = MASK_OUT_ABOVE_16(res);
22334   FLAG_X = FLAG_C = CFLAG_16(res);
22335   FLAG_V = VFLAG_SUB_16(src, dst, res);
22336 
22337   m68ki_write_16(ea, FLAG_Z);
22338 }
22339 
22340 
m68k_op_subi_16_pi(void)22341 static void m68k_op_subi_16_pi(void)
22342 {
22343   uint src = OPER_I_16();
22344   uint ea = EA_AY_PI_16();
22345   uint dst = m68ki_read_16(ea);
22346   uint res = dst - src;
22347 
22348   FLAG_N = NFLAG_16(res);
22349   FLAG_Z = MASK_OUT_ABOVE_16(res);
22350   FLAG_X = FLAG_C = CFLAG_16(res);
22351   FLAG_V = VFLAG_SUB_16(src, dst, res);
22352 
22353   m68ki_write_16(ea, FLAG_Z);
22354 }
22355 
22356 
m68k_op_subi_16_pd(void)22357 static void m68k_op_subi_16_pd(void)
22358 {
22359   uint src = OPER_I_16();
22360   uint ea = EA_AY_PD_16();
22361   uint dst = m68ki_read_16(ea);
22362   uint res = dst - src;
22363 
22364   FLAG_N = NFLAG_16(res);
22365   FLAG_Z = MASK_OUT_ABOVE_16(res);
22366   FLAG_X = FLAG_C = CFLAG_16(res);
22367   FLAG_V = VFLAG_SUB_16(src, dst, res);
22368 
22369   m68ki_write_16(ea, FLAG_Z);
22370 }
22371 
22372 
m68k_op_subi_16_di(void)22373 static void m68k_op_subi_16_di(void)
22374 {
22375   uint src = OPER_I_16();
22376   uint ea = EA_AY_DI_16();
22377   uint dst = m68ki_read_16(ea);
22378   uint res = dst - src;
22379 
22380   FLAG_N = NFLAG_16(res);
22381   FLAG_Z = MASK_OUT_ABOVE_16(res);
22382   FLAG_X = FLAG_C = CFLAG_16(res);
22383   FLAG_V = VFLAG_SUB_16(src, dst, res);
22384 
22385   m68ki_write_16(ea, FLAG_Z);
22386 }
22387 
22388 
m68k_op_subi_16_ix(void)22389 static void m68k_op_subi_16_ix(void)
22390 {
22391   uint src = OPER_I_16();
22392   uint ea = EA_AY_IX_16();
22393   uint dst = m68ki_read_16(ea);
22394   uint res = dst - src;
22395 
22396   FLAG_N = NFLAG_16(res);
22397   FLAG_Z = MASK_OUT_ABOVE_16(res);
22398   FLAG_X = FLAG_C = CFLAG_16(res);
22399   FLAG_V = VFLAG_SUB_16(src, dst, res);
22400 
22401   m68ki_write_16(ea, FLAG_Z);
22402 }
22403 
22404 
m68k_op_subi_16_aw(void)22405 static void m68k_op_subi_16_aw(void)
22406 {
22407   uint src = OPER_I_16();
22408   uint ea = EA_AW_16();
22409   uint dst = m68ki_read_16(ea);
22410   uint res = dst - src;
22411 
22412   FLAG_N = NFLAG_16(res);
22413   FLAG_Z = MASK_OUT_ABOVE_16(res);
22414   FLAG_X = FLAG_C = CFLAG_16(res);
22415   FLAG_V = VFLAG_SUB_16(src, dst, res);
22416 
22417   m68ki_write_16(ea, FLAG_Z);
22418 }
22419 
22420 
m68k_op_subi_16_al(void)22421 static void m68k_op_subi_16_al(void)
22422 {
22423   uint src = OPER_I_16();
22424   uint ea = EA_AL_16();
22425   uint dst = m68ki_read_16(ea);
22426   uint res = dst - src;
22427 
22428   FLAG_N = NFLAG_16(res);
22429   FLAG_Z = MASK_OUT_ABOVE_16(res);
22430   FLAG_X = FLAG_C = CFLAG_16(res);
22431   FLAG_V = VFLAG_SUB_16(src, dst, res);
22432 
22433   m68ki_write_16(ea, FLAG_Z);
22434 }
22435 
22436 
m68k_op_subi_32_d(void)22437 static void m68k_op_subi_32_d(void)
22438 {
22439   uint* r_dst = &DY;
22440   uint src = OPER_I_32();
22441   uint dst = *r_dst;
22442   uint res = dst - src;
22443 
22444   FLAG_N = NFLAG_32(res);
22445   FLAG_Z = MASK_OUT_ABOVE_32(res);
22446   FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
22447   FLAG_V = VFLAG_SUB_32(src, dst, res);
22448 
22449   *r_dst = FLAG_Z;
22450 }
22451 
22452 
m68k_op_subi_32_ai(void)22453 static void m68k_op_subi_32_ai(void)
22454 {
22455   uint src = OPER_I_32();
22456   uint ea = EA_AY_AI_32();
22457   uint dst = m68ki_read_32(ea);
22458   uint res = dst - src;
22459 
22460   FLAG_N = NFLAG_32(res);
22461   FLAG_Z = MASK_OUT_ABOVE_32(res);
22462   FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
22463   FLAG_V = VFLAG_SUB_32(src, dst, res);
22464 
22465   m68ki_write_32(ea, FLAG_Z);
22466 }
22467 
22468 
m68k_op_subi_32_pi(void)22469 static void m68k_op_subi_32_pi(void)
22470 {
22471   uint src = OPER_I_32();
22472   uint ea = EA_AY_PI_32();
22473   uint dst = m68ki_read_32(ea);
22474   uint res = dst - src;
22475 
22476   FLAG_N = NFLAG_32(res);
22477   FLAG_Z = MASK_OUT_ABOVE_32(res);
22478   FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
22479   FLAG_V = VFLAG_SUB_32(src, dst, res);
22480 
22481   m68ki_write_32(ea, FLAG_Z);
22482 }
22483 
22484 
m68k_op_subi_32_pd(void)22485 static void m68k_op_subi_32_pd(void)
22486 {
22487   uint src = OPER_I_32();
22488   uint ea = EA_AY_PD_32();
22489   uint dst = m68ki_read_32(ea);
22490   uint res = dst - src;
22491 
22492   FLAG_N = NFLAG_32(res);
22493   FLAG_Z = MASK_OUT_ABOVE_32(res);
22494   FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
22495   FLAG_V = VFLAG_SUB_32(src, dst, res);
22496 
22497   m68ki_write_32(ea, FLAG_Z);
22498 }
22499 
22500 
m68k_op_subi_32_di(void)22501 static void m68k_op_subi_32_di(void)
22502 {
22503   uint src = OPER_I_32();
22504   uint ea = EA_AY_DI_32();
22505   uint dst = m68ki_read_32(ea);
22506   uint res = dst - src;
22507 
22508   FLAG_N = NFLAG_32(res);
22509   FLAG_Z = MASK_OUT_ABOVE_32(res);
22510   FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
22511   FLAG_V = VFLAG_SUB_32(src, dst, res);
22512 
22513   m68ki_write_32(ea, FLAG_Z);
22514 }
22515 
22516 
m68k_op_subi_32_ix(void)22517 static void m68k_op_subi_32_ix(void)
22518 {
22519   uint src = OPER_I_32();
22520   uint ea = EA_AY_IX_32();
22521   uint dst = m68ki_read_32(ea);
22522   uint res = dst - src;
22523 
22524   FLAG_N = NFLAG_32(res);
22525   FLAG_Z = MASK_OUT_ABOVE_32(res);
22526   FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
22527   FLAG_V = VFLAG_SUB_32(src, dst, res);
22528 
22529   m68ki_write_32(ea, FLAG_Z);
22530 }
22531 
22532 
m68k_op_subi_32_aw(void)22533 static void m68k_op_subi_32_aw(void)
22534 {
22535   uint src = OPER_I_32();
22536   uint ea = EA_AW_32();
22537   uint dst = m68ki_read_32(ea);
22538   uint res = dst - src;
22539 
22540   FLAG_N = NFLAG_32(res);
22541   FLAG_Z = MASK_OUT_ABOVE_32(res);
22542   FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
22543   FLAG_V = VFLAG_SUB_32(src, dst, res);
22544 
22545   m68ki_write_32(ea, FLAG_Z);
22546 }
22547 
22548 
m68k_op_subi_32_al(void)22549 static void m68k_op_subi_32_al(void)
22550 {
22551   uint src = OPER_I_32();
22552   uint ea = EA_AL_32();
22553   uint dst = m68ki_read_32(ea);
22554   uint res = dst - src;
22555 
22556   FLAG_N = NFLAG_32(res);
22557   FLAG_Z = MASK_OUT_ABOVE_32(res);
22558   FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
22559   FLAG_V = VFLAG_SUB_32(src, dst, res);
22560 
22561   m68ki_write_32(ea, FLAG_Z);
22562 }
22563 
22564 
m68k_op_subq_8_d(void)22565 static void m68k_op_subq_8_d(void)
22566 {
22567   uint* r_dst = &DY;
22568   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
22569   uint dst = MASK_OUT_ABOVE_8(*r_dst);
22570   uint res = dst - src;
22571 
22572   FLAG_N = NFLAG_8(res);
22573   FLAG_Z = MASK_OUT_ABOVE_8(res);
22574   FLAG_X = FLAG_C = CFLAG_8(res);
22575   FLAG_V = VFLAG_SUB_8(src, dst, res);
22576 
22577   *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
22578 }
22579 
22580 
m68k_op_subq_8_ai(void)22581 static void m68k_op_subq_8_ai(void)
22582 {
22583   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
22584   uint ea = EA_AY_AI_8();
22585   uint dst = m68ki_read_8(ea);
22586   uint res = dst - src;
22587 
22588   FLAG_N = NFLAG_8(res);
22589   FLAG_Z = MASK_OUT_ABOVE_8(res);
22590   FLAG_X = FLAG_C = CFLAG_8(res);
22591   FLAG_V = VFLAG_SUB_8(src, dst, res);
22592 
22593   m68ki_write_8(ea, FLAG_Z);
22594 }
22595 
22596 
m68k_op_subq_8_pi(void)22597 static void m68k_op_subq_8_pi(void)
22598 {
22599   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
22600   uint ea = EA_AY_PI_8();
22601   uint dst = m68ki_read_8(ea);
22602   uint res = dst - src;
22603 
22604   FLAG_N = NFLAG_8(res);
22605   FLAG_Z = MASK_OUT_ABOVE_8(res);
22606   FLAG_X = FLAG_C = CFLAG_8(res);
22607   FLAG_V = VFLAG_SUB_8(src, dst, res);
22608 
22609   m68ki_write_8(ea, FLAG_Z);
22610 }
22611 
22612 
m68k_op_subq_8_pi7(void)22613 static void m68k_op_subq_8_pi7(void)
22614 {
22615   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
22616   uint ea = EA_A7_PI_8();
22617   uint dst = m68ki_read_8(ea);
22618   uint res = dst - src;
22619 
22620   FLAG_N = NFLAG_8(res);
22621   FLAG_Z = MASK_OUT_ABOVE_8(res);
22622   FLAG_X = FLAG_C = CFLAG_8(res);
22623   FLAG_V = VFLAG_SUB_8(src, dst, res);
22624 
22625   m68ki_write_8(ea, FLAG_Z);
22626 }
22627 
22628 
m68k_op_subq_8_pd(void)22629 static void m68k_op_subq_8_pd(void)
22630 {
22631   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
22632   uint ea = EA_AY_PD_8();
22633   uint dst = m68ki_read_8(ea);
22634   uint res = dst - src;
22635 
22636   FLAG_N = NFLAG_8(res);
22637   FLAG_Z = MASK_OUT_ABOVE_8(res);
22638   FLAG_X = FLAG_C = CFLAG_8(res);
22639   FLAG_V = VFLAG_SUB_8(src, dst, res);
22640 
22641   m68ki_write_8(ea, FLAG_Z);
22642 }
22643 
22644 
m68k_op_subq_8_pd7(void)22645 static void m68k_op_subq_8_pd7(void)
22646 {
22647   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
22648   uint ea = EA_A7_PD_8();
22649   uint dst = m68ki_read_8(ea);
22650   uint res = dst - src;
22651 
22652   FLAG_N = NFLAG_8(res);
22653   FLAG_Z = MASK_OUT_ABOVE_8(res);
22654   FLAG_X = FLAG_C = CFLAG_8(res);
22655   FLAG_V = VFLAG_SUB_8(src, dst, res);
22656 
22657   m68ki_write_8(ea, FLAG_Z);
22658 }
22659 
22660 
m68k_op_subq_8_di(void)22661 static void m68k_op_subq_8_di(void)
22662 {
22663   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
22664   uint ea = EA_AY_DI_8();
22665   uint dst = m68ki_read_8(ea);
22666   uint res = dst - src;
22667 
22668   FLAG_N = NFLAG_8(res);
22669   FLAG_Z = MASK_OUT_ABOVE_8(res);
22670   FLAG_X = FLAG_C = CFLAG_8(res);
22671   FLAG_V = VFLAG_SUB_8(src, dst, res);
22672 
22673   m68ki_write_8(ea, FLAG_Z);
22674 }
22675 
22676 
m68k_op_subq_8_ix(void)22677 static void m68k_op_subq_8_ix(void)
22678 {
22679   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
22680   uint ea = EA_AY_IX_8();
22681   uint dst = m68ki_read_8(ea);
22682   uint res = dst - src;
22683 
22684   FLAG_N = NFLAG_8(res);
22685   FLAG_Z = MASK_OUT_ABOVE_8(res);
22686   FLAG_X = FLAG_C = CFLAG_8(res);
22687   FLAG_V = VFLAG_SUB_8(src, dst, res);
22688 
22689   m68ki_write_8(ea, FLAG_Z);
22690 }
22691 
22692 
m68k_op_subq_8_aw(void)22693 static void m68k_op_subq_8_aw(void)
22694 {
22695   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
22696   uint ea = EA_AW_8();
22697   uint dst = m68ki_read_8(ea);
22698   uint res = dst - src;
22699 
22700   FLAG_N = NFLAG_8(res);
22701   FLAG_Z = MASK_OUT_ABOVE_8(res);
22702   FLAG_X = FLAG_C = CFLAG_8(res);
22703   FLAG_V = VFLAG_SUB_8(src, dst, res);
22704 
22705   m68ki_write_8(ea, FLAG_Z);
22706 }
22707 
22708 
m68k_op_subq_8_al(void)22709 static void m68k_op_subq_8_al(void)
22710 {
22711   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
22712   uint ea = EA_AL_8();
22713   uint dst = m68ki_read_8(ea);
22714   uint res = dst - src;
22715 
22716   FLAG_N = NFLAG_8(res);
22717   FLAG_Z = MASK_OUT_ABOVE_8(res);
22718   FLAG_X = FLAG_C = CFLAG_8(res);
22719   FLAG_V = VFLAG_SUB_8(src, dst, res);
22720 
22721   m68ki_write_8(ea, FLAG_Z);
22722 }
22723 
22724 
m68k_op_subq_16_d(void)22725 static void m68k_op_subq_16_d(void)
22726 {
22727   uint* r_dst = &DY;
22728   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
22729   uint dst = MASK_OUT_ABOVE_16(*r_dst);
22730   uint res = dst - src;
22731 
22732   FLAG_N = NFLAG_16(res);
22733   FLAG_Z = MASK_OUT_ABOVE_16(res);
22734   FLAG_X = FLAG_C = CFLAG_16(res);
22735   FLAG_V = VFLAG_SUB_16(src, dst, res);
22736 
22737   *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
22738 }
22739 
22740 
m68k_op_subq_16_a(void)22741 static void m68k_op_subq_16_a(void)
22742 {
22743   uint* r_dst = &AY;
22744 
22745   *r_dst = MASK_OUT_ABOVE_32(*r_dst - ((((REG_IR >> 9) - 1) & 7) + 1));
22746 }
22747 
22748 
m68k_op_subq_16_ai(void)22749 static void m68k_op_subq_16_ai(void)
22750 {
22751   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
22752   uint ea = EA_AY_AI_16();
22753   uint dst = m68ki_read_16(ea);
22754   uint res = dst - src;
22755 
22756   FLAG_N = NFLAG_16(res);
22757   FLAG_Z = MASK_OUT_ABOVE_16(res);
22758   FLAG_X = FLAG_C = CFLAG_16(res);
22759   FLAG_V = VFLAG_SUB_16(src, dst, res);
22760 
22761   m68ki_write_16(ea, FLAG_Z);
22762 }
22763 
22764 
m68k_op_subq_16_pi(void)22765 static void m68k_op_subq_16_pi(void)
22766 {
22767   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
22768   uint ea = EA_AY_PI_16();
22769   uint dst = m68ki_read_16(ea);
22770   uint res = dst - src;
22771 
22772   FLAG_N = NFLAG_16(res);
22773   FLAG_Z = MASK_OUT_ABOVE_16(res);
22774   FLAG_X = FLAG_C = CFLAG_16(res);
22775   FLAG_V = VFLAG_SUB_16(src, dst, res);
22776 
22777   m68ki_write_16(ea, FLAG_Z);
22778 }
22779 
22780 
m68k_op_subq_16_pd(void)22781 static void m68k_op_subq_16_pd(void)
22782 {
22783   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
22784   uint ea = EA_AY_PD_16();
22785   uint dst = m68ki_read_16(ea);
22786   uint res = dst - src;
22787 
22788   FLAG_N = NFLAG_16(res);
22789   FLAG_Z = MASK_OUT_ABOVE_16(res);
22790   FLAG_X = FLAG_C = CFLAG_16(res);
22791   FLAG_V = VFLAG_SUB_16(src, dst, res);
22792 
22793   m68ki_write_16(ea, FLAG_Z);
22794 }
22795 
22796 
m68k_op_subq_16_di(void)22797 static void m68k_op_subq_16_di(void)
22798 {
22799   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
22800   uint ea = EA_AY_DI_16();
22801   uint dst = m68ki_read_16(ea);
22802   uint res = dst - src;
22803 
22804   FLAG_N = NFLAG_16(res);
22805   FLAG_Z = MASK_OUT_ABOVE_16(res);
22806   FLAG_X = FLAG_C = CFLAG_16(res);
22807   FLAG_V = VFLAG_SUB_16(src, dst, res);
22808 
22809   m68ki_write_16(ea, FLAG_Z);
22810 }
22811 
22812 
m68k_op_subq_16_ix(void)22813 static void m68k_op_subq_16_ix(void)
22814 {
22815   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
22816   uint ea = EA_AY_IX_16();
22817   uint dst = m68ki_read_16(ea);
22818   uint res = dst - src;
22819 
22820   FLAG_N = NFLAG_16(res);
22821   FLAG_Z = MASK_OUT_ABOVE_16(res);
22822   FLAG_X = FLAG_C = CFLAG_16(res);
22823   FLAG_V = VFLAG_SUB_16(src, dst, res);
22824 
22825   m68ki_write_16(ea, FLAG_Z);
22826 }
22827 
22828 
m68k_op_subq_16_aw(void)22829 static void m68k_op_subq_16_aw(void)
22830 {
22831   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
22832   uint ea = EA_AW_16();
22833   uint dst = m68ki_read_16(ea);
22834   uint res = dst - src;
22835 
22836   FLAG_N = NFLAG_16(res);
22837   FLAG_Z = MASK_OUT_ABOVE_16(res);
22838   FLAG_X = FLAG_C = CFLAG_16(res);
22839   FLAG_V = VFLAG_SUB_16(src, dst, res);
22840 
22841   m68ki_write_16(ea, FLAG_Z);
22842 }
22843 
22844 
m68k_op_subq_16_al(void)22845 static void m68k_op_subq_16_al(void)
22846 {
22847   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
22848   uint ea = EA_AL_16();
22849   uint dst = m68ki_read_16(ea);
22850   uint res = dst - src;
22851 
22852   FLAG_N = NFLAG_16(res);
22853   FLAG_Z = MASK_OUT_ABOVE_16(res);
22854   FLAG_X = FLAG_C = CFLAG_16(res);
22855   FLAG_V = VFLAG_SUB_16(src, dst, res);
22856 
22857   m68ki_write_16(ea, FLAG_Z);
22858 }
22859 
22860 
m68k_op_subq_32_d(void)22861 static void m68k_op_subq_32_d(void)
22862 {
22863   uint* r_dst = &DY;
22864   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
22865   uint dst = *r_dst;
22866   uint res = dst - src;
22867 
22868   FLAG_N = NFLAG_32(res);
22869   FLAG_Z = MASK_OUT_ABOVE_32(res);
22870   FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
22871   FLAG_V = VFLAG_SUB_32(src, dst, res);
22872 
22873   *r_dst = FLAG_Z;
22874 }
22875 
22876 
m68k_op_subq_32_a(void)22877 static void m68k_op_subq_32_a(void)
22878 {
22879   uint* r_dst = &AY;
22880 
22881   *r_dst = MASK_OUT_ABOVE_32(*r_dst - ((((REG_IR >> 9) - 1) & 7) + 1));
22882 }
22883 
22884 
m68k_op_subq_32_ai(void)22885 static void m68k_op_subq_32_ai(void)
22886 {
22887   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
22888   uint ea = EA_AY_AI_32();
22889   uint dst = m68ki_read_32(ea);
22890   uint res = dst - src;
22891 
22892   FLAG_N = NFLAG_32(res);
22893   FLAG_Z = MASK_OUT_ABOVE_32(res);
22894   FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
22895   FLAG_V = VFLAG_SUB_32(src, dst, res);
22896 
22897   m68ki_write_32(ea, FLAG_Z);
22898 }
22899 
22900 
m68k_op_subq_32_pi(void)22901 static void m68k_op_subq_32_pi(void)
22902 {
22903   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
22904   uint ea = EA_AY_PI_32();
22905   uint dst = m68ki_read_32(ea);
22906   uint res = dst - src;
22907 
22908   FLAG_N = NFLAG_32(res);
22909   FLAG_Z = MASK_OUT_ABOVE_32(res);
22910   FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
22911   FLAG_V = VFLAG_SUB_32(src, dst, res);
22912 
22913   m68ki_write_32(ea, FLAG_Z);
22914 }
22915 
22916 
m68k_op_subq_32_pd(void)22917 static void m68k_op_subq_32_pd(void)
22918 {
22919   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
22920   uint ea = EA_AY_PD_32();
22921   uint dst = m68ki_read_32(ea);
22922   uint res = dst - src;
22923 
22924   FLAG_N = NFLAG_32(res);
22925   FLAG_Z = MASK_OUT_ABOVE_32(res);
22926   FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
22927   FLAG_V = VFLAG_SUB_32(src, dst, res);
22928 
22929   m68ki_write_32(ea, FLAG_Z);
22930 }
22931 
22932 
m68k_op_subq_32_di(void)22933 static void m68k_op_subq_32_di(void)
22934 {
22935   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
22936   uint ea = EA_AY_DI_32();
22937   uint dst = m68ki_read_32(ea);
22938   uint res = dst - src;
22939 
22940   FLAG_N = NFLAG_32(res);
22941   FLAG_Z = MASK_OUT_ABOVE_32(res);
22942   FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
22943   FLAG_V = VFLAG_SUB_32(src, dst, res);
22944 
22945   m68ki_write_32(ea, FLAG_Z);
22946 }
22947 
22948 
m68k_op_subq_32_ix(void)22949 static void m68k_op_subq_32_ix(void)
22950 {
22951   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
22952   uint ea = EA_AY_IX_32();
22953   uint dst = m68ki_read_32(ea);
22954   uint res = dst - src;
22955 
22956   FLAG_N = NFLAG_32(res);
22957   FLAG_Z = MASK_OUT_ABOVE_32(res);
22958   FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
22959   FLAG_V = VFLAG_SUB_32(src, dst, res);
22960 
22961   m68ki_write_32(ea, FLAG_Z);
22962 }
22963 
22964 
m68k_op_subq_32_aw(void)22965 static void m68k_op_subq_32_aw(void)
22966 {
22967   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
22968   uint ea = EA_AW_32();
22969   uint dst = m68ki_read_32(ea);
22970   uint res = dst - src;
22971 
22972   FLAG_N = NFLAG_32(res);
22973   FLAG_Z = MASK_OUT_ABOVE_32(res);
22974   FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
22975   FLAG_V = VFLAG_SUB_32(src, dst, res);
22976 
22977   m68ki_write_32(ea, FLAG_Z);
22978 }
22979 
22980 
m68k_op_subq_32_al(void)22981 static void m68k_op_subq_32_al(void)
22982 {
22983   uint src = (((REG_IR >> 9) - 1) & 7) + 1;
22984   uint ea = EA_AL_32();
22985   uint dst = m68ki_read_32(ea);
22986   uint res = dst - src;
22987 
22988   FLAG_N = NFLAG_32(res);
22989   FLAG_Z = MASK_OUT_ABOVE_32(res);
22990   FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
22991   FLAG_V = VFLAG_SUB_32(src, dst, res);
22992 
22993   m68ki_write_32(ea, FLAG_Z);
22994 }
22995 
22996 
m68k_op_subx_8_rr(void)22997 static void m68k_op_subx_8_rr(void)
22998 {
22999   uint* r_dst = &DX;
23000   uint src = MASK_OUT_ABOVE_8(DY);
23001   uint dst = MASK_OUT_ABOVE_8(*r_dst);
23002   uint res = dst - src - XFLAG_AS_1();
23003 
23004   FLAG_N = NFLAG_8(res);
23005   FLAG_X = FLAG_C = CFLAG_8(res);
23006   FLAG_V = VFLAG_SUB_8(src, dst, res);
23007 
23008   res = MASK_OUT_ABOVE_8(res);
23009   FLAG_Z |= res;
23010 
23011   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
23012 }
23013 
23014 
m68k_op_subx_16_rr(void)23015 static void m68k_op_subx_16_rr(void)
23016 {
23017   uint* r_dst = &DX;
23018   uint src = MASK_OUT_ABOVE_16(DY);
23019   uint dst = MASK_OUT_ABOVE_16(*r_dst);
23020   uint res = dst - src - XFLAG_AS_1();
23021 
23022   FLAG_N = NFLAG_16(res);
23023   FLAG_X = FLAG_C = CFLAG_16(res);
23024   FLAG_V = VFLAG_SUB_16(src, dst, res);
23025 
23026   res = MASK_OUT_ABOVE_16(res);
23027   FLAG_Z |= res;
23028 
23029   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
23030 }
23031 
23032 
m68k_op_subx_32_rr(void)23033 static void m68k_op_subx_32_rr(void)
23034 {
23035   uint* r_dst = &DX;
23036   uint src = DY;
23037   uint dst = *r_dst;
23038   uint res = dst - src - XFLAG_AS_1();
23039 
23040   FLAG_N = NFLAG_32(res);
23041   FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
23042   FLAG_V = VFLAG_SUB_32(src, dst, res);
23043 
23044   res = MASK_OUT_ABOVE_32(res);
23045   FLAG_Z |= res;
23046 
23047   *r_dst = res;
23048 }
23049 
23050 
m68k_op_subx_8_mm_ax7(void)23051 static void m68k_op_subx_8_mm_ax7(void)
23052 {
23053   uint src = OPER_AY_PD_8();
23054   uint ea  = EA_A7_PD_8();
23055   uint dst = m68ki_read_8(ea);
23056   uint res = dst - src - XFLAG_AS_1();
23057 
23058   FLAG_N = NFLAG_8(res);
23059   FLAG_X = FLAG_C = CFLAG_8(res);
23060   FLAG_V = VFLAG_SUB_8(src, dst, res);
23061 
23062   res = MASK_OUT_ABOVE_8(res);
23063   FLAG_Z |= res;
23064 
23065   m68ki_write_8(ea, res);
23066 }
23067 
23068 
m68k_op_subx_8_mm_ay7(void)23069 static void m68k_op_subx_8_mm_ay7(void)
23070 {
23071   uint src = OPER_A7_PD_8();
23072   uint ea  = EA_AX_PD_8();
23073   uint dst = m68ki_read_8(ea);
23074   uint res = dst - src - XFLAG_AS_1();
23075 
23076   FLAG_N = NFLAG_8(res);
23077   FLAG_X = FLAG_C = CFLAG_8(res);
23078   FLAG_V = VFLAG_SUB_8(src, dst, res);
23079 
23080   res = MASK_OUT_ABOVE_8(res);
23081   FLAG_Z |= res;
23082 
23083   m68ki_write_8(ea, res);
23084 }
23085 
23086 
m68k_op_subx_8_mm_axy7(void)23087 static void m68k_op_subx_8_mm_axy7(void)
23088 {
23089   uint src = OPER_A7_PD_8();
23090   uint ea  = EA_A7_PD_8();
23091   uint dst = m68ki_read_8(ea);
23092   uint res = dst - src - XFLAG_AS_1();
23093 
23094   FLAG_N = NFLAG_8(res);
23095   FLAG_X = FLAG_C = CFLAG_8(res);
23096   FLAG_V = VFLAG_SUB_8(src, dst, res);
23097 
23098   res = MASK_OUT_ABOVE_8(res);
23099   FLAG_Z |= res;
23100 
23101   m68ki_write_8(ea, res);
23102 }
23103 
23104 
m68k_op_subx_8_mm(void)23105 static void m68k_op_subx_8_mm(void)
23106 {
23107   uint src = OPER_AY_PD_8();
23108   uint ea  = EA_AX_PD_8();
23109   uint dst = m68ki_read_8(ea);
23110   uint res = dst - src - XFLAG_AS_1();
23111 
23112   FLAG_N = NFLAG_8(res);
23113   FLAG_X = FLAG_C = CFLAG_8(res);
23114   FLAG_V = VFLAG_SUB_8(src, dst, res);
23115 
23116   res = MASK_OUT_ABOVE_8(res);
23117   FLAG_Z |= res;
23118 
23119   m68ki_write_8(ea, res);
23120 }
23121 
23122 
m68k_op_subx_16_mm(void)23123 static void m68k_op_subx_16_mm(void)
23124 {
23125   uint src = OPER_AY_PD_16();
23126   uint ea  = EA_AX_PD_16();
23127   uint dst = m68ki_read_16(ea);
23128   uint res = dst - src - XFLAG_AS_1();
23129 
23130   FLAG_N = NFLAG_16(res);
23131   FLAG_X = FLAG_C = CFLAG_16(res);
23132   FLAG_V = VFLAG_SUB_16(src, dst, res);
23133 
23134   res = MASK_OUT_ABOVE_16(res);
23135   FLAG_Z |= res;
23136 
23137   m68ki_write_16(ea, res);
23138 }
23139 
23140 
m68k_op_subx_32_mm(void)23141 static void m68k_op_subx_32_mm(void)
23142 {
23143   uint src = OPER_AY_PD_32();
23144   uint ea  = EA_AX_PD_32();
23145   uint dst = m68ki_read_32(ea);
23146   uint res = dst - src - XFLAG_AS_1();
23147 
23148   FLAG_N = NFLAG_32(res);
23149   FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
23150   FLAG_V = VFLAG_SUB_32(src, dst, res);
23151 
23152   res = MASK_OUT_ABOVE_32(res);
23153   FLAG_Z |= res;
23154 
23155   m68ki_write_32(ea, res);
23156 }
23157 
23158 
m68k_op_swap_32(void)23159 static void m68k_op_swap_32(void)
23160 {
23161   uint* r_dst = &DY;
23162 
23163   FLAG_Z = MASK_OUT_ABOVE_32(*r_dst<<16);
23164   *r_dst = (*r_dst>>16) | FLAG_Z;
23165 
23166   FLAG_Z = *r_dst;
23167   FLAG_N = NFLAG_32(*r_dst);
23168   FLAG_C = CFLAG_CLEAR;
23169   FLAG_V = VFLAG_CLEAR;
23170 }
23171 
23172 
m68k_op_tas_8_d(void)23173 static void m68k_op_tas_8_d(void)
23174 {
23175   uint* r_dst = &DY;
23176 
23177   FLAG_Z = MASK_OUT_ABOVE_8(*r_dst);
23178   FLAG_N = NFLAG_8(*r_dst);
23179   FLAG_V = VFLAG_CLEAR;
23180   FLAG_C = CFLAG_CLEAR;
23181   *r_dst |= 0x80;
23182 }
23183 
23184 
m68k_op_tas_8_ai(void)23185 static void m68k_op_tas_8_ai(void)
23186 {
23187   uint ea = EA_AY_AI_8();
23188   uint dst = m68ki_read_8(ea);
23189 
23190   FLAG_Z = dst;
23191   FLAG_N = NFLAG_8(dst);
23192   FLAG_V = VFLAG_CLEAR;
23193   FLAG_C = CFLAG_CLEAR;
23194 
23195   /* The Genesis/Megadrive games Gargoyles and Ex-Mutants need the TAS writeback
23196        disabled in order to function properly.  Some Amiga software may also rely
23197        on this, but only when accessing specific addresses so additional functionality
23198        will be needed. */
23199   if (m68ki_tas_callback()) m68ki_write_8(ea, dst | 0x80);
23200 }
23201 
23202 
m68k_op_tas_8_pi(void)23203 static void m68k_op_tas_8_pi(void)
23204 {
23205   uint ea = EA_AY_PI_8();
23206   uint dst = m68ki_read_8(ea);
23207 
23208   FLAG_Z = dst;
23209   FLAG_N = NFLAG_8(dst);
23210   FLAG_V = VFLAG_CLEAR;
23211   FLAG_C = CFLAG_CLEAR;
23212 
23213   /* The Genesis/Megadrive games Gargoyles and Ex-Mutants need the TAS writeback
23214        disabled in order to function properly.  Some Amiga software may also rely
23215        on this, but only when accessing specific addresses so additional functionality
23216        will be needed. */
23217   if (m68ki_tas_callback()) m68ki_write_8(ea, dst | 0x80);
23218 }
23219 
23220 
m68k_op_tas_8_pi7(void)23221 static void m68k_op_tas_8_pi7(void)
23222 {
23223   uint ea = EA_A7_PI_8();
23224   uint dst = m68ki_read_8(ea);
23225 
23226   FLAG_Z = dst;
23227   FLAG_N = NFLAG_8(dst);
23228   FLAG_V = VFLAG_CLEAR;
23229   FLAG_C = CFLAG_CLEAR;
23230 
23231   /* The Genesis/Megadrive games Gargoyles and Ex-Mutants need the TAS writeback
23232        disabled in order to function properly.  Some Amiga software may also rely
23233        on this, but only when accessing specific addresses so additional functionality
23234        will be needed. */
23235   if (m68ki_tas_callback()) m68ki_write_8(ea, dst | 0x80);
23236 }
23237 
23238 
m68k_op_tas_8_pd(void)23239 static void m68k_op_tas_8_pd(void)
23240 {
23241   uint ea = EA_AY_PD_8();
23242   uint dst = m68ki_read_8(ea);
23243 
23244   FLAG_Z = dst;
23245   FLAG_N = NFLAG_8(dst);
23246   FLAG_V = VFLAG_CLEAR;
23247   FLAG_C = CFLAG_CLEAR;
23248 
23249   /* The Genesis/Megadrive games Gargoyles and Ex-Mutants need the TAS writeback
23250        disabled in order to function properly.  Some Amiga software may also rely
23251        on this, but only when accessing specific addresses so additional functionality
23252        will be needed. */
23253   if (m68ki_tas_callback()) m68ki_write_8(ea, dst | 0x80);
23254 }
23255 
23256 
m68k_op_tas_8_pd7(void)23257 static void m68k_op_tas_8_pd7(void)
23258 {
23259   uint ea = EA_A7_PD_8();
23260   uint dst = m68ki_read_8(ea);
23261 
23262   FLAG_Z = dst;
23263   FLAG_N = NFLAG_8(dst);
23264   FLAG_V = VFLAG_CLEAR;
23265   FLAG_C = CFLAG_CLEAR;
23266 
23267   /* The Genesis/Megadrive games Gargoyles and Ex-Mutants need the TAS writeback
23268        disabled in order to function properly.  Some Amiga software may also rely
23269        on this, but only when accessing specific addresses so additional functionality
23270        will be needed. */
23271   if (m68ki_tas_callback()) m68ki_write_8(ea, dst | 0x80);
23272 }
23273 
23274 
m68k_op_tas_8_di(void)23275 static void m68k_op_tas_8_di(void)
23276 {
23277   uint ea = EA_AY_DI_8();
23278   uint dst = m68ki_read_8(ea);
23279 
23280   FLAG_Z = dst;
23281   FLAG_N = NFLAG_8(dst);
23282   FLAG_V = VFLAG_CLEAR;
23283   FLAG_C = CFLAG_CLEAR;
23284 
23285   /* The Genesis/Megadrive games Gargoyles and Ex-Mutants need the TAS writeback
23286        disabled in order to function properly.  Some Amiga software may also rely
23287        on this, but only when accessing specific addresses so additional functionality
23288        will be needed. */
23289   if (m68ki_tas_callback()) m68ki_write_8(ea, dst | 0x80);
23290 }
23291 
23292 
m68k_op_tas_8_ix(void)23293 static void m68k_op_tas_8_ix(void)
23294 {
23295   uint ea = EA_AY_IX_8();
23296   uint dst = m68ki_read_8(ea);
23297 
23298   FLAG_Z = dst;
23299   FLAG_N = NFLAG_8(dst);
23300   FLAG_V = VFLAG_CLEAR;
23301   FLAG_C = CFLAG_CLEAR;
23302 
23303   /* The Genesis/Megadrive games Gargoyles and Ex-Mutants need the TAS writeback
23304        disabled in order to function properly.  Some Amiga software may also rely
23305        on this, but only when accessing specific addresses so additional functionality
23306        will be needed. */
23307   if (m68ki_tas_callback()) m68ki_write_8(ea, dst | 0x80);
23308 }
23309 
23310 
m68k_op_tas_8_aw(void)23311 static void m68k_op_tas_8_aw(void)
23312 {
23313   uint ea = EA_AW_8();
23314   uint dst = m68ki_read_8(ea);
23315 
23316   FLAG_Z = dst;
23317   FLAG_N = NFLAG_8(dst);
23318   FLAG_V = VFLAG_CLEAR;
23319   FLAG_C = CFLAG_CLEAR;
23320 
23321   /* The Genesis/Megadrive games Gargoyles and Ex-Mutants need the TAS writeback
23322        disabled in order to function properly.  Some Amiga software may also rely
23323        on this, but only when accessing specific addresses so additional functionality
23324        will be needed. */
23325   if (m68ki_tas_callback()) m68ki_write_8(ea, dst | 0x80);
23326 }
23327 
23328 
m68k_op_tas_8_al(void)23329 static void m68k_op_tas_8_al(void)
23330 {
23331   uint ea = EA_AL_8();
23332   uint dst = m68ki_read_8(ea);
23333 
23334   FLAG_Z = dst;
23335   FLAG_N = NFLAG_8(dst);
23336   FLAG_V = VFLAG_CLEAR;
23337   FLAG_C = CFLAG_CLEAR;
23338 
23339   /* The Genesis/Megadrive games Gargoyles and Ex-Mutants need the TAS writeback
23340        disabled in order to function properly.  Some Amiga software may also rely
23341        on this, but only when accessing specific addresses so additional functionality
23342        will be needed. */
23343   if (m68ki_tas_callback()) m68ki_write_8(ea, dst | 0x80);
23344 }
23345 
23346 
m68k_op_trap(void)23347 static void m68k_op_trap(void)
23348 {
23349   /* Trap#n stacks exception frame type 0 */
23350   m68ki_exception_trapN(EXCEPTION_TRAP_BASE + (REG_IR & 0xf));  /* HJB 990403 */
23351 }
23352 
23353 
m68k_op_trapv(void)23354 static void m68k_op_trapv(void)
23355 {
23356   if(COND_VC())
23357   {
23358     return;
23359   }
23360   m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */
23361 }
23362 
23363 
m68k_op_tst_8_d(void)23364 static void m68k_op_tst_8_d(void)
23365 {
23366   uint res = MASK_OUT_ABOVE_8(DY);
23367 
23368   FLAG_N = NFLAG_8(res);
23369   FLAG_Z = res;
23370   FLAG_V = VFLAG_CLEAR;
23371   FLAG_C = CFLAG_CLEAR;
23372 }
23373 
23374 
m68k_op_tst_8_ai(void)23375 static void m68k_op_tst_8_ai(void)
23376 {
23377   uint res = OPER_AY_AI_8();
23378 
23379   FLAG_N = NFLAG_8(res);
23380   FLAG_Z = res;
23381   FLAG_V = VFLAG_CLEAR;
23382   FLAG_C = CFLAG_CLEAR;
23383 }
23384 
23385 
m68k_op_tst_8_pi(void)23386 static void m68k_op_tst_8_pi(void)
23387 {
23388   uint res = OPER_AY_PI_8();
23389 
23390   FLAG_N = NFLAG_8(res);
23391   FLAG_Z = res;
23392   FLAG_V = VFLAG_CLEAR;
23393   FLAG_C = CFLAG_CLEAR;
23394 }
23395 
23396 
m68k_op_tst_8_pi7(void)23397 static void m68k_op_tst_8_pi7(void)
23398 {
23399   uint res = OPER_A7_PI_8();
23400 
23401   FLAG_N = NFLAG_8(res);
23402   FLAG_Z = res;
23403   FLAG_V = VFLAG_CLEAR;
23404   FLAG_C = CFLAG_CLEAR;
23405 }
23406 
23407 
m68k_op_tst_8_pd(void)23408 static void m68k_op_tst_8_pd(void)
23409 {
23410   uint res = OPER_AY_PD_8();
23411 
23412   FLAG_N = NFLAG_8(res);
23413   FLAG_Z = res;
23414   FLAG_V = VFLAG_CLEAR;
23415   FLAG_C = CFLAG_CLEAR;
23416 }
23417 
23418 
m68k_op_tst_8_pd7(void)23419 static void m68k_op_tst_8_pd7(void)
23420 {
23421   uint res = OPER_A7_PD_8();
23422 
23423   FLAG_N = NFLAG_8(res);
23424   FLAG_Z = res;
23425   FLAG_V = VFLAG_CLEAR;
23426   FLAG_C = CFLAG_CLEAR;
23427 }
23428 
23429 
m68k_op_tst_8_di(void)23430 static void m68k_op_tst_8_di(void)
23431 {
23432   uint res = OPER_AY_DI_8();
23433 
23434   FLAG_N = NFLAG_8(res);
23435   FLAG_Z = res;
23436   FLAG_V = VFLAG_CLEAR;
23437   FLAG_C = CFLAG_CLEAR;
23438 }
23439 
23440 
m68k_op_tst_8_ix(void)23441 static void m68k_op_tst_8_ix(void)
23442 {
23443   uint res = OPER_AY_IX_8();
23444 
23445   FLAG_N = NFLAG_8(res);
23446   FLAG_Z = res;
23447   FLAG_V = VFLAG_CLEAR;
23448   FLAG_C = CFLAG_CLEAR;
23449 }
23450 
23451 
m68k_op_tst_8_aw(void)23452 static void m68k_op_tst_8_aw(void)
23453 {
23454   uint res = OPER_AW_8();
23455 
23456   FLAG_N = NFLAG_8(res);
23457   FLAG_Z = res;
23458   FLAG_V = VFLAG_CLEAR;
23459   FLAG_C = CFLAG_CLEAR;
23460 }
23461 
23462 
m68k_op_tst_8_al(void)23463 static void m68k_op_tst_8_al(void)
23464 {
23465   uint res = OPER_AL_8();
23466 
23467   FLAG_N = NFLAG_8(res);
23468   FLAG_Z = res;
23469   FLAG_V = VFLAG_CLEAR;
23470   FLAG_C = CFLAG_CLEAR;
23471 }
23472 
23473 
m68k_op_tst_16_d(void)23474 static void m68k_op_tst_16_d(void)
23475 {
23476   uint res = MASK_OUT_ABOVE_16(DY);
23477 
23478   FLAG_N = NFLAG_16(res);
23479   FLAG_Z = res;
23480   FLAG_V = VFLAG_CLEAR;
23481   FLAG_C = CFLAG_CLEAR;
23482 }
23483 
23484 
m68k_op_tst_16_ai(void)23485 static void m68k_op_tst_16_ai(void)
23486 {
23487   uint res = OPER_AY_AI_16();
23488 
23489   FLAG_N = NFLAG_16(res);
23490   FLAG_Z = res;
23491   FLAG_V = VFLAG_CLEAR;
23492   FLAG_C = CFLAG_CLEAR;
23493 }
23494 
23495 
m68k_op_tst_16_pi(void)23496 static void m68k_op_tst_16_pi(void)
23497 {
23498   uint res = OPER_AY_PI_16();
23499 
23500   FLAG_N = NFLAG_16(res);
23501   FLAG_Z = res;
23502   FLAG_V = VFLAG_CLEAR;
23503   FLAG_C = CFLAG_CLEAR;
23504 }
23505 
23506 
m68k_op_tst_16_pd(void)23507 static void m68k_op_tst_16_pd(void)
23508 {
23509   uint res = OPER_AY_PD_16();
23510 
23511   FLAG_N = NFLAG_16(res);
23512   FLAG_Z = res;
23513   FLAG_V = VFLAG_CLEAR;
23514   FLAG_C = CFLAG_CLEAR;
23515 }
23516 
23517 
m68k_op_tst_16_di(void)23518 static void m68k_op_tst_16_di(void)
23519 {
23520   uint res = OPER_AY_DI_16();
23521 
23522   FLAG_N = NFLAG_16(res);
23523   FLAG_Z = res;
23524   FLAG_V = VFLAG_CLEAR;
23525   FLAG_C = CFLAG_CLEAR;
23526 }
23527 
23528 
m68k_op_tst_16_ix(void)23529 static void m68k_op_tst_16_ix(void)
23530 {
23531   uint res = OPER_AY_IX_16();
23532 
23533   FLAG_N = NFLAG_16(res);
23534   FLAG_Z = res;
23535   FLAG_V = VFLAG_CLEAR;
23536   FLAG_C = CFLAG_CLEAR;
23537 }
23538 
23539 
m68k_op_tst_16_aw(void)23540 static void m68k_op_tst_16_aw(void)
23541 {
23542   uint res = OPER_AW_16();
23543 
23544   FLAG_N = NFLAG_16(res);
23545   FLAG_Z = res;
23546   FLAG_V = VFLAG_CLEAR;
23547   FLAG_C = CFLAG_CLEAR;
23548 }
23549 
23550 
m68k_op_tst_16_al(void)23551 static void m68k_op_tst_16_al(void)
23552 {
23553   uint res = OPER_AL_16();
23554 
23555   FLAG_N = NFLAG_16(res);
23556   FLAG_Z = res;
23557   FLAG_V = VFLAG_CLEAR;
23558   FLAG_C = CFLAG_CLEAR;
23559 }
23560 
23561 
m68k_op_tst_32_d(void)23562 static void m68k_op_tst_32_d(void)
23563 {
23564   uint res = DY;
23565 
23566   FLAG_N = NFLAG_32(res);
23567   FLAG_Z = res;
23568   FLAG_V = VFLAG_CLEAR;
23569   FLAG_C = CFLAG_CLEAR;
23570 }
23571 
23572 
m68k_op_tst_32_ai(void)23573 static void m68k_op_tst_32_ai(void)
23574 {
23575   uint res = OPER_AY_AI_32();
23576 
23577   FLAG_N = NFLAG_32(res);
23578   FLAG_Z = res;
23579   FLAG_V = VFLAG_CLEAR;
23580   FLAG_C = CFLAG_CLEAR;
23581 }
23582 
23583 
m68k_op_tst_32_pi(void)23584 static void m68k_op_tst_32_pi(void)
23585 {
23586   uint res = OPER_AY_PI_32();
23587 
23588   FLAG_N = NFLAG_32(res);
23589   FLAG_Z = res;
23590   FLAG_V = VFLAG_CLEAR;
23591   FLAG_C = CFLAG_CLEAR;
23592 }
23593 
23594 
m68k_op_tst_32_pd(void)23595 static void m68k_op_tst_32_pd(void)
23596 {
23597   uint res = OPER_AY_PD_32();
23598 
23599   FLAG_N = NFLAG_32(res);
23600   FLAG_Z = res;
23601   FLAG_V = VFLAG_CLEAR;
23602   FLAG_C = CFLAG_CLEAR;
23603 }
23604 
23605 
m68k_op_tst_32_di(void)23606 static void m68k_op_tst_32_di(void)
23607 {
23608   uint res = OPER_AY_DI_32();
23609 
23610   FLAG_N = NFLAG_32(res);
23611   FLAG_Z = res;
23612   FLAG_V = VFLAG_CLEAR;
23613   FLAG_C = CFLAG_CLEAR;
23614 }
23615 
23616 
m68k_op_tst_32_ix(void)23617 static void m68k_op_tst_32_ix(void)
23618 {
23619   uint res = OPER_AY_IX_32();
23620 
23621   FLAG_N = NFLAG_32(res);
23622   FLAG_Z = res;
23623   FLAG_V = VFLAG_CLEAR;
23624   FLAG_C = CFLAG_CLEAR;
23625 }
23626 
23627 
m68k_op_tst_32_aw(void)23628 static void m68k_op_tst_32_aw(void)
23629 {
23630   uint res = OPER_AW_32();
23631 
23632   FLAG_N = NFLAG_32(res);
23633   FLAG_Z = res;
23634   FLAG_V = VFLAG_CLEAR;
23635   FLAG_C = CFLAG_CLEAR;
23636 }
23637 
23638 
m68k_op_tst_32_al(void)23639 static void m68k_op_tst_32_al(void)
23640 {
23641   uint res = OPER_AL_32();
23642 
23643   FLAG_N = NFLAG_32(res);
23644   FLAG_Z = res;
23645   FLAG_V = VFLAG_CLEAR;
23646   FLAG_C = CFLAG_CLEAR;
23647 }
23648 
23649 
m68k_op_unlk_32_a7(void)23650 static void m68k_op_unlk_32_a7(void)
23651 {
23652   REG_A[7] = m68ki_read_32(REG_A[7]);
23653 }
23654 
23655 
m68k_op_unlk_32(void)23656 static void m68k_op_unlk_32(void)
23657 {
23658   uint* r_dst = &AY;
23659 
23660   REG_A[7] = *r_dst;
23661   *r_dst = m68ki_pull_32();
23662 }
23663 
23664 
23665 /* ======================================================================== */
23666 /* ========================= OPCODE TABLE BUILDER ========================= */
23667 /* ======================================================================== */
23668 
23669 #ifndef BUILD_TABLES
23670 
23671 #include "m68ki_instruction_jump_table.h"
23672 
23673 #else
23674 
23675 /* This is used to generate the opcode handler jump table */
23676 typedef struct
23677 {
23678   void (*opcode_handler)(void); /* handler function */
23679   unsigned int  mask;           /* mask on opcode */
23680   unsigned int  match;          /* what to match after masking */
23681   unsigned char cycles;         /* cycles each cpu type takes */
23682 } opcode_handler_struct;
23683 
23684 /* opcode handler jump table */
23685 static void  (*m68ki_instruction_jump_table[0x10000])(void);
23686 
23687 /* Opcode handler table */
23688 static const opcode_handler_struct m68k_opcode_handler_table[] =
23689 {
23690 /*   function                      mask    match  cyc */
23691   {m68k_op_1010                , 0xf000, 0xa000,  4},
23692   {m68k_op_1111                , 0xf000, 0xf000,  4},
23693   {m68k_op_moveq_32            , 0xf100, 0x7000,  4},
23694   {m68k_op_bra_8               , 0xff00, 0x6000, 10},
23695   {m68k_op_bsr_8               , 0xff00, 0x6100, 18},
23696   {m68k_op_bhi_8               , 0xff00, 0x6200, 10},
23697   {m68k_op_bls_8               , 0xff00, 0x6300, 10},
23698   {m68k_op_bcc_8               , 0xff00, 0x6400, 10},
23699   {m68k_op_bcs_8               , 0xff00, 0x6500, 10},
23700   {m68k_op_bne_8               , 0xff00, 0x6600, 10},
23701   {m68k_op_beq_8               , 0xff00, 0x6700, 10},
23702   {m68k_op_bvc_8               , 0xff00, 0x6800, 10},
23703   {m68k_op_bvs_8               , 0xff00, 0x6900, 10},
23704   {m68k_op_bpl_8               , 0xff00, 0x6a00, 10},
23705   {m68k_op_bmi_8               , 0xff00, 0x6b00, 10},
23706   {m68k_op_bge_8               , 0xff00, 0x6c00, 10},
23707   {m68k_op_blt_8               , 0xff00, 0x6d00, 10},
23708   {m68k_op_bgt_8               , 0xff00, 0x6e00, 10},
23709   {m68k_op_ble_8               , 0xff00, 0x6f00, 10},
23710   {m68k_op_btst_32_r_d         , 0xf1f8, 0x0100,  6},
23711   {m68k_op_movep_16_er         , 0xf1f8, 0x0108, 16},
23712   {m68k_op_btst_8_r_ai         , 0xf1f8, 0x0110,  8},
23713   {m68k_op_btst_8_r_pi         , 0xf1f8, 0x0118,  8},
23714   {m68k_op_btst_8_r_pd         , 0xf1f8, 0x0120, 10},
23715   {m68k_op_btst_8_r_di         , 0xf1f8, 0x0128, 12},
23716   {m68k_op_btst_8_r_ix         , 0xf1f8, 0x0130, 14},
23717   {m68k_op_bchg_32_r_d         , 0xf1f8, 0x0140,  8},
23718   {m68k_op_movep_32_er         , 0xf1f8, 0x0148, 24},
23719   {m68k_op_bchg_8_r_ai         , 0xf1f8, 0x0150, 12},
23720   {m68k_op_bchg_8_r_pi         , 0xf1f8, 0x0158, 12},
23721   {m68k_op_bchg_8_r_pd         , 0xf1f8, 0x0160, 14},
23722   {m68k_op_bchg_8_r_di         , 0xf1f8, 0x0168, 16},
23723   {m68k_op_bchg_8_r_ix         , 0xf1f8, 0x0170, 18},
23724   {m68k_op_bclr_32_r_d         , 0xf1f8, 0x0180, 10},
23725   {m68k_op_movep_16_re         , 0xf1f8, 0x0188, 16},
23726   {m68k_op_bclr_8_r_ai         , 0xf1f8, 0x0190, 12},
23727   {m68k_op_bclr_8_r_pi         , 0xf1f8, 0x0198, 12},
23728   {m68k_op_bclr_8_r_pd         , 0xf1f8, 0x01a0, 14},
23729   {m68k_op_bclr_8_r_di         , 0xf1f8, 0x01a8, 16},
23730   {m68k_op_bclr_8_r_ix         , 0xf1f8, 0x01b0, 18},
23731   {m68k_op_bset_32_r_d         , 0xf1f8, 0x01c0,  8},
23732   {m68k_op_movep_32_re         , 0xf1f8, 0x01c8, 24},
23733   {m68k_op_bset_8_r_ai         , 0xf1f8, 0x01d0, 12},
23734   {m68k_op_bset_8_r_pi         , 0xf1f8, 0x01d8, 12},
23735   {m68k_op_bset_8_r_pd         , 0xf1f8, 0x01e0, 14},
23736   {m68k_op_bset_8_r_di         , 0xf1f8, 0x01e8, 16},
23737   {m68k_op_bset_8_r_ix         , 0xf1f8, 0x01f0, 18},
23738   {m68k_op_move_8_d_d          , 0xf1f8, 0x1000,  4},
23739   {m68k_op_move_8_d_ai         , 0xf1f8, 0x1010,  8},
23740   {m68k_op_move_8_d_pi         , 0xf1f8, 0x1018,  8},
23741   {m68k_op_move_8_d_pd         , 0xf1f8, 0x1020, 10},
23742   {m68k_op_move_8_d_di         , 0xf1f8, 0x1028, 12},
23743   {m68k_op_move_8_d_ix         , 0xf1f8, 0x1030, 14},
23744   {m68k_op_move_8_ai_d         , 0xf1f8, 0x1080,  8},
23745   {m68k_op_move_8_ai_ai        , 0xf1f8, 0x1090, 12},
23746   {m68k_op_move_8_ai_pi        , 0xf1f8, 0x1098, 12},
23747   {m68k_op_move_8_ai_pd        , 0xf1f8, 0x10a0, 14},
23748   {m68k_op_move_8_ai_di        , 0xf1f8, 0x10a8, 16},
23749   {m68k_op_move_8_ai_ix        , 0xf1f8, 0x10b0, 18},
23750   {m68k_op_move_8_pi_d         , 0xf1f8, 0x10c0,  8},
23751   {m68k_op_move_8_pi_ai        , 0xf1f8, 0x10d0, 12},
23752   {m68k_op_move_8_pi_pi        , 0xf1f8, 0x10d8, 12},
23753   {m68k_op_move_8_pi_pd        , 0xf1f8, 0x10e0, 14},
23754   {m68k_op_move_8_pi_di        , 0xf1f8, 0x10e8, 16},
23755   {m68k_op_move_8_pi_ix        , 0xf1f8, 0x10f0, 18},
23756   {m68k_op_move_8_pd_d         , 0xf1f8, 0x1100,  8},
23757   {m68k_op_move_8_pd_ai        , 0xf1f8, 0x1110, 12},
23758   {m68k_op_move_8_pd_pi        , 0xf1f8, 0x1118, 12},
23759   {m68k_op_move_8_pd_pd        , 0xf1f8, 0x1120, 14},
23760   {m68k_op_move_8_pd_di        , 0xf1f8, 0x1128, 16},
23761   {m68k_op_move_8_pd_ix        , 0xf1f8, 0x1130, 18},
23762   {m68k_op_move_8_di_d         , 0xf1f8, 0x1140, 12},
23763   {m68k_op_move_8_di_ai        , 0xf1f8, 0x1150, 16},
23764   {m68k_op_move_8_di_pi        , 0xf1f8, 0x1158, 16},
23765   {m68k_op_move_8_di_pd        , 0xf1f8, 0x1160, 18},
23766   {m68k_op_move_8_di_di        , 0xf1f8, 0x1168, 20},
23767   {m68k_op_move_8_di_ix        , 0xf1f8, 0x1170, 22},
23768   {m68k_op_move_8_ix_d         , 0xf1f8, 0x1180, 14},
23769   {m68k_op_move_8_ix_ai        , 0xf1f8, 0x1190, 18},
23770   {m68k_op_move_8_ix_pi        , 0xf1f8, 0x1198, 18},
23771   {m68k_op_move_8_ix_pd        , 0xf1f8, 0x11a0, 20},
23772   {m68k_op_move_8_ix_di        , 0xf1f8, 0x11a8, 22},
23773   {m68k_op_move_8_ix_ix        , 0xf1f8, 0x11b0, 24},
23774   {m68k_op_move_32_d_d         , 0xf1f8, 0x2000,  4},
23775   {m68k_op_move_32_d_a         , 0xf1f8, 0x2008,  4},
23776   {m68k_op_move_32_d_ai        , 0xf1f8, 0x2010, 12},
23777   {m68k_op_move_32_d_pi        , 0xf1f8, 0x2018, 12},
23778   {m68k_op_move_32_d_pd        , 0xf1f8, 0x2020, 14},
23779   {m68k_op_move_32_d_di        , 0xf1f8, 0x2028, 16},
23780   {m68k_op_move_32_d_ix        , 0xf1f8, 0x2030, 18},
23781   {m68k_op_movea_32_d          , 0xf1f8, 0x2040,  4},
23782   {m68k_op_movea_32_a          , 0xf1f8, 0x2048,  4},
23783   {m68k_op_movea_32_ai         , 0xf1f8, 0x2050, 12},
23784   {m68k_op_movea_32_pi         , 0xf1f8, 0x2058, 12},
23785   {m68k_op_movea_32_pd         , 0xf1f8, 0x2060, 14},
23786   {m68k_op_movea_32_di         , 0xf1f8, 0x2068, 16},
23787   {m68k_op_movea_32_ix         , 0xf1f8, 0x2070, 18},
23788   {m68k_op_move_32_ai_d        , 0xf1f8, 0x2080, 12},
23789   {m68k_op_move_32_ai_a        , 0xf1f8, 0x2088, 12},
23790   {m68k_op_move_32_ai_ai       , 0xf1f8, 0x2090, 20},
23791   {m68k_op_move_32_ai_pi       , 0xf1f8, 0x2098, 20},
23792   {m68k_op_move_32_ai_pd       , 0xf1f8, 0x20a0, 22},
23793   {m68k_op_move_32_ai_di       , 0xf1f8, 0x20a8, 24},
23794   {m68k_op_move_32_ai_ix       , 0xf1f8, 0x20b0, 26},
23795   {m68k_op_move_32_pi_d        , 0xf1f8, 0x20c0, 12},
23796   {m68k_op_move_32_pi_a        , 0xf1f8, 0x20c8, 12},
23797   {m68k_op_move_32_pi_ai       , 0xf1f8, 0x20d0, 20},
23798   {m68k_op_move_32_pi_pi       , 0xf1f8, 0x20d8, 20},
23799   {m68k_op_move_32_pi_pd       , 0xf1f8, 0x20e0, 22},
23800   {m68k_op_move_32_pi_di       , 0xf1f8, 0x20e8, 24},
23801   {m68k_op_move_32_pi_ix       , 0xf1f8, 0x20f0, 26},
23802   {m68k_op_move_32_pd_d        , 0xf1f8, 0x2100, 12},
23803   {m68k_op_move_32_pd_a        , 0xf1f8, 0x2108, 12},
23804   {m68k_op_move_32_pd_ai       , 0xf1f8, 0x2110, 20},
23805   {m68k_op_move_32_pd_pi       , 0xf1f8, 0x2118, 20},
23806   {m68k_op_move_32_pd_pd       , 0xf1f8, 0x2120, 22},
23807   {m68k_op_move_32_pd_di       , 0xf1f8, 0x2128, 24},
23808   {m68k_op_move_32_pd_ix       , 0xf1f8, 0x2130, 26},
23809   {m68k_op_move_32_di_d        , 0xf1f8, 0x2140, 16},
23810   {m68k_op_move_32_di_a        , 0xf1f8, 0x2148, 16},
23811   {m68k_op_move_32_di_ai       , 0xf1f8, 0x2150, 24},
23812   {m68k_op_move_32_di_pi       , 0xf1f8, 0x2158, 24},
23813   {m68k_op_move_32_di_pd       , 0xf1f8, 0x2160, 26},
23814   {m68k_op_move_32_di_di       , 0xf1f8, 0x2168, 28},
23815   {m68k_op_move_32_di_ix       , 0xf1f8, 0x2170, 30},
23816   {m68k_op_move_32_ix_d        , 0xf1f8, 0x2180, 18},
23817   {m68k_op_move_32_ix_a        , 0xf1f8, 0x2188, 18},
23818   {m68k_op_move_32_ix_ai       , 0xf1f8, 0x2190, 26},
23819   {m68k_op_move_32_ix_pi       , 0xf1f8, 0x2198, 26},
23820   {m68k_op_move_32_ix_pd       , 0xf1f8, 0x21a0, 28},
23821   {m68k_op_move_32_ix_di       , 0xf1f8, 0x21a8, 30},
23822   {m68k_op_move_32_ix_ix       , 0xf1f8, 0x21b0, 32},
23823   {m68k_op_move_16_d_d         , 0xf1f8, 0x3000,  4},
23824   {m68k_op_move_16_d_a         , 0xf1f8, 0x3008,  4},
23825   {m68k_op_move_16_d_ai        , 0xf1f8, 0x3010,  8},
23826   {m68k_op_move_16_d_pi        , 0xf1f8, 0x3018,  8},
23827   {m68k_op_move_16_d_pd        , 0xf1f8, 0x3020, 10},
23828   {m68k_op_move_16_d_di        , 0xf1f8, 0x3028, 12},
23829   {m68k_op_move_16_d_ix        , 0xf1f8, 0x3030, 14},
23830   {m68k_op_movea_16_d          , 0xf1f8, 0x3040,  4},
23831   {m68k_op_movea_16_a          , 0xf1f8, 0x3048,  4},
23832   {m68k_op_movea_16_ai         , 0xf1f8, 0x3050,  8},
23833   {m68k_op_movea_16_pi         , 0xf1f8, 0x3058,  8},
23834   {m68k_op_movea_16_pd         , 0xf1f8, 0x3060, 10},
23835   {m68k_op_movea_16_di         , 0xf1f8, 0x3068, 12},
23836   {m68k_op_movea_16_ix         , 0xf1f8, 0x3070, 14},
23837   {m68k_op_move_16_ai_d        , 0xf1f8, 0x3080,  8},
23838   {m68k_op_move_16_ai_a        , 0xf1f8, 0x3088,  8},
23839   {m68k_op_move_16_ai_ai       , 0xf1f8, 0x3090, 12},
23840   {m68k_op_move_16_ai_pi       , 0xf1f8, 0x3098, 12},
23841   {m68k_op_move_16_ai_pd       , 0xf1f8, 0x30a0, 14},
23842   {m68k_op_move_16_ai_di       , 0xf1f8, 0x30a8, 16},
23843   {m68k_op_move_16_ai_ix       , 0xf1f8, 0x30b0, 18},
23844   {m68k_op_move_16_pi_d        , 0xf1f8, 0x30c0,  8},
23845   {m68k_op_move_16_pi_a        , 0xf1f8, 0x30c8,  8},
23846   {m68k_op_move_16_pi_ai       , 0xf1f8, 0x30d0, 12},
23847   {m68k_op_move_16_pi_pi       , 0xf1f8, 0x30d8, 12},
23848   {m68k_op_move_16_pi_pd       , 0xf1f8, 0x30e0, 14},
23849   {m68k_op_move_16_pi_di       , 0xf1f8, 0x30e8, 16},
23850   {m68k_op_move_16_pi_ix       , 0xf1f8, 0x30f0, 18},
23851   {m68k_op_move_16_pd_d        , 0xf1f8, 0x3100,  8},
23852   {m68k_op_move_16_pd_a        , 0xf1f8, 0x3108,  8},
23853   {m68k_op_move_16_pd_ai       , 0xf1f8, 0x3110, 12},
23854   {m68k_op_move_16_pd_pi       , 0xf1f8, 0x3118, 12},
23855   {m68k_op_move_16_pd_pd       , 0xf1f8, 0x3120, 14},
23856   {m68k_op_move_16_pd_di       , 0xf1f8, 0x3128, 16},
23857   {m68k_op_move_16_pd_ix       , 0xf1f8, 0x3130, 18},
23858   {m68k_op_move_16_di_d        , 0xf1f8, 0x3140, 12},
23859   {m68k_op_move_16_di_a        , 0xf1f8, 0x3148, 12},
23860   {m68k_op_move_16_di_ai       , 0xf1f8, 0x3150, 16},
23861   {m68k_op_move_16_di_pi       , 0xf1f8, 0x3158, 16},
23862   {m68k_op_move_16_di_pd       , 0xf1f8, 0x3160, 18},
23863   {m68k_op_move_16_di_di       , 0xf1f8, 0x3168, 20},
23864   {m68k_op_move_16_di_ix       , 0xf1f8, 0x3170, 22},
23865   {m68k_op_move_16_ix_d        , 0xf1f8, 0x3180, 14},
23866   {m68k_op_move_16_ix_a        , 0xf1f8, 0x3188, 14},
23867   {m68k_op_move_16_ix_ai       , 0xf1f8, 0x3190, 18},
23868   {m68k_op_move_16_ix_pi       , 0xf1f8, 0x3198, 18},
23869   {m68k_op_move_16_ix_pd       , 0xf1f8, 0x31a0, 20},
23870   {m68k_op_move_16_ix_di       , 0xf1f8, 0x31a8, 22},
23871   {m68k_op_move_16_ix_ix       , 0xf1f8, 0x31b0, 24},
23872   {m68k_op_chk_16_d            , 0xf1f8, 0x4180, 10},
23873   {m68k_op_chk_16_ai           , 0xf1f8, 0x4190, 14},
23874   {m68k_op_chk_16_pi           , 0xf1f8, 0x4198, 14},
23875   {m68k_op_chk_16_pd           , 0xf1f8, 0x41a0, 16},
23876   {m68k_op_chk_16_di           , 0xf1f8, 0x41a8, 18},
23877   {m68k_op_chk_16_ix           , 0xf1f8, 0x41b0, 20},
23878   {m68k_op_lea_32_ai           , 0xf1f8, 0x41d0,  4},
23879   {m68k_op_lea_32_di           , 0xf1f8, 0x41e8,  8},
23880   {m68k_op_lea_32_ix           , 0xf1f8, 0x41f0, 12},
23881   {m68k_op_addq_8_d            , 0xf1f8, 0x5000,  4},
23882   {m68k_op_addq_8_ai           , 0xf1f8, 0x5010, 12},
23883   {m68k_op_addq_8_pi           , 0xf1f8, 0x5018, 12},
23884   {m68k_op_addq_8_pd           , 0xf1f8, 0x5020, 14},
23885   {m68k_op_addq_8_di           , 0xf1f8, 0x5028, 16},
23886   {m68k_op_addq_8_ix           , 0xf1f8, 0x5030, 18},
23887   {m68k_op_addq_16_d           , 0xf1f8, 0x5040,  4},
23888   {m68k_op_addq_16_a           , 0xf1f8, 0x5048,  4},
23889   {m68k_op_addq_16_ai          , 0xf1f8, 0x5050, 12},
23890   {m68k_op_addq_16_pi          , 0xf1f8, 0x5058, 12},
23891   {m68k_op_addq_16_pd          , 0xf1f8, 0x5060, 14},
23892   {m68k_op_addq_16_di          , 0xf1f8, 0x5068, 16},
23893   {m68k_op_addq_16_ix          , 0xf1f8, 0x5070, 18},
23894   {m68k_op_addq_32_d           , 0xf1f8, 0x5080,  8},
23895   {m68k_op_addq_32_a           , 0xf1f8, 0x5088,  8},
23896   {m68k_op_addq_32_ai          , 0xf1f8, 0x5090, 20},
23897   {m68k_op_addq_32_pi          , 0xf1f8, 0x5098, 20},
23898   {m68k_op_addq_32_pd          , 0xf1f8, 0x50a0, 22},
23899   {m68k_op_addq_32_di          , 0xf1f8, 0x50a8, 24},
23900   {m68k_op_addq_32_ix          , 0xf1f8, 0x50b0, 26},
23901   {m68k_op_subq_8_d            , 0xf1f8, 0x5100,  4},
23902   {m68k_op_subq_8_ai           , 0xf1f8, 0x5110, 12},
23903   {m68k_op_subq_8_pi           , 0xf1f8, 0x5118, 12},
23904   {m68k_op_subq_8_pd           , 0xf1f8, 0x5120, 14},
23905   {m68k_op_subq_8_di           , 0xf1f8, 0x5128, 16},
23906   {m68k_op_subq_8_ix           , 0xf1f8, 0x5130, 18},
23907   {m68k_op_subq_16_d           , 0xf1f8, 0x5140,  4},
23908   {m68k_op_subq_16_a           , 0xf1f8, 0x5148,  8},
23909   {m68k_op_subq_16_ai          , 0xf1f8, 0x5150, 12},
23910   {m68k_op_subq_16_pi          , 0xf1f8, 0x5158, 12},
23911   {m68k_op_subq_16_pd          , 0xf1f8, 0x5160, 14},
23912   {m68k_op_subq_16_di          , 0xf1f8, 0x5168, 16},
23913   {m68k_op_subq_16_ix          , 0xf1f8, 0x5170, 18},
23914   {m68k_op_subq_32_d           , 0xf1f8, 0x5180,  8},
23915   {m68k_op_subq_32_a           , 0xf1f8, 0x5188,  8},
23916   {m68k_op_subq_32_ai          , 0xf1f8, 0x5190, 20},
23917   {m68k_op_subq_32_pi          , 0xf1f8, 0x5198, 20},
23918   {m68k_op_subq_32_pd          , 0xf1f8, 0x51a0, 22},
23919   {m68k_op_subq_32_di          , 0xf1f8, 0x51a8, 24},
23920   {m68k_op_subq_32_ix          , 0xf1f8, 0x51b0, 26},
23921   {m68k_op_or_8_er_d           , 0xf1f8, 0x8000,  4},
23922   {m68k_op_or_8_er_ai          , 0xf1f8, 0x8010,  8},
23923   {m68k_op_or_8_er_pi          , 0xf1f8, 0x8018,  8},
23924   {m68k_op_or_8_er_pd          , 0xf1f8, 0x8020, 10},
23925   {m68k_op_or_8_er_di          , 0xf1f8, 0x8028, 12},
23926   {m68k_op_or_8_er_ix          , 0xf1f8, 0x8030, 14},
23927   {m68k_op_or_16_er_d          , 0xf1f8, 0x8040,  4},
23928   {m68k_op_or_16_er_ai         , 0xf1f8, 0x8050,  8},
23929   {m68k_op_or_16_er_pi         , 0xf1f8, 0x8058,  8},
23930   {m68k_op_or_16_er_pd         , 0xf1f8, 0x8060, 10},
23931   {m68k_op_or_16_er_di         , 0xf1f8, 0x8068, 12},
23932   {m68k_op_or_16_er_ix         , 0xf1f8, 0x8070, 14},
23933   {m68k_op_or_32_er_d          , 0xf1f8, 0x8080,  8},
23934   {m68k_op_or_32_er_ai         , 0xf1f8, 0x8090, 14},
23935   {m68k_op_or_32_er_pi         , 0xf1f8, 0x8098, 14},
23936   {m68k_op_or_32_er_pd         , 0xf1f8, 0x80a0, 16},
23937   {m68k_op_or_32_er_di         , 0xf1f8, 0x80a8, 18},
23938   {m68k_op_or_32_er_ix         , 0xf1f8, 0x80b0, 20},
23939   {m68k_op_divu_16_d           , 0xf1f8, 0x80c0,  0},
23940   {m68k_op_divu_16_ai          , 0xf1f8, 0x80d0,  4},
23941   {m68k_op_divu_16_pi          , 0xf1f8, 0x80d8,  4},
23942   {m68k_op_divu_16_pd          , 0xf1f8, 0x80e0,  6},
23943   {m68k_op_divu_16_di          , 0xf1f8, 0x80e8,  8},
23944   {m68k_op_divu_16_ix          , 0xf1f8, 0x80f0, 10},
23945   {m68k_op_sbcd_8_rr           , 0xf1f8, 0x8100,  6},
23946   {m68k_op_sbcd_8_mm           , 0xf1f8, 0x8108, 18},
23947   {m68k_op_or_8_re_ai          , 0xf1f8, 0x8110, 12},
23948   {m68k_op_or_8_re_pi          , 0xf1f8, 0x8118, 12},
23949   {m68k_op_or_8_re_pd          , 0xf1f8, 0x8120, 14},
23950   {m68k_op_or_8_re_di          , 0xf1f8, 0x8128, 16},
23951   {m68k_op_or_8_re_ix          , 0xf1f8, 0x8130, 18},
23952   {m68k_op_or_16_re_ai         , 0xf1f8, 0x8150, 12},
23953   {m68k_op_or_16_re_pi         , 0xf1f8, 0x8158, 12},
23954   {m68k_op_or_16_re_pd         , 0xf1f8, 0x8160, 14},
23955   {m68k_op_or_16_re_di         , 0xf1f8, 0x8168, 16},
23956   {m68k_op_or_16_re_ix         , 0xf1f8, 0x8170, 18},
23957   {m68k_op_or_32_re_ai         , 0xf1f8, 0x8190, 20},
23958   {m68k_op_or_32_re_pi         , 0xf1f8, 0x8198, 20},
23959   {m68k_op_or_32_re_pd         , 0xf1f8, 0x81a0, 22},
23960   {m68k_op_or_32_re_di         , 0xf1f8, 0x81a8, 24},
23961   {m68k_op_or_32_re_ix         , 0xf1f8, 0x81b0, 26},
23962   {m68k_op_divs_16_d           , 0xf1f8, 0x81c0,  0},
23963   {m68k_op_divs_16_ai          , 0xf1f8, 0x81d0,  4},
23964   {m68k_op_divs_16_pi          , 0xf1f8, 0x81d8,  4},
23965   {m68k_op_divs_16_pd          , 0xf1f8, 0x81e0,  6},
23966   {m68k_op_divs_16_di          , 0xf1f8, 0x81e8,  8},
23967   {m68k_op_divs_16_ix          , 0xf1f8, 0x81f0, 10},
23968   {m68k_op_sub_8_er_d          , 0xf1f8, 0x9000,  4},
23969   {m68k_op_sub_8_er_ai         , 0xf1f8, 0x9010,  8},
23970   {m68k_op_sub_8_er_pi         , 0xf1f8, 0x9018,  8},
23971   {m68k_op_sub_8_er_pd         , 0xf1f8, 0x9020, 10},
23972   {m68k_op_sub_8_er_di         , 0xf1f8, 0x9028, 12},
23973   {m68k_op_sub_8_er_ix         , 0xf1f8, 0x9030, 14},
23974   {m68k_op_sub_16_er_d         , 0xf1f8, 0x9040,  4},
23975   {m68k_op_sub_16_er_a         , 0xf1f8, 0x9048,  4},
23976   {m68k_op_sub_16_er_ai        , 0xf1f8, 0x9050,  8},
23977   {m68k_op_sub_16_er_pi        , 0xf1f8, 0x9058,  8},
23978   {m68k_op_sub_16_er_pd        , 0xf1f8, 0x9060, 10},
23979   {m68k_op_sub_16_er_di        , 0xf1f8, 0x9068, 12},
23980   {m68k_op_sub_16_er_ix        , 0xf1f8, 0x9070, 14},
23981   {m68k_op_sub_32_er_d         , 0xf1f8, 0x9080,  8},
23982   {m68k_op_sub_32_er_a         , 0xf1f8, 0x9088,  8},
23983   {m68k_op_sub_32_er_ai        , 0xf1f8, 0x9090, 14},
23984   {m68k_op_sub_32_er_pi        , 0xf1f8, 0x9098, 14},
23985   {m68k_op_sub_32_er_pd        , 0xf1f8, 0x90a0, 16},
23986   {m68k_op_sub_32_er_di        , 0xf1f8, 0x90a8, 18},
23987   {m68k_op_sub_32_er_ix        , 0xf1f8, 0x90b0, 20},
23988   {m68k_op_suba_16_d           , 0xf1f8, 0x90c0,  8},
23989   {m68k_op_suba_16_a           , 0xf1f8, 0x90c8,  8},
23990   {m68k_op_suba_16_ai          , 0xf1f8, 0x90d0, 12},
23991   {m68k_op_suba_16_pi          , 0xf1f8, 0x90d8, 12},
23992   {m68k_op_suba_16_pd          , 0xf1f8, 0x90e0, 14},
23993   {m68k_op_suba_16_di          , 0xf1f8, 0x90e8, 16},
23994   {m68k_op_suba_16_ix          , 0xf1f8, 0x90f0, 18},
23995   {m68k_op_subx_8_rr           , 0xf1f8, 0x9100,  4},
23996   {m68k_op_subx_8_mm           , 0xf1f8, 0x9108, 18},
23997   {m68k_op_sub_8_re_ai         , 0xf1f8, 0x9110, 12},
23998   {m68k_op_sub_8_re_pi         , 0xf1f8, 0x9118, 12},
23999   {m68k_op_sub_8_re_pd         , 0xf1f8, 0x9120, 14},
24000   {m68k_op_sub_8_re_di         , 0xf1f8, 0x9128, 16},
24001   {m68k_op_sub_8_re_ix         , 0xf1f8, 0x9130, 18},
24002   {m68k_op_subx_16_rr          , 0xf1f8, 0x9140,  4},
24003   {m68k_op_subx_16_mm          , 0xf1f8, 0x9148, 18},
24004   {m68k_op_sub_16_re_ai        , 0xf1f8, 0x9150, 12},
24005   {m68k_op_sub_16_re_pi        , 0xf1f8, 0x9158, 12},
24006   {m68k_op_sub_16_re_pd        , 0xf1f8, 0x9160, 14},
24007   {m68k_op_sub_16_re_di        , 0xf1f8, 0x9168, 16},
24008   {m68k_op_sub_16_re_ix        , 0xf1f8, 0x9170, 18},
24009   {m68k_op_subx_32_rr          , 0xf1f8, 0x9180,  8},
24010   {m68k_op_subx_32_mm          , 0xf1f8, 0x9188, 30},
24011   {m68k_op_sub_32_re_ai        , 0xf1f8, 0x9190, 20},
24012   {m68k_op_sub_32_re_pi        , 0xf1f8, 0x9198, 20},
24013   {m68k_op_sub_32_re_pd        , 0xf1f8, 0x91a0, 22},
24014   {m68k_op_sub_32_re_di        , 0xf1f8, 0x91a8, 24},
24015   {m68k_op_sub_32_re_ix        , 0xf1f8, 0x91b0, 26},
24016   {m68k_op_suba_32_d           , 0xf1f8, 0x91c0,  8},
24017   {m68k_op_suba_32_a           , 0xf1f8, 0x91c8,  8},
24018   {m68k_op_suba_32_ai          , 0xf1f8, 0x91d0, 14},
24019   {m68k_op_suba_32_pi          , 0xf1f8, 0x91d8, 14},
24020   {m68k_op_suba_32_pd          , 0xf1f8, 0x91e0, 16},
24021   {m68k_op_suba_32_di          , 0xf1f8, 0x91e8, 18},
24022   {m68k_op_suba_32_ix          , 0xf1f8, 0x91f0, 20},
24023   {m68k_op_cmp_8_d             , 0xf1f8, 0xb000,  4},
24024   {m68k_op_cmp_8_ai            , 0xf1f8, 0xb010,  8},
24025   {m68k_op_cmp_8_pi            , 0xf1f8, 0xb018,  8},
24026   {m68k_op_cmp_8_pd            , 0xf1f8, 0xb020, 10},
24027   {m68k_op_cmp_8_di            , 0xf1f8, 0xb028, 12},
24028   {m68k_op_cmp_8_ix            , 0xf1f8, 0xb030, 14},
24029   {m68k_op_cmp_16_d            , 0xf1f8, 0xb040,  4},
24030   {m68k_op_cmp_16_a            , 0xf1f8, 0xb048,  4},
24031   {m68k_op_cmp_16_ai           , 0xf1f8, 0xb050,  8},
24032   {m68k_op_cmp_16_pi           , 0xf1f8, 0xb058,  8},
24033   {m68k_op_cmp_16_pd           , 0xf1f8, 0xb060, 10},
24034   {m68k_op_cmp_16_di           , 0xf1f8, 0xb068, 12},
24035   {m68k_op_cmp_16_ix           , 0xf1f8, 0xb070, 14},
24036   {m68k_op_cmp_32_d            , 0xf1f8, 0xb080,  6},
24037   {m68k_op_cmp_32_a            , 0xf1f8, 0xb088,  6},
24038   {m68k_op_cmp_32_ai           , 0xf1f8, 0xb090, 14},
24039   {m68k_op_cmp_32_pi           , 0xf1f8, 0xb098, 14},
24040   {m68k_op_cmp_32_pd           , 0xf1f8, 0xb0a0, 16},
24041   {m68k_op_cmp_32_di           , 0xf1f8, 0xb0a8, 18},
24042   {m68k_op_cmp_32_ix           , 0xf1f8, 0xb0b0, 20},
24043   {m68k_op_cmpa_16_d           , 0xf1f8, 0xb0c0,  6},
24044   {m68k_op_cmpa_16_a           , 0xf1f8, 0xb0c8,  6},
24045   {m68k_op_cmpa_16_ai          , 0xf1f8, 0xb0d0, 10},
24046   {m68k_op_cmpa_16_pi          , 0xf1f8, 0xb0d8, 10},
24047   {m68k_op_cmpa_16_pd          , 0xf1f8, 0xb0e0, 12},
24048   {m68k_op_cmpa_16_di          , 0xf1f8, 0xb0e8, 14},
24049   {m68k_op_cmpa_16_ix          , 0xf1f8, 0xb0f0, 16},
24050   {m68k_op_eor_8_d             , 0xf1f8, 0xb100,  4},
24051   {m68k_op_cmpm_8              , 0xf1f8, 0xb108, 12},
24052   {m68k_op_eor_8_ai            , 0xf1f8, 0xb110, 12},
24053   {m68k_op_eor_8_pi            , 0xf1f8, 0xb118, 12},
24054   {m68k_op_eor_8_pd            , 0xf1f8, 0xb120, 14},
24055   {m68k_op_eor_8_di            , 0xf1f8, 0xb128, 16},
24056   {m68k_op_eor_8_ix            , 0xf1f8, 0xb130, 18},
24057   {m68k_op_eor_16_d            , 0xf1f8, 0xb140,  4},
24058   {m68k_op_cmpm_16             , 0xf1f8, 0xb148, 12},
24059   {m68k_op_eor_16_ai           , 0xf1f8, 0xb150, 12},
24060   {m68k_op_eor_16_pi           , 0xf1f8, 0xb158, 12},
24061   {m68k_op_eor_16_pd           , 0xf1f8, 0xb160, 14},
24062   {m68k_op_eor_16_di           , 0xf1f8, 0xb168, 16},
24063   {m68k_op_eor_16_ix           , 0xf1f8, 0xb170, 18},
24064   {m68k_op_eor_32_d            , 0xf1f8, 0xb180,  8},
24065   {m68k_op_cmpm_32             , 0xf1f8, 0xb188, 20},
24066   {m68k_op_eor_32_ai           , 0xf1f8, 0xb190, 20},
24067   {m68k_op_eor_32_pi           , 0xf1f8, 0xb198, 20},
24068   {m68k_op_eor_32_pd           , 0xf1f8, 0xb1a0, 22},
24069   {m68k_op_eor_32_di           , 0xf1f8, 0xb1a8, 24},
24070   {m68k_op_eor_32_ix           , 0xf1f8, 0xb1b0, 26},
24071   {m68k_op_cmpa_32_d           , 0xf1f8, 0xb1c0,  6},
24072   {m68k_op_cmpa_32_a           , 0xf1f8, 0xb1c8,  6},
24073   {m68k_op_cmpa_32_ai          , 0xf1f8, 0xb1d0, 14},
24074   {m68k_op_cmpa_32_pi          , 0xf1f8, 0xb1d8, 14},
24075   {m68k_op_cmpa_32_pd          , 0xf1f8, 0xb1e0, 16},
24076   {m68k_op_cmpa_32_di          , 0xf1f8, 0xb1e8, 18},
24077   {m68k_op_cmpa_32_ix          , 0xf1f8, 0xb1f0, 20},
24078   {m68k_op_and_8_er_d          , 0xf1f8, 0xc000,  4},
24079   {m68k_op_and_8_er_ai         , 0xf1f8, 0xc010,  8},
24080   {m68k_op_and_8_er_pi         , 0xf1f8, 0xc018,  8},
24081   {m68k_op_and_8_er_pd         , 0xf1f8, 0xc020, 10},
24082   {m68k_op_and_8_er_di         , 0xf1f8, 0xc028, 12},
24083   {m68k_op_and_8_er_ix         , 0xf1f8, 0xc030, 14},
24084   {m68k_op_and_16_er_d         , 0xf1f8, 0xc040,  4},
24085   {m68k_op_and_16_er_ai        , 0xf1f8, 0xc050,  8},
24086   {m68k_op_and_16_er_pi        , 0xf1f8, 0xc058,  8},
24087   {m68k_op_and_16_er_pd        , 0xf1f8, 0xc060, 10},
24088   {m68k_op_and_16_er_di        , 0xf1f8, 0xc068, 12},
24089   {m68k_op_and_16_er_ix        , 0xf1f8, 0xc070, 14},
24090   {m68k_op_and_32_er_d         , 0xf1f8, 0xc080,  8},
24091   {m68k_op_and_32_er_ai        , 0xf1f8, 0xc090, 14},
24092   {m68k_op_and_32_er_pi        , 0xf1f8, 0xc098, 14},
24093   {m68k_op_and_32_er_pd        , 0xf1f8, 0xc0a0, 16},
24094   {m68k_op_and_32_er_di        , 0xf1f8, 0xc0a8, 18},
24095   {m68k_op_and_32_er_ix        , 0xf1f8, 0xc0b0, 20},
24096   {m68k_op_mulu_16_d           , 0xf1f8, 0xc0c0,  0},
24097   {m68k_op_mulu_16_ai          , 0xf1f8, 0xc0d0,  4},
24098   {m68k_op_mulu_16_pi          , 0xf1f8, 0xc0d8,  4},
24099   {m68k_op_mulu_16_pd          , 0xf1f8, 0xc0e0,  6},
24100   {m68k_op_mulu_16_di          , 0xf1f8, 0xc0e8,  8},
24101   {m68k_op_mulu_16_ix          , 0xf1f8, 0xc0f0, 10},
24102   {m68k_op_abcd_8_rr           , 0xf1f8, 0xc100,  6},
24103   {m68k_op_abcd_8_mm           , 0xf1f8, 0xc108, 18},
24104   {m68k_op_and_8_re_ai         , 0xf1f8, 0xc110, 12},
24105   {m68k_op_and_8_re_pi         , 0xf1f8, 0xc118, 12},
24106   {m68k_op_and_8_re_pd         , 0xf1f8, 0xc120, 14},
24107   {m68k_op_and_8_re_di         , 0xf1f8, 0xc128, 16},
24108   {m68k_op_and_8_re_ix         , 0xf1f8, 0xc130, 18},
24109   {m68k_op_exg_32_dd           , 0xf1f8, 0xc140,  6},
24110   {m68k_op_exg_32_aa           , 0xf1f8, 0xc148,  6},
24111   {m68k_op_and_16_re_ai        , 0xf1f8, 0xc150, 12},
24112   {m68k_op_and_16_re_pi        , 0xf1f8, 0xc158, 12},
24113   {m68k_op_and_16_re_pd        , 0xf1f8, 0xc160, 14},
24114   {m68k_op_and_16_re_di        , 0xf1f8, 0xc168, 16},
24115   {m68k_op_and_16_re_ix        , 0xf1f8, 0xc170, 18},
24116   {m68k_op_exg_32_da           , 0xf1f8, 0xc188,  6},
24117   {m68k_op_and_32_re_ai        , 0xf1f8, 0xc190, 20},
24118   {m68k_op_and_32_re_pi        , 0xf1f8, 0xc198, 20},
24119   {m68k_op_and_32_re_pd        , 0xf1f8, 0xc1a0, 22},
24120   {m68k_op_and_32_re_di        , 0xf1f8, 0xc1a8, 24},
24121   {m68k_op_and_32_re_ix        , 0xf1f8, 0xc1b0, 26},
24122   {m68k_op_muls_16_d           , 0xf1f8, 0xc1c0,  0},
24123   {m68k_op_muls_16_ai          , 0xf1f8, 0xc1d0,  4},
24124   {m68k_op_muls_16_pi          , 0xf1f8, 0xc1d8,  4},
24125   {m68k_op_muls_16_pd          , 0xf1f8, 0xc1e0,  6},
24126   {m68k_op_muls_16_di          , 0xf1f8, 0xc1e8,  8},
24127   {m68k_op_muls_16_ix          , 0xf1f8, 0xc1f0, 10},
24128   {m68k_op_add_8_er_d          , 0xf1f8, 0xd000,  4},
24129   {m68k_op_add_8_er_ai         , 0xf1f8, 0xd010,  8},
24130   {m68k_op_add_8_er_pi         , 0xf1f8, 0xd018,  8},
24131   {m68k_op_add_8_er_pd         , 0xf1f8, 0xd020, 10},
24132   {m68k_op_add_8_er_di         , 0xf1f8, 0xd028, 12},
24133   {m68k_op_add_8_er_ix         , 0xf1f8, 0xd030, 14},
24134   {m68k_op_add_16_er_d         , 0xf1f8, 0xd040,  4},
24135   {m68k_op_add_16_er_a         , 0xf1f8, 0xd048,  4},
24136   {m68k_op_add_16_er_ai        , 0xf1f8, 0xd050,  8},
24137   {m68k_op_add_16_er_pi        , 0xf1f8, 0xd058,  8},
24138   {m68k_op_add_16_er_pd        , 0xf1f8, 0xd060, 10},
24139   {m68k_op_add_16_er_di        , 0xf1f8, 0xd068, 12},
24140   {m68k_op_add_16_er_ix        , 0xf1f8, 0xd070, 14},
24141   {m68k_op_add_32_er_d         , 0xf1f8, 0xd080,  8},
24142   {m68k_op_add_32_er_a         , 0xf1f8, 0xd088,  8},
24143   {m68k_op_add_32_er_ai        , 0xf1f8, 0xd090, 14},
24144   {m68k_op_add_32_er_pi        , 0xf1f8, 0xd098, 14},
24145   {m68k_op_add_32_er_pd        , 0xf1f8, 0xd0a0, 16},
24146   {m68k_op_add_32_er_di        , 0xf1f8, 0xd0a8, 18},
24147   {m68k_op_add_32_er_ix        , 0xf1f8, 0xd0b0, 20},
24148   {m68k_op_adda_16_d           , 0xf1f8, 0xd0c0,  8},
24149   {m68k_op_adda_16_a           , 0xf1f8, 0xd0c8,  8},
24150   {m68k_op_adda_16_ai          , 0xf1f8, 0xd0d0, 12},
24151   {m68k_op_adda_16_pi          , 0xf1f8, 0xd0d8, 12},
24152   {m68k_op_adda_16_pd          , 0xf1f8, 0xd0e0, 14},
24153   {m68k_op_adda_16_di          , 0xf1f8, 0xd0e8, 16},
24154   {m68k_op_adda_16_ix          , 0xf1f8, 0xd0f0, 18},
24155   {m68k_op_addx_8_rr           , 0xf1f8, 0xd100,  4},
24156   {m68k_op_addx_8_mm           , 0xf1f8, 0xd108, 18},
24157   {m68k_op_add_8_re_ai         , 0xf1f8, 0xd110, 12},
24158   {m68k_op_add_8_re_pi         , 0xf1f8, 0xd118, 12},
24159   {m68k_op_add_8_re_pd         , 0xf1f8, 0xd120, 14},
24160   {m68k_op_add_8_re_di         , 0xf1f8, 0xd128, 16},
24161   {m68k_op_add_8_re_ix         , 0xf1f8, 0xd130, 18},
24162   {m68k_op_addx_16_rr          , 0xf1f8, 0xd140,  4},
24163   {m68k_op_addx_16_mm          , 0xf1f8, 0xd148, 18},
24164   {m68k_op_add_16_re_ai        , 0xf1f8, 0xd150, 12},
24165   {m68k_op_add_16_re_pi        , 0xf1f8, 0xd158, 12},
24166   {m68k_op_add_16_re_pd        , 0xf1f8, 0xd160, 14},
24167   {m68k_op_add_16_re_di        , 0xf1f8, 0xd168, 16},
24168   {m68k_op_add_16_re_ix        , 0xf1f8, 0xd170, 18},
24169   {m68k_op_addx_32_rr          , 0xf1f8, 0xd180,  8},
24170   {m68k_op_addx_32_mm          , 0xf1f8, 0xd188, 30},
24171   {m68k_op_add_32_re_ai        , 0xf1f8, 0xd190, 20},
24172   {m68k_op_add_32_re_pi        , 0xf1f8, 0xd198, 20},
24173   {m68k_op_add_32_re_pd        , 0xf1f8, 0xd1a0, 22},
24174   {m68k_op_add_32_re_di        , 0xf1f8, 0xd1a8, 24},
24175   {m68k_op_add_32_re_ix        , 0xf1f8, 0xd1b0, 26},
24176   {m68k_op_adda_32_d           , 0xf1f8, 0xd1c0,  8},
24177   {m68k_op_adda_32_a           , 0xf1f8, 0xd1c8,  8},
24178   {m68k_op_adda_32_ai          , 0xf1f8, 0xd1d0, 14},
24179   {m68k_op_adda_32_pi          , 0xf1f8, 0xd1d8, 14},
24180   {m68k_op_adda_32_pd          , 0xf1f8, 0xd1e0, 16},
24181   {m68k_op_adda_32_di          , 0xf1f8, 0xd1e8, 18},
24182   {m68k_op_adda_32_ix          , 0xf1f8, 0xd1f0, 20},
24183   {m68k_op_asr_8_s             , 0xf1f8, 0xe000,  6},
24184   {m68k_op_lsr_8_s             , 0xf1f8, 0xe008,  6},
24185   {m68k_op_roxr_8_s            , 0xf1f8, 0xe010,  6},
24186   {m68k_op_ror_8_s             , 0xf1f8, 0xe018,  6},
24187   {m68k_op_asr_8_r             , 0xf1f8, 0xe020,  6},
24188   {m68k_op_lsr_8_r             , 0xf1f8, 0xe028,  6},
24189   {m68k_op_roxr_8_r            , 0xf1f8, 0xe030,  6},
24190   {m68k_op_ror_8_r             , 0xf1f8, 0xe038,  6},
24191   {m68k_op_asr_16_s            , 0xf1f8, 0xe040,  6},
24192   {m68k_op_lsr_16_s            , 0xf1f8, 0xe048,  6},
24193   {m68k_op_roxr_16_s           , 0xf1f8, 0xe050,  6},
24194   {m68k_op_ror_16_s            , 0xf1f8, 0xe058,  6},
24195   {m68k_op_asr_16_r            , 0xf1f8, 0xe060,  6},
24196   {m68k_op_lsr_16_r            , 0xf1f8, 0xe068,  6},
24197   {m68k_op_roxr_16_r           , 0xf1f8, 0xe070,  6},
24198   {m68k_op_ror_16_r            , 0xf1f8, 0xe078,  6},
24199   {m68k_op_asr_32_s            , 0xf1f8, 0xe080,  8},
24200   {m68k_op_lsr_32_s            , 0xf1f8, 0xe088,  8},
24201   {m68k_op_roxr_32_s           , 0xf1f8, 0xe090,  8},
24202   {m68k_op_ror_32_s            , 0xf1f8, 0xe098,  8},
24203   {m68k_op_asr_32_r            , 0xf1f8, 0xe0a0,  8},
24204   {m68k_op_lsr_32_r            , 0xf1f8, 0xe0a8,  8},
24205   {m68k_op_roxr_32_r           , 0xf1f8, 0xe0b0,  8},
24206   {m68k_op_ror_32_r            , 0xf1f8, 0xe0b8,  8},
24207   {m68k_op_asl_8_s             , 0xf1f8, 0xe100,  6},
24208   {m68k_op_lsl_8_s             , 0xf1f8, 0xe108,  6},
24209   {m68k_op_roxl_8_s            , 0xf1f8, 0xe110,  6},
24210   {m68k_op_rol_8_s             , 0xf1f8, 0xe118,  6},
24211   {m68k_op_asl_8_r             , 0xf1f8, 0xe120,  6},
24212   {m68k_op_lsl_8_r             , 0xf1f8, 0xe128,  6},
24213   {m68k_op_roxl_8_r            , 0xf1f8, 0xe130,  6},
24214   {m68k_op_rol_8_r             , 0xf1f8, 0xe138,  6},
24215   {m68k_op_asl_16_s            , 0xf1f8, 0xe140,  6},
24216   {m68k_op_lsl_16_s            , 0xf1f8, 0xe148,  6},
24217   {m68k_op_roxl_16_s           , 0xf1f8, 0xe150,  6},
24218   {m68k_op_rol_16_s            , 0xf1f8, 0xe158,  6},
24219   {m68k_op_asl_16_r            , 0xf1f8, 0xe160,  6},
24220   {m68k_op_lsl_16_r            , 0xf1f8, 0xe168,  6},
24221   {m68k_op_roxl_16_r           , 0xf1f8, 0xe170,  6},
24222   {m68k_op_rol_16_r            , 0xf1f8, 0xe178,  6},
24223   {m68k_op_asl_32_s            , 0xf1f8, 0xe180,  8},
24224   {m68k_op_lsl_32_s            , 0xf1f8, 0xe188,  8},
24225   {m68k_op_roxl_32_s           , 0xf1f8, 0xe190,  8},
24226   {m68k_op_rol_32_s            , 0xf1f8, 0xe198,  8},
24227   {m68k_op_asl_32_r            , 0xf1f8, 0xe1a0,  8},
24228   {m68k_op_lsl_32_r            , 0xf1f8, 0xe1a8,  8},
24229   {m68k_op_roxl_32_r           , 0xf1f8, 0xe1b0,  8},
24230   {m68k_op_rol_32_r            , 0xf1f8, 0xe1b8,  8},
24231   {m68k_op_trap                , 0xfff0, 0x4e40,  4},
24232   {m68k_op_btst_8_r_pi7        , 0xf1ff, 0x011f,  8},
24233   {m68k_op_btst_8_r_pd7        , 0xf1ff, 0x0127, 10},
24234   {m68k_op_btst_8_r_aw         , 0xf1ff, 0x0138, 12},
24235   {m68k_op_btst_8_r_al         , 0xf1ff, 0x0139, 16},
24236   {m68k_op_btst_8_r_pcdi       , 0xf1ff, 0x013a, 12},
24237   {m68k_op_btst_8_r_pcix       , 0xf1ff, 0x013b, 14},
24238   {m68k_op_btst_8_r_i          , 0xf1ff, 0x013c, 10},
24239   {m68k_op_bchg_8_r_pi7        , 0xf1ff, 0x015f, 12},
24240   {m68k_op_bchg_8_r_pd7        , 0xf1ff, 0x0167, 14},
24241   {m68k_op_bchg_8_r_aw         , 0xf1ff, 0x0178, 16},
24242   {m68k_op_bchg_8_r_al         , 0xf1ff, 0x0179, 20},
24243   {m68k_op_bclr_8_r_pi7        , 0xf1ff, 0x019f, 12},
24244   {m68k_op_bclr_8_r_pd7        , 0xf1ff, 0x01a7, 14},
24245   {m68k_op_bclr_8_r_aw         , 0xf1ff, 0x01b8, 16},
24246   {m68k_op_bclr_8_r_al         , 0xf1ff, 0x01b9, 20},
24247   {m68k_op_bset_8_r_pi7        , 0xf1ff, 0x01df, 12},
24248   {m68k_op_bset_8_r_pd7        , 0xf1ff, 0x01e7, 14},
24249   {m68k_op_bset_8_r_aw         , 0xf1ff, 0x01f8, 16},
24250   {m68k_op_bset_8_r_al         , 0xf1ff, 0x01f9, 20},
24251   {m68k_op_move_8_d_pi7        , 0xf1ff, 0x101f,  8},
24252   {m68k_op_move_8_d_pd7        , 0xf1ff, 0x1027, 10},
24253   {m68k_op_move_8_d_aw         , 0xf1ff, 0x1038, 12},
24254   {m68k_op_move_8_d_al         , 0xf1ff, 0x1039, 16},
24255   {m68k_op_move_8_d_pcdi       , 0xf1ff, 0x103a, 12},
24256   {m68k_op_move_8_d_pcix       , 0xf1ff, 0x103b, 14},
24257   {m68k_op_move_8_d_i          , 0xf1ff, 0x103c,  8},
24258   {m68k_op_move_8_ai_pi7       , 0xf1ff, 0x109f, 12},
24259   {m68k_op_move_8_ai_pd7       , 0xf1ff, 0x10a7, 14},
24260   {m68k_op_move_8_ai_aw        , 0xf1ff, 0x10b8, 16},
24261   {m68k_op_move_8_ai_al        , 0xf1ff, 0x10b9, 20},
24262   {m68k_op_move_8_ai_pcdi      , 0xf1ff, 0x10ba, 16},
24263   {m68k_op_move_8_ai_pcix      , 0xf1ff, 0x10bb, 18},
24264   {m68k_op_move_8_ai_i         , 0xf1ff, 0x10bc, 12},
24265   {m68k_op_move_8_pi_pi7       , 0xf1ff, 0x10df, 12},
24266   {m68k_op_move_8_pi_pd7       , 0xf1ff, 0x10e7, 14},
24267   {m68k_op_move_8_pi_aw        , 0xf1ff, 0x10f8, 16},
24268   {m68k_op_move_8_pi_al        , 0xf1ff, 0x10f9, 20},
24269   {m68k_op_move_8_pi_pcdi      , 0xf1ff, 0x10fa, 16},
24270   {m68k_op_move_8_pi_pcix      , 0xf1ff, 0x10fb, 18},
24271   {m68k_op_move_8_pi_i         , 0xf1ff, 0x10fc, 12},
24272   {m68k_op_move_8_pd_pi7       , 0xf1ff, 0x111f, 12},
24273   {m68k_op_move_8_pd_pd7       , 0xf1ff, 0x1127, 14},
24274   {m68k_op_move_8_pd_aw        , 0xf1ff, 0x1138, 16},
24275   {m68k_op_move_8_pd_al        , 0xf1ff, 0x1139, 20},
24276   {m68k_op_move_8_pd_pcdi      , 0xf1ff, 0x113a, 16},
24277   {m68k_op_move_8_pd_pcix      , 0xf1ff, 0x113b, 18},
24278   {m68k_op_move_8_pd_i         , 0xf1ff, 0x113c, 12},
24279   {m68k_op_move_8_di_pi7       , 0xf1ff, 0x115f, 16},
24280   {m68k_op_move_8_di_pd7       , 0xf1ff, 0x1167, 18},
24281   {m68k_op_move_8_di_aw        , 0xf1ff, 0x1178, 20},
24282   {m68k_op_move_8_di_al        , 0xf1ff, 0x1179, 24},
24283   {m68k_op_move_8_di_pcdi      , 0xf1ff, 0x117a, 20},
24284   {m68k_op_move_8_di_pcix      , 0xf1ff, 0x117b, 22},
24285   {m68k_op_move_8_di_i         , 0xf1ff, 0x117c, 16},
24286   {m68k_op_move_8_ix_pi7       , 0xf1ff, 0x119f, 18},
24287   {m68k_op_move_8_ix_pd7       , 0xf1ff, 0x11a7, 20},
24288   {m68k_op_move_8_ix_aw        , 0xf1ff, 0x11b8, 22},
24289   {m68k_op_move_8_ix_al        , 0xf1ff, 0x11b9, 26},
24290   {m68k_op_move_8_ix_pcdi      , 0xf1ff, 0x11ba, 22},
24291   {m68k_op_move_8_ix_pcix      , 0xf1ff, 0x11bb, 24},
24292   {m68k_op_move_8_ix_i         , 0xf1ff, 0x11bc, 18},
24293   {m68k_op_move_32_d_aw        , 0xf1ff, 0x2038, 16},
24294   {m68k_op_move_32_d_al        , 0xf1ff, 0x2039, 20},
24295   {m68k_op_move_32_d_pcdi      , 0xf1ff, 0x203a, 16},
24296   {m68k_op_move_32_d_pcix      , 0xf1ff, 0x203b, 18},
24297   {m68k_op_move_32_d_i         , 0xf1ff, 0x203c, 12},
24298   {m68k_op_movea_32_aw         , 0xf1ff, 0x2078, 16},
24299   {m68k_op_movea_32_al         , 0xf1ff, 0x2079, 20},
24300   {m68k_op_movea_32_pcdi       , 0xf1ff, 0x207a, 16},
24301   {m68k_op_movea_32_pcix       , 0xf1ff, 0x207b, 18},
24302   {m68k_op_movea_32_i          , 0xf1ff, 0x207c, 12},
24303   {m68k_op_move_32_ai_aw       , 0xf1ff, 0x20b8, 24},
24304   {m68k_op_move_32_ai_al       , 0xf1ff, 0x20b9, 28},
24305   {m68k_op_move_32_ai_pcdi     , 0xf1ff, 0x20ba, 24},
24306   {m68k_op_move_32_ai_pcix     , 0xf1ff, 0x20bb, 26},
24307   {m68k_op_move_32_ai_i        , 0xf1ff, 0x20bc, 20},
24308   {m68k_op_move_32_pi_aw       , 0xf1ff, 0x20f8, 24},
24309   {m68k_op_move_32_pi_al       , 0xf1ff, 0x20f9, 28},
24310   {m68k_op_move_32_pi_pcdi     , 0xf1ff, 0x20fa, 24},
24311   {m68k_op_move_32_pi_pcix     , 0xf1ff, 0x20fb, 26},
24312   {m68k_op_move_32_pi_i        , 0xf1ff, 0x20fc, 20},
24313   {m68k_op_move_32_pd_aw       , 0xf1ff, 0x2138, 24},
24314   {m68k_op_move_32_pd_al       , 0xf1ff, 0x2139, 28},
24315   {m68k_op_move_32_pd_pcdi     , 0xf1ff, 0x213a, 24},
24316   {m68k_op_move_32_pd_pcix     , 0xf1ff, 0x213b, 26},
24317   {m68k_op_move_32_pd_i        , 0xf1ff, 0x213c, 20},
24318   {m68k_op_move_32_di_aw       , 0xf1ff, 0x2178, 28},
24319   {m68k_op_move_32_di_al       , 0xf1ff, 0x2179, 32},
24320   {m68k_op_move_32_di_pcdi     , 0xf1ff, 0x217a, 28},
24321   {m68k_op_move_32_di_pcix     , 0xf1ff, 0x217b, 30},
24322   {m68k_op_move_32_di_i        , 0xf1ff, 0x217c, 24},
24323   {m68k_op_move_32_ix_aw       , 0xf1ff, 0x21b8, 30},
24324   {m68k_op_move_32_ix_al       , 0xf1ff, 0x21b9, 34},
24325   {m68k_op_move_32_ix_pcdi     , 0xf1ff, 0x21ba, 30},
24326   {m68k_op_move_32_ix_pcix     , 0xf1ff, 0x21bb, 32},
24327   {m68k_op_move_32_ix_i        , 0xf1ff, 0x21bc, 26},
24328   {m68k_op_move_16_d_aw        , 0xf1ff, 0x3038, 12},
24329   {m68k_op_move_16_d_al        , 0xf1ff, 0x3039, 16},
24330   {m68k_op_move_16_d_pcdi      , 0xf1ff, 0x303a, 12},
24331   {m68k_op_move_16_d_pcix      , 0xf1ff, 0x303b, 14},
24332   {m68k_op_move_16_d_i         , 0xf1ff, 0x303c,  8},
24333   {m68k_op_movea_16_aw         , 0xf1ff, 0x3078, 12},
24334   {m68k_op_movea_16_al         , 0xf1ff, 0x3079, 16},
24335   {m68k_op_movea_16_pcdi       , 0xf1ff, 0x307a, 12},
24336   {m68k_op_movea_16_pcix       , 0xf1ff, 0x307b, 14},
24337   {m68k_op_movea_16_i          , 0xf1ff, 0x307c,  8},
24338   {m68k_op_move_16_ai_aw       , 0xf1ff, 0x30b8, 16},
24339   {m68k_op_move_16_ai_al       , 0xf1ff, 0x30b9, 20},
24340   {m68k_op_move_16_ai_pcdi     , 0xf1ff, 0x30ba, 16},
24341   {m68k_op_move_16_ai_pcix     , 0xf1ff, 0x30bb, 18},
24342   {m68k_op_move_16_ai_i        , 0xf1ff, 0x30bc, 12},
24343   {m68k_op_move_16_pi_aw       , 0xf1ff, 0x30f8, 16},
24344   {m68k_op_move_16_pi_al       , 0xf1ff, 0x30f9, 20},
24345   {m68k_op_move_16_pi_pcdi     , 0xf1ff, 0x30fa, 16},
24346   {m68k_op_move_16_pi_pcix     , 0xf1ff, 0x30fb, 18},
24347   {m68k_op_move_16_pi_i        , 0xf1ff, 0x30fc, 12},
24348   {m68k_op_move_16_pd_aw       , 0xf1ff, 0x3138, 16},
24349   {m68k_op_move_16_pd_al       , 0xf1ff, 0x3139, 20},
24350   {m68k_op_move_16_pd_pcdi     , 0xf1ff, 0x313a, 16},
24351   {m68k_op_move_16_pd_pcix     , 0xf1ff, 0x313b, 18},
24352   {m68k_op_move_16_pd_i        , 0xf1ff, 0x313c, 12},
24353   {m68k_op_move_16_di_aw       , 0xf1ff, 0x3178, 20},
24354   {m68k_op_move_16_di_al       , 0xf1ff, 0x3179, 24},
24355   {m68k_op_move_16_di_pcdi     , 0xf1ff, 0x317a, 20},
24356   {m68k_op_move_16_di_pcix     , 0xf1ff, 0x317b, 22},
24357   {m68k_op_move_16_di_i        , 0xf1ff, 0x317c, 16},
24358   {m68k_op_move_16_ix_aw       , 0xf1ff, 0x31b8, 22},
24359   {m68k_op_move_16_ix_al       , 0xf1ff, 0x31b9, 26},
24360   {m68k_op_move_16_ix_pcdi     , 0xf1ff, 0x31ba, 22},
24361   {m68k_op_move_16_ix_pcix     , 0xf1ff, 0x31bb, 24},
24362   {m68k_op_move_16_ix_i        , 0xf1ff, 0x31bc, 18},
24363   {m68k_op_chk_16_aw           , 0xf1ff, 0x41b8, 18},
24364   {m68k_op_chk_16_al           , 0xf1ff, 0x41b9, 22},
24365   {m68k_op_chk_16_pcdi         , 0xf1ff, 0x41ba, 18},
24366   {m68k_op_chk_16_pcix         , 0xf1ff, 0x41bb, 20},
24367   {m68k_op_chk_16_i            , 0xf1ff, 0x41bc, 14},
24368   {m68k_op_lea_32_aw           , 0xf1ff, 0x41f8,  8},
24369   {m68k_op_lea_32_al           , 0xf1ff, 0x41f9, 12},
24370   {m68k_op_lea_32_pcdi         , 0xf1ff, 0x41fa,  8},
24371   {m68k_op_lea_32_pcix         , 0xf1ff, 0x41fb, 12},
24372   {m68k_op_addq_8_pi7          , 0xf1ff, 0x501f, 12},
24373   {m68k_op_addq_8_pd7          , 0xf1ff, 0x5027, 14},
24374   {m68k_op_addq_8_aw           , 0xf1ff, 0x5038, 16},
24375   {m68k_op_addq_8_al           , 0xf1ff, 0x5039, 20},
24376   {m68k_op_addq_16_aw          , 0xf1ff, 0x5078, 16},
24377   {m68k_op_addq_16_al          , 0xf1ff, 0x5079, 20},
24378   {m68k_op_addq_32_aw          , 0xf1ff, 0x50b8, 24},
24379   {m68k_op_addq_32_al          , 0xf1ff, 0x50b9, 28},
24380   {m68k_op_subq_8_pi7          , 0xf1ff, 0x511f, 12},
24381   {m68k_op_subq_8_pd7          , 0xf1ff, 0x5127, 14},
24382   {m68k_op_subq_8_aw           , 0xf1ff, 0x5138, 16},
24383   {m68k_op_subq_8_al           , 0xf1ff, 0x5139, 20},
24384   {m68k_op_subq_16_aw          , 0xf1ff, 0x5178, 16},
24385   {m68k_op_subq_16_al          , 0xf1ff, 0x5179, 20},
24386   {m68k_op_subq_32_aw          , 0xf1ff, 0x51b8, 24},
24387   {m68k_op_subq_32_al          , 0xf1ff, 0x51b9, 28},
24388   {m68k_op_or_8_er_pi7         , 0xf1ff, 0x801f,  8},
24389   {m68k_op_or_8_er_pd7         , 0xf1ff, 0x8027, 10},
24390   {m68k_op_or_8_er_aw          , 0xf1ff, 0x8038, 12},
24391   {m68k_op_or_8_er_al          , 0xf1ff, 0x8039, 16},
24392   {m68k_op_or_8_er_pcdi        , 0xf1ff, 0x803a, 12},
24393   {m68k_op_or_8_er_pcix        , 0xf1ff, 0x803b, 14},
24394   {m68k_op_or_8_er_i           , 0xf1ff, 0x803c,  8},
24395   {m68k_op_or_16_er_aw         , 0xf1ff, 0x8078, 12},
24396   {m68k_op_or_16_er_al         , 0xf1ff, 0x8079, 16},
24397   {m68k_op_or_16_er_pcdi       , 0xf1ff, 0x807a, 12},
24398   {m68k_op_or_16_er_pcix       , 0xf1ff, 0x807b, 14},
24399   {m68k_op_or_16_er_i          , 0xf1ff, 0x807c,  8},
24400   {m68k_op_or_32_er_aw         , 0xf1ff, 0x80b8, 18},
24401   {m68k_op_or_32_er_al         , 0xf1ff, 0x80b9, 22},
24402   {m68k_op_or_32_er_pcdi       , 0xf1ff, 0x80ba, 18},
24403   {m68k_op_or_32_er_pcix       , 0xf1ff, 0x80bb, 20},
24404   {m68k_op_or_32_er_i          , 0xf1ff, 0x80bc, 16},
24405   {m68k_op_divu_16_aw          , 0xf1ff, 0x80f8,  8},
24406   {m68k_op_divu_16_al          , 0xf1ff, 0x80f9, 12},
24407   {m68k_op_divu_16_pcdi        , 0xf1ff, 0x80fa,  8},
24408   {m68k_op_divu_16_pcix        , 0xf1ff, 0x80fb, 10},
24409   {m68k_op_divu_16_i           , 0xf1ff, 0x80fc,  4},
24410   {m68k_op_sbcd_8_mm_ay7       , 0xf1ff, 0x810f, 18},
24411   {m68k_op_or_8_re_pi7         , 0xf1ff, 0x811f, 12},
24412   {m68k_op_or_8_re_pd7         , 0xf1ff, 0x8127, 14},
24413   {m68k_op_or_8_re_aw          , 0xf1ff, 0x8138, 16},
24414   {m68k_op_or_8_re_al          , 0xf1ff, 0x8139, 20},
24415   {m68k_op_or_16_re_aw         , 0xf1ff, 0x8178, 16},
24416   {m68k_op_or_16_re_al         , 0xf1ff, 0x8179, 20},
24417   {m68k_op_or_32_re_aw         , 0xf1ff, 0x81b8, 24},
24418   {m68k_op_or_32_re_al         , 0xf1ff, 0x81b9, 28},
24419   {m68k_op_divs_16_aw          , 0xf1ff, 0x81f8,  8},
24420   {m68k_op_divs_16_al          , 0xf1ff, 0x81f9, 12},
24421   {m68k_op_divs_16_pcdi        , 0xf1ff, 0x81fa,  8},
24422   {m68k_op_divs_16_pcix        , 0xf1ff, 0x81fb, 10},
24423   {m68k_op_divs_16_i           , 0xf1ff, 0x81fc,  4},
24424   {m68k_op_sub_8_er_pi7        , 0xf1ff, 0x901f,  8},
24425   {m68k_op_sub_8_er_pd7        , 0xf1ff, 0x9027, 10},
24426   {m68k_op_sub_8_er_aw         , 0xf1ff, 0x9038, 12},
24427   {m68k_op_sub_8_er_al         , 0xf1ff, 0x9039, 16},
24428   {m68k_op_sub_8_er_pcdi       , 0xf1ff, 0x903a, 12},
24429   {m68k_op_sub_8_er_pcix       , 0xf1ff, 0x903b, 14},
24430   {m68k_op_sub_8_er_i          , 0xf1ff, 0x903c,  8},
24431   {m68k_op_sub_16_er_aw        , 0xf1ff, 0x9078, 12},
24432   {m68k_op_sub_16_er_al        , 0xf1ff, 0x9079, 16},
24433   {m68k_op_sub_16_er_pcdi      , 0xf1ff, 0x907a, 12},
24434   {m68k_op_sub_16_er_pcix      , 0xf1ff, 0x907b, 14},
24435   {m68k_op_sub_16_er_i         , 0xf1ff, 0x907c,  8},
24436   {m68k_op_sub_32_er_aw        , 0xf1ff, 0x90b8, 18},
24437   {m68k_op_sub_32_er_al        , 0xf1ff, 0x90b9, 22},
24438   {m68k_op_sub_32_er_pcdi      , 0xf1ff, 0x90ba, 18},
24439   {m68k_op_sub_32_er_pcix      , 0xf1ff, 0x90bb, 20},
24440   {m68k_op_sub_32_er_i         , 0xf1ff, 0x90bc, 16},
24441   {m68k_op_suba_16_aw          , 0xf1ff, 0x90f8, 16},
24442   {m68k_op_suba_16_al          , 0xf1ff, 0x90f9, 20},
24443   {m68k_op_suba_16_pcdi        , 0xf1ff, 0x90fa, 16},
24444   {m68k_op_suba_16_pcix        , 0xf1ff, 0x90fb, 18},
24445   {m68k_op_suba_16_i           , 0xf1ff, 0x90fc, 12},
24446   {m68k_op_subx_8_mm_ay7       , 0xf1ff, 0x910f, 18},
24447   {m68k_op_sub_8_re_pi7        , 0xf1ff, 0x911f, 12},
24448   {m68k_op_sub_8_re_pd7        , 0xf1ff, 0x9127, 14},
24449   {m68k_op_sub_8_re_aw         , 0xf1ff, 0x9138, 16},
24450   {m68k_op_sub_8_re_al         , 0xf1ff, 0x9139, 20},
24451   {m68k_op_sub_16_re_aw        , 0xf1ff, 0x9178, 16},
24452   {m68k_op_sub_16_re_al        , 0xf1ff, 0x9179, 20},
24453   {m68k_op_sub_32_re_aw        , 0xf1ff, 0x91b8, 24},
24454   {m68k_op_sub_32_re_al        , 0xf1ff, 0x91b9, 28},
24455   {m68k_op_suba_32_aw          , 0xf1ff, 0x91f8, 18},
24456   {m68k_op_suba_32_al          , 0xf1ff, 0x91f9, 22},
24457   {m68k_op_suba_32_pcdi        , 0xf1ff, 0x91fa, 18},
24458   {m68k_op_suba_32_pcix        , 0xf1ff, 0x91fb, 20},
24459   {m68k_op_suba_32_i           , 0xf1ff, 0x91fc, 16},
24460   {m68k_op_cmp_8_pi7           , 0xf1ff, 0xb01f,  8},
24461   {m68k_op_cmp_8_pd7           , 0xf1ff, 0xb027, 10},
24462   {m68k_op_cmp_8_aw            , 0xf1ff, 0xb038, 12},
24463   {m68k_op_cmp_8_al            , 0xf1ff, 0xb039, 16},
24464   {m68k_op_cmp_8_pcdi          , 0xf1ff, 0xb03a, 12},
24465   {m68k_op_cmp_8_pcix          , 0xf1ff, 0xb03b, 14},
24466   {m68k_op_cmp_8_i             , 0xf1ff, 0xb03c,  8},
24467   {m68k_op_cmp_16_aw           , 0xf1ff, 0xb078, 12},
24468   {m68k_op_cmp_16_al           , 0xf1ff, 0xb079, 16},
24469   {m68k_op_cmp_16_pcdi         , 0xf1ff, 0xb07a, 12},
24470   {m68k_op_cmp_16_pcix         , 0xf1ff, 0xb07b, 14},
24471   {m68k_op_cmp_16_i            , 0xf1ff, 0xb07c,  8},
24472   {m68k_op_cmp_32_aw           , 0xf1ff, 0xb0b8, 18},
24473   {m68k_op_cmp_32_al           , 0xf1ff, 0xb0b9, 22},
24474   {m68k_op_cmp_32_pcdi         , 0xf1ff, 0xb0ba, 18},
24475   {m68k_op_cmp_32_pcix         , 0xf1ff, 0xb0bb, 20},
24476   {m68k_op_cmp_32_i            , 0xf1ff, 0xb0bc, 14},
24477   {m68k_op_cmpa_16_aw          , 0xf1ff, 0xb0f8, 14},
24478   {m68k_op_cmpa_16_al          , 0xf1ff, 0xb0f9, 18},
24479   {m68k_op_cmpa_16_pcdi        , 0xf1ff, 0xb0fa, 14},
24480   {m68k_op_cmpa_16_pcix        , 0xf1ff, 0xb0fb, 16},
24481   {m68k_op_cmpa_16_i           , 0xf1ff, 0xb0fc, 10},
24482   {m68k_op_cmpm_8_ay7          , 0xf1ff, 0xb10f, 12},
24483   {m68k_op_eor_8_pi7           , 0xf1ff, 0xb11f, 12},
24484   {m68k_op_eor_8_pd7           , 0xf1ff, 0xb127, 14},
24485   {m68k_op_eor_8_aw            , 0xf1ff, 0xb138, 16},
24486   {m68k_op_eor_8_al            , 0xf1ff, 0xb139, 20},
24487   {m68k_op_eor_16_aw           , 0xf1ff, 0xb178, 16},
24488   {m68k_op_eor_16_al           , 0xf1ff, 0xb179, 20},
24489   {m68k_op_eor_32_aw           , 0xf1ff, 0xb1b8, 24},
24490   {m68k_op_eor_32_al           , 0xf1ff, 0xb1b9, 28},
24491   {m68k_op_cmpa_32_aw          , 0xf1ff, 0xb1f8, 18},
24492   {m68k_op_cmpa_32_al          , 0xf1ff, 0xb1f9, 22},
24493   {m68k_op_cmpa_32_pcdi        , 0xf1ff, 0xb1fa, 18},
24494   {m68k_op_cmpa_32_pcix        , 0xf1ff, 0xb1fb, 20},
24495   {m68k_op_cmpa_32_i           , 0xf1ff, 0xb1fc, 14},
24496   {m68k_op_and_8_er_pi7        , 0xf1ff, 0xc01f,  8},
24497   {m68k_op_and_8_er_pd7        , 0xf1ff, 0xc027, 10},
24498   {m68k_op_and_8_er_aw         , 0xf1ff, 0xc038, 12},
24499   {m68k_op_and_8_er_al         , 0xf1ff, 0xc039, 16},
24500   {m68k_op_and_8_er_pcdi       , 0xf1ff, 0xc03a, 12},
24501   {m68k_op_and_8_er_pcix       , 0xf1ff, 0xc03b, 14},
24502   {m68k_op_and_8_er_i          , 0xf1ff, 0xc03c,  8},
24503   {m68k_op_and_16_er_aw        , 0xf1ff, 0xc078, 12},
24504   {m68k_op_and_16_er_al        , 0xf1ff, 0xc079, 16},
24505   {m68k_op_and_16_er_pcdi      , 0xf1ff, 0xc07a, 12},
24506   {m68k_op_and_16_er_pcix      , 0xf1ff, 0xc07b, 14},
24507   {m68k_op_and_16_er_i         , 0xf1ff, 0xc07c,  8},
24508   {m68k_op_and_32_er_aw        , 0xf1ff, 0xc0b8, 18},
24509   {m68k_op_and_32_er_al        , 0xf1ff, 0xc0b9, 22},
24510   {m68k_op_and_32_er_pcdi      , 0xf1ff, 0xc0ba, 18},
24511   {m68k_op_and_32_er_pcix      , 0xf1ff, 0xc0bb, 20},
24512   {m68k_op_and_32_er_i         , 0xf1ff, 0xc0bc, 16},
24513   {m68k_op_mulu_16_aw          , 0xf1ff, 0xc0f8,  8},
24514   {m68k_op_mulu_16_al          , 0xf1ff, 0xc0f9, 12},
24515   {m68k_op_mulu_16_pcdi        , 0xf1ff, 0xc0fa,  8},
24516   {m68k_op_mulu_16_pcix        , 0xf1ff, 0xc0fb, 10},
24517   {m68k_op_mulu_16_i           , 0xf1ff, 0xc0fc,  4},
24518   {m68k_op_abcd_8_mm_ay7       , 0xf1ff, 0xc10f, 18},
24519   {m68k_op_and_8_re_pi7        , 0xf1ff, 0xc11f, 12},
24520   {m68k_op_and_8_re_pd7        , 0xf1ff, 0xc127, 14},
24521   {m68k_op_and_8_re_aw         , 0xf1ff, 0xc138, 16},
24522   {m68k_op_and_8_re_al         , 0xf1ff, 0xc139, 20},
24523   {m68k_op_and_16_re_aw        , 0xf1ff, 0xc178, 16},
24524   {m68k_op_and_16_re_al        , 0xf1ff, 0xc179, 20},
24525   {m68k_op_and_32_re_aw        , 0xf1ff, 0xc1b8, 24},
24526   {m68k_op_and_32_re_al        , 0xf1ff, 0xc1b9, 28},
24527   {m68k_op_muls_16_aw          , 0xf1ff, 0xc1f8,  8},
24528   {m68k_op_muls_16_al          , 0xf1ff, 0xc1f9, 12},
24529   {m68k_op_muls_16_pcdi        , 0xf1ff, 0xc1fa,  8},
24530   {m68k_op_muls_16_pcix        , 0xf1ff, 0xc1fb, 10},
24531   {m68k_op_muls_16_i           , 0xf1ff, 0xc1fc,  4},
24532   {m68k_op_add_8_er_pi7        , 0xf1ff, 0xd01f,  8},
24533   {m68k_op_add_8_er_pd7        , 0xf1ff, 0xd027, 10},
24534   {m68k_op_add_8_er_aw         , 0xf1ff, 0xd038, 12},
24535   {m68k_op_add_8_er_al         , 0xf1ff, 0xd039, 16},
24536   {m68k_op_add_8_er_pcdi       , 0xf1ff, 0xd03a, 12},
24537   {m68k_op_add_8_er_pcix       , 0xf1ff, 0xd03b, 14},
24538   {m68k_op_add_8_er_i          , 0xf1ff, 0xd03c,  8},
24539   {m68k_op_add_16_er_aw        , 0xf1ff, 0xd078, 12},
24540   {m68k_op_add_16_er_al        , 0xf1ff, 0xd079, 16},
24541   {m68k_op_add_16_er_pcdi      , 0xf1ff, 0xd07a, 12},
24542   {m68k_op_add_16_er_pcix      , 0xf1ff, 0xd07b, 14},
24543   {m68k_op_add_16_er_i         , 0xf1ff, 0xd07c,  8},
24544   {m68k_op_add_32_er_aw        , 0xf1ff, 0xd0b8, 18},
24545   {m68k_op_add_32_er_al        , 0xf1ff, 0xd0b9, 22},
24546   {m68k_op_add_32_er_pcdi      , 0xf1ff, 0xd0ba, 18},
24547   {m68k_op_add_32_er_pcix      , 0xf1ff, 0xd0bb, 20},
24548   {m68k_op_add_32_er_i         , 0xf1ff, 0xd0bc, 16},
24549   {m68k_op_adda_16_aw          , 0xf1ff, 0xd0f8, 16},
24550   {m68k_op_adda_16_al          , 0xf1ff, 0xd0f9, 20},
24551   {m68k_op_adda_16_pcdi        , 0xf1ff, 0xd0fa, 16},
24552   {m68k_op_adda_16_pcix        , 0xf1ff, 0xd0fb, 18},
24553   {m68k_op_adda_16_i           , 0xf1ff, 0xd0fc, 12},
24554   {m68k_op_addx_8_mm_ay7       , 0xf1ff, 0xd10f, 18},
24555   {m68k_op_add_8_re_pi7        , 0xf1ff, 0xd11f, 12},
24556   {m68k_op_add_8_re_pd7        , 0xf1ff, 0xd127, 14},
24557   {m68k_op_add_8_re_aw         , 0xf1ff, 0xd138, 16},
24558   {m68k_op_add_8_re_al         , 0xf1ff, 0xd139, 20},
24559   {m68k_op_add_16_re_aw        , 0xf1ff, 0xd178, 16},
24560   {m68k_op_add_16_re_al        , 0xf1ff, 0xd179, 20},
24561   {m68k_op_add_32_re_aw        , 0xf1ff, 0xd1b8, 24},
24562   {m68k_op_add_32_re_al        , 0xf1ff, 0xd1b9, 28},
24563   {m68k_op_adda_32_aw          , 0xf1ff, 0xd1f8, 18},
24564   {m68k_op_adda_32_al          , 0xf1ff, 0xd1f9, 22},
24565   {m68k_op_adda_32_pcdi        , 0xf1ff, 0xd1fa, 18},
24566   {m68k_op_adda_32_pcix        , 0xf1ff, 0xd1fb, 20},
24567   {m68k_op_adda_32_i           , 0xf1ff, 0xd1fc, 16},
24568   {m68k_op_ori_8_d             , 0xfff8, 0x0000,  8},
24569   {m68k_op_ori_8_ai            , 0xfff8, 0x0010, 16},
24570   {m68k_op_ori_8_pi            , 0xfff8, 0x0018, 16},
24571   {m68k_op_ori_8_pd            , 0xfff8, 0x0020, 18},
24572   {m68k_op_ori_8_di            , 0xfff8, 0x0028, 20},
24573   {m68k_op_ori_8_ix            , 0xfff8, 0x0030, 22},
24574   {m68k_op_ori_16_d            , 0xfff8, 0x0040,  8},
24575   {m68k_op_ori_16_ai           , 0xfff8, 0x0050, 16},
24576   {m68k_op_ori_16_pi           , 0xfff8, 0x0058, 16},
24577   {m68k_op_ori_16_pd           , 0xfff8, 0x0060, 18},
24578   {m68k_op_ori_16_di           , 0xfff8, 0x0068, 20},
24579   {m68k_op_ori_16_ix           , 0xfff8, 0x0070, 22},
24580   {m68k_op_ori_32_d            , 0xfff8, 0x0080, 16},
24581   {m68k_op_ori_32_ai           , 0xfff8, 0x0090, 28},
24582   {m68k_op_ori_32_pi           , 0xfff8, 0x0098, 28},
24583   {m68k_op_ori_32_pd           , 0xfff8, 0x00a0, 30},
24584   {m68k_op_ori_32_di           , 0xfff8, 0x00a8, 32},
24585   {m68k_op_ori_32_ix           , 0xfff8, 0x00b0, 34},
24586   {m68k_op_andi_8_d            , 0xfff8, 0x0200,  8},
24587   {m68k_op_andi_8_ai           , 0xfff8, 0x0210, 16},
24588   {m68k_op_andi_8_pi           , 0xfff8, 0x0218, 16},
24589   {m68k_op_andi_8_pd           , 0xfff8, 0x0220, 18},
24590   {m68k_op_andi_8_di           , 0xfff8, 0x0228, 20},
24591   {m68k_op_andi_8_ix           , 0xfff8, 0x0230, 22},
24592   {m68k_op_andi_16_d           , 0xfff8, 0x0240,  8},
24593   {m68k_op_andi_16_ai          , 0xfff8, 0x0250, 16},
24594   {m68k_op_andi_16_pi          , 0xfff8, 0x0258, 16},
24595   {m68k_op_andi_16_pd          , 0xfff8, 0x0260, 18},
24596   {m68k_op_andi_16_di          , 0xfff8, 0x0268, 20},
24597   {m68k_op_andi_16_ix          , 0xfff8, 0x0270, 22},
24598   {m68k_op_andi_32_d           , 0xfff8, 0x0280, 14},
24599   {m68k_op_andi_32_ai          , 0xfff8, 0x0290, 28},
24600   {m68k_op_andi_32_pi          , 0xfff8, 0x0298, 28},
24601   {m68k_op_andi_32_pd          , 0xfff8, 0x02a0, 30},
24602   {m68k_op_andi_32_di          , 0xfff8, 0x02a8, 32},
24603   {m68k_op_andi_32_ix          , 0xfff8, 0x02b0, 34},
24604   {m68k_op_subi_8_d            , 0xfff8, 0x0400,  8},
24605   {m68k_op_subi_8_ai           , 0xfff8, 0x0410, 16},
24606   {m68k_op_subi_8_pi           , 0xfff8, 0x0418, 16},
24607   {m68k_op_subi_8_pd           , 0xfff8, 0x0420, 18},
24608   {m68k_op_subi_8_di           , 0xfff8, 0x0428, 20},
24609   {m68k_op_subi_8_ix           , 0xfff8, 0x0430, 22},
24610   {m68k_op_subi_16_d           , 0xfff8, 0x0440,  8},
24611   {m68k_op_subi_16_ai          , 0xfff8, 0x0450, 16},
24612   {m68k_op_subi_16_pi          , 0xfff8, 0x0458, 16},
24613   {m68k_op_subi_16_pd          , 0xfff8, 0x0460, 18},
24614   {m68k_op_subi_16_di          , 0xfff8, 0x0468, 20},
24615   {m68k_op_subi_16_ix          , 0xfff8, 0x0470, 22},
24616   {m68k_op_subi_32_d           , 0xfff8, 0x0480, 16},
24617   {m68k_op_subi_32_ai          , 0xfff8, 0x0490, 28},
24618   {m68k_op_subi_32_pi          , 0xfff8, 0x0498, 28},
24619   {m68k_op_subi_32_pd          , 0xfff8, 0x04a0, 30},
24620   {m68k_op_subi_32_di          , 0xfff8, 0x04a8, 32},
24621   {m68k_op_subi_32_ix          , 0xfff8, 0x04b0, 34},
24622   {m68k_op_addi_8_d            , 0xfff8, 0x0600,  8},
24623   {m68k_op_addi_8_ai           , 0xfff8, 0x0610, 16},
24624   {m68k_op_addi_8_pi           , 0xfff8, 0x0618, 16},
24625   {m68k_op_addi_8_pd           , 0xfff8, 0x0620, 18},
24626   {m68k_op_addi_8_di           , 0xfff8, 0x0628, 20},
24627   {m68k_op_addi_8_ix           , 0xfff8, 0x0630, 22},
24628   {m68k_op_addi_16_d           , 0xfff8, 0x0640,  8},
24629   {m68k_op_addi_16_ai          , 0xfff8, 0x0650, 16},
24630   {m68k_op_addi_16_pi          , 0xfff8, 0x0658, 16},
24631   {m68k_op_addi_16_pd          , 0xfff8, 0x0660, 18},
24632   {m68k_op_addi_16_di          , 0xfff8, 0x0668, 20},
24633   {m68k_op_addi_16_ix          , 0xfff8, 0x0670, 22},
24634   {m68k_op_addi_32_d           , 0xfff8, 0x0680, 16},
24635   {m68k_op_addi_32_ai          , 0xfff8, 0x0690, 28},
24636   {m68k_op_addi_32_pi          , 0xfff8, 0x0698, 28},
24637   {m68k_op_addi_32_pd          , 0xfff8, 0x06a0, 30},
24638   {m68k_op_addi_32_di          , 0xfff8, 0x06a8, 32},
24639   {m68k_op_addi_32_ix          , 0xfff8, 0x06b0, 34},
24640   {m68k_op_btst_32_s_d         , 0xfff8, 0x0800, 10},
24641   {m68k_op_btst_8_s_ai         , 0xfff8, 0x0810, 12},
24642   {m68k_op_btst_8_s_pi         , 0xfff8, 0x0818, 12},
24643   {m68k_op_btst_8_s_pd         , 0xfff8, 0x0820, 14},
24644   {m68k_op_btst_8_s_di         , 0xfff8, 0x0828, 16},
24645   {m68k_op_btst_8_s_ix         , 0xfff8, 0x0830, 18},
24646   {m68k_op_bchg_32_s_d         , 0xfff8, 0x0840, 12},
24647   {m68k_op_bchg_8_s_ai         , 0xfff8, 0x0850, 16},
24648   {m68k_op_bchg_8_s_pi         , 0xfff8, 0x0858, 16},
24649   {m68k_op_bchg_8_s_pd         , 0xfff8, 0x0860, 18},
24650   {m68k_op_bchg_8_s_di         , 0xfff8, 0x0868, 20},
24651   {m68k_op_bchg_8_s_ix         , 0xfff8, 0x0870, 22},
24652   {m68k_op_bclr_32_s_d         , 0xfff8, 0x0880, 14},
24653   {m68k_op_bclr_8_s_ai         , 0xfff8, 0x0890, 16},
24654   {m68k_op_bclr_8_s_pi         , 0xfff8, 0x0898, 16},
24655   {m68k_op_bclr_8_s_pd         , 0xfff8, 0x08a0, 18},
24656   {m68k_op_bclr_8_s_di         , 0xfff8, 0x08a8, 20},
24657   {m68k_op_bclr_8_s_ix         , 0xfff8, 0x08b0, 22},
24658   {m68k_op_bset_32_s_d         , 0xfff8, 0x08c0, 12},
24659   {m68k_op_bset_8_s_ai         , 0xfff8, 0x08d0, 16},
24660   {m68k_op_bset_8_s_pi         , 0xfff8, 0x08d8, 16},
24661   {m68k_op_bset_8_s_pd         , 0xfff8, 0x08e0, 18},
24662   {m68k_op_bset_8_s_di         , 0xfff8, 0x08e8, 20},
24663   {m68k_op_bset_8_s_ix         , 0xfff8, 0x08f0, 22},
24664   {m68k_op_eori_8_d            , 0xfff8, 0x0a00,  8},
24665   {m68k_op_eori_8_ai           , 0xfff8, 0x0a10, 16},
24666   {m68k_op_eori_8_pi           , 0xfff8, 0x0a18, 16},
24667   {m68k_op_eori_8_pd           , 0xfff8, 0x0a20, 18},
24668   {m68k_op_eori_8_di           , 0xfff8, 0x0a28, 20},
24669   {m68k_op_eori_8_ix           , 0xfff8, 0x0a30, 22},
24670   {m68k_op_eori_16_d           , 0xfff8, 0x0a40,  8},
24671   {m68k_op_eori_16_ai          , 0xfff8, 0x0a50, 16},
24672   {m68k_op_eori_16_pi          , 0xfff8, 0x0a58, 16},
24673   {m68k_op_eori_16_pd          , 0xfff8, 0x0a60, 18},
24674   {m68k_op_eori_16_di          , 0xfff8, 0x0a68, 20},
24675   {m68k_op_eori_16_ix          , 0xfff8, 0x0a70, 22},
24676   {m68k_op_eori_32_d           , 0xfff8, 0x0a80, 16},
24677   {m68k_op_eori_32_ai          , 0xfff8, 0x0a90, 28},
24678   {m68k_op_eori_32_pi          , 0xfff8, 0x0a98, 28},
24679   {m68k_op_eori_32_pd          , 0xfff8, 0x0aa0, 30},
24680   {m68k_op_eori_32_di          , 0xfff8, 0x0aa8, 32},
24681   {m68k_op_eori_32_ix          , 0xfff8, 0x0ab0, 34},
24682   {m68k_op_cmpi_8_d            , 0xfff8, 0x0c00,  8},
24683   {m68k_op_cmpi_8_ai           , 0xfff8, 0x0c10, 12},
24684   {m68k_op_cmpi_8_pi           , 0xfff8, 0x0c18, 12},
24685   {m68k_op_cmpi_8_pd           , 0xfff8, 0x0c20, 14},
24686   {m68k_op_cmpi_8_di           , 0xfff8, 0x0c28, 16},
24687   {m68k_op_cmpi_8_ix           , 0xfff8, 0x0c30, 18},
24688   {m68k_op_cmpi_16_d           , 0xfff8, 0x0c40,  8},
24689   {m68k_op_cmpi_16_ai          , 0xfff8, 0x0c50, 12},
24690   {m68k_op_cmpi_16_pi          , 0xfff8, 0x0c58, 12},
24691   {m68k_op_cmpi_16_pd          , 0xfff8, 0x0c60, 14},
24692   {m68k_op_cmpi_16_di          , 0xfff8, 0x0c68, 16},
24693   {m68k_op_cmpi_16_ix          , 0xfff8, 0x0c70, 18},
24694   {m68k_op_cmpi_32_d           , 0xfff8, 0x0c80, 14},
24695   {m68k_op_cmpi_32_ai          , 0xfff8, 0x0c90, 20},
24696   {m68k_op_cmpi_32_pi          , 0xfff8, 0x0c98, 20},
24697   {m68k_op_cmpi_32_pd          , 0xfff8, 0x0ca0, 22},
24698   {m68k_op_cmpi_32_di          , 0xfff8, 0x0ca8, 24},
24699   {m68k_op_cmpi_32_ix          , 0xfff8, 0x0cb0, 26},
24700   {m68k_op_move_8_aw_d         , 0xfff8, 0x11c0, 12},
24701   {m68k_op_move_8_aw_ai        , 0xfff8, 0x11d0, 16},
24702   {m68k_op_move_8_aw_pi        , 0xfff8, 0x11d8, 16},
24703   {m68k_op_move_8_aw_pd        , 0xfff8, 0x11e0, 18},
24704   {m68k_op_move_8_aw_di        , 0xfff8, 0x11e8, 20},
24705   {m68k_op_move_8_aw_ix        , 0xfff8, 0x11f0, 22},
24706   {m68k_op_move_8_al_d         , 0xfff8, 0x13c0, 16},
24707   {m68k_op_move_8_al_ai        , 0xfff8, 0x13d0, 20},
24708   {m68k_op_move_8_al_pi        , 0xfff8, 0x13d8, 20},
24709   {m68k_op_move_8_al_pd        , 0xfff8, 0x13e0, 22},
24710   {m68k_op_move_8_al_di        , 0xfff8, 0x13e8, 24},
24711   {m68k_op_move_8_al_ix        , 0xfff8, 0x13f0, 26},
24712   {m68k_op_move_8_pi7_d        , 0xfff8, 0x1ec0,  8},
24713   {m68k_op_move_8_pi7_ai       , 0xfff8, 0x1ed0, 12},
24714   {m68k_op_move_8_pi7_pi       , 0xfff8, 0x1ed8, 12},
24715   {m68k_op_move_8_pi7_pd       , 0xfff8, 0x1ee0, 14},
24716   {m68k_op_move_8_pi7_di       , 0xfff8, 0x1ee8, 16},
24717   {m68k_op_move_8_pi7_ix       , 0xfff8, 0x1ef0, 18},
24718   {m68k_op_move_8_pd7_d        , 0xfff8, 0x1f00,  8},
24719   {m68k_op_move_8_pd7_ai       , 0xfff8, 0x1f10, 12},
24720   {m68k_op_move_8_pd7_pi       , 0xfff8, 0x1f18, 12},
24721   {m68k_op_move_8_pd7_pd       , 0xfff8, 0x1f20, 14},
24722   {m68k_op_move_8_pd7_di       , 0xfff8, 0x1f28, 16},
24723   {m68k_op_move_8_pd7_ix       , 0xfff8, 0x1f30, 18},
24724   {m68k_op_move_32_aw_d        , 0xfff8, 0x21c0, 16},
24725   {m68k_op_move_32_aw_a        , 0xfff8, 0x21c8, 16},
24726   {m68k_op_move_32_aw_ai       , 0xfff8, 0x21d0, 24},
24727   {m68k_op_move_32_aw_pi       , 0xfff8, 0x21d8, 24},
24728   {m68k_op_move_32_aw_pd       , 0xfff8, 0x21e0, 26},
24729   {m68k_op_move_32_aw_di       , 0xfff8, 0x21e8, 28},
24730   {m68k_op_move_32_aw_ix       , 0xfff8, 0x21f0, 30},
24731   {m68k_op_move_32_al_d        , 0xfff8, 0x23c0, 20},
24732   {m68k_op_move_32_al_a        , 0xfff8, 0x23c8, 20},
24733   {m68k_op_move_32_al_ai       , 0xfff8, 0x23d0, 28},
24734   {m68k_op_move_32_al_pi       , 0xfff8, 0x23d8, 28},
24735   {m68k_op_move_32_al_pd       , 0xfff8, 0x23e0, 30},
24736   {m68k_op_move_32_al_di       , 0xfff8, 0x23e8, 32},
24737   {m68k_op_move_32_al_ix       , 0xfff8, 0x23f0, 34},
24738   {m68k_op_move_16_aw_d        , 0xfff8, 0x31c0, 12},
24739   {m68k_op_move_16_aw_a        , 0xfff8, 0x31c8, 12},
24740   {m68k_op_move_16_aw_ai       , 0xfff8, 0x31d0, 16},
24741   {m68k_op_move_16_aw_pi       , 0xfff8, 0x31d8, 16},
24742   {m68k_op_move_16_aw_pd       , 0xfff8, 0x31e0, 18},
24743   {m68k_op_move_16_aw_di       , 0xfff8, 0x31e8, 20},
24744   {m68k_op_move_16_aw_ix       , 0xfff8, 0x31f0, 22},
24745   {m68k_op_move_16_al_d        , 0xfff8, 0x33c0, 16},
24746   {m68k_op_move_16_al_a        , 0xfff8, 0x33c8, 16},
24747   {m68k_op_move_16_al_ai       , 0xfff8, 0x33d0, 20},
24748   {m68k_op_move_16_al_pi       , 0xfff8, 0x33d8, 20},
24749   {m68k_op_move_16_al_pd       , 0xfff8, 0x33e0, 22},
24750   {m68k_op_move_16_al_di       , 0xfff8, 0x33e8, 24},
24751   {m68k_op_move_16_al_ix       , 0xfff8, 0x33f0, 26},
24752   {m68k_op_negx_8_d            , 0xfff8, 0x4000,  4},
24753   {m68k_op_negx_8_ai           , 0xfff8, 0x4010, 12},
24754   {m68k_op_negx_8_pi           , 0xfff8, 0x4018, 12},
24755   {m68k_op_negx_8_pd           , 0xfff8, 0x4020, 14},
24756   {m68k_op_negx_8_di           , 0xfff8, 0x4028, 16},
24757   {m68k_op_negx_8_ix           , 0xfff8, 0x4030, 18},
24758   {m68k_op_negx_16_d           , 0xfff8, 0x4040,  4},
24759   {m68k_op_negx_16_ai          , 0xfff8, 0x4050, 12},
24760   {m68k_op_negx_16_pi          , 0xfff8, 0x4058, 12},
24761   {m68k_op_negx_16_pd          , 0xfff8, 0x4060, 14},
24762   {m68k_op_negx_16_di          , 0xfff8, 0x4068, 16},
24763   {m68k_op_negx_16_ix          , 0xfff8, 0x4070, 18},
24764   {m68k_op_negx_32_d           , 0xfff8, 0x4080,  6},
24765   {m68k_op_negx_32_ai          , 0xfff8, 0x4090, 20},
24766   {m68k_op_negx_32_pi          , 0xfff8, 0x4098, 20},
24767   {m68k_op_negx_32_pd          , 0xfff8, 0x40a0, 22},
24768   {m68k_op_negx_32_di          , 0xfff8, 0x40a8, 24},
24769   {m68k_op_negx_32_ix          , 0xfff8, 0x40b0, 26},
24770   {m68k_op_move_16_frs_d       , 0xfff8, 0x40c0,  6},
24771   {m68k_op_move_16_frs_ai      , 0xfff8, 0x40d0, 12},
24772   {m68k_op_move_16_frs_pi      , 0xfff8, 0x40d8, 12},
24773   {m68k_op_move_16_frs_pd      , 0xfff8, 0x40e0, 14},
24774   {m68k_op_move_16_frs_di      , 0xfff8, 0x40e8, 16},
24775   {m68k_op_move_16_frs_ix      , 0xfff8, 0x40f0, 18},
24776   {m68k_op_clr_8_d             , 0xfff8, 0x4200,  4},
24777   {m68k_op_clr_8_ai            , 0xfff8, 0x4210, 12},
24778   {m68k_op_clr_8_pi            , 0xfff8, 0x4218, 12},
24779   {m68k_op_clr_8_pd            , 0xfff8, 0x4220, 14},
24780   {m68k_op_clr_8_di            , 0xfff8, 0x4228, 16},
24781   {m68k_op_clr_8_ix            , 0xfff8, 0x4230, 18},
24782   {m68k_op_clr_16_d            , 0xfff8, 0x4240,  4},
24783   {m68k_op_clr_16_ai           , 0xfff8, 0x4250, 12},
24784   {m68k_op_clr_16_pi           , 0xfff8, 0x4258, 12},
24785   {m68k_op_clr_16_pd           , 0xfff8, 0x4260, 14},
24786   {m68k_op_clr_16_di           , 0xfff8, 0x4268, 16},
24787   {m68k_op_clr_16_ix           , 0xfff8, 0x4270, 18},
24788   {m68k_op_clr_32_d            , 0xfff8, 0x4280,  6},
24789   {m68k_op_clr_32_ai           , 0xfff8, 0x4290, 20},
24790   {m68k_op_clr_32_pi           , 0xfff8, 0x4298, 20},
24791   {m68k_op_clr_32_pd           , 0xfff8, 0x42a0, 22},
24792   {m68k_op_clr_32_di           , 0xfff8, 0x42a8, 24},
24793   {m68k_op_clr_32_ix           , 0xfff8, 0x42b0, 26},
24794   {m68k_op_neg_8_d             , 0xfff8, 0x4400,  4},
24795   {m68k_op_neg_8_ai            , 0xfff8, 0x4410, 12},
24796   {m68k_op_neg_8_pi            , 0xfff8, 0x4418, 12},
24797   {m68k_op_neg_8_pd            , 0xfff8, 0x4420, 14},
24798   {m68k_op_neg_8_di            , 0xfff8, 0x4428, 16},
24799   {m68k_op_neg_8_ix            , 0xfff8, 0x4430, 18},
24800   {m68k_op_neg_16_d            , 0xfff8, 0x4440,  4},
24801   {m68k_op_neg_16_ai           , 0xfff8, 0x4450, 12},
24802   {m68k_op_neg_16_pi           , 0xfff8, 0x4458, 12},
24803   {m68k_op_neg_16_pd           , 0xfff8, 0x4460, 14},
24804   {m68k_op_neg_16_di           , 0xfff8, 0x4468, 16},
24805   {m68k_op_neg_16_ix           , 0xfff8, 0x4470, 18},
24806   {m68k_op_neg_32_d            , 0xfff8, 0x4480,  6},
24807   {m68k_op_neg_32_ai           , 0xfff8, 0x4490, 20},
24808   {m68k_op_neg_32_pi           , 0xfff8, 0x4498, 20},
24809   {m68k_op_neg_32_pd           , 0xfff8, 0x44a0, 22},
24810   {m68k_op_neg_32_di           , 0xfff8, 0x44a8, 24},
24811   {m68k_op_neg_32_ix           , 0xfff8, 0x44b0, 26},
24812   {m68k_op_move_16_toc_d       , 0xfff8, 0x44c0, 12},
24813   {m68k_op_move_16_toc_ai      , 0xfff8, 0x44d0, 16},
24814   {m68k_op_move_16_toc_pi      , 0xfff8, 0x44d8, 16},
24815   {m68k_op_move_16_toc_pd      , 0xfff8, 0x44e0, 18},
24816   {m68k_op_move_16_toc_di      , 0xfff8, 0x44e8, 20},
24817   {m68k_op_move_16_toc_ix      , 0xfff8, 0x44f0, 22},
24818   {m68k_op_not_8_d             , 0xfff8, 0x4600,  4},
24819   {m68k_op_not_8_ai            , 0xfff8, 0x4610, 12},
24820   {m68k_op_not_8_pi            , 0xfff8, 0x4618, 12},
24821   {m68k_op_not_8_pd            , 0xfff8, 0x4620, 14},
24822   {m68k_op_not_8_di            , 0xfff8, 0x4628, 16},
24823   {m68k_op_not_8_ix            , 0xfff8, 0x4630, 18},
24824   {m68k_op_not_16_d            , 0xfff8, 0x4640,  4},
24825   {m68k_op_not_16_ai           , 0xfff8, 0x4650, 12},
24826   {m68k_op_not_16_pi           , 0xfff8, 0x4658, 12},
24827   {m68k_op_not_16_pd           , 0xfff8, 0x4660, 14},
24828   {m68k_op_not_16_di           , 0xfff8, 0x4668, 16},
24829   {m68k_op_not_16_ix           , 0xfff8, 0x4670, 18},
24830   {m68k_op_not_32_d            , 0xfff8, 0x4680,  6},
24831   {m68k_op_not_32_ai           , 0xfff8, 0x4690, 20},
24832   {m68k_op_not_32_pi           , 0xfff8, 0x4698, 20},
24833   {m68k_op_not_32_pd           , 0xfff8, 0x46a0, 22},
24834   {m68k_op_not_32_di           , 0xfff8, 0x46a8, 24},
24835   {m68k_op_not_32_ix           , 0xfff8, 0x46b0, 26},
24836   {m68k_op_move_16_tos_d       , 0xfff8, 0x46c0, 12},
24837   {m68k_op_move_16_tos_ai      , 0xfff8, 0x46d0, 16},
24838   {m68k_op_move_16_tos_pi      , 0xfff8, 0x46d8, 16},
24839   {m68k_op_move_16_tos_pd      , 0xfff8, 0x46e0, 18},
24840   {m68k_op_move_16_tos_di      , 0xfff8, 0x46e8, 20},
24841   {m68k_op_move_16_tos_ix      , 0xfff8, 0x46f0, 22},
24842   {m68k_op_nbcd_8_d            , 0xfff8, 0x4800,  6},
24843   {m68k_op_nbcd_8_ai           , 0xfff8, 0x4810, 12},
24844   {m68k_op_nbcd_8_pi           , 0xfff8, 0x4818, 12},
24845   {m68k_op_nbcd_8_pd           , 0xfff8, 0x4820, 14},
24846   {m68k_op_nbcd_8_di           , 0xfff8, 0x4828, 16},
24847   {m68k_op_nbcd_8_ix           , 0xfff8, 0x4830, 18},
24848   {m68k_op_swap_32             , 0xfff8, 0x4840,  4},
24849   {m68k_op_pea_32_ai           , 0xfff8, 0x4850, 12},
24850   {m68k_op_pea_32_di           , 0xfff8, 0x4868, 16},
24851   {m68k_op_pea_32_ix           , 0xfff8, 0x4870, 20},
24852   {m68k_op_ext_16              , 0xfff8, 0x4880,  4},
24853   {m68k_op_movem_16_re_ai      , 0xfff8, 0x4890,  8},
24854   {m68k_op_movem_16_re_pd      , 0xfff8, 0x48a0,  8},
24855   {m68k_op_movem_16_re_di      , 0xfff8, 0x48a8, 12},
24856   {m68k_op_movem_16_re_ix      , 0xfff8, 0x48b0, 14},
24857   {m68k_op_ext_32              , 0xfff8, 0x48c0,  4},
24858   {m68k_op_movem_32_re_ai      , 0xfff8, 0x48d0,  8},
24859   {m68k_op_movem_32_re_pd      , 0xfff8, 0x48e0,  8},
24860   {m68k_op_movem_32_re_di      , 0xfff8, 0x48e8, 12},
24861   {m68k_op_movem_32_re_ix      , 0xfff8, 0x48f0, 14},
24862   {m68k_op_tst_8_d             , 0xfff8, 0x4a00,  4},
24863   {m68k_op_tst_8_ai            , 0xfff8, 0x4a10,  8},
24864   {m68k_op_tst_8_pi            , 0xfff8, 0x4a18,  8},
24865   {m68k_op_tst_8_pd            , 0xfff8, 0x4a20, 10},
24866   {m68k_op_tst_8_di            , 0xfff8, 0x4a28, 12},
24867   {m68k_op_tst_8_ix            , 0xfff8, 0x4a30, 14},
24868   {m68k_op_tst_16_d            , 0xfff8, 0x4a40,  4},
24869   {m68k_op_tst_16_ai           , 0xfff8, 0x4a50,  8},
24870   {m68k_op_tst_16_pi           , 0xfff8, 0x4a58,  8},
24871   {m68k_op_tst_16_pd           , 0xfff8, 0x4a60, 10},
24872   {m68k_op_tst_16_di           , 0xfff8, 0x4a68, 12},
24873   {m68k_op_tst_16_ix           , 0xfff8, 0x4a70, 14},
24874   {m68k_op_tst_32_d            , 0xfff8, 0x4a80,  4},
24875   {m68k_op_tst_32_ai           , 0xfff8, 0x4a90, 12},
24876   {m68k_op_tst_32_pi           , 0xfff8, 0x4a98, 12},
24877   {m68k_op_tst_32_pd           , 0xfff8, 0x4aa0, 14},
24878   {m68k_op_tst_32_di           , 0xfff8, 0x4aa8, 16},
24879   {m68k_op_tst_32_ix           , 0xfff8, 0x4ab0, 18},
24880   {m68k_op_tas_8_d             , 0xfff8, 0x4ac0,  4},
24881   {m68k_op_tas_8_ai            , 0xfff8, 0x4ad0, 18},
24882   {m68k_op_tas_8_pi            , 0xfff8, 0x4ad8, 18},
24883   {m68k_op_tas_8_pd            , 0xfff8, 0x4ae0, 20},
24884   {m68k_op_tas_8_di            , 0xfff8, 0x4ae8, 22},
24885   {m68k_op_tas_8_ix            , 0xfff8, 0x4af0, 24},
24886   {m68k_op_movem_16_er_ai      , 0xfff8, 0x4c90, 12},
24887   {m68k_op_movem_16_er_pi      , 0xfff8, 0x4c98, 12},
24888   {m68k_op_movem_16_er_di      , 0xfff8, 0x4ca8, 16},
24889   {m68k_op_movem_16_er_ix      , 0xfff8, 0x4cb0, 18},
24890   {m68k_op_movem_32_er_ai      , 0xfff8, 0x4cd0, 12},
24891   {m68k_op_movem_32_er_pi      , 0xfff8, 0x4cd8, 12},
24892   {m68k_op_movem_32_er_di      , 0xfff8, 0x4ce8, 16},
24893   {m68k_op_movem_32_er_ix      , 0xfff8, 0x4cf0, 18},
24894   {m68k_op_link_16             , 0xfff8, 0x4e50, 16},
24895   {m68k_op_unlk_32             , 0xfff8, 0x4e58, 12},
24896   {m68k_op_move_32_tou         , 0xfff8, 0x4e60,  4},
24897   {m68k_op_move_32_fru         , 0xfff8, 0x4e68,  4},
24898   {m68k_op_jsr_32_ai           , 0xfff8, 0x4e90, 16},
24899   {m68k_op_jsr_32_di           , 0xfff8, 0x4ea8, 18},
24900   {m68k_op_jsr_32_ix           , 0xfff8, 0x4eb0, 22},
24901   {m68k_op_jmp_32_ai           , 0xfff8, 0x4ed0,  8},
24902   {m68k_op_jmp_32_di           , 0xfff8, 0x4ee8, 10},
24903   {m68k_op_jmp_32_ix           , 0xfff8, 0x4ef0, 14},
24904   {m68k_op_st_8_d              , 0xfff8, 0x50c0,  6},
24905   {m68k_op_dbt_16              , 0xfff8, 0x50c8, 12},
24906   {m68k_op_st_8_ai             , 0xfff8, 0x50d0, 12},
24907   {m68k_op_st_8_pi             , 0xfff8, 0x50d8, 12},
24908   {m68k_op_st_8_pd             , 0xfff8, 0x50e0, 14},
24909   {m68k_op_st_8_di             , 0xfff8, 0x50e8, 16},
24910   {m68k_op_st_8_ix             , 0xfff8, 0x50f0, 18},
24911   {m68k_op_sf_8_d              , 0xfff8, 0x51c0,  4},
24912   {m68k_op_dbf_16              , 0xfff8, 0x51c8, 12},
24913   {m68k_op_sf_8_ai             , 0xfff8, 0x51d0, 12},
24914   {m68k_op_sf_8_pi             , 0xfff8, 0x51d8, 12},
24915   {m68k_op_sf_8_pd             , 0xfff8, 0x51e0, 14},
24916   {m68k_op_sf_8_di             , 0xfff8, 0x51e8, 16},
24917   {m68k_op_sf_8_ix             , 0xfff8, 0x51f0, 18},
24918   {m68k_op_shi_8_d             , 0xfff8, 0x52c0,  4},
24919   {m68k_op_dbhi_16             , 0xfff8, 0x52c8, 12},
24920   {m68k_op_shi_8_ai            , 0xfff8, 0x52d0, 12},
24921   {m68k_op_shi_8_pi            , 0xfff8, 0x52d8, 12},
24922   {m68k_op_shi_8_pd            , 0xfff8, 0x52e0, 14},
24923   {m68k_op_shi_8_di            , 0xfff8, 0x52e8, 16},
24924   {m68k_op_shi_8_ix            , 0xfff8, 0x52f0, 18},
24925   {m68k_op_sls_8_d             , 0xfff8, 0x53c0,  4},
24926   {m68k_op_dbls_16             , 0xfff8, 0x53c8, 12},
24927   {m68k_op_sls_8_ai            , 0xfff8, 0x53d0, 12},
24928   {m68k_op_sls_8_pi            , 0xfff8, 0x53d8, 12},
24929   {m68k_op_sls_8_pd            , 0xfff8, 0x53e0, 14},
24930   {m68k_op_sls_8_di            , 0xfff8, 0x53e8, 16},
24931   {m68k_op_sls_8_ix            , 0xfff8, 0x53f0, 18},
24932   {m68k_op_scc_8_d             , 0xfff8, 0x54c0,  4},
24933   {m68k_op_dbcc_16             , 0xfff8, 0x54c8, 12},
24934   {m68k_op_scc_8_ai            , 0xfff8, 0x54d0, 12},
24935   {m68k_op_scc_8_pi            , 0xfff8, 0x54d8, 12},
24936   {m68k_op_scc_8_pd            , 0xfff8, 0x54e0, 14},
24937   {m68k_op_scc_8_di            , 0xfff8, 0x54e8, 16},
24938   {m68k_op_scc_8_ix            , 0xfff8, 0x54f0, 18},
24939   {m68k_op_scs_8_d             , 0xfff8, 0x55c0,  4},
24940   {m68k_op_dbcs_16             , 0xfff8, 0x55c8, 12},
24941   {m68k_op_scs_8_ai            , 0xfff8, 0x55d0, 12},
24942   {m68k_op_scs_8_pi            , 0xfff8, 0x55d8, 12},
24943   {m68k_op_scs_8_pd            , 0xfff8, 0x55e0, 14},
24944   {m68k_op_scs_8_di            , 0xfff8, 0x55e8, 16},
24945   {m68k_op_scs_8_ix            , 0xfff8, 0x55f0, 18},
24946   {m68k_op_sne_8_d             , 0xfff8, 0x56c0,  4},
24947   {m68k_op_dbne_16             , 0xfff8, 0x56c8, 12},
24948   {m68k_op_sne_8_ai            , 0xfff8, 0x56d0, 12},
24949   {m68k_op_sne_8_pi            , 0xfff8, 0x56d8, 12},
24950   {m68k_op_sne_8_pd            , 0xfff8, 0x56e0, 14},
24951   {m68k_op_sne_8_di            , 0xfff8, 0x56e8, 16},
24952   {m68k_op_sne_8_ix            , 0xfff8, 0x56f0, 18},
24953   {m68k_op_seq_8_d             , 0xfff8, 0x57c0,  4},
24954   {m68k_op_dbeq_16             , 0xfff8, 0x57c8, 12},
24955   {m68k_op_seq_8_ai            , 0xfff8, 0x57d0, 12},
24956   {m68k_op_seq_8_pi            , 0xfff8, 0x57d8, 12},
24957   {m68k_op_seq_8_pd            , 0xfff8, 0x57e0, 14},
24958   {m68k_op_seq_8_di            , 0xfff8, 0x57e8, 16},
24959   {m68k_op_seq_8_ix            , 0xfff8, 0x57f0, 18},
24960   {m68k_op_svc_8_d             , 0xfff8, 0x58c0,  4},
24961   {m68k_op_dbvc_16             , 0xfff8, 0x58c8, 12},
24962   {m68k_op_svc_8_ai            , 0xfff8, 0x58d0, 12},
24963   {m68k_op_svc_8_pi            , 0xfff8, 0x58d8, 12},
24964   {m68k_op_svc_8_pd            , 0xfff8, 0x58e0, 14},
24965   {m68k_op_svc_8_di            , 0xfff8, 0x58e8, 16},
24966   {m68k_op_svc_8_ix            , 0xfff8, 0x58f0, 18},
24967   {m68k_op_svs_8_d             , 0xfff8, 0x59c0,  4},
24968   {m68k_op_dbvs_16             , 0xfff8, 0x59c8, 12},
24969   {m68k_op_svs_8_ai            , 0xfff8, 0x59d0, 12},
24970   {m68k_op_svs_8_pi            , 0xfff8, 0x59d8, 12},
24971   {m68k_op_svs_8_pd            , 0xfff8, 0x59e0, 14},
24972   {m68k_op_svs_8_di            , 0xfff8, 0x59e8, 16},
24973   {m68k_op_svs_8_ix            , 0xfff8, 0x59f0, 18},
24974   {m68k_op_spl_8_d             , 0xfff8, 0x5ac0,  4},
24975   {m68k_op_dbpl_16             , 0xfff8, 0x5ac8, 12},
24976   {m68k_op_spl_8_ai            , 0xfff8, 0x5ad0, 12},
24977   {m68k_op_spl_8_pi            , 0xfff8, 0x5ad8, 12},
24978   {m68k_op_spl_8_pd            , 0xfff8, 0x5ae0, 14},
24979   {m68k_op_spl_8_di            , 0xfff8, 0x5ae8, 16},
24980   {m68k_op_spl_8_ix            , 0xfff8, 0x5af0, 18},
24981   {m68k_op_smi_8_d             , 0xfff8, 0x5bc0,  4},
24982   {m68k_op_dbmi_16             , 0xfff8, 0x5bc8, 12},
24983   {m68k_op_smi_8_ai            , 0xfff8, 0x5bd0, 12},
24984   {m68k_op_smi_8_pi            , 0xfff8, 0x5bd8, 12},
24985   {m68k_op_smi_8_pd            , 0xfff8, 0x5be0, 14},
24986   {m68k_op_smi_8_di            , 0xfff8, 0x5be8, 16},
24987   {m68k_op_smi_8_ix            , 0xfff8, 0x5bf0, 18},
24988   {m68k_op_sge_8_d             , 0xfff8, 0x5cc0,  4},
24989   {m68k_op_dbge_16             , 0xfff8, 0x5cc8, 12},
24990   {m68k_op_sge_8_ai            , 0xfff8, 0x5cd0, 12},
24991   {m68k_op_sge_8_pi            , 0xfff8, 0x5cd8, 12},
24992   {m68k_op_sge_8_pd            , 0xfff8, 0x5ce0, 14},
24993   {m68k_op_sge_8_di            , 0xfff8, 0x5ce8, 16},
24994   {m68k_op_sge_8_ix            , 0xfff8, 0x5cf0, 18},
24995   {m68k_op_slt_8_d             , 0xfff8, 0x5dc0,  4},
24996   {m68k_op_dblt_16             , 0xfff8, 0x5dc8, 12},
24997   {m68k_op_slt_8_ai            , 0xfff8, 0x5dd0, 12},
24998   {m68k_op_slt_8_pi            , 0xfff8, 0x5dd8, 12},
24999   {m68k_op_slt_8_pd            , 0xfff8, 0x5de0, 14},
25000   {m68k_op_slt_8_di            , 0xfff8, 0x5de8, 16},
25001   {m68k_op_slt_8_ix            , 0xfff8, 0x5df0, 18},
25002   {m68k_op_sgt_8_d             , 0xfff8, 0x5ec0,  4},
25003   {m68k_op_dbgt_16             , 0xfff8, 0x5ec8, 12},
25004   {m68k_op_sgt_8_ai            , 0xfff8, 0x5ed0, 12},
25005   {m68k_op_sgt_8_pi            , 0xfff8, 0x5ed8, 12},
25006   {m68k_op_sgt_8_pd            , 0xfff8, 0x5ee0, 14},
25007   {m68k_op_sgt_8_di            , 0xfff8, 0x5ee8, 16},
25008   {m68k_op_sgt_8_ix            , 0xfff8, 0x5ef0, 18},
25009   {m68k_op_sle_8_d             , 0xfff8, 0x5fc0,  4},
25010   {m68k_op_dble_16             , 0xfff8, 0x5fc8, 12},
25011   {m68k_op_sle_8_ai            , 0xfff8, 0x5fd0, 12},
25012   {m68k_op_sle_8_pi            , 0xfff8, 0x5fd8, 12},
25013   {m68k_op_sle_8_pd            , 0xfff8, 0x5fe0, 14},
25014   {m68k_op_sle_8_di            , 0xfff8, 0x5fe8, 16},
25015   {m68k_op_sle_8_ix            , 0xfff8, 0x5ff0, 18},
25016   {m68k_op_sbcd_8_mm_ax7       , 0xfff8, 0x8f08, 18},
25017   {m68k_op_subx_8_mm_ax7       , 0xfff8, 0x9f08, 18},
25018   {m68k_op_cmpm_8_ax7          , 0xfff8, 0xbf08, 12},
25019   {m68k_op_abcd_8_mm_ax7       , 0xfff8, 0xcf08, 18},
25020   {m68k_op_addx_8_mm_ax7       , 0xfff8, 0xdf08, 18},
25021   {m68k_op_asr_16_ai           , 0xfff8, 0xe0d0, 12},
25022   {m68k_op_asr_16_pi           , 0xfff8, 0xe0d8, 12},
25023   {m68k_op_asr_16_pd           , 0xfff8, 0xe0e0, 14},
25024   {m68k_op_asr_16_di           , 0xfff8, 0xe0e8, 16},
25025   {m68k_op_asr_16_ix           , 0xfff8, 0xe0f0, 18},
25026   {m68k_op_asl_16_ai           , 0xfff8, 0xe1d0, 12},
25027   {m68k_op_asl_16_pi           , 0xfff8, 0xe1d8, 12},
25028   {m68k_op_asl_16_pd           , 0xfff8, 0xe1e0, 14},
25029   {m68k_op_asl_16_di           , 0xfff8, 0xe1e8, 16},
25030   {m68k_op_asl_16_ix           , 0xfff8, 0xe1f0, 18},
25031   {m68k_op_lsr_16_ai           , 0xfff8, 0xe2d0, 12},
25032   {m68k_op_lsr_16_pi           , 0xfff8, 0xe2d8, 12},
25033   {m68k_op_lsr_16_pd           , 0xfff8, 0xe2e0, 14},
25034   {m68k_op_lsr_16_di           , 0xfff8, 0xe2e8, 16},
25035   {m68k_op_lsr_16_ix           , 0xfff8, 0xe2f0, 18},
25036   {m68k_op_lsl_16_ai           , 0xfff8, 0xe3d0, 12},
25037   {m68k_op_lsl_16_pi           , 0xfff8, 0xe3d8, 12},
25038   {m68k_op_lsl_16_pd           , 0xfff8, 0xe3e0, 14},
25039   {m68k_op_lsl_16_di           , 0xfff8, 0xe3e8, 16},
25040   {m68k_op_lsl_16_ix           , 0xfff8, 0xe3f0, 18},
25041   {m68k_op_roxr_16_ai          , 0xfff8, 0xe4d0, 12},
25042   {m68k_op_roxr_16_pi          , 0xfff8, 0xe4d8, 12},
25043   {m68k_op_roxr_16_pd          , 0xfff8, 0xe4e0, 14},
25044   {m68k_op_roxr_16_di          , 0xfff8, 0xe4e8, 16},
25045   {m68k_op_roxr_16_ix          , 0xfff8, 0xe4f0, 18},
25046   {m68k_op_roxl_16_ai          , 0xfff8, 0xe5d0, 12},
25047   {m68k_op_roxl_16_pi          , 0xfff8, 0xe5d8, 12},
25048   {m68k_op_roxl_16_pd          , 0xfff8, 0xe5e0, 14},
25049   {m68k_op_roxl_16_di          , 0xfff8, 0xe5e8, 16},
25050   {m68k_op_roxl_16_ix          , 0xfff8, 0xe5f0, 18},
25051   {m68k_op_ror_16_ai           , 0xfff8, 0xe6d0, 12},
25052   {m68k_op_ror_16_pi           , 0xfff8, 0xe6d8, 12},
25053   {m68k_op_ror_16_pd           , 0xfff8, 0xe6e0, 14},
25054   {m68k_op_ror_16_di           , 0xfff8, 0xe6e8, 16},
25055   {m68k_op_ror_16_ix           , 0xfff8, 0xe6f0, 18},
25056   {m68k_op_rol_16_ai           , 0xfff8, 0xe7d0, 12},
25057   {m68k_op_rol_16_pi           , 0xfff8, 0xe7d8, 12},
25058   {m68k_op_rol_16_pd           , 0xfff8, 0xe7e0, 14},
25059   {m68k_op_rol_16_di           , 0xfff8, 0xe7e8, 16},
25060   {m68k_op_rol_16_ix           , 0xfff8, 0xe7f0, 18},
25061   {m68k_op_ori_8_pi7           , 0xffff, 0x001f, 16},
25062   {m68k_op_ori_8_pd7           , 0xffff, 0x0027, 18},
25063   {m68k_op_ori_8_aw            , 0xffff, 0x0038, 20},
25064   {m68k_op_ori_8_al            , 0xffff, 0x0039, 24},
25065   {m68k_op_ori_16_toc          , 0xffff, 0x003c, 20},
25066   {m68k_op_ori_16_aw           , 0xffff, 0x0078, 20},
25067   {m68k_op_ori_16_al           , 0xffff, 0x0079, 24},
25068   {m68k_op_ori_16_tos          , 0xffff, 0x007c, 20},
25069   {m68k_op_ori_32_aw           , 0xffff, 0x00b8, 32},
25070   {m68k_op_ori_32_al           , 0xffff, 0x00b9, 36},
25071   {m68k_op_andi_8_pi7          , 0xffff, 0x021f, 16},
25072   {m68k_op_andi_8_pd7          , 0xffff, 0x0227, 18},
25073   {m68k_op_andi_8_aw           , 0xffff, 0x0238, 20},
25074   {m68k_op_andi_8_al           , 0xffff, 0x0239, 24},
25075   {m68k_op_andi_16_toc         , 0xffff, 0x023c, 20},
25076   {m68k_op_andi_16_aw          , 0xffff, 0x0278, 20},
25077   {m68k_op_andi_16_al          , 0xffff, 0x0279, 24},
25078   {m68k_op_andi_16_tos         , 0xffff, 0x027c, 20},
25079   {m68k_op_andi_32_aw          , 0xffff, 0x02b8, 32},
25080   {m68k_op_andi_32_al          , 0xffff, 0x02b9, 36},
25081   {m68k_op_subi_8_pi7          , 0xffff, 0x041f, 16},
25082   {m68k_op_subi_8_pd7          , 0xffff, 0x0427, 18},
25083   {m68k_op_subi_8_aw           , 0xffff, 0x0438, 20},
25084   {m68k_op_subi_8_al           , 0xffff, 0x0439, 24},
25085   {m68k_op_subi_16_aw          , 0xffff, 0x0478, 20},
25086   {m68k_op_subi_16_al          , 0xffff, 0x0479, 24},
25087   {m68k_op_subi_32_aw          , 0xffff, 0x04b8, 32},
25088   {m68k_op_subi_32_al          , 0xffff, 0x04b9, 36},
25089   {m68k_op_addi_8_pi7          , 0xffff, 0x061f, 16},
25090   {m68k_op_addi_8_pd7          , 0xffff, 0x0627, 18},
25091   {m68k_op_addi_8_aw           , 0xffff, 0x0638, 20},
25092   {m68k_op_addi_8_al           , 0xffff, 0x0639, 24},
25093   {m68k_op_addi_16_aw          , 0xffff, 0x0678, 20},
25094   {m68k_op_addi_16_al          , 0xffff, 0x0679, 24},
25095   {m68k_op_addi_32_aw          , 0xffff, 0x06b8, 32},
25096   {m68k_op_addi_32_al          , 0xffff, 0x06b9, 36},
25097   {m68k_op_btst_8_s_pi7        , 0xffff, 0x081f, 12},
25098   {m68k_op_btst_8_s_pd7        , 0xffff, 0x0827, 14},
25099   {m68k_op_btst_8_s_aw         , 0xffff, 0x0838, 16},
25100   {m68k_op_btst_8_s_al         , 0xffff, 0x0839, 20},
25101   {m68k_op_btst_8_s_pcdi       , 0xffff, 0x083a, 16},
25102   {m68k_op_btst_8_s_pcix       , 0xffff, 0x083b, 18},
25103   {m68k_op_bchg_8_s_pi7        , 0xffff, 0x085f, 16},
25104   {m68k_op_bchg_8_s_pd7        , 0xffff, 0x0867, 18},
25105   {m68k_op_bchg_8_s_aw         , 0xffff, 0x0878, 20},
25106   {m68k_op_bchg_8_s_al         , 0xffff, 0x0879, 24},
25107   {m68k_op_bclr_8_s_pi7        , 0xffff, 0x089f, 16},
25108   {m68k_op_bclr_8_s_pd7        , 0xffff, 0x08a7, 18},
25109   {m68k_op_bclr_8_s_aw         , 0xffff, 0x08b8, 20},
25110   {m68k_op_bclr_8_s_al         , 0xffff, 0x08b9, 24},
25111   {m68k_op_bset_8_s_pi7        , 0xffff, 0x08df, 16},
25112   {m68k_op_bset_8_s_pd7        , 0xffff, 0x08e7, 18},
25113   {m68k_op_bset_8_s_aw         , 0xffff, 0x08f8, 20},
25114   {m68k_op_bset_8_s_al         , 0xffff, 0x08f9, 24},
25115   {m68k_op_eori_8_pi7          , 0xffff, 0x0a1f, 16},
25116   {m68k_op_eori_8_pd7          , 0xffff, 0x0a27, 18},
25117   {m68k_op_eori_8_aw           , 0xffff, 0x0a38, 20},
25118   {m68k_op_eori_8_al           , 0xffff, 0x0a39, 24},
25119   {m68k_op_eori_16_toc         , 0xffff, 0x0a3c, 20},
25120   {m68k_op_eori_16_aw          , 0xffff, 0x0a78, 20},
25121   {m68k_op_eori_16_al          , 0xffff, 0x0a79, 24},
25122   {m68k_op_eori_16_tos         , 0xffff, 0x0a7c, 20},
25123   {m68k_op_eori_32_aw          , 0xffff, 0x0ab8, 32},
25124   {m68k_op_eori_32_al          , 0xffff, 0x0ab9, 36},
25125   {m68k_op_cmpi_8_pi7          , 0xffff, 0x0c1f, 12},
25126   {m68k_op_cmpi_8_pd7          , 0xffff, 0x0c27, 14},
25127   {m68k_op_cmpi_8_aw           , 0xffff, 0x0c38, 16},
25128   {m68k_op_cmpi_8_al           , 0xffff, 0x0c39, 20},
25129   {m68k_op_cmpi_16_aw          , 0xffff, 0x0c78, 16},
25130   {m68k_op_cmpi_16_al          , 0xffff, 0x0c79, 20},
25131   {m68k_op_cmpi_32_aw          , 0xffff, 0x0cb8, 24},
25132   {m68k_op_cmpi_32_al          , 0xffff, 0x0cb9, 28},
25133   {m68k_op_move_8_aw_pi7       , 0xffff, 0x11df, 16},
25134   {m68k_op_move_8_aw_pd7       , 0xffff, 0x11e7, 18},
25135   {m68k_op_move_8_aw_aw        , 0xffff, 0x11f8, 20},
25136   {m68k_op_move_8_aw_al        , 0xffff, 0x11f9, 24},
25137   {m68k_op_move_8_aw_pcdi      , 0xffff, 0x11fa, 20},
25138   {m68k_op_move_8_aw_pcix      , 0xffff, 0x11fb, 22},
25139   {m68k_op_move_8_aw_i         , 0xffff, 0x11fc, 16},
25140   {m68k_op_move_8_al_pi7       , 0xffff, 0x13df, 20},
25141   {m68k_op_move_8_al_pd7       , 0xffff, 0x13e7, 22},
25142   {m68k_op_move_8_al_aw        , 0xffff, 0x13f8, 24},
25143   {m68k_op_move_8_al_al        , 0xffff, 0x13f9, 28},
25144   {m68k_op_move_8_al_pcdi      , 0xffff, 0x13fa, 24},
25145   {m68k_op_move_8_al_pcix      , 0xffff, 0x13fb, 26},
25146   {m68k_op_move_8_al_i         , 0xffff, 0x13fc, 20},
25147   {m68k_op_move_8_pi7_pi7      , 0xffff, 0x1edf, 12},
25148   {m68k_op_move_8_pi7_pd7      , 0xffff, 0x1ee7, 14},
25149   {m68k_op_move_8_pi7_aw       , 0xffff, 0x1ef8, 16},
25150   {m68k_op_move_8_pi7_al       , 0xffff, 0x1ef9, 20},
25151   {m68k_op_move_8_pi7_pcdi     , 0xffff, 0x1efa, 16},
25152   {m68k_op_move_8_pi7_pcix     , 0xffff, 0x1efb, 18},
25153   {m68k_op_move_8_pi7_i        , 0xffff, 0x1efc, 12},
25154   {m68k_op_move_8_pd7_pi7      , 0xffff, 0x1f1f, 12},
25155   {m68k_op_move_8_pd7_pd7      , 0xffff, 0x1f27, 14},
25156   {m68k_op_move_8_pd7_aw       , 0xffff, 0x1f38, 16},
25157   {m68k_op_move_8_pd7_al       , 0xffff, 0x1f39, 20},
25158   {m68k_op_move_8_pd7_pcdi     , 0xffff, 0x1f3a, 16},
25159   {m68k_op_move_8_pd7_pcix     , 0xffff, 0x1f3b, 18},
25160   {m68k_op_move_8_pd7_i        , 0xffff, 0x1f3c, 12},
25161   {m68k_op_move_32_aw_aw       , 0xffff, 0x21f8, 28},
25162   {m68k_op_move_32_aw_al       , 0xffff, 0x21f9, 32},
25163   {m68k_op_move_32_aw_pcdi     , 0xffff, 0x21fa, 28},
25164   {m68k_op_move_32_aw_pcix     , 0xffff, 0x21fb, 30},
25165   {m68k_op_move_32_aw_i        , 0xffff, 0x21fc, 24},
25166   {m68k_op_move_32_al_aw       , 0xffff, 0x23f8, 32},
25167   {m68k_op_move_32_al_al       , 0xffff, 0x23f9, 36},
25168   {m68k_op_move_32_al_pcdi     , 0xffff, 0x23fa, 32},
25169   {m68k_op_move_32_al_pcix     , 0xffff, 0x23fb, 34},
25170   {m68k_op_move_32_al_i        , 0xffff, 0x23fc, 28},
25171   {m68k_op_move_16_aw_aw       , 0xffff, 0x31f8, 20},
25172   {m68k_op_move_16_aw_al       , 0xffff, 0x31f9, 24},
25173   {m68k_op_move_16_aw_pcdi     , 0xffff, 0x31fa, 20},
25174   {m68k_op_move_16_aw_pcix     , 0xffff, 0x31fb, 22},
25175   {m68k_op_move_16_aw_i        , 0xffff, 0x31fc, 16},
25176   {m68k_op_move_16_al_aw       , 0xffff, 0x33f8, 24},
25177   {m68k_op_move_16_al_al       , 0xffff, 0x33f9, 28},
25178   {m68k_op_move_16_al_pcdi     , 0xffff, 0x33fa, 24},
25179   {m68k_op_move_16_al_pcix     , 0xffff, 0x33fb, 26},
25180   {m68k_op_move_16_al_i        , 0xffff, 0x33fc, 20},
25181   {m68k_op_negx_8_pi7          , 0xffff, 0x401f, 12},
25182   {m68k_op_negx_8_pd7          , 0xffff, 0x4027, 14},
25183   {m68k_op_negx_8_aw           , 0xffff, 0x4038, 16},
25184   {m68k_op_negx_8_al           , 0xffff, 0x4039, 20},
25185   {m68k_op_negx_16_aw          , 0xffff, 0x4078, 16},
25186   {m68k_op_negx_16_al          , 0xffff, 0x4079, 20},
25187   {m68k_op_negx_32_aw          , 0xffff, 0x40b8, 24},
25188   {m68k_op_negx_32_al          , 0xffff, 0x40b9, 28},
25189   {m68k_op_move_16_frs_aw      , 0xffff, 0x40f8, 16},
25190   {m68k_op_move_16_frs_al      , 0xffff, 0x40f9, 20},
25191   {m68k_op_clr_8_pi7           , 0xffff, 0x421f, 12},
25192   {m68k_op_clr_8_pd7           , 0xffff, 0x4227, 14},
25193   {m68k_op_clr_8_aw            , 0xffff, 0x4238, 16},
25194   {m68k_op_clr_8_al            , 0xffff, 0x4239, 20},
25195   {m68k_op_clr_16_aw           , 0xffff, 0x4278, 16},
25196   {m68k_op_clr_16_al           , 0xffff, 0x4279, 20},
25197   {m68k_op_clr_32_aw           , 0xffff, 0x42b8, 24},
25198   {m68k_op_clr_32_al           , 0xffff, 0x42b9, 28},
25199   {m68k_op_neg_8_pi7           , 0xffff, 0x441f, 12},
25200   {m68k_op_neg_8_pd7           , 0xffff, 0x4427, 14},
25201   {m68k_op_neg_8_aw            , 0xffff, 0x4438, 16},
25202   {m68k_op_neg_8_al            , 0xffff, 0x4439, 20},
25203   {m68k_op_neg_16_aw           , 0xffff, 0x4478, 16},
25204   {m68k_op_neg_16_al           , 0xffff, 0x4479, 20},
25205   {m68k_op_neg_32_aw           , 0xffff, 0x44b8, 24},
25206   {m68k_op_neg_32_al           , 0xffff, 0x44b9, 28},
25207   {m68k_op_move_16_toc_aw      , 0xffff, 0x44f8, 20},
25208   {m68k_op_move_16_toc_al      , 0xffff, 0x44f9, 24},
25209   {m68k_op_move_16_toc_pcdi    , 0xffff, 0x44fa, 20},
25210   {m68k_op_move_16_toc_pcix    , 0xffff, 0x44fb, 22},
25211   {m68k_op_move_16_toc_i       , 0xffff, 0x44fc, 16},
25212   {m68k_op_not_8_pi7           , 0xffff, 0x461f, 12},
25213   {m68k_op_not_8_pd7           , 0xffff, 0x4627, 14},
25214   {m68k_op_not_8_aw            , 0xffff, 0x4638, 16},
25215   {m68k_op_not_8_al            , 0xffff, 0x4639, 20},
25216   {m68k_op_not_16_aw           , 0xffff, 0x4678, 16},
25217   {m68k_op_not_16_al           , 0xffff, 0x4679, 20},
25218   {m68k_op_not_32_aw           , 0xffff, 0x46b8, 24},
25219   {m68k_op_not_32_al           , 0xffff, 0x46b9, 28},
25220   {m68k_op_move_16_tos_aw      , 0xffff, 0x46f8, 20},
25221   {m68k_op_move_16_tos_al      , 0xffff, 0x46f9, 24},
25222   {m68k_op_move_16_tos_pcdi    , 0xffff, 0x46fa, 20},
25223   {m68k_op_move_16_tos_pcix    , 0xffff, 0x46fb, 22},
25224   {m68k_op_move_16_tos_i       , 0xffff, 0x46fc, 16},
25225   {m68k_op_nbcd_8_pi7          , 0xffff, 0x481f, 12},
25226   {m68k_op_nbcd_8_pd7          , 0xffff, 0x4827, 14},
25227   {m68k_op_nbcd_8_aw           , 0xffff, 0x4838, 16},
25228   {m68k_op_nbcd_8_al           , 0xffff, 0x4839, 20},
25229   {m68k_op_pea_32_aw           , 0xffff, 0x4878, 16},
25230   {m68k_op_pea_32_al           , 0xffff, 0x4879, 20},
25231   {m68k_op_pea_32_pcdi         , 0xffff, 0x487a, 16},
25232   {m68k_op_pea_32_pcix         , 0xffff, 0x487b, 20},
25233   {m68k_op_movem_16_re_aw      , 0xffff, 0x48b8, 12},
25234   {m68k_op_movem_16_re_al      , 0xffff, 0x48b9, 16},
25235   {m68k_op_movem_32_re_aw      , 0xffff, 0x48f8, 12},
25236   {m68k_op_movem_32_re_al      , 0xffff, 0x48f9, 16},
25237   {m68k_op_tst_8_pi7           , 0xffff, 0x4a1f,  8},
25238   {m68k_op_tst_8_pd7           , 0xffff, 0x4a27, 10},
25239   {m68k_op_tst_8_aw            , 0xffff, 0x4a38, 12},
25240   {m68k_op_tst_8_al            , 0xffff, 0x4a39, 16},
25241   {m68k_op_tst_16_aw           , 0xffff, 0x4a78, 12},
25242   {m68k_op_tst_16_al           , 0xffff, 0x4a79, 16},
25243   {m68k_op_tst_32_aw           , 0xffff, 0x4ab8, 16},
25244   {m68k_op_tst_32_al           , 0xffff, 0x4ab9, 20},
25245   {m68k_op_tas_8_pi7           , 0xffff, 0x4adf, 18},
25246   {m68k_op_tas_8_pd7           , 0xffff, 0x4ae7, 20},
25247   {m68k_op_tas_8_aw            , 0xffff, 0x4af8, 22},
25248   {m68k_op_tas_8_al            , 0xffff, 0x4af9, 26},
25249   {m68k_op_illegal             , 0xffff, 0x4afc,  4},
25250   {m68k_op_movem_16_er_aw      , 0xffff, 0x4cb8, 16},
25251   {m68k_op_movem_16_er_al      , 0xffff, 0x4cb9, 20},
25252   {m68k_op_movem_16_er_pcdi    , 0xffff, 0x4cba, 16},
25253   {m68k_op_movem_16_er_pcix    , 0xffff, 0x4cbb, 18},
25254   {m68k_op_movem_32_er_aw      , 0xffff, 0x4cf8, 16},
25255   {m68k_op_movem_32_er_al      , 0xffff, 0x4cf9, 20},
25256   {m68k_op_movem_32_er_pcdi    , 0xffff, 0x4cfa, 16},
25257   {m68k_op_movem_32_er_pcix    , 0xffff, 0x4cfb, 18},
25258   {m68k_op_link_16_a7          , 0xffff, 0x4e57, 16},
25259   {m68k_op_unlk_32_a7          , 0xffff, 0x4e5f, 12},
25260   {m68k_op_reset               , 0xffff, 0x4e70,  0},
25261   {m68k_op_nop                 , 0xffff, 0x4e71,  4},
25262   {m68k_op_stop                , 0xffff, 0x4e72,  4},
25263   {m68k_op_rte_32              , 0xffff, 0x4e73, 20},
25264   {m68k_op_rts_32              , 0xffff, 0x4e75, 16},
25265   {m68k_op_trapv               , 0xffff, 0x4e76,  4},
25266   {m68k_op_rtr_32              , 0xffff, 0x4e77, 20},
25267   {m68k_op_jsr_32_aw           , 0xffff, 0x4eb8, 18},
25268   {m68k_op_jsr_32_al           , 0xffff, 0x4eb9, 20},
25269   {m68k_op_jsr_32_pcdi         , 0xffff, 0x4eba, 18},
25270   {m68k_op_jsr_32_pcix         , 0xffff, 0x4ebb, 22},
25271   {m68k_op_jmp_32_aw           , 0xffff, 0x4ef8, 10},
25272   {m68k_op_jmp_32_al           , 0xffff, 0x4ef9, 12},
25273   {m68k_op_jmp_32_pcdi         , 0xffff, 0x4efa, 10},
25274   {m68k_op_jmp_32_pcix         , 0xffff, 0x4efb, 14},
25275   {m68k_op_st_8_pi7            , 0xffff, 0x50df, 12},
25276   {m68k_op_st_8_pd7            , 0xffff, 0x50e7, 14},
25277   {m68k_op_st_8_aw             , 0xffff, 0x50f8, 16},
25278   {m68k_op_st_8_al             , 0xffff, 0x50f9, 20},
25279   {m68k_op_sf_8_pi7            , 0xffff, 0x51df, 12},
25280   {m68k_op_sf_8_pd7            , 0xffff, 0x51e7, 14},
25281   {m68k_op_sf_8_aw             , 0xffff, 0x51f8, 16},
25282   {m68k_op_sf_8_al             , 0xffff, 0x51f9, 20},
25283   {m68k_op_shi_8_pi7           , 0xffff, 0x52df, 12},
25284   {m68k_op_shi_8_pd7           , 0xffff, 0x52e7, 14},
25285   {m68k_op_shi_8_aw            , 0xffff, 0x52f8, 16},
25286   {m68k_op_shi_8_al            , 0xffff, 0x52f9, 20},
25287   {m68k_op_sls_8_pi7           , 0xffff, 0x53df, 12},
25288   {m68k_op_sls_8_pd7           , 0xffff, 0x53e7, 14},
25289   {m68k_op_sls_8_aw            , 0xffff, 0x53f8, 16},
25290   {m68k_op_sls_8_al            , 0xffff, 0x53f9, 20},
25291   {m68k_op_scc_8_pi7           , 0xffff, 0x54df, 12},
25292   {m68k_op_scc_8_pd7           , 0xffff, 0x54e7, 14},
25293   {m68k_op_scc_8_aw            , 0xffff, 0x54f8, 16},
25294   {m68k_op_scc_8_al            , 0xffff, 0x54f9, 20},
25295   {m68k_op_scs_8_pi7           , 0xffff, 0x55df, 12},
25296   {m68k_op_scs_8_pd7           , 0xffff, 0x55e7, 14},
25297   {m68k_op_scs_8_aw            , 0xffff, 0x55f8, 16},
25298   {m68k_op_scs_8_al            , 0xffff, 0x55f9, 20},
25299   {m68k_op_sne_8_pi7           , 0xffff, 0x56df, 12},
25300   {m68k_op_sne_8_pd7           , 0xffff, 0x56e7, 14},
25301   {m68k_op_sne_8_aw            , 0xffff, 0x56f8, 16},
25302   {m68k_op_sne_8_al            , 0xffff, 0x56f9, 20},
25303   {m68k_op_seq_8_pi7           , 0xffff, 0x57df, 12},
25304   {m68k_op_seq_8_pd7           , 0xffff, 0x57e7, 14},
25305   {m68k_op_seq_8_aw            , 0xffff, 0x57f8, 16},
25306   {m68k_op_seq_8_al            , 0xffff, 0x57f9, 20},
25307   {m68k_op_svc_8_pi7           , 0xffff, 0x58df, 12},
25308   {m68k_op_svc_8_pd7           , 0xffff, 0x58e7, 14},
25309   {m68k_op_svc_8_aw            , 0xffff, 0x58f8, 16},
25310   {m68k_op_svc_8_al            , 0xffff, 0x58f9, 20},
25311   {m68k_op_svs_8_pi7           , 0xffff, 0x59df, 12},
25312   {m68k_op_svs_8_pd7           , 0xffff, 0x59e7, 14},
25313   {m68k_op_svs_8_aw            , 0xffff, 0x59f8, 16},
25314   {m68k_op_svs_8_al            , 0xffff, 0x59f9, 20},
25315   {m68k_op_spl_8_pi7           , 0xffff, 0x5adf, 12},
25316   {m68k_op_spl_8_pd7           , 0xffff, 0x5ae7, 14},
25317   {m68k_op_spl_8_aw            , 0xffff, 0x5af8, 16},
25318   {m68k_op_spl_8_al            , 0xffff, 0x5af9, 20},
25319   {m68k_op_smi_8_pi7           , 0xffff, 0x5bdf, 12},
25320   {m68k_op_smi_8_pd7           , 0xffff, 0x5be7, 14},
25321   {m68k_op_smi_8_aw            , 0xffff, 0x5bf8, 16},
25322   {m68k_op_smi_8_al            , 0xffff, 0x5bf9, 20},
25323   {m68k_op_sge_8_pi7           , 0xffff, 0x5cdf, 12},
25324   {m68k_op_sge_8_pd7           , 0xffff, 0x5ce7, 14},
25325   {m68k_op_sge_8_aw            , 0xffff, 0x5cf8, 16},
25326   {m68k_op_sge_8_al            , 0xffff, 0x5cf9, 20},
25327   {m68k_op_slt_8_pi7           , 0xffff, 0x5ddf, 12},
25328   {m68k_op_slt_8_pd7           , 0xffff, 0x5de7, 14},
25329   {m68k_op_slt_8_aw            , 0xffff, 0x5df8, 16},
25330   {m68k_op_slt_8_al            , 0xffff, 0x5df9, 20},
25331   {m68k_op_sgt_8_pi7           , 0xffff, 0x5edf, 12},
25332   {m68k_op_sgt_8_pd7           , 0xffff, 0x5ee7, 14},
25333   {m68k_op_sgt_8_aw            , 0xffff, 0x5ef8, 16},
25334   {m68k_op_sgt_8_al            , 0xffff, 0x5ef9, 20},
25335   {m68k_op_sle_8_pi7           , 0xffff, 0x5fdf, 12},
25336   {m68k_op_sle_8_pd7           , 0xffff, 0x5fe7, 14},
25337   {m68k_op_sle_8_aw            , 0xffff, 0x5ff8, 16},
25338   {m68k_op_sle_8_al            , 0xffff, 0x5ff9, 20},
25339   {m68k_op_bra_16              , 0xffff, 0x6000, 10},
25340   {m68k_op_bra_32              , 0xffff, 0x60ff, 10},
25341   {m68k_op_bsr_16              , 0xffff, 0x6100, 18},
25342   {m68k_op_bsr_32              , 0xffff, 0x61ff, 18},
25343   {m68k_op_bhi_16              , 0xffff, 0x6200, 10},
25344   {m68k_op_bhi_32              , 0xffff, 0x62ff, 10},
25345   {m68k_op_bls_16              , 0xffff, 0x6300, 10},
25346   {m68k_op_bls_32              , 0xffff, 0x63ff, 10},
25347   {m68k_op_bcc_16              , 0xffff, 0x6400, 10},
25348   {m68k_op_bcc_32              , 0xffff, 0x64ff, 10},
25349   {m68k_op_bcs_16              , 0xffff, 0x6500, 10},
25350   {m68k_op_bcs_32              , 0xffff, 0x65ff, 10},
25351   {m68k_op_bne_16              , 0xffff, 0x6600, 10},
25352   {m68k_op_bne_32              , 0xffff, 0x66ff, 10},
25353   {m68k_op_beq_16              , 0xffff, 0x6700, 10},
25354   {m68k_op_beq_32              , 0xffff, 0x67ff, 10},
25355   {m68k_op_bvc_16              , 0xffff, 0x6800, 10},
25356   {m68k_op_bvc_32              , 0xffff, 0x68ff, 10},
25357   {m68k_op_bvs_16              , 0xffff, 0x6900, 10},
25358   {m68k_op_bvs_32              , 0xffff, 0x69ff, 10},
25359   {m68k_op_bpl_16              , 0xffff, 0x6a00, 10},
25360   {m68k_op_bpl_32              , 0xffff, 0x6aff, 10},
25361   {m68k_op_bmi_16              , 0xffff, 0x6b00, 10},
25362   {m68k_op_bmi_32              , 0xffff, 0x6bff, 10},
25363   {m68k_op_bge_16              , 0xffff, 0x6c00, 10},
25364   {m68k_op_bge_32              , 0xffff, 0x6cff, 10},
25365   {m68k_op_blt_16              , 0xffff, 0x6d00, 10},
25366   {m68k_op_blt_32              , 0xffff, 0x6dff, 10},
25367   {m68k_op_bgt_16              , 0xffff, 0x6e00, 10},
25368   {m68k_op_bgt_32              , 0xffff, 0x6eff, 10},
25369   {m68k_op_ble_16              , 0xffff, 0x6f00, 10},
25370   {m68k_op_ble_32              , 0xffff, 0x6fff, 10},
25371   {m68k_op_sbcd_8_mm_axy7      , 0xffff, 0x8f0f, 18},
25372   {m68k_op_subx_8_mm_axy7      , 0xffff, 0x9f0f, 18},
25373   {m68k_op_cmpm_8_axy7         , 0xffff, 0xbf0f, 12},
25374   {m68k_op_abcd_8_mm_axy7      , 0xffff, 0xcf0f, 18},
25375   {m68k_op_addx_8_mm_axy7      , 0xffff, 0xdf0f, 18},
25376   {m68k_op_asr_16_aw           , 0xffff, 0xe0f8, 16},
25377   {m68k_op_asr_16_al           , 0xffff, 0xe0f9, 20},
25378   {m68k_op_asl_16_aw           , 0xffff, 0xe1f8, 16},
25379   {m68k_op_asl_16_al           , 0xffff, 0xe1f9, 20},
25380   {m68k_op_lsr_16_aw           , 0xffff, 0xe2f8, 16},
25381   {m68k_op_lsr_16_al           , 0xffff, 0xe2f9, 20},
25382   {m68k_op_lsl_16_aw           , 0xffff, 0xe3f8, 16},
25383   {m68k_op_lsl_16_al           , 0xffff, 0xe3f9, 20},
25384   {m68k_op_roxr_16_aw          , 0xffff, 0xe4f8, 16},
25385   {m68k_op_roxr_16_al          , 0xffff, 0xe4f9, 20},
25386   {m68k_op_roxl_16_aw          , 0xffff, 0xe5f8, 16},
25387   {m68k_op_roxl_16_al          , 0xffff, 0xe5f9, 20},
25388   {m68k_op_ror_16_aw           , 0xffff, 0xe6f8, 16},
25389   {m68k_op_ror_16_al           , 0xffff, 0xe6f9, 20},
25390   {m68k_op_rol_16_aw           , 0xffff, 0xe7f8, 16},
25391   {m68k_op_rol_16_al           , 0xffff, 0xe7f9, 20},
25392   {0, 0, 0, 0}
25393 };
25394 
25395 
25396 /* Build the opcode handler jump table */
m68ki_build_opcode_table(void)25397 static void m68ki_build_opcode_table(void)
25398 {
25399   const opcode_handler_struct *ostruct;
25400   int instr;
25401   int i;
25402   int j;
25403 
25404   for(i = 0; i < 0x10000; i++)
25405   {
25406     /* default to illegal */
25407     m68ki_instruction_jump_table[i] = m68k_op_illegal;
25408     m68ki_cycles[i] = 4;
25409   }
25410 
25411   ostruct = &m68k_opcode_handler_table[0];
25412   while(ostruct->mask != 0xff00)
25413   {
25414     for(i = 0;i < 0x10000;i++)
25415     {
25416       if((i & ostruct->mask) == ostruct->match)
25417       {
25418         m68ki_instruction_jump_table[i] = ostruct->opcode_handler;
25419         m68ki_cycles[i] = ostruct->cycles * MUL;
25420       }
25421     }
25422     ostruct++;
25423   }
25424   while(ostruct->mask == 0xff00)
25425   {
25426     for(i = 0;i <= 0xff;i++)
25427     {
25428       m68ki_instruction_jump_table[ostruct->match | i] = ostruct->opcode_handler;
25429       m68ki_cycles[ostruct->match | i] = ostruct->cycles * MUL;
25430     }
25431     ostruct++;
25432   }
25433   while(ostruct->mask == 0xf1f8)
25434   {
25435     for(i = 0;i < 8;i++)
25436     {
25437       for(j = 0;j < 8;j++)
25438       {
25439         instr = ostruct->match | (i << 9) | j;
25440         m68ki_instruction_jump_table[instr] = ostruct->opcode_handler;
25441         m68ki_cycles[instr] = ostruct->cycles * MUL;
25442       }
25443     }
25444     ostruct++;
25445   }
25446   while(ostruct->mask == 0xfff0)
25447   {
25448     for(i = 0;i <= 0x0f;i++)
25449     {
25450       m68ki_instruction_jump_table[ostruct->match | i] = ostruct->opcode_handler;
25451       m68ki_cycles[ostruct->match | i] = ostruct->cycles * MUL;
25452     }
25453     ostruct++;
25454   }
25455   while(ostruct->mask == 0xf1ff)
25456   {
25457     for(i = 0;i <= 0x07;i++)
25458     {
25459       m68ki_instruction_jump_table[ostruct->match | (i << 9)] = ostruct->opcode_handler;
25460       m68ki_cycles[ostruct->match | (i << 9)] = ostruct->cycles * MUL;
25461     }
25462     ostruct++;
25463   }
25464   while(ostruct->mask == 0xfff8)
25465   {
25466     for(i = 0;i <= 0x07;i++)
25467     {
25468       m68ki_instruction_jump_table[ostruct->match | i] = ostruct->opcode_handler;
25469       m68ki_cycles[ostruct->match | i] = ostruct->cycles * MUL;
25470     }
25471     ostruct++;
25472   }
25473   while(ostruct->mask == 0xffff)
25474   {
25475     m68ki_instruction_jump_table[ostruct->match] = ostruct->opcode_handler;
25476     m68ki_cycles[ostruct->match] = ostruct->cycles * MUL;
25477     ostruct++;
25478   }
25479 }
25480 
25481 #endif
25482 
25483 /* ======================================================================== */
25484 /* ============================== END OF FILE ============================= */
25485 /* ======================================================================== */
25486 
25487 
25488