On 14/09/2016 13:17, Vincent Slyngstad wrote:
From: Kyle Owen: Tuesday, September 13, 2016 7:12 PM
TAD OVFA /A XOR B
AND OVFB
CMA IAC
TAD OVFA
TAD OVFB

Sigh.

There seems to be an issue with my implementation of XOR.
Before the CMA IAC there needs to be CLL RAL, to reposition the carries
before subtracting them.  Both XORs are affected.

Yes, the usual way is just what you describe: A + B - (2 * A AND B), which works by calculating the bitwise carries and subtracting them from the addition, to make it carryless. The AND tells you where they result from but you have to shift them to the correct positions before taking the difference. You were missing the multiply x 2 (which needs the CLL first). Easily missed.

But unless I've missed something, you don't need a complete XOR, you just need to check the sign bits.

--
Pete
Pete Turnbull

Reply via email to