retroforth/example/save-and-restore-stack.retro

23 lines
383 B
Forth
Raw Normal View History

# Save and Restore Stack
It's sometimes useful to temporarily save and restore the entire
stack. These two words allow for this.
## The Code
~~~
:stack:save (-a)
here [ depth dup , &, times ] dip ;
:stack:restore (a-)
&reset dip
dup fetch over + swap fetch [ dup fetch swap n:dec ] times drop ;
~~~
## Test Case
```
#1 #2 #3 #4 #5
stack:save #3 swap stack:restore
```