diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index d3dfb3ae..470add5d 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/DRV/DHGR.DRV.S.OSD.txt b/DRV/DHGR.DRV.S.OSD.txt index c4529311..e1a2d6a0 100644 --- a/DRV/DHGR.DRV.S.OSD.txt +++ b/DRV/DHGR.DRV.S.OSD.txt @@ -42,10 +42,8 @@ X.OSD ldy CBX.Cache+S.CB.DstPtr cpx #S.BM bne .2 -.4 lda CBX.Cache+S.CB.CMD - asl - tax - jmp (.8,x) +.4 ldx CBX.Cache+S.CB.CMD + jmp (.8-2,x) *-------------------------------------- .8 .DA OSD.SETPIXEL .DA OSD.GETPIXEL @@ -54,7 +52,6 @@ X.OSD ldy CBX.Cache+S.CB.DstPtr .DA OSD.FILLRECT .DA OSD.BITBLT .DA OSD.GETRECTBUFSIZE - .DA $ffff DRAWLINE .DA OSD.DRAWTEXT .DA OSD.GETTEXTSIZE *-------------------------------------- @@ -596,7 +593,6 @@ CBX.CmdLen .DA #S.CB.Y1+1 SETPIXEL .DA #S.CB.Y2+1 FILLRECT .DA #S.CB.DstPtr+1 BITBLT .DA #S.CB.DstPtr+1 GETRECTBUFSIZE - .DA #S.CB.Y2+1 DRAWLINE .DA #S.CB.TxtPtr+1 DRAWTEXT .DA #S.CB.SrcH+1 GETTEXTSIZE *-------------------------------------- diff --git a/DRV/DHGR.DRV.S.txt b/DRV/DHGR.DRV.S.txt index 2b34a4c4..2965849c 100644 --- a/DRV/DHGR.DRV.S.txt +++ b/DRV/DHGR.DRV.S.txt @@ -236,8 +236,9 @@ OSD.install >LDYA L.OSD .3 sta CLRWRITEAUX rts *-------------------------------------- -ClrScr ldx #0 - txa lda #0 +ClrScr lda #$55 + + ldx #0 .1 ldy BASEL,x sty ZPPtr1 @@ -247,6 +248,8 @@ ClrScr ldx #0 sta SETPAGE2 jsr .2 + eor #$7F + sta CLRPAGE2 jsr .2 @@ -445,11 +448,11 @@ WRITE >STYA ZPIOCTL NON STANDARD lda (ZPIOCTL) Get Cmd bmi .2 - tax - ldy CB.CmdLen,x - - asl pha + + lsr + tax + ldy CB.CmdLen-1,x .1 lda (ZPIOCTL),y sta CB.Cache,y @@ -457,18 +460,21 @@ WRITE >STYA ZPIOCTL NON STANDARD bpl .1 plx - jmp (J.Cmds,x) + jmp (J.Cmds-2,x) .2 sta SETWRITEAUX - + >DEBUG and #$7f + sta CBX.Cache + + lsr tax - ldy CB.CmdLen,x + ldy CB.CmdLen-1,x .3 lda (ZPIOCTL),y sta CBX.Cache,y dey - bpl .3 + bne .3 sta SETREADAUX jsr X.OSD @@ -601,7 +607,6 @@ CB.CmdLen .DA #S.CB.Y1+1 SETPIXEL .DA #S.CB.Y2+1 FILLRECT .DA #S.CB.DstPtr+1 BITBLT .DA #S.CB.DstPtr+1 GETRECTBUFSIZE - .DA #S.CB.Y2+1 DRAWLINE .DA #S.CB.TxtPtr+1 DRAWTEXT .DA #S.CB.SrcH+1 GETTEXTSIZE *-------------------------------------- diff --git a/INC/GFX.I.txt b/INC/GFX.I.txt index 29593900..64c6e9c8 100644 --- a/INC/GFX.I.txt +++ b/INC/GFX.I.txt @@ -39,16 +39,16 @@ S.FON .EQ 8 * Command Block *-------------------------------------- S.CB.CMD .EQ 0 -S.CB.CMD.SETPIXEL .EQ 0 -S.CB.CMD.GETPIXEL .EQ 1 -S.CB.CMD.HLINE .EQ 2 -S.CB.CMD.VLINE .EQ 3 -S.CB.CMD.FILLRECT .EQ 4 -S.CB.CMD.BITBLT .EQ 5 -S.CB.CMD.GETRECTBUFSIZE .EQ 6 -S.CB.CMD.DRAWLINE .EQ 7 -S.CB.CMD.DRAWTEXT .EQ 8 -S.CB.CMD.GETTEXTSIZE .EQ 9 +S.CB.CMD.SETPIXEL .EQ 2 +S.CB.CMD.GETPIXEL .EQ 4 +S.CB.CMD.HLINE .EQ 6 +S.CB.CMD.VLINE .EQ 8 +S.CB.CMD.FILLRECT .EQ 10 +S.CB.CMD.BITBLT .EQ 12 +S.CB.CMD.GETRECTBUFSIZE .EQ 14 +S.CB.CMD.DRAWTEXT .EQ 16 +S.CB.CMD.GETTEXTSIZE .EQ 18 +S.CB.CMD.DRAWLINE .EQ 20 S.CB.CMD.OSD .EQ 128 S.CB.OP .EQ 1 S.CB.OP.XOR .EQ 0 screen EOR bitmap -> Screen diff --git a/INC/LIBGUI.I.txt b/INC/LIBGUI.I.txt index 9564e99d..7aab32cf 100644 --- a/INC/LIBGUI.I.txt +++ b/INC/LIBGUI.I.txt @@ -1,6 +1,5 @@ NEW AUTO 3,1 - .LIST OFF *-------------------------------------- LIBGUI.Draw .EQ 4 LIBGUI.SetCursor .EQ 6 diff --git a/INC/XY.MOUSE.I.txt b/INC/XY.MOUSE.I.txt index 10358d18..0b62639a 100644 --- a/INC/XY.MOUSE.I.txt +++ b/INC/XY.MOUSE.I.txt @@ -1,7 +1,5 @@ NEW -PREFIX -AUTO 4,1 - .LIST OFF + AUTO 3,1 *-------------------------------------- * //c Mouse Port, IIe Mouse Card *-------------------------------------- @@ -37,4 +35,4 @@ MOUSEMODx.INTMOVE .EQ %00000010 MOUSEMODx.ACTIVE .EQ %00000001 *-------------------------------------- MAN -SAVE INC/XY.MOUSE.I +SAVE inc/xy.mouse.i diff --git a/LIB/LIBGUI.S.CLIP.txt b/LIB/LIBGUI.S.CLIP.txt index 0b05772d..3d789f9a 100644 --- a/LIB/LIBGUI.S.CLIP.txt +++ b/LIB/LIBGUI.S.CLIP.txt @@ -11,7 +11,11 @@ NEW *-------------------------------------- CLIP.YA jsr CB.Get ldx CB.Cache+S.CB.CMD -CLIP.X jmp (J.CLIP,x) + bpl CLIP.X + txa + and #$7F + tax +CLIP.X jmp (J.CLIP-2,x) *-------------------------------------- CLIP.Point CLIP.HLine @@ -25,6 +29,7 @@ CLIP.Text CLIP.BitBlt.9 pla CLIP.BitBlt.99 sec rts + CLIP.BitBlt lda CB.Cache+S.CB.DstX ldx CB.Cache+S.CB.DstX+1 pha diff --git a/LIB/LIBGUI.S.CUR.txt b/LIB/LIBGUI.S.CUR.txt index 2a26cc47..691dadfc 100644 --- a/LIB/LIBGUI.S.CUR.txt +++ b/LIB/LIBGUI.S.CUR.txt @@ -16,7 +16,9 @@ SetCursor sta CUR.T lda CUR.bVisible bpl .1 + jsr HideCursor.I + .1 ldx CUR.T lda L.Cursors,x sta CUR.CB+S.CB.SrcPtr @@ -45,14 +47,17 @@ SetCursor.RTS rts *-------------------------------------- SetCursorPos >PULLW ZPPtr1 lda CUR.bVisible + bpl .1 jsr HideCursor.I + .1 ldy #S.POINT-1 .2 lda (ZPPtr1),y sta CUR.Pos,y dey bpl .2 + lda CUR.bVisible bmi ShowCursor.I @@ -66,6 +71,7 @@ HideCursor lda CUR.bVisible *-------------------------------------- ShowCursor lda CUR.bVisible bmi .9 + jsr ShowCursor.I dec CUR.bVisible .9 rts @@ -91,13 +97,18 @@ ShowCursor.I lda #S.CB.OP.ORA+S.CB.OP.MASK+S.CB.OP.SAVE lda CUR.Pos+S.POINT.Y+1 sbc #0 sta CUR.CB+S.CB.DstY+1 + DrawCursor.I >LDYA L.SCR jsr OBJ.Get + >LDYA L.CUR.CB + >DEBUG jsr CLIP.YA bcs .9 + >LDYA L.CUR.CB jmp GFXWrite.YA + .9 rts *-------------------------------------- MAN diff --git a/LIB/LIBGUI.S.DRAW.txt b/LIB/LIBGUI.S.DRAW.txt index 316018ab..5ba43012 100644 --- a/LIB/LIBGUI.S.DRAW.txt +++ b/LIB/LIBGUI.S.DRAW.txt @@ -4,8 +4,10 @@ NEW Draw >PULLW ZPCBPtr Get CB >PULLYA Get GC jsr OBJ.Get + .1 >LDYA ZPCBPtr jsr CB.Get + ldx CB.Cache+S.CB.CMD Get Cmd beq .8 @@ -17,16 +19,20 @@ Draw >PULLW ZPCBPtr Get CB jsr Draw.Jmp bra .7 + .2 jsr GFXWrite.CB + .7 lda (ZPCBPtr) Get Cmd tax - lda CB.CmdLen,x + lda CB.CmdLen-1,x sec adc ZPCBPtr sta ZPCBPtr bcc .1 + inc ZPCBPtr+1 bra .1 + .8 clc .9 rts diff --git a/LIB/LIBGUI.S.FON.txt b/LIB/LIBGUI.S.FON.txt index 24111b46..8597b1a5 100644 --- a/LIB/LIBGUI.S.FON.txt +++ b/LIB/LIBGUI.S.FON.txt @@ -1,11 +1,8 @@ NEW AUTO 3,1 *-------------------------------------- -FON.Init >PUSHWZ Aux type - >PUSHBI $CC Type - >PUSHBI O.RDONLY - >LDYA L.SYSX7 - >SYSCALL2 LoadStkObj +FON.Init >LDYA L.SYSX7 + jsr FON.Load bcs .9 sta hSYSFON @@ -14,17 +11,19 @@ FON.Init >PUSHWZ Aux type lda #7 sta SYSFON.H - >PUSHWZ Aux type - >PUSHBI $CC Type - >PUSHBI O.RDONLY >LDYA L.SYSX7B - >SYSCALL2 LoadStkObj + jsr FON.Load bcs .9 sta hSYSFONB .9 rts *-------------------------------------- - +FON.Load >PUSHYA + >PUSHBI O.RDONLY + >PUSHBI $CC Type + >PUSHWZ Aux type + >SYSCALL2 LoadStkObj + rts *-------------------------------------- MAN SAVE usr/src/lib/libgui.s.fon diff --git a/LIB/LIBGUI.S.MOU.txt b/LIB/LIBGUI.S.MOU.txt index dc5f90f6..682aac4e 100644 --- a/LIB/LIBGUI.S.MOU.txt +++ b/LIB/LIBGUI.S.MOU.txt @@ -32,13 +32,16 @@ MOU.Setup lda DCB.GFX+S.DCB.GFX.W+1 sta MouseClamp+6 ror sta CUR.Pos+S.POINT.Y - >PUSHW L.MouseClamp + + >PUSHB hDevMouse >PUSHBI IOCTL.CONTROL - lda hDevMouse + >PUSHW L.MouseClamp >SYSCALL2 IOCTL bcs .9 + >LDYA L.CUR.SaveBuf >STYA CUR.CB+S.CB.DstPtr + lda #CUR.T.ARROW jsr SetCursor jsr ShowCursor @@ -48,30 +51,36 @@ MOU.Setup lda DCB.GFX+S.DCB.GFX.W+1 *-------------------------------------- MOU.Quit lda hDevMouse beq .8 - pha + + >PUSHA >PUSHBI IOCTL.CLOSE >PUSHWZ - pla >SYSCALL2 IOCTL .8 clc rts *-------------------------------------- -MOU.ReadMouse lda A2osX.ASCREEN GUI screen active ? - cmp DCB.GFX+S.DCB.GFX.DEVID +MOU.ReadMouse >PULLYA + + ldx A2osX.ASCREEN GUI screen active ? + cpx DCB.GFX+S.DCB.GFX.DEVID bne .9 no, exit.... - lda hDevMouse + + ldx hDevMouse beq .9 pha - -* >PUSHW ZPPtr1 + + txa + + >PUSHA >PUSHBI IOCTL.READ pla + >PUSHYA >SYSCALL2 IOCTL rts .9 sec - >RET 2 Discard PTR + rts *-------------------------------------- MAN SAVE usr/src/lib/libgui.s.mou diff --git a/LIB/LIBGUI.S.WND.txt b/LIB/LIBGUI.S.WND.txt index de01c0fa..77844a24 100644 --- a/LIB/LIBGUI.S.WND.txt +++ b/LIB/LIBGUI.S.WND.txt @@ -5,14 +5,17 @@ WND.Init >PUSHBI 0 >LDYA L.DEVNAME.GFX >SYSCALL2 open bcs .9 + sta SCR+S.SCREEN.hDEV + >LDYA L.DCB.GFX >STYA IOCTL+S.IOCTL.BUFPTR lda #S.IOCTL.STATCODE.GETDCB sta IOCTL+S.IOCTL.STATCODE - >PUSHW L.IOCTL + + >PUSHB SCR+S.SCREEN.hDEV >PUSHBI IOCTL.STATUS - lda SCR+S.SCREEN.hDEV + >PUSHW L.IOCTL >SYSCALL2 IOCTL .9 rts *-------------------------------------- @@ -35,18 +38,24 @@ WND.Setup >LDYA DCB.GFX+S.DCB.GFX.W sbc #0 sta WND.Desktop+S.OBJ.H+1 sta WND.SysBar+S.OBJ.X1+1 + >LDYA L.SCR jsr OBJ.SetX2Y2 + >LDYA L.WND.Desktop >STYA SCR.Childs jsr OBJ.SetX2Y2 + >LDYA L.WND.SysBar jsr OBJ.SetX2Y2 >STYA SCR.Childs+2 + >LDYA L.WND.Desktop 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 diff --git a/LIB/LIBGUI.S.txt b/LIB/LIBGUI.S.txt index 5ec1363d..d3976760 100644 --- a/LIB/LIBGUI.S.txt +++ b/LIB/LIBGUI.S.txt @@ -119,36 +119,44 @@ J.Clip .DA CLIP.Point SETPIXEL LIB.LOAD lda LibCount bne .8 - jsr FON.Init - bcs .9 - jsr MOU.Init - bcs .9 +* bcs .9 jsr WND.Init bcs .9 - jsr WND.Setup - lda hDevMouse - beq .8 - jsr MOU.Setup -.8 inc LibCount - clc + jsr FON.Init + bcs .9 + + lda hDevMouse + beq .1 + + jsr MOU.Setup + +.1 jsr WND.Setup + + inc LibCount + +.8 clc .9 rts *-------------------------------------- LIB.UNLOAD dec LibCount bne .8 + jsr MOU.Quit + .8 clc rts *-------------------------------------- OBJ.Get >STYA .1+1 ldx #S.OBJ-1 + .1 lda $ffff,x SELF MODIFIED sta OBJ.Cache,x dex bpl .1 + rts *-------------------------------------- OBJ.SetX2Y2 >STYA ZPObjPtr @@ -211,9 +219,11 @@ CB.Get >STYA .1+1 *-------------------------------------- GFXWrite.CB >LDYA L.CB.Cache -GFXWrite.YA >PUSHYA +GFXWrite.YA pha + >PUSHB SCR+S.SCREEN.hDEV >PUSHBI IOCTL.WRITE - lda SCR+S.SCREEN.hDEV + pla + >PUSHYA >SYSCALL2 IOCTL rts *-------------------------------------- @@ -273,6 +283,7 @@ PAT.Buf .BS 1 S.BM.F *-------------------------------------- IOCTL .BS S.IOCTL DCB.GFX .BS S.DCB.GFX +MOUSEDATA .BS S.MOUSE *-------------------------------------- MouseClamp .BS 8 *-------------------------------------- diff --git a/SBIN/GUI.S.txt b/SBIN/GUI.S.txt index 825ae239..8975221d 100644 --- a/SBIN/GUI.S.txt +++ b/SBIN/GUI.S.txt @@ -55,6 +55,7 @@ CS.INIT >LDYA L.LIBGUI CS.RUN >PUSHW L.MouseData >LIBCALL hLIBGUI,LIBGUI.ReadMouse bcs .4 + lda MouseData+S.MOUSE.S bit #S.MOUSE.S.MOVE beq .1 @@ -62,6 +63,7 @@ CS.RUN >PUSHW L.MouseData >PUSHW L.MouseData >LIBCALL hLIBGUI,LIBGUI.SetCursorPos lda MouseData+S.MOUSE.S + .1 bit #S.MOUSE.S.CLK beq .4 >LDA.G CUR.T