[#6]
Re: Przerwania - poziom 3
@asman,
post #4
@zilog, @teh_KaiN, @asman
Nie używam AddIntServer, robię obsługę bez systemu. Do INTENA wpisuję $C070 czyli pozwalam na wszystkie 3 źródła z poziomu 3.
Dzięki za wszystkie wyjaśnienia i link z opisem na English Amiga Boardzie.
@asman Ja to rozumiem, że jak wskoczy do mojej procedury z bitem od Blittera i ja to potwierdzę (move.w #$40,INTREQ) i jesli w tym czasie pojawilo sie zgloszenie od Vertb to natychmiast po wyjsciu z procedury przerwania (gdzie obsłużyłem blitter) nastąpi do niej ponowne wskoczenie z zapalonym bitem od Vertb. I w zasadzie procedura od Kalms, która jest w linku który podałeś, by to potwierdzała.
Natomiast pierwszy raz się spotykam z "move.w #$2000,sr".
Ja obsługuję przerwanie tak jak pisze teh_Kain i jak jest w zasadzie u Kalmsa, sprawdzam po kolei bity, potwierdzam wykonanie w INTREQ odpowiednim bitem i wykonuję jakiś tam mój kod.
Tyle że:
1. zastanawiałem się czy od razu po obsłużeniu np. Vertb wychodzic czy sprawdzac kolejne możliwosci (blitter, copper), Kalms pokazuje że nie, że jak obsłużylismy jedno źródło to wychodzimy. Dodam tu, że jeszcze nie wszystko ze szczegółów jego opisu rozumiem.
2. Zastanawiałem się też czy ma znaczenie w którym momencie w procedurze obsługi potwierdzać wykonanie poprzez zapis do INTREQ i wydaje mi się, że jeśli chodzi o VERTB i Coppera to chyba nie ma znaczenia to znaczy czy wywołam:
#$20,INTREQ
bsr mój_kod_który_coś_tam_robi
rte
czy też
bsr mój_kod_który_coś_tam_robi
#$20,INTREQ
rte
Ja rozumiem, że działa to tak, że procesor jest zajęty wykonywaniem tego kodu obsługi przerwania i nie wskoczy w tym czasie do tej procki póki nie wyjdzie z obecnej obsługi :D
Ale w przypadku Blittera ma to znaczenie, gdy bit BLTPRI jest 1 (pełny priorytet blitera) to muszę wykonać potwierdzić wykonanie przerwania (#$40,INTREQ) przed startem Blittera - inaczej program nie działa. Wydaje mi się to logiczne, ale może możecie coś dodać tutaj ?
Ostatnia aktualizacja: 20.11.2023 09:49:44 przez zbrożo
Ostatnia aktualizacja: 20.11.2023 09:50:55 przez zbrożo