<?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=DMA</id>
	<title>DMA - 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=DMA"/>
	<link rel="alternate" type="text/html" href="https://mirror.atariki.pl/w/index.php?title=DMA&amp;action=history"/>
	<updated>2026-10-02T05:27:19Z</updated>
	<subtitle>Historia wersji tej strony wiki</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://mirror.atariki.pl/w/index.php?title=DMA&amp;diff=675&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=DMA&amp;diff=675&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;&amp;#039;&amp;#039;&amp;#039;Direct Memory Access&amp;#039;&amp;#039;&amp;#039; oznacza bezpośredni (bez użycia [[CPU]]) dostęp układów komputera do pamięci.&lt;br /&gt;
&lt;br /&gt;
W małym Atari za kontrolę DMA odpowiada układ [[ANTIC (układ)|ANTIC]] i właśnie on jako jedyny realizuje wszystkie takie dostępy.&lt;br /&gt;
Dodatkowo ma wyższy priorytet niż [[CPU]] przez co wstrzymuje na ten czas jego działanie za pomocą linii HALT.&lt;br /&gt;
&lt;br /&gt;
Za pomocą DMA pobierane są:&lt;br /&gt;
&lt;br /&gt;
* [[ANTIC Display List|Display List]],&lt;br /&gt;
* pamięć ekranu (treść w trybach graficznych i kody znaków w trybach tekstowych),&lt;br /&gt;
* [[Generator znaków|generator znaków]] (kształt znaków w trybach tekstowych),&lt;br /&gt;
* kształt [[PMG|sprajtów]] - osobno graczy i osobno pocisków&lt;br /&gt;
&lt;br /&gt;
oraz realizowane jest odświeżanie pamięci DRAM.&lt;br /&gt;
&lt;br /&gt;
DMA konfiguruje się za pomocą rejestru [[Rejestry ANTIC-a#DMACTL|DMACTL ($D400)]] (cień DMACTLS ($22F)):&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;
* bity 0 i 1: DMA dla pamięci ekranu:&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 - DMA wyłączone.&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 1&lt;br /&gt;
| Wąski obraz - DMA włączone.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
| Normalny obraz - DMA włączone.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| Szeroki obraz - DMA włączone.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zależnie więc od tego czy włączone jest:&lt;br /&gt;
&lt;br /&gt;
* pobieranie rozkazów [[ANTIC Display List|Display List]],&lt;br /&gt;
* pobieranie danych pamięci ekranu&lt;br /&gt;
* czy pobieranie kształtu sprajtów,&lt;br /&gt;
* no i czy pobieramy pierwszą linię skanningową wiersza trybu czy kolejną,&lt;br /&gt;
&lt;br /&gt;
tyle danych w linii skanningowej trzeba będzie pobrać.&lt;br /&gt;
&lt;br /&gt;
W przypadku programu Display List jest to:&lt;br /&gt;
&lt;br /&gt;
* rozkazy skoków JMP - zawsze 3 bajty,&lt;br /&gt;
* rozkazy tworzenia trybów z załadowaniem licznika LMS - zawsze 3 bajty,&lt;br /&gt;
* pozostałe rozkazy tworzenia trybów - zawsze 1 bajt,&lt;br /&gt;
* rozkazy tworzenia pustych linii - zawsze 1 bajt.&lt;br /&gt;
&lt;br /&gt;
Ilość bajtów przeznaczonych do pobrania dodatkowo określana jest przez:&lt;br /&gt;
&lt;br /&gt;
* tryb (ilość bitów na piksel),&lt;br /&gt;
* rodzaj trybu (graficzny / tekstowy),&lt;br /&gt;
* szerokość ekranu (wąski / normalny / szeroki),&lt;br /&gt;
* bit 4 (HSCRL) w bajcie rozkazu [[ANTIC Display List#Przesuw obrazu|Display List]],&lt;br /&gt;
* bit 5 (VSCRL) w bajcie rozkazu [[ANTIC Display List#Przesuw obrazu|Display List]],&lt;br /&gt;
* wartość przesunięcia pionowego zapisana w [[Rejestry ANTIC-a#VSCROL|rejestrze VSCROL ($D405)]].&lt;br /&gt;
&lt;br /&gt;
Odświeżanie pamięci DRAM zabiera zawsze 9 cykli w każdej linii ekranowej ramki obrazu.&lt;br /&gt;
&lt;br /&gt;
== Uwagi ==&lt;br /&gt;
&lt;br /&gt;
* Niezależnie od rozdzielczości sprajtów ich dane są pobierane z pamięci w każdej linii skanningowej.&lt;br /&gt;
* Włączenie DMA graczy automatycznie wymusza też włączenie DMA pocisków.&lt;br /&gt;
* Wyłączenie DMA Display List w trakcie tworzenia obrazu powoduje renderowanie aktualnego wiersza trybu aż do chwili ponownego włączenia (zmienia się jednakże licznik pamięci ekranu, ale nie zmienia się licznik programu Display List).&lt;br /&gt;
* Wyłączenie DMA sprajtów w trakcie tworzenia obrazu powoduje renderowanie aktualnego kształtu sprajta w kolejnych liniach (zmienia się jednakże adres bajtu kształtu sprajta).&lt;br /&gt;
* Nie można wyłączyć pobierania kształtu znaków z generatora znaków.&lt;br /&gt;
&lt;br /&gt;
== Zobacz też ==&lt;br /&gt;
&lt;br /&gt;
* [[Ramka]]&lt;br /&gt;
* [[ANTIC]]&lt;br /&gt;
* [[Rejestry ANTIC-a]]&lt;br /&gt;
* Tryby [[ANTIC Display List#Puste linie TV|Display List]]&lt;br /&gt;
* [https://www.virtualdub.org/downloads/Altirra%20Hardware%20Reference%20Manual.pdf Altirra Hardware Reference Manual] ze szczegółowym opisem możliwości sprzętowych układu ANTIC&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>