Rejestry ANTIC-a

Z Atariki mirror
Przejdź do nawigacjiPrzejdź do wyszukiwania

Układ ANTIC, 15 rejestrów.

Lista rejestrów

Adres Etykieta Opis
$D400 (W) DMACTL Rejestr kontroli dostępu do pamięci (DMA Control register). Ma cień DMACTLS (SDMCTL) pod adresem $022F, skąd procedura SYSVBL przepisuje stan rejestru za każdym wystąpieniem przerwania VBL.

Znaczenie bitów:

  • bit 7: niewykorzystany
  • bit 6: niewykorzystany
  • bit 5: DMA dla Display List (1 = włączone)
  • bit 4: rozdzielczość graczy i pocisków (0 = dwuliniowa, 1 = jednoliniowa)
  • bit 3: DMA dla graczy (1 = włączone)
  • bit 2: DMA dla pocisków (1 = włączone)

Przy rozdzielczości jednoliniowej graczy i pocisków jeden piksel P/MG ma wysokość jednej linii skaningowej. Przy rozdzielczości dwuliniowej -- dwóch linii. W obu przypadkach DMA następuje w każdej linii skaningowej (przy rozdzielczości dwuliniowej z jednakowymi adresami w każdej parze linii).

Bity 0 i 1 wybierają szerokość obrazu jak następuje:

Bit 1 Bit 0 Znaczenie
0 0 Brak obrazu.
0 1 Wąski obraz (32 kolumny, 256 pikseli).
1 0 Normalny obraz (40 kolumn, 320 pikseli).
1 1 Szeroki obraz (48 kolumn, 384 piksele).

Normalnie ustawianą tu przez system operacyjny wartością jest $22 (34).

Wyłączenie obrazu i DMA powoduje, że ANTIC przestaje pobierać dane z pamięci i tym samym zabierać procesorowi dostęp do magistrali danych i adresowej. Powoduje to wzrost szybkości obliczeń wykonywanych przez CPU nawet o 30%.

$D401 (W) CHRCTL, CHACTL Rejestr kontroli wyświetlania znaków (Character control register). Ma cień CHACT pod adresem $02F3, skąd procedura SYSVBL przepisuje stan rejestru za każdym wystąpieniem przerwania VBL.

Znaczenie bitów:

  • bit 2: lustrzane odbicie znaków w pionie (1 = włączone)
  • bit 1: interpretacja drugiej połówki generatora znaków w trybach tekstowych ANTIC 2 i 3 (0 = znaki normalne, 1 = inverse video)
  • bit 0: tłumienie znaków drugiej połówki generatora znaków w trybach tekstowych ANTIC 2 i 3 (1 = niewidoczne)

Pozostałe bity są niewykorzystane. Normalną wartością CHRCTL jest $02.

$D402 (W) DLPTR, DLISTL/DLISTH Wskaźnik rozkazu Display List (Display List Pointer). Ma cień DLPTRS (SDLSTL/SDLSTH) pod adresem $0230-$0231, skąd procedura SYSVBL przepisuje stan rejestru za każdym wystąpieniem przerwania VBL. System operacyjny umieszcza Display List bezpośrednio przed pamięcią obrazu.
$D403 (W)
$D404 (W) HSCROL Rejestr poziomego przesuwu obrazu.
  • Bity 0..3: Przesuwają treść obrazu w lewo o 16-n cykli koloru.

Pozostałe bity są niewykorzystane.

Treść obrazu jest przesuwana tylko w liniach Display List z uaktywnionym przesuwem poziomym.

$D405 (W) VSCROL Rejestr pionowego przesuwu obrazu.
  • Bity 0..3: Przesuwają treść obrazu w górę o n linii skanningowych.

Pozostałe bity są niewykorzystane.

Treść obrazu, analogicznie jak przy przesuwie poziomym, jest przesuwana tylko w liniach Display List z uaktywnionym przesuwem pionowym (wyjątkiem jest pierwsza linia Display List nieruchomej sekcji następująca po ostatniej linii Display List z uaktywnionym przesuwem pionowym).

$D406 -
$D407 (W) PMBASE Player/Missile Base, wskaźnik obszaru pamięci przeznaczonego na grafikę graczy i pocisków. Przy rozdzielczości dwuliniowej graczy i pocisków (zob. DMACTL $D400) zawiera pięć, a przy jednoliniowej sześć najstarszych bitów adresu. Wynika z tego, że obszar danych dla grafiki graczy i pocisków musi zaczynać się odpowiednio na granicy dwóch lub jednego kilobajta.

Wewnątrz tego obszaru ANTIC przeznacza dla jednego gracza 120 bajtów w rozdzielczości dwuliniowej i 240 w rozdzielczości jednoliniowej. Taki sam obszar, jak dla jednego gracza, zarezerwowany jest też dla czterech pocisków.

Obiekt Offset względem PMBASE w rozdzielczości
Dwuliniowej Jednoliniowej
pociski $0184 $0308
gracz 0 $0204 $0408
gracz 1 $0284 $0508
gracz 2 $0304 $0608
gracz 3 $0384 $0708

Matryca pojedynczego gracza ma 8 bitów szerokości, a pocisku 2 bity.

$D408 -
$D409 (W) CHBASE Wskaźnik adresu zestawu znaków, ma cień CHBAS pod adresem $02F4 (756).
  • w trybach ANTIC-a 2, 3, 4 i 5 bity 7-2 odpowiadają bitom 15-10 adresu zestawu znaków definiującego 128 znaków.
  • w trybach ANTIC-a 6 i 7 bity 7-1 odpowiadają bitom 15-9 adresu zestawu znaków definiującego 64 znaki.

Wynika z tego, że w trybach 2-5 zestaw znaków musi się znajdować na granicy 1k, a w trybach 6-7 na granicy 512 bajtów.

OS ma jeszcze dodatkowy adres międzynarodowego zestawu znaków CHSPTR w rejestrze $026B (619). Zawartości CHBAS i CHSPTR są zamieniane miejscami po wciśnięciu kombinacji klawiszy CTRL+F4 w 1200XL. Na VBLKD przepisywana jest do rejestru sprzętowego zawsze tylko zawartość CHBAS.

$D40A (W) WSYNC Wait for horizontal synchronization. Zapis dowolnej wartości do tego rejestru powoduje uaktywnienie przez ANTIC sygnału RDY, czym zatrzymuje on 6502 do chwili wystąpienia impulsu synchronizacji poziomej.
$D40B (R) VCOUNT Licznik generowanych przez ANTIC linii skaningowych (Vertical line counter). Licznik ten jest dziewięciobitowy, z czego w rejestrze VCOUNT widać osiem najstarszych bitów. Zlicza on więc co drugą wyświetlaną linię, w systemie PAL teoretycznie znajdują się tu wartości od 0 do 155, natomiast w systemie NTSC - od 0 do 130. Przez jeden cykl w każdej ramce jest tu wartość 156 (PAL) lub 131 (NTSC). Wartość 0 utrzymuje się przez 227 cykli, a nie 228.
$D40C (R) LPENH, PENH Współrzędna X pozycji pióra świetlnego (Light Pen Horizontal position) lub pistoletu świetlnego. Wskazuje cykl koloru w linii, w którym wykryto obecność elementu światłoczułego.
$D40D (R) LPENV, PENV Współrzędna Y pozycji pióra świetlnego (Light Pen Vertical position) lub pistoletu świetlnego. Wskazuje numer linii ekranowej podzielony przez 2 (analogicznie, jak VCOUNT), w której wykryto obecność elementu światłoczułego.
$D40E (W) NMIEN Rejestr kontrolujący występowanie przerwań NMI (NMI enable register). Znaczenie bitów:
  • bit 7 = 1, DLI włączone
  • bit 6 = 1, VBL włączone

Pozostałe bity są niewykorzystane.

System operacyjny normalnie ustawia tu wartość $40 (DLI wyłączone, VBL włączone). Przerwania NMI RESET (które jest trzecim z przerwań generowanych przez ANTIC) nie można wyłączyć.

$D40F (R) NMIST Rejestr statusu przerwań NMI (NMI status register). Znaczenie bitów:

Pozostałe bity są niewykorzystane i ustawione na 1.

Skasowanie bitu DLI następuje automatycznie w momencie wystąpienia przerwania VBL (te przerwania nie mogą wystąpić jednocześnie). Do skasowania wszystkich bitów służy rejestr NMIRES $D40F.

$D40F (W) NMIRES Zapis tego rejestru (dowolną wartością) powoduje skasowanie bitów statusu NMI w rejestrze NMIST $D40F.