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 15:06, 6 gru 2005
KMK (Dyskusja | wkład)
(zwięźlej)
Next diff →
Linia 29: Linia 29:
=== 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 8bit 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]].
== Atari ST i pochodne == == Atari ST i pochodne ==

Wersja z dnia 15:06, 6 gru 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.

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. 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.

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, 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).

Blokowanie NMI

Pomimo tego, że procesor musi przyjąć i obsłużyć przerwanie NMI, to w Atari 8bit 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