aboutsummaryrefslogtreecommitdiff
path: root/sys/boot/forth
diff options
context:
space:
mode:
authorWarner Losh <imp@FreeBSD.org>2017-11-14 23:02:19 +0000
committerWarner Losh <imp@FreeBSD.org>2017-11-14 23:02:19 +0000
commitca987d4641cdcd7f27e153db17c5bf064934faf5 (patch)
tree6c3860e3ba8949be9528d644fbb7fa88d8bbbb79 /sys/boot/forth
parent6eac7115560381ce5c9e2939ab3fce82bb9b6a95 (diff)
Notes
Diffstat (limited to 'sys/boot/forth')
-rw-r--r--sys/boot/forth/Makefile49
-rw-r--r--sys/boot/forth/Makefile.depend11
-rw-r--r--sys/boot/forth/beastie.4th110
-rw-r--r--sys/boot/forth/beastie.4th.8173
-rw-r--r--sys/boot/forth/brand-fbsd.4th46
-rw-r--r--sys/boot/forth/brand.4th74
-rw-r--r--sys/boot/forth/brand.4th.8125
-rw-r--r--sys/boot/forth/check-password.4th179
-rw-r--r--sys/boot/forth/check-password.4th.8167
-rw-r--r--sys/boot/forth/color.4th49
-rw-r--r--sys/boot/forth/color.4th.8116
-rw-r--r--sys/boot/forth/delay.4th119
-rw-r--r--sys/boot/forth/delay.4th.8126
-rw-r--r--sys/boot/forth/efi.4th30
-rw-r--r--sys/boot/forth/frames.4th142
-rw-r--r--sys/boot/forth/loader.4th266
-rw-r--r--sys/boot/forth/loader.4th.8233
-rw-r--r--sys/boot/forth/loader.conf568
-rw-r--r--sys/boot/forth/loader.conf.5330
-rw-r--r--sys/boot/forth/loader.rc23
-rw-r--r--sys/boot/forth/logo-beastie.4th61
-rw-r--r--sys/boot/forth/logo-beastiebw.4th59
-rw-r--r--sys/boot/forth/logo-fbsdbw.4th53
-rw-r--r--sys/boot/forth/logo-orb.4th55
-rw-r--r--sys/boot/forth/logo-orbbw.4th54
-rw-r--r--sys/boot/forth/menu-commands.4th418
-rw-r--r--sys/boot/forth/menu.4th1319
-rw-r--r--sys/boot/forth/menu.4th.8352
-rw-r--r--sys/boot/forth/menu.rc202
-rw-r--r--sys/boot/forth/menusets.4th624
-rw-r--r--sys/boot/forth/menusets.4th.8372
-rw-r--r--sys/boot/forth/pcibios.4th47
-rw-r--r--sys/boot/forth/pnp.4th205
-rw-r--r--sys/boot/forth/screen.4th74
-rw-r--r--sys/boot/forth/shortcuts.4th50
-rw-r--r--sys/boot/forth/support.4th1606
-rw-r--r--sys/boot/forth/version.4th96
-rw-r--r--sys/boot/forth/version.4th.8128
38 files changed, 0 insertions, 8711 deletions
diff --git a/sys/boot/forth/Makefile b/sys/boot/forth/Makefile
deleted file mode 100644
index 74d9ed744322..000000000000
--- a/sys/boot/forth/Makefile
+++ /dev/null
@@ -1,49 +0,0 @@
-# $FreeBSD$
-
-.include <bsd.init.mk>
-
-MAN+= beastie.4th.8 \
- brand.4th.8 \
- check-password.4th.8 \
- color.4th.8 \
- delay.4th.8 \
- loader.conf.5 \
- loader.4th.8 \
- menu.4th.8 \
- menusets.4th.8 \
- version.4th.8
-
-FILES+= beastie.4th
-FILES+= brand.4th
-FILES+= brand-fbsd.4th
-FILES+= check-password.4th
-FILES+= color.4th
-FILES+= delay.4th
-FILES+= efi.4th
-FILES+= frames.4th
-FILES+= loader.4th
-FILES+= logo-beastie.4th
-FILES+= logo-beastiebw.4th
-FILES+= logo-fbsdbw.4th
-FILES+= logo-orb.4th
-FILES+= logo-orbbw.4th
-FILES+= menu.4th
-FILES+= menu-commands.4th
-FILES+= menusets.4th
-FILES+= pcibios.4th
-FILES+= screen.4th
-FILES+= shortcuts.4th
-FILES+= support.4th
-FILES+= version.4th
-FILESDIR_loader.conf= /boot/defaults
-
-# Allow machine specific loader.rc to be installed.
-.for f in loader.rc menu.rc loader.conf
-.if exists(${BOOTSRC}/${MACHINE:C/amd64/i386/}/loader/${f})
-FILES+= ${BOOTSRC}/${MACHINE:C/amd64/i386/}/loader/${f}
-.else
-FILES+= ${f}
-.endif
-.endfor
-
-.include <bsd.prog.mk>
diff --git a/sys/boot/forth/Makefile.depend b/sys/boot/forth/Makefile.depend
deleted file mode 100644
index f80275d86ab1..000000000000
--- a/sys/boot/forth/Makefile.depend
+++ /dev/null
@@ -1,11 +0,0 @@
-# $FreeBSD$
-# Autogenerated - do NOT edit!
-
-DIRDEPS = \
-
-
-.include <dirdeps.mk>
-
-.if ${DEP_RELDIR} == ${_DEP_RELDIR}
-# local dependencies - needed for -jN in clean tree
-.endif
diff --git a/sys/boot/forth/beastie.4th b/sys/boot/forth/beastie.4th
deleted file mode 100644
index 752cce22a4ff..000000000000
--- a/sys/boot/forth/beastie.4th
+++ /dev/null
@@ -1,110 +0,0 @@
-\ Copyright (c) 2003 Scott Long <scottl@FreeBSD.org>
-\ Copyright (c) 2003 Aleksander Fafula <alex@fafula.com>
-\ Copyright (c) 2006-2015 Devin Teske <dteske@FreeBSD.org>
-\ All rights reserved.
-\
-\ Redistribution and use in source and binary forms, with or without
-\ modification, are permitted provided that the following conditions
-\ are met:
-\ 1. Redistributions of source code must retain the above copyright
-\ notice, this list of conditions and the following disclaimer.
-\ 2. Redistributions in binary form must reproduce the above copyright
-\ notice, this list of conditions and the following disclaimer in the
-\ documentation and/or other materials provided with the distribution.
-\
-\ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-\ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-\ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-\ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-\ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-\ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-\ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-\ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-\ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-\ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-\ SUCH DAMAGE.
-\
-\ $FreeBSD$
-
-marker task-beastie.4th
-
-only forth definitions
-
-variable logoX
-variable logoY
-
-\ Initialize logo placement to defaults
-46 logoX !
-4 logoY !
-
-\ This function draws any number of beastie logos at (loader_logo_x,
-\ loader_logo_y) if defined, else (46,4) (to the right of the menu). To choose
-\ your beastie, set the variable `loader_logo' to the respective logo name.
-\
-\ NOTE: Each is defined as a logo function in /boot/logo-${loader_logo}.4th
-\ NOTE: If `/boot/logo-${loader_logo}.4th' does not exist or does not define
-\ a `logo' function, no beastie is drawn.
-\
-: draw-beastie ( -- ) \ at (loader_logo_x,loader_logo_y), else (46,4)
-
- s" loader_logo_x" getenv dup -1 <> if
- ?number 1 = if logoX ! then
- else drop then
- s" loader_logo_y" getenv dup -1 <> if
- ?number 1 = if logoY ! then
- else drop then
-
-
- \ If `logo' is defined, execute it
- s" logo" sfind ( -- xt|0 bool ) if
- logoX @ logoY @ rot execute
- else
- \ Not defined; try-include desired logo file
- drop ( xt = 0 ) \ cruft
- s" loader_logo" getenv dup -1 = over 0= or if
- dup 0= if 2drop else drop then \ getenv result unused
- loader_color? if
- s" try-include /boot/logo-orb.4th"
- else
- s" try-include /boot/logo-orbbw.4th"
- then
- else
- 2drop ( c-addr/u -- ) \ getenv result unused
- s" try-include /boot/logo-${loader_logo}.4th"
- then
- evaluate
- 1 spaces
-
- \ Execute `logo' if defined now
- s" logo" sfind if
- logoX @ logoY @ rot execute
- else drop then
- then
-;
-
-also support-functions
-
-: beastie-start ( -- ) \ starts the menu
- s" beastie_disable" getenv dup -1 <> if
- s" YES" compare-insensitive 0= if
- any_conf_read? if
- load_xen_throw
- load_kernel
- load_modules
- then
- exit \ to autoboot (default)
- then
- else drop then
-
- s" loader_delay" getenv -1 = if
- s" include /boot/menu.rc" evaluate
- else
- drop
- ." Loading Menu (Ctrl-C to Abort)" cr
- s" set delay_command='include /boot/menu.rc'" evaluate
- s" set delay_showdots" evaluate
- delay_execute
- then
-;
-
-only forth definitions
diff --git a/sys/boot/forth/beastie.4th.8 b/sys/boot/forth/beastie.4th.8
deleted file mode 100644
index e99f65474b43..000000000000
--- a/sys/boot/forth/beastie.4th.8
+++ /dev/null
@@ -1,173 +0,0 @@
-.\" Copyright (c) 2011-2012 Devin Teske
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" $FreeBSD$
-.\"
-.Dd January 6, 2016
-.Dt BEASTIE.4TH 8
-.Os
-.Sh NAME
-.Nm beastie.4th
-.Nd FreeBSD ASCII art boot module
-.Sh DESCRIPTION
-The file that goes by the name of
-.Nm
-is a set of commands designed to draw the ASCII art FreeBSD mascot
-\(en known simply as
-.Em beastie
-\(en to the right of the boot loader menu.
-The commands of
-.Nm
-by themselves are not enough for most uses.
-Please refer to the
-examples below for the most common situations, and to
-.Xr loader 8
-for additional commands.
-.Pp
-Before using any of the commands provided in
-.Nm ,
-it must be included
-through the command:
-.Pp
-.Dl include beastie.4th
-.Pp
-This line is present in the default
-.Pa /boot/loader.rc
-file, so it is not needed (and should not be re-issued) in a normal setup.
-.Pp
-The commands provided by it are:
-.Pp
-.Bl -tag -width disable-module_module -compact -offset indent
-.It Ic draw-beastie
-Draws the FreeBSD logo.
-.Pp
-The logo that is drawn is configured by setting the
-.Ic loader_logo
-variable in
-.Xr loader.conf 5
-to one of
-.Dq Li beastie ,
-.Dq Li beastiebw ,
-.Dq Li fbsdbw ,
-.Dq Li orb ,
-and
-.Dq Li orbbw
-(the default).
-.Pp
-The position of the logo can be configured by setting the
-.Ic loader_logo_x
-and
-.Ic loader_logo_y
-variables in
-.Xr loader.conf 5 .
-The default values are 46 (x) and 4 (y).
-.Pp
-.It Ic clear-beastie
-Clears the screen of beastie.
-.Pp
-.It Ic beastie-start
-Initializes the interactive boot loader menu.
-.Pp
-The
-.Ic loader_delay
-variable can be configured in
-.Xr loader.conf 5
-to the number of seconds you would like to delay loading the boot menu.
-During the delay the user can press Ctrl-C to fall back to
-.Ic autoboot
-or ENTER to proceed.
-The default behavior is to not delay.
-.El
-.Pp
-The environment variables that effect its behavior are:
-.Bl -tag -width bootfile -offset indent
-.It Va loader_logo
-Selects the desired logo in the beastie boot menu. Possible values are:
-.Dq Li fbsdbw ,
-.Dq Li beastie ,
-.Dq Li beastiebw ,
-.Dq Li orb ,
-.Dq Li orbbw
-(default), and
-.Dq Li none .
-.It Va loader_logo_x
-Sets the desired column position of the logo. Default is 46.
-.It Va loader_logo_y
-Sets the desired row position of the logo. Default is 4.
-.It Va beastie_disable
-If set to
-.Dq YES ,
-the beastie boot menu will be skipped.
-The beastie boot menu is always skipped if running non-x86 hardware.
-.It Va loader_delay
-If set to a number higher than zero, introduces a delay before starting the
-beastie boot menu. During the delay the user can press either Ctrl-C to skip
-the menu or ENTER to proceed to the menu. The default is to not delay when
-loading the menu.
-.El
-.Sh FILES
-.Bl -tag -width /boot/loader.4th -compact
-.It Pa /boot/loader
-The
-.Xr loader 8 .
-.It Pa /boot/beastie.4th
-.Nm
-itself.
-.It Pa /boot/loader.rc
-.Xr loader 8
-bootstrapping script.
-.El
-.Sh EXAMPLES
-Standard i386
-.Pa /boot/loader.rc :
-.Pp
-.Bd -literal -offset indent -compact
-include /boot/beastie.4th
-beastie-start
-.Ed
-.Pp
-Set a different logo in
-.Xr loader.conf 5 :
-.Pp
-.Bd -literal -offset indent -compact
-loader_logo="beastie"
-.Ed
-.Sh SEE ALSO
-.Xr loader.conf 5 ,
-.Xr loader 8 ,
-.Xr loader.4th 8
-.Sh HISTORY
-The
-.Nm
-set of commands first appeared in
-.Fx 5.1 .
-.Sh AUTHORS
-The
-.Nm
-set of commands was written by
-.An -nosplit
-.An Scott Long Aq scottl@FreeBSD.org ,
-.An Aleksander Fafula Aq alex@fafula.com
-and
-.An Devin Teske Aq dteske@FreeBSD.org .
diff --git a/sys/boot/forth/brand-fbsd.4th b/sys/boot/forth/brand-fbsd.4th
deleted file mode 100644
index 9cd017f84a3f..000000000000
--- a/sys/boot/forth/brand-fbsd.4th
+++ /dev/null
@@ -1,46 +0,0 @@
-\ Copyright (c) 2006-2015 Devin Teske <dteske@FreeBSD.org>
-\ All rights reserved.
-\
-\ Redistribution and use in source and binary forms, with or without
-\ modification, are permitted provided that the following conditions
-\ are met:
-\ 1. Redistributions of source code must retain the above copyright
-\ notice, this list of conditions and the following disclaimer.
-\ 2. Redistributions in binary form must reproduce the above copyright
-\ notice, this list of conditions and the following disclaimer in the
-\ documentation and/or other materials provided with the distribution.
-\
-\ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-\ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-\ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-\ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-\ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-\ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-\ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-\ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-\ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-\ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-\ SUCH DAMAGE.
-\
-\ $FreeBSD$
-
-2 brandX ! 1 brandY ! \ Initialize brand placement defaults
-
-: brand+ ( x y c-addr/u -- x y' )
- 2swap 2dup at-xy 2swap \ position the cursor
- type \ print to the screen
- 1+ \ increase y for next time we're called
-;
-
-: brand ( x y -- ) \ "FreeBSD" [wide] logo in B/W (7 rows x 42 columns)
-
- s" ______ ____ _____ _____ " brand+
- s" | ____| | _ \ / ____| __ \ " brand+
- s" | |___ _ __ ___ ___ | |_) | (___ | | | |" brand+
- s" | ___| '__/ _ \/ _ \| _ < \___ \| | | |" brand+
- s" | | | | | __/ __/| |_) |____) | |__| |" brand+
- s" | | | | | | || | | |" brand+
- s" |_| |_| \___|\___||____/|_____/|_____/ " brand+
-
- 2drop
-;
diff --git a/sys/boot/forth/brand.4th b/sys/boot/forth/brand.4th
deleted file mode 100644
index 39a9bfae753c..000000000000
--- a/sys/boot/forth/brand.4th
+++ /dev/null
@@ -1,74 +0,0 @@
-\ Copyright (c) 2006-2015 Devin Teske <dteske@FreeBSD.org>
-\ All rights reserved.
-\
-\ Redistribution and use in source and binary forms, with or without
-\ modification, are permitted provided that the following conditions
-\ are met:
-\ 1. Redistributions of source code must retain the above copyright
-\ notice, this list of conditions and the following disclaimer.
-\ 2. Redistributions in binary form must reproduce the above copyright
-\ notice, this list of conditions and the following disclaimer in the
-\ documentation and/or other materials provided with the distribution.
-\
-\ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-\ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-\ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-\ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-\ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-\ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-\ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-\ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-\ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-\ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-\ SUCH DAMAGE.
-\
-\ $FreeBSD$
-
-marker task-brand.4th
-
-variable brandX
-variable brandY
-
-\ Initialize brand placement to defaults
-2 brandX !
-1 brandY !
-
-\ This function draws any number of company brands at (loader_brand_x,
-\ loader_brand_y) if defined, or (2,1) (top-left). To choose your brand, set
-\ the variable `loader_brand' to the respective brand name.
-\
-\ NOTE: Each is defined as a brand function in /boot/brand-${loader_brand}.4th
-\ NOTE: If `/boot/brand-${loader_brand}.4th' does not exist or does not define
-\ a `brand' function, no brand is drawn.
-\
-: draw-brand ( -- ) \ at (loader_brand_x,loader_brand_y), else (2,1)
-
- s" loader_brand_x" getenv dup -1 <> if
- ?number 1 = if brandX ! then
- else drop then
- s" loader_brand_y" getenv dup -1 <> if
- ?number 1 = if brandY ! then
- else drop then
-
- \ If `brand' is defined, execute it
- s" brand" sfind ( -- xt|0 bool ) if
- brandX @ brandY @ rot execute
- else
- \ Not defined; try-include desired brand file
- drop ( xt = 0 ) \ cruft
- s" loader_brand" getenv dup -1 = over 0= or if
- dup 0= if 2drop else drop then \ getenv result unused
- s" try-include /boot/brand-fbsd.4th"
- else
- 2drop ( c-addr/u -- ) \ getenv result unused
- s" try-include /boot/brand-${loader_brand}.4th"
- then
- evaluate
- 1 spaces
-
- \ Execute `brand' if defined now
- s" brand" sfind if
- brandX @ brandY @ rot execute
- else drop then
- then
-;
diff --git a/sys/boot/forth/brand.4th.8 b/sys/boot/forth/brand.4th.8
deleted file mode 100644
index dfd188d0ff84..000000000000
--- a/sys/boot/forth/brand.4th.8
+++ /dev/null
@@ -1,125 +0,0 @@
-.\" Copyright (c) 2011 Devin Teske
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" $FreeBSD$
-.\"
-.Dd May 18, 2011
-.Dt BRAND.4TH 8
-.Os
-.Sh NAME
-.Nm brand.4th
-.Nd FreeBSD ASCII art boot module
-.Sh DESCRIPTION
-The file that goes by the name of
-.Nm
-is a set of commands designed to draw the ASCII art BSD brand above the boot
-loader menu.
-The commands of
-.Nm
-by themselves are not enough for most uses.
-Please refer to the
-examples below for the most common situations, and to
-.Xr loader 8
-for additional commands.
-.Pp
-Before using any of the commands provided in
-.Nm ,
-it must be included
-through the command:
-.Pp
-.Dl include brand.4th
-.Pp
-This line is present in the default
-.Pa /boot/menu.rc
-file, so it is not needed (and should not be re-issued) in a normal setup.
-.Pp
-The commands provided by it are:
-.Pp
-.Bl -tag -width disable-module_module -compact -offset indent
-.It Ic draw-brand
-Draws the BSD brand.
-.Pp
-The brand that is drawn is configured by setting the
-.Ic loader_brand
-variable in
-.Xr loader.conf 5
-to one of
-.Dq Li fbsd
-(the default) or
-.Dq Li none .
-.Pp
-The position of the logo can be configured by setting the
-.Ic loader_brand_x
-and
-.Ic loader_brand_y
-variables in
-.Xr loader.conf 5 .
-The default values are 2 (x) and 1 (y).
-.El
-.Pp
-The environment variables that effect its behavior are:
-.Bl -tag -width bootfile -offset indent
-.It Va loader_brand
-Selects the desired brand in the beastie boot menu. Possible values are:
-.Dq Li fbsd
-(default) or
-.Dq Li none .
-.It Va loader_brand_x
-Sets the desired column position of the brand. Default is 2.
-.It Va loader_brand_y
-Sets the desired row position of the brand. Default is 1.
-.El
-.Sh FILES
-.Bl -tag -width /boot/loader.4th -compact
-.It Pa /boot/loader
-The
-.Xr loader 8 .
-.It Pa /boot/brand.4th
-.Nm
-itself.
-.It Pa /boot/loader.rc
-.Xr loader 8
-bootstrapping script.
-.El
-.Sh EXAMPLES
-Set FreeBSD brand in
-.Xr loader.conf 5 :
-.Pp
-.Bd -literal -offset indent -compact
-loader_brand="fbsd"
-.Ed
-.Sh SEE ALSO
-.Xr loader.conf 5 ,
-.Xr loader 8
-.Sh HISTORY
-The
-.Nm
-set of commands first appeared in
-.Fx 9.0 .
-.Sh AUTHORS
-The
-.Nm
-set of commands was written by
-.An -nosplit
-.An Devin Teske Aq dteske@FreeBSD.org .
diff --git a/sys/boot/forth/check-password.4th b/sys/boot/forth/check-password.4th
deleted file mode 100644
index d41777c8bd2a..000000000000
--- a/sys/boot/forth/check-password.4th
+++ /dev/null
@@ -1,179 +0,0 @@
-\ Copyright (c) 2006-2015 Devin Teske <dteske@FreeBSD.org>
-\ All rights reserved.
-\
-\ Redistribution and use in source and binary forms, with or without
-\ modification, are permitted provided that the following conditions
-\ are met:
-\ 1. Redistributions of source code must retain the above copyright
-\ notice, this list of conditions and the following disclaimer.
-\ 2. Redistributions in binary form must reproduce the above copyright
-\ notice, this list of conditions and the following disclaimer in the
-\ documentation and/or other materials provided with the distribution.
-\
-\ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-\ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-\ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-\ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-\ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-\ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-\ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-\ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-\ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-\ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-\ SUCH DAMAGE.
-\
-\ $FreeBSD$
-
-marker task-check-password.4th
-
-include /boot/screen.4th
-
-vocabulary password-processing
-only forth also password-processing definitions
-
-13 constant enter_key \ The decimal ASCII value for Enter key
-8 constant bs_key \ The decimal ASCII value for Backspace key
-21 constant ctrl_u \ The decimal ASCII value for Ctrl-U sequence
-255 constant readmax \ Maximum number of characters for the password
-
-variable read-tick \ Twiddle position (used by read)
-variable read-start \ Starting X offset (column)(used by read)
-
-create readval readmax allot \ input obtained (up to readmax characters)
-variable readlen \ input length
-
-\ This function blocks program flow (loops forever) until a key is pressed.
-\ The key that was pressed is added to the top of the stack in the form of its
-\ decimal ASCII representation. Note: the stack cannot be empty when this
-\ function starts or an underflow exception will occur. Simplest way to prevent
-\ this is to pass 0 as a stack parameter (ie. `0 sgetkey'). This function is
-\ called by the read function. You need not call it directly. NOTE: arrow keys
-\ show as 0 on the stack
-\
-: sgetkey ( -- )
-
- begin \ Loop forever
- key? if \ Was a key pressed? (see loader(8))
- drop \ Remove stack-cruft
- key \ Get the key that was pressed
-
- \ Check key pressed (see loader(8)) and input limit
- dup 0<> if ( and ) readlen @ readmax < if
- \ Spin the twiddle and then exit this function
- read-tick @ dup 1+ 4 mod read-tick !
- 2 spaces
- dup 0 = if ( 1 ) ." /" else
- dup 1 = if ( 2 ) ." -" else
- dup 2 = if ( 3 ) ." \" else
- dup 3 = if ( 4 ) ." |" else
- 1 spaces
- then then then then drop
- read-start @ 25 at-xy
- exit
- then then
-
- \ Always allow Backspace, Enter, and Ctrl-U
- dup bs_key = if exit then
- dup enter_key = if exit then
- dup ctrl_u = if exit then
- then
- 50 ms \ Sleep for 50 milliseconds (see loader(8))
- again
-;
-
-: cfill ( c c-addr/u -- )
- begin dup 0> while
- -rot 2dup c! 1+ rot 1-
- repeat 2drop drop
-;
-
-: read-reset ( -- )
- 0 readlen !
- 0 readval readmax cfill
-;
-
-: read ( c-addr/u -- ) \ Expects string prompt as stack input
-
- 0 25 at-xy \ Move the cursor to the bottom-left
- dup 1+ read-start ! \ Store X offset after the prompt
- 0 readlen ! \ Initialize the read length
- type \ Print the prompt
-
- begin \ Loop forever
-
- 0 sgetkey \ Block here, waiting for a key to be pressed
-
- \ We are not going to echo the password to the screen (for
- \ security reasons). If Enter is pressed, we process the
- \ password, otherwise augment the key to a string.
-
- dup enter_key = if
- drop \ Clean up stack cruft
- 3 spaces \ Erase the twiddle
- 10 emit \ Echo new line
- exit
- else dup ctrl_u = if
- 3 spaces read-start @ 25 at-xy \ Erase the twiddle
- 0 readlen ! \ Reset input to NULL
- else dup bs_key = if
- readlen @ 1 - dup readlen ! \ Decrement input length
- dup 0< if drop 0 dup readlen ! then \ Don't go negative
- 0= if 3 spaces read-start @ 25 at-xy then \ Twiddle
- else dup \ Store the character
- \ NB: sgetkey prevents overflow by way of blocking
- \ at readmax except for Backspace or Enter
- readlen @ 1+ dup readlen ! 1- readval + c!
- then then then
-
- drop \ last key pressed
- again \ Enter was not pressed; repeat
-;
-
-only forth definitions also password-processing
-
-: check-password ( -- )
-
- \ Do not allow the user to proceed beyond this point if a boot-lock
- \ password has been set (preventing even boot from proceeding)
- s" bootlock_password" getenv dup -1 <> if
- dup readmax > if drop readmax then
- begin
- s" Boot Password: " read ( prompt -- )
- 2dup readval readlen @ compare 0<>
- while
- 3000 ms ." loader: incorrect password" 10 emit
- repeat
- 2drop read-reset
- else drop then
-
- \ Prompt for GEOM ELI (geli(8)) passphrase if enabled
- s" geom_eli_passphrase_prompt" getenv dup -1 <> if
- s" YES" compare-insensitive 0= if
- s" GELI Passphrase: " read ( prompt -- )
- readval readlen @ s" kern.geom.eli.passphrase" setenv
- read-reset
- then
- else drop then
-
- \ Exit if a password was not set
- s" password" getenv -1 = if exit else drop then
-
- \ We should prevent the user from visiting the menu or dropping to the
- \ interactive loader(8) prompt, but still allow the machine to boot...
-
- 0 autoboot
-
- \ Only reached if autoboot fails for any reason (including if/when
- \ the user aborts/escapes the countdown sequence leading to boot).
-
- s" password" getenv dup readmax > if drop readmax then
- begin
- s" Password: " read ( prompt -- )
- 2dup readval readlen @ compare 0= if \ Correct password?
- 2drop read-reset exit
- then
- 3000 ms ." loader: incorrect password" 10 emit
- again
-;
-
-only forth definitions
diff --git a/sys/boot/forth/check-password.4th.8 b/sys/boot/forth/check-password.4th.8
deleted file mode 100644
index db0aa4bc6bc4..000000000000
--- a/sys/boot/forth/check-password.4th.8
+++ /dev/null
@@ -1,167 +0,0 @@
-.\" Copyright (c) 2011-2015 Devin Teske
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" $FreeBSD$
-.\"
-.Dd March 20, 2015
-.Dt CHECK-PASSWORD.4TH 8
-.Os
-.Sh NAME
-.Nm check-password.4th
-.Nd FreeBSD password-checking boot module
-.Sh DESCRIPTION
-The file that goes by the name of
-.Nm
-is a set of commands designed to do one or more of the following:
-.Pp
-.Dl o Prevent booting without password
-.Dl o Prevent modification of boot options without password
-.Dl o Provide a password to mount geli(8) encrypted root disk(s)
-.Pp
-The commands of
-.Nm
-by themselves are not enough for most uses.
-Please refer to the
-examples below for the most common situations, and to
-.Xr loader 8
-for additional commands.
-.Pp
-Before using any of the commands provided in
-.Nm ,
-it must be included
-through the command:
-.Pp
-.Dl include check-password.4th
-.Pp
-This line is present in
-.Pa /boot/loader.4th
-file, so it is not needed (and should not be re-issued) in a normal setup.
-.Pp
-The commands provided by it are:
-.Pp
-.Bl -tag -width disable-module_module -compact -offset indent
-.It Ic check-password
-Multi-purpose function that can protect the interactive boot menu,
-prevent boot without password, or prompt for geli(8) passphrase
-.Pq depending on Xr loader.conf 5 settings .
-.Pp
-First checks
-.Va bootlock_password
-and if-set, the user cannot continue until the correct password is entered.
-.Pp
-Next, checks
-.Va geom_eli_passphrase_prompt
-and if set to
-.Li YES
-.Pq case-insensitive
-prompts the user to enter their GELI password for later mounting of the root
-device(s) during boot.
-.Pp
-Last, checks
-.Va password
-and if-set, tries to
-.Ic autoboot
-and only prompts for password on failure or user-interrupt.
-See
-.Xr loader.conf 5
-for additional information.
-.El
-.Pp
-The environment variables that effect its behavior are:
-.Bl -tag -width bootlock_password -offset indent
-.It Va bootlock_password
-Sets the bootlock password (up to 16 characters long) that is required by
-.Ic check-password
-to be entered before the system is allowed to boot.
-.It Va geom_eli_passphrase_prompt
-Selects whether loader(8) will prompt for GELI credentials, handing-off to the
-kernel for later mounting of
-.Xr geli 8
-encrypted root device(s).
-.It Va password
-Sets the password (up to 16 characters long) that is required by
-.Ic check-password
-before the user is allowed to visit the boot menu.
-.El
-.Sh FILES
-.Bl -tag -width /boot/check-password.4th -compact
-.It Pa /boot/loader
-The
-.Xr loader 8 .
-.It Pa /boot/check-password.4th
-.Nm
-itself.
-.It Pa /boot/loader.rc
-.Xr loader 8
-bootstrapping script.
-.El
-.Sh EXAMPLES
-Standard i386
-.Pa /boot/loader.rc :
-.Pp
-.Bd -literal -offset indent -compact
-include /boot/loader.4th
-check-password
-.Ed
-.Pp
-Set a password in
-.Xr loader.conf 5
-to prevent modification of boot options:
-.Pp
-.Bd -literal -offset indent -compact
-password="abc123"
-.Ed
-.Pp
-Set a password in
-.Xr loader.conf 5
-to prevent booting without password:
-.Pp
-.Bd -literal -offset indent -compact
-bootlock_password="boot"
-.Ed
-.Pp
-Add the following to
-.Xr loader.conf 5
-to generate a prompt at boot to collect GELI credentials for mounting
-.Xr geli 8
-encrypted root device(s):
-.Pp
-.Bd -literal -offset indent -compact
-geom_eli_passphrase_prompt="YES"
-.Ed
-.Sh SEE ALSO
-.Xr loader.conf 5 ,
-.Xr loader 8 ,
-.Xr loader.4th 8
-.Sh HISTORY
-The
-.Nm
-set of commands first appeared in
-.Fx 9.0 .
-.Sh AUTHORS
-The
-.Nm
-set of commands was written by
-.An -nosplit
-.An Devin Teske Aq dteske@FreeBSD.org .
diff --git a/sys/boot/forth/color.4th b/sys/boot/forth/color.4th
deleted file mode 100644
index 65e6de905ac6..000000000000
--- a/sys/boot/forth/color.4th
+++ /dev/null
@@ -1,49 +0,0 @@
-\ Copyright (c) 2011-2013 Devin Teske <dteske@FreeBSD.org>
-\ All rights reserved.
-\
-\ Redistribution and use in source and binary forms, with or without
-\ modification, are permitted provided that the following conditions
-\ are met:
-\ 1. Redistributions of source code must retain the above copyright
-\ notice, this list of conditions and the following disclaimer.
-\ 2. Redistributions in binary form must reproduce the above copyright
-\ notice, this list of conditions and the following disclaimer in the
-\ documentation and/or other materials provided with the distribution.
-\
-\ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-\ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-\ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-\ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-\ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-\ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-\ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-\ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-\ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-\ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-\ SUCH DAMAGE.
-\
-\ $FreeBSD$
-
-marker task-color.4th
-
-\ This function returns FALSE if the `loader_color' environment variable is set
-\ to NO, no, or 0. Otherwise, TRUE is returned (unless booting serial).
-\
-: loader_color? ( -- N )
-
- s" loader_color" getenv dup -1 <> if
-
- 2dup s" NO" compare-insensitive 0= if
- 2drop
- FALSE exit
- then
- 2dup s" 0" compare 0= if
- 2drop
- FALSE exit
- then
- drop
- then
- drop
-
- boot_serial? if FALSE else TRUE then
-;
diff --git a/sys/boot/forth/color.4th.8 b/sys/boot/forth/color.4th.8
deleted file mode 100644
index 9191da0f0457..000000000000
--- a/sys/boot/forth/color.4th.8
+++ /dev/null
@@ -1,116 +0,0 @@
-.\" Copyright (c) 2011-2013 Devin Teske
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" $FreeBSD$
-.\"
-.Dd August 6, 2013
-.Dt COLOR.4TH 8
-.Os
-.Sh NAME
-.Nm color.4th
-.Nd FreeBSD color-detection boot module
-.Sh DESCRIPTION
-The file that goes by the name of
-.Nm
-is a set of commands designed to simplify color logic.
-The commands of
-.Nm
-by themselves are not enough for most uses.
-Please refer to the
-examples below for the most common situations, and to
-.Xr loader 8
-for additional commands.
-.Pp
-Before using any of the commands provided in
-.Nm ,
-it must be included
-through the command:
-.Pp
-.Dl include color.4th
-.Pp
-This line is present in
-.Pa /boot/loader.4th
-file, so it is not needed (and should not be re-issued) in a normal setup.
-.Pp
-The commands provided by it are:
-.Pp
-.Bl -tag -width disable-module_module -compact -offset indent
-.It Ic loader_color?
-Returns FALSE if the
-.Ic loader_color
-environment variable is set to
-.Dq NO
-(case-insensitive) or
-.Dq 0 .
-Otherwise returns TRUE
-.Pq unless booting serial .
-.El
-.Pp
-The environment variables that effect its behavior are:
-.Bl -tag -width bootfile -offset indent
-.It Va loader_color
-If set to
-.Dq NO
-(case-insensitive) or
-.Dq 0 ,
-causes
-.Ic loader_color?
-to return FALSE, indicating to many modules that color should not be used.
-.El
-.Sh FILES
-.Bl -tag -width /boot/loader.4th -compact
-.It Pa /boot/loader
-The
-.Xr loader 8 .
-.It Pa /boot/color.4th
-.Nm
-itself.
-.It Pa /boot/loader.rc
-.Xr loader 8
-bootstrapping script.
-.El
-.Sh EXAMPLES
-Standard i386
-.Pa /boot/loader.rc :
-.Pp
-Use color where applicable:
-.Pp
-.Bd -literal -offset indent -compact
-loader_color="YES"
-.Ed
-.Sh SEE ALSO
-.Xr loader.conf 5 ,
-.Xr loader 8 ,
-.Xr loader.4th 8
-.Sh HISTORY
-The
-.Nm
-set of commands first appeared in
-.Fx 9.0 .
-.Sh AUTHORS
-The
-.Nm
-set of commands was written by
-.An -nosplit
-.An Devin Teske Aq dteske@FreeBSD.org .
diff --git a/sys/boot/forth/delay.4th b/sys/boot/forth/delay.4th
deleted file mode 100644
index 28cfa5c26eb9..000000000000
--- a/sys/boot/forth/delay.4th
+++ /dev/null
@@ -1,119 +0,0 @@
-\ Copyright (c) 2008-2015 Devin Teske <dteske@FreeBSD.org>
-\ All rights reserved.
-\
-\ Redistribution and use in source and binary forms, with or without
-\ modification, are permitted provided that the following conditions
-\ are met:
-\ 1. Redistributions of source code must retain the above copyright
-\ notice, this list of conditions and the following disclaimer.
-\ 2. Redistributions in binary form must reproduce the above copyright
-\ notice, this list of conditions and the following disclaimer in the
-\ documentation and/or other materials provided with the distribution.
-\
-\ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-\ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-\ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-\ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-\ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-\ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-\ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-\ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-\ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-\ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-\ SUCH DAMAGE.
-\
-\ $FreeBSD$
-
-marker task-delay.4th
-
-vocabulary delay-processing
-only forth also delay-processing definitions
-
-2 constant delay_default \ Default delay (in seconds)
-3 constant etx_key \ End-of-Text character produced by Ctrl+C
-13 constant enter_key \ Carriage-Return character produce by ENTER
-27 constant esc_key \ Escape character produced by ESC or Ctrl+[
-
-variable delay_tstart \ state variable used for delay timing
-variable delay_delay \ determined configurable delay duration
-variable delay_cancelled \ state variable for user cancellation
-variable delay_showdots \ whether continually print dots while waiting
-
-only forth definitions also delay-processing
-
-: delay_execute ( -- )
-
- \ make sure that we have a command to execute
- s" delay_command" getenv dup -1 = if
- drop exit
- then
-
- \ read custom time-duration (if set)
- s" loader_delay" getenv dup -1 = if
- drop \ no custom duration (remove dup'd bunk -1)
- delay_default \ use default setting (replacing bunk -1)
- else
- \ make sure custom duration is a number
- ?number 0= if
- delay_default \ use default if otherwise
- then
- then
-
- \ initialize state variables
- delay_delay ! \ stored value is on the stack from above
- seconds delay_tstart ! \ store the time we started
- 0 delay_cancelled ! \ boolean flag indicating user-cancelled event
-
- false delay_showdots ! \ reset to zero and read from environment
- s" delay_showdots" getenv dup -1 <> if
- 2drop \ don't need the value, just existence
- true delay_showdots !
- else
- drop
- then
-
- \ Loop until we have exceeded the desired time duration
- begin
- 25 ms \ sleep for 25 milliseconds (40 iterations/sec)
-
- \ throw some dots up on the screen if desired
- delay_showdots @ if
- ." ." \ dots visually aid in the perception of time
- then
-
- \ was a key depressed?
- key? if
- key \ obtain ASCII value for keystroke
- dup enter_key = if
- -1 delay_delay ! \ break loop
- then
- dup etx_key = swap esc_key = OR if
- -1 delay_delay ! \ break loop
- -1 delay_cancelled ! \ set cancelled flag
- then
- then
-
- \ if the time duration is set to zero, loop forever
- \ waiting for either ENTER or Ctrl-C/Escape to be pressed
- delay_delay @ 0> if
- \ calculate elapsed time
- seconds delay_tstart @ - delay_delay @ >
- else
- -1 \ break loop
- then
- until
-
- \ if we were throwing up dots, throw up a line-break
- delay_showdots @ if
- cr
- then
-
- \ did the user press either Ctrl-C or Escape?
- delay_cancelled @ if
- 2drop \ we don't need the command string anymore
- else
- evaluate \ evaluate/execute the command string
- then
-;
-
-only forth definitions
diff --git a/sys/boot/forth/delay.4th.8 b/sys/boot/forth/delay.4th.8
deleted file mode 100644
index af31fd04bad6..000000000000
--- a/sys/boot/forth/delay.4th.8
+++ /dev/null
@@ -1,126 +0,0 @@
-.\" Copyright (c) 2011 Devin Teske
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" $FreeBSD$
-.\"
-.Dd May 18, 2011
-.Dt DELAY.4TH 8
-.Os
-.Sh NAME
-.Nm delay.4th
-.Nd FreeBSD debugging boot module
-.Sh DESCRIPTION
-The file that goes by the name of
-.Nm
-is a set of commands designed to add debugging capabilities to
-.Xr loader 8 .
-The commands of
-.Nm
-by themselves are not enough for most uses.
-Please refer to the
-examples below for the most common situations, and to
-.Xr loader 8
-for additional commands.
-.Pp
-Before using any of the commands provided in
-.Nm ,
-it must be included
-through the command:
-.Pp
-.Dl include delay.4th
-.Pp
-This line is present in
-.Pa /boot/beastie.4th
-file, so it is not needed (and should not be re-issued) in a normal setup.
-.Pp
-The commands provided by it are:
-.Pp
-.Bl -tag -width disable-module_module -compact -offset indent
-.It Ic delay_execute
-Executes the [string] procedure stored in the
-.Ic delay_command
-environment variable after
-.Ic loader_delay
-seconds.
-.Pp
-If the optional
-.Ic delay_showdots
-environment variable is set, a continuous series of dots is printed.
-.Pp
-During the duration, the user can either press Ctrl-C (or Esc) to abort or
-ENTER to proceed immediately.
-.El
-.Pp
-The environment variables that effect its behavior are:
-.Bl -tag -width bootfile -offset indent
-.It Va delay_command
-The command to be executed by
-.Ic delay_execute .
-.It Va loader_delay
-The duration (in seconds) to delay before executing
-.Ic delay_command .
-.It Va delay_showdots
-If set, will cause
-.Ic delay_execute
-to print a continuous series of dots during the delay duration.
-.El
-.Sh FILES
-.Bl -tag -width /boot/loader.4th -compact
-.It Pa /boot/loader
-The
-.Xr loader 8 .
-.It Pa /boot/delay.4th
-.Nm
-itself.
-.It Pa /boot/loader.rc
-.Xr loader 8
-bootstrapping script.
-.El
-.Sh EXAMPLES
-Introducing a 5-second delay before including another file from
-.Pa /boot/loader.rc :
-.Pp
-.Bd -literal -offset indent -compact
-include /boot/delay.4th
-set delay_command="include /boot/other.4th"
-set delay_showdots
-set loader_delay=5
-delay_execute
-.Ed
-.Sh SEE ALSO
-.Xr loader.conf 5 ,
-.Xr beastie.4th 8 ,
-.Xr loader 8 ,
-.Xr loader.4th 8
-.Sh HISTORY
-The
-.Nm
-set of commands first appeared in
-.Fx 9.0 .
-.Sh AUTHORS
-The
-.Nm
-set of commands was written by
-.An -nosplit
-.An Devin Teske Aq dteske@FreeBSD.org .
diff --git a/sys/boot/forth/efi.4th b/sys/boot/forth/efi.4th
deleted file mode 100644
index 7c1bdf30b8e1..000000000000
--- a/sys/boot/forth/efi.4th
+++ /dev/null
@@ -1,30 +0,0 @@
-\ Copyright (c) 2016 Netflix, Inc
-\ All rights reserved.
-\
-\ Redistribution and use in source and binary forms, with or without
-\ modification, are permitted provided that the following conditions
-\ are met:
-\ 1. Redistributions of source code must retain the above copyright
-\ notice, this list of conditions and the following disclaimer.
-\ 2. Redistributions in binary form must reproduce the above copyright
-\ notice, this list of conditions and the following disclaimer in the
-\ documentation and/or other materials provided with the distribution.
-\
-\ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-\ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-\ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-\ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-\ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-\ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-\ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-\ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-\ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-\ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-\ SUCH DAMAGE.
-\
-\ $FreeBSD$
-
-only forth definitions
-
-\ Place holder for more functions
-.( EFI boot environment) cr
diff --git a/sys/boot/forth/frames.4th b/sys/boot/forth/frames.4th
deleted file mode 100644
index b237afe7ac43..000000000000
--- a/sys/boot/forth/frames.4th
+++ /dev/null
@@ -1,142 +0,0 @@
-\ Copyright (c) 2003 Scott Long <scottl@FreeBSD.org>
-\ Copyright (c) 2012-2015 Devin Teske <dteske@FreeBSD.org>
-\ All rights reserved.
-\
-\ Redistribution and use in source and binary forms, with or without
-\ modification, are permitted provided that the following conditions
-\ are met:
-\ 1. Redistributions of source code must retain the above copyright
-\ notice, this list of conditions and the following disclaimer.
-\ 2. Redistributions in binary form must reproduce the above copyright
-\ notice, this list of conditions and the following disclaimer in the
-\ documentation and/or other materials provided with the distribution.
-\
-\ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-\ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-\ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-\ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-\ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-\ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-\ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-\ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-\ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-\ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-\ SUCH DAMAGE.
-\
-\ $FreeBSD$
-
-marker task-frames.4th
-
-vocabulary frame-drawing
-only forth also frame-drawing definitions
-
-\ XXX Filled boxes are left as an exercise for the reader... ;-/
-
-variable h_el
-variable v_el
-variable lt_el
-variable lb_el
-variable rt_el
-variable rb_el
-variable fill
-
-\ ASCII frames (used when serial console is detected)
- 45 constant ascii_dash
- 61 constant ascii_equal
-124 constant ascii_pipe
- 43 constant ascii_plus
-
-\ Single frames
-196 constant sh_el
-179 constant sv_el
-218 constant slt_el
-192 constant slb_el
-191 constant srt_el
-217 constant srb_el
-\ Double frames
-205 constant dh_el
-186 constant dv_el
-201 constant dlt_el
-200 constant dlb_el
-187 constant drt_el
-188 constant drb_el
-\ Fillings
-0 constant fill_none
-32 constant fill_blank
-176 constant fill_dark
-177 constant fill_med
-178 constant fill_bright
-
-only forth definitions also frame-drawing
-
-: hline ( len x y -- ) \ Draw horizontal single line
- at-xy \ move cursor
- 0 do
- h_el @ emit
- loop
-;
-
-: f_ascii ( -- ) ( -- ) \ set frames to ascii
- ascii_dash h_el !
- ascii_pipe v_el !
- ascii_plus lt_el !
- ascii_plus lb_el !
- ascii_plus rt_el !
- ascii_plus rb_el !
-;
-
-: f_single ( -- ) \ set frames to single
- boot_serial? if f_ascii exit then
- sh_el h_el !
- sv_el v_el !
- slt_el lt_el !
- slb_el lb_el !
- srt_el rt_el !
- srb_el rb_el !
-;
-
-: f_double ( -- ) \ set frames to double
- boot_serial? if
- f_ascii
- ascii_equal h_el !
- exit
- then
- dh_el h_el !
- dv_el v_el !
- dlt_el lt_el !
- dlb_el lb_el !
- drt_el rt_el !
- drb_el rb_el !
-;
-
-: vline ( len x y -- ) \ Draw vertical single line
- 2dup 4 pick
- 0 do
- at-xy
- v_el @ emit
- 1+
- 2dup
- loop
- 2drop 2drop drop
-;
-
-: box ( w h x y -- ) \ Draw a box
- 2dup 1+ 4 pick 1- -rot
- vline \ Draw left vert line
- 2dup 1+ swap 5 pick + swap 4 pick 1- -rot
- vline \ Draw right vert line
- 2dup swap 1+ swap 5 pick 1- -rot
- hline \ Draw top horiz line
- 2dup swap 1+ swap 4 pick + 5 pick 1- -rot
- hline \ Draw bottom horiz line
- 2dup at-xy lt_el @ emit \ Draw left-top corner
- 2dup 4 pick + at-xy lb_el @ emit \ Draw left bottom corner
- 2dup swap 5 pick + swap at-xy rt_el @ emit \ Draw right top corner
- 2 pick + swap 3 pick + swap at-xy rb_el @ emit
- 2drop
-;
-
-f_single
-fill_none fill !
-
-only forth definitions
diff --git a/sys/boot/forth/loader.4th b/sys/boot/forth/loader.4th
deleted file mode 100644
index 9486237b8a93..000000000000
--- a/sys/boot/forth/loader.4th
+++ /dev/null
@@ -1,266 +0,0 @@
-\ Copyright (c) 1999 Daniel C. Sobral <dcs@FreeBSD.org>
-\ Copyright (c) 2011-2015 Devin Teske <dteske@FreeBSD.org>
-\ All rights reserved.
-\
-\ Redistribution and use in source and binary forms, with or without
-\ modification, are permitted provided that the following conditions
-\ are met:
-\ 1. Redistributions of source code must retain the above copyright
-\ notice, this list of conditions and the following disclaimer.
-\ 2. Redistributions in binary form must reproduce the above copyright
-\ notice, this list of conditions and the following disclaimer in the
-\ documentation and/or other materials provided with the distribution.
-\
-\ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-\ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-\ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-\ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-\ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-\ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-\ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-\ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-\ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-\ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-\ SUCH DAMAGE.
-\
-\ $FreeBSD$
-
-only forth definitions
-
-s" arch-i386" environment? [if] [if]
- s" loader_version" environment? [if]
- 11 < [if]
- .( Loader version 1.1+ required) cr
- abort
- [then]
- [else]
- .( Could not get loader version!) cr
- abort
- [then]
-[then] [then]
-
-256 dictthreshold ! \ 256 cells minimum free space
-2048 dictincrease ! \ 2048 additional cells each time
-
-include /boot/support.4th
-include /boot/color.4th
-include /boot/delay.4th
-include /boot/check-password.4th
-s" efi-version" getenv? [if]
- include /boot/efi.4th
-[then]
-
-only forth definitions
-
-: bootmsg ( -- )
- loader_color? dup ( -- bool bool )
- if 7 fg 4 bg then
- ." Booting..."
- if me then
- cr
-;
-
-: try-menu-unset
- \ menu-unset may not be present
- s" beastie_disable" getenv
- dup -1 <> if
- s" YES" compare-insensitive 0= if
- exit
- then
- else
- drop
- then
- s" menu-unset"
- sfind if
- execute
- else
- drop
- then
- s" menusets-unset"
- sfind if
- execute
- else
- drop
- then
-;
-
-only forth also support-functions also builtins definitions
-
-: boot
- 0= if ( interpreted ) get_arguments then
-
- \ Unload only if a path was passed
- dup if
- >r over r> swap
- c@ [char] - <> if
- 0 1 unload drop
- else
- s" kernelname" getenv? if ( a kernel has been loaded )
- try-menu-unset
- bootmsg 1 boot exit
- then
- load_kernel_and_modules
- ?dup if exit then
- try-menu-unset
- bootmsg 0 1 boot exit
- then
- else
- s" kernelname" getenv? if ( a kernel has been loaded )
- try-menu-unset
- bootmsg 1 boot exit
- then
- load_kernel_and_modules
- ?dup if exit then
- try-menu-unset
- bootmsg 0 1 boot exit
- then
- load_kernel_and_modules
- ?dup 0= if bootmsg 0 1 boot then
-;
-
-\ ***** boot-conf
-\
-\ Prepares to boot as specified by loaded configuration files.
-
-: boot-conf
- 0= if ( interpreted ) get_arguments then
- 0 1 unload drop
- load_kernel_and_modules
- ?dup 0= if 0 1 autoboot then
-;
-
-also forth definitions previous
-
-builtin: boot
-builtin: boot-conf
-
-only forth definitions also support-functions
-
-\ ***** start
-\
-\ Initializes support.4th global variables, sets loader_conf_files,
-\ processes conf files, and, if any one such file was successfully
-\ read to the end, loads kernel and modules.
-
-: start ( -- ) ( throws: abort & user-defined )
- s" /boot/defaults/loader.conf" initialize
- include_conf_files
- include_nextboot_file
- \ If the user defined a post-initialize hook, call it now
- s" post-initialize" sfind if execute else drop then
- \ Will *NOT* try to load kernel and modules if no configuration file
- \ was successfully loaded!
- any_conf_read? if
- s" loader_delay" getenv -1 = if
- load_xen_throw
- load_kernel
- load_modules
- else
- drop
- ." Loading Kernel and Modules (Ctrl-C to Abort)" cr
- s" also support-functions" evaluate
- s" set delay_command='load_xen_throw load_kernel load_modules'" evaluate
- s" set delay_showdots" evaluate
- delay_execute
- then
- then
-;
-
-\ ***** initialize
-\
-\ Overrides support.4th initialization word with one that does
-\ everything start one does, short of loading the kernel and
-\ modules. Returns a flag.
-
-: initialize ( -- flag )
- s" /boot/defaults/loader.conf" initialize
- include_conf_files
- include_nextboot_file
- \ If the user defined a post-initialize hook, call it now
- s" post-initialize" sfind if execute else drop then
- any_conf_read?
-;
-
-\ ***** read-conf
-\
-\ Read a configuration file, whose name was specified on the command
-\ line, if interpreted, or given on the stack, if compiled in.
-
-: (read-conf) ( addr len -- )
- conf_files string=
- include_conf_files \ Will recurse on new loader_conf_files definitions
-;
-
-: read-conf ( <filename> | addr len -- ) ( throws: abort & user-defined )
- state @ if
- \ Compiling
- postpone (read-conf)
- else
- \ Interpreting
- bl parse (read-conf)
- then
-; immediate
-
-\ show, enable, disable, toggle module loading. They all take module from
-\ the next word
-
-: set-module-flag ( module_addr val -- ) \ set and print flag
- over module.flag !
- dup module.name strtype
- module.flag @ if ." will be loaded" else ." will not be loaded" then cr
-;
-
-: enable-module find-module ?dup if true set-module-flag then ;
-
-: disable-module find-module ?dup if false set-module-flag then ;
-
-: toggle-module find-module ?dup if dup module.flag @ 0= set-module-flag then ;
-
-\ ***** show-module
-\
-\ Show loading information about a module.
-
-: show-module ( <module> -- ) find-module ?dup if show-one-module then ;
-
-\ Words to be used inside configuration files
-
-: retry false ; \ For use in load error commands
-: ignore true ; \ For use in load error commands
-
-\ Return to strict forth vocabulary
-
-: #type
- over - >r
- type
- r> spaces
-;
-
-: .? 2 spaces 2swap 15 #type 2 spaces type cr ;
-
-\ Execute the ? command to print all the commands defined in
-\ C, then list the ones we support here. Please note that this
-\ doesn't use pager_* routines that the C implementation of ?
-\ does, so these will always appear, even if you stop early
-\ there. And they may cause the commands to scroll off the
-\ screen if the number of commands modulus LINES is close
-\ to LINEs....
-: ?
- ['] ? execute
- s" boot-conf" s" load kernel and modules, then autoboot" .?
- s" read-conf" s" read a configuration file" .?
- s" enable-module" s" enable loading of a module" .?
- s" disable-module" s" disable loading of a module" .?
- s" toggle-module" s" toggle loading of a module" .?
- s" show-module" s" show module load data" .?
- s" try-include" s" try to load/interpret files" .?
-;
-
-: try-include ( -- ) \ see loader.4th(8)
- ['] include ( -- xt ) \ get the execution token of `include'
- catch ( xt -- exception# | 0 ) if \ failed
- LF parse ( c -- s-addr/u ) 2drop \ advance >in to EOL (drop data)
- \ ... prevents words unused by `include' from being interpreted
- then
-; immediate \ interpret immediately for access to `source' (aka tib)
-
-only forth definitions
diff --git a/sys/boot/forth/loader.4th.8 b/sys/boot/forth/loader.4th.8
deleted file mode 100644
index b689077058da..000000000000
--- a/sys/boot/forth/loader.4th.8
+++ /dev/null
@@ -1,233 +0,0 @@
-.\" Copyright (c) 1999 Daniel C. Sobral
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" $FreeBSD$
-.\"
-.Dd November 13, 2013
-.Dt LOADER.4TH 8
-.Os
-.Sh NAME
-.Nm loader.4th
-.Nd loader.conf processing tools
-.Sh DESCRIPTION
-The file that goes by the name of
-.Nm
-is a set of commands designed to manipulate
-.Xr loader.conf 5
-files.
-The default
-.Pa /boot/loader.rc
-includes
-.Nm
-and uses one of its commands to automatically read and process
-the standard
-.Xr loader.conf 5
-files.
-Other commands exists to help the user specify alternate
-configurations.
-.Pp
-The commands of
-.Nm
-by themselves are not enough for most uses.
-Please refer to the
-examples below for the most common situations, and to
-.Xr loader 8
-for additional commands.
-.Pp
-Before using any of the commands provided in
-.Nm ,
-it must be included
-through the command:
-.Pp
-.Dl include loader.4th
-.Pp
-This line is present in the default
-.Pa /boot/loader.rc
-file, so it is not needed (and should not be re-issued) in a normal setup.
-.Pp
-The commands provided by it are:
-.Bl -tag -width disable-module_module -compact -offset indent
-.It Ic boot
-.It Ic boot Ar kernelname Op Cm ...
-.It Ic boot Ar directory Op Cm ...
-.It Ic boot Fl flag Cm ...
-Boot as specified by the
-.Xr loader.conf 5
-files read.
-.Pp
-Depending on the arguments passed, it can override boot flags and
-either the kernel name or the search path for kernel and modules.
-.Pp
-.It Ic boot-conf
-.It Ic boot-conf Ar kernelname Op Cm ...
-.It Ic boot-conf Ar directory Op Cm ...
-.It Ic boot-conf Fl flag Cm ...
-Works like
-.Ic boot
-described above, but instead of booting immediately, uses
-.Ic autoboot ,
-so it can be stopped.
-.Pp
-.It Ic start
-Reads
-.Pa /boot/defaults/loader.conf ,
-all other
-.Xr loader.conf 5
-files specified in it, then loads the desired kernel and modules
-.Pq if not already loaded .
-After which you can use the
-.Ic boot
-or
-.Ic autoboot
-commmands or simply exit (provided
-.Va autoboot_delay
-is not set to NO) to boot the system.
-.Ic start
-is the command used in the default
-.Pa /boot/loader.rc
-file
-.Pq see Xr loader 8 .
-.Pp
-.It Ic initialize
-Initialize the support library so commands can be used without executing
-.Ic start
-first.
-Like
-.Ic start ,
-it reads
-.Pa /boot/defaults/loader.conf
-and all other
-.Xr loader.conf 5
-files specified in it
-.Pq but does not load kernel or modules .
-Returns a flag on the stack to indicate
-if any configuration files were successfully loaded.
-.Pp
-.It Ic read-conf Ar filename
-Reads and processes a
-.Xr loader.conf 5
-file.
-Does not proceed to boot.
-.Pp
-.It Ic enable-module Ar module
-Enables the loading of
-.Ar module .
-.Pp
-.It Ic disable-module Ar module
-Disables the loading of
-.Ar module .
-.Pp
-.It Ic toggle-module Ar module
-Toggles the loading of
-.Ar module
-on and off.
-.Pp
-.It Ic show-module Ar module
-Shows the information gathered in the
-.Xr loader.conf 5
-files about the module
-.Ar module .
-.Pp
-.It Ic retry
-Used inside
-.Xr loader.conf 5
-files to specify the action after a module loading fails.
-.Pp
-.It Ic ignore
-Used inside
-.Xr loader.conf 5
-files to specify the action after a module loading fails.
-.It Ic try-include Ar file Op Ar
-Process script files if they exist.
-Each file, in turn, is completely read into memory,
-and then each of its lines is passed to the command line interpreter.
-If any error is returned by the interpreter, the try-include
-command aborts immediately, without reading any other files, and
-silently returns without error.
-.El
-.Sh FILES
-.Bl -tag -width /boot/loader.4th -compact
-.It Pa /boot/loader
-The
-.Xr loader 8 .
-.It Pa /boot/loader.4th
-.Nm
-itself.
-.It Pa /boot/loader.rc
-.Xr loader 8
-bootstrapping script.
-.It Pa /boot/defaults/loader.conf
-File loaded by the
-.Ic start
-command.
-.El
-.Sh EXAMPLES
-Standard
-.Pa /boot/loader.rc :
-.Pp
-.Bd -literal -offset indent -compact
-include /boot/loader.4th
-start
-.Ed
-.Pp
-Load a different kernel with the standard configuration:
-.Pp
-.Bd -literal -offset indent -compact
-set kernel="kernel.old"
-unload
-boot-conf
-.Ed
-.Pp
-Read an additional configuration file and then proceed to boot:
-.Pp
-.Bd -literal -offset indent -compact
-unload
-read-conf /boot/special.conf
-boot-conf
-.Ed
-.Pp
-Disable the loading of the splash screen module and bitmap and then
-proceed to boot:
-.Pp
-.Bd -literal -offset indent -compact
-unload
-disable-module splash_bmp
-disable-module bitmap
-boot-conf
-.Ed
-.Sh SEE ALSO
-.Xr loader.conf 5 ,
-.Xr loader 8
-.Sh HISTORY
-The
-.Nm
-set of commands first appeared in
-.Fx 3.2 .
-.Sh AUTHORS
-The
-.Nm
-set of commands was written by
-.An Daniel C. Sobral Aq dcs@FreeBSD.org .
-.Sh BUGS
-A British espionage series.
diff --git a/sys/boot/forth/loader.conf b/sys/boot/forth/loader.conf
deleted file mode 100644
index 8fe533fd2deb..000000000000
--- a/sys/boot/forth/loader.conf
+++ /dev/null
@@ -1,568 +0,0 @@
-# This is loader.conf - a file full of useful variables that you can
-# set to change the default load behavior of your system. You should
-# not edit this file! Put any overrides into one of the
-# loader_conf_files instead and you will be able to update these
-# defaults later without spamming your local configuration information.
-#
-# All arguments must be in double quotes.
-#
-# $FreeBSD$
-
-##############################################################
-### Basic configuration options ############################
-##############################################################
-
-exec="echo Loading /boot/defaults/loader.conf"
-
-kernel="kernel" # /boot sub-directory containing kernel and modules
-bootfile="kernel" # Kernel name (possibly absolute path)
-kernel_options="" # Flags to be passed to the kernel
-
-loader_conf_files="/boot/device.hints /boot/loader.conf /boot/loader.conf.local"
-nextboot_conf="/boot/nextboot.conf"
-nextboot_enable="NO"
-
-verbose_loading="NO" # Set to YES for verbose loader output
-
-
-##############################################################
-### Splash screen configuration ############################
-##############################################################
-
-splash_bmp_load="NO" # Set this to YES for bmp splash screen!
-splash_pcx_load="NO" # Set this to YES for pcx splash screen!
-splash_txt_load="NO" # Set this to YES for TheDraw splash screen!
-vesa_load="NO" # Set this to YES to load the vesa module
-bitmap_load="NO" # Set this to YES if you want splash screen!
-bitmap_name="splash.bmp" # Set this to the name of the file
-bitmap_type="splash_image_data" # and place it on the module_path
-
-
-##############################################################
-### Random number generator configuration ##################
-##############################################################
-
-# See rc.conf(5). The entropy_boot_file config variable must agree with the
-# settings below.
-
-entropy_cache_load="YES" # Set this to NO to disable loading
- # entropy at boot time
-entropy_cache_name="/boot/entropy" # Set this to the name of the file
-entropy_cache_type="boot_entropy_cache" # Required for the kernel to find
- # the boot-time entropy cache. This
- # must not change value even if the
- # _name above does change!
-
-
-##############################################################
-### RAM Blacklist configuration ############################
-##############################################################
-
-ram_blacklist_load="NO" # Set this to YES to load a file
- # containing a list of addresses to
- # exclude from the running system.
-ram_blacklist_name="/boot/blacklist.txt" # Set this to the name of the file
-ram_blacklist_type="ram_blacklist" # Required for the kernel to find
- # the blacklist module
-
-
-##############################################################
-### Initial memory disk settings ###########################
-##############################################################
-
-#mdroot_load="YES" # The "mdroot" prefix is arbitrary.
-#mdroot_type="md_image" # Create md(4) disk at boot.
-#mdroot_name="/boot/root.img" # Path to a file containing the image.
-#rootdev="ufs:/dev/md0" # Set the root filesystem to md(4) device.
-
-
-##############################################################
-### Loader settings ########################################
-##############################################################
-
-#loader_delay="3" # Delay in seconds before loading anything.
- # Default is unset and disabled (no delay).
-#autoboot_delay="10" # Delay in seconds before autobooting,
- # set to -1 if you don't want user to be
- # allowed to interrupt autoboot process and
- # escape to the loader prompt, set to
- # "NO" to disable autobooting
-#password="" # Prevent changes to boot options
-#bootlock_password="" # Prevent booting (see check-password.4th(8))
-#geom_eli_passphrase_prompt="NO" # Prompt for geli(8) passphrase to mount root
-bootenv_autolist="YES" # Auto populate the list of ZFS Boot Environments
-#beastie_disable="NO" # Turn the beastie boot menu on and off
-#kernels="kernel kernel.old" # Kernels to display in the boot menu
-#loader_logo="orbbw" # Desired logo: orbbw, orb, fbsdbw, beastiebw, beastie, none
-#comconsole_speed="9600" # Set the current serial console speed
-#console="vidconsole" # A comma separated list of console(s)
-#currdev="disk1s1a" # Set the current device
-module_path="/boot/modules;/boot/dtb" # Set the module search path
-#prompt="\\${interpret}" # Set the command prompt
-#root_disk_unit="0" # Force the root disk unit number
-#rootdev="disk1s1a" # Set the root filesystem
-#dumpdev="disk1s1b" # Set a dump device early in the boot process
-#tftp.blksize="1428" # Set the RFC 2348 TFTP block size.
- # If the TFTP server does not support RFC 2348,
- # the block size is set to 512. If the value
- # is out of range ( < 8 || > 9008 ) an error is
- # returned.
-#twiddle_divisor="1" # >1 means slow down the progress indicator.
-
-
-##############################################################
-### Kernel settings ########################################
-##############################################################
-
-# The following boot_ variables are enabled by setting them to any value.
-# Their presence in the kernel environment (see kenv(1)) has the same
-# effect as setting the given boot flag (see boot(8)).
-
-#boot_askname="" # -a: Prompt the user for the name of the root device
-#boot_cdrom="" # -C: Attempt to mount root file system from CD-ROM
-#boot_ddb="" # -d: Instructs the kernel to start in the DDB debugger
-#boot_dfltroot="" # -r: Use the statically configured root file system
-#boot_gdb="" # -g: Selects gdb-remote mode for the kernel debugger
-#boot_multicons="" # -D: Use multiple consoles
-#boot_mute="" # -m: Mute the console
-#boot_pause="" # -p: Pause after each line during device probing
-#boot_serial="" # -h: Use serial console
-#boot_single="" # -s: Start system in single-user mode
-#boot_verbose="" # -v: Causes extra debugging information to be printed
-#init_path="/sbin/init:/sbin/oinit:/sbin/init.bak:/rescue/init"
- # Sets the list of init candidates
-#init_shell="/bin/sh" # The shell binary used by init(8).
-#init_script="" # Initial script to run by init(8) before chrooting.
-#init_chroot="" # Directory for init(8) to chroot into.
-
-
-##############################################################
-### Kernel tunables ########################################
-##############################################################
-
-#hw.physmem="1G" # Limit physical memory. See loader(8)
-#kern.dfldsiz="" # Set the initial data size limit
-#kern.dflssiz="" # Set the initial stack size limit
-#kern.hz="100" # Set the kernel interval timer rate
-#kern.maxbcache="" # Set the max buffer cache KVA storage
-#kern.maxdsiz="" # Set the max data size
-#kern.maxfiles="" # Set the sys. wide open files limit
-#kern.maxproc="" # Set the maximum # of processes
-#kern.maxssiz="" # Set the max stack size
-#kern.maxswzone="" # Set the max swmeta KVA storage
-#kern.maxtsiz="" # Set the max text size
-#kern.maxusers="32" # Set size of various static tables
-#kern.msgbufsize="65536" # Set size of kernel message buffer
-#kern.nbuf="" # Set the number of buffer headers
-#kern.ncallout="" # Set the maximum # of timer events
-#kern.ngroups="1023" # Set the maximum # of supplemental groups
-#kern.sgrowsiz="" # Set the amount to grow stack
-#kern.cam.boot_delay="10000" # Delay (in ms) of root mount for CAM bus
- # registration, useful for USB sticks as root
-#kern.cam.scsi_delay="2000" # Delay (in ms) before probing SCSI
-#kern.ipc.maxsockets="" # Set the maximum number of sockets available
-#kern.ipc.nmbclusters="" # Set the number of mbuf clusters
-#kern.ipc.nsfbufs="" # Set the number of sendfile(2) bufs
-#net.inet.tcp.tcbhashsize="" # Set the value of TCBHASHSIZE
-#vfs.root.mountfrom="" # Specify root partition in a way the
- # kernel understands
-#vm.kmem_size="" # Sets the size of kernel memory (bytes)
-#debug.kdb.break_to_debugger="0" # Allow console to break into debugger.
-#debug.ktr.cpumask="0xf" # Bitmask of CPUs to enable KTR on
-#debug.ktr.mask="0x1200" # Bitmask of KTR events to enable
-#debug.ktr.verbose="1" # Enable console dump of KTR events
-#net.graph.maxalloc="128" # Maximum number of queue items to allocate
-
-
-##############################################################
-### ATA modules ############################################
-##############################################################
-
-ataacard_load="NO" # ACARD
-ataacerlabs_load="NO" # Acer Labs Inc. (ALI)
-ataamd_load="NO" # American Micro Devices (AMD)
-ataati_load="NO" # ATI
-atacenatek_load="NO" # Cenatek
-atacypress_load="NO" # Cypress
-atacyrix_load="NO" # Cyrix
-atahighpoint_load="NO" # HighPoint
-ataintel_load="NO" # Intel
-ataite_load="NO" # Integrated Technology Inc. (ITE)
-atajmicron_load="NO" # JMicron
-atamarvell_load="NO" # Marvell
-atamicron_load="NO" # Micron
-atanational_load="NO" # National
-atanetcell_load="NO" # NetCell
-atanvidia_load="NO" # nVidia
-atapromise_load="NO" # Promise
-ataserverworks_load="NO" # ServerWorks
-atasiliconimage_load="NO" # Silicon Image Inc. (SiI) (formerly CMD)
-atasis_load="NO" # Silicon Integrated Systems Corp.(SiS)
-atavia_load="NO" # VIA Technologies Inc.
-
-
-##############################################################
-### Filesystem and related modules #########################
-##############################################################
-
-# Filesystems
-
-cd9660_load="NO" # ISO 9660 filesystem
-fdescfs_load="NO" # Filedescriptors filesystem
-linprocfs_load="NO" # Linux compatibility process filesystem
-linsysfs_load="NO" # Linux compatibility system filesystem
-msdosfs_load="NO" # FAT-12/16/32
-nfsclient_load="NO" # NFS client
-nfsserver_load="NO" # NFS server
-nullfs_load="NO" # Null filesystem
-procfs_load="NO" # Process filesystem
-unionfs_load="NO" # Union filesystem
-zfs_load="NO" # ZFS
-
-# Related stuff
-
-geom_bde_load="NO" # Disk encryption driver (see gbde(4,8))
-geom_ccd_load="NO" # Concatenated disk driver (see ccd(4),
- # ccdconfig(8))
-geom_concat_load="NO" # Concatenated disk driver (see gconcat(8))
-geom_eli_load="NO" # Disk encryption driver (see geli(8))
-geom_gate_load="NO" # Userland disk driver (see geom_gate(4),
- # ggatec(8), ggated(8), ggatel(8))
-geom_journal_load="NO" # Journaled filesystem driver (see gjournal(8))
-geom_label_load="NO" # File system labels (see glabel(8))
-geom_md_load="NO" # Memory disk driver (vnode/swap/malloc) (see
- # md(4), mdconfig(8))
-geom_mirror_load="NO" # RAID1 disk driver (see gmirror(8))
-geom_mountver_load="NO" # Mount verification disk driver
-geom_nop_load="NO" # Transparent disk driver (see gnop(8))
-geom_raid3_load="NO" # RAID3 disk driver (see graid3(8))
-geom_shsec_load="NO" # Shared secret disk driver (see gshsec(8))
-geom_stripe_load="NO" # RAID0 disk driver (see gstripe(8))
-geom_uzip_load="NO" # Compressed disk images driver (see mkuzip(8))
-geom_vinum_load="NO" # Concatenated/mirror/raid driver (see vinum(4))
-
-
-##############################################################
-### FireWire modules #######################################
-##############################################################
-
-firewire_load="NO" # IEEE1394 High-performance Serial Bus
-fwe_load="NO" # Ethernet emulation driver for FireWire
-fwip_load="NO" # IP over FireWire driver
-fwohci_load="NO" # OHCI FireWire chipset device driver
-sbp_load="NO" # SBP-2 Mass Storage Devices driver
-sbp_targ_load="NO" # SBP-2 Target mode
-
-
-##############################################################
-### Screen saver modules ###################################
-##############################################################
-
-# This is best done in rc.conf
-
-screensave_load="NO" # Set to YES to load a screensaver module
-screensave_name="green_saver" # Set to the name of the screensaver module
-
-
-##############################################################
-### Emulation modules ######################################
-##############################################################
-
-cloudabi_load="NO" # Platform independent CloudABI support
-cloudabi64_load="NO" # 64-bit CloudABI executables support
-ibcs2_load="NO" # IBCS2 (SCO) emulation
-ibcs2_coff_load="NO"
-linux_load="NO" # Linux emulation
-
-
-##############################################################
-### Networking modules #####################################
-##############################################################
-
-if_disc_load="NO" # Discard device
-if_ef_load="NO" # pseudo-device providing support for multiple
- # ethernet frame types
-if_epair_load="NO" # Virtual b-t-b Ethernet-like interface pair
-if_gif_load="NO" # generic tunnel interface
-if_gre_load="NO" # encapsulating network device
-if_stf_load="NO" # 6to4 tunnel interface
-if_tap_load="NO" # Ethernet tunnel software network interface
-if_tun_load="NO" # Tunnel driver (user process ppp)
-if_vlan_load="NO" # IEEE 802.1Q VLAN network interface
-ipfw_load="NO" # Firewall
-pf_load="NO" # packet filter
-
-
-##############################################################
-### Networking drivers #####################################
-##############################################################
-
-bridgestp_load="NO" # if_bridge(4) support
-miibus_load="NO" # miibus support, needed for some drivers
-carp_load="NO" # carp(4) protocol
-if_ae_load="NO" # Attansic/Atheros L2 FastEthernet
-if_age_load="NO" # Attansic/Atheros L1 Gigabit Ethernet
-if_alc_load="NO" # Atheros AR8131/AR8132 Ethernet
-if_ale_load="NO" # Atheros AR8121/AR8113/AR8114 Ethernet
-if_an_load="NO" # Aironet 4500/4800 802.11 wireless NICs
-if_ath_load="NO" # Atheros IEEE 802.11 wireless NICs
-if_aue_load="NO" # ADMtek AN986 Pegasus USB Ethernet
-if_axe_load="NO" # ASIX Electronics AX88172 USB Ethernet
-if_bce_load="NO" # Broadcom NetXtreme II Gigabit Ethernet
-if_bfe_load="NO" # Broadcom BCM4401
-if_bge_load="NO" # Broadcom BCM570x PCI Gigabit Ethernet
-if_bnxt_load="NO" # Broadcom NetXtreme-C/NetXtreme-E
-if_bridge_load="NO" # if_bridge(4) devices
-if_bwi_load="NO" # Broadcom BCM53xx IEEE 802.11b/g wireness NICs
-if_bwn_load="NO" # Broadcom BCM43xx IEEE 802.11 wireless NICs
-if_bxe_load="NO" # Broadcom NetXtreme II 10Gb Ethernet
-if_cas_load="NO" # Sun Cassini/Cassini+ and NS DP83065 Saturn
-if_cm_load="NO" # SMC (90c26, 90c56, 90c66)
-if_cs_load="NO" # Crystal Semiconductor CS8920
-if_cue_load="NO" # CATC USB-EL1210A USB Ethernet
-if_cxgb_load="NO" # Chelsio T3 10 Gigabit Ethernet
-if_cxgbe_load="NO" # Chelsio T4/T5/T6 1/10/25/40/100 Gigabit Ethernet
-if_dc_load="NO" # DEC/Intel 21143 and various workalikes
-if_de_load="NO" # DEC DC21x4x Ethernet
-if_ed_load="NO" # National Semiconductor DS8390/WD83C690
- # Ethernet
-if_em_load="NO" # Intel(R) PRO/1000 Gigabit Ethernet
-if_ep_load="NO" # 3Com Etherlink III (3c5x9)
-if_et_load="NO" # Agere ET1310 10/100/Gigabit Ethernet
-if_ex_load="NO" # Intel EtherExpress Pro/10 Ethernet
-if_fe_load="NO" # Fujitsu MB86960A/MB86965A based Ethernet
- # adapters
-if_fxp_load="NO" # Intel EtherExpress PRO/100B (82557, 82558)
-if_gem_load="NO" # Sun GEM/Sun ERI/Apple GMAC
-if_hme_load="NO" # Sun Microelectronics STP2002-STQ Ethernet
-if_ie_load="NO" # Intel 82586
-if_ipw_load="NO" # Intel PRO/Wireless 2100 wireless
-if_iwi_load="NO" # Intel PRO/Wireless 2200BG/2225BG/2915ABG
- # wireless
-if_iwn_load="NO" # Intel Wireless WiFi Link 802.11n wireless
-if_ixgb_load="NO" # Intel PRO/10Gb Ethernet
-if_ixgbe_load="NO" # Intel PRO/10Gb Ethernet PCI Express
-if_ixl_load="NO" # Intel XL710 Ethernet 40Gb Base driver
-if_ixlv_load="NO" # Intel XL710 Ethernet 40Gb VF driver
-if_jme_load="NO" # JMicron JMC250 Gigabit/JMC260 Fast Ethernet
-if_lagg_load="NO" # lagg(4) devices
-if_le_load="NO" # AMD Am7900 LANCE and Am79C9xx PCnet
-if_lge_load="NO" # Level 1 LXT1001 NetCellerator PCI Gigabit
- # Ethernet
-if_malo_load="NO" # Marvell Libertas 88W8335 802.11 wireless
- # adapter
-if_msk_load="NO" # Marvell/SysKonnect Yukon II Gigabit Ethernet
-if_mxge_load="NO" # Myricom Myri10GE 10Gb Ethernet
-if_my_load="NO" # Myson PCI Fast Ethernet
-if_nfe_load="NO" # NVIDIA nForce MCP Networking Adapter
-if_nge_load="NO" # National Semiconductor PCI Gigabit Ethernet
-if_nxge_load="NO" # Neterion Xframe 10Gb Ethernet
-if_pcn_load="NO" # AMD PCnet PCI
-if_ral_load="NO" # Ralink Technology wireless
-if_re_load="NO" # RealTek 8139C+/8169/8169S/8110S
-if_rl_load="NO" # RealTek 8129/8139
-if_rue_load="NO" # RealTek RTL8150 USB to Fast Ethernet
-if_rum_load="NO" # Ralink Technology USB 802.11a/b/g wireless
-if_run_load="NO" # Ralink Technology USB 802.11a/g/n wireless
-if_sbni_load="NO" # Granch SBNI12 leased line adapters
-if_sf_load="NO" # Adaptec Duralink PCI (AIC-6915 "starfire")
-if_sge_load="NO" # Silicon Integrated Systems SiS 190/191
-if_sis_load="NO" # Silicon Integrated Systems SiS 900/7016
-if_sk_load="NO" # SysKonnect SK-984x series PCI Gigabit Ethernet
-if_sn_load="NO" # SMC 91Cxx
-if_ste_load="NO" # Sundance Technologies ST201 Fast Ethernet
-if_stge_load="NO" # Sundance/Tamarack TC9021 Gigabit Ethernet
-if_ti_load="NO" # Alteon Networks Tigon 1 and Tigon 2
-if_tl_load="NO" # Texas Instruments TNETE100 ("ThunderLAN")
-if_tx_load="NO" # SMC 83c17x Fast Ethernet
-if_txp_load="NO" # 3Com 3XP Typhoon/Sidewinder (3CR990)
-if_vge_load="NO" # VIA VT6122 PCI Gigabit Ethernet
-if_vte_load="NO" # DM&P Vortex86 RDC R6040 Fast Ethernet
-if_uath_load="NO" # Atheros USB wireless for AR5005UG & AR5005UX
-if_udav_load="NO" # Davicom DM9601 USB Ethernet
-if_upgt_load="NO" # Conexant/Intersil PrismGT USB wireless
-if_ural_load="NO" # Ralink Technology USB wireless
-if_urtw_load="NO" # Realtek 8187L USB wireless
-if_vr_load="NO" # VIA Rhine I and Rhine II
-if_vx_load="NO" # 3Com 3C590 family
-if_wb_load="NO" # Winbond W89C840F
-if_wi_load="NO" # WaveLAN/IEEE 802.11 wireless NICs
-if_wpi_load="NO" # Intel 3945ABG Wireless LAN IEEE 802.11
-if_xe_load="NO" # Xircom CreditCard PCMCIA
-if_xl_load="NO" # 3Com Etherlink XL (3c900, 3c905, 3c905B)
-sfxge_load="NO" # Solarflare 10Gb Ethernet adapter driver
-
-
-##############################################################
-### Netgraph modules #######################################
-##############################################################
-
-ng_UI_load="NO" # UI netgraph node type
-ng_async_load="NO" # asynchronous framing netgraph node type
-ng_bpf_load="NO" # Berkeley packet filter netgraph node type
-ng_bridge_load="NO" # Ethernet bridging netgraph node type
-ng_cisco_load="NO" # Cisco HDLC protocol netgraph node type
-ng_echo_load="NO" # Netgraph echo node type
-ng_eiface_load="NO" # generic Ethernet interface netgraph node type
-ng_etf_load="NO" # Ethertype filtering netgraph node type
-ng_ether_load="NO" # Ethernet netgraph node type
-ng_frame_relay_load="NO" # frame relay netgraph node type
-ng_gif_load="NO" # generic tunnel interface netgraph node type
-ng_gif_demux_load="NO" # demultiplexer for packets from ng_gif(4) nodes
-ng_hole_load="NO" # Netgraph discard node type
-ng_hub_load="NO" # packet distribution netgraph node type
-ng_iface_load="NO" # interface Netgraph node type
-ng_ip_input_load="NO" # netgraph IP input node type
-ng_ksocket_load="NO" # kernel socket netgraph node type
-ng_l2tp_load="NO" # L2TP protocol netgraph node type
-ng_lmi_load="NO" # frame relay LMI protocol netgraph node type
-ng_mppc_load="NO" # Microsoft MPPC/MPPE compression and
- # encryption netgraph node type
-ng_netflow_load="NO" # Cisco's NetFlow netgraph node type
-ng_one2many_load="NO" # packet multiplexing netgraph node type
-ng_ppp_load="NO" # PPP protocol netgraph node type
-ng_pppoe_load="NO" # RFC 2516 PPPOE protocol netgraph node type
-ng_pptpgre_load="NO" # PPTP GRE protocol netgraph node type
-ng_rfc1490_load="NO" # RFC 1490 netgraph node type
-ng_socket_load="NO" # Netgraph socket node type
-ng_split_load="NO" # netgraph node to separate incoming and
- # outgoing flows
-ng_sppp_load="NO" # sppp netgraph node type
-ng_tee_load="NO" # Netgraph ``tee'' node type
-ng_tty_load="NO" # Netgraph node type that is also a line
- # discipline
-ng_vjc_load="NO" # Van Jacobsen compression netgraph node type
-ng_vlan_load="NO" # IEEE 802.1Q VLAN tagging netgraph node type
-
-
-##############################################################
-### Sound modules ##########################################
-##############################################################
-
-sound_load="NO" # Digital sound subsystem
-snd_ad1816_load="NO" # ad1816
-snd_als4000_load="NO" # als4000
-snd_atiixp_load="NO" # atiixp
-snd_cmi_load="NO" # cmi
-snd_cs4281_load="NO" # cs4281
-snd_csa_load="NO" # csa
-snd_ds1_load="NO" # ds1
-snd_emu10k1_load="NO" # Creative Sound Blaster Live
-snd_emu10kx_load="NO" # Creative SoundBlaster Live! and Audigy
-snd_envy24_load="NO" # VIA Envy24
-snd_envy24ht_load="NO" # VIA Envy24HT
-snd_es137x_load="NO" # es137x
-snd_ess_load="NO" # ess
-snd_fm801_load="NO" # fm801
-snd_hda_load="NO" # Intel High Definition Audio (Controller)
-snd_ich_load="NO" # Intel ICH
-snd_maestro_load="NO" # Maestro
-snd_maestro3_load="NO" # Maestro3
-snd_mss_load="NO" # Mss
-snd_neomagic_load="NO" # Neomagic
-snd_sb16_load="NO" # Sound Blaster 16
-snd_sb8_load="NO" # Sound Blaster Pro
-snd_sbc_load="NO" # Sbc
-snd_solo_load="NO" # Solo
-snd_spicds_load="NO" # SPI codecs
-snd_t4dwave_load="NO" # t4dwave
-snd_via8233_load="NO" # via8233
-snd_via82c686_load="NO" # via82c686
-snd_vibes_load="NO" # vibes
-snd_driver_load="NO" # All sound drivers
-
-
-##############################################################
-### USB modules ############################################
-##############################################################
-
-usb_load="NO" # USB subsystem
-udbp_load="NO" # USB double bulk pipe host 2 host cables
-ugen_load="NO" # USB generic device, if all else fails ...
-ucycom_load="NO" # Cyprus USB serial adapters
-ufm_load="NO" # Fm Radio
-uhid_load="NO" # Human Interface Devices
-ukbd_load="NO" # Keyboard
-ulpt_load="NO" # Printer
-ums_load="NO" # Mouse
-umass_load="NO" # Mass Storage Devices
-umct_load="NO" # Magic Control Technology USB-RS232
-umodem_load="NO" # Modems
-uplcom_load="NO" # Prolific USB serial adapters
-urio_load="NO" # Rio MP3 players
-uvisor_load="NO" # PalmOS based PDAs
-if_aue_load="NO" # ADMtek USB ethernet
-if_axe_load="NO" # ASIX Electronics AX88172 USB ethernet
-if_cdce_load="NO" # Ethernet over USB (CDC)
-if_cue_load="NO" # CATC USB ethernet
-if_kue_load="NO" # Kawasaki LSI USB ethernet
-if_rae_load="NO" # Realtek RTL8150 USB adapter.
-if_rum_load="NO" # Ralink USB 802.11 wireless adapter
-if_uath_load="NO" # Atheros AR5523 wireless adapter
-if_run_load="NO" # Ralink USB 802.11 wireless adapter
-if_ural_load="NO" # Ralink RT2500USB 802.11 wireless adapter
-if_zyd_load="NO" # ZyDAS ZD1211(B) USB 802.11 wireless adapter
-snd_uaudio_load="NO" # USB audio
-
-
-##############################################################
-### Other modules ##########################################
-##############################################################
-
-aio_load="NO" # Asynchronous I/O
-bktr_load="NO" # Brooktree Bt848/Bt878 TV/Video Capture Card
-ispfw_load="NO" # Qlogic ISP Firmware
-agp_load="NO" # agp module
-accf_data_load="NO" # Wait for data accept filter
-accf_dns_load="NO" # Wait for full DNS request accept filter
-accf_http_load="NO" # Wait for full HTTP request accept filter
-ppi_load="NO" # Interface to ppbus parallel 'geek' port
-pps_load="NO" # Pulse per second devices
-puc_load="NO" # PCI "Universal" Communications driver
-random_load="NO" # Random device
-speaker_load="NO" # AT speaker module
-coretemp_load="NO" # Intel Core CPU temperature monitor
-vkbd_load="NO" # Virtual AT keyboard interface
-vpd_load="NO" # Vital Product Data kernel interface
-vpo_load="NO" # Parallel to SCSI interface driver
-amdsmn_load="NO" # AMD Family 17h System Management Network
-amdtemp_load="NO" # AMD K8/K10/K11 temperature monitor
-tpm_load="NO" # Trusted Platform Module
-wbwd_load="NO" # Winbond watchdog
-
-
-##############################################################
-### ACPI settings ##########################################
-##############################################################
-
-acpi_dsdt_load="NO" # DSDT Overriding
-acpi_dsdt_type="acpi_dsdt" # Don't change this
-acpi_dsdt_name="/boot/acpi_dsdt.aml"
- # Override DSDT in BIOS by this file
-acpi_video_load="NO" # Load the ACPI video extension driver
-
-
-##############################################################
-### TrustedBSD MAC settings ################################
-##############################################################
-
-mac_biba_load="NO" # Biba MAC policy
-mac_bsdextended_load="NO" # BSD/extended MAC policy
-mac_ifoff="NO" # Interface silencing policy
-mac_mls_load="NO" # MLS MAC policy
-mac_none_load="NO" # Null MAC policy
-mac_partition_load="NO" # Partition MAC policy
-mac_seeotheruids_load="NO" # UID visbility MAC policy
-
-
-##############################################################
-### Module loading syntax example ##########################
-##############################################################
-
-#module_load="YES" # loads module "module"
-#module_name="realname" # uses "realname" instead of "module"
-#module_type="type" # passes "-t type" to load
-#module_flags="flags" # passes "flags" to the module
-#module_before="cmd" # executes "cmd" before loading the module
-#module_after="cmd" # executes "cmd" after loading the module
-#module_error="cmd" # executes "cmd" if load fails
diff --git a/sys/boot/forth/loader.conf.5 b/sys/boot/forth/loader.conf.5
deleted file mode 100644
index 631250c5278c..000000000000
--- a/sys/boot/forth/loader.conf.5
+++ /dev/null
@@ -1,330 +0,0 @@
-.\" Copyright (c) 1999 Daniel C. Sobral
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" $FreeBSD$
-.Dd January 6, 2016
-.Dt LOADER.CONF 5
-.Os
-.Sh NAME
-.Nm loader.conf
-.Nd "system bootstrap configuration information"
-.Sh DESCRIPTION
-The file
-.Nm
-contains descriptive information on bootstrapping the system.
-Through
-it you can specify the kernel to be booted, parameters to be passed to
-it, and additional modules to be loaded; and generally set all variables
-described in
-.Xr loader 8 .
-.Pp
-The file
-.Pa /boot/loader.rc
-must contain the following two lines for
-.Nm
-to be automatically processed:
-.Pp
-.Dl include /boot/loader.4th
-.Dl start
-.Pp
-If no
-.Pa /boot/loader.rc
-exists at installworld time, one with the above lines will be installed.
-.Sh SYNTAX
-Though
-.Nm Ns 's
-format was defined explicitly to resemble
-.Xr rc.conf 5 ,
-and can be sourced by
-.Xr sh 1 ,
-some settings are treated in a special fashion.
-Also, the
-behavior of some settings is defined by the setting's suffix;
-the prefix identifies which module the setting controls.
-.Pp
-The general parsing rules are:
-.Bl -bullet
-.It
-Spaces and empty lines are ignored.
-.It
-A # sign will mark the remainder of the line as a comment.
-.It
-Only one setting can be present on each line.
-.El
-.Pp
-All settings have the following format:
-.Pp
-.Dl variable="value"
-.Pp
-Unless it belongs to one of the classes of settings that receive special
-treatment, a setting will set the value of a
-.Xr loader 8
-environment variable.
-The settings that receive special
-treatment are listed below.
-Settings beginning with
-.Qq *
-below define the modules to be loaded and
-may have any prefix; the prefix identifies a module.
-All such settings sharing a common
-prefix refer to the same module.
-.Bl -tag -width Ar
-.It Ar exec
-Immediately executes a
-.Xr loader 8
-command.
-This type of setting cannot be processed by programs other
-than
-.Xr loader 8 ,
-so its use should be avoided.
-Multiple instances of it will be processed
-independently.
-.It Ar loader_conf_files
-Defines additional configuration files to be processed right after the
-present file.
-.It Ar kernel
-Name of the kernel to be loaded.
-If no kernel name is set, no additional
-modules will be loaded.
-The name must be a subdirectory of
-.Pa /boot
-that contains a kernel.
-.It Ar kernel_options
-Flags to be passed to the kernel.
-.It Ar vfs.root.mountfrom
-Specify the root partition to mount.
-For example:
-.Pp
-.Dl vfs.root.mountfrom="ufs:/dev/da0s1a"
-.Pp
-.Xr loader 8
-automatically calculates the value of this tunable from
-.Pa /etc/fstab
-from the partition the kernel was loaded from.
-The calculated value might be calculated incorrectly when
-.Pa /etc/fstab
-is not available during
-.Xr loader 8
-startup (as during diskless booting from NFS), or if a different
-device is desired by the user.
-The preferred value can be set in
-.Pa /loader.conf .
-.Pp
-The value can also be overridden from the
-.Xr loader 8
-command line.
-This is useful for system recovery when
-.Pa /etc/fstab
-is damaged, lost, or read from the wrong partition.
-.It Ar password
-Protect boot menu with a password without interrupting
-.Ic autoboot
-process.
-The password should be in clear text format.
-If a password is set, boot menu will not appear until any key is pressed during
-countdown period specified by
-.Va autoboot_delay
-variable or
-.Ic autoboot
-process fails.
-In both cases user should provide specified password to be able to access boot
-menu.
-.It Ar bootlock_password
-Provides a password to be required by check-password before execution is
-allowed to continue.
-The password should be in clear text format.
-If a password is set, the user must provide specified password to boot.
-.It Ar verbose_loading
-If set to
-.Dq YES ,
-module names will be displayed as they are loaded.
-.It Ar *_load
-If set to
-.Dq YES ,
-that module will be loaded.
-If no name is defined (see below), the
-module's name is taken to be the same as the prefix.
-.It Ar *_name
-Defines the name of the module.
-.It Ar *_type
-Defines the module's type.
-If none is given, it defaults to a kld module.
-.It Ar *_flags
-Flags and parameters to be passed to the module.
-.It Ar *_before
-Commands to be executed before the module is loaded.
-Use of this setting
-should be avoided.
-.It Ar *_after
-Commands to be executed after the module is loaded.
-Use of this setting
-should be avoided.
-.It Ar *_error
-Commands to be executed if the loading of a module fails.
-Except for the
-special value
-.Dq abort ,
-which aborts the bootstrap process, use of this setting should be avoided.
-.El
-.Pp
-.Em WARNING:
-developers should never use these suffixes for any kernel environment
-variables (tunables) or conflicts will result.
-.Sh DEFAULT SETTINGS
-Most of
-.Nm Ns 's
-default settings can be ignored.
-The few of them which are important
-or useful are:
-.Bl -tag -width bootfile -offset indent
-.It Va bitmap_load
-.Pq Dq NO
-If set to
-.Dq YES ,
-a bitmap will be loaded to be displayed on screen while booting.
-.It Va bitmap_name
-.Pq Dq Pa /boot/splash.bmp
-Name of the bitmap to be loaded.
-Any other name can be used.
-.It Va comconsole_speed
-.Dq ( 9600
-or the value of the
-.Va BOOT_COMCONSOLE_SPEED
-variable when
-.Xr loader 8
-was compiled).
-Sets the speed of the serial console.
-If the previous boot loader stage specified that a serial console
-is in use then the default speed is determined from the current
-serial port speed setting.
-.It Va console
-.Pq Dq vidconsole
-.Dq comconsole
-selects serial console,
-.Dq vidconsole
-selects the video console,
-.Dq nullconsole
-selects a mute console
-(useful for systems with neither a video console nor a serial port), and
-.Dq spinconsole
-selects the video console which prevents any input and hides all output
-replacing it with
-.Dq spinning
-character (useful for embedded products and such).
-.It Va kernel
-.Pq Dq kernel
-.It Va kernels
-.Pq Dq kernel kernel.old
-Space or comma separated list of kernels to present in the boot menu.
-.It Va loader_conf_files
-.Pq Dq Pa /boot/loader.conf /boot/loader.conf.local
-.It Va splash_bmp_load
-.Pq Dq NO
-If set to
-.Dq YES ,
-will load the splash screen module, making it possible to display a bmp image
-on the screen while booting.
-.It Va splash_pcx_load
-.Pq Dq NO
-If set to
-.Dq YES ,
-will load the splash screen module, making it possible to display a pcx image
-on the screen while booting.
-.It Va vesa_load
-.Pq Dq NO
-If set to
-.Dq YES ,
-the vesa module will be loaded, enabling bitmaps above VGA resolution to
-be displayed.
-.It Va beastie_disable
-If set to
-.Dq YES ,
-the beastie boot menu will be skipped.
-The beastie boot menu is always skipped if running non-x86 hardware.
-.It Va loader_logo Pq Dq Li orbbw
-Selects a desired logo in the beastie boot menu.
-Possible values are:
-.Dq Li orbbw ,
-.Dq Li orb ,
-.Dq Li fbsdbw ,
-.Dq Li beastiebw ,
-.Dq Li beastie ,
-and
-.Dq Li none .
-.It Va loader_color
-If set to
-.Dq NO ,
-the beastie boot menu will be displayed without ANSI coloring.
-.It Va entropy_cache_load
-.Pq Dq YES
-If set to
-.Dq NO ,
-the very early
-boot-time entropy file
-will not be loaded.
-See the entropy entries in
-.Xr rc.conf 5 .
-.It Va entropy_cache_name
-.Pq Dq /boot/entropy
-The name of the very early
-boot-time entropy cache file.
-.El
-.Sh FILES
-.Bl -tag -width /boot/defaults/loader.conf -compact
-.It Pa /boot/defaults/loader.conf
-default settings -- do not change this file.
-.It Pa /boot/loader.4th
-defines the commands used by loader to read and process
-.Nm .
-.It Pa /boot/loader.conf
-user defined settings.
-.It Pa /boot/loader.conf.local
-machine-specific settings for sites with a common loader.conf.
-.It Pa /boot/loader.rc
-contains the instructions to automatically process
-.Nm .
-.El
-.Sh SEE ALSO
-.Xr rc.conf 5 ,
-.Xr boot 8 ,
-.Xr loader 8 ,
-.Xr loader.4th 8
-.Sh HISTORY
-The file
-.Nm
-first appeared in
-.Fx 3.2 .
-.Sh AUTHORS
-This manual page was written by
-.An Daniel C. Sobral Aq dcs@FreeBSD.org .
-.Sh BUGS
-The
-.Xr loader 8
-stops reading
-.Nm
-when it encounters a syntax error, so any options which are vital for
-booting a particular system (i.e.\&
-.Dq Va hw.ata.ata_dma Ns "=0" )
-should precede any experimental additions to
-.Nm .
diff --git a/sys/boot/forth/loader.rc b/sys/boot/forth/loader.rc
deleted file mode 100644
index 0bc66579cd0f..000000000000
--- a/sys/boot/forth/loader.rc
+++ /dev/null
@@ -1,23 +0,0 @@
-\ Loader.rc
-\ $FreeBSD$
-\
-\ You should not edit this file! Put any overrides in loader.rc.local
-\ instead as this file can be replaced during system updates.
-\
-\ Includes additional commands
-include /boot/loader.4th
-try-include /boot/loader.rc.local
-
-\ Reads and processes loader.conf variables
-\ NOTE: Change to `initialize' if you enable the below boot menu
-start
-
-\ Tests for password -- executes autoboot first if a password was defined
-check-password
-
-\ Uncomment to enable boot menu
-\ include /boot/beastie.4th
-\ beastie-start
-
-\ Unless set otherwise, autoboot is automatic at this point
-
diff --git a/sys/boot/forth/logo-beastie.4th b/sys/boot/forth/logo-beastie.4th
deleted file mode 100644
index 671eb5e496b2..000000000000
--- a/sys/boot/forth/logo-beastie.4th
+++ /dev/null
@@ -1,61 +0,0 @@
-\ Copyright (c) 2003 Scott Long <scottl@FreeBSD.org>
-\ Copyright (c) 2003 Aleksander Fafula <alex@fafula.com>
-\ Copyright (c) 2006-2015 Devin Teske <dteske@FreeBSD.org>
-\ All rights reserved.
-\
-\ Redistribution and use in source and binary forms, with or without
-\ modification, are permitted provided that the following conditions
-\ are met:
-\ 1. Redistributions of source code must retain the above copyright
-\ notice, this list of conditions and the following disclaimer.
-\ 2. Redistributions in binary form must reproduce the above copyright
-\ notice, this list of conditions and the following disclaimer in the
-\ documentation and/or other materials provided with the distribution.
-\
-\ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-\ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-\ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-\ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-\ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-\ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-\ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-\ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-\ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-\ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-\ SUCH DAMAGE.
-\
-\ $FreeBSD$
-
-46 logoX ! 4 logoY ! \ Initialize logo placement defaults
-
-: logo+ ( x y c-addr/u -- x y' )
- 2swap 2dup at-xy 2swap \ position the cursor
- [char] @ escc! \ replace @ with Esc
- type \ print to the screen
- 1+ \ increase y for next time we're called
-;
-
-: logo ( x y -- ) \ color BSD mascot (19 rows x 34 columns)
-
- s" @[31m, ," logo+
- s" /( )`" logo+
- s" \ \___ / |" logo+
- s" /- @[m_@[31m `-/ '" logo+
- s" (@[m/\/ \@[31m \ /\" logo+
- s" @[m/ / |@[31m ` \" logo+
- s" @[34mO O @[m) @[31m/ |" logo+
- s" @[m`-^--'@[31m`< '" logo+
- s" (_.) _ ) /" logo+
- s" `.___/` /" logo+
- s" `-----' /" logo+
- s" @[33m<----.@[31m __ / __ \" logo+
- s" @[33m<----|====@[31mO)))@[33m==@[31m) \) /@[33m====|" logo+
- s" @[33m<----'@[31m `--' `.__,' \" logo+
- s" | |" logo+
- s" \ / /\" logo+
- s" @[36m______@[31m( (_ / \______/" logo+
- s" @[36m,' ,-----' |" logo+
- s" `--{__________)@[m" logo+
-
- 2drop
-;
diff --git a/sys/boot/forth/logo-beastiebw.4th b/sys/boot/forth/logo-beastiebw.4th
deleted file mode 100644
index 197099cda0bc..000000000000
--- a/sys/boot/forth/logo-beastiebw.4th
+++ /dev/null
@@ -1,59 +0,0 @@
-\ Copyright (c) 2003 Scott Long <scottl@FreeBSD.org>
-\ Copyright (c) 2006-2015 Devin Teske <dteske@FreeBSD.org>
-\ All rights reserved.
-\
-\ Redistribution and use in source and binary forms, with or without
-\ modification, are permitted provided that the following conditions
-\ are met:
-\ 1. Redistributions of source code must retain the above copyright
-\ notice, this list of conditions and the following disclaimer.
-\ 2. Redistributions in binary form must reproduce the above copyright
-\ notice, this list of conditions and the following disclaimer in the
-\ documentation and/or other materials provided with the distribution.
-\
-\ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-\ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-\ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-\ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-\ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-\ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-\ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-\ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-\ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-\ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-\ SUCH DAMAGE.
-\
-\ $FreeBSD$
-
-46 logoX ! 4 logoY ! \ Initialize logo placement defaults
-
-: logo+ ( x y c-addr/u -- x y' )
- 2swap 2dup at-xy 2swap \ position the cursor
- type \ print to the screen
- 1+ \ increase y for next time we're called
-;
-
-: logo ( x y -- ) \ B/W BSD mascot (19 rows x 34 columns)
-
- s" , ," logo+
- s" /( )`" logo+
- s" \ \___ / |" logo+
- s" /- _ `-/ '" logo+
- s" (/\/ \ \ /\" logo+
- s" / / | ` \" logo+
- s" O O ) / |" logo+
- s" `-^--'`< '" logo+
- s" (_.) _ ) /" logo+
- s" `.___/` /" logo+
- s" `-----' /" logo+
- s" <----. __ / __ \" logo+
- s" <----|====O)))==) \) /====|" logo+
- s" <----' `--' `.__,' \" logo+
- s" | |" logo+
- s" \ / /\" logo+
- s" ______( (_ / \______/" logo+
- s" ,' ,-----' |" logo+
- s" `--{__________)" logo+
-
- 2drop
-;
diff --git a/sys/boot/forth/logo-fbsdbw.4th b/sys/boot/forth/logo-fbsdbw.4th
deleted file mode 100644
index d4a532b78f4f..000000000000
--- a/sys/boot/forth/logo-fbsdbw.4th
+++ /dev/null
@@ -1,53 +0,0 @@
-\ Copyright (c) 2003 Scott Long <scottl@FreeBSD.org>
-\ Copyright (c) 2006-2015 Devin Teske <dteske@FreeBSD.org>
-\ All rights reserved.
-\
-\ Redistribution and use in source and binary forms, with or without
-\ modification, are permitted provided that the following conditions
-\ are met:
-\ 1. Redistributions of source code must retain the above copyright
-\ notice, this list of conditions and the following disclaimer.
-\ 2. Redistributions in binary form must reproduce the above copyright
-\ notice, this list of conditions and the following disclaimer in the
-\ documentation and/or other materials provided with the distribution.
-\
-\ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-\ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-\ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-\ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-\ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-\ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-\ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-\ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-\ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-\ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-\ SUCH DAMAGE.
-\
-\ $FreeBSD$
-
-52 logoX ! 9 logoY ! \ Initialize logo placement defaults
-
-: logo+ ( x y c-addr/u -- x y' )
- 2swap 2dup at-xy 2swap \ position the cursor
- type \ print to the screen
- 1+ \ increase y for next time we're called
-;
-
-: logo ( x y -- ) \ "FreeBSD" logo in B/W (13 rows x 21 columns)
-
- s" ______" logo+
- s" | ____| __ ___ ___ " logo+
- s" | |__ | '__/ _ \/ _ \" logo+
- s" | __|| | | __/ __/" logo+
- s" | | | | | | |" logo+
- s" |_| |_| \___|\___|" logo+
- s" ____ _____ _____" logo+
- s" | _ \ / ____| __ \" logo+
- s" | |_) | (___ | | | |" logo+
- s" | _ < \___ \| | | |" logo+
- s" | |_) |____) | |__| |" logo+
- s" | | | |" logo+
- s" |____/|_____/|_____/" logo+
-
- 2drop
-;
diff --git a/sys/boot/forth/logo-orb.4th b/sys/boot/forth/logo-orb.4th
deleted file mode 100644
index c2a504d1ddf5..000000000000
--- a/sys/boot/forth/logo-orb.4th
+++ /dev/null
@@ -1,55 +0,0 @@
-\ Copyright (c) 2006-2015 Devin Teske <dteske@FreeBSD.org>
-\ All rights reserved.
-\
-\ Redistribution and use in source and binary forms, with or without
-\ modification, are permitted provided that the following conditions
-\ are met:
-\ 1. Redistributions of source code must retain the above copyright
-\ notice, this list of conditions and the following disclaimer.
-\ 2. Redistributions in binary form must reproduce the above copyright
-\ notice, this list of conditions and the following disclaimer in the
-\ documentation and/or other materials provided with the distribution.
-\
-\ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-\ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-\ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-\ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-\ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-\ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-\ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-\ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-\ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-\ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-\ SUCH DAMAGE.
-\
-\ $FreeBSD$
-
-46 logoX ! 7 logoY ! \ Initialize logo placement defaults
-
-: logo+ ( x y c-addr/u -- x y' )
- 2swap 2dup at-xy 2swap \ position the cursor
- [char] @ escc! \ replace @ with Esc
- type \ print to the screen
- 1+ \ increase y for next time we're called
-;
-
-: logo ( x y -- ) \ color Orb mascot (15 rows x 30 columns)
-
- s" @[31m``` @[31;1m`@[31m" logo+
- s" s` `.....---...@[31;1m....--.``` -/@[31m" logo+
- s" +o .--` @[31;1m/y:` +.@[31m" logo+
- s" yo`:. @[31;1m:o `+-@[31m" logo+
- s" y/ @[31;1m-/` -o/@[31m" logo+
- s" .- @[31;1m::/sy+:.@[31m" logo+
- s" / @[31;1m`-- /@[31m" logo+
- s" `: @[31;1m:`@[31m" logo+
- s" `: @[31;1m:`@[31m" logo+
- s" / @[31;1m/@[31m" logo+
- s" .- @[31;1m-.@[31m" logo+
- s" -- @[31;1m-.@[31m" logo+
- s" `:` @[31;1m`:`" logo+
- s" @[31;1m.-- `--." logo+
- s" .---.....----.@[m" logo+
-
- 2drop
-;
diff --git a/sys/boot/forth/logo-orbbw.4th b/sys/boot/forth/logo-orbbw.4th
deleted file mode 100644
index 11dc11cabb77..000000000000
--- a/sys/boot/forth/logo-orbbw.4th
+++ /dev/null
@@ -1,54 +0,0 @@
-\ Copyright (c) 2006-2015 Devin Teske <dteske@FreeBSD.org>
-\ All rights reserved.
-\
-\ Redistribution and use in source and binary forms, with or without
-\ modification, are permitted provided that the following conditions
-\ are met:
-\ 1. Redistributions of source code must retain the above copyright
-\ notice, this list of conditions and the following disclaimer.
-\ 2. Redistributions in binary form must reproduce the above copyright
-\ notice, this list of conditions and the following disclaimer in the
-\ documentation and/or other materials provided with the distribution.
-\
-\ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-\ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-\ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-\ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-\ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-\ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-\ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-\ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-\ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-\ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-\ SUCH DAMAGE.
-\
-\ $FreeBSD$
-
-46 logoX ! 7 logoY ! \ Initialize logo placement defaults
-
-: logo+ ( x y c-addr/u -- x y' )
- 2swap 2dup at-xy 2swap \ position the cursor
- type \ print to the screen
- 1+ \ increase y for next time we're called
-;
-
-: logo ( x y -- ) \ B/W Orb mascot (15 rows x 32 columns)
-
- s" ``` `" logo+
- s" s` `.....---.......--.``` -/" logo+
- s" +o .--` /y:` +." logo+
- s" yo`:. :o `+-" logo+
- s" y/ -/` -o/" logo+
- s" .- ::/sy+:." logo+
- s" / `-- /" logo+
- s" `: :`" logo+
- s" `: :`" logo+
- s" / /" logo+
- s" .- -." logo+
- s" -- -." logo+
- s" `:` `:`" logo+
- s" .-- `--." logo+
- s" .---.....----." logo+
-
- 2drop
-;
diff --git a/sys/boot/forth/menu-commands.4th b/sys/boot/forth/menu-commands.4th
deleted file mode 100644
index 9adf30a46b66..000000000000
--- a/sys/boot/forth/menu-commands.4th
+++ /dev/null
@@ -1,418 +0,0 @@
-\ Copyright (c) 2006-2015 Devin Teske <dteske@FreeBSD.org>
-\ All rights reserved.
-\
-\ Redistribution and use in source and binary forms, with or without
-\ modification, are permitted provided that the following conditions
-\ are met:
-\ 1. Redistributions of source code must retain the above copyright
-\ notice, this list of conditions and the following disclaimer.
-\ 2. Redistributions in binary form must reproduce the above copyright
-\ notice, this list of conditions and the following disclaimer in the
-\ documentation and/or other materials provided with the distribution.
-\
-\ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-\ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-\ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-\ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-\ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-\ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-\ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-\ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-\ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-\ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-\ SUCH DAMAGE.
-\
-\ $FreeBSD$
-
-marker task-menu-commands.4th
-
-include /boot/menusets.4th
-
-only forth definitions
-
-variable kernel_state
-variable root_state
-0 kernel_state !
-0 root_state !
-
-also menu-namespace also menu-command-helpers
-
-\
-\ Boot
-\
-
-: init_boot ( N -- N )
- dup
- s" boot_single" getenv -1 <> if
- drop ( n n c-addr -- n n ) \ unused
- toggle_menuitem ( n n -- n n )
- s" set menu_keycode[N]=115" \ base command to execute
- else
- s" set menu_keycode[N]=98" \ base command to execute
- then
- 17 +c! \ replace 'N' with ASCII numeral
- evaluate
-;
-
-\
-\ Alternate Boot
-\
-
-: init_altboot ( N -- N )
- dup
- s" boot_single" getenv -1 <> if
- drop ( n c-addr -- n ) \ unused
- toggle_menuitem ( n -- n )
- s" set menu_keycode[N]=109" \ base command to execute
- else
- s" set menu_keycode[N]=115" \ base command to execute
- then
- 17 +c! \ replace 'N' with ASCII numeral
- evaluate
-;
-
-: altboot ( N -- NOTREACHED )
- s" boot_single" 2dup getenv -1 <> if
- drop ( c-addr/u c-addr -- c-addr/u ) \ unused
- unsetenv ( c-addr/u -- )
- else
- 2drop ( c-addr/u -- ) \ unused
- s" set boot_single=YES" evaluate
- then
- 0 boot ( state -- )
-;
-
-\
-\ ACPI
-\
-
-: acpi_enable ( -- )
- s" set acpi_load=YES" evaluate \ XXX deprecated but harmless
- s" set hint.acpi.0.disabled=0" evaluate
- s" loader.acpi_disabled_by_user" unsetenv
-;
-
-: acpi_disable ( -- )
- s" acpi_load" unsetenv \ XXX deprecated but harmless
- s" set hint.acpi.0.disabled=1" evaluate
- s" set loader.acpi_disabled_by_user=1" evaluate
-;
-
-: toggle_acpi ( N -- N TRUE )
-
- \ Make changes effective _before_ calling menu-redraw
-
- acpienabled? if
- acpi_disable
- else
- acpi_enable
- then
-
- menu-redraw
-
- TRUE \ loop menu again
-;
-
-\
-\ Safe Mode
-\
-
-: safemode_enabled? ( -- flag )
- s" kern.smp.disabled" getenv -1 <> dup if
- swap drop ( c-addr flag -- flag )
- then
-;
-
-: safemode_enable ( -- )
- s" set kern.smp.disabled=1" evaluate
- s" set hw.ata.ata_dma=0" evaluate
- s" set hw.ata.atapi_dma=0" evaluate
- s" set hw.ata.wc=0" evaluate
- s" set hw.eisa_slots=0" evaluate
- s" set kern.eventtimer.periodic=1" evaluate
- s" set kern.geom.part.check_integrity=0" evaluate
-;
-
-: safemode_disable ( -- )
- s" kern.smp.disabled" unsetenv
- s" hw.ata.ata_dma" unsetenv
- s" hw.ata.atapi_dma" unsetenv
- s" hw.ata.wc" unsetenv
- s" hw.eisa_slots" unsetenv
- s" kern.eventtimer.periodic" unsetenv
- s" kern.geom.part.check_integrity" unsetenv
-;
-
-: init_safemode ( N -- N )
- safemode_enabled? if
- toggle_menuitem ( n -- n )
- then
-;
-
-: toggle_safemode ( N -- N TRUE )
- toggle_menuitem
-
- \ Now we're going to make the change effective
-
- dup toggle_stateN @ 0= if
- safemode_disable
- else
- safemode_enable
- then
-
- menu-redraw
-
- TRUE \ loop menu again
-;
-
-\
-\ Single User Mode
-\
-
-: singleuser_enabled? ( -- flag )
- s" boot_single" getenv -1 <> dup if
- swap drop ( c-addr flag -- flag )
- then
-;
-
-: singleuser_enable ( -- )
- s" set boot_single=YES" evaluate
-;
-
-: singleuser_disable ( -- )
- s" boot_single" unsetenv
-;
-
-: init_singleuser ( N -- N )
- singleuser_enabled? if
- toggle_menuitem ( n -- n )
- then
-;
-
-: toggle_singleuser ( N -- N TRUE )
- toggle_menuitem
- menu-redraw
-
- \ Now we're going to make the change effective
-
- dup toggle_stateN @ 0= if
- singleuser_disable
- else
- singleuser_enable
- then
-
- TRUE \ loop menu again
-;
-
-\
-\ Verbose Boot
-\
-
-: verbose_enabled? ( -- flag )
- s" boot_verbose" getenv -1 <> dup if
- swap drop ( c-addr flag -- flag )
- then
-;
-
-: verbose_enable ( -- )
- s" set boot_verbose=YES" evaluate
-;
-
-: verbose_disable ( -- )
- s" boot_verbose" unsetenv
-;
-
-: init_verbose ( N -- N )
- verbose_enabled? if
- toggle_menuitem ( n -- n )
- then
-;
-
-: toggle_verbose ( N -- N TRUE )
- toggle_menuitem
- menu-redraw
-
- \ Now we're going to make the change effective
-
- dup toggle_stateN @ 0= if
- verbose_disable
- else
- verbose_enable
- then
-
- TRUE \ loop menu again
-;
-
-\
-\ Escape to Prompt
-\
-
-: goto_prompt ( N -- N FALSE )
-
- s" set autoboot_delay=NO" evaluate
-
- cr
- ." To get back to the menu, type `menu' and press ENTER" cr
- ." or type `boot' and press ENTER to start FreeBSD." cr
- cr
-
- FALSE \ exit the menu
-;
-
-\
-\ Cyclestate (used by kernel/root below)
-\
-
-: init_cyclestate ( N K -- N )
- over cycle_stateN ( n k -- n k addr )
- begin
- tuck @ ( n k addr -- n addr k c )
- over <> ( n addr k c -- n addr k 0|-1 )
- while
- rot ( n addr k -- addr k n )
- cycle_menuitem
- swap rot ( addr k n -- n k addr )
- repeat
- 2drop ( n k addr -- n )
-;
-
-\
-\ Kernel
-\
-
-: init_kernel ( N -- N )
- kernel_state @ ( n -- n k )
- init_cyclestate ( n k -- n )
-;
-
-: activate_kernel ( N -- N )
- dup cycle_stateN @ ( n -- n n2 )
- dup kernel_state ! ( n n2 -- n n2 ) \ copy for re-initialization
- 48 + ( n n2 -- n n2' ) \ kernel_state to ASCII num
-
- s" set kernel=${kernel_prefix}${kernel[N]}${kernel_suffix}"
- 36 +c! ( n n2 c-addr/u -- n c-addr/u ) \ 'N' to ASCII num
- evaluate ( n c-addr/u -- n ) \ sets $kernel to full kernel-path
-;
-
-: cycle_kernel ( N -- N TRUE )
- cycle_menuitem \ cycle cycle_stateN to next value
- activate_kernel \ apply current cycle_stateN
- menu-redraw \ redraw menu
- TRUE \ loop menu again
-;
-
-\
-\ Root
-\
-
-: init_root ( N -- N )
- root_state @ ( n -- n k )
- init_cyclestate ( n k -- n )
-;
-
-: activate_root ( N -- N )
- dup cycle_stateN @ ( n -- n n2 )
- dup root_state ! ( n n2 -- n n2 ) \ copy for re-initialization
- 48 + ( n n2 -- n n2' ) \ root_state to ASCII num
-
- s" set root=${root_prefix}${root[N]}${root_suffix}"
- 30 +c! ( n n2 c-addr/u -- n c-addr/u ) \ 'N' to ASCII num
- evaluate ( n c-addr/u -- n ) \ sets $root to full kernel-path
-;
-
-: cycle_root ( N -- N TRUE )
- cycle_menuitem \ cycle cycle_stateN to next value
- activate_root \ apply current cycle_stateN
- menu-redraw \ redraw menu
- TRUE \ loop menu again
-;
-
-\
-\ Menusets
-\
-
-: goto_menu ( N M -- N TRUE )
- menu-unset
- menuset-loadsetnum ( n m -- n )
- menu-redraw
- TRUE \ Loop menu again
-;
-
-\
-\ Defaults
-\
-
-: set_default_boot_options ( N -- N TRUE )
- acpi_enable
- safemode_disable
- singleuser_disable
- verbose_disable
- 2 goto_menu
-;
-
-\
-\ Set boot environment defaults
-\
-
-: init_bootenv ( -- )
- s" set menu_caption[1]=${bemenu_current}${vfs.root.mountfrom}" evaluate
- s" set ansi_caption[1]=${beansi_current}${vfs.root.mountfrom}" evaluate
- s" set menu_caption[2]=${bemenu_bootfs}${zfs_be_active}" evaluate
- s" set ansi_caption[2]=${beansi_bootfs}${zfs_be_active}" evaluate
- s" set menu_caption[3]=${bemenu_page}${zfs_be_currpage}${bemenu_pageof}${zfs_be_pages}" evaluate
- s" set ansi_caption[3]=${beansi_page}${zfs_be_currpage}${bemenu_pageof}${zfs_be_pages}" evaluate
-;
-
-\
-\ Redraw the entire screen. A long BE name can corrupt the menu
-\
-
-: be_draw_screen
- clear \ Clear the screen (in screen.4th)
- print_version \ print version string (bottom-right; see version.4th)
- draw-beastie \ Draw FreeBSD logo at right (in beastie.4th)
- draw-brand \ Draw brand.4th logo at top (in brand.4th)
- menu-init \ Initialize menu and draw bounding box (in menu.4th)
-;
-
-\
-\ Select a boot environment
-\
-
-: set_bootenv ( N -- N TRUE )
- dup s" set vfs.root.mountfrom=${bootenv_root[E]}" 38 +c! evaluate
- s" set currdev=${vfs.root.mountfrom}:" evaluate
- s" unload" evaluate
- free-module-options
- s" /boot/defaults/loader.conf" read-conf
- s" /boot/loader.conf" read-conf
- s" /boot/loader.conf.local" read-conf
- init_bootenv
- be_draw_screen
- menu-redraw
- TRUE
-;
-
-\
-\ Switch to the next page of boot environments
-\
-
-: set_be_page ( N -- N TRUE )
- s" zfs_be_currpage" getenv dup -1 = if
- drop s" 1"
- else
- 0 s>d 2swap
- >number ( ud caddr/u -- ud' caddr'/u' ) \ convert string to numbers
- 2drop \ drop the string
- 1 um/mod ( ud u1 -- u2 u3 ) \ convert double ud' to single u3' and remainder u2
- swap drop ( ud2 u3 -- u3 ) \ drop the remainder u2
- 1+ \ increment the page number
- s>d <# #s #> \ convert back to a string
- then
- s" zfs_be_currpage" setenv
- s" reloadbe" evaluate
- 3 goto_menu
-;
-
-only forth definitions
diff --git a/sys/boot/forth/menu.4th b/sys/boot/forth/menu.4th
deleted file mode 100644
index e3fe0f7d776e..000000000000
--- a/sys/boot/forth/menu.4th
+++ /dev/null
@@ -1,1319 +0,0 @@
-\ Copyright (c) 2003 Scott Long <scottl@FreeBSD.org>
-\ Copyright (c) 2003 Aleksander Fafula <alex@fafula.com>
-\ Copyright (c) 2006-2015 Devin Teske <dteske@FreeBSD.org>
-\ All rights reserved.
-\
-\ Redistribution and use in source and binary forms, with or without
-\ modification, are permitted provided that the following conditions
-\ are met:
-\ 1. Redistributions of source code must retain the above copyright
-\ notice, this list of conditions and the following disclaimer.
-\ 2. Redistributions in binary form must reproduce the above copyright
-\ notice, this list of conditions and the following disclaimer in the
-\ documentation and/or other materials provided with the distribution.
-\
-\ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-\ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-\ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-\ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-\ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-\ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-\ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-\ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-\ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-\ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-\ SUCH DAMAGE.
-\
-\ $FreeBSD$
-
-marker task-menu.4th
-
-\ Frame drawing
-include /boot/frames.4th
-
-vocabulary menu-infrastructure
-vocabulary menu-namespace
-vocabulary menu-command-helpers
-
-only forth also menu-infrastructure definitions
-
-f_double \ Set frames to double (see frames.4th). Replace with
- \ f_single if you want single frames.
-46 constant dot \ ASCII definition of a period (in decimal)
-
- 5 constant menu_default_x \ default column position of timeout
-10 constant menu_default_y \ default row position of timeout msg
- 4 constant menu_timeout_default_x \ default column position of timeout
-23 constant menu_timeout_default_y \ default row position of timeout msg
-10 constant menu_timeout_default \ default timeout (in seconds)
-
-\ Customize the following values with care
-
- 1 constant menu_start \ Numerical prefix of first menu item
-dot constant bullet \ Menu bullet (appears after numerical prefix)
- 5 constant menu_x \ Row position of the menu (from the top)
- 10 constant menu_y \ Column position of the menu (from left side)
-
-\ Menu Appearance
-variable menuidx \ Menu item stack for number prefixes
-variable menurow \ Menu item stack for positioning
-variable menubllt \ Menu item bullet
-
-\ Menu Positioning
-variable menuX \ Menu X offset (columns)
-variable menuY \ Menu Y offset (rows)
-
-\ Menu-item elements
-variable menurebootadded
-
-\ Parsing of kernels into menu-items
-variable kernidx
-variable kernlen
-variable kernmenuidx
-
-\ Menu timer [count-down] variables
-variable menu_timeout_enabled \ timeout state (internal use only)
-variable menu_time \ variable for tracking the passage of time
-variable menu_timeout \ determined configurable delay duration
-variable menu_timeout_x \ column position of timeout message
-variable menu_timeout_y \ row position of timeout message
-
-\ Containers for parsing kernels into menu-items
-create kerncapbuf 64 allot
-create kerndefault 64 allot
-create kernelsbuf 256 allot
-
-only forth also menu-namespace definitions
-
-\ Menu-item key association/detection
-variable menukey1
-variable menukey2
-variable menukey3
-variable menukey4
-variable menukey5
-variable menukey6
-variable menukey7
-variable menukey8
-variable menureboot
-variable menuacpi
-variable menuoptions
-variable menukernel
-
-\ Menu initialization status variables
-variable init_state1
-variable init_state2
-variable init_state3
-variable init_state4
-variable init_state5
-variable init_state6
-variable init_state7
-variable init_state8
-
-\ Boolean option status variables
-variable toggle_state1
-variable toggle_state2
-variable toggle_state3
-variable toggle_state4
-variable toggle_state5
-variable toggle_state6
-variable toggle_state7
-variable toggle_state8
-
-\ Array option status variables
-variable cycle_state1
-variable cycle_state2
-variable cycle_state3
-variable cycle_state4
-variable cycle_state5
-variable cycle_state6
-variable cycle_state7
-variable cycle_state8
-
-\ Containers for storing the initial caption text
-create init_text1 64 allot
-create init_text2 64 allot
-create init_text3 64 allot
-create init_text4 64 allot
-create init_text5 64 allot
-create init_text6 64 allot
-create init_text7 64 allot
-create init_text8 64 allot
-
-only forth definitions
-
-: arch-i386? ( -- BOOL ) \ Returns TRUE (-1) on i386, FALSE (0) otherwise.
- s" arch-i386" environment? dup if
- drop
- then
-;
-
-: acpipresent? ( -- flag ) \ Returns TRUE if ACPI is present, FALSE otherwise
- s" hint.acpi.0.rsdp" getenv
- dup -1 = if
- drop false exit
- then
- 2drop
- true
-;
-
-: acpienabled? ( -- flag ) \ Returns TRUE if ACPI is enabled, FALSE otherwise
- s" hint.acpi.0.disabled" getenv
- dup -1 <> if
- s" 0" compare 0<> if
- false exit
- then
- else
- drop
- then
- true
-;
-
-: +c! ( N C-ADDR/U K -- C-ADDR/U )
- 3 pick 3 pick ( n c-addr/u k -- n c-addr/u k n c-addr )
- rot + c! ( n c-addr/u k n c-addr -- n c-addr/u )
- rot drop ( n c-addr/u -- c-addr/u )
-;
-
-only forth also menu-namespace definitions
-
-\ Forth variables
-: namespace ( C-ADDR/U N -- ) also menu-namespace +c! evaluate previous ;
-: menukeyN ( N -- ADDR ) s" menukeyN" 7 namespace ;
-: init_stateN ( N -- ADDR ) s" init_stateN" 10 namespace ;
-: toggle_stateN ( N -- ADDR ) s" toggle_stateN" 12 namespace ;
-: cycle_stateN ( N -- ADDR ) s" cycle_stateN" 11 namespace ;
-: init_textN ( N -- C-ADDR ) s" init_textN" 9 namespace ;
-
-\ Environment variables
-: kernel[x] ( N -- C-ADDR/U ) s" kernel[x]" 7 +c! ;
-: menu_init[x] ( N -- C-ADDR/U ) s" menu_init[x]" 10 +c! ;
-: menu_command[x] ( N -- C-ADDR/U ) s" menu_command[x]" 13 +c! ;
-: menu_caption[x] ( N -- C-ADDR/U ) s" menu_caption[x]" 13 +c! ;
-: ansi_caption[x] ( N -- C-ADDR/U ) s" ansi_caption[x]" 13 +c! ;
-: menu_keycode[x] ( N -- C-ADDR/U ) s" menu_keycode[x]" 13 +c! ;
-: toggled_text[x] ( N -- C-ADDR/U ) s" toggled_text[x]" 13 +c! ;
-: toggled_ansi[x] ( N -- C-ADDR/U ) s" toggled_ansi[x]" 13 +c! ;
-: menu_caption[x][y] ( N M -- C-ADDR/U ) s" menu_caption[x][y]" 16 +c! 13 +c! ;
-: ansi_caption[x][y] ( N M -- C-ADDR/U ) s" ansi_caption[x][y]" 16 +c! 13 +c! ;
-
-also menu-infrastructure definitions
-
-\ This function prints a menu item at menuX (row) and menuY (column), returns
-\ the incremental decimal ASCII value associated with the menu item, and
-\ increments the cursor position to the next row for the creation of the next
-\ menu item. This function is called by the menu-create function. You need not
-\ call it directly.
-\
-: printmenuitem ( menu_item_str -- ascii_keycode )
-
- loader_color? if [char] ^ escc! then
-
- menurow dup @ 1+ swap ! ( increment menurow )
- menuidx dup @ 1+ swap ! ( increment menuidx )
-
- \ Calculate the menuitem row position
- menurow @ menuY @ +
-
- \ Position the cursor at the menuitem position
- dup menuX @ swap at-xy
-
- \ Print the value of menuidx
- loader_color? dup ( -- bool bool )
- if b then
- menuidx @ .
- if me then
-
- \ Move the cursor forward 1 column
- dup menuX @ 1+ swap at-xy
-
- menubllt @ emit \ Print the menu bullet using the emit function
-
- \ Move the cursor to the 3rd column from the current position
- \ to allow for a space between the numerical prefix and the
- \ text caption
- menuX @ 3 + swap at-xy
-
- \ Print the menu caption (we expect a string to be on the stack
- \ prior to invoking this function)
- type
-
- \ Here we will add the ASCII decimal of the numerical prefix
- \ to the stack (decimal ASCII for `1' is 49) as a "return value"
- menuidx @ 48 +
-;
-
-\ This function prints the appropriate menuitem basename to the stack if an
-\ ACPI option is to be presented to the user, otherwise returns -1. Used
-\ internally by menu-create, you need not (nor should you) call this directly.
-\
-: acpimenuitem ( -- C-Addr/U | -1 )
-
- arch-i386? if
- acpipresent? if
- acpienabled? if
- loader_color? if
- s" toggled_ansi[x]"
- else
- s" toggled_text[x]"
- then
- else
- loader_color? if
- s" ansi_caption[x]"
- else
- s" menu_caption[x]"
- then
- then
- else
- menuidx dup @ 1+ swap ! ( increment menuidx )
- -1
- then
- else
- -1
- then
-;
-
-: delim? ( C -- BOOL )
- dup 32 = ( c -- c bool ) \ [sp] space
- over 9 = or ( c bool -- c bool ) \ [ht] horizontal tab
- over 10 = or ( c bool -- c bool ) \ [nl] newline
- over 13 = or ( c bool -- c bool ) \ [cr] carriage return
- over [char] , = or ( c bool -- c bool ) \ comma
- swap drop ( c bool -- bool ) \ return boolean
-;
-
-\ This function parses $kernels into variables that are used by the menu to
-\ display which kernel to boot when the [overloaded] `boot' word is interpreted.
-\ Used internally by menu-create, you need not (nor should you) call this
-\ directly.
-\
-: parse-kernels ( N -- ) \ kernidx
- kernidx ! ( n -- ) \ store provided `x' value
- [char] 0 kernmenuidx ! \ initialize `y' value for menu_caption[x][y]
-
- \ Attempt to get a list of kernels, fall back to sensible default
- s" kernels" getenv dup -1 = if
- drop ( cruft )
- s" kernel kernel.old"
- then ( -- c-addr/u )
-
- \ Check to see if the user has altered $kernel by comparing it against
- \ $kernel[N] where N is kernel_state (the actively displayed kernel).
- s" kernel_state" evaluate @ 48 + s" kernel[N]" 7 +c! getenv
- dup -1 <> if
- s" kernel" getenv dup -1 = if
- drop ( cruft ) s" "
- then
- 2swap 2over compare 0= if
- 2drop FALSE ( skip below conditional )
- else \ User has changed $kernel
- TRUE ( slurp in new value )
- then
- else \ We haven't yet parsed $kernels into $kernel[N]
- drop ( getenv cruft )
- s" kernel" getenv dup -1 = if
- drop ( cruft ) s" "
- then
- TRUE ( slurp in initial value )
- then ( c-addr/u -- c-addr/u c-addr/u,-1 | 0 )
- if \ slurp new value into kerndefault
- kerndefault 1+ 0 2swap strcat swap 1- c!
- then
-
- \ Clear out existing parsed-kernels
- kernidx @ [char] 0
- begin
- dup kernel[x] unsetenv
- 2dup menu_caption[x][y] unsetenv
- 2dup ansi_caption[x][y] unsetenv
- 1+ dup [char] 8 >
- until
- 2drop
-
- \ Step through the string until we find the end
- begin
- 0 kernlen ! \ initialize length of value
-
- \ Skip leading whitespace and/or comma delimiters
- begin
- dup 0<> if
- over c@ delim? ( c-addr/u -- c-addr/u bool )
- else
- false ( c-addr/u -- c-addr/u bool )
- then
- while
- 1- swap 1+ swap ( c-addr/u -- c-addr'/u' )
- repeat
- ( c-addr/u -- c-addr'/u' )
-
- dup 0= if \ end of string while eating whitespace
- 2drop ( c-addr/u -- )
- kernmenuidx @ [char] 0 <> if \ found at least one
- exit \ all done
- then
-
- \ No entries in $kernels; use $kernel instead
- s" kernel" getenv dup -1 = if
- drop ( cruft ) s" "
- then ( -- c-addr/u )
- dup kernlen ! \ store entire value length as kernlen
- else
- \ We're still within $kernels parsing toward the end;
- \ find delimiter/end to determine kernlen
- 2dup ( c-addr/u -- c-addr/u c-addr/u )
- begin dup 0<> while
- over c@ delim? if
- drop 0 ( break ) \ found delimiter
- else
- kernlen @ 1+ kernlen ! \ incrememnt
- 1- swap 1+ swap \ c-addr++ u--
- then
- repeat
- 2drop ( c-addr/u c-addr'/u' -- c-addr/u )
-
- \ If this is the first entry, compare it to $kernel
- \ If different, then insert $kernel beforehand
- kernmenuidx @ [char] 0 = if
- over kernlen @ kerndefault count compare if
- kernelsbuf 0 kerndefault count strcat
- s" ," strcat 2swap strcat
- kerndefault count swap drop kernlen !
- then
- then
- then
- ( c-addr/u -- c-addr'/u' )
-
- \ At this point, we should have something on the stack to store
- \ as the next kernel menu option; start assembling variables
-
- over kernlen @ ( c-addr/u -- c-addr/u c-addr/u2 )
-
- \ Assign first to kernel[x]
- 2dup kernmenuidx @ kernel[x] setenv
-
- \ Assign second to menu_caption[x][y]
- kerncapbuf 0 s" [K]ernel: " strcat
- 2over strcat
- kernidx @ kernmenuidx @ menu_caption[x][y]
- setenv
-
- \ Assign third to ansi_caption[x][y]
- kerncapbuf 0 s" @[1mK@[37mernel: " [char] @ escc! strcat
- kernmenuidx @ [char] 0 = if
- s" default/@[32m"
- else
- s" @[34;1m"
- then
- [char] @ escc! strcat
- 2over strcat
- s" @[37m" [char] @ escc! strcat
- kernidx @ kernmenuidx @ ansi_caption[x][y]
- setenv
-
- 2drop ( c-addr/u c-addr/u2 -- c-addr/u )
-
- kernmenuidx @ 1+ dup kernmenuidx ! [char] 8 > if
- 2drop ( c-addr/u -- ) exit
- then
-
- kernlen @ - swap kernlen @ + swap ( c-addr/u -- c-addr'/u' )
- again
-;
-
-\ This function goes through the kernels that were discovered by the
-\ parse-kernels function [above], adding " (# of #)" text to the end of each
-\ caption.
-\
-: tag-kernels ( -- )
- kernidx @ ( -- x ) dup 0= if exit then
- [char] 0 s" (Y of Z)" ( x -- x y c-addr/u )
- kernmenuidx @ -rot 7 +c! \ Replace 'Z' with number of kernels parsed
- begin
- 2 pick 1+ -rot 2 +c! \ Replace 'Y' with current ASCII num
-
- 2over menu_caption[x][y] getenv dup -1 <> if
- 2dup + 1- c@ [char] ) = if
- 2drop \ Already tagged
- else
- kerncapbuf 0 2swap strcat
- 2over strcat
- 5 pick 5 pick menu_caption[x][y] setenv
- then
- else
- drop ( getenv cruft )
- then
-
- 2over ansi_caption[x][y] getenv dup -1 <> if
- 2dup + 1- c@ [char] ) = if
- 2drop \ Already tagged
- else
- kerncapbuf 0 2swap strcat
- 2over strcat
- 5 pick 5 pick ansi_caption[x][y] setenv
- then
- else
- drop ( getenv cruft )
- then
-
- rot 1+ dup [char] 8 > if
- -rot 2drop TRUE ( break )
- else
- -rot FALSE
- then
- until
- 2drop ( x y -- )
-;
-
-\ This function creates the list of menu items. This function is called by the
-\ menu-display function. You need not call it directly.
-\
-: menu-create ( -- )
-
- \ Print the frame caption at (x,y)
- s" loader_menu_title" getenv dup -1 = if
- drop s" Welcome to FreeBSD"
- then
- TRUE ( use default alignment )
- s" loader_menu_title_align" getenv dup -1 <> if
- 2dup s" left" compare-insensitive 0= if ( 1 )
- 2drop ( c-addr/u ) drop ( bool )
- menuX @ menuY @ 1-
- FALSE ( don't use default alignment )
- else ( 1 ) 2dup s" right" compare-insensitive 0= if ( 2 )
- 2drop ( c-addr/u ) drop ( bool )
- menuX @ 42 + 4 - over - menuY @ 1-
- FALSE ( don't use default alignment )
- else ( 2 ) 2drop ( c-addr/u ) then ( 1 ) then
- else
- drop ( getenv cruft )
- then
- if ( use default center alignement? )
- menuX @ 19 + over 2 / - menuY @ 1-
- then
- at-xy type
-
- \ If $menu_init is set, evaluate it (allowing for whole menus to be
- \ constructed dynamically -- as this function could conceivably set
- \ the remaining environment variables to construct the menu entirely).
- \
- s" menu_init" getenv dup -1 <> if
- evaluate
- else
- drop
- then
-
- \ Print our menu options with respective key/variable associations.
- \ `printmenuitem' ends by adding the decimal ASCII value for the
- \ numerical prefix to the stack. We store the value left on the stack
- \ to the key binding variable for later testing against a character
- \ captured by the `getkey' function.
-
- \ Note that any menu item beyond 9 will have a numerical prefix on the
- \ screen consisting of the first digit (ie. 1 for the tenth menu item)
- \ and the key required to activate that menu item will be the decimal
- \ ASCII of 48 plus the menu item (ie. 58 for the tenth item, aka. `:')
- \ which is misleading and not desirable.
- \
- \ Thus, we do not allow more than 8 configurable items on the menu
- \ (with "Reboot" as the optional ninth and highest numbered item).
-
- \
- \ Initialize the ACPI option status.
- \
- 0 menuacpi !
- s" menu_acpi" getenv -1 <> if
- c@ dup 48 > over 57 < and if ( '1' <= c1 <= '8' )
- menuacpi !
- arch-i386? if acpipresent? if
- \
- \ Set menu toggle state to active state
- \ (required by generic toggle_menuitem)
- \
- acpienabled? menuacpi @ toggle_stateN !
- then then
- else
- drop
- then
- then
-
- \
- \ Initialize kernel captions after parsing $kernels
- \
- 0 menukernel !
- s" menu_kernel" getenv -1 <> if
- c@ dup 48 > over 57 < and if ( '1' <= c1 <= '8' )
- dup menukernel !
- dup parse-kernels tag-kernels
-
- \ Get the current cycle state (entry to use)
- s" kernel_state" evaluate @ 48 + ( n -- n y )
-
- \ If state is invalid, reset
- dup kernmenuidx @ 1- > if
- drop [char] 0 ( n y -- n 48 )
- 0 s" kernel_state" evaluate !
- over s" init_kernel" evaluate drop
- then
-
- \ Set the current non-ANSI caption
- 2dup swap dup ( n y -- n y y n n )
- s" set menu_caption[x]=$menu_caption[x][y]"
- 17 +c! 34 +c! 37 +c! evaluate
- ( n y y n n c-addr/u -- n y )
-
- \ Set the current ANSI caption
- 2dup swap dup ( n y -- n y y n n )
- s" set ansi_caption[x]=$ansi_caption[x][y]"
- 17 +c! 34 +c! 37 +c! evaluate
- ( n y y n n c-addr/u -- n y )
-
- \ Initialize cycle state from stored value
- 48 - ( n y -- n k )
- s" init_cyclestate" evaluate ( n k -- n )
-
- \ Set $kernel to $kernel[y]
- s" activate_kernel" evaluate ( n -- n )
- then
- drop
- then
-
- \
- \ Initialize the menu_options visual separator.
- \
- 0 menuoptions !
- s" menu_options" getenv -1 <> if
- c@ dup 48 > over 57 < and if ( '1' <= c1 <= '8' )
- menuoptions !
- else
- drop
- then
- then
-
- \ Initialize "Reboot" menu state variable (prevents double-entry)
- false menurebootadded !
-
- menu_start
- 1- menuidx ! \ Initialize the starting index for the menu
- 0 menurow ! \ Initialize the starting position for the menu
-
- 49 \ Iterator start (loop range 49 to 56; ASCII '1' to '8')
- begin
- \ If the "Options:" separator, print it.
- dup menuoptions @ = if
- \ Optionally add a reboot option to the menu
- s" menu_reboot" getenv -1 <> if
- drop
- s" Reboot" printmenuitem menureboot !
- true menurebootadded !
- then
-
- menuX @
- menurow @ 2 + menurow !
- menurow @ menuY @ +
- at-xy
- s" menu_optionstext" getenv dup -1 <> if
- type
- else
- drop ." Options:"
- then
- then
-
- \ If this is the ACPI menu option, act accordingly.
- dup menuacpi @ = if
- dup acpimenuitem ( n -- n n c-addr/u | n n -1 )
- dup -1 <> if
- 13 +c! ( n n c-addr/u -- n c-addr/u )
- \ replace 'x' with n
- else
- swap drop ( n n -1 -- n -1 )
- over menu_command[x] unsetenv
- then
- else
- \ make sure we have not already initialized this item
- dup init_stateN dup @ 0= if
- 1 swap !
-
- \ If this menuitem has an initializer, run it
- dup menu_init[x]
- getenv dup -1 <> if
- evaluate
- else
- drop
- then
- else
- drop
- then
-
- dup
- loader_color? if
- ansi_caption[x]
- else
- menu_caption[x]
- then
- then
-
- dup -1 <> if
- \ test for environment variable
- getenv dup -1 <> if
- printmenuitem ( c-addr/u -- n )
- dup menukeyN !
- else
- drop
- then
- else
- drop
- then
-
- 1+ dup 56 > \ add 1 to iterator, continue if less than 57
- until
- drop \ iterator
-
- \ Optionally add a reboot option to the menu
- menurebootadded @ true <> if
- s" menu_reboot" getenv -1 <> if
- drop \ no need for the value
- s" Reboot" \ menu caption (required by printmenuitem)
-
- printmenuitem
- menureboot !
- else
- 0 menureboot !
- then
- then
-;
-
-\ Takes a single integer on the stack and updates the timeout display. The
-\ integer must be between 0 and 9 (we will only update a single digit in the
-\ source message).
-\
-: menu-timeout-update ( N -- )
-
- \ Enforce minimum/maximum
- dup 9 > if drop 9 then
- dup 0 < if drop 0 then
-
- s" Autoboot in N seconds. [Space] to pause" ( n -- n c-addr/u )
-
- 2 pick 0> if
- rot 48 + -rot ( n c-addr/u -- n' c-addr/u ) \ convert to ASCII
- 12 +c! ( n' c-addr/u -- c-addr/u ) \ replace 'N' above
-
- menu_timeout_x @ menu_timeout_y @ at-xy \ position cursor
- type ( c-addr/u -- ) \ print message
- else
- menu_timeout_x @ menu_timeout_y @ at-xy \ position cursor
- spaces ( n c-addr/u -- n c-addr ) \ erase message
- 2drop ( n c-addr -- )
- then
-
- 0 25 at-xy ( position cursor back at bottom-left )
-;
-
-\ This function blocks program flow (loops forever) until a key is pressed.
-\ The key that was pressed is added to the top of the stack in the form of its
-\ decimal ASCII representation. This function is called by the menu-display
-\ function. You need not call it directly.
-\
-: getkey ( -- ascii_keycode )
-
- begin \ loop forever
-
- menu_timeout_enabled @ 1 = if
- ( -- )
- seconds ( get current time: -- N )
- dup menu_time @ <> if ( has time elapsed?: N N N -- N )
-
- \ At least 1 second has elapsed since last loop
- \ so we will decrement our "timeout" (really a
- \ counter, insuring that we do not proceed too
- \ fast) and update our timeout display.
-
- menu_time ! ( update time record: N -- )
- menu_timeout @ ( "time" remaining: -- N )
- dup 0> if ( greater than 0?: N N 0 -- N )
- 1- ( decrement counter: N -- N )
- dup menu_timeout !
- ( re-assign: N N Addr -- N )
- then
- ( -- N )
-
- dup 0= swap 0< or if ( N <= 0?: N N -- )
- \ halt the timer
- 0 menu_timeout ! ( 0 Addr -- )
- 0 menu_timeout_enabled ! ( 0 Addr -- )
- then
-
- \ update the timer display ( N -- )
- menu_timeout @ menu-timeout-update
-
- menu_timeout @ 0= if
- \ We've reached the end of the timeout
- \ (user did not cancel by pressing ANY
- \ key)
-
- s" menu_timeout_command" getenv dup
- -1 = if
- drop \ clean-up
- else
- evaluate
- then
- then
-
- else ( -- N )
- \ No [detectable] time has elapsed (in seconds)
- drop ( N -- )
- then
- ( -- )
- then
-
- key? if \ Was a key pressed? (see loader(8))
-
- \ An actual key was pressed (if the timeout is running,
- \ kill it regardless of which key was pressed)
- menu_timeout @ 0<> if
- 0 menu_timeout !
- 0 menu_timeout_enabled !
-
- \ clear screen of timeout message
- 0 menu-timeout-update
- then
-
- \ get the key that was pressed and exit (if we
- \ get a non-zero ASCII code)
- key dup 0<> if
- exit
- else
- drop
- then
- then
- 50 ms \ sleep for 50 milliseconds (see loader(8))
-
- again
-;
-
-: menu-erase ( -- ) \ Erases menu and resets positioning variable to position 1.
-
- \ Clear the screen area associated with the interactive menu
- menuX @ menuY @
- 2dup at-xy 38 spaces 1+ 2dup at-xy 38 spaces 1+
- 2dup at-xy 38 spaces 1+ 2dup at-xy 38 spaces 1+
- 2dup at-xy 38 spaces 1+ 2dup at-xy 38 spaces 1+
- 2dup at-xy 38 spaces 1+ 2dup at-xy 38 spaces 1+
- 2dup at-xy 38 spaces 1+ 2dup at-xy 38 spaces 1+
- 2dup at-xy 38 spaces 1+ 2dup at-xy 38 spaces
- 2drop
-
- \ Reset the starting index and position for the menu
- menu_start 1- menuidx !
- 0 menurow !
-;
-
-only forth
-also menu-infrastructure
-also menu-namespace
-also menu-command-helpers definitions
-
-: toggle_menuitem ( N -- N ) \ toggles caption text and internal menuitem state
-
- \ ASCII numeral equal to user-selected menu item must be on the stack.
- \ We do not modify the stack, so the ASCII numeral is left on top.
-
- dup init_textN c@ 0= if
- \ NOTE: no need to check toggle_stateN since the first time we
- \ are called, we will populate init_textN. Further, we don't
- \ need to test whether menu_caption[x] (ansi_caption[x] when
- \ loader_color?=1) is available since we would not have been
- \ called if the caption was NULL.
-
- \ base name of environment variable
- dup ( n -- n n ) \ key pressed
- loader_color? if
- ansi_caption[x]
- else
- menu_caption[x]
- then
- getenv dup -1 <> if
-
- 2 pick ( n c-addr/u -- n c-addr/u n )
- init_textN ( n c-addr/u n -- n c-addr/u c-addr )
-
- \ now we have the buffer c-addr on top
- \ ( followed by c-addr/u of current caption )
-
- \ Copy the current caption into our buffer
- 2dup c! -rot \ store strlen at first byte
- begin
- rot 1+ \ bring alt addr to top and increment
- -rot -rot \ bring buffer addr to top
- 2dup c@ swap c! \ copy current character
- 1+ \ increment buffer addr
- rot 1- \ bring buffer len to top and decrement
- dup 0= \ exit loop if buffer len is zero
- until
- 2drop \ buffer len/addr
- drop \ alt addr
-
- else
- drop
- then
- then
-
- \ Now we are certain to have init_textN populated with the initial
- \ value of menu_caption[x] (ansi_caption[x] with loader_color enabled).
- \ We can now use init_textN as the untoggled caption and
- \ toggled_text[x] (toggled_ansi[x] with loader_color enabled) as the
- \ toggled caption and store the appropriate value into menu_caption[x]
- \ (again, ansi_caption[x] with loader_color enabled). Last, we'll
- \ negate the toggled state so that we reverse the flow on subsequent
- \ calls.
-
- dup toggle_stateN @ 0= if
- \ state is OFF, toggle to ON
-
- dup ( n -- n n ) \ key pressed
- loader_color? if
- toggled_ansi[x]
- else
- toggled_text[x]
- then
- getenv dup -1 <> if
- \ Assign toggled text to menu caption
- 2 pick ( n c-addr/u -- n c-addr/u n ) \ key pressed
- loader_color? if
- ansi_caption[x]
- else
- menu_caption[x]
- then
- setenv
- else
- \ No toggled text, keep the same caption
- drop ( n -1 -- n ) \ getenv cruft
- then
-
- true \ new value of toggle state var (to be stored later)
- else
- \ state is ON, toggle to OFF
-
- dup init_textN count ( n -- n c-addr/u )
-
- \ Assign init_textN text to menu caption
- 2 pick ( n c-addr/u -- n c-addr/u n ) \ key pressed
- loader_color? if
- ansi_caption[x]
- else
- menu_caption[x]
- then
- setenv
-
- false \ new value of toggle state var (to be stored below)
- then
-
- \ now we'll store the new toggle state (on top of stack)
- over toggle_stateN !
-;
-
-: cycle_menuitem ( N -- N ) \ cycles through array of choices for a menuitem
-
- \ ASCII numeral equal to user-selected menu item must be on the stack.
- \ We do not modify the stack, so the ASCII numeral is left on top.
-
- dup cycle_stateN dup @ 1+ \ get value and increment
-
- \ Before assigning the (incremented) value back to the pointer,
- \ let's test for the existence of this particular array element.
- \ If the element exists, we'll store index value and move on.
- \ Otherwise, we'll loop around to zero and store that.
-
- dup 48 + ( n addr k -- n addr k k' )
- \ duplicate array index and convert to ASCII numeral
-
- 3 pick swap ( n addr k k' -- n addr k n k' ) \ (n,k') as (x,y)
- loader_color? if
- ansi_caption[x][y]
- else
- menu_caption[x][y]
- then
- ( n addr k n k' -- n addr k c-addr/u )
-
- \ Now test for the existence of our incremented array index in the
- \ form of $menu_caption[x][y] ($ansi_caption[x][y] with loader_color
- \ enabled) as set in loader.rc(5), et. al.
-
- getenv dup -1 = if
- \ No caption set for this array index. Loop back to zero.
-
- drop ( n addr k -1 -- n addr k ) \ getenv cruft
- drop 0 ( n addr k -- n addr 0 ) \ new value to store later
-
- 2 pick [char] 0 ( n addr 0 -- n addr 0 n 48 ) \ (n,48) as (x,y)
- loader_color? if
- ansi_caption[x][y]
- else
- menu_caption[x][y]
- then
- ( n addr 0 n 48 -- n addr 0 c-addr/u )
- getenv dup -1 = if
- \ Highly unlikely to occur, but to ensure things move
- \ along smoothly, allocate a temporary NULL string
- drop ( cruft ) s" "
- then
- then
-
- \ At this point, we should have the following on the stack (in order,
- \ from bottom to top):
- \
- \ n - Ascii numeral representing the menu choice (inherited)
- \ addr - address of our internal cycle_stateN variable
- \ k - zero-based number we intend to store to the above
- \ c-addr/u - string value we intend to store to menu_caption[x]
- \ (or ansi_caption[x] with loader_color enabled)
- \
- \ Let's perform what we need to with the above.
-
- \ Assign array value text to menu caption
- 4 pick ( n addr k c-addr/u -- n addr k c-addr/u n )
- loader_color? if
- ansi_caption[x]
- else
- menu_caption[x]
- then
- setenv
-
- swap ! ( n addr k -- n ) \ update array state variable
-;
-
-only forth definitions also menu-infrastructure
-
-\ Erase and redraw the menu. Useful if you change a caption and want to
-\ update the menu to reflect the new value.
-\
-: menu-redraw ( -- )
- menu-erase
- menu-create
-;
-
-\ This function initializes the menu. Call this from your `loader.rc' file
-\ before calling any other menu-related functions.
-\
-: menu-init ( -- )
- menu_start
- 1- menuidx ! \ Initialize the starting index for the menu
- 0 menurow ! \ Initialize the starting position for the menu
-
- \ Assign configuration values
- s" loader_menu_y" getenv dup -1 = if
- drop \ no custom row position
- menu_default_y
- else
- \ make sure custom position is a number
- ?number 0= if
- menu_default_y \ or use default
- then
- then
- menuY !
- s" loader_menu_x" getenv dup -1 = if
- drop \ no custom column position
- menu_default_x
- else
- \ make sure custom position is a number
- ?number 0= if
- menu_default_x \ or use default
- then
- then
- menuX !
-
- \ Interpret a custom frame type for the menu
- TRUE ( draw a box? default yes, but might be altered below )
- s" loader_menu_frame" getenv dup -1 = if ( 1 )
- drop \ no custom frame type
- else ( 1 ) 2dup s" single" compare-insensitive 0= if ( 2 )
- f_single ( see frames.4th )
- else ( 2 ) 2dup s" double" compare-insensitive 0= if ( 3 )
- f_double ( see frames.4th )
- else ( 3 ) s" none" compare-insensitive 0= if ( 4 )
- drop FALSE \ don't draw a box
- ( 4 ) then ( 3 ) then ( 2 ) then ( 1 ) then
- if
- 42 13 menuX @ 3 - menuY @ 1- box \ Draw frame (w,h,x,y)
- then
-
- 0 25 at-xy \ Move cursor to the bottom for output
-;
-
-also menu-namespace
-
-\ Main function. Call this from your `loader.rc' file.
-\
-: menu-display ( -- )
-
- 0 menu_timeout_enabled ! \ start with automatic timeout disabled
-
- \ check indication that automatic execution after delay is requested
- s" menu_timeout_command" getenv -1 <> if ( Addr C -1 -- | Addr )
- drop ( just testing existence right now: Addr -- )
-
- \ initialize state variables
- seconds menu_time ! ( store the time we started )
- 1 menu_timeout_enabled ! ( enable automatic timeout )
-
- \ read custom time-duration (if set)
- s" autoboot_delay" getenv dup -1 = if
- drop \ no custom duration (remove dup'd bunk -1)
- menu_timeout_default \ use default setting
- else
- 2dup ?number 0= if ( if not a number )
- \ disable timeout if "NO", else use default
- s" NO" compare-insensitive 0= if
- 0 menu_timeout_enabled !
- 0 ( assigned to menu_timeout below )
- else
- menu_timeout_default
- then
- else
- -rot 2drop
-
- \ boot immediately if less than zero
- dup 0< if
- drop
- menu-create
- 0 25 at-xy
- 0 boot
- then
- then
- then
- menu_timeout ! ( store value on stack from above )
-
- menu_timeout_enabled @ 1 = if
- \ read custom column position (if set)
- s" loader_menu_timeout_x" getenv dup -1 = if
- drop \ no custom column position
- menu_timeout_default_x \ use default setting
- else
- \ make sure custom position is a number
- ?number 0= if
- menu_timeout_default_x \ or use default
- then
- then
- menu_timeout_x ! ( store value on stack from above )
-
- \ read custom row position (if set)
- s" loader_menu_timeout_y" getenv dup -1 = if
- drop \ no custom row position
- menu_timeout_default_y \ use default setting
- else
- \ make sure custom position is a number
- ?number 0= if
- menu_timeout_default_y \ or use default
- then
- then
- menu_timeout_y ! ( store value on stack from above )
- then
- then
-
- menu-create
-
- begin \ Loop forever
-
- 0 25 at-xy \ Move cursor to the bottom for output
- getkey \ Block here, waiting for a key to be pressed
-
- dup -1 = if
- drop exit \ Caught abort (abnormal return)
- then
-
- \ Boot if the user pressed Enter/Ctrl-M (13) or
- \ Ctrl-Enter/Ctrl-J (10)
- dup over 13 = swap 10 = or if
- drop ( no longer needed )
- s" boot" evaluate
- exit ( pedantic; never reached )
- then
-
- dup menureboot @ = if 0 reboot then
-
- \ Evaluate the decimal ASCII value against known menu item
- \ key associations and act accordingly
-
- 49 \ Iterator start (loop range 49 to 56; ASCII '1' to '8')
- begin
- dup menukeyN @
- rot tuck = if
-
- \ Adjust for missing ACPI menuitem on non-i386
- arch-i386? true <> menuacpi @ 0<> and if
- menuacpi @ over 2dup < -rot = or
- over 58 < and if
- ( key >= menuacpi && key < 58: N -- N )
- 1+
- then
- then
-
- \ Test for the environment variable
- dup menu_command[x]
- getenv dup -1 <> if
- \ Execute the stored procedure
- evaluate
-
- \ We expect there to be a non-zero
- \ value left on the stack after
- \ executing the stored procedure.
- \ If so, continue to run, else exit.
-
- 0= if
- drop \ key pressed
- drop \ loop iterator
- exit
- else
- swap \ need iterator on top
- then
- then
-
- \ Re-adjust for missing ACPI menuitem
- arch-i386? true <> menuacpi @ 0<> and if
- swap
- menuacpi @ 1+ over 2dup < -rot = or
- over 59 < and if
- 1-
- then
- swap
- then
- else
- swap \ need iterator on top
- then
-
- \
- \ Check for menu keycode shortcut(s)
- \
- dup menu_keycode[x]
- getenv dup -1 = if
- drop
- else
- ?number 0<> if
- rot tuck = if
- swap
- dup menu_command[x]
- getenv dup -1 <> if
- evaluate
- 0= if
- 2drop
- exit
- then
- else
- drop
- then
- else
- swap
- then
- then
- then
-
- 1+ dup 56 > \ increment iterator
- \ continue if less than 57
- until
- drop \ loop iterator
- drop \ key pressed
-
- again \ Non-operational key was pressed; repeat
-;
-
-\ This function unsets all the possible environment variables associated with
-\ creating the interactive menu.
-\
-: menu-unset ( -- )
-
- 49 \ Iterator start (loop range 49 to 56; ASCII '1' to '8')
- begin
- dup menu_init[x] unsetenv \ menu initializer
- dup menu_command[x] unsetenv \ menu command
- dup menu_caption[x] unsetenv \ menu caption
- dup ansi_caption[x] unsetenv \ ANSI caption
- dup menu_keycode[x] unsetenv \ menu keycode
- dup toggled_text[x] unsetenv \ toggle_menuitem caption
- dup toggled_ansi[x] unsetenv \ toggle_menuitem ANSI caption
-
- 48 \ Iterator start (inner range 48 to 57; ASCII '0' to '9')
- begin
- \ cycle_menuitem caption and ANSI caption
- 2dup menu_caption[x][y] unsetenv
- 2dup ansi_caption[x][y] unsetenv
- 1+ dup 57 >
- until
- drop \ inner iterator
-
- 0 over menukeyN ! \ used by menu-create, menu-display
- 0 over init_stateN ! \ used by menu-create
- 0 over toggle_stateN ! \ used by toggle_menuitem
- 0 over init_textN c! \ used by toggle_menuitem
- 0 over cycle_stateN ! \ used by cycle_menuitem
-
- 1+ dup 56 > \ increment, continue if less than 57
- until
- drop \ iterator
-
- s" menu_timeout_command" unsetenv \ menu timeout command
- s" menu_reboot" unsetenv \ Reboot menu option flag
- s" menu_acpi" unsetenv \ ACPI menu option flag
- s" menu_kernel" unsetenv \ Kernel menu option flag
- s" menu_options" unsetenv \ Options separator flag
- s" menu_optionstext" unsetenv \ separator display text
- s" menu_init" unsetenv \ menu initializer
-
- 0 menureboot !
- 0 menuacpi !
- 0 menuoptions !
-;
-
-only forth definitions also menu-infrastructure
-
-\ This function both unsets menu variables and visually erases the menu area
-\ in-preparation for another menu.
-\
-: menu-clear ( -- )
- menu-unset
- menu-erase
-;
-
-bullet menubllt !
-
-also menu-namespace
-
-\ Initialize our menu initialization state variables
-0 init_state1 !
-0 init_state2 !
-0 init_state3 !
-0 init_state4 !
-0 init_state5 !
-0 init_state6 !
-0 init_state7 !
-0 init_state8 !
-
-\ Initialize our boolean state variables
-0 toggle_state1 !
-0 toggle_state2 !
-0 toggle_state3 !
-0 toggle_state4 !
-0 toggle_state5 !
-0 toggle_state6 !
-0 toggle_state7 !
-0 toggle_state8 !
-
-\ Initialize our array state variables
-0 cycle_state1 !
-0 cycle_state2 !
-0 cycle_state3 !
-0 cycle_state4 !
-0 cycle_state5 !
-0 cycle_state6 !
-0 cycle_state7 !
-0 cycle_state8 !
-
-\ Initialize string containers
-0 init_text1 c!
-0 init_text2 c!
-0 init_text3 c!
-0 init_text4 c!
-0 init_text5 c!
-0 init_text6 c!
-0 init_text7 c!
-0 init_text8 c!
-
-only forth definitions
diff --git a/sys/boot/forth/menu.4th.8 b/sys/boot/forth/menu.4th.8
deleted file mode 100644
index 3673eec74aa7..000000000000
--- a/sys/boot/forth/menu.4th.8
+++ /dev/null
@@ -1,352 +0,0 @@
-.\" Copyright (c) 2011-2013 Devin Teske
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" $FreeBSD$
-.\"
-.Dd August 6, 2013
-.Dt MENU.4TH 8
-.Os
-.Sh NAME
-.Nm menu.4th
-.Nd FreeBSD dynamic menu boot module
-.Sh DESCRIPTION
-The file that goes by the name of
-.Nm
-is a set of commands designed to display a dynamic menu system managed through
-a system of carefully named environment variables.
-The commands of
-.Nm
-by themselves are not enough for most uses.
-Please refer to the
-examples below for the most common situations, and to
-.Xr loader 8
-for additional commands.
-.Pp
-Before using any of the commands provided in
-.Nm ,
-it must be included
-through the command:
-.Pp
-.Dl include menu.4th
-.Pp
-This line is present in the default
-.Pa /boot/menu.rc
-file, so it is not needed (and should not be re-issued) in a normal setup.
-.Pp
-The commands provided by it are:
-.Pp
-.Bl -tag -width disable-module_module -compact -offset indent
-.It Ic menu-init
-Draws the menu bounding box and initializes some internal state variables.
-This should be called before any other menu-related functions.
-.It Ic menu-display
-Displays the menu (configured via the below documented environment variables)
-and blocks on keyboard input, awaiting user action.
-.It Ic menu-erase
-Clears the screen area within the menu bounding box.
-.It Ic menu-redraw
-Calls
-.Ic menu-erase
-and then redraws the menu.
-.It Ic menu-unset
-Unsets the environment variables associated with individual menu items,
-clearing the way for a new menu.
-.It Ic menu-clear
-Calls
-.Ic menu-unset
-and then
-.Ic menu-erase .
-.El
-.Pp
-The environment variables that effect its behavior are:
-.Bl -tag -width bootfile -offset indent
-.It Va loader_color
-If set to
-.Dq Li NO
-(case-insensitive) or
-.Dq Li 0 ,
-causes the menu to be displayed without color.
-The default is to use ANSI coloring whenever possible.
-If serial boot is enabled, color is disabled by default.
-Color features include the use of ANSI bold for numbers appearing to the left
-of menuitems and the use of special
-.Dq Li ansi
-variables described below.
-.It Va autoboot_delay
-Number of seconds
-.Ic menu-display
-will wait before executing
-.Va menu_timeout_command
-.Ic ( boot
-by default) unless a key is pressed.
-If set to
-.Dq Li NO
-(case-insensitive)
-.Ic menu-display
-will wait for user input and never execute
-.Ic menu_timeout_command .
-If set to
-.Dq Li -1 ,
-.Ic menu-display
-will boot immediately, preventing both interruption of the
-.Ic autoboot
-process and escaping to the loader prompt.
-Default is
-.Dq Li 10 .
-See
-.Xr loader 8
-for additional information.
-.It Va menu_timeout_command
-The command to be executed after
-.Va autoboot_delay
-seconds if a key is not pressed.
-The default is
-.Ic boot .
-.It Va loader_menu_frame
-Sets the desired box style to draw around the boot menu.
-Possible values are:
-.Dq Li single
-.Pq the default ,
-.Dq Li double ,
-and
-.Dq Li none .
-.It Va loader_menu_timeout_x
-Sets the desired column position of the timeout countdown text.
-Default is 4.
-.It Va loader_menu_timeout_y
-Sets the desired row position of the timeout countdown text.
-Default is 23.
-.It Va loader_menu_title
-The text to display above the menu.
-Default is
-.Dq Li "Welcome to FreeBSD" .
-.It Va loader_menu_title_align
-Default is to align
-.Ic loader_menu_title
-centered above the menu. This can be set to
-.Dq Li left
-or
-.Dq Li right
-to instead display the title left-or-right justified
-.Pq respectively .
-.It Va loader_menu_x
-Sets the desired column position of the boot menu.
-Default is 5.
-.It Va loader_menu_y
-Sets the desired row position of the boot menu.
-Default is 10.
-.It Va menu_caption[x]
-The text to be displayed for the numbered menuitem
-.Dq Li x .
-.It Va menu_command[x]
-The command to be executed when the number associated with menuitem
-.Dq Li x
-is pressed.
-See the list of included FICL words below for some ideas.
-.It Va menu_keycode[x]
-An optional decimal ASCII keycode to be associated with menuitem
-.Dq Li x .
-When pressed, will cause the execution of
-.Va menu_command[x] .
-.It Va ansi_caption[x]
-If
-.Va loader_color
-is set
-.Pq enabled by default ,
-use this caption for menuitem
-.Dq Li x
-instead of
-.Va menu_caption[x] .
-.It Va toggled_text[x]
-For menuitems where
-.Va menu_command[x]
-is set to
-.Dq Li toggle_menuitem
-(or a derivative thereof), the text displayed
-will toggle between this and
-.Va menu_caption[x] .
-.It Va toggled_ansi[x]
-Like
-.Va toggled_text[x]
-except used when
-.Va loader_color
-is enabled
-.Pq default .
-.It Va menu_caption[x][y]
-For menuitems where
-.Va menu_command[x]
-is set to
-.Dq Li cycle_menuitem
-(or a derivative thereof), the text displayed will cycle between this and other
-.Va menu_caption[x][y]
-entries.
-.It Va ansi_caption[x][y]
-Like
-.Va menu_caption[x][y]
-except used when
-.Va loader_color
-is enabled
-.Pq default .
-.It Va menu_acpi
-When set to a number
-.Dq Li x
-associated with a given menuitem, that menuitem will only appear when
-running on i386-compatible hardware,
-.Va hint.acpi.0.rsdp
-is set (indicating the presence of hardware ACPI support as detected by
-.Xr loader 8 ) ,
-and
-.Va hint.acpi.0.disabled
-is not set.
-On non-i386 hardware, menuitems configured after the
-.Dq Li menu_acpi
-menuitem will use a lower number (to compensate for the missing ACPI menuitem)
-but continue to function as expected.
-On i386-compatible hardware lacking ACPI support (as detected by
-.Xr loader 8 ) ,
-subsequent menuitems will retain their associated numbers.
-.It Va hint.acpi.0.rsdp
-Set automatically by
-.Xr loader 8
-on i386-compatible hardware when ACPI support is detected at boot time.
-Effects the display of the
-.Dq Li menu_acpi
-menuitem (if configured).
-.It Va hint.acpi.0.disabled
-Effects the display of the
-.Va menu_acpi
-menuitem.
-If set, the menuitem will display
-.Va toggled_text[x]
-.Va ( toggled_ansi[x]
-if
-.Va loader_color
-is set), otherwise
-.Va menu_caption[x]
-.Va ( ansi_caption[x]
-if
-.Va loader_color
-is set).
-.It Va menu_options
-When set to a number
-.Dq Li x ,
-a single blank-line and an
-.Dq Li Options
-header are inserted between
-.Va menu_caption[x-1]
-and
-.Va menu_caption[x]
-(if configured).
-.It Va menu_reboot
-If set, adds a built-in
-.Dq Li Reboot
-menuitem to the end of the last configured menuitem.
-If
-.Va menu_options
-is configured, the
-.Dq Li Reboot
-menuitem will be inserted before the
-.Dq Options
-separator.
-.El
-.Pp
-In addition, it provides the following FICL words:
-.Pp
-.Bl -tag -width disable-module_module -compact -offset indent
-.It Ic arch-i386? ( -- BOOL )
-Returns true (-1) on i386 and false (0) otherwise.
-.It Ic acpipresent? ( -- BOOL )
-Returns true (-1) if ACPI is present and false (0) otherwise.
-.It Ic acpienabled? ( -- BOOL )
-Returns true (-1) if ACPI is enabled and false (0) otherwise.
-.It Ic toggle_menuitem ( N -- N )
-Toggles menuitem
-.Dq Li N
-between
-.Va menu_caption[x]
-and
-.Va toggled_text[x]
-(where
-.Dq Li N
-represents the ASCII decimal value for
-.Dq Li x ) .
-.It Ic cycle_menuitem ( N -- N )
-Cycles menuitem
-.Dq Li N
-between
-.Va menu_caption[x][y]
-entries (where
-.Va N
-represents the ASCII decimal value for
-.Va x ) .
-.El
-.Pp
-For all values of
-.Dq Li x
-above, use any number between 1 through 9. Sorry, double-digits are not
-currently supported.
-.Sh FILES
-.Bl -tag -width /boot/loader.4th -compact
-.It Pa /boot/loader
-The
-.Xr loader 8 .
-.It Pa /boot/menu.4th
-.Nm
-itself.
-.It Pa /boot/loader.rc
-.Xr loader 8
-bootstrapping script.
-.El
-.Sh EXAMPLES
-A simple boot menu:
-.Pp
-.Bd -literal -offset indent -compact
-include /boot/menu.4th
-menu-init
-set menu_caption[1]="Boot"
-set menu_command[1]="boot"
-set menu_options=2
-set menu_caption[2]="Option: NO"
-set toggled_text[2]="Option: YES"
-set menu_command[2]="toggle_menuitem"
-set menu_timeout_command="boot"
-set menu_reboot
-menu-display
-.Ed
-.Sh SEE ALSO
-.Xr loader.conf 5 ,
-.Xr beastie.4th 8 ,
-.Xr loader 8 ,
-.Xr loader.4th 8
-.Sh HISTORY
-The
-.Nm
-set of commands first appeared in
-.Fx 9.0 .
-.Sh AUTHORS
-The
-.Nm
-set of commands was written by
-.An -nosplit
-.An Devin Teske Aq dteske@FreeBSD.org .
diff --git a/sys/boot/forth/menu.rc b/sys/boot/forth/menu.rc
deleted file mode 100644
index 6fe3dfe14281..000000000000
--- a/sys/boot/forth/menu.rc
+++ /dev/null
@@ -1,202 +0,0 @@
-\ Menu.rc
-\ $FreeBSD$
-\
-\ You should not edit this file! Put any overrides in menu.rc.local
-\ instead as this file can be replaced during system updates.
-\
-\ Load required Forth modules
-include /boot/version.4th
-include /boot/brand.4th
-include /boot/menu.4th
-include /boot/menu-commands.4th
-include /boot/shortcuts.4th
-
-\ Screen prep
-clear \ clear the screen (see `screen.4th')
-print_version \ print version string (bottom-right; see `version.4th')
-draw-beastie \ draw freebsd mascot (on right; see `beastie.4th')
-draw-brand \ draw the FreeBSD title (top-left; see `brand.4th')
-menu-init \ initialize the menu area (see `menu.4th')
-
-\ Initialize main menu constructs (see `menu.4th')
-\ NOTE: To use `non-ansi' variants, add `loader_color=0' to loader.conf(5)
-\ NOTE: ANSI variants can use `^' in place of literal `Esc' (ASCII 27)
-
-\
-\ MAIN MENU
-\
-
-set menuset_name1="main"
-
-set mainmenu_init[1]="init_boot"
-set mainmenu_caption[1]="Boot Multi User [Enter]"
-set maintoggled_text[1]="Boot [S]ingle User [Enter]"
-set mainmenu_command[1]="boot"
-set mainansi_caption[1]="^[1mB^[moot Multi User ^[1m[Enter]^[m"
-set maintoggled_ansi[1]="Boot ^[1mS^[mingle User ^[1m[Enter]^[m"
-\ keycode set by init_boot
-
-set mainmenu_init[2]="init_altboot"
-set mainmenu_caption[2]="Boot [S]ingle User"
-set maintoggled_text[2]="Boot [M]ulti User"
-set mainmenu_command[2]="altboot"
-set mainansi_caption[2]="Boot ^[1mS^[mingle User"
-set maintoggled_ansi[2]="Boot ^[1mM^[multi User"
-\ keycode set by init_altboot
-
-set mainmenu_caption[3]="[Esc]ape to loader prompt"
-set mainmenu_command[3]="goto_prompt"
-set mainmenu_keycode[3]=27
-set mainansi_caption[3]="^[1mEsc^[mape to loader prompt"
-
-\ Enable built-in "Reboot" trailing menuitem
-\ NOTE: appears before menu_options if configured
-\
-set mainmenu_reboot
-
-\ Enable "Options:" separator. When set to a numerical value (1-8), a visual
-\ separator is inserted before that menuitem number.
-\
-set mainmenu_options=5
-
-set mainmenu_kernel=5
-set mainmenu_command[5]="cycle_kernel"
-set mainmenu_keycode[5]=107
-
-set mainmenu_caption[6]="Configure Boot [O]ptions..."
-set mainmenu_command[6]="2 goto_menu"
-set mainmenu_keycode[6]=111
-set mainansi_caption[6]="Configure Boot ^[1mO^[mptions..."
-
-s" currdev" getenv dup 0> [if] drop 4 s" zfs:" compare 0= [if]
- set mainmenu_caption[7]="Select Boot [E]nvironment..."
- set mainmenu_command[7]="3 goto_menu"
- set mainmenu_keycode[7]=101
- set mainansi_caption[7]="Select Boot ^[1mE^[37mnvironment..."
-
- s" chain_disk" getenv? [if]
- set mainmenu_caption[8]="Chain[L]oad ${chain_disk}"
- set mainmenu_command[8]="chain ${chain_disk}"
- set mainmenu_keycode[8]=108
- set mainansi_caption[8]="Chain^[1mL^[moad ${chain_disk}"
- [then]
-[else]
- s" chain_disk" getenv? [if]
- set mainmenu_caption[7]="Chain[L]oad ${chain_disk}"
- set mainmenu_command[7]="chain ${chain_disk}"
- set mainmenu_keycode[7]=108
- set mainansi_caption[7]="Chain^[1mL^[moad ${chain_disk}"
- [then]
-[then] [else] drop [then]
-
-
-\
-\ BOOT OPTIONS MENU
-\
-
-set menuset_name2="options"
-
-set optionsmenu_caption[1]="Back to Main Menu [Backspace]"
-set optionsmenu_command[1]="1 goto_menu"
-set optionsmenu_keycode[1]=8
-set optionsansi_caption[1]="Back to Main Menu ^[1m[Backspace]^[m"
-
-set optionsmenu_caption[2]="Load System [D]efaults"
-set optionsmenu_command[2]="set_default_boot_options"
-set optionsmenu_keycode[2]=100
-set optionsansi_caption[2]="Load System ^[1mD^[mefaults"
-
-set optionsmenu_options=3
-set optionsmenu_optionstext="Boot Options:"
-
-set optionsmenu_acpi=3
-set optionsmenu_caption[3]="[A]CPI Support off"
-set optionstoggled_text[3]="[A]CPI Support On"
-set optionsmenu_command[3]="toggle_acpi"
-set optionsmenu_keycode[3]=97
-set optionsansi_caption[3]="^[1mA^[mCPI Support ^[34;1mOff^[m"
-set optionstoggled_ansi[3]="^[1mA^[mCPI Support ^[32;7mOn^[m"
-
-set optionsmenu_init[4]="init_safemode"
-set optionsmenu_caption[4]="Safe [M]ode... off"
-set optionstoggled_text[4]="Safe [M]ode... On"
-set optionsmenu_command[4]="toggle_safemode"
-set optionsmenu_keycode[4]=109
-set optionsansi_caption[4]="Safe ^[1mM^[mode... ^[34;1mOff^[m"
-set optionstoggled_ansi[4]="Safe ^[1mM^[mode... ^[32;7mOn^[m"
-
-set optionsmenu_init[5]="init_singleuser"
-set optionsmenu_caption[5]="[S]ingle User. off"
-set optionstoggled_text[5]="[S]ingle User. On"
-set optionsmenu_command[5]="toggle_singleuser"
-set optionsmenu_keycode[5]=115
-set optionsansi_caption[5]="^[1mS^[mingle User. ^[34;1mOff^[m"
-set optionstoggled_ansi[5]="^[1mS^[mingle User. ^[32;7mOn^[m"
-
-set optionsmenu_init[6]="init_verbose"
-set optionsmenu_caption[6]="[V]erbose..... off"
-set optionstoggled_text[6]="[V]erbose..... On"
-set optionsmenu_command[6]="toggle_verbose"
-set optionsmenu_keycode[6]=118
-set optionsansi_caption[6]="^[1mV^[merbose..... ^[34;1mOff^[m"
-set optionstoggled_ansi[6]="^[1mV^[merbose..... ^[32;7mOn^[m"
-
-\
-\ BOOT ENVIRONMENT MENU
-\
-
-set menuset_name3="bootenv"
-
-set bemenu_current="Active: "
-set beansi_current="^[1m${bemenu_current}^[m"
-set bemenu_bootfs="bootfs: "
-set beansi_bootfs="^[1m${bemenu_bootfs}^[m"
-set bemenu_page="[P]age: "
-set beansi_page="^[1mP^[mage: "
-set bemenu_pageof=" of "
-set beansi_pageof="${bemenu_pageof}"
-set zfs_be_currpage=1
-
-set bootenvmenu_init="init_bootenv"
-
-set bootenvmenu_command[1]="be_draw_screen 1 goto_menu"
-set bootenvmenu_keycode[1]=8
-
-set bootenvmenu_command[2]="set_bootenv"
-set bootenvmenu_keycode[2]=97
-set bootenv_root[2]="${zfs_be_active}"
-
-set bootenvmenu_command[3]="set_be_page"
-set bootenvmenu_keycode[3]=112
-
-set bootenvmenu_options=4
-set bootenvmenu_optionstext="Boot Environments:"
-
-\ Enable automatic booting (add ``autoboot_delay=N'' to loader.conf(5) to
-\ customize the timeout; default is 10-seconds)
-\
-set menu_timeout_command="boot"
-
-\ Include optional elements defined in a local file
-\
-try-include /boot/menu.rc.local
-
-\ Initialize boot environment variables
-\
-s" reloadbe" sfind ( xt|0 bool ) [if]
- s" bootenv_autolist" getenv dup -1 = [if]
- drop s" execute" evaluate \ Use evaluate to avoid passing
- \ reloadbe an optional parameter
- [else]
- s" YES" compare-insensitive 0= [if]
- s" execute" evaluate
- [then]
- [then]
-[else]
- drop ( xt=0 )
-[then]
-
-\ Display the main menu (see `menu.4th')
-set menuset_initial=1
-menuset-loadinitial
-menu-display
diff --git a/sys/boot/forth/menusets.4th b/sys/boot/forth/menusets.4th
deleted file mode 100644
index 9335b80d511a..000000000000
--- a/sys/boot/forth/menusets.4th
+++ /dev/null
@@ -1,624 +0,0 @@
-\ Copyright (c) 2012 Devin Teske <dteske@FreeBSD.org>
-\ All rights reserved.
-\
-\ Redistribution and use in source and binary forms, with or without
-\ modification, are permitted provided that the following conditions
-\ are met:
-\ 1. Redistributions of source code must retain the above copyright
-\ notice, this list of conditions and the following disclaimer.
-\ 2. Redistributions in binary form must reproduce the above copyright
-\ notice, this list of conditions and the following disclaimer in the
-\ documentation and/or other materials provided with the distribution.
-\
-\ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-\ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-\ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-\ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-\ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-\ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-\ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-\ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-\ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-\ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-\ SUCH DAMAGE.
-\
-\ $FreeBSD$
-
-marker task-menusets.4th
-
-vocabulary menusets-infrastructure
-only forth also menusets-infrastructure definitions
-
-variable menuset_use_name
-
-create menuset_affixbuf 255 allot
-create menuset_x 1 allot
-create menuset_y 1 allot
-
-: menuset-loadvar ( -- )
-
- \ menuset_use_name is true or false
- \ $type should be set to one of:
- \ menu toggled ansi
- \ $var should be set to one of:
- \ caption command keycode text ...
- \ $affix is either prefix (menuset_use_name is true)
- \ or infix (menuset_use_name is false)
-
- s" set cmdbuf='set ${type}_${var}=\$'" evaluate
- s" cmdbuf" getenv swap drop ( -- u1 ) \ get string length
- menuset_use_name @ true = if
- s" set cmdbuf=${cmdbuf}${affix}${type}_${var}"
- ( u1 -- u1 c-addr2 u2 )
- else
- s" set cmdbuf=${cmdbuf}${type}set${affix}_${var}"
- ( u1 -- u1 c-addr2 u2 )
- then
- evaluate ( u1 c-addr2 u2 -- u1 )
- s" cmdbuf" getenv ( u1 -- u1 c-addr2 u2 )
- rot 2 pick 2 pick over + -rot + tuck -
- ( u1 c-addr2 u2 -- c-addr2 u2 c-addr1 u1 )
- \ Generate a string representing rvalue inheritance var
- getenv dup -1 = if
- ( c-addr2 u2 c-addr1 u1 -- c-addr2 u2 -1 )
- \ NOT set -- clean up the stack
- drop ( c-addr2 u2 -1 -- c-addr2 u2 )
- 2drop ( c-addr2 u2 -- )
- else
- ( c-addr2 u2 c-addr1 u1 -- c-addr2 u2 c-addr1 u1 )
- \ SET -- execute cmdbuf (c-addr2/u2) to inherit value
- 2drop ( c-addr2 u2 c-addr1 u1 -- c-addr2 u2 )
- evaluate ( c-addr2 u2 -- )
- then
-
- s" cmdbuf" unsetenv
-;
-
-: menuset-unloadvar ( -- )
-
- \ menuset_use_name is true or false
- \ $type should be set to one of:
- \ menu toggled ansi
- \ $var should be set to one of:
- \ caption command keycode text ...
- \ $affix is either prefix (menuset_use_name is true)
- \ or infix (menuset_use_name is false)
-
- menuset_use_name @ true = if
- s" set buf=${affix}${type}_${var}"
- else
- s" set buf=${type}set${affix}_${var}"
- then
- evaluate
- s" buf" getenv unsetenv
- s" buf" unsetenv
-;
-
-: menuset-loadmenuvar ( -- )
- s" set type=menu" evaluate
- menuset-loadvar
-;
-
-: menuset-unloadmenuvar ( -- )
- s" set type=menu" evaluate
- menuset-unloadvar
-;
-
-: menuset-loadxvar ( -- )
-
- \ menuset_use_name is true or false
- \ $type should be set to one of:
- \ menu toggled ansi
- \ $var should be set to one of:
- \ caption command keycode text ...
- \ $x is "1" through "8"
- \ $affix is either prefix (menuset_use_name is true)
- \ or infix (menuset_use_name is false)
-
- s" set cmdbuf='set ${type}_${var}[${x}]=\$'" evaluate
- s" cmdbuf" getenv swap drop ( -- u1 ) \ get string length
- menuset_use_name @ true = if
- s" set cmdbuf=${cmdbuf}${affix}${type}_${var}[${x}]"
- ( u1 -- u1 c-addr2 u2 )
- else
- s" set cmdbuf=${cmdbuf}${type}set${affix}_${var}[${x}]"
- ( u1 -- u1 c-addr2 u2 )
- then
- evaluate ( u1 c-addr2 u2 -- u1 )
- s" cmdbuf" getenv ( u1 -- u1 c-addr2 u2 )
- rot 2 pick 2 pick over + -rot + tuck -
- ( u1 c-addr2 u2 -- c-addr2 u2 c-addr1 u1 )
- \ Generate a string representing rvalue inheritance var
- getenv dup -1 = if
- ( c-addr2 u2 c-addr1 u1 -- c-addr2 u2 -1 )
- \ NOT set -- clean up the stack
- drop ( c-addr2 u2 -1 -- c-addr2 u2 )
- 2drop ( c-addr2 u2 -- )
- else
- ( c-addr2 u2 c-addr1 u1 -- c-addr2 u2 c-addr1 u1 )
- \ SET -- execute cmdbuf (c-addr2/u2) to inherit value
- 2drop ( c-addr2 u2 c-addr1 u1 -- c-addr2 u2 )
- evaluate ( c-addr2 u2 -- )
- then
-
- s" cmdbuf" unsetenv
-;
-
-: menuset-unloadxvar ( -- )
-
- \ menuset_use_name is true or false
- \ $type should be set to one of:
- \ menu toggled ansi
- \ $var should be set to one of:
- \ caption command keycode text ...
- \ $x is "1" through "8"
- \ $affix is either prefix (menuset_use_name is true)
- \ or infix (menuset_use_name is false)
-
- menuset_use_name @ true = if
- s" set buf=${affix}${type}_${var}[${x}]"
- else
- s" set buf=${type}set${affix}_${var}[${x}]"
- then
- evaluate
- s" buf" getenv unsetenv
- s" buf" unsetenv
-;
-
-: menuset-loadansixvar ( -- )
- s" set type=ansi" evaluate
- menuset-loadxvar
-;
-
-: menuset-unloadansixvar ( -- )
- s" set type=ansi" evaluate
- menuset-unloadxvar
-;
-
-: menuset-loadmenuxvar ( -- )
- s" set type=menu" evaluate
- menuset-loadxvar
-;
-
-: menuset-unloadmenuxvar ( -- )
- s" set type=menu" evaluate
- menuset-unloadxvar
-;
-
-: menuset-loadtoggledxvar ( -- )
- s" set type=toggled" evaluate
- menuset-loadxvar
-;
-
-: menuset-unloadtoggledxvar ( -- )
- s" set type=toggled" evaluate
- menuset-unloadxvar
-;
-
-: menuset-loadxyvar ( -- )
-
- \ menuset_use_name is true or false
- \ $type should be set to one of:
- \ menu toggled ansi
- \ $var should be set to one of:
- \ caption command keycode text ...
- \ $x is "1" through "8"
- \ $y is "0" through "9"
- \ $affix is either prefix (menuset_use_name is true)
- \ or infix (menuset_use_name is false)
-
- s" set cmdbuf='set ${type}_${var}[${x}][${y}]=\$'" evaluate
- s" cmdbuf" getenv swap drop ( -- u1 ) \ get string length
- menuset_use_name @ true = if
- s" set cmdbuf=${cmdbuf}${affix}${type}_${var}[${x}][${y}]"
- ( u1 -- u1 c-addr2 u2 )
- else
- s" set cmdbuf=${cmdbuf}${type}set${affix}_${var}[${x}][${y}]"
- ( u1 -- u1 c-addr2 u2 )
- then
- evaluate ( u1 c-addr2 u2 -- u1 )
- s" cmdbuf" getenv ( u1 -- u1 c-addr2 u2 )
- rot 2 pick 2 pick over + -rot + tuck -
- ( u1 c-addr2 u2 -- c-addr2 u2 c-addr1 u1 )
- \ Generate a string representing rvalue inheritance var
- getenv dup -1 = if
- ( c-addr2 u2 c-addr1 u1 -- c-addr2 u2 -1 )
- \ NOT set -- clean up the stack
- drop ( c-addr2 u2 -1 -- c-addr2 u2 )
- 2drop ( c-addr2 u2 -- )
- else
- ( c-addr2 u2 c-addr1 u1 -- c-addr2 u2 c-addr1 u1 )
- \ SET -- execute cmdbuf (c-addr2/u2) to inherit value
- 2drop ( c-addr2 u2 c-addr1 u1 -- c-addr2 u2 )
- evaluate ( c-addr2 u2 -- )
- then
-
- s" cmdbuf" unsetenv
-;
-
-: menuset-unloadxyvar ( -- )
-
- \ menuset_use_name is true or false
- \ $type should be set to one of:
- \ menu toggled ansi
- \ $var should be set to one of:
- \ caption command keycode text ...
- \ $x is "1" through "8"
- \ $y is "0" through "9"
- \ $affix is either prefix (menuset_use_name is true)
- \ or infix (menuset_use_name is false)
-
- menuset_use_name @ true = if
- s" set buf=${affix}${type}_${var}[${x}][${y}]"
- else
- s" set buf=${type}set${affix}_${var}[${x}][${y}]"
- then
- evaluate
- s" buf" getenv unsetenv
- s" buf" unsetenv
-;
-
-: menuset-loadansixyvar ( -- )
- s" set type=ansi" evaluate
- menuset-loadxyvar
-;
-
-: menuset-unloadansixyvar ( -- )
- s" set type=ansi" evaluate
- menuset-unloadxyvar
-;
-
-: menuset-loadmenuxyvar ( -- )
- s" set type=menu" evaluate
- menuset-loadxyvar
-;
-
-: menuset-unloadmenuxyvar ( -- )
- s" set type=menu" evaluate
- menuset-unloadxyvar
-;
-
-: menuset-setnum-namevar ( N -- C-Addr/U )
-
- s" menuset_nameNNNNN" ( n -- n c-addr1 u1 ) \ variable basename
- drop 12 ( n c-addr1 u1 -- n c-addr1 12 ) \ remove "NNNNN"
- rot ( n c-addr1 12 -- c-addr1 12 n ) \ move number on top
-
- \ convert to string
- s>d <# #s #> ( c-addr1 12 n -- c-addr1 12 c-addr2 u2 )
-
- \ Combine strings
- begin ( using u2 in c-addr2/u2 pair as countdown to zero )
- over ( c-addr1 u1 c-addr2 u2 -- continued below )
- ( c-addr1 u1 c-addr2 u2 c-addr2 ) \ copy src-addr
- c@ ( c-addr1 u1 c-addr2 u2 c-addr2 -- continued below )
- ( c-addr1 u1 c-addr2 u2 c ) \ get next src-addr byte
- 4 pick 4 pick
- ( c-addr1 u1 c-addr2 u2 c -- continued below )
- ( c-addr1 u1 c-addr2 u2 c c-addr1 u1 )
- \ get destination c-addr1/u1 pair
- + ( c-addr1 u1 c-addr2 u2 c c-addr1 u1 -- cont. below )
- ( c-addr1 u1 c-addr2 u2 c c-addr3 )
- \ combine dest-c-addr to get dest-addr for byte
- c! ( c-addr1 u1 c-addr2 u2 c c-addr3 -- continued below )
- ( c-addr1 u1 c-addr2 u2 )
- \ store the current src-addr byte into dest-addr
-
- 2swap 1+ 2swap \ increment u1 in destination c-addr1/u1 pair
- swap 1+ swap \ increment c-addr2 in source c-addr2/u2 pair
- 1- \ decrement u2 in the source c-addr2/u2 pair
-
- dup 0= \ time to break?
- until
-
- 2drop ( c-addr1 u1 c-addr2 u2 -- c-addr1 u1 )
- \ drop temporary number-format conversion c-addr2/u2
-;
-
-: menuset-checksetnum ( N -- )
-
- \
- \ adjust input to be both positive and no-higher than 65535
- \
- abs dup 65535 > if drop 65535 then ( n -- n )
-
- \
- \ The next few blocks will determine if we should use the default
- \ methodology (referencing the original numeric stack-input), or if-
- \ instead $menuset_name{N} has been defined wherein we would then
- \ use the value thereof as the prefix to every menu variable.
- \
-
- false menuset_use_name ! \ assume name is not set
-
- menuset-setnum-namevar
- \
- \ We now have a string that is the assembled variable name to check
- \ for... $menuset_name{N}. Let's check for it.
- \
- 2dup ( c-addr1 u1 -- c-addr1 u1 c-addr1 u1 ) \ save a copy
- getenv dup -1 <> if ( c-addr1 u1 c-addr1 u1 -- c-addr1 u1 c-addr2 u2 )
- \ The variable is set. Let's clean up the stack leaving only
- \ its value for later use.
-
- true menuset_use_name !
- 2swap 2drop ( c-addr1 u1 c-addr2 u2 -- c-addr2 u2 )
- \ drop assembled variable name, leave the value
- else ( c-addr1 u1 c-addr1 u1 -- c-addr1 u1 -1 ) \ no such variable
- \ The variable is not set. Let's clean up the stack leaving the
- \ string [portion] representing the original numeric input.
-
- drop ( c-addr1 u1 -1 -- c-addr1 u1 ) \ drop -1 result
- 12 - swap 12 + swap ( c-addr1 u1 -- c-addr2 u2 )
- \ truncate to original numeric stack-input
- then
-
- \
- \ Now, depending on whether $menuset_name{N} has been set, we have
- \ either the value thereof to be used as a prefix to all menu_*
- \ variables or we have a string representing the numeric stack-input
- \ to be used as a "set{N}" infix to the same menu_* variables.
- \
- \ For example, if the stack-input is 1 and menuset_name1 is NOT set
- \ the following variables will be referenced:
- \ ansiset1_caption[x] -> ansi_caption[x]
- \ ansiset1_caption[x][y] -> ansi_caption[x][y]
- \ menuset1_acpi -> menu_acpi
- \ menuset1_caption[x] -> menu_caption[x]
- \ menuset1_caption[x][y] -> menu_caption[x][y]
- \ menuset1_command[x] -> menu_command[x]
- \ menuset1_init -> ``evaluated''
- \ menuset1_init[x] -> menu_init[x]
- \ menuset1_kernel -> menu_kernel
- \ menuset1_keycode[x] -> menu_keycode[x]
- \ menuset1_options -> menu_options
- \ menuset1_optionstext -> menu_optionstext
- \ menuset1_reboot -> menu_reboot
- \ toggledset1_ansi[x] -> toggled_ansi[x]
- \ toggledset1_text[x] -> toggled_text[x]
- \ otherwise, the following variables are referenced (where {name}
- \ represents the value of $menuset_name1 (given 1 as stack-input):
- \ {name}ansi_caption[x] -> ansi_caption[x]
- \ {name}ansi_caption[x][y] -> ansi_caption[x][y]
- \ {name}menu_acpi -> menu_acpi
- \ {name}menu_caption[x] -> menu_caption[x]
- \ {name}menu_caption[x][y] -> menu_caption[x][y]
- \ {name}menu_command[x] -> menu_command[x]
- \ {name}menu_init -> ``evaluated''
- \ {name}menu_init[x] -> menu_init[x]
- \ {name}menu_kernel -> menu_kernel
- \ {name}menu_keycode[x] -> menu_keycode[x]
- \ {name}menu_options -> menu_options
- \ {name}menu_optionstext -> menu_optionstext
- \ {name}menu_reboot -> menu_reboot
- \ {name}toggled_ansi[x] -> toggled_ansi[x]
- \ {name}toggled_text[x] -> toggled_text[x]
- \
- \ Note that menuset{N}_init and {name}menu_init are the initializers
- \ for the entire menu (for wholly dynamic menus) opposed to the per-
- \ menuitem initializers (with [x] afterward). The whole-menu init
- \ routine is evaluated and not passed down to $menu_init (which
- \ would result in double evaluation). By doing this, the initializer
- \ can initialize the menuset before we transfer it to active-duty.
- \
-
- \
- \ Copy our affixation (prefix or infix depending on menuset_use_name)
- \ to our buffer so that we can safely use the s-quote (s") buf again.
- \
- menuset_affixbuf 0 2swap ( c-addr2 u2 -- c-addr1 0 c-addr2 u2 )
- begin ( using u2 in c-addr2/u2 pair as countdown to zero )
- over ( c-addr1 u1 c-addr2 u2 -- c-addr1 u1 c-addr2 u2 c-addr2 )
- c@ ( c-addr1 u1 c-addr2 u2 -- c-addr1 u1 c-addr2 u2 c )
- 4 pick 4 pick
- ( c-addr1 u1 c-addr2 u2 c -- continued below )
- ( c-addr1 u1 c-addr2 u2 c c-addr1 u1 )
- + ( c-addr1 u1 c-addr2 u2 c c-addr1 u1 -- continued below )
- ( c-addr1 u1 c-addr2 u2 c c-addr3 )
- c! ( c-addr1 u1 c-addr2 u2 c c-addr3 -- continued below )
- ( c-addr1 u1 c-addr2 u2 )
- 2swap 1+ 2swap \ increment affixbuf byte position/count
- swap 1+ swap \ increment strbuf pointer (source c-addr2)
- 1- \ decrement strbuf byte count (source u2)
- dup 0= \ time to break?
- until
- 2drop ( c-addr1 u1 c-addr2 u2 -- c-addr1 u1 ) \ drop strbuf c-addr2/u2
-
- \
- \ Create a variable for referencing our affix data (prefix or infix
- \ depending on menuset_use_name as described above). This variable will
- \ be temporary and only used to simplify cmdbuf assembly.
- \
- s" affix" setenv ( c-addr1 u1 -- )
-;
-
-: menuset-cleanup ( -- )
- s" type" unsetenv
- s" var" unsetenv
- s" x" unsetenv
- s" y" unsetenv
- s" affix" unsetenv
-;
-
-only forth definitions also menusets-infrastructure
-
-: menuset-loadsetnum ( N -- )
-
- menuset-checksetnum ( n -- )
-
- \
- \ From here out, we use temporary environment variables to make
- \ dealing with variable-length strings easier.
- \
- \ menuset_use_name is true or false
- \ $affix should be used appropriately w/respect to menuset_use_name
- \
-
- \ ... menu_init ...
- s" set var=init" evaluate
- menuset-loadmenuvar
-
- \ If menu_init was set by the above, evaluate it here-and-now
- \ so that the remaining variables are influenced by its actions
- s" menu_init" 2dup getenv dup -1 <> if
- 2swap unsetenv \ don't want later menu-create to re-call this
- evaluate
- else
- drop 2drop ( n c-addr u -1 -- n )
- then
-
- [char] 1 ( -- x ) \ Loop range ASCII '1' (49) to '8' (56)
- begin
- dup menuset_x tuck c! 1 s" x" setenv \ set loop iterator and $x
-
- s" set var=caption" evaluate
-
- \ ... menu_caption[x] ...
- menuset-loadmenuxvar
-
- \ ... ansi_caption[x] ...
- menuset-loadansixvar
-
- [char] 0 ( x -- x y ) \ Inner Loop ASCII '1' (48) to '9' (57)
- begin
- dup menuset_y tuck c! 1 s" y" setenv
- \ set inner loop iterator and $y
-
- \ ... menu_caption[x][y] ...
- menuset-loadmenuxyvar
-
- \ ... ansi_caption[x][y] ...
- menuset-loadansixyvar
-
- 1+ dup 57 > ( x y -- y' 0|-1 ) \ increment and test
- until
- drop ( x y -- x )
-
- \ ... menu_command[x] ...
- s" set var=command" evaluate
- menuset-loadmenuxvar
-
- \ ... menu_init[x] ...
- s" set var=init" evaluate
- menuset-loadmenuxvar
-
- \ ... menu_keycode[x] ...
- s" set var=keycode" evaluate
- menuset-loadmenuxvar
-
- \ ... toggled_text[x] ...
- s" set var=text" evaluate
- menuset-loadtoggledxvar
-
- \ ... toggled_ansi[x] ...
- s" set var=ansi" evaluate
- menuset-loadtoggledxvar
-
- 1+ dup 56 > ( x -- x' 0|-1 ) \ increment iterator
- \ continue if less than 57
- until
- drop ( x -- ) \ loop iterator
-
- \ ... menu_reboot ...
- s" set var=reboot" evaluate
- menuset-loadmenuvar
-
- \ ... menu_acpi ...
- s" set var=acpi" evaluate
- menuset-loadmenuvar
-
- \ ... menu_kernel ...
- s" set var=kernel" evaluate
- menuset-loadmenuvar
-
- \ ... menu_options ...
- s" set var=options" evaluate
- menuset-loadmenuvar
-
- \ ... menu_optionstext ...
- s" set var=optionstext" evaluate
- menuset-loadmenuvar
-
- menuset-cleanup
-;
-
-: menusets-unset ( -- )
-
- s" menuset_initial" unsetenv
-
- 1 begin
- dup menuset-checksetnum ( n n -- n )
-
- dup menuset-setnum-namevar ( n n -- n )
- unsetenv
-
- \ If the current menuset does not populate the first menuitem,
- \ we stop completely.
-
- menuset_use_name @ true = if
- s" set buf=${affix}menu_caption[1]"
- else
- s" set buf=menuset${affix}_caption[1]"
- then
- evaluate s" buf" getenv getenv -1 = if
- drop ( n -- )
- s" buf" unsetenv
- menuset-cleanup
- exit
- else
- drop ( n c-addr2 -- n ) \ unused
- then
-
- [char] 1 ( n -- n x ) \ Loop range ASCII '1' (49) to '8' (56)
- begin
- dup menuset_x tuck c! 1 s" x" setenv \ set $x to x
-
- s" set var=caption" evaluate
- menuset-unloadmenuxvar
- menuset-unloadmenuxvar
- menuset-unloadansixvar
- [char] 0 ( n x -- n x y ) \ Inner loop '0' to '9'
- begin
- dup menuset_y tuck c! 1 s" y" setenv
- \ sets $y to y
- menuset-unloadmenuxyvar
- menuset-unloadansixyvar
- 1+ dup 57 > ( n x y -- n x y' 0|-1 )
- until
- drop ( n x y -- n x )
- s" set var=command" evaluate menuset-unloadmenuxvar
- s" set var=init" evaluate menuset-unloadmenuxvar
- s" set var=keycode" evaluate menuset-unloadmenuxvar
- s" set var=text" evaluate menuset-unloadtoggledxvar
- s" set var=ansi" evaluate menuset-unloadtoggledxvar
-
- 1+ dup 56 > ( x -- x' 0|-1 ) \ increment and test
- until
- drop ( n x -- n ) \ loop iterator
-
- s" set var=acpi" evaluate menuset-unloadmenuvar
- s" set var=init" evaluate menuset-unloadmenuvar
- s" set var=kernel" evaluate menuset-unloadmenuvar
- s" set var=options" evaluate menuset-unloadmenuvar
- s" set var=optionstext" evaluate menuset-unloadmenuvar
- s" set var=reboot" evaluate menuset-unloadmenuvar
-
- 1+ dup 65535 > ( n -- n' 0|-1 ) \ increment and test
- until
- drop ( n' -- ) \ loop iterator
-
- s" buf" unsetenv
- menuset-cleanup
-;
-
-only forth definitions
-
-: menuset-loadinitial ( -- )
- s" menuset_initial" getenv dup -1 <> if
- ?number 0<> if
- menuset-loadsetnum
- then
- else
- drop \ cruft
- then
-;
diff --git a/sys/boot/forth/menusets.4th.8 b/sys/boot/forth/menusets.4th.8
deleted file mode 100644
index f785ae18eabe..000000000000
--- a/sys/boot/forth/menusets.4th.8
+++ /dev/null
@@ -1,372 +0,0 @@
-.\" Copyright (c) 2012 Devin Teske
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" $FreeBSD$
-.\"
-.Dd November 5, 2012
-.Dt MENUSETS.4TH 8
-.Os
-.Sh NAME
-.Nm menusets.4th
-.Nd FreeBSD dynamic submenu boot module
-.Sh DESCRIPTION
-The file that goes by the name of
-.Nm
-is a set of commands designed to add submenu functionality to the dynamic menu
-system provided by
-.Xr menu.4th 8 .
-Submenus are managed through a system of carefully named environment variables.
-The commands of
-.Nm
-by themselves are not enough for most uses.
-Please refer to the examples below for the most common situations, and to
-.Xr menu.4th 8
-for additional commands.
-.Pp
-Before using any of the commands provided in
-.Nm ,
-it must be included
-through the command:
-.Pp
-.Dl include menusets.4th
-.Pp
-This line is present in the default
-.Pa /boot/menu-commands.4th
-file, so it is not needed (and should not be re-issued) in a normal setup.
-.Pp
-The commands provided by it are:
-.Pp
-.Bl -tag -width menuset-loadinitial -compact -offset indent
-.It Ic menuset-loadsetnum
-Takes a single integer on the stack to identify the menuset environment
-variables to be activated (see environment variables below).
-.It Ic menuset-loadinitial
-If $menuset_initial is set, passes the value to menuset-loadsetnum.
-The value must be a number.
-.It Ic menusets-unset
-Unsets the environment variables associated with all menusets.
-Increments starting at 1 and stops at the first unconfigured menuset.
-A menuset is considered configured if the caption for item 1 is set.
-.El
-.Pp
-The environment variables that effect its behavior are:
-.Bl -tag -width bootfile -offset indent
-.It Va menuset_initial
-Number to pass to menuset-loadsetnum when menuset-loadinitial is called.
-.It Va menuset_nameN
-Used to give a name to a menuset.
-.El
-.Pp
-When a menuset is NOT given a name (the default),
-menuset N is comprised of the following environment variables:
-.Pp
-.Bl -tag -width menusetN_caption[x][y] -compact -offset indent
-.It Va ansisetN_caption[x]
--> ansi_caption[x]
-.It Va ansisetN_caption[x][y]
--> ansi_caption[x][y]
-.It Va menusetN_acpi
--> menu_acpi
-.It Va menusetN_caption[x]
--> menu_caption[x]
-.It Va menusetN_caption[x][y]
--> menu_caption[x][y]
-.It Va menusetN_command[x]
--> menu_command[x]
-.It Va menusetN_init
-->
-.Dq Li evaluated
-.It Va menusetN_init[x]
--> menu_init[x]
-.It Va menusetN_keycode[x]
--> menu_keycode[x]
-.It Va menusetN_options
--> menu_options
-.It Va menusetN_optionstext
--> menu_optionstext
-.It Va menusetN_reboot
--> menu_reboot
-.It Va toggledsetN_ansi[x]
--> toggled_ansi[x]
-.It Va toggledsetN_text[x]
--> toggled_text[x]
-.El
-.Pp
-When you choose to give a menuset a name (by setting $menuset_nameN),
-menuset N is instead comprised of the following environment variables:
-.Pp
-.Bl -tag -width NAMEmenu_caption[x][y] -compact -offset indent
-.It Va NAMEansi_caption[x]
--> ansi_caption[x]
-.It Va NAMEansi_caption[x][y]
--> ansi_caption[x][y]
-.It Va NAMEmenu_acpi
--> menu_acpi
-.It Va NAMEmenu_caption[x]
--> menu_caption[x]
-.It Va NAMEmenu_caption[x][y]
--> menu_caption[x][y]
-.It Va NAMEmenu_command[x]
--> menu_command[x]
-.It Va NAMEmenu_init
-->
-.Dq Li evaluated
-.It Va NAMEmenu_init[x]
--> menu_init[x]
-.It Va NAMEmenu_keycode[x]
--> menu_keycode[x]
-.It Va NAMEmenu_options
--> menu_options
-.It Va NAMEmenu_optionstext
--> menu_optionstext
-.It Va NAMEmenu_reboot
--> menu_reboot
-.It Va NAMEtoggled_ansi[x]
--> toggled_ansi[x]
-.It Va NAMEtoggled_text[x]
--> toggled_text[x]
-.El
-.Pp
-where
-.Dq Li NAME
-is the value of $menuset_nameN.
-In the case of $NAMEmenu_init ($menusetN_init when $menuset_nameN is unset),
-the value is evaluated as an FICL statement.
-This can be used to dynamically adjust the menuset variables right before the
-menu is activated.
-.Pp
-In addition,
-.Nm
-provides the following FICL words:
-.Pp
-.Bl -tag -width menuset -compact -offset indent
-.It Ic menuset-checksetnum ( N -- )
-Given a single integer on the stack, sets a global variable
-.Va menuset_use_name
-to a boolean based on whether $menuset_nameN is set (true) or not (false).
-Also sets $affix temporary variable (prefix or infix depending on
-menuset_use_name).
-Automatically called by menuset-loadsetnum and menusets-unset.
-.It Ic menuset-loadvar ( -- )
-Used indirectly to shorten syntax and mitigate dictionary size.
-Requires the following temporary environment variables:
-.Pp
-.Bl -tag -width affix -compact -offset indent
-.It Va type
-should be set to one of: menu toggled ansi
-.It Va var
-should be set to one of: caption command keycode text ...
-.It Va affix
-either a prefix (menuset_use_name is true) or infix (menuset_use_name is false)
-.El
-.Pp
-If the global
-.Va menuset_use_name
-is true, the variable ${type}_${var} is made to
-equal the value of the variable ${affix}${type}_${var}
-(note: in this case menuset-checksetnum has set $affix to $menuset_nameN).
-Otherwise (when
-.Va menuset_use_name
-is false), the variable ${type}_${var} is made to
-equal the value of the variable ${type}set${affix}_${var}
-(note: in this case menuset-checksetnum has set $affix to N).
-.Pp
-Both the global variable
-.Va menuset_use_name
-and the environment variable $affix are automatically handled by
-menuset-checksetnum above (which is automatically called by
-menuset-loadsetnum).
-.It Ic menuset-unloadvar ( -- )
-Used indirectly to shorten syntax and mitigate dictionary size.
-Like menuset-loadvar except it unsets the menuset variable.
-If global
-.Va menuset_use_name
-is true ($affix is $menuset_nameN),
-variable ${affix}${type}_${var} is unset.
-Otherwise, $affix is N and variable ${type}set${affix}_${var} is unset.
-.It Ic menuset-loadmenuvar ( -- )
-Sets $type to
-.Dq menu
-and calls menuset-loadvar.
-.It Ic menuset-unloadmenuvar ( -- )
-Sets $type to
-.Dq menu
-and calls menuset-unloadvar.
-.It Ic menuset-loadxvar ( -- )
-Like menuset-loadvar except it takes an additional temporary variable $x.
-If the global
-.Va menuset_use_name
-is true (making $affix equal $menuset_nameN),
-sets variable ${type}_${var}[${x}] to variable ${affix}${type}_${var}[${x}].
-Otherwise ($affix being N), sets the same variable to instead
-${type}set{affix}_${var}[${x}].
-.It Ic menuset-unloadxvar ( -- )
-Like menuset-loadxvar except it unsets the menuset variable.
-If global
-.Va menuset_use_name
-is true, unsets ${affix}${type}_${var}[${x}].
-Otherwise, unsets ${type}set${affix}_${var}[${x}].
-.It Ic menuset-loadansixvar ( -- )
-Sets $type to
-.Dq ansi
-and calls menuset-loadxvar
-.It Ic menuset-unloadansixvar ( -- )
-Sets $type to
-.Dq ansi
-and calls menuset-unloadxvar
-.It Ic menuset-loadmenuxvar ( -- )
-Sets $type to
-.Dq ansi
-and calls menuset-loadxvar
-.It Ic menuset-unloadmenuxvar ( -- )
-Sets $type to
-.Dq ansi
-and calls menuset-unloadxvar
-.It Ic menuset-loadtoggledxvar ( -- )
-Sets $type to
-.Dq toggled
-and calls menuset-loadxvar
-.It Ic menuset-unloadtoggledxvar ( -- )
-Sets $type to
-.Dq toggled
-and calls menuset-unloadxvar
-.It Ic menuset-loadxyvar ( -- )
-Like menuset-loadxvar except it takes an additional temporary variable $y.
-If the global
-.Va menuset_use_name
-is true ($affix is $menuset_nameN),
-sets variable ${type}_${var}[${x}][${y}] to ${affix}${type}_${var}[${x}][${y}].
-Otherwise ($affix is N) sets the same variable to instead
-${type}set${affix}_${var}[${x}][${y}].
-.It Ic menuset-unloadxyvar ( -- )
-Like menuset-loadxyvar except it unsets the menuset variable.
-If the global
-.Va menuset_use_name
-is true, unsets ${affix}${type}_${var}[${x}][${y}].
-Otherwise, unsets ${type}set${affix}_${var}[${x}][${y}].
-.It Ic menuset-loadansixyvar ( -- )
-Sets $type to
-.Dq ansi
-and calls menuset-loadxyvar.
-.It Ic menuset-unloadansixyvar ( -- )
-Sets $type to
-.Dq ansi
-and calls menuset-unloadxyvar.
-.It Ic menuset-loadmenuxyvar ( -- )
-Sets $type to
-.Dq menu
-and calls menuset-loadxyvar.
-.It Ic menuset-unloadmenuxyvar ( -- )
-Sets $type to
-.Dq menu
-and calls menuset-unloadxyvar.
-.It Ic menuset-setnum-namevar ( N -- C-Addr/U )
-Takes a single integer on the stack and replaces it with a string (in c-addr/u
-format) whose value is
-.Dq menuset_nameN .
-For example, if given 1 returns
-.Dq menuset_name1 .
-.It Ic menuset-cleanup ( N -- )
-Unsets all the various temporary variables, currently
-.Va type ,
-.Va var ,
-.Va x ,
-.Va y ,
-and
-.Va affix .
-.El
-.Pp
-For all values of
-.Dq Li x
-above, use any number between 1 through 9. Sorry, double-digits are not
-currently supported.
-For all values of
-.Dq Li N
-above, use any number between 1 and 65535.
-.Sh FILES
-.Bl -tag -width /boot/menu-commands.4th -compact
-.It Pa /boot/loader
-The
-.Xr loader 8 .
-.It Pa /boot/menu.4th
-Dynamic menu module.
-.It Pa /boot/menu-commands.4th
-Contains the goto_menu command.
-.It Pa /boot/menusets.4th
-.Nm
-itself.
-.It Pa /boot/loader.rc
-.Xr loader 8
-bootstrapping script.
-.El
-.Sh EXAMPLES
-A simple boot menu with a submenu:
-.Pp
-.Bd -literal -offset indent -compact
-include /boot/menu.4th
-include /boot/menu-commands.4th
-menu-init
-set menuset1_caption[1]="Boot"
-set menuset1_command[1]="boot"
-set menuset1_caption[2]="Submenu..."
-set menuset1_command[2]="2 goto_menu"
-set menuset2_caption[1]="Back"
-set menuset2_command[1]="1 goto_menu"
-set menuset_initial=2
-menuset-loadinitial
-menu-display
-.Ed
-.Pp
-The same boot menu with named menusets:
-.Pp
-.Bd -literal -offset indent -compact
-include /boot/menu.4th
-include /boot/menu-commands.4th
-menu-init
-set menuset_name1=main
-set mainmenu_caption[1]="Boot"
-set mainmenu_command[1]="boot"
-set mainmenu_caption[2]="Submenu..."
-set mainmenu_command[2]="2 goto_menu"
-set menuset_name2=sub
-set submenu_caption[1]="Back"
-set submenu_command[1]="1 goto_menu"
-.Ed
-.Sh SEE ALSO
-.Xr loader.conf 5 ,
-.Xr beastie.4th 8 ,
-.Xr loader 8 ,
-.Xr loader.4th 8 ,
-.Xr menu.4th 8
-.Sh HISTORY
-The
-.Nm
-set of commands first appeared in
-.Fx 10.0 .
-.Sh AUTHORS
-The
-.Nm
-set of commands was written by
-.An -nosplit
-.An Devin Teske Aq dteske@FreeBSD.org .
diff --git a/sys/boot/forth/pcibios.4th b/sys/boot/forth/pcibios.4th
deleted file mode 100644
index 71702dad8a0c..000000000000
--- a/sys/boot/forth/pcibios.4th
+++ /dev/null
@@ -1,47 +0,0 @@
-\ Copyright (c) 2014 M. Warner Losh <imp@FreeBSD.org>
-\ All rights reserved.
-\
-\ Redistribution and use in source and binary forms, with or without
-\ modification, are permitted provided that the following conditions
-\ are met:
-\ 1. Redistributions of source code must retain the above copyright
-\ notice, this list of conditions and the following disclaimer.
-\ 2. Redistributions in binary form must reproduce the above copyright
-\ notice, this list of conditions and the following disclaimer in the
-\ documentation and/or other materials provided with the distribution.
-\
-\ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-\ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-\ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-\ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-\ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-\ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-\ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-\ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-\ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-\ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-\ SUCH DAMAGE.
-\
-\ $FreeBSD$
-
-only forth also support-functions also builtins definitions
-
-\ pci-device-count pci-id
-\
-\ Counts the number of instances of pci-id in the system and reports
-\ it to the user.
-: pci-device-count
- 0= if ( interpreted ) get_arguments then
-
- 0= if ." Need an argument" cr abort then
- \ First argument is 0 when we're interprated. See support.4th
- \ for get_arguments reading the rest of the line and parsing it
- \ stack: argN lenN ... arg1 len1 N
- hex ?number decimal
- 0= if ." Bad pci-id given (must be legal hex value)" cr abort then
- dup pcibios-device-count ." Found " . ." instances of " hex . decimal cr
-;
-
-also forth definitions also builtins
-
-builtin: pci-device-count
diff --git a/sys/boot/forth/pnp.4th b/sys/boot/forth/pnp.4th
deleted file mode 100644
index 8be89d8277fe..000000000000
--- a/sys/boot/forth/pnp.4th
+++ /dev/null
@@ -1,205 +0,0 @@
-\ Copyright (c) 2000 Daniel C. Sobral <dcs@FreeBSD.org>
-\ All rights reserved.
-\
-\ Redistribution and use in source and binary forms, with or without
-\ modification, are permitted provided that the following conditions
-\ are met:
-\ 1. Redistributions of source code must retain the above copyright
-\ notice, this list of conditions and the following disclaimer.
-\ 2. Redistributions in binary form must reproduce the above copyright
-\ notice, this list of conditions and the following disclaimer in the
-\ documentation and/or other materials provided with the distribution.
-\
-\ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-\ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-\ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-\ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-\ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-\ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-\ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-\ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-\ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-\ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-\ SUCH DAMAGE.
-\
-\ $FreeBSD$
-
-
-\ The following pnp code is used in pnp.4th and pnp.c
-structure: STAILQ_HEAD
- ptr stqh_first \ type*
- ptr stqh_last \ type**
-;structure
-
-structure: STAILQ_ENTRY
- ptr stqe_next \ type*
-;structure
-
-structure: pnphandler
- ptr pnph.name
- ptr pnph.enumerate
-;structure
-
-structure: pnpident
- ptr pnpid.ident \ char*
- sizeof STAILQ_ENTRY cells member: pnpid.link \ pnpident
-;structure
-
-structure: pnpinfo \ sync with sys/boot/config/bootstrap.h
- ptr pnpi.desc
- int pnpi.revision
- ptr pnpi.module \ (char*) module args
- int pnpi.argc
- ptr pnpi.argv
- ptr pnpi.handler \ pnphandler
- sizeof STAILQ_HEAD member: pnpi.ident \ pnpident
- sizeof STAILQ_ENTRY member: pnpi.link \ pnpinfo
-;structure
-\ end of pnp support
-
-pnpdevices drop
-
-: enumerate
- pnphandlers begin
- dup @
- while
- ." Probing " dup @ pnph.name @ dup strlen type ." ..." cr
- 0 over @ pnph.enumerate @ ccall drop
- cell+
- repeat
-;
-
-: summary
- ." PNP scan summary:" cr
- pnpdevices stqh_first @
- begin
- dup
- while
- dup pnpi.ident stqh_first @ pnpid.ident @ dup strlen type
- dup pnpi.desc @ ?dup if
- ." : "
- dup strlen type
- then
- cr
- pnpi.link stqe_next @
- repeat
- drop
-;
-
-: compare-pnpid ( addr addr' -- flag )
- begin
- over c@ over c@ <> if drop drop false exit then
- over c@ over c@ and
- while
- char+ swap char+ swap
- repeat
- c@ swap c@ or 0=
-;
-
-: search-pnpid ( id -- flag )
- >r
- pnpdevices stqh_first @
- begin ( pnpinfo )
- dup
- while
- dup pnpi.ident stqh_first @
- begin ( pnpinfo pnpident )
- dup pnpid.ident @ r@ compare-pnpid
- if
- r> drop
- \ XXX Temporary debugging message
- ." Found " pnpid.ident @ dup strlen type
- pnpi.desc @ ?dup if
- ." : " dup strlen type
- then cr
- \ drop drop
- true
- exit
- then
- pnpid.link stqe_next @
- ?dup 0=
- until
- pnpi.link stqe_next @
- repeat
- r> drop
- drop
- false
-;
-
-: skip-space ( addr -- addr' )
- begin
- dup c@ bl =
- over c@ 9 = or
- while
- char+
- repeat
-;
-
-: skip-to-space ( addr -- addr' )
- begin
- dup c@ bl <>
- over c@ 9 <> and
- over c@ and
- while
- char+
- repeat
-;
-
-: premature-end? ( addr -- addr flag )
- postpone dup postpone c@ postpone 0=
- postpone if postpone exit postpone then
-; immediate
-
-0 value filename
-0 value timestamp
-0 value id
-
-only forth also support-functions
-
-: (load) load ;
-
-: check-pnpid ( -- )
- line_buffer .addr @
- \ Search for filename
- skip-space premature-end?
- dup to filename
- \ Search for end of filename
- skip-to-space premature-end?
- 0 over c! char+
- \ Search for timestamp
- skip-space premature-end?
- dup to timestamp
- skip-to-space premature-end?
- 0 over c! char+
- \ Search for ids
- begin
- skip-space premature-end?
- dup to id
- skip-to-space dup c@ >r
- 0 over c! char+
- id search-pnpid if
- filename dup strlen 1 ['] (load) catch if
- drop drop drop
- ." Error loading " filename dup strlen type cr
- then
- r> drop exit
- then
- r> 0=
- until
-;
-
-: load-pnp
- 0 to end_of_file?
- reset_line_reading
- s" /boot/pnpid.conf" O_RDONLY fopen fd !
- fd @ -1 <> if
- begin
- end_of_file? 0=
- while
- read_line
- check-pnpid
- repeat
- fd @ fclose
- then
-;
-
diff --git a/sys/boot/forth/screen.4th b/sys/boot/forth/screen.4th
deleted file mode 100644
index e0af82b3a8b8..000000000000
--- a/sys/boot/forth/screen.4th
+++ /dev/null
@@ -1,74 +0,0 @@
-\ Copyright (c) 2003 Scott Long <scottl@FreeBSD.org>
-\ Copyright (c) 2015 Devin Teske <dteske@FreeBSD.org>
-\ All rights reserved.
-\
-\ Redistribution and use in source and binary forms, with or without
-\ modification, are permitted provided that the following conditions
-\ are met:
-\ 1. Redistributions of source code must retain the above copyright
-\ notice, this list of conditions and the following disclaimer.
-\ 2. Redistributions in binary form must reproduce the above copyright
-\ notice, this list of conditions and the following disclaimer in the
-\ documentation and/or other materials provided with the distribution.
-\
-\ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-\ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-\ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-\ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-\ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-\ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-\ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-\ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-\ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-\ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-\ SUCH DAMAGE.
-\
-\ $FreeBSD$
-
-marker task-screen.4th
-
-\ emit Esc-[
-: escc ( -- ) 27 emit [char] [ emit ;
-
-\ Home cursor ( Esc-[H )
-: ho ( -- ) escc [char] H emit ;
-
-\ Clear from current position to end of display ( Esc-[J )
-: cld ( -- ) escc [char] J emit ;
-
-\ clear screen
-: clear ( -- ) ho cld ;
-
-\ move cursor to x rows, y cols (1-based coords) ( Esc-[%d;%dH )
-: at-xy ( x y -- ) escc .# [char] ; emit .# [char] H emit ;
-
-\ Set foreground color ( Esc-[3%dm )
-: fg ( x -- ) escc 3 .# .# [char] m emit ;
-
-\ Set background color ( Esc-[4%dm )
-: bg ( x -- ) escc 4 .# .# [char] m emit ;
-
-\ Mode end (clear attributes)
-: me ( -- ) escc [char] m emit ;
-
-\ Enable bold mode ( Esc-[1m )
-: b ( -- ) escc 1 .# [char] m emit ;
-
-\ Disable bold mode ( Esc-[22m )
-: -b ( -- ) escc 22 .# [char] m emit ;
-
-\ Enable inverse foreground/background mode ( Esc-[7m )
-: inv ( -- ) escc 7 .# [char] m emit ;
-
-\ Disable inverse foreground/background mode ( Esc-[27m )
-: -inv ( -- ) escc 27 .# [char] m emit ;
-
-\ Convert all occurrences of given character (c) in string (c-addr/u) to Esc
-: escc! ( c-addr/u c -- c-addr/u )
- 2 pick 2 pick
- begin dup 0> while
- over c@ 3 pick = if over 27 swap c! then
- 1- swap 1+ swap
- repeat
- 2drop drop
-;
diff --git a/sys/boot/forth/shortcuts.4th b/sys/boot/forth/shortcuts.4th
deleted file mode 100644
index 33a1cf678988..000000000000
--- a/sys/boot/forth/shortcuts.4th
+++ /dev/null
@@ -1,50 +0,0 @@
-\ Copyright (c) 2008-2011 Devin Teske <dteske@FreeBSD.org>
-\ All rights reserved.
-\
-\ Redistribution and use in source and binary forms, with or without
-\ modification, are permitted provided that the following conditions
-\ are met:
-\ 1. Redistributions of source code must retain the above copyright
-\ notice, this list of conditions and the following disclaimer.
-\ 2. Redistributions in binary form must reproduce the above copyright
-\ notice, this list of conditions and the following disclaimer in the
-\ documentation and/or other materials provided with the distribution.
-\
-\ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-\ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-\ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-\ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-\ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-\ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-\ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-\ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-\ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-\ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-\ SUCH DAMAGE.
-\
-\ $FreeBSD$
-
-\ FICL words intended to be used as shortcuts for carrying out common tasks or
-\ producing common results. Generally, words defined here are simply groupings
-\ of other custom words that pull from multiple libraries (for example, if you
-\ want to define a custom word that uses words defined in three different
-\ libraries, this is a good place to define such a word).
-\
-\ This script should be included after you have included any/all other
-\ libraries. This will prevent calling a word defined here before any required
-\ words have been defined.
-
-marker task-shortcuts.4th
-
-\ This "shortcut" word will not be used directly, but is defined here to
-\ offer the user a quick way to get back into the interactive PXE menu
-\ after they have escaped to the shell (perhaps by accident).
-\
-: menu ( -- )
- clear \ Clear the screen (in screen.4th)
- print_version \ print version string (bottom-right; see version.4th)
- draw-beastie \ Draw FreeBSD logo at right (in beastie.4th)
- draw-brand \ Draw FIS logo at top (in brand.4th)
- menu-init \ Initialize menu and draw bounding box (in menu.4th)
- menu-display \ Launch interactive menu (in menu.4th)
-;
diff --git a/sys/boot/forth/support.4th b/sys/boot/forth/support.4th
deleted file mode 100644
index 7ce9e5289acf..000000000000
--- a/sys/boot/forth/support.4th
+++ /dev/null
@@ -1,1606 +0,0 @@
-\ Copyright (c) 1999 Daniel C. Sobral <dcs@FreeBSD.org>
-\ All rights reserved.
-\
-\ Redistribution and use in source and binary forms, with or without
-\ modification, are permitted provided that the following conditions
-\ are met:
-\ 1. Redistributions of source code must retain the above copyright
-\ notice, this list of conditions and the following disclaimer.
-\ 2. Redistributions in binary form must reproduce the above copyright
-\ notice, this list of conditions and the following disclaimer in the
-\ documentation and/or other materials provided with the distribution.
-\
-\ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-\ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-\ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-\ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-\ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-\ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-\ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-\ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-\ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-\ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-\ SUCH DAMAGE.
-\
-\ $FreeBSD$
-
-\ Loader.rc support functions:
-\
-\ initialize ( addr len -- ) as above, plus load_conf_files
-\ load_conf ( addr len -- ) load conf file given
-\ include_conf_files ( -- ) load all conf files in load_conf_files
-\ print_syntax_error ( -- ) print line and marker of where a syntax
-\ error was detected
-\ print_line ( -- ) print last line processed
-\ load_kernel ( -- ) load kernel
-\ load_modules ( -- ) load modules flagged
-\
-\ Exported structures:
-\
-\ string counted string structure
-\ cell .addr string address
-\ cell .len string length
-\ module module loading information structure
-\ cell module.flag should we load it?
-\ string module.name module's name
-\ string module.loadname name to be used in loading the module
-\ string module.type module's type
-\ string module.args flags to be passed during load
-\ string module.beforeload command to be executed before load
-\ string module.afterload command to be executed after load
-\ string module.loaderror command to be executed if load fails
-\ cell module.next list chain
-\
-\ Exported global variables;
-\
-\ string conf_files configuration files to be loaded
-\ cell modules_options pointer to first module information
-\ value verbose? indicates if user wants a verbose loading
-\ value any_conf_read? indicates if a conf file was successfully read
-\
-\ Other exported words:
-\ note, strlen is internal
-\ strdup ( addr len -- addr' len) similar to strdup(3)
-\ strcat ( addr len addr' len' -- addr len+len' ) similar to strcat(3)
-\ s' ( | string' -- addr len | ) similar to s"
-\ rudimentary structure support
-
-\ Exception values
-
-1 constant ESYNTAX
-2 constant ENOMEM
-3 constant EFREE
-4 constant ESETERROR \ error setting environment variable
-5 constant EREAD \ error reading
-6 constant EOPEN
-7 constant EEXEC \ XXX never catched
-8 constant EBEFORELOAD
-9 constant EAFTERLOAD
-
-\ I/O constants
-
-0 constant SEEK_SET
-1 constant SEEK_CUR
-2 constant SEEK_END
-
-0 constant O_RDONLY
-1 constant O_WRONLY
-2 constant O_RDWR
-
-\ Crude structure support
-
-: structure:
- create here 0 , ['] drop , 0
- does> create here swap dup @ allot cell+ @ execute
-;
-: member: create dup , over , + does> cell+ @ + ;
-: ;structure swap ! ;
-: constructor! >body cell+ ! ;
-: constructor: over :noname ;
-: ;constructor postpone ; swap cell+ ! ; immediate
-: sizeof ' >body @ state @ if postpone literal then ; immediate
-: offsetof ' >body cell+ @ state @ if postpone literal then ; immediate
-: ptr 1 cells member: ;
-: int 1 cells member: ;
-
-\ String structure
-
-structure: string
- ptr .addr
- int .len
- constructor:
- 0 over .addr !
- 0 swap .len !
- ;constructor
-;structure
-
-
-\ Module options linked list
-
-structure: module
- int module.flag
- sizeof string member: module.name
- sizeof string member: module.loadname
- sizeof string member: module.type
- sizeof string member: module.args
- sizeof string member: module.beforeload
- sizeof string member: module.afterload
- sizeof string member: module.loaderror
- ptr module.next
-;structure
-
-\ Internal loader structures (preloaded_file, kernel_module, file_metadata)
-\ must be in sync with the C struct in sys/boot/common/bootstrap.h
-structure: preloaded_file
- ptr pf.name
- ptr pf.type
- ptr pf.args
- ptr pf.metadata \ file_metadata
- int pf.loader
- int pf.addr
- int pf.size
- ptr pf.modules \ kernel_module
- ptr pf.next \ preloaded_file
-;structure
-
-structure: kernel_module
- ptr km.name
- \ ptr km.args
- ptr km.fp \ preloaded_file
- ptr km.next \ kernel_module
-;structure
-
-structure: file_metadata
- int md.size
- 2 member: md.type \ this is not ANS Forth compatible (XXX)
- ptr md.next \ file_metadata
- 0 member: md.data \ variable size
-;structure
-
-\ end of structures
-
-\ Global variables
-
-string conf_files
-string nextboot_conf_file
-create module_options sizeof module.next allot 0 module_options !
-create last_module_option sizeof module.next allot 0 last_module_option !
-0 value verbose?
-0 value nextboot?
-
-\ Support string functions
-: strdup { addr len -- addr' len' }
- len allocate if ENOMEM throw then
- addr over len move len
-;
-
-: strcat { addr len addr' len' -- addr len+len' }
- addr' addr len + len' move
- addr len len' +
-;
-
-: strchr { addr len c -- addr' len' }
- begin
- len
- while
- addr c@ c = if addr len exit then
- addr 1 + to addr
- len 1 - to len
- repeat
- 0 0
-;
-
-: s' \ same as s", allows " in the string
- [char] ' parse
- state @ if postpone sliteral then
-; immediate
-
-: 2>r postpone >r postpone >r ; immediate
-: 2r> postpone r> postpone r> ; immediate
-: 2r@ postpone 2r> postpone 2dup postpone 2>r ; immediate
-
-: getenv? getenv -1 = if false else drop true then ;
-
-\ determine if a word appears in a string, case-insensitive
-: contains? ( addr1 len1 addr2 len2 -- 0 | -1 )
- 2 pick 0= if 2drop 2drop true exit then
- dup 0= if 2drop 2drop false exit then
- begin
- begin
- swap dup c@ dup 32 = over 9 = or over 10 = or
- over 13 = or over 44 = or swap drop
- while 1+ swap 1- repeat
- swap 2 pick 1- over <
- while
- 2over 2over drop over compare-insensitive 0= if
- 2 pick over = if 2drop 2drop true exit then
- 2 pick tuck - -rot + swap over c@ dup 32 =
- over 9 = or over 10 = or over 13 = or over 44 = or
- swap drop if 2drop 2drop true exit then
- then begin
- swap dup c@ dup 32 = over 9 = or over 10 = or
- over 13 = or over 44 = or swap drop
- if false else true then 2 pick 0> and
- while 1+ swap 1- repeat
- swap
- repeat
- 2drop 2drop false
-;
-
-: boot_serial? ( -- 0 | -1 )
- s" console" getenv dup -1 <> if
- s" comconsole" 2swap contains?
- else drop false then
- s" boot_serial" getenv dup -1 <> if
- swap drop 0>
- else drop false then
- or \ console contains comconsole ( or ) boot_serial
- s" boot_multicons" getenv dup -1 <> if
- swap drop 0>
- else drop false then
- or \ previous boolean ( or ) boot_multicons
-;
-
-\ Private definitions
-
-vocabulary support-functions
-only forth also support-functions definitions
-
-\ Some control characters constants
-
-7 constant bell
-8 constant backspace
-9 constant tab
-10 constant lf
-13 constant <cr>
-
-\ Read buffer size
-
-80 constant read_buffer_size
-
-\ Standard suffixes
-
-: load_module_suffix s" _load" ;
-: module_loadname_suffix s" _name" ;
-: module_type_suffix s" _type" ;
-: module_args_suffix s" _flags" ;
-: module_beforeload_suffix s" _before" ;
-: module_afterload_suffix s" _after" ;
-: module_loaderror_suffix s" _error" ;
-
-\ Support operators
-
-: >= < 0= ;
-: <= > 0= ;
-
-\ Assorted support functions
-
-: free-memory free if EFREE throw then ;
-
-: strget { var -- addr len } var .addr @ var .len @ ;
-
-\ assign addr len to variable.
-: strset { addr len var -- } addr var .addr ! len var .len ! ;
-
-\ free memory and reset fields
-: strfree { var -- } var .addr @ ?dup if free-memory 0 0 var strset then ;
-
-\ free old content, make a copy of the string and assign to variable
-: string= { addr len var -- } var strfree addr len strdup var strset ;
-
-: strtype ( str -- ) strget type ;
-
-\ assign a reference to what is on the stack
-: strref { addr len var -- addr len }
- addr var .addr ! len var .len ! addr len
-;
-
-\ unquote a string
-: unquote ( addr len -- addr len )
- over c@ [char] " = if 2 chars - swap char+ swap then
-;
-
-\ Assignment data temporary storage
-
-string name_buffer
-string value_buffer
-
-\ Line by line file reading functions
-\
-\ exported:
-\ line_buffer
-\ end_of_file?
-\ fd
-\ read_line
-\ reset_line_reading
-
-vocabulary line-reading
-also line-reading definitions
-
-\ File data temporary storage
-
-string read_buffer
-0 value read_buffer_ptr
-
-\ File's line reading function
-
-get-current ( -- wid ) previous definitions
-
-string line_buffer
-0 value end_of_file?
-variable fd
-
->search ( wid -- ) definitions
-
-: skip_newlines
- begin
- read_buffer .len @ read_buffer_ptr >
- while
- read_buffer .addr @ read_buffer_ptr + c@ lf = if
- read_buffer_ptr char+ to read_buffer_ptr
- else
- exit
- then
- repeat
-;
-
-: scan_buffer ( -- addr len )
- read_buffer_ptr >r
- begin
- read_buffer .len @ r@ >
- while
- read_buffer .addr @ r@ + c@ lf = if
- read_buffer .addr @ read_buffer_ptr + ( -- addr )
- r@ read_buffer_ptr - ( -- len )
- r> to read_buffer_ptr
- exit
- then
- r> char+ >r
- repeat
- read_buffer .addr @ read_buffer_ptr + ( -- addr )
- r@ read_buffer_ptr - ( -- len )
- r> to read_buffer_ptr
-;
-
-: line_buffer_resize ( len -- len )
- >r
- line_buffer .len @ if
- line_buffer .addr @
- line_buffer .len @ r@ +
- resize if ENOMEM throw then
- else
- r@ allocate if ENOMEM throw then
- then
- line_buffer .addr !
- r>
-;
-
-: append_to_line_buffer ( addr len -- )
- line_buffer strget
- 2swap strcat
- line_buffer .len !
- drop
-;
-
-: read_from_buffer
- scan_buffer ( -- addr len )
- line_buffer_resize ( len -- len )
- append_to_line_buffer ( addr len -- )
-;
-
-: refill_required?
- read_buffer .len @ read_buffer_ptr =
- end_of_file? 0= and
-;
-
-: refill_buffer
- 0 to read_buffer_ptr
- read_buffer .addr @ 0= if
- read_buffer_size allocate if ENOMEM throw then
- read_buffer .addr !
- then
- fd @ read_buffer .addr @ read_buffer_size fread
- dup -1 = if EREAD throw then
- dup 0= if true to end_of_file? then
- read_buffer .len !
-;
-
-get-current ( -- wid ) previous definitions >search ( wid -- )
-
-: reset_line_reading
- 0 to read_buffer_ptr
-;
-
-: read_line
- line_buffer strfree
- skip_newlines
- begin
- read_from_buffer
- refill_required?
- while
- refill_buffer
- repeat
-;
-
-only forth also support-functions definitions
-
-\ Conf file line parser:
-\ <line> ::= <spaces><name><spaces>'='<spaces><value><spaces>[<comment>] |
-\ <spaces>[<comment>]
-\ <name> ::= <letter>{<letter>|<digit>|'_'}
-\ <value> ::= '"'{<character_set>|'\'<anything>}'"' | <name>
-\ <character_set> ::= ASCII 32 to 126, except '\' and '"'
-\ <comment> ::= '#'{<anything>}
-\
-\ exported:
-\ line_pointer
-\ process_conf
-
-0 value line_pointer
-
-vocabulary file-processing
-also file-processing definitions
-
-\ parser functions
-\
-\ exported:
-\ get_assignment
-
-vocabulary parser
-also parser definitions
-
-0 value parsing_function
-0 value end_of_line
-
-: end_of_line? line_pointer end_of_line = ;
-
-\ classifiers for various character classes in the input line
-
-: letter?
- line_pointer c@ >r
- r@ [char] A >=
- r@ [char] Z <= and
- r@ [char] a >=
- r> [char] z <= and
- or
-;
-
-: digit?
- line_pointer c@ >r
- r@ [char] - =
- r@ [char] 0 >=
- r> [char] 9 <= and
- or
-;
-
-: quote? line_pointer c@ [char] " = ;
-
-: assignment_sign? line_pointer c@ [char] = = ;
-
-: comment? line_pointer c@ [char] # = ;
-
-: space? line_pointer c@ bl = line_pointer c@ tab = or ;
-
-: backslash? line_pointer c@ [char] \ = ;
-
-: underscore? line_pointer c@ [char] _ = ;
-
-: dot? line_pointer c@ [char] . = ;
-
-\ manipulation of input line
-: skip_character line_pointer char+ to line_pointer ;
-
-: skip_to_end_of_line end_of_line to line_pointer ;
-
-: eat_space
- begin
- end_of_line? if 0 else space? then
- while
- skip_character
- repeat
-;
-
-: parse_name ( -- addr len )
- line_pointer
- begin
- end_of_line? if 0 else letter? digit? underscore? dot? or or or then
- while
- skip_character
- repeat
- line_pointer over -
- strdup
-;
-
-: remove_backslashes { addr len | addr' len' -- addr' len' }
- len allocate if ENOMEM throw then
- to addr'
- addr >r
- begin
- addr c@ [char] \ <> if
- addr c@ addr' len' + c!
- len' char+ to len'
- then
- addr char+ to addr
- r@ len + addr =
- until
- r> drop
- addr' len'
-;
-
-: parse_quote ( -- addr len )
- line_pointer
- skip_character
- end_of_line? if ESYNTAX throw then
- begin
- quote? 0=
- while
- backslash? if
- skip_character
- end_of_line? if ESYNTAX throw then
- then
- skip_character
- end_of_line? if ESYNTAX throw then
- repeat
- skip_character
- line_pointer over -
- remove_backslashes
-;
-
-: read_name
- parse_name ( -- addr len )
- name_buffer strset
-;
-
-: read_value
- quote? if
- parse_quote ( -- addr len )
- else
- parse_name ( -- addr len )
- then
- value_buffer strset
-;
-
-: comment
- skip_to_end_of_line
-;
-
-: white_space_4
- eat_space
- comment? if ['] comment to parsing_function exit then
- end_of_line? 0= if ESYNTAX throw then
-;
-
-: variable_value
- read_value
- ['] white_space_4 to parsing_function
-;
-
-: white_space_3
- eat_space
- letter? digit? quote? or or if
- ['] variable_value to parsing_function exit
- then
- ESYNTAX throw
-;
-
-: assignment_sign
- skip_character
- ['] white_space_3 to parsing_function
-;
-
-: white_space_2
- eat_space
- assignment_sign? if ['] assignment_sign to parsing_function exit then
- ESYNTAX throw
-;
-
-: variable_name
- read_name
- ['] white_space_2 to parsing_function
-;
-
-: white_space_1
- eat_space
- letter? if ['] variable_name to parsing_function exit then
- comment? if ['] comment to parsing_function exit then
- end_of_line? 0= if ESYNTAX throw then
-;
-
-get-current ( -- wid ) previous definitions >search ( wid -- )
-
-: get_assignment
- line_buffer strget + to end_of_line
- line_buffer .addr @ to line_pointer
- ['] white_space_1 to parsing_function
- begin
- end_of_line? 0=
- while
- parsing_function execute
- repeat
- parsing_function ['] comment =
- parsing_function ['] white_space_1 =
- parsing_function ['] white_space_4 =
- or or 0= if ESYNTAX throw then
-;
-
-only forth also support-functions also file-processing definitions
-
-\ Process line
-
-: assignment_type? ( addr len -- flag )
- name_buffer strget
- compare 0=
-;
-
-: suffix_type? ( addr len -- flag )
- name_buffer .len @ over <= if 2drop false exit then
- name_buffer .len @ over - name_buffer .addr @ +
- over compare 0=
-;
-
-: loader_conf_files? s" loader_conf_files" assignment_type? ;
-
-: nextboot_flag? s" nextboot_enable" assignment_type? ;
-
-: nextboot_conf? s" nextboot_conf" assignment_type? ;
-
-: verbose_flag? s" verbose_loading" assignment_type? ;
-
-: execute? s" exec" assignment_type? ;
-
-: module_load? load_module_suffix suffix_type? ;
-
-: module_loadname? module_loadname_suffix suffix_type? ;
-
-: module_type? module_type_suffix suffix_type? ;
-
-: module_args? module_args_suffix suffix_type? ;
-
-: module_beforeload? module_beforeload_suffix suffix_type? ;
-
-: module_afterload? module_afterload_suffix suffix_type? ;
-
-: module_loaderror? module_loaderror_suffix suffix_type? ;
-
-\ build a 'set' statement and execute it
-: set_environment_variable
- name_buffer .len @ value_buffer .len @ + 5 chars + \ size of result string
- allocate if ENOMEM throw then
- dup 0 \ start with an empty string and append the pieces
- s" set " strcat
- name_buffer strget strcat
- s" =" strcat
- value_buffer strget strcat
- ['] evaluate catch if
- 2drop free drop
- ESETERROR throw
- else
- free-memory
- then
-;
-
-: set_conf_files
- set_environment_variable
- s" loader_conf_files" getenv conf_files string=
-;
-
-: set_nextboot_conf
- value_buffer strget unquote nextboot_conf_file string=
-;
-
-: append_to_module_options_list ( addr -- )
- module_options @ 0= if
- dup module_options !
- last_module_option !
- else
- dup last_module_option @ module.next !
- last_module_option !
- then
-;
-
-: set_module_name { addr -- } \ check leaks
- name_buffer strget addr module.name string=
-;
-
-: yes_value?
- value_buffer strget \ XXX could use unquote
- 2dup s' "YES"' compare >r
- 2dup s' "yes"' compare >r
- 2dup s" YES" compare >r
- s" yes" compare r> r> r> and and and 0=
-;
-
-: find_module_option ( -- addr | 0 ) \ return ptr to entry matching name_buffer
- module_options @
- begin
- dup
- while
- dup module.name strget
- name_buffer strget
- compare 0= if exit then
- module.next @
- repeat
-;
-
-: new_module_option ( -- addr )
- sizeof module allocate if ENOMEM throw then
- dup sizeof module erase
- dup append_to_module_options_list
- dup set_module_name
-;
-
-: get_module_option ( -- addr )
- find_module_option
- ?dup 0= if new_module_option then
-;
-
-: set_module_flag
- name_buffer .len @ load_module_suffix nip - name_buffer .len !
- yes_value? get_module_option module.flag !
-;
-
-: set_module_args
- name_buffer .len @ module_args_suffix nip - name_buffer .len !
- value_buffer strget unquote
- get_module_option module.args string=
-;
-
-: set_module_loadname
- name_buffer .len @ module_loadname_suffix nip - name_buffer .len !
- value_buffer strget unquote
- get_module_option module.loadname string=
-;
-
-: set_module_type
- name_buffer .len @ module_type_suffix nip - name_buffer .len !
- value_buffer strget unquote
- get_module_option module.type string=
-;
-
-: set_module_beforeload
- name_buffer .len @ module_beforeload_suffix nip - name_buffer .len !
- value_buffer strget unquote
- get_module_option module.beforeload string=
-;
-
-: set_module_afterload
- name_buffer .len @ module_afterload_suffix nip - name_buffer .len !
- value_buffer strget unquote
- get_module_option module.afterload string=
-;
-
-: set_module_loaderror
- name_buffer .len @ module_loaderror_suffix nip - name_buffer .len !
- value_buffer strget unquote
- get_module_option module.loaderror string=
-;
-
-: set_nextboot_flag
- yes_value? to nextboot?
-;
-
-: set_verbose
- yes_value? to verbose?
-;
-
-: execute_command
- value_buffer strget unquote
- ['] evaluate catch if EEXEC throw then
-;
-
-: process_assignment
- name_buffer .len @ 0= if exit then
- loader_conf_files? if set_conf_files exit then
- nextboot_flag? if set_nextboot_flag exit then
- nextboot_conf? if set_nextboot_conf exit then
- verbose_flag? if set_verbose exit then
- execute? if execute_command exit then
- module_load? if set_module_flag exit then
- module_loadname? if set_module_loadname exit then
- module_type? if set_module_type exit then
- module_args? if set_module_args exit then
- module_beforeload? if set_module_beforeload exit then
- module_afterload? if set_module_afterload exit then
- module_loaderror? if set_module_loaderror exit then
- set_environment_variable
-;
-
-\ free_buffer ( -- )
-\
-\ Free some pointers if needed. The code then tests for errors
-\ in freeing, and throws an exception if needed. If a pointer is
-\ not allocated, it's value (0) is used as flag.
-
-: free_buffers
- name_buffer strfree
- value_buffer strfree
-;
-
-\ Higher level file processing
-
-get-current ( -- wid ) previous definitions >search ( wid -- )
-
-: process_conf
- begin
- end_of_file? 0=
- while
- free_buffers
- read_line
- get_assignment
- ['] process_assignment catch
- ['] free_buffers catch
- swap throw throw
- repeat
-;
-
-: peek_file ( addr len -- )
- 0 to end_of_file?
- reset_line_reading
- O_RDONLY fopen fd !
- fd @ -1 = if EOPEN throw then
- free_buffers
- read_line
- get_assignment
- ['] process_assignment catch
- ['] free_buffers catch
- fd @ fclose
- swap throw throw
-;
-
-only forth also support-functions definitions
-
-\ Interface to loading conf files
-
-: load_conf ( addr len -- )
- 0 to end_of_file?
- reset_line_reading
- O_RDONLY fopen fd !
- fd @ -1 = if EOPEN throw then
- ['] process_conf catch
- fd @ fclose
- throw
-;
-
-: print_line line_buffer strtype cr ;
-
-: print_syntax_error
- line_buffer strtype cr
- line_buffer .addr @
- begin
- line_pointer over <>
- while
- bl emit char+
- repeat
- drop
- ." ^" cr
-;
-
-
-\ Debugging support functions
-
-only forth definitions also support-functions
-
-: test-file
- ['] load_conf catch dup .
- ESYNTAX = if cr print_syntax_error then
-;
-
-\ find a module name, leave addr on the stack (0 if not found)
-: find-module ( <module> -- ptr | 0 )
- bl parse ( addr len )
- module_options @ >r ( store current pointer )
- begin
- r@
- while
- 2dup ( addr len addr len )
- r@ module.name strget
- compare 0= if drop drop r> exit then ( found it )
- r> module.next @ >r
- repeat
- type ." was not found" cr r>
-;
-
-: show-nonempty ( addr len mod -- )
- strget dup verbose? or if
- 2swap type type cr
- else
- drop drop drop drop
- then ;
-
-: show-one-module { addr -- addr }
- ." Name: " addr module.name strtype cr
- s" Path: " addr module.loadname show-nonempty
- s" Type: " addr module.type show-nonempty
- s" Flags: " addr module.args show-nonempty
- s" Before load: " addr module.beforeload show-nonempty
- s" After load: " addr module.afterload show-nonempty
- s" Error: " addr module.loaderror show-nonempty
- ." Status: " addr module.flag @ if ." Load" else ." Don't load" then cr
- cr
- addr
-;
-
-: show-module-options
- module_options @
- begin
- ?dup
- while
- show-one-module
- module.next @
- repeat
-;
-
-: free-one-module { addr -- addr }
- addr module.name strfree
- addr module.loadname strfree
- addr module.type strfree
- addr module.args strfree
- addr module.beforeload strfree
- addr module.afterload strfree
- addr module.loaderror strfree
- addr
-;
-
-: free-module-options
- module_options @
- begin
- ?dup
- while
- free-one-module
- dup module.next @
- swap free-memory
- repeat
- 0 module_options !
- 0 last_module_option !
-;
-
-only forth also support-functions definitions
-
-\ Variables used for processing multiple conf files
-
-string current_file_name_ref \ used to print the file name
-
-\ Indicates if any conf file was successfully read
-
-0 value any_conf_read?
-
-\ loader_conf_files processing support functions
-
-: get_conf_files ( -- addr len ) \ put addr/len on stack, reset var
- conf_files strget 0 0 conf_files strset
-;
-
-: skip_leading_spaces { addr len pos -- addr len pos' }
- begin
- pos len = if 0 else addr pos + c@ bl = then
- while
- pos char+ to pos
- repeat
- addr len pos
-;
-
-\ return the file name at pos, or free the string if nothing left
-: get_file_name { addr len pos -- addr len pos' addr' len' || 0 }
- pos len = if
- addr free abort" Fatal error freeing memory"
- 0 exit
- then
- pos >r
- begin
- \ stay in the loop until have chars and they are not blank
- pos len = if 0 else addr pos + c@ bl <> then
- while
- pos char+ to pos
- repeat
- addr len pos addr r@ + pos r> -
-;
-
-: get_next_file ( addr len ptr -- addr len ptr' addr' len' | 0 )
- skip_leading_spaces
- get_file_name
-;
-
-: print_current_file
- current_file_name_ref strtype
-;
-
-: process_conf_errors
- dup 0= if true to any_conf_read? drop exit then
- >r 2drop r>
- dup ESYNTAX = if
- ." Warning: syntax error on file " print_current_file cr
- print_syntax_error drop exit
- then
- dup ESETERROR = if
- ." Warning: bad definition on file " print_current_file cr
- print_line drop exit
- then
- dup EREAD = if
- ." Warning: error reading file " print_current_file cr drop exit
- then
- dup EOPEN = if
- verbose? if ." Warning: unable to open file " print_current_file cr then
- drop exit
- then
- dup EFREE = abort" Fatal error freeing memory"
- dup ENOMEM = abort" Out of memory"
- throw \ Unknown error -- pass ahead
-;
-
-\ Process loader_conf_files recursively
-\ Interface to loader_conf_files processing
-
-: include_conf_files
- get_conf_files 0 ( addr len offset )
- begin
- get_next_file ?dup ( addr len 1 | 0 )
- while
- current_file_name_ref strref
- ['] load_conf catch
- process_conf_errors
- conf_files .addr @ if recurse then
- repeat
-;
-
-: get_nextboot_conf_file ( -- addr len )
- nextboot_conf_file strget
-;
-
-: rewrite_nextboot_file ( -- )
- get_nextboot_conf_file
- O_WRONLY fopen fd !
- fd @ -1 = if EOPEN throw then
- fd @ s' nextboot_enable="NO" ' fwrite ( fd buf len -- nwritten ) drop
- fd @ fclose
-;
-
-: include_nextboot_file ( -- )
- get_nextboot_conf_file
- ['] peek_file catch if 2drop then
- nextboot? if
- get_nextboot_conf_file
- current_file_name_ref strref
- ['] load_conf catch
- process_conf_errors
- ['] rewrite_nextboot_file catch if 2drop then
- then
-;
-
-\ Module loading functions
-
-: load_parameters { addr -- addr addrN lenN ... addr1 len1 N }
- addr
- addr module.args strget
- addr module.loadname .len @ if
- addr module.loadname strget
- else
- addr module.name strget
- then
- addr module.type .len @ if
- addr module.type strget
- s" -t "
- 4 ( -t type name flags )
- else
- 2 ( name flags )
- then
-;
-
-: before_load ( addr -- addr )
- dup module.beforeload .len @ if
- dup module.beforeload strget
- ['] evaluate catch if EBEFORELOAD throw then
- then
-;
-
-: after_load ( addr -- addr )
- dup module.afterload .len @ if
- dup module.afterload strget
- ['] evaluate catch if EAFTERLOAD throw then
- then
-;
-
-: load_error ( addr -- addr )
- dup module.loaderror .len @ if
- dup module.loaderror strget
- evaluate \ This we do not intercept so it can throw errors
- then
-;
-
-: pre_load_message ( addr -- addr )
- verbose? if
- dup module.name strtype
- ." ..."
- then
-;
-
-: load_error_message verbose? if ." failed!" cr then ;
-
-: load_successful_message verbose? if ." ok" cr then ;
-
-: load_module
- load_parameters load
-;
-
-: process_module ( addr -- addr )
- pre_load_message
- before_load
- begin
- ['] load_module catch if
- dup module.loaderror .len @ if
- load_error \ Command should return a flag!
- else
- load_error_message true \ Do not retry
- then
- else
- after_load
- load_successful_message true \ Successful, do not retry
- then
- until
-;
-
-: process_module_errors ( addr ior -- )
- dup EBEFORELOAD = if
- drop
- ." Module "
- dup module.name strtype
- dup module.loadname .len @ if
- ." (" dup module.loadname strtype ." )"
- then
- cr
- ." Error executing "
- dup module.beforeload strtype cr \ XXX there was a typo here
- abort
- then
-
- dup EAFTERLOAD = if
- drop
- ." Module "
- dup module.name .addr @ over module.name .len @ type
- dup module.loadname .len @ if
- ." (" dup module.loadname strtype ." )"
- then
- cr
- ." Error executing "
- dup module.afterload strtype cr
- abort
- then
-
- throw \ Don't know what it is all about -- pass ahead
-;
-
-\ Module loading interface
-
-\ scan the list of modules, load enabled ones.
-: load_modules ( -- ) ( throws: abort & user-defined )
- module_options @ ( list_head )
- begin
- ?dup
- while
- dup module.flag @ if
- ['] process_module catch
- process_module_errors
- then
- module.next @
- repeat
-;
-
-\ h00h00 magic used to try loading either a kernel with a given name,
-\ or a kernel with the default name in a directory of a given name
-\ (the pain!)
-
-: bootpath s" /boot/" ;
-: modulepath s" module_path" ;
-
-\ Functions used to save and restore module_path's value.
-: saveenv ( addr len | -1 -- addr' len | 0 -1 )
- dup -1 = if 0 swap exit then
- strdup
-;
-: freeenv ( addr len | 0 -1 )
- -1 = if drop else free abort" Freeing error" then
-;
-: restoreenv ( addr len | 0 -1 -- )
- dup -1 = if ( it wasn't set )
- 2drop
- modulepath unsetenv
- else
- over >r
- modulepath setenv
- r> free abort" Freeing error"
- then
-;
-
-: clip_args \ Drop second string if only one argument is passed
- 1 = if
- 2swap 2drop
- 1
- else
- 2
- then
-;
-
-also builtins
-
-\ Parse filename from a semicolon-separated list
-
-\ replacement, not working yet
-: newparse-; { addr len | a1 -- a' len-x addr x }
- addr len [char] ; strchr dup if ( a1 len1 )
- swap to a1 ( store address )
- 1 - a1 @ 1 + swap ( remove match )
- addr a1 addr -
- else
- 0 0 addr len
- then
-;
-
-: parse-; ( addr len -- addr' len-x addr x )
- over 0 2swap ( addr 0 addr len )
- begin
- dup 0 <> ( addr 0 addr len )
- while
- over c@ [char] ; <> ( addr 0 addr len flag )
- while
- 1- swap 1+ swap
- 2swap 1+ 2swap
- repeat then
- dup 0 <> if
- 1- swap 1+ swap
- then
- 2swap
-;
-
-\ Try loading one of multiple kernels specified
-
-: try_multiple_kernels ( addr len addr' len' args -- flag )
- >r
- begin
- parse-; 2>r
- 2over 2r>
- r@ clip_args
- s" DEBUG" getenv? if
- s" echo Module_path: ${module_path}" evaluate
- ." Kernel : " >r 2dup type r> cr
- dup 2 = if ." Flags : " >r 2over type r> cr then
- then
- 1 load
- while
- dup 0=
- until
- 1 >r \ Failure
- else
- 0 >r \ Success
- then
- 2drop 2drop
- r>
- r> drop
-;
-
-\ Try to load a kernel; the kernel name is taken from one of
-\ the following lists, as ordered:
-\
-\ 1. The "bootfile" environment variable
-\ 2. The "kernel" environment variable
-\
-\ Flags are passed, if available. If not, dummy values must be given.
-\
-\ The kernel gets loaded from the current module_path.
-
-: load_a_kernel ( flags len 1 | x x 0 -- flag )
- local args
- 2local flags
- 0 0 2local kernel
- end-locals
-
- \ Check if a default kernel name exists at all, exits if not
- s" bootfile" getenv dup -1 <> if
- to kernel
- flags kernel args 1+ try_multiple_kernels
- dup 0= if exit then
- then
- drop
-
- s" kernel" getenv dup -1 <> if
- to kernel
- else
- drop
- 1 exit \ Failure
- then
-
- \ Try all default kernel names
- flags kernel args 1+ try_multiple_kernels
-;
-
-\ Try to load a kernel; the kernel name is taken from one of
-\ the following lists, as ordered:
-\
-\ 1. The "bootfile" environment variable
-\ 2. The "kernel" environment variable
-\
-\ Flags are passed, if provided.
-\
-\ The kernel will be loaded from a directory computed from the
-\ path given. Two directories will be tried in the following order:
-\
-\ 1. /boot/path
-\ 2. path
-\
-\ The module_path variable is overridden if load is successful, by
-\ prepending the successful path.
-
-: load_from_directory ( path len 1 | flags len' path len 2 -- flag )
- local args
- 2local path
- args 1 = if 0 0 then
- 2local flags
- 0 0 2local oldmodulepath \ like a string
- 0 0 2local newmodulepath \ like a string
- end-locals
-
- \ Set the environment variable module_path, and try loading
- \ the kernel again.
- modulepath getenv saveenv to oldmodulepath
-
- \ Try prepending /boot/ first
- bootpath nip path nip + \ total length
- oldmodulepath nip dup -1 = if
- drop
- else
- 1+ + \ add oldpath -- XXX why the 1+ ?
- then
- allocate if ( out of memory ) 1 exit then \ XXX throw ?
-
- 0
- bootpath strcat
- path strcat
- 2dup to newmodulepath
- modulepath setenv
-
- \ Try all default kernel names
- flags args 1- load_a_kernel
- 0= if ( success )
- oldmodulepath nip -1 <> if
- newmodulepath s" ;" strcat
- oldmodulepath strcat
- modulepath setenv
- newmodulepath drop free-memory
- oldmodulepath drop free-memory
- then
- 0 exit
- then
-
- \ Well, try without the prepended /boot/
- path newmodulepath drop swap move
- newmodulepath drop path nip
- 2dup to newmodulepath
- modulepath setenv
-
- \ Try all default kernel names
- flags args 1- load_a_kernel
- if ( failed once more )
- oldmodulepath restoreenv
- newmodulepath drop free-memory
- 1
- else
- oldmodulepath nip -1 <> if
- newmodulepath s" ;" strcat
- oldmodulepath strcat
- modulepath setenv
- newmodulepath drop free-memory
- oldmodulepath drop free-memory
- then
- 0
- then
-;
-
-\ Try to load a kernel; the kernel name is taken from one of
-\ the following lists, as ordered:
-\
-\ 1. The "bootfile" environment variable
-\ 2. The "kernel" environment variable
-\ 3. The "path" argument
-\
-\ Flags are passed, if provided.
-\
-\ The kernel will be loaded from a directory computed from the
-\ path given. Two directories will be tried in the following order:
-\
-\ 1. /boot/path
-\ 2. path
-\
-\ Unless "path" is meant to be kernel name itself. In that case, it
-\ will first be tried as a full path, and, next, search on the
-\ directories pointed by module_path.
-\
-\ The module_path variable is overridden if load is successful, by
-\ prepending the successful path.
-
-: load_directory_or_file ( path len 1 | flags len' path len 2 -- flag )
- local args
- 2local path
- args 1 = if 0 0 then
- 2local flags
- end-locals
-
- \ First, assume path is an absolute path to a directory
- flags path args clip_args load_from_directory
- dup 0= if exit else drop then
-
- \ Next, assume path points to the kernel
- flags path args try_multiple_kernels
-;
-
-: initialize ( addr len -- )
- strdup conf_files strset
-;
-
-: kernel_options ( -- addr len 1 | 0 )
- s" kernel_options" getenv
- dup -1 = if drop 0 else 1 then
-;
-
-: standard_kernel_search ( flags 1 | 0 -- flag )
- local args
- args 0= if 0 0 then
- 2local flags
- s" kernel" getenv
- dup -1 = if 0 swap then
- 2local path
- end-locals
-
- path nip -1 = if ( there isn't a "kernel" environment variable )
- flags args load_a_kernel
- else
- flags path args 1+ clip_args load_directory_or_file
- then
-;
-
-: load_kernel ( -- ) ( throws: abort )
- kernel_options standard_kernel_search
- abort" Unable to load a kernel!"
-;
-
-: load_xen ( -- flag )
- s" xen_kernel" getenv dup -1 <> if
- 1 1 load ( c-addr/u flag N -- flag )
- else
- drop
- 0 ( -1 -- flag )
- then
-;
-
-: load_xen_throw ( -- ) ( throws: abort )
- load_xen
- abort" Unable to load Xen!"
-;
-
-: set_defaultoptions ( -- )
- s" kernel_options" getenv dup -1 = if
- drop
- else
- s" temp_options" setenv
- then
-;
-
-\ pick the i-th argument, i starts at 0
-: argv[] ( aN uN ... a1 u1 N i -- aN uN ... a1 u1 N ai+1 ui+1 )
- 2dup = if 0 0 exit then \ out of range
- dup >r
- 1+ 2* ( skip N and ui )
- pick
- r>
- 1+ 2* ( skip N and ai )
- pick
-;
-
-: drop_args ( aN uN ... a1 u1 N -- )
- 0 ?do 2drop loop
-;
-
-: argc
- dup
-;
-
-: queue_argv ( aN uN ... a1 u1 N a u -- a u aN uN ... a1 u1 N+1 )
- >r
- over 2* 1+ -roll
- r>
- over 2* 1+ -roll
- 1+
-;
-
-: unqueue_argv ( aN uN ... a1 u1 N -- aN uN ... a2 u2 N-1 a1 u1 )
- 1- -rot
-;
-
-\ compute the length of the buffer including the spaces between words
-: strlen(argv) ( aN uN .. a1 u1 N -- aN uN .. a1 u1 N len )
- dup 0= if 0 exit then
- 0 >r \ Size
- 0 >r \ Index
- begin
- argc r@ <>
- while
- r@ argv[]
- nip
- r> r> rot + 1+
- >r 1+ >r
- repeat
- r> drop
- r>
-;
-
-: concat_argv ( aN uN ... a1 u1 N -- a u )
- strlen(argv) allocate if ENOMEM throw then
- 0 2>r ( save addr 0 on return stack )
-
- begin
- dup
- while
- unqueue_argv ( ... N a1 u1 )
- 2r> 2swap ( old a1 u1 )
- strcat
- s" " strcat ( append one space ) \ XXX this gives a trailing space
- 2>r ( store string on the result stack )
- repeat
- drop_args
- 2r>
-;
-
-: set_tempoptions ( addrN lenN ... addr1 len1 N -- addr len 1 | 0 )
- \ Save the first argument, if it exists and is not a flag
- argc if
- 0 argv[] drop c@ [char] - <> if
- unqueue_argv 2>r \ Filename
- 1 >r \ Filename present
- else
- 0 >r \ Filename not present
- then
- else
- 0 >r \ Filename not present
- then
-
- \ If there are other arguments, assume they are flags
- ?dup if
- concat_argv
- 2dup s" temp_options" setenv
- drop free if EFREE throw then
- else
- set_defaultoptions
- then
-
- \ Bring back the filename, if one was provided
- r> if 2r> 1 else 0 then
-;
-
-: get_arguments ( -- addrN lenN ... addr1 len1 N )
- 0
- begin
- \ Get next word on the command line
- parse-word
- ?dup while
- queue_argv
- repeat
- drop ( empty string )
-;
-
-: load_kernel_and_modules ( args -- flag )
- set_tempoptions
- argc >r
- s" temp_options" getenv dup -1 <> if
- queue_argv
- else
- drop
- then
- load_xen
- ?dup 0= if ( success )
- r> if ( a path was passed )
- load_directory_or_file
- else
- standard_kernel_search
- then
- ?dup 0= if ['] load_modules catch then
- then
-;
-
-only forth definitions
diff --git a/sys/boot/forth/version.4th b/sys/boot/forth/version.4th
deleted file mode 100644
index a5311b4442ac..000000000000
--- a/sys/boot/forth/version.4th
+++ /dev/null
@@ -1,96 +0,0 @@
-\ Copyright (c) 2006-2015 Devin Teske <dteske@FreeBSD.org>
-\ All rights reserved.
-\
-\ Redistribution and use in source and binary forms, with or without
-\ modification, are permitted provided that the following conditions
-\ are met:
-\ 1. Redistributions of source code must retain the above copyright
-\ notice, this list of conditions and the following disclaimer.
-\ 2. Redistributions in binary form must reproduce the above copyright
-\ notice, this list of conditions and the following disclaimer in the
-\ documentation and/or other materials provided with the distribution.
-\
-\ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-\ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-\ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-\ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-\ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-\ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-\ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-\ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-\ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-\ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-\ SUCH DAMAGE.
-\
-\ $FreeBSD$
-
-marker task-version.4th
-
-vocabulary version-processing
-only forth also version-processing definitions
-
-variable versionX
-variable versionY
-
-\ Default $loader_version value if not overridden or using tribute screen
-: str_loader_version ( -- C-ADDR/U|-1 ) -1 ;
-
-\ Initialize text placement to defaults
-80 versionX ! \ NOTE: this is the ending column (text is right-justified)
-24 versionY !
-
-only forth definitions also version-processing
-
-: print_version ( -- )
-
- \ Get the text placement position (if set)
- s" loader_version_x" getenv dup -1 <> if
- ?number drop versionX ! -1
- then drop
- s" loader_version_y" getenv dup -1 <> if
- ?number drop versionY ! -1
- then drop
-
- \ Default version if none was set
- s" loader_version" getenv dup -1 = if
- drop
- \ Use above default if no logo is requested
- s" loader_logo" getenv dup -1 = if
- drop str_loader_version
- else
- \ For tributes, do nothing (defer to logo-*.4th)
- 2dup s" tribute" compare-insensitive 0= if
- 2drop
- s" logo" sfind if
- drop exit \ see logo-tribute.4th
- else
- drop str_loader_version
- then
- else 2dup s" tributebw" compare-insensitive 0= if
- 2drop
- s" logo" sfind if
- drop exit \ see logo-tributebw.4th
- else
- drop str_loader_version
- then
- else
- 2drop str_loader_version
- then then
- then
- then dup -1 = if
- drop exit \ default version (above) is disabled
- then
-
- \ Right justify the text
- dup versionX @ swap - versionY @ at-xy
-
- \ Print the version (optionally in cyan)
- loader_color? dup ( c-addr/u -- c-addr/u bool bool )
- if 6 fg then
- -rot type
- if me then
-
- 0 25 at-xy
-;
-
-only forth definitions
diff --git a/sys/boot/forth/version.4th.8 b/sys/boot/forth/version.4th.8
deleted file mode 100644
index 256df1ee5f87..000000000000
--- a/sys/boot/forth/version.4th.8
+++ /dev/null
@@ -1,128 +0,0 @@
-.\" Copyright (c) 2011-2013 Devin Teske
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" $FreeBSD$
-.\"
-.Dd August 6, 2013
-.Dt VERSION.4TH 8
-.Os
-.Sh NAME
-.Nm version.4th
-.Nd FreeBSD version string boot module
-.Sh DESCRIPTION
-The file that goes by the name of
-.Nm
-is a set of commands designed to draw the boot loader
-version at the bottom-right of the screen.
-The commands of
-.Nm
-by themselves are not enough for most uses.
-Please refer to the
-examples below for the most common situations, and to
-.Xr loader 8
-for additional commands.
-.Pp
-Before using any of the commands provided in
-.Nm ,
-it must be included
-through the command:
-.Pp
-.Dl include version.4th
-.Pp
-This line is present in the default
-.Pa /boot/menu.rc
-file, so it is not needed (and should not be re-issued) in a normal setup.
-.Pp
-The commands provided by it are:
-.Pp
-.Bl -tag -width disable-module_module -compact -offset indent
-.It Ic print_version
-Prints the contents of the
-.Va loader_version
-environment variable right-justified at the column
-.Va loader_version_x
-and row
-.Va loader_version_y .
-.El
-.Pp
-The environment variables that effect its behavior are:
-.Bl -tag -width bootfile -offset indent
-.It Va loader_version
-Set automatically by
-.Xr loader 8 ,
-but you can override it by setting in
-.Xr loader.conf 5 .
-This should be the version of boot loader used.
-.It Va loader_version_x
-Sets the desired ending column position of
-.Va loader_version .
-Default is 80.
-.It Va loader_version_y
-Sets the desired ending row position of
-.Va loader_version .
-Default is 24.
-.It Va loader_color
-If set to
-.Dq Li NO
-(case-insensitive) or
-.Dq Li 0 ,
-causes the version to be printed without color
-.Pq default is ANSI Cyan .
-.El
-.Sh FILES
-.Bl -tag -width /boot/version.4th -compact
-.It Pa /boot/loader
-The
-.Xr loader 8 .
-.It Pa /boot/version.4th
-.Nm
-itself.
-.It Pa /boot/loader.rc
-.Xr loader 8
-bootstrapping script.
-.El
-.Sh EXAMPLES
-Override
-.Xr loader 8
-version in
-.Xr loader.conf 5 :
-.Pp
-.Bd -literal -offset indent -compact
-loader_version="loader 1.1"
-.Ed
-.Sh SEE ALSO
-.Xr loader.conf 5 ,
-.Xr color.4th 8 ,
-.Xr loader 8
-.Sh HISTORY
-The
-.Nm
-set of commands first appeared in
-.Fx 9.0 .
-.Sh AUTHORS
-The
-.Nm
-set of commands was written by
-.An -nosplit
-.An Devin Teske Aq dteske@FreeBSD.org .