1 \ Copyright (c) 2003 Scott Long <scottl@freebsd.org>
2 \ Copyright (c) 2003 Aleksander Fafula <alex@fafula.com>
5 \ Redistribution and use in source and binary forms, with or without
6 \ modification, are permitted provided that the following conditions
8 \ 1. Redistributions of source code must retain the above copyright
9 \ notice, this list of conditions and the following disclaimer.
10 \ 2. Redistributions in binary form must reproduce the above copyright
11 \ notice, this list of conditions and the following disclaimer in the
12 \ documentation and/or other materials provided with the distribution.
14 \ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15 \ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 \ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17 \ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18 \ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 \ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20 \ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 \ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 \ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 \ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26 \ $FreeBSD: src/sys/boot/forth/beastie.4th,v 1.7 2003/10/28 17:18:42 scottl Exp $
27 \ $DragonFly: src/sys/boot/forth/beastie.4th,v 1.8 2007/08/09 00:28:09 swildner Exp $
29 marker task-beastie.4th
31 include /boot/screen.4th
32 include /boot/frames.4th
45 variable bootverbosekey
46 variable bootsinglekey
52 \ Fred, the official DragonFly BSD mascot.
53 \ He is 19 rows high and 34 columns wide
54 : technicolor-fred ( x y -- )
57 2dup at-xy ." ,--,
\e[31m|
\e[37m,--," 1+
58 2dup at-xy ." | `-,
\e[31m,^,
\e[37m,-' |" 1+
59 2dup at-xy ." `, `-,
\e[32m(
\e[31m/ \
\e[32m)
\e[37m,-' ,'" 1+
60 2dup at-xy ." `-, `-,
\e[31m/ \
\e[37m,-' ,-'" 1+
61 2dup at-xy ." `------
\e[31m( )
\e[37m------'" 1+
62 2dup at-xy ." ,----------
\e[31m( )
\e[37m----------," 1+
63 2dup at-xy ." | _,-
\e[31m( )
\e[37m-,_ |" 1+
64 2dup at-xy ." `-,__,-'
\e[31m\ /
\e[37m`-,__,-'" 1+
65 2dup at-xy ."
\e[31m| |" 1+
71 2dup at-xy ." `|'
\e[0m" 1+
76 : boring-fred ( x y -- )
79 2dup at-xy ." ,--, | ,--," 1+
80 2dup at-xy ." | `-, ,^, ,-' |" 1+
81 2dup at-xy ." `, `-, (/ \) ,-' ,'" 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+
98 : print-fred ( x y -- )
99 s" loader_color" getenv
105 s" YES" compare-insensitive 0<> if
112 : acpienabled? ( -- flag )
117 s" YES" compare-insensitive 0<> if
120 s" hint.acpi.0.disabled" getenv
129 : printmenuitem ( -- n )
133 menuY @ + dup menuX @ swap at-xy
135 menuX @ 1+ swap at-xy
148 13 6 at-xy ." Welcome to DragonFly!"
149 printmenuitem ." Boot DragonFly [default]" bootkey !
150 s" arch-i386" environment? if
151 printmenuitem ." Boot DragonFly with ACPI " bootacpikey !
160 printmenuitem ." Boot DragonFly in Safe Mode" bootsafekey !
161 printmenuitem ." Boot DragonFly in single user mode" bootsinglekey !
162 printmenuitem ." Boot DragonFly with verbose logging" bootverbosekey !
163 printmenuitem ." Escape to loader prompt" escapekey !
164 printmenuitem ." Reboot" rebootkey !
166 ." Select option, [Enter] for default"
168 s" or [Space] to pause timer " dup 2 - promptwidth !
182 menuX @ promptwidth @ + 21 at-xy dup seconds - .
196 s" fred_disable" getenv
198 s" YES" compare-insensitive 0= if
203 s" autoboot_delay" getenv
208 0 0 2swap >number drop drop drop
213 dup 32 = if nip 0 swap then
214 dup -1 = if 0 boot then
215 dup 13 = if 0 boot then
216 dup bootkey @ = if 0 boot then
217 dup bootacpikey @ = if
219 s" acpi_load" unsetenv
220 s" 1" s" hint.acpi.0.disabled" setenv
221 s" 1" s" loader.acpi_disabled_by_user" setenv
223 s" YES" s" acpi_load" setenv
224 s" 0" s" hint.acpi.0.disabled" setenv
228 dup bootsafekey @ = if
229 s" arch-i386" environment? if
230 s" acpi_load" unsetenv
231 s" 1" s" hint.acpi.0.disabled" setenv
232 s" 1" s" loader.acpi_disabled_by_user" setenv
234 s" 0" s" hw.ata.ata_dma" setenv
235 s" 0" s" hw.ata.atapi_dma" setenv
236 s" 0" s" hw.ata.wc" setenv
237 s" 0" s" hw.eisa_slots" setenv
240 dup bootverbosekey @ = if
241 s" YES" s" boot_verbose" setenv
244 dup bootsinglekey @ = if
245 s" YES" s" boot_single" setenv
250 s" NO" s" autoboot_delay" setenv
253 rebootkey @ = if 0 reboot then