CP/M80は8080プロセッサを使ったコンピュータ用のOS です。 主にフロッピーディスクを持つシステムで使われまし た。 8080の上位互換であるZ80でも動きます。
8080のアーキテクチャは汎用マイクロプロセッサ草創 期のものですがC言語のコンパイラなどもあり実用上は 十分なものです。
現在ではCP/M80はエミュレータで動きます。過去に市 販されていた多くのアプリケーションはネットで入手 することができます。 CP/M80用のコンパイラが出力した実行コードはCP/M80 の環境に依存したものですが簡単な解析でCP/M80の外 でも動作する実行コードに仕立てることができます。
エミュレータはいろいろ出されていますが次のものがあります。
DOS用 CP/M program EXEcutor
WIN用 CP/M program EXEcutor for Win32
PLDに大きな論理を入れて高速に動作させることが容易 にできる今日ではコンピュータに高性能を要求する切 実な理由はほとんどありません。 ノイマン型のコンピュータでなければならない機能は ほとんどないように思います。 残る理由は機能の全部か部分をコンピュータ言語で作 り上げたい場合が有り得ます。
PLDにZ80を入れた場合はCP/M80のプログラミングツー ルが使えるので多様な開発環境が選択可能です。 PLDに入っているZ80であれば64Kバイト以上のメモリを 操作できるようにするのも簡単な論理の追加で可能に なります。 CP/M80のシステムコールを入れるのも部分的に必要な ものだけいれるのなら簡単です。
0036 のPRINT文は注釈にしていますがCPMエミュレータで実 行したときに A% の値を確認するものです。
上のプログラムをCPMエミュレータを使って下のように コンパイルを行います。 コンパイルに続けてリンクを行いますがこれでインテ ルへクスファイルが得られます。
これを Z80シミュレータ で実行してみるとCP/Mのバージ ョン番号を取り出すシステムコールを発行していまし た。 システムコールの呼び出し先である5番地にRET命令を 置くだけで支障なく動きました。 CP/M以外で動かすことを考慮しないコンパイラの出力 プログラムでもOSに依存しない記述のものであればな んとかなるように思います。
下のZ80シミュレータはCP/M環境ではありませんのでこ こで望みの動きが得られれば自作機でも動きます。