Forth v6 Assembler Glossary
This glossary describes the library of words used in assembly language programming within the Forth environment. Assembler mode is switched on using the CODE
or >ASSM
keywords, and switched off using END.CODE
or >FORTH
. Please consult the assembly programming manual for instruction in using the Forth assembler.
For help in understanding the notation used in the following function definitions, consult the description of stack symbols, abbreviations and naming conventions.
Software development in Forth (and its in-line assembler) uses the Codeblocks-based Mosaic IDE Plus Integrated Development Environment; this is the same IDE used for software development in C. While Forth programmers will not use the IDE's GNU C (GCC) compiler, the IDE provides a full-featured text editor and customized terminal for rapid code downloads and interactive debugging sessions with the 9S12 (HCS12) processor on the controller board.
+LOOP,
+LOOP, ( reg.arg -- )
Terminates a loop structure of the form:
BEGIN, <code to be iterated> reg.arg +LOOP,
where reg.arg must be one of the following:
A, B, D, X, Y, S,
On each pass through the loop, the counter register specified by reg.arg is incremented by 1, and the loop continues until the counter register = 0. The backwards branch compiled by this code is limited to -256 bytes.
Pronunciation: “plus-loop-comma”
,+PC
,+PC ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the auto-preincrement program counter register PC indexed addressing mode should be used by an instruction opcode. This mode increments the PC register by a specified integer value in the range –8 through –1 or 1 through 8 before indexing occurs.
Pronunciation: "auto-preincrement-indexed-p-c"
,+S
,+S ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the auto-preincrement stack pointer register S indexed addressing mode should be used by an instruction opcode. This mode increments the S register by a specified integer value in the range –8 through –1 or 1 through 8 before indexing occurs.
Pronunciation: "auto-preincrement-indexed-s"
,+X
,+X ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the auto-preincrement index register X indexed addressing mode should be used by an instruction opcode. This mode increments the X register by a specified integer value in the range –8 through –1 or 1 through 8 before indexing occurs.
Pronunciation: "auto-preincrement-indexed-x"
,+Y
,+Y ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the auto-preincrement index register Y indexed addressing mode should be used by an instruction opcode. This mode increments the Y register by a specified integer value in the range –8 through –1 or 1 through 8 before indexing occurs.
Pronunciation: "auto-preincrement-indexed-y"
,-PC
,-PC ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the auto-predecrement program counter register PC indexed addressing mode should be used by an instruction opcode. This mode decrements the PC register by a specified integer value in the range –8 through –1 or 1 through 8 before indexing occurs.
Pronunciation: "auto-predecrement-indexed-p-c"
,-S
,-S ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the auto-predecrement stack pointer register S indexed addressing mode should be used by an instruction opcode. This mode decrements the S register by a specified integer value in the range –8 through –1 or 1 through 8 before indexing occurs.
Pronunciation: "auto-predecrement-indexed-s"
,-X
,-X ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the auto-predecrement index register X indexed addressing mode should be used by an instruction opcode. This mode decrements the X register by a specified integer value in the range –8 through –1 or 1 through 8 before indexing occurs.
Pronunciation: "auto-predecrement-indexed-x"
,-Y
,-Y ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the auto-predecrement index register Y indexed addressing mode should be used by an instruction opcode. This mode decrements the Y register by a specified integer value in the range –8 through –1 or 1 through 8 before indexing occurs.
Pronunciation: "auto-predecrement-indexed-y"
,PC
,PC ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the optimizing constant offset program counter register PC indexed addressing mode should be used by an instruction opcode. The assembler selects the optimum offset size of 5-bit (IDX) or 9-bit (IDX1) or 16-bit (IDX2) offset as required. This minimizes code space and execution time. IND,PC is a synonym for this mode.
Pronunciation: "indexed-p-c"
,PC+
,PC+ ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the auto-postincrement program counter register PC indexed addressing mode should be used by an instruction opcode. This mode increments the PC register by a specified integer value in the range –8 through –1 or 1 through 8 after indexing occurs.
Pronunciation: "auto-postincrement-indexed-p-c"
,PC-
,PC- ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the auto-postdecrement program counter register PC indexed addressing mode should be used by an instruction opcode. This mode decrements the PC register by a specified integer value in the range –8 through –1 or 1 through 8 after indexing occurs.
Pronunciation: "auto-postdecrement-indexed-p-c"
,PCR
,PCR ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the program-counter-relative addressing mode should be used by an instruction opcode. The ,PCR mode accepts an argument equal to a destination address, calculates the effective relative offset to it from the PC reference addr (the first byte of the next instruction when the code is being assembled), and compiles an instruction using the IND16,PC indexed addressing mode to reach the specified address. The advantage of this mode is that it is relocatable. Due to restrictions imposed by the HCS12 processor, the ,PCR mode can not be used with the following assembly commands:
MOVW MOVB MAXA MINA EMAXD EMIND MAXM MINM EMAXM EMINM TBL ETBL
These restrictions are enforced by the assembler.
Pronunciation: "p-c-relative"
,S
,S ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the optimizing constant offset stack pointer register S indexed addressing mode should be used by an instruction opcode. The assembler selects the optimum offset size of 5-bit (IDX) or 9-bit (IDX1) or 16-bit (IDX2) offset as required. This minimizes code space and execution time. IND,S is a synonym for this mode.
Pronunciation: "indexed-s"
,S+
,S+ ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the auto-postincrement stack pointer register S indexed addressing mode should be used by an instruction opcode. This mode increments the S register by a specified integer value in the range –8 through –1 or 1 through 8 after indexing occurs.
Pronunciation: "auto-postincrement-indexed-s"
,S-
,S- ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the auto-postdecrement stack pointer register S indexed addressing mode should be used by an instruction opcode. This mode decrements the S register by a specified integer value in the range –8 through –1 or 1 through 8 after indexing occurs.
Pronunciation: "auto-postdecrement-indexed-s"
,X
,X ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the optimizing constant offset index register X indexed addressing mode should be used by an instruction opcode. The assembler selects the optimum offset size of 5-bit (IDX) or 9-bit (IDX1) or 16-bit (IDX2) offset as required. This minimizes code space and execution time. IND,X is a synonym for this mode.
Pronunciation: "indexed-x"
,X+
,X+ ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the auto-postincrement index register X indexed addressing mode should be used by an instruction opcode. This mode increments the X register by a specified integer value in the range –8 through –1 or 1 through 8 after indexing occurs.
Pronunciation: "auto-postincrement-indexed-x"
,X-
,X- ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the auto-postdecrement index register X indexed addressing mode should be used by an instruction opcode. This mode decrements the X register by a specified integer value in the range –8 through –1 or 1 through 8 after indexing occurs.
Pronunciation: "auto-postdecrement-indexed-x"
,Y
,Y ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the optimizing constant offset index register Y indexed addressing mode should be used by an instruction opcode. The assembler selects the optimum offset size of 5-bit (IDX) or 9-bit (IDX1) or 16-bit (IDX2) offset as required. This minimizes code space and execution time. IND,Y is a synonym for this mode.
Pronunciation: "indexed-y"
,Y+
,Y+ ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the auto-postincrement index register Y indexed addressing mode should be used by an instruction opcode. This mode increments the Y register by a specified integer value in the range –8 through –1 or 1 through 8 after indexing occurs.
Pronunciation: "auto-postincrement-indexed-y"
,Y-
,Y- ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the auto-postdecrement index register Y indexed addressing mode should be used by an instruction opcode. This mode decrements the Y register by a specified integer value in the range –8 through –1 or 1 through 8 after indexing occurs.
Pronunciation: "auto-postdecrement-indexed-y"
-LOOP,
-LOOP, ( reg.arg -- )
Terminates a loop structure of the form:
BEGIN, <code to be iterated> reg.arg -LOOP,
where reg.arg must be one of the following:
A, B, D, X, Y, S,
On each pass through the loop, the counter register specified by reg.arg is decremented by 1, and the loop continues until the counter register = 0. The backwards branch compiled by this code is limited to -256 bytes.
Pronunciation: “minus-loop-comma”
>ASSM
>ASSM ( -- )
Enables the compilation of in-line assembly code into a high level Forth definition. Consult the main glossary.
Pronunciation: “to-assembly”
>FORTH
>FORTH ( -- )
Enables the compilation of high level Forth code into an assembly language definition. Consult the main glossary.
Pronunciation: “to-forth”
A,
A, ( -- reg.arg )
Used within a code definition, leaves a constant on the stack indicating that accumulator A is to be used by an opcode. This register specifier can be used with the DBEQ, DBNE, IBEQ, IBNE, TBEQ, TBNE, EXG, TFR, and SEX opcodes, and the +LOOP, and –LOOP, directives.
Pronunciation: "a-register"
A,PC
A,PC ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the accumulator A offset indexed addressing mode relative to the PC (program counter) register should be used by an instruction opcode. This mode adds the value in A to the contents of PC to form the address of the value to be acted upon by the instruction.
Pronunciation: "indexed-a-comma-p-c"
A,S
A,S ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the accumulator A offset indexed addressing mode relative to the S (stack pointer) register should be used by an instruction opcode. This mode adds the value in A to the contents of S to form the address of the value to be acted upon by the instruction.
Pronunciation: "indexed-a-comma-s"
A,X
A,X ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the accumulator A offset indexed addressing mode relative to the index register X register should be used by an instruction opcode. This mode adds the value in A to the contents of X to form the address of the value to be acted upon by the instruction.
Pronunciation: “indexed-a-comma-x"
A,Y
A,Y ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the accumulator A indirect indexed addressing mode relative to the index register Y register should be used by an instruction opcode. This mode adds the value in A to the contents of Y to form the address of the value to be acted upon by the instruction.
Pronunciation: "indexed-a-comma-y"
ABA
ABA ( -- )
Compiles the opcode sequence for the ABA instruction into the dictionary. When later executed, this code adds the contents of accumulator A and accumulator B, and stores the result in accumulator A.
Pronunciation: "add-b-to-a"
ABX
ABX ( -- )
Compiles the opcode sequence for the ABX instruction into the dictionary. When later executed, this code adds the unsigned 8 bit contents of accumulator B to the contents of register X and leaves the result in X.
Pronunciation: "add-b-to-x"
ABY
ABY ( -- )
Compiles the opcode sequence for the ABY instruction into the dictionary. When later executed, this code adds the unsigned 8 bit contents of accumulator B to the contents of register Y and leaves the result in Y.
Pronunciation: "add-b-to-y"
ADCA
ADCA ( [arg]\mode -- )
Compiles the opcode sequence for the ADCA instruction into the dictionary. When later executed, this code adds the carry bit to the sum of the operand (specified by arg and mode) and the contents of accumulator A, and places the result in accumulator A. The accumulator-offset modes do not require an arg input.
Pronunciation: "add-with-carry-to-a"
ADCB
ADCB ( [arg]\mode -- )
Compiles the opcode sequence for the ADCB instruction into the dictionary. When later executed, this code adds the carry bit to the sum of the operand (specified by arg and mode) and the contents of accumulator B, and places the result in accumulator B. The accumulator-offset modes do not require an arg input.
Pronunciation: "add-with-carry-to-b"
ADDA
ADDA ( [arg]\mode -- )
Compiles the opcode sequence for the ADDA instruction into the dictionary. When later executed, this code adds the operand (specified by arg and mode) and the contents of accumulator A, and places the result in accumulator A. The accumulator-offset modes do not require an arg input.
Pronunciation: "add-a"
ADDB
ADDB ( [arg]\mode -- )
Compiles the opcode sequence for the ADDB instruction into the dictionary. When later executed, this code adds the operand (specified by arg and mode) and the contents of accumulator B, and places the result in accumulator B. The accumulator-offset modes do not require an arg input.
Pronunciation: "add-b"
ADDD
ADDD ( [arg]\mode -- )
Compiles the opcode sequence for the ADDD instruction into the dictionary. When later executed, this code adds the operand (specified by arg and mode) and the contents of accumulator D, and places the result in accumulator D. The accumulator-offset modes do not require an arg input.
Pronunciation: "add-d"
AGAIN,
AGAIN, ( -- )
Used within a code definition to designate the end of an assembly coded infinite loop. Use as:
BEGIN, [code to be iterated] AGAIN,
The words between BEGIN, and AGAIN, are executed indefinitely. The compiled backwards branch is limited to –128 bytes; use LONG.AGAIN, for longer loops. AGAIN, is equivalent to NEVER UNTIL,
Pronunciation: "again-comma"
ALWAYS
ALWAYS ( -- condition )
Within a code definition, leaves a condition flag on the data stack. Indicates an "always true" condition.
ANDA
ANDA ( [arg]\mode -- )
Compiles the opcode sequence for the ANDA instruction into the dictionary. When later executed, this code performs the logical AND of the operand (specified by arg and mode) and the contents of accumulator A, and places the result in accumulator A. The accumulator-offset modes do not require an arg input.
Pronunciation: "and-a"
ANDB
ANDB ( [arg]\mode -- )
Compiles the opcode sequence for the ANDB instruction into the dictionary. When later executed, this code performs the logical AND of the operand (specified by arg and mode) and the contents of accumulator B, and places the result in accumulator B. The accumulator-offset modes do not require an arg input.
Pronunciation: "and-b"
ANDCC
ANDCC ( arg\mode -- | mode must be IMM )
Compiles the opcode sequence for the ANDCC instruction into the dictionary. When later executed, this code performs the logical AND of the operand (specified by immediate data arg and mode IMM) and the contents of the condition code register, and places the result in the condition code register.
Pronunciation: "and-c-c"
ANY.BITS.CLR
ANY.BITS.CLR ( -- condition )
Within a code definition, leaves a condition flag on the data stack. Used in conjunction with a single-byte argument (which we'll designate as P) and a bit mask (designated as Q). The condition is true if any bits are clear in the result obtained by performing the logical AND operation P AND Q. This condition code is associated with the test and branch instructions BRSET and BRCLR.
Pronunciation: "any-bits-clear"
ANY.BITS.SET
ANY.BITS.SET ( -- condition )
Within a code definition, leaves a condition flag on the data stack. Used in conjunction with a single-byte argument (which we'll designate as P) and a bit mask (designated as Q). The condition is true if any bits are set in the result obtained by performing the logical AND operation P AND Q. This condition code is associated with the test and branch instructions BRSET and BRCLR.
ASL
ASL ( [arg]\mode -- )
Compiles the opcode sequence for the ASL instruction into the dictionary. When later executed, this code causes an arithmetic shift left of the 8-bit operand which is specified by arg and mode. The C (carry) bit in the CCR is loaded from the most significant bit of arg, and 0 is shifted into the least significant bit. The accumulator-offset modes do not require an arg input.
Pronunciation: "arithmetic-shift-left"
ASLA
ASLA ( -- )
Compiles the opcode sequence for the ASLA instruction into the dictionary. When later executed, this code causes an arithmetic shift left of the contents of accumulator A. The C (carry) bit in the CCR is loaded from the most significant bit of accumulator A, and 0 is shifted into the least significant bit.
Pronunciation: "arithmetic-shift-left-a"
ASLB
ASLB ( -- )
Compiles the opcode sequence for the ASLB instruction into the dictionary. When later executed, this code causes an arithmetic shift left of the contents of accumulator B. The C (carry) bit in the CCR is loaded from the most significant bit of accumulator B, and 0 is shifted into the least significant bit.
Pronunciation: "arithmetic-shift-left-b"
ASLD
ASLD ( -- )
Compiles the opcode sequence for the ASLD instruction into the dictionary. When later executed, this code causes an arithmetic shift left of the contents of accumulator D. The C (carry) bit in the CCR is loaded from the most significant bit of accumulator D, and 0 is shifted into the least significant bit.
Pronunciation: "arithmetic-shift-left-d"
ASR
ASR ( [arg]\mode -- )
Compiles the opcode sequence for the ASR instruction into the dictionary. When later executed, this code causes an arithmetic shift right of the operand specified by arg and mode. The C (carry) bit in the CCR is loaded from the least significant bit of arg. The most significant bit is held constant. The accumulator-offset modes do not require an arg input.
Pronunciation: "arithmetic-shift-right"
ASRA
ASRA ( -- )
Compiles the opcode sequence for the ASRA instruction into the dictionary. When later executed, this code causes an arithmetic shift right of the contents of accumulator A. The C (carry) bit in the CCR is loaded from the least significant bit of accumulator A. The most significant bit is held constant.
Pronunciation: "arithmetic-shift-right-a"
ASRB
ASRB ( -- )
Compiles the opcode sequence for the ASRB instruction into the dictionary. When later executed, this code causes an arithmetic shift right of the contents of accumulator B. The C (carry) bit in the CCR is loaded from the least significant bit of accumulator B. The most significant bit is held constant.
Pronunciation: "arithmetic-shift-right-b"
ASSEMBLER
ASSEMBLER ( -- )
Allows the assembler commands to be found during a dictionary search. Consult the main glossary.
B,
B, ( -- reg.arg )
Used within a code definition, leaves a constant on the stack indicating that accumulator B is to be used by an opcode. This register specifier can be used with the DBEQ, DBNE, IBEQ, IBNE, TBEQ, TBNE, EXG, TFR, and SEX opcodes, and the +LOOP, and –LOOP, directives.
Pronunciation: "b-register"
B,PC
B,PC ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the accumulator B offset indexed addressing mode relative to the PC (program counter) register should be used by an instruction opcode. This mode adds the value in B to the contents of PC to form the address of the value to be acted upon by the instruction.
Pronunciation: "indexed-b-comma-p-c"
B,S
B,S ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the accumulator B offset indexed addressing mode relative to the S (stack pointer) register should be used by an instruction opcode. This mode adds the value in B to the contents of S to form the address of the value to be acted upon by the instruction.
Pronunciation: "indexed-b-comma-s"
B,X
B,X ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the accumulator B offset indexed addressing mode relative to the index register X register should be used by an instruction opcode. This mode adds the value in B to the contents of X to form the address of the value to be acted upon by the instruction.
Pronunciation: “indexed-b-comma-x"
B,Y
B,Y ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the accumulator B indirect indexed addressing mode relative to the index register Y register should be used by an instruction opcode. This mode adds the value in B to the contents of Y to form the address of the value to be acted upon by the instruction.
Pronunciation: "indexed-b-comma-y"
BCC
BCC ( arg -- )
Compiles the opcode sequence for the BCC instruction into the dictionary; the arg is an 8-bit signed relative offset (-128 ≤ arg ≤ 127). When later executed, this code executes a branch to the address equal to PC + arg + 2, if C in CCR is clear.
Pronunciation: "branch-if-carry-clear"
BCLR
BCLR ( byte1\[arg]\mode -- | byte1 = mask )
Compiles the opcode sequence for the BCLR instruction into the dictionary. When later executed, this code clears bits in the operand (specified by arg and mode) which are set in the mask byte1. The accumulator-offset modes do not require an arg input.
Pronunciation: "bit-clear"
BCS
BCS ( arg -- )
Compiles the opcode sequence for the BCS instruction into the dictionary; the arg is an 8-bit signed relative offset (-128 ≤ arg ≤ 127). When later executed, this code executes a branch to the address equal to PC + arg + 2, if C in CCR is set.
Pronunciation: "branch-if-carry-set"
BEGIN,
BEGIN, ( -- )
Used within a code definition to designate the beginning of a looping structure. Use as:
BEGIN, . . . . condition.flag UNTIL,
or
BEGIN, . . . . condition.flag WHILE, . . . . REPEAT,
or
BEGIN, . . . . AGAIN,
or
BEGIN,. . . . +LOOP
or
BEGIN,. . . . -LOOP
The words after UNTIL, or REPEAT, or +LOOP or –LOOP are executed after the loop structure terminates. BEGIN, . . . . AGAIN, is an infinite loop. Except for constructs terminated by +LOOP or –LOOP, the branch compiled by this code construct is limited to the range –128 to +127 bytes; if a longer branch is needed, use the LONG.BEGIN, with LONG.UNTIL, or LONG.AGAIN, or LONG.WHILE, and LONG.REPEAT,. The loops terminated by +LOOP or –LOOP can enclose up to 256 bytes of code.
Pronunciation: "begin-comma"
BEQ
BEQ ( arg -- )
Compiles the opcode sequence for the BEQ instruction into the dictionary; the arg is an 8-bit signed relative offset (-128 ≤ arg ≤ 127). When later executed, this code executes a branch to the address equal to PC + arg + 2, if Z in CCR is set.
Pronunciation: "branch-if-equal"
BGE
BGE ( arg -- )
Compiles the opcode sequence for the BGE instruction into the dictionary; the arg is an 8-bit signed relative offset (-128 ≤ arg ≤ 127). When later executed, this code executes a branch to the address equal to PC + arg + 2, if either N and V in the CCR are both set, or N and V are both clear. Typically used after a subtraction or comparison of signed numbers, causes a branch if the result is greater than or equal to 0.
Pronunciation: "branch-if-greater-than-or-equal-to"
BGND
BGT
BGT ( arg -- )
Compiles the opcode sequence for the BGT instruction into the dictionary; the arg is an 8-bit signed relative offset (-128 ≤ arg ≤ 127). When later executed, this code executes a branch to the address equal to PC + arg + 2, if Z is clear, and either N and V in the CCR are both set, or N and V are both clear. Typically used after a subtraction or comparison of signed numbers, causes a branch if the result is greater than 0.
Pronunciation: "branch-if-greater-than"
BHI
BHI ( arg -- )
Compiles the opcode sequence for the BHI instruction into the dictionary; the arg is an 8-bit signed relative offset (-128 ≤ arg ≤ 127). When later executed, this code executes a branch to the address equal to PC + arg + 2, if C and Z in CCR are both clear. Typically used after a subtraction or comparison of unsigned numbers, causes a branch if the result is greater than 0.
Pronunciation: "branch-if-higher"
BHS
BHS ( arg -- )
Compiles the opcode sequence for the BHS instruction into the dictionary; the arg is an 8-bit signed relative offset (-128 ≤ arg ≤ 127). When later executed, this code executes a branch to the address equal to PC + arg + 2, if C in CCR is clear. Typically used after a subtraction or comparison of unsigned numbers, causes a branch if the result is greater than or equal to 0.
Pronunciation: "branch-if-higher-or-same"
BITA
BITA ( [arg]\mode -- )
Compiles the opcode sequence for the BITA instruction into the dictionary. When later executed, this code modifies the bits in the condition code register according to the result of performing a logical AND between the operand (specified by arg and mode) and accumulator A. Neither the contents of accumulator A nor the operand are affected. The accumulator-offset modes do not require an arg input.
Pronunciation: "bit-test-a"
BITB
BITB ( [arg]\mode -- )
Compiles the opcode sequence for the BITB instruction into the dictionary. When later executed, this code modifies the bits in the condition code register according to the result of performing a logical AND between the operand (specified by arg and mode) and accumulator B. Neither the contents of accumulator B nor the operand are affected. The accumulator-offset modes do not require an arg input.
Pronunciation: "bit-test-b"
BLE
BLE ( arg -- )
Compiles the opcode sequence for the BLE instruction into the dictionary; the arg is an 8-bit signed relative offset (-128 ≤ arg ≤ 127). When later executed, this code executes a branch to the address equal to PC + arg + 2, if Z is set, or N is set and V is clear, or N is clear and V is set in the CCR. Typically used after a subtraction or comparison of signed numbers, causes a branch if the result is less than or equal to 0.
Pronunciation: "branch-if-less-than-or-equal-to"
BLO
BLO ( arg -- )
Compiles the opcode sequence for the BLO instruction into the dictionary; the arg is an 8-bit signed relative offset (-128 ≤ arg ≤ 127). When later executed, this code executes a branch to the address equal to PC + arg + 2, if C in CCR is set. Typically used after a subtraction or comparison of unsigned numbers, causes a branch if the result is less than 0.
Pronunciation: "branch-if-lower or same"
BLS
BLS ( arg -- )
Compiles the opcode sequence for the BLS instruction into the dictionary; the arg is an 8-bit signed relative offset (-128 ≤ arg ≤ 127). When later executed, this code executes a branch to the address equal to PC + arg + 2, if either C or Z in CCR is set. Typically used after a subtraction or comparison of unsigned numbers, causes a branch if the result is less than or equal to 0.
Pronunciation: "branch-if-lower-or-same"
BLT
BLT ( arg -- )
Compiles the opcode sequence for the BLT instruction into the dictionary; the arg is an 8-bit signed relative offset (-128 ≤ arg ≤ 127). When later executed, this code executes a branch to the address equal to PC + arg + 2, if either N is set and V is clear in the CCR, or N is clear and V is set. Typically used after a subtraction or comparison of signed numbers, causes a branch if the result is less than 0.
Pronunciation: "branch-if-less-than"
BMI
BMI ( arg -- )
Compiles the opcode sequence for the BMI instruction into the dictionary; the arg is an 8-bit signed relative offset (-128 ≤ arg ≤ 127). When later executed, this code executes a branch to the address equal to PC + arg + 2, if N in CCR is set.
Pronunciation: "branch-if-minus"
BNE
BNE ( arg -- )
Compiles the opcode sequence for the BNE instruction into the dictionary; the arg is an 8-bit signed relative offset (-128 ≤ arg ≤ 127). When later executed, this code executes a branch to the address equal to PC + arg + 2, if Z in CCR is clear.
Pronunciation: "branch-if-not-equal"
BPL
BPL ( arg -- )
Compiles the opcode sequence for the BPL instruction into the dictionary; the arg is an 8-bit signed relative offset (-128 ≤ arg ≤ 127). When later executed, this code executes a branch to the address equal to PC + arg + 2, if N in CCR is clear.
Pronunciation: "branch-if-plus"
BRA
BRA ( arg -- )
Compiles the opcode sequence for the BRA instruction into the dictionary; the arg is an 8-bit signed relative offset (-128 ≤ arg ≤ 127). When later executed, this code executes an unconditional branch to the address equal to PC + arg + 2.
Pronunciation: "branch-always"
BRCLR
BRCLR ( byte1\byte2\[arg]\mode -- | byte1=offset, byte2 =mask )
Compiles the opcode sequence for the BRCLR instruction into the dictionary. When later executed, this code causes a branch to an address if the bits set in the mask byte2 are clear in the operand specified by arg and mode2. The address branched to is equal to:
PC + (number.of.bytes.in.instruction) + byte1
Indexed indirect modes are not allowed with this instruction. The accumulator-offset modes do not require an arg input.
Pronunciation: "branch-if-bits-clear"
BRN
BRN ( arg -- )
Compiles the opcode sequence for the BRN instruction into the dictionary; the arg is an 8-bit signed relative offset (-128 ≤ arg ≤ 127). When later executed, this code acts as a two byte NOP instruction.
Pronunciation: "branch-never"
BRSET
BRSET ( byte1\byte2\[arg]\mode -- | byte1=offset, byte2=mask )
Compiles the opcode sequence for the BRSET instruction into the dictionary. When later executed, this code causes a branch to an address if the bits set in the mask byte2 are also set in the operand specified by arg and mode2. The address branched to is equal to:
PC + (number.of.bytes.in.instruction) + byte1
Indexed indirect modes are not allowed with this instruction. The accumulator-offset modes do not require an arg input.
Pronunciation: "branch-if-bits-set"
BSET
BSET ( byte1\[arg]\mode -- | byte1 = mask )
Compiles the opcode sequence for the BSET instruction into the dictionary. When later executed, this code sets bits in the operand (specified by arg and mode) which are set in the mask byte1. The accumulator-offset modes do not require an arg input.
Pronunciation: "bit-set"
BSR
BSR ( arg -- )
Compiles the opcode sequence for the BSR instruction into the dictionary; the arg is an 8-bit signed relative offset (-128 ≤ arg ≤ 127). When later executed, this code causes the PC to be incremented by 2 and pushed onto the return stack, and then branches to the address equal to PC + arg.
Pronunciation: "branch-to-subroutine"
BVC
BVC ( arg -- )
Compiles the opcode sequence for the BVC instruction into the dictionary; the arg is an 8-bit signed relative offset (-128 ≤ arg ≤ 127). When later executed, this code executes a branch to the address equal to PC + arg + 2, if V in CCR is clear.
Pronunciation: "branch-if-overflow-clear"
BVS
BVS ( arg -- )
Compiles the opcode sequence for the BVS instruction into the dictionary; the arg is an 8-bit signed relative offset (-128 ≤ arg ≤ 127). When later executed, this code executes a branch to the address equal to PC + arg + 2, if V in CCR is set.
Pronunciation: "branch-if-overflow-set"
CALL
CALL ( <name> -- )
Compiles a page-smart call to subroutine <name>. Typically used to invoke a Forth function from within an assembly-coded definition. Consult the main glossary.
CALL,
CALL, ( [page]\[arg]\mode -- )
Compiles the opcode sequence for the CALL instruction into the dictionary. When later executed, this code increments PC properly and pushes it and the page (PPAGE contents) onto the return stack. Program control is then transferred to the effective address specified by arg and mode. The page input parameter is not present in the indexed indirect modes. The accumulator-offset modes do not require an arg input. Routines called using this opcode are typically terminated using RTC. For routines that are terminated with an RTS instruction, use the JSR calling opcode.
Pronunciation: "call-subroutine"
CBA
CBA ( -- )
Compiles the opcode sequence for the CBA instruction into the dictionary. When later executed, this code modifies the bits in the condition code register according to the comparison A - B. The contents of accumulators A and B are not affected.
Pronunciation: "compare-b-to-a"
CC
CC ( -- condition )
Used within a code definition, leaves a condition flag on the data stack. The condition is true when the carry flag in the condition code register is 0. Note: if you wish to use the hex number CC within an assembly definition, type it as 0CC or 0xCC to avoid confusion with this condition code.
Pronunciation: "carry-clear"
CCR,
CCR, ( -- reg.arg )
Used within a code definition, leaves a constant on the stack indicating that the condition code register CC is to be used by an opcode. This register specifier can be used with EXG, TFR, and SEX opcodes.
Pronunciation: "c-c-register"
CLC
CLC ( -- )
Compiles the opcode sequence for the CLC instruction into the dictionary. When later executed, this code clears the C (carry) bit in the condition code register.
Pronunciation: "clear-carry"
CLI
CLI ( -- )
Compiles the opcode sequence for the CLI instruction into the dictionary. When later executed, this code clears the I (global interrupt enable) bit in the condition code register. Maskable interrupts are enabled when the I bit is clear, so this instruction enables interrupts at runtime.
Pronunciation: "clear-interrupt-mask"
CLR
CLR ( [arg]\mode -- )
Compiles the opcode sequence for the CLR instruction into the dictionary. When later executed, this code clears the contents of the operand specified by arg and mode. The accumulator-offset modes do not require an arg input.
Pronunciation: "clear"
CLRA
CLRA ( -- )
Compiles the opcode sequence for the CLRA instruction into the dictionary. When later executed, this code clears the contents of accumulator A.
Pronunciation: "clear-a"
CLRB
CLRB ( -- )
Compiles the opcode sequence for the CLRB instruction into the dictionary. When later executed, this code clears the contents of accumulator B.
Pronunciation: "clear-b"
CLV
CLV ( -- )
Compiles the opcode sequence for the CLV instruction into the dictionary. When later executed, this code clears the V bit (the 2s complement overflow bit) in the CCR.
Pronunciation: "clear-overflow-bit"
CMPA
CMPA ( [arg]\mode -- )
Compiles the opcode sequence for the CMPA instruction into the dictionary. When later executed, this code subtracts the operand specified by arg and mode from the contents of accumulator A and sets the condition code register bits accordingly. The operand and accumulator A are unaffected. The accumulator-offset modes do not require an arg input.
Pronunciation: "compare-a"
CMPB
CMPB ( [arg]\mode -- )
Compiles the opcode sequence for the CMPB instruction into the dictionary. When later executed, this code subtracts the operand specified by arg and mode from the contents of accumulator B and sets the condition code register bits accordingly. The operand and accumulator B are unaffected. The accumulator-offset modes do not require an arg input.
Pronunciation: "compare-b"
CODE
COM
COM ( [arg]\mode -- )
Compiles the opcode sequence for the COM instruction into the dictionary. When later executed, this code replaces the operand specified by arg and mode with its ones complement (which is formed by complementing the state of each bit). The accumulator-offset modes do not require an arg input.
Pronunciation: "complement"
COMA
COMA ( -- )
Compiles the opcode sequence for the COMA instruction into the dictionary. When later executed, this code replaces the contents of accumulator A with its ones complement (which is formed by complementing the state of each bit).
Pronunciation: "complement-a"
COMB
COMB ( -- )
Compiles the opcode sequence for the COMB instruction into the dictionary. When later executed, this code replaces the contents of accumulator B with its ones complement (which is formed by complementing the state of each bit).
Pronunciation: "complement-b"
CPD
CPD ( [arg]\mode -- )
Compiles the opcode sequence for the CPD instruction into the dictionary. When later executed, this code subtracts the operand specified by arg and mode from the contents of accumulator D and sets the condition code register bits accordingly. The operand and accumulator D are unaffected. The accumulator-offset modes do not require an arg input.
Pronunciation: "compare-d"
CPS
CPS ( [arg]\mode -- )
Compiles the opcode sequence for the CPS instruction into the dictionary. When later executed, this code subtracts the operand specified by arg and mode from the contents of the stack pointer S and sets the condition code register bits accordingly. The operand and stack pointer S are unaffected (unless the mode specifies that S be incremented or decremented). The accumulator-offset modes do not require an arg input.
Pronunciation: "compare-s"
CPX
CPX ( [arg]\mode -- )
Compiles the opcode sequence for the CPX instruction into the dictionary. When later executed, this code subtracts the operand specified by arg and mode from the contents of accumulator X and sets the condition code register bits accordingly. The operand and accumulator X are unaffected (unless the mode specifies that X be incremented or decremented). The accumulator-offset modes do not require an arg input.
Pronunciation: "compare-x"
CPY
CPY ( [arg]\mode -- )
Compiles the opcode sequence for the CPY instruction into the dictionary. When later executed, this code subtracts the operand specified by arg and mode from the contents of accumulator Y and sets the condition code register bits accordingly. The operand and accumulator Y are unaffected (unless the mode specifies that Y be incremented or decremented). The accumulator-offset modes do not require an arg input.
Pronunciation: "compare-y"
CS
CS ( -- condition )
Used within a code definition, leaves a condition flag on the data stack. The condition is true when the carry flag in the condition code register is 1.
Pronunciation: "carry-set"
D,
D, ( -- reg.arg )
Used within a code definition, leaves a constant on the stack indicating that accumulator D is to be used by an opcode. This register specifier can be used with the DBEQ, DBNE, IBEQ, IBNE, TBEQ, TBNE, EXG, TFR, and SEX opcodes, and the +LOOP, and –LOOP, directives.
Pronunciation: "d-register"
D,PC
D,PC ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the accumulator D offset indexed addressing mode relative to the PC (program counter) register should be used by an instruction opcode. This mode adds the value in D to the contents of PC to form the address of the value to be acted upon by the instruction.
Pronunciation: "indexed-d-comma-p-c"
D,S
D,S ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the accumulator D offset indexed addressing mode relative to the S (stack pointer) register should be used by an instruction opcode. This mode adds the value in D to the contents of S to form the address of the value to be acted upon by the instruction.
Pronunciation: "indexed-d-comma-s"
D,X
D,X ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the accumulator D offset indexed addressing mode relative to the index register X register should be used by an instruction opcode. This mode adds the value in D to the contents of X to form the address of the value to be acted upon by the instruction.
Pronunciation: “indexed-d-comma-x"
D,Y
D,Y ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the accumulator D indirect indexed addressing mode relative to the index register Y register should be used by an instruction opcode. This mode adds the value in D to the contents of Y to form the address of the value to be acted upon by the instruction.
Pronunciation: "indexed-d-comma-y"
DAA
DAA ( -- )
Compiles the opcode sequence for the DAA instruction into the dictionary. When later executed, this code decimal adjusts the contents of accumulator A to facilitate binary-coded-decimal calculations. For a detailed description of operation, consult the DAA entry in the Motorola HC12 manual.
Pronunciation: "decimal-adjust-a"
DBEQ
DBEQ ( arg\reg.arg -- )
Compiles the opcode sequence for the DBEQ instruction into the dictionary; the arg is a 9-bit signed relative offset (-256 ≤ arg ≤ 255), and reg.arg is one of the following:
A, B, D, X, Y, S,
When later executed, this code decrements the specified register and, if Z in CCR is set, executes a branch to the address equal to PC + arg + 3.
Pronunciation: "decrement-and-branch-if-equal"
DBNE
DBNE ( arg\reg.arg -- )
Compiles the opcode sequence for the DBNE instruction into the dictionary; the arg is a 9-bit signed relative offset (-256 ≤ arg ≤ 255), and reg.arg is one of the following:
A, B, D, X, Y, S,
When later executed, this code decrements the specified register and, if Z in CCR is clear, executes a branch to the address equal to PC + arg + 3.
Pronunciation: "decrement-and-branch-if-not-equal"
DEC
DEC ( [arg]\mode -- )
Compiles the opcode sequence for the DEC instruction into the dictionary. When later executed, this code subtracts one from the operand specified by arg and mode. The accumulator-offset modes do not require an arg input.
Pronunciation: "decrement"
DECA
DECA ( -- )
Compiles the opcode sequence for the DECA instruction into the dictionary. When later executed, this code subtracts one from the contents of accumulator A.
Pronunciation: "decrement-a"
DECB
DECB ( -- )
Compiles the opcode sequence for the DECB instruction into the dictionary. When later executed, this code subtracts one from the contents of accumulator B.
Pronunciation: "decrement-b"
DES
DES ( -- )
Compiles the opcode sequence for the DES instruction into the dictionary. When later executed, this code subtracts one from the contents of the S register which is the return stack pointer.
Pronunciation: "decrement-s"
DEX
DEX ( -- )
Compiles the opcode sequence for the DEX instruction into the dictionary. When later executed, this code subtracts one from the contents of the index register X.
Pronunciation: "decrement-x"
DEY
DEY ( -- )
Compiles the opcode sequence for the DEY instruction into the dictionary. When later executed, this code subtracts one from the contents of the index register Y.
Pronunciation: "decrement-y"
DIR
DIR ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the direct addressing mode should be used by an instruction opcode.
Pronunciation: "direct"
EDIV
EDIV ( -- )
Compiles the opcode sequence for the EDIV instruction into the dictionary. When later executed, this code performs an extended unsigned 32-bit by 16-bit division, with Y:D as the numerator and X as the denominator. The quotient is returned in Y, and the remainder is returned in D. If X = 0, Y and D do not change, but the N and Z bits of the CCR are undefined.
Pronunciation: “extended-divide”
EDIVS
EDIVS ( -- )
Compiles the opcode sequence for the EDIVS instruction into the dictionary. When later executed, this code performs an extended signed 32-bit by 16-bit division, with Y:D as the numerator and X as the denominator. The quotient is returned in Y, and the remainder is returned in D. If X = 0, Y and D do not change, but the N and Z bits of the CCR are undefined.
Pronunciation: “extended-divide-signed”
ELSE,
ELSE, ( -- )
ELSE, is used in assembly coded routines to mark the beginning of the "else portion" of a conditional structure. Use as:
condition IF, . . . . ELSE, . . . . ENDIF, ( or THEN,)
When executed, ELSE, causes a branch instruction to be compiled into the dictionary and resolves IF,'s branch. When the compiled code is later executed, the code between ELSE, and ENDIF, is executed if the condition is not met. The branches compiled by this code are limited to the range –128 to +127 bytes; if a longer branch is needed, use the LONG.IF, …LONG.ELSE,… LONG.ENDIF, construction.
Pronunciation: "else-comma"
EMACS
EMACS ( arg16\mode -- | mode must be EXT )
Compiles the opcode sequence for the EMACS instruction into the dictionary. When later executed, this code performs an extended signed multiply and accumulate. The X and Y registers each point to a 16-bit multiplicand, which are multiplied to form a 32-bit intermediate result, and this is added to the 32-bit contents pointed to by the arg16 address.
Pronunciation: “extended-multiply-and-accumulate”
EMAXD
EMAXD ( [arg]\mode -- )
Compiles the opcode sequence for the EMAXD instruction into the dictionary. When later executed, this code performs a 16-bit unsigned “max” operation. The code places into the D register the larger of the unsigned 16 bits referenced by the input arguments, or the unsigned contents of D. The accumulator-offset modes do not require an arg input.
Pronunciation: “extended-max-d”
EMAXM
EMAXM ( [arg]\mode -- )
Compiles the opcode sequence for the EMAXM instruction into the dictionary. When later executed, this code performs a 16-bit unsigned “max” operation. The code places into the location referenced by the input arguments the larger of the unsigned 16 bits referenced by the input arguments, or the unsigned contents of D. The accumulator-offset modes do not require an arg input.
Pronunciation: “extended-max-m”
EMIND
EMIND ( [arg]\mode -- )
Compiles the opcode sequence for the EMIND instruction into the dictionary. When later executed, this code performs a 16-bit unsigned “min” operation. The code places into the D register the smaller of the unsigned 16 bits referenced by the input arguments, or the unsigned contents of D. The accumulator-offset modes do not require an arg input.
Pronunciation: “extended-min-d”
EMINM
EMINM ( [arg]\mode -- )
Compiles the opcode sequence for the EMINM instruction into the dictionary. When later executed, this code performs a 16-bit unsigned “min” operation. The code places into the location referenced by the input arguments the smaller of the unsigned 16 bits referenced by the input arguments, or the unsigned contents of D. The accumulator-offset modes do not require an arg input.
Pronunciation: “extended-min-m”
EMUL
EMUL ( -- )
Compiles the opcode sequence for the EMUL instruction into the dictionary. When later executed, this code performs an extended unsigned 16-bit by 16-bit multiplication of the contents of D times the contents of Y, with the 32-bit result returned in Y:D.
Pronunciation: “extended-multiply”
EMULS
EMULS ( -- )
Compiles the opcode sequence for the EMULS instruction into the dictionary. When later executed, this code performs an extended signed 16-bit by 16-bit multiplication of the contents of D times the contents of Y, with the 32-bit result returned in Y:D.
Pronunciation: “extended-multiply-signed”
END-CODE
END-CODE ( sys -- | balances CODE )
Ends an assembly coded definition. A synonym for END.CODE. Consult the main glossary.
END.CODE
ENDIF,
ENDIF, ( -- )
ENDIF, is used in assembly coded routines to mark the end of a conditional IF, structure. ENDIF, and THEN, are synonyms. Use as:
condition IF, . . . . ELSE, . . . . ENDIF,
When executed, ENDIF, resolves the branch instructions used in the conditional structure. When the code compiled by the control structure is executed, the code between IF, and ELSE, is executed if the condition is true, and then control passes to the code following ENDIF,. If the condition is false, the code between ELSE, and ENDIF, is executed, and execution continues with the code following ENDIF,. An alternate form is
condition IF, . . . . ENDIF,
When the code compiled by this control structure is executed, the code between IF, and ENDIF, is executed if the condition is true, and is not executed if the condition is false. The branch compiled by this code is limited to the range –128 to +127 bytes; if a longer branch is needed, use the LONG.IF, …LONG.ELSE,… LONG.ENDIF, construction.
Pronunciation: "end-if-comma"
EORA
EORA ( [arg]\mode -- )
Compiles the opcode sequence for the EORA instruction into the dictionary. When later executed, this code performs a logical exclusive or between the contents of accumulator A and the operand specified by arg and mode. The result is stored in accumulator A. The accumulator-offset modes do not require an arg input.
Pronunciation: "exclusive-or-a"
EORB
EORB ( [arg]\mode -- )
Compiles the opcode sequence for the EORB instruction into the dictionary. When later executed, this code performs a logical exclusive or between the contents of accumulator B and the operand specified by arg and mode. The result is stored in accumulator B. The accumulator-offset modes do not require an arg input.
Pronunciation: "exclusive-or-b"
EQ
EQ ( -- condition )
Used within a code definition, leaves a condition flag on the data stack. Used after a comparison of the form P - Q, indicates the condition P = Q. Alternate interpretation: Condition is true if the Z bit in the condition code register is set.
Pronunciation: "equal"
ETBL
ETBL ( [arg]\mode -- )
Compiles the opcode sequence for the ETBL instruction into the dictionary. When later executed, this code performs an extended table lookup and interpolate operation. The input parameters specify an index register that in turn points into a table of (x,y) pairs. Any indexed addressing mode, except indirect modes or 9- and 16-bit offset modes can be used. The B register must be pre-loaded with a binary fraction (radix point to the left of the most significant bit in B), and this routine interpolates between the pointed to (x,y) pair and the succeeding (x,y) pair in the table based on the specified fraction. The interpolated Y value is returnd in D. The accumulator-offset modes do not require an arg input.
Pronunciation: “extended-table-lookup”
EXG
EXG ( reg.arg1\reg.arg2 -- | reg.arg1 = source register, reg.arg2 = destination register )
Compiles the opcode sequence for the EXG instruction into the dictionary. When later executed, this code exchanges the contents of the specified registers. The reg.arg parameters can be any of the following:
A, B, CCR, D, X, Y, S,
Note: if the destination reg.arg2 is B, or CCR, then the msbyte of B or CCR is assumed to be 0xFF. In all other cases (including if the source reg.arg1 is B, or CCR,), the msbyte of an 8bit register is assumed to be 00.
Pronunciation: “exchange-registers”
EXT
EXT ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the extended addressing mode should be used by an instruction opcode.
Pronunciation: "extended"
FDIV
FDIV ( -- )
Compiles the opcode sequence for the FDIV instruction into the dictionary. When later executed, this code performs an unsigned fractional divide of the 16-bit numerator in accumulator D by the 16-bit denominator in the index register X. The quotient is stored in index register X and the remainder is stored in accumulator D.
Pronunciation: "fractional-divide"
GE
GE ( -- condition )
Within a code definition, leaves a condition flag on the data stack. Used after a comparison of the form P - Q, indicates the condition P ≥ Q using signed math. Alternate interpretation: Condition is true if the N and V bits in the condition code register are either both set or both clear.
Pronunciation: "greater-than-or-equal-to"
GT
GT ( -- condition )
Within a code definition, leaves a condition flag on the data stack. Used after a comparison of the form P - Q, indicates the condition P > Q using signed math. Alternate interpretation: Condition is true if the Z bit is clear, and the N and V bits are either both set or both clear in the condition code register.
Pronunciation: "greater-than"
HI
HI ( -- condition )
Within a code definition, leaves a condition flag on the data stack. Used after a comparison of the form P - Q, indicates the condition P > Q using unsigned math. Alternate interpretation: Condition is true if C and Z in the condition code register are zero.
Pronunciation: "higher"
HS
HS ( -- condition )
Within a code definition, leaves a condition flag on the data stack. Used after a comparison of the form P - Q, indicates the condition P ≥ Q using unsigned math. Alternate interpretation: Condition is true if the C (carry) bit in the condition code register is clear.
Pronunciation: "higher-or-same"
IBEQ
IBEQ ( arg\reg.arg -- )
Compiles the opcode sequence for the IBEQ instruction into the dictionary; the arg is a 9-bit signed relative offset (-256 ≤ arg ≤ 255), and reg.arg is one of the following:
A, B, D, X, Y, S,
When later executed, this code increments the specified register and, if Z in CCR is set, executes a branch to the address equal to PC + arg + 3.
Pronunciation: "increment-and-branch-if-equal"
IBNE
IBNE ( arg\reg.arg -- )
Compiles the opcode sequence for the IBNE instruction into the dictionary; the arg is a 9-bit signed relative offset (-256 ≤ arg ≤ 255), and reg.arg is one of the following:
A, B, D, X, Y, S,
When later executed, this code increments the specified register and, if Z in CCR is clear, executes a branch to the address equal to PC + arg + 3.
Pronunciation: "increment-and-branch-if-not-equal"
IDIV
IDIV ( -- )
Compiles the opcode sequence for the IDIV instruction into the dictionary. When later executed, this code performs an unsigned integer divide of the 16-bit numerator in accumulator D by the 16-bit denominator in the index register X. The quotient is stored in index register X and the remainder is stored in accumulator D.
Pronunciation: "integer-divide"
IDIVS
IDIVS ( -- )
Compiles the opcode sequence for the IDIVS instruction into the dictionary. When later executed, this code performs a signed integer divide of the 16-bit numerator in accumulator D by the 16-bit denominator in the index register X. The quotient is stored in index register X and the remainder is stored in accumulator D.
Pronunciation: "integer-divide-signed"
IF,
IF, ( condition -- )
IF, is used in assembly coded routines to mark the start of a conditional structure. Use as:
condition IF, . . . . ELSE, . . . . ENDIF, ( or THEN,)
or
condition IF, . . . . ENDIF, ( or THEN,)
When the branch compiled by IF, is executed, the code following IF, is executed if the condition is met, otherwise control is transferred to the code following ELSE, or ENDIF,. (THEN, and ENDIF, are synonyms). The branch compiled by this code is limited to the range –128 to +127 bytes; if a longer branch is needed, use the LONG.IF, …LONG.ELSE,… LONG.ENDIF, construction.
Pronunciation: "if-comma"
IMM
IMM ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the immediate addressing mode should be used by an instruction opcode.
Pronunciation: "immediate"
INC
INC ( [arg]\mode -- )
Compiles the opcode sequence for the INC instruction into the dictionary. When later executed, this code adds one to the operand specified by arg and mode. The accumulator-offset modes do not require an arg input.
Pronunciation: "increment"
INCA
INCA ( -- )
Compiles the opcode sequence for the INCA instruction into the dictionary. When later executed, this code adds one to the contents of accumulator A.
Pronunciation: "increment-a"
INCB
INCB ( -- )
Compiles the opcode sequence for the INCB instruction into the dictionary. When later executed, this code adds one to the contents of accumulator B.
Pronunciation: "increment-b"
IND,PC
IND,PC ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the optimizing constant offset program counter register PC indexed addressing mode should be used by an instruction opcode. The assembler selects the optimum offset size of 5-bit (IDX) or 9-bit (IDX1) or 16-bit (IDX2) offset as required. This minimizes code space and execution time. ,PC is a synonym for this mode.
Pronunciation: "indexed-p-c"
IND,S
IND,S ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the optimizing constant offset stack pointer register S indexed addressing mode should be used by an instruction opcode. The assembler selects the optimum offset size of 5-bit (IDX) or 9-bit (IDX1) or 16-bit (IDX2) offset as required. This minimizes code space and execution time. ,S is a synonym for this mode.
Pronunciation: "indexed-s"
IND,X
IND,X ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the optimizing constant offset index register X indexed addressing mode should be used by an instruction opcode. The assembler selects the optimum offset size of 5-bit (IDX) or 9-bit (IDX1) or 16-bit (IDX2) offset as required. This minimizes code space and execution time. ,X is a synonym for this mode.
Pronunciation: "indexed-x"
IND,Y
IND,Y ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the optimizing constant offset index register Y indexed addressing mode should be used by an instruction opcode. The assembler selects the optimum offset size of 5-bit (IDX) or 9-bit (IDX1) or 16-bit (IDX2) offset as required. This minimizes code space and execution time. ,Y is a synonym for this mode.
Pronunciation: "indexed-y"
IND16,PC
IND16,PC ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the 16-bit constant offset program counter register PC indexed addressing mode should be used by an instruction opcode.
Pronunciation: "indexed-sixteen-p-c"
IND16,S
IND16,S ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the 16-bit constant offset stack pointer register S indexed addressing mode should be used by an instruction opcode.
Pronunciation: "indexed-sixteen-s"
IND16,X
IND16,X ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the 16-bit constant offset index register X indexed addressing mode should be used by an instruction opcode.
Pronunciation: "indexed-sixteen-x"
IND16,Y
IND16,Y ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the 16-bit index register Y indexed addressing mode should be used by an instruction opcode.
Pronunciation: "indexed-sixteen-y"
IND5,PC
IND5,PC ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the 5-bit constant offset program counter register PC indexed addressing mode should be used by an instruction opcode. Offsets in the range of –16 through +15 from the value of the base index register are supported by this mode.
Pronunciation: "indexed-five-p-c"
IND5,S
IND5,S ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the 5-bit constant offset stack pointer register S indexed addressing mode should be used by an instruction opcode. Offsets in the range of –16 through +15 from the value of the base index register are supported by this mode.
Pronunciation: "indexed-five-s"
IND5,X
IND5,X ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the 5-bit constant offset index register X indexed addressing mode should be used by an instruction opcode. Offsets in the range of –16 through +15 from the value of the base index register are supported by this mode.
Pronunciation: "indexed-five-x"
IND5,Y
IND5,Y ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the 5-bit index register Y indexed addressing mode should be used by an instruction opcode. Offsets in the range of –16 through +15 from the value of the base index register are supported by this mode.
Pronunciation: "indexed-five-y"
IND9,PC
IND9,PC ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the 9-bit constant offset program counter register PC indexed addressing mode should be used by an instruction opcode. Offsets in the range of –256 through +255 from the value of the base index register are supported by this mode.
Pronunciation: "indexed-nine-p-c"
IND9,S
IND9,S ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the 9-bit constant offset stack pointer register S indexed addressing mode should be used by an instruction opcode. Offsets in the range of –256 through +255 from the value of the base index register are supported by this mode.
Pronunciation: "indexed-nine-s"
IND9,X
IND9,X ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the 9-bit constant offset index register X indexed addressing mode should be used by an instruction opcode. Offsets in the range of –256 through +255 from the value of the base index register are supported by this mode.
Pronunciation: "indexed-nine-x"
IND9,Y
IND9,Y ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the 9-bit index register Y indexed addressing mode should be used by an instruction opcode. Offsets in the range of –256 through +255 from the value of the base index register are supported by this mode.
Pronunciation: "indexed-nine-y"
INS
INS ( -- )
Compiles the opcode sequence for the INS instruction into the dictionary. When later executed, this code adds one to the S register which is the return stack pointer.
Pronunciation: "increment-s"
INX
INX ( -- )
Compiles the opcode sequence for the INX instruction into the dictionary. When later executed, this code adds one to index register X.
Pronunciation: "increment-x"
INY
INY ( -- )
Compiles the opcode sequence for the INY instruction into the dictionary. When later executed, this code adds one to index register Y.
Pronunciation: "increment-y"
JMP
JMP ( [arg]\mode -- )
Compiles the opcode sequence for the JMP instruction into the dictionary. When later executed, this code transfers control to the instruction stored at the effective address specified by arg and mode. The accumulator-offset modes do not require an arg input.
Pronunciation: "jump"
JSR
JSR ( [arg]\mode -- )
Compiles the opcode sequence for the JSR instruction into the dictionary. When later executed, this code increments PC properly and pushes it onto the return stack. Program control is then transferred to the effective address specified by arg and mode. The accumulator-offset modes do not require an arg input. Routines called with a JSR are typically terminated using RTS.
Pronunciation: "jump-to-subroutine"
LBCC
LBCC ( arg -- )
Compiles the opcode sequence for the LBCC instruction into the dictionary; the arg is a 16-bit signed relative offset (-32,768 ≤ arg ≤ 32,767). When later executed, this code executes a branch to the address equal to PC + arg + 4, if C in CCR is clear.
Pronunciation: "long-branch-if-carry-clear"
LBCS
LBCS ( arg -- )
Compiles the opcode sequence for the LBCS instruction into the dictionary; the arg is a 16-bit signed relative offset (-32,768 ≤ arg ≤ 32,767). When later executed, this code executes a branch to the address equal to PC + arg + 4, if C in CCR is set.
Pronunciation: "long-branch-if-carry-set"
LBEQ
LBEQ ( arg -- )
Compiles the opcode sequence for the LBEQ instruction into the dictionary; the arg is a 16-bit signed relative offset (-32,768 ≤ arg ≤ 32,767). When later executed, this code executes a branch to the address equal to PC + arg + 4, if Z in CCR is set.
Pronunciation: "long-branch-if-equal"
LBGE
LBGE ( arg -- )
Compiles the opcode sequence for the LBGE instruction into the dictionary; the arg is a 16-bit signed relative offset (-32,768 ≤ arg ≤ 32,767). When later executed, this code executes a branch to the address equal to PC + arg + 4, if either N and V in the CCR are both set, or N and V are both clear. Typically used after a subtraction or comparison of signed numbers, causes a branch if the result is greater than or equal to 0.
Pronunciation: "long-branch-if-greater-than-or-equal-to"
LBGT
LBGT ( arg -- )
Compiles the opcode sequence for the LBGT instruction into the dictionary; the arg is a 16-bit signed relative offset (-32,768 ≤ arg ≤ 32,767). When later executed, this code executes a branch to the address equal to PC + arg + 4, if Z is clear, and either N and V in the CCR are both set, or N and V are both clear. Typically used after a subtraction or comparison of signed numbers, causes a branch if the result is greater than 0.
Pronunciation: "long-branch-if-greater-than"
LBHI
LBHI ( arg -- )
Compiles the opcode sequence for the LBHI instruction into the dictionary; the arg is a 16-bit signed relative offset (-32,768 ≤ arg ≤ 32,767). When later executed, this code executes a branch to the address equal to PC + arg + 4, if C and Z in CCR are both clear. Typically used after a subtraction or comparison of unsigned numbers, causes a branch if the result is greater than 0.
Pronunciation: "long-branch-if-higher"
LBHS
LBHS ( arg -- )
Compiles the opcode sequence for the LBHS instruction into the dictionary; the arg is a 16-bit signed relative offset (-32,768 ≤ arg ≤ 32,767). When later executed, this code executes a branch to the address equal to PC + arg + 4, if C in CCR is clear. Typically used after a subtraction or comparison of unsigned numbers, causes a branch if the result is greater than or equal to 0.
Pronunciation: "long-branch-if-higher-or-same"
LBLE
LBLE ( arg -- )
Compiles the opcode sequence for the LBLE instruction into the dictionary; the arg is a 16-bit signed relative offset (-32,768 ≤ arg ≤ 32,767). When later executed, this code executes a branch to the address equal to PC + arg + 4, if Z is set, or N is set and V is clear, or N is clear and V is set in the CCR. Typically used after a subtraction or comparison of signed numbers, causes a branch if the result is less than or equal to 0.
Pronunciation: "long-branch-if-less-than-or-equal-to"
LBLO
LBLO ( arg -- )
Compiles the opcode sequence for the LBLO instruction into the dictionary; the arg is a 16-bit signed relative offset (-32,768 ≤ arg ≤ 32,767). When later executed, this code executes a branch to the address equal to PC + arg + 4, if C in CCR is set. Typically used after a subtraction or comparison of unsigned numbers, causes a branch if the result is less than 0.
Pronunciation: "long-branch-if-lower or same"
LBLS
LBLS ( arg -- )
Compiles the opcode sequence for the LBLS instruction into the dictionary; the arg is a 16-bit signed relative offset (-32,768 ≤ arg ≤ 32,767). When later executed, this code executes a branch to the address equal to PC + arg + 4, if either C or Z in CCR is set. Typically used after a subtraction or comparison of unsigned numbers, causes a branch if the result is less than or equal to 0.
Pronunciation: "long-branch-if-lower-or-same"
LBLT
LBLT ( arg -- )
Compiles the opcode sequence for the LBLT instruction into the dictionary; the arg is a 16-bit signed relative offset (-32,768 ≤ arg ≤ 32,767). When later executed, this code executes a branch to the address equal to PC + arg + 4, if either N is set and V is clear in the CCR, or N is clear and V is set. Typically used after a subtraction or comparison of signed numbers, causes a branch if the result is less than 0.
Pronunciation: "long-branch-if-less-than"
LBMI
LBMI ( arg -- )
Compiles the opcode sequence for the LBMI instruction into the dictionary; the arg is a 16-bit signed relative offset (-32,768 ≤ arg ≤ 32,767). When later executed, this code executes a branch to the address equal to PC + arg + 4, if N in CCR is set.
Pronunciation: "long-branch-if-minus"
LBNE
LBNE ( arg -- )
Compiles the opcode sequence for the LBNE instruction into the dictionary; the arg is a 16-bit signed relative offset (-32,768 ≤ arg ≤ 32,767). When later executed, this code executes a branch to the address equal to PC + arg + 4, if Z in CCR is clear.
Pronunciation: "long-branch-if-not-equal"
LBPL
LBPL ( arg -- )
Compiles the opcode sequence for the LBPL instruction into the dictionary; the arg is a 16-bit signed relative offset (-32,768 ≤ arg ≤ 32,767). When later executed, this code executes a branch to the address equal to PC + arg + 4, if N in CCR is clear.
Pronunciation: "long-branch-if-plus"
LBRA
LBRA ( arg -- )
Compiles the opcode sequence for the LBRA instruction into the dictionary; the arg is a 16-bit signed relative offset (-32,768 ≤ arg ≤ 32,767). When later executed, this code executes an unconditional branch to the address equal to PC + arg + 4.
Pronunciation: "long-branch-always"
LBRN
LBRN ( arg -- )
Compiles the opcode sequence for the LBRN instruction into the dictionary; the arg is a 16-bit signed relative offset (-32,768 ≤ arg ≤ 32,767). When later executed, this code acts as a four byte NOP instruction.
Pronunciation: "long-branch-never"
LBVC
LBVC ( arg -- )
Compiles the opcode sequence for the LBVC instruction into the dictionary; the arg is a 16-bit signed relative offset (-32,768 ≤ arg ≤ 32,767). When later executed, this code executes a branch to the address equal to PC + arg + 4, if V in CCR is clear.
Pronunciation: "long-branch-if-overflow-clear"
LBVS
LBVS ( arg -- )
Compiles the opcode sequence for the LBVS instruction into the dictionary; the arg is a 16-bit signed relative offset (-32,768 ≤ arg ≤ 32,767). When later executed, this code executes a branch to the address equal to PC + arg + 4, if V in CCR is set.
Pronunciation: "long-branch-if-overflow-set"
LDAA
LDAA ( [arg]\mode -- )
Compiles the opcode sequence for the LDAA instruction into the dictionary. When later executed, this code loads the operand specified by arg and mode into accumulator A. The accumulator-offset modes do not require an arg input.
Pronunciation: "load-accumulator-a"
LDAB
LDAB ( [arg]\mode -- )
Compiles the opcode sequence for the LDAB instruction into the dictionary. When later executed, this code loads the operand specified by arg and mode into accumulator B. The accumulator-offset modes do not require an arg input.
Pronunciation: "load-accumulator-b"
LDD
LDD ( [arg]\mode -- )
Compiles the opcode sequence for the LDD instruction into the dictionary. When later executed, this code loads the operand specified by arg and mode into accumulator D. The accumulator-offset modes do not require an arg input.
Pronunciation: "load-d"
LDS
LDS ( [arg]\mode -- )
Compiles the opcode sequence for the LDS instruction into the dictionary. When later executed, this code loads the operand specified by arg and mode into the S register which is the return stack pointer. The accumulator-offset modes do not require an arg input.
Pronunciation: "load-s"
LDX
LDX ( [arg]\mode -- )
Compiles the opcode sequence for the LDX instruction into the dictionary. When later executed, this code loads the contents of the operand specified by arg and mode into index register X. The accumulator-offset modes do not require an arg input.
Pronunciation: "load-x"
LDY
LDY ( [arg]\mode -- )
Compiles the opcode sequence for the LDY instruction into the dictionary. When later executed, this code loads the contents of the operand specified by arg and mode into index register Y. The accumulator-offset modes do not require an arg input.
Pronunciation: "load-y"
LE
LE ( -- condition )
Used within a code definition, leaves a condition flag on the data stack. Used after a comparison of the form P - Q, indicates the condition P ≤ Q using signed math. Alternate interpretation: Condition is true if the Z bit is set, or the N bit is set and V bit is clear, or the N bit is clear and the V bit is set in the condition code register.
Pronunciation: "less-than-or-equal-to"
LEAS
LEAS ( [arg]\mode -- )
Compiles the opcode sequence for the LEAS instruction into the dictionary. When later executed, this code loads the stack pointer register S with the effective address specified by the input parameters. The condition code register is not affected by this instruction. The accumulator-offset modes do not require an arg input. Note: When used with an auto-pre-increment-S or auto-pre-decrement-S mode, the increment/decrement occurs before the S register is loaded. Auto-post-increment and auto-post-decrement modes do not change the value of S that is loaded.
Pronunciation: "load-effective-address-to-s"
LEAX
LEAX ( [arg]\mode -- )
Compiles the opcode sequence for the LEAX instruction into the dictionary. When later executed, this code loads the index register X with the effective address specified by the input parameters. The condition code register is not affected by this instruction. The accumulator-offset modes do not require an arg input. Note: When used with an auto-pre-increment-X or auto-pre-decrement-X mode, the increment/decrement occurs before the X register is loaded. Auto-post-increment and auto-post-decrement modes do not change the value of X that is loaded.
Pronunciation: "load-effective-address-to-x"
LEAY
LEAY ( [arg]\mode -- )
Compiles the opcode sequence for the LEAY instruction into the dictionary. When later executed, this code loads the stack pointer register Y with the effective address specified by the input parameters. The condition code register is not affected by this instruction. The accumulator-offset modes do not require an arg input. Note: When used with an auto-pre-increment-Y or auto-pre-decrement-Y mode, the increment/decrement occurs before the Y register is loaded. Auto-post-increment and auto-post-decrement modes do not change the value of Y that is loaded.
Pronunciation: "load-effective-address-to-y"
LO
LO ( -- condition )
Used inside a code definition, leaves a condition flag on the data stack. Used after a comparison of the form P - Q, indicates the condition P < Q using unsigned math. Alternate interpretation: Condition is true if the C (carry) bit in the condition code register is set.
Pronunciation: "lower"
LONG.AGAIN,
LONG.AGAIN, ( -- )
Used within a code definition to designate the end of an assembly coded long infinite loop. Use as:
LONG.BEGIN, [code to be iterated] LONG.AGAIN,
The words between BEGIN, and AGAIN, are executed indefinitely. This code compiles a long branch instruction, allowing the loop to span any number of code bytes on a single page. AGAIN, is equivalent to NEVER LONG.UNTIL,
Pronunciation: "long-again-comma"
LONG.BEGIN,
LONG.BEGIN, ( -- )
Used within a code definition to designate the beginning of a long looping structure. Use as:
LONG.BEGIN, . . . . condition.flag LONG.UNTIL,
or
LONG.BEGIN, . . . . condition.flag LONG.WHILE, . . . . LONG.REPEAT,
or
LONG.BEGIN, . . . . LONG.AGAIN,
The words after LONG.UNTIL, or LONG.REPEAT, are executed after the loop structure terminates. LONG.BEGIN, . . . . LONG.AGAIN, is an infinite loop. This code compiles a long branch instruction, allowing the loop to span any number of code bytes on a single page.
Pronunciation: "long-begin-comma"
LONG.ELSE,
LONG.ELSE, ( -- )
Used in assembly coded routines to mark the beginning of the "else portion" of a long conditional structure. Use as:
condition LONG.IF, . . . . LONG.ELSE, . . . . LONG.ENDIF, ( or LONG.THEN,)
When executed, LONG.ELSE, causes a branch instruction to be compiled into the dictionary and resolves LONG.IF,'s branch. When the compiled code is later executed, the code between LONG.ELSE, and LONG.ENDIF, is executed if the condition is not met. This code construct compiles long branch instructions, allowing the loop to span any number of code bytes on a single page.
Pronunciation: "long-else-comma"
LONG.ENDIF,
LONG.ENDIF, ( -- )
LONG.ENDIF, is used in assembly coded routines to mark the end of a conditional LONG.IF, structure. LONG.ENDIF, and LONG.THEN, are synonyms. Use as:
condition LONG.IF, . . . . LONG.ELSE, . . . . LONG.ENDIF,
When executed, LONG.ENDIF, resolves the branch instructions used in the conditional structure. When the code compiled by the control structure is executed, the code between LONG.IF, and LONG.ELSE, is executed if the condition is true, and then control passes to the code following LONG.ENDIF,. If the condition is false, the code between LONG.ELSE, and LONG.ENDIF, is executed, and execution continues with the code following LONG.ENDIF,. An alternate form is
condition LONG.IF, . . . . LONG.ENDIF,
When the code compiled by this control structure is executed, the code between LONG.IF, and LONG.ENDIF, is executed if the condition is true, and is not executed if the condition is false. This code compiles a long branch instruction, allowing the loop to span any number of code bytes on a single page.
Pronunciation: "long-end-if-comma"
LONG.IF,
LONG.IF, ( condition -- )
Used in assembly coded routines to mark the start of a conditional structure. Use as:
condition LONG.IF, . . . . LONG.ELSE, . . . . LONG.ENDIF, ( or LONG.THEN,)
or
condition LONG.IF, . . . . LONG.ENDIF, ( or LONG.THEN,)
When the branch compiled by LONG.IF, is executed, the code following LONG.IF, is executed if the condition is met, otherwise control is transferred to the code following LONG.ELSE, or LONG.ENDIF,. (LONG.THEN, and LONG.ENDIF, are synonyms). This code construct compiles long branch instructions, allowing the loop to span any number of code bytes on a single page.
Pronunciation: "long-if-comma"
LONG.REPEAT,
LONG.REPEAT, ( -- )
LONG.REPEAT, is used to designate the end of an assembly coded structure.
LONG.BEGIN, . . . . condition.flag LONG.WHILE, . . . . LONG.REPEAT,
This code construct compiles long branch instructions, allowing the loop to span any number of code bytes on a single page.
See also LONG.BEGIN,
and LONG.WHILE,
Pronunciation: "long-repeat-comma"
LONG.THEN,
LONG.THEN, ( -- )
LONG.THEN,
is used in assembly coded routines to mark the end of a conditional LONG.IF,
structure. It is a synonym for LONG.ENDIF,
.
See also LONG.ENDIF,
Pronunciation: "long-then-comma"
LONG.UNTIL,
LONG.UNTIL, ( condition -- )
Designates the end of an assembly coded looping structure and resolves branch instructions according to the specified condition. Use as:
LONG.BEGIN, . . . code to be executed . . . condition LONG.UNTIL,
If the condition is true, the loop terminates and execution continues with the code following LONG.UNTIL,
. If the condition is false, looping continues and execution passes to the code following LONG.BEGIN,
. This code construct compiles long branch instructions, allowing the loop to span any number of code bytes on a single page.
Pronunciation: "long-until-comma"
LONG.WHILE,
LONG.WHILE, ( condition -- )
Used in assembly coded routines to mark the beginning of the "while true" portion of a LONG.BEGIN, . . . LONG.WHILE, . . . LONG.REPEAT, loop. Use as:
LONG.BEGIN, . . . . condition LONG.WHILE, . . . . LONG.REPEAT,
When executed, LONG.WHILE, causes a branch instruction to be compiled into the dictionary.
When the compiled code is executed:
If the condition is true, the loop continues and the code between LONG.WHILE, and LONG.REPEAT, are executed, after which control is transferred to the code following LONG.BEGIN,. If the condition is false, the loop terminates and execution continues with the code following LONG.REPEAT,. This code construct compiles long branch instructions, allowing the loop to span any number of code bytes on a single page.
Pronunciation: "long-while-comma"
LS
LS ( -- condition )
Used within a code definition, leaves a condition flag on the data stack. Used after a comparison of the form P - Q, indicates the condition P ≤ Q using unsigned math. Alternate interpretation: Condition is true if either C or Z in the condition code register is set.
Pronunciation: "lower-or-same"
LSL
LSL ( [arg]\mode -- )
Compiles the opcode sequence for the LSL instruction into the dictionary. When later executed, this code causes a logical shift left of the 8-bit operand which is specified by arg and mode. The C (carry) bit in the CCR is loaded from the most significant bit of arg, and 0 is shifted into the least significant bit. The accumulator-offset modes do not require an arg input.
Pronunciation: "logical-shift-left"
LSLA
LSLA ( -- )
Compiles the opcode sequence for the LSLA instruction into the dictionary. When later executed, this code causes a logical shift left of the contents of accumulator A. The C (carry) bit in the CCR is loaded from the most significant bit of accumulator A, and 0 is shifted into the least significant bit.
Pronunciation: "logical-shift-left-a"
LSLB
LSLB ( -- )
Compiles the opcode sequence for the LSLB instruction into the dictionary. When later executed, this code causes a logical shift left of the contents of accumulator B. The C (carry) bit in the CCR is loaded from the most significant bit of accumulator B, and 0 is shifted into the least significant bit.
Pronunciation: "logical-shift-left-b"
LSLD
LSLD ( -- )
Compiles the opcode sequence for the LSLD instruction into the dictionary. When later executed, this code causes a logical shift left of the contents of accumulator D. The C (carry) bit in the CCR is loaded from the most significant bit of accumulator D, and 0 is shifted into the least significant bit.
Pronunciation: "logical-shift-left-d"
LSR
LSR ( [arg]\mode -- )
Compiles the opcode sequence for the LSR instruction into the dictionary. When later executed, this code causes a logical shift right of the contents of the operand specified by arg and mode. The C (carry) bit in the CCR is loaded from the least significant bit of arg. 0 is shifted into the most significant bit. The accumulator-offset modes do not require an arg input.
Pronunciation: "logical-shift-right"
LSRA
LSRA ( -- )
Compiles the opcode sequence for the LSRA instruction into the dictionary. When later executed, this code causes a logical shift right of the contents of accumulator A. The C (carry) bit in the CCR is loaded from the least significant bit of accumulator A. 0 is shifted into the most significant bit.
Pronunciation: "logical-shift-right-a"
LSRB
LSRB ( -- )
Compiles the opcode sequence for the LSRB instruction into the dictionary. When later executed, this code causes a logical shift right of the contents of accumulator B. The C (carry) bit in the CCR is loaded from the least significant bit of accumulator B. 0 is shifted into the most significant bit.
Pronunciation: "logical-shift-right-b"
LSRD
LSRD ( -- )
Compiles the opcode sequence for the LSRD instruction into the dictionary. When later executed, this code causes a logical shift right of the contents of accumulator D. The C (carry) bit in the CCR is loaded from the least significant bit of accumulator D. 0 is shifted into the most significant bit.
Pronunciation: "logical-shift-right-d"
LT
LT ( -- condition )
Used within a code definition, leaves a condition flag on the data stack. Used after a comparison of the form P - Q, indicates the condition P < Q using signed math. Alternate interpretation: Condition is true if the N bit is set and V bit is clear, or the N bit is clear and the V bit is set in the condition code register.
Pronunciation: "less-than"
MAXA
MAXA ( [arg]\mode -- )
Compiles the opcode sequence for the MAXA instruction into the dictionary. When later executed, this code performs an 8-bit unsigned “max” operation. The code places into the A register the larger of the unsigned 8 bits referenced by the input arguments, or the unsigned contents of A. The accumulator-offset modes do not require an arg input.
Pronunciation: “-max-a”
MAXM
MAXM ( [arg]\mode -- )
Compiles the opcode sequence for the MAXM instruction into the dictionary. When later executed, this code performs an 8-bit unsigned “max” operation. The code places into the location referenced by the input arguments the larger of the unsigned 8 bits referenced by the input arguments, or the unsigned contents of A. The accumulator-offset modes do not require an arg input.
Pronunciation: “max-m”
MEM
MEM ( -- )
Compiles the opcode sequence for the MEM instruction into the dictionary. When later executed, this code determines the grade of membership for a fuzzy logic implementation. Consult the Motorola HC12 assembly instruction glossary for details.
Pronunciation: “membership”
MI
MI ( -- condition )
Used within a code definition, leaves a condition flag on the data stack. Used after a comparison of the form P - Q = R, indicates the condition R < 0 using signed math. Alternate interpretation: Condition is true if the N bit in the condition code register is set.
Pronunciation: "minus"
MINA
MINA ( [arg]\mode -- )
Compiles the opcode sequence for the MINA instruction into the dictionary. When later executed, this code performs an 8-bit unsigned “min” operation. The code places into the A register the smaller of the unsigned 8 bits referenced by the input arguments, or the unsigned contents of A. The accumulator-offset modes do not require an arg input.
Pronunciation: “min-a”
MINM
MINM ( [arg]\mode -- )
Compiles the opcode sequence for the MINM instruction into the dictionary. When later executed, this code performs an 8-bit unsigned “min” operation. The code places into the location referenced by the input arguments the smaller of the unsigned 8 bits referenced by the input arguments, or the unsigned contents of A. The accumulator-offset modes do not require an arg input.
Pronunciation: “min-m”
MOVB
MOVB ( [src.arg]\src.mode\[dest.arg]\dest.mode -- )
Compiles the opcode sequence for the MOVB instruction into the dictionary. When later executed, this code moves one byte from the source specified by src.arg and src.mode to the destination specified by dest.arg and dest.mode. The accumulator-offset modes do not require an arg input. The following source-destination combinations of addressing modes are allowed:
IMM-EXT IMM-IDX EXT-EXT EXT-IDX IDX-EXT IDX-IDX
where IMM is immediate data, EXT is extended addressing, and IDX is indexed addressing. The assembler does not “compensate” for the varying instruction lengths in PC-relatives modes; consult the Motorola HC12 assembly instruction glossary for further details.
Pronunciation: “move-byte”
MOVW
MOVW ( [src.arg]\src.mode\[dest.arg]\dest.mode -- )
Compiles the opcode sequence for the MOVW instruction into the dictionary. When later executed, this code moves one 16-bit word from the source specified by src.arg and src.mode to the destination specified by dest.arg and dest.mode. The accumulator-offset modes do not require an arg input. The following source-destination combinations of addressing modes are allowed:
IMM-EXT IMM-IDX EXT-EXT EXT-IDX IDX-EXT IDX-IDX
where IMM is immediate data, EXT is extended addressing, and IDX is indexed addressing. The assembler does not “compensate” for the varying instruction lengths in PC-relatives modes; consult the Motorola HC12 assembly instruction glossary for further details.
Pronunciation: “move-word”
MUL
MUL ( -- )
Compiles the opcode sequence for the MUL instruction into the dictionary. When later executed, this code multiplies the contents of accumulator A by the contents of accumulator B and stores the result in accumulator D.
Pronunciation: "multiply"
NE
NE ( -- condition )
Used within a code definition, leaves a condition flag on the data stack. Used after a comparison of the form P - Q, indicates the condition P not equal to Q. Alternate interpretation: Condition is true if the Z bit in the condition code register is clear.
Pronunciation: "not-equal"
NEG
NEG ( [arg]\mode -- )
Compiles the opcode sequence for the NEG instruction into the dictionary. When later executed, this code replaces the contents of the operand specified by arg and mode with its twos complement which is formed by inverting the state of each bit and adding 1. The accumulator-offset modes do not require an arg input.
Pronunciation: "negate"
NEGA
NEGA ( -- )
Compiles the opcode sequence for the NEGA instruction into the dictionary. When later executed, this code replaces the contents of accumulator A with its twos complement which is formed by inverting the state of each bit and adding 1.
Pronunciation: "negate-a"
NEGB
NEGB ( -- )
Compiles the opcode sequence for the NEGB instruction into the dictionary. When later executed, this code replaces the contents of accumulator B with its twos complement which is formed by inverting the state of each bit and adding 1.
Pronunciation: "negate-b"
NEVER
NEVER ( -- condition )
Used within a code definition, leaves a condition flag on the data stack. Indicates a "never true" condition.
NOP
NOP ( -- )
Compiles the opcode sequence for the NOP instruction into the dictionary. When later executed, this code does nothing.
Pronunciation: "no-op"
ORAA
ORAA ( [arg]\mode -- )
Compiles the opcode sequence for the ORAA instruction into the dictionary. When later executed, this code performs a logical OR operation between the contents of accumulator A and the contents of the operand specified by arg and mode. The result is stored in accumulator A. The accumulator-offset modes do not require an arg input.
Pronunciation: "or-accumulator-a"
ORAB
ORAB ( [arg]\mode -- )
Compiles the opcode sequence for the ORAB instruction into the dictionary. When later executed, this code performs a logical OR operation between the contents of accumulator B and the contents of the operand specified by arg and mode. The result is stored in accumulator B. The accumulator-offset modes do not require an arg input.
Pronunciation: "or-accumulator-b"
ORCC
ORCC ( arg\mode -- | mode must be IMM )
Compiles the opcode sequence for the ORCC instruction into the dictionary. When later executed, this code performs the logical OR of the operand (specified by immediate data arg and mode IMM) and the contents of the condition code register, and places the result in the condition code register.
Pronunciation: "or-c-c"
PL
PL ( -- condition )
Used within a code definition, leaves a condition flag on the data stack. Used after a comparison of the form P - Q = R, indicates the condition R ≥ 0 using signed math. Alternate interpretation: Condition is true if the N bit in the condition code register is clear.
Pronunciation: "plus"
PSHA
PSHA ( -- )
Compiles the opcode sequence for the PSHA instruction into the dictionary. When later executed, this code stores the contents of accumulator A at the next available location on the return stack pointed to by the S register and decrements the S register.
Pronunciation: "push-a"
PSHB
PSHB ( -- )
Compiles the opcode sequence for the PSHB instruction into the dictionary. When later executed, this code stores the contents of accumulator B at the next available location on the return stack pointed to by the S register and decrements the S register.
Pronunciation: "push-b"
PSHC
PSHC ( -- )
Compiles the opcode sequence for the PSHC instruction into the dictionary. When later executed, this code stores the contents of the condition code register at the next available location on the return stack pointed to by the S register and decrements the S register.
Pronunciation: "push-c"
PSHD
PSHD ( -- )
Compiles the opcode sequence for the PSHD instruction into the dictionary. When later executed, this code stores the contents of accumulator D at the next available locations on the return stack pointed to by the S register and decrements the S register by 2.
Pronunciation: "push-d"
PSHX
PSHX ( -- )
Compiles the opcode sequence for the PSHX instruction into the dictionary. When later executed, this code stores the contents of index register X at the next available locations on the return stack pointed to by the S register and decrements the S register by 2.
Pronunciation: "push-x"
PSHY
PSHY ( -- )
Compiles the opcode sequence for the PSHY instruction into the dictionary. When later executed, this code stores the contents of index register Y at the next available locations on the return stack pointed to by the S register and decrements the S register by 2.
Pronunciation: "push-y"
PULA
PULA ( -- )
Compiles the opcode sequence for the PULA instruction into the dictionary. When later executed, this code pops the top value off the return stack (pointed to by the S register) into accumulator A and increments the S register.
Pronunciation: "pull-a"
PULB
PULB ( -- )
Compiles the opcode sequence for the PULB instruction into the dictionary. When later executed, this code pops the top value off the return stack (pointed to by the S register) into accumulator B and increments the S register.
Pronunciation: "pull-b"
PULC
PULC ( -- )
Compiles the opcode sequence for the PULC instruction into the dictionary. When later executed, this code pops the top value off the return stack (pointed to by the S register) into the condition code register and increments the S register.
Pronunciation: "pull-c"
PULD
PULD ( -- )
Compiles the opcode sequence for the PULD instruction into the dictionary. When later executed, this code pops the top 2 bytes off the return stack (pointed to by the S register) into accumulator D and increments the S register by 2.
Pronunciation: "pull-d"
PULX
PULX ( -- )
Compiles the opcode sequence for the PULX instruction into the dictionary. When later executed, this code pops the top 2 bytes off the return stack (pointed to by the S register) into index register X and increments the S register by 2.
Pronunciation: "pull-x"
PULY
PULY ( -- )
Compiles the opcode sequence for the PULY instruction into the dictionary. When later executed, this code pops the top 2 bytes off the return stack (pointed to by the S register) into index register Y and increments the S register by 2.
Pronunciation: "pull-y"
REL
REL ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the relative addressing mode should be used by an instruction opcode. The REL mode never has to be explicitly specified in an assembly instruction, so this is a do-nothing instruction that is present to preserve backward-compatibility with prior versions of the assembler.
Pronunciation: "relative"
REPEAT,
REPEAT, ( -- )
REPEAT, is used to designate the end of an assembly coded structure as,
BEGIN, . . . . condition.flag WHILE, . . . . REPEAT,
The backwards branch compiled by this instruction is limited to –128 bytes; if a longer branch is needed, use the LONG.BEGIN,
…LONG.WHILE,
…LONG.REPEAT,
construction.
See also BEGIN,
and WHILE,
Pronunciation: "repeat-comma"
REV
REV ( -- )
Compiles the opcode sequence for the REV instruction into the dictionary. When later executed, this code performs an unweighted evaluation of a list of rules, using fuzzy input values to produce fuzzy outputs. Consult the Motorola HC12 assembly instruction glossary for details.
Pronunciation: “rule-evaluation”
REVW
REVW ( -- )
Compiles the opcode sequence for the REVW instruction into the dictionary. When later executed, this code performs a weighted evaluation of a list of rules, using fuzzy input values to produce fuzzy outputs. Consult the Motorola HC12 assembly instruction glossary for details.
Pronunciation: “rule-evaluation-weighted”
ROL
ROL ( [arg]\mode -- )
Compiles the opcode sequence for the ROL instruction into the dictionary. When later executed, this code shifts the bits in the operand specified by arg and mode left by one bit. The C (carry) bit is shifted into the least significant bit of arg, and the most significant bit in arg is shifted into C. The accumulator-offset modes do not require an arg input.
Pronunciation: "rotate-left"
ROLA
ROLA ( -- )
Compiles the opcode sequence for the ROLA instruction into the dictionary. When later executed, this code shifts the bits in accumulator A left by one bit. The C (carry) bit is shifted into the least significant bit of accumulator A, and the most significant bit in accumulator A is shifted into C.
Pronunciation: "rotate-left-a"
ROLB
ROLB ( -- )
Compiles the opcode sequence for the ROLB instruction into the dictionary. When later executed, this code shifts the bits in accumulator B left by one bit. The C (carry) bit is shifted into the least significant bit of accumulator B, and the most significant bit in accumulator B is shifted into C.
Pronunciation: "rotate-left-b"
ROR
ROR ( [arg]\mode -- )
Compiles the opcode sequence for the ROR instruction into the dictionary. When later executed, this code shifts the bits in the operand specified by arg and mode right by one bit. The C (carry) bit is shifted into the most significant bit of arg, and the least significant bit in arg is shifted into C. The accumulator-offset modes do not require an arg input.
Pronunciation: "rotate-right"
RORA
RORA ( -- )
Compiles the opcode sequence for the RORA instruction into the dictionary. When later executed, this code shifts the bits in accumulator A right by one bit. The C (carry) bit is shifted into the most significant bit of accumulator A, and the least significant bit in accumulator A is shifted into C.
Pronunciation: "rotate-right-a"
RORB
RORB ( -- )
Compiles the opcode sequence for the RORB instruction into the dictionary. When later executed, this code shifts the bits in accumulator B right by one bit. The C (carry) bit is shifted into the most significant bit of accumulator B, and the least significant bit in accumulator B is shifted into C.
Pronunciation: "rotate-right-b"
RTC
RTC ( -- )
Compiles the opcode sequence for the RTC instruction into the dictionary. When later executed, this code restores the page (PPAGE
register contents) with a byte pulled from the stack, and restores the program counter PC with a 16-bit value pulled from the stack, thereby resuming execution just after the point where the subroutine was called. Use this instruction to terminate subroutines invoked with CALL,
.
See also RTS
Pronunciation: "return-from-call"
RTI
RTI ( -- )
Compiles the opcode sequence for the RTI
instruction into the dictionary. When later executed, this code restores accumulators A and B, the condition code register CC, and registers X, Y and PC with values pulled from the stack.
Pronunciation: "return-from-interrupt"
RTS
RTS ( -- )
Compiles the opcode sequence for the RTS
instruction into the dictionary. When later executed, this code restores the program counter with a value pulled from the stack, thereby resuming execution just after the point where the subroutine was called. Use this instruction to terminate subroutines invoked with JSR
.
See also RTC
Pronunciation: "return-from-subroutine"
S,
S, ( -- reg.arg )
Used within a code definition, leaves a constant on the stack indicating that the stack pointer register S is to be used by an opcode. This register specifier can be used with the DBEQ, DBNE, IBEQ, IBNE, TBEQ, TBNE, EXG, TFR, and SEX opcodes, and the +LOOP, and –LOOP, directives.
Pronunciation: "s-register"
SBA
SBA ( -- )
Compiles the opcode sequence for the SBA instruction into the dictionary. When later executed, this code subtracts the contents of accumulator B from accumulator A and stores the result in accumulator A. The contents of accumulator B are not affected.
Pronunciation: "subtract-b-from-a"
SBCA
SBCA ( [arg]\mode -- )
Compiles the opcode sequence for the SBCA instruction into the dictionary. When later executed, this code subtracts the contents of the operand specified by arg and mode and the contents of C from accumulator A and stores the result in accumulator A. The accumulator-offset modes do not require an arg input.
Pronunciation: "subtract-with-carry-a"
SBCB
SBCB ( [arg]\mode -- )
Compiles the opcode sequence for the SBCB instruction into the dictionary. When later executed, this code subtracts the contents of the operand specified by arg and mode and the contents of C from accumulator B and stores the result in accumulator B. The accumulator-offset modes do not require an arg input.
Pronunciation: "subtract-with-carry-b"
SEC
SEC ( -- )
Compiles the opcode sequence for the SEC instruction into the dictionary. When later executed, this code sets the C (carry) bit in the condition code register.
Pronunciation: "set-carry"
SEI
SEI ( -- )
Compiles the opcode sequence for the SEI instruction into the dictionary. When later executed, this code sets the I (global interrupt enable) bit in the condition code register. When the I bit is set, all maskable interrupts are disabled.
Pronunciation: "set-interrupt-mask"
SEV
SEV ( -- )
Compiles the opcode sequence for the SEV instruction into the dictionary. When later executed, this code sets the V (2's complement overflow) bit in the condition code register.
Pronunciation: "set-overflow-bit"
SEX
SEX ( reg.arg1\reg.arg2 -- | reg.arg1 = source register, reg.arg2 = destination register )
Compiles the opcode sequence for the SEX instruction into the dictionary. When later executed, this code sign extends the contents of the source register into the destination register. The source reg.arg1 parameter can be any of the following:
A, B, CCR,
and the destination reg.arg2 parameter can be any of the following:
D, X, Y, S,
This is a subset of the TFR instruction, with error checking.
Pronunciation: “sign-extend”
STAA
STAA ( [arg]\mode -- )
Compiles the opcode sequence for the STAA instruction into the dictionary. When later executed, this code stores the contents of accumulator A into the effective address specified by arg and mode. The accumulator-offset modes do not require an arg input.
Pronunciation: "store-accumulator-a"
STAB
STAB ( [arg]\mode -- )
Compiles the opcode sequence for the STAB instruction into the dictionary. When later executed, this code stores the contents of accumulator B into the effective address specified by arg and mode. The accumulator-offset modes do not require an arg input.
Pronunciation: "store-accumulator-b"
STD
STD ( [arg]\mode -- )
Compiles the opcode sequence for the STD instruction into the dictionary. When later executed, this code stores the contents of accumulator D into the effective address specified by arg and mode. The accumulator-offset modes do not require an arg input.
Pronunciation: "store-d"
STOP
STOP ( -- )
Compiles the opcode sequence for the STOP instruction into the dictionary. When later executed, this code halts all system clocks and places the system in a minimum power consumption mode if the S bit in the CCR register is clear. If the S bit is set, STOP is disabled and acts like a NOP. Recovery is accomplished by a reset, or an active low signal on XIRQ, or a non-masked IRQ interrupt.
STS
STS ( [arg]\mode -- )
Compiles the opcode sequence for the STS instruction into the dictionary. When later executed, this code stores the contents of the S register (which is the return stack pointer) at the effective address specified by arg and mode. The accumulator-offset modes do not require an arg input.
NOTE: If this instruction mode auto-increments or auto-decrements the S register, the value stored into S is the value of S before the instruction executed.
Pronunciation: "store-s"
STX
STX ( [arg]\mode -- )
Compiles the opcode sequence for the STX instruction into the dictionary. When later executed, this code stores the contents of index register X at the effective address specified by arg and mode. The accumulator-offset modes do not require an arg input.
NOTE: If this instruction mode auto-increments or auto-decrements the X register, the value stored into X is the value of X before the instruction executed.
Pronunciation: "store-x"
STY
STY ( [arg]\mode -- )
Compiles the opcode sequence for the STY instruction into the dictionary. When later executed, this code stores the contents of index register Y at the effective address specified by arg and mode. The accumulator-offset modes do not require an arg input.
NOTE: If this instruction mode auto-increments or auto-decrements the Y register, the value stored into Y is the value of Y before the instruction executed.
Pronunciation: "store-y"
SUBA
SUBA ( [arg]\mode -- )
Compiles the opcode sequence for the SUBA instruction into the dictionary. When later executed, this code subtracts the operand specified by arg and mode from the contents of accumulator A and places the result in accumulator A. The accumulator-offset modes do not require an arg input.
Pronunciation: "subtract-a"
SUBB
SUBB ( [arg]\mode -- )
Compiles the opcode sequence for the SUBB instruction into the dictionary. When later executed, this code subtracts the operand specified by arg and mode from the contents of accumulator B and places the result in accumulator B. The accumulator-offset modes do not require an arg input.
Pronunciation: "subtract-b"
SUBD
SUBD ( [arg]\mode -- )
Compiles the opcode sequence for the SUBD instruction into the dictionary. When later executed, this code subtracts the contents of the operand specified by arg and mode from the contents of accumulator D and places the result in accumulator D. The accumulator-offset modes do not require an arg input.
Pronunciation: "subtract-d"
SWI
SWI ( -- )
Compiles the opcode sequence for the SWI instruction into the dictionary. When later executed, this code invokes a software interrupt. It stores the CCR, accumulators A and B, and registers X, Y and PC on the stack. The stack pointer is decremented by 1 for each byte stored on the stack. The I bit in the CCR register is set. The PC register is then loaded with the address located at the interrupt vector for SWI, and instruction execution resumes at this location.
Pronunciation: "software interrupt"
TAB
TAB ( -- )
Compiles the opcode sequence for the TAB instruction into the dictionary. When later executed, this code transfers the contents of accumulator A to accumulator B.
Pronunciation: "transfer-a-to-b"
TAP
TAP ( -- )
Compiles the opcode sequence for the TAP instruction into the dictionary. When later executed, this code transfers the contents of accumulator A to the condition code register.
Pronunciation: "transfer-a-to-condition-code-register"
TBA
TBA ( -- )
Compiles the opcode sequence for the TBA instruction into the dictionary. When later executed, this code transfers the contents of accumulator B to accumulator A.
Pronunciation: "transfer-b-to-a"
TBEQ
TBEQ ( arg\reg.arg -- )
Compiles the opcode sequence for the TBEQ instruction into the dictionary; the arg is a 9-bit signed relative offset (-256 ≤ arg ≤ 255), and reg.arg is one of the following:
A, B, D, X, Y, S,
When later executed, this code tests the specified register and, if Z in CCR is set, executes a branch to the address equal to PC + arg + 3.
Pronunciation: "test-and-branch-if-equal"
TBL
TBL ( [arg]\mode -- )
Compiles the opcode sequence for the TBL instruction into the dictionary. When later executed, this code performs a table lookup and interpolate operation. The input parameters specify an index register that in turn points into a table of (x,y) pairs. Any indexed addressing mode, except indirect modes or 9- and 16-bit offset modes can be used. The B register must be pre-loaded with a binary fraction (radix point to the left of the most significant bit in B), and this routine interpolates between the pointed to (x,y) pair and the succeeding (x,y) pair in the table based on the specified fraction. The interpolated Y value is returned in A. The accumulator-offset modes do not require an arg input.
Pronunciation: “table-lookup”
TBNE
TBNE ( arg\reg.arg -- )
Compiles the opcode sequence for the TBNE instruction into the dictionary; the arg is a 9-bit signed relative offset (-256 ≤ arg ≤ 255), and reg.arg is one of the following:
A, B, D, X, Y, S,
When later executed, this code tests the specified register and, if Z in CCR is clear, executes a branch to the address equal to PC + arg + 3.
Pronunciation: "test-and-branch-if-not-equal"
TFR
TFR ( reg.arg1\reg.arg2 -- | reg.arg1 = source register, reg.arg2 = destination register )
Compiles the opcode sequence for the TFR instruction into the dictionary. When later executed, this code transfers the contents of the source register into the destination register. The source and destination reg.arg parameters can be any of the following:
A, B, CCR, D, X, Y, S,
Pronunciation: “transfer-register”
THEN,
THEN, ( -- )
THEN,
is used in assembly coded routines to mark the end of a conditional IF,
structure. It is a synonym for ENDIF,
.
See also ENDIF,
Pronunciation: "then-comma"
TPA
TPA ( -- )
Compiles the opcode sequence for the TPA instruction into the dictionary. When later executed, this code transfers the contents of the condition code register into accumulator A.
Pronunciation: "transfer-condition-code-register-to-a"
TST
TST ( [arg]\mode -- )
Compiles the opcode sequence for the TST instruction into the dictionary. When later executed, this code subtracts zero from the contents of the operand specified by arg and mode and sets the condition code register's bits accordingly. The operand is unaffected by the subtraction. The accumulator-offset modes do not require an arg input.
Pronunciation: "test"
TSTA
TSTA ( -- )
Compiles the opcode sequence for the TSTA instruction into the dictionary. When later executed, this code subtracts zero from the contents of accumulator A and sets the condition code register's bits accordingly. Accumulator A is unaffected.
Pronunciation: "test-a"
TSTB
TSTB ( -- )
Compiles the opcode sequence for the TSTB instruction into the dictionary. When later executed, this code subtracts zero from the contents of accumulator B and sets the condition code register's bits accordingly. Accumulator B is unaffected.
Pronunciation: "test-b"
TSX
TSX ( -- )
Compiles the opcode sequence for the TSX instruction into the dictionary. When later executed, this code loads index register X with the contents of the S register (which is the return stack pointer). After this operation the X register points to the top item on the return stack.
Pronunciation: "transfer-stack-to-x"
TSY
TSY ( -- )
Compiles the opcode sequence for the TSY instruction into the dictionary. When later executed, this code loads index register Y with the contents of the S register (which is the return stack pointer). After this operation the Y register points to the top item on the return stack.
Pronunciation: "transfer-s-to-y"
TXS
TXS ( -- )
Compiles the opcode sequence for the TXS instruction into the dictionary. When later executed, this code loads the S register (which is the return stack pointer) with the contents of the index register X.
Pronunciation: "transfer-x-to-s"
TYS
TYS ( -- )
Compiles the opcode sequence for the TYS instruction into the dictionary. When later executed, this code loads the S register (which is the return stack pointer) with the contents of the index register Y.
Pronunciation: "transfer-y-to-s"
UNTIL,
UNTIL, ( condition -- )
UNTIL, designates the end of an assembly coded looping structure and resolves branch instructions according to the specified condition. Use as:
BEGIN, . . . code to be executed . . . condition UNTIL,
If the condition is true, the loop terminates and execution continues with the code following UNTIL,. If the condition is false, looping continues and execution passes to the code following BEGIN,. The backwards branch compiled by this code is limited to -128 bytes; if a longer branch is needed, use the LONG.BEGIN, …LONG.UNTIL, construction.
Pronunciation: "until-comma"
VC
VC ( -- condition )
Used within a code definition, leaves a condition flag on the data stack. The condition is true when the V (2's complement overflow) flag in the condition code register is 0.
Pronunciation: "overflow-clear"
VS
VS ( -- condition )
Used within a code definition, leaves a condition flag on the data stack. The condition is true when the V (2's complement overflow) flag in the condition code register is 1.
Pronunciation: "overflow-set"
WAI
WAI ( -- )
Compiles the opcode sequence for the WAI instruction into the dictionary. When later executed, this code saves the condition code register, accumulators A and B, and register X, Y and PC on the stack. The stack pointer is decremented for each byte stored. The CPU the enters a lower power consumption mode, while waiting for an interrupt which has not been masked. When an interrupt is recognized, the CPU sets the I bit in the CCR, and execution resumes at the address stored in the appropriate interrupt vector.
Pronunciation: "wait-for-interrupt"
WAV
WAV ( -- )
Compiles the opcode sequence for the WAV instruction into the dictionary. When later executed, this code performs a weighted average calculation based on values stored in memory to support fuzzy logic rule evaluation. Consult the Motorola HC12 assembly instruction glossary for details.
Pronunciation: “weighted-average”
WHILE,
WHILE, ( condition -- )
WHILE, is used in assembly coded routines to mark the beginning of the "while true" portion of a BEGIN, . . . WHILE, . . . REPEAT, loop. Use as:
BEGIN, . . . . condition WHILE, . . . . REPEAT,
When executed, WHILE, causes a branch instruction to be compiled into the dictionary.
When the compiled code is executed:
If the condition is true, the loop continues and the code between WHILE, and REPEAT, are executed, after which control is transferred to the code following BEGIN,. If the condition is false, the loop terminates and execution continues with the code following REPEAT,. The branches compiled by this code construct are limited to the range –128 to +127 bytes; if a longer loop is needed, use the LONG.BEGIN, …LONG.WHILE,… LONG.REPEAT, construction.
Pronunciation: "while-comma"
X,
X, ( -- reg.arg )
Used within a code definition, leaves a constant on the stack indicating that the index register X is to be used by an opcode. This register specifier can be used with the DBEQ, DBNE, IBEQ, IBNE, TBEQ, TBNE, EXG, TFR, and SEX opcodes, and the +LOOP, and –LOOP, directives.
Pronunciation: "x-register"
XCODE
XCODE ( <name> -- )
Starts a C-callable assembly coded definition. Consult the main glossary.
Pronunciation: "x-code"
XGDX
XGDX ( -- )
Compiles the opcode sequence for the XGDX instruction into the dictionary. When later executed, this code exchanges the contents of accumulator D with the contents of index register X.
Pronunciation: "exchange-d-and-x"
XGDY
XGDY ( -- )
Compiles the opcode sequence for the XGDY instruction into the dictionary. When later executed, this code exchanges the contents of accumulator D with the contents of index register Y.
Pronunciation: "exchange-d-and-y"
Y,
Y, ( -- reg.arg )
Used within a code definition, leaves a constant on the stack indicating that the index register Y is to be used by an opcode. This register specifier can be used with the DBEQ, DBNE, IBEQ, IBNE, TBEQ, TBNE, EXG, TFR, and SEX opcodes, and the +LOOP, and –LOOP, directives.
Pronunciation: "y-register"
[D,PC]
[D,PC] ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the accumulator D indirect indexed addressing mode relative to the PC (program counter) register should be used by an instruction opcode. This mode adds the value in D to the contents of PC to form the address of a memory location that contains a pointer to the value to be acted upon by the instruction.
Pronunciation: "indirect-indexed-d-comma-p-c"
[D,S]
[D,S] ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the accumulator D indirect indexed addressing mode relative to the S (stack pointer) register should be used by an instruction opcode. This mode adds the value in D to the contents of S to form the address of a memory location that contains a pointer to the value to be acted upon by the instruction.
Pronunciation: "indirect-indexed-d-comma-s"
[D,X]
[D,X] ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the accumulator D indirect indexed addressing mode relative to the index register X register should be used by an instruction opcode. This mode adds the value in D to the contents of X to form the address of a memory location that contains a pointer to the value to be acted upon by the instruction.
Pronunciation: "indirect-indexed-d-comma-x"
[D,Y]
[D,Y] ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the accumulator D indirect indexed addressing mode relative to the index register Y register should be used by an instruction opcode. This mode adds the value in D to the contents of Y to form the address of a memory location that contains a pointer to the value to be acted upon by the instruction.
Pronunciation: "indirect-indexed-d-comma-y"
[IND16,PC]
[IND16,PC] ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the 16-bit constant indirect indexed addressing mode relative to the PC (program counter) register should be used by an instruction opcode. This mode adds the constant value to the contents of PC to form the address of a memory location that contains a pointer to the value to be acted upon by the instruction.
Pronunciation: "indirect-indexed-sixteen-comma-p-c"
[IND16,S]
[IND16,S] ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the 16-bit constant indirect indexed addressing mode relative to the S (stack pointer) register should be used by an instruction opcode. This mode adds the constant value to the contents of S to form the address of a memory location that contains a pointer to the value to be acted upon by the instruction.
Pronunciation: "indirect-indexed-sixteen-comma-s"
[IND16,X]
[IND16,X] ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the 16-bit constant indirect indexed addressing mode relative to the index register X register should be used by an instruction opcode. This mode adds the constant value to the contents of X to form the address of a memory location that contains a pointer to the value to be acted upon by the instruction.
Pronunciation: "indirect-indexed-sixteen-comma-x"
[IND16,Y]
[IND16,Y] ( -- mode )
Used within a code definition, leaves a constant on the stack indicating that the 16-bit constant indirect indexed addressing mode relative to the index register Y register should be used by an instruction opcode. This mode adds the constant value to the contents of Y to form the address of a memory location that contains a pointer to the value to be acted upon by the instruction.
Pronunciation: "indirect-indexed-sixteen-comma-y"