@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ These subroutines assume they are running on the official VVS interpreter
@ which internally uses a twos-complement representation.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ Performs a bitwise NOT on the TOS word.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
NSSVTSTSSSN | Mark: 101000 (not)
@ In twos-complement, NOT(X) = (-X)-1
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ Shifts 'X' right by 'shiftcount' bits with sign extension.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
NSSVTSTTSSN | Mark: 101100 (rshift)
@ Test for loop completion first since it's allowable to shift by zero.
NSSVSSTSTTSSSSSSSSSTN | Mark: 00101100 00000001
NTSSSTSTTSSSSSSSSSSN | BRZ > 00101100 00000000
@ Shift by one bit on each pass.
NSNSSTSTTSSSSSSSSSTN | JMP > 00101100 00000001
NSSVSSTSTTSSSSSSSSSSN | Mark: 00101100 00000000
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ Shifts 'X' left by 'shiftcount' bits with zero filling.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
NSSVTSTTSTN | Mark: 101101 (lshift)
@ Test for loop completion first since it's allowable to shift by zero.
NSSVSSTSTTSTSSSSSSSTN | Mark: 00101101 00000001
NTSSSTSTTSTSSSSSSSSN | BRZ > 00101101 00000000
@ Shift by one bit on each pass.
NSNSSTSTTSTSSSSSSSTN | JMP > 00101101 00000001
NSSVSSTSTTSTSSSSSSSSN | Mark: 00101101 00000000