* * * 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:

  1. Se lo Z80 si trova in modo 0 (istruzione IM 0) preleva la prossima istruzione dal BUS DATI, in modo tale che sia il dispositivo periferico a emettere il codice macchina (e non la memoria). Generalmente si tratta di istruzioni di restart (RST).
  2. Se lo Z80 si trova in modo 1 (istruzio ne IM 1) esegue il sottoprogramma all'indirizzo #0038.
  3. Se lo Z80 si trova in modo 2 (istruzione IM 2), legge dal BUS DATI il codice di riconoscimento emesso dal dispositivo che ha richiesto l'interruzione, lo concatena con il registro I formando così l'indirizzo a 16 bit (di cui I è la parte alta) in cui preleverà un altro indirizzo dove troverà la prima istruzione della routine di gestione dell'interruzione.

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 all’indirizzo #0066.