本仕様書では、TAD ( TRON APPLICATION DATABUS ) に関しての詳細のデータ構造を説明することを目的としているため、 基本的な BTRON 仕様の実身、仮身、付箋等の概念、 および TAD の目的、概念、位置付け等に関しては特に説明していない。
また、BTRON 仕様システム、 特にファイルシステムとディスプレイ・プリミティブ、 および TRON 仕様コードに関しての知識を有することを前提としている。
TAD ( TRON APPLICATION DATABUS ) 実身構成は、 BTRON 仕様の実身 ( ファイル ) の全体構成を規定するものである。
BTRON 仕様の実身 ( ファイル ) には、以下の情報が格納されている。
実身 (ファイル) の所有者、所属グループ、 アクセス管理、 アクセス属性等の BTRON 仕様ファイルシステムとして定義される。
実身のアプリケーションレベルでの基本タイプを示すもので、
ピクトグラムに 1 対 1 対応する。
また、実行プログラム、デバイス実身等の識別情報も含む。
実身のデータは、各種のレコードの1次元連鎖より構成され、 各レコードは、レコードタイプにより、その内容が規定される。
BTRON仕様実身(ファイル)はレコードの列から構成され、その各レコードは、 レコードタイプに応じて、そのデータ構成が規定されている。 レコードのサブタイプは、通常レコードの検索等のために使用され、 その内容は特に規定されない。
以下にレコードタイプと、そのデータ構成の規定を示す。
レコードタイプ | データ構成の規定 | |
---|---|---|
0 | リンクレコード | 標準データタイプ |
1 | TAD 主レコード | TAD データ構成 |
2 | TAD 注釈レコード | TAD データ構成 |
3 | TAD 補助レコード | TAD データ構成 |
4 | 予約レコード | − |
5 | 設定付箋レコード | TAD データ構成 |
6 | 指定付箋レコード | TAD データ構成 |
7 | 機能付箋レコード | TAD データ構成 |
8 | 実行機能付箋レコード | TAD データ構成 |
9 | 実行プログラムレコード | 標準オブジェクト形式 |
10 | データボックスレコード | データボックス定義形式 |
11 | フォントデータレコード | 標準フォントデータ形式 |
12 | 辞書データレコード | 標準辞書データ形式 |
13 | 予約レコード | − |
14 | 予約レコード | − |
15 | システムデータレコード | システムアプリケーション定義 |
16〜31 | アプリケーションレコード | アプリケーション定義 |
実身のメインデータであり、TAD データ形式である。 基本エディタでの処理対象となる。
実身の注釈としての補助データであり、TAD データ形式である。 実行プログラムファイル内のヘルプ・データ、コピーライトデータ等に使用され、 基本エディタでの処理対象とならない。
実身の補助データであり、TAD データ形式である。 その使用方法はアプリケーションに依存し、 基本エディタでの処理対象とならない。
実身に貼られた設定付箋である。
実身に貼られた指定付箋である。
実身に貼られた機能付箋である。
実身の実行メニューとして表示され、実行される機能付箋である。
実行プログラムの標準オブジェクト形式であり、サブタイプはCPUのタイプを示す。
0x100〜0x13F | TRONCHIP 系 | 0x00 | TRONCHIP32 |
0x140〜0x14F | 68000 系 | 0x40 | 68000 |
0x41 | 68010 | ||
0x42 | 68020 | ||
0x150〜0x15F | NS32000 系 | 0x50 | 32032 |
0x160〜0x16F | 86 系 | 0x60 | 8086 / 8088 |
0x61 | 80186 | ||
0x62 | 80286 | ||
0x63 | 80386 | ||
0x170〜0x17F | V シリーズ |
データボックスのデータ定義であり、 データマネージャによりサポートされるデータ形式である。
標準のフォントデータ形式。
標準の辞書データ形式。
システムで使用される標準のシステムデータ形式である。
アプリケーションで定義されるデータ形式である。
TAD データ構成は、 BTRON 仕様ファイル内の TAD データレコードの内容を規定するものである。
TAD データ構成は、ファイル内のデータ形式を規定するとともに、 トレー経由、またはドラッグによるアプリケーション間のデータ交換のためにも使用される。
TAD データ構成は、セグメント と呼ばれるデータ要素の一次元要素連鎖であり、 セグメントには、固定バイト長の固定長セグメントと、 可変バイト長の可変長セグメントがある。 各セグメントは、TRON 仕様多国語文字コード体系の下に定義されているため、 TAD データ構成は TRON 仕様文字コード列そのものであると言える。
TRON 仕様多国語文字コードとして定義されている、 広義の文字コードそのものであり、以下のものが含まれる。
・通常の文字コード | : 1または2バイト・コード |
・制御コード | : (0x00 〜0x20 ) の1バイト・コード |
・言語指定コード | : (0xFE )で始まる多バイトコード |
・特殊コード | : (0xFF )(0x21 〜0x7E )の2バイトコード |
なお、TAD データ構成では、基本的に下記の 制御コードのみを使用する。
無効コード | 0x00 |
タブコード | 0x09 |
改段落コード | 0x0A |
改コラムコード | 0x0B |
改ページコード | 0x0C |
改行コード | 0x0D |
セパレータ(スペース) | 0x20 |
TRON 仕様多国語文字コードとして定義されている
TRON 仕様エスケープであり、
先頭バイトが (0xFF
)、第 2 バイトが、
(0x80
〜0xFE
) の値を持つ。
第 2 バイトはセグメントの種別を表すため、
セグメント ID と呼ばれる。
セグメント ID の直後にデータ本体のバイト長が入るが、
バイト長の形式として、
通常セグメントと
ラージセグメント
の 2 つの形式が存在し、ラージセグメントは、
バイト長さが 65,536 バイト以上の場合にのみ使用される。
バイト長は必ず偶数となるように必要に応じて "0"
のバイトが最後に追加される。
データは上位バイトが先にくる
ビッグエンディアンの形式となる。
下図に可変長セグメントの形式を示す。
標準可変長セグメントとして以下のものが定義されている。
セグメントタイプ セグメントID (予約) (0x80〜0x9F) 文章付箋セグメント TS_Txxxx (0xA0〜0xAF) 図形描画セグメント TS_Fxxxx (0xB0〜0xBF) (予約) (0xC0〜0xDF) 管理情報セグメント TS_INFO (0xE0) 文章開始セグメント TS_TEXT (0xE1) 文章終了セグメント TS_TEXTEND (0xE2) 図形開始セグメント TS_FIG (0xE3) 図形終了セグメント TS_FIGEND (0xE4) 画像セグメント TS_IMAGE (0xE5) 仮身セグメント TS_VOBJ (0xE6) 指定付箋セグメント TS_DFUSEN (0xE7) 機能付箋セグメント TS_FFUSEN (0xE8) 設定付箋セグメント TS_SFUSEN (0xE9) (予約) (0xEA 〜 0xFE)
TAD データは、大きく文章データと、図形データに分類される。
文章データは 1 次元データとも呼ばれ、 データ要素を一次元平面上で表現したデータである。 文章データの個々のデータ要素は 2 次元の大きさを持つ場合もあるが、 位置は 1 次元、即ち順序関係として表現される。
文章データには、 文章データを実際に 2 次元平面 ( 用紙 ) 上に表現するための 各種のレイアウト情報も含まれるが、 これはあくまでもレイアウタへの入力情報であり、 文章データ自体としては、 レイアウトされた結果としての 2 次元平面上での表現を直接表しているものでない。
図形データは 2 次元データとも呼ばれ、 データ要素を2次元平面上で直接的に表現したデータである。 図形データの個々のデータ要素は 2 次元座標平面上での大きさと位置を持つ。
図形データは左上を ( 0, 0 ) とし、 下 / 右方向に無限に広がる 2 次元座標平面 ( 用紙 ) 上の 1 つの長方形領域内のデータを表現しているもので、 各データ要素は、その位置、 大きさをその座標平面上での座標値として持っている。 座標値は 0 〜 32,767 の範囲の非負の整数値である。
図形データの座標系はあくまで 2 次元座標平面 ( 用紙 ) 上での表現上の座標系であり、 実際の物理的な大きさを直接表現しているものではない。
文章データと図形データは任意に ネスティング可能であり、 一番外側のデータの種別により、 文章データか図形データかが分類される。 ネスティングした文章データ、図形データは、 埋め込み文章データ、 埋め込み図形データ とも呼ばれる。
同種の ( 文章 / 図形 ) データがネスティングした場合は、 原則として未定義の属性は、 外側で定義された属性のうち、最も内側で定義された属性が適用される。 一番外側でも未定義な場合は、 データを解釈するアプリケーションに依存した適当な デフォールト値として解釈される。
別種の ( 図形 / 文章 ) データがネスティングしている場合は、 同種のデータのうち、最も外側のものが一番外側と判断される。 即ち、別種のデータがネスティングしている場合は、 そこで外側からの属性の継承が切断される。 ただし、 座標系、領域に関しては、同種、別種に無関係にすぐ外側のものが適用される。 同種、または別種のデータがネスティングしている場合、 あるデータ内で定義された属性は外側のデータには適用されない。
例 : 図形データ A 図形データ B -- 属性の上位スコープは A 図形データ C -- 属性の上位スコープは A 図形データ D -- 属性の上位スコープは C, A 文章データ E -- 属性の上位スコープなし 文章データ F -- 属性の上位スコープは E 図形データ G -- 属性の上位スコープなし
( 埋め込み ) 文章 / 図形データには、以下の情報が定義される。
図形データとして描画される長方形領域、 および描画のための座標系を示し、大きさ、値ともに意味を持つ。 描画領域外をはみ出る部分はクリッピングされ、 図形データには含まれない。
意味を持たない。
図形データ中に埋め込まれた文章データの場合、
文章データをレイアウトする長方形領域を示し、
大きさのみが意味を持つ。
文章データ中に埋め込まれた文章データの場合は、意味を持たない。
描画領域の座標系の単位を、
1 cm 当たりの座標数または 1 inch 当たりの座標数により示す。
文章データの場合は、中に含まれる図形データ、画像データの表示領域の単位、
および書式のマージンの単位等を示すために使用される。
座標系単位の値が 0 の場合は、未定義であり、
すぐ外側と同一であると見なされる。
意味を持たない。
描画領域の表現を写像する外側の描画領域内での位置と大きさを示す。
従って、表示領域は外側の描画座標系 / 単位で規定される。
文章データ内に埋め込まれている場合は、大きさのみ意味を持つ。
表示領域の大きさ / 外側の描画座標単位 / 外側の倍率と、
描画領域の大きさ / 描画座標単位/倍率により、
描画領域の表現は拡大または縮小されて表示領域に写像される。
図形データ内に埋め込まれた文章データは、 描画領域として指定された領域内にレイアウトされた結果としての表現を意味し、 2 次元データと見なされる。 この場合、ページ、用紙の概念は存在しないため、 文章データ中のページ、用紙のレイアウトに関する指定は無視される。
図形データ内に埋め込まれた図形データは、座標系 / 倍率が異なる場合、 または、図形のグルーピングのために使用される。
文章データ内に埋め込まれた文章データは、座標系単位が異なる場合、 または、グルーピングを行なうために使用できるが、 埋め込まれた文章データも 1 次元データであるため、 その順番のみが意味を持つ。 2 次元のレイアウト済みの表現としての文章を埋め込む場合は、 埋め込み図形データ内の埋め込み文章データとする必要がある。
画像データは、 ( 圧縮 ) ビットマップ形式により表現されたイメージ・データであり、 単位系、カラー表現等のデータを解釈するための情報を持っている。
画像データは、それ自体で 1 つの独立したデータとしての意味を持つが、 TAD データ構造としては、1 つのセグメントとして取り扱われ、図形データ、 または文章データの 1 つの要素として取り扱われる。
TAD データ構造は、以下に示すBNF表記により定義される。
【TAD データ】 | ::= | 《管理情報セグメント》【TAD 本体】 |
【TAD 本体】 | ::= | 【文章データ】|【図形データ】 |
【文章データ】 | ::= | 《文章開始セグメント》【文章要素並び】《文章終了セグメント》 |
【文章要素並び】 | ::= | 《空》|【文章要素並び】【文章要素】 |
【文章要素】 | ::= | 【文字コード】| |
《文章付箋セグメント》| | ||
【図形データ】| | ||
【文章データ】| | ||
《画像セグメント》| | ||
《仮身セグメント》| | ||
《指定付箋セグメント》| | ||
《機能付箋セグメント》 | ||
【文字コード】 | ::= | 《通常文字コード》| |
《制御コード》| | ||
《言語指定コード》| | ||
《特殊文字コード》 | ||
【図形データ】 | ::= | 《図形開始セグメント》【図形要素並び】《図形終了セグメント》 |
【図形要素並び】 | ::= | 《空》|【図形要素並び】【図形要素】 |
【図形要素】 | ::= | 《図形描画セグメント》| |
【文章データ】| | ||
【図形データ】| | ||
《画像セグメント》| | ||
《仮身セグメント》| | ||
《指定付箋セグメント》| | ||
《機能付箋セグメント》 |
この章では、TAD データの要素である各セグメントの構造の詳細を説明するが、 文章付箋セグメントに関しては第 4 節で、 図形描画セグメントに関しては第 5 節で説明する。
各セグメントのデータ構造は、以下の形式で説明している。
ID : -- セグメントIDを示す。 LEN : -- データ本体のバイト長を示し、"〜"は可変長を意味する。 DATA: -- データ本体の内容を示す。
また、データ本体の内容は、以下に示すデータ表記を使用している。 8 ビット以上のビット長さを持つデータは、 上位バイトが先にくるビッグエンディアンの形式である。
typedef struct { H h -- 水平座標値 H v -- 垂直座標値 } PNT;
typedef struct { DBYTE left -- 左の座標値 DBYTE top -- 上の座標値 DBYTE right -- 右の座標値 DBYTE bottom -- 下の座標値 } RECT;
>0: 1 cm 当たりの座標数 <0: 1 inch 当たりの座標数の負数 =0: 未定義 (外側の座標系で定義される単位と同じ) 例 : 400 -- 1 / 400 cm 単位 -240 -- 1 / 240 inch 単位
UUSS SSSS SSSS SSSS U: 単位指定 0: 外側の座標系で定義される単位 1: 1/20 級 ( 1 / 80 mm ) 単位。 2: 1/20 ポイント ( 1 / 1440 inch ) 単位。 3: 予約 S: U で指定した単位での文字サイズ。0 の場合は未定義 であることを意味する。
1NNN NNNN NNNN NNNN -- 絶対指定 0AAA AAAA BBBB BBBB -- 比率指定 絶対指定 : 座標系単位での値 ( N ) 比率指定 : 基準値 × ( A / B ) の値 ( B = 0 の時は比率 1 と見なす )
AAAA AAAA BBBB BBBB A / B の値が比率となる ( B = 0 の時は比率 1 と見なす )
TAD データの解釈のために必要な バージョン等の管理情報を保持するためのセグメントで、 実身等の 1 つの独立した TAD データの場合は、 TAD 本体 ( 文章 / 図形データ ) 前に必ずなくてはならない。 このセグメントは参照情報として意味を持つが、 バージョンが異なる場合の処理はインプリメントに依存する。 原則として、バージョンアップがあった場合、仕様は上位互換となる。
ID : TS_INFO -- 管理情報セグメント LEN : 〜 DATA: UH subid -- 項目ID UH sublen -- 項目のバイト数 UH data[] -- 項目データ本体(sublen バイト) : : $lt;上記の繰り返し>
subid: 0 -- TAD 規格のバージョン番号 sublen: 2 data: UH ver -- 以下の形式の 3 桁 BCD コードによるバージョン番号 0000 AAAA BBBB CCCC : バージョン A.BC 例:バージョン1.2のとき AAAA = 0001 BBBB = 0010 CCCC = 0000 subid: 1〜 -- 予約
文章データの開始および終了を表すセグメントで、 文章開始セグメントと文章終了セグメントに囲まれた部分が 1 つの文章データとなる。
ID : TS_TEXT -- 文章開始セグメント LEN : 24 DATA: RECT view -- 表示領域 RECT draw -- 描画領域 UNITS h_unit -- 水平ユニット UNITS v_unit -- 垂直ユニット UH lang -- デフォールト言語 UH bgpat -- 背景パターン ID ID : TS_TEXTEND -- 文章終了セグメント LEN : 0 DATA: なし
日本語: | 0x0021 |
図形データの開始および終了を表すセグメントで、 図形開始セグメントと図形終了セグメントに囲まれた部分が 1 つの図形データとなる。
ID : TS_FIG -- 図形開始セグメント LEN : 24 DATA: RECT view -- 表示領域 RECT draw -- 描画領域 UNITS h_unit -- 水平ユニット UNITS v_unit -- 垂直ユニット W ratio -- 倍率 ID : TS_FIGEND -- 図形終了セグメント LEN : 0 DATA: なし
画像セグメントは、画像データを表すセグメントであり、 TAD 文章データ、図形データの中に埋め込まれる。 画像セグメントは、それ自体で独立した座標単位およびカラー情報を持ち、 BTRON仕様ディスプレイ・プリミティブ で規定されている圧縮ビットマップ形式で表現される。
xxxx xxxx Ixxx PRRR
カラーマップ ( ピクセル値に対応するカラー表現を示した配列 )
のバイト数、およびオフセットを示す。
カラーマップのバイト数 ( cinfo[0]
) = 0
の場合は、カラーマップ
は未定義であることを意味する。
カラー表現データ ( ピクセル値 ) が
どのようにカラー表現に対応するかを示す。
cinfo[0] = 0
の場合は、
カラー表現データは未定義であることを意味する。
cinfo[0] -- 白黒の有効階調ビット数とその位置 cinfo[1] -- 未使用 cinfo[2] -- 未使用 cinfo[3] -- 未使用
cinfo[0] -- 赤の有効階調ビット数とその位置 cinfo[1] -- 緑の有効階調ビット数とその位置 cinfo[2] -- 青の有効階調ビット数とその位置 cinfo[3] -- 未使用
cinfo[0] -- シアンの有効階調ビット数とその位置 cinfo[1] -- マゼンタの有効階調ビット数とその位置 cinfo[2] -- 黄の有効階調ビット数とその位置 cinfo[3] -- 黒の有効階調ビット数とその位置
各データの下位バイトは階調ビット数を示し、
上位バイトはピクセル値上の LSB を 0 としたビット位置を示す。
例として、ピクセル値の表現が、
....BBBBGGGGGGRRRRRR
の場合は、
cinfo[0] → 0x0006 cinfo[1] → 0x0606 cinfo[2] → 0x0c04となる。
UH ext_id -- 拡張情報のタイプ ( ext_id の MSB = 0 ) UH len -- 拡張情報のバイト数 UB data[] -- 拡張情報本体 ( len バイト )
UH ext_id -- 拡張情報のタイプ( ext_id の MSB = 1 ) UH len -- 拡張情報のバイト数 UW offset -- 拡張情報本体へのオフセット
len : 4 data: COLOR bgcol -- 背景色の指定
仮身セグメントは、仮身を示すセグメントであり、TAD 文章データ、 図形データの中に埋め込まれて、他の実身の参照を意味する。 仮身セグメントには、仮身を表示するための各種の情報、 およびデフォールト・アプリケーション実行のための固有データ情報が入る。 仮身自体の内容は、リンク ( 仮身 ) レコードとして別に存在し、 実身中の出現順により 1 対 1 に仮身セグメントとの対応が取られる。 リンク・レコードには BTRON 仕様ファイル管理機能で使用されるファイルを示す情報の他に、以下の情報が含まれている。
仮身セグメントおよびリンクレコードは、 BTRON仕様実身/仮身マネージャ機能によりサポートされるため、通常、アプリケーションは直接アクセスしない。
ID : TS_VOBJ -- 仮身セグメント LEN : 〜 DATA: RECT view -- 表示領域 H height -- 開いた場合の仮身高さ CHSIZE chsz -- 文字サイズ COLOR frcol -- 枠の色 COLOR chcol -- 文字の色 COLOR tbcol -- タイトル背景色 COLOR bgcol -- 開いた場合の背景色 UH dlen -- 固有データのバイト長 UB data[dlen] -- 固有データ( dlen バイト)
機能付箋セグメントは、
アプリケーションを起動するための各種のパラメータを保持するもので、
他に付箋自身の表示用の情報も保持している。
通常、機能付箋セグメントは、
独立した機能付箋レコードまたは実行機能付箋レコードとして存在する。
機能付箋セグメントが独立した機能付箋レコード
または実行機能付箋レコードとして存在する場合には、
セグメント先頭のセグメント ID、0xFF
、
およびデータ長のフィールドは省略されレコードの内容は DATA 部のみとなる。
セグメント ID とデータ長は、レコードタイプとレコード長で示される。
ID : TS_FFUSEN -- 機能付箋セグメント LEN : 〜 DATA: RECT view -- 表示領域 CHSIZE chsz -- 文字サイズ COLOR frcol -- 枠の色 COLOR chcol -- 文字の色 COLOR tbcol -- タイトル背景色 UH pict -- ピクトグラム / タイプ UH appl[3] -- アプリケーション ID UB name[32] -- 付箋名 UB type[32] -- データタイプ名 UH dlen -- 固有データのバイト長 UB data[dlen] -- 固有データ ( dlen バイト )
指定付箋セグメントは、TAD データの中に埋め込まれる、 アプリケーション固有のデータとして解釈されるデータである。
1 つ以上の指定付箋セグメントを
独立した指定付箋レコードとして存在させることができる。
指定付箋レコードに1つの指定付箋セグメントしか含まれない場合でも、
セグメント先頭のセグメント ID、0xFF
、
およびデータ長のフィールドは省略することはできない。
固有データのバイト長は、仮身セグメントや、
機能付箋セグメントと異なり、UW
となる。
ID : TS_DFUSEN -- 指定付箋セグメント LEN : 〜 DATA: RECT view -- 表示領域 CHSIZE chsz -- 文字サイズ COLOR frcol -- 枠の色 COLOR chcol -- 文字の色 COLOR tbcol -- タイトル背景色 UH pict -- ピクトグラム / タイプ UH appl[3] -- アプリケーション ID UB name[32] -- 付箋名 UW dlen -- 固有データのバイト長 UB dat[dlen] -- 固有データ ( dlen バイト )