Solve dreaded "dictionary full" issue by segregating words into new

vocabularies delay-processing, password-processing, version-processing,
frame-drawing, menu-infrastructure, menu-namespace, menu-command-helpers,
and menusets-infrastructure. The net effect is to remove almost 200
definitions from the main forth vocabulary reducing the dictionary size
by over 50%. The chances of hitting "dictionary full" should be greatly
reduced by this patch.

MFC after:	3 days
X-MFC-to:	stable/10
This commit is contained in:
Devin Teske 2015-04-01 01:54:28 +00:00
parent b2510b83a5
commit 91771b69c4
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=280937
10 changed files with 329 additions and 254 deletions

View File

@ -28,7 +28,7 @@
marker task-beastie.4th
only forth definitions also support-functions
only forth definitions
variable logoX
variable logoY
@ -82,6 +82,8 @@ variable logoY
then
;
also support-functions
: beastie-start ( -- ) \ starts the menu
s" console" getenv dup -1 <> if
s" efi" 2swap contains? if
@ -110,4 +112,4 @@ variable logoY
then
;
only forth also
only forth definitions

View File

@ -28,6 +28,9 @@ 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
@ -126,6 +129,8 @@ variable readlen \ input length
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
@ -161,3 +166,5 @@ variable readlen \ input length
3000 ms ." loader: incorrect password" 10 emit
again
;
only forth definitions

View File

@ -1,4 +1,4 @@
\ Copyright (c) 2008-2011 Devin Teske <dteske@FreeBSD.org>
\ Copyright (c) 2008-2015 Devin Teske <dteske@FreeBSD.org>
\ All rights reserved.
\
\ Redistribution and use in source and binary forms, with or without
@ -26,6 +26,9 @@
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
@ -36,6 +39,8 @@ 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
@ -110,3 +115,5 @@ variable delay_showdots \ whether continually print dots while waiting
evaluate \ evaluate/execute the command string
then
;
only forth definitions

View File

@ -27,6 +27,9 @@
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
@ -87,6 +90,8 @@ s" arch-pc98" environment? [if]
178 constant fill_bright
[then]
only forth definitions also frame-drawing
: hline ( len x y -- ) \ Draw horizontal single line
at-xy \ move cursor
0 do
@ -156,3 +161,5 @@ s" arch-pc98" environment? [if]
f_single
fill_none fill !
only forth definitions

View File

@ -25,6 +25,8 @@
\
\ $FreeBSD$
only forth definitions
s" arch-i386" environment? [if] [if]
s" loader_version" environment? [if]
11 < [if]
@ -45,7 +47,7 @@ include /boot/color.4th
include /boot/delay.4th
include /boot/check-password.4th
only forth also support-functions also builtins definitions
only forth definitions
: bootmsg ( -- )
loader_color? dup ( -- bool bool )
@ -79,6 +81,8 @@ only forth also support-functions also builtins definitions
then
;
only forth also support-functions also builtins definitions
: boot
0= if ( interpreted ) get_arguments then
@ -122,7 +126,7 @@ only forth also support-functions also builtins definitions
?dup 0= if 0 1 autoboot then
;
also forth definitions also builtins
also forth definitions previous
builtin: boot
builtin: boot-conf
@ -245,5 +249,4 @@ only forth definitions also support-functions
then
; immediate \ interpret immediately for access to `source' (aka tib)
only forth also
only forth definitions

View File

@ -1,4 +1,4 @@
\ Copyright (c) 2006-2013 Devin Teske <dteske@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
@ -28,11 +28,15 @@ 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
\
@ -346,3 +350,5 @@ variable root_state
verbose_disable
2 goto_menu
;
only forth definitions

View File

@ -31,6 +31,12 @@ 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)
@ -58,19 +64,7 @@ variable menuX \ Menu X offset (columns)
variable menuY \ Menu Y offset (rows)
\ Menu-item elements
variable menukey1
variable menukey2
variable menukey3
variable menukey4
variable menukey5
variable menukey6
variable menukey7
variable menukey8
variable menureboot
variable menurebootadded
variable menuacpi
variable menuoptions
variable menukernel
\ Parsing of kernels into menu-items
variable kernidx
@ -84,6 +78,27 @@ 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
@ -124,10 +139,34 @@ create init_text6 64 allot
create init_text7 64 allot
create init_text8 64 allot
\ Containers for parsing kernels into menu-items
create kerncapbuf 64 allot
create kerndefault 64 allot
create kernelsbuf 256 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 )
@ -135,21 +174,15 @@ create kernelsbuf 256 allot
rot drop ( n c-addr/u -- c-addr/u )
;
: 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
;
only forth also menu-namespace definitions
\ Forth variables
: menukeyN ( N -- ADDR ) s" menukeyN" 7 +c! evaluate ;
: init_stateN ( N -- ADDR ) s" init_stateN" 10 +c! evaluate ;
: toggle_stateN ( N -- ADDR ) s" toggle_stateN" 12 +c! evaluate ;
: cycle_stateN ( N -- ADDR ) s" cycle_stateN" 11 +c! evaluate ;
: init_textN ( N -- C-ADDR ) s" init_textN" 9 +c! evaluate ;
: 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! ;
@ -163,11 +196,7 @@ create kernelsbuf 256 allot
: 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! ;
: arch-i386? ( -- BOOL ) \ Returns TRUE (-1) on i386, FALSE (0) otherwise.
s" arch-i386" environment? dup if
drop
then
;
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
@ -214,196 +243,6 @@ create kernelsbuf 256 allot
menuidx @ 48 +
;
: 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
;
: 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
;
\ 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.
@ -434,6 +273,15 @@ create kernelsbuf 256 allot
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 wich kernel to boot when the [overloaded] `boot' word is interpreted.
\ Used internally by menu-create, you need not (nor should you) call this
@ -959,6 +807,182 @@ create kernelsbuf 256 allot
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.
\
@ -1015,6 +1039,8 @@ create kernelsbuf 256 allot
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 ( -- )
@ -1236,6 +1262,8 @@ create kernelsbuf 256 allot
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.
\
@ -1246,6 +1274,8 @@ create kernelsbuf 256 allot
bullet menubllt !
also menu-namespace
\ Initialize our menu initialization state variables
0 init_state1 !
0 init_state2 !
@ -1285,3 +1315,5 @@ bullet menubllt !
0 init_text6 c!
0 init_text7 c!
0 init_text8 c!
only forth definitions

View File

@ -26,6 +26,9 @@
marker task-menusets.4th
vocabulary menusets-infrastructure
only forth also menusets-infrastructure definitions
variable menuset_use_name
create menuset_affixbuf 255 allot
@ -437,6 +440,8 @@ create menuset_y 1 allot
s" affix" unsetenv
;
only forth definitions also menusets-infrastructure
: menuset-loadsetnum ( N -- )
menuset-checksetnum ( n -- )
@ -537,16 +542,6 @@ create menuset_y 1 allot
menuset-cleanup
;
: menuset-loadinitial ( -- )
s" menuset_initial" getenv dup -1 <> if
?number 0<> if
menuset-loadsetnum
then
else
drop \ cruft
then
;
: menusets-unset ( -- )
s" menuset_initial" unsetenv
@ -615,3 +610,15 @@ create menuset_y 1 allot
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
;

View File

@ -315,7 +315,7 @@ string value_buffer
\ reset_line_reading
vocabulary line-reading
also line-reading definitions also
also line-reading definitions
\ File data temporary storage
@ -324,13 +324,13 @@ string read_buffer
\ File's line reading function
support-functions definitions
get-current ( -- wid ) previous definitions
string line_buffer
0 value end_of_file?
variable fd
line-reading definitions
>search ( wid -- ) definitions
: skip_newlines
begin
@ -405,7 +405,7 @@ line-reading definitions
read_buffer .len !
;
support-functions definitions
get-current ( -- wid ) previous definitions >search ( wid -- )
: reset_line_reading
0 to read_buffer_ptr
@ -447,7 +447,7 @@ also file-processing definitions
\ get_assignment
vocabulary parser
also parser definitions also
also parser definitions
0 value parsing_function
0 value end_of_line
@ -606,7 +606,7 @@ also parser definitions also
end_of_line? 0= if ESYNTAX throw then
;
file-processing definitions
get-current ( -- wid ) previous definitions >search ( wid -- )
: get_assignment
line_buffer strget + to end_of_line
@ -623,7 +623,7 @@ file-processing definitions
or or 0= if ESYNTAX throw then
;
only forth also support-functions also file-processing definitions also
only forth also support-functions also file-processing definitions
\ Process line
@ -818,7 +818,7 @@ only forth also support-functions also file-processing definitions also
\ Higher level file processing
support-functions definitions
get-current ( -- wid ) previous definitions >search ( wid -- )
: process_conf
begin
@ -1580,7 +1580,4 @@ also builtins
then
;
\ Go back to straight forth vocabulary
only forth also definitions
only forth definitions

View File

@ -26,6 +26,9 @@
marker task-version.4th
vocabulary version-processing
only forth also version-processing definitions
variable versionX
variable versionY
@ -36,6 +39,8 @@ variable versionY
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)
@ -86,3 +91,5 @@ variable versionY
type
then
;
only forth definitions