From 0442bf83c237c105a36e4629e5e42db47d977030 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Mon, 6 Feb 2017 18:04:03 +0100 Subject: [PATCH] Kernel version 0.9 : ....More IRQ/VBL enhancement --- A2OSX.BOOT.po | Bin 143360 -> 143360 bytes A2OSX.DEV.po | Bin 143360 -> 143360 bytes A2OSX.SRC.po | Bin 819200 -> 819200 bytes DRV/DHGR.DRV.S.txt | 90 ++++++++++++++++++++--------------------- DRV/MOUSE.DRV.S.txt | 4 +- INC/LIBTCPIP.I.txt | 1 - LIB/LIBTCPIP.S.SKT.txt | 23 +++++++++-- SYS/KERNEL.S.EVT.txt | 51 +++++++++++++---------- SYS/KERNEL.S.GP.txt | 2 +- SYS/KERNEL.S.INIT3.txt | 44 +++++++++++--------- SYS/KERNEL.S.IRQ.txt | 18 ++++++++- 11 files changed, 136 insertions(+), 97 deletions(-) diff --git a/A2OSX.BOOT.po b/A2OSX.BOOT.po index bd4484674e3bcfefb3a3b109b4c9704f69fe3930..dc4363449e8639eda7c92fe57290241560ef431d 100644 GIT binary patch delta 6458 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 LUs-;<4Cns=MgC1~ delta 1023 zcmZ9J%TE(g6vppSfdWcFXrb*)AGD4EY#KRNKX6RFT21sBF2Gc`OhZoaksK+~L78>wnx)(I~j-E8$%Je`Jx-zV} znWl&l+Iu7xm#>$zCd7FE;3b~8x8lhR&upuf$f4l+k^o^_@JWUNEiPxQ(2AcjEVN-$ zmWA!un`NiktH#l&Ac~2_wRDe{m^-R87}-c^vaU*HNf--N#xFJI^%7Q(_p=OiVk&Ef zE_|D{pheN4R%t~+(Y3^8W~OK7OP6_w!-Q6)1CJI)9=;c&qTemqfd z4i8oQ<6YB<_Zk#!Ic7AKTL<$??ou;8uyh)?c9%+qTVo4 zjZaR-L!2aERo{!44xm&tdW9M)$Al{->?g*9HQ?wWSp{x4F$VE&(O?v7_}DQu*6kz4 r5WXoI{NWlbNRz7FL)T;&t)k#zL8gn4%E?3%0kl0RE-XDZwh_hvD~ diff --git a/A2OSX.SRC.po b/A2OSX.SRC.po index 743e544f3d77bcfce6e79dfdaba9c25ff76f256c..617c0bfc7276b883fdf275b4ffd08b1db60483d6 100644 GIT binary patch delta 16269 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 delta 16556 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 diff --git a/DRV/DHGR.DRV.S.txt b/DRV/DHGR.DRV.S.txt index 127cb55d..8f0276ac 100644 --- a/DRV/DHGR.DRV.S.txt +++ b/DRV/DHGR.DRV.S.txt @@ -1,6 +1,6 @@ PR#3 PREFIX /A2OSX.SRC -NEW +LOMEM $A00 INC 1 AUTO 6 .LIST OFF @@ -10,6 +10,7 @@ AUTO 6 *-------------------------------------- .INB /A2OSX.DEV/INC/MACROS.I .INB /A2OSX.DEV/INC/A2OSX.I + .INB /A2OSX.DEV/INC/PRODOS.I .INB /A2OSX.DEV/INC/IO.I .INB /A2OSX.DEV/INC/LIBGFX.I *-------------------------------------- @@ -127,24 +128,25 @@ MSG.DETECT >CSTR "\nApple IIe/IIc DHGR Driver.\n" *-------------------------------------- * Device Header (16 Bytes) *-------------------------------------- -DEV.HEADER cld - jmp (DRV.CS.START,x) - .HS 00 DevID - .DA #S.DEV.F.EVENT +DEV.HEADER .DA DRV.CS.START + .DA #0 >PSTR "GFX" NAME .HS 00 NAME must Be 5 bytes long - .HS 00 - .HS 00.00.00.00 *-------------------------------------- * Driver Code *-------------------------------------- -DRV.CS.START .DA OPEN - .DA GETEVENT - .DA COUT +DRV.CS.START cld + jmp (.1,x) +.1 .DA STATUS + .DA BADCALL + .DA BADCALL + .DA BADCALL + .DA BADCALL + .DA BADCALL + .DA OPEN .DA CLOSE - .DA GETINFO - .DA IRQ - .DA SELECT + .DA BADCALL + .DA BADCALL .DA SETPIXEL .DA GETPIXEL .DA HLINE @@ -155,22 +157,23 @@ DRV.CS.START .DA OPEN .DA SETCUR .DA HIDECUR .DA SHOWCUR -L.DEVINFO .DA DEVINFO +L.DEVSTAT .DA DEVSTAT L.DIV7.0 .DA DIV7.0 L.MOD7.0 .DA MOD7.0 L.Shift0.Lo .DA Shift0.lo L.Shift0.Hi .DA Shift0.hi .DA 0 end or relocation *-------------------------------------- -OPEN ldy #S.DEV.ID - lda (pDev),y - sta A2osX.SCRNDEVS+2 +BADCALL lda #MLI.ERR.BADCALL + sec + rts +*-------------------------------------- +STATUS >LDYA L.DEVSTAT + clc + rts +*-------------------------------------- +OPEN sta A2osX.SCRNDEVS+2 DEV.ID in A - lda #3 - sta A2osX.ASCREEN - - jsr SELECT - lda L.DIV7.0+1 sta DIV7.hi inc @@ -208,26 +211,7 @@ OPEN ldy #S.DEV.ID .8 clc rts *-------------------------------------- -GETEVENT lda A2osX.ASCREEN - cmp #3 is HGR1 screen active? - bne .9 no....exit - -.9 lda #0 Error = no event - sec - rts -*-------------------------------------- -COUT -IRQ sec - rts -*-------------------------------------- -CLOSE clc - rts -*-------------------------------------- -GETINFO >LDYA L.DEVINFO - clc - rts -*-------------------------------------- -SELECT sta CLRTEXT +CONTROL sta CLRTEXT sta CLRMIXED sta SETHIRES sta CLR80STORE @@ -242,9 +226,16 @@ SELECT sta CLRTEXT * sta SETDHIRES * sta CLRDHIRES * sta SETDHIRES + + lda #3 + sta A2osX.ASCREEN + clc rts *-------------------------------------- +CLOSE clc + rts +*-------------------------------------- * SETPIXEL * In : YA = Ptr to CtrlBlk : * 0 : X @@ -637,10 +628,17 @@ SB.Page .BS 1 SB.StartCol .BS 1 SB.Col .BS 1 *-------------------------------------- -DEVINFO .DA #S.DEVINFO.TYPE.GFX type of DEVINFO STRUCT -DEVINFO.MODES .DA #%10000011 XOR,16 & B/W -DEVINFO.W .DA 560 X.SIZE -DEVINFO.H .DA 192 Y.SIZE +DEVSTAT .DA #0 + .DA #0,#0,#0 size + >PSTR "Apple II Mouse" + .BS 2 + .DA #0 + .DA #0 + .DA $0900 +*-------------------------------------- +DEVSTAT.MODES .DA #%10000011 XOR,16 & B/W +DEVSTAT.W .DA 560 X.SIZE +DEVSTAT.H .DA 192 Y.SIZE .LIST ON *-------------------------------------- DRV.SIZE .EQ *-DRV.CS.START diff --git a/DRV/MOUSE.DRV.S.txt b/DRV/MOUSE.DRV.S.txt index 32ef2913..ec81c9b9 100644 --- a/DRV/MOUSE.DRV.S.txt +++ b/DRV/MOUSE.DRV.S.txt @@ -159,9 +159,9 @@ STATUS >LDYA L.DEVSTAT clc rts *-------------------------------------- -OPEN php to read IIe ROM ID bytes +OPEN php sei - + ldx DEVSLOT0n lda MOUSEMODx,x keep if VBLInt already activated by kernel and #MOUSEMODx.INTVBL diff --git a/INC/LIBTCPIP.I.txt b/INC/LIBTCPIP.I.txt index be6b474e..f5aab91f 100644 --- a/INC/LIBTCPIP.I.txt +++ b/INC/LIBTCPIP.I.txt @@ -243,7 +243,6 @@ S.TCP.DSTPORT .EQ S.IP+2 S.TCP.SEQ.NUMBER .EQ S.IP+4 S.TCP.ACK.NUMBER .EQ S.IP+8 S.TCP.DATAOFFSET .EQ S.IP+12 -S.TCP.DATAOFFSET20 .EQ $50 S.TCP.OPTIONS .EQ S.IP+13 S.TCP.OPTIONS.URG .EQ %00100000 S.TCP.OPTIONS.ACK .EQ %00010000 diff --git a/LIB/LIBTCPIP.S.SKT.txt b/LIB/LIBTCPIP.S.SKT.txt index c207bd88..6879fa43 100644 --- a/LIB/LIBTCPIP.S.SKT.txt +++ b/LIB/LIBTCPIP.S.SKT.txt @@ -163,10 +163,25 @@ SKT.SEND.UDP lda #S.IP.PROTOCOL.UDP .9 rts *-------------------------------------- -SKT.SEND.TCP - bra * - sec - rts +SKT.SEND.TCP lda #S.IP.PROTOCOL.TCP + jsr FRM.NewA + bcs .9 + + >LDAXI S.TCP-2 + jsr SKT.SetFrameOutLenAX + + >LDAXI S.TCP + jsr SKT.SetDataOutPtrAX + + jsr SKT.SetFrameOutDstIP + + jsr SKT.SetFrameOutPorts + + jsr SKT.CopyDataInToOut + + jmp FRM.SendTCP + +.9 rts *-------------------------------------- SKT.SEND.RAW ldy #S.SOCKET.RAW.PROTO lda (ZPPtrSKT),y diff --git a/SYS/KERNEL.S.EVT.txt b/SYS/KERNEL.S.EVT.txt index 3e2561dd..638e1979 100644 --- a/SYS/KERNEL.S.EVT.txt +++ b/SYS/KERNEL.S.EVT.txt @@ -1,6 +1,6 @@ PR#3 PREFIX /A2OSX.SRC -NEW +LOMEM $A00 INC 1 AUTO 6 .LIST OFF @@ -15,7 +15,17 @@ AUTO 6 EVT.GetEvents stz pEvent point to start of event list stz EvtMgr.Count reset Size - lda VBL get VLINE status + lda K.IrkMgr.VBL do we have IRQ enabled for VBL ? + beq .10 no, regular poll + + lda K.IrkMgr.VBLINT + beq EVT.GetEvents.DEV no + + dec K.IrkMgr.VBLINT + stz K.IrkMgr.VBLINT + bra .11 + +.10 lda VBL get VLINE status tax eor EvtMgr.VBLState bpl EVT.GetEvents.DEV no change,no tick @@ -23,10 +33,7 @@ EVT.GetEvents stz pEvent point to start of event list sta EvtMgr.VBLState save new bpl EVT.GetEvents.DEV Up2down transition,no tick -* sta PDLTRIG clr VBL (IIc) -* lda RDIOUDIS clr VBL (IIc) - - inc A2osX.TIMER16 +.11 inc A2osX.TIMER16 bne .1 inc A2osX.TIMER16+1 @@ -50,12 +57,12 @@ EVT.GetEvents stz pEvent point to start of event list jsr EVT.GetEvents.Add *-------------------------------------- EVT.GetEvents.DEV - >LDYAI DevMgr.Table - >STYA pDev +* >LDYAI DevMgr.Table +* >STYA pDev - stz EvtMgr.Idx +* stz EvtMgr.Idx -.1 ldy #S.DEV.F +*.1 ldy #S.DEV.F * lda (pDev),y get S.DEV.F * bit #S.DEV.F.EVENT * beq .2 EVENT enabled ? @@ -73,18 +80,18 @@ EVT.GetEvents.DEV * bcs .8 Event Q is full, exit now with CC -.2 lda pDev - clc - adc #S.DEV - sta pDev - bcc .3 - inc pDev+1 - -.3 lda EvtMgr.Idx - inc EvtMgr.Idx - cmp DevMgr.Count - bne .1 - +*.2 lda pDev +* clc +* adc #S.DEV +* sta pDev +* bcc .3 +* inc pDev+1 +* +*.3 lda EvtMgr.Idx +* inc EvtMgr.Idx +* cmp DevMgr.Count +* bne .1 + sec lda EvtMgr.Count if 0, exit with CS (from cmp), and A=0 "no event" beq .9 diff --git a/SYS/KERNEL.S.GP.txt b/SYS/KERNEL.S.GP.txt index eb714e4d..077e23bf 100644 --- a/SYS/KERNEL.S.GP.txt +++ b/SYS/KERNEL.S.GP.txt @@ -222,7 +222,7 @@ IrqHandler cld stx A2osX.SaveSM ldx A2osX.SaveSX txs - + jsr K.IrqHandler tsx diff --git a/SYS/KERNEL.S.INIT3.txt b/SYS/KERNEL.S.INIT3.txt index 0d3c18bb..33fd6b3b 100644 --- a/SYS/KERNEL.S.INIT3.txt +++ b/SYS/KERNEL.S.INIT3.txt @@ -143,9 +143,9 @@ DevMgr.SYS .DA DevMgr.SYS.Code * Setup AuxLC $FFFE->Kernel IRQ Handler * if irq not handled, jmp (S.IrqMgrOldFFFE) *-------------------------------------- -SETMOUSE .EQ $12 Sets mouse mode +SETMOUSE .EQ $12 Sets mouse mode +SERVEMOUSE .EQ $13 Services mouse interrupt INITMOUSE .EQ $19 Resets mouse clamps to default values,sets mouse position to 0,0 -MOUSEMODx.INTVBL .EQ %00001000 *-------------------------------------- IrqMgrInit php sei @@ -181,7 +181,7 @@ IrqMgrInit php cmp #$C8 bne .1 -.8 plp + plp clc rts @@ -190,45 +190,51 @@ IrqMgrInit php rts .4 lda ZPPtr1+1 - sta DEVSLOTCn + sta GOMOUSE.JMP+2 DEVSLOTCn + sta K.IrqMgrVBL.JMP+2 and #$0F - sta DEVSLOT0n asl asl asl asl - sta DEVSLOTn0 + sta GOMOUSE.n0+1 - ldx DEVSLOT0n - lda #MOUSEMODx.INTVBL - ldy #SETMOUSE - jsr GOMOUSE + ldy #SERVEMOUSE + lda (ZPPtr1),y + sta K.IrqMgrVBL.JMP+1 - bit RROMBNK2 Renable ROM to allow MOUSE II firmware + bit RROMBNK2 Renable ROM to allow MOUSE II firmware works properly ldy #INITMOUSE Reset jsr GOMOUSE + bcs * + + lda #8 + ldy #SETMOUSE + jsr GOMOUSE + bcs * bit RRAMWRAMBNK1 Back To LC Ram bit RRAMWRAMBNK1 - bra .8 + inc K.IrkMgr.VBL + plp + clc + rts +*-------------------------------------- GOMOUSE pha stz ZPPtr1 - ldx DEVSLOTCn + ldx GOMOUSE.JMP+2 DEVSLOTCn stx ZPPtr1+1 lda (ZPPtr1),y - sta ZPPtr1 - ldy DEVSLOTn0 + sta GOMOUSE.JMP+1 +GOMOUSE.n0 ldy #$ff pla - jmp (ZPPtr1) +GOMOUSE.JMP jmp $ffff Self Modified *-------------------------------------- DEVSIG.Offset .HS 05070B0CFB DEVSIG.Value .HS 38180120D6 -DEVSLOT0n .BS 1 -DEVSLOTn0 .BS 1 -DEVSLOTCn .BS 1 *-------------------------------------- DevMgrInit stz ZPPtr1 lda #$C1 diff --git a/SYS/KERNEL.S.IRQ.txt b/SYS/KERNEL.S.IRQ.txt index a3c6332f..614663fb 100644 --- a/SYS/KERNEL.S.IRQ.txt +++ b/SYS/KERNEL.S.IRQ.txt @@ -53,12 +53,24 @@ 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 >LDYAI DevMgr.Table - >STYA $fe +K.IrqHandler lda K.IrkMgr.VBL + beq .10 + jsr K.IrqMgrVBL.JMP + bcs .10 Not From Mouse VBL + + inc K.IrkMgr.VBLINT + clc + rts + +.10 >LDYAI DevMgr.Table + >STYA $fe + ldx DevMgr.Count .1 ldy #S.DEV.S @@ -85,6 +97,8 @@ K.IrqHandler >LDYAI DevMgr.Table .8 rts *-------------------------------------- +K.IrqMgrVBL.JMP jmp $0000 +*-------------------------------------- K.IrqHandlerJMP lda ($fe) sta .1+1 ldy #1