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
28 marker task-beastie.4th
30 include /boot/screen.4th
31 include /boot/frames.4th
44 variable bootverbosekey
45 variable bootsinglekey
51 \ The BSD Daemon. He is 19 rows high and 34 columns wide
52 : beastie-logo ( x y -- )
53 2dup at-xy ."
\e[1;31m, ," 1+
54 2dup at-xy ." /( )`" 1+
55 2dup at-xy ." \ \___ / |" 1+
56 2dup at-xy ." /-
\e[37m_
\e[31m `-/ '" 1+
57 2dup at-xy ." (
\e[37m/\/ \
\e[31m \ /\" 1+
58 2dup at-xy ."
\e[37m/ / |
\e[31m ` \" 1+
59 2dup at-xy ."
\e[34mO O
\e[37m)
\e[31m/ |" 1+
60 2dup at-xy ."
\e[37m`-^--'
\e[31m`< '" 1+
61 2dup at-xy ." (_.) _ ) /" 1+
62 2dup at-xy ." `.___/` / " 1+
63 2dup at-xy ." `-----' /" 1+
64 2dup at-xy ."
\e[33m<----.
\e[31m __ / __ \" 1+
65 2dup at-xy ."
\e[33m<----|====
\e[31mO)))
\e[33m==
\e[31m) \) /
\e[33m====|" 1+
66 2dup at-xy ."
\e[33m<----'
\e[31m `--' `.__,' \" 1+
68 2dup at-xy ." \ / /\" 1+
69 2dup at-xy ."
\e[36m______
\e[31m( (_ / \______/" 1+
70 2dup at-xy ."
\e[36m,' ,-----' |" 1+
71 at-xy ." `--{__________)
\e[0m"
74 : beastiebw-logo ( x y -- )
76 2dup at-xy ." /( )`" 1+
77 2dup at-xy ." \ \___ / |" 1+
78 2dup at-xy ." /- _ `-/ '" 1+
79 2dup at-xy ." (/\/ \ \ /\" 1+
80 2dup at-xy ." / / | ` \" 1+
81 2dup at-xy ." O O ) / |" 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 ." <----|====O)))==) \) /====" 1+
88 2dup at-xy ." <----' `--' `.__,' \" 1+
90 2dup at-xy ." \ / /\" 1+
91 2dup at-xy ." ______( (_ / \______/" 1+
92 2dup at-xy ." ,' ,-----' |" 1+
93 at-xy ." `--{__________)"
96 : fbsdbw-logo ( x y -- )
97 2dup at-xy ." ______" 1+
98 2dup at-xy ." | ____| __ ___ ___ " 1+
99 2dup at-xy ." | |__ | '__/ _ \/ _ \" 1+
100 2dup at-xy ." | __|| | | __/ __/" 1+
101 2dup at-xy ." | | | | | | |" 1+
102 2dup at-xy ." |_| |_| \___|\___|" 1+
103 2dup at-xy ." ____ _____ _____" 1+
104 2dup at-xy ." | _ \ / ____| __ \" 1+
105 2dup at-xy ." | |_) | (___ | | | |" 1+
106 2dup at-xy ." | _ < \___ \| | | |" 1+
107 2dup at-xy ." | |_) |____) | |__| |" 1+
108 2dup at-xy ." | | | |" 1+
109 at-xy ." |____/|_____/|_____/"
112 : print-logo ( x y -- )
113 s" loader_logo" getenv
119 2dup s" fbsdbw" compare-insensitive 0= if
124 2dup s" beastiebw" compare-insensitive 0= if
129 2dup s" beastie" compare-insensitive 0= if
134 2dup s" none" compare-insensitive 0= if
143 : acpienabled? ( -- flag )
148 s" YES" compare-insensitive 0<> if
151 s" hint.acpi.0.disabled" getenv
162 : printmenuitem ( -- n )
166 menuY @ + dup menuX @ swap at-xy
168 menuX @ 1+ swap at-xy
173 : beastie-menu ( -- )
181 13 6 at-xy ." Welcome to FreeBSD!"
182 printmenuitem ." Boot FreeBSD [default]" bootkey !
183 s" arch-i386" environment? if
185 printmenuitem ." Boot FreeBSD with ACPI " bootacpikey !
194 printmenuitem ." Boot FreeBSD in Safe Mode" bootsafekey !
195 printmenuitem ." Boot FreeBSD in single user mode" bootsinglekey !
196 printmenuitem ." Boot FreeBSD with verbose logging" bootverbosekey !
197 printmenuitem ." Escape to loader prompt" escapekey !
198 printmenuitem ." Reboot" rebootkey !
200 ." Select option, [Enter] for default"
202 s" or [Space] to pause timer " dup 2 - promptwidth !
215 menuX @ promptwidth @ + 21 at-xy dup seconds - .
229 s" beastie_disable" getenv
231 s" YES" compare-insensitive 0= if
238 s" autoboot_delay" getenv
243 0 0 2swap >number drop drop drop
248 dup 32 = if nip 0 swap then
249 dup -1 = if 0 boot then
250 dup 13 = if 0 boot then
251 dup bootkey @ = if 0 boot then
252 dup bootacpikey @ = if
254 s" acpi_load" unsetenv
255 s" 1" s" hint.acpi.0.disabled" setenv
256 s" 1" s" loader.acpi_disabled_by_user" setenv
258 s" YES" s" acpi_load" setenv
259 s" 0" s" hint.acpi.0.disabled" setenv
263 dup bootsafekey @ = if
264 s" arch-i386" environment? if
266 s" acpi_load" unsetenv
267 s" 1" s" hint.acpi.0.disabled" setenv
268 s" 1" s" loader.acpi_disabled_by_user" setenv
269 s" 1" s" hint.apic.0.disabled" setenv
271 s" 0" s" hw.ata.ata_dma" setenv
272 s" 0" s" hw.ata.atapi_dma" setenv
273 s" 0" s" hw.ata.wc" setenv
274 s" 0" s" hw.eisa_slots" setenv
275 s" 1" s" hint.kbdmux.0.disabled" setenv
278 dup bootverbosekey @ = if
279 s" YES" s" boot_verbose" setenv
282 dup bootsinglekey @ = if
283 s" YES" s" boot_single" setenv
288 s" NO" s" autoboot_delay" setenv
291 rebootkey @ = if 0 reboot then