POKEY
Z Wikipedii
Ten artykuł wymaga dopracowania zgodnie z zaleceniami edycyjnymi. Należy w nim poprawić: wymaga weryfikacji, poprawek językowych i wikizacji. Po naprawieniu wszystkich błędów można usunąć tę wiadomość. |
Pokey stworzony w latach 80. 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.
Spis treści |
[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 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. Kiedy dzielnik częstotliwości jest wyłączony, generowane są stałe dźwięki o sile głosu zapisanej w bitach 0-3.
5-7 – Rejestry przesuwające odpowiedzialne za szumy – distortion:
000 = rejestr 5-bitowy i 17-bitowy 001 = rejestr 5-bitowy 010 = rejestr 5-bitowy i 4-bitowy 011 = rejestr 5-bitowy – dubluje się, nie jest używany 100 = rejestr 17-bitowy 101 = bez rejestru przesuwającego – pure tones 110 = rejestr 4-bitowy 111 = bez rejestru przesuwającego – dubluje się, nie jest używany
Generacja losowych szumów odbywa się poprzez odczyt górnych 8 bitów rejestru przesuwającego 17-bit. 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
"1" oznacza włączony, chyba, że napisane jest inaczej:
Bit 0 (15KHz) – wybór taktowania dzielników częstotliwości "0" – 64KHz, "1" – 15KHz 1
Bit 1 (FI2+4) – filtr górnoprzepustowy dla kanału 2 taktowany częstotliwością kanału 4,
Bit 2 (FI1+3) – filtr górnoprzepustowy dla kanału 1 taktowany częstotliwością kanału 3,
Bit 3 (CH4+3) – połączenie dzielników 4+3 dla uzyskania dokładności 16-bitowej,
Bit 4 (CH2+1) – połączenie dzielników 2+1 dla uzyskania dokładności 16-bitowej,
Bit 5 (1,79CH3) – taktowanie kanału 3 częstotliwością "0" – 1,77 MHz PAL, "1" – 1,79 MHz NTSC
Bit 6 (1,79CH1) – taktowanie kanału 1 częstotliwością "0" – 1,77 MHz PAL, "1" – 1,79 MHz NTSC
Bit 7 (POLY9) – 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 | Zapis | Odczyt | ||
---|---|---|---|---|
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 linii 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
- Raster Music Tracker – Windowsowy program do robienia muzyki POKEY
- ASMA — Atari SAP Music Archive – Archiwum muzyki z małego atari
- ASAP player – Archiwum muzyki sap online przez przeglądarkę
- ASAP – Pluginy do Foobar, GSP, MOC, Winamp, XMMS
- Adept Zap's TMC plug-in dla Winamp i XMMS