Added VVS stdlib function to dump heap in human readable form.
[vvhitespace] / stdlib / debug.pvvs
CommitLineData
1a56830d
AT
1#ifndef VVS_STDLIB_DEBUG
2#define VVS_STDLIB_DEBUG
3
4@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
5@ Description:
6@ This function dumps the heap from startaddr to endaddr.
7@ Call Stack:
8@ endaddr
9@ startaddr <-- TOS
10@ Return Stack:
11@ <empty>
12@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
13NSSVTTTSSSN | Mark: 111000 (dump heap)
14
15@ Prepare a numeric address and value on the stack
16SNS | DUP
17SNS | DUP
18TTT | LOAD
19SNT | SWAP
20
21@ Print output line for this memory location
22NSTTSSSSSTN | JSR>1000001 (print absolute value of number)
23SSSTTTSTSN | PUSH ASCII ':'
24SSSTSSTN | PUSH ASCII '\t'
25TNSS | PUTC
26TNSS | PUTC
27NSTTSTSN | JSR>1010 (print number from stack)
28SSSTSTSN | PUSH ASCII '\n'
29TNSS | PUTC
30
31@ Figure out if the loop is complete.
32SSSSN | PUSH 0 (ptr)
33SNT | SWAP
34TTS | STORE
35SNS | DUP
36SSSSN | PUSH 0 (ptr)
37TTT | LOAD
38TSST | SUBTRACT
39NTSSSTTTSSSSSSSSSSSN | BRZ > 00111000 00000000
40SSSSN | PUSH 0 (ptr)
41TTT | LOAD
42SSSTN | PUSH 1
43TSSS | ADD
44NSNTTTSSSN | JMP>111000 (dump heap)
45
46@ Clean up and return
47NSSVSSTTTSSSSSSSSSSSN | Mark: 00111000 00000000
48SNN | DROP
49NTN | RTS
50
51#include <stdio.pvvs>
52
53#endif