<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl">
	<id>https://mirror.atariki.pl/w/index.php?action=history&amp;feed=atom&amp;title=Rejestry_ANTIC-a</id>
	<title>Rejestry ANTIC-a - Historia wersji</title>
	<link rel="self" type="application/atom+xml" href="https://mirror.atariki.pl/w/index.php?action=history&amp;feed=atom&amp;title=Rejestry_ANTIC-a"/>
	<link rel="alternate" type="text/html" href="https://mirror.atariki.pl/w/index.php?title=Rejestry_ANTIC-a&amp;action=history"/>
	<updated>2026-10-03T15:41:07Z</updated>
	<subtitle>Historia wersji tej strony wiki</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://mirror.atariki.pl/w/index.php?title=Rejestry_ANTIC-a&amp;diff=3429&amp;oldid=prev</id>
		<title>imported&gt;Atariki recovery: Reconstructed from archived HTML; see provenance manifest</title>
		<link rel="alternate" type="text/html" href="https://mirror.atariki.pl/w/index.php?title=Rejestry_ANTIC-a&amp;diff=3429&amp;oldid=prev"/>
		<updated>2026-10-01T08:51:48Z</updated>

		<summary type="html">&lt;p&gt;Reconstructed from archived HTML; see provenance manifest&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nowa strona&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Układ [[ANTIC (układ)|ANTIC]], 15 rejestrów.&lt;br /&gt;
&lt;br /&gt;
== Lista rejestrów ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Adres&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Etykieta&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Opis&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| $D400 (W)&lt;br /&gt;
| DMACTL&lt;br /&gt;
| 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|przerwania]] [[VBL]].&lt;br /&gt;
&lt;br /&gt;
Znaczenie bitów:&lt;br /&gt;
&lt;br /&gt;
* bit 7: niewykorzystany&lt;br /&gt;
* bit 6: niewykorzystany&lt;br /&gt;
* bit 5: DMA dla [[ANTIC Display List|Display List]] (1 = włączone)&lt;br /&gt;
* bit 4: rozdzielczość [[Player/Missile Graphics|graczy i pocisków]] (0 = dwuliniowa, 1 = jednoliniowa)&lt;br /&gt;
* bit 3: DMA dla graczy (1 = włączone)&lt;br /&gt;
* bit 2: DMA dla pocisków (1 = włączone)&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
Bity 0 i 1 wybierają szerokość obrazu jak następuje:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Bit 1&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Bit 0&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Znaczenie&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| Brak obrazu.&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 1&lt;br /&gt;
| Wąski obraz (32 kolumny, 256 pikseli).&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
| Normalny obraz (40 kolumn, 320 pikseli).&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| Szeroki obraz (48 kolumn, 384 piksele).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Normalnie ustawianą tu przez system operacyjny wartością jest $22 (34).&lt;br /&gt;
&lt;br /&gt;
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%.&lt;br /&gt;
|-&lt;br /&gt;
| $D401 (W)&lt;br /&gt;
| CHRCTL, CHACTL&lt;br /&gt;
| 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|przerwania]] [[VBL]].&lt;br /&gt;
&lt;br /&gt;
Znaczenie bitów:&lt;br /&gt;
&lt;br /&gt;
* bit 2: lustrzane odbicie znaków w pionie (1 = włączone)&lt;br /&gt;
* bit 1: interpretacja drugiej połówki generatora znaków w trybach tekstowych [[ANTIC Display List#Tryby znakowe|ANTIC 2 i 3]] (0 = znaki normalne, 1 = [[Inverse video|inverse video]])&lt;br /&gt;
* bit 0: tłumienie znaków drugiej połówki generatora znaków w trybach tekstowych ANTIC 2 i 3 (1 = niewidoczne)&lt;br /&gt;
&lt;br /&gt;
Pozostałe bity są niewykorzystane. Normalną wartością CHRCTL jest $02.&lt;br /&gt;
|-&lt;br /&gt;
| $D402 (W)&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot; | DLPTR, DLISTL/DLISTH&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot; | Wskaźnik rozkazu [[ANTIC Display List|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|przerwania]] [[VBL]]. System operacyjny umieszcza Display List bezpośrednio przed pamięcią obrazu.&lt;br /&gt;
|-&lt;br /&gt;
| $D403 (W)&lt;br /&gt;
|-&lt;br /&gt;
| $D404 (W)&lt;br /&gt;
| HSCROL&lt;br /&gt;
| Rejestr poziomego przesuwu obrazu.&lt;br /&gt;
* Bity 0..3: Przesuwają treść obrazu w lewo o 16-n cykli koloru.&lt;br /&gt;
&lt;br /&gt;
Pozostałe bity są niewykorzystane.&lt;br /&gt;
&lt;br /&gt;
Treść obrazu jest przesuwana tylko w liniach [[ANTIC Display List|Display List]] z uaktywnionym [[ANTIC Display List#HSCRL|przesuwem poziomym]].&lt;br /&gt;
|-&lt;br /&gt;
| $D405 (W)&lt;br /&gt;
| VSCROL&lt;br /&gt;
| Rejestr pionowego przesuwu obrazu.&lt;br /&gt;
* Bity 0..3: Przesuwają treść obrazu w górę o n linii skanningowych.&lt;br /&gt;
&lt;br /&gt;
Pozostałe bity są niewykorzystane.&lt;br /&gt;
&lt;br /&gt;
Treść obrazu, analogicznie jak przy [[ANTIC Display List#HSCRL|przesuwie poziomym]], jest przesuwana tylko w liniach [[ANTIC Display List|Display List]] z uaktywnionym [[ANTIC Display List#VSCRL|przesuwem pionowym]] (wyjątkiem jest pierwsza linia Display List nieruchomej sekcji następująca po ostatniej linii Display List z uaktywnionym [[ANTIC Display List#VSCRL|przesuwem pionowym]]).&lt;br /&gt;
|-&lt;br /&gt;
| $D406&lt;br /&gt;
| -&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $D407 (W)&lt;br /&gt;
| PMBASE&lt;br /&gt;
| Player/Missile Base, wskaźnik obszaru pamięci przeznaczonego na [[Player/Missile Graphics|grafikę graczy i pocisków]]. Przy rozdzielczości dwuliniowej graczy i pocisków (zob. [[Rejestry ANTIC-a#DMACTL|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.&lt;br /&gt;
&lt;br /&gt;
Wewnątrz tego obszaru [[ANTIC (układ)|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.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Obiekt&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Offset względem PMBASE w rozdzielczości&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Dwuliniowej&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Jednoliniowej&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| pociski&lt;br /&gt;
| $0184&lt;br /&gt;
| $0308&lt;br /&gt;
|-&lt;br /&gt;
| gracz 0&lt;br /&gt;
| $0204&lt;br /&gt;
| $0408&lt;br /&gt;
|-&lt;br /&gt;
| gracz 1&lt;br /&gt;
| $0284&lt;br /&gt;
| $0508&lt;br /&gt;
|-&lt;br /&gt;
| gracz 2&lt;br /&gt;
| $0304&lt;br /&gt;
| $0608&lt;br /&gt;
|-&lt;br /&gt;
| gracz 3&lt;br /&gt;
| $0384&lt;br /&gt;
| $0708&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Matryca pojedynczego gracza ma 8 bitów szerokości, a pocisku 2 bity.&lt;br /&gt;
|-&lt;br /&gt;
| $D408&lt;br /&gt;
| -&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| $D409 (W)&lt;br /&gt;
| CHBASE&lt;br /&gt;
| Wskaźnik adresu [[Generator znaków|zestawu znaków]], ma cień CHBAS pod adresem $02F4 (756).&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* w trybach ANTIC-a 6 i 7 bity 7-1 odpowiadają bitom 15-9 adresu zestawu znaków definiującego 64 znaki.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
|-&lt;br /&gt;
| $D40A (W)&lt;br /&gt;
| WSYNC&lt;br /&gt;
| Wait for horizontal synchronization. Zapis dowolnej wartości do tego rejestru powoduje uaktywnienie przez [[ANTIC (układ)|ANTIC]] sygnału RDY, czym zatrzymuje on [[6502]] do chwili wystąpienia impulsu synchronizacji poziomej.&lt;br /&gt;
|-&lt;br /&gt;
| $D40B (R)&lt;br /&gt;
| VCOUNT&lt;br /&gt;
| 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 [http://pl.wikipedia.org/wiki/NTSC 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.&lt;br /&gt;
|-&lt;br /&gt;
| $D40C (R)&lt;br /&gt;
| LPENH, PENH&lt;br /&gt;
| Współrzędna X pozycji [[Pióro świetlne|pióra świetlnego]] (Light Pen Horizontal position) lub [[XG-1|pistoletu świetlnego]]. Wskazuje cykl koloru w linii, w którym wykryto obecność elementu światłoczułego.&lt;br /&gt;
|-&lt;br /&gt;
| $D40D (R)&lt;br /&gt;
| LPENV, PENV&lt;br /&gt;
| 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.&lt;br /&gt;
|-&lt;br /&gt;
| $D40E (W)&lt;br /&gt;
| NMIEN&lt;br /&gt;
| Rejestr kontrolujący występowanie [[Przerwania|przerwań]] [[NMI]] (NMI enable register). Znaczenie bitów:&lt;br /&gt;
&lt;br /&gt;
* bit 7 = 1, [[DLI]] włączone&lt;br /&gt;
* bit 6 = 1, [[VBL]] włączone&lt;br /&gt;
&lt;br /&gt;
Pozostałe bity są niewykorzystane.&lt;br /&gt;
&lt;br /&gt;
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ć.&lt;br /&gt;
|-&lt;br /&gt;
| $D40F (R)&lt;br /&gt;
| NMIST&lt;br /&gt;
| Rejestr statusu [[Przerwania|przerwań]] [[NMI]] (NMI status register). Znaczenie bitów:&lt;br /&gt;
&lt;br /&gt;
* bit 7 = 1, [[DLI]] wystąpiło&lt;br /&gt;
* bit 6 = 1, [[VBL]] wystąpiło&lt;br /&gt;
* bit 5 = 1, [[NMI RESET]] wystąpiło (tylko seria [[400/800]])&lt;br /&gt;
&lt;br /&gt;
Pozostałe bity są niewykorzystane i ustawione na 1.&lt;br /&gt;
&lt;br /&gt;
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 [[Rejestry ANTIC-a#NMIRES|NMIRES $D40F]].&lt;br /&gt;
|-&lt;br /&gt;
| $D40F (W)&lt;br /&gt;
| NMIRES&lt;br /&gt;
| Zapis tego rejestru (dowolną wartością) powoduje skasowanie bitów statusu [[NMI]] w rejestrze [[Rejestry ANTIC-a#NMIST|NMIST $D40F]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Programowanie Atari 8-bit]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Atariki recovery</name></author>
	</entry>
</feed>