2016-10-02 47 views
5

從我可以收集的Z80 NMI中斷(0x66)是由NMI引腳的邊沿檢測觸發的。當仍處於NMI處理程序代碼中時檢測到另一個邊沿會發生什麼情況(RETN尚未執行)?Z80 NMI是否可重入?

NMI是否可重入,並且Z80是否將堆棧上的當前地址再次從0x66開始?

+0

謝謝你的鏈接。很有用。 – obiwanjacobi

回答

3

我的讀書是第二個NMI會中斷第一個處理。 NMI處理避免額外中斷的唯一特殊事情是將IFF1備份到IFF2,然後設置IFF1(其中RETN的特殊功能是在另一個方向上恢復)。但是這不會禁止NMI。所以沒有任何機制可以忽略未來的NMI。

這在文獻中稍有備份,儘管很細微 - e.g.「在程序控制下,該負沿觸發中斷不能被禁用,並且在當前指令完成時CPU將隨時接受(如果總線請求未掛起)「;強調增加,但也注意到巴士請求已作爲特殊情況被撤出,而沒有提到現有的NMI。

+0

而不是如此微妙地備份的名稱。 NMI - 不可屏蔽中斷。換句話說,通過使用DI禁用(屏蔽)中斷,您無法阻止其發生。 –