NMI
From Atariki
Wersja z dnia 19:30, 1 lis 2005 KMK (Dyskusja | wkład) ← Previous diff |
Wersja z dnia 01:23, 2 lis 2005 KMK (Dyskusja | wkład) (→Atari XL/XE) Next diff → |
||
Linia 3: | Linia 3: | ||
Rodzaj [[przerwania]], które w momencie wystąpienia (najpóźniej po zakończeniu wykonywania bieżącego rozkazu) <b>musi</b> być przyjęte i obsłużone przez procesor. A to w odróżnieniu od [[IRQ]], które przyjęte i obsłużone być tylko <b>może</b>. | Rodzaj [[przerwania]], które w momencie wystąpienia (najpóźniej po zakończeniu wykonywania bieżącego rozkazu) <b>musi</b> być przyjęte i obsłużone przez procesor. A to w odróżnieniu od [[IRQ]], które przyjęte i obsłużone być tylko <b>może</b>. | ||
- | ====Atari XL/XE==== | + | ====Atari 8-bit==== |
W procesorze [[6502]] i [[65c02]] główny wektor przerwania NMI znajduje się pod adresem $FFFA. | W procesorze [[6502]] i [[65c02]] główny wektor przerwania NMI znajduje się pod adresem $FFFA. | ||
Linia 10: | Linia 10: | ||
W ośmiobitowym Atari mamy trzy przerwania niemaskowalne: [[DLI]], [[VBL]] oraz RESET. Źródłem wszystkich jest układ [[Antic]]. Przerwanie NMI RESET jest stosowane w komputerach 400/800, gdzie wywołuje je naciśnięcie klawisza RESET, natomiast w XL/XE klawisz RESET wywołuje przerwanie [[RESET]] procesora 6502, a przerwanie NMI RESET Antica jest niewykorzystane. | W ośmiobitowym Atari mamy trzy przerwania niemaskowalne: [[DLI]], [[VBL]] oraz RESET. Źródłem wszystkich jest układ [[Antic]]. Przerwanie NMI RESET jest stosowane w komputerach 400/800, gdzie wywołuje je naciśnięcie klawisza RESET, natomiast w XL/XE klawisz RESET wywołuje przerwanie [[RESET]] procesora 6502, a przerwanie NMI RESET Antica jest niewykorzystane. | ||
+ | |||
+ | W procesorach [[6502]], [[65C02]] i [[65C816]] nie ma żadnej koncepcji priorytetów przerwań, ustala je OS na drodze programowej kontrolując po kolei wszystkie możliwe źródła wystąpienia NMI. W Atari priorytet obsługi jest następujący (w kolejności od najwyższego do najniższego): | ||
+ | |||
+ | 1) Seria 400/800 | ||
+ | |||
+ | * DLI | ||
+ | * NMI RESET | ||
+ | * VBL | ||
+ | |||
+ | 2) Seria XL/XE | ||
+ | |||
+ | * DLI | ||
+ | * VBL | ||
+ | |||
+ | W komputerach XL/XE, jak to zostało już wyżej napisane, przerwanie NMI RESET jest niewykorzystane (i tym samym nieobsługiwane przez [[XL OS]]), zamiast niego używa się głownego przerwania [[RESET]] (CPU RESET). | ||
====Atari ST i pochodne==== | ====Atari ST i pochodne==== |
Wersja z dnia 01:23, 2 lis 2005
NMI - ang. Non-Maskable Interrupt - przerwanie niemaskowalne.
Rodzaj przerwania, które w momencie wystąpienia (najpóźniej po zakończeniu wykonywania bieżącego rozkazu) musi być przyjęte i obsłużone przez procesor. A to w odróżnieniu od IRQ, które przyjęte i obsłużone być tylko może.
Atari 8-bit
W procesorze 6502 i 65c02 główny wektor przerwania NMI znajduje się pod adresem $FFFA.
W procesorze 65c816 pod adresem $00FFFA znajduje się wektor przerwania NMI dla trybu emulacji 6502. Gdy procesor jest przełączony w tryb natywny 65c816, adres procedury obsługi NMI jest pobierany spod $00FFEA.
W ośmiobitowym Atari mamy trzy przerwania niemaskowalne: DLI, VBL oraz RESET. Źródłem wszystkich jest układ Antic. Przerwanie NMI RESET jest stosowane w komputerach 400/800, gdzie wywołuje je naciśnięcie klawisza RESET, natomiast w XL/XE klawisz RESET wywołuje przerwanie RESET procesora 6502, a przerwanie NMI RESET Antica jest niewykorzystane.
W procesorach 6502, 65C02 i 65C816 nie ma żadnej koncepcji priorytetów przerwań, ustala je OS na drodze programowej kontrolując po kolei wszystkie możliwe źródła wystąpienia NMI. W Atari priorytet obsługi jest następujący (w kolejności od najwyższego do najniższego):
1) Seria 400/800
- DLI
- NMI RESET
- VBL
2) Seria XL/XE
- DLI
- VBL
W komputerach XL/XE, jak to zostało już wyżej napisane, przerwanie NMI RESET jest niewykorzystane (i tym samym nieobsługiwane przez XL OS), zamiast niego używa się głownego przerwania RESET (CPU RESET).
Atari ST i pochodne
W procesorach Motoroli serii 68k przerwanie niemaskowalne jest to przerwanie o najwyższym priorytecie. Autowektor NMI jest to wektor numer 31 o adresie $007C (plus zawartość rejestru VBR). W Atari serii ST to przerwanie normalnie nie ma żadnego zastosowania.