IRQ
From Atariki
Wersja z dnia 18:16, 14 gru 2019 Mono (Dyskusja | wkład) (→Priorytety IRQ - sredniki) ← Previous diff |
Wersja z dnia 21:01, 30 maj 2020 Mono (Dyskusja | wkład) (irq od innych urzadzen) Next diff → |
||
Linia 36: | Linia 36: | ||
===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). | ||
+ | |||
+ | == Rozszerzenia == | ||
+ | Dodatkowe przerwania IRQ mogą być generowane przez: | ||
+ | |||
+ | * [[VBXE]] | ||
+ | * [[PokeyMAX]] | ||
[[Kategoria:Programowanie Atari 8-bit]] | [[Kategoria:Programowanie Atari 8-bit]] |
Wersja z dnia 21:01, 30 maj 2020
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ń)
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).
Rozszerzenia
Dodatkowe przerwania IRQ mogą być generowane przez: