X-Git-Url: https://git.distorted.org.uk/~mdw/ssr/blobdiff_plain/a3da4c116d4216fdec125d687dfc347e343a8b28..c1b567d833a004bb3d978f1f7c99f42cefa7845c:/StraySrc/Libraries/Sapphire/bsh/menuDefs.bas diff --git a/StraySrc/Libraries/Sapphire/bsh/menuDefs.bas b/StraySrc/Libraries/Sapphire/bsh/menuDefs.bas new file mode 100644 index 0000000..a20283e --- /dev/null +++ b/StraySrc/Libraries/Sapphire/bsh/menuDefs.bas @@ -0,0 +1,147 @@ +REM Sapphire menu macro library -- © 1994 Straylight + +DEF FNmenudefs_test=0 + +REM --- Support functions --- + +DEF FNmenu__b(o%,b%) +LOCAL m% +IF b%=0 THEN ERROR 1,"Bit mask 0 passed to menuDefs" +m%=0 +WHILE (b% AND 1)=0 + m%+=1 + b%=b%>>1 +ENDWHILE +[ opt 4 + dcd (o%<<5) OR (m%) +] +=m% + +DEF FNmenu__s(f%) +IF (!(menu__l+O%-P%) AND &FFFF) >= (f% AND &FFFF) AND (f% AND &FFFF)<>0 THEN ERROR 0,"Flags built in wrong order in menuDefs" +!(menu__l+O%-P%)=!(menu__l+O%-P%) OR f% +=0 + +DEF FNmenu__n +[ opt 4 + FNalign +.menu__l + dcd 0 +] +=0 + +DEF FNmenu__1(f%,a%) +[ opt 4 + FNmenu__s(f%) + dcd a% +] +=0 + +DEF FNmenu__2(f%,a%,b%) +[ opt 4 + FNmenu__s(f%) + dcd a% + dcd b% +] +=0 + +DEF FNmenu__ob(f%,o%,b%) +[ opt 4 + FNmenu__s(f%) + FNmenu__b(o%,b%) +] +=0 + +REM --- Creating menu headers --- + +DEF FNmenu(t$) +[ opt 4 + FNmenu__n + dcb t$+CHR$(0) + FNalign +] +=0 + +DEF FNmenu_ind(t%) +[ opt 4 + FNmenu__n + FNmenu__s(mFlag_indirect) + dcd t% +] +=0 + +DEF FNtearoff(t$) +[ opt 4 + FNmenu__n + FNmenu__s(mFlag_tearoff) + dcb t$+CHR$(0) + FNalign +] +=0 + +DEF FNtearoff_ind(t%) +[ opt 4 + FNmenu__n + FNmenu__s(mFlag_indirect) + FNmenu__s(mFlag_tearoff) + dcd t% +] +=0 + +REM --- Flags for menus and items --- + +DEF FNmenu_r12Data=FNmenu__s(mFlag_R12) + +DEF FNmenu_makeMe(p%)=FNmenu__1(mFlag_makeMe,p%) + +DEF FNmenu_mHeight(h%)=FNmenu__1(mFlag_maxHeight,h%) + +REM --- Menu items --- + +DEF FNmenu_item(t$) +[ opt 4 + FNmenu__n + dcb t$+CHR$(0) + FNalign +] +=0 + +DEF FNmenu_itemInd(t%) +[ opt 4 + FNmenu__n + FNmenu__s(mFlag_indirect) + dcd t% +] +=0 + +DEF FNmenu_shade(o%,b%)=FNmenu__ob(mFlag_shade,o%,b%) + +DEF FNmenu_iShade(o%,b%)=FNmenu__ob(mFlag_invShade,o%,b%) + +DEF FNmenu_switch(o%,b%)=FNmenu__ob(mFlag_switch,o%,b%) + +DEF FNmenu_radio(g%,s%)=FNmenu__2(mFlag_radio,g%,s%) + +DEF FNmenu_sprite(s%,a%) +[ opt 4 + FNmenu__s(mFlag_sprite) + dcd s% +] +IF a%<>0 THEN [opt 4:dcd a%:] +=0 + +DEF FNmenu_halfSize=FNmenu__s(mFlag_halfSize) + +DEF FNmenu_subWarn=FNmenu__s(mFlag_subWarn) + +DEF FNmenu_subMenu(s%,h%)=FNmenu__2(mFlag_subMenu,s%,h%) + +DEF FNmenu_noWarn=FNmenu__s(mFlag_noWarn) + +DEF FNmenu_ruleOff=FNmenu__s(mFlag_ruleOff) + +DEF FNmenu_end +[ opt o + dcd mFlag_end +] +=0