2024年7月25日木曜日

PC-8801mk2用USBキーボードアダプタ

88mk2のUSBキーボードアダプタの問い合わせが来たので、少し調べてみた。

PC-8801mk2シリーズ(PC-8801mk2/SR/TR/FR/MR)のキーボードコネクタはDIN 13pinで、雄コネクタを覗き込んだ場合、左上が1pinで右下が12pin、真ん中下が13pinの並び。

13pinが5Vで外周がGND、88mk2本体から9~12pinでスキャンラインを指定し、押されたキーを1~8pinを読み取る様子。キーマトリックスは素直でシンプル。
88mk2シリーズの場合、スキャンラインは0~11まで。
キーが押されるとビットはLow(0)になり、何も押されていない場合は全ビットがHigh(1)になりFFhが返答される。

入力と出力のピンが独立してるので、余計な回路も必要なくPicoで行けそう。

ほぼDIN13コネクタとPicoを接続するのみだが、テスト基板を作成

うちには88mk2が無いので、PC-8001mk2SRで試してみる。
80SRの背面には汎用入力インターフェイスがあって、DIN 13pinのコネクタがある

基本動作はパソピア700用USBキーボードアダプタと同じ。8個のPIOで8個のリターンピンで独立して処理することで、PC本体の読み取りタイミングに間に合うように押されたキーを応答する。
少し違うのは、パソピア700はキーのスキャンタイミングがわかるピンがあるので、その1つのピンを監視していればよかったのだが、88の場合はタイミングの信号線がないので、9~12pinのどれかがLow(0)になるまでボーリングするようにした。
実際にUSBキーボードとシリアルを接続して動作確認。
結果は以下の波形。
下の4つが88mk2本体から送られてくるスキャンライン9~12pinだが、LowになってからHighになるまでの間隔が590nsくらい。
今回はポーリング処理が入っているためタイミングによるばらつきがあるが、それでもスキャン信号が届いてから200nsちょっとで返答できている。

USBキーボードでキーを押すと、ちゃんとキー入力されている。

1つ気になる点は、PC-8001mk2SR本体側のModifierキーが無効になる。
今回作成したアダプタを本体に接続すると、CTRL/SHIFT/GRAPH/カナキーがUSBキーボード側のみ有効になり、本体側のModifierキーが無効になってしまう。
仕様かもしれないが、本物の88キーボードを持っていないので確認できず。。

あと、今回88mk2版を試すにあたりPicoのUSBライブラリを最新にしたが、安定性がかなり上がった印象。USBキーボードの抜き差しをしてもハングしにくくなったし、今まで動かなかったHub付きキーボードも動くようになった。

88mk2シリーズでも動きそうだが、本体で検証できていないので...

2 件のコメント:

  1. こんにちは、以前「PC-8801mkII用USBキーボード・アダプタ」で書き込みしたpinがおれたcpuです。
    そのときは対応してくださりありがとうございました。

    毎日のように似たようなものを探していて25日に見つけました。
    何もなかったところにいきなりこの記事があがってて、
    調べて終わりかなと思ったら、
    あっさりテスト基板を作られて動かしてて、
    驚きしかありませんでした。

    誠に厚かましく図々しいのですが、これがほしいです。
    売ってたら即買いたいです。
    同じことを raspberry pi の 3b か 4b でできないでしょうか。
    3bと4ならもっているのでどちらかでできたらありがたいです。
    (USBキーボードが直接刺さるため)
    自分には同じことをできる技術がありませんので。

    参考になるかはわかりませんが、
    PC8801mkIISRのキーボードでは、カナキーとCAPS LOCKキーは、一度押すと、
    カチッと音が鳴り、沈んだまま浮いてきません。押しっぱなしになってるようです。
    もう一度深めに押すと、カチッと音がなり、引っかかりがなくなり
    周りのキーの高さまで戻ります。

    返信削除
    返信
    1. 88SRのキー情報ありがとうございます。
      試作機で良ければお送りしましょうか?
      少し時間をもらえたら、もう1台試作機作ってみます。

      削除