2022年8月1日月曜日

CP/M-8000にFPUエミュレーションを追加

 CP/Mのライセンスに変化があったのと、夏休みに入って時間ができたこともあり、CP/M-8000に手を入れています。その一番目として、やり残していたFPUエミュレーションをCP/Mにリンクして使えるようにしました。

作業としては、fpe.o と fpedep.o をXOUTからCOFFに変換し、biostrap.sを書き換えるだけですんだので拍子抜けするほど簡単でした。fpe.oはZilogが出荷予定だった実数演算コプロセッサのZ8070をエミュレートするもので、Z8070の命令がくると例外処理で実数演算をソフトウェアで実行します。

これで、ZCC(ZilogのCコンパイラ)で、floatが扱えるようになりました。ためしに、レトロCPU界隈ではメジャーなマンデルブロ集合のASCIIARTをC言語に書き換えて実行してみました。コードは下のような感じです。


これをコンパイルして実行したのが下の結果です。

見慣れたアスキーアートが出ているので、問題なく動作しているようです。ただし実行時間は遅く、7分44秒とかなり期待はずれな結果です。結果はともかく、実数演算がC言語で使えるようになっただけで可能性は広がります。試せる人はかなり限られると思いますが、この成果はGitHubのリポジトリに反映しました。

今後は、開発環境を改善していく予定です。私にはCP/M標準のEDが全く馴染まないので、まずはエディタをどうにかしようと検討中です。

0 件のコメント:

コメントを投稿