PR#3 PREFIX /A2OSX.BUILD LOMEM $A00 INC 1 AUTO 6 *-------------------------------------- * called directly by IRQ Vector $FFFE in AuxLC * Must keep: * A,X,Y * SETREADAUX * if we are here, Aux ZP/Stack already On * Exit with RTI * if A2osX Drivers cannot clear IRQ, * must call regular System Handler *-------------------------------------- K.IrqHandlerAuxLC sta .12+1 pla pha and #$10 BRK? bne .2 stx .11+1 sty .10+1 lda $fe pha lda $ff pha lda RDREADAUX pha sta CLRREADAUX Make sure we can access DevMgr.Table jsr K.IrqHandler pla Must keep Carry bpl .1 sta SETREADAUX .1 pla sta $ff pla sta $fe .10 ldy #$ff Self Modified .11 ldx #$ff Self Modified .12 lda #$ff Self Modified bcs .8 rti .2 pla pull P bra * lda .12+1 .8 jmp (IRQ.OldFFFE) *-------------------------------------- * Called by : * Kernel IrqHandlerAuxLC * ProDOS IRQ Manager (GP) *-------------------------------------- K.IrqHandler jmp K.IrqHandler.DEV Modified by INIT *-------------------------------------- K.IrqHandler.TCLOCK ldy K.IrqMgrVBL.n0 lda $c080,y and #$20 beq K.IrqHandler.DEV lda $c080,y lda $c088,y inc CORE.IRQTick lda SYS.BASL0+37 eor #$80 sta SYS.BASL0+37 clc rts *-------------------------------------- K.IrqHandler.VBL jsr K.IrqMgrVBL.MSM SERVEMOUSE bcs K.IrqHandler.DEV Not From Mouse ldx K.IrqMgrVBL.0n lda $778,x and #$08 IRQ was caused by VBL ? beq K.IrqHandler.DEV ldx K.IrqMgrVBL.MRM+2 $Cn ldy K.IrqMgrVBL.n0 jsr K.IrqMgrVBL.MRM READMOUSE inc CORE.IRQTick lda SYS.BASL0+37 eor #$80 sta SYS.BASL0+37 clc rts *-------------------------------------- K.IrqHandler.DEV >LDYAI DevMgr.Table >STYA $fe ldx DevMgr.Count .4 ldy #S.DEV.S lda ($fe),y and #S.DEV.S.IRQ beq .6 phx jsr K.IrqHandlerJMP plx bcc .8 CC, IRQ cleared by device .6 lda $fe clc adc #S.DEV sta $fe bcc .7 inc $ff .7 dex bne .4 sec .8 rts *-------------------------------------- IRQ.IntNum .BS 1 *-------------------------------------- IRQ.OldFFFE .BS 2 *-------------------------------------- K.IrqMgrVBL.n0 .BS 1 K.IrqMgrVBL.0n .BS 1 K.IrqMgrVBL.MSM jmp $0000 K.IrqMgrVBL.MRM jmp $0000 *-------------------------------------- K.IrqHandlerJMP ldx #DEVMGR.IRQ jmp ($fe) *-------------------------------------- MAN SAVE /A2OSX.SRC/SYS/KERNEL.S.IRQ LOAD /A2OSX.SRC/SYS/KERNEL.S ASM