第5章
TATARAの実行
4章では、TATARAをtatara hello.as hello.tro という1つの形で実行しました。この章では、コマンド・ライン全体について説明します。指定するファイル名、ファイル名を省いたときの動作、すべてのオプション、そしてTATARAが自分から表示するすべての内容です。セッションは HELLOを使い、A:\TATARA\EXAMPLES\HELLOで実行します。
5.1 コマンド・ライン
TATARAのコマンドは、次の形をしています。
tatara [options] source [object [listing]]
角かっこの中は省略できます。sourceはアセンブルするファイル、objectは書き出すオブジェクト・ファイル、listingはリスティングを書き出すファイルです。リスティングについては5.5節で説明します。
オプションは、/Qのように、スラッシュのあとに1文字を続けたものです。文字は大文字でも小文字でもかまいません。オプションは、ファイル名の前、間、後ろのどこに置いてもよく、1つずつ別の語として書きます。/lsではなく/l /sと書いてください。TATARAはスラッシュのあとの最初の1文字だけを読み、その語の残りは無視するので、/lsは/lと同じになります。
5.2 ファイル名
ファイル名は順番どおりに扱われます。1つ目がソース・ファイル、2つ目がオブジェクト・ファイル、3つ目がリスティング・ファイルです。4つ目を書くとエラーになります(5.6節)。
5.2.1 拡張子は付け加えられない
TATARAは、それぞれの名前を入力されたとおりに使い、拡張子を自分で付け加えることはしません。表5.1はよく使われる拡張子で、サンプルもこれを使っていますが、入力するときには拡張子も書く必要があります。
| ファイル | よく使われる拡張子 |
| ソース・ファイル | .AS(.ASMと.Z80もよく使われます) |
| オブジェクト・ファイル | .TRO |
| リスティング・ファイル | .LSTまたは.PRN |
警告. tatara helloは、拡張子のないHELLOという名前のファイルを探し、見つからなければ止まります。
A:\TATARA\EXAMPLES\HELLO>tatara hello Tatara MSX Macro-Assembler v1.2.0 Copyright (C) 2026 Javier Lavandeira https://tatara.tools ERROR: cannot open HELLO
名前には、MSX-DOS2のほかのファイル名と同じように、ドライブとディレクトリを含めることができます。tatara src\main.as obj\main.troは、ソースをディレクトリ SRCから読み、オブジェクト・ファイルをOBJに書き出します。
5.2.2 オブジェクト・ファイルを省く
2つ目のファイル名を書かないと、TATARAはソースを同じように読んでアセンブルし、エラーがあれば表示しますが、何も書き出しません。ソースにエラーがあるかどうかをすばやく確かめるのに便利です。
A:\TATARA\EXAMPLES\HELLO>tatara hello.as Tatara MSX Macro-Assembler v1.2.0 Copyright (C) 2026 Javier Lavandeira https://tatara.tools ended at HELLO.AS(22)
5.2.3 オブジェクト・ファイルが書き出されるとき
TATARAはソースを2回読み、1回目の読み込みでソース全体を読み終えてからオブジェクト・ファイルを作ります。1回目の読み込みでエラーが見つかると、TATARAはその前に止まるので、同じ名前のオブジェクト・ファイルはそのまま残ります。次の例では、BAD.ASには命令ではない行が1行だけ書かれています。HELLO.TROは、前後で同じ時刻の同じファイルのままです。
A:\TATARA\EXAMPLES\HELLO>dir hello.tro Volume in drive A: is MAIN Directory of A:\TATARA\EXAMPLES\HELLO HELLO TRO 93 26-09-29 2:15 93 bytes in 1 file 12384K free A:\TATARA\EXAMPLES\HELLO>tatara bad.as hello.tro Tatara MSX Macro-Assembler v1.2.0 Copyright (C) 2026 Javier Lavandeira https://tatara.tools BAD.AS(1): ERROR: not a directive, a macro or an instruction. A:\TATARA\EXAMPLES\HELLO>dir hello.tro Volume in drive A: is MAIN Directory of A:\TATARA\EXAMPLES\HELLO HELLO TRO 93 26-09-29 2:15 93 bytes in 1 file 12376K free
エラー・メッセージには、ファイル名と、かっこに入った行番号、そして何がいけないのかが表示されます。メッセージについては20章で説明します。
5.2.4 オブジェクト・ファイルとソースを同じにはできない
2つ目のファイル名が1つ目と同じだと、オブジェクト・ファイルを書き出すとソースが消えてしまうので、TATARAは実行を拒否します。
A:\TATARA\EXAMPLES\HELLO>tatara hello.as hello.as Tatara MSX Macro-Assembler v1.2.0 Copyright (C) 2026 Javier Lavandeira https://tatara.tools ERROR: the output file is the input file.
TATARAは、入力されたとおりの2つの名前を比べます。hello.asとa:hello.asのように、同じファイルを別の書き方で指定した場合には気づかないので、名前の順番には注意してください。
5.3 オプション
表5.2は、ふだん使うオプションの一覧です。それぞれ、専用の章か、この章で説明します。
/Cが変えるのは1つだけです。これを付けなければ、M80と同じようにStart、START、startは同じ名前ですが、付けると3つの別々の名前になります。命令、レジスター、疑似命令は、/Cの有無にかかわらず、大文字でも小文字でも書けます。
5.3.1 診断用のオプション
使い方の画面には、ほかに3つのオプションがあります。これらはTATARAがソースをどう解釈したかを表示するもので、ふだん使うためではなく、TATARA自身の問題を調べるためのものです。
- /F
-
各行をリスティングする代わりに、TATARAがその行を分けた4つのフィールド(6章)を、それぞれ角かっこに入れて表示します。
- /M
-
すべてのマクロ定義を、TATARAが保存したとおりに表示します。
- /H
-
最後に、TATARAがマクロのために確保しているメモリのブロックのうち、まだ使われているものの数を表示します。
5.4 TATARAが表示するもの
5.4.1 バナーと要約行
ソースをアセンブルするときは、いつも最初にバナー(banner)が表示されます。プログラムの名前とバージョン、著作権表示、Webアドレスで、そのあとに空行が1行続きます。最後には要約行(summary line)が表示されます。ソースがどこで終わったか、つまりENDのあるファイルと行、ENDがなければ最後の行です。どちらも4章で見ました。ENDが取り込んだファイルの中にあれば、要約行にはそのファイルの名前が出ます(13章)。
/Qを付けると、どちらも表示されません。エラーは/Qの有無にかかわらず表示されるので、/Qを付けて何も表示されなければ、成功したということです。
A:\TATARA\EXAMPLES\HELLO>tatara /q hello.as hello.tro A:\TATARA\EXAMPLES\HELLO>
/Vはバナーを表示して終わります。ソースを指定しても、アセンブルはしません。
A:\TATARA\EXAMPLES\HELLO>tatara /v Tatara MSX Macro-Assembler v1.2.0 Copyright (C) 2026 Javier Lavandeira https://tatara.tools A:\TATARA\EXAMPLES\HELLO>
5.4.2 使い方の画面
/?は、バナーと使い方の画面(usage screen)を表示して終わります。使い方の画面は、コマンド・ラインの要約です。ファイル名を1つも書かずにtataraとだけ入力しても、同じ画面が表示されます。
A:\TATARA\EXAMPLES\HELLO>tatara /? Tatara MSX Macro-Assembler v1.2.0 Copyright (C) 2026 Javier Lavandeira https://tatara.tools Usage: TATARA [options] <source> [output] TATARA /P [options] <source> [output] TATARA /L [options] <source> <output> <listing> Options: /P Assemble to the screen /L Write a listing file, named third on the line /S Print the symbol table when the assembly ends /C Make symbol and macro names case-sensitive /F Print the fields of each line, for diagnosis /M Print every macro definition, for diagnosis /H Print how many heap blocks are still in use /Q Omit the banner above and the summary line /V Print the program version /? Print this screen <source> : The file to assemble, M80 syntax (.as, .asm or .z80) <output> : The relocatable object it produces, usually .tro <listing> : The listing file, usually .lst or .prn
この画面はMSXの画面の24行をすべて使うので、コマンドの行は上にスクロールして見えなくなります。
5.5 リスティング
リスティング(listing)とは、TATARAがアセンブルしたソースを印刷用に整えたもので、ページに分かれ、各ページに見出しが付きます。/Pか/Lを付けたとき、または3つ目のファイル名を書いたときに作られます。
/Pは、リスティングを画面に表示します。次のセッションは、その始めの部分だけを示しています。
A:\TATARA\EXAMPLES\HELLO>tatara /p hello.as Tatara MSX Macro-Assembler v1.2.0 Copyright (C) 2026 Javier Lavandeira https://tatara.tools Tatara v1.2.0 29-Sep-26 PAGE 1 ; HELLO.AS - the smallest complete program. ; ; One source, one object, one .COM. It prints a line and gives the ; machine back to MSX-DOS.
各ページはフォーム・フィードで始まり、MSXではこれで画面が消えます。そのため、1ページより長いリスティングは、読むより早く流れていってしまいます。/Pは、短いソースをさっと確認するのに向いています。
/Lは、3つ目に書いたファイルにリスティングを書き出します。このとき、各行の前にアドレスとバイトが付きます。
A:\TATARA\EXAMPLES\HELLO>tatara /l hello.as hello.tro hello.lst Tatara MSX Macro-Assembler v1.2.0 Copyright (C) 2026 Javier Lavandeira https://tatara.tools ended at HELLO.AS(22)
リスティングには、ソースが取り込んだすべてのファイルの行が含まれ、最後にすべてのシンボルの表が付きます。そのため、HELLO.LSTでさえ約20 KBになり、その大部分はMSXDOS.INCです。リスティングの内容と、ソースからそれを制御する方法は、18章で説明します。
5.6 TATARAが実行を始めないとき
表5.3は、TATARAが1行もアセンブルしないうちに止まるときのメッセージです。TATARAは最初にコマンド・ラインを調べるので、一部のメッセージはバナーより前に表示されます。
メッセージ |
意味 |
ERROR: Tatara needs MSX-DOS2 or Nextor. |
MSXがMSX-DOS1で動いています。 |
ERROR: Tatara needs a memory mapper. |
MSXにメモリ・マッパーがありません(1章)。 |
ERROR: unknown option. |
スラッシュのあとに、TATARAのオプションではない文字が続いているか、何も続いていません。 |
ERROR: too many filenames. |
ファイル名が4つ以上あります。 |
ERROR: the output file is the input file. |
オブジェクト・ファイルがソースと同じ名前です。 |
ERROR: cannot open name |
ソース・ファイルが存在しないか、名前を拡張子なしで入力しました。 |
ERROR: cannot create name |
ディスクがいっぱいか、書き込み禁止になっているなどの理由で、オブジェクト・ファイルを書き出せません。 |
そのうちの2つは、次のように表示されます。
A:\TATARA\EXAMPLES\HELLO>tatara /x hello.as ERROR: unknown option. A:\TATARA\EXAMPLES\HELLO>tatara a b c d ERROR: too many filenames.