1ca987d46SWarner Losh\ Copyright (c) 2003 Scott Long <scottl@FreeBSD.org> 2ca987d46SWarner Losh\ Copyright (c) 2003 Aleksander Fafula <alex@fafula.com> 3ca987d46SWarner Losh\ Copyright (c) 2006-2015 Devin Teske <dteske@FreeBSD.org> 4ca987d46SWarner Losh\ All rights reserved. 5ca987d46SWarner Losh\ 6ca987d46SWarner Losh\ Redistribution and use in source and binary forms, with or without 7ca987d46SWarner Losh\ modification, are permitted provided that the following conditions 8ca987d46SWarner Losh\ are met: 9ca987d46SWarner Losh\ 1. Redistributions of source code must retain the above copyright 10ca987d46SWarner Losh\ notice, this list of conditions and the following disclaimer. 11ca987d46SWarner Losh\ 2. Redistributions in binary form must reproduce the above copyright 12ca987d46SWarner Losh\ notice, this list of conditions and the following disclaimer in the 13ca987d46SWarner Losh\ documentation and/or other materials provided with the distribution. 14ca987d46SWarner Losh\ 15ca987d46SWarner Losh\ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 16ca987d46SWarner Losh\ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17ca987d46SWarner Losh\ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18ca987d46SWarner Losh\ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 19ca987d46SWarner Losh\ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20ca987d46SWarner Losh\ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21ca987d46SWarner Losh\ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22ca987d46SWarner Losh\ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23ca987d46SWarner Losh\ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24ca987d46SWarner Losh\ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25ca987d46SWarner Losh\ SUCH DAMAGE. 26ca987d46SWarner Losh\ 27ca987d46SWarner Losh 28ca987d46SWarner Loshmarker task-beastie.4th 29ca987d46SWarner Losh 30ca987d46SWarner Loshonly forth definitions 31ca987d46SWarner Losh 32ca987d46SWarner Loshvariable logoX 33ca987d46SWarner Loshvariable logoY 34ca987d46SWarner Losh 35ca987d46SWarner Losh\ Initialize logo placement to defaults 36ca987d46SWarner Losh46 logoX ! 37ca987d46SWarner Losh4 logoY ! 38ca987d46SWarner Losh 39ca987d46SWarner Losh\ This function draws any number of beastie logos at (loader_logo_x, 40ca987d46SWarner Losh\ loader_logo_y) if defined, else (46,4) (to the right of the menu). To choose 41ca987d46SWarner Losh\ your beastie, set the variable `loader_logo' to the respective logo name. 42ca987d46SWarner Losh\ 43ca987d46SWarner Losh\ NOTE: Each is defined as a logo function in /boot/logo-${loader_logo}.4th 44ca987d46SWarner Losh\ NOTE: If `/boot/logo-${loader_logo}.4th' does not exist or does not define 45ca987d46SWarner Losh\ a `logo' function, no beastie is drawn. 46ca987d46SWarner Losh\ 47ca987d46SWarner Losh: draw-beastie ( -- ) \ at (loader_logo_x,loader_logo_y), else (46,4) 48ca987d46SWarner Losh 49ca987d46SWarner Losh s" loader_logo_x" getenv dup -1 <> if 50ca987d46SWarner Losh ?number 1 = if logoX ! then 51ca987d46SWarner Losh else drop then 52ca987d46SWarner Losh s" loader_logo_y" getenv dup -1 <> if 53ca987d46SWarner Losh ?number 1 = if logoY ! then 54ca987d46SWarner Losh else drop then 55ca987d46SWarner Losh 56ca987d46SWarner Losh 57ca987d46SWarner Losh \ If `logo' is defined, execute it 58ca987d46SWarner Losh s" logo" sfind ( -- xt|0 bool ) if 59ca987d46SWarner Losh logoX @ logoY @ rot execute 60ca987d46SWarner Losh else 61ca987d46SWarner Losh \ Not defined; try-include desired logo file 62ca987d46SWarner Losh drop ( xt = 0 ) \ cruft 63ca987d46SWarner Losh s" loader_logo" getenv dup -1 = over 0= or if 64ca987d46SWarner Losh dup 0= if 2drop else drop then \ getenv result unused 65ca987d46SWarner Losh loader_color? if 66ca987d46SWarner Losh s" try-include /boot/logo-orb.4th" 67ca987d46SWarner Losh else 68ca987d46SWarner Losh s" try-include /boot/logo-orbbw.4th" 69ca987d46SWarner Losh then 70ca987d46SWarner Losh else 71ca987d46SWarner Losh 2drop ( c-addr/u -- ) \ getenv result unused 72ca987d46SWarner Losh s" try-include /boot/logo-${loader_logo}.4th" 73ca987d46SWarner Losh then 74ca987d46SWarner Losh evaluate 75ca987d46SWarner Losh 1 spaces 76ca987d46SWarner Losh 77ca987d46SWarner Losh \ Execute `logo' if defined now 78ca987d46SWarner Losh s" logo" sfind if 79ca987d46SWarner Losh logoX @ logoY @ rot execute 80ca987d46SWarner Losh else drop then 81ca987d46SWarner Losh then 82ca987d46SWarner Losh; 83ca987d46SWarner Losh 84*3630506bSToomas Soome: draw-beastie 85*3630506bSToomas Soome ['] draw-beastie console-iterate 86*3630506bSToomas Soome; 87*3630506bSToomas Soome 88ca987d46SWarner Loshalso support-functions 89ca987d46SWarner Losh 90ca987d46SWarner Losh: beastie-start ( -- ) \ starts the menu 91ca987d46SWarner Losh s" beastie_disable" getenv dup -1 <> if 92ca987d46SWarner Losh s" YES" compare-insensitive 0= if 93ca987d46SWarner Losh any_conf_read? if 94ca987d46SWarner Losh load_xen_throw 95ca987d46SWarner Losh load_kernel 96ca987d46SWarner Losh load_modules 97ca987d46SWarner Losh then 98ca987d46SWarner Losh exit \ to autoboot (default) 99ca987d46SWarner Losh then 100ca987d46SWarner Losh else drop then 101ca987d46SWarner Losh 102ca987d46SWarner Losh s" loader_delay" getenv -1 = if 103ca987d46SWarner Losh s" include /boot/menu.rc" evaluate 104ca987d46SWarner Losh else 105ca987d46SWarner Losh drop 106ca987d46SWarner Losh ." Loading Menu (Ctrl-C to Abort)" cr 107ca987d46SWarner Losh s" set delay_command='include /boot/menu.rc'" evaluate 108ca987d46SWarner Losh s" set delay_showdots" evaluate 109ca987d46SWarner Losh delay_execute 110ca987d46SWarner Losh then 111ca987d46SWarner Losh; 112ca987d46SWarner Losh 113ca987d46SWarner Loshonly forth definitions 114