diff options
author | Benjamin Barenblat <bbarenblat@gmail.com> | 2021-11-23 23:13:26 -0500 |
---|---|---|
committer | Benjamin Barenblat <bbarenblat@gmail.com> | 2021-11-23 23:13:26 -0500 |
commit | e5df1aafb6d1346207343ccb858fa373e6b86301 (patch) | |
tree | fb26f0091dda7dd69d48d6b06169ea618332b99e /SrcShared/UAE |
Check in the Palm OS Emulator, version 3.5 (2001). These files come from
the tarball present in the Debian archives [1]. The SHA-256 digest of
the tarball, c5e0d23424e88525bfba0ecdf0a432a8d93c885d04740df06a9eeee44e5f25e4,
matches the digest preserved in the FreeBSD ports tree [2], giving
further confidence that these files are as distributed by upstream.
[1] http://archive.debian.org/debian/pool/contrib/p/pose/
[2] https://svnweb.freebsd.org/ports/head/palm/pose/distinfo?revision=271305&view=markup&pathrev=282162
Diffstat (limited to 'SrcShared/UAE')
30 files changed, 33780 insertions, 0 deletions
diff --git a/SrcShared/UAE/UAE.h b/SrcShared/UAE/UAE.h new file mode 100644 index 0000000..83307a7 --- /dev/null +++ b/SrcShared/UAE/UAE.h @@ -0,0 +1,21 @@ +#ifndef UAE_h +#define UAE_h + +#include "sysconfig.h" // (should really be included by sysdeps.h ...) +#include "sysdeps.h" // uae_u8, uae_u16, uae_u32, etc. +#include "config.h" +#include "options.h" +#include "machdep_m68k.h" +#include "memory_cpu.h" +#include "custom.h" +#include "readcpu.h" +#include "newcpu.h" +#include "compiler.h" +#include "cputbl.h" + +// sysdeps.h brings in assert.h. However, +// we don't want to use assert in our application +// so undef it. Use EmAssert instead. +#undef assert + +#endif /* UAE_h */ diff --git a/SrcShared/UAE/build68k.c b/SrcShared/UAE/build68k.c new file mode 100644 index 0000000..d3fe88a --- /dev/null +++ b/SrcShared/UAE/build68k.c @@ -0,0 +1,246 @@ +/* + * UAE - The Un*x Amiga Emulator + * + * Read 68000 CPU specs from file "table68k" and build table68k.c + * + * Copyright 1995,1996 Bernd Schmidt + */ + +#include "sysconfig.h" +#include "sysdeps.h" + +#include <assert.h> +#include <ctype.h> + +#include "config.h" +#include "options.h" +#include "readcpu.h" + +static FILE *tablef; +static int nextch = 0; + +static void getnextch(void) +{ + do { + nextch = fgetc(tablef); + if (nextch == '%') { + do { + nextch = fgetc(tablef); + } while (nextch != EOF && nextch != '\n'); + } + } while (nextch != EOF && isspace(nextch)); +} + +static int nextchtohex(void) +{ + switch (isupper (nextch) ? tolower (nextch) : nextch) { + case '0': return 0; + case '1': return 1; + case '2': return 2; + case '3': return 3; + case '4': return 4; + case '5': return 5; + case '6': return 6; + case '7': return 7; + case '8': return 8; + case '9': return 9; + case 'a': return 10; + case 'b': return 11; + case 'c': return 12; + case 'd': return 13; + case 'e': return 14; + case 'f': return 15; + default: abort(); + } +} + +int main(int argc, char **argv) +{ + int no_insns = 0; + + printf ("#include \"sysconfig.h\"\n"); + printf ("#include \"sysdeps.h\"\n"); + printf ("#include \"config.h\"\n"); + printf ("#include \"options.h\"\n"); + printf ("#include \"readcpu.h\"\n"); + printf ("struct instr_def defs68k[] = {\n"); +#if 0 + tablef = fopen("table68k","r"); + if (tablef == NULL) { + fprintf(stderr, "table68k not found\n"); + exit(1); + } +#else + tablef = stdin; +#endif + getnextch(); + while (nextch != EOF) { + int cpulevel, plevel, sduse; + int i; + + char patbits[16]; + char opcstr[256]; + int bitpos[16]; + int flagset[5], flaguse[5]; + + unsigned int bitmask,bitpattern; + int n_variable; + + n_variable = 0; + bitmask = bitpattern = 0; + memset (bitpos, 0, sizeof(bitpos)); + for(i=0; i<16; i++) { + int currbit; + bitmask <<= 1; + bitpattern <<= 1; + + switch (nextch) { + case '0': currbit = bit0; bitmask |= 1; break; + case '1': currbit = bit1; bitmask |= 1; bitpattern |= 1; break; + case 'c': currbit = bitc; break; + case 'C': currbit = bitC; break; + case 'f': currbit = bitf; break; + case 'i': currbit = biti; break; + case 'I': currbit = bitI; break; + case 'j': currbit = bitj; break; + case 'J': currbit = bitJ; break; + case 'k': currbit = bitk; break; + case 'K': currbit = bitK; break; + case 's': currbit = bits; break; + case 'S': currbit = bitS; break; + case 'd': currbit = bitd; break; + case 'D': currbit = bitD; break; + case 'r': currbit = bitr; break; + case 'R': currbit = bitR; break; + case 'z': currbit = bitz; break; + default: abort(); + } + if (!(bitmask & 1)) { + bitpos[n_variable] = currbit; + n_variable++; + } + + if (nextch == '0' || nextch == '1') + bitmask |= 1; + if (nextch == '1') + bitpattern |= 1; + patbits[i] = nextch; + getnextch(); + } + + while (isspace(nextch) || nextch == ':') /* Get CPU and privilege level */ + getnextch(); + + switch (nextch) { + case '0': cpulevel = 0; break; + case '1': cpulevel = 1; break; + case '2': cpulevel = 2; break; + case '3': cpulevel = 3; break; + case '4': cpulevel = 4; break; + default: abort(); + } + getnextch(); + + switch (nextch) { + case '0': plevel = 0; break; + case '1': plevel = 1; break; + case '2': plevel = 2; break; + case '3': plevel = 3; break; + default: abort(); + } + getnextch(); + + while (isspace(nextch)) /* Get flag set information */ + getnextch(); + + if (nextch != ':') + abort(); + + for(i = 0; i < 5; i++) { + getnextch(); + switch(nextch){ + case '-': flagset[i] = fa_unset; break; + case '/': flagset[i] = fa_isjmp; break; + case '0': flagset[i] = fa_zero; break; + case '1': flagset[i] = fa_one; break; + case 'x': flagset[i] = fa_dontcare; break; + case '?': flagset[i] = fa_unknown; break; + default: flagset[i] = fa_set; break; + } + } + + getnextch(); + while (isspace(nextch)) + getnextch(); + + if (nextch != ':') /* Get flag used information */ + abort(); + + for(i = 0; i < 5; i++) { + getnextch(); + switch(nextch){ + case '-': flaguse[i] = fu_unused; break; + case '/': flaguse[i] = fu_isjmp; break; + case '+': flaguse[i] = fu_maybecc; break; + case '?': flaguse[i] = fu_unknown; break; + default: flaguse[i] = fu_used; break; + } + } + + getnextch(); + while (isspace(nextch)) + getnextch(); + + if (nextch != ':') /* Get source/dest usage information */ + abort(); + + getnextch(); + sduse = nextchtohex() << 4; + getnextch(); + sduse |= nextchtohex(); + + getnextch(); + while (isspace(nextch)) + getnextch(); + + if (nextch != ':') + abort(); + + fgets(opcstr, 250, tablef); + getnextch(); + { + int j; + /* Remove superfluous spaces from the string */ + char *opstrp = opcstr, *osendp; + int slen = 0; + + while (isspace(*opstrp)) + opstrp++; + + osendp = opstrp; + while (*osendp) { + if (!isspace (*osendp)) + slen = osendp - opstrp + 1; + osendp++; + } + opstrp[slen] = 0; + + if (no_insns > 0) + printf(",\n"); + no_insns++; + printf("{ %d, %d, {", bitpattern, n_variable); + for (j = 0; j < 16; j++) { + printf("%d", bitpos[j]); + if (j < 15) + printf(","); + } + printf ("}, %d, %d, %d, { ", bitmask, cpulevel, plevel); + for(i = 0; i < 5; i++) { + printf("{ %d, %d }%c ", flaguse[i], flagset[i], i == 4 ? ' ' : ','); + } + printf("}, %d, \"%s\"}", sduse, opstrp); + } + } + printf("};\nint n_defs68k = %d;\n", no_insns); + return 0; +} diff --git a/SrcShared/UAE/compiler.h b/SrcShared/UAE/compiler.h new file mode 100644 index 0000000..7d49f2e --- /dev/null +++ b/SrcShared/UAE/compiler.h @@ -0,0 +1,106 @@ + /* + * UAE - The Un*x Amiga Emulator + * + * m68k -> i386 compiler + * + * (c) 1995 Bernd Schmidt + */ + +#ifdef __cplusplus +extern "C" { +#endif + +extern void Software_ProcessLINK (uae_s32 linkSize); +extern int Software_ProcessRTS (uaecptr dest); +extern int Software_ProcessRTE (uaecptr newpc); +extern int Software_ProcessJSR (uaecptr oldpc, uaecptr dest); +extern int Software_ProcessJSR_Ind (uaecptr oldpc, uaecptr dest); +extern void Software_CheckNewPC (uaecptr newPC); + +extern void Software_CheckStackPointerAssignment (void); +extern void Software_CheckStackPointerDecrement (void); +extern void Software_CheckStackPointerIncrement (void); +extern void Software_CheckKernelStack (void); + +extern uae_u32 gStackHigh; +extern uae_u32 gStackLowWarn; +extern uae_u32 gStackLow; +extern uae_u32 gKernelStackOverflowed; + +#define CHECK_STACK_POINTER_ASSIGNMENT() \ +do { \ + Software_CheckStackPointerAssignment (); \ + if (gKernelStackOverflowed) \ + Software_CheckKernelStack (); \ +} while (0) + +#define CHECK_STACK_POINTER_DECREMENT() \ +do { \ + if (m68k_areg (regs, 7) < gStackLowWarn) \ + Software_CheckStackPointerDecrement (); \ + if (gKernelStackOverflowed) \ + Software_CheckKernelStack (); \ +} while (0) + +#define CHECK_STACK_POINTER_INCREMENT() \ +do { \ + if (m68k_areg (regs, 7) > gStackHigh) \ + Software_CheckStackPointerIncrement (); \ + if (gKernelStackOverflowed) \ + Software_CheckKernelStack (); \ +} while (0) + +// Called in RTD handler +#define compiler_flush_jsr_stack() do { ; } while (0) + +STATIC_INLINE void m68k_do_rts(void) +{ + uaecptr returnAddr = get_long (m68k_areg (regs, 7)); + if (Software_ProcessRTS (returnAddr)) + return; + + m68k_setpc(returnAddr); + m68k_areg(regs, 7) += 4; +} + +STATIC_INLINE void m68k_do_rte(uaecptr newpc) +{ + if (Software_ProcessRTE(newpc)) + return; + + m68k_setpc_rte(newpc); +} + +STATIC_INLINE void m68k_do_bsr(uaecptr oldpc, uae_s32 offset) +{ + /* CHANGED BY B. CAMERON LESIUK + * 19 Jan 2001 + * Made this modification so that BSRs cause the profiler to + * track function calls properly. + */ +// Software_CheckNewPC (m68k_getpc () + offset); + + if (Software_ProcessJSR (oldpc, m68k_getpc () + offset)) + return; + + m68k_areg(regs, 7) -= 4; + Software_CheckStackPointerDecrement (); + put_long(m68k_areg(regs, 7), oldpc); + m68k_incpc(offset); +} + +STATIC_INLINE void m68k_do_jsr(uaecptr oldpc, uaecptr dest) +{ + if (Software_ProcessJSR (oldpc, dest)) + return; + + m68k_areg(regs, 7) -= 4; + Software_CheckStackPointerDecrement (); + put_long(m68k_areg(regs, 7), oldpc); + m68k_setpc(dest); +} + +#ifdef __cplusplus +} +#endif + diff --git a/SrcShared/UAE/config.h b/SrcShared/UAE/config.h new file mode 100644 index 0000000..a1f0e04 --- /dev/null +++ b/SrcShared/UAE/config.h @@ -0,0 +1,77 @@ + /* + * UAE - The Un*x Amiga Emulator + * + * User configuration options + * + * Copyright 1995 - 1998 Bernd Schmidt + */ + +/* + * Please note: Many things are configurable with command line parameters, + * and you can put anything you can pass on the command line into a + * configuration file ~/.uaerc. Please read the documentation for more + * information. + * + * NOTE NOTE NOTE + * Whenever you change something in this file, you have to "make clean" + * afterwards. + * Don't remove the '#' signs. If you want to enable something, move it out + * of the C comment block, if you want to disable something, move it inside + * the block. + */ + +/* + * When USE_COMPILER is defined, a m68k->i386 instruction compiler will be + * used. This is experimental. It has only been tested on a Linux/i386 ELF + * machine, although it might work on other i386 Unices. + * This is supposed to speed up application programs. It will not work very + * well for hardware bangers like games and demos, in fact it will be much + * slower. It can also be slower for some applications and/or benchmarks. + * It needs a lot of tuning. Please let me know your results with this. + * The second define, RELY_ON_LOADSEG_DETECTION, decides how the compiler + * tries to detect self-modifying code. If it is not set, the first bytes + * of every compiled routine are used as checksum before executing the + * routine. If it is set, the UAE filesystem will perform some checks to + * detect whether an executable is being loaded. This is less reliable + * (it won't work if you don't use the harddisk emulation, so don't try to + * use floppies or even the RAM disk), but much faster. + * + * @@@ NOTE: This option is unfortunately broken in this version. Don't + * try to use it. @@@ + * +#define USE_COMPILER +#define RELY_ON_LOADSEG_DETECTION + */ + +/* + * Set USER_PROGRAMS_BEHAVE to 1 or 2 to indicate that you are only running + * non-hardware banging programs which leave all the dirty work to the + * Kickstart. This affects the compiler. Any program that is _not_ in the ROM + * (i.e. everything but the Kickstart) will use faster memory access + * functions. + * There is of course the problem that the Amiga doesn't really distinguish + * between user programs and the kernel. Not all of the OS is in the ROM, + * e.g. the parallel.device is on the disk and gets loaded into RAM at least + * with Kickstart 1.3 (don't know about newer Kickstarts). So you probably + * can't print, and some other stuff may also fail to work. + * A useless option, really, given the way lots of Amiga software is written. +#define USER_PROGRAMS_BEHAVE 0 + */ + +/*************************************************************************** + * Operating system/machine specific options + * Configure these for your CPU. The default settings should work on any + * machine, but may not give optimal performance everywhere. + * (These don't do very much yet, except HAVE_RDTSC + */ + +/* + * Define this on PPro's, K6's and maybe other non-x86 CPUs. +#define MULTIPLICATION_PROFITABLE + */ + +/* + * PPros don't like branches. With this option, UAE tries to avoid them in some + * places. +#define BRANCHES_ARE_EXPENSIVE + */ diff --git a/SrcShared/UAE/cpudefs.c b/SrcShared/UAE/cpudefs.c new file mode 100644 index 0000000..45d4b15 --- /dev/null +++ b/SrcShared/UAE/cpudefs.c @@ -0,0 +1,173 @@ +#include "sysconfig.h" +#include "sysdeps.h" +#include "config.h" +#include "options.h" +#include "readcpu.h" +struct instr_def defs68k[] = { +{ 60, 0, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 65535, 0, 0, { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 } }, 16, "ORSR.B #1"}, +{ 124, 0, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 65535, 0, 2, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 16, "ORSR.W #1"}, +{ 192, 8, {17,17,11,11,11,12,12,12,0,0,0,0,0,0,0,0}, 63936, 2, 0, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 17, "CHK2.z #1,s[!Dreg,Areg,Aipi,Apdi,Immd]"}, +{ 0, 8, {17,17,13,13,13,14,14,14,0,0,0,0,0,0,0,0}, 65280, 0, 0, { { 1, 1 }, { 1, 0 }, { 1, 0 }, { 1, 2 }, { 1, 2 } }, 19, "OR.z #z,d[!Areg]"}, +{ 572, 0, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 65535, 0, 0, { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 } }, 16, "ANDSR.B #1"}, +{ 636, 0, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 65535, 0, 2, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 16, "ANDSR.W #1"}, +{ 512, 8, {17,17,13,13,13,14,14,14,0,0,0,0,0,0,0,0}, 65280, 0, 0, { { 1, 1 }, { 1, 0 }, { 1, 0 }, { 1, 2 }, { 1, 2 } }, 19, "AND.z #z,d[!Areg]"}, +{ 1024, 8, {17,17,13,13,13,14,14,14,0,0,0,0,0,0,0,0}, 65280, 0, 0, { { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 } }, 19, "SUB.z #z,d[!Areg]"}, +{ 1536, 8, {17,17,13,13,13,14,14,14,0,0,0,0,0,0,0,0}, 65280, 0, 0, { { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 } }, 19, "ADD.z #z,d[!Areg]"}, +{ 1728, 6, {11,11,11,12,12,12,0,0,0,0,0,0,0,0,0,0}, 65472, 2, 0, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 16, "CALLM s[!Dreg,Areg,Aipi,Apdi,Immd]"}, +{ 1728, 6, {11,11,11,12,12,12,0,0,0,0,0,0,0,0,0,0}, 65472, 2, 0, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 16, "RTM s[Dreg,Areg]"}, +{ 2048, 6, {11,11,11,12,12,12,0,0,0,0,0,0,0,0,0,0}, 65472, 0, 0, { { 1, 1 }, { 1, 1 }, { 1, 0 }, { 1, 1 }, { 1, 1 } }, 17, "BTST #1,s[!Areg]"}, +{ 2112, 6, {11,11,11,12,12,12,0,0,0,0,0,0,0,0,0,0}, 65472, 0, 0, { { 1, 1 }, { 1, 1 }, { 1, 0 }, { 1, 1 }, { 1, 1 } }, 19, "BCHG #1,s[!Areg,Immd]"}, +{ 2176, 6, {11,11,11,12,12,12,0,0,0,0,0,0,0,0,0,0}, 65472, 0, 0, { { 1, 1 }, { 1, 1 }, { 1, 0 }, { 1, 1 }, { 1, 1 } }, 19, "BCLR #1,s[!Areg,Immd]"}, +{ 2240, 6, {11,11,11,12,12,12,0,0,0,0,0,0,0,0,0,0}, 65472, 0, 0, { { 1, 1 }, { 1, 1 }, { 1, 0 }, { 1, 1 }, { 1, 1 } }, 19, "BSET #1,s[!Areg,Immd]"}, +{ 2620, 0, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 65535, 0, 0, { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 } }, 16, "EORSR.B #1"}, +{ 2684, 0, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 65535, 0, 2, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 16, "EORSR.W #1"}, +{ 2560, 8, {17,17,13,13,13,14,14,14,0,0,0,0,0,0,0,0}, 65280, 0, 0, { { 1, 1 }, { 1, 0 }, { 1, 0 }, { 1, 2 }, { 1, 2 } }, 19, "EOR.z #z,d[!Areg]"}, +{ 3072, 8, {17,17,11,11,11,12,12,12,0,0,0,0,0,0,0,0}, 65280, 0, 0, { { 1, 1 }, { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 } }, 17, "CMP.z #z,s[!Areg,Immd]"}, +{ 2752, 6, {11,11,11,12,12,12,0,0,0,0,0,0,0,0,0,0}, 65472, 2, 0, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 19, "CAS.B #1,s[!Dreg,Areg,Immd,PC8r,PC16]"}, +{ 3264, 6, {11,11,11,12,12,12,0,0,0,0,0,0,0,0,0,0}, 65472, 2, 0, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 19, "CAS.W #1,s[!Dreg,Areg,Immd,PC8r,PC16]"}, +{ 3324, 0, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 65535, 2, 0, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 16, "CAS2.W #2"}, +{ 3584, 8, {17,17,11,11,11,12,12,12,0,0,0,0,0,0,0,0}, 65280, 2, 2, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 19, "MOVES.z #1,s[!Dreg,Areg,Immd,PC8r,PC16]"}, +{ 3776, 6, {11,11,11,12,12,12,0,0,0,0,0,0,0,0,0,0}, 65472, 2, 0, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 19, "CAS.L #1,s[!Dreg,Areg,Immd,PC8r,PC16]"}, +{ 3836, 0, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 65535, 2, 0, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 16, "CAS2.L #2"}, +{ 256, 9, {15,15,15,13,13,13,14,14,14,0,0,0,0,0,0,0}, 61888, 0, 0, { { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 } }, 18, "MVPMR.W d[Areg-Ad16],Dr"}, +{ 320, 9, {15,15,15,13,13,13,14,14,14,0,0,0,0,0,0,0}, 61888, 0, 0, { { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 } }, 18, "MVPMR.L d[Areg-Ad16],Dr"}, +{ 384, 9, {15,15,15,13,13,13,14,14,14,0,0,0,0,0,0,0}, 61888, 0, 0, { { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 } }, 18, "MVPRM.W Dr,d[Areg-Ad16]"}, +{ 448, 9, {15,15,15,13,13,13,14,14,14,0,0,0,0,0,0,0}, 61888, 0, 0, { { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 } }, 18, "MVPRM.L Dr,d[Areg-Ad16]"}, +{ 256, 9, {15,15,15,11,11,11,12,12,12,0,0,0,0,0,0,0}, 61888, 0, 0, { { 1, 1 }, { 1, 1 }, { 1, 0 }, { 1, 1 }, { 1, 1 } }, 17, "BTST Dr,s[!Areg]"}, +{ 320, 9, {15,15,15,11,11,11,12,12,12,0,0,0,0,0,0,0}, 61888, 0, 0, { { 1, 1 }, { 1, 1 }, { 1, 0 }, { 1, 1 }, { 1, 1 } }, 19, "BCHG Dr,s[!Areg,Immd]"}, +{ 384, 9, {15,15,15,11,11,11,12,12,12,0,0,0,0,0,0,0}, 61888, 0, 0, { { 1, 1 }, { 1, 1 }, { 1, 0 }, { 1, 1 }, { 1, 1 } }, 19, "BCLR Dr,s[!Areg,Immd]"}, +{ 448, 9, {15,15,15,11,11,11,12,12,12,0,0,0,0,0,0,0}, 61888, 0, 0, { { 1, 1 }, { 1, 1 }, { 1, 0 }, { 1, 1 }, { 1, 1 } }, 19, "BSET Dr,s[!Areg,Immd]"}, +{ 4096, 12, {14,14,14,13,13,13,11,11,11,12,12,12,0,0,0,0}, 61440, 0, 0, { { 1, 1 }, { 1, 0 }, { 1, 0 }, { 1, 2 }, { 1, 2 } }, 18, "MOVE.B s,d[!Areg]"}, +{ 8192, 12, {14,14,14,13,13,13,11,11,11,12,12,12,0,0,0,0}, 61440, 0, 0, { { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 } }, 18, "MOVEA.L s,d[Areg]"}, +{ 8192, 12, {14,14,14,13,13,13,11,11,11,12,12,12,0,0,0,0}, 61440, 0, 0, { { 1, 1 }, { 1, 0 }, { 1, 0 }, { 1, 2 }, { 1, 2 } }, 18, "MOVE.L s,d[!Areg]"}, +{ 12288, 12, {14,14,14,13,13,13,11,11,11,12,12,12,0,0,0,0}, 61440, 0, 0, { { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 } }, 18, "MOVEA.W s,d[Areg]"}, +{ 12288, 12, {14,14,14,13,13,13,11,11,11,12,12,12,0,0,0,0}, 61440, 0, 0, { { 1, 1 }, { 1, 0 }, { 1, 0 }, { 1, 2 }, { 1, 2 } }, 18, "MOVE.W s,d[!Areg]"}, +{ 16384, 8, {17,17,13,13,13,14,14,14,0,0,0,0,0,0,0,0}, 65280, 0, 0, { { 1, 0 }, { 1, 4 }, { 1, 0 }, { 1, 4 }, { 1, 0 } }, 48, "NEGX.z d[!Areg]"}, +{ 16576, 6, {13,13,13,14,14,14,0,0,0,0,0,0,0,0,0,0}, 65472, 0, 1, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 16, "MVSR2.W d[!Areg]"}, +{ 16896, 8, {17,17,13,13,13,14,14,14,0,0,0,0,0,0,0,0}, 65280, 0, 0, { { 1, 1 }, { 1, 2 }, { 1, 3 }, { 1, 2 }, { 1, 2 } }, 32, "CLR.z d[!Areg]"}, +{ 17088, 6, {13,13,13,14,14,14,0,0,0,0,0,0,0,0,0,0}, 65472, 1, 0, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 16, "MVSR2.B d[!Areg]"}, +{ 17408, 8, {17,17,13,13,13,14,14,14,0,0,0,0,0,0,0,0}, 65280, 0, 0, { { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 } }, 48, "NEG.z d[!Areg]"}, +{ 17600, 6, {11,11,11,12,12,12,0,0,0,0,0,0,0,0,0,0}, 65472, 0, 0, { { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 } }, 16, "MV2SR.B s[!Areg]"}, +{ 17920, 8, {17,17,13,13,13,14,14,14,0,0,0,0,0,0,0,0}, 65280, 0, 0, { { 1, 1 }, { 1, 0 }, { 1, 0 }, { 1, 2 }, { 1, 2 } }, 48, "NOT.z d[!Areg]"}, +{ 18112, 6, {11,11,11,12,12,12,0,0,0,0,0,0,0,0,0,0}, 65472, 0, 2, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 16, "MV2SR.W s[!Areg]"}, +{ 18440, 3, {15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0}, 65528, 2, 0, { { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 } }, 49, "LINK.L Ar,#2"}, +{ 18432, 6, {13,13,13,14,14,14,0,0,0,0,0,0,0,0,0,0}, 65472, 0, 0, { { 0, 0 }, { 1, 5 }, { 0, 0 }, { 1, 5 }, { 1, 0 } }, 48, "NBCD.B d[!Areg]"}, +{ 18504, 3, {9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0}, 65528, 2, 0, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 16, "BKPT #k"}, +{ 18496, 6, {11,11,11,12,12,12,0,0,0,0,0,0,0,0,0,0}, 65472, 0, 0, { { 1, 1 }, { 1, 0 }, { 1, 0 }, { 1, 2 }, { 1, 2 } }, 48, "SWAP.W s[Dreg]"}, +{ 18496, 6, {11,11,11,12,12,12,0,0,0,0,0,0,0,0,0,0}, 65472, 0, 0, { { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 } }, 0, "PEA.L s[!Dreg,Areg,Aipi,Apdi,Immd]"}, +{ 18560, 6, {13,13,13,14,14,14,0,0,0,0,0,0,0,0,0,0}, 65472, 0, 0, { { 1, 1 }, { 1, 0 }, { 1, 0 }, { 1, 2 }, { 1, 2 } }, 48, "EXT.W d[Dreg]"}, +{ 18560, 6, {13,13,13,14,14,14,0,0,0,0,0,0,0,0,0,0}, 65472, 0, 0, { { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 } }, 2, "MVMLE.W #1,d[!Dreg,Areg,Aipi]"}, +{ 18624, 6, {13,13,13,14,14,14,0,0,0,0,0,0,0,0,0,0}, 65472, 0, 0, { { 1, 1 }, { 1, 0 }, { 1, 0 }, { 1, 2 }, { 1, 2 } }, 48, "EXT.L d[Dreg]"}, +{ 18624, 6, {13,13,13,14,14,14,0,0,0,0,0,0,0,0,0,0}, 65472, 0, 0, { { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 } }, 2, "MVMLE.L #1,d[!Dreg,Areg,Aipi]"}, +{ 18880, 6, {13,13,13,14,14,14,0,0,0,0,0,0,0,0,0,0}, 65472, 0, 0, { { 1, 1 }, { 1, 0 }, { 1, 0 }, { 1, 2 }, { 1, 2 } }, 48, "EXT.B d[Dreg]"}, +{ 18944, 8, {17,17,11,11,11,12,12,12,0,0,0,0,0,0,0,0}, 65280, 0, 0, { { 1, 1 }, { 1, 0 }, { 1, 0 }, { 1, 2 }, { 1, 2 } }, 16, "TST.z s"}, +{ 19136, 6, {13,13,13,14,14,14,0,0,0,0,0,0,0,0,0,0}, 65472, 0, 0, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 48, "TAS.B d[!Areg]"}, +{ 19196, 0, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 65535, 0, 0, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 0, "ILLEGAL"}, +{ 19456, 6, {11,11,11,12,12,12,0,0,0,0,0,0,0,0,0,0}, 65472, 2, 0, { { 1, 1 }, { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 } }, 19, "MULL.L #1,s[!Areg]"}, +{ 19520, 6, {11,11,11,12,12,12,0,0,0,0,0,0,0,0,0,0}, 65472, 2, 0, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 19, "DIVL.L #1,s[!Areg]"}, +{ 19584, 6, {11,11,11,12,12,12,0,0,0,0,0,0,0,0,0,0}, 65472, 0, 0, { { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 } }, 1, "MVMEL.W #1,s[!Dreg,Areg,Apdi,Immd]"}, +{ 19648, 6, {11,11,11,12,12,12,0,0,0,0,0,0,0,0,0,0}, 65472, 0, 0, { { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 } }, 1, "MVMEL.L #1,s[!Dreg,Areg,Apdi,Immd]"}, +{ 20032, 4, {8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0}, 65520, 0, 0, { { 0, 1 }, { 0, 1 }, { 0, 1 }, { 0, 1 }, { 0, 1 } }, 16, "TRAP #J"}, +{ 20048, 3, {15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0}, 65528, 0, 0, { { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 } }, 49, "LINK.W Ar,#1"}, +{ 20056, 3, {15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0}, 65528, 0, 0, { { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 } }, 48, "UNLK.L Ar"}, +{ 20064, 3, {15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0}, 65528, 0, 2, { { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 } }, 16, "MVR2USP.L Ar"}, +{ 20072, 3, {15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0}, 65528, 0, 2, { { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 } }, 32, "MVUSP2R.L Ar"}, +{ 20080, 0, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 65535, 0, 2, { { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 } }, 0, "RESET"}, +{ 20081, 0, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 65535, 0, 0, { { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 } }, 0, "NOP"}, +{ 20082, 0, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 65535, 0, 2, { { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 } }, 16, "STOP #1"}, +{ 20083, 0, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 65535, 0, 2, { { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 } }, 0, "RTE"}, +{ 20084, 0, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 65535, 0, 0, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 16, "RTD #1"}, +{ 20085, 0, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 65535, 0, 0, { { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 } }, 0, "RTS"}, +{ 20086, 0, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 65535, 0, 0, { { 0, 1 }, { 0, 1 }, { 0, 1 }, { 0, 1 }, { 0, 1 } }, 0, "TRAPV"}, +{ 20087, 0, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 65535, 0, 0, { { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 } }, 0, "RTR"}, +{ 20090, 0, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 65535, 1, 2, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 16, "MOVEC2 #1"}, +{ 20091, 0, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 65535, 1, 2, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 16, "MOVE2C #1"}, +{ 20096, 6, {11,11,11,12,12,12,0,0,0,0,0,0,0,0,0,0}, 65472, 0, 0, { { 4, 6 }, { 4, 6 }, { 4, 6 }, { 4, 6 }, { 4, 6 } }, 128, "JSR.L s[!Dreg,Areg,Aipi,Apdi,Immd]"}, +{ 16640, 9, {15,15,15,11,11,11,12,12,12,0,0,0,0,0,0,0}, 61888, 0, 0, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 17, "CHK.L s[!Areg],Dr"}, +{ 16768, 9, {15,15,15,11,11,11,12,12,12,0,0,0,0,0,0,0}, 61888, 0, 0, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 17, "CHK.W s[!Areg],Dr"}, +{ 20160, 6, {11,11,11,12,12,12,0,0,0,0,0,0,0,0,0,0}, 65472, 0, 0, { { 4, 6 }, { 4, 6 }, { 4, 6 }, { 4, 6 }, { 4, 6 } }, 128, "JMP.L s[!Dreg,Areg,Aipi,Apdi,Immd]"}, +{ 16832, 9, {15,15,15,11,11,11,12,12,12,0,0,0,0,0,0,0}, 61888, 0, 0, { { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 } }, 2, "LEA.L s[!Dreg,Areg,Aipi,Apdi,Immd],Ar"}, +{ 20480, 11, {7,7,7,17,17,13,13,13,14,14,14,0,0,0,0,0}, 61696, 0, 0, { { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 } }, 19, "ADDA.z #j,d[Areg]"}, +{ 20480, 11, {7,7,7,17,17,13,13,13,14,14,14,0,0,0,0,0}, 61696, 0, 0, { { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 } }, 19, "ADD.z #j,d[!Areg]"}, +{ 20736, 11, {7,7,7,17,17,13,13,13,14,14,14,0,0,0,0,0}, 61696, 0, 0, { { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 } }, 19, "SUBA.z #j,d[Areg]"}, +{ 20736, 11, {7,7,7,17,17,13,13,13,14,14,14,0,0,0,0,0}, 61696, 0, 0, { { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 } }, 19, "SUB.z #j,d[!Areg]"}, +{ 20680, 7, {2,2,2,2,15,15,15,0,0,0,0,0,0,0,0,0}, 61688, 0, 0, { { 2, 1 }, { 2, 1 }, { 2, 1 }, { 2, 1 }, { 2, 1 } }, 49, "DBcc.W Dr,#1"}, +{ 20672, 10, {2,2,2,2,13,13,13,14,14,14,0,0,0,0,0,0}, 61632, 0, 0, { { 2, 1 }, { 2, 1 }, { 2, 1 }, { 2, 1 }, { 2, 1 } }, 32, "Scc.B d[!Areg]"}, +{ 20730, 4, {2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0}, 61695, 2, 0, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 16, "TRAPcc #1"}, +{ 20731, 4, {2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0}, 61695, 2, 0, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 16, "TRAPcc #2"}, +{ 20732, 4, {2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0}, 61695, 2, 0, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 0, "TRAPcc"}, +{ 24832, 0, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 65535, 0, 0, { { 4, 6 }, { 4, 6 }, { 4, 6 }, { 4, 6 }, { 4, 6 } }, 64, "BSR.W #1"}, +{ 24832, 8, {6,6,6,6,6,6,6,6,0,0,0,0,0,0,0,0}, 65280, 0, 0, { { 4, 6 }, { 4, 6 }, { 4, 6 }, { 4, 6 }, { 4, 6 } }, 64, "BSR.B #i"}, +{ 25087, 0, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 65535, 0, 0, { { 4, 6 }, { 4, 6 }, { 4, 6 }, { 4, 6 }, { 4, 6 } }, 64, "BSR.L #2"}, +{ 24576, 4, {3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0}, 61695, 0, 0, { { 2, 1 }, { 2, 1 }, { 2, 1 }, { 2, 1 }, { 2, 1 } }, 64, "Bcc.W #1"}, +{ 24576, 12, {3,3,3,3,6,6,6,6,6,6,6,6,0,0,0,0}, 61440, 0, 0, { { 2, 1 }, { 2, 1 }, { 2, 1 }, { 2, 1 }, { 2, 1 } }, 64, "Bcc.B #i"}, +{ 24831, 4, {3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0}, 61695, 0, 0, { { 2, 1 }, { 2, 1 }, { 2, 1 }, { 2, 1 }, { 2, 1 } }, 64, "Bcc.L #2"}, +{ 28672, 11, {15,15,15,5,5,5,5,5,5,5,5,0,0,0,0,0}, 61696, 0, 0, { { 1, 1 }, { 1, 0 }, { 1, 0 }, { 1, 2 }, { 1, 2 } }, 18, "MOVE.L #i,Dr"}, +{ 32768, 11, {15,15,15,17,17,11,11,11,12,12,12,0,0,0,0,0}, 61696, 0, 0, { { 1, 1 }, { 1, 0 }, { 1, 0 }, { 1, 2 }, { 1, 2 } }, 19, "OR.z s[!Areg],Dr"}, +{ 32960, 9, {15,15,15,11,11,11,12,12,12,0,0,0,0,0,0,0}, 61888, 0, 0, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 19, "DIVU.W s[!Areg],Dr"}, +{ 33024, 9, {15,15,15,13,13,13,14,14,14,0,0,0,0,0,0,0}, 61888, 0, 0, { { 0, 0 }, { 1, 4 }, { 0, 0 }, { 1, 4 }, { 1, 0 } }, 19, "SBCD.B d[Dreg],Dr"}, +{ 33024, 9, {15,15,15,13,13,13,14,14,14,0,0,0,0,0,0,0}, 61888, 0, 0, { { 0, 0 }, { 1, 4 }, { 0, 0 }, { 1, 4 }, { 1, 0 } }, 19, "SBCD.B d[Areg-Apdi],Arp"}, +{ 33024, 11, {15,15,15,17,17,13,13,13,14,14,14,0,0,0,0,0}, 61696, 0, 0, { { 1, 1 }, { 1, 0 }, { 1, 0 }, { 1, 2 }, { 1, 2 } }, 19, "OR.z Dr,d[!Areg,Dreg]"}, +{ 33088, 9, {15,15,15,13,13,13,14,14,14,0,0,0,0,0,0,0}, 61888, 2, 0, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 18, "PACK d[Dreg],Dr"}, +{ 33088, 9, {15,15,15,13,13,13,14,14,14,0,0,0,0,0,0,0}, 61888, 2, 0, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 18, "PACK d[Areg-Apdi],Arp"}, +{ 33152, 9, {15,15,15,13,13,13,14,14,14,0,0,0,0,0,0,0}, 61888, 2, 0, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 18, "UNPK d[Dreg],Dr"}, +{ 33152, 9, {15,15,15,13,13,13,14,14,14,0,0,0,0,0,0,0}, 61888, 2, 0, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 18, "UNPK d[Areg-Apdi],Arp"}, +{ 33216, 9, {15,15,15,11,11,11,12,12,12,0,0,0,0,0,0,0}, 61888, 0, 0, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 19, "DIVS.W s[!Areg],Dr"}, +{ 36864, 11, {15,15,15,17,17,11,11,11,12,12,12,0,0,0,0,0}, 61696, 0, 0, { { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 } }, 19, "SUB.z s,Dr"}, +{ 37056, 9, {15,15,15,11,11,11,12,12,12,0,0,0,0,0,0,0}, 61888, 0, 0, { { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 } }, 19, "SUBA.W s,Ar"}, +{ 37120, 11, {15,15,15,17,17,13,13,13,14,14,14,0,0,0,0,0}, 61696, 0, 0, { { 0, 0 }, { 1, 0 }, { 0, 0 }, { 1, 0 }, { 1, 0 } }, 19, "SUBX.z d[Dreg],Dr"}, +{ 37120, 11, {15,15,15,17,17,13,13,13,14,14,14,0,0,0,0,0}, 61696, 0, 0, { { 0, 0 }, { 1, 0 }, { 0, 0 }, { 1, 0 }, { 1, 0 } }, 19, "SUBX.z d[Areg-Apdi],Arp"}, +{ 37120, 11, {15,15,15,17,17,13,13,13,14,14,14,0,0,0,0,0}, 61696, 0, 0, { { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 } }, 19, "SUB.z Dr,d[!Areg,Dreg]"}, +{ 37312, 9, {15,15,15,11,11,11,12,12,12,0,0,0,0,0,0,0}, 61888, 0, 0, { { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 } }, 19, "SUBA.L s,Ar"}, +{ 45056, 11, {15,15,15,17,17,11,11,11,12,12,12,0,0,0,0,0}, 61696, 0, 0, { { 1, 1 }, { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 } }, 17, "CMP.z s,Dr"}, +{ 45248, 9, {15,15,15,11,11,11,12,12,12,0,0,0,0,0,0,0}, 61888, 0, 0, { { 1, 1 }, { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 } }, 17, "CMPA.W s,Ar"}, +{ 45504, 9, {15,15,15,11,11,11,12,12,12,0,0,0,0,0,0,0}, 61888, 0, 0, { { 1, 1 }, { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 } }, 17, "CMPA.L s,Ar"}, +{ 45312, 11, {15,15,15,17,17,13,13,13,14,14,14,0,0,0,0,0}, 61696, 0, 0, { { 1, 1 }, { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 } }, 17, "CMPM.z d[Areg-Aipi],ArP"}, +{ 45312, 11, {15,15,15,17,17,13,13,13,14,14,14,0,0,0,0,0}, 61696, 0, 0, { { 1, 1 }, { 1, 0 }, { 1, 0 }, { 1, 2 }, { 1, 2 } }, 19, "EOR.z Dr,d[!Areg]"}, +{ 49152, 11, {15,15,15,17,17,11,11,11,12,12,12,0,0,0,0,0}, 61696, 0, 0, { { 1, 1 }, { 1, 0 }, { 1, 0 }, { 1, 2 }, { 1, 2 } }, 19, "AND.z s[!Areg],Dr"}, +{ 49344, 9, {15,15,15,11,11,11,12,12,12,0,0,0,0,0,0,0}, 61888, 0, 0, { { 1, 1 }, { 1, 0 }, { 1, 0 }, { 1, 2 }, { 1, 2 } }, 19, "MULU.W s[!Areg],Dr"}, +{ 49408, 9, {15,15,15,13,13,13,14,14,14,0,0,0,0,0,0,0}, 61888, 0, 0, { { 0, 0 }, { 1, 4 }, { 0, 0 }, { 1, 4 }, { 1, 0 } }, 19, "ABCD.B d[Dreg],Dr"}, +{ 49408, 9, {15,15,15,13,13,13,14,14,14,0,0,0,0,0,0,0}, 61888, 0, 0, { { 0, 0 }, { 1, 4 }, { 0, 0 }, { 1, 4 }, { 1, 0 } }, 19, "ABCD.B d[Areg-Apdi],Arp"}, +{ 49408, 11, {15,15,15,17,17,13,13,13,14,14,14,0,0,0,0,0}, 61696, 0, 0, { { 1, 1 }, { 1, 0 }, { 1, 0 }, { 1, 2 }, { 1, 2 } }, 19, "AND.z Dr,d[!Areg,Dreg]"}, +{ 49472, 9, {15,15,15,13,13,13,14,14,14,0,0,0,0,0,0,0}, 61888, 0, 0, { { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 } }, 51, "EXG.L Dr,d[Dreg]"}, +{ 49472, 9, {15,15,15,13,13,13,14,14,14,0,0,0,0,0,0,0}, 61888, 0, 0, { { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 } }, 51, "EXG.L Ar,d[Areg]"}, +{ 49536, 9, {15,15,15,13,13,13,14,14,14,0,0,0,0,0,0,0}, 61888, 0, 0, { { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 } }, 51, "EXG.L Dr,d[Areg]"}, +{ 49600, 9, {15,15,15,11,11,11,12,12,12,0,0,0,0,0,0,0}, 61888, 0, 0, { { 1, 1 }, { 1, 0 }, { 1, 0 }, { 1, 2 }, { 1, 2 } }, 19, "MULS.W s[!Areg],Dr"}, +{ 53248, 11, {15,15,15,17,17,11,11,11,12,12,12,0,0,0,0,0}, 61696, 0, 0, { { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 } }, 19, "ADD.z s,Dr"}, +{ 53440, 9, {15,15,15,11,11,11,12,12,12,0,0,0,0,0,0,0}, 61888, 0, 0, { { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 } }, 19, "ADDA.W s,Ar"}, +{ 53504, 11, {15,15,15,17,17,13,13,13,14,14,14,0,0,0,0,0}, 61696, 0, 0, { { 0, 0 }, { 1, 0 }, { 0, 0 }, { 1, 0 }, { 1, 0 } }, 19, "ADDX.z d[Dreg],Dr"}, +{ 53504, 11, {15,15,15,17,17,13,13,13,14,14,14,0,0,0,0,0}, 61696, 0, 0, { { 0, 0 }, { 1, 0 }, { 0, 0 }, { 1, 0 }, { 1, 0 } }, 19, "ADDX.z d[Areg-Apdi],Arp"}, +{ 53504, 11, {15,15,15,17,17,13,13,13,14,14,14,0,0,0,0,0}, 61696, 0, 0, { { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 } }, 19, "ADD.z Dr,d[!Areg,Dreg]"}, +{ 53696, 9, {15,15,15,11,11,11,12,12,12,0,0,0,0,0,0,0}, 61888, 0, 0, { { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 } }, 19, "ADDA.L s,Ar"}, +{ 57344, 9, {7,7,7,4,17,17,16,16,16,0,0,0,0,0,0,0}, 61496, 0, 0, { { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 } }, 19, "ASf.z #j,DR"}, +{ 57352, 9, {7,7,7,4,17,17,16,16,16,0,0,0,0,0,0,0}, 61496, 0, 0, { { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 2 }, { 1, 0 } }, 19, "LSf.z #j,DR"}, +{ 57360, 9, {7,7,7,4,17,17,16,16,16,0,0,0,0,0,0,0}, 61496, 0, 0, { { 0, 0 }, { 1, 0 }, { 1, 0 }, { 1, 2 }, { 1, 0 } }, 19, "ROXf.z #j,DR"}, +{ 57368, 9, {7,7,7,4,17,17,16,16,16,0,0,0,0,0,0,0}, 61496, 0, 0, { { 1, 1 }, { 1, 0 }, { 1, 0 }, { 1, 2 }, { 1, 0 } }, 19, "ROf.z #j,DR"}, +{ 57376, 9, {15,15,15,4,17,17,16,16,16,0,0,0,0,0,0,0}, 61496, 0, 0, { { 0, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 } }, 19, "ASf.z Dr,DR"}, +{ 57384, 9, {15,15,15,4,17,17,16,16,16,0,0,0,0,0,0,0}, 61496, 0, 0, { { 0, 0 }, { 1, 0 }, { 1, 0 }, { 1, 2 }, { 1, 0 } }, 19, "LSf.z Dr,DR"}, +{ 57392, 9, {15,15,15,4,17,17,16,16,16,0,0,0,0,0,0,0}, 61496, 0, 0, { { 0, 0 }, { 1, 0 }, { 1, 0 }, { 1, 2 }, { 1, 0 } }, 19, "ROXf.z Dr,DR"}, +{ 57400, 9, {15,15,15,4,17,17,16,16,16,0,0,0,0,0,0,0}, 61496, 0, 0, { { 1, 1 }, { 1, 0 }, { 1, 0 }, { 1, 2 }, { 1, 0 } }, 19, "ROf.z Dr,DR"}, +{ 57536, 7, {4,13,13,13,14,14,14,0,0,0,0,0,0,0,0,0}, 65216, 0, 0, { { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 } }, 19, "ASfW.W d[!Dreg,Areg]"}, +{ 58048, 7, {4,13,13,13,14,14,14,0,0,0,0,0,0,0,0,0}, 65216, 0, 0, { { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 2 }, { 1, 0 } }, 19, "LSfW.W d[!Dreg,Areg]"}, +{ 58560, 7, {4,13,13,13,14,14,14,0,0,0,0,0,0,0,0,0}, 65216, 0, 0, { { 0, 0 }, { 1, 0 }, { 1, 0 }, { 1, 2 }, { 1, 0 } }, 19, "ROXfW.W d[!Dreg,Areg]"}, +{ 59072, 7, {4,13,13,13,14,14,14,0,0,0,0,0,0,0,0,0}, 65216, 0, 0, { { 1, 1 }, { 1, 0 }, { 1, 0 }, { 1, 2 }, { 1, 0 } }, 19, "ROfW.W d[!Dreg,Areg]"}, +{ 59584, 6, {11,11,11,12,12,12,0,0,0,0,0,0,0,0,0,0}, 65472, 2, 0, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 17, "BFTST #1,s[!Areg,Apdi,Aipi,Immd]"}, +{ 59840, 6, {11,11,11,12,12,12,0,0,0,0,0,0,0,0,0,0}, 65472, 2, 0, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 17, "BFEXTU #1,s[!Areg,Apdi,Aipi,Immd]"}, +{ 60096, 6, {11,11,11,12,12,12,0,0,0,0,0,0,0,0,0,0}, 65472, 2, 0, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 19, "BFCHG #1,s[!Areg,Apdi,Aipi,Immd,PC8r,PC16]"}, +{ 60352, 6, {11,11,11,12,12,12,0,0,0,0,0,0,0,0,0,0}, 65472, 2, 0, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 17, "BFEXTS #1,s[!Areg,Apdi,Aipi,Immd]"}, +{ 60608, 6, {11,11,11,12,12,12,0,0,0,0,0,0,0,0,0,0}, 65472, 2, 0, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 19, "BFCLR #1,s[!Areg,Apdi,Aipi,Immd,PC8r,PC16]"}, +{ 60864, 6, {11,11,11,12,12,12,0,0,0,0,0,0,0,0,0,0}, 65472, 2, 0, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 17, "BFFFO #1,s[!Areg,Apdi,Aipi,Immd]"}, +{ 61120, 6, {11,11,11,12,12,12,0,0,0,0,0,0,0,0,0,0}, 65472, 2, 0, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 19, "BFSET #1,s[!Areg,Apdi,Aipi,Immd,PC8r,PC16]"}, +{ 61376, 6, {11,11,11,12,12,12,0,0,0,0,0,0,0,0,0,0}, 65472, 2, 0, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 19, "BFINS #1,s[!Areg,Apdi,Aipi,Immd,PC8r,PC16]"}, +{ 61952, 6, {11,11,11,12,12,12,0,0,0,0,0,0,0,0,0,0}, 65472, 3, 0, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 17, "FPP #1,s"}, +{ 62016, 6, {11,11,11,12,12,12,0,0,0,0,0,0,0,0,0,0}, 65472, 3, 0, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 17, "FDBcc #1,s[Areg-Dreg]"}, +{ 62016, 6, {11,11,11,12,12,12,0,0,0,0,0,0,0,0,0,0}, 65472, 3, 0, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 17, "FScc #1,s[!Areg,Immd,PC8r,PC16]"}, +{ 62074, 0, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 65535, 3, 0, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 16, "FTRAPcc #1"}, +{ 62075, 0, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 65535, 3, 0, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 16, "FTRAPcc #2"}, +{ 62076, 0, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 65535, 3, 0, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 0, "FTRAPcc"}, +{ 62080, 6, {10,10,10,10,10,10,0,0,0,0,0,0,0,0,0,0}, 65472, 3, 0, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 17, "FBcc #K,#1"}, +{ 62144, 6, {10,10,10,10,10,10,0,0,0,0,0,0,0,0,0,0}, 65472, 3, 0, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 17, "FBcc #K,#2"}, +{ 62208, 6, {11,11,11,12,12,12,0,0,0,0,0,0,0,0,0,0}, 65472, 3, 2, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 32, "FSAVE s[!Dreg,Areg,Aipi,Immd,PC8r,PC16]"}, +{ 62272, 6, {11,11,11,12,12,12,0,0,0,0,0,0,0,0,0,0}, 65472, 3, 2, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 16, "FRESTORE s[!Dreg,Areg,Apdi,Immd]"}, +{ 61440, 6, {11,11,11,12,12,12,0,0,0,0,0,0,0,0,0,0}, 65472, 4, 0, { { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 }, { 3, 5 } }, 17, "MMUOP #1,s"}}; +int n_defs68k = 166; diff --git a/SrcShared/UAE/cpuemu.c b/SrcShared/UAE/cpuemu.c new file mode 100644 index 0000000..5274a15 --- /dev/null +++ b/SrcShared/UAE/cpuemu.c @@ -0,0 +1,24243 @@ +#include "UAE.h" +#if HAS_PROFILING +#include "Profiling.h" +#endif + +#if !defined(PART_1) && !defined(PART_2) && !defined(PART_3) && !defined(PART_4) && !defined(PART_5) && !defined(PART_6) && !defined(PART_7) && !defined(PART_8) +#define PART_1 1 +#define PART_2 1 +#define PART_3 1 +#define PART_4 1 +#define PART_5 1 +#define PART_6 1 +#define PART_7 1 +#define PART_8 1 +#endif + +#ifdef PART_1 +unsigned long REGPARAM2 op_0_3(uae_u32 opcode) /* OR */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = get_ibyte(2); +{ uae_s8 dst = m68k_dreg(regs, dstreg); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff); +}}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_10_3(uae_u32 opcode) /* OR */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s8 dst = get_byte(dsta); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_18_3(uae_u32 opcode) /* OR */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s8 dst = get_byte(dsta); + m68k_areg(regs, dstreg) += areg_byteinc[dstreg]; + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_20_3(uae_u32 opcode) /* OR */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) - areg_byteinc[dstreg]; +{ uae_s8 dst = get_byte(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_28_3(uae_u32 opcode) /* OR */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(4); +{ uae_s8 dst = get_byte(dsta); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_30_3(uae_u32 opcode) /* OR */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(4)); +{ uae_s8 dst = get_byte(dsta); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_38_3(uae_u32 opcode) /* OR */ +{ +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(4); +{ uae_s8 dst = get_byte(dsta); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_39_3(uae_u32 opcode) /* OR */ +{ +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = get_ilong(4); +{ uae_s8 dst = get_byte(dsta); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(8); +return 12; +} +unsigned long REGPARAM2 op_3c_3(uae_u32 opcode) /* ORSR */ +{ +{ MakeSR(); +{ uae_s16 src = get_iword(2); + src &= 0xFF; + regs.sr |= src; + MakeFromSR(); +}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_40_3(uae_u32 opcode) /* OR */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uae_s16 dst = m68k_dreg(regs, dstreg); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff); +}}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_50_3(uae_u32 opcode) /* OR */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s16 dst = get_word(dsta); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_58_3(uae_u32 opcode) /* OR */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s16 dst = get_word(dsta); + m68k_areg(regs, dstreg) += 2; + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_60_3(uae_u32 opcode) /* OR */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 2; +{ uae_s16 dst = get_word(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_68_3(uae_u32 opcode) /* OR */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(4); +{ uae_s16 dst = get_word(dsta); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_70_3(uae_u32 opcode) /* OR */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(4)); +{ uae_s16 dst = get_word(dsta); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_78_3(uae_u32 opcode) /* OR */ +{ +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(4); +{ uae_s16 dst = get_word(dsta); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_79_3(uae_u32 opcode) /* OR */ +{ +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = get_ilong(4); +{ uae_s16 dst = get_word(dsta); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(8); +return 12; +} +unsigned long REGPARAM2 op_7c_3(uae_u32 opcode) /* ORSR */ +{ +{if (!regs.s) { Exception(8,0); goto endlabel18; } +{ MakeSR(); +{ uae_s16 src = get_iword(2); + regs.sr |= src; + MakeFromSR(); +}}}m68k_incpc(4); +endlabel18: ; +return 4; +} +unsigned long REGPARAM2 op_80_3(uae_u32 opcode) /* OR */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = get_ilong(2); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + m68k_dreg(regs, dstreg) = (src); +}}}m68k_incpc(6); +return 6; +} +unsigned long REGPARAM2 op_90_3(uae_u32 opcode) /* OR */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s32 dst = get_long(dsta); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(6); +return 14; +} +unsigned long REGPARAM2 op_98_3(uae_u32 opcode) /* OR */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s32 dst = get_long(dsta); + m68k_areg(regs, dstreg) += 4; + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(6); +return 14; +} +unsigned long REGPARAM2 op_a0_3(uae_u32 opcode) /* OR */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 4; +{ uae_s32 dst = get_long(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(6); +return 14; +} +unsigned long REGPARAM2 op_a8_3(uae_u32 opcode) /* OR */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(6); +{ uae_s32 dst = get_long(dsta); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(8); +return 16; +} +unsigned long REGPARAM2 op_b0_3(uae_u32 opcode) /* OR */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(6)); +{ uae_s32 dst = get_long(dsta); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(8); +return 16; +} +unsigned long REGPARAM2 op_b8_3(uae_u32 opcode) /* OR */ +{ +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(6); +{ uae_s32 dst = get_long(dsta); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(8); +return 16; +} +unsigned long REGPARAM2 op_b9_3(uae_u32 opcode) /* OR */ +{ +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = get_ilong(6); +{ uae_s32 dst = get_long(dsta); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(10); +return 18; +} +unsigned long REGPARAM2 op_100_3(uae_u32 opcode) /* BTST */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + src &= 31; + SET_ZFLG (1 ^ ((dst >> src) & 1)); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_108_3(uae_u32 opcode) /* MVPMR */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{ uaecptr memp = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_u16 val = (get_byte(memp) << 8) + get_byte(memp + 2); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((val) & 0xffff); +}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_110_3(uae_u32 opcode) /* BTST */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); +}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_118_3(uae_u32 opcode) /* BTST */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s8 dst = get_byte(dsta); + m68k_areg(regs, dstreg) += areg_byteinc[dstreg]; + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); +}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_120_3(uae_u32 opcode) /* BTST */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) - areg_byteinc[dstreg]; +{ uae_s8 dst = get_byte(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); +}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_128_3(uae_u32 opcode) /* BTST */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); +}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_130_3(uae_u32 opcode) /* BTST */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(2)); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); +}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_138_3(uae_u32 opcode) /* BTST */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); +}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_139_3(uae_u32 opcode) /* BTST */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = get_ilong(2); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); +}}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_13a_3(uae_u32 opcode) /* BTST */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = 2; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_getpc () + 2; + dsta += (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); +}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_13b_3(uae_u32 opcode) /* BTST */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = 3; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr dsta = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); +}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_13c_3(uae_u32 opcode) /* BTST */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uae_s8 dst = get_ibyte(2); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); +}}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_140_3(uae_u32 opcode) /* BCHG */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + src &= 31; + dst ^= (1 << src); + SET_ZFLG ((dst >> src) & 1); + m68k_dreg(regs, dstreg) = (dst); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_148_3(uae_u32 opcode) /* MVPMR */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{ uaecptr memp = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_u32 val = (get_byte(memp) << 24) + (get_byte(memp + 2) << 16) + + (get_byte(memp + 4) << 8) + get_byte(memp + 6); + m68k_dreg(regs, dstreg) = (val); +}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_150_3(uae_u32 opcode) /* BCHG */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + dst ^= (1 << src); + SET_ZFLG ((dst >> src) & 1); + put_byte(dsta,dst); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_158_3(uae_u32 opcode) /* BCHG */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s8 dst = get_byte(dsta); + m68k_areg(regs, dstreg) += areg_byteinc[dstreg]; + src &= 7; + dst ^= (1 << src); + SET_ZFLG ((dst >> src) & 1); + put_byte(dsta,dst); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_160_3(uae_u32 opcode) /* BCHG */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) - areg_byteinc[dstreg]; +{ uae_s8 dst = get_byte(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + src &= 7; + dst ^= (1 << src); + SET_ZFLG ((dst >> src) & 1); + put_byte(dsta,dst); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_168_3(uae_u32 opcode) /* BCHG */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + dst ^= (1 << src); + SET_ZFLG ((dst >> src) & 1); + put_byte(dsta,dst); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_170_3(uae_u32 opcode) /* BCHG */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(2)); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + dst ^= (1 << src); + SET_ZFLG ((dst >> src) & 1); + put_byte(dsta,dst); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_178_3(uae_u32 opcode) /* BCHG */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + dst ^= (1 << src); + SET_ZFLG ((dst >> src) & 1); + put_byte(dsta,dst); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_179_3(uae_u32 opcode) /* BCHG */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = get_ilong(2); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + dst ^= (1 << src); + SET_ZFLG ((dst >> src) & 1); + put_byte(dsta,dst); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_17a_3(uae_u32 opcode) /* BCHG */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = 2; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_getpc () + 2; + dsta += (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + dst ^= (1 << src); + SET_ZFLG ((dst >> src) & 1); + put_byte(dsta,dst); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_17b_3(uae_u32 opcode) /* BCHG */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = 3; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr dsta = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + dst ^= (1 << src); + SET_ZFLG ((dst >> src) & 1); + put_byte(dsta,dst); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_180_3(uae_u32 opcode) /* BCLR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + src &= 31; + SET_ZFLG (1 ^ ((dst >> src) & 1)); + dst &= ~(1 << src); + m68k_dreg(regs, dstreg) = (dst); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_188_3(uae_u32 opcode) /* MVPRM */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = m68k_dreg(regs, srcreg); + uaecptr memp = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(2); + put_byte(memp, src >> 8); put_byte(memp + 2, src); +}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_190_3(uae_u32 opcode) /* BCLR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); + dst &= ~(1 << src); + put_byte(dsta,dst); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_198_3(uae_u32 opcode) /* BCLR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s8 dst = get_byte(dsta); + m68k_areg(regs, dstreg) += areg_byteinc[dstreg]; + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); + dst &= ~(1 << src); + put_byte(dsta,dst); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_1a0_3(uae_u32 opcode) /* BCLR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) - areg_byteinc[dstreg]; +{ uae_s8 dst = get_byte(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); + dst &= ~(1 << src); + put_byte(dsta,dst); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_1a8_3(uae_u32 opcode) /* BCLR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); + dst &= ~(1 << src); + put_byte(dsta,dst); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_1b0_3(uae_u32 opcode) /* BCLR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(2)); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); + dst &= ~(1 << src); + put_byte(dsta,dst); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_1b8_3(uae_u32 opcode) /* BCLR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); + dst &= ~(1 << src); + put_byte(dsta,dst); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_1b9_3(uae_u32 opcode) /* BCLR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = get_ilong(2); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); + dst &= ~(1 << src); + put_byte(dsta,dst); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_1ba_3(uae_u32 opcode) /* BCLR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = 2; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_getpc () + 2; + dsta += (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); + dst &= ~(1 << src); + put_byte(dsta,dst); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_1bb_3(uae_u32 opcode) /* BCLR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = 3; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr dsta = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); + dst &= ~(1 << src); + put_byte(dsta,dst); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_1c0_3(uae_u32 opcode) /* BSET */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + src &= 31; + SET_ZFLG (1 ^ ((dst >> src) & 1)); + dst |= (1 << src); + m68k_dreg(regs, dstreg) = (dst); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_1c8_3(uae_u32 opcode) /* MVPRM */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); + uaecptr memp = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(2); + put_byte(memp, src >> 24); put_byte(memp + 2, src >> 16); + put_byte(memp + 4, src >> 8); put_byte(memp + 6, src); +}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_1d0_3(uae_u32 opcode) /* BSET */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); + dst |= (1 << src); + put_byte(dsta,dst); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_1d8_3(uae_u32 opcode) /* BSET */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s8 dst = get_byte(dsta); + m68k_areg(regs, dstreg) += areg_byteinc[dstreg]; + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); + dst |= (1 << src); + put_byte(dsta,dst); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_1e0_3(uae_u32 opcode) /* BSET */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) - areg_byteinc[dstreg]; +{ uae_s8 dst = get_byte(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); + dst |= (1 << src); + put_byte(dsta,dst); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_1e8_3(uae_u32 opcode) /* BSET */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); + dst |= (1 << src); + put_byte(dsta,dst); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_1f0_3(uae_u32 opcode) /* BSET */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(2)); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); + dst |= (1 << src); + put_byte(dsta,dst); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_1f8_3(uae_u32 opcode) /* BSET */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); + dst |= (1 << src); + put_byte(dsta,dst); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_1f9_3(uae_u32 opcode) /* BSET */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = get_ilong(2); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); + dst |= (1 << src); + put_byte(dsta,dst); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_1fa_3(uae_u32 opcode) /* BSET */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = 2; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_getpc () + 2; + dsta += (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); + dst |= (1 << src); + put_byte(dsta,dst); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_1fb_3(uae_u32 opcode) /* BSET */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = 3; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr dsta = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); + dst |= (1 << src); + put_byte(dsta,dst); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_200_3(uae_u32 opcode) /* AND */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = get_ibyte(2); +{ uae_s8 dst = m68k_dreg(regs, dstreg); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff); +}}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_210_3(uae_u32 opcode) /* AND */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s8 dst = get_byte(dsta); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_218_3(uae_u32 opcode) /* AND */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s8 dst = get_byte(dsta); + m68k_areg(regs, dstreg) += areg_byteinc[dstreg]; + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_220_3(uae_u32 opcode) /* AND */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) - areg_byteinc[dstreg]; +{ uae_s8 dst = get_byte(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_228_3(uae_u32 opcode) /* AND */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(4); +{ uae_s8 dst = get_byte(dsta); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_230_3(uae_u32 opcode) /* AND */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(4)); +{ uae_s8 dst = get_byte(dsta); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_238_3(uae_u32 opcode) /* AND */ +{ +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(4); +{ uae_s8 dst = get_byte(dsta); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_239_3(uae_u32 opcode) /* AND */ +{ +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = get_ilong(4); +{ uae_s8 dst = get_byte(dsta); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(8); +return 12; +} +unsigned long REGPARAM2 op_23c_3(uae_u32 opcode) /* ANDSR */ +{ +{ MakeSR(); +{ uae_s16 src = get_iword(2); + src |= 0xFF00; + regs.sr &= src; + MakeFromSR(); +}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_240_3(uae_u32 opcode) /* AND */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uae_s16 dst = m68k_dreg(regs, dstreg); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff); +}}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_250_3(uae_u32 opcode) /* AND */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s16 dst = get_word(dsta); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_258_3(uae_u32 opcode) /* AND */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s16 dst = get_word(dsta); + m68k_areg(regs, dstreg) += 2; + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_260_3(uae_u32 opcode) /* AND */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 2; +{ uae_s16 dst = get_word(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_268_3(uae_u32 opcode) /* AND */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(4); +{ uae_s16 dst = get_word(dsta); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_270_3(uae_u32 opcode) /* AND */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(4)); +{ uae_s16 dst = get_word(dsta); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_278_3(uae_u32 opcode) /* AND */ +{ +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(4); +{ uae_s16 dst = get_word(dsta); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_279_3(uae_u32 opcode) /* AND */ +{ +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = get_ilong(4); +{ uae_s16 dst = get_word(dsta); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(8); +return 12; +} +unsigned long REGPARAM2 op_27c_3(uae_u32 opcode) /* ANDSR */ +{ +{if (!regs.s) { Exception(8,0); goto endlabel89; } +{ MakeSR(); +{ uae_s16 src = get_iword(2); + regs.sr &= src; + MakeFromSR(); +}}}m68k_incpc(4); +endlabel89: ; +return 4; +} +unsigned long REGPARAM2 op_280_3(uae_u32 opcode) /* AND */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = get_ilong(2); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + m68k_dreg(regs, dstreg) = (src); +}}}m68k_incpc(6); +return 6; +} +unsigned long REGPARAM2 op_290_3(uae_u32 opcode) /* AND */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s32 dst = get_long(dsta); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(6); +return 14; +} +unsigned long REGPARAM2 op_298_3(uae_u32 opcode) /* AND */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s32 dst = get_long(dsta); + m68k_areg(regs, dstreg) += 4; + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(6); +return 14; +} +unsigned long REGPARAM2 op_2a0_3(uae_u32 opcode) /* AND */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 4; +{ uae_s32 dst = get_long(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(6); +return 14; +} +unsigned long REGPARAM2 op_2a8_3(uae_u32 opcode) /* AND */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(6); +{ uae_s32 dst = get_long(dsta); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(8); +return 16; +} +unsigned long REGPARAM2 op_2b0_3(uae_u32 opcode) /* AND */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(6)); +{ uae_s32 dst = get_long(dsta); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(8); +return 16; +} +unsigned long REGPARAM2 op_2b8_3(uae_u32 opcode) /* AND */ +{ +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(6); +{ uae_s32 dst = get_long(dsta); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(8); +return 16; +} +unsigned long REGPARAM2 op_2b9_3(uae_u32 opcode) /* AND */ +{ +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = get_ilong(6); +{ uae_s32 dst = get_long(dsta); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(10); +return 18; +} +unsigned long REGPARAM2 op_400_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = get_ibyte(2); +{ uae_s8 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((newv) & 0xff); +}}}}}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_410_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s8 dst = get_byte(dsta); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(dsta,newv); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_418_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s8 dst = get_byte(dsta); + m68k_areg(regs, dstreg) += areg_byteinc[dstreg]; +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(dsta,newv); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_420_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) - areg_byteinc[dstreg]; +{ uae_s8 dst = get_byte(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(dsta,newv); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_428_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(4); +{ uae_s8 dst = get_byte(dsta); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(dsta,newv); +}}}}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_430_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(4)); +{ uae_s8 dst = get_byte(dsta); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(dsta,newv); +}}}}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_438_3(uae_u32 opcode) /* SUB */ +{ +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(4); +{ uae_s8 dst = get_byte(dsta); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(dsta,newv); +}}}}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_439_3(uae_u32 opcode) /* SUB */ +{ +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = get_ilong(4); +{ uae_s8 dst = get_byte(dsta); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(dsta,newv); +}}}}}}}m68k_incpc(8); +return 12; +} +unsigned long REGPARAM2 op_440_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((newv) & 0xffff); +}}}}}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_450_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s16 dst = get_word(dsta); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(dsta,newv); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_458_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s16 dst = get_word(dsta); + m68k_areg(regs, dstreg) += 2; +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(dsta,newv); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_460_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 2; +{ uae_s16 dst = get_word(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(dsta,newv); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_468_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(4); +{ uae_s16 dst = get_word(dsta); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(dsta,newv); +}}}}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_470_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(4)); +{ uae_s16 dst = get_word(dsta); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(dsta,newv); +}}}}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_478_3(uae_u32 opcode) /* SUB */ +{ +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(4); +{ uae_s16 dst = get_word(dsta); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(dsta,newv); +}}}}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_479_3(uae_u32 opcode) /* SUB */ +{ +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = get_ilong(4); +{ uae_s16 dst = get_word(dsta); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(dsta,newv); +}}}}}}}m68k_incpc(8); +return 12; +} +unsigned long REGPARAM2 op_480_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = get_ilong(2); +{ uae_s32 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}}m68k_incpc(6); +return 6; +} +unsigned long REGPARAM2 op_490_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s32 dst = get_long(dsta); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(dsta,newv); +}}}}}}}m68k_incpc(6); +return 14; +} +unsigned long REGPARAM2 op_498_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s32 dst = get_long(dsta); + m68k_areg(regs, dstreg) += 4; +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(dsta,newv); +}}}}}}}m68k_incpc(6); +return 14; +} +unsigned long REGPARAM2 op_4a0_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 4; +{ uae_s32 dst = get_long(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(dsta,newv); +}}}}}}}m68k_incpc(6); +return 14; +} +unsigned long REGPARAM2 op_4a8_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(6); +{ uae_s32 dst = get_long(dsta); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(dsta,newv); +}}}}}}}m68k_incpc(8); +return 16; +} +unsigned long REGPARAM2 op_4b0_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(6)); +{ uae_s32 dst = get_long(dsta); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(dsta,newv); +}}}}}}}m68k_incpc(8); +return 16; +} +unsigned long REGPARAM2 op_4b8_3(uae_u32 opcode) /* SUB */ +{ +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(6); +{ uae_s32 dst = get_long(dsta); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(dsta,newv); +}}}}}}}m68k_incpc(8); +return 16; +} +unsigned long REGPARAM2 op_4b9_3(uae_u32 opcode) /* SUB */ +{ +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = get_ilong(6); +{ uae_s32 dst = get_long(dsta); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(dsta,newv); +}}}}}}}m68k_incpc(10); +return 18; +} +unsigned long REGPARAM2 op_600_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = get_ibyte(2); +{ uae_s8 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s8)(dst)) + ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u8)(~dst)) < ((uae_u8)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((newv) & 0xff); +}}}}}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_610_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s8 dst = get_byte(dsta); +{{uae_u32 newv = ((uae_s8)(dst)) + ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u8)(~dst)) < ((uae_u8)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(dsta,newv); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_618_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s8 dst = get_byte(dsta); + m68k_areg(regs, dstreg) += areg_byteinc[dstreg]; +{{uae_u32 newv = ((uae_s8)(dst)) + ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u8)(~dst)) < ((uae_u8)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(dsta,newv); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_620_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) - areg_byteinc[dstreg]; +{ uae_s8 dst = get_byte(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{{uae_u32 newv = ((uae_s8)(dst)) + ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u8)(~dst)) < ((uae_u8)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(dsta,newv); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_628_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(4); +{ uae_s8 dst = get_byte(dsta); +{{uae_u32 newv = ((uae_s8)(dst)) + ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u8)(~dst)) < ((uae_u8)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(dsta,newv); +}}}}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_630_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(4)); +{ uae_s8 dst = get_byte(dsta); +{{uae_u32 newv = ((uae_s8)(dst)) + ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u8)(~dst)) < ((uae_u8)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(dsta,newv); +}}}}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_638_3(uae_u32 opcode) /* ADD */ +{ +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(4); +{ uae_s8 dst = get_byte(dsta); +{{uae_u32 newv = ((uae_s8)(dst)) + ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u8)(~dst)) < ((uae_u8)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(dsta,newv); +}}}}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_639_3(uae_u32 opcode) /* ADD */ +{ +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = get_ilong(4); +{ uae_s8 dst = get_byte(dsta); +{{uae_u32 newv = ((uae_s8)(dst)) + ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u8)(~dst)) < ((uae_u8)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(dsta,newv); +}}}}}}}m68k_incpc(8); +return 12; +} +unsigned long REGPARAM2 op_640_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s16)(dst)) + ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u16)(~dst)) < ((uae_u16)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((newv) & 0xffff); +}}}}}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_650_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s16 dst = get_word(dsta); +{{uae_u32 newv = ((uae_s16)(dst)) + ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u16)(~dst)) < ((uae_u16)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(dsta,newv); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_658_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s16 dst = get_word(dsta); + m68k_areg(regs, dstreg) += 2; +{{uae_u32 newv = ((uae_s16)(dst)) + ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u16)(~dst)) < ((uae_u16)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(dsta,newv); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_660_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 2; +{ uae_s16 dst = get_word(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{{uae_u32 newv = ((uae_s16)(dst)) + ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u16)(~dst)) < ((uae_u16)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(dsta,newv); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_668_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(4); +{ uae_s16 dst = get_word(dsta); +{{uae_u32 newv = ((uae_s16)(dst)) + ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u16)(~dst)) < ((uae_u16)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(dsta,newv); +}}}}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_670_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(4)); +{ uae_s16 dst = get_word(dsta); +{{uae_u32 newv = ((uae_s16)(dst)) + ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u16)(~dst)) < ((uae_u16)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(dsta,newv); +}}}}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_678_3(uae_u32 opcode) /* ADD */ +{ +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(4); +{ uae_s16 dst = get_word(dsta); +{{uae_u32 newv = ((uae_s16)(dst)) + ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u16)(~dst)) < ((uae_u16)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(dsta,newv); +}}}}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_679_3(uae_u32 opcode) /* ADD */ +{ +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = get_ilong(4); +{ uae_s16 dst = get_word(dsta); +{{uae_u32 newv = ((uae_s16)(dst)) + ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u16)(~dst)) < ((uae_u16)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(dsta,newv); +}}}}}}}m68k_incpc(8); +return 12; +} +unsigned long REGPARAM2 op_680_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = get_ilong(2); +{ uae_s32 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) + ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u32)(~dst)) < ((uae_u32)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}}m68k_incpc(6); +return 6; +} +unsigned long REGPARAM2 op_690_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s32 dst = get_long(dsta); +{{uae_u32 newv = ((uae_s32)(dst)) + ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u32)(~dst)) < ((uae_u32)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(dsta,newv); +}}}}}}}m68k_incpc(6); +return 14; +} +unsigned long REGPARAM2 op_698_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s32 dst = get_long(dsta); + m68k_areg(regs, dstreg) += 4; +{{uae_u32 newv = ((uae_s32)(dst)) + ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u32)(~dst)) < ((uae_u32)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(dsta,newv); +}}}}}}}m68k_incpc(6); +return 14; +} +unsigned long REGPARAM2 op_6a0_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 4; +{ uae_s32 dst = get_long(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{{uae_u32 newv = ((uae_s32)(dst)) + ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u32)(~dst)) < ((uae_u32)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(dsta,newv); +}}}}}}}m68k_incpc(6); +return 14; +} +unsigned long REGPARAM2 op_6a8_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(6); +{ uae_s32 dst = get_long(dsta); +{{uae_u32 newv = ((uae_s32)(dst)) + ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u32)(~dst)) < ((uae_u32)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(dsta,newv); +}}}}}}}m68k_incpc(8); +return 16; +} +unsigned long REGPARAM2 op_6b0_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(6)); +{ uae_s32 dst = get_long(dsta); +{{uae_u32 newv = ((uae_s32)(dst)) + ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u32)(~dst)) < ((uae_u32)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(dsta,newv); +}}}}}}}m68k_incpc(8); +return 16; +} +unsigned long REGPARAM2 op_6b8_3(uae_u32 opcode) /* ADD */ +{ +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(6); +{ uae_s32 dst = get_long(dsta); +{{uae_u32 newv = ((uae_s32)(dst)) + ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u32)(~dst)) < ((uae_u32)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(dsta,newv); +}}}}}}}m68k_incpc(8); +return 16; +} +unsigned long REGPARAM2 op_6b9_3(uae_u32 opcode) /* ADD */ +{ +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = get_ilong(6); +{ uae_s32 dst = get_long(dsta); +{{uae_u32 newv = ((uae_s32)(dst)) + ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u32)(~dst)) < ((uae_u32)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(dsta,newv); +}}}}}}}m68k_incpc(10); +return 18; +} +unsigned long REGPARAM2 op_800_3(uae_u32 opcode) /* BTST */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + src &= 31; + SET_ZFLG (1 ^ ((dst >> src) & 1)); +}}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_810_3(uae_u32 opcode) /* BTST */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); +}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_818_3(uae_u32 opcode) /* BTST */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s8 dst = get_byte(dsta); + m68k_areg(regs, dstreg) += areg_byteinc[dstreg]; + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); +}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_820_3(uae_u32 opcode) /* BTST */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) - areg_byteinc[dstreg]; +{ uae_s8 dst = get_byte(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); +}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_828_3(uae_u32 opcode) /* BTST */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(4); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); +}}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_830_3(uae_u32 opcode) /* BTST */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(4)); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); +}}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_838_3(uae_u32 opcode) /* BTST */ +{ +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(4); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); +}}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_839_3(uae_u32 opcode) /* BTST */ +{ +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = get_ilong(4); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); +}}}}m68k_incpc(8); +return 10; +} +unsigned long REGPARAM2 op_83a_3(uae_u32 opcode) /* BTST */ +{ + uae_u32 dstreg = 2; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_getpc () + 4; + dsta += (uae_s32)(uae_s16)get_iword(4); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); +}}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_83b_3(uae_u32 opcode) /* BTST */ +{ + uae_u32 dstreg = 3; +{{ uae_s16 src = get_iword(2); +{ uaecptr tmppc = m68k_getpc() + 4; + uaecptr dsta = get_disp_ea_000(tmppc, get_iword(4)); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); +}}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_83c_3(uae_u32 opcode) /* BTST */ +{ +{{ uae_s16 src = get_iword(2); +{ uae_s8 dst = get_ibyte(4); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); +}}}m68k_incpc(6); +return 6; +} +unsigned long REGPARAM2 op_840_3(uae_u32 opcode) /* BCHG */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + src &= 31; + dst ^= (1 << src); + SET_ZFLG ((dst >> src) & 1); + m68k_dreg(regs, dstreg) = (dst); +}}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_850_3(uae_u32 opcode) /* BCHG */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + dst ^= (1 << src); + SET_ZFLG ((dst >> src) & 1); + put_byte(dsta,dst); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_858_3(uae_u32 opcode) /* BCHG */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s8 dst = get_byte(dsta); + m68k_areg(regs, dstreg) += areg_byteinc[dstreg]; + src &= 7; + dst ^= (1 << src); + SET_ZFLG ((dst >> src) & 1); + put_byte(dsta,dst); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_860_3(uae_u32 opcode) /* BCHG */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) - areg_byteinc[dstreg]; +{ uae_s8 dst = get_byte(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + src &= 7; + dst ^= (1 << src); + SET_ZFLG ((dst >> src) & 1); + put_byte(dsta,dst); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_868_3(uae_u32 opcode) /* BCHG */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(4); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + dst ^= (1 << src); + SET_ZFLG ((dst >> src) & 1); + put_byte(dsta,dst); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_870_3(uae_u32 opcode) /* BCHG */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(4)); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + dst ^= (1 << src); + SET_ZFLG ((dst >> src) & 1); + put_byte(dsta,dst); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_878_3(uae_u32 opcode) /* BCHG */ +{ +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(4); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + dst ^= (1 << src); + SET_ZFLG ((dst >> src) & 1); + put_byte(dsta,dst); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_879_3(uae_u32 opcode) /* BCHG */ +{ +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = get_ilong(4); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + dst ^= (1 << src); + SET_ZFLG ((dst >> src) & 1); + put_byte(dsta,dst); +}}}}m68k_incpc(8); +return 12; +} +unsigned long REGPARAM2 op_87a_3(uae_u32 opcode) /* BCHG */ +{ + uae_u32 dstreg = 2; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_getpc () + 4; + dsta += (uae_s32)(uae_s16)get_iword(4); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + dst ^= (1 << src); + SET_ZFLG ((dst >> src) & 1); + put_byte(dsta,dst); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_87b_3(uae_u32 opcode) /* BCHG */ +{ + uae_u32 dstreg = 3; +{{ uae_s16 src = get_iword(2); +{ uaecptr tmppc = m68k_getpc() + 4; + uaecptr dsta = get_disp_ea_000(tmppc, get_iword(4)); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + dst ^= (1 << src); + SET_ZFLG ((dst >> src) & 1); + put_byte(dsta,dst); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_880_3(uae_u32 opcode) /* BCLR */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + src &= 31; + SET_ZFLG (1 ^ ((dst >> src) & 1)); + dst &= ~(1 << src); + m68k_dreg(regs, dstreg) = (dst); +}}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_890_3(uae_u32 opcode) /* BCLR */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); + dst &= ~(1 << src); + put_byte(dsta,dst); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_898_3(uae_u32 opcode) /* BCLR */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s8 dst = get_byte(dsta); + m68k_areg(regs, dstreg) += areg_byteinc[dstreg]; + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); + dst &= ~(1 << src); + put_byte(dsta,dst); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_8a0_3(uae_u32 opcode) /* BCLR */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) - areg_byteinc[dstreg]; +{ uae_s8 dst = get_byte(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); + dst &= ~(1 << src); + put_byte(dsta,dst); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_8a8_3(uae_u32 opcode) /* BCLR */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(4); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); + dst &= ~(1 << src); + put_byte(dsta,dst); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_8b0_3(uae_u32 opcode) /* BCLR */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(4)); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); + dst &= ~(1 << src); + put_byte(dsta,dst); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_8b8_3(uae_u32 opcode) /* BCLR */ +{ +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(4); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); + dst &= ~(1 << src); + put_byte(dsta,dst); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_8b9_3(uae_u32 opcode) /* BCLR */ +{ +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = get_ilong(4); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); + dst &= ~(1 << src); + put_byte(dsta,dst); +}}}}m68k_incpc(8); +return 12; +} +unsigned long REGPARAM2 op_8ba_3(uae_u32 opcode) /* BCLR */ +{ + uae_u32 dstreg = 2; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_getpc () + 4; + dsta += (uae_s32)(uae_s16)get_iword(4); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); + dst &= ~(1 << src); + put_byte(dsta,dst); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_8bb_3(uae_u32 opcode) /* BCLR */ +{ + uae_u32 dstreg = 3; +{{ uae_s16 src = get_iword(2); +{ uaecptr tmppc = m68k_getpc() + 4; + uaecptr dsta = get_disp_ea_000(tmppc, get_iword(4)); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); + dst &= ~(1 << src); + put_byte(dsta,dst); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_8c0_3(uae_u32 opcode) /* BSET */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + src &= 31; + SET_ZFLG (1 ^ ((dst >> src) & 1)); + dst |= (1 << src); + m68k_dreg(regs, dstreg) = (dst); +}}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_8d0_3(uae_u32 opcode) /* BSET */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); + dst |= (1 << src); + put_byte(dsta,dst); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_8d8_3(uae_u32 opcode) /* BSET */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s8 dst = get_byte(dsta); + m68k_areg(regs, dstreg) += areg_byteinc[dstreg]; + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); + dst |= (1 << src); + put_byte(dsta,dst); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_8e0_3(uae_u32 opcode) /* BSET */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) - areg_byteinc[dstreg]; +{ uae_s8 dst = get_byte(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); + dst |= (1 << src); + put_byte(dsta,dst); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_8e8_3(uae_u32 opcode) /* BSET */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(4); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); + dst |= (1 << src); + put_byte(dsta,dst); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_8f0_3(uae_u32 opcode) /* BSET */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(4)); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); + dst |= (1 << src); + put_byte(dsta,dst); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_8f8_3(uae_u32 opcode) /* BSET */ +{ +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(4); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); + dst |= (1 << src); + put_byte(dsta,dst); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_8f9_3(uae_u32 opcode) /* BSET */ +{ +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = get_ilong(4); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); + dst |= (1 << src); + put_byte(dsta,dst); +}}}}m68k_incpc(8); +return 12; +} +unsigned long REGPARAM2 op_8fa_3(uae_u32 opcode) /* BSET */ +{ + uae_u32 dstreg = 2; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_getpc () + 4; + dsta += (uae_s32)(uae_s16)get_iword(4); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); + dst |= (1 << src); + put_byte(dsta,dst); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_8fb_3(uae_u32 opcode) /* BSET */ +{ + uae_u32 dstreg = 3; +{{ uae_s16 src = get_iword(2); +{ uaecptr tmppc = m68k_getpc() + 4; + uaecptr dsta = get_disp_ea_000(tmppc, get_iword(4)); +{ uae_s8 dst = get_byte(dsta); + src &= 7; + SET_ZFLG (1 ^ ((dst >> src) & 1)); + dst |= (1 << src); + put_byte(dsta,dst); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_a00_3(uae_u32 opcode) /* EOR */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = get_ibyte(2); +{ uae_s8 dst = m68k_dreg(regs, dstreg); + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff); +}}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_a10_3(uae_u32 opcode) /* EOR */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s8 dst = get_byte(dsta); + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_a18_3(uae_u32 opcode) /* EOR */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s8 dst = get_byte(dsta); + m68k_areg(regs, dstreg) += areg_byteinc[dstreg]; + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_a20_3(uae_u32 opcode) /* EOR */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) - areg_byteinc[dstreg]; +{ uae_s8 dst = get_byte(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_a28_3(uae_u32 opcode) /* EOR */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(4); +{ uae_s8 dst = get_byte(dsta); + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_a30_3(uae_u32 opcode) /* EOR */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(4)); +{ uae_s8 dst = get_byte(dsta); + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_a38_3(uae_u32 opcode) /* EOR */ +{ +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(4); +{ uae_s8 dst = get_byte(dsta); + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_a39_3(uae_u32 opcode) /* EOR */ +{ +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = get_ilong(4); +{ uae_s8 dst = get_byte(dsta); + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(8); +return 12; +} +unsigned long REGPARAM2 op_a3c_3(uae_u32 opcode) /* EORSR */ +{ +{ MakeSR(); +{ uae_s16 src = get_iword(2); + src &= 0xFF; + regs.sr ^= src; + MakeFromSR(); +}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_a40_3(uae_u32 opcode) /* EOR */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uae_s16 dst = m68k_dreg(regs, dstreg); + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff); +}}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_a50_3(uae_u32 opcode) /* EOR */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s16 dst = get_word(dsta); + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_a58_3(uae_u32 opcode) /* EOR */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s16 dst = get_word(dsta); + m68k_areg(regs, dstreg) += 2; + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_a60_3(uae_u32 opcode) /* EOR */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 2; +{ uae_s16 dst = get_word(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_a68_3(uae_u32 opcode) /* EOR */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(4); +{ uae_s16 dst = get_word(dsta); + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_a70_3(uae_u32 opcode) /* EOR */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(4)); +{ uae_s16 dst = get_word(dsta); + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +#endif + +#ifdef PART_2 +unsigned long REGPARAM2 op_a78_3(uae_u32 opcode) /* EOR */ +{ +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(4); +{ uae_s16 dst = get_word(dsta); + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_a79_3(uae_u32 opcode) /* EOR */ +{ +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = get_ilong(4); +{ uae_s16 dst = get_word(dsta); + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(8); +return 12; +} +unsigned long REGPARAM2 op_a7c_3(uae_u32 opcode) /* EORSR */ +{ +{if (!regs.s) { Exception(8,0); goto endlabel204; } +{ MakeSR(); +{ uae_s16 src = get_iword(2); + regs.sr ^= src; + MakeFromSR(); +}}}m68k_incpc(4); +endlabel204: ; +return 4; +} +unsigned long REGPARAM2 op_a80_3(uae_u32 opcode) /* EOR */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = get_ilong(2); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + m68k_dreg(regs, dstreg) = (src); +}}}m68k_incpc(6); +return 6; +} +unsigned long REGPARAM2 op_a90_3(uae_u32 opcode) /* EOR */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s32 dst = get_long(dsta); + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(6); +return 14; +} +unsigned long REGPARAM2 op_a98_3(uae_u32 opcode) /* EOR */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s32 dst = get_long(dsta); + m68k_areg(regs, dstreg) += 4; + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(6); +return 14; +} +unsigned long REGPARAM2 op_aa0_3(uae_u32 opcode) /* EOR */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 4; +{ uae_s32 dst = get_long(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(6); +return 14; +} +unsigned long REGPARAM2 op_aa8_3(uae_u32 opcode) /* EOR */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(6); +{ uae_s32 dst = get_long(dsta); + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(8); +return 16; +} +unsigned long REGPARAM2 op_ab0_3(uae_u32 opcode) /* EOR */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(6)); +{ uae_s32 dst = get_long(dsta); + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(8); +return 16; +} +unsigned long REGPARAM2 op_ab8_3(uae_u32 opcode) /* EOR */ +{ +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(6); +{ uae_s32 dst = get_long(dsta); + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(8); +return 16; +} +unsigned long REGPARAM2 op_ab9_3(uae_u32 opcode) /* EOR */ +{ +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = get_ilong(6); +{ uae_s32 dst = get_long(dsta); + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(10); +return 18; +} +unsigned long REGPARAM2 op_c00_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = get_ibyte(2); +{ uae_s8 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + SET_NFLG (flgn != 0); +}}}}}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_c10_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s8 dst = get_byte(dsta); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_c18_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s8 dst = get_byte(dsta); + m68k_areg(regs, dstreg) += areg_byteinc[dstreg]; +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_c20_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) - areg_byteinc[dstreg]; +{ uae_s8 dst = get_byte(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_c28_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(4); +{ uae_s8 dst = get_byte(dsta); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_c30_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(4)); +{ uae_s8 dst = get_byte(dsta); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_c38_3(uae_u32 opcode) /* CMP */ +{ +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(4); +{ uae_s8 dst = get_byte(dsta); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_c39_3(uae_u32 opcode) /* CMP */ +{ +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = get_ilong(4); +{ uae_s8 dst = get_byte(dsta); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(8); +return 10; +} +unsigned long REGPARAM2 op_c3a_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 dstreg = 2; +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = m68k_getpc () + 4; + dsta += (uae_s32)(uae_s16)get_iword(4); +{ uae_s8 dst = get_byte(dsta); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_c3b_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 dstreg = 3; +{{ uae_s8 src = get_ibyte(2); +{ uaecptr tmppc = m68k_getpc() + 4; + uaecptr dsta = get_disp_ea_000(tmppc, get_iword(4)); +{ uae_s8 dst = get_byte(dsta); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_c40_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + SET_NFLG (flgn != 0); +}}}}}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_c50_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s16 dst = get_word(dsta); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_c58_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s16 dst = get_word(dsta); + m68k_areg(regs, dstreg) += 2; +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_c60_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 2; +{ uae_s16 dst = get_word(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_c68_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(4); +{ uae_s16 dst = get_word(dsta); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_c70_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(4)); +{ uae_s16 dst = get_word(dsta); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_c78_3(uae_u32 opcode) /* CMP */ +{ +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(4); +{ uae_s16 dst = get_word(dsta); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_c79_3(uae_u32 opcode) /* CMP */ +{ +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = get_ilong(4); +{ uae_s16 dst = get_word(dsta); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(8); +return 10; +} +unsigned long REGPARAM2 op_c7a_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 dstreg = 2; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_getpc () + 4; + dsta += (uae_s32)(uae_s16)get_iword(4); +{ uae_s16 dst = get_word(dsta); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_c7b_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 dstreg = 3; +{{ uae_s16 src = get_iword(2); +{ uaecptr tmppc = m68k_getpc() + 4; + uaecptr dsta = get_disp_ea_000(tmppc, get_iword(4)); +{ uae_s16 dst = get_word(dsta); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_c80_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = get_ilong(2); +{ uae_s32 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + SET_NFLG (flgn != 0); +}}}}}}m68k_incpc(6); +return 6; +} +unsigned long REGPARAM2 op_c90_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s32 dst = get_long(dsta); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_c98_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s32 dst = get_long(dsta); + m68k_areg(regs, dstreg) += 4; +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_ca0_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 4; +{ uae_s32 dst = get_long(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_ca8_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(6); +{ uae_s32 dst = get_long(dsta); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(8); +return 12; +} +unsigned long REGPARAM2 op_cb0_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(6)); +{ uae_s32 dst = get_long(dsta); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(8); +return 12; +} +unsigned long REGPARAM2 op_cb8_3(uae_u32 opcode) /* CMP */ +{ +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(6); +{ uae_s32 dst = get_long(dsta); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(8); +return 12; +} +unsigned long REGPARAM2 op_cb9_3(uae_u32 opcode) /* CMP */ +{ +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = get_ilong(6); +{ uae_s32 dst = get_long(dsta); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(10); +return 14; +} +unsigned long REGPARAM2 op_cba_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 dstreg = 2; +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = m68k_getpc () + 6; + dsta += (uae_s32)(uae_s16)get_iword(6); +{ uae_s32 dst = get_long(dsta); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(8); +return 12; +} +unsigned long REGPARAM2 op_cbb_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 dstreg = 3; +{{ uae_s32 src = get_ilong(2); +{ uaecptr tmppc = m68k_getpc() + 6; + uaecptr dsta = get_disp_ea_000(tmppc, get_iword(6)); +{ uae_s32 dst = get_long(dsta); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(8); +return 12; +} +unsigned long REGPARAM2 op_1000_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_1010_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s8 src = get_byte(srca); +{ CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff); +}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_1018_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s8 src = get_byte(srca); + m68k_areg(regs, srcreg) += areg_byteinc[srcreg]; +{ CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff); +}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_1020_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - areg_byteinc[srcreg]; +{ uae_s8 src = get_byte(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff); +}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_1028_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); +{ CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff); +}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_1030_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s8 src = get_byte(srca); +{ CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff); +}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_1038_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); +{ CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff); +}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_1039_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_ilong(2); +{ uae_s8 src = get_byte(srca); +{ CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff); +}}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_103a_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); +{ CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff); +}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_103b_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s8 src = get_byte(srca); +{ CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff); +}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_103c_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s8 src = get_ibyte(2); +{ CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff); +}}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_1080_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_1090_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_1098_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s8 src = get_byte(srca); + m68k_areg(regs, srcreg) += areg_byteinc[srcreg]; +{ uaecptr dsta = m68k_areg(regs, dstreg); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_10a0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - areg_byteinc[srcreg]; +{ uae_s8 src = get_byte(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uaecptr dsta = m68k_areg(regs, dstreg); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_10a8_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_10b0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_10b8_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_10b9_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_ilong(2); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_10ba_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_10bb_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_10bc_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_10c0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); + m68k_areg(regs, dstreg) += areg_byteinc[dstreg]; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_10d0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg); + m68k_areg(regs, dstreg) += areg_byteinc[dstreg]; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_10d8_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s8 src = get_byte(srca); + m68k_areg(regs, srcreg) += areg_byteinc[srcreg]; +{ uaecptr dsta = m68k_areg(regs, dstreg); + m68k_areg(regs, dstreg) += areg_byteinc[dstreg]; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_10e0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - areg_byteinc[srcreg]; +{ uae_s8 src = get_byte(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uaecptr dsta = m68k_areg(regs, dstreg); + m68k_areg(regs, dstreg) += areg_byteinc[dstreg]; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_10e8_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg); + m68k_areg(regs, dstreg) += areg_byteinc[dstreg]; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_10f0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg); + m68k_areg(regs, dstreg) += areg_byteinc[dstreg]; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_10f8_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg); + m68k_areg(regs, dstreg) += areg_byteinc[dstreg]; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_10f9_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_ilong(2); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg); + m68k_areg(regs, dstreg) += areg_byteinc[dstreg]; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_10fa_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg); + m68k_areg(regs, dstreg) += areg_byteinc[dstreg]; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_10fb_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg); + m68k_areg(regs, dstreg) += areg_byteinc[dstreg]; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_10fc_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); + m68k_areg(regs, dstreg) += areg_byteinc[dstreg]; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_1100_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) - areg_byteinc[dstreg]; + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_1110_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg) - areg_byteinc[dstreg]; + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_1118_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s8 src = get_byte(srca); + m68k_areg(regs, srcreg) += areg_byteinc[srcreg]; +{ uaecptr dsta = m68k_areg(regs, dstreg) - areg_byteinc[dstreg]; + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_1120_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - areg_byteinc[srcreg]; +{ uae_s8 src = get_byte(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uaecptr dsta = m68k_areg(regs, dstreg) - areg_byteinc[dstreg]; + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_1128_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg) - areg_byteinc[dstreg]; + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_1130_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg) - areg_byteinc[dstreg]; + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_1138_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg) - areg_byteinc[dstreg]; + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_1139_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_ilong(2); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg) - areg_byteinc[dstreg]; + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_113a_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg) - areg_byteinc[dstreg]; + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_113b_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg) - areg_byteinc[dstreg]; + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_113c_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) - areg_byteinc[dstreg]; + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_1140_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_1150_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_1158_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s8 src = get_byte(srca); + m68k_areg(regs, srcreg) += areg_byteinc[srcreg]; +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_1160_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - areg_byteinc[srcreg]; +{ uae_s8 src = get_byte(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_1168_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_1170_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_1178_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_1179_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_ilong(2); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(6); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(8); +return 12; +} +unsigned long REGPARAM2 op_117a_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_117b_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_117c_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_1180_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(2)); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_1190_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(2)); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_1198_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s8 src = get_byte(srca); + m68k_areg(regs, srcreg) += areg_byteinc[srcreg]; +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(2)); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_11a0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - areg_byteinc[srcreg]; +{ uae_s8 src = get_byte(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(2)); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_11a8_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(4)); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_11b0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(4)); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_11b8_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(4)); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_11b9_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_ilong(2); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(6)); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(8); +return 12; +} +unsigned long REGPARAM2 op_11ba_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(4)); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_11bb_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(4)); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_11bc_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(4)); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_11c0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_11d0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_11d8_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s8 src = get_byte(srca); + m68k_areg(regs, srcreg) += areg_byteinc[srcreg]; +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_11e0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) - areg_byteinc[srcreg]; +{ uae_s8 src = get_byte(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_11e8_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_11f0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_11f8_3(uae_u32 opcode) /* MOVE */ +{ +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_11f9_3(uae_u32 opcode) /* MOVE */ +{ +{{ uaecptr srca = get_ilong(2); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(6); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(8); +return 12; +} +unsigned long REGPARAM2 op_11fa_3(uae_u32 opcode) /* MOVE */ +{ +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_11fb_3(uae_u32 opcode) /* MOVE */ +{ +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_11fc_3(uae_u32 opcode) /* MOVE */ +{ +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_13c0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = get_ilong(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_13d0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = get_ilong(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_13d8_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s8 src = get_byte(srca); + m68k_areg(regs, srcreg) += areg_byteinc[srcreg]; +{ uaecptr dsta = get_ilong(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_13e0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) - areg_byteinc[srcreg]; +{ uae_s8 src = get_byte(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uaecptr dsta = get_ilong(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_13e8_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = get_ilong(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(8); +return 12; +} +unsigned long REGPARAM2 op_13f0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = get_ilong(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(8); +return 12; +} +unsigned long REGPARAM2 op_13f8_3(uae_u32 opcode) /* MOVE */ +{ +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = get_ilong(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(8); +return 12; +} +unsigned long REGPARAM2 op_13f9_3(uae_u32 opcode) /* MOVE */ +{ +{{ uaecptr srca = get_ilong(2); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = get_ilong(6); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(10); +return 14; +} +unsigned long REGPARAM2 op_13fa_3(uae_u32 opcode) /* MOVE */ +{ +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = get_ilong(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(8); +return 12; +} +unsigned long REGPARAM2 op_13fb_3(uae_u32 opcode) /* MOVE */ +{ +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s8 src = get_byte(srca); +{ uaecptr dsta = get_ilong(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(8); +return 12; +} +unsigned long REGPARAM2 op_13fc_3(uae_u32 opcode) /* MOVE */ +{ +{{ uae_s8 src = get_ibyte(2); +{ uaecptr dsta = get_ilong(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}m68k_incpc(8); +return 10; +} +unsigned long REGPARAM2 op_2000_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + m68k_dreg(regs, dstreg) = (src); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_2008_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s32 src = m68k_areg(regs, srcreg); +{ CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + m68k_dreg(regs, dstreg) = (src); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_2010_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s32 src = get_long(srca); +{ CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + m68k_dreg(regs, dstreg) = (src); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_2018_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s32 src = get_long(srca); + m68k_areg(regs, srcreg) += 4; +{ CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + m68k_dreg(regs, dstreg) = (src); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_2020_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - 4; +{ uae_s32 src = get_long(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + m68k_dreg(regs, dstreg) = (src); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_2028_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + m68k_dreg(regs, dstreg) = (src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_2030_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s32 src = get_long(srca); +{ CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + m68k_dreg(regs, dstreg) = (src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_2038_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + m68k_dreg(regs, dstreg) = (src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_2039_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_ilong(2); +{ uae_s32 src = get_long(srca); +{ CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + m68k_dreg(regs, dstreg) = (src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_203a_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + m68k_dreg(regs, dstreg) = (src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_203b_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s32 src = get_long(srca); +{ CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + m68k_dreg(regs, dstreg) = (src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_203c_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s32 src = get_ilong(2); +{ CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + m68k_dreg(regs, dstreg) = (src); +}}}m68k_incpc(6); +return 6; +} +unsigned long REGPARAM2 op_2040_3(uae_u32 opcode) /* MOVEA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uae_u32 val = src; + m68k_areg(regs, dstreg) = (val); + if (dstreg == 7) CHECK_STACK_POINTER_ASSIGNMENT (); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_2048_3(uae_u32 opcode) /* MOVEA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s32 src = m68k_areg(regs, srcreg); +{ uae_u32 val = src; + m68k_areg(regs, dstreg) = (val); + if (dstreg == 7) CHECK_STACK_POINTER_ASSIGNMENT (); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_2050_3(uae_u32 opcode) /* MOVEA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s32 src = get_long(srca); +{ uae_u32 val = src; + m68k_areg(regs, dstreg) = (val); + if (dstreg == 7) CHECK_STACK_POINTER_ASSIGNMENT (); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_2058_3(uae_u32 opcode) /* MOVEA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s32 src = get_long(srca); + m68k_areg(regs, srcreg) += 4; +{ uae_u32 val = src; + m68k_areg(regs, dstreg) = (val); + if (dstreg == 7) CHECK_STACK_POINTER_ASSIGNMENT (); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_2060_3(uae_u32 opcode) /* MOVEA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - 4; +{ uae_s32 src = get_long(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_u32 val = src; + m68k_areg(regs, dstreg) = (val); + if (dstreg == 7) CHECK_STACK_POINTER_ASSIGNMENT (); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_2068_3(uae_u32 opcode) /* MOVEA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uae_u32 val = src; + m68k_areg(regs, dstreg) = (val); + if (dstreg == 7) CHECK_STACK_POINTER_ASSIGNMENT (); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_2070_3(uae_u32 opcode) /* MOVEA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s32 src = get_long(srca); +{ uae_u32 val = src; + m68k_areg(regs, dstreg) = (val); + if (dstreg == 7) CHECK_STACK_POINTER_ASSIGNMENT (); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_2078_3(uae_u32 opcode) /* MOVEA */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uae_u32 val = src; + m68k_areg(regs, dstreg) = (val); + if (dstreg == 7) CHECK_STACK_POINTER_ASSIGNMENT (); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_2079_3(uae_u32 opcode) /* MOVEA */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_ilong(2); +{ uae_s32 src = get_long(srca); +{ uae_u32 val = src; + m68k_areg(regs, dstreg) = (val); + if (dstreg == 7) CHECK_STACK_POINTER_ASSIGNMENT (); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_207a_3(uae_u32 opcode) /* MOVEA */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uae_u32 val = src; + m68k_areg(regs, dstreg) = (val); + if (dstreg == 7) CHECK_STACK_POINTER_ASSIGNMENT (); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_207b_3(uae_u32 opcode) /* MOVEA */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s32 src = get_long(srca); +{ uae_u32 val = src; + m68k_areg(regs, dstreg) = (val); + if (dstreg == 7) CHECK_STACK_POINTER_ASSIGNMENT (); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_207c_3(uae_u32 opcode) /* MOVEA */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s32 src = get_ilong(2); +{ uae_u32 val = src; + m68k_areg(regs, dstreg) = (val); + if (dstreg == 7) CHECK_STACK_POINTER_ASSIGNMENT (); +}}}m68k_incpc(6); +return 6; +} +unsigned long REGPARAM2 op_2080_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_2088_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s32 src = m68k_areg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_2090_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(2); +return 10; +} +unsigned long REGPARAM2 op_2098_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s32 src = get_long(srca); + m68k_areg(regs, srcreg) += 4; +{ uaecptr dsta = m68k_areg(regs, dstreg); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(2); +return 10; +} +unsigned long REGPARAM2 op_20a0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - 4; +{ uae_s32 src = get_long(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uaecptr dsta = m68k_areg(regs, dstreg); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(2); +return 10; +} +unsigned long REGPARAM2 op_20a8_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_20b0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_20b8_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_20b9_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_ilong(2); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(6); +return 14; +} +unsigned long REGPARAM2 op_20ba_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_20bb_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_20bc_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_20c0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); + m68k_areg(regs, dstreg) += 4; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_20c8_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s32 src = m68k_areg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); + m68k_areg(regs, dstreg) += 4; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_20d0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg); + m68k_areg(regs, dstreg) += 4; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(2); +return 10; +} +unsigned long REGPARAM2 op_20d8_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s32 src = get_long(srca); + m68k_areg(regs, srcreg) += 4; +{ uaecptr dsta = m68k_areg(regs, dstreg); + m68k_areg(regs, dstreg) += 4; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(2); +return 10; +} +unsigned long REGPARAM2 op_20e0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - 4; +{ uae_s32 src = get_long(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uaecptr dsta = m68k_areg(regs, dstreg); + m68k_areg(regs, dstreg) += 4; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(2); +return 10; +} +unsigned long REGPARAM2 op_20e8_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg); + m68k_areg(regs, dstreg) += 4; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_20f0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg); + m68k_areg(regs, dstreg) += 4; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_20f8_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg); + m68k_areg(regs, dstreg) += 4; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_20f9_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_ilong(2); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg); + m68k_areg(regs, dstreg) += 4; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(6); +return 14; +} +unsigned long REGPARAM2 op_20fa_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg); + m68k_areg(regs, dstreg) += 4; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_20fb_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg); + m68k_areg(regs, dstreg) += 4; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_20fc_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); + m68k_areg(regs, dstreg) += 4; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_2100_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 4; + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_2108_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s32 src = m68k_areg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 4; + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_2110_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 4; + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(2); +return 10; +} +unsigned long REGPARAM2 op_2118_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s32 src = get_long(srca); + m68k_areg(regs, srcreg) += 4; +{ uaecptr dsta = m68k_areg(regs, dstreg) - 4; + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(2); +return 10; +} +unsigned long REGPARAM2 op_2120_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - 4; +{ uae_s32 src = get_long(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 4; + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(2); +return 10; +} +unsigned long REGPARAM2 op_2128_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 4; + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_2130_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 4; + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_2138_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 4; + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_2139_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_ilong(2); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 4; + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(6); +return 14; +} +unsigned long REGPARAM2 op_213a_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 4; + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_213b_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 4; + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(4); +return 12; +} +#endif + +#ifdef PART_3 +unsigned long REGPARAM2 op_213c_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 4; + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_2140_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_2148_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s32 src = m68k_areg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_2150_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_2158_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s32 src = get_long(srca); + m68k_areg(regs, srcreg) += 4; +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_2160_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - 4; +{ uae_s32 src = get_long(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_2168_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(6); +return 14; +} +unsigned long REGPARAM2 op_2170_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(6); +return 14; +} +unsigned long REGPARAM2 op_2178_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(6); +return 14; +} +unsigned long REGPARAM2 op_2179_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_ilong(2); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(6); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(8); +return 16; +} +unsigned long REGPARAM2 op_217a_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(6); +return 14; +} +unsigned long REGPARAM2 op_217b_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(6); +return 14; +} +unsigned long REGPARAM2 op_217c_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(6); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}m68k_incpc(8); +return 12; +} +unsigned long REGPARAM2 op_2180_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(2)); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_2188_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s32 src = m68k_areg(regs, srcreg); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(2)); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_2190_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(2)); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_2198_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s32 src = get_long(srca); + m68k_areg(regs, srcreg) += 4; +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(2)); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_21a0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - 4; +{ uae_s32 src = get_long(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(2)); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_21a8_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(4)); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(6); +return 14; +} +unsigned long REGPARAM2 op_21b0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(4)); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(6); +return 14; +} +unsigned long REGPARAM2 op_21b8_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(4)); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(6); +return 14; +} +unsigned long REGPARAM2 op_21b9_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_ilong(2); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(6)); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(8); +return 16; +} +unsigned long REGPARAM2 op_21ba_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(4)); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(6); +return 14; +} +unsigned long REGPARAM2 op_21bb_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(4)); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(6); +return 14; +} +unsigned long REGPARAM2 op_21bc_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(6)); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}m68k_incpc(8); +return 12; +} +unsigned long REGPARAM2 op_21c0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_21c8_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s32 src = m68k_areg(regs, srcreg); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_21d0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_21d8_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s32 src = get_long(srca); + m68k_areg(regs, srcreg) += 4; +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_21e0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) - 4; +{ uae_s32 src = get_long(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_21e8_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(6); +return 14; +} +unsigned long REGPARAM2 op_21f0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(6); +return 14; +} +unsigned long REGPARAM2 op_21f8_3(uae_u32 opcode) /* MOVE */ +{ +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(6); +return 14; +} +unsigned long REGPARAM2 op_21f9_3(uae_u32 opcode) /* MOVE */ +{ +{{ uaecptr srca = get_ilong(2); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(6); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(8); +return 16; +} +unsigned long REGPARAM2 op_21fa_3(uae_u32 opcode) /* MOVE */ +{ +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(6); +return 14; +} +unsigned long REGPARAM2 op_21fb_3(uae_u32 opcode) /* MOVE */ +{ +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(6); +return 14; +} +unsigned long REGPARAM2 op_21fc_3(uae_u32 opcode) /* MOVE */ +{ +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(6); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}m68k_incpc(8); +return 12; +} +unsigned long REGPARAM2 op_23c0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = get_ilong(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_23c8_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s32 src = m68k_areg(regs, srcreg); +{ uaecptr dsta = get_ilong(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_23d0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = get_ilong(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(6); +return 14; +} +unsigned long REGPARAM2 op_23d8_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s32 src = get_long(srca); + m68k_areg(regs, srcreg) += 4; +{ uaecptr dsta = get_ilong(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(6); +return 14; +} +unsigned long REGPARAM2 op_23e0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) - 4; +{ uae_s32 src = get_long(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uaecptr dsta = get_ilong(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(6); +return 14; +} +unsigned long REGPARAM2 op_23e8_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = get_ilong(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(8); +return 16; +} +unsigned long REGPARAM2 op_23f0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = get_ilong(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(8); +return 16; +} +unsigned long REGPARAM2 op_23f8_3(uae_u32 opcode) /* MOVE */ +{ +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = get_ilong(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(8); +return 16; +} +unsigned long REGPARAM2 op_23f9_3(uae_u32 opcode) /* MOVE */ +{ +{{ uaecptr srca = get_ilong(2); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = get_ilong(6); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(10); +return 18; +} +unsigned long REGPARAM2 op_23fa_3(uae_u32 opcode) /* MOVE */ +{ +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = get_ilong(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(8); +return 16; +} +unsigned long REGPARAM2 op_23fb_3(uae_u32 opcode) /* MOVE */ +{ +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s32 src = get_long(srca); +{ uaecptr dsta = get_ilong(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(8); +return 16; +} +unsigned long REGPARAM2 op_23fc_3(uae_u32 opcode) /* MOVE */ +{ +{{ uae_s32 src = get_ilong(2); +{ uaecptr dsta = get_ilong(6); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}m68k_incpc(10); +return 14; +} +unsigned long REGPARAM2 op_3000_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_3008_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = m68k_areg(regs, srcreg); +{ CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_3010_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); +{ CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff); +}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_3018_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); + m68k_areg(regs, srcreg) += 2; +{ CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff); +}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_3020_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - 2; +{ uae_s16 src = get_word(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff); +}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_3028_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff); +}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_3030_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s16 src = get_word(srca); +{ CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff); +}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_3038_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff); +}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_3039_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_ilong(2); +{ uae_s16 src = get_word(srca); +{ CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff); +}}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_303a_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff); +}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_303b_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s16 src = get_word(srca); +{ CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff); +}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_303c_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = get_iword(2); +{ CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff); +}}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_3040_3(uae_u32 opcode) /* MOVEA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uae_u32 val = (uae_s32)(uae_s16)src; + m68k_areg(regs, dstreg) = (val); + if (dstreg == 7) CHECK_STACK_POINTER_ASSIGNMENT (); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_3048_3(uae_u32 opcode) /* MOVEA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = m68k_areg(regs, srcreg); +{ uae_u32 val = (uae_s32)(uae_s16)src; + m68k_areg(regs, dstreg) = (val); + if (dstreg == 7) CHECK_STACK_POINTER_ASSIGNMENT (); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_3050_3(uae_u32 opcode) /* MOVEA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); +{ uae_u32 val = (uae_s32)(uae_s16)src; + m68k_areg(regs, dstreg) = (val); + if (dstreg == 7) CHECK_STACK_POINTER_ASSIGNMENT (); +}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_3058_3(uae_u32 opcode) /* MOVEA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); + m68k_areg(regs, srcreg) += 2; +{ uae_u32 val = (uae_s32)(uae_s16)src; + m68k_areg(regs, dstreg) = (val); + if (dstreg == 7) CHECK_STACK_POINTER_ASSIGNMENT (); +}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_3060_3(uae_u32 opcode) /* MOVEA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - 2; +{ uae_s16 src = get_word(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_u32 val = (uae_s32)(uae_s16)src; + m68k_areg(regs, dstreg) = (val); + if (dstreg == 7) CHECK_STACK_POINTER_ASSIGNMENT (); +}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_3068_3(uae_u32 opcode) /* MOVEA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uae_u32 val = (uae_s32)(uae_s16)src; + m68k_areg(regs, dstreg) = (val); + if (dstreg == 7) CHECK_STACK_POINTER_ASSIGNMENT (); +}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_3070_3(uae_u32 opcode) /* MOVEA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s16 src = get_word(srca); +{ uae_u32 val = (uae_s32)(uae_s16)src; + m68k_areg(regs, dstreg) = (val); + if (dstreg == 7) CHECK_STACK_POINTER_ASSIGNMENT (); +}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_3078_3(uae_u32 opcode) /* MOVEA */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uae_u32 val = (uae_s32)(uae_s16)src; + m68k_areg(regs, dstreg) = (val); + if (dstreg == 7) CHECK_STACK_POINTER_ASSIGNMENT (); +}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_3079_3(uae_u32 opcode) /* MOVEA */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_ilong(2); +{ uae_s16 src = get_word(srca); +{ uae_u32 val = (uae_s32)(uae_s16)src; + m68k_areg(regs, dstreg) = (val); + if (dstreg == 7) CHECK_STACK_POINTER_ASSIGNMENT (); +}}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_307a_3(uae_u32 opcode) /* MOVEA */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uae_u32 val = (uae_s32)(uae_s16)src; + m68k_areg(regs, dstreg) = (val); + if (dstreg == 7) CHECK_STACK_POINTER_ASSIGNMENT (); +}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_307b_3(uae_u32 opcode) /* MOVEA */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s16 src = get_word(srca); +{ uae_u32 val = (uae_s32)(uae_s16)src; + m68k_areg(regs, dstreg) = (val); + if (dstreg == 7) CHECK_STACK_POINTER_ASSIGNMENT (); +}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_307c_3(uae_u32 opcode) /* MOVEA */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = get_iword(2); +{ uae_u32 val = (uae_s32)(uae_s16)src; + m68k_areg(regs, dstreg) = (val); + if (dstreg == 7) CHECK_STACK_POINTER_ASSIGNMENT (); +}}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_3080_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_3088_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = m68k_areg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_3090_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_3098_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); + m68k_areg(regs, srcreg) += 2; +{ uaecptr dsta = m68k_areg(regs, dstreg); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_30a0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - 2; +{ uae_s16 src = get_word(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uaecptr dsta = m68k_areg(regs, dstreg); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_30a8_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_30b0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_30b8_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_30b9_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_ilong(2); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_30ba_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_30bb_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_30bc_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_30c0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); + m68k_areg(regs, dstreg) += 2; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_30c8_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = m68k_areg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); + m68k_areg(regs, dstreg) += 2; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_30d0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg); + m68k_areg(regs, dstreg) += 2; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_30d8_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); + m68k_areg(regs, srcreg) += 2; +{ uaecptr dsta = m68k_areg(regs, dstreg); + m68k_areg(regs, dstreg) += 2; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_30e0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - 2; +{ uae_s16 src = get_word(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uaecptr dsta = m68k_areg(regs, dstreg); + m68k_areg(regs, dstreg) += 2; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_30e8_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg); + m68k_areg(regs, dstreg) += 2; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_30f0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg); + m68k_areg(regs, dstreg) += 2; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_30f8_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg); + m68k_areg(regs, dstreg) += 2; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_30f9_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_ilong(2); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg); + m68k_areg(regs, dstreg) += 2; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_30fa_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg); + m68k_areg(regs, dstreg) += 2; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_30fb_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg); + m68k_areg(regs, dstreg) += 2; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_30fc_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_areg(regs, dstreg); + m68k_areg(regs, dstreg) += 2; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_3100_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 2; + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_3108_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = m68k_areg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 2; + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_3110_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 2; + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_3118_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); + m68k_areg(regs, srcreg) += 2; +{ uaecptr dsta = m68k_areg(regs, dstreg) - 2; + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_3120_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - 2; +{ uae_s16 src = get_word(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 2; + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_3128_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 2; + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_3130_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 2; + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_3138_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 2; + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_3139_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_ilong(2); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 2; + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_313a_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 2; + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_313b_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 2; + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_313c_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 2; + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_3140_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_3148_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = m68k_areg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_3150_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_3158_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); + m68k_areg(regs, srcreg) += 2; +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_3160_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - 2; +{ uae_s16 src = get_word(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_3168_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_3170_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_3178_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_3179_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_ilong(2); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(6); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(8); +return 12; +} +unsigned long REGPARAM2 op_317a_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_317b_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_317c_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_3180_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(2)); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_3188_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = m68k_areg(regs, srcreg); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(2)); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_3190_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(2)); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_3198_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); + m68k_areg(regs, srcreg) += 2; +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(2)); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_31a0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - 2; +{ uae_s16 src = get_word(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(2)); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_31a8_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(4)); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_31b0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(4)); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_31b8_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(4)); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_31b9_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_ilong(2); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(6)); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(8); +return 12; +} +unsigned long REGPARAM2 op_31ba_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(4)); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_31bb_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(4)); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_31bc_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(4)); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_31c0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_31c8_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s16 src = m68k_areg(regs, srcreg); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_31d0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_31d8_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); + m68k_areg(regs, srcreg) += 2; +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_31e0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) - 2; +{ uae_s16 src = get_word(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_31e8_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_31f0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_31f8_3(uae_u32 opcode) /* MOVE */ +{ +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_31f9_3(uae_u32 opcode) /* MOVE */ +{ +{{ uaecptr srca = get_ilong(2); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(6); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(8); +return 12; +} +unsigned long REGPARAM2 op_31fa_3(uae_u32 opcode) /* MOVE */ +{ +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_31fb_3(uae_u32 opcode) /* MOVE */ +{ +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_31fc_3(uae_u32 opcode) /* MOVE */ +{ +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_33c0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = get_ilong(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_33c8_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s16 src = m68k_areg(regs, srcreg); +{ uaecptr dsta = get_ilong(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_33d0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = get_ilong(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_33d8_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); + m68k_areg(regs, srcreg) += 2; +{ uaecptr dsta = get_ilong(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_33e0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) - 2; +{ uae_s16 src = get_word(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uaecptr dsta = get_ilong(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_33e8_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = get_ilong(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(8); +return 12; +} +unsigned long REGPARAM2 op_33f0_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = get_ilong(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(8); +return 12; +} +unsigned long REGPARAM2 op_33f8_3(uae_u32 opcode) /* MOVE */ +{ +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = get_ilong(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(8); +return 12; +} +unsigned long REGPARAM2 op_33f9_3(uae_u32 opcode) /* MOVE */ +{ +{{ uaecptr srca = get_ilong(2); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = get_ilong(6); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(10); +return 14; +} +unsigned long REGPARAM2 op_33fa_3(uae_u32 opcode) /* MOVE */ +{ +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = get_ilong(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(8); +return 12; +} +unsigned long REGPARAM2 op_33fb_3(uae_u32 opcode) /* MOVE */ +{ +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s16 src = get_word(srca); +{ uaecptr dsta = get_ilong(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(8); +return 12; +} +unsigned long REGPARAM2 op_33fc_3(uae_u32 opcode) /* MOVE */ +{ +{{ uae_s16 src = get_iword(2); +{ uaecptr dsta = get_ilong(4); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}m68k_incpc(8); +return 10; +} +unsigned long REGPARAM2 op_4000_3(uae_u32 opcode) /* NEGX */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uae_u32 newv = 0 - src - (GET_XFLG ? 1 : 0); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(0)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_VFLG ((flgs ^ flgo) & (flgo ^ flgn)); + SET_CFLG (flgs ^ ((flgs ^ flgn) & (flgo ^ flgn))); + COPY_CARRY; + SET_ZFLG (GET_ZFLG & (((uae_s8)(newv)) == 0)); + SET_NFLG (((uae_s8)(newv)) < 0); + m68k_dreg(regs, srcreg) = (m68k_dreg(regs, srcreg) & ~0xff) | ((newv) & 0xff); +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_4010_3(uae_u32 opcode) /* NEGX */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s8 src = get_byte(srca); +{ uae_u32 newv = 0 - src - (GET_XFLG ? 1 : 0); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(0)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_VFLG ((flgs ^ flgo) & (flgo ^ flgn)); + SET_CFLG (flgs ^ ((flgs ^ flgn) & (flgo ^ flgn))); + COPY_CARRY; + SET_ZFLG (GET_ZFLG & (((uae_s8)(newv)) == 0)); + SET_NFLG (((uae_s8)(newv)) < 0); + put_byte(srca,newv); +}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_4018_3(uae_u32 opcode) /* NEGX */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s8 src = get_byte(srca); + m68k_areg(regs, srcreg) += areg_byteinc[srcreg]; +{ uae_u32 newv = 0 - src - (GET_XFLG ? 1 : 0); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(0)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_VFLG ((flgs ^ flgo) & (flgo ^ flgn)); + SET_CFLG (flgs ^ ((flgs ^ flgn) & (flgo ^ flgn))); + COPY_CARRY; + SET_ZFLG (GET_ZFLG & (((uae_s8)(newv)) == 0)); + SET_NFLG (((uae_s8)(newv)) < 0); + put_byte(srca,newv); +}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_4020_3(uae_u32 opcode) /* NEGX */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) - areg_byteinc[srcreg]; +{ uae_s8 src = get_byte(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_u32 newv = 0 - src - (GET_XFLG ? 1 : 0); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(0)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_VFLG ((flgs ^ flgo) & (flgo ^ flgn)); + SET_CFLG (flgs ^ ((flgs ^ flgn) & (flgo ^ flgn))); + COPY_CARRY; + SET_ZFLG (GET_ZFLG & (((uae_s8)(newv)) == 0)); + SET_NFLG (((uae_s8)(newv)) < 0); + put_byte(srca,newv); +}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_4028_3(uae_u32 opcode) /* NEGX */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); +{ uae_u32 newv = 0 - src - (GET_XFLG ? 1 : 0); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(0)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_VFLG ((flgs ^ flgo) & (flgo ^ flgn)); + SET_CFLG (flgs ^ ((flgs ^ flgn) & (flgo ^ flgn))); + COPY_CARRY; + SET_ZFLG (GET_ZFLG & (((uae_s8)(newv)) == 0)); + SET_NFLG (((uae_s8)(newv)) < 0); + put_byte(srca,newv); +}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_4030_3(uae_u32 opcode) /* NEGX */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s8 src = get_byte(srca); +{ uae_u32 newv = 0 - src - (GET_XFLG ? 1 : 0); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(0)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_VFLG ((flgs ^ flgo) & (flgo ^ flgn)); + SET_CFLG (flgs ^ ((flgs ^ flgn) & (flgo ^ flgn))); + COPY_CARRY; + SET_ZFLG (GET_ZFLG & (((uae_s8)(newv)) == 0)); + SET_NFLG (((uae_s8)(newv)) < 0); + put_byte(srca,newv); +}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_4038_3(uae_u32 opcode) /* NEGX */ +{ +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); +{ uae_u32 newv = 0 - src - (GET_XFLG ? 1 : 0); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(0)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_VFLG ((flgs ^ flgo) & (flgo ^ flgn)); + SET_CFLG (flgs ^ ((flgs ^ flgn) & (flgo ^ flgn))); + COPY_CARRY; + SET_ZFLG (GET_ZFLG & (((uae_s8)(newv)) == 0)); + SET_NFLG (((uae_s8)(newv)) < 0); + put_byte(srca,newv); +}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_4039_3(uae_u32 opcode) /* NEGX */ +{ +{{ uaecptr srca = get_ilong(2); +{ uae_s8 src = get_byte(srca); +{ uae_u32 newv = 0 - src - (GET_XFLG ? 1 : 0); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(0)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_VFLG ((flgs ^ flgo) & (flgo ^ flgn)); + SET_CFLG (flgs ^ ((flgs ^ flgn) & (flgo ^ flgn))); + COPY_CARRY; + SET_ZFLG (GET_ZFLG & (((uae_s8)(newv)) == 0)); + SET_NFLG (((uae_s8)(newv)) < 0); + put_byte(srca,newv); +}}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_4040_3(uae_u32 opcode) /* NEGX */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uae_u32 newv = 0 - src - (GET_XFLG ? 1 : 0); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(0)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_VFLG ((flgs ^ flgo) & (flgo ^ flgn)); + SET_CFLG (flgs ^ ((flgs ^ flgn) & (flgo ^ flgn))); + COPY_CARRY; + SET_ZFLG (GET_ZFLG & (((uae_s16)(newv)) == 0)); + SET_NFLG (((uae_s16)(newv)) < 0); + m68k_dreg(regs, srcreg) = (m68k_dreg(regs, srcreg) & ~0xffff) | ((newv) & 0xffff); +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_4050_3(uae_u32 opcode) /* NEGX */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); +{ uae_u32 newv = 0 - src - (GET_XFLG ? 1 : 0); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(0)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_VFLG ((flgs ^ flgo) & (flgo ^ flgn)); + SET_CFLG (flgs ^ ((flgs ^ flgn) & (flgo ^ flgn))); + COPY_CARRY; + SET_ZFLG (GET_ZFLG & (((uae_s16)(newv)) == 0)); + SET_NFLG (((uae_s16)(newv)) < 0); + put_word(srca,newv); +}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_4058_3(uae_u32 opcode) /* NEGX */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); + m68k_areg(regs, srcreg) += 2; +{ uae_u32 newv = 0 - src - (GET_XFLG ? 1 : 0); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(0)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_VFLG ((flgs ^ flgo) & (flgo ^ flgn)); + SET_CFLG (flgs ^ ((flgs ^ flgn) & (flgo ^ flgn))); + COPY_CARRY; + SET_ZFLG (GET_ZFLG & (((uae_s16)(newv)) == 0)); + SET_NFLG (((uae_s16)(newv)) < 0); + put_word(srca,newv); +}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_4060_3(uae_u32 opcode) /* NEGX */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) - 2; +{ uae_s16 src = get_word(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_u32 newv = 0 - src - (GET_XFLG ? 1 : 0); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(0)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_VFLG ((flgs ^ flgo) & (flgo ^ flgn)); + SET_CFLG (flgs ^ ((flgs ^ flgn) & (flgo ^ flgn))); + COPY_CARRY; + SET_ZFLG (GET_ZFLG & (((uae_s16)(newv)) == 0)); + SET_NFLG (((uae_s16)(newv)) < 0); + put_word(srca,newv); +}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_4068_3(uae_u32 opcode) /* NEGX */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uae_u32 newv = 0 - src - (GET_XFLG ? 1 : 0); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(0)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_VFLG ((flgs ^ flgo) & (flgo ^ flgn)); + SET_CFLG (flgs ^ ((flgs ^ flgn) & (flgo ^ flgn))); + COPY_CARRY; + SET_ZFLG (GET_ZFLG & (((uae_s16)(newv)) == 0)); + SET_NFLG (((uae_s16)(newv)) < 0); + put_word(srca,newv); +}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_4070_3(uae_u32 opcode) /* NEGX */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s16 src = get_word(srca); +{ uae_u32 newv = 0 - src - (GET_XFLG ? 1 : 0); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(0)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_VFLG ((flgs ^ flgo) & (flgo ^ flgn)); + SET_CFLG (flgs ^ ((flgs ^ flgn) & (flgo ^ flgn))); + COPY_CARRY; + SET_ZFLG (GET_ZFLG & (((uae_s16)(newv)) == 0)); + SET_NFLG (((uae_s16)(newv)) < 0); + put_word(srca,newv); +}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_4078_3(uae_u32 opcode) /* NEGX */ +{ +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uae_u32 newv = 0 - src - (GET_XFLG ? 1 : 0); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(0)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_VFLG ((flgs ^ flgo) & (flgo ^ flgn)); + SET_CFLG (flgs ^ ((flgs ^ flgn) & (flgo ^ flgn))); + COPY_CARRY; + SET_ZFLG (GET_ZFLG & (((uae_s16)(newv)) == 0)); + SET_NFLG (((uae_s16)(newv)) < 0); + put_word(srca,newv); +}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_4079_3(uae_u32 opcode) /* NEGX */ +{ +{{ uaecptr srca = get_ilong(2); +{ uae_s16 src = get_word(srca); +{ uae_u32 newv = 0 - src - (GET_XFLG ? 1 : 0); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(0)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_VFLG ((flgs ^ flgo) & (flgo ^ flgn)); + SET_CFLG (flgs ^ ((flgs ^ flgn) & (flgo ^ flgn))); + COPY_CARRY; + SET_ZFLG (GET_ZFLG & (((uae_s16)(newv)) == 0)); + SET_NFLG (((uae_s16)(newv)) < 0); + put_word(srca,newv); +}}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_4080_3(uae_u32 opcode) /* NEGX */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uae_u32 newv = 0 - src - (GET_XFLG ? 1 : 0); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(0)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_VFLG ((flgs ^ flgo) & (flgo ^ flgn)); + SET_CFLG (flgs ^ ((flgs ^ flgn) & (flgo ^ flgn))); + COPY_CARRY; + SET_ZFLG (GET_ZFLG & (((uae_s32)(newv)) == 0)); + SET_NFLG (((uae_s32)(newv)) < 0); + m68k_dreg(regs, srcreg) = (newv); +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_4090_3(uae_u32 opcode) /* NEGX */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s32 src = get_long(srca); +{ uae_u32 newv = 0 - src - (GET_XFLG ? 1 : 0); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(0)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_VFLG ((flgs ^ flgo) & (flgo ^ flgn)); + SET_CFLG (flgs ^ ((flgs ^ flgn) & (flgo ^ flgn))); + COPY_CARRY; + SET_ZFLG (GET_ZFLG & (((uae_s32)(newv)) == 0)); + SET_NFLG (((uae_s32)(newv)) < 0); + put_long(srca,newv); +}}}}}m68k_incpc(2); +return 10; +} +unsigned long REGPARAM2 op_4098_3(uae_u32 opcode) /* NEGX */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s32 src = get_long(srca); + m68k_areg(regs, srcreg) += 4; +{ uae_u32 newv = 0 - src - (GET_XFLG ? 1 : 0); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(0)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_VFLG ((flgs ^ flgo) & (flgo ^ flgn)); + SET_CFLG (flgs ^ ((flgs ^ flgn) & (flgo ^ flgn))); + COPY_CARRY; + SET_ZFLG (GET_ZFLG & (((uae_s32)(newv)) == 0)); + SET_NFLG (((uae_s32)(newv)) < 0); + put_long(srca,newv); +}}}}}m68k_incpc(2); +return 10; +} +unsigned long REGPARAM2 op_40a0_3(uae_u32 opcode) /* NEGX */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) - 4; +{ uae_s32 src = get_long(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_u32 newv = 0 - src - (GET_XFLG ? 1 : 0); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(0)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_VFLG ((flgs ^ flgo) & (flgo ^ flgn)); + SET_CFLG (flgs ^ ((flgs ^ flgn) & (flgo ^ flgn))); + COPY_CARRY; + SET_ZFLG (GET_ZFLG & (((uae_s32)(newv)) == 0)); + SET_NFLG (((uae_s32)(newv)) < 0); + put_long(srca,newv); +}}}}}m68k_incpc(2); +return 10; +} +unsigned long REGPARAM2 op_40a8_3(uae_u32 opcode) /* NEGX */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uae_u32 newv = 0 - src - (GET_XFLG ? 1 : 0); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(0)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_VFLG ((flgs ^ flgo) & (flgo ^ flgn)); + SET_CFLG (flgs ^ ((flgs ^ flgn) & (flgo ^ flgn))); + COPY_CARRY; + SET_ZFLG (GET_ZFLG & (((uae_s32)(newv)) == 0)); + SET_NFLG (((uae_s32)(newv)) < 0); + put_long(srca,newv); +}}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_40b0_3(uae_u32 opcode) /* NEGX */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s32 src = get_long(srca); +{ uae_u32 newv = 0 - src - (GET_XFLG ? 1 : 0); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(0)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_VFLG ((flgs ^ flgo) & (flgo ^ flgn)); + SET_CFLG (flgs ^ ((flgs ^ flgn) & (flgo ^ flgn))); + COPY_CARRY; + SET_ZFLG (GET_ZFLG & (((uae_s32)(newv)) == 0)); + SET_NFLG (((uae_s32)(newv)) < 0); + put_long(srca,newv); +}}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_40b8_3(uae_u32 opcode) /* NEGX */ +{ +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uae_u32 newv = 0 - src - (GET_XFLG ? 1 : 0); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(0)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_VFLG ((flgs ^ flgo) & (flgo ^ flgn)); + SET_CFLG (flgs ^ ((flgs ^ flgn) & (flgo ^ flgn))); + COPY_CARRY; + SET_ZFLG (GET_ZFLG & (((uae_s32)(newv)) == 0)); + SET_NFLG (((uae_s32)(newv)) < 0); + put_long(srca,newv); +}}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_40b9_3(uae_u32 opcode) /* NEGX */ +{ +{{ uaecptr srca = get_ilong(2); +{ uae_s32 src = get_long(srca); +{ uae_u32 newv = 0 - src - (GET_XFLG ? 1 : 0); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(0)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_VFLG ((flgs ^ flgo) & (flgo ^ flgn)); + SET_CFLG (flgs ^ ((flgs ^ flgn) & (flgo ^ flgn))); + COPY_CARRY; + SET_ZFLG (GET_ZFLG & (((uae_s32)(newv)) == 0)); + SET_NFLG (((uae_s32)(newv)) < 0); + put_long(srca,newv); +}}}}}m68k_incpc(6); +return 14; +} +unsigned long REGPARAM2 op_40c0_3(uae_u32 opcode) /* MVSR2 */ +{ + uae_u32 srcreg = (opcode & 7); +{{ MakeSR(); + m68k_dreg(regs, srcreg) = (m68k_dreg(regs, srcreg) & ~0xffff) | ((regs.sr) & 0xffff); +}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_40d0_3(uae_u32 opcode) /* MVSR2 */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); + MakeSR(); + put_word(srca,regs.sr); +}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_40d8_3(uae_u32 opcode) /* MVSR2 */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); + m68k_areg(regs, srcreg) += 2; + MakeSR(); + put_word(srca,regs.sr); +}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_40e0_3(uae_u32 opcode) /* MVSR2 */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) - 2; + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); + MakeSR(); + put_word(srca,regs.sr); +}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_40e8_3(uae_u32 opcode) /* MVSR2 */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); + MakeSR(); + put_word(srca,regs.sr); +}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_40f0_3(uae_u32 opcode) /* MVSR2 */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); + MakeSR(); + put_word(srca,regs.sr); +}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_40f8_3(uae_u32 opcode) /* MVSR2 */ +{ +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); + MakeSR(); + put_word(srca,regs.sr); +}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_40f9_3(uae_u32 opcode) /* MVSR2 */ +{ +{{ uaecptr srca = get_ilong(2); + MakeSR(); + put_word(srca,regs.sr); +}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_4100_3(uae_u32 opcode) /* CHK */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{ uaecptr oldpc = m68k_getpc(); +{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + if ((uae_s32)dst < 0) { SET_NFLG (1); Exception(6,oldpc); goto endlabel579; } + else if (dst > src) { SET_NFLG (0); Exception(6,oldpc); goto endlabel579; } +}}}m68k_incpc(2); +endlabel579: ; +return 2; +} +unsigned long REGPARAM2 op_4110_3(uae_u32 opcode) /* CHK */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{ uaecptr oldpc = m68k_getpc(); +{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + if ((uae_s32)dst < 0) { SET_NFLG (1); Exception(6,oldpc); goto endlabel580; } + else if (dst > src) { SET_NFLG (0); Exception(6,oldpc); goto endlabel580; } +}}}}m68k_incpc(2); +endlabel580: ; +return 6; +} +unsigned long REGPARAM2 op_4118_3(uae_u32 opcode) /* CHK */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{ uaecptr oldpc = m68k_getpc(); +{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s32 src = get_long(srca); + m68k_areg(regs, srcreg) += 4; +{ uae_s32 dst = m68k_dreg(regs, dstreg); + if ((uae_s32)dst < 0) { SET_NFLG (1); Exception(6,oldpc); goto endlabel581; } + else if (dst > src) { SET_NFLG (0); Exception(6,oldpc); goto endlabel581; } +}}}}m68k_incpc(2); +endlabel581: ; +return 6; +} +unsigned long REGPARAM2 op_4120_3(uae_u32 opcode) /* CHK */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{ uaecptr oldpc = m68k_getpc(); +{ uaecptr srca = m68k_areg(regs, srcreg) - 4; +{ uae_s32 src = get_long(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + if ((uae_s32)dst < 0) { SET_NFLG (1); Exception(6,oldpc); goto endlabel582; } + else if (dst > src) { SET_NFLG (0); Exception(6,oldpc); goto endlabel582; } +}}}}m68k_incpc(2); +endlabel582: ; +return 6; +} +unsigned long REGPARAM2 op_4128_3(uae_u32 opcode) /* CHK */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{ uaecptr oldpc = m68k_getpc(); +{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + if ((uae_s32)dst < 0) { SET_NFLG (1); Exception(6,oldpc); goto endlabel583; } + else if (dst > src) { SET_NFLG (0); Exception(6,oldpc); goto endlabel583; } +}}}}m68k_incpc(4); +endlabel583: ; +return 8; +} +unsigned long REGPARAM2 op_4130_3(uae_u32 opcode) /* CHK */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{ uaecptr oldpc = m68k_getpc(); +{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + if ((uae_s32)dst < 0) { SET_NFLG (1); Exception(6,oldpc); goto endlabel584; } + else if (dst > src) { SET_NFLG (0); Exception(6,oldpc); goto endlabel584; } +}}}}m68k_incpc(4); +endlabel584: ; +return 8; +} +unsigned long REGPARAM2 op_4138_3(uae_u32 opcode) /* CHK */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{ uaecptr oldpc = m68k_getpc(); +{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + if ((uae_s32)dst < 0) { SET_NFLG (1); Exception(6,oldpc); goto endlabel585; } + else if (dst > src) { SET_NFLG (0); Exception(6,oldpc); goto endlabel585; } +}}}}m68k_incpc(4); +endlabel585: ; +return 8; +} +unsigned long REGPARAM2 op_4139_3(uae_u32 opcode) /* CHK */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{ uaecptr oldpc = m68k_getpc(); +{ uaecptr srca = get_ilong(2); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + if ((uae_s32)dst < 0) { SET_NFLG (1); Exception(6,oldpc); goto endlabel586; } + else if (dst > src) { SET_NFLG (0); Exception(6,oldpc); goto endlabel586; } +}}}}m68k_incpc(6); +endlabel586: ; +return 10; +} +unsigned long REGPARAM2 op_413a_3(uae_u32 opcode) /* CHK */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{ uaecptr oldpc = m68k_getpc(); +{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + if ((uae_s32)dst < 0) { SET_NFLG (1); Exception(6,oldpc); goto endlabel587; } + else if (dst > src) { SET_NFLG (0); Exception(6,oldpc); goto endlabel587; } +}}}}m68k_incpc(4); +endlabel587: ; +return 8; +} +unsigned long REGPARAM2 op_413b_3(uae_u32 opcode) /* CHK */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{ uaecptr oldpc = m68k_getpc(); +{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + if ((uae_s32)dst < 0) { SET_NFLG (1); Exception(6,oldpc); goto endlabel588; } + else if (dst > src) { SET_NFLG (0); Exception(6,oldpc); goto endlabel588; } +}}}}m68k_incpc(4); +endlabel588: ; +return 8; +} +unsigned long REGPARAM2 op_413c_3(uae_u32 opcode) /* CHK */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{ uaecptr oldpc = m68k_getpc(); +{ uae_s32 src = get_ilong(2); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + if ((uae_s32)dst < 0) { SET_NFLG (1); Exception(6,oldpc); goto endlabel589; } + else if (dst > src) { SET_NFLG (0); Exception(6,oldpc); goto endlabel589; } +}}}m68k_incpc(6); +endlabel589: ; +return 6; +} +unsigned long REGPARAM2 op_4180_3(uae_u32 opcode) /* CHK */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{ uaecptr oldpc = m68k_getpc(); +{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uae_s16 dst = m68k_dreg(regs, dstreg); + if ((uae_s32)dst < 0) { SET_NFLG (1); Exception(6,oldpc); goto endlabel590; } + else if (dst > src) { SET_NFLG (0); Exception(6,oldpc); goto endlabel590; } +}}}m68k_incpc(2); +endlabel590: ; +return 2; +} +unsigned long REGPARAM2 op_4190_3(uae_u32 opcode) /* CHK */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{ uaecptr oldpc = m68k_getpc(); +{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); + if ((uae_s32)dst < 0) { SET_NFLG (1); Exception(6,oldpc); goto endlabel591; } + else if (dst > src) { SET_NFLG (0); Exception(6,oldpc); goto endlabel591; } +}}}}m68k_incpc(2); +endlabel591: ; +return 4; +} +unsigned long REGPARAM2 op_4198_3(uae_u32 opcode) /* CHK */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{ uaecptr oldpc = m68k_getpc(); +{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); + m68k_areg(regs, srcreg) += 2; +{ uae_s16 dst = m68k_dreg(regs, dstreg); + if ((uae_s32)dst < 0) { SET_NFLG (1); Exception(6,oldpc); goto endlabel592; } + else if (dst > src) { SET_NFLG (0); Exception(6,oldpc); goto endlabel592; } +}}}}m68k_incpc(2); +endlabel592: ; +return 4; +} +unsigned long REGPARAM2 op_41a0_3(uae_u32 opcode) /* CHK */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{ uaecptr oldpc = m68k_getpc(); +{ uaecptr srca = m68k_areg(regs, srcreg) - 2; +{ uae_s16 src = get_word(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_s16 dst = m68k_dreg(regs, dstreg); + if ((uae_s32)dst < 0) { SET_NFLG (1); Exception(6,oldpc); goto endlabel593; } + else if (dst > src) { SET_NFLG (0); Exception(6,oldpc); goto endlabel593; } +}}}}m68k_incpc(2); +endlabel593: ; +return 4; +} +unsigned long REGPARAM2 op_41a8_3(uae_u32 opcode) /* CHK */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{ uaecptr oldpc = m68k_getpc(); +{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); + if ((uae_s32)dst < 0) { SET_NFLG (1); Exception(6,oldpc); goto endlabel594; } + else if (dst > src) { SET_NFLG (0); Exception(6,oldpc); goto endlabel594; } +}}}}m68k_incpc(4); +endlabel594: ; +return 6; +} +unsigned long REGPARAM2 op_41b0_3(uae_u32 opcode) /* CHK */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{ uaecptr oldpc = m68k_getpc(); +{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); + if ((uae_s32)dst < 0) { SET_NFLG (1); Exception(6,oldpc); goto endlabel595; } + else if (dst > src) { SET_NFLG (0); Exception(6,oldpc); goto endlabel595; } +}}}}m68k_incpc(4); +endlabel595: ; +return 6; +} +unsigned long REGPARAM2 op_41b8_3(uae_u32 opcode) /* CHK */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{ uaecptr oldpc = m68k_getpc(); +{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); + if ((uae_s32)dst < 0) { SET_NFLG (1); Exception(6,oldpc); goto endlabel596; } + else if (dst > src) { SET_NFLG (0); Exception(6,oldpc); goto endlabel596; } +}}}}m68k_incpc(4); +endlabel596: ; +return 6; +} +unsigned long REGPARAM2 op_41b9_3(uae_u32 opcode) /* CHK */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{ uaecptr oldpc = m68k_getpc(); +{ uaecptr srca = get_ilong(2); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); + if ((uae_s32)dst < 0) { SET_NFLG (1); Exception(6,oldpc); goto endlabel597; } + else if (dst > src) { SET_NFLG (0); Exception(6,oldpc); goto endlabel597; } +}}}}m68k_incpc(6); +endlabel597: ; +return 8; +} +unsigned long REGPARAM2 op_41ba_3(uae_u32 opcode) /* CHK */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{ uaecptr oldpc = m68k_getpc(); +{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); + if ((uae_s32)dst < 0) { SET_NFLG (1); Exception(6,oldpc); goto endlabel598; } + else if (dst > src) { SET_NFLG (0); Exception(6,oldpc); goto endlabel598; } +}}}}m68k_incpc(4); +endlabel598: ; +return 6; +} +unsigned long REGPARAM2 op_41bb_3(uae_u32 opcode) /* CHK */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{ uaecptr oldpc = m68k_getpc(); +{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); + if ((uae_s32)dst < 0) { SET_NFLG (1); Exception(6,oldpc); goto endlabel599; } + else if (dst > src) { SET_NFLG (0); Exception(6,oldpc); goto endlabel599; } +}}}}m68k_incpc(4); +endlabel599: ; +return 6; +} +unsigned long REGPARAM2 op_41bc_3(uae_u32 opcode) /* CHK */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{ uaecptr oldpc = m68k_getpc(); +{ uae_s16 src = get_iword(2); +{ uae_s16 dst = m68k_dreg(regs, dstreg); + if ((uae_s32)dst < 0) { SET_NFLG (1); Exception(6,oldpc); goto endlabel600; } + else if (dst > src) { SET_NFLG (0); Exception(6,oldpc); goto endlabel600; } +}}}m68k_incpc(4); +endlabel600: ; +return 4; +} +unsigned long REGPARAM2 op_41d0_3(uae_u32 opcode) /* LEA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{{ uaecptr prev_dstreg = m68k_areg(regs, dstreg); + m68k_areg(regs, dstreg) = (srca); + if (dstreg == 7) { + if (srcreg == 7) { + if (prev_dstreg < (srca)) CHECK_STACK_POINTER_INCREMENT (); + if (prev_dstreg > (srca)) CHECK_STACK_POINTER_DECREMENT (); + } else { + CHECK_STACK_POINTER_ASSIGNMENT (); + } + } +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_41e8_3(uae_u32 opcode) /* LEA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{{ uaecptr prev_dstreg = m68k_areg(regs, dstreg); + m68k_areg(regs, dstreg) = (srca); + if (dstreg == 7) { + if (srcreg == 7) { + if (prev_dstreg < (srca)) CHECK_STACK_POINTER_INCREMENT (); + if (prev_dstreg > (srca)) CHECK_STACK_POINTER_DECREMENT (); + } else { + CHECK_STACK_POINTER_ASSIGNMENT (); + } + } +}}}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_41f0_3(uae_u32 opcode) /* LEA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{{ uaecptr prev_dstreg = m68k_areg(regs, dstreg); + m68k_areg(regs, dstreg) = (srca); + if (dstreg == 7) { + if (srcreg == 7) { + if (prev_dstreg < (srca)) CHECK_STACK_POINTER_INCREMENT (); + if (prev_dstreg > (srca)) CHECK_STACK_POINTER_DECREMENT (); + } else { + CHECK_STACK_POINTER_ASSIGNMENT (); + } + } +}}}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_41f8_3(uae_u32 opcode) /* LEA */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ m68k_areg(regs, dstreg) = (srca); + if (dstreg == 7) CHECK_STACK_POINTER_ASSIGNMENT (); +}}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_41f9_3(uae_u32 opcode) /* LEA */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_ilong(2); +{ m68k_areg(regs, dstreg) = (srca); + if (dstreg == 7) CHECK_STACK_POINTER_ASSIGNMENT (); +}}}m68k_incpc(6); +return 6; +} +unsigned long REGPARAM2 op_41fa_3(uae_u32 opcode) /* LEA */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ m68k_areg(regs, dstreg) = (srca); + if (dstreg == 7) CHECK_STACK_POINTER_ASSIGNMENT (); +}}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_41fb_3(uae_u32 opcode) /* LEA */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ m68k_areg(regs, dstreg) = (srca); + if (dstreg == 7) CHECK_STACK_POINTER_ASSIGNMENT (); +}}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_4200_3(uae_u32 opcode) /* CLR */ +{ + uae_u32 srcreg = (opcode & 7); +{{ CLEAR_CZNV; + SET_ZFLG (((uae_s8)(0)) == 0); + SET_NFLG (((uae_s8)(0)) < 0); + m68k_dreg(regs, srcreg) = (m68k_dreg(regs, srcreg) & ~0xff) | ((0) & 0xff); +}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_4210_3(uae_u32 opcode) /* CLR */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(0)) == 0); + SET_NFLG (((uae_s8)(0)) < 0); + put_byte(srca,0); +}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_4218_3(uae_u32 opcode) /* CLR */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); + m68k_areg(regs, srcreg) += areg_byteinc[srcreg]; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(0)) == 0); + SET_NFLG (((uae_s8)(0)) < 0); + put_byte(srca,0); +}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_4220_3(uae_u32 opcode) /* CLR */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) - areg_byteinc[srcreg]; + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(0)) == 0); + SET_NFLG (((uae_s8)(0)) < 0); + put_byte(srca,0); +}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_4228_3(uae_u32 opcode) /* CLR */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(0)) == 0); + SET_NFLG (((uae_s8)(0)) < 0); + put_byte(srca,0); +}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_4230_3(uae_u32 opcode) /* CLR */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(0)) == 0); + SET_NFLG (((uae_s8)(0)) < 0); + put_byte(srca,0); +}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_4238_3(uae_u32 opcode) /* CLR */ +{ +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(0)) == 0); + SET_NFLG (((uae_s8)(0)) < 0); + put_byte(srca,0); +}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_4239_3(uae_u32 opcode) /* CLR */ +{ +{{ uaecptr srca = get_ilong(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(0)) == 0); + SET_NFLG (((uae_s8)(0)) < 0); + put_byte(srca,0); +}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_4240_3(uae_u32 opcode) /* CLR */ +{ + uae_u32 srcreg = (opcode & 7); +{{ CLEAR_CZNV; + SET_ZFLG (((uae_s16)(0)) == 0); + SET_NFLG (((uae_s16)(0)) < 0); + m68k_dreg(regs, srcreg) = (m68k_dreg(regs, srcreg) & ~0xffff) | ((0) & 0xffff); +}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_4250_3(uae_u32 opcode) /* CLR */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(0)) == 0); + SET_NFLG (((uae_s16)(0)) < 0); + put_word(srca,0); +}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_4258_3(uae_u32 opcode) /* CLR */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); + m68k_areg(regs, srcreg) += 2; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(0)) == 0); + SET_NFLG (((uae_s16)(0)) < 0); + put_word(srca,0); +}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_4260_3(uae_u32 opcode) /* CLR */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) - 2; + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(0)) == 0); + SET_NFLG (((uae_s16)(0)) < 0); + put_word(srca,0); +}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_4268_3(uae_u32 opcode) /* CLR */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(0)) == 0); + SET_NFLG (((uae_s16)(0)) < 0); + put_word(srca,0); +}}m68k_incpc(4); +return 6; +} +#endif + +#ifdef PART_4 +unsigned long REGPARAM2 op_4270_3(uae_u32 opcode) /* CLR */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(0)) == 0); + SET_NFLG (((uae_s16)(0)) < 0); + put_word(srca,0); +}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_4278_3(uae_u32 opcode) /* CLR */ +{ +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(0)) == 0); + SET_NFLG (((uae_s16)(0)) < 0); + put_word(srca,0); +}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_4279_3(uae_u32 opcode) /* CLR */ +{ +{{ uaecptr srca = get_ilong(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(0)) == 0); + SET_NFLG (((uae_s16)(0)) < 0); + put_word(srca,0); +}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_4280_3(uae_u32 opcode) /* CLR */ +{ + uae_u32 srcreg = (opcode & 7); +{{ CLEAR_CZNV; + SET_ZFLG (((uae_s32)(0)) == 0); + SET_NFLG (((uae_s32)(0)) < 0); + m68k_dreg(regs, srcreg) = (0); +}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_4290_3(uae_u32 opcode) /* CLR */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(0)) == 0); + SET_NFLG (((uae_s32)(0)) < 0); + put_long(srca,0); +}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_4298_3(uae_u32 opcode) /* CLR */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); + m68k_areg(regs, srcreg) += 4; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(0)) == 0); + SET_NFLG (((uae_s32)(0)) < 0); + put_long(srca,0); +}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_42a0_3(uae_u32 opcode) /* CLR */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) - 4; + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(0)) == 0); + SET_NFLG (((uae_s32)(0)) < 0); + put_long(srca,0); +}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_42a8_3(uae_u32 opcode) /* CLR */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(0)) == 0); + SET_NFLG (((uae_s32)(0)) < 0); + put_long(srca,0); +}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_42b0_3(uae_u32 opcode) /* CLR */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(0)) == 0); + SET_NFLG (((uae_s32)(0)) < 0); + put_long(srca,0); +}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_42b8_3(uae_u32 opcode) /* CLR */ +{ +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(0)) == 0); + SET_NFLG (((uae_s32)(0)) < 0); + put_long(srca,0); +}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_42b9_3(uae_u32 opcode) /* CLR */ +{ +{{ uaecptr srca = get_ilong(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(0)) == 0); + SET_NFLG (((uae_s32)(0)) < 0); + put_long(srca,0); +}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_4400_3(uae_u32 opcode) /* NEG */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{{uae_u32 dst = ((uae_s8)(0)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(0)) < 0; + int flgn = ((uae_s8)(dst)) < 0; + SET_ZFLG (((uae_s8)(dst)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(0))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, srcreg) = (m68k_dreg(regs, srcreg) & ~0xff) | ((dst) & 0xff); +}}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_4410_3(uae_u32 opcode) /* NEG */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s8 src = get_byte(srca); +{{uae_u32 dst = ((uae_s8)(0)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(0)) < 0; + int flgn = ((uae_s8)(dst)) < 0; + SET_ZFLG (((uae_s8)(dst)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(0))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(srca,dst); +}}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_4418_3(uae_u32 opcode) /* NEG */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s8 src = get_byte(srca); + m68k_areg(regs, srcreg) += areg_byteinc[srcreg]; +{{uae_u32 dst = ((uae_s8)(0)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(0)) < 0; + int flgn = ((uae_s8)(dst)) < 0; + SET_ZFLG (((uae_s8)(dst)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(0))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(srca,dst); +}}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_4420_3(uae_u32 opcode) /* NEG */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) - areg_byteinc[srcreg]; +{ uae_s8 src = get_byte(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{{uae_u32 dst = ((uae_s8)(0)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(0)) < 0; + int flgn = ((uae_s8)(dst)) < 0; + SET_ZFLG (((uae_s8)(dst)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(0))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(srca,dst); +}}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_4428_3(uae_u32 opcode) /* NEG */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); +{{uae_u32 dst = ((uae_s8)(0)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(0)) < 0; + int flgn = ((uae_s8)(dst)) < 0; + SET_ZFLG (((uae_s8)(dst)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(0))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(srca,dst); +}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_4430_3(uae_u32 opcode) /* NEG */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s8 src = get_byte(srca); +{{uae_u32 dst = ((uae_s8)(0)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(0)) < 0; + int flgn = ((uae_s8)(dst)) < 0; + SET_ZFLG (((uae_s8)(dst)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(0))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(srca,dst); +}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_4438_3(uae_u32 opcode) /* NEG */ +{ +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); +{{uae_u32 dst = ((uae_s8)(0)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(0)) < 0; + int flgn = ((uae_s8)(dst)) < 0; + SET_ZFLG (((uae_s8)(dst)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(0))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(srca,dst); +}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_4439_3(uae_u32 opcode) /* NEG */ +{ +{{ uaecptr srca = get_ilong(2); +{ uae_s8 src = get_byte(srca); +{{uae_u32 dst = ((uae_s8)(0)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(0)) < 0; + int flgn = ((uae_s8)(dst)) < 0; + SET_ZFLG (((uae_s8)(dst)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(0))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(srca,dst); +}}}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_4440_3(uae_u32 opcode) /* NEG */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{{uae_u32 dst = ((uae_s16)(0)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(0)) < 0; + int flgn = ((uae_s16)(dst)) < 0; + SET_ZFLG (((uae_s16)(dst)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(0))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, srcreg) = (m68k_dreg(regs, srcreg) & ~0xffff) | ((dst) & 0xffff); +}}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_4450_3(uae_u32 opcode) /* NEG */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); +{{uae_u32 dst = ((uae_s16)(0)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(0)) < 0; + int flgn = ((uae_s16)(dst)) < 0; + SET_ZFLG (((uae_s16)(dst)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(0))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(srca,dst); +}}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_4458_3(uae_u32 opcode) /* NEG */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); + m68k_areg(regs, srcreg) += 2; +{{uae_u32 dst = ((uae_s16)(0)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(0)) < 0; + int flgn = ((uae_s16)(dst)) < 0; + SET_ZFLG (((uae_s16)(dst)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(0))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(srca,dst); +}}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_4460_3(uae_u32 opcode) /* NEG */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) - 2; +{ uae_s16 src = get_word(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{{uae_u32 dst = ((uae_s16)(0)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(0)) < 0; + int flgn = ((uae_s16)(dst)) < 0; + SET_ZFLG (((uae_s16)(dst)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(0))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(srca,dst); +}}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_4468_3(uae_u32 opcode) /* NEG */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{{uae_u32 dst = ((uae_s16)(0)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(0)) < 0; + int flgn = ((uae_s16)(dst)) < 0; + SET_ZFLG (((uae_s16)(dst)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(0))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(srca,dst); +}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_4470_3(uae_u32 opcode) /* NEG */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s16 src = get_word(srca); +{{uae_u32 dst = ((uae_s16)(0)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(0)) < 0; + int flgn = ((uae_s16)(dst)) < 0; + SET_ZFLG (((uae_s16)(dst)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(0))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(srca,dst); +}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_4478_3(uae_u32 opcode) /* NEG */ +{ +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{{uae_u32 dst = ((uae_s16)(0)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(0)) < 0; + int flgn = ((uae_s16)(dst)) < 0; + SET_ZFLG (((uae_s16)(dst)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(0))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(srca,dst); +}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_4479_3(uae_u32 opcode) /* NEG */ +{ +{{ uaecptr srca = get_ilong(2); +{ uae_s16 src = get_word(srca); +{{uae_u32 dst = ((uae_s16)(0)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(0)) < 0; + int flgn = ((uae_s16)(dst)) < 0; + SET_ZFLG (((uae_s16)(dst)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(0))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(srca,dst); +}}}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_4480_3(uae_u32 opcode) /* NEG */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{{uae_u32 dst = ((uae_s32)(0)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(0)) < 0; + int flgn = ((uae_s32)(dst)) < 0; + SET_ZFLG (((uae_s32)(dst)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(0))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, srcreg) = (dst); +}}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_4490_3(uae_u32 opcode) /* NEG */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s32 src = get_long(srca); +{{uae_u32 dst = ((uae_s32)(0)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(0)) < 0; + int flgn = ((uae_s32)(dst)) < 0; + SET_ZFLG (((uae_s32)(dst)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(0))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(srca,dst); +}}}}}}m68k_incpc(2); +return 10; +} +unsigned long REGPARAM2 op_4498_3(uae_u32 opcode) /* NEG */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s32 src = get_long(srca); + m68k_areg(regs, srcreg) += 4; +{{uae_u32 dst = ((uae_s32)(0)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(0)) < 0; + int flgn = ((uae_s32)(dst)) < 0; + SET_ZFLG (((uae_s32)(dst)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(0))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(srca,dst); +}}}}}}m68k_incpc(2); +return 10; +} +unsigned long REGPARAM2 op_44a0_3(uae_u32 opcode) /* NEG */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) - 4; +{ uae_s32 src = get_long(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{{uae_u32 dst = ((uae_s32)(0)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(0)) < 0; + int flgn = ((uae_s32)(dst)) < 0; + SET_ZFLG (((uae_s32)(dst)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(0))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(srca,dst); +}}}}}}m68k_incpc(2); +return 10; +} +unsigned long REGPARAM2 op_44a8_3(uae_u32 opcode) /* NEG */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{{uae_u32 dst = ((uae_s32)(0)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(0)) < 0; + int flgn = ((uae_s32)(dst)) < 0; + SET_ZFLG (((uae_s32)(dst)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(0))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(srca,dst); +}}}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_44b0_3(uae_u32 opcode) /* NEG */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s32 src = get_long(srca); +{{uae_u32 dst = ((uae_s32)(0)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(0)) < 0; + int flgn = ((uae_s32)(dst)) < 0; + SET_ZFLG (((uae_s32)(dst)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(0))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(srca,dst); +}}}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_44b8_3(uae_u32 opcode) /* NEG */ +{ +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{{uae_u32 dst = ((uae_s32)(0)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(0)) < 0; + int flgn = ((uae_s32)(dst)) < 0; + SET_ZFLG (((uae_s32)(dst)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(0))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(srca,dst); +}}}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_44b9_3(uae_u32 opcode) /* NEG */ +{ +{{ uaecptr srca = get_ilong(2); +{ uae_s32 src = get_long(srca); +{{uae_u32 dst = ((uae_s32)(0)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(0)) < 0; + int flgn = ((uae_s32)(dst)) < 0; + SET_ZFLG (((uae_s32)(dst)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(0))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(srca,dst); +}}}}}}m68k_incpc(6); +return 14; +} +unsigned long REGPARAM2 op_44c0_3(uae_u32 opcode) /* MV2SR */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s16 src = m68k_dreg(regs, srcreg); + MakeSR(); + regs.sr &= 0xFF00; + regs.sr |= src & 0xFF; + MakeFromSR(); +}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_44d0_3(uae_u32 opcode) /* MV2SR */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); + MakeSR(); + regs.sr &= 0xFF00; + regs.sr |= src & 0xFF; + MakeFromSR(); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_44d8_3(uae_u32 opcode) /* MV2SR */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); + m68k_areg(regs, srcreg) += 2; + MakeSR(); + regs.sr &= 0xFF00; + regs.sr |= src & 0xFF; + MakeFromSR(); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_44e0_3(uae_u32 opcode) /* MV2SR */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) - 2; +{ uae_s16 src = get_word(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); + MakeSR(); + regs.sr &= 0xFF00; + regs.sr |= src & 0xFF; + MakeFromSR(); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_44e8_3(uae_u32 opcode) /* MV2SR */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); + MakeSR(); + regs.sr &= 0xFF00; + regs.sr |= src & 0xFF; + MakeFromSR(); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_44f0_3(uae_u32 opcode) /* MV2SR */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s16 src = get_word(srca); + MakeSR(); + regs.sr &= 0xFF00; + regs.sr |= src & 0xFF; + MakeFromSR(); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_44f8_3(uae_u32 opcode) /* MV2SR */ +{ +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); + MakeSR(); + regs.sr &= 0xFF00; + regs.sr |= src & 0xFF; + MakeFromSR(); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_44f9_3(uae_u32 opcode) /* MV2SR */ +{ +{{ uaecptr srca = get_ilong(2); +{ uae_s16 src = get_word(srca); + MakeSR(); + regs.sr &= 0xFF00; + regs.sr |= src & 0xFF; + MakeFromSR(); +}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_44fa_3(uae_u32 opcode) /* MV2SR */ +{ +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); + MakeSR(); + regs.sr &= 0xFF00; + regs.sr |= src & 0xFF; + MakeFromSR(); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_44fb_3(uae_u32 opcode) /* MV2SR */ +{ +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s16 src = get_word(srca); + MakeSR(); + regs.sr &= 0xFF00; + regs.sr |= src & 0xFF; + MakeFromSR(); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_44fc_3(uae_u32 opcode) /* MV2SR */ +{ +{{ uae_s16 src = get_iword(2); + MakeSR(); + regs.sr &= 0xFF00; + regs.sr |= src & 0xFF; + MakeFromSR(); +}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_4600_3(uae_u32 opcode) /* NOT */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uae_u32 dst = ~src; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(dst)) == 0); + SET_NFLG (((uae_s8)(dst)) < 0); + m68k_dreg(regs, srcreg) = (m68k_dreg(regs, srcreg) & ~0xff) | ((dst) & 0xff); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_4610_3(uae_u32 opcode) /* NOT */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s8 src = get_byte(srca); +{ uae_u32 dst = ~src; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(dst)) == 0); + SET_NFLG (((uae_s8)(dst)) < 0); + put_byte(srca,dst); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_4618_3(uae_u32 opcode) /* NOT */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s8 src = get_byte(srca); + m68k_areg(regs, srcreg) += areg_byteinc[srcreg]; +{ uae_u32 dst = ~src; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(dst)) == 0); + SET_NFLG (((uae_s8)(dst)) < 0); + put_byte(srca,dst); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_4620_3(uae_u32 opcode) /* NOT */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) - areg_byteinc[srcreg]; +{ uae_s8 src = get_byte(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_u32 dst = ~src; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(dst)) == 0); + SET_NFLG (((uae_s8)(dst)) < 0); + put_byte(srca,dst); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_4628_3(uae_u32 opcode) /* NOT */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); +{ uae_u32 dst = ~src; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(dst)) == 0); + SET_NFLG (((uae_s8)(dst)) < 0); + put_byte(srca,dst); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_4630_3(uae_u32 opcode) /* NOT */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s8 src = get_byte(srca); +{ uae_u32 dst = ~src; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(dst)) == 0); + SET_NFLG (((uae_s8)(dst)) < 0); + put_byte(srca,dst); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_4638_3(uae_u32 opcode) /* NOT */ +{ +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); +{ uae_u32 dst = ~src; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(dst)) == 0); + SET_NFLG (((uae_s8)(dst)) < 0); + put_byte(srca,dst); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_4639_3(uae_u32 opcode) /* NOT */ +{ +{{ uaecptr srca = get_ilong(2); +{ uae_s8 src = get_byte(srca); +{ uae_u32 dst = ~src; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(dst)) == 0); + SET_NFLG (((uae_s8)(dst)) < 0); + put_byte(srca,dst); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_4640_3(uae_u32 opcode) /* NOT */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uae_u32 dst = ~src; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(dst)) == 0); + SET_NFLG (((uae_s16)(dst)) < 0); + m68k_dreg(regs, srcreg) = (m68k_dreg(regs, srcreg) & ~0xffff) | ((dst) & 0xffff); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_4650_3(uae_u32 opcode) /* NOT */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); +{ uae_u32 dst = ~src; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(dst)) == 0); + SET_NFLG (((uae_s16)(dst)) < 0); + put_word(srca,dst); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_4658_3(uae_u32 opcode) /* NOT */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); + m68k_areg(regs, srcreg) += 2; +{ uae_u32 dst = ~src; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(dst)) == 0); + SET_NFLG (((uae_s16)(dst)) < 0); + put_word(srca,dst); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_4660_3(uae_u32 opcode) /* NOT */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) - 2; +{ uae_s16 src = get_word(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_u32 dst = ~src; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(dst)) == 0); + SET_NFLG (((uae_s16)(dst)) < 0); + put_word(srca,dst); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_4668_3(uae_u32 opcode) /* NOT */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uae_u32 dst = ~src; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(dst)) == 0); + SET_NFLG (((uae_s16)(dst)) < 0); + put_word(srca,dst); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_4670_3(uae_u32 opcode) /* NOT */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s16 src = get_word(srca); +{ uae_u32 dst = ~src; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(dst)) == 0); + SET_NFLG (((uae_s16)(dst)) < 0); + put_word(srca,dst); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_4678_3(uae_u32 opcode) /* NOT */ +{ +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uae_u32 dst = ~src; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(dst)) == 0); + SET_NFLG (((uae_s16)(dst)) < 0); + put_word(srca,dst); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_4679_3(uae_u32 opcode) /* NOT */ +{ +{{ uaecptr srca = get_ilong(2); +{ uae_s16 src = get_word(srca); +{ uae_u32 dst = ~src; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(dst)) == 0); + SET_NFLG (((uae_s16)(dst)) < 0); + put_word(srca,dst); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_4680_3(uae_u32 opcode) /* NOT */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uae_u32 dst = ~src; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(dst)) == 0); + SET_NFLG (((uae_s32)(dst)) < 0); + m68k_dreg(regs, srcreg) = (dst); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_4690_3(uae_u32 opcode) /* NOT */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s32 src = get_long(srca); +{ uae_u32 dst = ~src; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(dst)) == 0); + SET_NFLG (((uae_s32)(dst)) < 0); + put_long(srca,dst); +}}}}m68k_incpc(2); +return 10; +} +unsigned long REGPARAM2 op_4698_3(uae_u32 opcode) /* NOT */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s32 src = get_long(srca); + m68k_areg(regs, srcreg) += 4; +{ uae_u32 dst = ~src; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(dst)) == 0); + SET_NFLG (((uae_s32)(dst)) < 0); + put_long(srca,dst); +}}}}m68k_incpc(2); +return 10; +} +unsigned long REGPARAM2 op_46a0_3(uae_u32 opcode) /* NOT */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) - 4; +{ uae_s32 src = get_long(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_u32 dst = ~src; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(dst)) == 0); + SET_NFLG (((uae_s32)(dst)) < 0); + put_long(srca,dst); +}}}}m68k_incpc(2); +return 10; +} +unsigned long REGPARAM2 op_46a8_3(uae_u32 opcode) /* NOT */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uae_u32 dst = ~src; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(dst)) == 0); + SET_NFLG (((uae_s32)(dst)) < 0); + put_long(srca,dst); +}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_46b0_3(uae_u32 opcode) /* NOT */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s32 src = get_long(srca); +{ uae_u32 dst = ~src; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(dst)) == 0); + SET_NFLG (((uae_s32)(dst)) < 0); + put_long(srca,dst); +}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_46b8_3(uae_u32 opcode) /* NOT */ +{ +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uae_u32 dst = ~src; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(dst)) == 0); + SET_NFLG (((uae_s32)(dst)) < 0); + put_long(srca,dst); +}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_46b9_3(uae_u32 opcode) /* NOT */ +{ +{{ uaecptr srca = get_ilong(2); +{ uae_s32 src = get_long(srca); +{ uae_u32 dst = ~src; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(dst)) == 0); + SET_NFLG (((uae_s32)(dst)) < 0); + put_long(srca,dst); +}}}}m68k_incpc(6); +return 14; +} +unsigned long REGPARAM2 op_46c0_3(uae_u32 opcode) /* MV2SR */ +{ + uae_u32 srcreg = (opcode & 7); +{if (!regs.s) { Exception(8,0); goto endlabel691; } +{{ uae_s16 src = m68k_dreg(regs, srcreg); + regs.sr = src; + MakeFromSR(); +}}}m68k_incpc(2); +endlabel691: ; +return 2; +} +unsigned long REGPARAM2 op_46d0_3(uae_u32 opcode) /* MV2SR */ +{ + uae_u32 srcreg = (opcode & 7); +{if (!regs.s) { Exception(8,0); goto endlabel692; } +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); + regs.sr = src; + MakeFromSR(); +}}}}m68k_incpc(2); +endlabel692: ; +return 4; +} +unsigned long REGPARAM2 op_46d8_3(uae_u32 opcode) /* MV2SR */ +{ + uae_u32 srcreg = (opcode & 7); +{if (!regs.s) { Exception(8,0); goto endlabel693; } +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); + m68k_areg(regs, srcreg) += 2; + regs.sr = src; + MakeFromSR(); +}}}}m68k_incpc(2); +endlabel693: ; +return 4; +} +unsigned long REGPARAM2 op_46e0_3(uae_u32 opcode) /* MV2SR */ +{ + uae_u32 srcreg = (opcode & 7); +{if (!regs.s) { Exception(8,0); goto endlabel694; } +{{ uaecptr srca = m68k_areg(regs, srcreg) - 2; +{ uae_s16 src = get_word(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); + regs.sr = src; + MakeFromSR(); +}}}}m68k_incpc(2); +endlabel694: ; +return 4; +} +unsigned long REGPARAM2 op_46e8_3(uae_u32 opcode) /* MV2SR */ +{ + uae_u32 srcreg = (opcode & 7); +{if (!regs.s) { Exception(8,0); goto endlabel695; } +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); + regs.sr = src; + MakeFromSR(); +}}}}m68k_incpc(4); +endlabel695: ; +return 6; +} +unsigned long REGPARAM2 op_46f0_3(uae_u32 opcode) /* MV2SR */ +{ + uae_u32 srcreg = (opcode & 7); +{if (!regs.s) { Exception(8,0); goto endlabel696; } +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s16 src = get_word(srca); + regs.sr = src; + MakeFromSR(); +}}}}m68k_incpc(4); +endlabel696: ; +return 6; +} +unsigned long REGPARAM2 op_46f8_3(uae_u32 opcode) /* MV2SR */ +{ +{if (!regs.s) { Exception(8,0); goto endlabel697; } +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); + regs.sr = src; + MakeFromSR(); +}}}}m68k_incpc(4); +endlabel697: ; +return 6; +} +unsigned long REGPARAM2 op_46f9_3(uae_u32 opcode) /* MV2SR */ +{ +{if (!regs.s) { Exception(8,0); goto endlabel698; } +{{ uaecptr srca = get_ilong(2); +{ uae_s16 src = get_word(srca); + regs.sr = src; + MakeFromSR(); +}}}}m68k_incpc(6); +endlabel698: ; +return 8; +} +unsigned long REGPARAM2 op_46fa_3(uae_u32 opcode) /* MV2SR */ +{ +{if (!regs.s) { Exception(8,0); goto endlabel699; } +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); + regs.sr = src; + MakeFromSR(); +}}}}m68k_incpc(4); +endlabel699: ; +return 6; +} +unsigned long REGPARAM2 op_46fb_3(uae_u32 opcode) /* MV2SR */ +{ +{if (!regs.s) { Exception(8,0); goto endlabel700; } +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s16 src = get_word(srca); + regs.sr = src; + MakeFromSR(); +}}}}m68k_incpc(4); +endlabel700: ; +return 6; +} +unsigned long REGPARAM2 op_46fc_3(uae_u32 opcode) /* MV2SR */ +{ +{if (!regs.s) { Exception(8,0); goto endlabel701; } +{{ uae_s16 src = get_iword(2); + regs.sr = src; + MakeFromSR(); +}}}m68k_incpc(4); +endlabel701: ; +return 4; +} +unsigned long REGPARAM2 op_4800_3(uae_u32 opcode) /* NBCD */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uae_u16 newv_lo = - (src & 0xF) - (GET_XFLG ? 1 : 0); + uae_u16 newv_hi = - (src & 0xF0); + uae_u16 newv; + int cflg; + if (newv_lo > 9) { newv_lo-=6; newv_hi-=0x10; } + newv = newv_hi + (newv_lo & 0xF); SET_CFLG (cflg = (newv_hi & 0x1F0) > 0x90); + COPY_CARRY; + if (cflg) newv -= 0x60; + SET_ZFLG (GET_ZFLG & (((uae_s8)(newv)) == 0)); + SET_NFLG (((uae_s8)(newv)) < 0); + m68k_dreg(regs, srcreg) = (m68k_dreg(regs, srcreg) & ~0xff) | ((newv) & 0xff); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_4810_3(uae_u32 opcode) /* NBCD */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s8 src = get_byte(srca); +{ uae_u16 newv_lo = - (src & 0xF) - (GET_XFLG ? 1 : 0); + uae_u16 newv_hi = - (src & 0xF0); + uae_u16 newv; + int cflg; + if (newv_lo > 9) { newv_lo-=6; newv_hi-=0x10; } + newv = newv_hi + (newv_lo & 0xF); SET_CFLG (cflg = (newv_hi & 0x1F0) > 0x90); + COPY_CARRY; + if (cflg) newv -= 0x60; + SET_ZFLG (GET_ZFLG & (((uae_s8)(newv)) == 0)); + SET_NFLG (((uae_s8)(newv)) < 0); + put_byte(srca,newv); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_4818_3(uae_u32 opcode) /* NBCD */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s8 src = get_byte(srca); + m68k_areg(regs, srcreg) += areg_byteinc[srcreg]; +{ uae_u16 newv_lo = - (src & 0xF) - (GET_XFLG ? 1 : 0); + uae_u16 newv_hi = - (src & 0xF0); + uae_u16 newv; + int cflg; + if (newv_lo > 9) { newv_lo-=6; newv_hi-=0x10; } + newv = newv_hi + (newv_lo & 0xF); SET_CFLG (cflg = (newv_hi & 0x1F0) > 0x90); + COPY_CARRY; + if (cflg) newv -= 0x60; + SET_ZFLG (GET_ZFLG & (((uae_s8)(newv)) == 0)); + SET_NFLG (((uae_s8)(newv)) < 0); + put_byte(srca,newv); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_4820_3(uae_u32 opcode) /* NBCD */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) - areg_byteinc[srcreg]; +{ uae_s8 src = get_byte(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_u16 newv_lo = - (src & 0xF) - (GET_XFLG ? 1 : 0); + uae_u16 newv_hi = - (src & 0xF0); + uae_u16 newv; + int cflg; + if (newv_lo > 9) { newv_lo-=6; newv_hi-=0x10; } + newv = newv_hi + (newv_lo & 0xF); SET_CFLG (cflg = (newv_hi & 0x1F0) > 0x90); + COPY_CARRY; + if (cflg) newv -= 0x60; + SET_ZFLG (GET_ZFLG & (((uae_s8)(newv)) == 0)); + SET_NFLG (((uae_s8)(newv)) < 0); + put_byte(srca,newv); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_4828_3(uae_u32 opcode) /* NBCD */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); +{ uae_u16 newv_lo = - (src & 0xF) - (GET_XFLG ? 1 : 0); + uae_u16 newv_hi = - (src & 0xF0); + uae_u16 newv; + int cflg; + if (newv_lo > 9) { newv_lo-=6; newv_hi-=0x10; } + newv = newv_hi + (newv_lo & 0xF); SET_CFLG (cflg = (newv_hi & 0x1F0) > 0x90); + COPY_CARRY; + if (cflg) newv -= 0x60; + SET_ZFLG (GET_ZFLG & (((uae_s8)(newv)) == 0)); + SET_NFLG (((uae_s8)(newv)) < 0); + put_byte(srca,newv); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_4830_3(uae_u32 opcode) /* NBCD */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s8 src = get_byte(srca); +{ uae_u16 newv_lo = - (src & 0xF) - (GET_XFLG ? 1 : 0); + uae_u16 newv_hi = - (src & 0xF0); + uae_u16 newv; + int cflg; + if (newv_lo > 9) { newv_lo-=6; newv_hi-=0x10; } + newv = newv_hi + (newv_lo & 0xF); SET_CFLG (cflg = (newv_hi & 0x1F0) > 0x90); + COPY_CARRY; + if (cflg) newv -= 0x60; + SET_ZFLG (GET_ZFLG & (((uae_s8)(newv)) == 0)); + SET_NFLG (((uae_s8)(newv)) < 0); + put_byte(srca,newv); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_4838_3(uae_u32 opcode) /* NBCD */ +{ +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); +{ uae_u16 newv_lo = - (src & 0xF) - (GET_XFLG ? 1 : 0); + uae_u16 newv_hi = - (src & 0xF0); + uae_u16 newv; + int cflg; + if (newv_lo > 9) { newv_lo-=6; newv_hi-=0x10; } + newv = newv_hi + (newv_lo & 0xF); SET_CFLG (cflg = (newv_hi & 0x1F0) > 0x90); + COPY_CARRY; + if (cflg) newv -= 0x60; + SET_ZFLG (GET_ZFLG & (((uae_s8)(newv)) == 0)); + SET_NFLG (((uae_s8)(newv)) < 0); + put_byte(srca,newv); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_4839_3(uae_u32 opcode) /* NBCD */ +{ +{{ uaecptr srca = get_ilong(2); +{ uae_s8 src = get_byte(srca); +{ uae_u16 newv_lo = - (src & 0xF) - (GET_XFLG ? 1 : 0); + uae_u16 newv_hi = - (src & 0xF0); + uae_u16 newv; + int cflg; + if (newv_lo > 9) { newv_lo-=6; newv_hi-=0x10; } + newv = newv_hi + (newv_lo & 0xF); SET_CFLG (cflg = (newv_hi & 0x1F0) > 0x90); + COPY_CARRY; + if (cflg) newv -= 0x60; + SET_ZFLG (GET_ZFLG & (((uae_s8)(newv)) == 0)); + SET_NFLG (((uae_s8)(newv)) < 0); + put_byte(srca,newv); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_4840_3(uae_u32 opcode) /* SWAP */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uae_u32 dst = ((src >> 16)&0xFFFF) | ((src&0xFFFF)<<16); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(dst)) == 0); + SET_NFLG (((uae_s32)(dst)) < 0); + m68k_dreg(regs, srcreg) = (dst); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_4850_3(uae_u32 opcode) /* PEA */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, 7) - 4; + m68k_areg (regs, 7) = dsta; + if (7 == 7) CHECK_STACK_POINTER_DECREMENT (); + put_long(dsta,srca); +}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_4868_3(uae_u32 opcode) /* PEA */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uaecptr dsta = m68k_areg(regs, 7) - 4; + m68k_areg (regs, 7) = dsta; + if (7 == 7) CHECK_STACK_POINTER_DECREMENT (); + put_long(dsta,srca); +}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_4870_3(uae_u32 opcode) /* PEA */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uaecptr dsta = m68k_areg(regs, 7) - 4; + m68k_areg (regs, 7) = dsta; + if (7 == 7) CHECK_STACK_POINTER_DECREMENT (); + put_long(dsta,srca); +}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_4878_3(uae_u32 opcode) /* PEA */ +{ +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uaecptr dsta = m68k_areg(regs, 7) - 4; + m68k_areg (regs, 7) = dsta; + if (7 == 7) CHECK_STACK_POINTER_DECREMENT (); + put_long(dsta,srca); +}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_4879_3(uae_u32 opcode) /* PEA */ +{ +{{ uaecptr srca = get_ilong(2); +{ uaecptr dsta = m68k_areg(regs, 7) - 4; + m68k_areg (regs, 7) = dsta; + if (7 == 7) CHECK_STACK_POINTER_DECREMENT (); + put_long(dsta,srca); +}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_487a_3(uae_u32 opcode) /* PEA */ +{ +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uaecptr dsta = m68k_areg(regs, 7) - 4; + m68k_areg (regs, 7) = dsta; + if (7 == 7) CHECK_STACK_POINTER_DECREMENT (); + put_long(dsta,srca); +}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_487b_3(uae_u32 opcode) /* PEA */ +{ +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uaecptr dsta = m68k_areg(regs, 7) - 4; + m68k_areg (regs, 7) = dsta; + if (7 == 7) CHECK_STACK_POINTER_DECREMENT (); + put_long(dsta,srca); +}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_4880_3(uae_u32 opcode) /* EXT */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uae_u16 dst = (uae_s16)(uae_s8)src; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(dst)) == 0); + SET_NFLG (((uae_s16)(dst)) < 0); + m68k_dreg(regs, srcreg) = (m68k_dreg(regs, srcreg) & ~0xffff) | ((dst) & 0xffff); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_4890_3(uae_u32 opcode) /* MVMLE */ +{ + uae_u32 dstreg = opcode & 7; +{ uae_u16 mask = get_iword(2); +{ uaecptr srca = m68k_areg(regs, dstreg); +{ uae_u16 dmask = mask & 0xff, amask = (mask >> 8) & 0xff; + while (dmask) { put_word(srca, m68k_dreg(regs, movem_index1[dmask])); srca += 2; dmask = movem_next[dmask]; } + while (amask) { put_word(srca, m68k_areg(regs, movem_index1[amask])); srca += 2; amask = movem_next[amask]; } +}}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_48a0_3(uae_u32 opcode) /* MVMLE */ +{ + uae_u32 dstreg = opcode & 7; +{ uae_u16 mask = get_iword(2); +{ uaecptr srca = m68k_areg(regs, dstreg) - 0; +{ uae_u16 amask = mask & 0xff, dmask = (mask >> 8) & 0xff; + m68k_areg(regs, dstreg) -= 16*2; + while (amask) { srca -= 2; put_word(srca, m68k_areg(regs, movem_index2[amask])); amask = movem_next[amask]; } + while (dmask) { srca -= 2; put_word(srca, m68k_dreg(regs, movem_index2[dmask])); dmask = movem_next[dmask]; } + m68k_areg(regs, dstreg) = srca; + CHECK_STACK_POINTER_DECREMENT (); +}}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_48a8_3(uae_u32 opcode) /* MVMLE */ +{ + uae_u32 dstreg = opcode & 7; +{ uae_u16 mask = get_iword(2); +{ uaecptr srca = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(4); +{ uae_u16 dmask = mask & 0xff, amask = (mask >> 8) & 0xff; + while (dmask) { put_word(srca, m68k_dreg(regs, movem_index1[dmask])); srca += 2; dmask = movem_next[dmask]; } + while (amask) { put_word(srca, m68k_areg(regs, movem_index1[amask])); srca += 2; amask = movem_next[amask]; } +}}}m68k_incpc(6); +return 6; +} +unsigned long REGPARAM2 op_48b0_3(uae_u32 opcode) /* MVMLE */ +{ + uae_u32 dstreg = opcode & 7; +{ uae_u16 mask = get_iword(2); +{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(4)); +{ uae_u16 dmask = mask & 0xff, amask = (mask >> 8) & 0xff; + while (dmask) { put_word(srca, m68k_dreg(regs, movem_index1[dmask])); srca += 2; dmask = movem_next[dmask]; } + while (amask) { put_word(srca, m68k_areg(regs, movem_index1[amask])); srca += 2; amask = movem_next[amask]; } +}}}m68k_incpc(6); +return 6; +} +unsigned long REGPARAM2 op_48b8_3(uae_u32 opcode) /* MVMLE */ +{ +{ uae_u16 mask = get_iword(2); +{ uaecptr srca = (uae_s32)(uae_s16)get_iword(4); +{ uae_u16 dmask = mask & 0xff, amask = (mask >> 8) & 0xff; + while (dmask) { put_word(srca, m68k_dreg(regs, movem_index1[dmask])); srca += 2; dmask = movem_next[dmask]; } + while (amask) { put_word(srca, m68k_areg(regs, movem_index1[amask])); srca += 2; amask = movem_next[amask]; } +}}}m68k_incpc(6); +return 6; +} +unsigned long REGPARAM2 op_48b9_3(uae_u32 opcode) /* MVMLE */ +{ +{ uae_u16 mask = get_iword(2); +{ uaecptr srca = get_ilong(4); +{ uae_u16 dmask = mask & 0xff, amask = (mask >> 8) & 0xff; + while (dmask) { put_word(srca, m68k_dreg(regs, movem_index1[dmask])); srca += 2; dmask = movem_next[dmask]; } + while (amask) { put_word(srca, m68k_areg(regs, movem_index1[amask])); srca += 2; amask = movem_next[amask]; } +}}}m68k_incpc(8); +return 8; +} +unsigned long REGPARAM2 op_48c0_3(uae_u32 opcode) /* EXT */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uae_u32 dst = (uae_s32)(uae_s16)src; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(dst)) == 0); + SET_NFLG (((uae_s32)(dst)) < 0); + m68k_dreg(regs, srcreg) = (dst); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_48d0_3(uae_u32 opcode) /* MVMLE */ +{ + uae_u32 dstreg = opcode & 7; +{ uae_u16 mask = get_iword(2); +{ uaecptr srca = m68k_areg(regs, dstreg); +{ uae_u16 dmask = mask & 0xff, amask = (mask >> 8) & 0xff; + while (dmask) { put_long(srca, m68k_dreg(regs, movem_index1[dmask])); srca += 4; dmask = movem_next[dmask]; } + while (amask) { put_long(srca, m68k_areg(regs, movem_index1[amask])); srca += 4; amask = movem_next[amask]; } +}}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_48e0_3(uae_u32 opcode) /* MVMLE */ +{ + uae_u32 dstreg = opcode & 7; +{ uae_u16 mask = get_iword(2); +{ uaecptr srca = m68k_areg(regs, dstreg) - 0; +{ uae_u16 amask = mask & 0xff, dmask = (mask >> 8) & 0xff; + m68k_areg(regs, dstreg) -= 16*4; + while (amask) { srca -= 4; put_long(srca, m68k_areg(regs, movem_index2[amask])); amask = movem_next[amask]; } + while (dmask) { srca -= 4; put_long(srca, m68k_dreg(regs, movem_index2[dmask])); dmask = movem_next[dmask]; } + m68k_areg(regs, dstreg) = srca; + CHECK_STACK_POINTER_DECREMENT (); +}}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_48e8_3(uae_u32 opcode) /* MVMLE */ +{ + uae_u32 dstreg = opcode & 7; +{ uae_u16 mask = get_iword(2); +{ uaecptr srca = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(4); +{ uae_u16 dmask = mask & 0xff, amask = (mask >> 8) & 0xff; + while (dmask) { put_long(srca, m68k_dreg(regs, movem_index1[dmask])); srca += 4; dmask = movem_next[dmask]; } + while (amask) { put_long(srca, m68k_areg(regs, movem_index1[amask])); srca += 4; amask = movem_next[amask]; } +}}}m68k_incpc(6); +return 6; +} +unsigned long REGPARAM2 op_48f0_3(uae_u32 opcode) /* MVMLE */ +{ + uae_u32 dstreg = opcode & 7; +{ uae_u16 mask = get_iword(2); +{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(4)); +{ uae_u16 dmask = mask & 0xff, amask = (mask >> 8) & 0xff; + while (dmask) { put_long(srca, m68k_dreg(regs, movem_index1[dmask])); srca += 4; dmask = movem_next[dmask]; } + while (amask) { put_long(srca, m68k_areg(regs, movem_index1[amask])); srca += 4; amask = movem_next[amask]; } +}}}m68k_incpc(6); +return 6; +} +unsigned long REGPARAM2 op_48f8_3(uae_u32 opcode) /* MVMLE */ +{ +{ uae_u16 mask = get_iword(2); +{ uaecptr srca = (uae_s32)(uae_s16)get_iword(4); +{ uae_u16 dmask = mask & 0xff, amask = (mask >> 8) & 0xff; + while (dmask) { put_long(srca, m68k_dreg(regs, movem_index1[dmask])); srca += 4; dmask = movem_next[dmask]; } + while (amask) { put_long(srca, m68k_areg(regs, movem_index1[amask])); srca += 4; amask = movem_next[amask]; } +}}}m68k_incpc(6); +return 6; +} +unsigned long REGPARAM2 op_48f9_3(uae_u32 opcode) /* MVMLE */ +{ +{ uae_u16 mask = get_iword(2); +{ uaecptr srca = get_ilong(4); +{ uae_u16 dmask = mask & 0xff, amask = (mask >> 8) & 0xff; + while (dmask) { put_long(srca, m68k_dreg(regs, movem_index1[dmask])); srca += 4; dmask = movem_next[dmask]; } + while (amask) { put_long(srca, m68k_areg(regs, movem_index1[amask])); srca += 4; amask = movem_next[amask]; } +}}}m68k_incpc(8); +return 8; +} +unsigned long REGPARAM2 op_49c0_3(uae_u32 opcode) /* EXT */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uae_u32 dst = (uae_s32)(uae_s8)src; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(dst)) == 0); + SET_NFLG (((uae_s32)(dst)) < 0); + m68k_dreg(regs, srcreg) = (dst); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_4a00_3(uae_u32 opcode) /* TST */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s8 src = m68k_dreg(regs, srcreg); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); +}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_4a10_3(uae_u32 opcode) /* TST */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s8 src = get_byte(srca); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_4a18_3(uae_u32 opcode) /* TST */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s8 src = get_byte(srca); + m68k_areg(regs, srcreg) += areg_byteinc[srcreg]; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_4a20_3(uae_u32 opcode) /* TST */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) - areg_byteinc[srcreg]; +{ uae_s8 src = get_byte(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_4a28_3(uae_u32 opcode) /* TST */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_4a30_3(uae_u32 opcode) /* TST */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s8 src = get_byte(srca); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_4a38_3(uae_u32 opcode) /* TST */ +{ +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_4a39_3(uae_u32 opcode) /* TST */ +{ +{{ uaecptr srca = get_ilong(2); +{ uae_s8 src = get_byte(srca); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); +}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_4a3a_3(uae_u32 opcode) /* TST */ +{ +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_4a3b_3(uae_u32 opcode) /* TST */ +{ +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s8 src = get_byte(srca); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_4a3c_3(uae_u32 opcode) /* TST */ +{ +{{ uae_s8 src = get_ibyte(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); +}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_4a40_3(uae_u32 opcode) /* TST */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s16 src = m68k_dreg(regs, srcreg); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); +}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_4a48_3(uae_u32 opcode) /* TST */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s16 src = m68k_areg(regs, srcreg); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); +}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_4a50_3(uae_u32 opcode) /* TST */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_4a58_3(uae_u32 opcode) /* TST */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); + m68k_areg(regs, srcreg) += 2; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_4a60_3(uae_u32 opcode) /* TST */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) - 2; +{ uae_s16 src = get_word(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_4a68_3(uae_u32 opcode) /* TST */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_4a70_3(uae_u32 opcode) /* TST */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s16 src = get_word(srca); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_4a78_3(uae_u32 opcode) /* TST */ +{ +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_4a79_3(uae_u32 opcode) /* TST */ +{ +{{ uaecptr srca = get_ilong(2); +{ uae_s16 src = get_word(srca); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); +}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_4a7a_3(uae_u32 opcode) /* TST */ +{ +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_4a7b_3(uae_u32 opcode) /* TST */ +{ +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s16 src = get_word(srca); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_4a7c_3(uae_u32 opcode) /* TST */ +{ +{{ uae_s16 src = get_iword(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); +}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_4a80_3(uae_u32 opcode) /* TST */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s32 src = m68k_dreg(regs, srcreg); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); +}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_4a88_3(uae_u32 opcode) /* TST */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s32 src = m68k_areg(regs, srcreg); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); +}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_4a90_3(uae_u32 opcode) /* TST */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s32 src = get_long(srca); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); +}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_4a98_3(uae_u32 opcode) /* TST */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s32 src = get_long(srca); + m68k_areg(regs, srcreg) += 4; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); +}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_4aa0_3(uae_u32 opcode) /* TST */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) - 4; +{ uae_s32 src = get_long(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); +}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_4aa8_3(uae_u32 opcode) /* TST */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); +}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_4ab0_3(uae_u32 opcode) /* TST */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s32 src = get_long(srca); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); +}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_4ab8_3(uae_u32 opcode) /* TST */ +{ +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); +}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_4ab9_3(uae_u32 opcode) /* TST */ +{ +{{ uaecptr srca = get_ilong(2); +{ uae_s32 src = get_long(srca); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); +}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_4aba_3(uae_u32 opcode) /* TST */ +{ +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); +}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_4abb_3(uae_u32 opcode) /* TST */ +{ +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s32 src = get_long(srca); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); +}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_4abc_3(uae_u32 opcode) /* TST */ +{ +{{ uae_s32 src = get_ilong(2); + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); +}}m68k_incpc(6); +return 6; +} +unsigned long REGPARAM2 op_4ac0_3(uae_u32 opcode) /* TAS */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s8 src = m68k_dreg(regs, srcreg); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + src |= 0x80; + m68k_dreg(regs, srcreg) = (m68k_dreg(regs, srcreg) & ~0xff) | ((src) & 0xff); +}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_4ad0_3(uae_u32 opcode) /* TAS */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s8 src = get_byte(srca); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + src |= 0x80; + put_byte(srca,src); +}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_4ad8_3(uae_u32 opcode) /* TAS */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s8 src = get_byte(srca); + m68k_areg(regs, srcreg) += areg_byteinc[srcreg]; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + src |= 0x80; + put_byte(srca,src); +}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_4ae0_3(uae_u32 opcode) /* TAS */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) - areg_byteinc[srcreg]; +{ uae_s8 src = get_byte(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + src |= 0x80; + put_byte(srca,src); +}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_4ae8_3(uae_u32 opcode) /* TAS */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + src |= 0x80; + put_byte(srca,src); +}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_4af0_3(uae_u32 opcode) /* TAS */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s8 src = get_byte(srca); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + src |= 0x80; + put_byte(srca,src); +}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_4af8_3(uae_u32 opcode) /* TAS */ +{ +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + src |= 0x80; + put_byte(srca,src); +}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_4af9_3(uae_u32 opcode) /* TAS */ +{ +{{ uaecptr srca = get_ilong(2); +{ uae_s8 src = get_byte(srca); + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + src |= 0x80; + put_byte(srca,src); +}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_4c90_3(uae_u32 opcode) /* MVMEL */ +{ + uae_u32 dstreg = opcode & 7; +{ uae_u16 mask = get_iword(2); + unsigned int dmask = mask & 0xff, amask = (mask >> 8) & 0xff; +{ uaecptr srca = m68k_areg(regs, dstreg); +{ while (dmask) { m68k_dreg(regs, movem_index1[dmask]) = (uae_s32)(uae_s16)get_word(srca); srca += 2; dmask = movem_next[dmask]; } + while (amask) { m68k_areg(regs, movem_index1[amask]) = (uae_s32)(uae_s16)get_word(srca); srca += 2; amask = movem_next[amask]; } +}}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_4c98_3(uae_u32 opcode) /* MVMEL */ +{ + uae_u32 dstreg = opcode & 7; +{ uae_u16 mask = get_iword(2); + unsigned int dmask = mask & 0xff, amask = (mask >> 8) & 0xff; +{ uaecptr srca = m68k_areg(regs, dstreg); +{ while (dmask) { m68k_dreg(regs, movem_index1[dmask]) = (uae_s32)(uae_s16)get_word(srca); srca += 2; dmask = movem_next[dmask]; } + while (amask) { m68k_areg(regs, movem_index1[amask]) = (uae_s32)(uae_s16)get_word(srca); srca += 2; amask = movem_next[amask]; } + m68k_areg(regs, dstreg) = srca; +}}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_4ca8_3(uae_u32 opcode) /* MVMEL */ +{ + uae_u32 dstreg = opcode & 7; +{ uae_u16 mask = get_iword(2); + unsigned int dmask = mask & 0xff, amask = (mask >> 8) & 0xff; +{ uaecptr srca = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(4); +{ while (dmask) { m68k_dreg(regs, movem_index1[dmask]) = (uae_s32)(uae_s16)get_word(srca); srca += 2; dmask = movem_next[dmask]; } + while (amask) { m68k_areg(regs, movem_index1[amask]) = (uae_s32)(uae_s16)get_word(srca); srca += 2; amask = movem_next[amask]; } +}}}m68k_incpc(6); +return 6; +} +unsigned long REGPARAM2 op_4cb0_3(uae_u32 opcode) /* MVMEL */ +{ + uae_u32 dstreg = opcode & 7; +{ uae_u16 mask = get_iword(2); + unsigned int dmask = mask & 0xff, amask = (mask >> 8) & 0xff; +{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(4)); +{ while (dmask) { m68k_dreg(regs, movem_index1[dmask]) = (uae_s32)(uae_s16)get_word(srca); srca += 2; dmask = movem_next[dmask]; } + while (amask) { m68k_areg(regs, movem_index1[amask]) = (uae_s32)(uae_s16)get_word(srca); srca += 2; amask = movem_next[amask]; } +}}}m68k_incpc(6); +return 6; +} +unsigned long REGPARAM2 op_4cb8_3(uae_u32 opcode) /* MVMEL */ +{ +{ uae_u16 mask = get_iword(2); + unsigned int dmask = mask & 0xff, amask = (mask >> 8) & 0xff; +{ uaecptr srca = (uae_s32)(uae_s16)get_iword(4); +{ while (dmask) { m68k_dreg(regs, movem_index1[dmask]) = (uae_s32)(uae_s16)get_word(srca); srca += 2; dmask = movem_next[dmask]; } + while (amask) { m68k_areg(regs, movem_index1[amask]) = (uae_s32)(uae_s16)get_word(srca); srca += 2; amask = movem_next[amask]; } +}}}m68k_incpc(6); +return 6; +} +unsigned long REGPARAM2 op_4cb9_3(uae_u32 opcode) /* MVMEL */ +{ +{ uae_u16 mask = get_iword(2); + unsigned int dmask = mask & 0xff, amask = (mask >> 8) & 0xff; +{ uaecptr srca = get_ilong(4); +{ while (dmask) { m68k_dreg(regs, movem_index1[dmask]) = (uae_s32)(uae_s16)get_word(srca); srca += 2; dmask = movem_next[dmask]; } + while (amask) { m68k_areg(regs, movem_index1[amask]) = (uae_s32)(uae_s16)get_word(srca); srca += 2; amask = movem_next[amask]; } +}}}m68k_incpc(8); +return 8; +} +unsigned long REGPARAM2 op_4cba_3(uae_u32 opcode) /* MVMEL */ +{ + uae_u32 dstreg = 2; +{ uae_u16 mask = get_iword(2); + unsigned int dmask = mask & 0xff, amask = (mask >> 8) & 0xff; +{ uaecptr srca = m68k_getpc () + 4; + srca += (uae_s32)(uae_s16)get_iword(4); +{ while (dmask) { m68k_dreg(regs, movem_index1[dmask]) = (uae_s32)(uae_s16)get_word(srca); srca += 2; dmask = movem_next[dmask]; } + while (amask) { m68k_areg(regs, movem_index1[amask]) = (uae_s32)(uae_s16)get_word(srca); srca += 2; amask = movem_next[amask]; } +}}}m68k_incpc(6); +return 6; +} +unsigned long REGPARAM2 op_4cbb_3(uae_u32 opcode) /* MVMEL */ +{ + uae_u32 dstreg = 3; +{ uae_u16 mask = get_iword(2); + unsigned int dmask = mask & 0xff, amask = (mask >> 8) & 0xff; +{ uaecptr tmppc = m68k_getpc() + 4; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(4)); +{ while (dmask) { m68k_dreg(regs, movem_index1[dmask]) = (uae_s32)(uae_s16)get_word(srca); srca += 2; dmask = movem_next[dmask]; } + while (amask) { m68k_areg(regs, movem_index1[amask]) = (uae_s32)(uae_s16)get_word(srca); srca += 2; amask = movem_next[amask]; } +}}}m68k_incpc(6); +return 6; +} +unsigned long REGPARAM2 op_4cd0_3(uae_u32 opcode) /* MVMEL */ +{ + uae_u32 dstreg = opcode & 7; +{ uae_u16 mask = get_iword(2); + unsigned int dmask = mask & 0xff, amask = (mask >> 8) & 0xff; +{ uaecptr srca = m68k_areg(regs, dstreg); +{ while (dmask) { m68k_dreg(regs, movem_index1[dmask]) = get_long(srca); srca += 4; dmask = movem_next[dmask]; } + while (amask) { m68k_areg(regs, movem_index1[amask]) = get_long(srca); srca += 4; amask = movem_next[amask]; } +}}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_4cd8_3(uae_u32 opcode) /* MVMEL */ +{ + uae_u32 dstreg = opcode & 7; +{ uae_u16 mask = get_iword(2); + unsigned int dmask = mask & 0xff, amask = (mask >> 8) & 0xff; +{ uaecptr srca = m68k_areg(regs, dstreg); +{ while (dmask) { m68k_dreg(regs, movem_index1[dmask]) = get_long(srca); srca += 4; dmask = movem_next[dmask]; } + while (amask) { m68k_areg(regs, movem_index1[amask]) = get_long(srca); srca += 4; amask = movem_next[amask]; } + m68k_areg(regs, dstreg) = srca; +}}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_4ce8_3(uae_u32 opcode) /* MVMEL */ +{ + uae_u32 dstreg = opcode & 7; +{ uae_u16 mask = get_iword(2); + unsigned int dmask = mask & 0xff, amask = (mask >> 8) & 0xff; +{ uaecptr srca = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(4); +{ while (dmask) { m68k_dreg(regs, movem_index1[dmask]) = get_long(srca); srca += 4; dmask = movem_next[dmask]; } + while (amask) { m68k_areg(regs, movem_index1[amask]) = get_long(srca); srca += 4; amask = movem_next[amask]; } +}}}m68k_incpc(6); +return 6; +} +unsigned long REGPARAM2 op_4cf0_3(uae_u32 opcode) /* MVMEL */ +{ + uae_u32 dstreg = opcode & 7; +{ uae_u16 mask = get_iword(2); + unsigned int dmask = mask & 0xff, amask = (mask >> 8) & 0xff; +{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(4)); +{ while (dmask) { m68k_dreg(regs, movem_index1[dmask]) = get_long(srca); srca += 4; dmask = movem_next[dmask]; } + while (amask) { m68k_areg(regs, movem_index1[amask]) = get_long(srca); srca += 4; amask = movem_next[amask]; } +}}}m68k_incpc(6); +return 6; +} +unsigned long REGPARAM2 op_4cf8_3(uae_u32 opcode) /* MVMEL */ +{ +{ uae_u16 mask = get_iword(2); + unsigned int dmask = mask & 0xff, amask = (mask >> 8) & 0xff; +{ uaecptr srca = (uae_s32)(uae_s16)get_iword(4); +{ while (dmask) { m68k_dreg(regs, movem_index1[dmask]) = get_long(srca); srca += 4; dmask = movem_next[dmask]; } + while (amask) { m68k_areg(regs, movem_index1[amask]) = get_long(srca); srca += 4; amask = movem_next[amask]; } +}}}m68k_incpc(6); +return 6; +} +unsigned long REGPARAM2 op_4cf9_3(uae_u32 opcode) /* MVMEL */ +{ +{ uae_u16 mask = get_iword(2); + unsigned int dmask = mask & 0xff, amask = (mask >> 8) & 0xff; +{ uaecptr srca = get_ilong(4); +{ while (dmask) { m68k_dreg(regs, movem_index1[dmask]) = get_long(srca); srca += 4; dmask = movem_next[dmask]; } + while (amask) { m68k_areg(regs, movem_index1[amask]) = get_long(srca); srca += 4; amask = movem_next[amask]; } +}}}m68k_incpc(8); +return 8; +} +unsigned long REGPARAM2 op_4cfa_3(uae_u32 opcode) /* MVMEL */ +{ + uae_u32 dstreg = 2; +{ uae_u16 mask = get_iword(2); + unsigned int dmask = mask & 0xff, amask = (mask >> 8) & 0xff; +{ uaecptr srca = m68k_getpc () + 4; + srca += (uae_s32)(uae_s16)get_iword(4); +{ while (dmask) { m68k_dreg(regs, movem_index1[dmask]) = get_long(srca); srca += 4; dmask = movem_next[dmask]; } + while (amask) { m68k_areg(regs, movem_index1[amask]) = get_long(srca); srca += 4; amask = movem_next[amask]; } +}}}m68k_incpc(6); +return 6; +} +unsigned long REGPARAM2 op_4cfb_3(uae_u32 opcode) /* MVMEL */ +{ + uae_u32 dstreg = 3; +{ uae_u16 mask = get_iword(2); + unsigned int dmask = mask & 0xff, amask = (mask >> 8) & 0xff; +{ uaecptr tmppc = m68k_getpc() + 4; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(4)); +{ while (dmask) { m68k_dreg(regs, movem_index1[dmask]) = get_long(srca); srca += 4; dmask = movem_next[dmask]; } + while (amask) { m68k_areg(regs, movem_index1[amask]) = get_long(srca); srca += 4; amask = movem_next[amask]; } +}}}m68k_incpc(6); +return 6; +} +unsigned long REGPARAM2 op_4e40_3(uae_u32 opcode) /* TRAP */ +{ + uae_u32 srcreg = (opcode & 15); +{{ uae_u32 src = srcreg; +m68k_incpc(2); + Exception(src+32,0); +}}return 2; +} +unsigned long REGPARAM2 op_4e50_3(uae_u32 opcode) /* LINK */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr olda = m68k_areg(regs, 7) - 4; + m68k_areg (regs, 7) = olda; + if (7 == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_s32 src = m68k_areg(regs, srcreg); + put_long(olda,src); + m68k_areg(regs, srcreg) = (m68k_areg(regs, 7)); + if (srcreg == 7) CHECK_STACK_POINTER_ASSIGNMENT (); +{ uae_s16 offs = get_iword(2); + m68k_areg(regs, 7) += offs; + CHECK_STACK_POINTER_DECREMENT (); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_4e58_3(uae_u32 opcode) /* UNLK */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s32 src = m68k_areg(regs, srcreg); + m68k_areg(regs, 7) = src; + CHECK_STACK_POINTER_INCREMENT (); +{ uaecptr olda = m68k_areg(regs, 7); +{ uae_s32 old = get_long(olda); + m68k_areg(regs, 7) += 4; + m68k_areg(regs, srcreg) = (old); + if (srcreg == 7) CHECK_STACK_POINTER_ASSIGNMENT (); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_4e60_3(uae_u32 opcode) /* MVR2USP */ +{ + uae_u32 srcreg = (opcode & 7); +{if (!regs.s) { Exception(8,0); goto endlabel795; } +{{ uae_s32 src = m68k_areg(regs, srcreg); + regs.usp = src; +}}}m68k_incpc(2); +endlabel795: ; +return 2; +} +unsigned long REGPARAM2 op_4e68_3(uae_u32 opcode) /* MVUSP2R */ +{ + uae_u32 srcreg = (opcode & 7); +{if (!regs.s) { Exception(8,0); goto endlabel796; } +{{ m68k_areg(regs, srcreg) = (regs.usp); + if (srcreg == 7) CHECK_STACK_POINTER_ASSIGNMENT (); +}}}m68k_incpc(2); +endlabel796: ; +return 2; +} +unsigned long REGPARAM2 op_4e70_3(uae_u32 opcode) /* RESET */ +{ +{if (!regs.s) { Exception(8,0); goto endlabel797; } +{ customreset(); +}}m68k_incpc(2); +endlabel797: ; +return 2; +} +unsigned long REGPARAM2 op_4e71_3(uae_u32 opcode) /* NOP */ +{ +{}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_4e72_3(uae_u32 opcode) /* STOP */ +{ +{if (!regs.s) { Exception(8,0); goto endlabel799; } +{{ uae_s16 src = get_iword(2); + regs.sr = src; + MakeFromSR(); + m68k_setstopped(1); +}}}m68k_incpc(4); +endlabel799: ; +return 4; +} +unsigned long REGPARAM2 op_4e73_3(uae_u32 opcode) /* RTE */ +{ +{if (!regs.s) { Exception(8,0); goto endlabel800; } +{{ uaecptr sra = m68k_areg(regs, 7); +{ uae_s16 sr = get_word(sra); + m68k_areg(regs, 7) += 2; +{ uaecptr pca = m68k_areg(regs, 7); +{ uae_s32 pc = get_long(pca); + m68k_areg(regs, 7) += 4; + regs.sr = sr; m68k_do_rte(pc); + MakeFromSR(); +}}}}}}endlabel800: ; +return 8; +} +unsigned long REGPARAM2 op_4e74_3(uae_u32 opcode) /* RTD */ +{ +{ compiler_flush_jsr_stack(); +{ uaecptr pca = m68k_areg(regs, 7); +{ uae_s32 pc = get_long(pca); + m68k_areg(regs, 7) += 4; +{ uae_s16 offs = get_iword(2); + m68k_areg(regs, 7) += offs; + m68k_setpc_rte(pc); +}}}}return 8; +} +unsigned long REGPARAM2 op_4e75_3(uae_u32 opcode) /* RTS */ +{ +{ m68k_do_rts(); +}return 2; +} +unsigned long REGPARAM2 op_4e76_3(uae_u32 opcode) /* TRAPV */ +{ +{m68k_incpc(2); + if (GET_VFLG) { Exception(7,m68k_getpc()); goto endlabel803; } +}endlabel803: ; +return 2; +} +unsigned long REGPARAM2 op_4e77_3(uae_u32 opcode) /* RTR */ +{ +{ compiler_flush_jsr_stack(); + MakeSR(); +{ uaecptr sra = m68k_areg(regs, 7); +{ uae_s16 sr = get_word(sra); + m68k_areg(regs, 7) += 2; +{ uaecptr pca = m68k_areg(regs, 7); +{ uae_s32 pc = get_long(pca); + m68k_areg(regs, 7) += 4; + regs.sr &= 0xFF00; sr &= 0xFF; + regs.sr |= sr; m68k_setpc(pc); + MakeFromSR(); +}}}}}return 8; +} +unsigned long REGPARAM2 op_4e90_3(uae_u32 opcode) /* JSR */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +if (!Software_ProcessJSR_Ind (m68k_getpc(), srca)) + m68k_do_jsr(m68k_getpc() + 2, srca); +}}return 2; +} +unsigned long REGPARAM2 op_4ea8_3(uae_u32 opcode) /* JSR */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); + m68k_do_jsr(m68k_getpc() + 4, srca); +}}return 4; +} +unsigned long REGPARAM2 op_4eb0_3(uae_u32 opcode) /* JSR */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); + m68k_do_jsr(m68k_getpc() + 4, srca); +}}return 4; +} +unsigned long REGPARAM2 op_4eb8_3(uae_u32 opcode) /* JSR */ +{ +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); + m68k_do_jsr(m68k_getpc() + 4, srca); +}}return 4; +} +unsigned long REGPARAM2 op_4eb9_3(uae_u32 opcode) /* JSR */ +{ +{{ uaecptr srca = get_ilong(2); + m68k_do_jsr(m68k_getpc() + 6, srca); +}}return 6; +} +unsigned long REGPARAM2 op_4eba_3(uae_u32 opcode) /* JSR */ +{ +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); + m68k_do_jsr(m68k_getpc() + 4, srca); +}}return 4; +} +unsigned long REGPARAM2 op_4ebb_3(uae_u32 opcode) /* JSR */ +{ +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); + m68k_do_jsr(m68k_getpc() + 4, srca); +}}return 4; +} +unsigned long REGPARAM2 op_4ed0_3(uae_u32 opcode) /* JMP */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); + m68k_setpc(srca); +}}return 2; +} +unsigned long REGPARAM2 op_4ee8_3(uae_u32 opcode) /* JMP */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); + m68k_setpc(srca); +}}return 4; +} +unsigned long REGPARAM2 op_4ef0_3(uae_u32 opcode) /* JMP */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); + m68k_setpc(srca); +}}return 4; +} +unsigned long REGPARAM2 op_4ef8_3(uae_u32 opcode) /* JMP */ +{ +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); + m68k_setpc(srca); +}}return 4; +} +unsigned long REGPARAM2 op_4ef9_3(uae_u32 opcode) /* JMP */ +{ +{{ uaecptr srca = get_ilong(2); + m68k_setpc(srca); +}}return 6; +} +unsigned long REGPARAM2 op_4efa_3(uae_u32 opcode) /* JMP */ +{ +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); + m68k_setpc(srca); +}}return 4; +} +unsigned long REGPARAM2 op_4efb_3(uae_u32 opcode) /* JMP */ +{ +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); + m68k_setpc(srca); +}}return 4; +} +#endif + +#ifdef PART_5 +unsigned long REGPARAM2 op_5000_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 src = srcreg; +{ uae_s8 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s8)(dst)) + ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u8)(~dst)) < ((uae_u8)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((newv) & 0xff); +}}}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_5010_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 src = srcreg; +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s8 dst = get_byte(dsta); +{{uae_u32 newv = ((uae_s8)(dst)) + ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u8)(~dst)) < ((uae_u8)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(dsta,newv); +}}}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_5018_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 src = srcreg; +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s8 dst = get_byte(dsta); + m68k_areg(regs, dstreg) += areg_byteinc[dstreg]; +{{uae_u32 newv = ((uae_s8)(dst)) + ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u8)(~dst)) < ((uae_u8)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(dsta,newv); +}}}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_5020_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 src = srcreg; +{ uaecptr dsta = m68k_areg(regs, dstreg) - areg_byteinc[dstreg]; +{ uae_s8 dst = get_byte(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{{uae_u32 newv = ((uae_s8)(dst)) + ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u8)(~dst)) < ((uae_u8)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(dsta,newv); +}}}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_5028_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 src = srcreg; +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 dst = get_byte(dsta); +{{uae_u32 newv = ((uae_s8)(dst)) + ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u8)(~dst)) < ((uae_u8)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(dsta,newv); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_5030_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 src = srcreg; +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(2)); +{ uae_s8 dst = get_byte(dsta); +{{uae_u32 newv = ((uae_s8)(dst)) + ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u8)(~dst)) < ((uae_u8)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(dsta,newv); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_5038_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; +{{ uae_u32 src = srcreg; +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 dst = get_byte(dsta); +{{uae_u32 newv = ((uae_s8)(dst)) + ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u8)(~dst)) < ((uae_u8)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(dsta,newv); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_5039_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; +{{ uae_u32 src = srcreg; +{ uaecptr dsta = get_ilong(2); +{ uae_s8 dst = get_byte(dsta); +{{uae_u32 newv = ((uae_s8)(dst)) + ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u8)(~dst)) < ((uae_u8)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(dsta,newv); +}}}}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_5040_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 src = srcreg; +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s16)(dst)) + ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u16)(~dst)) < ((uae_u16)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((newv) & 0xffff); +}}}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_5048_3(uae_u32 opcode) /* ADDA */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 src = srcreg; +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst + src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_INCREMENT (); +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_5050_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 src = srcreg; +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s16 dst = get_word(dsta); +{{uae_u32 newv = ((uae_s16)(dst)) + ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u16)(~dst)) < ((uae_u16)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(dsta,newv); +}}}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_5058_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 src = srcreg; +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s16 dst = get_word(dsta); + m68k_areg(regs, dstreg) += 2; +{{uae_u32 newv = ((uae_s16)(dst)) + ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u16)(~dst)) < ((uae_u16)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(dsta,newv); +}}}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_5060_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 src = srcreg; +{ uaecptr dsta = m68k_areg(regs, dstreg) - 2; +{ uae_s16 dst = get_word(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{{uae_u32 newv = ((uae_s16)(dst)) + ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u16)(~dst)) < ((uae_u16)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(dsta,newv); +}}}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_5068_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 src = srcreg; +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 dst = get_word(dsta); +{{uae_u32 newv = ((uae_s16)(dst)) + ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u16)(~dst)) < ((uae_u16)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(dsta,newv); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_5070_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 src = srcreg; +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(2)); +{ uae_s16 dst = get_word(dsta); +{{uae_u32 newv = ((uae_s16)(dst)) + ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u16)(~dst)) < ((uae_u16)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(dsta,newv); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_5078_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; +{{ uae_u32 src = srcreg; +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 dst = get_word(dsta); +{{uae_u32 newv = ((uae_s16)(dst)) + ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u16)(~dst)) < ((uae_u16)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(dsta,newv); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_5079_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; +{{ uae_u32 src = srcreg; +{ uaecptr dsta = get_ilong(2); +{ uae_s16 dst = get_word(dsta); +{{uae_u32 newv = ((uae_s16)(dst)) + ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u16)(~dst)) < ((uae_u16)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(dsta,newv); +}}}}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_5080_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 src = srcreg; +{ uae_s32 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) + ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u32)(~dst)) < ((uae_u32)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_5088_3(uae_u32 opcode) /* ADDA */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 src = srcreg; +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst + src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_INCREMENT (); +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_5090_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 src = srcreg; +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s32 dst = get_long(dsta); +{{uae_u32 newv = ((uae_s32)(dst)) + ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u32)(~dst)) < ((uae_u32)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(dsta,newv); +}}}}}}}m68k_incpc(2); +return 10; +} +unsigned long REGPARAM2 op_5098_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 src = srcreg; +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s32 dst = get_long(dsta); + m68k_areg(regs, dstreg) += 4; +{{uae_u32 newv = ((uae_s32)(dst)) + ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u32)(~dst)) < ((uae_u32)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(dsta,newv); +}}}}}}}m68k_incpc(2); +return 10; +} +unsigned long REGPARAM2 op_50a0_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 src = srcreg; +{ uaecptr dsta = m68k_areg(regs, dstreg) - 4; +{ uae_s32 dst = get_long(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{{uae_u32 newv = ((uae_s32)(dst)) + ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u32)(~dst)) < ((uae_u32)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(dsta,newv); +}}}}}}}m68k_incpc(2); +return 10; +} +unsigned long REGPARAM2 op_50a8_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 src = srcreg; +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 dst = get_long(dsta); +{{uae_u32 newv = ((uae_s32)(dst)) + ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u32)(~dst)) < ((uae_u32)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(dsta,newv); +}}}}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_50b0_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 src = srcreg; +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(2)); +{ uae_s32 dst = get_long(dsta); +{{uae_u32 newv = ((uae_s32)(dst)) + ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u32)(~dst)) < ((uae_u32)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(dsta,newv); +}}}}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_50b8_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; +{{ uae_u32 src = srcreg; +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 dst = get_long(dsta); +{{uae_u32 newv = ((uae_s32)(dst)) + ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u32)(~dst)) < ((uae_u32)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(dsta,newv); +}}}}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_50b9_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; +{{ uae_u32 src = srcreg; +{ uaecptr dsta = get_ilong(2); +{ uae_s32 dst = get_long(dsta); +{{uae_u32 newv = ((uae_s32)(dst)) + ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u32)(~dst)) < ((uae_u32)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(dsta,newv); +}}}}}}}m68k_incpc(6); +return 14; +} +unsigned long REGPARAM2 op_50c0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{{ int val = cctrue(0) ? 0xff : 0; +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + m68k_dreg(regs, srcreg) = (m68k_dreg(regs, srcreg) & ~0xff) | ((val) & 0xff); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_50c8_3(uae_u32 opcode) /* DBcc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uae_s16 offs = get_iword(2); + if (!cctrue(0)) { + m68k_dreg(regs, srcreg) = (m68k_dreg(regs, srcreg) & ~0xffff) | (((src-1)) & 0xffff); + if (src) { + m68k_incpc((uae_s32)offs + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel846; + } + } +}}}m68k_incpc(4); +endlabel846: ; +return 4; +} +unsigned long REGPARAM2 op_50d0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ int val = cctrue(0) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_50d8_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); + m68k_areg(regs, srcreg) += areg_byteinc[srcreg]; +{ int val = cctrue(0) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_50e0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) - areg_byteinc[srcreg]; + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ int val = cctrue(0) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_50e8_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ int val = cctrue(0) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_50f0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ int val = cctrue(0) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_50f8_3(uae_u32 opcode) /* Scc */ +{ +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ int val = cctrue(0) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_50f9_3(uae_u32 opcode) /* Scc */ +{ +{{ uaecptr srca = get_ilong(2); +{ int val = cctrue(0) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_5100_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 src = srcreg; +{ uae_s8 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((newv) & 0xff); +}}}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_5110_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 src = srcreg; +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s8 dst = get_byte(dsta); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(dsta,newv); +}}}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_5118_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 src = srcreg; +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s8 dst = get_byte(dsta); + m68k_areg(regs, dstreg) += areg_byteinc[dstreg]; +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(dsta,newv); +}}}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_5120_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 src = srcreg; +{ uaecptr dsta = m68k_areg(regs, dstreg) - areg_byteinc[dstreg]; +{ uae_s8 dst = get_byte(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(dsta,newv); +}}}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_5128_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 src = srcreg; +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 dst = get_byte(dsta); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(dsta,newv); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_5130_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 src = srcreg; +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(2)); +{ uae_s8 dst = get_byte(dsta); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(dsta,newv); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_5138_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; +{{ uae_u32 src = srcreg; +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 dst = get_byte(dsta); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(dsta,newv); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_5139_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; +{{ uae_u32 src = srcreg; +{ uaecptr dsta = get_ilong(2); +{ uae_s8 dst = get_byte(dsta); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(dsta,newv); +}}}}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_5140_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 src = srcreg; +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((newv) & 0xffff); +}}}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_5148_3(uae_u32 opcode) /* SUBA */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 src = srcreg; +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst - src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_5150_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 src = srcreg; +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s16 dst = get_word(dsta); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(dsta,newv); +}}}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_5158_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 src = srcreg; +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s16 dst = get_word(dsta); + m68k_areg(regs, dstreg) += 2; +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(dsta,newv); +}}}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_5160_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 src = srcreg; +{ uaecptr dsta = m68k_areg(regs, dstreg) - 2; +{ uae_s16 dst = get_word(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(dsta,newv); +}}}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_5168_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 src = srcreg; +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 dst = get_word(dsta); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(dsta,newv); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_5170_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 src = srcreg; +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(2)); +{ uae_s16 dst = get_word(dsta); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(dsta,newv); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_5178_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; +{{ uae_u32 src = srcreg; +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 dst = get_word(dsta); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(dsta,newv); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_5179_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; +{{ uae_u32 src = srcreg; +{ uaecptr dsta = get_ilong(2); +{ uae_s16 dst = get_word(dsta); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(dsta,newv); +}}}}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_5180_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 src = srcreg; +{ uae_s32 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_5188_3(uae_u32 opcode) /* SUBA */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 src = srcreg; +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst - src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_5190_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 src = srcreg; +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s32 dst = get_long(dsta); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(dsta,newv); +}}}}}}}m68k_incpc(2); +return 10; +} +unsigned long REGPARAM2 op_5198_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 src = srcreg; +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s32 dst = get_long(dsta); + m68k_areg(regs, dstreg) += 4; +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(dsta,newv); +}}}}}}}m68k_incpc(2); +return 10; +} +unsigned long REGPARAM2 op_51a0_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 src = srcreg; +{ uaecptr dsta = m68k_areg(regs, dstreg) - 4; +{ uae_s32 dst = get_long(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(dsta,newv); +}}}}}}}m68k_incpc(2); +return 10; +} +unsigned long REGPARAM2 op_51a8_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 src = srcreg; +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 dst = get_long(dsta); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(dsta,newv); +}}}}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_51b0_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 src = srcreg; +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(2)); +{ uae_s32 dst = get_long(dsta); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(dsta,newv); +}}}}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_51b8_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; +{{ uae_u32 src = srcreg; +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 dst = get_long(dsta); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(dsta,newv); +}}}}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_51b9_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; +{{ uae_u32 src = srcreg; +{ uaecptr dsta = get_ilong(2); +{ uae_s32 dst = get_long(dsta); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(dsta,newv); +}}}}}}}m68k_incpc(6); +return 14; +} +unsigned long REGPARAM2 op_51c0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{{ int val = cctrue(1) ? 0xff : 0; +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + m68k_dreg(regs, srcreg) = (m68k_dreg(regs, srcreg) & ~0xff) | ((val) & 0xff); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_51c8_3(uae_u32 opcode) /* DBcc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uae_s16 offs = get_iword(2); + if (!cctrue(1)) { + m68k_dreg(regs, srcreg) = (m68k_dreg(regs, srcreg) & ~0xffff) | (((src-1)) & 0xffff); + if (src) { + m68k_incpc((uae_s32)offs + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel881; + } + } +}}}m68k_incpc(4); +endlabel881: ; +return 4; +} +unsigned long REGPARAM2 op_51d0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ int val = cctrue(1) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_51d8_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); + m68k_areg(regs, srcreg) += areg_byteinc[srcreg]; +{ int val = cctrue(1) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_51e0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) - areg_byteinc[srcreg]; + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ int val = cctrue(1) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_51e8_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ int val = cctrue(1) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_51f0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ int val = cctrue(1) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_51f8_3(uae_u32 opcode) /* Scc */ +{ +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ int val = cctrue(1) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_51f9_3(uae_u32 opcode) /* Scc */ +{ +{{ uaecptr srca = get_ilong(2); +{ int val = cctrue(1) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_52c0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{{ int val = cctrue(2) ? 0xff : 0; +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + m68k_dreg(regs, srcreg) = (m68k_dreg(regs, srcreg) & ~0xff) | ((val) & 0xff); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_52c8_3(uae_u32 opcode) /* DBcc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uae_s16 offs = get_iword(2); + if (!cctrue(2)) { + m68k_dreg(regs, srcreg) = (m68k_dreg(regs, srcreg) & ~0xffff) | (((src-1)) & 0xffff); + if (src) { + m68k_incpc((uae_s32)offs + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel890; + } + } +}}}m68k_incpc(4); +endlabel890: ; +return 4; +} +unsigned long REGPARAM2 op_52d0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ int val = cctrue(2) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_52d8_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); + m68k_areg(regs, srcreg) += areg_byteinc[srcreg]; +{ int val = cctrue(2) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_52e0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) - areg_byteinc[srcreg]; + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ int val = cctrue(2) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_52e8_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ int val = cctrue(2) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_52f0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ int val = cctrue(2) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_52f8_3(uae_u32 opcode) /* Scc */ +{ +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ int val = cctrue(2) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_52f9_3(uae_u32 opcode) /* Scc */ +{ +{{ uaecptr srca = get_ilong(2); +{ int val = cctrue(2) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_53c0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{{ int val = cctrue(3) ? 0xff : 0; +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + m68k_dreg(regs, srcreg) = (m68k_dreg(regs, srcreg) & ~0xff) | ((val) & 0xff); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_53c8_3(uae_u32 opcode) /* DBcc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uae_s16 offs = get_iword(2); + if (!cctrue(3)) { + m68k_dreg(regs, srcreg) = (m68k_dreg(regs, srcreg) & ~0xffff) | (((src-1)) & 0xffff); + if (src) { + m68k_incpc((uae_s32)offs + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel899; + } + } +}}}m68k_incpc(4); +endlabel899: ; +return 4; +} +unsigned long REGPARAM2 op_53d0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ int val = cctrue(3) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_53d8_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); + m68k_areg(regs, srcreg) += areg_byteinc[srcreg]; +{ int val = cctrue(3) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_53e0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) - areg_byteinc[srcreg]; + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ int val = cctrue(3) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_53e8_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ int val = cctrue(3) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_53f0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ int val = cctrue(3) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_53f8_3(uae_u32 opcode) /* Scc */ +{ +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ int val = cctrue(3) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_53f9_3(uae_u32 opcode) /* Scc */ +{ +{{ uaecptr srca = get_ilong(2); +{ int val = cctrue(3) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_54c0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{{ int val = cctrue(4) ? 0xff : 0; +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + m68k_dreg(regs, srcreg) = (m68k_dreg(regs, srcreg) & ~0xff) | ((val) & 0xff); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_54c8_3(uae_u32 opcode) /* DBcc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uae_s16 offs = get_iword(2); + if (!cctrue(4)) { + m68k_dreg(regs, srcreg) = (m68k_dreg(regs, srcreg) & ~0xffff) | (((src-1)) & 0xffff); + if (src) { + m68k_incpc((uae_s32)offs + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel908; + } + } +}}}m68k_incpc(4); +endlabel908: ; +return 4; +} +unsigned long REGPARAM2 op_54d0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ int val = cctrue(4) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_54d8_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); + m68k_areg(regs, srcreg) += areg_byteinc[srcreg]; +{ int val = cctrue(4) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_54e0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) - areg_byteinc[srcreg]; + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ int val = cctrue(4) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_54e8_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ int val = cctrue(4) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_54f0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ int val = cctrue(4) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_54f8_3(uae_u32 opcode) /* Scc */ +{ +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ int val = cctrue(4) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_54f9_3(uae_u32 opcode) /* Scc */ +{ +{{ uaecptr srca = get_ilong(2); +{ int val = cctrue(4) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_55c0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{{ int val = cctrue(5) ? 0xff : 0; +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + m68k_dreg(regs, srcreg) = (m68k_dreg(regs, srcreg) & ~0xff) | ((val) & 0xff); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_55c8_3(uae_u32 opcode) /* DBcc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uae_s16 offs = get_iword(2); + if (!cctrue(5)) { + m68k_dreg(regs, srcreg) = (m68k_dreg(regs, srcreg) & ~0xffff) | (((src-1)) & 0xffff); + if (src) { + m68k_incpc((uae_s32)offs + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel917; + } + } +}}}m68k_incpc(4); +endlabel917: ; +return 4; +} +unsigned long REGPARAM2 op_55d0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ int val = cctrue(5) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_55d8_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); + m68k_areg(regs, srcreg) += areg_byteinc[srcreg]; +{ int val = cctrue(5) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_55e0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) - areg_byteinc[srcreg]; + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ int val = cctrue(5) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_55e8_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ int val = cctrue(5) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_55f0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ int val = cctrue(5) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_55f8_3(uae_u32 opcode) /* Scc */ +{ +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ int val = cctrue(5) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_55f9_3(uae_u32 opcode) /* Scc */ +{ +{{ uaecptr srca = get_ilong(2); +{ int val = cctrue(5) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_56c0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{{ int val = cctrue(6) ? 0xff : 0; +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + m68k_dreg(regs, srcreg) = (m68k_dreg(regs, srcreg) & ~0xff) | ((val) & 0xff); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_56c8_3(uae_u32 opcode) /* DBcc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uae_s16 offs = get_iword(2); + if (!cctrue(6)) { + m68k_dreg(regs, srcreg) = (m68k_dreg(regs, srcreg) & ~0xffff) | (((src-1)) & 0xffff); + if (src) { + m68k_incpc((uae_s32)offs + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel926; + } + } +}}}m68k_incpc(4); +endlabel926: ; +return 4; +} +unsigned long REGPARAM2 op_56d0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ int val = cctrue(6) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_56d8_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); + m68k_areg(regs, srcreg) += areg_byteinc[srcreg]; +{ int val = cctrue(6) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_56e0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) - areg_byteinc[srcreg]; + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ int val = cctrue(6) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_56e8_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ int val = cctrue(6) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_56f0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ int val = cctrue(6) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_56f8_3(uae_u32 opcode) /* Scc */ +{ +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ int val = cctrue(6) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_56f9_3(uae_u32 opcode) /* Scc */ +{ +{{ uaecptr srca = get_ilong(2); +{ int val = cctrue(6) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_57c0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{{ int val = cctrue(7) ? 0xff : 0; +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + m68k_dreg(regs, srcreg) = (m68k_dreg(regs, srcreg) & ~0xff) | ((val) & 0xff); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_57c8_3(uae_u32 opcode) /* DBcc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uae_s16 offs = get_iword(2); + if (!cctrue(7)) { + m68k_dreg(regs, srcreg) = (m68k_dreg(regs, srcreg) & ~0xffff) | (((src-1)) & 0xffff); + if (src) { + m68k_incpc((uae_s32)offs + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel935; + } + } +}}}m68k_incpc(4); +endlabel935: ; +return 4; +} +unsigned long REGPARAM2 op_57d0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ int val = cctrue(7) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_57d8_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); + m68k_areg(regs, srcreg) += areg_byteinc[srcreg]; +{ int val = cctrue(7) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_57e0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) - areg_byteinc[srcreg]; + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ int val = cctrue(7) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_57e8_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ int val = cctrue(7) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_57f0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ int val = cctrue(7) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_57f8_3(uae_u32 opcode) /* Scc */ +{ +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ int val = cctrue(7) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_57f9_3(uae_u32 opcode) /* Scc */ +{ +{{ uaecptr srca = get_ilong(2); +{ int val = cctrue(7) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_58c0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{{ int val = cctrue(8) ? 0xff : 0; +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + m68k_dreg(regs, srcreg) = (m68k_dreg(regs, srcreg) & ~0xff) | ((val) & 0xff); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_58c8_3(uae_u32 opcode) /* DBcc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uae_s16 offs = get_iword(2); + if (!cctrue(8)) { + m68k_dreg(regs, srcreg) = (m68k_dreg(regs, srcreg) & ~0xffff) | (((src-1)) & 0xffff); + if (src) { + m68k_incpc((uae_s32)offs + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel944; + } + } +}}}m68k_incpc(4); +endlabel944: ; +return 4; +} +unsigned long REGPARAM2 op_58d0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ int val = cctrue(8) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_58d8_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); + m68k_areg(regs, srcreg) += areg_byteinc[srcreg]; +{ int val = cctrue(8) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_58e0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) - areg_byteinc[srcreg]; + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ int val = cctrue(8) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_58e8_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ int val = cctrue(8) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_58f0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ int val = cctrue(8) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_58f8_3(uae_u32 opcode) /* Scc */ +{ +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ int val = cctrue(8) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_58f9_3(uae_u32 opcode) /* Scc */ +{ +{{ uaecptr srca = get_ilong(2); +{ int val = cctrue(8) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_59c0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{{ int val = cctrue(9) ? 0xff : 0; +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + m68k_dreg(regs, srcreg) = (m68k_dreg(regs, srcreg) & ~0xff) | ((val) & 0xff); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_59c8_3(uae_u32 opcode) /* DBcc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uae_s16 offs = get_iword(2); + if (!cctrue(9)) { + m68k_dreg(regs, srcreg) = (m68k_dreg(regs, srcreg) & ~0xffff) | (((src-1)) & 0xffff); + if (src) { + m68k_incpc((uae_s32)offs + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel953; + } + } +}}}m68k_incpc(4); +endlabel953: ; +return 4; +} +unsigned long REGPARAM2 op_59d0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ int val = cctrue(9) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_59d8_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); + m68k_areg(regs, srcreg) += areg_byteinc[srcreg]; +{ int val = cctrue(9) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_59e0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) - areg_byteinc[srcreg]; + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ int val = cctrue(9) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_59e8_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ int val = cctrue(9) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_59f0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ int val = cctrue(9) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_59f8_3(uae_u32 opcode) /* Scc */ +{ +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ int val = cctrue(9) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_59f9_3(uae_u32 opcode) /* Scc */ +{ +{{ uaecptr srca = get_ilong(2); +{ int val = cctrue(9) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_5ac0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{{ int val = cctrue(10) ? 0xff : 0; +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + m68k_dreg(regs, srcreg) = (m68k_dreg(regs, srcreg) & ~0xff) | ((val) & 0xff); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_5ac8_3(uae_u32 opcode) /* DBcc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uae_s16 offs = get_iword(2); + if (!cctrue(10)) { + m68k_dreg(regs, srcreg) = (m68k_dreg(regs, srcreg) & ~0xffff) | (((src-1)) & 0xffff); + if (src) { + m68k_incpc((uae_s32)offs + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel962; + } + } +}}}m68k_incpc(4); +endlabel962: ; +return 4; +} +unsigned long REGPARAM2 op_5ad0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ int val = cctrue(10) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_5ad8_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); + m68k_areg(regs, srcreg) += areg_byteinc[srcreg]; +{ int val = cctrue(10) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_5ae0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) - areg_byteinc[srcreg]; + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ int val = cctrue(10) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_5ae8_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ int val = cctrue(10) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_5af0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ int val = cctrue(10) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_5af8_3(uae_u32 opcode) /* Scc */ +{ +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ int val = cctrue(10) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_5af9_3(uae_u32 opcode) /* Scc */ +{ +{{ uaecptr srca = get_ilong(2); +{ int val = cctrue(10) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_5bc0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{{ int val = cctrue(11) ? 0xff : 0; +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + m68k_dreg(regs, srcreg) = (m68k_dreg(regs, srcreg) & ~0xff) | ((val) & 0xff); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_5bc8_3(uae_u32 opcode) /* DBcc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uae_s16 offs = get_iword(2); + if (!cctrue(11)) { + m68k_dreg(regs, srcreg) = (m68k_dreg(regs, srcreg) & ~0xffff) | (((src-1)) & 0xffff); + if (src) { + m68k_incpc((uae_s32)offs + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel971; + } + } +}}}m68k_incpc(4); +endlabel971: ; +return 4; +} +unsigned long REGPARAM2 op_5bd0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ int val = cctrue(11) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_5bd8_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); + m68k_areg(regs, srcreg) += areg_byteinc[srcreg]; +{ int val = cctrue(11) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_5be0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) - areg_byteinc[srcreg]; + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ int val = cctrue(11) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_5be8_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ int val = cctrue(11) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_5bf0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ int val = cctrue(11) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_5bf8_3(uae_u32 opcode) /* Scc */ +{ +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ int val = cctrue(11) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_5bf9_3(uae_u32 opcode) /* Scc */ +{ +{{ uaecptr srca = get_ilong(2); +{ int val = cctrue(11) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_5cc0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{{ int val = cctrue(12) ? 0xff : 0; +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + m68k_dreg(regs, srcreg) = (m68k_dreg(regs, srcreg) & ~0xff) | ((val) & 0xff); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_5cc8_3(uae_u32 opcode) /* DBcc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uae_s16 offs = get_iword(2); + if (!cctrue(12)) { + m68k_dreg(regs, srcreg) = (m68k_dreg(regs, srcreg) & ~0xffff) | (((src-1)) & 0xffff); + if (src) { + m68k_incpc((uae_s32)offs + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel980; + } + } +}}}m68k_incpc(4); +endlabel980: ; +return 4; +} +unsigned long REGPARAM2 op_5cd0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ int val = cctrue(12) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_5cd8_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); + m68k_areg(regs, srcreg) += areg_byteinc[srcreg]; +{ int val = cctrue(12) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_5ce0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) - areg_byteinc[srcreg]; + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ int val = cctrue(12) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_5ce8_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ int val = cctrue(12) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_5cf0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ int val = cctrue(12) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_5cf8_3(uae_u32 opcode) /* Scc */ +{ +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ int val = cctrue(12) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_5cf9_3(uae_u32 opcode) /* Scc */ +{ +{{ uaecptr srca = get_ilong(2); +{ int val = cctrue(12) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_5dc0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{{ int val = cctrue(13) ? 0xff : 0; +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + m68k_dreg(regs, srcreg) = (m68k_dreg(regs, srcreg) & ~0xff) | ((val) & 0xff); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_5dc8_3(uae_u32 opcode) /* DBcc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uae_s16 offs = get_iword(2); + if (!cctrue(13)) { + m68k_dreg(regs, srcreg) = (m68k_dreg(regs, srcreg) & ~0xffff) | (((src-1)) & 0xffff); + if (src) { + m68k_incpc((uae_s32)offs + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel989; + } + } +}}}m68k_incpc(4); +endlabel989: ; +return 4; +} +unsigned long REGPARAM2 op_5dd0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ int val = cctrue(13) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_5dd8_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); + m68k_areg(regs, srcreg) += areg_byteinc[srcreg]; +{ int val = cctrue(13) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_5de0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) - areg_byteinc[srcreg]; + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ int val = cctrue(13) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_5de8_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ int val = cctrue(13) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_5df0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ int val = cctrue(13) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_5df8_3(uae_u32 opcode) /* Scc */ +{ +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ int val = cctrue(13) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_5df9_3(uae_u32 opcode) /* Scc */ +{ +{{ uaecptr srca = get_ilong(2); +{ int val = cctrue(13) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_5ec0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{{ int val = cctrue(14) ? 0xff : 0; +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + m68k_dreg(regs, srcreg) = (m68k_dreg(regs, srcreg) & ~0xff) | ((val) & 0xff); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_5ec8_3(uae_u32 opcode) /* DBcc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uae_s16 offs = get_iword(2); + if (!cctrue(14)) { + m68k_dreg(regs, srcreg) = (m68k_dreg(regs, srcreg) & ~0xffff) | (((src-1)) & 0xffff); + if (src) { + m68k_incpc((uae_s32)offs + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel998; + } + } +}}}m68k_incpc(4); +endlabel998: ; +return 4; +} +unsigned long REGPARAM2 op_5ed0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ int val = cctrue(14) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_5ed8_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); + m68k_areg(regs, srcreg) += areg_byteinc[srcreg]; +{ int val = cctrue(14) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_5ee0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) - areg_byteinc[srcreg]; + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ int val = cctrue(14) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_5ee8_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ int val = cctrue(14) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_5ef0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ int val = cctrue(14) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_5ef8_3(uae_u32 opcode) /* Scc */ +{ +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ int val = cctrue(14) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_5ef9_3(uae_u32 opcode) /* Scc */ +{ +{{ uaecptr srca = get_ilong(2); +{ int val = cctrue(14) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(6); +return 8; +} +#endif + +#ifdef PART_6 +unsigned long REGPARAM2 op_5fc0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{{ int val = cctrue(15) ? 0xff : 0; +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + m68k_dreg(regs, srcreg) = (m68k_dreg(regs, srcreg) & ~0xff) | ((val) & 0xff); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_5fc8_3(uae_u32 opcode) /* DBcc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uae_s16 offs = get_iword(2); + if (!cctrue(15)) { + m68k_dreg(regs, srcreg) = (m68k_dreg(regs, srcreg) & ~0xffff) | (((src-1)) & 0xffff); + if (src) { + m68k_incpc((uae_s32)offs + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel1007; + } + } +}}}m68k_incpc(4); +endlabel1007: ; +return 4; +} +unsigned long REGPARAM2 op_5fd0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ int val = cctrue(15) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_5fd8_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg); + m68k_areg(regs, srcreg) += areg_byteinc[srcreg]; +{ int val = cctrue(15) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_5fe0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) - areg_byteinc[srcreg]; + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ int val = cctrue(15) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_5fe8_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ int val = cctrue(15) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_5ff0_3(uae_u32 opcode) /* Scc */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ int val = cctrue(15) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_5ff8_3(uae_u32 opcode) /* Scc */ +{ +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ int val = cctrue(15) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_5ff9_3(uae_u32 opcode) /* Scc */ +{ +{{ uaecptr srca = get_ilong(2); +{ int val = cctrue(15) ? 0xff : 0; + put_byte(srca,val); +}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_6000_3(uae_u32 opcode) /* Bcc */ +{ +{{ uae_s16 src = get_iword(2); + if (!cctrue(0)) goto didnt_jump; + m68k_incpc ((uae_s32)src + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel1015; +didnt_jump:; +}}m68k_incpc(4); +endlabel1015: ; +return 4; +} +unsigned long REGPARAM2 op_6001_3(uae_u32 opcode) /* Bcc */ +{ + uae_u32 srcreg = (uae_s32)(uae_s8)(opcode & 255); +{{ uae_u32 src = srcreg; + if (!cctrue(0)) goto didnt_jump; + m68k_incpc ((uae_s32)src + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel1016; +didnt_jump:; +}}m68k_incpc(2); +endlabel1016: ; +return 2; +} +unsigned long REGPARAM2 op_60ff_3(uae_u32 opcode) /* Bcc */ +{ +{ m68k_incpc(2); + if (!cctrue(0)) goto endlabel1017; + last_addr_for_exception_3 = m68k_getpc() + 2; + last_fault_for_exception_3 = m68k_getpc() + 1; + last_op_for_exception_3 = opcode; Exception(3,0); goto endlabel1017; +{ uae_s32 src = get_ilong(2); + if (!cctrue(0)) goto didnt_jump; + m68k_incpc ((uae_s32)src + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel1017; +didnt_jump:; +}}m68k_incpc(6); +endlabel1017: ; +return 6; +} +unsigned long REGPARAM2 op_6100_3(uae_u32 opcode) /* BSR */ +{ +{{ uae_s16 src = get_iword(2); + uae_s32 s = (uae_s32)src + 2; + m68k_do_bsr(m68k_getpc() + 4, s); +}}return 4; +} +unsigned long REGPARAM2 op_6101_3(uae_u32 opcode) /* BSR */ +{ + uae_u32 srcreg = (uae_s32)(uae_s8)(opcode & 255); +{{ uae_u32 src = srcreg; + uae_s32 s = (uae_s32)src + 2; + m68k_do_bsr(m68k_getpc() + 2, s); +}}return 2; +} +unsigned long REGPARAM2 op_61ff_3(uae_u32 opcode) /* BSR */ +{ +{{ uae_s32 src = get_ilong(2); + uae_s32 s = (uae_s32)src + 2; + m68k_do_bsr(m68k_getpc() + 6, s); +}}return 6; +} +unsigned long REGPARAM2 op_6200_3(uae_u32 opcode) /* Bcc */ +{ +{{ uae_s16 src = get_iword(2); + if (!cctrue(2)) goto didnt_jump; + m68k_incpc ((uae_s32)src + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel1021; +didnt_jump:; +}}m68k_incpc(4); +endlabel1021: ; +return 4; +} +unsigned long REGPARAM2 op_6201_3(uae_u32 opcode) /* Bcc */ +{ + uae_u32 srcreg = (uae_s32)(uae_s8)(opcode & 255); +{{ uae_u32 src = srcreg; + if (!cctrue(2)) goto didnt_jump; + m68k_incpc ((uae_s32)src + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel1022; +didnt_jump:; +}}m68k_incpc(2); +endlabel1022: ; +return 2; +} +unsigned long REGPARAM2 op_62ff_3(uae_u32 opcode) /* Bcc */ +{ +{ m68k_incpc(2); + if (!cctrue(2)) goto endlabel1023; + last_addr_for_exception_3 = m68k_getpc() + 2; + last_fault_for_exception_3 = m68k_getpc() + 1; + last_op_for_exception_3 = opcode; Exception(3,0); goto endlabel1023; +{ uae_s32 src = get_ilong(2); + if (!cctrue(2)) goto didnt_jump; + m68k_incpc ((uae_s32)src + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel1023; +didnt_jump:; +}}m68k_incpc(6); +endlabel1023: ; +return 6; +} +unsigned long REGPARAM2 op_6300_3(uae_u32 opcode) /* Bcc */ +{ +{{ uae_s16 src = get_iword(2); + if (!cctrue(3)) goto didnt_jump; + m68k_incpc ((uae_s32)src + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel1024; +didnt_jump:; +}}m68k_incpc(4); +endlabel1024: ; +return 4; +} +unsigned long REGPARAM2 op_6301_3(uae_u32 opcode) /* Bcc */ +{ + uae_u32 srcreg = (uae_s32)(uae_s8)(opcode & 255); +{{ uae_u32 src = srcreg; + if (!cctrue(3)) goto didnt_jump; + m68k_incpc ((uae_s32)src + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel1025; +didnt_jump:; +}}m68k_incpc(2); +endlabel1025: ; +return 2; +} +unsigned long REGPARAM2 op_63ff_3(uae_u32 opcode) /* Bcc */ +{ +{ m68k_incpc(2); + if (!cctrue(3)) goto endlabel1026; + last_addr_for_exception_3 = m68k_getpc() + 2; + last_fault_for_exception_3 = m68k_getpc() + 1; + last_op_for_exception_3 = opcode; Exception(3,0); goto endlabel1026; +{ uae_s32 src = get_ilong(2); + if (!cctrue(3)) goto didnt_jump; + m68k_incpc ((uae_s32)src + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel1026; +didnt_jump:; +}}m68k_incpc(6); +endlabel1026: ; +return 6; +} +unsigned long REGPARAM2 op_6400_3(uae_u32 opcode) /* Bcc */ +{ +{{ uae_s16 src = get_iword(2); + if (!cctrue(4)) goto didnt_jump; + m68k_incpc ((uae_s32)src + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel1027; +didnt_jump:; +}}m68k_incpc(4); +endlabel1027: ; +return 4; +} +unsigned long REGPARAM2 op_6401_3(uae_u32 opcode) /* Bcc */ +{ + uae_u32 srcreg = (uae_s32)(uae_s8)(opcode & 255); +{{ uae_u32 src = srcreg; + if (!cctrue(4)) goto didnt_jump; + m68k_incpc ((uae_s32)src + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel1028; +didnt_jump:; +}}m68k_incpc(2); +endlabel1028: ; +return 2; +} +unsigned long REGPARAM2 op_64ff_3(uae_u32 opcode) /* Bcc */ +{ +{ m68k_incpc(2); + if (!cctrue(4)) goto endlabel1029; + last_addr_for_exception_3 = m68k_getpc() + 2; + last_fault_for_exception_3 = m68k_getpc() + 1; + last_op_for_exception_3 = opcode; Exception(3,0); goto endlabel1029; +{ uae_s32 src = get_ilong(2); + if (!cctrue(4)) goto didnt_jump; + m68k_incpc ((uae_s32)src + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel1029; +didnt_jump:; +}}m68k_incpc(6); +endlabel1029: ; +return 6; +} +unsigned long REGPARAM2 op_6500_3(uae_u32 opcode) /* Bcc */ +{ +{{ uae_s16 src = get_iword(2); + if (!cctrue(5)) goto didnt_jump; + m68k_incpc ((uae_s32)src + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel1030; +didnt_jump:; +}}m68k_incpc(4); +endlabel1030: ; +return 4; +} +unsigned long REGPARAM2 op_6501_3(uae_u32 opcode) /* Bcc */ +{ + uae_u32 srcreg = (uae_s32)(uae_s8)(opcode & 255); +{{ uae_u32 src = srcreg; + if (!cctrue(5)) goto didnt_jump; + m68k_incpc ((uae_s32)src + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel1031; +didnt_jump:; +}}m68k_incpc(2); +endlabel1031: ; +return 2; +} +unsigned long REGPARAM2 op_65ff_3(uae_u32 opcode) /* Bcc */ +{ +{ m68k_incpc(2); + if (!cctrue(5)) goto endlabel1032; + last_addr_for_exception_3 = m68k_getpc() + 2; + last_fault_for_exception_3 = m68k_getpc() + 1; + last_op_for_exception_3 = opcode; Exception(3,0); goto endlabel1032; +{ uae_s32 src = get_ilong(2); + if (!cctrue(5)) goto didnt_jump; + m68k_incpc ((uae_s32)src + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel1032; +didnt_jump:; +}}m68k_incpc(6); +endlabel1032: ; +return 6; +} +unsigned long REGPARAM2 op_6600_3(uae_u32 opcode) /* Bcc */ +{ +{{ uae_s16 src = get_iword(2); + if (!cctrue(6)) goto didnt_jump; + m68k_incpc ((uae_s32)src + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel1033; +didnt_jump:; +}}m68k_incpc(4); +endlabel1033: ; +return 4; +} +unsigned long REGPARAM2 op_6601_3(uae_u32 opcode) /* Bcc */ +{ + uae_u32 srcreg = (uae_s32)(uae_s8)(opcode & 255); +{{ uae_u32 src = srcreg; + if (!cctrue(6)) goto didnt_jump; + m68k_incpc ((uae_s32)src + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel1034; +didnt_jump:; +}}m68k_incpc(2); +endlabel1034: ; +return 2; +} +unsigned long REGPARAM2 op_66ff_3(uae_u32 opcode) /* Bcc */ +{ +{ m68k_incpc(2); + if (!cctrue(6)) goto endlabel1035; + last_addr_for_exception_3 = m68k_getpc() + 2; + last_fault_for_exception_3 = m68k_getpc() + 1; + last_op_for_exception_3 = opcode; Exception(3,0); goto endlabel1035; +{ uae_s32 src = get_ilong(2); + if (!cctrue(6)) goto didnt_jump; + m68k_incpc ((uae_s32)src + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel1035; +didnt_jump:; +}}m68k_incpc(6); +endlabel1035: ; +return 6; +} +unsigned long REGPARAM2 op_6700_3(uae_u32 opcode) /* Bcc */ +{ +{{ uae_s16 src = get_iword(2); + if (!cctrue(7)) goto didnt_jump; + m68k_incpc ((uae_s32)src + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel1036; +didnt_jump:; +}}m68k_incpc(4); +endlabel1036: ; +return 4; +} +unsigned long REGPARAM2 op_6701_3(uae_u32 opcode) /* Bcc */ +{ + uae_u32 srcreg = (uae_s32)(uae_s8)(opcode & 255); +{{ uae_u32 src = srcreg; + if (!cctrue(7)) goto didnt_jump; + m68k_incpc ((uae_s32)src + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel1037; +didnt_jump:; +}}m68k_incpc(2); +endlabel1037: ; +return 2; +} +unsigned long REGPARAM2 op_67ff_3(uae_u32 opcode) /* Bcc */ +{ +{ m68k_incpc(2); + if (!cctrue(7)) goto endlabel1038; + last_addr_for_exception_3 = m68k_getpc() + 2; + last_fault_for_exception_3 = m68k_getpc() + 1; + last_op_for_exception_3 = opcode; Exception(3,0); goto endlabel1038; +{ uae_s32 src = get_ilong(2); + if (!cctrue(7)) goto didnt_jump; + m68k_incpc ((uae_s32)src + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel1038; +didnt_jump:; +}}m68k_incpc(6); +endlabel1038: ; +return 6; +} +unsigned long REGPARAM2 op_6800_3(uae_u32 opcode) /* Bcc */ +{ +{{ uae_s16 src = get_iword(2); + if (!cctrue(8)) goto didnt_jump; + m68k_incpc ((uae_s32)src + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel1039; +didnt_jump:; +}}m68k_incpc(4); +endlabel1039: ; +return 4; +} +unsigned long REGPARAM2 op_6801_3(uae_u32 opcode) /* Bcc */ +{ + uae_u32 srcreg = (uae_s32)(uae_s8)(opcode & 255); +{{ uae_u32 src = srcreg; + if (!cctrue(8)) goto didnt_jump; + m68k_incpc ((uae_s32)src + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel1040; +didnt_jump:; +}}m68k_incpc(2); +endlabel1040: ; +return 2; +} +unsigned long REGPARAM2 op_68ff_3(uae_u32 opcode) /* Bcc */ +{ +{ m68k_incpc(2); + if (!cctrue(8)) goto endlabel1041; + last_addr_for_exception_3 = m68k_getpc() + 2; + last_fault_for_exception_3 = m68k_getpc() + 1; + last_op_for_exception_3 = opcode; Exception(3,0); goto endlabel1041; +{ uae_s32 src = get_ilong(2); + if (!cctrue(8)) goto didnt_jump; + m68k_incpc ((uae_s32)src + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel1041; +didnt_jump:; +}}m68k_incpc(6); +endlabel1041: ; +return 6; +} +unsigned long REGPARAM2 op_6900_3(uae_u32 opcode) /* Bcc */ +{ +{{ uae_s16 src = get_iword(2); + if (!cctrue(9)) goto didnt_jump; + m68k_incpc ((uae_s32)src + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel1042; +didnt_jump:; +}}m68k_incpc(4); +endlabel1042: ; +return 4; +} +unsigned long REGPARAM2 op_6901_3(uae_u32 opcode) /* Bcc */ +{ + uae_u32 srcreg = (uae_s32)(uae_s8)(opcode & 255); +{{ uae_u32 src = srcreg; + if (!cctrue(9)) goto didnt_jump; + m68k_incpc ((uae_s32)src + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel1043; +didnt_jump:; +}}m68k_incpc(2); +endlabel1043: ; +return 2; +} +unsigned long REGPARAM2 op_69ff_3(uae_u32 opcode) /* Bcc */ +{ +{ m68k_incpc(2); + if (!cctrue(9)) goto endlabel1044; + last_addr_for_exception_3 = m68k_getpc() + 2; + last_fault_for_exception_3 = m68k_getpc() + 1; + last_op_for_exception_3 = opcode; Exception(3,0); goto endlabel1044; +{ uae_s32 src = get_ilong(2); + if (!cctrue(9)) goto didnt_jump; + m68k_incpc ((uae_s32)src + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel1044; +didnt_jump:; +}}m68k_incpc(6); +endlabel1044: ; +return 6; +} +unsigned long REGPARAM2 op_6a00_3(uae_u32 opcode) /* Bcc */ +{ +{{ uae_s16 src = get_iword(2); + if (!cctrue(10)) goto didnt_jump; + m68k_incpc ((uae_s32)src + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel1045; +didnt_jump:; +}}m68k_incpc(4); +endlabel1045: ; +return 4; +} +unsigned long REGPARAM2 op_6a01_3(uae_u32 opcode) /* Bcc */ +{ + uae_u32 srcreg = (uae_s32)(uae_s8)(opcode & 255); +{{ uae_u32 src = srcreg; + if (!cctrue(10)) goto didnt_jump; + m68k_incpc ((uae_s32)src + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel1046; +didnt_jump:; +}}m68k_incpc(2); +endlabel1046: ; +return 2; +} +unsigned long REGPARAM2 op_6aff_3(uae_u32 opcode) /* Bcc */ +{ +{ m68k_incpc(2); + if (!cctrue(10)) goto endlabel1047; + last_addr_for_exception_3 = m68k_getpc() + 2; + last_fault_for_exception_3 = m68k_getpc() + 1; + last_op_for_exception_3 = opcode; Exception(3,0); goto endlabel1047; +{ uae_s32 src = get_ilong(2); + if (!cctrue(10)) goto didnt_jump; + m68k_incpc ((uae_s32)src + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel1047; +didnt_jump:; +}}m68k_incpc(6); +endlabel1047: ; +return 6; +} +unsigned long REGPARAM2 op_6b00_3(uae_u32 opcode) /* Bcc */ +{ +{{ uae_s16 src = get_iword(2); + if (!cctrue(11)) goto didnt_jump; + m68k_incpc ((uae_s32)src + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel1048; +didnt_jump:; +}}m68k_incpc(4); +endlabel1048: ; +return 4; +} +unsigned long REGPARAM2 op_6b01_3(uae_u32 opcode) /* Bcc */ +{ + uae_u32 srcreg = (uae_s32)(uae_s8)(opcode & 255); +{{ uae_u32 src = srcreg; + if (!cctrue(11)) goto didnt_jump; + m68k_incpc ((uae_s32)src + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel1049; +didnt_jump:; +}}m68k_incpc(2); +endlabel1049: ; +return 2; +} +unsigned long REGPARAM2 op_6bff_3(uae_u32 opcode) /* Bcc */ +{ +{ m68k_incpc(2); + if (!cctrue(11)) goto endlabel1050; + last_addr_for_exception_3 = m68k_getpc() + 2; + last_fault_for_exception_3 = m68k_getpc() + 1; + last_op_for_exception_3 = opcode; Exception(3,0); goto endlabel1050; +{ uae_s32 src = get_ilong(2); + if (!cctrue(11)) goto didnt_jump; + m68k_incpc ((uae_s32)src + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel1050; +didnt_jump:; +}}m68k_incpc(6); +endlabel1050: ; +return 6; +} +unsigned long REGPARAM2 op_6c00_3(uae_u32 opcode) /* Bcc */ +{ +{{ uae_s16 src = get_iword(2); + if (!cctrue(12)) goto didnt_jump; + m68k_incpc ((uae_s32)src + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel1051; +didnt_jump:; +}}m68k_incpc(4); +endlabel1051: ; +return 4; +} +unsigned long REGPARAM2 op_6c01_3(uae_u32 opcode) /* Bcc */ +{ + uae_u32 srcreg = (uae_s32)(uae_s8)(opcode & 255); +{{ uae_u32 src = srcreg; + if (!cctrue(12)) goto didnt_jump; + m68k_incpc ((uae_s32)src + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel1052; +didnt_jump:; +}}m68k_incpc(2); +endlabel1052: ; +return 2; +} +unsigned long REGPARAM2 op_6cff_3(uae_u32 opcode) /* Bcc */ +{ +{ m68k_incpc(2); + if (!cctrue(12)) goto endlabel1053; + last_addr_for_exception_3 = m68k_getpc() + 2; + last_fault_for_exception_3 = m68k_getpc() + 1; + last_op_for_exception_3 = opcode; Exception(3,0); goto endlabel1053; +{ uae_s32 src = get_ilong(2); + if (!cctrue(12)) goto didnt_jump; + m68k_incpc ((uae_s32)src + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel1053; +didnt_jump:; +}}m68k_incpc(6); +endlabel1053: ; +return 6; +} +unsigned long REGPARAM2 op_6d00_3(uae_u32 opcode) /* Bcc */ +{ +{{ uae_s16 src = get_iword(2); + if (!cctrue(13)) goto didnt_jump; + m68k_incpc ((uae_s32)src + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel1054; +didnt_jump:; +}}m68k_incpc(4); +endlabel1054: ; +return 4; +} +unsigned long REGPARAM2 op_6d01_3(uae_u32 opcode) /* Bcc */ +{ + uae_u32 srcreg = (uae_s32)(uae_s8)(opcode & 255); +{{ uae_u32 src = srcreg; + if (!cctrue(13)) goto didnt_jump; + m68k_incpc ((uae_s32)src + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel1055; +didnt_jump:; +}}m68k_incpc(2); +endlabel1055: ; +return 2; +} +unsigned long REGPARAM2 op_6dff_3(uae_u32 opcode) /* Bcc */ +{ +{ m68k_incpc(2); + if (!cctrue(13)) goto endlabel1056; + last_addr_for_exception_3 = m68k_getpc() + 2; + last_fault_for_exception_3 = m68k_getpc() + 1; + last_op_for_exception_3 = opcode; Exception(3,0); goto endlabel1056; +{ uae_s32 src = get_ilong(2); + if (!cctrue(13)) goto didnt_jump; + m68k_incpc ((uae_s32)src + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel1056; +didnt_jump:; +}}m68k_incpc(6); +endlabel1056: ; +return 6; +} +unsigned long REGPARAM2 op_6e00_3(uae_u32 opcode) /* Bcc */ +{ +{{ uae_s16 src = get_iword(2); + if (!cctrue(14)) goto didnt_jump; + m68k_incpc ((uae_s32)src + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel1057; +didnt_jump:; +}}m68k_incpc(4); +endlabel1057: ; +return 4; +} +unsigned long REGPARAM2 op_6e01_3(uae_u32 opcode) /* Bcc */ +{ + uae_u32 srcreg = (uae_s32)(uae_s8)(opcode & 255); +{{ uae_u32 src = srcreg; + if (!cctrue(14)) goto didnt_jump; + m68k_incpc ((uae_s32)src + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel1058; +didnt_jump:; +}}m68k_incpc(2); +endlabel1058: ; +return 2; +} +unsigned long REGPARAM2 op_6eff_3(uae_u32 opcode) /* Bcc */ +{ +{ m68k_incpc(2); + if (!cctrue(14)) goto endlabel1059; + last_addr_for_exception_3 = m68k_getpc() + 2; + last_fault_for_exception_3 = m68k_getpc() + 1; + last_op_for_exception_3 = opcode; Exception(3,0); goto endlabel1059; +{ uae_s32 src = get_ilong(2); + if (!cctrue(14)) goto didnt_jump; + m68k_incpc ((uae_s32)src + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel1059; +didnt_jump:; +}}m68k_incpc(6); +endlabel1059: ; +return 6; +} +unsigned long REGPARAM2 op_6f00_3(uae_u32 opcode) /* Bcc */ +{ +{{ uae_s16 src = get_iword(2); + if (!cctrue(15)) goto didnt_jump; + m68k_incpc ((uae_s32)src + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel1060; +didnt_jump:; +}}m68k_incpc(4); +endlabel1060: ; +return 4; +} +unsigned long REGPARAM2 op_6f01_3(uae_u32 opcode) /* Bcc */ +{ + uae_u32 srcreg = (uae_s32)(uae_s8)(opcode & 255); +{{ uae_u32 src = srcreg; + if (!cctrue(15)) goto didnt_jump; + m68k_incpc ((uae_s32)src + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel1061; +didnt_jump:; +}}m68k_incpc(2); +endlabel1061: ; +return 2; +} +unsigned long REGPARAM2 op_6fff_3(uae_u32 opcode) /* Bcc */ +{ +{ m68k_incpc(2); + if (!cctrue(15)) goto endlabel1062; + last_addr_for_exception_3 = m68k_getpc() + 2; + last_fault_for_exception_3 = m68k_getpc() + 1; + last_op_for_exception_3 = opcode; Exception(3,0); goto endlabel1062; +{ uae_s32 src = get_ilong(2); + if (!cctrue(15)) goto didnt_jump; + m68k_incpc ((uae_s32)src + 2); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2); +#endif + goto endlabel1062; +didnt_jump:; +}}m68k_incpc(6); +endlabel1062: ; +return 6; +} +unsigned long REGPARAM2 op_7000_3(uae_u32 opcode) /* MOVE */ +{ + uae_u32 srcreg = (uae_s32)(uae_s8)(opcode & 255); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_u32 src = srcreg; +{ CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + m68k_dreg(regs, dstreg) = (src); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_8000_3(uae_u32 opcode) /* OR */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uae_s8 dst = m68k_dreg(regs, dstreg); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_8010_3(uae_u32 opcode) /* OR */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s8 src = get_byte(srca); +{ uae_s8 dst = m68k_dreg(regs, dstreg); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff); +}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_8018_3(uae_u32 opcode) /* OR */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s8 src = get_byte(srca); + m68k_areg(regs, srcreg) += areg_byteinc[srcreg]; +{ uae_s8 dst = m68k_dreg(regs, dstreg); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff); +}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_8020_3(uae_u32 opcode) /* OR */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - areg_byteinc[srcreg]; +{ uae_s8 src = get_byte(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_s8 dst = m68k_dreg(regs, dstreg); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff); +}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_8028_3(uae_u32 opcode) /* OR */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); +{ uae_s8 dst = m68k_dreg(regs, dstreg); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff); +}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_8030_3(uae_u32 opcode) /* OR */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s8 src = get_byte(srca); +{ uae_s8 dst = m68k_dreg(regs, dstreg); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff); +}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_8038_3(uae_u32 opcode) /* OR */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); +{ uae_s8 dst = m68k_dreg(regs, dstreg); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff); +}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_8039_3(uae_u32 opcode) /* OR */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_ilong(2); +{ uae_s8 src = get_byte(srca); +{ uae_s8 dst = m68k_dreg(regs, dstreg); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff); +}}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_803a_3(uae_u32 opcode) /* OR */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); +{ uae_s8 dst = m68k_dreg(regs, dstreg); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff); +}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_803b_3(uae_u32 opcode) /* OR */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s8 src = get_byte(srca); +{ uae_s8 dst = m68k_dreg(regs, dstreg); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff); +}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_803c_3(uae_u32 opcode) /* OR */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s8 src = get_ibyte(2); +{ uae_s8 dst = m68k_dreg(regs, dstreg); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff); +}}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_8040_3(uae_u32 opcode) /* OR */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uae_s16 dst = m68k_dreg(regs, dstreg); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_8050_3(uae_u32 opcode) /* OR */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff); +}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_8058_3(uae_u32 opcode) /* OR */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); + m68k_areg(regs, srcreg) += 2; +{ uae_s16 dst = m68k_dreg(regs, dstreg); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff); +}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_8060_3(uae_u32 opcode) /* OR */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - 2; +{ uae_s16 src = get_word(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_s16 dst = m68k_dreg(regs, dstreg); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff); +}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_8068_3(uae_u32 opcode) /* OR */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff); +}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_8070_3(uae_u32 opcode) /* OR */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff); +}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_8078_3(uae_u32 opcode) /* OR */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff); +}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_8079_3(uae_u32 opcode) /* OR */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_ilong(2); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff); +}}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_807a_3(uae_u32 opcode) /* OR */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff); +}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_807b_3(uae_u32 opcode) /* OR */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff); +}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_807c_3(uae_u32 opcode) /* OR */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = get_iword(2); +{ uae_s16 dst = m68k_dreg(regs, dstreg); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff); +}}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_8080_3(uae_u32 opcode) /* OR */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + m68k_dreg(regs, dstreg) = (src); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_8090_3(uae_u32 opcode) /* OR */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + m68k_dreg(regs, dstreg) = (src); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_8098_3(uae_u32 opcode) /* OR */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s32 src = get_long(srca); + m68k_areg(regs, srcreg) += 4; +{ uae_s32 dst = m68k_dreg(regs, dstreg); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + m68k_dreg(regs, dstreg) = (src); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_80a0_3(uae_u32 opcode) /* OR */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - 4; +{ uae_s32 src = get_long(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + m68k_dreg(regs, dstreg) = (src); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_80a8_3(uae_u32 opcode) /* OR */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + m68k_dreg(regs, dstreg) = (src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_80b0_3(uae_u32 opcode) /* OR */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + m68k_dreg(regs, dstreg) = (src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_80b8_3(uae_u32 opcode) /* OR */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + m68k_dreg(regs, dstreg) = (src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_80b9_3(uae_u32 opcode) /* OR */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_ilong(2); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + m68k_dreg(regs, dstreg) = (src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_80ba_3(uae_u32 opcode) /* OR */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + m68k_dreg(regs, dstreg) = (src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_80bb_3(uae_u32 opcode) /* OR */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + m68k_dreg(regs, dstreg) = (src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_80bc_3(uae_u32 opcode) /* OR */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s32 src = get_ilong(2); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + m68k_dreg(regs, dstreg) = (src); +}}}m68k_incpc(6); +return 6; +} +unsigned long REGPARAM2 op_80c0_3(uae_u32 opcode) /* DIVU */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{ uaecptr oldpc = m68k_getpc(); +{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + if(src == 0) { Exception(5,oldpc); goto endlabel1097; } else { + uae_u32 newv = (uae_u32)dst / (uae_u32)(uae_u16)src; + uae_u32 rem = (uae_u32)dst % (uae_u32)(uae_u16)src; + if (newv > 0xffff) { SET_VFLG (1); SET_NFLG (1); SET_CFLG (0); } else + { + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_NFLG (((uae_s16)(newv)) < 0); + newv = (newv & 0xffff) | ((uae_u32)rem << 16); + m68k_dreg(regs, dstreg) = (newv); + } + } +}}}m68k_incpc(2); +endlabel1097: ; +return 70; +} +unsigned long REGPARAM2 op_80d0_3(uae_u32 opcode) /* DIVU */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{ uaecptr oldpc = m68k_getpc(); +{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + if(src == 0) { Exception(5,oldpc); goto endlabel1098; } else { + uae_u32 newv = (uae_u32)dst / (uae_u32)(uae_u16)src; + uae_u32 rem = (uae_u32)dst % (uae_u32)(uae_u16)src; + if (newv > 0xffff) { SET_VFLG (1); SET_NFLG (1); SET_CFLG (0); } else + { + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_NFLG (((uae_s16)(newv)) < 0); + newv = (newv & 0xffff) | ((uae_u32)rem << 16); + m68k_dreg(regs, dstreg) = (newv); + } + } +}}}}m68k_incpc(2); +endlabel1098: ; +return 72; +} +unsigned long REGPARAM2 op_80d8_3(uae_u32 opcode) /* DIVU */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{ uaecptr oldpc = m68k_getpc(); +{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); + m68k_areg(regs, srcreg) += 2; +{ uae_s32 dst = m68k_dreg(regs, dstreg); + if(src == 0) { Exception(5,oldpc); goto endlabel1099; } else { + uae_u32 newv = (uae_u32)dst / (uae_u32)(uae_u16)src; + uae_u32 rem = (uae_u32)dst % (uae_u32)(uae_u16)src; + if (newv > 0xffff) { SET_VFLG (1); SET_NFLG (1); SET_CFLG (0); } else + { + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_NFLG (((uae_s16)(newv)) < 0); + newv = (newv & 0xffff) | ((uae_u32)rem << 16); + m68k_dreg(regs, dstreg) = (newv); + } + } +}}}}m68k_incpc(2); +endlabel1099: ; +return 72; +} +unsigned long REGPARAM2 op_80e0_3(uae_u32 opcode) /* DIVU */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{ uaecptr oldpc = m68k_getpc(); +{ uaecptr srca = m68k_areg(regs, srcreg) - 2; +{ uae_s16 src = get_word(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + if(src == 0) { Exception(5,oldpc); goto endlabel1100; } else { + uae_u32 newv = (uae_u32)dst / (uae_u32)(uae_u16)src; + uae_u32 rem = (uae_u32)dst % (uae_u32)(uae_u16)src; + if (newv > 0xffff) { SET_VFLG (1); SET_NFLG (1); SET_CFLG (0); } else + { + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_NFLG (((uae_s16)(newv)) < 0); + newv = (newv & 0xffff) | ((uae_u32)rem << 16); + m68k_dreg(regs, dstreg) = (newv); + } + } +}}}}m68k_incpc(2); +endlabel1100: ; +return 72; +} +unsigned long REGPARAM2 op_80e8_3(uae_u32 opcode) /* DIVU */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{ uaecptr oldpc = m68k_getpc(); +{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + if(src == 0) { Exception(5,oldpc); goto endlabel1101; } else { + uae_u32 newv = (uae_u32)dst / (uae_u32)(uae_u16)src; + uae_u32 rem = (uae_u32)dst % (uae_u32)(uae_u16)src; + if (newv > 0xffff) { SET_VFLG (1); SET_NFLG (1); SET_CFLG (0); } else + { + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_NFLG (((uae_s16)(newv)) < 0); + newv = (newv & 0xffff) | ((uae_u32)rem << 16); + m68k_dreg(regs, dstreg) = (newv); + } + } +}}}}m68k_incpc(4); +endlabel1101: ; +return 74; +} +unsigned long REGPARAM2 op_80f0_3(uae_u32 opcode) /* DIVU */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{ uaecptr oldpc = m68k_getpc(); +{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s16 src = get_word(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + if(src == 0) { Exception(5,oldpc); goto endlabel1102; } else { + uae_u32 newv = (uae_u32)dst / (uae_u32)(uae_u16)src; + uae_u32 rem = (uae_u32)dst % (uae_u32)(uae_u16)src; + if (newv > 0xffff) { SET_VFLG (1); SET_NFLG (1); SET_CFLG (0); } else + { + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_NFLG (((uae_s16)(newv)) < 0); + newv = (newv & 0xffff) | ((uae_u32)rem << 16); + m68k_dreg(regs, dstreg) = (newv); + } + } +}}}}m68k_incpc(4); +endlabel1102: ; +return 74; +} +unsigned long REGPARAM2 op_80f8_3(uae_u32 opcode) /* DIVU */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{ uaecptr oldpc = m68k_getpc(); +{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + if(src == 0) { Exception(5,oldpc); goto endlabel1103; } else { + uae_u32 newv = (uae_u32)dst / (uae_u32)(uae_u16)src; + uae_u32 rem = (uae_u32)dst % (uae_u32)(uae_u16)src; + if (newv > 0xffff) { SET_VFLG (1); SET_NFLG (1); SET_CFLG (0); } else + { + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_NFLG (((uae_s16)(newv)) < 0); + newv = (newv & 0xffff) | ((uae_u32)rem << 16); + m68k_dreg(regs, dstreg) = (newv); + } + } +}}}}m68k_incpc(4); +endlabel1103: ; +return 74; +} +unsigned long REGPARAM2 op_80f9_3(uae_u32 opcode) /* DIVU */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{ uaecptr oldpc = m68k_getpc(); +{ uaecptr srca = get_ilong(2); +{ uae_s16 src = get_word(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + if(src == 0) { Exception(5,oldpc); goto endlabel1104; } else { + uae_u32 newv = (uae_u32)dst / (uae_u32)(uae_u16)src; + uae_u32 rem = (uae_u32)dst % (uae_u32)(uae_u16)src; + if (newv > 0xffff) { SET_VFLG (1); SET_NFLG (1); SET_CFLG (0); } else + { + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_NFLG (((uae_s16)(newv)) < 0); + newv = (newv & 0xffff) | ((uae_u32)rem << 16); + m68k_dreg(regs, dstreg) = (newv); + } + } +}}}}m68k_incpc(6); +endlabel1104: ; +return 76; +} +unsigned long REGPARAM2 op_80fa_3(uae_u32 opcode) /* DIVU */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{ uaecptr oldpc = m68k_getpc(); +{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + if(src == 0) { Exception(5,oldpc); goto endlabel1105; } else { + uae_u32 newv = (uae_u32)dst / (uae_u32)(uae_u16)src; + uae_u32 rem = (uae_u32)dst % (uae_u32)(uae_u16)src; + if (newv > 0xffff) { SET_VFLG (1); SET_NFLG (1); SET_CFLG (0); } else + { + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_NFLG (((uae_s16)(newv)) < 0); + newv = (newv & 0xffff) | ((uae_u32)rem << 16); + m68k_dreg(regs, dstreg) = (newv); + } + } +}}}}m68k_incpc(4); +endlabel1105: ; +return 74; +} +unsigned long REGPARAM2 op_80fb_3(uae_u32 opcode) /* DIVU */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{ uaecptr oldpc = m68k_getpc(); +{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s16 src = get_word(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + if(src == 0) { Exception(5,oldpc); goto endlabel1106; } else { + uae_u32 newv = (uae_u32)dst / (uae_u32)(uae_u16)src; + uae_u32 rem = (uae_u32)dst % (uae_u32)(uae_u16)src; + if (newv > 0xffff) { SET_VFLG (1); SET_NFLG (1); SET_CFLG (0); } else + { + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_NFLG (((uae_s16)(newv)) < 0); + newv = (newv & 0xffff) | ((uae_u32)rem << 16); + m68k_dreg(regs, dstreg) = (newv); + } + } +}}}}m68k_incpc(4); +endlabel1106: ; +return 74; +} +unsigned long REGPARAM2 op_80fc_3(uae_u32 opcode) /* DIVU */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{ uaecptr oldpc = m68k_getpc(); +{ uae_s16 src = get_iword(2); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + if(src == 0) { Exception(5,oldpc); goto endlabel1107; } else { + uae_u32 newv = (uae_u32)dst / (uae_u32)(uae_u16)src; + uae_u32 rem = (uae_u32)dst % (uae_u32)(uae_u16)src; + if (newv > 0xffff) { SET_VFLG (1); SET_NFLG (1); SET_CFLG (0); } else + { + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_NFLG (((uae_s16)(newv)) < 0); + newv = (newv & 0xffff) | ((uae_u32)rem << 16); + m68k_dreg(regs, dstreg) = (newv); + } + } +}}}m68k_incpc(4); +endlabel1107: ; +return 72; +} +unsigned long REGPARAM2 op_8100_3(uae_u32 opcode) /* SBCD */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uae_s8 dst = m68k_dreg(regs, dstreg); +{ uae_u16 newv_lo = (dst & 0xF) - (src & 0xF) - (GET_XFLG ? 1 : 0); + uae_u16 newv_hi = (dst & 0xF0) - (src & 0xF0); + uae_u16 newv; + int cflg; + if (newv_lo > 9) { newv_lo-=6; newv_hi-=0x10; } + newv = newv_hi + (newv_lo & 0xF); SET_CFLG (cflg = (newv_hi & 0x1F0) > 0x90); + COPY_CARRY; + if (cflg) newv -= 0x60; + SET_ZFLG (GET_ZFLG & (((uae_s8)(newv)) == 0)); + SET_NFLG (((uae_s8)(newv)) < 0); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((newv) & 0xff); +}}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_8108_3(uae_u32 opcode) /* SBCD */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - areg_byteinc[srcreg]; +{ uae_s8 src = get_byte(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uaecptr dsta = m68k_areg(regs, dstreg) - areg_byteinc[dstreg]; +{ uae_s8 dst = get_byte(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_u16 newv_lo = (dst & 0xF) - (src & 0xF) - (GET_XFLG ? 1 : 0); + uae_u16 newv_hi = (dst & 0xF0) - (src & 0xF0); + uae_u16 newv; + int cflg; + if (newv_lo > 9) { newv_lo-=6; newv_hi-=0x10; } + newv = newv_hi + (newv_lo & 0xF); SET_CFLG (cflg = (newv_hi & 0x1F0) > 0x90); + COPY_CARRY; + if (cflg) newv -= 0x60; + SET_ZFLG (GET_ZFLG & (((uae_s8)(newv)) == 0)); + SET_NFLG (((uae_s8)(newv)) < 0); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + put_byte(dsta,newv); +}}}}}}}m68k_incpc(2); +return 8; +} +unsigned long REGPARAM2 op_8110_3(uae_u32 opcode) /* OR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s8 dst = get_byte(dsta); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_8118_3(uae_u32 opcode) /* OR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s8 dst = get_byte(dsta); + m68k_areg(regs, dstreg) += areg_byteinc[dstreg]; + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_8120_3(uae_u32 opcode) /* OR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) - areg_byteinc[dstreg]; +{ uae_s8 dst = get_byte(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_8128_3(uae_u32 opcode) /* OR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 dst = get_byte(dsta); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_8130_3(uae_u32 opcode) /* OR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(2)); +{ uae_s8 dst = get_byte(dsta); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_8138_3(uae_u32 opcode) /* OR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 dst = get_byte(dsta); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_8139_3(uae_u32 opcode) /* OR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = get_ilong(2); +{ uae_s8 dst = get_byte(dsta); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_8150_3(uae_u32 opcode) /* OR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s16 dst = get_word(dsta); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_8158_3(uae_u32 opcode) /* OR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s16 dst = get_word(dsta); + m68k_areg(regs, dstreg) += 2; + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_8160_3(uae_u32 opcode) /* OR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 2; +{ uae_s16 dst = get_word(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_8168_3(uae_u32 opcode) /* OR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 dst = get_word(dsta); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_8170_3(uae_u32 opcode) /* OR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(2)); +{ uae_s16 dst = get_word(dsta); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_8178_3(uae_u32 opcode) /* OR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 dst = get_word(dsta); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_8179_3(uae_u32 opcode) /* OR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = get_ilong(2); +{ uae_s16 dst = get_word(dsta); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_8190_3(uae_u32 opcode) /* OR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s32 dst = get_long(dsta); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(2); +return 10; +} +unsigned long REGPARAM2 op_8198_3(uae_u32 opcode) /* OR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s32 dst = get_long(dsta); + m68k_areg(regs, dstreg) += 4; + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(2); +return 10; +} +unsigned long REGPARAM2 op_81a0_3(uae_u32 opcode) /* OR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 4; +{ uae_s32 dst = get_long(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(2); +return 10; +} +unsigned long REGPARAM2 op_81a8_3(uae_u32 opcode) /* OR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 dst = get_long(dsta); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_81b0_3(uae_u32 opcode) /* OR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(2)); +{ uae_s32 dst = get_long(dsta); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_81b8_3(uae_u32 opcode) /* OR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 dst = get_long(dsta); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_81b9_3(uae_u32 opcode) /* OR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = get_ilong(2); +{ uae_s32 dst = get_long(dsta); + src |= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(6); +return 14; +} +unsigned long REGPARAM2 op_81c0_3(uae_u32 opcode) /* DIVS */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{ uaecptr oldpc = m68k_getpc(); +{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + if(src == 0) { Exception(5,oldpc); goto endlabel1131; } else { + uae_s32 newv = (uae_s32)dst / (uae_s32)(uae_s16)src; + uae_u16 rem = (uae_s32)dst % (uae_s32)(uae_s16)src; + if ((newv & 0xffff8000) != 0 && (newv & 0xffff8000) != 0xffff8000) { SET_VFLG (1); SET_NFLG (1); SET_CFLG (0); } else + { + if (((uae_s16)rem < 0) != ((uae_s32)dst < 0)) rem = -rem; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_NFLG (((uae_s16)(newv)) < 0); + newv = (newv & 0xffff) | ((uae_u32)rem << 16); + m68k_dreg(regs, dstreg) = (newv); + } + } +}}}m68k_incpc(2); +endlabel1131: ; +return 74; +} +unsigned long REGPARAM2 op_81d0_3(uae_u32 opcode) /* DIVS */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{ uaecptr oldpc = m68k_getpc(); +{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + if(src == 0) { Exception(5,oldpc); goto endlabel1132; } else { + uae_s32 newv = (uae_s32)dst / (uae_s32)(uae_s16)src; + uae_u16 rem = (uae_s32)dst % (uae_s32)(uae_s16)src; + if ((newv & 0xffff8000) != 0 && (newv & 0xffff8000) != 0xffff8000) { SET_VFLG (1); SET_NFLG (1); SET_CFLG (0); } else + { + if (((uae_s16)rem < 0) != ((uae_s32)dst < 0)) rem = -rem; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_NFLG (((uae_s16)(newv)) < 0); + newv = (newv & 0xffff) | ((uae_u32)rem << 16); + m68k_dreg(regs, dstreg) = (newv); + } + } +}}}}m68k_incpc(2); +endlabel1132: ; +return 76; +} +unsigned long REGPARAM2 op_81d8_3(uae_u32 opcode) /* DIVS */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{ uaecptr oldpc = m68k_getpc(); +{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); + m68k_areg(regs, srcreg) += 2; +{ uae_s32 dst = m68k_dreg(regs, dstreg); + if(src == 0) { Exception(5,oldpc); goto endlabel1133; } else { + uae_s32 newv = (uae_s32)dst / (uae_s32)(uae_s16)src; + uae_u16 rem = (uae_s32)dst % (uae_s32)(uae_s16)src; + if ((newv & 0xffff8000) != 0 && (newv & 0xffff8000) != 0xffff8000) { SET_VFLG (1); SET_NFLG (1); SET_CFLG (0); } else + { + if (((uae_s16)rem < 0) != ((uae_s32)dst < 0)) rem = -rem; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_NFLG (((uae_s16)(newv)) < 0); + newv = (newv & 0xffff) | ((uae_u32)rem << 16); + m68k_dreg(regs, dstreg) = (newv); + } + } +}}}}m68k_incpc(2); +endlabel1133: ; +return 76; +} +unsigned long REGPARAM2 op_81e0_3(uae_u32 opcode) /* DIVS */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{ uaecptr oldpc = m68k_getpc(); +{ uaecptr srca = m68k_areg(regs, srcreg) - 2; +{ uae_s16 src = get_word(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + if(src == 0) { Exception(5,oldpc); goto endlabel1134; } else { + uae_s32 newv = (uae_s32)dst / (uae_s32)(uae_s16)src; + uae_u16 rem = (uae_s32)dst % (uae_s32)(uae_s16)src; + if ((newv & 0xffff8000) != 0 && (newv & 0xffff8000) != 0xffff8000) { SET_VFLG (1); SET_NFLG (1); SET_CFLG (0); } else + { + if (((uae_s16)rem < 0) != ((uae_s32)dst < 0)) rem = -rem; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_NFLG (((uae_s16)(newv)) < 0); + newv = (newv & 0xffff) | ((uae_u32)rem << 16); + m68k_dreg(regs, dstreg) = (newv); + } + } +}}}}m68k_incpc(2); +endlabel1134: ; +return 76; +} +unsigned long REGPARAM2 op_81e8_3(uae_u32 opcode) /* DIVS */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{ uaecptr oldpc = m68k_getpc(); +{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + if(src == 0) { Exception(5,oldpc); goto endlabel1135; } else { + uae_s32 newv = (uae_s32)dst / (uae_s32)(uae_s16)src; + uae_u16 rem = (uae_s32)dst % (uae_s32)(uae_s16)src; + if ((newv & 0xffff8000) != 0 && (newv & 0xffff8000) != 0xffff8000) { SET_VFLG (1); SET_NFLG (1); SET_CFLG (0); } else + { + if (((uae_s16)rem < 0) != ((uae_s32)dst < 0)) rem = -rem; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_NFLG (((uae_s16)(newv)) < 0); + newv = (newv & 0xffff) | ((uae_u32)rem << 16); + m68k_dreg(regs, dstreg) = (newv); + } + } +}}}}m68k_incpc(4); +endlabel1135: ; +return 78; +} +unsigned long REGPARAM2 op_81f0_3(uae_u32 opcode) /* DIVS */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{ uaecptr oldpc = m68k_getpc(); +{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s16 src = get_word(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + if(src == 0) { Exception(5,oldpc); goto endlabel1136; } else { + uae_s32 newv = (uae_s32)dst / (uae_s32)(uae_s16)src; + uae_u16 rem = (uae_s32)dst % (uae_s32)(uae_s16)src; + if ((newv & 0xffff8000) != 0 && (newv & 0xffff8000) != 0xffff8000) { SET_VFLG (1); SET_NFLG (1); SET_CFLG (0); } else + { + if (((uae_s16)rem < 0) != ((uae_s32)dst < 0)) rem = -rem; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_NFLG (((uae_s16)(newv)) < 0); + newv = (newv & 0xffff) | ((uae_u32)rem << 16); + m68k_dreg(regs, dstreg) = (newv); + } + } +}}}}m68k_incpc(4); +endlabel1136: ; +return 78; +} +unsigned long REGPARAM2 op_81f8_3(uae_u32 opcode) /* DIVS */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{ uaecptr oldpc = m68k_getpc(); +{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + if(src == 0) { Exception(5,oldpc); goto endlabel1137; } else { + uae_s32 newv = (uae_s32)dst / (uae_s32)(uae_s16)src; + uae_u16 rem = (uae_s32)dst % (uae_s32)(uae_s16)src; + if ((newv & 0xffff8000) != 0 && (newv & 0xffff8000) != 0xffff8000) { SET_VFLG (1); SET_NFLG (1); SET_CFLG (0); } else + { + if (((uae_s16)rem < 0) != ((uae_s32)dst < 0)) rem = -rem; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_NFLG (((uae_s16)(newv)) < 0); + newv = (newv & 0xffff) | ((uae_u32)rem << 16); + m68k_dreg(regs, dstreg) = (newv); + } + } +}}}}m68k_incpc(4); +endlabel1137: ; +return 78; +} +unsigned long REGPARAM2 op_81f9_3(uae_u32 opcode) /* DIVS */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{ uaecptr oldpc = m68k_getpc(); +{ uaecptr srca = get_ilong(2); +{ uae_s16 src = get_word(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + if(src == 0) { Exception(5,oldpc); goto endlabel1138; } else { + uae_s32 newv = (uae_s32)dst / (uae_s32)(uae_s16)src; + uae_u16 rem = (uae_s32)dst % (uae_s32)(uae_s16)src; + if ((newv & 0xffff8000) != 0 && (newv & 0xffff8000) != 0xffff8000) { SET_VFLG (1); SET_NFLG (1); SET_CFLG (0); } else + { + if (((uae_s16)rem < 0) != ((uae_s32)dst < 0)) rem = -rem; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_NFLG (((uae_s16)(newv)) < 0); + newv = (newv & 0xffff) | ((uae_u32)rem << 16); + m68k_dreg(regs, dstreg) = (newv); + } + } +}}}}m68k_incpc(6); +endlabel1138: ; +return 80; +} +unsigned long REGPARAM2 op_81fa_3(uae_u32 opcode) /* DIVS */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{ uaecptr oldpc = m68k_getpc(); +{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + if(src == 0) { Exception(5,oldpc); goto endlabel1139; } else { + uae_s32 newv = (uae_s32)dst / (uae_s32)(uae_s16)src; + uae_u16 rem = (uae_s32)dst % (uae_s32)(uae_s16)src; + if ((newv & 0xffff8000) != 0 && (newv & 0xffff8000) != 0xffff8000) { SET_VFLG (1); SET_NFLG (1); SET_CFLG (0); } else + { + if (((uae_s16)rem < 0) != ((uae_s32)dst < 0)) rem = -rem; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_NFLG (((uae_s16)(newv)) < 0); + newv = (newv & 0xffff) | ((uae_u32)rem << 16); + m68k_dreg(regs, dstreg) = (newv); + } + } +}}}}m68k_incpc(4); +endlabel1139: ; +return 78; +} +unsigned long REGPARAM2 op_81fb_3(uae_u32 opcode) /* DIVS */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{ uaecptr oldpc = m68k_getpc(); +{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s16 src = get_word(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + if(src == 0) { Exception(5,oldpc); goto endlabel1140; } else { + uae_s32 newv = (uae_s32)dst / (uae_s32)(uae_s16)src; + uae_u16 rem = (uae_s32)dst % (uae_s32)(uae_s16)src; + if ((newv & 0xffff8000) != 0 && (newv & 0xffff8000) != 0xffff8000) { SET_VFLG (1); SET_NFLG (1); SET_CFLG (0); } else + { + if (((uae_s16)rem < 0) != ((uae_s32)dst < 0)) rem = -rem; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_NFLG (((uae_s16)(newv)) < 0); + newv = (newv & 0xffff) | ((uae_u32)rem << 16); + m68k_dreg(regs, dstreg) = (newv); + } + } +}}}}m68k_incpc(4); +endlabel1140: ; +return 78; +} +unsigned long REGPARAM2 op_81fc_3(uae_u32 opcode) /* DIVS */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{ uaecptr oldpc = m68k_getpc(); +{ uae_s16 src = get_iword(2); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + if(src == 0) { Exception(5,oldpc); goto endlabel1141; } else { + uae_s32 newv = (uae_s32)dst / (uae_s32)(uae_s16)src; + uae_u16 rem = (uae_s32)dst % (uae_s32)(uae_s16)src; + if ((newv & 0xffff8000) != 0 && (newv & 0xffff8000) != 0xffff8000) { SET_VFLG (1); SET_NFLG (1); SET_CFLG (0); } else + { + if (((uae_s16)rem < 0) != ((uae_s32)dst < 0)) rem = -rem; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_NFLG (((uae_s16)(newv)) < 0); + newv = (newv & 0xffff) | ((uae_u32)rem << 16); + m68k_dreg(regs, dstreg) = (newv); + } + } +}}}m68k_incpc(4); +endlabel1141: ; +return 76; +} +unsigned long REGPARAM2 op_9000_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uae_s8 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((newv) & 0xff); +}}}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_9010_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s8 src = get_byte(srca); +{ uae_s8 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((newv) & 0xff); +}}}}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_9018_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s8 src = get_byte(srca); + m68k_areg(regs, srcreg) += areg_byteinc[srcreg]; +{ uae_s8 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((newv) & 0xff); +}}}}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_9020_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - areg_byteinc[srcreg]; +{ uae_s8 src = get_byte(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_s8 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((newv) & 0xff); +}}}}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_9028_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); +{ uae_s8 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((newv) & 0xff); +}}}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_9030_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s8 src = get_byte(srca); +{ uae_s8 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((newv) & 0xff); +}}}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_9038_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); +{ uae_s8 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((newv) & 0xff); +}}}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_9039_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_ilong(2); +{ uae_s8 src = get_byte(srca); +{ uae_s8 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((newv) & 0xff); +}}}}}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_903a_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); +{ uae_s8 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((newv) & 0xff); +}}}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_903b_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s8 src = get_byte(srca); +{ uae_s8 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((newv) & 0xff); +}}}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_903c_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s8 src = get_ibyte(2); +{ uae_s8 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((newv) & 0xff); +}}}}}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_9040_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((newv) & 0xffff); +}}}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_9048_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = m68k_areg(regs, srcreg); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((newv) & 0xffff); +}}}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_9050_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((newv) & 0xffff); +}}}}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_9058_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); + m68k_areg(regs, srcreg) += 2; +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((newv) & 0xffff); +}}}}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_9060_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - 2; +{ uae_s16 src = get_word(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((newv) & 0xffff); +}}}}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_9068_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((newv) & 0xffff); +}}}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_9070_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((newv) & 0xffff); +}}}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_9078_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((newv) & 0xffff); +}}}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_9079_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_ilong(2); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((newv) & 0xffff); +}}}}}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_907a_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((newv) & 0xffff); +}}}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_907b_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((newv) & 0xffff); +}}}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_907c_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = get_iword(2); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((newv) & 0xffff); +}}}}}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_9080_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uae_s32 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_9088_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s32 src = m68k_areg(regs, srcreg); +{ uae_s32 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_9090_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_9098_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s32 src = get_long(srca); + m68k_areg(regs, srcreg) += 4; +{ uae_s32 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_90a0_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - 4; +{ uae_s32 src = get_long(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_s32 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_90a8_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_90b0_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_90b8_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_90b9_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_ilong(2); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_90ba_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_90bb_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_90bc_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s32 src = get_ilong(2); +{ uae_s32 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}}m68k_incpc(6); +return 6; +} +unsigned long REGPARAM2 op_90c0_3(uae_u32 opcode) /* SUBA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst - src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_90c8_3(uae_u32 opcode) /* SUBA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = m68k_areg(regs, srcreg); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst - src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_90d0_3(uae_u32 opcode) /* SUBA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst - src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +}}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_90d8_3(uae_u32 opcode) /* SUBA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); + m68k_areg(regs, srcreg) += 2; +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst - src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +}}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_90e0_3(uae_u32 opcode) /* SUBA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - 2; +{ uae_s16 src = get_word(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst - src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +}}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_90e8_3(uae_u32 opcode) /* SUBA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst - src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_90f0_3(uae_u32 opcode) /* SUBA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s16 src = get_word(srca); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst - src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_90f8_3(uae_u32 opcode) /* SUBA */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst - src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_90f9_3(uae_u32 opcode) /* SUBA */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_ilong(2); +{ uae_s16 src = get_word(srca); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst - src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +}}}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_90fa_3(uae_u32 opcode) /* SUBA */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst - src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_90fb_3(uae_u32 opcode) /* SUBA */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s16 src = get_word(srca); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst - src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_90fc_3(uae_u32 opcode) /* SUBA */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = get_iword(2); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst - src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +}}}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_9100_3(uae_u32 opcode) /* SUBX */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uae_s8 dst = m68k_dreg(regs, dstreg); +{ uae_u32 newv = dst - src - (GET_XFLG ? 1 : 0); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_VFLG ((flgs ^ flgo) & (flgo ^ flgn)); + SET_CFLG (flgs ^ ((flgs ^ flgn) & (flgo ^ flgn))); + COPY_CARRY; + SET_ZFLG (GET_ZFLG & (((uae_s8)(newv)) == 0)); + SET_NFLG (((uae_s8)(newv)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((newv) & 0xff); +}}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_9108_3(uae_u32 opcode) /* SUBX */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - areg_byteinc[srcreg]; +{ uae_s8 src = get_byte(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uaecptr dsta = m68k_areg(regs, dstreg) - areg_byteinc[dstreg]; +{ uae_s8 dst = get_byte(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_u32 newv = dst - src - (GET_XFLG ? 1 : 0); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_VFLG ((flgs ^ flgo) & (flgo ^ flgn)); + SET_CFLG (flgs ^ ((flgs ^ flgn) & (flgo ^ flgn))); + COPY_CARRY; + SET_ZFLG (GET_ZFLG & (((uae_s8)(newv)) == 0)); + SET_NFLG (((uae_s8)(newv)) < 0); + put_byte(dsta,newv); +}}}}}}}m68k_incpc(2); +return 8; +} +unsigned long REGPARAM2 op_9110_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s8 dst = get_byte(dsta); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(dsta,newv); +}}}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_9118_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s8 dst = get_byte(dsta); + m68k_areg(regs, dstreg) += areg_byteinc[dstreg]; +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(dsta,newv); +}}}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_9120_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) - areg_byteinc[dstreg]; +{ uae_s8 dst = get_byte(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(dsta,newv); +}}}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_9128_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 dst = get_byte(dsta); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(dsta,newv); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_9130_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(2)); +{ uae_s8 dst = get_byte(dsta); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(dsta,newv); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_9138_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 dst = get_byte(dsta); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(dsta,newv); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_9139_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = get_ilong(2); +{ uae_s8 dst = get_byte(dsta); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(dsta,newv); +}}}}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_9140_3(uae_u32 opcode) /* SUBX */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{ uae_u32 newv = dst - src - (GET_XFLG ? 1 : 0); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_VFLG ((flgs ^ flgo) & (flgo ^ flgn)); + SET_CFLG (flgs ^ ((flgs ^ flgn) & (flgo ^ flgn))); + COPY_CARRY; + SET_ZFLG (GET_ZFLG & (((uae_s16)(newv)) == 0)); + SET_NFLG (((uae_s16)(newv)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((newv) & 0xffff); +}}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_9148_3(uae_u32 opcode) /* SUBX */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - 2; +{ uae_s16 src = get_word(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 2; +{ uae_s16 dst = get_word(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_u32 newv = dst - src - (GET_XFLG ? 1 : 0); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_VFLG ((flgs ^ flgo) & (flgo ^ flgn)); + SET_CFLG (flgs ^ ((flgs ^ flgn) & (flgo ^ flgn))); + COPY_CARRY; + SET_ZFLG (GET_ZFLG & (((uae_s16)(newv)) == 0)); + SET_NFLG (((uae_s16)(newv)) < 0); + put_word(dsta,newv); +}}}}}}}m68k_incpc(2); +return 8; +} +unsigned long REGPARAM2 op_9150_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s16 dst = get_word(dsta); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(dsta,newv); +}}}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_9158_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s16 dst = get_word(dsta); + m68k_areg(regs, dstreg) += 2; +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(dsta,newv); +}}}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_9160_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 2; +{ uae_s16 dst = get_word(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(dsta,newv); +}}}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_9168_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 dst = get_word(dsta); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(dsta,newv); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_9170_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(2)); +{ uae_s16 dst = get_word(dsta); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(dsta,newv); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_9178_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 dst = get_word(dsta); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(dsta,newv); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_9179_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = get_ilong(2); +{ uae_s16 dst = get_word(dsta); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(dsta,newv); +}}}}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_9180_3(uae_u32 opcode) /* SUBX */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uae_s32 dst = m68k_dreg(regs, dstreg); +{ uae_u32 newv = dst - src - (GET_XFLG ? 1 : 0); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_VFLG ((flgs ^ flgo) & (flgo ^ flgn)); + SET_CFLG (flgs ^ ((flgs ^ flgn) & (flgo ^ flgn))); + COPY_CARRY; + SET_ZFLG (GET_ZFLG & (((uae_s32)(newv)) == 0)); + SET_NFLG (((uae_s32)(newv)) < 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_9188_3(uae_u32 opcode) /* SUBX */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - 4; +{ uae_s32 src = get_long(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 4; +{ uae_s32 dst = get_long(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_u32 newv = dst - src - (GET_XFLG ? 1 : 0); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_VFLG ((flgs ^ flgo) & (flgo ^ flgn)); + SET_CFLG (flgs ^ ((flgs ^ flgn) & (flgo ^ flgn))); + COPY_CARRY; + SET_ZFLG (GET_ZFLG & (((uae_s32)(newv)) == 0)); + SET_NFLG (((uae_s32)(newv)) < 0); + put_long(dsta,newv); +}}}}}}}m68k_incpc(2); +return 14; +} +unsigned long REGPARAM2 op_9190_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s32 dst = get_long(dsta); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(dsta,newv); +}}}}}}}m68k_incpc(2); +return 10; +} +unsigned long REGPARAM2 op_9198_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s32 dst = get_long(dsta); + m68k_areg(regs, dstreg) += 4; +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(dsta,newv); +}}}}}}}m68k_incpc(2); +return 10; +} +unsigned long REGPARAM2 op_91a0_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 4; +{ uae_s32 dst = get_long(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(dsta,newv); +}}}}}}}m68k_incpc(2); +return 10; +} +unsigned long REGPARAM2 op_91a8_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 dst = get_long(dsta); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(dsta,newv); +}}}}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_91b0_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(2)); +{ uae_s32 dst = get_long(dsta); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(dsta,newv); +}}}}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_91b8_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 dst = get_long(dsta); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(dsta,newv); +}}}}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_91b9_3(uae_u32 opcode) /* SUB */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = get_ilong(2); +{ uae_s32 dst = get_long(dsta); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(dsta,newv); +}}}}}}}m68k_incpc(6); +return 14; +} +unsigned long REGPARAM2 op_91c0_3(uae_u32 opcode) /* SUBA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst - src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_91c8_3(uae_u32 opcode) /* SUBA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s32 src = m68k_areg(regs, srcreg); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst - src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_91d0_3(uae_u32 opcode) /* SUBA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst - src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_91d8_3(uae_u32 opcode) /* SUBA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s32 src = get_long(srca); + m68k_areg(regs, srcreg) += 4; +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst - src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_91e0_3(uae_u32 opcode) /* SUBA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - 4; +{ uae_s32 src = get_long(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst - src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_91e8_3(uae_u32 opcode) /* SUBA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst - src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_91f0_3(uae_u32 opcode) /* SUBA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst - src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_91f8_3(uae_u32 opcode) /* SUBA */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst - src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_91f9_3(uae_u32 opcode) /* SUBA */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_ilong(2); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst - src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +}}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_91fa_3(uae_u32 opcode) /* SUBA */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst - src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_91fb_3(uae_u32 opcode) /* SUBA */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst - src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_91fc_3(uae_u32 opcode) /* SUBA */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s32 src = get_ilong(2); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst - src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +}}}}m68k_incpc(6); +return 6; +} +unsigned long REGPARAM2 op_b000_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uae_s8 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + SET_NFLG (flgn != 0); +}}}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_b010_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s8 src = get_byte(srca); +{ uae_s8 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(2); +return 4; +} +#endif + +#ifdef PART_7 +unsigned long REGPARAM2 op_b018_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s8 src = get_byte(srca); + m68k_areg(regs, srcreg) += areg_byteinc[srcreg]; +{ uae_s8 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_b020_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - areg_byteinc[srcreg]; +{ uae_s8 src = get_byte(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_s8 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_b028_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); +{ uae_s8 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_b030_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s8 src = get_byte(srca); +{ uae_s8 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_b038_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); +{ uae_s8 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_b039_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_ilong(2); +{ uae_s8 src = get_byte(srca); +{ uae_s8 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_b03a_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); +{ uae_s8 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_b03b_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s8 src = get_byte(srca); +{ uae_s8 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_b03c_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s8 src = get_ibyte(2); +{ uae_s8 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + SET_NFLG (flgn != 0); +}}}}}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_b040_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + SET_NFLG (flgn != 0); +}}}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_b048_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = m68k_areg(regs, srcreg); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + SET_NFLG (flgn != 0); +}}}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_b050_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_b058_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); + m68k_areg(regs, srcreg) += 2; +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_b060_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - 2; +{ uae_s16 src = get_word(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_b068_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_b070_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_b078_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_b079_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_ilong(2); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_b07a_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_b07b_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_b07c_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = get_iword(2); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + SET_NFLG (flgn != 0); +}}}}}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_b080_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uae_s32 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + SET_NFLG (flgn != 0); +}}}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_b088_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s32 src = m68k_areg(regs, srcreg); +{ uae_s32 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + SET_NFLG (flgn != 0); +}}}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_b090_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_b098_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s32 src = get_long(srca); + m68k_areg(regs, srcreg) += 4; +{ uae_s32 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_b0a0_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - 4; +{ uae_s32 src = get_long(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_s32 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_b0a8_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_b0b0_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_b0b8_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_b0b9_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_ilong(2); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_b0ba_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_b0bb_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_b0bc_3(uae_u32 opcode) /* CMP */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s32 src = get_ilong(2); +{ uae_s32 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + SET_NFLG (flgn != 0); +}}}}}}m68k_incpc(6); +return 6; +} +unsigned long REGPARAM2 op_b0c0_3(uae_u32 opcode) /* CMPA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + SET_NFLG (flgn != 0); +}}}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_b0c8_3(uae_u32 opcode) /* CMPA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = m68k_areg(regs, srcreg); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + SET_NFLG (flgn != 0); +}}}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_b0d0_3(uae_u32 opcode) /* CMPA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_b0d8_3(uae_u32 opcode) /* CMPA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); + m68k_areg(regs, srcreg) += 2; +{ uae_s32 dst = m68k_areg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_b0e0_3(uae_u32 opcode) /* CMPA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - 2; +{ uae_s16 src = get_word(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_b0e8_3(uae_u32 opcode) /* CMPA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_b0f0_3(uae_u32 opcode) /* CMPA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s16 src = get_word(srca); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_b0f8_3(uae_u32 opcode) /* CMPA */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_b0f9_3(uae_u32 opcode) /* CMPA */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_ilong(2); +{ uae_s16 src = get_word(srca); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_b0fa_3(uae_u32 opcode) /* CMPA */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_b0fb_3(uae_u32 opcode) /* CMPA */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s16 src = get_word(srca); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_b0fc_3(uae_u32 opcode) /* CMPA */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = get_iword(2); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + SET_NFLG (flgn != 0); +}}}}}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_b100_3(uae_u32 opcode) /* EOR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uae_s8 dst = m68k_dreg(regs, dstreg); + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_b108_3(uae_u32 opcode) /* CMPM */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s8 src = get_byte(srca); + m68k_areg(regs, srcreg) += areg_byteinc[srcreg]; +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s8 dst = get_byte(dsta); + m68k_areg(regs, dstreg) += areg_byteinc[dstreg]; +{{uae_u32 newv = ((uae_s8)(dst)) - ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u8)(src)) > ((uae_u8)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_b110_3(uae_u32 opcode) /* EOR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s8 dst = get_byte(dsta); + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_b118_3(uae_u32 opcode) /* EOR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s8 dst = get_byte(dsta); + m68k_areg(regs, dstreg) += areg_byteinc[dstreg]; + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_b120_3(uae_u32 opcode) /* EOR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) - areg_byteinc[dstreg]; +{ uae_s8 dst = get_byte(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_b128_3(uae_u32 opcode) /* EOR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 dst = get_byte(dsta); + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_b130_3(uae_u32 opcode) /* EOR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(2)); +{ uae_s8 dst = get_byte(dsta); + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_b138_3(uae_u32 opcode) /* EOR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 dst = get_byte(dsta); + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_b139_3(uae_u32 opcode) /* EOR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = get_ilong(2); +{ uae_s8 dst = get_byte(dsta); + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_b140_3(uae_u32 opcode) /* EOR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uae_s16 dst = m68k_dreg(regs, dstreg); + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_b148_3(uae_u32 opcode) /* CMPM */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); + m68k_areg(regs, srcreg) += 2; +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s16 dst = get_word(dsta); + m68k_areg(regs, dstreg) += 2; +{{uae_u32 newv = ((uae_s16)(dst)) - ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u16)(src)) > ((uae_u16)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_b150_3(uae_u32 opcode) /* EOR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s16 dst = get_word(dsta); + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_b158_3(uae_u32 opcode) /* EOR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s16 dst = get_word(dsta); + m68k_areg(regs, dstreg) += 2; + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_b160_3(uae_u32 opcode) /* EOR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 2; +{ uae_s16 dst = get_word(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_b168_3(uae_u32 opcode) /* EOR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 dst = get_word(dsta); + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_b170_3(uae_u32 opcode) /* EOR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(2)); +{ uae_s16 dst = get_word(dsta); + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_b178_3(uae_u32 opcode) /* EOR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 dst = get_word(dsta); + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_b179_3(uae_u32 opcode) /* EOR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = get_ilong(2); +{ uae_s16 dst = get_word(dsta); + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_b180_3(uae_u32 opcode) /* EOR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + m68k_dreg(regs, dstreg) = (src); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_b188_3(uae_u32 opcode) /* CMPM */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s32 src = get_long(srca); + m68k_areg(regs, srcreg) += 4; +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s32 dst = get_long(dsta); + m68k_areg(regs, dstreg) += 4; +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}}m68k_incpc(2); +return 10; +} +unsigned long REGPARAM2 op_b190_3(uae_u32 opcode) /* EOR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s32 dst = get_long(dsta); + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(2); +return 10; +} +unsigned long REGPARAM2 op_b198_3(uae_u32 opcode) /* EOR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s32 dst = get_long(dsta); + m68k_areg(regs, dstreg) += 4; + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(2); +return 10; +} +unsigned long REGPARAM2 op_b1a0_3(uae_u32 opcode) /* EOR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 4; +{ uae_s32 dst = get_long(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(2); +return 10; +} +unsigned long REGPARAM2 op_b1a8_3(uae_u32 opcode) /* EOR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 dst = get_long(dsta); + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_b1b0_3(uae_u32 opcode) /* EOR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(2)); +{ uae_s32 dst = get_long(dsta); + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_b1b8_3(uae_u32 opcode) /* EOR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 dst = get_long(dsta); + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_b1b9_3(uae_u32 opcode) /* EOR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = get_ilong(2); +{ uae_s32 dst = get_long(dsta); + src ^= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(6); +return 14; +} +unsigned long REGPARAM2 op_b1c0_3(uae_u32 opcode) /* CMPA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + SET_NFLG (flgn != 0); +}}}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_b1c8_3(uae_u32 opcode) /* CMPA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s32 src = m68k_areg(regs, srcreg); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + SET_NFLG (flgn != 0); +}}}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_b1d0_3(uae_u32 opcode) /* CMPA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_b1d8_3(uae_u32 opcode) /* CMPA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s32 src = get_long(srca); + m68k_areg(regs, srcreg) += 4; +{ uae_s32 dst = m68k_areg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_b1e0_3(uae_u32 opcode) /* CMPA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - 4; +{ uae_s32 src = get_long(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_b1e8_3(uae_u32 opcode) /* CMPA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_b1f0_3(uae_u32 opcode) /* CMPA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_b1f8_3(uae_u32 opcode) /* CMPA */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_b1f9_3(uae_u32 opcode) /* CMPA */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_ilong(2); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_b1fa_3(uae_u32 opcode) /* CMPA */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_b1fb_3(uae_u32 opcode) /* CMPA */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + SET_NFLG (flgn != 0); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_b1fc_3(uae_u32 opcode) /* CMPA */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s32 src = get_ilong(2); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) - ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs != flgo) && (flgn != flgo)); + SET_CFLG (((uae_u32)(src)) > ((uae_u32)(dst))); + SET_NFLG (flgn != 0); +}}}}}}m68k_incpc(6); +return 6; +} +unsigned long REGPARAM2 op_c000_3(uae_u32 opcode) /* AND */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uae_s8 dst = m68k_dreg(regs, dstreg); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_c010_3(uae_u32 opcode) /* AND */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s8 src = get_byte(srca); +{ uae_s8 dst = m68k_dreg(regs, dstreg); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff); +}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_c018_3(uae_u32 opcode) /* AND */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s8 src = get_byte(srca); + m68k_areg(regs, srcreg) += areg_byteinc[srcreg]; +{ uae_s8 dst = m68k_dreg(regs, dstreg); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff); +}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_c020_3(uae_u32 opcode) /* AND */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - areg_byteinc[srcreg]; +{ uae_s8 src = get_byte(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_s8 dst = m68k_dreg(regs, dstreg); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff); +}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_c028_3(uae_u32 opcode) /* AND */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); +{ uae_s8 dst = m68k_dreg(regs, dstreg); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff); +}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_c030_3(uae_u32 opcode) /* AND */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s8 src = get_byte(srca); +{ uae_s8 dst = m68k_dreg(regs, dstreg); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff); +}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_c038_3(uae_u32 opcode) /* AND */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); +{ uae_s8 dst = m68k_dreg(regs, dstreg); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff); +}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_c039_3(uae_u32 opcode) /* AND */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_ilong(2); +{ uae_s8 src = get_byte(srca); +{ uae_s8 dst = m68k_dreg(regs, dstreg); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff); +}}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_c03a_3(uae_u32 opcode) /* AND */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); +{ uae_s8 dst = m68k_dreg(regs, dstreg); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff); +}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_c03b_3(uae_u32 opcode) /* AND */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s8 src = get_byte(srca); +{ uae_s8 dst = m68k_dreg(regs, dstreg); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff); +}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_c03c_3(uae_u32 opcode) /* AND */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s8 src = get_ibyte(2); +{ uae_s8 dst = m68k_dreg(regs, dstreg); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff); +}}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_c040_3(uae_u32 opcode) /* AND */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uae_s16 dst = m68k_dreg(regs, dstreg); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_c050_3(uae_u32 opcode) /* AND */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff); +}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_c058_3(uae_u32 opcode) /* AND */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); + m68k_areg(regs, srcreg) += 2; +{ uae_s16 dst = m68k_dreg(regs, dstreg); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff); +}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_c060_3(uae_u32 opcode) /* AND */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - 2; +{ uae_s16 src = get_word(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_s16 dst = m68k_dreg(regs, dstreg); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff); +}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_c068_3(uae_u32 opcode) /* AND */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff); +}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_c070_3(uae_u32 opcode) /* AND */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff); +}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_c078_3(uae_u32 opcode) /* AND */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff); +}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_c079_3(uae_u32 opcode) /* AND */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_ilong(2); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff); +}}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_c07a_3(uae_u32 opcode) /* AND */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff); +}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_c07b_3(uae_u32 opcode) /* AND */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff); +}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_c07c_3(uae_u32 opcode) /* AND */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = get_iword(2); +{ uae_s16 dst = m68k_dreg(regs, dstreg); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff); +}}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_c080_3(uae_u32 opcode) /* AND */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + m68k_dreg(regs, dstreg) = (src); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_c090_3(uae_u32 opcode) /* AND */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + m68k_dreg(regs, dstreg) = (src); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_c098_3(uae_u32 opcode) /* AND */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s32 src = get_long(srca); + m68k_areg(regs, srcreg) += 4; +{ uae_s32 dst = m68k_dreg(regs, dstreg); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + m68k_dreg(regs, dstreg) = (src); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_c0a0_3(uae_u32 opcode) /* AND */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - 4; +{ uae_s32 src = get_long(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + m68k_dreg(regs, dstreg) = (src); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_c0a8_3(uae_u32 opcode) /* AND */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + m68k_dreg(regs, dstreg) = (src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_c0b0_3(uae_u32 opcode) /* AND */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + m68k_dreg(regs, dstreg) = (src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_c0b8_3(uae_u32 opcode) /* AND */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + m68k_dreg(regs, dstreg) = (src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_c0b9_3(uae_u32 opcode) /* AND */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_ilong(2); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + m68k_dreg(regs, dstreg) = (src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_c0ba_3(uae_u32 opcode) /* AND */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + m68k_dreg(regs, dstreg) = (src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_c0bb_3(uae_u32 opcode) /* AND */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + m68k_dreg(regs, dstreg) = (src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_c0bc_3(uae_u32 opcode) /* AND */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s32 src = get_ilong(2); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + m68k_dreg(regs, dstreg) = (src); +}}}m68k_incpc(6); +return 6; +} +unsigned long REGPARAM2 op_c0c0_3(uae_u32 opcode) /* MULU */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{ uae_u32 newv = (uae_u32)(uae_u16)dst * (uae_u32)(uae_u16)src; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_NFLG (((uae_s32)(newv)) < 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}m68k_incpc(2); +return 34; +} +unsigned long REGPARAM2 op_c0d0_3(uae_u32 opcode) /* MULU */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{ uae_u32 newv = (uae_u32)(uae_u16)dst * (uae_u32)(uae_u16)src; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_NFLG (((uae_s32)(newv)) < 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}m68k_incpc(2); +return 36; +} +unsigned long REGPARAM2 op_c0d8_3(uae_u32 opcode) /* MULU */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); + m68k_areg(regs, srcreg) += 2; +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{ uae_u32 newv = (uae_u32)(uae_u16)dst * (uae_u32)(uae_u16)src; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_NFLG (((uae_s32)(newv)) < 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}m68k_incpc(2); +return 36; +} +unsigned long REGPARAM2 op_c0e0_3(uae_u32 opcode) /* MULU */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - 2; +{ uae_s16 src = get_word(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{ uae_u32 newv = (uae_u32)(uae_u16)dst * (uae_u32)(uae_u16)src; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_NFLG (((uae_s32)(newv)) < 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}m68k_incpc(2); +return 36; +} +unsigned long REGPARAM2 op_c0e8_3(uae_u32 opcode) /* MULU */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{ uae_u32 newv = (uae_u32)(uae_u16)dst * (uae_u32)(uae_u16)src; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_NFLG (((uae_s32)(newv)) < 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}m68k_incpc(4); +return 38; +} +unsigned long REGPARAM2 op_c0f0_3(uae_u32 opcode) /* MULU */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{ uae_u32 newv = (uae_u32)(uae_u16)dst * (uae_u32)(uae_u16)src; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_NFLG (((uae_s32)(newv)) < 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}m68k_incpc(4); +return 38; +} +unsigned long REGPARAM2 op_c0f8_3(uae_u32 opcode) /* MULU */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{ uae_u32 newv = (uae_u32)(uae_u16)dst * (uae_u32)(uae_u16)src; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_NFLG (((uae_s32)(newv)) < 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}m68k_incpc(4); +return 38; +} +unsigned long REGPARAM2 op_c0f9_3(uae_u32 opcode) /* MULU */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_ilong(2); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{ uae_u32 newv = (uae_u32)(uae_u16)dst * (uae_u32)(uae_u16)src; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_NFLG (((uae_s32)(newv)) < 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}m68k_incpc(6); +return 40; +} +unsigned long REGPARAM2 op_c0fa_3(uae_u32 opcode) /* MULU */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{ uae_u32 newv = (uae_u32)(uae_u16)dst * (uae_u32)(uae_u16)src; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_NFLG (((uae_s32)(newv)) < 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}m68k_incpc(4); +return 38; +} +unsigned long REGPARAM2 op_c0fb_3(uae_u32 opcode) /* MULU */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{ uae_u32 newv = (uae_u32)(uae_u16)dst * (uae_u32)(uae_u16)src; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_NFLG (((uae_s32)(newv)) < 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}m68k_incpc(4); +return 38; +} +unsigned long REGPARAM2 op_c0fc_3(uae_u32 opcode) /* MULU */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = get_iword(2); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{ uae_u32 newv = (uae_u32)(uae_u16)dst * (uae_u32)(uae_u16)src; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_NFLG (((uae_s32)(newv)) < 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}m68k_incpc(4); +return 36; +} +unsigned long REGPARAM2 op_c100_3(uae_u32 opcode) /* ABCD */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uae_s8 dst = m68k_dreg(regs, dstreg); +{ uae_u16 newv_lo = (src & 0xF) + (dst & 0xF) + (GET_XFLG ? 1 : 0); + uae_u16 newv_hi = (src & 0xF0) + (dst & 0xF0); + uae_u16 newv; + int cflg; + if (newv_lo > 9) { newv_lo +=6; } + newv = newv_hi + newv_lo; SET_CFLG (cflg = (newv & 0x1F0) > 0x90); + COPY_CARRY; + if (cflg) newv += 0x60; + SET_ZFLG (GET_ZFLG & (((uae_s8)(newv)) == 0)); + SET_NFLG (((uae_s8)(newv)) < 0); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((newv) & 0xff); +}}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_c108_3(uae_u32 opcode) /* ABCD */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - areg_byteinc[srcreg]; +{ uae_s8 src = get_byte(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uaecptr dsta = m68k_areg(regs, dstreg) - areg_byteinc[dstreg]; +{ uae_s8 dst = get_byte(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_u16 newv_lo = (src & 0xF) + (dst & 0xF) + (GET_XFLG ? 1 : 0); + uae_u16 newv_hi = (src & 0xF0) + (dst & 0xF0); + uae_u16 newv; + int cflg; + if (newv_lo > 9) { newv_lo +=6; } + newv = newv_hi + newv_lo; SET_CFLG (cflg = (newv & 0x1F0) > 0x90); + COPY_CARRY; + if (cflg) newv += 0x60; + SET_ZFLG (GET_ZFLG & (((uae_s8)(newv)) == 0)); + SET_NFLG (((uae_s8)(newv)) < 0); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo)); + put_byte(dsta,newv); +}}}}}}}m68k_incpc(2); +return 8; +} +unsigned long REGPARAM2 op_c110_3(uae_u32 opcode) /* AND */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s8 dst = get_byte(dsta); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_c118_3(uae_u32 opcode) /* AND */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s8 dst = get_byte(dsta); + m68k_areg(regs, dstreg) += areg_byteinc[dstreg]; + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_c120_3(uae_u32 opcode) /* AND */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) - areg_byteinc[dstreg]; +{ uae_s8 dst = get_byte(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_c128_3(uae_u32 opcode) /* AND */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 dst = get_byte(dsta); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_c130_3(uae_u32 opcode) /* AND */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(2)); +{ uae_s8 dst = get_byte(dsta); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_c138_3(uae_u32 opcode) /* AND */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 dst = get_byte(dsta); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_c139_3(uae_u32 opcode) /* AND */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = get_ilong(2); +{ uae_s8 dst = get_byte(dsta); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s8)(src)) == 0); + SET_NFLG (((uae_s8)(src)) < 0); + put_byte(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_c140_3(uae_u32 opcode) /* EXG */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uae_s32 dst = m68k_dreg(regs, dstreg); + m68k_dreg(regs, srcreg) = (dst); + m68k_dreg(regs, dstreg) = (src); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_c148_3(uae_u32 opcode) /* EXG */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = m68k_areg(regs, srcreg); +{ uae_s32 dst = m68k_areg(regs, dstreg); + m68k_areg(regs, srcreg) = (dst); + if (srcreg == 7) CHECK_STACK_POINTER_ASSIGNMENT (); + m68k_areg(regs, dstreg) = (src); + if (dstreg == 7) CHECK_STACK_POINTER_ASSIGNMENT (); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_c150_3(uae_u32 opcode) /* AND */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s16 dst = get_word(dsta); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_c158_3(uae_u32 opcode) /* AND */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s16 dst = get_word(dsta); + m68k_areg(regs, dstreg) += 2; + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_c160_3(uae_u32 opcode) /* AND */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 2; +{ uae_s16 dst = get_word(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_c168_3(uae_u32 opcode) /* AND */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 dst = get_word(dsta); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_c170_3(uae_u32 opcode) /* AND */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(2)); +{ uae_s16 dst = get_word(dsta); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_c178_3(uae_u32 opcode) /* AND */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 dst = get_word(dsta); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_c179_3(uae_u32 opcode) /* AND */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = get_ilong(2); +{ uae_s16 dst = get_word(dsta); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(src)) == 0); + SET_NFLG (((uae_s16)(src)) < 0); + put_word(dsta,src); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_c188_3(uae_u32 opcode) /* EXG */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uae_s32 dst = m68k_areg(regs, dstreg); + m68k_dreg(regs, srcreg) = (dst); + m68k_areg(regs, dstreg) = (src); + if (dstreg == 7) CHECK_STACK_POINTER_ASSIGNMENT (); +}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_c190_3(uae_u32 opcode) /* AND */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s32 dst = get_long(dsta); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(2); +return 10; +} +unsigned long REGPARAM2 op_c198_3(uae_u32 opcode) /* AND */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s32 dst = get_long(dsta); + m68k_areg(regs, dstreg) += 4; + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(2); +return 10; +} +unsigned long REGPARAM2 op_c1a0_3(uae_u32 opcode) /* AND */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 4; +{ uae_s32 dst = get_long(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(2); +return 10; +} +unsigned long REGPARAM2 op_c1a8_3(uae_u32 opcode) /* AND */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 dst = get_long(dsta); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_c1b0_3(uae_u32 opcode) /* AND */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(2)); +{ uae_s32 dst = get_long(dsta); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_c1b8_3(uae_u32 opcode) /* AND */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 dst = get_long(dsta); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_c1b9_3(uae_u32 opcode) /* AND */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = get_ilong(2); +{ uae_s32 dst = get_long(dsta); + src &= dst; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(src)) == 0); + SET_NFLG (((uae_s32)(src)) < 0); + put_long(dsta,src); +}}}}m68k_incpc(6); +return 14; +} +unsigned long REGPARAM2 op_c1c0_3(uae_u32 opcode) /* MULS */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{ uae_u32 newv = (uae_s32)(uae_s16)dst * (uae_s32)(uae_s16)src; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_NFLG (((uae_s32)(newv)) < 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}m68k_incpc(2); +return 34; +} +unsigned long REGPARAM2 op_c1d0_3(uae_u32 opcode) /* MULS */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{ uae_u32 newv = (uae_s32)(uae_s16)dst * (uae_s32)(uae_s16)src; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_NFLG (((uae_s32)(newv)) < 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}m68k_incpc(2); +return 36; +} +unsigned long REGPARAM2 op_c1d8_3(uae_u32 opcode) /* MULS */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); + m68k_areg(regs, srcreg) += 2; +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{ uae_u32 newv = (uae_s32)(uae_s16)dst * (uae_s32)(uae_s16)src; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_NFLG (((uae_s32)(newv)) < 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}m68k_incpc(2); +return 36; +} +unsigned long REGPARAM2 op_c1e0_3(uae_u32 opcode) /* MULS */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - 2; +{ uae_s16 src = get_word(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{ uae_u32 newv = (uae_s32)(uae_s16)dst * (uae_s32)(uae_s16)src; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_NFLG (((uae_s32)(newv)) < 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}m68k_incpc(2); +return 36; +} +unsigned long REGPARAM2 op_c1e8_3(uae_u32 opcode) /* MULS */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{ uae_u32 newv = (uae_s32)(uae_s16)dst * (uae_s32)(uae_s16)src; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_NFLG (((uae_s32)(newv)) < 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}m68k_incpc(4); +return 38; +} +unsigned long REGPARAM2 op_c1f0_3(uae_u32 opcode) /* MULS */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{ uae_u32 newv = (uae_s32)(uae_s16)dst * (uae_s32)(uae_s16)src; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_NFLG (((uae_s32)(newv)) < 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}m68k_incpc(4); +return 38; +} +unsigned long REGPARAM2 op_c1f8_3(uae_u32 opcode) /* MULS */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{ uae_u32 newv = (uae_s32)(uae_s16)dst * (uae_s32)(uae_s16)src; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_NFLG (((uae_s32)(newv)) < 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}m68k_incpc(4); +return 38; +} +unsigned long REGPARAM2 op_c1f9_3(uae_u32 opcode) /* MULS */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_ilong(2); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{ uae_u32 newv = (uae_s32)(uae_s16)dst * (uae_s32)(uae_s16)src; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_NFLG (((uae_s32)(newv)) < 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}m68k_incpc(6); +return 40; +} +unsigned long REGPARAM2 op_c1fa_3(uae_u32 opcode) /* MULS */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{ uae_u32 newv = (uae_s32)(uae_s16)dst * (uae_s32)(uae_s16)src; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_NFLG (((uae_s32)(newv)) < 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}m68k_incpc(4); +return 38; +} +unsigned long REGPARAM2 op_c1fb_3(uae_u32 opcode) /* MULS */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{ uae_u32 newv = (uae_s32)(uae_s16)dst * (uae_s32)(uae_s16)src; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_NFLG (((uae_s32)(newv)) < 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}m68k_incpc(4); +return 38; +} +unsigned long REGPARAM2 op_c1fc_3(uae_u32 opcode) /* MULS */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = get_iword(2); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{ uae_u32 newv = (uae_s32)(uae_s16)dst * (uae_s32)(uae_s16)src; + CLEAR_CZNV; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_NFLG (((uae_s32)(newv)) < 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}m68k_incpc(4); +return 36; +} +unsigned long REGPARAM2 op_d000_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uae_s8 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s8)(dst)) + ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u8)(~dst)) < ((uae_u8)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((newv) & 0xff); +}}}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_d010_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s8 src = get_byte(srca); +{ uae_s8 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s8)(dst)) + ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u8)(~dst)) < ((uae_u8)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((newv) & 0xff); +}}}}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_d018_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s8 src = get_byte(srca); + m68k_areg(regs, srcreg) += areg_byteinc[srcreg]; +{ uae_s8 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s8)(dst)) + ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u8)(~dst)) < ((uae_u8)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((newv) & 0xff); +}}}}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_d020_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - areg_byteinc[srcreg]; +{ uae_s8 src = get_byte(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_s8 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s8)(dst)) + ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u8)(~dst)) < ((uae_u8)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((newv) & 0xff); +}}}}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_d028_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); +{ uae_s8 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s8)(dst)) + ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u8)(~dst)) < ((uae_u8)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((newv) & 0xff); +}}}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_d030_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s8 src = get_byte(srca); +{ uae_s8 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s8)(dst)) + ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u8)(~dst)) < ((uae_u8)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((newv) & 0xff); +}}}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_d038_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); +{ uae_s8 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s8)(dst)) + ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u8)(~dst)) < ((uae_u8)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((newv) & 0xff); +}}}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_d039_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_ilong(2); +{ uae_s8 src = get_byte(srca); +{ uae_s8 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s8)(dst)) + ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u8)(~dst)) < ((uae_u8)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((newv) & 0xff); +}}}}}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_d03a_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 src = get_byte(srca); +{ uae_s8 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s8)(dst)) + ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u8)(~dst)) < ((uae_u8)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((newv) & 0xff); +}}}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_d03b_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s8 src = get_byte(srca); +{ uae_s8 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s8)(dst)) + ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u8)(~dst)) < ((uae_u8)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((newv) & 0xff); +}}}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_d03c_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s8 src = get_ibyte(2); +{ uae_s8 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s8)(dst)) + ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u8)(~dst)) < ((uae_u8)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((newv) & 0xff); +}}}}}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_d040_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s16)(dst)) + ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u16)(~dst)) < ((uae_u16)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((newv) & 0xffff); +}}}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_d048_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = m68k_areg(regs, srcreg); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s16)(dst)) + ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u16)(~dst)) < ((uae_u16)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((newv) & 0xffff); +}}}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_d050_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s16)(dst)) + ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u16)(~dst)) < ((uae_u16)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((newv) & 0xffff); +}}}}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_d058_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); + m68k_areg(regs, srcreg) += 2; +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s16)(dst)) + ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u16)(~dst)) < ((uae_u16)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((newv) & 0xffff); +}}}}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_d060_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - 2; +{ uae_s16 src = get_word(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s16)(dst)) + ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u16)(~dst)) < ((uae_u16)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((newv) & 0xffff); +}}}}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_d068_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s16)(dst)) + ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u16)(~dst)) < ((uae_u16)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((newv) & 0xffff); +}}}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_d070_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s16)(dst)) + ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u16)(~dst)) < ((uae_u16)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((newv) & 0xffff); +}}}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_d078_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s16)(dst)) + ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u16)(~dst)) < ((uae_u16)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((newv) & 0xffff); +}}}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_d079_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_ilong(2); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s16)(dst)) + ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u16)(~dst)) < ((uae_u16)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((newv) & 0xffff); +}}}}}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_d07a_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s16)(dst)) + ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u16)(~dst)) < ((uae_u16)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((newv) & 0xffff); +}}}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_d07b_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s16 src = get_word(srca); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s16)(dst)) + ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u16)(~dst)) < ((uae_u16)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((newv) & 0xffff); +}}}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_d07c_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = get_iword(2); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s16)(dst)) + ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u16)(~dst)) < ((uae_u16)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((newv) & 0xffff); +}}}}}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_d080_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uae_s32 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) + ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u32)(~dst)) < ((uae_u32)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_d088_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s32 src = m68k_areg(regs, srcreg); +{ uae_s32 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) + ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u32)(~dst)) < ((uae_u32)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_d090_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) + ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u32)(~dst)) < ((uae_u32)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_d098_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s32 src = get_long(srca); + m68k_areg(regs, srcreg) += 4; +{ uae_s32 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) + ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u32)(~dst)) < ((uae_u32)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_d0a0_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - 4; +{ uae_s32 src = get_long(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_s32 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) + ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u32)(~dst)) < ((uae_u32)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_d0a8_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) + ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u32)(~dst)) < ((uae_u32)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_d0b0_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) + ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u32)(~dst)) < ((uae_u32)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_d0b8_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) + ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u32)(~dst)) < ((uae_u32)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_d0b9_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_ilong(2); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) + ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u32)(~dst)) < ((uae_u32)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_d0ba_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) + ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u32)(~dst)) < ((uae_u32)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_d0bb_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) + ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u32)(~dst)) < ((uae_u32)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_d0bc_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s32 src = get_ilong(2); +{ uae_s32 dst = m68k_dreg(regs, dstreg); +{{uae_u32 newv = ((uae_s32)(dst)) + ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u32)(~dst)) < ((uae_u32)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}}m68k_incpc(6); +return 6; +} +unsigned long REGPARAM2 op_d0c0_3(uae_u32 opcode) /* ADDA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst + src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_INCREMENT (); +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_d0c8_3(uae_u32 opcode) /* ADDA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = m68k_areg(regs, srcreg); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst + src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_INCREMENT (); +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_d0d0_3(uae_u32 opcode) /* ADDA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst + src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_INCREMENT (); +}}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_d0d8_3(uae_u32 opcode) /* ADDA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s16 src = get_word(srca); + m68k_areg(regs, srcreg) += 2; +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst + src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_INCREMENT (); +}}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_d0e0_3(uae_u32 opcode) /* ADDA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - 2; +{ uae_s16 src = get_word(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst + src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_INCREMENT (); +}}}}}m68k_incpc(2); +return 4; +} +unsigned long REGPARAM2 op_d0e8_3(uae_u32 opcode) /* ADDA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst + src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_INCREMENT (); +}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_d0f0_3(uae_u32 opcode) /* ADDA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s16 src = get_word(srca); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst + src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_INCREMENT (); +}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_d0f8_3(uae_u32 opcode) /* ADDA */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst + src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_INCREMENT (); +}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_d0f9_3(uae_u32 opcode) /* ADDA */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_ilong(2); +{ uae_s16 src = get_word(srca); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst + src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_INCREMENT (); +}}}}}m68k_incpc(6); +return 8; +} +unsigned long REGPARAM2 op_d0fa_3(uae_u32 opcode) /* ADDA */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 src = get_word(srca); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst + src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_INCREMENT (); +}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_d0fb_3(uae_u32 opcode) /* ADDA */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s16 src = get_word(srca); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst + src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_INCREMENT (); +}}}}}m68k_incpc(4); +return 6; +} +unsigned long REGPARAM2 op_d0fc_3(uae_u32 opcode) /* ADDA */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = get_iword(2); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst + src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_INCREMENT (); +}}}}m68k_incpc(4); +return 4; +} +unsigned long REGPARAM2 op_d100_3(uae_u32 opcode) /* ADDX */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uae_s8 dst = m68k_dreg(regs, dstreg); +{ uae_u32 newv = dst + src + (GET_XFLG ? 1 : 0); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (flgs ^ ((flgs ^ flgo) & (flgo ^ flgn))); + COPY_CARRY; + SET_ZFLG (GET_ZFLG & (((uae_s8)(newv)) == 0)); + SET_NFLG (((uae_s8)(newv)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((newv) & 0xff); +}}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_d108_3(uae_u32 opcode) /* ADDX */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - areg_byteinc[srcreg]; +{ uae_s8 src = get_byte(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uaecptr dsta = m68k_areg(regs, dstreg) - areg_byteinc[dstreg]; +{ uae_s8 dst = get_byte(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_u32 newv = dst + src + (GET_XFLG ? 1 : 0); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (flgs ^ ((flgs ^ flgo) & (flgo ^ flgn))); + COPY_CARRY; + SET_ZFLG (GET_ZFLG & (((uae_s8)(newv)) == 0)); + SET_NFLG (((uae_s8)(newv)) < 0); + put_byte(dsta,newv); +}}}}}}}m68k_incpc(2); +return 8; +} +unsigned long REGPARAM2 op_d110_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s8 dst = get_byte(dsta); +{{uae_u32 newv = ((uae_s8)(dst)) + ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u8)(~dst)) < ((uae_u8)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(dsta,newv); +}}}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_d118_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s8 dst = get_byte(dsta); + m68k_areg(regs, dstreg) += areg_byteinc[dstreg]; +{{uae_u32 newv = ((uae_s8)(dst)) + ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u8)(~dst)) < ((uae_u8)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(dsta,newv); +}}}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_d120_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) - areg_byteinc[dstreg]; +{ uae_s8 dst = get_byte(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{{uae_u32 newv = ((uae_s8)(dst)) + ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u8)(~dst)) < ((uae_u8)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(dsta,newv); +}}}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_d128_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 dst = get_byte(dsta); +{{uae_u32 newv = ((uae_s8)(dst)) + ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u8)(~dst)) < ((uae_u8)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(dsta,newv); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_d130_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(2)); +{ uae_s8 dst = get_byte(dsta); +{{uae_u32 newv = ((uae_s8)(dst)) + ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u8)(~dst)) < ((uae_u8)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(dsta,newv); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_d138_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(2); +{ uae_s8 dst = get_byte(dsta); +{{uae_u32 newv = ((uae_s8)(dst)) + ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u8)(~dst)) < ((uae_u8)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(dsta,newv); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_d139_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); +{{ uae_s8 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = get_ilong(2); +{ uae_s8 dst = get_byte(dsta); +{{uae_u32 newv = ((uae_s8)(dst)) + ((uae_s8)(src)); +{ int flgs = ((uae_s8)(src)) < 0; + int flgo = ((uae_s8)(dst)) < 0; + int flgn = ((uae_s8)(newv)) < 0; + SET_ZFLG (((uae_s8)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u8)(~dst)) < ((uae_u8)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_byte(dsta,newv); +}}}}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_d140_3(uae_u32 opcode) /* ADDX */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uae_s16 dst = m68k_dreg(regs, dstreg); +{ uae_u32 newv = dst + src + (GET_XFLG ? 1 : 0); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (flgs ^ ((flgs ^ flgo) & (flgo ^ flgn))); + COPY_CARRY; + SET_ZFLG (GET_ZFLG & (((uae_s16)(newv)) == 0)); + SET_NFLG (((uae_s16)(newv)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((newv) & 0xffff); +}}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_d148_3(uae_u32 opcode) /* ADDX */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - 2; +{ uae_s16 src = get_word(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 2; +{ uae_s16 dst = get_word(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_u32 newv = dst + src + (GET_XFLG ? 1 : 0); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (flgs ^ ((flgs ^ flgo) & (flgo ^ flgn))); + COPY_CARRY; + SET_ZFLG (GET_ZFLG & (((uae_s16)(newv)) == 0)); + SET_NFLG (((uae_s16)(newv)) < 0); + put_word(dsta,newv); +}}}}}}}m68k_incpc(2); +return 8; +} +unsigned long REGPARAM2 op_d150_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s16 dst = get_word(dsta); +{{uae_u32 newv = ((uae_s16)(dst)) + ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u16)(~dst)) < ((uae_u16)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(dsta,newv); +}}}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_d158_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s16 dst = get_word(dsta); + m68k_areg(regs, dstreg) += 2; +{{uae_u32 newv = ((uae_s16)(dst)) + ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u16)(~dst)) < ((uae_u16)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(dsta,newv); +}}}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_d160_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 2; +{ uae_s16 dst = get_word(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{{uae_u32 newv = ((uae_s16)(dst)) + ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u16)(~dst)) < ((uae_u16)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(dsta,newv); +}}}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_d168_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 dst = get_word(dsta); +{{uae_u32 newv = ((uae_s16)(dst)) + ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u16)(~dst)) < ((uae_u16)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(dsta,newv); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_d170_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(2)); +{ uae_s16 dst = get_word(dsta); +{{uae_u32 newv = ((uae_s16)(dst)) + ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u16)(~dst)) < ((uae_u16)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(dsta,newv); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_d178_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 dst = get_word(dsta); +{{uae_u32 newv = ((uae_s16)(dst)) + ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u16)(~dst)) < ((uae_u16)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(dsta,newv); +}}}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_d179_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); +{{ uae_s16 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = get_ilong(2); +{ uae_s16 dst = get_word(dsta); +{{uae_u32 newv = ((uae_s16)(dst)) + ((uae_s16)(src)); +{ int flgs = ((uae_s16)(src)) < 0; + int flgo = ((uae_s16)(dst)) < 0; + int flgn = ((uae_s16)(newv)) < 0; + SET_ZFLG (((uae_s16)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u16)(~dst)) < ((uae_u16)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_word(dsta,newv); +}}}}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_d180_3(uae_u32 opcode) /* ADDX */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uae_s32 dst = m68k_dreg(regs, dstreg); +{ uae_u32 newv = dst + src + (GET_XFLG ? 1 : 0); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (flgs ^ ((flgs ^ flgo) & (flgo ^ flgn))); + COPY_CARRY; + SET_ZFLG (GET_ZFLG & (((uae_s32)(newv)) == 0)); + SET_NFLG (((uae_s32)(newv)) < 0); + m68k_dreg(regs, dstreg) = (newv); +}}}}}m68k_incpc(2); +return 2; +} +#endif + +#ifdef PART_8 +unsigned long REGPARAM2 op_d188_3(uae_u32 opcode) /* ADDX */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - 4; +{ uae_s32 src = get_long(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 4; +{ uae_s32 dst = get_long(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_u32 newv = dst + src + (GET_XFLG ? 1 : 0); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (flgs ^ ((flgs ^ flgo) & (flgo ^ flgn))); + COPY_CARRY; + SET_ZFLG (GET_ZFLG & (((uae_s32)(newv)) == 0)); + SET_NFLG (((uae_s32)(newv)) < 0); + put_long(dsta,newv); +}}}}}}}m68k_incpc(2); +return 14; +} +unsigned long REGPARAM2 op_d190_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s32 dst = get_long(dsta); +{{uae_u32 newv = ((uae_s32)(dst)) + ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u32)(~dst)) < ((uae_u32)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(dsta,newv); +}}}}}}}m68k_incpc(2); +return 10; +} +unsigned long REGPARAM2 op_d198_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg); +{ uae_s32 dst = get_long(dsta); + m68k_areg(regs, dstreg) += 4; +{{uae_u32 newv = ((uae_s32)(dst)) + ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u32)(~dst)) < ((uae_u32)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(dsta,newv); +}}}}}}}m68k_incpc(2); +return 10; +} +unsigned long REGPARAM2 op_d1a0_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) - 4; +{ uae_s32 dst = get_long(dsta); + m68k_areg (regs, dstreg) = dsta; + if (dstreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{{uae_u32 newv = ((uae_s32)(dst)) + ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u32)(~dst)) < ((uae_u32)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(dsta,newv); +}}}}}}}m68k_incpc(2); +return 10; +} +unsigned long REGPARAM2 op_d1a8_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 dst = get_long(dsta); +{{uae_u32 newv = ((uae_s32)(dst)) + ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u32)(~dst)) < ((uae_u32)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(dsta,newv); +}}}}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_d1b0_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = get_disp_ea_000(m68k_areg(regs, dstreg), get_iword(2)); +{ uae_s32 dst = get_long(dsta); +{{uae_u32 newv = ((uae_s32)(dst)) + ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u32)(~dst)) < ((uae_u32)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(dsta,newv); +}}}}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_d1b8_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 dst = get_long(dsta); +{{uae_u32 newv = ((uae_s32)(dst)) + ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u32)(~dst)) < ((uae_u32)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(dsta,newv); +}}}}}}}m68k_incpc(4); +return 12; +} +unsigned long REGPARAM2 op_d1b9_3(uae_u32 opcode) /* ADD */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uaecptr dsta = get_ilong(2); +{ uae_s32 dst = get_long(dsta); +{{uae_u32 newv = ((uae_s32)(dst)) + ((uae_s32)(src)); +{ int flgs = ((uae_s32)(src)) < 0; + int flgo = ((uae_s32)(dst)) < 0; + int flgn = ((uae_s32)(newv)) < 0; + SET_ZFLG (((uae_s32)(newv)) == 0); + SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn)); + SET_CFLG (((uae_u32)(~dst)) < ((uae_u32)(src))); + COPY_CARRY; + SET_NFLG (flgn != 0); + put_long(dsta,newv); +}}}}}}}m68k_incpc(6); +return 14; +} +unsigned long REGPARAM2 op_d1c0_3(uae_u32 opcode) /* ADDA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s32 src = m68k_dreg(regs, srcreg); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst + src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_INCREMENT (); +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_d1c8_3(uae_u32 opcode) /* ADDA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s32 src = m68k_areg(regs, srcreg); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst + src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_INCREMENT (); +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_d1d0_3(uae_u32 opcode) /* ADDA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst + src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_INCREMENT (); +}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_d1d8_3(uae_u32 opcode) /* ADDA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg); +{ uae_s32 src = get_long(srca); + m68k_areg(regs, srcreg) += 4; +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst + src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_INCREMENT (); +}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_d1e0_3(uae_u32 opcode) /* ADDA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) - 4; +{ uae_s32 src = get_long(srca); + m68k_areg (regs, srcreg) = srca; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst + src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_INCREMENT (); +}}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_d1e8_3(uae_u32 opcode) /* ADDA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst + src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_INCREMENT (); +}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_d1f0_3(uae_u32 opcode) /* ADDA */ +{ + uae_u32 srcreg = (opcode & 7); + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst + src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_INCREMENT (); +}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_d1f8_3(uae_u32 opcode) /* ADDA */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst + src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_INCREMENT (); +}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_d1f9_3(uae_u32 opcode) /* ADDA */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = get_ilong(2); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst + src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_INCREMENT (); +}}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_d1fa_3(uae_u32 opcode) /* ADDA */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr srca = m68k_getpc () + 2; + srca += (uae_s32)(uae_s16)get_iword(2); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst + src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_INCREMENT (); +}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_d1fb_3(uae_u32 opcode) /* ADDA */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uaecptr tmppc = m68k_getpc() + 2; + uaecptr srca = get_disp_ea_000(tmppc, get_iword(2)); +{ uae_s32 src = get_long(srca); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst + src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_INCREMENT (); +}}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_d1fc_3(uae_u32 opcode) /* ADDA */ +{ + uae_u32 dstreg = (opcode >> 9) & 7; +{{ uae_s32 src = get_ilong(2); +{ uae_s32 dst = m68k_areg(regs, dstreg); +{ uae_u32 newv = dst + src; + m68k_areg(regs, dstreg) = (newv); + if (dstreg == 7) CHECK_STACK_POINTER_INCREMENT (); +}}}}m68k_incpc(6); +return 6; +} +unsigned long REGPARAM2 op_e000_3(uae_u32 opcode) /* ASR */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 cnt = srcreg; +{ uae_s8 data = m68k_dreg(regs, dstreg); +{ uae_u32 val = (uae_u8)data; + uae_u32 sign = (0x80 & val) >> 7; + cnt &= 63; + CLEAR_CZNV; + if (cnt >= 8) { + val = 0xff & (uae_u32)-sign; + SET_CFLG (sign); + COPY_CARRY; + } else { + val >>= cnt - 1; + SET_CFLG (val & 1); + COPY_CARRY; + val >>= 1; + val |= (0xff << (8 - cnt)) & (uae_u32)-sign; + val &= 0xff; + } + SET_ZFLG (((uae_s8)(val)) == 0); + SET_NFLG (((uae_s8)(val)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((val) & 0xff); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e008_3(uae_u32 opcode) /* LSR */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 cnt = srcreg; +{ uae_s8 data = m68k_dreg(regs, dstreg); +{ uae_u32 val = (uae_u8)data; + cnt &= 63; + CLEAR_CZNV; + if (cnt >= 8) { + SET_CFLG ((cnt == 8) & (val >> 7)); + COPY_CARRY; + val = 0; + } else { + val >>= cnt - 1; + SET_CFLG (val & 1); + COPY_CARRY; + val >>= 1; + } + SET_ZFLG (((uae_s8)(val)) == 0); + SET_NFLG (((uae_s8)(val)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((val) & 0xff); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e010_3(uae_u32 opcode) /* ROXR */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 cnt = srcreg; +{ uae_s8 data = m68k_dreg(regs, dstreg); +{ uae_u32 val = (uae_u8)data; + cnt &= 63; + CLEAR_CZNV; +{ cnt--; + { + uae_u32 carry; + uae_u32 hival = (val << 1) | GET_XFLG; + hival <<= (7 - cnt); + val >>= cnt; + carry = val & 1; + val >>= 1; + val |= hival; + SET_XFLG (carry); + val &= 0xff; + } } + SET_CFLG (GET_XFLG); + SET_ZFLG (((uae_s8)(val)) == 0); + SET_NFLG (((uae_s8)(val)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((val) & 0xff); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e018_3(uae_u32 opcode) /* ROR */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 cnt = srcreg; +{ uae_s8 data = m68k_dreg(regs, dstreg); +{ uae_u8 val = data; + uae_u32 cmask = 0x80; + cnt &= 63; + if (!cnt) { CFLG = 0; } else { uae_u32 carry; + for(;cnt;--cnt){ + carry=val&1; val = val >> 1; + if(carry) val |= cmask; + } + SET_CFLG (carry); +} + SET_NFLG ((val & cmask) != 0); SET_ZFLG (val == 0); SET_VFLG (0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((val) & 0xff); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e020_3(uae_u32 opcode) /* ASR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 cnt = m68k_dreg(regs, srcreg); +{ uae_s8 data = m68k_dreg(regs, dstreg); +{ uae_u32 val = (uae_u8)data; + uae_u32 sign = (0x80 & val) >> 7; + cnt &= 63; + CLEAR_CZNV; + if (cnt >= 8) { + val = 0xff & (uae_u32)-sign; + SET_CFLG (sign); + COPY_CARRY; + } else if (cnt > 0) { + val >>= cnt - 1; + SET_CFLG (val & 1); + COPY_CARRY; + val >>= 1; + val |= (0xff << (8 - cnt)) & (uae_u32)-sign; + val &= 0xff; + } + SET_ZFLG (((uae_s8)(val)) == 0); + SET_NFLG (((uae_s8)(val)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((val) & 0xff); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e028_3(uae_u32 opcode) /* LSR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 cnt = m68k_dreg(regs, srcreg); +{ uae_s8 data = m68k_dreg(regs, dstreg); +{ uae_u32 val = (uae_u8)data; + cnt &= 63; + CLEAR_CZNV; + if (cnt >= 8) { + SET_CFLG ((cnt == 8) & (val >> 7)); + COPY_CARRY; + val = 0; + } else if (cnt > 0) { + val >>= cnt - 1; + SET_CFLG (val & 1); + COPY_CARRY; + val >>= 1; + } + SET_ZFLG (((uae_s8)(val)) == 0); + SET_NFLG (((uae_s8)(val)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((val) & 0xff); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e030_3(uae_u32 opcode) /* ROXR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 cnt = m68k_dreg(regs, srcreg); +{ uae_s8 data = m68k_dreg(regs, dstreg); +{ uae_u32 val = (uae_u8)data; + cnt &= 63; + CLEAR_CZNV; + if (cnt >= 36) cnt -= 36; + if (cnt >= 18) cnt -= 18; + if (cnt >= 9) cnt -= 9; + if (cnt > 0) { + cnt--; + { + uae_u32 carry; + uae_u32 hival = (val << 1) | GET_XFLG; + hival <<= (7 - cnt); + val >>= cnt; + carry = val & 1; + val >>= 1; + val |= hival; + SET_XFLG (carry); + val &= 0xff; + } } + SET_CFLG (GET_XFLG); + SET_ZFLG (((uae_s8)(val)) == 0); + SET_NFLG (((uae_s8)(val)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((val) & 0xff); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e038_3(uae_u32 opcode) /* ROR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 cnt = m68k_dreg(regs, srcreg); +{ uae_s8 data = m68k_dreg(regs, dstreg); +{ uae_u8 val = data; + uae_u32 cmask = 0x80; + cnt &= 63; + if (!cnt) { CFLG = 0; } else { uae_u32 carry; + for(;cnt;--cnt){ + carry=val&1; val = val >> 1; + if(carry) val |= cmask; + } + SET_CFLG (carry); +} + SET_NFLG ((val & cmask) != 0); SET_ZFLG (val == 0); SET_VFLG (0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((val) & 0xff); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e040_3(uae_u32 opcode) /* ASR */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 cnt = srcreg; +{ uae_s16 data = m68k_dreg(regs, dstreg); +{ uae_u32 val = (uae_u16)data; + uae_u32 sign = (0x8000 & val) >> 15; + cnt &= 63; + CLEAR_CZNV; + if (cnt >= 16) { + val = 0xffff & (uae_u32)-sign; + SET_CFLG (sign); + COPY_CARRY; + } else { + val >>= cnt - 1; + SET_CFLG (val & 1); + COPY_CARRY; + val >>= 1; + val |= (0xffff << (16 - cnt)) & (uae_u32)-sign; + val &= 0xffff; + } + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((val) & 0xffff); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e048_3(uae_u32 opcode) /* LSR */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 cnt = srcreg; +{ uae_s16 data = m68k_dreg(regs, dstreg); +{ uae_u32 val = (uae_u16)data; + cnt &= 63; + CLEAR_CZNV; + if (cnt >= 16) { + SET_CFLG ((cnt == 16) & (val >> 15)); + COPY_CARRY; + val = 0; + } else { + val >>= cnt - 1; + SET_CFLG (val & 1); + COPY_CARRY; + val >>= 1; + } + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((val) & 0xffff); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e050_3(uae_u32 opcode) /* ROXR */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 cnt = srcreg; +{ uae_s16 data = m68k_dreg(regs, dstreg); +{ uae_u32 val = (uae_u16)data; + cnt &= 63; + CLEAR_CZNV; +{ cnt--; + { + uae_u32 carry; + uae_u32 hival = (val << 1) | GET_XFLG; + hival <<= (15 - cnt); + val >>= cnt; + carry = val & 1; + val >>= 1; + val |= hival; + SET_XFLG (carry); + val &= 0xffff; + } } + SET_CFLG (GET_XFLG); + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((val) & 0xffff); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e058_3(uae_u32 opcode) /* ROR */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 cnt = srcreg; +{ uae_s16 data = m68k_dreg(regs, dstreg); +{ uae_u16 val = data; + uae_u32 cmask = 0x8000; + cnt &= 63; + if (!cnt) { CFLG = 0; } else { uae_u32 carry; + for(;cnt;--cnt){ + carry=val&1; val = val >> 1; + if(carry) val |= cmask; + } + SET_CFLG (carry); +} + SET_NFLG ((val & cmask) != 0); SET_ZFLG (val == 0); SET_VFLG (0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((val) & 0xffff); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e060_3(uae_u32 opcode) /* ASR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s16 cnt = m68k_dreg(regs, srcreg); +{ uae_s16 data = m68k_dreg(regs, dstreg); +{ uae_u32 val = (uae_u16)data; + uae_u32 sign = (0x8000 & val) >> 15; + cnt &= 63; + CLEAR_CZNV; + if (cnt >= 16) { + val = 0xffff & (uae_u32)-sign; + SET_CFLG (sign); + COPY_CARRY; + } else if (cnt > 0) { + val >>= cnt - 1; + SET_CFLG (val & 1); + COPY_CARRY; + val >>= 1; + val |= (0xffff << (16 - cnt)) & (uae_u32)-sign; + val &= 0xffff; + } + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((val) & 0xffff); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e068_3(uae_u32 opcode) /* LSR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s16 cnt = m68k_dreg(regs, srcreg); +{ uae_s16 data = m68k_dreg(regs, dstreg); +{ uae_u32 val = (uae_u16)data; + cnt &= 63; + CLEAR_CZNV; + if (cnt >= 16) { + SET_CFLG ((cnt == 16) & (val >> 15)); + COPY_CARRY; + val = 0; + } else if (cnt > 0) { + val >>= cnt - 1; + SET_CFLG (val & 1); + COPY_CARRY; + val >>= 1; + } + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((val) & 0xffff); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e070_3(uae_u32 opcode) /* ROXR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s16 cnt = m68k_dreg(regs, srcreg); +{ uae_s16 data = m68k_dreg(regs, dstreg); +{ uae_u32 val = (uae_u16)data; + cnt &= 63; + CLEAR_CZNV; + if (cnt >= 34) cnt -= 34; + if (cnt >= 17) cnt -= 17; + if (cnt > 0) { + cnt--; + { + uae_u32 carry; + uae_u32 hival = (val << 1) | GET_XFLG; + hival <<= (15 - cnt); + val >>= cnt; + carry = val & 1; + val >>= 1; + val |= hival; + SET_XFLG (carry); + val &= 0xffff; + } } + SET_CFLG (GET_XFLG); + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((val) & 0xffff); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e078_3(uae_u32 opcode) /* ROR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s16 cnt = m68k_dreg(regs, srcreg); +{ uae_s16 data = m68k_dreg(regs, dstreg); +{ uae_u16 val = data; + uae_u32 cmask = 0x8000; + cnt &= 63; + if (!cnt) { CFLG = 0; } else { uae_u32 carry; + for(;cnt;--cnt){ + carry=val&1; val = val >> 1; + if(carry) val |= cmask; + } + SET_CFLG (carry); +} + SET_NFLG ((val & cmask) != 0); SET_ZFLG (val == 0); SET_VFLG (0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((val) & 0xffff); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e080_3(uae_u32 opcode) /* ASR */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 cnt = srcreg; +{ uae_s32 data = m68k_dreg(regs, dstreg); +{ uae_u32 val = data; + uae_u32 sign = (0x80000000 & val) >> 31; + cnt &= 63; + CLEAR_CZNV; + if (cnt >= 32) { + val = 0xffffffff & (uae_u32)-sign; + SET_CFLG (sign); + COPY_CARRY; + } else { + val >>= cnt - 1; + SET_CFLG (val & 1); + COPY_CARRY; + val >>= 1; + val |= (0xffffffff << (32 - cnt)) & (uae_u32)-sign; + val &= 0xffffffff; + } + SET_ZFLG (((uae_s32)(val)) == 0); + SET_NFLG (((uae_s32)(val)) < 0); + m68k_dreg(regs, dstreg) = (val); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e088_3(uae_u32 opcode) /* LSR */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 cnt = srcreg; +{ uae_s32 data = m68k_dreg(regs, dstreg); +{ uae_u32 val = data; + cnt &= 63; + CLEAR_CZNV; + if (cnt >= 32) { + SET_CFLG ((cnt == 32) & (val >> 31)); + COPY_CARRY; + val = 0; + } else { + val >>= cnt - 1; + SET_CFLG (val & 1); + COPY_CARRY; + val >>= 1; + } + SET_ZFLG (((uae_s32)(val)) == 0); + SET_NFLG (((uae_s32)(val)) < 0); + m68k_dreg(regs, dstreg) = (val); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e090_3(uae_u32 opcode) /* ROXR */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 cnt = srcreg; +{ uae_s32 data = m68k_dreg(regs, dstreg); +{ uae_u32 val = data; + cnt &= 63; + CLEAR_CZNV; +{ cnt--; + { + uae_u32 carry; + uae_u32 hival = (val << 1) | GET_XFLG; + hival <<= (31 - cnt); + val >>= cnt; + carry = val & 1; + val >>= 1; + val |= hival; + SET_XFLG (carry); + val &= 0xffffffff; + } } + SET_CFLG (GET_XFLG); + SET_ZFLG (((uae_s32)(val)) == 0); + SET_NFLG (((uae_s32)(val)) < 0); + m68k_dreg(regs, dstreg) = (val); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e098_3(uae_u32 opcode) /* ROR */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 cnt = srcreg; +{ uae_s32 data = m68k_dreg(regs, dstreg); +{ uae_u32 val = data; + uae_u32 cmask = 0x80000000; + cnt &= 63; + if (!cnt) { CFLG = 0; } else { uae_u32 carry; + for(;cnt;--cnt){ + carry=val&1; val = val >> 1; + if(carry) val |= cmask; + } + SET_CFLG (carry); +} + SET_NFLG ((val & cmask) != 0); SET_ZFLG (val == 0); SET_VFLG (0); + m68k_dreg(regs, dstreg) = (val); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e0a0_3(uae_u32 opcode) /* ASR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s32 cnt = m68k_dreg(regs, srcreg); +{ uae_s32 data = m68k_dreg(regs, dstreg); +{ uae_u32 val = data; + uae_u32 sign = (0x80000000 & val) >> 31; + cnt &= 63; + CLEAR_CZNV; + if (cnt >= 32) { + val = 0xffffffff & (uae_u32)-sign; + SET_CFLG (sign); + COPY_CARRY; + } else if (cnt > 0) { + val >>= cnt - 1; + SET_CFLG (val & 1); + COPY_CARRY; + val >>= 1; + val |= (0xffffffff << (32 - cnt)) & (uae_u32)-sign; + val &= 0xffffffff; + } + SET_ZFLG (((uae_s32)(val)) == 0); + SET_NFLG (((uae_s32)(val)) < 0); + m68k_dreg(regs, dstreg) = (val); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e0a8_3(uae_u32 opcode) /* LSR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s32 cnt = m68k_dreg(regs, srcreg); +{ uae_s32 data = m68k_dreg(regs, dstreg); +{ uae_u32 val = data; + cnt &= 63; + CLEAR_CZNV; + if (cnt >= 32) { + SET_CFLG ((cnt == 32) & (val >> 31)); + COPY_CARRY; + val = 0; + } else if (cnt > 0) { + val >>= cnt - 1; + SET_CFLG (val & 1); + COPY_CARRY; + val >>= 1; + } + SET_ZFLG (((uae_s32)(val)) == 0); + SET_NFLG (((uae_s32)(val)) < 0); + m68k_dreg(regs, dstreg) = (val); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e0b0_3(uae_u32 opcode) /* ROXR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s32 cnt = m68k_dreg(regs, srcreg); +{ uae_s32 data = m68k_dreg(regs, dstreg); +{ uae_u32 val = data; + cnt &= 63; + CLEAR_CZNV; + if (cnt >= 33) cnt -= 33; + if (cnt > 0) { + cnt--; + { + uae_u32 carry; + uae_u32 hival = (val << 1) | GET_XFLG; + hival <<= (31 - cnt); + val >>= cnt; + carry = val & 1; + val >>= 1; + val |= hival; + SET_XFLG (carry); + val &= 0xffffffff; + } } + SET_CFLG (GET_XFLG); + SET_ZFLG (((uae_s32)(val)) == 0); + SET_NFLG (((uae_s32)(val)) < 0); + m68k_dreg(regs, dstreg) = (val); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e0b8_3(uae_u32 opcode) /* ROR */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s32 cnt = m68k_dreg(regs, srcreg); +{ uae_s32 data = m68k_dreg(regs, dstreg); +{ uae_u32 val = data; + uae_u32 cmask = 0x80000000; + cnt &= 63; + if (!cnt) { CFLG = 0; } else { uae_u32 carry; + for(;cnt;--cnt){ + carry=val&1; val = val >> 1; + if(carry) val |= cmask; + } + SET_CFLG (carry); +} + SET_NFLG ((val & cmask) != 0); SET_ZFLG (val == 0); SET_VFLG (0); + m68k_dreg(regs, dstreg) = (val); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e0d0_3(uae_u32 opcode) /* ASRW */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr dataa = m68k_areg(regs, srcreg); +{ uae_s16 data = get_word(dataa); +{ uae_u32 val = (uae_u16)data; + uae_u32 sign = 0x8000 & val; + uae_u32 cflg = val & 1; + val = (val >> 1) | sign; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); + SET_CFLG (cflg); + COPY_CARRY; + put_word(dataa,val); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_e0d8_3(uae_u32 opcode) /* ASRW */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr dataa = m68k_areg(regs, srcreg); +{ uae_s16 data = get_word(dataa); + m68k_areg(regs, srcreg) += 2; +{ uae_u32 val = (uae_u16)data; + uae_u32 sign = 0x8000 & val; + uae_u32 cflg = val & 1; + val = (val >> 1) | sign; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); + SET_CFLG (cflg); + COPY_CARRY; + put_word(dataa,val); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_e0e0_3(uae_u32 opcode) /* ASRW */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr dataa = m68k_areg(regs, srcreg) - 2; +{ uae_s16 data = get_word(dataa); + m68k_areg (regs, srcreg) = dataa; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_u32 val = (uae_u16)data; + uae_u32 sign = 0x8000 & val; + uae_u32 cflg = val & 1; + val = (val >> 1) | sign; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); + SET_CFLG (cflg); + COPY_CARRY; + put_word(dataa,val); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_e0e8_3(uae_u32 opcode) /* ASRW */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr dataa = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 data = get_word(dataa); +{ uae_u32 val = (uae_u16)data; + uae_u32 sign = 0x8000 & val; + uae_u32 cflg = val & 1; + val = (val >> 1) | sign; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); + SET_CFLG (cflg); + COPY_CARRY; + put_word(dataa,val); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_e0f0_3(uae_u32 opcode) /* ASRW */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr dataa = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s16 data = get_word(dataa); +{ uae_u32 val = (uae_u16)data; + uae_u32 sign = 0x8000 & val; + uae_u32 cflg = val & 1; + val = (val >> 1) | sign; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); + SET_CFLG (cflg); + COPY_CARRY; + put_word(dataa,val); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_e0f8_3(uae_u32 opcode) /* ASRW */ +{ +{{ uaecptr dataa = (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 data = get_word(dataa); +{ uae_u32 val = (uae_u16)data; + uae_u32 sign = 0x8000 & val; + uae_u32 cflg = val & 1; + val = (val >> 1) | sign; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); + SET_CFLG (cflg); + COPY_CARRY; + put_word(dataa,val); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_e0f9_3(uae_u32 opcode) /* ASRW */ +{ +{{ uaecptr dataa = get_ilong(2); +{ uae_s16 data = get_word(dataa); +{ uae_u32 val = (uae_u16)data; + uae_u32 sign = 0x8000 & val; + uae_u32 cflg = val & 1; + val = (val >> 1) | sign; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); + SET_CFLG (cflg); + COPY_CARRY; + put_word(dataa,val); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_e100_3(uae_u32 opcode) /* ASL */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 cnt = srcreg; +{ uae_s8 data = m68k_dreg(regs, dstreg); +{ uae_u32 val = (uae_u8)data; + cnt &= 63; + CLEAR_CZNV; + if (cnt >= 8) { + SET_VFLG (val != 0); + SET_CFLG (cnt == 8 ? val & 1 : 0); + COPY_CARRY; + val = 0; + } else { + uae_u32 mask = (0xff << (7 - cnt)) & 0xff; + SET_VFLG ((val & mask) != mask && (val & mask) != 0); + val <<= cnt - 1; + SET_CFLG ((val & 0x80) >> 7); + COPY_CARRY; + val <<= 1; + val &= 0xff; + } + SET_ZFLG (((uae_s8)(val)) == 0); + SET_NFLG (((uae_s8)(val)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((val) & 0xff); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e108_3(uae_u32 opcode) /* LSL */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 cnt = srcreg; +{ uae_s8 data = m68k_dreg(regs, dstreg); +{ uae_u32 val = (uae_u8)data; + cnt &= 63; + CLEAR_CZNV; + if (cnt >= 8) { + SET_CFLG (cnt == 8 ? val & 1 : 0); + COPY_CARRY; + val = 0; + } else { + val <<= (cnt - 1); + SET_CFLG ((val & 0x80) >> 7); + COPY_CARRY; + val <<= 1; + val &= 0xff; + } + SET_ZFLG (((uae_s8)(val)) == 0); + SET_NFLG (((uae_s8)(val)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((val) & 0xff); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e110_3(uae_u32 opcode) /* ROXL */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 cnt = srcreg; +{ uae_s8 data = m68k_dreg(regs, dstreg); +{ uae_u32 val = (uae_u8)data; + cnt &= 63; + CLEAR_CZNV; +{ cnt--; + { + uae_u32 carry; + uae_u32 loval = val >> (7 - cnt); + carry = loval & 1; + val = (((val << 1) | GET_XFLG) << cnt) | (loval >> 1); + SET_XFLG (carry); + val &= 0xff; + } } + SET_CFLG (GET_XFLG); + SET_ZFLG (((uae_s8)(val)) == 0); + SET_NFLG (((uae_s8)(val)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((val) & 0xff); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e118_3(uae_u32 opcode) /* ROL */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 cnt = srcreg; +{ uae_s8 data = m68k_dreg(regs, dstreg); +{ uae_u32 val = (uae_u8)data; + cnt &= 63; + CLEAR_CZNV; +{ uae_u32 loval; + cnt &= 7; + loval = val >> (8 - cnt); + val <<= cnt; + val |= loval; + val &= 0xff; + SET_CFLG (val & 1); +} + SET_ZFLG (((uae_s8)(val)) == 0); + SET_NFLG (((uae_s8)(val)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((val) & 0xff); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e120_3(uae_u32 opcode) /* ASL */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 cnt = m68k_dreg(regs, srcreg); +{ uae_s8 data = m68k_dreg(regs, dstreg); +{ uae_u32 val = (uae_u8)data; + cnt &= 63; + CLEAR_CZNV; + if (cnt >= 8) { + SET_VFLG (val != 0); + SET_CFLG (cnt == 8 ? val & 1 : 0); + COPY_CARRY; + val = 0; + } else if (cnt > 0) { + uae_u32 mask = (0xff << (7 - cnt)) & 0xff; + SET_VFLG ((val & mask) != mask && (val & mask) != 0); + val <<= cnt - 1; + SET_CFLG ((val & 0x80) >> 7); + COPY_CARRY; + val <<= 1; + val &= 0xff; + } + SET_ZFLG (((uae_s8)(val)) == 0); + SET_NFLG (((uae_s8)(val)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((val) & 0xff); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e128_3(uae_u32 opcode) /* LSL */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 cnt = m68k_dreg(regs, srcreg); +{ uae_s8 data = m68k_dreg(regs, dstreg); +{ uae_u32 val = (uae_u8)data; + cnt &= 63; + CLEAR_CZNV; + if (cnt >= 8) { + SET_CFLG (cnt == 8 ? val & 1 : 0); + COPY_CARRY; + val = 0; + } else if (cnt > 0) { + val <<= (cnt - 1); + SET_CFLG ((val & 0x80) >> 7); + COPY_CARRY; + val <<= 1; + val &= 0xff; + } + SET_ZFLG (((uae_s8)(val)) == 0); + SET_NFLG (((uae_s8)(val)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((val) & 0xff); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e130_3(uae_u32 opcode) /* ROXL */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 cnt = m68k_dreg(regs, srcreg); +{ uae_s8 data = m68k_dreg(regs, dstreg); +{ uae_u32 val = (uae_u8)data; + cnt &= 63; + CLEAR_CZNV; + if (cnt >= 36) cnt -= 36; + if (cnt >= 18) cnt -= 18; + if (cnt >= 9) cnt -= 9; + if (cnt > 0) { + cnt--; + { + uae_u32 carry; + uae_u32 loval = val >> (7 - cnt); + carry = loval & 1; + val = (((val << 1) | GET_XFLG) << cnt) | (loval >> 1); + SET_XFLG (carry); + val &= 0xff; + } } + SET_CFLG (GET_XFLG); + SET_ZFLG (((uae_s8)(val)) == 0); + SET_NFLG (((uae_s8)(val)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((val) & 0xff); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e138_3(uae_u32 opcode) /* ROL */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s8 cnt = m68k_dreg(regs, srcreg); +{ uae_s8 data = m68k_dreg(regs, dstreg); +{ uae_u32 val = (uae_u8)data; + cnt &= 63; + CLEAR_CZNV; + if (cnt > 0) { + uae_u32 loval; + cnt &= 7; + loval = val >> (8 - cnt); + val <<= cnt; + val |= loval; + val &= 0xff; + SET_CFLG (val & 1); +} + SET_ZFLG (((uae_s8)(val)) == 0); + SET_NFLG (((uae_s8)(val)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((val) & 0xff); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e140_3(uae_u32 opcode) /* ASL */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 cnt = srcreg; +{ uae_s16 data = m68k_dreg(regs, dstreg); +{ uae_u32 val = (uae_u16)data; + cnt &= 63; + CLEAR_CZNV; + if (cnt >= 16) { + SET_VFLG (val != 0); + SET_CFLG (cnt == 16 ? val & 1 : 0); + COPY_CARRY; + val = 0; + } else { + uae_u32 mask = (0xffff << (15 - cnt)) & 0xffff; + SET_VFLG ((val & mask) != mask && (val & mask) != 0); + val <<= cnt - 1; + SET_CFLG ((val & 0x8000) >> 15); + COPY_CARRY; + val <<= 1; + val &= 0xffff; + } + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((val) & 0xffff); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e148_3(uae_u32 opcode) /* LSL */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 cnt = srcreg; +{ uae_s16 data = m68k_dreg(regs, dstreg); +{ uae_u32 val = (uae_u16)data; + cnt &= 63; + CLEAR_CZNV; + if (cnt >= 16) { + SET_CFLG (cnt == 16 ? val & 1 : 0); + COPY_CARRY; + val = 0; + } else { + val <<= (cnt - 1); + SET_CFLG ((val & 0x8000) >> 15); + COPY_CARRY; + val <<= 1; + val &= 0xffff; + } + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((val) & 0xffff); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e150_3(uae_u32 opcode) /* ROXL */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 cnt = srcreg; +{ uae_s16 data = m68k_dreg(regs, dstreg); +{ uae_u32 val = (uae_u16)data; + cnt &= 63; + CLEAR_CZNV; +{ cnt--; + { + uae_u32 carry; + uae_u32 loval = val >> (15 - cnt); + carry = loval & 1; + val = (((val << 1) | GET_XFLG) << cnt) | (loval >> 1); + SET_XFLG (carry); + val &= 0xffff; + } } + SET_CFLG (GET_XFLG); + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((val) & 0xffff); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e158_3(uae_u32 opcode) /* ROL */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 cnt = srcreg; +{ uae_s16 data = m68k_dreg(regs, dstreg); +{ uae_u32 val = (uae_u16)data; + cnt &= 63; + CLEAR_CZNV; +{ uae_u32 loval; + cnt &= 15; + loval = val >> (16 - cnt); + val <<= cnt; + val |= loval; + val &= 0xffff; + SET_CFLG (val & 1); +} + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((val) & 0xffff); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e160_3(uae_u32 opcode) /* ASL */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s16 cnt = m68k_dreg(regs, srcreg); +{ uae_s16 data = m68k_dreg(regs, dstreg); +{ uae_u32 val = (uae_u16)data; + cnt &= 63; + CLEAR_CZNV; + if (cnt >= 16) { + SET_VFLG (val != 0); + SET_CFLG (cnt == 16 ? val & 1 : 0); + COPY_CARRY; + val = 0; + } else if (cnt > 0) { + uae_u32 mask = (0xffff << (15 - cnt)) & 0xffff; + SET_VFLG ((val & mask) != mask && (val & mask) != 0); + val <<= cnt - 1; + SET_CFLG ((val & 0x8000) >> 15); + COPY_CARRY; + val <<= 1; + val &= 0xffff; + } + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((val) & 0xffff); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e168_3(uae_u32 opcode) /* LSL */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s16 cnt = m68k_dreg(regs, srcreg); +{ uae_s16 data = m68k_dreg(regs, dstreg); +{ uae_u32 val = (uae_u16)data; + cnt &= 63; + CLEAR_CZNV; + if (cnt >= 16) { + SET_CFLG (cnt == 16 ? val & 1 : 0); + COPY_CARRY; + val = 0; + } else if (cnt > 0) { + val <<= (cnt - 1); + SET_CFLG ((val & 0x8000) >> 15); + COPY_CARRY; + val <<= 1; + val &= 0xffff; + } + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((val) & 0xffff); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e170_3(uae_u32 opcode) /* ROXL */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s16 cnt = m68k_dreg(regs, srcreg); +{ uae_s16 data = m68k_dreg(regs, dstreg); +{ uae_u32 val = (uae_u16)data; + cnt &= 63; + CLEAR_CZNV; + if (cnt >= 34) cnt -= 34; + if (cnt >= 17) cnt -= 17; + if (cnt > 0) { + cnt--; + { + uae_u32 carry; + uae_u32 loval = val >> (15 - cnt); + carry = loval & 1; + val = (((val << 1) | GET_XFLG) << cnt) | (loval >> 1); + SET_XFLG (carry); + val &= 0xffff; + } } + SET_CFLG (GET_XFLG); + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((val) & 0xffff); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e178_3(uae_u32 opcode) /* ROL */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s16 cnt = m68k_dreg(regs, srcreg); +{ uae_s16 data = m68k_dreg(regs, dstreg); +{ uae_u32 val = (uae_u16)data; + cnt &= 63; + CLEAR_CZNV; + if (cnt > 0) { + uae_u32 loval; + cnt &= 15; + loval = val >> (16 - cnt); + val <<= cnt; + val |= loval; + val &= 0xffff; + SET_CFLG (val & 1); +} + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); + m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((val) & 0xffff); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e180_3(uae_u32 opcode) /* ASL */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 cnt = srcreg; +{ uae_s32 data = m68k_dreg(regs, dstreg); +{ uae_u32 val = data; + cnt &= 63; + CLEAR_CZNV; + if (cnt >= 32) { + SET_VFLG (val != 0); + SET_CFLG (cnt == 32 ? val & 1 : 0); + COPY_CARRY; + val = 0; + } else { + uae_u32 mask = (0xffffffff << (31 - cnt)) & 0xffffffff; + SET_VFLG ((val & mask) != mask && (val & mask) != 0); + val <<= cnt - 1; + SET_CFLG ((val & 0x80000000) >> 31); + COPY_CARRY; + val <<= 1; + val &= 0xffffffff; + } + SET_ZFLG (((uae_s32)(val)) == 0); + SET_NFLG (((uae_s32)(val)) < 0); + m68k_dreg(regs, dstreg) = (val); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e188_3(uae_u32 opcode) /* LSL */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 cnt = srcreg; +{ uae_s32 data = m68k_dreg(regs, dstreg); +{ uae_u32 val = data; + cnt &= 63; + CLEAR_CZNV; + if (cnt >= 32) { + SET_CFLG (cnt == 32 ? val & 1 : 0); + COPY_CARRY; + val = 0; + } else { + val <<= (cnt - 1); + SET_CFLG ((val & 0x80000000) >> 31); + COPY_CARRY; + val <<= 1; + val &= 0xffffffff; + } + SET_ZFLG (((uae_s32)(val)) == 0); + SET_NFLG (((uae_s32)(val)) < 0); + m68k_dreg(regs, dstreg) = (val); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e190_3(uae_u32 opcode) /* ROXL */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 cnt = srcreg; +{ uae_s32 data = m68k_dreg(regs, dstreg); +{ uae_u32 val = data; + cnt &= 63; + CLEAR_CZNV; +{ cnt--; + { + uae_u32 carry; + uae_u32 loval = val >> (31 - cnt); + carry = loval & 1; + val = (((val << 1) | GET_XFLG) << cnt) | (loval >> 1); + SET_XFLG (carry); + val &= 0xffffffff; + } } + SET_CFLG (GET_XFLG); + SET_ZFLG (((uae_s32)(val)) == 0); + SET_NFLG (((uae_s32)(val)) < 0); + m68k_dreg(regs, dstreg) = (val); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e198_3(uae_u32 opcode) /* ROL */ +{ + uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)]; + uae_u32 dstreg = opcode & 7; +{{ uae_u32 cnt = srcreg; +{ uae_s32 data = m68k_dreg(regs, dstreg); +{ uae_u32 val = data; + cnt &= 63; + CLEAR_CZNV; +{ uae_u32 loval; + cnt &= 31; + loval = val >> (32 - cnt); + val <<= cnt; + val |= loval; + val &= 0xffffffff; + SET_CFLG (val & 1); +} + SET_ZFLG (((uae_s32)(val)) == 0); + SET_NFLG (((uae_s32)(val)) < 0); + m68k_dreg(regs, dstreg) = (val); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e1a0_3(uae_u32 opcode) /* ASL */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s32 cnt = m68k_dreg(regs, srcreg); +{ uae_s32 data = m68k_dreg(regs, dstreg); +{ uae_u32 val = data; + cnt &= 63; + CLEAR_CZNV; + if (cnt >= 32) { + SET_VFLG (val != 0); + SET_CFLG (cnt == 32 ? val & 1 : 0); + COPY_CARRY; + val = 0; + } else if (cnt > 0) { + uae_u32 mask = (0xffffffff << (31 - cnt)) & 0xffffffff; + SET_VFLG ((val & mask) != mask && (val & mask) != 0); + val <<= cnt - 1; + SET_CFLG ((val & 0x80000000) >> 31); + COPY_CARRY; + val <<= 1; + val &= 0xffffffff; + } + SET_ZFLG (((uae_s32)(val)) == 0); + SET_NFLG (((uae_s32)(val)) < 0); + m68k_dreg(regs, dstreg) = (val); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e1a8_3(uae_u32 opcode) /* LSL */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s32 cnt = m68k_dreg(regs, srcreg); +{ uae_s32 data = m68k_dreg(regs, dstreg); +{ uae_u32 val = data; + cnt &= 63; + CLEAR_CZNV; + if (cnt >= 32) { + SET_CFLG (cnt == 32 ? val & 1 : 0); + COPY_CARRY; + val = 0; + } else if (cnt > 0) { + val <<= (cnt - 1); + SET_CFLG ((val & 0x80000000) >> 31); + COPY_CARRY; + val <<= 1; + val &= 0xffffffff; + } + SET_ZFLG (((uae_s32)(val)) == 0); + SET_NFLG (((uae_s32)(val)) < 0); + m68k_dreg(regs, dstreg) = (val); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e1b0_3(uae_u32 opcode) /* ROXL */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s32 cnt = m68k_dreg(regs, srcreg); +{ uae_s32 data = m68k_dreg(regs, dstreg); +{ uae_u32 val = data; + cnt &= 63; + CLEAR_CZNV; + if (cnt >= 33) cnt -= 33; + if (cnt > 0) { + cnt--; + { + uae_u32 carry; + uae_u32 loval = val >> (31 - cnt); + carry = loval & 1; + val = (((val << 1) | GET_XFLG) << cnt) | (loval >> 1); + SET_XFLG (carry); + val &= 0xffffffff; + } } + SET_CFLG (GET_XFLG); + SET_ZFLG (((uae_s32)(val)) == 0); + SET_NFLG (((uae_s32)(val)) < 0); + m68k_dreg(regs, dstreg) = (val); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e1b8_3(uae_u32 opcode) /* ROL */ +{ + uae_u32 srcreg = ((opcode >> 9) & 7); + uae_u32 dstreg = opcode & 7; +{{ uae_s32 cnt = m68k_dreg(regs, srcreg); +{ uae_s32 data = m68k_dreg(regs, dstreg); +{ uae_u32 val = data; + cnt &= 63; + CLEAR_CZNV; + if (cnt > 0) { + uae_u32 loval; + cnt &= 31; + loval = val >> (32 - cnt); + val <<= cnt; + val |= loval; + val &= 0xffffffff; + SET_CFLG (val & 1); +} + SET_ZFLG (((uae_s32)(val)) == 0); + SET_NFLG (((uae_s32)(val)) < 0); + m68k_dreg(regs, dstreg) = (val); +#if HAS_PROFILING + if (gProfilingEnabled) + ProfileIncrementClock(2*cnt); +#endif +}}}}m68k_incpc(2); +return 2; +} +unsigned long REGPARAM2 op_e1d0_3(uae_u32 opcode) /* ASLW */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr dataa = m68k_areg(regs, srcreg); +{ uae_s16 data = get_word(dataa); +{ uae_u32 val = (uae_u16)data; + uae_u32 sign = 0x8000 & val; + uae_u32 sign2; + val <<= 1; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); + sign2 = 0x8000 & val; + SET_CFLG (sign != 0); + COPY_CARRY; + SET_VFLG (GET_VFLG | (sign2 != sign)); + put_word(dataa,val); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_e1d8_3(uae_u32 opcode) /* ASLW */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr dataa = m68k_areg(regs, srcreg); +{ uae_s16 data = get_word(dataa); + m68k_areg(regs, srcreg) += 2; +{ uae_u32 val = (uae_u16)data; + uae_u32 sign = 0x8000 & val; + uae_u32 sign2; + val <<= 1; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); + sign2 = 0x8000 & val; + SET_CFLG (sign != 0); + COPY_CARRY; + SET_VFLG (GET_VFLG | (sign2 != sign)); + put_word(dataa,val); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_e1e0_3(uae_u32 opcode) /* ASLW */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr dataa = m68k_areg(regs, srcreg) - 2; +{ uae_s16 data = get_word(dataa); + m68k_areg (regs, srcreg) = dataa; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_u32 val = (uae_u16)data; + uae_u32 sign = 0x8000 & val; + uae_u32 sign2; + val <<= 1; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); + sign2 = 0x8000 & val; + SET_CFLG (sign != 0); + COPY_CARRY; + SET_VFLG (GET_VFLG | (sign2 != sign)); + put_word(dataa,val); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_e1e8_3(uae_u32 opcode) /* ASLW */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr dataa = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 data = get_word(dataa); +{ uae_u32 val = (uae_u16)data; + uae_u32 sign = 0x8000 & val; + uae_u32 sign2; + val <<= 1; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); + sign2 = 0x8000 & val; + SET_CFLG (sign != 0); + COPY_CARRY; + SET_VFLG (GET_VFLG | (sign2 != sign)); + put_word(dataa,val); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_e1f0_3(uae_u32 opcode) /* ASLW */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr dataa = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s16 data = get_word(dataa); +{ uae_u32 val = (uae_u16)data; + uae_u32 sign = 0x8000 & val; + uae_u32 sign2; + val <<= 1; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); + sign2 = 0x8000 & val; + SET_CFLG (sign != 0); + COPY_CARRY; + SET_VFLG (GET_VFLG | (sign2 != sign)); + put_word(dataa,val); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_e1f8_3(uae_u32 opcode) /* ASLW */ +{ +{{ uaecptr dataa = (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 data = get_word(dataa); +{ uae_u32 val = (uae_u16)data; + uae_u32 sign = 0x8000 & val; + uae_u32 sign2; + val <<= 1; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); + sign2 = 0x8000 & val; + SET_CFLG (sign != 0); + COPY_CARRY; + SET_VFLG (GET_VFLG | (sign2 != sign)); + put_word(dataa,val); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_e1f9_3(uae_u32 opcode) /* ASLW */ +{ +{{ uaecptr dataa = get_ilong(2); +{ uae_s16 data = get_word(dataa); +{ uae_u32 val = (uae_u16)data; + uae_u32 sign = 0x8000 & val; + uae_u32 sign2; + val <<= 1; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); + sign2 = 0x8000 & val; + SET_CFLG (sign != 0); + COPY_CARRY; + SET_VFLG (GET_VFLG | (sign2 != sign)); + put_word(dataa,val); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_e2d0_3(uae_u32 opcode) /* LSRW */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr dataa = m68k_areg(regs, srcreg); +{ uae_s16 data = get_word(dataa); +{ uae_u32 val = (uae_u16)data; + uae_u32 carry = val & 1; + val >>= 1; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); +SET_CFLG (carry); + COPY_CARRY; + put_word(dataa,val); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_e2d8_3(uae_u32 opcode) /* LSRW */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr dataa = m68k_areg(regs, srcreg); +{ uae_s16 data = get_word(dataa); + m68k_areg(regs, srcreg) += 2; +{ uae_u32 val = (uae_u16)data; + uae_u32 carry = val & 1; + val >>= 1; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); +SET_CFLG (carry); + COPY_CARRY; + put_word(dataa,val); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_e2e0_3(uae_u32 opcode) /* LSRW */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr dataa = m68k_areg(regs, srcreg) - 2; +{ uae_s16 data = get_word(dataa); + m68k_areg (regs, srcreg) = dataa; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_u32 val = (uae_u16)data; + uae_u32 carry = val & 1; + val >>= 1; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); +SET_CFLG (carry); + COPY_CARRY; + put_word(dataa,val); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_e2e8_3(uae_u32 opcode) /* LSRW */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr dataa = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 data = get_word(dataa); +{ uae_u32 val = (uae_u16)data; + uae_u32 carry = val & 1; + val >>= 1; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); +SET_CFLG (carry); + COPY_CARRY; + put_word(dataa,val); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_e2f0_3(uae_u32 opcode) /* LSRW */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr dataa = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s16 data = get_word(dataa); +{ uae_u32 val = (uae_u16)data; + uae_u32 carry = val & 1; + val >>= 1; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); +SET_CFLG (carry); + COPY_CARRY; + put_word(dataa,val); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_e2f8_3(uae_u32 opcode) /* LSRW */ +{ +{{ uaecptr dataa = (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 data = get_word(dataa); +{ uae_u32 val = (uae_u16)data; + uae_u32 carry = val & 1; + val >>= 1; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); +SET_CFLG (carry); + COPY_CARRY; + put_word(dataa,val); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_e2f9_3(uae_u32 opcode) /* LSRW */ +{ +{{ uaecptr dataa = get_ilong(2); +{ uae_s16 data = get_word(dataa); +{ uae_u32 val = (uae_u16)data; + uae_u32 carry = val & 1; + val >>= 1; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); +SET_CFLG (carry); + COPY_CARRY; + put_word(dataa,val); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_e3d0_3(uae_u32 opcode) /* LSLW */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr dataa = m68k_areg(regs, srcreg); +{ uae_s16 data = get_word(dataa); +{ uae_u16 val = data; + uae_u32 carry = val & 0x8000; + val <<= 1; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); +SET_CFLG (carry >> 15); + COPY_CARRY; + put_word(dataa,val); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_e3d8_3(uae_u32 opcode) /* LSLW */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr dataa = m68k_areg(regs, srcreg); +{ uae_s16 data = get_word(dataa); + m68k_areg(regs, srcreg) += 2; +{ uae_u16 val = data; + uae_u32 carry = val & 0x8000; + val <<= 1; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); +SET_CFLG (carry >> 15); + COPY_CARRY; + put_word(dataa,val); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_e3e0_3(uae_u32 opcode) /* LSLW */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr dataa = m68k_areg(regs, srcreg) - 2; +{ uae_s16 data = get_word(dataa); + m68k_areg (regs, srcreg) = dataa; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_u16 val = data; + uae_u32 carry = val & 0x8000; + val <<= 1; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); +SET_CFLG (carry >> 15); + COPY_CARRY; + put_word(dataa,val); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_e3e8_3(uae_u32 opcode) /* LSLW */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr dataa = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 data = get_word(dataa); +{ uae_u16 val = data; + uae_u32 carry = val & 0x8000; + val <<= 1; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); +SET_CFLG (carry >> 15); + COPY_CARRY; + put_word(dataa,val); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_e3f0_3(uae_u32 opcode) /* LSLW */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr dataa = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s16 data = get_word(dataa); +{ uae_u16 val = data; + uae_u32 carry = val & 0x8000; + val <<= 1; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); +SET_CFLG (carry >> 15); + COPY_CARRY; + put_word(dataa,val); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_e3f8_3(uae_u32 opcode) /* LSLW */ +{ +{{ uaecptr dataa = (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 data = get_word(dataa); +{ uae_u16 val = data; + uae_u32 carry = val & 0x8000; + val <<= 1; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); +SET_CFLG (carry >> 15); + COPY_CARRY; + put_word(dataa,val); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_e3f9_3(uae_u32 opcode) /* LSLW */ +{ +{{ uaecptr dataa = get_ilong(2); +{ uae_s16 data = get_word(dataa); +{ uae_u16 val = data; + uae_u32 carry = val & 0x8000; + val <<= 1; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); +SET_CFLG (carry >> 15); + COPY_CARRY; + put_word(dataa,val); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_e4d0_3(uae_u32 opcode) /* ROXRW */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr dataa = m68k_areg(regs, srcreg); +{ uae_s16 data = get_word(dataa); +{ uae_u16 val = data; + uae_u32 carry = val & 1; + val >>= 1; + if (GET_XFLG) val |= 0x8000; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); +SET_CFLG (carry); + COPY_CARRY; + put_word(dataa,val); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_e4d8_3(uae_u32 opcode) /* ROXRW */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr dataa = m68k_areg(regs, srcreg); +{ uae_s16 data = get_word(dataa); + m68k_areg(regs, srcreg) += 2; +{ uae_u16 val = data; + uae_u32 carry = val & 1; + val >>= 1; + if (GET_XFLG) val |= 0x8000; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); +SET_CFLG (carry); + COPY_CARRY; + put_word(dataa,val); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_e4e0_3(uae_u32 opcode) /* ROXRW */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr dataa = m68k_areg(regs, srcreg) - 2; +{ uae_s16 data = get_word(dataa); + m68k_areg (regs, srcreg) = dataa; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_u16 val = data; + uae_u32 carry = val & 1; + val >>= 1; + if (GET_XFLG) val |= 0x8000; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); +SET_CFLG (carry); + COPY_CARRY; + put_word(dataa,val); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_e4e8_3(uae_u32 opcode) /* ROXRW */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr dataa = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 data = get_word(dataa); +{ uae_u16 val = data; + uae_u32 carry = val & 1; + val >>= 1; + if (GET_XFLG) val |= 0x8000; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); +SET_CFLG (carry); + COPY_CARRY; + put_word(dataa,val); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_e4f0_3(uae_u32 opcode) /* ROXRW */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr dataa = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s16 data = get_word(dataa); +{ uae_u16 val = data; + uae_u32 carry = val & 1; + val >>= 1; + if (GET_XFLG) val |= 0x8000; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); +SET_CFLG (carry); + COPY_CARRY; + put_word(dataa,val); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_e4f8_3(uae_u32 opcode) /* ROXRW */ +{ +{{ uaecptr dataa = (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 data = get_word(dataa); +{ uae_u16 val = data; + uae_u32 carry = val & 1; + val >>= 1; + if (GET_XFLG) val |= 0x8000; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); +SET_CFLG (carry); + COPY_CARRY; + put_word(dataa,val); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_e4f9_3(uae_u32 opcode) /* ROXRW */ +{ +{{ uaecptr dataa = get_ilong(2); +{ uae_s16 data = get_word(dataa); +{ uae_u16 val = data; + uae_u32 carry = val & 1; + val >>= 1; + if (GET_XFLG) val |= 0x8000; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); +SET_CFLG (carry); + COPY_CARRY; + put_word(dataa,val); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_e5d0_3(uae_u32 opcode) /* ROXLW */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr dataa = m68k_areg(regs, srcreg); +{ uae_s16 data = get_word(dataa); +{ uae_u16 val = data; + uae_u32 carry = val & 0x8000; + val <<= 1; + if (GET_XFLG) val |= 1; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); +SET_CFLG (carry >> 15); + COPY_CARRY; + put_word(dataa,val); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_e5d8_3(uae_u32 opcode) /* ROXLW */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr dataa = m68k_areg(regs, srcreg); +{ uae_s16 data = get_word(dataa); + m68k_areg(regs, srcreg) += 2; +{ uae_u16 val = data; + uae_u32 carry = val & 0x8000; + val <<= 1; + if (GET_XFLG) val |= 1; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); +SET_CFLG (carry >> 15); + COPY_CARRY; + put_word(dataa,val); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_e5e0_3(uae_u32 opcode) /* ROXLW */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr dataa = m68k_areg(regs, srcreg) - 2; +{ uae_s16 data = get_word(dataa); + m68k_areg (regs, srcreg) = dataa; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_u16 val = data; + uae_u32 carry = val & 0x8000; + val <<= 1; + if (GET_XFLG) val |= 1; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); +SET_CFLG (carry >> 15); + COPY_CARRY; + put_word(dataa,val); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_e5e8_3(uae_u32 opcode) /* ROXLW */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr dataa = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 data = get_word(dataa); +{ uae_u16 val = data; + uae_u32 carry = val & 0x8000; + val <<= 1; + if (GET_XFLG) val |= 1; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); +SET_CFLG (carry >> 15); + COPY_CARRY; + put_word(dataa,val); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_e5f0_3(uae_u32 opcode) /* ROXLW */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr dataa = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s16 data = get_word(dataa); +{ uae_u16 val = data; + uae_u32 carry = val & 0x8000; + val <<= 1; + if (GET_XFLG) val |= 1; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); +SET_CFLG (carry >> 15); + COPY_CARRY; + put_word(dataa,val); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_e5f8_3(uae_u32 opcode) /* ROXLW */ +{ +{{ uaecptr dataa = (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 data = get_word(dataa); +{ uae_u16 val = data; + uae_u32 carry = val & 0x8000; + val <<= 1; + if (GET_XFLG) val |= 1; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); +SET_CFLG (carry >> 15); + COPY_CARRY; + put_word(dataa,val); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_e5f9_3(uae_u32 opcode) /* ROXLW */ +{ +{{ uaecptr dataa = get_ilong(2); +{ uae_s16 data = get_word(dataa); +{ uae_u16 val = data; + uae_u32 carry = val & 0x8000; + val <<= 1; + if (GET_XFLG) val |= 1; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); +SET_CFLG (carry >> 15); + COPY_CARRY; + put_word(dataa,val); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_e6d0_3(uae_u32 opcode) /* RORW */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr dataa = m68k_areg(regs, srcreg); +{ uae_s16 data = get_word(dataa); +{ uae_u16 val = data; + uae_u32 carry = val & 1; + val >>= 1; + if (carry) val |= 0x8000; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); +SET_CFLG (carry); + put_word(dataa,val); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_e6d8_3(uae_u32 opcode) /* RORW */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr dataa = m68k_areg(regs, srcreg); +{ uae_s16 data = get_word(dataa); + m68k_areg(regs, srcreg) += 2; +{ uae_u16 val = data; + uae_u32 carry = val & 1; + val >>= 1; + if (carry) val |= 0x8000; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); +SET_CFLG (carry); + put_word(dataa,val); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_e6e0_3(uae_u32 opcode) /* RORW */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr dataa = m68k_areg(regs, srcreg) - 2; +{ uae_s16 data = get_word(dataa); + m68k_areg (regs, srcreg) = dataa; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_u16 val = data; + uae_u32 carry = val & 1; + val >>= 1; + if (carry) val |= 0x8000; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); +SET_CFLG (carry); + put_word(dataa,val); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_e6e8_3(uae_u32 opcode) /* RORW */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr dataa = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 data = get_word(dataa); +{ uae_u16 val = data; + uae_u32 carry = val & 1; + val >>= 1; + if (carry) val |= 0x8000; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); +SET_CFLG (carry); + put_word(dataa,val); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_e6f0_3(uae_u32 opcode) /* RORW */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr dataa = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s16 data = get_word(dataa); +{ uae_u16 val = data; + uae_u32 carry = val & 1; + val >>= 1; + if (carry) val |= 0x8000; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); +SET_CFLG (carry); + put_word(dataa,val); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_e6f8_3(uae_u32 opcode) /* RORW */ +{ +{{ uaecptr dataa = (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 data = get_word(dataa); +{ uae_u16 val = data; + uae_u32 carry = val & 1; + val >>= 1; + if (carry) val |= 0x8000; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); +SET_CFLG (carry); + put_word(dataa,val); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_e6f9_3(uae_u32 opcode) /* RORW */ +{ +{{ uaecptr dataa = get_ilong(2); +{ uae_s16 data = get_word(dataa); +{ uae_u16 val = data; + uae_u32 carry = val & 1; + val >>= 1; + if (carry) val |= 0x8000; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); +SET_CFLG (carry); + put_word(dataa,val); +}}}}m68k_incpc(6); +return 10; +} +unsigned long REGPARAM2 op_e7d0_3(uae_u32 opcode) /* ROLW */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr dataa = m68k_areg(regs, srcreg); +{ uae_s16 data = get_word(dataa); +{ uae_u16 val = data; + uae_u32 carry = val & 0x8000; + val <<= 1; + if (carry) val |= 1; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); +SET_CFLG (carry >> 15); + put_word(dataa,val); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_e7d8_3(uae_u32 opcode) /* ROLW */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr dataa = m68k_areg(regs, srcreg); +{ uae_s16 data = get_word(dataa); + m68k_areg(regs, srcreg) += 2; +{ uae_u16 val = data; + uae_u32 carry = val & 0x8000; + val <<= 1; + if (carry) val |= 1; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); +SET_CFLG (carry >> 15); + put_word(dataa,val); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_e7e0_3(uae_u32 opcode) /* ROLW */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr dataa = m68k_areg(regs, srcreg) - 2; +{ uae_s16 data = get_word(dataa); + m68k_areg (regs, srcreg) = dataa; + if (srcreg == 7) CHECK_STACK_POINTER_DECREMENT (); +{ uae_u16 val = data; + uae_u32 carry = val & 0x8000; + val <<= 1; + if (carry) val |= 1; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); +SET_CFLG (carry >> 15); + put_word(dataa,val); +}}}}m68k_incpc(2); +return 6; +} +unsigned long REGPARAM2 op_e7e8_3(uae_u32 opcode) /* ROLW */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr dataa = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 data = get_word(dataa); +{ uae_u16 val = data; + uae_u32 carry = val & 0x8000; + val <<= 1; + if (carry) val |= 1; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); +SET_CFLG (carry >> 15); + put_word(dataa,val); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_e7f0_3(uae_u32 opcode) /* ROLW */ +{ + uae_u32 srcreg = (opcode & 7); +{{ uaecptr dataa = get_disp_ea_000(m68k_areg(regs, srcreg), get_iword(2)); +{ uae_s16 data = get_word(dataa); +{ uae_u16 val = data; + uae_u32 carry = val & 0x8000; + val <<= 1; + if (carry) val |= 1; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); +SET_CFLG (carry >> 15); + put_word(dataa,val); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_e7f8_3(uae_u32 opcode) /* ROLW */ +{ +{{ uaecptr dataa = (uae_s32)(uae_s16)get_iword(2); +{ uae_s16 data = get_word(dataa); +{ uae_u16 val = data; + uae_u32 carry = val & 0x8000; + val <<= 1; + if (carry) val |= 1; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); +SET_CFLG (carry >> 15); + put_word(dataa,val); +}}}}m68k_incpc(4); +return 8; +} +unsigned long REGPARAM2 op_e7f9_3(uae_u32 opcode) /* ROLW */ +{ +{{ uaecptr dataa = get_ilong(2); +{ uae_s16 data = get_word(dataa); +{ uae_u16 val = data; + uae_u32 carry = val & 0x8000; + val <<= 1; + if (carry) val |= 1; + CLEAR_CZNV; + SET_ZFLG (((uae_s16)(val)) == 0); + SET_NFLG (((uae_s16)(val)) < 0); +SET_CFLG (carry >> 15); + put_word(dataa,val); +}}}}m68k_incpc(6); +return 10; +} +#endif + diff --git a/SrcShared/UAE/cpuemu1.c b/SrcShared/UAE/cpuemu1.c new file mode 100644 index 0000000..bf64d54 --- /dev/null +++ b/SrcShared/UAE/cpuemu1.c @@ -0,0 +1,53 @@ +/********************************************************************* + * + * Copyright (c) 1998 + * 3Com/Palm Computing Division. All rights reserved. + * + * Portions copyright (c) 1995-1998 + * Bernd Schmidt. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgement: + * + * This product includes software developed by 3Com and its + * contributors. + * + * 4. Neither 3Com nor the names of its contributors may be used to + * endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE 3COM AND CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 3COM OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + *******************************************************************/ + +// CodeWarrior Pro 3 can compile the full cpuemu.c file OK, but has +// occassional memory problems linking it. Sometimes it links OK, but +// sometimes it puts up the generic "Link failed" message. So we break +// up cpuemu.c to heap it out a little. + +#define PART_1 1 + +#include "cpuemu.c" diff --git a/SrcShared/UAE/cpuemu2.c b/SrcShared/UAE/cpuemu2.c new file mode 100644 index 0000000..ebe9c5e --- /dev/null +++ b/SrcShared/UAE/cpuemu2.c @@ -0,0 +1,53 @@ +/********************************************************************* + * + * Copyright (c) 1998 + * 3Com/Palm Computing Division. All rights reserved. + * + * Portions copyright (c) 1995-1998 + * Bernd Schmidt. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgement: + * + * This product includes software developed by 3Com and its + * contributors. + * + * 4. Neither 3Com nor the names of its contributors may be used to + * endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE 3COM AND CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 3COM OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + *******************************************************************/ + +// CodeWarrior Pro 3 can compile the full cpuemu.c file OK, but has +// occassional memory problems linking it. Sometimes it links OK, but +// sometimes it puts up the generic "Link failed" message. So we break +// up cpuemu.c to heap it out a little. + +#define PART_2 1 + +#include "cpuemu.c" diff --git a/SrcShared/UAE/cpuemu3.c b/SrcShared/UAE/cpuemu3.c new file mode 100644 index 0000000..f38fc67 --- /dev/null +++ b/SrcShared/UAE/cpuemu3.c @@ -0,0 +1,53 @@ +/********************************************************************* + * + * Copyright (c) 1998 + * 3Com/Palm Computing Division. All rights reserved. + * + * Portions copyright (c) 1995-1998 + * Bernd Schmidt. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgement: + * + * This product includes software developed by 3Com and its + * contributors. + * + * 4. Neither 3Com nor the names of its contributors may be used to + * endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE 3COM AND CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 3COM OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + *******************************************************************/ + +// CodeWarrior Pro 3 can compile the full cpuemu.c file OK, but has +// occassional memory problems linking it. Sometimes it links OK, but +// sometimes it puts up the generic "Link failed" message. So we break +// up cpuemu.c to heap it out a little. + +#define PART_3 1 + +#include "cpuemu.c" diff --git a/SrcShared/UAE/cpuemu4.c b/SrcShared/UAE/cpuemu4.c new file mode 100644 index 0000000..34784e0 --- /dev/null +++ b/SrcShared/UAE/cpuemu4.c @@ -0,0 +1,53 @@ +/********************************************************************* + * + * Copyright (c) 1998 + * 3Com/Palm Computing Division. All rights reserved. + * + * Portions copyright (c) 1995-1998 + * Bernd Schmidt. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgement: + * + * This product includes software developed by 3Com and its + * contributors. + * + * 4. Neither 3Com nor the names of its contributors may be used to + * endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE 3COM AND CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 3COM OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + *******************************************************************/ + +// CodeWarrior Pro 3 can compile the full cpuemu.c file OK, but has +// occassional memory problems linking it. Sometimes it links OK, but +// sometimes it puts up the generic "Link failed" message. So we break +// up cpuemu.c to heap it out a little. + +#define PART_4 1 + +#include "cpuemu.c" diff --git a/SrcShared/UAE/cpuemu5.c b/SrcShared/UAE/cpuemu5.c new file mode 100644 index 0000000..33e7a0b --- /dev/null +++ b/SrcShared/UAE/cpuemu5.c @@ -0,0 +1,53 @@ +/********************************************************************* + * + * Copyright (c) 1998 + * 3Com/Palm Computing Division. All rights reserved. + * + * Portions copyright (c) 1995-1998 + * Bernd Schmidt. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgement: + * + * This product includes software developed by 3Com and its + * contributors. + * + * 4. Neither 3Com nor the names of its contributors may be used to + * endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE 3COM AND CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 3COM OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + *******************************************************************/ + +// CodeWarrior Pro 3 can compile the full cpuemu.c file OK, but has +// occassional memory problems linking it. Sometimes it links OK, but +// sometimes it puts up the generic "Link failed" message. So we break +// up cpuemu.c to heap it out a little. + +#define PART_5 1 + +#include "cpuemu.c" diff --git a/SrcShared/UAE/cpuemu6.c b/SrcShared/UAE/cpuemu6.c new file mode 100644 index 0000000..d25d4bc --- /dev/null +++ b/SrcShared/UAE/cpuemu6.c @@ -0,0 +1,53 @@ +/********************************************************************* + * + * Copyright (c) 1998 + * 3Com/Palm Computing Division. All rights reserved. + * + * Portions copyright (c) 1995-1998 + * Bernd Schmidt. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgement: + * + * This product includes software developed by 3Com and its + * contributors. + * + * 4. Neither 3Com nor the names of its contributors may be used to + * endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE 3COM AND CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 3COM OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + *******************************************************************/ + +// CodeWarrior Pro 3 can compile the full cpuemu.c file OK, but has +// occassional memory problems linking it. Sometimes it links OK, but +// sometimes it puts up the generic "Link failed" message. So we break +// up cpuemu.c to heap it out a little. + +#define PART_6 1 + +#include "cpuemu.c" diff --git a/SrcShared/UAE/cpuemu7.c b/SrcShared/UAE/cpuemu7.c new file mode 100644 index 0000000..c8aa72f --- /dev/null +++ b/SrcShared/UAE/cpuemu7.c @@ -0,0 +1,53 @@ +/********************************************************************* + * + * Copyright (c) 1998 + * 3Com/Palm Computing Division. All rights reserved. + * + * Portions copyright (c) 1995-1998 + * Bernd Schmidt. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgement: + * + * This product includes software developed by 3Com and its + * contributors. + * + * 4. Neither 3Com nor the names of its contributors may be used to + * endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE 3COM AND CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 3COM OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + *******************************************************************/ + +// CodeWarrior Pro 3 can compile the full cpuemu.c file OK, but has +// occassional memory problems linking it. Sometimes it links OK, but +// sometimes it puts up the generic "Link failed" message. So we break +// up cpuemu.c to heap it out a little. + +#define PART_7 1 + +#include "cpuemu.c" diff --git a/SrcShared/UAE/cpuemu8.c b/SrcShared/UAE/cpuemu8.c new file mode 100644 index 0000000..e75f26e --- /dev/null +++ b/SrcShared/UAE/cpuemu8.c @@ -0,0 +1,53 @@ +/********************************************************************* + * + * Copyright (c) 1998 + * 3Com/Palm Computing Division. All rights reserved. + * + * Portions copyright (c) 1995-1998 + * Bernd Schmidt. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgement: + * + * This product includes software developed by 3Com and its + * contributors. + * + * 4. Neither 3Com nor the names of its contributors may be used to + * endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE 3COM AND CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 3COM OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + *******************************************************************/ + +// CodeWarrior Pro 3 can compile the full cpuemu.c file OK, but has +// occassional memory problems linking it. Sometimes it links OK, but +// sometimes it puts up the generic "Link failed" message. So we break +// up cpuemu.c to heap it out a little. + +#define PART_8 1 + +#include "cpuemu.c" diff --git a/SrcShared/UAE/cpustbl.c b/SrcShared/UAE/cpustbl.c new file mode 100644 index 0000000..154cf36 --- /dev/null +++ b/SrcShared/UAE/cpustbl.c @@ -0,0 +1,1590 @@ +#include "UAE.h" +#if HAS_PROFILING +#include "Profiling.h" +#endif +struct cputbl op_smalltbl_3[] = { +{ op_0_3, 0, 0, 0, 2, 0 }, /* OR */ +{ op_10_3, 0, 16, 0, 3, 1 }, /* OR */ +{ op_18_3, 0, 24, 0, 3, 1 }, /* OR */ +{ op_20_3, 0, 32, 2, 3, 1 }, /* OR */ +{ op_28_3, 0, 40, 0, 4, 1 }, /* OR */ +{ op_30_3, 0, 48, 2, 4, 1 }, /* OR */ +{ op_38_3, 0, 56, 0, 4, 1 }, /* OR */ +{ op_39_3, 0, 57, 0, 5, 1 }, /* OR */ +{ op_3c_3, 0, 60, 8, 4, 0 }, /* ORSR */ +{ op_40_3, 0, 64, 0, 2, 0 }, /* OR */ +{ op_50_3, 0, 80, 0, 3, 1 }, /* OR */ +{ op_58_3, 0, 88, 0, 3, 1 }, /* OR */ +{ op_60_3, 0, 96, 2, 3, 1 }, /* OR */ +{ op_68_3, 0, 104, 0, 4, 1 }, /* OR */ +{ op_70_3, 0, 112, 2, 4, 1 }, /* OR */ +{ op_78_3, 0, 120, 0, 4, 1 }, /* OR */ +{ op_79_3, 0, 121, 0, 5, 1 }, /* OR */ +{ op_7c_3, 0, 124, 8, 4, 0 }, /* ORSR */ +{ op_80_3, 0, 128, 2, 3, 0 }, /* OR */ +{ op_90_3, 0, 144, 0, 5, 2 }, /* OR */ +{ op_98_3, 0, 152, 0, 5, 2 }, /* OR */ +{ op_a0_3, 0, 160, 2, 5, 2 }, /* OR */ +{ op_a8_3, 0, 168, 0, 6, 2 }, /* OR */ +{ op_b0_3, 0, 176, 2, 6, 2 }, /* OR */ +{ op_b8_3, 0, 184, 0, 6, 2 }, /* OR */ +{ op_b9_3, 0, 185, 0, 7, 2 }, /* OR */ +{ op_100_3, 0, 256, 2, 1, 0 }, /* BTST */ +{ op_108_3, 0, 264, 0, 4, 0 }, /* MVPMR */ +{ op_110_3, 0, 272, 0, 2, 0 }, /* BTST */ +{ op_118_3, 0, 280, 0, 2, 0 }, /* BTST */ +{ op_120_3, 0, 288, 2, 2, 0 }, /* BTST */ +{ op_128_3, 0, 296, 0, 3, 0 }, /* BTST */ +{ op_130_3, 0, 304, 2, 3, 0 }, /* BTST */ +{ op_138_3, 0, 312, 0, 3, 0 }, /* BTST */ +{ op_139_3, 0, 313, 0, 4, 0 }, /* BTST */ +{ op_13a_3, 0, 314, 0, 3, 0 }, /* BTST */ +{ op_13b_3, 0, 315, 2, 3, 0 }, /* BTST */ +{ op_13c_3, 0, 316, 0, 2, 0 }, /* BTST */ +{ op_140_3, 0, 320, 4, 1, 0 }, /* BCHG */ +{ op_148_3, 0, 328, 0, 6, 0 }, /* MVPMR */ +{ op_150_3, 0, 336, 0, 2, 1 }, /* BCHG */ +{ op_158_3, 0, 344, 0, 2, 1 }, /* BCHG */ +{ op_160_3, 0, 352, 2, 2, 1 }, /* BCHG */ +{ op_168_3, 0, 360, 0, 3, 1 }, /* BCHG */ +{ op_170_3, 0, 368, 2, 3, 1 }, /* BCHG */ +{ op_178_3, 0, 376, 0, 3, 1 }, /* BCHG */ +{ op_179_3, 0, 377, 0, 4, 1 }, /* BCHG */ +{ op_17a_3, 0, 378, 0, 3, 1 }, /* BCHG */ +{ op_17b_3, 0, 379, 2, 3, 1 }, /* BCHG */ +{ op_180_3, 0, 384, 6, 1, 0 }, /* BCLR */ +{ op_188_3, 0, 392, 0, 2, 2 }, /* MVPRM */ +{ op_190_3, 0, 400, 0, 2, 1 }, /* BCLR */ +{ op_198_3, 0, 408, 0, 2, 1 }, /* BCLR */ +{ op_1a0_3, 0, 416, 2, 2, 1 }, /* BCLR */ +{ op_1a8_3, 0, 424, 0, 3, 1 }, /* BCLR */ +{ op_1b0_3, 0, 432, 2, 3, 1 }, /* BCLR */ +{ op_1b8_3, 0, 440, 0, 3, 1 }, /* BCLR */ +{ op_1b9_3, 0, 441, 0, 4, 1 }, /* BCLR */ +{ op_1ba_3, 0, 442, 0, 3, 1 }, /* BCLR */ +{ op_1bb_3, 0, 443, 2, 3, 1 }, /* BCLR */ +{ op_1c0_3, 0, 448, 4, 1, 0 }, /* BSET */ +{ op_1c8_3, 0, 456, 0, 2, 4 }, /* MVPRM */ +{ op_1d0_3, 0, 464, 0, 2, 1 }, /* BSET */ +{ op_1d8_3, 0, 472, 0, 2, 1 }, /* BSET */ +{ op_1e0_3, 0, 480, 2, 2, 1 }, /* BSET */ +{ op_1e8_3, 0, 488, 0, 3, 1 }, /* BSET */ +{ op_1f0_3, 0, 496, 2, 3, 1 }, /* BSET */ +{ op_1f8_3, 0, 504, 0, 3, 1 }, /* BSET */ +{ op_1f9_3, 0, 505, 0, 4, 1 }, /* BSET */ +{ op_1fa_3, 0, 506, 0, 3, 1 }, /* BSET */ +{ op_1fb_3, 0, 507, 2, 3, 1 }, /* BSET */ +{ op_200_3, 0, 512, 0, 2, 0 }, /* AND */ +{ op_210_3, 0, 528, 0, 3, 1 }, /* AND */ +{ op_218_3, 0, 536, 0, 3, 1 }, /* AND */ +{ op_220_3, 0, 544, 2, 3, 1 }, /* AND */ +{ op_228_3, 0, 552, 0, 4, 1 }, /* AND */ +{ op_230_3, 0, 560, 2, 4, 1 }, /* AND */ +{ op_238_3, 0, 568, 0, 4, 1 }, /* AND */ +{ op_239_3, 0, 569, 0, 5, 1 }, /* AND */ +{ op_23c_3, 0, 572, 8, 4, 0 }, /* ANDSR */ +{ op_240_3, 0, 576, 0, 2, 0 }, /* AND */ +{ op_250_3, 0, 592, 0, 3, 1 }, /* AND */ +{ op_258_3, 0, 600, 0, 3, 1 }, /* AND */ +{ op_260_3, 0, 608, 2, 3, 1 }, /* AND */ +{ op_268_3, 0, 616, 0, 4, 1 }, /* AND */ +{ op_270_3, 0, 624, 2, 4, 1 }, /* AND */ +{ op_278_3, 0, 632, 0, 4, 1 }, /* AND */ +{ op_279_3, 0, 633, 0, 5, 1 }, /* AND */ +{ op_27c_3, 0, 636, 8, 4, 0 }, /* ANDSR */ +{ op_280_3, 0, 640, 2, 3, 0 }, /* AND */ +{ op_290_3, 0, 656, 0, 5, 2 }, /* AND */ +{ op_298_3, 0, 664, 0, 5, 2 }, /* AND */ +{ op_2a0_3, 0, 672, 2, 5, 2 }, /* AND */ +{ op_2a8_3, 0, 680, 0, 6, 2 }, /* AND */ +{ op_2b0_3, 0, 688, 2, 6, 2 }, /* AND */ +{ op_2b8_3, 0, 696, 0, 6, 2 }, /* AND */ +{ op_2b9_3, 0, 697, 0, 7, 2 }, /* AND */ +{ op_400_3, 0, 1024, 0, 2, 0 }, /* SUB */ +{ op_410_3, 0, 1040, 0, 3, 1 }, /* SUB */ +{ op_418_3, 0, 1048, 0, 3, 1 }, /* SUB */ +{ op_420_3, 0, 1056, 2, 3, 1 }, /* SUB */ +{ op_428_3, 0, 1064, 0, 4, 1 }, /* SUB */ +{ op_430_3, 0, 1072, 2, 4, 1 }, /* SUB */ +{ op_438_3, 0, 1080, 0, 4, 1 }, /* SUB */ +{ op_439_3, 0, 1081, 0, 5, 1 }, /* SUB */ +{ op_440_3, 0, 1088, 0, 2, 0 }, /* SUB */ +{ op_450_3, 0, 1104, 0, 3, 1 }, /* SUB */ +{ op_458_3, 0, 1112, 0, 3, 1 }, /* SUB */ +{ op_460_3, 0, 1120, 2, 3, 1 }, /* SUB */ +{ op_468_3, 0, 1128, 0, 4, 1 }, /* SUB */ +{ op_470_3, 0, 1136, 2, 4, 1 }, /* SUB */ +{ op_478_3, 0, 1144, 0, 4, 1 }, /* SUB */ +{ op_479_3, 0, 1145, 0, 5, 1 }, /* SUB */ +{ op_480_3, 0, 1152, 4, 3, 0 }, /* SUB */ +{ op_490_3, 0, 1168, 0, 5, 2 }, /* SUB */ +{ op_498_3, 0, 1176, 0, 5, 2 }, /* SUB */ +{ op_4a0_3, 0, 1184, 2, 5, 2 }, /* SUB */ +{ op_4a8_3, 0, 1192, 0, 6, 2 }, /* SUB */ +{ op_4b0_3, 0, 1200, 2, 6, 2 }, /* SUB */ +{ op_4b8_3, 0, 1208, 0, 6, 2 }, /* SUB */ +{ op_4b9_3, 0, 1209, 0, 7, 2 }, /* SUB */ +{ op_600_3, 0, 1536, 0, 2, 0 }, /* ADD */ +{ op_610_3, 0, 1552, 0, 3, 1 }, /* ADD */ +{ op_618_3, 0, 1560, 0, 3, 1 }, /* ADD */ +{ op_620_3, 0, 1568, 2, 3, 1 }, /* ADD */ +{ op_628_3, 0, 1576, 0, 4, 1 }, /* ADD */ +{ op_630_3, 0, 1584, 2, 4, 1 }, /* ADD */ +{ op_638_3, 0, 1592, 0, 4, 1 }, /* ADD */ +{ op_639_3, 0, 1593, 0, 5, 1 }, /* ADD */ +{ op_640_3, 0, 1600, 0, 2, 0 }, /* ADD */ +{ op_650_3, 0, 1616, 0, 3, 1 }, /* ADD */ +{ op_658_3, 0, 1624, 0, 3, 1 }, /* ADD */ +{ op_660_3, 0, 1632, 2, 3, 1 }, /* ADD */ +{ op_668_3, 0, 1640, 0, 4, 1 }, /* ADD */ +{ op_670_3, 0, 1648, 2, 4, 1 }, /* ADD */ +{ op_678_3, 0, 1656, 0, 4, 1 }, /* ADD */ +{ op_679_3, 0, 1657, 0, 5, 1 }, /* ADD */ +{ op_680_3, 0, 1664, 4, 3, 0 }, /* ADD */ +{ op_690_3, 0, 1680, 0, 5, 2 }, /* ADD */ +{ op_698_3, 0, 1688, 0, 5, 2 }, /* ADD */ +{ op_6a0_3, 0, 1696, 2, 5, 2 }, /* ADD */ +{ op_6a8_3, 0, 1704, 0, 6, 2 }, /* ADD */ +{ op_6b0_3, 0, 1712, 2, 6, 2 }, /* ADD */ +{ op_6b8_3, 0, 1720, 0, 6, 2 }, /* ADD */ +{ op_6b9_3, 0, 1721, 0, 7, 2 }, /* ADD */ +{ op_800_3, 0, 2048, 2, 2, 0 }, /* BTST */ +{ op_810_3, 0, 2064, 0, 3, 0 }, /* BTST */ +{ op_818_3, 0, 2072, 0, 3, 0 }, /* BTST */ +{ op_820_3, 0, 2080, 2, 3, 0 }, /* BTST */ +{ op_828_3, 0, 2088, 0, 4, 0 }, /* BTST */ +{ op_830_3, 0, 2096, 2, 4, 0 }, /* BTST */ +{ op_838_3, 0, 2104, 0, 4, 0 }, /* BTST */ +{ op_839_3, 0, 2105, 0, 5, 0 }, /* BTST */ +{ op_83a_3, 0, 2106, 0, 4, 0 }, /* BTST */ +{ op_83b_3, 0, 2107, 2, 4, 0 }, /* BTST */ +{ op_83c_3, 0, 2108, 0, 3, 0 }, /* BTST */ +{ op_840_3, 0, 2112, 4, 2, 0 }, /* BCHG */ +{ op_850_3, 0, 2128, 0, 3, 1 }, /* BCHG */ +{ op_858_3, 0, 2136, 0, 3, 1 }, /* BCHG */ +{ op_860_3, 0, 2144, 2, 3, 1 }, /* BCHG */ +{ op_868_3, 0, 2152, 0, 4, 1 }, /* BCHG */ +{ op_870_3, 0, 2160, 2, 4, 1 }, /* BCHG */ +{ op_878_3, 0, 2168, 0, 4, 1 }, /* BCHG */ +{ op_879_3, 0, 2169, 0, 5, 1 }, /* BCHG */ +{ op_87a_3, 0, 2170, 0, 4, 1 }, /* BCHG */ +{ op_87b_3, 0, 2171, 2, 4, 1 }, /* BCHG */ +{ op_880_3, 0, 2176, 6, 2, 0 }, /* BCLR */ +{ op_890_3, 0, 2192, 0, 3, 1 }, /* BCLR */ +{ op_898_3, 0, 2200, 0, 3, 1 }, /* BCLR */ +{ op_8a0_3, 0, 2208, 2, 3, 1 }, /* BCLR */ +{ op_8a8_3, 0, 2216, 0, 4, 1 }, /* BCLR */ +{ op_8b0_3, 0, 2224, 2, 4, 1 }, /* BCLR */ +{ op_8b8_3, 0, 2232, 0, 4, 1 }, /* BCLR */ +{ op_8b9_3, 0, 2233, 0, 5, 1 }, /* BCLR */ +{ op_8ba_3, 0, 2234, 0, 4, 1 }, /* BCLR */ +{ op_8bb_3, 0, 2235, 2, 4, 1 }, /* BCLR */ +{ op_8c0_3, 0, 2240, 4, 2, 0 }, /* BSET */ +{ op_8d0_3, 0, 2256, 0, 3, 1 }, /* BSET */ +{ op_8d8_3, 0, 2264, 0, 3, 1 }, /* BSET */ +{ op_8e0_3, 0, 2272, 2, 3, 1 }, /* BSET */ +{ op_8e8_3, 0, 2280, 0, 4, 1 }, /* BSET */ +{ op_8f0_3, 0, 2288, 2, 4, 1 }, /* BSET */ +{ op_8f8_3, 0, 2296, 0, 4, 1 }, /* BSET */ +{ op_8f9_3, 0, 2297, 0, 5, 1 }, /* BSET */ +{ op_8fa_3, 0, 2298, 0, 4, 1 }, /* BSET */ +{ op_8fb_3, 0, 2299, 2, 4, 1 }, /* BSET */ +{ op_a00_3, 0, 2560, 0, 2, 0 }, /* EOR */ +{ op_a10_3, 0, 2576, 0, 3, 1 }, /* EOR */ +{ op_a18_3, 0, 2584, 0, 3, 1 }, /* EOR */ +{ op_a20_3, 0, 2592, 2, 3, 1 }, /* EOR */ +{ op_a28_3, 0, 2600, 0, 4, 1 }, /* EOR */ +{ op_a30_3, 0, 2608, 2, 4, 1 }, /* EOR */ +{ op_a38_3, 0, 2616, 0, 4, 1 }, /* EOR */ +{ op_a39_3, 0, 2617, 0, 5, 1 }, /* EOR */ +{ op_a3c_3, 0, 2620, 8, 4, 0 }, /* EORSR */ +{ op_a40_3, 0, 2624, 0, 2, 0 }, /* EOR */ +{ op_a50_3, 0, 2640, 0, 3, 1 }, /* EOR */ +{ op_a58_3, 0, 2648, 0, 3, 1 }, /* EOR */ +{ op_a60_3, 0, 2656, 2, 3, 1 }, /* EOR */ +{ op_a68_3, 0, 2664, 0, 4, 1 }, /* EOR */ +{ op_a70_3, 0, 2672, 2, 4, 1 }, /* EOR */ +{ op_a78_3, 0, 2680, 0, 4, 1 }, /* EOR */ +{ op_a79_3, 0, 2681, 0, 5, 1 }, /* EOR */ +{ op_a7c_3, 0, 2684, 8, 4, 0 }, /* EORSR */ +{ op_a80_3, 0, 2688, 4, 3, 0 }, /* EOR */ +{ op_a90_3, 0, 2704, 0, 5, 2 }, /* EOR */ +{ op_a98_3, 0, 2712, 0, 5, 2 }, /* EOR */ +{ op_aa0_3, 0, 2720, 2, 5, 2 }, /* EOR */ +{ op_aa8_3, 0, 2728, 0, 6, 2 }, /* EOR */ +{ op_ab0_3, 0, 2736, 2, 6, 2 }, /* EOR */ +{ op_ab8_3, 0, 2744, 0, 6, 2 }, /* EOR */ +{ op_ab9_3, 0, 2745, 0, 7, 2 }, /* EOR */ +{ op_c00_3, 0, 3072, 0, 2, 0 }, /* CMP */ +{ op_c10_3, 0, 3088, 0, 3, 0 }, /* CMP */ +{ op_c18_3, 0, 3096, 0, 3, 0 }, /* CMP */ +{ op_c20_3, 0, 3104, 2, 3, 0 }, /* CMP */ +{ op_c28_3, 0, 3112, 0, 4, 0 }, /* CMP */ +{ op_c30_3, 0, 3120, 2, 4, 0 }, /* CMP */ +{ op_c38_3, 0, 3128, 0, 4, 0 }, /* CMP */ +{ op_c39_3, 0, 3129, 0, 5, 0 }, /* CMP */ +{ op_c3a_3, 0, 3130, 0, 4, 0 }, /* CMP */ +{ op_c3b_3, 0, 3131, 2, 4, 0 }, /* CMP */ +{ op_c40_3, 0, 3136, 0, 2, 0 }, /* CMP */ +{ op_c50_3, 0, 3152, 0, 3, 0 }, /* CMP */ +{ op_c58_3, 0, 3160, 0, 3, 0 }, /* CMP */ +{ op_c60_3, 0, 3168, 2, 3, 0 }, /* CMP */ +{ op_c68_3, 0, 3176, 0, 4, 0 }, /* CMP */ +{ op_c70_3, 0, 3184, 2, 4, 0 }, /* CMP */ +{ op_c78_3, 0, 3192, 0, 4, 0 }, /* CMP */ +{ op_c79_3, 0, 3193, 0, 5, 0 }, /* CMP */ +{ op_c7a_3, 0, 3194, 0, 4, 0 }, /* CMP */ +{ op_c7b_3, 0, 3195, 2, 4, 0 }, /* CMP */ +{ op_c80_3, 0, 3200, 2, 3, 0 }, /* CMP */ +{ op_c90_3, 0, 3216, 0, 5, 0 }, /* CMP */ +{ op_c98_3, 0, 3224, 0, 5, 0 }, /* CMP */ +{ op_ca0_3, 0, 3232, 2, 5, 0 }, /* CMP */ +{ op_ca8_3, 0, 3240, 0, 6, 0 }, /* CMP */ +{ op_cb0_3, 0, 3248, 2, 6, 0 }, /* CMP */ +{ op_cb8_3, 0, 3256, 0, 6, 0 }, /* CMP */ +{ op_cb9_3, 0, 3257, 0, 7, 0 }, /* CMP */ +{ op_cba_3, 0, 3258, 0, 6, 0 }, /* CMP */ +{ op_cbb_3, 0, 3259, 2, 6, 0 }, /* CMP */ +{ op_1000_3, 0, 4096, 0, 1, 0 }, /* MOVE */ +{ op_1010_3, 0, 4112, 0, 2, 0 }, /* MOVE */ +{ op_1018_3, 0, 4120, 0, 2, 0 }, /* MOVE */ +{ op_1020_3, 0, 4128, 2, 2, 0 }, /* MOVE */ +{ op_1028_3, 0, 4136, 0, 3, 0 }, /* MOVE */ +{ op_1030_3, 0, 4144, 2, 3, 0 }, /* MOVE */ +{ op_1038_3, 0, 4152, 0, 3, 0 }, /* MOVE */ +{ op_1039_3, 0, 4153, 0, 4, 0 }, /* MOVE */ +{ op_103a_3, 0, 4154, 0, 3, 0 }, /* MOVE */ +{ op_103b_3, 0, 4155, 2, 3, 0 }, /* MOVE */ +{ op_103c_3, 0, 4156, 0, 2, 0 }, /* MOVE */ +{ op_1080_3, 0, 4224, 0, 1, 1 }, /* MOVE */ +{ op_1090_3, 0, 4240, 0, 2, 1 }, /* MOVE */ +{ op_1098_3, 0, 4248, 0, 2, 1 }, /* MOVE */ +{ op_10a0_3, 0, 4256, 2, 2, 1 }, /* MOVE */ +{ op_10a8_3, 0, 4264, 0, 3, 1 }, /* MOVE */ +{ op_10b0_3, 0, 4272, 2, 3, 1 }, /* MOVE */ +{ op_10b8_3, 0, 4280, 0, 3, 1 }, /* MOVE */ +{ op_10b9_3, 0, 4281, 0, 4, 1 }, /* MOVE */ +{ op_10ba_3, 0, 4282, 0, 3, 1 }, /* MOVE */ +{ op_10bb_3, 0, 4283, 2, 3, 1 }, /* MOVE */ +{ op_10bc_3, 0, 4284, 0, 2, 1 }, /* MOVE */ +{ op_10c0_3, 0, 4288, 0, 1, 1 }, /* MOVE */ +{ op_10d0_3, 0, 4304, 0, 2, 1 }, /* MOVE */ +{ op_10d8_3, 0, 4312, 0, 2, 1 }, /* MOVE */ +{ op_10e0_3, 0, 4320, 2, 2, 1 }, /* MOVE */ +{ op_10e8_3, 0, 4328, 0, 3, 1 }, /* MOVE */ +{ op_10f0_3, 0, 4336, 2, 3, 1 }, /* MOVE */ +{ op_10f8_3, 0, 4344, 0, 3, 1 }, /* MOVE */ +{ op_10f9_3, 0, 4345, 0, 4, 1 }, /* MOVE */ +{ op_10fa_3, 0, 4346, 0, 3, 1 }, /* MOVE */ +{ op_10fb_3, 0, 4347, 2, 3, 1 }, /* MOVE */ +{ op_10fc_3, 0, 4348, 0, 2, 1 }, /* MOVE */ +{ op_1100_3, 0, 4352, 2, 1, 1 }, /* MOVE */ +{ op_1110_3, 0, 4368, 2, 2, 1 }, /* MOVE */ +{ op_1118_3, 0, 4376, 2, 2, 1 }, /* MOVE */ +{ op_1120_3, 0, 4384, 4, 2, 1 }, /* MOVE */ +{ op_1128_3, 0, 4392, 2, 3, 1 }, /* MOVE */ +{ op_1130_3, 0, 4400, 4, 3, 1 }, /* MOVE */ +{ op_1138_3, 0, 4408, 2, 3, 1 }, /* MOVE */ +{ op_1139_3, 0, 4409, 2, 4, 1 }, /* MOVE */ +{ op_113a_3, 0, 4410, 2, 3, 1 }, /* MOVE */ +{ op_113b_3, 0, 4411, 4, 3, 1 }, /* MOVE */ +{ op_113c_3, 0, 4412, 2, 2, 1 }, /* MOVE */ +{ op_1140_3, 0, 4416, 0, 2, 1 }, /* MOVE */ +{ op_1150_3, 0, 4432, 0, 3, 1 }, /* MOVE */ +{ op_1158_3, 0, 4440, 0, 3, 1 }, /* MOVE */ +{ op_1160_3, 0, 4448, 2, 3, 1 }, /* MOVE */ +{ op_1168_3, 0, 4456, 0, 4, 1 }, /* MOVE */ +{ op_1170_3, 0, 4464, 2, 4, 1 }, /* MOVE */ +{ op_1178_3, 0, 4472, 0, 4, 1 }, /* MOVE */ +{ op_1179_3, 0, 4473, 0, 5, 1 }, /* MOVE */ +{ op_117a_3, 0, 4474, 0, 4, 1 }, /* MOVE */ +{ op_117b_3, 0, 4475, 2, 4, 1 }, /* MOVE */ +{ op_117c_3, 0, 4476, 0, 3, 1 }, /* MOVE */ +{ op_1180_3, 0, 4480, 2, 2, 1 }, /* MOVE */ +{ op_1190_3, 0, 4496, 2, 3, 1 }, /* MOVE */ +{ op_1198_3, 0, 4504, 2, 3, 1 }, /* MOVE */ +{ op_11a0_3, 0, 4512, 4, 3, 1 }, /* MOVE */ +{ op_11a8_3, 0, 4520, 2, 4, 1 }, /* MOVE */ +{ op_11b0_3, 0, 4528, 4, 4, 1 }, /* MOVE */ +{ op_11b8_3, 0, 4536, 2, 4, 1 }, /* MOVE */ +{ op_11b9_3, 0, 4537, 2, 5, 1 }, /* MOVE */ +{ op_11ba_3, 0, 4538, 2, 4, 1 }, /* MOVE */ +{ op_11bb_3, 0, 4539, 4, 4, 1 }, /* MOVE */ +{ op_11bc_3, 0, 4540, 2, 3, 1 }, /* MOVE */ +{ op_11c0_3, 0, 4544, 0, 2, 1 }, /* MOVE */ +{ op_11d0_3, 0, 4560, 0, 3, 1 }, /* MOVE */ +{ op_11d8_3, 0, 4568, 0, 3, 1 }, /* MOVE */ +{ op_11e0_3, 0, 4576, 2, 3, 1 }, /* MOVE */ +{ op_11e8_3, 0, 4584, 0, 4, 1 }, /* MOVE */ +{ op_11f0_3, 0, 4592, 2, 4, 1 }, /* MOVE */ +{ op_11f8_3, 0, 4600, 0, 4, 1 }, /* MOVE */ +{ op_11f9_3, 0, 4601, 0, 5, 1 }, /* MOVE */ +{ op_11fa_3, 0, 4602, 0, 4, 1 }, /* MOVE */ +{ op_11fb_3, 0, 4603, 2, 4, 1 }, /* MOVE */ +{ op_11fc_3, 0, 4604, 0, 3, 1 }, /* MOVE */ +{ op_13c0_3, 0, 5056, 0, 3, 1 }, /* MOVE */ +{ op_13d0_3, 0, 5072, 0, 4, 1 }, /* MOVE */ +{ op_13d8_3, 0, 5080, 0, 4, 1 }, /* MOVE */ +{ op_13e0_3, 0, 5088, 2, 4, 1 }, /* MOVE */ +{ op_13e8_3, 0, 5096, 0, 5, 1 }, /* MOVE */ +{ op_13f0_3, 0, 5104, 2, 5, 1 }, /* MOVE */ +{ op_13f8_3, 0, 5112, 0, 5, 1 }, /* MOVE */ +{ op_13f9_3, 0, 5113, 0, 6, 1 }, /* MOVE */ +{ op_13fa_3, 0, 5114, 0, 5, 1 }, /* MOVE */ +{ op_13fb_3, 0, 5115, 2, 5, 1 }, /* MOVE */ +{ op_13fc_3, 0, 5116, 0, 4, 1 }, /* MOVE */ +{ op_2000_3, 0, 8192, 0, 1, 0 }, /* MOVE */ +{ op_2008_3, 0, 8200, 0, 1, 0 }, /* MOVE */ +{ op_2010_3, 0, 8208, 0, 3, 0 }, /* MOVE */ +{ op_2018_3, 0, 8216, 0, 3, 0 }, /* MOVE */ +{ op_2020_3, 0, 8224, 2, 3, 0 }, /* MOVE */ +{ op_2028_3, 0, 8232, 0, 4, 0 }, /* MOVE */ +{ op_2030_3, 0, 8240, 2, 4, 0 }, /* MOVE */ +{ op_2038_3, 0, 8248, 0, 4, 0 }, /* MOVE */ +{ op_2039_3, 0, 8249, 0, 5, 0 }, /* MOVE */ +{ op_203a_3, 0, 8250, 0, 4, 0 }, /* MOVE */ +{ op_203b_3, 0, 8251, 2, 4, 0 }, /* MOVE */ +{ op_203c_3, 0, 8252, 0, 3, 0 }, /* MOVE */ +{ op_2040_3, 0, 8256, 0, 1, 0 }, /* MOVEA */ +{ op_2048_3, 0, 8264, 0, 1, 0 }, /* MOVEA */ +{ op_2050_3, 0, 8272, 0, 3, 0 }, /* MOVEA */ +{ op_2058_3, 0, 8280, 0, 3, 0 }, /* MOVEA */ +{ op_2060_3, 0, 8288, 2, 3, 0 }, /* MOVEA */ +{ op_2068_3, 0, 8296, 0, 4, 0 }, /* MOVEA */ +{ op_2070_3, 0, 8304, 2, 4, 0 }, /* MOVEA */ +{ op_2078_3, 0, 8312, 0, 4, 0 }, /* MOVEA */ +{ op_2079_3, 0, 8313, 0, 5, 0 }, /* MOVEA */ +{ op_207a_3, 0, 8314, 0, 4, 0 }, /* MOVEA */ +{ op_207b_3, 0, 8315, 2, 4, 0 }, /* MOVEA */ +{ op_207c_3, 0, 8316, 0, 3, 0 }, /* MOVEA */ +{ op_2080_3, 0, 8320, 0, 1, 2 }, /* MOVE */ +{ op_2088_3, 0, 8328, 0, 1, 2 }, /* MOVE */ +{ op_2090_3, 0, 8336, 0, 3, 2 }, /* MOVE */ +{ op_2098_3, 0, 8344, 0, 3, 2 }, /* MOVE */ +{ op_20a0_3, 0, 8352, 2, 3, 2 }, /* MOVE */ +{ op_20a8_3, 0, 8360, 0, 4, 2 }, /* MOVE */ +{ op_20b0_3, 0, 8368, 2, 4, 2 }, /* MOVE */ +{ op_20b8_3, 0, 8376, 0, 4, 2 }, /* MOVE */ +{ op_20b9_3, 0, 8377, 0, 5, 2 }, /* MOVE */ +{ op_20ba_3, 0, 8378, 0, 4, 2 }, /* MOVE */ +{ op_20bb_3, 0, 8379, 2, 4, 2 }, /* MOVE */ +{ op_20bc_3, 0, 8380, 0, 3, 2 }, /* MOVE */ +{ op_20c0_3, 0, 8384, 0, 1, 2 }, /* MOVE */ +{ op_20c8_3, 0, 8392, 0, 1, 2 }, /* MOVE */ +{ op_20d0_3, 0, 8400, 0, 3, 2 }, /* MOVE */ +{ op_20d8_3, 0, 8408, 0, 3, 2 }, /* MOVE */ +{ op_20e0_3, 0, 8416, 2, 3, 2 }, /* MOVE */ +{ op_20e8_3, 0, 8424, 0, 4, 2 }, /* MOVE */ +{ op_20f0_3, 0, 8432, 2, 4, 2 }, /* MOVE */ +{ op_20f8_3, 0, 8440, 0, 4, 2 }, /* MOVE */ +{ op_20f9_3, 0, 8441, 0, 5, 2 }, /* MOVE */ +{ op_20fa_3, 0, 8442, 0, 4, 2 }, /* MOVE */ +{ op_20fb_3, 0, 8443, 2, 4, 2 }, /* MOVE */ +{ op_20fc_3, 0, 8444, 0, 3, 2 }, /* MOVE */ +{ op_2100_3, 0, 8448, 2, 1, 2 }, /* MOVE */ +{ op_2108_3, 0, 8456, 2, 1, 2 }, /* MOVE */ +{ op_2110_3, 0, 8464, 2, 3, 2 }, /* MOVE */ +{ op_2118_3, 0, 8472, 2, 3, 2 }, /* MOVE */ +{ op_2120_3, 0, 8480, 4, 3, 2 }, /* MOVE */ +{ op_2128_3, 0, 8488, 2, 4, 2 }, /* MOVE */ +{ op_2130_3, 0, 8496, 4, 4, 2 }, /* MOVE */ +{ op_2138_3, 0, 8504, 2, 4, 2 }, /* MOVE */ +{ op_2139_3, 0, 8505, 2, 5, 2 }, /* MOVE */ +{ op_213a_3, 0, 8506, 2, 4, 2 }, /* MOVE */ +{ op_213b_3, 0, 8507, 4, 4, 2 }, /* MOVE */ +{ op_213c_3, 0, 8508, 2, 3, 2 }, /* MOVE */ +{ op_2140_3, 0, 8512, 0, 2, 2 }, /* MOVE */ +{ op_2148_3, 0, 8520, 0, 2, 2 }, /* MOVE */ +{ op_2150_3, 0, 8528, 0, 4, 2 }, /* MOVE */ +{ op_2158_3, 0, 8536, 0, 4, 2 }, /* MOVE */ +{ op_2160_3, 0, 8544, 2, 4, 2 }, /* MOVE */ +{ op_2168_3, 0, 8552, 0, 5, 2 }, /* MOVE */ +{ op_2170_3, 0, 8560, 2, 5, 2 }, /* MOVE */ +{ op_2178_3, 0, 8568, 0, 5, 2 }, /* MOVE */ +{ op_2179_3, 0, 8569, 0, 6, 2 }, /* MOVE */ +{ op_217a_3, 0, 8570, 0, 5, 2 }, /* MOVE */ +{ op_217b_3, 0, 8571, 2, 5, 2 }, /* MOVE */ +{ op_217c_3, 0, 8572, 0, 4, 2 }, /* MOVE */ +{ op_2180_3, 0, 8576, 2, 2, 2 }, /* MOVE */ +{ op_2188_3, 0, 8584, 2, 2, 2 }, /* MOVE */ +{ op_2190_3, 0, 8592, 2, 4, 2 }, /* MOVE */ +{ op_2198_3, 0, 8600, 2, 4, 2 }, /* MOVE */ +{ op_21a0_3, 0, 8608, 4, 4, 2 }, /* MOVE */ +{ op_21a8_3, 0, 8616, 2, 5, 2 }, /* MOVE */ +{ op_21b0_3, 0, 8624, 4, 5, 2 }, /* MOVE */ +{ op_21b8_3, 0, 8632, 2, 5, 2 }, /* MOVE */ +{ op_21b9_3, 0, 8633, 2, 6, 2 }, /* MOVE */ +{ op_21ba_3, 0, 8634, 2, 5, 2 }, /* MOVE */ +{ op_21bb_3, 0, 8635, 4, 5, 2 }, /* MOVE */ +{ op_21bc_3, 0, 8636, 2, 4, 2 }, /* MOVE */ +{ op_21c0_3, 0, 8640, 0, 2, 2 }, /* MOVE */ +{ op_21c8_3, 0, 8648, 0, 2, 2 }, /* MOVE */ +{ op_21d0_3, 0, 8656, 0, 4, 2 }, /* MOVE */ +{ op_21d8_3, 0, 8664, 0, 4, 2 }, /* MOVE */ +{ op_21e0_3, 0, 8672, 2, 4, 2 }, /* MOVE */ +{ op_21e8_3, 0, 8680, 0, 5, 2 }, /* MOVE */ +{ op_21f0_3, 0, 8688, 2, 5, 2 }, /* MOVE */ +{ op_21f8_3, 0, 8696, 0, 5, 2 }, /* MOVE */ +{ op_21f9_3, 0, 8697, 0, 6, 2 }, /* MOVE */ +{ op_21fa_3, 0, 8698, 0, 5, 2 }, /* MOVE */ +{ op_21fb_3, 0, 8699, 2, 5, 2 }, /* MOVE */ +{ op_21fc_3, 0, 8700, 0, 4, 2 }, /* MOVE */ +{ op_23c0_3, 0, 9152, 0, 3, 2 }, /* MOVE */ +{ op_23c8_3, 0, 9160, 0, 3, 2 }, /* MOVE */ +{ op_23d0_3, 0, 9168, 0, 5, 2 }, /* MOVE */ +{ op_23d8_3, 0, 9176, 0, 5, 2 }, /* MOVE */ +{ op_23e0_3, 0, 9184, 2, 5, 2 }, /* MOVE */ +{ op_23e8_3, 0, 9192, 0, 6, 2 }, /* MOVE */ +{ op_23f0_3, 0, 9200, 2, 6, 2 }, /* MOVE */ +{ op_23f8_3, 0, 9208, 0, 6, 2 }, /* MOVE */ +{ op_23f9_3, 0, 9209, 0, 7, 2 }, /* MOVE */ +{ op_23fa_3, 0, 9210, 0, 6, 2 }, /* MOVE */ +{ op_23fb_3, 0, 9211, 2, 6, 2 }, /* MOVE */ +{ op_23fc_3, 0, 9212, 0, 5, 2 }, /* MOVE */ +{ op_3000_3, 0, 12288, 0, 1, 0 }, /* MOVE */ +{ op_3008_3, 0, 12296, 0, 1, 0 }, /* MOVE */ +{ op_3010_3, 0, 12304, 0, 2, 0 }, /* MOVE */ +{ op_3018_3, 0, 12312, 0, 2, 0 }, /* MOVE */ +{ op_3020_3, 0, 12320, 2, 2, 0 }, /* MOVE */ +{ op_3028_3, 0, 12328, 0, 3, 0 }, /* MOVE */ +{ op_3030_3, 0, 12336, 2, 3, 0 }, /* MOVE */ +{ op_3038_3, 0, 12344, 0, 3, 0 }, /* MOVE */ +{ op_3039_3, 0, 12345, 0, 4, 0 }, /* MOVE */ +{ op_303a_3, 0, 12346, 0, 3, 0 }, /* MOVE */ +{ op_303b_3, 0, 12347, 2, 3, 0 }, /* MOVE */ +{ op_303c_3, 0, 12348, 0, 2, 0 }, /* MOVE */ +{ op_3040_3, 0, 12352, 0, 1, 0 }, /* MOVEA */ +{ op_3048_3, 0, 12360, 0, 1, 0 }, /* MOVEA */ +{ op_3050_3, 0, 12368, 0, 2, 0 }, /* MOVEA */ +{ op_3058_3, 0, 12376, 0, 2, 0 }, /* MOVEA */ +{ op_3060_3, 0, 12384, 2, 2, 0 }, /* MOVEA */ +{ op_3068_3, 0, 12392, 0, 3, 0 }, /* MOVEA */ +{ op_3070_3, 0, 12400, 2, 3, 0 }, /* MOVEA */ +{ op_3078_3, 0, 12408, 0, 3, 0 }, /* MOVEA */ +{ op_3079_3, 0, 12409, 0, 4, 0 }, /* MOVEA */ +{ op_307a_3, 0, 12410, 0, 3, 0 }, /* MOVEA */ +{ op_307b_3, 0, 12411, 2, 3, 0 }, /* MOVEA */ +{ op_307c_3, 0, 12412, 0, 2, 0 }, /* MOVEA */ +{ op_3080_3, 0, 12416, 0, 1, 1 }, /* MOVE */ +{ op_3088_3, 0, 12424, 0, 1, 1 }, /* MOVE */ +{ op_3090_3, 0, 12432, 0, 2, 1 }, /* MOVE */ +{ op_3098_3, 0, 12440, 0, 2, 1 }, /* MOVE */ +{ op_30a0_3, 0, 12448, 2, 2, 1 }, /* MOVE */ +{ op_30a8_3, 0, 12456, 0, 3, 1 }, /* MOVE */ +{ op_30b0_3, 0, 12464, 2, 3, 1 }, /* MOVE */ +{ op_30b8_3, 0, 12472, 0, 3, 1 }, /* MOVE */ +{ op_30b9_3, 0, 12473, 0, 4, 1 }, /* MOVE */ +{ op_30ba_3, 0, 12474, 0, 3, 1 }, /* MOVE */ +{ op_30bb_3, 0, 12475, 2, 3, 1 }, /* MOVE */ +{ op_30bc_3, 0, 12476, 0, 2, 1 }, /* MOVE */ +{ op_30c0_3, 0, 12480, 0, 1, 1 }, /* MOVE */ +{ op_30c8_3, 0, 12488, 0, 1, 1 }, /* MOVE */ +{ op_30d0_3, 0, 12496, 0, 2, 1 }, /* MOVE */ +{ op_30d8_3, 0, 12504, 0, 2, 1 }, /* MOVE */ +{ op_30e0_3, 0, 12512, 2, 2, 1 }, /* MOVE */ +{ op_30e8_3, 0, 12520, 0, 3, 1 }, /* MOVE */ +{ op_30f0_3, 0, 12528, 2, 3, 1 }, /* MOVE */ +{ op_30f8_3, 0, 12536, 0, 3, 1 }, /* MOVE */ +{ op_30f9_3, 0, 12537, 0, 4, 1 }, /* MOVE */ +{ op_30fa_3, 0, 12538, 0, 3, 1 }, /* MOVE */ +{ op_30fb_3, 0, 12539, 2, 3, 1 }, /* MOVE */ +{ op_30fc_3, 0, 12540, 0, 2, 1 }, /* MOVE */ +{ op_3100_3, 0, 12544, 2, 1, 1 }, /* MOVE */ +{ op_3108_3, 0, 12552, 2, 1, 1 }, /* MOVE */ +{ op_3110_3, 0, 12560, 2, 2, 1 }, /* MOVE */ +{ op_3118_3, 0, 12568, 2, 2, 1 }, /* MOVE */ +{ op_3120_3, 0, 12576, 4, 2, 1 }, /* MOVE */ +{ op_3128_3, 0, 12584, 2, 3, 1 }, /* MOVE */ +{ op_3130_3, 0, 12592, 4, 3, 1 }, /* MOVE */ +{ op_3138_3, 0, 12600, 2, 3, 1 }, /* MOVE */ +{ op_3139_3, 0, 12601, 2, 4, 1 }, /* MOVE */ +{ op_313a_3, 0, 12602, 2, 3, 1 }, /* MOVE */ +{ op_313b_3, 0, 12603, 4, 3, 1 }, /* MOVE */ +{ op_313c_3, 0, 12604, 2, 2, 1 }, /* MOVE */ +{ op_3140_3, 0, 12608, 0, 2, 1 }, /* MOVE */ +{ op_3148_3, 0, 12616, 0, 2, 1 }, /* MOVE */ +{ op_3150_3, 0, 12624, 0, 3, 1 }, /* MOVE */ +{ op_3158_3, 0, 12632, 0, 3, 1 }, /* MOVE */ +{ op_3160_3, 0, 12640, 2, 3, 1 }, /* MOVE */ +{ op_3168_3, 0, 12648, 0, 4, 1 }, /* MOVE */ +{ op_3170_3, 0, 12656, 2, 4, 1 }, /* MOVE */ +{ op_3178_3, 0, 12664, 0, 4, 1 }, /* MOVE */ +{ op_3179_3, 0, 12665, 0, 5, 1 }, /* MOVE */ +{ op_317a_3, 0, 12666, 0, 4, 1 }, /* MOVE */ +{ op_317b_3, 0, 12667, 2, 4, 1 }, /* MOVE */ +{ op_317c_3, 0, 12668, 0, 3, 1 }, /* MOVE */ +{ op_3180_3, 0, 12672, 2, 2, 1 }, /* MOVE */ +{ op_3188_3, 0, 12680, 2, 2, 1 }, /* MOVE */ +{ op_3190_3, 0, 12688, 2, 3, 1 }, /* MOVE */ +{ op_3198_3, 0, 12696, 2, 3, 1 }, /* MOVE */ +{ op_31a0_3, 0, 12704, 4, 3, 1 }, /* MOVE */ +{ op_31a8_3, 0, 12712, 2, 4, 1 }, /* MOVE */ +{ op_31b0_3, 0, 12720, 4, 4, 1 }, /* MOVE */ +{ op_31b8_3, 0, 12728, 2, 4, 1 }, /* MOVE */ +{ op_31b9_3, 0, 12729, 2, 5, 1 }, /* MOVE */ +{ op_31ba_3, 0, 12730, 2, 4, 1 }, /* MOVE */ +{ op_31bb_3, 0, 12731, 4, 4, 1 }, /* MOVE */ +{ op_31bc_3, 0, 12732, 2, 3, 1 }, /* MOVE */ +{ op_31c0_3, 0, 12736, 0, 2, 1 }, /* MOVE */ +{ op_31c8_3, 0, 12744, 0, 2, 1 }, /* MOVE */ +{ op_31d0_3, 0, 12752, 0, 3, 1 }, /* MOVE */ +{ op_31d8_3, 0, 12760, 0, 3, 1 }, /* MOVE */ +{ op_31e0_3, 0, 12768, 2, 3, 1 }, /* MOVE */ +{ op_31e8_3, 0, 12776, 0, 4, 1 }, /* MOVE */ +{ op_31f0_3, 0, 12784, 2, 4, 1 }, /* MOVE */ +{ op_31f8_3, 0, 12792, 0, 4, 1 }, /* MOVE */ +{ op_31f9_3, 0, 12793, 0, 5, 1 }, /* MOVE */ +{ op_31fa_3, 0, 12794, 0, 4, 1 }, /* MOVE */ +{ op_31fb_3, 0, 12795, 2, 4, 1 }, /* MOVE */ +{ op_31fc_3, 0, 12796, 0, 3, 1 }, /* MOVE */ +{ op_33c0_3, 0, 13248, 0, 3, 1 }, /* MOVE */ +{ op_33c8_3, 0, 13256, 0, 3, 1 }, /* MOVE */ +{ op_33d0_3, 0, 13264, 0, 4, 1 }, /* MOVE */ +{ op_33d8_3, 0, 13272, 0, 4, 1 }, /* MOVE */ +{ op_33e0_3, 0, 13280, 2, 4, 1 }, /* MOVE */ +{ op_33e8_3, 0, 13288, 0, 5, 1 }, /* MOVE */ +{ op_33f0_3, 0, 13296, 2, 5, 1 }, /* MOVE */ +{ op_33f8_3, 0, 13304, 0, 5, 1 }, /* MOVE */ +{ op_33f9_3, 0, 13305, 0, 6, 1 }, /* MOVE */ +{ op_33fa_3, 0, 13306, 0, 5, 1 }, /* MOVE */ +{ op_33fb_3, 0, 13307, 2, 5, 1 }, /* MOVE */ +{ op_33fc_3, 0, 13308, 0, 4, 1 }, /* MOVE */ +{ op_4000_3, 0, 16384, 0, 1, 0 }, /* NEGX */ +{ op_4010_3, 0, 16400, 0, 2, 1 }, /* NEGX */ +{ op_4018_3, 0, 16408, 0, 2, 1 }, /* NEGX */ +{ op_4020_3, 0, 16416, 2, 2, 1 }, /* NEGX */ +{ op_4028_3, 0, 16424, 0, 3, 1 }, /* NEGX */ +{ op_4030_3, 0, 16432, 2, 3, 1 }, /* NEGX */ +{ op_4038_3, 0, 16440, 0, 3, 1 }, /* NEGX */ +{ op_4039_3, 0, 16441, 0, 4, 1 }, /* NEGX */ +{ op_4040_3, 0, 16448, 0, 1, 0 }, /* NEGX */ +{ op_4050_3, 0, 16464, 0, 2, 1 }, /* NEGX */ +{ op_4058_3, 0, 16472, 0, 2, 1 }, /* NEGX */ +{ op_4060_3, 0, 16480, 2, 2, 1 }, /* NEGX */ +{ op_4068_3, 0, 16488, 0, 3, 1 }, /* NEGX */ +{ op_4070_3, 0, 16496, 2, 3, 1 }, /* NEGX */ +{ op_4078_3, 0, 16504, 0, 3, 1 }, /* NEGX */ +{ op_4079_3, 0, 16505, 0, 4, 1 }, /* NEGX */ +{ op_4080_3, 0, 16512, 2, 1, 0 }, /* NEGX */ +{ op_4090_3, 0, 16528, 0, 3, 2 }, /* NEGX */ +{ op_4098_3, 0, 16536, 0, 3, 2 }, /* NEGX */ +{ op_40a0_3, 0, 16544, 2, 3, 2 }, /* NEGX */ +{ op_40a8_3, 0, 16552, 0, 4, 2 }, /* NEGX */ +{ op_40b0_3, 0, 16560, 2, 4, 2 }, /* NEGX */ +{ op_40b8_3, 0, 16568, 0, 4, 2 }, /* NEGX */ +{ op_40b9_3, 0, 16569, 0, 5, 2 }, /* NEGX */ +{ op_40c0_3, 0, 16576, 2, 1, 0 }, /* MVSR2 */ +{ op_40d0_3, 0, 16592, 0, 1, 1 }, /* MVSR2 */ +{ op_40d8_3, 0, 16600, 0, 1, 1 }, /* MVSR2 */ +{ op_40e0_3, 0, 16608, 2, 1, 1 }, /* MVSR2 */ +{ op_40e8_3, 0, 16616, 0, 2, 1 }, /* MVSR2 */ +{ op_40f0_3, 0, 16624, 2, 2, 1 }, /* MVSR2 */ +{ op_40f8_3, 0, 16632, 0, 2, 1 }, /* MVSR2 */ +{ op_40f9_3, 0, 16633, 0, 3, 1 }, /* MVSR2 */ +{ op_4100_3, 0, 16640, 6, 1, 0 }, /* CHK */ +{ op_4110_3, 0, 16656, 6, 3, 0 }, /* CHK */ +{ op_4118_3, 0, 16664, 6, 3, 0 }, /* CHK */ +{ op_4120_3, 0, 16672, 8, 3, 0 }, /* CHK */ +{ op_4128_3, 0, 16680, 6, 4, 0 }, /* CHK */ +{ op_4130_3, 0, 16688, 8, 4, 0 }, /* CHK */ +{ op_4138_3, 0, 16696, 6, 4, 0 }, /* CHK */ +{ op_4139_3, 0, 16697, 6, 5, 0 }, /* CHK */ +{ op_413a_3, 0, 16698, 6, 4, 0 }, /* CHK */ +{ op_413b_3, 0, 16699, 8, 4, 0 }, /* CHK */ +{ op_413c_3, 0, 16700, 6, 3, 0 }, /* CHK */ +{ op_4180_3, 0, 16768, 6, 1, 0 }, /* CHK */ +{ op_4190_3, 0, 16784, 6, 2, 0 }, /* CHK */ +{ op_4198_3, 0, 16792, 6, 2, 0 }, /* CHK */ +{ op_41a0_3, 0, 16800, 8, 2, 0 }, /* CHK */ +{ op_41a8_3, 0, 16808, 6, 3, 0 }, /* CHK */ +{ op_41b0_3, 0, 16816, 8, 3, 0 }, /* CHK */ +{ op_41b8_3, 0, 16824, 6, 3, 0 }, /* CHK */ +{ op_41b9_3, 0, 16825, 6, 4, 0 }, /* CHK */ +{ op_41ba_3, 0, 16826, 6, 3, 0 }, /* CHK */ +{ op_41bb_3, 0, 16827, 8, 3, 0 }, /* CHK */ +{ op_41bc_3, 0, 16828, 6, 2, 0 }, /* CHK */ +{ op_41d0_3, 0, 16848, 0, 1, 0 }, /* LEA */ +{ op_41e8_3, 0, 16872, 0, 2, 0 }, /* LEA */ +{ op_41f0_3, 0, 16880, 4, 2, 0 }, /* LEA */ +{ op_41f8_3, 0, 16888, 0, 2, 0 }, /* LEA */ +{ op_41f9_3, 0, 16889, 0, 3, 0 }, /* LEA */ +{ op_41fa_3, 0, 16890, 0, 2, 0 }, /* LEA */ +{ op_41fb_3, 0, 16891, 4, 2, 0 }, /* LEA */ +{ op_4200_3, 0, 16896, 0, 1, 0 }, /* CLR */ +{ op_4210_3, 0, 16912, 0, 1, 1 }, /* CLR */ +{ op_4218_3, 0, 16920, 0, 1, 1 }, /* CLR */ +{ op_4220_3, 0, 16928, 2, 1, 1 }, /* CLR */ +{ op_4228_3, 0, 16936, 0, 2, 1 }, /* CLR */ +{ op_4230_3, 0, 16944, 2, 2, 1 }, /* CLR */ +{ op_4238_3, 0, 16952, 0, 2, 1 }, /* CLR */ +{ op_4239_3, 0, 16953, 0, 3, 1 }, /* CLR */ +{ op_4240_3, 0, 16960, 0, 1, 0 }, /* CLR */ +{ op_4250_3, 0, 16976, 0, 1, 1 }, /* CLR */ +{ op_4258_3, 0, 16984, 0, 1, 1 }, /* CLR */ +{ op_4260_3, 0, 16992, 2, 1, 1 }, /* CLR */ +{ op_4268_3, 0, 17000, 0, 2, 1 }, /* CLR */ +{ op_4270_3, 0, 17008, 2, 2, 1 }, /* CLR */ +{ op_4278_3, 0, 17016, 0, 2, 1 }, /* CLR */ +{ op_4279_3, 0, 17017, 0, 3, 1 }, /* CLR */ +{ op_4280_3, 0, 17024, 2, 1, 0 }, /* CLR */ +{ op_4290_3, 0, 17040, 0, 1, 2 }, /* CLR */ +{ op_4298_3, 0, 17048, 0, 1, 2 }, /* CLR */ +{ op_42a0_3, 0, 17056, 2, 1, 2 }, /* CLR */ +{ op_42a8_3, 0, 17064, 0, 2, 2 }, /* CLR */ +{ op_42b0_3, 0, 17072, 2, 2, 2 }, /* CLR */ +{ op_42b8_3, 0, 17080, 0, 2, 2 }, /* CLR */ +{ op_42b9_3, 0, 17081, 0, 3, 2 }, /* CLR */ +{ op_4400_3, 0, 17408, 0, 1, 0 }, /* NEG */ +{ op_4410_3, 0, 17424, 0, 2, 1 }, /* NEG */ +{ op_4418_3, 0, 17432, 0, 2, 1 }, /* NEG */ +{ op_4420_3, 0, 17440, 2, 2, 1 }, /* NEG */ +{ op_4428_3, 0, 17448, 0, 3, 1 }, /* NEG */ +{ op_4430_3, 0, 17456, 2, 3, 1 }, /* NEG */ +{ op_4438_3, 0, 17464, 0, 3, 1 }, /* NEG */ +{ op_4439_3, 0, 17465, 0, 4, 1 }, /* NEG */ +{ op_4440_3, 0, 17472, 0, 1, 0 }, /* NEG */ +{ op_4450_3, 0, 17488, 0, 2, 1 }, /* NEG */ +{ op_4458_3, 0, 17496, 0, 2, 1 }, /* NEG */ +{ op_4460_3, 0, 17504, 2, 2, 1 }, /* NEG */ +{ op_4468_3, 0, 17512, 0, 3, 1 }, /* NEG */ +{ op_4470_3, 0, 17520, 2, 3, 1 }, /* NEG */ +{ op_4478_3, 0, 17528, 0, 3, 1 }, /* NEG */ +{ op_4479_3, 0, 17529, 0, 4, 1 }, /* NEG */ +{ op_4480_3, 0, 17536, 2, 1, 0 }, /* NEG */ +{ op_4490_3, 0, 17552, 0, 3, 2 }, /* NEG */ +{ op_4498_3, 0, 17560, 0, 3, 2 }, /* NEG */ +{ op_44a0_3, 0, 17568, 2, 3, 2 }, /* NEG */ +{ op_44a8_3, 0, 17576, 0, 4, 2 }, /* NEG */ +{ op_44b0_3, 0, 17584, 2, 4, 2 }, /* NEG */ +{ op_44b8_3, 0, 17592, 0, 4, 2 }, /* NEG */ +{ op_44b9_3, 0, 17593, 0, 5, 2 }, /* NEG */ +{ op_44c0_3, 0, 17600, 4, 2, 0 }, /* MV2SR */ +{ op_44d0_3, 0, 17616, 4, 3, 0 }, /* MV2SR */ +{ op_44d8_3, 0, 17624, 4, 3, 0 }, /* MV2SR */ +{ op_44e0_3, 0, 17632, 6, 3, 0 }, /* MV2SR */ +{ op_44e8_3, 0, 17640, 4, 4, 0 }, /* MV2SR */ +{ op_44f0_3, 0, 17648, 6, 4, 0 }, /* MV2SR */ +{ op_44f8_3, 0, 17656, 4, 4, 0 }, /* MV2SR */ +{ op_44f9_3, 0, 17657, 4, 5, 0 }, /* MV2SR */ +{ op_44fa_3, 0, 17658, 4, 4, 0 }, /* MV2SR */ +{ op_44fb_3, 0, 17659, 6, 4, 0 }, /* MV2SR */ +{ op_44fc_3, 0, 17660, 4, 3, 0 }, /* MV2SR */ +{ op_4600_3, 0, 17920, 0, 1, 0 }, /* NOT */ +{ op_4610_3, 0, 17936, 0, 2, 1 }, /* NOT */ +{ op_4618_3, 0, 17944, 0, 2, 1 }, /* NOT */ +{ op_4620_3, 0, 17952, 2, 2, 1 }, /* NOT */ +{ op_4628_3, 0, 17960, 0, 3, 1 }, /* NOT */ +{ op_4630_3, 0, 17968, 2, 3, 1 }, /* NOT */ +{ op_4638_3, 0, 17976, 0, 3, 1 }, /* NOT */ +{ op_4639_3, 0, 17977, 0, 4, 1 }, /* NOT */ +{ op_4640_3, 0, 17984, 0, 1, 0 }, /* NOT */ +{ op_4650_3, 0, 18000, 0, 2, 1 }, /* NOT */ +{ op_4658_3, 0, 18008, 0, 2, 1 }, /* NOT */ +{ op_4660_3, 0, 18016, 2, 2, 1 }, /* NOT */ +{ op_4668_3, 0, 18024, 0, 3, 1 }, /* NOT */ +{ op_4670_3, 0, 18032, 2, 3, 1 }, /* NOT */ +{ op_4678_3, 0, 18040, 0, 3, 1 }, /* NOT */ +{ op_4679_3, 0, 18041, 0, 4, 1 }, /* NOT */ +{ op_4680_3, 0, 18048, 2, 1, 0 }, /* NOT */ +{ op_4690_3, 0, 18064, 0, 3, 2 }, /* NOT */ +{ op_4698_3, 0, 18072, 0, 3, 2 }, /* NOT */ +{ op_46a0_3, 0, 18080, 2, 3, 2 }, /* NOT */ +{ op_46a8_3, 0, 18088, 0, 4, 2 }, /* NOT */ +{ op_46b0_3, 0, 18096, 2, 4, 2 }, /* NOT */ +{ op_46b8_3, 0, 18104, 0, 4, 2 }, /* NOT */ +{ op_46b9_3, 0, 18105, 0, 5, 2 }, /* NOT */ +{ op_46c0_3, 0, 18112, 4, 2, 0 }, /* MV2SR */ +{ op_46d0_3, 0, 18128, 4, 3, 0 }, /* MV2SR */ +{ op_46d8_3, 0, 18136, 4, 3, 0 }, /* MV2SR */ +{ op_46e0_3, 0, 18144, 6, 3, 0 }, /* MV2SR */ +{ op_46e8_3, 0, 18152, 4, 4, 0 }, /* MV2SR */ +{ op_46f0_3, 0, 18160, 6, 4, 0 }, /* MV2SR */ +{ op_46f8_3, 0, 18168, 4, 4, 0 }, /* MV2SR */ +{ op_46f9_3, 0, 18169, 4, 5, 0 }, /* MV2SR */ +{ op_46fa_3, 0, 18170, 4, 4, 0 }, /* MV2SR */ +{ op_46fb_3, 0, 18171, 6, 4, 0 }, /* MV2SR */ +{ op_46fc_3, 0, 18172, 4, 3, 0 }, /* MV2SR */ +{ op_4800_3, 0, 18432, 2, 1, 0 }, /* NBCD */ +{ op_4810_3, 0, 18448, 0, 2, 1 }, /* NBCD */ +{ op_4818_3, 0, 18456, 0, 2, 1 }, /* NBCD */ +{ op_4820_3, 0, 18464, 2, 2, 1 }, /* NBCD */ +{ op_4828_3, 0, 18472, 0, 3, 1 }, /* NBCD */ +{ op_4830_3, 0, 18480, 2, 3, 1 }, /* NBCD */ +{ op_4838_3, 0, 18488, 0, 3, 1 }, /* NBCD */ +{ op_4839_3, 0, 18489, 0, 4, 1 }, /* NBCD */ +{ op_4840_3, 0, 18496, 0, 1, 0 }, /* SWAP */ +{ op_4850_3, 0, 18512, 2, 1, 2 }, /* PEA */ +{ op_4868_3, 0, 18536, 2, 2, 2 }, /* PEA */ +{ op_4870_3, 0, 18544, 5, 2, 2 }, /* PEA */ +{ op_4878_3, 0, 18552, 2, 2, 2 }, /* PEA */ +{ op_4879_3, 0, 18553, 2, 3, 2 }, /* PEA */ +{ op_487a_3, 0, 18554, 2, 2, 2 }, /* PEA */ +{ op_487b_3, 0, 18555, 5, 2, 2 }, /* PEA */ +{ op_4880_3, 0, 18560, 0, 1, 0 }, /* EXT */ +{ op_4890_3, 0, 18576, 0, 2, 255 }, /* MVMLE */ +{ op_48a0_3, 0, 18592, 2, 2, 255 }, /* MVMLE */ +{ op_48a8_3, 0, 18600, 0, 3, 255 }, /* MVMLE */ +{ op_48b0_3, 0, 18608, 2, 3, 255 }, /* MVMLE */ +{ op_48b8_3, 0, 18616, 0, 3, 255 }, /* MVMLE */ +{ op_48b9_3, 0, 18617, 0, 4, 255 }, /* MVMLE */ +{ op_48c0_3, 0, 18624, 0, 1, 0 }, /* EXT */ +{ op_48d0_3, 0, 18640, 0, 2, 255 }, /* MVMLE */ +{ op_48e0_3, 0, 18656, 2, 2, 255 }, /* MVMLE */ +{ op_48e8_3, 0, 18664, 0, 3, 255 }, /* MVMLE */ +{ op_48f0_3, 0, 18672, 2, 3, 255 }, /* MVMLE */ +{ op_48f8_3, 0, 18680, 0, 3, 255 }, /* MVMLE */ +{ op_48f9_3, 0, 18681, 0, 4, 255 }, /* MVMLE */ +{ op_49c0_3, 0, 18880, 0, 1, 0 }, /* EXT */ +{ op_4a00_3, 0, 18944, 0, 1, 0 }, /* TST */ +{ op_4a10_3, 0, 18960, 0, 2, 0 }, /* TST */ +{ op_4a18_3, 0, 18968, 0, 2, 0 }, /* TST */ +{ op_4a20_3, 0, 18976, 2, 2, 0 }, /* TST */ +{ op_4a28_3, 0, 18984, 0, 3, 0 }, /* TST */ +{ op_4a30_3, 0, 18992, 2, 3, 0 }, /* TST */ +{ op_4a38_3, 0, 19000, 0, 3, 0 }, /* TST */ +{ op_4a39_3, 0, 19001, 0, 4, 0 }, /* TST */ +{ op_4a3a_3, 0, 19002, 0, 3, 0 }, /* TST */ +{ op_4a3b_3, 0, 19003, 2, 3, 0 }, /* TST */ +{ op_4a3c_3, 0, 19004, 0, 2, 0 }, /* TST */ +{ op_4a40_3, 0, 19008, 0, 1, 0 }, /* TST */ +{ op_4a48_3, 0, 19016, 0, 1, 0 }, /* TST */ +{ op_4a50_3, 0, 19024, 0, 2, 0 }, /* TST */ +{ op_4a58_3, 0, 19032, 0, 2, 0 }, /* TST */ +{ op_4a60_3, 0, 19040, 2, 2, 0 }, /* TST */ +{ op_4a68_3, 0, 19048, 0, 3, 0 }, /* TST */ +{ op_4a70_3, 0, 19056, 2, 3, 0 }, /* TST */ +{ op_4a78_3, 0, 19064, 0, 3, 0 }, /* TST */ +{ op_4a79_3, 0, 19065, 0, 4, 0 }, /* TST */ +{ op_4a7a_3, 0, 19066, 0, 3, 0 }, /* TST */ +{ op_4a7b_3, 0, 19067, 2, 3, 0 }, /* TST */ +{ op_4a7c_3, 0, 19068, 0, 2, 0 }, /* TST */ +{ op_4a80_3, 0, 19072, 0, 1, 0 }, /* TST */ +{ op_4a88_3, 0, 19080, 0, 1, 0 }, /* TST */ +{ op_4a90_3, 0, 19088, 0, 3, 0 }, /* TST */ +{ op_4a98_3, 0, 19096, 0, 3, 0 }, /* TST */ +{ op_4aa0_3, 0, 19104, 2, 3, 0 }, /* TST */ +{ op_4aa8_3, 0, 19112, 0, 4, 0 }, /* TST */ +{ op_4ab0_3, 0, 19120, 2, 4, 0 }, /* TST */ +{ op_4ab8_3, 0, 19128, 0, 4, 0 }, /* TST */ +{ op_4ab9_3, 0, 19129, 0, 5, 0 }, /* TST */ +{ op_4aba_3, 0, 19130, 0, 4, 0 }, /* TST */ +{ op_4abb_3, 0, 19131, 2, 4, 0 }, /* TST */ +{ op_4abc_3, 0, 19132, 0, 3, 0 }, /* TST */ +{ op_4ac0_3, 0, 19136, 0, 1, 0 }, /* TAS */ +{ op_4ad0_3, 0, 19152, 2, 2, 1 }, /* TAS */ +{ op_4ad8_3, 0, 19160, 2, 2, 1 }, /* TAS */ +{ op_4ae0_3, 0, 19168, 4, 2, 1 }, /* TAS */ +{ op_4ae8_3, 0, 19176, 2, 3, 1 }, /* TAS */ +{ op_4af0_3, 0, 19184, 4, 3, 1 }, /* TAS */ +{ op_4af8_3, 0, 19192, 2, 3, 1 }, /* TAS */ +{ op_4af9_3, 0, 19193, 2, 4, 1 }, /* TAS */ +{ op_4c90_3, 0, 19600, 0, 255, 0 }, /* MVMEL */ +{ op_4c98_3, 0, 19608, 0, 255, 0 }, /* MVMEL */ +{ op_4ca8_3, 0, 19624, 0, 255, 0 }, /* MVMEL */ +{ op_4cb0_3, 0, 19632, 2, 255, 0 }, /* MVMEL */ +{ op_4cb8_3, 0, 19640, 0, 255, 0 }, /* MVMEL */ +{ op_4cb9_3, 0, 19641, 0, 255, 0 }, /* MVMEL */ +{ op_4cba_3, 0, 19642, 0, 255, 0 }, /* MVMEL */ +{ op_4cbb_3, 0, 19643, 2, 255, 0 }, /* MVMEL */ +{ op_4cd0_3, 0, 19664, 0, 255, 0 }, /* MVMEL */ +{ op_4cd8_3, 0, 19672, 0, 255, 0 }, /* MVMEL */ +{ op_4ce8_3, 0, 19688, 0, 255, 0 }, /* MVMEL */ +{ op_4cf0_3, 0, 19696, 2, 255, 0 }, /* MVMEL */ +{ op_4cf8_3, 0, 19704, 0, 255, 0 }, /* MVMEL */ +{ op_4cf9_3, 0, 19705, 0, 255, 0 }, /* MVMEL */ +{ op_4cfa_3, 0, 19706, 0, 255, 0 }, /* MVMEL */ +{ op_4cfb_3, 0, 19707, 2, 255, 0 }, /* MVMEL */ +{ op_4e40_3, 0, 20032, 6, 255, 255 }, /* TRAP */ +{ op_4e50_3, 0, 20048, 2, 2, 2 }, /* LINK */ +{ op_4e58_3, 0, 20056, 0, 3, 0 }, /* UNLK */ +{ op_4e60_3, 0, 20064, 0, 1, 0 }, /* MVR2USP */ +{ op_4e68_3, 0, 20072, 0, 1, 0 }, /* MVUSP2R */ +{ op_4e70_3, 0, 20080, 128, 1, 0 }, /* RESET */ +{ op_4e71_3, 0, 20081, 0, 1, 0 }, /* NOP */ +{ op_4e72_3, 0, 20082, 4, 1, 0 }, /* STOP */ +{ op_4e73_3, 0, 20083, 0, 5, 0 }, /* RTE */ +{ op_4e74_3, 0, 20084, 0, 3, 0 }, /* RTD */ +{ op_4e75_3, 0, 20085, 0, 4, 0 }, /* RTS */ +{ op_4e76_3, 0, 20086, 0, 255, 255 }, /* TRAPV */ +{ op_4e77_3, 0, 20087, 12, 2, 0 }, /* RTR */ +{ op_4e90_3, 0, 20112, 0, 2, 2 }, /* JSR */ +{ op_4ea8_3, 0, 20136, 2, 2, 2 }, /* JSR */ +{ op_4eb0_3, 0, 20144, 6, 2, 2 }, /* JSR */ +{ op_4eb8_3, 0, 20152, 2, 2, 2 }, /* JSR */ +{ op_4eb9_3, 0, 20153, 0, 3, 2 }, /* JSR */ +{ op_4eba_3, 0, 20154, 2, 2, 2 }, /* JSR */ +{ op_4ebb_3, 0, 20155, 6, 2, 2 }, /* JSR */ +{ op_4ed0_3, 0, 20176, 0, 2, 0 }, /* JMP */ +{ op_4ee8_3, 0, 20200, 2, 2, 0 }, /* JMP */ +{ op_4ef0_3, 0, 20208, 2, 3, 0 }, /* JMP */ +{ op_4ef8_3, 0, 20216, 2, 2, 0 }, /* JMP */ +{ op_4ef9_3, 0, 20217, 0, 3, 0 }, /* JMP */ +{ op_4efa_3, 0, 20218, 2, 2, 0 }, /* JMP */ +{ op_4efb_3, 0, 20219, 2, 3, 0 }, /* JMP */ +{ op_5000_3, 0, 20480, 0, 1, 0 }, /* ADD */ +{ op_5010_3, 0, 20496, 0, 2, 1 }, /* ADD */ +{ op_5018_3, 0, 20504, 0, 2, 1 }, /* ADD */ +{ op_5020_3, 0, 20512, 2, 2, 1 }, /* ADD */ +{ op_5028_3, 0, 20520, 0, 3, 1 }, /* ADD */ +{ op_5030_3, 0, 20528, 2, 3, 1 }, /* ADD */ +{ op_5038_3, 0, 20536, 0, 3, 1 }, /* ADD */ +{ op_5039_3, 0, 20537, 0, 4, 1 }, /* ADD */ +{ op_5040_3, 0, 20544, 0, 1, 0 }, /* ADD */ +{ op_5048_3, 0, 20552, 4, 1, 0 }, /* ADDA */ +{ op_5050_3, 0, 20560, 0, 2, 1 }, /* ADD */ +{ op_5058_3, 0, 20568, 0, 2, 1 }, /* ADD */ +{ op_5060_3, 0, 20576, 2, 2, 1 }, /* ADD */ +{ op_5068_3, 0, 20584, 0, 3, 1 }, /* ADD */ +{ op_5070_3, 0, 20592, 2, 3, 1 }, /* ADD */ +{ op_5078_3, 0, 20600, 0, 3, 1 }, /* ADD */ +{ op_5079_3, 0, 20601, 0, 4, 1 }, /* ADD */ +{ op_5080_3, 0, 20608, 4, 1, 0 }, /* ADD */ +{ op_5088_3, 0, 20616, 4, 1, 0 }, /* ADDA */ +{ op_5090_3, 0, 20624, 0, 3, 2 }, /* ADD */ +{ op_5098_3, 0, 20632, 0, 3, 2 }, /* ADD */ +{ op_50a0_3, 0, 20640, 2, 3, 2 }, /* ADD */ +{ op_50a8_3, 0, 20648, 0, 4, 2 }, /* ADD */ +{ op_50b0_3, 0, 20656, 2, 4, 2 }, /* ADD */ +{ op_50b8_3, 0, 20664, 0, 4, 2 }, /* ADD */ +{ op_50b9_3, 0, 20665, 0, 5, 2 }, /* ADD */ +{ op_50c0_3, 0, 20672, 0, 1, 0 }, /* Scc */ +{ op_50c8_3, 0, 20680, 2, 2, 0 }, /* DBcc */ +{ op_50d0_3, 0, 20688, 0, 1, 1 }, /* Scc */ +{ op_50d8_3, 0, 20696, 0, 1, 1 }, /* Scc */ +{ op_50e0_3, 0, 20704, 2, 1, 1 }, /* Scc */ +{ op_50e8_3, 0, 20712, 0, 2, 1 }, /* Scc */ +{ op_50f0_3, 0, 20720, 2, 2, 1 }, /* Scc */ +{ op_50f8_3, 0, 20728, 0, 2, 1 }, /* Scc */ +{ op_50f9_3, 0, 20729, 0, 3, 1 }, /* Scc */ +{ op_5100_3, 0, 20736, 0, 1, 0 }, /* SUB */ +{ op_5110_3, 0, 20752, 0, 2, 1 }, /* SUB */ +{ op_5118_3, 0, 20760, 0, 2, 1 }, /* SUB */ +{ op_5120_3, 0, 20768, 2, 2, 1 }, /* SUB */ +{ op_5128_3, 0, 20776, 0, 3, 1 }, /* SUB */ +{ op_5130_3, 0, 20784, 2, 3, 1 }, /* SUB */ +{ op_5138_3, 0, 20792, 0, 3, 1 }, /* SUB */ +{ op_5139_3, 0, 20793, 0, 4, 1 }, /* SUB */ +{ op_5140_3, 0, 20800, 0, 1, 0 }, /* SUB */ +{ op_5148_3, 0, 20808, 4, 1, 0 }, /* SUBA */ +{ op_5150_3, 0, 20816, 0, 2, 1 }, /* SUB */ +{ op_5158_3, 0, 20824, 0, 2, 1 }, /* SUB */ +{ op_5160_3, 0, 20832, 2, 2, 1 }, /* SUB */ +{ op_5168_3, 0, 20840, 0, 3, 1 }, /* SUB */ +{ op_5170_3, 0, 20848, 2, 3, 1 }, /* SUB */ +{ op_5178_3, 0, 20856, 0, 3, 1 }, /* SUB */ +{ op_5179_3, 0, 20857, 0, 4, 1 }, /* SUB */ +{ op_5180_3, 0, 20864, 4, 1, 0 }, /* SUB */ +{ op_5188_3, 0, 20872, 4, 1, 0 }, /* SUBA */ +{ op_5190_3, 0, 20880, 0, 3, 2 }, /* SUB */ +{ op_5198_3, 0, 20888, 0, 3, 2 }, /* SUB */ +{ op_51a0_3, 0, 20896, 2, 3, 2 }, /* SUB */ +{ op_51a8_3, 0, 20904, 0, 4, 2 }, /* SUB */ +{ op_51b0_3, 0, 20912, 2, 4, 2 }, /* SUB */ +{ op_51b8_3, 0, 20920, 0, 4, 2 }, /* SUB */ +{ op_51b9_3, 0, 20921, 0, 5, 2 }, /* SUB */ +{ op_51c0_3, 0, 20928, 0, 1, 0 }, /* Scc */ +{ op_51c8_3, 0, 20936, 2, 2, 0 }, /* DBcc */ +{ op_51d0_3, 0, 20944, 0, 1, 1 }, /* Scc */ +{ op_51d8_3, 0, 20952, 0, 1, 1 }, /* Scc */ +{ op_51e0_3, 0, 20960, 2, 1, 1 }, /* Scc */ +{ op_51e8_3, 0, 20968, 0, 2, 1 }, /* Scc */ +{ op_51f0_3, 0, 20976, 2, 2, 1 }, /* Scc */ +{ op_51f8_3, 0, 20984, 0, 2, 1 }, /* Scc */ +{ op_51f9_3, 0, 20985, 0, 3, 1 }, /* Scc */ +{ op_52c0_3, 0, 21184, 0, 1, 0 }, /* Scc */ +{ op_52c8_3, 0, 21192, 2, 2, 0 }, /* DBcc */ +{ op_52d0_3, 0, 21200, 0, 1, 1 }, /* Scc */ +{ op_52d8_3, 0, 21208, 0, 1, 1 }, /* Scc */ +{ op_52e0_3, 0, 21216, 2, 1, 1 }, /* Scc */ +{ op_52e8_3, 0, 21224, 0, 2, 1 }, /* Scc */ +{ op_52f0_3, 0, 21232, 2, 2, 1 }, /* Scc */ +{ op_52f8_3, 0, 21240, 0, 2, 1 }, /* Scc */ +{ op_52f9_3, 0, 21241, 0, 3, 1 }, /* Scc */ +{ op_53c0_3, 0, 21440, 0, 1, 0 }, /* Scc */ +{ op_53c8_3, 0, 21448, 2, 2, 0 }, /* DBcc */ +{ op_53d0_3, 0, 21456, 0, 1, 1 }, /* Scc */ +{ op_53d8_3, 0, 21464, 0, 1, 1 }, /* Scc */ +{ op_53e0_3, 0, 21472, 2, 1, 1 }, /* Scc */ +{ op_53e8_3, 0, 21480, 0, 2, 1 }, /* Scc */ +{ op_53f0_3, 0, 21488, 2, 2, 1 }, /* Scc */ +{ op_53f8_3, 0, 21496, 0, 2, 1 }, /* Scc */ +{ op_53f9_3, 0, 21497, 0, 3, 1 }, /* Scc */ +{ op_54c0_3, 0, 21696, 0, 1, 0 }, /* Scc */ +{ op_54c8_3, 0, 21704, 2, 2, 0 }, /* DBcc */ +{ op_54d0_3, 0, 21712, 0, 1, 1 }, /* Scc */ +{ op_54d8_3, 0, 21720, 0, 1, 1 }, /* Scc */ +{ op_54e0_3, 0, 21728, 2, 1, 1 }, /* Scc */ +{ op_54e8_3, 0, 21736, 0, 2, 1 }, /* Scc */ +{ op_54f0_3, 0, 21744, 2, 2, 1 }, /* Scc */ +{ op_54f8_3, 0, 21752, 0, 2, 1 }, /* Scc */ +{ op_54f9_3, 0, 21753, 0, 3, 1 }, /* Scc */ +{ op_55c0_3, 0, 21952, 0, 1, 0 }, /* Scc */ +{ op_55c8_3, 0, 21960, 2, 2, 0 }, /* DBcc */ +{ op_55d0_3, 0, 21968, 0, 1, 1 }, /* Scc */ +{ op_55d8_3, 0, 21976, 0, 1, 1 }, /* Scc */ +{ op_55e0_3, 0, 21984, 2, 1, 1 }, /* Scc */ +{ op_55e8_3, 0, 21992, 0, 2, 1 }, /* Scc */ +{ op_55f0_3, 0, 22000, 2, 2, 1 }, /* Scc */ +{ op_55f8_3, 0, 22008, 0, 2, 1 }, /* Scc */ +{ op_55f9_3, 0, 22009, 0, 3, 1 }, /* Scc */ +{ op_56c0_3, 0, 22208, 0, 1, 0 }, /* Scc */ +{ op_56c8_3, 0, 22216, 2, 2, 0 }, /* DBcc */ +{ op_56d0_3, 0, 22224, 0, 1, 1 }, /* Scc */ +{ op_56d8_3, 0, 22232, 0, 1, 1 }, /* Scc */ +{ op_56e0_3, 0, 22240, 2, 1, 1 }, /* Scc */ +{ op_56e8_3, 0, 22248, 0, 2, 1 }, /* Scc */ +{ op_56f0_3, 0, 22256, 2, 2, 1 }, /* Scc */ +{ op_56f8_3, 0, 22264, 0, 2, 1 }, /* Scc */ +{ op_56f9_3, 0, 22265, 0, 3, 1 }, /* Scc */ +{ op_57c0_3, 0, 22464, 0, 1, 0 }, /* Scc */ +{ op_57c8_3, 0, 22472, 2, 2, 0 }, /* DBcc */ +{ op_57d0_3, 0, 22480, 0, 1, 1 }, /* Scc */ +{ op_57d8_3, 0, 22488, 0, 1, 1 }, /* Scc */ +{ op_57e0_3, 0, 22496, 2, 1, 1 }, /* Scc */ +{ op_57e8_3, 0, 22504, 0, 2, 1 }, /* Scc */ +{ op_57f0_3, 0, 22512, 2, 2, 1 }, /* Scc */ +{ op_57f8_3, 0, 22520, 0, 2, 1 }, /* Scc */ +{ op_57f9_3, 0, 22521, 0, 3, 1 }, /* Scc */ +{ op_58c0_3, 0, 22720, 0, 1, 0 }, /* Scc */ +{ op_58c8_3, 0, 22728, 2, 2, 0 }, /* DBcc */ +{ op_58d0_3, 0, 22736, 0, 1, 1 }, /* Scc */ +{ op_58d8_3, 0, 22744, 0, 1, 1 }, /* Scc */ +{ op_58e0_3, 0, 22752, 2, 1, 1 }, /* Scc */ +{ op_58e8_3, 0, 22760, 0, 2, 1 }, /* Scc */ +{ op_58f0_3, 0, 22768, 2, 2, 1 }, /* Scc */ +{ op_58f8_3, 0, 22776, 0, 2, 1 }, /* Scc */ +{ op_58f9_3, 0, 22777, 0, 3, 1 }, /* Scc */ +{ op_59c0_3, 0, 22976, 0, 1, 0 }, /* Scc */ +{ op_59c8_3, 0, 22984, 2, 2, 0 }, /* DBcc */ +{ op_59d0_3, 0, 22992, 0, 1, 1 }, /* Scc */ +{ op_59d8_3, 0, 23000, 0, 1, 1 }, /* Scc */ +{ op_59e0_3, 0, 23008, 2, 1, 1 }, /* Scc */ +{ op_59e8_3, 0, 23016, 0, 2, 1 }, /* Scc */ +{ op_59f0_3, 0, 23024, 2, 2, 1 }, /* Scc */ +{ op_59f8_3, 0, 23032, 0, 2, 1 }, /* Scc */ +{ op_59f9_3, 0, 23033, 0, 3, 1 }, /* Scc */ +{ op_5ac0_3, 0, 23232, 0, 1, 0 }, /* Scc */ +{ op_5ac8_3, 0, 23240, 2, 2, 0 }, /* DBcc */ +{ op_5ad0_3, 0, 23248, 0, 1, 1 }, /* Scc */ +{ op_5ad8_3, 0, 23256, 0, 1, 1 }, /* Scc */ +{ op_5ae0_3, 0, 23264, 2, 1, 1 }, /* Scc */ +{ op_5ae8_3, 0, 23272, 0, 2, 1 }, /* Scc */ +{ op_5af0_3, 0, 23280, 2, 2, 1 }, /* Scc */ +{ op_5af8_3, 0, 23288, 0, 2, 1 }, /* Scc */ +{ op_5af9_3, 0, 23289, 0, 3, 1 }, /* Scc */ +{ op_5bc0_3, 0, 23488, 0, 1, 0 }, /* Scc */ +{ op_5bc8_3, 0, 23496, 2, 2, 0 }, /* DBcc */ +{ op_5bd0_3, 0, 23504, 0, 1, 1 }, /* Scc */ +{ op_5bd8_3, 0, 23512, 0, 1, 1 }, /* Scc */ +{ op_5be0_3, 0, 23520, 2, 1, 1 }, /* Scc */ +{ op_5be8_3, 0, 23528, 0, 2, 1 }, /* Scc */ +{ op_5bf0_3, 0, 23536, 2, 2, 1 }, /* Scc */ +{ op_5bf8_3, 0, 23544, 0, 2, 1 }, /* Scc */ +{ op_5bf9_3, 0, 23545, 0, 3, 1 }, /* Scc */ +{ op_5cc0_3, 0, 23744, 0, 1, 0 }, /* Scc */ +{ op_5cc8_3, 0, 23752, 2, 2, 0 }, /* DBcc */ +{ op_5cd0_3, 0, 23760, 0, 1, 1 }, /* Scc */ +{ op_5cd8_3, 0, 23768, 0, 1, 1 }, /* Scc */ +{ op_5ce0_3, 0, 23776, 2, 1, 1 }, /* Scc */ +{ op_5ce8_3, 0, 23784, 0, 2, 1 }, /* Scc */ +{ op_5cf0_3, 0, 23792, 2, 2, 1 }, /* Scc */ +{ op_5cf8_3, 0, 23800, 0, 2, 1 }, /* Scc */ +{ op_5cf9_3, 0, 23801, 0, 3, 1 }, /* Scc */ +{ op_5dc0_3, 0, 24000, 0, 1, 0 }, /* Scc */ +{ op_5dc8_3, 0, 24008, 2, 2, 0 }, /* DBcc */ +{ op_5dd0_3, 0, 24016, 0, 1, 1 }, /* Scc */ +{ op_5dd8_3, 0, 24024, 0, 1, 1 }, /* Scc */ +{ op_5de0_3, 0, 24032, 2, 1, 1 }, /* Scc */ +{ op_5de8_3, 0, 24040, 0, 2, 1 }, /* Scc */ +{ op_5df0_3, 0, 24048, 2, 2, 1 }, /* Scc */ +{ op_5df8_3, 0, 24056, 0, 2, 1 }, /* Scc */ +{ op_5df9_3, 0, 24057, 0, 3, 1 }, /* Scc */ +{ op_5ec0_3, 0, 24256, 0, 1, 0 }, /* Scc */ +{ op_5ec8_3, 0, 24264, 2, 2, 0 }, /* DBcc */ +{ op_5ed0_3, 0, 24272, 0, 1, 1 }, /* Scc */ +{ op_5ed8_3, 0, 24280, 0, 1, 1 }, /* Scc */ +{ op_5ee0_3, 0, 24288, 2, 1, 1 }, /* Scc */ +{ op_5ee8_3, 0, 24296, 0, 2, 1 }, /* Scc */ +{ op_5ef0_3, 0, 24304, 2, 2, 1 }, /* Scc */ +{ op_5ef8_3, 0, 24312, 0, 2, 1 }, /* Scc */ +{ op_5ef9_3, 0, 24313, 0, 3, 1 }, /* Scc */ +{ op_5fc0_3, 0, 24512, 0, 1, 0 }, /* Scc */ +{ op_5fc8_3, 0, 24520, 2, 2, 0 }, /* DBcc */ +{ op_5fd0_3, 0, 24528, 0, 1, 1 }, /* Scc */ +{ op_5fd8_3, 0, 24536, 0, 1, 1 }, /* Scc */ +{ op_5fe0_3, 0, 24544, 2, 1, 1 }, /* Scc */ +{ op_5fe8_3, 0, 24552, 0, 2, 1 }, /* Scc */ +{ op_5ff0_3, 0, 24560, 2, 2, 1 }, /* Scc */ +{ op_5ff8_3, 0, 24568, 0, 2, 1 }, /* Scc */ +{ op_5ff9_3, 0, 24569, 0, 3, 1 }, /* Scc */ +{ op_6000_3, 0, 24576, 2, 255, 0 }, /* Bcc */ +{ op_6001_3, 0, 24577, 2, 255, 0 }, /* Bcc */ +{ op_60ff_3, 0, 24831, 2, 255, 0 }, /* Bcc */ +{ op_6100_3, 0, 24832, 2, 2, 2 }, /* BSR */ +{ op_6101_3, 0, 24833, 2, 2, 2 }, /* BSR */ +{ op_61ff_3, 0, 25087, 2, 2, 2 }, /* BSR */ +{ op_6200_3, 0, 25088, 2, 255, 0 }, /* Bcc */ +{ op_6201_3, 0, 25089, 2, 255, 0 }, /* Bcc */ +{ op_62ff_3, 0, 25343, 2, 255, 0 }, /* Bcc */ +{ op_6300_3, 0, 25344, 2, 255, 0 }, /* Bcc */ +{ op_6301_3, 0, 25345, 2, 255, 0 }, /* Bcc */ +{ op_63ff_3, 0, 25599, 2, 255, 0 }, /* Bcc */ +{ op_6400_3, 0, 25600, 2, 255, 0 }, /* Bcc */ +{ op_6401_3, 0, 25601, 2, 255, 0 }, /* Bcc */ +{ op_64ff_3, 0, 25855, 2, 255, 0 }, /* Bcc */ +{ op_6500_3, 0, 25856, 2, 255, 0 }, /* Bcc */ +{ op_6501_3, 0, 25857, 2, 255, 0 }, /* Bcc */ +{ op_65ff_3, 0, 26111, 2, 255, 0 }, /* Bcc */ +{ op_6600_3, 0, 26112, 2, 255, 0 }, /* Bcc */ +{ op_6601_3, 0, 26113, 2, 255, 0 }, /* Bcc */ +{ op_66ff_3, 0, 26367, 2, 255, 0 }, /* Bcc */ +{ op_6700_3, 0, 26368, 2, 255, 0 }, /* Bcc */ +{ op_6701_3, 0, 26369, 2, 255, 0 }, /* Bcc */ +{ op_67ff_3, 0, 26623, 2, 255, 0 }, /* Bcc */ +{ op_6800_3, 0, 26624, 2, 255, 0 }, /* Bcc */ +{ op_6801_3, 0, 26625, 2, 255, 0 }, /* Bcc */ +{ op_68ff_3, 0, 26879, 2, 255, 0 }, /* Bcc */ +{ op_6900_3, 0, 26880, 2, 255, 0 }, /* Bcc */ +{ op_6901_3, 0, 26881, 2, 255, 0 }, /* Bcc */ +{ op_69ff_3, 0, 27135, 2, 255, 0 }, /* Bcc */ +{ op_6a00_3, 0, 27136, 2, 255, 0 }, /* Bcc */ +{ op_6a01_3, 0, 27137, 2, 255, 0 }, /* Bcc */ +{ op_6aff_3, 0, 27391, 2, 255, 0 }, /* Bcc */ +{ op_6b00_3, 0, 27392, 2, 255, 0 }, /* Bcc */ +{ op_6b01_3, 0, 27393, 2, 255, 0 }, /* Bcc */ +{ op_6bff_3, 0, 27647, 2, 255, 0 }, /* Bcc */ +{ op_6c00_3, 0, 27648, 2, 255, 0 }, /* Bcc */ +{ op_6c01_3, 0, 27649, 2, 255, 0 }, /* Bcc */ +{ op_6cff_3, 0, 27903, 2, 255, 0 }, /* Bcc */ +{ op_6d00_3, 0, 27904, 2, 255, 0 }, /* Bcc */ +{ op_6d01_3, 0, 27905, 2, 255, 0 }, /* Bcc */ +{ op_6dff_3, 0, 28159, 2, 255, 0 }, /* Bcc */ +{ op_6e00_3, 0, 28160, 2, 255, 0 }, /* Bcc */ +{ op_6e01_3, 0, 28161, 2, 255, 0 }, /* Bcc */ +{ op_6eff_3, 0, 28415, 2, 255, 0 }, /* Bcc */ +{ op_6f00_3, 0, 28416, 2, 255, 0 }, /* Bcc */ +{ op_6f01_3, 0, 28417, 2, 255, 0 }, /* Bcc */ +{ op_6fff_3, 0, 28671, 2, 255, 0 }, /* Bcc */ +{ op_7000_3, 0, 28672, 0, 1, 0 }, /* MOVE */ +{ op_8000_3, 0, 32768, 0, 1, 0 }, /* OR */ +{ op_8010_3, 0, 32784, 0, 2, 0 }, /* OR */ +{ op_8018_3, 0, 32792, 0, 2, 0 }, /* OR */ +{ op_8020_3, 0, 32800, 2, 2, 0 }, /* OR */ +{ op_8028_3, 0, 32808, 0, 3, 0 }, /* OR */ +{ op_8030_3, 0, 32816, 2, 3, 0 }, /* OR */ +{ op_8038_3, 0, 32824, 0, 3, 0 }, /* OR */ +{ op_8039_3, 0, 32825, 0, 4, 0 }, /* OR */ +{ op_803a_3, 0, 32826, 0, 3, 0 }, /* OR */ +{ op_803b_3, 0, 32827, 2, 3, 0 }, /* OR */ +{ op_803c_3, 0, 32828, 0, 2, 0 }, /* OR */ +{ op_8040_3, 0, 32832, 0, 1, 0 }, /* OR */ +{ op_8050_3, 0, 32848, 0, 2, 0 }, /* OR */ +{ op_8058_3, 0, 32856, 0, 2, 0 }, /* OR */ +{ op_8060_3, 0, 32864, 2, 2, 0 }, /* OR */ +{ op_8068_3, 0, 32872, 0, 3, 0 }, /* OR */ +{ op_8070_3, 0, 32880, 2, 3, 0 }, /* OR */ +{ op_8078_3, 0, 32888, 0, 3, 0 }, /* OR */ +{ op_8079_3, 0, 32889, 0, 4, 0 }, /* OR */ +{ op_807a_3, 0, 32890, 0, 3, 0 }, /* OR */ +{ op_807b_3, 0, 32891, 2, 3, 0 }, /* OR */ +{ op_807c_3, 0, 32892, 0, 2, 0 }, /* OR */ +{ op_8080_3, 0, 32896, 2, 1, 0 }, /* OR */ +{ op_8090_3, 0, 32912, 2, 3, 0 }, /* OR */ +{ op_8098_3, 0, 32920, 2, 3, 0 }, /* OR */ +{ op_80a0_3, 0, 32928, 4, 3, 0 }, /* OR */ +{ op_80a8_3, 0, 32936, 2, 4, 0 }, /* OR */ +{ op_80b0_3, 0, 32944, 4, 4, 0 }, /* OR */ +{ op_80b8_3, 0, 32952, 2, 4, 0 }, /* OR */ +{ op_80b9_3, 0, 32953, 2, 5, 0 }, /* OR */ +{ op_80ba_3, 0, 32954, 2, 4, 0 }, /* OR */ +{ op_80bb_3, 0, 32955, 4, 4, 0 }, /* OR */ +{ op_80bc_3, 0, 32956, 2, 3, 0 }, /* OR */ +{ op_80c0_3, 0, 32960, 136, 1, 0 }, /* DIVU */ +{ op_80d0_3, 0, 32976, 136, 2, 0 }, /* DIVU */ +{ op_80d8_3, 0, 32984, 136, 2, 0 }, /* DIVU */ +{ op_80e0_3, 0, 32992, 138, 2, 0 }, /* DIVU */ +{ op_80e8_3, 0, 33000, 136, 3, 0 }, /* DIVU */ +{ op_80f0_3, 0, 33008, 138, 3, 0 }, /* DIVU */ +{ op_80f8_3, 0, 33016, 136, 3, 0 }, /* DIVU */ +{ op_80f9_3, 0, 33017, 136, 4, 0 }, /* DIVU */ +{ op_80fa_3, 0, 33018, 136, 3, 0 }, /* DIVU */ +{ op_80fb_3, 0, 33019, 138, 3, 0 }, /* DIVU */ +{ op_80fc_3, 0, 33020, 136, 2, 0 }, /* DIVU */ +{ op_8100_3, 0, 33024, 2, 1, 0 }, /* SBCD */ +{ op_8108_3, 0, 33032, 2, 3, 1 }, /* SBCD */ +{ op_8110_3, 0, 33040, 0, 2, 1 }, /* OR */ +{ op_8118_3, 0, 33048, 0, 2, 1 }, /* OR */ +{ op_8120_3, 0, 33056, 2, 2, 1 }, /* OR */ +{ op_8128_3, 0, 33064, 0, 3, 1 }, /* OR */ +{ op_8130_3, 0, 33072, 2, 3, 1 }, /* OR */ +{ op_8138_3, 0, 33080, 0, 3, 1 }, /* OR */ +{ op_8139_3, 0, 33081, 0, 4, 1 }, /* OR */ +{ op_8150_3, 0, 33104, 0, 2, 1 }, /* OR */ +{ op_8158_3, 0, 33112, 0, 2, 1 }, /* OR */ +{ op_8160_3, 0, 33120, 2, 2, 1 }, /* OR */ +{ op_8168_3, 0, 33128, 0, 3, 1 }, /* OR */ +{ op_8170_3, 0, 33136, 2, 3, 1 }, /* OR */ +{ op_8178_3, 0, 33144, 0, 3, 1 }, /* OR */ +{ op_8179_3, 0, 33145, 0, 4, 1 }, /* OR */ +{ op_8190_3, 0, 33168, 0, 3, 2 }, /* OR */ +{ op_8198_3, 0, 33176, 0, 3, 2 }, /* OR */ +{ op_81a0_3, 0, 33184, 2, 3, 2 }, /* OR */ +{ op_81a8_3, 0, 33192, 0, 4, 2 }, /* OR */ +{ op_81b0_3, 0, 33200, 2, 4, 2 }, /* OR */ +{ op_81b8_3, 0, 33208, 0, 4, 2 }, /* OR */ +{ op_81b9_3, 0, 33209, 0, 5, 2 }, /* OR */ +{ op_81c0_3, 0, 33216, 154, 1, 0 }, /* DIVS */ +{ op_81d0_3, 0, 33232, 154, 2, 0 }, /* DIVS */ +{ op_81d8_3, 0, 33240, 154, 2, 0 }, /* DIVS */ +{ op_81e0_3, 0, 33248, 156, 2, 0 }, /* DIVS */ +{ op_81e8_3, 0, 33256, 154, 3, 0 }, /* DIVS */ +{ op_81f0_3, 0, 33264, 156, 3, 0 }, /* DIVS */ +{ op_81f8_3, 0, 33272, 154, 3, 0 }, /* DIVS */ +{ op_81f9_3, 0, 33273, 154, 4, 0 }, /* DIVS */ +{ op_81fa_3, 0, 33274, 154, 3, 0 }, /* DIVS */ +{ op_81fb_3, 0, 33275, 156, 3, 0 }, /* DIVS */ +{ op_81fc_3, 0, 33276, 154, 2, 0 }, /* DIVS */ +{ op_9000_3, 0, 36864, 0, 1, 0 }, /* SUB */ +{ op_9010_3, 0, 36880, 0, 2, 0 }, /* SUB */ +{ op_9018_3, 0, 36888, 0, 2, 0 }, /* SUB */ +{ op_9020_3, 0, 36896, 2, 2, 0 }, /* SUB */ +{ op_9028_3, 0, 36904, 0, 3, 0 }, /* SUB */ +{ op_9030_3, 0, 36912, 2, 3, 0 }, /* SUB */ +{ op_9038_3, 0, 36920, 0, 3, 0 }, /* SUB */ +{ op_9039_3, 0, 36921, 0, 4, 0 }, /* SUB */ +{ op_903a_3, 0, 36922, 0, 3, 0 }, /* SUB */ +{ op_903b_3, 0, 36923, 2, 3, 0 }, /* SUB */ +{ op_903c_3, 0, 36924, 0, 2, 0 }, /* SUB */ +{ op_9040_3, 0, 36928, 0, 1, 0 }, /* SUB */ +{ op_9048_3, 0, 36936, 0, 1, 0 }, /* SUB */ +{ op_9050_3, 0, 36944, 0, 2, 0 }, /* SUB */ +{ op_9058_3, 0, 36952, 0, 2, 0 }, /* SUB */ +{ op_9060_3, 0, 36960, 2, 2, 0 }, /* SUB */ +{ op_9068_3, 0, 36968, 0, 3, 0 }, /* SUB */ +{ op_9070_3, 0, 36976, 2, 3, 0 }, /* SUB */ +{ op_9078_3, 0, 36984, 0, 3, 0 }, /* SUB */ +{ op_9079_3, 0, 36985, 0, 4, 0 }, /* SUB */ +{ op_907a_3, 0, 36986, 0, 3, 0 }, /* SUB */ +{ op_907b_3, 0, 36987, 2, 3, 0 }, /* SUB */ +{ op_907c_3, 0, 36988, 0, 2, 0 }, /* SUB */ +{ op_9080_3, 0, 36992, 4, 1, 0 }, /* SUB */ +{ op_9088_3, 0, 37000, 4, 1, 0 }, /* SUB */ +{ op_9090_3, 0, 37008, 2, 3, 0 }, /* SUB */ +{ op_9098_3, 0, 37016, 2, 3, 0 }, /* SUB */ +{ op_90a0_3, 0, 37024, 4, 3, 0 }, /* SUB */ +{ op_90a8_3, 0, 37032, 2, 4, 0 }, /* SUB */ +{ op_90b0_3, 0, 37040, 4, 4, 0 }, /* SUB */ +{ op_90b8_3, 0, 37048, 2, 4, 0 }, /* SUB */ +{ op_90b9_3, 0, 37049, 2, 5, 0 }, /* SUB */ +{ op_90ba_3, 0, 37050, 2, 4, 0 }, /* SUB */ +{ op_90bb_3, 0, 37051, 4, 4, 0 }, /* SUB */ +{ op_90bc_3, 0, 37052, 4, 3, 0 }, /* SUB */ +{ op_90c0_3, 0, 37056, 4, 1, 0 }, /* SUBA */ +{ op_90c8_3, 0, 37064, 4, 1, 0 }, /* SUBA */ +{ op_90d0_3, 0, 37072, 4, 2, 0 }, /* SUBA */ +{ op_90d8_3, 0, 37080, 4, 2, 0 }, /* SUBA */ +{ op_90e0_3, 0, 37088, 6, 2, 0 }, /* SUBA */ +{ op_90e8_3, 0, 37096, 4, 3, 0 }, /* SUBA */ +{ op_90f0_3, 0, 37104, 6, 3, 0 }, /* SUBA */ +{ op_90f8_3, 0, 37112, 4, 3, 0 }, /* SUBA */ +{ op_90f9_3, 0, 37113, 4, 4, 0 }, /* SUBA */ +{ op_90fa_3, 0, 37114, 4, 3, 0 }, /* SUBA */ +{ op_90fb_3, 0, 37115, 6, 3, 0 }, /* SUBA */ +{ op_90fc_3, 0, 37116, 4, 2, 0 }, /* SUBA */ +{ op_9100_3, 0, 37120, 0, 1, 0 }, /* SUBX */ +{ op_9108_3, 0, 37128, 2, 3, 1 }, /* SUBX */ +{ op_9110_3, 0, 37136, 0, 2, 1 }, /* SUB */ +{ op_9118_3, 0, 37144, 0, 2, 1 }, /* SUB */ +{ op_9120_3, 0, 37152, 2, 2, 1 }, /* SUB */ +{ op_9128_3, 0, 37160, 0, 3, 1 }, /* SUB */ +{ op_9130_3, 0, 37168, 2, 3, 1 }, /* SUB */ +{ op_9138_3, 0, 37176, 0, 3, 1 }, /* SUB */ +{ op_9139_3, 0, 37177, 0, 4, 1 }, /* SUB */ +{ op_9140_3, 0, 37184, 0, 1, 0 }, /* SUBX */ +{ op_9148_3, 0, 37192, 2, 3, 1 }, /* SUBX */ +{ op_9150_3, 0, 37200, 0, 2, 1 }, /* SUB */ +{ op_9158_3, 0, 37208, 0, 2, 1 }, /* SUB */ +{ op_9160_3, 0, 37216, 2, 2, 1 }, /* SUB */ +{ op_9168_3, 0, 37224, 0, 3, 1 }, /* SUB */ +{ op_9170_3, 0, 37232, 2, 3, 1 }, /* SUB */ +{ op_9178_3, 0, 37240, 0, 3, 1 }, /* SUB */ +{ op_9179_3, 0, 37241, 0, 4, 1 }, /* SUB */ +{ op_9180_3, 0, 37248, 4, 1, 0 }, /* SUBX */ +{ op_9188_3, 0, 37256, 2, 5, 2 }, /* SUBX */ +{ op_9190_3, 0, 37264, 0, 3, 2 }, /* SUB */ +{ op_9198_3, 0, 37272, 0, 3, 2 }, /* SUB */ +{ op_91a0_3, 0, 37280, 2, 3, 2 }, /* SUB */ +{ op_91a8_3, 0, 37288, 0, 4, 2 }, /* SUB */ +{ op_91b0_3, 0, 37296, 2, 4, 2 }, /* SUB */ +{ op_91b8_3, 0, 37304, 0, 4, 2 }, /* SUB */ +{ op_91b9_3, 0, 37305, 0, 5, 2 }, /* SUB */ +{ op_91c0_3, 0, 37312, 4, 1, 0 }, /* SUBA */ +{ op_91c8_3, 0, 37320, 4, 1, 0 }, /* SUBA */ +{ op_91d0_3, 0, 37328, 2, 3, 0 }, /* SUBA */ +{ op_91d8_3, 0, 37336, 2, 3, 0 }, /* SUBA */ +{ op_91e0_3, 0, 37344, 4, 3, 0 }, /* SUBA */ +{ op_91e8_3, 0, 37352, 2, 4, 0 }, /* SUBA */ +{ op_91f0_3, 0, 37360, 4, 4, 0 }, /* SUBA */ +{ op_91f8_3, 0, 37368, 2, 4, 0 }, /* SUBA */ +{ op_91f9_3, 0, 37369, 2, 5, 0 }, /* SUBA */ +{ op_91fa_3, 0, 37370, 2, 4, 0 }, /* SUBA */ +{ op_91fb_3, 0, 37371, 4, 4, 0 }, /* SUBA */ +{ op_91fc_3, 0, 37372, 4, 3, 0 }, /* SUBA */ +{ op_b000_3, 0, 45056, 0, 1, 0 }, /* CMP */ +{ op_b010_3, 0, 45072, 0, 2, 0 }, /* CMP */ +{ op_b018_3, 0, 45080, 0, 2, 0 }, /* CMP */ +{ op_b020_3, 0, 45088, 2, 2, 0 }, /* CMP */ +{ op_b028_3, 0, 45096, 0, 3, 0 }, /* CMP */ +{ op_b030_3, 0, 45104, 2, 3, 0 }, /* CMP */ +{ op_b038_3, 0, 45112, 0, 3, 0 }, /* CMP */ +{ op_b039_3, 0, 45113, 0, 4, 0 }, /* CMP */ +{ op_b03a_3, 0, 45114, 0, 3, 0 }, /* CMP */ +{ op_b03b_3, 0, 45115, 2, 3, 0 }, /* CMP */ +{ op_b03c_3, 0, 45116, 0, 2, 0 }, /* CMP */ +{ op_b040_3, 0, 45120, 0, 1, 0 }, /* CMP */ +{ op_b048_3, 0, 45128, 0, 1, 0 }, /* CMP */ +{ op_b050_3, 0, 45136, 0, 2, 0 }, /* CMP */ +{ op_b058_3, 0, 45144, 0, 2, 0 }, /* CMP */ +{ op_b060_3, 0, 45152, 2, 2, 0 }, /* CMP */ +{ op_b068_3, 0, 45160, 0, 3, 0 }, /* CMP */ +{ op_b070_3, 0, 45168, 2, 3, 0 }, /* CMP */ +{ op_b078_3, 0, 45176, 0, 3, 0 }, /* CMP */ +{ op_b079_3, 0, 45177, 0, 4, 0 }, /* CMP */ +{ op_b07a_3, 0, 45178, 0, 3, 0 }, /* CMP */ +{ op_b07b_3, 0, 45179, 2, 3, 0 }, /* CMP */ +{ op_b07c_3, 0, 45180, 0, 2, 0 }, /* CMP */ +{ op_b080_3, 0, 45184, 2, 1, 0 }, /* CMP */ +{ op_b088_3, 0, 45192, 2, 1, 0 }, /* CMP */ +{ op_b090_3, 0, 45200, 2, 3, 0 }, /* CMP */ +{ op_b098_3, 0, 45208, 2, 3, 0 }, /* CMP */ +{ op_b0a0_3, 0, 45216, 4, 3, 0 }, /* CMP */ +{ op_b0a8_3, 0, 45224, 2, 4, 0 }, /* CMP */ +{ op_b0b0_3, 0, 45232, 4, 4, 0 }, /* CMP */ +{ op_b0b8_3, 0, 45240, 2, 4, 0 }, /* CMP */ +{ op_b0b9_3, 0, 45241, 2, 5, 0 }, /* CMP */ +{ op_b0ba_3, 0, 45242, 2, 4, 0 }, /* CMP */ +{ op_b0bb_3, 0, 45243, 4, 4, 0 }, /* CMP */ +{ op_b0bc_3, 0, 45244, 2, 3, 0 }, /* CMP */ +{ op_b0c0_3, 0, 45248, 2, 1, 0 }, /* CMPA */ +{ op_b0c8_3, 0, 45256, 2, 1, 0 }, /* CMPA */ +{ op_b0d0_3, 0, 45264, 2, 2, 0 }, /* CMPA */ +{ op_b0d8_3, 0, 45272, 2, 2, 0 }, /* CMPA */ +{ op_b0e0_3, 0, 45280, 4, 2, 0 }, /* CMPA */ +{ op_b0e8_3, 0, 45288, 2, 3, 0 }, /* CMPA */ +{ op_b0f0_3, 0, 45296, 4, 3, 0 }, /* CMPA */ +{ op_b0f8_3, 0, 45304, 2, 3, 0 }, /* CMPA */ +{ op_b0f9_3, 0, 45305, 2, 4, 0 }, /* CMPA */ +{ op_b0fa_3, 0, 45306, 2, 3, 0 }, /* CMPA */ +{ op_b0fb_3, 0, 45307, 4, 3, 0 }, /* CMPA */ +{ op_b0fc_3, 0, 45308, 2, 2, 0 }, /* CMPA */ +{ op_b100_3, 0, 45312, 0, 1, 0 }, /* EOR */ +{ op_b108_3, 0, 45320, 0, 3, 0 }, /* CMPM */ +{ op_b110_3, 0, 45328, 0, 2, 1 }, /* EOR */ +{ op_b118_3, 0, 45336, 0, 2, 1 }, /* EOR */ +{ op_b120_3, 0, 45344, 2, 2, 1 }, /* EOR */ +{ op_b128_3, 0, 45352, 0, 3, 1 }, /* EOR */ +{ op_b130_3, 0, 45360, 2, 3, 1 }, /* EOR */ +{ op_b138_3, 0, 45368, 0, 3, 1 }, /* EOR */ +{ op_b139_3, 0, 45369, 0, 4, 1 }, /* EOR */ +{ op_b140_3, 0, 45376, 0, 1, 0 }, /* EOR */ +{ op_b148_3, 0, 45384, 0, 3, 0 }, /* CMPM */ +{ op_b150_3, 0, 45392, 0, 2, 1 }, /* EOR */ +{ op_b158_3, 0, 45400, 0, 2, 1 }, /* EOR */ +{ op_b160_3, 0, 45408, 2, 2, 1 }, /* EOR */ +{ op_b168_3, 0, 45416, 0, 3, 1 }, /* EOR */ +{ op_b170_3, 0, 45424, 2, 3, 1 }, /* EOR */ +{ op_b178_3, 0, 45432, 0, 3, 1 }, /* EOR */ +{ op_b179_3, 0, 45433, 0, 4, 1 }, /* EOR */ +{ op_b180_3, 0, 45440, 4, 1, 0 }, /* EOR */ +{ op_b188_3, 0, 45448, 0, 5, 0 }, /* CMPM */ +{ op_b190_3, 0, 45456, 0, 3, 2 }, /* EOR */ +{ op_b198_3, 0, 45464, 0, 3, 2 }, /* EOR */ +{ op_b1a0_3, 0, 45472, 2, 3, 2 }, /* EOR */ +{ op_b1a8_3, 0, 45480, 0, 4, 2 }, /* EOR */ +{ op_b1b0_3, 0, 45488, 2, 4, 2 }, /* EOR */ +{ op_b1b8_3, 0, 45496, 0, 4, 2 }, /* EOR */ +{ op_b1b9_3, 0, 45497, 0, 5, 2 }, /* EOR */ +{ op_b1c0_3, 0, 45504, 2, 1, 0 }, /* CMPA */ +{ op_b1c8_3, 0, 45512, 2, 1, 0 }, /* CMPA */ +{ op_b1d0_3, 0, 45520, 2, 3, 0 }, /* CMPA */ +{ op_b1d8_3, 0, 45528, 2, 3, 0 }, /* CMPA */ +{ op_b1e0_3, 0, 45536, 4, 3, 0 }, /* CMPA */ +{ op_b1e8_3, 0, 45544, 2, 4, 0 }, /* CMPA */ +{ op_b1f0_3, 0, 45552, 4, 4, 0 }, /* CMPA */ +{ op_b1f8_3, 0, 45560, 2, 4, 0 }, /* CMPA */ +{ op_b1f9_3, 0, 45561, 2, 5, 0 }, /* CMPA */ +{ op_b1fa_3, 0, 45562, 2, 4, 0 }, /* CMPA */ +{ op_b1fb_3, 0, 45563, 4, 4, 0 }, /* CMPA */ +{ op_b1fc_3, 0, 45564, 2, 3, 0 }, /* CMPA */ +{ op_c000_3, 0, 49152, 0, 1, 0 }, /* AND */ +{ op_c010_3, 0, 49168, 0, 2, 0 }, /* AND */ +{ op_c018_3, 0, 49176, 0, 2, 0 }, /* AND */ +{ op_c020_3, 0, 49184, 2, 2, 0 }, /* AND */ +{ op_c028_3, 0, 49192, 0, 3, 0 }, /* AND */ +{ op_c030_3, 0, 49200, 2, 3, 0 }, /* AND */ +{ op_c038_3, 0, 49208, 0, 3, 0 }, /* AND */ +{ op_c039_3, 0, 49209, 0, 4, 0 }, /* AND */ +{ op_c03a_3, 0, 49210, 0, 3, 0 }, /* AND */ +{ op_c03b_3, 0, 49211, 2, 3, 0 }, /* AND */ +{ op_c03c_3, 0, 49212, 0, 2, 0 }, /* AND */ +{ op_c040_3, 0, 49216, 0, 1, 0 }, /* AND */ +{ op_c050_3, 0, 49232, 0, 2, 0 }, /* AND */ +{ op_c058_3, 0, 49240, 0, 2, 0 }, /* AND */ +{ op_c060_3, 0, 49248, 2, 2, 0 }, /* AND */ +{ op_c068_3, 0, 49256, 0, 3, 0 }, /* AND */ +{ op_c070_3, 0, 49264, 2, 3, 0 }, /* AND */ +{ op_c078_3, 0, 49272, 0, 3, 0 }, /* AND */ +{ op_c079_3, 0, 49273, 0, 4, 0 }, /* AND */ +{ op_c07a_3, 0, 49274, 0, 3, 0 }, /* AND */ +{ op_c07b_3, 0, 49275, 2, 3, 0 }, /* AND */ +{ op_c07c_3, 0, 49276, 0, 2, 0 }, /* AND */ +{ op_c080_3, 0, 49280, 2, 1, 0 }, /* AND */ +{ op_c090_3, 0, 49296, 2, 3, 0 }, /* AND */ +{ op_c098_3, 0, 49304, 2, 3, 0 }, /* AND */ +{ op_c0a0_3, 0, 49312, 4, 3, 0 }, /* AND */ +{ op_c0a8_3, 0, 49320, 2, 4, 0 }, /* AND */ +{ op_c0b0_3, 0, 49328, 4, 4, 0 }, /* AND */ +{ op_c0b8_3, 0, 49336, 2, 4, 0 }, /* AND */ +{ op_c0b9_3, 0, 49337, 2, 5, 0 }, /* AND */ +{ op_c0ba_3, 0, 49338, 2, 4, 0 }, /* AND */ +{ op_c0bb_3, 0, 49339, 4, 4, 0 }, /* AND */ +{ op_c0bc_3, 0, 49340, 2, 3, 0 }, /* AND */ +{ op_c0c0_3, 0, 49344, 66, 1, 0 }, /* MULU */ +{ op_c0d0_3, 0, 49360, 66, 2, 0 }, /* MULU */ +{ op_c0d8_3, 0, 49368, 66, 2, 0 }, /* MULU */ +{ op_c0e0_3, 0, 49376, 68, 2, 0 }, /* MULU */ +{ op_c0e8_3, 0, 49384, 66, 3, 0 }, /* MULU */ +{ op_c0f0_3, 0, 49392, 68, 3, 0 }, /* MULU */ +{ op_c0f8_3, 0, 49400, 66, 3, 0 }, /* MULU */ +{ op_c0f9_3, 0, 49401, 66, 4, 0 }, /* MULU */ +{ op_c0fa_3, 0, 49402, 66, 3, 0 }, /* MULU */ +{ op_c0fb_3, 0, 49403, 68, 3, 0 }, /* MULU */ +{ op_c0fc_3, 0, 49404, 66, 2, 0 }, /* MULU */ +{ op_c100_3, 0, 49408, 2, 1, 0 }, /* ABCD */ +{ op_c108_3, 0, 49416, 2, 3, 1 }, /* ABCD */ +{ op_c110_3, 0, 49424, 0, 2, 1 }, /* AND */ +{ op_c118_3, 0, 49432, 0, 2, 1 }, /* AND */ +{ op_c120_3, 0, 49440, 2, 2, 1 }, /* AND */ +{ op_c128_3, 0, 49448, 0, 3, 1 }, /* AND */ +{ op_c130_3, 0, 49456, 2, 3, 1 }, /* AND */ +{ op_c138_3, 0, 49464, 0, 3, 1 }, /* AND */ +{ op_c139_3, 0, 49465, 0, 4, 1 }, /* AND */ +{ op_c140_3, 0, 49472, 2, 1, 0 }, /* EXG */ +{ op_c148_3, 0, 49480, 2, 1, 0 }, /* EXG */ +{ op_c150_3, 0, 49488, 0, 2, 1 }, /* AND */ +{ op_c158_3, 0, 49496, 0, 2, 1 }, /* AND */ +{ op_c160_3, 0, 49504, 2, 2, 1 }, /* AND */ +{ op_c168_3, 0, 49512, 0, 3, 1 }, /* AND */ +{ op_c170_3, 0, 49520, 2, 3, 1 }, /* AND */ +{ op_c178_3, 0, 49528, 0, 3, 1 }, /* AND */ +{ op_c179_3, 0, 49529, 0, 4, 1 }, /* AND */ +{ op_c188_3, 0, 49544, 2, 1, 0 }, /* EXG */ +{ op_c190_3, 0, 49552, 0, 3, 2 }, /* AND */ +{ op_c198_3, 0, 49560, 0, 3, 2 }, /* AND */ +{ op_c1a0_3, 0, 49568, 2, 3, 2 }, /* AND */ +{ op_c1a8_3, 0, 49576, 0, 4, 2 }, /* AND */ +{ op_c1b0_3, 0, 49584, 2, 4, 2 }, /* AND */ +{ op_c1b8_3, 0, 49592, 0, 4, 2 }, /* AND */ +{ op_c1b9_3, 0, 49593, 0, 5, 2 }, /* AND */ +{ op_c1c0_3, 0, 49600, 66, 1, 0 }, /* MULS */ +{ op_c1d0_3, 0, 49616, 66, 2, 0 }, /* MULS */ +{ op_c1d8_3, 0, 49624, 66, 2, 0 }, /* MULS */ +{ op_c1e0_3, 0, 49632, 68, 2, 0 }, /* MULS */ +{ op_c1e8_3, 0, 49640, 66, 3, 0 }, /* MULS */ +{ op_c1f0_3, 0, 49648, 68, 3, 0 }, /* MULS */ +{ op_c1f8_3, 0, 49656, 66, 3, 0 }, /* MULS */ +{ op_c1f9_3, 0, 49657, 66, 4, 0 }, /* MULS */ +{ op_c1fa_3, 0, 49658, 66, 3, 0 }, /* MULS */ +{ op_c1fb_3, 0, 49659, 68, 3, 0 }, /* MULS */ +{ op_c1fc_3, 0, 49660, 66, 2, 0 }, /* MULS */ +{ op_d000_3, 0, 53248, 0, 1, 0 }, /* ADD */ +{ op_d010_3, 0, 53264, 0, 2, 0 }, /* ADD */ +{ op_d018_3, 0, 53272, 0, 2, 0 }, /* ADD */ +{ op_d020_3, 0, 53280, 2, 2, 0 }, /* ADD */ +{ op_d028_3, 0, 53288, 0, 3, 0 }, /* ADD */ +{ op_d030_3, 0, 53296, 2, 3, 0 }, /* ADD */ +{ op_d038_3, 0, 53304, 0, 3, 0 }, /* ADD */ +{ op_d039_3, 0, 53305, 0, 4, 0 }, /* ADD */ +{ op_d03a_3, 0, 53306, 0, 3, 0 }, /* ADD */ +{ op_d03b_3, 0, 53307, 2, 3, 0 }, /* ADD */ +{ op_d03c_3, 0, 53308, 0, 2, 0 }, /* ADD */ +{ op_d040_3, 0, 53312, 0, 1, 0 }, /* ADD */ +{ op_d048_3, 0, 53320, 0, 1, 0 }, /* ADD */ +{ op_d050_3, 0, 53328, 0, 2, 0 }, /* ADD */ +{ op_d058_3, 0, 53336, 0, 2, 0 }, /* ADD */ +{ op_d060_3, 0, 53344, 2, 2, 0 }, /* ADD */ +{ op_d068_3, 0, 53352, 0, 3, 0 }, /* ADD */ +{ op_d070_3, 0, 53360, 2, 3, 0 }, /* ADD */ +{ op_d078_3, 0, 53368, 0, 3, 0 }, /* ADD */ +{ op_d079_3, 0, 53369, 0, 4, 0 }, /* ADD */ +{ op_d07a_3, 0, 53370, 0, 3, 0 }, /* ADD */ +{ op_d07b_3, 0, 53371, 2, 3, 0 }, /* ADD */ +{ op_d07c_3, 0, 53372, 0, 2, 0 }, /* ADD */ +{ op_d080_3, 0, 53376, 4, 1, 0 }, /* ADD */ +{ op_d088_3, 0, 53384, 4, 1, 0 }, /* ADD */ +{ op_d090_3, 0, 53392, 2, 3, 0 }, /* ADD */ +{ op_d098_3, 0, 53400, 2, 3, 0 }, /* ADD */ +{ op_d0a0_3, 0, 53408, 4, 3, 0 }, /* ADD */ +{ op_d0a8_3, 0, 53416, 2, 4, 0 }, /* ADD */ +{ op_d0b0_3, 0, 53424, 4, 4, 0 }, /* ADD */ +{ op_d0b8_3, 0, 53432, 2, 4, 0 }, /* ADD */ +{ op_d0b9_3, 0, 53433, 2, 5, 0 }, /* ADD */ +{ op_d0ba_3, 0, 53434, 2, 4, 0 }, /* ADD */ +{ op_d0bb_3, 0, 53435, 4, 4, 0 }, /* ADD */ +{ op_d0bc_3, 0, 53436, 4, 3, 0 }, /* ADD */ +{ op_d0c0_3, 0, 53440, 4, 1, 0 }, /* ADDA */ +{ op_d0c8_3, 0, 53448, 4, 1, 0 }, /* ADDA */ +{ op_d0d0_3, 0, 53456, 4, 2, 0 }, /* ADDA */ +{ op_d0d8_3, 0, 53464, 4, 2, 0 }, /* ADDA */ +{ op_d0e0_3, 0, 53472, 6, 2, 0 }, /* ADDA */ +{ op_d0e8_3, 0, 53480, 4, 3, 0 }, /* ADDA */ +{ op_d0f0_3, 0, 53488, 6, 3, 0 }, /* ADDA */ +{ op_d0f8_3, 0, 53496, 4, 3, 0 }, /* ADDA */ +{ op_d0f9_3, 0, 53497, 4, 4, 0 }, /* ADDA */ +{ op_d0fa_3, 0, 53498, 4, 3, 0 }, /* ADDA */ +{ op_d0fb_3, 0, 53499, 6, 3, 0 }, /* ADDA */ +{ op_d0fc_3, 0, 53500, 4, 2, 0 }, /* ADDA */ +{ op_d100_3, 0, 53504, 0, 1, 0 }, /* ADDX */ +{ op_d108_3, 0, 53512, 2, 3, 1 }, /* ADDX */ +{ op_d110_3, 0, 53520, 0, 2, 1 }, /* ADD */ +{ op_d118_3, 0, 53528, 0, 2, 1 }, /* ADD */ +{ op_d120_3, 0, 53536, 2, 2, 1 }, /* ADD */ +{ op_d128_3, 0, 53544, 0, 3, 1 }, /* ADD */ +{ op_d130_3, 0, 53552, 2, 3, 1 }, /* ADD */ +{ op_d138_3, 0, 53560, 0, 3, 1 }, /* ADD */ +{ op_d139_3, 0, 53561, 0, 4, 1 }, /* ADD */ +{ op_d140_3, 0, 53568, 0, 1, 0 }, /* ADDX */ +{ op_d148_3, 0, 53576, 2, 3, 1 }, /* ADDX */ +{ op_d150_3, 0, 53584, 0, 2, 1 }, /* ADD */ +{ op_d158_3, 0, 53592, 0, 2, 1 }, /* ADD */ +{ op_d160_3, 0, 53600, 2, 2, 1 }, /* ADD */ +{ op_d168_3, 0, 53608, 0, 3, 1 }, /* ADD */ +{ op_d170_3, 0, 53616, 2, 3, 1 }, /* ADD */ +{ op_d178_3, 0, 53624, 0, 3, 1 }, /* ADD */ +{ op_d179_3, 0, 53625, 0, 4, 1 }, /* ADD */ +{ op_d180_3, 0, 53632, 4, 1, 0 }, /* ADDX */ +{ op_d188_3, 0, 53640, 2, 5, 2 }, /* ADDX */ +{ op_d190_3, 0, 53648, 0, 3, 2 }, /* ADD */ +{ op_d198_3, 0, 53656, 0, 3, 2 }, /* ADD */ +{ op_d1a0_3, 0, 53664, 2, 3, 2 }, /* ADD */ +{ op_d1a8_3, 0, 53672, 0, 4, 2 }, /* ADD */ +{ op_d1b0_3, 0, 53680, 2, 4, 2 }, /* ADD */ +{ op_d1b8_3, 0, 53688, 0, 4, 2 }, /* ADD */ +{ op_d1b9_3, 0, 53689, 0, 5, 2 }, /* ADD */ +{ op_d1c0_3, 0, 53696, 4, 1, 0 }, /* ADDA */ +{ op_d1c8_3, 0, 53704, 4, 1, 0 }, /* ADDA */ +{ op_d1d0_3, 0, 53712, 2, 3, 0 }, /* ADDA */ +{ op_d1d8_3, 0, 53720, 2, 3, 0 }, /* ADDA */ +{ op_d1e0_3, 0, 53728, 4, 3, 0 }, /* ADDA */ +{ op_d1e8_3, 0, 53736, 2, 4, 0 }, /* ADDA */ +{ op_d1f0_3, 0, 53744, 4, 4, 0 }, /* ADDA */ +{ op_d1f8_3, 0, 53752, 2, 4, 0 }, /* ADDA */ +{ op_d1f9_3, 0, 53753, 2, 5, 0 }, /* ADDA */ +{ op_d1fa_3, 0, 53754, 2, 4, 0 }, /* ADDA */ +{ op_d1fb_3, 0, 53755, 4, 4, 0 }, /* ADDA */ +{ op_d1fc_3, 0, 53756, 4, 3, 0 }, /* ADDA */ +{ op_e000_3, 0, 57344, 2, 1, 0 }, /* ASR */ +{ op_e008_3, 0, 57352, 2, 1, 0 }, /* LSR */ +{ op_e010_3, 0, 57360, 2, 1, 0 }, /* ROXR */ +{ op_e018_3, 0, 57368, 2, 1, 0 }, /* ROR */ +{ op_e020_3, 0, 57376, 2, 1, 0 }, /* ASR */ +{ op_e028_3, 0, 57384, 2, 1, 0 }, /* LSR */ +{ op_e030_3, 0, 57392, 2, 1, 0 }, /* ROXR */ +{ op_e038_3, 0, 57400, 2, 1, 0 }, /* ROR */ +{ op_e040_3, 0, 57408, 2, 1, 0 }, /* ASR */ +{ op_e048_3, 0, 57416, 2, 1, 0 }, /* LSR */ +{ op_e050_3, 0, 57424, 2, 1, 0 }, /* ROXR */ +{ op_e058_3, 0, 57432, 2, 1, 0 }, /* ROR */ +{ op_e060_3, 0, 57440, 2, 1, 0 }, /* ASR */ +{ op_e068_3, 0, 57448, 2, 1, 0 }, /* LSR */ +{ op_e070_3, 0, 57456, 2, 1, 0 }, /* ROXR */ +{ op_e078_3, 0, 57464, 2, 1, 0 }, /* ROR */ +{ op_e080_3, 0, 57472, 4, 1, 0 }, /* ASR */ +{ op_e088_3, 0, 57480, 4, 1, 0 }, /* LSR */ +{ op_e090_3, 0, 57488, 4, 1, 0 }, /* ROXR */ +{ op_e098_3, 0, 57496, 4, 1, 0 }, /* ROR */ +{ op_e0a0_3, 0, 57504, 4, 1, 0 }, /* ASR */ +{ op_e0a8_3, 0, 57512, 4, 1, 0 }, /* LSR */ +{ op_e0b0_3, 0, 57520, 4, 1, 0 }, /* ROXR */ +{ op_e0b8_3, 0, 57528, 4, 1, 0 }, /* ROR */ +{ op_e0d0_3, 0, 57552, 0, 2, 1 }, /* ASRW */ +{ op_e0d8_3, 0, 57560, 0, 2, 1 }, /* ASRW */ +{ op_e0e0_3, 0, 57568, 2, 2, 1 }, /* ASRW */ +{ op_e0e8_3, 0, 57576, 0, 3, 1 }, /* ASRW */ +{ op_e0f0_3, 0, 57584, 2, 3, 1 }, /* ASRW */ +{ op_e0f8_3, 0, 57592, 0, 3, 1 }, /* ASRW */ +{ op_e0f9_3, 0, 57593, 0, 4, 1 }, /* ASRW */ +{ op_e100_3, 0, 57600, 2, 1, 0 }, /* ASL */ +{ op_e108_3, 0, 57608, 2, 1, 0 }, /* LSL */ +{ op_e110_3, 0, 57616, 2, 1, 0 }, /* ROXL */ +{ op_e118_3, 0, 57624, 2, 1, 0 }, /* ROL */ +{ op_e120_3, 0, 57632, 2, 1, 0 }, /* ASL */ +{ op_e128_3, 0, 57640, 2, 1, 0 }, /* LSL */ +{ op_e130_3, 0, 57648, 2, 1, 0 }, /* ROXL */ +{ op_e138_3, 0, 57656, 2, 1, 0 }, /* ROL */ +{ op_e140_3, 0, 57664, 2, 1, 0 }, /* ASL */ +{ op_e148_3, 0, 57672, 2, 1, 0 }, /* LSL */ +{ op_e150_3, 0, 57680, 2, 1, 0 }, /* ROXL */ +{ op_e158_3, 0, 57688, 2, 1, 0 }, /* ROL */ +{ op_e160_3, 0, 57696, 2, 1, 0 }, /* ASL */ +{ op_e168_3, 0, 57704, 2, 1, 0 }, /* LSL */ +{ op_e170_3, 0, 57712, 2, 1, 0 }, /* ROXL */ +{ op_e178_3, 0, 57720, 2, 1, 0 }, /* ROL */ +{ op_e180_3, 0, 57728, 4, 1, 0 }, /* ASL */ +{ op_e188_3, 0, 57736, 4, 1, 0 }, /* LSL */ +{ op_e190_3, 0, 57744, 4, 1, 0 }, /* ROXL */ +{ op_e198_3, 0, 57752, 4, 1, 0 }, /* ROL */ +{ op_e1a0_3, 0, 57760, 4, 1, 0 }, /* ASL */ +{ op_e1a8_3, 0, 57768, 4, 1, 0 }, /* LSL */ +{ op_e1b0_3, 0, 57776, 4, 1, 0 }, /* ROXL */ +{ op_e1b8_3, 0, 57784, 4, 1, 0 }, /* ROL */ +{ op_e1d0_3, 0, 57808, 0, 2, 1 }, /* ASLW */ +{ op_e1d8_3, 0, 57816, 0, 2, 1 }, /* ASLW */ +{ op_e1e0_3, 0, 57824, 2, 2, 1 }, /* ASLW */ +{ op_e1e8_3, 0, 57832, 0, 3, 1 }, /* ASLW */ +{ op_e1f0_3, 0, 57840, 2, 3, 1 }, /* ASLW */ +{ op_e1f8_3, 0, 57848, 0, 3, 1 }, /* ASLW */ +{ op_e1f9_3, 0, 57849, 0, 4, 1 }, /* ASLW */ +{ op_e2d0_3, 0, 58064, 0, 2, 1 }, /* LSRW */ +{ op_e2d8_3, 0, 58072, 0, 2, 1 }, /* LSRW */ +{ op_e2e0_3, 0, 58080, 2, 2, 1 }, /* LSRW */ +{ op_e2e8_3, 0, 58088, 0, 3, 1 }, /* LSRW */ +{ op_e2f0_3, 0, 58096, 2, 3, 1 }, /* LSRW */ +{ op_e2f8_3, 0, 58104, 0, 3, 1 }, /* LSRW */ +{ op_e2f9_3, 0, 58105, 0, 4, 1 }, /* LSRW */ +{ op_e3d0_3, 0, 58320, 0, 2, 1 }, /* LSLW */ +{ op_e3d8_3, 0, 58328, 0, 2, 1 }, /* LSLW */ +{ op_e3e0_3, 0, 58336, 2, 2, 1 }, /* LSLW */ +{ op_e3e8_3, 0, 58344, 0, 3, 1 }, /* LSLW */ +{ op_e3f0_3, 0, 58352, 2, 3, 1 }, /* LSLW */ +{ op_e3f8_3, 0, 58360, 0, 3, 1 }, /* LSLW */ +{ op_e3f9_3, 0, 58361, 0, 4, 1 }, /* LSLW */ +{ op_e4d0_3, 0, 58576, 0, 2, 1 }, /* ROXRW */ +{ op_e4d8_3, 0, 58584, 0, 2, 1 }, /* ROXRW */ +{ op_e4e0_3, 0, 58592, 2, 2, 1 }, /* ROXRW */ +{ op_e4e8_3, 0, 58600, 0, 3, 1 }, /* ROXRW */ +{ op_e4f0_3, 0, 58608, 2, 3, 1 }, /* ROXRW */ +{ op_e4f8_3, 0, 58616, 0, 3, 1 }, /* ROXRW */ +{ op_e4f9_3, 0, 58617, 0, 4, 1 }, /* ROXRW */ +{ op_e5d0_3, 0, 58832, 0, 2, 1 }, /* ROXLW */ +{ op_e5d8_3, 0, 58840, 0, 2, 1 }, /* ROXLW */ +{ op_e5e0_3, 0, 58848, 2, 2, 1 }, /* ROXLW */ +{ op_e5e8_3, 0, 58856, 0, 3, 1 }, /* ROXLW */ +{ op_e5f0_3, 0, 58864, 2, 3, 1 }, /* ROXLW */ +{ op_e5f8_3, 0, 58872, 0, 3, 1 }, /* ROXLW */ +{ op_e5f9_3, 0, 58873, 0, 4, 1 }, /* ROXLW */ +{ op_e6d0_3, 0, 59088, 0, 2, 1 }, /* RORW */ +{ op_e6d8_3, 0, 59096, 0, 2, 1 }, /* RORW */ +{ op_e6e0_3, 0, 59104, 2, 2, 1 }, /* RORW */ +{ op_e6e8_3, 0, 59112, 0, 3, 1 }, /* RORW */ +{ op_e6f0_3, 0, 59120, 2, 3, 1 }, /* RORW */ +{ op_e6f8_3, 0, 59128, 0, 3, 1 }, /* RORW */ +{ op_e6f9_3, 0, 59129, 0, 4, 1 }, /* RORW */ +{ op_e7d0_3, 0, 59344, 0, 2, 1 }, /* ROLW */ +{ op_e7d8_3, 0, 59352, 0, 2, 1 }, /* ROLW */ +{ op_e7e0_3, 0, 59360, 2, 2, 1 }, /* ROLW */ +{ op_e7e8_3, 0, 59368, 0, 3, 1 }, /* ROLW */ +{ op_e7f0_3, 0, 59376, 2, 3, 1 }, /* ROLW */ +{ op_e7f8_3, 0, 59384, 0, 3, 1 }, /* ROLW */ +{ op_e7f9_3, 0, 59385, 0, 4, 1 }, /* ROLW */ +{ 0, 0, 0 }}; diff --git a/SrcShared/UAE/cputbl.h b/SrcShared/UAE/cputbl.h new file mode 100644 index 0000000..c13d061 --- /dev/null +++ b/SrcShared/UAE/cputbl.h @@ -0,0 +1,1584 @@ +extern cpuop_func op_0_3; +extern cpuop_func op_10_3; +extern cpuop_func op_18_3; +extern cpuop_func op_20_3; +extern cpuop_func op_28_3; +extern cpuop_func op_30_3; +extern cpuop_func op_38_3; +extern cpuop_func op_39_3; +extern cpuop_func op_3c_3; +extern cpuop_func op_40_3; +extern cpuop_func op_50_3; +extern cpuop_func op_58_3; +extern cpuop_func op_60_3; +extern cpuop_func op_68_3; +extern cpuop_func op_70_3; +extern cpuop_func op_78_3; +extern cpuop_func op_79_3; +extern cpuop_func op_7c_3; +extern cpuop_func op_80_3; +extern cpuop_func op_90_3; +extern cpuop_func op_98_3; +extern cpuop_func op_a0_3; +extern cpuop_func op_a8_3; +extern cpuop_func op_b0_3; +extern cpuop_func op_b8_3; +extern cpuop_func op_b9_3; +extern cpuop_func op_100_3; +extern cpuop_func op_108_3; +extern cpuop_func op_110_3; +extern cpuop_func op_118_3; +extern cpuop_func op_120_3; +extern cpuop_func op_128_3; +extern cpuop_func op_130_3; +extern cpuop_func op_138_3; +extern cpuop_func op_139_3; +extern cpuop_func op_13a_3; +extern cpuop_func op_13b_3; +extern cpuop_func op_13c_3; +extern cpuop_func op_140_3; +extern cpuop_func op_148_3; +extern cpuop_func op_150_3; +extern cpuop_func op_158_3; +extern cpuop_func op_160_3; +extern cpuop_func op_168_3; +extern cpuop_func op_170_3; +extern cpuop_func op_178_3; +extern cpuop_func op_179_3; +extern cpuop_func op_17a_3; +extern cpuop_func op_17b_3; +extern cpuop_func op_180_3; +extern cpuop_func op_188_3; +extern cpuop_func op_190_3; +extern cpuop_func op_198_3; +extern cpuop_func op_1a0_3; +extern cpuop_func op_1a8_3; +extern cpuop_func op_1b0_3; +extern cpuop_func op_1b8_3; +extern cpuop_func op_1b9_3; +extern cpuop_func op_1ba_3; +extern cpuop_func op_1bb_3; +extern cpuop_func op_1c0_3; +extern cpuop_func op_1c8_3; +extern cpuop_func op_1d0_3; +extern cpuop_func op_1d8_3; +extern cpuop_func op_1e0_3; +extern cpuop_func op_1e8_3; +extern cpuop_func op_1f0_3; +extern cpuop_func op_1f8_3; +extern cpuop_func op_1f9_3; +extern cpuop_func op_1fa_3; +extern cpuop_func op_1fb_3; +extern cpuop_func op_200_3; +extern cpuop_func op_210_3; +extern cpuop_func op_218_3; +extern cpuop_func op_220_3; +extern cpuop_func op_228_3; +extern cpuop_func op_230_3; +extern cpuop_func op_238_3; +extern cpuop_func op_239_3; +extern cpuop_func op_23c_3; +extern cpuop_func op_240_3; +extern cpuop_func op_250_3; +extern cpuop_func op_258_3; +extern cpuop_func op_260_3; +extern cpuop_func op_268_3; +extern cpuop_func op_270_3; +extern cpuop_func op_278_3; +extern cpuop_func op_279_3; +extern cpuop_func op_27c_3; +extern cpuop_func op_280_3; +extern cpuop_func op_290_3; +extern cpuop_func op_298_3; +extern cpuop_func op_2a0_3; +extern cpuop_func op_2a8_3; +extern cpuop_func op_2b0_3; +extern cpuop_func op_2b8_3; +extern cpuop_func op_2b9_3; +extern cpuop_func op_400_3; +extern cpuop_func op_410_3; +extern cpuop_func op_418_3; +extern cpuop_func op_420_3; +extern cpuop_func op_428_3; +extern cpuop_func op_430_3; +extern cpuop_func op_438_3; +extern cpuop_func op_439_3; +extern cpuop_func op_440_3; +extern cpuop_func op_450_3; +extern cpuop_func op_458_3; +extern cpuop_func op_460_3; +extern cpuop_func op_468_3; +extern cpuop_func op_470_3; +extern cpuop_func op_478_3; +extern cpuop_func op_479_3; +extern cpuop_func op_480_3; +extern cpuop_func op_490_3; +extern cpuop_func op_498_3; +extern cpuop_func op_4a0_3; +extern cpuop_func op_4a8_3; +extern cpuop_func op_4b0_3; +extern cpuop_func op_4b8_3; +extern cpuop_func op_4b9_3; +extern cpuop_func op_600_3; +extern cpuop_func op_610_3; +extern cpuop_func op_618_3; +extern cpuop_func op_620_3; +extern cpuop_func op_628_3; +extern cpuop_func op_630_3; +extern cpuop_func op_638_3; +extern cpuop_func op_639_3; +extern cpuop_func op_640_3; +extern cpuop_func op_650_3; +extern cpuop_func op_658_3; +extern cpuop_func op_660_3; +extern cpuop_func op_668_3; +extern cpuop_func op_670_3; +extern cpuop_func op_678_3; +extern cpuop_func op_679_3; +extern cpuop_func op_680_3; +extern cpuop_func op_690_3; +extern cpuop_func op_698_3; +extern cpuop_func op_6a0_3; +extern cpuop_func op_6a8_3; +extern cpuop_func op_6b0_3; +extern cpuop_func op_6b8_3; +extern cpuop_func op_6b9_3; +extern cpuop_func op_800_3; +extern cpuop_func op_810_3; +extern cpuop_func op_818_3; +extern cpuop_func op_820_3; +extern cpuop_func op_828_3; +extern cpuop_func op_830_3; +extern cpuop_func op_838_3; +extern cpuop_func op_839_3; +extern cpuop_func op_83a_3; +extern cpuop_func op_83b_3; +extern cpuop_func op_83c_3; +extern cpuop_func op_840_3; +extern cpuop_func op_850_3; +extern cpuop_func op_858_3; +extern cpuop_func op_860_3; +extern cpuop_func op_868_3; +extern cpuop_func op_870_3; +extern cpuop_func op_878_3; +extern cpuop_func op_879_3; +extern cpuop_func op_87a_3; +extern cpuop_func op_87b_3; +extern cpuop_func op_880_3; +extern cpuop_func op_890_3; +extern cpuop_func op_898_3; +extern cpuop_func op_8a0_3; +extern cpuop_func op_8a8_3; +extern cpuop_func op_8b0_3; +extern cpuop_func op_8b8_3; +extern cpuop_func op_8b9_3; +extern cpuop_func op_8ba_3; +extern cpuop_func op_8bb_3; +extern cpuop_func op_8c0_3; +extern cpuop_func op_8d0_3; +extern cpuop_func op_8d8_3; +extern cpuop_func op_8e0_3; +extern cpuop_func op_8e8_3; +extern cpuop_func op_8f0_3; +extern cpuop_func op_8f8_3; +extern cpuop_func op_8f9_3; +extern cpuop_func op_8fa_3; +extern cpuop_func op_8fb_3; +extern cpuop_func op_a00_3; +extern cpuop_func op_a10_3; +extern cpuop_func op_a18_3; +extern cpuop_func op_a20_3; +extern cpuop_func op_a28_3; +extern cpuop_func op_a30_3; +extern cpuop_func op_a38_3; +extern cpuop_func op_a39_3; +extern cpuop_func op_a3c_3; +extern cpuop_func op_a40_3; +extern cpuop_func op_a50_3; +extern cpuop_func op_a58_3; +extern cpuop_func op_a60_3; +extern cpuop_func op_a68_3; +extern cpuop_func op_a70_3; +extern cpuop_func op_a78_3; +extern cpuop_func op_a79_3; +extern cpuop_func op_a7c_3; +extern cpuop_func op_a80_3; +extern cpuop_func op_a90_3; +extern cpuop_func op_a98_3; +extern cpuop_func op_aa0_3; +extern cpuop_func op_aa8_3; +extern cpuop_func op_ab0_3; +extern cpuop_func op_ab8_3; +extern cpuop_func op_ab9_3; +extern cpuop_func op_c00_3; +extern cpuop_func op_c10_3; +extern cpuop_func op_c18_3; +extern cpuop_func op_c20_3; +extern cpuop_func op_c28_3; +extern cpuop_func op_c30_3; +extern cpuop_func op_c38_3; +extern cpuop_func op_c39_3; +extern cpuop_func op_c3a_3; +extern cpuop_func op_c3b_3; +extern cpuop_func op_c40_3; +extern cpuop_func op_c50_3; +extern cpuop_func op_c58_3; +extern cpuop_func op_c60_3; +extern cpuop_func op_c68_3; +extern cpuop_func op_c70_3; +extern cpuop_func op_c78_3; +extern cpuop_func op_c79_3; +extern cpuop_func op_c7a_3; +extern cpuop_func op_c7b_3; +extern cpuop_func op_c80_3; +extern cpuop_func op_c90_3; +extern cpuop_func op_c98_3; +extern cpuop_func op_ca0_3; +extern cpuop_func op_ca8_3; +extern cpuop_func op_cb0_3; +extern cpuop_func op_cb8_3; +extern cpuop_func op_cb9_3; +extern cpuop_func op_cba_3; +extern cpuop_func op_cbb_3; +extern cpuop_func op_1000_3; +extern cpuop_func op_1010_3; +extern cpuop_func op_1018_3; +extern cpuop_func op_1020_3; +extern cpuop_func op_1028_3; +extern cpuop_func op_1030_3; +extern cpuop_func op_1038_3; +extern cpuop_func op_1039_3; +extern cpuop_func op_103a_3; +extern cpuop_func op_103b_3; +extern cpuop_func op_103c_3; +extern cpuop_func op_1080_3; +extern cpuop_func op_1090_3; +extern cpuop_func op_1098_3; +extern cpuop_func op_10a0_3; +extern cpuop_func op_10a8_3; +extern cpuop_func op_10b0_3; +extern cpuop_func op_10b8_3; +extern cpuop_func op_10b9_3; +extern cpuop_func op_10ba_3; +extern cpuop_func op_10bb_3; +extern cpuop_func op_10bc_3; +extern cpuop_func op_10c0_3; +extern cpuop_func op_10d0_3; +extern cpuop_func op_10d8_3; +extern cpuop_func op_10e0_3; +extern cpuop_func op_10e8_3; +extern cpuop_func op_10f0_3; +extern cpuop_func op_10f8_3; +extern cpuop_func op_10f9_3; +extern cpuop_func op_10fa_3; +extern cpuop_func op_10fb_3; +extern cpuop_func op_10fc_3; +extern cpuop_func op_1100_3; +extern cpuop_func op_1110_3; +extern cpuop_func op_1118_3; +extern cpuop_func op_1120_3; +extern cpuop_func op_1128_3; +extern cpuop_func op_1130_3; +extern cpuop_func op_1138_3; +extern cpuop_func op_1139_3; +extern cpuop_func op_113a_3; +extern cpuop_func op_113b_3; +extern cpuop_func op_113c_3; +extern cpuop_func op_1140_3; +extern cpuop_func op_1150_3; +extern cpuop_func op_1158_3; +extern cpuop_func op_1160_3; +extern cpuop_func op_1168_3; +extern cpuop_func op_1170_3; +extern cpuop_func op_1178_3; +extern cpuop_func op_1179_3; +extern cpuop_func op_117a_3; +extern cpuop_func op_117b_3; +extern cpuop_func op_117c_3; +extern cpuop_func op_1180_3; +extern cpuop_func op_1190_3; +extern cpuop_func op_1198_3; +extern cpuop_func op_11a0_3; +extern cpuop_func op_11a8_3; +extern cpuop_func op_11b0_3; +extern cpuop_func op_11b8_3; +extern cpuop_func op_11b9_3; +extern cpuop_func op_11ba_3; +extern cpuop_func op_11bb_3; +extern cpuop_func op_11bc_3; +extern cpuop_func op_11c0_3; +extern cpuop_func op_11d0_3; +extern cpuop_func op_11d8_3; +extern cpuop_func op_11e0_3; +extern cpuop_func op_11e8_3; +extern cpuop_func op_11f0_3; +extern cpuop_func op_11f8_3; +extern cpuop_func op_11f9_3; +extern cpuop_func op_11fa_3; +extern cpuop_func op_11fb_3; +extern cpuop_func op_11fc_3; +extern cpuop_func op_13c0_3; +extern cpuop_func op_13d0_3; +extern cpuop_func op_13d8_3; +extern cpuop_func op_13e0_3; +extern cpuop_func op_13e8_3; +extern cpuop_func op_13f0_3; +extern cpuop_func op_13f8_3; +extern cpuop_func op_13f9_3; +extern cpuop_func op_13fa_3; +extern cpuop_func op_13fb_3; +extern cpuop_func op_13fc_3; +extern cpuop_func op_2000_3; +extern cpuop_func op_2008_3; +extern cpuop_func op_2010_3; +extern cpuop_func op_2018_3; +extern cpuop_func op_2020_3; +extern cpuop_func op_2028_3; +extern cpuop_func op_2030_3; +extern cpuop_func op_2038_3; +extern cpuop_func op_2039_3; +extern cpuop_func op_203a_3; +extern cpuop_func op_203b_3; +extern cpuop_func op_203c_3; +extern cpuop_func op_2040_3; +extern cpuop_func op_2048_3; +extern cpuop_func op_2050_3; +extern cpuop_func op_2058_3; +extern cpuop_func op_2060_3; +extern cpuop_func op_2068_3; +extern cpuop_func op_2070_3; +extern cpuop_func op_2078_3; +extern cpuop_func op_2079_3; +extern cpuop_func op_207a_3; +extern cpuop_func op_207b_3; +extern cpuop_func op_207c_3; +extern cpuop_func op_2080_3; +extern cpuop_func op_2088_3; +extern cpuop_func op_2090_3; +extern cpuop_func op_2098_3; +extern cpuop_func op_20a0_3; +extern cpuop_func op_20a8_3; +extern cpuop_func op_20b0_3; +extern cpuop_func op_20b8_3; +extern cpuop_func op_20b9_3; +extern cpuop_func op_20ba_3; +extern cpuop_func op_20bb_3; +extern cpuop_func op_20bc_3; +extern cpuop_func op_20c0_3; +extern cpuop_func op_20c8_3; +extern cpuop_func op_20d0_3; +extern cpuop_func op_20d8_3; +extern cpuop_func op_20e0_3; +extern cpuop_func op_20e8_3; +extern cpuop_func op_20f0_3; +extern cpuop_func op_20f8_3; +extern cpuop_func op_20f9_3; +extern cpuop_func op_20fa_3; +extern cpuop_func op_20fb_3; +extern cpuop_func op_20fc_3; +extern cpuop_func op_2100_3; +extern cpuop_func op_2108_3; +extern cpuop_func op_2110_3; +extern cpuop_func op_2118_3; +extern cpuop_func op_2120_3; +extern cpuop_func op_2128_3; +extern cpuop_func op_2130_3; +extern cpuop_func op_2138_3; +extern cpuop_func op_2139_3; +extern cpuop_func op_213a_3; +extern cpuop_func op_213b_3; +extern cpuop_func op_213c_3; +extern cpuop_func op_2140_3; +extern cpuop_func op_2148_3; +extern cpuop_func op_2150_3; +extern cpuop_func op_2158_3; +extern cpuop_func op_2160_3; +extern cpuop_func op_2168_3; +extern cpuop_func op_2170_3; +extern cpuop_func op_2178_3; +extern cpuop_func op_2179_3; +extern cpuop_func op_217a_3; +extern cpuop_func op_217b_3; +extern cpuop_func op_217c_3; +extern cpuop_func op_2180_3; +extern cpuop_func op_2188_3; +extern cpuop_func op_2190_3; +extern cpuop_func op_2198_3; +extern cpuop_func op_21a0_3; +extern cpuop_func op_21a8_3; +extern cpuop_func op_21b0_3; +extern cpuop_func op_21b8_3; +extern cpuop_func op_21b9_3; +extern cpuop_func op_21ba_3; +extern cpuop_func op_21bb_3; +extern cpuop_func op_21bc_3; +extern cpuop_func op_21c0_3; +extern cpuop_func op_21c8_3; +extern cpuop_func op_21d0_3; +extern cpuop_func op_21d8_3; +extern cpuop_func op_21e0_3; +extern cpuop_func op_21e8_3; +extern cpuop_func op_21f0_3; +extern cpuop_func op_21f8_3; +extern cpuop_func op_21f9_3; +extern cpuop_func op_21fa_3; +extern cpuop_func op_21fb_3; +extern cpuop_func op_21fc_3; +extern cpuop_func op_23c0_3; +extern cpuop_func op_23c8_3; +extern cpuop_func op_23d0_3; +extern cpuop_func op_23d8_3; +extern cpuop_func op_23e0_3; +extern cpuop_func op_23e8_3; +extern cpuop_func op_23f0_3; +extern cpuop_func op_23f8_3; +extern cpuop_func op_23f9_3; +extern cpuop_func op_23fa_3; +extern cpuop_func op_23fb_3; +extern cpuop_func op_23fc_3; +extern cpuop_func op_3000_3; +extern cpuop_func op_3008_3; +extern cpuop_func op_3010_3; +extern cpuop_func op_3018_3; +extern cpuop_func op_3020_3; +extern cpuop_func op_3028_3; +extern cpuop_func op_3030_3; +extern cpuop_func op_3038_3; +extern cpuop_func op_3039_3; +extern cpuop_func op_303a_3; +extern cpuop_func op_303b_3; +extern cpuop_func op_303c_3; +extern cpuop_func op_3040_3; +extern cpuop_func op_3048_3; +extern cpuop_func op_3050_3; +extern cpuop_func op_3058_3; +extern cpuop_func op_3060_3; +extern cpuop_func op_3068_3; +extern cpuop_func op_3070_3; +extern cpuop_func op_3078_3; +extern cpuop_func op_3079_3; +extern cpuop_func op_307a_3; +extern cpuop_func op_307b_3; +extern cpuop_func op_307c_3; +extern cpuop_func op_3080_3; +extern cpuop_func op_3088_3; +extern cpuop_func op_3090_3; +extern cpuop_func op_3098_3; +extern cpuop_func op_30a0_3; +extern cpuop_func op_30a8_3; +extern cpuop_func op_30b0_3; +extern cpuop_func op_30b8_3; +extern cpuop_func op_30b9_3; +extern cpuop_func op_30ba_3; +extern cpuop_func op_30bb_3; +extern cpuop_func op_30bc_3; +extern cpuop_func op_30c0_3; +extern cpuop_func op_30c8_3; +extern cpuop_func op_30d0_3; +extern cpuop_func op_30d8_3; +extern cpuop_func op_30e0_3; +extern cpuop_func op_30e8_3; +extern cpuop_func op_30f0_3; +extern cpuop_func op_30f8_3; +extern cpuop_func op_30f9_3; +extern cpuop_func op_30fa_3; +extern cpuop_func op_30fb_3; +extern cpuop_func op_30fc_3; +extern cpuop_func op_3100_3; +extern cpuop_func op_3108_3; +extern cpuop_func op_3110_3; +extern cpuop_func op_3118_3; +extern cpuop_func op_3120_3; +extern cpuop_func op_3128_3; +extern cpuop_func op_3130_3; +extern cpuop_func op_3138_3; +extern cpuop_func op_3139_3; +extern cpuop_func op_313a_3; +extern cpuop_func op_313b_3; +extern cpuop_func op_313c_3; +extern cpuop_func op_3140_3; +extern cpuop_func op_3148_3; +extern cpuop_func op_3150_3; +extern cpuop_func op_3158_3; +extern cpuop_func op_3160_3; +extern cpuop_func op_3168_3; +extern cpuop_func op_3170_3; +extern cpuop_func op_3178_3; +extern cpuop_func op_3179_3; +extern cpuop_func op_317a_3; +extern cpuop_func op_317b_3; +extern cpuop_func op_317c_3; +extern cpuop_func op_3180_3; +extern cpuop_func op_3188_3; +extern cpuop_func op_3190_3; +extern cpuop_func op_3198_3; +extern cpuop_func op_31a0_3; +extern cpuop_func op_31a8_3; +extern cpuop_func op_31b0_3; +extern cpuop_func op_31b8_3; +extern cpuop_func op_31b9_3; +extern cpuop_func op_31ba_3; +extern cpuop_func op_31bb_3; +extern cpuop_func op_31bc_3; +extern cpuop_func op_31c0_3; +extern cpuop_func op_31c8_3; +extern cpuop_func op_31d0_3; +extern cpuop_func op_31d8_3; +extern cpuop_func op_31e0_3; +extern cpuop_func op_31e8_3; +extern cpuop_func op_31f0_3; +extern cpuop_func op_31f8_3; +extern cpuop_func op_31f9_3; +extern cpuop_func op_31fa_3; +extern cpuop_func op_31fb_3; +extern cpuop_func op_31fc_3; +extern cpuop_func op_33c0_3; +extern cpuop_func op_33c8_3; +extern cpuop_func op_33d0_3; +extern cpuop_func op_33d8_3; +extern cpuop_func op_33e0_3; +extern cpuop_func op_33e8_3; +extern cpuop_func op_33f0_3; +extern cpuop_func op_33f8_3; +extern cpuop_func op_33f9_3; +extern cpuop_func op_33fa_3; +extern cpuop_func op_33fb_3; +extern cpuop_func op_33fc_3; +extern cpuop_func op_4000_3; +extern cpuop_func op_4010_3; +extern cpuop_func op_4018_3; +extern cpuop_func op_4020_3; +extern cpuop_func op_4028_3; +extern cpuop_func op_4030_3; +extern cpuop_func op_4038_3; +extern cpuop_func op_4039_3; +extern cpuop_func op_4040_3; +extern cpuop_func op_4050_3; +extern cpuop_func op_4058_3; +extern cpuop_func op_4060_3; +extern cpuop_func op_4068_3; +extern cpuop_func op_4070_3; +extern cpuop_func op_4078_3; +extern cpuop_func op_4079_3; +extern cpuop_func op_4080_3; +extern cpuop_func op_4090_3; +extern cpuop_func op_4098_3; +extern cpuop_func op_40a0_3; +extern cpuop_func op_40a8_3; +extern cpuop_func op_40b0_3; +extern cpuop_func op_40b8_3; +extern cpuop_func op_40b9_3; +extern cpuop_func op_40c0_3; +extern cpuop_func op_40d0_3; +extern cpuop_func op_40d8_3; +extern cpuop_func op_40e0_3; +extern cpuop_func op_40e8_3; +extern cpuop_func op_40f0_3; +extern cpuop_func op_40f8_3; +extern cpuop_func op_40f9_3; +extern cpuop_func op_4100_3; +extern cpuop_func op_4110_3; +extern cpuop_func op_4118_3; +extern cpuop_func op_4120_3; +extern cpuop_func op_4128_3; +extern cpuop_func op_4130_3; +extern cpuop_func op_4138_3; +extern cpuop_func op_4139_3; +extern cpuop_func op_413a_3; +extern cpuop_func op_413b_3; +extern cpuop_func op_413c_3; +extern cpuop_func op_4180_3; +extern cpuop_func op_4190_3; +extern cpuop_func op_4198_3; +extern cpuop_func op_41a0_3; +extern cpuop_func op_41a8_3; +extern cpuop_func op_41b0_3; +extern cpuop_func op_41b8_3; +extern cpuop_func op_41b9_3; +extern cpuop_func op_41ba_3; +extern cpuop_func op_41bb_3; +extern cpuop_func op_41bc_3; +extern cpuop_func op_41d0_3; +extern cpuop_func op_41e8_3; +extern cpuop_func op_41f0_3; +extern cpuop_func op_41f8_3; +extern cpuop_func op_41f9_3; +extern cpuop_func op_41fa_3; +extern cpuop_func op_41fb_3; +extern cpuop_func op_4200_3; +extern cpuop_func op_4210_3; +extern cpuop_func op_4218_3; +extern cpuop_func op_4220_3; +extern cpuop_func op_4228_3; +extern cpuop_func op_4230_3; +extern cpuop_func op_4238_3; +extern cpuop_func op_4239_3; +extern cpuop_func op_4240_3; +extern cpuop_func op_4250_3; +extern cpuop_func op_4258_3; +extern cpuop_func op_4260_3; +extern cpuop_func op_4268_3; +extern cpuop_func op_4270_3; +extern cpuop_func op_4278_3; +extern cpuop_func op_4279_3; +extern cpuop_func op_4280_3; +extern cpuop_func op_4290_3; +extern cpuop_func op_4298_3; +extern cpuop_func op_42a0_3; +extern cpuop_func op_42a8_3; +extern cpuop_func op_42b0_3; +extern cpuop_func op_42b8_3; +extern cpuop_func op_42b9_3; +extern cpuop_func op_4400_3; +extern cpuop_func op_4410_3; +extern cpuop_func op_4418_3; +extern cpuop_func op_4420_3; +extern cpuop_func op_4428_3; +extern cpuop_func op_4430_3; +extern cpuop_func op_4438_3; +extern cpuop_func op_4439_3; +extern cpuop_func op_4440_3; +extern cpuop_func op_4450_3; +extern cpuop_func op_4458_3; +extern cpuop_func op_4460_3; +extern cpuop_func op_4468_3; +extern cpuop_func op_4470_3; +extern cpuop_func op_4478_3; +extern cpuop_func op_4479_3; +extern cpuop_func op_4480_3; +extern cpuop_func op_4490_3; +extern cpuop_func op_4498_3; +extern cpuop_func op_44a0_3; +extern cpuop_func op_44a8_3; +extern cpuop_func op_44b0_3; +extern cpuop_func op_44b8_3; +extern cpuop_func op_44b9_3; +extern cpuop_func op_44c0_3; +extern cpuop_func op_44d0_3; +extern cpuop_func op_44d8_3; +extern cpuop_func op_44e0_3; +extern cpuop_func op_44e8_3; +extern cpuop_func op_44f0_3; +extern cpuop_func op_44f8_3; +extern cpuop_func op_44f9_3; +extern cpuop_func op_44fa_3; +extern cpuop_func op_44fb_3; +extern cpuop_func op_44fc_3; +extern cpuop_func op_4600_3; +extern cpuop_func op_4610_3; +extern cpuop_func op_4618_3; +extern cpuop_func op_4620_3; +extern cpuop_func op_4628_3; +extern cpuop_func op_4630_3; +extern cpuop_func op_4638_3; +extern cpuop_func op_4639_3; +extern cpuop_func op_4640_3; +extern cpuop_func op_4650_3; +extern cpuop_func op_4658_3; +extern cpuop_func op_4660_3; +extern cpuop_func op_4668_3; +extern cpuop_func op_4670_3; +extern cpuop_func op_4678_3; +extern cpuop_func op_4679_3; +extern cpuop_func op_4680_3; +extern cpuop_func op_4690_3; +extern cpuop_func op_4698_3; +extern cpuop_func op_46a0_3; +extern cpuop_func op_46a8_3; +extern cpuop_func op_46b0_3; +extern cpuop_func op_46b8_3; +extern cpuop_func op_46b9_3; +extern cpuop_func op_46c0_3; +extern cpuop_func op_46d0_3; +extern cpuop_func op_46d8_3; +extern cpuop_func op_46e0_3; +extern cpuop_func op_46e8_3; +extern cpuop_func op_46f0_3; +extern cpuop_func op_46f8_3; +extern cpuop_func op_46f9_3; +extern cpuop_func op_46fa_3; +extern cpuop_func op_46fb_3; +extern cpuop_func op_46fc_3; +extern cpuop_func op_4800_3; +extern cpuop_func op_4810_3; +extern cpuop_func op_4818_3; +extern cpuop_func op_4820_3; +extern cpuop_func op_4828_3; +extern cpuop_func op_4830_3; +extern cpuop_func op_4838_3; +extern cpuop_func op_4839_3; +extern cpuop_func op_4840_3; +extern cpuop_func op_4850_3; +extern cpuop_func op_4868_3; +extern cpuop_func op_4870_3; +extern cpuop_func op_4878_3; +extern cpuop_func op_4879_3; +extern cpuop_func op_487a_3; +extern cpuop_func op_487b_3; +extern cpuop_func op_4880_3; +extern cpuop_func op_4890_3; +extern cpuop_func op_48a0_3; +extern cpuop_func op_48a8_3; +extern cpuop_func op_48b0_3; +extern cpuop_func op_48b8_3; +extern cpuop_func op_48b9_3; +extern cpuop_func op_48c0_3; +extern cpuop_func op_48d0_3; +extern cpuop_func op_48e0_3; +extern cpuop_func op_48e8_3; +extern cpuop_func op_48f0_3; +extern cpuop_func op_48f8_3; +extern cpuop_func op_48f9_3; +extern cpuop_func op_49c0_3; +extern cpuop_func op_4a00_3; +extern cpuop_func op_4a10_3; +extern cpuop_func op_4a18_3; +extern cpuop_func op_4a20_3; +extern cpuop_func op_4a28_3; +extern cpuop_func op_4a30_3; +extern cpuop_func op_4a38_3; +extern cpuop_func op_4a39_3; +extern cpuop_func op_4a3a_3; +extern cpuop_func op_4a3b_3; +extern cpuop_func op_4a3c_3; +extern cpuop_func op_4a40_3; +extern cpuop_func op_4a48_3; +extern cpuop_func op_4a50_3; +extern cpuop_func op_4a58_3; +extern cpuop_func op_4a60_3; +extern cpuop_func op_4a68_3; +extern cpuop_func op_4a70_3; +extern cpuop_func op_4a78_3; +extern cpuop_func op_4a79_3; +extern cpuop_func op_4a7a_3; +extern cpuop_func op_4a7b_3; +extern cpuop_func op_4a7c_3; +extern cpuop_func op_4a80_3; +extern cpuop_func op_4a88_3; +extern cpuop_func op_4a90_3; +extern cpuop_func op_4a98_3; +extern cpuop_func op_4aa0_3; +extern cpuop_func op_4aa8_3; +extern cpuop_func op_4ab0_3; +extern cpuop_func op_4ab8_3; +extern cpuop_func op_4ab9_3; +extern cpuop_func op_4aba_3; +extern cpuop_func op_4abb_3; +extern cpuop_func op_4abc_3; +extern cpuop_func op_4ac0_3; +extern cpuop_func op_4ad0_3; +extern cpuop_func op_4ad8_3; +extern cpuop_func op_4ae0_3; +extern cpuop_func op_4ae8_3; +extern cpuop_func op_4af0_3; +extern cpuop_func op_4af8_3; +extern cpuop_func op_4af9_3; +extern cpuop_func op_4c90_3; +extern cpuop_func op_4c98_3; +extern cpuop_func op_4ca8_3; +extern cpuop_func op_4cb0_3; +extern cpuop_func op_4cb8_3; +extern cpuop_func op_4cb9_3; +extern cpuop_func op_4cba_3; +extern cpuop_func op_4cbb_3; +extern cpuop_func op_4cd0_3; +extern cpuop_func op_4cd8_3; +extern cpuop_func op_4ce8_3; +extern cpuop_func op_4cf0_3; +extern cpuop_func op_4cf8_3; +extern cpuop_func op_4cf9_3; +extern cpuop_func op_4cfa_3; +extern cpuop_func op_4cfb_3; +extern cpuop_func op_4e40_3; +extern cpuop_func op_4e50_3; +extern cpuop_func op_4e58_3; +extern cpuop_func op_4e60_3; +extern cpuop_func op_4e68_3; +extern cpuop_func op_4e70_3; +extern cpuop_func op_4e71_3; +extern cpuop_func op_4e72_3; +extern cpuop_func op_4e73_3; +extern cpuop_func op_4e74_3; +extern cpuop_func op_4e75_3; +extern cpuop_func op_4e76_3; +extern cpuop_func op_4e77_3; +extern cpuop_func op_4e90_3; +extern cpuop_func op_4ea8_3; +extern cpuop_func op_4eb0_3; +extern cpuop_func op_4eb8_3; +extern cpuop_func op_4eb9_3; +extern cpuop_func op_4eba_3; +extern cpuop_func op_4ebb_3; +extern cpuop_func op_4ed0_3; +extern cpuop_func op_4ee8_3; +extern cpuop_func op_4ef0_3; +extern cpuop_func op_4ef8_3; +extern cpuop_func op_4ef9_3; +extern cpuop_func op_4efa_3; +extern cpuop_func op_4efb_3; +extern cpuop_func op_5000_3; +extern cpuop_func op_5010_3; +extern cpuop_func op_5018_3; +extern cpuop_func op_5020_3; +extern cpuop_func op_5028_3; +extern cpuop_func op_5030_3; +extern cpuop_func op_5038_3; +extern cpuop_func op_5039_3; +extern cpuop_func op_5040_3; +extern cpuop_func op_5048_3; +extern cpuop_func op_5050_3; +extern cpuop_func op_5058_3; +extern cpuop_func op_5060_3; +extern cpuop_func op_5068_3; +extern cpuop_func op_5070_3; +extern cpuop_func op_5078_3; +extern cpuop_func op_5079_3; +extern cpuop_func op_5080_3; +extern cpuop_func op_5088_3; +extern cpuop_func op_5090_3; +extern cpuop_func op_5098_3; +extern cpuop_func op_50a0_3; +extern cpuop_func op_50a8_3; +extern cpuop_func op_50b0_3; +extern cpuop_func op_50b8_3; +extern cpuop_func op_50b9_3; +extern cpuop_func op_50c0_3; +extern cpuop_func op_50c8_3; +extern cpuop_func op_50d0_3; +extern cpuop_func op_50d8_3; +extern cpuop_func op_50e0_3; +extern cpuop_func op_50e8_3; +extern cpuop_func op_50f0_3; +extern cpuop_func op_50f8_3; +extern cpuop_func op_50f9_3; +extern cpuop_func op_5100_3; +extern cpuop_func op_5110_3; +extern cpuop_func op_5118_3; +extern cpuop_func op_5120_3; +extern cpuop_func op_5128_3; +extern cpuop_func op_5130_3; +extern cpuop_func op_5138_3; +extern cpuop_func op_5139_3; +extern cpuop_func op_5140_3; +extern cpuop_func op_5148_3; +extern cpuop_func op_5150_3; +extern cpuop_func op_5158_3; +extern cpuop_func op_5160_3; +extern cpuop_func op_5168_3; +extern cpuop_func op_5170_3; +extern cpuop_func op_5178_3; +extern cpuop_func op_5179_3; +extern cpuop_func op_5180_3; +extern cpuop_func op_5188_3; +extern cpuop_func op_5190_3; +extern cpuop_func op_5198_3; +extern cpuop_func op_51a0_3; +extern cpuop_func op_51a8_3; +extern cpuop_func op_51b0_3; +extern cpuop_func op_51b8_3; +extern cpuop_func op_51b9_3; +extern cpuop_func op_51c0_3; +extern cpuop_func op_51c8_3; +extern cpuop_func op_51d0_3; +extern cpuop_func op_51d8_3; +extern cpuop_func op_51e0_3; +extern cpuop_func op_51e8_3; +extern cpuop_func op_51f0_3; +extern cpuop_func op_51f8_3; +extern cpuop_func op_51f9_3; +extern cpuop_func op_52c0_3; +extern cpuop_func op_52c8_3; +extern cpuop_func op_52d0_3; +extern cpuop_func op_52d8_3; +extern cpuop_func op_52e0_3; +extern cpuop_func op_52e8_3; +extern cpuop_func op_52f0_3; +extern cpuop_func op_52f8_3; +extern cpuop_func op_52f9_3; +extern cpuop_func op_53c0_3; +extern cpuop_func op_53c8_3; +extern cpuop_func op_53d0_3; +extern cpuop_func op_53d8_3; +extern cpuop_func op_53e0_3; +extern cpuop_func op_53e8_3; +extern cpuop_func op_53f0_3; +extern cpuop_func op_53f8_3; +extern cpuop_func op_53f9_3; +extern cpuop_func op_54c0_3; +extern cpuop_func op_54c8_3; +extern cpuop_func op_54d0_3; +extern cpuop_func op_54d8_3; +extern cpuop_func op_54e0_3; +extern cpuop_func op_54e8_3; +extern cpuop_func op_54f0_3; +extern cpuop_func op_54f8_3; +extern cpuop_func op_54f9_3; +extern cpuop_func op_55c0_3; +extern cpuop_func op_55c8_3; +extern cpuop_func op_55d0_3; +extern cpuop_func op_55d8_3; +extern cpuop_func op_55e0_3; +extern cpuop_func op_55e8_3; +extern cpuop_func op_55f0_3; +extern cpuop_func op_55f8_3; +extern cpuop_func op_55f9_3; +extern cpuop_func op_56c0_3; +extern cpuop_func op_56c8_3; +extern cpuop_func op_56d0_3; +extern cpuop_func op_56d8_3; +extern cpuop_func op_56e0_3; +extern cpuop_func op_56e8_3; +extern cpuop_func op_56f0_3; +extern cpuop_func op_56f8_3; +extern cpuop_func op_56f9_3; +extern cpuop_func op_57c0_3; +extern cpuop_func op_57c8_3; +extern cpuop_func op_57d0_3; +extern cpuop_func op_57d8_3; +extern cpuop_func op_57e0_3; +extern cpuop_func op_57e8_3; +extern cpuop_func op_57f0_3; +extern cpuop_func op_57f8_3; +extern cpuop_func op_57f9_3; +extern cpuop_func op_58c0_3; +extern cpuop_func op_58c8_3; +extern cpuop_func op_58d0_3; +extern cpuop_func op_58d8_3; +extern cpuop_func op_58e0_3; +extern cpuop_func op_58e8_3; +extern cpuop_func op_58f0_3; +extern cpuop_func op_58f8_3; +extern cpuop_func op_58f9_3; +extern cpuop_func op_59c0_3; +extern cpuop_func op_59c8_3; +extern cpuop_func op_59d0_3; +extern cpuop_func op_59d8_3; +extern cpuop_func op_59e0_3; +extern cpuop_func op_59e8_3; +extern cpuop_func op_59f0_3; +extern cpuop_func op_59f8_3; +extern cpuop_func op_59f9_3; +extern cpuop_func op_5ac0_3; +extern cpuop_func op_5ac8_3; +extern cpuop_func op_5ad0_3; +extern cpuop_func op_5ad8_3; +extern cpuop_func op_5ae0_3; +extern cpuop_func op_5ae8_3; +extern cpuop_func op_5af0_3; +extern cpuop_func op_5af8_3; +extern cpuop_func op_5af9_3; +extern cpuop_func op_5bc0_3; +extern cpuop_func op_5bc8_3; +extern cpuop_func op_5bd0_3; +extern cpuop_func op_5bd8_3; +extern cpuop_func op_5be0_3; +extern cpuop_func op_5be8_3; +extern cpuop_func op_5bf0_3; +extern cpuop_func op_5bf8_3; +extern cpuop_func op_5bf9_3; +extern cpuop_func op_5cc0_3; +extern cpuop_func op_5cc8_3; +extern cpuop_func op_5cd0_3; +extern cpuop_func op_5cd8_3; +extern cpuop_func op_5ce0_3; +extern cpuop_func op_5ce8_3; +extern cpuop_func op_5cf0_3; +extern cpuop_func op_5cf8_3; +extern cpuop_func op_5cf9_3; +extern cpuop_func op_5dc0_3; +extern cpuop_func op_5dc8_3; +extern cpuop_func op_5dd0_3; +extern cpuop_func op_5dd8_3; +extern cpuop_func op_5de0_3; +extern cpuop_func op_5de8_3; +extern cpuop_func op_5df0_3; +extern cpuop_func op_5df8_3; +extern cpuop_func op_5df9_3; +extern cpuop_func op_5ec0_3; +extern cpuop_func op_5ec8_3; +extern cpuop_func op_5ed0_3; +extern cpuop_func op_5ed8_3; +extern cpuop_func op_5ee0_3; +extern cpuop_func op_5ee8_3; +extern cpuop_func op_5ef0_3; +extern cpuop_func op_5ef8_3; +extern cpuop_func op_5ef9_3; +extern cpuop_func op_5fc0_3; +extern cpuop_func op_5fc8_3; +extern cpuop_func op_5fd0_3; +extern cpuop_func op_5fd8_3; +extern cpuop_func op_5fe0_3; +extern cpuop_func op_5fe8_3; +extern cpuop_func op_5ff0_3; +extern cpuop_func op_5ff8_3; +extern cpuop_func op_5ff9_3; +extern cpuop_func op_6000_3; +extern cpuop_func op_6001_3; +extern cpuop_func op_60ff_3; +extern cpuop_func op_6100_3; +extern cpuop_func op_6101_3; +extern cpuop_func op_61ff_3; +extern cpuop_func op_6200_3; +extern cpuop_func op_6201_3; +extern cpuop_func op_62ff_3; +extern cpuop_func op_6300_3; +extern cpuop_func op_6301_3; +extern cpuop_func op_63ff_3; +extern cpuop_func op_6400_3; +extern cpuop_func op_6401_3; +extern cpuop_func op_64ff_3; +extern cpuop_func op_6500_3; +extern cpuop_func op_6501_3; +extern cpuop_func op_65ff_3; +extern cpuop_func op_6600_3; +extern cpuop_func op_6601_3; +extern cpuop_func op_66ff_3; +extern cpuop_func op_6700_3; +extern cpuop_func op_6701_3; +extern cpuop_func op_67ff_3; +extern cpuop_func op_6800_3; +extern cpuop_func op_6801_3; +extern cpuop_func op_68ff_3; +extern cpuop_func op_6900_3; +extern cpuop_func op_6901_3; +extern cpuop_func op_69ff_3; +extern cpuop_func op_6a00_3; +extern cpuop_func op_6a01_3; +extern cpuop_func op_6aff_3; +extern cpuop_func op_6b00_3; +extern cpuop_func op_6b01_3; +extern cpuop_func op_6bff_3; +extern cpuop_func op_6c00_3; +extern cpuop_func op_6c01_3; +extern cpuop_func op_6cff_3; +extern cpuop_func op_6d00_3; +extern cpuop_func op_6d01_3; +extern cpuop_func op_6dff_3; +extern cpuop_func op_6e00_3; +extern cpuop_func op_6e01_3; +extern cpuop_func op_6eff_3; +extern cpuop_func op_6f00_3; +extern cpuop_func op_6f01_3; +extern cpuop_func op_6fff_3; +extern cpuop_func op_7000_3; +extern cpuop_func op_8000_3; +extern cpuop_func op_8010_3; +extern cpuop_func op_8018_3; +extern cpuop_func op_8020_3; +extern cpuop_func op_8028_3; +extern cpuop_func op_8030_3; +extern cpuop_func op_8038_3; +extern cpuop_func op_8039_3; +extern cpuop_func op_803a_3; +extern cpuop_func op_803b_3; +extern cpuop_func op_803c_3; +extern cpuop_func op_8040_3; +extern cpuop_func op_8050_3; +extern cpuop_func op_8058_3; +extern cpuop_func op_8060_3; +extern cpuop_func op_8068_3; +extern cpuop_func op_8070_3; +extern cpuop_func op_8078_3; +extern cpuop_func op_8079_3; +extern cpuop_func op_807a_3; +extern cpuop_func op_807b_3; +extern cpuop_func op_807c_3; +extern cpuop_func op_8080_3; +extern cpuop_func op_8090_3; +extern cpuop_func op_8098_3; +extern cpuop_func op_80a0_3; +extern cpuop_func op_80a8_3; +extern cpuop_func op_80b0_3; +extern cpuop_func op_80b8_3; +extern cpuop_func op_80b9_3; +extern cpuop_func op_80ba_3; +extern cpuop_func op_80bb_3; +extern cpuop_func op_80bc_3; +extern cpuop_func op_80c0_3; +extern cpuop_func op_80d0_3; +extern cpuop_func op_80d8_3; +extern cpuop_func op_80e0_3; +extern cpuop_func op_80e8_3; +extern cpuop_func op_80f0_3; +extern cpuop_func op_80f8_3; +extern cpuop_func op_80f9_3; +extern cpuop_func op_80fa_3; +extern cpuop_func op_80fb_3; +extern cpuop_func op_80fc_3; +extern cpuop_func op_8100_3; +extern cpuop_func op_8108_3; +extern cpuop_func op_8110_3; +extern cpuop_func op_8118_3; +extern cpuop_func op_8120_3; +extern cpuop_func op_8128_3; +extern cpuop_func op_8130_3; +extern cpuop_func op_8138_3; +extern cpuop_func op_8139_3; +extern cpuop_func op_8150_3; +extern cpuop_func op_8158_3; +extern cpuop_func op_8160_3; +extern cpuop_func op_8168_3; +extern cpuop_func op_8170_3; +extern cpuop_func op_8178_3; +extern cpuop_func op_8179_3; +extern cpuop_func op_8190_3; +extern cpuop_func op_8198_3; +extern cpuop_func op_81a0_3; +extern cpuop_func op_81a8_3; +extern cpuop_func op_81b0_3; +extern cpuop_func op_81b8_3; +extern cpuop_func op_81b9_3; +extern cpuop_func op_81c0_3; +extern cpuop_func op_81d0_3; +extern cpuop_func op_81d8_3; +extern cpuop_func op_81e0_3; +extern cpuop_func op_81e8_3; +extern cpuop_func op_81f0_3; +extern cpuop_func op_81f8_3; +extern cpuop_func op_81f9_3; +extern cpuop_func op_81fa_3; +extern cpuop_func op_81fb_3; +extern cpuop_func op_81fc_3; +extern cpuop_func op_9000_3; +extern cpuop_func op_9010_3; +extern cpuop_func op_9018_3; +extern cpuop_func op_9020_3; +extern cpuop_func op_9028_3; +extern cpuop_func op_9030_3; +extern cpuop_func op_9038_3; +extern cpuop_func op_9039_3; +extern cpuop_func op_903a_3; +extern cpuop_func op_903b_3; +extern cpuop_func op_903c_3; +extern cpuop_func op_9040_3; +extern cpuop_func op_9048_3; +extern cpuop_func op_9050_3; +extern cpuop_func op_9058_3; +extern cpuop_func op_9060_3; +extern cpuop_func op_9068_3; +extern cpuop_func op_9070_3; +extern cpuop_func op_9078_3; +extern cpuop_func op_9079_3; +extern cpuop_func op_907a_3; +extern cpuop_func op_907b_3; +extern cpuop_func op_907c_3; +extern cpuop_func op_9080_3; +extern cpuop_func op_9088_3; +extern cpuop_func op_9090_3; +extern cpuop_func op_9098_3; +extern cpuop_func op_90a0_3; +extern cpuop_func op_90a8_3; +extern cpuop_func op_90b0_3; +extern cpuop_func op_90b8_3; +extern cpuop_func op_90b9_3; +extern cpuop_func op_90ba_3; +extern cpuop_func op_90bb_3; +extern cpuop_func op_90bc_3; +extern cpuop_func op_90c0_3; +extern cpuop_func op_90c8_3; +extern cpuop_func op_90d0_3; +extern cpuop_func op_90d8_3; +extern cpuop_func op_90e0_3; +extern cpuop_func op_90e8_3; +extern cpuop_func op_90f0_3; +extern cpuop_func op_90f8_3; +extern cpuop_func op_90f9_3; +extern cpuop_func op_90fa_3; +extern cpuop_func op_90fb_3; +extern cpuop_func op_90fc_3; +extern cpuop_func op_9100_3; +extern cpuop_func op_9108_3; +extern cpuop_func op_9110_3; +extern cpuop_func op_9118_3; +extern cpuop_func op_9120_3; +extern cpuop_func op_9128_3; +extern cpuop_func op_9130_3; +extern cpuop_func op_9138_3; +extern cpuop_func op_9139_3; +extern cpuop_func op_9140_3; +extern cpuop_func op_9148_3; +extern cpuop_func op_9150_3; +extern cpuop_func op_9158_3; +extern cpuop_func op_9160_3; +extern cpuop_func op_9168_3; +extern cpuop_func op_9170_3; +extern cpuop_func op_9178_3; +extern cpuop_func op_9179_3; +extern cpuop_func op_9180_3; +extern cpuop_func op_9188_3; +extern cpuop_func op_9190_3; +extern cpuop_func op_9198_3; +extern cpuop_func op_91a0_3; +extern cpuop_func op_91a8_3; +extern cpuop_func op_91b0_3; +extern cpuop_func op_91b8_3; +extern cpuop_func op_91b9_3; +extern cpuop_func op_91c0_3; +extern cpuop_func op_91c8_3; +extern cpuop_func op_91d0_3; +extern cpuop_func op_91d8_3; +extern cpuop_func op_91e0_3; +extern cpuop_func op_91e8_3; +extern cpuop_func op_91f0_3; +extern cpuop_func op_91f8_3; +extern cpuop_func op_91f9_3; +extern cpuop_func op_91fa_3; +extern cpuop_func op_91fb_3; +extern cpuop_func op_91fc_3; +extern cpuop_func op_b000_3; +extern cpuop_func op_b010_3; +extern cpuop_func op_b018_3; +extern cpuop_func op_b020_3; +extern cpuop_func op_b028_3; +extern cpuop_func op_b030_3; +extern cpuop_func op_b038_3; +extern cpuop_func op_b039_3; +extern cpuop_func op_b03a_3; +extern cpuop_func op_b03b_3; +extern cpuop_func op_b03c_3; +extern cpuop_func op_b040_3; +extern cpuop_func op_b048_3; +extern cpuop_func op_b050_3; +extern cpuop_func op_b058_3; +extern cpuop_func op_b060_3; +extern cpuop_func op_b068_3; +extern cpuop_func op_b070_3; +extern cpuop_func op_b078_3; +extern cpuop_func op_b079_3; +extern cpuop_func op_b07a_3; +extern cpuop_func op_b07b_3; +extern cpuop_func op_b07c_3; +extern cpuop_func op_b080_3; +extern cpuop_func op_b088_3; +extern cpuop_func op_b090_3; +extern cpuop_func op_b098_3; +extern cpuop_func op_b0a0_3; +extern cpuop_func op_b0a8_3; +extern cpuop_func op_b0b0_3; +extern cpuop_func op_b0b8_3; +extern cpuop_func op_b0b9_3; +extern cpuop_func op_b0ba_3; +extern cpuop_func op_b0bb_3; +extern cpuop_func op_b0bc_3; +extern cpuop_func op_b0c0_3; +extern cpuop_func op_b0c8_3; +extern cpuop_func op_b0d0_3; +extern cpuop_func op_b0d8_3; +extern cpuop_func op_b0e0_3; +extern cpuop_func op_b0e8_3; +extern cpuop_func op_b0f0_3; +extern cpuop_func op_b0f8_3; +extern cpuop_func op_b0f9_3; +extern cpuop_func op_b0fa_3; +extern cpuop_func op_b0fb_3; +extern cpuop_func op_b0fc_3; +extern cpuop_func op_b100_3; +extern cpuop_func op_b108_3; +extern cpuop_func op_b110_3; +extern cpuop_func op_b118_3; +extern cpuop_func op_b120_3; +extern cpuop_func op_b128_3; +extern cpuop_func op_b130_3; +extern cpuop_func op_b138_3; +extern cpuop_func op_b139_3; +extern cpuop_func op_b140_3; +extern cpuop_func op_b148_3; +extern cpuop_func op_b150_3; +extern cpuop_func op_b158_3; +extern cpuop_func op_b160_3; +extern cpuop_func op_b168_3; +extern cpuop_func op_b170_3; +extern cpuop_func op_b178_3; +extern cpuop_func op_b179_3; +extern cpuop_func op_b180_3; +extern cpuop_func op_b188_3; +extern cpuop_func op_b190_3; +extern cpuop_func op_b198_3; +extern cpuop_func op_b1a0_3; +extern cpuop_func op_b1a8_3; +extern cpuop_func op_b1b0_3; +extern cpuop_func op_b1b8_3; +extern cpuop_func op_b1b9_3; +extern cpuop_func op_b1c0_3; +extern cpuop_func op_b1c8_3; +extern cpuop_func op_b1d0_3; +extern cpuop_func op_b1d8_3; +extern cpuop_func op_b1e0_3; +extern cpuop_func op_b1e8_3; +extern cpuop_func op_b1f0_3; +extern cpuop_func op_b1f8_3; +extern cpuop_func op_b1f9_3; +extern cpuop_func op_b1fa_3; +extern cpuop_func op_b1fb_3; +extern cpuop_func op_b1fc_3; +extern cpuop_func op_c000_3; +extern cpuop_func op_c010_3; +extern cpuop_func op_c018_3; +extern cpuop_func op_c020_3; +extern cpuop_func op_c028_3; +extern cpuop_func op_c030_3; +extern cpuop_func op_c038_3; +extern cpuop_func op_c039_3; +extern cpuop_func op_c03a_3; +extern cpuop_func op_c03b_3; +extern cpuop_func op_c03c_3; +extern cpuop_func op_c040_3; +extern cpuop_func op_c050_3; +extern cpuop_func op_c058_3; +extern cpuop_func op_c060_3; +extern cpuop_func op_c068_3; +extern cpuop_func op_c070_3; +extern cpuop_func op_c078_3; +extern cpuop_func op_c079_3; +extern cpuop_func op_c07a_3; +extern cpuop_func op_c07b_3; +extern cpuop_func op_c07c_3; +extern cpuop_func op_c080_3; +extern cpuop_func op_c090_3; +extern cpuop_func op_c098_3; +extern cpuop_func op_c0a0_3; +extern cpuop_func op_c0a8_3; +extern cpuop_func op_c0b0_3; +extern cpuop_func op_c0b8_3; +extern cpuop_func op_c0b9_3; +extern cpuop_func op_c0ba_3; +extern cpuop_func op_c0bb_3; +extern cpuop_func op_c0bc_3; +extern cpuop_func op_c0c0_3; +extern cpuop_func op_c0d0_3; +extern cpuop_func op_c0d8_3; +extern cpuop_func op_c0e0_3; +extern cpuop_func op_c0e8_3; +extern cpuop_func op_c0f0_3; +extern cpuop_func op_c0f8_3; +extern cpuop_func op_c0f9_3; +extern cpuop_func op_c0fa_3; +extern cpuop_func op_c0fb_3; +extern cpuop_func op_c0fc_3; +extern cpuop_func op_c100_3; +extern cpuop_func op_c108_3; +extern cpuop_func op_c110_3; +extern cpuop_func op_c118_3; +extern cpuop_func op_c120_3; +extern cpuop_func op_c128_3; +extern cpuop_func op_c130_3; +extern cpuop_func op_c138_3; +extern cpuop_func op_c139_3; +extern cpuop_func op_c140_3; +extern cpuop_func op_c148_3; +extern cpuop_func op_c150_3; +extern cpuop_func op_c158_3; +extern cpuop_func op_c160_3; +extern cpuop_func op_c168_3; +extern cpuop_func op_c170_3; +extern cpuop_func op_c178_3; +extern cpuop_func op_c179_3; +extern cpuop_func op_c188_3; +extern cpuop_func op_c190_3; +extern cpuop_func op_c198_3; +extern cpuop_func op_c1a0_3; +extern cpuop_func op_c1a8_3; +extern cpuop_func op_c1b0_3; +extern cpuop_func op_c1b8_3; +extern cpuop_func op_c1b9_3; +extern cpuop_func op_c1c0_3; +extern cpuop_func op_c1d0_3; +extern cpuop_func op_c1d8_3; +extern cpuop_func op_c1e0_3; +extern cpuop_func op_c1e8_3; +extern cpuop_func op_c1f0_3; +extern cpuop_func op_c1f8_3; +extern cpuop_func op_c1f9_3; +extern cpuop_func op_c1fa_3; +extern cpuop_func op_c1fb_3; +extern cpuop_func op_c1fc_3; +extern cpuop_func op_d000_3; +extern cpuop_func op_d010_3; +extern cpuop_func op_d018_3; +extern cpuop_func op_d020_3; +extern cpuop_func op_d028_3; +extern cpuop_func op_d030_3; +extern cpuop_func op_d038_3; +extern cpuop_func op_d039_3; +extern cpuop_func op_d03a_3; +extern cpuop_func op_d03b_3; +extern cpuop_func op_d03c_3; +extern cpuop_func op_d040_3; +extern cpuop_func op_d048_3; +extern cpuop_func op_d050_3; +extern cpuop_func op_d058_3; +extern cpuop_func op_d060_3; +extern cpuop_func op_d068_3; +extern cpuop_func op_d070_3; +extern cpuop_func op_d078_3; +extern cpuop_func op_d079_3; +extern cpuop_func op_d07a_3; +extern cpuop_func op_d07b_3; +extern cpuop_func op_d07c_3; +extern cpuop_func op_d080_3; +extern cpuop_func op_d088_3; +extern cpuop_func op_d090_3; +extern cpuop_func op_d098_3; +extern cpuop_func op_d0a0_3; +extern cpuop_func op_d0a8_3; +extern cpuop_func op_d0b0_3; +extern cpuop_func op_d0b8_3; +extern cpuop_func op_d0b9_3; +extern cpuop_func op_d0ba_3; +extern cpuop_func op_d0bb_3; +extern cpuop_func op_d0bc_3; +extern cpuop_func op_d0c0_3; +extern cpuop_func op_d0c8_3; +extern cpuop_func op_d0d0_3; +extern cpuop_func op_d0d8_3; +extern cpuop_func op_d0e0_3; +extern cpuop_func op_d0e8_3; +extern cpuop_func op_d0f0_3; +extern cpuop_func op_d0f8_3; +extern cpuop_func op_d0f9_3; +extern cpuop_func op_d0fa_3; +extern cpuop_func op_d0fb_3; +extern cpuop_func op_d0fc_3; +extern cpuop_func op_d100_3; +extern cpuop_func op_d108_3; +extern cpuop_func op_d110_3; +extern cpuop_func op_d118_3; +extern cpuop_func op_d120_3; +extern cpuop_func op_d128_3; +extern cpuop_func op_d130_3; +extern cpuop_func op_d138_3; +extern cpuop_func op_d139_3; +extern cpuop_func op_d140_3; +extern cpuop_func op_d148_3; +extern cpuop_func op_d150_3; +extern cpuop_func op_d158_3; +extern cpuop_func op_d160_3; +extern cpuop_func op_d168_3; +extern cpuop_func op_d170_3; +extern cpuop_func op_d178_3; +extern cpuop_func op_d179_3; +extern cpuop_func op_d180_3; +extern cpuop_func op_d188_3; +extern cpuop_func op_d190_3; +extern cpuop_func op_d198_3; +extern cpuop_func op_d1a0_3; +extern cpuop_func op_d1a8_3; +extern cpuop_func op_d1b0_3; +extern cpuop_func op_d1b8_3; +extern cpuop_func op_d1b9_3; +extern cpuop_func op_d1c0_3; +extern cpuop_func op_d1c8_3; +extern cpuop_func op_d1d0_3; +extern cpuop_func op_d1d8_3; +extern cpuop_func op_d1e0_3; +extern cpuop_func op_d1e8_3; +extern cpuop_func op_d1f0_3; +extern cpuop_func op_d1f8_3; +extern cpuop_func op_d1f9_3; +extern cpuop_func op_d1fa_3; +extern cpuop_func op_d1fb_3; +extern cpuop_func op_d1fc_3; +extern cpuop_func op_e000_3; +extern cpuop_func op_e008_3; +extern cpuop_func op_e010_3; +extern cpuop_func op_e018_3; +extern cpuop_func op_e020_3; +extern cpuop_func op_e028_3; +extern cpuop_func op_e030_3; +extern cpuop_func op_e038_3; +extern cpuop_func op_e040_3; +extern cpuop_func op_e048_3; +extern cpuop_func op_e050_3; +extern cpuop_func op_e058_3; +extern cpuop_func op_e060_3; +extern cpuop_func op_e068_3; +extern cpuop_func op_e070_3; +extern cpuop_func op_e078_3; +extern cpuop_func op_e080_3; +extern cpuop_func op_e088_3; +extern cpuop_func op_e090_3; +extern cpuop_func op_e098_3; +extern cpuop_func op_e0a0_3; +extern cpuop_func op_e0a8_3; +extern cpuop_func op_e0b0_3; +extern cpuop_func op_e0b8_3; +extern cpuop_func op_e0d0_3; +extern cpuop_func op_e0d8_3; +extern cpuop_func op_e0e0_3; +extern cpuop_func op_e0e8_3; +extern cpuop_func op_e0f0_3; +extern cpuop_func op_e0f8_3; +extern cpuop_func op_e0f9_3; +extern cpuop_func op_e100_3; +extern cpuop_func op_e108_3; +extern cpuop_func op_e110_3; +extern cpuop_func op_e118_3; +extern cpuop_func op_e120_3; +extern cpuop_func op_e128_3; +extern cpuop_func op_e130_3; +extern cpuop_func op_e138_3; +extern cpuop_func op_e140_3; +extern cpuop_func op_e148_3; +extern cpuop_func op_e150_3; +extern cpuop_func op_e158_3; +extern cpuop_func op_e160_3; +extern cpuop_func op_e168_3; +extern cpuop_func op_e170_3; +extern cpuop_func op_e178_3; +extern cpuop_func op_e180_3; +extern cpuop_func op_e188_3; +extern cpuop_func op_e190_3; +extern cpuop_func op_e198_3; +extern cpuop_func op_e1a0_3; +extern cpuop_func op_e1a8_3; +extern cpuop_func op_e1b0_3; +extern cpuop_func op_e1b8_3; +extern cpuop_func op_e1d0_3; +extern cpuop_func op_e1d8_3; +extern cpuop_func op_e1e0_3; +extern cpuop_func op_e1e8_3; +extern cpuop_func op_e1f0_3; +extern cpuop_func op_e1f8_3; +extern cpuop_func op_e1f9_3; +extern cpuop_func op_e2d0_3; +extern cpuop_func op_e2d8_3; +extern cpuop_func op_e2e0_3; +extern cpuop_func op_e2e8_3; +extern cpuop_func op_e2f0_3; +extern cpuop_func op_e2f8_3; +extern cpuop_func op_e2f9_3; +extern cpuop_func op_e3d0_3; +extern cpuop_func op_e3d8_3; +extern cpuop_func op_e3e0_3; +extern cpuop_func op_e3e8_3; +extern cpuop_func op_e3f0_3; +extern cpuop_func op_e3f8_3; +extern cpuop_func op_e3f9_3; +extern cpuop_func op_e4d0_3; +extern cpuop_func op_e4d8_3; +extern cpuop_func op_e4e0_3; +extern cpuop_func op_e4e8_3; +extern cpuop_func op_e4f0_3; +extern cpuop_func op_e4f8_3; +extern cpuop_func op_e4f9_3; +extern cpuop_func op_e5d0_3; +extern cpuop_func op_e5d8_3; +extern cpuop_func op_e5e0_3; +extern cpuop_func op_e5e8_3; +extern cpuop_func op_e5f0_3; +extern cpuop_func op_e5f8_3; +extern cpuop_func op_e5f9_3; +extern cpuop_func op_e6d0_3; +extern cpuop_func op_e6d8_3; +extern cpuop_func op_e6e0_3; +extern cpuop_func op_e6e8_3; +extern cpuop_func op_e6f0_3; +extern cpuop_func op_e6f8_3; +extern cpuop_func op_e6f9_3; +extern cpuop_func op_e7d0_3; +extern cpuop_func op_e7d8_3; +extern cpuop_func op_e7e0_3; +extern cpuop_func op_e7e8_3; +extern cpuop_func op_e7f0_3; +extern cpuop_func op_e7f8_3; +extern cpuop_func op_e7f9_3; diff --git a/SrcShared/UAE/custom.h b/SrcShared/UAE/custom.h new file mode 100644 index 0000000..7b5241b --- /dev/null +++ b/SrcShared/UAE/custom.h @@ -0,0 +1,30 @@ + /* + * UAE - The Un*x Amiga Emulator + * + * custom chip support + * + * (c) 1995 Bernd Schmidt + */ + +#ifdef __cplusplus +extern "C" { +#endif + +extern void customreset (void); + +#define SPCFLAG_STOP 2 +#define SPCFLAG_DISK 4 +#define SPCFLAG_INT 8 +#define SPCFLAG_BRK 16 +#define SPCFLAG_EXTRA_CYCLES 32 +#define SPCFLAG_TRACE 64 +#define SPCFLAG_DOTRACE 128 +#define SPCFLAG_DOINT 256 +#define SPCFLAG_BLTNASTY 512 +#define SPCFLAG_EXEC 1024 +#define SPCFLAG_MODE_CHANGE 8192 + +#ifdef __cplusplus +} +#endif + diff --git a/SrcShared/UAE/gencpu.c b/SrcShared/UAE/gencpu.c new file mode 100644 index 0000000..b7004a4 --- /dev/null +++ b/SrcShared/UAE/gencpu.c @@ -0,0 +1,3346 @@ +/* + * UAE - The Un*x Amiga Emulator + * + * MC68000 emulation generator + * + * This is a fairly stupid program that generates a lot of case labels that + * can be #included in a switch statement. + * As an alternative, it can generate functions that handle specific + * MC68000 instructions, plus a prototype header file and a function pointer + * array to look up the function for an opcode. + * Error checking is bad, an illegal table68k file will cause the program to + * call abort(). + * The generated code is sometimes sub-optimal, an optimizing compiler should + * take care of this. + * + * Copyright 1995, 1996 Bernd Schmidt + */ + +#include "sysconfig.h" +#include "sysdeps.h" +#include <ctype.h> + +#include "config.h" +#include "options.h" +#include "readcpu.h" + +#define BOOL_TYPE "int" + +static FILE *headerfile; +static FILE *stblfile; + +static int using_prefetch; +static int using_exception_3; +static int cpu_level; + +#define PALM_PERF 1 // Changes made to profile Palm applications +#define PALM_STACK 1 // Changes made to track stack overflows +#define PALM_MIN 1 // Changes made to minimize size of cpuemu.c +#define PALM_CODEGEN_BUG 1 // Changes made to workaround code generation bugs +#define PALM_HEADERS 1 // Changes made to accounts for Poser's header structures +#define PALM_BUG_FIX 1 // Changes made to fix UAE bugs. +#define PALM_SYSTEM_CALL 1 // Changes made to track system calls + +#if PALM_STACK +int adda_hack = 0; +int suba_hack = 0; +int lea_hack = 0; +#endif // PALM_STACK + +#if PALM_PERF +static int extraCycles; // number of clock cycles to do reads+writes+op +static int readCycles; // number of read cycles to do something +static int writeCycles; // number of write cycles to do something + +static int *opcode_last_extra; +static int *opcode_last_read; +static int *opcode_last_write; + +//#define PERF_COMMENT(x) printf("\t// perf" x) +#define PERF_COMMENT(x) ((void*)0) +#endif // PALM_PERF + +/* For the current opcode, the next lower level that will have different code. + * Initialized to -1 for each opcode. If it remains unchanged, indicates we + * are done with that opcode. */ +static int next_cpu_level; + +void write_log (const char *s, ...) +{ + fprintf (stderr, "%s", s); +} + +static int *opcode_map; +static int *opcode_next_clev; +static int *opcode_last_postfix; +static unsigned long *counts; + +static void read_counts (void) +{ + FILE *file; + unsigned long opcode, count, total; + char name[20]; + int nr = 0; + memset (counts, 0, 65536 * sizeof *counts); + + file = fopen ("frequent.68k", "r"); + if (file) { + fscanf (file, "Total: %lu\n", &total); + while (fscanf (file, "%lx: %lu %s\n", &opcode, &count, name) == 3) { + opcode_next_clev[nr] = 3; + opcode_last_postfix[nr] = -1; + opcode_map[nr++] = opcode; + counts[opcode] = count; + } + fclose (file); + } + if (nr == nr_cpuop_funcs) + return; + for (opcode = 0; opcode < 0x10000; opcode++) { + if (table68k[opcode].handler == -1 && table68k[opcode].mnemo != i_ILLG + && counts[opcode] == 0) + { + opcode_next_clev[nr] = 3; + opcode_last_postfix[nr] = -1; + opcode_map[nr++] = opcode; + counts[opcode] = count; + } + } + if (nr != nr_cpuop_funcs) + abort (); +} + +static char endlabelstr[80]; +static int endlabelno = 0; +static int need_endlabel; + +static int n_braces = 0; +static int m68k_pc_offset = 0; +static int insn_n_cycles; + +static void start_brace (void) +{ + n_braces++; + printf ("{"); +} + +static void close_brace (void) +{ + assert (n_braces > 0); + n_braces--; + printf ("}"); +} + +static void finish_braces (void) +{ + while (n_braces > 0) + close_brace (); +} + +static void pop_braces (int to) +{ + while (n_braces > to) + close_brace (); +} + +static int bit_size (int size) +{ + switch (size) { + case sz_byte: return 8; + case sz_word: return 16; + case sz_long: return 32; + default: abort (); + } + return 0; +} + +static const char *bit_mask (int size) +{ + switch (size) { + case sz_byte: return "0xff"; + case sz_word: return "0xffff"; + case sz_long: return "0xffffffff"; + default: abort (); + } + return 0; +} + +static const char *gen_nextilong (void) +{ + static char buffer[80]; + int r = m68k_pc_offset; + m68k_pc_offset += 4; + + insn_n_cycles += 4; + + if (using_prefetch) + sprintf (buffer, "get_ilong_prefetch(%d)", r); + else + sprintf (buffer, "get_ilong(%d)", r); + return buffer; +} + +static const char *gen_nextiword (void) +{ + static char buffer[80]; + int r = m68k_pc_offset; + m68k_pc_offset += 2; + + insn_n_cycles += 2; + + if (using_prefetch) + sprintf (buffer, "get_iword_prefetch(%d)", r); + else + sprintf (buffer, "get_iword(%d)", r); + return buffer; +} + +static const char *gen_nextibyte (void) +{ + static char buffer[80]; + int r = m68k_pc_offset; + m68k_pc_offset += 2; + + insn_n_cycles += 2; + + if (using_prefetch) + sprintf (buffer, "get_ibyte_prefetch(%d)", r); + else + sprintf (buffer, "get_ibyte(%d)", r); + return buffer; +} + +static void fill_prefetch_0 (void) +{ + if (using_prefetch) + printf ("fill_prefetch_0 ();\n"); +} + +static void fill_prefetch_2 (void) +{ + if (using_prefetch) + printf ("fill_prefetch_2 ();\n"); +} + +static void sync_m68k_pc (void) +{ + if (m68k_pc_offset == 0) + return; + printf ("m68k_incpc(%d);\n", m68k_pc_offset); + switch (m68k_pc_offset) { + case 0: + /*fprintf (stderr, "refilling prefetch at 0\n"); */ + break; + case 2: + fill_prefetch_2 (); + break; + default: + fill_prefetch_0 (); + break; + } + m68k_pc_offset = 0; +} + +/* getv == 1: fetch data; getv != 0: check for odd address. If movem != 0, + * the calling routine handles Apdi and Aipi modes. */ +static void genamode (amodes mode, char *reg, wordsizes size, char *name, int getv, int movem) +{ + start_brace (); + switch (mode) { + case Dreg: + if (movem) + abort (); + if (getv == 1) +#if PALM_PERF + { +#endif // PALM_PERF + switch (size) { + case sz_byte: +#if defined(AMIGA) && !defined(WARPUP) + /* sam: I don't know why gcc.2.7.2.1 produces a code worse */ + /* if it is not done like that: */ + printf ("\tuae_s8 %s = ((uae_u8*)&m68k_dreg(regs, %s))[3];\n", name, reg); +#else + printf ("\tuae_s8 %s = m68k_dreg(regs, %s);\n", name, reg); +#endif + break; + case sz_word: +#if defined(AMIGA) && !defined(WARPUP) + printf ("\tuae_s16 %s = ((uae_s16*)&m68k_dreg(regs, %s))[1];\n", name, reg); +#else + printf ("\tuae_s16 %s = m68k_dreg(regs, %s);\n", name, reg); +#endif + break; + case sz_long: + printf ("\tuae_s32 %s = m68k_dreg(regs, %s);\n", name, reg); + break; + default: + abort (); + } +#if PALM_PERF + {extraCycles += 0; readCycles += 0; PERF_COMMENT("read: Dn 0(0/0)\n");} + } +#endif // PALM_PERF + return; + case Areg: + if (movem) + abort (); + if (getv == 1) +#if PALM_PERF + { +#endif // PALM_PERF + switch (size) { + case sz_word: + printf ("\tuae_s16 %s = m68k_areg(regs, %s);\n", name, reg); + break; + case sz_long: + printf ("\tuae_s32 %s = m68k_areg(regs, %s);\n", name, reg); + break; + default: + abort (); + } +#if PALM_PERF + {extraCycles += 0; readCycles += 0; PERF_COMMENT("read: An 0(0/0)\n");} + } +#endif // PALM_PERF + return; + case Aind: + printf ("\tuaecptr %sa = m68k_areg(regs, %s);\n", name, reg); + break; + case Aipi: + printf ("\tuaecptr %sa = m68k_areg(regs, %s);\n", name, reg); + break; + case Apdi: +#if PALM_PERF + if (getv) {extraCycles += 2; readCycles += 0; PERF_COMMENT("read: -(An) x 6(1/0)\n");} +#endif // PALM_PERF + switch (size) { + case sz_byte: + if (movem) + printf ("\tuaecptr %sa = m68k_areg(regs, %s);\n", name, reg); + else + printf ("\tuaecptr %sa = m68k_areg(regs, %s) - areg_byteinc[%s];\n", name, reg, reg); + break; + case sz_word: + printf ("\tuaecptr %sa = m68k_areg(regs, %s) - %d;\n", name, reg, movem ? 0 : 2); + break; + case sz_long: + printf ("\tuaecptr %sa = m68k_areg(regs, %s) - %d;\n", name, reg, movem ? 0 : 4); + break; + default: + abort (); + } + break; + case Ad16: +#if PALM_PERF + {extraCycles += 0; readCycles += 1; PERF_COMMENT("eff addr: (d16, An) 4(1/0)\n");} +#endif // PALM_PERF + printf ("\tuaecptr %sa = m68k_areg(regs, %s) + (uae_s32)(uae_s16)%s;\n", name, reg, gen_nextiword ()); + break; + case Ad8r: + if (cpu_level > 1) { + if (next_cpu_level < 1) + next_cpu_level = 1; + sync_m68k_pc (); + start_brace (); + printf ("\tuaecptr %sa = get_disp_ea_020(m68k_areg(regs, %s), next_iword());\n", name, reg); + } else +#if PALM_PERF + { +#endif // PALM_PERF + printf ("\tuaecptr %sa = get_disp_ea_000(m68k_areg(regs, %s), %s);\n", name, reg, gen_nextiword ()); + +#if PALM_PERF + {extraCycles += 2; readCycles += 1; PERF_COMMENT("eff addr: (d8, An, Xn) 6(1/0)\n");} + } +#endif // PALM_PERF + break; + case PC16: + printf ("\tuaecptr %sa = m68k_getpc () + %d;\n", name, m68k_pc_offset); + printf ("\t%sa += (uae_s32)(uae_s16)%s;\n", name, gen_nextiword ()); +#if PALM_PERF + {extraCycles += 0; readCycles += 1; PERF_COMMENT("eff addr: (d16, PC) 4(1/0)\n");} +#endif // PALM_PERF + break; + case PC8r: + if (cpu_level > 1) { + if (next_cpu_level < 1) + next_cpu_level = 1; + sync_m68k_pc (); + start_brace (); + printf ("\tuaecptr tmppc = m68k_getpc();\n"); + printf ("\tuaecptr %sa = get_disp_ea_020(tmppc, next_iword());\n", name); + } else { + printf ("\tuaecptr tmppc = m68k_getpc() + %d;\n", m68k_pc_offset); + printf ("\tuaecptr %sa = get_disp_ea_000(tmppc, %s);\n", name, gen_nextiword ()); +#if PALM_PERF + {extraCycles += 2; readCycles += 1; PERF_COMMENT("eff addr: (d8, PC, Xn) B 6(1/0)\n");} +#endif // PALM_PERF + } + + break; + case absw: + printf ("\tuaecptr %sa = (uae_s32)(uae_s16)%s;\n", name, gen_nextiword ()); +#if PALM_PERF + {extraCycles += 0; readCycles += 1; PERF_COMMENT(" eff addr: (xxx).W 4(1/0)\n");} +#endif // PALM_PERF + break; + case absl: + printf ("\tuaecptr %sa = %s;\n", name, gen_nextilong ()); +#if PALM_PERF + {extraCycles += 0; readCycles += 2; PERF_COMMENT(" eff addr: (xxx).L 8(2/0)\n");} +#endif // PALM_PERF + break; + case imm: + if (getv != 1) + abort (); + switch (size) { + case sz_byte: + printf ("\tuae_s8 %s = %s;\n", name, gen_nextibyte ()); +#if PALM_PERF + {extraCycles += 0; readCycles += 1; PERF_COMMENT("read: #<data> B 4(1/0)\n");} +#endif // PALM_PERF + break; + case sz_word: + printf ("\tuae_s16 %s = %s;\n", name, gen_nextiword ()); +#if PALM_PERF + {extraCycles += 0; readCycles += 1; PERF_COMMENT("read: #<data> W 4(1/0)\n");} +#endif // PALM_PERF + break; + case sz_long: + printf ("\tuae_s32 %s = %s;\n", name, gen_nextilong ()); +#if PALM_PERF + {extraCycles += 0; readCycles += 2; PERF_COMMENT("read: #<data> L 8(2/0)\n");} +#endif // PALM_PERF + break; + default: + abort (); + } + return; + case imm0: + if (getv != 1) + abort (); + printf ("\tuae_s8 %s = %s;\n", name, gen_nextibyte ()); +#if PALM_PERF + {extraCycles += 0; readCycles += 1; PERF_COMMENT("read: imm0 #<data> B 4(1/0)\n");} +#endif // PALM_PERF + return; + case imm1: + if (getv != 1) + abort (); + printf ("\tuae_s16 %s = %s;\n", name, gen_nextiword ()); +#if PALM_PERF + {extraCycles += 0; readCycles += 1; PERF_COMMENT("read: imm1 #<data> W 4(1/0)\n");} +#endif // PALM_PERF + return; + case imm2: + if (getv != 1) + abort (); + printf ("\tuae_s32 %s = %s;\n", name, gen_nextilong ()); +#if PALM_PERF + {extraCycles += 0; readCycles += 2; PERF_COMMENT("read: imm2 #<data> L 8(2/0)\n");} +#endif // PALM_PERF + return; + case immi: + if (getv != 1) + abort (); + printf ("\tuae_u32 %s = %s;\n", name, reg); +#if PALM_PERF + {extraCycles += 0; readCycles += 0; PERF_COMMENT("read: immi #<data> L 0(0/0)\n");} +#endif // PALM_PERF + return; + default: + abort (); + } + + /* We get here for all non-reg non-immediate addressing modes to + * actually fetch the value. */ + + if (using_exception_3 && getv != 0 && size != sz_byte) { + printf ("\tif ((%sa & 1) != 0) {\n", name); + printf ("\t\tlast_fault_for_exception_3 = %sa;\n", name); + printf ("\t\tlast_op_for_exception_3 = opcode;\n"); + printf ("\t\tlast_addr_for_exception_3 = m68k_getpc() + %d;\n", m68k_pc_offset); + printf ("\t\tException(3, 0);\n"); + printf ("\t\tgoto %s;\n", endlabelstr); + printf ("\t}\n"); + need_endlabel = 1; + start_brace (); + } + + if (getv == 1) { +#if PALM_PERF + switch(size) + { + case sz_byte: + {extraCycles += 0; readCycles += 1; PERF_COMMENT("read: ??? B 4(1/0)\n");} + break; + case sz_word: + {extraCycles += 0; readCycles += 1; PERF_COMMENT("read: ??? W 4(1/0)\n");} + break; + case sz_long: + {extraCycles += 0; readCycles += 2; PERF_COMMENT("read: ??? L 8(2/0)\n");} + break; + default: + abort(); + } +#endif // PALM_PERF + switch (size) { + case sz_byte: insn_n_cycles += 2; break; + case sz_word: insn_n_cycles += 2; break; + case sz_long: insn_n_cycles += 4; break; + default: abort (); + } + start_brace (); + switch (size) { + case sz_byte: printf ("\tuae_s8 %s = get_byte(%sa);\n", name, name); break; + case sz_word: printf ("\tuae_s16 %s = get_word(%sa);\n", name, name); break; + case sz_long: printf ("\tuae_s32 %s = get_long(%sa);\n", name, name); break; + default: abort (); + } + } + + /* We now might have to fix up the register for pre-dec or post-inc + * addressing modes. */ + if (!movem) + switch (mode) { + case Aipi: + switch (size) { + case sz_byte: + printf ("\tm68k_areg(regs, %s) += areg_byteinc[%s];\n", reg, reg); + break; + case sz_word: + printf ("\tm68k_areg(regs, %s) += 2;\n", reg); + break; + case sz_long: + printf ("\tm68k_areg(regs, %s) += 4;\n", reg); + break; + default: + abort (); + } + break; + case Apdi: + printf ("\tm68k_areg (regs, %s) = %sa;\n", reg, name); +#if PALM_STACK + printf ("\tif (%s == 7) CHECK_STACK_POINTER_DECREMENT ();\n", + reg, name, name); +#endif // PALM_STACK + break; + default: + break; + } +} + +static void genastore (char *from, amodes mode, char *reg, wordsizes size, char *to) +{ + switch (mode) { + case Dreg: + switch (size) { + case sz_byte: + printf ("\tm68k_dreg(regs, %s) = (m68k_dreg(regs, %s) & ~0xff) | ((%s) & 0xff);\n", reg, reg, from); + break; + case sz_word: + printf ("\tm68k_dreg(regs, %s) = (m68k_dreg(regs, %s) & ~0xffff) | ((%s) & 0xffff);\n", reg, reg, from); + break; + case sz_long: + printf ("\tm68k_dreg(regs, %s) = (%s);\n", reg, from); + break; + default: + abort (); + } +#if PALM_PERF + extraCycles += 0; writeCycles += 0; PERF_COMMENT("write: Dn 0(0/0)\n"); +#endif // PALM_PERF + break; + case Areg: + switch (size) { + case sz_word: + fprintf (stderr, "Foo\n"); + printf ("\tm68k_areg(regs, %s) = (uae_s32)(uae_s16)(%s);\n", reg, from); + break; + case sz_long: +#if PALM_STACK + if (lea_hack) + { + start_brace (); + printf ("\tuaecptr prev_%s = m68k_areg(regs, %s);\n", reg, reg); + } +#endif // PALM_STACK + printf ("\tm68k_areg(regs, %s) = (%s);\n", reg, from); +#if PALM_STACK + if (adda_hack) + printf ("\tif (%s == 7) CHECK_STACK_POINTER_INCREMENT ();\n", + reg, reg, from); + else if (suba_hack) + printf ("\tif (%s == 7) CHECK_STACK_POINTER_DECREMENT ();\n", + reg, reg, from); + else if (lea_hack) + { + printf ("\tif (dstreg == 7) {\n"); + printf ("\t\tif (srcreg == 7) {\n"); + printf ("\t\t\tif (prev_dstreg < (%s)) CHECK_STACK_POINTER_INCREMENT ();\n", from); + printf ("\t\t\tif (prev_dstreg > (%s)) CHECK_STACK_POINTER_DECREMENT ();\n", from); + printf ("\t\t} else {\n"); + printf ("\t\t\tCHECK_STACK_POINTER_ASSIGNMENT ();\n", from); + printf ("\t\t}\n"); + printf ("\t}\n"); + } + else + printf ("\tif (%s == 7) CHECK_STACK_POINTER_ASSIGNMENT ();\n", + reg, reg, from, reg); +#endif // PALM_STACK + break; + default: + abort (); + } +#if PALM_PERF + extraCycles += 0; writeCycles += 0; PERF_COMMENT("write: An 0(0/0)\n"); +#endif // PALM_PERF + break; + case Aind: + case Aipi: + case Apdi: + case Ad16: + case Ad8r: + case absw: + case absl: + case PC16: + case PC8r: + if (using_prefetch) + sync_m68k_pc (); + switch (size) { + case sz_byte: + insn_n_cycles += 2; + printf ("\tput_byte(%sa,%s);\n", to, from); +#if PALM_PERF + extraCycles += 0; writeCycles += 1; PERF_COMMENT("write: to, from B 4(0/1)\n"); +#endif // PALM_PERF + break; + case sz_word: + insn_n_cycles += 2; + if (cpu_level < 2 && (mode == PC16 || mode == PC8r)) + abort (); + printf ("\tput_word(%sa,%s);\n", to, from); +#if PALM_PERF + extraCycles += 0; writeCycles += 1; PERF_COMMENT("write: to, from W 4(0/1)\n"); +#endif // PALM_PERF + break; + case sz_long: + insn_n_cycles += 4; + if (cpu_level < 2 && (mode == PC16 || mode == PC8r)) + abort (); + printf ("\tput_long(%sa,%s);\n", to, from); +#if PALM_PERF + extraCycles += 0; writeCycles += 2; PERF_COMMENT("write: to, from L 8(0/2)\n"); +#endif // PALM_PERF + break; + default: + abort (); + } + break; + case imm: + case imm0: + case imm1: + case imm2: + case immi: + abort (); + break; + default: + abort (); + } +} + +static void genmovemel (uae_u16 opcode) +{ + char getcode[100]; + int size = table68k[opcode].size == sz_long ? 4 : 2; + + if (table68k[opcode].size == sz_long) { + strcpy (getcode, "get_long(srca)"); + } else { + strcpy (getcode, "(uae_s32)(uae_s16)get_word(srca)"); + } + + printf ("\tuae_u16 mask = %s;\n", gen_nextiword ()); + printf ("\tunsigned int dmask = mask & 0xff, amask = (mask >> 8) & 0xff;\n"); + genamode (table68k[opcode].dmode, "dstreg", table68k[opcode].size, "src", 2, 1); + start_brace (); +#if PALM_STACK + // Might want to add a check here. But it's not likely for A7 to get messed + // up during this operation. First, the stack (if that's what's being used + // as the source here) is being incremented, not decremented, so there's no + // chance of an overflow. Second, the chance that A7 is in the destination + // set of registers is very unlikely, so we don't need to check for that, either. + // I suppose A7 *could* be in the dest set if MOVEM is used for a task switch. + // Something to think about... +#endif // PALM_STACK + printf ("\twhile (dmask) { m68k_dreg(regs, movem_index1[dmask]) = %s; srca += %d; dmask = movem_next[dmask]; }\n", + getcode, size); + printf ("\twhile (amask) { m68k_areg(regs, movem_index1[amask]) = %s; srca += %d; amask = movem_next[amask]; }\n", + getcode, size); + + if (table68k[opcode].dmode == Aipi) + printf ("\tm68k_areg(regs, dstreg) = srca;\n"); +#if PALM_PERF + {extraCycles += 0; readCycles = 0xFF; writeCycles += 0; PERF_COMMENT("MOVEM M, R 12+4n(3+n/0) + eff addr\n");} + // ¥¥¥ DOLATER this doesnt quite generate the right number of reads, I dont know what the extra is for! +#endif // PALM_PERF +} + +static void genmovemle (uae_u16 opcode) +{ + char putcode[100]; + int size = table68k[opcode].size == sz_long ? 4 : 2; + if (table68k[opcode].size == sz_long) { + strcpy (putcode, "put_long(srca,"); + } else { + strcpy (putcode, "put_word(srca,"); + } + + printf ("\tuae_u16 mask = %s;\n", gen_nextiword ()); + genamode (table68k[opcode].dmode, "dstreg", table68k[opcode].size, "src", 2, 1); + if (using_prefetch) + sync_m68k_pc (); + + start_brace (); + if (table68k[opcode].dmode == Apdi) { + printf ("\tuae_u16 amask = mask & 0xff, dmask = (mask >> 8) & 0xff;\n"); +#if PALM_STACK + // Pre-decrement the dest pointer by the maximum amount it could possibly + // move. Doing this prevents our "did they access the area below the stack + // pointer" sniffer from going off in the middle of this opcode. + printf ("\tm68k_areg (regs, dstreg) -= 16 * %d;\n", size); +#endif // PALM_STACK + printf ("\twhile (amask) { srca -= %d; %s m68k_areg(regs, movem_index2[amask])); amask = movem_next[amask]; }\n", + size, putcode); + printf ("\twhile (dmask) { srca -= %d; %s m68k_dreg(regs, movem_index2[dmask])); dmask = movem_next[dmask]; }\n", + size, putcode); + printf ("\tm68k_areg(regs, dstreg) = srca;\n"); +#if PALM_STACK + printf ("\tCHECK_STACK_POINTER_DECREMENT ();\n"); +#endif // PALM_STACK + } else { + printf ("\tuae_u16 dmask = mask & 0xff, amask = (mask >> 8) & 0xff;\n"); + printf ("\twhile (dmask) { %s m68k_dreg(regs, movem_index1[dmask])); srca += %d; dmask = movem_next[dmask]; }\n", + putcode, size); + printf ("\twhile (amask) { %s m68k_areg(regs, movem_index1[amask])); srca += %d; amask = movem_next[amask]; }\n", + putcode, size); + } +#if PALM_PERF + {extraCycles += 0; readCycles += 2; writeCycles = 0xFF; PERF_COMMENT("MOVEM R, M 8+4n(2/n) + eff addr\n");} +#endif // PALM_PERF +} + +static void duplicate_carry (void) +{ + printf ("\tCOPY_CARRY;\n"); +} + +typedef enum { + flag_logical_noclobber, flag_logical, flag_add, flag_sub, flag_cmp, flag_addx, flag_subx, flag_zn, + flag_av, flag_sv +} flagtypes; + +static void genflags_normal (flagtypes type, wordsizes size, char *value, char *src, char *dst) +{ + char vstr[100], sstr[100], dstr[100]; + char usstr[100], udstr[100]; + char unsstr[100], undstr[100]; + + switch (size) { + case sz_byte: + strcpy (vstr, "((uae_s8)("); + strcpy (usstr, "((uae_u8)("); + break; + case sz_word: + strcpy (vstr, "((uae_s16)("); + strcpy (usstr, "((uae_u16)("); + break; + case sz_long: + strcpy (vstr, "((uae_s32)("); + strcpy (usstr, "((uae_u32)("); + break; + default: + abort (); + } + strcpy (unsstr, usstr); + + strcpy (sstr, vstr); + strcpy (dstr, vstr); + strcat (vstr, value); + strcat (vstr, "))"); + strcat (dstr, dst); + strcat (dstr, "))"); + strcat (sstr, src); + strcat (sstr, "))"); + + strcpy (udstr, usstr); + strcat (udstr, dst); + strcat (udstr, "))"); + strcat (usstr, src); + strcat (usstr, "))"); + + strcpy (undstr, unsstr); + strcat (unsstr, "-"); + strcat (undstr, "~"); + strcat (undstr, dst); + strcat (undstr, "))"); + strcat (unsstr, src); + strcat (unsstr, "))"); + + switch (type) { + case flag_logical_noclobber: + case flag_logical: + case flag_zn: + case flag_av: + case flag_sv: + case flag_addx: + case flag_subx: + break; + + case flag_add: + start_brace (); + printf ("uae_u32 %s = %s + %s;\n", value, dstr, sstr); + break; + case flag_sub: + case flag_cmp: + start_brace (); + printf ("uae_u32 %s = %s - %s;\n", value, dstr, sstr); + break; + } + + switch (type) { + case flag_logical_noclobber: + case flag_logical: + case flag_zn: + break; + + case flag_add: + case flag_sub: + case flag_addx: + case flag_subx: + case flag_cmp: + case flag_av: + case flag_sv: + start_brace (); + printf ("\t" BOOL_TYPE " flgs = %s < 0;\n", sstr); + printf ("\t" BOOL_TYPE " flgo = %s < 0;\n", dstr); + printf ("\t" BOOL_TYPE " flgn = %s < 0;\n", vstr); + break; + } + + switch (type) { + case flag_logical: + printf ("\tCLEAR_CZNV;\n"); + printf ("\tSET_ZFLG (%s == 0);\n", vstr); + printf ("\tSET_NFLG (%s < 0);\n", vstr); + break; + case flag_logical_noclobber: + printf ("\tSET_ZFLG (%s == 0);\n", vstr); + printf ("\tSET_NFLG (%s < 0);\n", vstr); + break; + case flag_av: + printf ("\tSET_VFLG ((flgs ^ flgn) & (flgo ^ flgn));\n"); + break; + case flag_sv: + printf ("\tSET_VFLG ((flgs ^ flgo) & (flgn ^ flgo));\n"); + break; + case flag_zn: + printf ("\tSET_ZFLG (GET_ZFLG & (%s == 0));\n", vstr); + printf ("\tSET_NFLG (%s < 0);\n", vstr); + break; + case flag_add: + printf ("\tSET_ZFLG (%s == 0);\n", vstr); + printf ("\tSET_VFLG ((flgs ^ flgn) & (flgo ^ flgn));\n"); + printf ("\tSET_CFLG (%s < %s);\n", undstr, usstr); + duplicate_carry (); + printf ("\tSET_NFLG (flgn != 0);\n"); + break; + case flag_sub: + printf ("\tSET_ZFLG (%s == 0);\n", vstr); + printf ("\tSET_VFLG ((flgs ^ flgo) & (flgn ^ flgo));\n"); + printf ("\tSET_CFLG (%s > %s);\n", usstr, udstr); + duplicate_carry (); + printf ("\tSET_NFLG (flgn != 0);\n"); + break; + case flag_addx: + printf ("\tSET_VFLG ((flgs ^ flgn) & (flgo ^ flgn));\n"); /* minterm SON: 0x42 */ + printf ("\tSET_CFLG (flgs ^ ((flgs ^ flgo) & (flgo ^ flgn)));\n"); /* minterm SON: 0xD4 */ + duplicate_carry (); + break; + case flag_subx: + printf ("\tSET_VFLG ((flgs ^ flgo) & (flgo ^ flgn));\n"); /* minterm SON: 0x24 */ + printf ("\tSET_CFLG (flgs ^ ((flgs ^ flgn) & (flgo ^ flgn)));\n"); /* minterm SON: 0xB2 */ + duplicate_carry (); + break; + case flag_cmp: + printf ("\tSET_ZFLG (%s == 0);\n", vstr); + printf ("\tSET_VFLG ((flgs != flgo) && (flgn != flgo));\n"); + printf ("\tSET_CFLG (%s > %s);\n", usstr, udstr); + printf ("\tSET_NFLG (flgn != 0);\n"); + break; + } +} + +static void genflags (flagtypes type, wordsizes size, char *value, char *src, char *dst) +{ +#ifdef X86_ASSEMBLY + switch (type) { + case flag_add: + case flag_sub: + start_brace (); + printf ("\tuae_u32 %s;\n", value); + break; + + default: + break; + } + + /* At least some of those casts are fairly important! */ + switch (type) { + case flag_logical_noclobber: + printf ("\t{uae_u32 oldcznv = regflags.cznv & ~0xC0;\n"); + if (strcmp (value, "0") == 0) { + printf ("\tregflags.cznv = olcznv | 64;\n"); + } else { + switch (size) { + case sz_byte: printf ("\tx86_flag_testb ((uae_s8)(%s));\n", value); break; + case sz_word: printf ("\tx86_flag_testw ((uae_s16)(%s));\n", value); break; + case sz_long: printf ("\tx86_flag_testl ((uae_s32)(%s));\n", value); break; + } + printf ("\tregflags.cznv |= oldcznv;\n"); + } + printf ("\t}\n"); + return; + case flag_logical: + if (strcmp (value, "0") == 0) { + printf ("\tregflags.cznv = 64;\n"); + } else { + switch (size) { + case sz_byte: printf ("\tx86_flag_testb ((uae_s8)(%s));\n", value); break; + case sz_word: printf ("\tx86_flag_testw ((uae_s16)(%s));\n", value); break; + case sz_long: printf ("\tx86_flag_testl ((uae_s32)(%s));\n", value); break; + } + } + return; + + case flag_add: + switch (size) { + case sz_byte: printf ("\tx86_flag_addb (%s, (uae_s8)(%s), (uae_s8)(%s));\n", value, src, dst); break; + case sz_word: printf ("\tx86_flag_addw (%s, (uae_s16)(%s), (uae_s16)(%s));\n", value, src, dst); break; + case sz_long: printf ("\tx86_flag_addl (%s, (uae_s32)(%s), (uae_s32)(%s));\n", value, src, dst); break; + } + return; + + case flag_sub: + switch (size) { + case sz_byte: printf ("\tx86_flag_subb (%s, (uae_s8)(%s), (uae_s8)(%s));\n", value, src, dst); break; + case sz_word: printf ("\tx86_flag_subw (%s, (uae_s16)(%s), (uae_s16)(%s));\n", value, src, dst); break; + case sz_long: printf ("\tx86_flag_subl (%s, (uae_s32)(%s), (uae_s32)(%s));\n", value, src, dst); break; + } + return; + + case flag_cmp: + switch (size) { + case sz_byte: printf ("\tx86_flag_cmpb ((uae_s8)(%s), (uae_s8)(%s));\n", src, dst); break; + case sz_word: printf ("\tx86_flag_cmpw ((uae_s16)(%s), (uae_s16)(%s));\n", src, dst); break; + case sz_long: printf ("\tx86_flag_cmpl ((uae_s32)(%s), (uae_s32)(%s));\n", src, dst); break; + } + return; + + default: + break; + } +#elif defined(M68K_FLAG_OPT) + /* sam: here I'm cloning what X86_ASSEMBLY does */ +#define EXT(size) (size==sz_byte?"b":(size==sz_word?"w":"l")) +#define CAST(size) (size==sz_byte?"uae_s8":(size==sz_word?"uae_s16":"uae_s32")) + switch (type) { + case flag_add: + case flag_sub: + start_brace (); + printf ("\tuae_u32 %s;\n", value); + break; + + default: + break; + } + + switch (type) { + case flag_logical: + if (strcmp (value, "0") == 0) { + printf ("\t*(uae_u16 *)®flags = 4;\n"); /* Z = 1 */ + } else { + printf ("\tm68k_flag_tst (%s, (%s)(%s));\n", + EXT (size), CAST (size), value); + } + return; + + case flag_add: + printf ("\t{uae_u16 ccr;\n"); + printf ("\tm68k_flag_add (%s, (%s)%s, (%s)(%s), (%s)(%s));\n", + EXT (size), CAST (size), value, CAST (size), src, CAST (size), dst); + printf ("\t((uae_u16*)®flags)[1]=((uae_u16*)®flags)[0]=ccr;}\n"); + return; + + case flag_sub: + printf ("\t{uae_u16 ccr;\n"); + printf ("\tm68k_flag_sub (%s, (%s)%s, (%s)(%s), (%s)(%s));\n", + EXT (size), CAST (size), value, CAST (size), src, CAST (size), dst); + printf ("\t((uae_u16*)®flags)[1]=((uae_u16*)®flags)[0]=ccr;}\n"); + return; + + case flag_cmp: + printf ("\tm68k_flag_cmp (%s, (%s)(%s), (%s)(%s));\n", + EXT (size), CAST (size), src, CAST (size), dst); + return; + + default: + break; + } +#elif defined(ACORN_FLAG_OPT) && defined(__GNUC_MINOR__) +/* + * This is new. Might be quite buggy. + */ + switch (type) { + case flag_av: + case flag_sv: + case flag_zn: + case flag_addx: + case flag_subx: + break; + + case flag_logical: + if (strcmp (value, "0") == 0) { + /* v=c=n=0 z=1 */ + printf ("\t*(ULONG*)®flags = 0x40000000;\n"); + return; + } else { + start_brace (); + switch (size) { + case sz_byte: + printf ("\tUBYTE ccr;\n"); + printf ("\tULONG shift;\n"); + printf ("\t__asm__(\"mov %%2,%%1,lsl#24\n\ttst %%2,%%2\n\tmov %%0,r15,lsr#24\n\tbic %%0,%%0,#0x30\"\n" + "\t: \"=r\" (ccr) : \"r\" (%s), \"r\" (shift) : \"cc\" );\n", value); + printf ("\t*((UBYTE*)®flags+3) = ccr;\n"); + return; + case sz_word: + printf ("\tUBYTE ccr;\n"); + printf ("\tULONG shift;\n"); + printf ("\t__asm__(\"mov %%2,%%1,lsl#16\n\ttst %%2,%%2\n\tmov %%0,r15,lsr#24\n\tbic %%0,%%0,#0x30\"\n" + "\t: \"=r\" (ccr) : \"r\" ((WORD)%s), \"r\" (shift) : \"cc\" );\n", value); + printf ("\t*((UBYTE*)®flags+3) = ccr;\n"); + return; + case sz_long: + printf ("\tUBYTE ccr;\n"); + printf ("\t__asm__(\"tst %%1,%%1\n\tmov %%0,r15,lsr#24\n\tbic %%0,%%0,#0x30\"\n" + "\t: \"=r\" (ccr) : \"r\" ((LONG)%s) : \"cc\" );\n", value); + printf ("\t*((UBYTE*)®flags+3) = ccr;\n"); + return; + } + } + break; + case flag_add: + if (strcmp (dst, "0") == 0) { + printf ("/* Error! Hier muss Peter noch was machen !!! (ADD-Flags) */"); + } else { + start_brace (); + switch (size) { + case sz_byte: + printf ("\tULONG ccr, shift, %s;\n", value); + printf ("\t__asm__(\"mov %%4,%%3,lsl#24\n\tadds %%0,%%4,%%2,lsl#24\n\tmov %%0,%%0,asr#24\n\tmov %%1,r15\n\torr %%1,%%1,%%1,lsr#29\"\n" + "\t: \"=r\" (%s), \"=r\" (ccr) : \"r\" (%s), \"r\" (%s), \"r\" (shift) : \"cc\" );\n", value, src, dst); + printf ("\t*(ULONG*)®flags = ccr;\n"); + return; + case sz_word: + printf ("\tULONG ccr, shift, %s;\n", value); + printf ("\t__asm__(\"mov %%4,%%3,lsl#16\n\tadds %%0,%%4,%%2,lsl#16\n\tmov %%0,%%0,asr#16\n\tmov %%1,r15\n\torr %%1,%%1,%%1,lsr#29\"\n" + "\t: \"=r\" (%s), \"=r\" (ccr) : \"r\" ((WORD)%s), \"r\" ((WORD)%s), \"r\" (shift) : \"cc\" );\n", value, src, dst); + printf ("\t*(ULONG*)®flags = ccr;\n"); + return; + case sz_long: + printf ("\tULONG ccr, %s;\n", value); + printf ("\t__asm__(\"adds %%0,%%3,%%2\n\tmov %%1,r15\n\torr %%1,%%1,%%1,lsr#29\"\n" + "\t: \"=r\" (%s), \"=r\" (ccr) : \"r\" ((LONG)%s), \"r\" ((LONG)%s) : \"cc\" );\n", value, src, dst); + printf ("\t*(ULONG*)®flags = ccr;\n"); + return; + } + } + break; + case flag_sub: + if (strcmp (dst, "0") == 0) { + printf ("/* Error! Hier muss Peter noch was machen !!! (SUB-Flags) */"); + } else { + start_brace (); + switch (size) { + case sz_byte: + printf ("\tULONG ccr, shift, %s;\n", value); + printf ("\t__asm__(\"mov %%4,%%3,lsl#24\n\tsubs %%0,%%4,%%2,lsl#24\n\tmov %%0,%%0,asr#24\n\tmov %%1,r15\n\teor %%1,%%1,#0x20000000\n\torr %%1,%%1,%%1,lsr#29\"\n" + "\t: \"=r\" (%s), \"=r\" (ccr) : \"r\" (%s), \"r\" (%s), \"r\" (shift) : \"cc\" );\n", value, src, dst); + printf ("\t*(ULONG*)®flags = ccr;\n"); + return; + case sz_word: + printf ("\tULONG ccr, shift, %s;\n", value); + printf ("\t__asm__(\"mov %%4,%%3,lsl#16\n\tsubs %%0,%%4,%%2,lsl#16\n\tmov %%0,%%0,asr#16\n\tmov %%1,r15\n\teor %%1,%%1,#0x20000000\n\torr %%1,%%1,%%1,lsr#29\"\n" + "\t: \"=r\" (%s), \"=r\" (ccr) : \"r\" ((WORD)%s), \"r\" ((WORD)%s), \"r\" (shift) : \"cc\" );\n", value, src, dst); + printf ("\t*(ULONG*)®flags = ccr;\n"); + return; + case sz_long: + printf ("\tULONG ccr, %s;\n", value); + printf ("\t__asm__(\"subs %%0,%%3,%%2\n\tmov %%1,r15\n\teor %%1,%%1,#0x20000000\n\torr %%1,%%1,%%1,lsr#29\"\n" + "\t: \"=r\" (%s), \"=r\" (ccr) : \"r\" ((LONG)%s), \"r\" ((LONG)%s) : \"cc\" );\n", value, src, dst); + printf ("\t*(ULONG*)®flags = ccr;\n"); + return; + } + } + break; + case flag_cmp: + if (strcmp (dst, "0") == 0) { + printf ("/*Error! Hier muss Peter noch was machen !!! (CMP-Flags)*/"); + } else { + start_brace (); + switch (size) { + case sz_byte: + printf ("\tULONG shift, ccr;\n"); + printf ("\t__asm__(\"mov %%3,%%2,lsl#24\n\tcmp %%3,%%1,lsl#24\n\tmov %%0,r15,lsr#24\n\teor %%0,%%0,#0x20\"\n" + "\t: \"=r\" (ccr) : \"r\" (%s), \"r\" (%s), \"r\" (shift) : \"cc\" );\n", src, dst); + printf ("\t*((UBYTE*)®flags+3) = ccr;\n"); + return; + case sz_word: + printf ("\tULONG shift, ccr;\n"); + printf ("\t__asm__(\"mov %%3,%%2,lsl#16\n\tcmp %%3,%%1,lsl#16\n\tmov %%0,r15,lsr#24\n\teor %%0,%%0,#0x20\"\n" + "\t: \"=r\" (ccr) : \"r\" ((WORD)%s), \"r\" ((WORD)%s), \"r\" (shift) : \"cc\" );\n", src, dst); + printf ("\t*((UBYTE*)®flags+3) = ccr;\n"); + return; + case sz_long: + printf ("\tULONG ccr;\n"); + printf ("\t__asm__(\"cmp %%2,%%1\n\tmov %%0,r15,lsr#24\n\teor %%0,%%0,#0x20\"\n" + "\t: \"=r\" (ccr) : \"r\" ((LONG)%s), \"r\" ((LONG)%s) : \"cc\" );\n", src, dst); + printf ("\t*((UBYTE*)®flags+3) = ccr;\n"); + /*printf ("\tprintf (\"%%08x %%08x %%08x\\n\", %s, %s, *((ULONG*)®flags));\n", src, dst); */ + return; + } + } + break; + } +#endif + genflags_normal (type, size, value, src, dst); +} + +static void force_range_for_rox (const char *var, wordsizes size) +{ + /* Could do a modulo operation here... which one is faster? */ + switch (size) { + case sz_long: + printf ("\tif (%s >= 33) %s -= 33;\n", var, var); + break; + case sz_word: + printf ("\tif (%s >= 34) %s -= 34;\n", var, var); + printf ("\tif (%s >= 17) %s -= 17;\n", var, var); + break; + case sz_byte: + printf ("\tif (%s >= 36) %s -= 36;\n", var, var); + printf ("\tif (%s >= 18) %s -= 18;\n", var, var); + printf ("\tif (%s >= 9) %s -= 9;\n", var, var); + break; + } +} + +static const char *cmask (wordsizes size) +{ + switch (size) { + case sz_byte: return "0x80"; + case sz_word: return "0x8000"; + case sz_long: return "0x80000000"; + default: abort (); + } +} + +static int source_is_imm1_8 (struct instr *i) +{ + return i->stype == 3; +} + +static void gen_opcode (unsigned long int opcode) +{ + struct instr *curi = table68k + opcode; +#if PALM_PERF + extraCycles = readCycles = writeCycles = 0; +#endif // PALM_PERF + insn_n_cycles = 2; + + start_brace (); +#if 0 + printf ("uae_u8 *m68k_pc = regs.pc_p;\n"); +#endif + m68k_pc_offset = 2; + switch (curi->plev) { + case 0: /* not privileged */ + break; + case 1: /* unprivileged only on 68000 */ + if (cpu_level == 0) + break; + if (next_cpu_level < 0) + next_cpu_level = 0; + + /* fall through */ + case 2: /* priviledged */ + printf ("if (!regs.s) { Exception(8,0); goto %s; }\n", endlabelstr); + need_endlabel = 1; + start_brace (); + break; + case 3: /* privileged if size == word */ + if (curi->size == sz_byte) + break; + printf ("if (!regs.s) { Exception(8,0); goto %s; }\n", endlabelstr); + need_endlabel = 1; + start_brace (); + break; + } + switch (curi->mnemo) { + case i_OR: + case i_AND: + case i_EOR: + genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); + genamode (curi->dmode, "dstreg", curi->size, "dst", 1, 0); + printf ("\tsrc %c= dst;\n", curi->mnemo == i_OR ? '|' : curi->mnemo == i_AND ? '&' : '^'); + genflags (flag_logical, curi->size, "src", "", ""); + genastore ("src", curi->dmode, "dstreg", curi->size, "dst"); +#if PALM_PERF + if (curi->mnemo == i_OR) + { + if (curi->size <= sz_word) + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("OR.B/W M, Dn 4(1/0)+ Dn, M 8(1/1)+\n");} + else + if (curi->dmode == Dreg) + {extraCycles += 2; readCycles += 1; writeCycles += 0; PERF_COMMENT("OR.L <ea>, Dn 6(1/0)+**\n");} + else + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("OR.L Dn, M 12(1/2)+**\n");} + } + else if (curi->mnemo == i_AND) + { + if (curi->size <= sz_word) + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("AND.B/W M, Dn 4(1/0)+ Dn, M 8(1/1)+\n");} + else + if (curi->dmode == Dreg) + {extraCycles += 2; readCycles += 1; writeCycles += 0; PERF_COMMENT("AND.L <ea>, Dn 6(1/0)+**\n");} + else + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("AND.L Dn, M 12(1/2)+**\n");} + } + else + { + if (curi->size <= sz_word) + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("EOR.B/W M, Dn 4(1/0)+, Dn, M 8(1/1)+\n");} + else + if (curi->dmode == Dreg) + {extraCycles += 4; readCycles += 1; writeCycles += 0; PERF_COMMENT("EOR.L M, Dn 8(1/0)+\n");} + else + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("EOR.L Dn, M 12(1/2)+\n");} + } +#endif // PALM_PERF + break; + case i_ORSR: + case i_EORSR: + printf ("\tMakeSR();\n"); + genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); + if (curi->size == sz_byte) { + printf ("\tsrc &= 0xFF;\n"); + } + printf ("\tregs.sr %c= src;\n", curi->mnemo == i_EORSR ? '^' : '|'); + printf ("\tMakeFromSR();\n"); +#if PALM_PERF + if (curi->mnemo == i_EORSR) + { + if (curi->size <= sz_word) + {extraCycles += 8; readCycles += 3; writeCycles += 0; PERF_COMMENT("EORSR.B/W 20(3/0)\n");} + } + else + { + if (curi->size <= sz_word) + {extraCycles += 8; readCycles += 3; writeCycles += 0; PERF_COMMENT("ORSR.B/W 20(3/0)\n");} + } +#endif // PALM_PERF + break; + case i_ANDSR: + printf ("\tMakeSR();\n"); + genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); + if (curi->size == sz_byte) { + printf ("\tsrc |= 0xFF00;\n"); + } + printf ("\tregs.sr &= src;\n"); + printf ("\tMakeFromSR();\n"); +#if PALM_PERF + if (curi->size <= sz_word) + {extraCycles += 8; readCycles += 3; writeCycles += 0; PERF_COMMENT("ANDSR.B/W 20(3/0)\n");} +#endif // PALM_PERF + break; + case i_SUB: + genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); + genamode (curi->dmode, "dstreg", curi->size, "dst", 1, 0); + start_brace (); + genflags (flag_sub, curi->size, "newv", "src", "dst"); + genastore ("newv", curi->dmode, "dstreg", curi->size, "dst"); +#if PALM_PERF + if (curi->size <= sz_word) + if (curi->dmode == Areg) + {extraCycles += 4; readCycles += 1; writeCycles += 0; PERF_COMMENT("SUB.B/W, An 8(1/0)\n");} + else + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("SUB.B/W Dn 4(1/0), <M> 8(1/1)\n");} + else + if (curi->dmode <= Areg) + if (curi->smode <= Areg || curi->smode >= imm) + {extraCycles += 4; readCycles += 1; writeCycles += 0; PERF_COMMENT("SUB.L {An, Dn, imm}, {An, Dn} 8(1/0)+\n");} + else + {extraCycles += 2; readCycles += 1; writeCycles += 0; PERF_COMMENT("SUB.L <M>, {An, Dn} 6(1/0)+\n");} + else + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("SUB.L Dn, <M> 12(1/2)+\n");} +#endif // PALM_PERF + break; + case i_SUBA: + genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); + genamode (curi->dmode, "dstreg", sz_long, "dst", 1, 0); + start_brace (); + printf ("\tuae_u32 newv = dst - src;\n"); +#if PALM_STACK + suba_hack = 1; +#endif // PALM_STACK + genastore ("newv", curi->dmode, "dstreg", sz_long, "dst"); +#if PALM_STACK + suba_hack = 0; +#endif // PALM_STACK +#if PALM_PERF + if (curi->size <= sz_word) + {extraCycles += 4; readCycles += 1; writeCycles += 0; PERF_COMMENT("SUBA.W, An 8(1/0)\n");} + else + if (curi->smode <= Areg || curi->smode >= imm) + {extraCycles += 4; readCycles += 1; writeCycles += 0; PERF_COMMENT("SUBA.L {An, Dn, imm}, {An, Dn} 8(1/0)+\n");} + else + {extraCycles += 2; readCycles += 1; writeCycles += 0; PERF_COMMENT("SUBA.L <M>, {An, Dn} 6(1/0)+\n");} +#endif // PALM_PERF + break; + case i_SUBX: + genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); + genamode (curi->dmode, "dstreg", curi->size, "dst", 1, 0); + start_brace (); + printf ("\tuae_u32 newv = dst - src - (GET_XFLG ? 1 : 0);\n"); + genflags (flag_subx, curi->size, "newv", "src", "dst"); + genflags (flag_zn, curi->size, "newv", "", ""); + genastore ("newv", curi->dmode, "dstreg", curi->size, "dst"); +#if PALM_PERF + if (curi->size <= sz_word) + if (curi->smode == Dreg) + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("SUBX.B/W Dn, Dn 4(1/0)\n");} + else + {extraCycles += -2; readCycles += 1; writeCycles += 0; PERF_COMMENT("SUBX.B/W -(Ax), -(Ay) 18(3/1)\n");} + else // sz_long + if (curi->smode == Dreg) + {extraCycles += 4; readCycles += 1; writeCycles += 0; PERF_COMMENT("SUBX.L Dn, Dn 8(1/0)\n");} + else + {extraCycles += -2; readCycles += 1; writeCycles += 0; PERF_COMMENT("SUBX.L -(Ax), -(Ay) 30(5/2)\n");} +#endif // PALM_PERF + break; + case i_SBCD: + /* Let's hope this works... */ + genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); + genamode (curi->dmode, "dstreg", curi->size, "dst", 1, 0); + start_brace (); + printf ("\tuae_u16 newv_lo = (dst & 0xF) - (src & 0xF) - (GET_XFLG ? 1 : 0);\n"); + printf ("\tuae_u16 newv_hi = (dst & 0xF0) - (src & 0xF0);\n"); + printf ("\tuae_u16 newv;\n"); + printf ("\tint cflg;\n"); + printf ("\tif (newv_lo > 9) { newv_lo-=6; newv_hi-=0x10; }\n"); + printf ("\tnewv = newv_hi + (newv_lo & 0xF);"); + printf ("\tSET_CFLG (cflg = (newv_hi & 0x1F0) > 0x90);\n"); + duplicate_carry (); + printf ("\tif (cflg) newv -= 0x60;\n"); + genflags (flag_zn, curi->size, "newv", "", ""); + genflags (flag_sv, curi->size, "newv", "src", "dst"); + genastore ("newv", curi->dmode, "dstreg", curi->size, "dst"); +#if PALM_PERF + if (curi->size == sz_byte) + if (curi->smode == Dreg) + {extraCycles += 2; readCycles += 1; writeCycles += 0; PERF_COMMENT("SBCD.B Dn, Dn 6(1/0)\n");} + else + {extraCycles += -2; readCycles += 1; writeCycles += 0; PERF_COMMENT("SBCD.B -(Ax), -(Ay) 18(3/1)\n");} +#endif // PALM_PERF + break; + case i_ADD: + genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); + genamode (curi->dmode, "dstreg", curi->size, "dst", 1, 0); + start_brace (); + genflags (flag_add, curi->size, "newv", "src", "dst"); + genastore ("newv", curi->dmode, "dstreg", curi->size, "dst"); +#if PALM_PERF + if (curi->size <= sz_word) + if (curi->dmode == Areg) + {extraCycles += 4; readCycles += 1; writeCycles += 0; PERF_COMMENT("ADD.W 8(1/0)+\n");} + else + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("ADD.B/W <ea>, Dn 4(1/0)+, <M> 8(1/1)+\n");} + else // sz_long + if (curi->dmode <= Areg) + if (curi->smode <= Areg || curi->smode >= imm) + {extraCycles += 4; readCycles += 1; writeCycles += 0; PERF_COMMENT("ADD.L {Rn, imm}, Rn 8(1/0)+\n");} + else + {extraCycles += 2; readCycles += 1; writeCycles += 0; PERF_COMMENT("ADD.L <M>, Rn 6(1/0)+\n");} + else + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("ADD.L Dn, <M> 12(1/2)+\n");} +#endif // PALM_PERF + break; + case i_ADDA: + genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); + genamode (curi->dmode, "dstreg", sz_long, "dst", 1, 0); + start_brace (); + printf ("\tuae_u32 newv = dst + src;\n"); +#if PALM_STACK + adda_hack = 1; +#endif // PALM_STACK + genastore ("newv", curi->dmode, "dstreg", sz_long, "dst"); +#if PALM_STACK + adda_hack = 0; +#endif // PALM_STACK +#if PALM_PERF + if (curi->size <= sz_word) + {extraCycles += 4; readCycles += 1; writeCycles += 0; PERF_COMMENT("ADD.W, An 8(1/0)\n");} + else + if (curi->smode <= Areg || curi->smode >= imm) + {extraCycles += 4; readCycles += 1; writeCycles += 0; PERF_COMMENT("ADD.L {An, Dn, imm}, {An, Dn} 8(1/0)+\n");} + else + {extraCycles += 2; readCycles += 1; writeCycles += 0; PERF_COMMENT("ADD.L <M>, {An, Dn} 6(1/0)+\n");} +#endif // PALM_PERF + break; + case i_ADDX: + genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); + genamode (curi->dmode, "dstreg", curi->size, "dst", 1, 0); + start_brace (); + printf ("\tuae_u32 newv = dst + src + (GET_XFLG ? 1 : 0);\n"); + genflags (flag_addx, curi->size, "newv", "src", "dst"); + genflags (flag_zn, curi->size, "newv", "", ""); + genastore ("newv", curi->dmode, "dstreg", curi->size, "dst"); +#if PALM_PERF + if (curi->size <= sz_word) + if (curi->smode == Dreg) + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("ADDX.B/W Dn, Dn 4(1/0)\n");} + else + {extraCycles += -2; readCycles += 1; writeCycles += 0; PERF_COMMENT("ADDX.B/W -(Ax), -(Ay) 18(3/1)\n");} + else // sz_long + if (curi->smode == Dreg) + {extraCycles += 4; readCycles += 1; writeCycles += 0; PERF_COMMENT("ADDX.L Dn, Dn 8(1/0)\n");} + else + {extraCycles += -2; readCycles += 1; writeCycles += 0; PERF_COMMENT("ADDX.L -(Ax), -(Ay) 30(5/2)\n");} +#endif // PALM_PERF + break; + case i_ABCD: + genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); + genamode (curi->dmode, "dstreg", curi->size, "dst", 1, 0); + start_brace (); + printf ("\tuae_u16 newv_lo = (src & 0xF) + (dst & 0xF) + (GET_XFLG ? 1 : 0);\n"); + printf ("\tuae_u16 newv_hi = (src & 0xF0) + (dst & 0xF0);\n"); + printf ("\tuae_u16 newv;\n"); + printf ("\tint cflg;\n"); + printf ("\tif (newv_lo > 9) { newv_lo +=6; }\n"); + printf ("\tnewv = newv_hi + newv_lo;"); + printf ("\tSET_CFLG (cflg = (newv & 0x1F0) > 0x90);\n"); + duplicate_carry (); + printf ("\tif (cflg) newv += 0x60;\n"); + genflags (flag_zn, curi->size, "newv", "", ""); + genflags (flag_sv, curi->size, "newv", "src", "dst"); + genastore ("newv", curi->dmode, "dstreg", curi->size, "dst"); +#if PALM_PERF + if (curi->size == sz_byte) + if (curi->smode == Dreg) + {extraCycles += 2; readCycles += 1; writeCycles += 0; PERF_COMMENT("ABCD.B Dn, Dn 6(1/0)\n");} + else + {extraCycles += -2; readCycles += 1; writeCycles += 0; PERF_COMMENT("ABCD.B -(Ax), -(Ay) 18(3/1)\n");} +#endif // PALM_PERF + break; + case i_NEG: + genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); + start_brace (); + genflags (flag_sub, curi->size, "dst", "src", "0"); + genastore ("dst", curi->smode, "srcreg", curi->size, "src"); +#if PALM_PERF + if (curi->size <= sz_word) + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("NEG.B/W Rn 4(1/0) M 8(1/1)+\n");} + else // sz_word, sz_long + if (curi->smode <= Areg) + {extraCycles += 2; readCycles += 1; writeCycles += 0; PERF_COMMENT("NEG.L Rn 6(1/0)\n");} + else + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("NEG.B/W M 12(1/2)+\n");} +#endif // PALM_PERF + break; + case i_NEGX: + genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); + start_brace (); + printf ("\tuae_u32 newv = 0 - src - (GET_XFLG ? 1 : 0);\n"); + genflags (flag_subx, curi->size, "newv", "src", "0"); + genflags (flag_zn, curi->size, "newv", "", ""); + genastore ("newv", curi->smode, "srcreg", curi->size, "src"); +#if PALM_PERF + if (curi->size <= sz_word) + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("NEGX.B/W Rn 4(1/0) M 8(1/1)+\n");} + else // sz_word, sz_long + if (curi->smode <= Areg) + {extraCycles += 2; readCycles += 1; writeCycles += 0; PERF_COMMENT("NEGX.L Rn 6(1/0)\n");} + else + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("NEGX.L M 12(1/2)+\n");} +#endif // PALM_PERF + break; + case i_NBCD: + genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); + start_brace (); + printf ("\tuae_u16 newv_lo = - (src & 0xF) - (GET_XFLG ? 1 : 0);\n"); + printf ("\tuae_u16 newv_hi = - (src & 0xF0);\n"); + printf ("\tuae_u16 newv;\n"); + printf ("\tint cflg;\n"); + printf ("\tif (newv_lo > 9) { newv_lo-=6; newv_hi-=0x10; }\n"); + printf ("\tnewv = newv_hi + (newv_lo & 0xF);"); + printf ("\tSET_CFLG (cflg = (newv_hi & 0x1F0) > 0x90);\n"); + duplicate_carry(); + printf ("\tif (cflg) newv -= 0x60;\n"); + genflags (flag_zn, curi->size, "newv", "", ""); + genastore ("newv", curi->smode, "srcreg", curi->size, "src"); +#if PALM_PERF + // !!! Does the call to genflags need to be moved below this? + if (curi->smode <= Areg) + {extraCycles += 2; readCycles += 1; writeCycles += 0; PERF_COMMENT("NBCD.B Rn 6(1/0)\n");} + else + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("NBCD.B <M> 8(1/1)+\n");} +#endif // PALM_PERF + break; + case i_CLR: + genamode (curi->smode, "srcreg", curi->size, "src", 2, 0); + genflags (flag_logical, curi->size, "0", "", ""); + genastore ("0", curi->smode, "srcreg", curi->size, "src"); +#if PALM_PERF + if (curi->size <= sz_word) + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("CLR.B/W Rn 4(1/0) M 8(1/1)+\n");} + else // sz_long + if (curi->smode <= Areg) + {extraCycles += 2; readCycles += 1; writeCycles += 0; PERF_COMMENT("CLR.L Rn 6(1/0)\n");} + else + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("CLR.L M 12(1/2)+\n");} +#endif // PALM_PERF + break; + case i_NOT: + genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); + start_brace (); + printf ("\tuae_u32 dst = ~src;\n"); + genflags (flag_logical, curi->size, "dst", "", ""); + genastore ("dst", curi->smode, "srcreg", curi->size, "src"); +#if PALM_PERF + if (curi->size <= sz_word) + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("NOT.B/W Rn 4(1/0) M 8(1/1)+\n");} + else // sz_long + if (curi->smode <= Areg) + {extraCycles += 2; readCycles += 1; writeCycles += 0; PERF_COMMENT("NOT.L Rn 6(1/0)\n");} + else + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("NOT.L M 12(1/2)+\n");} +#endif // PALM_PERF + break; + case i_TST: + genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); + genflags (flag_logical, curi->size, "src", "", ""); +#if PALM_PERF + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("TST Rn 4(1/0) M 4(1/0)+\n");} +#endif // PALM_PERF + break; + case i_BTST: + genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); + genamode (curi->dmode, "dstreg", curi->size, "dst", 1, 0); + if (curi->size == sz_byte) + printf ("\tsrc &= 7;\n"); + else + printf ("\tsrc &= 31;\n"); + printf ("\tSET_ZFLG (1 ^ ((dst >> src) & 1));\n"); +#if PALM_PERF + if (curi->size <= sz_byte) + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("BTST.B M Dyn 4(1/0)+ Stat 8(2/0)+\n");} + else // sz_long + {extraCycles += 2; readCycles += 1; writeCycles += 0; PERF_COMMENT("BTST.L Dn Dyn 6(1/0) Stat 10(2/0)\n");} +#endif // PALM_PERF + break; + case i_BCHG: + genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); + genamode (curi->dmode, "dstreg", curi->size, "dst", 1, 0); + if (curi->size == sz_byte) + printf ("\tsrc &= 7;\n"); + else + printf ("\tsrc &= 31;\n"); + printf ("\tdst ^= (1 << src);\n"); +#if PALM_BUG_FIX + printf ("\tSET_ZFLG ((dst >> src) & 1);\n"); +#else // PALM_BUG_FIX + printf ("\tSET_ZFLG ((dst & (1 << src)) >> src);\n"); +#endif // PALM_BUG_FIX + genastore ("dst", curi->dmode, "dstreg", curi->size, "dst"); +#if PALM_PERF + if (curi->size <= sz_byte) + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("BCHG.B M Dyn 8(1/1)+ Stat 12(2/1)+\n");} + else // sz_long + {extraCycles += 4; readCycles += 1; writeCycles += 0; PERF_COMMENT("BCHG.L Dn Dyn 8(1/0)* Stat 12(2/0)*\n");} +#endif // PALM_PERF + break; + case i_BCLR: + genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); + genamode (curi->dmode, "dstreg", curi->size, "dst", 1, 0); + if (curi->size == sz_byte) + printf ("\tsrc &= 7;\n"); + else + printf ("\tsrc &= 31;\n"); + printf ("\tSET_ZFLG (1 ^ ((dst >> src) & 1));\n"); + printf ("\tdst &= ~(1 << src);\n"); + genastore ("dst", curi->dmode, "dstreg", curi->size, "dst"); +#if PALM_PERF + if (curi->size <= sz_byte) + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("BCLR.B M Dyn 8(1/1)+ Stat 12(2/1)+\n");} + else // sz_long + {extraCycles += 6; readCycles += 1; writeCycles += 0; PERF_COMMENT("BCLR.L Dn Dyn 10(1/0)* Stat 14(2/0)*\n");} +#endif // PALM_PERF + break; + case i_BSET: + genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); + genamode (curi->dmode, "dstreg", curi->size, "dst", 1, 0); + if (curi->size == sz_byte) + printf ("\tsrc &= 7;\n"); + else + printf ("\tsrc &= 31;\n"); + printf ("\tSET_ZFLG (1 ^ ((dst >> src) & 1));\n"); + printf ("\tdst |= (1 << src);\n"); + genastore ("dst", curi->dmode, "dstreg", curi->size, "dst"); +#if PALM_PERF + if (curi->size <= sz_byte) + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("BSET.B M Dyn 8(1/1)+ Stat 12(2/1)+\n");} + else // sz_long + {extraCycles += 4; readCycles += 1; writeCycles += 0; PERF_COMMENT("BSET.L Dn Dyn 8(1/0)* Stat 12(2/0)*\n");} +#endif // PALM_PERF + break; + case i_CMPM: + case i_CMP: + genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); + genamode (curi->dmode, "dstreg", curi->size, "dst", 1, 0); + start_brace (); + genflags (flag_cmp, curi->size, "newv", "src", "dst"); +#if PALM_PERF + if (curi->dmode == Areg) + {extraCycles += 2; readCycles += 1; writeCycles += 0; PERF_COMMENT("CMP <ea>, An 6(1/0)+\n");} + else if (curi->dmode == Dreg) + if (curi->size <= sz_word) + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("CMP.B/W <ea>, Dn 4(1/0)+\n");} + else // sz_long + {extraCycles += 2; readCycles += 1; writeCycles += 0; PERF_COMMENT("CMP.L <ea>, Dn 6(1/0)+\n");} + else if (curi->smode >= imm) + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("CMPI #, M B/W 8(2/0)+, L 12(3/0)+\n");} + else + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("CMPM M, M B/W 12(3/0), L 20(5/0)\n");} +#endif // PALM_PERF + break; + case i_CMPA: + genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); + genamode (curi->dmode, "dstreg", sz_long, "dst", 1, 0); + start_brace (); + genflags (flag_cmp, sz_long, "newv", "src", "dst"); +#if PALM_PERF + if (curi->dmode == Areg) + {extraCycles += 2; readCycles += 1; writeCycles += 0; PERF_COMMENT("CMPA <ea>, An 6(1/0)+\n");} + else if (curi->dmode == Dreg) + if (curi->size <= sz_word) + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("CMPA.B/W <ea>, Dn 4(1/0)+\n");} + else // sz_long + {extraCycles += 2; readCycles += 1; writeCycles += 0; PERF_COMMENT("CMPA.L <ea>, Dn 6(1/0)+\n");} +#endif // PALM_PERF + break; + /* The next two are coded a little unconventional, but they are doing + * weird things... */ + case i_MVPRM: + genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); + + printf ("\tuaecptr memp = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)%s;\n", gen_nextiword ()); + if (curi->size == sz_word) { + printf ("\tput_byte(memp, src >> 8); put_byte(memp + 2, src);\n"); + } else { + printf ("\tput_byte(memp, src >> 24); put_byte(memp + 2, src >> 16);\n"); + printf ("\tput_byte(memp + 4, src >> 8); put_byte(memp + 6, src);\n"); + } +#if PALM_PERF + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("read: (d16, Ay) 4(1/0)\n");} + if (curi->size == sz_word) { + {extraCycles += 0; readCycles += 0; writeCycles += 2; PERF_COMMENT("writes: 8(0/2)\n");} + } else { + {extraCycles += 0; readCycles += 0; writeCycles += 4; PERF_COMMENT("writes: 16(0/4)\n");} + } + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("MOVEP Rn, M W 16(2/2) L 24(2/4)\n");} +#endif // PALM_PERF + break; + case i_MVPMR: + printf ("\tuaecptr memp = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)%s;\n", gen_nextiword ()); + genamode (curi->dmode, "dstreg", curi->size, "dst", 2, 0); + if (curi->size == sz_word) { + printf ("\tuae_u16 val = (get_byte(memp) << 8) + get_byte(memp + 2);\n"); + } else { + printf ("\tuae_u32 val = (get_byte(memp) << 24) + (get_byte(memp + 2) << 16)\n"); + printf (" + (get_byte(memp + 4) << 8) + get_byte(memp + 6);\n"); + } + genastore ("val", curi->dmode, "dstreg", curi->size, "dst"); +#if PALM_PERF + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("read: (d16, Ay) 4(1/0)\n");} + if (curi->size == sz_word) { + {extraCycles += 0; readCycles += 2; writeCycles += 0; PERF_COMMENT("reads: 8(2/0)\n");} + } else { + {extraCycles += 0; readCycles += 4; writeCycles += 0; PERF_COMMENT("reads: 16(4/0)\n");} + } + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("MOVEP M, Rn W 16(4/0) L 24(6/0)\n");} +#endif // PALM_PERF + break; + case i_MOVE: + genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); + genamode (curi->dmode, "dstreg", curi->size, "dst", 2, 0); + genflags (flag_logical, curi->size, "src", "", ""); + genastore ("src", curi->dmode, "dstreg", curi->size, "dst"); +#if PALM_PERF + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("MOVE 4(1/0)+\n");} +#endif // PALM_PERF + break; + case i_MOVEA: + genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); + genamode (curi->dmode, "dstreg", curi->size, "dst", 2, 0); + if (curi->size == sz_word) { + printf ("\tuae_u32 val = (uae_s32)(uae_s16)src;\n"); + } else { + printf ("\tuae_u32 val = src;\n"); + } + genastore ("val", curi->dmode, "dstreg", sz_long, "dst"); +#if PALM_PERF + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("MOVEA 4(1/0)+\n");} +#endif // PALM_PERF + break; + case i_MVSR2: + genamode (curi->smode, "srcreg", sz_word, "src", 2, 0); + printf ("\tMakeSR();\n"); + if (curi->size == sz_byte) + genastore ("regs.sr & 0xff", curi->smode, "srcreg", sz_word, "src"); + else + genastore ("regs.sr", curi->smode, "srcreg", sz_word, "src"); +#if PALM_PERF + if (curi->smode <= Areg) + {extraCycles += 2; readCycles += 1; writeCycles += 0; PERF_COMMENT("MOVE SR, Rn 6(1/0)\n");} + else + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("MOVE SR, M 8(1/1)+\n");} +#endif // PALM_PERF + break; + case i_MV2SR: + genamode (curi->smode, "srcreg", sz_word, "src", 1, 0); + if (curi->size == sz_byte) + printf ("\tMakeSR();\n\tregs.sr &= 0xFF00;\n\tregs.sr |= src & 0xFF;\n"); + else { + printf ("\tregs.sr = src;\n"); + } + printf ("\tMakeFromSR();\n"); +#if PALM_PERF + {extraCycles += 4; readCycles += 2; writeCycles += 0; PERF_COMMENT("MOVE <ea>, SR 12(2/0)+\n");} +#endif // PALM_PERF + break; + case i_SWAP: + genamode (curi->smode, "srcreg", sz_long, "src", 1, 0); + start_brace (); + printf ("\tuae_u32 dst = ((src >> 16)&0xFFFF) | ((src&0xFFFF)<<16);\n"); + genflags (flag_logical, sz_long, "dst", "", ""); + genastore ("dst", curi->smode, "srcreg", sz_long, "src"); +#if PALM_PERF + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("SWAP 4(1/0)\n");} +#endif // PALM_PERF + break; + case i_EXG: + genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); + genamode (curi->dmode, "dstreg", curi->size, "dst", 1, 0); + genastore ("dst", curi->smode, "srcreg", curi->size, "src"); + genastore ("src", curi->dmode, "dstreg", curi->size, "dst"); +#if PALM_PERF + {extraCycles += 2; readCycles += 1; writeCycles += 0; PERF_COMMENT("EXG 6(1/0)\n");} +#endif // PALM_PERF + break; + case i_EXT: + genamode (curi->smode, "srcreg", sz_long, "src", 1, 0); + start_brace (); + switch (curi->size) { + case sz_byte: printf ("\tuae_u32 dst = (uae_s32)(uae_s8)src;\n"); break; + case sz_word: printf ("\tuae_u16 dst = (uae_s16)(uae_s8)src;\n"); break; + case sz_long: printf ("\tuae_u32 dst = (uae_s32)(uae_s16)src;\n"); break; + default: abort (); + } + genflags (flag_logical, + curi->size == sz_word ? sz_word : sz_long, "dst", "", ""); + genastore ("dst", curi->smode, "srcreg", + curi->size == sz_word ? sz_word : sz_long, "src"); +#if PALM_PERF + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("EXT 4(1/0)\n");} +#endif // PALM_PERF + break; + case i_MVMEL: + genmovemel (opcode); + break; + case i_MVMLE: + genmovemle (opcode); + break; + case i_TRAP: + genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); + sync_m68k_pc (); + printf ("\tException(src+32,0);\n"); + m68k_pc_offset = 0; +#if PALM_PERF + {extraCycles += 6; readCycles = 0xFF; writeCycles = 0xFF; PERF_COMMENT("TRAP 34(4/3)\n");} +#endif // PALM_PERF + break; + case i_MVR2USP: + genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); + printf ("\tregs.usp = src;\n"); +#if PALM_PERF + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("MOVE to USP 4(1/0)\n");} +#endif // PALM_PERF + break; + case i_MVUSP2R: + genamode (curi->smode, "srcreg", curi->size, "src", 2, 0); + genastore ("regs.usp", curi->smode, "srcreg", curi->size, "src"); +#if PALM_PERF + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("MOVE from USP 4(1/0)\n");} +#endif // PALM_PERF + break; + case i_RESET: + printf ("\tcustomreset();\n"); +#if PALM_PERF + {extraCycles += 128; readCycles += 1; writeCycles += 0; PERF_COMMENT("RESET 132(1/0)\n");} +#endif // PALM_PERF + break; + case i_NOP: +#if PALM_PERF + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("NOP 4(1/0)\n");} +#endif // PALM_PERF + break; + case i_STOP: + genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); + printf ("\tregs.sr = src;\n"); + printf ("\tMakeFromSR();\n"); + printf ("\tm68k_setstopped(1);\n"); +#if PALM_PERF + {extraCycles += 4; readCycles += 0; writeCycles += 0; PERF_COMMENT("STOP 4(0/0)\n");} +#endif // PALM_PERF + break; + case i_RTE: + if (cpu_level == 0) { + genamode (Aipi, "7", sz_word, "sr", 1, 0); + genamode (Aipi, "7", sz_long, "pc", 1, 0); +#if PALM_PERF + printf ("\tregs.sr = sr; m68k_do_rte(pc);\n"); +#else // PALM_PERF + printf ("\tregs.sr = sr; m68k_setpc_rte(pc);\n"); +#endif // PALM_PERF + fill_prefetch_0 (); + printf ("\tMakeFromSR();\n"); + } else { + int old_brace_level = n_braces; + if (next_cpu_level < 0) + next_cpu_level = 0; + printf ("\tuae_u16 newsr; uae_u32 newpc; for (;;) {\n"); + genamode (Aipi, "7", sz_word, "sr", 1, 0); + genamode (Aipi, "7", sz_long, "pc", 1, 0); + genamode (Aipi, "7", sz_word, "format", 1, 0); + printf ("\tnewsr = sr; newpc = pc;\n"); + printf ("\tif ((format & 0xF000) == 0x0000) { break; }\n"); + printf ("\telse if ((format & 0xF000) == 0x1000) { ; }\n"); + printf ("\telse if ((format & 0xF000) == 0x2000) { m68k_areg(regs, 7) += 4; break; }\n"); + printf ("\telse if ((format & 0xF000) == 0x8000) { m68k_areg(regs, 7) += 50; break; }\n"); + printf ("\telse if ((format & 0xF000) == 0x9000) { m68k_areg(regs, 7) += 12; break; }\n"); + printf ("\telse if ((format & 0xF000) == 0xa000) { m68k_areg(regs, 7) += 24; break; }\n"); + printf ("\telse if ((format & 0xF000) == 0xb000) { m68k_areg(regs, 7) += 84; break; }\n"); + printf ("\telse { Exception(14,0); goto %s; }\n", endlabelstr); + printf ("\tregs.sr = newsr; MakeFromSR();\n}\n"); + pop_braces (old_brace_level); + printf ("\tregs.sr = newsr; MakeFromSR();\n"); + printf ("\tm68k_setpc_rte(newpc);\n"); + fill_prefetch_0 (); + need_endlabel = 1; + } + /* PC is set and prefetch filled. */ + m68k_pc_offset = 0; +#if PALM_PERF + {extraCycles += 0; readCycles += 2; writeCycles += 0; PERF_COMMENT("RTE 20(5/0)\n");} +#endif // PALM_PERF + break; + case i_RTD: + printf ("\tcompiler_flush_jsr_stack();\n"); + genamode (Aipi, "7", sz_long, "pc", 1, 0); + genamode (curi->smode, "srcreg", curi->size, "offs", 1, 0); + printf ("\tm68k_areg(regs, 7) += offs;\n"); +#if PALM_STACK + printf ("\tCHECK_STACK_POINTER_INCREMENT ();\n"); +#endif // PALM_STACK + printf ("\tm68k_setpc_rte(pc);\n"); + fill_prefetch_0 (); + /* PC is set and prefetch filled. */ + m68k_pc_offset = 0; +#if PALM_PERF + {extraCycles += 0; readCycles += 0; writeCycles += 0; PERF_COMMENT("RTD ?(?/?)\n");} +#endif // PALM_PERF + break; + case i_LINK: + genamode (Apdi, "7", sz_long, "old", 2, 0); + genamode (curi->smode, "srcreg", sz_long, "src", 1, 0); + genastore ("src", Apdi, "7", sz_long, "old"); + genastore ("m68k_areg(regs, 7)", curi->smode, "srcreg", sz_long, "src"); + genamode (curi->dmode, "dstreg", curi->size, "offs", 1, 0); + printf ("\tm68k_areg(regs, 7) += offs;\n"); +#if PALM_STACK + printf ("\tCHECK_STACK_POINTER_DECREMENT ();\n"); +#endif // PALM_STACK +#if PALM_PERF + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("LINK 16(2/2)\n");} +#endif // PALM_PERF + break; + case i_UNLK: + genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); + printf ("\tm68k_areg(regs, 7) = src;\n"); +#if PALM_STACK + printf ("\tCHECK_STACK_POINTER_INCREMENT ();\n"); +#endif // PALM_STACK + genamode (Aipi, "7", sz_long, "old", 1, 0); + genastore ("old", curi->smode, "srcreg", curi->size, "src"); +#if PALM_PERF + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("UNLK 12(3/0)\n");} +#endif // PALM_PERF + break; + case i_RTS: + printf ("\tm68k_do_rts();\n"); + fill_prefetch_0 (); + m68k_pc_offset = 0; +#if PALM_PERF + {extraCycles += 0; readCycles += 4; writeCycles += 0; PERF_COMMENT("RTS 16(4/0)\n");} +#endif // PALM_PERF + break; + case i_TRAPV: + sync_m68k_pc (); + printf ("\tif (GET_VFLG) { Exception(7,m68k_getpc()); goto %s; }\n", endlabelstr); + need_endlabel = 1; +#if PALM_PERF + {extraCycles += 0; readCycles = 0xFF; writeCycles = 0xFF; PERF_COMMENT("TRAPV 4(1/0) OR 34(5/3)\n");} +#endif // PALM_PERF + break; + case i_RTR: + printf ("\tcompiler_flush_jsr_stack();\n"); + printf ("\tMakeSR();\n"); + genamode (Aipi, "7", sz_word, "sr", 1, 0); + genamode (Aipi, "7", sz_long, "pc", 1, 0); + printf ("\tregs.sr &= 0xFF00; sr &= 0xFF;\n"); + printf ("\tregs.sr |= sr; m68k_setpc(pc);\n"); + fill_prefetch_0 (); + printf ("\tMakeFromSR();\n"); + m68k_pc_offset = 0; +#if PALM_PERF + {extraCycles += 12; readCycles += -1; writeCycles += 0; PERF_COMMENT("RTR 20(2/0)\n");} +#endif // PALM_PERF + break; + case i_JSR: + genamode (curi->smode, "srcreg", curi->size, "src", 0, 0); +#if PALM_SYSTEM_CALL + if (curi->smode == Aind) + printf ("if (!Software_ProcessJSR_Ind (m68k_getpc(), srca))\n"); +#endif // PALM_SYSTEM_CALL + printf ("\tm68k_do_jsr(m68k_getpc() + %d, srca);\n", m68k_pc_offset); + fill_prefetch_0 (); + m68k_pc_offset = 0; +#if PALM_PERF + switch (curi->smode) { + case Ad16: + case absw: + case PC16: + {extraCycles = 2; readCycles = 2; writeCycles = 2; PERF_COMMENT("JSR {(d16, An), (xxx).W, (d16 PC)} 18(2/2)\n");} + break; + case Aind: + {extraCycles = 0; readCycles = 2; writeCycles = 2; PERF_COMMENT("JSR (An) 16(2/2)\n");} + break; + case Ad8r: + case PC8r: + {extraCycles = 6; readCycles = 2; writeCycles = 2; PERF_COMMENT("JSR {(d8,An,Xn)+, (d8,PC,Xn)} 22(2/2)\n");} + break; + case absl: + {extraCycles = 0; readCycles = 3; writeCycles = 2; PERF_COMMENT("JSR (xxx).L 20(3/2)\n");} + break; + } +#endif // PALM_PERF + break; + case i_JMP: + genamode (curi->smode, "srcreg", curi->size, "src", 0, 0); + printf ("\tm68k_setpc(srca);\n"); + fill_prefetch_0 (); + m68k_pc_offset = 0; +#if PALM_PERF + if (curi->smode == absl) + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("JMP (xxx).L 12(3/0)\n");} + else if (curi->smode == Ad16 || curi->smode == absw || curi->smode == PC16) + {extraCycles += 2; readCycles += 1; writeCycles += 0; PERF_COMMENT("JMP {(d16, An), (xxx).W, (d16 PC)} 10(2/0)\n");} + else + {extraCycles += 0; readCycles += 2; writeCycles += 0; PERF_COMMENT("JMP (An) 8(2/0) (d8,An,Xn) 14(3/0), (d8,PC,Xn) 14(3/0)\n");} +#endif // PALM_PERF + break; + case i_BSR: + genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); + printf ("\tuae_s32 s = (uae_s32)src + 2;\n"); + if (using_exception_3) { + printf ("\tif (src & 1) {\n"); + printf ("\tlast_addr_for_exception_3 = m68k_getpc() + 2;\n"); + printf ("\t\tlast_fault_for_exception_3 = m68k_getpc() + s;\n"); + printf ("\t\tlast_op_for_exception_3 = opcode; Exception(3,0); goto %s;\n", endlabelstr); + printf ("\t}\n"); + need_endlabel = 1; + } + printf ("\tm68k_do_bsr(m68k_getpc() + %d, s);\n", m68k_pc_offset); + fill_prefetch_0 (); + m68k_pc_offset = 0; +#if PALM_PERF + {extraCycles = 2; readCycles = 2; writeCycles = 2; PERF_COMMENT("BSR 18(2/2)\n");} +#endif // PALM_PERF + break; + case i_Bcc: + if (curi->size == sz_long) { + if (cpu_level < 2) { + printf ("\tm68k_incpc(2);\n"); + printf ("\tif (!cctrue(%d)) goto %s;\n", curi->cc, endlabelstr); + printf ("\t\tlast_addr_for_exception_3 = m68k_getpc() + 2;\n"); + printf ("\t\tlast_fault_for_exception_3 = m68k_getpc() + 1;\n"); + printf ("\t\tlast_op_for_exception_3 = opcode; Exception(3,0); goto %s;\n", endlabelstr); + need_endlabel = 1; + } else { + if (next_cpu_level < 1) + next_cpu_level = 1; + } + } + genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); + printf ("\tif (!cctrue(%d)) goto didnt_jump;\n", curi->cc); + if (using_exception_3) { + printf ("\tif (src & 1) {\n"); + printf ("\t\tlast_addr_for_exception_3 = m68k_getpc() + 2;\n"); + printf ("\t\tlast_fault_for_exception_3 = m68k_getpc() + 2 + (uae_s32)src;\n"); + printf ("\t\tlast_op_for_exception_3 = opcode; Exception(3,0); goto %s;\n", endlabelstr); + printf ("\t}\n"); + need_endlabel = 1; + } +#ifdef USE_COMPILER + printf ("\tm68k_setpc_bcc(m68k_getpc() + 2 + (uae_s32)src);\n"); +#else + printf ("\tm68k_incpc ((uae_s32)src + 2);\n"); +#endif + fill_prefetch_0 (); +#if PALM_PERF + printf ("#if HAS_PROFILING\n"); + printf (" if (gProfilingEnabled)\n"); + printf (" ProfileIncrementClock(2);\n"); + printf ("#endif\n"); +#endif // PALM_PERF + printf ("\tgoto %s;\n", endlabelstr); + printf ("didnt_jump:;\n"); + need_endlabel = 1; +#if PALM_PERF + // ¥¥¥Êstill missing a read cycle sometimes. Weird. Don't know the address read from, so can't compute waits... + // ¥¥¥ readcycles should be 2, setting to 0xFF to disable breaking + if (curi->size == sz_byte) + {extraCycles += 2; readCycles = 0xFF; writeCycles += 0; PERF_COMMENT("Bcc.B 10(2/0) if taken, 8(1/0) if not\n");} + else + {extraCycles += 2; readCycles = 0xFF; writeCycles += 0; PERF_COMMENT("Bcc.W 10(2/0) if taken, 12(2/0) if not\n");} +#endif // PALM_PERF + break; + case i_LEA: + genamode (curi->smode, "srcreg", curi->size, "src", 0, 0); + genamode (curi->dmode, "dstreg", curi->size, "dst", 2, 0); +#if PALM_STACK + if (curi->smode == Areg || + curi->smode == Aind || + curi->smode == Aipi || + curi->smode == Apdi || + curi->smode == Ad16 || + curi->smode == Ad8r) + lea_hack = 1; +#endif // PALM_STACK + genastore ("srca", curi->dmode, "dstreg", curi->size, "dst"); +#if PALM_STACK + lea_hack = 0; +#endif // PALM_STACK +#if PALM_PERF + if (curi->smode == Ad8r || curi->smode == PC8r) + {extraCycles += 2; readCycles += 1; writeCycles += 0; PERF_COMMENT("LEA {(d8,An,Xn)+,(d8,PC,Xn)} 12(2/0) \n");} + else + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("LEA (An) 4(1/0) {(d16,An), (xxx).W, (d16,PC)} 8(2/0) (xxx).L 12(3/0)\n");} +#endif // PALM_PERF + break; + case i_PEA: + genamode (curi->smode, "srcreg", curi->size, "src", 0, 0); + genamode (Apdi, "7", sz_long, "dst", 2, 0); + genastore ("srca", Apdi, "7", sz_long, "dst"); +#if PALM_PERF + if (curi->smode == Ad8r || curi->smode == PC8r) + {extraCycles += 1; readCycles += 1; writeCycles += 0; PERF_COMMENT("PEA(d8,An,Xn)+, (d8,PC,Xn) 20(2/2)\n");} + else + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("PEA (An) 12(1/2) {(d16,An), (xxx).W, (d16,PC)} 16(2/2) (xxx).L 20(3/2)\n");} +#endif // PALM_PERF + break; + case i_DBcc: + genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); + genamode (curi->dmode, "dstreg", curi->size, "offs", 1, 0); + + printf ("\tif (!cctrue(%d)) {\n", curi->cc); + genastore ("(src-1)", curi->smode, "srcreg", curi->size, "src"); + + printf ("\t\tif (src) {\n"); + if (using_exception_3) { + printf ("\t\t\tif (offs & 1) {\n"); + printf ("\t\t\tlast_addr_for_exception_3 = m68k_getpc() + 2;\n"); + printf ("\t\t\tlast_fault_for_exception_3 = m68k_getpc() + 2 + (uae_s32)offs + 2;\n"); + printf ("\t\t\tlast_op_for_exception_3 = opcode; Exception(3,0); goto %s;\n", endlabelstr); + printf ("\t\t}\n"); + need_endlabel = 1; + } +#ifdef USE_COMPILER + printf ("\t\t\tm68k_setpc_bcc(m68k_getpc() + (uae_s32)offs + 2);\n"); +#else + printf ("\t\t\tm68k_incpc((uae_s32)offs + 2);\n"); +#endif + fill_prefetch_0 (); +#if PALM_PERF + printf ("#if HAS_PROFILING\n"); + printf (" if (gProfilingEnabled)\n"); + printf (" ProfileIncrementClock(2);\n"); + printf ("#endif\n"); +#endif // PALM_PERF + printf ("\t\tgoto %s;\n", endlabelstr); + printf ("\t\t}\n"); + printf ("\t}\n"); + need_endlabel = 1; +#if PALM_PERF + // ¥¥¥Êstill missing a read cycle somewhere, when counter expires + {extraCycles += 2; readCycles += 1; writeCycles += 0; PERF_COMMENT("DBcc 12(2/0) if cc, 10(2/0) if not -1, 14(3/0) if -1\n");} +#endif // PALM_PERF + break; + case i_Scc: + genamode (curi->smode, "srcreg", curi->size, "src", 2, 0); + start_brace (); + printf ("\tint val = cctrue(%d) ? 0xff : 0;\n", curi->cc); +#if PALM_PERF + if (curi->smode <= Areg) + { + printf ("#if HAS_PROFILING\n"); + printf (" if (gProfilingEnabled)\n"); + printf (" ProfileIncrementClock(2);\n"); + printf ("#endif\n"); + } +#endif // PALM_PERF + genastore ("val", curi->smode, "srcreg", curi->size, "src"); +#if PALM_PERF + if (curi->smode > Areg) + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("Scc <M> 8(1/1)+\n");} + else + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("Scc Rn 4(1/0) if false, 6(1/0) if true\n");} +#endif // PALM_PERF + break; + case i_DIVU: + printf ("\tuaecptr oldpc = m68k_getpc();\n"); + genamode (curi->smode, "srcreg", sz_word, "src", 1, 0); + genamode (curi->dmode, "dstreg", sz_long, "dst", 1, 0); + printf ("\tif(src == 0) { Exception(5,oldpc); goto %s; } else {\n", endlabelstr); + printf ("\tuae_u32 newv = (uae_u32)dst / (uae_u32)(uae_u16)src;\n"); + printf ("\tuae_u32 rem = (uae_u32)dst %% (uae_u32)(uae_u16)src;\n"); + /* The N flag appears to be set each time there is an overflow. + * Weird. */ + printf ("\tif (newv > 0xffff) { SET_VFLG (1); SET_NFLG (1); SET_CFLG (0); } else\n\t{\n"); + genflags (flag_logical, sz_word, "newv", "", ""); + printf ("\tnewv = (newv & 0xffff) | ((uae_u32)rem << 16);\n"); + genastore ("newv", curi->dmode, "dstreg", sz_long, "dst"); + printf ("\t}\n"); + printf ("\t}\n"); + insn_n_cycles += 68; + need_endlabel = 1; +#if PALM_PERF + // ¥¥¥ DOLATER less than 10% diff between best/worst times, this is worst + {extraCycles += 136; readCycles += 1; writeCycles += 0; PERF_COMMENT("DIVU 140(1/0)+*\n");} +#endif // PALM_PERF + break; + case i_DIVS: + printf ("\tuaecptr oldpc = m68k_getpc();\n"); + genamode (curi->smode, "srcreg", sz_word, "src", 1, 0); + genamode (curi->dmode, "dstreg", sz_long, "dst", 1, 0); + printf ("\tif(src == 0) { Exception(5,oldpc); goto %s; } else {\n", endlabelstr); + printf ("\tuae_s32 newv = (uae_s32)dst / (uae_s32)(uae_s16)src;\n"); + printf ("\tuae_u16 rem = (uae_s32)dst %% (uae_s32)(uae_s16)src;\n"); + printf ("\tif ((newv & 0xffff8000) != 0 && (newv & 0xffff8000) != 0xffff8000) { SET_VFLG (1); SET_NFLG (1); SET_CFLG (0); } else\n\t{\n"); + printf ("\tif (((uae_s16)rem < 0) != ((uae_s32)dst < 0)) rem = -rem;\n"); + genflags (flag_logical, sz_word, "newv", "", ""); + printf ("\tnewv = (newv & 0xffff) | ((uae_u32)rem << 16);\n"); + genastore ("newv", curi->dmode, "dstreg", sz_long, "dst"); + printf ("\t}\n"); + printf ("\t}\n"); + insn_n_cycles += 72; + need_endlabel = 1; +#if PALM_PERF + // ¥¥¥ DOLATER less than 10% diff between best/worst times, this is worst + {extraCycles += 154; readCycles += 1; writeCycles += 0; PERF_COMMENT("DIVS 158(1/0)+*\n");} +#endif // PALM_PERF + break; + case i_MULU: + genamode (curi->smode, "srcreg", sz_word, "src", 1, 0); + genamode (curi->dmode, "dstreg", sz_word, "dst", 1, 0); + start_brace (); + printf ("\tuae_u32 newv = (uae_u32)(uae_u16)dst * (uae_u32)(uae_u16)src;\n"); + genflags (flag_logical, sz_long, "newv", "", ""); + genastore ("newv", curi->dmode, "dstreg", sz_long, "dst"); + insn_n_cycles += 32; +#if PALM_PERF + // ¥¥¥ DOLATER 38+2n extra cycles, where n = number of 1s in the <ea> + {extraCycles += 66; readCycles += 1; writeCycles += 0; PERF_COMMENT("MULU 70(1/0)+*\n");} +#endif // PALM_PERF + break; + case i_MULS: + genamode (curi->smode, "srcreg", sz_word, "src", 1, 0); + genamode (curi->dmode, "dstreg", sz_word, "dst", 1, 0); + start_brace (); + printf ("\tuae_u32 newv = (uae_s32)(uae_s16)dst * (uae_s32)(uae_s16)src;\n"); + genflags (flag_logical, sz_long, "newv", "", ""); + genastore ("newv", curi->dmode, "dstreg", sz_long, "dst"); + insn_n_cycles += 32; +#if PALM_PERF + // ¥¥¥ DOLATER 38+2n extra cycles, where n = number of 01 or 10 patterns in <ea>w/0 at end. $5555 is worst case + {extraCycles += 66; readCycles += 1; writeCycles += 0; PERF_COMMENT("MULS 70(1/0)+*\n");} +#endif // PALM_PERF + break; + case i_CHK: + printf ("\tuaecptr oldpc = m68k_getpc();\n"); + genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); + genamode (curi->dmode, "dstreg", curi->size, "dst", 1, 0); + printf ("\tif ((uae_s32)dst < 0) { SET_NFLG (1); Exception(6,oldpc); goto %s; }\n", endlabelstr); + printf ("\telse if (dst > src) { SET_NFLG (0); Exception(6,oldpc); goto %s; }\n", endlabelstr); + need_endlabel = 1; +#if PALM_PERF + // ¥¥¥ DOLATER handle extra work if exception happens + {extraCycles += 6; readCycles += 1; writeCycles += 0; PERF_COMMENT("CHK 10(1/0)+ if no trap, 40(4/3)+ if trap\n");} +#endif // PALM_PERF + break; + + case i_CHK2: + printf ("\tuaecptr oldpc = m68k_getpc();\n"); + genamode (curi->smode, "srcreg", curi->size, "extra", 1, 0); + genamode (curi->dmode, "dstreg", curi->size, "dst", 2, 0); + printf ("\t{uae_s32 upper,lower,reg = regs.regs[(extra >> 12) & 15];\n"); + switch (curi->size) { + case sz_byte: + printf ("\tlower=(uae_s32)(uae_s8)get_byte(dsta); upper = (uae_s32)(uae_s8)get_byte(dsta+1);\n"); + printf ("\tif ((extra & 0x8000) == 0) reg = (uae_s32)(uae_s8)reg;\n"); + break; + case sz_word: + printf ("\tlower=(uae_s32)(uae_s16)get_word(dsta); upper = (uae_s32)(uae_s16)get_word(dsta+2);\n"); + printf ("\tif ((extra & 0x8000) == 0) reg = (uae_s32)(uae_s16)reg;\n"); + break; + case sz_long: + printf ("\tlower=get_long(dsta); upper = get_long(dsta+4);\n"); + break; + default: + abort (); + } + printf ("\tSET_ZFLG (upper == reg || lower == reg);\n"); + printf ("\tSET_CFLG (lower <= upper ? reg < lower || reg > upper : reg > upper || reg < lower);\n"); + printf ("\tif ((extra & 0x800) && GET_CFLG) { Exception(6,oldpc); goto %s; }\n}\n", endlabelstr); + need_endlabel = 1; +#if PALM_PERF + // ¥¥¥ DOLATER handle extra work if exception happens + {extraCycles += 6; readCycles += 1; writeCycles += 0; PERF_COMMENT("CHK2 10(1/0)+ if no trap, 40(4/3)+ if trap\n");} +#endif // PALM_PERF + break; + + case i_ASR: + genamode (curi->smode, "srcreg", curi->size, "cnt", 1, 0); + genamode (curi->dmode, "dstreg", curi->size, "data", 1, 0); + start_brace (); + switch (curi->size) { + case sz_byte: printf ("\tuae_u32 val = (uae_u8)data;\n"); break; + case sz_word: printf ("\tuae_u32 val = (uae_u16)data;\n"); break; + case sz_long: printf ("\tuae_u32 val = data;\n"); break; + default: abort (); + } + printf ("\tuae_u32 sign = (%s & val) >> %d;\n", cmask (curi->size), bit_size (curi->size) - 1); + printf ("\tcnt &= 63;\n"); + printf ("\tCLEAR_CZNV;\n"); + printf ("\tif (cnt >= %d) {\n", bit_size (curi->size)); + printf ("\t\tval = %s & (uae_u32)-sign;\n", bit_mask (curi->size)); + printf ("\t\tSET_CFLG (sign);\n"); + duplicate_carry (); + if (source_is_imm1_8 (curi)) + printf ("\t} else {\n"); + else + printf ("\t} else if (cnt > 0) {\n"); + printf ("\t\tval >>= cnt - 1;\n"); + printf ("\t\tSET_CFLG (val & 1);\n"); + duplicate_carry (); + printf ("\t\tval >>= 1;\n"); + printf ("\t\tval |= (%s << (%d - cnt)) & (uae_u32)-sign;\n", + bit_mask (curi->size), + bit_size (curi->size)); + printf ("\t\tval &= %s;\n", bit_mask (curi->size)); + printf ("\t}\n"); + genflags (flag_logical_noclobber, curi->size, "val", "", ""); + genastore ("val", curi->dmode, "dstreg", curi->size, "data"); +#if PALM_PERF + printf ("#if HAS_PROFILING\n"); + printf (" if (gProfilingEnabled)\n"); + printf (" ProfileIncrementClock(2*cnt);\n"); + printf ("#endif\n"); +#endif // PALM_PERF +#if PALM_PERF + if (curi->dmode < Areg) + if (curi->size <= sz_word) + {extraCycles += 2; readCycles += 1; writeCycles += 0; PERF_COMMENT("ASR 6+2n(1/0), n=shifts\n");} + else + {extraCycles += 4; readCycles += 1; writeCycles += 0; PERF_COMMENT("ASR 6+2n(1/0), n=shifts\n");} + else + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("ASR M 8(1/1)\n");} +#endif // PALM_PERF + break; + case i_ASL: + genamode (curi->smode, "srcreg", curi->size, "cnt", 1, 0); + genamode (curi->dmode, "dstreg", curi->size, "data", 1, 0); + start_brace (); + switch (curi->size) { + case sz_byte: printf ("\tuae_u32 val = (uae_u8)data;\n"); break; + case sz_word: printf ("\tuae_u32 val = (uae_u16)data;\n"); break; + case sz_long: printf ("\tuae_u32 val = data;\n"); break; + default: abort (); + } + printf ("\tcnt &= 63;\n"); + printf ("\tCLEAR_CZNV;\n"); + printf ("\tif (cnt >= %d) {\n", bit_size (curi->size)); + printf ("\t\tSET_VFLG (val != 0);\n"); + printf ("\t\tSET_CFLG (cnt == %d ? val & 1 : 0);\n", + bit_size (curi->size)); + duplicate_carry (); + printf ("\t\tval = 0;\n"); + if (source_is_imm1_8 (curi)) + printf ("\t} else {\n"); + else + printf ("\t} else if (cnt > 0) {\n"); + printf ("\t\tuae_u32 mask = (%s << (%d - cnt)) & %s;\n", + bit_mask (curi->size), + bit_size (curi->size) - 1, + bit_mask (curi->size)); + printf ("\t\tSET_VFLG ((val & mask) != mask && (val & mask) != 0);\n"); + printf ("\t\tval <<= cnt - 1;\n"); + printf ("\t\tSET_CFLG ((val & %s) >> %d);\n", cmask (curi->size), bit_size (curi->size) - 1); + duplicate_carry (); + printf ("\t\tval <<= 1;\n"); + printf ("\t\tval &= %s;\n", bit_mask (curi->size)); + printf ("\t}\n"); + genflags (flag_logical_noclobber, curi->size, "val", "", ""); + genastore ("val", curi->dmode, "dstreg", curi->size, "data"); +#if PALM_PERF + printf ("#if HAS_PROFILING\n"); + printf (" if (gProfilingEnabled)\n"); + printf (" ProfileIncrementClock(2*cnt);\n"); + printf ("#endif\n"); +#endif // PALM_PERF +#if PALM_PERF + if (curi->dmode < Areg) + if (curi->size <= sz_word) + {extraCycles += 2; readCycles += 1; writeCycles += 0; PERF_COMMENT("ASL 6+2n(1/0), n=shifts\n");} + else + {extraCycles += 4; readCycles += 1; writeCycles += 0; PERF_COMMENT("ASL 6+2n(1/0), n=shifts\n");} + else + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("ASL M 8(1/1)\n");} +#endif // PALM_PERF + break; + case i_LSR: + genamode (curi->smode, "srcreg", curi->size, "cnt", 1, 0); + genamode (curi->dmode, "dstreg", curi->size, "data", 1, 0); + start_brace (); + switch (curi->size) { + case sz_byte: printf ("\tuae_u32 val = (uae_u8)data;\n"); break; + case sz_word: printf ("\tuae_u32 val = (uae_u16)data;\n"); break; + case sz_long: printf ("\tuae_u32 val = data;\n"); break; + default: abort (); + } + printf ("\tcnt &= 63;\n"); + printf ("\tCLEAR_CZNV;\n"); + printf ("\tif (cnt >= %d) {\n", bit_size (curi->size)); + printf ("\t\tSET_CFLG ((cnt == %d) & (val >> %d));\n", + bit_size (curi->size), bit_size (curi->size) - 1); + duplicate_carry (); + printf ("\t\tval = 0;\n"); + if (source_is_imm1_8 (curi)) + printf ("\t} else {\n"); + else + printf ("\t} else if (cnt > 0) {\n"); + printf ("\t\tval >>= cnt - 1;\n"); + printf ("\t\tSET_CFLG (val & 1);\n"); + duplicate_carry (); + printf ("\t\tval >>= 1;\n"); + printf ("\t}\n"); + genflags (flag_logical_noclobber, curi->size, "val", "", ""); + genastore ("val", curi->dmode, "dstreg", curi->size, "data"); +#if PALM_PERF + printf ("#if HAS_PROFILING\n"); + printf (" if (gProfilingEnabled)\n"); + printf (" ProfileIncrementClock(2*cnt);\n"); + printf ("#endif\n"); +#endif // PALM_PERF +#if PALM_PERF + if (curi->dmode < Areg) + if (curi->size <= sz_word) + {extraCycles += 2; readCycles += 1; writeCycles += 0; PERF_COMMENT("LSR 6+2n(1/0), n=shifts\n");} + else + {extraCycles += 4; readCycles += 1; writeCycles += 0; PERF_COMMENT("LSR 6+2n(1/0), n=shifts\n");} + else + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("LSR M 8(1/1)\n");} +#endif // PALM_PERF + break; + case i_LSL: + genamode (curi->smode, "srcreg", curi->size, "cnt", 1, 0); + genamode (curi->dmode, "dstreg", curi->size, "data", 1, 0); + start_brace (); + switch (curi->size) { + case sz_byte: printf ("\tuae_u32 val = (uae_u8)data;\n"); break; + case sz_word: printf ("\tuae_u32 val = (uae_u16)data;\n"); break; + case sz_long: printf ("\tuae_u32 val = data;\n"); break; + default: abort (); + } + printf ("\tcnt &= 63;\n"); + printf ("\tCLEAR_CZNV;\n"); + printf ("\tif (cnt >= %d) {\n", bit_size (curi->size)); + printf ("\t\tSET_CFLG (cnt == %d ? val & 1 : 0);\n", + bit_size (curi->size)); + duplicate_carry (); + printf ("\t\tval = 0;\n"); + if (source_is_imm1_8 (curi)) + printf ("\t} else {\n"); + else + printf ("\t} else if (cnt > 0) {\n"); + printf ("\t\tval <<= (cnt - 1);\n"); + printf ("\t\tSET_CFLG ((val & %s) >> %d);\n", cmask (curi->size), bit_size (curi->size) - 1); + duplicate_carry (); + printf ("\t\tval <<= 1;\n"); + printf ("\tval &= %s;\n", bit_mask (curi->size)); + printf ("\t}\n"); + genflags (flag_logical_noclobber, curi->size, "val", "", ""); + genastore ("val", curi->dmode, "dstreg", curi->size, "data"); +#if PALM_PERF + printf ("#if HAS_PROFILING\n"); + printf (" if (gProfilingEnabled)\n"); + printf (" ProfileIncrementClock(2*cnt);\n"); + printf ("#endif\n"); +#endif // PALM_PERF +#if PALM_PERF + if (curi->dmode < Areg) + if (curi->size <= sz_word) + {extraCycles += 2; readCycles += 1; writeCycles += 0; PERF_COMMENT("LSL 6+2n(1/0), n=shifts\n");} + else + {extraCycles += 4; readCycles += 1; writeCycles += 0; PERF_COMMENT("LSL 6+2n(1/0), n=shifts\n");} + else + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("LSL M 8(1/1)\n");} +#endif // PALM_PERF + break; + case i_ROL: + genamode (curi->smode, "srcreg", curi->size, "cnt", 1, 0); + genamode (curi->dmode, "dstreg", curi->size, "data", 1, 0); + start_brace (); + switch (curi->size) { + case sz_byte: printf ("\tuae_u32 val = (uae_u8)data;\n"); break; + case sz_word: printf ("\tuae_u32 val = (uae_u16)data;\n"); break; + case sz_long: printf ("\tuae_u32 val = data;\n"); break; + default: abort (); + } + printf ("\tcnt &= 63;\n"); + printf ("\tCLEAR_CZNV;\n"); + if (source_is_imm1_8 (curi)) + printf ("{"); + else + printf ("\tif (cnt > 0) {\n"); + printf ("\tuae_u32 loval;\n"); + printf ("\tcnt &= %d;\n", bit_size (curi->size) - 1); + printf ("\tloval = val >> (%d - cnt);\n", bit_size (curi->size)); + printf ("\tval <<= cnt;\n"); + printf ("\tval |= loval;\n"); + printf ("\tval &= %s;\n", bit_mask (curi->size)); + printf ("\tSET_CFLG (val & 1);\n"); + printf ("}\n"); + genflags (flag_logical_noclobber, curi->size, "val", "", ""); + genastore ("val", curi->dmode, "dstreg", curi->size, "data"); +#if PALM_PERF + printf ("#if HAS_PROFILING\n"); + printf (" if (gProfilingEnabled)\n"); + printf (" ProfileIncrementClock(2*cnt);\n"); + printf ("#endif\n"); +#endif // PALM_PERF +#if PALM_PERF + if (curi->dmode < Areg) + if (curi->size <= sz_word) + {extraCycles += 2; readCycles += 1; writeCycles += 0; PERF_COMMENT("ROL 6+2n(1/0), n=shifts\n");} + else + {extraCycles += 4; readCycles += 1; writeCycles += 0; PERF_COMMENT("ROL 6+2n(1/0), n=shifts\n");} + else + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("ROL M 8(1/1)\n");} +#endif // PALM_PERF + break; + case i_ROR: +#if PALM_CODEGEN_BUG + genamode (curi->smode, "srcreg", curi->size, "cnt", 1, 0); + genamode (curi->dmode, "dstreg", curi->size, "data", 1, 0); + start_brace (); + switch (curi->size) { + case sz_byte: printf ("\tuae_u8 val = data;\n"); break; + case sz_word: printf ("\tuae_u16 val = data;\n"); break; + case sz_long: printf ("\tuae_u32 val = data;\n"); break; + default: abort (); + } + switch (curi->size) { + case sz_byte: printf ("\tuae_u32 cmask = 0x80;\n"); break; + case sz_word: printf ("\tuae_u32 cmask = 0x8000;\n"); break; + case sz_long: printf ("\tuae_u32 cmask = 0x80000000;\n"); break; + default: abort (); + } + printf ("\tcnt &= 63;\n"); + printf ("\tif (!cnt) { CFLG = 0; } else {"); + printf ("\tuae_u32 carry;\n"); + printf ("\tfor(;cnt;--cnt){\n"); + printf ("\tcarry=val&1; val = val >> 1;\n"); + printf ("\tif(carry) val |= cmask;\n"); + printf ("\t}\n"); + printf ("\tSET_CFLG (carry);\n}\n"); + printf ("\tSET_NFLG ((val & cmask) != 0); SET_ZFLG (val == 0); SET_VFLG (0);\n"); +#else // PALM_CODEGEN_BUG -- Doing it this way runs afoul of a codegen bug in MWPPC 2.3.1 (in CW 5.2) + genamode (curi->smode, "srcreg", curi->size, "cnt", 1, 0); + genamode (curi->dmode, "dstreg", curi->size, "data", 1, 0); + start_brace (); + switch (curi->size) { + case sz_byte: printf ("\tuae_u32 val = (uae_u8)data;\n"); break; + case sz_word: printf ("\tuae_u32 val = (uae_u16)data;\n"); break; + case sz_long: printf ("\tuae_u32 val = data;\n"); break; + default: abort (); + } + printf ("\tcnt &= 63;\n"); + printf ("\tCLEAR_CZNV;\n"); + if (source_is_imm1_8 (curi)) + printf ("{"); + else + printf ("\tif (cnt > 0) {"); + printf ("\tuae_u32 hival;\n"); + printf ("\tcnt &= %d;\n", bit_size (curi->size) - 1); + printf ("\thival = val << (%d - cnt);\n", bit_size (curi->size)); + printf ("\tval >>= cnt;\n"); + printf ("\tval |= hival;\n"); + printf ("\tval &= %s;\n", bit_mask (curi->size)); + printf ("\tSET_CFLG ((val & %s) >> %d);\n", cmask (curi->size), bit_size (curi->size) - 1); + printf ("\t}\n"); + genflags (flag_logical_noclobber, curi->size, "val", "", ""); +#endif // PALM_CODEGEN_BUG + genastore ("val", curi->dmode, "dstreg", curi->size, "data"); +#if PALM_PERF + printf ("#if HAS_PROFILING\n"); + printf (" if (gProfilingEnabled)\n"); + printf (" ProfileIncrementClock(2*cnt);\n"); + printf ("#endif\n"); +#endif // PALM_PERF +#if PALM_PERF + if (curi->dmode < Areg) + if (curi->size <= sz_word) + {extraCycles += 2; readCycles += 1; writeCycles += 0; PERF_COMMENT("ROR 6+2n(1/0), n=shifts\n");} + else + {extraCycles += 4; readCycles += 1; writeCycles += 0; PERF_COMMENT("ROR 6+2n(1/0), n=shifts\n");} + else + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("ROR M 8(1/1)\n");} +#endif // PALM_PERF + break; + case i_ROXL: + genamode (curi->smode, "srcreg", curi->size, "cnt", 1, 0); + genamode (curi->dmode, "dstreg", curi->size, "data", 1, 0); + start_brace (); + switch (curi->size) { + case sz_byte: printf ("\tuae_u32 val = (uae_u8)data;\n"); break; + case sz_word: printf ("\tuae_u32 val = (uae_u16)data;\n"); break; + case sz_long: printf ("\tuae_u32 val = data;\n"); break; + default: abort (); + } + printf ("\tcnt &= 63;\n"); + printf ("\tCLEAR_CZNV;\n"); + if (! source_is_imm1_8 (curi)) + force_range_for_rox ("cnt", curi->size); + if (source_is_imm1_8 (curi)) + printf ("{"); + else + printf ("\tif (cnt > 0) {\n"); + printf ("\tcnt--;\n"); + printf ("\t{\n\tuae_u32 carry;\n"); + printf ("\tuae_u32 loval = val >> (%d - cnt);\n", bit_size (curi->size) - 1); + printf ("\tcarry = loval & 1;\n"); + printf ("\tval = (((val << 1) | GET_XFLG) << cnt) | (loval >> 1);\n"); + printf ("\tSET_XFLG (carry);\n"); + printf ("\tval &= %s;\n", bit_mask (curi->size)); + printf ("\t} }\n"); + printf ("\tSET_CFLG (GET_XFLG);\n"); + genflags (flag_logical_noclobber, curi->size, "val", "", ""); + genastore ("val", curi->dmode, "dstreg", curi->size, "data"); +#if PALM_PERF + printf ("#if HAS_PROFILING\n"); + printf (" if (gProfilingEnabled)\n"); + printf (" ProfileIncrementClock(2*cnt);\n"); + printf ("#endif\n"); +#endif // PALM_PERF +#if PALM_PERF + if (curi->dmode < Areg) + if (curi->size <= sz_word) + {extraCycles += 2; readCycles += 1; writeCycles += 0; PERF_COMMENT("ROXL 6+2n(1/0), n=shifts\n");} + else + {extraCycles += 4; readCycles += 1; writeCycles += 0; PERF_COMMENT("ROXL 6+2n(1/0), n=shifts\n");} + else + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("ROXL M 8(1/1)\n");} +#endif // PALM_PERF + break; + case i_ROXR: + genamode (curi->smode, "srcreg", curi->size, "cnt", 1, 0); + genamode (curi->dmode, "dstreg", curi->size, "data", 1, 0); + start_brace (); + switch (curi->size) { + case sz_byte: printf ("\tuae_u32 val = (uae_u8)data;\n"); break; + case sz_word: printf ("\tuae_u32 val = (uae_u16)data;\n"); break; + case sz_long: printf ("\tuae_u32 val = data;\n"); break; + default: abort (); + } + printf ("\tcnt &= 63;\n"); + printf ("\tCLEAR_CZNV;\n"); + if (! source_is_imm1_8 (curi)) + force_range_for_rox ("cnt", curi->size); + if (source_is_imm1_8 (curi)) + printf ("{"); + else + printf ("\tif (cnt > 0) {\n"); + printf ("\tcnt--;\n"); + printf ("\t{\n\tuae_u32 carry;\n"); + printf ("\tuae_u32 hival = (val << 1) | GET_XFLG;\n"); + printf ("\thival <<= (%d - cnt);\n", bit_size (curi->size) - 1); + printf ("\tval >>= cnt;\n"); + printf ("\tcarry = val & 1;\n"); + printf ("\tval >>= 1;\n"); + printf ("\tval |= hival;\n"); + printf ("\tSET_XFLG (carry);\n"); + printf ("\tval &= %s;\n", bit_mask (curi->size)); + printf ("\t} }\n"); + printf ("\tSET_CFLG (GET_XFLG);\n"); + genflags (flag_logical_noclobber, curi->size, "val", "", ""); + genastore ("val", curi->dmode, "dstreg", curi->size, "data"); +#if PALM_PERF + printf ("#if HAS_PROFILING\n"); + printf (" if (gProfilingEnabled)\n"); + printf (" ProfileIncrementClock(2*cnt);\n"); + printf ("#endif\n"); +#endif // PALM_PERF +#if PALM_PERF + if (curi->dmode < Areg) + if (curi->size <= sz_word) + {extraCycles += 2; readCycles += 1; writeCycles += 0; PERF_COMMENT("ROXR 6+2n(1/0), n=shifts\n");} + else + {extraCycles += 4; readCycles += 1; writeCycles += 0; PERF_COMMENT("ROXR 6+2n(1/0), n=shifts\n");} + else + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("ROXR M 8(1/1)\n");} +#endif // PALM_PERF + break; + case i_ASRW: + genamode (curi->smode, "srcreg", curi->size, "data", 1, 0); + start_brace (); + switch (curi->size) { + case sz_byte: printf ("\tuae_u32 val = (uae_u8)data;\n"); break; + case sz_word: printf ("\tuae_u32 val = (uae_u16)data;\n"); break; + case sz_long: printf ("\tuae_u32 val = data;\n"); break; + default: abort (); + } + printf ("\tuae_u32 sign = %s & val;\n", cmask (curi->size)); + printf ("\tuae_u32 cflg = val & 1;\n"); + printf ("\tval = (val >> 1) | sign;\n"); + genflags (flag_logical, curi->size, "val", "", ""); + printf ("\tSET_CFLG (cflg);\n"); + duplicate_carry (); + genastore ("val", curi->smode, "srcreg", curi->size, "data"); +#if PALM_PERF + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("ASR M 8(1/1)+\n");} +#endif // PALM_PERF + break; + case i_ASLW: + genamode (curi->smode, "srcreg", curi->size, "data", 1, 0); + start_brace (); + switch (curi->size) { + case sz_byte: printf ("\tuae_u32 val = (uae_u8)data;\n"); break; + case sz_word: printf ("\tuae_u32 val = (uae_u16)data;\n"); break; + case sz_long: printf ("\tuae_u32 val = data;\n"); break; + default: abort (); + } + printf ("\tuae_u32 sign = %s & val;\n", cmask (curi->size)); + printf ("\tuae_u32 sign2;\n"); + printf ("\tval <<= 1;\n"); + genflags (flag_logical, curi->size, "val", "", ""); + printf ("\tsign2 = %s & val;\n", cmask (curi->size)); + printf ("\tSET_CFLG (sign != 0);\n"); + duplicate_carry (); + + printf ("\tSET_VFLG (GET_VFLG | (sign2 != sign));\n"); + genastore ("val", curi->smode, "srcreg", curi->size, "data"); +#if PALM_PERF + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("ASL M 8(1/1)+\n");} +#endif // PALM_PERF + break; + case i_LSRW: + genamode (curi->smode, "srcreg", curi->size, "data", 1, 0); + start_brace (); + switch (curi->size) { + case sz_byte: printf ("\tuae_u32 val = (uae_u8)data;\n"); break; + case sz_word: printf ("\tuae_u32 val = (uae_u16)data;\n"); break; + case sz_long: printf ("\tuae_u32 val = data;\n"); break; + default: abort (); + } + printf ("\tuae_u32 carry = val & 1;\n"); + printf ("\tval >>= 1;\n"); + genflags (flag_logical, curi->size, "val", "", ""); + printf ("SET_CFLG (carry);\n"); + duplicate_carry (); + genastore ("val", curi->smode, "srcreg", curi->size, "data"); +#if PALM_PERF + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("LSR M 8(1/1)+\n");} +#endif // PALM_PERF + break; + case i_LSLW: + genamode (curi->smode, "srcreg", curi->size, "data", 1, 0); + start_brace (); + switch (curi->size) { + case sz_byte: printf ("\tuae_u8 val = data;\n"); break; + case sz_word: printf ("\tuae_u16 val = data;\n"); break; + case sz_long: printf ("\tuae_u32 val = data;\n"); break; + default: abort (); + } + printf ("\tuae_u32 carry = val & %s;\n", cmask (curi->size)); + printf ("\tval <<= 1;\n"); + genflags (flag_logical, curi->size, "val", "", ""); + printf ("SET_CFLG (carry >> %d);\n", bit_size (curi->size) - 1); + duplicate_carry (); + genastore ("val", curi->smode, "srcreg", curi->size, "data"); +#if PALM_PERF + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("LSL M 8(1/1)+\n");} +#endif // PALM_PERF + break; + case i_ROLW: + genamode (curi->smode, "srcreg", curi->size, "data", 1, 0); + start_brace (); + switch (curi->size) { + case sz_byte: printf ("\tuae_u8 val = data;\n"); break; + case sz_word: printf ("\tuae_u16 val = data;\n"); break; + case sz_long: printf ("\tuae_u32 val = data;\n"); break; + default: abort (); + } + printf ("\tuae_u32 carry = val & %s;\n", cmask (curi->size)); + printf ("\tval <<= 1;\n"); + printf ("\tif (carry) val |= 1;\n"); + genflags (flag_logical, curi->size, "val", "", ""); + printf ("SET_CFLG (carry >> %d);\n", bit_size (curi->size) - 1); + genastore ("val", curi->smode, "srcreg", curi->size, "data"); +#if PALM_PERF + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("ROL M 8(1/1)+\n");} +#endif // PALM_PERF + break; + case i_RORW: + genamode (curi->smode, "srcreg", curi->size, "data", 1, 0); + start_brace (); + switch (curi->size) { + case sz_byte: printf ("\tuae_u8 val = data;\n"); break; + case sz_word: printf ("\tuae_u16 val = data;\n"); break; + case sz_long: printf ("\tuae_u32 val = data;\n"); break; + default: abort (); + } + printf ("\tuae_u32 carry = val & 1;\n"); + printf ("\tval >>= 1;\n"); + printf ("\tif (carry) val |= %s;\n", cmask (curi->size)); + genflags (flag_logical, curi->size, "val", "", ""); + printf ("SET_CFLG (carry);\n"); + genastore ("val", curi->smode, "srcreg", curi->size, "data"); +#if PALM_PERF + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("ROR M 8(1/1)+\n");} +#endif // PALM_PERF + break; + case i_ROXLW: + genamode (curi->smode, "srcreg", curi->size, "data", 1, 0); + start_brace (); + switch (curi->size) { + case sz_byte: printf ("\tuae_u8 val = data;\n"); break; + case sz_word: printf ("\tuae_u16 val = data;\n"); break; + case sz_long: printf ("\tuae_u32 val = data;\n"); break; + default: abort (); + } + printf ("\tuae_u32 carry = val & %s;\n", cmask (curi->size)); + printf ("\tval <<= 1;\n"); + printf ("\tif (GET_XFLG) val |= 1;\n"); + genflags (flag_logical, curi->size, "val", "", ""); + printf ("SET_CFLG (carry >> %d);\n", bit_size (curi->size) - 1); + duplicate_carry (); + genastore ("val", curi->smode, "srcreg", curi->size, "data"); +#if PALM_PERF + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("ROXL M 8(1/1)+\n");} +#endif // PALM_PERF + break; + case i_ROXRW: + genamode (curi->smode, "srcreg", curi->size, "data", 1, 0); + start_brace (); + switch (curi->size) { + case sz_byte: printf ("\tuae_u8 val = data;\n"); break; + case sz_word: printf ("\tuae_u16 val = data;\n"); break; + case sz_long: printf ("\tuae_u32 val = data;\n"); break; + default: abort (); + } + printf ("\tuae_u32 carry = val & 1;\n"); + printf ("\tval >>= 1;\n"); + printf ("\tif (GET_XFLG) val |= %s;\n", cmask (curi->size)); + genflags (flag_logical, curi->size, "val", "", ""); + printf ("SET_CFLG (carry);\n"); + duplicate_carry (); + genastore ("val", curi->smode, "srcreg", curi->size, "data"); +#if PALM_PERF + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("ROXR M 8(1/1)+\n");} +#endif // PALM_PERF + break; + case i_MOVEC2: + genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); + start_brace (); + printf ("\tint regno = (src >> 12) & 15;\n"); + printf ("\tuae_u32 *regp = regs.regs + regno;\n"); + printf ("\tm68k_movec2(src & 0xFFF, regp);\n"); + break; + case i_MOVE2C: + genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); + start_brace (); + printf ("\tint regno = (src >> 12) & 15;\n"); + printf ("\tuae_u32 *regp = regs.regs + regno;\n"); + printf ("\tm68k_move2c(src & 0xFFF, regp);\n"); + break; + case i_CAS: + { + int old_brace_level; + genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); + genamode (curi->dmode, "dstreg", curi->size, "dst", 1, 0); + start_brace (); + printf ("\tint ru = (src >> 6) & 7;\n"); + printf ("\tint rc = src & 7;\n"); + genflags (flag_cmp, curi->size, "newv", "m68k_dreg(regs, rc)", "dst"); + printf ("\tif (GET_ZFLG)"); + old_brace_level = n_braces; + start_brace (); + genastore ("(m68k_dreg(regs, ru))", curi->dmode, "dstreg", curi->size, "dst"); + pop_braces (old_brace_level); + printf ("else"); + start_brace (); + printf ("m68k_dreg(regs, rc) = dst;\n"); + pop_braces (old_brace_level); + } + break; + case i_CAS2: + genamode (curi->smode, "srcreg", curi->size, "extra", 1, 0); + printf ("\tuae_u32 rn1 = regs.regs[(extra >> 28) & 15];\n"); + printf ("\tuae_u32 rn2 = regs.regs[(extra >> 12) & 15];\n"); + if (curi->size == sz_word) { + int old_brace_level = n_braces; + printf ("\tuae_u16 dst1 = get_word(rn1), dst2 = get_word(rn2);\n"); + genflags (flag_cmp, curi->size, "newv", "m68k_dreg(regs, (extra >> 16) & 7)", "dst1"); + printf ("\tif (GET_ZFLG) {\n"); + genflags (flag_cmp, curi->size, "newv", "m68k_dreg(regs, extra & 7)", "dst2"); + printf ("\tif (GET_ZFLG) {\n"); + printf ("\tput_word(rn1, m68k_dreg(regs, (extra >> 22) & 7));\n"); + printf ("\tput_word(rn1, m68k_dreg(regs, (extra >> 6) & 7));\n"); + printf ("\t}}\n"); + pop_braces (old_brace_level); + printf ("\tif (! GET_ZFLG) {\n"); + printf ("\tm68k_dreg(regs, (extra >> 22) & 7) = (m68k_dreg(regs, (extra >> 22) & 7) & ~0xffff) | (dst1 & 0xffff);\n"); + printf ("\tm68k_dreg(regs, (extra >> 6) & 7) = (m68k_dreg(regs, (extra >> 6) & 7) & ~0xffff) | (dst2 & 0xffff);\n"); + printf ("\t}\n"); + } else { + int old_brace_level = n_braces; + printf ("\tuae_u32 dst1 = get_long(rn1), dst2 = get_long(rn2);\n"); + genflags (flag_cmp, curi->size, "newv", "m68k_dreg(regs, (extra >> 16) & 7)", "dst1"); + printf ("\tif (GET_ZFLG) {\n"); + genflags (flag_cmp, curi->size, "newv", "m68k_dreg(regs, extra & 7)", "dst2"); + printf ("\tif (GET_ZFLG) {\n"); + printf ("\tput_long(rn1, m68k_dreg(regs, (extra >> 22) & 7));\n"); + printf ("\tput_long(rn1, m68k_dreg(regs, (extra >> 6) & 7));\n"); + printf ("\t}}\n"); + pop_braces (old_brace_level); + printf ("\tif (! GET_ZFLG) {\n"); + printf ("\tm68k_dreg(regs, (extra >> 22) & 7) = dst1;\n"); + printf ("\tm68k_dreg(regs, (extra >> 6) & 7) = dst2;\n"); + printf ("\t}\n"); + } + break; + case i_MOVES: /* ignore DFC and SFC because we have no MMU */ + { + int old_brace_level; + genamode (curi->smode, "srcreg", curi->size, "extra", 1, 0); + printf ("\tif (extra & 0x800)\n"); + old_brace_level = n_braces; + start_brace (); + printf ("\tuae_u32 src = regs.regs[(extra >> 12) & 15];\n"); + genamode (curi->dmode, "dstreg", curi->size, "dst", 2, 0); + genastore ("src", curi->dmode, "dstreg", curi->size, "dst"); + pop_braces (old_brace_level); + printf ("else"); + start_brace (); + genamode (curi->dmode, "dstreg", curi->size, "src", 1, 0); + printf ("\tif (extra & 0x8000) {\n"); + switch (curi->size) { + case sz_byte: printf ("\tm68k_areg(regs, (extra >> 12) & 7) = (uae_s32)(uae_s8)src;\n"); break; + case sz_word: printf ("\tm68k_areg(regs, (extra >> 12) & 7) = (uae_s32)(uae_s16)src;\n"); break; + case sz_long: printf ("\tm68k_areg(regs, (extra >> 12) & 7) = src;\n"); break; + default: abort (); + } + printf ("\t} else {\n"); + genastore ("src", Dreg, "(extra >> 12) & 7", curi->size, ""); + printf ("\t}\n"); + pop_braces (old_brace_level); + } + break; + case i_BKPT: /* only needed for hardware emulators */ + sync_m68k_pc (); + printf ("\top_illg(opcode);\n"); + break; + case i_CALLM: /* not present in 68030 */ + sync_m68k_pc (); + printf ("\top_illg(opcode);\n"); + break; + case i_RTM: /* not present in 68030 */ + sync_m68k_pc (); + printf ("\top_illg(opcode);\n"); + break; + case i_TRAPcc: + if (curi->smode != am_unknown && curi->smode != am_illg) + genamode (curi->smode, "srcreg", curi->size, "dummy", 1, 0); + printf ("\tif (cctrue(%d)) { Exception(7,m68k_getpc()); goto %s; }\n", curi->cc, endlabelstr); + need_endlabel = 1; + break; + case i_DIVL: + sync_m68k_pc (); + start_brace (); + printf ("\tuaecptr oldpc = m68k_getpc();\n"); + genamode (curi->smode, "srcreg", curi->size, "extra", 1, 0); + genamode (curi->dmode, "dstreg", curi->size, "dst", 1, 0); + sync_m68k_pc (); + printf ("\tm68k_divl(opcode, dst, extra, oldpc);\n"); + break; + case i_MULL: + genamode (curi->smode, "srcreg", curi->size, "extra", 1, 0); + genamode (curi->dmode, "dstreg", curi->size, "dst", 1, 0); + sync_m68k_pc (); + printf ("\tm68k_mull(opcode, dst, extra);\n"); + break; + case i_BFTST: + case i_BFEXTU: + case i_BFCHG: + case i_BFEXTS: + case i_BFCLR: + case i_BFFFO: + case i_BFSET: + case i_BFINS: + genamode (curi->smode, "srcreg", curi->size, "extra", 1, 0); + genamode (curi->dmode, "dstreg", sz_long, "dst", 2, 0); + start_brace (); + printf ("\tuae_s32 offset = extra & 0x800 ? m68k_dreg(regs, (extra >> 6) & 7) : (extra >> 6) & 0x1f;\n"); + printf ("\tint width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) -1) & 0x1f) +1;\n"); + if (curi->dmode == Dreg) { + printf ("\tuae_u32 tmp = m68k_dreg(regs, dstreg) << (offset & 0x1f);\n"); + } else { + printf ("\tuae_u32 tmp,bf0,bf1;\n"); + printf ("\tdsta += (offset >> 3) | (offset & 0x80000000 ? ~0x1fffffff : 0);\n"); + printf ("\tbf0 = get_long(dsta);bf1 = get_byte(dsta+4) & 0xff;\n"); + printf ("\ttmp = (bf0 << (offset & 7)) | (bf1 >> (8 - (offset & 7)));\n"); + } + printf ("\ttmp >>= (32 - width);\n"); + printf ("\tSET_NFLG (tmp & (1 << (width-1)) ? 1 : 0);\n"); + printf ("\tSET_ZFLG (tmp == 0); SET_VFLG (0); SET_CFLG (0);\n"); + switch (curi->mnemo) { + case i_BFTST: + break; + case i_BFEXTU: + printf ("\tm68k_dreg(regs, (extra >> 12) & 7) = tmp;\n"); + break; + case i_BFCHG: + printf ("\ttmp = ~tmp;\n"); + break; + case i_BFEXTS: + printf ("\tif (GET_NFLG) tmp |= width == 32 ? 0 : (-1 << width);\n"); + printf ("\tm68k_dreg(regs, (extra >> 12) & 7) = tmp;\n"); + break; + case i_BFCLR: + printf ("\ttmp = 0;\n"); + break; + case i_BFFFO: + printf ("\t{ uae_u32 mask = 1 << (width-1);\n"); + printf ("\twhile (mask) { if (tmp & mask) break; mask >>= 1; offset++; }}\n"); + printf ("\tm68k_dreg(regs, (extra >> 12) & 7) = offset;\n"); + break; + case i_BFSET: + printf ("\ttmp = 0xffffffff;\n"); + break; + case i_BFINS: + printf ("\ttmp = m68k_dreg(regs, (extra >> 12) & 7);\n"); + break; + default: + break; + } + if (curi->mnemo == i_BFCHG + || curi->mnemo == i_BFCLR + || curi->mnemo == i_BFSET + || curi->mnemo == i_BFINS) + { + printf ("\ttmp <<= (32 - width);\n"); + if (curi->dmode == Dreg) { + printf ("\tm68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ((offset & 0x1f) == 0 ? 0 :\n"); + printf ("\t\t(0xffffffff << (32 - (offset & 0x1f))))) |\n"); + printf ("\t\t(tmp >> (offset & 0x1f)) |\n"); + printf ("\t\t(((offset & 0x1f) + width) >= 32 ? 0 :\n"); + printf (" (m68k_dreg(regs, dstreg) & ((uae_u32)0xffffffff >> ((offset & 0x1f) + width))));\n"); + } else { + printf ("\tbf0 = (bf0 & (0xff000000 << (8 - (offset & 7)))) |\n"); + printf ("\t\t(tmp >> (offset & 7)) |\n"); + printf ("\t\t(((offset & 7) + width) >= 32 ? 0 :\n"); + printf ("\t\t (bf0 & ((uae_u32)0xffffffff >> ((offset & 7) + width))));\n"); + printf ("\tput_long(dsta,bf0 );\n"); + printf ("\tif (((offset & 7) + width) > 32) {\n"); + printf ("\t\tbf1 = (bf1 & (0xff >> (width - 32 + (offset & 7)))) |\n"); + printf ("\t\t\t(tmp << (8 - (offset & 7)));\n"); + printf ("\t\tput_byte(dsta+4,bf1);\n"); + printf ("\t}\n"); + } + } + break; + case i_PACK: + if (curi->smode == Dreg) { + printf ("\tuae_u16 val = m68k_dreg(regs, srcreg) + %s;\n", gen_nextiword ()); + printf ("\tm68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & 0xffffff00) | ((val >> 4) & 0xf0) | (val & 0xf);\n"); + } else { + printf ("\tuae_u16 val;\n"); + printf ("\tm68k_areg(regs, srcreg) -= areg_byteinc[srcreg];\n"); + printf ("\tval = (uae_u16)get_byte(m68k_areg(regs, srcreg));\n"); + printf ("\tm68k_areg(regs, srcreg) -= areg_byteinc[srcreg];\n"); + printf ("\tval = (val | ((uae_u16)get_byte(m68k_areg(regs, srcreg)) << 8)) + %s;\n", gen_nextiword ()); + printf ("\tm68k_areg(regs, dstreg) -= areg_byteinc[dstreg];\n"); + printf ("\tput_byte(m68k_areg(regs, dstreg),((val >> 4) & 0xf0) | (val & 0xf));\n"); + } + break; + case i_UNPK: + if (curi->smode == Dreg) { + printf ("\tuae_u16 val = m68k_dreg(regs, srcreg);\n"); + printf ("\tval = (((val << 4) & 0xf00) | (val & 0xf)) + %s;\n", gen_nextiword ()); + printf ("\tm68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & 0xffff0000) | (val & 0xffff);\n"); + } else { + printf ("\tuae_u16 val;\n"); + printf ("\tm68k_areg(regs, srcreg) -= areg_byteinc[srcreg];\n"); + printf ("\tval = (uae_u16)get_byte(m68k_areg(regs, srcreg));\n"); + printf ("\tval = (((val << 4) & 0xf00) | (val & 0xf)) + %s;\n", gen_nextiword ()); + printf ("\tm68k_areg(regs, dstreg) -= areg_byteinc[dstreg];\n"); + printf ("\tput_byte(m68k_areg(regs, dstreg),val);\n"); + printf ("\tm68k_areg(regs, dstreg) -= areg_byteinc[dstreg];\n"); + printf ("\tput_byte(m68k_areg(regs, dstreg),val >> 8);\n"); + } + break; + case i_TAS: + genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); + genflags (flag_logical, curi->size, "src", "", ""); + printf ("\tsrc |= 0x80;\n"); + genastore ("src", curi->smode, "srcreg", curi->size, "src"); +#if PALM_PERF + if (curi->smode <= Areg) + {extraCycles += 0; readCycles += 1; writeCycles += 0; PERF_COMMENT("TAS R 4(1/0)\n");} + else + {extraCycles += 2; readCycles += 1; writeCycles += 0; PERF_COMMENT("TAS M 14(2/1)+\n");} +#endif // PALM_PERF + break; + case i_FPP: + genamode (curi->smode, "srcreg", curi->size, "extra", 1, 0); + sync_m68k_pc (); + printf ("\tfpp_opp(opcode,extra);\n"); + break; + case i_FDBcc: + genamode (curi->smode, "srcreg", curi->size, "extra", 1, 0); + sync_m68k_pc (); + printf ("\tfdbcc_opp(opcode,extra);\n"); + break; + case i_FScc: + genamode (curi->smode, "srcreg", curi->size, "extra", 1, 0); + sync_m68k_pc (); + printf ("\tfscc_opp(opcode,extra);\n"); + break; + case i_FTRAPcc: + sync_m68k_pc (); + start_brace (); + printf ("\tuaecptr oldpc = m68k_getpc();\n"); + if (curi->smode != am_unknown && curi->smode != am_illg) + genamode (curi->smode, "srcreg", curi->size, "dummy", 1, 0); + sync_m68k_pc (); + printf ("\tftrapcc_opp(opcode,oldpc);\n"); + break; + case i_FBcc: + sync_m68k_pc (); + start_brace (); + printf ("\tuaecptr pc = m68k_getpc();\n"); + genamode (curi->dmode, "srcreg", curi->size, "extra", 1, 0); + sync_m68k_pc (); + printf ("\tfbcc_opp(opcode,pc,extra);\n"); + break; + case i_FSAVE: + sync_m68k_pc (); + printf ("\tfsave_opp(opcode);\n"); + break; + case i_FRESTORE: + sync_m68k_pc (); + printf ("\tfrestore_opp(opcode);\n"); + break; + case i_MMUOP: + genamode (curi->smode, "srcreg", curi->size, "extra", 1, 0); + sync_m68k_pc (); + printf ("\tmmu_op(opcode,extra);\n"); + break; + default: + abort (); + break; + } + finish_braces (); + sync_m68k_pc (); +} + +static void generate_includes (FILE * f) +{ +#if PALM_HEADERS + fprintf (f, "#include \"UAE.h\"\n"); + fprintf (f, "#if HAS_PROFILING\n"); + fprintf (f, "#include \"Profiling.h\"\n"); + fprintf (f, "#endif\n"); +#else // PALM_HEADERS + fprintf (f, "#include \"sysconfig.h\"\n"); + fprintf (f, "#include \"sysdeps.h\"\n"); + fprintf (f, "#include \"config.h\"\n"); + fprintf (f, "#include \"options.h\"\n"); + fprintf (f, "#include \"memory.h\"\n"); + fprintf (f, "#include \"custom.h\"\n"); + fprintf (f, "#include \"readcpu.h\"\n"); + fprintf (f, "#include \"newcpu.h\"\n"); + fprintf (f, "#include \"compiler.h\"\n"); + fprintf (f, "#include \"cputbl.h\"\n"); +#endif // PALM_HEADERS +} + +static int postfix; + +static void generate_one_opcode (int rp) +{ + int i; + uae_u16 smsk, dmsk; + long int opcode = opcode_map[rp]; + + if (table68k[opcode].mnemo == i_ILLG + || table68k[opcode].clev > cpu_level) + return; + + for (i = 0; lookuptab[i].name[0]; i++) { + if (table68k[opcode].mnemo == lookuptab[i].mnemo) + break; + } + + if (table68k[opcode].handler != -1) + return; + +#if PALM_PERF + if (opcode_next_clev[rp] != cpu_level) { + fprintf (stblfile, "{ op_%lx_%d, 0, %ld, %d, %d, %d }, /* %s */\n", opcode, opcode_last_postfix[rp], + opcode, opcode_last_extra[rp], opcode_last_read[rp], opcode_last_write[rp], lookuptab[i].name); + return; + } +#else // PALM_PERF + if (opcode_next_clev[rp] != cpu_level) { + fprintf (stblfile, "{ op_%lx_%d, 0, %ld }, /* %s */\n", opcode, opcode_last_postfix[rp], + opcode, lookuptab[i].name); + return; + } + fprintf (stblfile, "{ op_%lx_%d, 0, %ld }, /* %s */\n", opcode, postfix, opcode, lookuptab[i].name); +#endif // PALM_PERF + fprintf (headerfile, "extern cpuop_func op_%lx_%d;\n", opcode, postfix); + printf ("unsigned long REGPARAM2 op_%lx_%d(uae_u32 opcode) /* %s */\n{\n", opcode, postfix, lookuptab[i].name); + + switch (table68k[opcode].stype) { + case 0: smsk = 7; break; + case 1: smsk = 255; break; + case 2: smsk = 15; break; + case 3: smsk = 7; break; + case 4: smsk = 7; break; + case 5: smsk = 63; break; + default: abort (); + } + dmsk = 7; + + next_cpu_level = -1; + if (table68k[opcode].suse + && table68k[opcode].smode != imm && table68k[opcode].smode != imm0 + && table68k[opcode].smode != imm1 && table68k[opcode].smode != imm2 + && table68k[opcode].smode != absw && table68k[opcode].smode != absl + && table68k[opcode].smode != PC8r && table68k[opcode].smode != PC16) + { + if (table68k[opcode].spos == -1) { + if (((int) table68k[opcode].sreg) >= 128) + printf ("\tuae_u32 srcreg = (uae_s32)(uae_s8)%d;\n", (int) table68k[opcode].sreg); + else + printf ("\tuae_u32 srcreg = %d;\n", (int) table68k[opcode].sreg); + } else { + char source[100]; + int pos = table68k[opcode].spos; + +#if 0 + /* Check that we can do the little endian optimization safely. */ + if (pos < 8 && (smsk >> (8 - pos)) != 0) + abort (); +#endif + if (pos) + sprintf (source, "((opcode >> %d) & %d)", pos, smsk); + else + sprintf (source, "(opcode & %d)", smsk); + + if (table68k[opcode].stype == 3) + printf ("\tuae_u32 srcreg = imm8_table[%s];\n", source); + else if (table68k[opcode].stype == 1) + printf ("\tuae_u32 srcreg = (uae_s32)(uae_s8)%s;\n", source); + else + printf ("\tuae_u32 srcreg = %s;\n", source); + } + } + if (table68k[opcode].duse + /* Yes, the dmode can be imm, in case of LINK or DBcc */ + && table68k[opcode].dmode != imm && table68k[opcode].dmode != imm0 + && table68k[opcode].dmode != imm1 && table68k[opcode].dmode != imm2 + && table68k[opcode].dmode != absw && table68k[opcode].dmode != absl) + { + if (table68k[opcode].dpos == -1) { + if (((int) table68k[opcode].dreg) >= 128) + printf ("\tuae_u32 dstreg = (uae_s32)(uae_s8)%d;\n", (int) table68k[opcode].dreg); + else + printf ("\tuae_u32 dstreg = %d;\n", (int) table68k[opcode].dreg); + } else { + int pos = table68k[opcode].dpos; +#if 0 + /* Check that we can do the little endian optimization safely. */ + if (pos < 8 && (dmsk >> (8 - pos)) != 0) + abort (); +#endif + if (pos) + printf ("\tuae_u32 dstreg = (opcode >> %d) & %d;\n", + pos, dmsk); + else + printf ("\tuae_u32 dstreg = opcode & %d;\n", dmsk); + } + } + need_endlabel = 0; + endlabelno++; + sprintf (endlabelstr, "endlabel%d", endlabelno); + gen_opcode (opcode); + if (need_endlabel) + printf ("%s: ;\n", endlabelstr); + printf ("return %d;\n", insn_n_cycles); + printf ("}\n"); + opcode_next_clev[rp] = next_cpu_level; + opcode_last_postfix[rp] = postfix; +#if PALM_PERF + opcode_last_extra[rp] = extraCycles; + opcode_last_read[rp] = readCycles; + opcode_last_write[rp] = writeCycles; + fprintf (stblfile, "{ op_%lx_%d, 0, %ld, %d, %d, %d }, /* %s */\n", + opcode, postfix, opcode, extraCycles, + readCycles, writeCycles, lookuptab[i].name); +#endif // PALM_PERF +} + +static void generate_func (void) +{ + int i, j, rp; + + using_prefetch = 0; + using_exception_3 = 0; +#if PALM_MIN + { + i = 3; + cpu_level = 0; + for (rp = 0; rp < nr_cpuop_funcs; rp++) + opcode_next_clev[rp] = 0; +#else // PALM_MIN + for (i = 0; i < 5; i++) { + cpu_level = 3 - i; + if (i == 4) { + cpu_level = 0; + using_prefetch = 1; + using_exception_3 = 1; + for (rp = 0; rp < nr_cpuop_funcs; rp++) + opcode_next_clev[rp] = 0; + } +#endif // PALM_MIN + postfix = i; + fprintf (stblfile, "struct cputbl op_smalltbl_%d[] = {\n", postfix); + + /* sam: this is for people with low memory (eg. me :)) */ + printf ("\n" + "#if !defined(PART_1) && !defined(PART_2) && " + "!defined(PART_3) && !defined(PART_4) && " + "!defined(PART_5) && !defined(PART_6) && " + "!defined(PART_7) && !defined(PART_8)" + "\n" + "#define PART_1 1\n" + "#define PART_2 1\n" + "#define PART_3 1\n" + "#define PART_4 1\n" + "#define PART_5 1\n" + "#define PART_6 1\n" + "#define PART_7 1\n" + "#define PART_8 1\n" + "#endif\n\n"); + + rp = 0; + for(j=1;j<=8;++j) { + int k = (j*nr_cpuop_funcs)/8; + printf ("#ifdef PART_%d\n",j); + for (; rp < k; rp++) + generate_one_opcode (rp); + printf ("#endif\n\n"); + } + + fprintf (stblfile, "{ 0, 0, 0 }};\n"); + } + +} + +int main (int argc, char **argv) +{ + read_table68k (); + do_merges (); + + opcode_map = (int *) xmalloc (sizeof (int) * nr_cpuop_funcs); + opcode_last_postfix = (int *) xmalloc (sizeof (int) * nr_cpuop_funcs); +#if PALM_PERF + opcode_last_extra = (int *) xmalloc (sizeof (int) * nr_cpuop_funcs); + opcode_last_read = (int *) xmalloc (sizeof (int) * nr_cpuop_funcs); + opcode_last_write = (int *) xmalloc (sizeof (int) * nr_cpuop_funcs); +#endif // PALM_PERF + opcode_next_clev = (int *) xmalloc (sizeof (int) * nr_cpuop_funcs); + counts = (unsigned long *) xmalloc (65536 * sizeof (unsigned long)); + read_counts (); + + /* It would be a lot nicer to put all in one file (we'd also get rid of + * cputbl.h that way), but cpuopti can't cope. That could be fixed, but + * I don't dare to touch the 68k version. */ + + headerfile = fopen ("cputbl.h", "wb"); + stblfile = fopen ("cpustbl.c", "wb"); + freopen ("cpuemu.c", "wb", stdout); + + generate_includes (stdout); + generate_includes (stblfile); + + generate_func (); + + free (table68k); + return 0; +} diff --git a/SrcShared/UAE/machdep_m68k.h b/SrcShared/UAE/machdep_m68k.h new file mode 100644 index 0000000..15f740a --- /dev/null +++ b/SrcShared/UAE/machdep_m68k.h @@ -0,0 +1,56 @@ + /* + * UAE - The Un*x Amiga Emulator + * + * MC68000 emulation - machine dependent bits + * + * Copyright 1996 Bernd Schmidt + */ + +#ifdef __cplusplus +extern "C" { +#endif + +struct flag_struct { + unsigned int c; + unsigned int z; + unsigned int n; + unsigned int v; + unsigned int x; +}; + +extern struct flag_struct regflags; + +#define ZFLG (regflags.z) +#define NFLG (regflags.n) +#define CFLG (regflags.c) +#define VFLG (regflags.v) +#define XFLG (regflags.x) + +STATIC_INLINE int cctrue(const int cc) +{ + switch(cc){ + case 0: return 1; /* T */ + case 1: return 0; /* F */ + case 2: return !CFLG && !ZFLG; /* HI */ + case 3: return CFLG || ZFLG; /* LS */ + case 4: return !CFLG; /* CC */ + case 5: return CFLG; /* CS */ + case 6: return !ZFLG; /* NE */ + case 7: return ZFLG; /* EQ */ + case 8: return !VFLG; /* VC */ + case 9: return VFLG; /* VS */ + case 10:return !NFLG; /* PL */ + case 11:return NFLG; /* MI */ + case 12:return NFLG == VFLG; /* GE */ + case 13:return NFLG != VFLG; /* LT */ + case 14:return !ZFLG && (NFLG == VFLG); /* GT */ + case 15:return ZFLG || (NFLG != VFLG); /* LE */ + } + abort(); + return 0; +} + + +#ifdef __cplusplus +} +#endif diff --git a/SrcShared/UAE/machdep_maccess.h b/SrcShared/UAE/machdep_maccess.h new file mode 100644 index 0000000..928abee --- /dev/null +++ b/SrcShared/UAE/machdep_maccess.h @@ -0,0 +1,27 @@ + /* + * UAE - The Un*x Amiga Emulator + * + * Memory access functions + * + * Copyright 1996 Bernd Schmidt + */ + +#include "EmMemory.h" + +#define do_get_mem_long EmMemDoGet32 +#define do_get_mem_word EmMemDoGet16 +#define do_get_mem_byte EmMemDoGet8 + +#define do_put_mem_long EmMemDoPut32 +#define do_put_mem_word EmMemDoPut16 +#define do_put_mem_byte EmMemDoPut8 + +#define get_long EmMemGet32 +#define get_word EmMemGet16 +#define get_byte EmMemGet8 + +#define put_long EmMemPut32 +#define put_word EmMemPut16 +#define put_byte EmMemPut8 + +#define get_real_address EmMemGetRealAddress diff --git a/SrcShared/UAE/memory_cpu.h b/SrcShared/UAE/memory_cpu.h new file mode 100644 index 0000000..af2137e --- /dev/null +++ b/SrcShared/UAE/memory_cpu.h @@ -0,0 +1,13 @@ + /* + * UAE - The Un*x Amiga Emulator + * + * memory management + * + * Copyright 1995 Bernd Schmidt + */ + +#include "machdep_maccess.h" + +typedef EmAddressBank addrbank; + +#define get_mem_bank EmMemGetBank diff --git a/SrcShared/UAE/missing.c b/SrcShared/UAE/missing.c new file mode 100644 index 0000000..9ebe4a5 --- /dev/null +++ b/SrcShared/UAE/missing.c @@ -0,0 +1,36 @@ + /* + * UAE - The Un*x Amiga Emulator + * + * Various stuff missing in some OSes. + * + * Copyright 1997 Bernd Schmidt + */ + +#include "sysconfig.h" +#include "sysdeps.h" + +#include "config.h" +#include "options.h" +//#include "uae.h" + +#ifndef HAVE_STRDUP + +char *my_strdup (const char *s) +{ + /* The casts to char * are there to shut up the compiler on HPUX */ + char *x = (char*)xmalloc(strlen((char *)s) + 1); + strcpy(x, (char *)s); + return x; +} + +#endif + +void *xmalloc(size_t n) +{ + void *a = malloc (n); + if (a == NULL) { + fprintf (stderr, "virtual memory exhausted\n"); + abort (); + } + return a; +} diff --git a/SrcShared/UAE/newcpu.h b/SrcShared/UAE/newcpu.h new file mode 100644 index 0000000..25f8836 --- /dev/null +++ b/SrcShared/UAE/newcpu.h @@ -0,0 +1,230 @@ + /* + * UAE - The Un*x Amiga Emulator + * + * MC68000 emulation + * + * Copyright 1995 Bernd Schmidt + */ + +#ifdef __cplusplus +extern "C" { +#endif + +#if HAS_PROFILING +#include "Profiling.h" +#endif + +//#include <machdep/m68k.h> + +#ifndef SET_CFLG + +#define SET_CFLG(x) (CFLG = (x)) +#define SET_NFLG(x) (NFLG = (x)) +#define SET_VFLG(x) (VFLG = (x)) +#define SET_ZFLG(x) (ZFLG = (x)) +#define SET_XFLG(x) (XFLG = (x)) + +#define GET_CFLG CFLG +#define GET_NFLG NFLG +#define GET_VFLG VFLG +#define GET_ZFLG ZFLG +#define GET_XFLG XFLG + +#define CLEAR_CZNV do { \ + SET_CFLG (0); \ + SET_ZFLG (0); \ + SET_NFLG (0); \ + SET_VFLG (0); \ +} while (0) + +#define COPY_CARRY (SET_XFLG (GET_CFLG)) +#endif + +extern int areg_byteinc[]; +extern int imm8_table[]; + +extern int movem_index1[256]; +extern int movem_index2[256]; +extern int movem_next[256]; + +extern int fpp_movem_index1[256]; +extern int fpp_movem_index2[256]; +extern int fpp_movem_next[256]; + +extern int broken_in; + +typedef unsigned long cpuop_func (uae_u32) REGPARAM; + +struct cputbl { + cpuop_func *handler; + int specific; + uae_u16 opcode; + struct perfRec perf; +}; + +extern unsigned long op_illg (uae_u32) REGPARAM; + +typedef char flagtype; + +typedef struct regstruct +{ + uae_u32 regs[16]; + uaecptr usp,isp,msp; + uae_u16 sr; + flagtype t1; + flagtype t0; + flagtype s; + flagtype m; + flagtype x; + flagtype stopped; + int intmask; + + uae_u32 pc; + uae_u8 *pc_p; + uae_u8 *pc_oldp; + + uae_u8 *pc_meta_oldp; + + uae_u32 vbr,sfc,dfc; + + double fp[8]; + uae_u32 fpcr,fpsr,fpiar; + + uae_u32 spcflags; + uae_u32 kick_mask; + + /* Fellow sources say this is 4 longwords. That's impossible. It needs + * to be at least a longword. The HRM has some cryptic comment about two + * instructions being on the same longword boundary. + * The way this is implemented now seems like a good compromise. + */ + uae_u32 prefetch; +} regstruct; + +#ifndef __ECM_DYNAMIC_PATCH + +extern regstruct regs; +extern regstruct lastint_regs; + +#define gRegs regs +#define gLastint_regs lastint_regs + +#else //__ECM_DYNAMIC_PATCH + +extern regstruct *gDynRegsP; + +#define gRegs (*gDynRegsP) + +#endif //__ECM_DYNAMIC_PATCH + + + +#define m68k_dreg(r,num) ((r).regs[(num)]) +#define m68k_areg(r,num) (((r).regs + 8)[(num)]) + + // If we're profiling, go through the real work so we can count + // read cycles. Note that we don't want to actually return the + // value returned by get_foo. That function doesn't always word- + // swap on little-endian machines (e.g., the DummyBank function). + // However, the rest of the emulator is positioned to always + // expect that opcode should be word-swapped on little-endian + // machines (e.g., ATrap::DoCall). Therefore, always fetch opcodes + // with do_get_mem_foo, which will do that swapping. + +#if HAS_PROFILING + + #define M68K_GETPC() (regs.pc+((char*)regs.pc_p-(char*)regs.pc_oldp)) + + STATIC_INLINE uae_u8 get_ibyte (uae_s32 o) { + if (gProfilingEnabled) get_byte(M68K_GETPC()); + return do_get_mem_byte((uae_u8 *)(regs.pc_p + (o) + 1)); } + + STATIC_INLINE uae_u16 get_iword (uae_s32 o) { + if (gProfilingEnabled) get_word(M68K_GETPC()); + return do_get_mem_word((uae_u16 *)(regs.pc_p + (o))); } + + STATIC_INLINE uae_u32 get_ilong (uae_s32 o) { + if (gProfilingEnabled) get_long(M68K_GETPC()); + return do_get_mem_long((uae_u32 *)(regs.pc_p + (o))); } + +#else + + #define get_ibyte(o) do_get_mem_byte((uae_u8 *)(regs.pc_p + (o) + 1)) + #define get_iword(o) do_get_mem_word((uae_u16 *)(regs.pc_p + (o))) + #define get_ilong(o) do_get_mem_long((uae_u32 *)(regs.pc_p + (o))) + +#endif + + +#define m68k_incpc(o) (regs.pc_p += (o)) + +extern void Software_CheckNewPC (uaecptr newPC); + +STATIC_INLINE void m68k_setpc (uaecptr newpc) +{ + Software_CheckNewPC (newpc); + + { + addrbank* bank = &(get_mem_bank(newpc)); + regs.pc_p = regs.pc_oldp = (bank->xlateaddr)(newpc); + regs.pc = newpc; + regs.pc_meta_oldp = (bank->xlatemetaaddr)(newpc); + } +} + +STATIC_INLINE uaecptr m68k_getpc (void) +{ + return regs.pc + ((char *)regs.pc_p - (char *)regs.pc_oldp); +} + +STATIC_INLINE uaecptr m68k_getpc_p (uae_u8 *p) +{ + return regs.pc + ((char *)p - (char *)regs.pc_oldp); +} + +#define m68k_setpc_fast m68k_setpc +#define m68k_setpc_bcc m68k_setpc +#define m68k_setpc_rte m68k_setpc + +STATIC_INLINE void m68k_setstopped (int stop) +{ + regs.stopped = stop; + if (stop) + regs.spcflags |= SPCFLAG_STOP; +} + +extern uae_u32 get_disp_ea_020 (uae_u32 base, uae_u32 dp); +extern uae_u32 get_disp_ea_000 (uae_u32 base, uae_u32 dp); + +extern uae_s32 ShowEA (int reg, amodes mode, wordsizes size, char *buf); + +extern void MakeSR (void); +extern void MakeFromSR (void); +extern void Exception (int, uaecptr); + +/* Opcode of faulting instruction */ +extern uae_u16 last_op_for_exception_3; +/* PC at fault time */ +extern uaecptr last_addr_for_exception_3; +/* Address that generated the exception */ +extern uaecptr last_fault_for_exception_3; + +#define CPU_OP_NAME(a) op ## a + +/* 68020 + 68881 */ +extern struct cputbl op_smalltbl_0[]; +/* 68020 */ +extern struct cputbl op_smalltbl_1[]; +/* 68010 */ +extern struct cputbl op_smalltbl_2[]; +/* 68000 */ +extern struct cputbl op_smalltbl_3[]; +/* 68000 slow but compatible. */ +extern struct cputbl op_smalltbl_4[]; + +extern cpuop_func *cpufunctbl[65536] ASM_SYM_FOR_FUNC ("cpufunctbl"); + +#ifdef __cplusplus +} +#endif + diff --git a/SrcShared/UAE/options.h b/SrcShared/UAE/options.h new file mode 100644 index 0000000..be229fc --- /dev/null +++ b/SrcShared/UAE/options.h @@ -0,0 +1,30 @@ + /* + * UAE - The Un*x Amiga Emulator + * + * Stuff + * + * Copyright 1995, 1996 Ed Hanway + * Copyright 1995-98 Bernd Schmidt + */ + +#ifdef __cplusplus +extern "C" { +#endif + +#define UAEMAJOR 0 +#define UAEMINOR 8 +#define UAESUBREV 10 + + +/* + * You can specify numbers from 0 to 5 here. It is possible that higher + * numbers will make the CPU emulation slightly faster, but if the setting + * is too high, you will run out of memory while compiling. + * Best to leave this as it is. + */ +#define CPU_EMU_SIZE 0 + +#ifdef __cplusplus +} +#endif + diff --git a/SrcShared/UAE/readcpu.cpp b/SrcShared/UAE/readcpu.cpp new file mode 100644 index 0000000..45949a4 --- /dev/null +++ b/SrcShared/UAE/readcpu.cpp @@ -0,0 +1,808 @@ +/* + * UAE - The Un*x Amiga Emulator + * + * Read 68000 CPU specs from file "table68k" + * + * Copyright 1995,1996 Bernd Schmidt + */ + +#include "sysconfig.h" +#include "sysdeps.h" +#include <ctype.h> + +#include "config.h" +#include "options.h" +#include "readcpu.h" + +int nr_cpuop_funcs; + +struct mnemolookup lookuptab[] = { + { i_ILLG, "ILLEGAL" }, + { i_OR, "OR" }, + { i_CHK, "CHK" }, + { i_CHK2, "CHK2" }, + { i_AND, "AND" }, + { i_EOR, "EOR" }, + { i_ORSR, "ORSR" }, + { i_ANDSR, "ANDSR" }, + { i_EORSR, "EORSR" }, + { i_SUB, "SUB" }, + { i_SUBA, "SUBA" }, + { i_SUBX, "SUBX" }, + { i_SBCD, "SBCD" }, + { i_ADD, "ADD" }, + { i_ADDA, "ADDA" }, + { i_ADDX, "ADDX" }, + { i_ABCD, "ABCD" }, + { i_NEG, "NEG" }, + { i_NEGX, "NEGX" }, + { i_NBCD, "NBCD" }, + { i_CLR, "CLR" }, + { i_NOT, "NOT" }, + { i_TST, "TST" }, + { i_BTST, "BTST" }, + { i_BCHG, "BCHG" }, + { i_BCLR, "BCLR" }, + { i_BSET, "BSET" }, + { i_CMP, "CMP" }, + { i_CMPM, "CMPM" }, + { i_CMPA, "CMPA" }, + { i_MVPRM, "MVPRM" }, + { i_MVPMR, "MVPMR" }, + { i_MOVE, "MOVE" }, + { i_MOVEA, "MOVEA" }, + { i_MVSR2, "MVSR2" }, + { i_MV2SR, "MV2SR" }, + { i_SWAP, "SWAP" }, + { i_EXG, "EXG" }, + { i_EXT, "EXT" }, + { i_MVMEL, "MVMEL" }, + { i_MVMLE, "MVMLE" }, + { i_TRAP, "TRAP" }, + { i_MVR2USP, "MVR2USP" }, + { i_MVUSP2R, "MVUSP2R" }, + { i_NOP, "NOP" }, + { i_RESET, "RESET" }, + { i_RTE, "RTE" }, + { i_RTD, "RTD" }, + { i_LINK, "LINK" }, + { i_UNLK, "UNLK" }, + { i_RTS, "RTS" }, + { i_STOP, "STOP" }, + { i_TRAPV, "TRAPV" }, + { i_RTR, "RTR" }, + { i_JSR, "JSR" }, + { i_JMP, "JMP" }, + { i_BSR, "BSR" }, + { i_Bcc, "Bcc" }, + { i_LEA, "LEA" }, + { i_PEA, "PEA" }, + { i_DBcc, "DBcc" }, + { i_Scc, "Scc" }, + { i_DIVU, "DIVU" }, + { i_DIVS, "DIVS" }, + { i_MULU, "MULU" }, + { i_MULS, "MULS" }, + { i_ASR, "ASR" }, + { i_ASL, "ASL" }, + { i_LSR, "LSR" }, + { i_LSL, "LSL" }, + { i_ROL, "ROL" }, + { i_ROR, "ROR" }, + { i_ROXL, "ROXL" }, + { i_ROXR, "ROXR" }, + { i_ASRW, "ASRW" }, + { i_ASLW, "ASLW" }, + { i_LSRW, "LSRW" }, + { i_LSLW, "LSLW" }, + { i_ROLW, "ROLW" }, + { i_RORW, "RORW" }, + { i_ROXLW, "ROXLW" }, + { i_ROXRW, "ROXRW" }, + + { i_MOVE2C, "MOVE2C" }, + { i_MOVEC2, "MOVEC2" }, + { i_CAS, "CAS" }, + { i_CAS2, "CAS2" }, + { i_MULL, "MULL" }, + { i_DIVL, "DIVL" }, + { i_BFTST, "BFTST" }, + { i_BFEXTU, "BFEXTU" }, + { i_BFCHG, "BFCHG" }, + { i_BFEXTS, "BFEXTS" }, + { i_BFCLR, "BFCLR" }, + { i_BFFFO, "BFFFO" }, + { i_BFSET, "BFSET" }, + { i_BFINS, "BFINS" }, + { i_PACK, "PACK" }, + { i_UNPK, "UNPK" }, + { i_TAS, "TAS" }, + { i_BKPT, "BKPT" }, + { i_CALLM, "CALLM" }, + { i_RTM, "RTM" }, + { i_TRAPcc, "TRAPcc" }, + { i_MOVES, "MOVES" }, + { i_FPP, "FPP" }, + { i_FDBcc, "FDBcc" }, + { i_FScc, "FScc" }, + { i_FTRAPcc, "FTRAPcc" }, + { i_FBcc, "FBcc" }, + { i_FBcc, "FBcc" }, + { i_FSAVE, "FSAVE" }, + { i_FRESTORE, "FRESTORE" }, + { i_MMUOP, "MMUOP" }, + { i_ILLG, "" }, +}; + +struct instr *table68k; + +STATIC_INLINE amodes mode_from_str (const char *str) +{ + if (strncmp (str, "Dreg", 4) == 0) return Dreg; + if (strncmp (str, "Areg", 4) == 0) return Areg; + if (strncmp (str, "Aind", 4) == 0) return Aind; + if (strncmp (str, "Apdi", 4) == 0) return Apdi; + if (strncmp (str, "Aipi", 4) == 0) return Aipi; + if (strncmp (str, "Ad16", 4) == 0) return Ad16; + if (strncmp (str, "Ad8r", 4) == 0) return Ad8r; + if (strncmp (str, "absw", 4) == 0) return absw; + if (strncmp (str, "absl", 4) == 0) return absl; + if (strncmp (str, "PC16", 4) == 0) return PC16; + if (strncmp (str, "PC8r", 4) == 0) return PC8r; + if (strncmp (str, "Immd", 4) == 0) return imm; + abort (); + return ((amodes) 0); +} + +STATIC_INLINE amodes mode_from_mr (int mode, int reg) +{ + switch (mode) { + case 0: return Dreg; + case 1: return Areg; + case 2: return Aind; + case 3: return Aipi; + case 4: return Apdi; + case 5: return Ad16; + case 6: return Ad8r; + case 7: + switch (reg) { + case 0: return absw; + case 1: return absl; + case 2: return PC16; + case 3: return PC8r; + case 4: return imm; + case 5: + case 6: + case 7: return am_illg; + } + } + abort (); + return ((amodes) 0); +} + +static void build_insn (int insn) +{ + int find = -1; + int variants; + struct instr_def id; + const char *opcstr; + int i; + + int flaglive = 0, flagdead = 0; + + id = defs68k[insn]; + + for (i = 0; i < 5; i++) { + switch (id.flaginfo[i].flagset){ + case fa_unset: break; + case fa_isjmp: break; + case fa_zero: flagdead |= 1 << i; break; + case fa_one: flagdead |= 1 << i; break; + case fa_dontcare: flagdead |= 1 << i; break; + case fa_unknown: flagdead = -1; goto out1; + case fa_set: flagdead |= 1 << i; break; + } + } + + out1: + for (i = 0; i < 5; i++) { + switch (id.flaginfo[i].flaguse) { + case fu_unused: break; + case fu_isjmp: flaglive |= 1 << i; break; + case fu_maybecc: flaglive |= 1 << i; break; + case fu_unknown: flaglive = -1; goto out2; + case fu_used: flaglive |= 1 << i; break; + } + } + out2: + + opcstr = id.opcstr; + for (variants = 0; variants < (1 << id.n_variable); variants++) { + int bitcnt[lastbit]; + int bitval[lastbit]; + int bitpos[lastbit]; + int i; + uae_u16 opc = id.bits; + uae_u16 msk, vmsk; + int pos = 0; + int mnp = 0; + int bitno = 0; + char mnemonic[10]; + + wordsizes sz = sz_long; + int srcgather = 0, dstgather = 0; + int usesrc = 0, usedst = 0; + int srctype = 0; + int srcpos = -1, dstpos = -1; + + amodes srcmode = am_unknown, destmode = am_unknown; + int srcreg = -1, destreg = -1; + + for (i = 0; i < lastbit; i++) + bitcnt[i] = bitval[i] = 0; + + vmsk = 1 << id.n_variable; + + for (i = 0, msk = 0x8000; i < 16; i++, msk >>= 1) { + if (!(msk & id.mask)) { + int currbit = id.bitpos[bitno++]; + int bit_set; + vmsk >>= 1; + bit_set = variants & vmsk ? 1 : 0; + if (bit_set) + opc |= msk; + bitpos[currbit] = 15 - i; + bitcnt[currbit]++; + bitval[currbit] <<= 1; + bitval[currbit] |= bit_set; + } + } + + if (bitval[bitj] == 0) bitval[bitj] = 8; + /* first check whether this one does not match after all */ + if (bitval[bitz] == 3 || bitval[bitC] == 1) + continue; + if (bitcnt[bitI] && (bitval[bitI] == 0x00 || bitval[bitI] == 0xff)) + continue; + + /* bitI and bitC get copied to biti and bitc */ + if (bitcnt[bitI]) { + bitval[biti] = bitval[bitI]; bitpos[biti] = bitpos[bitI]; + } + if (bitcnt[bitC]) + bitval[bitc] = bitval[bitC]; + + pos = 0; + while (opcstr[pos] && !isspace(opcstr[pos])) { + if (opcstr[pos] == '.') { + pos++; + switch (opcstr[pos]) { + + case 'B': sz = sz_byte; break; + case 'W': sz = sz_word; break; + case 'L': sz = sz_long; break; + case 'z': + switch (bitval[bitz]) { + case 0: sz = sz_byte; break; + case 1: sz = sz_word; break; + case 2: sz = sz_long; break; + default: abort(); + } + break; + default: abort(); + } + } else { + mnemonic[mnp] = opcstr[pos]; + if (mnemonic[mnp] == 'f') { + find = -1; + switch (bitval[bitf]) { + case 0: mnemonic[mnp] = 'R'; break; + case 1: mnemonic[mnp] = 'L'; break; + default: abort(); + } + } + mnp++; + } + pos++; + } + mnemonic[mnp] = 0; + + /* now, we have read the mnemonic and the size */ + while (opcstr[pos] && isspace(opcstr[pos])) + pos++; + + /* A goto a day keeps the D******a away. */ + if (opcstr[pos] == 0) + goto endofline; + + /* parse the source address */ + usesrc = 1; + switch (opcstr[pos++]) { + case 'D': + srcmode = Dreg; + switch (opcstr[pos++]) { + case 'r': srcreg = bitval[bitr]; srcgather = 1; srcpos = bitpos[bitr]; break; + case 'R': srcreg = bitval[bitR]; srcgather = 1; srcpos = bitpos[bitR]; break; + default: abort(); + } + + break; + case 'A': + srcmode = Areg; + switch (opcstr[pos++]) { + case 'r': srcreg = bitval[bitr]; srcgather = 1; srcpos = bitpos[bitr]; break; + case 'R': srcreg = bitval[bitR]; srcgather = 1; srcpos = bitpos[bitR]; break; + default: abort(); + } + switch (opcstr[pos]) { + case 'p': srcmode = Apdi; pos++; break; + case 'P': srcmode = Aipi; pos++; break; + } + break; + case '#': + switch (opcstr[pos++]) { + case 'z': srcmode = imm; break; + case '0': srcmode = imm0; break; + case '1': srcmode = imm1; break; + case '2': srcmode = imm2; break; + case 'i': srcmode = immi; srcreg = (uae_s32)(uae_s8)bitval[biti]; + if (CPU_EMU_SIZE < 4) { + /* Used for branch instructions */ + srctype = 1; + srcgather = 1; + srcpos = bitpos[biti]; + } + break; + case 'j': srcmode = immi; srcreg = bitval[bitj]; + if (CPU_EMU_SIZE < 3) { + /* 1..8 for ADDQ/SUBQ and rotshi insns */ + srcgather = 1; + srctype = 3; + srcpos = bitpos[bitj]; + } + break; + case 'J': srcmode = immi; srcreg = bitval[bitJ]; + if (CPU_EMU_SIZE < 5) { + /* 0..15 */ + srcgather = 1; + srctype = 2; + srcpos = bitpos[bitJ]; + } + break; + case 'k': srcmode = immi; srcreg = bitval[bitk]; + if (CPU_EMU_SIZE < 3) { + srcgather = 1; + srctype = 4; + srcpos = bitpos[bitk]; + } + break; + case 'K': srcmode = immi; srcreg = bitval[bitK]; + if (CPU_EMU_SIZE < 5) { + /* 0..15 */ + srcgather = 1; + srctype = 5; + srcpos = bitpos[bitK]; + } + break; + default: abort(); + } + break; + case 'd': + srcreg = bitval[bitD]; + srcmode = mode_from_mr(bitval[bitd],bitval[bitD]); + if (srcmode == am_illg) + continue; + if (CPU_EMU_SIZE < 2 && + (srcmode == Areg || srcmode == Dreg || srcmode == Aind + || srcmode == Ad16 || srcmode == Ad8r || srcmode == Aipi + || srcmode == Apdi)) + { + srcgather = 1; srcpos = bitpos[bitD]; + } + if (opcstr[pos] == '[') { + pos++; + if (opcstr[pos] == '!') { + /* exclusion */ + do { + pos++; + if (mode_from_str(opcstr+pos) == srcmode) + goto nomatch; + pos += 4; + } while (opcstr[pos] == ','); + pos++; + } else { + if (opcstr[pos+4] == '-') { + /* replacement */ + if (mode_from_str(opcstr+pos) == srcmode) + srcmode = mode_from_str(opcstr+pos+5); + else + goto nomatch; + pos += 10; + } else { + /* normal */ + while(mode_from_str(opcstr+pos) != srcmode) { + pos += 4; + if (opcstr[pos] == ']') + goto nomatch; + pos++; + } + while(opcstr[pos] != ']') pos++; + pos++; + break; + } + } + } + /* Some addressing modes are invalid as destination */ + if (srcmode == imm || srcmode == PC16 || srcmode == PC8r) + goto nomatch; + break; + case 's': + srcreg = bitval[bitS]; + srcmode = mode_from_mr(bitval[bits],bitval[bitS]); + + if (srcmode == am_illg) + continue; + if (CPU_EMU_SIZE < 2 && + (srcmode == Areg || srcmode == Dreg || srcmode == Aind + || srcmode == Ad16 || srcmode == Ad8r || srcmode == Aipi + || srcmode == Apdi)) + { + srcgather = 1; srcpos = bitpos[bitS]; + } + if (opcstr[pos] == '[') { + pos++; + if (opcstr[pos] == '!') { + /* exclusion */ + do { + pos++; + if (mode_from_str(opcstr+pos) == srcmode) + goto nomatch; + pos += 4; + } while (opcstr[pos] == ','); + pos++; + } else { + if (opcstr[pos+4] == '-') { + /* replacement */ + if (mode_from_str(opcstr+pos) == srcmode) + srcmode = mode_from_str(opcstr+pos+5); + else + goto nomatch; + pos += 10; + } else { + /* normal */ + while(mode_from_str(opcstr+pos) != srcmode) { + pos += 4; + if (opcstr[pos] == ']') + goto nomatch; + pos++; + } + while(opcstr[pos] != ']') pos++; + pos++; + } + } + } + break; + default: abort(); + } + /* safety check - might have changed */ + if (srcmode != Areg && srcmode != Dreg && srcmode != Aind + && srcmode != Ad16 && srcmode != Ad8r && srcmode != Aipi + && srcmode != Apdi && srcmode != immi) + { + srcgather = 0; + } + if (srcmode == Areg && sz == sz_byte) + goto nomatch; + + if (opcstr[pos] != ',') + goto endofline; + pos++; + + /* parse the destination address */ + usedst = 1; + switch (opcstr[pos++]) { + case 'D': + destmode = Dreg; + switch (opcstr[pos++]) { + case 'r': destreg = bitval[bitr]; dstgather = 1; dstpos = bitpos[bitr]; break; + case 'R': destreg = bitval[bitR]; dstgather = 1; dstpos = bitpos[bitR]; break; + default: abort(); + } + break; + case 'A': + destmode = Areg; + switch (opcstr[pos++]) { + case 'r': destreg = bitval[bitr]; dstgather = 1; dstpos = bitpos[bitr]; break; + case 'R': destreg = bitval[bitR]; dstgather = 1; dstpos = bitpos[bitR]; break; + default: abort(); + } + switch (opcstr[pos]) { + case 'p': destmode = Apdi; pos++; break; + case 'P': destmode = Aipi; pos++; break; + } + break; + case '#': + switch (opcstr[pos++]) { + case 'z': destmode = imm; break; + case '0': destmode = imm0; break; + case '1': destmode = imm1; break; + case '2': destmode = imm2; break; + case 'i': destmode = immi; destreg = (uae_s32)(uae_s8)bitval[biti]; break; + case 'j': destmode = immi; destreg = bitval[bitj]; break; + case 'J': destmode = immi; destreg = bitval[bitJ]; break; + case 'k': destmode = immi; destreg = bitval[bitk]; break; + case 'K': destmode = immi; destreg = bitval[bitK]; break; + default: abort(); + } + break; + case 'd': + destreg = bitval[bitD]; + destmode = mode_from_mr(bitval[bitd],bitval[bitD]); + if (destmode == am_illg) + continue; + if (CPU_EMU_SIZE < 1 && + (destmode == Areg || destmode == Dreg || destmode == Aind + || destmode == Ad16 || destmode == Ad8r || destmode == Aipi + || destmode == Apdi)) + { + dstgather = 1; dstpos = bitpos[bitD]; + } + + if (opcstr[pos] == '[') { + pos++; + if (opcstr[pos] == '!') { + /* exclusion */ + do { + pos++; + if (mode_from_str(opcstr+pos) == destmode) + goto nomatch; + pos += 4; + } while (opcstr[pos] == ','); + pos++; + } else { + if (opcstr[pos+4] == '-') { + /* replacement */ + if (mode_from_str(opcstr+pos) == destmode) + destmode = mode_from_str(opcstr+pos+5); + else + goto nomatch; + pos += 10; + } else { + /* normal */ + while(mode_from_str(opcstr+pos) != destmode) { + pos += 4; + if (opcstr[pos] == ']') + goto nomatch; + pos++; + } + while(opcstr[pos] != ']') pos++; + pos++; + break; + } + } + } + /* Some addressing modes are invalid as destination */ + if (destmode == imm || destmode == PC16 || destmode == PC8r) + goto nomatch; + break; + case 's': + destreg = bitval[bitS]; + destmode = mode_from_mr(bitval[bits],bitval[bitS]); + + if (destmode == am_illg) + continue; + if (CPU_EMU_SIZE < 1 && + (destmode == Areg || destmode == Dreg || destmode == Aind + || destmode == Ad16 || destmode == Ad8r || destmode == Aipi + || destmode == Apdi)) + { + dstgather = 1; dstpos = bitpos[bitS]; + } + + if (opcstr[pos] == '[') { + pos++; + if (opcstr[pos] == '!') { + /* exclusion */ + do { + pos++; + if (mode_from_str(opcstr+pos) == destmode) + goto nomatch; + pos += 4; + } while (opcstr[pos] == ','); + pos++; + } else { + if (opcstr[pos+4] == '-') { + /* replacement */ + if (mode_from_str(opcstr+pos) == destmode) + destmode = mode_from_str(opcstr+pos+5); + else + goto nomatch; + pos += 10; + } else { + /* normal */ + while(mode_from_str(opcstr+pos) != destmode) { + pos += 4; + if (opcstr[pos] == ']') + goto nomatch; + pos++; + } + while(opcstr[pos] != ']') pos++; + pos++; + } + } + } + break; + default: abort(); + } + /* safety check - might have changed */ + if (destmode != Areg && destmode != Dreg && destmode != Aind + && destmode != Ad16 && destmode != Ad8r && destmode != Aipi + && destmode != Apdi) + { + dstgather = 0; + } + + if (destmode == Areg && sz == sz_byte) + goto nomatch; +#if 0 + if (sz == sz_byte && (destmode == Aipi || destmode == Apdi)) { + dstgather = 0; + } +#endif + endofline: + /* now, we have a match */ + if (table68k[opc].mnemo != i_ILLG) + fprintf(stderr, "Double match: %x: %s\n", opc, opcstr); + if (find == -1) { + for (find = 0;; find++) { + if (strcmp(mnemonic, lookuptab[find].name) == 0) { + table68k[opc].mnemo = lookuptab[find].mnemo; + break; + } + if (strlen(lookuptab[find].name) == 0) abort(); + } + } + else { + table68k[opc].mnemo = lookuptab[find].mnemo; + } + table68k[opc].cc = bitval[bitc]; + if (table68k[opc].mnemo == i_BTST + || table68k[opc].mnemo == i_BSET + || table68k[opc].mnemo == i_BCLR + || table68k[opc].mnemo == i_BCHG) + { + sz = destmode == Dreg ? sz_long : sz_byte; + } + table68k[opc].size = sz; + table68k[opc].sreg = srcreg; + table68k[opc].dreg = destreg; + table68k[opc].smode = srcmode; + table68k[opc].dmode = destmode; + table68k[opc].spos = srcgather ? srcpos : -1; + table68k[opc].dpos = dstgather ? dstpos : -1; + table68k[opc].suse = usesrc; + table68k[opc].duse = usedst; + table68k[opc].stype = srctype; + table68k[opc].plev = id.plevel; + table68k[opc].clev = id.cpulevel; +#if 0 + for (i = 0; i < 5; i++) { + table68k[opc].flaginfo[i].flagset = id.flaginfo[i].flagset; + table68k[opc].flaginfo[i].flaguse = id.flaginfo[i].flaguse; + } +#endif + table68k[opc].flagdead = flagdead; + table68k[opc].flaglive = flaglive; + nomatch: + /* FOO! */; + } +} + + +void read_table68k (void) +{ + int i; + + table68k = (struct instr *)xmalloc (65536 * sizeof (struct instr)); + for (i = 0; i < 65536; i++) { + table68k[i].mnemo = i_ILLG; + table68k[i].handler = -1; + } + for (i = 0; i < n_defs68k; i++) { + build_insn (i); + } +} + +static int mismatch; + +static void handle_merges (long int opcode) +{ + uae_u16 smsk; + uae_u16 dmsk; + int sbitdst, dstend; + int srcreg, dstreg; + + if (table68k[opcode].spos == -1) { + sbitdst = 1; smsk = 0; + } else { + switch (table68k[opcode].stype) { + case 0: + smsk = 7; sbitdst = 8; break; + case 1: + smsk = 255; sbitdst = 256; break; + case 2: + smsk = 15; sbitdst = 16; break; + case 3: + smsk = 7; sbitdst = 8; break; + case 4: + smsk = 7; sbitdst = 8; break; + case 5: + smsk = 63; sbitdst = 64; break; + default: + smsk = 0; sbitdst = 0; + abort(); + break; + } + smsk <<= table68k[opcode].spos; + } + if (table68k[opcode].dpos == -1) { + dstend = 1; dmsk = 0; + } else { + dmsk = 7 << table68k[opcode].dpos; + dstend = 8; + } + for (srcreg=0; srcreg < sbitdst; srcreg++) { + for (dstreg=0; dstreg < dstend; dstreg++) { + uae_u16 code = opcode; + + code = (code & ~smsk) | (srcreg << table68k[opcode].spos); + code = (code & ~dmsk) | (dstreg << table68k[opcode].dpos); + + /* Check whether this is in fact the same instruction. + * The instructions should never differ, except for the + * Bcc.(BW) case. */ + if (table68k[code].mnemo != table68k[opcode].mnemo + || table68k[code].size != table68k[opcode].size + || table68k[code].suse != table68k[opcode].suse + || table68k[code].duse != table68k[opcode].duse) + { + mismatch++; continue; + } + if (table68k[opcode].suse + && (table68k[opcode].spos != table68k[code].spos + || table68k[opcode].smode != table68k[code].smode + || table68k[opcode].stype != table68k[code].stype)) + { + mismatch++; continue; + } + if (table68k[opcode].duse + && (table68k[opcode].dpos != table68k[code].dpos + || table68k[opcode].dmode != table68k[code].dmode)) + { + mismatch++; continue; + } + + if (code != opcode) + table68k[code].handler = opcode; + } + } +} + +void do_merges (void) +{ + long int opcode; + int nr = 0; + mismatch = 0; + for (opcode = 0; opcode < 65536; opcode++) { + if (table68k[opcode].handler != -1 || table68k[opcode].mnemo == i_ILLG) + continue; + nr++; + handle_merges (opcode); + } + nr_cpuop_funcs = nr; +} + +int get_no_mismatches (void) +{ + return mismatch; +} diff --git a/SrcShared/UAE/readcpu.h b/SrcShared/UAE/readcpu.h new file mode 100644 index 0000000..f277187 --- /dev/null +++ b/SrcShared/UAE/readcpu.h @@ -0,0 +1,113 @@ +#ifdef __cplusplus +extern "C" { +#endif + +ENUMDECL { + Dreg, Areg, Aind, Aipi, Apdi, Ad16, Ad8r, + absw, absl, PC16, PC8r, imm, imm0, imm1, imm2, immi, am_unknown, am_illg +} ENUMNAME (amodes); + +ENUMDECL { + i_ILLG, + + i_OR, i_AND, i_EOR, i_ORSR, i_ANDSR, i_EORSR, + i_SUB, i_SUBA, i_SUBX, i_SBCD, + i_ADD, i_ADDA, i_ADDX, i_ABCD, + i_NEG, i_NEGX, i_NBCD, i_CLR, i_NOT, i_TST, + i_BTST, i_BCHG, i_BCLR, i_BSET, + i_CMP, i_CMPM, i_CMPA, + i_MVPRM, i_MVPMR, i_MOVE, i_MOVEA, i_MVSR2, i_MV2SR, + i_SWAP, i_EXG, i_EXT, i_MVMEL, i_MVMLE, + i_TRAP, i_MVR2USP, i_MVUSP2R, i_RESET, i_NOP, i_STOP, i_RTE, i_RTD, + i_LINK, i_UNLK, + i_RTS, i_TRAPV, i_RTR, + i_JSR, i_JMP, i_BSR, i_Bcc, + i_LEA, i_PEA, i_DBcc, i_Scc, + i_DIVU, i_DIVS, i_MULU, i_MULS, + i_ASR, i_ASL, i_LSR, i_LSL, i_ROL, i_ROR, i_ROXL, i_ROXR, + i_ASRW, i_ASLW, i_LSRW, i_LSLW, i_ROLW, i_RORW, i_ROXLW, i_ROXRW, + i_CHK,i_CHK2, + i_MOVEC2, i_MOVE2C, i_CAS, i_CAS2, i_DIVL, i_MULL, + i_BFTST,i_BFEXTU,i_BFCHG,i_BFEXTS,i_BFCLR,i_BFFFO,i_BFSET,i_BFINS, + i_PACK, i_UNPK, i_TAS, i_BKPT, i_CALLM, i_RTM, i_TRAPcc, i_MOVES, + i_FPP, i_FDBcc, i_FScc, i_FTRAPcc, i_FBcc, i_FSAVE, i_FRESTORE, + i_MMUOP +} ENUMNAME (instrmnem); + +extern struct mnemolookup { + instrmnem mnemo; + const char *name; +} lookuptab[]; + +ENUMDECL { + sz_byte, sz_word, sz_long +} ENUMNAME (wordsizes); + +ENUMDECL { + fa_set, fa_unset, fa_zero, fa_one, fa_dontcare, fa_unknown, fa_isjmp +} ENUMNAME (flagaffect); + +ENUMDECL { + fu_used, fu_unused, fu_maybecc, fu_unknown, fu_isjmp +} ENUMNAME (flaguse); + +ENUMDECL { + bit0, bit1, bitc, bitC, bitf, biti, bitI, bitj, bitJ, bitk, bitK, + bits, bitS, bitd, bitD, bitr, bitR, bitz, lastbit +} ENUMNAME (bitvals); + +struct instr_def { + unsigned int bits; + int n_variable; + char bitpos[16]; + unsigned int mask; + int cpulevel; + int plevel; + struct { + unsigned int flaguse:3; + unsigned int flagset:3; + } flaginfo[5]; + unsigned char sduse; + const char *opcstr; +}; + +extern struct instr_def defs68k[]; +extern int n_defs68k; + +extern struct instr { + long int handler; + unsigned char dreg; + unsigned char sreg; + signed char dpos; + signed char spos; + unsigned char sduse; + int flagdead:8, flaglive:8; + unsigned int mnemo:8; + unsigned int cc:4; + unsigned int plev:2; + unsigned int size:2; + unsigned int smode:5; + unsigned int stype:3; + unsigned int dmode:5; + unsigned int suse:1; + unsigned int duse:1; + unsigned int unused1:1; + unsigned int clev:3; + unsigned int unused2:5; +} *table68k; + +extern void read_table68k (void); +extern void do_merges (void); +extern int get_no_mismatches (void); +extern int nr_cpuop_funcs; + +struct perfRec { + unsigned char extraCycles; + unsigned char readCycles; + unsigned char writeCycles; +}; + + +#ifdef __cplusplus +} +#endif diff --git a/SrcShared/UAE/sysconfig.h b/SrcShared/UAE/sysconfig.h new file mode 100644 index 0000000..17de33a --- /dev/null +++ b/SrcShared/UAE/sysconfig.h @@ -0,0 +1,33 @@ +#define SIZEOF_CHAR 1 +#define SIZEOF_SHORT 2 +#define SIZEOF_INT 0 // Goofy, but it gets us what we want: shorts + // for 2-byte types and longs for 4-byte types +#define SIZEOF_LONG 4 + +#ifdef _MSC_VER + #define SIZEOF___INT64 8 +#else + #define SIZEOF_LONG_LONG 8 +#endif + +#define REGPARAM +#define DONT_HAVE_REAL_POSIX +#define EXEC_TYPES_H + +#include <string.h> + +#ifdef _MSC_VER + #pragma warning( disable : 4244 ) // warning C4244: initializing : conversion from unsigned long to unsigned short, possible loss of data + #pragma warning( disable : 4786 ) // warning C4786: '<foo>' : identifier was truncated to '255' characters in the browser information +#endif + + +#ifdef _MSC_VER + #define __inline__ __inline +#else + #define __inline__ inline +#endif + +#ifndef STATIC_INLINE +#define STATIC_INLINE static __inline__ +#endif diff --git a/SrcShared/UAE/sysdeps.h b/SrcShared/UAE/sysdeps.h new file mode 100644 index 0000000..ab682fa --- /dev/null +++ b/SrcShared/UAE/sysdeps.h @@ -0,0 +1,348 @@ + /* + * UAE - The Un*x Amiga Emulator + * + * Try to include the right system headers and get other system-specific + * stuff right & other collected kludges. + * + * If you think about modifying this, think twice. Some systems rely on + * the exact order of the #include statements. That's also the reason + * why everything gets included unconditionally regardless of whether + * it's actually needed by the .c file. + * + * Copyright 1996, 1997 Bernd Schmidt + */ + +#ifdef __cplusplus +extern "C" { +#endif + +#include <stdio.h> +#include <stdlib.h> +#include <errno.h> +#include <assert.h> +#include <limits.h> + +#include "EmTypes.h" // int8, int16, etc. + +#ifndef __STDC__ +#define __STDC__ 1 +#endif +#ifndef __STDC__ +#error "Your compiler is not ANSI. Get a real one." +#endif + +#include <stdarg.h> + +#ifdef HAVE_SYS_TYPES_H +#include <sys/types.h> +#endif + +#ifdef HAVE_VALUES_H +#include <values.h> +#endif + +#ifdef HAVE_STRINGS_H +#include <strings.h> +#endif +#ifdef HAVE_STRING_H +#include <string.h> +#endif + +#ifdef HAVE_UNISTD_H +#include <unistd.h> +#endif +#ifdef HAVE_FCNTL_H +#include <fcntl.h> +#endif + +#ifdef HAVE_UTIME_H +#include <utime.h> +#endif + +#ifdef HAVE_SYS_STAT_H +#include <sys/stat.h> +#endif + +#if TIME_WITH_SYS_TIME +# include <sys/time.h> +# include <time.h> +#else +# if HAVE_SYS_TIME_H +# include <sys/time.h> +# else +# include <time.h> +# endif +#endif + +#if HAVE_DIRENT_H +# include <dirent.h> +#else +# define dirent direct +# if HAVE_SYS_NDIR_H +# include <sys/ndir.h> +# endif +# if HAVE_SYS_DIR_H +# include <sys/dir.h> +# endif +# if HAVE_NDIR_H +# include <ndir.h> +# endif +#endif + +#ifdef HAVE_SYS_UTIME_H +# include <sys/utime.h> +#endif + +#include <errno.h> +#include <assert.h> + +#if EEXIST == ENOTEMPTY +#define BROKEN_OS_PROBABLY_AIX +#endif + +#ifdef __NeXT__ +#define S_IRUSR S_IREAD +#define S_IWUSR S_IWRITE +#define S_IXUSR S_IEXEC +#define S_ISDIR(val) (S_IFDIR & val) +struct utimbuf +{ + time_t actime; + time_t modtime; +}; +#endif + +#if defined(__GNUC__) && defined(AMIGA) +/* gcc on the amiga need that __attribute((regparm)) must */ +/* be defined in function prototypes as well as in */ +/* function definitions ! */ +#define REGPARAM2 REGPARAM +#else /* not(GCC & AMIGA) */ +#define REGPARAM2 +#endif + +/* sam: some definitions so that SAS/C can compile UAE */ +#if defined(__SASC) && defined(AMIGA) +#define REGPARAM2 +#define REGPARAM +#define S_IRUSR S_IREAD +#define S_IWUSR S_IWRITE +#define S_IXUSR S_IEXECUTE +#define S_ISDIR(val) (S_IFDIR & val) +#define mkdir(x,y) mkdir(x) +#define truncate(x,y) 0 +#define creat(x,y) open("T:creat",O_CREAT|O_TEMP|O_RDWR) /* sam: for zfile.c */ +#define strcasecmp stricmp +#define utime(file,time) 0 +struct utimbuf +{ + time_t actime; + time_t modtime; +}; +#endif + +#if defined(WARPUP) +#include "devices/timer.h" +#include "osdep/posixemu.h" +#define REGPARAM +#define REGPARAM2 +#define RETSIGTYPE +#define USE_ZFILE +#define strcasecmp stricmp +#define memcpy q_memcpy +#define memset q_memset +#define strdup my_strdup +#define random rand +#define creat(x,y) open("T:creat",O_CREAT|O_RDWR,777) +extern void* q_memset(void*,int,size_t); +extern void* q_memcpy(void*,const void*,size_t); +#endif + +#ifdef __DOS__ +#include <pc.h> +#include <io.h> +#endif + +/* Acorn specific stuff */ +#ifdef ACORN + +#define S_IRUSR S_IREAD +#define S_IWUSR S_IWRITE +#define S_IXUSR S_IEXEC + +#define strcasecmp stricmp + +#endif + +#ifndef L_tmpnam +#define L_tmpnam 128 /* ought to be safe */ +#endif + +/* If char has more then 8 bits, good night. */ + +typedef int8 uae_s8; +typedef int16 uae_s16; +typedef int32 uae_s32; +typedef int64 uae_s64; + +typedef uint8 uae_u8; +typedef uint16 uae_u16; +typedef uint32 uae_u32; +typedef uint64 uae_u64; + +typedef emuptr uaecptr; + + +#ifdef HAVE_STRDUP +#define my_strdup strdup +#else +extern char *my_strdup (const char*s); +#endif + +extern void *xmalloc(size_t); + +/* We can only rely on GNU C getting enums right. Mickeysoft VSC++ is known + * to have problems, and it's likely that other compilers choke too. */ +#ifdef __GNUC__ +#define ENUMDECL typedef enum +#define ENUMNAME(name) name +#else +#define ENUMDECL enum +#define ENUMNAME(name) ; typedef int name +#endif + +/* + * Porters to weird systems, look! This is the preferred way to get + * filesys.c (and other stuff) running on your system. Define the + * appropriate macros and implement wrappers in a machine-specific file. + * + * I guess the Mac port could use this (Ernesto?) + */ + +//#undef DONT_HAVE_POSIX +//#undef DONT_HAVE_REAL_POSIX /* define if open+delete doesn't do what it should */ +//#undef DONT_HAVE_STDIO +//#undef DONT_HAVE_MALLOC + +#if defined(WARPUP) +#define DONT_HAVE_POSIX +#endif + +#if defined _WIN32 + +#if defined __WATCOMC__ + +#define O_NDELAY 0 +#include <direct.h> +#define dirent direct +#define mkdir(a,b) mkdir(a) +#define strcasecmp stricmp + +#elif defined __MINGW32__ + +#define O_NDELAY 0 +#define mkdir(a,b) mkdir(a) + +#endif + +#endif /* _WIN32 */ + +#ifdef DONT_HAVE_POSIX + +#define access posixemu_access +extern int posixemu_access (const char *, int); +#define open posixemu_open +extern int posixemu_open (const char *, int, int); +#define close posixemu_close +extern void posixemu_close (int); +#define read posixemu_read +extern int posixemu_read (int, char *, int); +#define write posixemu_write +extern int posixemu_write (int, const char *, int); +#undef lseek +#define lseek posixemu_seek +extern int posixemu_seek (int, int, int); +#define stat(a,b) posixemu_stat ((a), (b)) +extern int posixemu_stat (const char *, STAT *); +#define mkdir posixemu_mkdir +extern int mkdir (const char *, int); +#define rmdir posixemu_rmdir +extern int posixemu_rmdir (const char *); +#define unlink posixemu_unlink +extern int posixemu_unlink (const char *); +#define truncate posixemu_truncate +extern int posixemu_truncate (const char *, long int); +#define rename posixemu_rename +extern int posixemu_rename (const char *, const char *); +#define chmod posixemu_chmod +extern int posixemu_chmod (const char *, int); +#define tmpnam posixemu_tmpnam +extern void posixemu_tmpnam (char *); +#define utime posixemu_utime +extern int posixemu_utime (const char *, struct utimbuf *); +#define opendir posixemu_opendir +extern DIR * posixemu_opendir (const char *); +#define readdir posixemu_readdir +extern struct dirent* readdir (DIR *); +#define closedir posixemu_closedir +extern void closedir (DIR *); + +/* This isn't the best place for this, but it fits reasonably well. The logic + * is that you probably don't have POSIX errnos if you don't have the above + * functions. */ +extern long dos_errno (void); + +#endif + +#ifdef DONT_HAVE_STDIO + +extern FILE *stdioemu_fopen (const char *, const char *); +#define fopen(a,b) stdioemu_fopen(a, b) +extern int stdioemu_fseek (FILE *, int, int); +#define fseek(a,b,c) stdioemu_fseek(a, b, c) +extern int stdioemu_fread (char *, int, int, FILE *); +#define fread(a,b,c,d) stdioemu_fread(a, b, c, d) +extern int stdioemu_fwrite (const char *, int, int, FILE *); +#define fwrite(a,b,c,d) stdioemu_fwrite(a, b, c, d) +extern int stdioemu_ftell (FILE *); +#define ftell(a) stdioemu_ftell(a) +extern int stdioemu_fclose (FILE *); +#define fclose(a) stdioemu_fclose(a) + +#endif + +#ifdef DONT_HAVE_MALLOC + +#define malloc(a) mallocemu_malloc(a) +extern void *mallocemu_malloc (int size); +#define free(a) mallocemu_free(a) +extern void mallocemu_free (void *ptr); + +#endif + +#ifdef X86_ASSEMBLY +#define ASM_SYM_FOR_FUNC(a) __asm__(a) +#else +#define ASM_SYM_FOR_FUNC(a) +#endif + +#if defined USE_COMPILER +#undef NO_PREFETCH_BUFFER +#undef NO_EXCEPTION_3 +#define NO_EXCEPTION_3 +#define NO_PREFETCH_BUFFER +#endif + +#include "target.h" + +#ifndef O_BINARY +#define O_BINARY 0 +#endif + +#ifndef STATIC_INLINE +#define STATIC_INLINE static __inline__ +#endif + +#ifdef __cplusplus +} +#endif diff --git a/SrcShared/UAE/table68k b/SrcShared/UAE/table68k new file mode 100644 index 0000000..0e8de35 --- /dev/null +++ b/SrcShared/UAE/table68k @@ -0,0 +1,242 @@ +% 0: bit 0 +% 1: bit 1 +% c: condition code +% C: condition codes, except F +% f: direction +% i: immediate +% I: immediate, except 00 and ff +% j: immediate 1..8 +% J: immediate 0..15 +% k: immediate 0..7 +% K: immediate 0..63 +% s: source mode +% S: source reg +% d: dest mode +% D: dest reg +% r: reg +% z: size +% +% Actually, a sssSSS may appear as a destination, and +% vice versa. The only difference between sssSSS and +% dddDDD are the valid addressing modes. There is +% no match for immediate and pc-rel. addressing modes +% in case of dddDDD. +% +% Arp: --> -(Ar) +% ArP: --> (Ar)+ +% +% Fields on a line: +% 16 chars bitpattern : +% CPU level / privildge level : +% CPU level 0: 68000 +% 1: 68010 +% 2: 68020 +% privilege level 0: not privileged +% 1: unprivileged only on 68000 (check regs.s) +% 2: privileged (check regs.s) +% 3: privileged if size == word (check regs.s) +% Flags set by instruction: XNZVC : +% Flags used by instruction: XNZVC : +% - means flag unaffected / unused +% 0 means flag reset +% 1 means flag set +% ? means programmer was too lazy to check or instruction may trap +% + means instruction is conditional branch +% everything else means flag set/used +% / means instruction is unconditional branch/call +% x means flag is unknown and well-behaved programs shouldn't check it +% srcaddr status destaddr status : +% bitmasks of +% 1 means fetched +% 2 means stored +% 4 means jump offset +% 8 means jump address +% instruction +% + +0000 0000 0011 1100:00:XNZVC:XNZVC:10: ORSR.B #1 +0000 0000 0111 1100:02:?????:?????:10: ORSR.W #1 +0000 0zz0 11ss sSSS:20:?????:?????:11: CHK2.z #1,s[!Dreg,Areg,Aipi,Apdi,Immd] +0000 0000 zzdd dDDD:00:-NZ00:-----:13: OR.z #z,d[!Areg] +0000 0010 0011 1100:00:XNZVC:XNZVC:10: ANDSR.B #1 +0000 0010 0111 1100:02:?????:?????:10: ANDSR.W #1 +0000 0010 zzdd dDDD:00:-NZ00:-----:13: AND.z #z,d[!Areg] +0000 0100 zzdd dDDD:00:XNZVC:-----:13: SUB.z #z,d[!Areg] +0000 0110 zzdd dDDD:00:XNZVC:-----:13: ADD.z #z,d[!Areg] +0000 0110 11ss sSSS:20:?????:?????:10: CALLM s[!Dreg,Areg,Aipi,Apdi,Immd] +0000 0110 11ss sSSS:20:?????:?????:10: RTM s[Dreg,Areg] +0000 1000 00ss sSSS:00:--Z--:-----:11: BTST #1,s[!Areg] +0000 1000 01ss sSSS:00:--Z--:-----:13: BCHG #1,s[!Areg,Immd] +0000 1000 10ss sSSS:00:--Z--:-----:13: BCLR #1,s[!Areg,Immd] +0000 1000 11ss sSSS:00:--Z--:-----:13: BSET #1,s[!Areg,Immd] +0000 1010 0011 1100:00:XNZVC:XNZVC:10: EORSR.B #1 +0000 1010 0111 1100:02:?????:?????:10: EORSR.W #1 +0000 1010 zzdd dDDD:00:-NZ00:-----:13: EOR.z #z,d[!Areg] +0000 1100 zzss sSSS:00:-NZVC:-----:11: CMP.z #z,s[!Areg,Immd] + +0000 1010 11ss sSSS:20:?????:?????:13: CAS.B #1,s[!Dreg,Areg,Immd,PC8r,PC16] +0000 1100 11ss sSSS:20:?????:?????:13: CAS.W #1,s[!Dreg,Areg,Immd,PC8r,PC16] +0000 1100 1111 1100:20:?????:?????:10: CAS2.W #2 +0000 1110 zzss sSSS:22:?????:?????:13: MOVES.z #1,s[!Dreg,Areg,Immd,PC8r,PC16] +0000 1110 11ss sSSS:20:?????:?????:13: CAS.L #1,s[!Dreg,Areg,Immd,PC8r,PC16] +0000 1110 1111 1100:20:?????:?????:10: CAS2.L #2 + +0000 rrr1 00dd dDDD:00:-----:-----:12: MVPMR.W d[Areg-Ad16],Dr +0000 rrr1 01dd dDDD:00:-----:-----:12: MVPMR.L d[Areg-Ad16],Dr +0000 rrr1 10dd dDDD:00:-----:-----:12: MVPRM.W Dr,d[Areg-Ad16] +0000 rrr1 11dd dDDD:00:-----:-----:12: MVPRM.L Dr,d[Areg-Ad16] +0000 rrr1 00ss sSSS:00:--Z--:-----:11: BTST Dr,s[!Areg] +0000 rrr1 01ss sSSS:00:--Z--:-----:13: BCHG Dr,s[!Areg,Immd] +0000 rrr1 10ss sSSS:00:--Z--:-----:13: BCLR Dr,s[!Areg,Immd] +0000 rrr1 11ss sSSS:00:--Z--:-----:13: BSET Dr,s[!Areg,Immd] + +0001 DDDd ddss sSSS:00:-NZ00:-----:12: MOVE.B s,d[!Areg] +0010 DDDd ddss sSSS:00:-----:-----:12: MOVEA.L s,d[Areg] +0010 DDDd ddss sSSS:00:-NZ00:-----:12: MOVE.L s,d[!Areg] +0011 DDDd ddss sSSS:00:-----:-----:12: MOVEA.W s,d[Areg] +0011 DDDd ddss sSSS:00:-NZ00:-----:12: MOVE.W s,d[!Areg] + +0100 0000 zzdd dDDD:00:XxZxC:-----:30: NEGX.z d[!Areg] +0100 0000 11dd dDDD:01:?????:?????:10: MVSR2.W d[!Areg] +0100 0010 zzdd dDDD:00:-0100:-----:20: CLR.z d[!Areg] +0100 0010 11dd dDDD:10:?????:?????:10: MVSR2.B d[!Areg] +0100 0100 zzdd dDDD:00:XNZVC:-----:30: NEG.z d[!Areg] +0100 0100 11ss sSSS:00:XNZVC:-----:10: MV2SR.B s[!Areg] +0100 0110 zzdd dDDD:00:-NZ00:-----:30: NOT.z d[!Areg] +0100 0110 11ss sSSS:02:?????:?????:10: MV2SR.W s[!Areg] +0100 1000 0000 1rrr:20:-----:-----:31: LINK.L Ar,#2 +0100 1000 00dd dDDD:00:X?Z?C:X-Z--:30: NBCD.B d[!Areg] +0100 1000 0100 1kkk:20:?????:?????:10: BKPT #k +0100 1000 01ss sSSS:00:-NZ00:-----:30: SWAP.W s[Dreg] +0100 1000 01ss sSSS:00:-----:-----:00: PEA.L s[!Dreg,Areg,Aipi,Apdi,Immd] +0100 1000 10dd dDDD:00:-NZ00:-----:30: EXT.W d[Dreg] +0100 1000 10dd dDDD:00:-----:-----:02: MVMLE.W #1,d[!Dreg,Areg,Aipi] +0100 1000 11dd dDDD:00:-NZ00:-----:30: EXT.L d[Dreg] +0100 1000 11dd dDDD:00:-----:-----:02: MVMLE.L #1,d[!Dreg,Areg,Aipi] +0100 1001 11dd dDDD:00:-NZ00:-----:30: EXT.B d[Dreg] +0100 1010 zzss sSSS:00:-NZ00:-----:10: TST.z s +0100 1010 11dd dDDD:00:?????:?????:30: TAS.B d[!Areg] +0100 1010 1111 1100:00:?????:?????:00: ILLEGAL +0100 1100 00ss sSSS:20:-NZVC:-----:13: MULL.L #1,s[!Areg] +0100 1100 01ss sSSS:20:?????:?????:13: DIVL.L #1,s[!Areg] +0100 1100 10ss sSSS:00:-----:-----:01: MVMEL.W #1,s[!Dreg,Areg,Apdi,Immd] +0100 1100 11ss sSSS:00:-----:-----:01: MVMEL.L #1,s[!Dreg,Areg,Apdi,Immd] +0100 1110 0100 JJJJ:00:-----:XNZVC:10: TRAP #J +0100 1110 0101 0rrr:00:-----:-----:31: LINK.W Ar,#1 +0100 1110 0101 1rrr:00:-----:-----:30: UNLK.L Ar +0100 1110 0110 0rrr:02:-----:-----:10: MVR2USP.L Ar +0100 1110 0110 1rrr:02:-----:-----:20: MVUSP2R.L Ar +0100 1110 0111 0000:02:-----:-----:00: RESET +0100 1110 0111 0001:00:-----:-----:00: NOP +0100 1110 0111 0010:02:XNZVC:-----:10: STOP #1 +0100 1110 0111 0011:02:XNZVC:-----:00: RTE +0100 1110 0111 0100:00:?????:?????:10: RTD #1 +0100 1110 0111 0101:00:-----:-----:00: RTS +0100 1110 0111 0110:00:-----:XNZVC:00: TRAPV +0100 1110 0111 0111:00:XNZVC:-----:00: RTR +0100 1110 0111 1010:12:?????:?????:10: MOVEC2 #1 +0100 1110 0111 1011:12:?????:?????:10: MOVE2C #1 +0100 1110 10ss sSSS:00://///://///:80: JSR.L s[!Dreg,Areg,Aipi,Apdi,Immd] +0100 rrr1 00ss sSSS:00:?????:?????:11: CHK.L s[!Areg],Dr +0100 rrr1 10ss sSSS:00:?????:?????:11: CHK.W s[!Areg],Dr +0100 1110 11ss sSSS:00://///://///:80: JMP.L s[!Dreg,Areg,Aipi,Apdi,Immd] +0100 rrr1 11ss sSSS:00:-----:-----:02: LEA.L s[!Dreg,Areg,Aipi,Apdi,Immd],Ar + +0101 jjj0 zzdd dDDD:00:-----:-----:13: ADDA.z #j,d[Areg] +0101 jjj0 zzdd dDDD:00:XNZVC:-----:13: ADD.z #j,d[!Areg] +0101 jjj1 zzdd dDDD:00:-----:-----:13: SUBA.z #j,d[Areg] +0101 jjj1 zzdd dDDD:00:XNZVC:-----:13: SUB.z #j,d[!Areg] +0101 cccc 1100 1rrr:00:-----:+++++:31: DBcc.W Dr,#1 +0101 cccc 11dd dDDD:00:-----:+++++:20: Scc.B d[!Areg] +0101 cccc 1111 1010:20:?????:?????:10: TRAPcc #1 +0101 cccc 1111 1011:20:?????:?????:10: TRAPcc #2 +0101 cccc 1111 1100:20:?????:?????:00: TRAPcc + +% Bxx.L is 68020 only, but setting the CPU level to 2 would give illegal +% instruction exceptions when compiling a 68000 only emulation, which isn't +% what we want either. +0110 0001 0000 0000:00://///://///:40: BSR.W #1 +0110 0001 IIII IIII:00://///://///:40: BSR.B #i +0110 0001 1111 1111:00://///://///:40: BSR.L #2 +0110 CCCC 0000 0000:00:-----:+++++:40: Bcc.W #1 +0110 CCCC IIII IIII:00:-----:+++++:40: Bcc.B #i +0110 CCCC 1111 1111:00:-----:+++++:40: Bcc.L #2 + +0111 rrr0 iiii iiii:00:-NZ00:-----:12: MOVE.L #i,Dr + +1000 rrr0 zzss sSSS:00:-NZ00:-----:13: OR.z s[!Areg],Dr +1000 rrr0 11ss sSSS:00:?????:?????:13: DIVU.W s[!Areg],Dr +1000 rrr1 00dd dDDD:00:XxZxC:X-Z--:13: SBCD.B d[Dreg],Dr +1000 rrr1 00dd dDDD:00:XxZxC:X-Z--:13: SBCD.B d[Areg-Apdi],Arp +1000 rrr1 zzdd dDDD:00:-NZ00:-----:13: OR.z Dr,d[!Areg,Dreg] +1000 rrr1 01dd dDDD:20:?????:?????:12: PACK d[Dreg],Dr +1000 rrr1 01dd dDDD:20:?????:?????:12: PACK d[Areg-Apdi],Arp +1000 rrr1 10dd dDDD:20:?????:?????:12: UNPK d[Dreg],Dr +1000 rrr1 10dd dDDD:20:?????:?????:12: UNPK d[Areg-Apdi],Arp +1000 rrr1 11ss sSSS:00:?????:?????:13: DIVS.W s[!Areg],Dr + +1001 rrr0 zzss sSSS:00:XNZVC:-----:13: SUB.z s,Dr +1001 rrr0 11ss sSSS:00:-----:-----:13: SUBA.W s,Ar +1001 rrr1 zzdd dDDD:00:XNZVC:X-Z--:13: SUBX.z d[Dreg],Dr +1001 rrr1 zzdd dDDD:00:XNZVC:X-Z--:13: SUBX.z d[Areg-Apdi],Arp +1001 rrr1 zzdd dDDD:00:XNZVC:-----:13: SUB.z Dr,d[!Areg,Dreg] +1001 rrr1 11ss sSSS:00:-----:-----:13: SUBA.L s,Ar + +1011 rrr0 zzss sSSS:00:-NZVC:-----:11: CMP.z s,Dr +1011 rrr0 11ss sSSS:00:-NZVC:-----:11: CMPA.W s,Ar +1011 rrr1 11ss sSSS:00:-NZVC:-----:11: CMPA.L s,Ar +1011 rrr1 zzdd dDDD:00:-NZVC:-----:11: CMPM.z d[Areg-Aipi],ArP +1011 rrr1 zzdd dDDD:00:-NZ00:-----:13: EOR.z Dr,d[!Areg] + +1100 rrr0 zzss sSSS:00:-NZ00:-----:13: AND.z s[!Areg],Dr +1100 rrr0 11ss sSSS:00:-NZ00:-----:13: MULU.W s[!Areg],Dr +1100 rrr1 00dd dDDD:00:XxZxC:X-Z--:13: ABCD.B d[Dreg],Dr +1100 rrr1 00dd dDDD:00:XxZxC:X-Z--:13: ABCD.B d[Areg-Apdi],Arp +1100 rrr1 zzdd dDDD:00:-NZ00:-----:13: AND.z Dr,d[!Areg,Dreg] +1100 rrr1 01dd dDDD:00:-----:-----:33: EXG.L Dr,d[Dreg] +1100 rrr1 01dd dDDD:00:-----:-----:33: EXG.L Ar,d[Areg] +1100 rrr1 10dd dDDD:00:-----:-----:33: EXG.L Dr,d[Areg] +1100 rrr1 11ss sSSS:00:-NZ00:-----:13: MULS.W s[!Areg],Dr + +1101 rrr0 zzss sSSS:00:XNZVC:-----:13: ADD.z s,Dr +1101 rrr0 11ss sSSS:00:-----:-----:13: ADDA.W s,Ar +1101 rrr1 zzdd dDDD:00:XNZVC:X-Z--:13: ADDX.z d[Dreg],Dr +1101 rrr1 zzdd dDDD:00:XNZVC:X-Z--:13: ADDX.z d[Areg-Apdi],Arp +1101 rrr1 zzdd dDDD:00:XNZVC:-----:13: ADD.z Dr,d[!Areg,Dreg] +1101 rrr1 11ss sSSS:00:-----:-----:13: ADDA.L s,Ar + +1110 jjjf zz00 0RRR:00:XNZVC:-----:13: ASf.z #j,DR +1110 jjjf zz00 1RRR:00:XNZ0C:-----:13: LSf.z #j,DR +1110 jjjf zz01 0RRR:00:XNZ0C:X----:13: ROXf.z #j,DR +1110 jjjf zz01 1RRR:00:-NZ0C:-----:13: ROf.z #j,DR +1110 rrrf zz10 0RRR:00:XNZVC:X----:13: ASf.z Dr,DR +1110 rrrf zz10 1RRR:00:XNZ0C:X----:13: LSf.z Dr,DR +1110 rrrf zz11 0RRR:00:XNZ0C:X----:13: ROXf.z Dr,DR +1110 rrrf zz11 1RRR:00:-NZ0C:-----:13: ROf.z Dr,DR +1110 000f 11dd dDDD:00:XNZVC:-----:13: ASfW.W d[!Dreg,Areg] +1110 001f 11dd dDDD:00:XNZ0C:-----:13: LSfW.W d[!Dreg,Areg] +1110 010f 11dd dDDD:00:XNZ0C:X----:13: ROXfW.W d[!Dreg,Areg] +1110 011f 11dd dDDD:00:-NZ0C:-----:13: ROfW.W d[!Dreg,Areg] + +1110 1000 11ss sSSS:20:?????:?????:11: BFTST #1,s[!Areg,Apdi,Aipi,Immd] +1110 1001 11ss sSSS:20:?????:?????:11: BFEXTU #1,s[!Areg,Apdi,Aipi,Immd] +1110 1010 11ss sSSS:20:?????:?????:13: BFCHG #1,s[!Areg,Apdi,Aipi,Immd,PC8r,PC16] +1110 1011 11ss sSSS:20:?????:?????:11: BFEXTS #1,s[!Areg,Apdi,Aipi,Immd] +1110 1100 11ss sSSS:20:?????:?????:13: BFCLR #1,s[!Areg,Apdi,Aipi,Immd,PC8r,PC16] +1110 1101 11ss sSSS:20:?????:?????:11: BFFFO #1,s[!Areg,Apdi,Aipi,Immd] +1110 1110 11ss sSSS:20:?????:?????:13: BFSET #1,s[!Areg,Apdi,Aipi,Immd,PC8r,PC16] +1110 1111 11ss sSSS:20:?????:?????:13: BFINS #1,s[!Areg,Apdi,Aipi,Immd,PC8r,PC16] + +% floating point co processor +1111 0010 00ss sSSS:30:?????:?????:11: FPP #1,s +1111 0010 01ss sSSS:30:?????:?????:11: FDBcc #1,s[Areg-Dreg] +1111 0010 01ss sSSS:30:?????:?????:11: FScc #1,s[!Areg,Immd,PC8r,PC16] +1111 0010 0111 1010:30:?????:?????:10: FTRAPcc #1 +1111 0010 0111 1011:30:?????:?????:10: FTRAPcc #2 +1111 0010 0111 1100:30:?????:?????:00: FTRAPcc +1111 0010 10KK KKKK:30:?????:?????:11: FBcc #K,#1 +1111 0010 11KK KKKK:30:?????:?????:11: FBcc #K,#2 +1111 0011 00ss sSSS:32:?????:?????:20: FSAVE s[!Dreg,Areg,Aipi,Immd,PC8r,PC16] +1111 0011 01ss sSSS:32:?????:?????:10: FRESTORE s[!Dreg,Areg,Apdi,Immd] + +1111 0000 00ss sSSS:40:?????:?????:11: MMUOP #1,s diff --git a/SrcShared/UAE/target.h b/SrcShared/UAE/target.h new file mode 100644 index 0000000..45c9ce2 --- /dev/null +++ b/SrcShared/UAE/target.h @@ -0,0 +1,4 @@ +#define OPTIONSFILENAME .uaerc +#define UNSUPPORTED_OPTION_p +#define UNSUPPORTED_OPTION_I + |