Rejestry POKEY-a

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 21:04, 26 paź 2005
KMK (Dyskusja | wkład)

← Previous diff
Wersja z dnia 21:16, 26 paź 2005
KMK (Dyskusja | wkład)

Next diff →
Linia 66: Linia 66:
</td></tr> </td></tr>
-<tr><td id="KBCODE">$D209 (R)</td><td>KBCODE</td><td><p>Kod klawiaturowy ostatnio wciśniętego klawisza. Zawartości tego rejestru nie zmienia naciśnięcie następujących klawiszy: START, SELECT, OPTION, RESET, BREAK, SHIFT oraz CONTROL. Klawisze konsoli patrz [[Rejestry GTIA#CONSOL|CONSOL ($D01F)]]. Klawisze BREAK i RESET wywołują przerwania. Klawisz SHIFT patrz [[Rejestry POKEY-a#SKSTAT|SKSTAT ($D20F)]]. Wciśnięcie klawisza CONTROL daje się wykryć tylko wtedy, kiedy jest wciśnięty razem z jakimś innym klawiszem.</p></td></tr>+<tr><td id="KBCODE">$D209 (R)</td><td>KBCODE</td><td><p>Sześć młodszych bitów tego rejestru to kod klawiaturowy ostatnio wciśniętego klawisza. Znaczenie dwóch pozostałych bitów jest następujące:</p>
 +* bit 7 = 1, klawisz naciśnięto razem z CONTROL
 +* bit 6 = 1, klawisz naciśnięto razem z SHIFT</p>
 +<p>Zawartości tego rejestru nie zmienia naciśnięcie następujących klawiszy: START, SELECT, OPTION, RESET oraz BREAK. Klawisze konsoli patrz [[Rejestry GTIA#CONSOL|CONSOL ($D01F)]]. Klawisze BREAK i RESET wywołują przerwania. Klawisz SHIFT patrz [[Rejestry POKEY-a#SKSTAT|SKSTAT ($D20F)]]. Wciśnięcie klawisza CONTROL daje się wykryć tylko wtedy, kiedy jest wciśnięty razem z jakimś innym klawiszem, którego kod klawiaturowy da się odczytać w tym rejestrze.</p></td></tr>
<tr><td id="SKSTRES">$D20A (W)</td><td>SKSTRES</td> <tr><td id="SKSTRES">$D20A (W)</td><td>SKSTRES</td>

Wersja z dnia 21:16, 26 paź 2005

Układ POKEY, 29 rejestrów. Wiele informacji można przepisywać stąd: [1]

Główny zegar POKEY-a ma częstotliwość 1773446,25 Hz w systemie PAL oraz 1789772,5 Hz w systemie NTSC.

Lista rejestrów

  • Rejestry dźwięku: AUDF1-4, AUDC1-4, AUDCTL, SKCTL.
  • Rejestry klawiatury: KBCODE, SKCTL, SKSTAT.
  • Rejestry wiosełek: POT0-7, POTST, POTGO.
  • Rejestry transmisji szeregowej: AUDF3-4, AUDC4, AUDCTL, SKSTRES, SKCTL, SKSTAT, SERIN, SEROUT.
  • Rejestry IRQ: IRQEN, IRQST, AUDF1, AUDF2, AUDF4, STIMER.
  • Inne rejestry: RANDOM.


AdresEtykietaOpis
$D200 (W)AUDF1
$D200 (R)POT0
$D201 (W)AUDC1
$D201 (R)POT1
$D202 (W)AUDF2
$D202 (R)POT2
$D203 (W)AUDC2
$D203 (R)POT3
$D204 (W)AUDF3
$D204 (R)POT4
$D205 (W)AUDC3
$D205 (R)POT5
$D206 (W)AUDF4
$D206 (R)POT6
$D207 (W)AUDC4
$D207 (R)POT7
$D208 (W)AUDCTL
$D208 (R)POTST

Rejestr stanu konwersji analogowo-cyfrowej dla ośmiu wiosełek (czyli rejestrów POT0-7). Znaczenie bitów:

  • bit 7 - POT7
  • bit 6 - POT6
  • bit 5 - POT5
  • bit 4 - POT4
  • bit 3 - POT3
  • bit 2 - POT2
  • bit 1 - POT1
  • bit 0 - POT0

Jeśli bit jest skasowany, to znaczy, że odpowiedni rejestr POT zawiera właściwy wynik pomiaru.

$D209 (W)STIMER

Zapis tego rejestru powoduje umieszczenie wartości rejestrów AUDF1, AUDF2 i AUDF4 w odpowiednich licznikach oraz zapoczątkowanie zliczania.

$D209 (R)KBCODE

Sześć młodszych bitów tego rejestru to kod klawiaturowy ostatnio wciśniętego klawisza. Znaczenie dwóch pozostałych bitów jest następujące:

  • bit 7 = 1, klawisz naciśnięto razem z CONTROL
  • bit 6 = 1, klawisz naciśnięto razem z SHIFT</p>

Zawartości tego rejestru nie zmienia naciśnięcie następujących klawiszy: START, SELECT, OPTION, RESET oraz BREAK. Klawisze konsoli patrz CONSOL ($D01F). Klawisze BREAK i RESET wywołują przerwania. Klawisz SHIFT patrz SKSTAT ($D20F). Wciśnięcie klawisza CONTROL daje się wykryć tylko wtedy, kiedy jest wciśnięty razem z jakimś innym klawiszem, którego kod klawiaturowy da się odczytać w tym rejestrze.

$D20A (W)SKSTRES

Zapis tego rejestru powoduje zresetowanie bitów 5-7 rejestru SKSTAT ($D20F).

$D20A (R)RANDOM

Liczba pseudolosowa z zakresu od 0 do 255.

$D20B (W)POTGO

Zapis tego rejestru powoduje wyzerowanie rejestrów położenia potencjometrów (POT0-3) i rozpoczęcie pomiaru oporności od nowa.

$D20C-

Rejestr nieużywany.

$D20D (W)SEROUT

Rejestr wyjściowy dla transmisji szeregowej.

$D20D (R)SERIN

Rejestr wejściowy dla transmisji szeregowej.

$D20E (W)IRQEN

Rejestr zezwoleń na wygenerowanie przerwań IRQ. Ma cień IRQENS pod adresem $0010. Przypisanie bitów jest w obydwu identyczne (0 - przerwanie zabronione):

  • bit 7 - przerwanie klawisza BREAK
  • bit 6 - przerwanie klawiatury
  • bit 5 - odczyt z łącza szeregowego
  • bit 4 - zapis na łącze szeregowe
  • bit 3 - koniec transmisji szeregowej
  • bit 2 - licznik nr 4
  • bit 1 - licznik nr 2
  • bit 0 - licznik nr 1

Przy blokowaniu przerwań IRQ należy raczej korzystać z cienia. Np. zablokowanie klawisza BREAK uzyskuje się przez:

    lda irqens
    and #$7f
    sta irqens
$D20E (R)IRQST

Rejest statusu przerwań IRQ. Cień IRQSTAT pod adresem $0011. Przypisanie bitów (0 - przerwanie wystąpiło):

  • bit 7 - przerwanie klawisza BREAK
  • bit 6 - przerwanie klawiatury
  • bit 5 - odczyt z łącza szeregowego
  • bit 4 - zapis na łącze szeregowe
  • bit 3 - koniec transmisji szeregowej
  • bit 2 - licznik nr 4
  • bit 1 - licznik nr 2
  • bit 0 - licznik nr 1
$D20F (W)SKCTL
$D20F (R)SKSTAT

Rejestr statusu transmisji szeregowej i klawiatury (Serial and Keyboard Status register). Znaczenie bitów:

  • bit 7 - framing error (0 - wystąpił)
  • bit 6 - serial overrun (0 - wystąpił)
  • bit 5 - przepełnienie bufora wejściowego klawiatury (0 - wystąpiło)
  • bit 4 - kopia wejścia szeregowego
  • bit 3 - klawisz SHIFT (0 - wciśniety)
  • bit 2 - dowolny klawisz (0 - wciśnięty)
  • bit 1 - transmisja danych (0 - w toku)
  • bit 0 - nieużywany, zawsze 1.

Ten artykuł to tylko zalążek. Możesz pomóc rozwojowi Atariki poprzez rozszerzenie go o więcej informacji.

Personal tools