X-Git-Url: https://git.gir.st/Chiptunes-pms150c.git/blobdiff_plain/5ebb16dcc2e047ba1a4956de7ac9ce2ac4a18947..42c6050e0f7f814e8bdfac29bd58f1de71c00b75:/fakeasm.h diff --git a/fakeasm.h b/fakeasm.h index 946be8a..a42a373 100644 --- a/fakeasm.h +++ b/fakeasm.h @@ -1,8 +1,13 @@ +int flag_z = 0; +int flag_c = 0; +//ignoring flag_ov, flag_ac #define MOV(dst, src) dst = src; -#define SL(dst) dst <<= 1; -#define SR(dst) dst >>= 1; -#define SWAP(dst) dst = (dst<<4 | dst>>4); //XXX: only for ACC! -#define AND(dst, src) dst &= src; //xxx: overloaded for acc/mem/imm -#define OR(dst, src) dst |= src; +#define SL(dst) flag_c = (dst&0x80); dst <<= 1; +#define SR(dst) flag_c = (dst&0x01); dst >>= 1; +#define SWAP(dst) dst = (dst<<4 | dst>>4); +#define AND(dst, src) dst &= src; flag_z = (dst==0); +#define OR(dst, src) dst |= src; flag_z = (dst==0); #define CLEAR(dst) dst = 0; -#define ADD(dst, src) dst += src; //xxx: overloaded for acc/mem/imm +#define ADD(dst, src) dst += src; flag_c = (src+dst>0xff); flag_z = (dst==0); +#define INC(dst) dst += 1; flag_c = flag_z = (dst==0); +#define ADDC0(dst) dst += flag_c; flag_c = flag_z = (dst==0);