VT400/VT500シリーズのページ

前回書いたように、今回は代替画面バッファに似た機能であるVT400/VT500シリーズのページについて書いてみます。

概要

DECのVT400シリーズ以降の端末では、ページという概念が導入されました。画面バッファは一つまたは複数のページで構成され、この内の一つのページが画面に表示されます。初期状態ではページ1が表示されていますが、ページ移動命令で表示&編集対象のページを切り替える事が出来ます。この辺りは代替画面バッファと同じですね。

代替画面バッファとの違い

代替画面バッファに似た機能と書きましたが、違う部分も有ります。

ページ数

代替画面バッファではメイン画面と代替画面の2画面構成でした。

ページでは、機種や設定によりますが、3ページ以上持つ事が出来ます。例えばvt525では最大9ページを持たせる事が出来ます。

切り替え命令

代替画面バッファでは画面切り替えがモードとして実装され、DECSET/DECRSTにより切り替えます。

ページでは、以下の5種類の専用の移動命令が有ります。

  • NP — 次のページの左上にカーソルを移動
  • PP — 前のページの左上にカーソルを移動
  • PPA — 指定のページに移動、カーソル位置は現在の座標と同じ位置
  • PPR — 次のページに移動、カーソル位置は現在の座標と同じ位置
  • PPB — 前のページに移動、カーソル位置は現在の座標と同じ位置

表示画面とカーソル位置

代替画面バッファではカーソルは常に表示している画面にあり、表示していない画面の内容を編集する事は出来ません。

ページでは表示している画面を変えずにカーソル位置を別のページに移動する事ができ、表示していないページの内容を編集する事が出来ます。
また、ページ間で矩形領域をコピーする命令も有ります。

カーソル位置保存

代替画面バッファでは、カーソル位置保存命令で保存されるカーソル位置がそれぞれの画面で独立しています。例えば、

  1. メイン画面で(10,10)の位置でカーソル位置を保存する
  2. 代替画面に切り替え、(20,20)の位置でカーソル位置を保存する
  3. メイン画面に切り替え、カーソル位置を復元する

という操作を行った場合、カーソル位置は(10,10)になります。

ページでは、カーソル位置保存命令で保存される位置が全ページで共通になっています。例えば、

  1. ページ1で(10,10)の位置でカーソル位置を保存する
  2. ページ2に移動し、(20,20)の位置でカーソル位置を保存する
  3. ページ1に移動し、カーソル位置を復元する

という操作を行った場合、カーソル位置は(20,20)になります。

ページによる代替画面バッファ相当の動作の実現

代替画面バッファではvi等の全画面を使用するコマンドの終了時に、コマンド実行前の画面状態に戻す事ができました。
ページでも設定次第で同じような事が出来ます。

今回試した環境はFreeBSD 9.1で、使用した端末はvt525です。
FreeBSDでは主にtermcapが使われていますので、~/.termcapに以下の内容を追記しました。

vt525:sc=\E7:ti=\E7\E[H\E[2 P\E[2J:te=\E[1 P\E8:tc=vt520:

FreeBSDのtermcapにはvt520エントリが有るのでそれを利用していますが、無い場合はvt100等を利用すればいいでしょう。
FreeBSDのtermcapのvt520エントリには、rc (restore cursor) capabilityが有るのに sc (save cursor) capabilityが無いという不具合が有りますので、その問題を吸収する為に sc capability も追加しています。
それではこの設定の核となるti/teで何をしているか見て見ましょう。

ti:
  \E7     -- カーソル位置保存
  \E[H    -- カーソル位置を左上隅に移動
  \E[2 P  -- ページ2に移動
  \E[2J   -- 画面消去

te:
  \E[1 P  -- ページ1に移動
  \E8     -- カーソル位置復元

ページ1をメイン画面、ページ2を代替画面として位置づけ、前回説明した代替画面バッファの47番相当の事を行っています。ただし画面消去のタイミングは1049番に合わせています。
tiでカーソル位置を一度左上に動かしているのは、これを行わないと表示に問題が出たためです。これは仕様なのかバグなのかちょっと判りませんでした。

この設定で、vt525で代替画面バッファ相当の動作が実現できました。

最後に

今回は後期のDEC製端末の機能であるページについて書いてみました。
ページを実装している端末エミュレータは極端に少ないのでまず使う機会はないと思いますが、もし使う事が有ったら試してみて下さい。

You can leave a response, or trackback from your own site.

Leave a Reply

Subscribe to RSS Feed Follow me on Twitter!