Tatara

付録D
エラーメッセージ

この付録では、TATARAとTANRENが表示するすべてのメッセージについて、その意味、対処のしかた、例を示している節を示します。D.1節ではメッセージの形を説明し、D.2節とD.3節ではそれぞれのツールのメッセージを、表示されるとおりにアルファベット順で示します。D.4節では、エラーではないTANRENの警告とお知らせを示します。

D.1 メッセージの形

TATARAのエラーは、ファイルと行を示し、そのあとのERROR:に続けてメッセージを表示します(20.1節)。

LERR.AS(5): ERROR: not a form this instruction has.
 

その行がインクルード・ファイル、マクロ、繰り返しブロックの中にあると、メッセージのあとの行、つまり経路が、TATARAがそこにどうたどり着いたかを示します。インクルード・ファイルではincluded from FILE(line)、マクロではin NAME, called from FILE(line)です(20.3節)。コマンド・ラインの誤りや、MSX-DOS2やメモリ・マッパーがない場合は、示す行がないので、バナーの前にERROR:とメッセージだけを表示します。

TANRENのエラーは行を示しません。誤りが1つのオブジェクト・ファイルにあるときは、BAD.TRO: ERROR: not a Tatara object file.のようにメッセージがファイルの名前で始まります。そうでなければ、ERROR:とメッセージだけです(27.1節)。

どちらのツールも、エラーを1つ表示して止まります(20.2節、27.2節)。誤りを直してもう一度実行すると、次の誤りが見つかります。/Qでエラーが隠れることはありません。メッセージの中のファイル名は大文字で表示されます。

下の一覧では、それぞれのメッセージをERROR:のあとに表示されるとおりに示し、斜体の語は変わる名前を表します。一覧は、表示されるメッセージのアルファベット順なので、a PUBLIC name was never defined.はAの位置にあります。

D.2 TATARAのメッセージ

a bit number must be 0 to 7.

BIT、SET、RESのビット番号が0から7の範囲にありません。9.6節。

a JR or DJNZ can only reach -128 to 127.

相対ジャンプの飛び先が遠すぎます。どのアドレスにも届くJPを使ってください。9.3節。

a macro name may be at most 64 characters.

MACROの前の名前が64文字を超えています。7.2節。

a name may hold only letters, digits, ? @ . _ and the dollar sign.

foo*barの*のように、ラベルに名前に使えない文字が含まれています。7.1節。

a PAGE length must be 10 to 255.

PAGEのあとの数がその範囲にありません。18.2節。

a PUBLIC name was never defined.

PUBLICで宣言した名前が、ソースのどこにも定義されていません。オブジェクト・ファイルを書き出すときに見つかるので、オブジェクト・ファイルを作らなければソースは受け付けられます。12.5節。

a segment or group name may be at most 16 characters.

CSEG、DSEG、GROUPのあとのセグメントやグループの名前が16文字を超えています。7.2節。

an external symbol may not be used here.

EXTRNで宣言した名前が、TANRENが仕上げられない場所で使われています。EQUの中、1つの式で2回、または2-farのように数を足すか引く以外の使い方です。8.6節。

an index displacement must be -128 to 127.

(IX+d)や(IY+d)のディスプレースメントdがその範囲にありません。9.2節。

bad ASEG, CSEG or DSEG line.

セグメントの疑似命令に、名前のあとのTRANSIENT以外の語のような、受け付けないオペランドがあります。10.7節。

bad DB, DW or DC operand.

db 1„2のように項目が抜けているか、DWの文字列が3文字以上あるか、DCに文字列がないか空です。11.4節。

bad expression.

式が読めません。基数にない数字、名前に使えない文字、オペランドを書けない場所のオペランド、または値が必要な場所に何もない場合です。8.2節。

bad macro parameter list.

MACROのパラメーター、またはIRPやIRPCのパラメーターとリストが、コンマで区切った名前になっていません。16.9節。

bad PUBLIC or EXTRN list.

PUBLICやEXTRNに名前がないか、名前でないものがあります。12.7節。

cannot create name

オブジェクト・ファイルやリスティングを作れません。たとえば、ディレクトリがない、ディスクがいっぱい、書き込み禁止の場合です。5.6節。

cannot open name

ソース、またはINCLUDEで指定したファイルが見つかりません。インクルード・ファイルの場合は、メッセージのあとの行がそれを求めた行を示します。TATARAは13.2節の3つの場所を探しています。13.8節。

cannot write to the output file.

ディスクがいっぱいか書き込み禁止のため、オブジェクト・ファイルやリスティングを書き込めませんでした。第2パスでのほかのエラーと同じように、TATARAはオブジェクト・ファイルを削除します。ディスクに空きを作るか別のディスクを使って、もう一度アセンブルしてください。20.2節。

conditional not closed by ENDIF.

IFにENDIFがありません。メッセージはIFの行を示します。15.7節。

conditionals nested too deeply.

同時に開いている条件付きアセンブルが16を超えています。15.7節。

ELSE or ENDIF without a matching IF.

IFが開いていないのにELSEやENDIFがあるか、1つのIFに2つ目のELSEがあります。15.7節。

ENDM without a macro definition.

マクロも繰り返しブロックも開いていないのにENDMがあります。16.9節。

EQU, DEFL and MACRO take a name, not a label.

EQU、DEFL、MACROの前の名前にコロンが付いています。コロンを取ってください。12.3節。

EXITM outside a macro or repeat block.

EXITMがマクロや繰り返しブロックの中にありません。16.9節。

GROUP needs a name, no label, and a transient DSEG.

GROUPに名前がないか、ラベルが付いているか、トランジェント・データ・セグメントの中にありません。10.7節。

IM takes 0, 1 or 2.

IMのオペランドが0、1、2のどれでもありません。9.6節。

INCLUDE without a filename.

INCLUDEのあとに何もありません。13.8節。

internal - an instruction emitted nothing.

内部エラーです。TATARAが自分自身の不具合を見つけました。報告してください(20.5節)。20.5節。

internal - this line emitted more bytes than fit.

上と同じく内部エラーです。20.5節。

IXH, IXL, IYH and IYL are registers, not names.

ラベル、PUBLIC、EXTRNが、インデックス・ハーフの4つの名前のどれかを使っています。これらはバージョン1.2.0からレジスターです。M80はこれらを名前として受け付けます。9.5節。

LOCAL must come before the macro body.

LOCALの行が、本体のほかの行のあとにあります。16.5節。

macro definition not closed by ENDM.

マクロや繰り返しブロックにENDMがありません。メッセージはそれを始めた行を示します。16.9節。

macro line too long.

マクロや繰り返しブロックの行が、パラメーターを引数に置き換えると255文字を超えます。経路がマクロを示します。16.2節。

MACRO without a name.

MACROの前に名前がありません。16.9節。

not a directive, a macro or an instruction.

オペレーションの語が、そのどれでもありません。つづりの誤り、TATARAにないM80の疑似命令(付録J)、まだ定義されていないマクロ、または1桁目から始まらずコロンもないラベルかもしれません。6.3節。

not a form this instruction has.

命令はありますが、ld hl,aのように、そのオペランドの形はありません。書き方は付録Bに一覧があります。9.6節。

only *EJECT and its dollar spelling are control lines.

1桁目の語が*か$で始まっているので、M80と同じように制御行になりますが、それが*EJECTや$EJECTではありません。M80の*TITLEと$TITLEは、TATARAではSUBTTLと書きます。付録J。

out of mapper memory.

TATARAの表のための空きがメモリ・マッパーにありません。内部エラーではなく、ソースがMSXのメモリーより多くを必要としています。20.5節。

phase error - this label had a different value on pass 1.

ラベルが第2パスで別のアドレスになりました。たいていは、条件付きアセンブルの答えがパスごとに違ったためです。15.2節。

relocation error - a segment-relative value is not allowed here.

TANRENが仕上げるアドレスや外部の名前が、使えない場所で使われています。1バイトの中、かけ算、REPTの回数、ほかのセグメントのアドレスを使ったORG、ほかのセグメントのラベルとの引き算です。8.6節。

RST takes 0, 8, 10h and so on to 38h.

RSTのオペランドが、8つのリスタート・アドレスのどれでもありません。9.6節。

source line too long.

ソース・ファイルの行が255文字を超えています。6.6節。

sources nested too deeply.

インクルード・ファイル、マクロの展開、繰り返しブロックの入れ子が16段を超えています。自分自身を終わりなく使うマクロが原因のことがよくあります。16.7節。

Tatara needs a memory mapper.

MSXにメモリ・マッパーがありません。バナーの前に表示されます。5.6節。

Tatara needs MSX-DOS2 or Nextor.

MSXがMSX-DOS1で動いています。バナーの前に表示されます。5.6節。

the output file is the input file.

オブジェクト・ファイルがソースと同じ名前です。5.2節。

the TATARA variable is too long.

TATARAの値が127文字を超えています。MSX-DOSはコマンドに127文字しか与えないので、プロンプトやバッチ・ファイルのsetではこれほど長い値は設定できません。設定できるのはプログラムだけです。13.3節。

this label was defined on pass 1 and not on pass 2 - a conditional skipped it.

条件付きアセンブルが、第1パスではラベルをアセンブルし、第2パスでは飛ばしました。たとえばIF1の中のラベルや、2回読まれたインクルード・ファイルです。15.2節。

this name already has a value.

名前が2回定義されています。ラベルやEQUの名前をもう一度定義した、DEFLの名前がラベルやEQUの名前でもある、EXTRNで宣言した名前を定義した、のどれかです。マクロの中のラベルにはLOCALを使ってください。12.2節。

this segment was declared differently before.

あるセグメントが、ある場所ではトランジェントとして、別の場所ではそうでなく選ばれています。10.7節。

this transient DSEG needs a GROUP first.

トランジェント・データ・セグメントで、最初のGROUPより前に場所を確保している行があります。10.7節。

too many different source files.

TATARAが名前を覚えておけるのは、ソースを含めて32回のファイルのオープンまでで、33回目が求められました。同じファイルを2回取り込むと2回と数えます。付録E。

too many filenames.

コマンド・ラインにファイル名が4つ以上あります。5.6節。

too many macro parameters.

マクロのパラメーターが16を超えています。16.9節。

too many segments, groups or externals.

名前付きセグメント、グループ、外部の名前が、オブジェクト・ファイルに入りきらないほどあります(付録E)。10.7節。

too many source files open at once.

同時に開いているファイルが4つを超えています。インクルード・ファイルがさらにほかのファイルを取り込んでいるか、ファイルが自分自身を取り込んでいます。13.5節。

undefined symbol in an expression.

式の中の名前がどこにも定義されていないか、IFやREPTではその行でまだ定義されていません。文字で始まる16進数には前に0が必要です。15.2節。

unknown option.

スラッシュのあとが、TATARAのオプションにない文字か、何もありません。バナーの前に表示されます。5.6節。

D.3 TANRENのメッセージ

/D: would put the data on top of the code.

/D:で指定したアドレスがコードの中にあります。24.3節。

a file list may not name another one.

リンク・ファイルの中の語が@で始まっています。22.4節。

cannot create NAME

出力ファイルを作れません。たとえば、そのディレクトリがない場合です。26.9節。

cannot open NAME.TRO

その名前のオブジェクト・ファイルが、TANRENの探す場所に見つかりません。23.1節。

cannot open the file list NAME.LNK

その名前のリンク・ファイルがないか、@のあとに名前がありません。22.4節。

cannot write the output file - the disk may be full.

出力ファイルは作られましたが、書き込みに失敗しました。TANRENはすぐに止まり、書いた部分はそのまま残ります。もう一度リンクする前に削除してください。27.2節。

not a Tatara object file.

メッセージはオブジェクト・ファイルの名前で始まります。ファイルがオブジェクト・ファイルの形で始まっていません。27.1節。

one module was assembled /C and another was not.

モジュールはすべて/C付きか、すべて/Cなしでアセンブルしなければなりません。25.5節。

only one file list may be given.

コマンド・ラインに2つ以上のリンク・ファイルがあります。22.4節。

out of mapper memory.

プログラムのイメージやTANRENの表のための空きがメモリ・マッパーにありません。26.7節。

segment NAME is declared differently.

メッセージはオブジェクト・ファイルの名前で始まります。そのセグメントの種類が、このファイルと前のファイルで違います。27.4節。

Tanren needs a memory mapper.

MSXにメモリ・マッパーがありません。バナーの前に表示されます。21.6節。

Tanren needs MSX-DOS2 or Nextor.

MSXがMSX-DOS1で動いています。バナーの前に表示されます。21.6節。

that public symbol is already defined.

2つのモジュールが同じ公開の名前を定義しています。メッセージの前の行、NAME is defined again in module MODがその名前を示します。25.4節。

the linked image would run past FFFFh.

プログラムが、始まるアドレスからFFFFhまでに収まりません。24.6節。

the object file ends inside a record.

メッセージはオブジェクト・ファイルの名前で始まります。ファイルが内容の途中で終わっています。モジュールをアセンブルし直してください。27.3節。

the output file NAME is also an input file.

出力ファイルがオブジェクト・ファイルの1つを上書きしてしまいます。21.2節。

the symbols above were never defined.

Never defined:の下に並んだ名前は、どこかのモジュールが外部と宣言していますが、どのモジュールも定義していません。25.3節。

the TANREN variable is too long.

TANRENが127文字を超えています。23.5節。

this object file was made by another version.

メッセージはオブジェクト・ファイルの名前で始まります。ファイルの形式が、このTANRENの読むものではありません。同じバージョンのTATARAでモジュールをアセンブルし直してください。27.3節。

too many external symbols in one module.

1つのモジュールが512を超える外部の名前を宣言しています。TATARA自身は254で止まるので、TATARAが作ったオブジェクト・ファイルではこうなりません。付録E。

too many segments or groups in one module.

メッセージはオブジェクト・ファイルの名前で始まります。モジュールのセグメントかグループが、2つのデフォルトのセグメントを含めて16を超えています。27.4節。

too many words on the command line or in the file list.

語が全部で4096文字を超えるか、1つの語が128文字を超えています。22.4節。

unknown option.

TANRENにないオプションか、コロンのない/D、/O、/Pです。バナーの前に表示されます。21.3節。

D.4 TANRENの警告とお知らせ

これらはエラーではありません。TANRENは続けて、リンクは成功します。

FILE: bytes follow the END record.

エラーではありません。オブジェクト・ファイルの最後のレコードのあとにバイトがあります。このとき要約行はends at EOF.ではなくAND BYTES AFTER THEM.で終わります。/Qを付けるとどちらも表示されません。TATARAはこのようなファイルを作らないので、モジュールをアセンブルし直してください。27.3節。

Nothing to write: no module has any content.

エラーではありません。内容のあるバイトを持つモジュールがないので、ファイルは作られません。26.8節。

WARNING: NAME is entered at XXXX, not at YYYY.

ファイルは/Bなしで書き出されたので、最初のアドレスXXXXから実行されますが、ENDの行のアドレスはYYYYです。.COMプログラムでは、ENDで示すコードを先頭に置いてください。/Qを付けても表示されます。26.5節。

WARNING: the command line is 127 characters, which is all MSX-DOS gives - anything past it was dropped in silence.

3行目にUse @<file> if a module is missing.が続きます。コマンド・ラインがちょうど127文字なので、一部が切り捨てられたかもしれません。リンクをリンク・ファイルに書いてください。21.5節。