3 /* ======================================================================== */
\r
4 /* ========================= INSTRUCTION HANDLERS ========================= */
\r
5 /* ======================================================================== */
\r
8 void m68k_op_nbcd_8_d(void)
\r
12 uint res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1());
\r
16 FLAG_V = ~res; /* Undefined V behavior */
\r
18 if((res & 0x0f) == 0xa)
\r
19 res = (res & 0xf0) + 0x10;
\r
21 res = MASK_OUT_ABOVE_8(res);
\r
23 FLAG_V &= res; /* Undefined V behavior part II */
\r
25 *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
\r
33 FLAG_V = VFLAG_CLEAR;
\r
34 FLAG_C = CFLAG_CLEAR;
\r
35 FLAG_X = XFLAG_CLEAR;
\r
37 FLAG_N = NFLAG_8(res); /* Undefined N behavior */
\r
41 void m68k_op_nbcd_8_ai(void)
\r
43 uint ea = EA_AY_AI_8();
\r
44 uint dst = m68ki_read_8(ea);
\r
45 uint res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1());
\r
49 FLAG_V = ~res; /* Undefined V behavior */
\r
51 if((res & 0x0f) == 0xa)
\r
52 res = (res & 0xf0) + 0x10;
\r
54 res = MASK_OUT_ABOVE_8(res);
\r
56 FLAG_V &= res; /* Undefined V behavior part II */
\r
58 m68ki_write_8(ea, MASK_OUT_ABOVE_8(res));
\r
66 FLAG_V = VFLAG_CLEAR;
\r
67 FLAG_C = CFLAG_CLEAR;
\r
68 FLAG_X = XFLAG_CLEAR;
\r
70 FLAG_N = NFLAG_8(res); /* Undefined N behavior */
\r
74 void m68k_op_nbcd_8_pi(void)
\r
76 uint ea = EA_AY_PI_8();
\r
77 uint dst = m68ki_read_8(ea);
\r
78 uint res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1());
\r
82 FLAG_V = ~res; /* Undefined V behavior */
\r
84 if((res & 0x0f) == 0xa)
\r
85 res = (res & 0xf0) + 0x10;
\r
87 res = MASK_OUT_ABOVE_8(res);
\r
89 FLAG_V &= res; /* Undefined V behavior part II */
\r
91 m68ki_write_8(ea, MASK_OUT_ABOVE_8(res));
\r
99 FLAG_V = VFLAG_CLEAR;
\r
100 FLAG_C = CFLAG_CLEAR;
\r
101 FLAG_X = XFLAG_CLEAR;
\r
103 FLAG_N = NFLAG_8(res); /* Undefined N behavior */
\r
107 void m68k_op_nbcd_8_pi7(void)
\r
109 uint ea = EA_A7_PI_8();
\r
110 uint dst = m68ki_read_8(ea);
\r
111 uint res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1());
\r
115 FLAG_V = ~res; /* Undefined V behavior */
\r
117 if((res & 0x0f) == 0xa)
\r
118 res = (res & 0xf0) + 0x10;
\r
120 res = MASK_OUT_ABOVE_8(res);
\r
122 FLAG_V &= res; /* Undefined V behavior part II */
\r
124 m68ki_write_8(ea, MASK_OUT_ABOVE_8(res));
\r
127 FLAG_C = CFLAG_SET;
\r
128 FLAG_X = XFLAG_SET;
\r
132 FLAG_V = VFLAG_CLEAR;
\r
133 FLAG_C = CFLAG_CLEAR;
\r
134 FLAG_X = XFLAG_CLEAR;
\r
136 FLAG_N = NFLAG_8(res); /* Undefined N behavior */
\r
140 void m68k_op_nbcd_8_pd(void)
\r
142 uint ea = EA_AY_PD_8();
\r
143 uint dst = m68ki_read_8(ea);
\r
144 uint res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1());
\r
148 FLAG_V = ~res; /* Undefined V behavior */
\r
150 if((res & 0x0f) == 0xa)
\r
151 res = (res & 0xf0) + 0x10;
\r
153 res = MASK_OUT_ABOVE_8(res);
\r
155 FLAG_V &= res; /* Undefined V behavior part II */
\r
157 m68ki_write_8(ea, MASK_OUT_ABOVE_8(res));
\r
160 FLAG_C = CFLAG_SET;
\r
161 FLAG_X = XFLAG_SET;
\r
165 FLAG_V = VFLAG_CLEAR;
\r
166 FLAG_C = CFLAG_CLEAR;
\r
167 FLAG_X = XFLAG_CLEAR;
\r
169 FLAG_N = NFLAG_8(res); /* Undefined N behavior */
\r
173 void m68k_op_nbcd_8_pd7(void)
\r
175 uint ea = EA_A7_PD_8();
\r
176 uint dst = m68ki_read_8(ea);
\r
177 uint res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1());
\r
181 FLAG_V = ~res; /* Undefined V behavior */
\r
183 if((res & 0x0f) == 0xa)
\r
184 res = (res & 0xf0) + 0x10;
\r
186 res = MASK_OUT_ABOVE_8(res);
\r
188 FLAG_V &= res; /* Undefined V behavior part II */
\r
190 m68ki_write_8(ea, MASK_OUT_ABOVE_8(res));
\r
193 FLAG_C = CFLAG_SET;
\r
194 FLAG_X = XFLAG_SET;
\r
198 FLAG_V = VFLAG_CLEAR;
\r
199 FLAG_C = CFLAG_CLEAR;
\r
200 FLAG_X = XFLAG_CLEAR;
\r
202 FLAG_N = NFLAG_8(res); /* Undefined N behavior */
\r
206 void m68k_op_nbcd_8_di(void)
\r
208 uint ea = EA_AY_DI_8();
\r
209 uint dst = m68ki_read_8(ea);
\r
210 uint res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1());
\r
214 FLAG_V = ~res; /* Undefined V behavior */
\r
216 if((res & 0x0f) == 0xa)
\r
217 res = (res & 0xf0) + 0x10;
\r
219 res = MASK_OUT_ABOVE_8(res);
\r
221 FLAG_V &= res; /* Undefined V behavior part II */
\r
223 m68ki_write_8(ea, MASK_OUT_ABOVE_8(res));
\r
226 FLAG_C = CFLAG_SET;
\r
227 FLAG_X = XFLAG_SET;
\r
231 FLAG_V = VFLAG_CLEAR;
\r
232 FLAG_C = CFLAG_CLEAR;
\r
233 FLAG_X = XFLAG_CLEAR;
\r
235 FLAG_N = NFLAG_8(res); /* Undefined N behavior */
\r
239 void m68k_op_nbcd_8_ix(void)
\r
241 uint ea = EA_AY_IX_8();
\r
242 uint dst = m68ki_read_8(ea);
\r
243 uint res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1());
\r
247 FLAG_V = ~res; /* Undefined V behavior */
\r
249 if((res & 0x0f) == 0xa)
\r
250 res = (res & 0xf0) + 0x10;
\r
252 res = MASK_OUT_ABOVE_8(res);
\r
254 FLAG_V &= res; /* Undefined V behavior part II */
\r
256 m68ki_write_8(ea, MASK_OUT_ABOVE_8(res));
\r
259 FLAG_C = CFLAG_SET;
\r
260 FLAG_X = XFLAG_SET;
\r
264 FLAG_V = VFLAG_CLEAR;
\r
265 FLAG_C = CFLAG_CLEAR;
\r
266 FLAG_X = XFLAG_CLEAR;
\r
268 FLAG_N = NFLAG_8(res); /* Undefined N behavior */
\r
272 void m68k_op_nbcd_8_aw(void)
\r
274 uint ea = EA_AW_8();
\r
275 uint dst = m68ki_read_8(ea);
\r
276 uint res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1());
\r
280 FLAG_V = ~res; /* Undefined V behavior */
\r
282 if((res & 0x0f) == 0xa)
\r
283 res = (res & 0xf0) + 0x10;
\r
285 res = MASK_OUT_ABOVE_8(res);
\r
287 FLAG_V &= res; /* Undefined V behavior part II */
\r
289 m68ki_write_8(ea, MASK_OUT_ABOVE_8(res));
\r
292 FLAG_C = CFLAG_SET;
\r
293 FLAG_X = XFLAG_SET;
\r
297 FLAG_V = VFLAG_CLEAR;
\r
298 FLAG_C = CFLAG_CLEAR;
\r
299 FLAG_X = XFLAG_CLEAR;
\r
301 FLAG_N = NFLAG_8(res); /* Undefined N behavior */
\r
305 void m68k_op_nbcd_8_al(void)
\r
307 uint ea = EA_AL_8();
\r
308 uint dst = m68ki_read_8(ea);
\r
309 uint res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1());
\r
313 FLAG_V = ~res; /* Undefined V behavior */
\r
315 if((res & 0x0f) == 0xa)
\r
316 res = (res & 0xf0) + 0x10;
\r
318 res = MASK_OUT_ABOVE_8(res);
\r
320 FLAG_V &= res; /* Undefined V behavior part II */
\r
322 m68ki_write_8(ea, MASK_OUT_ABOVE_8(res));
\r
325 FLAG_C = CFLAG_SET;
\r
326 FLAG_X = XFLAG_SET;
\r
330 FLAG_V = VFLAG_CLEAR;
\r
331 FLAG_C = CFLAG_CLEAR;
\r
332 FLAG_X = XFLAG_CLEAR;
\r
334 FLAG_N = NFLAG_8(res); /* Undefined N behavior */
\r
338 void m68k_op_neg_8_d(void)
\r
341 uint res = 0 - MASK_OUT_ABOVE_8(*r_dst);
\r
343 FLAG_N = NFLAG_8(res);
\r
344 FLAG_C = FLAG_X = CFLAG_8(res);
\r
345 FLAG_V = *r_dst & res;
\r
346 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
348 *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
\r
352 void m68k_op_neg_8_ai(void)
\r
354 uint ea = EA_AY_AI_8();
\r
355 uint src = m68ki_read_8(ea);
\r
356 uint res = 0 - src;
\r
358 FLAG_N = NFLAG_8(res);
\r
359 FLAG_C = FLAG_X = CFLAG_8(res);
\r
360 FLAG_V = src & res;
\r
361 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
363 m68ki_write_8(ea, FLAG_Z);
\r
367 void m68k_op_neg_8_pi(void)
\r
369 uint ea = EA_AY_PI_8();
\r
370 uint src = m68ki_read_8(ea);
\r
371 uint res = 0 - src;
\r
373 FLAG_N = NFLAG_8(res);
\r
374 FLAG_C = FLAG_X = CFLAG_8(res);
\r
375 FLAG_V = src & res;
\r
376 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
378 m68ki_write_8(ea, FLAG_Z);
\r
382 void m68k_op_neg_8_pi7(void)
\r
384 uint ea = EA_A7_PI_8();
\r
385 uint src = m68ki_read_8(ea);
\r
386 uint res = 0 - src;
\r
388 FLAG_N = NFLAG_8(res);
\r
389 FLAG_C = FLAG_X = CFLAG_8(res);
\r
390 FLAG_V = src & res;
\r
391 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
393 m68ki_write_8(ea, FLAG_Z);
\r
397 void m68k_op_neg_8_pd(void)
\r
399 uint ea = EA_AY_PD_8();
\r
400 uint src = m68ki_read_8(ea);
\r
401 uint res = 0 - src;
\r
403 FLAG_N = NFLAG_8(res);
\r
404 FLAG_C = FLAG_X = CFLAG_8(res);
\r
405 FLAG_V = src & res;
\r
406 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
408 m68ki_write_8(ea, FLAG_Z);
\r
412 void m68k_op_neg_8_pd7(void)
\r
414 uint ea = EA_A7_PD_8();
\r
415 uint src = m68ki_read_8(ea);
\r
416 uint res = 0 - src;
\r
418 FLAG_N = NFLAG_8(res);
\r
419 FLAG_C = FLAG_X = CFLAG_8(res);
\r
420 FLAG_V = src & res;
\r
421 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
423 m68ki_write_8(ea, FLAG_Z);
\r
427 void m68k_op_neg_8_di(void)
\r
429 uint ea = EA_AY_DI_8();
\r
430 uint src = m68ki_read_8(ea);
\r
431 uint res = 0 - src;
\r
433 FLAG_N = NFLAG_8(res);
\r
434 FLAG_C = FLAG_X = CFLAG_8(res);
\r
435 FLAG_V = src & res;
\r
436 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
438 m68ki_write_8(ea, FLAG_Z);
\r
442 void m68k_op_neg_8_ix(void)
\r
444 uint ea = EA_AY_IX_8();
\r
445 uint src = m68ki_read_8(ea);
\r
446 uint res = 0 - src;
\r
448 FLAG_N = NFLAG_8(res);
\r
449 FLAG_C = FLAG_X = CFLAG_8(res);
\r
450 FLAG_V = src & res;
\r
451 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
453 m68ki_write_8(ea, FLAG_Z);
\r
457 void m68k_op_neg_8_aw(void)
\r
459 uint ea = EA_AW_8();
\r
460 uint src = m68ki_read_8(ea);
\r
461 uint res = 0 - src;
\r
463 FLAG_N = NFLAG_8(res);
\r
464 FLAG_C = FLAG_X = CFLAG_8(res);
\r
465 FLAG_V = src & res;
\r
466 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
468 m68ki_write_8(ea, FLAG_Z);
\r
472 void m68k_op_neg_8_al(void)
\r
474 uint ea = EA_AL_8();
\r
475 uint src = m68ki_read_8(ea);
\r
476 uint res = 0 - src;
\r
478 FLAG_N = NFLAG_8(res);
\r
479 FLAG_C = FLAG_X = CFLAG_8(res);
\r
480 FLAG_V = src & res;
\r
481 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
483 m68ki_write_8(ea, FLAG_Z);
\r
487 void m68k_op_neg_16_d(void)
\r
490 uint res = 0 - MASK_OUT_ABOVE_16(*r_dst);
\r
492 FLAG_N = NFLAG_16(res);
\r
493 FLAG_C = FLAG_X = CFLAG_16(res);
\r
494 FLAG_V = (*r_dst & res)>>8;
\r
495 FLAG_Z = MASK_OUT_ABOVE_16(res);
\r
497 *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
\r
501 void m68k_op_neg_16_ai(void)
\r
503 uint ea = EA_AY_AI_16();
\r
504 uint src = m68ki_read_16(ea);
\r
505 uint res = 0 - src;
\r
507 FLAG_N = NFLAG_16(res);
\r
508 FLAG_C = FLAG_X = CFLAG_16(res);
\r
509 FLAG_V = (src & res)>>8;
\r
510 FLAG_Z = MASK_OUT_ABOVE_16(res);
\r
512 m68ki_write_16(ea, FLAG_Z);
\r
516 void m68k_op_neg_16_pi(void)
\r
518 uint ea = EA_AY_PI_16();
\r
519 uint src = m68ki_read_16(ea);
\r
520 uint res = 0 - src;
\r
522 FLAG_N = NFLAG_16(res);
\r
523 FLAG_C = FLAG_X = CFLAG_16(res);
\r
524 FLAG_V = (src & res)>>8;
\r
525 FLAG_Z = MASK_OUT_ABOVE_16(res);
\r
527 m68ki_write_16(ea, FLAG_Z);
\r
531 void m68k_op_neg_16_pd(void)
\r
533 uint ea = EA_AY_PD_16();
\r
534 uint src = m68ki_read_16(ea);
\r
535 uint res = 0 - src;
\r
537 FLAG_N = NFLAG_16(res);
\r
538 FLAG_C = FLAG_X = CFLAG_16(res);
\r
539 FLAG_V = (src & res)>>8;
\r
540 FLAG_Z = MASK_OUT_ABOVE_16(res);
\r
542 m68ki_write_16(ea, FLAG_Z);
\r
546 void m68k_op_neg_16_di(void)
\r
548 uint ea = EA_AY_DI_16();
\r
549 uint src = m68ki_read_16(ea);
\r
550 uint res = 0 - src;
\r
552 FLAG_N = NFLAG_16(res);
\r
553 FLAG_C = FLAG_X = CFLAG_16(res);
\r
554 FLAG_V = (src & res)>>8;
\r
555 FLAG_Z = MASK_OUT_ABOVE_16(res);
\r
557 m68ki_write_16(ea, FLAG_Z);
\r
561 void m68k_op_neg_16_ix(void)
\r
563 uint ea = EA_AY_IX_16();
\r
564 uint src = m68ki_read_16(ea);
\r
565 uint res = 0 - src;
\r
567 FLAG_N = NFLAG_16(res);
\r
568 FLAG_C = FLAG_X = CFLAG_16(res);
\r
569 FLAG_V = (src & res)>>8;
\r
570 FLAG_Z = MASK_OUT_ABOVE_16(res);
\r
572 m68ki_write_16(ea, FLAG_Z);
\r
576 void m68k_op_neg_16_aw(void)
\r
578 uint ea = EA_AW_16();
\r
579 uint src = m68ki_read_16(ea);
\r
580 uint res = 0 - src;
\r
582 FLAG_N = NFLAG_16(res);
\r
583 FLAG_C = FLAG_X = CFLAG_16(res);
\r
584 FLAG_V = (src & res)>>8;
\r
585 FLAG_Z = MASK_OUT_ABOVE_16(res);
\r
587 m68ki_write_16(ea, FLAG_Z);
\r
591 void m68k_op_neg_16_al(void)
\r
593 uint ea = EA_AL_16();
\r
594 uint src = m68ki_read_16(ea);
\r
595 uint res = 0 - src;
\r
597 FLAG_N = NFLAG_16(res);
\r
598 FLAG_C = FLAG_X = CFLAG_16(res);
\r
599 FLAG_V = (src & res)>>8;
\r
600 FLAG_Z = MASK_OUT_ABOVE_16(res);
\r
602 m68ki_write_16(ea, FLAG_Z);
\r
606 void m68k_op_neg_32_d(void)
\r
609 uint res = 0 - *r_dst;
\r
611 FLAG_N = NFLAG_32(res);
\r
612 FLAG_C = FLAG_X = CFLAG_SUB_32(*r_dst, 0, res);
\r
613 FLAG_V = (*r_dst & res)>>24;
\r
614 FLAG_Z = MASK_OUT_ABOVE_32(res);
\r
620 void m68k_op_neg_32_ai(void)
\r
622 uint ea = EA_AY_AI_32();
\r
623 uint src = m68ki_read_32(ea);
\r
624 uint res = 0 - src;
\r
626 FLAG_N = NFLAG_32(res);
\r
627 FLAG_C = FLAG_X = CFLAG_SUB_32(src, 0, res);
\r
628 FLAG_V = (src & res)>>24;
\r
629 FLAG_Z = MASK_OUT_ABOVE_32(res);
\r
631 m68ki_write_32(ea, FLAG_Z);
\r
635 void m68k_op_neg_32_pi(void)
\r
637 uint ea = EA_AY_PI_32();
\r
638 uint src = m68ki_read_32(ea);
\r
639 uint res = 0 - src;
\r
641 FLAG_N = NFLAG_32(res);
\r
642 FLAG_C = FLAG_X = CFLAG_SUB_32(src, 0, res);
\r
643 FLAG_V = (src & res)>>24;
\r
644 FLAG_Z = MASK_OUT_ABOVE_32(res);
\r
646 m68ki_write_32(ea, FLAG_Z);
\r
650 void m68k_op_neg_32_pd(void)
\r
652 uint ea = EA_AY_PD_32();
\r
653 uint src = m68ki_read_32(ea);
\r
654 uint res = 0 - src;
\r
656 FLAG_N = NFLAG_32(res);
\r
657 FLAG_C = FLAG_X = CFLAG_SUB_32(src, 0, res);
\r
658 FLAG_V = (src & res)>>24;
\r
659 FLAG_Z = MASK_OUT_ABOVE_32(res);
\r
661 m68ki_write_32(ea, FLAG_Z);
\r
665 void m68k_op_neg_32_di(void)
\r
667 uint ea = EA_AY_DI_32();
\r
668 uint src = m68ki_read_32(ea);
\r
669 uint res = 0 - src;
\r
671 FLAG_N = NFLAG_32(res);
\r
672 FLAG_C = FLAG_X = CFLAG_SUB_32(src, 0, res);
\r
673 FLAG_V = (src & res)>>24;
\r
674 FLAG_Z = MASK_OUT_ABOVE_32(res);
\r
676 m68ki_write_32(ea, FLAG_Z);
\r
680 void m68k_op_neg_32_ix(void)
\r
682 uint ea = EA_AY_IX_32();
\r
683 uint src = m68ki_read_32(ea);
\r
684 uint res = 0 - src;
\r
686 FLAG_N = NFLAG_32(res);
\r
687 FLAG_C = FLAG_X = CFLAG_SUB_32(src, 0, res);
\r
688 FLAG_V = (src & res)>>24;
\r
689 FLAG_Z = MASK_OUT_ABOVE_32(res);
\r
691 m68ki_write_32(ea, FLAG_Z);
\r
695 void m68k_op_neg_32_aw(void)
\r
697 uint ea = EA_AW_32();
\r
698 uint src = m68ki_read_32(ea);
\r
699 uint res = 0 - src;
\r
701 FLAG_N = NFLAG_32(res);
\r
702 FLAG_C = FLAG_X = CFLAG_SUB_32(src, 0, res);
\r
703 FLAG_V = (src & res)>>24;
\r
704 FLAG_Z = MASK_OUT_ABOVE_32(res);
\r
706 m68ki_write_32(ea, FLAG_Z);
\r
710 void m68k_op_neg_32_al(void)
\r
712 uint ea = EA_AL_32();
\r
713 uint src = m68ki_read_32(ea);
\r
714 uint res = 0 - src;
\r
716 FLAG_N = NFLAG_32(res);
\r
717 FLAG_C = FLAG_X = CFLAG_SUB_32(src, 0, res);
\r
718 FLAG_V = (src & res)>>24;
\r
719 FLAG_Z = MASK_OUT_ABOVE_32(res);
\r
721 m68ki_write_32(ea, FLAG_Z);
\r
725 void m68k_op_negx_8_d(void)
\r
728 uint res = 0 - MASK_OUT_ABOVE_8(*r_dst) - XFLAG_AS_1();
\r
730 FLAG_N = NFLAG_8(res);
\r
731 FLAG_X = FLAG_C = CFLAG_8(res);
\r
732 FLAG_V = *r_dst & res;
\r
734 res = MASK_OUT_ABOVE_8(res);
\r
737 *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
\r
741 void m68k_op_negx_8_ai(void)
\r
743 uint ea = EA_AY_AI_8();
\r
744 uint src = m68ki_read_8(ea);
\r
745 uint res = 0 - src - XFLAG_AS_1();
\r
747 FLAG_N = NFLAG_8(res);
\r
748 FLAG_X = FLAG_C = CFLAG_8(res);
\r
749 FLAG_V = src & res;
\r
751 res = MASK_OUT_ABOVE_8(res);
\r
754 m68ki_write_8(ea, res);
\r
758 void m68k_op_negx_8_pi(void)
\r
760 uint ea = EA_AY_PI_8();
\r
761 uint src = m68ki_read_8(ea);
\r
762 uint res = 0 - src - XFLAG_AS_1();
\r
764 FLAG_N = NFLAG_8(res);
\r
765 FLAG_X = FLAG_C = CFLAG_8(res);
\r
766 FLAG_V = src & res;
\r
768 res = MASK_OUT_ABOVE_8(res);
\r
771 m68ki_write_8(ea, res);
\r
775 void m68k_op_negx_8_pi7(void)
\r
777 uint ea = EA_A7_PI_8();
\r
778 uint src = m68ki_read_8(ea);
\r
779 uint res = 0 - src - XFLAG_AS_1();
\r
781 FLAG_N = NFLAG_8(res);
\r
782 FLAG_X = FLAG_C = CFLAG_8(res);
\r
783 FLAG_V = src & res;
\r
785 res = MASK_OUT_ABOVE_8(res);
\r
788 m68ki_write_8(ea, res);
\r
792 void m68k_op_negx_8_pd(void)
\r
794 uint ea = EA_AY_PD_8();
\r
795 uint src = m68ki_read_8(ea);
\r
796 uint res = 0 - src - XFLAG_AS_1();
\r
798 FLAG_N = NFLAG_8(res);
\r
799 FLAG_X = FLAG_C = CFLAG_8(res);
\r
800 FLAG_V = src & res;
\r
802 res = MASK_OUT_ABOVE_8(res);
\r
805 m68ki_write_8(ea, res);
\r
809 void m68k_op_negx_8_pd7(void)
\r
811 uint ea = EA_A7_PD_8();
\r
812 uint src = m68ki_read_8(ea);
\r
813 uint res = 0 - src - XFLAG_AS_1();
\r
815 FLAG_N = NFLAG_8(res);
\r
816 FLAG_X = FLAG_C = CFLAG_8(res);
\r
817 FLAG_V = src & res;
\r
819 res = MASK_OUT_ABOVE_8(res);
\r
822 m68ki_write_8(ea, res);
\r
826 void m68k_op_negx_8_di(void)
\r
828 uint ea = EA_AY_DI_8();
\r
829 uint src = m68ki_read_8(ea);
\r
830 uint res = 0 - src - XFLAG_AS_1();
\r
832 FLAG_N = NFLAG_8(res);
\r
833 FLAG_X = FLAG_C = CFLAG_8(res);
\r
834 FLAG_V = src & res;
\r
836 res = MASK_OUT_ABOVE_8(res);
\r
839 m68ki_write_8(ea, res);
\r
843 void m68k_op_negx_8_ix(void)
\r
845 uint ea = EA_AY_IX_8();
\r
846 uint src = m68ki_read_8(ea);
\r
847 uint res = 0 - src - XFLAG_AS_1();
\r
849 FLAG_N = NFLAG_8(res);
\r
850 FLAG_X = FLAG_C = CFLAG_8(res);
\r
851 FLAG_V = src & res;
\r
853 res = MASK_OUT_ABOVE_8(res);
\r
856 m68ki_write_8(ea, res);
\r
860 void m68k_op_negx_8_aw(void)
\r
862 uint ea = EA_AW_8();
\r
863 uint src = m68ki_read_8(ea);
\r
864 uint res = 0 - src - XFLAG_AS_1();
\r
866 FLAG_N = NFLAG_8(res);
\r
867 FLAG_X = FLAG_C = CFLAG_8(res);
\r
868 FLAG_V = src & res;
\r
870 res = MASK_OUT_ABOVE_8(res);
\r
873 m68ki_write_8(ea, res);
\r
877 void m68k_op_negx_8_al(void)
\r
879 uint ea = EA_AL_8();
\r
880 uint src = m68ki_read_8(ea);
\r
881 uint res = 0 - src - XFLAG_AS_1();
\r
883 FLAG_N = NFLAG_8(res);
\r
884 FLAG_X = FLAG_C = CFLAG_8(res);
\r
885 FLAG_V = src & res;
\r
887 res = MASK_OUT_ABOVE_8(res);
\r
890 m68ki_write_8(ea, res);
\r
894 void m68k_op_negx_16_d(void)
\r
897 uint res = 0 - MASK_OUT_ABOVE_16(*r_dst) - XFLAG_AS_1();
\r
899 FLAG_N = NFLAG_16(res);
\r
900 FLAG_X = FLAG_C = CFLAG_16(res);
\r
901 FLAG_V = (*r_dst & res)>>8;
\r
903 res = MASK_OUT_ABOVE_16(res);
\r
906 *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
\r
910 void m68k_op_negx_16_ai(void)
\r
912 uint ea = EA_AY_AI_16();
\r
913 uint src = m68ki_read_16(ea);
\r
914 uint res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1();
\r
916 FLAG_N = NFLAG_16(res);
\r
917 FLAG_X = FLAG_C = CFLAG_16(res);
\r
918 FLAG_V = (src & res)>>8;
\r
920 res = MASK_OUT_ABOVE_16(res);
\r
923 m68ki_write_16(ea, res);
\r
927 void m68k_op_negx_16_pi(void)
\r
929 uint ea = EA_AY_PI_16();
\r
930 uint src = m68ki_read_16(ea);
\r
931 uint res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1();
\r
933 FLAG_N = NFLAG_16(res);
\r
934 FLAG_X = FLAG_C = CFLAG_16(res);
\r
935 FLAG_V = (src & res)>>8;
\r
937 res = MASK_OUT_ABOVE_16(res);
\r
940 m68ki_write_16(ea, res);
\r
944 void m68k_op_negx_16_pd(void)
\r
946 uint ea = EA_AY_PD_16();
\r
947 uint src = m68ki_read_16(ea);
\r
948 uint res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1();
\r
950 FLAG_N = NFLAG_16(res);
\r
951 FLAG_X = FLAG_C = CFLAG_16(res);
\r
952 FLAG_V = (src & res)>>8;
\r
954 res = MASK_OUT_ABOVE_16(res);
\r
957 m68ki_write_16(ea, res);
\r
961 void m68k_op_negx_16_di(void)
\r
963 uint ea = EA_AY_DI_16();
\r
964 uint src = m68ki_read_16(ea);
\r
965 uint res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1();
\r
967 FLAG_N = NFLAG_16(res);
\r
968 FLAG_X = FLAG_C = CFLAG_16(res);
\r
969 FLAG_V = (src & res)>>8;
\r
971 res = MASK_OUT_ABOVE_16(res);
\r
974 m68ki_write_16(ea, res);
\r
978 void m68k_op_negx_16_ix(void)
\r
980 uint ea = EA_AY_IX_16();
\r
981 uint src = m68ki_read_16(ea);
\r
982 uint res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1();
\r
984 FLAG_N = NFLAG_16(res);
\r
985 FLAG_X = FLAG_C = CFLAG_16(res);
\r
986 FLAG_V = (src & res)>>8;
\r
988 res = MASK_OUT_ABOVE_16(res);
\r
991 m68ki_write_16(ea, res);
\r
995 void m68k_op_negx_16_aw(void)
\r
997 uint ea = EA_AW_16();
\r
998 uint src = m68ki_read_16(ea);
\r
999 uint res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1();
\r
1001 FLAG_N = NFLAG_16(res);
\r
1002 FLAG_X = FLAG_C = CFLAG_16(res);
\r
1003 FLAG_V = (src & res)>>8;
\r
1005 res = MASK_OUT_ABOVE_16(res);
\r
1008 m68ki_write_16(ea, res);
\r
1012 void m68k_op_negx_16_al(void)
\r
1014 uint ea = EA_AL_16();
\r
1015 uint src = m68ki_read_16(ea);
\r
1016 uint res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1();
\r
1018 FLAG_N = NFLAG_16(res);
\r
1019 FLAG_X = FLAG_C = CFLAG_16(res);
\r
1020 FLAG_V = (src & res)>>8;
\r
1022 res = MASK_OUT_ABOVE_16(res);
\r
1025 m68ki_write_16(ea, res);
\r
1029 void m68k_op_negx_32_d(void)
\r
1031 uint* r_dst = &DY;
\r
1032 uint res = 0 - MASK_OUT_ABOVE_32(*r_dst) - XFLAG_AS_1();
\r
1034 FLAG_N = NFLAG_32(res);
\r
1035 FLAG_X = FLAG_C = CFLAG_SUB_32(*r_dst, 0, res);
\r
1036 FLAG_V = (*r_dst & res)>>24;
\r
1038 res = MASK_OUT_ABOVE_32(res);
\r
1045 void m68k_op_negx_32_ai(void)
\r
1047 uint ea = EA_AY_AI_32();
\r
1048 uint src = m68ki_read_32(ea);
\r
1049 uint res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1();
\r
1051 FLAG_N = NFLAG_32(res);
\r
1052 FLAG_X = FLAG_C = CFLAG_SUB_32(src, 0, res);
\r
1053 FLAG_V = (src & res)>>24;
\r
1055 res = MASK_OUT_ABOVE_32(res);
\r
1058 m68ki_write_32(ea, res);
\r
1062 void m68k_op_negx_32_pi(void)
\r
1064 uint ea = EA_AY_PI_32();
\r
1065 uint src = m68ki_read_32(ea);
\r
1066 uint res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1();
\r
1068 FLAG_N = NFLAG_32(res);
\r
1069 FLAG_X = FLAG_C = CFLAG_SUB_32(src, 0, res);
\r
1070 FLAG_V = (src & res)>>24;
\r
1072 res = MASK_OUT_ABOVE_32(res);
\r
1075 m68ki_write_32(ea, res);
\r
1079 void m68k_op_negx_32_pd(void)
\r
1081 uint ea = EA_AY_PD_32();
\r
1082 uint src = m68ki_read_32(ea);
\r
1083 uint res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1();
\r
1085 FLAG_N = NFLAG_32(res);
\r
1086 FLAG_X = FLAG_C = CFLAG_SUB_32(src, 0, res);
\r
1087 FLAG_V = (src & res)>>24;
\r
1089 res = MASK_OUT_ABOVE_32(res);
\r
1092 m68ki_write_32(ea, res);
\r
1096 void m68k_op_negx_32_di(void)
\r
1098 uint ea = EA_AY_DI_32();
\r
1099 uint src = m68ki_read_32(ea);
\r
1100 uint res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1();
\r
1102 FLAG_N = NFLAG_32(res);
\r
1103 FLAG_X = FLAG_C = CFLAG_SUB_32(src, 0, res);
\r
1104 FLAG_V = (src & res)>>24;
\r
1106 res = MASK_OUT_ABOVE_32(res);
\r
1109 m68ki_write_32(ea, res);
\r
1113 void m68k_op_negx_32_ix(void)
\r
1115 uint ea = EA_AY_IX_32();
\r
1116 uint src = m68ki_read_32(ea);
\r
1117 uint res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1();
\r
1119 FLAG_N = NFLAG_32(res);
\r
1120 FLAG_X = FLAG_C = CFLAG_SUB_32(src, 0, res);
\r
1121 FLAG_V = (src & res)>>24;
\r
1123 res = MASK_OUT_ABOVE_32(res);
\r
1126 m68ki_write_32(ea, res);
\r
1130 void m68k_op_negx_32_aw(void)
\r
1132 uint ea = EA_AW_32();
\r
1133 uint src = m68ki_read_32(ea);
\r
1134 uint res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1();
\r
1136 FLAG_N = NFLAG_32(res);
\r
1137 FLAG_X = FLAG_C = CFLAG_SUB_32(src, 0, res);
\r
1138 FLAG_V = (src & res)>>24;
\r
1140 res = MASK_OUT_ABOVE_32(res);
\r
1143 m68ki_write_32(ea, res);
\r
1147 void m68k_op_negx_32_al(void)
\r
1149 uint ea = EA_AL_32();
\r
1150 uint src = m68ki_read_32(ea);
\r
1151 uint res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1();
\r
1153 FLAG_N = NFLAG_32(res);
\r
1154 FLAG_X = FLAG_C = CFLAG_SUB_32(src, 0, res);
\r
1155 FLAG_V = (src & res)>>24;
\r
1157 res = MASK_OUT_ABOVE_32(res);
\r
1160 m68ki_write_32(ea, res);
\r
1164 void m68k_op_nop(void)
\r
1166 m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
\r
1170 void m68k_op_not_8_d(void)
\r
1172 uint* r_dst = &DY;
\r
1173 uint res = MASK_OUT_ABOVE_8(~*r_dst);
\r
1175 *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
\r
1177 FLAG_N = NFLAG_8(res);
\r
1179 FLAG_C = CFLAG_CLEAR;
\r
1180 FLAG_V = VFLAG_CLEAR;
\r
1184 void m68k_op_not_8_ai(void)
\r
1186 uint ea = EA_AY_AI_8();
\r
1187 uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea));
\r
1189 m68ki_write_8(ea, res);
\r
1191 FLAG_N = NFLAG_8(res);
\r
1193 FLAG_C = CFLAG_CLEAR;
\r
1194 FLAG_V = VFLAG_CLEAR;
\r
1198 void m68k_op_not_8_pi(void)
\r
1200 uint ea = EA_AY_PI_8();
\r
1201 uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea));
\r
1203 m68ki_write_8(ea, res);
\r
1205 FLAG_N = NFLAG_8(res);
\r
1207 FLAG_C = CFLAG_CLEAR;
\r
1208 FLAG_V = VFLAG_CLEAR;
\r
1212 void m68k_op_not_8_pi7(void)
\r
1214 uint ea = EA_A7_PI_8();
\r
1215 uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea));
\r
1217 m68ki_write_8(ea, res);
\r
1219 FLAG_N = NFLAG_8(res);
\r
1221 FLAG_C = CFLAG_CLEAR;
\r
1222 FLAG_V = VFLAG_CLEAR;
\r
1226 void m68k_op_not_8_pd(void)
\r
1228 uint ea = EA_AY_PD_8();
\r
1229 uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea));
\r
1231 m68ki_write_8(ea, res);
\r
1233 FLAG_N = NFLAG_8(res);
\r
1235 FLAG_C = CFLAG_CLEAR;
\r
1236 FLAG_V = VFLAG_CLEAR;
\r
1240 void m68k_op_not_8_pd7(void)
\r
1242 uint ea = EA_A7_PD_8();
\r
1243 uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea));
\r
1245 m68ki_write_8(ea, res);
\r
1247 FLAG_N = NFLAG_8(res);
\r
1249 FLAG_C = CFLAG_CLEAR;
\r
1250 FLAG_V = VFLAG_CLEAR;
\r
1254 void m68k_op_not_8_di(void)
\r
1256 uint ea = EA_AY_DI_8();
\r
1257 uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea));
\r
1259 m68ki_write_8(ea, res);
\r
1261 FLAG_N = NFLAG_8(res);
\r
1263 FLAG_C = CFLAG_CLEAR;
\r
1264 FLAG_V = VFLAG_CLEAR;
\r
1268 void m68k_op_not_8_ix(void)
\r
1270 uint ea = EA_AY_IX_8();
\r
1271 uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea));
\r
1273 m68ki_write_8(ea, res);
\r
1275 FLAG_N = NFLAG_8(res);
\r
1277 FLAG_C = CFLAG_CLEAR;
\r
1278 FLAG_V = VFLAG_CLEAR;
\r
1282 void m68k_op_not_8_aw(void)
\r
1284 uint ea = EA_AW_8();
\r
1285 uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea));
\r
1287 m68ki_write_8(ea, res);
\r
1289 FLAG_N = NFLAG_8(res);
\r
1291 FLAG_C = CFLAG_CLEAR;
\r
1292 FLAG_V = VFLAG_CLEAR;
\r
1296 void m68k_op_not_8_al(void)
\r
1298 uint ea = EA_AL_8();
\r
1299 uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea));
\r
1301 m68ki_write_8(ea, res);
\r
1303 FLAG_N = NFLAG_8(res);
\r
1305 FLAG_C = CFLAG_CLEAR;
\r
1306 FLAG_V = VFLAG_CLEAR;
\r
1310 void m68k_op_not_16_d(void)
\r
1312 uint* r_dst = &DY;
\r
1313 uint res = MASK_OUT_ABOVE_16(~*r_dst);
\r
1315 *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
\r
1317 FLAG_N = NFLAG_16(res);
\r
1319 FLAG_C = CFLAG_CLEAR;
\r
1320 FLAG_V = VFLAG_CLEAR;
\r
1324 void m68k_op_not_16_ai(void)
\r
1326 uint ea = EA_AY_AI_16();
\r
1327 uint res = MASK_OUT_ABOVE_16(~m68ki_read_16(ea));
\r
1329 m68ki_write_16(ea, res);
\r
1331 FLAG_N = NFLAG_16(res);
\r
1333 FLAG_C = CFLAG_CLEAR;
\r
1334 FLAG_V = VFLAG_CLEAR;
\r
1338 void m68k_op_not_16_pi(void)
\r
1340 uint ea = EA_AY_PI_16();
\r
1341 uint res = MASK_OUT_ABOVE_16(~m68ki_read_16(ea));
\r
1343 m68ki_write_16(ea, res);
\r
1345 FLAG_N = NFLAG_16(res);
\r
1347 FLAG_C = CFLAG_CLEAR;
\r
1348 FLAG_V = VFLAG_CLEAR;
\r
1352 void m68k_op_not_16_pd(void)
\r
1354 uint ea = EA_AY_PD_16();
\r
1355 uint res = MASK_OUT_ABOVE_16(~m68ki_read_16(ea));
\r
1357 m68ki_write_16(ea, res);
\r
1359 FLAG_N = NFLAG_16(res);
\r
1361 FLAG_C = CFLAG_CLEAR;
\r
1362 FLAG_V = VFLAG_CLEAR;
\r
1366 void m68k_op_not_16_di(void)
\r
1368 uint ea = EA_AY_DI_16();
\r
1369 uint res = MASK_OUT_ABOVE_16(~m68ki_read_16(ea));
\r
1371 m68ki_write_16(ea, res);
\r
1373 FLAG_N = NFLAG_16(res);
\r
1375 FLAG_C = CFLAG_CLEAR;
\r
1376 FLAG_V = VFLAG_CLEAR;
\r
1380 void m68k_op_not_16_ix(void)
\r
1382 uint ea = EA_AY_IX_16();
\r
1383 uint res = MASK_OUT_ABOVE_16(~m68ki_read_16(ea));
\r
1385 m68ki_write_16(ea, res);
\r
1387 FLAG_N = NFLAG_16(res);
\r
1389 FLAG_C = CFLAG_CLEAR;
\r
1390 FLAG_V = VFLAG_CLEAR;
\r
1394 void m68k_op_not_16_aw(void)
\r
1396 uint ea = EA_AW_16();
\r
1397 uint res = MASK_OUT_ABOVE_16(~m68ki_read_16(ea));
\r
1399 m68ki_write_16(ea, res);
\r
1401 FLAG_N = NFLAG_16(res);
\r
1403 FLAG_C = CFLAG_CLEAR;
\r
1404 FLAG_V = VFLAG_CLEAR;
\r
1408 void m68k_op_not_16_al(void)
\r
1410 uint ea = EA_AL_16();
\r
1411 uint res = MASK_OUT_ABOVE_16(~m68ki_read_16(ea));
\r
1413 m68ki_write_16(ea, res);
\r
1415 FLAG_N = NFLAG_16(res);
\r
1417 FLAG_C = CFLAG_CLEAR;
\r
1418 FLAG_V = VFLAG_CLEAR;
\r
1422 void m68k_op_not_32_d(void)
\r
1424 uint* r_dst = &DY;
\r
1425 uint res = *r_dst = MASK_OUT_ABOVE_32(~*r_dst);
\r
1427 FLAG_N = NFLAG_32(res);
\r
1429 FLAG_C = CFLAG_CLEAR;
\r
1430 FLAG_V = VFLAG_CLEAR;
\r
1434 void m68k_op_not_32_ai(void)
\r
1436 uint ea = EA_AY_AI_32();
\r
1437 uint res = MASK_OUT_ABOVE_32(~m68ki_read_32(ea));
\r
1439 m68ki_write_32(ea, res);
\r
1441 FLAG_N = NFLAG_32(res);
\r
1443 FLAG_C = CFLAG_CLEAR;
\r
1444 FLAG_V = VFLAG_CLEAR;
\r
1448 void m68k_op_not_32_pi(void)
\r
1450 uint ea = EA_AY_PI_32();
\r
1451 uint res = MASK_OUT_ABOVE_32(~m68ki_read_32(ea));
\r
1453 m68ki_write_32(ea, res);
\r
1455 FLAG_N = NFLAG_32(res);
\r
1457 FLAG_C = CFLAG_CLEAR;
\r
1458 FLAG_V = VFLAG_CLEAR;
\r
1462 void m68k_op_not_32_pd(void)
\r
1464 uint ea = EA_AY_PD_32();
\r
1465 uint res = MASK_OUT_ABOVE_32(~m68ki_read_32(ea));
\r
1467 m68ki_write_32(ea, res);
\r
1469 FLAG_N = NFLAG_32(res);
\r
1471 FLAG_C = CFLAG_CLEAR;
\r
1472 FLAG_V = VFLAG_CLEAR;
\r
1476 void m68k_op_not_32_di(void)
\r
1478 uint ea = EA_AY_DI_32();
\r
1479 uint res = MASK_OUT_ABOVE_32(~m68ki_read_32(ea));
\r
1481 m68ki_write_32(ea, res);
\r
1483 FLAG_N = NFLAG_32(res);
\r
1485 FLAG_C = CFLAG_CLEAR;
\r
1486 FLAG_V = VFLAG_CLEAR;
\r
1490 void m68k_op_not_32_ix(void)
\r
1492 uint ea = EA_AY_IX_32();
\r
1493 uint res = MASK_OUT_ABOVE_32(~m68ki_read_32(ea));
\r
1495 m68ki_write_32(ea, res);
\r
1497 FLAG_N = NFLAG_32(res);
\r
1499 FLAG_C = CFLAG_CLEAR;
\r
1500 FLAG_V = VFLAG_CLEAR;
\r
1504 void m68k_op_not_32_aw(void)
\r
1506 uint ea = EA_AW_32();
\r
1507 uint res = MASK_OUT_ABOVE_32(~m68ki_read_32(ea));
\r
1509 m68ki_write_32(ea, res);
\r
1511 FLAG_N = NFLAG_32(res);
\r
1513 FLAG_C = CFLAG_CLEAR;
\r
1514 FLAG_V = VFLAG_CLEAR;
\r
1518 void m68k_op_not_32_al(void)
\r
1520 uint ea = EA_AL_32();
\r
1521 uint res = MASK_OUT_ABOVE_32(~m68ki_read_32(ea));
\r
1523 m68ki_write_32(ea, res);
\r
1525 FLAG_N = NFLAG_32(res);
\r
1527 FLAG_C = CFLAG_CLEAR;
\r
1528 FLAG_V = VFLAG_CLEAR;
\r
1532 void m68k_op_or_8_er_d(void)
\r
1534 uint res = MASK_OUT_ABOVE_8((DX |= MASK_OUT_ABOVE_8(DY)));
\r
1536 FLAG_N = NFLAG_8(res);
\r
1538 FLAG_C = CFLAG_CLEAR;
\r
1539 FLAG_V = VFLAG_CLEAR;
\r
1543 void m68k_op_or_8_er_ai(void)
\r
1545 uint res = MASK_OUT_ABOVE_8((DX |= OPER_AY_AI_8()));
\r
1547 FLAG_N = NFLAG_8(res);
\r
1549 FLAG_C = CFLAG_CLEAR;
\r
1550 FLAG_V = VFLAG_CLEAR;
\r
1554 void m68k_op_or_8_er_pi(void)
\r
1556 uint res = MASK_OUT_ABOVE_8((DX |= OPER_AY_PI_8()));
\r
1558 FLAG_N = NFLAG_8(res);
\r
1560 FLAG_C = CFLAG_CLEAR;
\r
1561 FLAG_V = VFLAG_CLEAR;
\r
1565 void m68k_op_or_8_er_pi7(void)
\r
1567 uint res = MASK_OUT_ABOVE_8((DX |= OPER_A7_PI_8()));
\r
1569 FLAG_N = NFLAG_8(res);
\r
1571 FLAG_C = CFLAG_CLEAR;
\r
1572 FLAG_V = VFLAG_CLEAR;
\r
1576 void m68k_op_or_8_er_pd(void)
\r
1578 uint res = MASK_OUT_ABOVE_8((DX |= OPER_AY_PD_8()));
\r
1580 FLAG_N = NFLAG_8(res);
\r
1582 FLAG_C = CFLAG_CLEAR;
\r
1583 FLAG_V = VFLAG_CLEAR;
\r
1587 void m68k_op_or_8_er_pd7(void)
\r
1589 uint res = MASK_OUT_ABOVE_8((DX |= OPER_A7_PD_8()));
\r
1591 FLAG_N = NFLAG_8(res);
\r
1593 FLAG_C = CFLAG_CLEAR;
\r
1594 FLAG_V = VFLAG_CLEAR;
\r
1598 void m68k_op_or_8_er_di(void)
\r
1600 uint res = MASK_OUT_ABOVE_8((DX |= OPER_AY_DI_8()));
\r
1602 FLAG_N = NFLAG_8(res);
\r
1604 FLAG_C = CFLAG_CLEAR;
\r
1605 FLAG_V = VFLAG_CLEAR;
\r
1609 void m68k_op_or_8_er_ix(void)
\r
1611 uint res = MASK_OUT_ABOVE_8((DX |= OPER_AY_IX_8()));
\r
1613 FLAG_N = NFLAG_8(res);
\r
1615 FLAG_C = CFLAG_CLEAR;
\r
1616 FLAG_V = VFLAG_CLEAR;
\r
1620 void m68k_op_or_8_er_aw(void)
\r
1622 uint res = MASK_OUT_ABOVE_8((DX |= OPER_AW_8()));
\r
1624 FLAG_N = NFLAG_8(res);
\r
1626 FLAG_C = CFLAG_CLEAR;
\r
1627 FLAG_V = VFLAG_CLEAR;
\r
1631 void m68k_op_or_8_er_al(void)
\r
1633 uint res = MASK_OUT_ABOVE_8((DX |= OPER_AL_8()));
\r
1635 FLAG_N = NFLAG_8(res);
\r
1637 FLAG_C = CFLAG_CLEAR;
\r
1638 FLAG_V = VFLAG_CLEAR;
\r
1642 void m68k_op_or_8_er_pcdi(void)
\r
1644 uint res = MASK_OUT_ABOVE_8((DX |= OPER_PCDI_8()));
\r
1646 FLAG_N = NFLAG_8(res);
\r
1648 FLAG_C = CFLAG_CLEAR;
\r
1649 FLAG_V = VFLAG_CLEAR;
\r
1653 void m68k_op_or_8_er_pcix(void)
\r
1655 uint res = MASK_OUT_ABOVE_8((DX |= OPER_PCIX_8()));
\r
1657 FLAG_N = NFLAG_8(res);
\r
1659 FLAG_C = CFLAG_CLEAR;
\r
1660 FLAG_V = VFLAG_CLEAR;
\r
1664 void m68k_op_or_8_er_i(void)
\r
1666 uint res = MASK_OUT_ABOVE_8((DX |= OPER_I_8()));
\r
1668 FLAG_N = NFLAG_8(res);
\r
1670 FLAG_C = CFLAG_CLEAR;
\r
1671 FLAG_V = VFLAG_CLEAR;
\r
1675 void m68k_op_or_16_er_d(void)
\r
1677 uint res = MASK_OUT_ABOVE_16((DX |= MASK_OUT_ABOVE_16(DY)));
\r
1679 FLAG_N = NFLAG_16(res);
\r
1681 FLAG_C = CFLAG_CLEAR;
\r
1682 FLAG_V = VFLAG_CLEAR;
\r
1686 void m68k_op_or_16_er_ai(void)
\r
1688 uint res = MASK_OUT_ABOVE_16((DX |= OPER_AY_AI_16()));
\r
1690 FLAG_N = NFLAG_16(res);
\r
1692 FLAG_C = CFLAG_CLEAR;
\r
1693 FLAG_V = VFLAG_CLEAR;
\r
1697 void m68k_op_or_16_er_pi(void)
\r
1699 uint res = MASK_OUT_ABOVE_16((DX |= OPER_AY_PI_16()));
\r
1701 FLAG_N = NFLAG_16(res);
\r
1703 FLAG_C = CFLAG_CLEAR;
\r
1704 FLAG_V = VFLAG_CLEAR;
\r
1708 void m68k_op_or_16_er_pd(void)
\r
1710 uint res = MASK_OUT_ABOVE_16((DX |= OPER_AY_PD_16()));
\r
1712 FLAG_N = NFLAG_16(res);
\r
1714 FLAG_C = CFLAG_CLEAR;
\r
1715 FLAG_V = VFLAG_CLEAR;
\r
1719 void m68k_op_or_16_er_di(void)
\r
1721 uint res = MASK_OUT_ABOVE_16((DX |= OPER_AY_DI_16()));
\r
1723 FLAG_N = NFLAG_16(res);
\r
1725 FLAG_C = CFLAG_CLEAR;
\r
1726 FLAG_V = VFLAG_CLEAR;
\r
1730 void m68k_op_or_16_er_ix(void)
\r
1732 uint res = MASK_OUT_ABOVE_16((DX |= OPER_AY_IX_16()));
\r
1734 FLAG_N = NFLAG_16(res);
\r
1736 FLAG_C = CFLAG_CLEAR;
\r
1737 FLAG_V = VFLAG_CLEAR;
\r
1741 void m68k_op_or_16_er_aw(void)
\r
1743 uint res = MASK_OUT_ABOVE_16((DX |= OPER_AW_16()));
\r
1745 FLAG_N = NFLAG_16(res);
\r
1747 FLAG_C = CFLAG_CLEAR;
\r
1748 FLAG_V = VFLAG_CLEAR;
\r
1752 void m68k_op_or_16_er_al(void)
\r
1754 uint res = MASK_OUT_ABOVE_16((DX |= OPER_AL_16()));
\r
1756 FLAG_N = NFLAG_16(res);
\r
1758 FLAG_C = CFLAG_CLEAR;
\r
1759 FLAG_V = VFLAG_CLEAR;
\r
1763 void m68k_op_or_16_er_pcdi(void)
\r
1765 uint res = MASK_OUT_ABOVE_16((DX |= OPER_PCDI_16()));
\r
1767 FLAG_N = NFLAG_16(res);
\r
1769 FLAG_C = CFLAG_CLEAR;
\r
1770 FLAG_V = VFLAG_CLEAR;
\r
1774 void m68k_op_or_16_er_pcix(void)
\r
1776 uint res = MASK_OUT_ABOVE_16((DX |= OPER_PCIX_16()));
\r
1778 FLAG_N = NFLAG_16(res);
\r
1780 FLAG_C = CFLAG_CLEAR;
\r
1781 FLAG_V = VFLAG_CLEAR;
\r
1785 void m68k_op_or_16_er_i(void)
\r
1787 uint res = MASK_OUT_ABOVE_16((DX |= OPER_I_16()));
\r
1789 FLAG_N = NFLAG_16(res);
\r
1791 FLAG_C = CFLAG_CLEAR;
\r
1792 FLAG_V = VFLAG_CLEAR;
\r
1796 void m68k_op_or_32_er_d(void)
\r
1798 uint res = DX |= DY;
\r
1800 FLAG_N = NFLAG_32(res);
\r
1802 FLAG_C = CFLAG_CLEAR;
\r
1803 FLAG_V = VFLAG_CLEAR;
\r
1807 void m68k_op_or_32_er_ai(void)
\r
1809 uint res = DX |= OPER_AY_AI_32();
\r
1811 FLAG_N = NFLAG_32(res);
\r
1813 FLAG_C = CFLAG_CLEAR;
\r
1814 FLAG_V = VFLAG_CLEAR;
\r
1818 void m68k_op_or_32_er_pi(void)
\r
1820 uint res = DX |= OPER_AY_PI_32();
\r
1822 FLAG_N = NFLAG_32(res);
\r
1824 FLAG_C = CFLAG_CLEAR;
\r
1825 FLAG_V = VFLAG_CLEAR;
\r
1829 void m68k_op_or_32_er_pd(void)
\r
1831 uint res = DX |= OPER_AY_PD_32();
\r
1833 FLAG_N = NFLAG_32(res);
\r
1835 FLAG_C = CFLAG_CLEAR;
\r
1836 FLAG_V = VFLAG_CLEAR;
\r
1840 void m68k_op_or_32_er_di(void)
\r
1842 uint res = DX |= OPER_AY_DI_32();
\r
1844 FLAG_N = NFLAG_32(res);
\r
1846 FLAG_C = CFLAG_CLEAR;
\r
1847 FLAG_V = VFLAG_CLEAR;
\r
1851 void m68k_op_or_32_er_ix(void)
\r
1853 uint res = DX |= OPER_AY_IX_32();
\r
1855 FLAG_N = NFLAG_32(res);
\r
1857 FLAG_C = CFLAG_CLEAR;
\r
1858 FLAG_V = VFLAG_CLEAR;
\r
1862 void m68k_op_or_32_er_aw(void)
\r
1864 uint res = DX |= OPER_AW_32();
\r
1866 FLAG_N = NFLAG_32(res);
\r
1868 FLAG_C = CFLAG_CLEAR;
\r
1869 FLAG_V = VFLAG_CLEAR;
\r
1873 void m68k_op_or_32_er_al(void)
\r
1875 uint res = DX |= OPER_AL_32();
\r
1877 FLAG_N = NFLAG_32(res);
\r
1879 FLAG_C = CFLAG_CLEAR;
\r
1880 FLAG_V = VFLAG_CLEAR;
\r
1884 void m68k_op_or_32_er_pcdi(void)
\r
1886 uint res = DX |= OPER_PCDI_32();
\r
1888 FLAG_N = NFLAG_32(res);
\r
1890 FLAG_C = CFLAG_CLEAR;
\r
1891 FLAG_V = VFLAG_CLEAR;
\r
1895 void m68k_op_or_32_er_pcix(void)
\r
1897 uint res = DX |= OPER_PCIX_32();
\r
1899 FLAG_N = NFLAG_32(res);
\r
1901 FLAG_C = CFLAG_CLEAR;
\r
1902 FLAG_V = VFLAG_CLEAR;
\r
1906 void m68k_op_or_32_er_i(void)
\r
1908 uint res = DX |= OPER_I_32();
\r
1910 FLAG_N = NFLAG_32(res);
\r
1912 FLAG_C = CFLAG_CLEAR;
\r
1913 FLAG_V = VFLAG_CLEAR;
\r
1917 void m68k_op_or_8_re_ai(void)
\r
1919 uint ea = EA_AY_AI_8();
\r
1920 uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea));
\r
1922 m68ki_write_8(ea, res);
\r
1924 FLAG_N = NFLAG_8(res);
\r
1926 FLAG_C = CFLAG_CLEAR;
\r
1927 FLAG_V = VFLAG_CLEAR;
\r
1931 void m68k_op_or_8_re_pi(void)
\r
1933 uint ea = EA_AY_PI_8();
\r
1934 uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea));
\r
1936 m68ki_write_8(ea, res);
\r
1938 FLAG_N = NFLAG_8(res);
\r
1940 FLAG_C = CFLAG_CLEAR;
\r
1941 FLAG_V = VFLAG_CLEAR;
\r
1945 void m68k_op_or_8_re_pi7(void)
\r
1947 uint ea = EA_A7_PI_8();
\r
1948 uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea));
\r
1950 m68ki_write_8(ea, res);
\r
1952 FLAG_N = NFLAG_8(res);
\r
1954 FLAG_C = CFLAG_CLEAR;
\r
1955 FLAG_V = VFLAG_CLEAR;
\r
1959 void m68k_op_or_8_re_pd(void)
\r
1961 uint ea = EA_AY_PD_8();
\r
1962 uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea));
\r
1964 m68ki_write_8(ea, res);
\r
1966 FLAG_N = NFLAG_8(res);
\r
1968 FLAG_C = CFLAG_CLEAR;
\r
1969 FLAG_V = VFLAG_CLEAR;
\r
1973 void m68k_op_or_8_re_pd7(void)
\r
1975 uint ea = EA_A7_PD_8();
\r
1976 uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea));
\r
1978 m68ki_write_8(ea, res);
\r
1980 FLAG_N = NFLAG_8(res);
\r
1982 FLAG_C = CFLAG_CLEAR;
\r
1983 FLAG_V = VFLAG_CLEAR;
\r
1987 void m68k_op_or_8_re_di(void)
\r
1989 uint ea = EA_AY_DI_8();
\r
1990 uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea));
\r
1992 m68ki_write_8(ea, res);
\r
1994 FLAG_N = NFLAG_8(res);
\r
1996 FLAG_C = CFLAG_CLEAR;
\r
1997 FLAG_V = VFLAG_CLEAR;
\r
2001 void m68k_op_or_8_re_ix(void)
\r
2003 uint ea = EA_AY_IX_8();
\r
2004 uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea));
\r
2006 m68ki_write_8(ea, res);
\r
2008 FLAG_N = NFLAG_8(res);
\r
2010 FLAG_C = CFLAG_CLEAR;
\r
2011 FLAG_V = VFLAG_CLEAR;
\r
2015 void m68k_op_or_8_re_aw(void)
\r
2017 uint ea = EA_AW_8();
\r
2018 uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea));
\r
2020 m68ki_write_8(ea, res);
\r
2022 FLAG_N = NFLAG_8(res);
\r
2024 FLAG_C = CFLAG_CLEAR;
\r
2025 FLAG_V = VFLAG_CLEAR;
\r
2029 void m68k_op_or_8_re_al(void)
\r
2031 uint ea = EA_AL_8();
\r
2032 uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea));
\r
2034 m68ki_write_8(ea, res);
\r
2036 FLAG_N = NFLAG_8(res);
\r
2038 FLAG_C = CFLAG_CLEAR;
\r
2039 FLAG_V = VFLAG_CLEAR;
\r
2043 void m68k_op_or_16_re_ai(void)
\r
2045 uint ea = EA_AY_AI_16();
\r
2046 uint res = MASK_OUT_ABOVE_16(DX | m68ki_read_16(ea));
\r
2048 m68ki_write_16(ea, res);
\r
2050 FLAG_N = NFLAG_16(res);
\r
2052 FLAG_C = CFLAG_CLEAR;
\r
2053 FLAG_V = VFLAG_CLEAR;
\r
2057 void m68k_op_or_16_re_pi(void)
\r
2059 uint ea = EA_AY_PI_16();
\r
2060 uint res = MASK_OUT_ABOVE_16(DX | m68ki_read_16(ea));
\r
2062 m68ki_write_16(ea, res);
\r
2064 FLAG_N = NFLAG_16(res);
\r
2066 FLAG_C = CFLAG_CLEAR;
\r
2067 FLAG_V = VFLAG_CLEAR;
\r
2071 void m68k_op_or_16_re_pd(void)
\r
2073 uint ea = EA_AY_PD_16();
\r
2074 uint res = MASK_OUT_ABOVE_16(DX | m68ki_read_16(ea));
\r
2076 m68ki_write_16(ea, res);
\r
2078 FLAG_N = NFLAG_16(res);
\r
2080 FLAG_C = CFLAG_CLEAR;
\r
2081 FLAG_V = VFLAG_CLEAR;
\r
2085 void m68k_op_or_16_re_di(void)
\r
2087 uint ea = EA_AY_DI_16();
\r
2088 uint res = MASK_OUT_ABOVE_16(DX | m68ki_read_16(ea));
\r
2090 m68ki_write_16(ea, res);
\r
2092 FLAG_N = NFLAG_16(res);
\r
2094 FLAG_C = CFLAG_CLEAR;
\r
2095 FLAG_V = VFLAG_CLEAR;
\r
2099 void m68k_op_or_16_re_ix(void)
\r
2101 uint ea = EA_AY_IX_16();
\r
2102 uint res = MASK_OUT_ABOVE_16(DX | m68ki_read_16(ea));
\r
2104 m68ki_write_16(ea, res);
\r
2106 FLAG_N = NFLAG_16(res);
\r
2108 FLAG_C = CFLAG_CLEAR;
\r
2109 FLAG_V = VFLAG_CLEAR;
\r
2113 void m68k_op_or_16_re_aw(void)
\r
2115 uint ea = EA_AW_16();
\r
2116 uint res = MASK_OUT_ABOVE_16(DX | m68ki_read_16(ea));
\r
2118 m68ki_write_16(ea, res);
\r
2120 FLAG_N = NFLAG_16(res);
\r
2122 FLAG_C = CFLAG_CLEAR;
\r
2123 FLAG_V = VFLAG_CLEAR;
\r
2127 void m68k_op_or_16_re_al(void)
\r
2129 uint ea = EA_AL_16();
\r
2130 uint res = MASK_OUT_ABOVE_16(DX | m68ki_read_16(ea));
\r
2132 m68ki_write_16(ea, res);
\r
2134 FLAG_N = NFLAG_16(res);
\r
2136 FLAG_C = CFLAG_CLEAR;
\r
2137 FLAG_V = VFLAG_CLEAR;
\r
2141 void m68k_op_or_32_re_ai(void)
\r
2143 uint ea = EA_AY_AI_32();
\r
2144 uint res = DX | m68ki_read_32(ea);
\r
2146 m68ki_write_32(ea, res);
\r
2148 FLAG_N = NFLAG_32(res);
\r
2150 FLAG_C = CFLAG_CLEAR;
\r
2151 FLAG_V = VFLAG_CLEAR;
\r
2155 void m68k_op_or_32_re_pi(void)
\r
2157 uint ea = EA_AY_PI_32();
\r
2158 uint res = DX | m68ki_read_32(ea);
\r
2160 m68ki_write_32(ea, res);
\r
2162 FLAG_N = NFLAG_32(res);
\r
2164 FLAG_C = CFLAG_CLEAR;
\r
2165 FLAG_V = VFLAG_CLEAR;
\r
2169 void m68k_op_or_32_re_pd(void)
\r
2171 uint ea = EA_AY_PD_32();
\r
2172 uint res = DX | m68ki_read_32(ea);
\r
2174 m68ki_write_32(ea, res);
\r
2176 FLAG_N = NFLAG_32(res);
\r
2178 FLAG_C = CFLAG_CLEAR;
\r
2179 FLAG_V = VFLAG_CLEAR;
\r
2183 void m68k_op_or_32_re_di(void)
\r
2185 uint ea = EA_AY_DI_32();
\r
2186 uint res = DX | m68ki_read_32(ea);
\r
2188 m68ki_write_32(ea, res);
\r
2190 FLAG_N = NFLAG_32(res);
\r
2192 FLAG_C = CFLAG_CLEAR;
\r
2193 FLAG_V = VFLAG_CLEAR;
\r
2197 void m68k_op_or_32_re_ix(void)
\r
2199 uint ea = EA_AY_IX_32();
\r
2200 uint res = DX | m68ki_read_32(ea);
\r
2202 m68ki_write_32(ea, res);
\r
2204 FLAG_N = NFLAG_32(res);
\r
2206 FLAG_C = CFLAG_CLEAR;
\r
2207 FLAG_V = VFLAG_CLEAR;
\r
2211 void m68k_op_or_32_re_aw(void)
\r
2213 uint ea = EA_AW_32();
\r
2214 uint res = DX | m68ki_read_32(ea);
\r
2216 m68ki_write_32(ea, res);
\r
2218 FLAG_N = NFLAG_32(res);
\r
2220 FLAG_C = CFLAG_CLEAR;
\r
2221 FLAG_V = VFLAG_CLEAR;
\r
2225 void m68k_op_or_32_re_al(void)
\r
2227 uint ea = EA_AL_32();
\r
2228 uint res = DX | m68ki_read_32(ea);
\r
2230 m68ki_write_32(ea, res);
\r
2232 FLAG_N = NFLAG_32(res);
\r
2234 FLAG_C = CFLAG_CLEAR;
\r
2235 FLAG_V = VFLAG_CLEAR;
\r
2239 void m68k_op_ori_8_d(void)
\r
2241 uint res = MASK_OUT_ABOVE_8((DY |= OPER_I_8()));
\r
2243 FLAG_N = NFLAG_8(res);
\r
2245 FLAG_C = CFLAG_CLEAR;
\r
2246 FLAG_V = VFLAG_CLEAR;
\r
2250 void m68k_op_ori_8_ai(void)
\r
2252 uint src = OPER_I_8();
\r
2253 uint ea = EA_AY_AI_8();
\r
2254 uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea));
\r
2256 m68ki_write_8(ea, res);
\r
2258 FLAG_N = NFLAG_8(res);
\r
2260 FLAG_C = CFLAG_CLEAR;
\r
2261 FLAG_V = VFLAG_CLEAR;
\r
2265 void m68k_op_ori_8_pi(void)
\r
2267 uint src = OPER_I_8();
\r
2268 uint ea = EA_AY_PI_8();
\r
2269 uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea));
\r
2271 m68ki_write_8(ea, res);
\r
2273 FLAG_N = NFLAG_8(res);
\r
2275 FLAG_C = CFLAG_CLEAR;
\r
2276 FLAG_V = VFLAG_CLEAR;
\r
2280 void m68k_op_ori_8_pi7(void)
\r
2282 uint src = OPER_I_8();
\r
2283 uint ea = EA_A7_PI_8();
\r
2284 uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea));
\r
2286 m68ki_write_8(ea, res);
\r
2288 FLAG_N = NFLAG_8(res);
\r
2290 FLAG_C = CFLAG_CLEAR;
\r
2291 FLAG_V = VFLAG_CLEAR;
\r
2295 void m68k_op_ori_8_pd(void)
\r
2297 uint src = OPER_I_8();
\r
2298 uint ea = EA_AY_PD_8();
\r
2299 uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea));
\r
2301 m68ki_write_8(ea, res);
\r
2303 FLAG_N = NFLAG_8(res);
\r
2305 FLAG_C = CFLAG_CLEAR;
\r
2306 FLAG_V = VFLAG_CLEAR;
\r
2310 void m68k_op_ori_8_pd7(void)
\r
2312 uint src = OPER_I_8();
\r
2313 uint ea = EA_A7_PD_8();
\r
2314 uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea));
\r
2316 m68ki_write_8(ea, res);
\r
2318 FLAG_N = NFLAG_8(res);
\r
2320 FLAG_C = CFLAG_CLEAR;
\r
2321 FLAG_V = VFLAG_CLEAR;
\r
2325 void m68k_op_ori_8_di(void)
\r
2327 uint src = OPER_I_8();
\r
2328 uint ea = EA_AY_DI_8();
\r
2329 uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea));
\r
2331 m68ki_write_8(ea, res);
\r
2333 FLAG_N = NFLAG_8(res);
\r
2335 FLAG_C = CFLAG_CLEAR;
\r
2336 FLAG_V = VFLAG_CLEAR;
\r
2340 void m68k_op_ori_8_ix(void)
\r
2342 uint src = OPER_I_8();
\r
2343 uint ea = EA_AY_IX_8();
\r
2344 uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea));
\r
2346 m68ki_write_8(ea, res);
\r
2348 FLAG_N = NFLAG_8(res);
\r
2350 FLAG_C = CFLAG_CLEAR;
\r
2351 FLAG_V = VFLAG_CLEAR;
\r
2355 void m68k_op_ori_8_aw(void)
\r
2357 uint src = OPER_I_8();
\r
2358 uint ea = EA_AW_8();
\r
2359 uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea));
\r
2361 m68ki_write_8(ea, res);
\r
2363 FLAG_N = NFLAG_8(res);
\r
2365 FLAG_C = CFLAG_CLEAR;
\r
2366 FLAG_V = VFLAG_CLEAR;
\r
2370 void m68k_op_ori_8_al(void)
\r
2372 uint src = OPER_I_8();
\r
2373 uint ea = EA_AL_8();
\r
2374 uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea));
\r
2376 m68ki_write_8(ea, res);
\r
2378 FLAG_N = NFLAG_8(res);
\r
2380 FLAG_C = CFLAG_CLEAR;
\r
2381 FLAG_V = VFLAG_CLEAR;
\r
2385 void m68k_op_ori_16_d(void)
\r
2387 uint res = MASK_OUT_ABOVE_16(DY |= OPER_I_16());
\r
2389 FLAG_N = NFLAG_16(res);
\r
2391 FLAG_C = CFLAG_CLEAR;
\r
2392 FLAG_V = VFLAG_CLEAR;
\r
2396 void m68k_op_ori_16_ai(void)
\r
2398 uint src = OPER_I_16();
\r
2399 uint ea = EA_AY_AI_16();
\r
2400 uint res = MASK_OUT_ABOVE_16(src | m68ki_read_16(ea));
\r
2402 m68ki_write_16(ea, res);
\r
2404 FLAG_N = NFLAG_16(res);
\r
2406 FLAG_C = CFLAG_CLEAR;
\r
2407 FLAG_V = VFLAG_CLEAR;
\r
2411 void m68k_op_ori_16_pi(void)
\r
2413 uint src = OPER_I_16();
\r
2414 uint ea = EA_AY_PI_16();
\r
2415 uint res = MASK_OUT_ABOVE_16(src | m68ki_read_16(ea));
\r
2417 m68ki_write_16(ea, res);
\r
2419 FLAG_N = NFLAG_16(res);
\r
2421 FLAG_C = CFLAG_CLEAR;
\r
2422 FLAG_V = VFLAG_CLEAR;
\r
2426 void m68k_op_ori_16_pd(void)
\r
2428 uint src = OPER_I_16();
\r
2429 uint ea = EA_AY_PD_16();
\r
2430 uint res = MASK_OUT_ABOVE_16(src | m68ki_read_16(ea));
\r
2432 m68ki_write_16(ea, res);
\r
2434 FLAG_N = NFLAG_16(res);
\r
2436 FLAG_C = CFLAG_CLEAR;
\r
2437 FLAG_V = VFLAG_CLEAR;
\r
2441 void m68k_op_ori_16_di(void)
\r
2443 uint src = OPER_I_16();
\r
2444 uint ea = EA_AY_DI_16();
\r
2445 uint res = MASK_OUT_ABOVE_16(src | m68ki_read_16(ea));
\r
2447 m68ki_write_16(ea, res);
\r
2449 FLAG_N = NFLAG_16(res);
\r
2451 FLAG_C = CFLAG_CLEAR;
\r
2452 FLAG_V = VFLAG_CLEAR;
\r
2456 void m68k_op_ori_16_ix(void)
\r
2458 uint src = OPER_I_16();
\r
2459 uint ea = EA_AY_IX_16();
\r
2460 uint res = MASK_OUT_ABOVE_16(src | m68ki_read_16(ea));
\r
2462 m68ki_write_16(ea, res);
\r
2464 FLAG_N = NFLAG_16(res);
\r
2466 FLAG_C = CFLAG_CLEAR;
\r
2467 FLAG_V = VFLAG_CLEAR;
\r
2471 void m68k_op_ori_16_aw(void)
\r
2473 uint src = OPER_I_16();
\r
2474 uint ea = EA_AW_16();
\r
2475 uint res = MASK_OUT_ABOVE_16(src | m68ki_read_16(ea));
\r
2477 m68ki_write_16(ea, res);
\r
2479 FLAG_N = NFLAG_16(res);
\r
2481 FLAG_C = CFLAG_CLEAR;
\r
2482 FLAG_V = VFLAG_CLEAR;
\r
2486 void m68k_op_ori_16_al(void)
\r
2488 uint src = OPER_I_16();
\r
2489 uint ea = EA_AL_16();
\r
2490 uint res = MASK_OUT_ABOVE_16(src | m68ki_read_16(ea));
\r
2492 m68ki_write_16(ea, res);
\r
2494 FLAG_N = NFLAG_16(res);
\r
2496 FLAG_C = CFLAG_CLEAR;
\r
2497 FLAG_V = VFLAG_CLEAR;
\r
2501 void m68k_op_ori_32_d(void)
\r
2503 uint res = DY |= OPER_I_32();
\r
2505 FLAG_N = NFLAG_32(res);
\r
2507 FLAG_C = CFLAG_CLEAR;
\r
2508 FLAG_V = VFLAG_CLEAR;
\r
2512 void m68k_op_ori_32_ai(void)
\r
2514 uint src = OPER_I_32();
\r
2515 uint ea = EA_AY_AI_32();
\r
2516 uint res = src | m68ki_read_32(ea);
\r
2518 m68ki_write_32(ea, res);
\r
2520 FLAG_N = NFLAG_32(res);
\r
2522 FLAG_C = CFLAG_CLEAR;
\r
2523 FLAG_V = VFLAG_CLEAR;
\r
2527 void m68k_op_ori_32_pi(void)
\r
2529 uint src = OPER_I_32();
\r
2530 uint ea = EA_AY_PI_32();
\r
2531 uint res = src | m68ki_read_32(ea);
\r
2533 m68ki_write_32(ea, res);
\r
2535 FLAG_N = NFLAG_32(res);
\r
2537 FLAG_C = CFLAG_CLEAR;
\r
2538 FLAG_V = VFLAG_CLEAR;
\r
2542 void m68k_op_ori_32_pd(void)
\r
2544 uint src = OPER_I_32();
\r
2545 uint ea = EA_AY_PD_32();
\r
2546 uint res = src | m68ki_read_32(ea);
\r
2548 m68ki_write_32(ea, res);
\r
2550 FLAG_N = NFLAG_32(res);
\r
2552 FLAG_C = CFLAG_CLEAR;
\r
2553 FLAG_V = VFLAG_CLEAR;
\r
2557 void m68k_op_ori_32_di(void)
\r
2559 uint src = OPER_I_32();
\r
2560 uint ea = EA_AY_DI_32();
\r
2561 uint res = src | m68ki_read_32(ea);
\r
2563 m68ki_write_32(ea, res);
\r
2565 FLAG_N = NFLAG_32(res);
\r
2567 FLAG_C = CFLAG_CLEAR;
\r
2568 FLAG_V = VFLAG_CLEAR;
\r
2572 void m68k_op_ori_32_ix(void)
\r
2574 uint src = OPER_I_32();
\r
2575 uint ea = EA_AY_IX_32();
\r
2576 uint res = src | m68ki_read_32(ea);
\r
2578 m68ki_write_32(ea, res);
\r
2580 FLAG_N = NFLAG_32(res);
\r
2582 FLAG_C = CFLAG_CLEAR;
\r
2583 FLAG_V = VFLAG_CLEAR;
\r
2587 void m68k_op_ori_32_aw(void)
\r
2589 uint src = OPER_I_32();
\r
2590 uint ea = EA_AW_32();
\r
2591 uint res = src | m68ki_read_32(ea);
\r
2593 m68ki_write_32(ea, res);
\r
2595 FLAG_N = NFLAG_32(res);
\r
2597 FLAG_C = CFLAG_CLEAR;
\r
2598 FLAG_V = VFLAG_CLEAR;
\r
2602 void m68k_op_ori_32_al(void)
\r
2604 uint src = OPER_I_32();
\r
2605 uint ea = EA_AL_32();
\r
2606 uint res = src | m68ki_read_32(ea);
\r
2608 m68ki_write_32(ea, res);
\r
2610 FLAG_N = NFLAG_32(res);
\r
2612 FLAG_C = CFLAG_CLEAR;
\r
2613 FLAG_V = VFLAG_CLEAR;
\r
2617 void m68k_op_ori_16_toc(void)
\r
2619 m68ki_set_ccr(m68ki_get_ccr() | OPER_I_16());
\r
2623 void m68k_op_ori_16_tos(void)
\r
2627 uint src = OPER_I_16();
\r
2628 m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
\r
2629 m68ki_set_sr(m68ki_get_sr() | src);
\r
2632 m68ki_exception_privilege_violation();
\r
2636 void m68k_op_pack_16_rr(void)
\r
2638 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
2640 /* Note: DX and DY are reversed in Motorola's docs */
\r
2641 uint src = DY + OPER_I_16();
\r
2642 uint* r_dst = &DX;
\r
2644 *r_dst = MASK_OUT_BELOW_8(*r_dst) | ((src >> 4) & 0x00f0) | (src & 0x000f);
\r
2647 m68ki_exception_illegal();
\r
2651 void m68k_op_pack_16_mm_ax7(void)
\r
2653 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
2655 /* Note: AX and AY are reversed in Motorola's docs */
\r
2656 uint ea_src = EA_AY_PD_8();
\r
2657 uint src = m68ki_read_8(ea_src);
\r
2658 ea_src = EA_AY_PD_8();
\r
2659 src = ((src << 8) | m68ki_read_8(ea_src)) + OPER_I_16();
\r
2661 m68ki_write_8(EA_A7_PD_8(), ((src >> 4) & 0x00f0) | (src & 0x000f));
\r
2664 m68ki_exception_illegal();
\r
2668 void m68k_op_pack_16_mm_ay7(void)
\r
2670 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
2672 /* Note: AX and AY are reversed in Motorola's docs */
\r
2673 uint ea_src = EA_A7_PD_8();
\r
2674 uint src = m68ki_read_8(ea_src);
\r
2675 ea_src = EA_A7_PD_8();
\r
2676 src = ((src << 8) | m68ki_read_8(ea_src)) + OPER_I_16();
\r
2678 m68ki_write_8(EA_AX_PD_8(), ((src >> 4) & 0x00f0) | (src & 0x000f));
\r
2681 m68ki_exception_illegal();
\r
2685 void m68k_op_pack_16_mm_axy7(void)
\r
2687 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
2689 uint ea_src = EA_A7_PD_8();
\r
2690 uint src = m68ki_read_8(ea_src);
\r
2691 ea_src = EA_A7_PD_8();
\r
2692 src = ((src << 8) | m68ki_read_8(ea_src)) + OPER_I_16();
\r
2694 m68ki_write_8(EA_A7_PD_8(), ((src >> 4) & 0x00f0) | (src & 0x000f));
\r
2697 m68ki_exception_illegal();
\r
2701 void m68k_op_pack_16_mm(void)
\r
2703 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
2705 /* Note: AX and AY are reversed in Motorola's docs */
\r
2706 uint ea_src = EA_AY_PD_8();
\r
2707 uint src = m68ki_read_8(ea_src);
\r
2708 ea_src = EA_AY_PD_8();
\r
2709 src = ((src << 8) | m68ki_read_8(ea_src)) + OPER_I_16();
\r
2711 m68ki_write_8(EA_AX_PD_8(), ((src >> 4) & 0x00f0) | (src & 0x000f));
\r
2714 m68ki_exception_illegal();
\r
2718 void m68k_op_pea_32_ai(void)
\r
2720 uint ea = EA_AY_AI_32();
\r
2722 m68ki_push_32(ea);
\r
2726 void m68k_op_pea_32_di(void)
\r
2728 uint ea = EA_AY_DI_32();
\r
2730 m68ki_push_32(ea);
\r
2734 void m68k_op_pea_32_ix(void)
\r
2736 uint ea = EA_AY_IX_32();
\r
2738 m68ki_push_32(ea);
\r
2742 void m68k_op_pea_32_aw(void)
\r
2744 uint ea = EA_AW_32();
\r
2746 m68ki_push_32(ea);
\r
2750 void m68k_op_pea_32_al(void)
\r
2752 uint ea = EA_AL_32();
\r
2754 m68ki_push_32(ea);
\r
2758 void m68k_op_pea_32_pcdi(void)
\r
2760 uint ea = EA_PCDI_32();
\r
2762 m68ki_push_32(ea);
\r
2766 void m68k_op_pea_32_pcix(void)
\r
2768 uint ea = EA_PCIX_32();
\r
2770 m68ki_push_32(ea);
\r
2774 void m68k_op_pflush_32(void)
\r
2776 if(CPU_TYPE_IS_040_PLUS(CPU_TYPE))
\r
2778 // Nothing to do, unless address translation cache is emulated
\r
2781 m68ki_exception_illegal();
\r
2785 void m68k_op_reset(void)
\r
2789 m68ki_output_reset(); /* auto-disable (see m68kcpu.h) */
\r
2790 USE_CYCLES(CYC_RESET);
\r
2793 m68ki_exception_privilege_violation();
\r
2797 void m68k_op_ror_8_s(void)
\r
2799 uint* r_dst = &DY;
\r
2800 uint orig_shift = (((REG_IR >> 9) - 1) & 7) + 1;
\r
2801 uint shift = orig_shift & 7;
\r
2802 uint src = MASK_OUT_ABOVE_8(*r_dst);
\r
2803 uint res = ROR_8(src, shift);
\r
2805 if(orig_shift != 0)
\r
2806 USE_CYCLES(orig_shift<<CYC_SHIFT);
\r
2808 *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
\r
2810 FLAG_N = NFLAG_8(res);
\r
2812 FLAG_C = src << (9-orig_shift);
\r
2813 FLAG_V = VFLAG_CLEAR;
\r
2817 void m68k_op_ror_16_s(void)
\r
2819 uint* r_dst = &DY;
\r
2820 uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
\r
2821 uint src = MASK_OUT_ABOVE_16(*r_dst);
\r
2822 uint res = ROR_16(src, shift);
\r
2825 USE_CYCLES(shift<<CYC_SHIFT);
\r
2827 *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
\r
2829 FLAG_N = NFLAG_16(res);
\r
2831 FLAG_C = src << (9-shift);
\r
2832 FLAG_V = VFLAG_CLEAR;
\r
2836 void m68k_op_ror_32_s(void)
\r
2838 uint* r_dst = &DY;
\r
2839 uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
\r
2840 uint64 src = *r_dst;
\r
2841 uint res = ROR_32(src, shift);
\r
2844 USE_CYCLES(shift<<CYC_SHIFT);
\r
2848 FLAG_N = NFLAG_32(res);
\r
2850 FLAG_C = src << (9-shift);
\r
2851 FLAG_V = VFLAG_CLEAR;
\r
2855 void m68k_op_ror_8_r(void)
\r
2857 uint* r_dst = &DY;
\r
2858 uint orig_shift = DX & 0x3f;
\r
2859 uint shift = orig_shift & 7;
\r
2860 uint src = MASK_OUT_ABOVE_8(*r_dst);
\r
2861 uint res = ROR_8(src, shift);
\r
2863 if(orig_shift != 0)
\r
2865 USE_CYCLES(orig_shift<<CYC_SHIFT);
\r
2867 *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
\r
2868 FLAG_C = src << (8-((shift-1)&7));
\r
2869 FLAG_N = NFLAG_8(res);
\r
2871 FLAG_V = VFLAG_CLEAR;
\r
2875 FLAG_C = CFLAG_CLEAR;
\r
2876 FLAG_N = NFLAG_8(src);
\r
2878 FLAG_V = VFLAG_CLEAR;
\r
2882 void m68k_op_ror_16_r(void)
\r
2884 uint* r_dst = &DY;
\r
2885 uint orig_shift = DX & 0x3f;
\r
2886 uint shift = orig_shift & 15;
\r
2887 uint src = MASK_OUT_ABOVE_16(*r_dst);
\r
2888 uint res = ROR_16(src, shift);
\r
2890 if(orig_shift != 0)
\r
2892 USE_CYCLES(orig_shift<<CYC_SHIFT);
\r
2894 *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
\r
2895 FLAG_C = (src >> ((shift - 1) & 15)) << 8;
\r
2896 FLAG_N = NFLAG_16(res);
\r
2898 FLAG_V = VFLAG_CLEAR;
\r
2902 FLAG_C = CFLAG_CLEAR;
\r
2903 FLAG_N = NFLAG_16(src);
\r
2905 FLAG_V = VFLAG_CLEAR;
\r
2909 void m68k_op_ror_32_r(void)
\r
2911 uint* r_dst = &DY;
\r
2912 uint orig_shift = DX & 0x3f;
\r
2913 uint shift = orig_shift & 31;
\r
2914 uint64 src = *r_dst;
\r
2915 uint res = ROR_32(src, shift);
\r
2917 if(orig_shift != 0)
\r
2919 USE_CYCLES(orig_shift<<CYC_SHIFT);
\r
2922 FLAG_C = (src >> ((shift - 1) & 31)) << 8;
\r
2923 FLAG_N = NFLAG_32(res);
\r
2925 FLAG_V = VFLAG_CLEAR;
\r
2929 FLAG_C = CFLAG_CLEAR;
\r
2930 FLAG_N = NFLAG_32(src);
\r
2932 FLAG_V = VFLAG_CLEAR;
\r
2936 void m68k_op_ror_16_ai(void)
\r
2938 uint ea = EA_AY_AI_16();
\r
2939 uint src = m68ki_read_16(ea);
\r
2940 uint res = ROR_16(src, 1);
\r
2942 m68ki_write_16(ea, res);
\r
2944 FLAG_N = NFLAG_16(res);
\r
2946 FLAG_C = src << 8;
\r
2947 FLAG_V = VFLAG_CLEAR;
\r
2951 void m68k_op_ror_16_pi(void)
\r
2953 uint ea = EA_AY_PI_16();
\r
2954 uint src = m68ki_read_16(ea);
\r
2955 uint res = ROR_16(src, 1);
\r
2957 m68ki_write_16(ea, res);
\r
2959 FLAG_N = NFLAG_16(res);
\r
2961 FLAG_C = src << 8;
\r
2962 FLAG_V = VFLAG_CLEAR;
\r
2966 void m68k_op_ror_16_pd(void)
\r
2968 uint ea = EA_AY_PD_16();
\r
2969 uint src = m68ki_read_16(ea);
\r
2970 uint res = ROR_16(src, 1);
\r
2972 m68ki_write_16(ea, res);
\r
2974 FLAG_N = NFLAG_16(res);
\r
2976 FLAG_C = src << 8;
\r
2977 FLAG_V = VFLAG_CLEAR;
\r
2981 void m68k_op_ror_16_di(void)
\r
2983 uint ea = EA_AY_DI_16();
\r
2984 uint src = m68ki_read_16(ea);
\r
2985 uint res = ROR_16(src, 1);
\r
2987 m68ki_write_16(ea, res);
\r
2989 FLAG_N = NFLAG_16(res);
\r
2991 FLAG_C = src << 8;
\r
2992 FLAG_V = VFLAG_CLEAR;
\r
2996 void m68k_op_ror_16_ix(void)
\r
2998 uint ea = EA_AY_IX_16();
\r
2999 uint src = m68ki_read_16(ea);
\r
3000 uint res = ROR_16(src, 1);
\r
3002 m68ki_write_16(ea, res);
\r
3004 FLAG_N = NFLAG_16(res);
\r
3006 FLAG_C = src << 8;
\r
3007 FLAG_V = VFLAG_CLEAR;
\r
3011 void m68k_op_ror_16_aw(void)
\r
3013 uint ea = EA_AW_16();
\r
3014 uint src = m68ki_read_16(ea);
\r
3015 uint res = ROR_16(src, 1);
\r
3017 m68ki_write_16(ea, res);
\r
3019 FLAG_N = NFLAG_16(res);
\r
3021 FLAG_C = src << 8;
\r
3022 FLAG_V = VFLAG_CLEAR;
\r
3026 void m68k_op_ror_16_al(void)
\r
3028 uint ea = EA_AL_16();
\r
3029 uint src = m68ki_read_16(ea);
\r
3030 uint res = ROR_16(src, 1);
\r
3032 m68ki_write_16(ea, res);
\r
3034 FLAG_N = NFLAG_16(res);
\r
3036 FLAG_C = src << 8;
\r
3037 FLAG_V = VFLAG_CLEAR;
\r
3041 void m68k_op_rol_8_s(void)
\r
3043 uint* r_dst = &DY;
\r
3044 uint orig_shift = (((REG_IR >> 9) - 1) & 7) + 1;
\r
3045 uint shift = orig_shift & 7;
\r
3046 uint src = MASK_OUT_ABOVE_8(*r_dst);
\r
3047 uint res = ROL_8(src, shift);
\r
3049 if(orig_shift != 0)
\r
3050 USE_CYCLES(orig_shift<<CYC_SHIFT);
\r
3052 *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
\r
3054 FLAG_N = NFLAG_8(res);
\r
3056 FLAG_C = src << orig_shift;
\r
3057 FLAG_V = VFLAG_CLEAR;
\r
3061 void m68k_op_rol_16_s(void)
\r
3063 uint* r_dst = &DY;
\r
3064 uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
\r
3065 uint src = MASK_OUT_ABOVE_16(*r_dst);
\r
3066 uint res = ROL_16(src, shift);
\r
3069 USE_CYCLES(shift<<CYC_SHIFT);
\r
3071 *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
\r
3073 FLAG_N = NFLAG_16(res);
\r
3075 FLAG_C = src >> (8-shift);
\r
3076 FLAG_V = VFLAG_CLEAR;
\r
3080 void m68k_op_rol_32_s(void)
\r
3082 uint* r_dst = &DY;
\r
3083 uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
\r
3084 uint64 src = *r_dst;
\r
3085 uint res = ROL_32(src, shift);
\r
3088 USE_CYCLES(shift<<CYC_SHIFT);
\r
3092 FLAG_N = NFLAG_32(res);
\r
3094 FLAG_C = src >> (24-shift);
\r
3095 FLAG_V = VFLAG_CLEAR;
\r
3099 void m68k_op_rol_8_r(void)
\r
3101 uint* r_dst = &DY;
\r
3102 uint orig_shift = DX & 0x3f;
\r
3103 uint shift = orig_shift & 7;
\r
3104 uint src = MASK_OUT_ABOVE_8(*r_dst);
\r
3105 uint res = ROL_8(src, shift);
\r
3107 if(orig_shift != 0)
\r
3109 USE_CYCLES(orig_shift<<CYC_SHIFT);
\r
3113 *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
\r
3114 FLAG_C = src << shift;
\r
3115 FLAG_N = NFLAG_8(res);
\r
3117 FLAG_V = VFLAG_CLEAR;
\r
3120 FLAG_C = (src & 1)<<8;
\r
3121 FLAG_N = NFLAG_8(src);
\r
3123 FLAG_V = VFLAG_CLEAR;
\r
3127 FLAG_C = CFLAG_CLEAR;
\r
3128 FLAG_N = NFLAG_8(src);
\r
3130 FLAG_V = VFLAG_CLEAR;
\r
3134 void m68k_op_rol_16_r(void)
\r
3136 uint* r_dst = &DY;
\r
3137 uint orig_shift = DX & 0x3f;
\r
3138 uint shift = orig_shift & 15;
\r
3139 uint src = MASK_OUT_ABOVE_16(*r_dst);
\r
3140 uint res = MASK_OUT_ABOVE_16(ROL_16(src, shift));
\r
3142 if(orig_shift != 0)
\r
3144 USE_CYCLES(orig_shift<<CYC_SHIFT);
\r
3148 *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
\r
3149 FLAG_C = (src << shift) >> 8;
\r
3150 FLAG_N = NFLAG_16(res);
\r
3152 FLAG_V = VFLAG_CLEAR;
\r
3155 FLAG_C = (src & 1)<<8;
\r
3156 FLAG_N = NFLAG_16(src);
\r
3158 FLAG_V = VFLAG_CLEAR;
\r
3162 FLAG_C = CFLAG_CLEAR;
\r
3163 FLAG_N = NFLAG_16(src);
\r
3165 FLAG_V = VFLAG_CLEAR;
\r
3169 void m68k_op_rol_32_r(void)
\r
3171 uint* r_dst = &DY;
\r
3172 uint orig_shift = DX & 0x3f;
\r
3173 uint shift = orig_shift & 31;
\r
3174 uint64 src = *r_dst;
\r
3175 uint res = ROL_32(src, shift);
\r
3177 if(orig_shift != 0)
\r
3179 USE_CYCLES(orig_shift<<CYC_SHIFT);
\r
3183 FLAG_C = (src >> (32 - shift)) << 8;
\r
3184 if (shift == 0) FLAG_C = src << 8; // notaz
\r
3185 FLAG_N = NFLAG_32(res);
\r
3187 FLAG_V = VFLAG_CLEAR;
\r
3191 FLAG_C = CFLAG_CLEAR;
\r
3192 FLAG_N = NFLAG_32(src);
\r
3194 FLAG_V = VFLAG_CLEAR;
\r
3198 void m68k_op_rol_16_ai(void)
\r
3200 uint ea = EA_AY_AI_16();
\r
3201 uint src = m68ki_read_16(ea);
\r
3202 uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1));
\r
3204 m68ki_write_16(ea, res);
\r
3206 FLAG_N = NFLAG_16(res);
\r
3208 FLAG_C = src >> 7;
\r
3209 FLAG_V = VFLAG_CLEAR;
\r
3213 void m68k_op_rol_16_pi(void)
\r
3215 uint ea = EA_AY_PI_16();
\r
3216 uint src = m68ki_read_16(ea);
\r
3217 uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1));
\r
3219 m68ki_write_16(ea, res);
\r
3221 FLAG_N = NFLAG_16(res);
\r
3223 FLAG_C = src >> 7;
\r
3224 FLAG_V = VFLAG_CLEAR;
\r
3228 void m68k_op_rol_16_pd(void)
\r
3230 uint ea = EA_AY_PD_16();
\r
3231 uint src = m68ki_read_16(ea);
\r
3232 uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1));
\r
3234 m68ki_write_16(ea, res);
\r
3236 FLAG_N = NFLAG_16(res);
\r
3238 FLAG_C = src >> 7;
\r
3239 FLAG_V = VFLAG_CLEAR;
\r
3243 void m68k_op_rol_16_di(void)
\r
3245 uint ea = EA_AY_DI_16();
\r
3246 uint src = m68ki_read_16(ea);
\r
3247 uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1));
\r
3249 m68ki_write_16(ea, res);
\r
3251 FLAG_N = NFLAG_16(res);
\r
3253 FLAG_C = src >> 7;
\r
3254 FLAG_V = VFLAG_CLEAR;
\r
3258 void m68k_op_rol_16_ix(void)
\r
3260 uint ea = EA_AY_IX_16();
\r
3261 uint src = m68ki_read_16(ea);
\r
3262 uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1));
\r
3264 m68ki_write_16(ea, res);
\r
3266 FLAG_N = NFLAG_16(res);
\r
3268 FLAG_C = src >> 7;
\r
3269 FLAG_V = VFLAG_CLEAR;
\r
3273 void m68k_op_rol_16_aw(void)
\r
3275 uint ea = EA_AW_16();
\r
3276 uint src = m68ki_read_16(ea);
\r
3277 uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1));
\r
3279 m68ki_write_16(ea, res);
\r
3281 FLAG_N = NFLAG_16(res);
\r
3283 FLAG_C = src >> 7;
\r
3284 FLAG_V = VFLAG_CLEAR;
\r
3288 void m68k_op_rol_16_al(void)
\r
3290 uint ea = EA_AL_16();
\r
3291 uint src = m68ki_read_16(ea);
\r
3292 uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1));
\r
3294 m68ki_write_16(ea, res);
\r
3296 FLAG_N = NFLAG_16(res);
\r
3298 FLAG_C = src >> 7;
\r
3299 FLAG_V = VFLAG_CLEAR;
\r
3303 void m68k_op_roxr_8_s(void)
\r
3305 uint* r_dst = &DY;
\r
3306 uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
\r
3307 uint src = MASK_OUT_ABOVE_8(*r_dst);
\r
3308 uint res = ROR_9(src | (XFLAG_AS_1() << 8), shift);
\r
3311 USE_CYCLES(shift<<CYC_SHIFT);
\r
3313 FLAG_C = FLAG_X = res;
\r
3314 res = MASK_OUT_ABOVE_8(res);
\r
3316 *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
\r
3318 FLAG_N = NFLAG_8(res);
\r
3320 FLAG_V = VFLAG_CLEAR;
\r
3324 void m68k_op_roxr_16_s(void)
\r
3326 uint* r_dst = &DY;
\r
3327 uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
\r
3328 uint src = MASK_OUT_ABOVE_16(*r_dst);
\r
3329 uint res = ROR_17(src | (XFLAG_AS_1() << 16), shift);
\r
3332 USE_CYCLES(shift<<CYC_SHIFT);
\r
3334 FLAG_C = FLAG_X = res >> 8;
\r
3335 res = MASK_OUT_ABOVE_16(res);
\r
3337 *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
\r
3339 FLAG_N = NFLAG_16(res);
\r
3341 FLAG_V = VFLAG_CLEAR;
\r
3345 void m68k_op_roxr_32_s(void)
\r
3347 #if M68K_USE_64_BIT
\r
3349 uint* r_dst = &DY;
\r
3350 uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
\r
3351 uint64 src = *r_dst;
\r
3352 uint64 res = src | (((uint64)XFLAG_AS_1()) << 32);
\r
3355 USE_CYCLES(shift<<CYC_SHIFT);
\r
3357 res = ROR_33_64(res, shift);
\r
3359 FLAG_C = FLAG_X = res >> 24;
\r
3360 res = MASK_OUT_ABOVE_32(res);
\r
3364 FLAG_N = NFLAG_32(res);
\r
3366 FLAG_V = VFLAG_CLEAR;
\r
3370 uint* r_dst = &DY;
\r
3371 uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
\r
3372 uint src = *r_dst;
\r
3373 uint res = MASK_OUT_ABOVE_32((ROR_33(src, shift) & ~(1 << (32 - shift))) | (XFLAG_AS_1() << (32 - shift)));
\r
3374 uint new_x_flag = src & (1 << (shift - 1));
\r
3377 USE_CYCLES(shift<<CYC_SHIFT);
\r
3381 FLAG_C = FLAG_X = (new_x_flag != 0)<<8;
\r
3382 FLAG_N = NFLAG_32(res);
\r
3384 FLAG_V = VFLAG_CLEAR;
\r
3390 void m68k_op_roxr_8_r(void)
\r
3392 uint* r_dst = &DY;
\r
3393 uint orig_shift = DX & 0x3f;
\r
3395 if(orig_shift != 0)
\r
3397 uint shift = orig_shift % 9;
\r
3398 uint src = MASK_OUT_ABOVE_8(*r_dst);
\r
3399 uint res = ROR_9(src | (XFLAG_AS_1() << 8), shift);
\r
3401 USE_CYCLES(orig_shift<<CYC_SHIFT);
\r
3403 FLAG_C = FLAG_X = res;
\r
3404 res = MASK_OUT_ABOVE_8(res);
\r
3406 *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
\r
3407 FLAG_N = NFLAG_8(res);
\r
3409 FLAG_V = VFLAG_CLEAR;
\r
3414 FLAG_N = NFLAG_8(*r_dst);
\r
3415 FLAG_Z = MASK_OUT_ABOVE_8(*r_dst);
\r
3416 FLAG_V = VFLAG_CLEAR;
\r
3420 void m68k_op_roxr_16_r(void)
\r
3422 uint* r_dst = &DY;
\r
3423 uint orig_shift = DX & 0x3f;
\r
3425 if(orig_shift != 0)
\r
3427 uint shift = orig_shift % 17;
\r
3428 uint src = MASK_OUT_ABOVE_16(*r_dst);
\r
3429 uint res = ROR_17(src | (XFLAG_AS_1() << 16), shift);
\r
3431 USE_CYCLES(orig_shift<<CYC_SHIFT);
\r
3433 FLAG_C = FLAG_X = res >> 8;
\r
3434 res = MASK_OUT_ABOVE_16(res);
\r
3436 *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
\r
3437 FLAG_N = NFLAG_16(res);
\r
3439 FLAG_V = VFLAG_CLEAR;
\r
3444 FLAG_N = NFLAG_16(*r_dst);
\r
3445 FLAG_Z = MASK_OUT_ABOVE_16(*r_dst);
\r
3446 FLAG_V = VFLAG_CLEAR;
\r
3450 void m68k_op_roxr_32_r(void)
\r
3452 #if M68K_USE_64_BIT
\r
3454 uint* r_dst = &DY;
\r
3455 uint orig_shift = DX & 0x3f;
\r
3457 if(orig_shift != 0)
\r
3459 uint shift = orig_shift % 33;
\r
3460 uint64 src = *r_dst;
\r
3461 uint64 res = src | (((uint64)XFLAG_AS_1()) << 32);
\r
3463 res = ROR_33_64(res, shift);
\r
3465 USE_CYCLES(orig_shift<<CYC_SHIFT);
\r
3467 FLAG_C = FLAG_X = res >> 24;
\r
3468 res = MASK_OUT_ABOVE_32(res);
\r
3471 FLAG_N = NFLAG_32(res);
\r
3473 FLAG_V = VFLAG_CLEAR;
\r
3478 FLAG_N = NFLAG_32(*r_dst);
\r
3480 FLAG_V = VFLAG_CLEAR;
\r
3484 uint* r_dst = &DY;
\r
3485 uint orig_shift = DX & 0x3f;
\r
3486 uint shift = orig_shift % 33;
\r
3487 uint src = *r_dst;
\r
3488 uint res = MASK_OUT_ABOVE_32((ROR_33(src, shift) & ~(1 << (32 - shift))) | (XFLAG_AS_1() << (32 - shift)));
\r
3489 uint new_x_flag = src & (1 << (shift - 1));
\r
3491 if(orig_shift != 0)
\r
3492 USE_CYCLES(orig_shift<<CYC_SHIFT);
\r
3497 FLAG_X = (new_x_flag != 0)<<8;
\r
3502 FLAG_N = NFLAG_32(res);
\r
3504 FLAG_V = VFLAG_CLEAR;
\r
3510 void m68k_op_roxr_16_ai(void)
\r
3512 uint ea = EA_AY_AI_16();
\r
3513 uint src = m68ki_read_16(ea);
\r
3514 uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1);
\r
3516 FLAG_C = FLAG_X = res >> 8;
\r
3517 res = MASK_OUT_ABOVE_16(res);
\r
3519 m68ki_write_16(ea, res);
\r
3521 FLAG_N = NFLAG_16(res);
\r
3523 FLAG_V = VFLAG_CLEAR;
\r
3527 void m68k_op_roxr_16_pi(void)
\r
3529 uint ea = EA_AY_PI_16();
\r
3530 uint src = m68ki_read_16(ea);
\r
3531 uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1);
\r
3533 FLAG_C = FLAG_X = res >> 8;
\r
3534 res = MASK_OUT_ABOVE_16(res);
\r
3536 m68ki_write_16(ea, res);
\r
3538 FLAG_N = NFLAG_16(res);
\r
3540 FLAG_V = VFLAG_CLEAR;
\r
3544 void m68k_op_roxr_16_pd(void)
\r
3546 uint ea = EA_AY_PD_16();
\r
3547 uint src = m68ki_read_16(ea);
\r
3548 uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1);
\r
3550 FLAG_C = FLAG_X = res >> 8;
\r
3551 res = MASK_OUT_ABOVE_16(res);
\r
3553 m68ki_write_16(ea, res);
\r
3555 FLAG_N = NFLAG_16(res);
\r
3557 FLAG_V = VFLAG_CLEAR;
\r
3561 void m68k_op_roxr_16_di(void)
\r
3563 uint ea = EA_AY_DI_16();
\r
3564 uint src = m68ki_read_16(ea);
\r
3565 uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1);
\r
3567 FLAG_C = FLAG_X = res >> 8;
\r
3568 res = MASK_OUT_ABOVE_16(res);
\r
3570 m68ki_write_16(ea, res);
\r
3572 FLAG_N = NFLAG_16(res);
\r
3574 FLAG_V = VFLAG_CLEAR;
\r
3578 void m68k_op_roxr_16_ix(void)
\r
3580 uint ea = EA_AY_IX_16();
\r
3581 uint src = m68ki_read_16(ea);
\r
3582 uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1);
\r
3584 FLAG_C = FLAG_X = res >> 8;
\r
3585 res = MASK_OUT_ABOVE_16(res);
\r
3587 m68ki_write_16(ea, res);
\r
3589 FLAG_N = NFLAG_16(res);
\r
3591 FLAG_V = VFLAG_CLEAR;
\r
3595 void m68k_op_roxr_16_aw(void)
\r
3597 uint ea = EA_AW_16();
\r
3598 uint src = m68ki_read_16(ea);
\r
3599 uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1);
\r
3601 FLAG_C = FLAG_X = res >> 8;
\r
3602 res = MASK_OUT_ABOVE_16(res);
\r
3604 m68ki_write_16(ea, res);
\r
3606 FLAG_N = NFLAG_16(res);
\r
3608 FLAG_V = VFLAG_CLEAR;
\r
3612 void m68k_op_roxr_16_al(void)
\r
3614 uint ea = EA_AL_16();
\r
3615 uint src = m68ki_read_16(ea);
\r
3616 uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1);
\r
3618 FLAG_C = FLAG_X = res >> 8;
\r
3619 res = MASK_OUT_ABOVE_16(res);
\r
3621 m68ki_write_16(ea, res);
\r
3623 FLAG_N = NFLAG_16(res);
\r
3625 FLAG_V = VFLAG_CLEAR;
\r
3629 void m68k_op_roxl_8_s(void)
\r
3631 uint* r_dst = &DY;
\r
3632 uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
\r
3633 uint src = MASK_OUT_ABOVE_8(*r_dst);
\r
3634 uint res = ROL_9(src | (XFLAG_AS_1() << 8), shift);
\r
3637 USE_CYCLES(shift<<CYC_SHIFT);
\r
3639 FLAG_C = FLAG_X = res;
\r
3640 res = MASK_OUT_ABOVE_8(res);
\r
3642 *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
\r
3644 FLAG_N = NFLAG_8(res);
\r
3646 FLAG_V = VFLAG_CLEAR;
\r
3650 void m68k_op_roxl_16_s(void)
\r
3652 uint* r_dst = &DY;
\r
3653 uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
\r
3654 uint src = MASK_OUT_ABOVE_16(*r_dst);
\r
3655 uint res = ROL_17(src | (XFLAG_AS_1() << 16), shift);
\r
3658 USE_CYCLES(shift<<CYC_SHIFT);
\r
3660 FLAG_C = FLAG_X = res >> 8;
\r
3661 res = MASK_OUT_ABOVE_16(res);
\r
3663 *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
\r
3665 FLAG_N = NFLAG_16(res);
\r
3667 FLAG_V = VFLAG_CLEAR;
\r
3671 void m68k_op_roxl_32_s(void)
\r
3673 #if M68K_USE_64_BIT
\r
3675 uint* r_dst = &DY;
\r
3676 uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
\r
3677 uint64 src = *r_dst;
\r
3678 uint64 res = src | (((uint64)XFLAG_AS_1()) << 32);
\r
3681 USE_CYCLES(shift<<CYC_SHIFT);
\r
3683 res = ROL_33_64(res, shift);
\r
3685 FLAG_C = FLAG_X = res >> 24;
\r
3686 res = MASK_OUT_ABOVE_32(res);
\r
3690 FLAG_N = NFLAG_32(res);
\r
3692 FLAG_V = VFLAG_CLEAR;
\r
3696 uint* r_dst = &DY;
\r
3697 uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
\r
3698 uint src = *r_dst;
\r
3699 uint res = MASK_OUT_ABOVE_32((ROL_33(src, shift) & ~(1 << (shift - 1))) | (XFLAG_AS_1() << (shift - 1)));
\r
3700 uint new_x_flag = src & (1 << (32 - shift));
\r
3703 USE_CYCLES(shift<<CYC_SHIFT);
\r
3707 FLAG_C = FLAG_X = (new_x_flag != 0)<<8;
\r
3708 FLAG_N = NFLAG_32(res);
\r
3710 FLAG_V = VFLAG_CLEAR;
\r
3716 void m68k_op_roxl_8_r(void)
\r
3718 uint* r_dst = &DY;
\r
3719 uint orig_shift = DX & 0x3f;
\r
3722 if(orig_shift != 0)
\r
3724 uint shift = orig_shift % 9;
\r
3725 uint src = MASK_OUT_ABOVE_8(*r_dst);
\r
3726 uint res = ROL_9(src | (XFLAG_AS_1() << 8), shift);
\r
3728 USE_CYCLES(orig_shift<<CYC_SHIFT);
\r
3730 FLAG_C = FLAG_X = res;
\r
3731 res = MASK_OUT_ABOVE_8(res);
\r
3733 *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
\r
3734 FLAG_N = NFLAG_8(res);
\r
3736 FLAG_V = VFLAG_CLEAR;
\r
3741 FLAG_N = NFLAG_8(*r_dst);
\r
3742 FLAG_Z = MASK_OUT_ABOVE_8(*r_dst);
\r
3743 FLAG_V = VFLAG_CLEAR;
\r
3747 void m68k_op_roxl_16_r(void)
\r
3749 uint* r_dst = &DY;
\r
3750 uint orig_shift = DX & 0x3f;
\r
3752 if(orig_shift != 0)
\r
3754 uint shift = orig_shift % 17;
\r
3755 uint src = MASK_OUT_ABOVE_16(*r_dst);
\r
3756 uint res = ROL_17(src | (XFLAG_AS_1() << 16), shift);
\r
3758 USE_CYCLES(orig_shift<<CYC_SHIFT);
\r
3760 FLAG_C = FLAG_X = res >> 8;
\r
3761 res = MASK_OUT_ABOVE_16(res);
\r
3763 *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
\r
3764 FLAG_N = NFLAG_16(res);
\r
3766 FLAG_V = VFLAG_CLEAR;
\r
3771 FLAG_N = NFLAG_16(*r_dst);
\r
3772 FLAG_Z = MASK_OUT_ABOVE_16(*r_dst);
\r
3773 FLAG_V = VFLAG_CLEAR;
\r
3777 void m68k_op_roxl_32_r(void)
\r
3779 #if M68K_USE_64_BIT
\r
3781 uint* r_dst = &DY;
\r
3782 uint orig_shift = DX & 0x3f;
\r
3784 if(orig_shift != 0)
\r
3786 uint shift = orig_shift % 33;
\r
3787 uint64 src = *r_dst;
\r
3788 uint64 res = src | (((uint64)XFLAG_AS_1()) << 32);
\r
3790 res = ROL_33_64(res, shift);
\r
3792 USE_CYCLES(orig_shift<<CYC_SHIFT);
\r
3794 FLAG_C = FLAG_X = res >> 24;
\r
3795 res = MASK_OUT_ABOVE_32(res);
\r
3798 FLAG_N = NFLAG_32(res);
\r
3800 FLAG_V = VFLAG_CLEAR;
\r
3805 FLAG_N = NFLAG_32(*r_dst);
\r
3807 FLAG_V = VFLAG_CLEAR;
\r
3811 uint* r_dst = &DY;
\r
3812 uint orig_shift = DX & 0x3f;
\r
3813 uint shift = orig_shift % 33;
\r
3814 uint src = *r_dst;
\r
3815 uint res = MASK_OUT_ABOVE_32((ROL_33(src, shift) & ~(1 << (shift - 1))) | (XFLAG_AS_1() << (shift - 1)));
\r
3816 uint new_x_flag = src & (1 << (32 - shift));
\r
3818 if(orig_shift != 0)
\r
3819 USE_CYCLES(orig_shift<<CYC_SHIFT);
\r
3824 FLAG_X = (new_x_flag != 0)<<8;
\r
3829 FLAG_N = NFLAG_32(res);
\r
3831 FLAG_V = VFLAG_CLEAR;
\r
3837 void m68k_op_roxl_16_ai(void)
\r
3839 uint ea = EA_AY_AI_16();
\r
3840 uint src = m68ki_read_16(ea);
\r
3841 uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1);
\r
3843 FLAG_C = FLAG_X = res >> 8;
\r
3844 res = MASK_OUT_ABOVE_16(res);
\r
3846 m68ki_write_16(ea, res);
\r
3848 FLAG_N = NFLAG_16(res);
\r
3850 FLAG_V = VFLAG_CLEAR;
\r
3854 void m68k_op_roxl_16_pi(void)
\r
3856 uint ea = EA_AY_PI_16();
\r
3857 uint src = m68ki_read_16(ea);
\r
3858 uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1);
\r
3860 FLAG_C = FLAG_X = res >> 8;
\r
3861 res = MASK_OUT_ABOVE_16(res);
\r
3863 m68ki_write_16(ea, res);
\r
3865 FLAG_N = NFLAG_16(res);
\r
3867 FLAG_V = VFLAG_CLEAR;
\r
3871 void m68k_op_roxl_16_pd(void)
\r
3873 uint ea = EA_AY_PD_16();
\r
3874 uint src = m68ki_read_16(ea);
\r
3875 uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1);
\r
3877 FLAG_C = FLAG_X = res >> 8;
\r
3878 res = MASK_OUT_ABOVE_16(res);
\r
3880 m68ki_write_16(ea, res);
\r
3882 FLAG_N = NFLAG_16(res);
\r
3884 FLAG_V = VFLAG_CLEAR;
\r
3888 void m68k_op_roxl_16_di(void)
\r
3890 uint ea = EA_AY_DI_16();
\r
3891 uint src = m68ki_read_16(ea);
\r
3892 uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1);
\r
3894 FLAG_C = FLAG_X = res >> 8;
\r
3895 res = MASK_OUT_ABOVE_16(res);
\r
3897 m68ki_write_16(ea, res);
\r
3899 FLAG_N = NFLAG_16(res);
\r
3901 FLAG_V = VFLAG_CLEAR;
\r
3905 void m68k_op_roxl_16_ix(void)
\r
3907 uint ea = EA_AY_IX_16();
\r
3908 uint src = m68ki_read_16(ea);
\r
3909 uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1);
\r
3911 FLAG_C = FLAG_X = res >> 8;
\r
3912 res = MASK_OUT_ABOVE_16(res);
\r
3914 m68ki_write_16(ea, res);
\r
3916 FLAG_N = NFLAG_16(res);
\r
3918 FLAG_V = VFLAG_CLEAR;
\r
3922 void m68k_op_roxl_16_aw(void)
\r
3924 uint ea = EA_AW_16();
\r
3925 uint src = m68ki_read_16(ea);
\r
3926 uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1);
\r
3928 FLAG_C = FLAG_X = res >> 8;
\r
3929 res = MASK_OUT_ABOVE_16(res);
\r
3931 m68ki_write_16(ea, res);
\r
3933 FLAG_N = NFLAG_16(res);
\r
3935 FLAG_V = VFLAG_CLEAR;
\r
3939 void m68k_op_roxl_16_al(void)
\r
3941 uint ea = EA_AL_16();
\r
3942 uint src = m68ki_read_16(ea);
\r
3943 uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1);
\r
3945 FLAG_C = FLAG_X = res >> 8;
\r
3946 res = MASK_OUT_ABOVE_16(res);
\r
3948 m68ki_write_16(ea, res);
\r
3950 FLAG_N = NFLAG_16(res);
\r
3952 FLAG_V = VFLAG_CLEAR;
\r
3956 void m68k_op_rtd_32(void)
\r
3958 if(CPU_TYPE_IS_010_PLUS(CPU_TYPE))
\r
3960 uint new_pc = m68ki_pull_32();
\r
3962 m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
\r
3963 REG_A[7] = MASK_OUT_ABOVE_32(REG_A[7] + MAKE_INT_16(OPER_I_16()));
\r
3964 m68ki_jump(new_pc);
\r
3967 m68ki_exception_illegal();
\r
3971 void m68k_op_rte_32(void)
\r
3979 m68ki_rte_callback(); /* auto-disable (see m68kcpu.h) */
\r
3980 m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
\r
3982 if(CPU_TYPE_IS_000(CPU_TYPE))
\r
3984 new_sr = m68ki_pull_16();
\r
3985 new_pc = m68ki_pull_32();
\r
3986 m68ki_jump(new_pc);
\r
3987 m68ki_set_sr(new_sr);
\r
3989 CPU_INSTR_MODE = INSTRUCTION_YES;
\r
3990 CPU_RUN_MODE = RUN_MODE_NORMAL;
\r
3995 if(CPU_TYPE_IS_010(CPU_TYPE))
\r
3997 format_word = m68ki_read_16(REG_A[7]+6) >> 12;
\r
3998 if(format_word == 0)
\r
4000 new_sr = m68ki_pull_16();
\r
4001 new_pc = m68ki_pull_32();
\r
4002 m68ki_fake_pull_16(); /* format word */
\r
4003 m68ki_jump(new_pc);
\r
4004 m68ki_set_sr(new_sr);
\r
4005 CPU_INSTR_MODE = INSTRUCTION_YES;
\r
4006 CPU_RUN_MODE = RUN_MODE_NORMAL;
\r
4009 CPU_INSTR_MODE = INSTRUCTION_YES;
\r
4010 CPU_RUN_MODE = RUN_MODE_NORMAL;
\r
4011 /* Not handling bus fault (9) */
\r
4012 m68ki_exception_format_error();
\r
4016 /* Otherwise it's 020 */
\r
4018 format_word = m68ki_read_16(REG_A[7]+6) >> 12;
\r
4019 switch(format_word)
\r
4021 case 0: /* Normal */
\r
4022 new_sr = m68ki_pull_16();
\r
4023 new_pc = m68ki_pull_32();
\r
4024 m68ki_fake_pull_16(); /* format word */
\r
4025 m68ki_jump(new_pc);
\r
4026 m68ki_set_sr(new_sr);
\r
4027 CPU_INSTR_MODE = INSTRUCTION_YES;
\r
4028 CPU_RUN_MODE = RUN_MODE_NORMAL;
\r
4030 case 1: /* Throwaway */
\r
4031 new_sr = m68ki_pull_16();
\r
4032 m68ki_fake_pull_32(); /* program counter */
\r
4033 m68ki_fake_pull_16(); /* format word */
\r
4034 m68ki_set_sr_noint(new_sr);
\r
4036 case 2: /* Trap */
\r
4037 new_sr = m68ki_pull_16();
\r
4038 new_pc = m68ki_pull_32();
\r
4039 m68ki_fake_pull_16(); /* format word */
\r
4040 m68ki_fake_pull_32(); /* address */
\r
4041 m68ki_jump(new_pc);
\r
4042 m68ki_set_sr(new_sr);
\r
4043 CPU_INSTR_MODE = INSTRUCTION_YES;
\r
4044 CPU_RUN_MODE = RUN_MODE_NORMAL;
\r
4047 /* Not handling long or short bus fault */
\r
4048 CPU_INSTR_MODE = INSTRUCTION_YES;
\r
4049 CPU_RUN_MODE = RUN_MODE_NORMAL;
\r
4050 m68ki_exception_format_error();
\r
4053 m68ki_exception_privilege_violation();
\r
4057 void m68k_op_rtm_32(void)
\r
4059 if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))
\r
4061 m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
\r
4062 M68K_DO_LOG((M68K_LOG_FILEHANDLE "%s at %08x: called unimplemented instruction %04x (%s)\n",
\r
4063 m68ki_cpu_names[CPU_TYPE], ADDRESS_68K(REG_PC - 2), REG_IR,
\r
4064 m68k_disassemble_quick(ADDRESS_68K(REG_PC - 2))));
\r
4067 m68ki_exception_illegal();
\r
4071 void m68k_op_rtr_32(void)
\r
4073 m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
\r
4074 m68ki_set_ccr(m68ki_pull_16());
\r
4075 m68ki_jump(m68ki_pull_32());
\r
4079 void m68k_op_rts_32(void)
\r
4081 m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
\r
4082 m68ki_jump(m68ki_pull_32());
\r
4086 void m68k_op_sbcd_8_rr(void)
\r
4088 uint* r_dst = &DX;
\r
4090 uint dst = *r_dst;
\r
4091 uint res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1();
\r
4093 // FLAG_V = ~res; /* Undefined V behavior */
\r
4094 FLAG_V = VFLAG_CLEAR; /* Undefined in Motorola's M68000PM/AD rev.1 and safer to assume cleared. */
\r
4098 res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src);
\r
4102 FLAG_X = FLAG_C = CFLAG_SET;
\r
4103 FLAG_N = NFLAG_SET; /* Undefined in Motorola's M68000PM/AD rev.1 and safer to follow carry. */
\r
4106 FLAG_N = FLAG_X = FLAG_C = 0;
\r
4108 res = MASK_OUT_ABOVE_8(res);
\r
4110 // FLAG_V &= res; /* Undefined V behavior part II */
\r
4111 // FLAG_N = NFLAG_8(res); /* Undefined N behavior */
\r
4114 *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
\r
4118 void m68k_op_sbcd_8_mm_ax7(void)
\r
4120 uint src = OPER_AY_PD_8();
\r
4121 uint ea = EA_A7_PD_8();
\r
4122 uint dst = m68ki_read_8(ea);
\r
4123 uint res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1();
\r
4125 // FLAG_V = ~res; /* Undefined V behavior */
\r
4126 FLAG_V = VFLAG_CLEAR; /* Undefined in Motorola's M68000PM/AD rev.1 and safer to return zero. */
\r
4130 res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src);
\r
4134 FLAG_X = FLAG_C = CFLAG_SET;
\r
4135 FLAG_N = NFLAG_SET; /* Undefined in Motorola's M68000PM/AD rev.1 and safer to follow carry. */
\r
4138 FLAG_N = FLAG_X = FLAG_C = 0;
\r
4140 res = MASK_OUT_ABOVE_8(res);
\r
4142 // FLAG_V &= res; /* Undefined V behavior part II */
\r
4143 // FLAG_N = NFLAG_8(res); /* Undefined N behavior */
\r
4146 m68ki_write_8(ea, res);
\r
4150 void m68k_op_sbcd_8_mm_ay7(void)
\r
4152 uint src = OPER_A7_PD_8();
\r
4153 uint ea = EA_AX_PD_8();
\r
4154 uint dst = m68ki_read_8(ea);
\r
4155 uint res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1();
\r
4157 // FLAG_V = ~res; /* Undefined V behavior */
\r
4158 FLAG_V = VFLAG_CLEAR; /* Undefined in Motorola's M68000PM/AD rev.1 and safer to return zero. */
\r
4162 res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src);
\r
4166 FLAG_X = FLAG_C = CFLAG_SET;
\r
4167 FLAG_N = NFLAG_SET; /* Undefined in Motorola's M68000PM/AD rev.1 and safer to follow carry. */
\r
4170 FLAG_N = FLAG_X = FLAG_C = 0;
\r
4172 res = MASK_OUT_ABOVE_8(res);
\r
4174 // FLAG_V &= res; /* Undefined V behavior part II */
\r
4175 // FLAG_N = NFLAG_8(res); /* Undefined N behavior */
\r
4178 m68ki_write_8(ea, res);
\r
4182 void m68k_op_sbcd_8_mm_axy7(void)
\r
4184 uint src = OPER_A7_PD_8();
\r
4185 uint ea = EA_A7_PD_8();
\r
4186 uint dst = m68ki_read_8(ea);
\r
4187 uint res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1();
\r
4189 // FLAG_V = ~res; /* Undefined V behavior */
\r
4190 FLAG_V = VFLAG_CLEAR; /* Undefined in Motorola's M68000PM/AD rev.1 and safer to return zero. */
\r
4194 res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src);
\r
4198 FLAG_X = FLAG_C = CFLAG_SET;
\r
4199 FLAG_N = NFLAG_SET; /* Undefined in Motorola's M68000PM/AD rev.1 and safer to follow carry. */
\r
4202 FLAG_N = FLAG_X = FLAG_C = 0;
\r
4204 res = MASK_OUT_ABOVE_8(res);
\r
4206 // FLAG_V &= res; /* Undefined V behavior part II */
\r
4207 // FLAG_N = NFLAG_8(res); /* Undefined N behavior */
\r
4210 m68ki_write_8(ea, res);
\r
4214 void m68k_op_sbcd_8_mm(void)
\r
4216 uint src = OPER_AY_PD_8();
\r
4217 uint ea = EA_AX_PD_8();
\r
4218 uint dst = m68ki_read_8(ea);
\r
4219 uint res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1();
\r
4221 // FLAG_V = ~res; /* Undefined V behavior */
\r
4222 FLAG_V = VFLAG_CLEAR; /* Undefined in Motorola's M68000PM/AD rev.1 and safer to return zero. */
\r
4226 res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src);
\r
4230 FLAG_X = FLAG_C = CFLAG_SET;
\r
4231 FLAG_N = NFLAG_SET; /* Undefined in Motorola's M68000PM/AD rev.1 and safer to follow carry. */
\r
4234 FLAG_N = FLAG_X = FLAG_C = 0;
\r
4236 res = MASK_OUT_ABOVE_8(res);
\r
4238 // FLAG_V &= res; /* Undefined V behavior part II */
\r
4239 // FLAG_N = NFLAG_8(res); /* Undefined N behavior */
\r
4242 m68ki_write_8(ea, res);
\r
4246 void m68k_op_st_8_d(void)
\r
4252 void m68k_op_st_8_ai(void)
\r
4254 m68ki_write_8(EA_AY_AI_8(), 0xff);
\r
4258 void m68k_op_st_8_pi(void)
\r
4260 m68ki_write_8(EA_AY_PI_8(), 0xff);
\r
4264 void m68k_op_st_8_pi7(void)
\r
4266 m68ki_write_8(EA_A7_PI_8(), 0xff);
\r
4270 void m68k_op_st_8_pd(void)
\r
4272 m68ki_write_8(EA_AY_PD_8(), 0xff);
\r
4276 void m68k_op_st_8_pd7(void)
\r
4278 m68ki_write_8(EA_A7_PD_8(), 0xff);
\r
4282 void m68k_op_st_8_di(void)
\r
4284 m68ki_write_8(EA_AY_DI_8(), 0xff);
\r
4288 void m68k_op_st_8_ix(void)
\r
4290 m68ki_write_8(EA_AY_IX_8(), 0xff);
\r
4294 void m68k_op_st_8_aw(void)
\r
4296 m68ki_write_8(EA_AW_8(), 0xff);
\r
4300 void m68k_op_st_8_al(void)
\r
4302 m68ki_write_8(EA_AL_8(), 0xff);
\r
4306 void m68k_op_sf_8_d(void)
\r
4312 void m68k_op_sf_8_ai(void)
\r
4314 m68ki_write_8(EA_AY_AI_8(), 0);
\r
4318 void m68k_op_sf_8_pi(void)
\r
4320 m68ki_write_8(EA_AY_PI_8(), 0);
\r
4324 void m68k_op_sf_8_pi7(void)
\r
4326 m68ki_write_8(EA_A7_PI_8(), 0);
\r
4330 void m68k_op_sf_8_pd(void)
\r
4332 m68ki_write_8(EA_AY_PD_8(), 0);
\r
4336 void m68k_op_sf_8_pd7(void)
\r
4338 m68ki_write_8(EA_A7_PD_8(), 0);
\r
4342 void m68k_op_sf_8_di(void)
\r
4344 m68ki_write_8(EA_AY_DI_8(), 0);
\r
4348 void m68k_op_sf_8_ix(void)
\r
4350 m68ki_write_8(EA_AY_IX_8(), 0);
\r
4354 void m68k_op_sf_8_aw(void)
\r
4356 m68ki_write_8(EA_AW_8(), 0);
\r
4360 void m68k_op_sf_8_al(void)
\r
4362 m68ki_write_8(EA_AL_8(), 0);
\r
4366 void m68k_op_shi_8_d(void)
\r
4371 USE_CYCLES(CYC_SCC_R_TRUE);
\r
4378 void m68k_op_sls_8_d(void)
\r
4383 USE_CYCLES(CYC_SCC_R_TRUE);
\r
4390 void m68k_op_scc_8_d(void)
\r
4395 USE_CYCLES(CYC_SCC_R_TRUE);
\r
4402 void m68k_op_scs_8_d(void)
\r
4407 USE_CYCLES(CYC_SCC_R_TRUE);
\r
4414 void m68k_op_sne_8_d(void)
\r
4419 USE_CYCLES(CYC_SCC_R_TRUE);
\r
4426 void m68k_op_seq_8_d(void)
\r
4431 USE_CYCLES(CYC_SCC_R_TRUE);
\r
4438 void m68k_op_svc_8_d(void)
\r
4443 USE_CYCLES(CYC_SCC_R_TRUE);
\r
4450 void m68k_op_svs_8_d(void)
\r
4455 USE_CYCLES(CYC_SCC_R_TRUE);
\r
4462 void m68k_op_spl_8_d(void)
\r
4467 USE_CYCLES(CYC_SCC_R_TRUE);
\r
4474 void m68k_op_smi_8_d(void)
\r
4479 USE_CYCLES(CYC_SCC_R_TRUE);
\r
4486 void m68k_op_sge_8_d(void)
\r
4491 USE_CYCLES(CYC_SCC_R_TRUE);
\r
4498 void m68k_op_slt_8_d(void)
\r
4503 USE_CYCLES(CYC_SCC_R_TRUE);
\r
4510 void m68k_op_sgt_8_d(void)
\r
4515 USE_CYCLES(CYC_SCC_R_TRUE);
\r
4522 void m68k_op_sle_8_d(void)
\r
4527 USE_CYCLES(CYC_SCC_R_TRUE);
\r
4534 void m68k_op_shi_8_ai(void)
\r
4536 m68ki_write_8(EA_AY_AI_8(), COND_HI() ? 0xff : 0);
\r
4540 void m68k_op_shi_8_pi(void)
\r
4542 m68ki_write_8(EA_AY_PI_8(), COND_HI() ? 0xff : 0);
\r
4546 void m68k_op_shi_8_pi7(void)
\r
4548 m68ki_write_8(EA_A7_PI_8(), COND_HI() ? 0xff : 0);
\r
4552 void m68k_op_shi_8_pd(void)
\r
4554 m68ki_write_8(EA_AY_PD_8(), COND_HI() ? 0xff : 0);
\r
4558 void m68k_op_shi_8_pd7(void)
\r
4560 m68ki_write_8(EA_A7_PD_8(), COND_HI() ? 0xff : 0);
\r
4564 void m68k_op_shi_8_di(void)
\r
4566 m68ki_write_8(EA_AY_DI_8(), COND_HI() ? 0xff : 0);
\r
4570 void m68k_op_shi_8_ix(void)
\r
4572 m68ki_write_8(EA_AY_IX_8(), COND_HI() ? 0xff : 0);
\r
4576 void m68k_op_shi_8_aw(void)
\r
4578 m68ki_write_8(EA_AW_8(), COND_HI() ? 0xff : 0);
\r
4582 void m68k_op_shi_8_al(void)
\r
4584 m68ki_write_8(EA_AL_8(), COND_HI() ? 0xff : 0);
\r
4588 void m68k_op_sls_8_ai(void)
\r
4590 m68ki_write_8(EA_AY_AI_8(), COND_LS() ? 0xff : 0);
\r
4594 void m68k_op_sls_8_pi(void)
\r
4596 m68ki_write_8(EA_AY_PI_8(), COND_LS() ? 0xff : 0);
\r
4600 void m68k_op_sls_8_pi7(void)
\r
4602 m68ki_write_8(EA_A7_PI_8(), COND_LS() ? 0xff : 0);
\r
4606 void m68k_op_sls_8_pd(void)
\r
4608 m68ki_write_8(EA_AY_PD_8(), COND_LS() ? 0xff : 0);
\r
4612 void m68k_op_sls_8_pd7(void)
\r
4614 m68ki_write_8(EA_A7_PD_8(), COND_LS() ? 0xff : 0);
\r
4618 void m68k_op_sls_8_di(void)
\r
4620 m68ki_write_8(EA_AY_DI_8(), COND_LS() ? 0xff : 0);
\r
4624 void m68k_op_sls_8_ix(void)
\r
4626 m68ki_write_8(EA_AY_IX_8(), COND_LS() ? 0xff : 0);
\r
4630 void m68k_op_sls_8_aw(void)
\r
4632 m68ki_write_8(EA_AW_8(), COND_LS() ? 0xff : 0);
\r
4636 void m68k_op_sls_8_al(void)
\r
4638 m68ki_write_8(EA_AL_8(), COND_LS() ? 0xff : 0);
\r
4642 void m68k_op_scc_8_ai(void)
\r
4644 m68ki_write_8(EA_AY_AI_8(), COND_CC() ? 0xff : 0);
\r
4648 void m68k_op_scc_8_pi(void)
\r
4650 m68ki_write_8(EA_AY_PI_8(), COND_CC() ? 0xff : 0);
\r
4654 void m68k_op_scc_8_pi7(void)
\r
4656 m68ki_write_8(EA_A7_PI_8(), COND_CC() ? 0xff : 0);
\r
4660 void m68k_op_scc_8_pd(void)
\r
4662 m68ki_write_8(EA_AY_PD_8(), COND_CC() ? 0xff : 0);
\r
4666 void m68k_op_scc_8_pd7(void)
\r
4668 m68ki_write_8(EA_A7_PD_8(), COND_CC() ? 0xff : 0);
\r
4672 void m68k_op_scc_8_di(void)
\r
4674 m68ki_write_8(EA_AY_DI_8(), COND_CC() ? 0xff : 0);
\r
4678 void m68k_op_scc_8_ix(void)
\r
4680 m68ki_write_8(EA_AY_IX_8(), COND_CC() ? 0xff : 0);
\r
4684 void m68k_op_scc_8_aw(void)
\r
4686 m68ki_write_8(EA_AW_8(), COND_CC() ? 0xff : 0);
\r
4690 void m68k_op_scc_8_al(void)
\r
4692 m68ki_write_8(EA_AL_8(), COND_CC() ? 0xff : 0);
\r
4696 void m68k_op_scs_8_ai(void)
\r
4698 m68ki_write_8(EA_AY_AI_8(), COND_CS() ? 0xff : 0);
\r
4702 void m68k_op_scs_8_pi(void)
\r
4704 m68ki_write_8(EA_AY_PI_8(), COND_CS() ? 0xff : 0);
\r
4708 void m68k_op_scs_8_pi7(void)
\r
4710 m68ki_write_8(EA_A7_PI_8(), COND_CS() ? 0xff : 0);
\r
4714 void m68k_op_scs_8_pd(void)
\r
4716 m68ki_write_8(EA_AY_PD_8(), COND_CS() ? 0xff : 0);
\r
4720 void m68k_op_scs_8_pd7(void)
\r
4722 m68ki_write_8(EA_A7_PD_8(), COND_CS() ? 0xff : 0);
\r
4726 void m68k_op_scs_8_di(void)
\r
4728 m68ki_write_8(EA_AY_DI_8(), COND_CS() ? 0xff : 0);
\r
4732 void m68k_op_scs_8_ix(void)
\r
4734 m68ki_write_8(EA_AY_IX_8(), COND_CS() ? 0xff : 0);
\r
4738 void m68k_op_scs_8_aw(void)
\r
4740 m68ki_write_8(EA_AW_8(), COND_CS() ? 0xff : 0);
\r
4744 void m68k_op_scs_8_al(void)
\r
4746 m68ki_write_8(EA_AL_8(), COND_CS() ? 0xff : 0);
\r
4750 void m68k_op_sne_8_ai(void)
\r
4752 m68ki_write_8(EA_AY_AI_8(), COND_NE() ? 0xff : 0);
\r
4756 void m68k_op_sne_8_pi(void)
\r
4758 m68ki_write_8(EA_AY_PI_8(), COND_NE() ? 0xff : 0);
\r
4762 void m68k_op_sne_8_pi7(void)
\r
4764 m68ki_write_8(EA_A7_PI_8(), COND_NE() ? 0xff : 0);
\r
4768 void m68k_op_sne_8_pd(void)
\r
4770 m68ki_write_8(EA_AY_PD_8(), COND_NE() ? 0xff : 0);
\r
4774 void m68k_op_sne_8_pd7(void)
\r
4776 m68ki_write_8(EA_A7_PD_8(), COND_NE() ? 0xff : 0);
\r
4780 void m68k_op_sne_8_di(void)
\r
4782 m68ki_write_8(EA_AY_DI_8(), COND_NE() ? 0xff : 0);
\r
4786 void m68k_op_sne_8_ix(void)
\r
4788 m68ki_write_8(EA_AY_IX_8(), COND_NE() ? 0xff : 0);
\r
4792 void m68k_op_sne_8_aw(void)
\r
4794 m68ki_write_8(EA_AW_8(), COND_NE() ? 0xff : 0);
\r
4798 void m68k_op_sne_8_al(void)
\r
4800 m68ki_write_8(EA_AL_8(), COND_NE() ? 0xff : 0);
\r
4804 void m68k_op_seq_8_ai(void)
\r
4806 m68ki_write_8(EA_AY_AI_8(), COND_EQ() ? 0xff : 0);
\r
4810 void m68k_op_seq_8_pi(void)
\r
4812 m68ki_write_8(EA_AY_PI_8(), COND_EQ() ? 0xff : 0);
\r
4816 void m68k_op_seq_8_pi7(void)
\r
4818 m68ki_write_8(EA_A7_PI_8(), COND_EQ() ? 0xff : 0);
\r
4822 void m68k_op_seq_8_pd(void)
\r
4824 m68ki_write_8(EA_AY_PD_8(), COND_EQ() ? 0xff : 0);
\r
4828 void m68k_op_seq_8_pd7(void)
\r
4830 m68ki_write_8(EA_A7_PD_8(), COND_EQ() ? 0xff : 0);
\r
4834 void m68k_op_seq_8_di(void)
\r
4836 m68ki_write_8(EA_AY_DI_8(), COND_EQ() ? 0xff : 0);
\r
4840 void m68k_op_seq_8_ix(void)
\r
4842 m68ki_write_8(EA_AY_IX_8(), COND_EQ() ? 0xff : 0);
\r
4846 void m68k_op_seq_8_aw(void)
\r
4848 m68ki_write_8(EA_AW_8(), COND_EQ() ? 0xff : 0);
\r
4852 void m68k_op_seq_8_al(void)
\r
4854 m68ki_write_8(EA_AL_8(), COND_EQ() ? 0xff : 0);
\r
4858 void m68k_op_svc_8_ai(void)
\r
4860 m68ki_write_8(EA_AY_AI_8(), COND_VC() ? 0xff : 0);
\r
4864 void m68k_op_svc_8_pi(void)
\r
4866 m68ki_write_8(EA_AY_PI_8(), COND_VC() ? 0xff : 0);
\r
4870 void m68k_op_svc_8_pi7(void)
\r
4872 m68ki_write_8(EA_A7_PI_8(), COND_VC() ? 0xff : 0);
\r
4876 void m68k_op_svc_8_pd(void)
\r
4878 m68ki_write_8(EA_AY_PD_8(), COND_VC() ? 0xff : 0);
\r
4882 void m68k_op_svc_8_pd7(void)
\r
4884 m68ki_write_8(EA_A7_PD_8(), COND_VC() ? 0xff : 0);
\r
4888 void m68k_op_svc_8_di(void)
\r
4890 m68ki_write_8(EA_AY_DI_8(), COND_VC() ? 0xff : 0);
\r
4894 void m68k_op_svc_8_ix(void)
\r
4896 m68ki_write_8(EA_AY_IX_8(), COND_VC() ? 0xff : 0);
\r
4900 void m68k_op_svc_8_aw(void)
\r
4902 m68ki_write_8(EA_AW_8(), COND_VC() ? 0xff : 0);
\r
4906 void m68k_op_svc_8_al(void)
\r
4908 m68ki_write_8(EA_AL_8(), COND_VC() ? 0xff : 0);
\r
4912 void m68k_op_svs_8_ai(void)
\r
4914 m68ki_write_8(EA_AY_AI_8(), COND_VS() ? 0xff : 0);
\r
4918 void m68k_op_svs_8_pi(void)
\r
4920 m68ki_write_8(EA_AY_PI_8(), COND_VS() ? 0xff : 0);
\r
4924 void m68k_op_svs_8_pi7(void)
\r
4926 m68ki_write_8(EA_A7_PI_8(), COND_VS() ? 0xff : 0);
\r
4930 void m68k_op_svs_8_pd(void)
\r
4932 m68ki_write_8(EA_AY_PD_8(), COND_VS() ? 0xff : 0);
\r
4936 void m68k_op_svs_8_pd7(void)
\r
4938 m68ki_write_8(EA_A7_PD_8(), COND_VS() ? 0xff : 0);
\r
4942 void m68k_op_svs_8_di(void)
\r
4944 m68ki_write_8(EA_AY_DI_8(), COND_VS() ? 0xff : 0);
\r
4948 void m68k_op_svs_8_ix(void)
\r
4950 m68ki_write_8(EA_AY_IX_8(), COND_VS() ? 0xff : 0);
\r
4954 void m68k_op_svs_8_aw(void)
\r
4956 m68ki_write_8(EA_AW_8(), COND_VS() ? 0xff : 0);
\r
4960 void m68k_op_svs_8_al(void)
\r
4962 m68ki_write_8(EA_AL_8(), COND_VS() ? 0xff : 0);
\r
4966 void m68k_op_spl_8_ai(void)
\r
4968 m68ki_write_8(EA_AY_AI_8(), COND_PL() ? 0xff : 0);
\r
4972 void m68k_op_spl_8_pi(void)
\r
4974 m68ki_write_8(EA_AY_PI_8(), COND_PL() ? 0xff : 0);
\r
4978 void m68k_op_spl_8_pi7(void)
\r
4980 m68ki_write_8(EA_A7_PI_8(), COND_PL() ? 0xff : 0);
\r
4984 void m68k_op_spl_8_pd(void)
\r
4986 m68ki_write_8(EA_AY_PD_8(), COND_PL() ? 0xff : 0);
\r
4990 void m68k_op_spl_8_pd7(void)
\r
4992 m68ki_write_8(EA_A7_PD_8(), COND_PL() ? 0xff : 0);
\r
4996 void m68k_op_spl_8_di(void)
\r
4998 m68ki_write_8(EA_AY_DI_8(), COND_PL() ? 0xff : 0);
\r
5002 void m68k_op_spl_8_ix(void)
\r
5004 m68ki_write_8(EA_AY_IX_8(), COND_PL() ? 0xff : 0);
\r
5008 void m68k_op_spl_8_aw(void)
\r
5010 m68ki_write_8(EA_AW_8(), COND_PL() ? 0xff : 0);
\r
5014 void m68k_op_spl_8_al(void)
\r
5016 m68ki_write_8(EA_AL_8(), COND_PL() ? 0xff : 0);
\r
5020 void m68k_op_smi_8_ai(void)
\r
5022 m68ki_write_8(EA_AY_AI_8(), COND_MI() ? 0xff : 0);
\r
5026 void m68k_op_smi_8_pi(void)
\r
5028 m68ki_write_8(EA_AY_PI_8(), COND_MI() ? 0xff : 0);
\r
5032 void m68k_op_smi_8_pi7(void)
\r
5034 m68ki_write_8(EA_A7_PI_8(), COND_MI() ? 0xff : 0);
\r
5038 void m68k_op_smi_8_pd(void)
\r
5040 m68ki_write_8(EA_AY_PD_8(), COND_MI() ? 0xff : 0);
\r
5044 void m68k_op_smi_8_pd7(void)
\r
5046 m68ki_write_8(EA_A7_PD_8(), COND_MI() ? 0xff : 0);
\r
5050 void m68k_op_smi_8_di(void)
\r
5052 m68ki_write_8(EA_AY_DI_8(), COND_MI() ? 0xff : 0);
\r
5056 void m68k_op_smi_8_ix(void)
\r
5058 m68ki_write_8(EA_AY_IX_8(), COND_MI() ? 0xff : 0);
\r
5062 void m68k_op_smi_8_aw(void)
\r
5064 m68ki_write_8(EA_AW_8(), COND_MI() ? 0xff : 0);
\r
5068 void m68k_op_smi_8_al(void)
\r
5070 m68ki_write_8(EA_AL_8(), COND_MI() ? 0xff : 0);
\r
5074 void m68k_op_sge_8_ai(void)
\r
5076 m68ki_write_8(EA_AY_AI_8(), COND_GE() ? 0xff : 0);
\r
5080 void m68k_op_sge_8_pi(void)
\r
5082 m68ki_write_8(EA_AY_PI_8(), COND_GE() ? 0xff : 0);
\r
5086 void m68k_op_sge_8_pi7(void)
\r
5088 m68ki_write_8(EA_A7_PI_8(), COND_GE() ? 0xff : 0);
\r
5092 void m68k_op_sge_8_pd(void)
\r
5094 m68ki_write_8(EA_AY_PD_8(), COND_GE() ? 0xff : 0);
\r
5098 void m68k_op_sge_8_pd7(void)
\r
5100 m68ki_write_8(EA_A7_PD_8(), COND_GE() ? 0xff : 0);
\r
5104 void m68k_op_sge_8_di(void)
\r
5106 m68ki_write_8(EA_AY_DI_8(), COND_GE() ? 0xff : 0);
\r
5110 void m68k_op_sge_8_ix(void)
\r
5112 m68ki_write_8(EA_AY_IX_8(), COND_GE() ? 0xff : 0);
\r
5116 void m68k_op_sge_8_aw(void)
\r
5118 m68ki_write_8(EA_AW_8(), COND_GE() ? 0xff : 0);
\r
5122 void m68k_op_sge_8_al(void)
\r
5124 m68ki_write_8(EA_AL_8(), COND_GE() ? 0xff : 0);
\r
5128 void m68k_op_slt_8_ai(void)
\r
5130 m68ki_write_8(EA_AY_AI_8(), COND_LT() ? 0xff : 0);
\r
5134 void m68k_op_slt_8_pi(void)
\r
5136 m68ki_write_8(EA_AY_PI_8(), COND_LT() ? 0xff : 0);
\r
5140 void m68k_op_slt_8_pi7(void)
\r
5142 m68ki_write_8(EA_A7_PI_8(), COND_LT() ? 0xff : 0);
\r
5146 void m68k_op_slt_8_pd(void)
\r
5148 m68ki_write_8(EA_AY_PD_8(), COND_LT() ? 0xff : 0);
\r
5152 void m68k_op_slt_8_pd7(void)
\r
5154 m68ki_write_8(EA_A7_PD_8(), COND_LT() ? 0xff : 0);
\r
5158 void m68k_op_slt_8_di(void)
\r
5160 m68ki_write_8(EA_AY_DI_8(), COND_LT() ? 0xff : 0);
\r
5164 void m68k_op_slt_8_ix(void)
\r
5166 m68ki_write_8(EA_AY_IX_8(), COND_LT() ? 0xff : 0);
\r
5170 void m68k_op_slt_8_aw(void)
\r
5172 m68ki_write_8(EA_AW_8(), COND_LT() ? 0xff : 0);
\r
5176 void m68k_op_slt_8_al(void)
\r
5178 m68ki_write_8(EA_AL_8(), COND_LT() ? 0xff : 0);
\r
5182 void m68k_op_sgt_8_ai(void)
\r
5184 m68ki_write_8(EA_AY_AI_8(), COND_GT() ? 0xff : 0);
\r
5188 void m68k_op_sgt_8_pi(void)
\r
5190 m68ki_write_8(EA_AY_PI_8(), COND_GT() ? 0xff : 0);
\r
5194 void m68k_op_sgt_8_pi7(void)
\r
5196 m68ki_write_8(EA_A7_PI_8(), COND_GT() ? 0xff : 0);
\r
5200 void m68k_op_sgt_8_pd(void)
\r
5202 m68ki_write_8(EA_AY_PD_8(), COND_GT() ? 0xff : 0);
\r
5206 void m68k_op_sgt_8_pd7(void)
\r
5208 m68ki_write_8(EA_A7_PD_8(), COND_GT() ? 0xff : 0);
\r
5212 void m68k_op_sgt_8_di(void)
\r
5214 m68ki_write_8(EA_AY_DI_8(), COND_GT() ? 0xff : 0);
\r
5218 void m68k_op_sgt_8_ix(void)
\r
5220 m68ki_write_8(EA_AY_IX_8(), COND_GT() ? 0xff : 0);
\r
5224 void m68k_op_sgt_8_aw(void)
\r
5226 m68ki_write_8(EA_AW_8(), COND_GT() ? 0xff : 0);
\r
5230 void m68k_op_sgt_8_al(void)
\r
5232 m68ki_write_8(EA_AL_8(), COND_GT() ? 0xff : 0);
\r
5236 void m68k_op_sle_8_ai(void)
\r
5238 m68ki_write_8(EA_AY_AI_8(), COND_LE() ? 0xff : 0);
\r
5242 void m68k_op_sle_8_pi(void)
\r
5244 m68ki_write_8(EA_AY_PI_8(), COND_LE() ? 0xff : 0);
\r
5248 void m68k_op_sle_8_pi7(void)
\r
5250 m68ki_write_8(EA_A7_PI_8(), COND_LE() ? 0xff : 0);
\r
5254 void m68k_op_sle_8_pd(void)
\r
5256 m68ki_write_8(EA_AY_PD_8(), COND_LE() ? 0xff : 0);
\r
5260 void m68k_op_sle_8_pd7(void)
\r
5262 m68ki_write_8(EA_A7_PD_8(), COND_LE() ? 0xff : 0);
\r
5266 void m68k_op_sle_8_di(void)
\r
5268 m68ki_write_8(EA_AY_DI_8(), COND_LE() ? 0xff : 0);
\r
5272 void m68k_op_sle_8_ix(void)
\r
5274 m68ki_write_8(EA_AY_IX_8(), COND_LE() ? 0xff : 0);
\r
5278 void m68k_op_sle_8_aw(void)
\r
5280 m68ki_write_8(EA_AW_8(), COND_LE() ? 0xff : 0);
\r
5284 void m68k_op_sle_8_al(void)
\r
5286 m68ki_write_8(EA_AL_8(), COND_LE() ? 0xff : 0);
\r
5290 void m68k_op_stop(void)
\r
5294 uint new_sr = OPER_I_16();
\r
5295 m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
\r
5296 CPU_STOPPED |= STOP_LEVEL_STOP;
\r
5297 m68ki_set_sr(new_sr);
\r
5298 m68ki_remaining_cycles = 0;
\r
5301 m68ki_exception_privilege_violation();
\r
5305 void m68k_op_sub_8_er_d(void)
\r
5307 uint* r_dst = &DX;
\r
5308 uint src = MASK_OUT_ABOVE_8(DY);
\r
5309 uint dst = MASK_OUT_ABOVE_8(*r_dst);
\r
5310 uint res = dst - src;
\r
5312 FLAG_N = NFLAG_8(res);
\r
5313 FLAG_X = FLAG_C = CFLAG_8(res);
\r
5314 FLAG_V = VFLAG_SUB_8(src, dst, res);
\r
5315 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
5317 *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
\r
5321 void m68k_op_sub_8_er_ai(void)
\r
5323 uint* r_dst = &DX;
\r
5324 uint src = OPER_AY_AI_8();
\r
5325 uint dst = MASK_OUT_ABOVE_8(*r_dst);
\r
5326 uint res = dst - src;
\r
5328 FLAG_N = NFLAG_8(res);
\r
5329 FLAG_X = FLAG_C = CFLAG_8(res);
\r
5330 FLAG_V = VFLAG_SUB_8(src, dst, res);
\r
5331 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
5333 *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
\r
5337 void m68k_op_sub_8_er_pi(void)
\r
5339 uint* r_dst = &DX;
\r
5340 uint src = OPER_AY_PI_8();
\r
5341 uint dst = MASK_OUT_ABOVE_8(*r_dst);
\r
5342 uint res = dst - src;
\r
5344 FLAG_N = NFLAG_8(res);
\r
5345 FLAG_X = FLAG_C = CFLAG_8(res);
\r
5346 FLAG_V = VFLAG_SUB_8(src, dst, res);
\r
5347 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
5349 *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
\r
5353 void m68k_op_sub_8_er_pi7(void)
\r
5355 uint* r_dst = &DX;
\r
5356 uint src = OPER_A7_PI_8();
\r
5357 uint dst = MASK_OUT_ABOVE_8(*r_dst);
\r
5358 uint res = dst - src;
\r
5360 FLAG_N = NFLAG_8(res);
\r
5361 FLAG_X = FLAG_C = CFLAG_8(res);
\r
5362 FLAG_V = VFLAG_SUB_8(src, dst, res);
\r
5363 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
5365 *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
\r
5369 void m68k_op_sub_8_er_pd(void)
\r
5371 uint* r_dst = &DX;
\r
5372 uint src = OPER_AY_PD_8();
\r
5373 uint dst = MASK_OUT_ABOVE_8(*r_dst);
\r
5374 uint res = dst - src;
\r
5376 FLAG_N = NFLAG_8(res);
\r
5377 FLAG_X = FLAG_C = CFLAG_8(res);
\r
5378 FLAG_V = VFLAG_SUB_8(src, dst, res);
\r
5379 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
5381 *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
\r
5385 void m68k_op_sub_8_er_pd7(void)
\r
5387 uint* r_dst = &DX;
\r
5388 uint src = OPER_A7_PD_8();
\r
5389 uint dst = MASK_OUT_ABOVE_8(*r_dst);
\r
5390 uint res = dst - src;
\r
5392 FLAG_N = NFLAG_8(res);
\r
5393 FLAG_X = FLAG_C = CFLAG_8(res);
\r
5394 FLAG_V = VFLAG_SUB_8(src, dst, res);
\r
5395 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
5397 *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
\r
5401 void m68k_op_sub_8_er_di(void)
\r
5403 uint* r_dst = &DX;
\r
5404 uint src = OPER_AY_DI_8();
\r
5405 uint dst = MASK_OUT_ABOVE_8(*r_dst);
\r
5406 uint res = dst - src;
\r
5408 FLAG_N = NFLAG_8(res);
\r
5409 FLAG_X = FLAG_C = CFLAG_8(res);
\r
5410 FLAG_V = VFLAG_SUB_8(src, dst, res);
\r
5411 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
5413 *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
\r
5417 void m68k_op_sub_8_er_ix(void)
\r
5419 uint* r_dst = &DX;
\r
5420 uint src = OPER_AY_IX_8();
\r
5421 uint dst = MASK_OUT_ABOVE_8(*r_dst);
\r
5422 uint res = dst - src;
\r
5424 FLAG_N = NFLAG_8(res);
\r
5425 FLAG_X = FLAG_C = CFLAG_8(res);
\r
5426 FLAG_V = VFLAG_SUB_8(src, dst, res);
\r
5427 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
5429 *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
\r
5433 void m68k_op_sub_8_er_aw(void)
\r
5435 uint* r_dst = &DX;
\r
5436 uint src = OPER_AW_8();
\r
5437 uint dst = MASK_OUT_ABOVE_8(*r_dst);
\r
5438 uint res = dst - src;
\r
5440 FLAG_N = NFLAG_8(res);
\r
5441 FLAG_X = FLAG_C = CFLAG_8(res);
\r
5442 FLAG_V = VFLAG_SUB_8(src, dst, res);
\r
5443 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
5445 *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
\r
5449 void m68k_op_sub_8_er_al(void)
\r
5451 uint* r_dst = &DX;
\r
5452 uint src = OPER_AL_8();
\r
5453 uint dst = MASK_OUT_ABOVE_8(*r_dst);
\r
5454 uint res = dst - src;
\r
5456 FLAG_N = NFLAG_8(res);
\r
5457 FLAG_X = FLAG_C = CFLAG_8(res);
\r
5458 FLAG_V = VFLAG_SUB_8(src, dst, res);
\r
5459 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
5461 *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
\r
5465 void m68k_op_sub_8_er_pcdi(void)
\r
5467 uint* r_dst = &DX;
\r
5468 uint src = OPER_PCDI_8();
\r
5469 uint dst = MASK_OUT_ABOVE_8(*r_dst);
\r
5470 uint res = dst - src;
\r
5472 FLAG_N = NFLAG_8(res);
\r
5473 FLAG_X = FLAG_C = CFLAG_8(res);
\r
5474 FLAG_V = VFLAG_SUB_8(src, dst, res);
\r
5475 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
5477 *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
\r
5481 void m68k_op_sub_8_er_pcix(void)
\r
5483 uint* r_dst = &DX;
\r
5484 uint src = OPER_PCIX_8();
\r
5485 uint dst = MASK_OUT_ABOVE_8(*r_dst);
\r
5486 uint res = dst - src;
\r
5488 FLAG_N = NFLAG_8(res);
\r
5489 FLAG_X = FLAG_C = CFLAG_8(res);
\r
5490 FLAG_V = VFLAG_SUB_8(src, dst, res);
\r
5491 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
5493 *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
\r
5497 void m68k_op_sub_8_er_i(void)
\r
5499 uint* r_dst = &DX;
\r
5500 uint src = OPER_I_8();
\r
5501 uint dst = MASK_OUT_ABOVE_8(*r_dst);
\r
5502 uint res = dst - src;
\r
5504 FLAG_N = NFLAG_8(res);
\r
5505 FLAG_X = FLAG_C = CFLAG_8(res);
\r
5506 FLAG_V = VFLAG_SUB_8(src, dst, res);
\r
5507 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
5509 *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
\r
5513 void m68k_op_sub_16_er_d(void)
\r
5515 uint* r_dst = &DX;
\r
5516 uint src = MASK_OUT_ABOVE_16(DY);
\r
5517 uint dst = MASK_OUT_ABOVE_16(*r_dst);
\r
5518 uint res = dst - src;
\r
5520 FLAG_N = NFLAG_16(res);
\r
5521 FLAG_X = FLAG_C = CFLAG_16(res);
\r
5522 FLAG_V = VFLAG_SUB_16(src, dst, res);
\r
5523 FLAG_Z = MASK_OUT_ABOVE_16(res);
\r
5525 *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
\r
5529 void m68k_op_sub_16_er_a(void)
\r
5531 uint* r_dst = &DX;
\r
5532 uint src = MASK_OUT_ABOVE_16(AY);
\r
5533 uint dst = MASK_OUT_ABOVE_16(*r_dst);
\r
5534 uint res = dst - src;
\r
5536 FLAG_N = NFLAG_16(res);
\r
5537 FLAG_X = FLAG_C = CFLAG_16(res);
\r
5538 FLAG_V = VFLAG_SUB_16(src, dst, res);
\r
5539 FLAG_Z = MASK_OUT_ABOVE_16(res);
\r
5541 *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
\r
5545 void m68k_op_sub_16_er_ai(void)
\r
5547 uint* r_dst = &DX;
\r
5548 uint src = OPER_AY_AI_16();
\r
5549 uint dst = MASK_OUT_ABOVE_16(*r_dst);
\r
5550 uint res = dst - src;
\r
5552 FLAG_N = NFLAG_16(res);
\r
5553 FLAG_X = FLAG_C = CFLAG_16(res);
\r
5554 FLAG_V = VFLAG_SUB_16(src, dst, res);
\r
5555 FLAG_Z = MASK_OUT_ABOVE_16(res);
\r
5557 *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
\r
5561 void m68k_op_sub_16_er_pi(void)
\r
5563 uint* r_dst = &DX;
\r
5564 uint src = OPER_AY_PI_16();
\r
5565 uint dst = MASK_OUT_ABOVE_16(*r_dst);
\r
5566 uint res = dst - src;
\r
5568 FLAG_N = NFLAG_16(res);
\r
5569 FLAG_X = FLAG_C = CFLAG_16(res);
\r
5570 FLAG_V = VFLAG_SUB_16(src, dst, res);
\r
5571 FLAG_Z = MASK_OUT_ABOVE_16(res);
\r
5573 *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
\r
5577 void m68k_op_sub_16_er_pd(void)
\r
5579 uint* r_dst = &DX;
\r
5580 uint src = OPER_AY_PD_16();
\r
5581 uint dst = MASK_OUT_ABOVE_16(*r_dst);
\r
5582 uint res = dst - src;
\r
5584 FLAG_N = NFLAG_16(res);
\r
5585 FLAG_X = FLAG_C = CFLAG_16(res);
\r
5586 FLAG_V = VFLAG_SUB_16(src, dst, res);
\r
5587 FLAG_Z = MASK_OUT_ABOVE_16(res);
\r
5589 *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
\r
5593 void m68k_op_sub_16_er_di(void)
\r
5595 uint* r_dst = &DX;
\r
5596 uint src = OPER_AY_DI_16();
\r
5597 uint dst = MASK_OUT_ABOVE_16(*r_dst);
\r
5598 uint res = dst - src;
\r
5600 FLAG_N = NFLAG_16(res);
\r
5601 FLAG_X = FLAG_C = CFLAG_16(res);
\r
5602 FLAG_V = VFLAG_SUB_16(src, dst, res);
\r
5603 FLAG_Z = MASK_OUT_ABOVE_16(res);
\r
5605 *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
\r
5609 void m68k_op_sub_16_er_ix(void)
\r
5611 uint* r_dst = &DX;
\r
5612 uint src = OPER_AY_IX_16();
\r
5613 uint dst = MASK_OUT_ABOVE_16(*r_dst);
\r
5614 uint res = dst - src;
\r
5616 FLAG_N = NFLAG_16(res);
\r
5617 FLAG_X = FLAG_C = CFLAG_16(res);
\r
5618 FLAG_V = VFLAG_SUB_16(src, dst, res);
\r
5619 FLAG_Z = MASK_OUT_ABOVE_16(res);
\r
5621 *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
\r
5625 void m68k_op_sub_16_er_aw(void)
\r
5627 uint* r_dst = &DX;
\r
5628 uint src = OPER_AW_16();
\r
5629 uint dst = MASK_OUT_ABOVE_16(*r_dst);
\r
5630 uint res = dst - src;
\r
5632 FLAG_N = NFLAG_16(res);
\r
5633 FLAG_X = FLAG_C = CFLAG_16(res);
\r
5634 FLAG_V = VFLAG_SUB_16(src, dst, res);
\r
5635 FLAG_Z = MASK_OUT_ABOVE_16(res);
\r
5637 *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
\r
5641 void m68k_op_sub_16_er_al(void)
\r
5643 uint* r_dst = &DX;
\r
5644 uint src = OPER_AL_16();
\r
5645 uint dst = MASK_OUT_ABOVE_16(*r_dst);
\r
5646 uint res = dst - src;
\r
5648 FLAG_N = NFLAG_16(res);
\r
5649 FLAG_X = FLAG_C = CFLAG_16(res);
\r
5650 FLAG_V = VFLAG_SUB_16(src, dst, res);
\r
5651 FLAG_Z = MASK_OUT_ABOVE_16(res);
\r
5653 *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
\r
5657 void m68k_op_sub_16_er_pcdi(void)
\r
5659 uint* r_dst = &DX;
\r
5660 uint src = OPER_PCDI_16();
\r
5661 uint dst = MASK_OUT_ABOVE_16(*r_dst);
\r
5662 uint res = dst - src;
\r
5664 FLAG_N = NFLAG_16(res);
\r
5665 FLAG_X = FLAG_C = CFLAG_16(res);
\r
5666 FLAG_V = VFLAG_SUB_16(src, dst, res);
\r
5667 FLAG_Z = MASK_OUT_ABOVE_16(res);
\r
5669 *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
\r
5673 void m68k_op_sub_16_er_pcix(void)
\r
5675 uint* r_dst = &DX;
\r
5676 uint src = OPER_PCIX_16();
\r
5677 uint dst = MASK_OUT_ABOVE_16(*r_dst);
\r
5678 uint res = dst - src;
\r
5680 FLAG_N = NFLAG_16(res);
\r
5681 FLAG_X = FLAG_C = CFLAG_16(res);
\r
5682 FLAG_V = VFLAG_SUB_16(src, dst, res);
\r
5683 FLAG_Z = MASK_OUT_ABOVE_16(res);
\r
5685 *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
\r
5689 void m68k_op_sub_16_er_i(void)
\r
5691 uint* r_dst = &DX;
\r
5692 uint src = OPER_I_16();
\r
5693 uint dst = MASK_OUT_ABOVE_16(*r_dst);
\r
5694 uint res = dst - src;
\r
5696 FLAG_N = NFLAG_16(res);
\r
5697 FLAG_X = FLAG_C = CFLAG_16(res);
\r
5698 FLAG_V = VFLAG_SUB_16(src, dst, res);
\r
5699 FLAG_Z = MASK_OUT_ABOVE_16(res);
\r
5701 *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
\r
5705 void m68k_op_sub_32_er_d(void)
\r
5707 uint* r_dst = &DX;
\r
5709 uint dst = *r_dst;
\r
5710 uint res = dst - src;
\r
5712 FLAG_N = NFLAG_32(res);
\r
5713 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
\r
5714 FLAG_V = VFLAG_SUB_32(src, dst, res);
\r
5715 FLAG_Z = MASK_OUT_ABOVE_32(res);
\r
5721 void m68k_op_sub_32_er_a(void)
\r
5723 uint* r_dst = &DX;
\r
5725 uint dst = *r_dst;
\r
5726 uint res = dst - src;
\r
5728 FLAG_N = NFLAG_32(res);
\r
5729 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
\r
5730 FLAG_V = VFLAG_SUB_32(src, dst, res);
\r
5731 FLAG_Z = MASK_OUT_ABOVE_32(res);
\r
5737 void m68k_op_sub_32_er_ai(void)
\r
5739 uint* r_dst = &DX;
\r
5740 uint src = OPER_AY_AI_32();
\r
5741 uint dst = *r_dst;
\r
5742 uint res = dst - src;
\r
5744 FLAG_N = NFLAG_32(res);
\r
5745 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
\r
5746 FLAG_V = VFLAG_SUB_32(src, dst, res);
\r
5747 FLAG_Z = MASK_OUT_ABOVE_32(res);
\r
5753 void m68k_op_sub_32_er_pi(void)
\r
5755 uint* r_dst = &DX;
\r
5756 uint src = OPER_AY_PI_32();
\r
5757 uint dst = *r_dst;
\r
5758 uint res = dst - src;
\r
5760 FLAG_N = NFLAG_32(res);
\r
5761 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
\r
5762 FLAG_V = VFLAG_SUB_32(src, dst, res);
\r
5763 FLAG_Z = MASK_OUT_ABOVE_32(res);
\r
5769 void m68k_op_sub_32_er_pd(void)
\r
5771 uint* r_dst = &DX;
\r
5772 uint src = OPER_AY_PD_32();
\r
5773 uint dst = *r_dst;
\r
5774 uint res = dst - src;
\r
5776 FLAG_N = NFLAG_32(res);
\r
5777 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
\r
5778 FLAG_V = VFLAG_SUB_32(src, dst, res);
\r
5779 FLAG_Z = MASK_OUT_ABOVE_32(res);
\r
5785 void m68k_op_sub_32_er_di(void)
\r
5787 uint* r_dst = &DX;
\r
5788 uint src = OPER_AY_DI_32();
\r
5789 uint dst = *r_dst;
\r
5790 uint res = dst - src;
\r
5792 FLAG_N = NFLAG_32(res);
\r
5793 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
\r
5794 FLAG_V = VFLAG_SUB_32(src, dst, res);
\r
5795 FLAG_Z = MASK_OUT_ABOVE_32(res);
\r
5801 void m68k_op_sub_32_er_ix(void)
\r
5803 uint* r_dst = &DX;
\r
5804 uint src = OPER_AY_IX_32();
\r
5805 uint dst = *r_dst;
\r
5806 uint res = dst - src;
\r
5808 FLAG_N = NFLAG_32(res);
\r
5809 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
\r
5810 FLAG_V = VFLAG_SUB_32(src, dst, res);
\r
5811 FLAG_Z = MASK_OUT_ABOVE_32(res);
\r
5817 void m68k_op_sub_32_er_aw(void)
\r
5819 uint* r_dst = &DX;
\r
5820 uint src = OPER_AW_32();
\r
5821 uint dst = *r_dst;
\r
5822 uint res = dst - src;
\r
5824 FLAG_N = NFLAG_32(res);
\r
5825 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
\r
5826 FLAG_V = VFLAG_SUB_32(src, dst, res);
\r
5827 FLAG_Z = MASK_OUT_ABOVE_32(res);
\r
5833 void m68k_op_sub_32_er_al(void)
\r
5835 uint* r_dst = &DX;
\r
5836 uint src = OPER_AL_32();
\r
5837 uint dst = *r_dst;
\r
5838 uint res = dst - src;
\r
5840 FLAG_N = NFLAG_32(res);
\r
5841 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
\r
5842 FLAG_V = VFLAG_SUB_32(src, dst, res);
\r
5843 FLAG_Z = MASK_OUT_ABOVE_32(res);
\r
5849 void m68k_op_sub_32_er_pcdi(void)
\r
5851 uint* r_dst = &DX;
\r
5852 uint src = OPER_PCDI_32();
\r
5853 uint dst = *r_dst;
\r
5854 uint res = dst - src;
\r
5856 FLAG_N = NFLAG_32(res);
\r
5857 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
\r
5858 FLAG_V = VFLAG_SUB_32(src, dst, res);
\r
5859 FLAG_Z = MASK_OUT_ABOVE_32(res);
\r
5865 void m68k_op_sub_32_er_pcix(void)
\r
5867 uint* r_dst = &DX;
\r
5868 uint src = OPER_PCIX_32();
\r
5869 uint dst = *r_dst;
\r
5870 uint res = dst - src;
\r
5872 FLAG_N = NFLAG_32(res);
\r
5873 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
\r
5874 FLAG_V = VFLAG_SUB_32(src, dst, res);
\r
5875 FLAG_Z = MASK_OUT_ABOVE_32(res);
\r
5881 void m68k_op_sub_32_er_i(void)
\r
5883 uint* r_dst = &DX;
\r
5884 uint src = OPER_I_32();
\r
5885 uint dst = *r_dst;
\r
5886 uint res = dst - src;
\r
5888 FLAG_N = NFLAG_32(res);
\r
5889 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
\r
5890 FLAG_V = VFLAG_SUB_32(src, dst, res);
\r
5891 FLAG_Z = MASK_OUT_ABOVE_32(res);
\r
5897 void m68k_op_sub_8_re_ai(void)
\r
5899 uint ea = EA_AY_AI_8();
\r
5900 uint src = MASK_OUT_ABOVE_8(DX);
\r
5901 uint dst = m68ki_read_8(ea);
\r
5902 uint res = dst - src;
\r
5904 FLAG_N = NFLAG_8(res);
\r
5905 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
5906 FLAG_X = FLAG_C = CFLAG_8(res);
\r
5907 FLAG_V = VFLAG_SUB_8(src, dst, res);
\r
5909 m68ki_write_8(ea, FLAG_Z);
\r
5913 void m68k_op_sub_8_re_pi(void)
\r
5915 uint ea = EA_AY_PI_8();
\r
5916 uint src = MASK_OUT_ABOVE_8(DX);
\r
5917 uint dst = m68ki_read_8(ea);
\r
5918 uint res = dst - src;
\r
5920 FLAG_N = NFLAG_8(res);
\r
5921 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
5922 FLAG_X = FLAG_C = CFLAG_8(res);
\r
5923 FLAG_V = VFLAG_SUB_8(src, dst, res);
\r
5925 m68ki_write_8(ea, FLAG_Z);
\r
5929 void m68k_op_sub_8_re_pi7(void)
\r
5931 uint ea = EA_A7_PI_8();
\r
5932 uint src = MASK_OUT_ABOVE_8(DX);
\r
5933 uint dst = m68ki_read_8(ea);
\r
5934 uint res = dst - src;
\r
5936 FLAG_N = NFLAG_8(res);
\r
5937 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
5938 FLAG_X = FLAG_C = CFLAG_8(res);
\r
5939 FLAG_V = VFLAG_SUB_8(src, dst, res);
\r
5941 m68ki_write_8(ea, FLAG_Z);
\r
5945 void m68k_op_sub_8_re_pd(void)
\r
5947 uint ea = EA_AY_PD_8();
\r
5948 uint src = MASK_OUT_ABOVE_8(DX);
\r
5949 uint dst = m68ki_read_8(ea);
\r
5950 uint res = dst - src;
\r
5952 FLAG_N = NFLAG_8(res);
\r
5953 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
5954 FLAG_X = FLAG_C = CFLAG_8(res);
\r
5955 FLAG_V = VFLAG_SUB_8(src, dst, res);
\r
5957 m68ki_write_8(ea, FLAG_Z);
\r
5961 void m68k_op_sub_8_re_pd7(void)
\r
5963 uint ea = EA_A7_PD_8();
\r
5964 uint src = MASK_OUT_ABOVE_8(DX);
\r
5965 uint dst = m68ki_read_8(ea);
\r
5966 uint res = dst - src;
\r
5968 FLAG_N = NFLAG_8(res);
\r
5969 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
5970 FLAG_X = FLAG_C = CFLAG_8(res);
\r
5971 FLAG_V = VFLAG_SUB_8(src, dst, res);
\r
5973 m68ki_write_8(ea, FLAG_Z);
\r
5977 void m68k_op_sub_8_re_di(void)
\r
5979 uint ea = EA_AY_DI_8();
\r
5980 uint src = MASK_OUT_ABOVE_8(DX);
\r
5981 uint dst = m68ki_read_8(ea);
\r
5982 uint res = dst - src;
\r
5984 FLAG_N = NFLAG_8(res);
\r
5985 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
5986 FLAG_X = FLAG_C = CFLAG_8(res);
\r
5987 FLAG_V = VFLAG_SUB_8(src, dst, res);
\r
5989 m68ki_write_8(ea, FLAG_Z);
\r
5993 void m68k_op_sub_8_re_ix(void)
\r
5995 uint ea = EA_AY_IX_8();
\r
5996 uint src = MASK_OUT_ABOVE_8(DX);
\r
5997 uint dst = m68ki_read_8(ea);
\r
5998 uint res = dst - src;
\r
6000 FLAG_N = NFLAG_8(res);
\r
6001 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
6002 FLAG_X = FLAG_C = CFLAG_8(res);
\r
6003 FLAG_V = VFLAG_SUB_8(src, dst, res);
\r
6005 m68ki_write_8(ea, FLAG_Z);
\r
6009 void m68k_op_sub_8_re_aw(void)
\r
6011 uint ea = EA_AW_8();
\r
6012 uint src = MASK_OUT_ABOVE_8(DX);
\r
6013 uint dst = m68ki_read_8(ea);
\r
6014 uint res = dst - src;
\r
6016 FLAG_N = NFLAG_8(res);
\r
6017 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
6018 FLAG_X = FLAG_C = CFLAG_8(res);
\r
6019 FLAG_V = VFLAG_SUB_8(src, dst, res);
\r
6021 m68ki_write_8(ea, FLAG_Z);
\r
6025 void m68k_op_sub_8_re_al(void)
\r
6027 uint ea = EA_AL_8();
\r
6028 uint src = MASK_OUT_ABOVE_8(DX);
\r
6029 uint dst = m68ki_read_8(ea);
\r
6030 uint res = dst - src;
\r
6032 FLAG_N = NFLAG_8(res);
\r
6033 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
6034 FLAG_X = FLAG_C = CFLAG_8(res);
\r
6035 FLAG_V = VFLAG_SUB_8(src, dst, res);
\r
6037 m68ki_write_8(ea, FLAG_Z);
\r
6041 void m68k_op_sub_16_re_ai(void)
\r
6043 uint ea = EA_AY_AI_16();
\r
6044 uint src = MASK_OUT_ABOVE_16(DX);
\r
6045 uint dst = m68ki_read_16(ea);
\r
6046 uint res = dst - src;
\r
6048 FLAG_N = NFLAG_16(res);
\r
6049 FLAG_Z = MASK_OUT_ABOVE_16(res);
\r
6050 FLAG_X = FLAG_C = CFLAG_16(res);
\r
6051 FLAG_V = VFLAG_SUB_16(src, dst, res);
\r
6053 m68ki_write_16(ea, FLAG_Z);
\r
6057 void m68k_op_sub_16_re_pi(void)
\r
6059 uint ea = EA_AY_PI_16();
\r
6060 uint src = MASK_OUT_ABOVE_16(DX);
\r
6061 uint dst = m68ki_read_16(ea);
\r
6062 uint res = dst - src;
\r
6064 FLAG_N = NFLAG_16(res);
\r
6065 FLAG_Z = MASK_OUT_ABOVE_16(res);
\r
6066 FLAG_X = FLAG_C = CFLAG_16(res);
\r
6067 FLAG_V = VFLAG_SUB_16(src, dst, res);
\r
6069 m68ki_write_16(ea, FLAG_Z);
\r
6073 void m68k_op_sub_16_re_pd(void)
\r
6075 uint ea = EA_AY_PD_16();
\r
6076 uint src = MASK_OUT_ABOVE_16(DX);
\r
6077 uint dst = m68ki_read_16(ea);
\r
6078 uint res = dst - src;
\r
6080 FLAG_N = NFLAG_16(res);
\r
6081 FLAG_Z = MASK_OUT_ABOVE_16(res);
\r
6082 FLAG_X = FLAG_C = CFLAG_16(res);
\r
6083 FLAG_V = VFLAG_SUB_16(src, dst, res);
\r
6085 m68ki_write_16(ea, FLAG_Z);
\r
6089 void m68k_op_sub_16_re_di(void)
\r
6091 uint ea = EA_AY_DI_16();
\r
6092 uint src = MASK_OUT_ABOVE_16(DX);
\r
6093 uint dst = m68ki_read_16(ea);
\r
6094 uint res = dst - src;
\r
6096 FLAG_N = NFLAG_16(res);
\r
6097 FLAG_Z = MASK_OUT_ABOVE_16(res);
\r
6098 FLAG_X = FLAG_C = CFLAG_16(res);
\r
6099 FLAG_V = VFLAG_SUB_16(src, dst, res);
\r
6101 m68ki_write_16(ea, FLAG_Z);
\r
6105 void m68k_op_sub_16_re_ix(void)
\r
6107 uint ea = EA_AY_IX_16();
\r
6108 uint src = MASK_OUT_ABOVE_16(DX);
\r
6109 uint dst = m68ki_read_16(ea);
\r
6110 uint res = dst - src;
\r
6112 FLAG_N = NFLAG_16(res);
\r
6113 FLAG_Z = MASK_OUT_ABOVE_16(res);
\r
6114 FLAG_X = FLAG_C = CFLAG_16(res);
\r
6115 FLAG_V = VFLAG_SUB_16(src, dst, res);
\r
6117 m68ki_write_16(ea, FLAG_Z);
\r
6121 void m68k_op_sub_16_re_aw(void)
\r
6123 uint ea = EA_AW_16();
\r
6124 uint src = MASK_OUT_ABOVE_16(DX);
\r
6125 uint dst = m68ki_read_16(ea);
\r
6126 uint res = dst - src;
\r
6128 FLAG_N = NFLAG_16(res);
\r
6129 FLAG_Z = MASK_OUT_ABOVE_16(res);
\r
6130 FLAG_X = FLAG_C = CFLAG_16(res);
\r
6131 FLAG_V = VFLAG_SUB_16(src, dst, res);
\r
6133 m68ki_write_16(ea, FLAG_Z);
\r
6137 void m68k_op_sub_16_re_al(void)
\r
6139 uint ea = EA_AL_16();
\r
6140 uint src = MASK_OUT_ABOVE_16(DX);
\r
6141 uint dst = m68ki_read_16(ea);
\r
6142 uint res = dst - src;
\r
6144 FLAG_N = NFLAG_16(res);
\r
6145 FLAG_Z = MASK_OUT_ABOVE_16(res);
\r
6146 FLAG_X = FLAG_C = CFLAG_16(res);
\r
6147 FLAG_V = VFLAG_SUB_16(src, dst, res);
\r
6149 m68ki_write_16(ea, FLAG_Z);
\r
6153 void m68k_op_sub_32_re_ai(void)
\r
6155 uint ea = EA_AY_AI_32();
\r
6157 uint dst = m68ki_read_32(ea);
\r
6158 uint res = dst - src;
\r
6160 FLAG_N = NFLAG_32(res);
\r
6161 FLAG_Z = MASK_OUT_ABOVE_32(res);
\r
6162 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
\r
6163 FLAG_V = VFLAG_SUB_32(src, dst, res);
\r
6165 m68ki_write_32(ea, FLAG_Z);
\r
6169 void m68k_op_sub_32_re_pi(void)
\r
6171 uint ea = EA_AY_PI_32();
\r
6173 uint dst = m68ki_read_32(ea);
\r
6174 uint res = dst - src;
\r
6176 FLAG_N = NFLAG_32(res);
\r
6177 FLAG_Z = MASK_OUT_ABOVE_32(res);
\r
6178 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
\r
6179 FLAG_V = VFLAG_SUB_32(src, dst, res);
\r
6181 m68ki_write_32(ea, FLAG_Z);
\r
6185 void m68k_op_sub_32_re_pd(void)
\r
6187 uint ea = EA_AY_PD_32();
\r
6189 uint dst = m68ki_read_32(ea);
\r
6190 uint res = dst - src;
\r
6192 FLAG_N = NFLAG_32(res);
\r
6193 FLAG_Z = MASK_OUT_ABOVE_32(res);
\r
6194 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
\r
6195 FLAG_V = VFLAG_SUB_32(src, dst, res);
\r
6197 m68ki_write_32(ea, FLAG_Z);
\r
6201 void m68k_op_sub_32_re_di(void)
\r
6203 uint ea = EA_AY_DI_32();
\r
6205 uint dst = m68ki_read_32(ea);
\r
6206 uint res = dst - src;
\r
6208 FLAG_N = NFLAG_32(res);
\r
6209 FLAG_Z = MASK_OUT_ABOVE_32(res);
\r
6210 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
\r
6211 FLAG_V = VFLAG_SUB_32(src, dst, res);
\r
6213 m68ki_write_32(ea, FLAG_Z);
\r
6217 void m68k_op_sub_32_re_ix(void)
\r
6219 uint ea = EA_AY_IX_32();
\r
6221 uint dst = m68ki_read_32(ea);
\r
6222 uint res = dst - src;
\r
6224 FLAG_N = NFLAG_32(res);
\r
6225 FLAG_Z = MASK_OUT_ABOVE_32(res);
\r
6226 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
\r
6227 FLAG_V = VFLAG_SUB_32(src, dst, res);
\r
6229 m68ki_write_32(ea, FLAG_Z);
\r
6233 void m68k_op_sub_32_re_aw(void)
\r
6235 uint ea = EA_AW_32();
\r
6237 uint dst = m68ki_read_32(ea);
\r
6238 uint res = dst - src;
\r
6240 FLAG_N = NFLAG_32(res);
\r
6241 FLAG_Z = MASK_OUT_ABOVE_32(res);
\r
6242 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
\r
6243 FLAG_V = VFLAG_SUB_32(src, dst, res);
\r
6245 m68ki_write_32(ea, FLAG_Z);
\r
6249 void m68k_op_sub_32_re_al(void)
\r
6251 uint ea = EA_AL_32();
\r
6253 uint dst = m68ki_read_32(ea);
\r
6254 uint res = dst - src;
\r
6256 FLAG_N = NFLAG_32(res);
\r
6257 FLAG_Z = MASK_OUT_ABOVE_32(res);
\r
6258 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
\r
6259 FLAG_V = VFLAG_SUB_32(src, dst, res);
\r
6261 m68ki_write_32(ea, FLAG_Z);
\r
6265 void m68k_op_suba_16_d(void)
\r
6267 uint* r_dst = &AX;
\r
6269 *r_dst = MASK_OUT_ABOVE_32(*r_dst - MAKE_INT_16(DY));
\r
6273 void m68k_op_suba_16_a(void)
\r
6275 uint* r_dst = &AX;
\r
6277 *r_dst = MASK_OUT_ABOVE_32(*r_dst - MAKE_INT_16(AY));
\r
6281 void m68k_op_suba_16_ai(void)
\r
6283 uint* r_dst = &AX;
\r
6285 *r_dst = MASK_OUT_ABOVE_32(*r_dst - MAKE_INT_16(OPER_AY_AI_16()));
\r
6289 void m68k_op_suba_16_pi(void)
\r
6291 uint* r_dst = &AX;
\r
6293 *r_dst = MASK_OUT_ABOVE_32(*r_dst - MAKE_INT_16(OPER_AY_PI_16()));
\r
6297 void m68k_op_suba_16_pd(void)
\r
6299 uint* r_dst = &AX;
\r
6301 *r_dst = MASK_OUT_ABOVE_32(*r_dst - MAKE_INT_16(OPER_AY_PD_16()));
\r
6305 void m68k_op_suba_16_di(void)
\r
6307 uint* r_dst = &AX;
\r
6309 *r_dst = MASK_OUT_ABOVE_32(*r_dst - MAKE_INT_16(OPER_AY_DI_16()));
\r
6313 void m68k_op_suba_16_ix(void)
\r
6315 uint* r_dst = &AX;
\r
6317 *r_dst = MASK_OUT_ABOVE_32(*r_dst - MAKE_INT_16(OPER_AY_IX_16()));
\r
6321 void m68k_op_suba_16_aw(void)
\r
6323 uint* r_dst = &AX;
\r
6325 *r_dst = MASK_OUT_ABOVE_32(*r_dst - MAKE_INT_16(OPER_AW_16()));
\r
6329 void m68k_op_suba_16_al(void)
\r
6331 uint* r_dst = &AX;
\r
6333 *r_dst = MASK_OUT_ABOVE_32(*r_dst - MAKE_INT_16(OPER_AL_16()));
\r
6337 void m68k_op_suba_16_pcdi(void)
\r
6339 uint* r_dst = &AX;
\r
6341 *r_dst = MASK_OUT_ABOVE_32(*r_dst - MAKE_INT_16(OPER_PCDI_16()));
\r
6345 void m68k_op_suba_16_pcix(void)
\r
6347 uint* r_dst = &AX;
\r
6349 *r_dst = MASK_OUT_ABOVE_32(*r_dst - MAKE_INT_16(OPER_PCIX_16()));
\r
6353 void m68k_op_suba_16_i(void)
\r
6355 uint* r_dst = &AX;
\r
6357 *r_dst = MASK_OUT_ABOVE_32(*r_dst - MAKE_INT_16(OPER_I_16()));
\r
6361 void m68k_op_suba_32_d(void)
\r
6363 uint* r_dst = &AX;
\r
6365 *r_dst = MASK_OUT_ABOVE_32(*r_dst - DY);
\r
6369 void m68k_op_suba_32_a(void)
\r
6371 uint* r_dst = &AX;
\r
6373 *r_dst = MASK_OUT_ABOVE_32(*r_dst - AY);
\r
6377 void m68k_op_suba_32_ai(void)
\r
6379 uint* r_dst = &AX;
\r
6381 *r_dst = MASK_OUT_ABOVE_32(*r_dst - OPER_AY_AI_32());
\r
6385 void m68k_op_suba_32_pi(void)
\r
6387 uint* r_dst = &AX;
\r
6389 *r_dst = MASK_OUT_ABOVE_32(*r_dst - OPER_AY_PI_32());
\r
6393 void m68k_op_suba_32_pd(void)
\r
6395 uint* r_dst = &AX;
\r
6397 *r_dst = MASK_OUT_ABOVE_32(*r_dst - OPER_AY_PD_32());
\r
6401 void m68k_op_suba_32_di(void)
\r
6403 uint* r_dst = &AX;
\r
6405 *r_dst = MASK_OUT_ABOVE_32(*r_dst - OPER_AY_DI_32());
\r
6409 void m68k_op_suba_32_ix(void)
\r
6411 uint* r_dst = &AX;
\r
6413 *r_dst = MASK_OUT_ABOVE_32(*r_dst - OPER_AY_IX_32());
\r
6417 void m68k_op_suba_32_aw(void)
\r
6419 uint* r_dst = &AX;
\r
6421 *r_dst = MASK_OUT_ABOVE_32(*r_dst - OPER_AW_32());
\r
6425 void m68k_op_suba_32_al(void)
\r
6427 uint* r_dst = &AX;
\r
6429 *r_dst = MASK_OUT_ABOVE_32(*r_dst - OPER_AL_32());
\r
6433 void m68k_op_suba_32_pcdi(void)
\r
6435 uint* r_dst = &AX;
\r
6437 *r_dst = MASK_OUT_ABOVE_32(*r_dst - OPER_PCDI_32());
\r
6441 void m68k_op_suba_32_pcix(void)
\r
6443 uint* r_dst = &AX;
\r
6445 *r_dst = MASK_OUT_ABOVE_32(*r_dst - OPER_PCIX_32());
\r
6449 void m68k_op_suba_32_i(void)
\r
6451 uint* r_dst = &AX;
\r
6453 *r_dst = MASK_OUT_ABOVE_32(*r_dst - OPER_I_32());
\r
6457 void m68k_op_subi_8_d(void)
\r
6459 uint* r_dst = &DY;
\r
6460 uint src = OPER_I_8();
\r
6461 uint dst = MASK_OUT_ABOVE_8(*r_dst);
\r
6462 uint res = dst - src;
\r
6464 FLAG_N = NFLAG_8(res);
\r
6465 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
6466 FLAG_X = FLAG_C = CFLAG_8(res);
\r
6467 FLAG_V = VFLAG_SUB_8(src, dst, res);
\r
6469 *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
\r
6473 void m68k_op_subi_8_ai(void)
\r
6475 uint src = OPER_I_8();
\r
6476 uint ea = EA_AY_AI_8();
\r
6477 uint dst = m68ki_read_8(ea);
\r
6478 uint res = dst - src;
\r
6480 FLAG_N = NFLAG_8(res);
\r
6481 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
6482 FLAG_X = FLAG_C = CFLAG_8(res);
\r
6483 FLAG_V = VFLAG_SUB_8(src, dst, res);
\r
6485 m68ki_write_8(ea, FLAG_Z);
\r
6489 void m68k_op_subi_8_pi(void)
\r
6491 uint src = OPER_I_8();
\r
6492 uint ea = EA_AY_PI_8();
\r
6493 uint dst = m68ki_read_8(ea);
\r
6494 uint res = dst - src;
\r
6496 FLAG_N = NFLAG_8(res);
\r
6497 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
6498 FLAG_X = FLAG_C = CFLAG_8(res);
\r
6499 FLAG_V = VFLAG_SUB_8(src, dst, res);
\r
6501 m68ki_write_8(ea, FLAG_Z);
\r
6505 void m68k_op_subi_8_pi7(void)
\r
6507 uint src = OPER_I_8();
\r
6508 uint ea = EA_A7_PI_8();
\r
6509 uint dst = m68ki_read_8(ea);
\r
6510 uint res = dst - src;
\r
6512 FLAG_N = NFLAG_8(res);
\r
6513 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
6514 FLAG_X = FLAG_C = CFLAG_8(res);
\r
6515 FLAG_V = VFLAG_SUB_8(src, dst, res);
\r
6517 m68ki_write_8(ea, FLAG_Z);
\r
6521 void m68k_op_subi_8_pd(void)
\r
6523 uint src = OPER_I_8();
\r
6524 uint ea = EA_AY_PD_8();
\r
6525 uint dst = m68ki_read_8(ea);
\r
6526 uint res = dst - src;
\r
6528 FLAG_N = NFLAG_8(res);
\r
6529 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
6530 FLAG_X = FLAG_C = CFLAG_8(res);
\r
6531 FLAG_V = VFLAG_SUB_8(src, dst, res);
\r
6533 m68ki_write_8(ea, FLAG_Z);
\r
6537 void m68k_op_subi_8_pd7(void)
\r
6539 uint src = OPER_I_8();
\r
6540 uint ea = EA_A7_PD_8();
\r
6541 uint dst = m68ki_read_8(ea);
\r
6542 uint res = dst - src;
\r
6544 FLAG_N = NFLAG_8(res);
\r
6545 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
6546 FLAG_X = FLAG_C = CFLAG_8(res);
\r
6547 FLAG_V = VFLAG_SUB_8(src, dst, res);
\r
6549 m68ki_write_8(ea, FLAG_Z);
\r
6553 void m68k_op_subi_8_di(void)
\r
6555 uint src = OPER_I_8();
\r
6556 uint ea = EA_AY_DI_8();
\r
6557 uint dst = m68ki_read_8(ea);
\r
6558 uint res = dst - src;
\r
6560 FLAG_N = NFLAG_8(res);
\r
6561 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
6562 FLAG_X = FLAG_C = CFLAG_8(res);
\r
6563 FLAG_V = VFLAG_SUB_8(src, dst, res);
\r
6565 m68ki_write_8(ea, FLAG_Z);
\r
6569 void m68k_op_subi_8_ix(void)
\r
6571 uint src = OPER_I_8();
\r
6572 uint ea = EA_AY_IX_8();
\r
6573 uint dst = m68ki_read_8(ea);
\r
6574 uint res = dst - src;
\r
6576 FLAG_N = NFLAG_8(res);
\r
6577 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
6578 FLAG_X = FLAG_C = CFLAG_8(res);
\r
6579 FLAG_V = VFLAG_SUB_8(src, dst, res);
\r
6581 m68ki_write_8(ea, FLAG_Z);
\r
6585 void m68k_op_subi_8_aw(void)
\r
6587 uint src = OPER_I_8();
\r
6588 uint ea = EA_AW_8();
\r
6589 uint dst = m68ki_read_8(ea);
\r
6590 uint res = dst - src;
\r
6592 FLAG_N = NFLAG_8(res);
\r
6593 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
6594 FLAG_X = FLAG_C = CFLAG_8(res);
\r
6595 FLAG_V = VFLAG_SUB_8(src, dst, res);
\r
6597 m68ki_write_8(ea, FLAG_Z);
\r
6601 void m68k_op_subi_8_al(void)
\r
6603 uint src = OPER_I_8();
\r
6604 uint ea = EA_AL_8();
\r
6605 uint dst = m68ki_read_8(ea);
\r
6606 uint res = dst - src;
\r
6608 FLAG_N = NFLAG_8(res);
\r
6609 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
6610 FLAG_X = FLAG_C = CFLAG_8(res);
\r
6611 FLAG_V = VFLAG_SUB_8(src, dst, res);
\r
6613 m68ki_write_8(ea, FLAG_Z);
\r
6617 void m68k_op_subi_16_d(void)
\r
6619 uint* r_dst = &DY;
\r
6620 uint src = OPER_I_16();
\r
6621 uint dst = MASK_OUT_ABOVE_16(*r_dst);
\r
6622 uint res = dst - src;
\r
6624 FLAG_N = NFLAG_16(res);
\r
6625 FLAG_Z = MASK_OUT_ABOVE_16(res);
\r
6626 FLAG_X = FLAG_C = CFLAG_16(res);
\r
6627 FLAG_V = VFLAG_SUB_16(src, dst, res);
\r
6629 *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
\r
6633 void m68k_op_subi_16_ai(void)
\r
6635 uint src = OPER_I_16();
\r
6636 uint ea = EA_AY_AI_16();
\r
6637 uint dst = m68ki_read_16(ea);
\r
6638 uint res = dst - src;
\r
6640 FLAG_N = NFLAG_16(res);
\r
6641 FLAG_Z = MASK_OUT_ABOVE_16(res);
\r
6642 FLAG_X = FLAG_C = CFLAG_16(res);
\r
6643 FLAG_V = VFLAG_SUB_16(src, dst, res);
\r
6645 m68ki_write_16(ea, FLAG_Z);
\r
6649 void m68k_op_subi_16_pi(void)
\r
6651 uint src = OPER_I_16();
\r
6652 uint ea = EA_AY_PI_16();
\r
6653 uint dst = m68ki_read_16(ea);
\r
6654 uint res = dst - src;
\r
6656 FLAG_N = NFLAG_16(res);
\r
6657 FLAG_Z = MASK_OUT_ABOVE_16(res);
\r
6658 FLAG_X = FLAG_C = CFLAG_16(res);
\r
6659 FLAG_V = VFLAG_SUB_16(src, dst, res);
\r
6661 m68ki_write_16(ea, FLAG_Z);
\r
6665 void m68k_op_subi_16_pd(void)
\r
6667 uint src = OPER_I_16();
\r
6668 uint ea = EA_AY_PD_16();
\r
6669 uint dst = m68ki_read_16(ea);
\r
6670 uint res = dst - src;
\r
6672 FLAG_N = NFLAG_16(res);
\r
6673 FLAG_Z = MASK_OUT_ABOVE_16(res);
\r
6674 FLAG_X = FLAG_C = CFLAG_16(res);
\r
6675 FLAG_V = VFLAG_SUB_16(src, dst, res);
\r
6677 m68ki_write_16(ea, FLAG_Z);
\r
6681 void m68k_op_subi_16_di(void)
\r
6683 uint src = OPER_I_16();
\r
6684 uint ea = EA_AY_DI_16();
\r
6685 uint dst = m68ki_read_16(ea);
\r
6686 uint res = dst - src;
\r
6688 FLAG_N = NFLAG_16(res);
\r
6689 FLAG_Z = MASK_OUT_ABOVE_16(res);
\r
6690 FLAG_X = FLAG_C = CFLAG_16(res);
\r
6691 FLAG_V = VFLAG_SUB_16(src, dst, res);
\r
6693 m68ki_write_16(ea, FLAG_Z);
\r
6697 void m68k_op_subi_16_ix(void)
\r
6699 uint src = OPER_I_16();
\r
6700 uint ea = EA_AY_IX_16();
\r
6701 uint dst = m68ki_read_16(ea);
\r
6702 uint res = dst - src;
\r
6704 FLAG_N = NFLAG_16(res);
\r
6705 FLAG_Z = MASK_OUT_ABOVE_16(res);
\r
6706 FLAG_X = FLAG_C = CFLAG_16(res);
\r
6707 FLAG_V = VFLAG_SUB_16(src, dst, res);
\r
6709 m68ki_write_16(ea, FLAG_Z);
\r
6713 void m68k_op_subi_16_aw(void)
\r
6715 uint src = OPER_I_16();
\r
6716 uint ea = EA_AW_16();
\r
6717 uint dst = m68ki_read_16(ea);
\r
6718 uint res = dst - src;
\r
6720 FLAG_N = NFLAG_16(res);
\r
6721 FLAG_Z = MASK_OUT_ABOVE_16(res);
\r
6722 FLAG_X = FLAG_C = CFLAG_16(res);
\r
6723 FLAG_V = VFLAG_SUB_16(src, dst, res);
\r
6725 m68ki_write_16(ea, FLAG_Z);
\r
6729 void m68k_op_subi_16_al(void)
\r
6731 uint src = OPER_I_16();
\r
6732 uint ea = EA_AL_16();
\r
6733 uint dst = m68ki_read_16(ea);
\r
6734 uint res = dst - src;
\r
6736 FLAG_N = NFLAG_16(res);
\r
6737 FLAG_Z = MASK_OUT_ABOVE_16(res);
\r
6738 FLAG_X = FLAG_C = CFLAG_16(res);
\r
6739 FLAG_V = VFLAG_SUB_16(src, dst, res);
\r
6741 m68ki_write_16(ea, FLAG_Z);
\r
6745 void m68k_op_subi_32_d(void)
\r
6747 uint* r_dst = &DY;
\r
6748 uint src = OPER_I_32();
\r
6749 uint dst = *r_dst;
\r
6750 uint res = dst - src;
\r
6752 FLAG_N = NFLAG_32(res);
\r
6753 FLAG_Z = MASK_OUT_ABOVE_32(res);
\r
6754 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
\r
6755 FLAG_V = VFLAG_SUB_32(src, dst, res);
\r
6761 void m68k_op_subi_32_ai(void)
\r
6763 uint src = OPER_I_32();
\r
6764 uint ea = EA_AY_AI_32();
\r
6765 uint dst = m68ki_read_32(ea);
\r
6766 uint res = dst - src;
\r
6768 FLAG_N = NFLAG_32(res);
\r
6769 FLAG_Z = MASK_OUT_ABOVE_32(res);
\r
6770 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
\r
6771 FLAG_V = VFLAG_SUB_32(src, dst, res);
\r
6773 m68ki_write_32(ea, FLAG_Z);
\r
6777 void m68k_op_subi_32_pi(void)
\r
6779 uint src = OPER_I_32();
\r
6780 uint ea = EA_AY_PI_32();
\r
6781 uint dst = m68ki_read_32(ea);
\r
6782 uint res = dst - src;
\r
6784 FLAG_N = NFLAG_32(res);
\r
6785 FLAG_Z = MASK_OUT_ABOVE_32(res);
\r
6786 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
\r
6787 FLAG_V = VFLAG_SUB_32(src, dst, res);
\r
6789 m68ki_write_32(ea, FLAG_Z);
\r
6793 void m68k_op_subi_32_pd(void)
\r
6795 uint src = OPER_I_32();
\r
6796 uint ea = EA_AY_PD_32();
\r
6797 uint dst = m68ki_read_32(ea);
\r
6798 uint res = dst - src;
\r
6800 FLAG_N = NFLAG_32(res);
\r
6801 FLAG_Z = MASK_OUT_ABOVE_32(res);
\r
6802 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
\r
6803 FLAG_V = VFLAG_SUB_32(src, dst, res);
\r
6805 m68ki_write_32(ea, FLAG_Z);
\r
6809 void m68k_op_subi_32_di(void)
\r
6811 uint src = OPER_I_32();
\r
6812 uint ea = EA_AY_DI_32();
\r
6813 uint dst = m68ki_read_32(ea);
\r
6814 uint res = dst - src;
\r
6816 FLAG_N = NFLAG_32(res);
\r
6817 FLAG_Z = MASK_OUT_ABOVE_32(res);
\r
6818 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
\r
6819 FLAG_V = VFLAG_SUB_32(src, dst, res);
\r
6821 m68ki_write_32(ea, FLAG_Z);
\r
6825 void m68k_op_subi_32_ix(void)
\r
6827 uint src = OPER_I_32();
\r
6828 uint ea = EA_AY_IX_32();
\r
6829 uint dst = m68ki_read_32(ea);
\r
6830 uint res = dst - src;
\r
6832 FLAG_N = NFLAG_32(res);
\r
6833 FLAG_Z = MASK_OUT_ABOVE_32(res);
\r
6834 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
\r
6835 FLAG_V = VFLAG_SUB_32(src, dst, res);
\r
6837 m68ki_write_32(ea, FLAG_Z);
\r
6841 void m68k_op_subi_32_aw(void)
\r
6843 uint src = OPER_I_32();
\r
6844 uint ea = EA_AW_32();
\r
6845 uint dst = m68ki_read_32(ea);
\r
6846 uint res = dst - src;
\r
6848 FLAG_N = NFLAG_32(res);
\r
6849 FLAG_Z = MASK_OUT_ABOVE_32(res);
\r
6850 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
\r
6851 FLAG_V = VFLAG_SUB_32(src, dst, res);
\r
6853 m68ki_write_32(ea, FLAG_Z);
\r
6857 void m68k_op_subi_32_al(void)
\r
6859 uint src = OPER_I_32();
\r
6860 uint ea = EA_AL_32();
\r
6861 uint dst = m68ki_read_32(ea);
\r
6862 uint res = dst - src;
\r
6864 FLAG_N = NFLAG_32(res);
\r
6865 FLAG_Z = MASK_OUT_ABOVE_32(res);
\r
6866 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
\r
6867 FLAG_V = VFLAG_SUB_32(src, dst, res);
\r
6869 m68ki_write_32(ea, FLAG_Z);
\r
6873 void m68k_op_subq_8_d(void)
\r
6875 uint* r_dst = &DY;
\r
6876 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
\r
6877 uint dst = MASK_OUT_ABOVE_8(*r_dst);
\r
6878 uint res = dst - src;
\r
6880 FLAG_N = NFLAG_8(res);
\r
6881 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
6882 FLAG_X = FLAG_C = CFLAG_8(res);
\r
6883 FLAG_V = VFLAG_SUB_8(src, dst, res);
\r
6885 *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
\r
6889 void m68k_op_subq_8_ai(void)
\r
6891 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
\r
6892 uint ea = EA_AY_AI_8();
\r
6893 uint dst = m68ki_read_8(ea);
\r
6894 uint res = dst - src;
\r
6896 FLAG_N = NFLAG_8(res);
\r
6897 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
6898 FLAG_X = FLAG_C = CFLAG_8(res);
\r
6899 FLAG_V = VFLAG_SUB_8(src, dst, res);
\r
6901 m68ki_write_8(ea, FLAG_Z);
\r
6905 void m68k_op_subq_8_pi(void)
\r
6907 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
\r
6908 uint ea = EA_AY_PI_8();
\r
6909 uint dst = m68ki_read_8(ea);
\r
6910 uint res = dst - src;
\r
6912 FLAG_N = NFLAG_8(res);
\r
6913 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
6914 FLAG_X = FLAG_C = CFLAG_8(res);
\r
6915 FLAG_V = VFLAG_SUB_8(src, dst, res);
\r
6917 m68ki_write_8(ea, FLAG_Z);
\r
6921 void m68k_op_subq_8_pi7(void)
\r
6923 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
\r
6924 uint ea = EA_A7_PI_8();
\r
6925 uint dst = m68ki_read_8(ea);
\r
6926 uint res = dst - src;
\r
6928 FLAG_N = NFLAG_8(res);
\r
6929 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
6930 FLAG_X = FLAG_C = CFLAG_8(res);
\r
6931 FLAG_V = VFLAG_SUB_8(src, dst, res);
\r
6933 m68ki_write_8(ea, FLAG_Z);
\r
6937 void m68k_op_subq_8_pd(void)
\r
6939 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
\r
6940 uint ea = EA_AY_PD_8();
\r
6941 uint dst = m68ki_read_8(ea);
\r
6942 uint res = dst - src;
\r
6944 FLAG_N = NFLAG_8(res);
\r
6945 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
6946 FLAG_X = FLAG_C = CFLAG_8(res);
\r
6947 FLAG_V = VFLAG_SUB_8(src, dst, res);
\r
6949 m68ki_write_8(ea, FLAG_Z);
\r
6953 void m68k_op_subq_8_pd7(void)
\r
6955 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
\r
6956 uint ea = EA_A7_PD_8();
\r
6957 uint dst = m68ki_read_8(ea);
\r
6958 uint res = dst - src;
\r
6960 FLAG_N = NFLAG_8(res);
\r
6961 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
6962 FLAG_X = FLAG_C = CFLAG_8(res);
\r
6963 FLAG_V = VFLAG_SUB_8(src, dst, res);
\r
6965 m68ki_write_8(ea, FLAG_Z);
\r
6969 void m68k_op_subq_8_di(void)
\r
6971 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
\r
6972 uint ea = EA_AY_DI_8();
\r
6973 uint dst = m68ki_read_8(ea);
\r
6974 uint res = dst - src;
\r
6976 FLAG_N = NFLAG_8(res);
\r
6977 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
6978 FLAG_X = FLAG_C = CFLAG_8(res);
\r
6979 FLAG_V = VFLAG_SUB_8(src, dst, res);
\r
6981 m68ki_write_8(ea, FLAG_Z);
\r
6985 void m68k_op_subq_8_ix(void)
\r
6987 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
\r
6988 uint ea = EA_AY_IX_8();
\r
6989 uint dst = m68ki_read_8(ea);
\r
6990 uint res = dst - src;
\r
6992 FLAG_N = NFLAG_8(res);
\r
6993 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
6994 FLAG_X = FLAG_C = CFLAG_8(res);
\r
6995 FLAG_V = VFLAG_SUB_8(src, dst, res);
\r
6997 m68ki_write_8(ea, FLAG_Z);
\r
7001 void m68k_op_subq_8_aw(void)
\r
7003 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
\r
7004 uint ea = EA_AW_8();
\r
7005 uint dst = m68ki_read_8(ea);
\r
7006 uint res = dst - src;
\r
7008 FLAG_N = NFLAG_8(res);
\r
7009 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
7010 FLAG_X = FLAG_C = CFLAG_8(res);
\r
7011 FLAG_V = VFLAG_SUB_8(src, dst, res);
\r
7013 m68ki_write_8(ea, FLAG_Z);
\r
7017 void m68k_op_subq_8_al(void)
\r
7019 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
\r
7020 uint ea = EA_AL_8();
\r
7021 uint dst = m68ki_read_8(ea);
\r
7022 uint res = dst - src;
\r
7024 FLAG_N = NFLAG_8(res);
\r
7025 FLAG_Z = MASK_OUT_ABOVE_8(res);
\r
7026 FLAG_X = FLAG_C = CFLAG_8(res);
\r
7027 FLAG_V = VFLAG_SUB_8(src, dst, res);
\r
7029 m68ki_write_8(ea, FLAG_Z);
\r
7033 void m68k_op_subq_16_d(void)
\r
7035 uint* r_dst = &DY;
\r
7036 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
\r
7037 uint dst = MASK_OUT_ABOVE_16(*r_dst);
\r
7038 uint res = dst - src;
\r
7040 FLAG_N = NFLAG_16(res);
\r
7041 FLAG_Z = MASK_OUT_ABOVE_16(res);
\r
7042 FLAG_X = FLAG_C = CFLAG_16(res);
\r
7043 FLAG_V = VFLAG_SUB_16(src, dst, res);
\r
7045 *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
\r
7049 void m68k_op_subq_16_a(void)
\r
7051 uint* r_dst = &AY;
\r
7053 *r_dst = MASK_OUT_ABOVE_32(*r_dst - ((((REG_IR >> 9) - 1) & 7) + 1));
\r
7057 void m68k_op_subq_16_ai(void)
\r
7059 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
\r
7060 uint ea = EA_AY_AI_16();
\r
7061 uint dst = m68ki_read_16(ea);
\r
7062 uint res = dst - src;
\r
7064 FLAG_N = NFLAG_16(res);
\r
7065 FLAG_Z = MASK_OUT_ABOVE_16(res);
\r
7066 FLAG_X = FLAG_C = CFLAG_16(res);
\r
7067 FLAG_V = VFLAG_SUB_16(src, dst, res);
\r
7069 m68ki_write_16(ea, FLAG_Z);
\r
7073 void m68k_op_subq_16_pi(void)
\r
7075 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
\r
7076 uint ea = EA_AY_PI_16();
\r
7077 uint dst = m68ki_read_16(ea);
\r
7078 uint res = dst - src;
\r
7080 FLAG_N = NFLAG_16(res);
\r
7081 FLAG_Z = MASK_OUT_ABOVE_16(res);
\r
7082 FLAG_X = FLAG_C = CFLAG_16(res);
\r
7083 FLAG_V = VFLAG_SUB_16(src, dst, res);
\r
7085 m68ki_write_16(ea, FLAG_Z);
\r
7089 void m68k_op_subq_16_pd(void)
\r
7091 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
\r
7092 uint ea = EA_AY_PD_16();
\r
7093 uint dst = m68ki_read_16(ea);
\r
7094 uint res = dst - src;
\r
7096 FLAG_N = NFLAG_16(res);
\r
7097 FLAG_Z = MASK_OUT_ABOVE_16(res);
\r
7098 FLAG_X = FLAG_C = CFLAG_16(res);
\r
7099 FLAG_V = VFLAG_SUB_16(src, dst, res);
\r
7101 m68ki_write_16(ea, FLAG_Z);
\r
7105 void m68k_op_subq_16_di(void)
\r
7107 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
\r
7108 uint ea = EA_AY_DI_16();
\r
7109 uint dst = m68ki_read_16(ea);
\r
7110 uint res = dst - src;
\r
7112 FLAG_N = NFLAG_16(res);
\r
7113 FLAG_Z = MASK_OUT_ABOVE_16(res);
\r
7114 FLAG_X = FLAG_C = CFLAG_16(res);
\r
7115 FLAG_V = VFLAG_SUB_16(src, dst, res);
\r
7117 m68ki_write_16(ea, FLAG_Z);
\r
7121 void m68k_op_subq_16_ix(void)
\r
7123 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
\r
7124 uint ea = EA_AY_IX_16();
\r
7125 uint dst = m68ki_read_16(ea);
\r
7126 uint res = dst - src;
\r
7128 FLAG_N = NFLAG_16(res);
\r
7129 FLAG_Z = MASK_OUT_ABOVE_16(res);
\r
7130 FLAG_X = FLAG_C = CFLAG_16(res);
\r
7131 FLAG_V = VFLAG_SUB_16(src, dst, res);
\r
7133 m68ki_write_16(ea, FLAG_Z);
\r
7137 void m68k_op_subq_16_aw(void)
\r
7139 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
\r
7140 uint ea = EA_AW_16();
\r
7141 uint dst = m68ki_read_16(ea);
\r
7142 uint res = dst - src;
\r
7144 FLAG_N = NFLAG_16(res);
\r
7145 FLAG_Z = MASK_OUT_ABOVE_16(res);
\r
7146 FLAG_X = FLAG_C = CFLAG_16(res);
\r
7147 FLAG_V = VFLAG_SUB_16(src, dst, res);
\r
7149 m68ki_write_16(ea, FLAG_Z);
\r
7153 void m68k_op_subq_16_al(void)
\r
7155 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
\r
7156 uint ea = EA_AL_16();
\r
7157 uint dst = m68ki_read_16(ea);
\r
7158 uint res = dst - src;
\r
7160 FLAG_N = NFLAG_16(res);
\r
7161 FLAG_Z = MASK_OUT_ABOVE_16(res);
\r
7162 FLAG_X = FLAG_C = CFLAG_16(res);
\r
7163 FLAG_V = VFLAG_SUB_16(src, dst, res);
\r
7165 m68ki_write_16(ea, FLAG_Z);
\r
7169 void m68k_op_subq_32_d(void)
\r
7171 uint* r_dst = &DY;
\r
7172 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
\r
7173 uint dst = *r_dst;
\r
7174 uint res = dst - src;
\r
7176 FLAG_N = NFLAG_32(res);
\r
7177 FLAG_Z = MASK_OUT_ABOVE_32(res);
\r
7178 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
\r
7179 FLAG_V = VFLAG_SUB_32(src, dst, res);
\r
7185 void m68k_op_subq_32_a(void)
\r
7187 uint* r_dst = &AY;
\r
7189 *r_dst = MASK_OUT_ABOVE_32(*r_dst - ((((REG_IR >> 9) - 1) & 7) + 1));
\r
7193 void m68k_op_subq_32_ai(void)
\r
7195 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
\r
7196 uint ea = EA_AY_AI_32();
\r
7197 uint dst = m68ki_read_32(ea);
\r
7198 uint res = dst - src;
\r
7200 FLAG_N = NFLAG_32(res);
\r
7201 FLAG_Z = MASK_OUT_ABOVE_32(res);
\r
7202 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
\r
7203 FLAG_V = VFLAG_SUB_32(src, dst, res);
\r
7205 m68ki_write_32(ea, FLAG_Z);
\r
7209 void m68k_op_subq_32_pi(void)
\r
7211 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
\r
7212 uint ea = EA_AY_PI_32();
\r
7213 uint dst = m68ki_read_32(ea);
\r
7214 uint res = dst - src;
\r
7216 FLAG_N = NFLAG_32(res);
\r
7217 FLAG_Z = MASK_OUT_ABOVE_32(res);
\r
7218 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
\r
7219 FLAG_V = VFLAG_SUB_32(src, dst, res);
\r
7221 m68ki_write_32(ea, FLAG_Z);
\r
7225 void m68k_op_subq_32_pd(void)
\r
7227 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
\r
7228 uint ea = EA_AY_PD_32();
\r
7229 uint dst = m68ki_read_32(ea);
\r
7230 uint res = dst - src;
\r
7232 FLAG_N = NFLAG_32(res);
\r
7233 FLAG_Z = MASK_OUT_ABOVE_32(res);
\r
7234 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
\r
7235 FLAG_V = VFLAG_SUB_32(src, dst, res);
\r
7237 m68ki_write_32(ea, FLAG_Z);
\r
7241 void m68k_op_subq_32_di(void)
\r
7243 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
\r
7244 uint ea = EA_AY_DI_32();
\r
7245 uint dst = m68ki_read_32(ea);
\r
7246 uint res = dst - src;
\r
7248 FLAG_N = NFLAG_32(res);
\r
7249 FLAG_Z = MASK_OUT_ABOVE_32(res);
\r
7250 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
\r
7251 FLAG_V = VFLAG_SUB_32(src, dst, res);
\r
7253 m68ki_write_32(ea, FLAG_Z);
\r
7257 void m68k_op_subq_32_ix(void)
\r
7259 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
\r
7260 uint ea = EA_AY_IX_32();
\r
7261 uint dst = m68ki_read_32(ea);
\r
7262 uint res = dst - src;
\r
7264 FLAG_N = NFLAG_32(res);
\r
7265 FLAG_Z = MASK_OUT_ABOVE_32(res);
\r
7266 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
\r
7267 FLAG_V = VFLAG_SUB_32(src, dst, res);
\r
7269 m68ki_write_32(ea, FLAG_Z);
\r
7273 void m68k_op_subq_32_aw(void)
\r
7275 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
\r
7276 uint ea = EA_AW_32();
\r
7277 uint dst = m68ki_read_32(ea);
\r
7278 uint res = dst - src;
\r
7280 FLAG_N = NFLAG_32(res);
\r
7281 FLAG_Z = MASK_OUT_ABOVE_32(res);
\r
7282 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
\r
7283 FLAG_V = VFLAG_SUB_32(src, dst, res);
\r
7285 m68ki_write_32(ea, FLAG_Z);
\r
7289 void m68k_op_subq_32_al(void)
\r
7291 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
\r
7292 uint ea = EA_AL_32();
\r
7293 uint dst = m68ki_read_32(ea);
\r
7294 uint res = dst - src;
\r
7296 FLAG_N = NFLAG_32(res);
\r
7297 FLAG_Z = MASK_OUT_ABOVE_32(res);
\r
7298 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
\r
7299 FLAG_V = VFLAG_SUB_32(src, dst, res);
\r
7301 m68ki_write_32(ea, FLAG_Z);
\r
7305 void m68k_op_subx_8_rr(void)
\r
7307 uint* r_dst = &DX;
\r
7308 uint src = MASK_OUT_ABOVE_8(DY);
\r
7309 uint dst = MASK_OUT_ABOVE_8(*r_dst);
\r
7310 uint res = dst - src - XFLAG_AS_1();
\r
7312 FLAG_N = NFLAG_8(res);
\r
7313 FLAG_X = FLAG_C = CFLAG_8(res);
\r
7314 FLAG_V = VFLAG_SUB_8(src, dst, res);
\r
7316 res = MASK_OUT_ABOVE_8(res);
\r
7319 *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
\r
7323 void m68k_op_subx_16_rr(void)
\r
7325 uint* r_dst = &DX;
\r
7326 uint src = MASK_OUT_ABOVE_16(DY);
\r
7327 uint dst = MASK_OUT_ABOVE_16(*r_dst);
\r
7328 uint res = dst - src - XFLAG_AS_1();
\r
7330 FLAG_N = NFLAG_16(res);
\r
7331 FLAG_X = FLAG_C = CFLAG_16(res);
\r
7332 FLAG_V = VFLAG_SUB_16(src, dst, res);
\r
7334 res = MASK_OUT_ABOVE_16(res);
\r
7337 *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
\r
7341 void m68k_op_subx_32_rr(void)
\r
7343 uint* r_dst = &DX;
\r
7345 uint dst = *r_dst;
\r
7346 uint res = dst - src - XFLAG_AS_1();
\r
7348 FLAG_N = NFLAG_32(res);
\r
7349 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
\r
7350 FLAG_V = VFLAG_SUB_32(src, dst, res);
\r
7352 res = MASK_OUT_ABOVE_32(res);
\r
7359 void m68k_op_subx_8_mm_ax7(void)
\r
7361 uint src = OPER_AY_PD_8();
\r
7362 uint ea = EA_A7_PD_8();
\r
7363 uint dst = m68ki_read_8(ea);
\r
7364 uint res = dst - src - XFLAG_AS_1();
\r
7366 FLAG_N = NFLAG_8(res);
\r
7367 FLAG_X = FLAG_C = CFLAG_8(res);
\r
7368 FLAG_V = VFLAG_SUB_8(src, dst, res);
\r
7370 res = MASK_OUT_ABOVE_8(res);
\r
7373 m68ki_write_8(ea, res);
\r
7377 void m68k_op_subx_8_mm_ay7(void)
\r
7379 uint src = OPER_A7_PD_8();
\r
7380 uint ea = EA_AX_PD_8();
\r
7381 uint dst = m68ki_read_8(ea);
\r
7382 uint res = dst - src - XFLAG_AS_1();
\r
7384 FLAG_N = NFLAG_8(res);
\r
7385 FLAG_X = FLAG_C = CFLAG_8(res);
\r
7386 FLAG_V = VFLAG_SUB_8(src, dst, res);
\r
7388 res = MASK_OUT_ABOVE_8(res);
\r
7391 m68ki_write_8(ea, res);
\r
7395 void m68k_op_subx_8_mm_axy7(void)
\r
7397 uint src = OPER_A7_PD_8();
\r
7398 uint ea = EA_A7_PD_8();
\r
7399 uint dst = m68ki_read_8(ea);
\r
7400 uint res = dst - src - XFLAG_AS_1();
\r
7402 FLAG_N = NFLAG_8(res);
\r
7403 FLAG_X = FLAG_C = CFLAG_8(res);
\r
7404 FLAG_V = VFLAG_SUB_8(src, dst, res);
\r
7406 res = MASK_OUT_ABOVE_8(res);
\r
7409 m68ki_write_8(ea, res);
\r
7413 void m68k_op_subx_8_mm(void)
\r
7415 uint src = OPER_AY_PD_8();
\r
7416 uint ea = EA_AX_PD_8();
\r
7417 uint dst = m68ki_read_8(ea);
\r
7418 uint res = dst - src - XFLAG_AS_1();
\r
7420 FLAG_N = NFLAG_8(res);
\r
7421 FLAG_X = FLAG_C = CFLAG_8(res);
\r
7422 FLAG_V = VFLAG_SUB_8(src, dst, res);
\r
7424 res = MASK_OUT_ABOVE_8(res);
\r
7427 m68ki_write_8(ea, res);
\r
7431 void m68k_op_subx_16_mm(void)
\r
7433 uint src = OPER_AY_PD_16();
\r
7434 uint ea = EA_AX_PD_16();
\r
7435 uint dst = m68ki_read_16(ea);
\r
7436 uint res = dst - src - XFLAG_AS_1();
\r
7438 FLAG_N = NFLAG_16(res);
\r
7439 FLAG_X = FLAG_C = CFLAG_16(res);
\r
7440 FLAG_V = VFLAG_SUB_16(src, dst, res);
\r
7442 res = MASK_OUT_ABOVE_16(res);
\r
7445 m68ki_write_16(ea, res);
\r
7449 void m68k_op_subx_32_mm(void)
\r
7451 uint src = OPER_AY_PD_32();
\r
7452 uint ea = EA_AX_PD_32();
\r
7453 uint dst = m68ki_read_32(ea);
\r
7454 uint res = dst - src - XFLAG_AS_1();
\r
7456 FLAG_N = NFLAG_32(res);
\r
7457 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
\r
7458 FLAG_V = VFLAG_SUB_32(src, dst, res);
\r
7460 res = MASK_OUT_ABOVE_32(res);
\r
7463 m68ki_write_32(ea, res);
\r
7467 void m68k_op_swap_32(void)
\r
7469 uint* r_dst = &DY;
\r
7471 FLAG_Z = MASK_OUT_ABOVE_32(*r_dst<<16);
\r
7472 *r_dst = (*r_dst>>16) | FLAG_Z;
\r
7475 FLAG_N = NFLAG_32(*r_dst);
\r
7476 FLAG_C = CFLAG_CLEAR;
\r
7477 FLAG_V = VFLAG_CLEAR;
\r
7481 void m68k_op_tas_8_d(void)
\r
7483 uint* r_dst = &DY;
\r
7485 FLAG_Z = MASK_OUT_ABOVE_8(*r_dst);
\r
7486 FLAG_N = NFLAG_8(*r_dst);
\r
7487 FLAG_V = VFLAG_CLEAR;
\r
7488 FLAG_C = CFLAG_CLEAR;
\r
7493 void m68k_op_tas_8_ai(void)
\r
7495 uint ea = EA_AY_AI_8();
\r
7496 uint dst = m68ki_read_8(ea);
\r
7499 FLAG_N = NFLAG_8(dst);
\r
7500 FLAG_V = VFLAG_CLEAR;
\r
7501 FLAG_C = CFLAG_CLEAR;
\r
7502 // m68ki_write_8(ea, dst | 0x80); // notaz: genesis, but only to mem
\r
7506 void m68k_op_tas_8_pi(void)
\r
7508 uint ea = EA_AY_PI_8();
\r
7509 uint dst = m68ki_read_8(ea);
\r
7512 FLAG_N = NFLAG_8(dst);
\r
7513 FLAG_V = VFLAG_CLEAR;
\r
7514 FLAG_C = CFLAG_CLEAR;
\r
7515 // m68ki_write_8(ea, dst | 0x80); // notaz: genesis, but only to mem
\r
7519 void m68k_op_tas_8_pi7(void)
\r
7521 uint ea = EA_A7_PI_8();
\r
7522 uint dst = m68ki_read_8(ea);
\r
7525 FLAG_N = NFLAG_8(dst);
\r
7526 FLAG_V = VFLAG_CLEAR;
\r
7527 FLAG_C = CFLAG_CLEAR;
\r
7528 // m68ki_write_8(ea, dst | 0x80); // notaz: genesis, but only to mem
\r
7532 void m68k_op_tas_8_pd(void)
\r
7534 uint ea = EA_AY_PD_8();
\r
7535 uint dst = m68ki_read_8(ea);
\r
7538 FLAG_N = NFLAG_8(dst);
\r
7539 FLAG_V = VFLAG_CLEAR;
\r
7540 FLAG_C = CFLAG_CLEAR;
\r
7541 // m68ki_write_8(ea, dst | 0x80); // notaz: genesis, but only to mem
\r
7545 void m68k_op_tas_8_pd7(void)
\r
7547 uint ea = EA_A7_PD_8();
\r
7548 uint dst = m68ki_read_8(ea);
\r
7551 FLAG_N = NFLAG_8(dst);
\r
7552 FLAG_V = VFLAG_CLEAR;
\r
7553 FLAG_C = CFLAG_CLEAR;
\r
7554 // m68ki_write_8(ea, dst | 0x80); // notaz: genesis, but only to mem
\r
7558 void m68k_op_tas_8_di(void)
\r
7560 uint ea = EA_AY_DI_8();
\r
7561 uint dst = m68ki_read_8(ea);
\r
7564 FLAG_N = NFLAG_8(dst);
\r
7565 FLAG_V = VFLAG_CLEAR;
\r
7566 FLAG_C = CFLAG_CLEAR;
\r
7567 // m68ki_write_8(ea, dst | 0x80); // notaz: genesis, but only to mem
\r
7571 void m68k_op_tas_8_ix(void)
\r
7573 uint ea = EA_AY_IX_8();
\r
7574 uint dst = m68ki_read_8(ea);
\r
7577 FLAG_N = NFLAG_8(dst);
\r
7578 FLAG_V = VFLAG_CLEAR;
\r
7579 FLAG_C = CFLAG_CLEAR;
\r
7580 // m68ki_write_8(ea, dst | 0x80); // notaz: genesis, but only to mem
\r
7584 void m68k_op_tas_8_aw(void)
\r
7586 uint ea = EA_AW_8();
\r
7587 uint dst = m68ki_read_8(ea);
\r
7590 FLAG_N = NFLAG_8(dst);
\r
7591 FLAG_V = VFLAG_CLEAR;
\r
7592 FLAG_C = CFLAG_CLEAR;
\r
7593 // m68ki_write_8(ea, dst | 0x80); // notaz: genesis, but only to mem
\r
7597 void m68k_op_tas_8_al(void)
\r
7599 uint ea = EA_AL_8();
\r
7600 uint dst = m68ki_read_8(ea);
\r
7603 FLAG_N = NFLAG_8(dst);
\r
7604 FLAG_V = VFLAG_CLEAR;
\r
7605 FLAG_C = CFLAG_CLEAR;
\r
7606 // m68ki_write_8(ea, dst | 0x80); // notaz: genesis, but only to mem
\r
7610 void m68k_op_trap(void)
\r
7612 /* Trap#n stacks exception frame type 0 */
\r
7613 m68ki_exception_trapN(EXCEPTION_TRAP_BASE + (REG_IR & 0xf)); /* HJB 990403 */
\r
7617 void m68k_op_trapt(void)
\r
7619 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
7621 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
\r
7624 m68ki_exception_illegal();
\r
7628 void m68k_op_trapt_16(void)
\r
7630 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
7632 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
\r
7635 m68ki_exception_illegal();
\r
7639 void m68k_op_trapt_32(void)
\r
7641 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
7643 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
\r
7646 m68ki_exception_illegal();
\r
7650 void m68k_op_trapf(void)
\r
7652 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
7656 m68ki_exception_illegal();
\r
7660 void m68k_op_trapf_16(void)
\r
7662 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
7667 m68ki_exception_illegal();
\r
7671 void m68k_op_trapf_32(void)
\r
7673 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
7678 m68ki_exception_illegal();
\r
7682 void m68k_op_traphi(void)
\r
7684 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
7687 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
\r
7690 m68ki_exception_illegal();
\r
7694 void m68k_op_trapls(void)
\r
7696 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
7699 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
\r
7702 m68ki_exception_illegal();
\r
7706 void m68k_op_trapcc(void)
\r
7708 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
7711 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
\r
7714 m68ki_exception_illegal();
\r
7718 void m68k_op_trapcs(void)
\r
7720 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
7723 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
\r
7726 m68ki_exception_illegal();
\r
7730 void m68k_op_trapne(void)
\r
7732 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
7735 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
\r
7738 m68ki_exception_illegal();
\r
7742 void m68k_op_trapeq(void)
\r
7744 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
7747 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
\r
7750 m68ki_exception_illegal();
\r
7754 void m68k_op_trapvc(void)
\r
7756 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
7759 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
\r
7762 m68ki_exception_illegal();
\r
7766 void m68k_op_trapvs(void)
\r
7768 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
7771 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
\r
7774 m68ki_exception_illegal();
\r
7778 void m68k_op_trappl(void)
\r
7780 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
7783 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
\r
7786 m68ki_exception_illegal();
\r
7790 void m68k_op_trapmi(void)
\r
7792 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
7795 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
\r
7798 m68ki_exception_illegal();
\r
7802 void m68k_op_trapge(void)
\r
7804 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
7807 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
\r
7810 m68ki_exception_illegal();
\r
7814 void m68k_op_traplt(void)
\r
7816 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
7819 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
\r
7822 m68ki_exception_illegal();
\r
7826 void m68k_op_trapgt(void)
\r
7828 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
7831 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
\r
7834 m68ki_exception_illegal();
\r
7838 void m68k_op_traple(void)
\r
7840 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
7843 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
\r
7846 m68ki_exception_illegal();
\r
7850 void m68k_op_traphi_16(void)
\r
7852 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
7856 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
\r
7862 m68ki_exception_illegal();
\r
7866 void m68k_op_trapls_16(void)
\r
7868 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
7872 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
\r
7878 m68ki_exception_illegal();
\r
7882 void m68k_op_trapcc_16(void)
\r
7884 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
7888 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
\r
7894 m68ki_exception_illegal();
\r
7898 void m68k_op_trapcs_16(void)
\r
7900 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
7904 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
\r
7910 m68ki_exception_illegal();
\r
7914 void m68k_op_trapne_16(void)
\r
7916 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
7920 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
\r
7926 m68ki_exception_illegal();
\r
7930 void m68k_op_trapeq_16(void)
\r
7932 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
7936 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
\r
7942 m68ki_exception_illegal();
\r
7946 void m68k_op_trapvc_16(void)
\r
7948 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
7952 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
\r
7958 m68ki_exception_illegal();
\r
7962 void m68k_op_trapvs_16(void)
\r
7964 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
7968 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
\r
7974 m68ki_exception_illegal();
\r
7978 void m68k_op_trappl_16(void)
\r
7980 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
7984 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
\r
7990 m68ki_exception_illegal();
\r
7994 void m68k_op_trapmi_16(void)
\r
7996 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
8000 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
\r
8006 m68ki_exception_illegal();
\r
8010 void m68k_op_trapge_16(void)
\r
8012 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
8016 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
\r
8022 m68ki_exception_illegal();
\r
8026 void m68k_op_traplt_16(void)
\r
8028 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
8032 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
\r
8038 m68ki_exception_illegal();
\r
8042 void m68k_op_trapgt_16(void)
\r
8044 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
8048 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
\r
8054 m68ki_exception_illegal();
\r
8058 void m68k_op_traple_16(void)
\r
8060 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
8064 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
\r
8070 m68ki_exception_illegal();
\r
8074 void m68k_op_traphi_32(void)
\r
8076 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
8080 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
\r
8086 m68ki_exception_illegal();
\r
8090 void m68k_op_trapls_32(void)
\r
8092 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
8096 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
\r
8102 m68ki_exception_illegal();
\r
8106 void m68k_op_trapcc_32(void)
\r
8108 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
8112 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
\r
8118 m68ki_exception_illegal();
\r
8122 void m68k_op_trapcs_32(void)
\r
8124 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
8128 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
\r
8134 m68ki_exception_illegal();
\r
8138 void m68k_op_trapne_32(void)
\r
8140 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
8144 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
\r
8150 m68ki_exception_illegal();
\r
8154 void m68k_op_trapeq_32(void)
\r
8156 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
8160 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
\r
8166 m68ki_exception_illegal();
\r
8170 void m68k_op_trapvc_32(void)
\r
8172 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
8176 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
\r
8182 m68ki_exception_illegal();
\r
8186 void m68k_op_trapvs_32(void)
\r
8188 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
8192 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
\r
8198 m68ki_exception_illegal();
\r
8202 void m68k_op_trappl_32(void)
\r
8204 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
8208 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
\r
8214 m68ki_exception_illegal();
\r
8218 void m68k_op_trapmi_32(void)
\r
8220 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
8224 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
\r
8230 m68ki_exception_illegal();
\r
8234 void m68k_op_trapge_32(void)
\r
8236 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
8240 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
\r
8246 m68ki_exception_illegal();
\r
8250 void m68k_op_traplt_32(void)
\r
8252 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
8256 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
\r
8262 m68ki_exception_illegal();
\r
8266 void m68k_op_trapgt_32(void)
\r
8268 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
8272 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
\r
8278 m68ki_exception_illegal();
\r
8282 void m68k_op_traple_32(void)
\r
8284 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
8288 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
\r
8294 m68ki_exception_illegal();
\r
8298 void m68k_op_trapv(void)
\r
8304 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
\r
8308 void m68k_op_tst_8_d(void)
\r
8310 uint res = MASK_OUT_ABOVE_8(DY);
\r
8312 FLAG_N = NFLAG_8(res);
\r
8314 FLAG_V = VFLAG_CLEAR;
\r
8315 FLAG_C = CFLAG_CLEAR;
\r
8319 void m68k_op_tst_8_ai(void)
\r
8321 uint res = OPER_AY_AI_8();
\r
8323 FLAG_N = NFLAG_8(res);
\r
8325 FLAG_V = VFLAG_CLEAR;
\r
8326 FLAG_C = CFLAG_CLEAR;
\r
8330 void m68k_op_tst_8_pi(void)
\r
8332 uint res = OPER_AY_PI_8();
\r
8334 FLAG_N = NFLAG_8(res);
\r
8336 FLAG_V = VFLAG_CLEAR;
\r
8337 FLAG_C = CFLAG_CLEAR;
\r
8341 void m68k_op_tst_8_pi7(void)
\r
8343 uint res = OPER_A7_PI_8();
\r
8345 FLAG_N = NFLAG_8(res);
\r
8347 FLAG_V = VFLAG_CLEAR;
\r
8348 FLAG_C = CFLAG_CLEAR;
\r
8352 void m68k_op_tst_8_pd(void)
\r
8354 uint res = OPER_AY_PD_8();
\r
8356 FLAG_N = NFLAG_8(res);
\r
8358 FLAG_V = VFLAG_CLEAR;
\r
8359 FLAG_C = CFLAG_CLEAR;
\r
8363 void m68k_op_tst_8_pd7(void)
\r
8365 uint res = OPER_A7_PD_8();
\r
8367 FLAG_N = NFLAG_8(res);
\r
8369 FLAG_V = VFLAG_CLEAR;
\r
8370 FLAG_C = CFLAG_CLEAR;
\r
8374 void m68k_op_tst_8_di(void)
\r
8376 uint res = OPER_AY_DI_8();
\r
8378 FLAG_N = NFLAG_8(res);
\r
8380 FLAG_V = VFLAG_CLEAR;
\r
8381 FLAG_C = CFLAG_CLEAR;
\r
8385 void m68k_op_tst_8_ix(void)
\r
8387 uint res = OPER_AY_IX_8();
\r
8389 FLAG_N = NFLAG_8(res);
\r
8391 FLAG_V = VFLAG_CLEAR;
\r
8392 FLAG_C = CFLAG_CLEAR;
\r
8396 void m68k_op_tst_8_aw(void)
\r
8398 uint res = OPER_AW_8();
\r
8400 FLAG_N = NFLAG_8(res);
\r
8402 FLAG_V = VFLAG_CLEAR;
\r
8403 FLAG_C = CFLAG_CLEAR;
\r
8407 void m68k_op_tst_8_al(void)
\r
8409 uint res = OPER_AL_8();
\r
8411 FLAG_N = NFLAG_8(res);
\r
8413 FLAG_V = VFLAG_CLEAR;
\r
8414 FLAG_C = CFLAG_CLEAR;
\r
8418 void m68k_op_tst_8_pcdi(void)
\r
8420 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
8422 uint res = OPER_PCDI_8();
\r
8424 FLAG_N = NFLAG_8(res);
\r
8426 FLAG_V = VFLAG_CLEAR;
\r
8427 FLAG_C = CFLAG_CLEAR;
\r
8430 m68ki_exception_illegal();
\r
8434 void m68k_op_tst_8_pcix(void)
\r
8436 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
8438 uint res = OPER_PCIX_8();
\r
8440 FLAG_N = NFLAG_8(res);
\r
8442 FLAG_V = VFLAG_CLEAR;
\r
8443 FLAG_C = CFLAG_CLEAR;
\r
8446 m68ki_exception_illegal();
\r
8450 void m68k_op_tst_8_i(void)
\r
8452 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
8454 uint res = OPER_I_8();
\r
8456 FLAG_N = NFLAG_8(res);
\r
8458 FLAG_V = VFLAG_CLEAR;
\r
8459 FLAG_C = CFLAG_CLEAR;
\r
8462 m68ki_exception_illegal();
\r
8466 void m68k_op_tst_16_d(void)
\r
8468 uint res = MASK_OUT_ABOVE_16(DY);
\r
8470 FLAG_N = NFLAG_16(res);
\r
8472 FLAG_V = VFLAG_CLEAR;
\r
8473 FLAG_C = CFLAG_CLEAR;
\r
8477 void m68k_op_tst_16_a(void)
\r
8479 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
8481 uint res = MAKE_INT_16(AY);
\r
8483 FLAG_N = NFLAG_16(res);
\r
8485 FLAG_V = VFLAG_CLEAR;
\r
8486 FLAG_C = CFLAG_CLEAR;
\r
8489 m68ki_exception_illegal();
\r
8493 void m68k_op_tst_16_ai(void)
\r
8495 uint res = OPER_AY_AI_16();
\r
8497 FLAG_N = NFLAG_16(res);
\r
8499 FLAG_V = VFLAG_CLEAR;
\r
8500 FLAG_C = CFLAG_CLEAR;
\r
8504 void m68k_op_tst_16_pi(void)
\r
8506 uint res = OPER_AY_PI_16();
\r
8508 FLAG_N = NFLAG_16(res);
\r
8510 FLAG_V = VFLAG_CLEAR;
\r
8511 FLAG_C = CFLAG_CLEAR;
\r
8515 void m68k_op_tst_16_pd(void)
\r
8517 uint res = OPER_AY_PD_16();
\r
8519 FLAG_N = NFLAG_16(res);
\r
8521 FLAG_V = VFLAG_CLEAR;
\r
8522 FLAG_C = CFLAG_CLEAR;
\r
8526 void m68k_op_tst_16_di(void)
\r
8528 uint res = OPER_AY_DI_16();
\r
8530 FLAG_N = NFLAG_16(res);
\r
8532 FLAG_V = VFLAG_CLEAR;
\r
8533 FLAG_C = CFLAG_CLEAR;
\r
8537 void m68k_op_tst_16_ix(void)
\r
8539 uint res = OPER_AY_IX_16();
\r
8541 FLAG_N = NFLAG_16(res);
\r
8543 FLAG_V = VFLAG_CLEAR;
\r
8544 FLAG_C = CFLAG_CLEAR;
\r
8548 void m68k_op_tst_16_aw(void)
\r
8550 uint res = OPER_AW_16();
\r
8552 FLAG_N = NFLAG_16(res);
\r
8554 FLAG_V = VFLAG_CLEAR;
\r
8555 FLAG_C = CFLAG_CLEAR;
\r
8559 void m68k_op_tst_16_al(void)
\r
8561 uint res = OPER_AL_16();
\r
8563 FLAG_N = NFLAG_16(res);
\r
8565 FLAG_V = VFLAG_CLEAR;
\r
8566 FLAG_C = CFLAG_CLEAR;
\r
8570 void m68k_op_tst_16_pcdi(void)
\r
8572 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
8574 uint res = OPER_PCDI_16();
\r
8576 FLAG_N = NFLAG_16(res);
\r
8578 FLAG_V = VFLAG_CLEAR;
\r
8579 FLAG_C = CFLAG_CLEAR;
\r
8582 m68ki_exception_illegal();
\r
8586 void m68k_op_tst_16_pcix(void)
\r
8588 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
8590 uint res = OPER_PCIX_16();
\r
8592 FLAG_N = NFLAG_16(res);
\r
8594 FLAG_V = VFLAG_CLEAR;
\r
8595 FLAG_C = CFLAG_CLEAR;
\r
8598 m68ki_exception_illegal();
\r
8602 void m68k_op_tst_16_i(void)
\r
8604 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
8606 uint res = OPER_I_16();
\r
8608 FLAG_N = NFLAG_16(res);
\r
8610 FLAG_V = VFLAG_CLEAR;
\r
8611 FLAG_C = CFLAG_CLEAR;
\r
8614 m68ki_exception_illegal();
\r
8618 void m68k_op_tst_32_d(void)
\r
8622 FLAG_N = NFLAG_32(res);
\r
8624 FLAG_V = VFLAG_CLEAR;
\r
8625 FLAG_C = CFLAG_CLEAR;
\r
8629 void m68k_op_tst_32_a(void)
\r
8631 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
8635 FLAG_N = NFLAG_32(res);
\r
8637 FLAG_V = VFLAG_CLEAR;
\r
8638 FLAG_C = CFLAG_CLEAR;
\r
8641 m68ki_exception_illegal();
\r
8645 void m68k_op_tst_32_ai(void)
\r
8647 uint res = OPER_AY_AI_32();
\r
8649 FLAG_N = NFLAG_32(res);
\r
8651 FLAG_V = VFLAG_CLEAR;
\r
8652 FLAG_C = CFLAG_CLEAR;
\r
8656 void m68k_op_tst_32_pi(void)
\r
8658 uint res = OPER_AY_PI_32();
\r
8660 FLAG_N = NFLAG_32(res);
\r
8662 FLAG_V = VFLAG_CLEAR;
\r
8663 FLAG_C = CFLAG_CLEAR;
\r
8667 void m68k_op_tst_32_pd(void)
\r
8669 uint res = OPER_AY_PD_32();
\r
8671 FLAG_N = NFLAG_32(res);
\r
8673 FLAG_V = VFLAG_CLEAR;
\r
8674 FLAG_C = CFLAG_CLEAR;
\r
8678 void m68k_op_tst_32_di(void)
\r
8680 uint res = OPER_AY_DI_32();
\r
8682 FLAG_N = NFLAG_32(res);
\r
8684 FLAG_V = VFLAG_CLEAR;
\r
8685 FLAG_C = CFLAG_CLEAR;
\r
8689 void m68k_op_tst_32_ix(void)
\r
8691 uint res = OPER_AY_IX_32();
\r
8693 FLAG_N = NFLAG_32(res);
\r
8695 FLAG_V = VFLAG_CLEAR;
\r
8696 FLAG_C = CFLAG_CLEAR;
\r
8700 void m68k_op_tst_32_aw(void)
\r
8702 uint res = OPER_AW_32();
\r
8704 FLAG_N = NFLAG_32(res);
\r
8706 FLAG_V = VFLAG_CLEAR;
\r
8707 FLAG_C = CFLAG_CLEAR;
\r
8711 void m68k_op_tst_32_al(void)
\r
8713 uint res = OPER_AL_32();
\r
8715 FLAG_N = NFLAG_32(res);
\r
8717 FLAG_V = VFLAG_CLEAR;
\r
8718 FLAG_C = CFLAG_CLEAR;
\r
8722 void m68k_op_tst_32_pcdi(void)
\r
8724 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
8726 uint res = OPER_PCDI_32();
\r
8728 FLAG_N = NFLAG_32(res);
\r
8730 FLAG_V = VFLAG_CLEAR;
\r
8731 FLAG_C = CFLAG_CLEAR;
\r
8734 m68ki_exception_illegal();
\r
8738 void m68k_op_tst_32_pcix(void)
\r
8740 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
8742 uint res = OPER_PCIX_32();
\r
8744 FLAG_N = NFLAG_32(res);
\r
8746 FLAG_V = VFLAG_CLEAR;
\r
8747 FLAG_C = CFLAG_CLEAR;
\r
8750 m68ki_exception_illegal();
\r
8754 void m68k_op_tst_32_i(void)
\r
8756 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
8758 uint res = OPER_I_32();
\r
8760 FLAG_N = NFLAG_32(res);
\r
8762 FLAG_V = VFLAG_CLEAR;
\r
8763 FLAG_C = CFLAG_CLEAR;
\r
8766 m68ki_exception_illegal();
\r
8770 void m68k_op_unlk_32_a7(void)
\r
8772 REG_A[7] = m68ki_read_32(REG_A[7]);
\r
8776 void m68k_op_unlk_32(void)
\r
8778 uint* r_dst = &AY;
\r
8780 REG_A[7] = *r_dst;
\r
8781 *r_dst = m68ki_pull_32();
\r
8785 void m68k_op_unpk_16_rr(void)
\r
8787 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
8789 /* Note: DX and DY are reversed in Motorola's docs */
\r
8791 uint* r_dst = &DX;
\r
8793 *r_dst = MASK_OUT_BELOW_16(*r_dst) | (((((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16()) & 0xffff);
\r
8796 m68ki_exception_illegal();
\r
8800 void m68k_op_unpk_16_mm_ax7(void)
\r
8802 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
8804 /* Note: AX and AY are reversed in Motorola's docs */
\r
8805 uint src = OPER_AY_PD_8();
\r
8808 src = (((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16();
\r
8809 ea_dst = EA_A7_PD_8();
\r
8810 m68ki_write_8(ea_dst, (src >> 8) & 0xff);
\r
8811 ea_dst = EA_A7_PD_8();
\r
8812 m68ki_write_8(ea_dst, src & 0xff);
\r
8815 m68ki_exception_illegal();
\r
8819 void m68k_op_unpk_16_mm_ay7(void)
\r
8821 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
8823 /* Note: AX and AY are reversed in Motorola's docs */
\r
8824 uint src = OPER_A7_PD_8();
\r
8827 src = (((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16();
\r
8828 ea_dst = EA_AX_PD_8();
\r
8829 m68ki_write_8(ea_dst, (src >> 8) & 0xff);
\r
8830 ea_dst = EA_AX_PD_8();
\r
8831 m68ki_write_8(ea_dst, src & 0xff);
\r
8834 m68ki_exception_illegal();
\r
8838 void m68k_op_unpk_16_mm_axy7(void)
\r
8840 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
8842 uint src = OPER_A7_PD_8();
\r
8845 src = (((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16();
\r
8846 ea_dst = EA_A7_PD_8();
\r
8847 m68ki_write_8(ea_dst, (src >> 8) & 0xff);
\r
8848 ea_dst = EA_A7_PD_8();
\r
8849 m68ki_write_8(ea_dst, src & 0xff);
\r
8852 m68ki_exception_illegal();
\r
8856 void m68k_op_unpk_16_mm(void)
\r
8858 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
\r
8860 /* Note: AX and AY are reversed in Motorola's docs */
\r
8861 uint src = OPER_AY_PD_8();
\r
8864 src = (((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16();
\r
8865 ea_dst = EA_AX_PD_8();
\r
8866 m68ki_write_8(ea_dst, (src >> 8) & 0xff);
\r
8867 ea_dst = EA_AX_PD_8();
\r
8868 m68ki_write_8(ea_dst, src & 0xff);
\r
8871 m68ki_exception_illegal();
\r
8875 /* ======================================================================== */
\r
8876 /* ============================== END OF FILE ============================= */
\r
8877 /* ======================================================================== */
\r