diff options
Diffstat (limited to 'sys')
-rw-r--r-- | sys/boot/forth/loader.4th | 19 | ||||
-rw-r--r-- | sys/boot/forth/menu.4th | 70 | ||||
-rw-r--r-- | sys/boot/forth/menu.4th.8 | 10 |
3 files changed, 81 insertions, 18 deletions
diff --git a/sys/boot/forth/loader.4th b/sys/boot/forth/loader.4th index c765147..1205741 100644 --- a/sys/boot/forth/loader.4th +++ b/sys/boot/forth/loader.4th @@ -41,12 +41,15 @@ s" arch-i386" environment? [if] [if] include /boot/support.4th -\ ***** boot-conf -\ -\ Prepares to boot as specified by loaded configuration files. - only forth also support-functions also builtins definitions +: try-menu-unset + s" menu-unset" + ['] evaluate catch if + 2drop + then +; + : boot 0= if ( interpreted ) get_arguments then @@ -57,24 +60,32 @@ only forth also support-functions also builtins definitions 0 1 unload drop else s" kernelname" getenv? if ( a kernel has been loaded ) + try-menu-unset 1 boot exit then load_kernel_and_modules ?dup if exit then + try-menu-unset 0 1 boot exit then else s" kernelname" getenv? if ( a kernel has been loaded ) + try-menu-unset 1 boot exit then load_kernel_and_modules ?dup if exit then + try-menu-unset 0 1 boot exit then load_kernel_and_modules ?dup 0= if 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 diff --git a/sys/boot/forth/menu.4th b/sys/boot/forth/menu.4th index fbb6c16..daac6c8 100644 --- a/sys/boot/forth/menu.4th +++ b/sys/boot/forth/menu.4th @@ -131,11 +131,11 @@ create init_text8 255 allot \ Print the value of menuidx loader_color? if - ." [1m" + ." [1m" ( [22m ) then menuidx @ . loader_color? if - ." [37m" + ." [37m" ( [39m ) then \ Move the cursor forward 1 column @@ -897,22 +897,60 @@ create init_text8 255 allot ; \ This function unsets all the possible environment variables associated with -\ creating the interactive menu. Call this when you want to clear the menu -\ area in preparation for another menu. +\ creating the interactive menu. \ -: menu-clear ( -- ) +: menu-unset ( -- ) 49 \ Iterator start (loop range 49 to 56; ASCII '1' to '8') begin - \ basename for caption variable - loader_color? if - s" ansi_caption[x]" - else - s" menu_caption[x]" - then + \ Unset variables in-order of appearance in menu.4th(8) + + s" menu_caption[x]" \ basename for caption variable -rot 2dup 13 + c! rot \ replace 'x' with current iteration unsetenv \ not erroneous to unset unknown var + s" menu_command[x]" \ command basename + -rot 2dup 13 + c! rot \ replace 'x' + unsetenv + + s" menu_keycode[x]" \ keycode basename + -rot 2dup 13 + c! rot \ replace 'x' + unsetenv + + s" ansi_caption[x]" \ ANSI caption basename + -rot 2dup 13 + c! rot \ replace 'x' + unsetenv + + s" toggled_text[x]" \ toggle_menuitem caption basename + -rot 2dup 13 + c! rot \ replace 'x' + unsetenv + + s" toggled_ansi[x]" \ toggle_menuitem ANSI caption basename + -rot 2dup 13 + c! rot \ replace 'x' + unsetenv + + s" menu_caption[x][y]" \ cycle_menuitem caption + -rot 2dup 13 + c! rot \ replace 'x' + 49 -rot + begin + 16 2over rot + c! \ replace 'y' + 2dup unsetenv + + rot 1+ dup 56 > 2swap rot + until + 2drop drop + + s" ansi_caption[x][y]" \ cycle_menuitem ANSI caption + -rot 2dup 13 + c! rot \ replace 'x' + 49 -rot + begin + 16 2over rot + c! \ replace 'y' + 2dup unsetenv + + rot 1+ dup 56 > 2swap rot + until + 2drop drop + s" 0 menukeyN !" \ basename for key association var -rot 2dup 9 + c! rot \ replace 'N' with current iteration evaluate \ assign zero (0) to key assoc. var @@ -921,6 +959,9 @@ create init_text8 255 allot until drop \ iterator + \ unset the timeout command + s" menu_timeout_command" unsetenv + \ clear the "Reboot" menu option flag s" menu_reboot" unsetenv 0 menureboot ! @@ -933,6 +974,13 @@ create init_text8 255 allot s" menu_options" unsetenv 0 menuoptions ! +; + +\ This function both unsets menu variables and visually erases the menu area +\ in-preparation for another menu. +\ +: menu-clear ( -- ) + menu-unset menu-erase ; diff --git a/sys/boot/forth/menu.4th.8 b/sys/boot/forth/menu.4th.8 index 55cbfd1..dc00af8 100644 --- a/sys/boot/forth/menu.4th.8 +++ b/sys/boot/forth/menu.4th.8 @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd Aug 29, 2011 +.Dd Dec 27, 2011 .Dt MENU.4TH 8 .Os .Sh NAME @@ -69,9 +69,13 @@ Clears the screen area within the menu bounding box. 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 -Unsets all possible environment variables used -to configure the menu and then calls +Calls +.Ic menu-unset +and then .Ic menu-erase . .El .Pp |