Code: Select all
#include "vsos.h"
u_int16* t;
int main()
{
register char c;
c = *t++;
t = (u_int16 *)((u_int16)t & 0xff);
return c;
}
ERROR 0: command encoding error: Unsuitable 1. source register for alu operation
Code: Select all
.sect code,main // 16 words
.export _main
_main:
ldc 255,A0 // 255 -> 1 -> ET6
ldx (I6)+1,NULL // I6 += 1
stx A1,(I6) ; sty I0,(I6)+1
ldc _t,I0 // ET0
stx I1,(I6) ; sty I2,(I6)
// = *t++;
ldx (I0),I1/*V*/ // ET0 ==> 't'
mv I1,I2 // 't' -> ATb
ldx (I2)+1,NULL // ATb += 1
stx I2,(I0)/*V*/ // ATb ==> ET0
ldx (I1),A1/*V*/ // 't' ==> 'c'
// t = (u_int16 *)((u_int16)t & 0xff);
// THE FOLLOWING "AND" IS WRONG
and I2,A0,A0 // ATb and ET6 -> ET7
stx A0,(I0)/*V*/ ; ldy (I6),I2 // ET7 ==> ET0
// return c;
ldx (I6)-1,I1 ; add A1,NULL,A0 // 'c' returns via A0
ldy (I6),I0 ; ldx (I6)-1,A1
jr
nop