xref: /freebsd/stand/forth/beastie.4th (revision 26a58599a09a6181e0f5abe624021865a0c23186)
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