Turbo BASIC XL

From Atariki

Revision as of 14:40, 8 lip 2006; view current revision
←Older revision | Newer revision→
Jump to: navigation, search

Grafika:tbxl.png

Odmiana języka BASIC dla komputera Atari XL/XE, stworzona w 1985 roku przez niemieckiego programistę Franka Ostrowskiego i rozpowszechniona jako program public domain przez czasopismo "Happy Computer". Oprócz wersji XL istnieje też odmiana przeznaczona dla komputerów serii 400/800.

Turbo BASIC wgrywa się do pamięci RAM komputera z dysku lub taśmy. Interpreter charakteryzuje się dużą ilością rozszerzeń w stosunku do oryginalnego Atari BASIC-a, istnieje też kompilator Turbo BASIC XL Compiler.

Pierwszorzędną zaletą Turbo BASIC-a XL jest jego szybkość, programy wykonywane są od trzech do pięciu razy szybciej niż w interpreterze Atari BASIC, co jest w sporej mierze wynikiem tego, iż Turbo BASIC ma własny, bardzo szybki pakiet procedur zmiennoprzecinkowych, który sprawdza się świetnie w większości zastosowań.

Spis treści

Tokeny Turbo BASIC-a

Zasadnicza struktura programu w Turbo BASIC-u XL jest taka sama, jak w Atari BASIC - zmiany polegają wyłącznie na dodaniu nowych instrukcji, funkcji i operatorów do listy tychże znanych interpreterowi Atari BASIC.

Tokeny instrukcji

Tokeny o kodach poniżej 56 są takie same jak w Atari BASIC, patrz Tokeny instrukcji Atari BASIC.

HexDecInstrukcja
$3856DPOKE
$3957MOVE
$3a58-MOVE
$3b59*F
$3c60REPEAT
$3d61UNTIL
$3e62WHILE
$3f63WEND
$4064ELSE
$4165ENDIF
$4266BPUT
$4367BGET
$4468FILLTO
$4569DO
$4670LOOP
$4771EXIT
$4872DIR
$4973LOCK
$4a74UNLOCK
$4b75RENAME
$4c76DELETE
$4d77PAUSE
$4e78TIME$=
$4f79PROC
$5080EXEC
$5181ENDPROC
$5282FCOLOR
$5383*L
$5484--
$5585RENUM
$5686DEL
$5787DUMP
$5888TRACE
$5989TEXT
$5a90BLOAD
$5b91BRUN
$5c92GO#
$5d93# (etykieta)
$5e94*B
$5f95PAINT
$6096CLS
$6197DSOUND
$6298CIRCLE
$6399%PUT
$64100%GET

Tokeny o kodach powyżej 100 sa niezdefiniowane.

Tokeny operatorów i funkcji

Tokeny o kodach od 14 do 84 są takie same jak w Atari BASIC, patrz Tokeny operatorów, funkcji i zmiennych Atari BASIC.

HexDecOperator lub funkcja
$000prefiks tokenu zmiennej
$01-$0C1-12niezdefiniowane
$0d13stała szesnastkowa
$0e14stała dziesiętna
$0f15stała tekstowa
$1016niewykorzystany
$1117niewykorzystany
$1218przecinek
$1319znak $
$1420koniec instrukcji
$1521średnik
$1622koniec linii
$1723GOTO w instrukcji ON
$1824GOSUB w instrukcji ON
$1925TO
$1a26STEP
$1b27THEN
$1c28znak #
$1d29liczbowe "mniejszy lub równy"
$1e30liczbowe "różny"
$1f31liczbowe "większy lub równy"
$2032liczbowe "mniejszy"
$2133liczbowe "większy"
$2234liczbowe "równy"
$2335operator potęgowania ^
$2436operator mnożenia *
$2537operator dodawania +
$2638operator odejmowania -
$2739operator dzielenia
$2840NOT
$2941OR
$2a42AND
$2b43nawias otwierający wyrażenie liczbowe
$2c44nawias zamykający wyrażenie liczbowe
$2d45operator przypisania wartości liczbowej =
$2e46operator przypisania wartości tekstowej =
$2f47tekstowe "mniejszy lub równy"
$3048tekstowe "różny"
$3149tekstowe "większy lub równy"
$3250tekstowe "mniejszy"
$3351tekstowe "większy"
$3452tekstowe "równy"
$3553+ znak liczby
$3654- znak liczby
$3755nawias otwierający indeks w zmiennej tekstowej
$3856nawias otwierający indeks w zmiennej tablicowej
$3957nawias otwierający wymiar zmiennej tablicowej
$3a58nawias otwierający argumenty funkcji
$3b59nawiast otwierający wymiar zmiennej tekstowej
$3c60przecinek w zmiennej tablicowej
$3d61STR$
$3e62CHR$
$3f63USR
$4064ASC
$4165VAL
$4266LEN
$4367ADR
$4468ATN
$4569COS
$4670PEEK
$4771SIN
$4872RND
$4973FRE
$4a74EXP
$4b75LOG
$4c76CLOG
$4d77SQR
$4e78SGN
$4f79ABS
$5080INT
$5181PADDLE
$5282STICK
$5383PTRIG
$5484STRIG
$5585DPEEK
$5686binarne AND
$5787binarne OR
$5888INSTR
$5989INKEY$
$5a90EXOR
$5b91HEX$
$5c92DEC
$5d93DIV
$5e94FRAC
$5f95TIME$
$6096TIME
$6197MOD
$6298EXEC w ON
$6399RND
$64100RAND
$65101TRUNC
$66102%0
$67103%1
$68104%2
$69105%3
$6a106GO# w ON
$6b107UINSTR
$6c108ERR
$6d109ERL

Tokeny po kodach ponad 109 są neizdefiniowane.

Tokeny zmiennych

Tokeny zmiennych są zasadniczo takie same jak w Atari BASIC, tj. token jest to ośmiobitowy numer kolejny zmiennej w tablicy wartości zmiennych, zwiększony o 128. System ten ogranicza liczbę zmiennych w Atari BASIC do 128. Turbo BASIC XL jednak pozwala na użycie większej liczby zmiennych przez zastosowanie prefiksu o kodzie $00, wykazanego w powyższej tabeli jako "prefiks tokenu zmiennej".

Napotkanie go w miejscu oczekiwanego tokenu operatora, funkcji lub zmiennej oznacza, że następny bajt zawiera właściwy token zmiennej z zestawu powyżej pierwszych 128 zmiennych. Token ten jest to numer zmiennej w tabeli wartości zmiennych, zmniejszony o 128 - a więc następująca po prefiksie liczba $00 oznacza zmienną numer 128 (licząc, że pierwsza ma numer 0), $01 - numer 129 i tak dalej.

Prefiks zwiększa zakres tokenów zmiennych o 256 ponad podstawowe 128, a więc razem "pojemność systemu" wynosi w tym wypadku 384 zmienne. Wydaje się jednak, że Turbo BASIC XL nie pozwala zdefiniować więcej niż 256 zmiennych.

Błędy w Turbo BASIC-u

  • uruchomienie programu: 10 TRAP 10:GET #1,A powoduje całkowite zapełnienie i "zawinięcie" się stosu procesora; instrukcja TRAP wprawdzie zdejmuje ze stosu pewną ilość danych, ale rzadko bywa to ilość właściwa. Ten sam błąd ma też Atari BASIC.
  • porównanie dwóch funkcji CHR$ w jednym wyrażeniu jest zawsze prawdziwe, np. IF CHR$(1)=CHR$(2) THEN STOP spowoduje zatrzymanie programu. Ten sam błąd ma też Atari BASIC.
  • kontrola składni nie przyjmuje słów kluczowych %GET, %PUT i -MOVE jeśli są wpisane małymi literami.
  • kontrola składni przyjmuje zmienne tekstowe jako argumenty instrukcji GET, chociaż ta może zapisywać wartości tylko do zmiennych numerycznych.
  • funkcja DEC źle działa, jeśli przekazana jej liczba szesnastkowa zawiera małe litery.

Ten artykuł to tylko zalążek. Możesz pomóc rozwojowi Atariki poprzez rozszerzenie go o więcej informacji.

Personal tools