A2osX/SYS/KERNEL.S.IRQ.txt

124 lines
2.3 KiB
Plaintext
Raw Normal View History

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
*--------------------------------------
2016-09-21 15:20:37 +00:00
K.IrqHandlerAuxLC
sta K.IrqMgr.A
pla
pha
and #$10 BRK?
beq .10
2016-09-21 15:20:37 +00:00
lda K.IrqMgr.A
.82 jmp (K.IrqMgrOldFFFE)
2016-09-21 15:20:37 +00:00
.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 #$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
2016-09-21 15:20:37 +00:00
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