Atari BASIC

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 14:24, 15 paź 2009
Krótki (Dyskusja | wkład)
(Odnośniki zewnętrzne - atarimagazines.planetmirror.com -> atarimagazines.com)
← Previous diff
Wersja z dnia 16:32, 24 lut 2010
Yansen (Dyskusja | wkład)
(Błędy w Atari BASIC)
Next diff →
Linia 40: Linia 40:
* instrukcja DIM pozwala się wpisać bez parametrów (np.: '''10 DIM: DIM: DIM: DIM'''). Wykonanie czegoś takiego prowadzi na ogół do zawieszenia interpretera. * 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 powoduje przypisanie wartości Bóg wie do czego, ale na pewno nie do wskazanej zmiennej.+* instrukcje NOTE i STATUS przyjmują tablicę numeryczną jako parametr, np. '''10 STATUS #1,A(0)'''; wykonanie powoduje przypisanie wartości nieznanej, ale na pewno nie do wskazanej zmiennej.
* kontrola składni akceptuje znak ''Esc'' (ASCII 27) w miejsce dwukropka jako separatora instrukcji. Ten sam błąd ma też [[Turbo BASIC XL]]. * kontrola składni akceptuje znak ''Esc'' (ASCII 27) w miejsce dwukropka jako separatora instrukcji. Ten sam błąd ma też [[Turbo BASIC XL]].
* 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]]. * 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]].

Wersja z dnia 16:32, 24 lut 2010

Wersja języka programowania BASIC (Beginners All-purpose Symbolic Instruction Code), przygotowana na potrzeby komputerów Atari 8-bit. Zaprogramowany w grudniu 1978 roku 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.

Spis treści

Cechy charakterystyczne

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. Nie ma za to obowiązku specjalnego deklarowania zmiennych numerycznych: zmienna jest deklarowana przez fakt jej użycia, a początkową wartością jest zero.

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.

Wersje rozwojowe

Dostępne są następujące wersje Atari BASIC-a:

  • Revision A (C012402/C014502): sprzedawana jako cartridge razem z komputerami serii 400 i 800 lub oddzielnie; ta wersja miała cztery czy pięć poważniejszych błędów utrudniających pracę;
  • Revision B (C060302A): w założeniu poprawiona wersja przeznaczona dla 800XL i faktycznie wbudowana w znacznej części modeli XL. Ma poważny błąd w procedurach kopiowania bloków pamięci, co oględnie mówiąc ujemnie wpływa na stabilność interpretera. Wersja B wg niektórych źródeł nie występuje na kartridżu.
  • Revision C (C024947A): pozbawiona najgorszych 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" (LDY #) oznacza rewizję A, "96" (RTS) rewizję B, a "234" (NOP) rewizję C.

"Klony" Atari BASIC

Atari BASIC doczekał się paru ulepszonych (ale kompatybilnych) odmian:

Dostępne kompilatory:

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 część 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 powoduje przypisanie wartości nieznanej, ale na pewno nie do wskazanej zmiennej.
  • kontrola składni akceptuje znak Esc (ASCII 27) w miejsce dwukropka jako separatora instrukcji. Ten sam błąd ma też Turbo BASIC XL.
  • 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.
  • 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ż Turbo BASIC XL.
  • ? 1^44 daje w wyniku dwa. Ale ? 2^44 daje już w miarę poprawny wynik "1.75921859E+13" (rzeczywiście jest to 17 592 186 044 416). Dokładność potęgowania wydatnie maleje wraz ze zwiększaniem wykładnika, np. 1^1505150010 = 3, 1^2385606310 = 4, 1^9999999999 = 100 itd. Zasadniczo nie jest to błąd interpretera Atari BASIC, lecz raczej procedury logarytmowania zawartej w pakiecie matematycznym.

Zobacz też

Odnośniki zewnętrzne

Personal tools