2013.4.26
前へ
次へ
ホームページトップへ戻る

復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります

[第380回]


●DIRコマンド

もう何回も書いておりますように、このところCP/M互換DOSの最後の仕上げ作業にかかっております。
ここ数日は特にCOPYコマンドの機能アップを中心に作業しています。
前回はそのCOPYコマンドを置くエリアが無くなってしまいましたので、ZBIOSの後ろに引越しをさせました、と書きました。
本日になりましてから、あらためてプログラムサイズを計算してみましたら、ぎりぎりですがなんとかZBDOSの中にはめこめそうでしたので、再度お引越しをいたしました。
やっぱりBIOSの後ろに置くというのはなんとなく気持ちが悪いものですから。
これで少しすっきりいたしました。

さてそのCOPYコマンドなのですが、RENコマンドとあわせて、なんとか当初の目標としておりましたところまでの機能アップはだいたいできたようです。
まだもう少し詳細にテストをしてみなければいけませんが、新たに構想がまとまったものですから、本日はそれに向けての作業に着手いたしました。
あ。
最終的にはCOPY機能の一段のアップを考えております。
それに向けての準備作業です。

CP/M互換DOSではA〜Dの4つの仮想FDDを使います。
それはWindowsから見ればただのバイナリファイルです。
A.VFD、B.VFD、C.VFD、D.VFDというファイル名ですが、バイナリファイルですからWindowsの通常のアプリケーションでは開くことはできません。
CP/M互換DOSに同梱する予定のVFDUMP.EXEを使うと、ファイルの中をセクタ単位でダンプ表示させることができます。

この仮想FDDはCP/M互換DOSからはディスクドライブとして見えますから、DIRコマンドでそこにセーブされているファイル名を確認したり、REN(ファイル名の変更)やERA(ファイル削除)を行なったり、またトランジェントコマンドとしてCOMファイルをトランジェントエリアにロードして実行したりすることができます。

Windowsのフォルダからその仮想FDDにファイルをコピーするための機能としてCOPY Zというコマンドを作りました。
その機能を使えばWindows上のファイルを仮想FDDにコピーすることができますから、当初はそれでいくつもりでおりました。
しかし、COPYの機能をアップしてきますと、どうにも現行のCOPY Zがみすぼらしいのでありますね。

これは当初からなんとかしたいと思ってはいたのですが、なかなかうまい方法を思いつかなくてずっとそのままで来ておりました。
それが、このところの作業をやっておりますなかで、だんだんと頭の中が整理されてきまして、おお、なんとかなるじゃないの、という気がしてまいりました。

せっかくの仮想FDDですものねえ。
やりたかったのは、こういうことです。
現行のCOPY Z の機能はたとえば次のように使います。
A>COPY Z:ABC.XYZ
このようにしますと、Zフォルダ(実はCP/M互換DOSのあるWindowsのフォルダ)上のABC.XYZをカレントドライブ(この例ではAドライブ)にコピーします。

これは一見すると
A>COPY B:ABC.XYZ
と全く同じようなのですが、中身は全く全然別のプログラムが動いています。

当たり前といえば当たり前なのですが、ZフォルダはAドライブ〜Dドライブとは全く異なるフォルダなのですから、同じようにアクセスするわけにはいかないのです。

しかし。
本当に同じようにアクセスはできないのか?
もとはといえば、COPYコマンドも仮想FDDにアクセスするためにはファンクションコールを使ってアクセスしています。
そのファンクションコールはといいますと、BIOSををコールしてその機能を実現しています。
そしてBIOSはといいますと、実は仮想FDDへのアクセスはWindows側に置かれた32bitアプリケーション(ZB3DOS.EXE)に働きかけて、そこからセクタ単位のデータを得ています。
え…と。
わかりにくいかも知れませんが、CP/M互換DOS本体は、ND80ZV(ND80Z3.5)のRAMにロードされてそこで実行される純粋の8ビットZ80プログラムです。

さてそういうことになりますと、そのZBDOS〜ZBIOS〜ZB3DOS.EXEを工夫すれば、WindowsフォルダがCP/M互換DOSから見て、他のAドライブ〜Dドライブと同じ仮想FDDのZドライブのように見せることもできるのではないだろうか?

という思いつきのもとに、本日は早朝から、さっそくその作業にかかりました。
言うは易く行なうのは難いものでありまして、なかなかそうは簡単ではありませんが、やっととりあえずZドライブのファイル名だけはCP/M互換DOSで取得できるところまでできました。
なお、当初は「Zドライブ」はCP/M互換DOSのあるフォルダ(つまりND80Z3フォルダ)を意味していましたが、そのままでは考えが混乱してしまいそうですので、A.VFD〜D.VFDに並べて、「Z」という名前のフォルダを作ることにしました。
このZフォルダもCP/M互換DOSの最初のインストール起動時に自動的に作成されます。

下はCP/M互換DOSの上でZドライブに対してDIRコマンドを実行したところです。


ここではテスト中ですのでZB3DOS.EXEは¥ASM¥ZBDOSにあります。
そこに作ったZフォルダにあるファイル名をCP/M互換DOSのDIRコマンドで表示させることができました。
まずは、はじめの一歩は成功です。

ワンボードマイコンでCP/Mを![第380回]
2013.4.26upload

前へ
次へ
ホームページトップへ戻る