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