From 8f4e953ea27b9b0c57ad7184a6be60aec4d6eb1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Mon, 12 Oct 2020 08:04:19 +0200 Subject: [PATCH] Kernel 0.94 --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes DRV/DHGR.DRV.S.LBUF.txt | 3 +- DRV/DHGR.DRV.S.txt | 4 +- INC/GFX.I.txt | 6 +- INC/LIBGUI.I.txt | 14 +- LIB/LIBGUI.S.MENU.txt | 436 +++++++++++++++++++++++++++------------ LIB/LIBGUI.S.SYSBAR.txt | 33 ++- LIB/LIBGUI.S.txt | 41 +++- SBIN/GUI.S.txt | 16 +- 9 files changed, 387 insertions(+), 166 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index c6659d5f8caf38e884443b89ea69e5e5d5145fa4..fa30fa56d36ad6a03234d815ec51401438aed4d8 100644 GIT binary patch delta 26299 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 delta 23356 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 E57=XtRsaA1 diff --git a/DRV/DHGR.DRV.S.LBUF.txt b/DRV/DHGR.DRV.S.LBUF.txt index 79b617fc..90cec1ca 100644 --- a/DRV/DHGR.DRV.S.LBUF.txt +++ b/DRV/DHGR.DRV.S.LBUF.txt @@ -65,6 +65,7 @@ LBUF.DrawAtY lda BASEL,y setup line Base Ptr lda CB.Cache+S.CB.OP .3 and #$F + beq .8 tax jmp (J.LBUF.DrawAtY,x) @@ -87,7 +88,7 @@ LBUF.DrawAtY lda BASEL,y setup line Base Ptr inx bcc .5 - rts +.8 rts *-------------------------------------- LBUF.DrawAtY.SET LBUF.DrawAtY.AND.SET diff --git a/DRV/DHGR.DRV.S.txt b/DRV/DHGR.DRV.S.txt index 9be1ffea..e59c9dac 100644 --- a/DRV/DHGR.DRV.S.txt +++ b/DRV/DHGR.DRV.S.txt @@ -336,14 +336,14 @@ J.Cmds .DA SETPIXEL .DA BITBLT .DA GETRECTBUFSIZE *-------------------------------------- -J.LBUF.DrawAtY .DA LBUF.DrawAtY.XOR +J.LBUF.DrawAtY .DA $ffff + .DA LBUF.DrawAtY.XOR .DA LBUF.DrawAtY.SET .DA LBUF.DrawAtY.ORA .DA $ffff .DA LBUF.DrawAtY.AND.XOR .DA LBUF.DrawAtY.AND.SET .DA LBUF.DrawAtY.AND.ORA -* .DA $ffff L.Color.Pixels .DA Color.Pixels .DA 0 end or relocation *-------------------------------------- diff --git a/INC/GFX.I.txt b/INC/GFX.I.txt index 38c7a007..5457dae7 100644 --- a/INC/GFX.I.txt +++ b/INC/GFX.I.txt @@ -52,9 +52,9 @@ S.CB.CMD.DRAWLINE .EQ 20 S.CB.CMD.DRAWTEXT2 .EQ 22 S.CB.CMD.OSD .EQ 128 S.CB.OP .EQ 1 -S.CB.OP.XOR .EQ 0 screen EOR bitmap -> Screen -S.CB.OP.SET .EQ 2 replace screen with bitmap -S.CB.OP.ORA .EQ 4 combine screen & bitmap -> Screen +S.CB.OP.XOR .EQ 2 screen EOR bitmap -> Screen +S.CB.OP.SET .EQ 4 replace screen with bitmap +S.CB.OP.ORA .EQ 6 combine screen & bitmap -> Screen S.CB.OP.MASK .EQ %00001000 Apply BitMap mask before painting S.CB.OP.SAVE .EQ %00010000 Save Screen to DstPtr before painting S.CB.OP.RESTORE .EQ %00100000 Restore Screen From DstPtr diff --git a/INC/LIBGUI.I.txt b/INC/LIBGUI.I.txt index 56a39f78..b67823a7 100644 --- a/INC/LIBGUI.I.txt +++ b/INC/LIBGUI.I.txt @@ -159,18 +159,20 @@ S.MITEM.F.SUBMENU .EQ 6 S.MITEM.S .EQ 2 S.MITEM.S.CHECKED .EQ %01000000 S.MITEM.S.DISABLED .EQ %10000000 -S.MITEM.pICON .EQ 3 -S.MITEM.pMENU .EQ 5 -S.MITEM.KEYMOD .EQ 7 +S.MITEM.ID .EQ 3 +S.MITEM.pICON .EQ 4 +S.MITEM.pMENU .EQ 6 +S.MITEM.KEYMOD .EQ 6 S.MITEM.KEYMOD.CA .EQ 2 S.MITEM.KEYMOD.OA .EQ 4 S.MITEM.KEYMOD.CTRL .EQ 8 -S.MITEM.KEY .EQ 8 -S.MITEM.ID .EQ 9 +S.MITEM.KEY .EQ 7 -S.MITEM.TEXT .EQ 10 CSTR +S.MITEM.TEXT .EQ 8 CSTR * ... *-------------------------------------- +BM.ID.APPLE .EQ 2 +*-------------------------------------- S.BUT.F.DISABLED .EQ %10000000 * S.BUT.S.PUSHED .EQ %10000000 diff --git a/LIB/LIBGUI.S.MENU.txt b/LIB/LIBGUI.S.MENU.txt index f6c25eac..266546cf 100644 --- a/LIB/LIBGUI.S.MENU.txt +++ b/LIB/LIBGUI.S.MENU.txt @@ -84,7 +84,7 @@ MENU.MBarInit >STYA ZPMENUPtr .8 lda #$80 ldy #S.MBAR.S - sta (ZPPtr1),y + sta (ZPMENUPtr),y .80 clc rts @@ -138,12 +138,15 @@ MENU.New >LDYAI S.MENU MENU.New.RTS rts *-------------------------------------- +* ---------------------------------------------- +* |Icon ChkMrk "Menu Item" KEYMOD1-KEYMOD2-KEY>| +* ---------------------------------------------- MENU.Show >SYSCALL2 GetMemPtr >STYA ZPMENUPtr jsr GetCBBuf bcs MENU.New.RTS - >DEBUG + ldy #S.MENU.MITEMS lda (ZPMENUPtr),y sta ZPPtr1 @@ -151,7 +154,8 @@ MENU.Show >SYSCALL2 GetMemPtr lda (ZPMENUPtr),y sta ZPPtr1+1 -* |Icon ChkMrk "Menu Item" KEYMOD1-KEYMOD2-KEY > | + stz DX + stz DX+1 stz IY Icon Margin W @@ -160,17 +164,13 @@ MENU.Show >SYSCALL2 GetMemPtr stz INE Max Mod-Key W - lda #12 2px Borders+5 LMARGIN (Checked) +5 RMARGIN (SubMenu) - sta DX - stz DX+1 - lda #2 2px Borders sta DY Menu H stz DY+1 .1 lda (ZPPtr1) beq .3 - + jsr MENU.Show.GetW lda DY @@ -188,8 +188,15 @@ MENU.Show >SYSCALL2 GetMemPtr inc ZPPtr1+1 bra .1 -.3 lda DX +.3 lda #12 2px Borders+5 LMARGIN (Checked) +5 RMARGIN (SubMenu) clc + adc IY + sta DX + bcc .30 + inc DX+1 + +.30 lda DX + sec 1px sep adc IE Text W sta DX @@ -198,27 +205,42 @@ MENU.Show >SYSCALL2 GetMemPtr sta DX+1 lda DX - clc + sec 1px sep adc INE Mod-Key W sta DX bcc .4 inc DX+1 -.4 ldy #S.OBJ.Y1 - lda (ZPMENUPtr),y - clc - adc DY - tax - +.4 ldy #S.OBJ.W + sta (ZPMENUPtr),y iny - lda (ZPMENUPtr),y - adc DY+1 + lda DX+1 + sta (ZPMENUPtr),y + + iny #S.OBJ.H + + lda DY + sta (ZPMENUPtr),y + tax + iny + lda DY+1 + sta (ZPMENUPtr),y + pha + txa + ldy #S.OBJ.Y1 + clc + adc (ZPMENUPtr),y + tax + pla + iny + adc (ZPMENUPtr),y + cpx WND.Screen+S.OBJ.H sbc WND.Screen+S.OBJ.H+1 bcc .5 - dey + ldy #S.OBJ.Y1 lda (ZPMENUPtr),y * sec @@ -231,8 +253,49 @@ MENU.Show >SYSCALL2 GetMemPtr sbc DY+1 sta (ZPMENUPtr),y -.5 jsr MENU.Show.Borders +.5 >LDYA ZPMENUPtr + jsr OBJ.SetX2Y2 + + jsr MENU.Show.Borders + + ldy #S.MENU.MITEMS + lda (ZPMENUPtr),y + sta ZPPtr1 + iny + lda (ZPMENUPtr),y + sta ZPPtr1+1 + ldy #S.OBJ.Y1 + lda (ZPMENUPtr),y + clc + adc #1 + sta DY + iny + lda (ZPMENUPtr),y + adc #0 + sta DY+1 + +.6 lda (ZPPtr1) + beq .8 + + jsr MENU.Show.Item + + lda DY + clc + adc SYSFON.H + sta DY + bcc .7 + + inc DY+1 + +.7 lda (ZPPtr1) + clc + adc ZPPtr1 + sta ZPPtr1 + bcc .6 + inc ZPPtr1+1 + bra .6 + .8 >LDYA L.WND.Screen jmp DrawCBPtrToYA1 @@ -249,31 +312,228 @@ MENU.Show.GetW ldy #S.MITEM.F ora (ZPPtr1),y beq .1 - lda #16 - sta DX + lda #17 Reserve space for Icon W + 1px SEP + sta IY -.1 lda #S.MITEM.TEXT +.1 jsr MENU.GetText + ldx hSYSFON + jsr FON.GetTextSize + + ldx CB.Cache+S.CB.SrcW + cpx IE + lda CB.Cache+S.CB.SrcW+1 + sbc IE+1 + bcc .2 + + stx IE Set Max text W + lda CB.Cache+S.CB.SrcW+1 + sta IE+1 + +.2 jsr MENU.GetKeyString + beq .8 + + >LDYA L.KEYSTRING + ldx hSYSFON + jsr FON.GetTextSize + + lda CB.Cache+S.CB.SrcW + cmp INE + bcc .8 + + sta INE set Max Mod-key W + +.8 rts +*-------------------------------------- +MENU.Show.Borders + lda #S.CB.CMD.FILLRECT + jsr PutA2CBBuf + lda #S.CB.OP.SET + jsr PutA2CBBuf + lda #S.CB.M.MONO + jsr PutA2CBBuf + lda PREFS.MENUCOLOR + jsr PutA2CBBuf + ldy #S.OBJ.X1 + jsr MENU.Show.Borders.Y + ldy #S.OBJ.Y1 + jsr MENU.Show.Borders.Y + ldy #S.OBJ.X2 + jsr MENU.Show.Borders.Y + ldy #S.OBJ.Y2 + jsr MENU.Show.Borders.Y + + lda #S.CB.CMD.HLINE TOP + jsr MENU.Show.Borders.H + ldy #S.OBJ.X1 + jsr MENU.Show.Borders.Y + ldy #S.OBJ.Y1 + jsr MENU.Show.Borders.Y + ldy #S.OBJ.X2 + jsr MENU.Show.Borders.Y + ldy #S.OBJ.Y1 + jsr MENU.Show.Borders.Y + + lda #S.CB.CMD.VLINE LEFT + jsr MENU.Show.Borders.H + ldy #S.OBJ.X1 + jsr MENU.Show.Borders.Y + ldy #S.OBJ.Y1 + jsr MENU.Show.Borders.Y + ldy #S.OBJ.X1 + jsr MENU.Show.Borders.Y + ldy #S.OBJ.Y2 + jsr MENU.Show.Borders.Y + + lda #S.CB.CMD.VLINE RIGHT + jsr MENU.Show.Borders.H + ldy #S.OBJ.X2 + jsr MENU.Show.Borders.Y + ldy #S.OBJ.Y1 + jsr MENU.Show.Borders.Y + ldy #S.OBJ.X2 + jsr MENU.Show.Borders.Y + ldy #S.OBJ.Y2 + jsr MENU.Show.Borders.Y + + lda #S.CB.CMD.HLINE BOTTOM + jsr MENU.Show.Borders.H + ldy #S.OBJ.X1 + jsr MENU.Show.Borders.Y + ldy #S.OBJ.Y2 + jsr MENU.Show.Borders.Y + ldy #S.OBJ.X2 + jsr MENU.Show.Borders.Y + ldy #S.OBJ.Y2 + jmp MENU.Show.Borders.Y + +MENU.Show.Borders.H + jsr PutA2CBBuf + lda #S.CB.OP.SET + jsr PutA2CBBuf + lda #S.CB.M.MONO + jsr PutA2CBBuf + lda PREFS.BORDERCOLOR + jmp PutA2CBBuf + +MENU.Show.Borders.Y + lda (ZPMENUPtr),y + jsr PutA2CBBuf + iny + lda (ZPMENUPtr),y + jmp PutA2CBBuf +*-------------------------------------- +MENU.Show.Item ldy #S.MITEM.F + lda (ZPPtr1),y + cmp #S.MITEM.F.SEP + bne .1 + + lda #S.CB.CMD.HLINE + jsr PutA2CBBuf + lda #S.CB.OP.SET + jsr PutA2CBBuf + lda #S.CB.M.MONO + jsr PutA2CBBuf + lda PREFS.BORDERCOLOR + jsr PutA2CBBuf + + ldy #S.OBJ.X1 + jsr MENU.Show.Borders.Y + lda SYSFON.H + lsr + clc + adc DY + jsr PutA2CBBuf + lda DY+1 + adc #0 + jsr PutA2CBBuf + + ldy #S.OBJ.X2 + jsr MENU.Show.Borders.Y + ldy #S.OBJ.Y1 + jmp MENU.Show.Borders.Y +*-------------------------------------- +.1 ldy #S.OBJ.X1 + lda (ZPMENUPtr),y + + sec +1px Border + + adc #5 TODO : Checked + sta DX + iny + lda (ZPMENUPtr),y + adc #0 + sta DX+1 + + jsr MENU.GetIcon + beq .2 + + jsr DRAW.YABMAtDXDY + +.2 lda DX + clc + adc IY Icon reserved W + sta DX + + lda DX+1 + adc #0 + sta DX+1 + + jsr MENU.GetText + + ldx hSYSFON + jsr DRAW.YATextAtDXDY + + jsr MENU.GetKeyString + beq .3 + + lda DX + sec + adc IE + sta DX + lda DX+1 + adc IE+1 + sta DX+1 + + >LDYA L.KEYSTRING + ldx hSYSFON + jsr DRAW.YATextAtDXDY + +.3 + + clc + rts +*-------------------------------------- +MENU.GetIcon ldy #S.MITEM.pICON+1 + lda (ZPPtr1),y + bne .1 + + dey + lda (ZPPtr1),y + beq .8 + + tax + ldy L.BMs,x + lda L.BMs+1,x NON ZERO +.8 rts + +.1 pha + dey + lda (ZPPtr1),y + tay + pla NON ZERO + + rts +*-------------------------------------- +MENU.GetText lda #S.MITEM.TEXT clc adc ZPPtr1 tay lda ZPPtr1+1 adc #0 - - ldx hSYSFON - jsr FON.GetTextSize - - lda CB.Cache+S.CB.SrcW - cmp IE - lda CB.Cache+S.CB.SrcW+1 - sbc IE+1 - bcc .2 - - lda CB.Cache+S.CB.SrcW - sta IE - lda CB.Cache+S.CB.SrcW+1 - sta IE+1 - -.2 ldx #0 + rts +*-------------------------------------- +MENU.GetKeyString + ldx #0 ldy #S.MITEM.KEYMOD lda (ZPPtr1),y @@ -296,7 +556,7 @@ MENU.Show.GetW ldy #S.MITEM.F lda #1 sta KEYSTRING,x inx - lda #"-" + lda #'-' sta KEYSTRING,x inx @@ -308,108 +568,26 @@ MENU.Show.GetW ldy #S.MITEM.F lda #2 sta KEYSTRING,x inx - lda #"-" + lda #'-' sta KEYSTRING,x inx .6 iny lda (ZPPtr1),y - beq .8 + beq .7 sta KEYSTRING,x inx - stz KEYSTRING,x - >LDYA L.KEYSTRING - ldx hSYSFON - jsr FON.GetTextSize - cpy INE - bcs .8 - - sty INE - -.8 rts -*-------------------------------------- -MENU.Show.Borders - lda #S.CB.CMD.HLINE TOP - jsr MENU.Show.Borders.H - - ldy #S.OBJ.X1 - jsr MENU.Show.Borders.Y - - ldy #S.OBJ.Y1 - jsr MENU.Show.Borders.Y - - ldy #S.OBJ.X2 - jsr MENU.Show.Borders.Y - - ldy #S.OBJ.Y1 - jsr MENU.Show.Borders.Y - - lda #S.CB.CMD.VLINE LEFT - jsr MENU.Show.Borders.Y - - ldy #S.OBJ.X1 - jsr MENU.Show.Borders.Y - - ldy #S.OBJ.Y1 - jsr MENU.Show.Borders.Y - - ldy #S.OBJ.X1 - jsr MENU.Show.Borders.Y - - ldy #S.OBJ.Y2 - jsr MENU.Show.Borders.Y - - lda #S.CB.CMD.VLINE RIGHT - jsr MENU.Show.Borders.H - - ldy #S.OBJ.X2 - jsr MENU.Show.Borders.Y - - ldy #S.OBJ.Y1 - jsr MENU.Show.Borders.Y - - ldy #S.OBJ.X2 - jsr MENU.Show.Borders.Y - - ldy #S.OBJ.Y2 - jsr MENU.Show.Borders.Y - - lda #S.CB.CMD.HLINE BOTTOM - jsr MENU.Show.Borders.H - - ldy #S.OBJ.X1 - jsr MENU.Show.Borders.Y - - ldy #S.OBJ.Y2 - jsr MENU.Show.Borders.Y - - ldy #S.OBJ.X2 - jsr MENU.Show.Borders.Y - - ldy #S.OBJ.Y2 - jsr MENU.Show.Borders.Y +.7 stz KEYSTRING,x + txa rts - -MENU.Show.Borders.H - jsr PutA2CBBuf - lda #S.CB.OP.SET - jsr PutA2CBBuf - lda #S.CB.M.MONO - jsr PutA2CBBuf - lda PREFS.BORDERCOLOR - jmp PutA2CBBuf - -MENU.Show.Borders.Y - lda (ZPMENUPtr),y - jsr PutA2CBBuf - iny - lda (ZPMENUPtr),y - jmp PutA2CBBuf *-------------------------------------- MENU.Destroy + + clc + rts *-------------------------------------- MAN SAVE usr/src/lib/libgui.s.menu diff --git a/LIB/LIBGUI.S.SYSBAR.txt b/LIB/LIBGUI.S.SYSBAR.txt index 69affab4..ff33d5a1 100644 --- a/LIB/LIBGUI.S.SYSBAR.txt +++ b/LIB/LIBGUI.S.SYSBAR.txt @@ -172,7 +172,7 @@ SYSBAR.Show.W lda #S.CB.CMD.FILLRECT lda WND.SysBar+S.OBJ.Y2+1 jmp PutA2CBBuf *-------------------------------------- -DRAW.YABMAtDXDY >STYA ZPPtr1 Src BM +DRAW.YABMAtDXDY >STYA ZPBMPtr Src BM lda #S.CB.CMD.BITBLT jsr PutA2CBBuf @@ -211,16 +211,16 @@ DRAW.YABMAtDXDY >STYA ZPPtr1 Src BM ldy #S.BM.W -.2 lda (ZPPtr1),y S.CB.SrcW,S.CB.SrcH +.2 lda (ZPBMPtr),y S.CB.SrcW,S.CB.SrcH jsr PutA2CBBuf iny dex bne .2 - lda ZPPtr1 S.CB.SrcPtr + lda ZPBMPtr S.CB.SrcPtr jsr PutA2CBBuf - lda ZPPtr1+1 + lda ZPBMPtr+1 jsr PutA2CBBuf lda #0 S.CB.DstPtr @@ -230,7 +230,8 @@ DRAW.YABMAtDXDY >STYA ZPPtr1 Src BM rts *-------------------------------------- DRAW.YATextAtDXDY - >STYA ZPPtr1 Src Text + pha Src Text + phy lda #S.CB.CMD.DRAWTEXT2 jsr PutA2CBBuf @@ -252,7 +253,7 @@ DRAW.YATextAtDXDY ldy #0 ldx #4 -.1 lda DX,y S.CB.X1,S.CB.Y1 +.1 lda DX,y DX,DY -> S.CB.X1,S.CB.Y1 jsr PutA2CBBuf iny dex @@ -277,22 +278,16 @@ DRAW.YATextAtDXDY jsr PutA2CBBuf S.CB.SrcH jsr PutA2CBBuf - lda ZPPtr1 S.CB.SrcPtr - jsr PutA2CBBuf - - lda ZPPtr1+1 - jsr PutA2CBBuf - - lda #0 S.CB.DstPtr - jsr PutA2CBBuf + jsr PutA2CBBuf S.CB.SrcPtr jsr PutA2CBBuf - lda ZPPtr1 - jsr PutA2CBBuf S.CB.TxtPtr - lda ZPPtr1+1 + jsr PutA2CBBuf S.CB.DstPtr jsr PutA2CBBuf - - rts + + pla + jsr PutA2CBBuf S.CB.TxtPtr + pla + jmp PutA2CBBuf *-------------------------------------- MAN SAVE usr/src/lib/libgui.s.sysbar diff --git a/LIB/LIBGUI.S.txt b/LIB/LIBGUI.S.txt index 2aa0b8c5..8609e6d5 100644 --- a/LIB/LIBGUI.S.txt +++ b/LIB/LIBGUI.S.txt @@ -78,6 +78,7 @@ ZPCBPtr .BS 2 ZPObjPtr .BS 2 ZPWNDPtr .BS 2 ZPMENUPtr .BS 2 +ZPBMPtr .BS 2 CLIP.Line.P1 .BS 1 CLIP.Line.P2 .BS 1 @@ -146,6 +147,7 @@ L.WND.SysBar .DA WND.SysBar L.WND.SysBar.2osX .DA WND.SysBar.2osX L.MENU.Sys .DA MENU.Sys *-------------------------------------- +L.BMs .EQ *-2 L.BM.Apple .DA BM.Apple L.BM.Close .DA BM.Close L.BM.Max .DA BM.Max @@ -425,10 +427,10 @@ KEY.Ctrl .AZ "Ctrl-" MENU.Sys .DA #.1-* next .DA #S.MITEM.F.ITEM F .DA #0 S - .DA 0 pICON - .DA #S.MITEM.KEYMOD.CA+S.MITEM.KEYMOD.OA+S.MITEM.KEYMOD.CTRL - .DA #"A" .DA #2 ID + .DA BM.ID.APPLE pICON + .DA #S.MITEM.KEYMOD.CA+S.MITEM.KEYMOD.OA+S.MITEM.KEYMOD.CTRL + .DA #'A' .AZ "About..." .1 .DA #.2-* next @@ -437,13 +439,44 @@ MENU.Sys .DA #.1-* next .2 .DA #.3-* next .DA #S.MITEM.F.SUBMENU F .DA #0 S + .DA #0 ID + .DA 0 pICON + .DA 0 pMENU + .AZ "Programs" + +.3 .DA #.4-* next + .DA #S.MITEM.F.SUBMENU F + .DA #0 S + .DA #0 ID .DA 0 pICON .DA 0 pMENU .AZ "Settings" -.3 .DA #0 +.4 .DA #.5-* next + .DA #S.MITEM.F.SEP + +.5 .DA #.6-* next + .DA #S.MITEM.F.ITEM F + .DA #0 S + .DA #8 ID + .DA 0 pICON + .DA #0 + .DA #0 + .AZ "Search..." + +.6 .DA #.7-* next + .DA #S.MITEM.F.ITEM F + .DA #0 S + .DA #10 ID + .DA 0 pICON + .DA #S.MITEM.KEYMOD.OA + .DA #'R' + .AZ "Run..." + +.7 .DA #0 *-------------------------------------- PREFS.BESTVIEWEDX .DA #$FC +PREFS.MENUCOLOR .DA #C.WHITE PREFS.SYSBARCOLOR .DA #C.WHITE PREFS.MBARXMARGIN .DA #5 PREFS.BORDERCOLOR .DA #C.BLACK diff --git a/SBIN/GUI.S.txt b/SBIN/GUI.S.txt index 36c4f664..a6ae1951 100644 --- a/SBIN/GUI.S.txt +++ b/SBIN/GUI.S.txt @@ -42,6 +42,7 @@ CS.START cld .DA CS.QUIT L.LIBGUI .DA LIBGUI L.MouseData .DA MouseData +L.LOGOFILE .DA LOGOFILE L.WND.TITLE .DA WND.TITLE L.WND.MBAR .DA WND.MBAR L.WND.STATUS .DA WND.STATUS @@ -53,11 +54,20 @@ CS.INIT >LDYA L.LIBGUI sta hLIBGUI * clc -.9 rts +.9 +CS.INIT.RTS rts *-------------------------------------- CS.RUN >LIBCALL hLIBGUI,LIBGUI.ShowCursor - + >PUSHW L.LOGOFILE + >PUSHBI O.RDONLY + >PUSHBI $CB Type + >PUSHWZ Aux type + >SYSCALL LoadStkObj + bcs CS.INIT.RTS + + stx hLogo + CS.RUN.LOOP >SLEEP >PUSHW L.MouseData @@ -163,6 +173,8 @@ hLIBGUI .BS 1 *-------------------------------------- MouseData .BS S.MOUSE *-------------------------------------- +hLogo .BS 1 +LOGOFILE .AZ "${ROOT}root/bmp/A2OSX.LOGO" hWND .BS 1 WND.TITLE .AZ "Window Title" *--------------------------------------