Added CMOVE>
[forth.jl.git] / src / lib_5_strings.4th
index 99d1d39..9fef145 100644 (file)
@@ -3,6 +3,7 @@
 : CMOVE ( src dest length -- )
 
         DUP 0<= IF
+                DROP DROP DROP
                 EXIT
         THEN
 
         DROP
 ;
 
+: CMOVE> ( src dest length -- )
+        DUP 0<= IF
+                DROP DROP DROP
+                EXIT
+        THEN
+
+        -ROT OVER -         ( length src (dest-src) )
+        -ROT DUP ROT + 1-   ( (dest-src) src (src+length-1) )
+        
+        DO
+                I @
+                OVER I +
+                !
+        -1 +LOOP
+
+        DROP
+;
+
 : S" IMMEDIATE          ( -- addr len )
         STATE @ IF      ( compiling? )
                 ['] LITSTRING ,   ( compile LITSTRING )