User Tools

Site Tools


sd:star_forth_test_suite

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
sd:star_forth_test_suite [2026/03/14 01:59] appledogsd:star_forth_test_suite [2026/03/14 13:20] (current) appledog
Line 17: Line 17:
 | 1.0\\ 260313 | PASS | '': SIMPLE 500000 0 DO LOOP ;''\\ ''SIMPLE'' | ~6 seconds (170,000 w/s) at 4MHz | | 1.0\\ 260313 | PASS | '': SIMPLE 500000 0 DO LOOP ;''\\ ''SIMPLE'' | ~6 seconds (170,000 w/s) at 4MHz |
 | 1.0\\ 260313 | PASS | '': BENCH 500000 0 DO I DUP * DROP LOOP ;''\\ ''BENCH'' | 22 seconds (140,000 w/s) at 4Mhz | | 1.0\\ 260313 | PASS | '': BENCH 500000 0 DO I DUP * DROP LOOP ;''\\ ''BENCH'' | 22 seconds (140,000 w/s) at 4Mhz |
-| 1.0\\ 260313 | PASS | '': #WORDS 0 $030003 P@ BEGIN DUP WHILE SWAP 1 + SWAP P@ REPEAT DROP . ." words" CR ;'' | Shows 72 words (see WORDS, which shows 71). |+| 1.0\\ 260314 | PASS | '': #WORDS 0 $030003 P@ BEGIN DUP WHILE SWAP 1 + SWAP P@ REPEAT DROP . ." words" CR ;'' | Shows 73 words (see WORDS, which shows 72). |
  
 Note that AS-IS, SD/FORTH 1.0 is not FORTH-79 compliant. That's fine, the following self-hosted words act as a sort of test suite, and also bring us up squarely into FORTH-79. Note that AS-IS, SD/FORTH 1.0 is not FORTH-79 compliant. That's fine, the following self-hosted words act as a sort of test suite, and also bring us up squarely into FORTH-79.
Line 26: Line 26:
     : 2+ 2 + ;     : 2+ 2 + ;
     : 2- 2 - ;     : 2- 2 - ;
-    : NEGATE 0 SWAP - ; 
-    : ABS DUP 0< IF NEGATE THEN ; 
     : 0= 0 = ;     : 0= 0 = ;
     : 0< 0 < ;     : 0< 0 < ;
     : 0> 0 > ;     : 0> 0 > ;
 +    : NEGATE 0 SWAP - ;
 +    : ABS DUP 0< IF NEGATE THEN ;
     : NIP SWAP DROP ;     : NIP SWAP DROP ;
     : TUCK SWAP OVER ;     : TUCK SWAP OVER ;
Line 45: Line 45:
     : TYPE ( addr len -- ) 0 DO DUP C@ EMIT 1 + LOOP DROP ;     : TYPE ( addr len -- ) 0 DO DUP C@ EMIT 1 + LOOP DROP ;
     : MOVE CMOVE ;     : MOVE CMOVE ;
-    : NEGATE 0 SWAP - ; 
 </codify> </codify>
  
Line 52: Line 51:
  
 <codify Forth> <codify Forth>
-: TEST= = IF ." PASS" ELSE ." FAIL" THEN CR ;+: TEST= = IF ." PASS " ELSE ." FAIL " THEN ;
  
 ( Arithmetic ) ( Arithmetic )
Line 74: Line 73:
 ( Stack ops ) ( Stack ops )
 1 2 NIP 2 TEST= 1 2 NIP 2 TEST=
-1 2 TUCK DROP 2 TEST= +1 2 TUCK 2 TEST= DROP DROP 
-1 2 TUCK DROP DROP 1 TEST=+1 2 TUCK DROP 1 TEST= DROP 
 +2 TUCK DROP DROP 2 TEST=
 5 ?DUP + 10 TEST= 5 ?DUP + 10 TEST=
 0 ?DUP 0 TEST= 0 ?DUP 0 TEST=
-1 2 3 ROT DROP DROP 1 TEST=+1 2 3 ROT 1 TEST= DROP DROP
 3 4 2DUP + >R + R> + 14 TEST= 3 4 2DUP + >R + R> + 14 TEST=
  
Line 99: Line 99:
 65 EMIT 66 EMIT 67 EMIT CR 65 EMIT 66 EMIT 67 EMIT CR
 3 SPACES 65 EMIT CR 3 SPACES 65 EMIT CR
 +
 +( Bit Shifting Ops )
 +1 0 LSHIFT 1 TEST=
 +1 1 LSHIFT 2 TEST=
 +1 4 LSHIFT 16 TEST=
 +1 8 LSHIFT 256 TEST=
 +$FF 4 LSHIFT $FF0 TEST=
 +16 1 RSHIFT 8 TEST=
 +256 8 RSHIFT 1 TEST=
 +$FF0 4 RSHIFT $FF TEST=
 +1 1 RSHIFT 0 TEST=
 </codify> </codify>
  
Line 135: Line 146:
 === FIZZBENCH === FIZZBENCH
 <codify Forth> <codify Forth>
 +    : FIZZBUZZ 21 1 DO I 15 MOD 0 = IF ." FizzBuzz" ELSE I 3 MOD
 +          0 = IF ." Fizz" ELSE I 5 MOD
 +          0 = IF ." Buzz" ELSE I . THEN THEN THEN CR LOOP ;
     : FIZZBENCH 0 10000 0     : FIZZBENCH 0 10000 0
         DO I 15 MOD 0 = IF 1 + ELSE         DO I 15 MOD 0 = IF 1 + ELSE
sd/star_forth_test_suite.1773453571.txt.gz · Last modified: by appledog

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki