X-Git-Url: http://git.subgeniuskitty.com/vvhitespace/.git/blobdiff_plain/6cb31a3ecea681051cfa36fde3f17b18f8eacfea..0cd0f6f3f541f68fd5eabfc36f3ac724bfffde87:/stdlib/stack.pvvs diff --git a/stdlib/stack.pvvs b/stdlib/stack.pvvs index c543d98..0403044 100644 --- a/stdlib/stack.pvvs +++ b/stdlib/stack.pvvs @@ -6,6 +6,7 @@ @ stackrotate @ Description: @ Maximum rotation depth is 14. Stomps on heap[1]-heap[15]. +@ Assumes rotation depth is at least 2. @ Call Stack: @ stack word n @ ... @@ -22,10 +23,11 @@ NSSVTSTSN | Mark: 1010 (stackrotate) @ For the convenience of other functions, modulo the @ rotation depth by the available registers. -SSSTTTSN | PUSH 14 +SSSTTTTN | PUSH 15 TSTT | MODULO @ Use heap[15] for generating register addresses. +@ TODO: Switch to using heap[1] so number of registers is limited only by user. SSSTTTTN | PUSH 15 (ptr) SSSSN | PUSH 0 TTS | STORE @@ -109,6 +111,7 @@ NTN | RTS @ stackrotatereverse @ Description: @ Maximum rotation depth is 14. Stomps on heap[1]-heap[15]. +@ Assumes rotation depth is at least 2. @ Call Stack: @ stack word n @ ... @@ -125,10 +128,11 @@ NSSVTSTTN | Mark: 1011 (stackrotatereverse) @ For the convenience of other functions, modulo the @ rotation depth by the available registers. -SSSTTTSN | PUSH 14 +SSSTTTTN | PUSH 15 TSTT | MODULO @ Use heap[15] for generating register addresses. +@ TODO: Switch to using heap[1] so number of registers is limited only by user. SSSTTTTN | PUSH 15 (ptr) SSSSN | PUSH 0 TTS | STORE @@ -213,14 +217,14 @@ NTN | RTS @ deepdup @ Description: @ Duplicates an item deep on the stack, placing the duplicate on TOS. -@ By default, maximum depth is 11. -@ True maximum depth is (max depth of stackrotate & stackrotatereverse)-3. +@ By default, maximum depth is 13. +@ True maximum depth is (max depth of stackrotate & stackrotatereverse)-1. @ Call Stack: @ stack word n @ ... @ stack word 1 -@ dupdepth <-- TOS -@ Return Stack: +@ dupdepth <-- TOS +@ Return Stack: (dupdepth=3) @ stack word n @ ... @ stack word 1