User Guide to J6809

Shortcuts

Key combination Function Key combination Function
Ctrl-A Select All (in source window) Ctrl-P Pause execution
Ctrl-B (Reserved) Ctrl-Q (Reserved)
Ctrl-C Copy selected text to clipboard (in source window) Ctrl-R Replace selected text (in source window)
Ctrl-D Delete selected text (in source window) Ctrl-S Save File (in source window)
Ctrl-E Execute loaded program Ctrl-T Step through execution
Ctrl-F Find (in source window) Ctrl-U Resume execution from step mode
Ctrl-G Find Next (in source window) Ctrl-V Paste text from clipboard (in source window)
Ctrl-H Help Ctrl-W (Reserved)
Ctrl-I (Reserved) Ctrl-X Cut selected text to clipboard (in source window)
Ctrl-J (Reserved) Ctrl-Y (Reserved)
Ctrl-K (Reserved) Ctrl-Z (Reserved)
Ctrl-L Go to Line (in source window) Ctrl-1 Change to Assembler window
Ctrl-M Assemble Ctrl-2 Change to Terminal window
Ctrl-N New File (in source window) Key combination Function
Ctrl-O Open File (in source window) Ctrl-P Pause execution


J6809 Assembly Language Syntax

Delimiters

Entry Example Explanation
Space(" ") or tab(\t) LBL ADDA #0 ;comment After a label or an instruction and before a comment on the same line
Comma (,)     PULS A,X

    EXG A,B

In indexed addressing mode: Between operands in the address field and ahead of the designations for zero offset indexing, autoincrementing or autodecrementing

In operands of TFR, EXG, PULS, PULU, PSHS, PULS: Separating registers

Square brackets ([])     LDA [LBL]

    LDB [,X]

Around indirect addresses
Asterisk (*) or semicolon (;) * comment 1

    INCA ;comment 2

Before comment


Directives

Entry Example Explanation
END     END End of program; lines after it will be discarded.
EQU     TWO EQU 2 Equate; define the attached symbol
FCB     FCB 1,,'a,$2 Form constant byte; enter byte-length data
FCC     FCC /string/ Form constant character; enter character data
FDB     FDB $FFFF,-2 Form double byte constant; enter word-length data
ORG     ORG $100 Set origin; place subsequent object code starting at the specified address
RMB     BUFFER RMB 20 Reserve memory bytes; allocate a specified number of bytes
RTN     RTN Return to monitor (neglected by J6809)
SETDP     SETDP $20 Specify memory page for subsequent assembly

Designations

Entry Example Explanation
%     LDA #%10100011 Binary
      LDA #25 Decimal (default)
$     LDA #$A3 Hexadecimal
@     LDA #@66 Octal


Registers

Entry Example Explanation
A     ADDA #1 Accumulator A (8-bit)
B     SUBB #2 Accumulator B (8-bit)
CC     ANDCC #$1 Condition code register (8-bit)
DP     TFR A,DP Direct page register (8-bit). Default value is 0
D     ADDD #$CF01 Double accumulator, formed by A and B combined
PC     LDA -2,PC Program counter (16-bit)
S     PULS A,B System stack pointer (16-bit)
U     PSHU CC User stack pointer (16-bit)
X     LEAX ,Y Index register X (16-bit)
Y     LDY #$CF00 Index register Y (16-bit)

Operand conventions

Entry Example Explanation
'     LDA #'a ASCII character
-     LDA ,-X Autodecrementing by 1
--     LDD ,--X Autodecrementing by 2
+     LDA ,X+ Autoincrementing by 1
++     LDD ,X++ Autoincrementing by 2
$     LDX $+2 Current value of location (PC)
<     ADDA <ADDR Force the assembler to use direct addressing
>     ADDA >ADDR2 Force the assembler to use extended addressing
#     SUBA $#A0 Immediate addressing
PC     LDA -$F,PC Constant offset from PC

J6809 assembler error messages

Error Number Error Explanation
0 Invalid label. The label contains invalid characters. The label must start with alphabets and contain only alphabets, digits, dollar sign ($) or period (.).
1 Label too long. The label can have one to six characters only.
2 Label not allowed. Labels are not allowed with the following directives: ORG, SETDP, RTN and END.
3 Label missing. Label must be present for EQU directive.
4 Invalid instruction. The instruction is not a valid 6809 instruction. For a list of valid 6809 instructions, please refer to appendix B.
5 Instruction missing. Dangling labels are not allowed. There must be an instruction after every label.
6 Invalid operand. The operand is invalid.
7 Invalid expression. The expression is invalid. A valid expression is an arithmetical combination of operators, symbols or numbers.
8 Expression value out of bounds. 6809 is an 8-bit processor that supports some 16-bit operations. If a value is not out of valid range this error will happen.
9 Operand missing. An operand is required in all instructions except those with inherent addressing mode.
10 Invalid Addressing mode. There are six addressing modes. All instructions support only some of them but not all. If an operand with an addressing mode not supported by the corresponding instruction, this error will happen.
11 Undefined label. A symbol is referred but is never defined in the program.
12 Label already defined. A symbol is defined more than once.
13 Program address out of bounds. 6809 support 16-bit memory address. Therefore addresses must be in the range 000016 to FFFF16. The program must fit in this range.
14 Directive END missing. The directive END must be present in every program.



Created by Sam Wong

Copyright (C) 2002 S.C.W.

All rights reserved.