From 41dad381404e429d0f5456f715b8688486ce3729 Mon Sep 17 00:00:00 2001 From: burniouf Date: Tue, 25 Oct 2022 08:05:54 +0200 Subject: [PATCH] LIBGUI:more API... --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes .Fonts/SYSx7.fnt | Bin 3472 -> 3472 bytes BIN/FNT2FON.S.txt | 147 +++--- INC/LIBGUI.I.txt | 42 +- INCLUDE/libgui.h.txt | 1 + LIB/LIBGUI.G.FON.txt | 5 +- LIB/LIBGUI.S.CB.txt | 25 +- LIB/LIBGUI.S.DRAW.txt | 3 - LIB/LIBGUI.S.FON.txt | 1 + LIB/LIBGUI.S.MBAR.txt | 447 ++++++++++------- LIB/LIBGUI.S.MBOX.txt | 11 + LIB/LIBGUI.S.MENU.txt | 470 ++++++++---------- LIB/LIBGUI.S.MOU.txt | 39 +- LIB/LIBGUI.S.OBJ.txt | 134 +++-- LIB/LIBGUI.S.SYSBAR.txt | 8 +- LIB/LIBGUI.S.WND.txt | 282 ++++------- LIB/LIBGUI.S.txt | 50 +- .../asmtest/TESTGUI.S.txt | 16 +- ROOT/ctest/testgui.c..txt | 15 +- SBIN/GUI.S.txt | 11 +- 20 files changed, 873 insertions(+), 834 deletions(-) create mode 100644 LIB/LIBGUI.S.MBOX.txt rename BIN/GUITEST1.S.txt => ROOT/asmtest/TESTGUI.S.txt (91%) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 0b3b3fcd04f02c76fd2b311fbbe873d6f1b8c3d7..ce1d5bfc1e86897f32943f5cfc3292ab84f6126e 100644 GIT binary patch delta 55463 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 X0)7U50e%I31AYhousp>7w4D53z3i_& delta 53809 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 delta 64 zcmbOrJwbXyB&Rk*Lc@WE1_p+L2@?tg5*QjDOqei%fuVt+0VL?a;Nai@VlOzbfPrCh R3#U0VL&Jg1`#3K#0|3cZ799Wp diff --git a/BIN/FNT2FON.S.txt b/BIN/FNT2FON.S.txt index 5f6694cf..4f0c4c5e 100644 --- a/BIN/FNT2FON.S.txt +++ b/BIN/FNT2FON.S.txt @@ -11,14 +11,19 @@ NEW .INB inc/libgui.i .INB inc/fnt.i *-------------------------------------- -ZPPTR1 .EQ ZPBIN -ZPInputBufPtr .EQ ZPBIN+2 -ZPInputTblPtr .EQ ZPBIN+4 -ZPInputBMPtr .EQ ZPBIN+6 -ZPCharBufPtr .EQ ZPBIN+8 -ZPOutPutTblPtr .EQ ZPBIN+10 -ZPOutPutCharOfs .EQ ZPBIN+12 -ZPOutPutBufPtr .EQ ZPBIN+14 + .DUMMY + .OR ZPBIN +ZS.START +ZPPTR1 .BS 2 +ZPInputBufPtr .BS 2 +ZPInputTblPtr .BS 2 +ZPInputBMPtr .BS 2 +ZPCharBufPtr .BS 2 +ZPOutPutTblPtr .BS 2 +ZPOutPutCharOfs .BS 2 +ZPOutPutBufPtr .BS 2 +TmpWord .BS 2 +ZS.END .ED *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- @@ -26,11 +31,12 @@ CS.START cld jmp (.1,x) .DA #$61 6502,Level 1 (65c02) .DA #1 BIN Layout Version 1 - .DA 0 - .DA CS.END-CS.START CS - .DA DS.END-DS.START DS - .DA #64 SS - .DA #16 ZP + .DA #0 S.PS.F.EVENT + .DA #0 + .DA CS.END-CS.START Code Size (without Constants) + .DA DS.END-DS.START Data Size + .DA #64 Stack Size + .DA #ZS.END-ZS.START Zero Page Size .DA 0 *-------------------------------------- * Relocation Table @@ -116,13 +122,17 @@ CS.INIT.OPENINPUT >SYSCALL LoadFile bcs CS.INIT.RTS - >PUSHYA + >STYA TmpWord txa >STA.G hInputBuf >SYSCALL GetMemPtr >STYA ZPInputBufPtr - >LDYA L.MSG.FILE.OK - >SYSCALL PutS + + >PUSHW L.MSG.FILE.OK + >PUSHW TmpWord + >PUSHBI 2 + >SYSCALL Printf + ldy #S.FNT.dfVersion lda (ZPInputBufPtr),y bne .99 @@ -134,28 +144,32 @@ CS.INIT.OPENINPUT cmp #3 bne .99 - +*-------------------------------------- .1 asl *2 = Entry Len in Tbl >STA.G FNT.Version pha - ldy #S.FNT.dfAscent - lda (ZPInputBufPtr),y - >STA.G FON.Header+S.FON.Ascent + + >PUSHW L.MSG.HEADER.OK + + pla >PUSHA + + ldy #S.FNT.dfPixWidth + lda (ZPInputBufPtr),y + >STA.G FON.Header+S.FON.PixW + >PUSHA ldy #S.FNT.dfPixHeight lda (ZPInputBufPtr),y >STA.G FON.Header+S.FON.PixH >PUSHA - ldy #S.FNT.dfPixWidth + ldy #S.FNT.dfAscent lda (ZPInputBufPtr),y - >STA.G FON.Header+S.FON.PixW - >PUSHA - - pla + >STA.G FON.Header+S.FON.Ascent >PUSHA - >LDYA L.MSG.HEADER.OK + + >PUSHBI 4 >SYSCALL PrintF clc rts @@ -185,9 +199,17 @@ CS.INIT.CREATEOUTPUT .9 rts *-------------------------------------- -CS.RUN ldy #S.FNT.dfBreakChar +CS.RUN >PUSHW L.MSG.RANGE + + ldy #S.FNT.dfFirstChar lda (ZPInputBufPtr),y - >STA.G FON.Header+S.FON.Break + >STA.G FON.Header+S.FON.First + >STA.G CharIndex + >PUSHA + + ldy #S.FNT.dfLastChar + lda (ZPInputBufPtr),y + >STA.G FON.Header+S.FON.Last >PUSHA ldy #S.FNT.dfDefaultChar @@ -195,17 +217,12 @@ CS.RUN ldy #S.FNT.dfBreakChar >STA.G FON.Header+S.FON.Default >PUSHA - ldy #S.FNT.dfLastChar + ldy #S.FNT.dfBreakChar lda (ZPInputBufPtr),y - >STA.G FON.Header+S.FON.Last + >STA.G FON.Header+S.FON.Break >PUSHA - ldy #S.FNT.dfFirstChar - lda (ZPInputBufPtr),y - >STA.G FON.Header+S.FON.First - >STA.G CharIndex - >PUSHA - >LDYA L.MSG.RANGE + >PUSHBI 4 >SYSCALL PrintF >LDA.G FON.Header+S.FON.Last @@ -239,10 +256,10 @@ CS.RUN ldy #S.FNT.dfBreakChar adc (pData),y sta (pData),y sta ZPOutPutCharOfs+1 - >LEA.G FileOffset - >PUSHYA - >PUSHBI SYS.FSeek.SET - >LDA.G hOutputFile + + >PUSHB.G hOutputFile + >PUSHL.G FileOffset + >PUSHBI SEEK.SET >SYSCALL FSeek bcc .1 @@ -317,7 +334,7 @@ CS.RUN.LOOP >SLEEP bcs .9 >LDYA L.MSG.DONE - >SYSCALL PrintF + >SYSCALL PutS lda #0 sec .9 rts @@ -386,15 +403,13 @@ CS.RUN.GetChar lda (ZPInputTblPtr) Get Char PixW *-------------------------------------- * Dump ZPCharBufPtr : CharByteW x FON.Header+S.FON.PixH *-------------------------------------- -CS.RUN.DumpChar >LDA.G CharOutByteW - >PUSHA - >LDA.G CharOutPixW - >PUSHA - >LDA.G CharIndex - >PUSHA - >PUSHA - >LDYA L.MSG.DUMP +CS.RUN.DumpChar >PUSHW L.MSG.DUMP + >PUSHB.G CharIndex + >PUSHB.G CharOutPixW + >PUSHB.G CharOutByteW + >PUSHBI 3 >SYSCALL PrintF + lda ZPCharBufPtr sta ZPPTR1 lda ZPCharBufPtr+1 @@ -683,9 +698,9 @@ CS.RUN.WriteByte clc bne .8 - >PUSHWI 256 + >PUSHB.G hOutputFile >PUSHW ZPOutPutBufPtr - >LDA.G hOutputFile + >PUSHWI 256 >SYSCALL FWrite bcs .9 @@ -703,11 +718,10 @@ CS.RUN.FlushOutPutBuf >LDA.G OutPutPtr beq .8 - tay - lda #0 - >PUSHYA + >PUSHB.G hOutputFile >PUSHW ZPOutPutBufPtr - >LDA.G hOutputFile + >PUSHBI 0 + >PUSHB.G OutPutPtr >SYSCALL FWrite .8 rts *-------------------------------------- @@ -715,24 +729,30 @@ CS.RUN.WriteBMAndTbl ldy #FileOffset ldx #4 lda #0 + .1 sta (pData),y iny dex bne .1 - >LEA.G FileOffset - >PUSHYA - >PUSHBI SYS.FSeek.SET - >LDA.G hOutputFile + >PUSHB.G hOutputFile + >PUSHL.G FileOffset + >PUSHBI SEEK.SET >SYSCALL FSeek bcs .9 - >PUSHWI S.FON + >PUSHB.G hOutputFile >PUSHEA.G FON.Header - >LDA.G hOutputFile + >PUSHWI S.FON >SYSCALL FWrite bcs .9 + >PUSHB.G hOutputFile + + >LDA.G hTblBuf + >SYSCALL GetMemPtr + >PUSHYA + >LDA.G FON.Header+S.FON.Last sec >SBC.G FON.Header+S.FON.First @@ -744,11 +764,6 @@ CS.RUN.WriteBMAndTbl ply >PUSHYA - >LDA.G hTblBuf - >SYSCALL GetMemPtr - >PUSHYA - - >LDA.G hOutputFile >SYSCALL FWrite clc .9 rts diff --git a/INC/LIBGUI.I.txt b/INC/LIBGUI.I.txt index cab50cb9..cd9b8098 100644 --- a/INC/LIBGUI.I.txt +++ b/INC/LIBGUI.I.txt @@ -144,33 +144,37 @@ S.WND.hCUR .EQ S.OBJ+16 * S.WND.TitleX1 .EQ S.OBJ+18 S.WND.TitleX2 .EQ S.OBJ+20 +* +S.WND.TBarY1 .EQ S.OBJ+20 S.WND.TBarY2 .EQ S.OBJ+22 S.WND.MBarY1 .EQ S.OBJ+22 S.WND.MBarY2 .EQ S.OBJ+24 -S.WND.InnerY1 .EQ S.OBJ+24 -S.WND.InnerY2 .EQ S.OBJ+26 -S.WND.SBarY1 .EQ S.OBJ+26 -S.WND.InnerW .EQ S.OBJ+28 -S.WND.InnerH .EQ S.OBJ+30 -S.WND.DocW .EQ S.OBJ+32 -S.WND.DocH .EQ S.OBJ+34 -S.WND.DocX .EQ S.OBJ+36 -S.WND.DocY .EQ S.OBJ+38 -S.WND.fPaint .EQ S.OBJ+40 +S.WND.InnerY1 .EQ S.OBJ+26 +S.WND.InnerY2 .EQ S.OBJ+28 +S.WND.SBarY1 .EQ S.OBJ+28 + +S.WND.InnerW .EQ S.OBJ+32 +S.WND.InnerH .EQ S.OBJ+34 +S.WND.DocW .EQ S.OBJ+36 +S.WND.DocH .EQ S.OBJ+38 +S.WND.DocX .EQ S.OBJ+40 +S.WND.DocY .EQ S.OBJ+42 +S.WND.fPaint .EQ S.OBJ+44 * -S.WND .EQ S.OBJ+42 +S.WND .EQ S.OBJ+46 *-------------------------------------- -S.MBAR.Selected .EQ S.OBJ -S.MBAR.Items .EQ S.OBJ+2 +S.MBAR.Items .EQ S.OBJ * *-------------------------------------- -S.MBITEM.X1 .EQ 0 -S.MBITEM.XT .EQ 2 -S.MBITEM.X2 .EQ 4 -S.MBITEM.pTEXT .EQ 6 -S.MBITEM.pMENU .EQ 8 +S.MBITEM.T .EQ 0 +S.MBITEM.T.SUBMENU .EQ 6 +S.MBITEM.S .EQ 1 +S.MBITEM.S.SELECTED .EQ %10000000 +S.MBITEM.W .EQ 2 +S.MBITEM.pTEXT .EQ 4 +S.MBITEM.pMENU .EQ 6 * -S.MBITEM .EQ 10 +S.MBITEM .EQ 8 *-------------------------------------- S.MENU.hSAVEBUF .EQ S.OBJ+0 S.MENU.iW .EQ S.OBJ+2 diff --git a/INCLUDE/libgui.h.txt b/INCLUDE/libgui.h.txt index 61174bd3..b44ad47e 100644 --- a/INCLUDE/libgui.h.txt +++ b/INCLUDE/libgui.h.txt @@ -3,6 +3,7 @@ NEW #define C_BLACK 0 #define C_WHITE 255 +#define pC_WHITE ((void *)255) #define PTR_T_ARROW 0 #define PTR_T_MOVE 2 diff --git a/LIB/LIBGUI.G.FON.txt b/LIB/LIBGUI.G.FON.txt index 61ed4db7..0d1bc7cc 100644 --- a/LIB/LIBGUI.G.FON.txt +++ b/LIB/LIBGUI.G.FON.txt @@ -3,9 +3,10 @@ NEW *-------------------------------------- hSYSFON .BS 1 hSYSFONB .BS 1 -SYSFON.H .BS 1 -SYSFON.Hp2 .BS 1 SYSFON.Hm1 .BS 1 +SYSFON.H .BS 1 +SYSFON.Hp1 .BS 1 +SYSFON.Hp2 .BS 1 *-------------------------------------- MAN SAVE usr/src/lib/libgui.g.fon diff --git a/LIB/LIBGUI.S.CB.txt b/LIB/LIBGUI.S.CB.txt index ad3ad5e4..4150650f 100644 --- a/LIB/LIBGUI.S.CB.txt +++ b/LIB/LIBGUI.S.CB.txt @@ -22,6 +22,14 @@ CB.GetInCache >STYA .1+1 rts *-------------------------------------- +CB.GetWndYCacheX + lda (ZPWNDPtr),y + sta CB.Cache,x + iny + lda (ZPWNDPtr),y + sta CB.Cache+1,x + rts +*-------------------------------------- CB.GetBuf clc ldx hCBBuf @@ -32,7 +40,6 @@ CB.GetBuf clc bcs .9 stx hCBBuf - >STYA ZPCBPtr >STYA ZPCBBufPtr .9 rts @@ -71,16 +78,20 @@ CB.FlushBufToYA ldx hCBBuf .1 lda #0 sta (ZPCBBufPtr) + + lda hCBBuf + >SYSCALL2 GetMemPtr + >STYA ZPCBBufPtr ply pla jsr OBJ.GetInCache -.2 lda (ZPCBPtr) +.2 lda (ZPCBBufPtr) beq .7 - >LDYA ZPCBPtr + >LDYA ZPCBBufPtr jsr CB.GetInCache A = CB.CMD cmp #S.CB.CMD.DRAWTEXT2 @@ -105,16 +116,16 @@ CB.FlushBufToYA ldx hCBBuf jsr CB.GFXWrite -.5 lda (ZPCBPtr) Get Cmd +.5 lda (ZPCBBufPtr) Get Cmd lsr tax lda CB.CmdLen-1,x sec +1 - adc ZPCBPtr - sta ZPCBPtr + adc ZPCBBufPtr + sta ZPCBBufPtr bcc .2 - inc ZPCBPtr+1 + inc ZPCBBufPtr+1 bra .2 .7 lda hCBBuf diff --git a/LIB/LIBGUI.S.DRAW.txt b/LIB/LIBGUI.S.DRAW.txt index 42aeafe6..f2e9b13e 100644 --- a/LIB/LIBGUI.S.DRAW.txt +++ b/LIB/LIBGUI.S.DRAW.txt @@ -365,10 +365,7 @@ DRAW.YAText >STYA CB.Cache+S.CB.TxtPtr bra DRAW.Text *-------------------------------------- DRAW.YATextAtDXDY - phx - jsr CB.ClearCache >STYA CB.Cache+S.CB.TxtPtr - plx stx CB.Cache+S.CB.hFont ldx #3 diff --git a/LIB/LIBGUI.S.FON.txt b/LIB/LIBGUI.S.FON.txt index 3018ce7f..7e2d36ad 100644 --- a/LIB/LIBGUI.S.FON.txt +++ b/LIB/LIBGUI.S.FON.txt @@ -21,6 +21,7 @@ FON.Init >LDYA L.SYSX7 inc sta SYSFON.H inc + sta SYSFON.Hp1 inc sta SYSFON.Hp2 diff --git a/LIB/LIBGUI.S.MBAR.txt b/LIB/LIBGUI.S.MBAR.txt index 24fc9d58..58523d31 100644 --- a/LIB/LIBGUI.S.MBAR.txt +++ b/LIB/LIBGUI.S.MBAR.txt @@ -3,132 +3,236 @@ NEW *-------------------------------------- * Y,A = MBAR definition *-------------------------------------- -MBAR.New >STYA ZPMENUPtr MBAR definition - >STYA ZPPtr1 for pass #2 +MBAR.New >STYA ZPPtr1 MBAR definition + >STYA ZPObjPtr for pass #2 - lda #S.MBAR.Items+1 Ending\0 - sta Counter - stz Counter+1 - -.10 lda (ZPMENUPtr) - beq .3 - - ldy #$ff - -.1 iny - lda (ZPMENUPtr),y - bne .1 - - tya - - sec text Ending\0 - - inc - inc skip pMENU - adc ZPMENUPtr - sta ZPMENUPtr - bcc .2 - - inc ZPMENUPtr+1 - -.2 tya - sec - adc #S.MBITEM - - adc Counter - sta Counter - bcc .10 - - inc Counter+1 - bra .10 - -.3 >LDYA Counter + jsr MBAR.GetSize >SYSCALL2 GetMem bcs .9 - - >STYA ZPObjPtr - + + >STYA ZPMENUPtr + phx hMBAR - - ldy #S.OBJ-1 + lda #S.OBJ.T.MBAR - jsr OBJ.Init - - lda #S.MBAR.Items + sta (ZPMENUPtr) S.OBJ.T + + lda #0 + + ldy #S.MBAR.Items-1 + +.1 sta (ZPMENUPtr),y + dey + bne .1 + + >LDYA ZPObjPtr + >STYA ZPPtr1 MENU definition + + jsr MBAR.GetData + + pla hMBAR clc - adc ZPObjPtr - sta ZPObjPtr - bcc .4 - - inc ZPObjPtr+1 - -.4 stz DX - stz DX+1 - -.5 lda (ZPPtr1) +.9 rts +*-------------------------------------- +* ZPPtr1 = defintion +*-------------------------------------- +MBAR.GetSize lda #S.MBAR.Items+1 Ending\0 + sta Counter + stz Counter+1 + +.1 lda (ZPPtr1) beq .8 - >LDYA DX - jsr OBJ.AddWord S.MBITEM.X1 + ldy #$ff - lda DX +.2 iny + lda (ZPPtr1),y + bne .2 + + tya + + sec text Ending\0 + + inc + inc skip pMENU + jsr SkipAPtr1 + + lda #S.MBITEM clc - adc PREFS.MBARXMARGIN - sta DX - bcc .6 + adc Counter + sta Counter + bcc .1 - sta DX+1 + inc Counter+1 + bra .1 -.6 >LDYA DX - jsr OBJ.AddWord S.MBITEM.XT +.8 >LDYA Counter + rts +*-------------------------------------- +* ZPPtr1 = defintion +* ZPMENUPtr = DstBuf +*-------------------------------------- +MBAR.GetData lda ZPMENUPtr + clc + adc #S.MBAR.Items + sta ZPMENUPtr + bcc .1 + + inc ZPMENUPtr+1 + +.1 lda (ZPPtr1) + beq .8 + + lda #S.MBITEM.T.SUBMENU + jsr MBAR.AddByte + + lda #0 S.MBITEM.S + jsr MBAR.AddByte >LDYA ZPPtr1 pTEXT ldx hSYSFON jsr FON.GetTextSize - lda DX + lda PREFS.MBarXMargin + asl x2 clc adc CB.CACHE+S.CB.SrcW - sta DX + tay - lda DX+1 + lda #0 adc CB.CACHE+S.CB.SrcW+1 - sta DX+1 - - >LDYA DX - jsr OBJ.AddWord S.MBITEM.X2 + jsr MBAR.AddWord S.MBITEM.W >LDYA ZPPtr1 pTEXT - jsr OBJ.AddWord + jsr MBAR.AddWord jsr SkipStrZPtr1 skip "TEXT\0" - + ldy #1 lda (ZPPtr1),y - jsr OBJ.AddByte pMENU+1 - + jsr MBAR.AddByte pMENU+1 + lda (ZPPtr1) - jsr OBJ.AddByte pMENU - - lda ZPPtr1 - clc - adc #2 - sta ZPPtr1 - bcc .5 - - inc ZPPtr1+1 - bra .5 stkip pMENU - -.8 pla hMBAR - clc + jsr MBAR.AddByte pMENU + + lda #2 + jsr SkipAPtr1 stkip pMENU + bra .1 + +.8 sta (ZPMENUPtr) + rts +*-------------------------------------- +MBAR.AddWord pha + + tya + jsr MBAR.AddByte + pla + +MBAR.AddByte sta (ZPMENUPtr) + inc ZPMENUPtr + bne .8 + + inc ZPMENUPtr+1 + +.8 rts +*-------------------------------------- +* ZPWNDPtr parent WND +* MSG.X1, MSG.Y1 +*-------------------------------------- +MBAR.Enter ldy #S.WND.pMBAR + lda (ZPWNDPtr),y + >SYSCALL2 GetMemPtr + >STYA ZPMENUPtr pMBAR + + jsr MBAR.GetMBItems + + ldy #S.OBJ.X1 + ldx #S.CB.X1 + jsr CB.GetWndYCacheX + +.1 lda (ZPPtr1) + beq .8 + + jsr MBAR.SetX2 + + lda MSG+S.MSG.X1 + cmp CB.Cache+S.CB.X1 + lda MSG+S.MSG.X1+1 + sbc CB.Cache+S.CB.X1+1 + bcc .7 + + lda CB.Cache+S.CB.X2 + cmp MSG+S.MSG.X1 + lda CB.Cache+S.CB.X2+1 + sbc MSG+S.MSG.X1+1 + bcc .7 +* >DEBUG + ldy #S.MBITEM.S + lda (ZPPtr1),y + ora #S.MBITEM.S.SELECTED + sta (ZPPtr1),y + + jsr MENU.DestroyAll + + jsr CB.GetBuf + bcs .9 + + jsr MBAR.DrawMBItem + + >LDYA L.WND.Screen + jmp CB.FlushBufToYA + +.7 lda CB.Cache+S.CB.X2 + sta CB.Cache+S.CB.X1 + lda CB.Cache+S.CB.X2+1 + sta CB.Cache+S.CB.X1+1 + + lda #S.MBITEM + jsr SkipAPtr1 + bra .1 + +.8 clc .9 rts *-------------------------------------- -*-------------------------------------- +MBAR.Leave + + clc + rts *-------------------------------------- * ZPWNDPtr = parent WND *-------------------------------------- -MBAR.Paint lda #S.CB.CMD.FILLRECT - jsr CB.InitCacheA +MBAR.Draw >SYSCALL2 GetMemPtr + >STYA ZPMENUPtr pMBAR + + ldy #S.OBJ.X1 + ldx #S.CB.X1 + jsr CB.GetWndYCacheX + + jsr MBAR.GetMBItems + +.1 lda (ZPPtr1) + beq .8 + + jsr MBAR.SetX2 + + jsr MBAR.DrawMBItem + bcs .9 + + lda CB.Cache+S.CB.X2 + sta CB.Cache+S.CB.X1 + lda CB.Cache+S.CB.X2+1 + sta CB.Cache+S.CB.X1+1 + + lda #S.MBITEM + jsr SkipAPtr1 + bra .1 + +.8 clc + +.9 rts +*-------------------------------------- +MBAR.DrawMBItem lda #S.CB.CMD.FILLRECT + sta CB.Cache+S.CB.CMD lda #S.CB.OP.SET sta CB.Cache+S.CB.OP @@ -136,123 +240,86 @@ MBAR.Paint lda #S.CB.CMD.FILLRECT lda #S.CB.M.MONO sta CB.Cache+S.CB.M - lda PREFS.MBARCOLOR - sta CB.Cache+S.CB.COLOR + ldy #S.MBITEM.S + lda (ZPPtr1),y + asl + + lda PREFS.MBarColor + bcc .1 + + eor #$ff - ldy #S.OBJ.X1 - lda (ZPWNDPtr),y +.1 sta CB.Cache+S.CB.COLOR + + jsr MBAR.SetY1Y2 + + jsr CB.Cache2CBBuf + + lda PREFS.MBarXMargin + clc + adc CB.Cache+S.CB.X1 sta CB.Cache+S.CB.X1 + bcc .10 + + inc CB.Cache+S.CB.X1+1 +.10 inc CB.Cache+S.CB.Y1 + bne .11 + + inc CB.Cache+S.CB.Y1+1 + +.11 ldy #S.MBITEM.S + lda (ZPPtr1),y + asl + + ldy #S.MBITEM.pTEXT + lda (ZPPtr1),y + pha iny - lda (ZPWNDPtr),y - sta CB.Cache+S.CB.X1+1 + lda (ZPPtr1),y + ply + ldx hSYSFON + jsr DRAW.YAText + + jmp CB.Cache2CBBuf +*-------------------------------------- +MBAR.GetMBItems lda ZPMENUPtr + clc + adc #S.MBAR.Items + sta ZPPtr1 - ldy #S.OBJ.X2 - lda (ZPWNDPtr),y + lda ZPMENUPtr+1 + adc /S.MBAR.Items + sta ZPPtr1+1 + rts +*-------------------------------------- +MBAR.SetX2 lda CB.Cache+S.CB.X1 + clc + ldy #S.MBITEM.W + adc (ZPPtr1),y sta CB.Cache+S.CB.X2 - + + lda CB.Cache+S.CB.X1+1 iny - lda (ZPWNDPtr),y + adc (ZPPtr1),y sta CB.Cache+S.CB.X2+1 - - ldy #S.WND.MBarY1 + + rts +*-------------------------------------- +MBAR.SetY1Y2 ldy #S.WND.MBarY1 lda (ZPWNDPtr),y sta CB.Cache+S.CB.Y1 - iny lda (ZPWNDPtr),y sta CB.Cache+S.CB.Y1+1 - iny #S.WND.MBarY2 + ldy #S.WND.MBarY2 lda (ZPWNDPtr),y sta CB.Cache+S.CB.Y2 - iny lda (ZPWNDPtr),y sta CB.Cache+S.CB.Y2+1 - jsr CB.Cache2CBBuf - - ldy #S.WND.pMBAR - lda (ZPWNDPtr),y - sta ZPMENUPtr - iny - lda (ZPWNDPtr),y - sta ZPMENUPtr+1 - -.1 lda (ZPMENUPtr) - beq .8 - - jsr CB.ClearCache - - lda #S.CB.CMD.DRAWTEXT2 - 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 hSYSFON - sta CB.CACHE+S.CB.hFont - - ldy #S.MBITEM.XT - lda (ZPMENUPtr),y - clc - ldy #S.OBJ.X1 - adc (ZPWNDPtr),y - sta CB.CACHE+S.CB.X1 - - ldy #S.MBITEM.XT+1 - lda (ZPMENUPtr),y - ldy #S.OBJ.X1+1 - adc (ZPWNDPtr),y - sta CB.CACHE+S.CB.X1+1 - - ldy #S.WND.MBarY1 - lda (ZPWNDPtr),y - clc - adc #1 - sta CB.CACHE+S.CB.Y1 - iny - lda (ZPWNDPtr),y - adc #0 - sta CB.CACHE+S.CB.Y1+1 - - lda #S.MBITEM.pTEXT - clc - adc ZPMENUPtr - sta CB.CACHE+S.CB.TxtPtr - - lda #0 - adc ZPMENUPtr+1 - sta CB.CACHE+S.CB.TxtPtr+1 - - jsr CB.Cache2CBBuf - - lda (ZPMENUPtr) - clc - adc ZPMENUPtr - sta ZPMENUPtr - bcc .1 - inc ZPMENUPtr+1 - bra .1 - -.8 clc - - rts -*-------------------------------------- -* ZPWNDPtr parent WND -* MSG.X1, MSG.Y1 -*-------------------------------------- -MBAR.Enter - -* >DEBUG -*-------------------------------------- -MBAR.Leave - - clc rts *-------------------------------------- MAN diff --git a/LIB/LIBGUI.S.MBOX.txt b/LIB/LIBGUI.S.MBOX.txt new file mode 100644 index 00000000..10c77c32 --- /dev/null +++ b/LIB/LIBGUI.S.MBOX.txt @@ -0,0 +1,11 @@ +NEW + AUTO 3,1 +*-------------------------------------- +* MsgBox(hWND, pTITLE, pTEXT, pBM, iButtons) +*-------------------------------------- + +*-------------------------------------- +MAN +SAVE usr/src/lib/libgui.s.mbox +LOAD usr/src/lib/libgui.s +ASM diff --git a/LIB/LIBGUI.S.MENU.txt b/LIB/LIBGUI.S.MENU.txt index cbe7eadc..c8159d25 100644 --- a/LIB/LIBGUI.S.MENU.txt +++ b/LIB/LIBGUI.S.MENU.txt @@ -9,8 +9,8 @@ MENU.New >PULLW DY >STYA ZPPtr1 MENU definition >STYA ZPObjPtr for pass #2 - ldy MENU.Stack.Cnt - cpy #MENU.MAX + ldx MENU.Stack.Cnt + cpx #MENU.MAX beq .90 jsr MENU.GetSize @@ -65,7 +65,7 @@ MENU.New >PULLW DY .90 lda #E.OOH sec -.99 +.99 MENU.New.RTS rts *-------------------------------------- * ZPPtr1 = defintion @@ -73,7 +73,7 @@ MENU.New.RTS rts MENU.GetSize lda #S.MENU.Items+1 Ending\0 sta Counter stz Counter+1 - + .1 lda (ZPPtr1) beq .8 @@ -82,19 +82,19 @@ MENU.GetSize lda #S.MENU.Items+1 Ending\0 adc Counter sta Counter bcc .2 - + inc Counter+1 .2 lda (ZPPtr1) cmp #S.MITEM.T.SEP bne .3 - + inc ZPPtr1 bne .1 - + inc ZPPtr1+1 bra .1 - + .3 cmp #S.MITEM.T.ITEM bne .4 @@ -120,23 +120,23 @@ MENU.GetData lda ZPMENUPtr bcc .1 inc ZPMENUPtr+1 - + .1 lda (ZPPtr1) sta (ZPMENUPtr) beq .8 cmp #S.MITEM.T.SEP bne .2 - + inc ZPPtr1 skip 1 byte bne .5 - + inc ZPPtr1+1 bra .5 *-------------------------------------- .2 cmp #S.MITEM.T.ITEM bne .3 - + ldy #1 T+ID+KEMOD+KEY+pICON+"text" lda (ZPPtr1),y ldy #S.MITEM.ID @@ -147,7 +147,7 @@ MENU.GetData lda ZPMENUPtr tax iny lda (ZPPtr1),y - + ldy #S.MITEM.KEYMOD+1 sta (ZPMENUPtr),y dey KEY @@ -156,7 +156,7 @@ MENU.GetData lda ZPMENUPtr lda #4 bra .4 skip 4 bytes -*-------------------------------------- +*-------------------------------------- .3 ldy #1 skip T+pMENU+pICON+"text" lda (ZPPtr1),y tax @@ -169,7 +169,7 @@ MENU.GetData lda ZPMENUPtr txa sta (ZPMENUPtr),y lda #3 skip 3 bytes - + .4 jsr SkipAPtr1 ldy #1 @@ -179,29 +179,29 @@ MENU.GetData lda ZPMENUPtr dey lda (ZPPtr1) sta (ZPMENUPtr),y - + lda #2 skip pICON jsr SkipAPtr1 - + ldy #S.MITEM.pTEXT lda ZPPtr1 sta (ZPMENUPtr),y iny lda ZPPtr1+1 sta (ZPMENUPtr),y - + jsr SkipStrZPtr1 skip "TEXT\0" ldy #S.MITEM.S lda #0 sta (ZPMENUPtr),y - + .5 lda ZPMENUPtr clc adc #S.MITEM sta ZPMENUPtr bcc .1 - + inc ZPMENUPtr+1 bra .1 @@ -418,7 +418,21 @@ MENU.FindMItemByID .9 sec rts *-------------------------------------- -MENU.Enter jsr MENU.GetDXDYW +MENU.Enter jsr MENU.GetDXDY + + stz D + stz D+1 + + ldy #S.OBJ.X2 + lda DX X1 + clc + adc (ZPMENUPtr),y + sta IE IE = X2 + + iny + lda DX+1 + adc (ZPMENUPtr),y + sta IE+1 jsr MENU.GetMItems @@ -429,8 +443,8 @@ MENU.Enter jsr MENU.GetDXDYW beq .2 lda DY Y1 - sec - adc SYSFON.H + clc + adc SYSFON.Hp2 sta INE INE = Y2 lda DY+1 adc #0 @@ -443,192 +457,129 @@ MENU.Enter jsr MENU.GetDXDYW ldy #S.MITEM.S lda (ZPPtr1),y bpl .2 - + eor #S.MITEM.S.SELECTED sta (ZPPtr1),y was selected before... jsr CB.GetBuf bcs .9 - - jsr MENU.ResetX1Y1X2 + jsr MENU.DrawMItem .2 jsr MENU.NextMItemDY bra .1 - +*-------------------------------------- .3 ldy #S.MITEM.S lda (ZPPtr1),y - bmi .8 already selected, nothing to do - >DEBUG + bmi .5 already selected, nothing to do + eor #S.MITEM.S.SELECTED sta (ZPPtr1),y - + jsr CB.GetBuf bcs .9 - jsr MENU.ResetX1Y1X2 jsr MENU.DrawMItem - lda (ZPPtr1) +.30 ldx MENU.Stack.Idx + inx + cpx MENU.Stack.Cnt + beq .31 + + jsr MENU.Destroy + bra .30 + +.31 lda (ZPPtr1) cmp #S.MITEM.T.SUBMENU - bne .1 + bne .2 -* >LDYA L.WND.Screen -* jsr CB.FlushBufToYA + ldy #S.MITEM.pMENU + lda (ZPPtr1),y + sta D + iny + lda (ZPPtr1),y + sta D+1 -* jsr MENU.NewSubMenu -* bcs .9 - - bra .1 + lda DY + sta Counter + lda DY+1 + sta Counter+1 + bra .2 +*-------------------------------------- +.8 clc +.9 rts +*-------------------------------------- .4 >LDYA L.WND.Screen - jmp CB.FlushBufToYA + jsr CB.FlushBufToYA - lda MSG+S.MSG.S + lda D + ora D+1 + beq .5 + + >PUSHW D pMENU + + ldy #S.OBJ.X2+1 + lda (ZPMENUPtr),y + >PUSHA + dey + lda (ZPMENUPtr),y + >PUSHA + + >PUSHW Counter + + jsr MENU.New + bcs .9 + + jmp MENU.Draw +*-------------------------------------- +.5 lda MSG+S.MSG.S bit #S.MSG.S.CLK beq .8 lda #S.MSG.T.ID sta MSG+S.MSG.T - + ldy #S.MITEM.ID lda (ZPPtr1),y sta MSG+S.MSG.ID jmp MENU.DestroyAll - -.8 clc -.9 rts -*-------------------------------------- -MENU.NewSubMenu lda DX - clc - adc Counter W - sta DX - - lda DX+1 - adc Counter+1 - sta DX+1 - - ldy #S.MITEM.pMENU+1 - lda (ZPPtr1),y - >PUSHA - dey - lda (ZPPtr1),y - >PUSHA - - >PUSHW DX X1 - >PUSHW DY Y1 - - jsr MENU.New - bcs .9 - - pha hMENU - - jsr MENU.Draw - plx - bcs .9 - - txa - -.9 rts *-------------------------------------- * DrawMenu(hMENU) *-------------------------------------- MENU.Draw >SYSCALL2 GetMemPtr >STYA ZPMENUPtr - + jsr MENU.Save bcs .9 jsr CB.GetBuf bcs .9 - jsr MENU.DrawBorders + >LDYA ZPMENUPtr + ldx #0 + jsr OBJ.DrawBorders - jsr MENU.GetDXDYW + jsr MENU.GetDXDY jsr MENU.GetMItems .1 lda (ZPPtr1) beq .8 - jsr MENU.ResetX1Y1X2 jsr MENU.DrawMItem jsr MENU.NextMItemDY bra .1 .8 >LDYA L.WND.Screen - jsr CB.FlushBufToYA + jmp CB.FlushBufToYA .9 rts *-------------------------------------- -MENU.DrawBorders - lda #S.CB.CMD.HLINE - jsr CB.InitCacheA +MENU.DrawMItem jsr MENU.ResetX1Y1X2 - lda #S.CB.OP.SET - sta CB.Cache+S.CB.OP - lda #S.CB.M.MONO - sta CB.Cache+S.CB.M - lda PREFS.BORDERCOLOR - sta CB.Cache+S.CB.COLOR - - ldy #S.OBJ.X2+1 - ldx #5 - -.1 lda (ZPMENUPtr),y - sta CB.Cache+S.CB.X1,x - dey - dex - bpl .1 - - lda CB.Cache+S.CB.Y1 - sta CB.Cache+S.CB.Y2 - lda CB.Cache+S.CB.Y1+1 - sta CB.Cache+S.CB.Y2+1 top X1,Y1,X2,Y1 - - jsr CB.Cache2CBBuf - - ldy #S.OBJ.Y2 - lda (ZPMENUPtr),y - sta CB.Cache+S.CB.Y1 - sta CB.Cache+S.CB.Y2 - iny - lda (ZPMENUPtr),y - sta CB.Cache+S.CB.Y1+1 - sta CB.Cache+S.CB.Y2+1 bottom X1,Y2,X2,Y2 - - jsr CB.Cache2CBBuf - - lda #S.CB.CMD.VLINE - sta CB.Cache+S.CB.CMD - - ldy #S.OBJ.Y1 - lda (ZPMENUPtr),y - sta CB.Cache+S.CB.Y1 - iny - lda (ZPMENUPtr),y - sta CB.Cache+S.CB.Y1+1 - - lda CB.Cache+S.CB.X1 - sta CB.Cache+S.CB.X2 - lda CB.Cache+S.CB.X1+1 - sta CB.Cache+S.CB.X2+1 left X1,Y1,X1,Y2 - - jsr CB.Cache2CBBuf - - ldy #S.OBJ.X2 - lda (ZPMENUPtr),y - sta CB.Cache+S.CB.X1 - sta CB.Cache+S.CB.X2 - iny - lda (ZPMENUPtr),y - sta CB.Cache+S.CB.X1+1 - sta CB.Cache+S.CB.X2+1 right X2,Y1,X2,Y2 - - jmp CB.Cache2CBBuf -*-------------------------------------- -MENU.DrawMItem lda (ZPPtr1) + lda (ZPPtr1) cmp #S.MITEM.T.SEP bne MENU.DrawMItem1 @@ -639,7 +590,7 @@ MENU.DrawMItem lda (ZPPtr1) lda #S.CB.M.MONO sta CB.Cache+S.CB.M - lda PREFS.BORDERCOLOR + lda PREFS.BorderColor sta CB.Cache+S.CB.COLOR jmp CB.Cache2CBBuf @@ -651,7 +602,7 @@ MENU.DrawMItem1 lda #S.CB.CMD.FILLRECT lda #S.CB.M.MONO sta CB.Cache+S.CB.M - ldx PREFS.MENUCOLOR + ldx PREFS.MenuColor jsr MENU.IsSelected bcc .15 @@ -661,13 +612,12 @@ MENU.DrawMItem1 lda #S.CB.CMD.FILLRECT .15 stx CB.Cache+S.CB.COLOR - lda DY - sta CB.Cache+S.CB.Y1 + lda CB.Cache+S.CB.Y1 sec adc SYSFON.H sta CB.Cache+S.CB.Y2 - lda DY+1 - sta CB.Cache+S.CB.Y1+1 + + lda CB.Cache+S.CB.Y1+1 adc #0 sta CB.Cache+S.CB.Y2+1 jsr CB.Cache2CBBuf @@ -695,7 +645,6 @@ MENU.DrawMItem1 lda #S.CB.CMD.FILLRECT ldy #S.MENU.iW adc (ZPMENUPtr),y sta CB.Cache+S.CB.X1 - bcc .21 inc CB.Cache+S.CB.X1+1 @@ -719,7 +668,7 @@ MENU.DrawMItem1 lda #S.CB.CMD.FILLRECT lda (ZPPtr1) cmp #S.MITEM.T.ITEM bne .3 - + jsr MENU.GetKeyString bcs .3 @@ -781,7 +730,7 @@ MENU.IsSelected phy rts *-------------------------------------- MENU.GetText ldy #S.MITEM.pTEXT - + lda (ZPPtr1),y pha iny @@ -802,10 +751,10 @@ MENU.GetKeyString lda (ZPPtr1),y beq .3 - + bit #KEYMOD.CTRL beq .1 - + ldy #KEYMOD.S.CTRL jsr .4 @@ -817,7 +766,7 @@ MENU.GetKeyString .2 bit #KEYMOD.CA beq .3 - + ldy #KEYMOD.S.CA jsr .4 @@ -835,7 +784,7 @@ MENU.GetKeyString .5 lda KEYMOD.S,y sta TEXTBUF,x beq .6 - + inx iny bra .5 @@ -893,83 +842,7 @@ MENU.Save lda #S.CB.CMD.GETRECTBUFSIZE .9 rts *-------------------------------------- -MENU.DestroyAll sec - .HS 90 BCC -MENU.Destroy clc - - ldx MENU.Stack.Cnt - beq .8 - - php - - bit PTR.bVisible - bpl .1 - - jsr PTR.Hide.I - -.1 lda #S.CB.CMD.BITBLT - jsr CB.InitCacheA - - lda #S.CB.OP.RESTORE - sta CB.Cache+S.CB.OP - - plp - -.2 php - - ldx MENU.Stack.Cnt - lda MENU.Stack-1,x - >SYSCALL2 GetMemPtr - >STYA ZPMENUPtr - - ldy #S.OBJ.X1 - ldx #0 - -.3 lda (ZPMENUPtr),y - sta CB.Cache+S.CB.X1,x - iny - inx - cpx #8 X1,Y1,X2,Y2 - bne .3 - - ldy #S.OBJ.W - ldx #0 - -.4 lda (ZPMENUPtr),y - sta CB.Cache+S.CB.SrcW,x - iny - inx - cpx #4 W,H - bne .4 - - ldy #S.MENU.hSAVEBUF - lda (ZPMENUPtr),y - sta CB.Cache+S.CB.DstPtr - - jsr CB.GFXWrite - - lda CB.Cache+S.CB.DstPtr - >SYSCALL2 FreeStkObj - - ldx MENU.Stack.Cnt - lda MENU.Stack-1,x - >SYSCALL2 FreeMem - - plp - dec MENU.Stack.Cnt - bcc .7 - - bne .2 - -.7 bit PTR.bVisible - bpl .8 - - jmp PTR.Show.I - -.8 clc - rts -*-------------------------------------- -MENU.GetDXDYW ldy #S.OBJ.X1 +MENU.GetDXDY ldy #S.OBJ.X1 lda (ZPMENUPtr),y clc adc #1 @@ -979,16 +852,6 @@ MENU.GetDXDYW ldy #S.OBJ.X1 adc #0 sta DX+1 - ldy #S.OBJ.W - lda (ZPMENUPtr),y - sec - sbc #3 2Px border + correction from W - sta Counter W - iny - lda (ZPMENUPtr),y - sbc #0 - sta Counter+1 - ldy #S.OBJ.Y1 lda (ZPMENUPtr),y clc @@ -1002,21 +865,31 @@ MENU.GetDXDYW ldy #S.OBJ.X1 rts *-------------------------------------- MENU.ResetX1Y1X2 - lda DX - sta CB.Cache+S.CB.X1 + ldy #S.OBJ.X1 + lda (ZPMENUPtr),y clc - adc Counter - sta CB.Cache+S.CB.X2 - lda DX+1 + adc #1 + sta CB.Cache+S.CB.X1 + iny + lda (ZPMENUPtr),y + adc #0 sta CB.Cache+S.CB.X1+1 - adc Counter+1 - sta CB.Cache+S.CB.X2+1 - + lda DY sta CB.Cache+S.CB.Y1 lda DY+1 sta CB.Cache+S.CB.Y1+1 + ldy #S.OBJ.X2 + lda (ZPMENUPtr),y + sec + sbc #1 + sta CB.Cache+S.CB.X2 + iny + lda (ZPMENUPtr),y + sbc #0 + sta CB.Cache+S.CB.X2+1 + rts *-------------------------------------- MENU.FindSelected @@ -1024,7 +897,7 @@ MENU.FindSelected >STYA D jsr MENU.GetMItems - + .1 lda (ZPPtr1) beq .9 @@ -1040,12 +913,12 @@ MENU.FindSelected .8 clc rts - + .9 >LDYA D >STYA ZPPtr1 - + sec - rts + rts *-------------------------------------- MENU.GetMItems lda ZPMENUPtr clc @@ -1075,6 +948,83 @@ MENU.NextMItemDY MENU.NextMItem lda #S.MITEM jmp SkipAPtr1 *-------------------------------------- +MENU.DestroyAll sec + .HS 90 BCC +MENU.Destroy clc + + ldx MENU.Stack.Cnt + beq .8 + + php + + bit PTR.bVisible + bpl .1 + + jsr PTR.Hide.I + +.1 lda #S.CB.CMD.BITBLT + jsr CB.InitCacheA + + lda #S.CB.OP.RESTORE + sta CB.Cache+S.CB.OP + + plp + +.2 php + + ldx MENU.Stack.Cnt + lda MENU.Stack-1,x + >SYSCALL2 GetMemPtr + >STYA ZPObjPtr + + ldy #S.OBJ.X1 + ldx #0 + +.3 lda (ZPObjPtr),y + sta CB.Cache+S.CB.X1,x + iny + inx + cpx #8 X1,Y1,X2,Y2 + bne .3 + + ldy #S.OBJ.W + ldx #0 + +.4 lda (ZPObjPtr),y + sta CB.Cache+S.CB.SrcW,x + iny + inx + cpx #4 W,H + bne .4 + + ldy #S.MENU.hSAVEBUF + lda (ZPObjPtr),y + sta CB.Cache+S.CB.DstPtr + + jsr CB.GFXWrite + + lda CB.Cache+S.CB.DstPtr + >SYSCALL2 FreeStkObj + + ldx MENU.Stack.Cnt + lda MENU.Stack-1,x + >SYSCALL2 FreeMem + + plp Destroy all ? + dec MENU.Stack.Cnt + + bcc .7 no + + bne .2 + +.7 bit PTR.bVisible + bpl .8 + + jmp PTR.Show.I + +.8 clc + rts +*-------------------------------------- MAN SAVE usr/src/lib/libgui.s.menu LOAD usr/src/lib/libgui.s diff --git a/LIB/LIBGUI.S.MOU.txt b/LIB/LIBGUI.S.MOU.txt index 47fe2e9b..7b28c48e 100644 --- a/LIB/LIBGUI.S.MOU.txt +++ b/LIB/LIBGUI.S.MOU.txt @@ -91,10 +91,10 @@ MOU.CheckOverMenu .1 ldx MENU.Stack.Cnt beq .9 - lda MENU.Stack-1,x +.2 dex + stx MENU.Stack.Idx + lda MENU.Stack,x -.2 phx - >SYSCALL2 GetMemPtr >STYA ZPMENUPtr pha @@ -105,32 +105,18 @@ MOU.CheckOverMenu pla adc /S.OBJ.X1 jsr MOU.InRectYA - bcc .3 + bcs .3 - plx + jsr MENU.Enter + + clc + rts - dex +.3 ldx MENU.Stack.Idx bne .2 .9 sec rts - -.3 plx - cpx MENU.Stack.Cnt - beq .7 - -* TODO:destroy from TOP to current, then enter current - -* inx -* phx - -* jsr MENU.Destroy -* bra .3 - -.7 jmp MENU.Enter - -.8 clc - rts *-------------------------------------- MOU.CheckOverSysBut >LDYA L.RECT.SysBut @@ -156,8 +142,7 @@ MOU.CheckOverWND ldy #S.OBJ.F lda (ZPWNDPtr),y - - bit #S.WND.F.BORDER + and #S.WND.F.BORDER beq .2 jsr MOU.ChkWNDBorders @@ -190,7 +175,7 @@ MOU.CheckOverWND bra .5 -.3 iny #S.WND.MBarY2 +.3 ldy #S.WND.MBarY2 lda (ZPWNDPtr),y cmp MSG+S.MSG.Y1 @@ -203,7 +188,7 @@ MOU.CheckOverWND bra .5 -.4 iny #S.WND.SBarY1 +.4 ldy #S.WND.SBarY1 lda (ZPWNDPtr),y cmp MSG+S.MSG.Y1 diff --git a/LIB/LIBGUI.S.OBJ.txt b/LIB/LIBGUI.S.OBJ.txt index 0feb6b02..e8a83787 100644 --- a/LIB/LIBGUI.S.OBJ.txt +++ b/LIB/LIBGUI.S.OBJ.txt @@ -43,37 +43,6 @@ OBJ.Init sta (ZPObjPtr) rts *-------------------------------------- -OBJ.AddWord pha - - tya - jsr OBJ.AddByte - pla - -OBJ.AddByte sta (ZPObjPtr) - inc ZPObjPtr - bne .8 - - inc ZPObjPtr+1 - -.8 rts -*-------------------------------------- -OBJ.PullY1X1.BAD - - >PULLA - ldy #S.OBJ.Y1 - sta (ZPMENUPtr),y - >PULLA - iny - sta (ZPMENUPtr),y - - >PULLA - ldy #S.OBJ.X1 - sta (ZPMENUPtr),y - >PULLA - iny - sta (ZPMENUPtr),y - rts -*-------------------------------------- * hOBJ, Prop8, Value16 *-------------------------------------- OBJ.SetProp ldy #3 @@ -169,9 +138,10 @@ OBJ.SetX2Y2 >STYA ZPPtr1 adc (ZPPtr1),y ldy #S.OBJ.Y2+1 sta (ZPPtr1),y + tax dey pla - sta (ZPPtr1),y + sta (ZPPtr1),y A,X = Y2 rts *-------------------------------------- @@ -185,6 +155,106 @@ OBJ.GetInCache >STYA .1+1 bpl .1 rts +*-------------------------------------- +OBJ.DrawBorders >STYA ZPObjPtr + stx IY + + lda #S.CB.CMD.HLINE + jsr CB.InitCacheA + + lda #S.CB.OP.SET + sta CB.Cache+S.CB.OP + lda #S.CB.M.MONO + sta CB.Cache+S.CB.M + lda PREFS.BorderColor + sta CB.Cache+S.CB.COLOR + + ldy #S.OBJ.X1 + + lda (ZPObjPtr),y + sec + sbc IY + sta CB.Cache+S.CB.X1 + iny + lda (ZPObjPtr),y + sbc #0 + sta CB.Cache+S.CB.X1+1 + + iny #S.OBJ.Y1 + + lda (ZPObjPtr),y + sec + sbc IY + sta CB.Cache+S.CB.Y1 + sta CB.Cache+S.CB.Y2 + iny + lda (ZPObjPtr),y + sbc #0 + sta CB.Cache+S.CB.Y1+1 + sta CB.Cache+S.CB.Y2+1 top X1-1,Y1-1,X2+1,Y1-1 + + iny #S.OBJ.X2 + + lda (ZPObjPtr),y + clc + adc IY + sta CB.Cache+S.CB.X2 + iny + lda (ZPObjPtr),y + adc #0 + sta CB.Cache+S.CB.X2+1 + + jsr CB.Cache2CBBuf + + ldy #S.OBJ.Y2 + lda (ZPObjPtr),y + clc + adc IY + sta CB.Cache+S.CB.Y1 + sta CB.Cache+S.CB.Y2 + iny + lda (ZPObjPtr),y + adc #0 + sta CB.Cache+S.CB.Y1+1 + sta CB.Cache+S.CB.Y2+1 bottom X1-1,Y2+1,X2+1,Y2+1 + + jsr CB.Cache2CBBuf + + lda #S.CB.CMD.VLINE + sta CB.Cache+S.CB.CMD + + ldy #S.OBJ.Y1 + lda (ZPObjPtr),y + sec + sbc IY + sta CB.Cache+S.CB.Y1 + iny + lda (ZPObjPtr),y + sbc #0 + sta CB.Cache+S.CB.Y1+1 + + lda CB.Cache+S.CB.X1 + sta CB.Cache+S.CB.X2 + lda CB.Cache+S.CB.X1+1 + sta CB.Cache+S.CB.X2+1 left X1-1,Y1-1,X1-1,Y2+1 + + jsr CB.Cache2CBBuf + + ldy #S.OBJ.X2 + lda (ZPObjPtr),y + clc + adc IY + sta CB.Cache+S.CB.X1 + sta CB.Cache+S.CB.X2 + iny + lda (ZPObjPtr),y + adc #0 + sta CB.Cache+S.CB.X1+1 + sta CB.Cache+S.CB.X2+1 right X2+1,Y1-1,X2+1,Y2+1 + + jmp CB.Cache2CBBuf +*------------------------------------- + *-------------------------------------- MAN SAVE usr/src/lib/libgui.s.obj diff --git a/LIB/LIBGUI.S.SYSBAR.txt b/LIB/LIBGUI.S.SYSBAR.txt index 90307ae7..4a98aa78 100644 --- a/LIB/LIBGUI.S.SYSBAR.txt +++ b/LIB/LIBGUI.S.SYSBAR.txt @@ -1,7 +1,10 @@ NEW AUTO 3,1 *-------------------------------------- -SYSBUT.Enter sec +SYSBUT.Enter bit WND.SYSBAR.bSysBut + bmi .8 + + sec ror WND.SYSBAR.bSysBut jsr CB.GetBuf @@ -18,10 +21,9 @@ SYSBUT.Enter sec jsr MENU.New bcs .9 - sta hSysMenu - jmp MENU.Draw +.8 clc .9 rts *-------------------------------------- SYSBUT.Leave bit WND.SYSBAR.bSysBut diff --git a/LIB/LIBGUI.S.WND.txt b/LIB/LIBGUI.S.WND.txt index 65ca9076..4ece8a6d 100644 --- a/LIB/LIBGUI.S.WND.txt +++ b/LIB/LIBGUI.S.WND.txt @@ -114,7 +114,7 @@ WND.Quit lda WND.Screen+S.OBJ.hPARENT .8 clc WND.Quit.RTS rts *-------------------------------------- -* F8, X116, Y116, W16, H16 +* guiNewWnd(sFlags, iX1, iY1, iW, iH) *-------------------------------------- WND.New ldy WND.Stack.Top cpy #WND.MAX @@ -174,7 +174,7 @@ WND.New ldy WND.Stack.Top >PULLA ldy #S.OBJ.X1 - and PREFS.BESTVIEWEDX + and PREFS.BestViewedX sta (ZPWNDPtr),y >PULLA iny @@ -235,12 +235,12 @@ WND.Bring2Front ldx WND.Stack.Idx .2 pla *-------------------------------------- -* A = hWND +* guiShowWnd( hWND ) *-------------------------------------- WND.Show sta WND.hWND ldx WND.Stack.Top - beq WND.Show1 + beq WND.Show2 lda WND.Stack-1,x >SYSCALL2 GetMemPtr @@ -252,11 +252,15 @@ WND.Show sta WND.hWND jsr CB.GetBuf bcs WND.Activate.RTS - jsr WND.PaintTopBar + jsr WND.DrawTitleBar + + >LDYA L.WND.Desktop + jsr CB.FlushBufToYA -WND.Show1 lda WND.hWND - ldy WND.Stack.Top - sta WND.Stack,y + lda WND.hWND + ldx WND.Stack.Top +*-------------------------------------- +WND.Show2 sta WND.Stack,x inc WND.Stack.Top >SYSCALL2 GetMemPtr @@ -264,36 +268,35 @@ WND.Show1 lda WND.hWND jsr OBJ.SetX2Y2 -WND.Show2 jsr CB.GetBuf + ldy #S.WND.InnerY2 + sta (ZPWNDPtr),y + txa + iny + sta (ZPWNDPtr),y + + jsr CB.GetBuf bcs WND.Activate.RTS lda #S.WND.S.ACTIVE jsr WND.SetStatus - ldy #S.OBJ.Y1 - lda (ZPWNDPtr),y - tax - iny - lda (ZPWNDPtr),y - - ldy #S.WND.TBarY2+1 - sta (ZPWNDPtr),y - txa - dey - sta (ZPWNDPtr),y - - stz Counter X - stz Counter+1 Y - ldy #S.OBJ.F lda (ZPWNDPtr),y and #S.WND.F.BORDER beq .1 - lda #1 - jsr WND.ShowBorders - -.1 ldy #S.WND.pTITLE+1 + >LDYA ZPWNDPtr + ldx #1 + jsr OBJ.DrawBorders +*-------------------------------------- +.1 ldy #S.OBJ.Y1 + lda (ZPWNDPtr),y + sta Counter + iny + lda (ZPWNDPtr),y + sta Counter+1 + + ldy #S.WND.pTITLE+1 lda (ZPWNDPtr),y bne .2 @@ -302,98 +305,82 @@ WND.Show2 jsr CB.GetBuf and #S.WND.F.MOVE+S.WND.F.CLOSE+S.WND.F.MIN+S.WND.F.MAX beq .3 -.2 lda Counter+1 - clc - adc SYSFON.Hp2 - sta Counter+1 +.2 lda SYSFON.Hp2 + jsr WND.Add2Counter ldy #S.WND.TBarY2 - lda (ZPWNDPtr),y - clc - adc SYSFON.Hp2 sta (ZPWNDPtr),y iny - lda (ZPWNDPtr),y - adc #0 + txa sta (ZPWNDPtr),y lda #S.WND.S.HASTBAR jsr WND.SetStatus - jsr WND.PaintTopBar + jsr WND.DrawTitleBar bcs .9 *-------------------------------------- -.3 ldy #S.WND.pMBAR+1 +.3 ldy #S.WND.pMBAR lda (ZPWNDPtr),y - beq .7 + beq .4 - lda Counter+1 - clc - adc SYSFON.Hp2 - sta Counter+1 + lda SYSFON.Hp1 + jsr WND.Add2Counter - ldy #S.WND.TBarY2 - lda (ZPWNDPtr),y - clc - adc SYSFON.H - tax - - iny - lda (ZPWNDPtr),y - adc #0 - ldy #S.WND.MBarY2+1 + ldy #S.WND.MBarY2 sta (ZPWNDPtr),y + iny txa - dey sta (ZPWNDPtr),y lda #S.WND.S.HASMBAR jsr WND.SetStatus - jsr MBAR.Paint + ldy #S.WND.pMBAR + lda (ZPWNDPtr),y + jsr MBAR.Draw *-------------------------------------- -.7 ldy #S.WND.pSTATUS+1 +.4 lda Counter + ldy #S.WND.InnerY1 + sta (ZPWNDPtr),y + iny + lda Counter+1 + sta (ZPWNDPtr),y + + ldy #S.WND.pSTATUS+1 lda (ZPWNDPtr),y beq .8 - lda Counter+1 - clc - adc SYSFON.Hp2 - sta Counter+1 + lda SYSFON.Hp1 + jsr WND.Add2Counter - ldy #S.OBJ.Y2 + ldy #S.WND.InnerY2 lda (ZPWNDPtr),y sec - sbc SYSFON.H - tax - + sbc SYSFON.Hp1 + sta (ZPWNDPtr),y iny lda (ZPWNDPtr),y sbc #0 - ldy #S.WND.SBarY1+1 - sta (ZPWNDPtr),y - txa - dey sta (ZPWNDPtr),y lda #S.WND.S.HASSBAR jsr WND.SetStatus - jsr WND.PaintSBar + jsr WND.DrawStatusBar *-------------------------------------- .8 ldy #S.WND.InnerH lda (ZPWNDPtr),y sec - sbc Counter+1 + sbc Counter sta (ZPWNDPtr),y iny lda (ZPWNDPtr),y - sbc #0 + sbc Counter+1 sta (ZPWNDPtr),y >LDYA L.WND.Desktop - jsr CB.FlushBufToYA lda WND.hWND @@ -489,10 +476,10 @@ WND.fPaint >SYSCALL2 GetMemPtr stz S.CB.SrcY stz S.CB.SrcY+1 - + ldy #S.WND.InnerW+3 ldx #3 - + .1 lda (ZPWNDPtr),y sta CB.Cache+S.CB.SrcW,x dey @@ -501,110 +488,15 @@ WND.fPaint >SYSCALL2 GetMemPtr lda #S.CB.CMD.BITBLT sta CB.Cache+S.CB.CMD - + jsr CB.Cache2CBBuf .8 >LDYA L.WND.Desktop + jmp CB.FlushBufToYA *-------------------------------------- -WND.ShowBorders sta IY - - lda #S.CB.CMD.HLINE - jsr CB.InitCacheA - - lda #S.CB.OP.SET - sta CB.Cache+S.CB.OP - lda #S.CB.M.MONO - sta CB.Cache+S.CB.M - lda PREFS.BORDERCOLOR - sta CB.Cache+S.CB.COLOR - - ldy #S.OBJ.X1 - - lda (ZPWNDPtr),y - sec - sbc IY - sta CB.Cache+S.CB.X1 - iny - lda (ZPWNDPtr),y - sbc #0 - sta CB.Cache+S.CB.X1+1 - - iny #S.OBJ.Y1 - - lda (ZPWNDPtr),y - sec - sbc IY - sta CB.Cache+S.CB.Y1 - sta CB.Cache+S.CB.Y2 - iny - lda (ZPWNDPtr),y - sbc #0 - sta CB.Cache+S.CB.Y1+1 - sta CB.Cache+S.CB.Y2+1 top X1-1,Y1-1,X2+1,Y1-1 - - iny #S.OBJ.X2 - - lda (ZPWNDPtr),y - clc - adc IY - sta CB.Cache+S.CB.X2 - iny - lda (ZPWNDPtr),y - adc #0 - sta CB.Cache+S.CB.X2+1 - - jsr CB.Cache2CBBuf - - ldy #S.OBJ.Y2 - lda (ZPWNDPtr),y - clc - adc IY - sta CB.Cache+S.CB.Y1 - sta CB.Cache+S.CB.Y2 - iny - lda (ZPWNDPtr),y - adc #0 - sta CB.Cache+S.CB.Y1+1 - sta CB.Cache+S.CB.Y2+1 bottom X1-1,Y2+1,X2+1,Y2+1 - - jsr CB.Cache2CBBuf - - lda #S.CB.CMD.VLINE - sta CB.Cache+S.CB.CMD - - ldy #S.OBJ.Y1 - lda (ZPWNDPtr),y - sec - sbc IY - sta CB.Cache+S.CB.Y1 - iny - lda (ZPWNDPtr),y - sbc #0 - sta CB.Cache+S.CB.Y1+1 - - lda CB.Cache+S.CB.X1 - sta CB.Cache+S.CB.X2 - lda CB.Cache+S.CB.X1+1 - sta CB.Cache+S.CB.X2+1 left X1-1,Y1-1,X1-1,Y2+1 - - jsr CB.Cache2CBBuf - - ldy #S.OBJ.X2 - lda (ZPWNDPtr),y - clc - adc IY - sta CB.Cache+S.CB.X1 - sta CB.Cache+S.CB.X2 - iny - lda (ZPWNDPtr),y - adc #0 - sta CB.Cache+S.CB.X1+1 - sta CB.Cache+S.CB.X2+1 right X2+1,Y1-1,X2+1,Y2+1 - - jmp CB.Cache2CBBuf -*-------------------------------------- -WND.PaintTopBar lda #S.CB.CMD.FILLRECT +WND.DrawTitleBar + lda #S.CB.CMD.FILLRECT jsr CB.InitCacheA lda #S.CB.OP.SET @@ -650,6 +542,7 @@ WND.PaintTopBar lda #S.CB.CMD.FILLRECT inc DY bne .12 + inc DY+1 * TOP LEFT ICON @@ -669,7 +562,7 @@ WND.PaintTopBar lda #S.CB.CMD.FILLRECT .2 jsr DRAW.yaBMAtDXDY - jsr WND.PaintTopBarTitle + jsr WND.DrawTitleBarText bcs .9 * TOP RIGHT ICONS @@ -712,6 +605,7 @@ WND.PaintTopBar lda #S.CB.CMD.FILLRECT adc #16 sta DX bcc .41 + inc DX+1 .41 ldy #S.OBJ.F @@ -726,7 +620,7 @@ WND.PaintTopBar lda #S.CB.CMD.FILLRECT .9 rts *-------------------------------------- -WND.PaintTopBarTitle +WND.DrawTitleBarText ldy #S.WND.pTITLE lda (ZPWNDPtr),y pha @@ -734,7 +628,7 @@ WND.PaintTopBarTitle lda (ZPWNDPtr),y ply - ldx hSYSFONB + ldx hSYSFON jsr FON.GetTextSize ldy #S.OBJ.W @@ -756,7 +650,7 @@ WND.PaintTopBarTitle lda (ZPWNDPtr),y clc adc DX - and PREFS.BESTVIEWEDX + and PREFS.BestViewedX sta DX iny @@ -771,18 +665,19 @@ WND.PaintTopBarTitle lda (ZPWNDPtr),y ply - ldx hSYSFONB + ldx hSYSFON clc jmp DRAW.YATextAtDXDY *-------------------------------------- -WND.PaintSBar lda #S.CB.CMD.HLINE +WND.DrawStatusBar + lda #S.CB.CMD.HLINE jsr CB.InitCacheA lda #S.CB.OP.SET sta CB.Cache+S.CB.OP lda #S.CB.M.MONO sta CB.Cache+S.CB.M - lda PREFS.BORDERCOLOR + lda PREFS.BorderColor sta CB.Cache+S.CB.COLOR ldy #S.OBJ.X1 @@ -854,12 +749,17 @@ WND.SetMBar >PULLW ZPPtr1 >PULLA >SYSCALL2 GetMemPtr >STYA ZPWNDPtr + + >LDYA ZPPtr1 + jsr MBAR.New + bcs .9 - - - - -.9 rts + ldy #S.WND.pMBAR + sta (ZPWNDPtr),y + +* clc + +.9 rts *-------------------------------------- WND.ClrStatus ldy #S.OBJ.S eor #$ff @@ -872,6 +772,16 @@ WND.SetStatus ldy #S.OBJ.S sta (ZPWNDPtr),y rts *-------------------------------------- +WND.Add2Counter clc + adc Counter + sta Counter + bcc .8 + + inc Counter+1 + +.8 ldx Counter+1 + rts +*-------------------------------------- MAN SAVE usr/src/lib/libgui.s.wnd LOAD usr/src/lib/libgui.s diff --git a/LIB/LIBGUI.S.txt b/LIB/LIBGUI.S.txt index 1efbb76a..04ed7620 100644 --- a/LIB/LIBGUI.S.txt +++ b/LIB/LIBGUI.S.txt @@ -79,15 +79,16 @@ MENU.RMargin .EQ 8 *-------------------------------------- .DUMMY .OR ZPLIB -ZPCBPtr .BS 2 ZPObjPtr .BS 2 +ZPRECTPtr .BS 2 ZPWNDPtr .BS 2 ZPMENUPtr .BS 2 ZPBMPtr .BS 2 -ZPRECTPtr .BS 2 ZPPtr1 .BS 2 + .BS 2 + DX .BS 2 DY .BS 2 IE .BS 2 @@ -227,6 +228,11 @@ LIB.LOAD lda LibCount jsr PTR.Set jsr PTR.Show + >LDYA L.MENU.Sys.Programs + >STYA MENU.Sys.1 + >LDYA L.MENU.Sys.Settings + >STYA MENU.Sys.2 + inc LibCount .8 clc @@ -244,26 +250,26 @@ SkipAPtr1 clc adc ZPPtr1 sta ZPPtr1 bcc .8 - + inc ZPPtr1+1 - -.8 rts + +.8 rts *-------------------------------------- SkipStrZPtr1 ldy #$ff .1 iny lda (ZPPtr1),y bne .1 - + tya sec \0 adc ZPPtr1 sta ZPPtr1 bcc .8 - + inc ZPPtr1+1 - -.8 rts + +.8 rts *-------------------------------------- .INB usr/src/lib/libgui.s.bm .INB usr/src/lib/libgui.s.but @@ -273,6 +279,7 @@ SkipStrZPtr1 ldy #$ff .INB usr/src/lib/libgui.s.draw .INB usr/src/lib/libgui.s.fon .INB usr/src/lib/libgui.s.mbar + .INB usr/src/lib/libgui.s.mbox .INB usr/src/lib/libgui.s.menu .INB usr/src/lib/libgui.s.mou .INB usr/src/lib/libgui.s.msg @@ -293,8 +300,8 @@ CS.END DEVNAME.GFX .AZ "/dev/gfx" DEVNAME.MOUSE .AZ "/dev/mou1" *-------------------------------------- -SYSX7 .AZ "${ROOT}sbin/sysx7" -SYSX7B .AZ "${ROOT}sbin/sysx7b" +SYSX7 .AZ "${ROOT}opt/gui/fonts/sysx7" +SYSX7B .AZ "${ROOT}opt/gui/fonts/sysx7b" *-------------------------------------- LibCount .BS 1 hDevMouse .BS 1 @@ -336,6 +343,7 @@ CB.PTR .DA #S.CB.CMD.BITBLT CB.Cache .BS S.CB OBJ.Cache .BS S.OBJ *-------------------------------------- +MENU.Stack.Idx .BS 1 MENU.Stack.Cnt .BS 1 MENU.Stack .BS MENU.MAX *-------------------------------------- @@ -352,6 +360,7 @@ WND.Desktop .DA #S.OBJ.T.WND *-------------------------------------- WND.SysBar .DA #S.OBJ.T.WND .BS S.WND-1 +*-------------------------------------- WND.SysBar.2osX .AZ "2osX" WND.SysBar.Clk .AZ "00:00" WND.SysBar.bSysBut .BS 1 @@ -362,8 +371,6 @@ RECT.SysWNDs .BS S.RECT *-------------------------------------- RECT.SysClk .BS S.RECT *-------------------------------------- -hSysMenu .BS 1 -*-------------------------------------- MENU.Sys .DA #S.MITEM.T.ITEM .DA #2 ID .DA #KEYMOD.CTRL+KEYMOD.OA+KEYMOD.CA,#'A' @@ -373,12 +380,12 @@ MENU.Sys .DA #S.MITEM.T.ITEM .DA #S.MITEM.T.SEP .DA #S.MITEM.T.SUBMENU - .DA MENU.Sys.Programs +MENU.Sys.1 .DA MENU.Sys.Programs .DA 0 pICON .AZ "Programs" .DA #S.MITEM.T.SUBMENU - .DA MENU.Sys.Settings +MENU.Sys.2 .DA MENU.Sys.Settings .DA 0 pICON .AZ "Settings" @@ -431,21 +438,22 @@ MENU.Sys.Settings KEYMOD.S.CTRL .EQ 0 KEYMOD.S .AZ "Ctrl-" KEYMOD.S.OA .EQ *-KEYMOD.S - .DA #01,#'-',#0 + .DA #01,#'-',#0 KEYMOD.S.CA .EQ *-KEYMOD.S .DA #02,#'-',#0 *-------------------------------------- TEXTBUF .BS 16 for composing HotKey strings *-------------------------------------- -PREFS.BESTVIEWEDX .DA #$FC +PREFS.BestViewedX .DA #$FC +PREFS.MBarXMargin .DA #5 +* PREFS.bSYSBARTOP .DA #0 -PREFS.MBARXMARGIN .DA #5 -PREFS.MENUCOLOR .DA #C.WHITE +PREFS.MenuColor .DA #C.WHITE PREFS.SYSBARCOLOR .DA #C.WHITE -PREFS.BORDERCOLOR .DA #C.BLACK +PREFS.BorderColor .DA #C.BLACK PREFS.TBARCOLORA .DA #C16.D.BLUE PREFS.TBARCOLORI .DA #C16.L.BLUE -PREFS.MBARCOLOR .DA #C.WHITE +PREFS.MBarColor .DA #C.WHITE PREFS.SBARCOLOR .DA #C.WHITE PREFS.DESKTOPCOLOR .DA #C16.D.BLUE *-------------------------------------- diff --git a/BIN/GUITEST1.S.txt b/ROOT/asmtest/TESTGUI.S.txt similarity index 91% rename from BIN/GUITEST1.S.txt rename to ROOT/asmtest/TESTGUI.S.txt index 5ff45d5a..fefa8e8b 100644 --- a/BIN/GUITEST1.S.txt +++ b/ROOT/asmtest/TESTGUI.S.txt @@ -3,7 +3,7 @@ NEW .LIST OFF .OP 65C02 .OR $2000 - .TF bin/guitest1 + .TF root/asmtest/testgui *-------------------------------------- .INB inc/macros.i .INB inc/a2osx.i @@ -87,8 +87,8 @@ CS.QUIT.RTS rts *-------------------------------------- WND.Test >PUSHBI S.WND.F.RESIZE+S.WND.F.MOVE+S.WND.F.CLOSE+S.WND.F.MAX+S.WND.F.MIN - >PUSHWI 40 >PUSHWI 80 + >PUSHWI 40 >PUSHWI 360 >PUSHWI 96 >LIBCALL hLIBGUI,LIBGUI.WND.New @@ -112,11 +112,11 @@ WND.Test >PUSHBI S.WND.F.RESIZE+S.WND.F.MOVE+S.WND.F.CLOSE+S.WND.F.MAX+S.WND.F. >PUSHB hWND >PUSHW L.WND.MBAR - >LIBCALL hLIBGUI,LIBGUI.MBAR.New - sta hMBAR +* >LIBCALL hLIBGUI,LIBGUI.MBAR.New +* sta hMBAR - >PUSHB hWND - >PUSHB hMBAR +* >PUSHB hWND +* >PUSHB hMBAR >LIBCALL hLIBGUI,LIBGUI.WND.SetMBar >PUSHB hWND @@ -156,7 +156,7 @@ LIBGUI .AZ "libgui" hLIBGUI .BS 1 *-------------------------------------- LOGOFILE .AZ "${ROOT}A2osX.logo" -WND.TITLE .AZ "Window Title" +WND.TITLE .AZ "Libgui ASM API test" WND.STATUS .AZ "Window status bar message" *-------------------------------------- WND.MBAR .AZ "File" @@ -271,5 +271,5 @@ DS.START DS.END .ED *-------------------------------------- MAN -SAVE usr/src/bin/guitest1.s +SAVE root/asmtest/testgui.s ASM diff --git a/ROOT/ctest/testgui.c..txt b/ROOT/ctest/testgui.c..txt index 9c3b2e5c..b5915f87 100644 --- a/ROOT/ctest/testgui.c..txt +++ b/ROOT/ctest/testgui.c..txt @@ -8,20 +8,21 @@ int bQuit=0; int main(int argc, char *argv[]) { short int hWND = guiNewWnd(WND_F_RESIZE+WND_F_MOVE+WND_F_CLOSE+WND_F_MAX+WND_F_MIN, - 20,40,200,140); - guiSetProp(hWND, WND_P_pTITLE, "Window title"); + 20,20,200,100); + guiSetProp(hWND, WND_P_pTITLE, "Libgui C API"); guiSetProp(hWND, WND_P_pSTATUS, "Status bar"); -// guiSetProp(hWND, WND_P_BGCOLOR, C.WHITE); + guiSetProp(hWND, WND_P_BGCOLOR, pC_WHITE); guiShowWnd(hWND); do { if (guiGetMsg(&msg)) { - switch msg.type { - case MSG_T_WND: - break; - } +// switch msg.type { +// case MSG_T_WND: +// break; +// } + } } while (!bQuit) guiDestroyWnd(hWND); diff --git a/SBIN/GUI.S.txt b/SBIN/GUI.S.txt index 18ed6c46..844d058c 100644 --- a/SBIN/GUI.S.txt +++ b/SBIN/GUI.S.txt @@ -61,12 +61,16 @@ CS.RUN >SLEEP >LIBCALL hLIBGUI,LIBGUI.MSG.Get bcs CS.RUN -.1 lda MSG+S.MSG.T + lda MSG+S.MSG.T cmp #S.MSG.T.ID bne CS.RUN lda MSG+S.MSG.ID - cmp #42 + cmp #2 + bne .1 + + +.1 cmp #42 bne .2 >PUSHW L.GUITEST1 @@ -81,6 +85,7 @@ CS.RUN >SLEEP >PUSHBI 0 >SYSCALL ExecL bra CS.RUN + clc rts *-------------------------------------- @@ -98,7 +103,7 @@ CS.QUIT.RTS rts CS.END LIBGUI .AZ "libgui" hLIBGUI .BS 1 -GUITEST1 .AZ "${ROOT}root/asmtest/guitest1" +GUITEST1 .AZ "${ROOT}root/asmtest/testgui" GUITEST2 .AZ "${ROOT}root/ctest/testgui" *-------------------------------------- MSG .BS S.MSG