Emulace systému s M68040 - implementace signálu INTACK

Dobry den,
Vyvijim emulator realneho systemu zalozeneho na procesoru MC68040, ktery je hostovan na platforme PC (x86). Pouzivam knihovnu Mimic/68k od Micro APL, ktera je v podstate emulator CPU M68k. Vse ostatni bylo treba doprogramovat, jako radic preruseni, HW registry, Interval timer atd.. coz definuji jako zjednoduseny model hardware (ZMH). Tyto ZMH jsou zdrojem nekterych preruseni ktere v emulovanem systemu spousti ISR (Interrupt service routine)
 
Zajima me jak ma byt spravne naprogramovan Interrupt acknowledgement signal (INTACK) ktery slouzi k potvrzeni ZMH, ze preruseni bylo akceptovano a tedy typicky dochazi k resetovani priznaku v HW registrech, ze preruseni bylo prijato procesorem.

MC68040 ma 7 priorit preruseni a CPU registr (SR) umoznuje maskovat priority 1 az 6.
Doprogramovan byl registr IRL  - 8 bitu siroky registr, v jehoz bitech jsou registrovany pozadavky na preruseni v jednotlivych prioritach.

Co me zajima je kdy presne ma byt spravne generovany INTACK

1, V pripade ze ZMH zada o preruseni a nezalezi na aktualni masce v registru SR
(tj. priznak preruseni byl zapsan do IRL takze ISR muze by provedeno v nasledujicich cyklech nebo taky pozdeji, az to maska v SR umozni)

2, V pripade ze ZMH zada o preruseni a maska v SR jej umoznuje
(tj. priznak preruseni byl zapsan do IRL a zaroven maska v SR umoznuje aby ISR bylo provedeno v nasledujicich cyklech)

Dekuji za fundovanou odpoved.
« Poslední změna: 14. 09. 2021, 14:10:12 od Petr Krčmář »


Re:Emulace systému s M68040 - implementace signálu INTACK
« Odpověď #1 kdy: 14. 09. 2021, 15:05:36 »
Nevim presne, co rozumite pod INTACK. Pokud tim myslite Interrupt Acknowledge cyklus na busu , tak podle ref. manualu kap. 7.5.1 a dale nastava jen pokud priorita preruseni na /IPL2../IPL0 je vyssi nez v masce SR a stav na /IPLx trva >=2 cykly BCLK (jsou tam v kaskade synchronizacni DFF pro clock cross domain proti 68040 BCLK a komparaci). Predpokladam tedy, ze v opacnem pripade, pokud /IPLx spadne na jeste nizsi prioritu nebo na "111", tak je v 68040 "vse zapomenuto" (viz i Figure 7-19), tedy zadna aktivace /IPEND a zadny Interrupt Acknowledge Bus Cycle se negeneruje.

Re:Emulace systému s M68040 - implementace signálu INTACK
« Odpověď #2 kdy: 14. 09. 2021, 18:36:24 »
neni to tak vetsinou zvykem, kdyz nejaky bit v masce pro interupty zakazuje (=0) tak se dany interupt negeneruje?!

takze IRL muzu jenom cist a podle toho spoustet ISR, ale do SR muzu zapisovat zda chci interupt povolit ci zakazat.

takze ja myslim, ze spravne je 2.

« Poslední změna: 14. 09. 2021, 18:38:21 od alex6bbc »