it's memory consuming, and takes up your variables A-F, but for BASIC it's fast. your sprite data is in Str1.
10->A:11->B:12->C
13->D:14->E:15->F
For(Z,0,15
8fPart(Z/2->G
iPart(Z/2->H
expr(sub(Str1,Z+1,1
If Ans>7
Pxl-Change(H,G
If (Ans>3 and Ans<8) or Ans>11
Pxl-Change(H,G=1
If (Ans>1 and Ans<4) or (Ans>9 and Ans<12) or Ans=6 or Ans=7 or Ans>13
Pxl-Change(H,G+2
If fPart(Ans/2
Pxl-Change(H,G+3
End
to make it faster, you can change all the If's to If-Then-End's.
i also made a routine for octal data, where your sprite size is 9x8, since the data fitting into a byte isn't very important in basic. i think the following would work:
For(Z,0,23
int(9fPart(Z/3->A
iPart(Z/3->B
expr(sub(Str1,Z+1,1
If Ans>3
Pxl-Change(B,A
If Ans=2 or Ans=3 or Ans=6 or Ans=7
Pxl-Change(B,A+1
If fPart(Ans/2
Pxl-Change(B,A+2
End
but that code gives me a domain error on pxl-change, even when B and A are definitely in-bounds..