表示スペース

表示スペースは、セッション・ウィンドウでの行とカラムの各位置の エレメントを含む (ただし、オペレーター情報域に使用されるセッション・ ウィンドウの最後の行を含まない) データ構造です。表示スペースのサイズは、 セッション・ウィンドウのサイズによって異なります。例えば、セッション・ウィンドウが 80 行と 25 列の 場合、表示スペースのサイズは 80 * 24 = 1920 になります。

表示スペースでのエレメントの位置は、セッション・ウィンドウでの 行とカラムの位置に直列的に (左から右、上から下) 対応します。例えば、セッション・ ウィンドウが 80 行と 25 列の場合、以下の表のようになります。
図 1. セッション・ウィンドウの行と列の位置と表示スペースでの位置の対応
     Row of    Column of  Corresponds to
     Session   Session    element at this
     Window:   Window:    position in PS:
         1          1             1
         1          2             2
         1          3             3
      ...
         1         80            80
         2          1            81
         2          2            82
         2          3            83
      ...
        24         79          1919
        24         80          1920
Z and I Emulator for Web は、表示スペースを使用して、セッション・ウィンドウで表示される文字を格納します。表示スペースの各エレメントを使用して、 文字 (および輝度などのその文字に関する情報) を格納します。例えば、ストリング Message がセッション・ウィンドウの行 1 と列 1 に表示されると、以下の図のようになります。
図 2. 「Message」が行 1 と列 1 に表示される場合のレイアウト
     Row of    Column of  Corresponds    Character
     Session   Session    to element     stored in
     Window:   Window:    at this pos-   this element:
                          ition in PS:
         1          1          1          M
         1          2          2          e
         1          3          3          s
         1          4          4          s
         1          5          5          a
         1          6          6          g
         1          7          7          e
表 1 には、さまざまな値を計算するための公式 (通常使用する必要はありません) が 記載されています。これらの公式で使用されている記号の意味は以下のとおりです。
  • row - セッション・ウィンドウの行の位置
  • col - セッション・ウィンドウの列の位置
  • pos - 表示スペース内での位置
  • NUMROWS - セッション・ウィンドウの行数。オペレーター情報域 (OIA) に使用される最後の行は含まれていません
  • NUMCOLS - セッション・ウィンドウの列数。
表 1. 表示スペースに関連する値を計算するための公式
値: 計算のための公式
Size of the PS
 NUMROWS * NUMCOLS

    Example:
    24 * 80 = 1920
row
 (pos + NUMCOLS - 1) / NUMCOLS

    Example:
    (81 + 80 - 1) / 80 = 2 
col
 pos - ((row - 1) * NUMCOLS)

    Example:
    1920 - ((24 - 1) * 80) = 80
pos
 ((row - 1) * NUMCOLS) + col

    Example:
    ((24 - 1) * 80) + 1 = 1641