diff options
Diffstat (limited to 'sanctuary.s')
| -rw-r--r-- | sanctuary.s | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/sanctuary.s b/sanctuary.s index 89db85f..f1a7047 100644 --- a/sanctuary.s +++ b/sanctuary.s @@ -588,6 +588,73 @@ defcode "dup", dup, 0 mov r11, [r15] pspush r11 ret + +defcode "2dup", twodup, 0 + mov r11, [r15] + mov r12, [r15+8] + pspush r12 + pspush r11 + ret + +defcode "swap", swap, 0 + pspop r11 + pspop r12 + + pspush r11 + pspush r12 + ret + +defcode "over", over, 0 + mov r11, [r15+8] + pspush r11 + ret + +defcode "rot", rot, 0 + pspop r11 + pspop r12 + pspop r13 + pspush r12 + pspush r11 + pspush r13 + ret + +defcode "-rot", dash_rot, 0 + pspop r11 + pspop r12 + pspop r13 + pspush r11 + pspush r13 + pspush r12 + ret + +defcode "r>", from_r, 0 + pop r12 ; keep return address + pop r11 + pspush r11 + push r12 + ret + +defcode ">r", to_r, 0 + pop r12 ; ret addr + pspop r11 + push r11 + push r12 + ret + +defcode "drop", drop, 0 + pspop r11 + ret + +defcode "2drop", twodrop, 0 + pspop r11 + pspop r11 + ret + +defcode "rdrop", rdrop, 0 + pop r12 ; ret addr + pop r11 + push r12 + ret ; }}} ; math + comparison {{{ |
