Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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 ; Interrupts now points to myroutine
- ldx #>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)
- ;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement