Programowanie: Czekanie na vblank przy wyłączonym systemie
From Atariki
(Różnice między wersjami)
Wersja z dnia 17:00, 30 sie 2023 Mikey (Dyskusja | wkład) ← Previous diff |
Wersja z dnia 21:44, 30 sie 2023 Mono (Dyskusja | wkład) (dzielenie zamiast modulo) Next diff → |
||
Linia 1: | Linia 1: | ||
Gdy przerwania systemowe lub system są wyłączone, oczekiwanie na VBLANK nie może polegać na odczytywaniu najmłodszego bajtu RTCLOK ($14), gdyż ten nie jest wtedy aktualizowany. | Gdy przerwania systemowe lub system są wyłączone, oczekiwanie na VBLANK nie może polegać na odczytywaniu najmłodszego bajtu RTCLOK ($14), gdyż ten nie jest wtedy aktualizowany. | ||
- | W takim przypadku można użyć rejestru VCOUNT który bez względu na obecność systemu zawiera wartość wskazującą na aktualnie kreśloną linię ekranu (modulo 2). | + | W takim przypadku można użyć rejestru VCOUNT który bez względu na obecność systemu zawiera wartość wskazującą na aktualnie kreśloną linię ekranu (podzieloną przez 2). |
Kiedy linia ta wynosi 0, oznacza to że jesteśmy zaraz po 'powrocie plamki' | Kiedy linia ta wynosi 0, oznacza to że jesteśmy zaraz po 'powrocie plamki' | ||
Wersja z dnia 21:44, 30 sie 2023
Gdy przerwania systemowe lub system są wyłączone, oczekiwanie na VBLANK nie może polegać na odczytywaniu najmłodszego bajtu RTCLOK ($14), gdyż ten nie jest wtedy aktualizowany. W takim przypadku można użyć rejestru VCOUNT który bez względu na obecność systemu zawiera wartość wskazującą na aktualnie kreśloną linię ekranu (podzieloną przez 2). Kiedy linia ta wynosi 0, oznacza to że jesteśmy zaraz po 'powrocie plamki'
Przykład:
lda VCOUNT bmi *-3 lda VCOUNT bpl *-3
Przykład bez użycia akumulatora:
bit VCOUNT bmi *-3 bit VCOUNT bpl *-3