ENTERPRISE KLUB
2019. szeptember 7., 1055 Budapest, Nyugati tér 9. 14-19 óráig
Részletek
Welcome, Guest. Please login or register.


Author Topic: Idõzítési problémák az emulátorokban (Read 17807 times)

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13431
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 3.0.10 Firefox 3.0.10
    • View Profile
    • http://enterprise.iko.hu/
Re: Idõzítési problémák az emulátorokban
« Reply #15 on: 2009.June.03. 20:43:31 »
ZT órát ki kell kapcsolni  :oops: akkor egész jó, de érdekes, hogy nem egyforma minden gép.
Az enyémen a 2-es egész jó, az egyes lassan megy lefelé. Kurczu gépén a 2-es megy lefele, 1-es gyorsabban.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4806
  • OS:
  • Linux (Suse) Linux (Suse)
  • Browser:
  • Konqueror 3.5.9 Konqueror 3.5.9
    • View Profile
Re: Idõzítési problémák az emulátorokban
« Reply #16 on: 2009.June.03. 20:56:51 »
ZT órát ki kell kapcsolni  :oops:
Ez igaz, már említettem, hogy a ZozoTools órája 313 sorra növeli az LPT méretét (bug ?), a teszt programok pedig az eredeti 312 sort tételezik fel :oops:
Quote
akkor egész jó, de érdekes, hogy nem egyforma minden gép.
Az enyémen a 2-es egész jó, az egyes lassan megy lefelé. Kurczu gépén a 2-es megy lefele, 1-es gyorsabban.
Tehát mindkét gépen a NICK a Z80-hoz képest valamivel gyorsabb a számítottnál. Olyan gép nincs, ahol az 1-es program felfelé fut :?:

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13431
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 3.0.10 Firefox 3.0.10
    • View Profile
    • http://enterprise.iko.hu/
Re: Idõzítési problémák az emulátorokban
« Reply #17 on: 2009.June.03. 22:48:34 »
Tehát mindkét gépen a NICK a Z80-hoz képest valamivel gyorsabb a számítottnál.
Akkor ez lehet az oka a korábban felvetett problémának? Mivel gondolom az emulátor az elméleti sebességgel futtatja a Nick-et.

Quote
Olyan gép nincs, ahol az 1-es program felfelé fut :?:
Megnéztem egy rakás gépet, de ilyet nem találtam! Az elöbb említett variációk fordulnak elõ, ill. egy gépen (az arab EP128) volt az, hogy az 1-es nagyon lassan futott lefelé, a 2-es pedig nagyon-nagyon-nagyon lassan felfelé (kb 20 másodperc alatt egy sor).

Offline IstvanV

  • EP addict
  • *
  • Posts: 4806
  • OS:
  • Linux (Suse) Linux (Suse)
  • Browser:
  • Konqueror 3.5.9 Konqueror 3.5.9
    • View Profile
Re: Idõzítési problémák az emulátorokban
« Reply #18 on: 2009.June.03. 23:33:35 »
Akkor ez lehet az oka a korábban felvetett problémának? Mivel gondolom az emulátor az elméleti sebességgel futtatja a Nick-et.
Nem, az emulátorban eddig 890625 Hz volt az alapértelmezett beállítás (mert 890625 / 57 = 15625, azaz a szabványos PAL sorfrekvencia), viszont az első tesztprogram 889846 Hz-re, a második pedig 890042 Hz-re van beállítva.

Az itt található kapcsolási rajz alsó részén látható áramkör állítja elő a Nick órajelét. A Nick "H/2" kimenetén a ~14 MHz-es órajel (14M) 1824-ed (= 16 * 57 * 2) része jelenik meg, a "PAL" bemenetre pedig az LM1889-ről 4433619 Hz frekvenciájú jel kerül. A "H2REF"-en pedig a "PAL" valamilyen mértékben leosztva jelenik meg. A "H/2" és a "H2REF" az U32-n keresztül vezérli a TR4/L2/C29 oszcillátort, és a két frekvenciának meg kell egyeznie.
Tehát ha jól értelmeztem a kapcsolási rajzot, akkor a "14M" órajel az pontosan 4433619 * 1824 / N Hz, de N még nem ismert :) Az első program szerint 568, mert ez az az egész szám, amely a legpontosabb eredményt adja. A második programban N=567.875 (az EP-n mért sebességből számított 567.87 1/8-ra kerekítve). Természetesen a 8 MHz és a 4.433619 MHz valójában nem egészen pontos, ezért szóródás van az egyes gépek között, és így továbbra is csak találgatni lehet :) :oops:

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13431
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 3.0.10 Firefox 3.0.10
    • View Profile
    • http://enterprise.iko.hu/
Re: Idõzítési problémák az emulátorokban
« Reply #19 on: 2009.June.04. 06:13:26 »
A "H/2" és a "H2REF" az U32-n keresztül vezérli a TR4/L2/C29 oszcillátort, és a két frekvenciának meg kell egyeznie.
Ráadásul az L2 még állítható is, ami nem tudom mit befolyásol a dologban...

Offline IstvanV

  • EP addict
  • *
  • Posts: 4806
  • OS:
  • Linux (Suse) Linux (Suse)
  • Browser:
  • Firefox 3.0.8 Firefox 3.0.8
    • View Profile
Re: Idõzítési problémák az emulátorokban
« Reply #20 on: 2009.June.04. 11:30:38 »
Ráadásul az L2 még állítható is, ami nem tudom mit befolyásol a dologban...
Talán csak annyit, hogy az oszcillátor csak kis frekvencia tartományban tud működni, és egyébként az L2/C29 szórása miatt az áramkör (amely gyakorlatilag egy PLL) esetleg nem tudna beállni a pontos frekvenciára.
A "PAL" és a "H2REF" pontos arányát meg lehet állapítani olyan "turbós" géppel is, amely a Z80/DAVE órajelét a 8 MHz helyett 4.43 MHz-ből állítja elő (feltéve, hogy az alacsony frekvencia nem okoz valamilyen problémát), bár akkora jelentősége talán nincs ennek a kérdésnek, hogy ezért érdemes legyen gépet átalakítani :)

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13431
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 3.0.10 Firefox 3.0.10
    • View Profile
    • http://enterprise.iko.hu/
Re: Idõzítési problémák az emulátorokban
« Reply #21 on: 2009.June.04. 11:40:18 »
A "PAL" és a "H2REF" pontos arányát meg lehet állapítani olyan "turbós" géppel is, amely a Z80/DAVE órajelét a 8 MHz helyett 4.43 MHz-bõl állítja elõ (feltéve, hogy az alacsony frekvencia nem okoz valamilyen problémát), bár akkora jelentõsége talán nincs ennek a kérdésnek, hogy ezért érdemes legyen gépet átalakítani :)
Csak egy forrasztás kipróbálni :-) szerintem floppyt nem fog tudni majd így olvasni, mint ahogy a 16Mhz-en járó WD-hez is kevés a 4 Mhz Z80 (6Mhz-en megy ha a várakozási ciklusok le vannak tilva, vagy 7.12Mhz)
Akkor már csak egy aránymegállapító progi kéne  :oops:

Offline IstvanV

  • EP addict
  • *
  • Posts: 4806
  • OS:
  • Linux (Suse) Linux (Suse)
  • Browser:
  • Firefox 3.0.8 Firefox 3.0.8
    • View Profile
Re: Idõzítési problémák az emulátorokban
« Reply #22 on: 2009.June.04. 11:54:56 »
Csak egy forrasztás kipróbálni :-) szerintem floppyt nem fog tudni majd így olvasni, mint ahogy a 16Mhz-en járó WD-hez is kevés a 4 Mhz Z80 (6Mhz-en megy ha a várakozási ciklusok le vannak tilva, vagy 7.12Mhz)
Akkor már csak egy aránymegállapító progi kéne  :oops:
Ez egyszerűen megoldható a fenti teszt program módosításával. Az üres ciklust és a NOP utasításokat be kell állítani, hogy a csík ne mozogjon, és akkor a ciklusok számából pontosan meghatározható az órajel.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4806
  • OS:
  • Linux (Suse) Linux (Suse)
  • Browser:
  • Firefox 3.0.8 Firefox 3.0.8
    • View Profile
Re: Idõzítési problémák az emulátorokban
« Reply #23 on: 2009.June.04. 12:37:28 »
Tesztprogramok 2.217 MHz-es Z80-hoz:
* nfrq1312.s (0.88 kB - downloaded 259 times.)
* nfrq2312.s (0.86 kB - downloaded 232 times.)
313 soros LPT-hez:
* nfrq1313.s (0.86 kB - downloaded 277 times.)
* nfrq2313.s (0.83 kB - downloaded 253 times.)
« Last Edit: 2009.June.04. 12:48:13 by IstvanV »

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13431
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 3.0.10 Firefox 3.0.10
    • View Profile
    • http://enterprise.iko.hu/
Re: Idõzítési problémák az emulátorokban
« Reply #24 on: 2009.June.06. 22:25:48 »
Mûködik! (Persze, ahogy várható volt, floppyt nem olvas.) Tulajdonképpen nem is rossz ötlet ez az anti turbo, pl a Tombs of Doom játszhatóságát határozottan javítja  :ds_icon_cheesygrin:

A teszteredmény: az 1-es verzió masszívan áll, a 2-essel pedig lassan fut felfelé.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4806
  • OS:
  • Linux (Suse) Linux (Suse)
  • Browser:
  • Konqueror 3.5.9 Konqueror 3.5.9
    • View Profile
Re: Idõzítési problémák az emulátorokban
« Reply #25 on: 2009.June.06. 22:43:05 »
A teszteredmény: az 1-es verzió masszívan áll, a 2-essel pedig lassan fut felfelé.
Akkor ez alapján úgy látszik, mégis az első tippem volt helyes, azaz a PAL frekvencia pontosan 568-al van osztva, és a Nick "ideális" órajele (17734475 / 4 / 568) * (2 * 57 * 16) Hz, és ennek megfelelően az emulátor "Video clock frequency" beállításának 889846-nak kell lennie 890625 helyett. Meglepő viszont, hogy ennek ellenére 4 MHz-es Z80 frekvenciánál már a 890042-t feltételező tesztprogram működik jobban a gépek többségén; talán az alkatrészek több gépen hasonló mértékben pontatlanok (pl. mert ugyanabból a sorozatból vannak), vagy más oka lehet ?
Mindenesetre köszönöm a segítséget :)

Offline szipucsu

  • EP addict
  • *
  • Posts: 7875
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 3.0.10 Firefox 3.0.10
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Idõzítési problémák az emulátorokban
« Reply #26 on: 2009.June.06. 23:26:35 »
talán az alkatrészek több gépen hasonló mértékben pontatlanok (pl. mert ugyanabból a sorozatból vannak)

Talán ha a gépek sorozatszáma mellé tesszük az eredményeket, ez kiderülhet. Gondolom legalábbis, bár ki tudja, lehet, hogy az egymáshoz közel esõ sorozatszámú gépekben nem ugyanabból a sorozatból vannak az alaktrészek... Bár minek tárolnának egy alkatrészt a polcon, hogy késõbb használják fel? :D
SOUND SOURCE 3,STYLE 16,LEFT 16,RIGHT 64,SYNC 2
SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 2
SOUND PITCH 25,SYNC 2
Videos

Offline IstvanV

  • EP addict
  • *
  • Posts: 4806
  • OS:
  • Linux (Suse) Linux (Suse)
  • Browser:
  • Konqueror 3.5.9 Konqueror 3.5.9
    • View Profile
Re: Idõzítési problémák az emulátorokban
« Reply #27 on: 2009.June.11. 22:56:22 »
Video RAM (64K) mód:
4 Mhz: 7:04, 6:58
6 Mhz: 5:11, 4:40
7.125 Mhz: 4:41, 3:53
Itt a nagy eltéréseket elsősorban az okozta, hogy a várakozás turbós gépeken 1 helyett 2 ciklus, és így a BASIC interpreter - amely nem a video RAM-ban, hanem ROM-ban van - nem a megfelelő sebességgel futott. Azonban már sikerült megvalósítani a 2 ciklus várakozást (amely 5000000 Hz-nél magasabb Z80 frekvenciánál automatikusan bekapcsol - az igazi gépen nem tudom, hogy pontosan milyen határ felett vált 1-ről 2 ciklusra a DAVE :?:), tehát a 2.0.7 verzió pontosabb lesz. :)
A video RAM időzítésén is sikerült javítani; itt azonban most azt feltételezem, hogy a NICK nem csak 4 MHz-es, hanem 8 MHz ciklussal is tudja késleltetni a Z80 órajelét, azaz gyakorlatilag fél ciklus felbontással. Ezt nem tudom ellenőrizni, hogy valóban így van-e, mindenesetre a tesztprogramok pontosabb eredményt adnak. Még azt kell beállítani, hogy az egyes utasításokon belül pontosan mikor történnek a memória hozzáférések, és az időzítés remélhetőleg jobb lesz, mint a régebbi verziókban. Viszont a korábban felvett demo file-okat valószínűleg nem lehet majd megfelelően lejátszani :oops:
Az OJ.BAS 64K-s konfigurációval futtatva és 889846 Hz video frekvenciát beállítva HL=1366 (néha 1367) eredményt ad 4 MHz Z80 órajelnél, és HL=1641-et 6 MHz-nél a módosított emulátorral (összehasonlításképpen az igazi gépen és régi emulátoron mért értékek itt találhatók).
« Last Edit: 2009.June.11. 22:59:40 by IstvanV »

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13431
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 3.0.10 Firefox 3.0.10
    • View Profile
    • http://enterprise.iko.hu/
Re: Idõzítési problémák az emulátorokban
« Reply #28 on: 2009.June.12. 00:08:38 »
tehát a 2.0.7 verzió pontosabb lesz. :)
Ez jól hangzik!

Offline IstvanV

  • EP addict
  • *
  • Posts: 4806
  • OS:
  • Linux (Suse) Linux (Suse)
  • Browser:
  • Konqueror 3.5.9 Konqueror 3.5.9
    • View Profile
Re: Idõzítési problémák az emulátorokban
« Reply #29 on: 2009.June.12. 14:41:30 »
HL=1366 (néha 1367) eredményt ad 4 MHz Z80 órajelnél, és HL=1641-et 6 MHz-nél a módosított emulátorral
A 7.12 MHz viszont nem jó, és a BASIC program sem pontos egyelőre. :(

Készítettem egy új tesztprogramot a video RAM időzítésének a tesztelésére:
    * vramtest.s (9.52 kB - downloaded 233 times.)
Ez egy a beépített joystick használatával változtatható ciklusban végez egy video RAM hozzáférést (így az utasításon belüli időzítés nem befolyásolja az eredményt), és kiírja a várakozás nélküli és a tényleges időtartamot Z80 ciklusokban. A mért érték stabilizálódására várni kell néhány másodpercet. A program módosítható memória írás, M1 olvasás, és NICK I/O port művelet tesztelésére is, bár nagy eltérések nincsenek: az írás időzítésében nincs változás, az M1 valamivel (max. 1-2 tized ciklus) gyorsabb, az I/O pedig szintén kis mértékben lassabb.
Eerdmények igazi gépen és emulátoron (4000000/889846/500000 Hz):

       EP   ep128emu ep128emu
              2.0.7   2.0.6
-----------------------------
46:   49.44   49.45   49.45
47:   49.44   49.45   49.45
48:   49.44   49.46   50.31
49:   53.93   53.94   53.94
50:   53.93   53.94   53.94
51:   53.93   53.94   53.94
52:   53.93   53.94   53.94
53:   58.25   58.44   55.55
54:   58.43   58.44   58.44
55:   58.43   58.44   58.44
56:   58.43   58.44   58.44
57:   58.45   58.50   59.08
58:   62.92   62.93   62.93
59:   62.92   62.93   62.93
60:   62.92   62.93   62.93
61:   62.92   62.93   62.93
62:   67.34   67.43   64.60
63:   67.41   67.43   67.43
64:   67.42   67.43   67.43
65:   67.42   67.43   67.43
66:   67.50   67.60   68.59
67:   71.91   71.92   71.92
68:   71.91   71.92   71.92
69:   71.91   71.92   71.92
70:   71.91   71.93   71.93
71:   76.37   76.42   73.67
72:   76.40   76.42   76.42
73:   76.40   76.42   76.42
74:   76.40   76.42   76.42
75:   76.58   76.92   77.18
76:   80.89   80.91   80.91
77:   80.89   80.91   80.91
78:   80.89   80.91   80.91
79:   80.90   80.91   80.91

Érdemes lenne ezeket megnézni turbós gépeken is.