From b6f712ef58631992337e99dc032e162366f0264f Mon Sep 17 00:00:00 2001 From: Christian Groessler Date: Tue, 27 May 2014 01:47:37 +0200 Subject: [PATCH] not a dummy implementation anymore... --- libsrc/atari5200/irq.s | 47 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/libsrc/atari5200/irq.s b/libsrc/atari5200/irq.s index 2acab1826..720113f82 100644 --- a/libsrc/atari5200/irq.s +++ b/libsrc/atari5200/irq.s @@ -7,8 +7,53 @@ .include "atari5200.inc" -; Dummy versions for now +; ------------------------------------------------------------------------ + +.segment "INIT" initirq: + lda VVBLKD + ldx VVBLKD+1 + sta IRQInd+1 + stx IRQInd+2 + ldy #IRQStub + jmp SETVBV + +; ------------------------------------------------------------------------ + +.code + doneirq: + ldy IRQInd+1 + ldx IRQInd+2 + ;jmp SETVBV + ; fall thru + +; ------------------------------------------------------------------------ +; Set deferred vertical blank interrupt +; logic copied from Atari computer ROM + +SETVBV: txa + ldx #5 + sta WSYNC ; waste 20 CPU cycles +@1: dex ; to allow VBLANK to happen + bne @1 ; if this is line "7C" + sta VVBLKD+1 + sty VVBLKD rts + +; ------------------------------------------------------------------------ + +.segment "LOWCODE" + +IRQStub: + cld ; Just to be sure + jsr callirq ; Call the functions + jmp IRQInd ; Jump to the saved IRQ vector + +; ------------------------------------------------------------------------ + +.data + +IRQInd: jmp $0000 -- 2.39.5