Atari BASIC
From Atariki
Wersja z dnia 05:31, 7 lis 2005 KMK (Dyskusja | wkład) ← Previous diff |
Wersja z dnia 05:33, 7 lis 2005 KMK (Dyskusja | wkład) Next diff → |
||
Linia 8: | Linia 8: | ||
* Revision A: sprzedawana jako [[kartridż]] razem z komputerami serii [[400]] i [[800]] lub oddzielnie; | * Revision A: sprzedawana jako [[kartridż]] razem z komputerami serii [[400]] i [[800]] lub oddzielnie; | ||
- | * Revision B: w założeniu poprawiona wersja przeznaczona dla [[800XL]] i faktycznie wbudowana w znacznej części modeli XL. Ta wersja BASIC-a miała sporo błędów. | + | * Revision B: w założeniu poprawiona wersja przeznaczona dla [[800XL]] i faktycznie wbudowana w znacznej części modeli XL. Nie występuje na kartridżu. Ta wersja BASIC-a miała jeden-dwa poważne błędy. |
- | * Revision C: pozbawiona (większości) błędów rewizji B, wbudowana w ostatnich partiach komputerów [[Atari XL|XL]] i wszystkich [[Atari XE|XE]]. | + | * Revision C: pozbawiona (większości) błędów rewizji B, wbudowana w ostatnich partiach komputerów [[Atari XL|XL]] i wszystkich [[Atari XE|XE]]. Wydana także w niewielkiej ilości na kartridżach (dla posiadaczy starszych komputerów). |
Wersje można odróżnić zadając interpreterowi komendę '''? PEEK(43234)'''. Odpowiedź "162" oznacza rewizję A, "96" rewizję B, a "234" rewizję C. | Wersje można odróżnić zadając interpreterowi komendę '''? PEEK(43234)'''. Odpowiedź "162" oznacza rewizję A, "96" rewizję B, a "234" rewizję C. |
Wersja z dnia 05:33, 7 lis 2005
Atari BASIC, właściwie Shepardson BASIC, to wersja języka programowania BASIC (Beginners All-purpose Symbolic Instruction Code), przygotowana na potrzeby komputerów Atari 8-bit. Zaprogramowany przez Shepardson Microsystems na zlecenie firmy Atari, był sprzedawany razem z komputerem, a w późniejszych modelach wbudowany. Objętość interpretera wynosi osiem kilobajtów. W późniejszych latach prawa do Atari BASIC-a przejęła firma OSS.
Od innych wersji BASIC-a Atari BASIC już na pierwszy rzut oka odróżnia to, że interpreter dokonuje kontroli składni natychmiast po wpisaniu polecenia lub wiersza programu przez użytkownika (wiele wersji BASIC-a na inne komputery kontroluje składnię dopiero podczas wykonywania programu). Inna jest też obsługa zmiennych tekstowych: brak jest wielowymiarowych tablic tekstowych, a zmienne jednowymiarowe (stringi) należy obowiązkowo deklarować jako tablice właśnie.
Powód tych różnic jest prosty: Atari BASIC nie jest "klonem" Microsoft BASIC-a, który zdefiniował najbardziej rozpowszechniony standard tego języka. Zamiast tego Atari BASIC jest implementacją standardu opracowanego przez firmę Data General.
Dostępne są następujące wersje Atari BASIC-a:
- Revision A: sprzedawana jako kartridż razem z komputerami serii 400 i 800 lub oddzielnie;
- Revision B: w założeniu poprawiona wersja przeznaczona dla 800XL i faktycznie wbudowana w znacznej części modeli XL. Nie występuje na kartridżu. Ta wersja BASIC-a miała jeden-dwa poważne błędy.
- Revision C: pozbawiona (większości) błędów rewizji B, wbudowana w ostatnich partiach komputerów XL i wszystkich XE. Wydana także w niewielkiej ilości na kartridżach (dla posiadaczy starszych komputerów).
Wersje można odróżnić zadając interpreterowi komendę ? PEEK(43234). Odpowiedź "162" oznacza rewizję A, "96" rewizję B, a "234" rewizję C.
Atari BASIC doczekał się paru ulepszonych (ale kompatybilnych) odmian:
Dla ośmiobitowych Atari wydano także Microsoft BASIC, który jednak, ze względu na brak kompatybilności z Atari BASIC, nie zyskał żadnej popularności i jest bardzo rzadki.
Błędy w Atari BASIC
W Atari BASIC rev. C zostało parę drobnych błędów, z których większość dotyczy procedur kontroli składni.
- instrukcja DIM pozwala się wpisać bez parametrów (np.: 10 DIM: DIM: DIM: DIM). Wykonanie czegoś takiego prowadzi na ogół do zawieszenia interpretera.
- instrukcje NOTE i STATUS przyjmują tablicę numeryczną jako parametr (np. 10 STATUS #1,A(0)); wykonanie tego powoduje przypisanie wartości Bóg wie do czego, ale na pewno nie do wskazanej zmiennej.
- 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ż Turbo BASIC XL.