IRQ
From Atariki
Wersja z dnia 15:09, 11 lip 2005 KMK (Dyskusja | wkład) ← Previous diff |
Wersja z dnia 17:55, 13 sie 2005 KMK (Dyskusja | wkład) (→Atari XL/XE) Next diff → |
||
Linia 8: | Linia 8: | ||
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: | ||
+ | |||
+ | * 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 [[nowe urządzenia|nowych urządzeń]]) | ||
IRQ może zostać zablokowane przez ustawienie znacznika I w rejestrze znaczników procesora. | IRQ może zostać zablokowane przez ustawienie znacznika I w rejestrze znaczników procesora. | ||
- | W procesorach tych 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 |
Wersja z dnia 17:55, 13 sie 2005
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.
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 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;