DATA HOSTED WITH ♥ BY PASTEBIN.COM - DOWNLOAD RAW - SEE ORIGINAL ; asm 6502/6510 - C64 FIRST = 58 *=$C000 sei ; disabling interrupts ldy #$7f ; $7f = %01111111 sty $dc0d ; disabling CIA's interrupts sty $dd0d ; settings $DC0D and $DD0D lda $dc0d ; ... so wipe the queue lda $dd0d ; of unprocessed interrupts lda #RasterIrq ; sta $314 ; Lo-Byte stx $315 ; Hi-Byte lda newRow ; Set line of raster that triggers interrupt sta $d012 ; placing it in $d012 lda $d011 ; bit 7 of D011 + gli i bit di $D012 identifies and #$7f ; the whole raster line, infact raster line number sta $d011 ; could be > 255, so this bit must be set in ; right way according to purpose ; this time must be reset lda #$01 ; Interrupt mask setting sta $d01a ; for raster interrupt manage cli ; re-enabling interrupts rts BufPtr byte $00 newRow byte FIRST color byte $00 RasterIrq lda color and #$01 ; test if odd or even bne RI_Odd lda #$01 ; White for Even jmp RI_IncColoc RI_Odd lda #$00 ; Black for Odd RI_IncColoc inc color sta $d021 ; Set Background ; Irq pointers doesn't change lda newRow ; Load Newrow byte clc adc #$08 ; add 8 cmp #$FA ; bcc RI_SetD012 ; if not beyond last line it'OK lda #FIRST ; else set next interrupt to first text line RI_SetD012 sta newRow sta $d012 ; set next interrupt raster line asl $d019 ; "Acknowledge" the interrupt by clearing the VIC's interrupt flag. jmp $ea31 ; return to basic 8) ;