blob: 8632168fe325a60818f41c33e56c4ba5afec9f3a (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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)
|