ANTIC

From Atariki

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

← Previous diff
Wersja z dnia 19:58, 24 gru 2004
Dracon (Dyskusja | wkład)
(dodane rozwinięcie skrótu nazwy A N T I C)
Next diff →
Linia 1: Linia 1:
-Specjalnie zaprojektowany dla Atari XE/XL układ odpowiedzialny za generowanie grafiki. Nowocześniejszym układem była [[MARIA]] montowana w konsoli Atari [[7800]].+'''ANTIC''' (''Alphanumeric Television Interface Controller'') - 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 cyt. Tajemnice Atari nr 2/92

Wersja z dnia 19:58, 24 gru 2004

ANTIC (Alphanumeric Television Interface Controller) - 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