ちょっとTea Time!? 指が攣(つ)る〜!! 〜ESCコードを調べる〜 2020.9.11
CPM80とCPM68KにIOボードを追加したので、久しぶりにちょっとプログラムを組もうと思っています。
で、CPM80の場合はスクリーンエディターとしてWM(ワードマスター)を使うのですが、
カーソルの上下や左右、ページのUP、DOWNはすべてCTRLキーでの操作になります。
たとえばカーソルを右に移動するにはCTRL-D、左に移動するにはCTRL-Sです。
このあたりは、まだ体が感覚で覚えているのですが、老化した指にとってはCTRLを押しながらの操作は
指が攣ります。というか、矢印キーに慣れてしまった体には拷問に近いものがあります。
でもWMを使うにはCTRLキーは頻繁に使用することになります。
なんとかならないかな〜。でないと、指が変形してしまいそうです(笑。
CPM80のころは、カーソルを動かすにはCTRL+E,D,X,Sが当たり前でした。
WMでは何をするにもCTRLキーが必要です。
いつもの矢印キーが使えないかな?
出来れば、CTRLキーを使わずに矢印キーを使えるようにしたいものです。
そこで、矢印キーを押すとどんなコードが出るのだろう?と思って調べてみました。
結構複雑なコードが送出されるんですね。主に使うキーを調べてみました。
↑ : 0x1B+0x5B+0x41
↓ : 0x1B+0x5B+0x42
→ : 0x1B+0x5B+0x43
← : 0x1B+0x5B+0x44
PAGE UP : 0x1B+0x5B+0x35+0x7E
PAGE DOWN : 0x1B+0x5B+0x36+0x7E
へえ〜、PAGEのUP、DOWNキーなんかは1回押すだけで4つもキーがでてくるんですね。
その他にもFUNCTIONキーも調べてみました。こちらは、さらに多くて1回押すだけで5つもでてきます。
F1〜F9 : 0x1B+0x5B+0x31+0x31〜0x39+0x7E
F10〜F12 : 0x1B+0x5B+0x32+0x30〜0x32+0x7E
でも、このコードがわかればCPMのBIOS側(実際にはPICのプログラムです)で、事前にコードを変換してやれば
WMもCTRLキーも使わずに(多少は使いますが)快適に使えそうです。
ということで、簡単にプログラムを改造してみました。
最初に0x1bのコードを受信したら、矢印キーの内容を判別して、それに相当するCTRLキーを返すようにしています。
こんな感じで、矢印キーが押されたら変換するルーチンを加えました。
これで、
腱鞘炎(けんしょうえん)にならずにすみそうです(笑。
課題は、この変換をしてしまうとバイナリーデータの送信ができません。というのも0x1Bを受信したら勝手に他のコードに変換
されてしまう可能性があります。そのため、この変換をON/OFFするような機能が必要になってきますが、それが必要になったら
さらに改造していきましょう。
これで、すこしはCPMでプログラムを組んでも見る気が起きてきました。
(おしまい)