diff --git a/A2OSX.BOOT.po b/A2OSX.BOOT.po index bd448467..dc436344 100644 Binary files a/A2OSX.BOOT.po and b/A2OSX.BOOT.po differ diff --git a/A2OSX.DEV.po b/A2OSX.DEV.po index 2c4ace7a..cd954066 100644 Binary files a/A2OSX.DEV.po and b/A2OSX.DEV.po differ diff --git a/A2OSX.SRC.po b/A2OSX.SRC.po index 743e544f..617c0bfc 100644 Binary files a/A2OSX.SRC.po and b/A2OSX.SRC.po differ 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