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.9 2008/09/02 17:21:15 dillon Exp $
29 marker task-beastie.4th
45 variable bootverbosekey
47 variable bootsinglekey
53 \ Fred, the official DragonFly BSD mascot.
54 \ He is 19 rows high and 34 columns wide
55 : technicolor-fred ( x y -- )
58 2dup at-xy ." ,--,
\e[31m|
\e[37m,--," 1+
59 2dup at-xy ." | `-,
\e[31m,^,
\e[37m,-' |" 1+
60 2dup at-xy ." `, `-,
\e[32m(
\e[31m/ \
\e[32m)
\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\ /
\e[37m`-,__,-'" 1+
66 2dup at-xy ."
\e[31m| |" 1+
72 2dup at-xy ." `|'
\e[0m" 1+
77 : boring-fred ( x y -- )
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+
87 2dup at-xy ." `-,__,-' \ / `-,__,-'" 1+
99 : print-fred ( x y -- )
100 s" loader_color" getenv
106 s" YES" compare-insensitive 0<> if
113 : acpienabled? ( -- flag )
118 s" YES" compare-insensitive 0<> if
121 s" hint.acpi.0.disabled" getenv
130 : printmenuitem ( -- n )
134 menuY @ + dup menuX @ swap at-xy
136 menuX @ 1+ swap at-xy
149 13 6 at-xy ." Welcome to DragonFly!"
150 printmenuitem ." Boot DragonFly [default]" bootkey !
151 s" arch-i386" environment? if
152 printmenuitem ." Boot DragonFly with ACPI " bootacpikey !
161 printmenuitem ." Boot DragonFly in Safe Mode" bootsafekey !
162 printmenuitem ." Boot DragonFly in single user mode" bootsinglekey !
163 printmenuitem ." Boot DragonFly with verbose logging" bootverbosekey !
164 printmenuitem ." Boot DragonFly without AHCI driver " bootahcikey !
165 printmenuitem ." Escape to loader prompt" escapekey !
166 printmenuitem ." Reboot" rebootkey !
168 ." Select option, [Enter] for default"
170 s" or [Space] to pause timer " dup 2 - promptwidth !
184 menuX @ promptwidth @ + 21 at-xy dup seconds - .
198 s" fred_disable" getenv
200 s" YES" compare-insensitive 0= if
205 s" autoboot_delay" getenv
210 0 0 2swap >number drop drop drop
215 dup 32 = if nip 0 swap then
216 dup -1 = if 0 boot then
217 dup 13 = if 0 boot then
218 dup bootkey @ = if 0 boot then
219 dup bootacpikey @ = if
221 s" acpi_load" unsetenv
222 s" 1" s" hint.acpi.0.disabled" setenv
223 s" 1" s" loader.acpi_disabled_by_user" setenv
225 s" YES" s" acpi_load" setenv
226 s" 0" s" hint.acpi.0.disabled" setenv
230 dup bootsafekey @ = if
231 s" arch-i386" environment? if
232 s" acpi_load" unsetenv
233 s" 1" s" hint.acpi.0.disabled" setenv
234 s" 1" s" loader.acpi_disabled_by_user" setenv
236 s" 0" s" hw.ata.ata_dma" setenv
237 s" 0" s" hw.ata.atapi_dma" setenv
238 s" 0" s" hw.ata.wc" setenv
239 s" 0" s" hw.eisa_slots" setenv
242 dup bootverbosekey @ = if
243 s" YES" s" boot_verbose" setenv
246 dup bootahcikey @ = if
247 s" YES" s" hint.ahci.disabled" setenv
250 dup bootsinglekey @ = if
251 s" YES" s" boot_single" setenv
256 s" NO" s" autoboot_delay" setenv
259 rebootkey @ = if 0 reboot then