ASC2BIN テキストファイルをバイナリファイルに変換する

書法

ASC2BIN [ filename ]* [ options ]*

SHELLMODE

@記述、!記述、^記述

詳細

テキストファイルをバイナリファイルに変換する。
ファイル名を省略すると、標準入力を扱う。 複数のファイルを指定すると、順に入力して処理する。
誤って巨大なファイルを生成しないように、通常は出力ファイルサイズに対して10MBの制限がある。 これはオプション(-L)で外すことができる。

記述法

変換要素を順に羅列する。区切りは、スペース、行末、タブ。
要素名記法概略
数値 [-]number BYTE/WORD/DWORDの数値を表わす。デフォルトはBYTE
負号をつけることができる。
数値の単位の指定は、.BYTE/.WORD/.DWORDコマンド指定する。 WORD/DWORDの場合は、出力バイト順を.INTEL/.MOTOROLAコマンドで指定する。
文字列 {"|'}文字列{"|'} 引用符「"」または「'」で囲んだ文字列。 使用した引用符を文字列中で使用する場合は、引用符を二つ続けて書く。
TSEXPRデータ (tsexpr) TSEXPRの値を計算し、出力する。
TSEXPRの戻り値の型によって動作が異なる。
  1. 戻り値が文字列の場合は文字列を書きこむ。
  2. 戻り値がバイナリの場合はそのまま書き込む。
  3. 戻り値が数値、あるいは、論理値の場合は、現在の数値の単位、出力順に従う。
    数値の単位は、.BYTE/.WORD/.DWORDコマンドで指定する。 数値の単位がWORD/DWORDの場合の出力バイト順は、.INTEL/.MOTOROLAコマンドで指定する。
アドレス指定 [address] 出力先を先頭からのオフセットをバイト単位で切りかえる。
誤って巨大なファイルを生成しないように、 現在アドレスから10Mバイト以上大きな値は指定できない。 アドレスの飛んだ隙間は、0で埋める。(オプション指定で変更可能)。
間接アドレス指定 =TSEXPR; アドレスをTSEXPRで指定する。
TSEXPRの戻り値は数値であること。負の値を指定してはならない。
誤って巨大なファイルを生成しないように、 現在アドレスから10Mバイト以上大きな値は指定できない。 アドレスの飛んだ隙間は、0で埋める。(オプション指定で変更可能)。
コメント ; comment 「;」以降行末までをコメントとして取り扱う
集計初期化 / チェックサムなどの集計機能を初期化する。
コマンド 以下のコマンドが用意されている。なお、コマンドの大文字小文字は区別しない
.SUM7 7bitチェックサム。 「/」から現在位置までのバイト集計の下位7bitを出力する。(1byte)
.SUM8 8bitチェックサム。 「/」から現在位置までのバイト集計の下位8bitを出力する。(1byte)
.CSUM7 7bitチェックサム補数。ROLAND対応。 「/」から現在位置までのバイト集計の2の補数を取り、下位7bitを出力する。(1byte)
.KSUM7 7bitチェックサム+0xa5。KAWAI対応。 「/」から現在位置までのバイト集計に0xa5を加え、下位7bitを出力する。(1byte)
.CSUM8 8bitチェックサム補数。 「/」から現在位置までのバイト集計の2の補数を取り、下位8bitを出力する。(1byte)
.ID[(offset)] オプション-Iで指定した値を1バイト出力する。
オフセット値を指定できる。
.Pn[(offset)] nは0-9。オプション-Pnで指定した値を1バイト出力する。
オフセット値を指定できる。
.BIN 現在の数値記法を2進法に切りかえる。
.DEC 現在の数値記法を10進法に切りかえる。
.HEX 現在の数値記法を16進法に切りかえる。(デフォルト)
.BYTE 数値要素をバイト単位とする。
.WORD 数値要素をワード単位(2バイト)とする。
.DWORD 数値要素をダブルワード単位(4バイト)とする。
.INTEL 数値要素が、バイト単位でないときの出力バイト順を、INTEL形式とする。
.MOTOROLA 数値要素が、バイト単位でないときの出力バイト順を、MOTOROLA形式とする。
.FILLBYTE(numer) アドレス指定をした場合の埋め合わせデータを指定する。必ずバイトの値。
.BYTEBLOCK(data,length) datalength分だけ出力する。 lengthは、およそ10MBを超えることは出来ない(安全のため)。
.WORDBLOCK(data,length) datalength分だけ出力する。 length*2 は、およそ10MBを超えることは出来ない(安全のため)。
.DWORDBLOCK(data,length) datalength分だけ出力する。 length*4は、およそ10MBを超えることは出来ない(安全のため)。
.BLOCK(tsexpr_data,tserpr_len) TSEXPRを使用してブロックデータを出力する。 datalength分だけ出力する。 数値の単位の指定は、.BYTE/.WORD/.DWORDコマンド指定する。 WORD/DWORDの場合は、出力バイト順を.INTEL/.MOTOROLAコマンドで指定する。 lengthは、バイト換算して、およそ10MBを超えることは出来ない(安全のため)。
.MIDI(data,length) dataを7bitにバイト分割して出力する。 出力バイト数はlengthで指定する。 lengthは1-5までの指定が可能。 出力できない値を与えた場合はエラーとなる。
出力バイト順に従う。上位から順に出力する場合は、MOTOROLA形式になっている必要がある。
.FILE{(|[|{}file{)|]|}} 指定のファイルを直接(バイナリのまま)挟みこむ。 括弧の組で(()[]{})で挟んで ファイル名を記述する。引用符などは必要ない。括弧で挟まれた間が厳密に ファイル名である (先頭にスペースをつけるなどすると、そのまま、ファイル名となってしまう)。

数値記法

数値は10進数、あるいは、16進数で記述する。
デフォルトは16進数だが、オプション(-B-D-H)あるいは、 コマンド(.HEX.DEC.BIN)で切りかえることができる。
また、オプションモードの如何に関わらず、 「$」をつければ16進表記、 「%」をつければ2進表記、 「&」をつければ10進表記ができる。

TSEXPRの注意事項

  1. SYS()関数は以下の値を返す
    SYS(10)ID値
    SYS(20)詰め合わせバイトの値
    SYS(30)現在のチェックサムの値
    SYS(40)現在の書きこみ位置
    SYS(0-9)-Pで指定した値

OPTION

-A{B|W|D}
数値要素の単位を切りかえる。
-AB
バイト単位。デフォルト
-AW
ワード単位
-AD
ダブルワード単位
-B
起動時、2進記法に切りかえる。
-D
起動時、10進記法に切りかえる。
-H
起動時、16進記法に切りかえる。デフォルト。
-F[fillbyte]
アドレス指定の詰め合わせバイトを16進数で指定。
デフォルトは、$00。&で始めると10進数。%で始めると2進数の指定も可。
-I[num]
.IDで出力するバイト値を16進で指定する。
&で始めると10進数。%で始めると2進数の指定も可。
-L
ファイル出力サイズの制限を外す
-M
起動時の出力バイト順をMOTOROLA形式にする。
-Ofilename
出力を指定のファイルに切替える。
-Pn=
nは0-9。 .Pnで出力するバイト値を16進で指定する。
&で始めると10進数。%で始めると2進数の指定も可。

戻り値

成功すれば1を返す。それ以外では0

用例

バージョン

Ver 1.01(tsexpr)表記でバイナリ型が使えるようになった。
Ver 1.00初版