WindrvXMエミュレータ拡張ドライバ
WindrvXM version 0.27

概要

 本プログラムは、X68000のエミュレータ上で動作しているHuman68kから、ホスト側のファイルシステムを直接操作するためのデバイスドライバです。
 XM6で新たに設計されたWindrvXM方式に対応しています。ホスト側のファイルシステムへのアクセスに時間がかってしまうような状況下でも、VM側の長時間停止が発生しないよう改良されています。
 状況に応じて自動的にWINDRV互換ドライバとして動作するので、XM6以外のエミュレータでも利用可能です。
 また、実機で動かした場合はドライバを登録せずに終了するようになっているため、実機と仮想マシンの両者で共通の設定(ディスクイメージ等)を用いた運用が可能です。

解説

 利用するには、まずエミュレータ側の設定を変更してWindrvXMデバイスを有効化する必要があります。
 XM6の場合は、INIファイルの[WINDRV]セクションにEnable=1と書いてから起動してください。
 XM6 TypeGの場合は、設定でWindrvXMデバイスを有効化してください。ベースパス登録部分は個数0の空欄のままで問題ありません。(空の場合、ホスト側の全てのドライブが対象となります)

 次に、デバイスドライバWindrvXM.SYSを各自の環境にコピーします。
 WindrvXM.SYSの入ったディスクイメージを用意してありますのでエミュレータにマウントしてそこから読み込んでください。

 あとはCONFIG.SYSの後半部分に以下のように記述してください。
 TwentyOneよりも後に組み込むことで最も効率良く動作します。
 hsiplやHBOOT等の高速ブート関連ドライバよりも後に組み込むことを推奨します。

DEVICE = \SYS\WindrvXM.SYS

 最新のWindrvXMデバイスでは起動オプションは不要です。
 設定の詳細についてはXM6pの解説を参照してください。

竹輪

 「無いものは作る」という素晴らしいX68000文化の普及に役立つことを願い、私が作成したWindrvXMに関するプログラムおよびドキュメントはすべてCC0 PUBLIC DOMAINとします。自由にご活用ください。

履歴

2006.02.17 version 0.01

 ひとまず実装。

2006.02.18 version 0.10

 VM側の処理を高速化。
 WINDRV互換モードを追加。

2006.02.23 version 0.11

 登録時にCTRLキー押下することでWINDRV互換モードで動作するよう変更。

2006.03.19 version 0.20

 XM6の場合、ドライバ組み込み時にバージョン番号を表示するよう変更。
 複数のスレッドがWindrvXMポートに同時にアクセスすると、ハンドルの管理に失敗することがある問題を修正。
 上記修正のために動作シーケンスを変更。WindrvXM.SYS version 0.20より古いドライバは正常に動作しなくなったので注意。ドライバ移行時はCTRLキー押下で互換モードを使うとよい。
 WINDRV互換ポートのないXM6でも動くよう、全てWindrvXMポートのみを利用して動作可能となるよう変更。

2006.03.19 version 0.21

 version 0.20のCTRL押下処理がエンバグしていたので修正。暫定処置として自力でバスエラーベクタを操作して調査するよう修正した。
 XM6の後のバージョンでWINDRV互換のコマンド実行ポートが削除された機種が出現した場合、互換ポートへの書き込みはバスエラーを起こさない仕様とする。
WINDRVの仕様上、コマンド実行ポートがバスエラーを起こすかどうかを確認するのにDOSコールを使えない。そのため、バスエラーベクタを書き換えて自力で調査しなければならず、バランスが悪いため。

2006.03.19 version 0.22

 バスエラー確認処理をDOSコールに戻した。

2006.03.20 version 0.23

 XM6のバージョン表示が間違っていたバグを修正。

2006.04.06 version 0.24

 コマンドポート1に値を書き込むのにCLR.BではなくMOVE.Bを使うように変更。68010までのMPUの仕様では、CLR命令でメモリへのリードアクセスが発生するため、将来問題となる可能性があるため。

2006.04.24 version 0.25

 デバイスドライバヘッダを修正し特殊IOCSコールを有効化。
 コマンドポート1に値を書き込むのにScc.B命令を使うように変更。
 ハンドル最大数を半分(約2億個)に減らして高速化。

2014.09.01 version 0.26

 ホスト側のファイルシステムの同期処理の動作クロック削減。
 デバイスドライバの登録失敗時に正しく結果を返さないバグを修正。
 処理の見直しによるコードサイズ縮小。

2014.09.03 version 0.27

 XM6のバージョン表示をBCDに変更。
 処理の見直しによるコードサイズ縮小。

co (Twitter)

inserted by FC2 system