Ready/Run

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


Drago Basic
  • Język programu: Basic
  • Platforma: Commodore C64
  • Kod zamieszczono w Bajtek 12/1987
  • Autor listingu: Jan Jasiński
  • Listing nadesłał: Faust

Stan listingu:

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

Chociaż Commodore 64 ma ogromne możliwości graficzne, to korzystanie z nich jest bardzo skomplikowane, zwłaszcza dla początkujących. Ze względu na duża liczbę instrukcji POKE czy pętli FOR... NEXT programy sa mało przejrzyste i trudne do zrozumienia.

 
Oprócz tego, niejako dodatkowo, wymagana jest od użytkownika spora wiedza dotycząca organizacji pamięci w tym komputerze, sposobów rezerwowania jej odpowiedniego obszaru dla potrzeb ekranu graficznego czy działania na bitach. Ponieważ punkt o współrzędnych 0,0 znajduje się w lewym górnym rogu ekranu tworzenie np. wykresów funkcji wymaga ponadto dodatkowych obliczeń. Z tych też powodów chciałbym przedstawić Czytelnikom "BAJTKA" rozszerzenie graficzne standardowego interpretera BASIC — DRAGO BASIC.
Istnieje już sporo rozszerzeń tego typu — GRAPHICS BASIC, SIMONS BASIC, SUPERGRAPHIC itp. Niestety możliwość korzystania z tych programów limituje w dużym stopniu brak ich polskojęzycznych opisów dość rzadko dostępnych nawet na giełdach komputerowych. Innym mankamentem jest zmniejszenie ilości dostępnej dla użytkownika pamięci — np. SIMONS BASIC zabiera jej od 8 do 16 KB, Co nie pozostaje oczywiście bez wpływu na jakość naszych programów.
DRAGO BASIC nie jest rozszerzeniem w takim znaczeniu, w jakim zwykle się to rozumie. Zamiast bowiem dopisywania nowych instrukcji czy rozkazów wykorzystano tu cztery istniejące i rzadko używane instrukcje — VERIFY, WAIT, LET oraz CONT. Nowe instrukcje graficzne składają się z takiej samej ilości liter i nazywają się TRYBEK, GUMA, BAR i RYPU. Instrukcje te są "umieszczone" w tych samych miejscach pamięci ROM co stare, z tym, że zmieniono odpowiednio adresy procedur instrukcje te realizujących. Procedury te zostały umieszczone w dodatkowych 4 KB pamięci od adresu 49152 ($C000) dzięki czemu mamy do dyspozycji całe 38 KB pamięci RAM. Zaletą DRAGO BASIC jest przeniesienie punktu o współrzędnych 0,0 w lewy DOLNY róg ekranu czyli tak jak na osi współrzędnych. Program ten pozwala nam na tworzenie grafiki w standardowym trybie graficznym Commodore — rozdzielczość 320*200 punktów, dwa kolory.
Podczas wpisywania DRAGO BASIC należy zwrócić baczną uwagę, aby nie pomylić się zwłaszcza podczas wpisywania linii z DATA — liczby zawarte w tych liniach to właśnie nasze nowe procedury. Ponieważ po wpisaniu kodu maszynowego program samoczynnie się kasuje, ważne jest również, aby przed jego uruchomieniem zapisać go najpierw na taśmie czy dyskietce. Jeżeli program zostanie wpisany poprawnie, po uruchomieniu pojawi się na ekranie plansza tytułowa oraz usłyszymy melodię — program jest gotowy do użytku.
Nowe instrukcje mają następującą postać:
TRYBEK (parametr)
Instrukcja ta służy do zmiany ekranu graficznego na tekstowy i odwrotnie. TRYBEK 1 pozwala nam na przejście do trybu pracy graficznego, TRYBEK 0 z kolei umożliwia powrót do trybu tekstowego. Gdy parametr nie będzie równy ani 1 ani 0, komputer wyświetli komunikat ILLEGAL QUANTITY ERROR.
GUMA
Jest to odpowiednik PRINT CHRS(147) w trybie tekstowym —
GUMA pozwala nam skasować (bezpowrotnie) całą zawartość ekranu graficznego. 
BAR kolor kreski, kolor tła 
Za pomocą BAR możliwe jest przypisanie wybranych kolorów dla kreski (punktu) oraz tła ekranu graficznego. Numery kolorów są zgodne z numerami podanymi w instrukcji obsługi komputera (np. 0 = czarny, 1 = biały itd.). 
RYPU X,Y
RYPU umożliwia nam wykreślenie punktu na ekranie graficznym. Parametr X może przybierać wartości w zakresie 0-319, parametr Y w zakresie 0-199. Należy pamiętać, że punkt o współrzędnych 0,0 znajduje się w DOLNYM lewym rogu ekranu. Powrót do normalnego trybu pracy komputera możemy uzyskać za pomocą kombinacji klawiszy STOP i RESTORE wciśniętych jednocześnie. Powrót do programu jest możliwy za pomocą POKE 1,54. Symbol "(CLR)" w programie oznacza czyszczenie ekranu.
A oto przykładowy program pozwalający nam na wykreślenie paraboli:
 
10 TRYBEK 1: GUMA : BAR 1,0
20 FOR X = 0 TO 240: Y = .01*(X-120) ^2+20 30 RYPU X,Y: NEXT 
40 FOR X = 0 TO 240: RYPU X,20: NEXT
50 FOR Y = 0TO 199: RYPU 120.Y: NEXT
60 GET A$: IF A$="" THEN 60 70 TRYBEK 0: END
Drago Basic