Deleted Added
full compact
1\ Copyright (c) 2003 Scott Long <scottl@freebsd.org>
2\ Copyright (c) 2003 Aleksander Fafula <alex@fafula.com>
3\ Copyright (c) 2006-2013 Devin Teske <dteske@FreeBSD.org>
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: stable/10/sys/boot/forth/beastie.4th 262703 2014-03-03 07:28:56Z dteske $
27\ $FreeBSD: stable/10/sys/boot/forth/beastie.4th 271135 2014-09-04 21:01:10Z emaste $
28
29marker task-beastie.4th
30
31only forth definitions also support-functions
32
33variable logoX
34variable logoY
35
36\ Initialize logo placement to defaults
3746 logoX !
384 logoY !
39
40: beastie-logo ( x y -- ) \ color BSD mascot (19 rows x 34 columns)
41
422dup at-xy ." , ," 1+
432dup at-xy ." /( )`" 1+
442dup at-xy ." \ \___ / |" 1+
452dup at-xy ." /- _ `-/ '" 1+
462dup at-xy ." (/\/ \ \ /\" 1+
472dup at-xy ." / / | ` \" 1+
482dup at-xy ." O O ) / |" 1+
492dup at-xy ." `-^--'`< '" 1+
502dup at-xy ." (_.) _ ) /" 1+
512dup at-xy ." `.___/` /" 1+
522dup at-xy ." `-----' /" 1+
532dup at-xy ." <----. __ / __ \" 1+
542dup at-xy ." <----|====O)))==) \) /====|" 1+
552dup at-xy ." <----' `--' `.__,' \" 1+
562dup at-xy ." | |" 1+
572dup at-xy ." \ / /\" 1+
582dup at-xy ." ______( (_ / \______/" 1+
592dup at-xy ." ,' ,-----' |" 1+
60 at-xy ." `--{__________)"
61
62 \ Put the cursor back at the bottom
63 0 25 at-xy
64;
65
66: beastiebw-logo ( x y -- ) \ B/W BSD mascot (19 rows x 34 columns)
67
68 2dup at-xy ." , ," 1+
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 ." O O ) / |" 1+
75 2dup at-xy ." `-^--'`< '" 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 ." <----|====O)))==) \) /====|" 1+
81 2dup at-xy ." <----' `--' `.__,' \" 1+
82 2dup at-xy ." | |" 1+
83 2dup at-xy ." \ / /\" 1+
84 2dup at-xy ." ______( (_ / \______/" 1+
85 2dup at-xy ." ,' ,-----' |" 1+
86 at-xy ." `--{__________)"
87
88 \ Put the cursor back at the bottom
89 0 25 at-xy
90;
91
92: fbsdbw-logo ( x y -- ) \ "FreeBSD" logo in B/W (13 rows x 21 columns)
93
94 \ We used to use the beastie himself as our default... until the
95 \ eventual complaint derided his reign of the advanced boot-menu.
96 \
97 \ This is the replacement of beastie to satiate the haters of our
98 \ beloved helper-daemon (ready to track down and spear bugs with
99 \ his trident and sporty sneakers; see above).
100 \
101 \ Since we merely just changed the default and not the default-
102 \ location, below is an adjustment to the passed-in coordinates,
103 \ forever influenced by the proper location of beastie himself
104 \ kept as the default loader_logo_x/loader_logo_y values.
105 \
106 5 + swap 6 + swap
107
108 2dup at-xy ." ______" 1+
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 at-xy ." |____/|_____/|_____/"
121
122 \ Put the cursor back at the bottom
123 0 25 at-xy
124;
125
126: orb-logo ( x y -- ) \ color Orb mascot (15 rows x 30 columns)
127
128 3 + \ beastie adjustment (see `fbsdbw-logo' comments above)
129
130 2dup at-xy ." ``` `" 1+
131 2dup at-xy ." s` `.....---.......--.``` -/" 1+
132 2dup at-xy ." +o .--` /y:` +." 1+
133 2dup at-xy ." yo`:. :o `+-" 1+
134 2dup at-xy ." y/ -/` -o/" 1+
135 2dup at-xy ." .- ::/sy+:." 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 at-xy ." .---.....----."
145
146 \ Put the cursor back at the bottom
147 0 25 at-xy
148;
149
150: orbbw-logo ( x y -- ) \ B/W Orb mascot (15 rows x 32 columns)
151
152 3 + \ beastie adjustment (see `fbsdbw-logo' comments above)
153
154 2dup at-xy ." ``` `" 1+
155 2dup at-xy ." s` `.....---.......--.``` -/" 1+
156 2dup at-xy ." +o .--` /y:` +." 1+
157 2dup at-xy ." yo`:. :o `+-" 1+
158 2dup at-xy ." y/ -/` -o/" 1+
159 2dup at-xy ." .- ::/sy+:." 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 at-xy ." .---.....----."
169
170 \ Put the cursor back at the bottom
171 0 25 at-xy
172;
173
174\ This function draws any number of beastie logos at (loader_logo_x,
175\ loader_logo_y) if defined, else (46,4) (to the right of the menu). To choose
176\ your beastie, set the variable `loader_logo' to the respective logo name.
177\
178\ Currently available:
179\
180\ NAME DESCRIPTION
181\ beastie Color ``Helper Daemon'' mascot (19 rows x 34 columns)
182\ beastiebw B/W ``Helper Daemon'' mascot (19 rows x 34 columns)
183\ fbsdbw "FreeBSD" logo in B/W (13 rows x 21 columns)
184\ orb Color ``Orb'' mascot (15 rows x 30 columns) (2nd default)
185\ orbbw B/W ``Orb'' mascot (15 rows x 32 columns)
186\ tribute Color ``Tribute'' (must fit 19 rows x 34 columns) (default)
187\ tributebw B/W ``Tribute'' (must fit 19 rows x 34 columns)
188\
189\ NOTE: Setting `loader_logo' to an undefined value (such as "none") will
190\ prevent beastie from being drawn.
191\
192: draw-beastie ( -- ) \ at (loader_logo_x,loader_logo_y), else (46,4)
193
194 s" loader_logo_x" getenv dup -1 <> if
195 ?number 1 = if logoX ! then
196 else
197 drop
198 then
199 s" loader_logo_y" getenv dup -1 <> if
200 ?number 1 = if logoY ! then
201 else
202 drop
203 then
204
205 s" loader_logo" getenv dup -1 <> if
206 dup 5 + allocate if ENOMEM throw then
207 0 2swap strcat s" -logo" strcat
208 over -rot ( a-addr/u -- a-addr a-addr/u )
209 sfind ( a-addr a-addr/u -- a-addr xt bool )
210 rot ( a-addr xt bool -- xt bool a-addr )
211 free ( xt bool a-addr -- xt bool ior )
212 if EFREE throw then
213 else
214 0 ( cruft -- cruft bool ) \ load the default below
215 then
216 0= if
217 drop ( cruft -- )
218 loader_color? if
219 ['] orb-logo
220 else
221 ['] orbbw-logo
222 then
223 then
224 logoX @ logoY @ rot execute
225;
226
227: clear-beastie ( -- ) \ clears beastie from the screen
228 logoX @ logoY @
229 2dup at-xy 34 spaces 1+ 2dup at-xy 34 spaces 1+
230 2dup at-xy 34 spaces 1+ 2dup at-xy 34 spaces 1+
231 2dup at-xy 34 spaces 1+ 2dup at-xy 34 spaces 1+
232 2dup at-xy 34 spaces 1+ 2dup at-xy 34 spaces 1+
233 2dup at-xy 34 spaces 1+ 2dup at-xy 34 spaces 1+
234 2dup at-xy 34 spaces 1+ 2dup at-xy 34 spaces 1+
235 2dup at-xy 34 spaces 1+ 2dup at-xy 34 spaces 1+
236 2dup at-xy 34 spaces 1+ 2dup at-xy 34 spaces 1+
237 2dup at-xy 34 spaces 1+ 2dup at-xy 34 spaces 1+
238 2dup at-xy 34 spaces 2drop
239
240 \ Put the cursor back at the bottom
241 0 25 at-xy
242;
243
244: beastie-start ( -- ) \ starts the menu
245 s" console" getenv dup -1 <> if
246 s" efi" 2swap contains? if
247 s" set beastie_disable=YES" evaluate
248 then
249 else drop then
250 s" beastie_disable" getenv
251 dup -1 <> if
252 s" YES" compare-insensitive 0= if
253 any_conf_read? if
254 load_kernel
255 load_modules
256 then
257 exit \ to autoboot (default)
258 then
259 else
260 drop
261 then
262
263 s" loader_delay" getenv
264 -1 = if
265 s" include /boot/menu.rc" evaluate
266 else
267 drop
268 ." Loading Menu (Ctrl-C to Abort)" cr
269 s" set delay_command='include /boot/menu.rc'" evaluate
270 s" set delay_showdots" evaluate
271 delay_execute
272 then
273;
274
275only forth also