NEC PC-6001mkⅡ でUSBキーボードとUSBゲームパッドを使う


初代PC-6001でカーソル To TOWNS仕様ジョイスティックを行った際、PC-6001mkⅡでUSBキーボードを使うのは簡単だと書きましたが、実際にやっていないのにそう書いたのは無責任なので試してみました。

ところが、一応うまくいったのですが恐ろしく大変でした。
簡単だなんて書いてしまい、本当にごめんなさい。

ということでPC-6001mkⅡ用USBコンバーターの紹介です。
まずはPC-6001mkⅡを用意しますが、USB化の前に本体のメンテナンスを行います。



分解が初代PC-6001よりも難しくなっていますね。
先日、プレステ2 SCPH-50000 のバッテリーを交換したのですが、たかがCR2032を1つ換えるのにメインボードまで取り出さなければならず、全分解する羽目になりました。
それに比べたら楽な部類に入りますが。



メインボードのコンデンサを全交換します。
電解コンデンサはニッケミKMGに換えました。
問題のディップタンタルコンデンサですが、在庫があったので今回は新品のディップタンタルに交換しましたが、代わりに電解コンデンサを使っても特性が近いので大丈夫だと思います(初代PC-6001で確認済み)。
NECのパソコンはPC-9801DX/DS/DAの頃まで長年ディップタンタルを使い、PC-9801FX/FS/FAからいきなり4級塩にシフトしましたが、これはディップタンタルの特性が素晴らしかったからではなく、単なる政治的な理由だと思います。
当時、NECはディップタンタルを製造していて社内調達が可能でしたが、電解コンデンサはマルコンやニチコンなどから購入しなければいけなかったため、コスト的にも不利だったのでしょう。
当時のディップタンタルの最大容量は22μFぐらいだったので小容量はディップタンタルを、100μFや470μFなどの大容量の場合は仕方なく社外電解コンデンサを使っていたのだと思います。



[電解]
C1 470μF 10V
C55 47μF 10V
C4 100μF 10V
C5 100μF 10V
[ディップタンタル]
C36 22μF 16V
C37 22μF 16V
C38 22μF 16V
C63 22μF 16V
C26 10μF 16V
C33 10μF 16V
C45 4.7μF 16V
C46 4.7μF 16V
C47 4.7μF 16V
C73 3.3μF 16V
C74 3.3μF 16V
C11 3.3μF 16V
C3 2.2μF 16V
C10 2.2μF 16V
C12 2.2μF 16V
※ロットによって違うこともあるため、要実機確認



それでは動作確認です。
直したつもりが壊したということもよくあるので、注意が必要です。

スイッチオン!
無事動作しました。
電源とビデオユニットのコンデンサ交換も必要ですが、後回しにします。
それではPC-6001mkⅡでUSBキーボード、およびUSBゲームパッドを使えるようにしてみましょう。



パラレル式のキーボードは原理が簡単で、データ、アドレスそれぞれの信号線から電気が流れており、キーボードを押すと電気的にショートするのでそれを検知するというものです。
キーボード裏を見ると、ご丁寧にデータ(X)、アドレス(Y)のピン番号が書かれています。
GNDがありませんが、どうやらキーボード左右の線から取っているようです。
このデータピン、アドレスピンを分岐してマイコンに接続し、USBキーボードから取得したキーコードをPC-6001mkⅡのパラレル信号に変換します。
マイコンは毎度おなじみUSBホスト機能が使える STM32F401 を使用しました。



マイコンの電源は拡張ボード裏から取ったら起動しなくなって焦ったので、電源コネクタ裏から+5V/GNDを取りました。
MSX2でUSBキーボードを使った時のコードを流用すれば簡単だろうと思ったのですがうまくいきません。
PC-8801mkII/FP-1100/MSX2など、通常のキーボード信号はデータは入力プルアップ、アドレスはオープンコレクタ+プルアップをワイヤードORで接続し、Low-LowになればLow(論理的にAND)になっています。
ところが、PC-6001mkⅡではアドレス線がプルアップなしのオープンコレクタになっていることに気づかず、1日ほどハマりました(キーを押したときの波形をオシロで見てやっと気付いた)。



次の問題はタイミングです。
データ送信期間をPC-6001mkⅡに合わせなければいけないのですが、各アドレスごとのタイミングがバラバラです。
仕方がないので、泥臭くトライ&エラーでタイミングを突き止めました。
ウェイトサイクルが1変わっても、コードを1行でも変えてもキー入力ができなくなるというシビアなものです。
おそらく、工作時の配線長が変わるとタイミングも変わると思います。



以上で完成です。
USBコネクタですが、元の状態に戻せるようにPC-6001mkⅡ本体の加工は行わず、RS232C拡張口に付けました。









全キー入力確認を行いましたが、全て入力できました。
たまーーーにキー入力漏れや2文字入ってしまうことがありますが、まあ実用範囲でしょう。
令和の時代にリスト入力なんて行わないでしょうから。



それよりも本命はUSBゲームパッドです。
カーソル、スペース、シフトがUSBゲームパッドで操作できるようになるため、ジョイステック未対応のゲームでもゲームパッドが使えます。
PC-6001mkⅡでV-BLANK同期の操作処理は行っていないと思うので、連射は秒間15連射にしました。

初代PC-6001ユーザだったため、mkⅡ用のゲームは1本もないのでPC-6001用のゲームで確認します。
AX-7 ザ・アストロディアンですが、秒間15連射のおかげで指が疲れません。
全滅ボタンもいちいち本体シフトキーまで手を伸ばす必要はありません。
タイニー・ゼビウスは連射不要ですが、ザッパー、ブラスターそれぞれ別に発射できます。
ジョイスティックのように1ボタン同時発射ではありません。

他にもいろいろ遊んでみたいところですが、PC-6001のカーソル To TOWNS仕様ジョイスティックで既にやり尽くしているんですよね。


戻る