Merge pull request #59 from philburk/build64
[pforth] / fth / siev.fth
CommitLineData
8e9db35f
PB
1\ #! /usr/stud/paysan/bin/forth
2
3DECIMAL
4\ : SECS TIME&DATE SWAP 60 * + SWAP 3600 * + NIP NIP NIP ;
5CREATE FLAGS 8190 ALLOT
6variable eflag
7\ FLAGS 8190 + CONSTANT EFLAG
8
9\ use secondary fill like pForth !!!
10: FILL { caddr num charval -- }
11 num 0
12 ?DO
13 charval caddr i + c!
14 LOOP
15;
16
17: PRIMES ( -- n ) FLAGS 8190 1 FILL 0 3 EFLAG @ FLAGS
18 DO I C@
19 IF DUP I + DUP EFLAG @ <
20 IF EFLAG @ SWAP
21 DO 0 I C! DUP +LOOP
22 ELSE DROP THEN SWAP 1+ SWAP
23 THEN 2 +
24 LOOP DROP ;
25
26: BENCHMARK 0 100 0 DO PRIMES NIP LOOP ; \ !!! ONLY 100
27\ SECS BENCHMARK . SECS SWAP - CR . .( secs)
28: main
29 flags 8190 + eflag !
30 benchmark ( . ) drop
31;