summaryrefslogtreecommitdiffstatshomepage
path: root/trunk/src/emu/cpu/m6502/opsn2a03.h
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/src/emu/cpu/m6502/opsn2a03.h')
-rw-r--r--trunk/src/emu/cpu/m6502/opsn2a03.h38
1 files changed, 38 insertions, 0 deletions
diff --git a/trunk/src/emu/cpu/m6502/opsn2a03.h b/trunk/src/emu/cpu/m6502/opsn2a03.h
new file mode 100644
index 00000000000..8632168fe32
--- /dev/null
+++ b/trunk/src/emu/cpu/m6502/opsn2a03.h
@@ -0,0 +1,38 @@
+/***************************************************************
+ ***************************************************************
+ * Macros to emulate the N2A03 opcodes
+ ***************************************************************
+ ***************************************************************/
+
+
+/* N2A03 *******************************************************
+ * ADC Add with carry - no decimal mode
+ ***************************************************************/
+#define ADC_NES \
+ { \
+ int c = (P & F_C); \
+ int sum = A + tmp + c; \
+ P &= ~(F_V | F_C); \
+ if( ~(A^tmp) & (A^sum) & F_N ) \
+ P |= F_V; \
+ if( sum & 0xff00 ) \
+ P |= F_C; \
+ A = (UINT8) sum; \
+ } \
+ SET_NZ(A)
+
+/* N2A03 *******************************************************
+ * SBC Subtract with carry - no decimal mode
+ ***************************************************************/
+#define SBC_NES \
+ { \
+ int c = (P & F_C) ^ F_C; \
+ int sum = A - tmp - c; \
+ P &= ~(F_V | F_C); \
+ if( (A^tmp) & (A^sum) & F_N ) \
+ P |= F_V; \
+ if( (sum & 0xff00) == 0 ) \
+ P |= F_C; \
+ A = (UINT8) sum; \
+ } \
+ SET_NZ(A)