+@ Slurps a string from the heap to the stack, storing it behind the substitutions.
+@ Call Stack:
+@ substitution n
+@ ...
+@ substitution 1
+@ number of substitutions <-- TOS
+@ pointer to string
+@ Return Stack:
+@ ACSII '\0'
+@ string word n
+@ ...
+@ string word 1
+@ substitution n
+@ ...
+@ substitution 1
+@ number of substitutions <-- TOS
+@ TODO: This, along with a deepspew, should probably be stdlib routines.
+NSSVSSSSTSSSTSSSTTSSN | Mark: 00001000 10001100 (printf_deepslurp)
+SNS | DUP
+@ Advance a duplicate copy of the pointer until it points to the null-terminator.
+NSSVSSSSTSSSTSSSTTSTN | Mark: 00001000 10001101
+SNS | DUP
+TTT | LOAD
+NTSSSSSTSSSTSSSTTTSN | BRZ > 00001000 10001110
+SSSTN | PUSH 1
+TSSS | ADD
+NSNSSSSTSSSTSSSTTSTN | JMP > 00001000 10001101
+@ Load a character to the stack on each pass through this loop.
+NSSVSSSSTSSSTSSSTTTSN | Mark: 00001000 10001110
+SNS | DUP
+TTT | LOAD
+SSSTSSN | PUSH 4
+NSTTTSSN | JSR > 1100 (deepdup)
+SSSTSSN | PUSH 4
+TSSS | ADD
+NSTTSTSN | JSR > 1010 (stackrotate)
+@ Test for end of loop.
+SNS | DUP
+SSSTTN | PUSH 3
+NSTTTSSN | JSR > 1100 (deepdup)
+TSST | SUBTRACT
+NTSSSSSTSSSTSSSTTTTN | BRZ > 00001000 10001111
+@ Decrement pointer to end of string, loop again.
+SSSTN | PUSH 1
+TSST | SUBTRACT
+NSNSSSSTSSSTSSSTTTSN | JMP > 00001000 10001110
+@ Clean up and return.
+NSSVSSSSTSSSTSSSTTTTN | Mark: 00001000 10001111
+SNN | DROP