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 | 更新情報をチェックする
この記事へのコメント
初めまして。
eseps2の修正版、試させていただきました。

今まで動作しなかったRealforceが動作するようになりました。
初期のPS/2版だったのでお蔵入りしてたんですよね、このキーボード。

ありがとうございました。
Posted by ゆうくん at 2017年01月14日 12:17
こんにちは。

お役に立てて光栄です。
Posted by プー at 2017年01月14日 20:23
ところで、貴殿のページも少し見させていただきましたが、1chip MSXのBIOS圧縮方法をご存知なんですね。
仮boot用のブートローダからSPI(AS)でEPCS4からロードし、圧縮展開している、ということまでは解析したのですが、なにせ該当部分のソースが無いのでそれ以上は
解析できていません。
もし良かったら教えてもらえませんか?
Posted by プー at 2017年01月14日 20:39
圧縮プロセス開発したcaroさんに許可もらいました。
圧縮プログラムメールしますので、こちらに一度メールいただけますか?

よろしくお願いします。
Posted by ゆうくん at 2017年01月15日 23:35
コメントを書く
コチラをクリックしてください