menu-commands.4th revision 238431
1\ Copyright (c) 2006-2011 Devin Teske <dteske@FreeBSD.org>
2\ All rights reserved.
3\ 
4\ Redistribution and use in source and binary forms, with or without
5\ modification, are permitted provided that the following conditions
6\ are met:
7\ 1. Redistributions of source code must retain the above copyright
8\    notice, this list of conditions and the following disclaimer.
9\ 2. Redistributions in binary form must reproduce the above copyright
10\    notice, this list of conditions and the following disclaimer in the
11\    documentation and/or other materials provided with the distribution.
12\ 
13\ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14\ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15\ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16\ ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17\ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18\ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19\ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20\ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21\ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22\ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23\ SUCH DAMAGE.
24\ 
25\ $FreeBSD: head/sys/boot/forth/menu-commands.4th 238431 2012-07-14 01:45:35Z dteske $
26
27marker task-menu-commands.4th
28
29: acpi_enable ( -- )
30	s" set acpi_load=YES" evaluate \ XXX deprecated but harmless
31	s" set hint.acpi.0.disabled=0" evaluate
32	s" loader.acpi_disabled_by_user" unsetenv
33;
34
35: acpi_disable ( -- )
36	s" acpi_load" unsetenv \ XXX deprecated but harmless
37	s" set hint.acpi.0.disabled=1" evaluate
38	s" set loader.acpi_disabled_by_user=1" evaluate
39;
40
41: toggle_acpi ( N -- N TRUE )
42
43	\ Make changes effective _before_ calling menu-redraw
44
45	acpienabled? if
46		acpi_disable
47	else
48		acpi_enable
49	then
50
51	menu-redraw
52
53	TRUE \ loop menu again
54;
55
56: toggle_safemode ( N -- N TRUE )
57	toggle_menuitem
58
59	\ Now we're going to make the change effective
60
61	s" toggle_stateN @"      \ base name of toggle state var
62	-rot 2dup 12 + c! rot    \ replace 'N' with ASCII numeral
63
64	evaluate 0= if
65		s" kern.smp.disabled" unsetenv
66		s" hw.ata.ata_dma" unsetenv
67		s" hw.ata.atapi_dma" unsetenv
68		s" hw.ata.wc" unsetenv
69		s" hw.eisa_slots" unsetenv
70		s" kern.eventtimer.periodic" unsetenv
71		s" kern.geom.part.check_integrity" unsetenv
72	else
73		s" set kern.smp.disabled=1" evaluate
74		s" set hw.ata.ata_dma=0" evaluate
75		s" set hw.ata.atapi_dma=0" evaluate
76		s" set hw.ata.wc=0" evaluate
77		s" set hw.eisa_slots=0" evaluate
78		s" set kern.eventtimer.periodic=1" evaluate
79		s" set kern.geom.part.check_integrity=0" evaluate
80	then
81
82	menu-redraw
83
84	TRUE \ loop menu again
85;
86
87: toggle_singleuser ( N -- N TRUE )
88	toggle_menuitem
89	menu-redraw
90
91	\ Now we're going to make the change effective
92
93	s" toggle_stateN @"      \ base name of toggle state var
94	-rot 2dup 12 + c! rot    \ replace 'N' with ASCII numeral
95
96	evaluate 0= if
97		s" boot_single" unsetenv
98	else
99		s" set boot_single=YES" evaluate
100	then
101
102	TRUE \ loop menu again
103;
104
105: toggle_verbose ( N -- N TRUE )
106	toggle_menuitem
107	menu-redraw
108
109	\ Now we're going to make the change effective
110
111	s" toggle_stateN @"      \ base name of toggle state var
112	-rot 2dup 12 + c! rot    \ replace 'N' with ASCII numeral
113
114	evaluate 0= if
115		s" boot_verbose" unsetenv
116	else
117		s" set boot_verbose=YES" evaluate
118	then
119
120	TRUE \ loop menu again
121;
122
123: goto_prompt ( N -- N FALSE )
124
125	s" set autoboot_delay=NO" evaluate
126
127	cr
128	." To get back to the menu, type `menu' and press ENTER" cr
129	." or type `boot' and press ENTER to start FreeBSD." cr
130	cr
131
132	FALSE \ exit the menu
133;
134
135: cycle_kernel ( N -- N TRUE )
136	cycle_menuitem
137	menu-redraw
138
139	\ Now we're going to make the change effective
140
141	s" cycle_stateN"         \ base name of array state var
142	-rot 2dup 11 + c! rot    \ replace 'N' with ASCII numeral
143	evaluate                 \ translate name into address
144	@                        \ dereference address into value
145	48 +                     \ convert to ASCII numeral
146
147	\ Since we are [in this file] going to override the standard `boot'
148	\ routine with a custom one, you should know that we use $kernel
149	\ when referencing the desired kernel. Set $kernel below.
150
151	s" set kernel=${kernel_prefix}${kernel[N]}${kernel_suffix}"
152	                          \ command to assemble full kernel-path
153	-rot tuck 36 + c! swap    \ replace 'N' with array index value
154	evaluate                  \ sets $kernel to full kernel-path
155
156	TRUE \ loop menu again
157;
158
159: cycle_root ( N -- N TRUE )
160	cycle_menuitem
161	menu-redraw
162
163	\ Now we're going to make the change effective
164
165	s" cycle_stateN"         \ base name of array state var
166	-rot 2dup 11 + c! rot    \ replace 'N' with ASCII numeral
167	evaluate                 \ translate name into address
168	@                        \ dereference address into value
169	48 +                     \ convert to ASCII numeral
170
171	\ Since we are [in this file] going to override the standard `boot'
172	\ routine with a custom one, you should know that we use $root when
173	\ booting. Set $root below.
174
175	s" set root=${root_prefix}${root[N]}${root_prefix}"
176	                          \ command to assemble full kernel-path
177	-rot tuck 30 + c! swap    \ replace 'N' with array index value
178	evaluate                  \ sets $kernel to full kernel-path
179
180	TRUE \ loop menu again
181;
182