SORD M68にCP/M-80を移植する手順を書いておきます。
必要なもの
CP/M2.2のソースコード(The Unofficial CP/M Web siteにあります)
CP/M2.2のバイナリ(The Unofficial CP/M Web siteにあります)
ZASM.EXE(MSDOSで動くアブソリュートアセンブラです。VECTORにあります)
https://www.vector.co.jp/soft/dos/prog/se010314.html
CP/M player for Win32(WIndows上でCP/Mのプログラムを実行するソフトウェア)
http://takeda-toshiya.my.coocan.jp/cpm/index.html
MSDOS player for Win32(Windows上でMSDOSのプログラムを実行するソフトウェア)
http://takeda-toshiya.my.coocan.jp/msdos/
l3diskex(ディスクイメージ生成・操作プログラム。超多数のイメージを操作できる)
http://s-sasaji.ddo.jp/bml3mk5/#l3diskex
SORD M68の起動における制限について
1. BOOT ROMはトラック1、サイド0、セクタ1~8の2kbを読み込みます。よって、システム全体を読み込ませるローダーは2kb以内に収める必要があります。実際に作成したとこと400バイト未満でした。
2. 1の制限により、CP/Mの標準システムトラック0~1にシステムが入りきりません。よって、CP/Mシステム(CPM22.BIN+BIOS.BIN=CPM.SYS)は、ディスクの適当な位置に配置します。あれこれやるとトラック0(単密度)とトラック1(倍密度)の残りに入れられそうですが面倒なので、やめました。
ローダーの作成
特記すべきことはありません。バイナリを作った後にバイナリエディタで切り貼りがありますが難しくありません。CP/Mシステム(CPM.SYS)の配置場所(トラック、サイド、セクタ)に適合するように、ローダー内のディスクリードルーチンの引数を変更します。TIPSは、メモリの0H~100Hまでをちゃんとクリアしてからジャンプしないと動作が不安定になることがあることです。
ディスクパラメータの決定
The Unofficial CP/M Web siteにあるCP/M2.2のバイナリが含まれるZIPファイル
http://www.cpm.z80.de/download/cpm22-b.zip
をダウンロードして、中にあるDISKDEF.LIBとMAC.COMを取り出します。
SORD M68用に以下のように記述しました。これはSORD M68用CP/M-68Kのディスクパラメータとおそらく同一です。互換性はありますが、データブロックサイズが4kbは正直使いにくいと思います。
MAC.COMでアセンブルして、得られたPRNコードから必要個所を以下に記載するCustomBIOSにコピーします。
CustomBIOSの作成
前回説明しました。ZASMでアセンブルして、hex2binでBIOS.BINを作ります。アセンブルする前に、望みのメモリモデルにしておきます。CP/Mのメモリモデルを変更したときは、ブロッキング/デブロッキング用のホストバッファ(hstbuf)のアドレスを、DMAの転送アドレスに転記することを忘れないようにします。これを忘れると、DIRコマンドでファイル名が出ません。最悪フリーズか暴走します。
The Unofficial CP/M Web siteからアセンブラのソースコードのZIPファイル
http://www.cpm.z80.de/download/cpm2-asm.zip
をダウンロードします。中にあるCPM22.Z80をZASMでアセンブルして、hex2binで変換するとバイナリCPM22.BINが出来上がります。これがBDOSとCPPです。アセンブルする前にメモリモデルを望むサイズにしておきます。
CPM.SYSを作る
CPM22.BINの後ろにBIOS.BINを繋げます。この時、CPM22.BINの最後には空のジャンプテーブルが入っていますので、これを削除してBIOS.BINを繋げます。具体的には1600H以降につなげます。出来上がったバイナリはCPM.SYSとリネームします。この作業はバイナリエディタで簡単にできます。私はBinary Editor BZを使っています。
これで、ローダー(LOADER.BIN)、CP/M80システム(CPM.SYS)が出来ました。以後は、l3diskexを使います。
起動ディスクイメージを作成する
l3diskexを起動して、以下、画像の通りに処理すれば、SORD M68用のCP/Mイメージが完成します。
CPM.SYSをCP/Mイメージディスクに書き込む
イメージのウインドウにドラッグアンドドロップすればコピーされます。ここで、コピーされたCPM.SYSを選択して、右クリックしてプロパティを見ます。すると画像のようにディスクのどこに保存されたか分かりますので、メモして、ローダーのディスクリードルーチンの引数を変更します。画面の例では、トラック7、サイド0、セクタ13~26、トラック7、サイド1、セクタ1~12までを占有していることがわかります。
ローダーを書き込む
生ディスクモードに切り替えて、トラック1、サイド0、セクタ1を選択し、右クリックして「インポート」を選びます。ファイル選択ウインドウが開くので、LOADER.BINを選択します。どこまで書くのか聞かれるので、2セクタまでとします。LOADER.BINは400バイト未満なので、2セクタ(512バイト)で格納できます。
以上で、SORD M68用CP/Mシステムの起動ディスクイメージは完成です。好みのプログラムをドラッグアンドドロップして、望みのディスクイメージを作成して、実行するだけです。
成功すれば、ターミナル画面に以下のように表示されます。