Ой, а у меня всё Ок с C и AC в логических операциях - зря на себя наговаривалShaos wrote:А у меня C и AC нигде не трогались в неарифметических и несдвиговых местах...b2m wrote:У меня во всех логических операциях и даже в CMP стоит AC=0, и ничего, по крайней мере CP/M вроде без глюков работает. Так что ищи в другом месте.
Кстати CMP должна функционировать как вычитание - у меня к примеру C и AC при сравнении соответственно меняют свои значения
И в 8085 тожеb2m wrote:В Z80 действительно, почему-то, для AND должно быть AC=1 ...
Но не в 8080 - в нём в AC кладётся ИЛИ третьих битов операндов ...

P.S. Хотя в ANA B зачем-то написал C=1 - исправляюсь

P.P.S. Наконец-то нашёл время сделать DAA:
Code: Select all
case 0x27: // DAA
timel+=4;
if((A&0x0F)>9||a_){A+=6;a_=SH_TRUE;}
if(((A&0xF0)>>4)>9||c_) A=plus(A,0x60); // flag C
flag_all(A); // flags S,Z,P
break;