diff --git a/INC/LIBGUI.I.txt b/INC/LIBGUI.I.txt index 17ef30aa..d0ca3952 100644 --- a/INC/LIBGUI.I.txt +++ b/INC/LIBGUI.I.txt @@ -151,22 +151,24 @@ S.MENU.hSAVEBUF .EQ S.OBJ+2 * S.MENU .EQ S.OBJ+4 *-------------------------------------- -S.MITEM.F .EQ 0 +S.MITEM.NEXT .EQ 0 +S.MITEM.F .EQ 1 S.MITEM.F.SEP .EQ 1 S.MITEM.F.ITEM .EQ 2 S.MITEM.F.SUBMENU .EQ 3 -S.MITEM.S .EQ 1 +S.MITEM.S .EQ 2 S.MITEM.S.CHECKED .EQ %01000000 S.MITEM.S.DISABLED .EQ %10000000 -S.MITEM.pICON .EQ 2 -S.MITEM.pMENU .EQ 4 -S.MITEM.KEYMOD .EQ 4 +S.MITEM.pICON .EQ 3 +S.MITEM.pMENU .EQ 5 +S.MITEM.KEYMOD .EQ 7 S.MITEM.KEYMOD.CTRL .EQ %10000000 S.MITEM.KEYMOD.OA .EQ %01000000 S.MITEM.KEYMOD.CA .EQ %00100000 -S.MITEM.KEY .EQ 6 +S.MITEM.KEY .EQ 8 +S.MITEM.ID .EQ 9 -S.MITEM.TEXT .EQ 8 CSTR +S.MITEM.TEXT .EQ 10 CSTR * ... *-------------------------------------- S.BUT.F.DISABLED .EQ %10000000 diff --git a/LIB/LIBGUI.S.MENU.txt b/LIB/LIBGUI.S.MENU.txt index d8c7ae8f..01b9f2d1 100644 --- a/LIB/LIBGUI.S.MENU.txt +++ b/LIB/LIBGUI.S.MENU.txt @@ -1,21 +1,6 @@ NEW AUTO 3,1 *-------------------------------------- -* Y,A = ptr to menu definition -*-------------------------------------- -MENU.New >STYA ZPPtr1 - - lda #2 1px Border - sta DX - sta DY - stz DX+1 - stz DY+1 - clc - rts -*-------------------------------------- -MENU.Paint -MENU.Close -*-------------------------------------- MENU.MBarInit >STYA ZPMENUPtr >STYA ZPPtr1 @@ -104,17 +89,68 @@ MENU.MBarInit >STYA ZPMENUPtr .80 clc rts *-------------------------------------- -MBAR.New -MBAR.Paint -MBAR.Close - +* MENU.New(int X, int Y, *MITEM mitems) *-------------------------------------- -MITEM.New -MITEM.Paint -MITEM.Close +MENU.New >LDYAI S.MENU + >SYSCALL2 getmem + bcs .9 - clc + >STYA ZPMENUPtr +* stx + + lda #S.OBJ.T.MENU + sta (ZPMENUPtr) S.OBJ.T + + lda #0 + + ldy #S.MENU-1 + +.1 sta (ZPMENUPtr),y + dey + bne .1 + + >PULLA + ldy #S.OBJ.S.MENU.DEFS + sta (ZPMENUPtr),y + sta ZPPtr1 + >PULLA + iny + sta (ZPMENUPtr),y + sta ZPPtr1+1 + + >PULLA + ldy #S.OBJ.Y1 + sta (ZPMENUPtr),y + >PULLA + iny + sta (ZPMENUPtr),y + + >PULLA + ldy #S.OBJ.X1 + and PREFS.BESTVIEWEDX + sta (ZPMENUPtr),y + >PULLA + iny + sta (ZPMENUPtr),y + + lda #2 1px Border + sta DX + sta DY + stz DX+1 + stz DY+1 + +.2 lda (ZPPtr1) + + +.8 clc rts + +.9 >POP 6 + + rts +*-------------------------------------- +MENU.Paint +MENU.Close *-------------------------------------- MAN SAVE usr/src/lib/libgui.s.menu diff --git a/LIB/LIBGUI.S.WND.txt b/LIB/LIBGUI.S.WND.txt index cf91d4b9..d0a5b6af 100644 --- a/LIB/LIBGUI.S.WND.txt +++ b/LIB/LIBGUI.S.WND.txt @@ -85,7 +85,7 @@ WND.Quit.RTS rts *-------------------------------------- WND.New >LDYAI S.WND >SYSCALL2 getmem - bcs WND.Quit.RTS + bcs .9 >STYA ZPWNDPtr @@ -94,7 +94,10 @@ WND.New >LDYAI S.WND bcc .10 lda #E.OOH - >RET 9 + +.9 >POP 9 + + rts .10 lda #S.OBJ.T.WND sta (ZPWNDPtr) S.OBJ.T @@ -161,7 +164,7 @@ WND.New >LDYAI S.WND txa ID ldy WND.Stack.Top - sta WND.Stack + sta WND.Stack,y inc WND.Stack.Top * clc diff --git a/LIB/LIBGUI.S.txt b/LIB/LIBGUI.S.txt index 9dde33cd..24590a06 100644 --- a/LIB/LIBGUI.S.txt +++ b/LIB/LIBGUI.S.txt @@ -418,7 +418,8 @@ WND.SysBar.Time.X1 .BS 2 WND.SysBar.bA2osX .BS 1 WND.SysBar.2osX .AZ "2osX" *-------------------------------------- -MENU.Sys .DA #S.MITEM.F.ITEM F +MENU.Sys .DA #.1-* next + .DA #S.MITEM.F.ITEM F .DA #0 S .DA 0 pICON .DA #0 KEYMOD @@ -426,15 +427,17 @@ MENU.Sys .DA #S.MITEM.F.ITEM F .DA #2 ID .AZ "About..." +.1 .DA #.2-* next .DA #S.MITEM.F.SEP +.2 .DA #.3-* next .DA #S.MITEM.F.SUBMENU F .DA #0 S .DA 0 pICON .DA 0 pMENU .AZ "Settings" - .DA #0 +.9 .DA #0 *-------------------------------------- PREFS.BESTVIEWEDX .DA #$FC PREFS.SYSBARCOLOR .DA #C.WHITE diff --git a/SBIN/GUI.S.txt b/SBIN/GUI.S.txt index 32d266ac..36c4f664 100644 --- a/SBIN/GUI.S.txt +++ b/SBIN/GUI.S.txt @@ -173,6 +173,7 @@ WND.MBAR .DA #.1-* next .DA 0 X2 .DA 0 MENU .AZ "File" + .1 .DA #.2-* next .DA #0 status .DA 0 X1 @@ -180,6 +181,7 @@ WND.MBAR .DA #.1-* next .DA 0 X2 .DA 0 MENU .AZ "Edit" + .2 .DA #.3-* next .DA #0 status .DA 0 X1 @@ -187,6 +189,7 @@ WND.MBAR .DA #.1-* next .DA 0 X2 .DA 0 MENU .AZ "Options" + .3 .DA #.4-* next .DA #0 status .DA 0 X1 @@ -194,6 +197,7 @@ WND.MBAR .DA #.1-* next .DA 0 X2 .DA 0 MENU .AZ "?" + .4 .DA #0 *-------------------------------------- WND.STATUS .AZ "Window status bar message"