NMI: Różnice pomiędzy wersjami

Z Atariki
Przejdź do nawigacji Przejdź do wyszukiwania
Mono (dyskusja | edycje)
m →Priorytety NMI: linki do dli i vbl
 
(Nie pokazano 3 wersji utworzonych przez 2 użytkowników)
Linia 9: Linia 9:
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]].  
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 17: Linia 17:
1) Seria 400/800
1) Seria 400/800


* DLI
* [[DLI]] - wektor VDSLST ($200)
* NMI RESET
* NMI RESET
* VBL
* [[VBL]] - wektor VBLKI ($222)


2) Seria XL/XE
2) Seria XL/XE


* DLI
* [[DLI]] - wektor VDSLST ($200)
* VBL
* [[VBL]] - wektor VBLKI ($222)


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).
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 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]].
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 ==

Aktualna wersja z 13 lip 2023, 15:05

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 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 - wektor VDSLST ($200)
  • NMI RESET
  • VBL - wektor VBLKI ($222)

2) Seria XL/XE

  • DLI - wektor VDSLST ($200)
  • VBL - wektor VBLKI ($222)

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.