@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ This function prints a null-terminated string from the stack.
@ null-terminator (ASCII '\0')
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
NSSVTSSSN | Mark: 1000 (print string from stack)
NTSSSSSTSSSSSSSSSSTN | BRZ > 00001000 00000001
NSSVSSSSTSSSSSSSSSSTN | Mark: 00001000 00000001
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ This function prints a null-terminated string from the heap.
@ pointer to first character <-- TOS
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
NSSVTSSTN | Mark: 1001 (print string from heap)
NTSSSSSTSSTSSSSSSSTN | BRZ > 00001001 00000001
NSSVSSSSTSSTSSSSSSSTN | Mark: 00001001 00000001
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ This functions prints a number from the stack in sign-magnitude format.
@ Leading zeros are suppressed.
@ number to print <-- TOS
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
NSSVTSTSN | Mark: 1010 (print number from stack)
NSTTSSSSSSN | JSR > 1000000
NSTTSSSSSTN | JSR > 1000001
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ This functions prints the sign of a number from the stack.
@ number to print <-- TOS
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
NSSVTSSSSSSN | Mark: 1000000 (print sign of number from stack)
NTTSTSSSSSSSSSSSSSTN | BMI > 010000000 00000001
SSSTSTSTTN | PUSH ASCII '+'
NSNSTSSSSSSSSSSSSTSN | JMP > 010000000 00000010
NSSVSTSSSSSSSSSSSSSTN | Mark: 010000000 00000001
SSSTSTTSTN | PUSH ASCII '-'
NSSVSTSSSSSSSSSSSSTSN | Mark: 010000000 00000010
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ This functions prints the magnitude of a number from the stack.
@ number to print <-- TOS
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
NSSVTSSSSSTN | Mark: 1000001 (print magnitude of number from stack)
NSTTSSSTN | JSR > 10001 (absolute value)
@ Pick off one digit on each pass through this loop.
NSSVSTSSSSSTSSSSSSSSN | Mark: 01000001 00000000
@ Mod-off a digit, convert to ASCII, store on stack as part of the string.
SSSTTSSSSN | PUSH ASCII '0'
@ Divide down to next digit and keep looping if number != 0 yet.
NTSSTSSSSSTSSSSSSSTN | BRZ > 01000001 00000001
NSNSTSSSSSTSSSSSSSSN | JMP > 01000001 00000000
@ Print the string we have built on the stack.
NSSVSTSSSSSTSSSSSSSTN | Mark: 01000001 00000001
NSTTSSSN | JSR > 1000 (print string from stack)