aboutsummaryrefslogtreecommitdiff
path: root/docs/j1/toolchain/strings.fs
diff options
context:
space:
mode:
Diffstat (limited to 'docs/j1/toolchain/strings.fs')
-rw-r--r--docs/j1/toolchain/strings.fs25
1 files changed, 25 insertions, 0 deletions
diff --git a/docs/j1/toolchain/strings.fs b/docs/j1/toolchain/strings.fs
new file mode 100644
index 0000000..cbd9b0e
--- /dev/null
+++ b/docs/j1/toolchain/strings.fs
@@ -0,0 +1,25 @@
+( Strings JCB 11:57 05/18/12)
+
+: >str ( c-addr u -- str ) \ a new u char string from c-addr
+ dup cell+ allocate throw dup >r
+ 2dup ! cell+ \ write size into first cell
+ ( c-addr u saddr )
+ swap cmove r>
+;
+: str@ dup cell+ swap @ ;
+: str! ( str c-addr -- c-addr' ) \ copy str to c-addr
+ >r str@ r>
+ 2dup + >r swap
+ cmove r>
+;
+: +str ( str2 str1 -- str3 )
+ over @ over @ + cell+ allocate throw >r
+ over @ over @ + r@ !
+ r@ cell+ str! str! drop r>
+;
+
+: example
+ s" sailor" >str
+ s" hello" >str
+ +str str@ type
+;