[Z80] Emulator procesora Z80
: wtorek 13 sie 2024, 14:36
Z80 – chyba najbardziej kultowy procek jakikolwiek
był wymyślony. Był produkowany prawie przez 50 lat,
ten rekord będzie trudno pobić.
Taka długowieczność, to jak nie patrzeć, jest jakimś wyznacznikiem.
Do chwili obecnej na fanów ma całym świecie.
Jednak by sprawnie się nim posługiwać, niezbędne są
pewne narzędzia. Jednym z takich jest prezentowany
emulator procesora, który ma zastąpić wcześniej używany AVSIMZ80
(jest to program DOS’owy i słabo przystaje do obecnych realiów).
Poza tym rosną apetyty na większą funkcjonalność.
Emulator procesora Z80
No więc stworzyłem sobie program do śledzenia wykonania programu dla procka Z80. Jest w dużej mierze podobny do wcześniejszego programu służącego do emulacji procesora i8085 <tutaj>.
Po "odpaleniu" programu mamy:
Moim celem jest stworzenie narzędzia pozwalającego na diagnostykę w szerokim zakresie. Wymaga to określenia dla programu wielu informacji, gdyż program wyłapuje przykładowo zapis do pamięci EPROM, odczyt/zapis z pamięci nieistniejącej (gdyż nie ma obowiązku, by do procka była przypięta pamięć wypełniająca całą przestrzeń adresową). Podobnie są monitorowane użycia portów we/wy. Należy wcześniej określić jakie adresy portów są używane i symulacja wykonania programu dla procka z80 się zatrzyma, jeżeli nie zostaną wyspecyfikowane „legalne” adresy portów. By nie wklepywać tego za każdym razem, jest plik opisujący projekt (symulacji). Oczywiście, wszystkie szczegóły można w dowolnej chwili zmodyfikować.
Po otwarciu projektu jest:
Przykładowy system prockowy składa się z pamięci EPROM (lub innej nieulotnej) lokowanej w przestrzeni od 0000 hex do 7FFF hex oraz pamięć RAM lokowana od 8000 hex do FFFF hex. W sumie obie pamięci wypełniają całą przestrzeń. Dodatkowo występują porty wyjścia/wejścia (jak przykładowo i8255) lokowane na adresach C0..C3 hex. Program prowadzi kontrolę w sensie: dopuszcza zapis tylko do portów wyjściowych lub wejściowo-wyjściowych (jakiekolwiek instrukcje realizujące operacje IN) oraz odczyt dla portów wejściowych oraz wejściowo-wyjściowych (jakiekolwiek operacje realizujące OUT). Również program emulatora wspiera obsługę przerwań. no i oczywiście przerwanie niemaskowalne NMI. Te przerwania (niemaskowalne oraz maskowalne) mogą być nieużywane w systemie (ze stałym sygnałem wymuszonym przez odpowiednie przyłączenie wejścia do VCC), toteż istnieje możliwość, że klikanie na przycisk do zgłaszania przerwania pozostanie bez reakcji.
Aktualny stan programu:
był wymyślony. Był produkowany prawie przez 50 lat,
ten rekord będzie trudno pobić.
Taka długowieczność, to jak nie patrzeć, jest jakimś wyznacznikiem.
Do chwili obecnej na fanów ma całym świecie.
Jednak by sprawnie się nim posługiwać, niezbędne są
pewne narzędzia. Jednym z takich jest prezentowany
emulator procesora, który ma zastąpić wcześniej używany AVSIMZ80
(jest to program DOS’owy i słabo przystaje do obecnych realiów).
Poza tym rosną apetyty na większą funkcjonalność.
Emulator procesora Z80
No więc stworzyłem sobie program do śledzenia wykonania programu dla procka Z80. Jest w dużej mierze podobny do wcześniejszego programu służącego do emulacji procesora i8085 <tutaj>.
Po "odpaleniu" programu mamy:
Moim celem jest stworzenie narzędzia pozwalającego na diagnostykę w szerokim zakresie. Wymaga to określenia dla programu wielu informacji, gdyż program wyłapuje przykładowo zapis do pamięci EPROM, odczyt/zapis z pamięci nieistniejącej (gdyż nie ma obowiązku, by do procka była przypięta pamięć wypełniająca całą przestrzeń adresową). Podobnie są monitorowane użycia portów we/wy. Należy wcześniej określić jakie adresy portów są używane i symulacja wykonania programu dla procka z80 się zatrzyma, jeżeli nie zostaną wyspecyfikowane „legalne” adresy portów. By nie wklepywać tego za każdym razem, jest plik opisujący projekt (symulacji). Oczywiście, wszystkie szczegóły można w dowolnej chwili zmodyfikować.
Po otwarciu projektu jest:
Przykładowy system prockowy składa się z pamięci EPROM (lub innej nieulotnej) lokowanej w przestrzeni od 0000 hex do 7FFF hex oraz pamięć RAM lokowana od 8000 hex do FFFF hex. W sumie obie pamięci wypełniają całą przestrzeń. Dodatkowo występują porty wyjścia/wejścia (jak przykładowo i8255) lokowane na adresach C0..C3 hex. Program prowadzi kontrolę w sensie: dopuszcza zapis tylko do portów wyjściowych lub wejściowo-wyjściowych (jakiekolwiek instrukcje realizujące operacje IN) oraz odczyt dla portów wejściowych oraz wejściowo-wyjściowych (jakiekolwiek operacje realizujące OUT). Również program emulatora wspiera obsługę przerwań. no i oczywiście przerwanie niemaskowalne NMI. Te przerwania (niemaskowalne oraz maskowalne) mogą być nieużywane w systemie (ze stałym sygnałem wymuszonym przez odpowiednie przyłączenie wejścia do VCC), toteż istnieje możliwość, że klikanie na przycisk do zgłaszania przerwania pozostanie bez reakcji.
Aktualny stan programu:
