Turbo BASIC XL Compiler
From Atariki
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ę.
Ten artykuł to tylko zalążek. Możesz pomóc rozwojowi Atariki poprzez rozszerzenie go o więcej informacji.