1 | \ Copyright (c) 2003 Scott Long <scottl@freebsd.org> |
---|
2 | \ Copyright (c) 2003 Aleksander Fafula <alex@fafula.com> |
---|
3 | \ Copyright (c) 2006-2011 Devin Teske <devinteske@hotmail.com> |
---|
4 | \ All rights reserved. |
---|
5 | \ |
---|
6 | \ Redistribution and use in source and binary forms, with or without |
---|
7 | \ modification, are permitted provided that the following conditions |
---|
8 | \ are met: |
---|
9 | \ 1. Redistributions of source code must retain the above copyright |
---|
10 | \ notice, this list of conditions and the following disclaimer. |
---|
11 | \ 2. Redistributions in binary form must reproduce the above copyright |
---|
12 | \ notice, this list of conditions and the following disclaimer in the |
---|
13 | \ documentation and/or other materials provided with the distribution. |
---|
14 | \ |
---|
15 | \ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND |
---|
16 | \ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
---|
17 | \ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
---|
18 | \ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE |
---|
19 | \ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
---|
20 | \ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
---|
21 | \ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
---|
22 | \ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
---|
23 | \ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
---|
24 | \ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
---|
25 | \ SUCH DAMAGE. |
---|
26 | \ |
---|
27 | \ $FreeBSD: releng/9.1/sys/boot/forth/beastie.4th 222417 2011-05-28 08:50:38Z julian $ |
---|
28 | |
---|
29 | marker task-beastie.4th |
---|
30 | |
---|
31 | include /boot/color.4th |
---|
32 | include /boot/delay.4th |
---|
33 | |
---|
34 | variable logoX |
---|
35 | variable logoY |
---|
36 | |
---|
37 | \ Initialize logo placement to defaults |
---|
38 | 46 logoX ! |
---|
39 | 4 logoY ! |
---|
40 | |
---|
41 | : beastie-logo ( x y -- ) \ color BSD mascot (19 rows x 34 columns) |
---|
42 | |
---|
43 | 2dup at-xy ." [31m, ," 1+ |
---|
44 | 2dup at-xy ." /( )`" 1+ |
---|
45 | 2dup at-xy ." \ \___ / |" 1+ |
---|
46 | 2dup at-xy ." /- [37m_[31m `-/ '" 1+ |
---|
47 | 2dup at-xy ." ([37m/\/ \[31m \ /\" 1+ |
---|
48 | 2dup at-xy ." [37m/ / |[31m ` \" 1+ |
---|
49 | 2dup at-xy ." [34mO O [37m) [31m/ |" 1+ |
---|
50 | 2dup at-xy ." [37m`-^--'[31m`< '" 1+ |
---|
51 | 2dup at-xy ." (_.) _ ) /" 1+ |
---|
52 | 2dup at-xy ." `.___/` /" 1+ |
---|
53 | 2dup at-xy ." `-----' /" 1+ |
---|
54 | 2dup at-xy ." [33m<----.[31m __ / __ \" 1+ |
---|
55 | 2dup at-xy ." [33m<----|====[31mO)))[33m==[31m) \) /[33m====|" 1+ |
---|
56 | 2dup at-xy ." [33m<----'[31m `--' `.__,' \" 1+ |
---|
57 | 2dup at-xy ." | |" 1+ |
---|
58 | 2dup at-xy ." \ / /\" 1+ |
---|
59 | 2dup at-xy ." [36m______[31m( (_ / \______/" 1+ |
---|
60 | 2dup at-xy ." [36m,' ,-----' |" 1+ |
---|
61 | at-xy ." `--{__________)[37m" |
---|
62 | |
---|
63 | \ Put the cursor back at the bottom |
---|
64 | 0 25 at-xy |
---|
65 | ; |
---|
66 | |
---|
67 | : beastiebw-logo ( x y -- ) \ B/W BSD mascot (19 rows x 34 columns) |
---|
68 | |
---|
69 | 2dup at-xy ." , ," 1+ |
---|
70 | 2dup at-xy ." /( )`" 1+ |
---|
71 | 2dup at-xy ." \ \___ / |" 1+ |
---|
72 | 2dup at-xy ." /- _ `-/ '" 1+ |
---|
73 | 2dup at-xy ." (/\/ \ \ /\" 1+ |
---|
74 | 2dup at-xy ." / / | ` \" 1+ |
---|
75 | 2dup at-xy ." O O ) / |" 1+ |
---|
76 | 2dup at-xy ." `-^--'`< '" 1+ |
---|
77 | 2dup at-xy ." (_.) _ ) /" 1+ |
---|
78 | 2dup at-xy ." `.___/` /" 1+ |
---|
79 | 2dup at-xy ." `-----' /" 1+ |
---|
80 | 2dup at-xy ." <----. __ / __ \" 1+ |
---|
81 | 2dup at-xy ." <----|====O)))==) \) /====|" 1+ |
---|
82 | 2dup at-xy ." <----' `--' `.__,' \" 1+ |
---|
83 | 2dup at-xy ." | |" 1+ |
---|
84 | 2dup at-xy ." \ / /\" 1+ |
---|
85 | 2dup at-xy ." ______( (_ / \______/" 1+ |
---|
86 | 2dup at-xy ." ,' ,-----' |" 1+ |
---|
87 | at-xy ." `--{__________)" |
---|
88 | |
---|
89 | \ Put the cursor back at the bottom |
---|
90 | 0 25 at-xy |
---|
91 | ; |
---|
92 | |
---|
93 | : fbsdbw-logo ( x y -- ) \ "FreeBSD" logo in B/W (13 rows x 21 columns) |
---|
94 | |
---|
95 | \ We used to use the beastie himself as our default... until the |
---|
96 | \ eventual complaint derided his reign of the advanced boot-menu. |
---|
97 | \ |
---|
98 | \ This is the replacement of beastie to satiate the haters of our |
---|
99 | \ beloved helper-daemon (ready to track down and spear bugs with |
---|
100 | \ his trident and sporty sneakers; see above). |
---|
101 | \ |
---|
102 | \ Since we merely just changed the default and not the default- |
---|
103 | \ location, below is an adjustment to the passed-in coordinates, |
---|
104 | \ forever influenced by the proper location of beastie himself |
---|
105 | \ kept as the default loader_logo_x/loader_logo_y values. |
---|
106 | \ |
---|
107 | 5 + swap 6 + swap |
---|
108 | |
---|
109 | 2dup at-xy ." ______" 1+ |
---|
110 | 2dup at-xy ." | ____| __ ___ ___ " 1+ |
---|
111 | 2dup at-xy ." | |__ | '__/ _ \/ _ \" 1+ |
---|
112 | 2dup at-xy ." | __|| | | __/ __/" 1+ |
---|
113 | 2dup at-xy ." | | | | | | |" 1+ |
---|
114 | 2dup at-xy ." |_| |_| \___|\___|" 1+ |
---|
115 | 2dup at-xy ." ____ _____ _____" 1+ |
---|
116 | 2dup at-xy ." | _ \ / ____| __ \" 1+ |
---|
117 | 2dup at-xy ." | |_) | (___ | | | |" 1+ |
---|
118 | 2dup at-xy ." | _ < \___ \| | | |" 1+ |
---|
119 | 2dup at-xy ." | |_) |____) | |__| |" 1+ |
---|
120 | 2dup at-xy ." | | | |" 1+ |
---|
121 | at-xy ." |____/|_____/|_____/" |
---|
122 | |
---|
123 | \ Put the cursor back at the bottom |
---|
124 | 0 25 at-xy |
---|
125 | ; |
---|
126 | |
---|
127 | : orb-logo ( x y -- ) \ color Orb mascot (15 rows x 30 columns) |
---|
128 | |
---|
129 | 3 + \ beastie adjustment (see `fbsdbw-logo' comments above) |
---|
130 | |
---|
131 | 2dup at-xy ." " 1+ |
---|
132 | 2dup at-xy ." " 1+ |
---|
133 | 2dup at-xy ." " 1+ |
---|
134 | 2dup at-xy ." " 1+ |
---|
135 | 2dup at-xy ." " 1+ |
---|
136 | 2dup at-xy ." " 1+ |
---|
137 | 2dup at-xy ." " 1+ |
---|
138 | 2dup at-xy ." " 1+ |
---|
139 | 2dup at-xy ." " 1+ |
---|
140 | 2dup at-xy ." " 1+ |
---|
141 | 2dup at-xy ." " 1+ |
---|
142 | 2dup at-xy ." " 1+ |
---|
143 | 2dup at-xy ." " 1+ |
---|
144 | 2dup at-xy ." " 1+ |
---|
145 | at-xy ." " |
---|
146 | |
---|
147 | \ Put the cursor back at the bottom |
---|
148 | 0 25 at-xy |
---|
149 | ; |
---|
150 | |
---|
151 | : orbbw-logo ( x y -- ) \ B/W Orb mascot (15 rows x 32 columns) |
---|
152 | |
---|
153 | 3 + \ beastie adjustment (see `fbsdbw-logo' comments above) |
---|
154 | |
---|
155 | 2dup at-xy ." " 1+ |
---|
156 | 2dup at-xy ." " 1+ |
---|
157 | 2dup at-xy ." " 1+ |
---|
158 | 2dup at-xy ." " 1+ |
---|
159 | 2dup at-xy ." " 1+ |
---|
160 | 2dup at-xy ." " 1+ |
---|
161 | 2dup at-xy ." " 1+ |
---|
162 | 2dup at-xy ." " 1+ |
---|
163 | 2dup at-xy ." " 1+ |
---|
164 | 2dup at-xy ." " 1+ |
---|
165 | 2dup at-xy ." " 1+ |
---|
166 | 2dup at-xy ." " 1+ |
---|
167 | 2dup at-xy ." " 1+ |
---|
168 | 2dup at-xy ." " 1+ |
---|
169 | at-xy ." " |
---|
170 | |
---|
171 | \ Put the cursor back at the bottom |
---|
172 | 0 25 at-xy |
---|
173 | ; |
---|
174 | |
---|
175 | \ This function draws any number of beastie logos at (loader_logo_x, |
---|
176 | \ loader_logo_y) if defined, else (46,4) (to the right of the menu). To choose |
---|
177 | \ your beastie, set the variable `loader_logo' to the respective logo name. |
---|
178 | \ |
---|
179 | \ Currently available: |
---|
180 | \ |
---|
181 | \ NAME DESCRIPTION |
---|
182 | \ beastie Color ``Helper Daemon'' mascot (19 rows x 34 columns) |
---|
183 | \ beastiebw B/W ``Helper Daemon'' mascot (19 rows x 34 columns) |
---|
184 | \ fbsdbw "FreeBSD" logo in B/W (13 rows x 21 columns) |
---|
185 | \ orb Color ``Orb'' mascot (15 rows x 30 columns) |
---|
186 | \ orbbw B/W ``Orb'' mascot (15 rows x 32 columns) (default) |
---|
187 | \ |
---|
188 | \ NOTE: Setting `loader_logo' to an undefined value (such as "none") will |
---|
189 | \ prevent beastie from being drawn. |
---|
190 | \ |
---|
191 | : draw-beastie ( -- ) \ at (loader_logo_x,loader_logo_y), else (46,4) |
---|
192 | |
---|
193 | s" loader_logo_x" getenv dup -1 <> if |
---|
194 | ?number 1 = if logoX ! then |
---|
195 | else |
---|
196 | drop |
---|
197 | then |
---|
198 | s" loader_logo_y" getenv dup -1 <> if |
---|
199 | ?number 1 = if logoY ! then |
---|
200 | else |
---|
201 | drop |
---|
202 | then |
---|
203 | |
---|
204 | s" loader_logo" getenv dup -1 = if |
---|
205 | logoX @ logoY @ |
---|
206 | loader_color? if |
---|
207 | orb-logo |
---|
208 | else |
---|
209 | orbbw-logo |
---|
210 | then |
---|
211 | drop exit |
---|
212 | then |
---|
213 | |
---|
214 | 2dup s" beastie" compare-insensitive 0= if |
---|
215 | logoX @ logoY @ beastie-logo |
---|
216 | 2drop exit |
---|
217 | then |
---|
218 | 2dup s" beastiebw" compare-insensitive 0= if |
---|
219 | logoX @ logoY @ beastiebw-logo |
---|
220 | 2drop exit |
---|
221 | then |
---|
222 | 2dup s" fbsdbw" compare-insensitive 0= if |
---|
223 | logoX @ logoY @ fbsdbw-logo |
---|
224 | 2drop exit |
---|
225 | then |
---|
226 | 2dup s" orb" compare-insensitive 0= if |
---|
227 | logoX @ logoY @ orb-logo |
---|
228 | 2drop exit |
---|
229 | then |
---|
230 | 2dup s" orbbw" compare-insensitive 0= if |
---|
231 | logoX @ logoY @ orbbw-logo |
---|
232 | 2drop exit |
---|
233 | then |
---|
234 | |
---|
235 | 2drop |
---|
236 | ; |
---|
237 | |
---|
238 | : clear-beastie ( -- ) \ clears beastie from the screen |
---|
239 | logoX @ logoY @ |
---|
240 | 2dup at-xy 34 spaces 1+ 2dup at-xy 34 spaces 1+ |
---|
241 | 2dup at-xy 34 spaces 1+ 2dup at-xy 34 spaces 1+ |
---|
242 | 2dup at-xy 34 spaces 1+ 2dup at-xy 34 spaces 1+ |
---|
243 | 2dup at-xy 34 spaces 1+ 2dup at-xy 34 spaces 1+ |
---|
244 | 2dup at-xy 34 spaces 1+ 2dup at-xy 34 spaces 1+ |
---|
245 | 2dup at-xy 34 spaces 1+ 2dup at-xy 34 spaces 1+ |
---|
246 | 2dup at-xy 34 spaces 1+ 2dup at-xy 34 spaces 1+ |
---|
247 | 2dup at-xy 34 spaces 1+ 2dup at-xy 34 spaces 1+ |
---|
248 | 2dup at-xy 34 spaces 1+ 2dup at-xy 34 spaces 1+ |
---|
249 | 2dup at-xy 34 spaces 2drop |
---|
250 | |
---|
251 | \ Put the cursor back at the bottom |
---|
252 | 0 25 at-xy |
---|
253 | ; |
---|
254 | |
---|
255 | : beastie-start ( -- ) \ starts the menu |
---|
256 | s" beastie_disable" getenv |
---|
257 | dup -1 <> if |
---|
258 | s" YES" compare-insensitive 0= if |
---|
259 | exit |
---|
260 | then |
---|
261 | else |
---|
262 | drop |
---|
263 | then |
---|
264 | |
---|
265 | s" loader_delay" getenv |
---|
266 | -1 = if |
---|
267 | s" include /boot/menu.rc" evaluate |
---|
268 | else |
---|
269 | drop |
---|
270 | ." Loading Menu (Ctrl-C to Abort)" cr |
---|
271 | s" set delay_command='include /boot/menu.rc'" evaluate |
---|
272 | s" set delay_showdots" evaluate |
---|
273 | delay_execute |
---|
274 | then |
---|
275 | ; |
---|