Rotation
Since CORDIC is all about rotation I wanted to use complex multiplication. The WP-34S provides a command that simulates this with the stack:

Code:

[cmplx][times]

Let's assume we want to calculate arg(4, 3), that is the angle of the complex number z = 4 + 3i.
How would we fill up the stack?
For reasons that become apparent later I want to keep the imaginary part of z in register X. Thus X and Y are swapped and the usual rotation becomes counter-clockwise.

We use for instance w = 1 + 0.1i.
This will rotate z by tan-1(0.1) = 5.7105931375°.

But now we've gone one step too far. Therefore let's get the last value back:

Code:

[cmplx]x[<->] L

Thus in total we executed the rotation 6 times which is about 34.263558825°.

Let's write a little program for that. We use register A as counter:

Code:

[cmplx][times]
INC A
x>0?
BACK 003
[cmplx]x[<->] L
DEC A

Now you can probably see why I wanted to keep the imaginary part of z in register X: we have to check whether it is still positive.

Iteration
What's the next step of the algorithm? We have to reduce the angle of rotation and use w = 1 + 0.01i instead.
Thus we're going to shift the imaginary value of w one digit to the right using SDR:

Prototype
Since we don't want to loose the values of the stack we have to use SSIZE8 for further calculations.
Please keep in mind that now both registers A and B are part of the stack.
We keep using J as the loop control variable.