Contents | < Browse | Browse >
NAME
	ROXL, ROXD -- Rotate left with extend and rotate right with extend

SYNOPSIS
	ROXd	Dx,Dy
	ROXd	#<data>,Dy
	ROXd	<ea>
	where d is direction, L or R

	Size = (Byte, Word, Long)

FUNCTION
        A rotation is made on destination operand bits.
        Rotation uses bit X.

                  .-------->-----------.
	ROXL:     |                    |
	      C <------ OPERAND <- X --'
	                  <---	       

	ROXR:    ,---------<-------.
	         |                 |
	         `-- X -> OPERAND -----> C
	                   --->

FORMAT
	In the case of the rotating of a register:
	~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	-----------------------------------------------------------------
	|15 |14 |13 |12 |11 |10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
	|---|---|---|---|-----------|---|-------|---|---|---|-----------|
	| 1 | 1 | 1 | 0 |  NUMBER/  |dr |  SIZE |i/r| 1 | 0 | REGISTER  |
	|   |   |   |   |  REGISTER |   |       |   |   |   |           |
	-----------------------------------------------------------------

	In the case of the rotating of a memory area:
	~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	-----------------------------------------------------------------
	|15 |14 |13 |12 |11 |10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
	|---|---|---|---|---|---|---|---|---|---|-----------|-----------|
	| 1 | 1 | 1 | 0 | 0 | 1 | 0 |dr | 1 | 1 |    MODE   | REGISTER  |
	----------------------------------------=========================
	                                                  <ea>

NUMBER/REGISTER
	Specifies number of rotating or number of register which contents
	the number of rotating.
	If i/r = 0, number of rotating is specified in the instruction as
	immediate data
	If i/r = 1, it's specified in the data register.
	If dr = 0, right rotating
	If dr = 1, left rotating

SIZE
	00->one Byte operation
	01->one Word operation
	10->one Long operation

REGISTER
	For a register rotating:
	Indicates the number of data register on which rotating is applied.

	For a memory rotating:
	<ea> indicates operand which should be rotated.
	Only addressing modes relatives to memory are allowed:

	--------------------------------- -------------------------------
	|Addressing Mode|Mode| Register | |Addressing Mode|Mode|Register|
	|-------------------------------| |-----------------------------|
	|      Dn       | -  |     -    | |    Abs.W      |111 |  000   |
	|-------------------------------| |-----------------------------|
	|      An       | -  |     -    | |    Abs.L      |111 |  001   |
	|-------------------------------| |-----------------------------|
	|     (An)      |010 |N° reg. An| |   (d16,PC)    | -  |   -    |
	|-------------------------------| |-----------------------------|
	|     (An)+     |011 |N° reg. An| |   (d8,PC,Xi)  | -  |   -    |
	|-------------------------------| |-----------------------------|
	|    -(An)      |100 |N° reg. An| |   (bd,PC,Xi)  | -  |   -    |
	|-------------------------------| |-----------------------------|
	|    (d16,An)   |101 |N° reg. An| |([bd,PC,Xi],od)| -  |   -    |
	|-------------------------------| |-----------------------------|
	|   (d8,An,Xi)  |110 |N° reg. An| |([bd,PC],Xi,od)| -  |   -    |
	|-------------------------------| |-----------------------------|
	|   (bd,An,Xi)  |110 |N° reg. An| |    #data      | -  |   -    |
	|-------------------------------| -------------------------------
	|([bd,An,Xi]od) |110 |N° reg. An|
	|-------------------------------|
	|([bd,An],Xi,od)|110 |N° reg. An|
	---------------------------------

RESULT
	X - Set by the last bit out of operand.
            Not changed if rotation is zero.
	N - Set if the result is negative. Cleared otherwise.
	Z - Set if the result is zero. Cleared otherwise.
	V - Always cleared
	C - Set according to the last bit shifted out of the operand.

SEE ALSO
	ROL, ROR	ASL, ASR	LSL, LSR