* * * Z80 SIMULATION v3.00 (Freeware) * * * | |
Gestione delle INTERRUZIONI |
C.1 LE INTERRUZIONI IN Z80 SIMULATION
Si è visto nel capitolo 3, che le istruzioni che gestiscono le interruzioni, benché accettate dal compilatore (e quindi dall'assemblatore), in fase di esecuzione non hanno alcun effetto. Questo a causa del fatto che Z80 Simulation non simula il meccanismo di interruzione presente nello Z80 vero e proprio. Si è comunque ritenuto utile, descrivere, anche se superficialmente, tale meccanismo.
C.2 LE INTERRUZIONI MASCHERABILI
Le interruzioni mascherabili sono caratterizzate dal fatto di poter essere attivate e disattivate dal programmatore stesso. La richiesta d'interruzione di questo tipo viene effettuata dai dispositivi esterni, tramite il piedino INT dello Z80, e quest'ultimo la prende in considerazione solo se il flip-flop IFF è posto a 1. Per settare il flip-flop IFF (quindi per abilitare o disabilitare le interruzioni) si utilizzano le istruzione EI (Enable Interrupt) che lo pone a 1 e l'istruzione DI (Disable Interrupt) che lo pone a 0.
Se lo Z80 accetta l'interruzione, interrompe il programma che sta eseguendo, salva il PC nello stack per poi poter riprendere l'esecuzione dal punto in cui l'ha interrotta, e poi risponde in 3 modi diversi a seconda che sia attivo il modo d'interruzione 0, 1 o 2. Vediamo cosa succede nei vari casi:
Dei tre modi di risposta all'interruzione, l'ultimo appare chiaramente il più potente, poiché permette, senza alcuna tecnica di polling, di gestire più dispositivi.
C.3 LE INTERRUZIONI NON MASCHERABILI
Le interruzioni non mascherabili, contrariamente a quelle mascherabili, non possono essere disattivate, ovvero lo Z80 non può fare a meno di rispondere a un'interruzione di questo tipo.
La richiesta avviene tramite il piedino NMI, che quando portato a livello basso impone allo Z80 di salvare il PC nello stack e di eseguire la routine che si trova allindirizzo #0066.