create.soft/469/1-13,23-24,27 uu giso003a.lzh 98 DOS で USBASPI.SYS を使ってみる試みです。 具体的には Panasonic KXL-CB20AN を 98 DOS で使えるようにします。 USBASPI.SYS にはバージョンやメーカーの違いがありますが、 NOVAC,LECS,NEC 等の USBASPI.SYS も何とかなるかも知れません。 ---- 当方の環境は、 本体 NEC PC-9821RvII26/N20 OS NEC MS-DOS 6.20 USB I/F BUFFALO UCI2-P2 USB 機器 Panasonic KXL-CB20AN USB ドライバ Panasonic USBASPI.SYS 2.20 Panasonic USBCD.SYS 1.00 です。 ---- それでは本題です。 USBASPI.SYS の組み込み時に98本体をAT互換機っぽく擬装し、 USBASPI.SYS がそのまま組み込まれるようにします。 ---- つまり、 config.sys |LASTDRIVE=Z |DEVICE=HIMEM.SYS ←任意 |DEVICE=擬装.COM 開始 ←擬装開始 |DEVICE=USBASPI.SYS |DEVICE=擬装.COM 終了 ←擬装終了 |DEVICE=USBCD.SYS /D:USBCD001 autoexec.bat |MSCDEX /D:USBCD001 という流れになります。 ---- EMM を併用しない場合でも、 安全のため、XMS ドライバは必ず組み込むようにして下さい。 XMS ドライバを組み込まない場合、 拡張メモリの取得が INT-15h AH=88h 経由になりますが、 PC-98x1 のようにシステム共通域で管理するのとは事情が異なります。 USBASPI.SYS が INT-15h AH=88h をフックするので、 もし偶然 AH=88h でマウス割り込みが発生したりすると危険です。 ---- USBASPI.SYS の組み込み時に必要な擬装は、 ・タイマカウンタ 0:046Ch-046Fh 必須 [*1] ・VDS フラグ 0:047Bh bit5 必須 [*3] ・INT-13h AH=08h 必須と思えないので無視 [*2] ・INT-15h AH=87h 必須(EMM 併用時) [*2] ・INT-15h AH=88h 必須(XMS 無時) [*2] ・INT-15h AX=2401h 必須(A20 無効時) [*2] ・INT-10h AH=0Fh FEh 必須(日本語化時) [*1] です。 USBASPI.SYS の種類により必要な擬装は異なります。 [*1] Panasonic,NOVAC,LECS,NEC [*2] Panasonic [*3] NOVAC,LECS,NEC ---- タイマカウンタはカレンダ時計割り込みの半分 16Hz で誤魔化します。 ---- タイマカウンタ、VDS フラグの位置は、 PC-98x1 は「SCSI ID #3 #6 のパラメータテーブル」なので、 擬装開始後すみやかに擬装終了しましょう。 擬装終了しないまま、HSB 等で高速再起動した場合、 HDD の固定ディスク起動メニューが意味不明な SCSI 装置を探そうとして もたついたりします(たぶん)。 安全のため「SCSI ID #3 #6 のパラメータテーブル」が全て 0 の場合のみ擬装するようにしています。 つまり、SCSI ID #3 #6 に接続機器がある環境では擬装しません。 ---- INT-15h AH=87h は、INT-1Fh AH=90h に変換して擬装します。 EMM の INT-1Fh AH=90h のエミュレーションが、 搭載メモリのリミットを越えたアドレスで転送エラーや例外にならず、 物理アドレスにアクセスする仕様であることが必要です。 NEC 版 EPSON 版 MS-DOS 6.20 付属の EMM386 は大丈夫そうです。 EMM386 以外の一般的な EMM は残念ながらそういう仕様ではなさそうです。 LEMM は 4.04b 以降で IO90 を指定すればいけます。 追記 5.01a 以降は IO90 がデフォルトになりました。 ---- EMM の INT-1Fh AH=90h のエミュレーションを使わずに、 本来の BIOS の INT-1Fh AH=90h を使えばいろいろいけそうです。 つまり、 INT-1Fh AX=8C00h ↓ リアルモード ↓ INT-1Fh AH=90h ↓ INT-1Fh AX=8B00h ↓ 仮想86モード というように実行することで、 EMM386 VMM386 MELEMM VEM486 + VEMWINX LEMM 4.04a 以前(NOIO90 同様) はいけそうです。 追記 LEMM で 2nd CPU (AP) が有効な場合、USE8B8C (RM) には L2.com が必要です。 ---- それぞれの擬装する/しないはオプションで個別に設定出来ます。 * がデフォルトです。 開始 擬装開始 BEGIN 〃 ON 〃 終了 擬装終了 END 〃 OFF 〃 * INT15 INT-15h 擬装する NOINT15 INT-15h 擬装しない * A20 INT-15h AX=2401h 擬装する NOA20 INT-15h AX=2401h 擬装しない * VDS VDS フラグ擬装する NOVDS VDS フラグ擬装しない * TIMER タイマカウンタ擬装する NOTIMER タイマカウンタ擬装しない * SAFETY 擬装が USBASPI.SYS 以外に影響しないよう努力する NOSAFETY あまり努力しない USE8B8C リアルモードに戻る RM 〃 * NOUSE8B8C リアルモードに戻らない * NORM 〃 * CHECKXMS XMS ドライバ存在チェックする NOCHECKXMS XMS ドライバ存在チェックしない XMS ドライバ無時 → INT-15h AH=88h 擬装必須 JAPANESE 日本語化する → INT-10h AH=0Fh FEh 擬装必須 JA 〃 * NOJAPANESE 日本語化しない * NOJA 〃 15F5 INT-15h を INT-F5h にパッチする * NO15F5 INT-15h を INT-F5h にパッチしない ---- なお、INT-15h の擬装が必要な USBASPI.SYS の場合、 USBASPI.SYS を組み込んだ後の動作にも INT-15h の擬装が必要なため、 擬装終了後も、INT-15h の擬装だけは続けます。 INT-15h の擬装を止めたい場合は NOINT15 を指定して下さい。 ※擬装 v0.03a で追加した 15F5 について 擬装開始時に 15F5 を指定すると、 組み込んだ USBASPI.SYS が呼び出す INT-15h を INT-F5h にパッチし、 INT-15h のファンクションを INT-F5h で呼び出させます。 (CD 15 → CD F5) 擬装終了時に INT-15h の擬装は自動的に止まります。 マウス割り込みとの共存に安心感が増すので、15F5 をおすすめします。 おすすめならデフォルトにすればよいのでは? いえ、擬装.com は当初高らかにパッチしないぞ宣言しておりますゆえ(^^; (ZOB Station BBS create.soft Note 469 Res 2) |