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

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

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

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

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

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

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

Untitled

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キーはリリースされた状態になります3 4

 

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

 

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

  1. これを検証と呼んでいいのか些か疑問ですが []
  2. PIC12F1840でも可 []
  3. 押してもいないのに「押されている」と処理されるのは問題が出そうでも、押しているのに「押していない」と処理されるのはまあ許されるかな、と []
  4. 追加された拡張キーはF6-F10, BS, DEL といった、そんなに他キーとの同時押しを行わないようなキーばかりなのでそう問題は起きないかな、と []

PS/2キーボードをPC-8801 FH以降に繋ぐ」への2件のフィードバック

  1. fes 投稿作成者

    たねけんさんに実機で確認して頂きました。ありがとうございます!
    基本的な入力は問題なさそうですが、現状で「PS/2キーボードの余剰キーを押すと『0』が入力される」「『かな』キーの定義漏れ」があるのでこれを修正した上で、『CAPS』『かな』のキーロックに対応させて修正版を作る予定です

    なお「停止(STOP)」がPause/BreakキーではなくScroll Lockキーにアサインされているのは仕様です。PS/2 のPauseキーはキーを押すと「MAKE & BREAK」が同時に出力されてキーの押しっぱなしが出来ないので、あえて別のキーにアサインしています。(今思ったけど、どうせキー余ってるから 『Pause/Break』と『Scroll Lock』の両方を『停止/STOP』にすればいいのか・・・)

    返信
  2. fes 投稿作成者

    TODO
    未割り当てキーを押したときに「0」が出ないようにする
    かなを割り当てる
    かなとCAPSのロックを実装
    テンキー/とフルキー/の設定が逆になってるのを直す
    STOPをPauseとScroll Lockの両方に割り当てる
    アサイン表を作る

    返信

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です