From 614978068704180412b9926e3bc647f730492139 Mon Sep 17 00:00:00 2001 From: Clyne Sullivan Date: Sun, 26 Jan 2025 21:19:48 -0500 Subject: [PATCH] -rot, over, tuck --- foci.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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; }