NEW PREFIX /A2OSX.BUILD AUTO 4,1 *-------------------------------------- * 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 *-------------------------------------- MSLOT .EQ $7f8 *-------------------------------------- K.IrqHAuxLC sta K.IrqHAuxLC.6+1 pla pha and #$10 BRK? bne K.IrqHAuxLC.7 stx K.IrqHAuxLC.5+1 sty K.IrqHAuxLC.4+1 lda $fe Save 2 bytes in ZP pha lda $ff pha lda MSLOT Save MSLOT pha lda RDREADAUX pha sta CLRREADAUX Make sure we can access Dev.Table lda RDWRITEAUX pha sta CLRWRITEAUX Driver may R/W in screen holes K.IrqHAuxLC.JSR jsr K.IrqH.DEV SELF MODIFIED pla Must keep Carry bpl K.IrqHAuxLC.10 sta SETWRITEAUX K.IrqHAuxLC.10 pla bpl K.IrqHAuxLC.1 sta SETREADAUX K.IrqHAuxLC.1 pla Get back MSLOT sta MSLOT sta K.IrqHAuxLC.2+2 and #$C0 eor #$C0 ....mmm...not looking link Cn.... bne K.IrqHAuxLC.3 sta $CFFF Release $C800 K.IrqHAuxLC.2 lda $ff00 SELF MODIFIED K.IrqHAuxLC.3 pla sta $ff pla sta $fe K.IrqHAuxLC.4 ldy #$ff Self Modified K.IrqHAuxLC.5 ldx #$ff Self Modified K.IrqHAuxLC.6 lda #$ff Self Modified bcs K.IrqHAuxLC.8 not handled, pass to ProDOS rti K.IrqHAuxLC.7 lda K.IrqHAuxLC.6+1 K.IrqHAuxLC.8 dec IRQ.SkipA2osX Make regular ProDOS IRQ manager skip A2osX jmp (K.IRQ.OldFFFE) *-------------------------------------- * Called by : * - Kernel K.IrqHAuxLC * - ProDOS IRQ Manager (GP) *-------------------------------------- K.IrqH.TCLOCK ldy IRQ.VBL.n0 lda $c080,y and #$20 beq K.IrqH.DEV lda $c080,y lda $c088,y bra K.IrqH.Switch *-------------------------------------- K.IrqH.VBL jsr IRQ.VBL.MSM SERVEMOUSE bcs K.IrqH.DEV Not From Mouse ldx IRQ.VBL.0n lda $778,x and #$08 IRQ was caused by VBL ? beq K.IrqH.DEV ldx IRQ.VBL.MRM+2 $Cn ldy IRQ.VBL.n0 jsr IRQ.VBL.MRM READMOUSE *-------------------------------------- K.IrqH.Switch inc IRQ.Tick bit A2osX.F A2osX.F.PMODE .EQ %01000000 bvc .8 lda IRQ.InKernel bmi .8 lda SYS.BASL0+37 eor #$A0+'S sta SYS.BASL0+37 .8 clc rts *-------------------------------------- K.IrqH.DEV >LDYAI Dev.Table >STYA $fe ldx DevMgr.Count .4 ldy #S.DEV.S lda ($fe),y and #S.DEV.S.IRQ beq .6 phx jsr K.IrqHJMP 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 *-------------------------------------- K.IRQ.OldFFFE .BS 2 *-------------------------------------- K.IrqHJMP ldx #DEVMGR.IRQ jmp ($fe) *-------------------------------------- MAN SAVE /A2OSX.SRC/SYS/KERNEL.S.IRQ LOAD /A2OSX.SRC/SYS/KERNEL.S ASM