Mira, el Display List Interrupt consiste básicamente son rutinas rápidas (de pocos ciclos de máquina), que se realizan mientras los chips gráficos del Atari (ANTIC y GTIA) generan la pantalla. Con ello, puedes cambiar algunos registros de hardware para cambiar los colores de la pantalla. Eso sí, tiene que estar correctamente sincronizado con los chips gráficos, de modo de generar en el momento preciso en que se inicia la línea que dibuja. Esto se logra ingresando un valor a la posición WSYNC ($D40A).
Para habilitar una DLI, esto se hace generando un display list que avise en qué línea comenzará la interrupción. Esto se hace sumando 128 ($80 en hexadecimal) a la línea anterior a la que tu quieras modificar los registros. Además, se coloca el vector de la dirección de la DLI en las posiciones $200 y $201 (512 y 513 en decimal) y un $C0 en NMIEN ($D40E).
Aquí te envío un ejemplo:
Código: Seleccionar todo
WSYNC = $D40A
COLBK = $D01A
NMIEN = $D40E
VDSLST = $200
SDLSTL = $230
COLOR4 = $2C8
* = $6000
DL
.byte $70,$70,$70,$70,$70,$70,$70,$70+$80
.byte $41
.word DL
inicio
lda #<dl
sta sdlstl
lda #>dl
sta sdlstl+1
lda #<dli
sta vdslst
lda #>dli
sta vdslst+1
lda #$c0
sta nmien
lda #$00
sta color4
loop
jmp loop
dli
pha
txa
pha
ldx #$0
dli.loop
lda tabla.colores,x
sta wsync
sta colbk
inx
cpx #16
bne dli.loop
pla
tax
pla
rti
tabla.colores
.byte 0,2,4,6,8,10,12,14,14,12,10,8,6,4,2,0
*=$2e0
.word inicio
Cualquier duda, me avisas.