<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl">
	<id>https://mirror.atariki.pl/w/index.php?action=history&amp;feed=atom&amp;title=Atari_BASIC</id>
	<title>Atari BASIC - Historia wersji</title>
	<link rel="self" type="application/atom+xml" href="https://mirror.atariki.pl/w/index.php?action=history&amp;feed=atom&amp;title=Atari_BASIC"/>
	<link rel="alternate" type="text/html" href="https://mirror.atariki.pl/w/index.php?title=Atari_BASIC&amp;action=history"/>
	<updated>2026-10-02T22:50:19Z</updated>
	<subtitle>Historia wersji tej strony wiki</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://mirror.atariki.pl/w/index.php?title=Atari_BASIC&amp;diff=278&amp;oldid=prev</id>
		<title>imported&gt;Atariki recovery: Reconstructed from archived HTML; see provenance manifest</title>
		<link rel="alternate" type="text/html" href="https://mirror.atariki.pl/w/index.php?title=Atari_BASIC&amp;diff=278&amp;oldid=prev"/>
		<updated>2026-10-01T08:51:48Z</updated>

		<summary type="html">&lt;p&gt;Reconstructed from archived HTML; see provenance manifest&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nowa strona&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Wersja języka programowania &amp;#039;&amp;#039;&amp;#039;BASIC&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;Beginners All-purpose Symbolic Instruction Code&amp;#039;&amp;#039;), przygotowana na potrzeby komputerów [[Atari 8-bit]]. Zaprogramowany w grudniu 1978 roku przez [http://en.wikipedia.org/wiki/Shepardson_Microsystems 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]].&lt;br /&gt;
&lt;br /&gt;
== Cechy charakterystyczne ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Powód tych różnic jest prosty: Atari BASIC nie jest &amp;quot;klonem&amp;quot; [http://en.wikipedia.org/wiki/Microsoft_Basic Microsoft BASIC]-a, który zdefiniował najbardziej rozpowszechniony standard tego języka. Zamiast tego Atari BASIC jest implementacją standardu opracowanego przez firmę [http://en.wikipedia.org/wiki/Data_General Data General].&lt;br /&gt;
&lt;br /&gt;
== Wersje rozwojowe ==&lt;br /&gt;
&lt;br /&gt;
Dostępne są następujące wersje Atari BASIC-a:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Revision A (C012402/C014502)&amp;#039;&amp;#039;&amp;#039;: sprzedawana jako [[Cartridge|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ę;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Revision B (C060302A)&amp;#039;&amp;#039;&amp;#039;: 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 nie występuje na kartridżu.[http://www.atarimagazines.com/v3n2/explore.html [1]]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Revision C (C024947A)&amp;#039;&amp;#039;&amp;#039;: pozbawiona najgorszych błędów rewizji B, wbudowana w ostatnich partiach komputerów [[XL]] i wszystkich [[XE]]. Dostępna także w niewielkiej ilości na kartridżach (dla posiadaczy starszych komputerów) co najmniej od czerwca 1984 r.[http://www.atarimagazines.com/v3n2/explore.html [2]]&lt;br /&gt;
&lt;br /&gt;
Wersje można odróżnić zadając interpreterowi komendę &amp;#039;&amp;#039;&amp;#039;? PEEK(43234)&amp;#039;&amp;#039;&amp;#039;. Odpowiedź &amp;quot;162&amp;quot; (LDY #) oznacza rewizję A, &amp;quot;96&amp;quot; (RTS) rewizję B, a &amp;quot;234&amp;quot; (NOP) rewizję C.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Klony&amp;quot; Atari BASIC ==&lt;br /&gt;
&lt;br /&gt;
Atari BASIC doczekał się paru ulepszonych (ale kompatybilnych) odmian:&lt;br /&gt;
&lt;br /&gt;
* [[Altirra BASIC]]&lt;br /&gt;
* [[BASIC A Plus|BASIC A+]]&lt;br /&gt;
* [[BASIC XL]]&lt;br /&gt;
* [[BASIC XE]]&lt;br /&gt;
* [[MultiBASIC]]&lt;br /&gt;
* [[Turbo BASIC XL]]&lt;br /&gt;
* [[U-BASIC]]&lt;br /&gt;
&lt;br /&gt;
Dostępne kompilatory:&lt;br /&gt;
&lt;br /&gt;
* [[ABC BASIC Compiler]]&lt;br /&gt;
* [[MMG BASIC Compiler]]&lt;br /&gt;
* [[Turbo BASIC XL Compiler]]&lt;br /&gt;
&lt;br /&gt;
Dla ośmiobitowych Atari wydano także [[Atari Microsoft BASIC|Microsoft BASIC]], który jednak, ze względu na brak kompatybilności z Atari BASIC, nie zyskał żadnej popularności i jest bardzo rzadki.&lt;br /&gt;
&lt;br /&gt;
== Błędy w Atari BASIC ==&lt;br /&gt;
&lt;br /&gt;
W Atari BASIC rev. C zostało parę niezbyt istotnych błędów, z których część dotyczy procedur kontroli składni.&lt;br /&gt;
&lt;br /&gt;
=== Kontrola składni ===&lt;br /&gt;
&lt;br /&gt;
* instrukcja DIM pozwala się wpisać bez parametrów (np.: &amp;#039;&amp;#039;&amp;#039;10 DIM: DIM: DIM: DIM&amp;#039;&amp;#039;&amp;#039;). Wykonanie czegoś takiego prowadzi na ogół do zawieszenia interpretera.&lt;br /&gt;
* instrukcje NOTE i STATUS przyjmują tablicę numeryczną jako parametr, np. &amp;#039;&amp;#039;&amp;#039;10 STATUS #1,A(1)&amp;#039;&amp;#039;&amp;#039;; wykonanie powoduje przypisanie wartości Bóg wie do czego, ale na pewno nie do wskazanej zmiennej.&lt;br /&gt;
* kontrola składni akceptuje znak &amp;#039;&amp;#039;Esc&amp;#039;&amp;#039; (ASCII 27) w miejsce dwukropka jako separatora instrukcji. Ten sam błąd ma też [[Turbo BASIC XL]].&lt;br /&gt;
* użycie &amp;#039;&amp;#039;&amp;#039;NOT -0&amp;#039;&amp;#039;&amp;#039; w programie powoduje podczas listowania wyświetlenie &amp;#039;&amp;#039;&amp;#039;NOT -0E-&amp;lt;8&amp;#039;&amp;#039;&amp;#039;, co jest efektem błędu w tablicy kontroli składni: inaczej niż zazwyczaj &amp;#039;&amp;#039;&amp;#039;-0&amp;#039;&amp;#039;&amp;#039; parsowane jest w tym wypadku od razu jako liczba FP, a nie jako [[Token|token]] negacji i dodatnia liczba FP. Sam [[Pakiet matematyczny|pakiet FP]] też nie jest bez winy, bo potrafi parsować &amp;#039;&amp;#039;&amp;#039;-0&amp;#039;&amp;#039;&amp;#039;, lecz nie potrafi jej już poprawnie przekształcić na ciąg [[ATASCII]].&lt;br /&gt;
&lt;br /&gt;
=== Wykonywanie programu ===&lt;br /&gt;
&lt;br /&gt;
* uruchomienie programu: &amp;#039;&amp;#039;&amp;#039;10 DIM A(10922)&amp;#039;&amp;#039;&amp;#039; nie powoduje błędu, mimo że brakuje pamięci na deklarację tablicy o takich wymiarach (potrzeba na to 65538 bajtów).&lt;br /&gt;
* uruchomienie programu: &amp;#039;&amp;#039;&amp;#039;10 TRAP 10:GET #1,A&amp;#039;&amp;#039;&amp;#039; powoduje całkowite zapełnienie i &amp;quot;zawinięcie&amp;quot; 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]].&lt;br /&gt;
* porównanie dwóch funkcji CHR$ w jednym wyrażeniu jest zawsze prawdziwe, np. &amp;#039;&amp;#039;&amp;#039;IF CHR$(1)=CHR$(2) THEN STOP&amp;#039;&amp;#039;&amp;#039; spowoduje zatrzymanie programu. Ten sam błąd ma też [[Turbo BASIC XL]].&lt;br /&gt;
* instrukcje OPEN, XIO i POINT używają niewłaściwej procedury do pobierania parametrów numerycznych (GLNNUM $ABCD zamiast LETNUM $ABD7). Skutkiem tego jest ograniczenie wartości parametrów do zakresu 0-32767 (co w przypadku POINT ma istotne znaczenie) oraz bezsensowny [[Kody błędów Atari BASIC|komunikat błędu]]: &amp;quot;ERROR-  7&amp;quot; (= bad line number), gdy ten zakres zostanie przekroczony; pojawia się on po zadaniu interpreterowi np. &amp;#039;&amp;#039;&amp;#039;OPEN #1,32768,0,&amp;quot;D:FOO.BAR&amp;quot;&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
* instrukcje PUT lub PRINT na pliku otwartym do odczytu nie powodują błędu 135 &amp;quot;OPENED FOR READ ONLY&amp;quot;, choć główna procedura CIO przeprowadza odpowiedni test - przyczyną  takiego zachowania jest to, że BASIC wysyła dane bezpośrednio przez procedurę o adresie zapisanym w ICPUTB (patrz [[CIO]]). Analogiczne GET i INPUT na pliku otwartym do zapisu poprawnie zwracają błąd 131 &amp;quot;OPENED FOR WRITE ONLY&amp;quot;.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;? 1^44&amp;#039;&amp;#039;&amp;#039; daje w wyniku dwa. Ale &amp;#039;&amp;#039;&amp;#039;? 2^44&amp;#039;&amp;#039;&amp;#039; daje już w miarę poprawny wynik &amp;quot;1.75921859E+13&amp;quot; (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 [[Pakiet matematyczny|pakiecie matematycznym]].&lt;br /&gt;
* funkcja ASC nie sprawdza długości swojego parametru i, zamiast zgłaszać błąd, zwraca wynik nawet dla pustego ciągu tekstowego, bezsensowny w tym przypadku.&lt;br /&gt;
&lt;br /&gt;
== Ciekawostki ==&lt;br /&gt;
&lt;br /&gt;
* W rev. B BASIC-a, pod adresem $BFF3-$BFF9 zapisany jest w [[Kody ekranowe|kodach ekranowych]] ciąg &amp;quot;LWinner&amp;quot;, sugerujący, że autorem tej rewizji jest [[Lane Winner]].&lt;br /&gt;
&lt;br /&gt;
== Zobacz też ==&lt;br /&gt;
&lt;br /&gt;
* [[Kody błędów Atari BASIC]]&lt;br /&gt;
* [[Tokeny Atari BASIC]]&lt;br /&gt;
&lt;br /&gt;
== Odnośniki zewnętrzne ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.atarimania.com/detail_soft.php?MENU=8&amp;amp;VERSION_ID=13284 Atari BASIC] (rewizja A, wraz z instrukcją) na [[Atarimania|Atarimanii]]&lt;br /&gt;
* [http://members.chello.nl/taf.offenga/basroms.zip Atari BASIC - wszystkie rewizje] ze strony [[Frankenstein|Freddy&amp;#039;ego Offengi]]&lt;br /&gt;
* [http://atarimagazines.com/compute/issue61/323_1_INSIGHT_Atari.php Artykuł o błędach w Atari BASIC], [[Compute!]] nr 61&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Atari_BASIC Atari BASIC] w Wikipedii&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Oprogramowanie Atari 8-bit]]&lt;br /&gt;
[[Kategoria:Języki programowania]]&lt;br /&gt;
[[Kategoria:BASIC]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Atariki recovery</name></author>
	</entry>
</feed>