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