Copy Link
Add to Bookmark
Report

Så här gör man raster interrupts på ST:n

atari's profile picture
Published in 
atari
 · 29 Dec 2020

Så här gör man raster interrupts på ST:n
Av Mike Westwood 890415

För att förså följande text så är det en förutsätning att ni har en bok som heter ATARI ST INTERNALS eller någon annan där det finns en förklarning på alla register i MFP:n och att du kan assembler någorlunda.

För att göra en raster interrupt på ST sä kan man använda sig av ett chip som heter MFP. I den finns det 4 olika timers, A,B,C och D. När man gör raster interrupts så använder man timer B. I MFP:n så finns det olika register som man styr interrupterna med och dom ska vi använda för att få igång en raster interrupt.

Först av allt så ska man stänga av alla andra interrupts utom just timer B som vi ska använda. Detta gör men genom att sätta alla bitarna till noll i IERA och IERB utom timer B biten som ska vara på. Sen måste man sätta på timer B i mask registret, med vilken man maska av interrupter även om dom är igång, genom att sätta på bit 1.

Sen måste man ju också tala om hur ofta det ska inträffa en interrupt, det gör man med timer B data registret, i vårat fall så vill vi att våran interrupt ska utföras varje raster linje så vi slänger in en etta där. Vill man att det ska inträffa en raster interrupt t.ex. varje tionde raster linje så är det bara att slänga in tio i det registret.

Sen ska man ju tala om vart datorn hoppar vid varje HBL interrupt, HBL kallas raster interrupts på ST:n, det gör man genom att ändra en pekare som finns på $120. Man slänger in adressen på sin egen HBL rutin in i $120. Varje gång en HBL interrupt utförs så stängs timer B av för att det inte ska kunna inträffa en ny interrupt mitt i HBL rutinen, så man måste sätta på timer B i slutet av sin HBL rutin genom att sätta bit 1 till noll i ISRA.

För att kunna tajma sitt raster så måste man på något sätt veta när raster strålen är på första raden, högst upp på skärmen. Detta gör man med VBL interrupten. Det är en interrupt som inträffar varje gång raster strålen är längst ner på skärmen och ska hoppa upp igen. I den kan man t.ex nollställa en räknare som man har för att räkna var på skärmen rasterstrålen befinner sig, genom att plussa på med ett vid varje HBL interrupt. Denna interrupt är igång hela tiden och datorn hoppar till sin egen rutin vid varje interrupt. För att veta vart den ska hoppa så kollar den i $70 efter en adress och hoppar dit. Normalt så ligger där en adress som pekar på datorn egen VBL rutin, men om man lägger in en pekare där som pekar till sin egen rutin så får man sin egen rutin utförd vid varje VBL interrupt.

Detta är i princip allting man behöver för raster interrupts. Men för att få ett funkande program som man kan avsluta så måste man spara alla värden i MFP:n som man använder och återställa dessa när man avslutar programmet, och så måste man köra programmet i suprvisor mode för MFP registren ligger i skyddat minnes utrymme.

Om ni har några frågor eller andra synpukter på detta så är det bara att skriva ett brev till mig.

Jag har inte gjort nägot ex. prog , utan ni får själv försöka först, sedan om ni kör fast sä kan jag lägga in ett exempel program, om det är ett allmänt önskemål.

← previous
next →
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT