]>
git.gir.st - Chiptunes.git/blob - foo.c
6d864b7f37873920c41ac130664239f4fa60e607
3 typedef unsigned char u8
;
6 0x84, 0x9d, 0xb0, 0x69, 0x9d, 0x84, 0x69, 0x58,
7 0x75, 0x8c, 0xb0, 0x69, 0x8c, 0x75, 0x69, 0x58
19 u8 t
;/*==Ml*/ //r26 (Xlo)
20 u8 x
;/*==Mh*/ //r27 (Xhi)
23 /*fakestack_l*/ //r30 (Zlo)
24 /*fakestack_h*/ //r31 (Zhi)
25 #define Mh x //mod3 vars
27 //http://homepage.divms.uiowa.edu/~jones/bcd/mod.shtml
33 ADC (Mh
, zero
, carry
) //Mh only holds the carry bit
58 void mul(void) { //don't need overhead of function (inline it)
63 // start MUL -- 92 cycles :( (unrolled and skipping second bit: 76)
77 case 0x58: // 0101 1000
88 case 0x69: // 0110 1001
99 case 0x75: // 0111 0101
110 case 0x84: // 1000 0100
121 case 0x8c: // 1000 1100
132 case 0x9d: // 1001 1101
143 case 0xb0: // 1011 0000
163 // tempvars: `x` and `_`
174 /*MOV X_hi==x, data_hi
179 RCALL
mul(); //stores used value in in x
181 RET
//TODO: replace CALL/RET with IJMP?
335 putchar(acc
<<4); //TODO
338 ADC (i2
, zero
, !i0
&&!i1
)
339 ADC (i3
, zero
, !i0
&&!i1
&&!i2
)