Atari Action! Compiler: Różnice pomiędzy wersjami
Dodano artykuł. |
|||
| (Nie pokazano 3 pośrednich wersji utworzonych 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== | |||
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. | 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. | ||
| Linia 5: | Linia 7: | ||
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. | 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ń) | |||
Strona projektu | ==Strona projektu i linki== | ||
https://github.com/jhusak/atari_action_compiler | https://github.com/jhusak/atari_action_compiler | ||
[[Kategoria: Atari 8-bit]][[Kategoria: Języki programowania]][[Kategoria:Programowanie]] | |||
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ń)