From 4fba07dca7fb9275b51e5095a774fe69eeab4660 Mon Sep 17 00:00:00 2001 From: Aaron Taylor Date: Sun, 8 Sep 2019 04:25:30 -0700 Subject: [PATCH] Updated tests to use printsignednumber subroutine from debug.pvvs instead of stdio.pvvs. --- stdlib/README.md | 1 + stdlib/debug.pvvs | 21 +++++++++++++++++++-- stdlib_tests/2005_memcmp.pvvs | 4 ++-- stdlib_tests/2006_memsrch.pvvs | 4 ++-- stdlib_tests/3001_not.pvvs | 10 +++++----- stdlib_tests/3002_lshift.pvvs | 14 +++++++------- stdlib_tests/3003_rshift.pvvs | 16 ++++++++-------- stdlib_tests/3004_and.pvvs | 12 ++++++------ stdlib_tests/3005_or.pvvs | 12 ++++++------ stdlib_tests/3006_xor.pvvs | 12 ++++++------ stdlib_tests/4001_strlen.pvvs | 4 ++-- stdlib_tests/5001_abs.pvvs | 11 ++++++----- 12 files changed, 70 insertions(+), 51 deletions(-) diff --git a/stdlib/README.md b/stdlib/README.md index 9e1338f..99f3e69 100644 --- a/stdlib/README.md +++ b/stdlib/README.md @@ -67,6 +67,7 @@ header comment for each function to learn the call and return stack. 111010 ----- print sign (debug.pvvs) 111011 ----- print magnitude (debug.pvvs) 111100 ----- print string (debug.pvvs) + 111101 ----- print signed number (debug.pvvs) 1xxxxxx - reserved for less common entry points 1000000 ----- lowbitand (logic.pvvs) 1000001 ----- diff --git a/stdlib/debug.pvvs b/stdlib/debug.pvvs index 960c65b..4114d22 100644 --- a/stdlib/debug.pvvs +++ b/stdlib/debug.pvvs @@ -24,7 +24,7 @@ @ Return Stack: @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -NSSVTTTSSSN | Mark: 111000 (dump heap) +NSSVTTTSSSN | Mark: 111000 (debug:dumpheap) @ Prepare a numeric address and value on the stack SNS | DUP @@ -74,7 +74,7 @@ NTN | RTS @ Return Stack: @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -NSSVTTTSSTN | Mark: 111001 (dump stack) +NSSVTTTSSTN | Mark: 111001 (debug:dumpstack) @ Orient the user SSSSSSSSSN | PUSH ASCII '\0' @@ -204,4 +204,21 @@ NSSVSSTTTTSSSSSSSSSTN | Mark: 00111100 00000001 SNN | DROP NTN | RTS +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +@ Name: +@ printsignednumber (111101) +@ Description: +@ Prints 'number' from the stack in sign-magnitude format. +@ Leading zeros are suppressed. +@ Call Stack: +@ number <-- TOS +@ Return Stack: +@ +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +NSSVTTTTSTN | Mark: 111101 (debug:printsignednumber) +SNS | DUP +NSTTTTSTSN | JSR > 111010 (debug:printsign) +NSTTTTSTTN | JSR > 111011 (debug:printmagnitude) +NTN | RTS + #endif diff --git a/stdlib_tests/2005_memcmp.pvvs b/stdlib_tests/2005_memcmp.pvvs index 5c59238..cd339b3 100644 --- a/stdlib_tests/2005_memcmp.pvvs +++ b/stdlib_tests/2005_memcmp.pvvs @@ -16,9 +16,9 @@ SSSTSSSSSN | PUSH 32 (blk1ptr) SSSTSSSSSSN | PUSH 64 (blk2ptr) NSTTTSTTN | JSR > 11011 (memcmp) -NSTTSSTN | JSR > 1001 (print number from stack) +NSTTTTTSTN | JSR > 111101 (debug:printsignednumber) NNN | DIE #include -#include +#include diff --git a/stdlib_tests/2006_memsrch.pvvs b/stdlib_tests/2006_memsrch.pvvs index 406f936..5bd1c87 100644 --- a/stdlib_tests/2006_memsrch.pvvs +++ b/stdlib_tests/2006_memsrch.pvvs @@ -10,9 +10,9 @@ SSSTSSSN | PUSH 8 (count) SSSSTTTSSN | PUSH 28 (address) NSTTTTSSN | JSR > 11100 (memsrch) -NSTTSSTN | JSR > 1001 (print number from stack) +NSTTTTTSTN | JSR > 111101 (debug:printsignednumber) NNN | DIE #include -#include +#include diff --git a/stdlib_tests/3001_not.pvvs b/stdlib_tests/3001_not.pvvs index 8af83b3..5bd49e2 100644 --- a/stdlib_tests/3001_not.pvvs +++ b/stdlib_tests/3001_not.pvvs @@ -1,28 +1,28 @@ @ All zeros to all ones SSSSN | PUSH 0 NSTTSTSSSN | JSR > 101000 (not) -NSTTSSTN | JSR > 1001 (print number from stack) +NSTTTTTSTN | JSR > 111101 (debug:printsignednumber) @ All ones to all zeros SSTTN | PUSH -1 NSTTSTSSSN | JSR > 101000 (not) -NSTTSSTN | JSR > 1001 (print number from stack) +NSTTTTTSTN | JSR > 111101 (debug:printsignednumber) @ Test alternating bits, leading zero. @ Note that 6148914691236517205 = 0101...0101 SSSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTN | PUSH +6148914691236517205 NSTTSTSSSN | JSR > 101000 (not) -NSTTSSTN | JSR > 1001 (print number from stack) +NSTTTTTSTN | JSR > 111101 (debug:printsignednumber) @ Test alternating bits, leading one. @ Note that -6148914691236517206 = 1010...1010 in twos-complement but we @ enter it in sign magnitude format so the bit pattern appears different. SSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTTSN | PUSH -6148914691236517206 NSTTSTSSSN | JSR > 101000 (not) -NSTTSSTN | JSR > 1001 (print number from stack) +NSTTTTTSTN | JSR > 111101 (debug:printsignednumber) @ All done. NNN | DIE #include -#include +#include diff --git a/stdlib_tests/3002_lshift.pvvs b/stdlib_tests/3002_lshift.pvvs index c4650b2..192a4fc 100644 --- a/stdlib_tests/3002_lshift.pvvs +++ b/stdlib_tests/3002_lshift.pvvs @@ -2,40 +2,40 @@ SSSTN | PUSH +1 SSSSN | PUSH 0 NSTTSTTSTN | JSR > 101101 (lshift) -NSTTSSTN | JSR > 1001 (print number from stack) +NSTTTTTSTN | JSR > 111101 (debug:printsignednumber) @ Shift by one. SSSTN | PUSH +1 SSSTN | PUSH +1 NSTTSTTSTN | JSR > 101101 (lshift) -NSTTSSTN | JSR > 1001 (print number from stack) +NSTTTTTSTN | JSR > 111101 (debug:printsignednumber) @ Shift by 62. SSSTN | PUSH +1 SSSTTTTTSN | PUSH +62 NSTTSTTSTN | JSR > 101101 (lshift) -NSTTSSTN | JSR > 1001 (print number from stack) +NSTTTTTSTN | JSR > 111101 (debug:printsignednumber) @ Shift by 63. SSSTN | PUSH +1 SSSTTTTTTN | PUSH +63 NSTTSTTSTN | JSR > 101101 (lshift) -NSTTSSTN | JSR > 1001 (print number from stack) +NSTTTTTSTN | JSR > 111101 (debug:printsignednumber) @ Shift all ones until a single one remains. SSTTN | PUSH -1 SSSTTTTTTN | PUSH +63 NSTTSTTSTN | JSR > 101101 (lshift) -NSTTSSTN | JSR > 1001 (print number from stack) +NSTTTTTSTN | JSR > 111101 (debug:printsignednumber) @ Shift all ones to all zeros. SSTTN | PUSH -1 SSSTSSSSSSN | PUSH +64 NSTTSTTSTN | JSR > 101101 (lshift) -NSTTSSTN | JSR > 1001 (print number from stack) +NSTTTTTSTN | JSR > 111101 (debug:printsignednumber) @ All done. NNN | DIE #include -#include +#include diff --git a/stdlib_tests/3003_rshift.pvvs b/stdlib_tests/3003_rshift.pvvs index 5c70023..2071e50 100644 --- a/stdlib_tests/3003_rshift.pvvs +++ b/stdlib_tests/3003_rshift.pvvs @@ -2,19 +2,19 @@ SSSTN | PUSH +1 SSSSN | PUSH 0 NSTTSTTSSN | JSR > 101100 (rshift) -NSTTSSTN | JSR > 1001 (print number from stack) +NSTTTTTSTN | JSR > 111101 (debug:printsignednumber) @ Shift by one, positive sign extension. SSSTSN | PUSH +2 SSSTN | PUSH +1 NSTTSTTSSN | JSR > 101100 (rshift) -NSTTSSTN | JSR > 1001 (print number from stack) +NSTTTTTSTN | JSR > 111101 (debug:printsignednumber) @ Shift by four, positive sign extension. SSSTSSSSN | PUSH +16 SSSTSSN | PUSH +4 NSTTSTTSSN | JSR > 101100 (rshift) -NSTTSSTN | JSR > 1001 (print number from stack) +NSTTTTTSTN | JSR > 111101 (debug:printsignednumber) @ Shift by one, negative sign extension. @ -9223372036854775805 = 1000000000000000000000000000000000000000000000000000000000000011 @@ -22,7 +22,7 @@ NSTTSSTN | JSR > 1001 (print number from stack) SSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTSTN | PUSH -9223372036854775805 SSSTN | PUSH +1 NSTTSTTSSN | JSR > 101100 (rshift) -NSTTSSTN | JSR > 1001 (print number from stack) +NSTTTTTSTN | JSR > 111101 (debug:printsignednumber) @ Shift by four, negative sign extension @ -9223372036854775638 = 1000000000000000000000000000000000000000000000000000000010101010 @@ -30,22 +30,22 @@ NSTTSSTN | JSR > 1001 (print number from stack) SSTSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTSTSTSTTSN | PUSH -9223372036854775638 SSSTSSN | PUSH +4 NSTTSTTSSN | JSR > 101100 (rshift) -NSTTSSTN | JSR > 1001 (print number from stack) +NSTTTTTSTN | JSR > 111101 (debug:printsignednumber) @ Test for special case: rshift(-1) = -1 SSTTN | PUSH -1 SSSTN | PUSH +1 NSTTSTTSSN | JSR > 101100 (rshift) -NSTTSSTN | JSR > 1001 (print number from stack) +NSTTTTTSTN | JSR > 111101 (debug:printsignednumber) @ 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) +NSTTTTTSTN | JSR > 111101 (debug:printsignednumber) @ All done. NNN | DIE #include -#include +#include diff --git a/stdlib_tests/3004_and.pvvs b/stdlib_tests/3004_and.pvvs index a468c82..d850925 100644 --- a/stdlib_tests/3004_and.pvvs +++ b/stdlib_tests/3004_and.pvvs @@ -2,25 +2,25 @@ SSSSN | PUSH 0 SSSSN | PUSH 0 NSTTSTSSTN | JSR > 101001 (and) -NSTTSSTN | JSR > 1001 (print number from stack) +NSTTTTTSTN | JSR > 111101 (debug:printsignednumber) @ Test 0 ^ 1 = 0 SSSSN | PUSH 0 SSSTN | PUSH +1 NSTTSTSSTN | JSR > 101001 (and) -NSTTSSTN | JSR > 1001 (print number from stack) +NSTTTTTSTN | JSR > 111101 (debug:printsignednumber) @ Test 1 ^ 1 = 1 SSSTN | PUSH +1 SSSTN | PUSH +1 NSTTSTSSTN | JSR > 101001 (and) -NSTTSSTN | JSR > 1001 (print number from stack) +NSTTTTTSTN | JSR > 111101 (debug:printsignednumber) @ Test 1 ^ 1...1 = 1 SSSTN | PUSH +1 SSTTN | PUSH -1 NSTTSTSSTN | JSR > 101001 (and) -NSTTSSTN | JSR > 1001 (print number from stack) +NSTTTTTSTN | JSR > 111101 (debug:printsignednumber) @ Test 1010...1010 ^ 111111 = 101010 @ Note that -6148914691236517206 = 1010...1010 in twos-complement but we @@ -28,10 +28,10 @@ NSTTSSTN | JSR > 1001 (print number from stack) SSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTTSN | PUSH -6148914691236517206 SSSTTTTTTN | PUSH +63 NSTTSTSSTN | JSR > 101001 (and) -NSTTSSTN | JSR > 1001 (print number from stack) +NSTTTTTSTN | JSR > 111101 (debug:printsignednumber) @ All done. NNN | DIE #include -#include +#include diff --git a/stdlib_tests/3005_or.pvvs b/stdlib_tests/3005_or.pvvs index 756f8e1..3ec0341 100644 --- a/stdlib_tests/3005_or.pvvs +++ b/stdlib_tests/3005_or.pvvs @@ -2,25 +2,25 @@ SSSSN | PUSH 0 SSSSN | PUSH 0 NSTTSTSTSN | JSR > 101010 (or) -NSTTSSTN | JSR > 1001 (print number from stack) +NSTTTTTSTN | JSR > 111101 (debug:printsignednumber) @ Test 0 v 1 = 1 SSSSN | PUSH 0 SSSTN | PUSH +1 NSTTSTSTSN | JSR > 101010 (or) -NSTTSSTN | JSR > 1001 (print number from stack) +NSTTTTTSTN | JSR > 111101 (debug:printsignednumber) @ Test 1 v 1 = 1 SSSTN | PUSH +1 SSSTN | PUSH +1 NSTTSTSTSN | JSR > 101010 (or) -NSTTSSTN | JSR > 1001 (print number from stack) +NSTTTTTSTN | JSR > 111101 (debug:printsignednumber) @ Test 1 v 1...1 = 1...1 SSSTN | PUSH +1 SSTTN | PUSH -1 NSTTSTSTSN | JSR > 101010 (or) -NSTTSSTN | JSR > 1001 (print number from stack) +NSTTTTTSTN | JSR > 111101 (debug:printsignednumber) @ Test 1010...1010 v 0101...0101 = 1...1 @ Note that -6148914691236517206 = 1010...1010 in twos-complement but we @@ -28,10 +28,10 @@ NSTTSSTN | JSR > 1001 (print number from stack) SSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTTSN | PUSH -6148914691236517206 SSSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTN | PUSH +6148914691236517205 NSTTSTSTSN | JSR > 101010 (or) -NSTTSSTN | JSR > 1001 (print number from stack) +NSTTTTTSTN | JSR > 111101 (debug:printsignednumber) @ All done. NNN | DIE #include -#include +#include diff --git a/stdlib_tests/3006_xor.pvvs b/stdlib_tests/3006_xor.pvvs index 68a72d1..f225190 100644 --- a/stdlib_tests/3006_xor.pvvs +++ b/stdlib_tests/3006_xor.pvvs @@ -2,25 +2,25 @@ SSSSN | PUSH 0 SSSSN | PUSH 0 NSTTSTSTTN | JSR > 101110 (xor) -NSTTSSTN | JSR > 1001 (print number from stack) +NSTTTTTSTN | JSR > 111101 (debug:printsignednumber) @ Test 0 xor 1 = 1 SSSSN | PUSH 0 SSSTN | PUSH +1 NSTTSTSTTN | JSR > 101110 (xor) -NSTTSSTN | JSR > 1001 (print number from stack) +NSTTTTTSTN | JSR > 111101 (debug:printsignednumber) @ Test 1 xor 1 = 0 SSSTN | PUSH +1 SSSTN | PUSH +1 NSTTSTSTTN | JSR > 101110 (xor) -NSTTSSTN | JSR > 1001 (print number from stack) +NSTTTTTSTN | JSR > 111101 (debug:printsignednumber) @ Test 1 xor 1...1 = 1...10 SSSTN | PUSH +1 SSTTN | PUSH -1 NSTTSTSTTN | JSR > 101110 (xor) -NSTTSSTN | JSR > 1001 (print number from stack) +NSTTTTTSTN | JSR > 111101 (debug:printsignednumber) @ Test 1010...1010 xor 0101...0101 = 1...1 @ Note that -6148914691236517206 = 1010...1010 in twos-complement but we @@ -28,10 +28,10 @@ NSTTSSTN | JSR > 1001 (print number from stack) SSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTTSN | PUSH -6148914691236517206 SSSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTN | PUSH +6148914691236517205 NSTTSTSTTN | JSR > 101110 (xor) -NSTTSSTN | JSR > 1001 (print number from stack) +NSTTTTTSTN | JSR > 111101 (debug:printsignednumber) @ All done. NNN | DIE #include -#include +#include diff --git a/stdlib_tests/4001_strlen.pvvs b/stdlib_tests/4001_strlen.pvvs index 7c0e0af..6878370 100644 --- a/stdlib_tests/4001_strlen.pvvs +++ b/stdlib_tests/4001_strlen.pvvs @@ -5,10 +5,10 @@ NSTTTTTTN | JSR > 11111 (spew) SSSTSSSSSN | PUSH 32 (address) NSTTSSSSSN | JSR > 100000 (strlen) -NSTTSSTN | JSR > 1001 (print number from stack) +NSTTTTTSTN | JSR > 111101 (debug:printsignednumber) NNN | DIE -#include +#include #include #include diff --git a/stdlib_tests/5001_abs.pvvs b/stdlib_tests/5001_abs.pvvs index 7898e56..daf70ca 100644 --- a/stdlib_tests/5001_abs.pvvs +++ b/stdlib_tests/5001_abs.pvvs @@ -1,17 +1,17 @@ @ +1 should remain +1 SSSTN | PUSH +1 NSTTSSSTN | JSR > 10001 (abs) -NSTTSSTN | JSR > 1001 (print number from stack) +NSTTTTTSTN | JSR > 111101 (debug:printsignednumber) @ -1 should become +1 SSTTN | PUSH -1 NSTTSSSTN | JSR > 10001 (abs) -NSTTSSTN | JSR > 1001 (print number from stack) +NSTTTTTSTN | JSR > 111101 (debug:printsignednumber) @ 0 should remain 0 SSSSN | PUSH 0 NSTTSSSTN | JSR > 10001 (abs) -NSTTSSTN | JSR > 1001 (print number from stack) +NSTTTTTSTN | JSR > 111101 (debug:printsignednumber) @ Test the most negative number. @ It is impossible to return the true absolute value but should return zero. @@ -19,8 +19,9 @@ SSSTN | PUSH +1 SSSTTTTTTN | PUSH +63 NSTTSTTSTN | JSR > 101101 (lshift) NSTTSSSTN | JSR > 10001 (abs) -NSTTSSTN | JSR > 1001 (print number from stack) +NSTTTTTSTN | JSR > 111101 (debug:printsignednumber) NNN | DIE +#include #include -#include +#include -- 2.20.1