]> git.sur5r.net Git - cc65/commitdiff
not a dummy implementation anymore...
authorChristian Groessler <chris@groessler.org>
Mon, 26 May 2014 23:47:37 +0000 (01:47 +0200)
committerChristian Groessler <chris@groessler.org>
Mon, 26 May 2014 23:47:37 +0000 (01:47 +0200)
libsrc/atari5200/irq.s

index 2acab1826e41dd1b1b7206b44c362bfde2baf85b..720113f82f2a8474e0448c114e9912f252f42df4 100644 (file)
@@ -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
+        ldx     #>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