Added printf and stackrotate functions to VVS stdlib.
[vvhitespace] / stdlib / debug.pvvs
index db61a96..138b2cb 100644 (file)
@@ -2,14 +2,17 @@
 #define VVS_STDLIB_DEBUG
 
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 #define VVS_STDLIB_DEBUG
 
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@ Name:
+@   dumpheap (111000)
 @ Description:
 @ Description:
-@   This function dumps the heap from startaddr to endaddr.
+@   Dumps the heap from 'startaddr' to 'endaddr'.
 @ Call Stack:
 @   endaddr
 @   startaddr  <-- TOS
 @ Return Stack:
 @   <empty>
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 @ Call Stack:
 @   endaddr
 @   startaddr  <-- TOS
 @ Return Stack:
 @   <empty>
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+#include <stdio.pvvs>
 NSSVTTTSSSN              | Mark: 111000 (dump heap)
 
 @ Prepare a numeric address and value on the stack
 NSSVTTTSSSN              | Mark: 111000 (dump heap)
 
 @ Prepare a numeric address and value on the stack
@@ -19,25 +22,25 @@ TTT                      | LOAD
 SNT                      | SWAP
 
 @ Print output line for this memory location
 SNT                      | SWAP
 
 @ Print output line for this memory location
-NSTTSSSSSTN              | JSR>1000001 (print absolute value of number)
+NSTTSSSSTTN              | JSR>1000011 (print absolute value of number)
 SSSTTTSTSN               | PUSH ASCII ':'
 SSSTSSTN                 | PUSH ASCII '\t'
 TNSS                     | PUTC
 TNSS                     | PUTC
 SSSTTTSTSN               | PUSH ASCII ':'
 SSSTSSTN                 | PUSH ASCII '\t'
 TNSS                     | PUTC
 TNSS                     | PUTC
-NSTTSTSN                 | JSR>1010 (print number from stack)
+NSTTSSTN                 | JSR>1001 (print number from stack)
 SSSTSTSN                 | PUSH ASCII '\n'
 TNSS                     | PUTC
 
 @ Figure out if the loop is complete.
 SSSTSTSN                 | PUSH ASCII '\n'
 TNSS                     | PUTC
 
 @ Figure out if the loop is complete.
-SSSSN                    | PUSH 0 (ptr)
+SSSTN                    | PUSH 1 (ptr)
 SNT                      | SWAP
 TTS                      | STORE
 SNS                      | DUP
 SNT                      | SWAP
 TTS                      | STORE
 SNS                      | DUP
-SSSSN                    | PUSH 0 (ptr)
+SSSTN                    | PUSH 1 (ptr)
 TTT                      | LOAD
 TSST                     | SUBTRACT
 NTSSSTTTSSSSSSSSSSSN     | BRZ > 00111000 00000000
 TTT                      | LOAD
 TSST                     | SUBTRACT
 NTSSSTTTSSSSSSSSSSSN     | BRZ > 00111000 00000000
-SSSSN                    | PUSH 0 (ptr)
+SSSTN                    | PUSH 1 (ptr)
 TTT                      | LOAD
 SSSTN                    | PUSH 1
 TSSS                     | ADD
 TTT                      | LOAD
 SSSTN                    | PUSH 1
 TSSS                     | ADD
@@ -48,6 +51,41 @@ NSSVSSTTTSSSSSSSSSSSN    | Mark: 00111000 00000000
 SNN                      | DROP
 NTN                      | RTS
 
 SNN                      | DROP
 NTN                      | RTS
 
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@ Name:
+@   dumpstack (111001)
+@ Description:
+@   Dumps 'count' entries from the stack.
+@ Call Stack:
+@   count <-- TOS
+@ Return Stack:
+@   <empty>
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 #include <stdio.pvvs>
 #include <stdio.pvvs>
+NSSVTTTSSTN              | Mark: 111001 (dump stack)
+
+@ Print output line for the current TOS.
+SNS                      | DUP
+NSTTSSSSTTN              | JSR>1000011 (print absolute value of number)
+SSSTTTSTSN               | PUSH ASCII ':'
+SSSTSSTN                 | PUSH ASCII '\t'
+TNSS                     | PUTC
+TNSS                     | PUTC
+SNT                      | SWAP
+NSTTSSTN                 | JSR>1001 (print number from stack)
+SSSTSTSN                 | PUSH ASCII '\n'
+TNSS                     | PUTC
+
+@ Figure out if the loop is complete.
+SNS                      | DUP
+NTSSSTTTSSTSSSSSSSSN     | BRZ > 00111001 00000000
+SSSTN                    | PUSH 1
+TSST                     | SUBTRACT
+NSNTTTSSTN               | JMP>111001 (dump stack)
+
+@ Clean up and return
+NSSVSSTTTSSTSSSSSSSSN    | Mark: 00111001 00000000
+SNN                      | DROP
+NTN                      | RTS
 
 #endif
 
 #endif