Tajemnice ATARI

EMULACJA


   Od dłuższego już czasu nosiłem się z zamiarem napisania czegoś na temat, który bardzo mnie interesuje. Chodzi mianowicie o emulatory. Jeśli ktoś nie wie o co chodzi, spieszę wyjaśnić! Emulatorami nazywamy programy lub urządzenia, które naśladują (z ang. emulate ozn. udawać, naśladować) pracę innych programów lub urządzeń, przy czym termin ten odnosi się najczęściej do "udawaczy" komputerów. Wyobraźmy sobie, że pracujemy na komputerze klasy PC i nagle nachodzi nas ochota na "poużywanie" sobie na starym dobrym Spectrum. Nie musimy pędzić do znajomego, który tą zabawką dysponuje, wystarczy sięgnąć do pudełka z dyskietkami, aby odnaleźć tam program SP.EXE. Po załadowaniu go do pamięci PC-ta można zagrać w spektrumowskle hity...

   Emulatorów powstało już całe mnóstwo; jedne komputery udają drugie, te z kolei trzecie i tak dalej. Oczywiście jest jeden problem - zazwyczaj to większe maszyny udają mniejsze, a nie na odwrót - ale to jest chyba oczywiste. A jak wygląda sytuacja naszego ATARI? Tu jest słabiej - małe ATARI nie udaje niczego. Jest to zrozumiałe, jeśli weźmie się pod uwagę możliwości ulubionej zabawki czytelników "TA". Dlaczego jednak firma ATARI nie wypuściła, jak dotąd, dawno obiecanego emulatora ATARI XL, dla ST? Uważam to za niedopuszczalne zaniedbanie w stosunku do klienta, przecież np. Commodore już, dawno załatwił ten problem, dając użytkownikom swojej AMIGI niezły, programowy C-64.

   Wracając jednak do sprawy, czyli udawania na małym ATARI, sytuacja wydaje się beznadziejna, ale chyba nie jest aż tak źle? Osobiście zetknąłem się z tą tematyką podczas pracy nad BugHunter-em. Być może wyda się to dziwne, ale ten debugger jest swoistym emulatorem ATARI XL na ATARI XL. Tak, to nie pomyłka! Ci, którzy używali kiedykolwiek BugHunter-a wiedzą, że wykonuje on każdy program naprawdę, a co za tym idzie niestraszne mu np. PLA, PHA i temu podobne. Oczywiście wykonanie operacji na stosie jest o tyle skomplikowane, że stos procesora jest jeden dla BH i dla śledzonego programu. Stos procesora w ogóle jest jeden! Zajmuje obszar pamięci od adresu $100 do adresu $1FF i nie może być nigdzie indziej. Zwyczajne wykonanie np. rozkazu RTS śledzonego programu mogłoby spowodować powrót z procedury BH i jego załamanie się.

   Operacje na stosie to nie jedyne niebezpieczne czynności, wykonywane przez procesor. Z naszego (autorów BH) punktu widzenia równie niebezpieczne są np. wszelkie STA, STX i STY. Mało tego, niebezpieczne są wszelkie rozkazy, które zmuszają procesor do operowania na pamięci! Przecież BH także jest gdzieś w pamięci i niechby tak procesor zechciał go "zoperować"...

   Szczerze mówiąc, należy jeszcze wspomnieć o rejestrach jednostki centralnej. Tu także sprawa nie wygląda zbyt dobrze. Zarówno BH jak i śledzony program wykorzystują je na swój sposób. Z tym także trzeba coś zrobić.

   Jak widać z powyższego BugHunter jest debuggerem, który pracuje nie na procesorze 6502, ale na pewnym jego emulatorze, uruchomionym pod kontrolą właśnie tego procesora. Emulator można zresztą dopasowywać do potrzeb użytkownika, wprowadzając dodatkowe pułapki, tzw. turbo, czy też regulować jego prędkość.

   Ze wszystkim tym kojarzy mi się jeszcze jeden emulator na ATARI XL. Jeden z bardzo znanych obecnie programistów, autor licznych gier i programów użytkowych pokazywał ml kilka lat temu jeden ze swoich pierwszych programów dla małego ATARI. W tekście programu ze zdumieniem zauważyłem procedury, służące do emulacji rozkazów procesora Z-80. Dopiero po jakimś czasie domyśliłem się powodu, dla którego zostały tam umieszczone. Po prostu, autor programu wcześniej pisywał na Spectrum. Jak widać, każdemu zdarza się "emulować"...

Jarosław Syrylak

Powrót na start | Powrót do spisu treści | Powrót na stronę główną

Pixel 2001