PR#3 PREFIX /A2OSX.SRC LOMEM $900 INC 1 AUTO 6 .LIST OFF *-------------------------------------- * 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 K.IrqMgr.A pla pha and #$10 BRK? beq .10 lda K.IrqMgr.A .82 jmp (K.IrqMgrOldFFFE) .10 stx K.IrqMgr.X sty K.IrqMgr.Y 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 .81 sta SETREADAUX .81 pla sta $ff pla sta $fe ldy K.IrqMgr.Y ldx K.IrqMgr.X lda K.IrqMgr.A bcs .82 rti *-------------------------------------- K.IrqMgrOldFFFE .BS 2 K.IrqMgr.A .BS 1 K.IrqMgr.X .BS 1 K.IrqMgr.Y .BS 1 K.IrkMgr.VBL .BS 1 K.IrkMgr.VBLINT .BS 1 *-------------------------------------- * Called by ProDOS IRQ Manager (GP) *-------------------------------------- K.IrqHandler lda K.IrkMgr.VBL beq .10 0, totally disabled.... jsr K.IrqMgrVBL.MSM SERVEMOUSE bcs .10 Not From Mouse VBL ldx K.IrqMgrVBL.MRM+2 $Cn ldy K.IrqMgrVBL.n0 jsr K.IrqMgrVBL.MRM READMOUSE inc K.IrkMgr.VBLINT lda #$ff sta K.IrkMgr.VBL Confirm VBL signal valid for EvtMgr clc rts .10 >LDYAI DevMgr.Table >STYA $fe ldx DevMgr.Count .1 ldy #S.DEV.S lda ($fe),y and #S.DEV.S.IRQ beq .2 phx jsr K.IrqHandlerJMP plx bcc .8 CC, IRQ cleared by device .2 lda $fe clc adc #S.DEV sta $fe bcc .3 inc $ff .3 dex bne .1 sec .8 rts *-------------------------------------- K.IrqMgrVBL.n0 .BS 1 K.IrqMgrVBL.MSM jmp $0000 K.IrqMgrVBL.MRM jmp $0000 *-------------------------------------- K.IrqHandlerJMP lda ($fe) sta .1+1 ldy #1 lda ($fe),y sta .1+2 ldx #DEVMGR.IRQ .1 jmp $ffff *-------------------------------------- MAN SAVE SYS/KERNEL.S.IRQ LOAD SYS/KERNEL.S ASM