IRQ
From Atariki
| 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).
