diff --git a/.Floppies/A2OSX.BOOT.po b/.Floppies/A2OSX.BOOT.po index 402a090e..9d66922e 100644 Binary files a/.Floppies/A2OSX.BOOT.po and b/.Floppies/A2OSX.BOOT.po differ diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index b22dc49a..547f5206 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/.Floppies/A2OSX.SRC.po b/.Floppies/A2OSX.SRC.po index ed567b56..425c565e 100644 Binary files a/.Floppies/A2OSX.SRC.po and b/.Floppies/A2OSX.SRC.po differ diff --git a/SYS/KERNEL.S.GP.txt b/SYS/KERNEL.S.GP.txt index 4541fbc9..06d768bc 100644 --- a/SYS/KERNEL.S.GP.txt +++ b/SYS/KERNEL.S.GP.txt @@ -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 diff --git a/SYS/KERNEL.S.INIT.txt b/SYS/KERNEL.S.INIT.txt index 7c1c6af2..a3d41231 100644 --- a/SYS/KERNEL.S.INIT.txt +++ b/SYS/KERNEL.S.INIT.txt @@ -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 diff --git a/SYS/KERNEL.S.IRQ.txt b/SYS/KERNEL.S.IRQ.txt index 83584313..eab27cc8 100644 --- a/SYS/KERNEL.S.IRQ.txt +++ b/SYS/KERNEL.S.IRQ.txt @@ -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) *-------------------------------------- diff --git a/SYS/KERNEL.S.txt b/SYS/KERNEL.S.txt index bd9473e8..9f19d8fc 100644 --- a/SYS/KERNEL.S.txt +++ b/SYS/KERNEL.S.txt @@ -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