更新日: 2011 年 11 月 15 日
SEEKPAT.X の説明
説明
SEEKPAT.X の添付ドキュメントです。
SEEKPAT.DOC
────────────────────────────────────
SEEKPAT version 1.10 1996 M.Kamada
────────────────────────────────────
□これは何?
このプログラムは、各種 CD-ROM デバイスドライバのバグをフィックスするも
のです。
CD-ROM デバイスドライバのシークルーチンにはバグが存在し、Human68k の仕
様を満たしていません。また、ファイルの読み込みもパラメータによって不安定
になることがあります。
これらのバグのため、データファイル等が CD-ROM 上に存在するときだけ正常
に動作しないアプリケーションが出てきてしまいました。例えば「すてきな電脳
倶楽部」に収録されているRPGシステム「レイカ」が正常に動作しません(な
お、「すて電」では CDPAT.X という常駐プログラムの機能の1つでこのバグを
回避しています)。また、「すごい電脳倶楽部」に収録されているシューティン
グゲーム「ANGEL DIVE」も誤動作してしまいます。
□バグって、何のこと?
SEEKPAT.X は今のところ2つのバグを回避します。
1つ目のバグの内容は簡単です。CD-ROM デバイスドライバだけ、シークコマ
ンドのモード2で、ファイルの末尾からのオフセットの符号を Human68k の仕様
とは逆に解釈してしまうのです。つまり、正のオフセットを指定するとファイル
の先頭の方向にポインタが移動し、負のオフセットはエラーになってしまいます。
2つ目のバグは、CD-ROM からファイルを読み込むとき、ファイルサイズに符
号つきで解釈すると負数になる値を指定すると動作が不安定になるというもので
す。
本来はドライバを修正して解決されるべき問題ですが、既にフリーソフトとし
て公開されている各 CD-ROM ドライバも計測技研製のドライバに合わせて間違っ
た仕様になってしまっており、今更全部修正していただくのも大変なので、簡単
なパッチをあてて使うことにしました。将来、ドライバが修正されることがあれ
ば、このプログラムは不要になります。
□どうやって使うの?
SEEKPAT.X は常駐プログラムです。AUTOEXEC.BAT の先頭などで組み込んで使
用して下さい。CD-ROM デバイスドライバよりも前に組み込んでも構いません。
組み込みは、通常、
────────────────────────────────────
A>seekpat -d
seekpat: 常駐しました
────────────────────────────────────
として下さい。
CD-ROM 用に作られたプログラムの中には、シークコマンドのモード2のオフ
セットをわざわざ正の値にしてしまっているものがあるかも知れません(未確認)。
上記の方法で SEEKPAT.X を組み込むと逆に動作しなくなるプログラムがある場
合は、
────────────────────────────────────
A>seekpat -c
seekpat: 常駐しました
────────────────────────────────────
として組み込んで下さい。この場合は、シークコマンドのモード2で、オフセッ
トの符号に関係なく、ファイルの先頭の方向にポインタが移動するようになりま
す。
常駐解除は、
────────────────────────────────────
A>seekpat -r
seekpat: 解除しました
────────────────────────────────────
です。
パラメータなしで実行すると、使い方が表示されます。
────────────────────────────────────
A>seekpat
SEEKPAT version 1.10 1996 M.Kamada
機能: CD-ROMデバイスドライバのバグ対策
(1) ファイル末尾から負のオフセットで手前に戻るシークを修正します
(2) ファイル読み込みサイズが負数で指定されたとき正数に変更します
使用法: seekpat [-cdr]
-c ファイル末尾から正のオフセットで手前に戻るシークを許可します
-d 〃 禁止します(標準)
-r 常駐を解除します
────────────────────────────────────
□動作内容とか
シークについては、シークコマンドのモード2が指定されたら一旦オフセット
0でファイルの末尾をシークしてから、モード1を使って目的の位置をシークす
るようにしています。また、ファイルの読み込みについては、サイズの指定が符
号なしで $00FFFFFF よりも大きいときだけ、サイズを $00FFFFFF に変更して読
み込むようにしています。以上の動作は CD-ROM 上のファイルかどうかに関係な
く行われます。ただし、CD-ROM を使用していなければ意味がありません。
フックしているベクタは DOS コールの _SEEK と _READ だけです。他の常駐
プログラムとベクタが衝突することはほとんどないと思います。
□読んでね
SEEKPAT.X は正常に動作することを望んで作成されていますが、無保証です。
SEEKPAT.X の不具合によって何らかの損害が発生したとしても、その大小に関わ
らず、使用者の責任とさせていただきます。
配布は自由です。改変した場合はその旨を明記して下さい。
SEEKPAT.X に関する連絡先は以下の通りです。
E-mail: m_kamada@nifty.com
(EOF)