NMI

From Atariki

Revision as of 01:23, 2 lis 2005; view current revision
←Older revision | Newer revision→
Jump to: navigation, search

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.

Personal tools