All pastes #926794 Raw Edit

Alternating IRQ

public text v1 · immutable
·published 2008-03-03 21:05 UTC
rendered paste body
*=$0810
	sei		; CPU mag geen IRQs meer aanroepen
	
	lda #$7f	; stop de CIA timers
	sta $dc0d
	sta $dd0d
	lda $dc0d	; trigger nog een laatste keer de CIA IRQ
	lda $dd0d
	
	lda #$01	; IRQ moet voortaan op raster reageren
	sta $d01a
	asl $d019	; trigger nog een laatste keer de raster IRQ

	ldx #<irq	; zet de IRQ vectoren op label 'irq'
	ldy #>irq

	stx $0314
	sty $0315

	lda #$80	; 't lijntje van $d012 waarop de IRQ moet worden
	sta $d012	; aangeroepen

	lda #$1b	; wat je hier ook doet, bit %10000000 van $d011
			; moet altijd 0 zijn.
	sta $d011	; dat is namelijk de 'hoge' bit van de rasterlijn.

	cli		; CPU mag weer naar IRQ springen

	jmp *		; loop

; EERSTE IRQ
irqA	asl $d019

	lda #$02	; maak border rood
	sta $d020

	ldx #<irqB	; zeg waar de 2e IRQ staat
	ldy #>irqB
	stx $0314
	sty $0315

	lda #$a0	; die moet reageren op rasterlijn #$a0
	sta $d012

	jmp $ea31	; einde IRQ


; TWEEDE IRQ
irqB	asl $d019

	lda #$00	; maak de border zwart
	sta $d020

	ldx #<irqA	; zeg waar de 1e IRQ staat
	ldy #>irqA
	stx $0314
	sty $0315

	lda #$80	; die moet reageren op rasterlijn #$80
	sta $d012

	jmp $ea31	; einde IRQ