2015年01月25日

OneChip MSXのキーボード回路にパッチを当てました

One Chip MSXを持っていますが、この子は結構接続するキーボードを選ぶようです。
気になってはいましたが、とりあえず使えるキーボードがあったのでそれで使っていましたが
DE0バージョンを発見したため、これであればSignalTap IIが使えるので
これで原因を探ってみました。
どうも、原因を調べてみたところ、キーボードとの送受信のbit数が足りず、必要最低限のクロックだけ
送受信したらあとは無視するようです。(クロックを送るのはキーボード)
そうすると、たとえばCaps等LEDの切り替えコマンドを送信後、少し(タイムアウト時間より長く)
待ってからAckを送信するキーボードなら残りのクロックで受信回路モードに切り替わっても
タイムアウトが発生してAckを受ける時には最初から受信されるが、コマンド受信後即座に返信する
キーボードではコマンド送信の残りのクロックで受信モードに切り替わり、そのままAckを受けるので
コマンドのパリティやSTOPビットがAckの先頭についてしまうため正常にAckと認識されない
という問題のようです。
キーボードの仕様とおなじ11bit全て受信するまで送信モード・受信モードを続けるように
修正して手持ちの全てのキーボードで動作するようになることを確認しました。
eseps2.vhd.diff
で差分データをアップロードしますので同じ現象をもっている人は使ってみてください。
posted by プー at 20:42| Comment(4) | One Chip MSX | 更新情報をチェックする