MultiBASIC
From Atariki
Wersja z dnia 07:35, 29 gru 2005 KMK (Dyskusja | wkład) (→Cele projektu) ← Previous diff |
Aktualna wersja KMK (Dyskusja | wkład) |
||
Linia 1: | Linia 1: | ||
- | [[MultiBASIC]] to interpreter języka [[BASIC]] przeznaczony dla komputerów [[XL]]/[[XE]] wyposażonych w procesor [[65C816]]. Ponieważ interpreter działa w trybie natywnym CPU, do działania wymagany jest również [[DracOS]]. | + | Interpreter języka [[BASIC]] przeznaczony dla komputerów [[XL]]/[[XE]] wyposażonych w [[procesor]] [[65C816]]. Ponieważ interpreter działa w trybie natywnym CPU, do działania wymagany jest również [[DracOS]]. |
- | Za podstawę MultiBASIC-a posłużył kod źrodłowy [[Atari BASIC]]-a rev. C opublikowany przez [[Wojciech Zientara|Wojciecha Zientarę]]. Autorem dodatkowego kodu (interpreter ma obecnie prawie 19k), wszelkich rozszerzeń, poprawek i modyfikacji jest [[KMK]]. | + | Za podstawę MultiBASIC-a posłużył kod źrodłowy [[Atari BASIC]]-a rev. C opublikowany przez [[Wojciech Zientara|Wojciecha Zientarę]]. Autorem dodatkowego kodu (interpreter ma obecnie ponad 20k), wszelkich rozszerzeń, poprawek i modyfikacji jest [[KMK]]. |
== Cele projektu == | == Cele projektu == | ||
- | Docelowym zamierzeniem jest stworzenie interpretera języka BASIC wykorzystującego rozszerzenia oferowane przez procesor 65C816, przede wszystkim dodatkową pamięć oraz większą moc obliczeniową. Dodatkowo MultiBASIC ma stanowić syntezę cech i słów kluczowych innych dostępnych interpreterów BASIC-a, przede wszystkim [[Turbo BASIC XL|Turbo BASIC-a XL]] oraz [[BASIC XE|BASIC-a XE]]. Zgodność z Turbo BASIC-em zapewniona jest na poziomie tokenów (programy Turbo BASIC-a zapisane przez SAVE i wczytane do MultiBASIC-a komedną LOAD mają działać), natomiast zgodność z BASIC XE jest na poziomie słów kluczowych (program wczytany przez ENTER powinien działać). | + | Docelowym zamierzeniem jest stworzenie interpretera języka BASIC wykorzystującego rozszerzenia oferowane przez procesor 65C816, przede wszystkim dodatkową pamięć oraz większą moc obliczeniową. Dodatkowo MultiBASIC ma stanowić syntezę cech i słów kluczowych innych dostępnych interpreterów BASIC-a, przede wszystkim [[Turbo BASIC XL|Turbo BASIC-a XL]] oraz [[BASIC XE|BASIC-a XE]]. Zgodność z Turbo BASIC-em zapewniona jest na poziomie tokenów (programy Turbo BASIC-a zapisane przez SAVE i wczytane do MultiBASIC-a komendą LOAD mają działać), natomiast zgodność z BASIC XE jest na poziomie słów kluczowych (program wczytany przez ENTER powinien działać). |
W chwili obecnej MultiBASIC wykazuje duży stopień zgodności z Turbo BASIC-em XL, natomiast z BASIC-em XE jeszcze prawie żaden. W dalszym też ciągu korzysta tylko z pamięci znajdującej się w obszarze adresowym $000000-$00FFFF (pierwsze 64k), wewnętrzne zmiany mające pozwolić na przeniesienie zarówno kodu interpretera jak i obszaru na program w BASIC-u do obszarów powyżej adresu $00FFFF są w toku. | W chwili obecnej MultiBASIC wykazuje duży stopień zgodności z Turbo BASIC-em XL, natomiast z BASIC-em XE jeszcze prawie żaden. W dalszym też ciągu korzysta tylko z pamięci znajdującej się w obszarze adresowym $000000-$00FFFF (pierwsze 64k), wewnętrzne zmiany mające pozwolić na przeniesienie zarówno kodu interpretera jak i obszaru na program w BASIC-u do obszarów powyżej adresu $00FFFF są w toku. | ||
Linia 13: | Linia 13: | ||
* instrukcje POKE, PEEK, DPOKE, DPEEK, ADR, MOVE, -MOVE, SYSCALL, LUSR operują na 24-bitowych adresach. | * instrukcje POKE, PEEK, DPOKE, DPEEK, ADR, MOVE, -MOVE, SYSCALL, LUSR operują na 24-bitowych adresach. | ||
* instrukcje, które w Turbo BASIC-u XL używają kanału nr 7 do przesyłu danych (np. DIR), w MultiBASIC-u używają pierwszego wolnego kanału I/O. | * instrukcje, które w Turbo BASIC-u XL używają kanału nr 7 do przesyłu danych (np. DIR), w MultiBASIC-u używają pierwszego wolnego kanału I/O. | ||
- | * instrukcje GOTO, GOSUB, RESTORE itp. przeszukują program od początku w poszukiwaniu żądanej linii programu tylko wtedy, kiedy jej numer jest mniejszy niż numer linii obecnej. To samo przyspiesza działanie pętli FOR/NEXT, WHILE/WEND, REPEAT/UNTIL i DO/LOOP jeśli mieszczą się one w jednej linii programu (prekompilacja jeszcze nie została zaimplementowana). | + | * instrukcje GOTO, GOSUB, RESTORE itp. przeszukują program od początku w poszukiwaniu żądanej linii programu tylko wtedy, kiedy jej numer jest mniejszy niż numer linii bieżącej. To samo przyspiesza działanie pętli FOR/NEXT, WHILE/WEND, REPEAT/UNTIL i DO/LOOP jeśli mieszczą się w jednej linii programu (prekompilacja jeszcze nie została zaimplementowana). |
+ | * instrukcje GOTO i GOSUB akceptują etykiety | ||
* instrukcje SAVE i LOAD nie wymagają bezwzględnie podawania nazwy pliku (istnieje coś takiego jak nazwa domyślna programu). | * instrukcje SAVE i LOAD nie wymagają bezwzględnie podawania nazwy pliku (istnieje coś takiego jak nazwa domyślna programu). | ||
- | * z poziomu programu w BASIC-u istnieje dostęp do parametrów przekazanych w linii komend DOS-u (to działa tylko pod [[SpartaDOS]]). | ||
* nieznane tokeny powodują wystąpienie błędu nr 17. | * nieznane tokeny powodują wystąpienie błędu nr 17. | ||
+ | * z poziomu programu w BASIC-u istnieje dostęp do parametrów przekazanych w linii komend DOS-u (działa tylko pod [[SpartaDOS]]). | ||
+ | * z poziomu linii komend można wpływać na działanie interpretera: podanie nazwy pliku spowoduje próbę automatycznego załadowania tego pliku jako programu w BASIC-u. Jednoczesne podanie parametru -R (jak RUN) spowoduje automatyczne uruchomienie tego programu, a po jego zakończeniu zgłoszenie się edytora komunikatem "Ready". Z kolei -B (jak BATCH) działa podobnie jak -R, ale po zakończeniu programu interpreter oddaje sterowanie do DOS-u. | ||
+ | |||
+ | == Download == | ||
+ | |||
+ | * [http://drac030.krap.pl/pl-mb-pliki.php Ze strony autora] | ||
[[Kategoria:Oprogramowanie Atari 8-bit]] | [[Kategoria:Oprogramowanie Atari 8-bit]] | ||
+ | [[Kategoria:Języki programowania]] | ||
+ | [[Kategoria:BASIC]] |
Aktualna wersja
Interpreter języka BASIC przeznaczony dla komputerów XL/XE wyposażonych w procesor 65C816. Ponieważ interpreter działa w trybie natywnym CPU, do działania wymagany jest również DracOS.
Za podstawę MultiBASIC-a posłużył kod źrodłowy Atari BASIC-a rev. C opublikowany przez Wojciecha Zientarę. Autorem dodatkowego kodu (interpreter ma obecnie ponad 20k), wszelkich rozszerzeń, poprawek i modyfikacji jest KMK.
Cele projektu
Docelowym zamierzeniem jest stworzenie interpretera języka BASIC wykorzystującego rozszerzenia oferowane przez procesor 65C816, przede wszystkim dodatkową pamięć oraz większą moc obliczeniową. Dodatkowo MultiBASIC ma stanowić syntezę cech i słów kluczowych innych dostępnych interpreterów BASIC-a, przede wszystkim Turbo BASIC-a XL oraz BASIC-a XE. Zgodność z Turbo BASIC-em zapewniona jest na poziomie tokenów (programy Turbo BASIC-a zapisane przez SAVE i wczytane do MultiBASIC-a komendą LOAD mają działać), natomiast zgodność z BASIC XE jest na poziomie słów kluczowych (program wczytany przez ENTER powinien działać).
W chwili obecnej MultiBASIC wykazuje duży stopień zgodności z Turbo BASIC-em XL, natomiast z BASIC-em XE jeszcze prawie żaden. W dalszym też ciągu korzysta tylko z pamięci znajdującej się w obszarze adresowym $000000-$00FFFF (pierwsze 64k), wewnętrzne zmiany mające pozwolić na przeniesienie zarówno kodu interpretera jak i obszaru na program w BASIC-u do obszarów powyżej adresu $00FFFF są w toku.
Różnice w stosunku do pierwowzorów
- instrukcje POKE, PEEK, DPOKE, DPEEK, ADR, MOVE, -MOVE, SYSCALL, LUSR operują na 24-bitowych adresach.
- instrukcje, które w Turbo BASIC-u XL używają kanału nr 7 do przesyłu danych (np. DIR), w MultiBASIC-u używają pierwszego wolnego kanału I/O.
- instrukcje GOTO, GOSUB, RESTORE itp. przeszukują program od początku w poszukiwaniu żądanej linii programu tylko wtedy, kiedy jej numer jest mniejszy niż numer linii bieżącej. To samo przyspiesza działanie pętli FOR/NEXT, WHILE/WEND, REPEAT/UNTIL i DO/LOOP jeśli mieszczą się w jednej linii programu (prekompilacja jeszcze nie została zaimplementowana).
- instrukcje GOTO i GOSUB akceptują etykiety
- instrukcje SAVE i LOAD nie wymagają bezwzględnie podawania nazwy pliku (istnieje coś takiego jak nazwa domyślna programu).
- nieznane tokeny powodują wystąpienie błędu nr 17.
- z poziomu programu w BASIC-u istnieje dostęp do parametrów przekazanych w linii komend DOS-u (działa tylko pod SpartaDOS).
- z poziomu linii komend można wpływać na działanie interpretera: podanie nazwy pliku spowoduje próbę automatycznego załadowania tego pliku jako programu w BASIC-u. Jednoczesne podanie parametru -R (jak RUN) spowoduje automatyczne uruchomienie tego programu, a po jego zakończeniu zgłoszenie się edytora komunikatem "Ready". Z kolei -B (jak BATCH) działa podobnie jak -R, ale po zakończeniu programu interpreter oddaje sterowanie do DOS-u.