# 83Plus:BCALLs:40D8

From WikiTI

## Synopsis

**Official Name:** ATan2Rad

**BCALL Address:** 40D8

Compute the arctangent of OP1 divided by OP2, placing the result in the correct quadrant according to the signs of its arguments.

### Inputs

### Outputs

- OP1 = angle in radians

### Destroys

- AF, BC, DE, HL
- OP1-OP5

## Comments

The official documentation makes no mention of the effect of the D register; the initialization of D seems to have been left out accidentally. To obtain the documented behavior, D should be set to zero. In any case, D affects the output as follows:

- If D is between 60h and DFh, the inverse hyperbolic tangent is computed instead.
- Otherwise, if bit 5 of D is set, the answer will be returned in degrees or radians depending on the mode. If bit 5 is clear, the answer will always be returned in radians.

Furthermore, this routine also uses the low bits of D to encode the original octant. Specifically:

- If the input point is below the X-axis, 0Ch will be added to D.
- If it is left of the Y-axis, D will be XORed with 4.
- If it is closer to the Y-axis than to the X-axis, D will be ORed with 10h.

As a result, if the low bits of D are not initially zero, strange things will happen to the output octant.