ZX Spectrum > PROGRAMOWANIE

Tryby przerwań Z80 - czy można wywnioskować który jest aktywny.

(1/2) > >>

aqqman:
Nurtuje mnie taka kwestia:
Jak programowo stwierdzić w którym trybie przerwań pracuje Z80 w danym momencie?
Z tego co wiem pliki .sna przechowują informację "stanu" maszyny, czyli pamięć i rejestry wszystkie.
Jest tam też pole z informacją o trybie przerwań (IM0,IM1,IM2), oraz zawartością IFF.
W przypadku odczytania IFF sprawa jest prosta. Gorzej z trybem przerwań.
W naszych sprzętach (zxspectrum, timex) można w miarę bezpiecznie wykluczyć tryb IM0 jako bezużyteczny.
Czy jest jakiś sposób aby stwierdzić podczas tworzenia snapshota czy mamy aktywny tryb IM1 czy IM2?
Kiedyś na "pałę" ustawiałem w pliku docelowym, w programie do tworzenia .sna (na żywym sprzęcie, nie na emulatorze) tryb IM1 i to w 90% przypadków działało.

steev:
Nie znam się to się wypowiem:
Ja bym odczytał rejestr I, sprawdził czy ma sensowną wartość, a jeśli tak to podmienił wektor na swój, odblokował przerwania i sprawdził czy procesor skacze pod nowy adres.

tapy:
Czy w Spectrum stosowane były jakieś urządzenia, które potrafiły wystawić dolną połówkę adresu skoku w trakcie zgłaszania przerwania w trybie IM2?

steev:
AMX Mouse, jeśli dobrze pamiętam.

aqqman:

--- Cytat: steev w 2023.02.10, 07:53:34 ---Nie znam się to się wypowiem:
Ja bym odczytał rejestr I, sprawdził czy ma sensowną wartość, a jeśli tak to podmienił wektor na swój, odblokował przerwania i sprawdził czy procesor skacze pod nowy adres.

--- Koniec cytatu ---
Też się nie znam, zatem można podyskutować jak prawdziwi eksperci :D
Metoda jakaś to jest... trochę karkołomna. Przeszukiwałem właśnie dokumentację Z80. O pozyskaniu IFF ładnie pomyśleli, ale o odczycie trybu już zapomnieli.
Analogiczna kaszana jak z portem #7FFD w zx128.

Nawigacja

[0] Indeks wiadomości

[#] Następna strona

Idź do wersji pełnej