2018年4月21日土曜日

FLEX用Virtual Driveの作り方

FLEX用のVirtual Driveを作るためには以下が必要です。
(1)FLEX側:FLEXシステムのDisk DriverルーチンをVirtual Driver用に修正。
(2)Windows側:FLEXからのコマンドを受信して、それに応じてセクターデータをRead,Writeするプログラム。

(1)FLEXシステムのDriverルーチンは6809用FLEX9の場合、READ,WRITE,VERIFY,RESTORE,DRIVE,CHKRDY,QUICK,INIT,WARM,SEEK
の9つからなりますが、重要なのはREAD,WRITEの2つです。その概念図を示します。
READルーチン
READルーチン


つまり、FLEXからREAD,WRITEのためのコマンド文字列を送ることで、それに応じてWindows側ではVirtual DriveにセットされているDSKファイル中のセクターが読まれてデータが戻ってくる、あるいはデータがセクターに記録されるというように動作します。
その他のルーチンは、Windows側だけで処理できます。
WRITEルーチン
WRITEルーチン









(2)Windows側のプログラムは、基本的には受信したコマンド中のドライブ番号、トラック番号、セクター番号に応じて該当のセクターを読み書きするだけで良いのです。

しかし、これだけではWindowsとのデータやプログラムのやり取りができず、実用的ではないので、別にWindows上で仮想ディスクファイルに対してdrag&drop等でファイルのやり取りをする専用のプログラムを作成して使用していました。
これを作るためにはFLEXのFMS(ファイルマネージメントシステム)とほぼ同様のものを実装する必要があり、試行錯誤しながら作成したので、まだ完全な段階ではありませんが、一応、動作しています。(これを作成するにあたっては、「ひっそりX1」さんのX1用のプログラムCPMforX1DiskExplorerのアイディアを参考にさせていただきました。感謝いたします。)

今回、シングルボードコンピュータを作成するにあたって、これらを統合したWindowsアプリを作成しました。それが4月16日に公開したブログに画像を載せたFlexDrvWinです。
(ブログを始めたばかりで、プログラムの公開方法がまだ分かっていません。分かり次第公開する予定です。)('18.5.3追記:GitHubに公開しました。)

0 件のコメント:

コメントを投稿