diff options
| author | kitty <nepeta@canaglie.net> | 2026-03-18 16:23:26 +1100 |
|---|---|---|
| committer | kitty <nepeta@canaglie.net> | 2026-03-18 16:23:26 +1100 |
| commit | d1cee77ae93afa7bf6b6263933c9199e226530ef (patch) | |
| tree | f39caee90dbbd67edf31bf20c951824fea949bc6 /sanctuary.s | |
| parent | 6392033c9bee3da55f4e755059331ebf37c1b1c5 (diff) | |
stack operators
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 {{{ |
