beastie.4th revision 254105
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: head/sys/boot/forth/beastie.4th 254105 2013-08-08 22:09:46Z dteske $ 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) (default) 185\ orbbw B/W ``Orb'' mascot (15 rows x 32 columns) 186\ 187\ NOTE: Setting `loader_logo' to an undefined value (such as "none") will 188\ prevent beastie from being drawn. 189\ 190: draw-beastie ( -- ) \ at (loader_logo_x,loader_logo_y), else (46,4) 191 192 s" loader_logo_x" getenv dup -1 <> if 193 ?number 1 = if logoX ! then 194 else 195 drop 196 then 197 s" loader_logo_y" getenv dup -1 <> if 198 ?number 1 = if logoY ! then 199 else 200 drop 201 then 202 203 s" loader_logo" getenv dup -1 = if 204 logoX @ logoY @ 205 loader_color? if 206 orb-logo 207 else 208 orbbw-logo 209 then 210 drop exit 211 then 212 213 2dup s" beastie" compare-insensitive 0= if 214 logoX @ logoY @ beastie-logo 215 2drop exit 216 then 217 2dup s" beastiebw" compare-insensitive 0= if 218 logoX @ logoY @ beastiebw-logo 219 2drop exit 220 then 221 2dup s" fbsdbw" compare-insensitive 0= if 222 logoX @ logoY @ fbsdbw-logo 223 2drop exit 224 then 225 2dup s" orb" compare-insensitive 0= if 226 logoX @ logoY @ orb-logo 227 2drop exit 228 then 229 2dup s" orbbw" compare-insensitive 0= if 230 logoX @ logoY @ orbbw-logo 231 2drop exit 232 then 233 234 2drop 235; 236 237: clear-beastie ( -- ) \ clears beastie from the screen 238 logoX @ logoY @ 239 2dup at-xy 34 spaces 1+ 2dup at-xy 34 spaces 1+ 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 2drop 249 250 \ Put the cursor back at the bottom 251 0 25 at-xy 252; 253 254: beastie-start ( -- ) \ starts the menu 255 s" beastie_disable" getenv 256 dup -1 <> if 257 s" YES" compare-insensitive 0= if 258 exit 259 then 260 else 261 drop 262 then 263 264 s" loader_delay" getenv 265 -1 = if 266 s" include /boot/menu.rc" evaluate 267 else 268 drop 269 ." Loading Menu (Ctrl-C to Abort)" cr 270 s" set delay_command='include /boot/menu.rc'" evaluate 271 s" set delay_showdots" evaluate 272 delay_execute 273 then 274; 275