Z80-COREでも、SDCCを使用してC言語でエラトステネスのふるいのプログラムを記述・実行できます。

Z80-CORE用のSDCCのライブラリをまだ作成していないので、プログラムの前半には、文字の出力や計時機能など、モニタの機能をC言語で呼び出せるようにする記述をいくつか追加しています。

/*
	sieve.c
*/

#include <stdio.h>
#include <stdarg.h>

void (*wexit)() = (void *)0x0083 ;
void (*conout)(char) = (void *)0x008c ;
void (*initexectime)() = (void *)0x00C2 ;
int (*getexectime)() = (void *)0x00C5 ;

int putchar(int c)
{
	if (c == '\n')
		conout('\r') ;
	conout(c) ;
	return c ;
}

#define MAXSQRT 100
#define MAX MAXSQRT*MAXSQRT

void main()
{
	char  prime[MAX] ;
	int   i, j, t ;

	initexectime() ;	// 計時時間の初期化
	puts("INIT TABLE\n") ;
	for (i = 2; i < MAX; i++)
		prime[i] = 1 ;
	printf("DONE: %d sec\n", getexectime()) ;	// 経過時間の表示
	puts("SIEVE CALC\n") ;
	for (i = 2; i < MAXSQRT; i++) {
		if (prime[i]) {
			printf("%d,", i) ;
			for (j = i; i * j < MAX; j++)
				prime[i * j] = 0 ;
		}
	}
	t = getexectime() ;	// 経過時間の取得
	printf("\nDONE: %d sec\n", t) ;
	puts("\nPRIME NUMBERS\n") ;
	for (i = 2; i < MAX ; i++) { 
		if (prime[i]){
			printf("%d,", i) ;
		}
	}
	printf("\nEXEC TIME: %d sec\n", t) ;
	wexit() ;
}

実行結果は3秒(4MHz)でした。

CC65に比べてかなり速いような気がする。。。