new version
authorTobias Girstmair <tobi@isticktoit.net>
Thu, 4 Mar 2021 01:14:32 +0000 (02:14 +0100)
committerTobias Girstmair <tobi@isticktoit.net>
Thu, 4 Mar 2021 01:14:32 +0000 (02:14 +0100)
bsv.c
fakeasm.h

diff --git a/bsv.c b/bsv.c
index 9a3c60841667b60a23f5388f750b07a851ad17e6..715cdd5661753befcecfdb8e39ad9058b4ca5157 100644 (file)
--- a/bsv.c
+++ b/bsv.c
@@ -83,8 +83,8 @@ void main(void){
 
                putchar(sample<<4);
 
-               i0++;
-               i1 += !i0;
-               i2 += !i1 && !i0;
+               INC     (i0)
+               i1 += !i0; // ADDC i1
+               i2 += !i1 && !i0; // ADDC i2
        }
 }
index 946be8a420ed22d5ef07ea741f4c804ab7eb8324..a42a3735fd31f36418adc92a8dff26d05fc8c3e0 100644 (file)
--- 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);
Imprint / Impressum