Es ezzel a hangmegszakos modszernel mi limitalja a sebesseget az altalad megnevezett 8770 bit/s -ses sebessegre ?
Az, hogy a legrosszabb esetben a betöltő két bit feldolgozása között kb. 300 Z80 ciklust használ fel, ezért a legnagyobb frekvencia 250000 / 19, azaz ~13158 Hz lett, ami 304 Z80 ciklus. Ez az időtartam egy '0' bit hossza, az '1' bit két időegység, így lesz az átlagos sebesség (50-50% eloszlást feltételezve) 8770 bit/s körüli érték.
A további gyorsításra, mint említettem, több lehetőség is van:
- várakozások letiltása (ezzel talán 15% körüli javulást lehetne elérni, esetleg valamivel többet is, ha sok az M1 olvasás)
- keretcsíkozás letiltása (~15 ciklus a NICK port miatti várakozást is figyelembe véve)
- az ellenőrző összeg számításának egyszerűsítése (jelenleg 47 ciklus várakozással, 39 ciklus várakozás nélkül)
- lassabb időzítés vagy várakozás a byte határokon - bonyolultabb, de nem lenne minden bit a legrosszabb esetnek megfelelően lassú
A csak Z80-as időzítés a DAVE programozásra fordított idő elkerülése miatt lehetne valamivel gyorsabb, de nehezebb jól megoldani.
Mivel forditasz egyebkent, mik ezeke a forrasok, amiket attacsolsz ?
Ebben a csomagban taláható egy "sjasm.exe" (illetve Linuxra "sjasm-linux") nevű file. Ezzel lefordítható a forráskód: a használata a parancssorban "sjasm FORRÁSFILE KIMENETI_FILE" (az utóbbi nem kell, ha a forráskód tartalmaz "output" direktívát - ha nincs egyik sem, akkor a forrásfile kiterjesztését ".out"-ra cserélve írja a lefordított file-t). Fordításkor létrejön egy .lst kiterjesztésű lista file is, amely a debugger használatakor lehet hasznos.
A Dave-s módszernek viszont az a elönye, hogy nem függ a memóriavárakozások állítgatásától. És ha lehetne berakni hasonló órajel detectálást, mint a hanglejátszóba, akkor mindenféle turbós géppel is müködne.
Memóriavárakozás nélkül a betöltőben a DAVE frekvenciakódot talán célszerű lenne 24-ről 25-re növelni a gyorsabb utasítások miatt; elvileg 28.5/250000 másodperc után kellene megszakításnak lennie, de ebből levontam a megszakítás állapot olvasása és a számláló újraindítása közötti időt, és még egyet mert a számláló futásideje nem N/250000, hanem (N+1)/250000 másodperc.
Az viszont tény, hogy ennél a módszernél egyszerűbben lehet állítani a sebességet, legalábbis a program lehetőségeinek a határáig.
Már csak valami jól használható EXOS bővítőt kellene írni
A mondatod masik reszet viszont total nem ertem, ha egyszer megszak, akkor az mar proci orajel fuggetlen, nem ? Tehat nem kell mar bele egyeb orajel detektalas, ha egyszer nem prociorajellel, hanem megszakkal merunk, akkor az nem lesz orajelfuggo. Nem ?
A turbós gépeken a DAVE (és így a megszakítás) is ugyanolyan arányban gyorsul, csak a NICK órajele marad fix.