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$ 28 29marker task-beastie.4th 30 31include /boot/delay.4th 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 ." [31m, ," 1+ 432dup at-xy ." /( )`" 1+ 442dup at-xy ." \ \___ / |" 1+ 452dup at-xy ." /- [37m_[31m `-/ '" 1+ 462dup at-xy ." ([37m/\/ \[31m \ /\" 1+ 472dup at-xy ." [37m/ / |[31m ` \" 1+ 482dup at-xy ." [34mO O [37m) [31m/ |" 1+ 492dup at-xy ." [37m`-^--'[31m`< '" 1+ 502dup at-xy ." (_.) _ ) /" 1+ 512dup at-xy ." `.___/` /" 1+ 522dup at-xy ." `-----' /" 1+ 532dup at-xy ." [33m<----.[31m __ / __ \" 1+ 542dup at-xy ." [33m<----|====[31mO)))[33m==[31m) \) /[33m====|" 1+ 552dup at-xy ." [33m<----'[31m `--' `.__,' \" 1+ 562dup at-xy ." | |" 1+ 572dup at-xy ." \ / /\" 1+ 582dup at-xy ." [36m______[31m( (_ / \______/" 1+ 592dup at-xy ." [36m,' ,-----' |" 1+ 60 at-xy ." `--{__________)[37m" 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 ." [31m``` [31;1m`[31m" 1+ 131 2dup at-xy ." s` `.....---...[31;1m....--.``` -/[31m" 1+ 132 2dup at-xy ." +o .--` [31;1m/y:` +.[31m" 1+ 133 2dup at-xy ." yo`:. [31;1m:o `+-[31m" 1+ 134 2dup at-xy ." y/ [31;1m-/` -o/[31m" 1+ 135 2dup at-xy ." .- [31;1m::/sy+:.[31m" 1+ 136 2dup at-xy ." / [31;1m`-- /[31m" 1+ 137 2dup at-xy ." `: [31;1m:`[31m" 1+ 138 2dup at-xy ." `: [31;1m:`[31m" 1+ 139 2dup at-xy ." / [31;1m/[31m" 1+ 140 2dup at-xy ." .- [31;1m-.[31m" 1+ 141 2dup at-xy ." -- [31;1m-.[31m" 1+ 142 2dup at-xy ." `:` [31;1m`:`" 1+ 143 2dup at-xy ." [31;1m.-- `--." 1+ 144 at-xy ." .---.....----.[37m" 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 logoX @ logoY @ 207 loader_color? if 208 orb-logo 209 else 210 orbbw-logo 211 then 212 drop exit 213 then 214 215 2dup s" beastie" compare-insensitive 0= if 216 logoX @ logoY @ beastie-logo 217 2drop exit 218 then 219 2dup s" beastiebw" compare-insensitive 0= if 220 logoX @ logoY @ beastiebw-logo 221 2drop exit 222 then 223 2dup s" fbsdbw" compare-insensitive 0= if 224 logoX @ logoY @ fbsdbw-logo 225 2drop exit 226 then 227 2dup s" orb" compare-insensitive 0= if 228 logoX @ logoY @ orb-logo 229 2drop exit 230 then 231 2dup s" orbbw" compare-insensitive 0= if 232 logoX @ logoY @ orbbw-logo 233 2drop exit 234 then 235 2dup s" tribute" compare-insensitive 0= if 236 logoX @ logoY @ 237 s" tribute-logo" sfind if 238 execute 239 else 240 drop orb-logo 241 then 242 2drop exit 243 then 244 2dup s" tributebw" compare-insensitive 0= if 245 logoX @ logoY @ 246 s" tributebw-logo" sfind if 247 execute 248 else 249 drop orbbw-logo 250 then 251 2drop exit 252 then 253 254 2drop 255; 256 257: clear-beastie ( -- ) \ clears beastie from the screen 258 logoX @ logoY @ 259 2dup at-xy 34 spaces 1+ 2dup at-xy 34 spaces 1+ 260 2dup at-xy 34 spaces 1+ 2dup at-xy 34 spaces 1+ 261 2dup at-xy 34 spaces 1+ 2dup at-xy 34 spaces 1+ 262 2dup at-xy 34 spaces 1+ 2dup at-xy 34 spaces 1+ 263 2dup at-xy 34 spaces 1+ 2dup at-xy 34 spaces 1+ 264 2dup at-xy 34 spaces 1+ 2dup at-xy 34 spaces 1+ 265 2dup at-xy 34 spaces 1+ 2dup at-xy 34 spaces 1+ 266 2dup at-xy 34 spaces 1+ 2dup at-xy 34 spaces 1+ 267 2dup at-xy 34 spaces 1+ 2dup at-xy 34 spaces 1+ 268 2dup at-xy 34 spaces 2drop 269 270 \ Put the cursor back at the bottom 271 0 25 at-xy 272; 273 274: beastie-start ( -- ) \ starts the menu 275 s" beastie_disable" getenv 276 dup -1 <> if 277 s" YES" compare-insensitive 0= if 278 exit 279 then 280 else 281 drop 282 then 283 284 s" loader_delay" getenv 285 -1 = if 286 s" include /boot/menu.rc" evaluate 287 else 288 drop 289 ." Loading Menu (Ctrl-C to Abort)" cr 290 s" set delay_command='include /boot/menu.rc'" evaluate 291 s" set delay_showdots" evaluate 292 delay_execute 293 then 294; 295