new version
authorTobias Girstmair <tobi@isticktoit.net>
Thu, 4 Mar 2021 21:38:26 +0000 (22:38 +0100)
committerTobias Girstmair <tobi@isticktoit.net>
Thu, 4 Mar 2021 21:38:30 +0000 (22:38 +0100)
code borrowed from attiny version

bsv.c

diff --git a/bsv.c b/bsv.c
index 23f7a5e972293bc5586a3146cb5c75a042eab88e..367610eca616fb0c52f2193a607e04d79c72c6f4 100644 (file)
--- a/bsv.c
+++ b/bsv.c
@@ -56,8 +56,21 @@ void g(void){
        SET1    (notes_ix, 3)           } // ix += 8 <=> ix |= 8
        IDXM    (acc, notes+notes_ix)
        u8 result = ((i1<<8|i0)*acc)>>8;  // keep hi byte
-       //^TODO!
-       acc = result;
+       //^TODO! https://git.gir.st/Chiptunes.git/blob/d397f89:/foo.c#l83
+       //final: https://git.gir.st/Chiptunes.git/blob/f8e0502:/foo.S#l113
+       u8 a2 = 0; // can probably be overloaded onto mul3lo/hi
+       u8 a1 = 0; // -"-
+       u8 t  = acc; // note input (as returned by idxm)
+       for (u8 loop = 0; loop < 8; loop++) {
+               if (t & 1) {
+                       /*(2) ADDC a2, i1*/     a2 += i1 + ((a1+i0)>>8);
+                       /*(1) ADD  a1, i0*/     a1 += i0;
+               }
+               /*(3) LSR t*/   t >>= 1;
+               /*(2) ROR a1*/  a1>>= 1;a1 |= a2<<7;
+               /*(1) LSR a2*/  a2>>= 1;
+       }
+       acc = a1;
 }
 void main(void){
        CLEAR   (i0)
Imprint / Impressum