Atari Basic Compiler v0.2 by Xeen 2013-02-17 19:42:57
Rafał "mgr inż. Rafał" Chabowski, autor gier "Biedny Pies
Antoni" i "Gruczoł Grubasa", od jakiegoś czasu pracuje nad bardzo
ambitnym projektem: Atari Basic Compiler. Jest to
crosscompilator Atari Basic na systemy Windows i Linux, który
pozwala tworzyć programy w Basicu na współczesnych komputerach i
generować praktycznie od razu pliki ASM do skompilowania. Postępy i
szczegóły można śledzić na
forum, ważne jest to, że autor postanowił udostępnić wczesną
wersję 0.2 narzędzia do testów!
Atari Basic Compiler wspiera, na razie:
wiele instrukcji w jednej linii programu
tablice numeryczne
instrukcję PRINT
instrukcję INPUT
instrukcję GOTO z dynamicznie obliczanym adresem skoku
DIM
IF / THEN
FOR
zmienne tekstowe (łącznie z CHR$)
operacje na zmiennych tekstowych
komentarze
Użycie kompilatora jest banalnie proste:
Linux: "cat source.bas | ./abc"
Windows: "type source.bas | abc.exe"
Po czym otrzymany plik asm należy skompilować za pomocą MADS
(wersja co najmniej 1.9.5) celem otrzymania pliku wykonywalnego, co
zresztą napisano w instrukcji.
A oto mój pierwszy program w ABC:
10 ? "Klasyka programow w basic"
20 GOTO 10
Ha! Działa! :)
Wersja do testowania dostępna
tutaj. Miłego odbioru!
xeen 2013-02-17 20:43:33
jeżeli dobrze liczę - to 3 publiczny projekt na JIL. Chylę czoła i kibicuję... pin 2013-02-17 23:05:51
.. coś takiego, to by się nadało do TBXL... ehh ;)- jhusak 2013-02-18 03:06:10
Nie ma wersji ma macos x.... mgr_inz_rafal 2013-02-18 08:23:32
Znajdę dziś jakiegoś maca i jeśli ogarnę ten jabłkowy system to skompiluję kompilator :) 0xF 2013-02-18 09:47:46
1. Prościej: ./abc <source.bas i abc.exe <source.bas
2. Rozszerzenie .BAS dotyczy postaci binarnej programów w Atari BASIC. Dla listingów używa się .LST.
3. Na Windows proponuję używać MinGW zamiast Cygwin - używa się tak samo, a wszystkie potrzebne DLL są w Windowsie. Wieczór 2013-02-18 11:35:14
@jhusak: <troll_mode>trzeba było kupić komputer z normalnym systemem</troll_mode> ;) Bluki 2013-02-18 15:16:12
"Normalność" to pojęcie bardzo względne :) jhusak 2013-02-18 15:27:50
@Wieczór, właśnie kupiłem. Zobacz. 0xF napisał plugin do VLC na MacOSX. I żyje :) I działa. (plugin i 0xF).
@ mgr_inz_rafal, zainstaluj sobie VirtualBox, Pod nim MacOS X, xcode tools, a wtedy poczujesz się jak w linuksie... i Makefile pewnie ten sam będzie... niemal... jhusak 2013-02-18 15:30:48
A, jeszcze, czy ten abc ma peek i poke? mgr_inz_rafal 2013-02-18 16:41:52
@jhusak A nie ma czasem VirtualBoxa na MacOS? Żeby sobie linuxa albo Windowsa zainstalować? ;-)
PEEK i POKE nie ma. miker 2013-02-18 17:16:48
No, bardzo fajne cacko. To kiedy wersja supportująca instrukcje Turbo BASICa XL? :) mono 2013-02-18 17:27:22
Pięknie! @mgr_inz_rafal: a supportujesz USR? :D mgr_inz_rafal 2013-02-18 18:59:19
@miker Jak tylko skończę wsparcie dla czystego Atari Basic to... zastanowię się, czy i co dalej :)
@mono Nie, jeszcze nie. Wspieram to, co napisano w nowince i/lub pliku dołączonym do kompilatora. Kaczor 2013-02-18 19:48:40
To czekam aż będzie full Basic, Atari oczywiście. A jak po kompilacji jest z prędkością? Identyczna jak w Basicu, no bo rozumiem że po kompilacji do kodu maszynowego, tycio przyśpieszy :-). tebe 2013-02-18 19:54:12
mógłbyś dać parametry określające zgodność kompilowanego kodu typu Atari Basic, Turbo Basic, albo jakaś własna dodatkowa składnia, w przypadku Turbo Basica dodanie znaku % przy etykiecie zmiennej oznacza typ całkowity co przyspieszy kod wynikowy mgr_inz_rafal 2013-02-18 20:27:19
@Kaczor Nie wykonywałem precyzyjnych pomiarów. Na oko widać, że jest nieco szybciej.
@tebe Na razie to zbyt odległa przyszłość, aby o niej myśleć. Samo dociągnięcie do końca Atari Basica będzie sporym wyzwaniem.
W nowince jest link do wątku na forum, w którym poruszane były obydwa powyższe tematy. Jest tam wypowiedź na temat dodatkowych ficzerów oraz m. in. filmik porównujący prędkość sortowania alfabetycznego z książki Atari Basic. Amun-Ra 2013-02-18 21:45:54
Moje 0,2zł:
Zmieniłbym przyjmowanie argumentu. Zazwyczaj programy, które czytają dane z stdin przy argc == 1 wyrzycają dane na stdout. Lepiej by było gdyby składnia była a'la gcc: abc plik.bas [-o plik.xex], a jeśli czytamy z stdin to: cat plik.bas | abc - >plik.xex lub (usuwając martwego kota) abc <plik.bas >plik.xex. Lhuven 2013-02-18 22:28:40
Świetny pomysł, dołączam się do listy życzeń oczekując na wersję TB ;-) Ilmenit 2013-02-19 10:21:41
Bardzo fajny projekt. Trzymam kciuki i czekam na ciąg dalszy :-) LCD 2013-03-04 23:19:27
To mi sie bardzo podoba. Niezly Projekt który juz dluzej sledze...