Ready/Run

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


80 znaków w wierszu
  • Język programu: Basic
  • Platforma: Atari XE/XL
  • Kod zamieszczono w Bajtek 10/1988
  • Autor listingu: Michał Skowroński
  • Listing nadesłał: Amarok

Stan listingu:

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

Profesjonalne komputery umożliwiają zwykle uzyskanie na ekranie monitora 80 znaków w każdej linii. W porównaniu z tym, 40 znaków w linii dostępne na Atari, to śmiesznie mało. Zamieszczamy więc program, który umożliwia podwojenie tej liczby.

Program działa w trybie graficznym 8 i składa się z dwóch części. Pierwsza generuje nowy zestaw znaków, który umieszczony jest od adresu 31744 i zajmuje 1 KB pamięci (z tego względu program, który będzie wykorzystywał przedstawioną procedurę musi zostawiać w grafice 8 przynajmniej 1,5 KB wolnej pamięci). Właściwa procedura stanowi drugą część programu. Wczytywana jest ona na 6 stronę pamięci. Po wczytaniu obu części program w Basicu może być usunięty (w tym celu należy zamienić instrukcję END w linii 1050 na NEW lub RUN "C:").
Aby uzyskać tekst trzeba teraz włączyć tryb GRAPHICS 8, a następnie użyć instrukcji:

I = USR( 1536, ADR(T$),X, Y,LEN(T$))

gdzie T$ jest tekstem, który chcemy wyświetlić: X jest współrzędną poziomą początku tekstu (od 0 do 79, a więc z dokładnością 4 punktów ekranu); zaś Y jest współrzędną pionową (od 0 do 184, a z oknem tekstowym do 152),
Umieszczony na ekranie tekst wymazuje tło, na którym się pojawi (oprócz pierwszego znaku przy nieparzystej wartości X). Gdy zamierzamy wykonać nadruk na istniejącym rysunku, to należy przed wywołaniem procedury przez USR, wpisać instrukcję POKE 1770,128. Teraz tekst w miejscach mających kolor 1 będzie miał kolor 0 i odwrotnie. POKE 1664,13 spowoduje, że tekst zawsze będzie miał kolor 1. Normalny tryb pracy programu przywracają instrukcje POKE 1770,131 i POKE 1664,77.
Przedstawiona procedura ma jednak kilka ograniczeń. Przede wszystkim nie może wykonywać napisów w negatywie (inverse video). Nie pozwala także na zmianę miejsca umieszczenia pamięci obrazu. To ostatnie ograniczenie można ominąć wpisując instrukcje POKE 1615,H i POKE 1622,L, gdzie H i L to odpowiednio starszy i młodszy bajt adresu pamięci obrazu. Ponieważ przesunięcie obrazu może spowodować zniszczenie obszaru zaiętego przez zestaw znaków, to również można go przenieść w inne miejsce. W tym celu trzeba zmienić wartość 31744 w linii 10 na nową i wpisać starszy bajt nowego adresu przez POKE 1577,A/256. Trzeba przy tym pamiętać, aby zestaw znaków rozpoczynał się od początku strony, a więc od adresu podzielnego przez 256.
Efektywne wykorzystanie programu wymaga dołączenia go do innego programu w Basicu lub (po disasemblacji) do programu w kodzie maszynowym. Można także spowodować, aby program po umieszczeniu w pamięci zestawu znaków i procedury maszynowej uruchamiał inny program w Basicu.

Listing pochodzi z repozytorium listingów Basic autorstwa AMAROK

Jak zaladować (najprostsza metoda)

ALTIRRA: 

  • Włączyć SYSTEM->INTERNAL BASIC (Basic Without OPTION Key)
  • Cold Reset (Powinien wejść do Basica)
  • LOAD "D0:80ZNAKOW.BAS"
  • RUN