Pierwsze pytanie, jakie może się nas. W klasie popularnych komputerów domowych Atari jest jedynym, który posiada dwa mikroprocesory. Drugim obok CPU 6502 mikroprocesorem jest specjalnie zaprojektowany dla Atari układ ANTIC tworzący obraz telewizyjny (Alpha Numeric Television Interface Controller).
Jak każdy mikroprocesor, ANTIC posiada własny zestaw rozkazów i własny program. Zainteresowanych szczegółami odsyłam do „Komputera" nr 8/86. Tu podam tylko kilka najważniejszych rozkazów ANTIC-a. Rozkazy tworzące linie obrazu mają kody równe numerom trybów pracy ANTIC-a (nie mylić z trybami graficznymi BASIC-u —zob. tabela). Kody rozkazów tworzących puste linie (w kolorze tła, bez danych)otrzymamy korzystając z zależności, że kod jest równy liczbie linii zmniejszonej o jeden i pomnożone] przez 16. Jeżeli kod rozkazu zwiększymy o 128, to taki rozkaz będzie przed utworzeniem linii wywoływał procedurę przerwania (DLI). Jeżeli zwiększymy go (dodatkowo) o 64, to kolejne dwa bajty programu zostaną potraktowane jako adres pamięci obrazu.
Będzie nas teraz interesowało, jak ANTIC interpretuje dane zawarte w pamięci obrazu. Zależy to przede wszystkim od trybu pracy.
W trybach znakowych (ANTIC 2-7; BASIC 0-2, 12 i 13) ANTIC traktuje każdy bajt pobrany z pamięci obrazu jako część adresu znaku, który ma być wyświetlony, w zestawie znaków. Reszta adresu jest pobierana z rejestru CHARBASE wskazującego stronę pamięci, na której rozpoczyna się zestaw znaków (stąd wniosek, że musi się on zawsze zaczynać od początku strony).Oprócz tego ANTIC wybiera kolor, w jakim będzie wyświetlany znak. W trybach ANTIC 2 (GRAPHICS 0) i ANTIC 3 służy do tego celu najstarszy bit numeru znaku. Gdy jeston skasowany (0), to znak jest normalny; a gdy jest ustawiony (1), znak ma zamienione kolory (negatyw). Możemy to sprawdzić wpisując instrukcje? CHR$(65) i ? CHRS(65+128). W trybach GRAPHICS 1 i 2 (ANTIC 6 i 7) służą do tego celu dwa najstarsze bity. Wartość tej pary bitów określa numer rejestru koloru, z którego jest pobierany kolor znaku. Np. para bitów 10 (wartość dziesiętna 2) wybiera rejestr koloru 2. Dwa pozostałe tryby dają znaki wielokolorowe. Bajt znaku jest w nich dzielony na cztery pary bitów, z których każda określa kolor pary punktów obrazu.
W trybach bitowych (ANTIC 8-15; GRAPHICS 3-8, 14 i 15) kolejne bity (ANTIC 9,11, 12, i 15) lub pary bitów (8, 10, 13, i 14) wybieraią kolor punktu obrazu. Pary bitów określaią kolory tak. jak w trybach znakowych. Bity określaią kolor następująco; bit ustawiony — kolor z rejestru 0, bit skasowany — kolor z rejestru tła. Wyjątkiem jest tryb 15 (GRAPHICS 8), w którym kolor jest zawsze określany przez rejestr 2, a bity określają tylko jasność punktu: ustawiony— jasność z rejestru 1, skasowany — jasność z rejestru 2.
Wymieniłem wiele różnych rejestrów,więc teraz kilka adresów (rejestry o nazwach kończących się § są rejestrami tworzonymi przez system operacyjny w pamięci RAM — tzw. rejestry-cienie).
54272 DMACNTL Kontroluje bezpośredni dostęp ANTIC-a do pamięci RAM 559 DMACNTL§ 54273 CHARCNTL Kontroluje wygląd wy świetlanych znaków (tylko w trybach znakowych) 755 CHARCNTL§ 54274-54275 DLPTR Adres początku programu ANTIC-a 560-561 DLPTR§ 54279 PMBASE Starszy bajt adresu początku pamięci dla grafiki graczy i pocisków (zob "Duszki") 54281 CHARBASE Starszy bajt adres zestawu znaków 756 CHARBASE§ 512-513 DLWKT Adres procedury przerwania wywoływanej przez program ANTIC-a 54286 NMIEN Rejestr zezwoleń na przerwania NMI 54287 NMIST Wskazuje rodzaj przerwania NMI 54283 VCOUNT Numer linii obrazu podzielony przez dwa 54284 LPENH Poziome położenie pióra 564 LPENH§ świetlnego (numer cyklu koloru) 54285 LPENV Pionowe położenie piora 565 LPENV§ świetlnego (numer linii podzielony przez dwa)
Niektóre z tych rejestrów wymagają dokładniejszego opisu. W rejestrze DMACNTL bity 1 i 0 kontrolują szerokość obrazu:
00 — brak obrazu,
01 — obraz wąski (128 cykli koloru).
10 — obraz normalny (160) i 11 — obraz szeroki (192).
Bit 2 włącza dostęp do pamięci dla pocisków, a bit 3 dla graczy,zaś bit 4 kontroluje ich rozdzielczość. Bit 5 kontroluje dostęp do pamięci dla programu ANTIC-a. Pozostałe dwa bity są niewykorzystane.
Rejestr CHARCNTL wykorzystuje jedynie trzy najmłodsze bity. Bity 0 i 1 działają tylko w trybach ANTIC 2 i 3 Bit 1 kontroluje tworzenie negatywów znaków (zamiana koloru znaku i tła), a bit 0 ich wyświetlanie. Bit 2 ustala kolejność czytania danych znaku,gdy jest ustawiony, znaki są „postawione na głowie".
W rejestrach NMIEN i NMIST wykorzystywane są tylko dwa najstarsze bity (6 i 7), Bit 6 odpowiada przerwaniu synchronizacji pionowej (VBLK), a bit 7 przerwaniu wywołanemu przez program ANTIC-a (DLI). Ustawienie bitu w rejestrze NMIEN zezwalana przerwanie, a ustawienie bitu w rejestrze NMIST sygnalizuje, że dane przerwanie wystąpiło.
Przy tworzeniu obrazu ANTIC współpracuje z układem GTIA, w którym znajdują się m.in. rejestry kolorów. Będą więc one opisane razem z tym układem.
tryb tryb ANTIC-a BASIC-a 2 0 3 — 4 12 5 13 6 1 7 2 8 3 3 4 10 5 11 6 12 14 13 7 14 15 15 8
Wojciech Zientara