summaryrefslogtreecommitdiffstats
path: root/sys/boot
diff options
context:
space:
mode:
authordteske <dteske@FreeBSD.org>2013-08-08 22:34:00 +0000
committerdteske <dteske@FreeBSD.org>2013-08-08 22:34:00 +0000
commita73007b025495ca781390791c042c2d7ac380545 (patch)
tree6eee1e7a077442b1f32111e4756f155a912f3cac /sys/boot
parentbaffb509e4ffa105af1955f5481fd1f05f3858c0 (diff)
downloadFreeBSD-src-a73007b025495ca781390791c042c2d7ac380545.zip
FreeBSD-src-a73007b025495ca781390791c042c2d7ac380545.tar.gz
Update legacy static assignments in old code to support dynamic framing,
plotting, and alignment coinciding with enhancements in SVN r242667.
Diffstat (limited to 'sys/boot')
-rw-r--r--sys/boot/forth/menu.4th87
-rw-r--r--sys/boot/forth/menu.4th.825
2 files changed, 96 insertions, 16 deletions
diff --git a/sys/boot/forth/menu.4th b/sys/boot/forth/menu.4th
index 9f183e4..6614a9f 100644
--- a/sys/boot/forth/menu.4th
+++ b/sys/boot/forth/menu.4th
@@ -35,6 +35,8 @@ 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)
@@ -128,15 +130,19 @@ create init_text8 255 allot
: cycle_stateN ( N -- ADDR ) s" cycle_stateN" 11 +c! evaluate ;
: init_textN ( N -- C-ADDR ) s" init_textN" 9 +c! evaluate ;
-: str_loader_menu_title ( -- C-ADDR/U ) s" loader_menu_title" ;
-: str_loader_menu_timeout_x ( -- C-ADDR/U ) s" loader_menu_timeout_x" ;
-: str_loader_menu_timeout_y ( -- C-ADDR/U ) s" loader_menu_timeout_y" ;
-: str_menu_init ( -- C-ADDR/U ) s" menu_init" ;
-: str_menu_timeout_command ( -- C-ADDR/U ) s" menu_timeout_command" ;
-: str_menu_reboot ( -- C-ADDR/U ) s" menu_reboot" ;
-: str_menu_acpi ( -- C-ADDR/U ) s" menu_acpi" ;
-: str_menu_options ( -- C-ADDR/U ) s" menu_options" ;
-: str_menu_optionstext ( -- C-ADDR/U ) s" menu_optionstext" ;
+: str_loader_menu_frame ( -- C-ADDR/U ) s" loader_menu_frame" ;
+: str_loader_menu_title ( -- C-ADDR/U ) s" loader_menu_title" ;
+: str_loader_menu_title_align ( -- C-ADDR/U ) s" loader_menu_title_align" ;
+: str_loader_menu_x ( -- C-ADDR/U ) s" loader_menu_x" ;
+: str_loader_menu_y ( -- C-ADDR/U ) s" loader_menu_y" ;
+: str_loader_menu_timeout_x ( -- C-ADDR/U ) s" loader_menu_timeout_x" ;
+: str_loader_menu_timeout_y ( -- C-ADDR/U ) s" loader_menu_timeout_y" ;
+: str_menu_init ( -- C-ADDR/U ) s" menu_init" ;
+: str_menu_timeout_command ( -- C-ADDR/U ) s" menu_timeout_command" ;
+: str_menu_reboot ( -- C-ADDR/U ) s" menu_reboot" ;
+: str_menu_acpi ( -- C-ADDR/U ) s" menu_acpi" ;
+: str_menu_options ( -- C-ADDR/U ) s" menu_options" ;
+: str_menu_optionstext ( -- C-ADDR/U ) s" menu_optionstext" ;
: str_menu_init[x] ( -- C-ADDR/U ) s" menu_init[x]" ;
: str_menu_command[x] ( -- C-ADDR/U ) s" menu_command[x]" ;
@@ -441,7 +447,24 @@ create init_text8 255 allot
str_loader_menu_title getenv dup -1 = if
drop s" Welcome to FreeBSD"
then
- 24 over 2 / - 9 at-xy type
+ TRUE ( use default alignment )
+ str_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
@@ -733,8 +756,45 @@ create init_text8 255 allot
menu_start
1- menuidx ! \ Initialize the starting index for the menu
0 menurow ! \ Initialize the starting position for the menu
- 42 13 2 9 box \ Draw frame (w,h,x,y)
- 0 25 at-xy \ Move cursor to the bottom for output
+
+ \ Assign configuration values
+ str_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 !
+ str_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 )
+ str_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
;
\ Main function. Call this from your `loader.rc' file.
@@ -965,10 +1025,7 @@ create init_text8 255 allot
menu-erase
;
-\ Assign configuration values
bullet menubllt !
-10 menuY !
-5 menuX !
\ Initialize our menu initialization state variables
0 init_state1 !
diff --git a/sys/boot/forth/menu.4th.8 b/sys/boot/forth/menu.4th.8
index 4a7fba5..ab67d73 100644
--- a/sys/boot/forth/menu.4th.8
+++ b/sys/boot/forth/menu.4th.8
@@ -123,6 +123,14 @@ The command to be executed after
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.
@@ -130,9 +138,24 @@ Default is 4.
Sets the desired row position of the timeout countdown text.
Default is 23.
.It Va loader_menu_title
-The text to display centered above the menu.
+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 .
OpenPOWER on IntegriCloud