Annotation of elwix/config/boot/beastie.4th, revision 1.2
1.2 ! misho 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: src/sys/boot/forth/beastie.4th,v 1.17 2011/05/28 08:50:38 julian Exp $
! 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 ." [31m``` [31;1m`[31m" 1+
! 132: 2dup at-xy ." s` `.....---...[31;1m....--.``` -/[31m" 1+
! 133: 2dup at-xy ." +o .--` [31;1m/y:` +.[31m" 1+
! 134: 2dup at-xy ." yo`:. [31;1m:o `+-[31m" 1+
! 135: 2dup at-xy ." y/ [31;1m-/` -o/[31m" 1+
! 136: 2dup at-xy ." .- [31;1m::/sy+:.[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-.[31m" 1+
! 143: 2dup at-xy ." `:` [31;1m`:`" 1+
! 144: 2dup at-xy ." [31;1m.-- `--." 1+
! 145: at-xy ." .---.....----.[37m"
! 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 ." 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 ." .---.....----."
! 170:
! 171: \ Put the cursor back at the bottom
! 172: 0 25 at-xy
! 173: ;
! 174:
! 175: : elwixbw-logo ( x y -- ) \ B/W ELWIX mascot (15 rows x 32 columns)
! 176:
! 177: 2dup at-xy ." .l: .k " 1+
! 178: 2dup at-xy ." .k:0 ." 1+
! 179: 2dup at-xy ." :WK ,dc" 1+
! 180: 2dup at-xy ." . oWWK .ld, " 1+
! 181: 2dup at-xy ." :` cWWW, .xo. " 1+
! 182: 2dup at-xy ." ':::. OWWWW. ,Od. " 1+
! 183: 2dup at-xy ." .,lodc` KWWWWO:0o " 1+
! 184: 2dup at-xy ." .:oxxXWWWWWc " 1+
! 185: 2dup at-xy ." .xWWWWWoc. " 1+
! 186: 2dup at-xy ." :xx:.WWWW. ,cc` " 1+
! 187: 2dup at-xy ." `dx: :WWM. .cc: " 1+
! 188: 2dup at-xy ." ld: .d; o: " 1+
! 189: 2dup at-xy ." d` `x" 1+
! 190: 2dup at-xy ." cl " 1+
! 191: at-xy ." * Embedded LightWeight unIX * "
! 192:
! 193: \ Put the cursor back at the bottom
! 194: 0 25 at-xy
! 195: ;
! 196:
! 197: \ This function draws any number of beastie logos at (loader_logo_x,
! 198: \ loader_logo_y) if defined, else (46,4) (to the right of the menu). To choose
! 199: \ your beastie, set the variable `loader_logo' to the respective logo name.
! 200: \
! 201: \ Currently available:
! 202: \
! 203: \ NAME DESCRIPTION
! 204: \ beastie Color ``Helper Daemon'' mascot (19 rows x 34 columns)
! 205: \ beastiebw B/W ``Helper Daemon'' mascot (19 rows x 34 columns)
! 206: \ fbsdbw "FreeBSD" logo in B/W (13 rows x 21 columns)
! 207: \ orb Color ``Orb'' mascot (15 rows x 30 columns)
! 208: \ orbbw B/W ``Orb'' mascot (15 rows x 32 columns) (default)
! 209: \ elwixbw B/W ``ELWIX'' mascot (19 rows x 34 columns)
! 210: \
! 211: \ NOTE: Setting `loader_logo' to an undefined value (such as "none") will
! 212: \ prevent beastie from being drawn.
! 213: \
! 214: : draw-beastie ( -- ) \ at (loader_logo_x,loader_logo_y), else (46,4)
! 215:
! 216: s" loader_logo_x" getenv dup -1 <> if
! 217: ?number 1 = if logoX ! then
! 218: else
! 219: drop
! 220: then
! 221: s" loader_logo_y" getenv dup -1 <> if
! 222: ?number 1 = if logoY ! then
! 223: else
! 224: drop
! 225: then
! 226:
! 227: s" loader_logo" getenv dup -1 = if
! 228: logoX @ logoY @
! 229: loader_color? if
! 230: elwixbw-logo
! 231: else
! 232: elwixbw-logo
! 233: then
! 234: drop exit
! 235: then
! 236:
! 237: 2dup s" beastie" compare-insensitive 0= if
! 238: logoX @ logoY @ beastie-logo
! 239: 2drop exit
! 240: then
! 241: 2dup s" beastiebw" compare-insensitive 0= if
! 242: logoX @ logoY @ beastiebw-logo
! 243: 2drop exit
! 244: then
! 245: 2dup s" fbsdbw" compare-insensitive 0= if
! 246: logoX @ logoY @ fbsdbw-logo
! 247: 2drop exit
! 248: then
! 249: 2dup s" orb" compare-insensitive 0= if
! 250: logoX @ logoY @ orb-logo
! 251: 2drop exit
! 252: then
! 253: 2dup s" orbbw" compare-insensitive 0= if
! 254: logoX @ logoY @ orbbw-logo
! 255: 2drop exit
! 256: then
! 257: 2dup s" elwixbw" compare-insensitive 0= if
! 258: logoX @ logoY @ elwixbw-logo
! 259: 2drop exit
! 260: then
! 261:
! 262: 2drop
! 263: ;
! 264:
! 265: : clear-beastie ( -- ) \ clears beastie from the screen
! 266: logoX @ logoY @
! 267: 2dup at-xy 34 spaces 1+ 2dup at-xy 34 spaces 1+
! 268: 2dup at-xy 34 spaces 1+ 2dup at-xy 34 spaces 1+
! 269: 2dup at-xy 34 spaces 1+ 2dup at-xy 34 spaces 1+
! 270: 2dup at-xy 34 spaces 1+ 2dup at-xy 34 spaces 1+
! 271: 2dup at-xy 34 spaces 1+ 2dup at-xy 34 spaces 1+
! 272: 2dup at-xy 34 spaces 1+ 2dup at-xy 34 spaces 1+
! 273: 2dup at-xy 34 spaces 1+ 2dup at-xy 34 spaces 1+
! 274: 2dup at-xy 34 spaces 1+ 2dup at-xy 34 spaces 1+
! 275: 2dup at-xy 34 spaces 1+ 2dup at-xy 34 spaces 1+
! 276: 2dup at-xy 34 spaces 2drop
! 277:
! 278: \ Put the cursor back at the bottom
! 279: 0 25 at-xy
! 280: ;
! 281:
! 282: : beastie-start ( -- ) \ starts the menu
! 283: s" beastie_disable" getenv
! 284: dup -1 <> if
! 285: s" YES" compare-insensitive 0= if
! 286: exit
! 287: then
! 288: else
! 289: drop
! 290: then
! 291:
! 292: s" loader_delay" getenv
! 293: -1 = if
! 294: s" include /boot/menu.rc" evaluate
! 295: else
! 296: drop
! 297: ." Loading Menu (Ctrl-C to Abort)" cr
! 298: s" set delay_command='include /boot/menu.rc'" evaluate
! 299: s" set delay_showdots" evaluate
! 300: delay_execute
! 301: then
! 302: ;
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>