Appendix D
Error messages
This appendix lists every message that TATARA and TANREN print: what it means, what to do about it, and the section that shows it with an example. Section D.1 describes how a message is laid out; sections D.2 and D.3 list the messages of each tool in alphabetical order, as they are printed; and section D.4 lists TANREN’s warnings and notes, which are not errors.
D.1 How a message is laid out
A TATARA error names the file and the line, then the message after ERROR: (section 20.1):
LERR.AS(5): ERROR: not a form this instruction has.
When the line is in an include file, a macro or a repeat block, the lines after the message, the trail, show how TATARA got there: included from FILE(line) for an include file, and in NAME, called from FILE(line) for a macro (section 20.3). A mistake on the command line, or a missing MSX-DOS2 or memory mapper, has no line to name: the message is ERROR: and the text, before the banner.
A TANREN error names no line. When the mistake is in one object file, the message begins with the file’s name, as in BAD.TRO: ERROR: not a Tatara object file.; otherwise it is ERROR: and the text (section 27.1).
Both tools print one error and stop (sections 20.2 and 27.2). Correct the mistake and run the tool again to find the next one. /Q never hides an error. File names in messages are printed in capitals.
In the lists below, each message is shown as it is printed after ERROR:, and a word in italics stands for a name that changes. The lists are in alphabetical order of the message as printed, so a PUBLIC name was never defined. is under A.
D.2 TATARA’s messages
-
a bit number must be 0 to 7.
The bit number of BIT, SET or RES is outside 0 to 7. Section 9.6.
-
a JR or DJNZ can only reach -128 to 127.
The target of a relative jump is too far away. Use JP, which can reach any address. Section 9.3.
-
a macro name may be at most 64 characters.
The name before MACRO is longer than 64 characters. Section 7.2.
-
a name may hold only letters, digits, ? @ . _ and the dollar sign.
A label holds a character that a name cannot have, such as * in foo*bar. Section 7.1.
-
a PAGE length must be 10 to 255.
The count after PAGE is outside that range. Section 18.2.
-
a PUBLIC name was never defined.
A name declared PUBLIC is not defined anywhere in the source. It is found when the object file is written, so without an object file the source is accepted. Section 12.5.
-
a segment or group name may be at most 16 characters.
The name of a segment or group, after CSEG, DSEG or GROUP, is longer than 16 characters. Section 7.2.
-
an external symbol may not be used here.
A name declared EXTRN is used where TANREN could not finish it: in EQU, twice in one expression, or with an operator other than adding or subtracting a number, as in 2-far. Section 8.6.
-
an index displacement must be -128 to 127.
The displacement d of (IX+d) or (IY+d) is outside that range. Section 9.2.
-
bad ASEG, CSEG or DSEG line.
A segment directive has an operand it does not take, such as a word after the name other than TRANSIENT. Section 10.7.
-
bad DB, DW or DC operand.
An item is missing, as in db 1„2; a string in DW has more than two characters; or DC has no string, or an empty one. Section 11.4.
-
bad expression.
An expression cannot be read: a digit outside its base, a name with a character names cannot have, an operand where none is allowed, or nothing at all where a value is needed. Section 8.2.
-
bad macro parameter list.
The parameters of MACRO, or the parameter and list of IRP or IRPC, are not names separated by commas. Section 16.9.
-
bad PUBLIC or EXTRN list.
PUBLIC or EXTRN has no names, or something that is not a name. Section 12.7.
-
cannot create name
The object file or the listing cannot be made, for example because the directory does not exist or the disk is full or write-protected. Section 5.6.
-
cannot open name
The source, or a file named by INCLUDE, was not found. For an include file, the lines after the message show which line asked for it, and TATARA has looked in the three places of section 13.2. Section 13.8.
-
cannot write to the output file.
Writing the object file or the listing failed, because the disk is full or write-protected. As after any error on the second pass, TATARA deletes the object file. Make room on the disk, or use another one, and assemble again. Section 20.2.
-
conditional not closed by ENDIF.
An IF has no ENDIF. The message names the line of the IF. Section 15.7.
-
conditionals nested too deeply.
More than 16 conditionals are open at once. Section 15.7.
-
ELSE or ENDIF without a matching IF.
ELSE or ENDIF with no IF open, or a second ELSE for one IF. Section 15.7.
-
ENDM without a macro definition.
ENDM with no MACRO or repeat block open. Section 16.9.
-
EQU, DEFL and MACRO take a name, not a label.
The name before EQU, DEFL or MACRO has a colon after it. Remove the colon. Section 12.3.
-
EXITM outside a macro or repeat block.
EXITM is not inside a macro or a repeat block. Section 16.9.
-
GROUP needs a name, no label, and a transient DSEG.
GROUP has no name, has a label, or is not in a transient data segment. Section 10.7.
-
IM takes 0, 1 or 2.
The operand of IM is not 0, 1 or 2. Section 9.6.
-
INCLUDE without a filename.
INCLUDE has nothing after it. Section 13.8.
-
internal - an instruction emitted nothing.
An internal error: TATARA has found a fault in itself. Please report it (section 20.5). Section 20.5.
-
internal - this line emitted more bytes than fit.
An internal error, as above. Section 20.5.
-
IXH, IXL, IYH and IYL are registers, not names.
A label, PUBLIC or EXTRN uses one of the four names of the index halves, which are registers since version 1.2.0. M80 allows them as names. Section 9.5.
-
LOCAL must come before the macro body.
A LOCAL line comes after another line of the body. Section 16.5.
-
macro definition not closed by ENDM.
A macro or repeat block has no ENDM. The message names the line that started it. Section 16.9.
-
macro line too long.
A line of a macro or repeat block is longer than 255 characters once its parameters are replaced by the arguments. The trail names the macro. Section 16.2.
-
MACRO without a name.
MACRO has no name before it. Section 16.9.
-
not a directive, a macro or an instruction.
The word in the operation field is none of these. It may be misspelt, an M80 directive that TATARA does not have (appendix J), a macro not yet defined, or a label that does not start in column 1 and has no colon. Section 6.3.
-
not a form this instruction has.
The instruction exists, but not with these operands, as ld hl,a. Appendix B lists the forms. Section 9.6.
-
only *EJECT and its dollar spelling are control lines.
A word in column 1 starts with * or $, which makes the line a control line, as in M80, but it is not *EJECT or $EJECT. M80’s *TITLE and $TITLE are written SUBTTL in TATARA. Appendix J.
-
out of mapper memory.
The memory mapper has no room left for TATARA’s tables. This is not an internal error: the source needs more memory than the MSX has. Section 20.5.
-
phase error - this label had a different value on pass 1.
A label has a different address on the second pass, usually because a conditional gave a different answer on each pass. Section 15.2.
-
relocation error - a segment-relative value is not allowed here.
An address that TANREN has to finish, or an external name, is used where it cannot be: in one byte, multiplied, as the count of REPT, as the operand of ORG in another segment, or subtracted from a label in another segment. Section 8.6.
-
RST takes 0, 8, 10h and so on to 38h.
The operand of RST is not one of the eight restart addresses. Section 9.6.
-
source line too long.
A line of a source file is longer than 255 characters. Section 6.6.
-
sources nested too deeply.
Include files, macro expansions and repeat blocks inside each other are more than 16 deep, often because a macro uses itself without an end. Section 16.7.
-
Tatara needs a memory mapper.
The MSX has no memory mapper. Printed before the banner. Section 5.6.
-
Tatara needs MSX-DOS2 or Nextor.
The MSX is running MSX-DOS1. Printed before the banner. Section 5.6.
-
the output file is the input file.
The object file has the same name as the source. Section 5.2.
-
the TATARA variable is too long.
The value of TATARA is longer than 127 characters. A value set with set at the prompt or in a batch file cannot be that long, because MSX-DOS gives a command 127 characters; only a value set by a program can. Section 13.3.
-
this label was defined on pass 1 and not on pass 2 - a conditional skipped it.
A conditional assembled a label on the first pass and skipped it on the second, for example a label inside IF1, or an include file read twice. Section 15.2.
-
this name already has a value.
A name is defined twice: a label or EQU name defined again, a DEFL name that is also a label or EQU name, or a name both declared EXTRN and defined. In a macro, use LOCAL for its labels. Section 12.2.
-
this segment was declared differently before.
A segment is selected as transient in one place and not in another. Section 10.7.
-
this transient DSEG needs a GROUP first.
A line in a transient data segment reserves space before the first GROUP. Section 10.7.
-
too many different source files.
TATARA remembers the names of 32 file openings, the source included, and a 33rd was asked for. The same file included twice counts twice. Appendix E.
-
too many filenames.
More than three filenames on the command line. Section 5.6.
-
too many macro parameters.
A macro has more than 16 parameters. Section 16.9.
-
too many segments, groups or externals.
The source has more named segments, groups or external names than an object file can hold (appendix E). Section 10.7.
-
too many source files open at once.
More than four files are open at once, through include files that include others, or a file that includes itself. Section 13.5.
-
undefined symbol in an expression.
A name in an expression is not defined anywhere, or, in IF or REPT, not yet defined at that line. A hexadecimal number that starts with a letter needs a 0 in front. Section 15.2.
-
unknown option.
A slash is followed by a letter that is not one of TATARA’s options, or by nothing. Printed before the banner. Section 5.6.
D.3 TANREN’s messages
-
/D: would put the data on top of the code.
The address given with /D: is inside the code. Section 24.3.
-
a file list may not name another one.
A word in a link file starts with @. Section 22.4.
-
cannot create NAME
The output file cannot be made, for example because its directory does not exist. Section 26.9.
-
cannot open NAME.TRO
No object file of that name was found in the places TANREN looks. Section 23.1.
-
cannot open the file list NAME.LNK
There is no link file of that name, or @ has no name after it. Section 22.4.
-
cannot write the output file - the disk may be full.
The output file was made, but writing to it failed. TANREN stops at once and leaves the part it wrote; delete it before linking again. Section 27.2.
-
not a Tatara object file.
The message begins with the name of the object file. The file does not start as an object file does. Section 27.1.
-
one module was assembled /C and another was not.
All the modules must be assembled with /C, or all without it. Section 25.5.
-
only one file list may be given.
The command line names more than one link file. Section 22.4.
-
out of mapper memory.
The memory mapper has no room left for the program’s image or for TANREN’s tables. Section 26.7.
-
segment NAME is declared differently.
The message begins with the name of the object file. The segment is a different kind in this file and in an earlier one. Section 27.4.
-
Tanren needs a memory mapper.
The MSX has no memory mapper. Printed before the banner. Section 21.6.
-
Tanren needs MSX-DOS2 or Nextor.
The MSX is running MSX-DOS1. Printed before the banner. Section 21.6.
-
that public symbol is already defined.
Two modules define the same public name. The line before the message, NAME is defined again in module MOD, names it. Section 25.4.
-
the linked image would run past FFFFh.
The program does not fit below FFFFh from the address it starts at. Section 24.6.
-
the object file ends inside a record.
The message begins with the name of the object file. The file stops in the middle of its contents. Assemble the module again. Section 27.3.
-
the output file NAME is also an input file.
The output file would overwrite one of the object files. Section 21.2.
-
the symbols above were never defined.
The names listed under Never defined: are declared external by some module and defined by none. Section 25.3.
-
the TANREN variable is too long.
TANREN is longer than 127 characters. Section 23.5.
-
this object file was made by another version.
The message begins with the name of the object file. The file’s format is not the one this TANREN reads. Assemble the module again with the TATARA of the same version. Section 27.3.
-
too many external symbols in one module.
A module declares more than 512 external names. TATARA itself stops at 254, so an object file made by TATARA cannot reach this. Appendix E.
-
too many segments or groups in one module.
The message begins with the name of the object file. The module has more than 16 segments or more than 16 groups, the two default segments included. Section 27.4.
-
too many words on the command line or in the file list.
The words take more than 4096 characters in all, or one word is longer than 128 characters. Section 22.4.
-
unknown option.
An option TANREN does not have, or /D, /O or /P without a colon. Printed before the banner. Section 21.3.
D.4 TANREN’s warnings and notes
These are not errors: TANREN goes on, and the link succeeds.
-
FILE: bytes follow the END record.
Not an error: the object file has bytes after its last record. The summary line then ends AND BYTES AFTER THEM. instead of ends at EOF. /Q hides both. TATARA does not make such a file: assemble the module again. Section 27.3.
-
Nothing to write: no module has any content.
Not an error: no module has a byte with content, so no file is made. Section 26.8.
-
WARNING: NAME is entered at XXXX, not at YYYY.
The file was written without /B, so it will be entered at its first address, XXXX, but the address on the END line is YYYY. For a .COM program, put the code named by END first. Printed even with /Q. Section 26.5.
-
WARNING: the command line is 127 characters, which is all MSX-DOS gives - anything past it was dropped in silence.
A third line follows: Use @<file> if a module is missing. The command line is exactly 127 characters long, so part of it may have been cut off. Put the link in a link file. Section 21.5.