menu-commands.4th revision 222417
1\ Copyright (c) 2006-2011 Devin Teske <devinteske@hotmail.com> 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 222417 2011-05-28 08:50:38Z julian $ 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" hint.apic.0.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" hint.kbdmux.0.disabled" unsetenv 71 else 72 \ 73 \ Toggle ACPI elements if necessary 74 \ 75 acpipresent? if acpienabled? if 76 menuacpi @ dup 0<> if 77 toggle_menuitem ( N -- N ) 78 then 79 drop 80 acpi_disable 81 then then 82 83 s" set hint.apic.0.disabled=1" evaluate 84 s" set hw.ata.ata_dma=0" evaluate 85 s" set hw.ata.atapi_dma=0" evaluate 86 s" set hw.ata.wc=0" evaluate 87 s" set hw.eisa_slots=0" evaluate 88 s" set hint.kbdmux.0.disabled=1" evaluate 89 then 90 91 menu-redraw 92 93 TRUE \ loop menu again 94; 95 96: toggle_singleuser ( N -- N TRUE ) 97 toggle_menuitem 98 menu-redraw 99 100 \ Now we're going to make the change effective 101 102 s" toggle_stateN @" \ base name of toggle state var 103 -rot 2dup 12 + c! rot \ replace 'N' with ASCII numeral 104 105 evaluate 0= if 106 s" boot_single" unsetenv 107 else 108 s" set boot_single=YES" evaluate 109 then 110 111 TRUE \ loop menu again 112; 113 114: toggle_verbose ( N -- N TRUE ) 115 toggle_menuitem 116 menu-redraw 117 118 \ Now we're going to make the change effective 119 120 s" toggle_stateN @" \ base name of toggle state var 121 -rot 2dup 12 + c! rot \ replace 'N' with ASCII numeral 122 123 evaluate 0= if 124 s" boot_verbose" unsetenv 125 else 126 s" set boot_verbose=YES" evaluate 127 then 128 129 TRUE \ loop menu again 130; 131 132: goto_prompt ( N -- N FALSE ) 133 134 s" set autoboot_delay=NO" evaluate 135 136 cr 137 ." To get back to the menu, type `menu' and press ENTER" cr 138 ." or type `boot' and press ENTER to start FreeBSD." cr 139 cr 140 141 FALSE \ exit the menu 142; 143 144: cycle_kernel ( N -- N TRUE ) 145 cycle_menuitem 146 menu-redraw 147 148 \ Now we're going to make the change effective 149 150 s" cycle_stateN" \ base name of array state var 151 -rot 2dup 11 + c! rot \ replace 'N' with ASCII numeral 152 evaluate \ translate name into address 153 @ \ dereference address into value 154 48 + \ convert to ASCII numeral 155 156 \ Since we are [in this file] going to override the standard `boot' 157 \ routine with a custom one, you should know that we use $kernel 158 \ when referencing the desired kernel. Set $kernel below. 159 160 s" set kernel=${kernel_prefix}${kernel[N]}${kernel_suffix}" 161 \ command to assemble full kernel-path 162 -rot tuck 36 + c! swap \ replace 'N' with array index value 163 evaluate \ sets $kernel to full kernel-path 164 165 TRUE \ loop menu again 166; 167 168: cycle_root ( N -- N TRUE ) 169 cycle_menuitem 170 menu-redraw 171 172 \ Now we're going to make the change effective 173 174 s" cycle_stateN" \ base name of array state var 175 -rot 2dup 11 + c! rot \ replace 'N' with ASCII numeral 176 evaluate \ translate name into address 177 @ \ dereference address into value 178 48 + \ convert to ASCII numeral 179 180 \ Since we are [in this file] going to override the standard `boot' 181 \ routine with a custom one, you should know that we use $root when 182 \ booting. Set $root below. 183 184 s" set root=${root_prefix}${root[N]}${root_prefix}" 185 \ command to assemble full kernel-path 186 -rot tuck 30 + c! swap \ replace 'N' with array index value 187 evaluate \ sets $kernel to full kernel-path 188 189 TRUE \ loop menu again 190; 191