Akkor bõvebben
Amikor a Dave perifériával kapcsolatos dolgot szándékozik csinálni,
Dave nem csinál semmit a perifériákkal.
Z80-at lekapcsolja az adatbuszról (van hogy meg is állítja)
Nem kapcsolja le, és nem állítja meg (*egy esetet kivéve)
és ezt a buszt használja a perifériákkal (azokhoz tartozó multiplexerekkel, tárolókkal) való kommunikációra.
Dave nem kommunikál a perifériákkal.
Az EP-ben csak két adatbusz van. Van egy a Nick és a videómemória között, és van az általános Z80-as.
A perifériákkal a Z80 kommunikál a saját adatbuszán. A perifériáknak a dolga, hogy saját címdekóderükkel felismerjék, hogy õket címzi a Z80, majd pedig le vagy rátegyék az adatot a buszról/ra.
A Dave-nek csak annyi a szerepe a dologban, hogy az alaplappal kapcsolatban álló dolgoknál elvégzi a címdekódolást, így megspórolva egy félmarék 74LS IC-t.
Tehát a Z80-nal párhuzamosan generál engedélyezõ jeleket a különbözõ cuccok számára, mindezt villámgyorsan, hogy a perifériáknak legyen idejük elvégezni az I/O mûveletet, mielõtt a a Z80 befejezi az
I/O ciklust.
I/O ciklus meghosszabítására van lehetõség a WAIT vonallal, de az az EP-ben nem használt.
* egy esetben állítja meg a Dave a Z80-at, memóriamûveleteknél, a BFh porton beállított várakozási érték alapján, minden memória olvasáskor, vagy csak utasítás olvasáskor (vagy nincs várakozás), ez tényleg a WAIT vonalon történik.
Gondolom Nick memória zsonglõrködésekor is hasonló "lekapcsolás" történik.
Itt tényleg történik lekapcsolás, a Dave generálja a VRAM jelet, amivel szól a Nicknek, hogy a Z80 a videómemóriához akar hozzáférni.
Ha a Nick nem dolgozik vele, akkor az U5,6,7 IC-ket vezérelve összekapcsolja a Z80-as adat és címbuszt a videómemóriával.
Ha meg dolgozik vele, akkor felfüggeszti a Z80 órajelét, amíg nem végez.
már értem, hogy egy POKE 56,201 (Megszakítás letiltás) kiadása a BASIC program elején mennyivel meggyorsítja a futást.
Az nem ezért gyorsítja, hanem azért mert kimarad az EXOS megszakításkezelõjének pár ezer utasítása.