mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-16 18:30:26 +00:00
Kernel 0.9.1 : KERNEL, bugfix in VBL & IRQ handler
This commit is contained in:
parent
9d5ad1ee19
commit
4358169b40
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -222,30 +222,111 @@ GO.EXIT.JMP jmp $FFFF Self Modified
|
||||
* must exit with RTS
|
||||
* - CC if IRQ cleared, CS if NOT
|
||||
*--------------------------------------
|
||||
GP.IrqH cld
|
||||
lda RDALTZP
|
||||
sta .2+1
|
||||
*GP.IrqH cld
|
||||
* lda RDALTZP
|
||||
* sta .2+1
|
||||
*
|
||||
* bmi .1 we are already in AuxZP/LC
|
||||
|
||||
bmi .1 we are already in AuxZP/LC
|
||||
* sta SETALTZP coming from MainLC, switch to aux
|
||||
* tsx
|
||||
* stx A2osX.SaveSM
|
||||
* ldx A2osX.SaveSX
|
||||
* txs
|
||||
|
||||
*.1 jsr K.IrqH
|
||||
|
||||
*.2 lda #$ff get back ZP status when called
|
||||
* bmi .3 we were coming from AuxZP/LC
|
||||
|
||||
sta SETALTZP coming from MainLC, switch to aux
|
||||
* tsx go back to Main
|
||||
* stx A2osX.SaveSX
|
||||
* ldx A2osX.SaveSM
|
||||
* txs
|
||||
* sta CLRALTZP
|
||||
|
||||
*.3 rts
|
||||
*--------------------------------------
|
||||
GP.IrqH.TCLOCK ldy IRQ.VBL.n0
|
||||
|
||||
lda $c080,y
|
||||
and #$20
|
||||
beq GP.IrqH.DEV
|
||||
|
||||
lda $c080,y
|
||||
lda $c088,y
|
||||
|
||||
inc CORE.IRQTick
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
GP.IrqH.VBL jsr IRQ.VBL.MSM SERVEMOUSE
|
||||
bcs GP.IrqH.DEV Not From Mouse
|
||||
|
||||
ldx IRQ.VBL.0n
|
||||
lda MOUSESTSx,x
|
||||
and #MOUSESTSx.INTVBL IRQ was caused by VBL ?
|
||||
beq GP.IrqH.DEV
|
||||
|
||||
ldx IRQ.VBL.MRM+2 $Cn
|
||||
ldy IRQ.VBL.n0
|
||||
jsr IRQ.VBL.MRM READMOUSE
|
||||
|
||||
inc CORE.IRQTick
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
GP.IrqH.DEV sta SETALTZP switch to aux LC
|
||||
tsx
|
||||
stx A2osX.SaveSM
|
||||
ldx A2osX.SaveSX
|
||||
txs
|
||||
|
||||
.1 jsr K.IrqH
|
||||
|
||||
.2 lda #$ff get back ZP status when called
|
||||
bmi .3 we were coming from AuxZP/LC
|
||||
|
||||
tsx go back to Main
|
||||
>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 GP.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 tsx go back to Main
|
||||
stx A2osX.SaveSX
|
||||
ldx A2osX.SaveSM
|
||||
txs
|
||||
sta CLRALTZP
|
||||
|
||||
.3 rts
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
GP.IrqHJMP ldx #DEVMGR.IRQ
|
||||
jmp ($fe)
|
||||
*--------------------------------------
|
||||
IRQ.IntNum .BS 1
|
||||
IRQ.VBL.n0 .BS 1
|
||||
IRQ.VBL.0n .BS 1
|
||||
IRQ.VBL.MSM jmp $0000
|
||||
IRQ.VBL.MRM jmp $0000
|
||||
*--------------------------------------
|
||||
*GO.Reset jsr GO.A2osX
|
||||
* jmp CORE.Run
|
||||
|
@ -566,45 +566,32 @@ DevMgr.SYS cld
|
||||
*--------------------------------------
|
||||
IrqMgrInit >LDYAI MSG.IRQ
|
||||
>SYSCALL PrintF.YA
|
||||
php
|
||||
sei
|
||||
>LDYA $FFFE
|
||||
>STYA IRQ.OldFFFE
|
||||
>LDYAI K.IrqHAuxLC
|
||||
>STYA $FFFE
|
||||
* php
|
||||
* sei
|
||||
* >LDYA $FFFE
|
||||
* >STYA IRQ.OldFFFE
|
||||
* >LDYAI K.IrqHAuxLC
|
||||
* >STYA $FFFE
|
||||
|
||||
>LDYAI GP.IrqH
|
||||
>STYA K.MLI.PARAMS+2
|
||||
>MLICALL MLIALLOCIRQ
|
||||
bcs .9
|
||||
* >LDYAI GP.IrqH
|
||||
* >STYA K.MLI.PARAMS+2
|
||||
* >MLICALL MLIALLOCIRQ
|
||||
* bcs .9
|
||||
|
||||
lda K.MLI.PARAMS+1
|
||||
sta IRQ.INTNUM
|
||||
* lda K.MLI.PARAMS+1
|
||||
* sta IRQ.INTNUM
|
||||
|
||||
plp
|
||||
* plp
|
||||
|
||||
jsr IrqMgrInit.Mouse
|
||||
jsr IrqMgrInit.TClock
|
||||
bcs .1
|
||||
|
||||
lda #"V"
|
||||
sta SYS.BASL0+38
|
||||
|
||||
>LDYAI K.IrqH.VBL
|
||||
>STYA K.IrqH+1
|
||||
|
||||
>LDYAI MSG.IRQ.VBL
|
||||
>SYSCALL PrintF.YA
|
||||
clc
|
||||
rts
|
||||
|
||||
.1 jsr IrqMgrInit.TClock
|
||||
bcs .8
|
||||
|
||||
lda #"C"
|
||||
sta SYS.BASL0+38
|
||||
|
||||
>LDYAI K.IrqH.TClock
|
||||
>STYA K.IrqH+1
|
||||
>LDYAI GP.IrqH.TClock
|
||||
jsr IrqMgrInit.MLI
|
||||
bcs .9
|
||||
|
||||
>LDYAI MSG.IRQ.CLOCK
|
||||
>SYSCALL PrintF.YA
|
||||
@ -612,6 +599,22 @@ IrqMgrInit >LDYAI MSG.IRQ
|
||||
clc
|
||||
rts
|
||||
|
||||
.1 jsr IrqMgrInit.Mouse
|
||||
bcs .8
|
||||
|
||||
lda #"V"
|
||||
sta SYS.BASL0+38
|
||||
|
||||
>LDYAI GP.IrqH.VBL
|
||||
jsr IrqMgrInit.MLI
|
||||
bcs .9
|
||||
|
||||
>LDYAI MSG.IRQ.VBL
|
||||
>SYSCALL PrintF.YA
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.8 jsr IrqMgrInit.HZ2Tick
|
||||
|
||||
lda #"P"
|
||||
@ -623,105 +626,25 @@ IrqMgrInit >LDYAI MSG.IRQ
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 plp
|
||||
sec
|
||||
.9 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
IrqMgrInit.HZ2Tick
|
||||
ldx #50
|
||||
lda A2osX.HZ
|
||||
sta CORE.TickPer10t
|
||||
sta CORE.Tick10t
|
||||
cmp #5
|
||||
beq .1
|
||||
ldx #60
|
||||
|
||||
.1 stx CORE.TickPerSec
|
||||
stx CORE.TickSec
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
IrqMgrInit.Mouse
|
||||
stz ZPPtr1 Try finding a Mouse Card...
|
||||
lda #$C1
|
||||
sta ZPPtr1+1
|
||||
|
||||
.1 ldx #Mouse.SIG-Mouse.OFS-1
|
||||
|
||||
.2 ldy Mouse.OFS,x
|
||||
lda (ZPPtr1),y
|
||||
cmp Mouse.SIG,x
|
||||
bne .3
|
||||
dex
|
||||
bpl .2
|
||||
bra .4
|
||||
|
||||
.3 inc ZPPtr1+1 no match, try next slot....
|
||||
lda ZPPtr1+1
|
||||
cmp #$C8
|
||||
bne .1
|
||||
|
||||
sec
|
||||
rts
|
||||
|
||||
.4 lda ZPPtr1+1
|
||||
|
||||
sta IRQ.VBL.MSM+2
|
||||
sta IRQ.VBL.MRM+2
|
||||
|
||||
and #$0f
|
||||
sta IRQ.VBL.0n
|
||||
asl
|
||||
asl
|
||||
asl
|
||||
asl
|
||||
|
||||
sta IRQ.VBL.n0
|
||||
|
||||
ldy #$13 SERVEMOUSE
|
||||
lda (ZPPtr1),y
|
||||
sta IRQ.VBL.MSM+1
|
||||
|
||||
ldy #$14 READMOUSE
|
||||
lda (ZPPtr1),y
|
||||
sta IRQ.VBL.MRM+1
|
||||
|
||||
ldy #$12 SETMOUSE
|
||||
|
||||
lda (ZPPtr1),y
|
||||
sta .7+1
|
||||
|
||||
lda #9 #MOUSEMODx.INTVBL+MOUSEMODx.ACTIVE
|
||||
|
||||
ldx ZPPtr1+1 DEVSLOTCn
|
||||
stx .7+2
|
||||
ldy IRQ.VBL.n0
|
||||
IrqMgrInit.MLI >STYA K.MLI.PARAMS+2
|
||||
|
||||
php
|
||||
sei
|
||||
|
||||
bit RROMBNK2 Renable ROM to allow MOUSE II firmware works properly
|
||||
|
||||
.7 jsr $ffff self Modified, CALL SETMOUSE
|
||||
>MLICALL MLIALLOCIRQ
|
||||
bcs .9
|
||||
|
||||
bit RRAMWRAMBNK1 Back To LC Ram
|
||||
bit RRAMWRAMBNK1
|
||||
|
||||
jsr IrqMgrInit.HZ2Tick
|
||||
|
||||
dec CORE.IRQMode
|
||||
|
||||
lda K.MLI.PARAMS+1
|
||||
sta IRQ.INTNUM
|
||||
plp
|
||||
clc
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 plp
|
||||
sec
|
||||
rts
|
||||
|
||||
Mouse.OFS .HS 05070B0CFB
|
||||
Mouse.SIG .HS 38180120D6
|
||||
*--------------------------------------
|
||||
IrqMgrInit.TClock
|
||||
stz ZPPtr1 Try finding a Mouse Card...
|
||||
@ -781,6 +704,106 @@ IrqMgrInit.TClock
|
||||
TClock.SIG .HS 0878282c58ff700538b00118b8087848
|
||||
.HS 8a489848adffcf201ac86868ba8df807
|
||||
*--------------------------------------
|
||||
IrqMgrInit.Mouse
|
||||
stz ZPPtr1 Try finding a Mouse Card...
|
||||
lda #$C1
|
||||
sta ZPPtr1+1
|
||||
|
||||
.1 ldx #Mouse.SIG-Mouse.OFS-1
|
||||
|
||||
.2 ldy Mouse.OFS,x
|
||||
lda (ZPPtr1),y
|
||||
cmp Mouse.SIG,x
|
||||
bne .3
|
||||
dex
|
||||
bpl .2
|
||||
bra .4
|
||||
|
||||
.3 inc ZPPtr1+1 no match, try next slot....
|
||||
lda ZPPtr1+1
|
||||
cmp #$C8
|
||||
bne .1
|
||||
|
||||
sec
|
||||
rts
|
||||
|
||||
.4 lda ZPPtr1+1
|
||||
|
||||
sta .11+2
|
||||
sta IRQ.VBL.MSM+2
|
||||
sta IRQ.VBL.MRM+2
|
||||
|
||||
and #$0f
|
||||
sta IRQ.VBL.0n
|
||||
asl
|
||||
asl
|
||||
asl
|
||||
asl
|
||||
|
||||
sta IRQ.VBL.n0
|
||||
|
||||
php
|
||||
sei
|
||||
|
||||
bit RROMBNK2 Renable ROM to allow MOUSE II firmware works properly
|
||||
|
||||
ldy #INITMOUSE
|
||||
jsr .10
|
||||
|
||||
ldy #SETMOUSE
|
||||
lda #MOUSEMODx.INTVBL+MOUSEMODx.ACTIVE
|
||||
jsr .10
|
||||
|
||||
bit RRAMWRAMBNK1 Back To LC Ram
|
||||
bit RRAMWRAMBNK1
|
||||
|
||||
ldy #SERVEMOUSE
|
||||
lda (ZPPtr1),y
|
||||
sta IRQ.VBL.MSM+1
|
||||
|
||||
ldy #READMOUSE
|
||||
lda (ZPPtr1),y
|
||||
sta IRQ.VBL.MRM+1
|
||||
|
||||
jsr IrqMgrInit.HZ2Tick
|
||||
|
||||
dec CORE.IRQMode
|
||||
|
||||
plp
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 plp
|
||||
sec
|
||||
rts
|
||||
|
||||
.10 pha
|
||||
lda (ZPPtr1),y
|
||||
sta .11+1
|
||||
pla
|
||||
|
||||
ldx .11+2 Cn
|
||||
ldy IRQ.VBL.n0
|
||||
|
||||
.11 jmp $ffff SELF MODIFIED
|
||||
|
||||
Mouse.OFS .HS 05070B0CFB
|
||||
Mouse.SIG .HS 38180120D6
|
||||
*--------------------------------------
|
||||
IrqMgrInit.HZ2Tick
|
||||
ldx #50
|
||||
lda A2osX.HZ
|
||||
sta CORE.TickPer10t
|
||||
sta CORE.Tick10t
|
||||
cmp #5
|
||||
beq .1
|
||||
ldx #60
|
||||
|
||||
.1 stx CORE.TickPerSec
|
||||
stx CORE.TickSec
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
DevMgrInit >LDYAI MSG.DEV
|
||||
>SYSCALL PrintF.YA
|
||||
|
||||
|
@ -34,9 +34,17 @@ K.IrqHAuxLC sta .6+1
|
||||
pha
|
||||
sta CLRREADAUX Make sure we can access Dev.Table
|
||||
|
||||
lda RDWRITEAUX
|
||||
pha
|
||||
sta CLRWRITEAUX Driver may R/W in screen holes
|
||||
|
||||
jsr K.IrqH
|
||||
|
||||
pla Must keep Carry
|
||||
bpl .10
|
||||
sta SETWRITEAUX
|
||||
|
||||
.10 pla
|
||||
bpl .1
|
||||
sta SETREADAUX
|
||||
|
||||
@ -62,8 +70,7 @@ K.IrqHAuxLC sta .6+1
|
||||
bcs .8
|
||||
rti
|
||||
|
||||
.7 pla pull P
|
||||
bra *
|
||||
.7 lda .6+1
|
||||
|
||||
.8 jmp (IRQ.OldFFFE)
|
||||
*--------------------------------------
|
||||
|
@ -12,6 +12,7 @@ AUTO 4,1
|
||||
.INB INC/IO.I
|
||||
.INB INC/PRODOS.I
|
||||
.INB INC/MLI.ERR.I
|
||||
.INB INC/XY.MOUSE.I
|
||||
.INB INC/GUI.I
|
||||
|
||||
.INB /A2OSX.SRC/SYS/KERNEL.S.INIT
|
||||
@ -49,7 +50,7 @@ A2osX.D2 .PH $D000
|
||||
.EP
|
||||
A2osX.E0 .PH $E000
|
||||
.INB /A2OSX.SRC/SYS/KERNEL.S.JMP
|
||||
.INB /A2OSX.SRC/SYS/KERNEL.S.IRQ
|
||||
* .INB /A2OSX.SRC/SYS/KERNEL.S.IRQ
|
||||
.INB /A2OSX.SRC/SYS/KERNEL.S.MEM
|
||||
DevMgr.FreeMem .EQ *
|
||||
.EP
|
||||
|
Loading…
x
Reference in New Issue
Block a user