Turbo BASIC XL

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 06:03, 5 sty 2006
KMK (Dyskusja | wkład)
(Błędy w Turbo BASIC-u)
← Previous diff
Aktualna wersja
KMK (Dyskusja | wkład)
(ups)
Linia 1: Linia 1:
-[[Turbo BASIC XL]] to odmiana języka [[BASIC]] dla komputera Atari [[XL]]/[[XE]], stworzona w 1985 roku przez niemieckiego programistę [[Frank Ostrowski|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.+{{grafr|tbxl.png}}
 +Odmiana języka [[BASIC]] dla [[Atari 8-bit|małego Atari]], stworzona w 1985 roku przez niemieckiego programistę [[Frank Ostrowski|Franka Ostrowskiego]] i rozpowszechniona jako program public domain przez czasopismo "Happy Computer". Istnieją dwie oficjalne wersje:
 +* Turbo-BASIC 1.4 - dla komputerów [[400/800]] z min. 32 KB [[RAM]]. Ta wersja ma wbudowany [[DOS 2.0]] - interpreter jest "doklejony" do pliku DOS.SYS.
 +* Turbo-BASIC XL 1.5 - dla komputerów [[XL]]/[[XE]]. Ta wersja ładuje się częściowo do [[RAM]]-u pod [[ROM]] systemu operacyjnego, przez co udostępnia więcej pamięci na program użytkownika (nieco ponad 33k - instrukcja ''? FRE(0)'' podaje wynik 34021 bajtów).
-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]].+Oprócz tego powstało kilka nieoficjalnych modyfikacji:
-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 części wynikiem tego, Turbo BASIC ma własny, bardzo szybki [[pakiet matematyczny|pakiet procedur zmiennoprzecinkowych]], który sprawdza się świetnie w większości zastosowań.+* Turbo-BASIC XL 2.0 - hack wersji 1.5 ze zmienionym tekstem tytułowym, o treści "(c) 1990 LASER software". Inne różnice nieznane.
 +* Turbo-BASIC XL 2.0 & Turbo 2000 System (występuje też pod tytułem TT-Basic XL 2.11) - modyfikacja wersji 1.5 dokonana przez [[Jiří Richter|Jiříego Richtera]], autora [[Turbo 2000 (czechosłowackie)|czeskiego Turbo 2000]], w 1988 roku. Zawiera zintegrowany mini-DOS do systemu turbo oraz handler urządzenia [[T:]].
 +* Turbo BASIC 3.2q - wersja 1.4 przystosowana do współpracy ze [[SpartaDOS]]-em 3.2, autorstwa [[Tom Hunt|Toma Hunta]] z 1992 roku. Brakuje w niej komend BPUT i BGET, aczkolwiek można je zastąpić odpowiednimi wywołaniami XIO. W pakiecie z interpreterem jest handler do obsługi [[P:R: Connection]] wraz z programikiem do ładowania tegoż handlera z poziomu BASIC-a.
 + 
 +Turbo BASIC wgrywa się do pamięci [[RAM]] komputera z dysku lub taśmy. Interpreter charakteryzuje się większą ilością instrukcji 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 dużej mierze wynikiem tego, że Turbo BASIC ma własny, bardzo szybki [[pakiet matematyczny|pakiet procedur zmiennoprzecinkowych]], który sprawdza się świetnie w większości zastosowań.
 + 
 +Inną istotną zaletą interpretera jest wsteczna kompatybilność z [[Atari BASIC]]-iem, dzięki czemu nieomal wszystkie programy napisane w tym ostatnim uruchomią się pod Turbo BASIC-iem XL (z nielicznymi wyjątkami).
 + 
 +W roku 2021 powstała wersja "relokowalna" Turbo-BASIC-a 1.5, charakteryzująca się większą ilością dostępnej pamięci (w zależności od tego, ile miejsca zajmuje DOS) oraz poprawkami niektórych błędów. Autorem modyfikacji jest [[dmsc]].
== Błędy w Turbo BASIC-u == == Błędy w Turbo BASIC-u ==
 +* 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.
 +* kontrola składni akceptuje znak ''Esc'' (ASCII 27) w miejsce dwukropka jako separatora instrukcji. Ten sam błąd ma też [[Atari BASIC]].
* 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]]. * 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]]. * 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]].
-* próba wykonania potęgowania z wykładnikiem, który nie jest liczbą całkowitą dodatnią (np. '''? 10^-1''' albo '''? 10^3.5''') powoduje komunikat '''ERROR- 11 OVERFLOW'''. 
-* 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. * funkcja '''DEC''' źle działa, jeśli przekazana jej liczba szesnastkowa zawiera małe litery.
 +* zakończenie łańcucha tekstowego znakiem Ctrl/R (ASCII 18) powoduje takie zachowanie interpretera, jakby po cudzysłowie zamykającym łańcuch znajdował się średnik (np. '''? "NATENCZAS ^R":? "WOJSKI"''' zachowuje się jak '''? "NATENCZAS ^R";:? "WOJSKI"'''). Ten sam błąd ma Atari BASIC rev. A.
 +* interpreter w wersji 1.5 po uruchomieniu się ustawia wskaźnik MEMLO na adres $3629 i nigdy nie przywraca poprzedniej wartości: żeby ustawić sensowną wartość MEMLO pod np. [[MyDOS]]-em, trzeba po wyjściu z interpretera wcisnąć klawisz RESET.
 +
 +==Zobacz też==
 +* [[Kody błędów Turbo BASIC-a XL]]
 +* [[Tokeny Turbo BASIC XL]]
 +
 +==Linki zewnętrzne==
 +<!-- * [http://users.htcomp.net/tbelding/misc/turbobasic_xl.html Turbo-BASIC XL manual] -->
 +* [http://www.tmeyer.de/atari/index.html Strona z oryginalnym artykułem o Turbo-Basicu XL] wraz z kompilatorem (pliki pdf z Happy Computera)
 +* [http://ftp.pigwa.net/stuff/mirror/turbobasicxlandaction.com/ Mirror strony o Turbo Basicu i Action! prowadzonej kiedyś przez Sikora]
 +* [http://atariage.com/forums/topic/266070-turbobasic-xl-v15-mads-source-disassembly/ Pełny kod źródłowy TBXL w formacie cross-asemblera MADS]
 +* [https://atariwiki.org/wiki/Wiki.jsp?page=TURBO-BASIC%20XL Dużo informacji o TBXL i jego autorze]
 +* [https://github.com/dmsc/turbo-dis Kod źródłowy (i binaria) wersji relokowalnej z 2021 roku]
-{{stub}} 
[[Kategoria:Oprogramowanie Atari 8-bit]] [[Kategoria:Oprogramowanie Atari 8-bit]]
[[Kategoria:Języki programowania]] [[Kategoria:Języki programowania]]
 +[[Kategoria:BASIC]]

Aktualna wersja

Grafika:tbxl.png

Odmiana języka BASIC dla małego Atari, stworzona w 1985 roku przez niemieckiego programistę Franka Ostrowskiego i rozpowszechniona jako program public domain przez czasopismo "Happy Computer". Istnieją dwie oficjalne wersje:

  • Turbo-BASIC 1.4 - dla komputerów 400/800 z min. 32 KB RAM. Ta wersja ma wbudowany DOS 2.0 - interpreter jest "doklejony" do pliku DOS.SYS.
  • Turbo-BASIC XL 1.5 - dla komputerów XL/XE. Ta wersja ładuje się częściowo do RAM-u pod ROM systemu operacyjnego, przez co udostępnia więcej pamięci na program użytkownika (nieco ponad 33k - instrukcja ? FRE(0) podaje wynik 34021 bajtów).

Oprócz tego powstało kilka nieoficjalnych modyfikacji:

  • Turbo-BASIC XL 2.0 - hack wersji 1.5 ze zmienionym tekstem tytułowym, o treści "(c) 1990 LASER software". Inne różnice nieznane.
  • Turbo-BASIC XL 2.0 & Turbo 2000 System (występuje też pod tytułem TT-Basic XL 2.11) - modyfikacja wersji 1.5 dokonana przez Jiříego Richtera, autora czeskiego Turbo 2000, w 1988 roku. Zawiera zintegrowany mini-DOS do systemu turbo oraz handler urządzenia T:.
  • Turbo BASIC 3.2q - wersja 1.4 przystosowana do współpracy ze SpartaDOS-em 3.2, autorstwa Toma Hunta z 1992 roku. Brakuje w niej komend BPUT i BGET, aczkolwiek można je zastąpić odpowiednimi wywołaniami XIO. W pakiecie z interpreterem jest handler do obsługi P:R: Connection wraz z programikiem do ładowania tegoż handlera z poziomu BASIC-a.

Turbo BASIC wgrywa się do pamięci RAM komputera z dysku lub taśmy. Interpreter charakteryzuje się większą ilością instrukcji 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 dużej mierze wynikiem tego, że Turbo BASIC ma własny, bardzo szybki pakiet procedur zmiennoprzecinkowych, który sprawdza się świetnie w większości zastosowań.

Inną istotną zaletą interpretera jest wsteczna kompatybilność z Atari BASIC-iem, dzięki czemu nieomal wszystkie programy napisane w tym ostatnim uruchomią się pod Turbo BASIC-iem XL (z nielicznymi wyjątkami).

W roku 2021 powstała wersja "relokowalna" Turbo-BASIC-a 1.5, charakteryzująca się większą ilością dostępnej pamięci (w zależności od tego, ile miejsca zajmuje DOS) oraz poprawkami niektórych błędów. Autorem modyfikacji jest dmsc.

Błędy w Turbo BASIC-u

  • 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.
  • kontrola składni akceptuje znak Esc (ASCII 27) w miejsce dwukropka jako separatora instrukcji. Ten sam błąd ma też Atari BASIC.
  • 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.
  • funkcja DEC źle działa, jeśli przekazana jej liczba szesnastkowa zawiera małe litery.
  • zakończenie łańcucha tekstowego znakiem Ctrl/R (ASCII 18) powoduje takie zachowanie interpretera, jakby po cudzysłowie zamykającym łańcuch znajdował się średnik (np. ? "NATENCZAS ^R":? "WOJSKI" zachowuje się jak ? "NATENCZAS ^R";:? "WOJSKI"). Ten sam błąd ma Atari BASIC rev. A.
  • interpreter w wersji 1.5 po uruchomieniu się ustawia wskaźnik MEMLO na adres $3629 i nigdy nie przywraca poprzedniej wartości: żeby ustawić sensowną wartość MEMLO pod np. MyDOS-em, trzeba po wyjściu z interpretera wcisnąć klawisz RESET.

Zobacz też

Linki zewnętrzne

Personal tools