Programowanie: Jak wykryć system TV
From Atariki
Wersja z dnia 20:55, 8 sty 2020 Mono (Dyskusja | wkład) (ntsc50 i pal60) ← Previous diff |
Aktualna wersja Daniel Koźmiński (Dyskusja | wkład) (Dodałem info, że OS XL - w starszych nie ma rejestrów opóźnienia klawiatury) |
||
Linia 3: | Linia 3: | ||
Tworzeniem obrazu w Atari zajmuje się ANTIC który formuje sygnały wideo oraz generuje treść obrazu i to on decyduje o tym ile linii obrazu zawiera pojedyncza ramka. Układ GTIA zaś nakłada kolory na podstawie informacji podanej przez ANTIC. | Tworzeniem obrazu w Atari zajmuje się ANTIC który formuje sygnały wideo oraz generuje treść obrazu i to on decyduje o tym ile linii obrazu zawiera pojedyncza ramka. Układ GTIA zaś nakłada kolory na podstawie informacji podanej przez ANTIC. | ||
- | OS przeprowadza detekcję systemu TV podczas procedury RESET badając rejestr PAL ($D014) układu GTIA i zależnie od jego wartości ustawia opóźnienie KRPDEL ($2D9) i repetycję klawiszy KEYREP ($2DA) oraz zawartość rejestru PALNTS ($62). | + | OS XL przeprowadza detekcję systemu TV podczas procedury RESET badając rejestr PAL ($D014) układu GTIA i zależnie od jego wartości ustawia opóźnienie KRPDEL ($2D9) i repetycję klawiszy KEYREP ($2DA) oraz zawartość rejestru PALNTS ($62). |
Test przeprowadzany jest następująco: | Test przeprowadzany jest następująco: | ||
Linia 31: | Linia 31: | ||
Z biegiem czasu pojawiły się modyfikacje pozwalające na wymianę układów ANTIC lub GTIA przez co można spotkać komputery z ANTIC-iem generującym sygnały jak dla PAL, ale z GTIA tworzącym kolory jak dla NTSC, lub odwrotnie (tzw. NTSC50 i PAL60). | Z biegiem czasu pojawiły się modyfikacje pozwalające na wymianę układów ANTIC lub GTIA przez co można spotkać komputery z ANTIC-iem generującym sygnały jak dla PAL, ale z GTIA tworzącym kolory jak dla NTSC, lub odwrotnie (tzw. NTSC50 i PAL60). | ||
- | Ponieważ rejestr PAL znajduje się w układzie GTIA to w rzeczywistości zwraca on tylko informację o tym jakie kolory uzyskamy w torze wideo. | + | Ponieważ rejestr PAL znajduje się w układzie GTIA to w rzeczywistości zwraca on tylko informację o tym jakie kolory uzyskamy na ekranie. |
Do określenia rodzaju układu ANTIC należy więc użyć procedury zliczającej ilość linii skanningowych przypadających na jedną ramkę obrazu: | Do określenia rodzaju układu ANTIC należy więc użyć procedury zliczającej ilość linii skanningowych przypadających na jedną ramkę obrazu: | ||
<pre> | <pre> | ||
Linia 42: | Linia 42: | ||
cmp #[312+262]/2/2 | cmp #[312+262]/2/2 | ||
</pre> | </pre> | ||
- | Ponieważ ilość linii skanningowych w ramce NTSC wynosi 262, a w PAL lub SECAM 312 to powyższa procedura w znaczniku C zwróci informację o zastosowanym ANTIC-u - C=0 - NTSC, C=1 - PAL. | + | Ponieważ ilość linii skanningowych w ramce NTSC wynosi 262, a w PAL lub SECAM 312 to powyższa procedura w znaczniku C zwróci informację o zastosowanym ANTIC-u - C=0 - NTSC, C=1 - PAL lub SECAM. |
= Linki = | = Linki = | ||
Linia 50: | Linia 50: | ||
* [[FGTIA]] | * [[FGTIA]] | ||
* [https://atariage.com/forums/topic/78402-colors/ wątek o różnicach w paletach kolorów] | * [https://atariage.com/forums/topic/78402-colors/ wątek o różnicach w paletach kolorów] | ||
+ | * [https://atariage.com/forums/topic/281761-introducing-antix-the-antic-switch/ wątek o AntiX] | ||
[[Kategoria:Programowanie Atari 8-bit]] | [[Kategoria:Programowanie Atari 8-bit]] | ||
[[Kategoria:Niezbędnik kodera]] | [[Kategoria:Niezbędnik kodera]] |
Aktualna wersja
Ośmiobitowe komputery Atari występują w wariantach PAL, NTSC i SECAM. Różnice dotyczą częstotliwości kwarcu taktującego CPU, generowanych kolorów oraz częstotliwości odchylania pionowego VBLK (a co za tym idzie ilości linii obrazu w pojedynczej ramce).
Tworzeniem obrazu w Atari zajmuje się ANTIC który formuje sygnały wideo oraz generuje treść obrazu i to on decyduje o tym ile linii obrazu zawiera pojedyncza ramka. Układ GTIA zaś nakłada kolory na podstawie informacji podanej przez ANTIC.
OS XL przeprowadza detekcję systemu TV podczas procedury RESET badając rejestr PAL ($D014) układu GTIA i zależnie od jego wartości ustawia opóźnienie KRPDEL ($2D9) i repetycję klawiszy KEYREP ($2DA) oraz zawartość rejestru PALNTS ($62).
Test przeprowadzany jest następująco:
C374: AD 14 D0 LDA $D014 ;PAL C377: 29 0E AND #$0E C379: D0 08 BNE $C383 C37B: A9 05 LDA #$05 C37D: A2 01 LDX #$01 C37F: A0 28 LDY #$28 C381: D0 06 BNE $C389 C383: A9 06 LDA #$06 C385: A2 00 LDX #$00 C387: A0 30 LDY #$30 C389: 8D DA 02 STA $02DA ;KEYREP C38C: 86 62 STX $62 ;PALNTS C38E: 8C D9 02 STY $02D9 ;KRPDEL
dzięki czemu rejestr PALNTS zawiera:
- $00 dla NTSC
- $01 dla PAL lub SECAM.
W przypadku gdy mamy do czynienia z fabrycznym komputerem do określenia systemu TV wystarczy więc sprawdzenie rejestru PALNTS.
Z biegiem czasu pojawiły się modyfikacje pozwalające na wymianę układów ANTIC lub GTIA przez co można spotkać komputery z ANTIC-iem generującym sygnały jak dla PAL, ale z GTIA tworzącym kolory jak dla NTSC, lub odwrotnie (tzw. NTSC50 i PAL60).
Ponieważ rejestr PAL znajduje się w układzie GTIA to w rzeczywistości zwraca on tylko informację o tym jakie kolory uzyskamy na ekranie. Do określenia rodzaju układu ANTIC należy więc użyć procedury zliczającej ilość linii skanningowych przypadających na jedną ramkę obrazu:
sync1 ldx VCOUNT ;$D40B bpl sync1 sync2 txa ldx VCOUNT bmi sync2 cmp #[312+262]/2/2
Ponieważ ilość linii skanningowych w ramce NTSC wynosi 262, a w PAL lub SECAM 312 to powyższa procedura w znaczniku C zwróci informację o zastosowanym ANTIC-u - C=0 - NTSC, C=1 - PAL lub SECAM.