<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl">
	<id>https://mirror.atariki.pl/w/index.php?action=history&amp;feed=atom&amp;title=Rejestry_POKEY-a</id>
	<title>Rejestry POKEY-a - Historia wersji</title>
	<link rel="self" type="application/atom+xml" href="https://mirror.atariki.pl/w/index.php?action=history&amp;feed=atom&amp;title=Rejestry_POKEY-a"/>
	<link rel="alternate" type="text/html" href="https://mirror.atariki.pl/w/index.php?title=Rejestry_POKEY-a&amp;action=history"/>
	<updated>2026-10-03T06:48:02Z</updated>
	<subtitle>Historia wersji tej strony wiki</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://mirror.atariki.pl/w/index.php?title=Rejestry_POKEY-a&amp;diff=3437&amp;oldid=prev</id>
		<title>imported&gt;Atariki recovery: Reconstructed from archived HTML; see provenance manifest</title>
		<link rel="alternate" type="text/html" href="https://mirror.atariki.pl/w/index.php?title=Rejestry_POKEY-a&amp;diff=3437&amp;oldid=prev"/>
		<updated>2026-10-01T08:51:48Z</updated>

		<summary type="html">&lt;p&gt;Reconstructed from archived HTML; see provenance manifest&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nowa strona&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Układ [[POKEY]] ma 29 rejestrów, które zajmują 16 adresów od $D200 do $D20F (w komputerach [[Atari 8-bit]]) lub od $EB00 do $EB0F (w konsoli [[5200]])[http://www.atarimuseum.com/videogames/consoles/5200/conv_to_5200.html [1]]. W komputerach z zamontowanym [[Stereo|stereo]] drugi POKEY zajmuje następnych 16 adresów, czyli $D210-$D21F.&lt;br /&gt;
&lt;br /&gt;
== Wiadomości wstępne ==&lt;br /&gt;
&lt;br /&gt;
Główny zegar POKEY-a ma częstotliwość 1773447 Hz w systemie PAL oraz 1789790 lub 1789772,5 Hz w systemie [http://pl.wikipedia.org/wiki/NTSC NTSC] (zob. [[NTSC vs PAL]]).&lt;br /&gt;
&lt;br /&gt;
[[POKEY]] jest układem wielofunkcyjnym, rejestry można podzielić na sześć grup w zależności od zastosowania:&lt;br /&gt;
&lt;br /&gt;
* Rejestry dźwięku: AUDF1-4, AUDC1-4, AUDCTL, STIMER, SKCTL.&lt;br /&gt;
* Rejestry klawiatury: KBCODE, SKCTL, SKSTAT.&lt;br /&gt;
* Rejestry [[Atari Paddles|wiosełek]]: POT0-7, POTST, POTGO.&lt;br /&gt;
* Rejestry transmisji szeregowej: AUDF1-4, AUDCTL, SKSTRES, SKCTL, SKSTAT, SERIN, SEROUT.&lt;br /&gt;
* Rejestry [[IRQ]]: IRQEN, IRQST, AUDF1-4, AUDCTL, STIMER.&lt;br /&gt;
* Inne rejestry: RANDOM.&lt;br /&gt;
&lt;br /&gt;
== Lista rejestrów ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Adres&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Etykieta&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Opis&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| $D200 (W)&lt;br /&gt;
| AUDF1&lt;br /&gt;
| Rejestr częstotliwości generatora dźwięku nr 1. Jest to w istocie dzielnik częstotliwości zdefiniowanej w rejestrze [[Rejestry POKEY-a#AUDCTL|AUDCTL $D208]]. Wartość częstotliwości wyjściowej uzyskujemy ze wzorów:&lt;br /&gt;
&lt;br /&gt;
* dla zegara wejściowego o częstotliwości głównej (1,773447 MHz w systemie PAL): &amp;#039;&amp;#039;&amp;#039;F = CLOCK/(2*(N+M))&amp;#039;&amp;#039;&amp;#039;, gdzie &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; to wartość rejestru AUDF, a &amp;#039;&amp;#039;&amp;#039;M&amp;#039;&amp;#039;&amp;#039; to wartość modyfikująca zależna od rozmiaru rejestru generatora. Dla pojedynczego generatora ośmiobitowego &amp;#039;&amp;#039;&amp;#039;M = 4&amp;#039;&amp;#039;&amp;#039;, natomiast dla generatorów połączonych w parę &amp;#039;&amp;#039;&amp;#039;M = 7&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
* dla zegara wejściowego o częstotliwości 1/28 lub 1/114 częstotliwości głównej: &amp;#039;&amp;#039;&amp;#039;F = CLOCK/(2*(N+1))&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
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ść &amp;quot;cyknięć&amp;quot; wybranego zegara, jakie mają upłynąć zanim wygenerowane zostanie przerwanie.&lt;br /&gt;
|-&lt;br /&gt;
| $D200 (R)&lt;br /&gt;
| POT0&lt;br /&gt;
| Rezystancja wiosełka nr 0.&lt;br /&gt;
&lt;br /&gt;
Pomiar rezystancji możliwy jest w jednym z dwóch trybów:&lt;br /&gt;
&lt;br /&gt;
* zwykłym: pomiar rezystancji trwa do 229 linii skaningowych (jest to ok. 15 ms)&lt;br /&gt;
* szybkim: pomiar rezystancji trwa do 229 cykli maszynowych, czyli do ok. 2 linii skaningowych&lt;br /&gt;
&lt;br /&gt;
Tryb wybieramy w rejestrze [[Rejestry POKEY-a#SKCTL|SKCTL]]: ustawienie bitu 2 na 0 wybiera tryb zwykły, a ustawienie tegoż bitu na 1 - tryb szybki. Wybór trybu następuje dla wszystkich ośmiu rejestrów POTx.&lt;br /&gt;
&lt;br /&gt;
Uruchomienie konwersji następuje przez zapis rejestru [[Rejestry POKEY-a#POTGO|POTGO]]. Zakończenie konwersji sygnalizowane jest stanami odpowiednich bitów rejestru [[Rejestry POKEY-a#POTST|ALLPOT]], ale jego użycie nie jest w zasadzie konieczne - wystarczy odczekać 229 cykli zegara 1,77 MHz lub 229 linii skaningowych (zależnie od wybranego trybu pomiaru). Można założyć, że po upływie tego czasu rejestry POT0-7 będą zawierać sensowne wyniki. Dokonanie ponownego pomiaru wymaga ponownego zapisu POTGO.&lt;br /&gt;
&lt;br /&gt;
Tryb zwykły jest normalnie wykorzystywany przez system operacyjny: odczyt rejestrów POT0-7, przepisanie ich stanów do cieni PADDL0-7 ($0270-$0277) i ponowne uruchomienie konwersji następuje w II fazie procedury [[SYSVBL]].&lt;br /&gt;
&lt;br /&gt;
Dokumentacja Atari twierdzi, że w rejestrach POT0-7 trzeba oczekiwać wartości z zakresu od 0 do 228 ($00-$E4). Tak faktycznie jest w trybie zwykłym. Ale w trybie szybkim, kiedy do gniazd wiosełek nic nie zostało podłączone, pomiar oporności da wynik 229 ($E5). W tym trybie można też oczekiwać, że wartości pojawiające się w rejestrach będą liczbami parzystymi - jedynym wyjątkiem jest tu wspomniana wartość $E5.&lt;br /&gt;
&lt;br /&gt;
Pomiar odbywa się na zasadzie ustalenia czasu ładowania wewnętrznej pojemności układu prądem płynącym przez rezystancję wiosełka (im wyższa rezystancja, tym dłuższy czas ładowania - brak wiosełka podłączonego do portu jest równoważny nieskończonej rezystancji). Rejestr POTx pełni rolę licznika taktów zegara 1,77 MHz w trybie szybkim lub tegoż zegara podzielonego przez 114 w trybie zwykłym (co odpowiada długości linii skaningowej). Wartości odczytywane z rejestru POTx w trakcie trwania pomiaru są kolejnymi wskazaniami licznika (zliczanie odbywa się od wartości 0 do 228). Po zakończeniu ładowania układu lub po odliczeniu 229 taktów licznik jest zatrzymywany i jego wartość nie zmienia się aż do chwili ponownego uruchomienia pomiaru przez zapis do rejestru POTGO.&lt;br /&gt;
&lt;br /&gt;
Odczyt rejestrów na pewno da sensowne wartości po zakończeniu konwersji (czyli po upływie jej maksymalnego czasu lub po zasygnalizowaniu zakończenia konwersji w rejestrze ALLPOT). Natomiast odczytywanie rejestrów POT0-7 podczas trwania pomiaru oporności nie musi, niestety, dać oczekiwanego wyniku, tj. monotonicznie rosnącego ciągu liczb, zwłaszcza w trybie szybkim.&lt;br /&gt;
|-&lt;br /&gt;
| $D201 (W)&lt;br /&gt;
| AUDC1&lt;br /&gt;
| 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:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Bity 7,6,5&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Znaczenie&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| 000&lt;br /&gt;
| Rejestr 5-bitowy i 17-bitowy/9-bitowy&lt;br /&gt;
|-&lt;br /&gt;
| 001&lt;br /&gt;
| Rejestr 5-bitowy&lt;br /&gt;
|-&lt;br /&gt;
| 010&lt;br /&gt;
| Rejestr 5-bitowy i 4-bitowy&lt;br /&gt;
|-&lt;br /&gt;
| 011&lt;br /&gt;
| Rejestr 5-bitowy&lt;br /&gt;
|-&lt;br /&gt;
| 100&lt;br /&gt;
| Rejestr 17-bitowy/9-bitowy&lt;br /&gt;
|-&lt;br /&gt;
| 101&lt;br /&gt;
| Bez rejestru przesuwającego (czysty ton)&lt;br /&gt;
|-&lt;br /&gt;
| 110&lt;br /&gt;
| Rejestr 4-bitowy&lt;br /&gt;
|-&lt;br /&gt;
| 111&lt;br /&gt;
| Bez rejestru przesuwającego (czysty ton)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
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ść).&lt;br /&gt;
&lt;br /&gt;
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 głośnika. Pozwala to na odtwarzanie 4-bitowych sampli.&lt;br /&gt;
&lt;br /&gt;
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 61 położeń membrany głośnika, co odpowiada niemal 6-bitowej rozdzielczości samplowania. Podobnie przy użyciu trzech generatorów uzyskuje się 46 poziomów głośności, a przy użyciu dwóch - 31.&lt;br /&gt;
|-&lt;br /&gt;
| $D201 (R)&lt;br /&gt;
| POT1&lt;br /&gt;
| Rezystancja wiosełka nr 1.&lt;br /&gt;
|-&lt;br /&gt;
| $D202 (W)&lt;br /&gt;
| AUDF2&lt;br /&gt;
| Rejestr częstotliwości generatora dźwięku nr 2. Może być połączony w parę (generator szesnastobitowy) z rejestrem AUDF1.&lt;br /&gt;
|-&lt;br /&gt;
| $D202 (R)&lt;br /&gt;
| POT2&lt;br /&gt;
| Rezystancja wiosełka nr 2.&lt;br /&gt;
|-&lt;br /&gt;
| $D203 (W)&lt;br /&gt;
| AUDC2&lt;br /&gt;
| Rejestr kontroli generatora dźwięku nr 2. Ma dla generatora nr 2 takie samo znaczenie, jak rejestr [[Rejestry POKEY-a#AUDC1|AUDC1 $D201]] dla generatora nr 1. Gdy generatory 1 i 2 połączone są w parę, rejestr AUDC2 odpowiada za regulację zniekształceń i głośności w obydwu, a rejestr AUDC1 jest wolny i może zostać użyty np. jako niezależny kanał sampli.&lt;br /&gt;
|-&lt;br /&gt;
| $D203 (R)&lt;br /&gt;
| POT3&lt;br /&gt;
| Rezystancja wiosełka nr 3.&lt;br /&gt;
|-&lt;br /&gt;
| $D204 (W)&lt;br /&gt;
| AUDF3&lt;br /&gt;
| 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]].&lt;br /&gt;
|-&lt;br /&gt;
| $D204 (R)&lt;br /&gt;
| POT4&lt;br /&gt;
| Rezystancja wiosełka nr 4. Gniazda dla wiosełek 4-7 istnieją tylko w serii 400/800, w XL/XE odpowiednie nóżki układu POKEY nie są do niczego podłączone.&lt;br /&gt;
|-&lt;br /&gt;
| $D205 (W)&lt;br /&gt;
| AUDC3&lt;br /&gt;
| Rejestr kontroli generatora dźwięku nr 3. Ma dla generatora nr 3 takie samo znaczenie, jak rejestr [[Rejestry POKEY-a#AUDC1|AUDC1 $D201]] dla generatora nr 1.&lt;br /&gt;
|-&lt;br /&gt;
| $D205 (R)&lt;br /&gt;
| POT5&lt;br /&gt;
| Rezystancja wiosełka nr 5 (tylko w serii 400/800).&lt;br /&gt;
|-&lt;br /&gt;
| $D206 (W)&lt;br /&gt;
| AUDF4&lt;br /&gt;
| 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]]. Tabela niektórych wartości dla połączonych liczników 3/4 i odpowiadającej tym wartościom szybkości transmisji jest [[Pokey#Szybkość transmisji|tutaj]].&lt;br /&gt;
|-&lt;br /&gt;
| $D206 (R)&lt;br /&gt;
| POT6&lt;br /&gt;
| Rezystancja wiosełka nr 6 (tylko w serii 400/800).&lt;br /&gt;
|-&lt;br /&gt;
| $D207 (W)&lt;br /&gt;
| AUDC4&lt;br /&gt;
| Rejestr kontroli generatora dźwięku nr 4. Ma dla generatora nr 4 takie samo znaczenie, jak rejestr [[Rejestry POKEY-a#AUDC1|AUDC1 $d201]] dla generatora nr 1. Gdy generatory 3 i 4 połączone są w parę, rejestr AUDC4 odpowiada za regulację zniekształceń i głośności w obydwu, a rejestr AUDC3 jest wolny i może zostać użyty np. jako niezależny kanał sampli.&lt;br /&gt;
|-&lt;br /&gt;
| $D207 (R)&lt;br /&gt;
| POT7&lt;br /&gt;
| Rezystancja wiosełka nr 7 (tylko w serii 400/800).&lt;br /&gt;
|-&lt;br /&gt;
| $D208 (W)&lt;br /&gt;
| AUDCTL&lt;br /&gt;
| Rejestr kontroli dźwięku (Audio Control register). Znaczenie bitów:&lt;br /&gt;
&lt;br /&gt;
* bit 7 - kontrola rejestru przesuwającego (0 = 17 bitów, 1 = 9 bitów)&lt;br /&gt;
* bit 6 - zegar bazowy dla generatora 1 (0 - wg bitu 0, 1 = częstotliwość główna)&lt;br /&gt;
* bit 5 - zegar bazowy dla generatora 3 (0 - wg bitu 0, 1 = częstotliwość główna)&lt;br /&gt;
* bit 4 - łączenie generatorów 1 i 2 w parę (1 = połączone)&lt;br /&gt;
* bit 3 - łączenie generatorów 3 i 4 w parę (1 = połączone)&lt;br /&gt;
* bit 2 - filtr górnoprzepustowy w generatorze 1 sterowany przez generator 3 (1 = włączony)&lt;br /&gt;
* bit 1 - filtr górnoprzepustowy w generatorze 2 sterowany przez generator 4 (1 = włączony)&lt;br /&gt;
* bit 0 - wybór częstotliwości bazowej dla wszystkich generatorów (0 - 1/28 cz. głównej, 1 - 1/114 cz. głównej)&lt;br /&gt;
&lt;br /&gt;
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. &amp;quot;15 kHz&amp;quot;, czyli 15556,55 Hz w wersji PAL oraz 15699,76 Hz w wersji NTSC, a 1/28 częstotliwości głównej to tzw. &amp;quot;64 kHz&amp;quot;, czyli 63337,39 Hz w wersji PAL oraz 63920,4 Hz w wersji NTSC.&lt;br /&gt;
|-&lt;br /&gt;
| $D208 (R)&lt;br /&gt;
| ALLPOT lub POTST&lt;br /&gt;
| Rejestr stanu konwersji analogowo-cyfrowej dla ośmiu wiosełek (czyli rejestrów [[Rejestry POKEY-a#POT0|POT0-7]]). Znaczenie bitów:&lt;br /&gt;
&lt;br /&gt;
* bit 7 - POT7&lt;br /&gt;
* bit 6 - POT6&lt;br /&gt;
* bit 5 - POT5&lt;br /&gt;
* bit 4 - POT4&lt;br /&gt;
* bit 3 - POT3&lt;br /&gt;
* bit 2 - POT2&lt;br /&gt;
* bit 1 - POT1&lt;br /&gt;
* bit 0 - POT0&lt;br /&gt;
&lt;br /&gt;
Jeśli bit jest skasowany, to znaczy, że odpowiedni rejestr POT zawiera właściwy wynik pomiaru.&lt;br /&gt;
&lt;br /&gt;
Dokumentacja Atari zaleca odczekanie 4 cykli pomiędzy zapisem POTGO a pierwszym odczytem ALLPOT w trybie szybkiej konwersji A/C.&lt;br /&gt;
|-&lt;br /&gt;
| $D209 (W)&lt;br /&gt;
| STIMER&lt;br /&gt;
| Zapis tego rejestru powoduje umieszczenie wartości rejestrów AUDF1-4 w odpowiednich licznikach oraz zapoczątkowanie zliczania.&lt;br /&gt;
&lt;br /&gt;
Dodatkowo zeruje przerzutniki odpowiedzialne za generowanie dźwięku. Fale generowane przez kanały 1 i 2 startują od poziomu wysokiego, natomiast 3 i 4 od niskiego. Powoduje to, że fale o tej samej częstotliwości i głośności ustawione np. w generatorach 1 i 3 po zapisie STIMER wygaszą się na wyjściu audio (dokładnie na wyjściu audio będzie utrzymywany poziom głośności ustawiony w AUDC1/3).&lt;br /&gt;
|-&lt;br /&gt;
| $D209 (R)&lt;br /&gt;
| KBCODE&lt;br /&gt;
| Sześć młodszych bitów tego rejestru to [[Kody klawiszy|kod klawiaturowy]] ostatnio wciśniętego klawisza. Znaczenie dwóch pozostałych bitów jest następujące:&lt;br /&gt;
&lt;br /&gt;
* bit 7 = 1, klawisz naciśnięto razem z CONTROL&lt;br /&gt;
* bit 6 = 1, klawisz naciśnięto razem z SHIFT&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
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 [[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.&lt;br /&gt;
&lt;br /&gt;
Rejestr cień KBCODES znajduje się w $02FC (764).&lt;br /&gt;
&lt;br /&gt;
Klawisze konsoli patrz [[Rejestry GTIA#CONSOL|CONSOL ($D01F)]].&lt;br /&gt;
|-&lt;br /&gt;
| $D20A (W)&lt;br /&gt;
| SKRES lub SKSTRES&lt;br /&gt;
| Zapis tego rejestru powoduje zresetowanie bitów 5-7 rejestru [[Rejestry POKEY-a#SKSTAT|SKSTAT ($D20F)]].&lt;br /&gt;
|-&lt;br /&gt;
| $D20A (R)&lt;br /&gt;
| RANDOM&lt;br /&gt;
| Liczba pseudolosowa z zakresu od 0 do 255.&lt;br /&gt;
&lt;br /&gt;
Rejestr zawiera 8 najstarszych bitów 9- lub 17-bitowego rejestru [https://pl.wikipedia.org/wiki/LFSR LFSR] o wielomianie odpowiednio 1+x&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;+x&amp;lt;sup&amp;gt;9&amp;lt;/sup&amp;gt; lub 1+x&amp;lt;sup&amp;gt;12&amp;lt;/sup&amp;gt;+x&amp;lt;sup&amp;gt;17&amp;lt;/sup&amp;gt; zależnie od stanu bitu 7 AUDCTL. Zawartość rejestru przesuwana jest w prawo co cykl zegara 1,77 MHz. Przy odczytywaniu serii wartości pseudolosowych dobrze jest więc zadbać, żeby pomiędzy kolejnymi odczytami upłynęło co najmniej 8 cykli pracy zegara 1,77 MHz; w przeciwnym wypadku kolejno odczytane wartości mogą okazać się między sobą zauważalnie skorelowane. Ten efekt da się zauważyć zwłaszcza na akceleratorach.&lt;br /&gt;
&lt;br /&gt;
Podczas resetowania układu (za pomocą bitów 0 i 1 SKCTL) do rejestru LFSR wsuwane są jedynki.&lt;br /&gt;
|-&lt;br /&gt;
| $D20B (W)&lt;br /&gt;
| POTGO&lt;br /&gt;
| Zapis tego rejestru powoduje wyzerowanie rejestrów położenia potencjometrów ([[Rejestry POKEY-a#POT0|POT0-7]]) i rozpoczęcie pomiaru oporności od nowa. Zerowanie rejestrów POT0-7 trwa 2 cykle zegara 1,77 MHz.&lt;br /&gt;
&lt;br /&gt;
Dokumentacja Atari zaleca odczytanie wszystkich rejestrów POT0-7 przed zapisem do POTGO (prawdopodobnie dlatego, że wartość pomiaru nie jest buforowana i w chwili rozpoczęcia pomiaru jest bezpowrotnie tracona).&lt;br /&gt;
|-&lt;br /&gt;
| $D20C&lt;br /&gt;
| -&lt;br /&gt;
| Rejestr nieużywany przez POKEY.&lt;br /&gt;
&lt;br /&gt;
[[SIO FIFO]] wykorzystuje ten rejestr do konfiguracji (tylko zapis):&lt;br /&gt;
&lt;br /&gt;
* bit 7 - 0: zresetowanie FIFO, 1: konfiguracja,&lt;br /&gt;
* bit 6 - 0: w połączeniu z ustawionym bitem 7 określa graniczną wartość (bity 0-5) w AUDF3 dla której FIFO jest &amp;quot;przezroczyste&amp;quot;, 1: wartość graniczna (bity 0-5) jest ustawiana jako domyślna,&lt;br /&gt;
* bity 0-5 - wartość graniczna&lt;br /&gt;
|-&lt;br /&gt;
| $D20D (W)&lt;br /&gt;
| SEROUT&lt;br /&gt;
| Rejestr wyjściowy dla transmisji szeregowej. Wpisanie tu bajtu powoduje wyemitowanie go na złącze szeregowe.&lt;br /&gt;
|-&lt;br /&gt;
| $D20D (R)&lt;br /&gt;
| SERIN&lt;br /&gt;
| Rejestr wejściowy dla transmisji szeregowej. Wystąpienie przerwania odczytu z łącza szeregowego sygnalizuje, że w SERIN znajduje się bajt do odebrania.&lt;br /&gt;
|-&lt;br /&gt;
| $D20E (W)&lt;br /&gt;
| IRQEN&lt;br /&gt;
| Rejestr zezwoleń na wygenerowanie przerwań [[IRQ]]. Ma cień POKMSK/IRQENS pod adresem $0010. Przypisanie bitów jest w obydwu identyczne (0 - przerwanie zabronione):&lt;br /&gt;
&lt;br /&gt;
* bit 7 - przerwanie klawisza BREAK&lt;br /&gt;
* bit 6 - przerwanie klawiatury&lt;br /&gt;
* bit 5 - odczyt z łącza szeregowego&lt;br /&gt;
* bit 4 - zapis na łącze szeregowe&lt;br /&gt;
* bit 3 - koniec transmisji szeregowej&lt;br /&gt;
* bit 2 - licznik nr 4&lt;br /&gt;
* bit 1 - licznik nr 2&lt;br /&gt;
* bit 0 - licznik nr 1&lt;br /&gt;
&lt;br /&gt;
Jeśli używane są procedury systemu operacyjnego, przy blokowaniu przerwań należy korzystać z rejestru-cienia. Np. zablokowanie klawisza BREAK uzyskuje się przez:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    lda irqens&lt;br /&gt;
    and #$7f&lt;br /&gt;
    sta irqens&lt;br /&gt;
    sta irqen&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| $D20E (R)&lt;br /&gt;
| IRQST&lt;br /&gt;
| Rejestr statusu przerwań [[IRQ]]. Przypisanie bitów (0 - przerwanie wystąpiło):&lt;br /&gt;
&lt;br /&gt;
* bit 7 - przerwanie klawisza BREAK&lt;br /&gt;
* bit 6 - przerwanie klawiatury&lt;br /&gt;
* bit 5 - odczyt z łącza szeregowego&lt;br /&gt;
* bit 4 - zapis na łącze szeregowe&lt;br /&gt;
* bit 3 - koniec transmisji szeregowej&lt;br /&gt;
* bit 2 - licznik nr 4&lt;br /&gt;
* bit 1 - licznik nr 2&lt;br /&gt;
* bit 0 - licznik nr 1&lt;br /&gt;
&lt;br /&gt;
POKEY generuje przerwanie przez uaktywnienie linii IRQ [[Procesor|procesora]]. Sygnał ten pozostaje aktywny aż do momentu zasygnalizowania układowi POKEY, że przerwanie zostało obsłużone. Potwierdzenie przyjęcia przerwania - i tym samym &amp;quot;zdjęcie&amp;quot; sygnału IRQ z nóżki procesora - uzyskuje się przez skasowanie bitu odpowiadającego temu przerwaniu w rejestrze [[Rejestry POKEY-a#IRQEN|IRQEN]], a następnie ustawieniu tego bitu z powrotem na jeden. Sekwencja rozkazów, która to robi, wygląda np. tak (przykład dla przerwania zegarowego licznika AUDF1):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   lda irqens&lt;br /&gt;
   and #$fe&lt;br /&gt;
   sta irqen&lt;br /&gt;
   lda irqens&lt;br /&gt;
   sta irqen&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
W większości wypadków nie ma potrzeby stosowania tego we własnych procedurach obsługi przerwań [[IRQ]], gdyż odnośną sekwencję rozkazów wykonuje główna procedura IRQ znajdująca się w pamięci [[ROM]] systemu operacyjnego.&lt;br /&gt;
&lt;br /&gt;
Rejestr BRKKEY/IRQSTAT pod adresem $0011 (mylnie identyfikowany jako cień IRQST) jest ustawiany przez procedury systemowe SIO, CIO oraz przerwanie klawisza BREAK (patrz [[Kody klawiszy]]).&lt;br /&gt;
|-&lt;br /&gt;
| $D20F (W)&lt;br /&gt;
| SKCTL&lt;br /&gt;
| Rejestr kontroli transmisji szeregowej i klawiatury (Serial and Keyboard Control register). Rejestr cień SKCTLS znajduje się pod adresem $0232. Znaczenie bitów:&lt;br /&gt;
&lt;br /&gt;
* bit 7 - gdy ustawiony, wymusza nadawanie sygnału SPACE (logiczne 0) na linię DATA OUT gniazda SIO&lt;br /&gt;
* bity 6-4 - źródło sygnału zegarowego dla transmisji szeregowej (bit 6 od lewej):&lt;br /&gt;
** 000 - zewnętrzne, wg linii CLOCK IN [[Gniazdo SIO|gniazda SIO]]&lt;br /&gt;
** 001 - odczyt wg [[Rejestry POKEY-a#AUDF4|AUDF4 $D206]], zapis wg CLOCK IN (default przy odczycie)&lt;br /&gt;
** 010 - odczyt i zapis wg AUDF4 (default przy zapisie)&lt;br /&gt;
** 011 - kombinacja zabroniona&lt;br /&gt;
** 100 - odczyt wg CLOCK IN, zapis wg AUDF4&lt;br /&gt;
** 101 - kombinacja zabroniona&lt;br /&gt;
** 110 - odczyt wg AUDF4, zapis wg [[Rejestry POKEY-a#AUDF2|AUDF2 $D202]] (niedostępne w trybie dwutonowym)&lt;br /&gt;
** 111 - jak wyżej, CLOCK IN i CLOCK OUT nieaktywne (niedostępne w trybie dwutonowym)&lt;br /&gt;
* bit 3 - transmisja dwutonowa (1 = włączona)&lt;br /&gt;
* bit 2 - częstotliwość konwersji analogowo-cyfrowej (0 - 20 ms, 1 - 128 us)&lt;br /&gt;
* bit 1 - wł./wył. skanowania (czyli odczyt) klawiatury (1 - włączone)&lt;br /&gt;
* bit 0 - wł./wył. funkcji niwelowania drgań styków klawiatury (ang. [http://en.wikipedia.org/wiki/Debounce &amp;#039;&amp;#039;debounce&amp;#039;&amp;#039;]) (1 - włączone). ustawienie wartości 0 tu i w bicie 1 (np. wpisanie $00 do SKCTL) resetuje POKEY&lt;br /&gt;
&lt;br /&gt;
W trybie dwutonowym częstotliwość ustawiona w [[Rejestry POKEY-a#AUDF1|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).&lt;br /&gt;
|-&lt;br /&gt;
| $D20F (R)&lt;br /&gt;
| SKSTAT&lt;br /&gt;
| Rejestr statusu transmisji szeregowej i klawiatury (Serial and Keyboard Status register). Znaczenie bitów:&lt;br /&gt;
&lt;br /&gt;
* bit 7 - framing error - odebrano 0 zamiast 1 jako bit stopu (0 - wystąpił)&lt;br /&gt;
* bit 6 - przepełnienie bufora wejściowego klawiatury - w momencie zgłoszenia przerwania nie obsłużono jeszcze poprzedniego (0 - wystąpiło)&lt;br /&gt;
* bit 5 - serial overrun - w momencie zgłoszenia przerwania odczytu szeregowego nie obsłużono jeszcze poprzedniego (0 - wystąpił)&lt;br /&gt;
* bit 4 - kopia wejścia szeregowego&lt;br /&gt;
* bit 3 - klawisz SHIFT (0 - wciśnięty)&lt;br /&gt;
* bit 2 - dowolny klawisz oprócz SHIFT, CONTROL, BREAK, START, SELECT, OPTION, RESET (0 - wciśnięty)&lt;br /&gt;
* bit 1 - odczyt danych (0 - w toku)&lt;br /&gt;
* bit 0 - nieużywany, zawsze 1.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Programowanie Atari 8-bit]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Atariki recovery</name></author>
	</entry>
</feed>