diff options
-rw-r--r-- | sys/boot/forth/support.4th | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/sys/boot/forth/support.4th b/sys/boot/forth/support.4th index dbad5be..5b72b1c 100644 --- a/sys/boot/forth/support.4th +++ b/sys/boot/forth/support.4th @@ -64,6 +64,7 @@ \ \ strdup ( addr len -- addr' len) similar to strdup(3) \ strcat ( addr len addr' len' -- addr len+len' ) similar to strcat(3) +\ strlen ( addr -- len ) similar to strlen(3) \ s' ( | string' -- addr len | ) similar to s" \ rudimentary structure support @@ -131,6 +132,14 @@ create last_module_option sizeof module.next allot addr len len' + ; +: strlen ( addr -- len ) + 0 >r + begin + dup c@ while + 1+ r> 1+ >r repeat + drop r> +; + : s' [char] ' parse state @ if @@ -138,9 +147,8 @@ create last_module_option sizeof module.next allot then ; immediate -\ How come ficl doesn't have again? - -: again false postpone literal postpone until ; immediate +: 2>r postpone >r postpone >r ; immediate +: 2r> postpone r> postpone r> ; immediate \ Private definitions |