POKEY
Z Wikipedii
|
Uwaga: artykuł nie został ukończony i prawdopodobnie zawiera wiele niedomówień a i niewykluczone, że błędów.
Pokey stworzony w latach 80-siątych przez firmę Atari Inc. to układ wejścia, wyjścia montowany w całej rodzinie 8-bitowych atari i różnych konsolach. Układ pokey oznaczony został CO12294, ma 40 końcówek i jest odpowiedzialny za generowanie dźwięku, obsługę klawiatury, port szeregowy, obsługę potencjometrów, generację liczb pesudolosowych. Nazwa POKEY pochodzi od słów POtentiometer and KEYboard chip - potencjometr i klawiatura.
[edytuj] Generowanie dźwięku za pomocą pokey-a
Pokey posiada cztery kanały audio, z których każdy posiada własną regulację częstotliwości, szumu i siły głosu.
Każdy kanał ma 8-bitowy dzielnik częstotliwości i 8-bitowy rejestr do wyboru szumu i głośności. AUDIOF1 do AUDIOF4 – rejestry częstotliwości (AUDio Frequency) AUDC1 do AUDC4 – rejestr głośności i szumów (AUDio Control) AUDCTL – wspólny rejestr do sterowania generatorami (AUDio ConTroL)
[edytuj] Opis rejestrów AUDIOF1-4
Tutaj ktoś kiedyś doda opis rejestrów częstotliwości AUDIOF układu POKEy
[edytuj] Opis rejestrów AUDIOC1-4
Bit 0-3 - sterowanie siłą dźwięku od 0 do F 4 - kontrola dzielnika częstotliwości 1 włączony, 0 wyłączony 5-7 – rejestry przesuwające odpowiedzialne za szumy
000 = rejestr 5-bitowy i 17-bitowy 001 = rejestr 5-bitowy 010 = rejestr 5-bitowy i 4-bitowy 011 = rejestr 5-bitowy 100 = rejestr 17-bitowy 101 = bez rejestru przesuwającego 110 = rejestr 4-bitowy 111 = bez rejestru przesuwającego
Generacja losowych szumów odbywa się za pomocą trzech rejestrów przesuwających 17-bit, 5-bit, 4-bit. Przy czym rejestr 17-bitowy może zostać ustawiony do pracy jako 9-bitowy. Rejestry te taktowane są częstotliwością 1,79 MHz NTSC a 1,77 MHz PAL. Jednak ich wyjścia mogą być próbkowane niezależnie przez cztery kanały audio w tempie dzielnika częstotliwości danego kanału.
[edytuj] Opis rejestru AUDIOCTL
Bit 0 wybór taktowania dzielników częstotliwości, 0 - 64KHz, 1 - 15KHz 1 filtr górnoprzepustowy dla kanału 2 taktowany częstotliwością kanału 4, 1 włączony 2 filtr górnoprzepustowy dla kanału 1 taktowany częstotliwością kanału 3, 1 włączony 3 połączenie dzielników 4+3 dla uzyskania dokładności 16-bitowej, 1 włączony 4 połączenie dzielników 2+1 dla uzyskania dokładności 16-bitowej, 1 włączony 5 taktowanie kanału 3 częstotliwością 1,79 MHz NTSC a 1,77 MHz PAL, 0 jak w bit 0 6 taktowanie kanału 1 częstotliwością 1,79 MHz NTSC a 1,77 MHz PAL, 0 jak w bit 0 7 służy do przełączania rejestru przesuwającego, 0 - 17-bit, 1 – 9bit
Wszystkie cztery dzielniki częstotliwości (AUDIOF) mogą być równocześnie taktowane 64 KHz lub 15 KHz. Dzielniki częstotliwości 1 i 4 mogą być taktowane na przemian zegarem CPU (1,79 MHz NTSC a 1,77 MHz PAL). Dzielniki częstotliwości 2 i 4 mogą być taktowane na przemian wyjściem dzielników 1 i 3. Dzięki temu układ Pokey umożliwia łączenie ze sobą kanałów 8-bitowych tak by uzyskany dźwięk miał dokładność 16-bitową. Poniżej, możliwości konfiguracji kanałów: - cztery kanały 8-bitowe - dwa kanały 8-bitowe i jeden kanał 16-bitowy - dwa kanały 16-bitowe
[edytuj] Dodatkowe inforamacje
Każda operacja wejścia wyjścia powoduje zmianę wartości rejestrów sterujących generatorami, dlatego kiedy korzystamy z układu Pokey do generowania dźwięku to po każdej takiej operacji powinno się go od nowa inicjować. Należy wpisać wartość 3 do rejestru $D20F oraz 0 do rejestru $D08
[edytuj] Szeregowy port wejścia wyjścia
Składa się na niego:
- szeregowa linia wejścia
- szeregowa linia wyjścia
- szeregowa linia zegara wyjścia
- dwukierunkowa szeregowa linia danych zegara
- rejestry SKRES, SEROUT, SERIN, SKCTL, SKSTAT
[edytuj] Osiem przerwań IRQ
BREAK - Break (przerwanie klawisza BREAK)
K - Keyboard (przerwanie klawiatury)
SIR - if Serial Input Ready (przerwanie odczytu z szyny szeregowej)
ODN - if Output Data Needed (przerwanie zapisu na szynę szeregową)
XD - if eXmitend Data (przerwanie końca transmisji szeregowej)
T1 - Timer 1, przerwanie licznika nr 1
T2 - Timer 2, przerwanie licznika nr 2
T4 - Timer 4, przerwanie licznika nr 4
Przerwania mogą zostać włączone lub wyłączone programowo za pomocą rejestru IRQEN.
Rejestr IRQSTAT zawiera status przerwań.
[edytuj] Klawiatura
Sześcio klawiszowy rejestr aktualnie wciśniętych klawiszy (K0 K5), który przechowuje wartości od 00 do 3F. Znajdują się tutaj 2 wartości sterujące. Jedna z nich pełni rolę deszyfratora wszystkich 6 wartości. Druga wartość sterująca jest przeznaczona do dekodowania znaków specjalnych CTRL, SHIFT i BREAK.
[edytuj] Potencjometry
Osiem portów do mierzenia czasu narastania wejścia. Każde wejście ma 8-bitowy licznik, odmierzający czas przy wyświetlaniu każdej kolejnej linii telewizyjnej. Każde wejście ma także tranzystor zrzutu, który można włączyć lub włączyć programowo.
[edytuj] Ponadto pokey oferuje
- Trzy timery, które używają kanałów audio. Jeżeli timer zostanie użyty kanały audio zostaną zresetowane. - Generator liczb losowych.
[edytuj] Tabela rejestrów pokey-a
Rejestr | Odczyt | Zapis | ||
---|---|---|---|---|
Nazwa | Opis | Nazwa | Opis | |
$D200 | AUDF1 | częstotliwość kanału 1 | POT0 | potencjometr nr 0 |
$D201 | AUDC1 | generator kanału 1 | POT1 | potencjometr nr 1 |
$D202 | AUDF2 | częstotliwość kanału 2 | POT2 | potencjometr nr 2 |
$D203 | AUDC2 | generator kanału 2 | POT3 | potencjometr nr 3 |
$D204 | AUDF3 | częstotliwość kanału 3 | POT4 | potencjometr nr 4 |
$D205 | AUDC3 | generator kanału 3 | POT5 | potencjometr nr 5 |
$D206 | AUDF4 | częstotliwość kanału 4 | POT6 | potencjometr nr 6 |
$D207 | AUDC4 | generator kanału 4 | POT7 | potencjometr nr 7 |
$D208 | AUDCTL | kontrola nad kanałami audio | POTSTAT | odczyt wszsytkich 8 lini portu potencjometrów |
$D209 | STIMER | uruchomienie timera | KBCODE | kod ostatnio wciśniętego klawisza |
$D20A | SKRES | reset statusu portu szeregowego | RANDOM | wartość generatora liczb losowych |
$D20B | POTGO | rozpocznij sekwencje skanowania portu | ||
$D20C | ||||
$D20D | SEROUT | rejestr wyjściowy portu szeregowego | SERIN | rejestr wejściowy portu szeregowego |
$D20E | IRQEN | aktywacja przerwań IRQ | IRQSTAT | statusu przerwań IRQ |
$D20F | SKCTL | kontrola nad portem szeregowym | SKSTAT | status portu szeregowego |
[edytuj] Zobacz też
- MOS Technology SID - generator dźwięku w ośmiobitowych komputerach marki Commodore
[edytuj] Linki zewnętrzne
- ASMA — Atari SAP Music Archive - Archiwum muzyki z małego atari
- Adept Zap's TMC plug-in dla Winamp i XMMS