IRQ

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 19:40, 13 sie 2005
KMK (Dyskusja | wkład)

← Previous diff
Aktualna wersja
Mono (Dyskusja | wkład)
(Atari XL/XE - styl.)
Linia 1: Linia 1:
-'''IRQ''' - ang. Interrupt ReQuest - przerwanie maskowalne (a właściwie ''prośba o przerwanie'')+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.+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====+==Atari XL/XE==
-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:+Źródłem przerwań IRQ jest:
-* 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) 
* szyna równoległa (przerwania [[nowe urządzenia|nowych urządzeń]]) * szyna równoległa (przerwania [[nowe urządzenia|nowych urządzeń]])
-IRQ może zostać zablokowane przez ustawienie znacznika I w rejestrze znaczników procesora.+Po ustawieniu znacznika I w rejestrze stanu procesora obsługa IRQ jest odroczona do chwili gdy I z powrotem będzie skasowany. Od blokady przerwań różni się to tym, że wszystkie flagi wystąpienia przerwania w rejestrach sprzętowych ciągle odzwierciedlają swój prawidłowy stan, dzięki czemu możliwy jest polling. Prawdziwa blokada przerwania odbywa się tylko w rejestrze sprzętowym.
-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):+=== Priorytety IRQ ===
-* SERIN - Serial Input - przerwanie odczytu danych z szyny szeregowej+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):
-* PIRQ - Parallel IRQ - przerwanie wywołane przez urządzenie podłączone do szyny równoległej+
-* 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;+
 +* SERIN - Serial Input - przerwanie odczytu danych z szyny szeregowej - wektor VSERIN ($20A)
 +* PIRQ - Parallel IRQ - przerwanie wywołane przez nowe urządzenia (tylko XL/XE) - wektor VPIRQ ($238)
 +* SEROUT - Serial Output - przerwanie zapisu na szynę szeregową - wektor VSEROR ($20C)
 +* XMTDONE - Transmit Done - przerwanie końca transmisji szeregowej - wektor VSEROC ($20E)
 +* TIMER1 - przerwanie zegara nr 1 układu POKEY - wektor VTIMR1 ($210)
 +* TIMER2 - przerwanie zegara nr 2 układu POKEY - wektor VTIMR2 ($212)
 +* TIMER4 - przerwanie zegara nr 4 układu POKEY - wektor VTIMR4 ($214)
 +* KBDIRQ - Keyboard IRQ - przerwanie klawiatury - wektor VKEYBD ($208)
 +* BREAKIRQ - Break key IRQ - przerwanie klawisza Break - wektor VBRKKY ($236)
 +* PROCEED - przerwanie wywołane przez PORT A układu PIA - sygnał ten wyprowadzony jest na gniazdo SIO jako pin ''PROCEED'' - wektor VPRCED ($202)
 +* INTER - przerwanie wywołane przez PORT B układu PIA - sygnał ten wyprowadzony jest na gniazdo SIO jako pin ''INTERRUPT'' - wektor VINTER ($204)
 +* BRKIRQ - Break IRQ - przerwanie programowe wywołane rozkazem BRK - wektor VBREAK ($206)
-[[Kategoria:Atari 8-bit]]+Wektor głównej procedury obsługi IRQ znajduje się w VIMIRQ ($216).
 + 
 +===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).
 + 
 +== Rozszerzenia ==
 +Dodatkowe przerwania IRQ mogą być generowane przez:
 + 
 +* [[VBXE]]
 +* [[PokeyMAX]]
 + 
 +[[Kategoria:Programowanie Atari 8-bit]]

Aktualna wersja

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.

Spis treści

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.

Źródł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)
  • szyna równoległa (przerwania nowych urządzeń)

Po ustawieniu znacznika I w rejestrze stanu procesora obsługa IRQ jest odroczona do chwili gdy I z powrotem będzie skasowany. Od blokady przerwań różni się to tym, że wszystkie flagi wystąpienia przerwania w rejestrach sprzętowych ciągle odzwierciedlają swój prawidłowy stan, dzięki czemu możliwy jest polling. Prawdziwa blokada przerwania odbywa się tylko w rejestrze sprzętowym.

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 - wektor VSERIN ($20A)
  • PIRQ - Parallel IRQ - przerwanie wywołane przez nowe urządzenia (tylko XL/XE) - wektor VPIRQ ($238)
  • SEROUT - Serial Output - przerwanie zapisu na szynę szeregową - wektor VSEROR ($20C)
  • XMTDONE - Transmit Done - przerwanie końca transmisji szeregowej - wektor VSEROC ($20E)
  • TIMER1 - przerwanie zegara nr 1 układu POKEY - wektor VTIMR1 ($210)
  • TIMER2 - przerwanie zegara nr 2 układu POKEY - wektor VTIMR2 ($212)
  • TIMER4 - przerwanie zegara nr 4 układu POKEY - wektor VTIMR4 ($214)
  • KBDIRQ - Keyboard IRQ - przerwanie klawiatury - wektor VKEYBD ($208)
  • BREAKIRQ - Break key IRQ - przerwanie klawisza Break - wektor VBRKKY ($236)
  • PROCEED - przerwanie wywołane przez PORT A układu PIA - sygnał ten wyprowadzony jest na gniazdo SIO jako pin PROCEED - wektor VPRCED ($202)
  • INTER - przerwanie wywołane przez PORT B układu PIA - sygnał ten wyprowadzony jest na gniazdo SIO jako pin INTERRUPT - wektor VINTER ($204)
  • BRKIRQ - Break IRQ - przerwanie programowe wywołane rozkazem BRK - wektor VBREAK ($206)

Wektor głównej procedury obsługi IRQ znajduje się w VIMIRQ ($216).

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

Rozszerzenia

Dodatkowe przerwania IRQ mogą być generowane przez:

Personal tools