Rejestry ANTIC-a

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 18:26, 4 sty 2006
KMK (Dyskusja | wkład)
(Lista rejestrów)
← Previous diff
Wersja z dnia 20:54, 4 sty 2006
Piotrv (Dyskusja | wkład)
(Lista rejestrów)
Next diff →
Linia 25: Linia 25:
</table> </table>
<p>Normalnie ustawianą tu przez system operacyjny wartością jest $22 (34).</p> <p>Normalnie ustawianą tu przez system operacyjny wartością jest $22 (34).</p>
-<p>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ń robionych na CPU nawet o 30%.</p> +<p>Wyłączenie obrazu i DMA (poprzez wstawienie zera do cienia tego rejestru - $022F) 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ń robionych na CPU nawet o 30%.</p>
</td></tr> </td></tr>

Wersja z dnia 20:54, 4 sty 2006

Układ ANTIC, 15 rejestrów.

Lista rejestrów

AdresEtykietaOpis
$D400 (W)DMACTL

Rejestr kontroli dostępu do pamięci (DMA Control register). Ma cień DMACTLS 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 dwuliniowej graczy i pocisków dane dla obiektów pobierane są podczas tworzenia co drugiej linii obrazu. Wynika z tego, że jeden piksel PM/G ma w tej rozdzielczości wysokość dwóch linii skaningowych obrazu. Rozdzielczość jednoliniowa jest dwa razy większa - jeden piksel PM/G ma wysokość jednej linii skaningowej.

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

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

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

Wyłączenie obrazu i DMA (poprzez wstawienie zera do cienia tego rejestru - $022F) 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ń robionych na CPU nawet o 30%.

$D401 (W)CHRCTL

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 (0 = znaki normalne, 1 = inverse video)
  • bit 0: tłumienie znaków w inverse video (1 = niewidoczne)

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

$D402 (W)DLPTR

Wskaźnik pierwszego rozkazu Display List (Display List Pointer). Ma cień DLPTRS pod adresem $0230-$0231, skąd procedura SYSVBL przepisuje stan rejestru za każdym wystąpieniem przerwania VBL. DIsplay List jest zazwyczaj ulokowana bezpośrednio przed pamięcią obrazu.

$D403 (W)
$D404 (W)HSCROL
$D405 (W)VSCROL
$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 128 bajtów w rozdzielczości dwuliniowej i 256 w rozdzielczości jednoliniowej. Taki sam obszar, jak dla jednego gracza, zarezerwowany jest też dla czterech pocisków. Pamięć przydzielona jest tak, jakby było możliwe wyświetlenie ośmiu graczy, jednak ponieważ jest tylko czterech graczy i cztery pociski (które składają się na piątego gracza), część zarezerwowanego obszaru jest niewykorzystana:

ObiektOffset względem PMBASE w rozdzielczości
DwuliniowejJednoliniowej
(brak) $0000$0000
(brak) $0080$0100
(brak) $0100$0200
pociski$0180$0300
gracz 0$0200$0400
gracz 1$0280$0500
gracz 2$0300$0600
gracz 3$0380$0700

Matryca pojedynczego gracza ma 8 bitów szerokości. Ponieważ na dane gracza (czy też pocisków) w rozdzielczości jednoliniowej zarezerwowane jest 256 bajtów, a obraz ma tylko 240 linii skaningowych wysokości, łatwo stąd wydedukować, że gracze i pociski mają większą wysokość niż ekran. Tak też jest w istocie.

$D408-
$D409 (W)CHBASE
$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 znajdują się tu wartości od 0 do 155, natomiast w systemie NTSC - od 0 do 130.

$D40C (R)LPENH

Współrzędna X pozycji pióra świetlnego (Light Pen Horizontal position).

$D40D (R)LPENV

Współrzędna Y pozycji pióra świetlnego (Light Pen Vertical position).

$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
  • bit 5 = 1, NMI RESET włączone (to przerwanie nie jest używane w serii XL/XE)

System operacyjny normalnie ustawia tu wartość $40 (DLI wyłączone, VBL włączone). Pozostałe bity są niewykorzystane.

$D40F (R)NMIST

Rejestr statusu przerwań NMI (NMI status register). Znaczenie bitów:

  • bit 7 = 1, DLI wystąpiło
  • bit 6 = 1, VBL wystąpiło
  • bit 5 = 1, NMI RESET wystąpiło (tylko seria 400/800)

Pozostałe bity są niewykorzystane.

Skasowania bitów NMIST dokonuje się przez zapis rejestru NMIRES $D40F. Ponadto bit DLI jest kasowany w momencie wystąpienia przerwania VBL.

$D40F (W)NMIRES

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


Ten artykuł to tylko zalążek. Możesz pomóc rozwojowi Atariki poprzez rozszerzenie go o więcej informacji.

Personal tools