Да, верное замечание, флаги P, AC, Z, S ставятся как при обычном сложении A+R. Флаг C сохраняет свое значение, но устанавливается если добавлялся 0x60. Скорректированный алгоритм:
R = 0;
if (((A & 0x0F) > 9) || AC) R |= 0x06;
if (((A & 0xF0) > 0x90) || C) {R |= 0x60; C=1;}
A = A + R;
установить флаги S, Z, AC, P согласно результата сложения.





Ответить с цитированием