Czaję
1) do rejestru i starszy bajt adresu procedury obsługi.
2) w pamięci od adresu I+0x00 256 zer
3) potem procedura podobna do tej jak napisałeś z drobną zmianą, że jeśli nie in status to jp 0x38
4) na procku włączamy obsługę przerwań typu 2
i sprawa załatwiona.
Coś w tym jest
@matofesi czy dobrze zrozumiałem?
Prawie ale nie do końca
Do I ładujesz starszy bajt TABLICY, które się zaczyna od I*256 - np. 0xFD. Wtedy do pamięci zaczynając od 0xFD00 pakujesz 257 (to na wypadek tego domyślnego 255 - wtedy adres bierze z I*256+255 i I*256+256) razy ten sam bajt - np. 0xFE. W efekcie niezależnie od tego co będzie na szynie pobrany w momencie przerwania wektor trafi na dwa razy 0xFE w pamięci i w efekcie skoczy do 0xFEFE i tam właśnie umieszczasz kod zbliżony do tego, który pokazałem i - jeśli jest ci to niezbędne - jeśli przerwanie nie przyszło od twojego interfejsu skaczesz pod 0x0038.
Tak się robi obsługę przerwań IM2 na Spectrum
@Tygrys mnie nie chodziło o kolejne przerwanie tylko o sytuację ekstremalną w której przerwanie przyjdzie równocześnie z dwóch źródeł. W takiej sytuacji interfejs ustawi swój znacznik i procedura obsługi zgubi jedno "nie swoje" przerwanie.
I tak - dobrze by było wiedzieć, co dokładnie to urządzenie ma robić. Łatwiej byłoby proponować jakieś konkretne rozwiązania