NMI

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 15:02, 6 gru 2005
Piotrv (Dyskusja | wkład)
(Blokowanie NMI)
← Previous diff
Wersja z dnia 18:10, 7 gru 2020
Mono (Dyskusja | wkład)
(Atari 8-bit - ukłąd?)
Next diff →
Linia 1: Linia 1:
-'''NMI''' - ang. Non-Maskable Interrupt - przerwanie niemaskowalne.+Non-Maskable Interrupt - przerwanie niemaskowalne.
-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) '''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== == 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.
-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 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 NMI 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 [[NMI RESET]]. Źródłem wszystkich jest układ [[ANTIC (układ)|ANTIC]].
=== Priorytety NMI === === Priorytety NMI ===
Linia 26: Linia 26:
* VBL * 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łównego przerwania [[RESET]] (CPU RESET).+W komputerach XL/XE przerwanie NMI RESET jest niewykorzystane (i tym samym nieobsługiwane przez [[XL OS]]), zamiast niego używa się głównego przerwania [[RESET]] (CPU RESET).
=== Blokowanie NMI === === Blokowanie NMI ===
-Pomimo tego, że NMI nie można zablokować, to w Atari 8bit jest możliwość wyłączenia przerwań NMI poprzez zablokowanie ich źródła - Antic-a. Dzięki takiej operacji, przy okazji, w małym Atari zyskuje się całkiem sporą ilość dodatkowych cykli procesora i wszystkie obliczenia działają szybciej (wada - brak obrazu). Szczegóły takiej operacji można znaleźć w opisie tego układu, zobacz także [[Antic]].+Pomimo tego, że procesor musi przyjąć i obsłużyć przerwanie NMI, to w Atari 8-bit jest możliwość ich wyłączenia przez zablokowanie ich u źródła. Osiąga się to przez ingerencję w [[Rejestry ANTIC-a#NMIEN|rejestr NMIEN]] układu [[ANTIC (układ)|ANTIC]].
== Atari ST i pochodne == == Atari ST i pochodne ==

Wersja z dnia 18:10, 7 gru 2020

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.

Spis treści

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 NMI RESET. Źródłem wszystkich jest układ ANTIC.

Priorytety NMI

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 przerwanie NMI RESET jest niewykorzystane (i tym samym nieobsługiwane przez XL OS), zamiast niego używa się głównego przerwania RESET (CPU RESET).

Blokowanie NMI

Pomimo tego, że procesor musi przyjąć i obsłużyć przerwanie NMI, to w Atari 8-bit jest możliwość ich wyłączenia przez zablokowanie ich u źródła. Osiąga się to przez ingerencję w rejestr NMIEN układu ANTIC.

Atari ST i pochodne

W procesorach Motoroli serii 68k przerwanie niemaskowalne jest to przerwanie o najwyższym priorytecie, którego nie da się zablokować maską przerwań CPU. 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.

Personal tools