diff --git a/.Floppies/A2OSX.BOOT.po b/.Floppies/A2OSX.BOOT.po index 3304b52f..a5761094 100644 Binary files a/.Floppies/A2OSX.BOOT.po and b/.Floppies/A2OSX.BOOT.po differ diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 97c32491..3c587c50 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/.Floppies/A2OSX.DEV.po b/.Floppies/A2OSX.DEV.po index d1f514ac..78bfc3fc 100644 Binary files a/.Floppies/A2OSX.DEV.po and b/.Floppies/A2OSX.DEV.po differ diff --git a/.Floppies/A2OSX.SRC.po b/.Floppies/A2OSX.SRC.po index 38988fce..edd31418 100644 Binary files a/.Floppies/A2OSX.SRC.po and b/.Floppies/A2OSX.SRC.po differ diff --git a/DRV/DHGR.DRV.S.LINE.txt b/DRV/DHGR.DRV.S.LINE.txt index 14939e6d..cd23f5fa 100644 --- a/DRV/DHGR.DRV.S.LINE.txt +++ b/DRV/DHGR.DRV.S.LINE.txt @@ -73,9 +73,9 @@ HLINE.C16 lda CB.Cache+S.CB.X1 and LBUF.AND,x sta LBUF.ORA,x - inx cpx LBUF.C2 - bcs .1 + inx + bcc .1 ldy CB.Cache+S.CB.Y1 jmp LBUF.DrawAtY diff --git a/DRV/DHGR.DRV.S.RECT.txt b/DRV/DHGR.DRV.S.RECT.txt index 3edcc958..b12fa312 100644 --- a/DRV/DHGR.DRV.S.RECT.txt +++ b/DRV/DHGR.DRV.S.RECT.txt @@ -21,10 +21,10 @@ FILLRECT jsr HLINE bcc .8 .2 jsr LBUF.DrawAtY - inc CB.Cache+S.CB.Y1 ldy CB.Cache+S.CB.Y1 + inc CB.Cache+S.CB.Y1 cpy CB.Cache+S.CB.Y2 - bcs .2 + bcc .2 .8 rts *-------------------------------------- diff --git a/DRV/DHGR.DRV.S.txt b/DRV/DHGR.DRV.S.txt index 8ba00d81..c695dc15 100644 --- a/DRV/DHGR.DRV.S.txt +++ b/DRV/DHGR.DRV.S.txt @@ -143,28 +143,18 @@ WRITE >STYA ZPCmdPtr sta SET80STORE - lda (ZPCmdPtr) + lda (ZPCmdPtr) Get Cmd .1 tax ldy CB.CmdLen,x -.2 lda (ZPBasePtr),y +.2 lda (ZPCmdPtr),y sta CB.Cache,y dey bpl .2 - - lda CB.CmdLen,x - clc - adc ZPCmdPtr - sta ZPCmdPtr - bcc .3 - inc ZPCmdPtr+1 - + .3 jsr .10 - lda (ZPCmdPtr) - bne .1 - sta CLR80STORE .8 clc @@ -181,18 +171,19 @@ LBUF.SetBounds1YA jsr DIVMOD7YA A=DIV, X=MOD sta LBUF.C1 tay + lda Mono.Head,x sta LBUF.AND,y rts *-------------------------------------- LBUF.SetBounds2YA - jsr DIVMOD7YA - - cmp LBUF.C1 A=DIV, X=MOD - beq .2 - + jsr DIVMOD7YA A=DIV, X=MOD sta LBUF.C2 tay + + cmp LBUF.C1 + beq .2 + lda Mono.Tail,x sta LBUF.AND,y @@ -204,10 +195,8 @@ LBUF.SetBounds2YA sta LBUF.AND,y bra .1 -.2 and LBUF.C1 - sta LBUF.C2 - tay - lda Mono.Tail,x +.2 lda Mono.Head,x + and Mono.Tail,x sta LBUF.AND,y .8 rts *-------------------------------------- @@ -218,6 +207,7 @@ LBUF.DrawAtY lda BASEL,y setup line Base Ptr lda BASEH,y sta ZPBasePtr+1 + ldy LBUF.C1 y C1->C2 .1 ldx COL.BANK,y @@ -227,11 +217,12 @@ LBUF.DrawAtY lda BASEL,y setup line Base Ptr and LBUF.AND,y ora LBUF.ORA,y + lda #$ff sta (ZPBasePtr),y - iny cpy LBUF.C2 - bcs .1 + iny + bcc .1 rts *-------------------------------------- @@ -259,9 +250,9 @@ LBUF.DrawAtY.XOR * X = MOD *-------------------------------------- DIVMOD7YA dec - bne DIVMOD7Y2 beq DIVMOD7Y1 - + bpl DIVMOD7Y2 + DIVMOD7Y0 lda DIV7.0,y ldx MOD7.0,y rts @@ -285,7 +276,7 @@ DRV.CS.END CB.CmdLen .DA S.CB.Y1+1 SETPIXEL .DA S.CB.Y1+1 GETPIXEL .DA S.CB.X2+1 HLINE - .DA S.CB.X2+1 VLINE + .DA S.CB.Y2+1 VLINE .DA S.CB.Y2+1 FILLRECT .DA S.CB.DstPtr+1 BITBLT *-------------------------------------- diff --git a/DRV/MOUSE.DRV.S.txt b/DRV/MOUSE.DRV.S.txt index 6759e6b0..e10a2bab 100644 --- a/DRV/MOUSE.DRV.S.txt +++ b/DRV/MOUSE.DRV.S.txt @@ -107,7 +107,7 @@ Dev.Detect >LDYA L.MSG.DETECT and #$0F sta DEVSLOT0n ora #$30 - sta DEV.HEADER.NAME+4 + sta DEV.HEADER.NAME+3 asl asl asl @@ -122,7 +122,7 @@ Dev.Detect >LDYA L.MSG.DETECT *-------------------------------------- CS.END MSG.DETECT >CSTR "Apple Mouse Card/IIc Mouse Driver.\r\n" -MSG.DETECT.OK >CSTR "Mouse Installed As Device : %S\r\n" +MSG.DETECT.OK >CSTR "Mouse Installed As Device : %s\r\n" MSG.DETECT.KO >CSTR "No Mouse Found.\r\n" DEVSIG.Offset .HS 05070B0CFB DEVSIG.Value .HS 38180120D6 @@ -133,7 +133,7 @@ DEV.HEADER cld jmp (DRV.CS.START,x) .DA #0 .BS 6 -DEV.HEADER.NAME >PSTR "MOUX" +DEV.HEADER.NAME >CSTR "MOUX" *-------------------------------------- * Driver Code *-------------------------------------- diff --git a/INC/LIBGUI.I.txt b/INC/LIBGUI.I.txt index 44b29702..4d7357c1 100644 --- a/INC/LIBGUI.I.txt +++ b/INC/LIBGUI.I.txt @@ -6,7 +6,14 @@ AUTO 6 .LIST OFF .OP 65C02 *-------------------------------------- -S.CB.hDC .EQ 0 +S.CB.CMD .EQ 0 +S.CB.CMD.SETPIXEL .EQ 0 +S.CB.CMD.GETPIXEL .EQ 2 +S.CB.CMD.HLINE .EQ 4 +S.CB.CMD.VLINE .EQ 6 +S.CB.CMD.FILLRECT .EQ 8 +S.CB.CMD.BITBLT .EQ 10 +S.CB.CMD.DRAWLINE .EQ 12 S.CB.OP .EQ 1 S.CB.OP.SAVE .EQ %00000001 S.CB.OP.REPLACE .EQ %00000010 @@ -41,6 +48,13 @@ S.DC.H .EQ 10 * S.DC .EQ 12 *-------------------------------------- +CUR.T.ARROW .EQ 0 +CUR.T.PLUS .EQ 2 +CUR.T.WAIT .EQ 4 +CUR.T.RESIZEX .EQ 6 +CUR.T.RESIZEY .EQ 8 +CUR.T.RESIZEXY .EQ 10 +*-------------------------------------- S.CUR.HotPointX .EQ 0 S.CUR.HotPointY .EQ 1 S.CUR.DATA .EQ 2 16x16 bits = 32 bytes @@ -58,13 +72,14 @@ S.BM.H .EQ 4 S.BM.MASK.OFFSET .EQ 6 S.BM.DATA .EQ 8 *-------------------------------------- -LIBGFX.InitGFXA .EQ 4 -LIBGFX.CloseGFX .EQ 4 -LIBGFX.SetCursorPos .EQ 8 -LIBGFX.SetCursorYA .EQ 10 -LIBGFX.HideCursor .EQ 12 -LIBGFX.ShowCursor .EQ 14 -LIBGFX.DrawLine .EQ 16 +LIBGUI.InitGUI.A .EQ 4 +LIBGUI.CloseGUI .EQ 6 +LIBGUI.Draw .EQ 8 +LIBGUI.SetCursor.A .EQ 10 +LIBGUI.SetCursorPos .EQ 12 +LIBGUI.HideCursor .EQ 14 +LIBGUI.ShowCursor .EQ 16 +LIBGUI.DrawLine .EQ 18 *-------------------------------------- MAN SAVE /A2OSX.BUILD/INC/LIBGUI.I diff --git a/LIB/LIBGUI.S.txt b/LIB/LIBGUI.S.txt index c4dba9b7..6630e4a3 100644 --- a/LIB/LIBGUI.S.txt +++ b/LIB/LIBGUI.S.txt @@ -6,11 +6,11 @@ AUTO 6 .LIST OFF .OP 65C02 .OR $2000 - .TF /A2OSX.BUILD/LIB/LIBGFX.O + .TF /A2OSX.BUILD/LIB/LIBGUI.O *-------------------------------------- .INB /A2OSX.BUILD/INC/MACROS.I .INB /A2OSX.BUILD/INC/A2OSX.I - .INB /A2OSX.BUILD/INC/LIBGFX.I + .INB /A2OSX.BUILD/INC/LIBGUI.I *-------------------------------------- .MA SWAP16 lda ]1 @@ -32,8 +32,8 @@ AUTO 6 sta ]1+1 .EM *-------------------------------------- -ZPCBPtr .EQ ZPLIB ZPDCPtr .EQ ZPLIB+2 +ZPCmdPtr .EQ ZPLIB+4 *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- @@ -51,10 +51,11 @@ CS.START cld *-------------------------------------- .1 .DA LIB.LOAD .DA LIB.UNLOAD - .DA InitGFXA - .DA CloseGFX - .DA InitCursor - .DA SetCursorYA + .DA InitGUI.A +J.Cmds .DA CloseGUI J.Cmds-12 !!! + .DA Draw + .DA SetCursor.A + .DA SetCursorPos .DA HideCursor .DA ShowCursor .DA DrawLine @@ -65,21 +66,59 @@ LIB.LOAD LIB.UNLOAD clc rts *-------------------------------------- -InitGFXA sta hDev - >SYSCALL GetDevByIDA - >STYA GoDevGFX.1+1 +InitGUI.A sta hDev + >SYSCALL GetDevByID.A + >STYA GoDev.Jmp+1 clc rts *-------------------------------------- -CloseGFX +CloseGUI stz hDev sec rts *-------------------------------------- -InitCursor +Draw >PULLW ZPCmdPtr + + lda (ZPCmdPtr) Get Cmd + +.1 tax + cpx #S.CB.CMD.DRAWLINE + bcc .3 Native DRV Cmd + + ldy CB.CmdLen,x + +.2 lda (ZPCmdPtr),y Y=Byte count-1 to cache + sta CB.Cache,y + dey + bpl .2 + jsr Draw.Jmp + bra .7 + +.3 >LDYA ZPCmdPtr + + jsr GoDev.YA + +.7 lda (ZPCmdPtr) Get Cmd + tax + lda CB.CmdLen,x + sec + adc ZPCmdPtr + sta ZPCmdPtr + bcc .8 + inc ZPCmdPtr+1 + +.8 lda (ZPCmdPtr) Get Cmd + bne .1 + + clc + rts + +Draw.Jmp jmp (J.Cmds,x) *-------------------------------------- -SetCursorYA +SetCursor.A +*-------------------------------------- +SetCursorPos *-------------------------------------- HideCursor *-------------------------------------- @@ -98,12 +137,8 @@ ShowCursor * X2 * Y2 *-------------------------------------- -DrawLine ldy #S.CB.Y2+1 - jsr GetCB - +DrawLine lda CB.Cache+S.CB.X2 sec - - lda CB.Cache+S.CB.X2 sbc CB.Cache+S.CB.X1 sta DX @@ -116,8 +151,9 @@ DrawLine ldy #S.CB.Y2+1 ora DX bne .2 DX > 0... - ldx #DEVMGR.GFX.VLINE - jmp GoDevGFX DX=0 : VLIN Y1,Y2 At X1 + lda #S.CB.CMD.VLINE + sta CB.Cache+S.CB.CMD + jmp GoDev DX=0 : VLIN Y1,Y2 At X1 .1 >SWAP16 CB.Cache+S.CB.X1,CB.Cache+S.CB.X2 * >SWAP16 CB.Cache+S.CB.Y1,CB.Cache+S.CB.Y2 @@ -147,15 +183,17 @@ DrawLine ldy #S.CB.Y2+1 ora DY bne .4 - ldx #DEVMGR.GFX.HLINE - jmp GoDevGFX DY=0 : HLIN X1,X2 At Y1 + lda #S.CB.CMD.HLINE + sta CB.Cache+S.CB.CMD + jmp GoDev DY=0 : HLIN X1,X2 At Y1 .3 >NOT16 DY set DY=-DY lda #$ff sta IY set IY=-1 -.4 ldx #DEVMGR.GFX.SETPIXEL - jsr GoDevGFX +.4 lda #S.CB.CMD.SETPIXEL + sta CB.Cache+S.CB.CMD + jsr GoDev lda DX sec @@ -193,8 +231,7 @@ DrawLine.IncXY lda DX DX=DY adc IY sta CB.Cache+S.CB.Y1 - ldx #DEVMGR.GFX.SETPIXEL - jsr GoDevGFX + jsr GoDev bra .1 .8 rts @@ -277,8 +314,7 @@ DrawLine.IncY lda DY adc IY sta CB.Cache+S.CB.Y1 - ldx #DEVMGR.GFX.SETPIXEL - jsr GoDevGFX + jsr GoDev bra .1 .8 rts @@ -362,22 +398,14 @@ DrawLine.IncX lda DX bne .6 inc CB.Cache+S.CB.X1+1 -.6 ldx #DEVMGR.GFX.SETPIXEL - jsr GoDevGFX +.6 jsr GoDev bra .1 .8 rts *-------------------------------------- -GetCB >PULLW ZPCBPtr - -.1 lda (ZPCBPtr),y Y=Byte count to cache - sta CB.Cache,y - dey - bpl .1 - rts -*-------------------------------------- -GoDevGFX >LDYA L.CB.Cache -GoDevGFX.1 jmp $ffff +GoDev >LDYA L.CB.Cache +GoDev.YA ldx #DEVMGR.WRITE +GoDev.Jmp jmp $ffff *-------------------------------------- CS.END hDev .BS 1 @@ -390,6 +418,14 @@ D .BS 2 INE .BS 2 Counter .BS 2 *-------------------------------------- +CB.CmdLen .DA S.CB.Y1+1 SETPIXEL + .DA S.CB.Y1+1 GETPIXEL + .DA S.CB.X2+1 HLINE + .DA S.CB.Y2+1 VLINE + .DA S.CB.Y2+1 FILLRECT + .DA S.CB.DstPtr+1 BITBLT + .DA S.CB.Y2+1 DRAWLINE +*-------------------------------------- CB.Cache .BS S.CB *-------------------------------------- CUR.Arrow .DA #0 diff --git a/SBIN/GUI.S.txt b/SBIN/GUI.S.txt index d9532aa9..b7650b89 100644 --- a/SBIN/GUI.S.txt +++ b/SBIN/GUI.S.txt @@ -22,9 +22,10 @@ CS.START cld .DA #$61 6502,Level 1 (65c02) .DA #1 BIN Layout Version 1 .DA 0 - .DA CS.END-CS.START - .DA 0 - .DA 0 + .DA CS.END-CS.START CS + .DA DS.END-DS.START DS + .DA #16 SS + .DA #2 ZP .DA 0 *-------------------------------------- * Relocation Table @@ -33,30 +34,26 @@ CS.START cld .DA CS.RUN .DA CS.DOEVENT .DA CS.QUIT -L.LIBGFX .DA LIBGFX +L.LIBGUI .DA LIBGUI L.DEVNAME.GFX .DA DEVNAME.GFX L.DEVNAME.MOUSE .DA DEVNAME.MOUSE L.MSG.INIT .DA MSG.INIT L.MouseClamp .DA MouseClamp L.MouseData .DA MouseData +L.Rect.CB .DA Rect.CB L.SetPixel.CB .DA SetPixel.CB -L.DrawLine1.CB .DA DrawLine1.CB -L.DrawLine2.CB .DA DrawLine2.CB -L.DrawLine3.CB .DA DrawLine3.CB -L.DrawLine4.CB .DA DrawLine4.CB -L.DrawLine5.CB .DA DrawLine5.CB -L.DrawLine6.CB .DA DrawLine6.CB +L.DrawLines.CB .DA DrawLines.CB .DA 0 *-------------------------------------- CS.INIT >LDYA L.MSG.INIT >SYSCALL PrintF.YA - - >LDYA L.LIBGFX - >SYSCALL LoadLibYA - sta hLIBGFX + + >LDYA L.LIBGUI + >SYSCALL LoadLib.YA + sta hLIBGUI >LDYA L.DEVNAME.GFX - >SYSCALL GetDevByNameYA + >SYSCALL GetDevByName.YA bcc .10 rts @@ -69,7 +66,7 @@ CS.INIT >LDYA L.MSG.INIT jsr GoDevGFX .11 >LDYA L.DEVNAME.MOUSE - >SYSCALL GetDevByNameYA + >SYSCALL GetDevByName.YA bcc .20 inc DEVNAME.MOUSE+4 @@ -111,7 +108,7 @@ CS.INIT >LDYA L.MSG.INIT jsr GoDevMouse .21 lda hDevGFX - >LIBCALL hLibGFX,LIBGFX.InitGFXA + >LIBCALL hLIBGUI,LIBGUI.InitGUI.A lda (pPs) ora #S.PS.F.EVENT Now accept events @@ -158,9 +155,8 @@ CS.RUN lda A2osX.ASCREEN GUI screen active ? lda #1 sta SetPixel.Color - >LDYA L.SetPixel.CB - ldx #DEVMGR.GFX.SETPIXEL - jsr GoDevGFX + >PUSHW L.SetPixel.CB + >LIBCALL hLIBGUI,LIBGUI.Draw clc rts @@ -181,7 +177,10 @@ CS.DOEVENT sec CS.QUIT clc rts *-------------------------------------- -Destop.Paint lda #S.CB.MODE.C16 +Destop.Paint >PUSHW L.Rect.CB + >LIBCALL hLIBGUI,LIBGUI.Draw + + lda #S.CB.MODE.C16 sta SetPixel.Mode lda #0 @@ -195,10 +194,8 @@ Destop.Paint lda #S.CB.MODE.C16 lda /28 sta SetPixel.X+1 -.2 >LDYA L.SetPixel.CB - - ldx #DEVMGR.GFX.SETPIXEL - jsr GoDevGFX +.2 >PUSHW L.SetPixel.CB + >LIBCALL hLIBGUI,LIBGUI.Draw lda SetPixel.X clc @@ -225,19 +222,10 @@ Destop.Paint lda #S.CB.MODE.C16 cmp #16 bne .1 -.4 - >PUSHW L.DrawLine1.CB - >LIBCALL hLibGFX,LIBGFX.DrawLine - >PUSHW L.DrawLine2.CB - >LIBCALL hLibGFX,LIBGFX.DrawLine - >PUSHW L.DrawLine3.CB - >LIBCALL hLibGFX,LIBGFX.DrawLine - >PUSHW L.DrawLine4.CB - >LIBCALL hLibGFX,LIBGFX.DrawLine - >PUSHW L.DrawLine5.CB - >LIBCALL hLibGFX,LIBGFX.DrawLine - >PUSHW L.DrawLine6.CB - >LIBCALL hLibGFX,LIBGFX.DrawLine +.4 + + >PUSHW L.DrawLines.CB + >LIBCALL hLIBGUI,LIBGUI.Draw rts *-------------------------------------- @@ -247,34 +235,45 @@ GoDevGFX jmp $ffff GoDevMouse jmp $ffff *-------------------------------------- CS.END -DEVNAME.GFX >PSTR "GFX" -DEVNAME.MOUSE >PSTR "MOU1" -LIBGFX >PSTR "libgui.o" +DEVNAME.GFX >CSTR "GFX" +DEVNAME.MOUSE >CSTR "MOU1" +LIBGUI >CSTR "libgui.o" MSG.INIT >CSTR "DESKTOP:Init...\r\n" -hLibGFX .BS 1 +hLIBGUI .BS 1 hDevGFX .BS 1 hDevMouse .BS 1 MouseClamp .BS 8 MouseData .BS 5 *-------------------------------------- -SetPixel.CB .BS 1 hDC +Rect.CB .DA #S.CB.CMD.FILLRECT + .DA #S.CB.OP.ORA + .DA #S.CB.MODE.C16 + .DA #13 + .DA 30 + .DA 30 + .DA 530 + .DA 160 + .DA #0 +*-------------------------------------- +SetPixel.CB .DA #S.CB.CMD.SETPIXEL SetPixel.OP .BS 1 SetPixel.Mode .BS 1 SetPixel.Color .BS 1 SetPixel.X .BS 2 SetPixel.Y .BS 2 -*-------------------------------------- -DrawLine1.CB .BS 1 hDC .DA #0 +*-------------------------------------- +DrawLines.CB .DA #S.CB.CMD.DRAWLINE + .DA #S.CB.OP.ORA .DA #S.CB.MODE.C16 .DA #1 .DA 80 .DA 191 .DA 80+191 - .DA 0 + .DA 191+191 *-------------------------------------- -DrawLine2.CB .BS 1 hDC - .DA #0 + .DA #S.CB.CMD.DRAWLINE + .DA #S.CB.OP.ORA .DA #S.CB.MODE.MONO .DA #1 .DA 90 @@ -282,8 +281,8 @@ DrawLine2.CB .BS 1 hDC .DA 140 .DA 191 *-------------------------------------- -DrawLine3.CB .BS 1 hDC - .DA #0 + .DA #S.CB.CMD.DRAWLINE + .DA #S.CB.OP.ORA .DA #S.CB.MODE.MONO .DA #1 .DA 100 @@ -291,8 +290,8 @@ DrawLine3.CB .BS 1 hDC .DA 100+191 .DA 191 *-------------------------------------- -DrawLine4.CB .BS 1 hDC - .DA #0 + .DA #S.CB.CMD.DRAWLINE + .DA #S.CB.OP.ORA .DA #S.CB.MODE.MONO .DA #1 .DA 110 @@ -300,8 +299,8 @@ DrawLine4.CB .BS 1 hDC .DA 559 .DA 191 *-------------------------------------- -DrawLine5.CB .BS 1 hDC - .DA #0 + .DA #S.CB.CMD.DRAWLINE + .DA #S.CB.OP.ORA .DA #S.CB.MODE.MONO .DA #1 .DA 28 @@ -309,14 +308,22 @@ DrawLine5.CB .BS 1 hDC .DA 28 .DA 191 *-------------------------------------- -DrawLine6.CB .BS 1 hDC - .DA #0 + .DA #S.CB.CMD.DRAWLINE + .DA #S.CB.OP.ORA .DA #S.CB.MODE.MONO .DA #1 .DA 84 .DA 0 .DA 84 .DA 191 +*-------------------------------------- + .DA #0 +*-------------------------------------- + .DUMMY + .OR 0 +DS.START +DS.END + .ED MAN SAVE /A2OSX.SRC/SBIN/GUI.S ASM