Fixing a label I missed when moving functions in the stdlib.
[vvhitespace] / stdlib / stdio.pvvs
#ifndef VVS_STDLIB_STDIO
#define VVS_STDLIB_STDIO
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ Name:
@ printstackstring (1000100)
@ Description:
@ Prints a null-terminated string from the stack.
@ Call Stack:
@ null-terminator (ASCII '\0')
@ char n
@ ...
@ char 2
@ char 1 <-- TOS
@ Return Stack:
@ <empty>
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
NSSVTSSSTSSN | Mark: 1000100 (print string from stack)
SNS | DUP
NTSSTSSSTSSSSSSSSSTN | BRZ > 01000100 00000001
TNSS | Print character
NSNTSSSTSSN | JMP > 1000100
NSSVSTSSSTSSSSSSSSSTN | Mark: 01000100 00000001
SNN | DROP
NTN | RTS
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ Name:
@ printheapstring (1000101)
@ Description:
@ Prints a null-terminated string from the heap.
@ Call Stack:
@ pointer to first character <-- TOS
@ Return Stack:
@ <empty>
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
NSSVTSSSTSTN | Mark: 1000101 (print string from heap)
SNS | DUP
TTT | LOAD
SNS | DUP
NTSSTSSSTSTSSSSSSSTN | BRZ > 01000101 00000001
TNSS | Print character
SSSTN | Push +1
TSSS | ADD
NSNTSSSTSTN | JMP > 1000101
NSSVSTSSSTSTSSSSSSSTN | Mark: 01000101 00000001
SNN | DROP
SNN | DROP
NTN | RTS
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ Name:
@ printstacknumber (1010)
@ Description:
@ Prints 'number' from the stack in sign-magnitude format.
@ Leading zeros are suppressed.
@ Call Stack:
@ number <-- TOS
@ Return Stack:
@ <empty>
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
NSSVTSTSN | Mark: 1010 (print number from stack)
SNS | DUP
NSTTSSSSTSN | JSR > 1000010
NSTTSSSSTTN | JSR > 1000011
NTN | RTS
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ Name:
@ printstacknumbersign (1000010)
@ Description:
@ Prints the sign of 'number' from the stack.
@ Call Stack:
@ number <-- TOS
@ Return Stack:
@ <empty>
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
NSSVTSSSSTSN | Mark: 1000010 (print sign of number from stack)
NTTSTSSSSTSSSSSSSSTN | BMI > 01000010 00000001
SSSTSTSTTN | PUSH ASCII '+'
NSNSTSSSSTSSSSSSSTSN | JMP > 01000010 00000010
NSSVSTSSSSTSSSSSSSSTN | Mark: 01000010 00000001
SSSTSTTSTN | PUSH ASCII '-'
NSSVSTSSSSTSSSSSSSTSN | Mark: 01000010 00000010
TNSS | PUTC
NTN | RTS
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ Name:
@ printstacknumbermagnitude (1000011)
@ Description:
@ Prints the magnitude of 'number' from the stack.
@ Call Stack:
@ number <-- TOS
@ Return Stack:
@ <empty>
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
#include <math.pvvs>
NSSVTSSSSTTN | Mark: 1000011 (print magnitude of number from stack)
NSTTSSSTN | JSR > 10001 (absolute value)
SSSSN | PUSH ASCII '\0'
SNT | SWAP
@ Pick off one digit on each pass through this loop.
NSSVSTSSSSTTSSSSSSSSN | Mark: 01000011 00000000
SNS | DUP
@ Mod-off a digit, convert to ASCII, store on stack as part of the string.
SSSTSTSN | PUSH +10
TSTT | MODULO
SSSTTSSSSN | PUSH ASCII '0'
TSSS | ADD
SNT | SWAP
@ Divide down to next digit and keep looping if number != 0 yet.
SSSTSTSN | PUSH +10
TSTS | DIVIDE
SNS | DUP
NTSSTSSSSTTSSSSSSSTN | BRZ > 01000011 00000001
NSNSTSSSSTTSSSSSSSSN | JMP > 01000011 00000000
@ Print the string we have built on the stack.
NSSVSTSSSSTTSSSSSSSTN | Mark: 01000011 00000001
SNN | DROP
NSTTSSSTSSN | JSR > 1000100 (print string from stack)
NTN | RTS
#endif