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