Implement looping words and add fibonacci example
[rrq/jonasforth.git] / sys.f
diff --git a/sys.f b/sys.f
index cab2ab7173df3f16b69381af1c9659e0cd19629a..09963525c9e3a9f343efdafd87bbf476ca05a252 100644 (file)
--- a/sys.f
+++ b/sys.f
@@ -33,3 +33,29 @@ EXIT [
   SWAP DUP HERE @ SWAP - SWAP !
 ;
 
+: BEGIN IMMEDIATE
+  HERE @
+;
+
+: UNTIL IMMEDIATE
+  ' 0BRANCH ,
+  HERE @ - ,
+;
+
+: FIB
+  0 1
+  0
+  BEGIN
+    ROT
+    DUP ROT +
+    ROT ROT
+
+    1 +
+  DUP 4 PICK = UNTIL
+  DROP SWAP DROP SWAP DROP
+;
+
+S" 10 FIB = " TELL
+10 FIB .U
+S"  (Expected: 59)" TELL NEWLINE
+