カシオ FP-1100 STM32F4でUSBキーボードを使う


かれこれ2~3年前ぐらいに手に入れたカシオ FP-1100ですが、キーボードが切断されて本体しかありません。
それでも、隠れ15kHzのテストぐらいには使えたのでそのままにしていたのですが、何とか自力でコンバーターは作れるようになってきたので、FP-1100用のキーボードコンバーターの製作に挑戦してみます。



とはいっても、キーボード本体がないからには仕様が全く判らないので、トライ&エラーによる製作になります。
まずはピンアサインです。
切れた配線と本体側のコネクタを見ると15本あります。
データは8ビットで8本なので、残りはアドレスとVcc-GNDですね。
おや、何故か1本多いようです。



MSX2のキーボードでやったように、電源OFF状態でGNDと導通テストしてピンを確認してみます。
幸い、基板側に+5V/GNDのピンがあったので、ここからGNDを引きます。
テスタで確認すると、左から8本がプルアップ抵抗を介して導通したのでデータピンですね。
次の4本はあまり抵抗を介さずに導通したのでアドレスピンですね。
4本=16ビットなので純正キーボードにはデコーダICが搭載されているのでしょう。
残り3本のうち2本は直結しているのでVcc or GND、1本はプルアップ抵抗を介した謎のピンです。

次に電源をONし、テスタで2本のピンの電圧を確認したところ、左がGND、右が+5Vでした。



ピンアサインが判ったので、次はピンの並びです。
電源ON状態でデータピンをGNDにショートさせると文字が出ました。



この文字からD7~D0の位置が判ります。
左からD0⇒D7でした。
ということは、アドレスもA0⇒A3でしょう、きっと。



ピンアサインが判ったので、次はプログラムです。
おそらく、PC-8801mkII/SR/TR/FRと仕様が同じだと思うのでキーテーブルだけ変えて、そのまま使ってみました。

それでは動作確認です。

...動かない。

そりゃそうだ。
そこでオシロでアドレスがどのような信号か見てみました。
すると...

正極性かよーーーーーーー!









普通は負極性なのにFP-1100は正極性でした。珍しいですね。
昔のキーボードは単純なスイッチで、ワイヤードORでLowを検知してキーが押したかどうか判定するのですが、
アドレスが正極性ということはデコーダIC側が負極性なのでしょうか。

正極性か...、正極性となると面倒です。
当時のコンピュータはTTLで構成されていますが、現在のマイコンやICはCMOSです。
負極性であればTTL⇒CMOSは問題ないのですが、正極性となると閾電圧の問題でうまく動作しなくなります(電圧を下げるのは簡単ですが上げるのは大変)。

ただ、アドレス信号のサイクルはPC-8801mkIIのような一瞬の光の矢じゃなくて1msecスケール内に収まっています。
また、STM32は内部3.3Vなので閾電圧は1.66V、TTL-正極性の閾値1.2V前後に近いので何とかなるかもしれません。
このままやってみます。

データピンをショートさせた際、一旦離さないと連続して文字が入らないことから、1文字入力後は全データピンをHighにする必要があります。
また、データピンを設定した後は何μsecほど待たないといけないことも分かりました。
これは、キーボード処理を行っているFP-1100のサブCPUがかなり遅いからのようで、サブCPUの遅さは当時から問題となっていました。



あれやこれやで数日調整して何とか文字が入るようになりました。
ただ、またしてもSTM32の「空いているのに使えないピン問題」で工数をかなり浪費してしまいましたが...(PA0とPB5は実質使えない)。



ということで、FP-1100用 USBキーボードコンバータの完成です。
思った以上にキー入力マージンが大きかったので、これならATmega8+PS/2キーボードでもよかったかもしれません。

<グルーの黒が在庫切れだったので白を使ったのですが、見た目悪いですね。
あと、蓋を閉めたらキーがまったく反応がなくなってしまい、配線し直しました。
自作あるあるです。





PRINT文の無限表示やLIST表示をしてみたのですが、噂通りメチャクチャ遅いですね。
これはゲームをするには厳しいかも。

マイコンBASICマガジンに掲載されているFP-1100用のゲームでも打ち込もうと思ったのですが、全然ありませんね。
実用ソフトコーナーには掲載されていましたが。

ということで、今後もそれほどFP-1100を使うことはないかもしれません。





戻る