| 1 | #ifndef VVS_STDLIB_DEBUG |
| 2 | #define VVS_STDLIB_DEBUG |
| 3 | |
| 4 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ |
| 5 | @ Name: |
| 6 | @ dumpheap (111000) |
| 7 | @ Description: |
| 8 | @ Dumps the heap from 'startaddr' to 'endaddr'. |
| 9 | @ Call Stack: |
| 10 | @ endaddr |
| 11 | @ startaddr <-- TOS |
| 12 | @ Return Stack: |
| 13 | @ <empty> |
| 14 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ |
| 15 | #include <stdio.pvvs> |
| 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 | NSTTSSSSTTN | JSR>1000011 (print absolute value of number) |
| 26 | SSSTTTSTSN | PUSH ASCII ':' |
| 27 | SSSTSSTN | PUSH ASCII '\t' |
| 28 | TNSS | PUTC |
| 29 | TNSS | PUTC |
| 30 | NSTTSSTN | JSR>1001 (print number from stack) |
| 31 | SSSTSTSN | PUSH ASCII '\n' |
| 32 | TNSS | PUTC |
| 33 | |
| 34 | @ Figure out if the loop is complete. |
| 35 | SSSTN | PUSH 1 (ptr) |
| 36 | SNT | SWAP |
| 37 | TTS | STORE |
| 38 | SNS | DUP |
| 39 | SSSTN | PUSH 1 (ptr) |
| 40 | TTT | LOAD |
| 41 | TSST | SUBTRACT |
| 42 | NTSSSTTTSSSSSSSSSSSN | BRZ > 00111000 00000000 |
| 43 | SSSTN | PUSH 1 (ptr) |
| 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 | |
| 54 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ |
| 55 | @ Name: |
| 56 | @ dumpstack (111001) |
| 57 | @ Description: |
| 58 | @ Dumps 'count' entries from the stack. |
| 59 | @ Call Stack: |
| 60 | @ count <-- TOS |
| 61 | @ Return Stack: |
| 62 | @ <empty> |
| 63 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ |
| 64 | #include <stdio.pvvs> |
| 65 | NSSVTTTSSTN | Mark: 111001 (dump stack) |
| 66 | |
| 67 | @ Print output line for the current TOS. |
| 68 | SNS | DUP |
| 69 | NSTTSSSSTTN | JSR>1000011 (print absolute value of number) |
| 70 | SSSTTTSTSN | PUSH ASCII ':' |
| 71 | SSSTSSTN | PUSH ASCII '\t' |
| 72 | TNSS | PUTC |
| 73 | TNSS | PUTC |
| 74 | SNT | SWAP |
| 75 | NSTTSSTN | JSR>1001 (print number from stack) |
| 76 | SSSTSTSN | PUSH ASCII '\n' |
| 77 | TNSS | PUTC |
| 78 | |
| 79 | @ Figure out if the loop is complete. |
| 80 | SNS | DUP |
| 81 | NTSSSTTTSSTSSSSSSSSN | BRZ > 00111001 00000000 |
| 82 | SSSTN | PUSH 1 |
| 83 | TSST | SUBTRACT |
| 84 | NSNTTTSSTN | JMP>111001 (dump stack) |
| 85 | |
| 86 | @ Clean up and return |
| 87 | NSSVSSTTTSSTSSSSSSSSN | Mark: 00111001 00000000 |
| 88 | SNN | DROP |
| 89 | NTN | RTS |
| 90 | |
| 91 | #endif |