Finalmente!!!!!!!!!! Dopo ore e ore di esperimenti sono riuscito a creare la mia prima routine stabile!! Per ora ho provato solo con il polling su d012 e d011 ma penso che con l'IRQ cambiera' poco (giusto un conteggio diverso sul primo delay, cioe' la sequenza di NOP).
Ora debbo solo: eliminare quei NOP all'inizio (carta e matita mi daranno una mano
, creare un loop per generare la delaytablee gestire un po' meglio la colortable (magari evitando di sprecare n-mila byte per una colortable che si ripete ogni 8 byte).
Pero' anche se brutto funziona!
processor 6502
org $0800
dc.b $00, $0c, $08, $0a
dc.b $00
dc.b $9e, $20, "2304"
dc.w $00
dc.w $00
org $0900
sei
main
lda #$fe
sta $d020
lda #$f6
sta $d021
lda #$32
wait_032
cmp $d012
bne wait_032
ldx $d011
bmi wait_032
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
ldx #$00
draw_again
ldy delay,x
lda color,x
inx
sta $d020
sta $d021
wait
dey
bne wait
cpx #color_end-color
bne draw_again
nop
nop
jmp main
rts
delay
dc.b 1,8,8,8,8,8,8,8
dc.b 1,8,8,8,8,8,8,8
dc.b 1,8,8,8,8,8,8,8
dc.b 1,8,8,8,8,8,8,8
dc.b 1,8,8,8,8,8,8,8
dc.b 1,8,8,8,8,8,8,8
dc.b 1,8,8,8,8,8,8,8
dc.b 1,8,8,8,8,8,8,8
dc.b 1,8,8,8,8,8,8,8
dc.b 1,8,8,8,8,8,8,8
dc.b 1,8,8,8,8,8,8,8
dc.b 1,8,8,8,8,8,8,8
dc.b 1,8,8,8,8,8,8,8
dc.b 1,8,8,8,8,8,8,8
dc.b 1,8,8,8,8,8,8,8
dc.b 1,8,8,8,8,8,8,8
dc.b 1,8,8,8,8,8,8,8
dc.b 1,8,8,8,8,8,8,8
dc.b 1,8,8,8,8,8,8,8
dc.b 1,8,8,8,8,8,8,8
dc.b 1,8,8,8,8,8,8,8
dc.b 1,8,8,8,8,8,8,8
dc.b 1,8,8,8,8,8,8,8
dc.b 1,8,8,8,8,8,8,8
delay_end
color dc.b 0,1,2,3,4,5,6,7
dc.b 0,1,2,3,4,5,6,7
dc.b 0,1,2,3,4,5,6,7
dc.b 0,1,2,3,4,5,6,7
dc.b 0,1,2,3,4,5,6,7
dc.b 0,1,2,3,4,5,6,7
dc.b 0,1,2,3,4,5,6,7
dc.b 0,1,2,3,4,5,6,7
dc.b 0,1,2,3,4,5,6,7
dc.b 0,1,2,3,4,5,6,7
dc.b 0,1,2,3,4,5,6,7
dc.b 0,1,2,3,4,5,6,7
dc.b 0,1,2,3,4,5,6,7
dc.b 0,1,2,3,4,5,6,7
dc.b 0,1,2,3,4,5,6,7
dc.b 0,1,2,3,4,5,6,7
color_end
rts