次のページ 前のページ 目次へ

7. 端末の動作に関する詳細

端末について何も知らなければ、 はじめに端末動作についての概要を最初に読むことをお勧めします。

7.1 端末メモリの詳細

端末画面は、端末メモリ内に記憶しているイメージを毎秒およそ 60 回再表示 しています。PC では、モニタのイメージはコンピュータ内部のビデオカード に記憶されますが、端末ではビデオカードと同等なものは端末内部にあります。 テキスト端末でのイメージの記憶は少ないメモリですみます。スクリーン上の すべての画素 (ピクセル)のメモリへの転送と、およそ 25 万画素を記憶する 代りに、より効率的な記憶方法がとられるからです。

画面一杯のテキストを、画面の各一文字毎に ASCII バイトで端末メモリに再 現していきます。全画面はおよそ 2K ASCII バイトですみます。これらの文字 を表示するために、端末は印字可能な約 100 個の ASCII キャラクタのビット マップ (外観) を知っていなければなりません。一文字のビットマップに15 バイトを使うので、全ての ASCII キャラクタ (フォント) には 1.5K だけメ モリが必要です。毎秒 60 回で画面に画像を出力するために、この ASCII テ キストとフォントメモリがスキャンされます。これは共有メモリ方式ですから、 例えば、画面一杯に表示されている文字 e の全ては、ただ一つの文字 e のビ ットマップを共有することになります。必要なメモリ量が少なくてよいという ことは、メモリ価格が今日の数千倍 (キロバイト当り数千ドル) した 1980 年 代初期の頃は、モニタ製造コストの削減を意味しました。

7.2 初期の端末

初期の頃の端末は、コンピュータから送られた一連の文字を ``表示 '' (紙に 印刷) するだけの遠隔操作型タイプライタみたいなものでした。最も初期のモ デルは テレタイプと呼ばれました。``tty'' と いう名前は ``テレタイプ (Teletype)'' の略称です。初期の端末はタイプラ イタのように改行や復帰を行なえ、またベルキャラクタを受信したときにはベ ルを鳴らすことができました。重要な能力が欠けていたために、初期型の端末 は ``ダム (dumb)'' と呼ばれました。このタイプの端末インターフェース (``ダム'' と呼ばれた端末を使用したもの) は、通信相手がどのようなタイプ の端末かわからないときに今日でもたまに使われています。

7.3 エスケープシーケンスと制御コード (イントロ)

端末には多くの能力があり、そのうち幾つかはいつでも利用でき、いくつかの ものは変更したり、有効にするためにコンピュータからコマンドの送信が必要 です。これら全ての能力をコンピュータの管理下で使用するために、コンピュ ータが端末に何をすべきかを伝える特別なコードが決められています。これに は、エスケープシーケンスと制御コード (制御キャラクタ) という二つの主要 なコードがあります。制御コードより、エスケープシーケンスの方が、ずっと たくさんあります。

制御コード

制御コード (または制御文字) は ASCII アルファベットの初めの 32 バイト を占めます。それらは以下を含んでいます : 復帰 (カーソルを左端へ)、改行 (カーソルを次の行へ)、後退、エスケープ文字、タブそしてベル。通常、そ れら自体は画面に表示されません。端末が制御コードを受信したとき、画面表 示に影響を与えるコマンドが端末にはあります。それら (のコマンド) は、し ばしば ``画面制御'' や ``モニタ(プログラム)'' と呼ばれます。もしユーザが、 *手で* エスケープシーケンスを打ち込んだなら、ディスプレイは、その実行 されない ESC (エスケープ) ではじまる制御文字でぐちゃぐちゃになってしま うでしょう。カーソルの位置を移動するためのエスケープシーケンスはスクリ ーンに表示されますが、エスケープシーケンスが指示する位置へは動きません。

エスケープシーケンス

全てを制御コードで行なうには不十分なので (また、何らかの理由でそれらの 全てが使われるわけでない)、多くのエスケープシーケンスが使われています。 エスケープシーケンスは ``エスケープ'' (ESC) 制御文字と普通の文字からな ります。エスケープ文字を受信すると、端末は次に続く文字を調べて、シーケ ンスを解釈してコンピュータの意図に従って動作します。一旦シーケンスの終 わりを認識すると、さらに受信した文字をスクリーンに表示します (それが制 御コードやエスケープシーケンスでなければ)。幾つかのエスケープシーケン スは、カーソルを移動させるスクリーン座標のように、パラメータ (か、オプ ション) を取ります。パラメータはエスケープシーケンスの一部です。幾つか の端末用の エスケープシーケンスリスト は ウェブ上にありますが、説明は簡単なものです。

あなたの端末のエスケープシーケンスリストは、端末の ``プログラムマニュ アル '' に記載されているでしょう。かなり古い端末でなければ 200 か 300 のエスケープシーケンスがあるはずです。そのようなマニュアルをお持ちでな かったら、見つけ出すのは簡単ではありませんよ。エスケープシーケンスの幾 つかはインターネットでも見つけられます。リンクの一つは エスケープシーケンスリストです。あるエスケープシーケンス (ESC[5m のような) をインターネットで探せば、長いリストの中から偶然見つ けられるかもしれません。

それらの幾つかを確定する別な方法は、terminfo エントリ (termcap) で端末 を探し、知的に読み解くことです。本書の Terminfo と Termcap (詳細)か、インターネットの Termcap マニュアルをご覧ください。残念 ながら、端末の terminfo (termcap) には、使用可能なエスケープシーケンス がリスト中に載っていないこともありますが、最も大事なことはたいていここ にあります。

7.4 表示属性とマジッククッキー

端末には文字の属性 (ボールド、反転、下線など) を設定する各種の方法があ ります。どのように設定するかということをユーザは心配する必要はありま せん。一部の古い端末で問題が発生することを除けば、新しい端末ではセット アップメニューのオプションとなっているからです。

マジッククッキー方式は時代遅れです。それは属性を定義する最も簡単(で最 悪) な方法です。属性の最初には、あるバイトを使い、最後には別なものを使 います。例えば、``下線開始'' マジッククッキーは下線が引かれる最初の言 葉の前に置かれます。これらの余分なバイトはスクリーンページのメモリ内に 置かれます。ちょうど文字を表示するキャラクタバイトのように。しかし非印 字文字であるマジッククッキーと他の印字文字が混在するので、各行毎の数を 数えるのを難しくさせます。これは時々問題を起こします。

もっとよい方法としては、さらにメモリを使ってはしまうものの、各表示文字 ごとに、属性を記憶しておくために 1 バイト (あるいは半バイトずつなど) を割り当ててしまうものがあります。この方法は一般的な PC モニタ用の PC ビデオカード (テキスト用) で使われています。


次のページ 前のページ 目次へ