Welcome, Guest. Please login or register.


Author Topic: Lua scriptek fejlesztése (Read 73975 times)

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14722
  • Country: hu
    • http://enterprise.iko.hu/
Re: Lua scriptek fejlesztése
« Reply #45 on: 2009.October.26. 23:50:23 »
Igen :oops:
Legközelebb gyakrabban nyomogatom a Save-t a Run elött  :oops:

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14722
  • Country: hu
    • http://enterprise.iko.hu/
Re: Lua scriptek fejlesztése
« Reply #46 on: 2009.October.30. 20:46:21 »
Itt tart a dolog, hogy kiírja az egyes meghajtókhoz tartozó leíróblokk címét, ill. a kezelõ program címét.
Mit lehetne egyszerûbben?  :oops:

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Lua scriptek fejlesztése
« Reply #47 on: 2009.October.30. 21:39:54 »
Mit lehetne egyszerûbben?  :oops:

Eddig semmi jelentőset :)

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14722
  • Country: hu
    • http://enterprise.iko.hu/
Re: Lua scriptek fejlesztése
« Reply #48 on: 2009.October.30. 23:20:26 »
Valamit már csinál :-)

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Lua scriptek fejlesztése
« Reply #49 on: 2010.May.23. 00:03:33 »
CPU fogyasztást kijelző script (nem tudom, hasznos-e ez valakinek):
  [ Guests cannot view attachments ]
Ez egy a script elején táblázatban megadható rutin(ok összes) átlagos CPU használatát írja ki százalékban a státuszsorba. A táblázat minden eleme egy öt elemű táblázat, amelyben a belépési (ezt már számolja) és a kilépési (ezt már nem) utasítás címe található szegmens, cím formátumban, és az extra Z80 ciklusok száma (amely lehet például a már nem számolt kilépési utasítás időtartama). Beállítható a kijelzés gyakorisága és a Z80 és video órajel is.
A példa a Super Hero átirat teszt verziójában jelzi ki a betöltő emulációs és magszakítási kódjának a CPU használatát.

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14722
  • Country: hu
    • http://enterprise.iko.hu/
Re: Lua scriptek fejlesztése
« Reply #50 on: 2010.May.23. 00:14:20 »
CPU fogyasztást kijelzõ script (nem tudom, hasznos-e ez valakinek):
Szerintem jól fog ez még jönni!

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14722
  • Country: hu
    • http://enterprise.iko.hu/
Re: Lua scriptek fejlesztése
« Reply #51 on: 2010.June.11. 18:40:27 »
Olyan scriptet lehetne csinálni, ami megmondja, hogy egy subrutin hány órajel ciklus alatt fut le?

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Lua scriptek fejlesztése
« Reply #52 on: 2010.June.11. 19:39:48 »
Olyan scriptet lehetne csinálni, ami megmondja, hogy egy subrutin hány órajel ciklus alatt fut le?

[ Guests cannot view attachments ]

Ez ugyan nem ciklusokban, hanem ezredmásodpercekben írja ki, de remélhetőleg használható (illetve könnyen átalakítható :)). Az időmérés felbontását a getVideoPosition() függvény határozza meg, azaz EP-nél 889846 Hz, CPC-n 1 MHz (de ott egyébként is minden utasítás egész számú ciklus ezen a frekvencián), Spectrumon pedig pixel felbontású, azaz pontos értéket ad Z80 ciklusokban is. A Step gombot kell használni az elindítása után.

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14722
  • Country: hu
    • http://enterprise.iko.hu/
Re: Lua scriptek fejlesztése
« Reply #53 on: 2010.June.11. 20:23:38 »
Ez ugyan nem ciklusokban, hanem ezredmásodpercekben írja ki, de remélhetõleg használható
Köszi! A feladatra így is teljesen jó! Arra vagyok kíváncsi, hogy egy bizonyos funkciót különbözõ módokon programozva, melyik a gyorsabb, és mennyi a különbség?

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14722
  • Country: hu
    • http://enterprise.iko.hu/
Re: Lua scriptek fejlesztése
« Reply #54 on: 2010.June.11. 22:29:02 »
Ez a script a memória várakozások hatásait is jól kell mérje?

Mert egy érdekes anomáliával találkoztam:
      - ha 1, akkor várakozás csak M1 olvasásnál - ez az alapértelmezett mód. Az M1 olvasás a Z80 utasítások elsõ byte-ját jelenti; DDh, EDh, és FDh prefixnél a prefix utáni utasításbyte is M1 olvasásnak számít
Ez alapján azt vártam, hogy egy sok-sok LDI utasítást tartalmazó rutin jelentõsen lassul az OUT 191,4 hatására. De az össz rutinra nézve kb csak annyi különbség volt mint az LDIR-es változatnál, én bénáztam el valamit, vagy az LDIR is generál minden körben M1 ciklust?

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Lua scriptek fejlesztése
« Reply #55 on: 2010.June.11. 23:02:00 »
Ez a script a memória várakozások hatásait is jól kell mérje?

Természetesen igen, mert a vízszintes video pozíció változásai alapján méri az időt (ezért kell Step módban futtatni, vagy minden címre töréspontot beállítani). Legfeljebb az lehet probléma, hogy csak egy-két utasításból álló kódnál nem elég pontos.

Quote
Mert egy érdekes anomáliával találkoztam:Ez alapján azt vártam, hogy egy sok-sok LDI utasítást tartalmazó rutin jelentõsen lassul az OUT 191,4 hatására. De az össz rutinra nézve kb csak annyi különbség volt mint az LDIR-es változatnál, én bénáztam el valamit, vagy az LDIR is generál minden körben M1 ciklust?

Ha az LDI vagy LDIR által olvasott és/vagy írt terület a video memóriában van, akkor az megváltoztathatja az időzítést. LDI utasításnál például ha a DE és a HL is video memóriára mutat, de az LDI nem video memóriában van, akkor a várakozási módtól függetlenül kb. 22.5 ciklus lesz több egymást követő LDI utasítás átlagos futásideje (a várakozás nélküli változat csak többet vár a video RAM-ra).

Az LDI utasítás részletes időzítése:

4 (M1: EDh olvasása) + 4 (M1: A0h olvasása) + 3 (olvasás HL címről) + 3 (írás DE címre) + 2 (HL, DE növelése - illetve ezek talán már a memóriaműveletek közben történnek, BC csökkentése, jelzőbitek állítása)

A tényleges olvasás vagy írás (az adatbusz mintavételezése) az M1 műveleten belül 2.0 ciklusnál történik a 4-ből, a normál memóriaműveletnél 2.5 ciklusnál a 3-ból, és I/O műveletnél 3.5 ciklusnál a 4-ből. A /WAIT bemenetet a Z80 az M1 és normál memória műveletnél is 1.5 ciklusnál figyeli, I/O műveletnél pedig 2.5 ciklusnál:

[ Guests cannot view attachments ]         [ Guests cannot view attachments ]         [ Guests cannot view attachments ]

Az LDIR időzítése azonos az LDI-vel, ha a végrehajtásával a BC értéke 0-ra csökken. Egyébként még a fent leírt 16 ciklus után van további 5 ciklus, ami gyakorlatilag relatív ugrást végez vissza az LDIR utasításra, amelyet aztán a Z80 újra beolvas a memóriából.
« Last Edit: 2010.June.12. 10:51:47 by IstvanV »

Offline Lacika

  • EP addict
  • *
  • Posts: 3191
  • Country: hu
    • http://www.ep128.hu
Re: Lua scriptek fejlesztése
« Reply #56 on: 2010.June.12. 09:55:27 »
Az idődiagrammok honnan vannak?
Kicserélném az itt látható rosszabb minőségű képeket.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Lua scriptek fejlesztése
« Reply #57 on: 2010.June.12. 10:05:03 »
Az idődiagrammok honnan vannak?
Kicserélném az itt látható rosszabb minőségű képeket.

Ebből a PDF file-ból vannak (az ep128.hu-n ennek a magyar fordítása található ?), amely megtalálható ezen az oldalon sok más Z80 dokumentáció között.
« Last Edit: 2010.June.12. 10:09:00 by IstvanV »

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14722
  • Country: hu
    • http://enterprise.iko.hu/
Re: Lua scriptek fejlesztése
« Reply #58 on: 2010.June.12. 10:50:17 »
Az LDIR idõzítése azonos az LDI-vel, ha a végrehajtásával a BC értéke 0-ra csökken. Egyébként még a fent leírt 16 ciklus után van további 5 ciklus, ami gyakorlatilag relatív ugrást végez vissza az LDIR utasításra, amelyet aztán a Z80 újra beolvas a memóriából.
Ez megválaszolta a következõnek szánt kérdésemet: mitõl lassul be brutálisan az LDIR, ha az utasítás kódja a videó memóriába kerül. Naivan eddig azt hittem, csak egyszer olvassa be a Z80  :oops: és így akkor megúszhatóak a várakozások.
De így akkor egyértelmûen az jön ki, hogy minden esetben gyorsabb a kiírt LDI LDI LDI... sorozat, mint az LDIR. Persze bizonyos mennyiség felett elég memória pazarló ez a módszer :-)

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Lua scriptek fejlesztése
« Reply #59 on: 2010.June.12. 12:44:14 »
  * subrtimer.lua (0.99 KB - downloaded 5 times.)

Kisebb javítás: a "callTime" paramétert az eredeti verzió nem vette figyelembe.
  [ Guests cannot view attachments ]