概要
NEC PC-98シリーズ及びEPSON互換機(以下98と記述)でUSBキーボード、マウス、ゲームパッドを使用するための変換アダプタです。
既存製品に対しての優位性
※既存製品の公開されている仕様、マニュアルなどと比較した結果です。
- 1つの変換アダプタで98のキーボード、バスマウス、シリアルホイールマウスに対応
- USB HID複合デバイスが使用可能
- USB HUBおよび複数のUSB HIDデバイスの接続に対応
- テンキーレスキーボード、US104キーボードでもそれなりに使用可能
- USBゲームパッドに対応
- 98の電源ON後0.5秒程度で使用可能(電源ON直後にHELPキーを押すことが可能)
- 変換アダプタサイズがコンパクト(製作例の場合)
仕様
共通
- 電源供給:98のキーボード、マウスコネクタから供給
ファームウェアアップデート時はUSBコネクタから供給
- 消費電力:TBD
USB
- ホスト機能(変換アダプタとして使用する場合)
- USB2.0 Full-speed/Low-Speedデバイスに対応
- USB HID複合デバイス対応
キーボード、マウス、ゲームパッドを内包するインターフェース2つまで認識可能
1インターフェース内にキーボード、マウスが両方存在するデバイスにも対応
1デバイス内に複数の同一デバイスタイプ(キーボードなど)が存在する場合は最初に検出されたもののみ使用可能
- USB2.0 Low-Speed HUB1台 ダウンストリームポート最大4ポートに対応
セルフパワーHUBの使用を推奨
- ホットスワップ対応
ただし挿抜タイミングによってはUSBデバイスの初期化に失敗する場合あり
- 複数の同一種類デバイスの接続と使用が可能
- デバイス機能(ファームウェアアップデート時)
- USB 2.0 Full-speed HIDデバイス
VID:04D8 PID:003C
キーボード
- Windowsキーが付属するPC-9821系キーボード(NEC CMP-6D0Y7等)をエミュレーション(しているつもり)
- USBキーボードのキー割り当て
- USBキーボードのLED
- Num Lock:Num Lock時点灯、config mode時点滅
- Caps Lock:CAPSロック時点灯、config mode時点滅
- Scroll Lock:カナロック時点灯、config mode時点滅
- 最大6キーロールオーバー(Shift,Ctrlなどのキーを除く)
- 98の/RTY信号アサート時の再送信未対応
- キーリピート時のディレイ、リピート間隔設定可能
バスマウス
- L/M/Rの3ボタンの信号を出力
- カーソル移動倍率設定可能(感度はUSBデバイス側に依存)
シリアルホイールマウス
- Microsoft Serial IntelliMouseをエミュレーション
- 98にはL/M/Rボタンおよびホイールスクロールの信号のみ出力
- ホイールスクロール倍率設定可能
ゲームパッド
- ゲームパッド入力はキーボード入力に割り当て
キー割り当ては変更可能
キーボードがマウスモードの場合は、マウス入力にすることも可能
- 最大12ボタンまで対応
- アナログ入力非対応
既知の問題点
- 認識できないHIDデバイスがある
デバイスからのデスクリプタ取得時に未応答になるケースが大半、原因未特定
- 使用するマウスによって入力の遅延が発生する
原因は高DPIマウスの場合にバスマウスのパルス出力を処理しきれないため(ファームウェアの改良で解決できる見込み)
- インターフェース1のパケットを取りこぼす場合がある
ファームウェアの設計上の問題の可能性が高い、改良予定あり
製作
ハードウェア
回路図
ファームウェア
※usb hid bootloader firmwareをPICKIT等で書き込んだ後に、使用方法のファームウェアアップデートの手順でNYA-USB98KBWM firmwareを書き込む
製作例
製作例
使用したDSUBコネクタフードはCANFORD 44-076でUSBコネクタとBOOTスイッチ部分を追加工。OMRON XM2S-2521でもよかったはず。
使用方法
- 変換アダプタ接続
- 98に変換アダプタを接続する
- 変換アダプタに使用するUSBデバイスを接続する
USB HUBを使用する場合はセルフパワーHUBを接続して、98より先に電源をONにしておく
- 98の電源をONにする
キーボード、バスマウス入力はそのまま使用可能(US104キーボードはキーレイアウトの設定のみ必要)
- シリアルホイールマウスを使用する場合はMS-DOSでP2BWHLを使用するか、WindowsでMicrosoft Serial IntelliMouse用のドライバをインストールする
- 変換アダプタ設定
- テキストエディアを起動した状態でキーボードの「Scroll Lock」を押すとconfig modeになる
config modeを抜けるには、再度「Scroll Lock」を押す
- config modeでのコマンドと設定項目
- Esc コマンドヘルプ表示
- Home/End RAMからNVRAMへの設定保存、呼び出し
- Alt+0 現在の設定にデフォルト設定を読み込み
- Alt+1-9 選択したRAM設定を現在の設定に読み込む
- Shift+1-9 現在の設定を選択したRAM設定に保存する
- Ctrl+1-9 起動時に読み込むRAM設定を指定する(保存先はRAM設定)
※設定の関係
NVRAM設定<>RAM設定(No1-9)<>現在の設定
Alt,Shift,Ctrl+1-9でRAM設定と現在の設定をやり取りし、Home/EndでNVRAMとRAM間で設定のやり取りを行う
電源OFFでも保持されるのはNVRAM設定のみ
- F1 config modeでのメッセージ表示/非表示切り替え
- F2 現在の設定表示
- F3 USBデバイスリスト表示
- F5 キーボード:レイアウトJP109/US104切り替え
- F6 キーボード:R-Ctrlのシステムキー有効/無効切り替え
- F7 キーボード:NumLockの起動時ON/OFF切り替え
- F9 キーボード:VF1-5のF1-5への割り当てON/OFF切り替え
- F10 キーボード:マウスモードON/OFF切り替え
- F11 キーボード:キーパッドモードON/OFF切り替え
- F12 キーボード:NFER,XFERなどUS104で不足するキーの割り当てON/OFF切り替え
- q/a キーボード:キーリピート速度設定
- w/s キーボード:キーリピート遅延時間設定
- y/h マウス:マウス移動倍率設定
- u/j マウス:ホイールスクロール倍率設定
- o ゲームパッド:キー割り当て設定
- l ゲームパッド:十字キーセンターキャリブレーション
- キー割り当て変更機能
- config modeでF9-F12をONにした場合常時有効となる
R-Ctrl+Shift+F9-F12でOFFにすることはできない
- R-Ctrl+F9-12は一時設定となり、config modeに入るか電源をOFFするとリセットされる
- ファームウェアアップデート
- MICROCHIP AN1388 PIC32 BootloaderのAN1388 Source Codeをダウンロードする
(アーカイブ内のPIC32UBL.exeが必要となる)
- USB A-Aケーブルを準備する
本来USBの規格にない接続形態だが、KU-RAA、USB A-Cケーブル+U32AC-MFAD などを使用する
- 変換アダプタを98から取り外す
- BOOTスイッチを押しながらUSB A-AケーブルでWindows PCと接続する
正常に接続できた場合、デバイスマネージャで「USB 入力デバイス」と認識されている
- PIC32UBL.exeでファームウェアを変換アダプタに書き込む
以下はPIC32UBL.exeを起動した後の操作
- USB Enableをチェックする
- Connectで変換器と接続する
- Load Hex Fileでアップデートするファームウェアを読み込む
- Erase-Program-Verifyでファームウェアを書き込む
ログにエラーが出ていないことを確認する
- Disconnectで変換アダプタとの接続を解除する
- 変換アダプタからUSBケーブルを抜く
※ファームウェアアップデートを行うと、保存してあるNVRAM設定は全て初期化される
USBデバイス動作確認リスト
開発の参考にしたもの
8251相当のCCUでシリアルホイールマウスを使用する場合の問題点と対策
ぐぐると発生する問題と対策がいくつか見つかる。
EPSON PC-586RAとWindows98SEおよびWindows98SE付属のシリアルホイールマウスドライバの組み合わせの場合は、Windows起動時にシリアルホイールマウスのドライバが読み込まれるとWindowsがフリーズするので、以下のようにWindows起動時にはシリアルホイールマウスがなく、起動後にPnPによりシリアルホイールマウスドライバが読み込まれるようにした。
- Logoff ScriptでバッチファイルをWindows終了時に実行する
- バッチファイルの内容はREGBATでデバイスマネージャに登録されたシリアルホイールマウスを削除するもの
- バッチファイル内容例
regbat.exe DS LM "System\CurrentControlSet\Services\Class\Mouse" "0001"
regbat.exe DS LM "Enum\SERENUM" "MSH0001"
Contact
ovfpwg(at)gmail.com