2020年4月15日水曜日

FM-7用のCP/M制作の試み(まだ未完成ですが...)

Z80カードを製作したので、CP/M-80を自作して走らせてみようと考えました


今更8ビットのCP/Mでもないとは思いますが、大昔にFM-7のCP/MでTurboPascalを使用していたこともあり、Z80カードを製作したのを機会に、もう一度昔の環境を復活させてみたくなりました。

と言っても80系の経験はほとんどないので自力ではとても無理ですが、幸い手元には中日電工さんのND80Z3.5とCP/M互換DOSがありますので、当時中日電工の菱田さんがCP/M互換DOSを開発する一部始終を連載された2012年のブログを元にすれば作れるだろうと思いました。
(それに、実際の処理はFM-7のBIOSに丸投げすれば良いだろうという、甘い考えもありました。)

実際に取り掛かってみて、まず引っかかったのは機械語での6809とZ80の間の切り替えでした。何しろ、$FD05に1や0を書いて切り替わった後に、どこへ飛んでいくかも分かっていないという無知な状態からのスタートです。
前回報告したATmega2560カードで四苦八苦しながら得た経験もあり、手探り状態ながら少しずつ進んできました。

ND80Z3.5用のRAMディスク版は移植できた

現在は、菱田さんのブログにあるND80Z3.5の32KBのRAM上で動作するRAMディスク版のCP/MがFM-7のDISK BASIC上でとりあえず動いたという状態です。
下にメモリマップを示します。

メモリマップ

TPAがわずか700hという超ミニサイズのCP/Mです。
使用したCP/Mのソースは公開されているcpm2-asm.zip中のcpm22.z80です。菱田さんのブログの通りにソースのバグを修正し、CONSOLE I/OとRS232CルーチンだけをFM-7用に書き直し、RAMディスク関係はND80Z3.5版をそのまま使わせてもらいました。



動作画面

CP/M本体をロードしておいて、6809用のBIOSをロードして実行するとCP/Mが起動します。この状態ではRAMディスクの中身は空ですが、菱田さんのブログでの手法を真似て6809のBIOSの起動中にTPAにプログラムを書き込んでおき、起動後にSAVEコマンドで保存しています。DIR,SAVE,ERAコマンドが正常に動作しています。

フロッピーディスク版はまだ動かない

次の段階として、フロッピーディスクのアクセスルーチンを書き、ディスク関係のパラメータを書き換えてRAMディスクからフロッピーに切り替えてみましたが、今のところ正常に動作していません。
FM-CP/Mのディスクを入れてDIR A:やDIR B:とすると、ドライブのアクセスランプは点灯してディレクトリを表示しようとするのですがファイル名が表示されません。
原因はまだ掴めていません。セクタブロッキング・デブロッキングあたりではないかと予想していますがどうでしょうか。

という現状報告でした。

0 件のコメント:

コメントを投稿