!!!!!!! TURBO BASIC XL czytelnia Try2emu

TURBO BASIC XL

Każdy, kto choć trochę pracował z Atari 800 XL lub 130 XE zapewne spostrzegł, że BASIC nie jest niestety najmocniejsza strona tych komputerów. Interpreter języka Atari BASIC został opracowany ładnych kilka lat temu i mimo, że oprócz pod stawowych rozkazów zawiera także instrukcje do programowania n.p. grafiki lub dźwięku, to jednak sprawia czasem trochę kłopotu. Często w czasie żmudnych obliczeń lub pracy jakiegoś złożonego programu graficznego irytująca staje się stosunkowo wolna praca interpretera. Również niemałych problemów może przysporzyć korzystanie z tablic lub operacie na ciągach tekstów.

Aby pozbyć się tych niedogodności powstało kil ka programów rozszerzających wbudowany BA SIC. Jednym z nich jest interpreter i kompilator TURBO BASIC XL. Mimo, że jest dostępny nawet w wersji kasetowej, to nie wszyscy jego posiada cze mają dostęp do szerszej dokumentacji.

TURBO BASIC XL pozwala na pełniejsze wyko rzystanie możliwości komputera, a niektóre nowe rozkazy znacznie ułatwiają pracę programiście. Działa szybciej niż stary Atari BASIC i jest z nim w jedną stronę kompatybilny. Mimo wielu niewątpli wych zalet nie można n.p. sterować grafiką graczy i pocisków bez użycia POKE'ów lub bardziej elegan cko obsługiwać generatory dźwięku.

Podanie zestawienia nowych rozkazów pozwoli wszystkim użytkownikom Atari, posiadaczom TUR BO BASIC-a XL na łatwiejszą pracę z wykorzysta niem tego programu.

INSTRUKCJE STRUKTURALNE

IFwl: ...: ENDIF

jeżeli spełnione jest wl, to wtedy ...

IF wl: ...(1): ELSĘ ...(2): ENDIF

jeżeli spełnione jest wl, to wtedy ...(1), jeżeli nie, to ...(2)

REPEAT ... UNTIL wl wykonywanie    aż do spełnienia warunku wl

WHILE wl: ...: WEND

wykonywanie    gdy spełniony jest warunek wl

DO ... LOOP

wykonywanie ... cały czas, pętla bez końca

EXIT

skok do końca pętli DO/LOOP, REPEAT/UNTIL, WHILE/WEND, FOR/NEXT

PROC n początek procedury o nazwie n

ENDPROC koniec procedury

EXEC n

wykonanie procedury o nazwie n

ON w EXEC n1, n2, n3 wykonanie procedury o nazwie n1, n2 lub n3 w zależności od wartości w

INSTRUKCJE REDAKCYJNE

*L-

wyłącza tabulację przy listowaniu programu, kasowanie poprzez *L+

DEL l1, l2

kasuje linie programu od numeru l1 do l2

RENUM l1, l2, l3 przenumerowuje linie programu od l1 do końca tak, że linia l1 otrzymuje numer l2, a odstęp między kolejnymi numerami linii wynosi l3

DUMP

wyświetlenie zastosowanych zmiennych, używa się podobnie jak LIST przy współpracy z urządzeniem zewnętrznym

TRACE+

włącza tryb śledzenia programu, kasowanie po przez TRACE-

*B+

traktowanie wciśnięcia klawisza BREAK jako błąd, który można przejąć przez TRAP, kasowanie po przez *B-

INSTRUKCJE PROGRAMOWE

MOVE l1, l2, l3 przepisanie obszaru pamięci rozpoczynającego się od adresu l1 i długości l3 bajtów do obszaru zaczy nającego się od adresu l2

- FOR I = 0 TO I3-1: POKE I2+I, PEEK (I1+1): NEXT I

-MOVE l1, l2, l3

transfer bloku podobnie jak przy MOVE tylko, że obszar pamięci przepisywany jest od końca

- FOR I = I3-1 TO 0: POKE I2 + I, PEEK (I1+1): NEXT I

BGET #l1, l2, l3 odczyt bloku i wpisanie go w podane miejsce pamięci

- FOR I=0 TO I3-1: GET # I1, A: POKE I2 + I, A: NEXT I

PUT I1 wyjście na IOCB #0

- PUT #0, l1 GET l1

odczyt z klawiatury

- OPEN # 7,4,0,"K:": GET #7, 11: CLOSE #7

FILLTO l1, l2

wypełnianie obszaru

- POSITION l1,l2: XIO 18, #6, 0, 0, "S:"

FCOLOR l1

ustalenie koloru dla instrukcji FILLTO

- POKE 765,l1

CLS 6 dla trybów graficznych lub CLS dla trybu tekstowego 0

czyszczenie ekranu

- PRINT#6;CHR$(125) lub PRINT CHR$(125)

CIRCLE l1, l2, l3, l4

kreślenie okręgu o środku w punkcie l1, l2 i pro mieniu l3 lub jeżeli zostanie podane l4, to elipsy o osiach l3 i l4

PAINT l1, l2 zamalowywanie zamkniętego obszaru

PAUSE l1

przerwa w działaniu programu na l1/50 sekundy

DSOUND l1, l2, l3, l4 dźwięk z "podwójnego" generatora — l2 =0 - 65535, inne parametry jak przy SOUND

SOUND lub DSOUND wyciszenie wszystkich generatorów dźwięku

- FOR I=0 TO 3: SOUND I,0,0,0: NEXT I

CLOSE

zamknięcie kanałów

- FOR I = 1 TO 7: CLOSE#l: NEXT I

TEXT l1, 12, t1$

wydruk tekstu na ekranie w trybie graficznym, tekst t1 na pozycji l1, l2 (w pixelach)

INPUT t1$, I

instrukcja INPUT z komentarzem t1$

FUNK

FRAC(I)= część ułamkowa I

TRUNC (I)= część  całkowita I

RND = RND(0)

RND(I)= część całkowita z RND(0)*I

HEX$(I) = I$ — zamiana liczby dziesiętnej I na heksadecymalną I$

DEC (I$) = I — zamiana liczby heksadecymalnej I$ na dziesiętną I

I1 DIV I2 — dzielenie bez reszty I1/I2

I1 MOD I2 —reszta z dzielenia I1/I2

TIME$=I1$ — ustawianie zegara, I1$ w formacie „hhmmss" (hh — godzina, mm — minuty, ss — sekundy)

TIMES — czas w formacie „hhmmss"

TIME — PEEK(20) + 256*PEEK(18)+65536*PEEK(18)

DPEEK(I1) — PEEK(I1) + 256*PEEK(I1 +1) INKEY$ — PEEK (763)

INSTR (I1$, I2$[,I1]) — wyszukiwanie podciągu w ciągu od pozycji I1

UINSTR (I1$, I2$[,I1]) — wyszukiwanie podciągu w ciągu od pozycji 11 bez uwzględnienia bitów 6 i 7

ERR —PEEK (195)

ERL — PEEK (186) + 256*PEEK (187)

INSTRUKCJE DYSKOWE

DIR "Dn: ." — spis zawartości dysku

RENAME "Dn: lI, l2" — zmiana nazwy z l1 na l2

DELETE "Dn:l1" — usunięcie pliku

LOCK "Dn:l1" — zabezpieczenie pliku

UNLOCK "Dn:l1" — odbezpieczenie pliku

BLOAD "Dn:l1" — ładowanie pliku

BRUN "Dn:l1" — ładowanie i uruchomienie pliku

OZNACZENIA

I1, I2, 13 — zmienne liczbowe

I1$, I2$, I3$ — zmienne alfanumeryczne

wl — wyrażenie logiczne

t1$ —tekst

... — ciąg instrukcji programu

n — nazwa procedury

 

Piotr Wolak