tak, jest to celowe, akumulator jeżeli procka jest wywoływana po CLI nie gra roli, a rejestry X i Y są potrzebne do procki rysującej, zarzucam przykładowy kod:
rbyte3 ; \ minus 40-32 w stronę pionu
cli
sei
lda #0
clc
adc tab2,x
sta $f2
lda ($f2),y
ora tab3,x
sta ($f2),y
dex
rb32
lda #$20
adc tab2,x
sta $f2
lda ($f2),y
ora tab3,x
sta ($f2),y
rb33
lda #$40
adc tab2,x
sta $f2
lda ($f2),y
ora tab3,x
sta ($f2),y
dex
rb34
lda #$60
adc tab2,x
sta $f2
lda ($f2),y
ora tab3,x
sta ($f2),y
rb35
cli
sei
lda #$80
adc tab2,x
sta $f2
lda ($f2),y
ora tab3,x
sta ($f2),y
rb36
lda #$a0
adc tab2,x
sta $f2
lda ($f2),y
ora tab3,x
sta ($f2),y
dex
rb37
lda #$c0
adc tab2,x
sta $f2
lda ($f2),y
ora tab3,x
sta ($f2),y
rb38
lda #$e0
adc tab2,x
sta $f2
lda ($f2),y
ora tab3,x
sta ($f2),y
rbyte3loop
inc $f3
dec $f5
bne rbyte3
sei
rts
i procka IRQ:
irq2r lda #0 ; byte1,byte2 dla byte3,byte4-7 reversed
sta $d20e
dex
lda #1
sta $d20e
sta $d209
rti
edit: być może błąd jest spowodowany wywołaniem przerwania poza procką rysującą, wtedy rejestry mogą się mieszać