今風太ワールドを楽しむ(33)
更新日:2020年8月28日

PasocomMini PC-8001のDouble Tenkeyboardを作る(1)
ついに私も「手作りキーボードの世界」に入り込みました。以前にジョイスティックタイプを使用するものを作りましたが、なぜか私には全くフィットしませんでした。余計に操作がやりづらかったという印象でした。そこで一念発起してスイッチタイプのものを作ろうといろいろ製作しました。最初はタクトスイッチを使ったものを一体型で製作したのですが、左右の操作部の間隔が狭くて操作がやりずらいことがわかりました。その時にテレビで「手作りキーボードの世界」を見て気がつきました。左右の操作部を分離すれば良いのだと。早速タクトスイッチを左右のケースに分離したものを完成させました。が、これがまた操作しずらい。なぜか。そうなんですね、タクトスイッチはキーボードではないんだと。
だったらキーボードで作ろうと。それはまさしく「手作りキーボードの世界」の入り口。早速ネットで調べると「TALP KEYBOARD」というネットショップに辿り着きました。まだ手作りの世界は初心者なんで、あまり判らずに部品を注文してみました。途中である部品が必要なことに気が付いて少し慌てましたが、今回なんとか公開出来るレベルに達したのです。それでは詳しく説明いたします。
(Double Tenkeyboardの構成)
ジョイスティックタイプの時から取り組んでいますが、このキーボードも同様にEEPROMのデータを書き換えることで自分に合ったキー配置を行うことが出来るゲーム操作用キーボードです。PC-8001ミニに内蔵されているゲームや打ち込んだゲームを遊ぶのに使用します。自分で打ち込んだゲームはファイル名などをキーボードから打ち込まないといけないので別途キーボードが必要になります。私はUSBセレクターでキーボードを切換えてゲームを楽しんでいます。
(Double Tenkeyboardとキーボードを切換える)
それではどんなものに仕上がったかを見て頂きましょう。
(完成したDouble Tenkeyboard)
ちょっと見栄えはショックかもしれません。キーボードからの配線がかなり渋滞しております。しかし私の方式の場合はこうなりますね。今回の目的は左右分割キーボードになります。今までの通常のキーボードの間隔で打てるのが良いかと。それも最小限のキー数で。わざわざ手作りキーボードにしなくても、と思われるかもしれませんが、そこは、こんなの作りたかった、という以外には言葉はありません。好きだからですね。内部の回路図を記します。大きくはジョイスティックの時とあまり変わりません。
(Double Tenkeyboardの回路図)
「TALP KEYBOARD」さんで手作りキーボード専用の基板を購入して使っておりますが、その基板上に乗るべきマイコンは使用しておりません。私独自の方式です。だから見栄えがショックなんです。USBマイコンには最近定番のPIC24FJ64GB004を使用します。多ピンのUSBマイコンには最適と思います。通常のキーボードは各スイッチの配線をマトリックスにしてありますが、私はキー毎に直接ポートに接続しています。だからキーボードから出る配線の数が多いのです。EEPROMの接続は前回同様ポートで駆動しています。
(SU120基板)
キーボードのベースとなる基板です。フルキーボードもこの基板を組み合わせて作るようですが、今回はこの基板を2枚使用します。
(Gateronキースイッチ)
注文した時に在庫のあったスイッチの中から選択して購入しました。操作力があまり重たいのも好きではないので35gタイプのものを使いました。丁度良かったと思います。
(XDA PBTブランクキーキャップ)
キーキャップはいろんな色が揃っているので選ぶのが楽しいですね。皆さんの好きな色を選んでください。今回はこんな感じで色を分けたいと思います。
(キートップの色分け)
さて最初はこの重要な部品が必要なことは全く判っていませんでした。基板にキースイッチを挿した後にサイトをよく調べた時にわかったのです。急遽後から追加注文しました。
(Kaiih PCBソケット)
これらの部品を使用しながら私なりの回路に合うように基板に配線を行います。
(右側の基板裏面)
(左側の基板裏面)
通常はダイオードを挿入するランドを利用してマイコンの入力ポートにプルアップする抵抗を配置しました。ぴったり入りました。マイコンへ接続する配線をするとこのようになります。ちょっと配線が渋滞気味です。ここは将来改善の余地があるかもですね。
(右側基板の配線)
(左側基板の配線)
基本的にキースイッチははめ込み式です。Kaiih PCBソケットを基板にはんだ付けしてここにキースイッチの端子を挿入します。サイトの製作例でははんだ付けしても良いと書いてあるのでキー位置が確定すればそうしても良いかもしれません。私は今後にこのキースイッチを再利用することも考えていますので挿入のままにしておきます。多少不安定な部分もありますがそれほど酷使しないのでよしとしましょう。
(基板裏面に張り付けるゴムクッション)
配線などから基板を安定して接地させるために裏面にはゴムクッションを貼り付けます。ホームセンターで購入しました。配線をよけてうまく取り付けて下さい。さてマイコンが入るケースの中身を見てみましょう。
(ケースの中の配線)
ここは大渋滞しています。なんとか入れることが出来ましたが、メインのマイコン基板はもう見えなくなっています。
(裏面からみた全体の様子)
(右側のキースイッチ)
(左側のキースイッチ)
(ケースへの配置)
MENU-GAMEの切換えスイッチは回路図上ではSW22になります。その下に取り付けているプッシュスイッチはSW23で今後の拡張を考えています。なんともケースから出ている配線がちょっと見栄えが悪いですね。
(キー配置に対応するキー名称割り当て)
EEPROMにデータを定義するためにキー名称の割り当てを行いました。上図を参照下さい。各キーには自由にコードが割り当てられるのでこれから私が示すデータはあくまでも1例ですので、皆さんで使いやすいように変更して頂ければ結構です。
(EEPROM内の割り当てマップ)
EEPROMへの制御はあくまでも16進数ですが、マップは判り易いように10進数で表示しています。まずアドレス10からの16バイト分は識別符号が入っています。EEPROMが挿してなかったり他のEEPROMが挿されていた場合の異常動作を防ぐためです。16バイトには TENKEY DOUBLE 10 と記してあります。黄色のセルがEEPROMのアドレスになります。アドレス100からはそれぞれのモードに対するUSB送信コードが入ります。操作キーには1種類のコードを送信するものもあれば2種類のコードを送信する場合があります。アドレス1000からはその2種類送信の場合のコードが入ります。ここの部分はUSB送信コードではなく、識別のためのコードになります。20種類分で計40バイトを使用します。
(EEPROMのデータ割付)
上図はEEPROM内に書き込むデータの割付内容です。まず255はそのキーが動作しないことを意味します。EEPROMを消去するとFFH(255)になるのでそのようにしています。1〜127はUSB送信コードになります。ここに定義するコードはUSB HIDキーボードの送信コードです。すべてのコードが送信出来る訳ではありません。今回定義したコードを参考にして下さい。他のキー操作を定義したい場合はWEBでUSBキーボードコードなどとググルとコード表が出てきます。今回のシステムでは10進数で表記していますのでご注意下さい。
次に128〜147は2種類のコードを送信することを定義しています。その内容は別途定義しています。最後に250,251,252がコントロールコードになります。それぞれCtrl、Shift、Altになります。これはあくまでもUSBキーボードに対する定義になります。PC-8001ミニに送り込むと違う意味になるコードもあるので気を付けて下さい。これらのコードがあれば全てのPC-8001ミニのゲームを操作することが可能と思います。
(全てのモードに対するキー操作表)
左からMがメニューモード、G0〜G9がゲームモード0〜9になります。ゲームモードはジョイスティックの時より減っていますが、キー配置を工夫することで全ての内蔵ゲームが操作可能になっています。
(全てのモードに対するコード表)
青色・緑色のセルがUSBコードです。そのままUSBで送信されます。黄緑色の部分が2種類コードになります。別テーブルを参照して2種類のUSBコードを送信します。ピンク色の部分がコントロールコードです。このコードは2種類コードに含まれていることもあります。
(2種類送信コードの割り当て)
表中のS+Hと記した部分はShift+Hキーになります。S+RはShift+Returnキーです。137〜147は空けてありますので自由に使って下さい。
このDouble Tenkeyboardで遊べるゲームのゲームモード番号の対応表を載せておきます。なぜフルキーボードじゃなくてこのDouble Tenkeyboardなのかという話題には触れないで下さい。(*)のゲームはキー入力部分を改造していますのでご注意下さい。
(各種ゲームに対応したゲームモード番号)
私もマシン語ダンプリストやBASICのリストをOCR処理することを始めましたので、上図のように沢山のゲームを入れ込むことが出来ました。私の場合はOCR処理はスマホで行います。そこで文字化されたデータをPCに送り込んで自作のアプリで処理しています。最終的にはPCから自作のAuto Input装置を経由してPC-8001ミニに入力しました。自力で打ち込むより遥かに簡単に入力出来て感動でした。
(各モードのキー割付)
Double Tenkeyboardのキートップには文字が印刷されませんので、上図を参考にゲームして下さい。使っているうちに慣れると思います。ここでも思いますよね、なぜフルキーボードを使わずこのDouble Tenkeyboardなのかと。
今回からPICのソフトについて詳しい説明は行いません。もし同じものを作りたいと思った方はメールをください。PICのプロジェクトファイルごとメールでお送りさせて頂きます。ご理解をよろしくお願いいたします。
最後にEEPROMの書き込みについて説明します。今回は2種類のファイルがあります。
(各モードに対応したコードデータ)
各モードに21個文のコードを記載したファイルです。それぞれ3桁の10進数で記載して、カンマでつなぎます。1モードづつ改行して下さい。テキストファイルなのでメモ帳で開くことが出来ます。このファイルの拡張子をda1としていますので他のファイルと区別しています。
(2種類送信の定義データ)
2種類送信の定義データファイルです。10種類で改行して下さい。拡張子をda2にしてあります。
(EEPROM書き込み装置を制御するVBアプリ)
以前に製作したEEPROM書き込み装置でデータを書き込みます。書き込み装置とPCをUSB接続した後にPCのVBアプリを起動してCOM接続します。最初に許可ボタンをクリックしてEEPROMを書き込み許可状態にして下さい。次に全消去をクリックしてEEPROMを初期化します。これでEEPROM内部が全て255にクリアされます。続いてコードファイル読込ボタンをクリックして拡張子da1のファイルを選択します。その後、コードファイル書込をクリックしてEEPROMにデータを書き込んで下さい。書き込まないところは飛ばすようにしていますがそこそこの時間が掛かります。書き込み時はEEPROM書込み装置のLEDが点滅します。同様に多重ファイル読込(拡張子da2)、多重ファイル書込を行い完了です。EEPROMをDouble Tenkeyboardに差し込んで使用します。
VBアプリと書き込みデータファイルはPICのプロジェクトファイルを希望される方に同時にお渡しいたしますので有効に使って頂けると幸いです。よろしくお願いいたします。
ついに私も「手作りキーボードの世界」に入り込んでしまったわけですが、まだまだ初心者ですのでこれからも精進してまいります。
PasocomMini PC-8001に興味を持たれたらこのページへどうぞ
パソコンミニ公式ウェブサイト
(PC-8001ミニで手作りキーボードの世界へ)
今後もPC-8001ミニに関するものを公開していきたいと考えています。最近ちょっと他のこともしていたのでPC-8001ミニの新作ゲーム開発が滞りぎみになっていましたので、ちょっと加速したいと思っています。まあ自己満足的なものなので気長にやっていきます。

「蘇る今風太ワールド」表紙へ戻る