aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorClyne Sullivan <clyne@bitgloo.com>2025-01-26 21:19:48 -0500
committerClyne Sullivan <clyne@bitgloo.com>2025-01-26 21:19:48 -0500
commit614978068704180412b9926e3bc647f730492139 (patch)
tree8a1552b211bf036c0aaf327b6ec530b77ce9694e
parent80c0fad017f2aba4ec66f32793495d6d607fb8a7 (diff)
-rot, over, tuck
-rw-r--r--foci.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/foci.c b/foci.c
index c466460..a75669e 100644
--- a/foci.c
+++ b/foci.c
@@ -98,7 +98,11 @@ N(drop, "drop", &w_dup) { ++sp; NEXT; }
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; }