CP/M80

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のシステムコールを入れるのも部分的に必要な ものだけいれるのなら簡単です。

BASICコンパイラ

LST06K31A.jpg(19555 byte)

左のプログラムはBASICで書いたもので A% の値をポート12hに出力します。 ポートにLEDを接続して1になるところを点灯させるな らば明かりは右に行ったり左に行ったりします。

0036 のPRINT文は注釈にしていますがCPMエミュレータで実 行したときに A% の値を確認するものです。


上のプログラムをCPMエミュレータを使って下のように コンパイルを行います。 コンパイルに続けてリンクを行いますがこれでインテ ルへクスファイルが得られます。

FIG06K31A.jpg(40581 byte)

これを Z80シミュレータ で実行してみるとCP/Mのバージ ョン番号を取り出すシステムコールを発行していまし た。 システムコールの呼び出し先である5番地にRET命令を 置くだけで支障なく動きました。 CP/M以外で動かすことを考慮しないコンパイラの出力 プログラムでもOSに依存しない記述のものであればな んとかなるように思います。

LST06K31B.jpg(69208 byte) LST06K31C.jpg(23154 byte)

下のZ80シミュレータはCP/M環境ではありませんのでこ こで望みの動きが得られれば自作機でも動きます。

FIG06K31B.jpg(103348 byte)