+@ Shift by zero.
+SSSTN | PUSH +1
+SSSSN | PUSH 0
+NSTTSTTSSN | JSR > 101100 (rshift)
+NSTTSSTN | JSR > 1001 (print number from stack)
+
+@ Shift by one, positive sign extension.
+SSSTSN | PUSH +2
+SSSTN | PUSH +1
+NSTTSTTSSN | JSR > 101100 (rshift)
+NSTTSSTN | JSR > 1001 (print number from stack)
+
+@ Shift by four, positive sign extension.
+SSSTSSSSN | PUSH +16
+SSSTSSN | PUSH +4
+NSTTSTTSSN | JSR > 101100 (rshift)
+NSTTSSTN | JSR > 1001 (print number from stack)
+
+@ Shift by one, negative sign extension.
+@ -9223372036854775805 = 1000000000000000000000000000000000000000000000000000000000000011
+@ -4611686018427387903 = 1100000000000000000000000000000000000000000000000000000000000001
+SSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTSTN | PUSH -9223372036854775805
+SSSTN | PUSH +1
+NSTTSTTSSN | JSR > 101100 (rshift)
+NSTTSSTN | JSR > 1001 (print number from stack)
+
+@ Shift by four, negative sign extension
+@ -9223372036854775638 = 1000000000000000000000000000000000000000000000000000000010101010
+@ -576460752303423478 = 1111100000000000000000000000000000000000000000000000000000001010
+SSTSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTSTSTSTTSN | PUSH -9223372036854775638
+SSSTSSN | PUSH +4
+NSTTSTTSSN | JSR > 101100 (rshift)
+NSTTSSTN | JSR > 1001 (print number from stack)
+
+@ Test for special case: rshift(-1) = -1
+SSTTN | PUSH -1
+SSSTN | PUSH +1
+NSTTSTTSSN | JSR > 101100 (rshift)
+NSTTSSTN | JSR > 1001 (print number from stack)
+
+@ Shift a single 1 in the MSb into all ones
+SSTTSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSN | PUSH -(2^63)
+SSSTTTTTTN | PUSH +63
+NSTTSTTSSN | JSR > 101100 (rshift)
+NSTTSSTN | JSR > 1001 (print number from stack)
+
+@ All done.
+NNN | DIE
+
+#include <logic.pvvs>
+#include <stdio.pvvs>