u8 mod3hi, mod3lo; //MEM
void mod3(void) {
- u8 x = (mod3hi+mod3lo)>>8;
MOV(acc,mod3hi)
ADD(mod3lo,acc) // mod3lo = hi+lo
- flag_c = x;
CLEAR(acc)
ADDC0(acc) // mod3hi, 1bit
SWAP(acc)
#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; flag_c = (src+dst>0xff); flag_z = (dst==0);
+#define ADD(dst, src) flag_c = (src+dst)>>8; dst += src; 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);
#define CALL(addr) addr();