Kdyz uz se tu bavime i o ne Z80 procesorech, mam tu offtopic otazku.
Nevite nekdo jak spravne pouzivat instrukci FWAIT?
Mam kod, ktery dokaze emulovat sin a cos na koprocesoru 8087 jen pri pouziti tangenty, ktere jako jedinou umi. Ale 8087 nevlastnim a i kdybych ho mel tak si nejsem jisty zda nektere varianty treba nebezi v 99% pripadu spravne a...
Nebyl jsem to schopen pochopit z tech par stripku informaci co jsem na netu nasel.
Zkousel jsem se i divat co me vygeneruje borland pascal pri spravnych direktivach, ale on tam hazel WAIT uplne vsude.
https://github.com/DW0RKiN/FSINCOS-i287
je tam i pokus o test v cecku.
tyjo pro 8087 jsem kdysi neco psaval, musel bych dohledat. Ale pokud si dobre pamatuju, musis prakticky davat FWAIT pred kazdou 8087 instrukci, protoze provadeni tech instrukci bezi paralelne k CPU a trva dyl (i nekolik desitek taktu). A hlavni CPU nema jak zjistit, ze uz se dopocitalo, tak FWAIT ceka na nejaky signal, ze je jako fakt dokonceno.
Jako pokud mas jistotu, ze semtam jednou za 100 taktu zavolas FPU instrukci, tak FWAIT neni nutnej, protoze ten FPU to stihne dopocitat, ale u obecnyho kodu to fakt jak assemblery tak i prekladace strkaji vsude.
(ono je to tedy interne jeste slozitejsi, protoze FPU nemuze jen tak sledovat datovou sbernici, jestli pro nej jde instrukce, protoze uz 8086 mela prefetch)