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>
6 \ Redistribution and use in source and binary forms, with or without
7 \ modification, are permitted provided that the following conditions
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.
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
29 marker task-beastie.4th
31 include /boot/color.4th
32 include /boot/delay.4th
37 \ Initialize logo placement to defaults
41 : beastie-logo ( x y -- ) \ color BSD mascot (19 rows x 34 columns)
43 2dup at-xy ."
\e[31m, ," 1+
44 2dup at-xy ." /( )`" 1+
45 2dup at-xy ." \ \___ / |" 1+
46 2dup at-xy ." /-
\e[37m_
\e[31m `-/ '" 1+
47 2dup at-xy ." (
\e[37m/\/ \
\e[31m \ /\" 1+
48 2dup at-xy ."
\e[37m/ / |
\e[31m ` \" 1+
49 2dup at-xy ."
\e[34mO O
\e[37m)
\e[31m/ |" 1+
50 2dup at-xy ."
\e[37m`-^--'
\e[31m`< '" 1+
51 2dup at-xy ." (_.) _ ) /" 1+
52 2dup at-xy ." `.___/` /" 1+
53 2dup at-xy ." `-----' /" 1+
54 2dup at-xy ."
\e[33m<----.
\e[31m __ / __ \" 1+
55 2dup at-xy ."
\e[33m<----|====
\e[31mO)))
\e[33m==
\e[31m) \) /
\e[33m====|" 1+
56 2dup at-xy ."
\e[33m<----'
\e[31m `--' `.__,' \" 1+
58 2dup at-xy ." \ / /\" 1+
59 2dup at-xy ."
\e[36m______
\e[31m( (_ / \______/" 1+
60 2dup at-xy ."
\e[36m,' ,-----' |" 1+
61 at-xy ." `--{__________)
\e[37m"
63 \ Put the cursor back at the bottom
67 : beastiebw-logo ( x y -- ) \ B/W BSD mascot (19 rows x 34 columns)
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+
84 2dup at-xy ." \ / /\" 1+
85 2dup at-xy ." ______( (_ / \______/" 1+
86 2dup at-xy ." ,' ,-----' |" 1+
87 at-xy ." `--{__________)"
89 \ Put the cursor back at the bottom
93 : fbsdbw-logo ( x y -- ) \ "FreeBSD" logo in B/W (13 rows x 21 columns)
95 \ We used to use the beastie himself as our default... until the
96 \ eventual complaint derided his reign of the advanced boot-menu.
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).
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.
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 ." |____/|_____/|_____/"
123 \ Put the cursor back at the bottom
127 : orb-logo ( x y -- ) \ color Orb mascot (15 rows x 30 columns)
129 3 + \ beastie adjustment (see `fbsdbw-logo' comments above)
131 2dup at-xy ."
\e[31m```
\e[31;1m`
\e[31m" 1+
132 2dup at-xy ." s` `.....---...
\e[31;1m....--.``` -/
\e[31m" 1+
133 2dup at-xy ." +o .--`
\e[31;1m/y:` +.
\e[31m" 1+
134 2dup at-xy ." yo`:.
\e[31;1m:o `+-
\e[31m" 1+
135 2dup at-xy ." y/
\e[31;1m-/` -o/
\e[31m" 1+
136 2dup at-xy ." .-
\e[31;1m::/sy+:.
\e[31m" 1+
137 2dup at-xy ." /
\e[31;1m`-- /
\e[31m" 1+
138 2dup at-xy ." `:
\e[31;1m:`
\e[31m" 1+
139 2dup at-xy ." `:
\e[31;1m:`
\e[31m" 1+
140 2dup at-xy ." /
\e[31;1m/
\e[31m" 1+
141 2dup at-xy ." .-
\e[31;1m-.
\e[31m" 1+
142 2dup at-xy ." --
\e[31;1m-.
\e[31m" 1+
143 2dup at-xy ." `:`
\e[31;1m`:`" 1+
144 2dup at-xy ."
\e[31;1m.-- `--." 1+
145 at-xy ." .---.....----.
\e[37m"
147 \ Put the cursor back at the bottom
151 : orbbw-logo ( x y -- ) \ B/W Orb mascot (15 rows x 32 columns)
153 3 + \ beastie adjustment (see `fbsdbw-logo' comments above)
155 2dup at-xy ." ``` `" 1+
156 2dup at-xy ." s` `.....---.......--.``` -/" 1+
157 2dup at-xy ." +o .--` /y:` +." 1+
158 2dup at-xy ." yo`:. :o `+-" 1+
159 2dup at-xy ." y/ -/` -o/" 1+
160 2dup at-xy ." .- ::/sy+:." 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 ." .---.....----."
171 \ Put the cursor back at the bottom
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.
179 \ Currently available:
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)
188 \ NOTE: Setting `loader_logo' to an undefined value (such as "none") will
189 \ prevent beastie from being drawn.
191 : draw-beastie ( -- ) \ at (loader_logo_x,loader_logo_y), else (46,4)
193 s" loader_logo_x" getenv dup -1 <> if
194 ?number 1 = if logoX ! then
198 s" loader_logo_y" getenv dup -1 <> if
199 ?number 1 = if logoY ! then
204 s" loader_logo" getenv dup -1 = if
214 2dup s" beastie" compare-insensitive 0= if
215 logoX @ logoY @ beastie-logo
218 2dup s" beastiebw" compare-insensitive 0= if
219 logoX @ logoY @ beastiebw-logo
222 2dup s" fbsdbw" compare-insensitive 0= if
223 logoX @ logoY @ fbsdbw-logo
226 2dup s" orb" compare-insensitive 0= if
227 logoX @ logoY @ orb-logo
230 2dup s" orbbw" compare-insensitive 0= if
231 logoX @ logoY @ orbbw-logo
238 : clear-beastie ( -- ) \ clears beastie from the screen
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
251 \ Put the cursor back at the bottom
255 : beastie-start ( -- ) \ starts the menu
256 s" beastie_disable" getenv
258 s" YES" compare-insensitive 0= if
265 s" loader_delay" getenv
267 s" include /boot/menu.rc" evaluate
270 ." Loading Menu (Ctrl-C to Abort)" cr
271 s" set delay_command='include /boot/menu.rc'" evaluate
272 s" set delay_showdots" evaluate