IRQ

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 21:01, 30 maj 2020
Mono (Dyskusja | wkład)
(irq od innych urzadzen)
← Previous diff
Wersja z dnia 12:50, 13 lip 2023
Mono (Dyskusja | wkład)
(Atari XL/XE - "blokada" przerwania IRQ znacznikiem I procesora)
Next diff →
Linia 15: Linia 15:
* 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 procesora obsługa IRQ jest odroczona do chwili gdy I z powrotem będzie skasowane. Od blokady przerwań różni się to choćby tym, że wszystkie flagi wystąpienia przerwania w rejestrach sprzętowych ciągle odzwierciedlają swój stan, dzięki czemu możliwy jest polling. Prawdziwa blokada przerwania odbywa się tylko w rejestrze sprzętowym.
=== Priorytety IRQ === === Priorytety IRQ ===

Wersja z dnia 12:50, 13 lip 2023

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 procesora obsługa IRQ jest odroczona do chwili gdy I z powrotem będzie skasowane. Od blokady przerwań różni się to choćby tym, że wszystkie flagi wystąpienia przerwania w rejestrach sprzętowych ciągle odzwierciedlają swój 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
  • 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:

Personal tools