--- /dev/null
+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