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