Szkoda.
Zadanie: dokonać rotacji w lewo bloku "len" danych zaczynającego się we "from"; wynik umieścić w "to"
0: to+len=0 ;clear bit shifted into end of buffer (1 if bit should be set)
1: mode=0, and=$00, xor=$7f, src=xxx, dst=to ;fill buf with $7f
2: mode=1, and=$80, xor=$00, src=from, dst=to ;copy $80 to buf when source value has highest bit set
3: mode=2, and=$00, xor=$81, src=xxx, dst=to ;buffer contains shifted out bits shifted into lowest bits
4: mode=2, and=$ff, xor=$00, src=from, dst=to+1 ;add
5: mode=2, and=$ff, xor=$00, src=from, dst=to+1 ;add
Wynik operacji znajduje się w "to"+1.
"from" nie jest modyfikowany.
"to" powinien mieć rozmiar o 1 bajt większy niż "from".
Jeśli dobrze liczę VBXE będzie realizować rol pojedynczego bajtu w 7/8 cykli (czy można by prosić o diagramy dla operacji blittera tak, żeby można było sobie precyzyjnie policzyć czasochłonność blitów).
Edit: styl
Ostatnio edytowany przez mono (2014-01-30 04:04:01)
hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje