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.6 2004/01/22 12:04:58 eirikn Exp $
29 marker task-beastie.4th
31 include /boot/screen.4th
32 include /boot/frames.4th
45 variable bootverbosekey
46 variable bootsinglekey
52 \ The BSD Daemon. He is 19 rows high and 34 columns wide
53 : technicolor-beastie ( x y -- )
54 2dup at-xy ."
\e[1;31m, ," 1+
55 2dup at-xy ." /( )`" 1+
56 2dup at-xy ." \ \___ / |" 1+
57 2dup at-xy ." /-
\e[37m_
\e[31m `-/ '" 1+
58 2dup at-xy ." (
\e[37m/\/ \
\e[31m \ /\" 1+
59 2dup at-xy ."
\e[37m/ / |
\e[31m ` \" 1+
60 2dup at-xy ."
\e[34mO O
\e[37m)
\e[31m/ |" 1+
61 2dup at-xy ."
\e[37m`-^--'
\e[31m`< '" 1+
62 2dup at-xy ." (_.) _ ) /" 1+
63 2dup at-xy ." `.___/` / " 1+
64 2dup at-xy ." `-----' /" 1+
65 2dup at-xy ."
\e[33m<----.
\e[31m __ / __ \" 1+
66 2dup at-xy ."
\e[33m<----|====
\e[31mO)))
\e[33m==
\e[31m) \) /
\e[33m====|" 1+
67 2dup at-xy ."
\e[33m<----'
\e[31m `--' `.__,' \" 1+
69 2dup at-xy ." \ / /\" 1+
70 2dup at-xy ."
\e[36m______
\e[31m( (_ / \______/" 1+
71 2dup at-xy ."
\e[36m,' ,-----' |" 1+
72 at-xy ." `--{__________)
\e[0m" 1+
75 : boring-fred ( x y -- )
78 2dup at-xy ." ,--, | ,--," 1+
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+
97 : print-beastie ( x y -- )
98 s" loader_color" getenv
104 s" YES" compare-insensitive 0<> if
111 : acpienabled? ( -- flag )
116 s" YES" compare-insensitive 0<> if
119 s" hint.acpi.0.disabled" getenv
128 : printmenuitem ( -- n )
132 menuY @ + dup menuX @ swap at-xy
134 menuX @ 1+ swap at-xy
139 : beastie-menu ( -- )
147 13 6 at-xy ." Welcome to DragonFly!"
148 printmenuitem ." Boot DragonFly [default]" bootkey !
149 s" arch-i386" environment? if
150 printmenuitem ." Boot DragonFly with ACPI " bootacpikey !
159 printmenuitem ." Boot DragonFly in Safe Mode" bootsafekey !
160 printmenuitem ." Boot DragonFly in single user mode" bootsinglekey !
161 printmenuitem ." Boot DragonFly with verbose logging" bootverbosekey !
162 printmenuitem ." Escape to loader prompt" escapekey !
163 printmenuitem ." Reboot" rebootkey !
165 ." Select option, [Enter] for default"
167 s" or [Space] to pause timer " dup 2 - promptwidth !
181 menuX @ promptwidth @ + 21 at-xy dup seconds - .
195 s" beastie_disable" getenv
197 s" YES" compare-insensitive 0= if
202 s" autoboot_delay" getenv
207 0 0 2swap >number drop drop drop
212 dup 32 = if nip 0 swap then
213 dup -1 = if 0 boot then
214 dup 13 = if 0 boot then
215 dup bootkey @ = if 0 boot then
216 dup bootacpikey @ = if
218 s" acpi_load" unsetenv
219 s" 1" s" hint.acpi.0.disabled" setenv
220 s" 1" s" loader.acpi_disabled_by_user" setenv
222 s" YES" s" acpi_load" setenv
223 s" 0" s" hint.acpi.0.disabled" setenv
227 dup bootsafekey @ = if
228 s" arch-i386" environment? if
229 s" acpi_load" unsetenv
230 s" 1" s" hint.acpi.0.disabled" setenv
231 s" 1" s" loader.acpi_disabled_by_user" setenv
233 s" 0" s" hw.ata.ata_dma" setenv
234 s" 0" s" hw.ata.atapi_dma" setenv
235 s" 0" s" hw.ata.wc" setenv
236 s" 0" s" hw.eisa_slots" setenv
239 dup bootverbosekey @ = if
240 s" YES" s" boot_verbose" setenv
243 dup bootsinglekey @ = if
244 s" YES" s" boot_single" setenv
249 s" NO" s" autoboot_delay" setenv
252 rebootkey @ = if 0 reboot then