ちょっとTea Time!? 指が攣(つ)る〜!! 〜ESCコードを調べる〜 2020.9.11

CPM80CPM68Kに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でプログラムを組んでも見る気が起きてきました。

(おしまい)