From Intellivision Wiki
Revision as of 07:57, 8 October 2007 by Mr z (talk | contribs)
Jump to: navigation, search
Instruction NameSwap Bytes
CP1610 Clock Cycles6 or 8
Opcode Range$0040-$0047
Input FlagsNone
Output FlagsSign Flag, Zero Flag

The Swap Bytes (SWAP) instruction can perform two very different functions depending on the "double swap" indicator. A single swap trades the lowest eight bits in a register with the upper eight bits. A double swap essentially copies the lowest eight bits in a register to the upper eight bits. Regardless of which swap is specified, the CP1610 then sets or clears the Sign Flag and Zero Flag according to the resulting value. The number of clock cycles used depends on the type of swap specified. A single swap will use 6 clock cycles and a double swap will use 8 clock cycles.

Swap diagram.png

The opcode format is as follows.

where: s indicates the type of swap such that: s == 0 indicates a single swap s == 1 indicates a double swap
rr indicates the target register such that: rr == 00 indicates register R0 rr == 01 indicates register R1 rr == 10 indicates register R2 rr == 11 indicates register R3