beastie.4th revision 280933
1280924Sdteske\ Copyright (c) 2003 Scott Long <scottl@FreeBSD.org> 2120031Sscottl\ Copyright (c) 2003 Aleksander Fafula <alex@fafula.com> 3280923Sdteske\ Copyright (c) 2006-2015 Devin Teske <dteske@FreeBSD.org> 4115410Sscottl\ All rights reserved. 5222417Sjulian\ 6115410Sscottl\ Redistribution and use in source and binary forms, with or without 7115410Sscottl\ modification, are permitted provided that the following conditions 8115410Sscottl\ are met: 9115410Sscottl\ 1. Redistributions of source code must retain the above copyright 10115410Sscottl\ notice, this list of conditions and the following disclaimer. 11115410Sscottl\ 2. Redistributions in binary form must reproduce the above copyright 12115410Sscottl\ notice, this list of conditions and the following disclaimer in the 13115410Sscottl\ documentation and/or other materials provided with the distribution. 14222417Sjulian\ 15115410Sscottl\ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 16115410Sscottl\ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17115410Sscottl\ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18115410Sscottl\ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 19115410Sscottl\ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20115410Sscottl\ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21115410Sscottl\ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22115410Sscottl\ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23115410Sscottl\ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24115410Sscottl\ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25115410Sscottl\ SUCH DAMAGE. 26222417Sjulian\ 27115410Sscottl\ $FreeBSD: head/sys/boot/forth/beastie.4th 280933 2015-04-01 01:14:19Z dteske $ 28115410Sscottl 29115410Sscottlmarker task-beastie.4th 30115410Sscottl 31257650Sdteskeonly forth definitions also support-functions 32257650Sdteske 33222417Sjulianvariable logoX 34222417Sjulianvariable logoY 35115410Sscottl 36222417Sjulian\ Initialize logo placement to defaults 37222417Sjulian46 logoX ! 38222417Sjulian4 logoY ! 39115410Sscottl 40222417Sjulian\ This function draws any number of beastie logos at (loader_logo_x, 41222417Sjulian\ loader_logo_y) if defined, else (46,4) (to the right of the menu). To choose 42222417Sjulian\ your beastie, set the variable `loader_logo' to the respective logo name. 43222417Sjulian\ 44280933Sdteske\ NOTE: Each is defined as a logo function in /boot/logo-${loader_logo}.4th 45280933Sdteske\ NOTE: If `/boot/logo-${loader_logo}.4th' does not exist or does not define 46280933Sdteske\ a `logo' function, no beastie is drawn. 47222417Sjulian\ 48222417Sjulian: draw-beastie ( -- ) \ at (loader_logo_x,loader_logo_y), else (46,4) 49222417Sjulian 50222417Sjulian s" loader_logo_x" getenv dup -1 <> if 51222417Sjulian ?number 1 = if logoX ! then 52280923Sdteske else drop then 53222417Sjulian s" loader_logo_y" getenv dup -1 <> if 54222417Sjulian ?number 1 = if logoY ! then 55280923Sdteske else drop then 56115410Sscottl 57280933Sdteske 58280933Sdteske \ If `logo' is defined, execute it 59280933Sdteske s" logo" sfind ( -- xt|0 bool ) if 60280933Sdteske logoX @ logoY @ rot execute 61258269Sdteske else 62280933Sdteske \ Not defined; try-include desired logo file 63280933Sdteske drop ( xt = 0 ) \ cruft 64280933Sdteske s" loader_logo" getenv dup -1 = over 0= or if 65280933Sdteske dup 0= if 2drop else drop then \ getenv result unused 66280933Sdteske loader_color? if 67280933Sdteske s" try-include /boot/logo-orb.4th" 68280933Sdteske else 69280933Sdteske s" try-include /boot/logo-orbbw.4th" 70280933Sdteske then 71115410Sscottl else 72280933Sdteske 2drop ( c-addr/u -- ) \ getenv result unused 73280933Sdteske s" try-include /boot/logo-${loader_logo}.4th" 74115410Sscottl then 75280933Sdteske evaluate 76280933Sdteske 1 spaces 77280933Sdteske 78280933Sdteske \ Execute `logo' if defined now 79280933Sdteske s" logo" sfind if 80280933Sdteske logoX @ logoY @ rot execute 81280933Sdteske else drop then 82115410Sscottl then 83115410Sscottl; 84115410Sscottl 85222417Sjulian: beastie-start ( -- ) \ starts the menu 86265028Sdteske s" console" getenv dup -1 <> if 87265028Sdteske s" efi" 2swap contains? if 88265028Sdteske s" set beastie_disable=YES" evaluate 89265028Sdteske then 90265028Sdteske else drop then 91280923Sdteske s" beastie_disable" getenv dup -1 <> if 92116175Sscottl s" YES" compare-insensitive 0= if 93257650Sdteske any_conf_read? if 94277215Sroyger load_xen_throw 95257650Sdteske load_kernel 96257650Sdteske load_modules 97257650Sdteske then 98257650Sdteske exit \ to autoboot (default) 99116175Sscottl then 100280923Sdteske else drop then 101222417Sjulian 102280923Sdteske s" loader_delay" getenv -1 = if 103222417Sjulian s" include /boot/menu.rc" evaluate 104222417Sjulian else 105115410Sscottl drop 106222417Sjulian ." Loading Menu (Ctrl-C to Abort)" cr 107222417Sjulian s" set delay_command='include /boot/menu.rc'" evaluate 108222417Sjulian s" set delay_showdots" evaluate 109222417Sjulian delay_execute 110115410Sscottl then 111115410Sscottl; 112257650Sdteske 113257650Sdteskeonly forth also 114