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:
- zanim zaczniesz testować, czy program Apple działa pod
emulatorem Piotrka, warto najpierw sprawdzić, czy działa pod
emulatorem np. AppleWin ustawionym w trybie Apple][ classic. Około
70% programów może nie iść lub iść z błędem.
- dostępny jest dla peceta konwerter dysków z formatu Apple II na
Atari. Wywołanie:
appata < dysk_apple >.dsk < dysk_atari
>.atr
Konwerter dysków Apple-Atari w wersji 0.9 to kompletna prowizorka.
Nie zniechęcajcie się, Artax pracuje nad jego następcą.
- na emulatorze Piotra nie działa Apple Basic Jak pisze autor
"Niestety, to jest duży problem. Language Card to karta
rozszerzająca pamięć Apple do pełnych 64K. Podmienia ona ROM Apple
na RAM, co pod Apple DOS 3.2 i 3.3 jest wykorzystywane na
załadowanie Basica. Na Atari nie ma jak tego emulować ponieważ
adresy D000-D7FF są zajęte przez rejestry. Jak już mówiłem,
emulator emuluje Apple][ classic z 48KB pamięci i z Integer
Basic"
- obecny cache dyskowy mieści 50 sektorów, co jest aż nadto na
potrzeby emulatora. W rzeczywistości wystarczy trzymać w cache
aktualnie czytany cylinder, co całkowicie wystarcza.
To tyle od Artax-a, przypominam, że najcenniejsze są dla niego
testy na prawdziwym sprzęcie Atari, choć uwagi od emulatorowców też
mogą być cenne. I jeszcze trzy dyskietki od Sikora, które już dawno
powinny się znaleźć w katalogu, ale jakoś nie było okazji, z czego
tłumaczyłem się na forum.
Lepiej jednak późno niż wcale, więc oddaję głos Pawłowi: "Dziś
coś dla miłośników tekstówek ("Ulysses" - bardzo ciekawa pozycja, 2
strony dyskietki) oraz gier karcianych - "Yahtzee". Smutna sprawa -
"Test Drive mi się nie chce uruchomić wcale (przy ustawieniach na
grzybie odpala intro i nic więcej, na Atari niestety póki co nawet
tego nie robi)."
emulator Apple II
konwerter
AppAta