File:  [ELWIX - Embedded LightWeight unIX -] / elwix / config / boot / Attic / beastie.4th
Revision 1.2: download - view: text, annotated - select for diffs - revision graph
Tue Oct 18 09:02:06 2011 UTC (12 years, 9 months ago) by misho
Branches: MAIN
CVS tags: elwix1_7, elwix1_6, elwix1_5, HEAD, ELWIX1_6, ELWIX1_5
ver 1.5

    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 ."               ,        ," 1+
   44: 2dup at-xy ."              /(        )`" 1+
   45: 2dup at-xy ."              \ \___   / |" 1+
   46: 2dup at-xy ."              /- _  `-/  '" 1+
   47: 2dup at-xy ."             (/\/ \ \   /\" 1+
   48: 2dup at-xy ."             / /   | `    \" 1+
   49: 2dup at-xy ."             O O   ) /    |" 1+
   50: 2dup at-xy ."             `-^--'`<     '" 1+
   51: 2dup at-xy ."            (_.)  _  )   /" 1+
   52: 2dup at-xy ."             `.___/`    /" 1+
   53: 2dup at-xy ."               `-----' /" 1+
   54: 2dup at-xy ."  <----.     __ / __   \" 1+
   55: 2dup at-xy ."  <----|====O)))==) \) /====|" 1+
   56: 2dup at-xy ."  <----'    `--' `.__,' \" 1+
   57: 2dup at-xy ."               |        |" 1+
   58: 2dup at-xy ."                \       /       /\" 1+
   59: 2dup at-xy ."           ______( (_  / \______/" 1+
   60: 2dup at-xy ."         ,'  ,-----'   |" 1+
   61:      at-xy ."         `--{__________)"
   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 ."  ```                        `" 1+
  132: 	2dup at-xy ." s` `.....---.......--.```   -/" 1+
  133: 	2dup at-xy ." +o   .--`         /y:`      +." 1+
  134: 	2dup at-xy ."  yo`:.            :o      `+-" 1+
  135: 	2dup at-xy ."   y/               -/`   -o/" 1+
  136: 	2dup at-xy ."  .-                  ::/sy+:." 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: 	2dup at-xy ."      .--             `--." 1+
  145: 	     at-xy ."         .---.....----."
  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>