diff --git a/wipforth.wat b/wipforth.wat index c9d9404..be2c560 100644 --- a/wipforth.wat +++ b/wipforth.wat @@ -1353,6 +1353,58 @@ ;; DROP -1 \ Return -1 for an invalid digit ;; ; + (data (i32.const 0x086c) + "\1c\08\00\00" + "\05DIGIT\00\00" + "\00\00\00\00" + "\08\02\00\00" ;; DUP + "\08\02\00\00" ;; DUP + "\18\04\00\00" ;; LIT + "\30\00\00\00" ;; 48 + "\38\03\00\00" ;; >= + "\28\02\00\00" ;; SWAP + "\18\04\00\00" ;; LIT + "\39\00\00\00" ;; 57 + "\2c\03\00\00" ;; <= + "\8c\03\00\00" ;; AND + "\b4\04\00\00" ;; 0BRANCH + "\14\00\00\00" ;; 20 + "\18\04\00\00" ;; LIT + "\30\00\00\00" ;; 48 + "\cc\02\00\00" ;; - + "\a4\04\00\00" ;; BRANCH + "\34\00\00\00" ;; 52 + "\08\02\00\00" ;; DUP + "\08\02\00\00" ;; DUP + "\18\04\00\00" ;; LIT + "\41\00\00\00" ;; 65 + "\38\03\00\00" ;; >= + "\28\02\00\00" ;; SWAP + "\5a\00\00\00" ;; 90 + "\2c\03\00\00" ;; <= + "\8c\03\00\00" ;; AND + "\b4\04\00\00" ;; 0BRANCH + "\38\00\00\00" ;; 56 + "\18\04\00\00" ;; LIT + "\2d\00\00\00" ;; 45 + "\cc\02\00\00" ;; - + "\08\02\00\00" ;; DUP + "\08\02\00\00" ;; DUP + "\80\03\00\00" ;; 0>= + "\28\02\00\00" ;; SWAP + "\70\05\00\00" ;; BASE + "\cc\03\00\00" ;; @ + "\14\03\00\00" ;; < + "\8c\03\00\00" ;; AND + "\b4\04\00\00" ;; 0BRANCH + "\08\00\00\00" ;; 8 + "\0c\04\00\00" ;; EXIT + "\18\02\00\00" ;; DROP + "\ff\ff\ff\ff" ;; -1 + "\0c\04\00\00") ;; EXIT + + ;; => 0xc4 bytes + ;; : NEGATE INVERT 1+ ; ;; : NUMBER? ( len -- value TRUE | FALSE )