--- /dev/null
+;
+; 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