SYSVBL: Różnice pomiędzy wersjami

Z Atariki
Przejdź do nawigacji Przejdź do wyszukiwania
Mono (dyskusja | edycje)
m →Faza II: naprawiony link
m unlink
Linia 3: Linia 3:
Systemowa procedura obsługi przerwania synchronizacji pionowej ([[VBL]]). Znajduje się w pamięci ROM, punkt wejścia w [[Tablica skoków|tablicy skoków]] jest pod $E45F. Normalnie uruchamiana jest przez procedurę wstępną obsługi [[NMI]], która w tym celu wykonuje skok pośredni przez wektor VVBLKI ($0222-$0223).
Systemowa procedura obsługi przerwania synchronizacji pionowej ([[VBL]]). Znajduje się w pamięci ROM, punkt wejścia w [[Tablica skoków|tablicy skoków]] jest pod $E45F. Normalnie uruchamiana jest przez procedurę wstępną obsługi [[NMI]], która w tym celu wykonuje skok pośredni przez wektor VVBLKI ($0222-$0223).


SYSVBL dzieli się na dwie fazy, pierwszą, krótką, wykonywaną zawsze (gdy przerwania [[NMI]] w ogóle są włączone, a wektor VVBLKI nie zmieniony), oraz drugą, dłuższą, wyłączaną automatycznie przez OS - flagą CRITIC - przy operacjach "krytycznych czasowo" (czyli podczas komunikacji przez port szeregowy albo równoległy, patrz [[SIO]]) i podczas obsługi [[IRQ]] (co sygnalizowane jest ustawioną flagą I zapisanego na stosie rejestru znaczników).
SYSVBL dzieli się na dwie fazy, pierwszą, krótką, wykonywaną zawsze (gdy przerwania NMI w ogóle są włączone, a wektor VVBLKI nie zmieniony), oraz drugą, dłuższą, wyłączaną automatycznie przez OS - flagą CRITIC - przy operacjach "krytycznych czasowo" (czyli podczas komunikacji przez port szeregowy albo równoległy, patrz [[SIO]]) i podczas obsługi [[IRQ]] (co sygnalizowane jest ustawioną flagą I zapisanego na stosie rejestru znaczników).


=== Faza I ===
=== Faza I ===
Linia 24: Linia 24:
== EXITVBL ==
== EXITVBL ==


Systemowa procedura powrotu z przerwania synchronizacji pionowej ([[VBL]]). Znajduje się w pamięci ROM, punkt wejścia w tablicy skoków jest pod $E462, wskazuje ją też wektor VVBLKD $0224. Skok przez ten wektor następuje tylko wtedy, kiedy włączona jest druga faza SYSVBL (czyli przeważnie). Kiedy jest wyłączona, EXITVBL jest wywoływana bezpośrednio, z pominięciem wektorów.
Systemowa procedura powrotu z przerwania synchronizacji pionowej (VBL). Znajduje się w pamięci ROM, punkt wejścia w tablicy skoków jest pod $E462, wskazuje ją też wektor VVBLKD $0224. Skok przez ten wektor następuje tylko wtedy, kiedy włączona jest druga faza SYSVBL (czyli przeważnie). Kiedy jest wyłączona, EXITVBL jest wywoływana bezpośrednio, z pominięciem wektorów.


[[Kategoria:Programowanie Atari 8-bit]]
[[Kategoria:Programowanie Atari 8-bit]]

Wersja z 4 mar 2016, 00:58

SYSVBL

Systemowa procedura obsługi przerwania synchronizacji pionowej (VBL). Znajduje się w pamięci ROM, punkt wejścia w tablicy skoków jest pod $E45F. Normalnie uruchamiana jest przez procedurę wstępną obsługi NMI, która w tym celu wykonuje skok pośredni przez wektor VVBLKI ($0222-$0223).

SYSVBL dzieli się na dwie fazy, pierwszą, krótką, wykonywaną zawsze (gdy przerwania NMI w ogóle są włączone, a wektor VVBLKI nie zmieniony), oraz drugą, dłuższą, wyłączaną automatycznie przez OS - flagą CRITIC - przy operacjach "krytycznych czasowo" (czyli podczas komunikacji przez port szeregowy albo równoległy, patrz SIO) i podczas obsługi IRQ (co sygnalizowane jest ustawioną flagą I zapisanego na stosie rejestru znaczników).

Faza I

  1. Wartość liczników czasu rzeczywistego [$0012-$0014] jest zwiększana o jeden.
  2. Sprawdzany jest stan zmiennych obsługujących tzw. tryb przyciągania uwagi (attract mode).
  3. Timer 1 jest zmniejszany o jeden, a po dojściu do zera wywoływana jest procedura jego obsługi.

Faza II

  1. Rejestry sprzętowe zapisywane są wartościami ze swoich cieni.
  2. Timer 2 jest zmniejszany o jeden.
  3. Timery 3, 4 i 5 są zmniejszane o jeden.
  4. Licznik autorepetycji klawiszy zostaje zmodyfikowany.
  5. Licznik czasu następnego odczytu z klawiatury jest zmniejszany o jeden.
  6. Następuje odczyt stanu dżojstików oraz wiosełek i umieszczenie odczytanych wartości w odpowiednich komórkach pamięci RAM.

Zakończenie procedury SYSVBL następuje przez skok do EXITVBL.

EXITVBL

Systemowa procedura powrotu z przerwania synchronizacji pionowej (VBL). Znajduje się w pamięci ROM, punkt wejścia w tablicy skoków jest pod $E462, wskazuje ją też wektor VVBLKD $0224. Skok przez ten wektor następuje tylko wtedy, kiedy włączona jest druga faza SYSVBL (czyli przeważnie). Kiedy jest wyłączona, EXITVBL jest wywoływana bezpośrednio, z pominięciem wektorów.