!!!!!!! ANTIC czytelnia Try2emu

ANTIC

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

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