u8 i0, i1, i2; //MEM
u8 n; //MEM
u8 sample; //MEM
+u8 tmp_1; //MEM
u8 acc; //ACC
u8 notes[] = {
AND (acc, 0x1)
MOV (sample, acc)
- { u8 tmp = i2<<3 | i1>>5;//TODO
- MOV (acc, tmp)
+ MOV (acc, i2)
+ SL (acc)
+ SL (acc)
+ SL (acc)
+ XCH (tmp_1)
+ MOV (acc, i1)
+ SWAP (acc)
+ AND (acc, 0xf)
+ SR (acc)
+ OR (acc, tmp_1) // tmp_1 done.
XOR (acc, n)
CALL (g)
- } //tmp
SR (acc)
AND (acc, i2)
SR (acc)
#define CALL(addr) addr();
#define XOR(dst, src) dst ^= src; flag_z = (dst==0);
#define SUB(dst, src) flag_c = (src > dst); dst -= src; flag_z = (dst==0);
+#define XCH(dst) acc ^= dst; dst ^= acc; acc ^= dst;