diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 0b40cda4..979fa32d 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 8540b0c9..091b4872 100644 Binary files a/.Floppies/A2OSX.SRC.po and b/.Floppies/A2OSX.SRC.po differ diff --git a/DRV/DHGR.DRV.S.BLT.txt b/DRV/DHGR.DRV.S.BLT.txt index d65c3c4b..a6335ec3 100644 --- a/DRV/DHGR.DRV.S.BLT.txt +++ b/DRV/DHGR.DRV.S.BLT.txt @@ -8,11 +8,11 @@ AUTO 6 * BitBlt * S.CB.X1 : SrcX1 in bitmap/mask * S.CB.Y1 : SrcY1 -* S.CB.X2 : SrcX2 -* S.CB.Y2 : SrcY2 +* S.CB.SrcW : width +* S.CB.SrcH : height -* S.CB.DestX : Destination X (screen) -* S.CB.DestY : Destination Y (screen) +* S.CB.DstX : Destination X (screen) +* S.CB.DstY : Destination Y (screen) * S.CB.SrcPtr : pointer to S.BM * S.CB.DstPtr : pointer to Save Buffer @@ -88,7 +88,8 @@ BITBLT >LDYA CB.CACHE+S.CB.SrcPtr bcc .3 inc BLT.BMDataPtr+1 - + clc + .3 pla adc BLT.BMMaskPtr sta BLT.BMMaskPtr @@ -96,15 +97,15 @@ BITBLT >LDYA CB.CACHE+S.CB.SrcPtr inc BLT.BMMaskPtr+1 -.4 >LDYA CB.Cache+S.CB.DestX +.4 >LDYA CB.Cache+S.CB.DstX jsr LBUF.SetBounds1YA stx BLT.SCRBitOfs - lda CB.Cache+S.CB.DestX + lda CB.Cache+S.CB.DstX clc adc CB.Cache+S.CB.SrcW tay - lda CB.Cache+S.CB.DestX+1 + lda CB.Cache+S.CB.DstX+1 adc CB.Cache+S.CB.SrcW+1 pha tya @@ -173,9 +174,9 @@ BITBLT.LOOP0 lda CB.Cache+S.CB.OP cpx LBUF.C2 bne .3 - ldy CB.Cache+S.CB.DestY + ldy CB.Cache+S.CB.DstY jsr LBUF.DrawAtY - inc CB.Cache+S.CB.DestY + inc CB.Cache+S.CB.DstY dec CB.Cache+S.CB.SrcH beq .8 @@ -282,9 +283,9 @@ BITBLT.LOOPx.7 and #$ff SELF MODIFIED : #%01110000 get only col2 bites cpx LBUF.C2 bne BITBLT.LOOPx.5 - ldy CB.Cache+S.CB.DestY + ldy CB.Cache+S.CB.DstY jsr LBUF.DrawAtY - inc CB.Cache+S.CB.DestY + inc CB.Cache+S.CB.DstY dec CB.Cache+S.CB.SrcH beq .8 diff --git a/INC/LIBGUI.I.txt b/INC/LIBGUI.I.txt index eb0c1471..83bd6e8b 100644 --- a/INC/LIBGUI.I.txt +++ b/INC/LIBGUI.I.txt @@ -15,6 +15,7 @@ LIBGUI.HideCursor .EQ 14 LIBGUI.ShowCursor .EQ 16 LIBGUI.UpdateCursor .EQ 18 LIBGUI.ReadMouse .EQ 20 +LIBGUI.GetScreenGC .EQ 22 *-------------------------------------- S.GC.hDev .EQ 0 S.GC.hMem .EQ 1 @@ -60,8 +61,8 @@ S.CB.X2 .EQ 8 VLINE,FILLRECT,DRAWLINE S.CB.Y2 .EQ 10 HLINE,FILLRECT,DRAWLINE S.CB.SrcW .EQ 8 BITBLT,GETRECTBUFSIZE S.CB.SrcH .EQ 10 BITBLT,GETRECTBUFSIZE -S.CB.DestX .EQ 12 BITBLT,DRAWTEXT -S.CB.DestY .EQ 14 BITBLT,DRAWTEXT +S.CB.DstX .EQ 12 BITBLT,DRAWTEXT +S.CB.DstY .EQ 14 BITBLT,DRAWTEXT S.CB.SrcPtr .EQ 16 BITBLT,DRAWTEXT S.CB.DstPtr .EQ 18 BITBLT * diff --git a/LIB/LIBGUI.G.CUR.txt b/LIB/LIBGUI.G.CUR.txt index 8b370dd0..b0ebcb70 100644 --- a/LIB/LIBGUI.G.CUR.txt +++ b/LIB/LIBGUI.G.CUR.txt @@ -120,32 +120,32 @@ CUR.ResizeY.MASK CUR.ResizeXY1 .DA #S.BM.F.BBP1 .DA #2 RowBytes .DA 11 W - .DA 10 H + .DA 11 H .DA CUR.ResizeXY1.MASK-CUR.ResizeXY1 .DA %000.00000000 .DA %011.11000000 .DA %011.10000000 .DA %011.10000000 - .DA %010.01100000 - - .DA %000.00110010 - .DA %000.00011110 + .DA %010.01000000 + .DA %000.00100000 + .DA %000.00010010 + .DA %000.00001110 .DA %000.00001110 .DA %000.00011110 .DA %000.00000000 CUR.ResizeXY1.MASK - .DA %000.00000111 .DA %000.00001111 .DA %000.00011111 - .DA %000.00111110 - .DA %000.00011100 - - .DA %001.11000000 - .DA %011.11100000 + .DA %000.00111111 + .DA %000.00111111 + .DA %000.00011110 + .DA %001.10001100 + .DA %011.11000000 + .DA %111.11100000 + .DA %111.11100000 .DA %111.11000000 .DA %111.10000000 - .DA %111.00000000 *-------------------------------------- CUR.ResizeXY2 *-------------------------------------- diff --git a/LIB/LIBGUI.S.CLIP.txt b/LIB/LIBGUI.S.CLIP.txt index b8b6349d..039433a5 100644 --- a/LIB/LIBGUI.S.CLIP.txt +++ b/LIB/LIBGUI.S.CLIP.txt @@ -15,7 +15,7 @@ AUTO 6 *-------------------------------------- CLIP.YA jsr CB.Get ldx CB.Cache+S.CB.CMD - jmp (J.CLIP,x) +CLIP.X jmp (J.CLIP,x) *-------------------------------------- CLIP.Point CLIP.HLine @@ -30,8 +30,8 @@ CLIP.BitBlt.9 pla CLIP.BitBlt.99 sec rts -CLIP.BitBlt lda CB.Cache+S.CB.DestX - ldx CB.Cache+S.CB.DestX+1 +CLIP.BitBlt lda CB.Cache+S.CB.DstX + ldx CB.Cache+S.CB.DstX+1 pha >SCMPAX GC.Cache+S.GC.X2 @@ -41,28 +41,32 @@ CLIP.BitBlt lda CB.Cache+S.CB.DestX >SCMPAX GC.Cache+S.GC.X1 bpl .1 DestX Inside X1-X2, go check if X1+W fit in -* S.CB.DestX before S.GC.X1: D=S.GC.X1-S.CB.DestX, S.CB.SrcW-=D, S.CB.DestX=0, S.CB.X1+=D +* S.CB.DstX before S.GC.X1: D=S.GC.X1-S.CB.DstX, S.CB.SrcW-=D, S.CB.DstX=0, S.CB.X1+=D lda GC.Cache+S.GC.X1 Compute D.... sec - sbc CB.Cache+S.CB.DestX + sbc CB.Cache+S.CB.DstX sta D lda GC.Cache+S.GC.X1+1 - sbc CB.Cache+S.CB.DestX+1 + sbc CB.Cache+S.CB.DstX+1 sta D+1 ....always positive lda CB.Cache+S.CB.SrcW S.CB.SrcW-=D sec sbc D sta CB.Cache+S.CB.SrcW - iny lda CB.Cache+S.CB.SrcW+1 - sbc D + sbc D+1 sta CB.Cache+S.CB.SrcW+1 bcc CLIP.BitBlt.99 Negative!!!! nothing to do,exit... - stz CB.Cache+S.CB.DestX Dext.X=0 - stz CB.Cache+S.CB.DestX+1 + lda CB.Cache+S.CB.DstX Dst.Y+=D + clc + adc D + sta CB.Cache+S.CB.DstX + lda CB.Cache+S.CB.DstX+1 + adc D+1 + sta CB.Cache+S.CB.DstX+1 lda CB.Cache+S.CB.X1 S.CB.X1+=D clc @@ -70,34 +74,31 @@ CLIP.BitBlt lda CB.Cache+S.CB.DestX sta CB.Cache+S.CB.X1 lda CB.Cache+S.CB.X1+1 adc D+1 - sta CB.Cache+S.CB.X1+1 S.CB.DestX=0, new between S.GC.X1 & S.GC.X2.... + sta CB.Cache+S.CB.X1+1 S.CB.DstX=0, new between S.GC.X1 & S.GC.X2.... -* S.CB.DestX between S.GC.X1 & S.GC.X2: D=S.GC.X2-S.CB.DestX +* S.CB.DstX between S.GC.X1 & S.GC.X2: D=S.GC.X2-S.CB.DstX .1 lda GC.Cache+S.GC.X2 sec - sbc CB.Cache+S.CB.DestX + sbc CB.Cache+S.CB.DstX sta D lda GC.Cache+S.GC.X2+1 - sbc CB.Cache+S.CB.DestX+1 + sbc CB.Cache+S.CB.DstX+1 sta D+1 Always positive... - lda D - - cmp CB.Cache+S.CB.SrcW - lda D+1 + ldx D + cpx CB.Cache+S.CB.SrcW + lda D+1 sbc CB.Cache+S.CB.SrcW+1 bcs CLIP.BitBlt.Y D >= SrcW....nothing to clip - - lda D SrcW < D, make SrcW=D - sta CB.Cache+S.CB.SrcW + + stx CB.Cache+S.CB.SrcW SrcW < D, make SrcW=D lda D+1 sta CB.Cache+S.CB.SrcW+1 -CLIP.BitBlt.Y lda CB.Cache+S.CB.DestY - ldx CB.Cache+S.CB.DestY+1 +CLIP.BitBlt.Y lda CB.Cache+S.CB.DstY + ldx CB.Cache+S.CB.DstY+1 pha - >SCMPAX GC.Cache+S.GC.Y2 DestY after Y2....exit bmi .10 sec @@ -107,28 +108,32 @@ CLIP.BitBlt.Y lda CB.Cache+S.CB.DestY >SCMPAX GC.Cache+S.GC.Y1 bpl .1 DestY Inside Y1-Y2, go check if Y1+H fit in -* S.CB.DestY above S.GC.Y1: D=S.GC.Y1-S.CB.DestY, S.CB.SrcH-=D, S.CB.DestY=0, S.CB.Y1+=D - +* S.CB.DstY above S.GC.Y1: D=S.GC.Y1-S.CB.DstY, S.CB.SrcH-=D, S.CB.DstY=0, S.CB.Y1+=D + lda GC.Cache+S.GC.Y1 Compute D.... sec - sbc CB.Cache+S.CB.DestY + sbc CB.Cache+S.CB.DstY sta D lda GC.Cache+S.GC.Y1+1 - sbc CB.Cache+S.CB.DestY+1 + sbc CB.Cache+S.CB.DstY+1 sta D+1 ....always positive lda CB.Cache+S.CB.SrcH S.CB.SrcH-=D sec sbc D sta CB.Cache+S.CB.SrcH - iny lda CB.Cache+S.CB.SrcH+1 - sbc D + sbc D+1 sta CB.Cache+S.CB.SrcH+1 bcc .99 Negative!!!! nothing to do,exit... - stz CB.Cache+S.CB.DestY Dext.X=0 - stz CB.Cache+S.CB.DestY+1 + lda CB.Cache+S.CB.DstY Dst.Y+=D + clc + adc D + sta CB.Cache+S.CB.DstY + lda CB.Cache+S.CB.DstY+1 + adc D+1 + sta CB.Cache+S.CB.DstY+1 lda CB.Cache+S.CB.Y1 S.CB.Y1+=D clc @@ -136,27 +141,25 @@ CLIP.BitBlt.Y lda CB.Cache+S.CB.DestY sta CB.Cache+S.CB.Y1 lda CB.Cache+S.CB.Y1+1 adc D+1 - sta CB.Cache+S.CB.Y1+1 S.CB.DestY=0, new between S.GC.Y1 & S.GC.Y2.... + sta CB.Cache+S.CB.Y1+1 S.CB.DstY=0, new between S.GC.Y1 & S.GC.Y2.... -* S.CB.DestY between S.GC.Y1 & S.GC.Y2: D=S.GC.Y2-S.CB.DestY +* S.CB.DstY between S.GC.Y1 & S.GC.Y2: D=S.GC.Y2-S.CB.DstY .1 lda GC.Cache+S.GC.Y2 sec - sbc CB.Cache+S.CB.DestY + sbc CB.Cache+S.CB.DstY sta D lda GC.Cache+S.GC.Y2+1 - sbc CB.Cache+S.CB.DestY+1 + sbc CB.Cache+S.CB.DstY+1 sta D+1 Always positive... - lda D - - cmp CB.Cache+S.CB.SrcH + ldx D + cpx CB.Cache+S.CB.SrcH lda D+1 sbc CB.Cache+S.CB.SrcH+1 bcs .8 D >= SrcH....nothing to clip - - lda D SrcH < D, make SrcH=D - sta CB.Cache+S.CB.SrcH + + stx CB.Cache+S.CB.SrcH SrcH < D, make SrcH=D lda D+1 sta CB.Cache+S.CB.SrcH+1 diff --git a/LIB/LIBGUI.S.CUR.txt b/LIB/LIBGUI.S.CUR.txt index 67a788fc..4def0c74 100644 --- a/LIB/LIBGUI.S.CUR.txt +++ b/LIB/LIBGUI.S.CUR.txt @@ -109,22 +109,22 @@ ShowCursor.I lda #S.CB.OP.ORA+S.CB.OP.MASK+S.CB.OP.SAVE lda CUR.Pos+S.POINT.X sec sbc CUR.HotPoints,x - sta CUR.CB+S.CB.DestX + sta CUR.CB+S.CB.DstX lda CUR.Pos+S.POINT.X+1 sbc #0 - sta CUR.CB+S.CB.DestX+1 + sta CUR.CB+S.CB.DstX+1 lda CUR.Pos+S.POINT.Y sec sbc CUR.HotPoints+1,x - sta CUR.CB+S.CB.DestY + sta CUR.CB+S.CB.DstY lda CUR.Pos+S.POINT.Y+1 sbc #0 - sta CUR.CB+S.CB.DestY+1 + sta CUR.CB+S.CB.DstY+1 -DrawCursor.I >LDYA L.GC.Screen +DrawCursor.I >LDYA L.GC.Screen jsr GC.Get >LDYA L.CUR.CB @@ -132,8 +132,6 @@ DrawCursor.I >LDYA L.GC.Screen bcs .9 >LDYA L.CB.Cache - -* >LDYA L.CUR.CB jmp GoDevGfx.YA .9 rts diff --git a/LIB/LIBGUI.S.DRAW.txt b/LIB/LIBGUI.S.DRAW.txt index 533986ab..d22b6634 100644 --- a/LIB/LIBGUI.S.DRAW.txt +++ b/LIB/LIBGUI.S.DRAW.txt @@ -4,25 +4,27 @@ NEW INC 1 AUTO 6 *-------------------------------------- -Draw >PULLW ZPCBPtr - - lda (ZPCBPtr) Get Cmd - -.1 tax +Draw >PULLW ZPCBPtr Get CB + + >PULLYA Get GC + jsr GC.Get + +.1 >LDYA ZPCBPtr + jsr CB.Get + + ldx CB.Cache+S.CB.CMD Get Cmd + beq .8 + jsr CLIP.X + bcs .7 + + ldx CB.Cache+S.CB.CMD cpx #S.CB.CMD.DRAWLINE - bcc .3 Native DRV Cmd - - ldy CB.CmdLen,x - -.2 lda (ZPCBPtr),y Y=Byte count-1 to cache - sta CB.Cache,y - dey - bpl .2 - + bcc .2 Native DRV Cmd + jsr Draw.Jmp bra .7 -.3 >LDYA ZPCBPtr +.2 >LDYA L.CB.Cache jsr GoDevGfx.YA @@ -32,14 +34,12 @@ Draw >PULLW ZPCBPtr sec adc ZPCBPtr sta ZPCBPtr - bcc .8 + bcc .1 inc ZPCBPtr+1 + bra .1 -.8 lda (ZPCBPtr) Get Cmd - bne .1 - - clc - rts +.8 clc +.9 rts Draw.Jmp jmp (J.Cmds-S.CB.CMD.DRAWLINE,x) *-------------------------------------- diff --git a/LIB/LIBGUI.S.txt b/LIB/LIBGUI.S.txt index 7d1bde5d..2075aff2 100644 --- a/LIB/LIBGUI.S.txt +++ b/LIB/LIBGUI.S.txt @@ -71,6 +71,7 @@ CS.START cld .DA ShowCursor .DA UpdateCursor .DA ReadMouse + .DA GetScreenGC J.Cmds .DA DrawLine .DA DrawText L.DEVNAME.GFX .DA DEVNAME.GFX @@ -289,6 +290,9 @@ ReadMouse >PULLYA .9 sec rts *-------------------------------------- +GetScreenGC >LDYA L.GC.Screen + rts +*-------------------------------------- GoDevGfx >LDYA L.CB.Cache GoDevGfx.YA ldx #DEVMGR.WRITE GoDevGfx.Jmp jmp $ffff @@ -331,7 +335,7 @@ MouseClamp .BS 8 *-------------------------------------- GC.Screen .BS S.GC GC.Desktop .BS S.GC -GC.Bar .BS S.GC +GC.TaskBar .BS S.GC *-------------------------------------- GC.Cache .BS S.GC CB.Cache .BS S.CB diff --git a/SBIN/GUI.S.txt b/SBIN/GUI.S.txt index e6be1960..7b7c60a8 100644 --- a/SBIN/GUI.S.txt +++ b/SBIN/GUI.S.txt @@ -41,6 +41,7 @@ L.MouseData .DA MouseData L.CB.Rect .DA CB.Rect L.CB.BitBlt .DA CB.BitBlt L.CB.DrawLine .DA CB.DrawLine +L.GC.Clip .DA GC.Clip .DA 0 *-------------------------------------- CS.INIT >LDYA L.MSG.INIT @@ -110,26 +111,26 @@ CS.RUN lda A2osX.ASCREEN GUI screen active ? .1 bit #S.MOUSE.S.CLK beq .4 - >LDA.G CUR.T - inc - inc - cmp #CUR.T.WAIT+2 - bne .2 - - lda #CUR.T.ARROW - -.2 >STA.G CUR.T - >LIBCALL hLIBGUI,LIBGUI.SetCursor.A +* >LDA.G CUR.T +* inc +* inc +* cmp #CUR.T.WAIT+2 +* bne .2 +* +* lda #CUR.T.ARROW +* +*.2 >STA.G CUR.T +* >LIBCALL hLIBGUI,LIBGUI.SetCursor.A lda MouseData+S.MOUSE.X1 - sta CB.BitBlt+S.CB.DestX + sta CB.BitBlt+S.CB.DstX lda MouseData+S.MOUSE.X1+1 - sta CB.BitBlt+S.CB.DestX+1 + sta CB.BitBlt+S.CB.DstX+1 lda MouseData+S.MOUSE.Y1 - sta CB.BitBlt+S.CB.DestY + sta CB.BitBlt+S.CB.DstY lda MouseData+S.MOUSE.Y1+1 - sta CB.BitBlt+S.CB.DestY+1 + sta CB.BitBlt+S.CB.DstY+1 jsr Destop.Paint @@ -153,9 +154,17 @@ CS.QUIT clc *-------------------------------------- Destop.Paint >LIBCALL hLIBGUI,LIBGUI.HideCursor + >LIBCALL hLIBGUI,LIBGUI.GetScreenGC + >PUSHYA + >PUSHW L.CB.Rect >LIBCALL hLIBGUI,LIBGUI.Draw +* >LIBCALL hLIBGUI,LIBGUI.GetScreenGC +* >PUSHYA + + >PUSHW L.GC.Clip + >PUSHW L.CB.BitBlt >LIBCALL hLIBGUI,LIBGUI.Draw @@ -208,6 +217,18 @@ CB.DrawLine .DA #0 .BS 2 Y2 .DA #0 +*-------------------------------------- +GC.Clip .DA #0 + .DA #0 + .DA #0 + .DA #0 + + .DA 50 + .DA 50 + .DA 449 + .DA 149 + .DA 400 + .DA 100 *-------------------------------------- .DUMMY .OR 0