3 /* ======================================================================== */
4 /* ========================= INSTRUCTION HANDLERS ========================= */
5 /* ======================================================================== */
8 void m68k_op_nbcd_8_d(void)
12 uint res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1());
16 FLAG_V = ~res; /* Undefined V behavior */
18 if((res & 0x0f) == 0xa)
19 res = (res & 0xf0) + 0x10;
21 res = MASK_OUT_ABOVE_8(res);
23 FLAG_V &= res; /* Undefined V behavior part II */
25 *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
37 FLAG_N = NFLAG_8(res); /* Undefined N behavior */
41 void m68k_op_nbcd_8_ai(void)
43 uint ea = EA_AY_AI_8();
44 uint dst = m68ki_read_8(ea);
45 uint res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1());
49 FLAG_V = ~res; /* Undefined V behavior */
51 if((res & 0x0f) == 0xa)
52 res = (res & 0xf0) + 0x10;
54 res = MASK_OUT_ABOVE_8(res);
56 FLAG_V &= res; /* Undefined V behavior part II */
58 m68ki_write_8(ea, MASK_OUT_ABOVE_8(res));
70 FLAG_N = NFLAG_8(res); /* Undefined N behavior */
74 void m68k_op_nbcd_8_pi(void)
76 uint ea = EA_AY_PI_8();
77 uint dst = m68ki_read_8(ea);
78 uint res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1());
82 FLAG_V = ~res; /* Undefined V behavior */
84 if((res & 0x0f) == 0xa)
85 res = (res & 0xf0) + 0x10;
87 res = MASK_OUT_ABOVE_8(res);
89 FLAG_V &= res; /* Undefined V behavior part II */
91 m68ki_write_8(ea, MASK_OUT_ABOVE_8(res));
100 FLAG_C = CFLAG_CLEAR;
101 FLAG_X = XFLAG_CLEAR;
103 FLAG_N = NFLAG_8(res); /* Undefined N behavior */
107 void m68k_op_nbcd_8_pi7(void)
109 uint ea = EA_A7_PI_8();
110 uint dst = m68ki_read_8(ea);
111 uint res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1());
115 FLAG_V = ~res; /* Undefined V behavior */
117 if((res & 0x0f) == 0xa)
118 res = (res & 0xf0) + 0x10;
120 res = MASK_OUT_ABOVE_8(res);
122 FLAG_V &= res; /* Undefined V behavior part II */
124 m68ki_write_8(ea, MASK_OUT_ABOVE_8(res));
132 FLAG_V = VFLAG_CLEAR;
133 FLAG_C = CFLAG_CLEAR;
134 FLAG_X = XFLAG_CLEAR;
136 FLAG_N = NFLAG_8(res); /* Undefined N behavior */
140 void m68k_op_nbcd_8_pd(void)
142 uint ea = EA_AY_PD_8();
143 uint dst = m68ki_read_8(ea);
144 uint res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1());
148 FLAG_V = ~res; /* Undefined V behavior */
150 if((res & 0x0f) == 0xa)
151 res = (res & 0xf0) + 0x10;
153 res = MASK_OUT_ABOVE_8(res);
155 FLAG_V &= res; /* Undefined V behavior part II */
157 m68ki_write_8(ea, MASK_OUT_ABOVE_8(res));
165 FLAG_V = VFLAG_CLEAR;
166 FLAG_C = CFLAG_CLEAR;
167 FLAG_X = XFLAG_CLEAR;
169 FLAG_N = NFLAG_8(res); /* Undefined N behavior */
173 void m68k_op_nbcd_8_pd7(void)
175 uint ea = EA_A7_PD_8();
176 uint dst = m68ki_read_8(ea);
177 uint res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1());
181 FLAG_V = ~res; /* Undefined V behavior */
183 if((res & 0x0f) == 0xa)
184 res = (res & 0xf0) + 0x10;
186 res = MASK_OUT_ABOVE_8(res);
188 FLAG_V &= res; /* Undefined V behavior part II */
190 m68ki_write_8(ea, MASK_OUT_ABOVE_8(res));
198 FLAG_V = VFLAG_CLEAR;
199 FLAG_C = CFLAG_CLEAR;
200 FLAG_X = XFLAG_CLEAR;
202 FLAG_N = NFLAG_8(res); /* Undefined N behavior */
206 void m68k_op_nbcd_8_di(void)
208 uint ea = EA_AY_DI_8();
209 uint dst = m68ki_read_8(ea);
210 uint res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1());
214 FLAG_V = ~res; /* Undefined V behavior */
216 if((res & 0x0f) == 0xa)
217 res = (res & 0xf0) + 0x10;
219 res = MASK_OUT_ABOVE_8(res);
221 FLAG_V &= res; /* Undefined V behavior part II */
223 m68ki_write_8(ea, MASK_OUT_ABOVE_8(res));
231 FLAG_V = VFLAG_CLEAR;
232 FLAG_C = CFLAG_CLEAR;
233 FLAG_X = XFLAG_CLEAR;
235 FLAG_N = NFLAG_8(res); /* Undefined N behavior */
239 void m68k_op_nbcd_8_ix(void)
241 uint ea = EA_AY_IX_8();
242 uint dst = m68ki_read_8(ea);
243 uint res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1());
247 FLAG_V = ~res; /* Undefined V behavior */
249 if((res & 0x0f) == 0xa)
250 res = (res & 0xf0) + 0x10;
252 res = MASK_OUT_ABOVE_8(res);
254 FLAG_V &= res; /* Undefined V behavior part II */
256 m68ki_write_8(ea, MASK_OUT_ABOVE_8(res));
264 FLAG_V = VFLAG_CLEAR;
265 FLAG_C = CFLAG_CLEAR;
266 FLAG_X = XFLAG_CLEAR;
268 FLAG_N = NFLAG_8(res); /* Undefined N behavior */
272 void m68k_op_nbcd_8_aw(void)
275 uint dst = m68ki_read_8(ea);
276 uint res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1());
280 FLAG_V = ~res; /* Undefined V behavior */
282 if((res & 0x0f) == 0xa)
283 res = (res & 0xf0) + 0x10;
285 res = MASK_OUT_ABOVE_8(res);
287 FLAG_V &= res; /* Undefined V behavior part II */
289 m68ki_write_8(ea, MASK_OUT_ABOVE_8(res));
297 FLAG_V = VFLAG_CLEAR;
298 FLAG_C = CFLAG_CLEAR;
299 FLAG_X = XFLAG_CLEAR;
301 FLAG_N = NFLAG_8(res); /* Undefined N behavior */
305 void m68k_op_nbcd_8_al(void)
308 uint dst = m68ki_read_8(ea);
309 uint res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1());
313 FLAG_V = ~res; /* Undefined V behavior */
315 if((res & 0x0f) == 0xa)
316 res = (res & 0xf0) + 0x10;
318 res = MASK_OUT_ABOVE_8(res);
320 FLAG_V &= res; /* Undefined V behavior part II */
322 m68ki_write_8(ea, MASK_OUT_ABOVE_8(res));
330 FLAG_V = VFLAG_CLEAR;
331 FLAG_C = CFLAG_CLEAR;
332 FLAG_X = XFLAG_CLEAR;
334 FLAG_N = NFLAG_8(res); /* Undefined N behavior */
338 void m68k_op_neg_8_d(void)
341 uint res = 0 - MASK_OUT_ABOVE_8(*r_dst);
343 FLAG_N = NFLAG_8(res);
344 FLAG_C = FLAG_X = CFLAG_8(res);
345 FLAG_V = *r_dst & res;
346 FLAG_Z = MASK_OUT_ABOVE_8(res);
348 *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
352 void m68k_op_neg_8_ai(void)
354 uint ea = EA_AY_AI_8();
355 uint src = m68ki_read_8(ea);
358 FLAG_N = NFLAG_8(res);
359 FLAG_C = FLAG_X = CFLAG_8(res);
361 FLAG_Z = MASK_OUT_ABOVE_8(res);
363 m68ki_write_8(ea, FLAG_Z);
367 void m68k_op_neg_8_pi(void)
369 uint ea = EA_AY_PI_8();
370 uint src = m68ki_read_8(ea);
373 FLAG_N = NFLAG_8(res);
374 FLAG_C = FLAG_X = CFLAG_8(res);
376 FLAG_Z = MASK_OUT_ABOVE_8(res);
378 m68ki_write_8(ea, FLAG_Z);
382 void m68k_op_neg_8_pi7(void)
384 uint ea = EA_A7_PI_8();
385 uint src = m68ki_read_8(ea);
388 FLAG_N = NFLAG_8(res);
389 FLAG_C = FLAG_X = CFLAG_8(res);
391 FLAG_Z = MASK_OUT_ABOVE_8(res);
393 m68ki_write_8(ea, FLAG_Z);
397 void m68k_op_neg_8_pd(void)
399 uint ea = EA_AY_PD_8();
400 uint src = m68ki_read_8(ea);
403 FLAG_N = NFLAG_8(res);
404 FLAG_C = FLAG_X = CFLAG_8(res);
406 FLAG_Z = MASK_OUT_ABOVE_8(res);
408 m68ki_write_8(ea, FLAG_Z);
412 void m68k_op_neg_8_pd7(void)
414 uint ea = EA_A7_PD_8();
415 uint src = m68ki_read_8(ea);
418 FLAG_N = NFLAG_8(res);
419 FLAG_C = FLAG_X = CFLAG_8(res);
421 FLAG_Z = MASK_OUT_ABOVE_8(res);
423 m68ki_write_8(ea, FLAG_Z);
427 void m68k_op_neg_8_di(void)
429 uint ea = EA_AY_DI_8();
430 uint src = m68ki_read_8(ea);
433 FLAG_N = NFLAG_8(res);
434 FLAG_C = FLAG_X = CFLAG_8(res);
436 FLAG_Z = MASK_OUT_ABOVE_8(res);
438 m68ki_write_8(ea, FLAG_Z);
442 void m68k_op_neg_8_ix(void)
444 uint ea = EA_AY_IX_8();
445 uint src = m68ki_read_8(ea);
448 FLAG_N = NFLAG_8(res);
449 FLAG_C = FLAG_X = CFLAG_8(res);
451 FLAG_Z = MASK_OUT_ABOVE_8(res);
453 m68ki_write_8(ea, FLAG_Z);
457 void m68k_op_neg_8_aw(void)
460 uint src = m68ki_read_8(ea);
463 FLAG_N = NFLAG_8(res);
464 FLAG_C = FLAG_X = CFLAG_8(res);
466 FLAG_Z = MASK_OUT_ABOVE_8(res);
468 m68ki_write_8(ea, FLAG_Z);
472 void m68k_op_neg_8_al(void)
475 uint src = m68ki_read_8(ea);
478 FLAG_N = NFLAG_8(res);
479 FLAG_C = FLAG_X = CFLAG_8(res);
481 FLAG_Z = MASK_OUT_ABOVE_8(res);
483 m68ki_write_8(ea, FLAG_Z);
487 void m68k_op_neg_16_d(void)
490 uint res = 0 - MASK_OUT_ABOVE_16(*r_dst);
492 FLAG_N = NFLAG_16(res);
493 FLAG_C = FLAG_X = CFLAG_16(res);
494 FLAG_V = (*r_dst & res)>>8;
495 FLAG_Z = MASK_OUT_ABOVE_16(res);
497 *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
501 void m68k_op_neg_16_ai(void)
503 uint ea = EA_AY_AI_16();
504 uint src = m68ki_read_16(ea);
507 FLAG_N = NFLAG_16(res);
508 FLAG_C = FLAG_X = CFLAG_16(res);
509 FLAG_V = (src & res)>>8;
510 FLAG_Z = MASK_OUT_ABOVE_16(res);
512 m68ki_write_16(ea, FLAG_Z);
516 void m68k_op_neg_16_pi(void)
518 uint ea = EA_AY_PI_16();
519 uint src = m68ki_read_16(ea);
522 FLAG_N = NFLAG_16(res);
523 FLAG_C = FLAG_X = CFLAG_16(res);
524 FLAG_V = (src & res)>>8;
525 FLAG_Z = MASK_OUT_ABOVE_16(res);
527 m68ki_write_16(ea, FLAG_Z);
531 void m68k_op_neg_16_pd(void)
533 uint ea = EA_AY_PD_16();
534 uint src = m68ki_read_16(ea);
537 FLAG_N = NFLAG_16(res);
538 FLAG_C = FLAG_X = CFLAG_16(res);
539 FLAG_V = (src & res)>>8;
540 FLAG_Z = MASK_OUT_ABOVE_16(res);
542 m68ki_write_16(ea, FLAG_Z);
546 void m68k_op_neg_16_di(void)
548 uint ea = EA_AY_DI_16();
549 uint src = m68ki_read_16(ea);
552 FLAG_N = NFLAG_16(res);
553 FLAG_C = FLAG_X = CFLAG_16(res);
554 FLAG_V = (src & res)>>8;
555 FLAG_Z = MASK_OUT_ABOVE_16(res);
557 m68ki_write_16(ea, FLAG_Z);
561 void m68k_op_neg_16_ix(void)
563 uint ea = EA_AY_IX_16();
564 uint src = m68ki_read_16(ea);
567 FLAG_N = NFLAG_16(res);
568 FLAG_C = FLAG_X = CFLAG_16(res);
569 FLAG_V = (src & res)>>8;
570 FLAG_Z = MASK_OUT_ABOVE_16(res);
572 m68ki_write_16(ea, FLAG_Z);
576 void m68k_op_neg_16_aw(void)
578 uint ea = EA_AW_16();
579 uint src = m68ki_read_16(ea);
582 FLAG_N = NFLAG_16(res);
583 FLAG_C = FLAG_X = CFLAG_16(res);
584 FLAG_V = (src & res)>>8;
585 FLAG_Z = MASK_OUT_ABOVE_16(res);
587 m68ki_write_16(ea, FLAG_Z);
591 void m68k_op_neg_16_al(void)
593 uint ea = EA_AL_16();
594 uint src = m68ki_read_16(ea);
597 FLAG_N = NFLAG_16(res);
598 FLAG_C = FLAG_X = CFLAG_16(res);
599 FLAG_V = (src & res)>>8;
600 FLAG_Z = MASK_OUT_ABOVE_16(res);
602 m68ki_write_16(ea, FLAG_Z);
606 void m68k_op_neg_32_d(void)
609 uint res = 0 - *r_dst;
611 FLAG_N = NFLAG_32(res);
612 FLAG_C = FLAG_X = CFLAG_SUB_32(*r_dst, 0, res);
613 FLAG_V = (*r_dst & res)>>24;
614 FLAG_Z = MASK_OUT_ABOVE_32(res);
620 void m68k_op_neg_32_ai(void)
622 uint ea = EA_AY_AI_32();
623 uint src = m68ki_read_32(ea);
626 FLAG_N = NFLAG_32(res);
627 FLAG_C = FLAG_X = CFLAG_SUB_32(src, 0, res);
628 FLAG_V = (src & res)>>24;
629 FLAG_Z = MASK_OUT_ABOVE_32(res);
631 m68ki_write_32(ea, FLAG_Z);
635 void m68k_op_neg_32_pi(void)
637 uint ea = EA_AY_PI_32();
638 uint src = m68ki_read_32(ea);
641 FLAG_N = NFLAG_32(res);
642 FLAG_C = FLAG_X = CFLAG_SUB_32(src, 0, res);
643 FLAG_V = (src & res)>>24;
644 FLAG_Z = MASK_OUT_ABOVE_32(res);
646 m68ki_write_32(ea, FLAG_Z);
650 void m68k_op_neg_32_pd(void)
652 uint ea = EA_AY_PD_32();
653 uint src = m68ki_read_32(ea);
656 FLAG_N = NFLAG_32(res);
657 FLAG_C = FLAG_X = CFLAG_SUB_32(src, 0, res);
658 FLAG_V = (src & res)>>24;
659 FLAG_Z = MASK_OUT_ABOVE_32(res);
661 m68ki_write_32(ea, FLAG_Z);
665 void m68k_op_neg_32_di(void)
667 uint ea = EA_AY_DI_32();
668 uint src = m68ki_read_32(ea);
671 FLAG_N = NFLAG_32(res);
672 FLAG_C = FLAG_X = CFLAG_SUB_32(src, 0, res);
673 FLAG_V = (src & res)>>24;
674 FLAG_Z = MASK_OUT_ABOVE_32(res);
676 m68ki_write_32(ea, FLAG_Z);
680 void m68k_op_neg_32_ix(void)
682 uint ea = EA_AY_IX_32();
683 uint src = m68ki_read_32(ea);
686 FLAG_N = NFLAG_32(res);
687 FLAG_C = FLAG_X = CFLAG_SUB_32(src, 0, res);
688 FLAG_V = (src & res)>>24;
689 FLAG_Z = MASK_OUT_ABOVE_32(res);
691 m68ki_write_32(ea, FLAG_Z);
695 void m68k_op_neg_32_aw(void)
697 uint ea = EA_AW_32();
698 uint src = m68ki_read_32(ea);
701 FLAG_N = NFLAG_32(res);
702 FLAG_C = FLAG_X = CFLAG_SUB_32(src, 0, res);
703 FLAG_V = (src & res)>>24;
704 FLAG_Z = MASK_OUT_ABOVE_32(res);
706 m68ki_write_32(ea, FLAG_Z);
710 void m68k_op_neg_32_al(void)
712 uint ea = EA_AL_32();
713 uint src = m68ki_read_32(ea);
716 FLAG_N = NFLAG_32(res);
717 FLAG_C = FLAG_X = CFLAG_SUB_32(src, 0, res);
718 FLAG_V = (src & res)>>24;
719 FLAG_Z = MASK_OUT_ABOVE_32(res);
721 m68ki_write_32(ea, FLAG_Z);
725 void m68k_op_negx_8_d(void)
728 uint res = 0 - MASK_OUT_ABOVE_8(*r_dst) - XFLAG_AS_1();
730 FLAG_N = NFLAG_8(res);
731 FLAG_X = FLAG_C = CFLAG_8(res);
732 FLAG_V = *r_dst & res;
734 res = MASK_OUT_ABOVE_8(res);
737 *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
741 void m68k_op_negx_8_ai(void)
743 uint ea = EA_AY_AI_8();
744 uint src = m68ki_read_8(ea);
745 uint res = 0 - src - XFLAG_AS_1();
747 FLAG_N = NFLAG_8(res);
748 FLAG_X = FLAG_C = CFLAG_8(res);
751 res = MASK_OUT_ABOVE_8(res);
754 m68ki_write_8(ea, res);
758 void m68k_op_negx_8_pi(void)
760 uint ea = EA_AY_PI_8();
761 uint src = m68ki_read_8(ea);
762 uint res = 0 - src - XFLAG_AS_1();
764 FLAG_N = NFLAG_8(res);
765 FLAG_X = FLAG_C = CFLAG_8(res);
768 res = MASK_OUT_ABOVE_8(res);
771 m68ki_write_8(ea, res);
775 void m68k_op_negx_8_pi7(void)
777 uint ea = EA_A7_PI_8();
778 uint src = m68ki_read_8(ea);
779 uint res = 0 - src - XFLAG_AS_1();
781 FLAG_N = NFLAG_8(res);
782 FLAG_X = FLAG_C = CFLAG_8(res);
785 res = MASK_OUT_ABOVE_8(res);
788 m68ki_write_8(ea, res);
792 void m68k_op_negx_8_pd(void)
794 uint ea = EA_AY_PD_8();
795 uint src = m68ki_read_8(ea);
796 uint res = 0 - src - XFLAG_AS_1();
798 FLAG_N = NFLAG_8(res);
799 FLAG_X = FLAG_C = CFLAG_8(res);
802 res = MASK_OUT_ABOVE_8(res);
805 m68ki_write_8(ea, res);
809 void m68k_op_negx_8_pd7(void)
811 uint ea = EA_A7_PD_8();
812 uint src = m68ki_read_8(ea);
813 uint res = 0 - src - XFLAG_AS_1();
815 FLAG_N = NFLAG_8(res);
816 FLAG_X = FLAG_C = CFLAG_8(res);
819 res = MASK_OUT_ABOVE_8(res);
822 m68ki_write_8(ea, res);
826 void m68k_op_negx_8_di(void)
828 uint ea = EA_AY_DI_8();
829 uint src = m68ki_read_8(ea);
830 uint res = 0 - src - XFLAG_AS_1();
832 FLAG_N = NFLAG_8(res);
833 FLAG_X = FLAG_C = CFLAG_8(res);
836 res = MASK_OUT_ABOVE_8(res);
839 m68ki_write_8(ea, res);
843 void m68k_op_negx_8_ix(void)
845 uint ea = EA_AY_IX_8();
846 uint src = m68ki_read_8(ea);
847 uint res = 0 - src - XFLAG_AS_1();
849 FLAG_N = NFLAG_8(res);
850 FLAG_X = FLAG_C = CFLAG_8(res);
853 res = MASK_OUT_ABOVE_8(res);
856 m68ki_write_8(ea, res);
860 void m68k_op_negx_8_aw(void)
863 uint src = m68ki_read_8(ea);
864 uint res = 0 - src - XFLAG_AS_1();
866 FLAG_N = NFLAG_8(res);
867 FLAG_X = FLAG_C = CFLAG_8(res);
870 res = MASK_OUT_ABOVE_8(res);
873 m68ki_write_8(ea, res);
877 void m68k_op_negx_8_al(void)
880 uint src = m68ki_read_8(ea);
881 uint res = 0 - src - XFLAG_AS_1();
883 FLAG_N = NFLAG_8(res);
884 FLAG_X = FLAG_C = CFLAG_8(res);
887 res = MASK_OUT_ABOVE_8(res);
890 m68ki_write_8(ea, res);
894 void m68k_op_negx_16_d(void)
897 uint res = 0 - MASK_OUT_ABOVE_16(*r_dst) - XFLAG_AS_1();
899 FLAG_N = NFLAG_16(res);
900 FLAG_X = FLAG_C = CFLAG_16(res);
901 FLAG_V = (*r_dst & res)>>8;
903 res = MASK_OUT_ABOVE_16(res);
906 *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
910 void m68k_op_negx_16_ai(void)
912 uint ea = EA_AY_AI_16();
913 uint src = m68ki_read_16(ea);
914 uint res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1();
916 FLAG_N = NFLAG_16(res);
917 FLAG_X = FLAG_C = CFLAG_16(res);
918 FLAG_V = (src & res)>>8;
920 res = MASK_OUT_ABOVE_16(res);
923 m68ki_write_16(ea, res);
927 void m68k_op_negx_16_pi(void)
929 uint ea = EA_AY_PI_16();
930 uint src = m68ki_read_16(ea);
931 uint res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1();
933 FLAG_N = NFLAG_16(res);
934 FLAG_X = FLAG_C = CFLAG_16(res);
935 FLAG_V = (src & res)>>8;
937 res = MASK_OUT_ABOVE_16(res);
940 m68ki_write_16(ea, res);
944 void m68k_op_negx_16_pd(void)
946 uint ea = EA_AY_PD_16();
947 uint src = m68ki_read_16(ea);
948 uint res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1();
950 FLAG_N = NFLAG_16(res);
951 FLAG_X = FLAG_C = CFLAG_16(res);
952 FLAG_V = (src & res)>>8;
954 res = MASK_OUT_ABOVE_16(res);
957 m68ki_write_16(ea, res);
961 void m68k_op_negx_16_di(void)
963 uint ea = EA_AY_DI_16();
964 uint src = m68ki_read_16(ea);
965 uint res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1();
967 FLAG_N = NFLAG_16(res);
968 FLAG_X = FLAG_C = CFLAG_16(res);
969 FLAG_V = (src & res)>>8;
971 res = MASK_OUT_ABOVE_16(res);
974 m68ki_write_16(ea, res);
978 void m68k_op_negx_16_ix(void)
980 uint ea = EA_AY_IX_16();
981 uint src = m68ki_read_16(ea);
982 uint res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1();
984 FLAG_N = NFLAG_16(res);
985 FLAG_X = FLAG_C = CFLAG_16(res);
986 FLAG_V = (src & res)>>8;
988 res = MASK_OUT_ABOVE_16(res);
991 m68ki_write_16(ea, res);
995 void m68k_op_negx_16_aw(void)
997 uint ea = EA_AW_16();
998 uint src = m68ki_read_16(ea);
999 uint res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1();
1001 FLAG_N = NFLAG_16(res);
1002 FLAG_X = FLAG_C = CFLAG_16(res);
1003 FLAG_V = (src & res)>>8;
1005 res = MASK_OUT_ABOVE_16(res);
1008 m68ki_write_16(ea, res);
1012 void m68k_op_negx_16_al(void)
1014 uint ea = EA_AL_16();
1015 uint src = m68ki_read_16(ea);
1016 uint res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1();
1018 FLAG_N = NFLAG_16(res);
1019 FLAG_X = FLAG_C = CFLAG_16(res);
1020 FLAG_V = (src & res)>>8;
1022 res = MASK_OUT_ABOVE_16(res);
1025 m68ki_write_16(ea, res);
1029 void m68k_op_negx_32_d(void)
1032 uint res = 0 - MASK_OUT_ABOVE_32(*r_dst) - XFLAG_AS_1();
1034 FLAG_N = NFLAG_32(res);
1035 FLAG_X = FLAG_C = CFLAG_SUB_32(*r_dst, 0, res);
1036 FLAG_V = (*r_dst & res)>>24;
1038 res = MASK_OUT_ABOVE_32(res);
1045 void m68k_op_negx_32_ai(void)
1047 uint ea = EA_AY_AI_32();
1048 uint src = m68ki_read_32(ea);
1049 uint res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1();
1051 FLAG_N = NFLAG_32(res);
1052 FLAG_X = FLAG_C = CFLAG_SUB_32(src, 0, res);
1053 FLAG_V = (src & res)>>24;
1055 res = MASK_OUT_ABOVE_32(res);
1058 m68ki_write_32(ea, res);
1062 void m68k_op_negx_32_pi(void)
1064 uint ea = EA_AY_PI_32();
1065 uint src = m68ki_read_32(ea);
1066 uint res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1();
1068 FLAG_N = NFLAG_32(res);
1069 FLAG_X = FLAG_C = CFLAG_SUB_32(src, 0, res);
1070 FLAG_V = (src & res)>>24;
1072 res = MASK_OUT_ABOVE_32(res);
1075 m68ki_write_32(ea, res);
1079 void m68k_op_negx_32_pd(void)
1081 uint ea = EA_AY_PD_32();
1082 uint src = m68ki_read_32(ea);
1083 uint res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1();
1085 FLAG_N = NFLAG_32(res);
1086 FLAG_X = FLAG_C = CFLAG_SUB_32(src, 0, res);
1087 FLAG_V = (src & res)>>24;
1089 res = MASK_OUT_ABOVE_32(res);
1092 m68ki_write_32(ea, res);
1096 void m68k_op_negx_32_di(void)
1098 uint ea = EA_AY_DI_32();
1099 uint src = m68ki_read_32(ea);
1100 uint res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1();
1102 FLAG_N = NFLAG_32(res);
1103 FLAG_X = FLAG_C = CFLAG_SUB_32(src, 0, res);
1104 FLAG_V = (src & res)>>24;
1106 res = MASK_OUT_ABOVE_32(res);
1109 m68ki_write_32(ea, res);
1113 void m68k_op_negx_32_ix(void)
1115 uint ea = EA_AY_IX_32();
1116 uint src = m68ki_read_32(ea);
1117 uint res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1();
1119 FLAG_N = NFLAG_32(res);
1120 FLAG_X = FLAG_C = CFLAG_SUB_32(src, 0, res);
1121 FLAG_V = (src & res)>>24;
1123 res = MASK_OUT_ABOVE_32(res);
1126 m68ki_write_32(ea, res);
1130 void m68k_op_negx_32_aw(void)
1132 uint ea = EA_AW_32();
1133 uint src = m68ki_read_32(ea);
1134 uint res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1();
1136 FLAG_N = NFLAG_32(res);
1137 FLAG_X = FLAG_C = CFLAG_SUB_32(src, 0, res);
1138 FLAG_V = (src & res)>>24;
1140 res = MASK_OUT_ABOVE_32(res);
1143 m68ki_write_32(ea, res);
1147 void m68k_op_negx_32_al(void)
1149 uint ea = EA_AL_32();
1150 uint src = m68ki_read_32(ea);
1151 uint res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1();
1153 FLAG_N = NFLAG_32(res);
1154 FLAG_X = FLAG_C = CFLAG_SUB_32(src, 0, res);
1155 FLAG_V = (src & res)>>24;
1157 res = MASK_OUT_ABOVE_32(res);
1160 m68ki_write_32(ea, res);
1164 void m68k_op_nop(void)
1166 m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
1170 void m68k_op_not_8_d(void)
1173 uint res = MASK_OUT_ABOVE_8(~*r_dst);
1175 *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
1177 FLAG_N = NFLAG_8(res);
1179 FLAG_C = CFLAG_CLEAR;
1180 FLAG_V = VFLAG_CLEAR;
1184 void m68k_op_not_8_ai(void)
1186 uint ea = EA_AY_AI_8();
1187 uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea));
1189 m68ki_write_8(ea, res);
1191 FLAG_N = NFLAG_8(res);
1193 FLAG_C = CFLAG_CLEAR;
1194 FLAG_V = VFLAG_CLEAR;
1198 void m68k_op_not_8_pi(void)
1200 uint ea = EA_AY_PI_8();
1201 uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea));
1203 m68ki_write_8(ea, res);
1205 FLAG_N = NFLAG_8(res);
1207 FLAG_C = CFLAG_CLEAR;
1208 FLAG_V = VFLAG_CLEAR;
1212 void m68k_op_not_8_pi7(void)
1214 uint ea = EA_A7_PI_8();
1215 uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea));
1217 m68ki_write_8(ea, res);
1219 FLAG_N = NFLAG_8(res);
1221 FLAG_C = CFLAG_CLEAR;
1222 FLAG_V = VFLAG_CLEAR;
1226 void m68k_op_not_8_pd(void)
1228 uint ea = EA_AY_PD_8();
1229 uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea));
1231 m68ki_write_8(ea, res);
1233 FLAG_N = NFLAG_8(res);
1235 FLAG_C = CFLAG_CLEAR;
1236 FLAG_V = VFLAG_CLEAR;
1240 void m68k_op_not_8_pd7(void)
1242 uint ea = EA_A7_PD_8();
1243 uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea));
1245 m68ki_write_8(ea, res);
1247 FLAG_N = NFLAG_8(res);
1249 FLAG_C = CFLAG_CLEAR;
1250 FLAG_V = VFLAG_CLEAR;
1254 void m68k_op_not_8_di(void)
1256 uint ea = EA_AY_DI_8();
1257 uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea));
1259 m68ki_write_8(ea, res);
1261 FLAG_N = NFLAG_8(res);
1263 FLAG_C = CFLAG_CLEAR;
1264 FLAG_V = VFLAG_CLEAR;
1268 void m68k_op_not_8_ix(void)
1270 uint ea = EA_AY_IX_8();
1271 uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea));
1273 m68ki_write_8(ea, res);
1275 FLAG_N = NFLAG_8(res);
1277 FLAG_C = CFLAG_CLEAR;
1278 FLAG_V = VFLAG_CLEAR;
1282 void m68k_op_not_8_aw(void)
1284 uint ea = EA_AW_8();
1285 uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea));
1287 m68ki_write_8(ea, res);
1289 FLAG_N = NFLAG_8(res);
1291 FLAG_C = CFLAG_CLEAR;
1292 FLAG_V = VFLAG_CLEAR;
1296 void m68k_op_not_8_al(void)
1298 uint ea = EA_AL_8();
1299 uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea));
1301 m68ki_write_8(ea, res);
1303 FLAG_N = NFLAG_8(res);
1305 FLAG_C = CFLAG_CLEAR;
1306 FLAG_V = VFLAG_CLEAR;
1310 void m68k_op_not_16_d(void)
1313 uint res = MASK_OUT_ABOVE_16(~*r_dst);
1315 *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
1317 FLAG_N = NFLAG_16(res);
1319 FLAG_C = CFLAG_CLEAR;
1320 FLAG_V = VFLAG_CLEAR;
1324 void m68k_op_not_16_ai(void)
1326 uint ea = EA_AY_AI_16();
1327 uint res = MASK_OUT_ABOVE_16(~m68ki_read_16(ea));
1329 m68ki_write_16(ea, res);
1331 FLAG_N = NFLAG_16(res);
1333 FLAG_C = CFLAG_CLEAR;
1334 FLAG_V = VFLAG_CLEAR;
1338 void m68k_op_not_16_pi(void)
1340 uint ea = EA_AY_PI_16();
1341 uint res = MASK_OUT_ABOVE_16(~m68ki_read_16(ea));
1343 m68ki_write_16(ea, res);
1345 FLAG_N = NFLAG_16(res);
1347 FLAG_C = CFLAG_CLEAR;
1348 FLAG_V = VFLAG_CLEAR;
1352 void m68k_op_not_16_pd(void)
1354 uint ea = EA_AY_PD_16();
1355 uint res = MASK_OUT_ABOVE_16(~m68ki_read_16(ea));
1357 m68ki_write_16(ea, res);
1359 FLAG_N = NFLAG_16(res);
1361 FLAG_C = CFLAG_CLEAR;
1362 FLAG_V = VFLAG_CLEAR;
1366 void m68k_op_not_16_di(void)
1368 uint ea = EA_AY_DI_16();
1369 uint res = MASK_OUT_ABOVE_16(~m68ki_read_16(ea));
1371 m68ki_write_16(ea, res);
1373 FLAG_N = NFLAG_16(res);
1375 FLAG_C = CFLAG_CLEAR;
1376 FLAG_V = VFLAG_CLEAR;
1380 void m68k_op_not_16_ix(void)
1382 uint ea = EA_AY_IX_16();
1383 uint res = MASK_OUT_ABOVE_16(~m68ki_read_16(ea));
1385 m68ki_write_16(ea, res);
1387 FLAG_N = NFLAG_16(res);
1389 FLAG_C = CFLAG_CLEAR;
1390 FLAG_V = VFLAG_CLEAR;
1394 void m68k_op_not_16_aw(void)
1396 uint ea = EA_AW_16();
1397 uint res = MASK_OUT_ABOVE_16(~m68ki_read_16(ea));
1399 m68ki_write_16(ea, res);
1401 FLAG_N = NFLAG_16(res);
1403 FLAG_C = CFLAG_CLEAR;
1404 FLAG_V = VFLAG_CLEAR;
1408 void m68k_op_not_16_al(void)
1410 uint ea = EA_AL_16();
1411 uint res = MASK_OUT_ABOVE_16(~m68ki_read_16(ea));
1413 m68ki_write_16(ea, res);
1415 FLAG_N = NFLAG_16(res);
1417 FLAG_C = CFLAG_CLEAR;
1418 FLAG_V = VFLAG_CLEAR;
1422 void m68k_op_not_32_d(void)
1425 uint res = *r_dst = MASK_OUT_ABOVE_32(~*r_dst);
1427 FLAG_N = NFLAG_32(res);
1429 FLAG_C = CFLAG_CLEAR;
1430 FLAG_V = VFLAG_CLEAR;
1434 void m68k_op_not_32_ai(void)
1436 uint ea = EA_AY_AI_32();
1437 uint res = MASK_OUT_ABOVE_32(~m68ki_read_32(ea));
1439 m68ki_write_32(ea, res);
1441 FLAG_N = NFLAG_32(res);
1443 FLAG_C = CFLAG_CLEAR;
1444 FLAG_V = VFLAG_CLEAR;
1448 void m68k_op_not_32_pi(void)
1450 uint ea = EA_AY_PI_32();
1451 uint res = MASK_OUT_ABOVE_32(~m68ki_read_32(ea));
1453 m68ki_write_32(ea, res);
1455 FLAG_N = NFLAG_32(res);
1457 FLAG_C = CFLAG_CLEAR;
1458 FLAG_V = VFLAG_CLEAR;
1462 void m68k_op_not_32_pd(void)
1464 uint ea = EA_AY_PD_32();
1465 uint res = MASK_OUT_ABOVE_32(~m68ki_read_32(ea));
1467 m68ki_write_32(ea, res);
1469 FLAG_N = NFLAG_32(res);
1471 FLAG_C = CFLAG_CLEAR;
1472 FLAG_V = VFLAG_CLEAR;
1476 void m68k_op_not_32_di(void)
1478 uint ea = EA_AY_DI_32();
1479 uint res = MASK_OUT_ABOVE_32(~m68ki_read_32(ea));
1481 m68ki_write_32(ea, res);
1483 FLAG_N = NFLAG_32(res);
1485 FLAG_C = CFLAG_CLEAR;
1486 FLAG_V = VFLAG_CLEAR;
1490 void m68k_op_not_32_ix(void)
1492 uint ea = EA_AY_IX_32();
1493 uint res = MASK_OUT_ABOVE_32(~m68ki_read_32(ea));
1495 m68ki_write_32(ea, res);
1497 FLAG_N = NFLAG_32(res);
1499 FLAG_C = CFLAG_CLEAR;
1500 FLAG_V = VFLAG_CLEAR;
1504 void m68k_op_not_32_aw(void)
1506 uint ea = EA_AW_32();
1507 uint res = MASK_OUT_ABOVE_32(~m68ki_read_32(ea));
1509 m68ki_write_32(ea, res);
1511 FLAG_N = NFLAG_32(res);
1513 FLAG_C = CFLAG_CLEAR;
1514 FLAG_V = VFLAG_CLEAR;
1518 void m68k_op_not_32_al(void)
1520 uint ea = EA_AL_32();
1521 uint res = MASK_OUT_ABOVE_32(~m68ki_read_32(ea));
1523 m68ki_write_32(ea, res);
1525 FLAG_N = NFLAG_32(res);
1527 FLAG_C = CFLAG_CLEAR;
1528 FLAG_V = VFLAG_CLEAR;
1532 void m68k_op_or_8_er_d(void)
1534 uint res = MASK_OUT_ABOVE_8((DX |= MASK_OUT_ABOVE_8(DY)));
1536 FLAG_N = NFLAG_8(res);
1538 FLAG_C = CFLAG_CLEAR;
1539 FLAG_V = VFLAG_CLEAR;
1543 void m68k_op_or_8_er_ai(void)
1545 uint res = MASK_OUT_ABOVE_8((DX |= OPER_AY_AI_8()));
1547 FLAG_N = NFLAG_8(res);
1549 FLAG_C = CFLAG_CLEAR;
1550 FLAG_V = VFLAG_CLEAR;
1554 void m68k_op_or_8_er_pi(void)
1556 uint res = MASK_OUT_ABOVE_8((DX |= OPER_AY_PI_8()));
1558 FLAG_N = NFLAG_8(res);
1560 FLAG_C = CFLAG_CLEAR;
1561 FLAG_V = VFLAG_CLEAR;
1565 void m68k_op_or_8_er_pi7(void)
1567 uint res = MASK_OUT_ABOVE_8((DX |= OPER_A7_PI_8()));
1569 FLAG_N = NFLAG_8(res);
1571 FLAG_C = CFLAG_CLEAR;
1572 FLAG_V = VFLAG_CLEAR;
1576 void m68k_op_or_8_er_pd(void)
1578 uint res = MASK_OUT_ABOVE_8((DX |= OPER_AY_PD_8()));
1580 FLAG_N = NFLAG_8(res);
1582 FLAG_C = CFLAG_CLEAR;
1583 FLAG_V = VFLAG_CLEAR;
1587 void m68k_op_or_8_er_pd7(void)
1589 uint res = MASK_OUT_ABOVE_8((DX |= OPER_A7_PD_8()));
1591 FLAG_N = NFLAG_8(res);
1593 FLAG_C = CFLAG_CLEAR;
1594 FLAG_V = VFLAG_CLEAR;
1598 void m68k_op_or_8_er_di(void)
1600 uint res = MASK_OUT_ABOVE_8((DX |= OPER_AY_DI_8()));
1602 FLAG_N = NFLAG_8(res);
1604 FLAG_C = CFLAG_CLEAR;
1605 FLAG_V = VFLAG_CLEAR;
1609 void m68k_op_or_8_er_ix(void)
1611 uint res = MASK_OUT_ABOVE_8((DX |= OPER_AY_IX_8()));
1613 FLAG_N = NFLAG_8(res);
1615 FLAG_C = CFLAG_CLEAR;
1616 FLAG_V = VFLAG_CLEAR;
1620 void m68k_op_or_8_er_aw(void)
1622 uint res = MASK_OUT_ABOVE_8((DX |= OPER_AW_8()));
1624 FLAG_N = NFLAG_8(res);
1626 FLAG_C = CFLAG_CLEAR;
1627 FLAG_V = VFLAG_CLEAR;
1631 void m68k_op_or_8_er_al(void)
1633 uint res = MASK_OUT_ABOVE_8((DX |= OPER_AL_8()));
1635 FLAG_N = NFLAG_8(res);
1637 FLAG_C = CFLAG_CLEAR;
1638 FLAG_V = VFLAG_CLEAR;
1642 void m68k_op_or_8_er_pcdi(void)
1644 uint res = MASK_OUT_ABOVE_8((DX |= OPER_PCDI_8()));
1646 FLAG_N = NFLAG_8(res);
1648 FLAG_C = CFLAG_CLEAR;
1649 FLAG_V = VFLAG_CLEAR;
1653 void m68k_op_or_8_er_pcix(void)
1655 uint res = MASK_OUT_ABOVE_8((DX |= OPER_PCIX_8()));
1657 FLAG_N = NFLAG_8(res);
1659 FLAG_C = CFLAG_CLEAR;
1660 FLAG_V = VFLAG_CLEAR;
1664 void m68k_op_or_8_er_i(void)
1666 uint res = MASK_OUT_ABOVE_8((DX |= OPER_I_8()));
1668 FLAG_N = NFLAG_8(res);
1670 FLAG_C = CFLAG_CLEAR;
1671 FLAG_V = VFLAG_CLEAR;
1675 void m68k_op_or_16_er_d(void)
1677 uint res = MASK_OUT_ABOVE_16((DX |= MASK_OUT_ABOVE_16(DY)));
1679 FLAG_N = NFLAG_16(res);
1681 FLAG_C = CFLAG_CLEAR;
1682 FLAG_V = VFLAG_CLEAR;
1686 void m68k_op_or_16_er_ai(void)
1688 uint res = MASK_OUT_ABOVE_16((DX |= OPER_AY_AI_16()));
1690 FLAG_N = NFLAG_16(res);
1692 FLAG_C = CFLAG_CLEAR;
1693 FLAG_V = VFLAG_CLEAR;
1697 void m68k_op_or_16_er_pi(void)
1699 uint res = MASK_OUT_ABOVE_16((DX |= OPER_AY_PI_16()));
1701 FLAG_N = NFLAG_16(res);
1703 FLAG_C = CFLAG_CLEAR;
1704 FLAG_V = VFLAG_CLEAR;
1708 void m68k_op_or_16_er_pd(void)
1710 uint res = MASK_OUT_ABOVE_16((DX |= OPER_AY_PD_16()));
1712 FLAG_N = NFLAG_16(res);
1714 FLAG_C = CFLAG_CLEAR;
1715 FLAG_V = VFLAG_CLEAR;
1719 void m68k_op_or_16_er_di(void)
1721 uint res = MASK_OUT_ABOVE_16((DX |= OPER_AY_DI_16()));
1723 FLAG_N = NFLAG_16(res);
1725 FLAG_C = CFLAG_CLEAR;
1726 FLAG_V = VFLAG_CLEAR;
1730 void m68k_op_or_16_er_ix(void)
1732 uint res = MASK_OUT_ABOVE_16((DX |= OPER_AY_IX_16()));
1734 FLAG_N = NFLAG_16(res);
1736 FLAG_C = CFLAG_CLEAR;
1737 FLAG_V = VFLAG_CLEAR;
1741 void m68k_op_or_16_er_aw(void)
1743 uint res = MASK_OUT_ABOVE_16((DX |= OPER_AW_16()));
1745 FLAG_N = NFLAG_16(res);
1747 FLAG_C = CFLAG_CLEAR;
1748 FLAG_V = VFLAG_CLEAR;
1752 void m68k_op_or_16_er_al(void)
1754 uint res = MASK_OUT_ABOVE_16((DX |= OPER_AL_16()));
1756 FLAG_N = NFLAG_16(res);
1758 FLAG_C = CFLAG_CLEAR;
1759 FLAG_V = VFLAG_CLEAR;
1763 void m68k_op_or_16_er_pcdi(void)
1765 uint res = MASK_OUT_ABOVE_16((DX |= OPER_PCDI_16()));
1767 FLAG_N = NFLAG_16(res);
1769 FLAG_C = CFLAG_CLEAR;
1770 FLAG_V = VFLAG_CLEAR;
1774 void m68k_op_or_16_er_pcix(void)
1776 uint res = MASK_OUT_ABOVE_16((DX |= OPER_PCIX_16()));
1778 FLAG_N = NFLAG_16(res);
1780 FLAG_C = CFLAG_CLEAR;
1781 FLAG_V = VFLAG_CLEAR;
1785 void m68k_op_or_16_er_i(void)
1787 uint res = MASK_OUT_ABOVE_16((DX |= OPER_I_16()));
1789 FLAG_N = NFLAG_16(res);
1791 FLAG_C = CFLAG_CLEAR;
1792 FLAG_V = VFLAG_CLEAR;
1796 void m68k_op_or_32_er_d(void)
1798 uint res = DX |= DY;
1800 FLAG_N = NFLAG_32(res);
1802 FLAG_C = CFLAG_CLEAR;
1803 FLAG_V = VFLAG_CLEAR;
1807 void m68k_op_or_32_er_ai(void)
1809 uint res = DX |= OPER_AY_AI_32();
1811 FLAG_N = NFLAG_32(res);
1813 FLAG_C = CFLAG_CLEAR;
1814 FLAG_V = VFLAG_CLEAR;
1818 void m68k_op_or_32_er_pi(void)
1820 uint res = DX |= OPER_AY_PI_32();
1822 FLAG_N = NFLAG_32(res);
1824 FLAG_C = CFLAG_CLEAR;
1825 FLAG_V = VFLAG_CLEAR;
1829 void m68k_op_or_32_er_pd(void)
1831 uint res = DX |= OPER_AY_PD_32();
1833 FLAG_N = NFLAG_32(res);
1835 FLAG_C = CFLAG_CLEAR;
1836 FLAG_V = VFLAG_CLEAR;
1840 void m68k_op_or_32_er_di(void)
1842 uint res = DX |= OPER_AY_DI_32();
1844 FLAG_N = NFLAG_32(res);
1846 FLAG_C = CFLAG_CLEAR;
1847 FLAG_V = VFLAG_CLEAR;
1851 void m68k_op_or_32_er_ix(void)
1853 uint res = DX |= OPER_AY_IX_32();
1855 FLAG_N = NFLAG_32(res);
1857 FLAG_C = CFLAG_CLEAR;
1858 FLAG_V = VFLAG_CLEAR;
1862 void m68k_op_or_32_er_aw(void)
1864 uint res = DX |= OPER_AW_32();
1866 FLAG_N = NFLAG_32(res);
1868 FLAG_C = CFLAG_CLEAR;
1869 FLAG_V = VFLAG_CLEAR;
1873 void m68k_op_or_32_er_al(void)
1875 uint res = DX |= OPER_AL_32();
1877 FLAG_N = NFLAG_32(res);
1879 FLAG_C = CFLAG_CLEAR;
1880 FLAG_V = VFLAG_CLEAR;
1884 void m68k_op_or_32_er_pcdi(void)
1886 uint res = DX |= OPER_PCDI_32();
1888 FLAG_N = NFLAG_32(res);
1890 FLAG_C = CFLAG_CLEAR;
1891 FLAG_V = VFLAG_CLEAR;
1895 void m68k_op_or_32_er_pcix(void)
1897 uint res = DX |= OPER_PCIX_32();
1899 FLAG_N = NFLAG_32(res);
1901 FLAG_C = CFLAG_CLEAR;
1902 FLAG_V = VFLAG_CLEAR;
1906 void m68k_op_or_32_er_i(void)
1908 uint res = DX |= OPER_I_32();
1910 FLAG_N = NFLAG_32(res);
1912 FLAG_C = CFLAG_CLEAR;
1913 FLAG_V = VFLAG_CLEAR;
1917 void m68k_op_or_8_re_ai(void)
1919 uint ea = EA_AY_AI_8();
1920 uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea));
1922 m68ki_write_8(ea, res);
1924 FLAG_N = NFLAG_8(res);
1926 FLAG_C = CFLAG_CLEAR;
1927 FLAG_V = VFLAG_CLEAR;
1931 void m68k_op_or_8_re_pi(void)
1933 uint ea = EA_AY_PI_8();
1934 uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea));
1936 m68ki_write_8(ea, res);
1938 FLAG_N = NFLAG_8(res);
1940 FLAG_C = CFLAG_CLEAR;
1941 FLAG_V = VFLAG_CLEAR;
1945 void m68k_op_or_8_re_pi7(void)
1947 uint ea = EA_A7_PI_8();
1948 uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea));
1950 m68ki_write_8(ea, res);
1952 FLAG_N = NFLAG_8(res);
1954 FLAG_C = CFLAG_CLEAR;
1955 FLAG_V = VFLAG_CLEAR;
1959 void m68k_op_or_8_re_pd(void)
1961 uint ea = EA_AY_PD_8();
1962 uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea));
1964 m68ki_write_8(ea, res);
1966 FLAG_N = NFLAG_8(res);
1968 FLAG_C = CFLAG_CLEAR;
1969 FLAG_V = VFLAG_CLEAR;
1973 void m68k_op_or_8_re_pd7(void)
1975 uint ea = EA_A7_PD_8();
1976 uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea));
1978 m68ki_write_8(ea, res);
1980 FLAG_N = NFLAG_8(res);
1982 FLAG_C = CFLAG_CLEAR;
1983 FLAG_V = VFLAG_CLEAR;
1987 void m68k_op_or_8_re_di(void)
1989 uint ea = EA_AY_DI_8();
1990 uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea));
1992 m68ki_write_8(ea, res);
1994 FLAG_N = NFLAG_8(res);
1996 FLAG_C = CFLAG_CLEAR;
1997 FLAG_V = VFLAG_CLEAR;
2001 void m68k_op_or_8_re_ix(void)
2003 uint ea = EA_AY_IX_8();
2004 uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea));
2006 m68ki_write_8(ea, res);
2008 FLAG_N = NFLAG_8(res);
2010 FLAG_C = CFLAG_CLEAR;
2011 FLAG_V = VFLAG_CLEAR;
2015 void m68k_op_or_8_re_aw(void)
2017 uint ea = EA_AW_8();
2018 uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea));
2020 m68ki_write_8(ea, res);
2022 FLAG_N = NFLAG_8(res);
2024 FLAG_C = CFLAG_CLEAR;
2025 FLAG_V = VFLAG_CLEAR;
2029 void m68k_op_or_8_re_al(void)
2031 uint ea = EA_AL_8();
2032 uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea));
2034 m68ki_write_8(ea, res);
2036 FLAG_N = NFLAG_8(res);
2038 FLAG_C = CFLAG_CLEAR;
2039 FLAG_V = VFLAG_CLEAR;
2043 void m68k_op_or_16_re_ai(void)
2045 uint ea = EA_AY_AI_16();
2046 uint res = MASK_OUT_ABOVE_16(DX | m68ki_read_16(ea));
2048 m68ki_write_16(ea, res);
2050 FLAG_N = NFLAG_16(res);
2052 FLAG_C = CFLAG_CLEAR;
2053 FLAG_V = VFLAG_CLEAR;
2057 void m68k_op_or_16_re_pi(void)
2059 uint ea = EA_AY_PI_16();
2060 uint res = MASK_OUT_ABOVE_16(DX | m68ki_read_16(ea));
2062 m68ki_write_16(ea, res);
2064 FLAG_N = NFLAG_16(res);
2066 FLAG_C = CFLAG_CLEAR;
2067 FLAG_V = VFLAG_CLEAR;
2071 void m68k_op_or_16_re_pd(void)
2073 uint ea = EA_AY_PD_16();
2074 uint res = MASK_OUT_ABOVE_16(DX | m68ki_read_16(ea));
2076 m68ki_write_16(ea, res);
2078 FLAG_N = NFLAG_16(res);
2080 FLAG_C = CFLAG_CLEAR;
2081 FLAG_V = VFLAG_CLEAR;
2085 void m68k_op_or_16_re_di(void)
2087 uint ea = EA_AY_DI_16();
2088 uint res = MASK_OUT_ABOVE_16(DX | m68ki_read_16(ea));
2090 m68ki_write_16(ea, res);
2092 FLAG_N = NFLAG_16(res);
2094 FLAG_C = CFLAG_CLEAR;
2095 FLAG_V = VFLAG_CLEAR;
2099 void m68k_op_or_16_re_ix(void)
2101 uint ea = EA_AY_IX_16();
2102 uint res = MASK_OUT_ABOVE_16(DX | m68ki_read_16(ea));
2104 m68ki_write_16(ea, res);
2106 FLAG_N = NFLAG_16(res);
2108 FLAG_C = CFLAG_CLEAR;
2109 FLAG_V = VFLAG_CLEAR;
2113 void m68k_op_or_16_re_aw(void)
2115 uint ea = EA_AW_16();
2116 uint res = MASK_OUT_ABOVE_16(DX | m68ki_read_16(ea));
2118 m68ki_write_16(ea, res);
2120 FLAG_N = NFLAG_16(res);
2122 FLAG_C = CFLAG_CLEAR;
2123 FLAG_V = VFLAG_CLEAR;
2127 void m68k_op_or_16_re_al(void)
2129 uint ea = EA_AL_16();
2130 uint res = MASK_OUT_ABOVE_16(DX | m68ki_read_16(ea));
2132 m68ki_write_16(ea, res);
2134 FLAG_N = NFLAG_16(res);
2136 FLAG_C = CFLAG_CLEAR;
2137 FLAG_V = VFLAG_CLEAR;
2141 void m68k_op_or_32_re_ai(void)
2143 uint ea = EA_AY_AI_32();
2144 uint res = DX | m68ki_read_32(ea);
2146 m68ki_write_32(ea, res);
2148 FLAG_N = NFLAG_32(res);
2150 FLAG_C = CFLAG_CLEAR;
2151 FLAG_V = VFLAG_CLEAR;
2155 void m68k_op_or_32_re_pi(void)
2157 uint ea = EA_AY_PI_32();
2158 uint res = DX | m68ki_read_32(ea);
2160 m68ki_write_32(ea, res);
2162 FLAG_N = NFLAG_32(res);
2164 FLAG_C = CFLAG_CLEAR;
2165 FLAG_V = VFLAG_CLEAR;
2169 void m68k_op_or_32_re_pd(void)
2171 uint ea = EA_AY_PD_32();
2172 uint res = DX | m68ki_read_32(ea);
2174 m68ki_write_32(ea, res);
2176 FLAG_N = NFLAG_32(res);
2178 FLAG_C = CFLAG_CLEAR;
2179 FLAG_V = VFLAG_CLEAR;
2183 void m68k_op_or_32_re_di(void)
2185 uint ea = EA_AY_DI_32();
2186 uint res = DX | m68ki_read_32(ea);
2188 m68ki_write_32(ea, res);
2190 FLAG_N = NFLAG_32(res);
2192 FLAG_C = CFLAG_CLEAR;
2193 FLAG_V = VFLAG_CLEAR;
2197 void m68k_op_or_32_re_ix(void)
2199 uint ea = EA_AY_IX_32();
2200 uint res = DX | m68ki_read_32(ea);
2202 m68ki_write_32(ea, res);
2204 FLAG_N = NFLAG_32(res);
2206 FLAG_C = CFLAG_CLEAR;
2207 FLAG_V = VFLAG_CLEAR;
2211 void m68k_op_or_32_re_aw(void)
2213 uint ea = EA_AW_32();
2214 uint res = DX | m68ki_read_32(ea);
2216 m68ki_write_32(ea, res);
2218 FLAG_N = NFLAG_32(res);
2220 FLAG_C = CFLAG_CLEAR;
2221 FLAG_V = VFLAG_CLEAR;
2225 void m68k_op_or_32_re_al(void)
2227 uint ea = EA_AL_32();
2228 uint res = DX | m68ki_read_32(ea);
2230 m68ki_write_32(ea, res);
2232 FLAG_N = NFLAG_32(res);
2234 FLAG_C = CFLAG_CLEAR;
2235 FLAG_V = VFLAG_CLEAR;
2239 void m68k_op_ori_8_d(void)
2241 uint res = MASK_OUT_ABOVE_8((DY |= OPER_I_8()));
2243 FLAG_N = NFLAG_8(res);
2245 FLAG_C = CFLAG_CLEAR;
2246 FLAG_V = VFLAG_CLEAR;
2250 void m68k_op_ori_8_ai(void)
2252 uint src = OPER_I_8();
2253 uint ea = EA_AY_AI_8();
2254 uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea));
2256 m68ki_write_8(ea, res);
2258 FLAG_N = NFLAG_8(res);
2260 FLAG_C = CFLAG_CLEAR;
2261 FLAG_V = VFLAG_CLEAR;
2265 void m68k_op_ori_8_pi(void)
2267 uint src = OPER_I_8();
2268 uint ea = EA_AY_PI_8();
2269 uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea));
2271 m68ki_write_8(ea, res);
2273 FLAG_N = NFLAG_8(res);
2275 FLAG_C = CFLAG_CLEAR;
2276 FLAG_V = VFLAG_CLEAR;
2280 void m68k_op_ori_8_pi7(void)
2282 uint src = OPER_I_8();
2283 uint ea = EA_A7_PI_8();
2284 uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea));
2286 m68ki_write_8(ea, res);
2288 FLAG_N = NFLAG_8(res);
2290 FLAG_C = CFLAG_CLEAR;
2291 FLAG_V = VFLAG_CLEAR;
2295 void m68k_op_ori_8_pd(void)
2297 uint src = OPER_I_8();
2298 uint ea = EA_AY_PD_8();
2299 uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea));
2301 m68ki_write_8(ea, res);
2303 FLAG_N = NFLAG_8(res);
2305 FLAG_C = CFLAG_CLEAR;
2306 FLAG_V = VFLAG_CLEAR;
2310 void m68k_op_ori_8_pd7(void)
2312 uint src = OPER_I_8();
2313 uint ea = EA_A7_PD_8();
2314 uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea));
2316 m68ki_write_8(ea, res);
2318 FLAG_N = NFLAG_8(res);
2320 FLAG_C = CFLAG_CLEAR;
2321 FLAG_V = VFLAG_CLEAR;
2325 void m68k_op_ori_8_di(void)
2327 uint src = OPER_I_8();
2328 uint ea = EA_AY_DI_8();
2329 uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea));
2331 m68ki_write_8(ea, res);
2333 FLAG_N = NFLAG_8(res);
2335 FLAG_C = CFLAG_CLEAR;
2336 FLAG_V = VFLAG_CLEAR;
2340 void m68k_op_ori_8_ix(void)
2342 uint src = OPER_I_8();
2343 uint ea = EA_AY_IX_8();
2344 uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea));
2346 m68ki_write_8(ea, res);
2348 FLAG_N = NFLAG_8(res);
2350 FLAG_C = CFLAG_CLEAR;
2351 FLAG_V = VFLAG_CLEAR;
2355 void m68k_op_ori_8_aw(void)
2357 uint src = OPER_I_8();
2358 uint ea = EA_AW_8();
2359 uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea));
2361 m68ki_write_8(ea, res);
2363 FLAG_N = NFLAG_8(res);
2365 FLAG_C = CFLAG_CLEAR;
2366 FLAG_V = VFLAG_CLEAR;
2370 void m68k_op_ori_8_al(void)
2372 uint src = OPER_I_8();
2373 uint ea = EA_AL_8();
2374 uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea));
2376 m68ki_write_8(ea, res);
2378 FLAG_N = NFLAG_8(res);
2380 FLAG_C = CFLAG_CLEAR;
2381 FLAG_V = VFLAG_CLEAR;
2385 void m68k_op_ori_16_d(void)
2387 uint res = MASK_OUT_ABOVE_16(DY |= OPER_I_16());
2389 FLAG_N = NFLAG_16(res);
2391 FLAG_C = CFLAG_CLEAR;
2392 FLAG_V = VFLAG_CLEAR;
2396 void m68k_op_ori_16_ai(void)
2398 uint src = OPER_I_16();
2399 uint ea = EA_AY_AI_16();
2400 uint res = MASK_OUT_ABOVE_16(src | m68ki_read_16(ea));
2402 m68ki_write_16(ea, res);
2404 FLAG_N = NFLAG_16(res);
2406 FLAG_C = CFLAG_CLEAR;
2407 FLAG_V = VFLAG_CLEAR;
2411 void m68k_op_ori_16_pi(void)
2413 uint src = OPER_I_16();
2414 uint ea = EA_AY_PI_16();
2415 uint res = MASK_OUT_ABOVE_16(src | m68ki_read_16(ea));
2417 m68ki_write_16(ea, res);
2419 FLAG_N = NFLAG_16(res);
2421 FLAG_C = CFLAG_CLEAR;
2422 FLAG_V = VFLAG_CLEAR;
2426 void m68k_op_ori_16_pd(void)
2428 uint src = OPER_I_16();
2429 uint ea = EA_AY_PD_16();
2430 uint res = MASK_OUT_ABOVE_16(src | m68ki_read_16(ea));
2432 m68ki_write_16(ea, res);
2434 FLAG_N = NFLAG_16(res);
2436 FLAG_C = CFLAG_CLEAR;
2437 FLAG_V = VFLAG_CLEAR;
2441 void m68k_op_ori_16_di(void)
2443 uint src = OPER_I_16();
2444 uint ea = EA_AY_DI_16();
2445 uint res = MASK_OUT_ABOVE_16(src | m68ki_read_16(ea));
2447 m68ki_write_16(ea, res);
2449 FLAG_N = NFLAG_16(res);
2451 FLAG_C = CFLAG_CLEAR;
2452 FLAG_V = VFLAG_CLEAR;
2456 void m68k_op_ori_16_ix(void)
2458 uint src = OPER_I_16();
2459 uint ea = EA_AY_IX_16();
2460 uint res = MASK_OUT_ABOVE_16(src | m68ki_read_16(ea));
2462 m68ki_write_16(ea, res);
2464 FLAG_N = NFLAG_16(res);
2466 FLAG_C = CFLAG_CLEAR;
2467 FLAG_V = VFLAG_CLEAR;
2471 void m68k_op_ori_16_aw(void)
2473 uint src = OPER_I_16();
2474 uint ea = EA_AW_16();
2475 uint res = MASK_OUT_ABOVE_16(src | m68ki_read_16(ea));
2477 m68ki_write_16(ea, res);
2479 FLAG_N = NFLAG_16(res);
2481 FLAG_C = CFLAG_CLEAR;
2482 FLAG_V = VFLAG_CLEAR;
2486 void m68k_op_ori_16_al(void)
2488 uint src = OPER_I_16();
2489 uint ea = EA_AL_16();
2490 uint res = MASK_OUT_ABOVE_16(src | m68ki_read_16(ea));
2492 m68ki_write_16(ea, res);
2494 FLAG_N = NFLAG_16(res);
2496 FLAG_C = CFLAG_CLEAR;
2497 FLAG_V = VFLAG_CLEAR;
2501 void m68k_op_ori_32_d(void)
2503 uint res = DY |= OPER_I_32();
2505 FLAG_N = NFLAG_32(res);
2507 FLAG_C = CFLAG_CLEAR;
2508 FLAG_V = VFLAG_CLEAR;
2512 void m68k_op_ori_32_ai(void)
2514 uint src = OPER_I_32();
2515 uint ea = EA_AY_AI_32();
2516 uint res = src | m68ki_read_32(ea);
2518 m68ki_write_32(ea, res);
2520 FLAG_N = NFLAG_32(res);
2522 FLAG_C = CFLAG_CLEAR;
2523 FLAG_V = VFLAG_CLEAR;
2527 void m68k_op_ori_32_pi(void)
2529 uint src = OPER_I_32();
2530 uint ea = EA_AY_PI_32();
2531 uint res = src | m68ki_read_32(ea);
2533 m68ki_write_32(ea, res);
2535 FLAG_N = NFLAG_32(res);
2537 FLAG_C = CFLAG_CLEAR;
2538 FLAG_V = VFLAG_CLEAR;
2542 void m68k_op_ori_32_pd(void)
2544 uint src = OPER_I_32();
2545 uint ea = EA_AY_PD_32();
2546 uint res = src | m68ki_read_32(ea);
2548 m68ki_write_32(ea, res);
2550 FLAG_N = NFLAG_32(res);
2552 FLAG_C = CFLAG_CLEAR;
2553 FLAG_V = VFLAG_CLEAR;
2557 void m68k_op_ori_32_di(void)
2559 uint src = OPER_I_32();
2560 uint ea = EA_AY_DI_32();
2561 uint res = src | m68ki_read_32(ea);
2563 m68ki_write_32(ea, res);
2565 FLAG_N = NFLAG_32(res);
2567 FLAG_C = CFLAG_CLEAR;
2568 FLAG_V = VFLAG_CLEAR;
2572 void m68k_op_ori_32_ix(void)
2574 uint src = OPER_I_32();
2575 uint ea = EA_AY_IX_32();
2576 uint res = src | m68ki_read_32(ea);
2578 m68ki_write_32(ea, res);
2580 FLAG_N = NFLAG_32(res);
2582 FLAG_C = CFLAG_CLEAR;
2583 FLAG_V = VFLAG_CLEAR;
2587 void m68k_op_ori_32_aw(void)
2589 uint src = OPER_I_32();
2590 uint ea = EA_AW_32();
2591 uint res = src | m68ki_read_32(ea);
2593 m68ki_write_32(ea, res);
2595 FLAG_N = NFLAG_32(res);
2597 FLAG_C = CFLAG_CLEAR;
2598 FLAG_V = VFLAG_CLEAR;
2602 void m68k_op_ori_32_al(void)
2604 uint src = OPER_I_32();
2605 uint ea = EA_AL_32();
2606 uint res = src | m68ki_read_32(ea);
2608 m68ki_write_32(ea, res);
2610 FLAG_N = NFLAG_32(res);
2612 FLAG_C = CFLAG_CLEAR;
2613 FLAG_V = VFLAG_CLEAR;
2617 void m68k_op_ori_8_toc(void)
2619 m68ki_set_ccr(m68ki_get_ccr() | OPER_I_8());
2623 void m68k_op_ori_16_tos(void)
2627 uint src = OPER_I_16();
2628 m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
2629 m68ki_set_sr(m68ki_get_sr() | src);
2632 m68ki_exception_privilege_violation();
2636 void m68k_op_pack_16_rr(void)
2638 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
2640 /* Note: DX and DY are reversed in Motorola's docs */
2641 uint src = DY + OPER_I_16();
2644 *r_dst = MASK_OUT_BELOW_8(*r_dst) | ((src >> 4) & 0x00f0) | (src & 0x000f);
2647 m68ki_exception_illegal();
2651 void m68k_op_pack_16_mm_ax7(void)
2653 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
2655 /* Note: AX and AY are reversed in Motorola's docs */
2656 uint ea_src = EA_AY_PD_8();
2657 uint src = m68ki_read_8(ea_src);
2658 ea_src = EA_AY_PD_8();
2659 src = ((src << 8) | m68ki_read_8(ea_src)) + OPER_I_16();
2661 m68ki_write_8(EA_A7_PD_8(), ((src >> 4) & 0x00f0) | (src & 0x000f));
2664 m68ki_exception_illegal();
2668 void m68k_op_pack_16_mm_ay7(void)
2670 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
2672 /* Note: AX and AY are reversed in Motorola's docs */
2673 uint ea_src = EA_A7_PD_8();
2674 uint src = m68ki_read_8(ea_src);
2675 ea_src = EA_A7_PD_8();
2676 src = ((src << 8) | m68ki_read_8(ea_src)) + OPER_I_16();
2678 m68ki_write_8(EA_AX_PD_8(), ((src >> 4) & 0x00f0) | (src & 0x000f));
2681 m68ki_exception_illegal();
2685 void m68k_op_pack_16_mm_axy7(void)
2687 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
2689 uint ea_src = EA_A7_PD_8();
2690 uint src = m68ki_read_8(ea_src);
2691 ea_src = EA_A7_PD_8();
2692 src = ((src << 8) | m68ki_read_8(ea_src)) + OPER_I_16();
2694 m68ki_write_8(EA_A7_PD_8(), ((src >> 4) & 0x00f0) | (src & 0x000f));
2697 m68ki_exception_illegal();
2701 void m68k_op_pack_16_mm(void)
2703 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
2705 /* Note: AX and AY are reversed in Motorola's docs */
2706 uint ea_src = EA_AY_PD_8();
2707 uint src = m68ki_read_8(ea_src);
2708 ea_src = EA_AY_PD_8();
2709 src = ((src << 8) | m68ki_read_8(ea_src)) + OPER_I_16();
2711 m68ki_write_8(EA_AX_PD_8(), ((src >> 4) & 0x00f0) | (src & 0x000f));
2714 m68ki_exception_illegal();
2718 void m68k_op_pea_32_ai(void)
2720 uint ea = EA_AY_AI_32();
2726 void m68k_op_pea_32_di(void)
2728 uint ea = EA_AY_DI_32();
2734 void m68k_op_pea_32_ix(void)
2736 uint ea = EA_AY_IX_32();
2742 void m68k_op_pea_32_aw(void)
2744 uint ea = EA_AW_32();
2750 void m68k_op_pea_32_al(void)
2752 uint ea = EA_AL_32();
2758 void m68k_op_pea_32_pcdi(void)
2760 uint ea = EA_PCDI_32();
2766 void m68k_op_pea_32_pcix(void)
2768 uint ea = EA_PCIX_32();
2774 void m68k_op_reset(void)
2778 m68ki_output_reset(); /* auto-disable (see m68kcpu.h) */
2779 USE_CYCLES(CYC_RESET);
2782 m68ki_exception_privilege_violation();
2786 void m68k_op_ror_8_s(void)
2789 uint orig_shift = (((REG_IR >> 9) - 1) & 7) + 1;
2790 uint shift = orig_shift & 7;
2791 uint src = MASK_OUT_ABOVE_8(*r_dst);
2792 uint res = ROR_8(src, shift);
2794 *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
2796 FLAG_N = NFLAG_8(res);
2798 FLAG_C = src << (9-orig_shift);
2799 FLAG_V = VFLAG_CLEAR;
2803 void m68k_op_ror_16_s(void)
2806 uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
2807 uint src = MASK_OUT_ABOVE_16(*r_dst);
2808 uint res = ROR_16(src, shift);
2810 *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
2812 FLAG_N = NFLAG_16(res);
2814 FLAG_C = src << (9-shift);
2815 FLAG_V = VFLAG_CLEAR;
2819 void m68k_op_ror_32_s(void)
2822 uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
2823 uint64 src = *r_dst;
2824 uint res = ROR_32(src, shift);
2828 FLAG_N = NFLAG_32(res);
2830 FLAG_C = src << (9-shift);
2831 FLAG_V = VFLAG_CLEAR;
2835 void m68k_op_ror_8_r(void)
2838 uint orig_shift = DX & 0x3f;
2839 uint shift = orig_shift & 7;
2840 uint src = MASK_OUT_ABOVE_8(*r_dst);
2841 uint res = ROR_8(src, shift);
2845 USE_CYCLES(orig_shift<<CYC_SHIFT);
2847 *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
2848 FLAG_C = src << (8-((shift-1)&7));
2849 FLAG_N = NFLAG_8(res);
2851 FLAG_V = VFLAG_CLEAR;
2855 FLAG_C = CFLAG_CLEAR;
2856 FLAG_N = NFLAG_8(src);
2858 FLAG_V = VFLAG_CLEAR;
2862 void m68k_op_ror_16_r(void)
2865 uint orig_shift = DX & 0x3f;
2866 uint shift = orig_shift & 15;
2867 uint src = MASK_OUT_ABOVE_16(*r_dst);
2868 uint res = ROR_16(src, shift);
2872 USE_CYCLES(orig_shift<<CYC_SHIFT);
2874 *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
2875 FLAG_C = (src >> ((shift - 1) & 15)) << 8;
2876 FLAG_N = NFLAG_16(res);
2878 FLAG_V = VFLAG_CLEAR;
2882 FLAG_C = CFLAG_CLEAR;
2883 FLAG_N = NFLAG_16(src);
2885 FLAG_V = VFLAG_CLEAR;
2889 void m68k_op_ror_32_r(void)
2892 uint orig_shift = DX & 0x3f;
2893 uint shift = orig_shift & 31;
2894 uint64 src = *r_dst;
2895 uint res = ROR_32(src, shift);
2899 USE_CYCLES(orig_shift<<CYC_SHIFT);
2902 FLAG_C = (src >> ((shift - 1) & 31)) << 8;
2903 FLAG_N = NFLAG_32(res);
2905 FLAG_V = VFLAG_CLEAR;
2909 FLAG_C = CFLAG_CLEAR;
2910 FLAG_N = NFLAG_32(src);
2912 FLAG_V = VFLAG_CLEAR;
2916 void m68k_op_ror_16_ai(void)
2918 uint ea = EA_AY_AI_16();
2919 uint src = m68ki_read_16(ea);
2920 uint res = ROR_16(src, 1);
2922 m68ki_write_16(ea, res);
2924 FLAG_N = NFLAG_16(res);
2927 FLAG_V = VFLAG_CLEAR;
2931 void m68k_op_ror_16_pi(void)
2933 uint ea = EA_AY_PI_16();
2934 uint src = m68ki_read_16(ea);
2935 uint res = ROR_16(src, 1);
2937 m68ki_write_16(ea, res);
2939 FLAG_N = NFLAG_16(res);
2942 FLAG_V = VFLAG_CLEAR;
2946 void m68k_op_ror_16_pd(void)
2948 uint ea = EA_AY_PD_16();
2949 uint src = m68ki_read_16(ea);
2950 uint res = ROR_16(src, 1);
2952 m68ki_write_16(ea, res);
2954 FLAG_N = NFLAG_16(res);
2957 FLAG_V = VFLAG_CLEAR;
2961 void m68k_op_ror_16_di(void)
2963 uint ea = EA_AY_DI_16();
2964 uint src = m68ki_read_16(ea);
2965 uint res = ROR_16(src, 1);
2967 m68ki_write_16(ea, res);
2969 FLAG_N = NFLAG_16(res);
2972 FLAG_V = VFLAG_CLEAR;
2976 void m68k_op_ror_16_ix(void)
2978 uint ea = EA_AY_IX_16();
2979 uint src = m68ki_read_16(ea);
2980 uint res = ROR_16(src, 1);
2982 m68ki_write_16(ea, res);
2984 FLAG_N = NFLAG_16(res);
2987 FLAG_V = VFLAG_CLEAR;
2991 void m68k_op_ror_16_aw(void)
2993 uint ea = EA_AW_16();
2994 uint src = m68ki_read_16(ea);
2995 uint res = ROR_16(src, 1);
2997 m68ki_write_16(ea, res);
2999 FLAG_N = NFLAG_16(res);
3002 FLAG_V = VFLAG_CLEAR;
3006 void m68k_op_ror_16_al(void)
3008 uint ea = EA_AL_16();
3009 uint src = m68ki_read_16(ea);
3010 uint res = ROR_16(src, 1);
3012 m68ki_write_16(ea, res);
3014 FLAG_N = NFLAG_16(res);
3017 FLAG_V = VFLAG_CLEAR;
3021 void m68k_op_rol_8_s(void)
3024 uint orig_shift = (((REG_IR >> 9) - 1) & 7) + 1;
3025 uint shift = orig_shift & 7;
3026 uint src = MASK_OUT_ABOVE_8(*r_dst);
3027 uint res = ROL_8(src, shift);
3029 *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
3031 FLAG_N = NFLAG_8(res);
3033 FLAG_C = src << orig_shift;
3034 FLAG_V = VFLAG_CLEAR;
3038 void m68k_op_rol_16_s(void)
3041 uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
3042 uint src = MASK_OUT_ABOVE_16(*r_dst);
3043 uint res = ROL_16(src, shift);
3045 *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
3047 FLAG_N = NFLAG_16(res);
3049 FLAG_C = src >> (8-shift);
3050 FLAG_V = VFLAG_CLEAR;
3054 void m68k_op_rol_32_s(void)
3057 uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
3058 uint64 src = *r_dst;
3059 uint res = ROL_32(src, shift);
3063 FLAG_N = NFLAG_32(res);
3065 FLAG_C = src >> (24-shift);
3066 FLAG_V = VFLAG_CLEAR;
3070 void m68k_op_rol_8_r(void)
3073 uint orig_shift = DX & 0x3f;
3074 uint shift = orig_shift & 7;
3075 uint src = MASK_OUT_ABOVE_8(*r_dst);
3076 uint res = ROL_8(src, shift);
3080 USE_CYCLES(orig_shift<<CYC_SHIFT);
3084 *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
3085 FLAG_C = src << shift;
3086 FLAG_N = NFLAG_8(res);
3088 FLAG_V = VFLAG_CLEAR;
3091 FLAG_C = (src & 1)<<8;
3092 FLAG_N = NFLAG_8(src);
3094 FLAG_V = VFLAG_CLEAR;
3098 FLAG_C = CFLAG_CLEAR;
3099 FLAG_N = NFLAG_8(src);
3101 FLAG_V = VFLAG_CLEAR;
3105 void m68k_op_rol_16_r(void)
3108 uint orig_shift = DX & 0x3f;
3109 uint shift = orig_shift & 15;
3110 uint src = MASK_OUT_ABOVE_16(*r_dst);
3111 uint res = MASK_OUT_ABOVE_16(ROL_16(src, shift));
3115 USE_CYCLES(orig_shift<<CYC_SHIFT);
3119 *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
3120 FLAG_C = (src << shift) >> 8;
3121 FLAG_N = NFLAG_16(res);
3123 FLAG_V = VFLAG_CLEAR;
3126 FLAG_C = (src & 1)<<8;
3127 FLAG_N = NFLAG_16(src);
3129 FLAG_V = VFLAG_CLEAR;
3133 FLAG_C = CFLAG_CLEAR;
3134 FLAG_N = NFLAG_16(src);
3136 FLAG_V = VFLAG_CLEAR;
3140 void m68k_op_rol_32_r(void)
3143 uint orig_shift = DX & 0x3f;
3144 uint shift = orig_shift & 31;
3145 uint64 src = *r_dst;
3146 uint res = ROL_32(src, shift);
3150 USE_CYCLES(orig_shift<<CYC_SHIFT);
3154 FLAG_C = (src >> (32 - shift)) << 8;
3155 FLAG_N = NFLAG_32(res);
3157 FLAG_V = VFLAG_CLEAR;
3161 FLAG_C = CFLAG_CLEAR;
3162 FLAG_N = NFLAG_32(src);
3164 FLAG_V = VFLAG_CLEAR;
3168 void m68k_op_rol_16_ai(void)
3170 uint ea = EA_AY_AI_16();
3171 uint src = m68ki_read_16(ea);
3172 uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1));
3174 m68ki_write_16(ea, res);
3176 FLAG_N = NFLAG_16(res);
3179 FLAG_V = VFLAG_CLEAR;
3183 void m68k_op_rol_16_pi(void)
3185 uint ea = EA_AY_PI_16();
3186 uint src = m68ki_read_16(ea);
3187 uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1));
3189 m68ki_write_16(ea, res);
3191 FLAG_N = NFLAG_16(res);
3194 FLAG_V = VFLAG_CLEAR;
3198 void m68k_op_rol_16_pd(void)
3200 uint ea = EA_AY_PD_16();
3201 uint src = m68ki_read_16(ea);
3202 uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1));
3204 m68ki_write_16(ea, res);
3206 FLAG_N = NFLAG_16(res);
3209 FLAG_V = VFLAG_CLEAR;
3213 void m68k_op_rol_16_di(void)
3215 uint ea = EA_AY_DI_16();
3216 uint src = m68ki_read_16(ea);
3217 uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1));
3219 m68ki_write_16(ea, res);
3221 FLAG_N = NFLAG_16(res);
3224 FLAG_V = VFLAG_CLEAR;
3228 void m68k_op_rol_16_ix(void)
3230 uint ea = EA_AY_IX_16();
3231 uint src = m68ki_read_16(ea);
3232 uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1));
3234 m68ki_write_16(ea, res);
3236 FLAG_N = NFLAG_16(res);
3239 FLAG_V = VFLAG_CLEAR;
3243 void m68k_op_rol_16_aw(void)
3245 uint ea = EA_AW_16();
3246 uint src = m68ki_read_16(ea);
3247 uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1));
3249 m68ki_write_16(ea, res);
3251 FLAG_N = NFLAG_16(res);
3254 FLAG_V = VFLAG_CLEAR;
3258 void m68k_op_rol_16_al(void)
3260 uint ea = EA_AL_16();
3261 uint src = m68ki_read_16(ea);
3262 uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1));
3264 m68ki_write_16(ea, res);
3266 FLAG_N = NFLAG_16(res);
3269 FLAG_V = VFLAG_CLEAR;
3273 void m68k_op_roxr_8_s(void)
3276 uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
3277 uint src = MASK_OUT_ABOVE_8(*r_dst);
3278 uint res = ROR_9(src | (XFLAG_AS_1() << 8), shift);
3280 FLAG_C = FLAG_X = res;
3281 res = MASK_OUT_ABOVE_8(res);
3283 *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
3285 FLAG_N = NFLAG_8(res);
3287 FLAG_V = VFLAG_CLEAR;
3291 void m68k_op_roxr_16_s(void)
3294 uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
3295 uint src = MASK_OUT_ABOVE_16(*r_dst);
3296 uint res = ROR_17(src | (XFLAG_AS_1() << 16), shift);
3298 FLAG_C = FLAG_X = res >> 8;
3299 res = MASK_OUT_ABOVE_16(res);
3301 *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
3303 FLAG_N = NFLAG_16(res);
3305 FLAG_V = VFLAG_CLEAR;
3309 void m68k_op_roxr_32_s(void)
3314 uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
3315 uint64 src = *r_dst;
3316 uint64 res = src | (((uint64)XFLAG_AS_1()) << 32);
3318 res = ROR_33_64(res, shift);
3320 FLAG_C = FLAG_X = res >> 24;
3321 res = MASK_OUT_ABOVE_32(res);
3325 FLAG_N = NFLAG_32(res);
3327 FLAG_V = VFLAG_CLEAR;
3332 uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
3334 uint res = MASK_OUT_ABOVE_32((ROR_33(src, shift) & ~(1 << (32 - shift))) | (XFLAG_AS_1() << (32 - shift)));
3335 uint new_x_flag = src & (1 << (shift - 1));
3339 FLAG_C = FLAG_X = (new_x_flag != 0)<<8;
3340 FLAG_N = NFLAG_32(res);
3342 FLAG_V = VFLAG_CLEAR;
3348 void m68k_op_roxr_8_r(void)
3351 uint orig_shift = DX & 0x3f;
3355 uint shift = orig_shift % 9;
3356 uint src = MASK_OUT_ABOVE_8(*r_dst);
3357 uint res = ROR_9(src | (XFLAG_AS_1() << 8), shift);
3359 USE_CYCLES(orig_shift<<CYC_SHIFT);
3361 FLAG_C = FLAG_X = res;
3362 res = MASK_OUT_ABOVE_8(res);
3364 *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
3365 FLAG_N = NFLAG_8(res);
3367 FLAG_V = VFLAG_CLEAR;
3372 FLAG_N = NFLAG_8(*r_dst);
3373 FLAG_Z = MASK_OUT_ABOVE_8(*r_dst);
3374 FLAG_V = VFLAG_CLEAR;
3378 void m68k_op_roxr_16_r(void)
3381 uint orig_shift = DX & 0x3f;
3385 uint shift = orig_shift % 17;
3386 uint src = MASK_OUT_ABOVE_16(*r_dst);
3387 uint res = ROR_17(src | (XFLAG_AS_1() << 16), shift);
3389 USE_CYCLES(orig_shift<<CYC_SHIFT);
3391 FLAG_C = FLAG_X = res >> 8;
3392 res = MASK_OUT_ABOVE_16(res);
3394 *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
3395 FLAG_N = NFLAG_16(res);
3397 FLAG_V = VFLAG_CLEAR;
3402 FLAG_N = NFLAG_16(*r_dst);
3403 FLAG_Z = MASK_OUT_ABOVE_16(*r_dst);
3404 FLAG_V = VFLAG_CLEAR;
3408 void m68k_op_roxr_32_r(void)
3413 uint orig_shift = DX & 0x3f;
3417 uint shift = orig_shift % 33;
3418 uint64 src = *r_dst;
3419 uint64 res = src | (((uint64)XFLAG_AS_1()) << 32);
3421 res = ROR_33_64(res, shift);
3423 USE_CYCLES(orig_shift<<CYC_SHIFT);
3425 FLAG_C = FLAG_X = res >> 24;
3426 res = MASK_OUT_ABOVE_32(res);
3429 FLAG_N = NFLAG_32(res);
3431 FLAG_V = VFLAG_CLEAR;
3436 FLAG_N = NFLAG_32(*r_dst);
3438 FLAG_V = VFLAG_CLEAR;
3443 uint orig_shift = DX & 0x3f;
3444 uint shift = orig_shift % 33;
3446 uint res = MASK_OUT_ABOVE_32((ROR_33(src, shift) & ~(1 << (32 - shift))) | (XFLAG_AS_1() << (32 - shift)));
3447 uint new_x_flag = src & (1 << (shift - 1));
3450 USE_CYCLES(orig_shift<<CYC_SHIFT);
3455 FLAG_X = (new_x_flag != 0)<<8;
3460 FLAG_N = NFLAG_32(res);
3462 FLAG_V = VFLAG_CLEAR;
3468 void m68k_op_roxr_16_ai(void)
3470 uint ea = EA_AY_AI_16();
3471 uint src = m68ki_read_16(ea);
3472 uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1);
3474 FLAG_C = FLAG_X = res >> 8;
3475 res = MASK_OUT_ABOVE_16(res);
3477 m68ki_write_16(ea, res);
3479 FLAG_N = NFLAG_16(res);
3481 FLAG_V = VFLAG_CLEAR;
3485 void m68k_op_roxr_16_pi(void)
3487 uint ea = EA_AY_PI_16();
3488 uint src = m68ki_read_16(ea);
3489 uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1);
3491 FLAG_C = FLAG_X = res >> 8;
3492 res = MASK_OUT_ABOVE_16(res);
3494 m68ki_write_16(ea, res);
3496 FLAG_N = NFLAG_16(res);
3498 FLAG_V = VFLAG_CLEAR;
3502 void m68k_op_roxr_16_pd(void)
3504 uint ea = EA_AY_PD_16();
3505 uint src = m68ki_read_16(ea);
3506 uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1);
3508 FLAG_C = FLAG_X = res >> 8;
3509 res = MASK_OUT_ABOVE_16(res);
3511 m68ki_write_16(ea, res);
3513 FLAG_N = NFLAG_16(res);
3515 FLAG_V = VFLAG_CLEAR;
3519 void m68k_op_roxr_16_di(void)
3521 uint ea = EA_AY_DI_16();
3522 uint src = m68ki_read_16(ea);
3523 uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1);
3525 FLAG_C = FLAG_X = res >> 8;
3526 res = MASK_OUT_ABOVE_16(res);
3528 m68ki_write_16(ea, res);
3530 FLAG_N = NFLAG_16(res);
3532 FLAG_V = VFLAG_CLEAR;
3536 void m68k_op_roxr_16_ix(void)
3538 uint ea = EA_AY_IX_16();
3539 uint src = m68ki_read_16(ea);
3540 uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1);
3542 FLAG_C = FLAG_X = res >> 8;
3543 res = MASK_OUT_ABOVE_16(res);
3545 m68ki_write_16(ea, res);
3547 FLAG_N = NFLAG_16(res);
3549 FLAG_V = VFLAG_CLEAR;
3553 void m68k_op_roxr_16_aw(void)
3555 uint ea = EA_AW_16();
3556 uint src = m68ki_read_16(ea);
3557 uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1);
3559 FLAG_C = FLAG_X = res >> 8;
3560 res = MASK_OUT_ABOVE_16(res);
3562 m68ki_write_16(ea, res);
3564 FLAG_N = NFLAG_16(res);
3566 FLAG_V = VFLAG_CLEAR;
3570 void m68k_op_roxr_16_al(void)
3572 uint ea = EA_AL_16();
3573 uint src = m68ki_read_16(ea);
3574 uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1);
3576 FLAG_C = FLAG_X = res >> 8;
3577 res = MASK_OUT_ABOVE_16(res);
3579 m68ki_write_16(ea, res);
3581 FLAG_N = NFLAG_16(res);
3583 FLAG_V = VFLAG_CLEAR;
3587 void m68k_op_roxl_8_s(void)
3590 uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
3591 uint src = MASK_OUT_ABOVE_8(*r_dst);
3592 uint res = ROL_9(src | (XFLAG_AS_1() << 8), shift);
3594 FLAG_C = FLAG_X = res;
3595 res = MASK_OUT_ABOVE_8(res);
3597 *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
3599 FLAG_N = NFLAG_8(res);
3601 FLAG_V = VFLAG_CLEAR;
3605 void m68k_op_roxl_16_s(void)
3608 uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
3609 uint src = MASK_OUT_ABOVE_16(*r_dst);
3610 uint res = ROL_17(src | (XFLAG_AS_1() << 16), shift);
3612 FLAG_C = FLAG_X = res >> 8;
3613 res = MASK_OUT_ABOVE_16(res);
3615 *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
3617 FLAG_N = NFLAG_16(res);
3619 FLAG_V = VFLAG_CLEAR;
3623 void m68k_op_roxl_32_s(void)
3628 uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
3629 uint64 src = *r_dst;
3630 uint64 res = src | (((uint64)XFLAG_AS_1()) << 32);
3632 res = ROL_33_64(res, shift);
3634 FLAG_C = FLAG_X = res >> 24;
3635 res = MASK_OUT_ABOVE_32(res);
3639 FLAG_N = NFLAG_32(res);
3641 FLAG_V = VFLAG_CLEAR;
3646 uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
3648 uint res = MASK_OUT_ABOVE_32((ROL_33(src, shift) & ~(1 << (shift - 1))) | (XFLAG_AS_1() << (shift - 1)));
3649 uint new_x_flag = src & (1 << (32 - shift));
3653 FLAG_C = FLAG_X = (new_x_flag != 0)<<8;
3654 FLAG_N = NFLAG_32(res);
3656 FLAG_V = VFLAG_CLEAR;
3662 void m68k_op_roxl_8_r(void)
3665 uint orig_shift = DX & 0x3f;
3670 uint shift = orig_shift % 9;
3671 uint src = MASK_OUT_ABOVE_8(*r_dst);
3672 uint res = ROL_9(src | (XFLAG_AS_1() << 8), shift);
3674 USE_CYCLES(orig_shift<<CYC_SHIFT);
3676 FLAG_C = FLAG_X = res;
3677 res = MASK_OUT_ABOVE_8(res);
3679 *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
3680 FLAG_N = NFLAG_8(res);
3682 FLAG_V = VFLAG_CLEAR;
3687 FLAG_N = NFLAG_8(*r_dst);
3688 FLAG_Z = MASK_OUT_ABOVE_8(*r_dst);
3689 FLAG_V = VFLAG_CLEAR;
3693 void m68k_op_roxl_16_r(void)
3696 uint orig_shift = DX & 0x3f;
3700 uint shift = orig_shift % 17;
3701 uint src = MASK_OUT_ABOVE_16(*r_dst);
3702 uint res = ROL_17(src | (XFLAG_AS_1() << 16), shift);
3704 USE_CYCLES(orig_shift<<CYC_SHIFT);
3706 FLAG_C = FLAG_X = res >> 8;
3707 res = MASK_OUT_ABOVE_16(res);
3709 *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
3710 FLAG_N = NFLAG_16(res);
3712 FLAG_V = VFLAG_CLEAR;
3717 FLAG_N = NFLAG_16(*r_dst);
3718 FLAG_Z = MASK_OUT_ABOVE_16(*r_dst);
3719 FLAG_V = VFLAG_CLEAR;
3723 void m68k_op_roxl_32_r(void)
3728 uint orig_shift = DX & 0x3f;
3732 uint shift = orig_shift % 33;
3733 uint64 src = *r_dst;
3734 uint64 res = src | (((uint64)XFLAG_AS_1()) << 32);
3736 res = ROL_33_64(res, shift);
3738 USE_CYCLES(orig_shift<<CYC_SHIFT);
3740 FLAG_C = FLAG_X = res >> 24;
3741 res = MASK_OUT_ABOVE_32(res);
3744 FLAG_N = NFLAG_32(res);
3746 FLAG_V = VFLAG_CLEAR;
3751 FLAG_N = NFLAG_32(*r_dst);
3753 FLAG_V = VFLAG_CLEAR;
3758 uint orig_shift = DX & 0x3f;
3759 uint shift = orig_shift % 33;
3761 uint res = MASK_OUT_ABOVE_32((ROL_33(src, shift) & ~(1 << (shift - 1))) | (XFLAG_AS_1() << (shift - 1)));
3762 uint new_x_flag = src & (1 << (32 - shift));
3765 USE_CYCLES(orig_shift<<CYC_SHIFT);
3770 FLAG_X = (new_x_flag != 0)<<8;
3775 FLAG_N = NFLAG_32(res);
3777 FLAG_V = VFLAG_CLEAR;
3783 void m68k_op_roxl_16_ai(void)
3785 uint ea = EA_AY_AI_16();
3786 uint src = m68ki_read_16(ea);
3787 uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1);
3789 FLAG_C = FLAG_X = res >> 8;
3790 res = MASK_OUT_ABOVE_16(res);
3792 m68ki_write_16(ea, res);
3794 FLAG_N = NFLAG_16(res);
3796 FLAG_V = VFLAG_CLEAR;
3800 void m68k_op_roxl_16_pi(void)
3802 uint ea = EA_AY_PI_16();
3803 uint src = m68ki_read_16(ea);
3804 uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1);
3806 FLAG_C = FLAG_X = res >> 8;
3807 res = MASK_OUT_ABOVE_16(res);
3809 m68ki_write_16(ea, res);
3811 FLAG_N = NFLAG_16(res);
3813 FLAG_V = VFLAG_CLEAR;
3817 void m68k_op_roxl_16_pd(void)
3819 uint ea = EA_AY_PD_16();
3820 uint src = m68ki_read_16(ea);
3821 uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1);
3823 FLAG_C = FLAG_X = res >> 8;
3824 res = MASK_OUT_ABOVE_16(res);
3826 m68ki_write_16(ea, res);
3828 FLAG_N = NFLAG_16(res);
3830 FLAG_V = VFLAG_CLEAR;
3834 void m68k_op_roxl_16_di(void)
3836 uint ea = EA_AY_DI_16();
3837 uint src = m68ki_read_16(ea);
3838 uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1);
3840 FLAG_C = FLAG_X = res >> 8;
3841 res = MASK_OUT_ABOVE_16(res);
3843 m68ki_write_16(ea, res);
3845 FLAG_N = NFLAG_16(res);
3847 FLAG_V = VFLAG_CLEAR;
3851 void m68k_op_roxl_16_ix(void)
3853 uint ea = EA_AY_IX_16();
3854 uint src = m68ki_read_16(ea);
3855 uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1);
3857 FLAG_C = FLAG_X = res >> 8;
3858 res = MASK_OUT_ABOVE_16(res);
3860 m68ki_write_16(ea, res);
3862 FLAG_N = NFLAG_16(res);
3864 FLAG_V = VFLAG_CLEAR;
3868 void m68k_op_roxl_16_aw(void)
3870 uint ea = EA_AW_16();
3871 uint src = m68ki_read_16(ea);
3872 uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1);
3874 FLAG_C = FLAG_X = res >> 8;
3875 res = MASK_OUT_ABOVE_16(res);
3877 m68ki_write_16(ea, res);
3879 FLAG_N = NFLAG_16(res);
3881 FLAG_V = VFLAG_CLEAR;
3885 void m68k_op_roxl_16_al(void)
3887 uint ea = EA_AL_16();
3888 uint src = m68ki_read_16(ea);
3889 uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1);
3891 FLAG_C = FLAG_X = res >> 8;
3892 res = MASK_OUT_ABOVE_16(res);
3894 m68ki_write_16(ea, res);
3896 FLAG_N = NFLAG_16(res);
3898 FLAG_V = VFLAG_CLEAR;
3902 void m68k_op_rtd_32(void)
3904 if(CPU_TYPE_IS_010_PLUS(CPU_TYPE))
3906 uint new_pc = m68ki_pull_32();
3908 m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
3909 REG_A[7] = MASK_OUT_ABOVE_32(REG_A[7] + MAKE_INT_16(OPER_I_16()));
3913 m68ki_exception_illegal();
3917 void m68k_op_rte_32(void)
3925 m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
3927 if(CPU_TYPE_IS_000(CPU_TYPE))
3929 new_sr = m68ki_pull_16();
3930 new_pc = m68ki_pull_32();
3932 m68ki_set_sr(new_sr);
3934 CPU_INSTR_MODE = INSTRUCTION_YES;
3935 CPU_RUN_MODE = RUN_MODE_NORMAL;
3940 if(CPU_TYPE_IS_010(CPU_TYPE))
3942 format_word = m68ki_read_16(REG_A[7]+6) >> 12;
3943 if(format_word == 0)
3945 new_sr = m68ki_pull_16();
3946 new_pc = m68ki_pull_32();
3947 m68ki_fake_pull_16(); /* format word */
3949 m68ki_set_sr(new_sr);
3950 CPU_INSTR_MODE = INSTRUCTION_YES;
3951 CPU_RUN_MODE = RUN_MODE_NORMAL;
3954 CPU_INSTR_MODE = INSTRUCTION_YES;
3955 CPU_RUN_MODE = RUN_MODE_NORMAL;
3956 /* Not handling bus fault (9) */
3957 m68ki_exception_format_error();
3961 /* Otherwise it's 020 */
3963 format_word = m68ki_read_16(REG_A[7]+6) >> 12;
3966 case 0: /* Normal */
3967 new_sr = m68ki_pull_16();
3968 new_pc = m68ki_pull_32();
3969 m68ki_fake_pull_16(); /* format word */
3971 m68ki_set_sr(new_sr);
3972 CPU_INSTR_MODE = INSTRUCTION_YES;
3973 CPU_RUN_MODE = RUN_MODE_NORMAL;
3975 case 1: /* Throwaway */
3976 new_sr = m68ki_pull_16();
3977 m68ki_fake_pull_32(); /* program counter */
3978 m68ki_fake_pull_16(); /* format word */
3979 m68ki_set_sr_noint(new_sr);
3982 new_sr = m68ki_pull_16();
3983 new_pc = m68ki_pull_32();
3984 m68ki_fake_pull_16(); /* format word */
3985 m68ki_fake_pull_32(); /* address */
3987 m68ki_set_sr(new_sr);
3988 CPU_INSTR_MODE = INSTRUCTION_YES;
3989 CPU_RUN_MODE = RUN_MODE_NORMAL;
3992 /* Not handling long or short bus fault */
3993 CPU_INSTR_MODE = INSTRUCTION_YES;
3994 CPU_RUN_MODE = RUN_MODE_NORMAL;
3995 m68ki_exception_format_error();
3998 m68ki_exception_privilege_violation();
4002 void m68k_op_rtm_32(void)
4004 if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))
4006 m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
4007 M68K_DO_LOG((M68K_LOG_FILEHANDLE "%s at %08x: called unimplemented instruction %04x (%s)\n",
4008 m68ki_cpu_names[CPU_TYPE], ADDRESS_68K(REG_PC - 2), REG_IR,
4009 m68k_disassemble_quick(ADDRESS_68K(REG_PC - 2))));
4012 m68ki_exception_illegal();
4016 void m68k_op_rtr_32(void)
4018 m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
4019 m68ki_set_ccr(m68ki_pull_16());
4020 m68ki_jump(m68ki_pull_32());
4024 void m68k_op_rts_32(void)
4026 m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
4027 m68ki_jump(m68ki_pull_32());
4031 void m68k_op_sbcd_8_rr(void)
4036 uint res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1();
4038 FLAG_V = ~res; /* Undefined V behavior */
4042 res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src);
4043 FLAG_X = FLAG_C = (res > 0x99) << 8;
4047 res = MASK_OUT_ABOVE_8(res);
4049 FLAG_V &= res; /* Undefined V behavior part II */
4050 FLAG_N = NFLAG_8(res); /* Undefined N behavior */
4053 *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
4057 void m68k_op_sbcd_8_mm_ax7(void)
4059 uint src = OPER_AY_PD_8();
4060 uint ea = EA_A7_PD_8();
4061 uint dst = m68ki_read_8(ea);
4062 uint res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1();
4064 FLAG_V = ~res; /* Undefined V behavior */
4068 res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src);
4069 FLAG_X = FLAG_C = (res > 0x99) << 8;
4073 res = MASK_OUT_ABOVE_8(res);
4075 FLAG_V &= res; /* Undefined V behavior part II */
4076 FLAG_N = NFLAG_8(res); /* Undefined N behavior */
4079 m68ki_write_8(ea, res);
4083 void m68k_op_sbcd_8_mm_ay7(void)
4085 uint src = OPER_A7_PD_8();
4086 uint ea = EA_AX_PD_8();
4087 uint dst = m68ki_read_8(ea);
4088 uint res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1();
4090 FLAG_V = ~res; /* Undefined V behavior */
4094 res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src);
4095 FLAG_X = FLAG_C = (res > 0x99) << 8;
4099 res = MASK_OUT_ABOVE_8(res);
4101 FLAG_V &= res; /* Undefined V behavior part II */
4102 FLAG_N = NFLAG_8(res); /* Undefined N behavior */
4105 m68ki_write_8(ea, res);
4109 void m68k_op_sbcd_8_mm_axy7(void)
4111 uint src = OPER_A7_PD_8();
4112 uint ea = EA_A7_PD_8();
4113 uint dst = m68ki_read_8(ea);
4114 uint res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1();
4116 FLAG_V = ~res; /* Undefined V behavior */
4120 res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src);
4121 FLAG_X = FLAG_C = (res > 0x99) << 8;
4125 res = MASK_OUT_ABOVE_8(res);
4127 FLAG_V &= res; /* Undefined V behavior part II */
4128 FLAG_N = NFLAG_8(res); /* Undefined N behavior */
4131 m68ki_write_8(ea, res);
4135 void m68k_op_sbcd_8_mm(void)
4137 uint src = OPER_AY_PD_8();
4138 uint ea = EA_AX_PD_8();
4139 uint dst = m68ki_read_8(ea);
4140 uint res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1();
4142 FLAG_V = ~res; /* Undefined V behavior */
4146 res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src);
4147 FLAG_X = FLAG_C = (res > 0x99) << 8;
4151 res = MASK_OUT_ABOVE_8(res);
4153 FLAG_V &= res; /* Undefined V behavior part II */
4154 FLAG_N = NFLAG_8(res); /* Undefined N behavior */
4157 m68ki_write_8(ea, res);
4161 void m68k_op_st_8_d(void)
4167 void m68k_op_st_8_ai(void)
4169 m68ki_write_8(EA_AY_AI_8(), 0xff);
4173 void m68k_op_st_8_pi(void)
4175 m68ki_write_8(EA_AY_PI_8(), 0xff);
4179 void m68k_op_st_8_pi7(void)
4181 m68ki_write_8(EA_A7_PI_8(), 0xff);
4185 void m68k_op_st_8_pd(void)
4187 m68ki_write_8(EA_AY_PD_8(), 0xff);
4191 void m68k_op_st_8_pd7(void)
4193 m68ki_write_8(EA_A7_PD_8(), 0xff);
4197 void m68k_op_st_8_di(void)
4199 m68ki_write_8(EA_AY_DI_8(), 0xff);
4203 void m68k_op_st_8_ix(void)
4205 m68ki_write_8(EA_AY_IX_8(), 0xff);
4209 void m68k_op_st_8_aw(void)
4211 m68ki_write_8(EA_AW_8(), 0xff);
4215 void m68k_op_st_8_al(void)
4217 m68ki_write_8(EA_AL_8(), 0xff);
4221 void m68k_op_sf_8_d(void)
4227 void m68k_op_sf_8_ai(void)
4229 m68ki_write_8(EA_AY_AI_8(), 0);
4233 void m68k_op_sf_8_pi(void)
4235 m68ki_write_8(EA_AY_PI_8(), 0);
4239 void m68k_op_sf_8_pi7(void)
4241 m68ki_write_8(EA_A7_PI_8(), 0);
4245 void m68k_op_sf_8_pd(void)
4247 m68ki_write_8(EA_AY_PD_8(), 0);
4251 void m68k_op_sf_8_pd7(void)
4253 m68ki_write_8(EA_A7_PD_8(), 0);
4257 void m68k_op_sf_8_di(void)
4259 m68ki_write_8(EA_AY_DI_8(), 0);
4263 void m68k_op_sf_8_ix(void)
4265 m68ki_write_8(EA_AY_IX_8(), 0);
4269 void m68k_op_sf_8_aw(void)
4271 m68ki_write_8(EA_AW_8(), 0);
4275 void m68k_op_sf_8_al(void)
4277 m68ki_write_8(EA_AL_8(), 0);
4281 void m68k_op_shi_8_d(void)
4286 USE_CYCLES(CYC_SCC_R_TRUE);
4293 void m68k_op_sls_8_d(void)
4298 USE_CYCLES(CYC_SCC_R_TRUE);
4305 void m68k_op_scc_8_d(void)
4310 USE_CYCLES(CYC_SCC_R_TRUE);
4317 void m68k_op_scs_8_d(void)
4322 USE_CYCLES(CYC_SCC_R_TRUE);
4329 void m68k_op_sne_8_d(void)
4334 USE_CYCLES(CYC_SCC_R_TRUE);
4341 void m68k_op_seq_8_d(void)
4346 USE_CYCLES(CYC_SCC_R_TRUE);
4353 void m68k_op_svc_8_d(void)
4358 USE_CYCLES(CYC_SCC_R_TRUE);
4365 void m68k_op_svs_8_d(void)
4370 USE_CYCLES(CYC_SCC_R_TRUE);
4377 void m68k_op_spl_8_d(void)
4382 USE_CYCLES(CYC_SCC_R_TRUE);
4389 void m68k_op_smi_8_d(void)
4394 USE_CYCLES(CYC_SCC_R_TRUE);
4401 void m68k_op_sge_8_d(void)
4406 USE_CYCLES(CYC_SCC_R_TRUE);
4413 void m68k_op_slt_8_d(void)
4418 USE_CYCLES(CYC_SCC_R_TRUE);
4425 void m68k_op_sgt_8_d(void)
4430 USE_CYCLES(CYC_SCC_R_TRUE);
4437 void m68k_op_sle_8_d(void)
4442 USE_CYCLES(CYC_SCC_R_TRUE);
4449 void m68k_op_shi_8_ai(void)
4451 m68ki_write_8(EA_AY_AI_8(), COND_HI() ? 0xff : 0);
4455 void m68k_op_shi_8_pi(void)
4457 m68ki_write_8(EA_AY_PI_8(), COND_HI() ? 0xff : 0);
4461 void m68k_op_shi_8_pi7(void)
4463 m68ki_write_8(EA_A7_PI_8(), COND_HI() ? 0xff : 0);
4467 void m68k_op_shi_8_pd(void)
4469 m68ki_write_8(EA_AY_PD_8(), COND_HI() ? 0xff : 0);
4473 void m68k_op_shi_8_pd7(void)
4475 m68ki_write_8(EA_A7_PD_8(), COND_HI() ? 0xff : 0);
4479 void m68k_op_shi_8_di(void)
4481 m68ki_write_8(EA_AY_DI_8(), COND_HI() ? 0xff : 0);
4485 void m68k_op_shi_8_ix(void)
4487 m68ki_write_8(EA_AY_IX_8(), COND_HI() ? 0xff : 0);
4491 void m68k_op_shi_8_aw(void)
4493 m68ki_write_8(EA_AW_8(), COND_HI() ? 0xff : 0);
4497 void m68k_op_shi_8_al(void)
4499 m68ki_write_8(EA_AL_8(), COND_HI() ? 0xff : 0);
4503 void m68k_op_sls_8_ai(void)
4505 m68ki_write_8(EA_AY_AI_8(), COND_LS() ? 0xff : 0);
4509 void m68k_op_sls_8_pi(void)
4511 m68ki_write_8(EA_AY_PI_8(), COND_LS() ? 0xff : 0);
4515 void m68k_op_sls_8_pi7(void)
4517 m68ki_write_8(EA_A7_PI_8(), COND_LS() ? 0xff : 0);
4521 void m68k_op_sls_8_pd(void)
4523 m68ki_write_8(EA_AY_PD_8(), COND_LS() ? 0xff : 0);
4527 void m68k_op_sls_8_pd7(void)
4529 m68ki_write_8(EA_A7_PD_8(), COND_LS() ? 0xff : 0);
4533 void m68k_op_sls_8_di(void)
4535 m68ki_write_8(EA_AY_DI_8(), COND_LS() ? 0xff : 0);
4539 void m68k_op_sls_8_ix(void)
4541 m68ki_write_8(EA_AY_IX_8(), COND_LS() ? 0xff : 0);
4545 void m68k_op_sls_8_aw(void)
4547 m68ki_write_8(EA_AW_8(), COND_LS() ? 0xff : 0);
4551 void m68k_op_sls_8_al(void)
4553 m68ki_write_8(EA_AL_8(), COND_LS() ? 0xff : 0);
4557 void m68k_op_scc_8_ai(void)
4559 m68ki_write_8(EA_AY_AI_8(), COND_CC() ? 0xff : 0);
4563 void m68k_op_scc_8_pi(void)
4565 m68ki_write_8(EA_AY_PI_8(), COND_CC() ? 0xff : 0);
4569 void m68k_op_scc_8_pi7(void)
4571 m68ki_write_8(EA_A7_PI_8(), COND_CC() ? 0xff : 0);
4575 void m68k_op_scc_8_pd(void)
4577 m68ki_write_8(EA_AY_PD_8(), COND_CC() ? 0xff : 0);
4581 void m68k_op_scc_8_pd7(void)
4583 m68ki_write_8(EA_A7_PD_8(), COND_CC() ? 0xff : 0);
4587 void m68k_op_scc_8_di(void)
4589 m68ki_write_8(EA_AY_DI_8(), COND_CC() ? 0xff : 0);
4593 void m68k_op_scc_8_ix(void)
4595 m68ki_write_8(EA_AY_IX_8(), COND_CC() ? 0xff : 0);
4599 void m68k_op_scc_8_aw(void)
4601 m68ki_write_8(EA_AW_8(), COND_CC() ? 0xff : 0);
4605 void m68k_op_scc_8_al(void)
4607 m68ki_write_8(EA_AL_8(), COND_CC() ? 0xff : 0);
4611 void m68k_op_scs_8_ai(void)
4613 m68ki_write_8(EA_AY_AI_8(), COND_CS() ? 0xff : 0);
4617 void m68k_op_scs_8_pi(void)
4619 m68ki_write_8(EA_AY_PI_8(), COND_CS() ? 0xff : 0);
4623 void m68k_op_scs_8_pi7(void)
4625 m68ki_write_8(EA_A7_PI_8(), COND_CS() ? 0xff : 0);
4629 void m68k_op_scs_8_pd(void)
4631 m68ki_write_8(EA_AY_PD_8(), COND_CS() ? 0xff : 0);
4635 void m68k_op_scs_8_pd7(void)
4637 m68ki_write_8(EA_A7_PD_8(), COND_CS() ? 0xff : 0);
4641 void m68k_op_scs_8_di(void)
4643 m68ki_write_8(EA_AY_DI_8(), COND_CS() ? 0xff : 0);
4647 void m68k_op_scs_8_ix(void)
4649 m68ki_write_8(EA_AY_IX_8(), COND_CS() ? 0xff : 0);
4653 void m68k_op_scs_8_aw(void)
4655 m68ki_write_8(EA_AW_8(), COND_CS() ? 0xff : 0);
4659 void m68k_op_scs_8_al(void)
4661 m68ki_write_8(EA_AL_8(), COND_CS() ? 0xff : 0);
4665 void m68k_op_sne_8_ai(void)
4667 m68ki_write_8(EA_AY_AI_8(), COND_NE() ? 0xff : 0);
4671 void m68k_op_sne_8_pi(void)
4673 m68ki_write_8(EA_AY_PI_8(), COND_NE() ? 0xff : 0);
4677 void m68k_op_sne_8_pi7(void)
4679 m68ki_write_8(EA_A7_PI_8(), COND_NE() ? 0xff : 0);
4683 void m68k_op_sne_8_pd(void)
4685 m68ki_write_8(EA_AY_PD_8(), COND_NE() ? 0xff : 0);
4689 void m68k_op_sne_8_pd7(void)
4691 m68ki_write_8(EA_A7_PD_8(), COND_NE() ? 0xff : 0);
4695 void m68k_op_sne_8_di(void)
4697 m68ki_write_8(EA_AY_DI_8(), COND_NE() ? 0xff : 0);
4701 void m68k_op_sne_8_ix(void)
4703 m68ki_write_8(EA_AY_IX_8(), COND_NE() ? 0xff : 0);
4707 void m68k_op_sne_8_aw(void)
4709 m68ki_write_8(EA_AW_8(), COND_NE() ? 0xff : 0);
4713 void m68k_op_sne_8_al(void)
4715 m68ki_write_8(EA_AL_8(), COND_NE() ? 0xff : 0);
4719 void m68k_op_seq_8_ai(void)
4721 m68ki_write_8(EA_AY_AI_8(), COND_EQ() ? 0xff : 0);
4725 void m68k_op_seq_8_pi(void)
4727 m68ki_write_8(EA_AY_PI_8(), COND_EQ() ? 0xff : 0);
4731 void m68k_op_seq_8_pi7(void)
4733 m68ki_write_8(EA_A7_PI_8(), COND_EQ() ? 0xff : 0);
4737 void m68k_op_seq_8_pd(void)
4739 m68ki_write_8(EA_AY_PD_8(), COND_EQ() ? 0xff : 0);
4743 void m68k_op_seq_8_pd7(void)
4745 m68ki_write_8(EA_A7_PD_8(), COND_EQ() ? 0xff : 0);
4749 void m68k_op_seq_8_di(void)
4751 m68ki_write_8(EA_AY_DI_8(), COND_EQ() ? 0xff : 0);
4755 void m68k_op_seq_8_ix(void)
4757 m68ki_write_8(EA_AY_IX_8(), COND_EQ() ? 0xff : 0);
4761 void m68k_op_seq_8_aw(void)
4763 m68ki_write_8(EA_AW_8(), COND_EQ() ? 0xff : 0);
4767 void m68k_op_seq_8_al(void)
4769 m68ki_write_8(EA_AL_8(), COND_EQ() ? 0xff : 0);
4773 void m68k_op_svc_8_ai(void)
4775 m68ki_write_8(EA_AY_AI_8(), COND_VC() ? 0xff : 0);
4779 void m68k_op_svc_8_pi(void)
4781 m68ki_write_8(EA_AY_PI_8(), COND_VC() ? 0xff : 0);
4785 void m68k_op_svc_8_pi7(void)
4787 m68ki_write_8(EA_A7_PI_8(), COND_VC() ? 0xff : 0);
4791 void m68k_op_svc_8_pd(void)
4793 m68ki_write_8(EA_AY_PD_8(), COND_VC() ? 0xff : 0);
4797 void m68k_op_svc_8_pd7(void)
4799 m68ki_write_8(EA_A7_PD_8(), COND_VC() ? 0xff : 0);
4803 void m68k_op_svc_8_di(void)
4805 m68ki_write_8(EA_AY_DI_8(), COND_VC() ? 0xff : 0);
4809 void m68k_op_svc_8_ix(void)
4811 m68ki_write_8(EA_AY_IX_8(), COND_VC() ? 0xff : 0);
4815 void m68k_op_svc_8_aw(void)
4817 m68ki_write_8(EA_AW_8(), COND_VC() ? 0xff : 0);
4821 void m68k_op_svc_8_al(void)
4823 m68ki_write_8(EA_AL_8(), COND_VC() ? 0xff : 0);
4827 void m68k_op_svs_8_ai(void)
4829 m68ki_write_8(EA_AY_AI_8(), COND_VS() ? 0xff : 0);
4833 void m68k_op_svs_8_pi(void)
4835 m68ki_write_8(EA_AY_PI_8(), COND_VS() ? 0xff : 0);
4839 void m68k_op_svs_8_pi7(void)
4841 m68ki_write_8(EA_A7_PI_8(), COND_VS() ? 0xff : 0);
4845 void m68k_op_svs_8_pd(void)
4847 m68ki_write_8(EA_AY_PD_8(), COND_VS() ? 0xff : 0);
4851 void m68k_op_svs_8_pd7(void)
4853 m68ki_write_8(EA_A7_PD_8(), COND_VS() ? 0xff : 0);
4857 void m68k_op_svs_8_di(void)
4859 m68ki_write_8(EA_AY_DI_8(), COND_VS() ? 0xff : 0);
4863 void m68k_op_svs_8_ix(void)
4865 m68ki_write_8(EA_AY_IX_8(), COND_VS() ? 0xff : 0);
4869 void m68k_op_svs_8_aw(void)
4871 m68ki_write_8(EA_AW_8(), COND_VS() ? 0xff : 0);
4875 void m68k_op_svs_8_al(void)
4877 m68ki_write_8(EA_AL_8(), COND_VS() ? 0xff : 0);
4881 void m68k_op_spl_8_ai(void)
4883 m68ki_write_8(EA_AY_AI_8(), COND_PL() ? 0xff : 0);
4887 void m68k_op_spl_8_pi(void)
4889 m68ki_write_8(EA_AY_PI_8(), COND_PL() ? 0xff : 0);
4893 void m68k_op_spl_8_pi7(void)
4895 m68ki_write_8(EA_A7_PI_8(), COND_PL() ? 0xff : 0);
4899 void m68k_op_spl_8_pd(void)
4901 m68ki_write_8(EA_AY_PD_8(), COND_PL() ? 0xff : 0);
4905 void m68k_op_spl_8_pd7(void)
4907 m68ki_write_8(EA_A7_PD_8(), COND_PL() ? 0xff : 0);
4911 void m68k_op_spl_8_di(void)
4913 m68ki_write_8(EA_AY_DI_8(), COND_PL() ? 0xff : 0);
4917 void m68k_op_spl_8_ix(void)
4919 m68ki_write_8(EA_AY_IX_8(), COND_PL() ? 0xff : 0);
4923 void m68k_op_spl_8_aw(void)
4925 m68ki_write_8(EA_AW_8(), COND_PL() ? 0xff : 0);
4929 void m68k_op_spl_8_al(void)
4931 m68ki_write_8(EA_AL_8(), COND_PL() ? 0xff : 0);
4935 void m68k_op_smi_8_ai(void)
4937 m68ki_write_8(EA_AY_AI_8(), COND_MI() ? 0xff : 0);
4941 void m68k_op_smi_8_pi(void)
4943 m68ki_write_8(EA_AY_PI_8(), COND_MI() ? 0xff : 0);
4947 void m68k_op_smi_8_pi7(void)
4949 m68ki_write_8(EA_A7_PI_8(), COND_MI() ? 0xff : 0);
4953 void m68k_op_smi_8_pd(void)
4955 m68ki_write_8(EA_AY_PD_8(), COND_MI() ? 0xff : 0);
4959 void m68k_op_smi_8_pd7(void)
4961 m68ki_write_8(EA_A7_PD_8(), COND_MI() ? 0xff : 0);
4965 void m68k_op_smi_8_di(void)
4967 m68ki_write_8(EA_AY_DI_8(), COND_MI() ? 0xff : 0);
4971 void m68k_op_smi_8_ix(void)
4973 m68ki_write_8(EA_AY_IX_8(), COND_MI() ? 0xff : 0);
4977 void m68k_op_smi_8_aw(void)
4979 m68ki_write_8(EA_AW_8(), COND_MI() ? 0xff : 0);
4983 void m68k_op_smi_8_al(void)
4985 m68ki_write_8(EA_AL_8(), COND_MI() ? 0xff : 0);
4989 void m68k_op_sge_8_ai(void)
4991 m68ki_write_8(EA_AY_AI_8(), COND_GE() ? 0xff : 0);
4995 void m68k_op_sge_8_pi(void)
4997 m68ki_write_8(EA_AY_PI_8(), COND_GE() ? 0xff : 0);
5001 void m68k_op_sge_8_pi7(void)
5003 m68ki_write_8(EA_A7_PI_8(), COND_GE() ? 0xff : 0);
5007 void m68k_op_sge_8_pd(void)
5009 m68ki_write_8(EA_AY_PD_8(), COND_GE() ? 0xff : 0);
5013 void m68k_op_sge_8_pd7(void)
5015 m68ki_write_8(EA_A7_PD_8(), COND_GE() ? 0xff : 0);
5019 void m68k_op_sge_8_di(void)
5021 m68ki_write_8(EA_AY_DI_8(), COND_GE() ? 0xff : 0);
5025 void m68k_op_sge_8_ix(void)
5027 m68ki_write_8(EA_AY_IX_8(), COND_GE() ? 0xff : 0);
5031 void m68k_op_sge_8_aw(void)
5033 m68ki_write_8(EA_AW_8(), COND_GE() ? 0xff : 0);
5037 void m68k_op_sge_8_al(void)
5039 m68ki_write_8(EA_AL_8(), COND_GE() ? 0xff : 0);
5043 void m68k_op_slt_8_ai(void)
5045 m68ki_write_8(EA_AY_AI_8(), COND_LT() ? 0xff : 0);
5049 void m68k_op_slt_8_pi(void)
5051 m68ki_write_8(EA_AY_PI_8(), COND_LT() ? 0xff : 0);
5055 void m68k_op_slt_8_pi7(void)
5057 m68ki_write_8(EA_A7_PI_8(), COND_LT() ? 0xff : 0);
5061 void m68k_op_slt_8_pd(void)
5063 m68ki_write_8(EA_AY_PD_8(), COND_LT() ? 0xff : 0);
5067 void m68k_op_slt_8_pd7(void)
5069 m68ki_write_8(EA_A7_PD_8(), COND_LT() ? 0xff : 0);
5073 void m68k_op_slt_8_di(void)
5075 m68ki_write_8(EA_AY_DI_8(), COND_LT() ? 0xff : 0);
5079 void m68k_op_slt_8_ix(void)
5081 m68ki_write_8(EA_AY_IX_8(), COND_LT() ? 0xff : 0);
5085 void m68k_op_slt_8_aw(void)
5087 m68ki_write_8(EA_AW_8(), COND_LT() ? 0xff : 0);
5091 void m68k_op_slt_8_al(void)
5093 m68ki_write_8(EA_AL_8(), COND_LT() ? 0xff : 0);
5097 void m68k_op_sgt_8_ai(void)
5099 m68ki_write_8(EA_AY_AI_8(), COND_GT() ? 0xff : 0);
5103 void m68k_op_sgt_8_pi(void)
5105 m68ki_write_8(EA_AY_PI_8(), COND_GT() ? 0xff : 0);
5109 void m68k_op_sgt_8_pi7(void)
5111 m68ki_write_8(EA_A7_PI_8(), COND_GT() ? 0xff : 0);
5115 void m68k_op_sgt_8_pd(void)
5117 m68ki_write_8(EA_AY_PD_8(), COND_GT() ? 0xff : 0);
5121 void m68k_op_sgt_8_pd7(void)
5123 m68ki_write_8(EA_A7_PD_8(), COND_GT() ? 0xff : 0);
5127 void m68k_op_sgt_8_di(void)
5129 m68ki_write_8(EA_AY_DI_8(), COND_GT() ? 0xff : 0);
5133 void m68k_op_sgt_8_ix(void)
5135 m68ki_write_8(EA_AY_IX_8(), COND_GT() ? 0xff : 0);
5139 void m68k_op_sgt_8_aw(void)
5141 m68ki_write_8(EA_AW_8(), COND_GT() ? 0xff : 0);
5145 void m68k_op_sgt_8_al(void)
5147 m68ki_write_8(EA_AL_8(), COND_GT() ? 0xff : 0);
5151 void m68k_op_sle_8_ai(void)
5153 m68ki_write_8(EA_AY_AI_8(), COND_LE() ? 0xff : 0);
5157 void m68k_op_sle_8_pi(void)
5159 m68ki_write_8(EA_AY_PI_8(), COND_LE() ? 0xff : 0);
5163 void m68k_op_sle_8_pi7(void)
5165 m68ki_write_8(EA_A7_PI_8(), COND_LE() ? 0xff : 0);
5169 void m68k_op_sle_8_pd(void)
5171 m68ki_write_8(EA_AY_PD_8(), COND_LE() ? 0xff : 0);
5175 void m68k_op_sle_8_pd7(void)
5177 m68ki_write_8(EA_A7_PD_8(), COND_LE() ? 0xff : 0);
5181 void m68k_op_sle_8_di(void)
5183 m68ki_write_8(EA_AY_DI_8(), COND_LE() ? 0xff : 0);
5187 void m68k_op_sle_8_ix(void)
5189 m68ki_write_8(EA_AY_IX_8(), COND_LE() ? 0xff : 0);
5193 void m68k_op_sle_8_aw(void)
5195 m68ki_write_8(EA_AW_8(), COND_LE() ? 0xff : 0);
5199 void m68k_op_sle_8_al(void)
5201 m68ki_write_8(EA_AL_8(), COND_LE() ? 0xff : 0);
5205 void m68k_op_stop(void)
5209 uint new_sr = OPER_I_16();
5210 m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
5211 CPU_STOPPED |= STOP_LEVEL_STOP;
5212 m68ki_set_sr(new_sr);
5213 if(m68ki_remaining_cycles >= CYC_INSTRUCTION[REG_IR])
5214 m68ki_remaining_cycles = CYC_INSTRUCTION[REG_IR];
5219 m68ki_exception_privilege_violation();
5223 void m68k_op_sub_8_er_d(void)
5226 uint src = MASK_OUT_ABOVE_8(DY);
5227 uint dst = MASK_OUT_ABOVE_8(*r_dst);
5228 uint res = dst - src;
5230 FLAG_N = NFLAG_8(res);
5231 FLAG_X = FLAG_C = CFLAG_8(res);
5232 FLAG_V = VFLAG_SUB_8(src, dst, res);
5233 FLAG_Z = MASK_OUT_ABOVE_8(res);
5235 *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
5239 void m68k_op_sub_8_er_ai(void)
5242 uint src = OPER_AY_AI_8();
5243 uint dst = MASK_OUT_ABOVE_8(*r_dst);
5244 uint res = dst - src;
5246 FLAG_N = NFLAG_8(res);
5247 FLAG_X = FLAG_C = CFLAG_8(res);
5248 FLAG_V = VFLAG_SUB_8(src, dst, res);
5249 FLAG_Z = MASK_OUT_ABOVE_8(res);
5251 *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
5255 void m68k_op_sub_8_er_pi(void)
5258 uint src = OPER_AY_PI_8();
5259 uint dst = MASK_OUT_ABOVE_8(*r_dst);
5260 uint res = dst - src;
5262 FLAG_N = NFLAG_8(res);
5263 FLAG_X = FLAG_C = CFLAG_8(res);
5264 FLAG_V = VFLAG_SUB_8(src, dst, res);
5265 FLAG_Z = MASK_OUT_ABOVE_8(res);
5267 *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
5271 void m68k_op_sub_8_er_pi7(void)
5274 uint src = OPER_A7_PI_8();
5275 uint dst = MASK_OUT_ABOVE_8(*r_dst);
5276 uint res = dst - src;
5278 FLAG_N = NFLAG_8(res);
5279 FLAG_X = FLAG_C = CFLAG_8(res);
5280 FLAG_V = VFLAG_SUB_8(src, dst, res);
5281 FLAG_Z = MASK_OUT_ABOVE_8(res);
5283 *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
5287 void m68k_op_sub_8_er_pd(void)
5290 uint src = OPER_AY_PD_8();
5291 uint dst = MASK_OUT_ABOVE_8(*r_dst);
5292 uint res = dst - src;
5294 FLAG_N = NFLAG_8(res);
5295 FLAG_X = FLAG_C = CFLAG_8(res);
5296 FLAG_V = VFLAG_SUB_8(src, dst, res);
5297 FLAG_Z = MASK_OUT_ABOVE_8(res);
5299 *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
5303 void m68k_op_sub_8_er_pd7(void)
5306 uint src = OPER_A7_PD_8();
5307 uint dst = MASK_OUT_ABOVE_8(*r_dst);
5308 uint res = dst - src;
5310 FLAG_N = NFLAG_8(res);
5311 FLAG_X = FLAG_C = CFLAG_8(res);
5312 FLAG_V = VFLAG_SUB_8(src, dst, res);
5313 FLAG_Z = MASK_OUT_ABOVE_8(res);
5315 *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
5319 void m68k_op_sub_8_er_di(void)
5322 uint src = OPER_AY_DI_8();
5323 uint dst = MASK_OUT_ABOVE_8(*r_dst);
5324 uint res = dst - src;
5326 FLAG_N = NFLAG_8(res);
5327 FLAG_X = FLAG_C = CFLAG_8(res);
5328 FLAG_V = VFLAG_SUB_8(src, dst, res);
5329 FLAG_Z = MASK_OUT_ABOVE_8(res);
5331 *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
5335 void m68k_op_sub_8_er_ix(void)
5338 uint src = OPER_AY_IX_8();
5339 uint dst = MASK_OUT_ABOVE_8(*r_dst);
5340 uint res = dst - src;
5342 FLAG_N = NFLAG_8(res);
5343 FLAG_X = FLAG_C = CFLAG_8(res);
5344 FLAG_V = VFLAG_SUB_8(src, dst, res);
5345 FLAG_Z = MASK_OUT_ABOVE_8(res);
5347 *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
5351 void m68k_op_sub_8_er_aw(void)
5354 uint src = OPER_AW_8();
5355 uint dst = MASK_OUT_ABOVE_8(*r_dst);
5356 uint res = dst - src;
5358 FLAG_N = NFLAG_8(res);
5359 FLAG_X = FLAG_C = CFLAG_8(res);
5360 FLAG_V = VFLAG_SUB_8(src, dst, res);
5361 FLAG_Z = MASK_OUT_ABOVE_8(res);
5363 *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
5367 void m68k_op_sub_8_er_al(void)
5370 uint src = OPER_AL_8();
5371 uint dst = MASK_OUT_ABOVE_8(*r_dst);
5372 uint res = dst - src;
5374 FLAG_N = NFLAG_8(res);
5375 FLAG_X = FLAG_C = CFLAG_8(res);
5376 FLAG_V = VFLAG_SUB_8(src, dst, res);
5377 FLAG_Z = MASK_OUT_ABOVE_8(res);
5379 *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
5383 void m68k_op_sub_8_er_pcdi(void)
5386 uint src = OPER_PCDI_8();
5387 uint dst = MASK_OUT_ABOVE_8(*r_dst);
5388 uint res = dst - src;
5390 FLAG_N = NFLAG_8(res);
5391 FLAG_X = FLAG_C = CFLAG_8(res);
5392 FLAG_V = VFLAG_SUB_8(src, dst, res);
5393 FLAG_Z = MASK_OUT_ABOVE_8(res);
5395 *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
5399 void m68k_op_sub_8_er_pcix(void)
5402 uint src = OPER_PCIX_8();
5403 uint dst = MASK_OUT_ABOVE_8(*r_dst);
5404 uint res = dst - src;
5406 FLAG_N = NFLAG_8(res);
5407 FLAG_X = FLAG_C = CFLAG_8(res);
5408 FLAG_V = VFLAG_SUB_8(src, dst, res);
5409 FLAG_Z = MASK_OUT_ABOVE_8(res);
5411 *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
5415 void m68k_op_sub_8_er_i(void)
5418 uint src = OPER_I_8();
5419 uint dst = MASK_OUT_ABOVE_8(*r_dst);
5420 uint res = dst - src;
5422 FLAG_N = NFLAG_8(res);
5423 FLAG_X = FLAG_C = CFLAG_8(res);
5424 FLAG_V = VFLAG_SUB_8(src, dst, res);
5425 FLAG_Z = MASK_OUT_ABOVE_8(res);
5427 *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
5431 void m68k_op_sub_16_er_d(void)
5434 uint src = MASK_OUT_ABOVE_16(DY);
5435 uint dst = MASK_OUT_ABOVE_16(*r_dst);
5436 uint res = dst - src;
5438 FLAG_N = NFLAG_16(res);
5439 FLAG_X = FLAG_C = CFLAG_16(res);
5440 FLAG_V = VFLAG_SUB_16(src, dst, res);
5441 FLAG_Z = MASK_OUT_ABOVE_16(res);
5443 *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
5447 void m68k_op_sub_16_er_a(void)
5450 uint src = MASK_OUT_ABOVE_16(AY);
5451 uint dst = MASK_OUT_ABOVE_16(*r_dst);
5452 uint res = dst - src;
5454 FLAG_N = NFLAG_16(res);
5455 FLAG_X = FLAG_C = CFLAG_16(res);
5456 FLAG_V = VFLAG_SUB_16(src, dst, res);
5457 FLAG_Z = MASK_OUT_ABOVE_16(res);
5459 *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
5463 void m68k_op_sub_16_er_ai(void)
5466 uint src = OPER_AY_AI_16();
5467 uint dst = MASK_OUT_ABOVE_16(*r_dst);
5468 uint res = dst - src;
5470 FLAG_N = NFLAG_16(res);
5471 FLAG_X = FLAG_C = CFLAG_16(res);
5472 FLAG_V = VFLAG_SUB_16(src, dst, res);
5473 FLAG_Z = MASK_OUT_ABOVE_16(res);
5475 *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
5479 void m68k_op_sub_16_er_pi(void)
5482 uint src = OPER_AY_PI_16();
5483 uint dst = MASK_OUT_ABOVE_16(*r_dst);
5484 uint res = dst - src;
5486 FLAG_N = NFLAG_16(res);
5487 FLAG_X = FLAG_C = CFLAG_16(res);
5488 FLAG_V = VFLAG_SUB_16(src, dst, res);
5489 FLAG_Z = MASK_OUT_ABOVE_16(res);
5491 *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
5495 void m68k_op_sub_16_er_pd(void)
5498 uint src = OPER_AY_PD_16();
5499 uint dst = MASK_OUT_ABOVE_16(*r_dst);
5500 uint res = dst - src;
5502 FLAG_N = NFLAG_16(res);
5503 FLAG_X = FLAG_C = CFLAG_16(res);
5504 FLAG_V = VFLAG_SUB_16(src, dst, res);
5505 FLAG_Z = MASK_OUT_ABOVE_16(res);
5507 *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
5511 void m68k_op_sub_16_er_di(void)
5514 uint src = OPER_AY_DI_16();
5515 uint dst = MASK_OUT_ABOVE_16(*r_dst);
5516 uint res = dst - src;
5518 FLAG_N = NFLAG_16(res);
5519 FLAG_X = FLAG_C = CFLAG_16(res);
5520 FLAG_V = VFLAG_SUB_16(src, dst, res);
5521 FLAG_Z = MASK_OUT_ABOVE_16(res);
5523 *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
5527 void m68k_op_sub_16_er_ix(void)
5530 uint src = OPER_AY_IX_16();
5531 uint dst = MASK_OUT_ABOVE_16(*r_dst);
5532 uint res = dst - src;
5534 FLAG_N = NFLAG_16(res);
5535 FLAG_X = FLAG_C = CFLAG_16(res);
5536 FLAG_V = VFLAG_SUB_16(src, dst, res);
5537 FLAG_Z = MASK_OUT_ABOVE_16(res);
5539 *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
5543 void m68k_op_sub_16_er_aw(void)
5546 uint src = OPER_AW_16();
5547 uint dst = MASK_OUT_ABOVE_16(*r_dst);
5548 uint res = dst - src;
5550 FLAG_N = NFLAG_16(res);
5551 FLAG_X = FLAG_C = CFLAG_16(res);
5552 FLAG_V = VFLAG_SUB_16(src, dst, res);
5553 FLAG_Z = MASK_OUT_ABOVE_16(res);
5555 *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
5559 void m68k_op_sub_16_er_al(void)
5562 uint src = OPER_AL_16();
5563 uint dst = MASK_OUT_ABOVE_16(*r_dst);
5564 uint res = dst - src;
5566 FLAG_N = NFLAG_16(res);
5567 FLAG_X = FLAG_C = CFLAG_16(res);
5568 FLAG_V = VFLAG_SUB_16(src, dst, res);
5569 FLAG_Z = MASK_OUT_ABOVE_16(res);
5571 *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
5575 void m68k_op_sub_16_er_pcdi(void)
5578 uint src = OPER_PCDI_16();
5579 uint dst = MASK_OUT_ABOVE_16(*r_dst);
5580 uint res = dst - src;
5582 FLAG_N = NFLAG_16(res);
5583 FLAG_X = FLAG_C = CFLAG_16(res);
5584 FLAG_V = VFLAG_SUB_16(src, dst, res);
5585 FLAG_Z = MASK_OUT_ABOVE_16(res);
5587 *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
5591 void m68k_op_sub_16_er_pcix(void)
5594 uint src = OPER_PCIX_16();
5595 uint dst = MASK_OUT_ABOVE_16(*r_dst);
5596 uint res = dst - src;
5598 FLAG_N = NFLAG_16(res);
5599 FLAG_X = FLAG_C = CFLAG_16(res);
5600 FLAG_V = VFLAG_SUB_16(src, dst, res);
5601 FLAG_Z = MASK_OUT_ABOVE_16(res);
5603 *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
5607 void m68k_op_sub_16_er_i(void)
5610 uint src = OPER_I_16();
5611 uint dst = MASK_OUT_ABOVE_16(*r_dst);
5612 uint res = dst - src;
5614 FLAG_N = NFLAG_16(res);
5615 FLAG_X = FLAG_C = CFLAG_16(res);
5616 FLAG_V = VFLAG_SUB_16(src, dst, res);
5617 FLAG_Z = MASK_OUT_ABOVE_16(res);
5619 *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
5623 void m68k_op_sub_32_er_d(void)
5628 uint res = dst - src;
5630 FLAG_N = NFLAG_32(res);
5631 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
5632 FLAG_V = VFLAG_SUB_32(src, dst, res);
5633 FLAG_Z = MASK_OUT_ABOVE_32(res);
5639 void m68k_op_sub_32_er_a(void)
5644 uint res = dst - src;
5646 FLAG_N = NFLAG_32(res);
5647 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
5648 FLAG_V = VFLAG_SUB_32(src, dst, res);
5649 FLAG_Z = MASK_OUT_ABOVE_32(res);
5655 void m68k_op_sub_32_er_ai(void)
5658 uint src = OPER_AY_AI_32();
5660 uint res = dst - src;
5662 FLAG_N = NFLAG_32(res);
5663 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
5664 FLAG_V = VFLAG_SUB_32(src, dst, res);
5665 FLAG_Z = MASK_OUT_ABOVE_32(res);
5671 void m68k_op_sub_32_er_pi(void)
5674 uint src = OPER_AY_PI_32();
5676 uint res = dst - src;
5678 FLAG_N = NFLAG_32(res);
5679 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
5680 FLAG_V = VFLAG_SUB_32(src, dst, res);
5681 FLAG_Z = MASK_OUT_ABOVE_32(res);
5687 void m68k_op_sub_32_er_pd(void)
5690 uint src = OPER_AY_PD_32();
5692 uint res = dst - src;
5694 FLAG_N = NFLAG_32(res);
5695 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
5696 FLAG_V = VFLAG_SUB_32(src, dst, res);
5697 FLAG_Z = MASK_OUT_ABOVE_32(res);
5703 void m68k_op_sub_32_er_di(void)
5706 uint src = OPER_AY_DI_32();
5708 uint res = dst - src;
5710 FLAG_N = NFLAG_32(res);
5711 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
5712 FLAG_V = VFLAG_SUB_32(src, dst, res);
5713 FLAG_Z = MASK_OUT_ABOVE_32(res);
5719 void m68k_op_sub_32_er_ix(void)
5722 uint src = OPER_AY_IX_32();
5724 uint res = dst - src;
5726 FLAG_N = NFLAG_32(res);
5727 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
5728 FLAG_V = VFLAG_SUB_32(src, dst, res);
5729 FLAG_Z = MASK_OUT_ABOVE_32(res);
5735 void m68k_op_sub_32_er_aw(void)
5738 uint src = OPER_AW_32();
5740 uint res = dst - src;
5742 FLAG_N = NFLAG_32(res);
5743 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
5744 FLAG_V = VFLAG_SUB_32(src, dst, res);
5745 FLAG_Z = MASK_OUT_ABOVE_32(res);
5751 void m68k_op_sub_32_er_al(void)
5754 uint src = OPER_AL_32();
5756 uint res = dst - src;
5758 FLAG_N = NFLAG_32(res);
5759 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
5760 FLAG_V = VFLAG_SUB_32(src, dst, res);
5761 FLAG_Z = MASK_OUT_ABOVE_32(res);
5767 void m68k_op_sub_32_er_pcdi(void)
5770 uint src = OPER_PCDI_32();
5772 uint res = dst - src;
5774 FLAG_N = NFLAG_32(res);
5775 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
5776 FLAG_V = VFLAG_SUB_32(src, dst, res);
5777 FLAG_Z = MASK_OUT_ABOVE_32(res);
5783 void m68k_op_sub_32_er_pcix(void)
5786 uint src = OPER_PCIX_32();
5788 uint res = dst - src;
5790 FLAG_N = NFLAG_32(res);
5791 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
5792 FLAG_V = VFLAG_SUB_32(src, dst, res);
5793 FLAG_Z = MASK_OUT_ABOVE_32(res);
5799 void m68k_op_sub_32_er_i(void)
5802 uint src = OPER_I_32();
5804 uint res = dst - src;
5806 FLAG_N = NFLAG_32(res);
5807 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
5808 FLAG_V = VFLAG_SUB_32(src, dst, res);
5809 FLAG_Z = MASK_OUT_ABOVE_32(res);
5815 void m68k_op_sub_8_re_ai(void)
5817 uint ea = EA_AY_AI_8();
5818 uint src = MASK_OUT_ABOVE_8(DX);
5819 uint dst = m68ki_read_8(ea);
5820 uint res = dst - src;
5822 FLAG_N = NFLAG_8(res);
5823 FLAG_Z = MASK_OUT_ABOVE_8(res);
5824 FLAG_X = FLAG_C = CFLAG_8(res);
5825 FLAG_V = VFLAG_SUB_8(src, dst, res);
5827 m68ki_write_8(ea, FLAG_Z);
5831 void m68k_op_sub_8_re_pi(void)
5833 uint ea = EA_AY_PI_8();
5834 uint src = MASK_OUT_ABOVE_8(DX);
5835 uint dst = m68ki_read_8(ea);
5836 uint res = dst - src;
5838 FLAG_N = NFLAG_8(res);
5839 FLAG_Z = MASK_OUT_ABOVE_8(res);
5840 FLAG_X = FLAG_C = CFLAG_8(res);
5841 FLAG_V = VFLAG_SUB_8(src, dst, res);
5843 m68ki_write_8(ea, FLAG_Z);
5847 void m68k_op_sub_8_re_pi7(void)
5849 uint ea = EA_A7_PI_8();
5850 uint src = MASK_OUT_ABOVE_8(DX);
5851 uint dst = m68ki_read_8(ea);
5852 uint res = dst - src;
5854 FLAG_N = NFLAG_8(res);
5855 FLAG_Z = MASK_OUT_ABOVE_8(res);
5856 FLAG_X = FLAG_C = CFLAG_8(res);
5857 FLAG_V = VFLAG_SUB_8(src, dst, res);
5859 m68ki_write_8(ea, FLAG_Z);
5863 void m68k_op_sub_8_re_pd(void)
5865 uint ea = EA_AY_PD_8();
5866 uint src = MASK_OUT_ABOVE_8(DX);
5867 uint dst = m68ki_read_8(ea);
5868 uint res = dst - src;
5870 FLAG_N = NFLAG_8(res);
5871 FLAG_Z = MASK_OUT_ABOVE_8(res);
5872 FLAG_X = FLAG_C = CFLAG_8(res);
5873 FLAG_V = VFLAG_SUB_8(src, dst, res);
5875 m68ki_write_8(ea, FLAG_Z);
5879 void m68k_op_sub_8_re_pd7(void)
5881 uint ea = EA_A7_PD_8();
5882 uint src = MASK_OUT_ABOVE_8(DX);
5883 uint dst = m68ki_read_8(ea);
5884 uint res = dst - src;
5886 FLAG_N = NFLAG_8(res);
5887 FLAG_Z = MASK_OUT_ABOVE_8(res);
5888 FLAG_X = FLAG_C = CFLAG_8(res);
5889 FLAG_V = VFLAG_SUB_8(src, dst, res);
5891 m68ki_write_8(ea, FLAG_Z);
5895 void m68k_op_sub_8_re_di(void)
5897 uint ea = EA_AY_DI_8();
5898 uint src = MASK_OUT_ABOVE_8(DX);
5899 uint dst = m68ki_read_8(ea);
5900 uint res = dst - src;
5902 FLAG_N = NFLAG_8(res);
5903 FLAG_Z = MASK_OUT_ABOVE_8(res);
5904 FLAG_X = FLAG_C = CFLAG_8(res);
5905 FLAG_V = VFLAG_SUB_8(src, dst, res);
5907 m68ki_write_8(ea, FLAG_Z);
5911 void m68k_op_sub_8_re_ix(void)
5913 uint ea = EA_AY_IX_8();
5914 uint src = MASK_OUT_ABOVE_8(DX);
5915 uint dst = m68ki_read_8(ea);
5916 uint res = dst - src;
5918 FLAG_N = NFLAG_8(res);
5919 FLAG_Z = MASK_OUT_ABOVE_8(res);
5920 FLAG_X = FLAG_C = CFLAG_8(res);
5921 FLAG_V = VFLAG_SUB_8(src, dst, res);
5923 m68ki_write_8(ea, FLAG_Z);
5927 void m68k_op_sub_8_re_aw(void)
5929 uint ea = EA_AW_8();
5930 uint src = MASK_OUT_ABOVE_8(DX);
5931 uint dst = m68ki_read_8(ea);
5932 uint res = dst - src;
5934 FLAG_N = NFLAG_8(res);
5935 FLAG_Z = MASK_OUT_ABOVE_8(res);
5936 FLAG_X = FLAG_C = CFLAG_8(res);
5937 FLAG_V = VFLAG_SUB_8(src, dst, res);
5939 m68ki_write_8(ea, FLAG_Z);
5943 void m68k_op_sub_8_re_al(void)
5945 uint ea = EA_AL_8();
5946 uint src = MASK_OUT_ABOVE_8(DX);
5947 uint dst = m68ki_read_8(ea);
5948 uint res = dst - src;
5950 FLAG_N = NFLAG_8(res);
5951 FLAG_Z = MASK_OUT_ABOVE_8(res);
5952 FLAG_X = FLAG_C = CFLAG_8(res);
5953 FLAG_V = VFLAG_SUB_8(src, dst, res);
5955 m68ki_write_8(ea, FLAG_Z);
5959 void m68k_op_sub_16_re_ai(void)
5961 uint ea = EA_AY_AI_16();
5962 uint src = MASK_OUT_ABOVE_16(DX);
5963 uint dst = m68ki_read_16(ea);
5964 uint res = dst - src;
5966 FLAG_N = NFLAG_16(res);
5967 FLAG_Z = MASK_OUT_ABOVE_16(res);
5968 FLAG_X = FLAG_C = CFLAG_16(res);
5969 FLAG_V = VFLAG_SUB_16(src, dst, res);
5971 m68ki_write_16(ea, FLAG_Z);
5975 void m68k_op_sub_16_re_pi(void)
5977 uint ea = EA_AY_PI_16();
5978 uint src = MASK_OUT_ABOVE_16(DX);
5979 uint dst = m68ki_read_16(ea);
5980 uint res = dst - src;
5982 FLAG_N = NFLAG_16(res);
5983 FLAG_Z = MASK_OUT_ABOVE_16(res);
5984 FLAG_X = FLAG_C = CFLAG_16(res);
5985 FLAG_V = VFLAG_SUB_16(src, dst, res);
5987 m68ki_write_16(ea, FLAG_Z);
5991 void m68k_op_sub_16_re_pd(void)
5993 uint ea = EA_AY_PD_16();
5994 uint src = MASK_OUT_ABOVE_16(DX);
5995 uint dst = m68ki_read_16(ea);
5996 uint res = dst - src;
5998 FLAG_N = NFLAG_16(res);
5999 FLAG_Z = MASK_OUT_ABOVE_16(res);
6000 FLAG_X = FLAG_C = CFLAG_16(res);
6001 FLAG_V = VFLAG_SUB_16(src, dst, res);
6003 m68ki_write_16(ea, FLAG_Z);
6007 void m68k_op_sub_16_re_di(void)
6009 uint ea = EA_AY_DI_16();
6010 uint src = MASK_OUT_ABOVE_16(DX);
6011 uint dst = m68ki_read_16(ea);
6012 uint res = dst - src;
6014 FLAG_N = NFLAG_16(res);
6015 FLAG_Z = MASK_OUT_ABOVE_16(res);
6016 FLAG_X = FLAG_C = CFLAG_16(res);
6017 FLAG_V = VFLAG_SUB_16(src, dst, res);
6019 m68ki_write_16(ea, FLAG_Z);
6023 void m68k_op_sub_16_re_ix(void)
6025 uint ea = EA_AY_IX_16();
6026 uint src = MASK_OUT_ABOVE_16(DX);
6027 uint dst = m68ki_read_16(ea);
6028 uint res = dst - src;
6030 FLAG_N = NFLAG_16(res);
6031 FLAG_Z = MASK_OUT_ABOVE_16(res);
6032 FLAG_X = FLAG_C = CFLAG_16(res);
6033 FLAG_V = VFLAG_SUB_16(src, dst, res);
6035 m68ki_write_16(ea, FLAG_Z);
6039 void m68k_op_sub_16_re_aw(void)
6041 uint ea = EA_AW_16();
6042 uint src = MASK_OUT_ABOVE_16(DX);
6043 uint dst = m68ki_read_16(ea);
6044 uint res = dst - src;
6046 FLAG_N = NFLAG_16(res);
6047 FLAG_Z = MASK_OUT_ABOVE_16(res);
6048 FLAG_X = FLAG_C = CFLAG_16(res);
6049 FLAG_V = VFLAG_SUB_16(src, dst, res);
6051 m68ki_write_16(ea, FLAG_Z);
6055 void m68k_op_sub_16_re_al(void)
6057 uint ea = EA_AL_16();
6058 uint src = MASK_OUT_ABOVE_16(DX);
6059 uint dst = m68ki_read_16(ea);
6060 uint res = dst - src;
6062 FLAG_N = NFLAG_16(res);
6063 FLAG_Z = MASK_OUT_ABOVE_16(res);
6064 FLAG_X = FLAG_C = CFLAG_16(res);
6065 FLAG_V = VFLAG_SUB_16(src, dst, res);
6067 m68ki_write_16(ea, FLAG_Z);
6071 void m68k_op_sub_32_re_ai(void)
6073 uint ea = EA_AY_AI_32();
6075 uint dst = m68ki_read_32(ea);
6076 uint res = dst - src;
6078 FLAG_N = NFLAG_32(res);
6079 FLAG_Z = MASK_OUT_ABOVE_32(res);
6080 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
6081 FLAG_V = VFLAG_SUB_32(src, dst, res);
6083 m68ki_write_32(ea, FLAG_Z);
6087 void m68k_op_sub_32_re_pi(void)
6089 uint ea = EA_AY_PI_32();
6091 uint dst = m68ki_read_32(ea);
6092 uint res = dst - src;
6094 FLAG_N = NFLAG_32(res);
6095 FLAG_Z = MASK_OUT_ABOVE_32(res);
6096 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
6097 FLAG_V = VFLAG_SUB_32(src, dst, res);
6099 m68ki_write_32(ea, FLAG_Z);
6103 void m68k_op_sub_32_re_pd(void)
6105 uint ea = EA_AY_PD_32();
6107 uint dst = m68ki_read_32(ea);
6108 uint res = dst - src;
6110 FLAG_N = NFLAG_32(res);
6111 FLAG_Z = MASK_OUT_ABOVE_32(res);
6112 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
6113 FLAG_V = VFLAG_SUB_32(src, dst, res);
6115 m68ki_write_32(ea, FLAG_Z);
6119 void m68k_op_sub_32_re_di(void)
6121 uint ea = EA_AY_DI_32();
6123 uint dst = m68ki_read_32(ea);
6124 uint res = dst - src;
6126 FLAG_N = NFLAG_32(res);
6127 FLAG_Z = MASK_OUT_ABOVE_32(res);
6128 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
6129 FLAG_V = VFLAG_SUB_32(src, dst, res);
6131 m68ki_write_32(ea, FLAG_Z);
6135 void m68k_op_sub_32_re_ix(void)
6137 uint ea = EA_AY_IX_32();
6139 uint dst = m68ki_read_32(ea);
6140 uint res = dst - src;
6142 FLAG_N = NFLAG_32(res);
6143 FLAG_Z = MASK_OUT_ABOVE_32(res);
6144 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
6145 FLAG_V = VFLAG_SUB_32(src, dst, res);
6147 m68ki_write_32(ea, FLAG_Z);
6151 void m68k_op_sub_32_re_aw(void)
6153 uint ea = EA_AW_32();
6155 uint dst = m68ki_read_32(ea);
6156 uint res = dst - src;
6158 FLAG_N = NFLAG_32(res);
6159 FLAG_Z = MASK_OUT_ABOVE_32(res);
6160 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
6161 FLAG_V = VFLAG_SUB_32(src, dst, res);
6163 m68ki_write_32(ea, FLAG_Z);
6167 void m68k_op_sub_32_re_al(void)
6169 uint ea = EA_AL_32();
6171 uint dst = m68ki_read_32(ea);
6172 uint res = dst - src;
6174 FLAG_N = NFLAG_32(res);
6175 FLAG_Z = MASK_OUT_ABOVE_32(res);
6176 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
6177 FLAG_V = VFLAG_SUB_32(src, dst, res);
6179 m68ki_write_32(ea, FLAG_Z);
6183 void m68k_op_suba_16_d(void)
6187 *r_dst = MASK_OUT_ABOVE_32(*r_dst - MAKE_INT_16(DY));
6191 void m68k_op_suba_16_a(void)
6195 *r_dst = MASK_OUT_ABOVE_32(*r_dst - MAKE_INT_16(AY));
6199 void m68k_op_suba_16_ai(void)
6201 signed short src = MAKE_INT_16(OPER_AY_AI_16());
6204 *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
6208 void m68k_op_suba_16_pi(void)
6210 signed short src = MAKE_INT_16(OPER_AY_PI_16());
6213 *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
6217 void m68k_op_suba_16_pd(void)
6219 signed short src = MAKE_INT_16(OPER_AY_PD_16());
6222 *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
6226 void m68k_op_suba_16_di(void)
6228 signed short src = MAKE_INT_16(OPER_AY_DI_16());
6231 *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
6235 void m68k_op_suba_16_ix(void)
6237 signed short src = MAKE_INT_16(OPER_AY_IX_16());
6240 *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
6244 void m68k_op_suba_16_aw(void)
6246 signed short src = MAKE_INT_16(OPER_AW_16());
6249 *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
6253 void m68k_op_suba_16_al(void)
6255 signed short src = MAKE_INT_16(OPER_AL_16());
6258 *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
6262 void m68k_op_suba_16_pcdi(void)
6264 signed short src = MAKE_INT_16(OPER_PCDI_16());
6267 *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
6271 void m68k_op_suba_16_pcix(void)
6273 signed short src = MAKE_INT_16(OPER_PCIX_16());
6276 *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
6280 void m68k_op_suba_16_i(void)
6282 signed short src = MAKE_INT_16(OPER_I_16());
6285 *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
6289 void m68k_op_suba_32_d(void)
6293 *r_dst = MASK_OUT_ABOVE_32(*r_dst - DY);
6297 void m68k_op_suba_32_a(void)
6301 *r_dst = MASK_OUT_ABOVE_32(*r_dst - AY);
6305 void m68k_op_suba_32_ai(void)
6307 uint src = OPER_AY_AI_32();
6310 *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
6314 void m68k_op_suba_32_pi(void)
6316 uint src = OPER_AY_PI_32();
6319 *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
6323 void m68k_op_suba_32_pd(void)
6325 uint src = OPER_AY_PD_32();
6328 *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
6332 void m68k_op_suba_32_di(void)
6334 uint src = OPER_AY_DI_32();
6337 *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
6341 void m68k_op_suba_32_ix(void)
6343 uint src = OPER_AY_IX_32();
6346 *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
6350 void m68k_op_suba_32_aw(void)
6352 uint src = OPER_AW_32();
6355 *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
6359 void m68k_op_suba_32_al(void)
6361 uint src = OPER_AL_32();
6364 *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
6368 void m68k_op_suba_32_pcdi(void)
6370 uint src = OPER_PCDI_32();
6373 *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
6377 void m68k_op_suba_32_pcix(void)
6379 uint src = OPER_PCIX_32();
6382 *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
6386 void m68k_op_suba_32_i(void)
6388 uint src = OPER_I_32();
6391 *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
6395 void m68k_op_subi_8_d(void)
6398 uint src = OPER_I_8();
6399 uint dst = MASK_OUT_ABOVE_8(*r_dst);
6400 uint res = dst - src;
6402 FLAG_N = NFLAG_8(res);
6403 FLAG_Z = MASK_OUT_ABOVE_8(res);
6404 FLAG_X = FLAG_C = CFLAG_8(res);
6405 FLAG_V = VFLAG_SUB_8(src, dst, res);
6407 *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
6411 void m68k_op_subi_8_ai(void)
6413 uint src = OPER_I_8();
6414 uint ea = EA_AY_AI_8();
6415 uint dst = m68ki_read_8(ea);
6416 uint res = dst - src;
6418 FLAG_N = NFLAG_8(res);
6419 FLAG_Z = MASK_OUT_ABOVE_8(res);
6420 FLAG_X = FLAG_C = CFLAG_8(res);
6421 FLAG_V = VFLAG_SUB_8(src, dst, res);
6423 m68ki_write_8(ea, FLAG_Z);
6427 void m68k_op_subi_8_pi(void)
6429 uint src = OPER_I_8();
6430 uint ea = EA_AY_PI_8();
6431 uint dst = m68ki_read_8(ea);
6432 uint res = dst - src;
6434 FLAG_N = NFLAG_8(res);
6435 FLAG_Z = MASK_OUT_ABOVE_8(res);
6436 FLAG_X = FLAG_C = CFLAG_8(res);
6437 FLAG_V = VFLAG_SUB_8(src, dst, res);
6439 m68ki_write_8(ea, FLAG_Z);
6443 void m68k_op_subi_8_pi7(void)
6445 uint src = OPER_I_8();
6446 uint ea = EA_A7_PI_8();
6447 uint dst = m68ki_read_8(ea);
6448 uint res = dst - src;
6450 FLAG_N = NFLAG_8(res);
6451 FLAG_Z = MASK_OUT_ABOVE_8(res);
6452 FLAG_X = FLAG_C = CFLAG_8(res);
6453 FLAG_V = VFLAG_SUB_8(src, dst, res);
6455 m68ki_write_8(ea, FLAG_Z);
6459 void m68k_op_subi_8_pd(void)
6461 uint src = OPER_I_8();
6462 uint ea = EA_AY_PD_8();
6463 uint dst = m68ki_read_8(ea);
6464 uint res = dst - src;
6466 FLAG_N = NFLAG_8(res);
6467 FLAG_Z = MASK_OUT_ABOVE_8(res);
6468 FLAG_X = FLAG_C = CFLAG_8(res);
6469 FLAG_V = VFLAG_SUB_8(src, dst, res);
6471 m68ki_write_8(ea, FLAG_Z);
6475 void m68k_op_subi_8_pd7(void)
6477 uint src = OPER_I_8();
6478 uint ea = EA_A7_PD_8();
6479 uint dst = m68ki_read_8(ea);
6480 uint res = dst - src;
6482 FLAG_N = NFLAG_8(res);
6483 FLAG_Z = MASK_OUT_ABOVE_8(res);
6484 FLAG_X = FLAG_C = CFLAG_8(res);
6485 FLAG_V = VFLAG_SUB_8(src, dst, res);
6487 m68ki_write_8(ea, FLAG_Z);
6491 void m68k_op_subi_8_di(void)
6493 uint src = OPER_I_8();
6494 uint ea = EA_AY_DI_8();
6495 uint dst = m68ki_read_8(ea);
6496 uint res = dst - src;
6498 FLAG_N = NFLAG_8(res);
6499 FLAG_Z = MASK_OUT_ABOVE_8(res);
6500 FLAG_X = FLAG_C = CFLAG_8(res);
6501 FLAG_V = VFLAG_SUB_8(src, dst, res);
6503 m68ki_write_8(ea, FLAG_Z);
6507 void m68k_op_subi_8_ix(void)
6509 uint src = OPER_I_8();
6510 uint ea = EA_AY_IX_8();
6511 uint dst = m68ki_read_8(ea);
6512 uint res = dst - src;
6514 FLAG_N = NFLAG_8(res);
6515 FLAG_Z = MASK_OUT_ABOVE_8(res);
6516 FLAG_X = FLAG_C = CFLAG_8(res);
6517 FLAG_V = VFLAG_SUB_8(src, dst, res);
6519 m68ki_write_8(ea, FLAG_Z);
6523 void m68k_op_subi_8_aw(void)
6525 uint src = OPER_I_8();
6526 uint ea = EA_AW_8();
6527 uint dst = m68ki_read_8(ea);
6528 uint res = dst - src;
6530 FLAG_N = NFLAG_8(res);
6531 FLAG_Z = MASK_OUT_ABOVE_8(res);
6532 FLAG_X = FLAG_C = CFLAG_8(res);
6533 FLAG_V = VFLAG_SUB_8(src, dst, res);
6535 m68ki_write_8(ea, FLAG_Z);
6539 void m68k_op_subi_8_al(void)
6541 uint src = OPER_I_8();
6542 uint ea = EA_AL_8();
6543 uint dst = m68ki_read_8(ea);
6544 uint res = dst - src;
6546 FLAG_N = NFLAG_8(res);
6547 FLAG_Z = MASK_OUT_ABOVE_8(res);
6548 FLAG_X = FLAG_C = CFLAG_8(res);
6549 FLAG_V = VFLAG_SUB_8(src, dst, res);
6551 m68ki_write_8(ea, FLAG_Z);
6555 void m68k_op_subi_16_d(void)
6558 uint src = OPER_I_16();
6559 uint dst = MASK_OUT_ABOVE_16(*r_dst);
6560 uint res = dst - src;
6562 FLAG_N = NFLAG_16(res);
6563 FLAG_Z = MASK_OUT_ABOVE_16(res);
6564 FLAG_X = FLAG_C = CFLAG_16(res);
6565 FLAG_V = VFLAG_SUB_16(src, dst, res);
6567 *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
6571 void m68k_op_subi_16_ai(void)
6573 uint src = OPER_I_16();
6574 uint ea = EA_AY_AI_16();
6575 uint dst = m68ki_read_16(ea);
6576 uint res = dst - src;
6578 FLAG_N = NFLAG_16(res);
6579 FLAG_Z = MASK_OUT_ABOVE_16(res);
6580 FLAG_X = FLAG_C = CFLAG_16(res);
6581 FLAG_V = VFLAG_SUB_16(src, dst, res);
6583 m68ki_write_16(ea, FLAG_Z);
6587 void m68k_op_subi_16_pi(void)
6589 uint src = OPER_I_16();
6590 uint ea = EA_AY_PI_16();
6591 uint dst = m68ki_read_16(ea);
6592 uint res = dst - src;
6594 FLAG_N = NFLAG_16(res);
6595 FLAG_Z = MASK_OUT_ABOVE_16(res);
6596 FLAG_X = FLAG_C = CFLAG_16(res);
6597 FLAG_V = VFLAG_SUB_16(src, dst, res);
6599 m68ki_write_16(ea, FLAG_Z);
6603 void m68k_op_subi_16_pd(void)
6605 uint src = OPER_I_16();
6606 uint ea = EA_AY_PD_16();
6607 uint dst = m68ki_read_16(ea);
6608 uint res = dst - src;
6610 FLAG_N = NFLAG_16(res);
6611 FLAG_Z = MASK_OUT_ABOVE_16(res);
6612 FLAG_X = FLAG_C = CFLAG_16(res);
6613 FLAG_V = VFLAG_SUB_16(src, dst, res);
6615 m68ki_write_16(ea, FLAG_Z);
6619 void m68k_op_subi_16_di(void)
6621 uint src = OPER_I_16();
6622 uint ea = EA_AY_DI_16();
6623 uint dst = m68ki_read_16(ea);
6624 uint res = dst - src;
6626 FLAG_N = NFLAG_16(res);
6627 FLAG_Z = MASK_OUT_ABOVE_16(res);
6628 FLAG_X = FLAG_C = CFLAG_16(res);
6629 FLAG_V = VFLAG_SUB_16(src, dst, res);
6631 m68ki_write_16(ea, FLAG_Z);
6635 void m68k_op_subi_16_ix(void)
6637 uint src = OPER_I_16();
6638 uint ea = EA_AY_IX_16();
6639 uint dst = m68ki_read_16(ea);
6640 uint res = dst - src;
6642 FLAG_N = NFLAG_16(res);
6643 FLAG_Z = MASK_OUT_ABOVE_16(res);
6644 FLAG_X = FLAG_C = CFLAG_16(res);
6645 FLAG_V = VFLAG_SUB_16(src, dst, res);
6647 m68ki_write_16(ea, FLAG_Z);
6651 void m68k_op_subi_16_aw(void)
6653 uint src = OPER_I_16();
6654 uint ea = EA_AW_16();
6655 uint dst = m68ki_read_16(ea);
6656 uint res = dst - src;
6658 FLAG_N = NFLAG_16(res);
6659 FLAG_Z = MASK_OUT_ABOVE_16(res);
6660 FLAG_X = FLAG_C = CFLAG_16(res);
6661 FLAG_V = VFLAG_SUB_16(src, dst, res);
6663 m68ki_write_16(ea, FLAG_Z);
6667 void m68k_op_subi_16_al(void)
6669 uint src = OPER_I_16();
6670 uint ea = EA_AL_16();
6671 uint dst = m68ki_read_16(ea);
6672 uint res = dst - src;
6674 FLAG_N = NFLAG_16(res);
6675 FLAG_Z = MASK_OUT_ABOVE_16(res);
6676 FLAG_X = FLAG_C = CFLAG_16(res);
6677 FLAG_V = VFLAG_SUB_16(src, dst, res);
6679 m68ki_write_16(ea, FLAG_Z);
6683 void m68k_op_subi_32_d(void)
6686 uint src = OPER_I_32();
6688 uint res = dst - src;
6690 FLAG_N = NFLAG_32(res);
6691 FLAG_Z = MASK_OUT_ABOVE_32(res);
6692 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
6693 FLAG_V = VFLAG_SUB_32(src, dst, res);
6699 void m68k_op_subi_32_ai(void)
6701 uint src = OPER_I_32();
6702 uint ea = EA_AY_AI_32();
6703 uint dst = m68ki_read_32(ea);
6704 uint res = dst - src;
6706 FLAG_N = NFLAG_32(res);
6707 FLAG_Z = MASK_OUT_ABOVE_32(res);
6708 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
6709 FLAG_V = VFLAG_SUB_32(src, dst, res);
6711 m68ki_write_32(ea, FLAG_Z);
6715 void m68k_op_subi_32_pi(void)
6717 uint src = OPER_I_32();
6718 uint ea = EA_AY_PI_32();
6719 uint dst = m68ki_read_32(ea);
6720 uint res = dst - src;
6722 FLAG_N = NFLAG_32(res);
6723 FLAG_Z = MASK_OUT_ABOVE_32(res);
6724 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
6725 FLAG_V = VFLAG_SUB_32(src, dst, res);
6727 m68ki_write_32(ea, FLAG_Z);
6731 void m68k_op_subi_32_pd(void)
6733 uint src = OPER_I_32();
6734 uint ea = EA_AY_PD_32();
6735 uint dst = m68ki_read_32(ea);
6736 uint res = dst - src;
6738 FLAG_N = NFLAG_32(res);
6739 FLAG_Z = MASK_OUT_ABOVE_32(res);
6740 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
6741 FLAG_V = VFLAG_SUB_32(src, dst, res);
6743 m68ki_write_32(ea, FLAG_Z);
6747 void m68k_op_subi_32_di(void)
6749 uint src = OPER_I_32();
6750 uint ea = EA_AY_DI_32();
6751 uint dst = m68ki_read_32(ea);
6752 uint res = dst - src;
6754 FLAG_N = NFLAG_32(res);
6755 FLAG_Z = MASK_OUT_ABOVE_32(res);
6756 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
6757 FLAG_V = VFLAG_SUB_32(src, dst, res);
6759 m68ki_write_32(ea, FLAG_Z);
6763 void m68k_op_subi_32_ix(void)
6765 uint src = OPER_I_32();
6766 uint ea = EA_AY_IX_32();
6767 uint dst = m68ki_read_32(ea);
6768 uint res = dst - src;
6770 FLAG_N = NFLAG_32(res);
6771 FLAG_Z = MASK_OUT_ABOVE_32(res);
6772 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
6773 FLAG_V = VFLAG_SUB_32(src, dst, res);
6775 m68ki_write_32(ea, FLAG_Z);
6779 void m68k_op_subi_32_aw(void)
6781 uint src = OPER_I_32();
6782 uint ea = EA_AW_32();
6783 uint dst = m68ki_read_32(ea);
6784 uint res = dst - src;
6786 FLAG_N = NFLAG_32(res);
6787 FLAG_Z = MASK_OUT_ABOVE_32(res);
6788 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
6789 FLAG_V = VFLAG_SUB_32(src, dst, res);
6791 m68ki_write_32(ea, FLAG_Z);
6795 void m68k_op_subi_32_al(void)
6797 uint src = OPER_I_32();
6798 uint ea = EA_AL_32();
6799 uint dst = m68ki_read_32(ea);
6800 uint res = dst - src;
6802 FLAG_N = NFLAG_32(res);
6803 FLAG_Z = MASK_OUT_ABOVE_32(res);
6804 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
6805 FLAG_V = VFLAG_SUB_32(src, dst, res);
6807 m68ki_write_32(ea, FLAG_Z);
6811 void m68k_op_subq_8_d(void)
6814 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
6815 uint dst = MASK_OUT_ABOVE_8(*r_dst);
6816 uint res = dst - src;
6818 FLAG_N = NFLAG_8(res);
6819 FLAG_Z = MASK_OUT_ABOVE_8(res);
6820 FLAG_X = FLAG_C = CFLAG_8(res);
6821 FLAG_V = VFLAG_SUB_8(src, dst, res);
6823 *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
6827 void m68k_op_subq_8_ai(void)
6829 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
6830 uint ea = EA_AY_AI_8();
6831 uint dst = m68ki_read_8(ea);
6832 uint res = dst - src;
6834 FLAG_N = NFLAG_8(res);
6835 FLAG_Z = MASK_OUT_ABOVE_8(res);
6836 FLAG_X = FLAG_C = CFLAG_8(res);
6837 FLAG_V = VFLAG_SUB_8(src, dst, res);
6839 m68ki_write_8(ea, FLAG_Z);
6843 void m68k_op_subq_8_pi(void)
6845 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
6846 uint ea = EA_AY_PI_8();
6847 uint dst = m68ki_read_8(ea);
6848 uint res = dst - src;
6850 FLAG_N = NFLAG_8(res);
6851 FLAG_Z = MASK_OUT_ABOVE_8(res);
6852 FLAG_X = FLAG_C = CFLAG_8(res);
6853 FLAG_V = VFLAG_SUB_8(src, dst, res);
6855 m68ki_write_8(ea, FLAG_Z);
6859 void m68k_op_subq_8_pi7(void)
6861 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
6862 uint ea = EA_A7_PI_8();
6863 uint dst = m68ki_read_8(ea);
6864 uint res = dst - src;
6866 FLAG_N = NFLAG_8(res);
6867 FLAG_Z = MASK_OUT_ABOVE_8(res);
6868 FLAG_X = FLAG_C = CFLAG_8(res);
6869 FLAG_V = VFLAG_SUB_8(src, dst, res);
6871 m68ki_write_8(ea, FLAG_Z);
6875 void m68k_op_subq_8_pd(void)
6877 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
6878 uint ea = EA_AY_PD_8();
6879 uint dst = m68ki_read_8(ea);
6880 uint res = dst - src;
6882 FLAG_N = NFLAG_8(res);
6883 FLAG_Z = MASK_OUT_ABOVE_8(res);
6884 FLAG_X = FLAG_C = CFLAG_8(res);
6885 FLAG_V = VFLAG_SUB_8(src, dst, res);
6887 m68ki_write_8(ea, FLAG_Z);
6891 void m68k_op_subq_8_pd7(void)
6893 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
6894 uint ea = EA_A7_PD_8();
6895 uint dst = m68ki_read_8(ea);
6896 uint res = dst - src;
6898 FLAG_N = NFLAG_8(res);
6899 FLAG_Z = MASK_OUT_ABOVE_8(res);
6900 FLAG_X = FLAG_C = CFLAG_8(res);
6901 FLAG_V = VFLAG_SUB_8(src, dst, res);
6903 m68ki_write_8(ea, FLAG_Z);
6907 void m68k_op_subq_8_di(void)
6909 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
6910 uint ea = EA_AY_DI_8();
6911 uint dst = m68ki_read_8(ea);
6912 uint res = dst - src;
6914 FLAG_N = NFLAG_8(res);
6915 FLAG_Z = MASK_OUT_ABOVE_8(res);
6916 FLAG_X = FLAG_C = CFLAG_8(res);
6917 FLAG_V = VFLAG_SUB_8(src, dst, res);
6919 m68ki_write_8(ea, FLAG_Z);
6923 void m68k_op_subq_8_ix(void)
6925 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
6926 uint ea = EA_AY_IX_8();
6927 uint dst = m68ki_read_8(ea);
6928 uint res = dst - src;
6930 FLAG_N = NFLAG_8(res);
6931 FLAG_Z = MASK_OUT_ABOVE_8(res);
6932 FLAG_X = FLAG_C = CFLAG_8(res);
6933 FLAG_V = VFLAG_SUB_8(src, dst, res);
6935 m68ki_write_8(ea, FLAG_Z);
6939 void m68k_op_subq_8_aw(void)
6941 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
6942 uint ea = EA_AW_8();
6943 uint dst = m68ki_read_8(ea);
6944 uint res = dst - src;
6946 FLAG_N = NFLAG_8(res);
6947 FLAG_Z = MASK_OUT_ABOVE_8(res);
6948 FLAG_X = FLAG_C = CFLAG_8(res);
6949 FLAG_V = VFLAG_SUB_8(src, dst, res);
6951 m68ki_write_8(ea, FLAG_Z);
6955 void m68k_op_subq_8_al(void)
6957 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
6958 uint ea = EA_AL_8();
6959 uint dst = m68ki_read_8(ea);
6960 uint res = dst - src;
6962 FLAG_N = NFLAG_8(res);
6963 FLAG_Z = MASK_OUT_ABOVE_8(res);
6964 FLAG_X = FLAG_C = CFLAG_8(res);
6965 FLAG_V = VFLAG_SUB_8(src, dst, res);
6967 m68ki_write_8(ea, FLAG_Z);
6971 void m68k_op_subq_16_d(void)
6974 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
6975 uint dst = MASK_OUT_ABOVE_16(*r_dst);
6976 uint res = dst - src;
6978 FLAG_N = NFLAG_16(res);
6979 FLAG_Z = MASK_OUT_ABOVE_16(res);
6980 FLAG_X = FLAG_C = CFLAG_16(res);
6981 FLAG_V = VFLAG_SUB_16(src, dst, res);
6983 *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
6987 void m68k_op_subq_16_a(void)
6991 *r_dst = MASK_OUT_ABOVE_32(*r_dst - ((((REG_IR >> 9) - 1) & 7) + 1));
6995 void m68k_op_subq_16_ai(void)
6997 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
6998 uint ea = EA_AY_AI_16();
6999 uint dst = m68ki_read_16(ea);
7000 uint res = dst - src;
7002 FLAG_N = NFLAG_16(res);
7003 FLAG_Z = MASK_OUT_ABOVE_16(res);
7004 FLAG_X = FLAG_C = CFLAG_16(res);
7005 FLAG_V = VFLAG_SUB_16(src, dst, res);
7007 m68ki_write_16(ea, FLAG_Z);
7011 void m68k_op_subq_16_pi(void)
7013 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
7014 uint ea = EA_AY_PI_16();
7015 uint dst = m68ki_read_16(ea);
7016 uint res = dst - src;
7018 FLAG_N = NFLAG_16(res);
7019 FLAG_Z = MASK_OUT_ABOVE_16(res);
7020 FLAG_X = FLAG_C = CFLAG_16(res);
7021 FLAG_V = VFLAG_SUB_16(src, dst, res);
7023 m68ki_write_16(ea, FLAG_Z);
7027 void m68k_op_subq_16_pd(void)
7029 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
7030 uint ea = EA_AY_PD_16();
7031 uint dst = m68ki_read_16(ea);
7032 uint res = dst - src;
7034 FLAG_N = NFLAG_16(res);
7035 FLAG_Z = MASK_OUT_ABOVE_16(res);
7036 FLAG_X = FLAG_C = CFLAG_16(res);
7037 FLAG_V = VFLAG_SUB_16(src, dst, res);
7039 m68ki_write_16(ea, FLAG_Z);
7043 void m68k_op_subq_16_di(void)
7045 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
7046 uint ea = EA_AY_DI_16();
7047 uint dst = m68ki_read_16(ea);
7048 uint res = dst - src;
7050 FLAG_N = NFLAG_16(res);
7051 FLAG_Z = MASK_OUT_ABOVE_16(res);
7052 FLAG_X = FLAG_C = CFLAG_16(res);
7053 FLAG_V = VFLAG_SUB_16(src, dst, res);
7055 m68ki_write_16(ea, FLAG_Z);
7059 void m68k_op_subq_16_ix(void)
7061 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
7062 uint ea = EA_AY_IX_16();
7063 uint dst = m68ki_read_16(ea);
7064 uint res = dst - src;
7066 FLAG_N = NFLAG_16(res);
7067 FLAG_Z = MASK_OUT_ABOVE_16(res);
7068 FLAG_X = FLAG_C = CFLAG_16(res);
7069 FLAG_V = VFLAG_SUB_16(src, dst, res);
7071 m68ki_write_16(ea, FLAG_Z);
7075 void m68k_op_subq_16_aw(void)
7077 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
7078 uint ea = EA_AW_16();
7079 uint dst = m68ki_read_16(ea);
7080 uint res = dst - src;
7082 FLAG_N = NFLAG_16(res);
7083 FLAG_Z = MASK_OUT_ABOVE_16(res);
7084 FLAG_X = FLAG_C = CFLAG_16(res);
7085 FLAG_V = VFLAG_SUB_16(src, dst, res);
7087 m68ki_write_16(ea, FLAG_Z);
7091 void m68k_op_subq_16_al(void)
7093 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
7094 uint ea = EA_AL_16();
7095 uint dst = m68ki_read_16(ea);
7096 uint res = dst - src;
7098 FLAG_N = NFLAG_16(res);
7099 FLAG_Z = MASK_OUT_ABOVE_16(res);
7100 FLAG_X = FLAG_C = CFLAG_16(res);
7101 FLAG_V = VFLAG_SUB_16(src, dst, res);
7103 m68ki_write_16(ea, FLAG_Z);
7107 void m68k_op_subq_32_d(void)
7110 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
7112 uint res = dst - src;
7114 FLAG_N = NFLAG_32(res);
7115 FLAG_Z = MASK_OUT_ABOVE_32(res);
7116 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
7117 FLAG_V = VFLAG_SUB_32(src, dst, res);
7123 void m68k_op_subq_32_a(void)
7127 *r_dst = MASK_OUT_ABOVE_32(*r_dst - ((((REG_IR >> 9) - 1) & 7) + 1));
7131 void m68k_op_subq_32_ai(void)
7133 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
7134 uint ea = EA_AY_AI_32();
7135 uint dst = m68ki_read_32(ea);
7136 uint res = dst - src;
7138 FLAG_N = NFLAG_32(res);
7139 FLAG_Z = MASK_OUT_ABOVE_32(res);
7140 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
7141 FLAG_V = VFLAG_SUB_32(src, dst, res);
7143 m68ki_write_32(ea, FLAG_Z);
7147 void m68k_op_subq_32_pi(void)
7149 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
7150 uint ea = EA_AY_PI_32();
7151 uint dst = m68ki_read_32(ea);
7152 uint res = dst - src;
7154 FLAG_N = NFLAG_32(res);
7155 FLAG_Z = MASK_OUT_ABOVE_32(res);
7156 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
7157 FLAG_V = VFLAG_SUB_32(src, dst, res);
7159 m68ki_write_32(ea, FLAG_Z);
7163 void m68k_op_subq_32_pd(void)
7165 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
7166 uint ea = EA_AY_PD_32();
7167 uint dst = m68ki_read_32(ea);
7168 uint res = dst - src;
7170 FLAG_N = NFLAG_32(res);
7171 FLAG_Z = MASK_OUT_ABOVE_32(res);
7172 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
7173 FLAG_V = VFLAG_SUB_32(src, dst, res);
7175 m68ki_write_32(ea, FLAG_Z);
7179 void m68k_op_subq_32_di(void)
7181 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
7182 uint ea = EA_AY_DI_32();
7183 uint dst = m68ki_read_32(ea);
7184 uint res = dst - src;
7186 FLAG_N = NFLAG_32(res);
7187 FLAG_Z = MASK_OUT_ABOVE_32(res);
7188 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
7189 FLAG_V = VFLAG_SUB_32(src, dst, res);
7191 m68ki_write_32(ea, FLAG_Z);
7195 void m68k_op_subq_32_ix(void)
7197 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
7198 uint ea = EA_AY_IX_32();
7199 uint dst = m68ki_read_32(ea);
7200 uint res = dst - src;
7202 FLAG_N = NFLAG_32(res);
7203 FLAG_Z = MASK_OUT_ABOVE_32(res);
7204 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
7205 FLAG_V = VFLAG_SUB_32(src, dst, res);
7207 m68ki_write_32(ea, FLAG_Z);
7211 void m68k_op_subq_32_aw(void)
7213 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
7214 uint ea = EA_AW_32();
7215 uint dst = m68ki_read_32(ea);
7216 uint res = dst - src;
7218 FLAG_N = NFLAG_32(res);
7219 FLAG_Z = MASK_OUT_ABOVE_32(res);
7220 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
7221 FLAG_V = VFLAG_SUB_32(src, dst, res);
7223 m68ki_write_32(ea, FLAG_Z);
7227 void m68k_op_subq_32_al(void)
7229 uint src = (((REG_IR >> 9) - 1) & 7) + 1;
7230 uint ea = EA_AL_32();
7231 uint dst = m68ki_read_32(ea);
7232 uint res = dst - src;
7234 FLAG_N = NFLAG_32(res);
7235 FLAG_Z = MASK_OUT_ABOVE_32(res);
7236 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
7237 FLAG_V = VFLAG_SUB_32(src, dst, res);
7239 m68ki_write_32(ea, FLAG_Z);
7243 void m68k_op_subx_8_rr(void)
7246 uint src = MASK_OUT_ABOVE_8(DY);
7247 uint dst = MASK_OUT_ABOVE_8(*r_dst);
7248 uint res = dst - src - XFLAG_AS_1();
7250 FLAG_N = NFLAG_8(res);
7251 FLAG_X = FLAG_C = CFLAG_8(res);
7252 FLAG_V = VFLAG_SUB_8(src, dst, res);
7254 res = MASK_OUT_ABOVE_8(res);
7257 *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
7261 void m68k_op_subx_16_rr(void)
7264 uint src = MASK_OUT_ABOVE_16(DY);
7265 uint dst = MASK_OUT_ABOVE_16(*r_dst);
7266 uint res = dst - src - XFLAG_AS_1();
7268 FLAG_N = NFLAG_16(res);
7269 FLAG_X = FLAG_C = CFLAG_16(res);
7270 FLAG_V = VFLAG_SUB_16(src, dst, res);
7272 res = MASK_OUT_ABOVE_16(res);
7275 *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
7279 void m68k_op_subx_32_rr(void)
7284 uint res = dst - src - XFLAG_AS_1();
7286 FLAG_N = NFLAG_32(res);
7287 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
7288 FLAG_V = VFLAG_SUB_32(src, dst, res);
7290 res = MASK_OUT_ABOVE_32(res);
7297 void m68k_op_subx_8_mm_ax7(void)
7299 uint src = OPER_AY_PD_8();
7300 uint ea = EA_A7_PD_8();
7301 uint dst = m68ki_read_8(ea);
7302 uint res = dst - src - XFLAG_AS_1();
7304 FLAG_N = NFLAG_8(res);
7305 FLAG_X = FLAG_C = CFLAG_8(res);
7306 FLAG_V = VFLAG_SUB_8(src, dst, res);
7308 res = MASK_OUT_ABOVE_8(res);
7311 m68ki_write_8(ea, res);
7315 void m68k_op_subx_8_mm_ay7(void)
7317 uint src = OPER_A7_PD_8();
7318 uint ea = EA_AX_PD_8();
7319 uint dst = m68ki_read_8(ea);
7320 uint res = dst - src - XFLAG_AS_1();
7322 FLAG_N = NFLAG_8(res);
7323 FLAG_X = FLAG_C = CFLAG_8(res);
7324 FLAG_V = VFLAG_SUB_8(src, dst, res);
7326 res = MASK_OUT_ABOVE_8(res);
7329 m68ki_write_8(ea, res);
7333 void m68k_op_subx_8_mm_axy7(void)
7335 uint src = OPER_A7_PD_8();
7336 uint ea = EA_A7_PD_8();
7337 uint dst = m68ki_read_8(ea);
7338 uint res = dst - src - XFLAG_AS_1();
7340 FLAG_N = NFLAG_8(res);
7341 FLAG_X = FLAG_C = CFLAG_8(res);
7342 FLAG_V = VFLAG_SUB_8(src, dst, res);
7344 res = MASK_OUT_ABOVE_8(res);
7347 m68ki_write_8(ea, res);
7351 void m68k_op_subx_8_mm(void)
7353 uint src = OPER_AY_PD_8();
7354 uint ea = EA_AX_PD_8();
7355 uint dst = m68ki_read_8(ea);
7356 uint res = dst - src - XFLAG_AS_1();
7358 FLAG_N = NFLAG_8(res);
7359 FLAG_X = FLAG_C = CFLAG_8(res);
7360 FLAG_V = VFLAG_SUB_8(src, dst, res);
7362 res = MASK_OUT_ABOVE_8(res);
7365 m68ki_write_8(ea, res);
7369 void m68k_op_subx_16_mm(void)
7371 uint src = OPER_AY_PD_16();
7372 uint ea = EA_AX_PD_16();
7373 uint dst = m68ki_read_16(ea);
7374 uint res = dst - src - XFLAG_AS_1();
7376 FLAG_N = NFLAG_16(res);
7377 FLAG_X = FLAG_C = CFLAG_16(res);
7378 FLAG_V = VFLAG_SUB_16(src, dst, res);
7380 res = MASK_OUT_ABOVE_16(res);
7383 m68ki_write_16(ea, res);
7387 void m68k_op_subx_32_mm(void)
7389 uint src = OPER_AY_PD_32();
7390 uint ea = EA_AX_PD_32();
7391 uint dst = m68ki_read_32(ea);
7392 uint res = dst - src - XFLAG_AS_1();
7394 FLAG_N = NFLAG_32(res);
7395 FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
7396 FLAG_V = VFLAG_SUB_32(src, dst, res);
7398 res = MASK_OUT_ABOVE_32(res);
7401 m68ki_write_32(ea, res);
7405 void m68k_op_swap_32(void)
7409 FLAG_Z = MASK_OUT_ABOVE_32(*r_dst<<16);
7410 *r_dst = (*r_dst>>16) | FLAG_Z;
7413 FLAG_N = NFLAG_32(*r_dst);
7414 FLAG_C = CFLAG_CLEAR;
7415 FLAG_V = VFLAG_CLEAR;
7419 void m68k_op_tas_8_d(void)
7423 FLAG_Z = MASK_OUT_ABOVE_8(*r_dst);
7424 FLAG_N = NFLAG_8(*r_dst);
7425 FLAG_V = VFLAG_CLEAR;
7426 FLAG_C = CFLAG_CLEAR;
7431 void m68k_op_tas_8_ai(void)
7433 uint ea = EA_AY_AI_8();
7434 uint dst = m68ki_read_8(ea);
7437 FLAG_N = NFLAG_8(dst);
7438 FLAG_V = VFLAG_CLEAR;
7439 FLAG_C = CFLAG_CLEAR;
7440 m68ki_write_8(ea, dst | 0x80);
7444 void m68k_op_tas_8_pi(void)
7446 uint ea = EA_AY_PI_8();
7447 uint dst = m68ki_read_8(ea);
7450 FLAG_N = NFLAG_8(dst);
7451 FLAG_V = VFLAG_CLEAR;
7452 FLAG_C = CFLAG_CLEAR;
7453 m68ki_write_8(ea, dst | 0x80);
7457 void m68k_op_tas_8_pi7(void)
7459 uint ea = EA_A7_PI_8();
7460 uint dst = m68ki_read_8(ea);
7463 FLAG_N = NFLAG_8(dst);
7464 FLAG_V = VFLAG_CLEAR;
7465 FLAG_C = CFLAG_CLEAR;
7466 m68ki_write_8(ea, dst | 0x80);
7470 void m68k_op_tas_8_pd(void)
7472 uint ea = EA_AY_PD_8();
7473 uint dst = m68ki_read_8(ea);
7476 FLAG_N = NFLAG_8(dst);
7477 FLAG_V = VFLAG_CLEAR;
7478 FLAG_C = CFLAG_CLEAR;
7479 m68ki_write_8(ea, dst | 0x80);
7483 void m68k_op_tas_8_pd7(void)
7485 uint ea = EA_A7_PD_8();
7486 uint dst = m68ki_read_8(ea);
7489 FLAG_N = NFLAG_8(dst);
7490 FLAG_V = VFLAG_CLEAR;
7491 FLAG_C = CFLAG_CLEAR;
7492 m68ki_write_8(ea, dst | 0x80);
7496 void m68k_op_tas_8_di(void)
7498 uint ea = EA_AY_DI_8();
7499 uint dst = m68ki_read_8(ea);
7502 FLAG_N = NFLAG_8(dst);
7503 FLAG_V = VFLAG_CLEAR;
7504 FLAG_C = CFLAG_CLEAR;
7505 m68ki_write_8(ea, dst | 0x80);
7509 void m68k_op_tas_8_ix(void)
7511 uint ea = EA_AY_IX_8();
7512 uint dst = m68ki_read_8(ea);
7515 FLAG_N = NFLAG_8(dst);
7516 FLAG_V = VFLAG_CLEAR;
7517 FLAG_C = CFLAG_CLEAR;
7518 m68ki_write_8(ea, dst | 0x80);
7522 void m68k_op_tas_8_aw(void)
7524 uint ea = EA_AW_8();
7525 uint dst = m68ki_read_8(ea);
7528 FLAG_N = NFLAG_8(dst);
7529 FLAG_V = VFLAG_CLEAR;
7530 FLAG_C = CFLAG_CLEAR;
7531 m68ki_write_8(ea, dst | 0x80);
7535 void m68k_op_tas_8_al(void)
7537 uint ea = EA_AL_8();
7538 uint dst = m68ki_read_8(ea);
7541 FLAG_N = NFLAG_8(dst);
7542 FLAG_V = VFLAG_CLEAR;
7543 FLAG_C = CFLAG_CLEAR;
7544 m68ki_write_8(ea, dst | 0x80);
7548 void m68k_op_trap(void)
7550 /* Trap#n stacks exception frame type 0 */
7551 m68ki_exception_trapN(EXCEPTION_TRAP_BASE + (REG_IR & 0xf)); /* HJB 990403 */
7555 void m68k_op_trapt(void)
7557 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7559 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
7562 m68ki_exception_illegal();
7566 void m68k_op_trapt_16(void)
7568 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7570 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
7573 m68ki_exception_illegal();
7577 void m68k_op_trapt_32(void)
7579 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7581 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
7584 m68ki_exception_illegal();
7588 void m68k_op_trapf(void)
7590 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7594 m68ki_exception_illegal();
7598 void m68k_op_trapf_16(void)
7600 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7605 m68ki_exception_illegal();
7609 void m68k_op_trapf_32(void)
7611 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7616 m68ki_exception_illegal();
7620 void m68k_op_traphi(void)
7622 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7625 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
7628 m68ki_exception_illegal();
7632 void m68k_op_trapls(void)
7634 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7637 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
7640 m68ki_exception_illegal();
7644 void m68k_op_trapcc(void)
7646 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7649 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
7652 m68ki_exception_illegal();
7656 void m68k_op_trapcs(void)
7658 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7661 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
7664 m68ki_exception_illegal();
7668 void m68k_op_trapne(void)
7670 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7673 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
7676 m68ki_exception_illegal();
7680 void m68k_op_trapeq(void)
7682 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7685 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
7688 m68ki_exception_illegal();
7692 void m68k_op_trapvc(void)
7694 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7697 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
7700 m68ki_exception_illegal();
7704 void m68k_op_trapvs(void)
7706 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7709 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
7712 m68ki_exception_illegal();
7716 void m68k_op_trappl(void)
7718 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7721 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
7724 m68ki_exception_illegal();
7728 void m68k_op_trapmi(void)
7730 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7733 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
7736 m68ki_exception_illegal();
7740 void m68k_op_trapge(void)
7742 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7745 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
7748 m68ki_exception_illegal();
7752 void m68k_op_traplt(void)
7754 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7757 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
7760 m68ki_exception_illegal();
7764 void m68k_op_trapgt(void)
7766 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7769 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
7772 m68ki_exception_illegal();
7776 void m68k_op_traple(void)
7778 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7781 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
7784 m68ki_exception_illegal();
7788 void m68k_op_traphi_16(void)
7790 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7794 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
7800 m68ki_exception_illegal();
7804 void m68k_op_trapls_16(void)
7806 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7810 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
7816 m68ki_exception_illegal();
7820 void m68k_op_trapcc_16(void)
7822 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7826 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
7832 m68ki_exception_illegal();
7836 void m68k_op_trapcs_16(void)
7838 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7842 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
7848 m68ki_exception_illegal();
7852 void m68k_op_trapne_16(void)
7854 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7858 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
7864 m68ki_exception_illegal();
7868 void m68k_op_trapeq_16(void)
7870 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7874 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
7880 m68ki_exception_illegal();
7884 void m68k_op_trapvc_16(void)
7886 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7890 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
7896 m68ki_exception_illegal();
7900 void m68k_op_trapvs_16(void)
7902 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7906 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
7912 m68ki_exception_illegal();
7916 void m68k_op_trappl_16(void)
7918 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7922 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
7928 m68ki_exception_illegal();
7932 void m68k_op_trapmi_16(void)
7934 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7938 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
7944 m68ki_exception_illegal();
7948 void m68k_op_trapge_16(void)
7950 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7954 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
7960 m68ki_exception_illegal();
7964 void m68k_op_traplt_16(void)
7966 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7970 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
7976 m68ki_exception_illegal();
7980 void m68k_op_trapgt_16(void)
7982 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7986 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
7992 m68ki_exception_illegal();
7996 void m68k_op_traple_16(void)
7998 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8002 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
8008 m68ki_exception_illegal();
8012 void m68k_op_traphi_32(void)
8014 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8018 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
8024 m68ki_exception_illegal();
8028 void m68k_op_trapls_32(void)
8030 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8034 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
8040 m68ki_exception_illegal();
8044 void m68k_op_trapcc_32(void)
8046 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8050 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
8056 m68ki_exception_illegal();
8060 void m68k_op_trapcs_32(void)
8062 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8066 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
8072 m68ki_exception_illegal();
8076 void m68k_op_trapne_32(void)
8078 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8082 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
8088 m68ki_exception_illegal();
8092 void m68k_op_trapeq_32(void)
8094 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8098 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
8104 m68ki_exception_illegal();
8108 void m68k_op_trapvc_32(void)
8110 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8114 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
8120 m68ki_exception_illegal();
8124 void m68k_op_trapvs_32(void)
8126 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8130 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
8136 m68ki_exception_illegal();
8140 void m68k_op_trappl_32(void)
8142 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8146 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
8152 m68ki_exception_illegal();
8156 void m68k_op_trapmi_32(void)
8158 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8162 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
8168 m68ki_exception_illegal();
8172 void m68k_op_trapge_32(void)
8174 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8178 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
8184 m68ki_exception_illegal();
8188 void m68k_op_traplt_32(void)
8190 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8194 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
8200 m68ki_exception_illegal();
8204 void m68k_op_trapgt_32(void)
8206 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8210 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
8216 m68ki_exception_illegal();
8220 void m68k_op_traple_32(void)
8222 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8226 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
8232 m68ki_exception_illegal();
8236 void m68k_op_trapv(void)
8242 m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
8246 void m68k_op_tst_8_d(void)
8248 uint res = MASK_OUT_ABOVE_8(DY);
8250 FLAG_N = NFLAG_8(res);
8252 FLAG_V = VFLAG_CLEAR;
8253 FLAG_C = CFLAG_CLEAR;
8257 void m68k_op_tst_8_ai(void)
8259 uint res = OPER_AY_AI_8();
8261 FLAG_N = NFLAG_8(res);
8263 FLAG_V = VFLAG_CLEAR;
8264 FLAG_C = CFLAG_CLEAR;
8268 void m68k_op_tst_8_pi(void)
8270 uint res = OPER_AY_PI_8();
8272 FLAG_N = NFLAG_8(res);
8274 FLAG_V = VFLAG_CLEAR;
8275 FLAG_C = CFLAG_CLEAR;
8279 void m68k_op_tst_8_pi7(void)
8281 uint res = OPER_A7_PI_8();
8283 FLAG_N = NFLAG_8(res);
8285 FLAG_V = VFLAG_CLEAR;
8286 FLAG_C = CFLAG_CLEAR;
8290 void m68k_op_tst_8_pd(void)
8292 uint res = OPER_AY_PD_8();
8294 FLAG_N = NFLAG_8(res);
8296 FLAG_V = VFLAG_CLEAR;
8297 FLAG_C = CFLAG_CLEAR;
8301 void m68k_op_tst_8_pd7(void)
8303 uint res = OPER_A7_PD_8();
8305 FLAG_N = NFLAG_8(res);
8307 FLAG_V = VFLAG_CLEAR;
8308 FLAG_C = CFLAG_CLEAR;
8312 void m68k_op_tst_8_di(void)
8314 uint res = OPER_AY_DI_8();
8316 FLAG_N = NFLAG_8(res);
8318 FLAG_V = VFLAG_CLEAR;
8319 FLAG_C = CFLAG_CLEAR;
8323 void m68k_op_tst_8_ix(void)
8325 uint res = OPER_AY_IX_8();
8327 FLAG_N = NFLAG_8(res);
8329 FLAG_V = VFLAG_CLEAR;
8330 FLAG_C = CFLAG_CLEAR;
8334 void m68k_op_tst_8_aw(void)
8336 uint res = OPER_AW_8();
8338 FLAG_N = NFLAG_8(res);
8340 FLAG_V = VFLAG_CLEAR;
8341 FLAG_C = CFLAG_CLEAR;
8345 void m68k_op_tst_8_al(void)
8347 uint res = OPER_AL_8();
8349 FLAG_N = NFLAG_8(res);
8351 FLAG_V = VFLAG_CLEAR;
8352 FLAG_C = CFLAG_CLEAR;
8356 void m68k_op_tst_8_pcdi(void)
8358 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8360 uint res = OPER_PCDI_8();
8362 FLAG_N = NFLAG_8(res);
8364 FLAG_V = VFLAG_CLEAR;
8365 FLAG_C = CFLAG_CLEAR;
8368 m68ki_exception_illegal();
8372 void m68k_op_tst_8_pcix(void)
8374 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8376 uint res = OPER_PCIX_8();
8378 FLAG_N = NFLAG_8(res);
8380 FLAG_V = VFLAG_CLEAR;
8381 FLAG_C = CFLAG_CLEAR;
8384 m68ki_exception_illegal();
8388 void m68k_op_tst_8_i(void)
8390 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8392 uint res = OPER_I_8();
8394 FLAG_N = NFLAG_8(res);
8396 FLAG_V = VFLAG_CLEAR;
8397 FLAG_C = CFLAG_CLEAR;
8400 m68ki_exception_illegal();
8404 void m68k_op_tst_16_d(void)
8406 uint res = MASK_OUT_ABOVE_16(DY);
8408 FLAG_N = NFLAG_16(res);
8410 FLAG_V = VFLAG_CLEAR;
8411 FLAG_C = CFLAG_CLEAR;
8415 void m68k_op_tst_16_a(void)
8417 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8419 uint res = MAKE_INT_16(AY);
8421 FLAG_N = NFLAG_16(res);
8423 FLAG_V = VFLAG_CLEAR;
8424 FLAG_C = CFLAG_CLEAR;
8427 m68ki_exception_illegal();
8431 void m68k_op_tst_16_ai(void)
8433 uint res = OPER_AY_AI_16();
8435 FLAG_N = NFLAG_16(res);
8437 FLAG_V = VFLAG_CLEAR;
8438 FLAG_C = CFLAG_CLEAR;
8442 void m68k_op_tst_16_pi(void)
8444 uint res = OPER_AY_PI_16();
8446 FLAG_N = NFLAG_16(res);
8448 FLAG_V = VFLAG_CLEAR;
8449 FLAG_C = CFLAG_CLEAR;
8453 void m68k_op_tst_16_pd(void)
8455 uint res = OPER_AY_PD_16();
8457 FLAG_N = NFLAG_16(res);
8459 FLAG_V = VFLAG_CLEAR;
8460 FLAG_C = CFLAG_CLEAR;
8464 void m68k_op_tst_16_di(void)
8466 uint res = OPER_AY_DI_16();
8468 FLAG_N = NFLAG_16(res);
8470 FLAG_V = VFLAG_CLEAR;
8471 FLAG_C = CFLAG_CLEAR;
8475 void m68k_op_tst_16_ix(void)
8477 uint res = OPER_AY_IX_16();
8479 FLAG_N = NFLAG_16(res);
8481 FLAG_V = VFLAG_CLEAR;
8482 FLAG_C = CFLAG_CLEAR;
8486 void m68k_op_tst_16_aw(void)
8488 uint res = OPER_AW_16();
8490 FLAG_N = NFLAG_16(res);
8492 FLAG_V = VFLAG_CLEAR;
8493 FLAG_C = CFLAG_CLEAR;
8497 void m68k_op_tst_16_al(void)
8499 uint res = OPER_AL_16();
8501 FLAG_N = NFLAG_16(res);
8503 FLAG_V = VFLAG_CLEAR;
8504 FLAG_C = CFLAG_CLEAR;
8508 void m68k_op_tst_16_pcdi(void)
8510 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8512 uint res = OPER_PCDI_16();
8514 FLAG_N = NFLAG_16(res);
8516 FLAG_V = VFLAG_CLEAR;
8517 FLAG_C = CFLAG_CLEAR;
8520 m68ki_exception_illegal();
8524 void m68k_op_tst_16_pcix(void)
8526 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8528 uint res = OPER_PCIX_16();
8530 FLAG_N = NFLAG_16(res);
8532 FLAG_V = VFLAG_CLEAR;
8533 FLAG_C = CFLAG_CLEAR;
8536 m68ki_exception_illegal();
8540 void m68k_op_tst_16_i(void)
8542 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8544 uint res = OPER_I_16();
8546 FLAG_N = NFLAG_16(res);
8548 FLAG_V = VFLAG_CLEAR;
8549 FLAG_C = CFLAG_CLEAR;
8552 m68ki_exception_illegal();
8556 void m68k_op_tst_32_d(void)
8560 FLAG_N = NFLAG_32(res);
8562 FLAG_V = VFLAG_CLEAR;
8563 FLAG_C = CFLAG_CLEAR;
8567 void m68k_op_tst_32_a(void)
8569 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8573 FLAG_N = NFLAG_32(res);
8575 FLAG_V = VFLAG_CLEAR;
8576 FLAG_C = CFLAG_CLEAR;
8579 m68ki_exception_illegal();
8583 void m68k_op_tst_32_ai(void)
8585 uint res = OPER_AY_AI_32();
8587 FLAG_N = NFLAG_32(res);
8589 FLAG_V = VFLAG_CLEAR;
8590 FLAG_C = CFLAG_CLEAR;
8594 void m68k_op_tst_32_pi(void)
8596 uint res = OPER_AY_PI_32();
8598 FLAG_N = NFLAG_32(res);
8600 FLAG_V = VFLAG_CLEAR;
8601 FLAG_C = CFLAG_CLEAR;
8605 void m68k_op_tst_32_pd(void)
8607 uint res = OPER_AY_PD_32();
8609 FLAG_N = NFLAG_32(res);
8611 FLAG_V = VFLAG_CLEAR;
8612 FLAG_C = CFLAG_CLEAR;
8616 void m68k_op_tst_32_di(void)
8618 uint res = OPER_AY_DI_32();
8620 FLAG_N = NFLAG_32(res);
8622 FLAG_V = VFLAG_CLEAR;
8623 FLAG_C = CFLAG_CLEAR;
8627 void m68k_op_tst_32_ix(void)
8629 uint res = OPER_AY_IX_32();
8631 FLAG_N = NFLAG_32(res);
8633 FLAG_V = VFLAG_CLEAR;
8634 FLAG_C = CFLAG_CLEAR;
8638 void m68k_op_tst_32_aw(void)
8640 uint res = OPER_AW_32();
8642 FLAG_N = NFLAG_32(res);
8644 FLAG_V = VFLAG_CLEAR;
8645 FLAG_C = CFLAG_CLEAR;
8649 void m68k_op_tst_32_al(void)
8651 uint res = OPER_AL_32();
8653 FLAG_N = NFLAG_32(res);
8655 FLAG_V = VFLAG_CLEAR;
8656 FLAG_C = CFLAG_CLEAR;
8660 void m68k_op_tst_32_pcdi(void)
8662 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8664 uint res = OPER_PCDI_32();
8666 FLAG_N = NFLAG_32(res);
8668 FLAG_V = VFLAG_CLEAR;
8669 FLAG_C = CFLAG_CLEAR;
8672 m68ki_exception_illegal();
8676 void m68k_op_tst_32_pcix(void)
8678 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8680 uint res = OPER_PCIX_32();
8682 FLAG_N = NFLAG_32(res);
8684 FLAG_V = VFLAG_CLEAR;
8685 FLAG_C = CFLAG_CLEAR;
8688 m68ki_exception_illegal();
8692 void m68k_op_tst_32_i(void)
8694 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8696 uint res = OPER_I_32();
8698 FLAG_N = NFLAG_32(res);
8700 FLAG_V = VFLAG_CLEAR;
8701 FLAG_C = CFLAG_CLEAR;
8704 m68ki_exception_illegal();
8708 void m68k_op_unlk_32_a7(void)
8710 REG_A[7] = m68ki_read_32(REG_A[7]);
8714 void m68k_op_unlk_32(void)
8719 *r_dst = m68ki_pull_32();
8723 void m68k_op_unpk_16_rr(void)
8725 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8727 /* Note: DX and DY are reversed in Motorola's docs */
8731 *r_dst = MASK_OUT_BELOW_16(*r_dst) | (((((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16()) & 0xffff);
8734 m68ki_exception_illegal();
8738 void m68k_op_unpk_16_mm_ax7(void)
8740 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8742 /* Note: AX and AY are reversed in Motorola's docs */
8743 uint src = OPER_AY_PD_8();
8746 src = (((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16();
8747 ea_dst = EA_A7_PD_8();
8748 m68ki_write_8(ea_dst, (src >> 8) & 0xff);
8749 ea_dst = EA_A7_PD_8();
8750 m68ki_write_8(ea_dst, src & 0xff);
8753 m68ki_exception_illegal();
8757 void m68k_op_unpk_16_mm_ay7(void)
8759 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8761 /* Note: AX and AY are reversed in Motorola's docs */
8762 uint src = OPER_A7_PD_8();
8765 src = (((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16();
8766 ea_dst = EA_AX_PD_8();
8767 m68ki_write_8(ea_dst, (src >> 8) & 0xff);
8768 ea_dst = EA_AX_PD_8();
8769 m68ki_write_8(ea_dst, src & 0xff);
8772 m68ki_exception_illegal();
8776 void m68k_op_unpk_16_mm_axy7(void)
8778 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8780 uint src = OPER_A7_PD_8();
8783 src = (((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16();
8784 ea_dst = EA_A7_PD_8();
8785 m68ki_write_8(ea_dst, (src >> 8) & 0xff);
8786 ea_dst = EA_A7_PD_8();
8787 m68ki_write_8(ea_dst, src & 0xff);
8790 m68ki_exception_illegal();
8794 void m68k_op_unpk_16_mm(void)
8796 if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8798 /* Note: AX and AY are reversed in Motorola's docs */
8799 uint src = OPER_AY_PD_8();
8802 src = (((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16();
8803 ea_dst = EA_AX_PD_8();
8804 m68ki_write_8(ea_dst, (src >> 8) & 0xff);
8805 ea_dst = EA_AX_PD_8();
8806 m68ki_write_8(ea_dst, src & 0xff);
8809 m68ki_exception_illegal();
8813 /* ======================================================================== */
8814 /* ============================== END OF FILE ============================= */
8815 /* ======================================================================== */