Banale esempio per ottenere delle tonalita' nuove mixando 2 colori. La routine rimpiazza i colori nelle righe occupate dal messaggio di accensione del C64, flasha un pochino ma rende l'idea.
;---------------------------------------
; iAN CooG/HokutoForce
;---------------------------------------
* = $801
word eop
word 7102
byte $9e
byte "2061"
byte 0
eop
word 0
;---------------------------------------
sei
lda #<irq1
ldx #>irq1
sta $0314
stx $0315
lda #$01
sta $d01a
sta $d019
lda #$7f
sta $dc0d
lda $dc0d
lda #$20
sta $d012
sta $d020
sta $d021
lda #$1b
sta $d011
cli
rts
;---------------------------------------
irq1
lsr $d019
bit $24
bit $24
bit $24
bit $24
inc $d020;debug
ldx #$27
lda $02
and #$01
asl
tay
lp1 lda table,y
sta $d828,x
lda table+1,y
sta $d878,x
dex
bpl lp1
inc $02
dec $d020;debug
jmp $ea31
;---------------------------------------
table
byte #$05
byte #$04
byte #$03
byte #$02
La banda bianca indica il tempo impiegato dalla routine per essere eseguita. Srotolando il codice otteniamo un programma lungo il triplo ma la routine impiega un terzo ad essere eseguita.
;---------------------------------------
irq1
lsr $d019
bit $24
bit $24
bit $24
bit $24
inc $d020;debug
lda $02
and #$01
asl
tay
lda table,y
M SET 0
REPEAT 40
sta $d828+ M
M SET M+1
REPEND
lda table+1,y
M SET 0
REPEAT 40
sta $d878+ M
M SET M+1
REPEND
inc $02
dec $d020;debug
jmp $ea31
;---------------------------------------