Image: USBマウス非対応MBのDOS/VでUSBマウスを使う [DOS]

そもそもCuteMouseドライバーをDOS/Vに移植しようと思ったきっかけは、かつて中古で山ほど出回っていたPS/2マウスもいよいよ骨董品になってきて、何か代替の方法はないかなー。というところからスタートした。

FreeDOSのCuteMouseドライバーは公称で「USBマウスをサポート」とあるが、CuteMouse自体はマウスと直接通信しているわけではなく、BIOSの割り込み機能 (INT 15h) を使用している。よって、そもそもCuteMouseにUSBマウスをサポートするための特別なドライバーが含まれているわけではなく、サポートの程度はマザーボードのBIOS次第ということになる。

+---------------+
|  Application  |
+---------------+
       ^
       | INT 33h
       v
+---------------+
|    CTMOUSE    |
+---------------+
       ^
       | INT 15h, AH=C2h
       v
+---------------+       +--------------+
|    M/B BIOS   | <---> |USB Controller| <---> (USB Mouse)
+---------------+       +--------------+
  ^           ^
  | IRQ 12    | I/O 60h,64h
  |(INT 74h)  v
+---------------+
|8042 controller| <---> (PS/2 Mouse)
+---------------+

私のASUS P2BではUSBキーボードは使えるんだけど、USBマウスは使えなかった。そこで、Bret Johnsonn’s DOS USB Driversを併用してみた。このドライバーはIntelかVIA製チップセットに使われているUHCI (USB 1.1) コントローラーを備えている必要があるが、今回のASUS P2BにはサウスブリッジのIntel PIIX4チップセットにUHCIコントローラーがあるので動作対象のはず。USBマウスはLogicool G502 HEROを使った。

USBホストコントローラーのドライバー (USBUHCIL) を導入するとBIOSのレガシーUSBサポートが無効になるため、そのままではUSBキーボードも使用できない。そのため、USBUHCILとUSBKEYBを自動で続けて導入できるように、予めバッチファイルを用意する必要がある。USBUHCILに/DISABLELEGACYスイッチを付けると、実行時の警告メッセージを非表示にできる。

UMBメモリーはセグメントC800-DFFFhまで96KBを確保したが、USBUHCILがかなり容量を取る。CD-ROMドライバーは入ったので、後はMSCDEXを入れたいところだが、残りは6KB程度しかなく、これ以上詰め込むのは厳しい。かな入力をあきらめて$IAS.SYSを抜けば、入るかもしれない。

USBKEYBを入れるとキーリピートが利かない。ドライバー付属のドキュメントには、キーリピートの速度はMODE CONコマンドで変更できると書かれているが、これを実行すると「この機械では使用できない機能です」というメッセージが出て、拒否される。ゲーム用途にはかなり不便だ。PS/2キーボードは変換コネクターでまだ当分現役だろうから、これを使った方が良い。

日本語、英語ともたいていのDOSアプリケーションはマウスを使えたが、DOS文書プログラムはUSBキーボードと相性が悪いのか、一部のキーが使えない不具合があった。Windows 3.1日本語版は起動中に異常終了した。

使用したバッチコマンドと実行時のメッセージ出力は次の通り。

C:\>USBDOS\USBUHCIL /DISABLELEGACY
USBUHCIL 0.14, (C) 2007-2010, Bret E. Johnson.
DOS Driver for a Universal HCI compatible USB Host Controller.
  LITE version (maximum 16 Devices, no Isochronous Transactions).

Initializing Universal Host Controller #0.  This may take several seconds...

USBUHCIL has been automatically installed into Upper Memory.
Type "USBUHCIL U" to Uninstall USBUHCIL from memory.

C:\>USBDOS\USBKEYB
USBKEYB 0.09, (C) 2007-2009, Bret E. Johnson.
DOS Driver for up to 4 USB Keyboards.

USBKEYB has been installed into Low Memory.
Type "USBKEYB U" to Uninstall USBKEYB from memory.
C:\>USBDOS\USBMOUSE
USBMOUSE 0.13, (C) 2007-2019 Bret E. Johnson.
DOS Driver for up to 8 Generic USB Mice.

Locating and Resetting the PS/2 Mouse (this may take several seconds) ...

USBMOUSE has been installed using the following memory allocation:
  Conventional (Low) Memory         :     0 bytes
  Upper Memory (UMBs)               :  2688 bytes
  Expanded Memory (EMS)             : 16384 bytes
  Extended Memory (XMS)             :     0 bytes
  DOS Protected Mode Services (DPMS):     0 bytes

Type "USBMOUSE /U" to Uninstall USBMOUSE from memory.

C:\>CUTEMOUSEV

CuteMouse v2.1 b4V01 with DOS/V support
Installed at PS/2 port

MEM /Cの実行結果。

基本メモリー:

  名前                サイズ(10進数)       サイズ(16進数)
-------------      ---------------------   -------------
  IBMDOS             15984      ( 15.6K)       3E70
  $FONT               2608      (  2.5K)        A30
  HIMEM               1072      (  1.0K)        430
  EMM386              4240      (  4.1K)       1090
  COMMAND             4208      (  4.1K)       1070
  - 空き -              64      (  0.1K)         40
  - 空き -          626960      (612.3K)      99110

  空きメモリー:    627024      (612.3K)

UMB メモリー:

  名前                サイズ(10進数)       サイズ(16進数)
-------------      ---------------------   -------------
  SYSTEM            170032      (166.0K)      29830
  $DISP              19040      ( 18.6K)       4A60
  $IAS                7072      (  6.9K)       1BA0
  CDROMDRV            7520      (  7.3K)       1D60
  KEYB                5904      (  5.8K)       1710
  USBUHCIL           29696      ( 29.0K)       7400
  USBKEYB             9168      (  9.0K)       23D0
  USBMouse            2672      (  2.6K)        A70
  CTMOUSEJ            4032      (  3.9K)        FC0
  - 空き -             272      (  0.3K)        110
  - 空き -            6544      (  6.4K)       1990

  空きメモリー:      6816      (  6.7K)

プログラムへの使用可能全バイト数(基本+UMB) :                  633840   (619.0K)
実行可能プログラム最大サイズ :                                626672   (612.0K)
使用可能最大 UMB メモリー :                                     6544   (  6.4K)

   4587520 バイト :全 EMS メモリー
   4128768 バイト :使用可能 EMS メモリー

  67043328 バイト :全拡張メモリー
         0 バイト :使用可能拡張メモリー
  14874624 バイト :使用可能 XMS メモリー
                     DOS は HMA 領域に常駐しています

CONFIG.SYSの内容

BUFFERS=15
FILES=40
STACKS=9,256
DOS=HIGH,UMB
LASTDRIVE=F
COUNTRY=081,932,C:\DOS\COUNTRY.SYS
SHELL=C:\DOS\COMMAND.COM /P /E:512
DEVICE=C:\CTCM\CTCM.EXE
DEVICE=C:\DOS\$FONT.SYS /U=0
DEVICE=C:\DOS\HIMEM.SYS
DEVICE=C:\DOS\EMM386.EXE 4096 RAM /I=C800-EFFF /PE000
DEVICEHIGH=C:\DOS\$DISP.SYS /HS=ON
DEVICEHIGH=C:\DOS\$IAS.SYS /R=1
rem DEVICEHIGH=C:\DOS\ANSI.SYS
rem DEVICE=C:\DOS\$IAESKK.SYS
rem DEVICE=C:\DOS\$PRNESCP.SYS
DEVICEHIGH=C:\CDDRV\CDROMDRV.SYS /D:MSCD001 /V /B
rem INSTALL=C:\DOS\IBMMKKV.EXE /M=S /Z=4 /C /S=C:\DOS\$MULTDCT.PRO /U=C:\$USRDICT.DCT

※コメント欄が表示されない場合はdisqusについてJavascriptが有効であることを確認して下さい。コメントはスパム防止フィルターによる承認制のため、投稿してもすぐに反映されない場合があります。

管理人 : Akamaki (akm)

は、PCとVTuberに夢中になっている電気技術者です。

私はレトロコンピューティングの愛好家ですが、そのようなリグはもう収集していません。

私の活動はトップページで見ることができます。読んでくれてありがとう!