[Main] [Docs] [Installs] [Search] [Team] [Guestbook] [Links]

Nuuskinta

Mitä se on

Nuuskinta on WHDLoadin toiminto, joka vahvistaa ja kirjaa Custom- ja CIA-rekistereiden käyttöä. Jos Snoop on aktivoituna, kaikki väärät käytöt luovat Access Faultin ja asennettu ohjelma pysäytetään. WHDLoad näyttää requester-ikkunan, joka selittää virheen syyn.

Custom-rekisterit

Kaikki custom-rekisterien luku- ja kirjoituskutsut varmistetaan. Virheellisiä kutsuja ovat:Strobe-rekistereitä voidaan lukea tai kirjoittaa. Kelvollisten Custom-rekisterien joukko eroaa sen mukaan, onko käytössä OCS (Old ChipSet - A500, A1000, vanha A2000), ECS (Enhanced ChipSet - A600, uusi A2000, A3000) vai AGA (Advanced Graphics - A1200, A4000). Tämä on hyödyllistä erityisesti etsittäessä vanhoista ohjelmista bugeja, jotka johtuvat määrittelemättömistä uusien AGA-rekisterien käytöistä.

Funktiolla resload_Control ja tunnisteilla WHDLTAG_CUST_DISABLE/READ/STROBE/WRITE voidaan muokata WHDLoadin sisäistä kokoonpanoa sen suhteen, mitä rekistereitä voidaan lukea/kirjoittaa. Tämän avulla voidaan ohittaa virheelliset kutsut tai tunnistaa oikeat kutsut. Tätä pitää käyttää vain kehityksen aikana, ei julkaistuissa Slaveissa.

CIA-rekisterit

CIA-rekisterien osalta varmistetaan vain kirjoituskutsut. Tämä tarkoittaa, että lukukutsuja olemattomiin rekistereihin muistialueella $bfd000...$bfefff ei havaita. WHDLoad tallentaa sisäisesti kaikkien kirjoituskutsujen kirjoitusarvon. Joillakin CIA-rekistereillä on erityisiä tarkistuksia riippuen kirjoitetusta arvosta:

osoite rekisteri tarkistus
$bfe001 ciaa.ciapra Overlay-bitin #0 asetus on kielletty
$bfe201 ciaa.ciaddra biteillä #6-7 voi olla mikä tahansa arvo (käytetään joypad-ohjaimelle), alempien bittien tulee olla %000011
$bfe801 ciaa.ciatodlow lue-muokkaa-kirjoita-kutsuja (esim. bchg) ei sallita, jos ALARM-bitti on asetettu ciaa.ciacrb:ssä (tarkistetaan vain 68060:lla)
$bfe901 ciaa.ciatodmid
$bfea01 ciaa.ciatodhi
$bfed01 ciaa.ciaicr lue-muokkaa-kirjoita-kutsuja (esim. bchg) ei sallita (tarkistetaan vain 68060:lla)
$bfd100 ciab.ciaprb bittejä MOTOR #7, SELECT #3-6 ja STEP #0 ei saa tyhjentää, muita bittejä voidaan muuttaa; tällä havaitaan levyasemien käyttö
$bfd200 ciab.ciaddra kirjoitetun arvon tulee olla %11000000
$bfd300 ciab.ciaddrb kirjoitetun arvon tulee olla %11111111
$bfd800 ciab.ciatodlow lue-muokkaa-kirjoita-kutsuja (esim. bchg) ei sallita, jos ALARM-bitti on asetettu ciab.ciacrb:ssä (tarkistetaan vain 68060:lla)
$bfd900 ciab.ciatodmid
$bfda00 ciab.ciatodhi
$bfdd00 ciab.ciaicr lue-muokkaa-kirjoita-kutsuja (esim. bchg) ei sallita (tarkistetaan vain 68060:lla)

Miten se toimii

Jos Snoop on käytössä, WHDLoad merkitsee Custom- ja CIA-rekisterien osoitteet epäkelvoiksi/kirjoitussuojatuiksi MMU:n käännöspuuhun. Tämän vuoksi kukin Custom- tai CIA-rekisterin käyttö aiheuttaa Access Fault -poikkeuksen. WHDLoadin poikkeuskäsittelijä käsittelee poikkeuksen. Ensin se tarkistaa, onko käyttö kelvollinen. Jos käyttö ei ole kelvollinen, ohjelma pysäytetään. Jos käyttö on kelvollinen ja lukuoperaatio, se emuloidaan ja ohjelman suoritus jatkuu. Jos se on kirjoitusoperaatio, WHDLoad tallentaa lisäksi kirjoitetun arvon sisäiseen taltioon.
Poikkeuksen ja emulointijakson tehonkulutuksen vuoksi ohjelman suoritus hidastuu. Hidastuminen riippuu suorittimen tyypistä, Chip-muistin tyypistä (16/32-bittinen) ja Stackpointerin kohdistuksesta 32-bittisessä Chip-muistissa (LongWord-kohdistettu vai ei). Se riippuu myös käytön tilasta (Byte/Word/LongWord, Luku/Kirjoitus). 68030:llä kirjoitus on nopeampaa kuin luku (koska luettaessa pinokehys on 92 tavua, kirjoitettaessa 32 tavua), 68060:llä luku on nopeampaa, koska kirjoituksen emulointi on mutkikkaampaa.

Fast Snoop -tila

Valinta Snoop/S ottaa nopean nuuskinnan käyttöön. Lukukäyttöjä ei tarkasteta. Erikoistarkastuksia ei tehdä. Tämä tila voi olla hyödyksi, jos halutaan custom-rekisterien sisältö, esim. kuvan tallentamiseen SP:llä.

Copper List -skanneri

WHDLoadin versiosta 13 alkaen myös copperlistat tarkistetaan. Skanneri käynnistyy, jos coplc -rekistereihin kirjoitetaan Copper DMA:n ollessa käytössä, tai jos asennettu ohjelma ottaa Copper DMA:n käyttöön kirjoittamalla dmacon -rekisteriin. Skanneri seuraa copperlistoja ja tarkistaa kaikki Move-käskyt ottamalla huomioon Snoop-valinnan rajoitukset (OCS/ECS/AGA). Skip- ja Wait (paitsi CEND) -käskyt jätetään huomiotta. Kun se löytää epäkelpoja kirjauksia, asennettu ohjelma pysäytetään. Skanneri seuraa haaroja (copjmp), tunnistaa silmukat ja tarkistaa jopa 16 alilistaa. Copperlistien Move-käskyt tallennetaan sisäiseen Custom-rekisteritaltioon, joka dumpataan WHDLoadista poistuttaessa. Skanneri ei ole toiminnassa Fast Snoop -tilassa.

Ääniosoitinten tarkistus

Kun valinta ChkAudPt/S on käytössä, WHDLoad tarkistaa, että asennettu ohjelma kirjoittaa äänen Custom DMA-osoittimiin vain kelvollisia arvoja. Kelvollinen tarkoittaa, että osoitin on BaseMemin sisällä eikä 0. Vain long-kirjoitusoperaatiot tarkistetaan. Word-kirjoituksia ei tarkisteta. Tämä tarkistus voi olla hyödyllinen etsittäessä ongelmia äänen toistorutiineista.

Blitterin prioriteettitarkastus

Kun valinta ChkBltHog/S on käytössä, WHDLoad takristaa, että asennettu ohjelma ei ota BltHog -bittiä käyttöön kirjoittamalla dmacon -rekisteriin. Blitterin prioriteetti voi aiheuttaa ongelmia tietyillä laitteistokokoonpanoilla suurten blitteritoimintojen yhteydessä (kaikki kanavat käytössä).

Blitterin kokotarkistus

Kun valinta ChkBltSize/S on käytössä, WHDLoad tarkistaa etteivät blitterin käskyt käytä muistia BaseMemin ulkopuolella. Kirjoitettaessabltsize- tai bltsizh- rekistereihin, se tarkistaa, onko viivatila käytössä bltcon1:ssä. Jos viivatila on käytössä, kokotarkistus peruutetaan. Muuten WHDLoad laskee kunkin aktivoidun DMA-kanavan ensimmäisen ja viimeisen sanan. Jos osoite on BaseMemin ulkopuolella, ohjelma pysäytetään ja saadaan ilmoitus. Laskutoimitus on suunniteltu toimimaan kaikissa tiloissa (nouseva/laskeva, positiivinen/negatiivinen modulo, parittomat modulot/osoittimet).
Muista, että viivanpiirtotilaa ei tarkisteta ja myös copper voi kirjoittaa kaikkiin blitterin rekistereihin, jos copcon on asetettu.

Blitterin odotustarkistus

Kun valinta ChkBltWait/S on käytössä, WHDLoad käyttää käskynseurantaa vahvistamaan, että asennettu ohjelma odottaa blitterin olevan valmis ennen uuden blitteritoiminnon aloittamista. Se käyttää sisäistä muuttujaa, joka edustaa blitterin työskentelytilaa. Muuttuja asetetaan, kun bltsize- tai bltsizh- rekisteriin kirjoitetaan ja tyhjennetään, kun dmaconr- rekisteri luetaan. Kullakin blitterirekisterin lukukerralla tarkastetaan sisäisen muuttujan arvo. Jos se ilmaisee käynnissä olevaa blitterioperaatiota, asennettu ohjelma pysäytetään ja WHDLoad ilmoittaa viimeisen käynnistetyn blitterioperaation PC:n itse toiminnon kanssa.
Tässä ominaisuudessa on kaksi merkittävää pullonkaulaa. Ensinnäkin copperin kautta tapahtuvaa blitterin käyttöä ei tarkisteta ja toisekseen blitterin keskeytysten käyttö aiheuttaa tarpeettomia virheilmoituksia.

Väripurkaustarkistus

Kun valinta ChkColBst/S on aktivoituna, WHDLoad tarkistaa, että color-bitti on asetettuna kirjoitettaessa custom.bplcon0-rekisteriin. Jotkin laitteet, erityisesti flickerfixerit, vaativat tämän bitin asettamista, jotta videosignaali näkyy oikein. Tämä bitti pitäisi aina asettaa, että saavutetaan paras yhteensopivuus. Suorat kirjoitukset rekisteriin custom.bplcon0 sekä copperlistojen kautta tehdyt kirjoitukset tarkistetaan.

Copperin ohjauksen tarkistus

Kun valinta ChkCopCon/S on aktivoituna, WHDLoad tarkistaa, että bitti #1 ei ole asetettuna kirjoitettaessa custom.copcon-rekisteriin. Tämä bitti ottaa käyttöön toiminnon, jolla Copper voi kirjoittaa Blitterin rekistereihin. Ajoittain voi olla tarpeen tunnistaa, käyttävätkö ohjelmat Copperia ohjaamaan DMA-toimintaa.

Tulevaisuus

Suunnitelmissa on toteuttaa ominaisuuksia kuten pysäytys ja kuvakkeeksi pienennys. Näihin Snoop on tärkeä vaatimus. Siksi suositellaan, että asennusohjelmien tekijät tarkistavat asennusohjelmansa Snoopilla, jotta yhteensopivuus varmistuu myös tulevaisuudessa.

Vaatimukset

Snoop-toiminto vaatii MMU:n. WHDLoadin on myös käytettävä MMU:ta, joten MMU/S:n on oltava käytössä 68030-koneilla.

Rajoitukset


[Main] [Docs] [Installs] [Search] [Team] [Guestbook] [Links]