diff --git a/libsrc/lynx/crt0.s b/libsrc/lynx/crt0.s index db107fd94..4f210df7b 100644 --- a/libsrc/lynx/crt0.s +++ b/libsrc/lynx/crt0.s @@ -19,11 +19,12 @@ .export _exit .export __STARTUP__ : absolute = 1 ; Mark as startup - .import initlib, donelib + .import callirq, initlib, donelib .import zerobss .import callmain .import _main .import __BSS_LOAD__ + .import __INTERRUPTOR_COUNT__ .import __RAM_START__, __RAM_SIZE__ .include "zeropage.inc" @@ -132,9 +133,21 @@ sloop: ldy SuzyInitReg,x jsr zerobss +; If we have IRQ functions, set the IRQ vector +; as Lynx is a console there is not much point in releasing the IRQ + + lda #<__INTERRUPTOR_COUNT__ + beq NoIRQ1 + lda #<IRQStub + ldx #>IRQStub + sei + sta INTVECTL + stx INTVECTH + cli + ; Call module constructors - jsr initlib +NoIRQ1: jsr initlib ; Push arguments and call main @@ -149,3 +162,14 @@ _exit: jsr donelib ; Run module destructors noret: bra noret +IRQStub: + phy + phx + pha + cld + jsr callirq + pla + plx + ply + rti +