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/nrelease/gui/boot/beastie.4th,v 1.1 2008/09/01 21:20:30 swildner Exp $
29 marker task-beastie.4th
45 variable bootsmpnoapickey
47 variable bootverbosekey
49 variable bootsinglekey
55 \ Fred, the official DragonFly BSD mascot.
56 \ He is 19 rows high and 34 columns wide
57 : technicolor-fred ( x y -- )
60 2dup at-xy ." ,--,
\e[31m|
\e[37m,--," 1+
61 2dup at-xy ." | `-,
\e[31m,^,
\e[37m,-' |" 1+
62 2dup at-xy ." `, `-,
\e[32m(
\e[31m/ \
\e[32m)
\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( )
\e[37m----------," 1+
66 2dup at-xy ." | _,-
\e[31m( )
\e[37m-,_ |" 1+
67 2dup at-xy ." `-,__,-'
\e[31m\ /
\e[37m`-,__,-'" 1+
68 2dup at-xy ."
\e[31m| |" 1+
74 2dup at-xy ." `|'
\e[0m" 1+
79 : boring-fred ( x y -- )
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 2dup at-xy ." ,----------( )----------," 1+
88 2dup at-xy ." | _,-( )-,_ |" 1+
89 2dup at-xy ." `-,__,-' \ / `-,__,-'" 1+
101 : print-fred ( x y -- )
102 s" loader_color" getenv
108 s" YES" compare-insensitive 0<> if
115 : acpienabled? ( -- flag )
120 s" YES" compare-insensitive 0<> if
123 s" hint.acpi.0.disabled" getenv
132 : printmenuitem ( -- n )
136 menuY @ + dup menuX @ swap at-xy
138 menuX @ 1+ swap at-xy
151 13 6 at-xy ." Welcome to DragonFly!"
152 printmenuitem ." Boot DragonFly [default]" bootkey !
153 s" arch-i386" environment? if
154 printmenuitem ." Boot DragonFly with ACPI " bootacpikey !
163 printmenuitem ." Boot DragonFly in SMP mode" bootsmpkey !
164 printmenuitem ." Boot DragonFly in SMP-NOAPIC mode" bootsmpnoapickey !
165 printmenuitem ." Boot DragonFly in Safe Mode" bootsafekey !
166 printmenuitem ." Boot DragonFly in single user mode" bootsinglekey !
167 printmenuitem ." Boot DragonFly with verbose logging" bootverbosekey !
168 printmenuitem ." Boot DragonFly without AHCI driver " bootahcikey !
169 printmenuitem ." Escape to loader prompt" escapekey !
170 printmenuitem ." Reboot" rebootkey !
172 ." Select option, [Enter] for default"
174 s" or [Space] to pause timer " dup 2 - promptwidth !
188 menuX @ promptwidth @ + 21 at-xy dup seconds - .
202 s" fred_disable" getenv
204 s" YES" compare-insensitive 0= if
209 s" autoboot_delay" getenv
214 0 0 2swap >number drop drop drop
219 dup 32 = if nip 0 swap then
220 dup -1 = if 0 boot then
221 dup 13 = if 0 boot then
222 dup bootkey @ = if 0 boot then
223 dup bootacpikey @ = if
225 s" acpi_load" unsetenv
226 s" 1" s" hint.acpi.0.disabled" setenv
227 s" 1" s" loader.acpi_disabled_by_user" setenv
229 s" YES" s" acpi_load" setenv
230 s" 0" s" hint.acpi.0.disabled" setenv
234 dup bootsmpkey @ = if
235 s" /kernel.smp/modules" s" module_path" setenv
236 s" YES" s" boot_verbose" setenv
237 s" /kernel.smp/kernel" 1 boot
239 dup bootsmpnoapickey @ = if
240 s" /kernel.smp/modules" s" module_path" setenv
241 s" YES" s" boot_verbose" setenv
242 s" /kernel.smp/kernel.noapic" 1 boot
244 dup bootsafekey @ = if
245 s" arch-i386" environment? if
246 s" acpi_load" unsetenv
247 s" 1" s" hint.acpi.0.disabled" setenv
248 s" 1" s" loader.acpi_disabled_by_user" setenv
250 s" 0" s" hw.ata.ata_dma" setenv
251 s" 0" s" hw.ata.atapi_dma" setenv
252 s" 0" s" hw.ata.wc" setenv
253 s" 0" s" hw.eisa_slots" setenv
256 dup bootverbosekey @ = if
257 s" YES" s" boot_verbose" setenv
260 dup bootahcikey @ = if
261 s" YES" s" hint.ahci.disabled" setenv
264 dup bootsinglekey @ = if
265 s" YES" s" boot_single" setenv
270 s" NO" s" autoboot_delay" setenv
273 rebootkey @ = if 0 reboot then