Autor ::wurmi Poslaná :: 29.11.2023 10:08:05 Predmet ::Re: Emulace CPU
DAA je divocina.
Mne DAA fungovala aj pred aj po. Ale exerciser mi hlasil stale CRC error. On to totiz testuje na vsetkych kombinaciach AC+CY+A. A zistil som ze Romanov výklad DAA nie je uplne slovne presny. Podobne nie je úplne presný aj výklad v 8080 Programmers Manual.
Konkrétne v bode 2, ked sa rozhoduje kedy ma pripocitat hodnotu 60h. Nestaci len CY=1 alebo horny nibble (po pripadnom pripocitani 6 ) ma hodnotu vyssiu ako 9.
Napriklad ked je situacia AC=C=0 a A=FFh. Tu podla bodu 1 sa pripocita 6. ale uz nepripocita 60h (medzivysledok je totiz 05h, horny nibble je 0). Mne zafungovalo to, ze v bode 2 testujem hodnotu A este pred pripocitanim 6, a porovnavam s hodnotou 99h. V pripade AC=C=0 a A=FFh po DAA ocakavam v A=65 a to asi aj spravna hodnota na fyzickom 8080, ktoru aj Exerciser80/85 ocakava. Tak to priblizne robi aj Romanov emulator.
Tiez si myslim ze 8080 urcite interne nerobi 2 sekvencne korekcie pri DAA, ale len jeden sucet s hodnotami 0, 6 alebo 66h, ktore ziska z dakej jednoduchej kombinacnej logiky.