diff options
Diffstat (limited to 'trunk/src/emu/cpu/m6502/opsn2a03.h')
-rw-r--r-- | trunk/src/emu/cpu/m6502/opsn2a03.h | 38 |
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) |