EASy68K Warning and Error Messages

"WARNING: Address expected."
The starting address of the program was missing from the END directive. The required syntax for the end directive is:
END Address
Where Address is a literal value or label that specifies the starting address of the program.

"WARNING: ASCII constant exceeds 4 characters"
ASCII constants such as 'ABCD' are limited to 4 characters. The resulting value is a 32 bit binary number comprised of the ASCII values of each character. 'ABCD' results in the number $41424344 which is the ASCII code for each letter appended together beginning with $41 the ASCII code for 'A'.

"WARNING: DO expected."
The structured assembly statements WHILE, UNTIL and FOR must end with the word DO.
For example until d1 <eq> #0 do

"WARNING: END directive missing, starting address not set."
All programs must contain one END directive which marks the end of the assembled program. The END directives argument indicates the starting address of the program. The END directive should be the last statement in the program.

"WARNING: Forcing SHORT addressing disables range checking of extension word"
The compiler will not create an error if the address specified is outside the range of a 16 bit offset.
Addresses are forced to use the short form by appending a .w for example: move.b label.w,d0

"WARNING: Forward reference may cause 'Symbol value differs...' error."
A macro definition should be located above the macro call. Placing macro definitions below the macro call will result in an error if the macro call is between a branch and the branch destination.

"WARNING: Numeric constant exceeds 32 bits"
The literal number in the source file is too big. A 32 bit number may not exceed 4,294,967,295 decimal or $FFFFFFFF hexadecimal.

"WARNING: Origin value is odd (Location counter set to next highest address)"
The address used with the ORG directive must always be an even number. If an odd address is specified, EASy68K will automatically adjust the number up to the next even location.

"WARNING: THEN expected."
The structured assembly statement IF should end with the word THEN. For example if d1 <ne> #0 then

"ERROR: Absolute address exceeds 16 bits"
Absolute short addressing must be in the range -32768 through 32767.

"ERROR: Branch instruction displacement is out of range or invalid"
The target address specified for the branch instruction is too far away. Short displacements must be from -128 to 127 bytes away. Word displacements must be from -32768 to 32767 bytes away. A JMP instruction may be used to transfer program control to any address.

"ERROR: Comma expected"
The operand is not complete.

"ERROR: Displacement out of range"
The displacement value used exceeds the allowed range. Word displacements must be in the range -32768 through 32767. Byte displacements must be in the range -128 through 127.

"ERROR: Division by zero attempted"
An expression in the source code contained a mathematical operation that attempted to divide a number by zero. This error is reported by the assembler while it is attempting to resolve a literal number in the source code. It should not be confused with the exception that occurs if the 68000 DIVU or DIVS instruction attempts a divide by zero.

"ERROR: ENDM expected"
Macro definitions must end with the ENDM directive.

"ERROR: FOR without ENDF."
The structured FOR statement must have a matching ENDF.

"ERROR: Forward references not allowed with this directive"
The directive is referencing an address that is higher than the current address of the instruction. This directive only permits access to addresses that are lower than the current address. Forward references are not permitted because the referenced address may change during the assembly process.

"ERROR: IF without ENDI."
The structured IF statement must have a matching ENDI.

"ERROR: Immediate data exceeds 8 bits"
8 bit data must be in the range -128 through 127 for signed values and 0 through 255 for unsigned.

"ERROR: Immediate data exceeds 16 bits"
16 bit data must be in the range -32768 through 32767 for signed values and 0 through 65535 for unsigned.

"ERROR: Invalid addressing mode"
EASy68K did not recognize a valid 68000 addressing mode for this instruction. Verify that the addressing mode is supported by the instruction. Check for missing or mismatched parenthesis, spaces or punctuation.

"ERROR: Invalid argument"
The argument used in the conditional assembly directive is invalid or missing.

"ERROR: Invalid bitfield."
The specification of the bitfield is invalid. EASy68K only supports valid 68000 addressing modes with the bitfield instructions.

"ERROR: Invalid block length"
The size of the memory block requested is invalid.

"ERROR: Invalid constant shift count"
Immediate values used to specify shift counts must be between 1 and 8.

"ERROR: Invalid opcode"
The opcode is not a valid 68000 instruction or defined macro. EASy68K only supports 68000 opcodes and the bitfield instructions from the 68020.

"ERROR: Invalid operator"
An expression in the source code contains an unrecognized operator.

"ERROR: Invalid size code"
Size codes are normally specified by using a .B for byte, .S for short, .W for word, or .L for long. Verify that the size code is valid for the instruction and addressing mode.

"ERROR: Invalid syntax"
EASy68K detected something wrong with the statement it was attempting to assemble. Check for missing parameters, bad or missing punctuation and values that are outside the expected range.

"ERROR: Invalid vector number"
The TRAP instruction vector number must be between 0 and 15 inclusive.

"ERROR: Label is not allowed"
Labels are not permitted with this directive.

"ERROR: Label required with this directive"
A label must be used with this directive. Labels must begin in the first column of the line or must be terminated with a colon ':'.

"ERROR: Nested Macro calls are too many levels deep."
Nested macros are permitted but the assembler has detected what appears to be an infinite macro loop.

"ERROR: No matching DBLOOP statement was found."
A structured UNLESS was encountered with no matching DBLOOP.

"ERROR: No matching FOR statement was found."
A structured ENDF was encountered with no matching FOR.

"ERROR: No matching IF statement was found."
A structured ELSE or ENDI was encountered with no matching IF.

"ERROR: No matching REPEAT statement was found."
A structured UNTIL was encountered with no matching REPEAT.

"ERROR: No matching WHILE statement was found."
A structured ENDW was encountered with no matching WHILE.

"ERROR: Quick immediate data range exceeds 1 byte"
The immediate data used with the MOVEQ instruction may not exceed 1 byte.

"ERROR: Quick immediate data range must be 1 to 8"
The immediate data used with the ADDQ and SUBQ instruction must be 1 through 8 inclusive.

"ERROR: Register list symbol not previously defined"
Register lists must be defined prior to use.

"ERROR: Register list symbol used in an expression"
Register lists may not be used as part of an expression.

"ERROR: Symbol defined more than once"
The symbol is defined in the program in more than one location. Only symbols that are defined with the SET directive may appear in more than one location.

"ERROR: Symbol is not a register list symbol"
Register lists may be defined and used with the MOVEM instruction. The register list must be defined prior to use.

"ERROR: Symbol value differs between first and second pass"
The value or address assigned to the symbol changed during the assembly process. This may be caused if a macro call is placed between a branch or jump instruction and its destination address. Place all macro definitions at the top of the source file.

"ERROR: Too many arguments"
Too many arguments were specified when calling a macro.

"ERROR: Unable to access specified file."
There was an error while trying to access the specified include file.

"ERROR: Undefined symbol"
No definition could be found for the specified symbol. Verify the spelling of the symbol and make sure operands are separated from opcodes and comments by at least one space or tab.

"ERROR: UNLESS without DBLOOP."
The structured UNLESS statement must have a matching DBLOOP.

"ERROR: UNTIL without REPEAT."
The structured UNTIL statement must have a matching REPEAT.

"ERROR: WHILE without ENDW."
The structured WHILE statement must have a matching ENDW.