[Main]
[Docs]
[Installs]
[Search]
[Team]
[Guestbook]
[Links]
Figyelés
Mi ez
A figyelés a WHDLoad olyan funkciója, ami az egyéni és a Cia regiszterek
ellenőrzését és hozzáférések naplózását végzi. Ha a Snoop
aktiválva van, minden hibás hozzáférés egy hozzáférési hibát fog létrehozni és
az installált program be lesz fejezve. Az ilyen hozzáférések:
- nemlétező regiszterekhez való hozzáférés
- olvasási hozzáférés a csak írható regiszterekhez
- írási hozzáférés a csak olvasható regiszterekhez
- hozzáférések a kori olvasású regiszterekhez
- byte írási hozzáférések (kivévé bltcon0l és aud*vol+1)
A strobe regiszterek olvashatók vagy írhatók. Az érvényes egyéni regiszterek
csoportja változik az OCS (Old ChipSet - A500, A1000, régi A2000), ECS (Enhanced ChipSet
- A600, új A2000, A3000) és AGA (Advanced Graphics - A1200, A4000) gépeken. Ez
hasznos lehet olyan hibák felderítéséhez, amelyeket régi programok okozhatnak
az új AGA regiszterekhez való hozzáférésnél.
Hogyan működik
Ha a Snoop be van kapcsolva, a WHDLoad az egyéni és a Cia regisztereket
érvénytelennek jelöli az MMU fordítási fában. Emiatt minden hozzáférés ezekhez
a regiszterekhez hozzáférési hiba kivétet eredményez. A WHDLoad saját kivét
kezelője fogja ezt kezelni. Először ellenőrzi, hogy a hozzáférés érvényes-e. Ha
a hozzáférés érvénytelen, a program be lesz fejezve. Ha a hozzáférés érvényes
és ha egy olvasási utasítás, akkor az emulálva lesz, és a program végrehajtása
folytatódik. Ha ez egy írási utasítás, a WHDLoad még el is menti az értékeket
egy belső tárolóba.
A kivét adminisztrációja miatt és az emuláció miatt a program végrehajtása
lelassulhat. Hogy mennyire, az függ a CPU típusától, a Chip memória típusától (16/32-bit)
és veremmutató állásától ha a Chip memória 32 bites (LongWord vagy nem).
Továbbá függ a hozzáférés típusától (Byte/Word/LongWord, olvasás/írás).
68030-on az írás gyorsabb mint az olvasás (mivel olvasásnál a stackframe 92
byte, írásnál 32 byte), 68060-on az olvasás gyorsabb, mivel az írás emulálása
eléggé összetett.
Gyors figyelési mód
A Snoop/S opció bekapcsolja a gyors figyelést. Az
olvasási hozzáférés nem lesz ellenőrizve. Nem lesznek speciális ellenőrzések
végrehajtva. Ez a mód hasznos lehet az egyéni regiszterek tartalmának
megszerzéséhez, pl. képek kimentéséhez az SP segítségével.
Copper lista átnéző
A WHDLoad 13-as verziója óta a copperlisták is ellenőrzésre kerülnek. A figyelő
akor lesz aktiválva, ha írás történik a coplc regiszterekhez, ha a copper
dma engedélyezve van, vagy egy installált program aktiválja a copper dma-t
a dmacon regiszter írásával. A figyelő követi a copperlistát és
ellenőrzi az összes Move utasítást a Snoop opció korlátozásainak
alkalmazásával (OCS/ECS/AGA). A Skip és Wait (kivéve CEND) utasítások mellőzve
lesznek. ha egy érvénytelen bejegyzést talál, az installált program kilép. A
figyelő a (copjmp) ágakat követi, érzékeli a hurkokat és 16 allistában
ellenőriz. A Move-ok a copperlistában egy belső egyéni regiszter fájlba lesz
írva, amely kiírásra kerül a WHDLoad kilépésénél. A figyelő nem aktív a gyors
figyelési módban.
Blitter prioritás ellenőrzése
Amikor a ChkBltHog/S opció aktiválva van, a WHDLoad ellenőrizni fogja hogy az
installált program bekapcsolja-e a BltHog bitet a dmacon
regiszterbe írással.
A Blitter prioritás problémákat okozhat néhány hardver konfiguráción nagy
blitter műveletek alatt (összes csatorna használata esetén).
Blitter méret ellenőrzes
Amikor ChkBltSize/S opció aktiválva van, a WHDLoad ellenőrizni fogja, hogy a blitter
nem fér-e hozzá bármilyen memóriához a BaseMem területen kívül.
Írási hozzáféréseknél a bltsize vagy a bltsizh ellenőrzi,
hogy a soros mód be van-e kapcsolva a bltcon1 regiszterben. Ha a soros
mód aktiválva van, megszakítja a méretellenőrzést.
Egyébként a WHDLoad kiszámolja az első és az utolsó word-öt minden egyes aktív DMA
csatorna hozzáféréséhez. Ha egy cím kívül van a BaseMem területén, a program
ki fog lépni egy kérdezővel. A számolás úgy van tervezve, hogy működjön minden
módban (növekvő/csökkenő, pozitív/negatív modulo, páratlan modulo/mutatók).
Jegyezd meg, hogy a sor rajzolási módja nem lesz ellenőrizve és az összes blitter
regiszter írható a copper által ha a copcon be van állítva.
Blitter várakozás ellenőrzés
Ha a ChkBltWait/S opció aktiválva van, a WHDLoad az utasítás nyomkövetést fogja
használni annak ellenőrzésére, hogy az installált program rendesen vár-e a
blitterre az új blitter művelet megkezdése előtt. Egy belső változót használ,
ami a blitter állapotát jelzi. A változó akkor lesz beállitva, amikor írási
hozzáférés történik a bltsize vagy a bltsizh regiszterekhez
és törölve ha olvasási hozzáférés törtenik a dmaconr regiszterhez.
Minden blitter regiszter írási műveleténél a belső változó értéke ellenőrzésre
kerül, és ha az azt mutatja, hogy egy blitter feladat fut, akkor az installált
program ki fog lépni és a WHDLoad ki fogja írni az utolsó elindított blitter
művelet PC-jét az aktuális hozzáféréssel együtt.
Két fő hátulütője van ennek a lehetőségnek. Először is a blitter használata
a copperen keresztül nincs ellenőrizve, másodszor a blitter megszakítások ok
nélküli hibákat generálhatnak az ellenőrző rutinoknál.
A jövő
Tervbe vannak véve olyan funkciók, mint a Leállítás és Ikonizálás.
Ezekhez a Figyelés alapvető fontosságú. Ezért javasolt az installálók
készítőinek számára, hogy ellenőrizzék az installálóikat a Figyelés
funkcióival, a jövőbeni kompatibilitás érdekében.
Követelmények
Egy MMU szükséges a Figyelés funkcióhoz. A WHDLoad-nak használnia kell az MMU-t, ezért az MMU/S opciót be kell kapcsolni minden 68030-as gépen.
Korlátozások
- 68020 + 68851
- ez a hardver jelenleg nem támogatott
- 68030
- nincsenek ismert korlátozások
- 68040
- ez a hardver jelenleg nem támogatott
- 68060
- movem utasítás érvénytelen regiszterekhez férhet hozzá hozzáférési
hiba kivét létrehozása nélkül, ez azért lehetséges mert csak az első hozzáférés
lesz ellenőrizve
- move <Cia/Egyéni regiszter>,sr hibásan lesz végrehajtva, ha
megváltoztatja az állapotregiszter supervisor részét, a supervisor rész
változatlan marad
- bármilyen (ssp)+ vagy -(ssp) együtt egy Cia vagy egyéni
regiszterhez tartozó írási hozzáféréssel nem kezelhető stackframe problémák
miatt, a WHDLoad érzékeli az ilyen hozzáféréseket és kilép a megfelelő
kérdezővel
- az utasítások nem férhetnek hozzá egynél több regiszterhez egy időben,
ez azt jelenti, hogy az olyan kódok, mint a move.b ($dff006),($bfd800)
nem kezelhetőek, ha ilyen kódot talál a WHDLoad, egy hozzáférési hiba kérdezőt fog kirakni
[Main]
[Docs]
[Installs]
[Search]
[Team]
[Guestbook]
[Links]