Turbo BASIC XL Compiler

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 00:28, 8 wrz 2005
KMK (Dyskusja | wkład)

← Previous diff
Aktualna wersja
KMK (Dyskusja | wkład)

Linia 1: Linia 1:
-Turbo Basic Compiler - jak sama nazwa wskazuje, jest to kompilator języka [[Turbo BASIC XL]], czyli program tłumaczący kod programu z języka TB XL na kod maszynowy. Do prawidłowego działania skompilowanego programu wymagana jest obecność bibliotek TBXL, można je dołączyć do programu przy pomocy linkera. Należy przy tym pamiętać, iż oryginalna wersja bibliotek zawiera drobne błędy (min. działanie instrukcji DEC), więc do prawidłowego działania programu rekomendowany jest RUNTIME2 - poprawki autorstwa [[Jacek Żuk|Jacka Żuka]].+{{grafr|tbxlcompiler-1.png}}
 +Kompilator języka [[Turbo BASIC XL]], czyli program tłumaczący kod programu napisanego w Turbo BASIC-u XL na kod maszynowy. Do prawidłowego działania skompilowanego programu wymagana jest obecność bibliotek Turbo BASIC-a (RUNTIME.EXE), można je dołączyć do programu przy pomocy linkera. Należy przy tym pamiętać, iż oryginalna wersja bibliotek zawiera drobne błędy (min. działanie instrukcji DEC), więc do prawidłowego działania programu rekomendowany jest RUNTIME2.EXE - z poprawkami autorstwa [[Jacek Żuk|Jacka Żuka]].
-Jako ciekawostkę napiszę, że kompilator Turbo BASIC-a XL został napisany w Turbo BASIC-u XL.+W ramach ciekawostki: kompilator Turbo BASIC-a XL został napisany w Turbo BASIC-u XL.
 + 
 +== Problemy z kompilacją ==
 +Poniżej znajduje się lista zauważonych problemów związanych z niewłaściwym działaniem skompilowanych programów, spowodowanych błędami kompilatora, linkera i/lub (najczęściej) bibliotek. Poniższa lista będzie stale rozszerzana, wraz z wzrastającą wiedzą na temat wykrytych błędów. W miarę możliwości będą też podawane alternatywne wyjścia z sytuacji, gdy istnieje konieczność kompilacji programu.
 +* Błąd obsługi tablic liczbowych (zarówno jedno, jak i dwuwymiarowych), powodujący po kompilacji ich niewłaściwe działanie.
 +::'''Alternatywna metoda''': gdy stosujemy liczby z zakresu 0-255, możemy stosować tablice tekstowe. Odpowiednik dwuwymiarowych tablic liczbowych można uzyskać przez rzutowanie z założonym krokiem. Rozwiązanie to zaproponował [[Fox]].
 +* Funkcja USR() niewłaściwie przekazuje wynik z procedury użytkownika.
 +::'''Rozwiązanie''': zamiast zapisywać wynik w słowie $D4/$D5 i pobierać go bezpośrednio z funkcji, wykorzystujemy dowolne nieużywane miejsce pamięci i funkcje PEEK() lub DPEEK().
 +* Zbyt rozbudowane wyrażenia opisujące indeks tablic liczbowych powodują błąd nr 9.
 +::'''Rozwiązanie''': przeliczamy wyrażenie wcześniej i zapisujemy wynik w zmiennej pomocniczej, którą następnie indeksujemy tablicę.
 +* Źle działa lub nie działa wcale pusta instrukcja SOUND
 +::'''Rozwiązanie''': należy wyciszyć każdy kanał oddzielnie
{{stub}} {{stub}}
-[[Kategoria:Atari 8-bit]]+[[Kategoria:Oprogramowanie Atari 8-bit]]
[[Kategoria:Języki programowania]] [[Kategoria:Języki programowania]]
 +[[Kategoria:BASIC]]

Aktualna wersja

Grafika:tbxlcompiler-1.png

Kompilator języka Turbo BASIC XL, czyli program tłumaczący kod programu napisanego w Turbo BASIC-u XL na kod maszynowy. Do prawidłowego działania skompilowanego programu wymagana jest obecność bibliotek Turbo BASIC-a (RUNTIME.EXE), można je dołączyć do programu przy pomocy linkera. Należy przy tym pamiętać, iż oryginalna wersja bibliotek zawiera drobne błędy (min. działanie instrukcji DEC), więc do prawidłowego działania programu rekomendowany jest RUNTIME2.EXE - z poprawkami autorstwa Jacka Żuka.

W ramach ciekawostki: kompilator Turbo BASIC-a XL został napisany w Turbo BASIC-u XL.

Problemy z kompilacją

Poniżej znajduje się lista zauważonych problemów związanych z niewłaściwym działaniem skompilowanych programów, spowodowanych błędami kompilatora, linkera i/lub (najczęściej) bibliotek. Poniższa lista będzie stale rozszerzana, wraz z wzrastającą wiedzą na temat wykrytych błędów. W miarę możliwości będą też podawane alternatywne wyjścia z sytuacji, gdy istnieje konieczność kompilacji programu.

  • Błąd obsługi tablic liczbowych (zarówno jedno, jak i dwuwymiarowych), powodujący po kompilacji ich niewłaściwe działanie.
Alternatywna metoda: gdy stosujemy liczby z zakresu 0-255, możemy stosować tablice tekstowe. Odpowiednik dwuwymiarowych tablic liczbowych można uzyskać przez rzutowanie z założonym krokiem. Rozwiązanie to zaproponował Fox.
  • Funkcja USR() niewłaściwie przekazuje wynik z procedury użytkownika.
Rozwiązanie: zamiast zapisywać wynik w słowie $D4/$D5 i pobierać go bezpośrednio z funkcji, wykorzystujemy dowolne nieużywane miejsce pamięci i funkcje PEEK() lub DPEEK().
  • Zbyt rozbudowane wyrażenia opisujące indeks tablic liczbowych powodują błąd nr 9.
Rozwiązanie: przeliczamy wyrażenie wcześniej i zapisujemy wynik w zmiennej pomocniczej, którą następnie indeksujemy tablicę.
  • Źle działa lub nie działa wcale pusta instrukcja SOUND
Rozwiązanie: należy wyciszyć każdy kanał oddzielnie

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

Personal tools