この章の目次にもどる
前頁:第4章 CLIにもどる
次頁:第6章 ユーティリティにすすむ

第5章 データボックスコンパイラ

5.1 概要

データボックスコンパイラは、 コンパイラと同様に開発用のマシン(OS)で動作するものです。 B-right/V 上では使用できません。

5.2 コマンドリファレンス

【形式】

databox [-b][-n] [-l] [-s] 入力ファイル名 [出力ファイル名]

【オプション】

-b :
ビッグエンディアン形式
-n :
データボックス形式でない。 ヘッダ部分なしで、単なるバイナリデータを生成するために使用します。
-l :
リスティング出力 (*.lst)
-s :
ソース出力

【入力ファイル形式】

全体の形式:
    <データタイプ指定>
    <データ番号指定>
    <データ指定>

    <データ番号指定>
    <データ指定>
        : :

    上記の繰り返し

-n オプション指定の場合は<データ指定>のみとなります。

コメント:

'--' 以降の文字は行末までコメントとみなして読み飛ばします。

区切り文字:

空白、制御文字(改行、タブ含む)、','、 ';'、'('、')'、'{'、'}' はすべて空白と見なされます。
行の区切りはコメントの終了以外の特別の意味は持ちません。

データタイプ指定:

% の後にデータタイプを式(後述)で指定します。
その後に属性を指定します。
-n オプション指定の場合はデータタイプ指定があってはいけません。

    例: % 1  0
データ番号指定:

# の後に、データ番号、ユーザー情報を式(後述)で指定します。 -n オプション指定の場合はデータ番号指定はあってはいけません。

    例: # 1 0 0
データ指定:

# 指定の直後から、次の % または # までデータとみなします。

データ項目:

データ項目としては、文字列と式があります。

TRON 文字列:

" で囲まれた EUC 漢字文字列で、TRON コードに変換されます。

最後の " の直後に数字が続く場合は、その数字は文字数を示し、 文字数に満たない場合は 0 がパッドされます。

エスケープコード:
\n, \f, \t, \r, \b 制御コード(上位バイトは 0)
\(8 進数 3 桁まで) 任意のコード
\x(16 進数 4 桁まで)任意のコード

半角文字(英数字)の場合は、上位バイトに 0 がパッドされ、 WARNING がでます。

 例: "漢字文字列\0"
     "図形"16    -- "図形"の後に 14 個の 0 が入る
ASCII 文字列:

' で囲まれた ASCII 文字列。EUC 漢字文字列は そのままとなり、エンディアンの変換は行われません。 奇数文字数の場合は、最後にバイト 0 がパッドされます。

最後の ' の直後に数字が続く場合は、その数字は文字数 / 2 を示し 文字数に満たない場合は 0 がパッドされます。

エスケープコード:
\n, \f, \t, \r, \b 制御コード
\(8 進数 3 桁まで) 任意のコード
\x(16 進数 4 桁まで)任意のコード
 例: 'ASCII'     -- 最後にバイト 0 がパッドされます。
     'TEXT'16    -- 'TEXT'の後に 28 個のバイト 0 が入ります
イメージデータ:
` で囲まれた■□の並びはイメージデーターとして処理されます。
 例: `□□□□□□■■□□□□□□□□`  -- 0x03 0x00
CBMP:
CBMPIMG:

$CBMP(compac planes pixbits rowbyte rect data) で CBMP 形式の データを生成します。
data は ■□ の並びで指定する。■は黒に、□は白に変換されます。

式:

データ要素、または任意個のデータ要素をオペレータで連結したものです。

オペレータは、'+' '-' '*' '/' で、左から順番に演算されます。 式中に空白等の区切り文字があってはいけません。

式のデータ長は、BYTE(8bit)、WORD(16bit)、LONG(32bit)のいずれかで、 式の結果は式中のデータ要素で最も長いデータ長になります。

 例: 0x100H+0x10Y    -- 0x110 (WORD)
     128/2L          -- 64    (LONG)
データ要素:
<数値> BYTE/WORD/LONG (BASE に従う)
<数値>YBYTE( 8ビット)
<数値>HWORD(16ビット)
<数値>LLONG(32ビット)

数値は、以下の表現が可能です。

<10 進数字列> 10 進数
0x<16 進数字列>16 進数
0<8 進数字列> 8 進数
<シンボル> シンボル値(BYTE/WORD/LONG)
BYTE/WORD/LONG はシンボルの定義値による
<シンボル>:Y シンボル値(BYTE)
<シンボル>:H シンボル値(WORD)
<シンボル>:L シンボル値(LONG)
( <シンボル>:W シンボル値(WORD) )
シンボル定義:

英字('_'を含む)で始まる最大 16 文字までの英数字のシンボルです。 最大 1000 個です。

.<シンボル> = <式>
シンボルの値を<式>の値とします。
シンボルのデータ長は<式>のデータ長となります。
.<シンボル>:
現在のデータオフセットをシンボルの値とします。
シンボルのデータ長は設定されません(不定)。
このシンボルを参照したときの BASE の設定によりデータ長が決定されます。
データオフセットは、個々のデータ指定の先頭を 0 としたバイトオフセットとなります。

シンボルにはグローバルシンボルと、ローカルシンボルがあります。

グローバルシンボル:
最初のデータ番号指定の前に定義したシンボルで、 全体にわたって有効です。
ローカルシンボル:
データ番号指定の後に定義したシンボルで、 そのデータ番号のデータ内でのみ有効です。

シンボルの値の再設定は可能であるが、WARNING がでます。
..<シンボル> とした場合は、WARNING はでません。

 例:
     .Global = 0x1111L
     % 1 0
     # 1 0 0
     Global      -- 0x1111 0x0000
     Global:W-1  -- 0x1110
     .offset:
     offset      -- 0x0006
     #2 0 0
     offset:L    -- 0x0004 0x0000
     .offset:

シンボルの値の前方参照は可能ですが、シンボルがまだ未定義の場合、 データ長は BASE の設定にしたがった長さと見なすため、 シンボルの値のデータ長が異なるときには、 明示的に表記する必要があります。

例:
     A
     undef
     .A:
     .undef = 10L

この場合、A の値は不正になるので、以下のように記述する必要があります。

     A:
     undef:L    -- または undef+0L など
     .A:
     .undef = 10L
システムシンボル:
BASE
数値の基数を示します。
初期値は 0。 0 以外を設定すると、 数字列はその値を基数として解釈されます。
LONG の値を設定すると、LONG の数字となります。 同様に、BYTE の値を設定すれば BYTE の数値、 WORD の値を設定すれば WORD の数値となります。 デフォルトは WORD です。
    例:
     .BASE = 16
     0ffff 0aaaa 5555    -- 16 進数(WORD)
     .BASE = 0
     5555                -- 10 進数(WORD)
     .BASE = 16L
     0ffff 0aaaa 5555    -- 16 進数(LONG)
     .BASE = 0L
     5555                -- 10 進数(LONG)
OFFSET
その時点のオフセットを示します。
参照時の BASE の設定によりデータ長が決定されます。
     例:
     OFFSET+2    -- "文字"へのオフセット(WORD)
     "文字"
     
     OFFSET+4L   -- "文字"へのオフセット(LONG)
     "文字"
ALIGN
アラインメントを指定します。
次に.ALIGN が指定されるまで#???や.????:によるオフセットは、 指定したアラインメントにあわせられます。
   例:
     [00]はパディング
                     .ALIGN = 1
     0000    01      .p01:   1Y
     0001    01      .p02:   1Y
                     .ALIGN = 2
     0002    01 [00] .p03:   1Y
     0004    01 [00 00 00]   .p04:   1Y
                     .ALIGN = 4
     0008    01      .p05:   1Y
                     .ALIGN = 1
     0009    01      .p06:   1Y
標準データタイプ指定(WORD)
PTR_DATA 1
PICT_DATA 2
PAT_DATA 3
BMAP_DATA 4
FIG_DATA 5
TEXT_DATA 6
PARTS_DATA 7
MENU_DATA 8
GMENU_DATA 9
PANEL_DATA10
USER_DATA 64

【出力ファイル形式】

出力ファイル形式
図 1 : 出力ファイル形式

【リスティング形式】

先頭にインデックス部の内が、16 進数で出力されます。
データ部は、ソース行の直後に対応するデータが 16 進数で出力されます。
データ部のアドレスは、データ部の先頭を 0 としたアドレスで、 インデックス部はふくまれません。


この章の目次にもどる
前頁:第4章 CLIにもどる
次頁:第6章 ユーティリティにすすむ