FIND working again.
[forth.jl.git] / src / lib_10_misc.4th
diff --git a/src/lib_10_misc.4th b/src/lib_10_misc.4th
new file mode 100644 (file)
index 0000000..a864cbb
--- /dev/null
@@ -0,0 +1,36 @@
+\ Miscellaneous core words
+
+: ROLL ( x_u x_u-1... x_0 u -- x_u-1 ... x_0 x_u )
+        1+ DUP PICK SWAP    ( x_u x_u-1 ... x_0 x_u u+1 )
+        PSP@ 1- SWAP - PSP@ 2- SWAP
+        DO
+            i 1+ @ i !
+        LOOP
+        SWAP DROP
+;
+
+( Compute absolute value. )
+: ABS           ( n -- |n| )
+        dup 0< if
+                negate
+        then
+;
+
+: MAX           ( n m -- max )
+        2dup - 0< if
+                swap drop
+        else
+                drop
+        then
+;
+
+: MIN           ( n m -- max )
+        2dup - 0> if
+                swap drop
+        else
+                drop
+        then
+;
+
+: UNUSED  ( -- cells )
+        MEMSIZE HERE - ;