IchigoJam / ichigojam-firm

MIT License
40 stars 11 forks source link

z88dk(z88dk-sccz80)での問題 #14

Open jg1uaa opened 7 months ago

jg1uaa commented 7 months ago

z88dkを使用し、CP/M上でのIchigoJam-BASICの動作を目指しています。

既に #9 でtoken_get()の戻り値に構造体が使えないという問題を直していますが(マージありがとうございます)、このコンパイラはグローバル変数の宣言においても(おそらくz88dk-sccz80のバグに起因すると思われる)問題があり、これを回避するためにコードを大幅に書き換える必要があります。#13 の形にまとめており、あとはusleep()相当品の用意と細かい修正が残っています。

なお、z88dk-sdccでのビルドも試みていますが、こちらもあまり芳しくありません。#define S_INLINEやtypedef unsigned char uint8などといった定義が何故か無視されてしまい、z88dk-sccz80よりも事態が悪化しているように見えます。

jg1uaa commented 7 months ago

何らかのシステムタイマーを使用する時点でCP/M汎用ではなくなりますし、ビジーループで待たせるにしてもZ80/eZ80/R800等多種多様なZ80(とその仲間たち)とその動作クロックを考慮する必要があります。

完璧ではなくても広い範囲である程度動くものを用意する方が良い(お好みの機種向けにチューニングするための土台がなければ何も始まりませんよ?)という方針から、CP/M版ではusleep()相当品の用意は諦めることにします。