第1編 BTRON3 仕様書に対する制限・補足


BTRON3仕様書(Ver 3.20.00) に対する制限・補足


第1編 共有データ


第2章 TRONコード体系


2.2 既存のコード体系との関連


以下の記述を追加する。

2.2.3 JIS X 0212 (補助漢字)

94区×94点のうち、93区までをシステムスクリプトBゾーンに割り当てている。

2.2.4 六点点字

64文字をシステムスクリプトBゾーンに割り当てている。

2.2.5 八点点字

256文字をシステムスクリプトBゾーンに割り当てている。

2.2.6 GB-2312 (中国語簡体字)

94区×94点、8836文字分の領域をシステムスクリプトCゾーンに割り当てている。

2.2.7 KS-X1001(KS C 5601)(韓国)

94区×94点、8836文字分の領域をシステムスクリプトDゾーンに割り当てている。

2.2.8 CNS-11643 (中国語伝統字)

94区×94点、7面分の領域を確保、スクリプト第6〜7面に割り当てている。

2.2.9 GT書体フォント

96800 文字分の領域を確保、スクリプト第2〜3面に割り当てている。

2.2.10 大漢和辞典収録文字

57236文字分の領域を確保、スクリプト第8面、および第9面Aゾーンに割り当てている。

2.2.11 記号文字類

39564 文字分の領域を確保、スクリプト第9面B,C,Dゾーンに割り当てている。

2.2.12 Unicode

65536文字分の領域を確保、スクリプト第16〜17面に割り当てている。

2.2.13 JIS X 0213 (第3水準・第4水準)

第3水準の文字を、システムスクリプトのAゾーンに割り当てている。 第3水準の文字は、第1水準および第2水準の隙間領域に割り当てられているため、 TRON コードでも、そのままの位置(第1水準および第2水準の隙間領域) に割り当てている。

第4水準の文字については、2436文字分の領域を確保、 システムスクリプトのBゾーン(補助漢字の直前)に割り当てている。 規格では、第4水準の文字を補助漢字の空きの区に割り当てているが、 TRONコードでは、Bゾーンの補助漢字の直前に順番に割り当てている。


2.3 TRON仕様日本語文字コード


2.3.3 TRON仕様日本語文字コード説明


(2) TRON仕様文字コード、(3) 言語指定コードを以下の内容とする。

(2)TRON 仕様文字コード

システムスクリプト (スクリプト第1面)
第1ブロック:(21)(21)×(7E)(7E)Aゾーン8,836文字
(0x21 / 0x21 SP(漢字固定ピッチ))
0x2121〜0x2D7E 非漢字領域 ( 1〜13区)1222文字
0x2E21〜0x7E7E 漢字領域 ( 14〜94区)7614文字
  うち 0x3021〜0x4F53 第1水準漢字(16〜47区51点)2965文字
  うち 0x5021〜0x7426 第2水準漢字(48〜84区6点)3390文字
  うち 上記以外のコード 第3水準漢字1249文字
第2ブロック:(80)(21)×(FD)(7E)Bゾーン11,844文字
0x8021〜0x8060 六点点字64文字
0x8121〜0x8364 八点点字256文字
0x8721〜0xa07E 第4水準漢字2436文字
0xA121〜0xFD7E 補助漢字8742文字
第3ブロック:(21)(80)×(7E)(FD)Cゾーン11,844文字
0x2180〜0x678F GB 32128836文字
第4ブロック:(80)(80)×(FD)(FD)Dゾーン15,876文字
0xB780〜0xFD8F KS X 10018836文字
第3水準の文字は、14,15,85〜94区の他、第1水準の文字、および、第2水準の文字の隙間領域にも割り当てられている。
中国伝統字 (スクリプト第6面、第7面)
CNS-11643の7面(各面は94区×94点)を以下のように割り当てる
CNS面 言語指定コード文字コード
CNS1面0xFE260x2121〜0x7E7E
CNS2面0xFE260x8021〜0xDD7E
CNS3面0xFE260xDE21〜0xFD7E, 0x2180〜0x4F9F
CNS4面0xFE260x5080〜0x7EFD, 0x8080〜0x978F
CNS5面0xFE260x9880〜0xDE8F
CNS6面0xFE270x2121〜0x7E7E
CNS7面0xFE270x8021〜0xDD7E
GT書体フォント (スクリプト第2面、第3面)
GT書体フォントを 96800文字の領域に以下のように割り当てる。
GT書体番号言語指定コード文字コード
1〜 484000xFE220x2121〜0xFDFD
48401〜 667730xFE230x2121〜0xE54B
66774〜 675510xFE230xE54C〜0xED65
(予約)0xFE230xED66〜0xFDFD
大漢和辞典収録文字 (スクリプト第8面、第9面Aゾーン)
大漢和辞典収録文字 51110文字を 57236文字の領域に以下のように割り当てる。 大漢和番号はダッシュ付き番号も含んでいるため文字数と番号は一致しない。
大漢和番号言語指定コード文字コード
本巻 1〜480550xFE280x2121〜0xFDFD
本巻 48056〜499640xFE290x2121〜0x353A
補巻 1〜8040xFE290x353B〜0x3D6E
(予約)0xFE290x3D6F〜0x7E7E
記号文字類 (スクリプト第9面B,C,Dゾーン)
記号文字類を 39564文字の領域に以下のように割り当てる。
文字種別言語指定コード文字コード
(予約)0xFE290x8021〜0x907E
iモード絵文字0xFE290x9121〜0x937E
ホツマ文字0xFE290x9421〜0x957E
陰陽五行0xFE290x9621〜0x967E
序数記号0xFE290x9721〜0x977E
アーヴ文字0xFE290x9821〜0x987E
(予約)0xFE290x9921〜0xFDFD
中国伝承文字、少数民族文字類 (スクリプト第10面)
中国伝承文字、少数民族文字類を以下のように割り当てる。
文字種別言語指定コード文字コード
トンパ文字0xFE2A0x2121〜0x2F7E
(予約)0xFE2A0x3021〜0xFDFD
Unicode(スクリプト第16面、第17面)
65536文字分の領域を2つの面に割り当てる。
Unicode 言語指定コード文字コード
U+0000-U+abff0xFE300x2121-0xDBA9
U+ac00-U+ffff0xFE310x2121-0x27C3

(3) 言語指定コード

割り当て言語指定コード
1システムスクリプト0xFE21
2〜3GT書体フォント0xFE22, 0xFE23
4〜5(予約)0xFE24, 0xFE25
6〜7CNS-11643(中国伝統字)0xFE26, 0xFE27
8大漢和辞典収録文字0xFE28
9大漢和辞典収録文字・記号文字類0xFE29
10中国伝承文字、少数民族文字類0xFE2A
11〜13(欠番)0xFE2B 〜 0xFE2D
14〜15(予約)0xFE2E, 0xFE2F
16〜17Unicode0xFE30, 0xFE31
18〜31(予約)0xFE32 〜 0xFE3F

第3章 TAD詳細仕様書


3.4 TADデータ構成の詳細


3.4.8 指定付箋セグメント


□ データ形式:

固有データのメンバ:
        UB      dat[dlen]       -- 固有データ ( dlen バイト )
を、以下のように変更する:
        UB      data[dlen]       -- 固有データ ( dlen バイト )

第4章 フロッピーディスク形式

《R4 での変更内容》

ファイルシステムの総容量4GB超に対応する拡張形式2を追加。
これに伴い、従来の拡張形式を拡張形式1とする。


4.2 ファイルシステム構成


4.2.2 システムブロック構成


以下のように拡張形式2を追加

TRONディスクID:
標準形式の場合    0x42FE
拡張形式の場合    0x52FE  (拡張形式1および2共通)
ディスク形式ID:
標準形式の場合    0x6400
拡張形式1の場合  0x6401
拡張形式2の場合  0x6402

4.3 ファイル構成


4.3.3 ファイルヘッダの構成


拡張形式2のファイルヘッダは以下の形式となる。
拡張形式1に、レコードインデックス開始位置 ridxofs が追加されている。

typedef struct {
        UW      startid;        /* ファイルヘッダ開始 ID (0x54726F6E) */
        UH      ftype;          /* ファイルタイプ */
        UH      atype;          /* アプリケーションタイプ */
        VB      own[28];        /* 所有者名+隠し名 */
        VB      grp[28];        /* グループ名+隠し名 */
        UH      gacclv;         /* グループアクセスレベル */
        UH      pacclv;         /* 一般アクセスレベル */
        H       nlnk;           /* 含まれるリンク数 */
        H       idxlv;          /* インデックスレベル */
        W       size;           /* ファイルの総バイト数 */
        W       nblk;           /* 総使用論理ブロック数 */
        W       nrec;           /* 総レコード数 */
        VB      reserved1[8];
        W       ltime;          /* 保存期限 */
        W       atime;          /* 最新のアクセス日時 */
        W       mtime;          /* 最新の更新日時 */
        W       ctime;          /* ファイルの生成日時 */
        VB      name[40];       /* ファイル名 */
        VB      pswd[24];       /* 合言葉 */
        W       refcnt;         /* ファイル参照カウント (≧255) */
        UH      ridxofs;        /* レコードインデックス開始位置 */
        VB      reserved2[8];
        UH      fid;            /* ファイル ID */
        UW      endid;          /* ファイルヘッダ終了 ID (0x82DDE96B) */
} DfFileHeader;

レコードインデックス開始位置:
レコードインデックスまたは間接インデックスの先頭をファイルヘッダブロックの先頭からのオフセット(バイト位置)で指定する。これにより、フラグメントテーブルの登録数が可変となる。
レコードインデックス開始位置は、必ず16バイト単位の位置でなければならない(レコードインデックスが1つあたり16バイトであるため)。また、フラグメントテーブルの領域をなくしてはいけない。
したがって、レコードインデックス開始位置は次の範囲となる。
(192 + 16) ≦ ridxofs ≦ (論理ブロックサイズ - 16)


4.3.4 フラグメントテーブルの構造


拡張形式2のフラグメントテーブルは以下の形式となる。

typedef struct {
        UH      size;           /* フラグメントサイズ */
        UH      offset;         /* ブロック内オフセット */
        UW      blk;            /* 論理ブロックアドレス */
} DfFragment2;

フラグメントテーブルの最大登録数は可変となる。
ファイルヘッダの終端から、ファイルヘッダに指定されたレコードインデックス開始位置までがフラグメントテーブルとなる。


第2編 OS 仕様


第1章周辺核


1.1 プロセス/タスク管理


以下のシステムコールを追加する

《R4 での変更内容》

共有ライブラリのサポート機能が追加された。
prc_inf
 
プロセスの各種情報の取得 (追加システムコール)

【形式】

WERR prc_inf( W pid, W item, VP buf, W len )

【解説】

pid (プロセスID) で指定したプロセスに関する各種情報を取得し buf へ格納する。 情報の種類は item で指定する。 pid = 0 は自プロセス、pid = -1 は親プロセスを示す。 lenbuf のサイズ (バイト数) で、 必要サイズに満たないときはエラー (ER_PAR) となり buf には何も格納されない。 戻値に、buf に必要なサイズ(バイト数)を返す。 buf = NULL を指定した場合は情報は格納されないが、 戻値には buf に必要なサイズが返される。 この場合、len は無視される。

情報の種類(item)
#define PI_LINK         0x00010000      /* プログラムファイルのリンク */
#define PI_NTSK         0x00020000      /* プロセス内タスク数 */
#define PI_TSKSTAT      0x00030000      /* 各タスクの状態 */
PI_LINK
  item    PI_LINK
  buf     LINK

プログラムファイルのリンクを取得する。
cre_prc() で指定されたプログラムファイルのリンクを返す。

PI_NTSK
  item    PI_NTSK
  buf     W ntsk

プロセス内のタスク数(メインタスクとサブタスクの合計)を取得する。

PI_TSKSTAT
  item    PI_TSKSTAT + n
  buf     typedef struct {
                  W       tskid;          /* タスクID */
                  UW      state;          /* タスク状態 */
                  W       priority;       /* タスク優先度 */
           } P_TSKSTAT;

           state = P_WAIT ‖ P_READY ‖ P_RUN

n 番目のタスクの状態情報を取得する。
n = 0 がメインタスクの情報となり、n >= 1 がサブタスクとなる。
n は、PI_NTSK で得られたタスク数 - 1 までが有効となる。

req_emg
 
プロセス終了通知 (追加システムコール)

【形式】

WERR req_emg( W pid, W t_mask )

【解説】

指定のプロセスの終了を、メッセージで通知する。
pid で指定したプロセスが終了した時、 終了通知のメッセージが自プロセスに送信されるように設定する。 通知される終了の種類を t_mask で指定する。

pid = -1 は親プロセスを表わす。 自プロセスは指定できない( ER_SELF)。

t_mask = [MM_ABORT] | [MM_EXIT] | [MM_TERM]
          MM_ABORT        プロセスが異常終了した時通知
          MM_EXIT         プロセスが正常終了した時通知
          MM_TERM         プロセスが強制終了した時通知

t_mask = 0 の時は、終了通知を解除する。
t_mask < 0 の時は、設定を変更しない。

戻値に変更前の t_mask の設定値を返す。
自プロセスが終了した時は自動的に設定は解除される。

終了通知のメッセージは次の形式となる。

  typedef struct {
          W       type;   /* メッセージタイプ (MS_SYS2) */
          W       size;   /* メッセージサイズ */
          W       kind;   /* 終了タイプ (MS_ABORT,MS_EXIT,MS_TERM) */
          W       pid;    /* 終了したプロセスのプロセス ID */
          W       code;   /* 終了コード */
  } EXITMSG;

kind, pid, code は親プロセスに送られる終了メッセージと同じ内容である。

kind 終了メッセージタイプ (MS_ABORT, MS_EXIT, MS_TERM のいずれか)
pid 終了したプロセスのプロセス ID
code システムのエラーコードまたは ext_prc(), ter_prc() で指定した終了コード

EXITMSGMS_SYS2 の各種システムメッセージの中の 1 つとなる。

  typedef union {
         struct {                /* MS_SYS2 の基本形式 */
                  W       type;   /* メッセージタイプ (MS_SYS2) */
                  W       size;   /* メッセージサイズ */
                  W       kind;   /* 種別 */
                  VW      info[1];/* 種別ごとに異なる各種情報 */
          } base;
          EXITMSG exitmsg;        /* 終了通知 */
  } MSG_SYS2;

終了通知のメッセージは、 通常の子プロセスの終了時に親プロセスに通知される終了メッセージとは別に送信される。 したがって、子プロセスに対して終了通知を設定した場合は、 終了通知のメッセージ( MS_SYS2 )が来た後に、 さらに終了メッセージ( MS_ABORT,MS_EXIT,MS_TERM )が来ることになる。

lod_mod
 
共有オブジェクトのロード (追加システムコール)

【形式】

WERR lod_mod( LINK *lnk, P_DYNLDINF *info )

【解説】

  typedef struct {
          VP      loadaddr;       /* ロードアドレス */
          UW      loadsize;       /* ロードサイズ */
          FP      entry;          /* エントリーアドレス */
          UW      info[3];        /* 機種依存の情報 */
  } P_DYNLDINF;

lnk で指定した共有オブジェクトを自プロセスのローカル空間にローディングする。 ロードした共有オブジェクトに関する情報を info に返す。 ロードID (>0)を戻値に返す。

リンク時の指定とは無関係に、ローカル空間の空き領域にロードする。 共有オブジェクトをメモリー上に読み出す(マッピングする)のみで、リロケーション等の処理は行わない。 すでにロードされている共有オブジェクトと同じものを指定した場合も、新たに別のメモリー空間を割り当ててロードする。

unl_mod
 
共有オブジェクトのアンロード (追加システムコール)

【形式】

ERR unl_mod( W loadid )

【解説】

loadid で指定した共有オブジェクトをアンローディングする。 共有オブジェクトが使用中であるか否かは関知しない。

なお、プロセス終了時には自動的にすべての共有オブジェクトがアンロードされる。


1.2 メッセージ管理


brk_msg
 
イベント発生通知

brk_msg() は、 中心核 ( ITRON ) のサイクリックハンドラなど、 プロセス / タスク以外からも呼び出すことができる。



1.5 メモリ管理


以下の記述を追加する。

○ DMA 専用メモリー (PC-AT のみ)

PC-AT の場合、下位 16MB のメモリー空間に対してしか DMA 転送を行うことができず、 また 64KB or 128KB 境界を含む領域に対して DMA 転送ができない。 これらの制約から、DMA 転送可能な領域を確保するための特殊なメモリー管理機能を用意している。

※ この機能は PC-AT 固有の機能であり、他機種ではサポートされない。

メモリー管理のシステムコールに、 DMA 専用メモリー確保のためのオプションが追加されている。

get_mbk
 
メモリブロックの獲得(オプションの追加)

【形式】

ERR get_mbk( VP *adr, W nblk, UW atr )

【パラメータ】

M_DMA   0x80000000      DMA 専用メモリー指定

atr = M_DMA|M_SYSTEM|M_RESIDENT の指定により、 DMA 専用メモリーを確保する。 M_DMA を指定する場合、他のオプションの組み合わせは許されない。

得られるメモリーは 64KB 境界を含まないことが保証される。 したがって、最大で 64 KB の連続領域しか確保できない。 得られるアドレスは論理アドレスである。

DMA 専用メモリーは、mbk_sts() によって得られるメモリー状態情報には含まれない。

DMA 専用メモリーはシステム起動時にその領域およびサイズが決定されるため、 それを超えて確保することはできない。 標準では約 30KB の領域が DMA 専用メモリーとして用意されている。


1.6 ファイル管理


以下の記述を追加する。

ファイル名、ファイルシステム名等の無効文字

0x0000 〜 0x001f の制御コードは無効。
0xff00 〜 0xffff の特殊コードは無効。
これらのコードが含まれた場合、ER_FNAME となる。
なお、0xff21 〜 0xff23 はパス名の区切り等の特殊文字として使用されており、 その用途においては使用可能である。

パス名

パス名の区切りと区切りの間が一意表現であるものとする。
したがって、パス名の区切りごとにシステムスクリプト(0xfe21)に戻ることになる。

(例)    ○:システムスクリプト(0xfe21)の文字
        △:他スクリプト(0xfe31)の文字
        /:パス名の区切り(TC_FDLM=0xff21)

        /○○[fe31]△△/○○          ←正
        /○○[fe31]△△[fe21]/○○    ←誤

この 2 つは同じパス名とはみなされない。
下のパス名は一意表現になっていないので誤りであるが、 ファイル管理はチェックしない。

《R4 での変更内容》

FS_STATE の定義において、論理ブロックのバイト数 fs_bsize の型を H から UH に変更する。また、論理ブロックのバイト数は2のべき乗となっている制限を緩和し、物理ブロックサイズの倍数とする。
typedef struct {
        UH      fs_bsize;       /* 論理ブロックのバイト数               */
        UH      fs_nfile;       /* 最大ファイル数                       */
        H       fs_lang;        /* ファイルシステムでの使用言語         */
        H       fs_level;       /* ファイルシステムのアクセス管理レベル */
        W       fs_nblk;        /* 全体のブロック数                     */
        W       fs_nfree;       /* 未使用ブロックの総数                 */
        STIME   fs_mtime;       /* 最新のシステムブロックの更新日時     */
        STIME   fs_ctime;       /* ファイルシステムの生成日時           */
        TC      fs_name[L_FSNM];  /* ファイルシステム名                 */
        TC      fs_locat[L_DLNM]; /* デバイス所在名                     */
} FS_STATE;
ins_rec
 
レコード挿入

解説の項にある以下の記述を削除する。

現在レコードがリンクレコードのときは buf の内容は LINK 構造体となるが、 属性データ部分のみが書き込まれ、参照するファイル自体を変更することはできない。 この場合、offset = 0size ≧LINK 構造体のサイズ (または size = 0 ) でなくてはいけない。
opn_fil
 
ファイルのオープン

パスワードはサポートしていない。

chk_fil
 
ファイルアクセス権チェック

パスワードはサポートしていない。

chg_fpw
 
ファイルパスワード変更

このシステムコールはサポートしていない。

map_rec
 
レコードのマップ

次の場合には、マップできないという制限がある。

syn_fil
 
ファイル単位の同期 (追加システムコール)

【形式】

ERR syn_fil( W fd )

【パラメータ】

fd      ファイルディスクリプタ

【リターン値】

= 0    正常
< 0    エラー (エラーコード)

【解説】

指定されたオープン中のファイルに関して、 一時的にメモリーに保持されている内容等をディスクに書き出す。 レコードマップ(map_rec)による書き込みも同様にディスクに書き出される。


1.7 イベント管理


以下の記述を追加する。

イベントメタキー状態

イベント構造体(EVENT)のメタキー状態情報 (stat)に下記の状態が追加されている。

  ES_KBSEL        0x00020000      キーボード選択
                                  0: かな入力
                                  1: ローマ字入力

ホイールマウス対応機能

ホイールマウスのホイールの回転をイベントで通知するための特殊イベント (ホイールイベント)が追加されている。

※ この機能は、将来仕様が変更される可能性がある。

・ホイールイベントの内容

ホイールのイベントは EV_AUTKEY のキーイベントとなる。
ただし、イベントの優先度は本来のキーリピートによる EV_AUTKEY とは異なり、 ホイールによる EV_AUTKEY は最低優先度 ( EV_NULL よりは上)とする。

  イベント内容
  type                    EV_AUTKEY
  data.key.keytop         0x8000 + 回転量
                          回転量 > 0      ホイールを手前に回転
                          回転量 < 0      ホイールを奥に回転
  data.key.code           KC_SS_D         ホイールを手前に回転
                          KC_SS_U         ホイールを奥に回転

※ ホイールの回転による EV_KEYDWN, EV_KEYUP イベントは発生しない。

・ホイールイベントの生存時間

ホイールのイベントは、下記の条件のいずれかが成立したとき、 イベントキューから自動的に消滅する。

  1. ホイールを回転させてから 300ms 以内にアプリケーションがホイールイベントを取り出さなかったとき。
  2. ホイール以外のイベント (EV_NULL を除く) をアプリケーションが取り出したとき。

なお、アプリケーションが取り出すまでの間に、 ホイールが複数回回転させられたときは、 その合計量が 1 回のイベントとして扱われる。 ただし、回転方向が反転した場合は、それ以前の回転量は捨てられる。

chg_pda
 
ポインティングデバイス属性の変更(属性の拡張)

【形式】

WERR chg_pda( W atr )

【パラメータ】

ポインティングデバイス属性 atr が次のように拡張されている。

xx..xx xWQV CCCA RRRR SSSS

S:感度
0: 最低感度 〜 15: 最高感度
R:スキャン速度
0: 最低速 〜 15: 最高速
A:動作タイプ
0: 相対座標タイプ
1: 絶対座標タイプ
C:ポインタ移動加速度 (相対座標動作時のみ有効)
0: 加速なし
1〜7: 加速小〜大
V:左右反転
0: 右手モード
1: 左手モード
Q:クイックプレス ( 3 ボタンマウス等の使用時に有効)
0: 無効
1: 有効
W:ホイール (ホイールマウス使用時に有効)
0: 無効
1: 有効
x:予約 (= 0)

1.10 システム管理機能


OS バージョンの取得機能のみサポートしている。

def_exc
 
例外処理ハンドラ定義

このシステムコールはサポートしていない。

ret_exc
 
例外処理ハンドラ終了

このシステムコールはサポートしていない。

get_cnf
 
コンフィグレーション情報の取得

このシステムコールはサポートしていない。


第2章 ディスプレイプリミティブ


2.2 基本概念


2.2.2 ビットマップ


ビットマップの構造

圧縮ビットマップ

ビットマップの圧縮、復元機能はサポートしていない。つまり、圧縮形式が NOCOMPAC 以外の場合は、エラーとなる。


2.2.4 描画環境


描画環境

描画環境を生成したプロセスが終了した場合は、 そのプロセスが生成した全ての描画環境は自動的に削除される。


マスクピクセル値

マスクピクセル値の機能はサポートしてしない。


2.2.5 文字描画


文字描画カラー

文字のグレースケール表示をサポートしている。
フォントとしてグレースケール表示指定を行い、 実際にグレースケールフォントのイメージが取り出された場合にグレースケール描画を行う。
グレースケールは文字前景色かた文字背景色へのグラデーションとして描画される。
文字色の指定として透明色が指定されている場合、グレースケール部分の描画に関しては、 指定色指定の最上位ビットを 0 にしたものとして扱い、グレースケールの色を決定する。
したがって、文字前景色に 0x10000000 ()、背景色に 0x90FFFFFF (白 + 0x80000000)を指定した場合、文字色は黒から白へのグラデーションとして、 背景色は透明として描画が行われる。

文字セット

描画環境には、 言語指定コードが指定されていない状態で文字コード描画が要求された場合の、 デフォルトの言語指定として使用される文字セットが保持されている。
文字セットは不定長の言語指定コードを短縮したもので、 言語指定コードを以下のように変形したものである。

    言語指定コード                          文字セット(SCRIPT)
    0xFE×N, (0x21〜0x7E,0x80〜0xFD)        N-1, (0x21〜0x7E,0x80〜0xFD)

    現時点では、N = 1 のみサポートしている。

システムスクリプト( 0xFE21 )の文字セット( SCRIPT )は 0x0021 となる。

描画環境の文字セットは言語指定コードを含む文字列描画によって変更される。

描画環境の初期値は 0x0021 である。


2.3 基本関数



2.3.1 描画環境の生成/削除


gcls_env
Delete Drawing Environment
gcls_env

プロセスが終了した場合には、 そのプロセスが生成したすべての描画環境は自動的に削除される。


2.3.2 カラーマップの操作


gget_col
Get Color Map Entries
gget_col

【形式】にあるシンボルOUTを削除する。 すなわち、形式は以下のようになる。

【形式】
W gget_col ( GID gid, UW p, COLOR *cv, UW cnt )

2.3.3 描画環境レコードのアクセス


gcre_pat
Create Pattern Image
gcre_pat

【解説】の項第3段落の文:

*pat には、生成された内部パターンイメージへのポインタが戻され、 そのバイト数が *size に戻される。 得られたポインタを PAT 構造体の ipat.ptr に設定することにより、 パターンとして使用できることになる。 loc != NULL の場合には、*pat には loc の値が設定されることになる。
を、以下のように変更する。
*pat には、生成された内部パターンイメージへのポインタが戻され、 そのバイト数が *size に戻される。 得られたポインタを PAT 構造体の ipat.pat に設定することにより、 パターンとして使用できることになる。 loc != NULL の場合には、*pat には loc の値が設定されることになる。

2.4 図形描画関数



2.4.9 ビットマップの操作


grst_bmp
Restore Bitmap
ビットマップの回復

形式変換指定を行う場合、 転送元ビットマップの形式として複数プレーンをサポートしている。

grst_mbm
Restore Masked Bitmap
ビットマップの回復

形式変換指定を行う場合、 転送元ビットマップの形式として複数プレーンをサポートしている。

gscr_rec
Scroll Rectangle
長方形領域のスクロール

【解説】の項第2段落:

関数値として、パターンで塗りつぶされた部分の矩形領域の数が戻り、 rlp が NULL でない場合は、その矩形領域のリストが設定される。 rlpの要素が不足する場合は、rlp の要素分のみ設定される。
を、以下のように変更する。
関数値として、 パターンで塗りつぶされた部分の矩形領域の数が戻り、 rlp が NULL でない場合は、その矩形領域のリストが絶対座標値で設定される。 rlpの要素が不足する場合は、rlpの要素分のみ設定される。

gsiz_cbm
Get Compression Size
圧縮ビットマップのサイズ計算

この関数はサポートしていない。 常にエラー ( EG_NOSPT )を戻す。

gcom_bmp
Compress Bitmap
ビットマップの圧縮

この関数はサポートしていない。 常にエラー ( EG_NOSPT )を戻す。

gunc_bmp
Uncompress Bitmap
圧縮ビットマップの復元

圧縮形式が NOCOMPAC 以外の場合、 常にエラー ( EG_NOSPT ) を戻す。


2.5 文字(列)描画関数


2.5.1 描画環境レコードアクセス


gset_chc
Set Character Color
文字描画カラーの設定

グレースケールフォントが適用される場合に、 文字前景色、文字背景色がグラデーション色の生成に使用される。 透明色が指定されている場合でも、 設定値の最上位ビットを 0 として解釈し、 グラデーション色の生成に使用される。


2.6 ポインタ制御関数


2.6.2 ポインタの状態/形状


ポインタの前景色と背景色の指定はピクセル値だけではなく 絶対カラー表現でもよい。


第3章 外殻


3.1 ウィンドウマネージャ


《R4 での変更内容》

3.1.1 ウィンドウマネージャの機能


3.1.1.3 ウィンドウの表示


ウィンドウの属性

同一プロセスでオープンした複数の主ウインドウをグループとして取り扱うための 「グループウィンドウ属性(WA_GROUP)」の機能を追加。

グループウィンドウ属性を持った主ウィンドウは以下の動作 (実身/仮身マネージャに関連した動作も含む)となる。


3.1.1.4 ウィンドウの操作


□ ウィンドウ属性

以下の説明を追加。

#define	WA_GROUP    0x10000	/* グループ主ウィンドウ */
#define	WA_THIN	    0x20000	/* スクロールバー無、変形可のとき細枠 */
#define	WA_NOFRAME  0x40000	/* タイトルバー無、変形不可のとき枠なし */

WA_GROUP の指定より、グループウィンドウであることを指定する。 この属性は主ウィンドウ、および従属ウィンドウのときのみ有効で、 他の場合は無視される。

WA_THIN を指定し、かつ変形可能なときは、スクロールバーがない部分の枠の幅が 細くなる。

WA_NOFRAME を指定し、かつタイトルバーなし、変形不可のときは、枠がない ウィンドウとなる。

□ ウィンドウの表示属性

ウィンドウのデザイン、色はシステムで規定しているため、 ウィンドウの表示属性の指定は無視される。


3.1.2 ウィンドウの管理


3.1.2.2 ウィンドウイベント


○ EV_REQUEST

W_REDISP での src に以下の値を追加。

	src = 0x10 : ウィンドウの配色が変更された。

3.1.2.6 ウィンドウ情報レコード


ウィンドウ情報レコードとして対応している項目は以下の通り。

	R  : 取得のみ
	RW : 取得と設定
	RECT, W[] .. : 項目のデータタイプ

○ 一般項目 ( WI_GENERAL= 200 )
WI_FRAMESIZE	(+ 0)	R  RECT	スクリーン全体の領域
WI_WORKSIZE	(+ 1)	R  RECT	スクリーンからシステムメッセージパネルを
				除いた領域
WI_WINLIST	(+ 2)	R  W[]	表示されている全ウィンドウのウィンドウIDの
				配列、手前に位置するウィンドウの順
WI_FRONTLIST	(+ 3)	R  W[]	全フロントエンドプロセスのプロセスIDの配列
WI_MSGSTR	(+ 4)	RW TC[]	システムメッセージパネルの表示文字列
WI_MENUSTR	(+ 5)	RW TC[]	ウィンドウの基本メニュー文字列

○ イネーブルウェア項目 ( WI_ENABLEWARE = 300 )
WI_TITLEFONT	(+ 0)	RW W	タイトルバーのフォントサイズ
WI_MENUFONT	(+ 1)	RW W	メニューのフォントサイズ
WI_SBARWIDTH	(+ 2)	RW W	スクロールバーの幅
WI_DRAGWIDTH	(+ 3)	RW W	移動/変形時のラバーバンド幅
WI_DCLICKT	(+ 4)	RW W	ダブルクリック間隔
WI_DCLICKW	(+ 5)	RW W	ダブルクリック位置許容度
WI_CARETT	(+ 6)	RW W	カレット点滅間隔
WI_CARETW	(+ 7)	RW W	カレット幅の倍率
WI_SELECTT	(+ 8)	RW W	選択枠点滅間隔
WI_SELECTW	(+ 9)	RW W	選択枠線幅の倍率

○ 修飾項目 ( WI_ATTRIBUTE = 400 )
WI_WORKBACK	(+ 0)	RW PAT	背景画面のパターン
WI_PANELBACK	(+ 1)	RW PAT	パネル背景のパターン
WI_HLIGHT	(+ 51)	RW PAT	ハイライト部分の線のパターン
WI_SHADOW	(+ 52)	RW PAT	影の部分の線のパターン
WI_MSGBACK	(+ 53)	RW PAT	システムメッセージパネル背景のパターン
WI_ACTFRAME	(+ 54)	RW PAT	アクティブ主ウィンドウ枠のパターン
WI_INACTFRAME	(+ 55)	RW PAT	インアクティブ主ウィンドウ枠のパターン
WI_SUBFRAME	(+ 56)	RW PAT	従属ウィンドウ枠のパターン
WI_FRONTFRAME	(+ 57)	RW PAT	前面ウィンドウ枠のパターン
WI_MAINMENU	(+ 58)	RW PAT	メインメニュー背景のパターン
WI_MAINMENUF	(+ 59)	RW PAT	メインメニュー枠のパターン
WI_SUBMENU	(+ 60)	RW PAT	サブメニュー背景のパターン
WI_SUBMENUF	(+ 61)	RW PAT	サブメニュー枠のパターン
WI_ACTPARTS	(+ 62)	RW PAT	アクティブパーツ領域のパターン
WI_INACTPARTS	(+ 63)	RW PAT	その他のパーツ領域のパターン
WI_VOLKNOB	(+ 64)	RW PAT	ボリュームのノブのパターン
WI_VOLBACK	(+ 65)	RW PAT	ボリューム背景のパターン
WI_INDON	(+ 66)	RW PAT	ON状態のインジケータのパターン
WI_INDONF	(+ 67)	RW PAT	ON状態のインジケータ枠のパターン
WI_INDOFF	(+ 68)	RW PAT	OFF状態のインジケータのパターン
WI_INDOFFF	(+ 69)	RW PAT	OFF状態のインジケータ枠のパターン
WI_PEMPHAS	(+ 70)	RW PAT	パーツ強調色のパターン
WI_PTOMBO	(+ 71)	RW PAT	ボリュームのトンボのパターン
WI_SBARKNOB	(+ 72)	RW PAT	スクロールバーのノブのパターン
WI_SBARBACK	(+ 73)	RW PAT	スクロールバー背景のパターン
WI_SBARTOMBO	(+ 74)	RW PAT	スクロールバーのトンボのパターン
WI_MINDON	(+ 75)	RW PAT	メニューのON状態のインジケータのパターン
WI_MINDONF	(+ 76)	RW PAT	メニューのON状態のインジケータ枠のパターン
WI_MINDOFF	(+ 77)	RW PAT	メニューのOFF状態のインジケータのパターン
WI_MINDOFFF	(+ 78)	RW PAT	メニューのOFF状態のインジケータ枠のパターン
WI_PANELFRAME	(+ 79)	RW PAT	標準パネルの枠のパターン
WI_POPUPFRAME	(+ 80)	RW PAT	ポップアップウィンドウの枠のパターン
WI_PANELWARN	(+ 82)	RW PAT	警告パネルの枠のパターン
WI_PANELFATAL	(+ 83)	RW PAT	致命的エラーパネルの枠のパターン

○ その他 ( WI_OTHER = 500 )
WI_LASTCARPOS	(+ 0)	R  PNT	  最後にカレットが表示された絶対座標
WI_LASTCARTIME	(+ 1)	R  W	  最後にカレットが表示されたシステム時刻
WI_ACTWTFCOL	(+ 50)	RW COLOR  アクティブウィンドウの前景タイトル色
WI_ACTWTBCOL	(+ 51)	RW COLOR  アクティブウィンドウの背景タイトル色
WI_INACTWTFCOL	(+ 52)	RW COLOR  インアクティブウィンドウの前景タイトル色
WI_INACTWTBCOL	(+ 53)	RW COLOR  インアクティブウィンドウの背景タイトル色
WI_ACTWDTFCOL	(+ 54)	RW COLOR  アクティブ虚身ウィンドウの前景タイトル色
WI_ACTWDTBCOL	(+ 55)	RW COLOR  アクティブ虚身ウィンドウの背景タイトル色
WI_INACTWDTFCOL	(+ 56)	RW COLOR  インアクティブ虚ウィンドウの前景タイトル色
WI_INACTWDTBCOL	(+ 57)	RW COLOR  インアクティブ虚身ウィンドウの背景タイトル色
WI_ACTMENUCOL	(+ 58)	RW COLOR  許可状態の標準メニュー文字色
WI_INACTMENUCOL	(+ 59)	RW COLOR  禁止状態の標準メニュー文字色
WI_ACTGMENUCOL	(+ 60)	RW COLOR  許可状態の汎用メニュー文字色
WI_INACTGMENUCOL(+ 61)	RW COLOR  禁止状態の汎用メニュー文字色
WI_MSGPNLCOL	(+ 62)	RW COLOR  システムメッセージパネルの文字色
WI_ACTPARTSCOL	(+ 63)	RW COLOR  パーツのアクティブな文字色
WI_INACTPARTSCOL(+ 64)	RW COLOR  パーツのインアクティブな文字色
WI_LIGHTPARTSCOL(+ 65)	RW COLOR  パーツのハイライト文字色
WI_VOBJBGCOL	(+ 66)	RW COLOR  仮身のデフォールトのタイトル背景色
WI_FSTITLE	(+ 80) 	RW FSSPEC ウィンドウタイトル文字書体
WI_FSMENU	(+ 81) 	RW FSSPEC メニュー文字書体
WI_FSPARTS	(+ 82) 	RW FSSPEC パーツ文字書体
WI_FSMSGPNL	(+ 83) 	RW FSSPEC システムメッセージ文字書体
WI_FSPANEL	(+ 84) 	RW FSSPEC パネル文字書体
WI_FSWINDOW	(+ 85) 	RW FSSPEC ウィンドウ内文字書体
WI_FSVOBJ	(+ 86) 	RW FSSPEC 仮身文字書体

3.1.4 ウィンドウマネージャの関数


wopn_wnd
 
ウィンドウの生成

ウィンドウの表示属性 (atr) の指定は無視される。
WA_GROUP を指定した場合、par, org は、グループウィンドウのそれぞれのオープン時に同じ値を設定しなくてはいけない。

wcls_wnd
 
ウィンドウの削除

親ウィンドウが存在しない入力受付状態のウィンドウをクローズした場合の説明を、 以下のように変更する。

親ウィンドウが存在しない入力受付状態のウィンドウをクローズした場合は、 もっとも手前にあるウィンドウに EV_SWITCH が送られて入力受付状態が移行する。 なお、この場合は生成元は存在しないものとみなされる。

wget_evt
 
ウィンドウ・イベントの取出し

【パラメータ】

WVENT   *evt    取り出されたウィンドウイベント
W   mode    ::= ( WAIT ‖ NOMSG ‖ RAWEVT ‖ DRGEVT ‖ MSG ‖ DSPEVT ) | [ NOWAIT ]

    MSG     0x0040  ウィンドウは切り替えない
    DSPEVT  0x0050  再表示要求イベントのみを取り出す

【解説】

mode により以下のように振る舞う。

MSG :
アクティブ・プロセスの時:
イベントが発生するまで待って、イベントを取りだし、 対応するウィンドウの相対座標に変換する。 PDの プレスが入力受付状態でないウィンドウで発生した場合でも、 EV_SWITCH を発生せず、EV_BUTDWN として戻す ( 入力受付状態の切換は行なわない ) 。 W_REDISP 以外の EV_REQUEST は取り出さない。
フロントエンドプロセスが存在する時は、 WAIT 指定と同じ処理を行なう。
フロントエンドプロセスの時:
WAIT 指定の場合と同じ。
非アクティブ・プロセスの時:
待ち状態となる。
MSG|NOWAIT:MSG 指定に対して、以下の点が異なる。
DSPEVT :
アクティブ・プロセスの時:
再描画要求イベントのみを取り出す。再描画要求イベントが発生していないときは、ただちに EV_NOMSG を返す。 フロントエンドプロセスが存在する時は、 WAIT 指定と同じ処理を行なう。
フロントエンドプロセスの時:
WAIT 指定の場合と同じ。
非アクティブ・プロセスの時:
再描画要求イベントのみを取り出す。再描画要求イベントが発生していないときは、ただちに EV_NOMSG を返す。
DSPEVT|NOWAIT:DSPEVT 指定と同じ動作をする。
wugt_evt2
 
ウィンドウ・イベントの戻し (2)

【形式】

ERR wugt_evt2(WEVENT *evt)

【パラメータ】

WEVENT  *evt    ウィンドウ・イベント

【リターン値】

≧ 0  正常
< 0  エラー(エラーコード)

【解説】

*evt に格納されているウィンドウ・イベントを戻して、 次に WAIT または NOMSG または MSG のモードで実行される、 wget_evt() 関数で取り出すウィンドウ・イベントとする。 他のモードで実行した場合は取り出されない。

戻したイベントは、通常のイベントに優先して取り出される。 なお、wugt_evt()で戻したイベントは、wugt_evt2()で戻したイベントに優先して取り出される また、取り出される順番は戻した順番である。 イベントの内容については一切チェックされない。

wugt_evt()で戻したイベントとは別に、1 プロセスで最大16個のウィンドウ・イベントをイベントキューに戻すことができる。 同時に使用できるプロセスはウィンドウ数個までであり、 それ以上はエラー ( EX_NOSPC ) となる。

wugt_evt2() で戻したイベントが、wget_evt() で取り出された場合、 フロントエンド・プロセスには渡されない。

この処理は1つのプロセス内で行なわれるため、 戻したイベントは、他のプロセスからの wget_evt() では取り出されない点に注意が必要である。

プロセスが終了した場合は、 そのプロセスによって戻されたイベントは自動的に捨てられる。

この関数は、パーツの処理で期待外のイベントが得られた場合、 そのイベントを一旦戻して、 通常のイベントループに戻った後、 wget_evt() で取り出して処理するために使用される。

wugt_evt2() は、 特殊な用途に使用される関数であり、 通常アプリケーションは使用しない。

【エラーコード】

EX_ADR      : アドレス(evt)のアクセスは許されていない。
EX_NOSPC    : システムのメモリ領域が不足した
              (戻したイベントが16個以上)。
wget_sts
 
ウィンドウ状態の取出し

wid としてパネルID を指定することにより、パネルの状態を取り出すことができる機能が追加された。パネルの場合、stat->r以外の値は意味を持たない。

【解説】の項の後半にある、以下の記述:

全面モードの場合に stat->attrWA_FULL がセットされる。 また stat->attr によって、 WA_STD 指定時には正規座標が、 WA_WORK 指定時には作業領域座標が、 WA_FRAME 指定時には外枠座標が、 stat->r に格納される。
を、以下のように変更する。
また、wopn_wnd()によって指定されたウィンドウ属性によって、 WA_STD が指定されている時には正規座標が、 WA_WORK が指定されている時には作業領域座標が、 WA_FRAME が指定されている時には外枠座標が、 stat->r に格納される。
wchg_dsp
 
ウィンドウのデフォールト表示属性の変更

ウィンドウの表示属性 (atr) の指定は無視される。

wera_wnd
 
ウィンドウの背景パターンでの塗り潰し

wid としてパネルID を指定することにより、パネル内をパネル背景で塗り潰す機能 を追加。
ウィンドウやパネルの背景パターンが変更されることに対応するために、 wera_wnd()を使用して、ウィンドウやパネル内を消去することが 望ましい。ただし、wera_wnd()は、gset_vis()で 設定したクリッピングが利かない点に注意する必要がある。


3.2 メニューマネージャ


《R4 での変更内容》

3.2.1 メニューマネージャの機能


3.2.1.4 標準メニューのデータ構造

項目リストの構造

標準メニューを3段以上の構成とするために以下の機能が追加された。

属性コードとして、拡張文字属性指定コード(MC_EATTR) が追加された。
MC_EATTR (0x1008) の直後に、以下の 20バイト固定のデータがくる。最初の 12 バイトは MC_ATTR による文字属性と同一である。

	COLOR	chcol		-- 文字色の指定
				   (W)chcol < 0 ときは指定なし
	H	class		-- 文字クラスの下位16ビットの指定
				   class == -1 のときは指定なし
	UH	attr		-- 文字属性の下位16ビットの指定
	PNT	csize		-- 文字サイズの指定
				   csize.x > 0 かつ csize.y > 0 のときのみ有効
	UH	eclass 		-- 文字クラスの上位16バイトの指定
	UH	eattr  		-- 文字属性の上位16ビットの指定
	TC	fontnm[12] 	-- フォントファミリ名
				   空文字列のときは指定なし
項目リストの先頭に拡張文字属性指定コードがある場合、その指定は以降の項目リスト全体に有効となるため、同じ属性のときに項目ごとに属性コードを入れる必要はない。

属性コード ( メタコード ) は、 区切り文字としての意味と、 続く項目の属性指定の意味を持ち、属性コードの出現によってシステムスクリプトへの切り替えも行われる。したがって、それぞれの項目文字列は、先頭に言語切り替えコードがない場合、システムスクリプトで始まるものと解釈される。


3.2.3 メニューマネージャの関数


mchg_dsp
 
標準メニューのデフォルト表示属性の変更

標準メニューのデザイン、色はシステムで規定しているため、 この関数によるデフォルト表示属性の変更は無視される。 (エラーとはならない。)


3.3 パーツマネージャ


《R4 での変更内容》

3.3.1 パーツマネージャの機能


3.3.1.3 パーツのデータ構造


文字属性指定コードの classattr は 16bits 幅とする。すなわち:

        COLOR   chcol  -- 文字色指定 (-1は文字色指定無し)
        H       class  -- フォントクラス指定 (-1はデフォルトフォント)
        UH      attr   -- フォント属性指定 (0は通常体)
        PNT     csize  -- フォントサイズ指定
                          (csize.c.h または csize.c.v が0以下はデフォルトサイズ)

3.3.1.4 パーツの状態


パーツの点滅はサポートしていないため、点滅状態 (P_BLINK) の指定は無視される。
そのため、以降の個々のパーツでの点滅状態の説明はすべて意味を持たない。

3.3.2 パーツの種類

3.3.2.1 テキスト・ボックス

□ 定義構造

3.3.2.2 シークレット・テキスト・ボックス

□ 定義構造

3.3.2.4 シリアル・ボックス

□ 定義構造

3.3.2.5 テキスト・オルタネート・スイッチ

□ 定義構造

3.3.2.6 テキスト・モーメンタリ・スイッチ

□ 定義構造

3.3.2.9 スイッチ・セレクタ

□ 定義構造

3.3.2.10 スクロールセレクタ

□ 定義構造

3.3.2.11 ボリューム

□ 表示
□ 状態 / 属性
P_DRAGBREAK : 0 : ドラッグ中に中断しない
: 1 : ドラッグ 中に中断する

P_DRAGBREAKがボリュームパーツに対して指定された場合、cact_par()でボリュームのジャンプスクロール中に、値が変化するたびにパーツ処理が中断する。


3.3.4 パーツマネージャの関数


cdsp_par
 
パーツの表示制御

P_BLINK (点滅) の指定は、エラー (EX_PAR)となる。

cdsp_pwd
 
ウィンドウ内パーツの表示制御

P_BLINK (点滅) の指定は、エラー (EX_PAR)となる。

cact_par
 
パーツの動作実行

【解説】

ボリュームの場合

EV_BUTDWN または EV_SWITCH の場合 :
cchg_par
 
パーツの状態の変更

【パラメータ】

W   pid     パーツID
UW  cmd     cmd は以下の5種の状態指定の任意の組合せ (OR) となる。
P_EMPHAS / P_NORMAL-- 強調枠 / 通常枠
P_NOFRAME / P_FRAME -- 枠無し / 枠有り
P_DISABLE / P_ENABLE-- 操作禁止 / 操作許可
P_INACT / P_ACT -- 不能状態 / 可能状態
P_DRAGBREAK / P_NODRAGBREAK-- ドラッグ中に中断する / しない
cidl_par
 
パーツの定常処理

パーツの点滅はサポートしていない。


3.4 パネルマネージャ


3.4.1 パネルマネージャの機能


3.4.1.5 パネルのデータ構造

文字列は、先頭に言語切り替えコードがない場合、 システムスクリプトで始まるものと解釈される。

3.4.3 パネルマネージャの関数


pdsp_tim
 
システムメッセージパネルの時刻表示

この関数はサポートしていない。 常にエラー ( EG_NOSPT )を戻す。 pact_msgNULL イベントを渡すことで同等の機能が実現される。


3.6 データマネージャ


3.6.2 データ/定数の定義


3.6.2.2 標準データ形式


□ ピクトグラムイメージ (PICT_DATA)

イメージのマスク、および複数サイズへの拡張を行った以下の形式の ピクトグラムイメージをサポートしている。

    CBMP 構造体
    [ マスクイメージ ]
    [別サイズデータへのオフセット] −> (a)
    プレーンイメージ #1
           : :

    CBMP 構造体    <− (a)
    [ マスクイメージ ]
    [別サイズデータへのオフセット]  −> (b)
    プレーンイメージ #1 
           : :

□ 図形ビットマップイメージ (BMAP_DATA)

pixbits, rowbytesUH に変更する。 よって、「図 110 : 図形ビットマップイメージ」は以下のようになる。

図形ビットマップイメージ
図 110 : 図形ビットマップイメージ

3.7 テキスト入力プリミティブ


3.7.1 テキスト入力プリミティブの機能


3.7.1.3 テキスト入力ポート


TIPREC.caretのビット構成:

    xxxx xxxx xxxx xxxx xPPP PPPP PPPP PPPP
を、以下のように変更する。
    XPPP PPPP PPPP PPPP PPPP PPPP PPPP PPPP


TIPREC.clauseのビット構成:

    MXXX XXXX XXXX XXXX XPPP PPPP PPPP PPPP
を、以下のように変更する。
    MPPP PPPP PPPP PPPP PPPP PPPP PPPP PPPP


3.7.3 テキスト入力プリミティブの関数


iput_key
 
テキスト入力ポートへのキー入力(仕様変更)

【形式】

WERR iput_key( W tipid, EVENT *evt )

【解説】

tipid で指定したテキスト入力ポートに evt で指定したイベントを入力し、 その結果のテキスト入力ポートの状態をオープン時に割り当てた TIPREC に戻す。

戻値に、テキスト入力ポートの状態変化等を示す次の値を OR した値を返す。

TIP_OUT 0x01 確定文節が発生した。
TIP_CNV 0x02 未確定文字列が変更された。
TIP_CAR 0x04 カレット位置が変化した。
TIP_CL 0x08 対象文節が移動した。または、区切り位置が変化した。
TIP_PUPREQ0x10 候補選択ポップアップのオープン要求。
TIP_PUPOPN0x20 候補選択ポップアップが開いている。
TIP_IGNORE0x1000イベントは無視された。

TIP_PUPREQ は、 候補選択ポップアップを開く場面になったときに返される。 TIP_PUPREQ が返されたら ipup_sel() によりポップアップを開く必要がある。
候補選択ポップアップが開いている間は常に TIP_PUPOPN が返される。TIP_PUPOPN が返されている間は、 ipup_sel() により返されたポップアップウインドウID が有効である。

イベント evt には WEVENT で定義されるすべてのイベント、 およびイベントタイプに TIP_EVENT が指定された特殊イベントを使用できる。 ただし、候補選択ポップアップの処理を含むかな漢字変換の処理に必要なイベント以外は無視される。 イベントを無視した場合は、TIP_IGNORE が戻値に返される。

候補選択ポップアップ内の表示などの処理もこのシステムコールによって行われるため、 かな漢字変換中は、キーイベントだけでなく再表示イベントなど原則としてすべてのイベントを iput_key() でシステムへ送らなくてはならない。

次の場合はエラーとなる。

イベントを処理する前に、TIPREC.n_out で示される確定文節は TIPREC から削除される。 イベントを無視した場合も同様に確定文節は削除される。

変更点

 
ipup_sel
 
候補選択ポップアップのオープン (新規追加)

【形式】

WERR ipup_sel( W tipid, W pwid, RECT *r )

【解説】

tipid で指定したテキスト入力ポートの候補選択ポップアップを開く。
pwid は候補選択ポップアップの親となるウインドウのウインドウID。
r は現在の変換対象文節の領域を示す座標で、 pwid のウインドウの相対座標で表わす。
r の近傍に候補選択ポップアップが表示される。
戻値に、開いた(開いている)候補選択ポップアップのウインドウID を返す。

iput_key()TIP_PUPREQ が返されたときに ipup_sel() を呼び出すが、 候補選択ポップアップを開く必要がない場合は呼び出さなくてもよい。 その場合も、候補選択ポップアップが開かないだけで、かな漢字変換の動作自体には影響はない。
iput_key()TIP_PUPREQ が返されていない状態で ipup_sel() を呼び出すとエラー ( EX_NOEXS ) となる。
すでに候補選択ポップアップが開いている状態で再び呼び出した場合は、 現在表示されているポップアップの位置が r の近傍に移動する。 この場合、現在表示中のポップアップと pwid が異なっている場合はエラー ( EX_PAR )となる。

ichg_mod
 
テキスト入力モードの変更 (仕様変更)

【形式】

WERR ichg_mod( W mode )

【解説】

modeTIP_ROMAN1TIP_ROMAN2 はローマ字入力モードの指定として同じ意味とする。 n 方式、nn 方式の区別は行わない。 したがって、かな入力/ローマ字入力の選択のみの機能となる。

この切替は、キーボードのメタキー状態の ES_KBSEL の現在状態をかな入力/ローマ字入力に合わせて切り替える。

ichg_lrn
 
学習辞書の保存状態変更 (廃止予定)

【形式】

WERR ichg_lrn( UW kind, W stat )

【解説】

  kind    0x0001  共通辞書
          0x0002  単漢字変換辞書(未サポート)
          0x0004  個人辞書
          その他  未サポート

  stat    0       学習 OFF
          1       学習 ON

※ この機能は、かな漢字変換のカスタマイズ機能に統合される。 互換性のために残っているが、将来的には廃止の方向にある。

iopn_tip
 
テキスト入力ポートのオープン (仕様変更)

【形式】

WERR iopn_tip( TIPREC *tip, W mode )

【解説】

  mode = ( TIP_DIRMD ‖ TIP_CNVMD ) |
         ( TIP_TORIGHT ‖ TIP_TOLEFT ‖ TIP_TOUP ‖ TIP_TODOWN ) |
         [ TIP_TCONLY ]

        TIP_DIRMD       0x0100  直接モード(変換なし)
        TIP_CNVMD       0x0000  変換モード

新規    TIP_TORIGHT     0x0000  横書き(左から右)
新規    TIP_TOLEFT      0x0010  横書き(右から左)
新規    TIP_TOUP        0x0020  縦書き(下から上)
新規    TIP_TODOWN      0x0030  縦書き(上から下)

新規    TIP_TCONLY      0x0008  文字のみ

廃止    TIP_AUTO        0x0000  自動変換モード
廃止    TIP_MANUAL      0x0001  指定変換モード
TIP_TORIGHT, TIP_TOLEFT, TIP_TOUP, TIP_TODOWN
書記方向を指定する。
この指定により、 かな漢字変換の操作のキー割り当ておよび候補選択ポップアップの形式が、 その書記方向に適した設定になる。
TIP_TCONLY
この指定がある場合、TIPREC の変換中文字列 (cnv) およびよみ文字列 (in) には文字コードのみが格納される。 この文字列は一意表現となる。
この指定がない場合は、任意の TAD セグメントが格納される。 ただし、管理情報セグメント、文章開始/終了セグメントは通常省略される。 文章開始セグメントが省略されている場合は、 デフォルト言語がシステムスクリプト(TSC_SYS)の文章データであるとする。
※ 現実装では、文字拡大/縮小指定付箋による全角/半角の TAD セグメントのみが格納される。

互換性のため、TIP_AUTO と TIP_MANUAL の指定は無視する。 この機能は、かな漢字変換のカスタマイズ機能に統合される。

特殊イベント

キー割り当て等のカスタマイズに影響することなく使用できる特殊イベントとして下記のものがある。 これらは、iput_key() の入力イベントとして使用できる。

  #define TIP_EVENT       0x80000000      /* TIP 特殊イベント指定 */

※ WEVENT の内容で特に記述のないものは 0 クリアしておく。


3.8 実身/仮身マネージャ


3.8.1.4 仮身の操作


仮身の操作の項最後の段落冒頭の文:

以下は、アプリケーションの付箋に関する標準的な操作方法の説明であり、 実身 / 仮身マネージャでは、 これらの操作を行なうための基本的な機能を提供している。
を以下のように変更する。
以下は、アプリケーションの付箋に関する標準的な操作方法の説明であり、 実身 / 仮身マネージャでは、 これらの操作を行なうための基本的な機能を提供している。


3.8.6 実身/仮身マネージャの関数


b_odup_vob
 
仮身の複製

関数名 b_odup_vobodup_vob に変更する。

oget_vob
 
仮身の取り出し

【解説】の最終段落にある、特殊機能についての記述を、 以下のように変更する。

特殊機能として、vid < 0 のときは - vid をウィンドウIDとみなし、 そのウィンドウを開く元となった仮身を探して、 その仮身が属するファイルシステムを vlnk に取り出す。
apnl_men
 
パネルメニュー処理
【解説】の第2文、および第3文:
*evt はパネルの動作実行で得られたメニューイベントでなくてはいけない。
*evtEV_KEYDWN のときは、 キーメニューとしての処理を行ない、 そうでないときは、以下の内容のメニューを画面に表示して、 選択された項目に応じた処理を行なう。
を、以下のように変更する。
*epv はパネルの動作実行で得られたメニューイベントでなくてはいけない。
*epvEV_KEYDWN のときは、 キーメニューとしての処理を行ない、 そうでないときは、以下の内容のメニューを画面に表示して、 選択された項目に応じた処理を行なう。

3.9 フォントマネージャ


3.9.2 データ / 定数の定義


《R4 での変更内容》

フォント属性が追加された。

/* フォント属性:固定ピッチ文字枠 */
#define		FT_BOUNDLESS	0x00080000	/* イメージを文字枠に収めない*/
FT_FIXEDと共に指定した場合に有効となり、文字イメージが文字枠をはみだす場合でも、文字イメージを移動・縮小しない。

インデックス・文字幅データ は次の形式となる。

typedef struct {
    UB          widform;        /* 文字幅等データの形式     */
    UB          idxform;        /* インデックスデータ形式   */
    UB          opt;            /* フォント定義オプション   */
    UB          fontnum;        /* フォント番号             */
    OFFSET      offwidth;       /* 文字幅データへのオフセット   */
    OFFSET      offidxtable;    /* インデックスデータへのオフセット */
} IDXWDATA;

3.9.3 フォントマネージャの関数


fget_img
 
文字イメージ情報の取り出し

mode & FT_SYS != 0 の場合、 得られたビットマップは、フォントマネージャが管理するメモリ領域上に存在する。 同一のフォントディスクリプタによる新たなフォントマネージャのシステムコールを呼び出すまでは存在していることが保証される。 通常のアプリケーションは FT_SYS を指定してはいけない。


3.9.5 付録


特定の文字イメージデータの指定

TrueType 形式の文字イメージデータの場合、 複数の文字イメージデータが一つの文字イメージデータレコードに含まれる場合がある。 この場合は、フォント定義データのレコード・サブタイプ、もしくはインデックス・文字幅データの fontnumにより区別する。

文字幅・インデックスデータ

インデックスを必要としない標準ドット形式イメージデータの場合に、文字が未定義であることを表すために、インデックスデータ形式としてビットマップ形式がサポートされている。

ビットマップ形式は、フォント定義データが指定する最初の文字コードから、 定義域内の文字全てについて、未定義であるかどうかを表すビットマップである。 低位アドレスのバイトのMSB(最上位ビット)が最初の文字に対応する。 ビットが0の場合は、その文字が未定義であることを表す。

ビットマップ
図 : ビットマップ

3.10 TCP/IPマネージャ


《R4 での変更内容》

3.10.2 TCP/IP


以下の定義が、BSD ソケットとの互換性向上のため変更されている。互換性がないため注意が必要である。

/*  getsockopt(), setsockopt() のオプション
*/
#define IPPROTO_TCP     0x0006      /* options for TCP level */
#define IPPROTO_IP      0x0000      /* options for IP level */

#define TCP_MAXSEG      0x0002      /* maximum segment size */
#define TCP_NODELAY     0x0001      /* immediate send() */

/*  ioctl のオプション */
#define SIOCATMARK      (0x40000000 | (4 << 16) | ('s' << 8) | 7)
                                    /* check for out of bound data */
#define FIONBIO         (0x80000000 | (4 << 16) | ('f' << 8) | 126)
                                    /* set/clear non-blocking I/O */
#define FIONREAD        (0x40000000 | (4 << 16) | ('f' << 8) | 127)
                                    /* number of bytes to read */

/* select のビットマスク */
#define FD_SETSIZE      256
#define NFDBITS         (sizeof(long) * 8)      /* bits per mask */
#define FD_SET(n, p)    ((p)->fds_bits[(n)/NFDBITS] |= (1 << ((n) % NFDBITS)))
#define FD_CLR(n, p)    ((p)->fds_bits[(n)/NFDBITS] &= ~(1 << ((n) % NFDBITS)))
#define FD_ISSET(n, p)  ((p)->fds_bits[(n)/NFDBITS] & (1 << ((n) % NFDBITS)))
#define FD_ZERO(p)      memset((void *)(p), 0, sizeof (*(p)))
typedef struct fd_set {         /* Bit mask for select() */
        long    fds_bits[(FD_SETSIZE + NFDBITS - 1) / NFDBITS];
} fd_set;

3.10.4 システムコール


EX_FAULT のエラーは発生しない。EX_ADR のエラーとなる。

so_gethostbyname
 
名前によるホスト情報の取得

【解説】の項第2文において、

B buf[HBUFLE] で定義される作業領域を指定する必要がある。
とあるが、これを以下のように変更する。
B buf[HBUFLEN] で定義される作業領域を指定する必要がある。

so_gethostbyaddr
 
アドレスによるホスト情報の取得

【解説】の項第2文において、

B buf[HBUFLE] で定義される作業領域を指定する必要がある。
とあるが、これを以下のように変更する。
B buf[HBUFLEN] で定義される作業領域を指定する必要がある。


3.11 印刷マネージャ


3.11.1 印刷マネージャの機能


末尾より3文目にある以下の文:

基本印刷レイアウタは、 印刷管理を処理を実際に行うためのシステムアプリケーションであり、 印刷マネージャから起動される。

を、以下のように変更する。

基本印刷レイアウタは、 印刷管理の処理を実際に行うためのシステムアプリケーションであり、 印刷マネージャから起動される。


3.11.5 データ / 定数の定義


□ 印刷仕様(spec)

PR_PAR の印刷仕様 (spec) に、 下記の指定が追加されている。

  #define PR_ROTATE       0x100   /* 用紙回転 */

PR_ROTATE を指定すると、 用紙を回転しなくても印刷できるような場合にも用紙を回転させて印刷する。 PR_ROTATE が指定されなければ、 用紙を回転しなくては印刷できないような場合のみ用紙を回転する。 選択したプリンタによっては、この指定は無視されることがある。


この章の目次にもどる