[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/boot/forth/beastie.4th

Version: -  FREEBSD  -  FREEBSD7  -  FREEBSD71  -  FREEBSD70  -  FREEBSD6  -  FREEBSD64  -  FREEBSD63  -  FREEBSD62  -  FREEBSD61  -  FREEBSD60  -  FREEBSD5  -  FREEBSD55  -  FREEBSD54  -  FREEBSD53  -  FREEBSD52  -  FREEBSD51  -  FREEBSD50  -  FREEBSD4  -  FREEBSD3  -  FREEBSD22  -  linux-2.6  -  linux-2.4.22  -  MK83  -  MK84  -  PLAN9  -  DFBSD  -  NETBSD  -  NETBSD5  -  NETBSD4  -  NETBSD3  -  NETBSD20  -  OPENBSD  -  xnu-517  -  xnu-792  -  xnu-792.6.70  -  xnu-1228  -  OPENSOLARIS  -  minix-3-1-1  -  TRUSTEDBSD-SEBSD  -  FREEBSD-LIBC  -  FREEBSD7-LIBC  -  FREEBSD6-LIBC  -  GLIBC27 
SearchContext: -  none  -  excerpts  -  bigexcerpts 

  1 \ Copyright (c) 2003 Scott Long <scottl@freebsd.org>
  2 \ Copyright (c) 2003 Aleksander Fafula <alex@fafula.com>
  3 \ All rights reserved.
  4 \
  5 \ Redistribution and use in source and binary forms, with or without
  6 \ modification, are permitted provided that the following conditions
  7 \ are met:
  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.
 13 \
 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
 24 \ SUCH DAMAGE.
 25 \
 26 \ $FreeBSD: src/sys/boot/forth/beastie.4th,v 1.12 2006/03/31 21:36:17 scottl Exp $
 27 
 28 marker task-beastie.4th
 29 
 30 include /boot/screen.4th
 31 include /boot/frames.4th
 32 
 33 hide
 34 
 35 variable menuidx
 36 variable menubllt
 37 variable menuX
 38 variable menuY
 39 variable promptwidth
 40 
 41 variable bootkey
 42 variable bootacpikey
 43 variable bootsafekey
 44 variable bootverbosekey
 45 variable bootsinglekey
 46 variable escapekey
 47 variable rebootkey
 48 
 49 46 constant dot
 50 
 51 \ The BSD Daemon.  He is 19 rows high and 34 columns wide
 52 : beastie-logo ( x y -- )
 53 2dup at-xy ."               ,        ," 1+
 54 2dup at-xy ."              /(        )`" 1+
 55 2dup at-xy ."              \ \___   / |" 1+
 56 2dup at-xy ."              /- _  `-/  '" 1+
 57 2dup at-xy ."             (/\/ \ \   /\" 1+
 58 2dup at-xy ."             / /   | `    \" 1+
 59 2dup at-xy ."             O O   ) /    |" 1+
 60 2dup at-xy ."             `-^--'`<     '" 1+
 61 2dup at-xy ."            (_.)  _  )   /" 1+
 62 2dup at-xy ."             `.___/`    /       " 1+
 63 2dup at-xy ."               `-----' /" 1+
 64 2dup at-xy ."  <----.     __ / __   \" 1+
 65 2dup at-xy ."  <----|====O)))==) \) /====|" 1+
 66 2dup at-xy ."  <----'    `--' `.__,' \" 1+
 67 2dup at-xy ."               |        |" 1+
 68 2dup at-xy ."                \       /       /\" 1+
 69 2dup at-xy ."           ______( (_  / \______/" 1+
 70 2dup at-xy ."         ,'  ,-----'   |" 1+
 71 at-xy ."         `--{__________) "
 72 ;
 73 
 74 : beastiebw-logo ( x y -- )
 75         2dup at-xy ."              ,        ," 1+
 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+
 89         2dup at-xy ."              |        |" 1+
 90         2dup at-xy ."               \       /       /\" 1+
 91         2dup at-xy ."          ______( (_  / \______/" 1+
 92         2dup at-xy ."        ,'  ,-----'   |" 1+
 93              at-xy ."        `--{__________)"
 94 ;
 95 
 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 ."     |____/|_____/|_____/"
110 ;
111 
112 : print-logo ( x y -- )
113         s" loader_logo" getenv
114         dup -1 = if
115                 drop
116                 fbsdbw-logo
117                 exit
118         then
119         2dup s" fbsdbw" compare-insensitive 0= if
120                 2drop
121                 fbsdbw-logo
122                 exit
123         then
124         2dup s" beastiebw" compare-insensitive 0= if
125                 2drop
126                 beastiebw-logo
127                 exit
128         then
129         2dup s" beastie" compare-insensitive 0= if
130                 2drop
131                 beastie-logo
132                 exit
133         then
134         2dup s" none" compare-insensitive 0= if
135                 2drop
136                 \ no logo
137                 exit
138         then
139         2drop
140         fbsdbw-logo
141 ;
142 
143 : acpienabled? ( -- flag )
144         s" acpi_load" getenv
145         dup -1 = if
146                 drop false exit
147         then
148         s" YES" compare-insensitive 0<> if
149                 false exit
150         then
151         s" hint.acpi.0.disabled" getenv
152         dup -1 <> if
153                 s" 0" compare 0<> if
154                         false exit
155                 then
156         else
157                 drop
158         then
159         true
160 ;
161 
162 : printmenuitem ( -- n )
163         menuidx @
164         1+ dup
165         menuidx !
166         menuY @ + dup menuX @ swap at-xy
167         menuidx @ .
168         menuX @ 1+ swap at-xy
169         menubllt @ emit
170         menuidx @ 48 +
171 ;
172 
173 : beastie-menu ( -- )
174         0 menuidx !
175         dot menubllt !
176         8 menuY !
177         5 menuX !
178         clear
179         46 4 print-logo
180         42 20 2 2 box
181         13 6 at-xy ." Welcome to FreeBSD!"
182         printmenuitem ."  Boot FreeBSD [default]" bootkey !
183         s" arch-i386" environment? if
184                 drop
185                 printmenuitem ."  Boot FreeBSD with ACPI " bootacpikey !
186                 acpienabled? if
187                         ." disabled"
188                 else
189                         ." enabled"
190                 then
191         else
192                 -2 bootacpikey !
193         then
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 !
199         menuX @ 20 at-xy
200         ." Select option, [Enter] for default"
201         menuX @ 21 at-xy
202         s" or [Space] to pause timer    " dup 2 - promptwidth !
203         type
204 ;
205 
206 : tkey
207         seconds +
208         begin 1 while
209                 over 0<> if
210                         dup seconds u< if
211                                 drop
212                                 -1
213                                 exit
214                         then
215                         menuX @ promptwidth @ + 21 at-xy dup seconds - .
216                 then
217                 key? if
218                         drop
219                         key
220                         exit
221                 then
222         50 ms
223         repeat
224 ;
225 
226 set-current
227 
228 : beastie-start
229         s" beastie_disable" getenv
230         dup -1 <> if
231                 s" YES" compare-insensitive 0= if
232                         exit
233                 then
234         else
235                 drop
236         then
237         beastie-menu
238         s" autoboot_delay" getenv
239         dup -1 = if
240                 drop
241                 10
242         else
243                 0 0 2swap >number drop drop drop
244         then
245         begin
246                 dup tkey
247                 0 25 at-xy
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
253                         acpienabled? 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
257                         else
258                                 s" YES" s" acpi_load" setenv
259                                 s" 0" s" hint.acpi.0.disabled" setenv
260                         then
261                         0 boot
262                 then
263                 dup bootsafekey @ = if
264                         s" arch-i386" environment? if
265                                 drop
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
270                         then
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
276                         0 boot
277                 then
278                 dup bootverbosekey @ = if
279                         s" YES" s" boot_verbose" setenv
280                         0 boot
281                 then
282                 dup bootsinglekey @ = if
283                         s" YES" s" boot_single" setenv
284                         0 boot
285                 then
286                 dup escapekey @ = if
287                         2drop
288                         s" NO" s" autoboot_delay" setenv
289                         exit
290                 then
291                 rebootkey @ = if 0 reboot then
292         again
293 ;
294 
295 previous

Cache object: fe45bb6873d776eda6d39d8cdc4e1fed


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.