Atari Action! Compiler: Różnice pomiędzy wersjami
wprowadzenie struktury dokumentu |
|||
| (Nie pokazano 1 pośredniej wersji utworzonej przez tego samego użytkownika) | |||
| Linia 1: | Linia 1: | ||
Atari Action Compiler to kompilator Atari Action! uruchamiany w piaskownicy (sandboxie) - minimalistycznym emulatorze Atari 8-bit zbudowanym na bazie fake6502 - emulatora procesora MOS 6502. | Atari Action Compiler to kompilator Atari Action! uruchamiany w piaskownicy (sandboxie) - minimalistycznym emulatorze Atari 8-bit zbudowanym na bazie fake6502 - emulatora procesora MOS 6502. Autorem jest [[Jakub Husak]]. | ||
==Opis== | ==Opis== | ||
| Linia 8: | Linia 8: | ||
==Działanie== | ==Działanie== | ||
Przed uruchomieniem oprogramowania kartridża ustawiana jest flaga trybu Monitor, uruchamiany jest kartridż, następnie wywoływana jest komenda C"nazwa_pliku" (wpisywana do bufora oraz do komórki 764 jest wpisywany kod RETURN), po czym program czeka na wejście w pętlę IDLE po kompilacji. Następnie, jeśli nie | Przed uruchomieniem oprogramowania kartridża ustawiana jest flaga trybu Monitor, uruchamiany jest kartridż, następnie wywoływana jest komenda C"nazwa_pliku" (wpisywana do bufora oraz do komórki 764 jest wpisywany kod RETURN), po czym program czeka na wejście w pętlę IDLE po kompilacji. Następnie, jeśli nie było błędów, wywoływana jest komenda W"nazwa_pliku", wyświetlane są komunikaty błędów (jeśli wystąpiły), a program kończy działanie. | ||
==Zgodność== | ==Zgodność== | ||
Aktualna wersja z 11 lip 2026, 16:42
Atari Action Compiler to kompilator Atari Action! uruchamiany w piaskownicy (sandboxie) - minimalistycznym emulatorze Atari 8-bit zbudowanym na bazie fake6502 - emulatora procesora MOS 6502. Autorem jest Jakub Husak.
Opis
Emuluje kod oryginalnego kartridża Action! w środowisku „gołego” Atari 8-bit. Emulowany jest wyłącznie procesor CPU — brak obsługi NMI — jednak przy każdej wirtualnej ramce (oryginalnie 1/50 sekundy) zwiększany jest zegar systemowy. Jedna ramka trwa około 30 000 instrukcji (ponieważ cykle procesora nie są zliczane). Wykorzystywany jest ROM Altirra XL.
Obraz kartridża nie został w istotny sposób zmodyfikowany - usunięto fragmenty niszczące pamięć (zabezpieczenie przed używaniem obrazu kartridża w RAM) oraz dodano kilka hooków na określone adresy i warunki, na przykład rozpoznawanie pętli bezczynności (idle loop), wstawianie nazw plików do buforów nazw plików oraz poke(764,12) (wciśnięcie return) :). Po zakończeniu kompilacji pobierany jest kod błędu i wyświetlana jest ostatnia kompilowana linia, tak jak w oryginalnym kartridżu.
Działanie
Przed uruchomieniem oprogramowania kartridża ustawiana jest flaga trybu Monitor, uruchamiany jest kartridż, następnie wywoływana jest komenda C"nazwa_pliku" (wpisywana do bufora oraz do komórki 764 jest wpisywany kod RETURN), po czym program czeka na wejście w pętlę IDLE po kompilacji. Następnie, jeśli nie było błędów, wywoływana jest komenda W"nazwa_pliku", wyświetlane są komunikaty błędów (jeśli wystąpiły), a program kończy działanie.
Zgodność
Zgodność jest niemal stuprocentowa. Użytkownik może użyć instrukcji SET, która zapisuje dane do pamięci, a jeśli zapis następuje do rejestrów sprzętowych (które nie są zaimplementowane) lub w przypadku innych nietypowych zastosowań - efekt może być inny od oryginału. Jednak jeśli użytkownik skorzysta z tych instrukcji zgodnie z ich przeznaczeniem (np. ustawianie adresu startowego), nie powinien napotkać problemów (wówczas zgodność 100%).
Biblioteka Action!
Eksperymentalne dynamiczne linkowanie biblioteki zasadniczo działa poprawnie. Pozostało (prawdopodobnie) jeszcze kilka drobnych problemów, na przykład (problem już rozwiązany) w Printf znacznik %H odwołuje się do funkcji wyświetlania liczby szesnastkowej znajdującej się w innym banku pamięci. W tym szczególnym przypadku crawler (moduł kompilatora przechodzący po wszystkich możliwych ścieżkach danej funkcji) kopiuje tę funkcję do obszaru $Axxx, który jest wykorzystywany podczas kompilacji, ale nie jest używany w czasie wykonywania programu.
Pamięć
Dostępna jest cała pamięć operacyjna tak, jak w przypadku komputera Atari uruchominego bez żadnego DOSu, dzięki czemu można wykorzystać całą dostępną pamięć — od rozsądnego początku obszaru pamięci aż do adresu 0x93FF (gdzie zaczyna się bufor nazw symboli dla starndardowych ustawień)