ANTIC

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 15:08, 24 gru 2004
Tebe (Dyskusja | wkład)

← Previous diff
Wersja z dnia 15:10, 24 gru 2004
Tebe (Dyskusja | wkład)

Next diff →
Linia 4: Linia 4:
<pre> <pre>
-Jednym z ciekawych układów elektronicznych, jakie można znaleźć wewnątrz komputera ATARI XL/XE jest procesor graficzny ANTIC. Jest to układ scalony, którego zadaniem jest obrazowanie danych z pewnego obszaru pamięci komputera. To, co widzimy na ekranie monitora, kiedy siadamy przed komputerem jest efektem pracy ANTIC-u. Sedno działania procesora graficznego tkwi w tzw. bezpośrednim dostępie do pamięci, zwanym krótko DMA (z ang. Direct Memory Access). Po prostu, ANTIC pobiera dane do wyświetlenia z pamięci bez pośrednictwa głównego procesora, "podkradając" mu jednak nieco czasu, czyli zwalniając jego tempo pracy. Jak napisałem powyżej, ANTIC jest prawdziwym procesorem z własnym dwunastobitowym licznikiem rozkazów i zestawem instrukcji. Wykonuje on program, którego adres zapisany jest w słowie SDLSTL, zajmującym komórki pamięci o adresach 560 i 561, czyli $0230 i $0231.+Jednym z ciekawych układów elektronicznych, jakie można znaleźć wewnątrz komputera ATARI XL/XE
 +jest procesor graficzny ANTIC. Jest to układ scalony, którego zadaniem jest obrazowanie danych
 +z pewnego obszaru pamięci komputera. To, co widzimy na ekranie monitora, kiedy siadamy przed
 +komputerem jest efektem pracy ANTIC-u. Sedno działania procesora graficznego tkwi w tzw.
 +bezpośrednim dostępie do pamięci, zwanym krótko DMA (z ang. Direct Memory Access). Po prostu,
 +ANTIC pobiera dane do wyświetlenia z pamięci bez pośrednictwa głównego procesora, "podkradając"
 +mu jednak nieco czasu, czyli zwalniając jego tempo pracy. Jak napisałem powyżej, ANTIC jest
 +prawdziwym procesorem z własnym dwunastobitowym licznikiem rozkazów i zestawem instrukcji.
 +Wykonuje on program, którego adres zapisany jest w słowie SDLSTL, zajmującym komórki pamięci o
 +adresach 560 i 561, czyli $0230 i $0231.
- W wyniku działalności ANTIC-u widzimy obraz, którego podstawowym składnikiem jest tzw. pole gry (ang. playfield). Dodatkowo, może on wyświetlać niezależne obiekty graficzne, które łatwo animować, tzw. graczy (ang. players) i pociski (ang. missiles).+ W wyniku działalności ANTIC-u widzimy obraz, którego podstawowym składnikiem jest tzw. pole
 +gry (ang. playfield). Dodatkowo, może on wyświetlać niezależne obiekty graficzne, które łatwo
 +animować, tzw. graczy (ang. players) i pociski (ang. missiles)
Linia 12: Linia 23:
- Ta komórka pamięci steruje bezpośrednim dostępem do pamięci procesora graficznego. Jest ona cieniem sprzętowego rejestru DMACTL (54272, czyli $d400) i jej zawartość traktowana jest bitowo. Znaczenie bitów SDMCTL jest następujące:+ Ta komórka pamięci steruje bezpośrednim dostępem do pamięci procesora graficznego. Jest ona
 +cieniem sprzętowego rejestru DMACTL (54272, czyli $d400) i jej zawartość traktowana jest
 +bitowo. Znaczenie bitów SDMCTL jest następujące:
bit 0, 1 rodzaj pola gry bit 0, 1 rodzaj pola gry
Linia 27: Linia 40:
1 1 szerokie pole gry (48 znaków w trybie 0) 1 1 szerokie pole gry (48 znaków w trybie 0)
- Podane wyżej ilości znaków dość dobrze określają szerokości odpowiednich pól gry, chociaż ten sposób określania rozmiaru ekranu nie jest w pełni zgodny z terminologią, zalecaną przez firmę ATARI. Gwoli ścisłości warto więc zaznaczyć, że powinno się w tym wypadku mówić o tzw. cyklach koloru (ang. color clocks), których liczba dla odpowiednich pól gry przedstawia się następująco:+ Podane wyżej ilości znaków dość dobrze określają szerokości odpowiednich pól gry, chociaż
 +ten sposób określania rozmiaru ekranu nie jest w pełni zgodny z terminologią, zalecaną przez
 +firmę ATARI. Gwoli ścisłości warto więc zaznaczyć, że powinno się w tym wypadku mówić o tzw.
 +cyklach koloru (ang. color clocks), których liczba dla odpowiednich pól gry przedstawia się
 +następująco:
wąskie pole gry 128 cykli koloru wąskie pole gry 128 cykli koloru
Linia 33: Linia 50:
szerokie pole gry 192 cykle koloru. szerokie pole gry 192 cykle koloru.
- Nie wszystkie telewizory i monitory pozwolą nam zobaczyć cały obraz, kiedy zażądamy wyświetlenia szerokiego pola gry, ale taka możliwość jest przydatna choćby wtedy, gdy irytują nas ramki z lewej i prawej strony wyświetlanego obrazu.+ Nie wszystkie telewizory i monitory pozwolą nam zobaczyć cały obraz, kiedy zażądamy wyświetlenia szerokiego pola gry, ale taka możliwość jest przydatna choćby wtedy, gdy irytują
 +nas ramki z lewej i prawej strony wyświetlanego obrazu.
-Bity nr 2 i 3 uruchamiają (po wpisaniu do nich 1), lub blokują (po wpisaniu 0), odpowiednio DMA dla pocisków i dla graczy. Oznacza to w praktyce, że albo widać graczy i pociski, albo ich nie widać. Oczywiście można włączyć np. tylko DMA dla graczy lub pocisków, są one niezależne.+Bity nr 2 i 3 uruchamiają (po wpisaniu do nich 1), lub blokują (po wpisaniu 0), odpowiednio DMA
 +dla pocisków i dla graczy. Oznacza to w praktyce, że albo widać graczy i pociski, albo ich nie
 +widać. Oczywiście można włączyć np. tylko DMA dla graczy lub pocisków, są one niezależne.
-Bit nr 4 definiuje sposób wyświetlania gracza. Więcej szczegółów na ten temat zamieszczę przy okazji opisu tej techniki.+Bit nr 4 definiuje sposób wyświetlania gracza. Więcej szczegółów na ten temat zamieszczę przy
 +okazji opisu tej techniki.
-Bit nr 5 włącza (po zapisaniu 1), lub wyłącza (po zapisaniu 0) bezpośredni dostęp ANTIC-a do pamięci, a co za tym idzie wyświetlanie obrazu. Jeśli czasem zdarza się, że program wykonuje dużą ilość np. obliczeń, których wyniki nie są dynamicznie prezentowane na ekranie, to warto na ten czas wyłączyć DMA dla procesora graficznego. Przestanie on wtedy pracować równolegle z 6502, co zwiększy szybkość tęgo ostatniego o ok. 30 procent. Aby wyłączyć DMA dla ANTIC-a, trzeba najpierw odczytać zawartość komórki SDMCTL i zapamiętać ją, później zaś wpisać do niej zero. Po zakończeniu operacji, które chcemy przyspieszyć, należy zapisać na powrót zapamiętaną wartość do tego rejestru. Często warto także zgasić ekran podczas ładowania do pamięci obrazków, nie widać wtedy, jak są one rysowane, za to można obserwować końcowy efekt. Po restarcie systemu do komórki SDMCTL zapisywana jest wartość 34, czyli bitowo %100010, co oznacza włączenie bezpośredniego dostępu ANTIC-a do pamięci i ustawienie standardowego pola gry.+Bit nr 5 włącza (po zapisaniu 1), lub wyłącza (po zapisaniu 0) bezpośredni dostęp ANTIC-a do
 +pamięci, a co za tym idzie wyświetlanie obrazu. Jeśli czasem zdarza się, że program wykonuje
 +dużą ilość np. obliczeń, których wyniki nie są dynamicznie prezentowane na ekranie, to warto na
 +ten czas wyłączyć DMA dla procesora graficznego. Przestanie on wtedy pracować równolegle z
 +6502, co zwiększy szybkość tęgo ostatniego o ok. 30 procent. Aby wyłączyć DMA dla ANTIC-a,
 +trzeba najpierw odczytać zawartość komórki SDMCTL i zapamiętać ją, później zaś wpisać do niej
 +zero. Po zakończeniu operacji, które chcemy przyspieszyć, należy zapisać na powrót zapamiętaną
 +wartość do tego rejestru. Często warto także zgasić ekran podczas ładowania do pamięci
 +obrazków, nie widać wtedy, jak są one rysowane, za to można obserwować końcowy efekt. Po
 +restarcie systemu do komórki SDMCTL zapisywana jest wartość 34, czyli bitowo %100010, co
 +oznacza włączenie bezpośredniego dostępu ANTIC-a do pamięci i ustawienie standardowego pola gry.
</pre> </pre>

Wersja z dnia 15:10, 24 gru 2004

Specjalnie zaprojektowany dla Atari XE/XL układ odpowiedzialny za generowanie grafiki. Nowocześniejszym układem była MARIA montowana w konsoli Atari 7800.

cyt. Tajemnice Atari nr 2/92

Jednym z ciekawych układów elektronicznych, jakie można znaleźć wewnątrz komputera ATARI XL/XE
jest procesor graficzny ANTIC. Jest to układ scalony, którego zadaniem jest obrazowanie danych
z pewnego obszaru pamięci komputera. To, co widzimy na ekranie monitora, kiedy siadamy przed
komputerem jest efektem pracy ANTIC-u. Sedno działania procesora graficznego tkwi w tzw.
bezpośrednim dostępie do pamięci, zwanym krótko DMA (z ang. Direct Memory Access). Po prostu,
ANTIC pobiera dane do wyświetlenia z pamięci bez pośrednictwa głównego procesora, "podkradając"
mu jednak nieco czasu, czyli zwalniając jego tempo pracy. Jak napisałem powyżej, ANTIC jest
prawdziwym procesorem z własnym dwunastobitowym licznikiem rozkazów i zestawem instrukcji.
Wykonuje on program, którego adres zapisany jest w słowie SDLSTL, zajmującym komórki pamięci o
adresach 560 i 561, czyli $0230 i $0231.

   W wyniku działalności ANTIC-u widzimy obraz, którego podstawowym składnikiem jest tzw. pole
gry (ang. playfield). Dodatkowo, może on wyświetlać niezależne obiekty graficzne, które łatwo
animować, tzw. graczy (ang. players) i pociski (ang. missiles)


$022f 00559 SDMCTL 


   Ta komórka pamięci steruje bezpośrednim dostępem do pamięci procesora graficznego. Jest ona
cieniem sprzętowego rejestru DMACTL (54272, czyli $d400) i jej zawartość traktowana jest
bitowo. Znaczenie bitów SDMCTL jest następujące:

bit 0, 1 rodzaj pola gry
bit 2 DMA dla pocisków
bit 3 DMA dla graczy
bit 4 rozdzielczość pionowa gracza
bit 5 DMA dla obrazu.

   Dwa najmłodsze bity definiują rodzaj wyświetlanego pola gry tworząc kombinacje:

0 0 pole gry nie jest wyświetlane
0 1 wąskie pole gry (32 znaki w trybie 0)
1 0 normalne pole gry (40 znaków w trybie 0)
1 1 szerokie pole gry (48 znaków w trybie 0)

   Podane wyżej ilości znaków dość dobrze określają szerokości odpowiednich pól gry, chociaż
ten sposób określania rozmiaru ekranu nie jest w pełni zgodny z terminologią, zalecaną przez
firmę ATARI. Gwoli ścisłości warto więc zaznaczyć, że powinno się w tym wypadku mówić o tzw.
cyklach koloru (ang. color clocks), których liczba dla odpowiednich pól gry przedstawia się
następująco:

wąskie pole gry 128 cykli koloru
normalne pole gry 160 cykli koloru
szerokie pole gry 192 cykle koloru.

   Nie wszystkie telewizory i monitory pozwolą nam zobaczyć cały obraz, kiedy zażądamy wyświetlenia szerokiego pola gry, ale taka możliwość jest przydatna choćby wtedy, gdy irytują
nas ramki z lewej i prawej strony wyświetlanego obrazu.

Bity nr 2 i 3 uruchamiają (po wpisaniu do nich 1), lub blokują (po wpisaniu 0), odpowiednio DMA
dla pocisków i dla graczy. Oznacza to w praktyce, że albo widać graczy i pociski, albo ich nie
widać. Oczywiście można włączyć np. tylko DMA dla graczy lub pocisków, są one niezależne.

Bit nr 4 definiuje sposób wyświetlania gracza. Więcej szczegółów na ten temat zamieszczę przy
okazji opisu tej techniki.

Bit nr 5 włącza (po zapisaniu 1), lub wyłącza (po zapisaniu 0) bezpośredni dostęp ANTIC-a do
pamięci, a co za tym idzie wyświetlanie obrazu. Jeśli czasem zdarza się, że program wykonuje
dużą ilość np. obliczeń, których wyniki nie są dynamicznie prezentowane na ekranie, to warto na
ten czas wyłączyć DMA dla procesora graficznego. Przestanie on wtedy pracować równolegle z
6502, co zwiększy szybkość tęgo ostatniego o ok. 30 procent. Aby wyłączyć DMA dla ANTIC-a,
trzeba najpierw odczytać zawartość komórki SDMCTL i zapamiętać ją, później zaś wpisać do niej
zero. Po zakończeniu operacji, które chcemy przyspieszyć, należy zapisać na powrót zapamiętaną
wartość do tego rejestru. Często warto także zgasić ekran podczas ładowania do pamięci
obrazków, nie widać wtedy, jak są one rysowane, za to można obserwować końcowy efekt. Po
restarcie systemu do komórki SDMCTL zapisywana jest wartość 34, czyli bitowo %100010, co
oznacza włączenie bezpośredniego dostępu ANTIC-a do pamięci i ustawienie standardowego pola gry.
Personal tools