Ready/Run

Takie sobie archiwum listingów ze starych magazynów komputerowych


Grafika w DLI
  • Język programu: Basic
  • Platforma: Atari XE/XL
  • Kod zamieszczono w Bajtek 3/1988
  • Autor listingu: Wojciech Wylon
  • Listing nadesłał: Amarok

Stan listingu:

4
Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku

Atari posiada bardzo duże możliwości graficzne. Niestety z poziomu BASIC-a ilość kolorów dostępna jednocześnie na ekranie wynosi w najlepszym przypadku 16.

Przedstawiony w artykule program wykorzystujący przerwania niemaskowalne DLI generowane przez ANTIC umożliwia zmianę zawartości rejestrów koloru w poszczególnych liniach. Daje to maksymalną ilość 256 kolorów na ekranie.

Przerwania DLI są wywoływane przy czytaniu programu ANTIC-a. Bliższe informacje dotyczące programowania tego układu zawarte są w „Komputerze” 8/86. Przerwania są wywoływane przy dowolnym rozkazie ANTIC-a, który ma ustawiony najstarszy, siódmy bit. Adres programu obsługującego przerwania wskazywany jest przez wektor DLIVKT (512, 513).

Wróćmy do programu. Niżej przestawione są cztery wydruki. Po przepisaniu pierwszego i uruchomieniu otrzymujemy program, który przedstawia wydruk drugi. Są to dwa programy w języku wewnętrznym. Pierwszy modyfikuje i lokuje program przerwań w odpowiednim miejscu oraz ustawia wektor. Jest on wywoływany przez: 

A = USR (ADR (OB$) + 52, ADR (OB$), ADPR, ILO, ADDA)

gdzie:

ADPR — adres, od którego ma być umieszczony program obsługi przerwań 

DLI — program o długości 52 bajtów; 

LO — ilość uaktywnionych przerwań; 

ADDA — obszar początku danych dla programu. 

(...)

Drugi program w języku wewnętrznym jest wywoływany przez:

POKE ADDA,0:A = USR(ADR(OB$) + 156, ADR(OB$) + 171)

i uaktywnia przerwania DLI w momencie przerwania synchronizacji pionowej.

Wydruk trzeci to procedura zmieniająca program ANTIC-a i uruchamiająca przerwania. Działa w dowolnej grafice. Przed uruchomieniem jej w pamięci musi się znajdować program, który przedstawia drugi wydruk. Jedynki w ciągu C1$ reprezentują linie na ekranie, w których mają wystąpić przerwania, zera — linie, w których nie będzie przerwań. Przed uruchomieniem procedury trzeba umieścić w pamięci, poczynając od ADDA + 1 kolory poszczególnych linii. W przeciwnym razie większość ekranu po uruchomieniu procedury zmieni kolor na czarny. 

UWAGI:

  1. Program obsługi przerwań DLI jest wywoływany zawsze po zakończeniu rysowania przez ANTIC linii na ekranie i np. przy włączonym przerwaniu w pierwszej linii zmiana koloru nastąpi w drugiej.
  2. Zmiana koloru w jednej linii powoduje zmianę koloru także w następnych, w których nie ma uaktywnionych przerwań
  3. Przed wywołaniem drugiego programu w języku wewnętrznym program ANTIC-a powinien być już zmieniony.
  4. Chcąc wyłączyć przerwania trzeba albo zmienić tryb graficzny, albo wpisać instrukcję POKE 54286,127, albo nacisnąć RESET.

Czwarty wydruk jest krótkim programikiem demonstrującym możliwości, jakie daje zastosowanie opisywanych przerwań DLI.

 

 

Jak zaladować (najprostsza metoda)

ALTIRRA: 

  • Włączyć SYSTEM->INTERNAL BASIC (Basic Without OPTION Key)
  • Cold Reset (Powinien wejść do Basica)
  • LOAD "D:DLI1.BAS" lub LOAD "D:DLI2.BAS" (do 4)
  • RUN
 
Grafika w DLI