]> git.sur5r.net Git - cc65/commitdiff
irq.s added
authorjede <jede@oric.org>
Mon, 16 Oct 2017 15:34:32 +0000 (17:34 +0200)
committerjede <jede@oric.org>
Mon, 16 Oct 2017 15:34:32 +0000 (17:34 +0200)
libsrc/telestrat/irq.s [new file with mode: 0644]

diff --git a/libsrc/telestrat/irq.s b/libsrc/telestrat/irq.s
new file mode 100644 (file)
index 0000000..9027f26
--- /dev/null
@@ -0,0 +1,59 @@
+;
+; IRQ handling (Oric version)
+;
+
+        .export         initirq, doneirq
+        .import         callirq
+
+        .include        "telestrat.inc"
+
+; ------------------------------------------------------------------------
+
+.segment        "ONCE"
+
+initirq:
+        lda     IRQVec
+        ldx     IRQVec+1
+        sta     IRQInd+1
+        stx     IRQInd+2
+        lda     #<IRQStub
+        ldx     #>IRQStub
+        jmp     setvec
+
+; ------------------------------------------------------------------------
+
+.code
+
+doneirq:
+        lda     IRQInd+1
+        ldx     IRQInd+2
+setvec: sei
+        sta     IRQVec
+        stx     IRQVec+1
+        cli
+        rts
+
+; ------------------------------------------------------------------------
+
+.segment        "LOWCODE"
+
+IRQStub:
+        cld                             ; Just to be sure
+        pha
+        txa
+        pha
+        tya
+        pha
+        jsr     callirq                 ; Call the functions
+        pla
+        tay
+        pla
+        tax
+        pla
+        jmp     IRQInd                  ; Jump to the saved IRQ vector
+
+; ------------------------------------------------------------------------
+
+.data
+
+IRQInd: jmp     $0000