\ FORTH/6000 live demo for the web page \ GLM, October 2026. Runs fast; timings vary per request. 10000 CONSTANT LIMIT CREATE FLAGS LIMIT 1+ ALLOT : SIEVE ( limit -- count ) DUP 2 < IF DROP 0 EXIT THEN DUP FLAGS SWAP 1 FILL DUP 2 DO I FLAGS + C@ IF DUP I 2* ?DO 0 I FLAGS + C! J +LOOP THEN LOOP 0 SWAP 2 DO I FLAGS + C@ IF 1+ THEN LOOP ; : FIB ( n -- fib ) DUP 2 < IF EXIT THEN 1- DUP 1- RECURSE SWAP RECURSE + ; : ACK ( m n -- r ) OVER 0= IF NIP 1+ EXIT THEN DUP 0= IF DROP 1- 1 RECURSE EXIT THEN 2DUP 1- RECURSE >R DROP 1- R> RECURSE ; : ARRAY ( n "name" -- ) CREATE CELLS ALLOT DOES> SWAP CELLS + ; 10 ARRAY BOARD : BOARD! ( v i -- ) BOARD ! ; : BOARD@ ( i -- v ) BOARD @ ; : INIT 10 0 DO I I BOARD! LOOP ; : TOTAL 0 10 0 DO I BOARD@ + LOOP ; INIT ." FORTH/6000 on a PowerPC 604e" CR ." primes below 10000: " LIMIT SIEVE . CR ." fib(22) naive: " 22 FIB . ." in " CLOCK 22 FIB DROP CLOCK SWAP - U. ." us" CR ." ack(3,4) = " 3 4 ACK . ." in " CLOCK 3 4 ACK DROP CLOCK SWAP - U. ." us" CR ." CREATE/DOES> board 0..9 sums to " TOTAL . CR