,ll 6.6
,cs 10
,pl 66
,lm 0.2,0.5
,pn 16
,ju
,hd
,ce
OmegaSoft 6809 Cross Relocatable Macro Assembler (V1.0)
,,
,ft

,ce 1
10-##
,,
,ce
OmegaSoft 6809 Cross Relocatable Macro Assembler (V1.0)

,ce
ERROR MESSAGES

,in 0.6
,si -0.6
1   Invalid auto increment/decrement format.
Single auto increment or decrement was specified in the indirect mode (e.g., LDB [Y+]).

,si -0.6
2   Invalid index register format.
One of the accumulators was specified as the offset in the index mode but was not followed by one of the index registers.

,si -0.6
3   Invalid expression for PSH/PUL.
The register list following one of the instructions PSHS, PULS, PSHU, or PULU contained symbols that were not registers.

,si -0.6
4   Incompatible register for PSH/PUL instruction.
The register list for the PSHS/PULS instructions contained the register "S" or the register list for the PSHU/PULU instructions contained the register "U".

,si -0.6
5   Invalid register operand specification.
Undefined register name encountered in indexed addressing mode.

,si -0.6
6   Incompatible register pair.
The register pair of an EXG or TFR instruction was not the same size. The pair must be two 16 bit registers or two 8 bit registers.

,si -0.6
7   Label or opcode error.
A label or opcode symbol does not begin with an alphabetic character or period.

,si -0.6
8   Error in operand expression.
Incompatible symbol types in expression.

,si -0.6
9   Operand needed.
An operand was not found when expected.

,si -0.6
10  Label error.
Invalid character in label.

,si -0.6
11  Undefined opcode.
The symbol in the opcode field is not a valid opcode or directive.

,si -0.6
12  Branch out of range.
The operand resulted in an offset greater than 129 bytes forward or 126 bytes backward from the first byte of the branch instruction.

,si -0.6
13  Illegal addressing mode.
The specified addressing mode in the operand field is not valid with this instruction type.

,si -0.6
14  Byte overflow.
The operand's value exceeded one byte. The most significant 8 bits of the 16 bit expression must all be zeroes or all ones for a one byte two's complement field.
,in 0
,pg
,ce
ERROR MESSAGES

,in 0.6
,si -0.6
15  Directive operand error.
A syntax error was detected in the operand field of a directive.

,si -0.6
16  FCB directive syntax error.
The structure of the FCB directive is syntactically incorrect.

,si -0.6
17  FDB directive error.
The structure of the FDB directive is syntactically incorrect.

,si -0.6
18  Directive operand error.
The directive's operand field is missing, terminated by an invalid terminator, or an expression in the operand field contains an invalid operator.

,si -0.6
19  No END statement.
The END directive was not found at the end of the source file. The END directive is automatically supplied.

,si -0.6
20  Symbol table overflow.
The symbol table has overflowed. This is a fatal error and terminates the assembler during pass one.

,si -0.6
21  The directive must or must not have a label
Depending on the directive used, the label field must be blank or must contain a valid symbol.

,si -0.6
22  Multiply defined symbol.
An attempt was made to define a symbol that was already defined.

,si -0.6
23  Illegal symbol used in an expression.
An undefined, forward referenced, external reference, or relocatable symbol was used illegally in an expression that does not allow them.

,si -0.6
24  XREF or XDEF directive operand error.
An invalid symbol or no operand was detected in the operand field of the XDEF or XREF directive.

,si -0.6
25  Directive  not allowed in absolute section.
The directive is not allowed to be used in this section.

,si -0.6
26  Instructions in code section only.
Instructions are not allowed in data, varib, or absolute sections.

,si -0.6
27  Macro definitions may not be nested.

,si -0.6
28  Misplaced macro, mexit, end, or endm directive.
One of these directives was encountered but is not valid in this location.

,si -0.6
29  Illegal paramter designation.
The character following the backslash "\" was not in the range of 1-9 or A-Z.
,in 0
,pg
,ce
ERROR MESSAGES

,in 0.6
,si -0.6
30  Redefined macro - definition ignored.
The macro symbol n ame is multiply defined.

,si -0.6
31  FAIL directive encountered.
The fail directive was assembled.

,si -0.6
32  Unexpected ENDC or ELSE directive.
An ENDC or ELSE directive was encountered when not currently in conditional assembly.

,si -0.6
33  Excessive conditional nesting.
IF directives nested more than 30 deep.

,si -0.6
34  Nested include files not allowed.

,si -0.6
35  Phasing error.
The location of a label is different between pass one and pass two.

,si -0.6
36  Relative operand expected.
The operation requires that the operand be relative (a label in code section).
,in 0

,ce
WARNING MESSAGES

,in 0.4
,si -0.4
1 Long branch not required.
The destination could have been reached with a short branch. This warning can also be issued when using PCR relative addressing.

,si -0.4
2 Extended addressing.
This could result in non position independent code.

,si -0.4
3 Non absolute immediate addressing.
This could result in non position independent code.
,in 0
,pg

,ce
RELOCATABLE OBJECT MODULE FORMAT

The following is a description of the relocatable object module format used by this assembler and the companion linking loader. The file is recorded in a binary record format where a record consists of :

,in 0.4
L X X X .... X X X

where :
,in 0.6
L is a byte that is the data length (maximum = 252). 
X is the data of the record.
,in 0

Record types :

,in 0.3
,si -0.3
1) Header

$00 : VERS : REV : LTH : NAME : LTH : DESCRIPTION

This record is the first record of the object module. VERS is a one byte value (0 - 255) that represents the version number given in the assembler IDNT directive. REV is the revision number given. NAME is the label given the IDNT directive. DESCRIPTION is the comment field of the IDNT directive.

,si -0.3
2) Section size

$01 : CODE SIZE : DATA SIZE : VARIB SIZE : STACK SIZE

SIZE is the two byte code, data, or varib section size. This is the second record in the module and has ESD index number one for code, ESD index number two for data, and ESD index number three for varib. Stack size is only emitted by the compiler to tell the linkage creator the minimum global and local stack space.

,si -0.3
3) XREF

$02 : {LTH : NAME}

NAME is the symbol name. LTH : NAME can be repeated one or more times. The first XREF has ESD index number four.

,si -0.3
4) XDEF

$03 : {SECT : ADDRESS : LTH : NAME}

SECT is $00 for absolute section, $01 for code section, $02 for data section, and $03 for varib section. ADDRESS is the two byte offset from the start of the section. NAME is the symbol name. SECT : ADDRESS : LTH : NAME can be repeated one or more times.

,si -0.3
5) Object code

$04 : SECT : ADDRESS : DATA

SECT is a one byte flag that is $01 for code section and $02 for data section. ADDRESS is the two byte offset from the start of the section. DATA is the actual code to be optionally relocated and sent to the output file.
,in 0
,pg
,ce
RELOCATABLE OBJECT MODULE FORMAT

,in 0.3
,si -0.3
6) Relocation information

$05 : {ADDRESS : {FLAG : ESD}}

FLAG is used to control the relocation process. If bit 1 is zero then the relocation factor is added, if bit 1 is one then the relocation factor is subtracted. ESD is a one byte esd index, $01 indicates the start of the code section of this module, $02 indicates data section, $03 indicates varib section. ESD index $04 indicates the first XREF record in this module, $05 the next, etc. ADDRESS is the two byte offset from the start of the section where the relocation is to be done. FLAG : ESD  may be repeated one or more times. If FLAG has bit 7 set then this is the last relocation for the address. ADDRESS : FLAG : ESD may be repeated one or more times.

,si -0.3
7) Terminator

$06 : [ADDRESS]

ADDRESS (if present) if the two byte offset from the start of the code section that is the start execution address. If ADDRESS is not present then there is no start execution address for this module.
