| 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 |