From 7b742647202f32447bd6617f194b14a0bd29325f Mon Sep 17 00:00:00 2001 From: jede Date: Mon, 16 Oct 2017 17:34:32 +0200 Subject: [PATCH] irq.s added --- libsrc/telestrat/irq.s | 59 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 libsrc/telestrat/irq.s diff --git a/libsrc/telestrat/irq.s b/libsrc/telestrat/irq.s new file mode 100644 index 000000000..9027f263e --- /dev/null +++ b/libsrc/telestrat/irq.s @@ -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 + 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 -- 2.39.5