Programowanie: Jak wykryć system TV

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 20:53, 8 sty 2020
Mono (Dyskusja | wkład)
(System - detekcja systemu tv)
← 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 1: Linia 1:
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). 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).
-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).+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: Test przeprowadzany jest następująco:
Linia 27: Linia 29:
W przypadku gdy mamy do czynienia z fabrycznym komputerem do określenia systemu TV wystarczy więc sprawdzenie rejestru PALNTS. W przypadku gdy mamy do czynienia z fabrycznym komputerem do określenia systemu TV wystarczy więc sprawdzenie rejestru PALNTS.
-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.+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. +
-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.

Linki

Personal tools