summaryrefslogtreecommitdiffstats
path: root/sys/boot
diff options
context:
space:
mode:
authordcs <dcs@FreeBSD.org>2000-06-07 22:03:37 +0000
committerdcs <dcs@FreeBSD.org>2000-06-07 22:03:37 +0000
commitf52e5ae84b417cfe1e980bae37deb342ff1d32a5 (patch)
tree879fbec5e03119c7b9f09aa18b5d923eb129d7ee /sys/boot
parente8eb747a92c43c89eff089f7a6162220c219729c (diff)
downloadFreeBSD-src-f52e5ae84b417cfe1e980bae37deb342ff1d32a5.zip
FreeBSD-src-f52e5ae84b417cfe1e980bae37deb342ff1d32a5.tar.gz
Remove AGAIN definition, as FICL 2.04 provides it.
Add strlen, to help handling data generated by C code. Add 2>r 2r>, because OO programming without them sucks.
Diffstat (limited to 'sys/boot')
-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