タイミングチャート清書ツール:記述文法
すでに述べましたように、本ツールはテキストで適当に書いたそれらしい原稿を清書するものです。そのため、原稿に文法が存在します。

(通称 TCML: Timing Chart Make up Language、タイミングチャート作成言語 < Mark up でなく Make up、JinSatoさん名付け親)

ここでは、その定義を述べます。定義なので、堅苦しく、わけわかりにくいかもしれません。

凡例: [数値]    :実数を一般的な小数で記述 [空白]    :スペース、タブ [空白文字列] :連続する複数の空白 [文字列]   :任意の文字列 [非空白文字] :空白文字以外の文字 [非空白文字列]:空白文字を含まない任意の文字列 [非空白文字〜文字列]:非空白文字で始まる文字列 チャート記述のためのテキスト原稿(以下、単に原稿といいます)は、原則として半角英数文字(1バイトのASCII文字)で記述され、行単位に独立して意味を持ちます。
コメント行として無視されます。
どこに記述しても構いません。


各種パラメータ設定を行います。
どこに記述しても構いません。どこに記述してもチャート全体に作用します。同じパラメータに対する設定は、後ろの行でなされたものが有効となります。


チャートの指定した位置に文字列を書き込むことができます。
どこに記述してもかまいません。
(ほとんど使う必要はないでしょう)


「信号名+空白文字+レベル文字列」という型式からなる行で、これを元に各信号線が清書されます。
記述された順に、チャート上で上から並びます。 [非空白文字列] [空白文字列] [非空白文字〜文字列] 最初の空白文字列の前を信号名、後をタイミングの記述であるレベル文字列として扱います。

レベル文字列はレベル記号、補助記号、書き込み文字列からなります。 レベル記号:信号の時々刻々のレベルを規定する文字 補助記号 :レベル記号を補助する文字 書込文字列:信号上に書き込まれる記述

レベルの規定は「単位時間」ごとに行います。 単位時間は、図を書く際の時間分解能であり、物理的にどれだけの時間であるかは問いません。 また、パラメータ設定によって、チャート上で1単位時間をどれだけの長さに書くかを設定できます。

レベル記号は、一文字である信号の単位時間のレベルを規定します。 "_":ローレベル "~":ハイレベル(※) "-":ハイ・インピーダンス(high-Z) "=":2値もしくはバス信号 の4文字があります。レベル文字列に書いた順番で、信号を単位時間毎に規定していきます。ほぼ、見た目通りになります。
(※:「"~" チルダ」は端末系のフォントでは上に貼り付いた波線として表示されるため、採用しましたが、表示フォントによっては"-"と同じ位置に見えます。編集時には端末系フォントを使用下さい。または、MS明朝など日本語フォントの半角でも大丈夫なようです。)

補助記号は、以下の3文字です。 ":":単位時間の空白を挿入 "X":バスの遷移を挿入 "|":縦線を挿入 本来、一本の信号に時間的空白はないと思われますが、省略を意図した表示などのために空白を挿入するには":"を使用します。
"X"は、"="にバスの遷移表示を加えたもので、1単位時間のレベルをバスに規定したことになります。遷移の位置は、直前のレベル記号の直後、"X"の置かれた時刻の直前に位置します。たとえば、"==X="で、対象な図になります。
"|"はチャートの上から下までを貫く縦線を書き込みます。信号の時間関係などを表記する補助線とします。挿入位置は、"|"の直前のレベル記号と、直後のレベル記号の間の時刻になります。

それ以外の文字の集合は、自動的に書き込み文字列として認識されます。 レベル記号、補助記号も含めて、書き込み文字列としたい場合は、「"」でくくります。
書き込み文字列は、前後のレベル記号(含む"X")の中間の時刻を基準としてチャートに書き込まれます。 標準では、文字列の中央が基準点に来るようにセンタリングされます。文字列が"_<_"で始まる場合は基準点に文字列の左端がそろうように、"_>_"で始まる場合は右端がそろうように挿入されます。
(※:一部記号、漢字などに、仕様上記述できないものがあります)

なお、図の横幅は最長のレベル文字列(書き込み文字列は除外)によって、自動的に規定されます。長さが不揃いの場合は、短い信号の後ろに空白があきます。 @[非空白文字列] [空白文字列] [非空白文字〜文字列] 最初の空白文字列の前をパラメータ名、以後をパラメータに設定する値とします。
パラメータの一覧は以下の通りです。
パラメータ一覧
パラメータ (引数型式) 説  明 デフォルト
step [数値]1単位時間のチャート上での長さを規定。単位0.1ポイント。10
lineheight [数値]信号の高さを規定。単位0.1ポイント。10
lineskip [数値]信号の上下間隔(中心間)を規定。単位0.1ポイント。20
capwidth [数値]信号名の表示欄の幅を規定。単位0.1ポイント。40
slant [数値]信号遷移部の傾きを規定。0で鉛直、1で45度傾斜。0.3
signalline [文字列]信号を記述する線のスタイルを規定。PostScript型式。0 0 0 setrgbcolor 5 setlinewidth
borderline [文字列]外枠の線のスタイルを規定。PostScript型式。0.7 0.7 0.7 setrgbcolor 5 setlinewidth
gridline [文字列]縦線のスタイルを規定。PostScript型式。1 0 0 setrgbcolor 2 setlinewidth
capfont [文字列]信号名を書くフォントを指定。Helvetica(Arial)
strfont [文字列]信号中に書き込む文字列のフォントを指定。Helvetica(Arial)
rotate [0/1]EPS専用。1を指定すると図を時計回りに90度回転させる。0
bitmapmag [数値]tcbmp専用。ビットマップに変換する際に、1ポイントを何ピクセルにするかを指定。4

補足:

  • 線のスタイルは [数値(0-1)] [数値(0-1)] [数値(0-1)] setrgbcolor [数値] setlinewidth で行う。前半3個の数値はそれぞれ赤、緑、青の輝度であり、0〜1で指定。「0 0 0」が黒、「1 1 1」が白、「1 0 0」が赤となる。線幅は0.1ポイント単位で指定。
  • フォントは、UNIX環境(gs)では一般的なPostScriptフォントが使用できる。 WindowsではWindowsにインストールされているTrueTypeフォントが使用可能(デフォルトはtcbmp内でArialに変換される)。「MS ゴシック」のように、スペースを含むフォントの場合は「MS\ ゴシック」のように、半角「\」を追加する。
    ただし、基本的に日本語はサポートしていない(日本語まわりの特別な文字処理を加えていない)ことに留意されたし。
%[数値(y)] [空白文字列] [数値(x)] [空白文字列] [非空白文字〜文字列] 空白文字列で区切られた最初の2文字列を数値y,xとして解釈し、残りを行末まで出力文字列とします。
タイミングチャート上の座標(一番上の信号がy=0、時刻0がx=0)に文字列を配置します。
基本的には、レベル文字列中の文字列出力で済みます。