summaryrefslogtreecommitdiffstatshomepage
path: root/trunk/src/emu/cpu/m6502/ops4510.h
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/src/emu/cpu/m6502/ops4510.h')
-rw-r--r--trunk/src/emu/cpu/m6502/ops4510.h61
1 files changed, 61 insertions, 0 deletions
diff --git a/trunk/src/emu/cpu/m6502/ops4510.h b/trunk/src/emu/cpu/m6502/ops4510.h
new file mode 100644
index 00000000000..a8ebd215a7c
--- /dev/null
+++ b/trunk/src/emu/cpu/m6502/ops4510.h
@@ -0,0 +1,61 @@
+/*****************************************************************************
+ *
+ * ops4510.h
+ * Addressing mode and opcode macros for 4510 CPU
+ *
+ * Copyright Peter Trauner, all rights reserved.
+ * documentation preliminary databook
+ * documentation by michael steil mist@c64.org
+ * available at ftp://ftp.funet.fi/pub/cbm/c65
+ *
+ * - This source code is released as freeware for non-commercial purposes.
+ * - You are free to use and redistribute this code in modified or
+ * unmodified form, provided you list me in the credits.
+ * - If you modify this source code, you must add a notice to each modified
+ * source file that it has been changed. If you're a nice person, you
+ * will clearly mark each change too. :)
+ * - If you wish to use this for commercial purposes, please contact me at
+ * pullmoll@t-online.de
+ * - The author of this copywritten work reserves the right to change the
+ * terms of its usage and license at any time, including retroactively
+ * - This entire notice must remain in the source code.
+ *
+ *****************************************************************************/
+
+
+/* 65ce02 ********************************************************
+ * TXS Transfer index X to stack LSB
+ * no flags changed (sic!)
+ * txs tys not interruptable
+ ***************************************************************/
+#undef TXS
+#define TXS \
+ SPL = X; \
+ if (PEEK_OP() == 0x2b /*TYS*/ ) { \
+ UINT8 op = RDOP(); \
+ (*cpustate->insn[op])(cpustate); \
+ }
+
+#undef NOP
+#define NOP \
+ cpustate->interrupt_inhibit = 0;
+
+/* c65 docu says transfer of axyz to the mapper register
+ so no readback!? */
+#define MAP \
+ cpustate->interrupt_inhibit = 1; \
+ cpustate->low=cpustate->a|(cpustate->x<<8); \
+ cpustate->high=cpustate->y|(cpustate->z<<8); \
+ cpustate->mem[0]=(cpustate->low&0x1000) ? (cpustate->low&0xfff)<<8:0; \
+ cpustate->mem[1]=(cpustate->low&0x2000) ? (cpustate->low&0xfff)<<8:0; \
+ cpustate->mem[2]=(cpustate->low&0x4000) ? (cpustate->low&0xfff)<<8:0; \
+ cpustate->mem[3]=(cpustate->low&0x8000) ? (cpustate->low&0xfff)<<8:0; \
+ cpustate->mem[4]=(cpustate->high&0x1000) ? (cpustate->high&0xfff)<<8:0; \
+ cpustate->mem[5]=(cpustate->high&0x2000) ? (cpustate->high&0xfff)<<8:0; \
+ cpustate->mem[6]=(cpustate->high&0x4000) ? (cpustate->high&0xfff)<<8:0; \
+ cpustate->mem[7]=(cpustate->high&0x8000) ? (cpustate->high&0xfff)<<8:0; \
+ cpustate->icount -= 3; \
+ { \
+ UINT8 op = RDOP(); \
+ (*cpustate->insn[op])(cpustate); \
+ }