Branching Instructions

Basic Branches

JMP #{\}A - Jump

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1101100 RAA AAAAAAAAA AAAAAAAAA none --- --- 4 13..20 No

JMP D {WC/WZ/WCZ} - Jump (indirect)

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1101011 CZ0 DDDDDDDDD 000101100 none D[31] D[30] 4 13..20 No

TODO

If the WC or WCZ effect is specified (JMP D only), the C flag is updated to be Destination[31].

If the WZ or WCZ effect is specified (JMP D only), the Z flag is updated to be Destination[30].

JMPREL {#}D - Jump relative

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1101011 00L DDDDDDDDD 000110000 none --- --- 4 13..20 No

Instruction Skipping

SKIP {#}D - Slow-Skip instruction pattern

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1101011 00L DDDDDDDDD 000110001 none --- --- 2 2 No

SKIP allows any of the next 32 instructions to be skipped if the corresponding bit is set (=1) in Destination. Bit 0 controls skipping for the first instruction after SKIP and bit 31 the 32nd. Destination is loaded into an internal shift register, changing it while SKIP is active has no effect.

The skipped instructions are treated similarly to ones whose if_* condition check isn't met, i.e. they take 2 cycles to execute and do consume any ALTx-type instruction preceding them.

A call (or interrupt) suspends skipping until after the corresponding return. Nested calls are allowed up to a depth of eight (matching the size of the internal stack). Skipping continues after a jump and any remaining skip bits apply whether or not a conditional jump is made.

Skipping cannot be nested; SKIP ends any active or suspended skip sequence and starts a new one. SKIP #0 can be used to end skipping earlier than normal. SKIP does not work inside interrupt service routines (TODO CONFIRM).

Note that AUGS and AUGD are separate instructions, e.g. WRLONG ##1234, ##4568 consumes three skip bits. A subroutine call consumes only one skip bit for the entire routine.

For example:

        skip #%1_001101

        add x,y  ' Skipped !
        add x,y  ' Not skipped !
        add x,y  ' Skipped !
        add x,y  ' Skipped !
        call #subroutine
        jmp #somewhere ' Not skipped !
        ...
somewhere
        add x,y  ' Skipped !
        add x,y  ' Not skipped !
        ...
subroutine
        ' Anything here is not skipped!
        ret

SKIPF {#}D - Fast-Skip instruction pattern

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1101011 00L DDDDDDDDD 000110010 none --- --- 2 ILLEGAL No

SKIPF allows any of the next 32 instructions to be skipped if the corresponding bit is set (=1) in Destination. Bit 0 controls skipping for the first instruction after SKIPF and bit 31 the 32nd. Destination is loaded into an internal shift register, changing it while SKIPF is active has no effect.

SKIPF works similarly to SKIP, but differs in that it can completely eliminate instructions from the pipeline. The skipped instructions take zero cycles to execute and don't consume any ALTx-type instruction preceding them. This works by incrementing PC by more than one instruction at a time.

However, this instruction has some severe limitations/oddities:

Example:

        skipf ##%0111111110_011111110_101

        add x,y  ' Slow-Skipped (first after skipf) !
        add x,y  ' Not skipped !
        add x,y  ' Fast-Skipped !

        altr z   ' This ALT...
        nop ' 1
        nop ' 2
        nop ' 3
        nop ' 4
        nop ' 5
        nop ' 6
        nop ' 7
        add x,y  ' ... applies to this instruction

        altr z   ' BUT this ALT...
        nop ' 1
        nop ' 2
        nop ' 3
        nop ' 4
        nop ' 5
        nop ' 6
        nop ' 7
        nop ' 8 (8th instruction is SLOW SKIPPED, CONSUMES ALT)
        add x,y  ' ... does NOT apply to this instruction

EXECF {#}D - Jump and Fast-Skip instruction pattern

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1101011 00L DDDDDDDDD 000110011 none --- --- 4 4 No

EXECF loads an instruction skip pattern from Destination[31:10] and jumps to the absolute address in Destination[9:0] (this limits it to Cog/LUT memory!).

Please see SKIPF for details on the fast skipping function and its limitations, but note that EXECF can only skip the following 22 instructions, where Destination[10] corresponds to the first instruction at the jump target.

TODO: more

Block Repeat

REP {#}D,{#}S - Repeat block

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1100110 1LI DDDDDDDDD SSSSSSSSS none --- --- 2 2 No

REP causes the following block of instructions (whose length is provided in Destination) to be repeated the number of times given in Source (if Source is zero, the block is repeated indefinitely). (TODO: Less janky wording?) The values of Destination and Source are copied to internal registers - changing them during the loop has no effect.

Looping with REP is faster than using a normal branch instruction (such as DJNZ): If executing from Cog or LUT memory, the jump back to the top of the REP block is fully pipelined and thus instant. 0 cycles! TODO hubexec timing

REP loops cannot be nested! Also, any jump or call instruction will cancel the REP effect (this can be used to exit the loop early!).

The last instruction in the REP loop should not be a relative-addressed jump or call, since the PC will already have looped back to the top by the time the target address is computed.

While REP is active, Interrupts are stalled. REP can thus also be used to protect a sequence of instructions from interrupts (set Source to 1 so it doesn't actually repeat).

The assembler supports a special syntax @end_label to automatically calculate the length of the REP block.

        rep @.loop,#5 ' repeat block enclosed by REP/.loop 5 times
        add x,##1234
        wrlong x,ptra++
.loop
        ' equivalent without special syntax:
        rep #3,#5
        add x,##1234 ' AUGS/AUGD count as extra instructions!
        wrlong x,ptra++

Note: if Destination is zero, REP does nothing.

Internal Stack Calls

CALL #{\}A - Call subroutine

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1101101 RAA AAAAAAAAA AAAAAAAAA none --- --- 4 13..20 No

CALL D {WC/WZ/WCZ} - Call subroutine (indirect)

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1101011 CZ0 DDDDDDDDD 000101101 none D[31] D[30] 4 13..20 No

CALLPA {#}D,{#}S - Call and set PA

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011010 0LI DDDDDDDDD SSSSSSSSS PA --- --- 4 13..20 No

CALLPB {#}D,{#}S - Call and set PB

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011010 1LI DDDDDDDDD SSSSSSSSS PB --- --- 4 13..20 No

CALLPA and CALLPB call the address given by Source and copy the value of Destination into PA or PB.

See Short branch addressing for details on how Source encodes the branch target.

RET {WC/WZ/WCZ} - Return from subroutine

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1101011 CZ1 000000000 000101101 none K[31] K[30] 4 13..20 No

RET pops an address off the internal stack (TODO Link) and jumps to that address.

If the WC or WCZ effect is specified, the C flag is restored from bit 31 of the return address.

If the WZ or WCZ effect is specified, the Z flag is restored from bit 30 of the return address.

TODO more detail

_RET_ Condition Code

TODO.

External Stack Calls

CALLA #{\}A

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1101110 RAA AAAAAAAAA AAAAAAAAA none --- --- 5..13 14..33 No

CALLA D {WC/WZ/WCZ}

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1101011 CZ0 DDDDDDDDD 000101110 none D[31] D[30] 5..13 14..33 No

CALLB #{\}A

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1101111 RAA AAAAAAAAA AAAAAAAAA none --- --- 5..13 14..33 No

CALLB D {WC/WZ/WCZ}

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1101011 CZ0 DDDDDDDDD 000101111 none D[31] D[30] 5..13 14..33 No

RETA {WC/WZ/WCZ}

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1101011 CZ1 000000000 000101110 none L[31] L[30] 11..19 20..41 No

RETA decrements PTRA by 4, reads an address from the new PTRA and jumps to that address.

If the WC or WCZ effect is specified, the C flag is restored from bit 31 of the return address.

If the WZ or WCZ effect is specified, the Z flag is restored from bit 30 of the return address.

TODO more detail

RETB {WC/WZ/WCZ}

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1101011 CZ1 000000000 000101111 none L[31] L[30] 11..19 20..41 No

See RETA, but substitute PTRA with PTRB.

Coroutine calls

CALLD PA/PB/PTRA/PTRB,#{\}A

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 11100WW RAA AAAAAAAAA AAAAAAAAA Per W --- --- 4 13..20 No

CALLD D,{#}S {WC/WZ/WCZ}

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011001 CZI DDDDDDDDD SSSSSSSSS D S[31] S[30] 4 13..20 No

Short branch addressing

For conditional branches (TJ*/DJ*/IJ*) and some call instructions(CALLPA/CALLPB/CALLD) the address (Source) can be absolute or relative. To specify an absolute address, Source must be a register containing a 20-bit address value. To specify a relative address, use #Label for a 9-bit signed offset (a range of -256 to +255 instructions) or use ##Label (or insert a prior AUGS instruction) for a 20-bit signed offset (a range of -524288 to +524287). Offsets are relative to the instruction following the conditional branch instruction. The signed offset value is in units of whole instructions - it is added to PC as-is when in Cog/LUT execution mode and is multiplied by 4 then added to PC when in Hub execution mode.

And yes, it is mildly confusing that the branch destination is encoded by the Source value.

Test and Branch

TJZ D,{#}S - Test and jump if zero

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011100 10I DDDDDDDDD SSSSSSSSS none --- --- 2 or 4 2 or 13..20 No

TJZ jumps to the address described by Source if the value in Destination is zero.

See Short branch addressing for details on how Source encodes the branch target.

TJNZ D,{#}S - Test and jump if not zero

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011100 11I DDDDDDDDD SSSSSSSSS none --- --- 2 or 4 2 or 13..20 No

TJNZ jumps to the address described by Source if the value in Destination is not zero.

See Short branch addressing for details on how Source encodes the branch target.

TJF D,{#}S - Test and jump if full

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011101 00I DDDDDDDDD SSSSSSSSS none --- --- 2 or 4 2 or 13..20 No

TJF jumps to the address described by Source if the value in Destination is full of ones (i.e. equals -1 / $FFFFFFFF).

See Short branch addressing for details on how Source encodes the branch target.

TJNF D,{#}S - Test and jump if not full

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011101 01I DDDDDDDDD SSSSSSSSS none --- --- 2 or 4 2 or 13..20 No

TJNF jumps to the address described by Source if the value in Destination is not full of ones (i.e. does not equal -1 / $FFFFFFFF).

See Short branch addressing for details on how Source encodes the branch target.

TJS D,{#}S - Test and jump if negative

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011101 10I DDDDDDDDD SSSSSSSSS none --- --- 2 or 4 2 or 13..20 No

TJS jumps to the address described by Source if the value in Destination is negative (i.e. bit 31 is 1).

See Short branch addressing for details on how Source encodes the branch target.

TJNS D,{#}S - Test and jump if positive

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011101 11I DDDDDDDDD SSSSSSSSS none --- --- 2 or 4 2 or 13..20 No

TJNS jumps to the address described by Source if the value in Destination is positive (i.e. bit 31 is 0).

See Short branch addressing for details on how Source encodes the branch target.

TJV D,{#}S - Test and jump if signed overflow occurred

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011110 00I DDDDDDDDD SSSSSSSSS none --- --- 2 or 4 2 or 13..20 No

TJV tests the value in Destination against the C flag and jumps to the address described by Source if Destination has overflowed (Destination[31] != C). This instruction requires that C has been set to the "correct sign" by the ADDS / ADDSX / SUBS / SUBSX / CMPS / CMPSX / SUMx instruction that is to be checked for overflow.

See Short branch addressing for details on how Source encodes the branch target.

Modify and Branch

DJZ D,{#}S - Decrement and jump if zero

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011011 00I DDDDDDDDD SSSSSSSSS D --- --- 2 or 4 2 or 13..20 No

DJZ decrements the value in Destination, writes the result, and jumps to the address described by Source if the result is zero.

See Short branch addressing for details on how Source encodes the branch target.

DJNZ D,{#}S - Decrement and jump if not zero

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011011 01I DDDDDDDDD SSSSSSSSS D --- --- 2 or 4 2 or 13..20 No

DJNZ decrements the value in Destination, writes the result, and jumps to the address described by Source if the result is not zero.

This instruction is very commonly used for counted loops. In certain cases, it can be substituted with REP.

See Short branch addressing for details on how Source encodes the branch target.

DJF D,{#}S - Decrement and jump if borrow

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011011 10I DDDDDDDDD SSSSSSSSS D --- --- 2 or 4 2 or 13..20 No

DJF decrements the value in Destination, writes the result, and jumps to the address described by Source if the result is -1 / $FFFFFFFF (i.e underflow/borrow occurred).

See Short branch addressing for details on how Source encodes the branch target.

DJNF D,{#}S - Decrement and jump if no borrow

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011011 11I DDDDDDDDD SSSSSSSSS D --- --- 2 or 4 2 or 13..20 No

DJNF decrements the value in Destination, writes the result, and jumps to the address described by Source if the result is not -1 / $FFFFFFFF (i.e no underflow/borrow occurred).

See Short branch addressing for details on how Source encodes the branch target.

IJZ D,{#}S - Increment and jump if zero

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011100 00I DDDDDDDDD SSSSSSSSS D --- --- 2 or 4 2 or 13..20 No

DJZ increments the value in Destination, writes the result, and jumps to the address described by Source if the result is zero.

See Short branch addressing for details on how Source encodes the branch target.

IJNZ D,{#}S - Increment and jump if not zero

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011100 01I DDDDDDDDD SSSSSSSSS D --- --- 2 or 4 2 or 13..20 No

IJNZ increments the value in Destination, writes the result, and jumps to the address described by Source if the result is not zero.

See Short branch addressing for details on how Source encodes the branch target.

Branch on Event

JINT {#}S

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011110 01I 000000000 SSSSSSSSS none --- --- 2 or 4 2 or 13..20 No

JNINT {#}S

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011110 01I 000010000 SSSSSSSSS none --- --- 2 or 4 2 or 13..20 No

JCT1 {#}S

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011110 01I 000000001 SSSSSSSSS none --- --- 2 or 4 2 or 13..20 No

JNCT1 {#}S

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011110 01I 000010001 SSSSSSSSS none --- --- 2 or 4 2 or 13..20 No

JCT2 {#}S

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011110 01I 000000010 SSSSSSSSS none --- --- 2 or 4 2 or 13..20 No

JNCT2 {#}S

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011110 01I 000010010 SSSSSSSSS none --- --- 2 or 4 2 or 13..20 No

JCT3 {#}S

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011110 01I 000000011 SSSSSSSSS none --- --- 2 or 4 2 or 13..20 No

JNCT3 {#}S

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011110 01I 000010011 SSSSSSSSS none --- --- 2 or 4 2 or 13..20 No

JSE1 {#}S

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011110 01I 000000100 SSSSSSSSS none --- --- 2 or 4 2 or 13..20 No

JNSE1 {#}S

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011110 01I 000010100 SSSSSSSSS none --- --- 2 or 4 2 or 13..20 No

JSE2 {#}S

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011110 01I 000000101 SSSSSSSSS none --- --- 2 or 4 2 or 13..20 No

JNSE2 {#}S

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011110 01I 000010101 SSSSSSSSS none --- --- 2 or 4 2 or 13..20 No

JSE3 {#}S

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011110 01I 000000110 SSSSSSSSS none --- --- 2 or 4 2 or 13..20 No

JNSE3 {#}S

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011110 01I 000010110 SSSSSSSSS none --- --- 2 or 4 2 or 13..20 No

JSE4 {#}S

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011110 01I 000000111 SSSSSSSSS none --- --- 2 or 4 2 or 13..20 No

JNSE4 {#}S

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011110 01I 000010111 SSSSSSSSS none --- --- 2 or 4 2 or 13..20 No

JPAT {#}S

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011110 01I 000001000 SSSSSSSSS none --- --- 2 or 4 2 or 13..20 No

JNPAT {#}S

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011110 01I 000011000 SSSSSSSSS none --- --- 2 or 4 2 or 13..20 No

JFBW {#}S

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011110 01I 000001001 SSSSSSSSS none --- --- 2 or 4 2 or 13..20 No

JNFBW {#}S

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011110 01I 000011001 SSSSSSSSS none --- --- 2 or 4 2 or 13..20 No

JXMT {#}S

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011110 01I 000001010 SSSSSSSSS none --- --- 2 or 4 2 or 13..20 No

JNXMT {#}S

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011110 01I 000011010 SSSSSSSSS none --- --- 2 or 4 2 or 13..20 No

JXFI {#}S

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011110 01I 000001011 SSSSSSSSS none --- --- 2 or 4 2 or 13..20 No

JNXFI {#}S

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011110 01I 000011011 SSSSSSSSS none --- --- 2 or 4 2 or 13..20 No

JXRO {#}S

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011110 01I 000001100 SSSSSSSSS none --- --- 2 or 4 2 or 13..20 No

JNXRO {#}S

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011110 01I 000011100 SSSSSSSSS none --- --- 2 or 4 2 or 13..20 No

JXRL {#}S

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011110 01I 000001101 SSSSSSSSS none --- --- 2 or 4 2 or 13..20 No

JNXRL {#}S

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011110 01I 000011101 SSSSSSSSS none --- --- 2 or 4 2 or 13..20 No

JATN {#}S

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011110 01I 000001110 SSSSSSSSS none --- --- 2 or 4 2 or 13..20 No

JNATN {#}S

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011110 01I 000011110 SSSSSSSSS none --- --- 2 or 4 2 or 13..20 No

JQMT {#}S

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011110 01I 000001111 SSSSSSSSS none --- --- 2 or 4 2 or 13..20 No

JNQMT {#}S

Encoding Register
Written
C Flag Z Flag Cycles
(cogexec)
Cycles
(hubexec)
IRQ
Shield
EEEE 1011110 01I 000011111 SSSSSSSSS none --- --- 2 or 4 2 or 13..20 No

See Events for more info.