/share/examples/bootforth/menu.4th
Forth | 100 lines | 93 code | 7 blank | 0 comment | 3 complexity | 56e74c6fbc0d7327802ef4a28e3c3b45 MD5 | raw file
Possible License(s): CC-BY-SA-3.0, Unlicense, BSD-3-Clause, ISC, GPL-2.0, AGPL-1.0
- \ Simple greeting screen, presenting basic options.
- \ XXX This is far too trivial - I don't have time now to think
- \ XXX about something more fancy... :-/
- \ $FreeBSD: src/share/examples/bootforth/menu.4th,v 1.4 1999/08/28 00:19:10 peter Exp $
- \ $DragonFly: src/share/examples/bootforth/menu.4th,v 1.2 2003/06/17 06:36:57 dillon Exp $
- : title
- f_single
- 60 11 10 4 box
- 29 4 at-xy 15 fg 7 bg
- ." Welcome to BootFORTH!"
- me
- ;
- : menu
- 2 fg
- 20 7 at-xy
- ." 1. Start FreeBSD /kernel."
- 20 8 at-xy
- ." 2. Interact with BootFORTH."
- 20 9 at-xy
- ." 3. Reboot."
- me
- ;
- : tkey ( d -- flag | char )
- seconds +
- begin 1 while
- dup seconds u< if
- drop
- -1
- exit
- then
- key? if
- drop
- key
- exit
- then
- repeat
- ;
- : prompt
- 14 fg
- 20 11 at-xy
- ." Enter your option (1,2,3): "
- 10 tkey
- dup 32 = if
- drop key
- then
- dup 0< if
- drop 49
- then
- dup emit
- me
- ;
- : help_text
- 10 18 at-xy ." * Choose 1 if you just want to run FreeBSD."
- 10 19 at-xy ." * Choose 2 if you want to use bootloader facilities."
- 12 20 at-xy ." See '?' for available commands, and 'words' for"
- 12 21 at-xy ." complete list of Forth words."
- 10 22 at-xy ." * Choose 3 in order to warm boot your machine."
- ;
- : (boot) 0 boot ;
- : (reboot) 0 reboot ;
- : main_menu
- begin 1 while
- clear
- f_double
- 79 23 1 1 box
- title
- menu
- help_text
- prompt
- cr cr cr
- dup 49 = if
- drop
- 1 25 at-xy cr
- ." Loading kernel. Please wait..." cr
- ['] (boot) catch abort" Error booting"
- then
- dup 50 = if
- drop
- 1 25 at-xy cr
- exit
- then
- dup 51 = if
- drop
- 1 25 at-xy cr
- ['] (reboot) catch abort" Error rebooting"
- then
- 20 12 at-xy
- ." Key " emit ." is not a valid option!"
- 20 13 at-xy
- ." Press any key to continue..."
- key drop
- repeat
- ;