CPUFreq – zjistí frekvenci 8080 na PMD85

Ve svém emulátoru jsem objevil chybu. Ve snaze o co nejvěrnější emulaci čítače T1 jsem zazdil čítač T2, který sice funguje správně, ale svět se o tom nedoví – čtení z portu 5eh bylo chybné. Narychlo jsem tedy opravil chybičku a vydal verzi 1.2.1.

Při této příležitosti mě napadlo využít čítač ke změření frekvence CPU. Opírám se o fakt, že frekvence 1 Hz je pro T2 získávána z nezávislého zdroje a není odvozená z FI2 (např. čítačem T1 by se frekvence změřit nedala).

Princip:

  • spočítá se, kolikrát se za 1 sekundu provede program trvající 1000 taktů, dostávám frekvenci signálu FI2.
  • vynásobí se toto číslo 9, neboť FI2 = frekvence/9,
  • správný výsledek je buď 18.432MHz nebo 18.000 MHz (u PMD verze 3). No jo, ale je to vlastně frekvence CPU? Spíš frekvence generátoru 8224 – proč jsem to sakra pojmenoval CPUFreq ?

K čemu je to dobré? Chleba levnější nebude, takže k ničemu. Ovšem pokud se místo hospodského upíjení a u televize času ubíjení raději šťouráte v 30 let starých kalkulačkách, můžete ověřit:

  • funkci opraveného čítače T2 v emulátoru, příp. v reálném PMD85,
  • skutečnou délku trvání instrukcí (vypočtená podle taktů odvozených zde), neboť 1000 taktů je napočítáno podle této tabulky,
  • kolísání frekvence na reálném PMD85-2A (spoiler: nekolísá, ale pokud bych srazil smyčku na 100 taktů, už by to možná bylo zajímavější).

Malý náhled na prográmek a samozřejmě zdrojové soubory a výsledný ptp v jednom zipu:

Soubory ke stažení zde: CPUfreq.zip