SYSVBL

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 17:32, 8 wrz 2005
Krótki (Dyskusja | wkład)
(analogiczne jak w IRQ)
← Previous diff
Aktualna wersja
Mono (Dyskusja | wkład)
(EXITVBL)
Linia 1: Linia 1:
-'''SYSVBL'''+== SYSVBL ==
-SYSVBL jest to systemowa procedura obsługi przerwania synchronizacji pionowej ([[VBL]]). Znajduje się w pamięci ROM, punkt wejścia 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 znajdujący się pod adresem $0222.+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).
-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]]), oraz 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 ===
-# Wartość liczników czasu rzeczywistego [$0012-$0014] jest zwiększana o jeden.+# Wartość licznika czasu rzeczywistego RTCLOK ($0012-$0014) jest zwiększana o jeden.
# Sprawdzany jest stan zmiennych obsługujących tzw. tryb przyciągania uwagi (attract mode). # Sprawdzany jest stan zmiennych obsługujących tzw. tryb przyciągania uwagi (attract mode).
-# Timer1 jest zmniejszany o jeden, a po dojściu do zera wywoływana jest procedura jego obsługi.+# Licznik TIMCNT1 ($0218) jest zmniejszany o jeden, a po dojściu do zera wywoływana jest procedura jego obsługi TIMVEC1 ($0226).
-Faza II.+=== Faza II ===
# Rejestry sprzętowe zapisywane są wartościami ze swoich cieni. # Rejestry sprzętowe zapisywane są wartościami ze swoich cieni.
-# Timer2 jest zmniejszany o jeden.+# Licznik TIMCNT2 ($021A) jest zmniejszany o jeden, a po dojściu do zera wywoływana jest procedura jego obsługi TIMVEC2 ($0228).
-# Timer3,4 i 5 są zmniejszane o jeden.+# Liczniki TIMCNT3 ($021C), TIMCNT4 ($021E) i TIMCNT5 ($0220) są zmniejszane o jeden.
# Licznik autorepetycji klawiszy zostaje zmodyfikowany. # Licznik autorepetycji klawiszy zostaje zmodyfikowany.
# Licznik czasu następnego odczytu z klawiatury jest zmniejszany o jeden. # Licznik czasu następnego odczytu z klawiatury jest zmniejszany o jeden.
-# Następuje odczyt stanu dżojstików i umieszczenie odczytanych wartości w odpowiednich komórkach pamięci RAM.+# Następuje odczyt stanu dżojstików oraz [[Atari Paddles|wiosełek]] i umieszczenie odczytanych wartości w odpowiednich komórkach pamięci RAM.
Zakończenie procedury SYSVBL następuje przez skok do EXITVBL. Zakończenie procedury SYSVBL następuje przez skok do EXITVBL.
-'''EXITVBL'''+== EXITVBL ==
-Systemowa procedura powrotu z przerwania synchronizacji pionowej ([[VBL]]). Znajduje się w pamięci ROM, punkt wejścia 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]]

Aktualna wersja

Spis treści

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).

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ść licznika czasu rzeczywistego RTCLOK ($0012-$0014) jest zwiększana o jeden.
  2. Sprawdzany jest stan zmiennych obsługujących tzw. tryb przyciągania uwagi (attract mode).
  3. Licznik TIMCNT1 ($0218) jest zmniejszany o jeden, a po dojściu do zera wywoływana jest procedura jego obsługi TIMVEC1 ($0226).

Faza II

  1. Rejestry sprzętowe zapisywane są wartościami ze swoich cieni.
  2. Licznik TIMCNT2 ($021A) jest zmniejszany o jeden, a po dojściu do zera wywoływana jest procedura jego obsługi TIMVEC2 ($0228).
  3. Liczniki TIMCNT3 ($021C), TIMCNT4 ($021E) i TIMCNT5 ($0220) 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.

Personal tools