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 といった、そんなに他キーとの同時押しを行わないようなキーばかりなのでそう問題は起きないかな、と []

Firmware 3.0

いい加減3.0をRC版じゃなくてRelease版にしないとサポートページとの整合性が取れなくなってきた・・・機能追加等はRC9で終了にして、しばらく使ってこれで問題なければRC9をRelease版とする予定です。

 

現在テスト中のADBマウス対応、X68000マウス対応はVer3.1でリリースします。ただしX68000マウス対応に付いてはUSB Type-C版の新アダプタ専用になります。それ以前の旧アダプタはハードウェア的にマウスに対応出来ません。すみません

 

メガドライブミニ(続き

拙作のサターンコントローラUSB変換アダプタをメガドライブミニに対応させました

<youtube>

動画に映ってる小汚いスティックコントローラは自作のバーチャスティックもどきです。スパ2のコンパネを半分にぶった切ってアルミケースにマウントした自作コントローラです。メガドラミニの付属パッドの乗っ取りではなく、サターン標準パッドを乗っ取っています。それを拙作のSS変換アダプタでUSBに変換しています。

メガドライブミニ付属の標準パッドとの整合性を取るためにアナログ5軸+POV+12ボタンに制限されます。よってツインミッションスティックの親指スロットルは片方しか使えません。

残念ながらマルチターミナル6を併用しても複数サターンコントローラが同時に利用できることはありませんでした。

 

メガドライブミニ

買いました。

残念ながら拙作のサターンコントローラUSB変換アダプタはメガドライブミニでは動きませんでした。どうもPID&VID縛りがあるようです。

仕方ないので付属パッドのVID&PIDを拝借して、ボタン配置も付属パッドに合わせるようにしてとりあえず純正サタパとマルコンでスト2が操作出来ています。

ただそれでもMT6併用で5コントローラを認識させることは出来ませんでしたが。

解析された方のblogを見ると、どうもUSB HUBにもVID縛りがあるみたいですね。動作確認&保証の手間とかあるでしょうから仕方無いのかもしれませんが・・・

midiori

っていう同人MIDIインタフェースカードが面白そう

NFGGamesのフォーラム  https://nfggames.com/forum2/index.php?topic=6556.0
Githubのプロジェクトページ  https://github.com/tdaede/midiori

MIDIコントローラに純正カードなんかで使われてるYM3802の代わりにLatticeのFPGAが使われてる。今時のFPGAってpythonで開発できるのか。

拡張スロット数がカツカツなX68000 (PRO除く) においてRS-MIDIという代替手段がある分、MIDIカードの優先度は低いんだけど「X68000の拡張スロットにFPGAを繋いでpythonであれこれする」って考えたらすごい楽しそう。I2CとかSPI経由で外付けFM音源とかSDカードとかいろいろ繋いてみたい。

Firmware 3.0-RC9

まさかの大チョンボが見つかったため修正版となるRC9を登録しました。up0075.zip です。
なおRC8はとり急ぎということでADB版しかありませんでしたが、RC9 (up0075.zip) は全機種分のファームをアーカイブしています。ADB版以外でLEDを黙らせたい場合はRC9を使って下さい。

 

RC9変更点

  1. USBフレームワークの処理にミスがあったのを修正1
    ただ、このミスがあっても普通に動いている気がするのが大いに謎なんですが・・・なので現状で「システムコントロールキー」「メディアコントロールキー」の利用に問題が無ければこの更新(RC9)はスルーして下さい
  2. LEDの点滅パターンを指定する機能を追加。
    詳細はこちらを参照願います。
  3. X68000版に限り、実験機能として「Scroll Lock LED」に連動してレイヤーをトグルで切り替える機能を追加。
    LEDの切り替えは他のキーボードから行って下さい。物理キーボードでなくても、ソフトウェアキーボードでも構いません。これで XM6 上で完全に「全てのキー」が使用出来ます。ただしこの機能を有効にした場合、アダプタに繋がったX68000キーボードに対してScrollLockキーを設定してWindowsで使うことは出来なくなります2

 

macOS用のファーム更新ツールは up0068.zip (ターミナル用)、up0074.zip (GUI用) です。ただ、GUI版は環境によってうまく動かない?ケースがあるようです。

 

ConfigLoader for OSX/macOS

不具合を修正したバージョンを uploader に登録しました。up0073.zip です。設定ファイルの文字コード 「EUC / SJIS / UTF-8」になんとなく対応しました。また改行コードも「CR / LF / CRLF」に対応させたつもりです。

なお uploaderから取得できるサンプルは全部Windows上で作っているので文字コードはSJISで、改行コードはCRLFです。

実行時に「開発元が未確認のため開けません」といわれた場合はコンテキストメニューから開くなどの対応をお願いします。

このバージョンでも動作に問題がありましたらコメント等で報告頂けますと幸いです。

<LINK切れ>

PC-PTOS キーボード

PC-98用のPC-PTOSキーボードはALPS黄軸モデルとNECスイッチモデルの2種類があります

NECスイッチモデル。キーキャップは二色成型。しかしNEC楕円軸ってこんな感じでLED仕込めるんですね。知らなかったです

 

ALPS黄軸モデル。キーキャップはシルクスクリーン印刷。

どちらも同じリニア軸ですがキーを叩けば一発で違いが分かります。軸取り目的で入手する場合は注意しましょう。

 

5576-Keyboard1の初期設定

PS/2用アダプタのサポートページに 5576-Keyboard1 の初期キー配置図を追加しました。こりゃ酷いわ・・・

一応、繋がってるキーボードが  Keyboard1 なのか 002 なのか 003 なのかは全部判別出来るんですが、Keyboard1の場合はどういう初期キー配置がいいのか悩ましい訳で。キートップの印字を重視した配置とするか、キートップの印字を無視して106/109キーボードに寄せた配置とするかでもかなり変わる気がしますし。個人的にはキートップの印字を重視してCtrlが左2列の右下に位置するのはさすがに抵抗があるといいますか・・・CapsLockの位置(スペースの2つ左隣)もそこじゃないだろ、と。

なので Keyboard1 に関しては「お手数ですが、原則キー配置をカスタマイズして使って下さい」というスタンスでご理解願います。代わりに、サンプルconfをいくつかダウンロード出来るようにしておきますので。

 

tmk_keyboardをPC-8801キーボードに対応させる

タイトルの通りです
tmk_keyboard firmwareを後期型のPC-8801キーボードに対応させます。

次のソースファイルを “tmk_keyboard/converter” の中に解凍して下さい。解凍後のフォルダ構成が次のようになっていれば大丈夫です

IMG

あとはtmk_keyboardのbuild手順に従ってmakeするだけです。build環境の構築やbuild手順についてはここでは触れません

ソースファイル差分:pc88_usb_source

mini DIN5ピンコネクタとMCUの接続等については添付のREADMEを参照して下さい

なおコンバータはTYPE B専用です。TYPE B以外のキーボードについては、キーボード背面のモードスイッチを切り替える事でTYPE B相当になります。

ソース一式はオリジナルのtmk_keyboardにしたがってGPLv2ライセンスです。自由にして頂いて結構です。

IMG

いつもどおりのブレッドボード試作。mini DINコネクタとMCUを3本(5V, GND, DATA)繋ぐだけの簡単なお仕事です。

 

追記

本家 tmk_keyboard のgithubリポジトリにマージされましたのでそちらから取得して下さい

TMK Keyboard Firmware Collection