diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 6cfd163e..e18d45ef 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/.Floppies/A2OSX.TEST.po b/.Floppies/A2OSX.TEST.po index cee3bb3a..c7a5ee1e 100644 Binary files a/.Floppies/A2OSX.TEST.po and b/.Floppies/A2OSX.TEST.po differ diff --git a/DRV/DHGR.DRV.S.LBUF.txt b/DRV/DHGR.DRV.S.LBUF.txt index 41aee605..79b617fc 100644 --- a/DRV/DHGR.DRV.S.LBUF.txt +++ b/DRV/DHGR.DRV.S.LBUF.txt @@ -222,20 +222,31 @@ LBUF.DrawAtY.AND.ORA lda LBUF.MASK,x get MASK bits ora LBUF.C1.MASK clear ONLY bits starting at X1 mod 7 - and (ZPBasePtr),y Clear screen at C1 + + cpx LBUF.C2 + bne .1 + + ora LBUF.C2.MASK special case : C1=C2 + and (ZPBasePtr),y + sta ZPTmpByte + + lda LBUF.DATA,x + and LBUF.C1.DATA + and LBUF.C2.DATA + ora ZPTmpByte + sta (ZPBasePtr),y update screen + rts + +.1 and (ZPBasePtr),y Clear screen at C1 sta ZPTmpByte lda LBUF.DATA,x get DATA bits - and LBUF.C1.DATA set ONLY bits starting at X1 mod 7 + and LBUF.C1.DATA set ONLY bits starting at X1 mod 7 ora ZPTmpByte ora with screen bits - sta (ZPBasePtr),y update screen - inx - cpx LBUF.C2 - beq .2 C1=C2, go setup C2 + + bra .3 - bcs .8 C1+1 > C2, we are done... - -.1 ldy COL.BANK,x +.2 ldy COL.BANK,x sta $C000,y txa lsr @@ -243,14 +254,15 @@ LBUF.DrawAtY.AND.ORA lda (ZPBasePtr),y and LBUF.MASK,x - ora LBUF.DATA,x set all bytes between C1+1 & C2-1 - sta (ZPBasePtr),y + ora LBUF.DATA,x set all bytes between C1+1 & C2-1 + +.3 sta (ZPBasePtr),y update screen inx cpx LBUF.C2 - bne .1 + bne .2 -.2 ldy COL.BANK,x + ldy COL.BANK,x sta $C000,y txa lsr @@ -262,7 +274,7 @@ LBUF.DrawAtY.AND.ORA sta ZPTmpByte lda LBUF.DATA,x get DATA bits - and LBUF.C2.DATA set ONLY bits ending at X2 mod 7 + and LBUF.C2.DATA set ONLY bits ending at X2 mod 7 ora ZPTmpByte sta (ZPBasePtr),y update screen diff --git a/DRV/DHGR.DRV.S.txt b/DRV/DHGR.DRV.S.txt index e234b935..9be1ffea 100644 --- a/DRV/DHGR.DRV.S.txt +++ b/DRV/DHGR.DRV.S.txt @@ -554,6 +554,7 @@ DRV.CS.END CONTROL.80C .DA #SETIOUDIS .DA #CLRTEXT * .DA #SETHIRES + .DA #CLR80DISP .DA #SETAN3 .DA #CLRAN3 diff --git a/INC/LIBGUI.I.txt b/INC/LIBGUI.I.txt index d559e765..fd129c46 100644 --- a/INC/LIBGUI.I.txt +++ b/INC/LIBGUI.I.txt @@ -70,14 +70,9 @@ S.OBJ.X2 .EQ 12 S.OBJ.Y2 .EQ 14 S.OBJ.W .EQ 16 S.OBJ.H .EQ 18 -S.OBJ.Parent .EQ 20 -S.OBJ.Childs .EQ 22 +S.OBJ.Childs .EQ 20 * -S.OBJ .EQ 24 -*-------------------------------------- -S.SCREEN.hDEV .EQ S.OBJ.Parent -* -S.SCREEN .EQ S.OBJ +S.OBJ .EQ 22 *-------------------------------------- S.WND.F.RESIZE .EQ %00000001 S.WND.F.MOVE .EQ %00000010 diff --git a/LIB/LIBGUI.S.CUR.txt b/LIB/LIBGUI.S.CUR.txt index 6e6eed3b..add66913 100644 --- a/LIB/LIBGUI.S.CUR.txt +++ b/LIB/LIBGUI.S.CUR.txt @@ -133,7 +133,7 @@ ShowCursor.I sta CUR.CB+S.CB.OP DrawCursor.I sta CUR.CB+S.CB.OP - >LDYA L.SCR + >LDYA L.WND.Screen jsr OBJ.Get >LDYA L.CUR.CB diff --git a/LIB/LIBGUI.S.WND.txt b/LIB/LIBGUI.S.WND.txt index b10e42a3..4bb2e287 100644 --- a/LIB/LIBGUI.S.WND.txt +++ b/LIB/LIBGUI.S.WND.txt @@ -6,59 +6,63 @@ WND.Init >PUSHBI 0 >SYSCALL2 open bcs .9 - sta SCR+S.SCREEN.hDEV + sta WND.Screen+S.OBJ.hPARENT >LDYA L.DCB.GFX >STYA IOCTL+S.IOCTL.BUFPTR lda #S.IOCTL.STATCODE.GETDCB sta IOCTL+S.IOCTL.STATCODE - >PUSHB SCR+S.SCREEN.hDEV + >PUSHB WND.Screen+S.OBJ.hPARENT >PUSHBI IOCTL.STATUS >PUSHW L.IOCTL >SYSCALL2 IOCTL + .9 rts *-------------------------------------- WND.Setup >LDYA DCB.GFX+S.DCB.GFX.W - >STYA SCR+S.OBJ.W + >STYA WND.Screen+S.OBJ.W >STYA WND.Desktop+S.OBJ.W >STYA WND.SysBar+S.OBJ.W + lda SYSFON.H clc adc #6 sta WND.SysBar+S.OBJ.H + lda DCB.GFX+S.DCB.GFX.H - sta SCR+S.OBJ.H + sta WND.Screen+S.OBJ.H sec sbc WND.SysBar+S.OBJ.H sta WND.Desktop+S.OBJ.H sta WND.SysBar+S.OBJ.X1 + lda DCB.GFX+S.DCB.GFX.H+1 sta WND.SysBar+S.OBJ.H+1 sbc #0 sta WND.Desktop+S.OBJ.H+1 sta WND.SysBar+S.OBJ.X1+1 - >LDYA L.SCR + >LDYA L.WND.Screen jsr OBJ.SetX2Y2 >LDYA L.WND.Desktop - >STYA SCR.Childs + >STYA WND.Screen.Childs jsr OBJ.SetX2Y2 >LDYA L.WND.SysBar - >STYA SCR.Childs+2 + >STYA WND.Screen.Childs+2 jsr OBJ.SetX2Y2 lda #CUR.T.ARROW sta WND.Desktop+S.WND.hCUR sta WND.SysBar+S.WND.hCUR -* sta $C057 rts *-------------------------------------- -WND.Quit lda SCR+S.SCREEN.hDEV +WND.Quit lda WND.Screen+S.OBJ.hPARENT beq .8 + pha >PUSHBI IOCTL.CLOSE >PUSHWZ @@ -73,12 +77,16 @@ WND.New >STYA ZPPtr1 >LDYAI S.WND >SYSCALL2 getmem bcs .9 + >STYA ZPWNDPtr + ldy #S.WND-1 + .1 lda (ZPPtr1),y sta (ZPWNDPtr),y dey bpl .1 + .9 rts *-------------------------------------- WND.Paint >STYA ZPPtr1 diff --git a/LIB/LIBGUI.S.txt b/LIB/LIBGUI.S.txt index 14f21fae..1b0d07a8 100644 --- a/LIB/LIBGUI.S.txt +++ b/LIB/LIBGUI.S.txt @@ -128,7 +128,7 @@ L.IOCTL .DA IOCTL L.DCB.GFX .DA DCB.GFX L.MouseClamp .DA MouseClamp L.CB.Cache .DA CB.Cache -L.SCR .DA SCR +L.WND.Screen .DA WND.Screen L.WND.Desktop .DA WND.Desktop L.WND.SysBar .DA WND.SysBar *-------------------------------------- @@ -270,14 +270,14 @@ CB.Get >STYA .1+1 GFXWrite.CB >LDYA L.CB.Cache GFXWrite.YA pha - >PUSHB SCR+S.SCREEN.hDEV + >PUSHB WND.Screen+S.OBJ.hPARENT >PUSHBI IOCTL.WRITE pla >PUSHYA >SYSCALL2 IOCTL rts *-------------------------------------- -GetScreenGC >LDYA L.SCR +GetScreenGC >LDYA L.WND.Screen rts *-------------------------------------- .INB usr/src/lib/libgui.s.bm @@ -335,10 +335,11 @@ MouseClamp .BS 8 CB.Cache .BS S.CB OBJ.Cache .BS S.OBJ *-------------------------------------- -SCR .DA #S.OBJ.T.SCREEN - .BS S.SCREEN-1 +WND.Screen .DA #S.OBJ.T.SCREEN + .BS S.WND-1 *-------------------------------------- -SCR.Childs .BS 2 WND.Desktop +WND.Screen.Childs + .BS 2 WND.Desktop .BS 2 WND.SysBar .DA 0 *-------------------------------------- diff --git a/SYS/KERNEL.S.MEM.txt b/SYS/KERNEL.S.MEM.txt index bfe41def..27002175 100644 --- a/SYS/KERNEL.S.MEM.txt +++ b/SYS/KERNEL.S.MEM.txt @@ -445,9 +445,9 @@ MEM.GetMemByID sta ZPMemMgrSPtr sta ZPMemMgrSPtr+1 rts *-------------------------------------- -Mem.SetOwnerPS0 lda #0 - .HS 2C BIT ABS Mem.SetOwner lda CORE.LastPSID + .HS 2C BIT ABS +Mem.SetOwnerPS0 lda #0 ldy #S.MEM.OWNERPID sta (ZPMemMgrSPtr),y rts