aboutsummaryrefslogtreecommitdiff
path: root/amforth-6.5/examples/sieve.frt
diff options
context:
space:
mode:
Diffstat (limited to 'amforth-6.5/examples/sieve.frt')
-rw-r--r--amforth-6.5/examples/sieve.frt58
1 files changed, 0 insertions, 58 deletions
diff --git a/amforth-6.5/examples/sieve.frt b/amforth-6.5/examples/sieve.frt
deleted file mode 100644
index 13c45f2..0000000
--- a/amforth-6.5/examples/sieve.frt
+++ /dev/null
@@ -1,58 +0,0 @@
-\ sieve benchmark, modified version of
-\ marcel hendrix' sources. Uses single bits
-\ insted of whole bytes to store the is-prime
-\ marker cuts memory footprint to 1/8th.
-
-\ runtime: ATMega644 @ 16MHz 2,3 seconds per DO-PRIME
-
-marker _sieve_
-
-decimal
-
-1000 constant #times
-8192 constant size \ needs 1KB
-
-variable flags size 8 / allot
-
-\ highly un-optimized words
-: bit-addr ( addr bit -- eff-addr )
- \ every byte has 8 bits. addr = addr + (bit >> 3)
- 3 rshift ( -- addr off)
- + ( -- eff-addr)
-;
-
-: bit? ( addr bit -- f )
- swap over bit-addr swap ( -- eff-addr bit )
- 7 and 1 swap lshift ( -- eff-addr bitmask)
- swap c@ and ( -- f)
-;
-
-: bit-reset ( addr bit -- )
- swap over bit-addr swap ( -- eff-addr bit )
- 7 and 1 swap lshift ( -- eff-addr bitmask)
- invert over c@ and swap c!
-;
-
-: 2drop drop drop ;
-
-: DO-PRIME flags [ size 8 / ] literal -1 fill
- 0 size 0 do
- flags i
- bit? if
- i 2* 3 +
- dup i +
- begin
- dup
- size u<
- while
- flags over bit-reset
- over +
- repeat
- 2drop 1+
- then
- loop ;
-
-: primes cr #times u. ." iterations."
- 0 #times 0 do drop DO-PRIME loop
- cr . ." primes found, " ;
-