X-Git-Url: http://git.subgeniuskitty.com/vvhitespace/.git/blobdiff_plain/1a56830da1b5753f31d9a4b2b96cfc6a45d7d2d8..6cb31a3ecea681051cfa36fde3f17b18f8eacfea:/stdlib/debug.pvvs diff --git a/stdlib/debug.pvvs b/stdlib/debug.pvvs index db61a96..4cc8a73 100644 --- a/stdlib/debug.pvvs +++ b/stdlib/debug.pvvs @@ -2,14 +2,24 @@ #define VVS_STDLIB_DEBUG @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +@ Name: +@ dumpheap (111000) @ Description: -@ This function dumps the heap from startaddr to endaddr. +@ Dumps the heap from 'startaddr' to 'endaddr'. +@ This subroutine stomps on heap[1] after printing the first heap location. +@ If you dump starting from heap[0], then heap[1] will print inaccurately. +@ Starting the dump from any other location will work without error. +@ TODO: Should I use heap[0] and DIE rather than RTS? +@ At the moment, the ability to continue is too useful to me. +@ If it's useful to me, it's probably useful to other people. +@ For now, leave dumpheap as-is. @ Call Stack: @ endaddr @ startaddr <-- TOS @ Return Stack: @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#include NSSVTTTSSSN | Mark: 111000 (dump heap) @ Prepare a numeric address and value on the stack @@ -19,25 +29,25 @@ TTT | LOAD SNT | SWAP @ Print output line for this memory location -NSTTSSSSSTN | JSR>1000001 (print absolute value of number) +NSTTSSSSTTN | JSR>1000011 (print absolute value of number) SSSTTTSTSN | PUSH ASCII ':' SSSTSSTN | PUSH ASCII '\t' TNSS | PUTC TNSS | PUTC -NSTTSTSN | JSR>1010 (print number from stack) +NSTTSSTN | JSR>1001 (print number from stack) SSSTSTSN | PUSH ASCII '\n' TNSS | PUTC @ Figure out if the loop is complete. -SSSSN | PUSH 0 (ptr) +SSSTN | PUSH 1 (ptr) SNT | SWAP TTS | STORE SNS | DUP -SSSSN | PUSH 0 (ptr) +SSSTN | PUSH 1 (ptr) TTT | LOAD TSST | SUBTRACT NTSSSTTTSSSSSSSSSSSN | BRZ > 00111000 00000000 -SSSSN | PUSH 0 (ptr) +SSSTN | PUSH 1 (ptr) TTT | LOAD SSSTN | PUSH 1 TSSS | ADD @@ -48,6 +58,41 @@ NSSVSSTTTSSSSSSSSSSSN | Mark: 00111000 00000000 SNN | DROP NTN | RTS +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +@ Name: +@ dumpstack (111001) +@ Description: +@ Dumps 'count' entries from the stack. +@ Call Stack: +@ count <-- TOS +@ Return Stack: +@ +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ #include +NSSVTTTSSTN | Mark: 111001 (dump stack) + +@ Print output line for the current TOS. +SNS | DUP +NSTTSSSSTTN | JSR>1000011 (print absolute value of number) +SSSTTTSTSN | PUSH ASCII ':' +SSSTSSTN | PUSH ASCII '\t' +TNSS | PUTC +TNSS | PUTC +SNT | SWAP +NSTTSSTN | JSR>1001 (print number from stack) +SSSTSTSN | PUSH ASCII '\n' +TNSS | PUTC + +@ Figure out if the loop is complete. +SNS | DUP +NTSSSTTTSSTSSSSSSSSN | BRZ > 00111001 00000000 +SSSTN | PUSH 1 +TSST | SUBTRACT +NSNTTTSSTN | JMP>111001 (dump stack) + +@ Clean up and return +NSSVSSTTTSSTSSSSSSSSN | Mark: 00111001 00000000 +SNN | DROP +NTN | RTS #endif