Welcome, Guest. Please login or register.


Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - zka67

Pages: [1]
1
Emulátorok / Re: Z80MU - ARM STM32 alapú hardveres emulátor
« on: 2017.April.13. 01:48:13 »
Sziasztok, köszönöm mindenkinek a segítséget, és az ünnepek alatt igyekszem javítani az emulátort.

@ergoGnomik: a "vas" teljesen saját tervezés és a szoftver is teljesen saját, nincs semmi OS, az alapoktól írtam a rendszert. Mivel a határon van a "vas" teljesítménye, ezért rengeteget kellett optimalizálnom, és néhol kompromisszumokat is kellett kötnöm.

És egy kép az üres nyákokról :)

2
Emulátorok / Re: Z80MU - ARM STM32 alapú hardveres emulátor
« on: 2017.April.10. 21:05:57 »
Sziasztok, szóval én terveztem és írtam a programját a Z80MU-nak. Ebben egy 168MHz-es Cortex-M4-es proci dolgozik a képmegjelenítésen, a Z80 futtatásán, az IO eszközök kezelésén, kivéve a hangot. A hangot egy másik, 72MH-es Cortex-M3-as proci generálja, ami egy 3Mbit/s-es soros vonalon kapja az adatokat (üzemmód beállíáts, regiszterszám, adat, stb...).

A Z80 utasítások nem órajel alapon vannak végrehajtva, ezt nem bírná a proci, hanem utasításonként, és ha 64us-nyi utasítást végrehajtott, akkor bevárja a sorszinkront. A sorszinkron a videójel DMA megszakításával érkezik, ami alatt feltölti a következő sorhoz szükséges adatokkal a DMA buffert, és az aktuális sor pedig a másik DMA bufferből kerül megjelenítésre. A DMA 16 bites adatokat küld ki a videó buszra, 4R 4G 4B 2- H V. RGB értelemszerűen az RGB értékek, 2 nem használt kimenet is van, és a HSYNC és a VSYNC biteket.

A Z80 utasítások ciklusra pontosak, ezeket már többször is leellenőriztem, azokkal nincs baj.

EP128 emuláció: nekem sosem volt még a kezemben igazi EP128, így csak az ep128emu-val tudom összehasonlítani, de ebben a programban elég korlátozott a debug lehetőség, legalábbis én nem jöttem rá, hogyan lehet pl. bármit módosítani benne. A lényeg az, hogy eddig nem is hallottam se a NICK, se a DAVE chipekről, és ezeknek a leírása sem az emulátor készítők legjobb barátja.

Időzítések: a DAVE timerei mindkét processzorban emulálásra kerülnek, mert mint említettem, a Z80 emulálása gyorsabban végrehajtásra kerül, mint a valóságban, és utána vár a HSYNC-re.

Szóval a lényegre térve: itt többen is említettétek, hogy fontos a memória várakozás időzítése. Ez még biztosan nem jó az emulátorban, csak van benne valami. Egészen pontosan minden memória műveletnél hozzáad egy órajelet a Z80 ciklusokhoz ha be van állítva a "minden flag" a DAVE-ben. A csak az M1-nél történő várakozás még nincs benne.

Ha valaki leírná, hogy pontosan hogyan is kell időzíteni a várakozásokat, azt megköszönném.

Továbbá a DAVE timereit sem tudom a Z80 órajelével etetni, egyszerűen nem bírja a proci. Ezért az 1Hz, 50Hz és az 1kHz-es megszakítások számlálói a HSYNC alatt változnak csak, a CPUCLK/15625 értékkel, és ekkor történik az IRQ generálása is. Nem tudom, hogy ez okozhat-e valamilyen problémát?

Aztán a hanggenerátor megszakítással is kellet egy kicsit trükköznöm, hogy a Z80 emuláció a megfelelő sebességgel fusson: bizonyára észrevettétek, hogy a kazettáról töltés lassabb egy kicsit, mint az eredeti gépen. Itt kénytelen voltam sűrűbben foglalkozni a hg megszakítással, míg normál módban csak minden 16.-ik DAVE órajelre lép a számláló, de ekkor 16-ot. Lehet, hogy nem jó az ötletem, sőt most, hogy közben néztem a kódot, a DAVE frekvencia osztó bitje itt nincs is emulálva, ezt majd pótolom. Ebből az következik, hogy ha a DAVE hg értéke kisebb, mint 16, akkor kimaradhat megszakítás, de én úgy számoltam, hogy ennél sűrűbben értelmetlen megszakítást generálni...

Asszem jobb lesz ezt az egész számlálósdit újraírni...

Szóval minden segítséget, ötletet szívesen veszek, és amint működik rendesen az emuláció, utána majd rátérek a hanggenerátor problémára. Addig is egy kérdés, a bricky nevű program a 11-es és a 15-ös regisztereket használja D/A konverternek, ezek a zajcsatorna amplitudó regiszterei, és természetesen nem is szól megfelelően a hang. Esetleg valaki utána tudna nézni addig is a dolognak?

Üdv.
Zoli




Pages: [1]