Znowu o Apple II by Kaz 2009-02-06 02:09:44

Kolega Piotr "Artax" Mejer ostatnio został pochłonięty przez tak zwaną prozę życia, ale postanowiłem mimo to odświeżyć temat jego rewolucyjnego emulatora. Szkoda, by w czasie nieobecności Artaxa beta-testerzy i wszyscy zainteresowani nie mogli testować i zgłaszać uwag do emulatora czy wyszukiwać nowych, działających programów. Z tego powodu zdecydowałem się opublikować zarówno nowszą wersję emulatora jak i niedokończony jeszcze jego opis - i mam nadzieję, że Piotrek mi przebaczy w imię dobra wyższego :).



O emulatorze pisałem już kilkakrotnie, a najbardziej zagorzałym testerem programu okazał się Paweł "Sikor" Sikorski, dzięki któremu zostały wyeliminowane niektóre drobne błędy, a także dzięki któremu zgromadziliśmy kolekcję dysków Apple II (przekonwertowanych do formatu Atari) z programami, które działają na emulatorze. Więcej można poczytać tutaj:

nowinka 1
nowinka 2
nowinka 3
nowinka 4

Co nowego otrzymujemy w wersji, którą nazwałem 0.91? Rozwiązany został problem z uzyskiwaniem znaczków ] oraz [ spod Apple DOS. Teraz SHIFT+K daje [, a dzięki SHIFT+M otrzymujemy ]. Piotrek usunął też "gruby błąd powodujący zawieszanie się niektórych gierek. Jestem na tropie następnego błedu ... jak go wykryję sądzę, że ruszy dalsze kilkadziesiąt gierek.".

Oprócz kolejnej wersji emulatora, pozbawionej kilku istotnych błędów, Piotrek przygotował skrótowy opis instrukcji, nad którą wciąż pracuje. Dotyczy ona głównie menu i możliwości ustawienia parametrów, co wygląda następująco:


Sekcja 1 - opisuje podstawowe parametry emulacji. Podstawowym problemem, na który natknąłem się podczas pisania emulatora, był fakt, że odwołania do rejestrów Apple II zachodzą przez referencje. Nie istnieje więc prosta metoda wykrycia takiego odwołania. W emulator jest wbudowany minidebugger, który wykrywa w kodzie rozkazy mogące się odwoływać do rejestrów i zamienia je w odwołania do siebie. To są te mityczne punkty emulacji hardware’u. Problemem jest to, że mimo stosowania różnych zabezpieczeń, czasami jest on nadgorliwy, co psuje kod. Parametry w tej sekcji sterują właśnie minidebugerem.

BRUTE FORCE: nazwa trochę nieszczęśliwa. Włączenie powoduje, że są wykrywane odwołania do całych bloków rejestrów, a nie tylko do pierwszego adresu w bloku. Programiści generalnie używają danych literaturowych, więc włączenie nie jest zwykle potrzebne, nie mówiąc o tym, że gwałtownie wtedy rośnie liczba błędów. Domyślnie: wyłączone.

DISK UPDATE: włącza analizę odczytywanych sektorów dyskietki pod kątem odwołań. Domyślnie: włączone.

VBL UPDATE: analizuje rozkazy 6502, na które wskazuje przerwanie VBL. Praktycznie zawsze działa poprawnie. Domyślnie: włączone.

MIN LEVEL UPDATE: każdy rozkaz 6502 ma przyporządkowaną liczbę w zakresie od 0 do 7, która mówi, jakie jest prawdopodobieństwo jego użycia w odwołaniu do sprzętu. Im większa liczba tym mniejsze prawdopodobieństwo. Dodatkowo zapalony czwarty bit (8) informuje, że jest to rozkaz zapisu. Każdy blok rejestrów ma przyporządkowane dwie liczby informujące, w jakim zakresie mają być wartości liczb update rozkazów odwołujących się do tego bloku rejestrów. Podanyw tej opcji poziom minimalny wymusza zwiększenie dolnych zakresów tych liczb dla wszystkich bloków rejestrów. Domyślnie: 1 czyli wszystkie rozkazy.

MAX LEVEL UPDATE: ogranicza górne zakresy update dla bloków rejestrów. Zmniejszenie może pomóc, jeżeli emulowany program kończy się błędem. Domyślnie: C czyli wszystkie rozkazy włącznie z rozkazami zapisu.

Naciśniecie klawisza OPTION w czasie emulacji powoduje wyłączenie opcji DISK UPDATE i przeprowadzenie update całej pamięci Apple II. Może to być użyteczne dla programów wielodyskowych.


Sekcja 2 - parametry emulacji grafiki.

GRAPHICS: tryb emulacji:
0 – pięciokolorowy (niebieski zastępuje fiolet)
1 – sześciokolorowy z przeplotem (jak kogoś dawno oczy nie bolały)
2 – monochromatyczny z przeplotem
Domyślnie: 0.

SPEED GRAPHICS: prędkość działania emulacji grafiki w liniach grafiki na jedno przerwanie pionowe (VBL). Im większa wartość tym wolniej działa emulator, ale grafika szybciej. Domyślnie: 6.

SPEED TEXT: to samo, ale dla trybów tekstowych. Dużo mniej obciążające procesor Atari. Domyślnie: 6 i jest to generalnie wystarczające.


Sekcja3 - parametry dźwięku.

SOUND VOLUME: głośność dźwięku. Ustawienie wartości większej od 0 powoduje rozpoczęcie obsługi dźwięku przez minidebuger. Stąd, jeżeli chcemy, aby włączyć dźwięk po włączeniu emulacji, trzeba ustawić głośność większą od zera i nacisnąć klawisz OPTION w celu update-u programu. Regulacja głośności, jeżeli uruchomiliśmy emulator z już włączonym dźwiękiem, nie wymaga takich zabiegów. Domyślnie:0.

SOUND MODE: tryb obsługi dźwięku.
0 – tryb natywny Apple. Przenosi odwołania do rejestrów dźwięku bezpośrednio na głośnik. Ponieważ emulator intensywnie korzysta z przerwań - trochę charczy.
1 – mieszany tryb. Dla małych częstotliwości tryb natywny, dla większych obsługa przez generator. Jak dla mnie brzmi najlepiej.
2 – obsługa przez generator. Brzmi bardzo …atarowsko.
3 – jak 1, ale dodatkowo włączone zniekształcenia generatora. Dla niektórych gier.
4 – jak 2 z włączonymi zniekształceniami.
Domyślnie: 1.


Sekcja 4 - różne inne parametry.

IGNORE ERROR: włącza ignorowanie niektórych błędów, na przykład włączenie nie zaimplementowanego trybu grafiki niskiej rozdzielczości. Może pomóc uruchomić niektóre programy. Domyślnie: wyłączony.

AUTOMATIC FLUSH: obsługa dysku w celu poprawienia prędkości działania ma zaimplementowany cache. Jest on czyszczony po pięciu sekundach od ostatniej operacji dyskowej, co umożliwia wymianę dyskietek. Można go wyłączyć i uruchomić każdorazowo ręczny flush wciskając SELECT w czasie emulacji. Poprawia to trochę prędkość pracy systemu dyskowego. Domyślnie: włączony.

DISK BOOT: uruchomienie bootowania dyskietki podczas startu emulatora. Po wyłączeniu emulator przechodzi do monitora. Dla niedowiarków niewierzących, że to prawdziwy emulator Apple II: po przejściu do monitora trzeba wcisnąć CTRL+B i ENTER i do dzieła! Domyślnie:włączony.


Sekcja 5: - procedury emulatora.

RESET OPTION: przywraca domyślne opcje emulatora.
RESET APPLE: resetuje emulowane Apple II i pozwala na ponowne zabootowanie dyskietki.



Na koniec kilka uwag i porad od Piotrka:

zajac/swd 2009-02-07 01:08:21

KAZ, ale co to ma wspólnego z naszym kochanym ATARI ?!?

CharlieChaplin 2009-02-07 01:37:16

Well,
the Apple II emulator we are talking about here is working on the A8 - in other words: With this emulator the A8 is able to emulate the Apple II... So, this topic has a lot to do with our beloved A8...

Besides, does the new version still require separate Antic access ?!? Thats the main reason I could not test the old version, because my 576k XL`s don`t have the sep. Antic access. Would be nice to have an apple II emu version that is working without sep. antic access (but I don`t know if that is possible)... -Andreas Koch.

Kaz 2009-02-07 02:06:30

Zajac - jak napisal Ci juz Andreas, to jest emulator Apple II dzialajacy na naszym kochanym Atari? :))))

CharlieChaplin - this is still beta-version and still needs seperate ANTIC access. I also don't know if it is possible to change it.

jhusak 2012-01-08 05:03:51

No nie. Spectrum, Apple... Co następne, Gameboy?
No nie spodziewaem się.
Ale będą jaja jak ktoś emuC64 zrobi.