PRERUŠENIE V SYSTÉME Z80
                    ########################
Je dvojitého druhu a to nemaskovateľné prerušenie,ktorého signál
sa privádza na NMI. Táto možnosť prerušenia sa móže využiť ako
reakcia na výpadok napájacieho napätia.
 Druhým je maskovateľné prerušenie INT. Aktivovanie tohto vodiča
je možné na základe logického súčtu od všetkých pripojených pe-
riférií. Prijatie požiadavky na prerušenie možno zablokovať in-
štrukciou DI a uvoľniť inštrukciou EI. CPU obsahuje dva obvody
flip-flop IFF1 a IFF2. IFF1 riadi prijatie prerušenia, zatiaľ čo
IFF2 dočasne uchováva obsah IFF1.
              PRIJATIE NAMASKOVATEĽNÉHO PRERUŠENIA.
               ___
Riadiaci vodič NMI je dotazovaný v poslednom takte každej in-
štrukcie. V prípade aktívnej úrovne bude priebeh nasledovný:
 1)obsah PC na adresovú zbernicu, no nenastane čítanie
operačného kódu z pamäti; Vnútorné generovanie RESTART adresy
0066H
 2)dva zápisové cykly na dočasné uchovanie stavu PC do zásobníka
 3)RESTART adresa 0066h do PC
obslužný program pre NMI sa začína na adrese 0066H a musí sa
končiť inštrukciou RETN. Vtedy priebeh bude nasledovný:
 1) dva M1-cykly
 2) dva cykly styku s pamäťou, pomocou ktorých sa do PC vráti zo
zásobníka adresa, nasledujúca po ukončení prerušenia v programe
               PRIJATIE MASKOVATEĽNÉHO PRERUŠENIA
Existujú tri druhy: MODE 0, MODE 1, MODE 2
                                             _____
REŽIM MODE 0 sa nastaví automaticky signálom RESET alebo
inštrukciou IM0. Pokiaľ bude prerušenie povolené, nástupnou
hranou posledného taktu každej inštrukcie sa dotazuje vodič INT
a vprípade aktívnej úrovne je priebeh nasledovný:
1) obsah PC na adres-BUS bez čítania inštrukcie
2) vloženie dvoch taktov Tw po takte T2
3) aktivácia IORQ so zostupnou hranou v prvom takte Tw
4) prečítanie 8-bit vektora (RESTART) prerušujúceho zariadenia
5) dva zápisné cykly k dočasnému uloženiu stavu PC do zásobníka
6) v cykle M1 sa prečítaná inštrukcia RESTART aktivuje.
obslužý program prerusenia musí byť ukončený inštrukciou RET
Priebeh ukončenia je nasledovný:
1) jeden M1 cyklus
2) dva cykly s pamäťou, pomocou ktorých sa obnoví čítač PC na
pôvodnú adresu.
REŽIM MODE 1
Programuje sa inštrukciou IM1. Na rozdiel od režimu IM0 CPU
generuje vnutri RESTART 7 (RST 38h), takže nieje ho potrebné
generovať od prerušujúceho zariadenia .
REŽIM MODE 2
Programuje sa inštrukciou IM2. V spojení s obvodom PIO,SIO,CTC
predstavuje výkonnú metódu obsluhy prerušení. Po zistení
prerušenia sa vyšle z prerušujúceho obvodu 8-bitový vektor
(nižšia časť adresy) ku CPU, kde sa spolu s obsahom INTERRUPT I
registrasformuje na 16-bitovú adresu, ktorá ukazuje v tabuľke
v ktorej sú odpovedajúce štartovacie adresy podprogramov pre
obsluhu prerušení.
Priebeh činnosti je nasledovný:
1) obsah PC na adres-BUS bez čítania inštrukcie
2) vložénie taktov Tw po takte T2
3) aktivuje sa IORQ so zostupnou hranou Tw
4) čítanie interrupt vektora
5) uchovanie stavu PC do zásobníka
6) vytvorenie adresy z I registra a int.vektora a uloženie do PC
7) dva čítacie cykly na prečítanie štartovacej adresy programu
pre obsluhu prerušenia
8) vloženie tejto adresy do PC
Obslužný program musí byť kôli zabezpečeniu riadenia priority
ukončený inštrukciou RETI
1) dva M! cykly
2) dva čítacie cykly k obnove PC
                       PRIORITA PRERUŠENÍ
V závislosti na konkretnom zapojení a využití obvodov systému
možno zvoliť prioritu týchto obvodov. Preto tieto obvody
vytvárajú prioritný reťazec. Riadiaci vstup IEI obvodu s
najvyššou prioritou bude pevne pripojený na úroveň 1. Výstup
tohto obvodu IEO je pripojený na vstup IEI nasledujúceho obvodu
s nižšou prioritou....
Pritom treba dať pozor, že v jednotlivých obvodoch je priorita
pevne určená (napr. u PIO má najváčšiu prioritu port A oproti B)
do reťazca obvodov možno zapojiť iba obmedzený počet obvodov.
(napr. 4 PIO)
     ________     ________     ________
    |        |   |        |   |        |
1---|IEI  IEO|---|IEI  IEO|---|IEI  IEO|---
    |________|   |________|   |________|
      /\   |        /\  |        /\  |
      ||   |        ||  |        ||  |   zväzok vodičov
 <----||---o--------||--o--------||--o----- prerušenia
      ||            ||           ||
      \/            \/           \/
  <========================================> system BUS
Ak neprichádza žiadna požiadavka na prerušenie od obvodov reťaze
tak úroveň 1 sa prenesie cez vstupy IEI a výstupy IEO po celej
reťazi. Ak ohlási niektořý člen reťaze požiadavku na prerušenie
vtedy bezprostredne sa na jeho výstupe IEO objaví úroveň 0
a všetky obvody ležiace pod touto prioritou sú zablokované.
Ak je teda aktivovaný vodič INT tak nastane cyklus potvrdenia
prerušenia pre ten obvod, ktorého vstup IEI=1 a výstup IEO=0
Počas trvania strojového cyklu M1 je zabezpečené, že nemôže byť
generovaná žiadna ďaľšia požiadavka na prerušenie. Okrem toho v
CPU budú IFF1 a IFF2 zablokované pre požiadavku na prerušenie.
Takisto v tomto čase nemôže byť prijatá ani požiadavka s vyššou
prioritou.Obsluha takéhoto kanálu (obvodu)je možná iba vtedy, ak
a) vyvolaný obslužný program obsahuje inštrukciu EI, potom je
možné požiadavku s vyššou prioritou potvrdiť a nižšiu dočasne
zosadiť.
b) inštrukcia EI je prvou naprogramovanou inštrukciou po úplnom
ukončení obslužného programu.
Vždy na konci obslužné ho programu (v IM2) inštrukciou RETI sa
má vedľa čítania obsahu zásobníka oznámiť kanálu (obvodu), ktorý
bol obsluhovaný, koniec programu. Možno to urobiť nasledovne:
a) na kanál, ktorý má na vstupe iei=1 a výstup IEO=0 aj pri
neaktívnom INT táto inštrukcia nastaví výstup IEO=1 čím sa
uvoľní obvodu s nižšou prioritou možnosť vyvolania prerušenia
b) v prípade, že počas obslužného programu si žiada kanál
prerušenie s vyššou prioritou, avšak táto nemóže byť potvrdená,
obstará 2-bytová inštrukcia RETI v prvom M1 cykle nútene výstup
IEO=1. Tým bude zabezpečené,že inštrukcia vzťahujúca sa na práve
obsluhovaný kanál, umožní obvodu s vyššou prioritou obslúženie.
Zatiaľ čo ostatné mikroprocesorové systémy majú riadenie priorít
zabezpečené ďaľším obvodom (redič prerušení), systém Z80 má
každý systémový číp vybavený vstupom IEI a výstupom IEO kvôli
monosti zapojenia do prioritného reťazca.
Tento spôsob sa nazýva DAISY CHAIN.
Pri vyslaní požiadavky na prerušenie sa nastaví výstup
príslušného čípu na IEO=0, to sa prenesie cez celú reťaz až na
jej posledný člen, ktorý bude mať tiež IEO=0