マツドサイエンティスト・研究日誌 保存版
SH-TINY その5 漢字ターミナルを作る

初出:2007年07月08日 元々のブログ・コンテンツへのリンク
カテゴリーのインデックス: パソコン・インターネット
シリーズのインデックス: SH-2・リアルタイム OS Linux

さすがに、いっぺんに3つもコンテンツをアップすると疲れるなあ。
前回、秋月のグラフィック液晶に漢字を表示したのに、良い気になって、今回は、漢字ターミナルを作ってみた。
(クリックすると写真は拡大)

この写真のように、PS/2 インターフェースを付け、フルキーボードからキー入力を得られるようにした。
キー入力と漢字の表示とを、シリアルインターフェースで入出力することで、漢字ターミナルとしている。

漢字フォントは、8x8 ドットだ。
これは、前回の最後に書いたように、SH-TINY の ROM サイズ(128K)に収まるのは、8x8 ドットが限界だったからだ。
写真では、恵梨沙フォントを使っているが、美咲フォントを使うことも、もちろん可能だ。


写真の例では、シリアルケーブル経由で、Debian Linux Sarge にログインしている。
ls で、存在しないファイルを探そうとしたので、漢字でエラーメッセージが出ているのが判る。
(クリックすると写真は拡大)

シリアルケーブル経由と言えど、ちゃんとログインしているので、なんでもできる。

回路図

前回の回路図に比べて、PS/2 インタフェースが増えただけだ。
IRQ0 を使って、PS/2 クロックを受信している。

(クリックすると画像は拡大)

プログラム
sh7125term.tgz をダウンロード

プログラムの構築には、漢字フォントが必須だ。漢字フォントのダウンロードと解凍については、前回のコンテンツを参考にしてもらいたい。

$ cd ~/hos-v4/sample/
$ tar zxvf sh7125glcd.tgz
$ cd sh7125glcd/
$ make -f make -f gcc.mak


ホスト PC の Linux に外部ターミナルからシリアル経由でログインするには、外部ターミナルを起動した後、ホスト側で次のようにコマンドする。

# /sbin/getty -L 38400 ttyS0 vt100


後は、普通にログインするだけである。

プログラムの説明
このプログラムは、2つのタスクで成り立っている。
(1)シリアルインターフェースから文字を受け取り、グラフィック液晶に表示するタスク
(2)PS/2 キーボードから信号を受け取り、スキャンテーブルで ASCII コードに変換し、シリアルインターフェースから送るタスク

グラフィック液晶に対するアクセスは、(1)のタクスのみである。従って、グラフィック液晶に対するアクセスがコンフリクトを起こす可能性は無いと判断し、セマフォ等の設定はしていない。
もし、2つ以上のタスクがグラフィック液晶をアクセスするようなプログラムを作る場合、セマフォ等で排他処理をしないとコンフリクトを起こす可能性があるから注意されたい。

シリアルインターフェースに対するアクセスは(1)(2)の両方のタスクからある。従って、コンフリクトの可能性が大きく、また、良く使うので、汎用的に使えるデバイスドライバにしておいた。セマフォや割り込みなど多数使用している。
ホスト側から速い速度で、データを送られた時、表示が間に合わなくなるので、XON/XOFF によるソフトウエア・フロー制御を行うようにしている。

PS/2 キーボード・インタフェースは、不規則性で、迅速な処理が必要なので、IRQ による外部割り込みを使っている。

このように複数のタスクや、割り込み等を使ってプログラムが書けるところが、リアルタイム OS の良いところだ。

なお、通信のボーレートは 38400bps 固定、キーボードは日本語キーのみ、漢字コードは EUC-JP のみ、エスケープシーケンスは最低限のモノしか用意していない。
この辺、誰か汎用的にしてくれると嬉しいのだが・・・
(エスケープシーケンスを揃えて、VT100互換にしても vi や emacs でエディットするのはキツイと思うが)

最後に
いやあ、結構、SH-TINY って、何でもできるね。
最後の漢字ターミナルなんて、黎明期のパソコン PC-8001とかPET並みだよね。もちろん、表示のドット数は落ちるけど、速度とか逆に速いような気もするし。
漢字ターミナルは、フォントデータが大きいけど、それでも 70K 程度しかない。まだ、50K も ROM が余っている。これに BASIC 等のインタープリタ/スクリプト言語を載せたら、本当に黎明期のパソコン並みになると思うのだが・・・

玄箱のシリアルインターフェースに接続するのも良いかも知れない。
DHCP で得た IP や内部状態のモニターだけでなく、新幹線の車内ニュース表示のように、インターネット上のニュースを RSS 経由で得て、表示するのも面白い。

もっと、大きな視認性の高い漢字フォントを使いたければ、外部にシリアルインターフェースの ROM でも付ければ良いかもしれない。ただし、アクセス速度の問題があるので、プログラムを工夫する必要が出ると思うが。

妄想は広がるばかりだ。
inserted by FC2 system