11111 ----- spew (heap.pvvs)
100xxx - string functions
100000 ----- strlen (string.pvvs)
+ 100001 ----- isdigit (string.pvvs)
101xxx - logic functions
101000 ----- not (logic.pvvs)
101001 ----- and (logic.pvvs)
SNN | DROP
NTN | RTS
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@ Name:
+@ isdigit (100001)
+@ Description:
+@ Tests 'character' on stack. Is it an ASCII number?
+@ Returns 1 or 0 representing True/False.
+@ Call Stack:
+@ character <-- TOS
+@ Return Stack:
+@ 1 or 0 <-- TOS
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+NSSVTSSSSTN | Mark: 100001 (isdigit)
+
+SSSSSTTSSSSN | PUSH 48 (ASCII '0')
+TSST | SUBTRACT
+SNS | DUP
+NTTSSTSSSSTSSSSSSSSN | BMI > 00100001 00000000 (not digit)
+SNS | DUP
+SSSTSTSN | PUSH 10
+TSST | SUBTRACT
+NTTSSTSSSSTSSSSSSSTN | BMI > 00100001 00000001 (is digit)
+
+NSSVSSTSSSSTSSSSSSSSN | Mark: 00100001 00000000 (not digit)
+SNN | DROP
+SSSSN | PUSH 0
+NTN | RTS
+
+NSSVSSTSSSSTSSSSSSSTN | Mark: 00100001 00000001 (is digit)
+SNN | DROP
+SSSTN | PUSH 1
+NTN | RTS
+
#endif
--- /dev/null
+SSSSSTSTTTTN | PUSH 47 (ASCII '/')
+NSTTSSSSTN | JSR > 100001 (isdigit)
+NSTTTTTSTN | JSR > 111101 (debug:printsignednumber)
+
+SSSSSTTSSSSN | PUSH 48 (ASCII '0')
+NSTTSSSSTN | JSR > 100001 (isdigit)
+NSTTTTTSTN | JSR > 111101 (debug:printsignednumber)
+
+SSSSSTTTSSTN | PUSH 57 (ASCII '9')
+NSTTSSSSTN | JSR > 100001 (isdigit)
+NSTTTTTSTN | JSR > 111101 (debug:printsignednumber)
+
+SSSSSTTTSTSN | PUSH 58 (ASCII ':')
+NSTTSSSSTN | JSR > 100001 (isdigit)
+NSTTTTTSTN | JSR > 111101 (debug:printsignednumber)
+
+NNN | DIE
+
+#include <debug.pvvs>
+#include <string.pvvs>
['3005_or', '', '+0+1+1-1-1'],
['3006_xor', '', '+0+1+0-2-1'],
['4001_strlen', '', '+11'],
+ ['4002_isdigit', '', '+0+1+1+0'],
['5001_abs', '', '+1+1+0+0'],
['5002_random', '', ''],
['5003_gcd', '', '+0+4+4+3+3+3'],