prog8/examples/vm/bsieve.p8

38 lines
830 B
Plaintext
Raw Normal View History

2022-09-23 12:56:06 +00:00
%import textio
; The "Byte Sieve" test. https://en.wikipedia.org/wiki/Byte_Sieve
main {
sub start() {
uword count
uword i
uword prime
uword k
const uword SIZEPL = 8191
uword @zp flags_ptr = memory("flags", SIZEPL, $100)
txt.print("calculating...\n")
2022-09-27 20:36:10 +00:00
sys.memset(flags_ptr, SIZEPL, 1)
count = 0
for i in 0 to SIZEPL-1 {
if @(flags_ptr+i) {
prime = i + i + 3
k = i + prime
while k <= SIZEPL-1 {
@(flags_ptr + k) = false
k += prime
2022-09-23 12:56:06 +00:00
}
2022-09-27 20:36:10 +00:00
txt.print_uw(prime)
txt.nl()
count++
2022-09-23 12:56:06 +00:00
}
}
txt.nl()
2022-09-23 12:56:06 +00:00
txt.print_uw(count)
txt.print(" primes\n")
}
}