マイコン独立大作戦
CRT/VGAIF+KEYIF+SDCARDIFボードの製作
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
WindowsパソコンにUSB接続して使う現行方式はそれなりに便利ではありますが、ときとしてWindows
のしがらみから開放されて、小さいながらも独立した一個のパソコンとして機能したいと思うこともあります。
昔はそれが普通のことだったのですが、安価なCRTディスプレイが生産中止となって久しい今日ではそれ
は叶わぬことと諦めていたのですが…。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[総合第14回]
●Caps Lock とカナモードを組み込みました
前回は夜半に急いで書いたものですから誤字脱字や書き足りないところがあちこちにありましたので、今朝(2/21)になってから手直しいたしました。
現在は修正済みの文になっています。
さて前回は久しぶりにキーボードインターフェースについて書きましたので、その流れで今回はキーボードインターフェースの最近の進展について書くことにいたします。
当初はとりあえず英大文字、小文字と記号の入力ができる程度だったのですが、ソフトウェアのほうもいよいよ本番に向けて拡充してきましたので、ここらあたりでキーボードインターフェースも仕上げてしまおうと思って、先日からそのための作業をしてきました。
「独立大作戦」のキー入力はもっぱら英文字と記号の入力が中心です。
BASICプログラム、BASICコマンドやマシン語コマンドは英大文字を使いますが、キーボードからの入力時にスクリーンエディタの機能で小文字が入力されたら大文字に変換して入力するようにしてあります。
またカナ文字はコメントやPRINT文の中など限られた範囲でしか使えません。
そういう意味では主には英小文字と記号さえ入力できればよいのですけれど、せっかくキーボードに大文字のロックキー(Caps Lock)やカナモードキーがあるのですから、どうせのことならそれも使えるようにしておきたいと考えました。
キーボードのインターフェースにはPIC16F87を使っています。
シフトキーと一緒に押すことで大文字シフトや記号入力ができるようにすることはPIC16F87のプログラムで対応しました。
またCaps Lockやカナモードについても、PIC16F87のプログラムに組み込みました。
ところがいざそのようにして試してみますと、まだ足りないものがあることに気が付きました。
Windows上でキー操作をするときには大抵は画面の右下あたりに「あ」とか「A」とかの表示が出るようになっています。
それが表示されなければキーボードが使えないというほどのものではありません。
キー入力してみれば現在が何モードなのかがわかりますから。
しかしあれば便利です。
ところがこれはちょいと厄介な問題で、少し悩みました。
というのも画面上の全てはスクリーンエディタの対象になっているからです。
スクロールするときは画面の最下行がそのまま1行上にコピーされますし、もし最下行に何かを入力してそこで[Enter]を入力したら、その行の全てが入力データとして扱われてしまいます。
たとえば、画面右下に’ア’が表示されていたとして、その行に10 ABC=0と入力して[Enter]を押したとすると、入力データは
10 ABC=0 ア
になってしまいます。
それを回避するにはどうすればよいか?
ちょっと悩みましたが、なんとか解決策がみつかりました。
詳しくはいずれまた機会をみつけて説明することにしまして、今回はその機能が働いているところを画像で見ていただくことにいたします。
そのように機能追加をしたあとの実際のキー入力画面です。
初期状態では英小文字の入力モードになります。
そのとき画面の右下隅に小文字の’a’が表示されます。
この表示はスクリーンエデイタでの入力動作には影響しません。
スクリーンエディタがそのように処理を行ないます。
[Shift]+[Caps Lock]を押すことで英大文字と小文字のモードが交互に入れ替わります。
英大文字モードがロックされたことを示しています。
このときに[Shift]を押しながら[A]~[Z]キーを押すと小文字が入力されます。
逆に英小文字モードのときに[Shift]を押しながら[A]~[Z]キーを押すと大文字が入力されます。
[Caps Lock]が有効なのは[A]~[Z]のキーだけです。
他のキーは大文字、小文字のモードの影響は受けません。
[Caps Lock]が働いても、キーボードのLEDは点灯しません。
キーボードのLEDはホストからの信号で点灯するようになっているのですが、[独立大作戦]のキーボードインターフェースはハードソフトの負担を軽減するため、キーボードへのデータ送信は行ないません。
英大文字モードにしてキー入力を行なったときの画面です。
上のほうに見える文字はそれぞれのモードでテスト入力を行なったものです。
[カタカナ]キーを押すとカナモードになります([Shift]は押しません)。
カナモードを解除するには[英数]キーを押します([Shift]を押さないで[Caps Lock]を押します)。
さきほど上のほうに見えていた画面です。
それぞれのモードや[Shift]を押しながら、キーを順番に押して、正しく入力されるかテストしてみたところです。
上のテスト入力の結果、ミスが2箇所みつかりました。
1つは[Shift]+[@]で[‘]が表示されるはずなのにスペースになってしまうことです。
もう1つはカタカナの小さい「ッ」が入力できません。
[ッ]についてはPIC16F87のプログラムにミスがあることがわかりましたので修正しました。
[‘]についてはキャラジェネの参考にしたPC8001のキャラクタパターンではコード60Hが[‘]ではなくてスペースになっていることがわかりました(「CRTインターフェースボードの製作」[第5回]参照)。
しかしあくまで参考にしただけでPC8001のクローンを作るつもりはありませんから、キャラジェネROMにパターンを追加することにしました。
PIC16F87とキャラジェネROMの両方を直すことで[ッ]と[‘]がキー入力表示されるようになりました。
CRT/VGAIF+KEYIF+SDCARDIFボードの製作[総合第14回]
2017.2.21upload
前へ
次へ
ホームページトップへ戻る