CP/Mシステム


CP/Mシステム、Z80のプログラム(OS)です。
Abz80でシミュレートします。

今回作成する CP/Mシステムは、Z80のI/O命令を捕まえ、CP/MのBIOSと
RX62nのリアルI/Oを連携するように考えています。

CCP, BDOS は、デジタルリサーチのオリジナルを使用し、BIOSのみを作成します。
こちらから、オリジナルをダウンロードします。
http://www.retroarchive.org/cpm/archive/unofficial/


DIGITAL RESEARCH SOURCE CODE へ進み CP/M 2.2 ASM SOURCE をダウンロードします。 cpm2-asm.zip の中の、CPM22.Z80が、ザイログのニーモニックで記述されています。 私は、インテル表記に慣れていないので、ザイログ版で進めています。 ダウンロードしたゲイリー・キルドールさんのプログラムがどんなものだったのかを じっくり拝見です。 ダウンロードしたソースには、CCP と BDOS が含まれています。 それに自作BIOSを付け足せば、立派な、CP/M80 2.2 の完成になります。 といっても、リアルCP/Mの移植経験があるわけではないので、要のBIOSの準備が、 かなりのハードルになりました。 その他、CP/Mの資料として、Linux Japanで掲載された記事 http://www.ip-arch.jp/LinuxJapan/200108-alpha.pdf から、http://www.retroarchive.org/cpm/ を知りました。 DRIPAK.ZIPのCPM_2-2のDISASSMBからもBIOSのソースを読みお勉強です。 すごいボリュームの関連プログラムが含まれています。 インテル8080のニーモニックだったので、XZ80.EXEで、 ザイログニーモニックに変換しての作業です。 イメージディスクとして使用する予定の altairz80のソースも非常に参考になります。 ディスク関係のパラメータなどは、結局、このシミュレータのソースをコピーしています。 肝心なところの説明がごっそりと抜けていますが、SH2版用に作成した CP/M BIOSのソース です。 RX62n版CP/Mでも、そのまま使用しています。 思い出しながら、説明を徐々に追加していきます。 デジタルリサーチのCCP, BDOSの後に、BIOSを連結します。 CP/MとAbz80のかけ橋は、以下のI/Oです。 コンソールI/O SIO_OUT1 EQU 0 SIO_IN1 EQU 0 SIO_ST1 EQU 1 ディスクI/O selout EQU 8 ; port to select and enable controller and drive (OUT) statin EQU 8 ; port indicating status of drive and controller (IN) dskcon EQU 9 ; port to control disc function (OUT) secpos equ 9 ; port to indicate current sector position of disk (IN) dskwrit EQU 10 ; port to write data (OUT) dskread EQU 10 ; port to read data (IN) ブートI/O BOOT_GO EQU 4 ; SDCARDより、CP/M HEXファイルを読み込み要求フラグ 通常CP/Mのブートは、最初のトラックから、ブートプログラムをとりこみという方法ですが、 このシステムでは、SDCARDから、CPM22.HEXをAbz80のメモリにロードし、即CP/Mを 実行する形をとっています。 使用ツール 8085(8080)→Z80 アセンブラソースコンバーター 永井哲朗さん作 TOZ 1994/04/16 10:35 14,087 TOZ.EXE Z80クロスアセンブラ アークピットさん XZ80 1990/01/01 03:13 58,337 XZ80.EXE 参考文献 村瀬康治さん箸  実践、応用CP/M