Added tests for stdlib stack functions. Fixed some small bugs.
[vvhitespace] / stdlib / stack.pvvs
index c543d98..8705c6a 100644 (file)
@@ -6,6 +6,7 @@
 @   stackrotate
 @ Description:
 @   Maximum rotation depth is 14. Stomps on heap[1]-heap[15].
 @   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
 @   ...
 @ 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.
 
 @ 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.
 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
 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].
 @   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
 @   ...
 @ 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.
 
 @ 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.
 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
 SSSTTTTN                | PUSH 15 (ptr)
 SSSSN                   | PUSH 0
 TTS                     | STORE