Annotation of elwix/config/boot/beastie.4th, revision 1.1.2.1

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

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>