N(swap, "swap", &w_drop) { tmp = sp[0]; sp[0] = sp[1]; sp[1] = tmp; NEXT; }
N(rot, "rot", &w_swap) { tmp = sp[0]; sp[0] = sp[2]; sp[2] = sp[1];
sp[1] = tmp; NEXT; }
-N(peek, "@", &w_rot) { *sp = *(intptr_t *)*sp; NEXT; }
+N(mrot, "-rot", &w_rot) { tmp = sp[2]; sp[2] = sp[0]; sp[0] = sp[1];
+ sp[1] = tmp; NEXT; }
+N(over, "over", &w_mrot) { --sp; sp[0] = sp[2]; NEXT; }
+W(tuck, "tuck", &w_over) swap, over, END
+N(peek, "@", &w_tuck) { *sp = *(intptr_t *)*sp; NEXT; }
N(poke, "!", &w_peek) { *(intptr_t *)sp[0] = sp[1]; sp += 2; NEXT; }
N(cpeek, "c@", &w_poke) { *sp = *(char *)*sp; NEXT; }
N(cpoke, "c!", &w_cpeek) { *(char *)sp[0] = (char)sp[1]; sp += 2; NEXT; }