1*bbf21555SRichard Lowe.\" Copyright (c) 2012 Devin Teske 2*bbf21555SRichard Lowe.\" All rights reserved. 3*bbf21555SRichard Lowe.\" 4*bbf21555SRichard Lowe.\" Redistribution and use in source and binary forms, with or without 5*bbf21555SRichard Lowe.\" modification, are permitted provided that the following conditions 6*bbf21555SRichard Lowe.\" are met: 7*bbf21555SRichard Lowe.\" 1. Redistributions of source code must retain the above copyright 8*bbf21555SRichard Lowe.\" notice, this list of conditions and the following disclaimer. 9*bbf21555SRichard Lowe.\" 2. Redistributions in binary form must reproduce the above copyright 10*bbf21555SRichard Lowe.\" notice, this list of conditions and the following disclaimer in the 11*bbf21555SRichard Lowe.\" documentation and/or other materials provided with the distribution. 12*bbf21555SRichard Lowe.\" 13*bbf21555SRichard Lowe.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 14*bbf21555SRichard Lowe.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15*bbf21555SRichard Lowe.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 16*bbf21555SRichard Lowe.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 17*bbf21555SRichard Lowe.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 18*bbf21555SRichard Lowe.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 19*bbf21555SRichard Lowe.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 20*bbf21555SRichard Lowe.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 21*bbf21555SRichard Lowe.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 22*bbf21555SRichard Lowe.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 23*bbf21555SRichard Lowe.\" SUCH DAMAGE. 24*bbf21555SRichard Lowe.\" 25*bbf21555SRichard Lowe.Dd July 20, 2018 26*bbf21555SRichard Lowe.Dt MENUSETS.4TH 7 27*bbf21555SRichard Lowe.Os 28*bbf21555SRichard Lowe.Sh NAME 29*bbf21555SRichard Lowe.Nm menusets.4th 30*bbf21555SRichard Lowe.Nd loader dynamic submenu boot module 31*bbf21555SRichard Lowe.Sh DESCRIPTION 32*bbf21555SRichard LoweThe file that goes by the name of 33*bbf21555SRichard Lowe.Nm 34*bbf21555SRichard Loweis a set of commands designed to add submenu functionality to the dynamic menu 35*bbf21555SRichard Lowesystem provided by 36*bbf21555SRichard Lowe.Xr menu.4th 7 . 37*bbf21555SRichard LoweSubmenus are managed through a system of carefully named environment variables. 38*bbf21555SRichard LoweThe commands of 39*bbf21555SRichard Lowe.Nm 40*bbf21555SRichard Loweby themselves are not enough for most uses. 41*bbf21555SRichard LowePlease refer to the examples below for the most common situations, and to 42*bbf21555SRichard Lowe.Xr menu.4th 7 43*bbf21555SRichard Lowefor additional commands. 44*bbf21555SRichard Lowe.Pp 45*bbf21555SRichard LoweBefore using any of the commands provided in 46*bbf21555SRichard Lowe.Nm , 47*bbf21555SRichard Loweit must be included 48*bbf21555SRichard Lowethrough the command: 49*bbf21555SRichard Lowe.Pp 50*bbf21555SRichard Lowe.Dl include menusets.4th 51*bbf21555SRichard Lowe.Pp 52*bbf21555SRichard LoweThis line is present in the default 53*bbf21555SRichard Lowe.Pa /boot/forth/menu-commands.4th 54*bbf21555SRichard Lowefile, so it is not needed (and should not be re-issued) in a normal setup. 55*bbf21555SRichard Lowe.Pp 56*bbf21555SRichard LoweThe commands provided by it are: 57*bbf21555SRichard Lowe.Pp 58*bbf21555SRichard Lowe.Bl -tag -width menuset-loadinitial -compact -offset indent 59*bbf21555SRichard Lowe.It Ic menuset-loadsetnum 60*bbf21555SRichard LoweTakes a single integer on the stack to identify the menuset environment 61*bbf21555SRichard Lowevariables to be activated (see environment variables below). 62*bbf21555SRichard Lowe.It Ic menuset-loadinitial 63*bbf21555SRichard LoweIf $menuset_initial is set, passes the value to menuset-loadsetnum. 64*bbf21555SRichard LoweThe value must be a number. 65*bbf21555SRichard Lowe.It Ic menusets-unset 66*bbf21555SRichard LoweUnsets the environment variables associated with all menusets. 67*bbf21555SRichard LoweIncrements starting at 1 and stops at the first unconfigured menuset. 68*bbf21555SRichard LoweA menuset is considered configured if the caption for item 1 is set. 69*bbf21555SRichard Lowe.El 70*bbf21555SRichard Lowe.Pp 71*bbf21555SRichard LoweThe environment variables that effect its behavior are: 72*bbf21555SRichard Lowe.Bl -tag -width bootfile -offset indent 73*bbf21555SRichard Lowe.It Va menuset_initial 74*bbf21555SRichard LoweNumber to pass to menuset-loadsetnum when menuset-loadinitial is called. 75*bbf21555SRichard Lowe.It Va menuset_nameN 76*bbf21555SRichard LoweUsed to give a name to a menuset. 77*bbf21555SRichard Lowe.El 78*bbf21555SRichard Lowe.Pp 79*bbf21555SRichard LoweWhen a menuset is NOT given a name (the default), 80*bbf21555SRichard Lowemenuset N is comprised of the following environment variables: 81*bbf21555SRichard Lowe.Pp 82*bbf21555SRichard Lowe.Bl -tag -width menusetN_caption[x][y] -compact -offset indent 83*bbf21555SRichard Lowe.It Va ansisetN_caption[x] 84*bbf21555SRichard Lowe-> ansi_caption[x] 85*bbf21555SRichard Lowe.It Va ansisetN_caption[x][y] 86*bbf21555SRichard Lowe-> ansi_caption[x][y] 87*bbf21555SRichard Lowe.It Va menusetN_acpi 88*bbf21555SRichard Lowe-> menu_acpi 89*bbf21555SRichard Lowe.It Va menusetN_caption[x] 90*bbf21555SRichard Lowe-> menu_caption[x] 91*bbf21555SRichard Lowe.It Va menusetN_caption[x][y] 92*bbf21555SRichard Lowe-> menu_caption[x][y] 93*bbf21555SRichard Lowe.It Va menusetN_command[x] 94*bbf21555SRichard Lowe-> menu_command[x] 95*bbf21555SRichard Lowe.It Va menusetN_init 96*bbf21555SRichard Lowe-> 97*bbf21555SRichard Lowe.Dq Li evaluated 98*bbf21555SRichard Lowe.It Va menusetN_init[x] 99*bbf21555SRichard Lowe-> menu_init[x] 100*bbf21555SRichard Lowe.It Va menusetN_keycode[x] 101*bbf21555SRichard Lowe-> menu_keycode[x] 102*bbf21555SRichard Lowe.It Va menusetN_options 103*bbf21555SRichard Lowe-> menu_options 104*bbf21555SRichard Lowe.It Va menusetN_optionstext 105*bbf21555SRichard Lowe-> menu_optionstext 106*bbf21555SRichard Lowe.It Va menusetN_reboot 107*bbf21555SRichard Lowe-> menu_reboot 108*bbf21555SRichard Lowe.It Va toggledsetN_ansi[x] 109*bbf21555SRichard Lowe-> toggled_ansi[x] 110*bbf21555SRichard Lowe.It Va toggledsetN_text[x] 111*bbf21555SRichard Lowe-> toggled_text[x] 112*bbf21555SRichard Lowe.El 113*bbf21555SRichard Lowe.Pp 114*bbf21555SRichard LoweWhen you choose to give a menuset a name (by setting $menuset_nameN), 115*bbf21555SRichard Lowemenuset N is instead comprised of the following environment variables: 116*bbf21555SRichard Lowe.Pp 117*bbf21555SRichard Lowe.Bl -tag -width NAMEmenu_caption[x][y] -compact -offset indent 118*bbf21555SRichard Lowe.It Va NAMEansi_caption[x] 119*bbf21555SRichard Lowe-> ansi_caption[x] 120*bbf21555SRichard Lowe.It Va NAMEansi_caption[x][y] 121*bbf21555SRichard Lowe-> ansi_caption[x][y] 122*bbf21555SRichard Lowe.It Va NAMEmenu_acpi 123*bbf21555SRichard Lowe-> menu_acpi 124*bbf21555SRichard Lowe.It Va NAMEmenu_caption[x] 125*bbf21555SRichard Lowe-> menu_caption[x] 126*bbf21555SRichard Lowe.It Va NAMEmenu_caption[x][y] 127*bbf21555SRichard Lowe-> menu_caption[x][y] 128*bbf21555SRichard Lowe.It Va NAMEmenu_command[x] 129*bbf21555SRichard Lowe-> menu_command[x] 130*bbf21555SRichard Lowe.It Va NAMEmenu_init 131*bbf21555SRichard Lowe-> 132*bbf21555SRichard Lowe.Dq Li evaluated 133*bbf21555SRichard Lowe.It Va NAMEmenu_init[x] 134*bbf21555SRichard Lowe-> menu_init[x] 135*bbf21555SRichard Lowe.It Va NAMEmenu_keycode[x] 136*bbf21555SRichard Lowe-> menu_keycode[x] 137*bbf21555SRichard Lowe.It Va NAMEmenu_options 138*bbf21555SRichard Lowe-> menu_options 139*bbf21555SRichard Lowe.It Va NAMEmenu_optionstext 140*bbf21555SRichard Lowe-> menu_optionstext 141*bbf21555SRichard Lowe.It Va NAMEmenu_reboot 142*bbf21555SRichard Lowe-> menu_reboot 143*bbf21555SRichard Lowe.It Va NAMEtoggled_ansi[x] 144*bbf21555SRichard Lowe-> toggled_ansi[x] 145*bbf21555SRichard Lowe.It Va NAMEtoggled_text[x] 146*bbf21555SRichard Lowe-> toggled_text[x] 147*bbf21555SRichard Lowe.El 148*bbf21555SRichard Lowe.Pp 149*bbf21555SRichard Lowewhere 150*bbf21555SRichard Lowe.Dq Li NAME 151*bbf21555SRichard Loweis the value of $menuset_nameN. 152*bbf21555SRichard LoweIn the case of $NAMEmenu_init ($menusetN_init when $menuset_nameN is unset), 153*bbf21555SRichard Lowethe value is evaluated as an FICL statement. 154*bbf21555SRichard LoweThis can be used to dynamically adjust the menuset variables right before the 155*bbf21555SRichard Lowemenu is activated. 156*bbf21555SRichard Lowe.Pp 157*bbf21555SRichard LoweIn addition, 158*bbf21555SRichard Lowe.Nm 159*bbf21555SRichard Loweprovides the following FICL words: 160*bbf21555SRichard Lowe.Pp 161*bbf21555SRichard Lowe.Bl -tag -width menuset -compact -offset indent 162*bbf21555SRichard Lowe.It Ic menuset-checksetnum ( N -- ) 163*bbf21555SRichard LoweGiven a single integer on the stack, sets a global variable 164*bbf21555SRichard Lowe.Va menuset_use_name 165*bbf21555SRichard Loweto a boolean based on whether $menuset_nameN is set (true) or not (false). 166*bbf21555SRichard LoweAlso sets $affix temporary variable (prefix or infix depending on 167*bbf21555SRichard Lowemenuset_use_name). 168*bbf21555SRichard LoweAutomatically called by menuset-loadsetnum and menusets-unset. 169*bbf21555SRichard Lowe.It Ic menuset-loadvar ( -- ) 170*bbf21555SRichard LoweUsed indirectly to shorten syntax and mitigate dictionary size. 171*bbf21555SRichard LoweRequires the following temporary environment variables: 172*bbf21555SRichard Lowe.Pp 173*bbf21555SRichard Lowe.Bl -tag -width affix -compact -offset indent 174*bbf21555SRichard Lowe.It Va type 175*bbf21555SRichard Loweshould be set to one of: menu toggled ansi 176*bbf21555SRichard Lowe.It Va var 177*bbf21555SRichard Loweshould be set to one of: caption command keycode text ... 178*bbf21555SRichard Lowe.It Va affix 179*bbf21555SRichard Loweeither a prefix (menuset_use_name is true) or infix (menuset_use_name is false) 180*bbf21555SRichard Lowe.El 181*bbf21555SRichard Lowe.Pp 182*bbf21555SRichard LoweIf the global 183*bbf21555SRichard Lowe.Va menuset_use_name 184*bbf21555SRichard Loweis true, the variable ${type}_${var} is made to 185*bbf21555SRichard Loweequal the value of the variable ${affix}${type}_${var} 186*bbf21555SRichard Lowe(note: in this case menuset-checksetnum has set $affix to $menuset_nameN). 187*bbf21555SRichard LoweOtherwise (when 188*bbf21555SRichard Lowe.Va menuset_use_name 189*bbf21555SRichard Loweis false), the variable ${type}_${var} is made to 190*bbf21555SRichard Loweequal the value of the variable ${type}set${affix}_${var} 191*bbf21555SRichard Lowe(note: in this case menuset-checksetnum has set $affix to N). 192*bbf21555SRichard Lowe.Pp 193*bbf21555SRichard LoweBoth the global variable 194*bbf21555SRichard Lowe.Va menuset_use_name 195*bbf21555SRichard Loweand the environment variable $affix are automatically handled by 196*bbf21555SRichard Lowemenuset-checksetnum above (which is automatically called by 197*bbf21555SRichard Lowemenuset-loadsetnum). 198*bbf21555SRichard Lowe.It Ic menuset-unloadvar ( -- ) 199*bbf21555SRichard LoweUsed indirectly to shorten syntax and mitigate dictionary size. 200*bbf21555SRichard LoweLike menuset-loadvar except it unsets the menuset variable. 201*bbf21555SRichard LoweIf global 202*bbf21555SRichard Lowe.Va menuset_use_name 203*bbf21555SRichard Loweis true ($affix is $menuset_nameN), 204*bbf21555SRichard Lowevariable ${affix}${type}_${var} is unset. 205*bbf21555SRichard LoweOtherwise, $affix is N and variable ${type}set${affix}_${var} is unset. 206*bbf21555SRichard Lowe.It Ic menuset-loadmenuvar ( -- ) 207*bbf21555SRichard LoweSets $type to 208*bbf21555SRichard Lowe.Dq menu 209*bbf21555SRichard Loweand calls menuset-loadvar. 210*bbf21555SRichard Lowe.It Ic menuset-unloadmenuvar ( -- ) 211*bbf21555SRichard LoweSets $type to 212*bbf21555SRichard Lowe.Dq menu 213*bbf21555SRichard Loweand calls menuset-unloadvar. 214*bbf21555SRichard Lowe.It Ic menuset-loadxvar ( -- ) 215*bbf21555SRichard LoweLike menuset-loadvar except it takes an additional temporary variable $x. 216*bbf21555SRichard LoweIf the global 217*bbf21555SRichard Lowe.Va menuset_use_name 218*bbf21555SRichard Loweis true (making $affix equal $menuset_nameN), 219*bbf21555SRichard Lowesets variable ${type}_${var}[${x}] to variable ${affix}${type}_${var}[${x}]. 220*bbf21555SRichard LoweOtherwise ($affix being N), sets the same variable to instead 221*bbf21555SRichard Lowe${type}set{affix}_${var}[${x}]. 222*bbf21555SRichard Lowe.It Ic menuset-unloadxvar ( -- ) 223*bbf21555SRichard LoweLike menuset-loadxvar except it unsets the menuset variable. 224*bbf21555SRichard LoweIf global 225*bbf21555SRichard Lowe.Va menuset_use_name 226*bbf21555SRichard Loweis true, unsets ${affix}${type}_${var}[${x}]. 227*bbf21555SRichard LoweOtherwise, unsets ${type}set${affix}_${var}[${x}]. 228*bbf21555SRichard Lowe.It Ic menuset-loadansixvar ( -- ) 229*bbf21555SRichard LoweSets $type to 230*bbf21555SRichard Lowe.Dq ansi 231*bbf21555SRichard Loweand calls menuset-loadxvar 232*bbf21555SRichard Lowe.It Ic menuset-unloadansixvar ( -- ) 233*bbf21555SRichard LoweSets $type to 234*bbf21555SRichard Lowe.Dq ansi 235*bbf21555SRichard Loweand calls menuset-unloadxvar 236*bbf21555SRichard Lowe.It Ic menuset-loadmenuxvar ( -- ) 237*bbf21555SRichard LoweSets $type to 238*bbf21555SRichard Lowe.Dq ansi 239*bbf21555SRichard Loweand calls menuset-loadxvar 240*bbf21555SRichard Lowe.It Ic menuset-unloadmenuxvar ( -- ) 241*bbf21555SRichard LoweSets $type to 242*bbf21555SRichard Lowe.Dq ansi 243*bbf21555SRichard Loweand calls menuset-unloadxvar 244*bbf21555SRichard Lowe.It Ic menuset-loadtoggledxvar ( -- ) 245*bbf21555SRichard LoweSets $type to 246*bbf21555SRichard Lowe.Dq toggled 247*bbf21555SRichard Loweand calls menuset-loadxvar 248*bbf21555SRichard Lowe.It Ic menuset-unloadtoggledxvar ( -- ) 249*bbf21555SRichard LoweSets $type to 250*bbf21555SRichard Lowe.Dq toggled 251*bbf21555SRichard Loweand calls menuset-unloadxvar 252*bbf21555SRichard Lowe.It Ic menuset-loadxyvar ( -- ) 253*bbf21555SRichard LoweLike menuset-loadxvar except it takes an additional temporary variable $y. 254*bbf21555SRichard LoweIf the global 255*bbf21555SRichard Lowe.Va menuset_use_name 256*bbf21555SRichard Loweis true ($affix is $menuset_nameN), 257*bbf21555SRichard Lowesets variable ${type}_${var}[${x}][${y}] to ${affix}${type}_${var}[${x}][${y}]. 258*bbf21555SRichard LoweOtherwise ($affix is N) sets the same variable to instead 259*bbf21555SRichard Lowe${type}set${affix}_${var}[${x}][${y}]. 260*bbf21555SRichard Lowe.It Ic menuset-unloadxyvar ( -- ) 261*bbf21555SRichard LoweLike menuset-loadxyvar except it unsets the menuset variable. 262*bbf21555SRichard LoweIf the global 263*bbf21555SRichard Lowe.Va menuset_use_name 264*bbf21555SRichard Loweis true, unsets ${affix}${type}_${var}[${x}][${y}]. 265*bbf21555SRichard LoweOtherwise, unsets ${type}set${affix}_${var}[${x}][${y}]. 266*bbf21555SRichard Lowe.It Ic menuset-loadansixyvar ( -- ) 267*bbf21555SRichard LoweSets $type to 268*bbf21555SRichard Lowe.Dq ansi 269*bbf21555SRichard Loweand calls menuset-loadxyvar. 270*bbf21555SRichard Lowe.It Ic menuset-unloadansixyvar ( -- ) 271*bbf21555SRichard LoweSets $type to 272*bbf21555SRichard Lowe.Dq ansi 273*bbf21555SRichard Loweand calls menuset-unloadxyvar. 274*bbf21555SRichard Lowe.It Ic menuset-loadmenuxyvar ( -- ) 275*bbf21555SRichard LoweSets $type to 276*bbf21555SRichard Lowe.Dq menu 277*bbf21555SRichard Loweand calls menuset-loadxyvar. 278*bbf21555SRichard Lowe.It Ic menuset-unloadmenuxyvar ( -- ) 279*bbf21555SRichard LoweSets $type to 280*bbf21555SRichard Lowe.Dq menu 281*bbf21555SRichard Loweand calls menuset-unloadxyvar. 282*bbf21555SRichard Lowe.It Ic menuset-setnum-namevar ( N -- C-Addr/U ) 283*bbf21555SRichard LoweTakes a single integer on the stack and replaces it with a string (in c-addr/u 284*bbf21555SRichard Loweformat) whose value is 285*bbf21555SRichard Lowe.Dq menuset_nameN . 286*bbf21555SRichard LoweFor example, if given 1 returns 287*bbf21555SRichard Lowe.Dq menuset_name1 . 288*bbf21555SRichard Lowe.It Ic menuset-cleanup ( N -- ) 289*bbf21555SRichard LoweUnsets all the various temporary variables, currently 290*bbf21555SRichard Lowe.Va type , 291*bbf21555SRichard Lowe.Va var , 292*bbf21555SRichard Lowe.Va x , 293*bbf21555SRichard Lowe.Va y , 294*bbf21555SRichard Loweand 295*bbf21555SRichard Lowe.Va affix . 296*bbf21555SRichard Lowe.El 297*bbf21555SRichard Lowe.Pp 298*bbf21555SRichard LoweFor all values of 299*bbf21555SRichard Lowe.Dq Li x 300*bbf21555SRichard Loweabove, use any number between 1 through 9. Sorry, double-digits are not 301*bbf21555SRichard Lowecurrently supported. 302*bbf21555SRichard LoweFor all values of 303*bbf21555SRichard Lowe.Dq Li N 304*bbf21555SRichard Loweabove, use any number between 1 and 65535. 305*bbf21555SRichard Lowe.Sh FILES 306*bbf21555SRichard Lowe.Bl -tag -width /boot/menu-commands.4th -compact 307*bbf21555SRichard Lowe.It Pa /boot/loader 308*bbf21555SRichard LoweThe 309*bbf21555SRichard Lowe.Xr loader 7 . 310*bbf21555SRichard Lowe.It Pa /boot/forth/menu.4th 311*bbf21555SRichard LoweDynamic menu module. 312*bbf21555SRichard Lowe.It Pa /boot/forth/menu-commands.4th 313*bbf21555SRichard LoweContains the goto_menu command. 314*bbf21555SRichard Lowe.It Pa /boot/forth/menusets.4th 315*bbf21555SRichard Lowe.Nm 316*bbf21555SRichard Loweitself. 317*bbf21555SRichard Lowe.It Pa /boot/loader.rc 318*bbf21555SRichard Lowe.Xr loader 7 319*bbf21555SRichard Lowebootstrapping script. 320*bbf21555SRichard Lowe.El 321*bbf21555SRichard Lowe.Sh EXAMPLES 322*bbf21555SRichard LoweA simple boot menu with a submenu: 323*bbf21555SRichard Lowe.Pp 324*bbf21555SRichard Lowe.Bd -literal -offset indent -compact 325*bbf21555SRichard Loweinclude /boot/forth/menu.4th 326*bbf21555SRichard Loweinclude /boot/forth/menu-commands.4th 327*bbf21555SRichard Lowemenu-init 328*bbf21555SRichard Loweset menuset1_caption[1]="Boot" 329*bbf21555SRichard Loweset menuset1_command[1]="boot" 330*bbf21555SRichard Loweset menuset1_caption[2]="Submenu..." 331*bbf21555SRichard Loweset menuset1_command[2]="2 goto_menu" 332*bbf21555SRichard Loweset menuset2_caption[1]="Back" 333*bbf21555SRichard Loweset menuset2_command[1]="1 goto_menu" 334*bbf21555SRichard Loweset menuset_initial=2 335*bbf21555SRichard Lowemenuset-loadinitial 336*bbf21555SRichard Lowemenu-display 337*bbf21555SRichard Lowe.Ed 338*bbf21555SRichard Lowe.Pp 339*bbf21555SRichard LoweThe same boot menu with named menusets: 340*bbf21555SRichard Lowe.Pp 341*bbf21555SRichard Lowe.Bd -literal -offset indent -compact 342*bbf21555SRichard Loweinclude /boot/forth/menu.4th 343*bbf21555SRichard Loweinclude /boot/forth/menu-commands.4th 344*bbf21555SRichard Lowemenu-init 345*bbf21555SRichard Loweset menuset_name1=main 346*bbf21555SRichard Loweset mainmenu_caption[1]="Boot" 347*bbf21555SRichard Loweset mainmenu_command[1]="boot" 348*bbf21555SRichard Loweset mainmenu_caption[2]="Submenu..." 349*bbf21555SRichard Loweset mainmenu_command[2]="2 goto_menu" 350*bbf21555SRichard Loweset menuset_name2=sub 351*bbf21555SRichard Loweset submenu_caption[1]="Back" 352*bbf21555SRichard Loweset submenu_command[1]="1 goto_menu" 353*bbf21555SRichard Lowe.Ed 354*bbf21555SRichard Lowe.Sh SEE ALSO 355*bbf21555SRichard Lowe.Xr loader.conf 5 , 356*bbf21555SRichard Lowe.Xr beastie.4th 7 , 357*bbf21555SRichard Lowe.Xr loader 7 , 358*bbf21555SRichard Lowe.Xr loader.4th 7 , 359*bbf21555SRichard Lowe.Xr menu.4th 7 360