Rejestry POKEY-a
From Atariki
Wersja z dnia 18:36, 18 gru 2005 KMK (Dyskusja | wkład) ← Previous diff |
Wersja z dnia 18:38, 18 gru 2005 KMK (Dyskusja | wkład) Next diff → |
||
Linia 17: | Linia 17: | ||
*dla zegara wejściowego o częstotliwości głównej (1,773447 MHz w systemie PAL): '''F = CLOCK/2*(N+M)''', gdzie '''N''' to zwiększona o jeden wartość rejestru AUDF, a '''M''' to wartość modyfikująca zależna od rozmiaru rejestru generatora. Dla pojedynczego generatora ośmiobitowego '''M = 4''', natomiast dla generatórów połączonych w parę '''M = 7'''. | *dla zegara wejściowego o częstotliwości głównej (1,773447 MHz w systemie PAL): '''F = CLOCK/2*(N+M)''', gdzie '''N''' to zwiększona o jeden wartość rejestru AUDF, a '''M''' to wartość modyfikująca zależna od rozmiaru rejestru generatora. Dla pojedynczego generatora ośmiobitowego '''M = 4''', natomiast dla generatórów połączonych w parę '''M = 7'''. | ||
*dla zegara wejściowego o częstotliwości 1/28 lub 1/114 częstotliwości głównej: '''F = CLOCK/2*N'''. | *dla zegara wejściowego o częstotliwości 1/28 lub 1/114 częstotliwości głównej: '''F = CLOCK/2*N'''. | ||
- | <p>Oprócz tego rejestry AUDF (za wyjątkiem AUDF3) mogą pełnić funkcję liczników generujących cyklicznie przerwania [[IRQ]]. Przerwanie zostanie wygenerowane w momencie, kiedy licznik osiągnie wartość -1. Patrz [[Rejestry POKEY-a#IRQEN|IRQEN $D20E]] i [[Rejestry POKEY-a#STIMER|STIMER $D209]].</p> | + | <p>Oprócz tego rejestry AUDF (za wyjątkiem AUDF3) mogą pełnić funkcję liczników generujących cyklicznie przerwania [[IRQ]]. Wartość wstawiana do licznika to ilość "cyknięć" wybranego zegara, jakie mają upłynąć zanim wygenerowane zostanie przewanie. Przerwanie zostanie wygenerowane w momencie, kiedy licznik osiągnie wartość -1. Patrz [[Rejestry POKEY-a#IRQEN|IRQEN $D20E]] i [[Rejestry POKEY-a#STIMER|STIMER $D209]].</p> |
</td></tr> | </td></tr> | ||
Linia 33: | Linia 33: | ||
<tr><td>101</td><td>Bez rejestru przesuwającego (czysty ton)</td></tr> | <tr><td>101</td><td>Bez rejestru przesuwającego (czysty ton)</td></tr> | ||
<tr><td>110</td><td>Rejestr 4-bitowy</td></tr> | <tr><td>110</td><td>Rejestr 4-bitowy</td></tr> | ||
- | <tr><td>111</td><td>Bez reejstru przesuwającego (czysty ton)</td></tr> | + | <tr><td>111</td><td>Bez rejestru przesuwającego (czysty ton)</td></tr> |
</table> | </table> | ||
<p>Cztery najmłodsze bity definiują głośność dźwięku wytwarzanego przez generator, w zakresie od $00 (cisza) do $0F (maksymalna głośność).</p> | <p>Cztery najmłodsze bity definiują głośność dźwięku wytwarzanego przez generator, w zakresie od $00 (cisza) do $0F (maksymalna głośność).</p> |
Wersja z dnia 18:38, 18 gru 2005
Układ POKEY ma 29 rejestrów, które zajmują 16 adresów od $D200 do $D20F. W komputerach z zamontowanym stereo drugi Pokey zajmuje następnych 16 adresów, czyli $D210-$D21F.
Główny zegar POKEY-a ma częstotliwość 1773447 Hz w systemie PAL oraz 1789772,5 Hz w systemie NTSC (albo wg niektórych źrodeł 1,7897885 MHz).
- 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.
Adres | Etykieta | Opis | ||||||||||||||||||
$D200 (W) | AUDF1 |
Rejestr częstotliwości generatora dźwięku nr 1. Jest to w istocie dzielnik częstotliwości zdefiniowanej w rejestrze AUDCTL $D208. Wartość częstotliwości wyjściowej uzyskujemy ze wzorów:
Oprócz tego rejestry AUDF (za wyjątkiem AUDF3) mogą pełnić funkcję liczników generujących cyklicznie przerwania IRQ. Wartość wstawiana do licznika to ilość "cyknięć" wybranego zegara, jakie mają upłynąć zanim wygenerowane zostanie przewanie. Przerwanie zostanie wygenerowane w momencie, kiedy licznik osiągnie wartość -1. Patrz IRQEN $D20E i STIMER $D209. | ||||||||||||||||||
$D200 (R) | POT0 | Rezystancja wiosełka nr 0. | ||||||||||||||||||
$D201 (W) | AUDC1 |
Rejestr kontroli generatora dźwięku nr 1. Trzy najstarsze bity sterują zniekształceniami dźwięku (szumem) przez wybór rejestru przesuwającego według następującego schematu:
Cztery najmłodsze bity definiują głośność dźwięku wytwarzanego przez generator, w zakresie od $00 (cisza) do $0F (maksymalna głośność). Bit 4 jest normalnie skasowany. Ustawienie go powoduje wyłączenie generatora dźwięku, wartości ustawiane w odpowiednim rejestrze AUDF oraz wartości bitów 7-5 rejestru AUDC przestają mieć znaczenie. W tym trybie bity głośności sterują bezpośrednio napięciem podawanym z tego kanału dźwiękowego na wyjście audio, innymi słowy bezpośrednio sterują położeniem membrany glośnika. Pozwala to na odtwarzanie 4-bitowych sampli. Jako, że cztery generatory dźwięku są niezależne, a ich wyjścia połączone są razem, ustawiwszy bit 4 we wszystkich generatorach i odpowiednio manipulując wartościami bitów głośności można uzyskać teoretycznie do 64 położeń membrany gośnika, co odpowiada 6-bitowej rozdzielczości samplowania. | ||||||||||||||||||
$D201 (R) | POT1 | Rezystancja wiosełka nr 1. | ||||||||||||||||||
$D202 (W) | AUDF2 |
Rejestr częstotliwości generatora dźwięku nr 2. Może być połączony w parę (generator szesnastobitowy) z rejestrem AUDF1. | ||||||||||||||||||
$D202 (R) | POT2 | Rezystancja wiosełka nr 2. | ||||||||||||||||||
$D203 (W) | AUDC2 |
Rejestr kontroli generatora dźwięku nr 2. Ma dla generatora nr 2 takie samo znaczenie, jak rejestr AUDC1 dla generatora nr 1. | ||||||||||||||||||
$D203 (R) | POT3 | Rezystancja wiosełka nr 3. | ||||||||||||||||||
$D204 (W) | AUDF3 |
Rejestr częstotliwości generatora dźwięku nr 3. W odróżnieniu od pozostałych AUDF3 nie może być używany jako licznik generujący przerwania IRQ. | ||||||||||||||||||
$D204 (R) | POT4 | Rezystancja wiosełka nr 4 (tylko w serii 400/800). | ||||||||||||||||||
$D205 (W) | AUDC3 |
Rejestr kontroli generatora dźwięku nr 3. Ma dla generatora nr 3 takie samo znaczenie, jak rejestr AUDC1 dla generatora nr 1. | ||||||||||||||||||
$D205 (R) | POT5 | Rezystancja wiosełka nr 5 (tylko w serii 400/800). | ||||||||||||||||||
$D206 (W) | AUDF4 |
Rejestr częstotliwości generatora dźwięku nr 4. Może być połączony w parę (generator szesnastobitowy) z rejestrem AUDF3. Para generatorów 3 i 4 używana jest przez system operacyjny do zdefiniowania szybkości transmisji szeregowej SIO. | ||||||||||||||||||
$D206 (R) | POT6 | Rezystancja wiosełka nr 6 (tylko w serii 400/800). | ||||||||||||||||||
$D207 (W) | AUDC4 |
Rejestr kontroli generatora dźwięku nr 4. Ma dla generatora nr 4 takie samo znaczenie, jak rejestr AUDC1 dla generatora nr 1. | ||||||||||||||||||
$D207 (R) | POT7 | Rezystancja wiosełka nr 7 (tylko w serii 400/800). | ||||||||||||||||||
$D208 (W) | AUDCTL |
Rejestr kontroli dźwięku (Audio Control register). Znaczenie bitów:
Główna częstotliwość 1,773447 MHz obowiązuje w wersji PAL, w wersji zaś NTSC to jest 1,7897725 MHz. Odpowiednio 1/114 częstotliwości głównej to tzw. "15 kHz", czyli 15556,55 Hz w wersji PAL oraz 15699,76 Hz w wersji NTSC, a 1/28 częstotliwości głównej to tzw. "64 kHz", czyli 63337,39 Hz w wersji PAL oraz 63920,4 Hz w wersji NTSC. | ||||||||||||||||||
$D208 (R) | POTST (aka ALLPOT) | Rejestr stanu konwersji analogowo-cyfrowej dla ośmiu wiosełek (czyli rejestrów POT0-7). Znaczenie bitów:
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:
Zawartość tego rejestru zmieniają tylko te klawisze, których naciśnięcie powoduje wygenerowanie przerwania IRQ klawiatury. Przerwania tego nie generują następujące klawisze: START, SELECT, OPTION, RESET, BREAK, SHIFT oraz CONTROL (generuje je natomiast klawisz HELP oraz klawisze funkcyjne F1-F4). Klawisze BREAK i RESET wywołują oddzielne przerwania: BREAK przerwanie IRQ, RESET przerwanie NMI w serii 400/800, albo RESET w serii XL/XE. Klawisz SHIFT nie wywołuje przerwania klawiatury, ale jego stan można odczytać w 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. Klawisze konsoli patrz CONSOL ($D01F). | ||||||||||||||||||
$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-7) 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):
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):
| ||||||||||||||||||
$D20F (W) | SKCTL |
Rejestr kontroli transmisji szeregowej i klawiatury (Serial and Keyboard Control register). Znaczenie bitów:
W trybie dwutonowym częstotliwość ustawiona w AUDF1 $D200 pełni funkcję logicznej jedynki, natomiast ta z AUDF2 - logicznego zera. AUDF2 musi być ustawiony na niższy ton niż AUDF1. System operacyjny wybiera tu częstotliwości 5278 Hz i 3958,56 Hz (w systemie PAL; odpowiednio są to wartości 5 i 7 dla rejestrów AUDF1 i 2). Transmisja dwutonowa jest używana podczas zapisu na magnetofon, poza tym jest normalnie wyłączona, a dane transmitowane są jako poziomy logiczne (+4 V = prawda, 0 V = fałsz). | ||||||||||||||||||
$D20F (R) | SKSTAT | Rejestr statusu transmisji szeregowej i klawiatury (Serial and Keyboard Status register). Znaczenie bitów:
Wymieniony powyżej "bufor wejściowy klawiatury" to rejestr KBCODE $D209. Bit 5 SKSTAT ustawiany jest na zero, kiedy w KBCODE pojawi się nowa wartość zanim poprzednia została odczytana przez procesor. |
Zobacz też:
Ten artykuł to tylko zalążek. Możesz pomóc rozwojowi Atariki poprzez rozszerzenie go o więcej informacji.