summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/boot/forth/support.4th14
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
OpenPOWER on IntegriCloud