CS2 Real-Time Course 1985: EUCSD Motorola M6809 Assembler - User Notes This assembler is a local implementation of the Motorola M6809 cross assembler. This is basically documented in the 'M6800 Microprocessor Programming Manual' with the extensions for the M6809 described in the 'M6809 Advance Information' data sheet. Wherever possible it is upward compatible with the Motorola assembler and like it, contains no macro facilites. Differences A) Restrictions 1) Only one program may be assembled in a single input stream. As a result the MON and END directives are synonymous and optional. 2) Only object tapes are produced by the assembler. As a result the OPT directive options MEMORY and OTAPE and their variants are illegal. 3) Error messages are of a different and fixed form and hence the OPT directive options SERROR and SER are synonymous with ERROR. B) Extensions 1) The delimited form of the FCC directive accepts the doubled delimiter as a single instance of the delimiter in the generated text. e.g. FCC /A//B/ is the same as FCC 'A/B' 2) The OPT directive has the following additional options: Long form Short form BLANK B Ignores redundant spaces in operand field. e.g. around ',' and '+'. NOBLANK NOB No spaces allowed in operand field (selected by default). CYCLE C Print execution time in machine cycles for each executable statement. NOCYCLE NOC No execution times printed (selected by default). FULL F Allows fully parenthesised arithmetic expressions as operands (see (3) below). NOFULL NOF Only unparenthesised expressions evaluated strictly from left to right are allowed as operands (selected by default). WRAP W Long input lines are wrapped around on to next line of listing. NOWRAP NOW Long input lines are truncated in listing (selected by default). XREF X Symbol cross reference is listed at end of listing. NOXREF NOX No cross reference table is printed (selected by default). 3) By specifying OPT FULL, fully parenthesised arithmetic expressions evaluated in the usual algebraic order are acceptable as operands. The valid binary operators are (in increasing order of precedence): ! (or), \ (exclusive or) & (and) +, - *, /, | (remainder) < (left shift), > (right shift) The unary operators + (ignored), - and \ (complement) are accepted and take precedence over all binary operators. 4) A '>' expression prefix is provided which forces extended addressing. This is the converse of the '<' prefix which forces direct addressing. 5) The program counter relative address mode may be specified by offset,pc as well as label,pcr. The former does not automatically generate a relative offset from an absolute address but takes the value of the offset expression as the offset from the updated program counter. For Example, the following program segments are equivalent: lab nop jmp lab,pcr lab nop jmp lab-nxtins,pc nxtins equ * 6) Apart from catastrophic failures, error messages are generated in the final pass only and always immediately follow the line to which they apply. 7) This is a multi-pass assembler in which there are no constraints on the order of definition of symbols and which attempts to optimise the use of direct addressing and short branches. As a result the mnemonics for long and short branches are considered synonymous except for BRN and LBRN. Implementations B) VAX and APM M6809 file-spec Command Qualifiers Default /[NO]LIST[=file-spec] /NOLIST /[NO]OBJECT[=file-spec] /OBJECT Command Parameters file-spec Specifies a single M6809 assembler source program to be assembled. If a file type is not specified the assembler uses the default file type ASM. Command Qualifiers /LIST=[file-spec] /NOLIST Controls whether a listing is produced. If file-spec is not specified the listing file has the same name as the source file and has the file type LIS. /OBJECT=[file-spec] /NOOBJECT Controls whether an object code file is produced. If file-spec is not specified the object file has the same name as the source file and has the file type OBJ. The object code produced is in Motorola M6800 loader format.