Four register classes, per the manual's diagrams.
+ − × ÷: X gets the result, Y takes Z, Z clears.
yx: Y takes the old X, Z clears.
sin cos tan ln log ex and inverses: Y holds, Z clears.
1/x √ x2 rad deg: Y and Z both hold.
Nothing is ever replicated downward.
C↓ rolls the stack down — X discarded, Y→X, Z→Y, 0 into Z. Three presses therefore clear everything but memory. F then C↓ cancels the shift. Lift is suppressed only right after ENT↑. π and MR lift unconditionally.
Error limits are Appendix C of the manual, not approximations:
tan above 90°, sin and cos at 401°,
sin-1 cos-1 above 1, √ of a negative,
ln and log of zero or less, ex outside
−28 to 18.42068, yx with a non-positive base, and
÷ or 1/x at or below 10-8.
An error zeroes X and Z and leaves Y and memory intact. C↓ clears it; so does any
other key except 1/x ÷ log ln, which leave it standing.
Memory overflow is reported without disturbing memory.
Details from the manual. π is the truncated 3.1415926.
yx is computed as ex·ln y, as the original did.
Trig is degrees only. No scientific notation. The display shuts off after 35 seconds
idle, showing only decimal points — nothing is lost, and any key wakes it.
Eight digits, no guard digits. Registers are truncated to eight
positions after every operation, not just at display — the manual's sphere
program proves it. Every numeric result printed in the manual reproduces exactly,
with one exception: yx goes through the ROM's own log and
antilog, so 1.08510 reads 2.26098 on real hardware and 2.2609834 here.
Keyboard: digits, . + - * /, Enter,
Backspace (C↓), f, c (CHS),
x (x↔y), Esc.