Turbo BASIC XL Compiler
From Atariki
Wersja z dnia 21:52, 1 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 J. Ż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 Basica XL został napisany w... Turbo Basicu 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
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.