2016-10-02 11 views
5

Z80 NMI kesimini (0x66) toplayabildiğimden NMI iğnesinin kenar algılaması tetiklenir. NMI işleyici kodunun içinde hala başka bir kenar algılandığında ne olur (RETN henüz yürütülmedi)?Z80 NMI reentrantı mı?

NMI reentrantı var mı ve Z80 geçerli adresi yığına itecek ve 0x66'da yeniden başlayacak mı?

+0

Bağlantı için teşekkür ederiz. Çok kullanışlı. – obiwanjacobi

cevap

3

Okumalarım, ikinci bir NMI ilkinin işlenmesini kesintiye uğratacağıdır. NMI işlemenin ek kesintiden kaçınmak için yaptığı tek özel şey IFF1'i IFF2'ye yedekler ve sonra IFF1'i ayarlar (RETN un diğer özelliği geri yükleme özelliğiyle). Ancak bu, NMI'ları yasaklamaz. Dolayısıyla, gelecekteki bir NMI'nın göz ardı edilmesine dair bir mekanizma yoktur.

Bu hafifçe subtlely olsa literatürde yedeklenir - e.g. "Bu negatif kenar kesme program kontrolü altında devre dışı bırakılamaz ve mevcut komutun tamamlanmasından geçerli olacağı için CPU tarafından her zaman kabul edilecektir tetiklenen (Bus İsteği beklemede değilse) "; vurgu eklenmiştir, ancak otobüs talebinin mevcut bir NMI'den bahsetmeden özel bir durum olarak ortaya çıktığını da belirtmiştir.

+0

Ve isimle çok ince bir şekilde yedeklenmemiş. NMI - Maskeli Olmayan Kesinti. Diğer bir deyişle, DI ile kesintileri devre dışı bırakarak (maskeleme) gerçekleşmesini engelleyemezsiniz. –

İlgili konular