Create readable text `.bas' for each tokenized BASIC `,ffb' file.
[ssr] / StraySrc / Libraries / Sapphire / bsh / menuDefs.bas
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