IRQ

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 08:39, 21 gru 2005
KMK (Dyskusja | wkład)

← Previous diff
Wersja z dnia 13:26, 15 maj 2006
Miker (Dyskusja | wkład)
(usunięcie wielokrotnych linków)
Next diff →
Linia 7: Linia 7:
W procesorze [[6502]] i [[65C02]] główny [[wektor]] przerwania IRQ znajduje się pod adresem $FFFE. W procesorze [[6502]] i [[65C02]] główny [[wektor]] przerwania IRQ znajduje się pod adresem $FFFE.
-W procesorze [[65C816]] wektor ten jest pod $00FFFE, kiedy procesor jest w trybie emulacji [[6502]]. W trybie natywnym [[65C816]] adres procedury obsługi IRQ pobierany jest spod $00FFEE.+W procesorze [[65C816]] wektor ten jest pod $00FFFE, kiedy procesor jest w trybie emulacji 6502. W trybie natywnym 65C816 adres procedury obsługi IRQ pobierany jest spod $00FFEE.
Źrodłem przerwań IRQ jest: Źrodłem przerwań IRQ jest:
Linia 13: Linia 13:
* układ [[POKEY]] (przerwania związane z transmisją [[SIO]], przerwania klawiatury, liczników) * układ [[POKEY]] (przerwania związane z transmisją [[SIO]], przerwania klawiatury, liczników)
* układ [[PIA]] (sygnały przerwań wyprowadzone na [[gniazdo SIO]]) * układ [[PIA]] (sygnały przerwań wyprowadzone na [[gniazdo SIO]])
-* sam mikroprocesor (rozkaz BRK)+* sam mikroprocesor (rozkaz [[BRK]])
* szyna równoległa (przerwania [[nowe urządzenia|nowych urządzeń]]) * szyna równoległa (przerwania [[nowe urządzenia|nowych urządzeń]])
Linia 20: Linia 20:
=== Priorytety IRQ === === Priorytety IRQ ===
-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 IRQ. W Atari priorytet obsługi jest następujący (w kolejności od najwyższego do najniższego):+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 IRQ. W Atari priorytet obsługi jest następujący (w kolejności od najwyższego do najniższego):
* SERIN - Serial Input - przerwanie odczytu danych z szyny szeregowej * SERIN - Serial Input - przerwanie odczytu danych z szyny szeregowej
-* PIRQ - Parallel IRQ - przerwanie wywołane przez [[nowe urządzenia]] (tylko XL/XE)+* PIRQ - Parallel IRQ - przerwanie wywołane przez nowe urządzenia (tylko XL/XE)
* SEROUT - Serial Output - przerwanie zapisu na szynę szeregową * SEROUT - Serial Output - przerwanie zapisu na szynę szeregową
* XMTDONE - Transmit Done - przerwanie końca transmisji szeregowej * XMTDONE - Transmit Done - przerwanie końca transmisji szeregowej
-* TIMER1 - przerwanie zegara nr 1 układu [[POKEY]]+* TIMER1 - przerwanie zegara nr 1 układu POKEY
-* TIMER2 - przerwanie zegara nr 2 układu [[POKEY]]+* TIMER2 - przerwanie zegara nr 2 układu POKEY
-* TIMER4 - przerwanie zegara nr 4 układu [[POKEY]]+* TIMER4 - przerwanie zegara nr 4 układu POKEY
* KBDIRQ - Keyboard IRQ - przerwanie klawiatury * KBDIRQ - Keyboard IRQ - przerwanie klawiatury
* BREAKIRQ - Break key IRQ - przerwanie klawisza Break * BREAKIRQ - Break key IRQ - przerwanie klawisza Break
-* PROCEED - przerwanie wywołane przez PORT A układu [[PIA]]; sygnał ten wyprowadzony jest na [[gniazdo SIO]] jako pin ''PROCEED'';+* PROCEED - przerwanie wywołane przez PORT A układu PIA; sygnał ten wyprowadzony jest na gniazdo SIO jako pin ''PROCEED'';
-* INTER - przerwanie wywołane przez PORT B układu [[PIA]]; sygnał ten wyprowadzony jest na [[gniazdo SIO]] jako pin ''INTERRUPT'';+* INTER - przerwanie wywołane przez PORT B układu PIA; sygnał ten wyprowadzony jest na gniazdo SIO jako pin ''INTERRUPT'';
* BRKIRQ - Break IRQ - przerwanie programowe wywołane rozkazem BRK; * BRKIRQ - Break IRQ - przerwanie programowe wywołane rozkazem BRK;
===BRK w trybie natywnym 65C816=== ===BRK w trybie natywnym 65C816===
-W [[65C816]] rozkaz BRK powoduje wystąpienie przerwania IRQ tylko wtedy, kiedy procesor jest w trybie emulacji 6502. W trybie natywnym przerwanie [[BRK]] ma osobny wektor (pod adresem $00FFE6).+W 65C816 rozkaz BRK powoduje wystąpienie przerwania IRQ tylko wtedy, kiedy procesor jest w trybie emulacji 6502. W trybie natywnym przerwanie BRK ma osobny wektor (pod adresem $00FFE6).
[[Kategoria:Programowanie Atari 8-bit]] [[Kategoria:Programowanie Atari 8-bit]]

Wersja z dnia 13:26, 15 maj 2006

IRQ - ang. Interrupt ReQuest - przerwanie maskowalne (a właściwie prośba o przerwanie)

Rodzaj przerwania, które procesor może zignorować, jeśli programista sobie tego zażyczy; a to w odróżnieniu od NMI, które zignorowane być nie może.

Atari XL/XE

W procesorze 6502 i 65C02 główny wektor przerwania IRQ znajduje się pod adresem $FFFE.

W procesorze 65C816 wektor ten jest pod $00FFFE, kiedy procesor jest w trybie emulacji 6502. W trybie natywnym 65C816 adres procedury obsługi IRQ pobierany jest spod $00FFEE.

Źrodłem przerwań IRQ jest:

  • układ POKEY (przerwania związane z transmisją SIO, przerwania klawiatury, liczników)
  • układ PIA (sygnały przerwań wyprowadzone na gniazdo SIO)
  • sam mikroprocesor (rozkaz BRK)
  • szyna równoległa (przerwania nowych urządzeń)

IRQ może zostać zablokowane przez ustawienie znacznika I w rejestrze znaczników procesora.

Priorytety IRQ

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 IRQ. W Atari priorytet obsługi jest następujący (w kolejności od najwyższego do najniższego):

  • SERIN - Serial Input - przerwanie odczytu danych z szyny szeregowej
  • PIRQ - Parallel IRQ - przerwanie wywołane przez nowe urządzenia (tylko XL/XE)
  • SEROUT - Serial Output - przerwanie zapisu na szynę szeregową
  • XMTDONE - Transmit Done - przerwanie końca transmisji szeregowej
  • TIMER1 - przerwanie zegara nr 1 układu POKEY
  • TIMER2 - przerwanie zegara nr 2 układu POKEY
  • TIMER4 - przerwanie zegara nr 4 układu POKEY
  • KBDIRQ - Keyboard IRQ - przerwanie klawiatury
  • BREAKIRQ - Break key IRQ - przerwanie klawisza Break
  • PROCEED - przerwanie wywołane przez PORT A układu PIA; sygnał ten wyprowadzony jest na gniazdo SIO jako pin PROCEED;
  • INTER - przerwanie wywołane przez PORT B układu PIA; sygnał ten wyprowadzony jest na gniazdo SIO jako pin INTERRUPT;
  • BRKIRQ - Break IRQ - przerwanie programowe wywołane rozkazem BRK;

BRK w trybie natywnym 65C816

W 65C816 rozkaz BRK powoduje wystąpienie przerwania IRQ tylko wtedy, kiedy procesor jest w trybie emulacji 6502. W trybie natywnym przerwanie BRK ma osobny wektor (pod adresem $00FFE6).

Personal tools