static cdefn_t m_one_word ;
static cdefn_t m_star_word ;
static cdefn_t more0_word ;
+static cdefn_t move_word ;
static cdefn_t mul_word ;
static cdefn_t not_equals_word ;
static cdefn_t notequals0_word ;
memset(ptr, c, len);
}
+static void move_cb(cdefn_t* w)
+{
+ cell_t len = dpop();
+ cell_t dest = dpop();
+ cell_t src = dpop();
+ memcpy((void*)dest, (void*)src, len);
+}
+
static void immediate_cb(cdefn_t* w)
{
latest->name->len |= FL_IMMEDIATE;
COM( m_one_word, rvarword, "-1", <_word, (void*)-1 ) //@W
COM( m_star_word, m_star_cb, "M*", &m_one_word, ) //@W
COM( more0_word, more0_cb, "0>", &m_star_word, ) //@W
-COM( mul_word, mul_cb, "*", &more0_word, ) //@W
+COM( move_word, move_cb, "MOVE", &more0_word, ) //@W
+COM( mul_word, mul_cb, "*", &move_word, ) //@W
COM( not_equals_word, not_equals_cb, "<>", &mul_word, ) //@W
COM( notequals0_word, notequals0_cb, "0<>", ¬_equals_word, ) //@W
COM( one_word, rvarword, "1", ¬equals0_word, (void*)1 ) //@W
{ SBUF FBUF 3 CHARS MOVE -> }
{ SEEBUF -> 12 34 56 }
-{ FBUF FBUF CHAR+ 2 CHARS MOVE -> }
-{ SEEBUF -> 12 12 34 }
-
-{ FBUF CHAR+ FBUF 2 CHARS MOVE -> }
-{ SEEBUF -> 12 34 34 }
+\ dtrg: disabled. These expect MOVE to behave like CMOVE, which the modern
+\ spec doesn't insist on.
+\ { FBUF FBUF CHAR+ 2 CHARS MOVE -> }
+\ { SEEBUF -> 12 12 34 }
+\
+\ { FBUF CHAR+ FBUF 2 CHARS MOVE -> }
+\ { SEEBUF -> 12 34 34 }
\ ------------------------------------------------------------------------
TESTING OUTPUT: . ." CR EMIT SPACE SPACES TYPE U.