Commit | Line | Data |
---|---|---|
c1b567d8 MW |
1 | REM Sapphire menu macro library -- © 1994 Straylight |
2 | ||
3 | DEF FNmenudefs_test=0 | |
4 | ||
5 | REM --- Support functions --- | |
6 | ||
7 | DEF FNmenu__b(o%,b%) | |
8 | LOCAL m% | |
9 | IF b%=0 THEN ERROR 1,"Bit mask 0 passed to menuDefs" | |
10 | m%=0 | |
11 | WHILE (b% AND 1)=0 | |
12 | m%+=1 | |
13 | b%=b%>>1 | |
14 | ENDWHILE | |
15 | [ opt 4 | |
16 | dcd (o%<<5) OR (m%) | |
17 | ] | |
18 | =m% | |
19 | ||
20 | DEF FNmenu__s(f%) | |
21 | 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" | |
22 | !(menu__l+O%-P%)=!(menu__l+O%-P%) OR f% | |
23 | =0 | |
24 | ||
25 | DEF FNmenu__n | |
26 | [ opt 4 | |
27 | FNalign | |
28 | .menu__l | |
29 | dcd 0 | |
30 | ] | |
31 | =0 | |
32 | ||
33 | DEF FNmenu__1(f%,a%) | |
34 | [ opt 4 | |
35 | FNmenu__s(f%) | |
36 | dcd a% | |
37 | ] | |
38 | =0 | |
39 | ||
40 | DEF FNmenu__2(f%,a%,b%) | |
41 | [ opt 4 | |
42 | FNmenu__s(f%) | |
43 | dcd a% | |
44 | dcd b% | |
45 | ] | |
46 | =0 | |
47 | ||
48 | DEF FNmenu__ob(f%,o%,b%) | |
49 | [ opt 4 | |
50 | FNmenu__s(f%) | |
51 | FNmenu__b(o%,b%) | |
52 | ] | |
53 | =0 | |
54 | ||
55 | REM --- Creating menu headers --- | |
56 | ||
57 | DEF FNmenu(t$) | |
58 | [ opt 4 | |
59 | FNmenu__n | |
60 | dcb t$+CHR$(0) | |
61 | FNalign | |
62 | ] | |
63 | =0 | |
64 | ||
65 | DEF FNmenu_ind(t%) | |
66 | [ opt 4 | |
67 | FNmenu__n | |
68 | FNmenu__s(mFlag_indirect) | |
69 | dcd t% | |
70 | ] | |
71 | =0 | |
72 | ||
73 | DEF FNtearoff(t$) | |
74 | [ opt 4 | |
75 | FNmenu__n | |
76 | FNmenu__s(mFlag_tearoff) | |
77 | dcb t$+CHR$(0) | |
78 | FNalign | |
79 | ] | |
80 | =0 | |
81 | ||
82 | DEF FNtearoff_ind(t%) | |
83 | [ opt 4 | |
84 | FNmenu__n | |
85 | FNmenu__s(mFlag_indirect) | |
86 | FNmenu__s(mFlag_tearoff) | |
87 | dcd t% | |
88 | ] | |
89 | =0 | |
90 | ||
91 | REM --- Flags for menus and items --- | |
92 | ||
93 | DEF FNmenu_r12Data=FNmenu__s(mFlag_R12) | |
94 | ||
95 | DEF FNmenu_makeMe(p%)=FNmenu__1(mFlag_makeMe,p%) | |
96 | ||
97 | DEF FNmenu_mHeight(h%)=FNmenu__1(mFlag_maxHeight,h%) | |
98 | ||
99 | REM --- Menu items --- | |
100 | ||
101 | DEF FNmenu_item(t$) | |
102 | [ opt 4 | |
103 | FNmenu__n | |
104 | dcb t$+CHR$(0) | |
105 | FNalign | |
106 | ] | |
107 | =0 | |
108 | ||
109 | DEF FNmenu_itemInd(t%) | |
110 | [ opt 4 | |
111 | FNmenu__n | |
112 | FNmenu__s(mFlag_indirect) | |
113 | dcd t% | |
114 | ] | |
115 | =0 | |
116 | ||
117 | DEF FNmenu_shade(o%,b%)=FNmenu__ob(mFlag_shade,o%,b%) | |
118 | ||
119 | DEF FNmenu_iShade(o%,b%)=FNmenu__ob(mFlag_invShade,o%,b%) | |
120 | ||
121 | DEF FNmenu_switch(o%,b%)=FNmenu__ob(mFlag_switch,o%,b%) | |
122 | ||
123 | DEF FNmenu_radio(g%,s%)=FNmenu__2(mFlag_radio,g%,s%) | |
124 | ||
125 | DEF FNmenu_sprite(s%,a%) | |
126 | [ opt 4 | |
127 | FNmenu__s(mFlag_sprite) | |
128 | dcd s% | |
129 | ] | |
130 | IF a%<>0 THEN [opt 4:dcd a%:] | |
131 | =0 | |
132 | ||
133 | DEF FNmenu_halfSize=FNmenu__s(mFlag_halfSize) | |
134 | ||
135 | DEF FNmenu_subWarn=FNmenu__s(mFlag_subWarn) | |
136 | ||
137 | DEF FNmenu_subMenu(s%,h%)=FNmenu__2(mFlag_subMenu,s%,h%) | |
138 | ||
139 | DEF FNmenu_noWarn=FNmenu__s(mFlag_noWarn) | |
140 | ||
141 | DEF FNmenu_ruleOff=FNmenu__s(mFlag_ruleOff) | |
142 | ||
143 | DEF FNmenu_end | |
144 | [ opt o | |
145 | dcd mFlag_end | |
146 | ] | |
147 | =0 |