日別アーカイブ: 2019年11月8日

PS/2キーボードをPC-8801 FH以降に繋ぐ

こちらは実に敷居が高いモノとなっています

まず、このファームは 実機で動作確認していません 私自身では実機での動作確認を行っていません1 。作っても動かないとか、正常に動かない可能性があります。ですので

  • 電子工作に多少の経験がある
  • PC-8801 FH以降の機種を持っている
  • PIC12F1822を書き込めるwriterを既に所持している2
  • PS/2 Keyboardも持っている
  • 出来ればブレッドボードを持っている
  • 動かなくても泣かない

という条件に当てはまる方のみお試し下さい。なお、正常に動かなかった場合は教えて頂ければ可能な限り対応します(が、実機持ってないのでお約束は出来ません)

一応、88の実機は持ってないものの88用のType Aキーボードの実物は持っているのでロジアナで出力信号を比較チェックしています。また、先にType Aキーボードの信号を解釈するテストボードを作ったうえで、作ったファームをそのテストボードで検証しています3

PICはPIC12F1822を使います4。RA0が88への出力信号で、RA4がPS/2 CLK、RA5がPS/2 DATAです。PS/2の2本の信号線には必ず330Ωの抵抗を入れて下さい。パスコンとかは適当に。図中のポリスイッチ(自己復旧型ヒューズ)とLEDは省略可能です

<回路図>

PC-8801FH用 PS/2キーボード変換アダプタ ファーム
機能追加&不具合修正を行った更新版があります

 

ファームの制限事項です

PC-8801 FH以降の機種に付いてくるキーボードは88SR用キーボードからキーが増えています(F6~F10とか)。とりあえずここでは 88SRと共通のキーを「従来キー」、追加されたキーを「拡張キー」と呼ぶことにします。

拡張キーを押したとき、88SR用プログラムとの互換性を取るために、従来キーのキーコードも一緒に送信されます。例えば拡張キーの「F9」を押したときは「F9, SHIFT, F4」というキーコードが出力されます。拡張キーの「INS」を押したときは「INS, INSDEL」というキーコードが出力されます。

面倒なのはキーを離したときで、前述の例だとF9を離したときは「F9開放、F4開放、SHIFT開放」のコードが出力されますが、「F4を押したままF9を開放した」とか「SHIFTを押したままF9を開放した」場合は少し挙動が変わります。「F4を押したままF9を開放した」場合は「F9開放、SHIFT開放」だけ出力され、「SHIFTを押したままF9を開放した」場合は「F9開放、F4開放、SHIFT押下」が出力されます。そういうもののようです。

これらの挙動を厳密に網羅するのが面倒だったので、本ファームでは拡張キー開放時の同時押しに付いては特に考慮していません。SHIFTを押したままF9を開放した場合でも「F9開放、F4開放、SHIFT開放」が出力されて、SHIFTキーはリリースされた状態になります5  6

CAPSキーとかなキーのロックは実装していません。ロック機構が無いと問題が出るアプリがあるようなら実装を検討します。

PS/2 & USB コンパチ型のキーボードだとうまく動かないかもしれません(特に、「デフォルトがUSBで、ケーブルの先端にアダプタを挿すとPS/2でも使える」タイプのキーボード)

  1. 現在 FAでの動作実績1件 []
  2. コメント参照 []
  3. これを検証と呼んでいいのか些か疑問ですが []
  4. PIC12F1840でもOK []
  5. 押してもいないのに「押されている」と処理されるのは問題がありそうでも、押しているのに「押していない」と処理されるのはまあ許されるかな、と []
  6. 追加された拡張キーはF6-F10, BS, DEL といった、そんなに他キーとの同時押しを行わないようなキーばかりなのでそう問題は起きないかな、と []