3 #define NOT_POLLING ctx->not_polling = 1;
15 res = DREGu8((Opcode >> 0) & 7);
21 DREGu8((Opcode >> 0) & 7) = res;
32 adr = AREG((Opcode >> 0) & 7);
40 WRITE_BYTE_F(adr, res)
52 adr = AREG((Opcode >> 0) & 7);
53 AREG((Opcode >> 0) & 7) += 1;
61 WRITE_BYTE_F(adr, res)
73 adr = AREG((Opcode >> 0) & 7) - 1;
74 AREG((Opcode >> 0) & 7) = adr;
82 WRITE_BYTE_F(adr, res)
95 adr += AREG((Opcode >> 0) & 7);
103 WRITE_BYTE_F(adr, res)
115 adr = AREG((Opcode >> 0) & 7);
118 READ_BYTE_F(adr, res)
124 WRITE_BYTE_F(adr, res)
138 READ_BYTE_F(adr, res)
144 WRITE_BYTE_F(adr, res)
158 READ_BYTE_F(adr, res)
164 WRITE_BYTE_F(adr, res)
179 READ_BYTE_F(adr, res)
185 WRITE_BYTE_F(adr, res)
200 READ_BYTE_F(adr, res)
206 WRITE_BYTE_F(adr, res)
218 res = DREGu16((Opcode >> 0) & 7);
224 DREGu16((Opcode >> 0) & 7) = res;
235 adr = AREG((Opcode >> 0) & 7);
237 READ_WORD_F(adr, res)
243 WRITE_WORD_F(adr, res)
255 adr = AREG((Opcode >> 0) & 7);
256 AREG((Opcode >> 0) & 7) += 2;
258 READ_WORD_F(adr, res)
264 WRITE_WORD_F(adr, res)
276 adr = AREG((Opcode >> 0) & 7) - 2;
277 AREG((Opcode >> 0) & 7) = adr;
279 READ_WORD_F(adr, res)
285 WRITE_WORD_F(adr, res)
298 adr += AREG((Opcode >> 0) & 7);
300 READ_WORD_F(adr, res)
306 WRITE_WORD_F(adr, res)
318 adr = AREG((Opcode >> 0) & 7);
321 READ_WORD_F(adr, res)
327 WRITE_WORD_F(adr, res)
341 READ_WORD_F(adr, res)
347 WRITE_WORD_F(adr, res)
361 READ_WORD_F(adr, res)
367 WRITE_WORD_F(adr, res)
382 READ_WORD_F(adr, res)
388 WRITE_WORD_F(adr, res)
403 READ_WORD_F(adr, res)
409 WRITE_WORD_F(adr, res)
421 res = DREGu32((Opcode >> 0) & 7);
427 DREGu32((Opcode >> 0) & 7) = res;
438 adr = AREG((Opcode >> 0) & 7);
440 READ_LONG_F(adr, res)
446 WRITE_LONG_F(adr, res)
458 adr = AREG((Opcode >> 0) & 7);
459 AREG((Opcode >> 0) & 7) += 4;
461 READ_LONG_F(adr, res)
467 WRITE_LONG_F(adr, res)
479 adr = AREG((Opcode >> 0) & 7) - 4;
480 AREG((Opcode >> 0) & 7) = adr;
482 READ_LONG_F(adr, res)
488 WRITE_LONG_F(adr, res)
501 adr += AREG((Opcode >> 0) & 7);
503 READ_LONG_F(adr, res)
509 WRITE_LONG_F(adr, res)
521 adr = AREG((Opcode >> 0) & 7);
524 READ_LONG_F(adr, res)
530 WRITE_LONG_F(adr, res)
544 READ_LONG_F(adr, res)
550 WRITE_LONG_F(adr, res)
564 READ_LONG_F(adr, res)
570 WRITE_LONG_F(adr, res)
585 READ_LONG_F(adr, res)
591 WRITE_LONG_F(adr, res)
606 READ_LONG_F(adr, res)
612 WRITE_LONG_F(adr, res)
624 res &= M68K_CCR_MASK;
643 CHECK_INT_TO_JUMP(20)
647 SET_PC(execute_exception(ctx, M68K_PRIVILEGE_VIOLATION_EX, GET_PC-2, GET_SR));
648 #ifdef USE_CYCLONE_TIMING
664 res = DREGu8((Opcode >> 0) & 7);
670 DREGu8((Opcode >> 0) & 7) = res;
681 adr = AREG((Opcode >> 0) & 7);
683 READ_BYTE_F(adr, res)
689 WRITE_BYTE_F(adr, res)
701 adr = AREG((Opcode >> 0) & 7);
702 AREG((Opcode >> 0) & 7) += 1;
704 READ_BYTE_F(adr, res)
710 WRITE_BYTE_F(adr, res)
722 adr = AREG((Opcode >> 0) & 7) - 1;
723 AREG((Opcode >> 0) & 7) = adr;
725 READ_BYTE_F(adr, res)
731 WRITE_BYTE_F(adr, res)
744 adr += AREG((Opcode >> 0) & 7);
746 READ_BYTE_F(adr, res)
752 WRITE_BYTE_F(adr, res)
764 adr = AREG((Opcode >> 0) & 7);
767 READ_BYTE_F(adr, res)
773 WRITE_BYTE_F(adr, res)
787 READ_BYTE_F(adr, res)
793 WRITE_BYTE_F(adr, res)
807 READ_BYTE_F(adr, res)
813 WRITE_BYTE_F(adr, res)
828 READ_BYTE_F(adr, res)
834 WRITE_BYTE_F(adr, res)
849 READ_BYTE_F(adr, res)
855 WRITE_BYTE_F(adr, res)
867 res = DREGu16((Opcode >> 0) & 7);
873 DREGu16((Opcode >> 0) & 7) = res;
884 adr = AREG((Opcode >> 0) & 7);
886 READ_WORD_F(adr, res)
892 WRITE_WORD_F(adr, res)
904 adr = AREG((Opcode >> 0) & 7);
905 AREG((Opcode >> 0) & 7) += 2;
907 READ_WORD_F(adr, res)
913 WRITE_WORD_F(adr, res)
925 adr = AREG((Opcode >> 0) & 7) - 2;
926 AREG((Opcode >> 0) & 7) = adr;
928 READ_WORD_F(adr, res)
934 WRITE_WORD_F(adr, res)
947 adr += AREG((Opcode >> 0) & 7);
949 READ_WORD_F(adr, res)
955 WRITE_WORD_F(adr, res)
967 adr = AREG((Opcode >> 0) & 7);
970 READ_WORD_F(adr, res)
976 WRITE_WORD_F(adr, res)
990 READ_WORD_F(adr, res)
996 WRITE_WORD_F(adr, res)
1010 READ_WORD_F(adr, res)
1016 WRITE_WORD_F(adr, res)
1031 READ_WORD_F(adr, res)
1037 WRITE_WORD_F(adr, res)
1052 READ_WORD_F(adr, res)
1058 WRITE_WORD_F(adr, res)
1070 res = DREGu32((Opcode >> 0) & 7);
1076 DREGu32((Opcode >> 0) & 7) = res;
1087 adr = AREG((Opcode >> 0) & 7);
1089 READ_LONG_F(adr, res)
1095 WRITE_LONG_F(adr, res)
1107 adr = AREG((Opcode >> 0) & 7);
1108 AREG((Opcode >> 0) & 7) += 4;
1110 READ_LONG_F(adr, res)
1116 WRITE_LONG_F(adr, res)
1128 adr = AREG((Opcode >> 0) & 7) - 4;
1129 AREG((Opcode >> 0) & 7) = adr;
1131 READ_LONG_F(adr, res)
1137 WRITE_LONG_F(adr, res)
1150 adr += AREG((Opcode >> 0) & 7);
1152 READ_LONG_F(adr, res)
1158 WRITE_LONG_F(adr, res)
1170 adr = AREG((Opcode >> 0) & 7);
1173 READ_LONG_F(adr, res)
1179 WRITE_LONG_F(adr, res)
1193 READ_LONG_F(adr, res)
1199 WRITE_LONG_F(adr, res)
1213 READ_LONG_F(adr, res)
1219 WRITE_LONG_F(adr, res)
1234 READ_LONG_F(adr, res)
1240 WRITE_LONG_F(adr, res)
1255 READ_LONG_F(adr, res)
1261 WRITE_LONG_F(adr, res)
1273 res &= M68K_CCR_MASK;
1288 res &= M68K_SR_MASK;
1297 CHECK_INT_TO_JUMP(20)
1301 SET_PC(execute_exception(ctx, M68K_PRIVILEGE_VIOLATION_EX, GET_PC-2, GET_SR));
1302 #ifdef USE_CYCLONE_TIMING
1318 res = DREGu8((Opcode >> 0) & 7);
1324 DREGu8((Opcode >> 0) & 7) = res;
1335 adr = AREG((Opcode >> 0) & 7);
1337 READ_BYTE_F(adr, res)
1343 WRITE_BYTE_F(adr, res)
1355 adr = AREG((Opcode >> 0) & 7);
1356 AREG((Opcode >> 0) & 7) += 1;
1358 READ_BYTE_F(adr, res)
1364 WRITE_BYTE_F(adr, res)
1376 adr = AREG((Opcode >> 0) & 7) - 1;
1377 AREG((Opcode >> 0) & 7) = adr;
1379 READ_BYTE_F(adr, res)
1385 WRITE_BYTE_F(adr, res)
1398 adr += AREG((Opcode >> 0) & 7);
1400 READ_BYTE_F(adr, res)
1406 WRITE_BYTE_F(adr, res)
1418 adr = AREG((Opcode >> 0) & 7);
1421 READ_BYTE_F(adr, res)
1427 WRITE_BYTE_F(adr, res)
1441 READ_BYTE_F(adr, res)
1447 WRITE_BYTE_F(adr, res)
1461 READ_BYTE_F(adr, res)
1467 WRITE_BYTE_F(adr, res)
1482 READ_BYTE_F(adr, res)
1488 WRITE_BYTE_F(adr, res)
1503 READ_BYTE_F(adr, res)
1509 WRITE_BYTE_F(adr, res)
1521 res = DREGu16((Opcode >> 0) & 7);
1527 DREGu16((Opcode >> 0) & 7) = res;
1538 adr = AREG((Opcode >> 0) & 7);
1540 READ_WORD_F(adr, res)
1546 WRITE_WORD_F(adr, res)
1558 adr = AREG((Opcode >> 0) & 7);
1559 AREG((Opcode >> 0) & 7) += 2;
1561 READ_WORD_F(adr, res)
1567 WRITE_WORD_F(adr, res)
1579 adr = AREG((Opcode >> 0) & 7) - 2;
1580 AREG((Opcode >> 0) & 7) = adr;
1582 READ_WORD_F(adr, res)
1588 WRITE_WORD_F(adr, res)
1601 adr += AREG((Opcode >> 0) & 7);
1603 READ_WORD_F(adr, res)
1609 WRITE_WORD_F(adr, res)
1621 adr = AREG((Opcode >> 0) & 7);
1624 READ_WORD_F(adr, res)
1630 WRITE_WORD_F(adr, res)
1644 READ_WORD_F(adr, res)
1650 WRITE_WORD_F(adr, res)
1664 READ_WORD_F(adr, res)
1670 WRITE_WORD_F(adr, res)
1685 READ_WORD_F(adr, res)
1691 WRITE_WORD_F(adr, res)
1706 READ_WORD_F(adr, res)
1712 WRITE_WORD_F(adr, res)
1724 res = DREGu32((Opcode >> 0) & 7);
1730 DREGu32((Opcode >> 0) & 7) = res;
1741 adr = AREG((Opcode >> 0) & 7);
1743 READ_LONG_F(adr, res)
1749 WRITE_LONG_F(adr, res)
1761 adr = AREG((Opcode >> 0) & 7);
1762 AREG((Opcode >> 0) & 7) += 4;
1764 READ_LONG_F(adr, res)
1770 WRITE_LONG_F(adr, res)
1782 adr = AREG((Opcode >> 0) & 7) - 4;
1783 AREG((Opcode >> 0) & 7) = adr;
1785 READ_LONG_F(adr, res)
1791 WRITE_LONG_F(adr, res)
1804 adr += AREG((Opcode >> 0) & 7);
1806 READ_LONG_F(adr, res)
1812 WRITE_LONG_F(adr, res)
1824 adr = AREG((Opcode >> 0) & 7);
1827 READ_LONG_F(adr, res)
1833 WRITE_LONG_F(adr, res)
1847 READ_LONG_F(adr, res)
1853 WRITE_LONG_F(adr, res)
1867 READ_LONG_F(adr, res)
1873 WRITE_LONG_F(adr, res)
1888 READ_LONG_F(adr, res)
1894 WRITE_LONG_F(adr, res)
1909 READ_LONG_F(adr, res)
1915 WRITE_LONG_F(adr, res)
1927 res &= M68K_CCR_MASK;
1942 res &= M68K_SR_MASK;
1951 CHECK_INT_TO_JUMP(20)
1955 SET_PC(execute_exception(ctx, M68K_PRIVILEGE_VIOLATION_EX, GET_PC-2, GET_SR));
1956 #ifdef USE_CYCLONE_TIMING
1972 dst = DREGu8((Opcode >> 0) & 7);
1974 flag_N = flag_X = flag_C = res;
1975 flag_V = (src ^ dst) & (res ^ dst);
1976 flag_NotZ = res & 0xFF;
1977 DREGu8((Opcode >> 0) & 7) = res;
1988 adr = AREG((Opcode >> 0) & 7);
1990 READ_BYTE_F(adr, dst)
1992 flag_N = flag_X = flag_C = res;
1993 flag_V = (src ^ dst) & (res ^ dst);
1994 flag_NotZ = res & 0xFF;
1995 WRITE_BYTE_F(adr, res)
2007 adr = AREG((Opcode >> 0) & 7);
2008 AREG((Opcode >> 0) & 7) += 1;
2010 READ_BYTE_F(adr, dst)
2012 flag_N = flag_X = flag_C = res;
2013 flag_V = (src ^ dst) & (res ^ dst);
2014 flag_NotZ = res & 0xFF;
2015 WRITE_BYTE_F(adr, res)
2027 adr = AREG((Opcode >> 0) & 7) - 1;
2028 AREG((Opcode >> 0) & 7) = adr;
2030 READ_BYTE_F(adr, dst)
2032 flag_N = flag_X = flag_C = res;
2033 flag_V = (src ^ dst) & (res ^ dst);
2034 flag_NotZ = res & 0xFF;
2035 WRITE_BYTE_F(adr, res)
2048 adr += AREG((Opcode >> 0) & 7);
2050 READ_BYTE_F(adr, dst)
2052 flag_N = flag_X = flag_C = res;
2053 flag_V = (src ^ dst) & (res ^ dst);
2054 flag_NotZ = res & 0xFF;
2055 WRITE_BYTE_F(adr, res)
2067 adr = AREG((Opcode >> 0) & 7);
2070 READ_BYTE_F(adr, dst)
2072 flag_N = flag_X = flag_C = res;
2073 flag_V = (src ^ dst) & (res ^ dst);
2074 flag_NotZ = res & 0xFF;
2075 WRITE_BYTE_F(adr, res)
2089 READ_BYTE_F(adr, dst)
2091 flag_N = flag_X = flag_C = res;
2092 flag_V = (src ^ dst) & (res ^ dst);
2093 flag_NotZ = res & 0xFF;
2094 WRITE_BYTE_F(adr, res)
2108 READ_BYTE_F(adr, dst)
2110 flag_N = flag_X = flag_C = res;
2111 flag_V = (src ^ dst) & (res ^ dst);
2112 flag_NotZ = res & 0xFF;
2113 WRITE_BYTE_F(adr, res)
2128 READ_BYTE_F(adr, dst)
2130 flag_N = flag_X = flag_C = res;
2131 flag_V = (src ^ dst) & (res ^ dst);
2132 flag_NotZ = res & 0xFF;
2133 WRITE_BYTE_F(adr, res)
2148 READ_BYTE_F(adr, dst)
2150 flag_N = flag_X = flag_C = res;
2151 flag_V = (src ^ dst) & (res ^ dst);
2152 flag_NotZ = res & 0xFF;
2153 WRITE_BYTE_F(adr, res)
2165 dst = DREGu16((Opcode >> 0) & 7);
2167 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
2168 flag_N = flag_X = flag_C = res >> 8;
2169 flag_NotZ = res & 0xFFFF;
2170 DREGu16((Opcode >> 0) & 7) = res;
2181 adr = AREG((Opcode >> 0) & 7);
2183 READ_WORD_F(adr, dst)
2185 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
2186 flag_N = flag_X = flag_C = res >> 8;
2187 flag_NotZ = res & 0xFFFF;
2188 WRITE_WORD_F(adr, res)
2200 adr = AREG((Opcode >> 0) & 7);
2201 AREG((Opcode >> 0) & 7) += 2;
2203 READ_WORD_F(adr, dst)
2205 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
2206 flag_N = flag_X = flag_C = res >> 8;
2207 flag_NotZ = res & 0xFFFF;
2208 WRITE_WORD_F(adr, res)
2220 adr = AREG((Opcode >> 0) & 7) - 2;
2221 AREG((Opcode >> 0) & 7) = adr;
2223 READ_WORD_F(adr, dst)
2225 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
2226 flag_N = flag_X = flag_C = res >> 8;
2227 flag_NotZ = res & 0xFFFF;
2228 WRITE_WORD_F(adr, res)
2241 adr += AREG((Opcode >> 0) & 7);
2243 READ_WORD_F(adr, dst)
2245 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
2246 flag_N = flag_X = flag_C = res >> 8;
2247 flag_NotZ = res & 0xFFFF;
2248 WRITE_WORD_F(adr, res)
2260 adr = AREG((Opcode >> 0) & 7);
2263 READ_WORD_F(adr, dst)
2265 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
2266 flag_N = flag_X = flag_C = res >> 8;
2267 flag_NotZ = res & 0xFFFF;
2268 WRITE_WORD_F(adr, res)
2282 READ_WORD_F(adr, dst)
2284 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
2285 flag_N = flag_X = flag_C = res >> 8;
2286 flag_NotZ = res & 0xFFFF;
2287 WRITE_WORD_F(adr, res)
2301 READ_WORD_F(adr, dst)
2303 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
2304 flag_N = flag_X = flag_C = res >> 8;
2305 flag_NotZ = res & 0xFFFF;
2306 WRITE_WORD_F(adr, res)
2321 READ_WORD_F(adr, dst)
2323 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
2324 flag_N = flag_X = flag_C = res >> 8;
2325 flag_NotZ = res & 0xFFFF;
2326 WRITE_WORD_F(adr, res)
2341 READ_WORD_F(adr, dst)
2343 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
2344 flag_N = flag_X = flag_C = res >> 8;
2345 flag_NotZ = res & 0xFFFF;
2346 WRITE_WORD_F(adr, res)
2358 dst = DREGu32((Opcode >> 0) & 7);
2361 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
2362 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
2364 DREGu32((Opcode >> 0) & 7) = res;
2375 adr = AREG((Opcode >> 0) & 7);
2377 READ_LONG_F(adr, dst)
2380 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
2381 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
2383 WRITE_LONG_F(adr, res)
2395 adr = AREG((Opcode >> 0) & 7);
2396 AREG((Opcode >> 0) & 7) += 4;
2398 READ_LONG_F(adr, dst)
2401 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
2402 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
2404 WRITE_LONG_F(adr, res)
2416 adr = AREG((Opcode >> 0) & 7) - 4;
2417 AREG((Opcode >> 0) & 7) = adr;
2419 READ_LONG_F(adr, dst)
2422 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
2423 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
2425 WRITE_LONG_F(adr, res)
2438 adr += AREG((Opcode >> 0) & 7);
2440 READ_LONG_F(adr, dst)
2443 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
2444 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
2446 WRITE_LONG_F(adr, res)
2458 adr = AREG((Opcode >> 0) & 7);
2461 READ_LONG_F(adr, dst)
2464 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
2465 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
2467 WRITE_LONG_F(adr, res)
2481 READ_LONG_F(adr, dst)
2484 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
2485 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
2487 WRITE_LONG_F(adr, res)
2501 READ_LONG_F(adr, dst)
2504 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
2505 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
2507 WRITE_LONG_F(adr, res)
2522 READ_LONG_F(adr, dst)
2525 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
2526 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
2528 WRITE_LONG_F(adr, res)
2543 READ_LONG_F(adr, dst)
2546 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
2547 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
2549 WRITE_LONG_F(adr, res)
2561 dst = DREGu8((Opcode >> 0) & 7);
2563 flag_N = flag_X = flag_C = res;
2564 flag_V = (src ^ res) & (dst ^ res);
2565 flag_NotZ = res & 0xFF;
2566 DREGu8((Opcode >> 0) & 7) = res;
2577 adr = AREG((Opcode >> 0) & 7);
2579 READ_BYTE_F(adr, dst)
2581 flag_N = flag_X = flag_C = res;
2582 flag_V = (src ^ res) & (dst ^ res);
2583 flag_NotZ = res & 0xFF;
2584 WRITE_BYTE_F(adr, res)
2596 adr = AREG((Opcode >> 0) & 7);
2597 AREG((Opcode >> 0) & 7) += 1;
2599 READ_BYTE_F(adr, dst)
2601 flag_N = flag_X = flag_C = res;
2602 flag_V = (src ^ res) & (dst ^ res);
2603 flag_NotZ = res & 0xFF;
2604 WRITE_BYTE_F(adr, res)
2616 adr = AREG((Opcode >> 0) & 7) - 1;
2617 AREG((Opcode >> 0) & 7) = adr;
2619 READ_BYTE_F(adr, dst)
2621 flag_N = flag_X = flag_C = res;
2622 flag_V = (src ^ res) & (dst ^ res);
2623 flag_NotZ = res & 0xFF;
2624 WRITE_BYTE_F(adr, res)
2637 adr += AREG((Opcode >> 0) & 7);
2639 READ_BYTE_F(adr, dst)
2641 flag_N = flag_X = flag_C = res;
2642 flag_V = (src ^ res) & (dst ^ res);
2643 flag_NotZ = res & 0xFF;
2644 WRITE_BYTE_F(adr, res)
2656 adr = AREG((Opcode >> 0) & 7);
2659 READ_BYTE_F(adr, dst)
2661 flag_N = flag_X = flag_C = res;
2662 flag_V = (src ^ res) & (dst ^ res);
2663 flag_NotZ = res & 0xFF;
2664 WRITE_BYTE_F(adr, res)
2678 READ_BYTE_F(adr, dst)
2680 flag_N = flag_X = flag_C = res;
2681 flag_V = (src ^ res) & (dst ^ res);
2682 flag_NotZ = res & 0xFF;
2683 WRITE_BYTE_F(adr, res)
2697 READ_BYTE_F(adr, dst)
2699 flag_N = flag_X = flag_C = res;
2700 flag_V = (src ^ res) & (dst ^ res);
2701 flag_NotZ = res & 0xFF;
2702 WRITE_BYTE_F(adr, res)
2717 READ_BYTE_F(adr, dst)
2719 flag_N = flag_X = flag_C = res;
2720 flag_V = (src ^ res) & (dst ^ res);
2721 flag_NotZ = res & 0xFF;
2722 WRITE_BYTE_F(adr, res)
2737 READ_BYTE_F(adr, dst)
2739 flag_N = flag_X = flag_C = res;
2740 flag_V = (src ^ res) & (dst ^ res);
2741 flag_NotZ = res & 0xFF;
2742 WRITE_BYTE_F(adr, res)
2754 dst = DREGu16((Opcode >> 0) & 7);
2756 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
2757 flag_N = flag_X = flag_C = res >> 8;
2758 flag_NotZ = res & 0xFFFF;
2759 DREGu16((Opcode >> 0) & 7) = res;
2770 adr = AREG((Opcode >> 0) & 7);
2772 READ_WORD_F(adr, dst)
2774 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
2775 flag_N = flag_X = flag_C = res >> 8;
2776 flag_NotZ = res & 0xFFFF;
2777 WRITE_WORD_F(adr, res)
2789 adr = AREG((Opcode >> 0) & 7);
2790 AREG((Opcode >> 0) & 7) += 2;
2792 READ_WORD_F(adr, dst)
2794 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
2795 flag_N = flag_X = flag_C = res >> 8;
2796 flag_NotZ = res & 0xFFFF;
2797 WRITE_WORD_F(adr, res)
2809 adr = AREG((Opcode >> 0) & 7) - 2;
2810 AREG((Opcode >> 0) & 7) = adr;
2812 READ_WORD_F(adr, dst)
2814 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
2815 flag_N = flag_X = flag_C = res >> 8;
2816 flag_NotZ = res & 0xFFFF;
2817 WRITE_WORD_F(adr, res)
2830 adr += AREG((Opcode >> 0) & 7);
2832 READ_WORD_F(adr, dst)
2834 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
2835 flag_N = flag_X = flag_C = res >> 8;
2836 flag_NotZ = res & 0xFFFF;
2837 WRITE_WORD_F(adr, res)
2849 adr = AREG((Opcode >> 0) & 7);
2852 READ_WORD_F(adr, dst)
2854 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
2855 flag_N = flag_X = flag_C = res >> 8;
2856 flag_NotZ = res & 0xFFFF;
2857 WRITE_WORD_F(adr, res)
2871 READ_WORD_F(adr, dst)
2873 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
2874 flag_N = flag_X = flag_C = res >> 8;
2875 flag_NotZ = res & 0xFFFF;
2876 WRITE_WORD_F(adr, res)
2890 READ_WORD_F(adr, dst)
2892 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
2893 flag_N = flag_X = flag_C = res >> 8;
2894 flag_NotZ = res & 0xFFFF;
2895 WRITE_WORD_F(adr, res)
2910 READ_WORD_F(adr, dst)
2912 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
2913 flag_N = flag_X = flag_C = res >> 8;
2914 flag_NotZ = res & 0xFFFF;
2915 WRITE_WORD_F(adr, res)
2930 READ_WORD_F(adr, dst)
2932 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
2933 flag_N = flag_X = flag_C = res >> 8;
2934 flag_NotZ = res & 0xFFFF;
2935 WRITE_WORD_F(adr, res)
2947 dst = DREGu32((Opcode >> 0) & 7);
2950 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
2951 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
2953 DREGu32((Opcode >> 0) & 7) = res;
2964 adr = AREG((Opcode >> 0) & 7);
2966 READ_LONG_F(adr, dst)
2969 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
2970 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
2972 WRITE_LONG_F(adr, res)
2984 adr = AREG((Opcode >> 0) & 7);
2985 AREG((Opcode >> 0) & 7) += 4;
2987 READ_LONG_F(adr, dst)
2990 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
2991 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
2993 WRITE_LONG_F(adr, res)
3005 adr = AREG((Opcode >> 0) & 7) - 4;
3006 AREG((Opcode >> 0) & 7) = adr;
3008 READ_LONG_F(adr, dst)
3011 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
3012 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
3014 WRITE_LONG_F(adr, res)
3027 adr += AREG((Opcode >> 0) & 7);
3029 READ_LONG_F(adr, dst)
3032 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
3033 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
3035 WRITE_LONG_F(adr, res)
3047 adr = AREG((Opcode >> 0) & 7);
3050 READ_LONG_F(adr, dst)
3053 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
3054 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
3056 WRITE_LONG_F(adr, res)
3070 READ_LONG_F(adr, dst)
3073 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
3074 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
3076 WRITE_LONG_F(adr, res)
3090 READ_LONG_F(adr, dst)
3093 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
3094 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
3096 WRITE_LONG_F(adr, res)
3111 READ_LONG_F(adr, dst)
3114 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
3115 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
3117 WRITE_LONG_F(adr, res)
3132 READ_LONG_F(adr, dst)
3135 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
3136 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
3138 WRITE_LONG_F(adr, res)
3150 dst = DREGu8((Opcode >> 0) & 7);
3152 flag_N = flag_C = res;
3153 flag_V = (src ^ dst) & (res ^ dst);
3154 flag_NotZ = res & 0xFF;
3165 adr = AREG((Opcode >> 0) & 7);
3167 READ_BYTE_F(adr, dst)
3169 flag_N = flag_C = res;
3170 flag_V = (src ^ dst) & (res ^ dst);
3171 flag_NotZ = res & 0xFF;
3183 adr = AREG((Opcode >> 0) & 7);
3184 AREG((Opcode >> 0) & 7) += 1;
3186 READ_BYTE_F(adr, dst)
3188 flag_N = flag_C = res;
3189 flag_V = (src ^ dst) & (res ^ dst);
3190 flag_NotZ = res & 0xFF;
3202 adr = AREG((Opcode >> 0) & 7) - 1;
3203 AREG((Opcode >> 0) & 7) = adr;
3205 READ_BYTE_F(adr, dst)
3207 flag_N = flag_C = res;
3208 flag_V = (src ^ dst) & (res ^ dst);
3209 flag_NotZ = res & 0xFF;
3222 adr += AREG((Opcode >> 0) & 7);
3224 READ_BYTE_F(adr, dst)
3226 flag_N = flag_C = res;
3227 flag_V = (src ^ dst) & (res ^ dst);
3228 flag_NotZ = res & 0xFF;
3240 adr = AREG((Opcode >> 0) & 7);
3243 READ_BYTE_F(adr, dst)
3245 flag_N = flag_C = res;
3246 flag_V = (src ^ dst) & (res ^ dst);
3247 flag_NotZ = res & 0xFF;
3261 READ_BYTE_F(adr, dst)
3263 flag_N = flag_C = res;
3264 flag_V = (src ^ dst) & (res ^ dst);
3265 flag_NotZ = res & 0xFF;
3279 READ_BYTE_F(adr, dst)
3281 flag_N = flag_C = res;
3282 flag_V = (src ^ dst) & (res ^ dst);
3283 flag_NotZ = res & 0xFF;
3298 READ_BYTE_F(adr, dst)
3300 flag_N = flag_C = res;
3301 flag_V = (src ^ dst) & (res ^ dst);
3302 flag_NotZ = res & 0xFF;
3317 READ_BYTE_F(adr, dst)
3319 flag_N = flag_C = res;
3320 flag_V = (src ^ dst) & (res ^ dst);
3321 flag_NotZ = res & 0xFF;
3333 dst = DREGu16((Opcode >> 0) & 7);
3335 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
3336 flag_N = flag_C = res >> 8;
3337 flag_NotZ = res & 0xFFFF;
3348 adr = AREG((Opcode >> 0) & 7);
3350 READ_WORD_F(adr, dst)
3352 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
3353 flag_N = flag_C = res >> 8;
3354 flag_NotZ = res & 0xFFFF;
3366 adr = AREG((Opcode >> 0) & 7);
3367 AREG((Opcode >> 0) & 7) += 2;
3369 READ_WORD_F(adr, dst)
3371 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
3372 flag_N = flag_C = res >> 8;
3373 flag_NotZ = res & 0xFFFF;
3385 adr = AREG((Opcode >> 0) & 7) - 2;
3386 AREG((Opcode >> 0) & 7) = adr;
3388 READ_WORD_F(adr, dst)
3390 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
3391 flag_N = flag_C = res >> 8;
3392 flag_NotZ = res & 0xFFFF;
3405 adr += AREG((Opcode >> 0) & 7);
3407 READ_WORD_F(adr, dst)
3409 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
3410 flag_N = flag_C = res >> 8;
3411 flag_NotZ = res & 0xFFFF;
3423 adr = AREG((Opcode >> 0) & 7);
3426 READ_WORD_F(adr, dst)
3428 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
3429 flag_N = flag_C = res >> 8;
3430 flag_NotZ = res & 0xFFFF;
3444 READ_WORD_F(adr, dst)
3446 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
3447 flag_N = flag_C = res >> 8;
3448 flag_NotZ = res & 0xFFFF;
3462 READ_WORD_F(adr, dst)
3464 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
3465 flag_N = flag_C = res >> 8;
3466 flag_NotZ = res & 0xFFFF;
3481 READ_WORD_F(adr, dst)
3483 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
3484 flag_N = flag_C = res >> 8;
3485 flag_NotZ = res & 0xFFFF;
3500 READ_WORD_F(adr, dst)
3502 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
3503 flag_N = flag_C = res >> 8;
3504 flag_NotZ = res & 0xFFFF;
3516 dst = DREGu32((Opcode >> 0) & 7);
3519 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
3520 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
3532 adr = AREG((Opcode >> 0) & 7);
3534 READ_LONG_F(adr, dst)
3537 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
3538 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
3551 adr = AREG((Opcode >> 0) & 7);
3552 AREG((Opcode >> 0) & 7) += 4;
3554 READ_LONG_F(adr, dst)
3557 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
3558 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
3571 adr = AREG((Opcode >> 0) & 7) - 4;
3572 AREG((Opcode >> 0) & 7) = adr;
3574 READ_LONG_F(adr, dst)
3577 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
3578 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
3592 adr += AREG((Opcode >> 0) & 7);
3594 READ_LONG_F(adr, dst)
3597 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
3598 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
3611 adr = AREG((Opcode >> 0) & 7);
3614 READ_LONG_F(adr, dst)
3617 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
3618 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
3633 READ_LONG_F(adr, dst)
3636 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
3637 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
3652 READ_LONG_F(adr, dst)
3655 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
3656 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
3672 READ_LONG_F(adr, dst)
3675 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
3676 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
3692 READ_LONG_F(adr, dst)
3695 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
3696 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
3709 src = 1 << (src & 31);
3710 res = DREGu32((Opcode >> 0) & 7);
3711 flag_NotZ = res & src;
3722 src = 1 << (src & 7);
3723 adr = AREG((Opcode >> 0) & 7);
3725 READ_BYTE_F(adr, res)
3726 flag_NotZ = res & src;
3738 src = 1 << (src & 7);
3739 adr = AREG((Opcode >> 0) & 7);
3740 AREG((Opcode >> 0) & 7) += 1;
3742 READ_BYTE_F(adr, res)
3743 flag_NotZ = res & src;
3755 src = 1 << (src & 7);
3756 adr = AREG((Opcode >> 0) & 7) - 1;
3757 AREG((Opcode >> 0) & 7) = adr;
3759 READ_BYTE_F(adr, res)
3760 flag_NotZ = res & src;
3772 src = 1 << (src & 7);
3774 adr += AREG((Opcode >> 0) & 7);
3776 READ_BYTE_F(adr, res)
3777 flag_NotZ = res & src;
3789 src = 1 << (src & 7);
3790 adr = AREG((Opcode >> 0) & 7);
3793 READ_BYTE_F(adr, res)
3794 flag_NotZ = res & src;
3806 src = 1 << (src & 7);
3809 READ_BYTE_F(adr, res)
3810 flag_NotZ = res & src;
3822 src = 1 << (src & 7);
3825 READ_BYTE_F(adr, res)
3826 flag_NotZ = res & src;
3838 src = 1 << (src & 7);
3839 adr = GET_SWORD + GET_PC;
3842 READ_BYTE_F(adr, res)
3843 flag_NotZ = res & src;
3855 src = 1 << (src & 7);
3856 adr = (uptr)(PC) - BasePC;
3859 READ_BYTE_F(adr, res)
3860 flag_NotZ = res & src;
3872 src = 1 << (src & 7);
3876 READ_BYTE_F(adr, res)
3877 flag_NotZ = res & src;
3889 src = 1 << (src & 7);
3893 READ_BYTE_F(adr, res)
3894 flag_NotZ = res & src;
3906 src = 1 << (src & 31);
3907 res = DREGu32((Opcode >> 0) & 7);
3908 flag_NotZ = res & src;
3910 DREGu32((Opcode >> 0) & 7) = res;
3911 #ifdef USE_CYCLONE_TIMING
3912 if (src >> 16) ctx->io_cycle_counter -= 2;
3926 src = 1 << (src & 7);
3927 adr = AREG((Opcode >> 0) & 7);
3929 READ_BYTE_F(adr, res)
3930 flag_NotZ = res & src;
3932 WRITE_BYTE_F(adr, res)
3944 src = 1 << (src & 7);
3945 adr = AREG((Opcode >> 0) & 7);
3946 AREG((Opcode >> 0) & 7) += 1;
3948 READ_BYTE_F(adr, res)
3949 flag_NotZ = res & src;
3951 WRITE_BYTE_F(adr, res)
3963 src = 1 << (src & 7);
3964 adr = AREG((Opcode >> 0) & 7) - 1;
3965 AREG((Opcode >> 0) & 7) = adr;
3967 READ_BYTE_F(adr, res)
3968 flag_NotZ = res & src;
3970 WRITE_BYTE_F(adr, res)
3982 src = 1 << (src & 7);
3984 adr += AREG((Opcode >> 0) & 7);
3986 READ_BYTE_F(adr, res)
3987 flag_NotZ = res & src;
3989 WRITE_BYTE_F(adr, res)
4001 src = 1 << (src & 7);
4002 adr = AREG((Opcode >> 0) & 7);
4005 READ_BYTE_F(adr, res)
4006 flag_NotZ = res & src;
4008 WRITE_BYTE_F(adr, res)
4020 src = 1 << (src & 7);
4023 READ_BYTE_F(adr, res)
4024 flag_NotZ = res & src;
4026 WRITE_BYTE_F(adr, res)
4038 src = 1 << (src & 7);
4041 READ_BYTE_F(adr, res)
4042 flag_NotZ = res & src;
4044 WRITE_BYTE_F(adr, res)
4056 src = 1 << (src & 7);
4060 READ_BYTE_F(adr, res)
4061 flag_NotZ = res & src;
4063 WRITE_BYTE_F(adr, res)
4075 src = 1 << (src & 7);
4079 READ_BYTE_F(adr, res)
4080 flag_NotZ = res & src;
4082 WRITE_BYTE_F(adr, res)
4094 src = 1 << (src & 31);
4095 res = DREGu32((Opcode >> 0) & 7);
4096 flag_NotZ = res & src;
4098 DREGu32((Opcode >> 0) & 7) = res;
4099 #ifdef USE_CYCLONE_TIMING
4100 if (src >> 16) ctx->io_cycle_counter -= 2;
4114 src = 1 << (src & 7);
4115 adr = AREG((Opcode >> 0) & 7);
4117 READ_BYTE_F(adr, res)
4118 flag_NotZ = res & src;
4120 WRITE_BYTE_F(adr, res)
4132 src = 1 << (src & 7);
4133 adr = AREG((Opcode >> 0) & 7);
4134 AREG((Opcode >> 0) & 7) += 1;
4136 READ_BYTE_F(adr, res)
4137 flag_NotZ = res & src;
4139 WRITE_BYTE_F(adr, res)
4151 src = 1 << (src & 7);
4152 adr = AREG((Opcode >> 0) & 7) - 1;
4153 AREG((Opcode >> 0) & 7) = adr;
4155 READ_BYTE_F(adr, res)
4156 flag_NotZ = res & src;
4158 WRITE_BYTE_F(adr, res)
4170 src = 1 << (src & 7);
4172 adr += AREG((Opcode >> 0) & 7);
4174 READ_BYTE_F(adr, res)
4175 flag_NotZ = res & src;
4177 WRITE_BYTE_F(adr, res)
4189 src = 1 << (src & 7);
4190 adr = AREG((Opcode >> 0) & 7);
4193 READ_BYTE_F(adr, res)
4194 flag_NotZ = res & src;
4196 WRITE_BYTE_F(adr, res)
4208 src = 1 << (src & 7);
4211 READ_BYTE_F(adr, res)
4212 flag_NotZ = res & src;
4214 WRITE_BYTE_F(adr, res)
4226 src = 1 << (src & 7);
4229 READ_BYTE_F(adr, res)
4230 flag_NotZ = res & src;
4232 WRITE_BYTE_F(adr, res)
4244 src = 1 << (src & 7);
4248 READ_BYTE_F(adr, res)
4249 flag_NotZ = res & src;
4251 WRITE_BYTE_F(adr, res)
4263 src = 1 << (src & 7);
4267 READ_BYTE_F(adr, res)
4268 flag_NotZ = res & src;
4270 WRITE_BYTE_F(adr, res)
4282 src = 1 << (src & 31);
4283 res = DREGu32((Opcode >> 0) & 7);
4284 flag_NotZ = res & src;
4286 DREGu32((Opcode >> 0) & 7) = res;
4287 #ifdef USE_CYCLONE_TIMING
4288 if (src >> 16) ctx->io_cycle_counter -= 2;
4302 src = 1 << (src & 7);
4303 adr = AREG((Opcode >> 0) & 7);
4305 READ_BYTE_F(adr, res)
4306 flag_NotZ = res & src;
4308 WRITE_BYTE_F(adr, res)
4320 src = 1 << (src & 7);
4321 adr = AREG((Opcode >> 0) & 7);
4322 AREG((Opcode >> 0) & 7) += 1;
4324 READ_BYTE_F(adr, res)
4325 flag_NotZ = res & src;
4327 WRITE_BYTE_F(adr, res)
4339 src = 1 << (src & 7);
4340 adr = AREG((Opcode >> 0) & 7) - 1;
4341 AREG((Opcode >> 0) & 7) = adr;
4343 READ_BYTE_F(adr, res)
4344 flag_NotZ = res & src;
4346 WRITE_BYTE_F(adr, res)
4358 src = 1 << (src & 7);
4360 adr += AREG((Opcode >> 0) & 7);
4362 READ_BYTE_F(adr, res)
4363 flag_NotZ = res & src;
4365 WRITE_BYTE_F(adr, res)
4377 src = 1 << (src & 7);
4378 adr = AREG((Opcode >> 0) & 7);
4381 READ_BYTE_F(adr, res)
4382 flag_NotZ = res & src;
4384 WRITE_BYTE_F(adr, res)
4396 src = 1 << (src & 7);
4399 READ_BYTE_F(adr, res)
4400 flag_NotZ = res & src;
4402 WRITE_BYTE_F(adr, res)
4414 src = 1 << (src & 7);
4417 READ_BYTE_F(adr, res)
4418 flag_NotZ = res & src;
4420 WRITE_BYTE_F(adr, res)
4432 src = 1 << (src & 7);
4436 READ_BYTE_F(adr, res)
4437 flag_NotZ = res & src;
4439 WRITE_BYTE_F(adr, res)
4451 src = 1 << (src & 7);
4455 READ_BYTE_F(adr, res)
4456 flag_NotZ = res & src;
4458 WRITE_BYTE_F(adr, res)
4469 src = DREGu32((Opcode >> 9) & 7);
4470 src = 1 << (src & 31);
4471 res = DREGu32((Opcode >> 0) & 7);
4472 flag_NotZ = res & src;
4482 src = DREGu8((Opcode >> 9) & 7);
4483 src = 1 << (src & 7);
4484 adr = AREG((Opcode >> 0) & 7);
4486 READ_BYTE_F(adr, res)
4487 flag_NotZ = res & src;
4498 src = DREGu8((Opcode >> 9) & 7);
4499 src = 1 << (src & 7);
4500 adr = AREG((Opcode >> 0) & 7);
4501 AREG((Opcode >> 0) & 7) += 1;
4503 READ_BYTE_F(adr, res)
4504 flag_NotZ = res & src;
4515 src = DREGu8((Opcode >> 9) & 7);
4516 src = 1 << (src & 7);
4517 adr = AREG((Opcode >> 0) & 7) - 1;
4518 AREG((Opcode >> 0) & 7) = adr;
4520 READ_BYTE_F(adr, res)
4521 flag_NotZ = res & src;
4532 src = DREGu8((Opcode >> 9) & 7);
4533 src = 1 << (src & 7);
4535 adr += AREG((Opcode >> 0) & 7);
4537 READ_BYTE_F(adr, res)
4538 flag_NotZ = res & src;
4549 src = DREGu8((Opcode >> 9) & 7);
4550 src = 1 << (src & 7);
4551 adr = AREG((Opcode >> 0) & 7);
4554 READ_BYTE_F(adr, res)
4555 flag_NotZ = res & src;
4566 src = DREGu8((Opcode >> 9) & 7);
4567 src = 1 << (src & 7);
4570 READ_BYTE_F(adr, res)
4571 flag_NotZ = res & src;
4582 src = DREGu8((Opcode >> 9) & 7);
4583 src = 1 << (src & 7);
4586 READ_BYTE_F(adr, res)
4587 flag_NotZ = res & src;
4598 src = DREGu8((Opcode >> 9) & 7);
4599 src = 1 << (src & 7);
4600 adr = GET_SWORD + GET_PC;
4603 READ_BYTE_F(adr, res)
4604 flag_NotZ = res & src;
4615 src = DREGu8((Opcode >> 9) & 7);
4616 src = 1 << (src & 7);
4617 adr = (uptr)(PC) - BasePC;
4620 READ_BYTE_F(adr, res)
4621 flag_NotZ = res & src;
4632 src = DREGu8((Opcode >> 9) & 7);
4633 src = 1 << (src & 7);
4635 flag_NotZ = res & src;
4645 src = DREGu8((Opcode >> 9) & 7);
4646 src = 1 << (src & 7);
4650 READ_BYTE_F(adr, res)
4651 flag_NotZ = res & src;
4662 src = DREGu8((Opcode >> 9) & 7);
4663 src = 1 << (src & 7);
4667 READ_BYTE_F(adr, res)
4668 flag_NotZ = res & src;
4679 src = DREGu32((Opcode >> 9) & 7);
4680 src = 1 << (src & 31);
4681 res = DREGu32((Opcode >> 0) & 7);
4682 flag_NotZ = res & src;
4684 DREGu32((Opcode >> 0) & 7) = res;
4685 #ifdef USE_CYCLONE_TIMING
4686 if (src >> 16) ctx->io_cycle_counter -= 2;
4699 src = DREGu8((Opcode >> 9) & 7);
4700 src = 1 << (src & 7);
4701 adr = AREG((Opcode >> 0) & 7);
4703 READ_BYTE_F(adr, res)
4704 flag_NotZ = res & src;
4706 WRITE_BYTE_F(adr, res)
4717 src = DREGu8((Opcode >> 9) & 7);
4718 src = 1 << (src & 7);
4719 adr = AREG((Opcode >> 0) & 7);
4720 AREG((Opcode >> 0) & 7) += 1;
4722 READ_BYTE_F(adr, res)
4723 flag_NotZ = res & src;
4725 WRITE_BYTE_F(adr, res)
4736 src = DREGu8((Opcode >> 9) & 7);
4737 src = 1 << (src & 7);
4738 adr = AREG((Opcode >> 0) & 7) - 1;
4739 AREG((Opcode >> 0) & 7) = adr;
4741 READ_BYTE_F(adr, res)
4742 flag_NotZ = res & src;
4744 WRITE_BYTE_F(adr, res)
4755 src = DREGu8((Opcode >> 9) & 7);
4756 src = 1 << (src & 7);
4758 adr += AREG((Opcode >> 0) & 7);
4760 READ_BYTE_F(adr, res)
4761 flag_NotZ = res & src;
4763 WRITE_BYTE_F(adr, res)
4774 src = DREGu8((Opcode >> 9) & 7);
4775 src = 1 << (src & 7);
4776 adr = AREG((Opcode >> 0) & 7);
4779 READ_BYTE_F(adr, res)
4780 flag_NotZ = res & src;
4782 WRITE_BYTE_F(adr, res)
4793 src = DREGu8((Opcode >> 9) & 7);
4794 src = 1 << (src & 7);
4797 READ_BYTE_F(adr, res)
4798 flag_NotZ = res & src;
4800 WRITE_BYTE_F(adr, res)
4811 src = DREGu8((Opcode >> 9) & 7);
4812 src = 1 << (src & 7);
4815 READ_BYTE_F(adr, res)
4816 flag_NotZ = res & src;
4818 WRITE_BYTE_F(adr, res)
4829 src = DREGu8((Opcode >> 9) & 7);
4830 src = 1 << (src & 7);
4834 READ_BYTE_F(adr, res)
4835 flag_NotZ = res & src;
4837 WRITE_BYTE_F(adr, res)
4848 src = DREGu8((Opcode >> 9) & 7);
4849 src = 1 << (src & 7);
4853 READ_BYTE_F(adr, res)
4854 flag_NotZ = res & src;
4856 WRITE_BYTE_F(adr, res)
4867 src = DREGu32((Opcode >> 9) & 7);
4868 src = 1 << (src & 31);
4869 res = DREGu32((Opcode >> 0) & 7);
4870 flag_NotZ = res & src;
4872 DREGu32((Opcode >> 0) & 7) = res;
4873 #ifdef USE_CYCLONE_TIMING
4874 if (src >> 16) ctx->io_cycle_counter -= 2;
4887 src = DREGu8((Opcode >> 9) & 7);
4888 src = 1 << (src & 7);
4889 adr = AREG((Opcode >> 0) & 7);
4891 READ_BYTE_F(adr, res)
4892 flag_NotZ = res & src;
4894 WRITE_BYTE_F(adr, res)
4905 src = DREGu8((Opcode >> 9) & 7);
4906 src = 1 << (src & 7);
4907 adr = AREG((Opcode >> 0) & 7);
4908 AREG((Opcode >> 0) & 7) += 1;
4910 READ_BYTE_F(adr, res)
4911 flag_NotZ = res & src;
4913 WRITE_BYTE_F(adr, res)
4924 src = DREGu8((Opcode >> 9) & 7);
4925 src = 1 << (src & 7);
4926 adr = AREG((Opcode >> 0) & 7) - 1;
4927 AREG((Opcode >> 0) & 7) = adr;
4929 READ_BYTE_F(adr, res)
4930 flag_NotZ = res & src;
4932 WRITE_BYTE_F(adr, res)
4943 src = DREGu8((Opcode >> 9) & 7);
4944 src = 1 << (src & 7);
4946 adr += AREG((Opcode >> 0) & 7);
4948 READ_BYTE_F(adr, res)
4949 flag_NotZ = res & src;
4951 WRITE_BYTE_F(adr, res)
4962 src = DREGu8((Opcode >> 9) & 7);
4963 src = 1 << (src & 7);
4964 adr = AREG((Opcode >> 0) & 7);
4967 READ_BYTE_F(adr, res)
4968 flag_NotZ = res & src;
4970 WRITE_BYTE_F(adr, res)
4981 src = DREGu8((Opcode >> 9) & 7);
4982 src = 1 << (src & 7);
4985 READ_BYTE_F(adr, res)
4986 flag_NotZ = res & src;
4988 WRITE_BYTE_F(adr, res)
4999 src = DREGu8((Opcode >> 9) & 7);
5000 src = 1 << (src & 7);
5003 READ_BYTE_F(adr, res)
5004 flag_NotZ = res & src;
5006 WRITE_BYTE_F(adr, res)
5017 src = DREGu8((Opcode >> 9) & 7);
5018 src = 1 << (src & 7);
5022 READ_BYTE_F(adr, res)
5023 flag_NotZ = res & src;
5025 WRITE_BYTE_F(adr, res)
5036 src = DREGu8((Opcode >> 9) & 7);
5037 src = 1 << (src & 7);
5041 READ_BYTE_F(adr, res)
5042 flag_NotZ = res & src;
5044 WRITE_BYTE_F(adr, res)
5055 src = DREGu32((Opcode >> 9) & 7);
5056 src = 1 << (src & 31);
5057 res = DREGu32((Opcode >> 0) & 7);
5058 flag_NotZ = res & src;
5060 DREGu32((Opcode >> 0) & 7) = res;
5061 #ifdef USE_CYCLONE_TIMING
5062 if (src >> 16) ctx->io_cycle_counter -= 2;
5075 src = DREGu8((Opcode >> 9) & 7);
5076 src = 1 << (src & 7);
5077 adr = AREG((Opcode >> 0) & 7);
5079 READ_BYTE_F(adr, res)
5080 flag_NotZ = res & src;
5082 WRITE_BYTE_F(adr, res)
5093 src = DREGu8((Opcode >> 9) & 7);
5094 src = 1 << (src & 7);
5095 adr = AREG((Opcode >> 0) & 7);
5096 AREG((Opcode >> 0) & 7) += 1;
5098 READ_BYTE_F(adr, res)
5099 flag_NotZ = res & src;
5101 WRITE_BYTE_F(adr, res)
5112 src = DREGu8((Opcode >> 9) & 7);
5113 src = 1 << (src & 7);
5114 adr = AREG((Opcode >> 0) & 7) - 1;
5115 AREG((Opcode >> 0) & 7) = adr;
5117 READ_BYTE_F(adr, res)
5118 flag_NotZ = res & src;
5120 WRITE_BYTE_F(adr, res)
5131 src = DREGu8((Opcode >> 9) & 7);
5132 src = 1 << (src & 7);
5134 adr += AREG((Opcode >> 0) & 7);
5136 READ_BYTE_F(adr, res)
5137 flag_NotZ = res & src;
5139 WRITE_BYTE_F(adr, res)
5150 src = DREGu8((Opcode >> 9) & 7);
5151 src = 1 << (src & 7);
5152 adr = AREG((Opcode >> 0) & 7);
5155 READ_BYTE_F(adr, res)
5156 flag_NotZ = res & src;
5158 WRITE_BYTE_F(adr, res)
5169 src = DREGu8((Opcode >> 9) & 7);
5170 src = 1 << (src & 7);
5173 READ_BYTE_F(adr, res)
5174 flag_NotZ = res & src;
5176 WRITE_BYTE_F(adr, res)
5187 src = DREGu8((Opcode >> 9) & 7);
5188 src = 1 << (src & 7);
5191 READ_BYTE_F(adr, res)
5192 flag_NotZ = res & src;
5194 WRITE_BYTE_F(adr, res)
5205 src = DREGu8((Opcode >> 9) & 7);
5206 src = 1 << (src & 7);
5210 READ_BYTE_F(adr, res)
5211 flag_NotZ = res & src;
5213 WRITE_BYTE_F(adr, res)
5224 src = DREGu8((Opcode >> 9) & 7);
5225 src = 1 << (src & 7);
5229 READ_BYTE_F(adr, res)
5230 flag_NotZ = res & src;
5232 WRITE_BYTE_F(adr, res)
5244 adr += AREG((Opcode >> 0) & 7);
5246 READ_BYTE_F(adr + 0, res)
5247 READ_BYTE_F(adr + 2, src)
5248 DREGu16((Opcode >> 9) & 7) = (res << 8) | src;
5250 #ifdef USE_CYCLONE_TIMING
5264 adr += AREG((Opcode >> 0) & 7);
5266 READ_BYTE_F(adr, res)
5269 READ_BYTE_F(adr, src)
5272 READ_BYTE_F(adr, src)
5275 READ_BYTE_F(adr, src)
5276 DREG((Opcode >> 9) & 7) = res | src;
5278 #ifdef USE_CYCLONE_TIMING
5291 res = DREGu32((Opcode >> 9) & 7);
5293 adr += AREG((Opcode >> 0) & 7);
5295 WRITE_BYTE_F(adr + 0, res >> 8)
5296 WRITE_BYTE_F(adr + 2, res >> 0)
5298 #ifdef USE_CYCLONE_TIMING
5311 res = DREGu32((Opcode >> 9) & 7);
5313 adr += AREG((Opcode >> 0) & 7);
5315 WRITE_BYTE_F(adr, res >> 24)
5317 WRITE_BYTE_F(adr, res >> 16)
5319 WRITE_BYTE_F(adr, res >> 8)
5321 WRITE_BYTE_F(adr, res >> 0)
5323 #ifdef USE_CYCLONE_TIMING
5336 res = DREGu8((Opcode >> 0) & 7);
5341 DREGu8((Opcode >> 9) & 7) = res;
5351 res = DREGu8((Opcode >> 0) & 7);
5356 adr = AREG((Opcode >> 9) & 7);
5358 WRITE_BYTE_F(adr, res)
5369 res = DREGu8((Opcode >> 0) & 7);
5374 adr = AREG((Opcode >> 9) & 7);
5375 AREG((Opcode >> 9) & 7) += 1;
5377 WRITE_BYTE_F(adr, res)
5388 res = DREGu8((Opcode >> 0) & 7);
5393 adr = AREG((Opcode >> 9) & 7) - 1;
5394 AREG((Opcode >> 9) & 7) = adr;
5396 WRITE_BYTE_F(adr, res)
5407 res = DREGu8((Opcode >> 0) & 7);
5413 adr += AREG((Opcode >> 9) & 7);
5415 WRITE_BYTE_F(adr, res)
5426 res = DREGu8((Opcode >> 0) & 7);
5431 adr = AREG((Opcode >> 9) & 7);
5434 WRITE_BYTE_F(adr, res)
5445 res = DREGu8((Opcode >> 0) & 7);
5452 WRITE_BYTE_F(adr, res)
5463 res = DREGu8((Opcode >> 0) & 7);
5470 WRITE_BYTE_F(adr, res)
5481 res = DREGu8((Opcode >> 0) & 7);
5489 WRITE_BYTE_F(adr, res)
5500 res = DREGu8((Opcode >> 0) & 7);
5508 WRITE_BYTE_F(adr, res)
5520 // can't read byte from Ax registers !
5521 ctx->execinfo |= M68K_FAULTED;
5522 ctx->io_cycle_counter = 0;
5524 goto famec_Exec_End;
5529 DREGu8((Opcode >> 9) & 7) = res;
5540 // can't read byte from Ax registers !
5541 ctx->execinfo |= M68K_FAULTED;
5542 ctx->io_cycle_counter = 0;
5544 goto famec_Exec_End;
5549 adr = AREG((Opcode >> 9) & 7);
5551 WRITE_BYTE_F(adr, res)
5563 // can't read byte from Ax registers !
5564 ctx->execinfo |= M68K_FAULTED;
5565 ctx->io_cycle_counter = 0;
5567 goto famec_Exec_End;
5572 adr = AREG((Opcode >> 9) & 7);
5573 AREG((Opcode >> 9) & 7) += 1;
5575 WRITE_BYTE_F(adr, res)
5587 // can't read byte from Ax registers !
5588 ctx->execinfo |= M68K_FAULTED;
5589 ctx->io_cycle_counter = 0;
5591 goto famec_Exec_End;
5596 adr = AREG((Opcode >> 9) & 7) - 1;
5597 AREG((Opcode >> 9) & 7) = adr;
5599 WRITE_BYTE_F(adr, res)
5611 // can't read byte from Ax registers !
5612 ctx->execinfo |= M68K_FAULTED;
5613 ctx->io_cycle_counter = 0;
5615 goto famec_Exec_End;
5621 adr += AREG((Opcode >> 9) & 7);
5623 WRITE_BYTE_F(adr, res)
5635 // can't read byte from Ax registers !
5636 ctx->execinfo |= M68K_FAULTED;
5637 ctx->io_cycle_counter = 0;
5639 goto famec_Exec_End;
5644 adr = AREG((Opcode >> 9) & 7);
5647 WRITE_BYTE_F(adr, res)
5659 // can't read byte from Ax registers !
5660 ctx->execinfo |= M68K_FAULTED;
5661 ctx->io_cycle_counter = 0;
5663 goto famec_Exec_End;
5670 WRITE_BYTE_F(adr, res)
5682 // can't read byte from Ax registers !
5683 ctx->execinfo |= M68K_FAULTED;
5684 ctx->io_cycle_counter = 0;
5686 goto famec_Exec_End;
5693 WRITE_BYTE_F(adr, res)
5705 // can't read byte from Ax registers !
5706 ctx->execinfo |= M68K_FAULTED;
5707 ctx->io_cycle_counter = 0;
5709 goto famec_Exec_End;
5717 WRITE_BYTE_F(adr, res)
5729 // can't read byte from Ax registers !
5730 ctx->execinfo |= M68K_FAULTED;
5731 ctx->io_cycle_counter = 0;
5733 goto famec_Exec_End;
5741 WRITE_BYTE_F(adr, res)
5754 adr = AREG((Opcode >> 0) & 7);
5756 READ_BYTE_F(adr, res)
5761 DREGu8((Opcode >> 9) & 7) = res;
5772 adr = AREG((Opcode >> 0) & 7);
5774 READ_BYTE_F(adr, res)
5779 adr = AREG((Opcode >> 9) & 7);
5780 WRITE_BYTE_F(adr, res)
5791 adr = AREG((Opcode >> 0) & 7);
5793 READ_BYTE_F(adr, res)
5798 adr = AREG((Opcode >> 9) & 7);
5799 AREG((Opcode >> 9) & 7) += 1;
5800 WRITE_BYTE_F(adr, res)
5811 adr = AREG((Opcode >> 0) & 7);
5813 READ_BYTE_F(adr, res)
5818 adr = AREG((Opcode >> 9) & 7) - 1;
5819 AREG((Opcode >> 9) & 7) = adr;
5820 WRITE_BYTE_F(adr, res)
5831 adr = AREG((Opcode >> 0) & 7);
5833 READ_BYTE_F(adr, res)
5839 adr += AREG((Opcode >> 9) & 7);
5840 WRITE_BYTE_F(adr, res)
5851 adr = AREG((Opcode >> 0) & 7);
5853 READ_BYTE_F(adr, res)
5858 adr = AREG((Opcode >> 9) & 7);
5860 WRITE_BYTE_F(adr, res)
5871 adr = AREG((Opcode >> 0) & 7);
5873 READ_BYTE_F(adr, res)
5879 WRITE_BYTE_F(adr, res)
5890 adr = AREG((Opcode >> 0) & 7);
5892 READ_BYTE_F(adr, res)
5898 WRITE_BYTE_F(adr, res)
5909 adr = AREG((Opcode >> 0) & 7);
5911 READ_BYTE_F(adr, res)
5918 WRITE_BYTE_F(adr, res)
5929 adr = AREG((Opcode >> 0) & 7);
5931 READ_BYTE_F(adr, res)
5938 WRITE_BYTE_F(adr, res)
5949 adr = AREG((Opcode >> 0) & 7);
5950 AREG((Opcode >> 0) & 7) += 1;
5952 READ_BYTE_F(adr, res)
5957 DREGu8((Opcode >> 9) & 7) = res;
5968 adr = AREG((Opcode >> 0) & 7);
5969 AREG((Opcode >> 0) & 7) += 1;
5971 READ_BYTE_F(adr, res)
5976 adr = AREG((Opcode >> 9) & 7);
5977 WRITE_BYTE_F(adr, res)
5988 adr = AREG((Opcode >> 0) & 7);
5989 AREG((Opcode >> 0) & 7) += 1;
5991 READ_BYTE_F(adr, res)
5996 adr = AREG((Opcode >> 9) & 7);
5997 AREG((Opcode >> 9) & 7) += 1;
5998 WRITE_BYTE_F(adr, res)
6009 adr = AREG((Opcode >> 0) & 7);
6010 AREG((Opcode >> 0) & 7) += 1;
6012 READ_BYTE_F(adr, res)
6017 adr = AREG((Opcode >> 9) & 7) - 1;
6018 AREG((Opcode >> 9) & 7) = adr;
6019 WRITE_BYTE_F(adr, res)
6030 adr = AREG((Opcode >> 0) & 7);
6031 AREG((Opcode >> 0) & 7) += 1;
6033 READ_BYTE_F(adr, res)
6039 adr += AREG((Opcode >> 9) & 7);
6040 WRITE_BYTE_F(adr, res)
6051 adr = AREG((Opcode >> 0) & 7);
6052 AREG((Opcode >> 0) & 7) += 1;
6054 READ_BYTE_F(adr, res)
6059 adr = AREG((Opcode >> 9) & 7);
6061 WRITE_BYTE_F(adr, res)
6072 adr = AREG((Opcode >> 0) & 7);
6073 AREG((Opcode >> 0) & 7) += 1;
6075 READ_BYTE_F(adr, res)
6081 WRITE_BYTE_F(adr, res)
6092 adr = AREG((Opcode >> 0) & 7);
6093 AREG((Opcode >> 0) & 7) += 1;
6095 READ_BYTE_F(adr, res)
6101 WRITE_BYTE_F(adr, res)
6112 adr = AREG((Opcode >> 0) & 7);
6113 AREG((Opcode >> 0) & 7) += 1;
6115 READ_BYTE_F(adr, res)
6122 WRITE_BYTE_F(adr, res)
6133 adr = AREG((Opcode >> 0) & 7);
6134 AREG((Opcode >> 0) & 7) += 1;
6136 READ_BYTE_F(adr, res)
6143 WRITE_BYTE_F(adr, res)
6154 adr = AREG((Opcode >> 0) & 7) - 1;
6155 AREG((Opcode >> 0) & 7) = adr;
6157 READ_BYTE_F(adr, res)
6162 DREGu8((Opcode >> 9) & 7) = res;
6173 adr = AREG((Opcode >> 0) & 7) - 1;
6174 AREG((Opcode >> 0) & 7) = adr;
6176 READ_BYTE_F(adr, res)
6181 adr = AREG((Opcode >> 9) & 7);
6182 WRITE_BYTE_F(adr, res)
6193 adr = AREG((Opcode >> 0) & 7) - 1;
6194 AREG((Opcode >> 0) & 7) = adr;
6196 READ_BYTE_F(adr, res)
6201 adr = AREG((Opcode >> 9) & 7);
6202 AREG((Opcode >> 9) & 7) += 1;
6203 WRITE_BYTE_F(adr, res)
6214 adr = AREG((Opcode >> 0) & 7) - 1;
6215 AREG((Opcode >> 0) & 7) = adr;
6217 READ_BYTE_F(adr, res)
6222 adr = AREG((Opcode >> 9) & 7) - 1;
6223 AREG((Opcode >> 9) & 7) = adr;
6224 WRITE_BYTE_F(adr, res)
6235 adr = AREG((Opcode >> 0) & 7) - 1;
6236 AREG((Opcode >> 0) & 7) = adr;
6238 READ_BYTE_F(adr, res)
6244 adr += AREG((Opcode >> 9) & 7);
6245 WRITE_BYTE_F(adr, res)
6256 adr = AREG((Opcode >> 0) & 7) - 1;
6257 AREG((Opcode >> 0) & 7) = adr;
6259 READ_BYTE_F(adr, res)
6264 adr = AREG((Opcode >> 9) & 7);
6266 WRITE_BYTE_F(adr, res)
6277 adr = AREG((Opcode >> 0) & 7) - 1;
6278 AREG((Opcode >> 0) & 7) = adr;
6280 READ_BYTE_F(adr, res)
6286 WRITE_BYTE_F(adr, res)
6297 adr = AREG((Opcode >> 0) & 7) - 1;
6298 AREG((Opcode >> 0) & 7) = adr;
6300 READ_BYTE_F(adr, res)
6306 WRITE_BYTE_F(adr, res)
6317 adr = AREG((Opcode >> 0) & 7) - 1;
6318 AREG((Opcode >> 0) & 7) = adr;
6320 READ_BYTE_F(adr, res)
6327 WRITE_BYTE_F(adr, res)
6338 adr = AREG((Opcode >> 0) & 7) - 1;
6339 AREG((Opcode >> 0) & 7) = adr;
6341 READ_BYTE_F(adr, res)
6348 WRITE_BYTE_F(adr, res)
6360 adr += AREG((Opcode >> 0) & 7);
6362 READ_BYTE_F(adr, res)
6367 DREGu8((Opcode >> 9) & 7) = res;
6379 adr += AREG((Opcode >> 0) & 7);
6381 READ_BYTE_F(adr, res)
6386 adr = AREG((Opcode >> 9) & 7);
6387 WRITE_BYTE_F(adr, res)
6399 adr += AREG((Opcode >> 0) & 7);
6401 READ_BYTE_F(adr, res)
6406 adr = AREG((Opcode >> 9) & 7);
6407 AREG((Opcode >> 9) & 7) += 1;
6408 WRITE_BYTE_F(adr, res)
6420 adr += AREG((Opcode >> 0) & 7);
6422 READ_BYTE_F(adr, res)
6427 adr = AREG((Opcode >> 9) & 7) - 1;
6428 AREG((Opcode >> 9) & 7) = adr;
6429 WRITE_BYTE_F(adr, res)
6441 adr += AREG((Opcode >> 0) & 7);
6443 READ_BYTE_F(adr, res)
6449 adr += AREG((Opcode >> 9) & 7);
6450 WRITE_BYTE_F(adr, res)
6462 adr += AREG((Opcode >> 0) & 7);
6464 READ_BYTE_F(adr, res)
6469 adr = AREG((Opcode >> 9) & 7);
6471 WRITE_BYTE_F(adr, res)
6483 adr += AREG((Opcode >> 0) & 7);
6485 READ_BYTE_F(adr, res)
6491 WRITE_BYTE_F(adr, res)
6503 adr += AREG((Opcode >> 0) & 7);
6505 READ_BYTE_F(adr, res)
6511 WRITE_BYTE_F(adr, res)
6523 adr += AREG((Opcode >> 0) & 7);
6525 READ_BYTE_F(adr, res)
6532 WRITE_BYTE_F(adr, res)
6544 adr += AREG((Opcode >> 0) & 7);
6546 READ_BYTE_F(adr, res)
6553 WRITE_BYTE_F(adr, res)
6564 adr = AREG((Opcode >> 0) & 7);
6567 READ_BYTE_F(adr, res)
6572 DREGu8((Opcode >> 9) & 7) = res;
6583 adr = AREG((Opcode >> 0) & 7);
6586 READ_BYTE_F(adr, res)
6591 adr = AREG((Opcode >> 9) & 7);
6592 WRITE_BYTE_F(adr, res)
6603 adr = AREG((Opcode >> 0) & 7);
6606 READ_BYTE_F(adr, res)
6611 adr = AREG((Opcode >> 9) & 7);
6612 AREG((Opcode >> 9) & 7) += 1;
6613 WRITE_BYTE_F(adr, res)
6624 adr = AREG((Opcode >> 0) & 7);
6627 READ_BYTE_F(adr, res)
6632 adr = AREG((Opcode >> 9) & 7) - 1;
6633 AREG((Opcode >> 9) & 7) = adr;
6634 WRITE_BYTE_F(adr, res)
6645 adr = AREG((Opcode >> 0) & 7);
6648 READ_BYTE_F(adr, res)
6654 adr += AREG((Opcode >> 9) & 7);
6655 WRITE_BYTE_F(adr, res)
6666 adr = AREG((Opcode >> 0) & 7);
6669 READ_BYTE_F(adr, res)
6674 adr = AREG((Opcode >> 9) & 7);
6676 WRITE_BYTE_F(adr, res)
6687 adr = AREG((Opcode >> 0) & 7);
6690 READ_BYTE_F(adr, res)
6696 WRITE_BYTE_F(adr, res)
6707 adr = AREG((Opcode >> 0) & 7);
6710 READ_BYTE_F(adr, res)
6716 WRITE_BYTE_F(adr, res)
6727 adr = AREG((Opcode >> 0) & 7);
6730 READ_BYTE_F(adr, res)
6737 WRITE_BYTE_F(adr, res)
6748 adr = AREG((Opcode >> 0) & 7);
6751 READ_BYTE_F(adr, res)
6758 WRITE_BYTE_F(adr, res)
6771 READ_BYTE_F(adr, res)
6776 DREGu8((Opcode >> 9) & 7) = res;
6789 READ_BYTE_F(adr, res)
6794 adr = AREG((Opcode >> 9) & 7);
6795 WRITE_BYTE_F(adr, res)
6808 READ_BYTE_F(adr, res)
6813 adr = AREG((Opcode >> 9) & 7);
6814 AREG((Opcode >> 9) & 7) += 1;
6815 WRITE_BYTE_F(adr, res)
6828 READ_BYTE_F(adr, res)
6833 adr = AREG((Opcode >> 9) & 7) - 1;
6834 AREG((Opcode >> 9) & 7) = adr;
6835 WRITE_BYTE_F(adr, res)
6848 READ_BYTE_F(adr, res)
6854 adr += AREG((Opcode >> 9) & 7);
6855 WRITE_BYTE_F(adr, res)
6868 READ_BYTE_F(adr, res)
6873 adr = AREG((Opcode >> 9) & 7);
6875 WRITE_BYTE_F(adr, res)
6888 READ_BYTE_F(adr, res)
6894 WRITE_BYTE_F(adr, res)
6907 READ_BYTE_F(adr, res)
6913 WRITE_BYTE_F(adr, res)
6926 READ_BYTE_F(adr, res)
6933 WRITE_BYTE_F(adr, res)
6946 READ_BYTE_F(adr, res)
6953 WRITE_BYTE_F(adr, res)
6966 READ_BYTE_F(adr, res)
6971 DREGu8((Opcode >> 9) & 7) = res;
6984 READ_BYTE_F(adr, res)
6989 adr = AREG((Opcode >> 9) & 7);
6990 WRITE_BYTE_F(adr, res)
7003 READ_BYTE_F(adr, res)
7008 adr = AREG((Opcode >> 9) & 7);
7009 AREG((Opcode >> 9) & 7) += 1;
7010 WRITE_BYTE_F(adr, res)
7023 READ_BYTE_F(adr, res)
7028 adr = AREG((Opcode >> 9) & 7) - 1;
7029 AREG((Opcode >> 9) & 7) = adr;
7030 WRITE_BYTE_F(adr, res)
7043 READ_BYTE_F(adr, res)
7049 adr += AREG((Opcode >> 9) & 7);
7050 WRITE_BYTE_F(adr, res)
7063 READ_BYTE_F(adr, res)
7068 adr = AREG((Opcode >> 9) & 7);
7070 WRITE_BYTE_F(adr, res)
7083 READ_BYTE_F(adr, res)
7089 WRITE_BYTE_F(adr, res)
7102 READ_BYTE_F(adr, res)
7108 WRITE_BYTE_F(adr, res)
7121 READ_BYTE_F(adr, res)
7128 WRITE_BYTE_F(adr, res)
7141 READ_BYTE_F(adr, res)
7148 WRITE_BYTE_F(adr, res)
7159 adr = GET_SWORD + GET_PC;
7162 READ_BYTE_F(adr, res)
7167 DREGu8((Opcode >> 9) & 7) = res;
7178 adr = GET_SWORD + GET_PC;
7181 READ_BYTE_F(adr, res)
7186 adr = AREG((Opcode >> 9) & 7);
7187 WRITE_BYTE_F(adr, res)
7198 adr = GET_SWORD + GET_PC;
7201 READ_BYTE_F(adr, res)
7206 adr = AREG((Opcode >> 9) & 7);
7207 AREG((Opcode >> 9) & 7) += 1;
7208 WRITE_BYTE_F(adr, res)
7219 adr = GET_SWORD + GET_PC;
7222 READ_BYTE_F(adr, res)
7227 adr = AREG((Opcode >> 9) & 7) - 1;
7228 AREG((Opcode >> 9) & 7) = adr;
7229 WRITE_BYTE_F(adr, res)
7240 adr = GET_SWORD + GET_PC;
7243 READ_BYTE_F(adr, res)
7249 adr += AREG((Opcode >> 9) & 7);
7250 WRITE_BYTE_F(adr, res)
7261 adr = GET_SWORD + GET_PC;
7264 READ_BYTE_F(adr, res)
7269 adr = AREG((Opcode >> 9) & 7);
7271 WRITE_BYTE_F(adr, res)
7282 adr = GET_SWORD + GET_PC;
7285 READ_BYTE_F(adr, res)
7291 WRITE_BYTE_F(adr, res)
7302 adr = GET_SWORD + GET_PC;
7305 READ_BYTE_F(adr, res)
7311 WRITE_BYTE_F(adr, res)
7322 adr = GET_SWORD + GET_PC;
7325 READ_BYTE_F(adr, res)
7332 WRITE_BYTE_F(adr, res)
7343 adr = GET_SWORD + GET_PC;
7346 READ_BYTE_F(adr, res)
7353 WRITE_BYTE_F(adr, res)
7364 adr = (uptr)(PC) - BasePC;
7367 READ_BYTE_F(adr, res)
7372 DREGu8((Opcode >> 9) & 7) = res;
7383 adr = (uptr)(PC) - BasePC;
7386 READ_BYTE_F(adr, res)
7391 adr = AREG((Opcode >> 9) & 7);
7392 WRITE_BYTE_F(adr, res)
7403 adr = (uptr)(PC) - BasePC;
7406 READ_BYTE_F(adr, res)
7411 adr = AREG((Opcode >> 9) & 7);
7412 AREG((Opcode >> 9) & 7) += 1;
7413 WRITE_BYTE_F(adr, res)
7424 adr = (uptr)(PC) - BasePC;
7427 READ_BYTE_F(adr, res)
7432 adr = AREG((Opcode >> 9) & 7) - 1;
7433 AREG((Opcode >> 9) & 7) = adr;
7434 WRITE_BYTE_F(adr, res)
7445 adr = (uptr)(PC) - BasePC;
7448 READ_BYTE_F(adr, res)
7454 adr += AREG((Opcode >> 9) & 7);
7455 WRITE_BYTE_F(adr, res)
7466 adr = (uptr)(PC) - BasePC;
7469 READ_BYTE_F(adr, res)
7474 adr = AREG((Opcode >> 9) & 7);
7476 WRITE_BYTE_F(adr, res)
7487 adr = (uptr)(PC) - BasePC;
7490 READ_BYTE_F(adr, res)
7496 WRITE_BYTE_F(adr, res)
7507 adr = (uptr)(PC) - BasePC;
7510 READ_BYTE_F(adr, res)
7516 WRITE_BYTE_F(adr, res)
7527 adr = (uptr)(PC) - BasePC;
7530 READ_BYTE_F(adr, res)
7537 WRITE_BYTE_F(adr, res)
7548 adr = (uptr)(PC) - BasePC;
7551 READ_BYTE_F(adr, res)
7558 WRITE_BYTE_F(adr, res)
7574 DREGu8((Opcode >> 9) & 7) = res;
7589 adr = AREG((Opcode >> 9) & 7);
7591 WRITE_BYTE_F(adr, res)
7607 adr = AREG((Opcode >> 9) & 7);
7608 AREG((Opcode >> 9) & 7) += 1;
7610 WRITE_BYTE_F(adr, res)
7626 adr = AREG((Opcode >> 9) & 7) - 1;
7627 AREG((Opcode >> 9) & 7) = adr;
7629 WRITE_BYTE_F(adr, res)
7646 adr += AREG((Opcode >> 9) & 7);
7648 WRITE_BYTE_F(adr, res)
7664 adr = AREG((Opcode >> 9) & 7);
7667 WRITE_BYTE_F(adr, res)
7685 WRITE_BYTE_F(adr, res)
7703 WRITE_BYTE_F(adr, res)
7722 WRITE_BYTE_F(adr, res)
7741 WRITE_BYTE_F(adr, res)
7755 READ_BYTE_F(adr, res)
7760 DREGu8((Opcode >> 9) & 7) = res;
7774 READ_BYTE_F(adr, res)
7779 adr = AREG((Opcode >> 9) & 7);
7780 WRITE_BYTE_F(adr, res)
7794 READ_BYTE_F(adr, res)
7799 adr = AREG((Opcode >> 9) & 7);
7800 AREG((Opcode >> 9) & 7) += 1;
7801 WRITE_BYTE_F(adr, res)
7815 READ_BYTE_F(adr, res)
7820 adr = AREG((Opcode >> 9) & 7) - 1;
7821 AREG((Opcode >> 9) & 7) = adr;
7822 WRITE_BYTE_F(adr, res)
7836 READ_BYTE_F(adr, res)
7842 adr += AREG((Opcode >> 9) & 7);
7843 WRITE_BYTE_F(adr, res)
7857 READ_BYTE_F(adr, res)
7862 adr = AREG((Opcode >> 9) & 7);
7864 WRITE_BYTE_F(adr, res)
7878 READ_BYTE_F(adr, res)
7884 WRITE_BYTE_F(adr, res)
7898 READ_BYTE_F(adr, res)
7904 WRITE_BYTE_F(adr, res)
7918 READ_BYTE_F(adr, res)
7925 WRITE_BYTE_F(adr, res)
7939 READ_BYTE_F(adr, res)
7946 WRITE_BYTE_F(adr, res)
7960 READ_BYTE_F(adr, res)
7965 DREGu8((Opcode >> 9) & 7) = res;
7979 READ_BYTE_F(adr, res)
7984 adr = AREG((Opcode >> 9) & 7);
7985 WRITE_BYTE_F(adr, res)
7999 READ_BYTE_F(adr, res)
8004 adr = AREG((Opcode >> 9) & 7);
8005 AREG((Opcode >> 9) & 7) += 1;
8006 WRITE_BYTE_F(adr, res)
8020 READ_BYTE_F(adr, res)
8025 adr = AREG((Opcode >> 9) & 7) - 1;
8026 AREG((Opcode >> 9) & 7) = adr;
8027 WRITE_BYTE_F(adr, res)
8041 READ_BYTE_F(adr, res)
8047 adr += AREG((Opcode >> 9) & 7);
8048 WRITE_BYTE_F(adr, res)
8062 READ_BYTE_F(adr, res)
8067 adr = AREG((Opcode >> 9) & 7);
8069 WRITE_BYTE_F(adr, res)
8083 READ_BYTE_F(adr, res)
8089 WRITE_BYTE_F(adr, res)
8103 READ_BYTE_F(adr, res)
8109 WRITE_BYTE_F(adr, res)
8123 READ_BYTE_F(adr, res)
8130 WRITE_BYTE_F(adr, res)
8144 READ_BYTE_F(adr, res)
8151 WRITE_BYTE_F(adr, res)
8162 res = DREGu32((Opcode >> 0) & 7);
8167 DREGu32((Opcode >> 9) & 7) = res;
8177 res = DREGu32((Opcode >> 0) & 7);
8182 adr = AREG((Opcode >> 9) & 7);
8184 WRITE_LONG_F(adr, res)
8195 res = DREGu32((Opcode >> 0) & 7);
8200 adr = AREG((Opcode >> 9) & 7);
8201 AREG((Opcode >> 9) & 7) += 4;
8203 WRITE_LONG_F(adr, res)
8214 res = DREGu32((Opcode >> 0) & 7);
8219 adr = AREG((Opcode >> 9) & 7) - 4;
8220 AREG((Opcode >> 9) & 7) = adr;
8222 WRITE_LONG_DEC_F(adr, res)
8233 res = DREGu32((Opcode >> 0) & 7);
8239 adr += AREG((Opcode >> 9) & 7);
8241 WRITE_LONG_F(adr, res)
8252 res = DREGu32((Opcode >> 0) & 7);
8257 adr = AREG((Opcode >> 9) & 7);
8260 WRITE_LONG_F(adr, res)
8271 res = DREGu32((Opcode >> 0) & 7);
8278 WRITE_LONG_F(adr, res)
8289 res = DREGu32((Opcode >> 0) & 7);
8296 WRITE_LONG_F(adr, res)
8307 res = DREGu32((Opcode >> 0) & 7);
8315 WRITE_LONG_F(adr, res)
8326 res = DREGu32((Opcode >> 0) & 7);
8334 WRITE_LONG_DEC_F(adr, res)
8345 res = AREGu32((Opcode >> 0) & 7);
8350 DREGu32((Opcode >> 9) & 7) = res;
8360 res = AREGu32((Opcode >> 0) & 7);
8365 adr = AREG((Opcode >> 9) & 7);
8367 WRITE_LONG_F(adr, res)
8378 res = AREGu32((Opcode >> 0) & 7);
8383 adr = AREG((Opcode >> 9) & 7);
8384 AREG((Opcode >> 9) & 7) += 4;
8386 WRITE_LONG_F(adr, res)
8397 res = AREGu32((Opcode >> 0) & 7);
8402 adr = AREG((Opcode >> 9) & 7) - 4;
8403 AREG((Opcode >> 9) & 7) = adr;
8405 WRITE_LONG_DEC_F(adr, res)
8416 res = AREGu32((Opcode >> 0) & 7);
8422 adr += AREG((Opcode >> 9) & 7);
8424 WRITE_LONG_F(adr, res)
8435 res = AREGu32((Opcode >> 0) & 7);
8440 adr = AREG((Opcode >> 9) & 7);
8443 WRITE_LONG_F(adr, res)
8454 res = AREGu32((Opcode >> 0) & 7);
8461 WRITE_LONG_F(adr, res)
8472 res = AREGu32((Opcode >> 0) & 7);
8479 WRITE_LONG_F(adr, res)
8490 res = AREGu32((Opcode >> 0) & 7);
8498 WRITE_LONG_F(adr, res)
8509 res = AREGu32((Opcode >> 0) & 7);
8517 WRITE_LONG_DEC_F(adr, res)
8528 adr = AREG((Opcode >> 0) & 7);
8530 READ_LONG_F(adr, res)
8535 DREGu32((Opcode >> 9) & 7) = res;
8546 adr = AREG((Opcode >> 0) & 7);
8548 READ_LONG_F(adr, res)
8553 adr = AREG((Opcode >> 9) & 7);
8554 WRITE_LONG_F(adr, res)
8565 adr = AREG((Opcode >> 0) & 7);
8567 READ_LONG_F(adr, res)
8572 adr = AREG((Opcode >> 9) & 7);
8573 AREG((Opcode >> 9) & 7) += 4;
8574 WRITE_LONG_F(adr, res)
8585 adr = AREG((Opcode >> 0) & 7);
8587 READ_LONG_F(adr, res)
8592 adr = AREG((Opcode >> 9) & 7) - 4;
8593 AREG((Opcode >> 9) & 7) = adr;
8594 WRITE_LONG_DEC_F(adr, res)
8605 adr = AREG((Opcode >> 0) & 7);
8607 READ_LONG_F(adr, res)
8613 adr += AREG((Opcode >> 9) & 7);
8614 WRITE_LONG_F(adr, res)
8625 adr = AREG((Opcode >> 0) & 7);
8627 READ_LONG_F(adr, res)
8632 adr = AREG((Opcode >> 9) & 7);
8634 WRITE_LONG_F(adr, res)
8645 adr = AREG((Opcode >> 0) & 7);
8647 READ_LONG_F(adr, res)
8653 WRITE_LONG_F(adr, res)
8664 adr = AREG((Opcode >> 0) & 7);
8666 READ_LONG_F(adr, res)
8672 WRITE_LONG_F(adr, res)
8683 adr = AREG((Opcode >> 0) & 7);
8685 READ_LONG_F(adr, res)
8692 WRITE_LONG_F(adr, res)
8703 adr = AREG((Opcode >> 0) & 7);
8705 READ_LONG_F(adr, res)
8712 WRITE_LONG_DEC_F(adr, res)
8723 adr = AREG((Opcode >> 0) & 7);
8724 AREG((Opcode >> 0) & 7) += 4;
8726 READ_LONG_F(adr, res)
8731 DREGu32((Opcode >> 9) & 7) = res;
8742 adr = AREG((Opcode >> 0) & 7);
8743 AREG((Opcode >> 0) & 7) += 4;
8745 READ_LONG_F(adr, res)
8750 adr = AREG((Opcode >> 9) & 7);
8751 WRITE_LONG_F(adr, res)
8762 adr = AREG((Opcode >> 0) & 7);
8763 AREG((Opcode >> 0) & 7) += 4;
8765 READ_LONG_F(adr, res)
8770 adr = AREG((Opcode >> 9) & 7);
8771 AREG((Opcode >> 9) & 7) += 4;
8772 WRITE_LONG_F(adr, res)
8783 adr = AREG((Opcode >> 0) & 7);
8784 AREG((Opcode >> 0) & 7) += 4;
8786 READ_LONG_F(adr, res)
8791 adr = AREG((Opcode >> 9) & 7) - 4;
8792 AREG((Opcode >> 9) & 7) = adr;
8793 WRITE_LONG_DEC_F(adr, res)
8804 adr = AREG((Opcode >> 0) & 7);
8805 AREG((Opcode >> 0) & 7) += 4;
8807 READ_LONG_F(adr, res)
8813 adr += AREG((Opcode >> 9) & 7);
8814 WRITE_LONG_F(adr, res)
8825 adr = AREG((Opcode >> 0) & 7);
8826 AREG((Opcode >> 0) & 7) += 4;
8828 READ_LONG_F(adr, res)
8833 adr = AREG((Opcode >> 9) & 7);
8835 WRITE_LONG_F(adr, res)
8846 adr = AREG((Opcode >> 0) & 7);
8847 AREG((Opcode >> 0) & 7) += 4;
8849 READ_LONG_F(adr, res)
8855 WRITE_LONG_F(adr, res)
8866 adr = AREG((Opcode >> 0) & 7);
8867 AREG((Opcode >> 0) & 7) += 4;
8869 READ_LONG_F(adr, res)
8875 WRITE_LONG_F(adr, res)
8886 adr = AREG((Opcode >> 0) & 7);
8887 AREG((Opcode >> 0) & 7) += 4;
8889 READ_LONG_F(adr, res)
8896 WRITE_LONG_F(adr, res)
8907 adr = AREG((Opcode >> 0) & 7);
8908 AREG((Opcode >> 0) & 7) += 4;
8910 READ_LONG_F(adr, res)
8917 WRITE_LONG_DEC_F(adr, res)
8928 adr = AREG((Opcode >> 0) & 7) - 4;
8929 AREG((Opcode >> 0) & 7) = adr;
8931 READ_LONG_F(adr, res)
8936 DREGu32((Opcode >> 9) & 7) = res;
8947 adr = AREG((Opcode >> 0) & 7) - 4;
8948 AREG((Opcode >> 0) & 7) = adr;
8950 READ_LONG_F(adr, res)
8955 adr = AREG((Opcode >> 9) & 7);
8956 WRITE_LONG_F(adr, res)
8967 adr = AREG((Opcode >> 0) & 7) - 4;
8968 AREG((Opcode >> 0) & 7) = adr;
8970 READ_LONG_F(adr, res)
8975 adr = AREG((Opcode >> 9) & 7);
8976 AREG((Opcode >> 9) & 7) += 4;
8977 WRITE_LONG_F(adr, res)
8988 adr = AREG((Opcode >> 0) & 7) - 4;
8989 AREG((Opcode >> 0) & 7) = adr;
8991 READ_LONG_F(adr, res)
8996 adr = AREG((Opcode >> 9) & 7) - 4;
8997 AREG((Opcode >> 9) & 7) = adr;
8998 WRITE_LONG_DEC_F(adr, res)
9009 adr = AREG((Opcode >> 0) & 7) - 4;
9010 AREG((Opcode >> 0) & 7) = adr;
9012 READ_LONG_F(adr, res)
9018 adr += AREG((Opcode >> 9) & 7);
9019 WRITE_LONG_F(adr, res)
9030 adr = AREG((Opcode >> 0) & 7) - 4;
9031 AREG((Opcode >> 0) & 7) = adr;
9033 READ_LONG_F(adr, res)
9038 adr = AREG((Opcode >> 9) & 7);
9040 WRITE_LONG_F(adr, res)
9051 adr = AREG((Opcode >> 0) & 7) - 4;
9052 AREG((Opcode >> 0) & 7) = adr;
9054 READ_LONG_F(adr, res)
9060 WRITE_LONG_F(adr, res)
9071 adr = AREG((Opcode >> 0) & 7) - 4;
9072 AREG((Opcode >> 0) & 7) = adr;
9074 READ_LONG_F(adr, res)
9080 WRITE_LONG_F(adr, res)
9091 adr = AREG((Opcode >> 0) & 7) - 4;
9092 AREG((Opcode >> 0) & 7) = adr;
9094 READ_LONG_F(adr, res)
9101 WRITE_LONG_F(adr, res)
9112 adr = AREG((Opcode >> 0) & 7) - 4;
9113 AREG((Opcode >> 0) & 7) = adr;
9115 READ_LONG_F(adr, res)
9122 WRITE_LONG_DEC_F(adr, res)
9134 adr += AREG((Opcode >> 0) & 7);
9136 READ_LONG_F(adr, res)
9141 DREGu32((Opcode >> 9) & 7) = res;
9153 adr += AREG((Opcode >> 0) & 7);
9155 READ_LONG_F(adr, res)
9160 adr = AREG((Opcode >> 9) & 7);
9161 WRITE_LONG_F(adr, res)
9173 adr += AREG((Opcode >> 0) & 7);
9175 READ_LONG_F(adr, res)
9180 adr = AREG((Opcode >> 9) & 7);
9181 AREG((Opcode >> 9) & 7) += 4;
9182 WRITE_LONG_F(adr, res)
9194 adr += AREG((Opcode >> 0) & 7);
9196 READ_LONG_F(adr, res)
9201 adr = AREG((Opcode >> 9) & 7) - 4;
9202 AREG((Opcode >> 9) & 7) = adr;
9203 WRITE_LONG_DEC_F(adr, res)
9215 adr += AREG((Opcode >> 0) & 7);
9217 READ_LONG_F(adr, res)
9223 adr += AREG((Opcode >> 9) & 7);
9224 WRITE_LONG_F(adr, res)
9236 adr += AREG((Opcode >> 0) & 7);
9238 READ_LONG_F(adr, res)
9243 adr = AREG((Opcode >> 9) & 7);
9245 WRITE_LONG_F(adr, res)
9257 adr += AREG((Opcode >> 0) & 7);
9259 READ_LONG_F(adr, res)
9265 WRITE_LONG_F(adr, res)
9277 adr += AREG((Opcode >> 0) & 7);
9279 READ_LONG_F(adr, res)
9285 WRITE_LONG_F(adr, res)
9297 adr += AREG((Opcode >> 0) & 7);
9299 READ_LONG_F(adr, res)
9306 WRITE_LONG_F(adr, res)
9318 adr += AREG((Opcode >> 0) & 7);
9320 READ_LONG_F(adr, res)
9327 WRITE_LONG_DEC_F(adr, res)
9338 adr = AREG((Opcode >> 0) & 7);
9341 READ_LONG_F(adr, res)
9346 DREGu32((Opcode >> 9) & 7) = res;
9357 adr = AREG((Opcode >> 0) & 7);
9360 READ_LONG_F(adr, res)
9365 adr = AREG((Opcode >> 9) & 7);
9366 WRITE_LONG_F(adr, res)
9377 adr = AREG((Opcode >> 0) & 7);
9380 READ_LONG_F(adr, res)
9385 adr = AREG((Opcode >> 9) & 7);
9386 AREG((Opcode >> 9) & 7) += 4;
9387 WRITE_LONG_F(adr, res)
9398 adr = AREG((Opcode >> 0) & 7);
9401 READ_LONG_F(adr, res)
9406 adr = AREG((Opcode >> 9) & 7) - 4;
9407 AREG((Opcode >> 9) & 7) = adr;
9408 WRITE_LONG_DEC_F(adr, res)
9419 adr = AREG((Opcode >> 0) & 7);
9422 READ_LONG_F(adr, res)
9428 adr += AREG((Opcode >> 9) & 7);
9429 WRITE_LONG_F(adr, res)
9440 adr = AREG((Opcode >> 0) & 7);
9443 READ_LONG_F(adr, res)
9448 adr = AREG((Opcode >> 9) & 7);
9450 WRITE_LONG_F(adr, res)
9461 adr = AREG((Opcode >> 0) & 7);
9464 READ_LONG_F(adr, res)
9470 WRITE_LONG_F(adr, res)
9481 adr = AREG((Opcode >> 0) & 7);
9484 READ_LONG_F(adr, res)
9490 WRITE_LONG_F(adr, res)
9501 adr = AREG((Opcode >> 0) & 7);
9504 READ_LONG_F(adr, res)
9511 WRITE_LONG_F(adr, res)
9522 adr = AREG((Opcode >> 0) & 7);
9525 READ_LONG_F(adr, res)
9532 WRITE_LONG_DEC_F(adr, res)
9545 READ_LONG_F(adr, res)
9550 DREGu32((Opcode >> 9) & 7) = res;
9563 READ_LONG_F(adr, res)
9568 adr = AREG((Opcode >> 9) & 7);
9569 WRITE_LONG_F(adr, res)
9582 READ_LONG_F(adr, res)
9587 adr = AREG((Opcode >> 9) & 7);
9588 AREG((Opcode >> 9) & 7) += 4;
9589 WRITE_LONG_F(adr, res)
9602 READ_LONG_F(adr, res)
9607 adr = AREG((Opcode >> 9) & 7) - 4;
9608 AREG((Opcode >> 9) & 7) = adr;
9609 WRITE_LONG_DEC_F(adr, res)
9622 READ_LONG_F(adr, res)
9628 adr += AREG((Opcode >> 9) & 7);
9629 WRITE_LONG_F(adr, res)
9642 READ_LONG_F(adr, res)
9647 adr = AREG((Opcode >> 9) & 7);
9649 WRITE_LONG_F(adr, res)
9662 READ_LONG_F(adr, res)
9668 WRITE_LONG_F(adr, res)
9681 READ_LONG_F(adr, res)
9687 WRITE_LONG_F(adr, res)
9700 READ_LONG_F(adr, res)
9707 WRITE_LONG_F(adr, res)
9720 READ_LONG_F(adr, res)
9727 WRITE_LONG_DEC_F(adr, res)
9740 READ_LONG_F(adr, res)
9745 DREGu32((Opcode >> 9) & 7) = res;
9758 READ_LONG_F(adr, res)
9763 adr = AREG((Opcode >> 9) & 7);
9764 WRITE_LONG_F(adr, res)
9777 READ_LONG_F(adr, res)
9782 adr = AREG((Opcode >> 9) & 7);
9783 AREG((Opcode >> 9) & 7) += 4;
9784 WRITE_LONG_F(adr, res)
9797 READ_LONG_F(adr, res)
9802 adr = AREG((Opcode >> 9) & 7) - 4;
9803 AREG((Opcode >> 9) & 7) = adr;
9804 WRITE_LONG_DEC_F(adr, res)
9817 READ_LONG_F(adr, res)
9823 adr += AREG((Opcode >> 9) & 7);
9824 WRITE_LONG_F(adr, res)
9837 READ_LONG_F(adr, res)
9842 adr = AREG((Opcode >> 9) & 7);
9844 WRITE_LONG_F(adr, res)
9857 READ_LONG_F(adr, res)
9863 WRITE_LONG_F(adr, res)
9876 READ_LONG_F(adr, res)
9882 WRITE_LONG_F(adr, res)
9895 READ_LONG_F(adr, res)
9902 WRITE_LONG_F(adr, res)
9915 READ_LONG_F(adr, res)
9922 WRITE_LONG_DEC_F(adr, res)
9933 adr = GET_SWORD + GET_PC;
9936 READ_LONG_F(adr, res)
9941 DREGu32((Opcode >> 9) & 7) = res;
9952 adr = GET_SWORD + GET_PC;
9955 READ_LONG_F(adr, res)
9960 adr = AREG((Opcode >> 9) & 7);
9961 WRITE_LONG_F(adr, res)
9972 adr = GET_SWORD + GET_PC;
9975 READ_LONG_F(adr, res)
9980 adr = AREG((Opcode >> 9) & 7);
9981 AREG((Opcode >> 9) & 7) += 4;
9982 WRITE_LONG_F(adr, res)
9993 adr = GET_SWORD + GET_PC;
9996 READ_LONG_F(adr, res)
10000 flag_N = res >> 24;
10001 adr = AREG((Opcode >> 9) & 7) - 4;
10002 AREG((Opcode >> 9) & 7) = adr;
10003 WRITE_LONG_DEC_F(adr, res)
10014 adr = GET_SWORD + GET_PC;
10017 READ_LONG_F(adr, res)
10021 flag_N = res >> 24;
10023 adr += AREG((Opcode >> 9) & 7);
10024 WRITE_LONG_F(adr, res)
10035 adr = GET_SWORD + GET_PC;
10038 READ_LONG_F(adr, res)
10042 flag_N = res >> 24;
10043 adr = AREG((Opcode >> 9) & 7);
10045 WRITE_LONG_F(adr, res)
10056 adr = GET_SWORD + GET_PC;
10059 READ_LONG_F(adr, res)
10063 flag_N = res >> 24;
10065 WRITE_LONG_F(adr, res)
10076 adr = GET_SWORD + GET_PC;
10079 READ_LONG_F(adr, res)
10083 flag_N = res >> 24;
10085 WRITE_LONG_F(adr, res)
10096 adr = GET_SWORD + GET_PC;
10099 READ_LONG_F(adr, res)
10103 flag_N = res >> 24;
10106 WRITE_LONG_F(adr, res)
10117 adr = GET_SWORD + GET_PC;
10120 READ_LONG_F(adr, res)
10124 flag_N = res >> 24;
10127 WRITE_LONG_DEC_F(adr, res)
10141 READ_LONG_F(adr, res)
10145 flag_N = res >> 24;
10146 DREGu32((Opcode >> 9) & 7) = res;
10160 READ_LONG_F(adr, res)
10164 flag_N = res >> 24;
10165 adr = AREG((Opcode >> 9) & 7);
10166 WRITE_LONG_F(adr, res)
10180 READ_LONG_F(adr, res)
10184 flag_N = res >> 24;
10185 adr = AREG((Opcode >> 9) & 7);
10186 AREG((Opcode >> 9) & 7) += 4;
10187 WRITE_LONG_F(adr, res)
10201 READ_LONG_F(adr, res)
10205 flag_N = res >> 24;
10206 adr = AREG((Opcode >> 9) & 7) - 4;
10207 AREG((Opcode >> 9) & 7) = adr;
10208 WRITE_LONG_DEC_F(adr, res)
10222 READ_LONG_F(adr, res)
10226 flag_N = res >> 24;
10228 adr += AREG((Opcode >> 9) & 7);
10229 WRITE_LONG_F(adr, res)
10243 READ_LONG_F(adr, res)
10247 flag_N = res >> 24;
10248 adr = AREG((Opcode >> 9) & 7);
10250 WRITE_LONG_F(adr, res)
10264 READ_LONG_F(adr, res)
10268 flag_N = res >> 24;
10270 WRITE_LONG_F(adr, res)
10284 READ_LONG_F(adr, res)
10288 flag_N = res >> 24;
10290 WRITE_LONG_F(adr, res)
10304 READ_LONG_F(adr, res)
10308 flag_N = res >> 24;
10311 WRITE_LONG_F(adr, res)
10325 READ_LONG_F(adr, res)
10329 flag_N = res >> 24;
10332 WRITE_LONG_DEC_F(adr, res)
10347 flag_N = res >> 24;
10348 DREGu32((Opcode >> 9) & 7) = res;
10362 flag_N = res >> 24;
10363 adr = AREG((Opcode >> 9) & 7);
10365 WRITE_LONG_F(adr, res)
10380 flag_N = res >> 24;
10381 adr = AREG((Opcode >> 9) & 7);
10382 AREG((Opcode >> 9) & 7) += 4;
10384 WRITE_LONG_F(adr, res)
10399 flag_N = res >> 24;
10400 adr = AREG((Opcode >> 9) & 7) - 4;
10401 AREG((Opcode >> 9) & 7) = adr;
10403 WRITE_LONG_DEC_F(adr, res)
10418 flag_N = res >> 24;
10420 adr += AREG((Opcode >> 9) & 7);
10422 WRITE_LONG_F(adr, res)
10437 flag_N = res >> 24;
10438 adr = AREG((Opcode >> 9) & 7);
10441 WRITE_LONG_F(adr, res)
10456 flag_N = res >> 24;
10459 WRITE_LONG_F(adr, res)
10474 flag_N = res >> 24;
10477 WRITE_LONG_F(adr, res)
10492 flag_N = res >> 24;
10496 WRITE_LONG_F(adr, res)
10511 flag_N = res >> 24;
10515 WRITE_LONG_DEC_F(adr, res)
10529 READ_LONG_F(adr, res)
10533 flag_N = res >> 24;
10534 DREGu32((Opcode >> 9) & 7) = res;
10548 READ_LONG_F(adr, res)
10552 flag_N = res >> 24;
10553 adr = AREG((Opcode >> 9) & 7);
10554 WRITE_LONG_F(adr, res)
10568 READ_LONG_F(adr, res)
10572 flag_N = res >> 24;
10573 adr = AREG((Opcode >> 9) & 7);
10574 AREG((Opcode >> 9) & 7) += 4;
10575 WRITE_LONG_F(adr, res)
10589 READ_LONG_F(adr, res)
10593 flag_N = res >> 24;
10594 adr = AREG((Opcode >> 9) & 7) - 4;
10595 AREG((Opcode >> 9) & 7) = adr;
10596 WRITE_LONG_DEC_F(adr, res)
10610 READ_LONG_F(adr, res)
10614 flag_N = res >> 24;
10616 adr += AREG((Opcode >> 9) & 7);
10617 WRITE_LONG_F(adr, res)
10631 READ_LONG_F(adr, res)
10635 flag_N = res >> 24;
10636 adr = AREG((Opcode >> 9) & 7);
10638 WRITE_LONG_F(adr, res)
10652 READ_LONG_F(adr, res)
10656 flag_N = res >> 24;
10658 WRITE_LONG_F(adr, res)
10672 READ_LONG_F(adr, res)
10676 flag_N = res >> 24;
10678 WRITE_LONG_F(adr, res)
10692 READ_LONG_F(adr, res)
10696 flag_N = res >> 24;
10699 WRITE_LONG_F(adr, res)
10713 READ_LONG_F(adr, res)
10717 flag_N = res >> 24;
10720 WRITE_LONG_DEC_F(adr, res)
10734 READ_LONG_F(adr, res)
10738 flag_N = res >> 24;
10739 DREGu32((Opcode >> 9) & 7) = res;
10753 READ_LONG_F(adr, res)
10757 flag_N = res >> 24;
10758 adr = AREG((Opcode >> 9) & 7);
10759 WRITE_LONG_F(adr, res)
10773 READ_LONG_F(adr, res)
10777 flag_N = res >> 24;
10778 adr = AREG((Opcode >> 9) & 7);
10779 AREG((Opcode >> 9) & 7) += 4;
10780 WRITE_LONG_F(adr, res)
10794 READ_LONG_F(adr, res)
10798 flag_N = res >> 24;
10799 adr = AREG((Opcode >> 9) & 7) - 4;
10800 AREG((Opcode >> 9) & 7) = adr;
10801 WRITE_LONG_DEC_F(adr, res)
10815 READ_LONG_F(adr, res)
10819 flag_N = res >> 24;
10821 adr += AREG((Opcode >> 9) & 7);
10822 WRITE_LONG_F(adr, res)
10836 READ_LONG_F(adr, res)
10840 flag_N = res >> 24;
10841 adr = AREG((Opcode >> 9) & 7);
10843 WRITE_LONG_F(adr, res)
10857 READ_LONG_F(adr, res)
10861 flag_N = res >> 24;
10863 WRITE_LONG_F(adr, res)
10877 READ_LONG_F(adr, res)
10881 flag_N = res >> 24;
10883 WRITE_LONG_F(adr, res)
10897 READ_LONG_F(adr, res)
10901 flag_N = res >> 24;
10904 WRITE_LONG_F(adr, res)
10918 READ_LONG_F(adr, res)
10922 flag_N = res >> 24;
10925 WRITE_LONG_DEC_F(adr, res)
10936 res = (s32)DREGs32((Opcode >> 0) & 7);
10937 AREG((Opcode >> 9) & 7) = res;
10947 res = (s32)AREGs32((Opcode >> 0) & 7);
10948 AREG((Opcode >> 9) & 7) = res;
10958 adr = AREG((Opcode >> 0) & 7);
10960 READSX_LONG_F(adr, res)
10961 AREG((Opcode >> 9) & 7) = res;
10972 adr = AREG((Opcode >> 0) & 7);
10973 AREG((Opcode >> 0) & 7) += 4;
10975 READSX_LONG_F(adr, res)
10976 AREG((Opcode >> 9) & 7) = res;
10987 adr = AREG((Opcode >> 0) & 7) - 4;
10988 AREG((Opcode >> 0) & 7) = adr;
10990 READSX_LONG_F(adr, res)
10991 AREG((Opcode >> 9) & 7) = res;
11003 adr += AREG((Opcode >> 0) & 7);
11005 READSX_LONG_F(adr, res)
11006 AREG((Opcode >> 9) & 7) = res;
11017 adr = AREG((Opcode >> 0) & 7);
11020 READSX_LONG_F(adr, res)
11021 AREG((Opcode >> 9) & 7) = res;
11034 READSX_LONG_F(adr, res)
11035 AREG((Opcode >> 9) & 7) = res;
11048 READSX_LONG_F(adr, res)
11049 AREG((Opcode >> 9) & 7) = res;
11060 adr = GET_SWORD + GET_PC;
11063 READSX_LONG_F(adr, res)
11064 AREG((Opcode >> 9) & 7) = res;
11078 READSX_LONG_F(adr, res)
11079 AREG((Opcode >> 9) & 7) = res;
11091 AREG((Opcode >> 9) & 7) = res;
11104 READSX_LONG_F(adr, res)
11105 AREG((Opcode >> 9) & 7) = res;
11119 READSX_LONG_F(adr, res)
11120 AREG((Opcode >> 9) & 7) = res;
11131 res = DREGu16((Opcode >> 0) & 7);
11136 DREGu16((Opcode >> 9) & 7) = res;
11146 res = DREGu16((Opcode >> 0) & 7);
11151 adr = AREG((Opcode >> 9) & 7);
11153 WRITE_WORD_F(adr, res)
11164 res = DREGu16((Opcode >> 0) & 7);
11169 adr = AREG((Opcode >> 9) & 7);
11170 AREG((Opcode >> 9) & 7) += 2;
11172 WRITE_WORD_F(adr, res)
11183 res = DREGu16((Opcode >> 0) & 7);
11188 adr = AREG((Opcode >> 9) & 7) - 2;
11189 AREG((Opcode >> 9) & 7) = adr;
11191 WRITE_WORD_F(adr, res)
11202 res = DREGu16((Opcode >> 0) & 7);
11208 adr += AREG((Opcode >> 9) & 7);
11210 WRITE_WORD_F(adr, res)
11221 res = DREGu16((Opcode >> 0) & 7);
11226 adr = AREG((Opcode >> 9) & 7);
11229 WRITE_WORD_F(adr, res)
11240 res = DREGu16((Opcode >> 0) & 7);
11247 WRITE_WORD_F(adr, res)
11258 res = DREGu16((Opcode >> 0) & 7);
11265 WRITE_WORD_F(adr, res)
11276 res = DREGu16((Opcode >> 0) & 7);
11284 WRITE_WORD_F(adr, res)
11295 res = DREGu16((Opcode >> 0) & 7);
11303 WRITE_WORD_F(adr, res)
11314 res = AREGu16((Opcode >> 0) & 7);
11319 DREGu16((Opcode >> 9) & 7) = res;
11329 res = AREGu16((Opcode >> 0) & 7);
11334 adr = AREG((Opcode >> 9) & 7);
11336 WRITE_WORD_F(adr, res)
11347 res = AREGu16((Opcode >> 0) & 7);
11352 adr = AREG((Opcode >> 9) & 7);
11353 AREG((Opcode >> 9) & 7) += 2;
11355 WRITE_WORD_F(adr, res)
11366 res = AREGu16((Opcode >> 0) & 7);
11371 adr = AREG((Opcode >> 9) & 7) - 2;
11372 AREG((Opcode >> 9) & 7) = adr;
11374 WRITE_WORD_F(adr, res)
11385 res = AREGu16((Opcode >> 0) & 7);
11391 adr += AREG((Opcode >> 9) & 7);
11393 WRITE_WORD_F(adr, res)
11404 res = AREGu16((Opcode >> 0) & 7);
11409 adr = AREG((Opcode >> 9) & 7);
11412 WRITE_WORD_F(adr, res)
11423 res = AREGu16((Opcode >> 0) & 7);
11430 WRITE_WORD_F(adr, res)
11441 res = AREGu16((Opcode >> 0) & 7);
11448 WRITE_WORD_F(adr, res)
11459 res = AREGu16((Opcode >> 0) & 7);
11467 WRITE_WORD_F(adr, res)
11478 res = AREGu16((Opcode >> 0) & 7);
11486 WRITE_WORD_F(adr, res)
11497 adr = AREG((Opcode >> 0) & 7);
11499 READ_WORD_F(adr, res)
11504 DREGu16((Opcode >> 9) & 7) = res;
11515 adr = AREG((Opcode >> 0) & 7);
11517 READ_WORD_F(adr, res)
11522 adr = AREG((Opcode >> 9) & 7);
11523 WRITE_WORD_F(adr, res)
11534 adr = AREG((Opcode >> 0) & 7);
11536 READ_WORD_F(adr, res)
11541 adr = AREG((Opcode >> 9) & 7);
11542 AREG((Opcode >> 9) & 7) += 2;
11543 WRITE_WORD_F(adr, res)
11554 adr = AREG((Opcode >> 0) & 7);
11556 READ_WORD_F(adr, res)
11561 adr = AREG((Opcode >> 9) & 7) - 2;
11562 AREG((Opcode >> 9) & 7) = adr;
11563 WRITE_WORD_F(adr, res)
11574 adr = AREG((Opcode >> 0) & 7);
11576 READ_WORD_F(adr, res)
11582 adr += AREG((Opcode >> 9) & 7);
11583 WRITE_WORD_F(adr, res)
11594 adr = AREG((Opcode >> 0) & 7);
11596 READ_WORD_F(adr, res)
11601 adr = AREG((Opcode >> 9) & 7);
11603 WRITE_WORD_F(adr, res)
11614 adr = AREG((Opcode >> 0) & 7);
11616 READ_WORD_F(adr, res)
11622 WRITE_WORD_F(adr, res)
11633 adr = AREG((Opcode >> 0) & 7);
11635 READ_WORD_F(adr, res)
11641 WRITE_WORD_F(adr, res)
11652 adr = AREG((Opcode >> 0) & 7);
11654 READ_WORD_F(adr, res)
11661 WRITE_WORD_F(adr, res)
11672 adr = AREG((Opcode >> 0) & 7);
11674 READ_WORD_F(adr, res)
11681 WRITE_WORD_F(adr, res)
11692 adr = AREG((Opcode >> 0) & 7);
11693 AREG((Opcode >> 0) & 7) += 2;
11695 READ_WORD_F(adr, res)
11700 DREGu16((Opcode >> 9) & 7) = res;
11711 adr = AREG((Opcode >> 0) & 7);
11712 AREG((Opcode >> 0) & 7) += 2;
11714 READ_WORD_F(adr, res)
11719 adr = AREG((Opcode >> 9) & 7);
11720 WRITE_WORD_F(adr, res)
11731 adr = AREG((Opcode >> 0) & 7);
11732 AREG((Opcode >> 0) & 7) += 2;
11734 READ_WORD_F(adr, res)
11739 adr = AREG((Opcode >> 9) & 7);
11740 AREG((Opcode >> 9) & 7) += 2;
11741 WRITE_WORD_F(adr, res)
11752 adr = AREG((Opcode >> 0) & 7);
11753 AREG((Opcode >> 0) & 7) += 2;
11755 READ_WORD_F(adr, res)
11760 adr = AREG((Opcode >> 9) & 7) - 2;
11761 AREG((Opcode >> 9) & 7) = adr;
11762 WRITE_WORD_F(adr, res)
11773 adr = AREG((Opcode >> 0) & 7);
11774 AREG((Opcode >> 0) & 7) += 2;
11776 READ_WORD_F(adr, res)
11782 adr += AREG((Opcode >> 9) & 7);
11783 WRITE_WORD_F(adr, res)
11794 adr = AREG((Opcode >> 0) & 7);
11795 AREG((Opcode >> 0) & 7) += 2;
11797 READ_WORD_F(adr, res)
11802 adr = AREG((Opcode >> 9) & 7);
11804 WRITE_WORD_F(adr, res)
11815 adr = AREG((Opcode >> 0) & 7);
11816 AREG((Opcode >> 0) & 7) += 2;
11818 READ_WORD_F(adr, res)
11824 WRITE_WORD_F(adr, res)
11835 adr = AREG((Opcode >> 0) & 7);
11836 AREG((Opcode >> 0) & 7) += 2;
11838 READ_WORD_F(adr, res)
11844 WRITE_WORD_F(adr, res)
11855 adr = AREG((Opcode >> 0) & 7);
11856 AREG((Opcode >> 0) & 7) += 2;
11858 READ_WORD_F(adr, res)
11865 WRITE_WORD_F(adr, res)
11876 adr = AREG((Opcode >> 0) & 7);
11877 AREG((Opcode >> 0) & 7) += 2;
11879 READ_WORD_F(adr, res)
11886 WRITE_WORD_F(adr, res)
11897 adr = AREG((Opcode >> 0) & 7) - 2;
11898 AREG((Opcode >> 0) & 7) = adr;
11900 READ_WORD_F(adr, res)
11905 DREGu16((Opcode >> 9) & 7) = res;
11916 adr = AREG((Opcode >> 0) & 7) - 2;
11917 AREG((Opcode >> 0) & 7) = adr;
11919 READ_WORD_F(adr, res)
11924 adr = AREG((Opcode >> 9) & 7);
11925 WRITE_WORD_F(adr, res)
11936 adr = AREG((Opcode >> 0) & 7) - 2;
11937 AREG((Opcode >> 0) & 7) = adr;
11939 READ_WORD_F(adr, res)
11944 adr = AREG((Opcode >> 9) & 7);
11945 AREG((Opcode >> 9) & 7) += 2;
11946 WRITE_WORD_F(adr, res)
11957 adr = AREG((Opcode >> 0) & 7) - 2;
11958 AREG((Opcode >> 0) & 7) = adr;
11960 READ_WORD_F(adr, res)
11965 adr = AREG((Opcode >> 9) & 7) - 2;
11966 AREG((Opcode >> 9) & 7) = adr;
11967 WRITE_WORD_F(adr, res)
11978 adr = AREG((Opcode >> 0) & 7) - 2;
11979 AREG((Opcode >> 0) & 7) = adr;
11981 READ_WORD_F(adr, res)
11987 adr += AREG((Opcode >> 9) & 7);
11988 WRITE_WORD_F(adr, res)
11999 adr = AREG((Opcode >> 0) & 7) - 2;
12000 AREG((Opcode >> 0) & 7) = adr;
12002 READ_WORD_F(adr, res)
12007 adr = AREG((Opcode >> 9) & 7);
12009 WRITE_WORD_F(adr, res)
12020 adr = AREG((Opcode >> 0) & 7) - 2;
12021 AREG((Opcode >> 0) & 7) = adr;
12023 READ_WORD_F(adr, res)
12029 WRITE_WORD_F(adr, res)
12040 adr = AREG((Opcode >> 0) & 7) - 2;
12041 AREG((Opcode >> 0) & 7) = adr;
12043 READ_WORD_F(adr, res)
12049 WRITE_WORD_F(adr, res)
12060 adr = AREG((Opcode >> 0) & 7) - 2;
12061 AREG((Opcode >> 0) & 7) = adr;
12063 READ_WORD_F(adr, res)
12070 WRITE_WORD_F(adr, res)
12081 adr = AREG((Opcode >> 0) & 7) - 2;
12082 AREG((Opcode >> 0) & 7) = adr;
12084 READ_WORD_F(adr, res)
12091 WRITE_WORD_F(adr, res)
12103 adr += AREG((Opcode >> 0) & 7);
12105 READ_WORD_F(adr, res)
12110 DREGu16((Opcode >> 9) & 7) = res;
12122 adr += AREG((Opcode >> 0) & 7);
12124 READ_WORD_F(adr, res)
12129 adr = AREG((Opcode >> 9) & 7);
12130 WRITE_WORD_F(adr, res)
12142 adr += AREG((Opcode >> 0) & 7);
12144 READ_WORD_F(adr, res)
12149 adr = AREG((Opcode >> 9) & 7);
12150 AREG((Opcode >> 9) & 7) += 2;
12151 WRITE_WORD_F(adr, res)
12163 adr += AREG((Opcode >> 0) & 7);
12165 READ_WORD_F(adr, res)
12170 adr = AREG((Opcode >> 9) & 7) - 2;
12171 AREG((Opcode >> 9) & 7) = adr;
12172 WRITE_WORD_F(adr, res)
12184 adr += AREG((Opcode >> 0) & 7);
12186 READ_WORD_F(adr, res)
12192 adr += AREG((Opcode >> 9) & 7);
12193 WRITE_WORD_F(adr, res)
12205 adr += AREG((Opcode >> 0) & 7);
12207 READ_WORD_F(adr, res)
12212 adr = AREG((Opcode >> 9) & 7);
12214 WRITE_WORD_F(adr, res)
12226 adr += AREG((Opcode >> 0) & 7);
12228 READ_WORD_F(adr, res)
12234 WRITE_WORD_F(adr, res)
12246 adr += AREG((Opcode >> 0) & 7);
12248 READ_WORD_F(adr, res)
12254 WRITE_WORD_F(adr, res)
12266 adr += AREG((Opcode >> 0) & 7);
12268 READ_WORD_F(adr, res)
12275 WRITE_WORD_F(adr, res)
12287 adr += AREG((Opcode >> 0) & 7);
12289 READ_WORD_F(adr, res)
12296 WRITE_WORD_F(adr, res)
12307 adr = AREG((Opcode >> 0) & 7);
12310 READ_WORD_F(adr, res)
12315 DREGu16((Opcode >> 9) & 7) = res;
12326 adr = AREG((Opcode >> 0) & 7);
12329 READ_WORD_F(adr, res)
12334 adr = AREG((Opcode >> 9) & 7);
12335 WRITE_WORD_F(adr, res)
12346 adr = AREG((Opcode >> 0) & 7);
12349 READ_WORD_F(adr, res)
12354 adr = AREG((Opcode >> 9) & 7);
12355 AREG((Opcode >> 9) & 7) += 2;
12356 WRITE_WORD_F(adr, res)
12367 adr = AREG((Opcode >> 0) & 7);
12370 READ_WORD_F(adr, res)
12375 adr = AREG((Opcode >> 9) & 7) - 2;
12376 AREG((Opcode >> 9) & 7) = adr;
12377 WRITE_WORD_F(adr, res)
12388 adr = AREG((Opcode >> 0) & 7);
12391 READ_WORD_F(adr, res)
12397 adr += AREG((Opcode >> 9) & 7);
12398 WRITE_WORD_F(adr, res)
12409 adr = AREG((Opcode >> 0) & 7);
12412 READ_WORD_F(adr, res)
12417 adr = AREG((Opcode >> 9) & 7);
12419 WRITE_WORD_F(adr, res)
12430 adr = AREG((Opcode >> 0) & 7);
12433 READ_WORD_F(adr, res)
12439 WRITE_WORD_F(adr, res)
12450 adr = AREG((Opcode >> 0) & 7);
12453 READ_WORD_F(adr, res)
12459 WRITE_WORD_F(adr, res)
12470 adr = AREG((Opcode >> 0) & 7);
12473 READ_WORD_F(adr, res)
12480 WRITE_WORD_F(adr, res)
12491 adr = AREG((Opcode >> 0) & 7);
12494 READ_WORD_F(adr, res)
12501 WRITE_WORD_F(adr, res)
12514 READ_WORD_F(adr, res)
12519 DREGu16((Opcode >> 9) & 7) = res;
12532 READ_WORD_F(adr, res)
12537 adr = AREG((Opcode >> 9) & 7);
12538 WRITE_WORD_F(adr, res)
12551 READ_WORD_F(adr, res)
12556 adr = AREG((Opcode >> 9) & 7);
12557 AREG((Opcode >> 9) & 7) += 2;
12558 WRITE_WORD_F(adr, res)
12571 READ_WORD_F(adr, res)
12576 adr = AREG((Opcode >> 9) & 7) - 2;
12577 AREG((Opcode >> 9) & 7) = adr;
12578 WRITE_WORD_F(adr, res)
12591 READ_WORD_F(adr, res)
12597 adr += AREG((Opcode >> 9) & 7);
12598 WRITE_WORD_F(adr, res)
12611 READ_WORD_F(adr, res)
12616 adr = AREG((Opcode >> 9) & 7);
12618 WRITE_WORD_F(adr, res)
12631 READ_WORD_F(adr, res)
12637 WRITE_WORD_F(adr, res)
12650 READ_WORD_F(adr, res)
12656 WRITE_WORD_F(adr, res)
12669 READ_WORD_F(adr, res)
12676 WRITE_WORD_F(adr, res)
12689 READ_WORD_F(adr, res)
12696 WRITE_WORD_F(adr, res)
12709 READ_WORD_F(adr, res)
12714 DREGu16((Opcode >> 9) & 7) = res;
12727 READ_WORD_F(adr, res)
12732 adr = AREG((Opcode >> 9) & 7);
12733 WRITE_WORD_F(adr, res)
12746 READ_WORD_F(adr, res)
12751 adr = AREG((Opcode >> 9) & 7);
12752 AREG((Opcode >> 9) & 7) += 2;
12753 WRITE_WORD_F(adr, res)
12766 READ_WORD_F(adr, res)
12771 adr = AREG((Opcode >> 9) & 7) - 2;
12772 AREG((Opcode >> 9) & 7) = adr;
12773 WRITE_WORD_F(adr, res)
12786 READ_WORD_F(adr, res)
12792 adr += AREG((Opcode >> 9) & 7);
12793 WRITE_WORD_F(adr, res)
12806 READ_WORD_F(adr, res)
12811 adr = AREG((Opcode >> 9) & 7);
12813 WRITE_WORD_F(adr, res)
12826 READ_WORD_F(adr, res)
12832 WRITE_WORD_F(adr, res)
12845 READ_WORD_F(adr, res)
12851 WRITE_WORD_F(adr, res)
12864 READ_WORD_F(adr, res)
12871 WRITE_WORD_F(adr, res)
12884 READ_WORD_F(adr, res)
12891 WRITE_WORD_F(adr, res)
12902 adr = GET_SWORD + GET_PC;
12905 READ_WORD_F(adr, res)
12910 DREGu16((Opcode >> 9) & 7) = res;
12921 adr = GET_SWORD + GET_PC;
12924 READ_WORD_F(adr, res)
12929 adr = AREG((Opcode >> 9) & 7);
12930 WRITE_WORD_F(adr, res)
12941 adr = GET_SWORD + GET_PC;
12944 READ_WORD_F(adr, res)
12949 adr = AREG((Opcode >> 9) & 7);
12950 AREG((Opcode >> 9) & 7) += 2;
12951 WRITE_WORD_F(adr, res)
12962 adr = GET_SWORD + GET_PC;
12965 READ_WORD_F(adr, res)
12970 adr = AREG((Opcode >> 9) & 7) - 2;
12971 AREG((Opcode >> 9) & 7) = adr;
12972 WRITE_WORD_F(adr, res)
12983 adr = GET_SWORD + GET_PC;
12986 READ_WORD_F(adr, res)
12992 adr += AREG((Opcode >> 9) & 7);
12993 WRITE_WORD_F(adr, res)
13004 adr = GET_SWORD + GET_PC;
13007 READ_WORD_F(adr, res)
13012 adr = AREG((Opcode >> 9) & 7);
13014 WRITE_WORD_F(adr, res)
13025 adr = GET_SWORD + GET_PC;
13028 READ_WORD_F(adr, res)
13034 WRITE_WORD_F(adr, res)
13045 adr = GET_SWORD + GET_PC;
13048 READ_WORD_F(adr, res)
13054 WRITE_WORD_F(adr, res)
13065 adr = GET_SWORD + GET_PC;
13068 READ_WORD_F(adr, res)
13075 WRITE_WORD_F(adr, res)
13086 adr = GET_SWORD + GET_PC;
13089 READ_WORD_F(adr, res)
13096 WRITE_WORD_F(adr, res)
13110 READ_WORD_F(adr, res)
13115 DREGu16((Opcode >> 9) & 7) = res;
13129 READ_WORD_F(adr, res)
13134 adr = AREG((Opcode >> 9) & 7);
13135 WRITE_WORD_F(adr, res)
13149 READ_WORD_F(adr, res)
13154 adr = AREG((Opcode >> 9) & 7);
13155 AREG((Opcode >> 9) & 7) += 2;
13156 WRITE_WORD_F(adr, res)
13170 READ_WORD_F(adr, res)
13175 adr = AREG((Opcode >> 9) & 7) - 2;
13176 AREG((Opcode >> 9) & 7) = adr;
13177 WRITE_WORD_F(adr, res)
13191 READ_WORD_F(adr, res)
13197 adr += AREG((Opcode >> 9) & 7);
13198 WRITE_WORD_F(adr, res)
13212 READ_WORD_F(adr, res)
13217 adr = AREG((Opcode >> 9) & 7);
13219 WRITE_WORD_F(adr, res)
13233 READ_WORD_F(adr, res)
13239 WRITE_WORD_F(adr, res)
13253 READ_WORD_F(adr, res)
13259 WRITE_WORD_F(adr, res)
13273 READ_WORD_F(adr, res)
13280 WRITE_WORD_F(adr, res)
13294 READ_WORD_F(adr, res)
13301 WRITE_WORD_F(adr, res)
13317 DREGu16((Opcode >> 9) & 7) = res;
13332 adr = AREG((Opcode >> 9) & 7);
13334 WRITE_WORD_F(adr, res)
13350 adr = AREG((Opcode >> 9) & 7);
13351 AREG((Opcode >> 9) & 7) += 2;
13353 WRITE_WORD_F(adr, res)
13369 adr = AREG((Opcode >> 9) & 7) - 2;
13370 AREG((Opcode >> 9) & 7) = adr;
13372 WRITE_WORD_F(adr, res)
13389 adr += AREG((Opcode >> 9) & 7);
13391 WRITE_WORD_F(adr, res)
13407 adr = AREG((Opcode >> 9) & 7);
13410 WRITE_WORD_F(adr, res)
13428 WRITE_WORD_F(adr, res)
13446 WRITE_WORD_F(adr, res)
13465 WRITE_WORD_F(adr, res)
13484 WRITE_WORD_F(adr, res)
13498 READ_WORD_F(adr, res)
13503 DREGu16((Opcode >> 9) & 7) = res;
13517 READ_WORD_F(adr, res)
13522 adr = AREG((Opcode >> 9) & 7);
13523 WRITE_WORD_F(adr, res)
13537 READ_WORD_F(adr, res)
13542 adr = AREG((Opcode >> 9) & 7);
13543 AREG((Opcode >> 9) & 7) += 2;
13544 WRITE_WORD_F(adr, res)
13558 READ_WORD_F(adr, res)
13563 adr = AREG((Opcode >> 9) & 7) - 2;
13564 AREG((Opcode >> 9) & 7) = adr;
13565 WRITE_WORD_F(adr, res)
13579 READ_WORD_F(adr, res)
13585 adr += AREG((Opcode >> 9) & 7);
13586 WRITE_WORD_F(adr, res)
13600 READ_WORD_F(adr, res)
13605 adr = AREG((Opcode >> 9) & 7);
13607 WRITE_WORD_F(adr, res)
13621 READ_WORD_F(adr, res)
13627 WRITE_WORD_F(adr, res)
13641 READ_WORD_F(adr, res)
13647 WRITE_WORD_F(adr, res)
13661 READ_WORD_F(adr, res)
13668 WRITE_WORD_F(adr, res)
13682 READ_WORD_F(adr, res)
13689 WRITE_WORD_F(adr, res)
13703 READ_WORD_F(adr, res)
13708 DREGu16((Opcode >> 9) & 7) = res;
13722 READ_WORD_F(adr, res)
13727 adr = AREG((Opcode >> 9) & 7);
13728 WRITE_WORD_F(adr, res)
13742 READ_WORD_F(adr, res)
13747 adr = AREG((Opcode >> 9) & 7);
13748 AREG((Opcode >> 9) & 7) += 2;
13749 WRITE_WORD_F(adr, res)
13763 READ_WORD_F(adr, res)
13768 adr = AREG((Opcode >> 9) & 7) - 2;
13769 AREG((Opcode >> 9) & 7) = adr;
13770 WRITE_WORD_F(adr, res)
13784 READ_WORD_F(adr, res)
13790 adr += AREG((Opcode >> 9) & 7);
13791 WRITE_WORD_F(adr, res)
13805 READ_WORD_F(adr, res)
13810 adr = AREG((Opcode >> 9) & 7);
13812 WRITE_WORD_F(adr, res)
13826 READ_WORD_F(adr, res)
13832 WRITE_WORD_F(adr, res)
13846 READ_WORD_F(adr, res)
13852 WRITE_WORD_F(adr, res)
13866 READ_WORD_F(adr, res)
13873 WRITE_WORD_F(adr, res)
13887 READ_WORD_F(adr, res)
13894 WRITE_WORD_F(adr, res)
13905 res = (s32)DREGs16((Opcode >> 0) & 7);
13906 AREG((Opcode >> 9) & 7) = res;
13916 res = (s32)AREGs16((Opcode >> 0) & 7);
13917 AREG((Opcode >> 9) & 7) = res;
13927 adr = AREG((Opcode >> 0) & 7);
13929 READSX_WORD_F(adr, res)
13930 AREG((Opcode >> 9) & 7) = res;
13941 adr = AREG((Opcode >> 0) & 7);
13942 AREG((Opcode >> 0) & 7) += 2;
13944 READSX_WORD_F(adr, res)
13945 AREG((Opcode >> 9) & 7) = res;
13956 adr = AREG((Opcode >> 0) & 7) - 2;
13957 AREG((Opcode >> 0) & 7) = adr;
13959 READSX_WORD_F(adr, res)
13960 AREG((Opcode >> 9) & 7) = res;
13972 adr += AREG((Opcode >> 0) & 7);
13974 READSX_WORD_F(adr, res)
13975 AREG((Opcode >> 9) & 7) = res;
13986 adr = AREG((Opcode >> 0) & 7);
13989 READSX_WORD_F(adr, res)
13990 AREG((Opcode >> 9) & 7) = res;
14003 READSX_WORD_F(adr, res)
14004 AREG((Opcode >> 9) & 7) = res;
14017 READSX_WORD_F(adr, res)
14018 AREG((Opcode >> 9) & 7) = res;
14029 adr = GET_SWORD + GET_PC;
14032 READSX_WORD_F(adr, res)
14033 AREG((Opcode >> 9) & 7) = res;
14047 READSX_WORD_F(adr, res)
14048 AREG((Opcode >> 9) & 7) = res;
14060 AREG((Opcode >> 9) & 7) = res;
14073 READSX_WORD_F(adr, res)
14074 AREG((Opcode >> 9) & 7) = res;
14088 READSX_WORD_F(adr, res)
14089 AREG((Opcode >> 9) & 7) = res;
14100 src = DREGu8((Opcode >> 0) & 7);
14101 res = -src - ((flag_X >> 8) & 1);
14102 flag_V = res & src;
14103 flag_N = flag_X = flag_C = res;
14104 flag_NotZ |= res & 0xFF;
14105 DREGu8((Opcode >> 0) & 7) = res;
14115 adr = AREG((Opcode >> 0) & 7);
14117 READ_BYTE_F(adr, src)
14118 res = -src - ((flag_X >> 8) & 1);
14119 flag_V = res & src;
14120 flag_N = flag_X = flag_C = res;
14121 flag_NotZ |= res & 0xFF;
14122 WRITE_BYTE_F(adr, res)
14133 adr = AREG((Opcode >> 0) & 7);
14134 AREG((Opcode >> 0) & 7) += 1;
14136 READ_BYTE_F(adr, src)
14137 res = -src - ((flag_X >> 8) & 1);
14138 flag_V = res & src;
14139 flag_N = flag_X = flag_C = res;
14140 flag_NotZ |= res & 0xFF;
14141 WRITE_BYTE_F(adr, res)
14152 adr = AREG((Opcode >> 0) & 7) - 1;
14153 AREG((Opcode >> 0) & 7) = adr;
14155 READ_BYTE_F(adr, src)
14156 res = -src - ((flag_X >> 8) & 1);
14157 flag_V = res & src;
14158 flag_N = flag_X = flag_C = res;
14159 flag_NotZ |= res & 0xFF;
14160 WRITE_BYTE_F(adr, res)
14172 adr += AREG((Opcode >> 0) & 7);
14174 READ_BYTE_F(adr, src)
14175 res = -src - ((flag_X >> 8) & 1);
14176 flag_V = res & src;
14177 flag_N = flag_X = flag_C = res;
14178 flag_NotZ |= res & 0xFF;
14179 WRITE_BYTE_F(adr, res)
14190 adr = AREG((Opcode >> 0) & 7);
14193 READ_BYTE_F(adr, src)
14194 res = -src - ((flag_X >> 8) & 1);
14195 flag_V = res & src;
14196 flag_N = flag_X = flag_C = res;
14197 flag_NotZ |= res & 0xFF;
14198 WRITE_BYTE_F(adr, res)
14211 READ_BYTE_F(adr, src)
14212 res = -src - ((flag_X >> 8) & 1);
14213 flag_V = res & src;
14214 flag_N = flag_X = flag_C = res;
14215 flag_NotZ |= res & 0xFF;
14216 WRITE_BYTE_F(adr, res)
14229 READ_BYTE_F(adr, src)
14230 res = -src - ((flag_X >> 8) & 1);
14231 flag_V = res & src;
14232 flag_N = flag_X = flag_C = res;
14233 flag_NotZ |= res & 0xFF;
14234 WRITE_BYTE_F(adr, res)
14248 READ_BYTE_F(adr, src)
14249 res = -src - ((flag_X >> 8) & 1);
14250 flag_V = res & src;
14251 flag_N = flag_X = flag_C = res;
14252 flag_NotZ |= res & 0xFF;
14253 WRITE_BYTE_F(adr, res)
14267 READ_BYTE_F(adr, src)
14268 res = -src - ((flag_X >> 8) & 1);
14269 flag_V = res & src;
14270 flag_N = flag_X = flag_C = res;
14271 flag_NotZ |= res & 0xFF;
14272 WRITE_BYTE_F(adr, res)
14283 src = DREGu16((Opcode >> 0) & 7);
14284 res = -src - ((flag_X >> 8) & 1);
14285 flag_V = (res & src) >> 8;
14286 flag_N = flag_X = flag_C = res >> 8;
14287 flag_NotZ |= res & 0xFFFF;
14288 DREGu16((Opcode >> 0) & 7) = res;
14298 adr = AREG((Opcode >> 0) & 7);
14300 READ_WORD_F(adr, src)
14301 res = -src - ((flag_X >> 8) & 1);
14302 flag_V = (res & src) >> 8;
14303 flag_N = flag_X = flag_C = res >> 8;
14304 flag_NotZ |= res & 0xFFFF;
14305 WRITE_WORD_F(adr, res)
14316 adr = AREG((Opcode >> 0) & 7);
14317 AREG((Opcode >> 0) & 7) += 2;
14319 READ_WORD_F(adr, src)
14320 res = -src - ((flag_X >> 8) & 1);
14321 flag_V = (res & src) >> 8;
14322 flag_N = flag_X = flag_C = res >> 8;
14323 flag_NotZ |= res & 0xFFFF;
14324 WRITE_WORD_F(adr, res)
14335 adr = AREG((Opcode >> 0) & 7) - 2;
14336 AREG((Opcode >> 0) & 7) = adr;
14338 READ_WORD_F(adr, src)
14339 res = -src - ((flag_X >> 8) & 1);
14340 flag_V = (res & src) >> 8;
14341 flag_N = flag_X = flag_C = res >> 8;
14342 flag_NotZ |= res & 0xFFFF;
14343 WRITE_WORD_F(adr, res)
14355 adr += AREG((Opcode >> 0) & 7);
14357 READ_WORD_F(adr, src)
14358 res = -src - ((flag_X >> 8) & 1);
14359 flag_V = (res & src) >> 8;
14360 flag_N = flag_X = flag_C = res >> 8;
14361 flag_NotZ |= res & 0xFFFF;
14362 WRITE_WORD_F(adr, res)
14373 adr = AREG((Opcode >> 0) & 7);
14376 READ_WORD_F(adr, src)
14377 res = -src - ((flag_X >> 8) & 1);
14378 flag_V = (res & src) >> 8;
14379 flag_N = flag_X = flag_C = res >> 8;
14380 flag_NotZ |= res & 0xFFFF;
14381 WRITE_WORD_F(adr, res)
14394 READ_WORD_F(adr, src)
14395 res = -src - ((flag_X >> 8) & 1);
14396 flag_V = (res & src) >> 8;
14397 flag_N = flag_X = flag_C = res >> 8;
14398 flag_NotZ |= res & 0xFFFF;
14399 WRITE_WORD_F(adr, res)
14412 READ_WORD_F(adr, src)
14413 res = -src - ((flag_X >> 8) & 1);
14414 flag_V = (res & src) >> 8;
14415 flag_N = flag_X = flag_C = res >> 8;
14416 flag_NotZ |= res & 0xFFFF;
14417 WRITE_WORD_F(adr, res)
14431 READ_WORD_F(adr, src)
14432 res = -src - ((flag_X >> 8) & 1);
14433 flag_V = (res & src) >> 8;
14434 flag_N = flag_X = flag_C = res >> 8;
14435 flag_NotZ |= res & 0xFFFF;
14436 WRITE_WORD_F(adr, res)
14450 READ_WORD_F(adr, src)
14451 res = -src - ((flag_X >> 8) & 1);
14452 flag_V = (res & src) >> 8;
14453 flag_N = flag_X = flag_C = res >> 8;
14454 flag_NotZ |= res & 0xFFFF;
14455 WRITE_WORD_F(adr, res)
14466 src = DREGu32((Opcode >> 0) & 7);
14467 res = -src - ((flag_X >> 8) & 1);
14469 flag_V = (res & src) >> 24;
14470 flag_X = flag_C = (res?1:0)<<8;
14471 // flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
14472 flag_N = res >> 24;
14473 DREGu32((Opcode >> 0) & 7) = res;
14483 adr = AREG((Opcode >> 0) & 7);
14485 READ_LONG_F(adr, src)
14486 res = -src - ((flag_X >> 8) & 1);
14488 flag_V = (res & src) >> 24;
14489 flag_X = flag_C = (res?1:0)<<8;
14490 // flag_X = flag_C = ((src & res & 1) | (src >> 1) | (res >> 1)) >> 23;
14491 flag_N = res >> 24;
14492 WRITE_LONG_F(adr, res)
14503 adr = AREG((Opcode >> 0) & 7);
14504 AREG((Opcode >> 0) & 7) += 4;
14506 READ_LONG_F(adr, src)
14507 res = -src - ((flag_X >> 8) & 1);
14509 flag_V = (res & src) >> 24;
14510 flag_X = flag_C = (res?1:0)<<8;
14511 // flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
14512 flag_N = res >> 24;
14513 WRITE_LONG_F(adr, res)
14524 adr = AREG((Opcode >> 0) & 7) - 4;
14525 AREG((Opcode >> 0) & 7) = adr;
14527 READ_LONG_F(adr, src)
14528 res = -src - ((flag_X >> 8) & 1);
14530 flag_V = (res & src) >> 24;
14531 flag_X = flag_C = (res?1:0)<<8;
14532 // flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
14533 flag_N = res >> 24;
14534 WRITE_LONG_F(adr, res)
14546 adr += AREG((Opcode >> 0) & 7);
14548 READ_LONG_F(adr, src)
14549 res = -src - ((flag_X >> 8) & 1);
14551 flag_V = (res & src) >> 24;
14552 flag_X = flag_C = (res?1:0)<<8;
14553 // flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
14554 flag_N = res >> 24;
14555 WRITE_LONG_F(adr, res)
14566 adr = AREG((Opcode >> 0) & 7);
14569 READ_LONG_F(adr, src)
14570 res = -src - ((flag_X >> 8) & 1);
14572 flag_V = (res & src) >> 24;
14573 flag_X = flag_C = (res?1:0)<<8;
14574 // flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
14575 flag_N = res >> 24;
14576 WRITE_LONG_F(adr, res)
14589 READ_LONG_F(adr, src)
14590 res = -src - ((flag_X >> 8) & 1);
14592 flag_V = (res & src) >> 24;
14593 flag_X = flag_C = (res?1:0)<<8;
14594 // flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
14595 flag_N = res >> 24;
14596 WRITE_LONG_F(adr, res)
14609 READ_LONG_F(adr, src)
14610 res = -src - ((flag_X >> 8) & 1);
14612 flag_V = (res & src) >> 24;
14613 flag_X = flag_C = (res?1:0)<<8;
14614 // flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
14615 flag_N = res >> 24;
14616 WRITE_LONG_F(adr, res)
14630 READ_LONG_F(adr, src)
14631 res = -src - ((flag_X >> 8) & 1);
14633 flag_V = (res & src) >> 24;
14634 flag_X = flag_C = (res?1:0)<<8;
14635 // flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
14636 flag_N = res >> 24;
14637 WRITE_LONG_F(adr, res)
14651 READ_LONG_F(adr, src)
14652 res = -src - ((flag_X >> 8) & 1);
14654 flag_V = (res & src) >> 24;
14655 flag_X = flag_C = (res?1:0)<<8;
14656 // flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
14657 flag_N = res >> 24;
14658 WRITE_LONG_F(adr, res)
14670 flag_N = flag_NotZ = flag_V = flag_C = 0;
14671 DREGu8((Opcode >> 0) & 7) = res;
14681 adr = AREG((Opcode >> 0) & 7);
14683 flag_N = flag_NotZ = flag_V = flag_C = 0;
14685 WRITE_BYTE_F(adr, res)
14696 adr = AREG((Opcode >> 0) & 7);
14697 AREG((Opcode >> 0) & 7) += 1;
14699 flag_N = flag_NotZ = flag_V = flag_C = 0;
14701 WRITE_BYTE_F(adr, res)
14712 adr = AREG((Opcode >> 0) & 7) - 1;
14713 AREG((Opcode >> 0) & 7) = adr;
14715 flag_N = flag_NotZ = flag_V = flag_C = 0;
14717 WRITE_BYTE_F(adr, res)
14729 adr += AREG((Opcode >> 0) & 7);
14731 flag_N = flag_NotZ = flag_V = flag_C = 0;
14733 WRITE_BYTE_F(adr, res)
14744 adr = AREG((Opcode >> 0) & 7);
14747 flag_N = flag_NotZ = flag_V = flag_C = 0;
14749 WRITE_BYTE_F(adr, res)
14762 flag_N = flag_NotZ = flag_V = flag_C = 0;
14764 WRITE_BYTE_F(adr, res)
14777 flag_N = flag_NotZ = flag_V = flag_C = 0;
14779 WRITE_BYTE_F(adr, res)
14793 flag_N = flag_NotZ = flag_V = flag_C = 0;
14795 WRITE_BYTE_F(adr, res)
14809 flag_N = flag_NotZ = flag_V = flag_C = 0;
14811 WRITE_BYTE_F(adr, res)
14823 flag_N = flag_NotZ = flag_V = flag_C = 0;
14824 DREGu16((Opcode >> 0) & 7) = res;
14834 adr = AREG((Opcode >> 0) & 7);
14836 flag_N = flag_NotZ = flag_V = flag_C = 0;
14838 WRITE_WORD_F(adr, res)
14849 adr = AREG((Opcode >> 0) & 7);
14850 AREG((Opcode >> 0) & 7) += 2;
14852 flag_N = flag_NotZ = flag_V = flag_C = 0;
14854 WRITE_WORD_F(adr, res)
14865 adr = AREG((Opcode >> 0) & 7) - 2;
14866 AREG((Opcode >> 0) & 7) = adr;
14868 flag_N = flag_NotZ = flag_V = flag_C = 0;
14870 WRITE_WORD_F(adr, res)
14882 adr += AREG((Opcode >> 0) & 7);
14884 flag_N = flag_NotZ = flag_V = flag_C = 0;
14886 WRITE_WORD_F(adr, res)
14897 adr = AREG((Opcode >> 0) & 7);
14900 flag_N = flag_NotZ = flag_V = flag_C = 0;
14902 WRITE_WORD_F(adr, res)
14915 flag_N = flag_NotZ = flag_V = flag_C = 0;
14917 WRITE_WORD_F(adr, res)
14930 flag_N = flag_NotZ = flag_V = flag_C = 0;
14932 WRITE_WORD_F(adr, res)
14946 flag_N = flag_NotZ = flag_V = flag_C = 0;
14948 WRITE_WORD_F(adr, res)
14962 flag_N = flag_NotZ = flag_V = flag_C = 0;
14964 WRITE_WORD_F(adr, res)
14976 flag_N = flag_NotZ = flag_V = flag_C = 0;
14977 DREGu32((Opcode >> 0) & 7) = res;
14987 adr = AREG((Opcode >> 0) & 7);
14989 flag_N = flag_NotZ = flag_V = flag_C = 0;
14991 WRITE_LONG_F(adr, res)
15002 adr = AREG((Opcode >> 0) & 7);
15003 AREG((Opcode >> 0) & 7) += 4;
15005 flag_N = flag_NotZ = flag_V = flag_C = 0;
15007 WRITE_LONG_F(adr, res)
15018 adr = AREG((Opcode >> 0) & 7) - 4;
15019 AREG((Opcode >> 0) & 7) = adr;
15021 flag_N = flag_NotZ = flag_V = flag_C = 0;
15023 WRITE_LONG_F(adr, res)
15035 adr += AREG((Opcode >> 0) & 7);
15037 flag_N = flag_NotZ = flag_V = flag_C = 0;
15039 WRITE_LONG_F(adr, res)
15050 adr = AREG((Opcode >> 0) & 7);
15053 flag_N = flag_NotZ = flag_V = flag_C = 0;
15055 WRITE_LONG_F(adr, res)
15068 flag_N = flag_NotZ = flag_V = flag_C = 0;
15070 WRITE_LONG_F(adr, res)
15083 flag_N = flag_NotZ = flag_V = flag_C = 0;
15085 WRITE_LONG_F(adr, res)
15099 flag_N = flag_NotZ = flag_V = flag_C = 0;
15101 WRITE_LONG_F(adr, res)
15115 flag_N = flag_NotZ = flag_V = flag_C = 0;
15117 WRITE_LONG_F(adr, res)
15128 src = DREGu8((Opcode >> 0) & 7);
15130 flag_V = res & src;
15131 flag_N = flag_X = flag_C = res;
15132 flag_NotZ = res & 0xFF;
15133 DREGu8((Opcode >> 0) & 7) = res;
15143 adr = AREG((Opcode >> 0) & 7);
15145 READ_BYTE_F(adr, src)
15147 flag_V = res & src;
15148 flag_N = flag_X = flag_C = res;
15149 flag_NotZ = res & 0xFF;
15150 WRITE_BYTE_F(adr, res)
15161 adr = AREG((Opcode >> 0) & 7);
15162 AREG((Opcode >> 0) & 7) += 1;
15164 READ_BYTE_F(adr, src)
15166 flag_V = res & src;
15167 flag_N = flag_X = flag_C = res;
15168 flag_NotZ = res & 0xFF;
15169 WRITE_BYTE_F(adr, res)
15180 adr = AREG((Opcode >> 0) & 7) - 1;
15181 AREG((Opcode >> 0) & 7) = adr;
15183 READ_BYTE_F(adr, src)
15185 flag_V = res & src;
15186 flag_N = flag_X = flag_C = res;
15187 flag_NotZ = res & 0xFF;
15188 WRITE_BYTE_F(adr, res)
15200 adr += AREG((Opcode >> 0) & 7);
15202 READ_BYTE_F(adr, src)
15204 flag_V = res & src;
15205 flag_N = flag_X = flag_C = res;
15206 flag_NotZ = res & 0xFF;
15207 WRITE_BYTE_F(adr, res)
15218 adr = AREG((Opcode >> 0) & 7);
15221 READ_BYTE_F(adr, src)
15223 flag_V = res & src;
15224 flag_N = flag_X = flag_C = res;
15225 flag_NotZ = res & 0xFF;
15226 WRITE_BYTE_F(adr, res)
15239 READ_BYTE_F(adr, src)
15241 flag_V = res & src;
15242 flag_N = flag_X = flag_C = res;
15243 flag_NotZ = res & 0xFF;
15244 WRITE_BYTE_F(adr, res)
15257 READ_BYTE_F(adr, src)
15259 flag_V = res & src;
15260 flag_N = flag_X = flag_C = res;
15261 flag_NotZ = res & 0xFF;
15262 WRITE_BYTE_F(adr, res)
15276 READ_BYTE_F(adr, src)
15278 flag_V = res & src;
15279 flag_N = flag_X = flag_C = res;
15280 flag_NotZ = res & 0xFF;
15281 WRITE_BYTE_F(adr, res)
15295 READ_BYTE_F(adr, src)
15297 flag_V = res & src;
15298 flag_N = flag_X = flag_C = res;
15299 flag_NotZ = res & 0xFF;
15300 WRITE_BYTE_F(adr, res)
15311 src = DREGu16((Opcode >> 0) & 7);
15313 flag_V = (res & src) >> 8;
15314 flag_N = flag_X = flag_C = res >> 8;
15315 flag_NotZ = res & 0xFFFF;
15316 DREGu16((Opcode >> 0) & 7) = res;
15326 adr = AREG((Opcode >> 0) & 7);
15328 READ_WORD_F(adr, src)
15330 flag_V = (res & src) >> 8;
15331 flag_N = flag_X = flag_C = res >> 8;
15332 flag_NotZ = res & 0xFFFF;
15333 WRITE_WORD_F(adr, res)
15344 adr = AREG((Opcode >> 0) & 7);
15345 AREG((Opcode >> 0) & 7) += 2;
15347 READ_WORD_F(adr, src)
15349 flag_V = (res & src) >> 8;
15350 flag_N = flag_X = flag_C = res >> 8;
15351 flag_NotZ = res & 0xFFFF;
15352 WRITE_WORD_F(adr, res)
15363 adr = AREG((Opcode >> 0) & 7) - 2;
15364 AREG((Opcode >> 0) & 7) = adr;
15366 READ_WORD_F(adr, src)
15368 flag_V = (res & src) >> 8;
15369 flag_N = flag_X = flag_C = res >> 8;
15370 flag_NotZ = res & 0xFFFF;
15371 WRITE_WORD_F(adr, res)
15383 adr += AREG((Opcode >> 0) & 7);
15385 READ_WORD_F(adr, src)
15387 flag_V = (res & src) >> 8;
15388 flag_N = flag_X = flag_C = res >> 8;
15389 flag_NotZ = res & 0xFFFF;
15390 WRITE_WORD_F(adr, res)
15401 adr = AREG((Opcode >> 0) & 7);
15404 READ_WORD_F(adr, src)
15406 flag_V = (res & src) >> 8;
15407 flag_N = flag_X = flag_C = res >> 8;
15408 flag_NotZ = res & 0xFFFF;
15409 WRITE_WORD_F(adr, res)
15422 READ_WORD_F(adr, src)
15424 flag_V = (res & src) >> 8;
15425 flag_N = flag_X = flag_C = res >> 8;
15426 flag_NotZ = res & 0xFFFF;
15427 WRITE_WORD_F(adr, res)
15440 READ_WORD_F(adr, src)
15442 flag_V = (res & src) >> 8;
15443 flag_N = flag_X = flag_C = res >> 8;
15444 flag_NotZ = res & 0xFFFF;
15445 WRITE_WORD_F(adr, res)
15459 READ_WORD_F(adr, src)
15461 flag_V = (res & src) >> 8;
15462 flag_N = flag_X = flag_C = res >> 8;
15463 flag_NotZ = res & 0xFFFF;
15464 WRITE_WORD_F(adr, res)
15478 READ_WORD_F(adr, src)
15480 flag_V = (res & src) >> 8;
15481 flag_N = flag_X = flag_C = res >> 8;
15482 flag_NotZ = res & 0xFFFF;
15483 WRITE_WORD_F(adr, res)
15494 src = DREGu32((Opcode >> 0) & 7);
15497 flag_V = (res & src) >> 24;
15498 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
15499 flag_N = res >> 24;
15500 DREGu32((Opcode >> 0) & 7) = res;
15510 adr = AREG((Opcode >> 0) & 7);
15512 READ_LONG_F(adr, src)
15515 flag_V = (res & src) >> 24;
15516 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
15517 flag_N = res >> 24;
15518 WRITE_LONG_F(adr, res)
15529 adr = AREG((Opcode >> 0) & 7);
15530 AREG((Opcode >> 0) & 7) += 4;
15532 READ_LONG_F(adr, src)
15535 flag_V = (res & src) >> 24;
15536 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
15537 flag_N = res >> 24;
15538 WRITE_LONG_F(adr, res)
15549 adr = AREG((Opcode >> 0) & 7) - 4;
15550 AREG((Opcode >> 0) & 7) = adr;
15552 READ_LONG_F(adr, src)
15555 flag_V = (res & src) >> 24;
15556 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
15557 flag_N = res >> 24;
15558 WRITE_LONG_F(adr, res)
15570 adr += AREG((Opcode >> 0) & 7);
15572 READ_LONG_F(adr, src)
15575 flag_V = (res & src) >> 24;
15576 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
15577 flag_N = res >> 24;
15578 WRITE_LONG_F(adr, res)
15589 adr = AREG((Opcode >> 0) & 7);
15592 READ_LONG_F(adr, src)
15595 flag_V = (res & src) >> 24;
15596 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
15597 flag_N = res >> 24;
15598 WRITE_LONG_F(adr, res)
15611 READ_LONG_F(adr, src)
15614 flag_V = (res & src) >> 24;
15615 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
15616 flag_N = res >> 24;
15617 WRITE_LONG_F(adr, res)
15630 READ_LONG_F(adr, src)
15633 flag_V = (res & src) >> 24;
15634 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
15635 flag_N = res >> 24;
15636 WRITE_LONG_F(adr, res)
15650 READ_LONG_F(adr, src)
15653 flag_V = (res & src) >> 24;
15654 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
15655 flag_N = res >> 24;
15656 WRITE_LONG_F(adr, res)
15670 READ_LONG_F(adr, src)
15673 flag_V = (res & src) >> 24;
15674 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
15675 flag_N = res >> 24;
15676 WRITE_LONG_F(adr, res)
15687 src = DREGu8((Opcode >> 0) & 7);
15692 flag_NotZ = res & 0xFF;
15693 DREGu8((Opcode >> 0) & 7) = res;
15703 adr = AREG((Opcode >> 0) & 7);
15705 READ_BYTE_F(adr, src)
15710 flag_NotZ = res & 0xFF;
15711 WRITE_BYTE_F(adr, res)
15722 adr = AREG((Opcode >> 0) & 7);
15723 AREG((Opcode >> 0) & 7) += 1;
15725 READ_BYTE_F(adr, src)
15730 flag_NotZ = res & 0xFF;
15731 WRITE_BYTE_F(adr, res)
15742 adr = AREG((Opcode >> 0) & 7) - 1;
15743 AREG((Opcode >> 0) & 7) = adr;
15745 READ_BYTE_F(adr, src)
15750 flag_NotZ = res & 0xFF;
15751 WRITE_BYTE_F(adr, res)
15763 adr += AREG((Opcode >> 0) & 7);
15765 READ_BYTE_F(adr, src)
15770 flag_NotZ = res & 0xFF;
15771 WRITE_BYTE_F(adr, res)
15782 adr = AREG((Opcode >> 0) & 7);
15785 READ_BYTE_F(adr, src)
15790 flag_NotZ = res & 0xFF;
15791 WRITE_BYTE_F(adr, res)
15804 READ_BYTE_F(adr, src)
15809 flag_NotZ = res & 0xFF;
15810 WRITE_BYTE_F(adr, res)
15823 READ_BYTE_F(adr, src)
15828 flag_NotZ = res & 0xFF;
15829 WRITE_BYTE_F(adr, res)
15843 READ_BYTE_F(adr, src)
15848 flag_NotZ = res & 0xFF;
15849 WRITE_BYTE_F(adr, res)
15863 READ_BYTE_F(adr, src)
15868 flag_NotZ = res & 0xFF;
15869 WRITE_BYTE_F(adr, res)
15880 src = DREGu16((Opcode >> 0) & 7);
15884 flag_NotZ = res & 0xFFFF;
15886 DREGu16((Opcode >> 0) & 7) = res;
15896 adr = AREG((Opcode >> 0) & 7);
15898 READ_WORD_F(adr, src)
15902 flag_NotZ = res & 0xFFFF;
15904 WRITE_WORD_F(adr, res)
15915 adr = AREG((Opcode >> 0) & 7);
15916 AREG((Opcode >> 0) & 7) += 2;
15918 READ_WORD_F(adr, src)
15922 flag_NotZ = res & 0xFFFF;
15924 WRITE_WORD_F(adr, res)
15935 adr = AREG((Opcode >> 0) & 7) - 2;
15936 AREG((Opcode >> 0) & 7) = adr;
15938 READ_WORD_F(adr, src)
15942 flag_NotZ = res & 0xFFFF;
15944 WRITE_WORD_F(adr, res)
15956 adr += AREG((Opcode >> 0) & 7);
15958 READ_WORD_F(adr, src)
15962 flag_NotZ = res & 0xFFFF;
15964 WRITE_WORD_F(adr, res)
15975 adr = AREG((Opcode >> 0) & 7);
15978 READ_WORD_F(adr, src)
15982 flag_NotZ = res & 0xFFFF;
15984 WRITE_WORD_F(adr, res)
15997 READ_WORD_F(adr, src)
16001 flag_NotZ = res & 0xFFFF;
16003 WRITE_WORD_F(adr, res)
16016 READ_WORD_F(adr, src)
16020 flag_NotZ = res & 0xFFFF;
16022 WRITE_WORD_F(adr, res)
16036 READ_WORD_F(adr, src)
16040 flag_NotZ = res & 0xFFFF;
16042 WRITE_WORD_F(adr, res)
16056 READ_WORD_F(adr, src)
16060 flag_NotZ = res & 0xFFFF;
16062 WRITE_WORD_F(adr, res)
16073 src = DREGu32((Opcode >> 0) & 7);
16078 flag_N = res >> 24;
16079 DREGu32((Opcode >> 0) & 7) = res;
16089 adr = AREG((Opcode >> 0) & 7);
16091 READ_LONG_F(adr, src)
16096 flag_N = res >> 24;
16097 WRITE_LONG_F(adr, res)
16108 adr = AREG((Opcode >> 0) & 7);
16109 AREG((Opcode >> 0) & 7) += 4;
16111 READ_LONG_F(adr, src)
16116 flag_N = res >> 24;
16117 WRITE_LONG_F(adr, res)
16128 adr = AREG((Opcode >> 0) & 7) - 4;
16129 AREG((Opcode >> 0) & 7) = adr;
16131 READ_LONG_F(adr, src)
16136 flag_N = res >> 24;
16137 WRITE_LONG_F(adr, res)
16149 adr += AREG((Opcode >> 0) & 7);
16151 READ_LONG_F(adr, src)
16156 flag_N = res >> 24;
16157 WRITE_LONG_F(adr, res)
16168 adr = AREG((Opcode >> 0) & 7);
16171 READ_LONG_F(adr, src)
16176 flag_N = res >> 24;
16177 WRITE_LONG_F(adr, res)
16190 READ_LONG_F(adr, src)
16195 flag_N = res >> 24;
16196 WRITE_LONG_F(adr, res)
16209 READ_LONG_F(adr, src)
16214 flag_N = res >> 24;
16215 WRITE_LONG_F(adr, res)
16229 READ_LONG_F(adr, src)
16234 flag_N = res >> 24;
16235 WRITE_LONG_F(adr, res)
16249 READ_LONG_F(adr, src)
16254 flag_N = res >> 24;
16255 WRITE_LONG_F(adr, res)
16267 DREGu16((Opcode >> 0) & 7) = res;
16278 adr = AREG((Opcode >> 0) & 7);
16280 WRITE_WORD_F(adr, res)
16292 adr = AREG((Opcode >> 0) & 7);
16293 AREG((Opcode >> 0) & 7) += 2;
16295 WRITE_WORD_F(adr, res)
16307 adr = AREG((Opcode >> 0) & 7) - 2;
16308 AREG((Opcode >> 0) & 7) = adr;
16310 WRITE_WORD_F(adr, res)
16323 adr += AREG((Opcode >> 0) & 7);
16325 WRITE_WORD_F(adr, res)
16337 adr = AREG((Opcode >> 0) & 7);
16340 WRITE_WORD_F(adr, res)
16354 WRITE_WORD_F(adr, res)
16368 WRITE_WORD_F(adr, res)
16383 WRITE_WORD_F(adr, res)
16398 WRITE_WORD_F(adr, res)
16409 res = DREGu16((Opcode >> 0) & 7);
16420 adr = AREG((Opcode >> 0) & 7);
16422 READ_WORD_F(adr, res)
16434 adr = AREG((Opcode >> 0) & 7);
16435 AREG((Opcode >> 0) & 7) += 2;
16437 READ_WORD_F(adr, res)
16449 adr = AREG((Opcode >> 0) & 7) - 2;
16450 AREG((Opcode >> 0) & 7) = adr;
16452 READ_WORD_F(adr, res)
16465 adr += AREG((Opcode >> 0) & 7);
16467 READ_WORD_F(adr, res)
16479 adr = AREG((Opcode >> 0) & 7);
16482 READ_WORD_F(adr, res)
16496 READ_WORD_F(adr, res)
16510 READ_WORD_F(adr, res)
16522 adr = GET_SWORD + GET_PC;
16525 READ_WORD_F(adr, res)
16540 READ_WORD_F(adr, res)
16566 READ_WORD_F(adr, res)
16581 READ_WORD_F(adr, res)
16595 res = DREGu16((Opcode >> 0) & 7);
16603 CHECK_INT_TO_JUMP(12)
16607 SET_PC(execute_exception(ctx, M68K_PRIVILEGE_VIOLATION_EX, GET_PC-2, GET_SR));
16608 #ifdef USE_CYCLONE_TIMING
16625 adr = AREG((Opcode >> 0) & 7);
16627 READ_WORD_F(adr, res)
16636 CHECK_INT_TO_JUMP(16)
16640 SET_PC(execute_exception(ctx, M68K_PRIVILEGE_VIOLATION_EX, GET_PC-2, GET_SR));
16641 #ifdef USE_CYCLONE_TIMING
16658 adr = AREG((Opcode >> 0) & 7);
16659 AREG((Opcode >> 0) & 7) += 2;
16661 READ_WORD_F(adr, res)
16670 CHECK_INT_TO_JUMP(16)
16674 SET_PC(execute_exception(ctx, M68K_PRIVILEGE_VIOLATION_EX, GET_PC-2, GET_SR));
16675 #ifdef USE_CYCLONE_TIMING
16692 adr = AREG((Opcode >> 0) & 7) - 2;
16693 AREG((Opcode >> 0) & 7) = adr;
16695 READ_WORD_F(adr, res)
16704 CHECK_INT_TO_JUMP(18)
16708 SET_PC(execute_exception(ctx, M68K_PRIVILEGE_VIOLATION_EX, GET_PC-2, GET_SR));
16709 #ifdef USE_CYCLONE_TIMING
16727 adr += AREG((Opcode >> 0) & 7);
16729 READ_WORD_F(adr, res)
16738 CHECK_INT_TO_JUMP(20)
16742 SET_PC(execute_exception(ctx, M68K_PRIVILEGE_VIOLATION_EX, GET_PC-2, GET_SR));
16743 #ifdef USE_CYCLONE_TIMING
16760 adr = AREG((Opcode >> 0) & 7);
16763 READ_WORD_F(adr, res)
16772 CHECK_INT_TO_JUMP(22)
16776 SET_PC(execute_exception(ctx, M68K_PRIVILEGE_VIOLATION_EX, GET_PC-2, GET_SR));
16777 #ifdef USE_CYCLONE_TIMING
16797 READ_WORD_F(adr, res)
16806 CHECK_INT_TO_JUMP(20)
16810 SET_PC(execute_exception(ctx, M68K_PRIVILEGE_VIOLATION_EX, GET_PC-2, GET_SR));
16811 #ifdef USE_CYCLONE_TIMING
16830 READ_WORD_F(adr, res)
16839 CHECK_INT_TO_JUMP(24)
16843 SET_PC(execute_exception(ctx, M68K_PRIVILEGE_VIOLATION_EX, GET_PC-2, GET_SR));
16844 #ifdef USE_CYCLONE_TIMING
16861 adr = GET_SWORD + GET_PC;
16864 READ_WORD_F(adr, res)
16873 CHECK_INT_TO_JUMP(20)
16877 SET_PC(execute_exception(ctx, M68K_PRIVILEGE_VIOLATION_EX, GET_PC-2, GET_SR));
16878 #ifdef USE_CYCLONE_TIMING
16898 READ_WORD_F(adr, res)
16907 CHECK_INT_TO_JUMP(22)
16911 SET_PC(execute_exception(ctx, M68K_PRIVILEGE_VIOLATION_EX, GET_PC-2, GET_SR));
16912 #ifdef USE_CYCLONE_TIMING
16937 CHECK_INT_TO_JUMP(16)
16941 SET_PC(execute_exception(ctx, M68K_PRIVILEGE_VIOLATION_EX, GET_PC-2, GET_SR));
16942 #ifdef USE_CYCLONE_TIMING
16962 READ_WORD_F(adr, res)
16971 CHECK_INT_TO_JUMP(16)
16975 SET_PC(execute_exception(ctx, M68K_PRIVILEGE_VIOLATION_EX, GET_PC-2, GET_SR));
16976 #ifdef USE_CYCLONE_TIMING
16996 READ_WORD_F(adr, res)
17005 CHECK_INT_TO_JUMP(18)
17009 SET_PC(execute_exception(ctx, M68K_PRIVILEGE_VIOLATION_EX, GET_PC-2, GET_SR));
17010 #ifdef USE_CYCLONE_TIMING
17025 dst = DREGu8((Opcode >> 0) & 7);
17026 res = -dst - ((flag_X >> M68K_SR_X_SFT) & 1);
17031 if (((res|dst) & 0x0f) == 0) res = (res & 0xf0) + 6;
17032 res = (res + 0x9a) & 0xFF;
17033 DREGu8((Opcode >> 0) & 7) = res;
17036 flag_X = flag_C = M68K_SR_C;
17038 else flag_V = flag_X = flag_C = 0;
17049 adr = AREG((Opcode >> 0) & 7);
17051 READ_BYTE_F(adr, dst)
17052 res = -dst - ((flag_X >> M68K_SR_X_SFT) & 1);
17057 if (((res|dst) & 0x0f) == 0) res = (res & 0xf0) + 6;
17058 res = (res + 0x9a) & 0xFF;
17059 WRITE_BYTE_F(adr, res)
17062 flag_X = flag_C = M68K_SR_C;
17064 else flag_V = flag_X = flag_C = 0;
17076 adr = AREG((Opcode >> 0) & 7);
17077 AREG((Opcode >> 0) & 7) += 1;
17079 READ_BYTE_F(adr, dst)
17080 res = -dst - ((flag_X >> M68K_SR_X_SFT) & 1);
17085 if (((res|dst) & 0x0f) == 0) res = (res & 0xf0) + 6;
17086 res = (res + 0x9a) & 0xFF;
17087 WRITE_BYTE_F(adr, res)
17090 flag_X = flag_C = M68K_SR_C;
17092 else flag_V = flag_X = flag_C = 0;
17104 adr = AREG((Opcode >> 0) & 7) - 1;
17105 AREG((Opcode >> 0) & 7) = adr;
17107 READ_BYTE_F(adr, dst)
17108 res = -dst - ((flag_X >> M68K_SR_X_SFT) & 1);
17113 if (((res|dst) & 0x0f) == 0) res = (res & 0xf0) + 6;
17114 res = (res + 0x9a) & 0xFF;
17115 WRITE_BYTE_F(adr, res)
17118 flag_X = flag_C = M68K_SR_C;
17120 else flag_V = flag_X = flag_C = 0;
17133 adr += AREG((Opcode >> 0) & 7);
17135 READ_BYTE_F(adr, dst)
17136 res = -dst - ((flag_X >> M68K_SR_X_SFT) & 1);
17141 if (((res|dst) & 0x0f) == 0) res = (res & 0xf0) + 6;
17142 res = (res + 0x9a) & 0xFF;
17143 WRITE_BYTE_F(adr, res)
17146 flag_X = flag_C = M68K_SR_C;
17148 else flag_V = flag_X = flag_C = 0;
17160 adr = AREG((Opcode >> 0) & 7);
17163 READ_BYTE_F(adr, dst)
17164 res = -dst - ((flag_X >> M68K_SR_X_SFT) & 1);
17169 if (((res|dst) & 0x0f) == 0) res = (res & 0xf0) + 6;
17170 res = (res + 0x9a) & 0xFF;
17171 WRITE_BYTE_F(adr, res)
17174 flag_X = flag_C = M68K_SR_C;
17176 else flag_V = flag_X = flag_C = 0;
17190 READ_BYTE_F(adr, dst)
17191 res = -dst - ((flag_X >> M68K_SR_X_SFT) & 1);
17196 if (((res|dst) & 0x0f) == 0) res = (res & 0xf0) + 6;
17197 res = (res + 0x9a) & 0xFF;
17198 WRITE_BYTE_F(adr, res)
17201 flag_X = flag_C = M68K_SR_C;
17203 else flag_V = flag_X = flag_C = 0;
17217 READ_BYTE_F(adr, dst)
17218 res = -dst - ((flag_X >> M68K_SR_X_SFT) & 1);
17223 if (((res|dst) & 0x0f) == 0) res = (res & 0xf0) + 6;
17224 res = (res + 0x9a) & 0xFF;
17225 WRITE_BYTE_F(adr, res)
17228 flag_X = flag_C = M68K_SR_C;
17230 else flag_V = flag_X = flag_C = 0;
17245 READ_BYTE_F(adr, dst)
17246 res = -dst - ((flag_X >> M68K_SR_X_SFT) & 1);
17251 if (((res|dst) & 0x0f) == 0) res = (res & 0xf0) + 6;
17252 res = (res + 0x9a) & 0xFF;
17253 WRITE_BYTE_F(adr, res)
17256 flag_X = flag_C = M68K_SR_C;
17258 else flag_V = flag_X = flag_C = 0;
17273 READ_BYTE_F(adr, dst)
17274 res = -dst - ((flag_X >> M68K_SR_X_SFT) & 1);
17279 if (((res|dst) & 0x0f) == 0) res = (res & 0xf0) + 6;
17280 res = (res + 0x9a) & 0xFF;
17281 WRITE_BYTE_F(adr, res)
17284 flag_X = flag_C = M68K_SR_C;
17286 else flag_V = flag_X = flag_C = 0;
17298 adr = AREG((Opcode >> 0) & 7);
17312 adr += AREG((Opcode >> 0) & 7);
17325 adr = AREG((Opcode >> 0) & 7);
17365 adr = GET_SWORD + GET_PC;
17393 res = DREGu32((Opcode >> 0) & 7);
17394 res = (res >> 16) | (res << 16);
17398 flag_N = res >> 24;
17399 DREGu32((Opcode >> 0) & 7) = res;
17412 adr = AREG((Opcode >> 0) & 7);
17413 psrc = &DREGu32(0);
17420 WRITE_WORD_F(adr, *psrc)
17424 } while (res >>= 1);
17426 ctx->io_cycle_counter -= (adr - dst) * 2;
17427 #ifdef USE_CYCLONE_TIMING
17443 adr = AREG((Opcode >> 0) & 7);
17444 psrc = &AREGu32(7);
17452 WRITE_WORD_F(adr, *psrc)
17455 } while (res >>= 1);
17456 AREG((Opcode >> 0) & 7) = adr;
17458 ctx->io_cycle_counter -= (dst - adr) * 2;
17472 adr += AREG((Opcode >> 0) & 7);
17473 psrc = &DREGu32(0);
17480 WRITE_WORD_F(adr, *psrc)
17484 } while (res >>= 1);
17486 ctx->io_cycle_counter -= (adr - dst) * 2;
17487 #ifdef USE_CYCLONE_TIMING
17503 adr = AREG((Opcode >> 0) & 7);
17505 psrc = &DREGu32(0);
17512 WRITE_WORD_F(adr, *psrc)
17516 } while (res >>= 1);
17518 ctx->io_cycle_counter -= (adr - dst) * 2;
17519 #ifdef USE_CYCLONE_TIMING
17536 psrc = &DREGu32(0);
17543 WRITE_WORD_F(adr, *psrc)
17547 } while (res >>= 1);
17549 ctx->io_cycle_counter -= (adr - dst) * 2;
17550 #ifdef USE_CYCLONE_TIMING
17567 psrc = &DREGu32(0);
17574 WRITE_WORD_F(adr, *psrc)
17578 } while (res >>= 1);
17580 ctx->io_cycle_counter -= (adr - dst) * 2;
17581 #ifdef USE_CYCLONE_TIMING
17598 psrc = &AREGu32(7);
17606 WRITE_WORD_F(adr, *psrc)
17609 } while (res >>= 1);
17612 ctx->io_cycle_counter -= (dst - adr) * 2;
17625 adr = AREG((Opcode >> 0) & 7);
17626 psrc = &DREGu32(0);
17633 WRITE_LONG_F(adr, *psrc)
17637 } while (res >>= 1);
17639 ctx->io_cycle_counter -= (adr - dst) * 2;
17640 #ifdef USE_CYCLONE_TIMING
17656 adr = AREG((Opcode >> 0) & 7);
17657 psrc = &AREGu32(7);
17665 WRITE_LONG_DEC_F(adr, *psrc)
17668 } while (res >>= 1);
17669 AREG((Opcode >> 0) & 7) = adr;
17671 ctx->io_cycle_counter -= (dst - adr) * 2;
17685 adr += AREG((Opcode >> 0) & 7);
17686 psrc = &DREGu32(0);
17693 WRITE_LONG_F(adr, *psrc)
17697 } while (res >>= 1);
17699 ctx->io_cycle_counter -= (adr - dst) * 2;
17700 #ifdef USE_CYCLONE_TIMING
17716 adr = AREG((Opcode >> 0) & 7);
17718 psrc = &DREGu32(0);
17725 WRITE_LONG_F(adr, *psrc)
17729 } while (res >>= 1);
17731 ctx->io_cycle_counter -= (adr - dst) * 2;
17732 #ifdef USE_CYCLONE_TIMING
17749 psrc = &DREGu32(0);
17756 WRITE_LONG_F(adr, *psrc)
17760 } while (res >>= 1);
17762 ctx->io_cycle_counter -= (adr - dst) * 2;
17763 #ifdef USE_CYCLONE_TIMING
17780 psrc = &DREGu32(0);
17787 WRITE_LONG_F(adr, *psrc)
17791 } while (res >>= 1);
17793 ctx->io_cycle_counter -= (adr - dst) * 2;
17794 #ifdef USE_CYCLONE_TIMING
17811 psrc = &AREGu32(7);
17819 WRITE_LONG_DEC_F(adr, *psrc)
17822 } while (res >>= 1);
17825 ctx->io_cycle_counter -= (dst - adr) * 2;
17835 res = (s32)DREGs8((Opcode >> 0) & 7);
17840 DREGu16((Opcode >> 0) & 7) = res;
17850 res = (s32)DREGs16((Opcode >> 0) & 7);
17855 DREGu32((Opcode >> 0) & 7) = res;
17865 res = DREGu8((Opcode >> 0) & 7);
17879 adr = AREG((Opcode >> 0) & 7);
17881 READ_BYTE_F(adr, res)
17896 adr = AREG((Opcode >> 0) & 7);
17897 AREG((Opcode >> 0) & 7) += 1;
17899 READ_BYTE_F(adr, res)
17914 adr = AREG((Opcode >> 0) & 7) - 1;
17915 AREG((Opcode >> 0) & 7) = adr;
17917 READ_BYTE_F(adr, res)
17933 adr += AREG((Opcode >> 0) & 7);
17935 READ_BYTE_F(adr, res)
17950 adr = AREG((Opcode >> 0) & 7);
17953 READ_BYTE_F(adr, res)
17970 READ_BYTE_F(adr, res)
17987 READ_BYTE_F(adr, res)
18005 READ_BYTE_F(adr, res)
18023 READ_BYTE_F(adr, res)
18038 res = DREGu16((Opcode >> 0) & 7);
18052 adr = AREG((Opcode >> 0) & 7);
18054 READ_WORD_F(adr, res)
18069 adr = AREG((Opcode >> 0) & 7);
18070 AREG((Opcode >> 0) & 7) += 2;
18072 READ_WORD_F(adr, res)
18087 adr = AREG((Opcode >> 0) & 7) - 2;
18088 AREG((Opcode >> 0) & 7) = adr;
18090 READ_WORD_F(adr, res)
18106 adr += AREG((Opcode >> 0) & 7);
18108 READ_WORD_F(adr, res)
18123 adr = AREG((Opcode >> 0) & 7);
18126 READ_WORD_F(adr, res)
18143 READ_WORD_F(adr, res)
18160 READ_WORD_F(adr, res)
18178 READ_WORD_F(adr, res)
18196 READ_WORD_F(adr, res)
18211 res = DREGu32((Opcode >> 0) & 7);
18215 flag_N = res >> 24;
18225 adr = AREG((Opcode >> 0) & 7);
18227 READ_LONG_F(adr, res)
18231 flag_N = res >> 24;
18242 adr = AREG((Opcode >> 0) & 7);
18243 AREG((Opcode >> 0) & 7) += 4;
18245 READ_LONG_F(adr, res)
18249 flag_N = res >> 24;
18260 adr = AREG((Opcode >> 0) & 7) - 4;
18261 AREG((Opcode >> 0) & 7) = adr;
18263 READ_LONG_F(adr, res)
18267 flag_N = res >> 24;
18279 adr += AREG((Opcode >> 0) & 7);
18281 READ_LONG_F(adr, res)
18285 flag_N = res >> 24;
18296 adr = AREG((Opcode >> 0) & 7);
18299 READ_LONG_F(adr, res)
18303 flag_N = res >> 24;
18316 READ_LONG_F(adr, res)
18320 flag_N = res >> 24;
18333 READ_LONG_F(adr, res)
18337 flag_N = res >> 24;
18351 READ_LONG_F(adr, res)
18355 flag_N = res >> 24;
18369 READ_LONG_F(adr, res)
18373 flag_N = res >> 24;
18384 res = DREGu8((Opcode >> 0) & 7);
18390 DREGu8((Opcode >> 0) & 7) = res;
18400 adr = AREG((Opcode >> 0) & 7);
18402 READ_BYTE_F(adr, res)
18407 #ifdef PICODRIVE_HACK
18408 if (ctx == &PicoCpuFS68k) {
18410 WRITE_BYTE_F(adr, res);
18415 #ifdef USE_CYCLONE_TIMING
18428 adr = AREG((Opcode >> 0) & 7);
18429 AREG((Opcode >> 0) & 7) += 1;
18431 READ_BYTE_F(adr, res)
18437 #ifdef PICODRIVE_HACK
18438 if (ctx == &PicoCpuFS68k) {
18440 WRITE_BYTE_F(adr, res);
18445 #ifdef USE_CYCLONE_TIMING
18458 adr = AREG((Opcode >> 0) & 7) - 1;
18459 AREG((Opcode >> 0) & 7) = adr;
18461 READ_BYTE_F(adr, res)
18467 #ifdef PICODRIVE_HACK
18468 if (ctx == &PicoCpuFS68k) {
18470 WRITE_BYTE_F(adr, res);
18475 #ifdef USE_CYCLONE_TIMING
18489 adr += AREG((Opcode >> 0) & 7);
18491 READ_BYTE_F(adr, res)
18497 #ifdef PICODRIVE_HACK
18498 if (ctx == &PicoCpuFS68k) {
18500 WRITE_BYTE_F(adr, res);
18505 #ifdef USE_CYCLONE_TIMING
18518 adr = AREG((Opcode >> 0) & 7);
18521 READ_BYTE_F(adr, res)
18527 #ifdef PICODRIVE_HACK
18528 if (ctx == &PicoCpuFS68k) {
18530 WRITE_BYTE_F(adr, res);
18535 #ifdef USE_CYCLONE_TIMING
18550 READ_BYTE_F(adr, res)
18556 #ifdef PICODRIVE_HACK
18557 if (ctx == &PicoCpuFS68k) {
18559 WRITE_BYTE_F(adr, res);
18564 #ifdef USE_CYCLONE_TIMING
18579 READ_BYTE_F(adr, res)
18585 #ifdef PICODRIVE_HACK
18586 if (ctx == &PicoCpuFS68k) {
18588 WRITE_BYTE_F(adr, res);
18593 #ifdef USE_CYCLONE_TIMING
18609 READ_BYTE_F(adr, res)
18615 #ifdef PICODRIVE_HACK
18616 if (ctx == &PicoCpuFS68k) {
18618 WRITE_BYTE_F(adr, res);
18623 #ifdef USE_CYCLONE_TIMING
18639 READ_BYTE_F(adr, res)
18645 #ifdef PICODRIVE_HACK
18646 if (ctx == &PicoCpuFS68k) {
18648 WRITE_BYTE_F(adr, res);
18653 #ifdef USE_CYCLONE_TIMING
18663 #ifdef PICODRIVE_HACK
18664 extern void SekFinishIdleDet(void);
18665 SekFinishIdleDet();
18667 SET_PC(execute_exception(ctx, M68K_ILLEGAL_INSTRUCTION_EX, GET_PC-2, GET_SR));
18671 // ILLEGAL A000-AFFF
18674 SET_PC(execute_exception(ctx, M68K_1010_EX, GET_PC-2, GET_SR));
18678 // ILLEGAL F000-FFFF
18681 SET_PC(execute_exception(ctx, M68K_1111_EX, GET_PC-2, GET_SR));
18694 adr = AREG((Opcode >> 0) & 7);
18695 psrc = &DREGs32(0);
18702 READSX_WORD_F(adr, *psrc)
18706 } while (res >>= 1);
18708 ctx->io_cycle_counter -= (adr - dst) * 2;
18709 #ifdef USE_CYCLONE_TIMING
18725 adr = AREG((Opcode >> 0) & 7);
18726 psrc = &DREGs32(0);
18733 READSX_WORD_F(adr, *psrc)
18737 } while (res >>= 1);
18738 AREG((Opcode >> 0) & 7) = adr;
18740 ctx->io_cycle_counter -= (adr - dst) * 2;
18754 adr += AREG((Opcode >> 0) & 7);
18755 psrc = &DREGs32(0);
18762 READSX_WORD_F(adr, *psrc)
18766 } while (res >>= 1);
18768 ctx->io_cycle_counter -= (adr - dst) * 2;
18769 #ifdef USE_CYCLONE_TIMING
18785 adr = AREG((Opcode >> 0) & 7);
18787 psrc = &DREGs32(0);
18794 READSX_WORD_F(adr, *psrc)
18798 } while (res >>= 1);
18800 ctx->io_cycle_counter -= (adr - dst) * 2;
18801 #ifdef USE_CYCLONE_TIMING
18818 psrc = &DREGs32(0);
18825 READSX_WORD_F(adr, *psrc)
18829 } while (res >>= 1);
18831 ctx->io_cycle_counter -= (adr - dst) * 2;
18832 #ifdef USE_CYCLONE_TIMING
18849 psrc = &DREGs32(0);
18856 READSX_WORD_F(adr, *psrc)
18860 } while (res >>= 1);
18862 ctx->io_cycle_counter -= (adr - dst) * 2;
18863 #ifdef USE_CYCLONE_TIMING
18879 adr = GET_SWORD + GET_PC;
18881 psrc = &DREGs32(0);
18888 READSX_WORD_F(adr, *psrc)
18892 } while (res >>= 1);
18894 ctx->io_cycle_counter -= (adr - dst) * 2;
18895 #ifdef USE_CYCLONE_TIMING
18913 psrc = &DREGs32(0);
18920 READSX_WORD_F(adr, *psrc)
18924 } while (res >>= 1);
18926 ctx->io_cycle_counter -= (adr - dst) * 2;
18927 #ifdef USE_CYCLONE_TIMING
18944 psrc = &DREGs32(0);
18951 READSX_WORD_F(adr, *psrc)
18955 } while (res >>= 1);
18958 ctx->io_cycle_counter -= (adr - dst) * 2;
18971 adr = AREG((Opcode >> 0) & 7);
18972 psrc = &DREGu32(0);
18979 READ_LONG_F(adr, *psrc)
18983 } while (res >>= 1);
18985 ctx->io_cycle_counter -= (adr - dst) * 2;
18986 #ifdef USE_CYCLONE_TIMING
19002 adr = AREG((Opcode >> 0) & 7);
19003 psrc = &DREGu32(0);
19010 READ_LONG_F(adr, *psrc)
19014 } while (res >>= 1);
19015 AREG((Opcode >> 0) & 7) = adr;
19017 ctx->io_cycle_counter -= (adr - dst) * 2;
19031 adr += AREG((Opcode >> 0) & 7);
19032 psrc = &DREGu32(0);
19039 READ_LONG_F(adr, *psrc)
19043 } while (res >>= 1);
19045 ctx->io_cycle_counter -= (adr - dst) * 2;
19046 #ifdef USE_CYCLONE_TIMING
19062 adr = AREG((Opcode >> 0) & 7);
19064 psrc = &DREGu32(0);
19071 READ_LONG_F(adr, *psrc)
19075 } while (res >>= 1);
19077 ctx->io_cycle_counter -= (adr - dst) * 2;
19078 #ifdef USE_CYCLONE_TIMING
19095 psrc = &DREGu32(0);
19102 READ_LONG_F(adr, *psrc)
19106 } while (res >>= 1);
19108 ctx->io_cycle_counter -= (adr - dst) * 2;
19109 #ifdef USE_CYCLONE_TIMING
19126 psrc = &DREGu32(0);
19133 READ_LONG_F(adr, *psrc)
19137 } while (res >>= 1);
19139 ctx->io_cycle_counter -= (adr - dst) * 2;
19140 #ifdef USE_CYCLONE_TIMING
19156 adr = GET_SWORD + GET_PC;
19158 psrc = &DREGu32(0);
19165 READ_LONG_F(adr, *psrc)
19169 } while (res >>= 1);
19171 ctx->io_cycle_counter -= (adr - dst) * 2;
19172 #ifdef USE_CYCLONE_TIMING
19190 psrc = &DREGu32(0);
19197 READ_LONG_F(adr, *psrc)
19201 } while (res >>= 1);
19203 ctx->io_cycle_counter -= (adr - dst) * 2;
19204 #ifdef USE_CYCLONE_TIMING
19221 psrc = &DREGu32(0);
19228 READ_LONG_F(adr, *psrc)
19232 } while (res >>= 1);
19235 ctx->io_cycle_counter -= (adr - dst) * 2;
19242 SET_PC(execute_exception(ctx, M68K_TRAP_BASE_EX + (Opcode & 0xF), GET_PC, GET_SR));
19243 #ifdef USE_CYCLONE_TIMING
19256 res = AREGu32((Opcode >> 0) & 7);
19260 AREG((Opcode >> 0) & 7) = res;
19275 WRITE_LONG_DEC_F(AREG(7), AREG(7))
19288 src = AREGu32((Opcode >> 0) & 7);
19291 READ_LONG_F(src, res)
19292 AREG((Opcode >> 0) & 7) = res;
19304 READ_LONG_F(AREG(7), AREG(7))
19317 SET_PC(execute_exception(ctx, M68K_PRIVILEGE_VIOLATION_EX, GET_PC-2, GET_SR));
19318 #ifdef USE_CYCLONE_TIMING
19324 res = AREGu32((Opcode >> 0) & 7);
19337 SET_PC(execute_exception(ctx, M68K_PRIVILEGE_VIOLATION_EX, GET_PC-2, GET_SR));
19338 #ifdef USE_CYCLONE_TIMING
19345 AREG((Opcode >> 0) & 7) = res;
19357 SET_PC(execute_exception(ctx, M68K_PRIVILEGE_VIOLATION_EX, GET_PC-2, GET_SR));
19358 #ifdef USE_CYCLONE_TIMING
19365 if (ctx->reset_handler) ctx->reset_handler();
19366 // CPU->Reset_CallBack();
19385 SET_PC(execute_exception(ctx, M68K_PRIVILEGE_VIOLATION_EX, GET_PC-2, GET_SR));
19386 #ifdef USE_CYCLONE_TIMING
19393 res &= M68K_SR_MASK;
19401 ctx->execinfo |= FM68K_HALTED;
19413 SET_PC(execute_exception(ctx, M68K_PRIVILEGE_VIOLATION_EX, GET_PC-2, GET_SR));
19414 #ifdef USE_CYCLONE_TIMING
19431 CHECK_BRANCH_EXCEPTION(res)
19433 ctx->execinfo &= ~(FM68K_EMULATE_GROUP_0|FM68K_EMULATE_TRACE|FM68K_DO_TRACE);
19434 CHECK_INT_TO_JUMP(20)
19447 CHECK_BRANCH_EXCEPTION(res)
19455 if (flag_V & 0x80) {
19456 SET_PC(execute_exception(ctx, M68K_TRAPV_EX, GET_PC, GET_SR));
19457 #ifdef USE_CYCLONE_TIMING
19475 CHECK_BRANCH_EXCEPTION(res)
19486 adr = AREG((Opcode >> 0) & 7);
19495 CHECK_BRANCH_EXCEPTION(adr)
19507 adr += AREG((Opcode >> 0) & 7);
19516 CHECK_BRANCH_EXCEPTION(adr)
19527 adr = AREG((Opcode >> 0) & 7);
19537 CHECK_BRANCH_EXCEPTION(adr)
19557 CHECK_BRANCH_EXCEPTION(adr)
19577 CHECK_BRANCH_EXCEPTION(adr)
19588 adr = GET_SWORD + GET_PC;
19598 CHECK_BRANCH_EXCEPTION(adr)
19619 CHECK_BRANCH_EXCEPTION(adr)
19630 adr = AREG((Opcode >> 0) & 7);
19632 CHECK_BRANCH_EXCEPTION(adr)
19643 adr += AREG((Opcode >> 0) & 7);
19645 CHECK_BRANCH_EXCEPTION(adr)
19655 adr = AREG((Opcode >> 0) & 7);
19658 CHECK_BRANCH_EXCEPTION(adr)
19670 CHECK_BRANCH_EXCEPTION(adr)
19682 CHECK_BRANCH_EXCEPTION(adr)
19692 adr = GET_SWORD + GET_PC;
19695 CHECK_BRANCH_EXCEPTION(adr)
19708 CHECK_BRANCH_EXCEPTION(adr)
19717 src = DREGs16((Opcode >> 0) & 7);
19718 res = DREGs16((Opcode >> 9) & 7);
19719 if ((res < 0) || (res > src))
19722 SET_PC(execute_exception(ctx, M68K_CHK_EX, GET_PC, GET_SR));
19734 adr = AREG((Opcode >> 0) & 7);
19736 READSX_WORD_F(adr, src)
19737 res = DREGs16((Opcode >> 9) & 7);
19738 if ((res < 0) || (res > src))
19741 SET_PC(execute_exception(ctx, M68K_CHK_EX, GET_PC, GET_SR));
19754 adr = AREG((Opcode >> 0) & 7);
19755 AREG((Opcode >> 0) & 7) += 2;
19757 READSX_WORD_F(adr, src)
19758 res = DREGs16((Opcode >> 9) & 7);
19759 if ((res < 0) || (res > src))
19762 SET_PC(execute_exception(ctx, M68K_CHK_EX, GET_PC, GET_SR));
19775 adr = AREG((Opcode >> 0) & 7) - 2;
19776 AREG((Opcode >> 0) & 7) = adr;
19778 READSX_WORD_F(adr, src)
19779 res = DREGs16((Opcode >> 9) & 7);
19780 if ((res < 0) || (res > src))
19783 SET_PC(execute_exception(ctx, M68K_CHK_EX, GET_PC, GET_SR));
19797 adr += AREG((Opcode >> 0) & 7);
19799 READSX_WORD_F(adr, src)
19800 res = DREGs16((Opcode >> 9) & 7);
19801 if ((res < 0) || (res > src))
19804 SET_PC(execute_exception(ctx, M68K_CHK_EX, GET_PC, GET_SR));
19817 adr = AREG((Opcode >> 0) & 7);
19820 READSX_WORD_F(adr, src)
19821 res = DREGs16((Opcode >> 9) & 7);
19822 if ((res < 0) || (res > src))
19825 SET_PC(execute_exception(ctx, M68K_CHK_EX, GET_PC, GET_SR));
19840 READSX_WORD_F(adr, src)
19841 res = DREGs16((Opcode >> 9) & 7);
19842 if ((res < 0) || (res > src))
19845 SET_PC(execute_exception(ctx, M68K_CHK_EX, GET_PC, GET_SR));
19860 READSX_WORD_F(adr, src)
19861 res = DREGs16((Opcode >> 9) & 7);
19862 if ((res < 0) || (res > src))
19865 SET_PC(execute_exception(ctx, M68K_CHK_EX, GET_PC, GET_SR));
19878 adr = GET_SWORD + GET_PC;
19881 READSX_WORD_F(adr, src)
19882 res = DREGs16((Opcode >> 9) & 7);
19883 if ((res < 0) || (res > src))
19886 SET_PC(execute_exception(ctx, M68K_CHK_EX, GET_PC, GET_SR));
19902 READSX_WORD_F(adr, src)
19903 res = DREGs16((Opcode >> 9) & 7);
19904 if ((res < 0) || (res > src))
19907 SET_PC(execute_exception(ctx, M68K_CHK_EX, GET_PC, GET_SR));
19921 res = DREGs16((Opcode >> 9) & 7);
19922 if ((res < 0) || (res > src))
19925 SET_PC(execute_exception(ctx, M68K_CHK_EX, GET_PC, GET_SR));
19941 READSX_WORD_F(adr, src)
19942 res = DREGs16((Opcode >> 9) & 7);
19943 if ((res < 0) || (res > src))
19946 SET_PC(execute_exception(ctx, M68K_CHK_EX, GET_PC, GET_SR));
19962 READSX_WORD_F(adr, src)
19963 res = DREGs16((Opcode >> 9) & 7);
19964 if ((res < 0) || (res > src))
19967 SET_PC(execute_exception(ctx, M68K_CHK_EX, GET_PC, GET_SR));
19980 adr = AREG((Opcode >> 0) & 7);
19982 AREG((Opcode >> 9) & 7) = res;
19993 adr += AREG((Opcode >> 0) & 7);
19995 AREG((Opcode >> 9) & 7) = res;
20005 adr = AREG((Opcode >> 0) & 7);
20008 AREG((Opcode >> 9) & 7) = res;
20020 AREG((Opcode >> 9) & 7) = res;
20032 AREG((Opcode >> 9) & 7) = res;
20042 adr = GET_SWORD + GET_PC;
20045 AREG((Opcode >> 9) & 7) = res;
20058 AREG((Opcode >> 9) & 7) = res;
20069 DREGu8((Opcode >> 0) & 7) = res;
20080 DREGu8((Opcode >> 0) & 7) = res;
20090 if (flag_NotZ && (!(flag_C & 0x100)))
20093 DREGu8((Opcode >> 0) & 7) = res;
20097 DREGu8((Opcode >> 0) & 7) = res;
20107 if ((!flag_NotZ) || (flag_C & 0x100))
20110 DREGu8((Opcode >> 0) & 7) = res;
20114 DREGu8((Opcode >> 0) & 7) = res;
20124 if (!(flag_C & 0x100))
20127 DREGu8((Opcode >> 0) & 7) = res;
20131 DREGu8((Opcode >> 0) & 7) = res;
20141 if (flag_C & 0x100)
20144 DREGu8((Opcode >> 0) & 7) = res;
20148 DREGu8((Opcode >> 0) & 7) = res;
20161 DREGu8((Opcode >> 0) & 7) = res;
20165 DREGu8((Opcode >> 0) & 7) = res;
20178 DREGu8((Opcode >> 0) & 7) = res;
20182 DREGu8((Opcode >> 0) & 7) = res;
20192 if (!(flag_V & 0x80))
20195 DREGu8((Opcode >> 0) & 7) = res;
20199 DREGu8((Opcode >> 0) & 7) = res;
20212 DREGu8((Opcode >> 0) & 7) = res;
20216 DREGu8((Opcode >> 0) & 7) = res;
20226 if (!(flag_N & 0x80))
20229 DREGu8((Opcode >> 0) & 7) = res;
20233 DREGu8((Opcode >> 0) & 7) = res;
20246 DREGu8((Opcode >> 0) & 7) = res;
20250 DREGu8((Opcode >> 0) & 7) = res;
20260 if (!((flag_N ^ flag_V) & 0x80))
20263 DREGu8((Opcode >> 0) & 7) = res;
20267 DREGu8((Opcode >> 0) & 7) = res;
20277 if ((flag_N ^ flag_V) & 0x80)
20280 DREGu8((Opcode >> 0) & 7) = res;
20284 DREGu8((Opcode >> 0) & 7) = res;
20294 if (flag_NotZ && (!((flag_N ^ flag_V) & 0x80)))
20297 DREGu8((Opcode >> 0) & 7) = res;
20301 DREGu8((Opcode >> 0) & 7) = res;
20311 if ((!flag_NotZ) || ((flag_N ^ flag_V) & 0x80))
20314 DREGu8((Opcode >> 0) & 7) = res;
20318 DREGu8((Opcode >> 0) & 7) = res;
20328 adr = AREG((Opcode >> 0) & 7);
20331 WRITE_BYTE_F(adr, res)
20342 adr = AREG((Opcode >> 0) & 7);
20345 WRITE_BYTE_F(adr, res)
20356 adr = AREG((Opcode >> 0) & 7);
20357 if (flag_NotZ && (!(flag_C & 0x100)))
20361 WRITE_BYTE_F(adr, res)
20367 WRITE_BYTE_F(adr, res)
20378 adr = AREG((Opcode >> 0) & 7);
20379 if ((!flag_NotZ) || (flag_C & 0x100))
20383 WRITE_BYTE_F(adr, res)
20389 WRITE_BYTE_F(adr, res)
20400 adr = AREG((Opcode >> 0) & 7);
20401 if (!(flag_C & 0x100))
20405 WRITE_BYTE_F(adr, res)
20411 WRITE_BYTE_F(adr, res)
20422 adr = AREG((Opcode >> 0) & 7);
20423 if (flag_C & 0x100)
20427 WRITE_BYTE_F(adr, res)
20433 WRITE_BYTE_F(adr, res)
20444 adr = AREG((Opcode >> 0) & 7);
20449 WRITE_BYTE_F(adr, res)
20455 WRITE_BYTE_F(adr, res)
20466 adr = AREG((Opcode >> 0) & 7);
20471 WRITE_BYTE_F(adr, res)
20477 WRITE_BYTE_F(adr, res)
20488 adr = AREG((Opcode >> 0) & 7);
20489 if (!(flag_V & 0x80))
20493 WRITE_BYTE_F(adr, res)
20499 WRITE_BYTE_F(adr, res)
20510 adr = AREG((Opcode >> 0) & 7);
20515 WRITE_BYTE_F(adr, res)
20521 WRITE_BYTE_F(adr, res)
20532 adr = AREG((Opcode >> 0) & 7);
20533 if (!(flag_N & 0x80))
20537 WRITE_BYTE_F(adr, res)
20543 WRITE_BYTE_F(adr, res)
20554 adr = AREG((Opcode >> 0) & 7);
20559 WRITE_BYTE_F(adr, res)
20565 WRITE_BYTE_F(adr, res)
20576 adr = AREG((Opcode >> 0) & 7);
20577 if (!((flag_N ^ flag_V) & 0x80))
20581 WRITE_BYTE_F(adr, res)
20587 WRITE_BYTE_F(adr, res)
20598 adr = AREG((Opcode >> 0) & 7);
20599 if ((flag_N ^ flag_V) & 0x80)
20603 WRITE_BYTE_F(adr, res)
20609 WRITE_BYTE_F(adr, res)
20620 adr = AREG((Opcode >> 0) & 7);
20621 if (flag_NotZ && (!((flag_N ^ flag_V) & 0x80)))
20625 WRITE_BYTE_F(adr, res)
20631 WRITE_BYTE_F(adr, res)
20642 adr = AREG((Opcode >> 0) & 7);
20643 if ((!flag_NotZ) || ((flag_N ^ flag_V) & 0x80))
20647 WRITE_BYTE_F(adr, res)
20653 WRITE_BYTE_F(adr, res)
20664 adr = AREG((Opcode >> 0) & 7);
20665 AREG((Opcode >> 0) & 7) += 1;
20668 WRITE_BYTE_F(adr, res)
20679 adr = AREG((Opcode >> 0) & 7);
20680 AREG((Opcode >> 0) & 7) += 1;
20683 WRITE_BYTE_F(adr, res)
20694 adr = AREG((Opcode >> 0) & 7);
20695 AREG((Opcode >> 0) & 7) += 1;
20696 if (flag_NotZ && (!(flag_C & 0x100)))
20700 WRITE_BYTE_F(adr, res)
20706 WRITE_BYTE_F(adr, res)
20717 adr = AREG((Opcode >> 0) & 7);
20718 AREG((Opcode >> 0) & 7) += 1;
20719 if ((!flag_NotZ) || (flag_C & 0x100))
20723 WRITE_BYTE_F(adr, res)
20729 WRITE_BYTE_F(adr, res)
20740 adr = AREG((Opcode >> 0) & 7);
20741 AREG((Opcode >> 0) & 7) += 1;
20742 if (!(flag_C & 0x100))
20746 WRITE_BYTE_F(adr, res)
20752 WRITE_BYTE_F(adr, res)
20763 adr = AREG((Opcode >> 0) & 7);
20764 AREG((Opcode >> 0) & 7) += 1;
20765 if (flag_C & 0x100)
20769 WRITE_BYTE_F(adr, res)
20775 WRITE_BYTE_F(adr, res)
20786 adr = AREG((Opcode >> 0) & 7);
20787 AREG((Opcode >> 0) & 7) += 1;
20792 WRITE_BYTE_F(adr, res)
20798 WRITE_BYTE_F(adr, res)
20809 adr = AREG((Opcode >> 0) & 7);
20810 AREG((Opcode >> 0) & 7) += 1;
20815 WRITE_BYTE_F(adr, res)
20821 WRITE_BYTE_F(adr, res)
20832 adr = AREG((Opcode >> 0) & 7);
20833 AREG((Opcode >> 0) & 7) += 1;
20834 if (!(flag_V & 0x80))
20838 WRITE_BYTE_F(adr, res)
20844 WRITE_BYTE_F(adr, res)
20855 adr = AREG((Opcode >> 0) & 7);
20856 AREG((Opcode >> 0) & 7) += 1;
20861 WRITE_BYTE_F(adr, res)
20867 WRITE_BYTE_F(adr, res)
20878 adr = AREG((Opcode >> 0) & 7);
20879 AREG((Opcode >> 0) & 7) += 1;
20880 if (!(flag_N & 0x80))
20884 WRITE_BYTE_F(adr, res)
20890 WRITE_BYTE_F(adr, res)
20901 adr = AREG((Opcode >> 0) & 7);
20902 AREG((Opcode >> 0) & 7) += 1;
20907 WRITE_BYTE_F(adr, res)
20913 WRITE_BYTE_F(adr, res)
20924 adr = AREG((Opcode >> 0) & 7);
20925 AREG((Opcode >> 0) & 7) += 1;
20926 if (!((flag_N ^ flag_V) & 0x80))
20930 WRITE_BYTE_F(adr, res)
20936 WRITE_BYTE_F(adr, res)
20947 adr = AREG((Opcode >> 0) & 7);
20948 AREG((Opcode >> 0) & 7) += 1;
20949 if ((flag_N ^ flag_V) & 0x80)
20953 WRITE_BYTE_F(adr, res)
20959 WRITE_BYTE_F(adr, res)
20970 adr = AREG((Opcode >> 0) & 7);
20971 AREG((Opcode >> 0) & 7) += 1;
20972 if (flag_NotZ && (!((flag_N ^ flag_V) & 0x80)))
20976 WRITE_BYTE_F(adr, res)
20982 WRITE_BYTE_F(adr, res)
20993 adr = AREG((Opcode >> 0) & 7);
20994 AREG((Opcode >> 0) & 7) += 1;
20995 if ((!flag_NotZ) || ((flag_N ^ flag_V) & 0x80))
20999 WRITE_BYTE_F(adr, res)
21005 WRITE_BYTE_F(adr, res)
21016 adr = AREG((Opcode >> 0) & 7) - 1;
21017 AREG((Opcode >> 0) & 7) = adr;
21020 WRITE_BYTE_F(adr, res)
21031 adr = AREG((Opcode >> 0) & 7) - 1;
21032 AREG((Opcode >> 0) & 7) = adr;
21035 WRITE_BYTE_F(adr, res)
21046 adr = AREG((Opcode >> 0) & 7) - 1;
21047 AREG((Opcode >> 0) & 7) = adr;
21048 if (flag_NotZ && (!(flag_C & 0x100)))
21052 WRITE_BYTE_F(adr, res)
21058 WRITE_BYTE_F(adr, res)
21069 adr = AREG((Opcode >> 0) & 7) - 1;
21070 AREG((Opcode >> 0) & 7) = adr;
21071 if ((!flag_NotZ) || (flag_C & 0x100))
21075 WRITE_BYTE_F(adr, res)
21081 WRITE_BYTE_F(adr, res)
21092 adr = AREG((Opcode >> 0) & 7) - 1;
21093 AREG((Opcode >> 0) & 7) = adr;
21094 if (!(flag_C & 0x100))
21098 WRITE_BYTE_F(adr, res)
21104 WRITE_BYTE_F(adr, res)
21115 adr = AREG((Opcode >> 0) & 7) - 1;
21116 AREG((Opcode >> 0) & 7) = adr;
21117 if (flag_C & 0x100)
21121 WRITE_BYTE_F(adr, res)
21127 WRITE_BYTE_F(adr, res)
21138 adr = AREG((Opcode >> 0) & 7) - 1;
21139 AREG((Opcode >> 0) & 7) = adr;
21144 WRITE_BYTE_F(adr, res)
21150 WRITE_BYTE_F(adr, res)
21161 adr = AREG((Opcode >> 0) & 7) - 1;
21162 AREG((Opcode >> 0) & 7) = adr;
21167 WRITE_BYTE_F(adr, res)
21173 WRITE_BYTE_F(adr, res)
21184 adr = AREG((Opcode >> 0) & 7) - 1;
21185 AREG((Opcode >> 0) & 7) = adr;
21186 if (!(flag_V & 0x80))
21190 WRITE_BYTE_F(adr, res)
21196 WRITE_BYTE_F(adr, res)
21207 adr = AREG((Opcode >> 0) & 7) - 1;
21208 AREG((Opcode >> 0) & 7) = adr;
21213 WRITE_BYTE_F(adr, res)
21219 WRITE_BYTE_F(adr, res)
21230 adr = AREG((Opcode >> 0) & 7) - 1;
21231 AREG((Opcode >> 0) & 7) = adr;
21232 if (!(flag_N & 0x80))
21236 WRITE_BYTE_F(adr, res)
21242 WRITE_BYTE_F(adr, res)
21253 adr = AREG((Opcode >> 0) & 7) - 1;
21254 AREG((Opcode >> 0) & 7) = adr;
21259 WRITE_BYTE_F(adr, res)
21265 WRITE_BYTE_F(adr, res)
21276 adr = AREG((Opcode >> 0) & 7) - 1;
21277 AREG((Opcode >> 0) & 7) = adr;
21278 if (!((flag_N ^ flag_V) & 0x80))
21282 WRITE_BYTE_F(adr, res)
21288 WRITE_BYTE_F(adr, res)
21299 adr = AREG((Opcode >> 0) & 7) - 1;
21300 AREG((Opcode >> 0) & 7) = adr;
21301 if ((flag_N ^ flag_V) & 0x80)
21305 WRITE_BYTE_F(adr, res)
21311 WRITE_BYTE_F(adr, res)
21322 adr = AREG((Opcode >> 0) & 7) - 1;
21323 AREG((Opcode >> 0) & 7) = adr;
21324 if (flag_NotZ && (!((flag_N ^ flag_V) & 0x80)))
21328 WRITE_BYTE_F(adr, res)
21334 WRITE_BYTE_F(adr, res)
21345 adr = AREG((Opcode >> 0) & 7) - 1;
21346 AREG((Opcode >> 0) & 7) = adr;
21347 if ((!flag_NotZ) || ((flag_N ^ flag_V) & 0x80))
21351 WRITE_BYTE_F(adr, res)
21357 WRITE_BYTE_F(adr, res)
21369 adr += AREG((Opcode >> 0) & 7);
21372 WRITE_BYTE_F(adr, res)
21384 adr += AREG((Opcode >> 0) & 7);
21387 WRITE_BYTE_F(adr, res)
21399 adr += AREG((Opcode >> 0) & 7);
21400 if (flag_NotZ && (!(flag_C & 0x100)))
21404 WRITE_BYTE_F(adr, res)
21410 WRITE_BYTE_F(adr, res)
21422 adr += AREG((Opcode >> 0) & 7);
21423 if ((!flag_NotZ) || (flag_C & 0x100))
21427 WRITE_BYTE_F(adr, res)
21433 WRITE_BYTE_F(adr, res)
21445 adr += AREG((Opcode >> 0) & 7);
21446 if (!(flag_C & 0x100))
21450 WRITE_BYTE_F(adr, res)
21456 WRITE_BYTE_F(adr, res)
21468 adr += AREG((Opcode >> 0) & 7);
21469 if (flag_C & 0x100)
21473 WRITE_BYTE_F(adr, res)
21479 WRITE_BYTE_F(adr, res)
21491 adr += AREG((Opcode >> 0) & 7);
21496 WRITE_BYTE_F(adr, res)
21502 WRITE_BYTE_F(adr, res)
21514 adr += AREG((Opcode >> 0) & 7);
21519 WRITE_BYTE_F(adr, res)
21525 WRITE_BYTE_F(adr, res)
21537 adr += AREG((Opcode >> 0) & 7);
21538 if (!(flag_V & 0x80))
21542 WRITE_BYTE_F(adr, res)
21548 WRITE_BYTE_F(adr, res)
21560 adr += AREG((Opcode >> 0) & 7);
21565 WRITE_BYTE_F(adr, res)
21571 WRITE_BYTE_F(adr, res)
21583 adr += AREG((Opcode >> 0) & 7);
21584 if (!(flag_N & 0x80))
21588 WRITE_BYTE_F(adr, res)
21594 WRITE_BYTE_F(adr, res)
21606 adr += AREG((Opcode >> 0) & 7);
21611 WRITE_BYTE_F(adr, res)
21617 WRITE_BYTE_F(adr, res)
21629 adr += AREG((Opcode >> 0) & 7);
21630 if (!((flag_N ^ flag_V) & 0x80))
21634 WRITE_BYTE_F(adr, res)
21640 WRITE_BYTE_F(adr, res)
21652 adr += AREG((Opcode >> 0) & 7);
21653 if ((flag_N ^ flag_V) & 0x80)
21657 WRITE_BYTE_F(adr, res)
21663 WRITE_BYTE_F(adr, res)
21675 adr += AREG((Opcode >> 0) & 7);
21676 if (flag_NotZ && (!((flag_N ^ flag_V) & 0x80)))
21680 WRITE_BYTE_F(adr, res)
21686 WRITE_BYTE_F(adr, res)
21698 adr += AREG((Opcode >> 0) & 7);
21699 if ((!flag_NotZ) || ((flag_N ^ flag_V) & 0x80))
21703 WRITE_BYTE_F(adr, res)
21709 WRITE_BYTE_F(adr, res)
21720 adr = AREG((Opcode >> 0) & 7);
21724 WRITE_BYTE_F(adr, res)
21735 adr = AREG((Opcode >> 0) & 7);
21739 WRITE_BYTE_F(adr, res)
21750 adr = AREG((Opcode >> 0) & 7);
21752 if (flag_NotZ && (!(flag_C & 0x100)))
21756 WRITE_BYTE_F(adr, res)
21762 WRITE_BYTE_F(adr, res)
21773 adr = AREG((Opcode >> 0) & 7);
21775 if ((!flag_NotZ) || (flag_C & 0x100))
21779 WRITE_BYTE_F(adr, res)
21785 WRITE_BYTE_F(adr, res)
21796 adr = AREG((Opcode >> 0) & 7);
21798 if (!(flag_C & 0x100))
21802 WRITE_BYTE_F(adr, res)
21808 WRITE_BYTE_F(adr, res)
21819 adr = AREG((Opcode >> 0) & 7);
21821 if (flag_C & 0x100)
21825 WRITE_BYTE_F(adr, res)
21831 WRITE_BYTE_F(adr, res)
21842 adr = AREG((Opcode >> 0) & 7);
21848 WRITE_BYTE_F(adr, res)
21854 WRITE_BYTE_F(adr, res)
21865 adr = AREG((Opcode >> 0) & 7);
21871 WRITE_BYTE_F(adr, res)
21877 WRITE_BYTE_F(adr, res)
21888 adr = AREG((Opcode >> 0) & 7);
21890 if (!(flag_V & 0x80))
21894 WRITE_BYTE_F(adr, res)
21900 WRITE_BYTE_F(adr, res)
21911 adr = AREG((Opcode >> 0) & 7);
21917 WRITE_BYTE_F(adr, res)
21923 WRITE_BYTE_F(adr, res)
21934 adr = AREG((Opcode >> 0) & 7);
21936 if (!(flag_N & 0x80))
21940 WRITE_BYTE_F(adr, res)
21946 WRITE_BYTE_F(adr, res)
21957 adr = AREG((Opcode >> 0) & 7);
21963 WRITE_BYTE_F(adr, res)
21969 WRITE_BYTE_F(adr, res)
21980 adr = AREG((Opcode >> 0) & 7);
21982 if (!((flag_N ^ flag_V) & 0x80))
21986 WRITE_BYTE_F(adr, res)
21992 WRITE_BYTE_F(adr, res)
22003 adr = AREG((Opcode >> 0) & 7);
22005 if ((flag_N ^ flag_V) & 0x80)
22009 WRITE_BYTE_F(adr, res)
22015 WRITE_BYTE_F(adr, res)
22026 adr = AREG((Opcode >> 0) & 7);
22028 if (flag_NotZ && (!((flag_N ^ flag_V) & 0x80)))
22032 WRITE_BYTE_F(adr, res)
22038 WRITE_BYTE_F(adr, res)
22049 adr = AREG((Opcode >> 0) & 7);
22051 if ((!flag_NotZ) || ((flag_N ^ flag_V) & 0x80))
22055 WRITE_BYTE_F(adr, res)
22061 WRITE_BYTE_F(adr, res)
22075 WRITE_BYTE_F(adr, res)
22089 WRITE_BYTE_F(adr, res)
22101 if (flag_NotZ && (!(flag_C & 0x100)))
22105 WRITE_BYTE_F(adr, res)
22111 WRITE_BYTE_F(adr, res)
22123 if ((!flag_NotZ) || (flag_C & 0x100))
22127 WRITE_BYTE_F(adr, res)
22133 WRITE_BYTE_F(adr, res)
22145 if (!(flag_C & 0x100))
22149 WRITE_BYTE_F(adr, res)
22155 WRITE_BYTE_F(adr, res)
22167 if (flag_C & 0x100)
22171 WRITE_BYTE_F(adr, res)
22177 WRITE_BYTE_F(adr, res)
22193 WRITE_BYTE_F(adr, res)
22199 WRITE_BYTE_F(adr, res)
22215 WRITE_BYTE_F(adr, res)
22221 WRITE_BYTE_F(adr, res)
22233 if (!(flag_V & 0x80))
22237 WRITE_BYTE_F(adr, res)
22243 WRITE_BYTE_F(adr, res)
22259 WRITE_BYTE_F(adr, res)
22265 WRITE_BYTE_F(adr, res)
22277 if (!(flag_N & 0x80))
22281 WRITE_BYTE_F(adr, res)
22287 WRITE_BYTE_F(adr, res)
22303 WRITE_BYTE_F(adr, res)
22309 WRITE_BYTE_F(adr, res)
22321 if (!((flag_N ^ flag_V) & 0x80))
22325 WRITE_BYTE_F(adr, res)
22331 WRITE_BYTE_F(adr, res)
22343 if ((flag_N ^ flag_V) & 0x80)
22347 WRITE_BYTE_F(adr, res)
22353 WRITE_BYTE_F(adr, res)
22365 if (flag_NotZ && (!((flag_N ^ flag_V) & 0x80)))
22369 WRITE_BYTE_F(adr, res)
22375 WRITE_BYTE_F(adr, res)
22387 if ((!flag_NotZ) || ((flag_N ^ flag_V) & 0x80))
22391 WRITE_BYTE_F(adr, res)
22397 WRITE_BYTE_F(adr, res)
22411 WRITE_BYTE_F(adr, res)
22425 WRITE_BYTE_F(adr, res)
22437 if (flag_NotZ && (!(flag_C & 0x100)))
22441 WRITE_BYTE_F(adr, res)
22447 WRITE_BYTE_F(adr, res)
22459 if ((!flag_NotZ) || (flag_C & 0x100))
22463 WRITE_BYTE_F(adr, res)
22469 WRITE_BYTE_F(adr, res)
22481 if (!(flag_C & 0x100))
22485 WRITE_BYTE_F(adr, res)
22491 WRITE_BYTE_F(adr, res)
22503 if (flag_C & 0x100)
22507 WRITE_BYTE_F(adr, res)
22513 WRITE_BYTE_F(adr, res)
22529 WRITE_BYTE_F(adr, res)
22535 WRITE_BYTE_F(adr, res)
22551 WRITE_BYTE_F(adr, res)
22557 WRITE_BYTE_F(adr, res)
22569 if (!(flag_V & 0x80))
22573 WRITE_BYTE_F(adr, res)
22579 WRITE_BYTE_F(adr, res)
22595 WRITE_BYTE_F(adr, res)
22601 WRITE_BYTE_F(adr, res)
22613 if (!(flag_N & 0x80))
22617 WRITE_BYTE_F(adr, res)
22623 WRITE_BYTE_F(adr, res)
22639 WRITE_BYTE_F(adr, res)
22645 WRITE_BYTE_F(adr, res)
22657 if (!((flag_N ^ flag_V) & 0x80))
22661 WRITE_BYTE_F(adr, res)
22667 WRITE_BYTE_F(adr, res)
22679 if ((flag_N ^ flag_V) & 0x80)
22683 WRITE_BYTE_F(adr, res)
22689 WRITE_BYTE_F(adr, res)
22701 if (flag_NotZ && (!((flag_N ^ flag_V) & 0x80)))
22705 WRITE_BYTE_F(adr, res)
22711 WRITE_BYTE_F(adr, res)
22723 if ((!flag_NotZ) || ((flag_N ^ flag_V) & 0x80))
22727 WRITE_BYTE_F(adr, res)
22733 WRITE_BYTE_F(adr, res)
22748 WRITE_BYTE_F(adr, res)
22763 WRITE_BYTE_F(adr, res)
22776 if (flag_NotZ && (!(flag_C & 0x100)))
22780 WRITE_BYTE_F(adr, res)
22786 WRITE_BYTE_F(adr, res)
22799 if ((!flag_NotZ) || (flag_C & 0x100))
22803 WRITE_BYTE_F(adr, res)
22809 WRITE_BYTE_F(adr, res)
22822 if (!(flag_C & 0x100))
22826 WRITE_BYTE_F(adr, res)
22832 WRITE_BYTE_F(adr, res)
22845 if (flag_C & 0x100)
22849 WRITE_BYTE_F(adr, res)
22855 WRITE_BYTE_F(adr, res)
22872 WRITE_BYTE_F(adr, res)
22878 WRITE_BYTE_F(adr, res)
22895 WRITE_BYTE_F(adr, res)
22901 WRITE_BYTE_F(adr, res)
22914 if (!(flag_V & 0x80))
22918 WRITE_BYTE_F(adr, res)
22924 WRITE_BYTE_F(adr, res)
22941 WRITE_BYTE_F(adr, res)
22947 WRITE_BYTE_F(adr, res)
22960 if (!(flag_N & 0x80))
22964 WRITE_BYTE_F(adr, res)
22970 WRITE_BYTE_F(adr, res)
22987 WRITE_BYTE_F(adr, res)
22993 WRITE_BYTE_F(adr, res)
23006 if (!((flag_N ^ flag_V) & 0x80))
23010 WRITE_BYTE_F(adr, res)
23016 WRITE_BYTE_F(adr, res)
23029 if ((flag_N ^ flag_V) & 0x80)
23033 WRITE_BYTE_F(adr, res)
23039 WRITE_BYTE_F(adr, res)
23052 if (flag_NotZ && (!((flag_N ^ flag_V) & 0x80)))
23056 WRITE_BYTE_F(adr, res)
23062 WRITE_BYTE_F(adr, res)
23075 if ((!flag_NotZ) || ((flag_N ^ flag_V) & 0x80))
23079 WRITE_BYTE_F(adr, res)
23085 WRITE_BYTE_F(adr, res)
23100 WRITE_BYTE_F(adr, res)
23115 WRITE_BYTE_F(adr, res)
23128 if (flag_NotZ && (!(flag_C & 0x100)))
23132 WRITE_BYTE_F(adr, res)
23138 WRITE_BYTE_F(adr, res)
23151 if ((!flag_NotZ) || (flag_C & 0x100))
23155 WRITE_BYTE_F(adr, res)
23161 WRITE_BYTE_F(adr, res)
23174 if (!(flag_C & 0x100))
23178 WRITE_BYTE_F(adr, res)
23184 WRITE_BYTE_F(adr, res)
23197 if (flag_C & 0x100)
23201 WRITE_BYTE_F(adr, res)
23207 WRITE_BYTE_F(adr, res)
23224 WRITE_BYTE_F(adr, res)
23230 WRITE_BYTE_F(adr, res)
23247 WRITE_BYTE_F(adr, res)
23253 WRITE_BYTE_F(adr, res)
23266 if (!(flag_V & 0x80))
23270 WRITE_BYTE_F(adr, res)
23276 WRITE_BYTE_F(adr, res)
23293 WRITE_BYTE_F(adr, res)
23299 WRITE_BYTE_F(adr, res)
23312 if (!(flag_N & 0x80))
23316 WRITE_BYTE_F(adr, res)
23322 WRITE_BYTE_F(adr, res)
23339 WRITE_BYTE_F(adr, res)
23345 WRITE_BYTE_F(adr, res)
23358 if (!((flag_N ^ flag_V) & 0x80))
23362 WRITE_BYTE_F(adr, res)
23368 WRITE_BYTE_F(adr, res)
23381 if ((flag_N ^ flag_V) & 0x80)
23385 WRITE_BYTE_F(adr, res)
23391 WRITE_BYTE_F(adr, res)
23404 if (flag_NotZ && (!((flag_N ^ flag_V) & 0x80)))
23408 WRITE_BYTE_F(adr, res)
23414 WRITE_BYTE_F(adr, res)
23427 if ((!flag_NotZ) || ((flag_N ^ flag_V) & 0x80))
23431 WRITE_BYTE_F(adr, res)
23437 WRITE_BYTE_F(adr, res)
23460 res = DREGu16((Opcode >> 0) & 7);
23462 DREGu16((Opcode >> 0) & 7) = res;
23463 if ((s32)res != -1)
23468 newPC += GET_SWORD;
23470 CHECK_BRANCH_EXCEPTION(newPC)
23485 if ((!flag_NotZ) || (flag_C & 0x100))
23487 res = DREGu16((Opcode >> 0) & 7);
23489 DREGu16((Opcode >> 0) & 7) = res;
23490 if ((s32)res != -1)
23495 newPC += GET_SWORD;
23497 CHECK_BRANCH_EXCEPTION(newPC)
23518 if (flag_NotZ && (!(flag_C & 0x100)))
23520 res = DREGu16((Opcode >> 0) & 7);
23522 DREGu16((Opcode >> 0) & 7) = res;
23523 if ((s32)res != -1)
23528 newPC += GET_SWORD;
23530 CHECK_BRANCH_EXCEPTION(newPC)
23551 if (flag_C & 0x100)
23553 res = DREGu16((Opcode >> 0) & 7);
23555 DREGu16((Opcode >> 0) & 7) = res;
23556 if ((s32)res != -1)
23561 newPC += GET_SWORD;
23563 CHECK_BRANCH_EXCEPTION(newPC)
23584 if (!(flag_C & 0x100))
23586 res = DREGu16((Opcode >> 0) & 7);
23588 DREGu16((Opcode >> 0) & 7) = res;
23589 if ((s32)res != -1)
23594 newPC += GET_SWORD;
23596 CHECK_BRANCH_EXCEPTION(newPC)
23619 res = DREGu16((Opcode >> 0) & 7);
23621 DREGu16((Opcode >> 0) & 7) = res;
23622 if ((s32)res != -1)
23627 newPC += GET_SWORD;
23629 CHECK_BRANCH_EXCEPTION(newPC)
23652 res = DREGu16((Opcode >> 0) & 7);
23654 DREGu16((Opcode >> 0) & 7) = res;
23655 if ((s32)res != -1)
23660 newPC += GET_SWORD;
23662 CHECK_BRANCH_EXCEPTION(newPC)
23685 res = DREGu16((Opcode >> 0) & 7);
23687 DREGu16((Opcode >> 0) & 7) = res;
23688 if ((s32)res != -1)
23693 newPC += GET_SWORD;
23695 CHECK_BRANCH_EXCEPTION(newPC)
23716 if (!(flag_V & 0x80))
23718 res = DREGu16((Opcode >> 0) & 7);
23720 DREGu16((Opcode >> 0) & 7) = res;
23721 if ((s32)res != -1)
23726 newPC += GET_SWORD;
23728 CHECK_BRANCH_EXCEPTION(newPC)
23751 res = DREGu16((Opcode >> 0) & 7);
23753 DREGu16((Opcode >> 0) & 7) = res;
23754 if ((s32)res != -1)
23759 newPC += GET_SWORD;
23761 CHECK_BRANCH_EXCEPTION(newPC)
23782 if (!(flag_N & 0x80))
23784 res = DREGu16((Opcode >> 0) & 7);
23786 DREGu16((Opcode >> 0) & 7) = res;
23787 if ((s32)res != -1)
23792 newPC += GET_SWORD;
23794 CHECK_BRANCH_EXCEPTION(newPC)
23815 if ((flag_N ^ flag_V) & 0x80)
23817 res = DREGu16((Opcode >> 0) & 7);
23819 DREGu16((Opcode >> 0) & 7) = res;
23820 if ((s32)res != -1)
23825 newPC += GET_SWORD;
23827 CHECK_BRANCH_EXCEPTION(newPC)
23848 if (!((flag_N ^ flag_V) & 0x80))
23850 res = DREGu16((Opcode >> 0) & 7);
23852 DREGu16((Opcode >> 0) & 7) = res;
23853 if ((s32)res != -1)
23858 newPC += GET_SWORD;
23860 CHECK_BRANCH_EXCEPTION(newPC)
23881 if ((!flag_NotZ) || ((flag_N ^ flag_V) & 0x80))
23883 res = DREGu16((Opcode >> 0) & 7);
23885 DREGu16((Opcode >> 0) & 7) = res;
23886 if ((s32)res != -1)
23891 newPC += GET_SWORD;
23893 CHECK_BRANCH_EXCEPTION(newPC)
23914 if (flag_NotZ && (!((flag_N ^ flag_V) & 0x80)))
23916 res = DREGu16((Opcode >> 0) & 7);
23918 DREGu16((Opcode >> 0) & 7) = res;
23919 if ((s32)res != -1)
23924 newPC += GET_SWORD;
23926 CHECK_BRANCH_EXCEPTION(newPC)
23945 src = (((Opcode >> 9) - 1) & 7) + 1;
23946 dst = DREGu8((Opcode >> 0) & 7);
23948 flag_N = flag_X = flag_C = res;
23949 flag_V = (src ^ res) & (dst ^ res);
23950 flag_NotZ = res & 0xFF;
23951 DREGu8((Opcode >> 0) & 7) = res;
23961 src = (((Opcode >> 9) - 1) & 7) + 1;
23962 adr = AREG((Opcode >> 0) & 7);
23964 READ_BYTE_F(adr, dst)
23966 flag_N = flag_X = flag_C = res;
23967 flag_V = (src ^ res) & (dst ^ res);
23968 flag_NotZ = res & 0xFF;
23969 WRITE_BYTE_F(adr, res)
23980 src = (((Opcode >> 9) - 1) & 7) + 1;
23981 adr = AREG((Opcode >> 0) & 7);
23982 AREG((Opcode >> 0) & 7) += 1;
23984 READ_BYTE_F(adr, dst)
23986 flag_N = flag_X = flag_C = res;
23987 flag_V = (src ^ res) & (dst ^ res);
23988 flag_NotZ = res & 0xFF;
23989 WRITE_BYTE_F(adr, res)
24000 src = (((Opcode >> 9) - 1) & 7) + 1;
24001 adr = AREG((Opcode >> 0) & 7) - 1;
24002 AREG((Opcode >> 0) & 7) = adr;
24004 READ_BYTE_F(adr, dst)
24006 flag_N = flag_X = flag_C = res;
24007 flag_V = (src ^ res) & (dst ^ res);
24008 flag_NotZ = res & 0xFF;
24009 WRITE_BYTE_F(adr, res)
24020 src = (((Opcode >> 9) - 1) & 7) + 1;
24022 adr += AREG((Opcode >> 0) & 7);
24024 READ_BYTE_F(adr, dst)
24026 flag_N = flag_X = flag_C = res;
24027 flag_V = (src ^ res) & (dst ^ res);
24028 flag_NotZ = res & 0xFF;
24029 WRITE_BYTE_F(adr, res)
24040 src = (((Opcode >> 9) - 1) & 7) + 1;
24041 adr = AREG((Opcode >> 0) & 7);
24044 READ_BYTE_F(adr, dst)
24046 flag_N = flag_X = flag_C = res;
24047 flag_V = (src ^ res) & (dst ^ res);
24048 flag_NotZ = res & 0xFF;
24049 WRITE_BYTE_F(adr, res)
24060 src = (((Opcode >> 9) - 1) & 7) + 1;
24063 READ_BYTE_F(adr, dst)
24065 flag_N = flag_X = flag_C = res;
24066 flag_V = (src ^ res) & (dst ^ res);
24067 flag_NotZ = res & 0xFF;
24068 WRITE_BYTE_F(adr, res)
24079 src = (((Opcode >> 9) - 1) & 7) + 1;
24082 READ_BYTE_F(adr, dst)
24084 flag_N = flag_X = flag_C = res;
24085 flag_V = (src ^ res) & (dst ^ res);
24086 flag_NotZ = res & 0xFF;
24087 WRITE_BYTE_F(adr, res)
24098 src = (((Opcode >> 9) - 1) & 7) + 1;
24102 READ_BYTE_F(adr, dst)
24104 flag_N = flag_X = flag_C = res;
24105 flag_V = (src ^ res) & (dst ^ res);
24106 flag_NotZ = res & 0xFF;
24107 WRITE_BYTE_F(adr, res)
24118 src = (((Opcode >> 9) - 1) & 7) + 1;
24122 READ_BYTE_F(adr, dst)
24124 flag_N = flag_X = flag_C = res;
24125 flag_V = (src ^ res) & (dst ^ res);
24126 flag_NotZ = res & 0xFF;
24127 WRITE_BYTE_F(adr, res)
24138 src = (((Opcode >> 9) - 1) & 7) + 1;
24139 dst = DREGu16((Opcode >> 0) & 7);
24141 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
24142 flag_N = flag_X = flag_C = res >> 8;
24143 flag_NotZ = res & 0xFFFF;
24144 DREGu16((Opcode >> 0) & 7) = res;
24154 src = (((Opcode >> 9) - 1) & 7) + 1;
24155 dst = AREGu32((Opcode >> 0) & 7);
24157 AREG((Opcode >> 0) & 7) = res;
24167 src = (((Opcode >> 9) - 1) & 7) + 1;
24168 adr = AREG((Opcode >> 0) & 7);
24170 READ_WORD_F(adr, dst)
24172 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
24173 flag_N = flag_X = flag_C = res >> 8;
24174 flag_NotZ = res & 0xFFFF;
24175 WRITE_WORD_F(adr, res)
24186 src = (((Opcode >> 9) - 1) & 7) + 1;
24187 adr = AREG((Opcode >> 0) & 7);
24188 AREG((Opcode >> 0) & 7) += 2;
24190 READ_WORD_F(adr, dst)
24192 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
24193 flag_N = flag_X = flag_C = res >> 8;
24194 flag_NotZ = res & 0xFFFF;
24195 WRITE_WORD_F(adr, res)
24206 src = (((Opcode >> 9) - 1) & 7) + 1;
24207 adr = AREG((Opcode >> 0) & 7) - 2;
24208 AREG((Opcode >> 0) & 7) = adr;
24210 READ_WORD_F(adr, dst)
24212 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
24213 flag_N = flag_X = flag_C = res >> 8;
24214 flag_NotZ = res & 0xFFFF;
24215 WRITE_WORD_F(adr, res)
24226 src = (((Opcode >> 9) - 1) & 7) + 1;
24228 adr += AREG((Opcode >> 0) & 7);
24230 READ_WORD_F(adr, dst)
24232 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
24233 flag_N = flag_X = flag_C = res >> 8;
24234 flag_NotZ = res & 0xFFFF;
24235 WRITE_WORD_F(adr, res)
24246 src = (((Opcode >> 9) - 1) & 7) + 1;
24247 adr = AREG((Opcode >> 0) & 7);
24250 READ_WORD_F(adr, dst)
24252 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
24253 flag_N = flag_X = flag_C = res >> 8;
24254 flag_NotZ = res & 0xFFFF;
24255 WRITE_WORD_F(adr, res)
24266 src = (((Opcode >> 9) - 1) & 7) + 1;
24269 READ_WORD_F(adr, dst)
24271 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
24272 flag_N = flag_X = flag_C = res >> 8;
24273 flag_NotZ = res & 0xFFFF;
24274 WRITE_WORD_F(adr, res)
24285 src = (((Opcode >> 9) - 1) & 7) + 1;
24288 READ_WORD_F(adr, dst)
24290 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
24291 flag_N = flag_X = flag_C = res >> 8;
24292 flag_NotZ = res & 0xFFFF;
24293 WRITE_WORD_F(adr, res)
24304 src = (((Opcode >> 9) - 1) & 7) + 1;
24308 READ_WORD_F(adr, dst)
24310 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
24311 flag_N = flag_X = flag_C = res >> 8;
24312 flag_NotZ = res & 0xFFFF;
24313 WRITE_WORD_F(adr, res)
24324 src = (((Opcode >> 9) - 1) & 7) + 1;
24328 READ_WORD_F(adr, dst)
24330 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
24331 flag_N = flag_X = flag_C = res >> 8;
24332 flag_NotZ = res & 0xFFFF;
24333 WRITE_WORD_F(adr, res)
24344 src = (((Opcode >> 9) - 1) & 7) + 1;
24345 dst = DREGu32((Opcode >> 0) & 7);
24348 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
24349 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
24350 flag_N = res >> 24;
24351 DREGu32((Opcode >> 0) & 7) = res;
24361 src = (((Opcode >> 9) - 1) & 7) + 1;
24362 dst = AREGu32((Opcode >> 0) & 7);
24364 AREG((Opcode >> 0) & 7) = res;
24374 src = (((Opcode >> 9) - 1) & 7) + 1;
24375 adr = AREG((Opcode >> 0) & 7);
24377 READ_LONG_F(adr, dst)
24380 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
24381 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
24382 flag_N = res >> 24;
24383 WRITE_LONG_F(adr, res)
24394 src = (((Opcode >> 9) - 1) & 7) + 1;
24395 adr = AREG((Opcode >> 0) & 7);
24396 AREG((Opcode >> 0) & 7) += 4;
24398 READ_LONG_F(adr, dst)
24401 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
24402 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
24403 flag_N = res >> 24;
24404 WRITE_LONG_F(adr, res)
24415 src = (((Opcode >> 9) - 1) & 7) + 1;
24416 adr = AREG((Opcode >> 0) & 7) - 4;
24417 AREG((Opcode >> 0) & 7) = adr;
24419 READ_LONG_F(adr, dst)
24422 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
24423 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
24424 flag_N = res >> 24;
24425 WRITE_LONG_F(adr, res)
24436 src = (((Opcode >> 9) - 1) & 7) + 1;
24438 adr += AREG((Opcode >> 0) & 7);
24440 READ_LONG_F(adr, dst)
24443 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
24444 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
24445 flag_N = res >> 24;
24446 WRITE_LONG_F(adr, res)
24457 src = (((Opcode >> 9) - 1) & 7) + 1;
24458 adr = AREG((Opcode >> 0) & 7);
24461 READ_LONG_F(adr, dst)
24464 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
24465 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
24466 flag_N = res >> 24;
24467 WRITE_LONG_F(adr, res)
24478 src = (((Opcode >> 9) - 1) & 7) + 1;
24481 READ_LONG_F(adr, dst)
24484 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
24485 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
24486 flag_N = res >> 24;
24487 WRITE_LONG_F(adr, res)
24498 src = (((Opcode >> 9) - 1) & 7) + 1;
24501 READ_LONG_F(adr, dst)
24504 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
24505 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
24506 flag_N = res >> 24;
24507 WRITE_LONG_F(adr, res)
24518 src = (((Opcode >> 9) - 1) & 7) + 1;
24522 READ_LONG_F(adr, dst)
24525 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
24526 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
24527 flag_N = res >> 24;
24528 WRITE_LONG_F(adr, res)
24539 src = (((Opcode >> 9) - 1) & 7) + 1;
24543 READ_LONG_F(adr, dst)
24546 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
24547 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
24548 flag_N = res >> 24;
24549 WRITE_LONG_F(adr, res)
24560 src = (((Opcode >> 9) - 1) & 7) + 1;
24561 dst = DREGu8((Opcode >> 0) & 7);
24563 flag_N = flag_X = flag_C = res;
24564 flag_V = (src ^ dst) & (res ^ dst);
24565 flag_NotZ = res & 0xFF;
24566 DREGu8((Opcode >> 0) & 7) = res;
24576 src = (((Opcode >> 9) - 1) & 7) + 1;
24577 adr = AREG((Opcode >> 0) & 7);
24579 READ_BYTE_F(adr, dst)
24581 flag_N = flag_X = flag_C = res;
24582 flag_V = (src ^ dst) & (res ^ dst);
24583 flag_NotZ = res & 0xFF;
24584 WRITE_BYTE_F(adr, res)
24595 src = (((Opcode >> 9) - 1) & 7) + 1;
24596 adr = AREG((Opcode >> 0) & 7);
24597 AREG((Opcode >> 0) & 7) += 1;
24599 READ_BYTE_F(adr, dst)
24601 flag_N = flag_X = flag_C = res;
24602 flag_V = (src ^ dst) & (res ^ dst);
24603 flag_NotZ = res & 0xFF;
24604 WRITE_BYTE_F(adr, res)
24615 src = (((Opcode >> 9) - 1) & 7) + 1;
24616 adr = AREG((Opcode >> 0) & 7) - 1;
24617 AREG((Opcode >> 0) & 7) = adr;
24619 READ_BYTE_F(adr, dst)
24621 flag_N = flag_X = flag_C = res;
24622 flag_V = (src ^ dst) & (res ^ dst);
24623 flag_NotZ = res & 0xFF;
24624 WRITE_BYTE_F(adr, res)
24635 src = (((Opcode >> 9) - 1) & 7) + 1;
24637 adr += AREG((Opcode >> 0) & 7);
24639 READ_BYTE_F(adr, dst)
24641 flag_N = flag_X = flag_C = res;
24642 flag_V = (src ^ dst) & (res ^ dst);
24643 flag_NotZ = res & 0xFF;
24644 WRITE_BYTE_F(adr, res)
24655 src = (((Opcode >> 9) - 1) & 7) + 1;
24656 adr = AREG((Opcode >> 0) & 7);
24659 READ_BYTE_F(adr, dst)
24661 flag_N = flag_X = flag_C = res;
24662 flag_V = (src ^ dst) & (res ^ dst);
24663 flag_NotZ = res & 0xFF;
24664 WRITE_BYTE_F(adr, res)
24675 src = (((Opcode >> 9) - 1) & 7) + 1;
24678 READ_BYTE_F(adr, dst)
24680 flag_N = flag_X = flag_C = res;
24681 flag_V = (src ^ dst) & (res ^ dst);
24682 flag_NotZ = res & 0xFF;
24683 WRITE_BYTE_F(adr, res)
24694 src = (((Opcode >> 9) - 1) & 7) + 1;
24697 READ_BYTE_F(adr, dst)
24699 flag_N = flag_X = flag_C = res;
24700 flag_V = (src ^ dst) & (res ^ dst);
24701 flag_NotZ = res & 0xFF;
24702 WRITE_BYTE_F(adr, res)
24713 src = (((Opcode >> 9) - 1) & 7) + 1;
24717 READ_BYTE_F(adr, dst)
24719 flag_N = flag_X = flag_C = res;
24720 flag_V = (src ^ dst) & (res ^ dst);
24721 flag_NotZ = res & 0xFF;
24722 WRITE_BYTE_F(adr, res)
24733 src = (((Opcode >> 9) - 1) & 7) + 1;
24737 READ_BYTE_F(adr, dst)
24739 flag_N = flag_X = flag_C = res;
24740 flag_V = (src ^ dst) & (res ^ dst);
24741 flag_NotZ = res & 0xFF;
24742 WRITE_BYTE_F(adr, res)
24753 src = (((Opcode >> 9) - 1) & 7) + 1;
24754 dst = DREGu16((Opcode >> 0) & 7);
24756 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
24757 flag_N = flag_X = flag_C = res >> 8;
24758 flag_NotZ = res & 0xFFFF;
24759 DREGu16((Opcode >> 0) & 7) = res;
24769 src = (((Opcode >> 9) - 1) & 7) + 1;
24770 dst = AREGu32((Opcode >> 0) & 7);
24772 AREG((Opcode >> 0) & 7) = res;
24782 src = (((Opcode >> 9) - 1) & 7) + 1;
24783 adr = AREG((Opcode >> 0) & 7);
24785 READ_WORD_F(adr, dst)
24787 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
24788 flag_N = flag_X = flag_C = res >> 8;
24789 flag_NotZ = res & 0xFFFF;
24790 WRITE_WORD_F(adr, res)
24801 src = (((Opcode >> 9) - 1) & 7) + 1;
24802 adr = AREG((Opcode >> 0) & 7);
24803 AREG((Opcode >> 0) & 7) += 2;
24805 READ_WORD_F(adr, dst)
24807 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
24808 flag_N = flag_X = flag_C = res >> 8;
24809 flag_NotZ = res & 0xFFFF;
24810 WRITE_WORD_F(adr, res)
24821 src = (((Opcode >> 9) - 1) & 7) + 1;
24822 adr = AREG((Opcode >> 0) & 7) - 2;
24823 AREG((Opcode >> 0) & 7) = adr;
24825 READ_WORD_F(adr, dst)
24827 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
24828 flag_N = flag_X = flag_C = res >> 8;
24829 flag_NotZ = res & 0xFFFF;
24830 WRITE_WORD_F(adr, res)
24841 src = (((Opcode >> 9) - 1) & 7) + 1;
24843 adr += AREG((Opcode >> 0) & 7);
24845 READ_WORD_F(adr, dst)
24847 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
24848 flag_N = flag_X = flag_C = res >> 8;
24849 flag_NotZ = res & 0xFFFF;
24850 WRITE_WORD_F(adr, res)
24861 src = (((Opcode >> 9) - 1) & 7) + 1;
24862 adr = AREG((Opcode >> 0) & 7);
24865 READ_WORD_F(adr, dst)
24867 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
24868 flag_N = flag_X = flag_C = res >> 8;
24869 flag_NotZ = res & 0xFFFF;
24870 WRITE_WORD_F(adr, res)
24881 src = (((Opcode >> 9) - 1) & 7) + 1;
24884 READ_WORD_F(adr, dst)
24886 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
24887 flag_N = flag_X = flag_C = res >> 8;
24888 flag_NotZ = res & 0xFFFF;
24889 WRITE_WORD_F(adr, res)
24900 src = (((Opcode >> 9) - 1) & 7) + 1;
24903 READ_WORD_F(adr, dst)
24905 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
24906 flag_N = flag_X = flag_C = res >> 8;
24907 flag_NotZ = res & 0xFFFF;
24908 WRITE_WORD_F(adr, res)
24919 src = (((Opcode >> 9) - 1) & 7) + 1;
24923 READ_WORD_F(adr, dst)
24925 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
24926 flag_N = flag_X = flag_C = res >> 8;
24927 flag_NotZ = res & 0xFFFF;
24928 WRITE_WORD_F(adr, res)
24939 src = (((Opcode >> 9) - 1) & 7) + 1;
24943 READ_WORD_F(adr, dst)
24945 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
24946 flag_N = flag_X = flag_C = res >> 8;
24947 flag_NotZ = res & 0xFFFF;
24948 WRITE_WORD_F(adr, res)
24959 src = (((Opcode >> 9) - 1) & 7) + 1;
24960 dst = DREGu32((Opcode >> 0) & 7);
24963 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
24964 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
24965 flag_N = res >> 24;
24966 DREGu32((Opcode >> 0) & 7) = res;
24976 src = (((Opcode >> 9) - 1) & 7) + 1;
24977 dst = AREGu32((Opcode >> 0) & 7);
24979 AREG((Opcode >> 0) & 7) = res;
24989 src = (((Opcode >> 9) - 1) & 7) + 1;
24990 adr = AREG((Opcode >> 0) & 7);
24992 READ_LONG_F(adr, dst)
24995 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
24996 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
24997 flag_N = res >> 24;
24998 WRITE_LONG_F(adr, res)
25009 src = (((Opcode >> 9) - 1) & 7) + 1;
25010 adr = AREG((Opcode >> 0) & 7);
25011 AREG((Opcode >> 0) & 7) += 4;
25013 READ_LONG_F(adr, dst)
25016 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
25017 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
25018 flag_N = res >> 24;
25019 WRITE_LONG_F(adr, res)
25030 src = (((Opcode >> 9) - 1) & 7) + 1;
25031 adr = AREG((Opcode >> 0) & 7) - 4;
25032 AREG((Opcode >> 0) & 7) = adr;
25034 READ_LONG_F(adr, dst)
25037 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
25038 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
25039 flag_N = res >> 24;
25040 WRITE_LONG_F(adr, res)
25051 src = (((Opcode >> 9) - 1) & 7) + 1;
25053 adr += AREG((Opcode >> 0) & 7);
25055 READ_LONG_F(adr, dst)
25058 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
25059 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
25060 flag_N = res >> 24;
25061 WRITE_LONG_F(adr, res)
25072 src = (((Opcode >> 9) - 1) & 7) + 1;
25073 adr = AREG((Opcode >> 0) & 7);
25076 READ_LONG_F(adr, dst)
25079 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
25080 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
25081 flag_N = res >> 24;
25082 WRITE_LONG_F(adr, res)
25093 src = (((Opcode >> 9) - 1) & 7) + 1;
25096 READ_LONG_F(adr, dst)
25099 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
25100 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
25101 flag_N = res >> 24;
25102 WRITE_LONG_F(adr, res)
25113 src = (((Opcode >> 9) - 1) & 7) + 1;
25116 READ_LONG_F(adr, dst)
25119 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
25120 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
25121 flag_N = res >> 24;
25122 WRITE_LONG_F(adr, res)
25133 src = (((Opcode >> 9) - 1) & 7) + 1;
25137 READ_LONG_F(adr, dst)
25140 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
25141 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
25142 flag_N = res >> 24;
25143 WRITE_LONG_F(adr, res)
25154 src = (((Opcode >> 9) - 1) & 7) + 1;
25158 READ_LONG_F(adr, dst)
25161 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
25162 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
25163 flag_N = res >> 24;
25164 WRITE_LONG_F(adr, res)
25175 if (flag_NotZ && (!(flag_C & 0x100)))
25177 PC += ((s8)(Opcode & 0xFE)) >> 1;
25178 ctx->io_cycle_counter -= 2;
25189 if ((!flag_NotZ) || (flag_C & 0x100))
25191 PC += ((s8)(Opcode & 0xFE)) >> 1;
25192 ctx->io_cycle_counter -= 2;
25203 if (!(flag_C & 0x100))
25205 PC += ((s8)(Opcode & 0xFE)) >> 1;
25206 ctx->io_cycle_counter -= 2;
25217 if (flag_C & 0x100)
25219 PC += ((s8)(Opcode & 0xFE)) >> 1;
25220 ctx->io_cycle_counter -= 2;
25233 PC += ((s8)(Opcode & 0xFE)) >> 1;
25234 ctx->io_cycle_counter -= 2;
25247 PC += ((s8)(Opcode & 0xFE)) >> 1;
25248 ctx->io_cycle_counter -= 2;
25259 if (!(flag_V & 0x80))
25261 PC += ((s8)(Opcode & 0xFE)) >> 1;
25262 ctx->io_cycle_counter -= 2;
25275 PC += ((s8)(Opcode & 0xFE)) >> 1;
25276 ctx->io_cycle_counter -= 2;
25287 if (!(flag_N & 0x80))
25289 PC += ((s8)(Opcode & 0xFE)) >> 1;
25290 ctx->io_cycle_counter -= 2;
25303 PC += ((s8)(Opcode & 0xFE)) >> 1;
25304 ctx->io_cycle_counter -= 2;
25315 if (!((flag_N ^ flag_V) & 0x80))
25317 PC += ((s8)(Opcode & 0xFE)) >> 1;
25318 ctx->io_cycle_counter -= 2;
25329 if ((flag_N ^ flag_V) & 0x80)
25331 PC += ((s8)(Opcode & 0xFE)) >> 1;
25332 ctx->io_cycle_counter -= 2;
25343 if (flag_NotZ && (!((flag_N ^ flag_V) & 0x80)))
25345 PC += ((s8)(Opcode & 0xFE)) >> 1;
25346 ctx->io_cycle_counter -= 2;
25357 if ((!flag_NotZ) || ((flag_N ^ flag_V) & 0x80))
25359 PC += ((s8)(Opcode & 0xFE)) >> 1;
25360 ctx->io_cycle_counter -= 2;
25371 if (flag_NotZ && (!(flag_C & 0x100)))
25376 newPC += GET_SWORD;
25378 CHECK_BRANCH_EXCEPTION(newPC)
25391 if ((!flag_NotZ) || (flag_C & 0x100))
25396 newPC += GET_SWORD;
25398 CHECK_BRANCH_EXCEPTION(newPC)
25411 if (!(flag_C & 0x100))
25416 newPC += GET_SWORD;
25418 CHECK_BRANCH_EXCEPTION(newPC)
25431 if (flag_C & 0x100)
25436 newPC += GET_SWORD;
25438 CHECK_BRANCH_EXCEPTION(newPC)
25456 newPC += GET_SWORD;
25458 CHECK_BRANCH_EXCEPTION(newPC)
25476 newPC += GET_SWORD;
25478 CHECK_BRANCH_EXCEPTION(newPC)
25491 if (!(flag_V & 0x80))
25496 newPC += GET_SWORD;
25498 CHECK_BRANCH_EXCEPTION(newPC)
25516 newPC += GET_SWORD;
25518 CHECK_BRANCH_EXCEPTION(newPC)
25531 if (!(flag_N & 0x80))
25536 newPC += GET_SWORD;
25538 CHECK_BRANCH_EXCEPTION(newPC)
25556 newPC += GET_SWORD;
25558 CHECK_BRANCH_EXCEPTION(newPC)
25571 if (!((flag_N ^ flag_V) & 0x80))
25576 newPC += GET_SWORD;
25578 CHECK_BRANCH_EXCEPTION(newPC)
25591 if ((flag_N ^ flag_V) & 0x80)
25596 newPC += GET_SWORD;
25598 CHECK_BRANCH_EXCEPTION(newPC)
25611 if (flag_NotZ && (!((flag_N ^ flag_V) & 0x80)))
25616 newPC += GET_SWORD;
25618 CHECK_BRANCH_EXCEPTION(newPC)
25631 if ((!flag_NotZ) || ((flag_N ^ flag_V) & 0x80))
25636 newPC += GET_SWORD;
25638 CHECK_BRANCH_EXCEPTION(newPC)
25648 #ifdef FAMEC_CHECK_BRANCHES
25649 u32 newPC = GET_PC;
25653 CHECK_BRANCH_EXCEPTION(offs)
25655 PC += ((s8)(Opcode & 0xFE)) >> 1;
25670 newPC += GET_SWORD;
25672 CHECK_BRANCH_EXCEPTION(newPC)
25689 #ifdef FAMEC_CHECK_BRANCHES
25693 CHECK_BRANCH_EXCEPTION(offs)
25695 PC += ((s8)(Opcode & 0xFE)) >> 1;
25714 newPC += GET_SWORD;
25716 CHECK_BRANCH_EXCEPTION(newPC)
25728 res = (s32)(s8)Opcode;
25729 flag_C = flag_V = 0;
25730 flag_N = flag_NotZ = res;
25731 DREGu32((Opcode >> 9) & 7) = res;
25741 src = DREGu8((Opcode >> 0) & 7);
25742 res = DREGu8((Opcode >> 9) & 7);
25748 DREGu8((Opcode >> 9) & 7) = res;
25758 adr = AREG((Opcode >> 0) & 7);
25760 READ_BYTE_F(adr, src)
25761 res = DREGu8((Opcode >> 9) & 7);
25767 DREGu8((Opcode >> 9) & 7) = res;
25778 adr = AREG((Opcode >> 0) & 7);
25779 AREG((Opcode >> 0) & 7) += 1;
25781 READ_BYTE_F(adr, src)
25782 res = DREGu8((Opcode >> 9) & 7);
25788 DREGu8((Opcode >> 9) & 7) = res;
25799 adr = AREG((Opcode >> 0) & 7) - 1;
25800 AREG((Opcode >> 0) & 7) = adr;
25802 READ_BYTE_F(adr, src)
25803 res = DREGu8((Opcode >> 9) & 7);
25809 DREGu8((Opcode >> 9) & 7) = res;
25821 adr += AREG((Opcode >> 0) & 7);
25823 READ_BYTE_F(adr, src)
25824 res = DREGu8((Opcode >> 9) & 7);
25830 DREGu8((Opcode >> 9) & 7) = res;
25841 adr = AREG((Opcode >> 0) & 7);
25844 READ_BYTE_F(adr, src)
25845 res = DREGu8((Opcode >> 9) & 7);
25851 DREGu8((Opcode >> 9) & 7) = res;
25864 READ_BYTE_F(adr, src)
25865 res = DREGu8((Opcode >> 9) & 7);
25871 DREGu8((Opcode >> 9) & 7) = res;
25884 READ_BYTE_F(adr, src)
25885 res = DREGu8((Opcode >> 9) & 7);
25891 DREGu8((Opcode >> 9) & 7) = res;
25902 adr = GET_SWORD + GET_PC;
25905 READ_BYTE_F(adr, src)
25906 res = DREGu8((Opcode >> 9) & 7);
25912 DREGu8((Opcode >> 9) & 7) = res;
25926 READ_BYTE_F(adr, src)
25927 res = DREGu8((Opcode >> 9) & 7);
25933 DREGu8((Opcode >> 9) & 7) = res;
25945 res = DREGu8((Opcode >> 9) & 7);
25951 DREGu8((Opcode >> 9) & 7) = res;
25964 READ_BYTE_F(adr, src)
25965 res = DREGu8((Opcode >> 9) & 7);
25971 DREGu8((Opcode >> 9) & 7) = res;
25985 READ_BYTE_F(adr, src)
25986 res = DREGu8((Opcode >> 9) & 7);
25992 DREGu8((Opcode >> 9) & 7) = res;
26003 src = DREGu16((Opcode >> 0) & 7);
26004 res = DREGu16((Opcode >> 9) & 7);
26010 DREGu16((Opcode >> 9) & 7) = res;
26020 adr = AREG((Opcode >> 0) & 7);
26022 READ_WORD_F(adr, src)
26023 res = DREGu16((Opcode >> 9) & 7);
26029 DREGu16((Opcode >> 9) & 7) = res;
26040 adr = AREG((Opcode >> 0) & 7);
26041 AREG((Opcode >> 0) & 7) += 2;
26043 READ_WORD_F(adr, src)
26044 res = DREGu16((Opcode >> 9) & 7);
26050 DREGu16((Opcode >> 9) & 7) = res;
26061 adr = AREG((Opcode >> 0) & 7) - 2;
26062 AREG((Opcode >> 0) & 7) = adr;
26064 READ_WORD_F(adr, src)
26065 res = DREGu16((Opcode >> 9) & 7);
26071 DREGu16((Opcode >> 9) & 7) = res;
26083 adr += AREG((Opcode >> 0) & 7);
26085 READ_WORD_F(adr, src)
26086 res = DREGu16((Opcode >> 9) & 7);
26092 DREGu16((Opcode >> 9) & 7) = res;
26103 adr = AREG((Opcode >> 0) & 7);
26106 READ_WORD_F(adr, src)
26107 res = DREGu16((Opcode >> 9) & 7);
26113 DREGu16((Opcode >> 9) & 7) = res;
26126 READ_WORD_F(adr, src)
26127 res = DREGu16((Opcode >> 9) & 7);
26133 DREGu16((Opcode >> 9) & 7) = res;
26146 READ_WORD_F(adr, src)
26147 res = DREGu16((Opcode >> 9) & 7);
26153 DREGu16((Opcode >> 9) & 7) = res;
26164 adr = GET_SWORD + GET_PC;
26167 READ_WORD_F(adr, src)
26168 res = DREGu16((Opcode >> 9) & 7);
26174 DREGu16((Opcode >> 9) & 7) = res;
26188 READ_WORD_F(adr, src)
26189 res = DREGu16((Opcode >> 9) & 7);
26195 DREGu16((Opcode >> 9) & 7) = res;
26207 res = DREGu16((Opcode >> 9) & 7);
26213 DREGu16((Opcode >> 9) & 7) = res;
26226 READ_WORD_F(adr, src)
26227 res = DREGu16((Opcode >> 9) & 7);
26233 DREGu16((Opcode >> 9) & 7) = res;
26247 READ_WORD_F(adr, src)
26248 res = DREGu16((Opcode >> 9) & 7);
26254 DREGu16((Opcode >> 9) & 7) = res;
26265 src = DREGu32((Opcode >> 0) & 7);
26266 res = DREGu32((Opcode >> 9) & 7);
26271 flag_N = res >> 24;
26272 DREGu32((Opcode >> 9) & 7) = res;
26282 adr = AREG((Opcode >> 0) & 7);
26284 READ_LONG_F(adr, src)
26285 res = DREGu32((Opcode >> 9) & 7);
26290 flag_N = res >> 24;
26291 DREGu32((Opcode >> 9) & 7) = res;
26302 adr = AREG((Opcode >> 0) & 7);
26303 AREG((Opcode >> 0) & 7) += 4;
26305 READ_LONG_F(adr, src)
26306 res = DREGu32((Opcode >> 9) & 7);
26311 flag_N = res >> 24;
26312 DREGu32((Opcode >> 9) & 7) = res;
26323 adr = AREG((Opcode >> 0) & 7) - 4;
26324 AREG((Opcode >> 0) & 7) = adr;
26326 READ_LONG_F(adr, src)
26327 res = DREGu32((Opcode >> 9) & 7);
26332 flag_N = res >> 24;
26333 DREGu32((Opcode >> 9) & 7) = res;
26345 adr += AREG((Opcode >> 0) & 7);
26347 READ_LONG_F(adr, src)
26348 res = DREGu32((Opcode >> 9) & 7);
26353 flag_N = res >> 24;
26354 DREGu32((Opcode >> 9) & 7) = res;
26365 adr = AREG((Opcode >> 0) & 7);
26368 READ_LONG_F(adr, src)
26369 res = DREGu32((Opcode >> 9) & 7);
26374 flag_N = res >> 24;
26375 DREGu32((Opcode >> 9) & 7) = res;
26388 READ_LONG_F(adr, src)
26389 res = DREGu32((Opcode >> 9) & 7);
26394 flag_N = res >> 24;
26395 DREGu32((Opcode >> 9) & 7) = res;
26408 READ_LONG_F(adr, src)
26409 res = DREGu32((Opcode >> 9) & 7);
26414 flag_N = res >> 24;
26415 DREGu32((Opcode >> 9) & 7) = res;
26426 adr = GET_SWORD + GET_PC;
26429 READ_LONG_F(adr, src)
26430 res = DREGu32((Opcode >> 9) & 7);
26435 flag_N = res >> 24;
26436 DREGu32((Opcode >> 9) & 7) = res;
26450 READ_LONG_F(adr, src)
26451 res = DREGu32((Opcode >> 9) & 7);
26456 flag_N = res >> 24;
26457 DREGu32((Opcode >> 9) & 7) = res;
26469 res = DREGu32((Opcode >> 9) & 7);
26474 flag_N = res >> 24;
26475 DREGu32((Opcode >> 9) & 7) = res;
26488 READ_LONG_F(adr, src)
26489 res = DREGu32((Opcode >> 9) & 7);
26494 flag_N = res >> 24;
26495 DREGu32((Opcode >> 9) & 7) = res;
26509 READ_LONG_F(adr, src)
26510 res = DREGu32((Opcode >> 9) & 7);
26515 flag_N = res >> 24;
26516 DREGu32((Opcode >> 9) & 7) = res;
26527 src = DREGu8((Opcode >> 9) & 7);
26528 adr = AREG((Opcode >> 0) & 7);
26530 READ_BYTE_F(adr, res)
26536 WRITE_BYTE_F(adr, res)
26547 src = DREGu8((Opcode >> 9) & 7);
26548 adr = AREG((Opcode >> 0) & 7);
26549 AREG((Opcode >> 0) & 7) += 1;
26551 READ_BYTE_F(adr, res)
26557 WRITE_BYTE_F(adr, res)
26568 src = DREGu8((Opcode >> 9) & 7);
26569 adr = AREG((Opcode >> 0) & 7) - 1;
26570 AREG((Opcode >> 0) & 7) = adr;
26572 READ_BYTE_F(adr, res)
26578 WRITE_BYTE_F(adr, res)
26589 src = DREGu8((Opcode >> 9) & 7);
26591 adr += AREG((Opcode >> 0) & 7);
26593 READ_BYTE_F(adr, res)
26599 WRITE_BYTE_F(adr, res)
26610 src = DREGu8((Opcode >> 9) & 7);
26611 adr = AREG((Opcode >> 0) & 7);
26614 READ_BYTE_F(adr, res)
26620 WRITE_BYTE_F(adr, res)
26631 src = DREGu8((Opcode >> 9) & 7);
26634 READ_BYTE_F(adr, res)
26640 WRITE_BYTE_F(adr, res)
26651 src = DREGu8((Opcode >> 9) & 7);
26654 READ_BYTE_F(adr, res)
26660 WRITE_BYTE_F(adr, res)
26671 src = DREGu8((Opcode >> 9) & 7);
26675 READ_BYTE_F(adr, res)
26681 WRITE_BYTE_F(adr, res)
26692 src = DREGu8((Opcode >> 9) & 7);
26696 READ_BYTE_F(adr, res)
26702 WRITE_BYTE_F(adr, res)
26713 src = DREGu16((Opcode >> 9) & 7);
26714 adr = AREG((Opcode >> 0) & 7);
26716 READ_WORD_F(adr, res)
26722 WRITE_WORD_F(adr, res)
26733 src = DREGu16((Opcode >> 9) & 7);
26734 adr = AREG((Opcode >> 0) & 7);
26735 AREG((Opcode >> 0) & 7) += 2;
26737 READ_WORD_F(adr, res)
26743 WRITE_WORD_F(adr, res)
26754 src = DREGu16((Opcode >> 9) & 7);
26755 adr = AREG((Opcode >> 0) & 7) - 2;
26756 AREG((Opcode >> 0) & 7) = adr;
26758 READ_WORD_F(adr, res)
26764 WRITE_WORD_F(adr, res)
26775 src = DREGu16((Opcode >> 9) & 7);
26777 adr += AREG((Opcode >> 0) & 7);
26779 READ_WORD_F(adr, res)
26785 WRITE_WORD_F(adr, res)
26796 src = DREGu16((Opcode >> 9) & 7);
26797 adr = AREG((Opcode >> 0) & 7);
26800 READ_WORD_F(adr, res)
26806 WRITE_WORD_F(adr, res)
26817 src = DREGu16((Opcode >> 9) & 7);
26820 READ_WORD_F(adr, res)
26826 WRITE_WORD_F(adr, res)
26837 src = DREGu16((Opcode >> 9) & 7);
26840 READ_WORD_F(adr, res)
26846 WRITE_WORD_F(adr, res)
26857 src = DREGu16((Opcode >> 9) & 7);
26861 READ_WORD_F(adr, res)
26867 WRITE_WORD_F(adr, res)
26878 src = DREGu16((Opcode >> 9) & 7);
26882 READ_WORD_F(adr, res)
26888 WRITE_WORD_F(adr, res)
26899 src = DREGu32((Opcode >> 9) & 7);
26900 adr = AREG((Opcode >> 0) & 7);
26902 READ_LONG_F(adr, res)
26907 flag_N = res >> 24;
26908 WRITE_LONG_F(adr, res)
26919 src = DREGu32((Opcode >> 9) & 7);
26920 adr = AREG((Opcode >> 0) & 7);
26921 AREG((Opcode >> 0) & 7) += 4;
26923 READ_LONG_F(adr, res)
26928 flag_N = res >> 24;
26929 WRITE_LONG_F(adr, res)
26940 src = DREGu32((Opcode >> 9) & 7);
26941 adr = AREG((Opcode >> 0) & 7) - 4;
26942 AREG((Opcode >> 0) & 7) = adr;
26944 READ_LONG_F(adr, res)
26949 flag_N = res >> 24;
26950 WRITE_LONG_F(adr, res)
26961 src = DREGu32((Opcode >> 9) & 7);
26963 adr += AREG((Opcode >> 0) & 7);
26965 READ_LONG_F(adr, res)
26970 flag_N = res >> 24;
26971 WRITE_LONG_F(adr, res)
26982 src = DREGu32((Opcode >> 9) & 7);
26983 adr = AREG((Opcode >> 0) & 7);
26986 READ_LONG_F(adr, res)
26991 flag_N = res >> 24;
26992 WRITE_LONG_F(adr, res)
27003 src = DREGu32((Opcode >> 9) & 7);
27006 READ_LONG_F(adr, res)
27011 flag_N = res >> 24;
27012 WRITE_LONG_F(adr, res)
27023 src = DREGu32((Opcode >> 9) & 7);
27026 READ_LONG_F(adr, res)
27031 flag_N = res >> 24;
27032 WRITE_LONG_F(adr, res)
27043 src = DREGu32((Opcode >> 9) & 7);
27047 READ_LONG_F(adr, res)
27052 flag_N = res >> 24;
27053 WRITE_LONG_F(adr, res)
27064 src = DREGu32((Opcode >> 9) & 7);
27068 READ_LONG_F(adr, res)
27073 flag_N = res >> 24;
27074 WRITE_LONG_F(adr, res)
27086 src = DREGu8((Opcode >> 0) & 7);
27087 dst = DREGu8((Opcode >> 9) & 7);
27088 res = (dst & 0xF) - (src & 0xF) - ((flag_X >> M68K_SR_X_SFT) & 1);
27089 if (res > 0xF) corf = 6;
27090 res += (dst & 0xF0) - (src & 0xF0);
27092 flag_X = flag_C = (s32)res < (s32)corf ? M68K_SR_C : 0;
27093 if (res > 0xff) res += 0xA0;
27094 res = (res - corf) & 0xFF;
27098 DREGu8((Opcode >> 9) & 7) = res;
27109 adr = AREG((Opcode >> 0) & 7) - 1;
27110 AREG((Opcode >> 0) & 7) = adr;
27112 READ_BYTE_F(adr, src)
27113 adr = AREG((Opcode >> 9) & 7) - 1;
27114 AREG((Opcode >> 9) & 7) = adr;
27115 READ_BYTE_F(adr, dst)
27116 res = (dst & 0xF) - (src & 0xF) - ((flag_X >> M68K_SR_X_SFT) & 1);
27117 if (res > 0xF) corf = 6;
27118 res += (dst & 0xF0) - (src & 0xF0);
27120 flag_X = flag_C = (s32)res < (s32)corf ? M68K_SR_C : 0;
27121 if (res > 0xff) res += 0xA0;
27122 res = (res - corf) & 0xFF;
27126 WRITE_BYTE_F(adr, res)
27141 READ_BYTE_F(adr, src)
27142 adr = AREG((Opcode >> 9) & 7) - 1;
27143 AREG((Opcode >> 9) & 7) = adr;
27144 READ_BYTE_F(adr, dst)
27145 res = (dst & 0xF) - (src & 0xF) - ((flag_X >> M68K_SR_X_SFT) & 1);
27146 if (res > 0xF) corf = 6;
27147 res += (dst & 0xF0) - (src & 0xF0);
27149 flag_X = flag_C = (s32)res < (s32)corf ? M68K_SR_C : 0;
27150 if (res > 0xff) res += 0xA0;
27151 res = (res - corf) & 0xFF;
27155 WRITE_BYTE_F(adr, res)
27167 adr = AREG((Opcode >> 0) & 7) - 1;
27168 AREG((Opcode >> 0) & 7) = adr;
27170 READ_BYTE_F(adr, src)
27173 READ_BYTE_F(adr, dst)
27174 res = (dst & 0xF) - (src & 0xF) - ((flag_X >> M68K_SR_X_SFT) & 1);
27175 if (res > 0xF) corf = 6;
27176 res += (dst & 0xF0) - (src & 0xF0);
27178 flag_X = flag_C = (s32)res < (s32)corf ? M68K_SR_C : 0;
27179 if (res > 0xff) res += 0xA0;
27180 res = (res - corf) & 0xFF;
27184 WRITE_BYTE_F(adr, res)
27199 READ_BYTE_F(adr, src)
27202 READ_BYTE_F(adr, dst)
27203 res = (dst & 0xF) - (src & 0xF) - ((flag_X >> M68K_SR_X_SFT) & 1);
27204 if (res > 0xF) corf = 6;
27205 res += (dst & 0xF0) - (src & 0xF0);
27207 flag_X = flag_C = (s32)res < (s32)corf ? M68K_SR_C : 0;
27208 if (res > 0xff) res += 0xA0;
27209 res = (res - corf) & 0xFF;
27213 WRITE_BYTE_F(adr, res)
27224 src = DREGu16((Opcode >> 0) & 7);
27227 SET_PC(execute_exception(ctx, M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR));
27228 #ifdef USE_CYCLONE_TIMING_DIV
27234 dst = DREGu32((Opcode >> 9) & 7);
27241 if (q & 0xFFFF0000)
27243 flag_V = M68K_SR_V;
27244 #ifdef USE_CYCLONE_TIMING_DIV
27253 flag_V = flag_C = 0;
27254 res = q | (r << 16);
27255 DREGu32((Opcode >> 9) & 7) = res;
27256 #ifdef USE_CYCLONE_TIMING_DIV
27257 RET(138-BITCOUNT(res,q)*2)
27270 adr = AREG((Opcode >> 0) & 7);
27272 READ_WORD_F(adr, src)
27275 SET_PC(execute_exception(ctx, M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR));
27276 #ifdef USE_CYCLONE_TIMING_DIV
27282 dst = DREGu32((Opcode >> 9) & 7);
27289 if (q & 0xFFFF0000)
27291 flag_V = M68K_SR_V;
27292 #ifdef USE_CYCLONE_TIMING_DIV
27301 flag_V = flag_C = 0;
27302 res = q | (r << 16);
27303 DREGu32((Opcode >> 9) & 7) = res;
27304 #ifdef USE_CYCLONE_TIMING_DIV
27305 RET(142-BITCOUNT(res,q)*2)
27318 adr = AREG((Opcode >> 0) & 7);
27319 AREG((Opcode >> 0) & 7) += 2;
27321 READ_WORD_F(adr, src)
27324 SET_PC(execute_exception(ctx, M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR));
27325 #ifdef USE_CYCLONE_TIMING_DIV
27331 dst = DREGu32((Opcode >> 9) & 7);
27338 if (q & 0xFFFF0000)
27340 flag_V = M68K_SR_V;
27341 #ifdef USE_CYCLONE_TIMING_DIV
27350 flag_V = flag_C = 0;
27351 res = q | (r << 16);
27352 DREGu32((Opcode >> 9) & 7) = res;
27353 #ifdef USE_CYCLONE_TIMING_DIV
27354 RET(142-BITCOUNT(res,q)*2)
27367 adr = AREG((Opcode >> 0) & 7) - 2;
27368 AREG((Opcode >> 0) & 7) = adr;
27370 READ_WORD_F(adr, src)
27373 SET_PC(execute_exception(ctx, M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR));
27374 #ifdef USE_CYCLONE_TIMING_DIV
27380 dst = DREGu32((Opcode >> 9) & 7);
27387 if (q & 0xFFFF0000)
27389 flag_V = M68K_SR_V;
27390 #ifdef USE_CYCLONE_TIMING_DIV
27399 flag_V = flag_C = 0;
27400 res = q | (r << 16);
27401 DREGu32((Opcode >> 9) & 7) = res;
27402 #ifdef USE_CYCLONE_TIMING_DIV
27403 RET(144-BITCOUNT(res,q)*2)
27417 adr += AREG((Opcode >> 0) & 7);
27419 READ_WORD_F(adr, src)
27422 SET_PC(execute_exception(ctx, M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR));
27423 #ifdef USE_CYCLONE_TIMING_DIV
27429 dst = DREGu32((Opcode >> 9) & 7);
27436 if (q & 0xFFFF0000)
27438 flag_V = M68K_SR_V;
27439 #ifdef USE_CYCLONE_TIMING_DIV
27448 flag_V = flag_C = 0;
27449 res = q | (r << 16);
27450 DREGu32((Opcode >> 9) & 7) = res;
27451 #ifdef USE_CYCLONE_TIMING_DIV
27452 RET(146-BITCOUNT(res,q)*2)
27465 adr = AREG((Opcode >> 0) & 7);
27468 READ_WORD_F(adr, src)
27471 SET_PC(execute_exception(ctx, M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR));
27472 #ifdef USE_CYCLONE_TIMING_DIV
27478 dst = DREGu32((Opcode >> 9) & 7);
27485 if (q & 0xFFFF0000)
27487 flag_V = M68K_SR_V;
27488 #ifdef USE_CYCLONE_TIMING_DIV
27497 flag_V = flag_C = 0;
27498 res = q | (r << 16);
27499 DREGu32((Opcode >> 9) & 7) = res;
27500 #ifdef USE_CYCLONE_TIMING_DIV
27501 RET(148-BITCOUNT(res,q)*2)
27516 READ_WORD_F(adr, src)
27519 SET_PC(execute_exception(ctx, M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR));
27520 #ifdef USE_CYCLONE_TIMING_DIV
27526 dst = DREGu32((Opcode >> 9) & 7);
27533 if (q & 0xFFFF0000)
27535 flag_V = M68K_SR_V;
27536 #ifdef USE_CYCLONE_TIMING_DIV
27545 flag_V = flag_C = 0;
27546 res = q | (r << 16);
27547 DREGu32((Opcode >> 9) & 7) = res;
27548 #ifdef USE_CYCLONE_TIMING_DIV
27549 RET(146-BITCOUNT(res,q)*2)
27564 READ_WORD_F(adr, src)
27567 SET_PC(execute_exception(ctx, M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR));
27568 #ifdef USE_CYCLONE_TIMING_DIV
27574 dst = DREGu32((Opcode >> 9) & 7);
27581 if (q & 0xFFFF0000)
27583 flag_V = M68K_SR_V;
27584 #ifdef USE_CYCLONE_TIMING_DIV
27593 flag_V = flag_C = 0;
27594 res = q | (r << 16);
27595 DREGu32((Opcode >> 9) & 7) = res;
27596 #ifdef USE_CYCLONE_TIMING_DIV
27597 RET(150-BITCOUNT(res,q)*2)
27610 adr = GET_SWORD + GET_PC;
27613 READ_WORD_F(adr, src)
27616 SET_PC(execute_exception(ctx, M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR));
27617 #ifdef USE_CYCLONE_TIMING_DIV
27623 dst = DREGu32((Opcode >> 9) & 7);
27630 if (q & 0xFFFF0000)
27632 flag_V = M68K_SR_V;
27633 #ifdef USE_CYCLONE_TIMING_DIV
27642 flag_V = flag_C = 0;
27643 res = q | (r << 16);
27644 DREGu32((Opcode >> 9) & 7) = res;
27645 #ifdef USE_CYCLONE_TIMING_DIV
27646 RET(146-BITCOUNT(res,q)*2)
27662 READ_WORD_F(adr, src)
27665 SET_PC(execute_exception(ctx, M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR));
27666 #ifdef USE_CYCLONE_TIMING_DIV
27672 dst = DREGu32((Opcode >> 9) & 7);
27679 if (q & 0xFFFF0000)
27681 flag_V = M68K_SR_V;
27682 #ifdef USE_CYCLONE_TIMING_DIV
27691 flag_V = flag_C = 0;
27692 res = q | (r << 16);
27693 DREGu32((Opcode >> 9) & 7) = res;
27694 #ifdef USE_CYCLONE_TIMING_DIV
27695 RET(148-BITCOUNT(res,q)*2)
27711 SET_PC(execute_exception(ctx, M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR));
27712 #ifdef USE_CYCLONE_TIMING_DIV
27718 dst = DREGu32((Opcode >> 9) & 7);
27725 if (q & 0xFFFF0000)
27727 flag_V = M68K_SR_V;
27728 #ifdef USE_CYCLONE_TIMING_DIV
27737 flag_V = flag_C = 0;
27738 res = q | (r << 16);
27739 DREGu32((Opcode >> 9) & 7) = res;
27740 #ifdef USE_CYCLONE_TIMING_DIV
27741 RET(142-BITCOUNT(res,q)*2)
27757 READ_WORD_F(adr, src)
27760 SET_PC(execute_exception(ctx, M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR));
27761 #ifdef USE_CYCLONE_TIMING_DIV
27767 dst = DREGu32((Opcode >> 9) & 7);
27774 if (q & 0xFFFF0000)
27776 flag_V = M68K_SR_V;
27777 #ifdef USE_CYCLONE_TIMING_DIV
27786 flag_V = flag_C = 0;
27787 res = q | (r << 16);
27788 DREGu32((Opcode >> 9) & 7) = res;
27789 #ifdef USE_CYCLONE_TIMING_DIV
27790 RET(142-BITCOUNT(res,q)*2)
27806 READ_WORD_F(adr, src)
27809 SET_PC(execute_exception(ctx, M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR));
27810 #ifdef USE_CYCLONE_TIMING_DIV
27816 dst = DREGu32((Opcode >> 9) & 7);
27823 if (q & 0xFFFF0000)
27825 flag_V = M68K_SR_V;
27826 #ifdef USE_CYCLONE_TIMING_DIV
27835 flag_V = flag_C = 0;
27836 res = q | (r << 16);
27837 DREGu32((Opcode >> 9) & 7) = res;
27838 #ifdef USE_CYCLONE_TIMING_DIV
27839 RET(144-BITCOUNT(res,q)*2)
27852 src = (s32)DREGs16((Opcode >> 0) & 7);
27855 SET_PC(execute_exception(ctx, M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR));
27856 #ifdef USE_CYCLONE_TIMING_DIV
27862 dst = DREGu32((Opcode >> 9) & 7);
27863 if ((dst == 0x80000000) && (src == (u32)-1))
27865 flag_NotZ = flag_N = 0;
27866 flag_V = flag_C = 0;
27868 DREGu32((Opcode >> 9) & 7) = res;
27869 #ifdef USE_CYCLONE_TIMING_DIV
27870 RET(16+(dst>>31)*2)
27878 q = (s32)dst / (s32)src;
27879 r = (s32)dst % (s32)src;
27881 if ((q > 0x7FFF) || (q < -0x8000))
27883 flag_V = M68K_SR_V;
27884 #ifdef USE_CYCLONE_TIMING_DIV
27885 if (q > 0xFFFF || q < -0x10000) {
27886 RET(16+(dst>>31)*2)
27887 } else RET(152+(dst>>31)*4-(q>>31)*2-BITCOUNT(res,abs(q))*2)
27895 flag_V = flag_C = 0;
27896 res = q | (r << 16);
27897 DREGu32((Opcode >> 9) & 7) = res;
27898 #ifdef USE_CYCLONE_TIMING_DIV
27899 RET(152+(dst>>31)*4-(q>>31)*2-BITCOUNT(res,abs(q))*2)
27912 adr = AREG((Opcode >> 0) & 7);
27914 READSX_WORD_F(adr, src)
27917 SET_PC(execute_exception(ctx, M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR));
27918 #ifdef USE_CYCLONE_TIMING_DIV
27924 dst = DREGu32((Opcode >> 9) & 7);
27925 if ((dst == 0x80000000) && (src == (u32)-1))
27927 flag_NotZ = flag_N = 0;
27928 flag_V = flag_C = 0;
27930 DREGu32((Opcode >> 9) & 7) = res;
27931 #ifdef USE_CYCLONE_TIMING_DIV
27932 RET(20+(dst>>31)*2)
27940 q = (s32)dst / (s32)src;
27941 r = (s32)dst % (s32)src;
27943 if ((q > 0x7FFF) || (q < -0x8000))
27945 flag_V = M68K_SR_V;
27946 #ifdef USE_CYCLONE_TIMING_DIV
27947 if (q > 0xFFFF || q < -0x10000) {
27948 RET(20+(dst>>31)*2)
27949 } else RET(156+(dst>>31)*4-(q>>31)*2-BITCOUNT(res,abs(q))*2)
27957 flag_V = flag_C = 0;
27958 res = q | (r << 16);
27959 DREGu32((Opcode >> 9) & 7) = res;
27960 #ifdef USE_CYCLONE_TIMING_DIV
27961 RET(156+(dst>>31)*4-(q>>31)*2-BITCOUNT(res,abs(q))*2)
27974 adr = AREG((Opcode >> 0) & 7);
27975 AREG((Opcode >> 0) & 7) += 2;
27977 READSX_WORD_F(adr, src)
27980 SET_PC(execute_exception(ctx, M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR));
27981 #ifdef USE_CYCLONE_TIMING_DIV
27987 dst = DREGu32((Opcode >> 9) & 7);
27988 if ((dst == 0x80000000) && (src == (u32)-1))
27990 flag_NotZ = flag_N = 0;
27991 flag_V = flag_C = 0;
27993 DREGu32((Opcode >> 9) & 7) = res;
27994 #ifdef USE_CYCLONE_TIMING_DIV
27995 RET(20+(dst>>31)*2)
28003 q = (s32)dst / (s32)src;
28004 r = (s32)dst % (s32)src;
28006 if ((q > 0x7FFF) || (q < -0x8000))
28008 flag_V = M68K_SR_V;
28009 #ifdef USE_CYCLONE_TIMING_DIV
28010 if (q > 0xFFFF || q < -0x10000) {
28011 RET(20+(dst>>31)*2)
28012 } else RET(156+(dst>>31)*4-(q>>31)*2-BITCOUNT(res,abs(q))*2)
28020 flag_V = flag_C = 0;
28021 res = q | (r << 16);
28022 DREGu32((Opcode >> 9) & 7) = res;
28023 #ifdef USE_CYCLONE_TIMING_DIV
28024 RET(156+(dst>>31)*4-(q>>31)*2-BITCOUNT(res,abs(q))*2)
28037 adr = AREG((Opcode >> 0) & 7) - 2;
28038 AREG((Opcode >> 0) & 7) = adr;
28040 READSX_WORD_F(adr, src)
28043 SET_PC(execute_exception(ctx, M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR));
28044 #ifdef USE_CYCLONE_TIMING_DIV
28050 dst = DREGu32((Opcode >> 9) & 7);
28051 if ((dst == 0x80000000) && (src == (u32)-1))
28053 flag_NotZ = flag_N = 0;
28054 flag_V = flag_C = 0;
28056 DREGu32((Opcode >> 9) & 7) = res;
28057 #ifdef USE_CYCLONE_TIMING_DIV
28058 RET(22+(dst>>31)*2)
28066 q = (s32)dst / (s32)src;
28067 r = (s32)dst % (s32)src;
28069 if ((q > 0x7FFF) || (q < -0x8000))
28071 flag_V = M68K_SR_V;
28072 #ifdef USE_CYCLONE_TIMING_DIV
28073 if (q > 0xFFFF || q < -0x10000) {
28074 RET(22+(dst>>31)*2)
28075 } else RET(158+(dst>>31)*4-(q>>31)*2-BITCOUNT(res,abs(q))*2)
28083 flag_V = flag_C = 0;
28084 res = q | (r << 16);
28085 DREGu32((Opcode >> 9) & 7) = res;
28086 #ifdef USE_CYCLONE_TIMING_DIV
28087 RET(158+(dst>>31)*4-(q>>31)*2-BITCOUNT(res,abs(q))*2)
28101 adr += AREG((Opcode >> 0) & 7);
28103 READSX_WORD_F(adr, src)
28106 SET_PC(execute_exception(ctx, M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR));
28107 #ifdef USE_CYCLONE_TIMING_DIV
28113 dst = DREGu32((Opcode >> 9) & 7);
28114 if ((dst == 0x80000000) && (src == (u32)-1))
28116 flag_NotZ = flag_N = 0;
28117 flag_V = flag_C = 0;
28119 DREGu32((Opcode >> 9) & 7) = res;
28120 #ifdef USE_CYCLONE_TIMING_DIV
28121 RET(24+(dst>>31)*2)
28129 q = (s32)dst / (s32)src;
28130 r = (s32)dst % (s32)src;
28132 if ((q > 0x7FFF) || (q < -0x8000))
28134 flag_V = M68K_SR_V;
28135 #ifdef USE_CYCLONE_TIMING_DIV
28136 if (q > 0xFFFF || q < -0x10000) {
28137 RET(24+(dst>>31)*2)
28138 } else RET(160+(dst>>31)*4-(q>>31)*2-BITCOUNT(res,abs(q))*2)
28146 flag_V = flag_C = 0;
28147 res = q | (r << 16);
28148 DREGu32((Opcode >> 9) & 7) = res;
28149 #ifdef USE_CYCLONE_TIMING_DIV
28150 RET(160+(dst>>31)*4-(q>>31)*2-BITCOUNT(res,abs(q))*2)
28163 adr = AREG((Opcode >> 0) & 7);
28166 READSX_WORD_F(adr, src)
28169 SET_PC(execute_exception(ctx, M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR));
28170 #ifdef USE_CYCLONE_TIMING_DIV
28176 dst = DREGu32((Opcode >> 9) & 7);
28177 if ((dst == 0x80000000) && (src == (u32)-1))
28179 flag_NotZ = flag_N = 0;
28180 flag_V = flag_C = 0;
28182 DREGu32((Opcode >> 9) & 7) = res;
28183 #ifdef USE_CYCLONE_TIMING_DIV
28184 RET(26+(dst>>31)*2)
28192 q = (s32)dst / (s32)src;
28193 r = (s32)dst % (s32)src;
28195 if ((q > 0x7FFF) || (q < -0x8000))
28197 flag_V = M68K_SR_V;
28198 #ifdef USE_CYCLONE_TIMING_DIV
28199 if (q > 0xFFFF || q < -0x10000) {
28200 RET(26+(dst>>31)*2)
28201 } else RET(162+(dst>>31)*4-(q>>31)*2-BITCOUNT(res,abs(q))*2)
28209 flag_V = flag_C = 0;
28210 res = q | (r << 16);
28211 DREGu32((Opcode >> 9) & 7) = res;
28212 #ifdef USE_CYCLONE_TIMING_DIV
28213 RET(162+(dst>>31)*4-(q>>31)*2-BITCOUNT(res,abs(q))*2)
28228 READSX_WORD_F(adr, src)
28231 SET_PC(execute_exception(ctx, M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR));
28232 #ifdef USE_CYCLONE_TIMING_DIV
28238 dst = DREGu32((Opcode >> 9) & 7);
28239 if ((dst == 0x80000000) && (src == (u32)-1))
28241 flag_NotZ = flag_N = 0;
28242 flag_V = flag_C = 0;
28244 DREGu32((Opcode >> 9) & 7) = res;
28245 #ifdef USE_CYCLONE_TIMING_DIV
28246 RET(24+(dst>>31)*2)
28254 q = (s32)dst / (s32)src;
28255 r = (s32)dst % (s32)src;
28257 if ((q > 0x7FFF) || (q < -0x8000))
28259 flag_V = M68K_SR_V;
28260 #ifdef USE_CYCLONE_TIMING_DIV
28261 if (q > 0xFFFF || q < -0x10000) {
28262 RET(24+(dst>>31)*2)
28263 } else RET(160+(dst>>31)*4-(q>>31)*2-BITCOUNT(res,abs(q))*2)
28271 flag_V = flag_C = 0;
28272 res = q | (r << 16);
28273 DREGu32((Opcode >> 9) & 7) = res;
28274 #ifdef USE_CYCLONE_TIMING_DIV
28275 RET(160+(dst>>31)*4-(q>>31)*2-BITCOUNT(res,abs(q))*2)
28290 READSX_WORD_F(adr, src)
28293 SET_PC(execute_exception(ctx, M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR));
28294 #ifdef USE_CYCLONE_TIMING_DIV
28300 dst = DREGu32((Opcode >> 9) & 7);
28301 if ((dst == 0x80000000) && (src == (u32)-1))
28303 flag_NotZ = flag_N = 0;
28304 flag_V = flag_C = 0;
28306 DREGu32((Opcode >> 9) & 7) = res;
28307 #ifdef USE_CYCLONE_TIMING_DIV
28308 RET(28+(dst>>31)*2)
28316 q = (s32)dst / (s32)src;
28317 r = (s32)dst % (s32)src;
28319 if ((q > 0x7FFF) || (q < -0x8000))
28321 flag_V = M68K_SR_V;
28322 #ifdef USE_CYCLONE_TIMING_DIV
28323 if (q > 0xFFFF || q < -0x10000) {
28324 RET(28+(dst>>31)*2)
28325 } else RET(164+(dst>>31)*4-(q>>31)*2-BITCOUNT(res,abs(q))*2)
28333 flag_V = flag_C = 0;
28334 res = q | (r << 16);
28335 DREGu32((Opcode >> 9) & 7) = res;
28336 #ifdef USE_CYCLONE_TIMING_DIV
28337 RET(164+(dst>>31)*4-(q>>31)*2-BITCOUNT(res,abs(q))*2)
28350 adr = GET_SWORD + GET_PC;
28353 READSX_WORD_F(adr, src)
28356 SET_PC(execute_exception(ctx, M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR));
28357 #ifdef USE_CYCLONE_TIMING_DIV
28363 dst = DREGu32((Opcode >> 9) & 7);
28364 if ((dst == 0x80000000) && (src == (u32)-1))
28366 flag_NotZ = flag_N = 0;
28367 flag_V = flag_C = 0;
28369 DREGu32((Opcode >> 9) & 7) = res;
28370 #ifdef USE_CYCLONE_TIMING_DIV
28371 RET(24+(dst>>31)*2)
28379 q = (s32)dst / (s32)src;
28380 r = (s32)dst % (s32)src;
28382 if ((q > 0x7FFF) || (q < -0x8000))
28384 flag_V = M68K_SR_V;
28385 #ifdef USE_CYCLONE_TIMING_DIV
28386 if (q > 0xFFFF || q < -0x10000) {
28387 RET(24+(dst>>31)*2)
28388 } else RET(160+(dst>>31)*4-(q>>31)*2-BITCOUNT(res,abs(q))*2)
28396 flag_V = flag_C = 0;
28397 res = q | (r << 16);
28398 DREGu32((Opcode >> 9) & 7) = res;
28399 #ifdef USE_CYCLONE_TIMING_DIV
28400 RET(160+(dst>>31)*4-(q>>31)*2-BITCOUNT(res,abs(q))*2)
28416 READSX_WORD_F(adr, src)
28419 SET_PC(execute_exception(ctx, M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR));
28420 #ifdef USE_CYCLONE_TIMING_DIV
28426 dst = DREGu32((Opcode >> 9) & 7);
28427 if ((dst == 0x80000000) && (src == (u32)-1))
28429 flag_NotZ = flag_N = 0;
28430 flag_V = flag_C = 0;
28432 DREGu32((Opcode >> 9) & 7) = res;
28433 #ifdef USE_CYCLONE_TIMING_DIV
28434 RET(26+(dst>>31)*2)
28442 q = (s32)dst / (s32)src;
28443 r = (s32)dst % (s32)src;
28445 if ((q > 0x7FFF) || (q < -0x8000))
28447 flag_V = M68K_SR_V;
28448 #ifdef USE_CYCLONE_TIMING_DIV
28449 if (q > 0xFFFF || q < -0x10000) {
28450 RET(26+(dst>>31)*2)
28451 } else RET(162+(dst>>31)*4-(q>>31)*2-BITCOUNT(res,abs(q))*2)
28459 flag_V = flag_C = 0;
28460 res = q | (r << 16);
28461 DREGu32((Opcode >> 9) & 7) = res;
28462 #ifdef USE_CYCLONE_TIMING_DIV
28463 RET(162+(dst>>31)*4-(q>>31)*2-BITCOUNT(res,abs(q))*2)
28479 SET_PC(execute_exception(ctx, M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR));
28480 #ifdef USE_CYCLONE_TIMING_DIV
28486 dst = DREGu32((Opcode >> 9) & 7);
28487 if ((dst == 0x80000000) && (src == (u32)-1))
28489 flag_NotZ = flag_N = 0;
28490 flag_V = flag_C = 0;
28492 DREGu32((Opcode >> 9) & 7) = res;
28493 #ifdef USE_CYCLONE_TIMING_DIV
28494 RET(20+(dst>>31)*2)
28502 q = (s32)dst / (s32)src;
28503 r = (s32)dst % (s32)src;
28505 if ((q > 0x7FFF) || (q < -0x8000))
28507 flag_V = M68K_SR_V;
28508 #ifdef USE_CYCLONE_TIMING_DIV
28509 if (q > 0xFFFF || q < -0x10000) {
28510 RET(20+(dst>>31)*2)
28511 } else RET(156+(dst>>31)*4-(q>>31)*2-BITCOUNT(res,abs(q))*2)
28519 flag_V = flag_C = 0;
28520 res = q | (r << 16);
28521 DREGu32((Opcode >> 9) & 7) = res;
28522 #ifdef USE_CYCLONE_TIMING_DIV
28523 RET(156+(dst>>31)*4-(q>>31)*2-BITCOUNT(res,abs(q))*2)
28539 READSX_WORD_F(adr, src)
28542 SET_PC(execute_exception(ctx, M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR));
28543 #ifdef USE_CYCLONE_TIMING_DIV
28549 dst = DREGu32((Opcode >> 9) & 7);
28550 if ((dst == 0x80000000) && (src == (u32)-1))
28552 flag_NotZ = flag_N = 0;
28553 flag_V = flag_C = 0;
28555 DREGu32((Opcode >> 9) & 7) = res;
28556 #ifdef USE_CYCLONE_TIMING_DIV
28557 RET(20+(dst>>31)*2)
28565 q = (s32)dst / (s32)src;
28566 r = (s32)dst % (s32)src;
28568 if ((q > 0x7FFF) || (q < -0x8000))
28570 flag_V = M68K_SR_V;
28571 #ifdef USE_CYCLONE_TIMING_DIV
28572 if (q > 0xFFFF || q < -0x10000) {
28573 RET(20+(dst>>31)*2)
28574 } else RET(156+(dst>>31)*4-(q>>31)*2-BITCOUNT(res,abs(q))*2)
28582 flag_V = flag_C = 0;
28583 res = q | (r << 16);
28584 DREGu32((Opcode >> 9) & 7) = res;
28585 #ifdef USE_CYCLONE_TIMING_DIV
28586 RET(156+(dst>>31)*4-(q>>31)*2-BITCOUNT(res,abs(q))*2)
28602 READSX_WORD_F(adr, src)
28605 SET_PC(execute_exception(ctx, M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR));
28606 #ifdef USE_CYCLONE_TIMING_DIV
28612 dst = DREGu32((Opcode >> 9) & 7);
28613 if ((dst == 0x80000000) && (src == (u32)-1))
28615 flag_NotZ = flag_N = 0;
28616 flag_V = flag_C = 0;
28618 DREGu32((Opcode >> 9) & 7) = res;
28619 #ifdef USE_CYCLONE_TIMING_DIV
28620 RET(22+(dst>>31)*2)
28628 q = (s32)dst / (s32)src;
28629 r = (s32)dst % (s32)src;
28631 if ((q > 0x7FFF) || (q < -0x8000))
28633 flag_V = M68K_SR_V;
28634 #ifdef USE_CYCLONE_TIMING_DIV
28635 if (q > 0xFFFF || q < -0x10000) {
28636 RET(22+(dst>>31)*2)
28637 } else RET(158+(dst>>31)*4-(q>>31)*2-BITCOUNT(res,abs(q))*2)
28645 flag_V = flag_C = 0;
28646 res = q | (r << 16);
28647 DREGu32((Opcode >> 9) & 7) = res;
28648 #ifdef USE_CYCLONE_TIMING_DIV
28649 RET(158+(dst>>31)*4-(q>>31)*2-BITCOUNT(res,abs(q))*2)
28662 src = DREGu8((Opcode >> 0) & 7);
28663 dst = DREGu8((Opcode >> 9) & 7);
28665 flag_N = flag_X = flag_C = res;
28666 flag_V = (src ^ dst) & (res ^ dst);
28667 flag_NotZ = res & 0xFF;
28668 DREGu8((Opcode >> 9) & 7) = res;
28679 // can't read byte from Ax registers !
28680 ctx->execinfo |= M68K_FAULTED;
28681 ctx->io_cycle_counter = 0;
28683 goto famec_Exec_End;
28684 dst = DREGu8((Opcode >> 9) & 7);
28686 flag_N = flag_X = flag_C = res;
28687 flag_V = (src ^ dst) & (res ^ dst);
28688 flag_NotZ = res & 0xFF;
28689 DREGu8((Opcode >> 9) & 7) = res;
28701 adr = AREG((Opcode >> 0) & 7);
28703 READ_BYTE_F(adr, src)
28704 dst = DREGu8((Opcode >> 9) & 7);
28706 flag_N = flag_X = flag_C = res;
28707 flag_V = (src ^ dst) & (res ^ dst);
28708 flag_NotZ = res & 0xFF;
28709 DREGu8((Opcode >> 9) & 7) = res;
28720 adr = AREG((Opcode >> 0) & 7);
28721 AREG((Opcode >> 0) & 7) += 1;
28723 READ_BYTE_F(adr, src)
28724 dst = DREGu8((Opcode >> 9) & 7);
28726 flag_N = flag_X = flag_C = res;
28727 flag_V = (src ^ dst) & (res ^ dst);
28728 flag_NotZ = res & 0xFF;
28729 DREGu8((Opcode >> 9) & 7) = res;
28740 adr = AREG((Opcode >> 0) & 7) - 1;
28741 AREG((Opcode >> 0) & 7) = adr;
28743 READ_BYTE_F(adr, src)
28744 dst = DREGu8((Opcode >> 9) & 7);
28746 flag_N = flag_X = flag_C = res;
28747 flag_V = (src ^ dst) & (res ^ dst);
28748 flag_NotZ = res & 0xFF;
28749 DREGu8((Opcode >> 9) & 7) = res;
28761 adr += AREG((Opcode >> 0) & 7);
28763 READ_BYTE_F(adr, src)
28764 dst = DREGu8((Opcode >> 9) & 7);
28766 flag_N = flag_X = flag_C = res;
28767 flag_V = (src ^ dst) & (res ^ dst);
28768 flag_NotZ = res & 0xFF;
28769 DREGu8((Opcode >> 9) & 7) = res;
28780 adr = AREG((Opcode >> 0) & 7);
28783 READ_BYTE_F(adr, src)
28784 dst = DREGu8((Opcode >> 9) & 7);
28786 flag_N = flag_X = flag_C = res;
28787 flag_V = (src ^ dst) & (res ^ dst);
28788 flag_NotZ = res & 0xFF;
28789 DREGu8((Opcode >> 9) & 7) = res;
28802 READ_BYTE_F(adr, src)
28803 dst = DREGu8((Opcode >> 9) & 7);
28805 flag_N = flag_X = flag_C = res;
28806 flag_V = (src ^ dst) & (res ^ dst);
28807 flag_NotZ = res & 0xFF;
28808 DREGu8((Opcode >> 9) & 7) = res;
28821 READ_BYTE_F(adr, src)
28822 dst = DREGu8((Opcode >> 9) & 7);
28824 flag_N = flag_X = flag_C = res;
28825 flag_V = (src ^ dst) & (res ^ dst);
28826 flag_NotZ = res & 0xFF;
28827 DREGu8((Opcode >> 9) & 7) = res;
28838 adr = GET_SWORD + GET_PC;
28841 READ_BYTE_F(adr, src)
28842 dst = DREGu8((Opcode >> 9) & 7);
28844 flag_N = flag_X = flag_C = res;
28845 flag_V = (src ^ dst) & (res ^ dst);
28846 flag_NotZ = res & 0xFF;
28847 DREGu8((Opcode >> 9) & 7) = res;
28861 READ_BYTE_F(adr, src)
28862 dst = DREGu8((Opcode >> 9) & 7);
28864 flag_N = flag_X = flag_C = res;
28865 flag_V = (src ^ dst) & (res ^ dst);
28866 flag_NotZ = res & 0xFF;
28867 DREGu8((Opcode >> 9) & 7) = res;
28879 dst = DREGu8((Opcode >> 9) & 7);
28881 flag_N = flag_X = flag_C = res;
28882 flag_V = (src ^ dst) & (res ^ dst);
28883 flag_NotZ = res & 0xFF;
28884 DREGu8((Opcode >> 9) & 7) = res;
28897 READ_BYTE_F(adr, src)
28898 dst = DREGu8((Opcode >> 9) & 7);
28900 flag_N = flag_X = flag_C = res;
28901 flag_V = (src ^ dst) & (res ^ dst);
28902 flag_NotZ = res & 0xFF;
28903 DREGu8((Opcode >> 9) & 7) = res;
28917 READ_BYTE_F(adr, src)
28918 dst = DREGu8((Opcode >> 9) & 7);
28920 flag_N = flag_X = flag_C = res;
28921 flag_V = (src ^ dst) & (res ^ dst);
28922 flag_NotZ = res & 0xFF;
28923 DREGu8((Opcode >> 9) & 7) = res;
28934 src = DREGu16((Opcode >> 0) & 7);
28935 dst = DREGu16((Opcode >> 9) & 7);
28937 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
28938 flag_N = flag_X = flag_C = res >> 8;
28939 flag_NotZ = res & 0xFFFF;
28940 DREGu16((Opcode >> 9) & 7) = res;
28950 src = AREGu16((Opcode >> 0) & 7);
28951 dst = DREGu16((Opcode >> 9) & 7);
28953 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
28954 flag_N = flag_X = flag_C = res >> 8;
28955 flag_NotZ = res & 0xFFFF;
28956 DREGu16((Opcode >> 9) & 7) = res;
28966 adr = AREG((Opcode >> 0) & 7);
28968 READ_WORD_F(adr, src)
28969 dst = DREGu16((Opcode >> 9) & 7);
28971 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
28972 flag_N = flag_X = flag_C = res >> 8;
28973 flag_NotZ = res & 0xFFFF;
28974 DREGu16((Opcode >> 9) & 7) = res;
28985 adr = AREG((Opcode >> 0) & 7);
28986 AREG((Opcode >> 0) & 7) += 2;
28988 READ_WORD_F(adr, src)
28989 dst = DREGu16((Opcode >> 9) & 7);
28991 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
28992 flag_N = flag_X = flag_C = res >> 8;
28993 flag_NotZ = res & 0xFFFF;
28994 DREGu16((Opcode >> 9) & 7) = res;
29005 adr = AREG((Opcode >> 0) & 7) - 2;
29006 AREG((Opcode >> 0) & 7) = adr;
29008 READ_WORD_F(adr, src)
29009 dst = DREGu16((Opcode >> 9) & 7);
29011 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
29012 flag_N = flag_X = flag_C = res >> 8;
29013 flag_NotZ = res & 0xFFFF;
29014 DREGu16((Opcode >> 9) & 7) = res;
29026 adr += AREG((Opcode >> 0) & 7);
29028 READ_WORD_F(adr, src)
29029 dst = DREGu16((Opcode >> 9) & 7);
29031 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
29032 flag_N = flag_X = flag_C = res >> 8;
29033 flag_NotZ = res & 0xFFFF;
29034 DREGu16((Opcode >> 9) & 7) = res;
29045 adr = AREG((Opcode >> 0) & 7);
29048 READ_WORD_F(adr, src)
29049 dst = DREGu16((Opcode >> 9) & 7);
29051 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
29052 flag_N = flag_X = flag_C = res >> 8;
29053 flag_NotZ = res & 0xFFFF;
29054 DREGu16((Opcode >> 9) & 7) = res;
29067 READ_WORD_F(adr, src)
29068 dst = DREGu16((Opcode >> 9) & 7);
29070 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
29071 flag_N = flag_X = flag_C = res >> 8;
29072 flag_NotZ = res & 0xFFFF;
29073 DREGu16((Opcode >> 9) & 7) = res;
29086 READ_WORD_F(adr, src)
29087 dst = DREGu16((Opcode >> 9) & 7);
29089 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
29090 flag_N = flag_X = flag_C = res >> 8;
29091 flag_NotZ = res & 0xFFFF;
29092 DREGu16((Opcode >> 9) & 7) = res;
29103 adr = GET_SWORD + GET_PC;
29106 READ_WORD_F(adr, src)
29107 dst = DREGu16((Opcode >> 9) & 7);
29109 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
29110 flag_N = flag_X = flag_C = res >> 8;
29111 flag_NotZ = res & 0xFFFF;
29112 DREGu16((Opcode >> 9) & 7) = res;
29126 READ_WORD_F(adr, src)
29127 dst = DREGu16((Opcode >> 9) & 7);
29129 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
29130 flag_N = flag_X = flag_C = res >> 8;
29131 flag_NotZ = res & 0xFFFF;
29132 DREGu16((Opcode >> 9) & 7) = res;
29144 dst = DREGu16((Opcode >> 9) & 7);
29146 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
29147 flag_N = flag_X = flag_C = res >> 8;
29148 flag_NotZ = res & 0xFFFF;
29149 DREGu16((Opcode >> 9) & 7) = res;
29162 READ_WORD_F(adr, src)
29163 dst = DREGu16((Opcode >> 9) & 7);
29165 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
29166 flag_N = flag_X = flag_C = res >> 8;
29167 flag_NotZ = res & 0xFFFF;
29168 DREGu16((Opcode >> 9) & 7) = res;
29182 READ_WORD_F(adr, src)
29183 dst = DREGu16((Opcode >> 9) & 7);
29185 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
29186 flag_N = flag_X = flag_C = res >> 8;
29187 flag_NotZ = res & 0xFFFF;
29188 DREGu16((Opcode >> 9) & 7) = res;
29199 src = DREGu32((Opcode >> 0) & 7);
29200 dst = DREGu32((Opcode >> 9) & 7);
29203 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
29204 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
29205 flag_N = res >> 24;
29206 DREGu32((Opcode >> 9) & 7) = res;
29216 src = AREGu32((Opcode >> 0) & 7);
29217 dst = DREGu32((Opcode >> 9) & 7);
29220 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
29221 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
29222 flag_N = res >> 24;
29223 DREGu32((Opcode >> 9) & 7) = res;
29233 adr = AREG((Opcode >> 0) & 7);
29235 READ_LONG_F(adr, src)
29236 dst = DREGu32((Opcode >> 9) & 7);
29239 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
29240 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
29241 flag_N = res >> 24;
29242 DREGu32((Opcode >> 9) & 7) = res;
29253 adr = AREG((Opcode >> 0) & 7);
29254 AREG((Opcode >> 0) & 7) += 4;
29256 READ_LONG_F(adr, src)
29257 dst = DREGu32((Opcode >> 9) & 7);
29260 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
29261 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
29262 flag_N = res >> 24;
29263 DREGu32((Opcode >> 9) & 7) = res;
29274 adr = AREG((Opcode >> 0) & 7) - 4;
29275 AREG((Opcode >> 0) & 7) = adr;
29277 READ_LONG_F(adr, src)
29278 dst = DREGu32((Opcode >> 9) & 7);
29281 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
29282 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
29283 flag_N = res >> 24;
29284 DREGu32((Opcode >> 9) & 7) = res;
29296 adr += AREG((Opcode >> 0) & 7);
29298 READ_LONG_F(adr, src)
29299 dst = DREGu32((Opcode >> 9) & 7);
29302 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
29303 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
29304 flag_N = res >> 24;
29305 DREGu32((Opcode >> 9) & 7) = res;
29316 adr = AREG((Opcode >> 0) & 7);
29319 READ_LONG_F(adr, src)
29320 dst = DREGu32((Opcode >> 9) & 7);
29323 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
29324 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
29325 flag_N = res >> 24;
29326 DREGu32((Opcode >> 9) & 7) = res;
29339 READ_LONG_F(adr, src)
29340 dst = DREGu32((Opcode >> 9) & 7);
29343 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
29344 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
29345 flag_N = res >> 24;
29346 DREGu32((Opcode >> 9) & 7) = res;
29359 READ_LONG_F(adr, src)
29360 dst = DREGu32((Opcode >> 9) & 7);
29363 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
29364 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
29365 flag_N = res >> 24;
29366 DREGu32((Opcode >> 9) & 7) = res;
29377 adr = GET_SWORD + GET_PC;
29380 READ_LONG_F(adr, src)
29381 dst = DREGu32((Opcode >> 9) & 7);
29384 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
29385 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
29386 flag_N = res >> 24;
29387 DREGu32((Opcode >> 9) & 7) = res;
29401 READ_LONG_F(adr, src)
29402 dst = DREGu32((Opcode >> 9) & 7);
29405 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
29406 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
29407 flag_N = res >> 24;
29408 DREGu32((Opcode >> 9) & 7) = res;
29420 dst = DREGu32((Opcode >> 9) & 7);
29423 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
29424 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
29425 flag_N = res >> 24;
29426 DREGu32((Opcode >> 9) & 7) = res;
29439 READ_LONG_F(adr, src)
29440 dst = DREGu32((Opcode >> 9) & 7);
29443 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
29444 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
29445 flag_N = res >> 24;
29446 DREGu32((Opcode >> 9) & 7) = res;
29460 READ_LONG_F(adr, src)
29461 dst = DREGu32((Opcode >> 9) & 7);
29464 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
29465 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
29466 flag_N = res >> 24;
29467 DREGu32((Opcode >> 9) & 7) = res;
29478 src = DREGu8((Opcode >> 9) & 7);
29479 adr = AREG((Opcode >> 0) & 7);
29481 READ_BYTE_F(adr, dst)
29483 flag_N = flag_X = flag_C = res;
29484 flag_V = (src ^ dst) & (res ^ dst);
29485 flag_NotZ = res & 0xFF;
29486 WRITE_BYTE_F(adr, res)
29497 src = DREGu8((Opcode >> 9) & 7);
29498 adr = AREG((Opcode >> 0) & 7);
29499 AREG((Opcode >> 0) & 7) += 1;
29501 READ_BYTE_F(adr, dst)
29503 flag_N = flag_X = flag_C = res;
29504 flag_V = (src ^ dst) & (res ^ dst);
29505 flag_NotZ = res & 0xFF;
29506 WRITE_BYTE_F(adr, res)
29517 src = DREGu8((Opcode >> 9) & 7);
29518 adr = AREG((Opcode >> 0) & 7) - 1;
29519 AREG((Opcode >> 0) & 7) = adr;
29521 READ_BYTE_F(adr, dst)
29523 flag_N = flag_X = flag_C = res;
29524 flag_V = (src ^ dst) & (res ^ dst);
29525 flag_NotZ = res & 0xFF;
29526 WRITE_BYTE_F(adr, res)
29537 src = DREGu8((Opcode >> 9) & 7);
29539 adr += AREG((Opcode >> 0) & 7);
29541 READ_BYTE_F(adr, dst)
29543 flag_N = flag_X = flag_C = res;
29544 flag_V = (src ^ dst) & (res ^ dst);
29545 flag_NotZ = res & 0xFF;
29546 WRITE_BYTE_F(adr, res)
29557 src = DREGu8((Opcode >> 9) & 7);
29558 adr = AREG((Opcode >> 0) & 7);
29561 READ_BYTE_F(adr, dst)
29563 flag_N = flag_X = flag_C = res;
29564 flag_V = (src ^ dst) & (res ^ dst);
29565 flag_NotZ = res & 0xFF;
29566 WRITE_BYTE_F(adr, res)
29577 src = DREGu8((Opcode >> 9) & 7);
29580 READ_BYTE_F(adr, dst)
29582 flag_N = flag_X = flag_C = res;
29583 flag_V = (src ^ dst) & (res ^ dst);
29584 flag_NotZ = res & 0xFF;
29585 WRITE_BYTE_F(adr, res)
29596 src = DREGu8((Opcode >> 9) & 7);
29599 READ_BYTE_F(adr, dst)
29601 flag_N = flag_X = flag_C = res;
29602 flag_V = (src ^ dst) & (res ^ dst);
29603 flag_NotZ = res & 0xFF;
29604 WRITE_BYTE_F(adr, res)
29615 src = DREGu8((Opcode >> 9) & 7);
29619 READ_BYTE_F(adr, dst)
29621 flag_N = flag_X = flag_C = res;
29622 flag_V = (src ^ dst) & (res ^ dst);
29623 flag_NotZ = res & 0xFF;
29624 WRITE_BYTE_F(adr, res)
29635 src = DREGu8((Opcode >> 9) & 7);
29639 READ_BYTE_F(adr, dst)
29641 flag_N = flag_X = flag_C = res;
29642 flag_V = (src ^ dst) & (res ^ dst);
29643 flag_NotZ = res & 0xFF;
29644 WRITE_BYTE_F(adr, res)
29655 src = DREGu16((Opcode >> 9) & 7);
29656 adr = AREG((Opcode >> 0) & 7);
29658 READ_WORD_F(adr, dst)
29660 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
29661 flag_N = flag_X = flag_C = res >> 8;
29662 flag_NotZ = res & 0xFFFF;
29663 WRITE_WORD_F(adr, res)
29674 src = DREGu16((Opcode >> 9) & 7);
29675 adr = AREG((Opcode >> 0) & 7);
29676 AREG((Opcode >> 0) & 7) += 2;
29678 READ_WORD_F(adr, dst)
29680 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
29681 flag_N = flag_X = flag_C = res >> 8;
29682 flag_NotZ = res & 0xFFFF;
29683 WRITE_WORD_F(adr, res)
29694 src = DREGu16((Opcode >> 9) & 7);
29695 adr = AREG((Opcode >> 0) & 7) - 2;
29696 AREG((Opcode >> 0) & 7) = adr;
29698 READ_WORD_F(adr, dst)
29700 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
29701 flag_N = flag_X = flag_C = res >> 8;
29702 flag_NotZ = res & 0xFFFF;
29703 WRITE_WORD_F(adr, res)
29714 src = DREGu16((Opcode >> 9) & 7);
29716 adr += AREG((Opcode >> 0) & 7);
29718 READ_WORD_F(adr, dst)
29720 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
29721 flag_N = flag_X = flag_C = res >> 8;
29722 flag_NotZ = res & 0xFFFF;
29723 WRITE_WORD_F(adr, res)
29734 src = DREGu16((Opcode >> 9) & 7);
29735 adr = AREG((Opcode >> 0) & 7);
29738 READ_WORD_F(adr, dst)
29740 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
29741 flag_N = flag_X = flag_C = res >> 8;
29742 flag_NotZ = res & 0xFFFF;
29743 WRITE_WORD_F(adr, res)
29754 src = DREGu16((Opcode >> 9) & 7);
29757 READ_WORD_F(adr, dst)
29759 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
29760 flag_N = flag_X = flag_C = res >> 8;
29761 flag_NotZ = res & 0xFFFF;
29762 WRITE_WORD_F(adr, res)
29773 src = DREGu16((Opcode >> 9) & 7);
29776 READ_WORD_F(adr, dst)
29778 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
29779 flag_N = flag_X = flag_C = res >> 8;
29780 flag_NotZ = res & 0xFFFF;
29781 WRITE_WORD_F(adr, res)
29792 src = DREGu16((Opcode >> 9) & 7);
29796 READ_WORD_F(adr, dst)
29798 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
29799 flag_N = flag_X = flag_C = res >> 8;
29800 flag_NotZ = res & 0xFFFF;
29801 WRITE_WORD_F(adr, res)
29812 src = DREGu16((Opcode >> 9) & 7);
29816 READ_WORD_F(adr, dst)
29818 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
29819 flag_N = flag_X = flag_C = res >> 8;
29820 flag_NotZ = res & 0xFFFF;
29821 WRITE_WORD_F(adr, res)
29832 src = DREGu32((Opcode >> 9) & 7);
29833 adr = AREG((Opcode >> 0) & 7);
29835 READ_LONG_F(adr, dst)
29838 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
29839 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
29840 flag_N = res >> 24;
29841 WRITE_LONG_F(adr, res)
29852 src = DREGu32((Opcode >> 9) & 7);
29853 adr = AREG((Opcode >> 0) & 7);
29854 AREG((Opcode >> 0) & 7) += 4;
29856 READ_LONG_F(adr, dst)
29859 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
29860 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
29861 flag_N = res >> 24;
29862 WRITE_LONG_F(adr, res)
29873 src = DREGu32((Opcode >> 9) & 7);
29874 adr = AREG((Opcode >> 0) & 7) - 4;
29875 AREG((Opcode >> 0) & 7) = adr;
29877 READ_LONG_F(adr, dst)
29880 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
29881 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
29882 flag_N = res >> 24;
29883 WRITE_LONG_F(adr, res)
29894 src = DREGu32((Opcode >> 9) & 7);
29896 adr += AREG((Opcode >> 0) & 7);
29898 READ_LONG_F(adr, dst)
29901 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
29902 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
29903 flag_N = res >> 24;
29904 WRITE_LONG_F(adr, res)
29915 src = DREGu32((Opcode >> 9) & 7);
29916 adr = AREG((Opcode >> 0) & 7);
29919 READ_LONG_F(adr, dst)
29922 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
29923 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
29924 flag_N = res >> 24;
29925 WRITE_LONG_F(adr, res)
29936 src = DREGu32((Opcode >> 9) & 7);
29939 READ_LONG_F(adr, dst)
29942 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
29943 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
29944 flag_N = res >> 24;
29945 WRITE_LONG_F(adr, res)
29956 src = DREGu32((Opcode >> 9) & 7);
29959 READ_LONG_F(adr, dst)
29962 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
29963 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
29964 flag_N = res >> 24;
29965 WRITE_LONG_F(adr, res)
29976 src = DREGu32((Opcode >> 9) & 7);
29980 READ_LONG_F(adr, dst)
29983 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
29984 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
29985 flag_N = res >> 24;
29986 WRITE_LONG_F(adr, res)
29997 src = DREGu32((Opcode >> 9) & 7);
30001 READ_LONG_F(adr, dst)
30004 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
30005 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
30006 flag_N = res >> 24;
30007 WRITE_LONG_F(adr, res)
30018 src = DREGu8((Opcode >> 0) & 7);
30019 dst = DREGu8((Opcode >> 9) & 7);
30020 res = dst - src - ((flag_X >> 8) & 1);
30021 flag_N = flag_X = flag_C = res;
30022 flag_V = (src ^ dst) & (res ^ dst);
30023 flag_NotZ |= res & 0xFF;
30024 DREGu8((Opcode >> 9) & 7) = res;
30034 src = DREGu16((Opcode >> 0) & 7);
30035 dst = DREGu16((Opcode >> 9) & 7);
30036 res = dst - src - ((flag_X >> 8) & 1);
30037 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
30038 flag_N = flag_X = flag_C = res >> 8;
30039 flag_NotZ |= res & 0xFFFF;
30040 DREGu16((Opcode >> 9) & 7) = res;
30050 src = DREGu32((Opcode >> 0) & 7);
30051 dst = DREGu32((Opcode >> 9) & 7);
30052 res = dst - src - ((flag_X >> 8) & 1);
30054 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
30055 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
30056 flag_N = res >> 24;
30057 DREGu32((Opcode >> 9) & 7) = res;
30067 adr = AREG((Opcode >> 0) & 7) - 1;
30068 AREG((Opcode >> 0) & 7) = adr;
30070 READ_BYTE_F(adr, src)
30071 adr = AREG((Opcode >> 9) & 7) - 1;
30072 AREG((Opcode >> 9) & 7) = adr;
30073 READ_BYTE_F(adr, dst)
30074 res = dst - src - ((flag_X >> 8) & 1);
30075 flag_N = flag_X = flag_C = res;
30076 flag_V = (src ^ dst) & (res ^ dst);
30077 flag_NotZ |= res & 0xFF;
30078 WRITE_BYTE_F(adr, res)
30089 adr = AREG((Opcode >> 0) & 7) - 2;
30090 AREG((Opcode >> 0) & 7) = adr;
30092 READ_WORD_F(adr, src)
30093 adr = AREG((Opcode >> 9) & 7) - 2;
30094 AREG((Opcode >> 9) & 7) = adr;
30095 READ_WORD_F(adr, dst)
30096 res = dst - src - ((flag_X >> 8) & 1);
30097 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
30098 flag_N = flag_X = flag_C = res >> 8;
30099 flag_NotZ |= res & 0xFFFF;
30100 WRITE_WORD_F(adr, res)
30111 adr = AREG((Opcode >> 0) & 7) - 4;
30112 AREG((Opcode >> 0) & 7) = adr;
30114 READ_LONG_F(adr, src)
30115 adr = AREG((Opcode >> 9) & 7) - 4;
30116 AREG((Opcode >> 9) & 7) = adr;
30117 READ_LONG_F(adr, dst)
30118 res = dst - src - ((flag_X >> 8) & 1);
30120 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
30121 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
30122 flag_N = res >> 24;
30123 WRITE_LONG_F(adr, res)
30137 READ_BYTE_F(adr, src)
30138 adr = AREG((Opcode >> 9) & 7) - 1;
30139 AREG((Opcode >> 9) & 7) = adr;
30140 READ_BYTE_F(adr, dst)
30141 res = dst - src - ((flag_X >> 8) & 1);
30142 flag_N = flag_X = flag_C = res;
30143 flag_V = (src ^ dst) & (res ^ dst);
30144 flag_NotZ |= res & 0xFF;
30145 WRITE_BYTE_F(adr, res)
30159 READ_WORD_F(adr, src)
30160 adr = AREG((Opcode >> 9) & 7) - 2;
30161 AREG((Opcode >> 9) & 7) = adr;
30162 READ_WORD_F(adr, dst)
30163 res = dst - src - ((flag_X >> 8) & 1);
30164 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
30165 flag_N = flag_X = flag_C = res >> 8;
30166 flag_NotZ |= res & 0xFFFF;
30167 WRITE_WORD_F(adr, res)
30181 READ_LONG_F(adr, src)
30182 adr = AREG((Opcode >> 9) & 7) - 4;
30183 AREG((Opcode >> 9) & 7) = adr;
30184 READ_LONG_F(adr, dst)
30185 res = dst - src - ((flag_X >> 8) & 1);
30187 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
30188 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
30189 flag_N = res >> 24;
30190 WRITE_LONG_F(adr, res)
30201 adr = AREG((Opcode >> 0) & 7) - 1;
30202 AREG((Opcode >> 0) & 7) = adr;
30204 READ_BYTE_F(adr, src)
30207 READ_BYTE_F(adr, dst)
30208 res = dst - src - ((flag_X >> 8) & 1);
30209 flag_N = flag_X = flag_C = res;
30210 flag_V = (src ^ dst) & (res ^ dst);
30211 flag_NotZ |= res & 0xFF;
30212 WRITE_BYTE_F(adr, res)
30223 adr = AREG((Opcode >> 0) & 7) - 2;
30224 AREG((Opcode >> 0) & 7) = adr;
30226 READ_WORD_F(adr, src)
30229 READ_WORD_F(adr, dst)
30230 res = dst - src - ((flag_X >> 8) & 1);
30231 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
30232 flag_N = flag_X = flag_C = res >> 8;
30233 flag_NotZ |= res & 0xFFFF;
30234 WRITE_WORD_F(adr, res)
30245 adr = AREG((Opcode >> 0) & 7) - 4;
30246 AREG((Opcode >> 0) & 7) = adr;
30248 READ_LONG_F(adr, src)
30251 READ_LONG_F(adr, dst)
30252 res = dst - src - ((flag_X >> 8) & 1);
30254 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
30255 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
30256 flag_N = res >> 24;
30257 WRITE_LONG_F(adr, res)
30271 READ_BYTE_F(adr, src)
30274 READ_BYTE_F(adr, dst)
30275 res = dst - src - ((flag_X >> 8) & 1);
30276 flag_N = flag_X = flag_C = res;
30277 flag_V = (src ^ dst) & (res ^ dst);
30278 flag_NotZ |= res & 0xFF;
30279 WRITE_BYTE_F(adr, res)
30293 READ_WORD_F(adr, src)
30296 READ_WORD_F(adr, dst)
30297 res = dst - src - ((flag_X >> 8) & 1);
30298 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
30299 flag_N = flag_X = flag_C = res >> 8;
30300 flag_NotZ |= res & 0xFFFF;
30301 WRITE_WORD_F(adr, res)
30315 READ_LONG_F(adr, src)
30318 READ_LONG_F(adr, dst)
30319 res = dst - src - ((flag_X >> 8) & 1);
30321 flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
30322 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
30323 flag_N = res >> 24;
30324 WRITE_LONG_F(adr, res)
30335 src = (s32)DREGs16((Opcode >> 0) & 7);
30336 dst = AREGu32((Opcode >> 9) & 7);
30338 AREG((Opcode >> 9) & 7) = res;
30348 src = (s32)AREGs16((Opcode >> 0) & 7);
30349 dst = AREGu32((Opcode >> 9) & 7);
30351 AREG((Opcode >> 9) & 7) = res;
30361 adr = AREG((Opcode >> 0) & 7);
30363 READSX_WORD_F(adr, src)
30364 dst = AREGu32((Opcode >> 9) & 7);
30366 AREG((Opcode >> 9) & 7) = res;
30368 #ifdef USE_CYCLONE_TIMING
30381 adr = AREG((Opcode >> 0) & 7);
30382 AREG((Opcode >> 0) & 7) += 2;
30384 READSX_WORD_F(adr, src)
30385 dst = AREGu32((Opcode >> 9) & 7);
30387 AREG((Opcode >> 9) & 7) = res;
30389 #ifdef USE_CYCLONE_TIMING
30402 adr = AREG((Opcode >> 0) & 7) - 2;
30403 AREG((Opcode >> 0) & 7) = adr;
30405 READSX_WORD_F(adr, src)
30406 dst = AREGu32((Opcode >> 9) & 7);
30408 AREG((Opcode >> 9) & 7) = res;
30410 #ifdef USE_CYCLONE_TIMING
30424 adr += AREG((Opcode >> 0) & 7);
30426 READSX_WORD_F(adr, src)
30427 dst = AREGu32((Opcode >> 9) & 7);
30429 AREG((Opcode >> 9) & 7) = res;
30431 #ifdef USE_CYCLONE_TIMING
30444 adr = AREG((Opcode >> 0) & 7);
30447 READSX_WORD_F(adr, src)
30448 dst = AREGu32((Opcode >> 9) & 7);
30450 AREG((Opcode >> 9) & 7) = res;
30452 #ifdef USE_CYCLONE_TIMING
30467 READSX_WORD_F(adr, src)
30468 dst = AREGu32((Opcode >> 9) & 7);
30470 AREG((Opcode >> 9) & 7) = res;
30472 #ifdef USE_CYCLONE_TIMING
30487 READSX_WORD_F(adr, src)
30488 dst = AREGu32((Opcode >> 9) & 7);
30490 AREG((Opcode >> 9) & 7) = res;
30492 #ifdef USE_CYCLONE_TIMING
30505 adr = GET_SWORD + GET_PC;
30508 READSX_WORD_F(adr, src)
30509 dst = AREGu32((Opcode >> 9) & 7);
30511 AREG((Opcode >> 9) & 7) = res;
30513 #ifdef USE_CYCLONE_TIMING
30529 READSX_WORD_F(adr, src)
30530 dst = AREGu32((Opcode >> 9) & 7);
30532 AREG((Opcode >> 9) & 7) = res;
30534 #ifdef USE_CYCLONE_TIMING
30548 dst = AREGu32((Opcode >> 9) & 7);
30550 AREG((Opcode >> 9) & 7) = res;
30563 READSX_WORD_F(adr, src)
30564 dst = AREGu32((Opcode >> 9) & 7);
30566 AREG((Opcode >> 9) & 7) = res;
30568 #ifdef USE_CYCLONE_TIMING
30584 READSX_WORD_F(adr, src)
30585 dst = AREGu32((Opcode >> 9) & 7);
30587 AREG((Opcode >> 9) & 7) = res;
30589 #ifdef USE_CYCLONE_TIMING
30602 src = (s32)DREGs32((Opcode >> 0) & 7);
30603 dst = AREGu32((Opcode >> 9) & 7);
30605 AREG((Opcode >> 9) & 7) = res;
30606 #ifdef USE_CYCLONE_TIMING
30619 src = (s32)AREGs32((Opcode >> 0) & 7);
30620 dst = AREGu32((Opcode >> 9) & 7);
30622 AREG((Opcode >> 9) & 7) = res;
30623 #ifdef USE_CYCLONE_TIMING
30636 adr = AREG((Opcode >> 0) & 7);
30638 READSX_LONG_F(adr, src)
30639 dst = AREGu32((Opcode >> 9) & 7);
30641 AREG((Opcode >> 9) & 7) = res;
30652 adr = AREG((Opcode >> 0) & 7);
30653 AREG((Opcode >> 0) & 7) += 4;
30655 READSX_LONG_F(adr, src)
30656 dst = AREGu32((Opcode >> 9) & 7);
30658 AREG((Opcode >> 9) & 7) = res;
30669 adr = AREG((Opcode >> 0) & 7) - 4;
30670 AREG((Opcode >> 0) & 7) = adr;
30672 READSX_LONG_F(adr, src)
30673 dst = AREGu32((Opcode >> 9) & 7);
30675 AREG((Opcode >> 9) & 7) = res;
30687 adr += AREG((Opcode >> 0) & 7);
30689 READSX_LONG_F(adr, src)
30690 dst = AREGu32((Opcode >> 9) & 7);
30692 AREG((Opcode >> 9) & 7) = res;
30703 adr = AREG((Opcode >> 0) & 7);
30706 READSX_LONG_F(adr, src)
30707 dst = AREGu32((Opcode >> 9) & 7);
30709 AREG((Opcode >> 9) & 7) = res;
30722 READSX_LONG_F(adr, src)
30723 dst = AREGu32((Opcode >> 9) & 7);
30725 AREG((Opcode >> 9) & 7) = res;
30738 READSX_LONG_F(adr, src)
30739 dst = AREGu32((Opcode >> 9) & 7);
30741 AREG((Opcode >> 9) & 7) = res;
30752 adr = GET_SWORD + GET_PC;
30755 READSX_LONG_F(adr, src)
30756 dst = AREGu32((Opcode >> 9) & 7);
30758 AREG((Opcode >> 9) & 7) = res;
30772 READSX_LONG_F(adr, src)
30773 dst = AREGu32((Opcode >> 9) & 7);
30775 AREG((Opcode >> 9) & 7) = res;
30787 dst = AREGu32((Opcode >> 9) & 7);
30789 AREG((Opcode >> 9) & 7) = res;
30790 #ifdef USE_CYCLONE_TIMING
30806 READSX_LONG_F(adr, src)
30807 dst = AREGu32((Opcode >> 9) & 7);
30809 AREG((Opcode >> 9) & 7) = res;
30823 READSX_LONG_F(adr, src)
30824 dst = AREGu32((Opcode >> 9) & 7);
30826 AREG((Opcode >> 9) & 7) = res;
30837 src = DREGu8((Opcode >> 0) & 7);
30838 dst = DREGu8((Opcode >> 9) & 7);
30840 flag_N = flag_C = res;
30841 flag_V = (src ^ dst) & (res ^ dst);
30842 flag_NotZ = res & 0xFF;
30853 // can't read byte from Ax registers !
30854 ctx->execinfo |= M68K_FAULTED;
30855 ctx->io_cycle_counter = 0;
30857 goto famec_Exec_End;
30858 dst = DREGu8((Opcode >> 9) & 7);
30860 flag_N = flag_C = res;
30861 flag_V = (src ^ dst) & (res ^ dst);
30862 flag_NotZ = res & 0xFF;
30874 adr = AREG((Opcode >> 0) & 7);
30876 READ_BYTE_F(adr, src)
30877 dst = DREGu8((Opcode >> 9) & 7);
30879 flag_N = flag_C = res;
30880 flag_V = (src ^ dst) & (res ^ dst);
30881 flag_NotZ = res & 0xFF;
30892 adr = AREG((Opcode >> 0) & 7);
30893 AREG((Opcode >> 0) & 7) += 1;
30895 READ_BYTE_F(adr, src)
30896 dst = DREGu8((Opcode >> 9) & 7);
30898 flag_N = flag_C = res;
30899 flag_V = (src ^ dst) & (res ^ dst);
30900 flag_NotZ = res & 0xFF;
30911 adr = AREG((Opcode >> 0) & 7) - 1;
30912 AREG((Opcode >> 0) & 7) = adr;
30914 READ_BYTE_F(adr, src)
30915 dst = DREGu8((Opcode >> 9) & 7);
30917 flag_N = flag_C = res;
30918 flag_V = (src ^ dst) & (res ^ dst);
30919 flag_NotZ = res & 0xFF;
30931 adr += AREG((Opcode >> 0) & 7);
30933 READ_BYTE_F(adr, src)
30934 dst = DREGu8((Opcode >> 9) & 7);
30936 flag_N = flag_C = res;
30937 flag_V = (src ^ dst) & (res ^ dst);
30938 flag_NotZ = res & 0xFF;
30949 adr = AREG((Opcode >> 0) & 7);
30952 READ_BYTE_F(adr, src)
30953 dst = DREGu8((Opcode >> 9) & 7);
30955 flag_N = flag_C = res;
30956 flag_V = (src ^ dst) & (res ^ dst);
30957 flag_NotZ = res & 0xFF;
30970 READ_BYTE_F(adr, src)
30971 dst = DREGu8((Opcode >> 9) & 7);
30973 flag_N = flag_C = res;
30974 flag_V = (src ^ dst) & (res ^ dst);
30975 flag_NotZ = res & 0xFF;
30988 READ_BYTE_F(adr, src)
30989 dst = DREGu8((Opcode >> 9) & 7);
30991 flag_N = flag_C = res;
30992 flag_V = (src ^ dst) & (res ^ dst);
30993 flag_NotZ = res & 0xFF;
31004 adr = GET_SWORD + GET_PC;
31007 READ_BYTE_F(adr, src)
31008 dst = DREGu8((Opcode >> 9) & 7);
31010 flag_N = flag_C = res;
31011 flag_V = (src ^ dst) & (res ^ dst);
31012 flag_NotZ = res & 0xFF;
31026 READ_BYTE_F(adr, src)
31027 dst = DREGu8((Opcode >> 9) & 7);
31029 flag_N = flag_C = res;
31030 flag_V = (src ^ dst) & (res ^ dst);
31031 flag_NotZ = res & 0xFF;
31043 dst = DREGu8((Opcode >> 9) & 7);
31045 flag_N = flag_C = res;
31046 flag_V = (src ^ dst) & (res ^ dst);
31047 flag_NotZ = res & 0xFF;
31060 READ_BYTE_F(adr, src)
31061 dst = DREGu8((Opcode >> 9) & 7);
31063 flag_N = flag_C = res;
31064 flag_V = (src ^ dst) & (res ^ dst);
31065 flag_NotZ = res & 0xFF;
31079 READ_BYTE_F(adr, src)
31080 dst = DREGu8((Opcode >> 9) & 7);
31082 flag_N = flag_C = res;
31083 flag_V = (src ^ dst) & (res ^ dst);
31084 flag_NotZ = res & 0xFF;
31095 src = DREGu16((Opcode >> 0) & 7);
31096 dst = DREGu16((Opcode >> 9) & 7);
31098 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
31099 flag_N = flag_C = res >> 8;
31100 flag_NotZ = res & 0xFFFF;
31110 src = AREGu16((Opcode >> 0) & 7);
31111 dst = DREGu16((Opcode >> 9) & 7);
31113 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
31114 flag_N = flag_C = res >> 8;
31115 flag_NotZ = res & 0xFFFF;
31125 adr = AREG((Opcode >> 0) & 7);
31127 READ_WORD_F(adr, src)
31128 dst = DREGu16((Opcode >> 9) & 7);
31130 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
31131 flag_N = flag_C = res >> 8;
31132 flag_NotZ = res & 0xFFFF;
31143 adr = AREG((Opcode >> 0) & 7);
31144 AREG((Opcode >> 0) & 7) += 2;
31146 READ_WORD_F(adr, src)
31147 dst = DREGu16((Opcode >> 9) & 7);
31149 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
31150 flag_N = flag_C = res >> 8;
31151 flag_NotZ = res & 0xFFFF;
31162 adr = AREG((Opcode >> 0) & 7) - 2;
31163 AREG((Opcode >> 0) & 7) = adr;
31165 READ_WORD_F(adr, src)
31166 dst = DREGu16((Opcode >> 9) & 7);
31168 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
31169 flag_N = flag_C = res >> 8;
31170 flag_NotZ = res & 0xFFFF;
31182 adr += AREG((Opcode >> 0) & 7);
31184 READ_WORD_F(adr, src)
31185 dst = DREGu16((Opcode >> 9) & 7);
31187 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
31188 flag_N = flag_C = res >> 8;
31189 flag_NotZ = res & 0xFFFF;
31200 adr = AREG((Opcode >> 0) & 7);
31203 READ_WORD_F(adr, src)
31204 dst = DREGu16((Opcode >> 9) & 7);
31206 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
31207 flag_N = flag_C = res >> 8;
31208 flag_NotZ = res & 0xFFFF;
31221 READ_WORD_F(adr, src)
31222 dst = DREGu16((Opcode >> 9) & 7);
31224 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
31225 flag_N = flag_C = res >> 8;
31226 flag_NotZ = res & 0xFFFF;
31239 READ_WORD_F(adr, src)
31240 dst = DREGu16((Opcode >> 9) & 7);
31242 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
31243 flag_N = flag_C = res >> 8;
31244 flag_NotZ = res & 0xFFFF;
31255 adr = GET_SWORD + GET_PC;
31258 READ_WORD_F(adr, src)
31259 dst = DREGu16((Opcode >> 9) & 7);
31261 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
31262 flag_N = flag_C = res >> 8;
31263 flag_NotZ = res & 0xFFFF;
31277 READ_WORD_F(adr, src)
31278 dst = DREGu16((Opcode >> 9) & 7);
31280 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
31281 flag_N = flag_C = res >> 8;
31282 flag_NotZ = res & 0xFFFF;
31294 dst = DREGu16((Opcode >> 9) & 7);
31296 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
31297 flag_N = flag_C = res >> 8;
31298 flag_NotZ = res & 0xFFFF;
31311 READ_WORD_F(adr, src)
31312 dst = DREGu16((Opcode >> 9) & 7);
31314 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
31315 flag_N = flag_C = res >> 8;
31316 flag_NotZ = res & 0xFFFF;
31330 READ_WORD_F(adr, src)
31331 dst = DREGu16((Opcode >> 9) & 7);
31333 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
31334 flag_N = flag_C = res >> 8;
31335 flag_NotZ = res & 0xFFFF;
31346 src = DREGu32((Opcode >> 0) & 7);
31347 dst = DREGu32((Opcode >> 9) & 7);
31350 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
31351 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
31352 flag_N = res >> 24;
31362 src = AREGu32((Opcode >> 0) & 7);
31363 dst = DREGu32((Opcode >> 9) & 7);
31366 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
31367 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
31368 flag_N = res >> 24;
31378 adr = AREG((Opcode >> 0) & 7);
31380 READ_LONG_F(adr, src)
31381 dst = DREGu32((Opcode >> 9) & 7);
31384 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
31385 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
31386 flag_N = res >> 24;
31397 adr = AREG((Opcode >> 0) & 7);
31398 AREG((Opcode >> 0) & 7) += 4;
31400 READ_LONG_F(adr, src)
31401 dst = DREGu32((Opcode >> 9) & 7);
31404 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
31405 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
31406 flag_N = res >> 24;
31417 adr = AREG((Opcode >> 0) & 7) - 4;
31418 AREG((Opcode >> 0) & 7) = adr;
31420 READ_LONG_F(adr, src)
31421 dst = DREGu32((Opcode >> 9) & 7);
31424 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
31425 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
31426 flag_N = res >> 24;
31438 adr += AREG((Opcode >> 0) & 7);
31440 READ_LONG_F(adr, src)
31441 dst = DREGu32((Opcode >> 9) & 7);
31444 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
31445 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
31446 flag_N = res >> 24;
31457 adr = AREG((Opcode >> 0) & 7);
31460 READ_LONG_F(adr, src)
31461 dst = DREGu32((Opcode >> 9) & 7);
31464 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
31465 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
31466 flag_N = res >> 24;
31479 READ_LONG_F(adr, src)
31480 dst = DREGu32((Opcode >> 9) & 7);
31483 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
31484 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
31485 flag_N = res >> 24;
31498 READ_LONG_F(adr, src)
31499 dst = DREGu32((Opcode >> 9) & 7);
31502 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
31503 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
31504 flag_N = res >> 24;
31515 adr = GET_SWORD + GET_PC;
31518 READ_LONG_F(adr, src)
31519 dst = DREGu32((Opcode >> 9) & 7);
31522 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
31523 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
31524 flag_N = res >> 24;
31538 READ_LONG_F(adr, src)
31539 dst = DREGu32((Opcode >> 9) & 7);
31542 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
31543 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
31544 flag_N = res >> 24;
31556 dst = DREGu32((Opcode >> 9) & 7);
31559 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
31560 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
31561 flag_N = res >> 24;
31574 READ_LONG_F(adr, src)
31575 dst = DREGu32((Opcode >> 9) & 7);
31578 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
31579 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
31580 flag_N = res >> 24;
31594 READ_LONG_F(adr, src)
31595 dst = DREGu32((Opcode >> 9) & 7);
31598 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
31599 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
31600 flag_N = res >> 24;
31611 adr = AREG((Opcode >> 0) & 7);
31612 AREG((Opcode >> 0) & 7) += 1;
31614 READ_BYTE_F(adr, src)
31615 adr = AREG((Opcode >> 9) & 7);
31616 AREG((Opcode >> 9) & 7) += 1;
31617 READ_BYTE_F(adr, dst)
31619 flag_N = flag_C = res;
31620 flag_V = (src ^ dst) & (res ^ dst);
31621 flag_NotZ = res & 0xFF;
31632 adr = AREG((Opcode >> 0) & 7);
31633 AREG((Opcode >> 0) & 7) += 2;
31635 READ_WORD_F(adr, src)
31636 adr = AREG((Opcode >> 9) & 7);
31637 AREG((Opcode >> 9) & 7) += 2;
31638 READ_WORD_F(adr, dst)
31640 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
31641 flag_N = flag_C = res >> 8;
31642 flag_NotZ = res & 0xFFFF;
31653 adr = AREG((Opcode >> 0) & 7);
31654 AREG((Opcode >> 0) & 7) += 4;
31656 READ_LONG_F(adr, src)
31657 adr = AREG((Opcode >> 9) & 7);
31658 AREG((Opcode >> 9) & 7) += 4;
31659 READ_LONG_F(adr, dst)
31662 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
31663 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
31664 flag_N = res >> 24;
31678 READ_BYTE_F(adr, src)
31679 adr = AREG((Opcode >> 9) & 7);
31680 AREG((Opcode >> 9) & 7) += 1;
31681 READ_BYTE_F(adr, dst)
31683 flag_N = flag_C = res;
31684 flag_V = (src ^ dst) & (res ^ dst);
31685 flag_NotZ = res & 0xFF;
31699 READ_WORD_F(adr, src)
31700 adr = AREG((Opcode >> 9) & 7);
31701 AREG((Opcode >> 9) & 7) += 2;
31702 READ_WORD_F(adr, dst)
31704 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
31705 flag_N = flag_C = res >> 8;
31706 flag_NotZ = res & 0xFFFF;
31720 READ_LONG_F(adr, src)
31721 adr = AREG((Opcode >> 9) & 7);
31722 AREG((Opcode >> 9) & 7) += 4;
31723 READ_LONG_F(adr, dst)
31726 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
31727 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
31728 flag_N = res >> 24;
31739 adr = AREG((Opcode >> 0) & 7);
31740 AREG((Opcode >> 0) & 7) += 1;
31742 READ_BYTE_F(adr, src)
31745 READ_BYTE_F(adr, dst)
31747 flag_N = flag_C = res;
31748 flag_V = (src ^ dst) & (res ^ dst);
31749 flag_NotZ = res & 0xFF;
31760 adr = AREG((Opcode >> 0) & 7);
31761 AREG((Opcode >> 0) & 7) += 2;
31763 READ_WORD_F(adr, src)
31766 READ_WORD_F(adr, dst)
31768 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
31769 flag_N = flag_C = res >> 8;
31770 flag_NotZ = res & 0xFFFF;
31781 adr = AREG((Opcode >> 0) & 7);
31782 AREG((Opcode >> 0) & 7) += 4;
31784 READ_LONG_F(adr, src)
31787 READ_LONG_F(adr, dst)
31790 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
31791 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
31792 flag_N = res >> 24;
31806 READ_BYTE_F(adr, src)
31809 READ_BYTE_F(adr, dst)
31811 flag_N = flag_C = res;
31812 flag_V = (src ^ dst) & (res ^ dst);
31813 flag_NotZ = res & 0xFF;
31827 READ_WORD_F(adr, src)
31830 READ_WORD_F(adr, dst)
31832 flag_V = ((src ^ dst) & (res ^ dst)) >> 8;
31833 flag_N = flag_C = res >> 8;
31834 flag_NotZ = res & 0xFFFF;
31848 READ_LONG_F(adr, src)
31851 READ_LONG_F(adr, dst)
31854 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
31855 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
31856 flag_N = res >> 24;
31867 src = DREGu8((Opcode >> 9) & 7);
31868 res = DREGu8((Opcode >> 0) & 7);
31874 DREGu8((Opcode >> 0) & 7) = res;
31884 src = DREGu8((Opcode >> 9) & 7);
31885 adr = AREG((Opcode >> 0) & 7);
31887 READ_BYTE_F(adr, res)
31893 WRITE_BYTE_F(adr, res)
31904 src = DREGu8((Opcode >> 9) & 7);
31905 adr = AREG((Opcode >> 0) & 7);
31906 AREG((Opcode >> 0) & 7) += 1;
31908 READ_BYTE_F(adr, res)
31914 WRITE_BYTE_F(adr, res)
31925 src = DREGu8((Opcode >> 9) & 7);
31926 adr = AREG((Opcode >> 0) & 7) - 1;
31927 AREG((Opcode >> 0) & 7) = adr;
31929 READ_BYTE_F(adr, res)
31935 WRITE_BYTE_F(adr, res)
31946 src = DREGu8((Opcode >> 9) & 7);
31948 adr += AREG((Opcode >> 0) & 7);
31950 READ_BYTE_F(adr, res)
31956 WRITE_BYTE_F(adr, res)
31967 src = DREGu8((Opcode >> 9) & 7);
31968 adr = AREG((Opcode >> 0) & 7);
31971 READ_BYTE_F(adr, res)
31977 WRITE_BYTE_F(adr, res)
31988 src = DREGu8((Opcode >> 9) & 7);
31991 READ_BYTE_F(adr, res)
31997 WRITE_BYTE_F(adr, res)
32008 src = DREGu8((Opcode >> 9) & 7);
32011 READ_BYTE_F(adr, res)
32017 WRITE_BYTE_F(adr, res)
32028 src = DREGu8((Opcode >> 9) & 7);
32032 READ_BYTE_F(adr, res)
32038 WRITE_BYTE_F(adr, res)
32049 src = DREGu8((Opcode >> 9) & 7);
32053 READ_BYTE_F(adr, res)
32059 WRITE_BYTE_F(adr, res)
32070 src = DREGu16((Opcode >> 9) & 7);
32071 res = DREGu16((Opcode >> 0) & 7);
32077 DREGu16((Opcode >> 0) & 7) = res;
32087 src = DREGu16((Opcode >> 9) & 7);
32088 adr = AREG((Opcode >> 0) & 7);
32090 READ_WORD_F(adr, res)
32096 WRITE_WORD_F(adr, res)
32107 src = DREGu16((Opcode >> 9) & 7);
32108 adr = AREG((Opcode >> 0) & 7);
32109 AREG((Opcode >> 0) & 7) += 2;
32111 READ_WORD_F(adr, res)
32117 WRITE_WORD_F(adr, res)
32128 src = DREGu16((Opcode >> 9) & 7);
32129 adr = AREG((Opcode >> 0) & 7) - 2;
32130 AREG((Opcode >> 0) & 7) = adr;
32132 READ_WORD_F(adr, res)
32138 WRITE_WORD_F(adr, res)
32149 src = DREGu16((Opcode >> 9) & 7);
32151 adr += AREG((Opcode >> 0) & 7);
32153 READ_WORD_F(adr, res)
32159 WRITE_WORD_F(adr, res)
32170 src = DREGu16((Opcode >> 9) & 7);
32171 adr = AREG((Opcode >> 0) & 7);
32174 READ_WORD_F(adr, res)
32180 WRITE_WORD_F(adr, res)
32191 src = DREGu16((Opcode >> 9) & 7);
32194 READ_WORD_F(adr, res)
32200 WRITE_WORD_F(adr, res)
32211 src = DREGu16((Opcode >> 9) & 7);
32214 READ_WORD_F(adr, res)
32220 WRITE_WORD_F(adr, res)
32231 src = DREGu16((Opcode >> 9) & 7);
32235 READ_WORD_F(adr, res)
32241 WRITE_WORD_F(adr, res)
32252 src = DREGu16((Opcode >> 9) & 7);
32256 READ_WORD_F(adr, res)
32262 WRITE_WORD_F(adr, res)
32273 src = DREGu32((Opcode >> 9) & 7);
32274 res = DREGu32((Opcode >> 0) & 7);
32279 flag_N = res >> 24;
32280 DREGu32((Opcode >> 0) & 7) = res;
32290 src = DREGu32((Opcode >> 9) & 7);
32291 adr = AREG((Opcode >> 0) & 7);
32293 READ_LONG_F(adr, res)
32298 flag_N = res >> 24;
32299 WRITE_LONG_F(adr, res)
32310 src = DREGu32((Opcode >> 9) & 7);
32311 adr = AREG((Opcode >> 0) & 7);
32312 AREG((Opcode >> 0) & 7) += 4;
32314 READ_LONG_F(adr, res)
32319 flag_N = res >> 24;
32320 WRITE_LONG_F(adr, res)
32331 src = DREGu32((Opcode >> 9) & 7);
32332 adr = AREG((Opcode >> 0) & 7) - 4;
32333 AREG((Opcode >> 0) & 7) = adr;
32335 READ_LONG_F(adr, res)
32340 flag_N = res >> 24;
32341 WRITE_LONG_F(adr, res)
32352 src = DREGu32((Opcode >> 9) & 7);
32354 adr += AREG((Opcode >> 0) & 7);
32356 READ_LONG_F(adr, res)
32361 flag_N = res >> 24;
32362 WRITE_LONG_F(adr, res)
32373 src = DREGu32((Opcode >> 9) & 7);
32374 adr = AREG((Opcode >> 0) & 7);
32377 READ_LONG_F(adr, res)
32382 flag_N = res >> 24;
32383 WRITE_LONG_F(adr, res)
32394 src = DREGu32((Opcode >> 9) & 7);
32397 READ_LONG_F(adr, res)
32402 flag_N = res >> 24;
32403 WRITE_LONG_F(adr, res)
32414 src = DREGu32((Opcode >> 9) & 7);
32417 READ_LONG_F(adr, res)
32422 flag_N = res >> 24;
32423 WRITE_LONG_F(adr, res)
32434 src = DREGu32((Opcode >> 9) & 7);
32438 READ_LONG_F(adr, res)
32443 flag_N = res >> 24;
32444 WRITE_LONG_F(adr, res)
32455 src = DREGu32((Opcode >> 9) & 7);
32459 READ_LONG_F(adr, res)
32464 flag_N = res >> 24;
32465 WRITE_LONG_F(adr, res)
32476 src = (s32)DREGs16((Opcode >> 0) & 7);
32477 dst = AREGu32((Opcode >> 9) & 7);
32480 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
32481 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
32482 flag_N = res >> 24;
32492 src = (s32)AREGs16((Opcode >> 0) & 7);
32493 dst = AREGu32((Opcode >> 9) & 7);
32496 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
32497 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
32498 flag_N = res >> 24;
32508 adr = AREG((Opcode >> 0) & 7);
32510 READSX_WORD_F(adr, src)
32511 dst = AREGu32((Opcode >> 9) & 7);
32514 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
32515 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
32516 flag_N = res >> 24;
32527 adr = AREG((Opcode >> 0) & 7);
32528 AREG((Opcode >> 0) & 7) += 2;
32530 READSX_WORD_F(adr, src)
32531 dst = AREGu32((Opcode >> 9) & 7);
32534 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
32535 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
32536 flag_N = res >> 24;
32547 adr = AREG((Opcode >> 0) & 7) - 2;
32548 AREG((Opcode >> 0) & 7) = adr;
32550 READSX_WORD_F(adr, src)
32551 dst = AREGu32((Opcode >> 9) & 7);
32554 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
32555 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
32556 flag_N = res >> 24;
32568 adr += AREG((Opcode >> 0) & 7);
32570 READSX_WORD_F(adr, src)
32571 dst = AREGu32((Opcode >> 9) & 7);
32574 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
32575 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
32576 flag_N = res >> 24;
32587 adr = AREG((Opcode >> 0) & 7);
32590 READSX_WORD_F(adr, src)
32591 dst = AREGu32((Opcode >> 9) & 7);
32594 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
32595 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
32596 flag_N = res >> 24;
32609 READSX_WORD_F(adr, src)
32610 dst = AREGu32((Opcode >> 9) & 7);
32613 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
32614 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
32615 flag_N = res >> 24;
32628 READSX_WORD_F(adr, src)
32629 dst = AREGu32((Opcode >> 9) & 7);
32632 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
32633 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
32634 flag_N = res >> 24;
32645 adr = GET_SWORD + GET_PC;
32648 READSX_WORD_F(adr, src)
32649 dst = AREGu32((Opcode >> 9) & 7);
32652 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
32653 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
32654 flag_N = res >> 24;
32668 READSX_WORD_F(adr, src)
32669 dst = AREGu32((Opcode >> 9) & 7);
32672 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
32673 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
32674 flag_N = res >> 24;
32686 dst = AREGu32((Opcode >> 9) & 7);
32689 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
32690 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
32691 flag_N = res >> 24;
32704 READSX_WORD_F(adr, src)
32705 dst = AREGu32((Opcode >> 9) & 7);
32708 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
32709 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
32710 flag_N = res >> 24;
32724 READSX_WORD_F(adr, src)
32725 dst = AREGu32((Opcode >> 9) & 7);
32728 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
32729 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
32730 flag_N = res >> 24;
32741 src = (s32)DREGs32((Opcode >> 0) & 7);
32742 dst = AREGu32((Opcode >> 9) & 7);
32745 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
32746 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
32747 flag_N = res >> 24;
32757 src = (s32)AREGs32((Opcode >> 0) & 7);
32758 dst = AREGu32((Opcode >> 9) & 7);
32761 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
32762 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
32763 flag_N = res >> 24;
32773 adr = AREG((Opcode >> 0) & 7);
32775 READSX_LONG_F(adr, src)
32776 dst = AREGu32((Opcode >> 9) & 7);
32779 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
32780 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
32781 flag_N = res >> 24;
32792 adr = AREG((Opcode >> 0) & 7);
32793 AREG((Opcode >> 0) & 7) += 4;
32795 READSX_LONG_F(adr, src)
32796 dst = AREGu32((Opcode >> 9) & 7);
32799 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
32800 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
32801 flag_N = res >> 24;
32812 adr = AREG((Opcode >> 0) & 7) - 4;
32813 AREG((Opcode >> 0) & 7) = adr;
32815 READSX_LONG_F(adr, src)
32816 dst = AREGu32((Opcode >> 9) & 7);
32819 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
32820 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
32821 flag_N = res >> 24;
32833 adr += AREG((Opcode >> 0) & 7);
32835 READSX_LONG_F(adr, src)
32836 dst = AREGu32((Opcode >> 9) & 7);
32839 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
32840 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
32841 flag_N = res >> 24;
32852 adr = AREG((Opcode >> 0) & 7);
32855 READSX_LONG_F(adr, src)
32856 dst = AREGu32((Opcode >> 9) & 7);
32859 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
32860 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
32861 flag_N = res >> 24;
32874 READSX_LONG_F(adr, src)
32875 dst = AREGu32((Opcode >> 9) & 7);
32878 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
32879 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
32880 flag_N = res >> 24;
32893 READSX_LONG_F(adr, src)
32894 dst = AREGu32((Opcode >> 9) & 7);
32897 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
32898 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
32899 flag_N = res >> 24;
32910 adr = GET_SWORD + GET_PC;
32913 READSX_LONG_F(adr, src)
32914 dst = AREGu32((Opcode >> 9) & 7);
32917 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
32918 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
32919 flag_N = res >> 24;
32933 READSX_LONG_F(adr, src)
32934 dst = AREGu32((Opcode >> 9) & 7);
32937 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
32938 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
32939 flag_N = res >> 24;
32951 dst = AREGu32((Opcode >> 9) & 7);
32954 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
32955 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
32956 flag_N = res >> 24;
32969 READSX_LONG_F(adr, src)
32970 dst = AREGu32((Opcode >> 9) & 7);
32973 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
32974 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
32975 flag_N = res >> 24;
32989 READSX_LONG_F(adr, src)
32990 dst = AREGu32((Opcode >> 9) & 7);
32993 flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23;
32994 flag_V = ((src ^ dst) & (res ^ dst)) >> 24;
32995 flag_N = res >> 24;
33006 src = DREGu8((Opcode >> 0) & 7);
33007 res = DREGu8((Opcode >> 9) & 7);
33013 DREGu8((Opcode >> 9) & 7) = res;
33023 adr = AREG((Opcode >> 0) & 7);
33025 READ_BYTE_F(adr, src)
33026 res = DREGu8((Opcode >> 9) & 7);
33032 DREGu8((Opcode >> 9) & 7) = res;
33043 adr = AREG((Opcode >> 0) & 7);
33044 AREG((Opcode >> 0) & 7) += 1;
33046 READ_BYTE_F(adr, src)
33047 res = DREGu8((Opcode >> 9) & 7);
33053 DREGu8((Opcode >> 9) & 7) = res;
33064 adr = AREG((Opcode >> 0) & 7) - 1;
33065 AREG((Opcode >> 0) & 7) = adr;
33067 READ_BYTE_F(adr, src)
33068 res = DREGu8((Opcode >> 9) & 7);
33074 DREGu8((Opcode >> 9) & 7) = res;
33086 adr += AREG((Opcode >> 0) & 7);
33088 READ_BYTE_F(adr, src)
33089 res = DREGu8((Opcode >> 9) & 7);
33095 DREGu8((Opcode >> 9) & 7) = res;
33106 adr = AREG((Opcode >> 0) & 7);
33109 READ_BYTE_F(adr, src)
33110 res = DREGu8((Opcode >> 9) & 7);
33116 DREGu8((Opcode >> 9) & 7) = res;
33129 READ_BYTE_F(adr, src)
33130 res = DREGu8((Opcode >> 9) & 7);
33136 DREGu8((Opcode >> 9) & 7) = res;
33149 READ_BYTE_F(adr, src)
33150 res = DREGu8((Opcode >> 9) & 7);
33156 DREGu8((Opcode >> 9) & 7) = res;
33167 adr = GET_SWORD + GET_PC;
33170 READ_BYTE_F(adr, src)
33171 res = DREGu8((Opcode >> 9) & 7);
33177 DREGu8((Opcode >> 9) & 7) = res;
33191 READ_BYTE_F(adr, src)
33192 res = DREGu8((Opcode >> 9) & 7);
33198 DREGu8((Opcode >> 9) & 7) = res;
33210 res = DREGu8((Opcode >> 9) & 7);
33216 DREGu8((Opcode >> 9) & 7) = res;
33229 READ_BYTE_F(adr, src)
33230 res = DREGu8((Opcode >> 9) & 7);
33236 DREGu8((Opcode >> 9) & 7) = res;
33250 READ_BYTE_F(adr, src)
33251 res = DREGu8((Opcode >> 9) & 7);
33257 DREGu8((Opcode >> 9) & 7) = res;
33268 src = DREGu16((Opcode >> 0) & 7);
33269 res = DREGu16((Opcode >> 9) & 7);
33275 DREGu16((Opcode >> 9) & 7) = res;
33285 adr = AREG((Opcode >> 0) & 7);
33287 READ_WORD_F(adr, src)
33288 res = DREGu16((Opcode >> 9) & 7);
33294 DREGu16((Opcode >> 9) & 7) = res;
33305 adr = AREG((Opcode >> 0) & 7);
33306 AREG((Opcode >> 0) & 7) += 2;
33308 READ_WORD_F(adr, src)
33309 res = DREGu16((Opcode >> 9) & 7);
33315 DREGu16((Opcode >> 9) & 7) = res;
33326 adr = AREG((Opcode >> 0) & 7) - 2;
33327 AREG((Opcode >> 0) & 7) = adr;
33329 READ_WORD_F(adr, src)
33330 res = DREGu16((Opcode >> 9) & 7);
33336 DREGu16((Opcode >> 9) & 7) = res;
33348 adr += AREG((Opcode >> 0) & 7);
33350 READ_WORD_F(adr, src)
33351 res = DREGu16((Opcode >> 9) & 7);
33357 DREGu16((Opcode >> 9) & 7) = res;
33368 adr = AREG((Opcode >> 0) & 7);
33371 READ_WORD_F(adr, src)
33372 res = DREGu16((Opcode >> 9) & 7);
33378 DREGu16((Opcode >> 9) & 7) = res;
33391 READ_WORD_F(adr, src)
33392 res = DREGu16((Opcode >> 9) & 7);
33398 DREGu16((Opcode >> 9) & 7) = res;
33411 READ_WORD_F(adr, src)
33412 res = DREGu16((Opcode >> 9) & 7);
33418 DREGu16((Opcode >> 9) & 7) = res;
33429 adr = GET_SWORD + GET_PC;
33432 READ_WORD_F(adr, src)
33433 res = DREGu16((Opcode >> 9) & 7);
33439 DREGu16((Opcode >> 9) & 7) = res;
33453 READ_WORD_F(adr, src)
33454 res = DREGu16((Opcode >> 9) & 7);
33460 DREGu16((Opcode >> 9) & 7) = res;
33472 res = DREGu16((Opcode >> 9) & 7);
33478 DREGu16((Opcode >> 9) & 7) = res;
33491 READ_WORD_F(adr, src)
33492 res = DREGu16((Opcode >> 9) & 7);
33498 DREGu16((Opcode >> 9) & 7) = res;
33512 READ_WORD_F(adr, src)
33513 res = DREGu16((Opcode >> 9) & 7);
33519 DREGu16((Opcode >> 9) & 7) = res;
33530 src = DREGu32((Opcode >> 0) & 7);
33531 res = DREGu32((Opcode >> 9) & 7);
33536 flag_N = res >> 24;
33537 DREGu32((Opcode >> 9) & 7) = res;
33547 adr = AREG((Opcode >> 0) & 7);
33549 READ_LONG_F(adr, src)
33550 res = DREGu32((Opcode >> 9) & 7);
33555 flag_N = res >> 24;
33556 DREGu32((Opcode >> 9) & 7) = res;
33567 adr = AREG((Opcode >> 0) & 7);
33568 AREG((Opcode >> 0) & 7) += 4;
33570 READ_LONG_F(adr, src)
33571 res = DREGu32((Opcode >> 9) & 7);
33576 flag_N = res >> 24;
33577 DREGu32((Opcode >> 9) & 7) = res;
33588 adr = AREG((Opcode >> 0) & 7) - 4;
33589 AREG((Opcode >> 0) & 7) = adr;
33591 READ_LONG_F(adr, src)
33592 res = DREGu32((Opcode >> 9) & 7);
33597 flag_N = res >> 24;
33598 DREGu32((Opcode >> 9) & 7) = res;
33610 adr += AREG((Opcode >> 0) & 7);
33612 READ_LONG_F(adr, src)
33613 res = DREGu32((Opcode >> 9) & 7);
33618 flag_N = res >> 24;
33619 DREGu32((Opcode >> 9) & 7) = res;
33630 adr = AREG((Opcode >> 0) & 7);
33633 READ_LONG_F(adr, src)
33634 res = DREGu32((Opcode >> 9) & 7);
33639 flag_N = res >> 24;
33640 DREGu32((Opcode >> 9) & 7) = res;
33653 READ_LONG_F(adr, src)
33654 res = DREGu32((Opcode >> 9) & 7);
33659 flag_N = res >> 24;
33660 DREGu32((Opcode >> 9) & 7) = res;
33673 READ_LONG_F(adr, src)
33674 res = DREGu32((Opcode >> 9) & 7);
33679 flag_N = res >> 24;
33680 DREGu32((Opcode >> 9) & 7) = res;
33691 adr = GET_SWORD + GET_PC;
33694 READ_LONG_F(adr, src)
33695 res = DREGu32((Opcode >> 9) & 7);
33700 flag_N = res >> 24;
33701 DREGu32((Opcode >> 9) & 7) = res;
33715 READ_LONG_F(adr, src)
33716 res = DREGu32((Opcode >> 9) & 7);
33721 flag_N = res >> 24;
33722 DREGu32((Opcode >> 9) & 7) = res;
33734 res = DREGu32((Opcode >> 9) & 7);
33739 flag_N = res >> 24;
33740 DREGu32((Opcode >> 9) & 7) = res;
33753 READ_LONG_F(adr, src)
33754 res = DREGu32((Opcode >> 9) & 7);
33759 flag_N = res >> 24;
33760 DREGu32((Opcode >> 9) & 7) = res;
33774 READ_LONG_F(adr, src)
33775 res = DREGu32((Opcode >> 9) & 7);
33780 flag_N = res >> 24;
33781 DREGu32((Opcode >> 9) & 7) = res;
33792 src = DREGu8((Opcode >> 9) & 7);
33793 adr = AREG((Opcode >> 0) & 7);
33795 READ_BYTE_F(adr, res)
33801 WRITE_BYTE_F(adr, res)
33812 src = DREGu8((Opcode >> 9) & 7);
33813 adr = AREG((Opcode >> 0) & 7);
33814 AREG((Opcode >> 0) & 7) += 1;
33816 READ_BYTE_F(adr, res)
33822 WRITE_BYTE_F(adr, res)
33833 src = DREGu8((Opcode >> 9) & 7);
33834 adr = AREG((Opcode >> 0) & 7) - 1;
33835 AREG((Opcode >> 0) & 7) = adr;
33837 READ_BYTE_F(adr, res)
33843 WRITE_BYTE_F(adr, res)
33854 src = DREGu8((Opcode >> 9) & 7);
33856 adr += AREG((Opcode >> 0) & 7);
33858 READ_BYTE_F(adr, res)
33864 WRITE_BYTE_F(adr, res)
33875 src = DREGu8((Opcode >> 9) & 7);
33876 adr = AREG((Opcode >> 0) & 7);
33879 READ_BYTE_F(adr, res)
33885 WRITE_BYTE_F(adr, res)
33896 src = DREGu8((Opcode >> 9) & 7);
33899 READ_BYTE_F(adr, res)
33905 WRITE_BYTE_F(adr, res)
33916 src = DREGu8((Opcode >> 9) & 7);
33919 READ_BYTE_F(adr, res)
33925 WRITE_BYTE_F(adr, res)
33936 src = DREGu8((Opcode >> 9) & 7);
33940 READ_BYTE_F(adr, res)
33946 WRITE_BYTE_F(adr, res)
33957 src = DREGu8((Opcode >> 9) & 7);
33961 READ_BYTE_F(adr, res)
33967 WRITE_BYTE_F(adr, res)
33978 src = DREGu16((Opcode >> 9) & 7);
33979 adr = AREG((Opcode >> 0) & 7);
33981 READ_WORD_F(adr, res)
33987 WRITE_WORD_F(adr, res)
33998 src = DREGu16((Opcode >> 9) & 7);
33999 adr = AREG((Opcode >> 0) & 7);
34000 AREG((Opcode >> 0) & 7) += 2;
34002 READ_WORD_F(adr, res)
34008 WRITE_WORD_F(adr, res)
34019 src = DREGu16((Opcode >> 9) & 7);
34020 adr = AREG((Opcode >> 0) & 7) - 2;
34021 AREG((Opcode >> 0) & 7) = adr;
34023 READ_WORD_F(adr, res)
34029 WRITE_WORD_F(adr, res)
34040 src = DREGu16((Opcode >> 9) & 7);
34042 adr += AREG((Opcode >> 0) & 7);
34044 READ_WORD_F(adr, res)
34050 WRITE_WORD_F(adr, res)
34061 src = DREGu16((Opcode >> 9) & 7);
34062 adr = AREG((Opcode >> 0) & 7);
34065 READ_WORD_F(adr, res)
34071 WRITE_WORD_F(adr, res)
34082 src = DREGu16((Opcode >> 9) & 7);
34085 READ_WORD_F(adr, res)
34091 WRITE_WORD_F(adr, res)
34102 src = DREGu16((Opcode >> 9) & 7);
34105 READ_WORD_F(adr, res)
34111 WRITE_WORD_F(adr, res)
34122 src = DREGu16((Opcode >> 9) & 7);
34126 READ_WORD_F(adr, res)
34132 WRITE_WORD_F(adr, res)
34143 src = DREGu16((Opcode >> 9) & 7);
34147 READ_WORD_F(adr, res)
34153 WRITE_WORD_F(adr, res)
34164 src = DREGu32((Opcode >> 9) & 7);
34165 adr = AREG((Opcode >> 0) & 7);
34167 READ_LONG_F(adr, res)
34172 flag_N = res >> 24;
34173 WRITE_LONG_F(adr, res)
34184 src = DREGu32((Opcode >> 9) & 7);
34185 adr = AREG((Opcode >> 0) & 7);
34186 AREG((Opcode >> 0) & 7) += 4;
34188 READ_LONG_F(adr, res)
34193 flag_N = res >> 24;
34194 WRITE_LONG_F(adr, res)
34205 src = DREGu32((Opcode >> 9) & 7);
34206 adr = AREG((Opcode >> 0) & 7) - 4;
34207 AREG((Opcode >> 0) & 7) = adr;
34209 READ_LONG_F(adr, res)
34214 flag_N = res >> 24;
34215 WRITE_LONG_F(adr, res)
34226 src = DREGu32((Opcode >> 9) & 7);
34228 adr += AREG((Opcode >> 0) & 7);
34230 READ_LONG_F(adr, res)
34235 flag_N = res >> 24;
34236 WRITE_LONG_F(adr, res)
34247 src = DREGu32((Opcode >> 9) & 7);
34248 adr = AREG((Opcode >> 0) & 7);
34251 READ_LONG_F(adr, res)
34256 flag_N = res >> 24;
34257 WRITE_LONG_F(adr, res)
34268 src = DREGu32((Opcode >> 9) & 7);
34271 READ_LONG_F(adr, res)
34276 flag_N = res >> 24;
34277 WRITE_LONG_F(adr, res)
34288 src = DREGu32((Opcode >> 9) & 7);
34291 READ_LONG_F(adr, res)
34296 flag_N = res >> 24;
34297 WRITE_LONG_F(adr, res)
34308 src = DREGu32((Opcode >> 9) & 7);
34312 READ_LONG_F(adr, res)
34317 flag_N = res >> 24;
34318 WRITE_LONG_F(adr, res)
34329 src = DREGu32((Opcode >> 9) & 7);
34333 READ_LONG_F(adr, res)
34338 flag_N = res >> 24;
34339 WRITE_LONG_F(adr, res)
34351 src = DREGu8((Opcode >> 0) & 7);
34352 dst = DREGu8((Opcode >> 9) & 7);
34353 res = (dst & 0xF) + (src & 0xF) + ((flag_X >> M68K_SR_X_SFT) & 1);
34354 if (res > 9) corf = 6;
34355 res += (dst & 0xF0) + (src & 0xF0);
34361 flag_X = flag_C = M68K_SR_C;
34363 else flag_X = flag_C = 0;
34365 flag_NotZ |= res & 0xFF;
34367 DREGu8((Opcode >> 9) & 7) = res;
34378 adr = AREG((Opcode >> 0) & 7) - 1;
34379 AREG((Opcode >> 0) & 7) = adr;
34381 READ_BYTE_F(adr, src)
34382 adr = AREG((Opcode >> 9) & 7) - 1;
34383 AREG((Opcode >> 9) & 7) = adr;
34384 READ_BYTE_F(adr, dst)
34385 res = (dst & 0xF) + (src & 0xF) + ((flag_X >> M68K_SR_X_SFT) & 1);
34386 if (res > 9) corf = 6;
34387 res += (dst & 0xF0) + (src & 0xF0);
34393 flag_X = flag_C = M68K_SR_C;
34395 else flag_X = flag_C = 0;
34397 flag_NotZ |= res & 0xFF;
34399 WRITE_BYTE_F(adr, res)
34414 READ_BYTE_F(adr, src)
34415 adr = AREG((Opcode >> 9) & 7) - 1;
34416 AREG((Opcode >> 9) & 7) = adr;
34417 READ_BYTE_F(adr, dst)
34418 res = (dst & 0xF) + (src & 0xF) + ((flag_X >> M68K_SR_X_SFT) & 1);
34419 if (res > 9) corf = 6;
34420 res += (dst & 0xF0) + (src & 0xF0);
34426 flag_X = flag_C = M68K_SR_C;
34428 else flag_X = flag_C = 0;
34430 flag_NotZ |= res & 0xFF;
34432 WRITE_BYTE_F(adr, res)
34444 adr = AREG((Opcode >> 0) & 7) - 1;
34445 AREG((Opcode >> 0) & 7) = adr;
34447 READ_BYTE_F(adr, src)
34450 READ_BYTE_F(adr, dst)
34451 res = (dst & 0xF) + (src & 0xF) + ((flag_X >> M68K_SR_X_SFT) & 1);
34452 if (res > 9) corf = 6;
34453 res += (dst & 0xF0) + (src & 0xF0);
34459 flag_X = flag_C = M68K_SR_C;
34461 else flag_X = flag_C = 0;
34463 flag_NotZ |= res & 0xFF;
34465 WRITE_BYTE_F(adr, res)
34480 READ_BYTE_F(adr, src)
34483 READ_BYTE_F(adr, dst)
34484 res = (dst & 0xF) + (src & 0xF) + ((flag_X >> M68K_SR_X_SFT) & 1);
34485 if (res > 9) corf = 6;
34486 res += (dst & 0xF0) + (src & 0xF0);
34492 flag_X = flag_C = M68K_SR_C;
34494 else flag_X = flag_C = 0;
34496 flag_NotZ |= res & 0xFF;
34498 WRITE_BYTE_F(adr, res)
34509 src = DREGu16((Opcode >> 0) & 7);
34510 res = DREGu16((Opcode >> 9) & 7);
34512 flag_N = res >> 24;
34514 flag_V = flag_C = 0;
34515 DREGu32((Opcode >> 9) & 7) = res;
34516 #ifdef USE_CYCLONE_TIMING
34517 RET(38+BITCOUNT(res,src)*2)
34529 adr = AREG((Opcode >> 0) & 7);
34531 READ_WORD_F(adr, src)
34532 res = DREGu16((Opcode >> 9) & 7);
34534 flag_N = res >> 24;
34536 flag_V = flag_C = 0;
34537 DREGu32((Opcode >> 9) & 7) = res;
34539 #ifdef USE_CYCLONE_TIMING
34540 RET(42+BITCOUNT(res,src)*2)
34552 adr = AREG((Opcode >> 0) & 7);
34553 AREG((Opcode >> 0) & 7) += 2;
34555 READ_WORD_F(adr, src)
34556 res = DREGu16((Opcode >> 9) & 7);
34558 flag_N = res >> 24;
34560 flag_V = flag_C = 0;
34561 DREGu32((Opcode >> 9) & 7) = res;
34563 #ifdef USE_CYCLONE_TIMING
34564 RET(42+BITCOUNT(res,src)*2)
34576 adr = AREG((Opcode >> 0) & 7) - 2;
34577 AREG((Opcode >> 0) & 7) = adr;
34579 READ_WORD_F(adr, src)
34580 res = DREGu16((Opcode >> 9) & 7);
34582 flag_N = res >> 24;
34584 flag_V = flag_C = 0;
34585 DREGu32((Opcode >> 9) & 7) = res;
34587 #ifdef USE_CYCLONE_TIMING
34588 RET(44+BITCOUNT(res,src)*2)
34601 adr += AREG((Opcode >> 0) & 7);
34603 READ_WORD_F(adr, src)
34604 res = DREGu16((Opcode >> 9) & 7);
34606 flag_N = res >> 24;
34608 flag_V = flag_C = 0;
34609 DREGu32((Opcode >> 9) & 7) = res;
34611 #ifdef USE_CYCLONE_TIMING
34612 RET(46+BITCOUNT(res,src)*2)
34624 adr = AREG((Opcode >> 0) & 7);
34627 READ_WORD_F(adr, src)
34628 res = DREGu16((Opcode >> 9) & 7);
34630 flag_N = res >> 24;
34632 flag_V = flag_C = 0;
34633 DREGu32((Opcode >> 9) & 7) = res;
34635 #ifdef USE_CYCLONE_TIMING
34636 RET(48+BITCOUNT(res,src)*2)
34650 READ_WORD_F(adr, src)
34651 res = DREGu16((Opcode >> 9) & 7);
34653 flag_N = res >> 24;
34655 flag_V = flag_C = 0;
34656 DREGu32((Opcode >> 9) & 7) = res;
34658 #ifdef USE_CYCLONE_TIMING
34659 RET(46+BITCOUNT(res,src)*2)
34673 READ_WORD_F(adr, src)
34674 res = DREGu16((Opcode >> 9) & 7);
34676 flag_N = res >> 24;
34678 flag_V = flag_C = 0;
34679 DREGu32((Opcode >> 9) & 7) = res;
34681 #ifdef USE_CYCLONE_TIMING
34682 RET(50+BITCOUNT(res,src)*2)
34694 adr = GET_SWORD + GET_PC;
34697 READ_WORD_F(adr, src)
34698 res = DREGu16((Opcode >> 9) & 7);
34700 flag_N = res >> 24;
34702 flag_V = flag_C = 0;
34703 DREGu32((Opcode >> 9) & 7) = res;
34705 #ifdef USE_CYCLONE_TIMING
34706 RET(46+BITCOUNT(res,src)*2)
34721 READ_WORD_F(adr, src)
34722 res = DREGu16((Opcode >> 9) & 7);
34724 flag_N = res >> 24;
34726 flag_V = flag_C = 0;
34727 DREGu32((Opcode >> 9) & 7) = res;
34729 #ifdef USE_CYCLONE_TIMING
34730 RET(48+BITCOUNT(res,src)*2)
34743 res = DREGu16((Opcode >> 9) & 7);
34745 flag_N = res >> 24;
34747 flag_V = flag_C = 0;
34748 DREGu32((Opcode >> 9) & 7) = res;
34749 #ifdef USE_CYCLONE_TIMING
34750 RET(42+BITCOUNT(res,src)*2)
34765 READ_WORD_F(adr, src)
34766 res = DREGu16((Opcode >> 9) & 7);
34768 flag_N = res >> 24;
34770 flag_V = flag_C = 0;
34771 DREGu32((Opcode >> 9) & 7) = res;
34773 #ifdef USE_CYCLONE_TIMING
34774 RET(42+BITCOUNT(res,src)*2)
34789 READ_WORD_F(adr, src)
34790 res = DREGu16((Opcode >> 9) & 7);
34792 flag_N = res >> 24;
34794 flag_V = flag_C = 0;
34795 DREGu32((Opcode >> 9) & 7) = res;
34797 #ifdef USE_CYCLONE_TIMING
34798 RET(44+BITCOUNT(res,src)*2)
34810 src = (s32)DREGs16((Opcode >> 0) & 7);
34811 res = (s32)DREGs16((Opcode >> 9) & 7);
34812 res = ((s32)res) * ((s32)src);
34813 flag_N = res >> 24;
34815 flag_V = flag_C = 0;
34816 DREGu32((Opcode >> 9) & 7) = res;
34817 #ifdef USE_CYCLONE_TIMING
34818 RET(38+BITCOUNT(res,src^(src<<1)))
34830 adr = AREG((Opcode >> 0) & 7);
34832 READSX_WORD_F(adr, src)
34833 res = (s32)DREGs16((Opcode >> 9) & 7);
34834 res = ((s32)res) * ((s32)src);
34835 flag_N = res >> 24;
34837 flag_V = flag_C = 0;
34838 DREGu32((Opcode >> 9) & 7) = res;
34840 #ifdef USE_CYCLONE_TIMING
34841 RET(42+BITCOUNT(res,src^(src<<1))*2)
34853 adr = AREG((Opcode >> 0) & 7);
34854 AREG((Opcode >> 0) & 7) += 2;
34856 READSX_WORD_F(adr, src)
34857 res = (s32)DREGs16((Opcode >> 9) & 7);
34858 res = ((s32)res) * ((s32)src);
34859 flag_N = res >> 24;
34861 flag_V = flag_C = 0;
34862 DREGu32((Opcode >> 9) & 7) = res;
34864 #ifdef USE_CYCLONE_TIMING
34865 RET(42+BITCOUNT(res,src^(src<<1))*2)
34877 adr = AREG((Opcode >> 0) & 7) - 2;
34878 AREG((Opcode >> 0) & 7) = adr;
34880 READSX_WORD_F(adr, src)
34881 res = (s32)DREGs16((Opcode >> 9) & 7);
34882 res = ((s32)res) * ((s32)src);
34883 flag_N = res >> 24;
34885 flag_V = flag_C = 0;
34886 DREGu32((Opcode >> 9) & 7) = res;
34888 #ifdef USE_CYCLONE_TIMING
34889 RET(44+BITCOUNT(res,src^(src<<1))*2)
34902 adr += AREG((Opcode >> 0) & 7);
34904 READSX_WORD_F(adr, src)
34905 res = (s32)DREGs16((Opcode >> 9) & 7);
34906 res = ((s32)res) * ((s32)src);
34907 flag_N = res >> 24;
34909 flag_V = flag_C = 0;
34910 DREGu32((Opcode >> 9) & 7) = res;
34912 #ifdef USE_CYCLONE_TIMING
34913 RET(46+BITCOUNT(res,src^(src<<1))*2)
34925 adr = AREG((Opcode >> 0) & 7);
34928 READSX_WORD_F(adr, src)
34929 res = (s32)DREGs16((Opcode >> 9) & 7);
34930 res = ((s32)res) * ((s32)src);
34931 flag_N = res >> 24;
34933 flag_V = flag_C = 0;
34934 DREGu32((Opcode >> 9) & 7) = res;
34936 #ifdef USE_CYCLONE_TIMING
34937 RET(48+BITCOUNT(res,src^(src<<1))*2)
34951 READSX_WORD_F(adr, src)
34952 res = (s32)DREGs16((Opcode >> 9) & 7);
34953 res = ((s32)res) * ((s32)src);
34954 flag_N = res >> 24;
34956 flag_V = flag_C = 0;
34957 DREGu32((Opcode >> 9) & 7) = res;
34959 #ifdef USE_CYCLONE_TIMING
34960 RET(46+BITCOUNT(res,src^(src<<1))*2)
34974 READSX_WORD_F(adr, src)
34975 res = (s32)DREGs16((Opcode >> 9) & 7);
34976 res = ((s32)res) * ((s32)src);
34977 flag_N = res >> 24;
34979 flag_V = flag_C = 0;
34980 DREGu32((Opcode >> 9) & 7) = res;
34982 #ifdef USE_CYCLONE_TIMING
34983 RET(50+BITCOUNT(res,src^(src<<1))*2)
34995 adr = GET_SWORD + GET_PC;
34998 READSX_WORD_F(adr, src)
34999 res = (s32)DREGs16((Opcode >> 9) & 7);
35000 res = ((s32)res) * ((s32)src);
35001 flag_N = res >> 24;
35003 flag_V = flag_C = 0;
35004 DREGu32((Opcode >> 9) & 7) = res;
35006 #ifdef USE_CYCLONE_TIMING
35007 RET(46+BITCOUNT(res,src^(src<<1))*2)
35022 READSX_WORD_F(adr, src)
35023 res = (s32)DREGs16((Opcode >> 9) & 7);
35024 res = ((s32)res) * ((s32)src);
35025 flag_N = res >> 24;
35027 flag_V = flag_C = 0;
35028 DREGu32((Opcode >> 9) & 7) = res;
35030 #ifdef USE_CYCLONE_TIMING
35031 RET(48+BITCOUNT(res,src^(src<<1))*2)
35044 res = (s32)DREGs16((Opcode >> 9) & 7);
35045 res = ((s32)res) * ((s32)src);
35046 flag_N = res >> 24;
35048 flag_V = flag_C = 0;
35049 DREGu32((Opcode >> 9) & 7) = res;
35050 #ifdef USE_CYCLONE_TIMING
35051 RET(42+BITCOUNT(res,src^(src<<1))*2)
35066 READSX_WORD_F(adr, src)
35067 res = (s32)DREGs16((Opcode >> 9) & 7);
35068 res = ((s32)res) * ((s32)src);
35069 flag_N = res >> 24;
35071 flag_V = flag_C = 0;
35072 DREGu32((Opcode >> 9) & 7) = res;
35074 #ifdef USE_CYCLONE_TIMING
35075 RET(42+BITCOUNT(res,src^(src<<1))*2)
35090 READSX_WORD_F(adr, src)
35091 res = (s32)DREGs16((Opcode >> 9) & 7);
35092 res = ((s32)res) * ((s32)src);
35093 flag_N = res >> 24;
35095 flag_V = flag_C = 0;
35096 DREGu32((Opcode >> 9) & 7) = res;
35098 #ifdef USE_CYCLONE_TIMING
35099 RET(44+BITCOUNT(res,src^(src<<1))*2)
35111 res = DREGu32((Opcode >> 0) & 7);
35112 src = DREGu32((Opcode >> 9) & 7);
35113 DREGu32((Opcode >> 9) & 7) = res;
35115 DREGu32((Opcode >> 0) & 7) = res;
35125 res = AREGu32((Opcode >> 0) & 7);
35126 src = AREGu32((Opcode >> 9) & 7);
35127 AREG((Opcode >> 9) & 7) = res;
35129 AREG((Opcode >> 0) & 7) = res;
35139 res = AREGu32((Opcode >> 0) & 7);
35140 src = DREGu32((Opcode >> 9) & 7);
35141 DREGu32((Opcode >> 9) & 7) = res;
35143 AREG((Opcode >> 0) & 7) = res;
35153 src = DREGu8((Opcode >> 0) & 7);
35154 dst = DREGu8((Opcode >> 9) & 7);
35156 flag_N = flag_X = flag_C = res;
35157 flag_V = (src ^ res) & (dst ^ res);
35158 flag_NotZ = res & 0xFF;
35159 DREGu8((Opcode >> 9) & 7) = res;
35170 // can't read byte from Ax registers !
35171 ctx->execinfo |= M68K_FAULTED;
35172 ctx->io_cycle_counter = 0;
35174 goto famec_Exec_End;
35175 dst = DREGu8((Opcode >> 9) & 7);
35177 flag_N = flag_X = flag_C = res;
35178 flag_V = (src ^ res) & (dst ^ res);
35179 flag_NotZ = res & 0xFF;
35180 DREGu8((Opcode >> 9) & 7) = res;
35192 adr = AREG((Opcode >> 0) & 7);
35194 READ_BYTE_F(adr, src)
35195 dst = DREGu8((Opcode >> 9) & 7);
35197 flag_N = flag_X = flag_C = res;
35198 flag_V = (src ^ res) & (dst ^ res);
35199 flag_NotZ = res & 0xFF;
35200 DREGu8((Opcode >> 9) & 7) = res;
35211 adr = AREG((Opcode >> 0) & 7);
35212 AREG((Opcode >> 0) & 7) += 1;
35214 READ_BYTE_F(adr, src)
35215 dst = DREGu8((Opcode >> 9) & 7);
35217 flag_N = flag_X = flag_C = res;
35218 flag_V = (src ^ res) & (dst ^ res);
35219 flag_NotZ = res & 0xFF;
35220 DREGu8((Opcode >> 9) & 7) = res;
35231 adr = AREG((Opcode >> 0) & 7) - 1;
35232 AREG((Opcode >> 0) & 7) = adr;
35234 READ_BYTE_F(adr, src)
35235 dst = DREGu8((Opcode >> 9) & 7);
35237 flag_N = flag_X = flag_C = res;
35238 flag_V = (src ^ res) & (dst ^ res);
35239 flag_NotZ = res & 0xFF;
35240 DREGu8((Opcode >> 9) & 7) = res;
35252 adr += AREG((Opcode >> 0) & 7);
35254 READ_BYTE_F(adr, src)
35255 dst = DREGu8((Opcode >> 9) & 7);
35257 flag_N = flag_X = flag_C = res;
35258 flag_V = (src ^ res) & (dst ^ res);
35259 flag_NotZ = res & 0xFF;
35260 DREGu8((Opcode >> 9) & 7) = res;
35271 adr = AREG((Opcode >> 0) & 7);
35274 READ_BYTE_F(adr, src)
35275 dst = DREGu8((Opcode >> 9) & 7);
35277 flag_N = flag_X = flag_C = res;
35278 flag_V = (src ^ res) & (dst ^ res);
35279 flag_NotZ = res & 0xFF;
35280 DREGu8((Opcode >> 9) & 7) = res;
35293 READ_BYTE_F(adr, src)
35294 dst = DREGu8((Opcode >> 9) & 7);
35296 flag_N = flag_X = flag_C = res;
35297 flag_V = (src ^ res) & (dst ^ res);
35298 flag_NotZ = res & 0xFF;
35299 DREGu8((Opcode >> 9) & 7) = res;
35312 READ_BYTE_F(adr, src)
35313 dst = DREGu8((Opcode >> 9) & 7);
35315 flag_N = flag_X = flag_C = res;
35316 flag_V = (src ^ res) & (dst ^ res);
35317 flag_NotZ = res & 0xFF;
35318 DREGu8((Opcode >> 9) & 7) = res;
35329 adr = GET_SWORD + GET_PC;
35332 READ_BYTE_F(adr, src)
35333 dst = DREGu8((Opcode >> 9) & 7);
35335 flag_N = flag_X = flag_C = res;
35336 flag_V = (src ^ res) & (dst ^ res);
35337 flag_NotZ = res & 0xFF;
35338 DREGu8((Opcode >> 9) & 7) = res;
35352 READ_BYTE_F(adr, src)
35353 dst = DREGu8((Opcode >> 9) & 7);
35355 flag_N = flag_X = flag_C = res;
35356 flag_V = (src ^ res) & (dst ^ res);
35357 flag_NotZ = res & 0xFF;
35358 DREGu8((Opcode >> 9) & 7) = res;
35370 dst = DREGu8((Opcode >> 9) & 7);
35372 flag_N = flag_X = flag_C = res;
35373 flag_V = (src ^ res) & (dst ^ res);
35374 flag_NotZ = res & 0xFF;
35375 DREGu8((Opcode >> 9) & 7) = res;
35388 READ_BYTE_F(adr, src)
35389 dst = DREGu8((Opcode >> 9) & 7);
35391 flag_N = flag_X = flag_C = res;
35392 flag_V = (src ^ res) & (dst ^ res);
35393 flag_NotZ = res & 0xFF;
35394 DREGu8((Opcode >> 9) & 7) = res;
35408 READ_BYTE_F(adr, src)
35409 dst = DREGu8((Opcode >> 9) & 7);
35411 flag_N = flag_X = flag_C = res;
35412 flag_V = (src ^ res) & (dst ^ res);
35413 flag_NotZ = res & 0xFF;
35414 DREGu8((Opcode >> 9) & 7) = res;
35425 src = DREGu16((Opcode >> 0) & 7);
35426 dst = DREGu16((Opcode >> 9) & 7);
35428 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
35429 flag_N = flag_X = flag_C = res >> 8;
35430 flag_NotZ = res & 0xFFFF;
35431 DREGu16((Opcode >> 9) & 7) = res;
35441 src = AREGu16((Opcode >> 0) & 7);
35442 dst = DREGu16((Opcode >> 9) & 7);
35444 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
35445 flag_N = flag_X = flag_C = res >> 8;
35446 flag_NotZ = res & 0xFFFF;
35447 DREGu16((Opcode >> 9) & 7) = res;
35457 adr = AREG((Opcode >> 0) & 7);
35459 READ_WORD_F(adr, src)
35460 dst = DREGu16((Opcode >> 9) & 7);
35462 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
35463 flag_N = flag_X = flag_C = res >> 8;
35464 flag_NotZ = res & 0xFFFF;
35465 DREGu16((Opcode >> 9) & 7) = res;
35476 adr = AREG((Opcode >> 0) & 7);
35477 AREG((Opcode >> 0) & 7) += 2;
35479 READ_WORD_F(adr, src)
35480 dst = DREGu16((Opcode >> 9) & 7);
35482 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
35483 flag_N = flag_X = flag_C = res >> 8;
35484 flag_NotZ = res & 0xFFFF;
35485 DREGu16((Opcode >> 9) & 7) = res;
35496 adr = AREG((Opcode >> 0) & 7) - 2;
35497 AREG((Opcode >> 0) & 7) = adr;
35499 READ_WORD_F(adr, src)
35500 dst = DREGu16((Opcode >> 9) & 7);
35502 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
35503 flag_N = flag_X = flag_C = res >> 8;
35504 flag_NotZ = res & 0xFFFF;
35505 DREGu16((Opcode >> 9) & 7) = res;
35517 adr += AREG((Opcode >> 0) & 7);
35519 READ_WORD_F(adr, src)
35520 dst = DREGu16((Opcode >> 9) & 7);
35522 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
35523 flag_N = flag_X = flag_C = res >> 8;
35524 flag_NotZ = res & 0xFFFF;
35525 DREGu16((Opcode >> 9) & 7) = res;
35536 adr = AREG((Opcode >> 0) & 7);
35539 READ_WORD_F(adr, src)
35540 dst = DREGu16((Opcode >> 9) & 7);
35542 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
35543 flag_N = flag_X = flag_C = res >> 8;
35544 flag_NotZ = res & 0xFFFF;
35545 DREGu16((Opcode >> 9) & 7) = res;
35558 READ_WORD_F(adr, src)
35559 dst = DREGu16((Opcode >> 9) & 7);
35561 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
35562 flag_N = flag_X = flag_C = res >> 8;
35563 flag_NotZ = res & 0xFFFF;
35564 DREGu16((Opcode >> 9) & 7) = res;
35577 READ_WORD_F(adr, src)
35578 dst = DREGu16((Opcode >> 9) & 7);
35580 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
35581 flag_N = flag_X = flag_C = res >> 8;
35582 flag_NotZ = res & 0xFFFF;
35583 DREGu16((Opcode >> 9) & 7) = res;
35594 adr = GET_SWORD + GET_PC;
35597 READ_WORD_F(adr, src)
35598 dst = DREGu16((Opcode >> 9) & 7);
35600 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
35601 flag_N = flag_X = flag_C = res >> 8;
35602 flag_NotZ = res & 0xFFFF;
35603 DREGu16((Opcode >> 9) & 7) = res;
35617 READ_WORD_F(adr, src)
35618 dst = DREGu16((Opcode >> 9) & 7);
35620 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
35621 flag_N = flag_X = flag_C = res >> 8;
35622 flag_NotZ = res & 0xFFFF;
35623 DREGu16((Opcode >> 9) & 7) = res;
35635 dst = DREGu16((Opcode >> 9) & 7);
35637 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
35638 flag_N = flag_X = flag_C = res >> 8;
35639 flag_NotZ = res & 0xFFFF;
35640 DREGu16((Opcode >> 9) & 7) = res;
35653 READ_WORD_F(adr, src)
35654 dst = DREGu16((Opcode >> 9) & 7);
35656 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
35657 flag_N = flag_X = flag_C = res >> 8;
35658 flag_NotZ = res & 0xFFFF;
35659 DREGu16((Opcode >> 9) & 7) = res;
35673 READ_WORD_F(adr, src)
35674 dst = DREGu16((Opcode >> 9) & 7);
35676 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
35677 flag_N = flag_X = flag_C = res >> 8;
35678 flag_NotZ = res & 0xFFFF;
35679 DREGu16((Opcode >> 9) & 7) = res;
35690 src = DREGu32((Opcode >> 0) & 7);
35691 dst = DREGu32((Opcode >> 9) & 7);
35694 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
35695 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
35696 flag_N = res >> 24;
35697 DREGu32((Opcode >> 9) & 7) = res;
35707 src = AREGu32((Opcode >> 0) & 7);
35708 dst = DREGu32((Opcode >> 9) & 7);
35711 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
35712 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
35713 flag_N = res >> 24;
35714 DREGu32((Opcode >> 9) & 7) = res;
35724 adr = AREG((Opcode >> 0) & 7);
35726 READ_LONG_F(adr, src)
35727 dst = DREGu32((Opcode >> 9) & 7);
35730 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
35731 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
35732 flag_N = res >> 24;
35733 DREGu32((Opcode >> 9) & 7) = res;
35744 adr = AREG((Opcode >> 0) & 7);
35745 AREG((Opcode >> 0) & 7) += 4;
35747 READ_LONG_F(adr, src)
35748 dst = DREGu32((Opcode >> 9) & 7);
35751 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
35752 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
35753 flag_N = res >> 24;
35754 DREGu32((Opcode >> 9) & 7) = res;
35765 adr = AREG((Opcode >> 0) & 7) - 4;
35766 AREG((Opcode >> 0) & 7) = adr;
35768 READ_LONG_F(adr, src)
35769 dst = DREGu32((Opcode >> 9) & 7);
35772 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
35773 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
35774 flag_N = res >> 24;
35775 DREGu32((Opcode >> 9) & 7) = res;
35787 adr += AREG((Opcode >> 0) & 7);
35789 READ_LONG_F(adr, src)
35790 dst = DREGu32((Opcode >> 9) & 7);
35793 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
35794 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
35795 flag_N = res >> 24;
35796 DREGu32((Opcode >> 9) & 7) = res;
35807 adr = AREG((Opcode >> 0) & 7);
35810 READ_LONG_F(adr, src)
35811 dst = DREGu32((Opcode >> 9) & 7);
35814 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
35815 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
35816 flag_N = res >> 24;
35817 DREGu32((Opcode >> 9) & 7) = res;
35830 READ_LONG_F(adr, src)
35831 dst = DREGu32((Opcode >> 9) & 7);
35834 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
35835 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
35836 flag_N = res >> 24;
35837 DREGu32((Opcode >> 9) & 7) = res;
35850 READ_LONG_F(adr, src)
35851 dst = DREGu32((Opcode >> 9) & 7);
35854 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
35855 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
35856 flag_N = res >> 24;
35857 DREGu32((Opcode >> 9) & 7) = res;
35868 adr = GET_SWORD + GET_PC;
35871 READ_LONG_F(adr, src)
35872 dst = DREGu32((Opcode >> 9) & 7);
35875 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
35876 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
35877 flag_N = res >> 24;
35878 DREGu32((Opcode >> 9) & 7) = res;
35892 READ_LONG_F(adr, src)
35893 dst = DREGu32((Opcode >> 9) & 7);
35896 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
35897 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
35898 flag_N = res >> 24;
35899 DREGu32((Opcode >> 9) & 7) = res;
35911 dst = DREGu32((Opcode >> 9) & 7);
35914 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
35915 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
35916 flag_N = res >> 24;
35917 DREGu32((Opcode >> 9) & 7) = res;
35930 READ_LONG_F(adr, src)
35931 dst = DREGu32((Opcode >> 9) & 7);
35934 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
35935 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
35936 flag_N = res >> 24;
35937 DREGu32((Opcode >> 9) & 7) = res;
35951 READ_LONG_F(adr, src)
35952 dst = DREGu32((Opcode >> 9) & 7);
35955 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
35956 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
35957 flag_N = res >> 24;
35958 DREGu32((Opcode >> 9) & 7) = res;
35969 src = DREGu8((Opcode >> 9) & 7);
35970 adr = AREG((Opcode >> 0) & 7);
35972 READ_BYTE_F(adr, dst)
35974 flag_N = flag_X = flag_C = res;
35975 flag_V = (src ^ res) & (dst ^ res);
35976 flag_NotZ = res & 0xFF;
35977 WRITE_BYTE_F(adr, res)
35988 src = DREGu8((Opcode >> 9) & 7);
35989 adr = AREG((Opcode >> 0) & 7);
35990 AREG((Opcode >> 0) & 7) += 1;
35992 READ_BYTE_F(adr, dst)
35994 flag_N = flag_X = flag_C = res;
35995 flag_V = (src ^ res) & (dst ^ res);
35996 flag_NotZ = res & 0xFF;
35997 WRITE_BYTE_F(adr, res)
36008 src = DREGu8((Opcode >> 9) & 7);
36009 adr = AREG((Opcode >> 0) & 7) - 1;
36010 AREG((Opcode >> 0) & 7) = adr;
36012 READ_BYTE_F(adr, dst)
36014 flag_N = flag_X = flag_C = res;
36015 flag_V = (src ^ res) & (dst ^ res);
36016 flag_NotZ = res & 0xFF;
36017 WRITE_BYTE_F(adr, res)
36028 src = DREGu8((Opcode >> 9) & 7);
36030 adr += AREG((Opcode >> 0) & 7);
36032 READ_BYTE_F(adr, dst)
36034 flag_N = flag_X = flag_C = res;
36035 flag_V = (src ^ res) & (dst ^ res);
36036 flag_NotZ = res & 0xFF;
36037 WRITE_BYTE_F(adr, res)
36048 src = DREGu8((Opcode >> 9) & 7);
36049 adr = AREG((Opcode >> 0) & 7);
36052 READ_BYTE_F(adr, dst)
36054 flag_N = flag_X = flag_C = res;
36055 flag_V = (src ^ res) & (dst ^ res);
36056 flag_NotZ = res & 0xFF;
36057 WRITE_BYTE_F(adr, res)
36068 src = DREGu8((Opcode >> 9) & 7);
36071 READ_BYTE_F(adr, dst)
36073 flag_N = flag_X = flag_C = res;
36074 flag_V = (src ^ res) & (dst ^ res);
36075 flag_NotZ = res & 0xFF;
36076 WRITE_BYTE_F(adr, res)
36087 src = DREGu8((Opcode >> 9) & 7);
36090 READ_BYTE_F(adr, dst)
36092 flag_N = flag_X = flag_C = res;
36093 flag_V = (src ^ res) & (dst ^ res);
36094 flag_NotZ = res & 0xFF;
36095 WRITE_BYTE_F(adr, res)
36106 src = DREGu8((Opcode >> 9) & 7);
36110 READ_BYTE_F(adr, dst)
36112 flag_N = flag_X = flag_C = res;
36113 flag_V = (src ^ res) & (dst ^ res);
36114 flag_NotZ = res & 0xFF;
36115 WRITE_BYTE_F(adr, res)
36126 src = DREGu8((Opcode >> 9) & 7);
36130 READ_BYTE_F(adr, dst)
36132 flag_N = flag_X = flag_C = res;
36133 flag_V = (src ^ res) & (dst ^ res);
36134 flag_NotZ = res & 0xFF;
36135 WRITE_BYTE_F(adr, res)
36146 src = DREGu16((Opcode >> 9) & 7);
36147 adr = AREG((Opcode >> 0) & 7);
36149 READ_WORD_F(adr, dst)
36151 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
36152 flag_N = flag_X = flag_C = res >> 8;
36153 flag_NotZ = res & 0xFFFF;
36154 WRITE_WORD_F(adr, res)
36165 src = DREGu16((Opcode >> 9) & 7);
36166 adr = AREG((Opcode >> 0) & 7);
36167 AREG((Opcode >> 0) & 7) += 2;
36169 READ_WORD_F(adr, dst)
36171 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
36172 flag_N = flag_X = flag_C = res >> 8;
36173 flag_NotZ = res & 0xFFFF;
36174 WRITE_WORD_F(adr, res)
36185 src = DREGu16((Opcode >> 9) & 7);
36186 adr = AREG((Opcode >> 0) & 7) - 2;
36187 AREG((Opcode >> 0) & 7) = adr;
36189 READ_WORD_F(adr, dst)
36191 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
36192 flag_N = flag_X = flag_C = res >> 8;
36193 flag_NotZ = res & 0xFFFF;
36194 WRITE_WORD_F(adr, res)
36205 src = DREGu16((Opcode >> 9) & 7);
36207 adr += AREG((Opcode >> 0) & 7);
36209 READ_WORD_F(adr, dst)
36211 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
36212 flag_N = flag_X = flag_C = res >> 8;
36213 flag_NotZ = res & 0xFFFF;
36214 WRITE_WORD_F(adr, res)
36225 src = DREGu16((Opcode >> 9) & 7);
36226 adr = AREG((Opcode >> 0) & 7);
36229 READ_WORD_F(adr, dst)
36231 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
36232 flag_N = flag_X = flag_C = res >> 8;
36233 flag_NotZ = res & 0xFFFF;
36234 WRITE_WORD_F(adr, res)
36245 src = DREGu16((Opcode >> 9) & 7);
36248 READ_WORD_F(adr, dst)
36250 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
36251 flag_N = flag_X = flag_C = res >> 8;
36252 flag_NotZ = res & 0xFFFF;
36253 WRITE_WORD_F(adr, res)
36264 src = DREGu16((Opcode >> 9) & 7);
36267 READ_WORD_F(adr, dst)
36269 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
36270 flag_N = flag_X = flag_C = res >> 8;
36271 flag_NotZ = res & 0xFFFF;
36272 WRITE_WORD_F(adr, res)
36283 src = DREGu16((Opcode >> 9) & 7);
36287 READ_WORD_F(adr, dst)
36289 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
36290 flag_N = flag_X = flag_C = res >> 8;
36291 flag_NotZ = res & 0xFFFF;
36292 WRITE_WORD_F(adr, res)
36303 src = DREGu16((Opcode >> 9) & 7);
36307 READ_WORD_F(adr, dst)
36309 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
36310 flag_N = flag_X = flag_C = res >> 8;
36311 flag_NotZ = res & 0xFFFF;
36312 WRITE_WORD_F(adr, res)
36323 src = DREGu32((Opcode >> 9) & 7);
36324 adr = AREG((Opcode >> 0) & 7);
36326 READ_LONG_F(adr, dst)
36329 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
36330 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
36331 flag_N = res >> 24;
36332 WRITE_LONG_F(adr, res)
36343 src = DREGu32((Opcode >> 9) & 7);
36344 adr = AREG((Opcode >> 0) & 7);
36345 AREG((Opcode >> 0) & 7) += 4;
36347 READ_LONG_F(adr, dst)
36350 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
36351 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
36352 flag_N = res >> 24;
36353 WRITE_LONG_F(adr, res)
36364 src = DREGu32((Opcode >> 9) & 7);
36365 adr = AREG((Opcode >> 0) & 7) - 4;
36366 AREG((Opcode >> 0) & 7) = adr;
36368 READ_LONG_F(adr, dst)
36371 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
36372 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
36373 flag_N = res >> 24;
36374 WRITE_LONG_F(adr, res)
36385 src = DREGu32((Opcode >> 9) & 7);
36387 adr += AREG((Opcode >> 0) & 7);
36389 READ_LONG_F(adr, dst)
36392 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
36393 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
36394 flag_N = res >> 24;
36395 WRITE_LONG_F(adr, res)
36406 src = DREGu32((Opcode >> 9) & 7);
36407 adr = AREG((Opcode >> 0) & 7);
36410 READ_LONG_F(adr, dst)
36413 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
36414 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
36415 flag_N = res >> 24;
36416 WRITE_LONG_F(adr, res)
36427 src = DREGu32((Opcode >> 9) & 7);
36430 READ_LONG_F(adr, dst)
36433 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
36434 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
36435 flag_N = res >> 24;
36436 WRITE_LONG_F(adr, res)
36447 src = DREGu32((Opcode >> 9) & 7);
36450 READ_LONG_F(adr, dst)
36453 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
36454 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
36455 flag_N = res >> 24;
36456 WRITE_LONG_F(adr, res)
36467 src = DREGu32((Opcode >> 9) & 7);
36471 READ_LONG_F(adr, dst)
36474 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
36475 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
36476 flag_N = res >> 24;
36477 WRITE_LONG_F(adr, res)
36488 src = DREGu32((Opcode >> 9) & 7);
36492 READ_LONG_F(adr, dst)
36495 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
36496 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
36497 flag_N = res >> 24;
36498 WRITE_LONG_F(adr, res)
36509 src = DREGu8((Opcode >> 0) & 7);
36510 dst = DREGu8((Opcode >> 9) & 7);
36511 res = dst + src + ((flag_X >> 8) & 1);
36512 flag_N = flag_X = flag_C = res;
36513 flag_V = (src ^ res) & (dst ^ res);
36514 flag_NotZ |= res & 0xFF;
36515 DREGu8((Opcode >> 9) & 7) = res;
36525 src = DREGu16((Opcode >> 0) & 7);
36526 dst = DREGu16((Opcode >> 9) & 7);
36527 res = dst + src + ((flag_X >> 8) & 1);
36528 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
36529 flag_N = flag_X = flag_C = res >> 8;
36530 flag_NotZ |= res & 0xFFFF;
36531 DREGu16((Opcode >> 9) & 7) = res;
36541 src = DREGu32((Opcode >> 0) & 7);
36542 dst = DREGu32((Opcode >> 9) & 7);
36543 res = dst + src + ((flag_X >> 8) & 1);
36545 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
36546 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
36547 flag_N = res >> 24;
36548 DREGu32((Opcode >> 9) & 7) = res;
36558 adr = AREG((Opcode >> 0) & 7) - 1;
36559 AREG((Opcode >> 0) & 7) = adr;
36561 READ_BYTE_F(adr, src)
36562 adr = AREG((Opcode >> 9) & 7) - 1;
36563 AREG((Opcode >> 9) & 7) = adr;
36564 READ_BYTE_F(adr, dst)
36565 res = dst + src + ((flag_X >> 8) & 1);
36566 flag_N = flag_X = flag_C = res;
36567 flag_V = (src ^ res) & (dst ^ res);
36568 flag_NotZ |= res & 0xFF;
36569 WRITE_BYTE_F(adr, res)
36580 adr = AREG((Opcode >> 0) & 7) - 2;
36581 AREG((Opcode >> 0) & 7) = adr;
36583 READ_WORD_F(adr, src)
36584 adr = AREG((Opcode >> 9) & 7) - 2;
36585 AREG((Opcode >> 9) & 7) = adr;
36586 READ_WORD_F(adr, dst)
36587 res = dst + src + ((flag_X >> 8) & 1);
36588 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
36589 flag_N = flag_X = flag_C = res >> 8;
36590 flag_NotZ |= res & 0xFFFF;
36591 WRITE_WORD_F(adr, res)
36602 adr = AREG((Opcode >> 0) & 7) - 4;
36603 AREG((Opcode >> 0) & 7) = adr;
36605 READ_LONG_F(adr, src)
36606 adr = AREG((Opcode >> 9) & 7) - 4;
36607 AREG((Opcode >> 9) & 7) = adr;
36608 READ_LONG_F(adr, dst)
36609 res = dst + src + ((flag_X >> 8) & 1);
36611 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
36612 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
36613 flag_N = res >> 24;
36614 WRITE_LONG_F(adr, res)
36628 READ_BYTE_F(adr, src)
36629 adr = AREG((Opcode >> 9) & 7) - 1;
36630 AREG((Opcode >> 9) & 7) = adr;
36631 READ_BYTE_F(adr, dst)
36632 res = dst + src + ((flag_X >> 8) & 1);
36633 flag_N = flag_X = flag_C = res;
36634 flag_V = (src ^ res) & (dst ^ res);
36635 flag_NotZ |= res & 0xFF;
36636 WRITE_BYTE_F(adr, res)
36650 READ_WORD_F(adr, src)
36651 adr = AREG((Opcode >> 9) & 7) - 2;
36652 AREG((Opcode >> 9) & 7) = adr;
36653 READ_WORD_F(adr, dst)
36654 res = dst + src + ((flag_X >> 8) & 1);
36655 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
36656 flag_N = flag_X = flag_C = res >> 8;
36657 flag_NotZ |= res & 0xFFFF;
36658 WRITE_WORD_F(adr, res)
36672 READ_LONG_F(adr, src)
36673 adr = AREG((Opcode >> 9) & 7) - 4;
36674 AREG((Opcode >> 9) & 7) = adr;
36675 READ_LONG_F(adr, dst)
36676 res = dst + src + ((flag_X >> 8) & 1);
36678 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
36679 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
36680 flag_N = res >> 24;
36681 WRITE_LONG_F(adr, res)
36692 adr = AREG((Opcode >> 0) & 7) - 1;
36693 AREG((Opcode >> 0) & 7) = adr;
36695 READ_BYTE_F(adr, src)
36698 READ_BYTE_F(adr, dst)
36699 res = dst + src + ((flag_X >> 8) & 1);
36700 flag_N = flag_X = flag_C = res;
36701 flag_V = (src ^ res) & (dst ^ res);
36702 flag_NotZ |= res & 0xFF;
36703 WRITE_BYTE_F(adr, res)
36714 adr = AREG((Opcode >> 0) & 7) - 2;
36715 AREG((Opcode >> 0) & 7) = adr;
36717 READ_WORD_F(adr, src)
36720 READ_WORD_F(adr, dst)
36721 res = dst + src + ((flag_X >> 8) & 1);
36722 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
36723 flag_N = flag_X = flag_C = res >> 8;
36724 flag_NotZ |= res & 0xFFFF;
36725 WRITE_WORD_F(adr, res)
36736 adr = AREG((Opcode >> 0) & 7) - 4;
36737 AREG((Opcode >> 0) & 7) = adr;
36739 READ_LONG_F(adr, src)
36742 READ_LONG_F(adr, dst)
36743 res = dst + src + ((flag_X >> 8) & 1);
36745 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
36746 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
36747 flag_N = res >> 24;
36748 WRITE_LONG_F(adr, res)
36762 READ_BYTE_F(adr, src)
36765 READ_BYTE_F(adr, dst)
36766 res = dst + src + ((flag_X >> 8) & 1);
36767 flag_N = flag_X = flag_C = res;
36768 flag_V = (src ^ res) & (dst ^ res);
36769 flag_NotZ |= res & 0xFF;
36770 WRITE_BYTE_F(adr, res)
36784 READ_WORD_F(adr, src)
36787 READ_WORD_F(adr, dst)
36788 res = dst + src + ((flag_X >> 8) & 1);
36789 flag_V = ((src ^ res) & (dst ^ res)) >> 8;
36790 flag_N = flag_X = flag_C = res >> 8;
36791 flag_NotZ |= res & 0xFFFF;
36792 WRITE_WORD_F(adr, res)
36806 READ_LONG_F(adr, src)
36809 READ_LONG_F(adr, dst)
36810 res = dst + src + ((flag_X >> 8) & 1);
36812 flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23;
36813 flag_V = ((src ^ res) & (dst ^ res)) >> 24;
36814 flag_N = res >> 24;
36815 WRITE_LONG_F(adr, res)
36826 src = (s32)DREGs16((Opcode >> 0) & 7);
36827 dst = AREGu32((Opcode >> 9) & 7);
36829 AREG((Opcode >> 9) & 7) = res;
36839 src = (s32)AREGs16((Opcode >> 0) & 7);
36840 dst = AREGu32((Opcode >> 9) & 7);
36842 AREG((Opcode >> 9) & 7) = res;
36852 adr = AREG((Opcode >> 0) & 7);
36854 READSX_WORD_F(adr, src)
36855 dst = AREGu32((Opcode >> 9) & 7);
36857 AREG((Opcode >> 9) & 7) = res;
36859 #ifdef USE_CYCLONE_TIMING
36872 adr = AREG((Opcode >> 0) & 7);
36873 AREG((Opcode >> 0) & 7) += 2;
36875 READSX_WORD_F(adr, src)
36876 dst = AREGu32((Opcode >> 9) & 7);
36878 AREG((Opcode >> 9) & 7) = res;
36880 #ifdef USE_CYCLONE_TIMING
36893 adr = AREG((Opcode >> 0) & 7) - 2;
36894 AREG((Opcode >> 0) & 7) = adr;
36896 READSX_WORD_F(adr, src)
36897 dst = AREGu32((Opcode >> 9) & 7);
36899 AREG((Opcode >> 9) & 7) = res;
36901 #ifdef USE_CYCLONE_TIMING
36915 adr += AREG((Opcode >> 0) & 7);
36917 READSX_WORD_F(adr, src)
36918 dst = AREGu32((Opcode >> 9) & 7);
36920 AREG((Opcode >> 9) & 7) = res;
36922 #ifdef USE_CYCLONE_TIMING
36935 adr = AREG((Opcode >> 0) & 7);
36938 READSX_WORD_F(adr, src)
36939 dst = AREGu32((Opcode >> 9) & 7);
36941 AREG((Opcode >> 9) & 7) = res;
36943 #ifdef USE_CYCLONE_TIMING
36958 READSX_WORD_F(adr, src)
36959 dst = AREGu32((Opcode >> 9) & 7);
36961 AREG((Opcode >> 9) & 7) = res;
36963 #ifdef USE_CYCLONE_TIMING
36978 READSX_WORD_F(adr, src)
36979 dst = AREGu32((Opcode >> 9) & 7);
36981 AREG((Opcode >> 9) & 7) = res;
36983 #ifdef USE_CYCLONE_TIMING
36996 adr = GET_SWORD + GET_PC;
36999 READSX_WORD_F(adr, src)
37000 dst = AREGu32((Opcode >> 9) & 7);
37002 AREG((Opcode >> 9) & 7) = res;
37004 #ifdef USE_CYCLONE_TIMING
37020 READSX_WORD_F(adr, src)
37021 dst = AREGu32((Opcode >> 9) & 7);
37023 AREG((Opcode >> 9) & 7) = res;
37025 #ifdef USE_CYCLONE_TIMING
37039 dst = AREGu32((Opcode >> 9) & 7);
37041 AREG((Opcode >> 9) & 7) = res;
37054 READSX_WORD_F(adr, src)
37055 dst = AREGu32((Opcode >> 9) & 7);
37057 AREG((Opcode >> 9) & 7) = res;
37059 #ifdef USE_CYCLONE_TIMING
37075 READSX_WORD_F(adr, src)
37076 dst = AREGu32((Opcode >> 9) & 7);
37078 AREG((Opcode >> 9) & 7) = res;
37080 #ifdef USE_CYCLONE_TIMING
37093 src = (s32)DREGs32((Opcode >> 0) & 7);
37094 dst = AREGu32((Opcode >> 9) & 7);
37096 AREG((Opcode >> 9) & 7) = res;
37097 #ifdef USE_CYCLONE_TIMING
37110 src = (s32)AREGs32((Opcode >> 0) & 7);
37111 dst = AREGu32((Opcode >> 9) & 7);
37113 AREG((Opcode >> 9) & 7) = res;
37114 #ifdef USE_CYCLONE_TIMING
37127 adr = AREG((Opcode >> 0) & 7);
37129 READSX_LONG_F(adr, src)
37130 dst = AREGu32((Opcode >> 9) & 7);
37132 AREG((Opcode >> 9) & 7) = res;
37143 adr = AREG((Opcode >> 0) & 7);
37144 AREG((Opcode >> 0) & 7) += 4;
37146 READSX_LONG_F(adr, src)
37147 dst = AREGu32((Opcode >> 9) & 7);
37149 AREG((Opcode >> 9) & 7) = res;
37160 adr = AREG((Opcode >> 0) & 7) - 4;
37161 AREG((Opcode >> 0) & 7) = adr;
37163 READSX_LONG_F(adr, src)
37164 dst = AREGu32((Opcode >> 9) & 7);
37166 AREG((Opcode >> 9) & 7) = res;
37178 adr += AREG((Opcode >> 0) & 7);
37180 READSX_LONG_F(adr, src)
37181 dst = AREGu32((Opcode >> 9) & 7);
37183 AREG((Opcode >> 9) & 7) = res;
37194 adr = AREG((Opcode >> 0) & 7);
37197 READSX_LONG_F(adr, src)
37198 dst = AREGu32((Opcode >> 9) & 7);
37200 AREG((Opcode >> 9) & 7) = res;
37213 READSX_LONG_F(adr, src)
37214 dst = AREGu32((Opcode >> 9) & 7);
37216 AREG((Opcode >> 9) & 7) = res;
37229 READSX_LONG_F(adr, src)
37230 dst = AREGu32((Opcode >> 9) & 7);
37232 AREG((Opcode >> 9) & 7) = res;
37243 adr = GET_SWORD + GET_PC;
37246 READSX_LONG_F(adr, src)
37247 dst = AREGu32((Opcode >> 9) & 7);
37249 AREG((Opcode >> 9) & 7) = res;
37263 READSX_LONG_F(adr, src)
37264 dst = AREGu32((Opcode >> 9) & 7);
37266 AREG((Opcode >> 9) & 7) = res;
37278 dst = AREGu32((Opcode >> 9) & 7);
37280 AREG((Opcode >> 9) & 7) = res;
37281 #ifdef USE_CYCLONE_TIMING
37297 READSX_LONG_F(adr, src)
37298 dst = AREGu32((Opcode >> 9) & 7);
37300 AREG((Opcode >> 9) & 7) = res;
37314 READSX_LONG_F(adr, src)
37315 dst = AREGu32((Opcode >> 9) & 7);
37317 AREG((Opcode >> 9) & 7) = res;
37330 sft = (((Opcode >> 9) - 1) & 7) + 1;
37331 ctx->io_cycle_counter -= sft * 2;
37332 src = (s32)DREGs8((Opcode >> 0) & 7);
37334 flag_X = flag_C = src << ((M68K_SR_C_SFT + 1) - sft);
37335 res = ((s32)src) >> sft;
37338 DREGu8((Opcode >> 0) & 7) = res;
37350 sft = (((Opcode >> 9) - 1) & 7) + 1;
37351 ctx->io_cycle_counter -= sft * 2;
37352 src = (s32)DREGs16((Opcode >> 0) & 7);
37354 flag_X = flag_C = src << ((M68K_SR_C_SFT + 1) - sft);
37355 res = ((s32)src) >> sft;
37358 DREGu16((Opcode >> 0) & 7) = res;
37370 sft = (((Opcode >> 9) - 1) & 7) + 1;
37371 ctx->io_cycle_counter -= sft * 2;
37372 src = (s32)DREGs32((Opcode >> 0) & 7);
37374 flag_X = flag_C = src << ((M68K_SR_C_SFT + 1) - sft);
37375 res = ((s32)src) >> sft;
37376 flag_N = res >> 24;
37378 DREGu32((Opcode >> 0) & 7) = res;
37390 sft = (((Opcode >> 9) - 1) & 7) + 1;
37391 ctx->io_cycle_counter -= sft * 2;
37392 src = DREGu8((Opcode >> 0) & 7);
37393 flag_N = flag_V = 0;
37394 flag_X = flag_C = src << ((M68K_SR_C_SFT + 1) - sft);
37397 DREGu8((Opcode >> 0) & 7) = res;
37409 sft = (((Opcode >> 9) - 1) & 7) + 1;
37410 ctx->io_cycle_counter -= sft * 2;
37411 src = DREGu16((Opcode >> 0) & 7);
37412 flag_N = flag_V = 0;
37413 flag_X = flag_C = src << ((M68K_SR_C_SFT + 1) - sft);
37416 DREGu16((Opcode >> 0) & 7) = res;
37428 sft = (((Opcode >> 9) - 1) & 7) + 1;
37429 ctx->io_cycle_counter -= sft * 2;
37430 src = DREGu32((Opcode >> 0) & 7);
37431 flag_N = flag_V = 0;
37432 flag_X = flag_C = src << ((M68K_SR_C_SFT + 1) - sft);
37435 DREGu32((Opcode >> 0) & 7) = res;
37447 sft = (((Opcode >> 9) - 1) & 7) + 1;
37448 ctx->io_cycle_counter -= sft * 2;
37449 src = DREGu8((Opcode >> 0) & 7);
37450 src |= (flag_X & M68K_SR_X) << 0;
37451 res = (src >> sft) | (src << (9 - sft));
37452 flag_X = flag_C = res >> 0;
37455 flag_NotZ = res & 0x000000FF;
37456 DREGu8((Opcode >> 0) & 7) = res;
37468 sft = (((Opcode >> 9) - 1) & 7) + 1;
37469 ctx->io_cycle_counter -= sft * 2;
37470 src = DREGu16((Opcode >> 0) & 7);
37471 src |= (flag_X & M68K_SR_X) << 8;
37472 res = (src >> sft) | (src << (17 - sft));
37473 flag_X = flag_C = res >> 8;
37476 flag_NotZ = res & 0x0000FFFF;
37477 DREGu16((Opcode >> 0) & 7) = res;
37489 sft = (((Opcode >> 9) - 1) & 7) + 1;
37490 ctx->io_cycle_counter -= sft * 2;
37491 src = DREGu32((Opcode >> 0) & 7);
37492 flag_C = src << ((M68K_SR_C_SFT + 1) - sft);
37493 if (sft == 1) res = (src >> 1) | ((flag_X & M68K_SR_X) << (32 - (M68K_SR_X_SFT + 1)));
37494 else res = (src >> sft) | (src << (33 - sft)) | ((flag_X & M68K_SR_X) << (32 - (M68K_SR_X_SFT + sft)));
37497 flag_N = res >> 24;
37499 DREGu32((Opcode >> 0) & 7) = res;
37511 sft = (((Opcode >> 9) - 1) & 7) + 1;
37512 ctx->io_cycle_counter -= sft * 2;
37513 src = DREGu8((Opcode >> 0) & 7);
37515 flag_C = src << ((M68K_SR_C_SFT + 1) - sft);
37516 res = (src >> sft) | (src << (8 - sft));
37518 flag_NotZ = res & 0x000000FF;
37519 DREGu8((Opcode >> 0) & 7) = res;
37531 sft = (((Opcode >> 9) - 1) & 7) + 1;
37532 ctx->io_cycle_counter -= sft * 2;
37533 src = DREGu16((Opcode >> 0) & 7);
37535 flag_C = src << ((M68K_SR_C_SFT + 1) - sft);
37536 res = (src >> sft) | (src << (16 - sft));
37538 flag_NotZ = res & 0x0000FFFF;
37539 DREGu16((Opcode >> 0) & 7) = res;
37551 sft = (((Opcode >> 9) - 1) & 7) + 1;
37552 ctx->io_cycle_counter -= sft * 2;
37553 src = DREGu32((Opcode >> 0) & 7);
37555 flag_C = src << ((M68K_SR_C_SFT + 1) - sft);
37556 res = (src >> sft) | (src << (32 - sft));
37557 flag_N = res >> 24;
37559 DREGu32((Opcode >> 0) & 7) = res;
37571 sft = (((Opcode >> 9) - 1) & 7) + 1;
37572 ctx->io_cycle_counter -= sft * 2;
37573 src = DREGu8((Opcode >> 0) & 7);
37576 flag_X = flag_C = src << (0 + sft);
37579 flag_NotZ = res & 0x000000FF;
37580 DREGu8((Opcode >> 0) & 7) = res;
37582 if ((sft > 7) && (src)) flag_V = M68K_SR_V;
37585 u32 msk = (((s32)0x80000000) >> (sft + 24)) & 0x000000FF;
37587 if ((src) && (src != msk)) flag_V = M68K_SR_V;
37592 if (src) flag_V = M68K_SR_V;
37594 flag_X = flag_C = src << M68K_SR_C_SFT;
37596 DREGu8((Opcode >> 0) & 7) = res;
37610 sft = (((Opcode >> 9) - 1) & 7) + 1;
37611 ctx->io_cycle_counter -= sft * 2;
37612 src = DREGu16((Opcode >> 0) & 7);
37613 flag_X = flag_C = src >> (8 - sft);
37616 flag_NotZ = res & 0x0000FFFF;
37617 DREGu16((Opcode >> 0) & 7) = res;
37620 u32 msk = (((s32)0x80000000) >> (sft + 16)) & 0x0000FFFF;
37622 if ((src) && (src != msk)) flag_V = M68K_SR_V;
37635 sft = (((Opcode >> 9) - 1) & 7) + 1;
37636 ctx->io_cycle_counter -= sft * 2;
37637 src = DREGu32((Opcode >> 0) & 7);
37638 flag_X = flag_C = src >> (24 - sft);
37640 flag_N = res >> 24;
37641 flag_NotZ = res & 0xFFFFFFFF;
37642 DREGu32((Opcode >> 0) & 7) = res;
37645 u32 msk = (((s32)0x80000000) >> (sft + 0)) & 0xFFFFFFFF;
37647 if ((src) && (src != msk)) flag_V = M68K_SR_V;
37660 sft = (((Opcode >> 9) - 1) & 7) + 1;
37661 ctx->io_cycle_counter -= sft * 2;
37662 src = DREGu8((Opcode >> 0) & 7);
37664 flag_X = flag_C = src << (0 + sft);
37667 flag_NotZ = res & 0x000000FF;
37668 DREGu8((Opcode >> 0) & 7) = res;
37680 sft = (((Opcode >> 9) - 1) & 7) + 1;
37681 ctx->io_cycle_counter -= sft * 2;
37682 src = DREGu16((Opcode >> 0) & 7);
37684 flag_X = flag_C = src >> (8 - sft);
37687 flag_NotZ = res & 0x0000FFFF;
37688 DREGu16((Opcode >> 0) & 7) = res;
37700 sft = (((Opcode >> 9) - 1) & 7) + 1;
37701 ctx->io_cycle_counter -= sft * 2;
37702 src = DREGu32((Opcode >> 0) & 7);
37704 flag_X = flag_C = src >> (24 - sft);
37706 flag_N = res >> 24;
37707 flag_NotZ = res & 0xFFFFFFFF;
37708 DREGu32((Opcode >> 0) & 7) = res;
37720 sft = (((Opcode >> 9) - 1) & 7) + 1;
37721 ctx->io_cycle_counter -= sft * 2;
37722 src = DREGu8((Opcode >> 0) & 7);
37723 src |= (flag_X & M68K_SR_X) << 0;
37724 res = (src << sft) | (src >> (9 - sft));
37725 flag_X = flag_C = res >> 0;
37728 flag_NotZ = res & 0x000000FF;
37729 DREGu8((Opcode >> 0) & 7) = res;
37741 sft = (((Opcode >> 9) - 1) & 7) + 1;
37742 ctx->io_cycle_counter -= sft * 2;
37743 src = DREGu16((Opcode >> 0) & 7);
37744 src |= (flag_X & M68K_SR_X) << 8;
37745 res = (src << sft) | (src >> (17 - sft));
37746 flag_X = flag_C = res >> 8;
37749 flag_NotZ = res & 0x0000FFFF;
37750 DREGu16((Opcode >> 0) & 7) = res;
37762 sft = (((Opcode >> 9) - 1) & 7) + 1;
37763 ctx->io_cycle_counter -= sft * 2;
37764 src = DREGu32((Opcode >> 0) & 7);
37765 flag_C = src >> ((32 - M68K_SR_C_SFT) - sft);
37766 if (sft == 1) res = (src << 1) | ((flag_X & M68K_SR_X) >> ((M68K_SR_X_SFT + 1) - 1));
37767 else res = (src << sft) | (src >> (33 - sft)) | ((flag_X & M68K_SR_X) >> ((M68K_SR_X_SFT + 1) - sft));
37770 flag_N = res >> 24;
37772 DREGu32((Opcode >> 0) & 7) = res;
37784 sft = (((Opcode >> 9) - 1) & 7) + 1;
37785 ctx->io_cycle_counter -= sft * 2;
37786 src = DREGu8((Opcode >> 0) & 7);
37788 flag_C = src << (0 + sft);
37789 res = (src << sft) | (src >> (8 - sft));
37791 flag_NotZ = res & 0x000000FF;
37792 DREGu8((Opcode >> 0) & 7) = res;
37804 sft = (((Opcode >> 9) - 1) & 7) + 1;
37805 ctx->io_cycle_counter -= sft * 2;
37806 src = DREGu16((Opcode >> 0) & 7);
37808 flag_C = src >> (8 - sft);
37809 res = (src << sft) | (src >> (16 - sft));
37811 flag_NotZ = res & 0x0000FFFF;
37812 DREGu16((Opcode >> 0) & 7) = res;
37824 sft = (((Opcode >> 9) - 1) & 7) + 1;
37825 ctx->io_cycle_counter -= sft * 2;
37826 src = DREGu32((Opcode >> 0) & 7);
37828 flag_C = src >> (24 - sft);
37829 res = (src << sft) | (src >> (32 - sft));
37830 flag_N = res >> 24;
37832 DREGu32((Opcode >> 0) & 7) = res;
37844 sft = DREG((Opcode >> 9) & 7) & 0x3F;
37845 src = (s32)DREGs8((Opcode >> 0) & 7);
37848 ctx->io_cycle_counter -= sft * 2;
37852 flag_X = flag_C = src << ((M68K_SR_C_SFT + 1) - sft);
37853 res = ((s32)src) >> sft;
37856 DREGu8((Opcode >> 0) & 7) = res;
37860 if (src & (1 << 7))
37862 flag_N = M68K_SR_N;
37865 flag_C = M68K_SR_C;
37866 flag_X = M68K_SR_X;
37868 DREGu8((Opcode >> 0) & 7) = res;
37878 DREGu8((Opcode >> 0) & 7) = res;
37897 sft = DREG((Opcode >> 9) & 7) & 0x3F;
37898 src = (s32)DREGs16((Opcode >> 0) & 7);
37901 ctx->io_cycle_counter -= sft * 2;
37905 flag_X = flag_C = (src >> (sft - 1)) << M68K_SR_C_SFT;
37906 res = ((s32)src) >> sft;
37909 DREGu16((Opcode >> 0) & 7) = res;
37913 if (src & (1 << 15))
37915 flag_N = M68K_SR_N;
37918 flag_C = M68K_SR_C;
37919 flag_X = M68K_SR_X;
37921 DREGu16((Opcode >> 0) & 7) = res;
37931 DREGu16((Opcode >> 0) & 7) = res;
37945 #ifdef USE_CYCLONE_TIMING
37955 sft = DREG((Opcode >> 9) & 7) & 0x3F;
37956 src = (s32)DREGs32((Opcode >> 0) & 7);
37959 ctx->io_cycle_counter -= sft * 2;
37963 flag_X = flag_C = (src >> (sft - 1)) << M68K_SR_C_SFT;
37964 res = ((s32)src) >> sft;
37965 flag_N = res >> 24;
37967 DREGu32((Opcode >> 0) & 7) = res;
37971 if (src & (1 << 31))
37973 flag_N = M68K_SR_N;
37976 flag_C = M68K_SR_C;
37977 flag_X = M68K_SR_X;
37979 DREGu32((Opcode >> 0) & 7) = res;
37989 DREGu32((Opcode >> 0) & 7) = res;
37995 flag_N = src >> 24;
38009 sft = DREG((Opcode >> 9) & 7) & 0x3F;
38010 src = DREGu8((Opcode >> 0) & 7);
38013 ctx->io_cycle_counter -= sft * 2;
38016 flag_N = flag_V = 0;
38017 flag_X = flag_C = src << ((M68K_SR_C_SFT + 1) - sft);
38020 DREGu8((Opcode >> 0) & 7) = res;
38024 flag_X = flag_C = 0;
38029 DREGu8((Opcode >> 0) & 7) = res;
38048 sft = DREG((Opcode >> 9) & 7) & 0x3F;
38049 src = DREGu16((Opcode >> 0) & 7);
38052 ctx->io_cycle_counter -= sft * 2;
38055 flag_N = flag_V = 0;
38056 flag_X = flag_C = (src >> (sft - 1)) << M68K_SR_C_SFT;
38059 DREGu16((Opcode >> 0) & 7) = res;
38063 flag_X = flag_C = 0;
38068 DREGu16((Opcode >> 0) & 7) = res;
38082 #ifdef USE_CYCLONE_TIMING
38092 sft = DREG((Opcode >> 9) & 7) & 0x3F;
38093 src = DREGu32((Opcode >> 0) & 7);
38096 ctx->io_cycle_counter -= sft * 2;
38099 flag_N = flag_V = 0;
38100 flag_X = flag_C = (src >> (sft - 1)) << M68K_SR_C_SFT;
38103 DREGu32((Opcode >> 0) & 7) = res;
38107 if (sft == 32) flag_C = src >> (31 - M68K_SR_C_SFT);
38114 DREGu32((Opcode >> 0) & 7) = res;
38120 flag_N = src >> 24;
38134 sft = DREG((Opcode >> 9) & 7) & 0x3F;
38135 src = DREGu8((Opcode >> 0) & 7);
38138 ctx->io_cycle_counter -= sft * 2;
38141 src |= (flag_X & M68K_SR_X) << 0;
38142 res = (src >> sft) | (src << (9 - sft));
38143 flag_X = flag_C = res >> 0;
38146 flag_NotZ = res & 0x000000FF;
38147 DREGu8((Opcode >> 0) & 7) = res;
38166 sft = DREG((Opcode >> 9) & 7) & 0x3F;
38167 src = DREGu16((Opcode >> 0) & 7);
38170 ctx->io_cycle_counter -= sft * 2;
38173 src |= (flag_X & M68K_SR_X) << 8;
38174 res = (src >> sft) | (src << (17 - sft));
38175 flag_X = flag_C = res >> 8;
38178 flag_NotZ = res & 0x0000FFFF;
38179 DREGu16((Opcode >> 0) & 7) = res;
38193 #ifdef USE_CYCLONE_TIMING
38203 sft = DREG((Opcode >> 9) & 7) & 0x3F;
38204 src = DREGu32((Opcode >> 0) & 7);
38207 ctx->io_cycle_counter -= sft * 2;
38212 if (sft == 1) res = (src >> 1) | ((flag_X & M68K_SR_X) << (32 - (M68K_SR_X_SFT + 1)));
38213 else res = (src >> sft) | (src << (33 - sft)) | (((flag_X & M68K_SR_X) << (32 - (M68K_SR_X_SFT + 1))) >> (sft - 1));
38214 flag_X = (src >> (sft - 1)) << M68K_SR_X_SFT;
38219 flag_N = res >> 24;
38221 DREGu32((Opcode >> 0) & 7) = res;
38227 flag_N = src >> 24;
38241 sft = DREG((Opcode >> 9) & 7) & 0x3F;
38242 src = DREGu8((Opcode >> 0) & 7);
38245 ctx->io_cycle_counter -= sft * 2;
38248 flag_C = src << (M68K_SR_C_SFT - ((sft - 1) & 7));
38249 res = (src >> sft) | (src << (8 - sft));
38252 flag_NotZ = res & 0x000000FF;
38253 DREGu8((Opcode >> 0) & 7) = res;
38272 sft = DREG((Opcode >> 9) & 7) & 0x3F;
38273 src = DREGu16((Opcode >> 0) & 7);
38276 ctx->io_cycle_counter -= sft * 2;
38279 flag_C = (src >> ((sft - 1) & 15)) << M68K_SR_C_SFT;
38280 res = (src >> sft) | (src << (16 - sft));
38283 flag_NotZ = res & 0x0000FFFF;
38284 DREGu16((Opcode >> 0) & 7) = res;
38298 #ifdef USE_CYCLONE_TIMING
38308 sft = DREG((Opcode >> 9) & 7) & 0x3F;
38309 src = DREGu32((Opcode >> 0) & 7);
38312 ctx->io_cycle_counter -= sft * 2;
38315 flag_C = (src >> ((sft - 1) & 31)) << M68K_SR_C_SFT;
38316 res = (src >> sft) | (src << (32 - sft));
38318 flag_N = res >> 24;
38320 DREGu32((Opcode >> 0) & 7) = res;
38326 flag_N = src >> 24;
38340 sft = DREG((Opcode >> 9) & 7) & 0x3F;
38341 src = DREGu8((Opcode >> 0) & 7);
38344 ctx->io_cycle_counter -= sft * 2;
38347 flag_X = flag_C = (src << sft) >> 0;
38348 res = (src << sft) & 0x000000FF;
38351 DREGu8((Opcode >> 0) & 7) = res;
38354 u32 msk = (((s32)0x80000000) >> (sft + 24)) & 0x000000FF;
38356 if ((src) && (src != msk)) flag_V = M68K_SR_V;
38361 if (sft == 256) flag_C = src << M68K_SR_C_SFT;
38364 if (src) flag_V = M68K_SR_V;
38367 DREGu8((Opcode >> 0) & 7) = res;
38388 sft = DREG((Opcode >> 9) & 7) & 0x3F;
38389 src = DREGu16((Opcode >> 0) & 7);
38392 ctx->io_cycle_counter -= sft * 2;
38395 flag_X = flag_C = (src << sft) >> 8;
38396 res = (src << sft) & 0x0000FFFF;
38399 DREGu16((Opcode >> 0) & 7) = res;
38402 u32 msk = (((s32)0x80000000) >> (sft + 16)) & 0x0000FFFF;
38404 if ((src) && (src != msk)) flag_V = M68K_SR_V;
38409 if (sft == 65536) flag_C = src << M68K_SR_C_SFT;
38412 if (src) flag_V = M68K_SR_V;
38415 DREGu16((Opcode >> 0) & 7) = res;
38431 #ifdef USE_CYCLONE_TIMING
38441 sft = DREG((Opcode >> 9) & 7) & 0x3F;
38442 src = DREGu32((Opcode >> 0) & 7);
38445 ctx->io_cycle_counter -= sft * 2;
38448 flag_X = flag_C = (src >> (32 - sft)) << M68K_SR_C_SFT;
38450 flag_N = res >> 24;
38452 DREGu32((Opcode >> 0) & 7) = res;
38455 u32 msk = (((s32)0x80000000) >> (sft + 0)) & 0xFFFFFFFF;
38457 if ((src) && (src != msk)) flag_V = M68K_SR_V;
38462 if (sft == 0) flag_C = src << M68K_SR_C_SFT;
38465 if (src) flag_V = M68K_SR_V;
38468 DREGu32((Opcode >> 0) & 7) = res;
38476 flag_N = src >> 24;
38490 sft = DREG((Opcode >> 9) & 7) & 0x3F;
38491 src = DREGu8((Opcode >> 0) & 7);
38494 ctx->io_cycle_counter -= sft * 2;
38497 flag_X = flag_C = (src << sft) >> 0;
38498 res = (src << sft) & 0x000000FF;
38502 DREGu8((Opcode >> 0) & 7) = res;
38506 flag_X = flag_C = 0;
38511 DREGu8((Opcode >> 0) & 7) = res;
38530 sft = DREG((Opcode >> 9) & 7) & 0x3F;
38531 src = DREGu16((Opcode >> 0) & 7);
38534 ctx->io_cycle_counter -= sft * 2;
38537 flag_X = flag_C = (src << sft) >> 8;
38538 res = (src << sft) & 0x0000FFFF;
38542 DREGu16((Opcode >> 0) & 7) = res;
38546 flag_X = flag_C = 0;
38551 DREGu16((Opcode >> 0) & 7) = res;
38565 #ifdef USE_CYCLONE_TIMING
38575 sft = DREG((Opcode >> 9) & 7) & 0x3F;
38576 src = DREGu32((Opcode >> 0) & 7);
38579 ctx->io_cycle_counter -= sft * 2;
38582 flag_X = flag_C = (src >> (32 - sft)) << M68K_SR_C_SFT;
38585 flag_N = res >> 24;
38587 DREGu32((Opcode >> 0) & 7) = res;
38591 if (sft == 32) flag_C = src << M68K_SR_C_SFT;
38598 DREGu32((Opcode >> 0) & 7) = res;
38604 flag_N = src >> 24;
38618 sft = DREG((Opcode >> 9) & 7) & 0x3F;
38619 src = DREGu8((Opcode >> 0) & 7);
38622 ctx->io_cycle_counter -= sft * 2;
38625 src |= (flag_X & M68K_SR_X) << 0;
38626 res = (src << sft) | (src >> (9 - sft));
38627 flag_X = flag_C = res >> 0;
38630 flag_NotZ = res & 0x000000FF;
38631 DREGu8((Opcode >> 0) & 7) = res;
38650 sft = DREG((Opcode >> 9) & 7) & 0x3F;
38651 src = DREGu16((Opcode >> 0) & 7);
38654 ctx->io_cycle_counter -= sft * 2;
38657 src |= (flag_X & M68K_SR_X) << 8;
38658 res = (src << sft) | (src >> (17 - sft));
38659 flag_X = flag_C = res >> 8;
38662 flag_NotZ = res & 0x0000FFFF;
38663 DREGu16((Opcode >> 0) & 7) = res;
38677 #ifdef USE_CYCLONE_TIMING
38687 sft = DREG((Opcode >> 9) & 7) & 0x3F;
38688 src = DREGu32((Opcode >> 0) & 7);
38691 ctx->io_cycle_counter -= sft * 2;
38696 if (sft == 1) res = (src << 1) | ((flag_X >> ((M68K_SR_X_SFT + 1) - 1)) & 1);
38697 else res = (src << sft) | (src >> (33 - sft)) | (((flag_X >> ((M68K_SR_X_SFT + 1) - 1)) & 1) << (sft - 1));
38698 flag_X = (src >> (32 - sft)) << M68K_SR_X_SFT;
38703 flag_N = res >> 24;
38705 DREGu32((Opcode >> 0) & 7) = res;
38711 flag_N = src >> 24;
38725 sft = DREG((Opcode >> 9) & 7) & 0x3F;
38726 src = DREGu8((Opcode >> 0) & 7);
38729 ctx->io_cycle_counter -= sft * 2;
38732 flag_C = (src << sft) >> 0;
38733 res = ((src << sft) | (src >> (8 - sft))) & 0x000000FF;
38737 DREGu8((Opcode >> 0) & 7) = res;
38742 flag_C = src << M68K_SR_C_SFT;
38763 sft = DREG((Opcode >> 9) & 7) & 0x3F;
38764 src = DREGu16((Opcode >> 0) & 7);
38767 ctx->io_cycle_counter -= sft * 2;
38770 flag_C = (src << sft) >> 8;
38771 res = ((src << sft) | (src >> (16 - sft))) & 0x0000FFFF;
38775 DREGu16((Opcode >> 0) & 7) = res;
38780 flag_C = src << M68K_SR_C_SFT;
38796 #ifdef USE_CYCLONE_TIMING
38806 sft = DREG((Opcode >> 9) & 7) & 0x3F;
38807 src = DREGu32((Opcode >> 0) & 7);
38810 ctx->io_cycle_counter -= sft * 2;
38813 flag_C = (src >> (32 - sft)) << M68K_SR_C_SFT;
38814 res = (src << sft) | (src >> (32 - sft));
38816 flag_N = res >> 24;
38818 DREGu32((Opcode >> 0) & 7) = res;
38823 flag_C = src << M68K_SR_C_SFT;
38824 flag_N = src >> 24;
38831 flag_N = src >> 24;
38843 adr = AREG((Opcode >> 0) & 7);
38845 READ_WORD_F(adr, src)
38847 flag_X = flag_C = src << M68K_SR_C_SFT;
38848 res = (src >> 1) | (src & (1 << 15));
38851 WRITE_WORD_F(adr, res)
38862 adr = AREG((Opcode >> 0) & 7);
38863 AREG((Opcode >> 0) & 7) += 2;
38865 READ_WORD_F(adr, src)
38867 flag_X = flag_C = src << M68K_SR_C_SFT;
38868 res = (src >> 1) | (src & (1 << 15));
38871 WRITE_WORD_F(adr, res)
38882 adr = AREG((Opcode >> 0) & 7) - 2;
38883 AREG((Opcode >> 0) & 7) = adr;
38885 READ_WORD_F(adr, src)
38887 flag_X = flag_C = src << M68K_SR_C_SFT;
38888 res = (src >> 1) | (src & (1 << 15));
38891 WRITE_WORD_F(adr, res)
38903 adr += AREG((Opcode >> 0) & 7);
38905 READ_WORD_F(adr, src)
38907 flag_X = flag_C = src << M68K_SR_C_SFT;
38908 res = (src >> 1) | (src & (1 << 15));
38911 WRITE_WORD_F(adr, res)
38922 adr = AREG((Opcode >> 0) & 7);
38925 READ_WORD_F(adr, src)
38927 flag_X = flag_C = src << M68K_SR_C_SFT;
38928 res = (src >> 1) | (src & (1 << 15));
38931 WRITE_WORD_F(adr, res)
38944 READ_WORD_F(adr, src)
38946 flag_X = flag_C = src << M68K_SR_C_SFT;
38947 res = (src >> 1) | (src & (1 << 15));
38950 WRITE_WORD_F(adr, res)
38963 READ_WORD_F(adr, src)
38965 flag_X = flag_C = src << M68K_SR_C_SFT;
38966 res = (src >> 1) | (src & (1 << 15));
38969 WRITE_WORD_F(adr, res)
38983 READ_WORD_F(adr, src)
38985 flag_X = flag_C = src << M68K_SR_C_SFT;
38986 res = (src >> 1) | (src & (1 << 15));
38989 WRITE_WORD_F(adr, res)
39003 READ_WORD_F(adr, src)
39005 flag_X = flag_C = src << M68K_SR_C_SFT;
39006 res = (src >> 1) | (src & (1 << 15));
39009 WRITE_WORD_F(adr, res)
39020 adr = AREG((Opcode >> 0) & 7);
39022 READ_WORD_F(adr, src)
39023 flag_N = flag_V = 0;
39024 flag_X = flag_C = src << M68K_SR_C_SFT;
39027 WRITE_WORD_F(adr, res)
39038 adr = AREG((Opcode >> 0) & 7);
39039 AREG((Opcode >> 0) & 7) += 2;
39041 READ_WORD_F(adr, src)
39042 flag_N = flag_V = 0;
39043 flag_X = flag_C = src << M68K_SR_C_SFT;
39046 WRITE_WORD_F(adr, res)
39057 adr = AREG((Opcode >> 0) & 7) - 2;
39058 AREG((Opcode >> 0) & 7) = adr;
39060 READ_WORD_F(adr, src)
39061 flag_N = flag_V = 0;
39062 flag_X = flag_C = src << M68K_SR_C_SFT;
39065 WRITE_WORD_F(adr, res)
39077 adr += AREG((Opcode >> 0) & 7);
39079 READ_WORD_F(adr, src)
39080 flag_N = flag_V = 0;
39081 flag_X = flag_C = src << M68K_SR_C_SFT;
39084 WRITE_WORD_F(adr, res)
39095 adr = AREG((Opcode >> 0) & 7);
39098 READ_WORD_F(adr, src)
39099 flag_N = flag_V = 0;
39100 flag_X = flag_C = src << M68K_SR_C_SFT;
39103 WRITE_WORD_F(adr, res)
39116 READ_WORD_F(adr, src)
39117 flag_N = flag_V = 0;
39118 flag_X = flag_C = src << M68K_SR_C_SFT;
39121 WRITE_WORD_F(adr, res)
39134 READ_WORD_F(adr, src)
39135 flag_N = flag_V = 0;
39136 flag_X = flag_C = src << M68K_SR_C_SFT;
39139 WRITE_WORD_F(adr, res)
39153 READ_WORD_F(adr, src)
39154 flag_N = flag_V = 0;
39155 flag_X = flag_C = src << M68K_SR_C_SFT;
39158 WRITE_WORD_F(adr, res)
39172 READ_WORD_F(adr, src)
39173 flag_N = flag_V = 0;
39174 flag_X = flag_C = src << M68K_SR_C_SFT;
39177 WRITE_WORD_F(adr, res)
39188 adr = AREG((Opcode >> 0) & 7);
39190 READ_WORD_F(adr, src)
39192 res = (src >> 1) | ((flag_X & M68K_SR_X) << 7);
39193 flag_C = flag_X = src << M68K_SR_C_SFT;
39196 WRITE_WORD_F(adr, res)
39207 adr = AREG((Opcode >> 0) & 7);
39208 AREG((Opcode >> 0) & 7) += 2;
39210 READ_WORD_F(adr, src)
39212 res = (src >> 1) | ((flag_X & M68K_SR_X) << 7);
39213 flag_C = flag_X = src << M68K_SR_C_SFT;
39216 WRITE_WORD_F(adr, res)
39227 adr = AREG((Opcode >> 0) & 7) - 2;
39228 AREG((Opcode >> 0) & 7) = adr;
39230 READ_WORD_F(adr, src)
39232 res = (src >> 1) | ((flag_X & M68K_SR_X) << 7);
39233 flag_C = flag_X = src << M68K_SR_C_SFT;
39236 WRITE_WORD_F(adr, res)
39248 adr += AREG((Opcode >> 0) & 7);
39250 READ_WORD_F(adr, src)
39252 res = (src >> 1) | ((flag_X & M68K_SR_X) << 7);
39253 flag_C = flag_X = src << M68K_SR_C_SFT;
39256 WRITE_WORD_F(adr, res)
39267 adr = AREG((Opcode >> 0) & 7);
39270 READ_WORD_F(adr, src)
39272 res = (src >> 1) | ((flag_X & M68K_SR_X) << 7);
39273 flag_C = flag_X = src << M68K_SR_C_SFT;
39276 WRITE_WORD_F(adr, res)
39289 READ_WORD_F(adr, src)
39291 res = (src >> 1) | ((flag_X & M68K_SR_X) << 7);
39292 flag_C = flag_X = src << M68K_SR_C_SFT;
39295 WRITE_WORD_F(adr, res)
39308 READ_WORD_F(adr, src)
39310 res = (src >> 1) | ((flag_X & M68K_SR_X) << 7);
39311 flag_C = flag_X = src << M68K_SR_C_SFT;
39314 WRITE_WORD_F(adr, res)
39328 READ_WORD_F(adr, src)
39330 res = (src >> 1) | ((flag_X & M68K_SR_X) << 7);
39331 flag_C = flag_X = src << M68K_SR_C_SFT;
39334 WRITE_WORD_F(adr, res)
39348 READ_WORD_F(adr, src)
39350 res = (src >> 1) | ((flag_X & M68K_SR_X) << 7);
39351 flag_C = flag_X = src << M68K_SR_C_SFT;
39354 WRITE_WORD_F(adr, res)
39365 adr = AREG((Opcode >> 0) & 7);
39367 READ_WORD_F(adr, src)
39369 flag_C = src << M68K_SR_C_SFT;
39370 res = (src >> 1) | (src << 15);
39372 flag_NotZ = res & 0x0000FFFF;
39373 WRITE_WORD_F(adr, res)
39384 adr = AREG((Opcode >> 0) & 7);
39385 AREG((Opcode >> 0) & 7) += 2;
39387 READ_WORD_F(adr, src)
39389 flag_C = src << M68K_SR_C_SFT;
39390 res = (src >> 1) | (src << 15);
39392 flag_NotZ = res & 0x0000FFFF;
39393 WRITE_WORD_F(adr, res)
39404 adr = AREG((Opcode >> 0) & 7) - 2;
39405 AREG((Opcode >> 0) & 7) = adr;
39407 READ_WORD_F(adr, src)
39409 flag_C = src << M68K_SR_C_SFT;
39410 res = (src >> 1) | (src << 15);
39412 flag_NotZ = res & 0x0000FFFF;
39413 WRITE_WORD_F(adr, res)
39425 adr += AREG((Opcode >> 0) & 7);
39427 READ_WORD_F(adr, src)
39429 flag_C = src << M68K_SR_C_SFT;
39430 res = (src >> 1) | (src << 15);
39432 flag_NotZ = res & 0x0000FFFF;
39433 WRITE_WORD_F(adr, res)
39444 adr = AREG((Opcode >> 0) & 7);
39447 READ_WORD_F(adr, src)
39449 flag_C = src << M68K_SR_C_SFT;
39450 res = (src >> 1) | (src << 15);
39452 flag_NotZ = res & 0x0000FFFF;
39453 WRITE_WORD_F(adr, res)
39466 READ_WORD_F(adr, src)
39468 flag_C = src << M68K_SR_C_SFT;
39469 res = (src >> 1) | (src << 15);
39471 flag_NotZ = res & 0x0000FFFF;
39472 WRITE_WORD_F(adr, res)
39485 READ_WORD_F(adr, src)
39487 flag_C = src << M68K_SR_C_SFT;
39488 res = (src >> 1) | (src << 15);
39490 flag_NotZ = res & 0x0000FFFF;
39491 WRITE_WORD_F(adr, res)
39505 READ_WORD_F(adr, src)
39507 flag_C = src << M68K_SR_C_SFT;
39508 res = (src >> 1) | (src << 15);
39510 flag_NotZ = res & 0x0000FFFF;
39511 WRITE_WORD_F(adr, res)
39525 READ_WORD_F(adr, src)
39527 flag_C = src << M68K_SR_C_SFT;
39528 res = (src >> 1) | (src << 15);
39530 flag_NotZ = res & 0x0000FFFF;
39531 WRITE_WORD_F(adr, res)
39542 adr = AREG((Opcode >> 0) & 7);
39544 READ_WORD_F(adr, src)
39545 flag_X = flag_C = src >> 7;
39547 flag_V = (src ^ res) >> 8;
39549 flag_NotZ = res & 0x0000FFFF;
39550 WRITE_WORD_F(adr, res)
39561 adr = AREG((Opcode >> 0) & 7);
39562 AREG((Opcode >> 0) & 7) += 2;
39564 READ_WORD_F(adr, src)
39565 flag_X = flag_C = src >> 7;
39567 flag_V = (src ^ res) >> 8;
39569 flag_NotZ = res & 0x0000FFFF;
39570 WRITE_WORD_F(adr, res)
39581 adr = AREG((Opcode >> 0) & 7) - 2;
39582 AREG((Opcode >> 0) & 7) = adr;
39584 READ_WORD_F(adr, src)
39585 flag_X = flag_C = src >> 7;
39587 flag_V = (src ^ res) >> 8;
39589 flag_NotZ = res & 0x0000FFFF;
39590 WRITE_WORD_F(adr, res)
39602 adr += AREG((Opcode >> 0) & 7);
39604 READ_WORD_F(adr, src)
39605 flag_X = flag_C = src >> 7;
39607 flag_V = (src ^ res) >> 8;
39609 flag_NotZ = res & 0x0000FFFF;
39610 WRITE_WORD_F(adr, res)
39621 adr = AREG((Opcode >> 0) & 7);
39624 READ_WORD_F(adr, src)
39625 flag_X = flag_C = src >> 7;
39627 flag_V = (src ^ res) >> 8;
39629 flag_NotZ = res & 0x0000FFFF;
39630 WRITE_WORD_F(adr, res)
39643 READ_WORD_F(adr, src)
39644 flag_X = flag_C = src >> 7;
39646 flag_V = (src ^ res) >> 8;
39648 flag_NotZ = res & 0x0000FFFF;
39649 WRITE_WORD_F(adr, res)
39662 READ_WORD_F(adr, src)
39663 flag_X = flag_C = src >> 7;
39665 flag_V = (src ^ res) >> 8;
39667 flag_NotZ = res & 0x0000FFFF;
39668 WRITE_WORD_F(adr, res)
39682 READ_WORD_F(adr, src)
39683 flag_X = flag_C = src >> 7;
39685 flag_V = (src ^ res) >> 8;
39687 flag_NotZ = res & 0x0000FFFF;
39688 WRITE_WORD_F(adr, res)
39702 READ_WORD_F(adr, src)
39703 flag_X = flag_C = src >> 7;
39705 flag_V = (src ^ res) >> 8;
39707 flag_NotZ = res & 0x0000FFFF;
39708 WRITE_WORD_F(adr, res)
39719 adr = AREG((Opcode >> 0) & 7);
39721 READ_WORD_F(adr, src)
39723 flag_X = flag_C = src >> 7;
39726 flag_NotZ = res & 0x0000FFFF;
39727 WRITE_WORD_F(adr, res)
39738 adr = AREG((Opcode >> 0) & 7);
39739 AREG((Opcode >> 0) & 7) += 2;
39741 READ_WORD_F(adr, src)
39743 flag_X = flag_C = src >> 7;
39746 flag_NotZ = res & 0x0000FFFF;
39747 WRITE_WORD_F(adr, res)
39758 adr = AREG((Opcode >> 0) & 7) - 2;
39759 AREG((Opcode >> 0) & 7) = adr;
39761 READ_WORD_F(adr, src)
39763 flag_X = flag_C = src >> 7;
39766 flag_NotZ = res & 0x0000FFFF;
39767 WRITE_WORD_F(adr, res)
39779 adr += AREG((Opcode >> 0) & 7);
39781 READ_WORD_F(adr, src)
39783 flag_X = flag_C = src >> 7;
39786 flag_NotZ = res & 0x0000FFFF;
39787 WRITE_WORD_F(adr, res)
39798 adr = AREG((Opcode >> 0) & 7);
39801 READ_WORD_F(adr, src)
39803 flag_X = flag_C = src >> 7;
39806 flag_NotZ = res & 0x0000FFFF;
39807 WRITE_WORD_F(adr, res)
39820 READ_WORD_F(adr, src)
39822 flag_X = flag_C = src >> 7;
39825 flag_NotZ = res & 0x0000FFFF;
39826 WRITE_WORD_F(adr, res)
39839 READ_WORD_F(adr, src)
39841 flag_X = flag_C = src >> 7;
39844 flag_NotZ = res & 0x0000FFFF;
39845 WRITE_WORD_F(adr, res)
39859 READ_WORD_F(adr, src)
39861 flag_X = flag_C = src >> 7;
39864 flag_NotZ = res & 0x0000FFFF;
39865 WRITE_WORD_F(adr, res)
39879 READ_WORD_F(adr, src)
39881 flag_X = flag_C = src >> 7;
39884 flag_NotZ = res & 0x0000FFFF;
39885 WRITE_WORD_F(adr, res)
39896 adr = AREG((Opcode >> 0) & 7);
39898 READ_WORD_F(adr, src)
39900 res = (src << 1) | ((flag_X & M68K_SR_X) >> 8);
39901 flag_X = flag_C = src >> 7;
39903 flag_NotZ = res & 0x0000FFFF;
39904 WRITE_WORD_F(adr, res)
39915 adr = AREG((Opcode >> 0) & 7);
39916 AREG((Opcode >> 0) & 7) += 2;
39918 READ_WORD_F(adr, src)
39920 res = (src << 1) | ((flag_X & M68K_SR_X) >> 8);
39921 flag_X = flag_C = src >> 7;
39923 flag_NotZ = res & 0x0000FFFF;
39924 WRITE_WORD_F(adr, res)
39935 adr = AREG((Opcode >> 0) & 7) - 2;
39936 AREG((Opcode >> 0) & 7) = adr;
39938 READ_WORD_F(adr, src)
39940 res = (src << 1) | ((flag_X & M68K_SR_X) >> 8);
39941 flag_X = flag_C = src >> 7;
39943 flag_NotZ = res & 0x0000FFFF;
39944 WRITE_WORD_F(adr, res)
39956 adr += AREG((Opcode >> 0) & 7);
39958 READ_WORD_F(adr, src)
39960 res = (src << 1) | ((flag_X & M68K_SR_X) >> 8);
39961 flag_X = flag_C = src >> 7;
39963 flag_NotZ = res & 0x0000FFFF;
39964 WRITE_WORD_F(adr, res)
39975 adr = AREG((Opcode >> 0) & 7);
39978 READ_WORD_F(adr, src)
39980 res = (src << 1) | ((flag_X & M68K_SR_X) >> 8);
39981 flag_X = flag_C = src >> 7;
39983 flag_NotZ = res & 0x0000FFFF;
39984 WRITE_WORD_F(adr, res)
39997 READ_WORD_F(adr, src)
39999 res = (src << 1) | ((flag_X & M68K_SR_X) >> 8);
40000 flag_X = flag_C = src >> 7;
40002 flag_NotZ = res & 0x0000FFFF;
40003 WRITE_WORD_F(adr, res)
40016 READ_WORD_F(adr, src)
40018 res = (src << 1) | ((flag_X & M68K_SR_X) >> 8);
40019 flag_X = flag_C = src >> 7;
40021 flag_NotZ = res & 0x0000FFFF;
40022 WRITE_WORD_F(adr, res)
40036 READ_WORD_F(adr, src)
40038 res = (src << 1) | ((flag_X & M68K_SR_X) >> 8);
40039 flag_X = flag_C = src >> 7;
40041 flag_NotZ = res & 0x0000FFFF;
40042 WRITE_WORD_F(adr, res)
40056 READ_WORD_F(adr, src)
40058 res = (src << 1) | ((flag_X & M68K_SR_X) >> 8);
40059 flag_X = flag_C = src >> 7;
40061 flag_NotZ = res & 0x0000FFFF;
40062 WRITE_WORD_F(adr, res)
40073 adr = AREG((Opcode >> 0) & 7);
40075 READ_WORD_F(adr, src)
40078 res = (src << 1) | (src >> 15);
40080 flag_NotZ = res & 0x0000FFFF;
40081 WRITE_WORD_F(adr, res)
40092 adr = AREG((Opcode >> 0) & 7);
40093 AREG((Opcode >> 0) & 7) += 2;
40095 READ_WORD_F(adr, src)
40098 res = (src << 1) | (src >> 15);
40100 flag_NotZ = res & 0x0000FFFF;
40101 WRITE_WORD_F(adr, res)
40112 adr = AREG((Opcode >> 0) & 7) - 2;
40113 AREG((Opcode >> 0) & 7) = adr;
40115 READ_WORD_F(adr, src)
40118 res = (src << 1) | (src >> 15);
40120 flag_NotZ = res & 0x0000FFFF;
40121 WRITE_WORD_F(adr, res)
40133 adr += AREG((Opcode >> 0) & 7);
40135 READ_WORD_F(adr, src)
40138 res = (src << 1) | (src >> 15);
40140 flag_NotZ = res & 0x0000FFFF;
40141 WRITE_WORD_F(adr, res)
40152 adr = AREG((Opcode >> 0) & 7);
40155 READ_WORD_F(adr, src)
40158 res = (src << 1) | (src >> 15);
40160 flag_NotZ = res & 0x0000FFFF;
40161 WRITE_WORD_F(adr, res)
40174 READ_WORD_F(adr, src)
40177 res = (src << 1) | (src >> 15);
40179 flag_NotZ = res & 0x0000FFFF;
40180 WRITE_WORD_F(adr, res)
40193 READ_WORD_F(adr, src)
40196 res = (src << 1) | (src >> 15);
40198 flag_NotZ = res & 0x0000FFFF;
40199 WRITE_WORD_F(adr, res)
40213 READ_WORD_F(adr, src)
40216 res = (src << 1) | (src >> 15);
40218 flag_NotZ = res & 0x0000FFFF;
40219 WRITE_WORD_F(adr, res)
40233 READ_WORD_F(adr, src)
40236 res = (src << 1) | (src >> 15);
40238 flag_NotZ = res & 0x0000FFFF;
40239 WRITE_WORD_F(adr, res)
40244 #ifdef PICODRIVE_HACK
40246 #define UPDATE_IDLE_COUNT { \
40247 extern int idle_hit_counter; \
40248 idle_hit_counter++; \
40251 #define UPDATE_IDLE_COUNT
40255 OPCODE(0x6001_idle)
40257 #ifdef FAMEC_CHECK_BRANCHES
40258 u32 newPC = GET_PC;
40262 CHECK_BRANCH_EXCEPTION(offs)
40264 PC += ((s8)(Opcode & 0xFE)) >> 1;
40271 OPCODE(0x6601_idle)
40276 PC += ((s8)(Opcode & 0xFE)) >> 1;
40283 OPCODE(0x6701_idle)
40288 PC += ((s8)(Opcode & 0xFE)) >> 1;
40296 extern int SekIsIdleReady(void);
40297 extern int SekIsIdleCode(unsigned short *dst, int bytes);
40298 extern int SekRegisterIdlePatch(unsigned int pc, int oldop, int newop, void *ctx);
40300 OPCODE(idle_detector_bcc8)
40302 int frame_count, cond_true, bytes, ret, newop;
40305 dest_pc = PC + (((s8)(Opcode & 0xFE)) >> 1);
40307 if (!SekIsIdleReady())
40310 bytes = 0 - (s8)(Opcode & 0xFE) - 2;
40311 ret = SekIsIdleCode(dest_pc, bytes);
40312 newop = (Opcode & 0xfe) | 0x7100;
40313 if (!ret) newop |= 0x200;
40314 if ( Opcode & 0x0100) newop |= 0x400; // beq
40315 if (!(Opcode & 0x0f00)) newop |= 0xc00; // bra
40317 ret = SekRegisterIdlePatch(GET_PC - 2, Opcode, newop, ctx);
40320 case 0: PC[-1] = newop; break;
40322 case 2: JumpTable[Opcode] = (Opcode & 0x0f00) ?
40323 ((Opcode & 0x0100) ? CAST_OP(0x6701) : CAST_OP(0x6601)) :
40324 CAST_OP(0x6001); break;
40328 if ((Opcode & 0xff00) == 0x6000) cond_true = 1;
40329 else cond_true = (Opcode & 0x0100) ? !flag_NotZ : flag_NotZ; // beq?
40333 ctx->io_cycle_counter -= 2;
40338 #endif // PICODRIVE_HACK