A2osX/SYS/KERNEL.S.IRQ.txt
2017-03-02 23:14:04 +01:00

130 lines
2.4 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
ldx K.IrqMgrVBL.0n
lda $778,x
and #$08 IRQ was caused by VBL ?
beq .10
ldx K.IrqMgrVBL.MRM+2 $Cn
ldy K.IrqMgrVBL.n0
jsr K.IrqMgrVBL.MRM READMOUSE
inc K.IrkMgr.VBLINT
lda #$80
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.0n .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