diff --git a/.Floppies/A2OSX.BLANK.woz b/.Floppies/A2OSX.BLANK.woz index fd9c3447..d282e326 100644 Binary files a/.Floppies/A2OSX.BLANK.woz and b/.Floppies/A2OSX.BLANK.woz differ diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 58e1ca3e..3a82770f 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 f9699f05..fd82cef3 100644 Binary files a/.Floppies/A2OSX.TEST.po and b/.Floppies/A2OSX.TEST.po differ diff --git a/INC/LIBGUI.I.txt b/INC/LIBGUI.I.txt index eb44a130..4bf60263 100644 --- a/INC/LIBGUI.I.txt +++ b/INC/LIBGUI.I.txt @@ -88,8 +88,8 @@ S.WND.F.MODAL .EQ %01000000 S.WND.F.SYSMODAL .EQ %10000000 * S.WND.S.ACTIVE .EQ %00000100 -S.WND.S.MAX .EQ %00001000 -S.WND.S.MIN .EQ %00010000 +S.WND.S.MAXIMIZED .EQ %00001000 +S.WND.S.MINIMIZED .EQ %00010000 * S.WND.MinW .EQ S.OBJ S.WND.MinH .EQ S.OBJ+2 @@ -102,8 +102,12 @@ S.WND.STATUS .EQ S.OBJ+14 S.WND.ICON .EQ S.OBJ+16 S.WND.InnerW .EQ S.OBJ+18 S.WND.InnerH .EQ S.OBJ+20 +S.WND.DocW .EQ S.OBJ+22 +S.WND.DocH .EQ S.OBJ+24 +S.WND.DocX .EQ S.OBJ+26 +S.WND.DocY .EQ S.OBJ+28 * -S.WND .EQ S.OBJ+22 +S.WND .EQ S.OBJ+30 *-------------------------------------- S.MBAR.MENULIST .EQ S.OBJ * ... S.MENUs... diff --git a/LIB/LIBGUI.G.WND.txt b/LIB/LIBGUI.G.WND.txt index 0135c7e4..309d1e85 100644 --- a/LIB/LIBGUI.G.WND.txt +++ b/LIB/LIBGUI.G.WND.txt @@ -1,7 +1,6 @@ NEW AUTO 3,1 *-------------------------------------- -WND.TB.H .BS 1 WND.Stack.Top .BS 1 WND.Stack .BS WND.MAX *-------------------------------------- diff --git a/LIB/LIBGUI.S.CLIP.txt b/LIB/LIBGUI.S.CLIP.txt index 14ac6ff6..06f30083 100644 --- a/LIB/LIBGUI.S.CLIP.txt +++ b/LIB/LIBGUI.S.CLIP.txt @@ -24,19 +24,45 @@ CLIP.Point clc rts *-------------------------------------- -CLIP.HLine +CLIP.HLine >LDYA CB.Cache+S.CB.Y1 + >SCMPYA OBJ.Cache+S.OBJ.Y2 + bpl .9 + + >LDYA CB.Cache+S.CB.Y2 + >SCMPYA OBJ.Cache+S.OBJ.Y1 + bmi .9 + + >LDYA OBJ.Cache+S.OBJ.X1 + >STYAIFGTR CB.Cache+S.CB.X1 + + >LDYA OBJ.Cache+S.OBJ.X2 + >STYAIFLWR CB.Cache+S.CB.X2 + clc rts + +.9 sec + rts *-------------------------------------- -CLIP.VLine +CLIP.VLine >LDYA CB.Cache+S.CB.X1 + >SCMPYA OBJ.Cache+S.OBJ.X2 + bpl .9 + + >LDYA CB.Cache+S.CB.X2 + >SCMPYA OBJ.Cache+S.OBJ.X1 + bmi .9 + + >LDYA OBJ.Cache+S.OBJ.Y1 + >STYAIFGTR CB.Cache+S.CB.Y1 + + >LDYA OBJ.Cache+S.OBJ.Y2 + >STYAIFLWR CB.Cache+S.CB.Y2 + clc rts - sec - rts -*-------------------------------------- -* OBJ.Cache = Target Context -* CB.Cache = Src Control Block +.9 sec + rts *-------------------------------------- CLIP.Rect jsr CB.Cache.Overlap bcs .9 diff --git a/LIB/LIBGUI.S.WND.txt b/LIB/LIBGUI.S.WND.txt index 31159eb6..ed11548b 100644 --- a/LIB/LIBGUI.S.WND.txt +++ b/LIB/LIBGUI.S.WND.txt @@ -58,6 +58,8 @@ WND.Setup >LDYA DCB.GFX+S.DCB.GFX.W sta WND.Desktop+S.WND.hCUR sta WND.SysBar+S.WND.hCUR + stz WND.Stack.Top + rts *-------------------------------------- WND.Quit lda WND.Screen+S.OBJ.hPARENT @@ -74,7 +76,11 @@ WND.Quit lda WND.Screen+S.OBJ.hPARENT *-------------------------------------- * F8, X116, Y116, W16, H16 *-------------------------------------- -WND.Create >LDYAI S.WND +WND.Create ldy WND.Stack.Top + cpy #WND.MAX + bcs .90 + + >LDYAI S.WND >SYSCALL2 getmem bcs .9 @@ -129,9 +135,14 @@ WND.Create >LDYAI S.WND sta (ZPPtr1),y txa ID + ldy WND.Stack.Top + sta WND.Stack + inc WND.Stack.Top + * clc rts +.90 lda #E.OOH .9 >RET 9 *-------------------------------------- * hWND8, Prop8, Value16 @@ -190,40 +201,33 @@ WND.Show >SYSCALL2 GetMemPtr stz Counter+1 Y ldy #S.OBJ.F - lda (ZPPtr1),y and #S.WND.F.RESIZE+S.WND.F.BORDER - beq .10 + beq .1 inc Counter 1 pixel L inc Counter 1 pixel R inc Counter+1 1 top inc Counter+1 1 bottom - lda #S.CB.CMD.HLINE - jsr PutCBBuf - lda #S.CB.OP.SET - jsr PutCBBuf - lda #S.CB.M.MONO - jsr PutCBBuf - lda PREFS.BORDERCOLOR - jsr PutCBBuf + jsr WND.PaintBorders - ldy #S.OBJ.X1 - -.1 lda (ZPPtr1),y - jsr PutCBBuf - iny - cpy #S.OBJ.Y2+2 - bne .1 - - -.10 +.1 ldy #S.WND.TITLE+1 + lda (ZPPtr1),y + beq .77 + + lda Counter+1 + clc + adc SYSFON.H + inc + inc + sta Counter+1 + + jsr WND.PaintTitle + bcs .9 - - - lda #0 +.77 lda #0 jsr PutCBBuf >LDYA L.WND.Screen @@ -243,6 +247,113 @@ WND.Paint >STYA ZPPtr1 clc rts *-------------------------------------- +WND.PaintBorders + lda #S.CB.CMD.HLINE TOP + jsr WND.PaintBorders.H + + ldy #S.OBJ.X1 + +.1 lda (ZPPtr1),y + jsr PutCBBuf + iny + cpy #S.OBJ.Y2+2 + bne .1 + + lda #S.CB.CMD.VLINE LEFT + jsr WND.PaintBorders.H + + ldy #S.OBJ.X1 + +.2 lda (ZPPtr1),y + jsr PutCBBuf + iny + cpy #S.OBJ.Y2+2 + bne .2 + + lda #S.CB.CMD.VLINE RIGHT + jsr WND.PaintBorders.H + + ldy #S.OBJ.X2 + jsr WND.PaintPushWY + + ldy #S.OBJ.Y1 + jsr WND.PaintPushWY + + ldy #S.OBJ.X2 + jsr WND.PaintPushWY + + ldy #S.OBJ.Y2 + jsr WND.PaintPushWY + + lda #S.CB.CMD.HLINE BOTTOM + jsr WND.PaintBorders.H + + ldy #S.OBJ.X1 + jsr WND.PaintPushWY + + ldy #S.OBJ.Y2 + jsr WND.PaintPushWY + + ldy #S.OBJ.X2 + jsr WND.PaintPushWY + + ldy #S.OBJ.Y2 + jsr WND.PaintPushWY + + rts + +WND.PaintBorders.H + jsr PutCBBuf + lda #S.CB.OP.SET + jsr PutCBBuf + lda #S.CB.M.MONO + jsr PutCBBuf + lda PREFS.BORDERCOLOR + jmp PutCBBuf + +WND.PaintPushWY lda (ZPPtr1),y + jsr PutCBBuf + iny + lda (ZPPtr1),y + jsr PutCBBuf + rts +*-------------------------------------- +WND.PaintTitle ldx #S.CB-1 + +.1 stz CB.Cache,x + dex + bpl .1 + + lda #S.CB.CMD.DRAWTEXT+S.CB.CMD.OSD + sta CB.Cache+S.CB.CMD + lda #S.CB.OP.SET+S.CB.OP.INVERSE + sta CB.Cache+S.CB.OP + lda #S.CB.M.MONO + sta CB.Cache+S.CB.M + lda hSYSFONB + sta CB.Cache+S.CB.hFont + + ldy #S.WND.TITLE + lda (ZPPtr1),y + sta CB.Cache+S.CB.TxtPtr + iny + lda (ZPPtr1),y + sta CB.Cache+S.CB.TxtPtr+1 + jsr GFXWrite.CB + bcs .9 + + ldx #0 + +.8 lda CB.Cache,x + jsr PutCBBuf + inx + cpx #S.CB + bne .8 + + clc + +.9 rts +*-------------------------------------- WND.Close clc rts *-------------------------------------- diff --git a/SBIN/GUI.S.txt b/SBIN/GUI.S.txt index 83be388f..ea646098 100644 --- a/SBIN/GUI.S.txt +++ b/SBIN/GUI.S.txt @@ -119,14 +119,21 @@ WND.Test >PUSHBI S.WND.F.RESIZE+S.WND.F.MOVE+S.WND.F.CLOSE+S.WND.F.MAX+S.WND.F. bcs .9 sta hWND + >PUSHA + >PUSHBI S.WND.TITLE + >PUSHW L.WND.Title + >LIBCALL hLIBGUI,LIBGUI.WND.SetProp + * >PUSHA * >PUSHBI S.WND.TITLE * >PUSHW L.WND.Title * >LIBCALL hLIBGUI,LIBGUI.WND.SetProp + >LIBCALL hLIBGUI,LIBGUI.HideCursor lda hWND >LIBCALL hLIBGUI,LIBGUI.WND.Show A = hWND + >LIBCALL hLIBGUI,LIBGUI.ShowCursor clc .9 rts *--------------------------------------