Compare commits

...

2 Commits

Author SHA1 Message Date
Irmen de Jong a1ebc7090d fix sieve example 2024-04-18 22:22:29 +02:00
Irmen de Jong 054b4636e0 version 10.3 2024-04-18 21:50:48 +02:00
4 changed files with 8 additions and 17 deletions

View File

@ -119,14 +119,13 @@ This code calculates prime numbers using the Sieve of Eratosthenes algorithm::
%import textio %import textio
%zeropage basicsafe %zeropage basicsafe
main { main {
bool[256] sieve
ubyte[256] sieve
ubyte candidate_prime = 2 ; is increased in the loop ubyte candidate_prime = 2 ; is increased in the loop
sub start() { sub start() {
sys.memset(sieve, 256, false) ; clear the sieve sys.memset(sieve, 256, 0) ; clear the sieve
txt.print("prime numbers up to 255:\n\n") txt.print("prime numbers up to 255:\n\n")
ubyte amount=0 ubyte amount=0
repeat { repeat {
@ -162,9 +161,6 @@ This code calculates prime numbers using the Sieve of Eratosthenes algorithm::
} }
} }
when compiled an ran on a C-64 you'll get: when compiled an ran on a C-64 you'll get:
![c64 screen](docs/source/_static/primes_example.png) ![c64 screen](docs/source/_static/primes_example.png)

View File

@ -120,13 +120,11 @@ This code calculates prime numbers using the Sieve of Eratosthenes algorithm::
%zeropage basicsafe %zeropage basicsafe
main { main {
ubyte[256] sieve bool[256] sieve
ubyte candidate_prime = 2 ; is increased in the loop ubyte candidate_prime = 2 ; is increased in the loop
sub start() { sub start() {
; clear the sieve, to reset starting situation on subsequent runs sys.memset(sieve, 256, 0) ; clear the sieve
sys.memset(sieve, 256, false)
; calculate primes
txt.print("prime numbers up to 255:\n\n") txt.print("prime numbers up to 255:\n\n")
ubyte amount=0 ubyte amount=0
repeat { repeat {
@ -147,7 +145,7 @@ This code calculates prime numbers using the Sieve of Eratosthenes algorithm::
while sieve[candidate_prime] { while sieve[candidate_prime] {
candidate_prime++ candidate_prime++
if candidate_prime==0 if candidate_prime==0
return 0 ; we wrapped; no more primes available in the sieve return 0 ; we wrapped; no more primes
} }
; found next one, mark the multiples and return it. ; found next one, mark the multiples and return it.

View File

@ -4,12 +4,11 @@
; Note: this program can be compiled for multiple target systems. ; Note: this program can be compiled for multiple target systems.
main { main {
bool[256] sieve bool[256] sieve
ubyte candidate_prime = 2 ; is increased in the loop ubyte candidate_prime = 2 ; is increased in the loop
sub start() { sub start() {
sys.memset(sieve, 256, 0) ; clear the sieve, to reset starting situation on subsequent runs sys.memset(sieve, 256, 0) ; clear the sieve
; calculate primes ; calculate primes
txt.print("prime numbers up to 255:\n\n") txt.print("prime numbers up to 255:\n\n")
@ -26,8 +25,6 @@ main {
txt.print("number of primes (expected 54): ") txt.print("number of primes (expected 54): ")
txt.print_ub(amount) txt.print_ub(amount)
txt.nl() txt.nl()
; test_stack.test()
} }

View File

@ -5,4 +5,4 @@ org.gradle.daemon=true
kotlin.code.style=official kotlin.code.style=official
javaVersion=11 javaVersion=11
kotlinVersion=1.9.22 kotlinVersion=1.9.22
version=10.3-SNAPSHOT version=10.3