diff options
author | Clyne Sullivan <clyne@bitgloo.com> | 2025-01-26 21:19:48 -0500 |
---|---|---|
committer | Clyne Sullivan <clyne@bitgloo.com> | 2025-01-26 21:19:48 -0500 |
commit | 614978068704180412b9926e3bc647f730492139 (patch) | |
tree | 8a1552b211bf036c0aaf327b6ec530b77ce9694e | |
parent | 80c0fad017f2aba4ec66f32793495d6d607fb8a7 (diff) |
-rot, over, tuck
-rw-r--r-- | foci.c | 6 |
1 files changed, 5 insertions, 1 deletions
@@ -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; } |