CIASNY

POKEY w Atari 130XE

POKEY , skrót od Pot Keyboard Integrated Circuit , to cyfrowy układ wejścia/wyjścia zaprojektowany przez Douga Neubauera z Atari, Inc. dla 8-bitowej rodziny komputerów domowych Atari. Po raz pierwszy został wydany z Atari 400 i Atari 800 w 1979 roku i jest zawarty we wszystkich późniejszych modelach oraz Atari 5200 . POKEY łączy w sobie funkcje do odczytu kontrolerów łopatkowych ( potencjometrów ) oraz klawiatur komputerowych a także generowanie dźwięku i źródło liczb pseudolosowych. Generuje cztery głosy charakterystycznego fali prostokątnej , w postaci czystych tonów lub zmodyfikowanych za pomocą ustawień zniekształceń. Neubauer opracował również 8-bitową aplikację Star Raiders na Atari , która wykorzystuje funkcje POKEY.

Chipy POKEY są używane do odtwarzania dźwięku w wielu arkadowych grach wideo z lat 80., w tym w Centipede , Missile Command , Asteroids Deluxe i Gauntlet . Niektóre systemy arkadowe Atari wykorzystują wersje wielordzeniowe z 2 lub 4 POKEYami w jednym pakiecie dla większej liczby kanałów audio. Konsola Atari 7800 pozwala kartridżowi z grą zawierać POKEY, zapewniając lepszy dźwięk niż układ audio systemu. Korzystają z tego tylko dwie licencjonowane gry: porty Ballblazer i Commando .

Układ LSI ma 40 styków i jest oznaczony jako C012294. USPTO . Na „Urządzenie do wytwarzania wielu efektów dźwiękowych”. Wymienieni wynalazcy to Steven T. Mayer i Ronald E. Milner.

Nieprodukowany już POKEY jest emulowany w oprogramowaniu przez 8-bitowe emulatory Arcade i Atari, a także za pośrednictwem formatu muzycznego Atari SAP i powiązanego odtwarzacza.

Cechy

Wersje

Według numeru części:

  • C012294 — używany we wszystkich 8-bitowych komputerach z rodziny Atari, w tym w Atari XEGS , a także w konsoli Atari 5200. Sufiks na chipie odnosi się do producenta:
    • C012294B-01 — AMI
    • C012294-03 — Sygnalizacja
    • C012294-19 — Krajowy Semiconductor
    • C012294-22 — OK
    • C012294-31 — IMP
  • 137430-001 — Numer części czasami używany w automatach arkadowych Atari dla POKEY.
  • 137324-1221 — czterordzeniowy POKEY używany w automatach do gier Atari Major Havoc , I, Robot , Firefox i Return of the Jedi .

Pinout

Pin-out Atari POKEY (C012294).
Nazwa pinezki Numery pinów Opis
A0 - A3 36, 35, 34, 33 Wprowadzanie adresu pamięci
ACLK 27 Wyjście zegara szeregowego
AUD 37 Wyjście audio
BCLK 26 Dwukierunkowe wejście/wyjście zegara
CS0 30 Wybór chipa
CS1 31 Wybór chipa
D0 - D7 38, 39, 40, 2, 3, 4, 5, 6 Wejście/wyjście magistrali danych
IRQ 29 Wyjście żądania przerwania
K0 - K5 23, 22, 21, 20, 19, 18 Wyjście skanowania klawiatury
KR1 - KR2 25, 16 Wejście stroboskopowe rzędu klawiatury
P0 - P7 14, 15, 12, 13, 10, 11, 8, 9 Skanowanie potencjometru (łopatki).
R/W 32 Sterowanie odczytem/zapisem we/wy
SID 24 Szeregowe dane wejściowe
DARŃ 28 Szeregowe dane wyjściowe
V CC 17 Zasilanie +5 woltów
V ss 1 Grunt
Ø2 7 Wejście zegara fazy 2

Rejestry

8-bitowe komputery Atari odwzorowują POKEY na stronę szesnastkową $ D2xx , a konsola Atari 5200 odwzorowuje ją na stronę szesnastkową $ E8xx .

POKEY zapewnia 29 rejestrów odczytu/zapisu kontrolujących dźwięk, wejście łopatkowe, wejście klawiatury, wejście/wyjście szeregowe i przerwania. Wiele adresów rejestrów POKEY ma podwójne cele, wykonując różne funkcje jako rejestry do odczytu i zapisu. Dlatego żaden kod nie powinien odczytywać rejestrów sprzętowych oczekujących na odzyskanie wcześniej zapisanej wartości.

Ten problem został rozwiązany dla niektórych rejestrów przez rejestry „Shadow” systemu operacyjnego zaimplementowane w zwykłej pamięci RAM, które odzwierciedlają wartości rejestrów sprzętowych. Podczas pionowego wygaszenia system operacyjny kopiuje rejestry Shadow w pamięci RAM dla rejestrów zapisu do odpowiedniego rejestru sprzętowego i odpowiednio aktualizuje wartości rejestrów Shadow dla rejestrów odczytu ze sprzętu. Dlatego zapisy do rejestrów sprzętowych, które mają odpowiadające im rejestry cienia, zostaną nadpisane wartością rejestrów cienia podczas następnego wygaszenia pionowego.

Odczyt wartości bezpośrednio ze sprzętu na nieznanym etapie cyklu wyświetlania może dawać niespójne wyniki (przykład: odczyt potencjometrów). Rejestry Shadow systemu operacyjnego dla rejestrów Read są zwykle preferowanym źródłem informacji.

Niektóre rejestry sprzętowe Write nie mają odpowiednich rejestrów Shadow. Mogą być bezpiecznie zapisywane przez aplikację bez nadpisywania wartości podczas pionowego odstępu. Jeśli aplikacja musi znać ostatnią wartość zapisaną w rejestrze, obowiązkiem aplikacji jest zaimplementowanie własnej wartości ukrytej, aby zapamiętać to, co zapisała.

Nazwa Opis Odczyt/zapis Adres szesnastkowy grudzień adr Imię cienia Adres szesnastkowy cienia Adres dec. cienia
AUDF1 Częstotliwość kanału audio 1 Pisać 200 $ 53760
POT0 Potencjometr (łopatka) 0 Czytać 200 $ 53760 PADDL0 0270 $ 624
AUDC1 Kontrola kanału audio 1 Pisać 201 dolarów 53761
POT1 Potencjometr (łopatkowy) 1 Czytać 201 dolarów 53761 PADDL1 0271 $ 625
AUDF2 Częstotliwość kanału audio 2 Pisać $202 53762
POT2 Potencjometr (łopatka) 2 Czytać $202 53762 PADDL2 0272 $ 626
AUDC2 Sterowanie kanałem 2 audio Pisać 203 $ 53763
POT3 Potencjometr (łopatka) 3 Czytać 203 $ 53763 PADDL3 0273 $ 627
AUDF3 Częstotliwość kanału audio 3 Pisać 204 $ 53764
POT4 Potencjometr (łopatkowy) 4 Czytać 204 $ 53764 PADDL4 0274 $ 628
AUDC3 Sterowanie kanałem 3 audio Pisać 205 dolarów 53765
POT5 Potencjometr (łopatkowy) 5 Czytać 205 dolarów 53765 PADDL5 0275 $ 629
AUDF4 Częstotliwość kanału audio 4 Pisać $206 53766
POT6 Potencjometr (łopatkowy) 6 Czytać $206 53766 PADDL6 0276 $ 630
AUDC4 Sterowanie kanałem audio 4 Pisać $207 53767
POT7 Potencjometr (łopatkowy) 7 Czytać $207 53767 PADDL7 0277 $ 631
AUDCTL Sterowanie dźwiękiem Pisać 208 dolarów 53768
ALLPOT Odczyt 8-liniowego stanu portu POT Czytać 208 dolarów 53768
STIMER Uruchom timery Pisać 209 dolarów 53769
KOD KB Kod klawiatury Czytać 209 dolarów 53769 CH $02FC 764
SKREST Zresetuj status szeregowy (SKSTAT) Pisać $20A 53770
LOSOWY Generator liczb losowych Czytać $20A 53770
POTGO Uruchom sekwencję skanowania POT Pisać $20B 53771
SEROUT Wyjście danych portu szeregowego Pisać $20D 53773
SERIN Wejście danych portu szeregowego Czytać $20D 53773
IRQEN Włącz żądanie przerwania Pisać $20E 53774 POKMSK 10 $ 16
IRQST Stan IRQ Czytać $20E 53774
SKCTL Kontrola portu szeregowego Pisać $20F 53775 SSKCTL 0232 $ 562
SKSTAT Stan portu szeregowego Czytać $20F 53775

W poniższych wykazach poszczególnych rejestrów obowiązuje następująca legenda:

Wartość bitowa Opis
0 Bit musi być równy 0
1 Bit musi wynosić 1
? Bit może mieć wartość 0 lub 1 i jest używany w określonym celu.
- Bit jest nieużywany lub nie należy oczekiwać, że będzie miał określoną wartość
etykieta Zapoznaj się z późniejszym wyjaśnieniem celu bitu.

Audio

Pokey zawiera programowalny generator dźwięku ; cztery kanały audio z oddzielną regulacją częstotliwości, hałasu i poziomu głosu.

Każdy kanał ma 8-bitowy dzielnik częstotliwości i 8-bitowy rejestr do wyboru szumu i głośności.

  • AUDF1 do AUDF4 – rejestr częstotliwości (AUDio Częstotliwość)
  • AUDC1 do AUDC4 – rejestr głośności i szumu (AUDio Control)
  • AUDCTL – ogólny rejestr, który steruje generatorami (AUDio ConTroL)

Dźwięk POKEYa jest charakterystyczny: kiedy cztery kanały są używane niezależnie, zauważalne jest rozstrojenie części 12-tonowej skali jednakowego temperamentu , z powodu braku dokładności tonu. Kanały można sparować w celu uzyskania większej dokładności; ponadto dostępnych jest wiele form zniekształceń , co pozwala uzyskać grubszy dźwięk. Zniekształcenie jest używane głównie w muzyce do partii basowych.

Jeden z silników dźwiękowych opracowanych dla rodziny 8-bitowych Atari nazywał się silnik AMP (Advanced Music Processor). Wykorzystał to muzyk Gary Gilbertson .

Częstotliwość kanału audio

Rejestry AUDF* sterują częstotliwością lub tonem odpowiednich kanałów dźwiękowych. Wartości AUDF* kontrolują również czasomierze sprzętowe POKEY, przydatne w przypadku kodu, który musi być uruchamiany w precyzyjnych odstępach czasu, częściej niż odstępy pionowe.

Każdy rejestr AUDF* jest 8-bitową wartością dostarczającą licznik czasu lub dzielnik impulsów z zegara POKEY. Tak więc mniejsze wartości pozwalają na częstsze wysyłanie impulsów z POKEY, a większe wartości na rzadsze. Wartości $0 hex /0 dec do $FF hex /255 dec są zwiększane przez POKEY do zakresu od $1 hex /1 dec do $100 hex /256 dec . Rzeczywista słyszalna wysokość dźwięku zależy od wybranej częstotliwości zegara POKEY i wartości zniekształceń. Zobacz Sterowanie kanałami audio i Sterowanie dźwiękiem .

AUDF1 $D200 Zapis

Częstotliwość kanału audio 1

AUDF2 $D202 Zapis

Częstotliwość kanału audio 2

AUDF3 $D204 Zapis

Częstotliwość kanału audio 3

AUDF4 $D206 Zapis

Częstotliwość kanału audio 4

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
? ? ? ? ? ? ? ?

Kontrola kanałów audio

Rejestry kontrolne kanałów audio zapewniają kontrolę głośności i zniekształceń w poszczególnych kanałach dźwiękowych. Dźwięk może być również generowany niezależnie od zegara POKEY poprzez bezpośrednią manipulację głośnością kanału dźwiękowego, co jest przydatne do odtwarzania cyfrowych próbek.

AUDC1 $D201 Zapis

Kontrola kanału audio 1

AUDC2 $D203 Zapis

Sterowanie kanałem 2 audio

AUDC3 $D205 Zapis

Sterowanie kanałem 3 audio

AUDC4 $D207 Zapis

Sterowanie kanałem audio 4

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Hałas 2 Hałas 1 Hałas 0 Wymuś głośność Tom 3 Głośność 2 Tom 1 Tom 0

Bit 0-3: Kontrola poziomu głośności, od 0 do F.

Bit 4: Wymuszone wyjście tylko z głośnością. Gdy ten bit jest ustawiony, kanał ignoruje zegar AUDF, regulatory szumu/zniekształceń i filtr górnoprzepustowy. Dźwięk jest generowany tylko przy ustawieniu bitów głośności 0:3 . Ta funkcja została wykorzystana do stworzenia cyfrowego dźwięku poprzez modulację impulsowo-kodową .

Bit 5-7: Ustawienia rejestru przesuwnego dla szumów/zniekształceń. Wartości bitów opisane poniżej:

Wartość szumu Wartość bitów Opis
0 0 0 $00 Wielomiany 5-bitowe, a następnie 17-bitowe
0 0 1 20 $ Tylko 5-bitowy poli
0 1 0 40 $ 5-bitowe, a następnie 4-bitowe wielokąty
0 1 1 60 $ Tylko 5-bitowy poli
1 0 0 80 $ Tylko 17-bitowy poli
1 0 1 $A0 bez poli (czysty ton)
1 1 0 $C0 Tylko 4-bitowy poli
1 1 1 $E0 bez poli (czysty ton)

Generowanie losowych szumów odbywa się poprzez odczyt 8 bitów z góry 17-bitowego rejestru przesuwnego. Rejestry te sterowane są częstotliwością 1,79 MHz dla NTSC lub 1,77 MHz dla PAL. Jego wyjścia mogą być używane niezależnie przez współczynnik dzielenia każdego kanału audio.

AUDCTL $D208 Zapis

Audio Control umożliwia wybór wejścia zegara używanego dla kanałów audio, sterowanie funkcją filtra górnoprzepustowego, łączenie dwóch kanałów razem, co pozwala na 16-bitową dokładność częstotliwości, wybór zegara wysokiej częstotliwości dla określonych kanałów oraz kontrolę nad „losowością” wejścia wielomianowego.

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
17 vs 9 Poli CH1 1.79 CH3 1.79 CH2 + 1 CH4 + 3 FI1 + 3 FI2 + 4 64 vs 15 kHz

„1” oznacza „włączony”, jeśli nie opisano:

Bit 0
$01: (15 kHz), wybór współczynnika dzielnika częstotliwości „0” - 64 kHz, „1” - 15 kHz
Bit 1
$02: (FI2 + 4), filtr górnoprzepustowy dla kanału 2 oceniany według częstotliwości kanału 4
Bit 2
$04: (FI1 + 3), filtr górnoprzepustowy dla kanału 1 oceniany na podstawie częstotliwości kanału 3
Bit 3
$08: (CH4 + 3), połączenie dzielników 4+3 w celu uzyskania 16-bitowej dokładności
Bit 4
$10: ( CH2 + 1), połączenie dzielników 2+1 w celu uzyskania 16-bitowej dokładności
Bit 5
20 $: (CH3 1,79), ustaw częstotliwość kanału 3 „0” na 64 kHz. „1” to 1,79 MHz NTSC lub 1,77 MHz PAL
Bit 6
40 USD: (CH1 1,79), ustaw częstotliwość kanału 1 „0” na 64 kHz. „1” to 1,79 MHz NTSC lub 1,77 MHz PAL
Bit 7
80 USD: (POLY 9), przełącz rejestr przesuwny „0” — 17-bitowy, „1” — 9-bitowy

Wszystkie dzielniki częstotliwości (AUDF) mogą być napędzane w tym samym czasie z częstotliwością 64 kHz lub 15 kHz.

Dzielniki częstotliwości 1 i 3 mogą być naprzemiennie sterowane zegarem procesora (1,79 MHz NTSC, 1,77 MHz PAL). Dzielniki częstotliwości 2 i 4 mogą być naprzemiennie sterowane przez wyjścia dzielników 1 i 3. W ten sposób POKEY umożliwia łączenie 8-bitowych kanałów w celu uzyskania dźwięku z 16-bitową dokładnością.

Możliwe konfiguracje kanałów:

  • cztery 8-bitowe kanały
  • dwa kanały 8-bitowe i jeden kanał 16-bitowy
  • dwa kanały 16-bitowe

Potencjometry

POKEY posiada osiem portów konwertera analogowo-cyfrowego najczęściej używanych do potencjometrów, znanych również jako Paddle Controllers. Wejścia analogowe są również używane dla kontrolera tabletu dotykowego i 12-przyciskowych kontrolerów klawiatury do gier wideo. Każde wejście ma tranzystor kroplowy, który można włączyć lub wyłączyć za pomocą oprogramowania. Timery mogą być również używane do obsługi pióra świetlnego , poprzez podłączenie fotodiody do tranzystora kroplowego, który przechwytuje timer, gdy wiązka elektronów w telewizorze przechodzi przez pióro. Pionowe położenie pióra należało odczytać oddzielnie.

POT0 $D200 Odczyt

CIEŃ: PADDL0 0270 $

Kontroler wiosła 0 Wejście

POT1 $D201 Odczyt

CIEŃ: PADDL1 0271 $

Kontroler wiosła 1 wejście

POT2 $D202 Odczyt

CIEŃ: PADDL2 0272 $

Wejście kontrolera wiosła 2

POT3 $D203 Odczyt

CIEŃ: PADDL3 0273 $

Kontroler wiosła 3 Wejście

POT4 $D204 Odczyt

CIEŃ: PADDL4 02704 $

Wejście kontrolera wiosła 4

POT5 $D205 Odczyt

CIEŃ: PADDL5 0275 $

Kontroler wiosła 5 Wejście

POT6 $D206 Odczyt

CIEŃ: PADDL6 0276 $

Wejście kontrolera wiosła 6

POT7 $D207 Odczyt

CIEŃ: PADDL7 0277 $

Wejście kontrolera wiosła 7

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
? ? ? ? ? ? ? ?

Każde wejście posiada 8-bitowy timer, odliczający czas wyświetlania każdej linii TV. Miało to tę dodatkową zaletę, że umożliwiało podawanie odczytanej wartości bezpośrednio do współrzędnych ekranowych obiektów napędzanych przez łopatki. Wartości Atari Paddle mieszczą się w zakresie od 0 do 228, chociaż maksymalna możliwa liczba to 244. Kontroler Paddle odczytuje 0 po obróceniu do maksymalnej pozycji zgodnie z ruchem wskazówek zegara i zwraca rosnące wartości, gdy jest obracany w kierunku przeciwnym do ruchu wskazówek zegara, kończąc na maksymalnej wartości.

Proces odczytu łopatki rozpoczyna się od zapisu do POTGO , który resetuje wartości POT* do 0, wartość ALLPOT do $FF i rozładowuje kondensatory odczytu potencjometru. Wartości POT* narastają podczas skanowania, aż do osiągnięcia wartości rezystancji potencjometru. Po zakończeniu odczytu wiosła odpowiedni bit w ALLPOT jest resetowany do 0.

Proces skanowania Paddle może zająć większość klatki wideo. System operacyjny Atari automatycznie zajmuje się odczytem Paddle. Łyżki są odczytywane, a skanowanie łyżek inicjowane podczas etapu 2 pionowego wygaszania. Wartości wiosła są kopiowane do rejestrów cienia. (Zauważ, że wyzwalacze wiosła są w rzeczywistości danymi wejściowymi kierunku joysticka odczytanymi z PIA.)

Szybszy tryb skanowania łyżek jest możliwy poprzez ustawienie bitu w SKCTL . Sekwencja odczytu kończy się tylko w kilku liniach skanowania, ale wartość jest mniej dokładna.

ALLPOT $ 208 Odczyt

Stan skanowania potencjometru

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
wiosło 7 wiosło 6 wiosło 5 wiosło 4 wiosło 3 wiosło 2 wiosło 1 wiosło 0

Każdy bit odpowiada jednemu wejściu potencjometru (rejestry POT*). Kiedy skanowanie łopatki jest rozpoczynane przez zapis do POTGO , każdy bit łopatki w ALLPOT jest ustawiany na 1. Kiedy skanowanie łopatki jest zakończone, odpowiedni bit w ALLPOT jest resetowany do 0, wskazując, że wartość w powiązanym rejestrze POT* jest teraz ważna do odczytu.

POTGO $D20B Napisz

Rozpocznij skanowanie potencjometru

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
- - - - - - - -

Zapis do POTGO inicjuje proces skanowania potencjometru (Paddle). Spowoduje to zresetowanie wartości POT* do 0, ALLPOT do $FF i rozładowanie kondensatorów odczytu potencjometru. Gdy każdy skan potencjometru zakończy się, bit odpowiadający potencjometrowi w ALLPOT zostanie wyczyszczony, co wskazuje, że wartość powiązanego rejestru POT* jest ważna do odczytu.

Szeregowy port wyjściowy wejścia

Zawiera:

  • szeregowa linia wejściowa
  • szeregowa linia wyjściowa
  • Linia wyjściowa zegara szeregowego
  • dwukierunkowa linia danych zegara szeregowego
  • rejestruje SKREST, SEROUT, SERIN, SKCTL, SKSTAT

POKEY to coś w rodzaju UART . Zwykle jeden z podwojonych kanałów audio jest używany jako generator szybkości transmisji. Standardowa prędkość transmisji to 19,2 kbit/s, maksymalna możliwa prędkość to 127 kbit/s. Bajt umieszczony w rejestrze SEROUT jest automatycznie przesyłany przez magistralę szeregową. Ramka danych zawiera 10 bitów: 1 bit startu, 8 bitów danych, 1 bit stopu. Poziomy napięcia to 0 V (logiczne 0) i +4 V (logiczne 1). Istnieje możliwość połączenia portu szeregowego Atari z portem RS-232 za pomocą prostej przetwornicy napięcia.

Każda operacja wejścia/wyjścia powoduje zmianę wartości w wewnętrznych rejestrach przesuwnych POKEY, dlatego podczas programowania POKEY konieczne jest ponowne zainicjowanie niektórych wartości po wykonaniu każdej operacji.

SKREST $D20A Napisz

Zresetuj stan portu szeregowego (SKSTAT).

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
- - - - - - - -

Zapis do tego rejestru zresetuje bity od 5 do 7 SKSTAT , które są zatrzaskami, na 1. Zatrzaski sygnalizują przekroczenie klawiatury, przekroczenie wejścia danych szeregowych i błąd ramki wprowadzania danych szeregowych.

SEROUT $D20D Zapis

Bajt wyjściowy danych portu szeregowego.

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
- - - - - - - -

Jest to równoległy rejestr „wstrzymujący” dla ośmiobitowej (jeden bajt) wartości, która zostanie przesłana do szeregowego rejestru przesuwnego w celu wyprowadzenia bit po bicie. Gdy port jest gotowy do przyjęcia danych do wyjścia, przerwanie Serial Data Out informuje system operacyjny, że może zapisać bajt w tym rejestrze wyjściowym.

SERIN $D20D Odczyt

Bajt wejściowy danych portu szeregowego.

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
- - - - - - - -

Podobnie jak SEROUT, również równoległy rejestr „wstrzymujący”. Przechowuje ośmiobitową (jeden bajt) wartość zebraną przez szeregowy rejestr przesuwny, odczytujący wprowadzane dane po jednym bicie na raz. Kiedy odczytywany jest cały bajt, następuje przerwanie Serial Data In informujące system operacyjny, że może odczytać bajt z tego rejestru.

SKCTL $D20F Zapis

Kontrola portu szeregowego

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Przerwa w serialu Tryb szeregowy 2 Tryb szeregowy 1 Tryb szeregowy0 Seryjny dwukolorowy Szybkie skanowanie puli Włącz skanowanie KB Odrzucenie KB

Bit 0: Włącz skanowanie „debounce”, które ma na celu wyeliminowanie szumu lub drgań z przełączników mechanicznych. Wartość 1 umożliwia POKEYowi użycie wewnętrznego rejestru porównawczego podczas skanowania kluczy. Klawisz musi zostać wykryty w dwóch jednoczesnych skanach, zanim zostanie zidentyfikowany jako naciśnięty, i musi być widoczny, aby dwa kolejne skany zostały uznane za zwolnione. Ta opcja powinna być włączona, aby utrzymać normalną obsługę klawiatury w systemie operacyjnym.

Bit 1: Ustaw na 1, aby włączyć skanowanie klawiatury. Ta opcja powinna być włączona, aby utrzymać normalną obsługę klawiatury w systemie operacyjnym.

Bit 2: Ustaw na 1, aby włączyć szybkie, choć mniej dokładne skanowanie potencjometru. Skanowanie Fast Pot zwiększa licznik w każdym cyklu i zwraca użyteczny wynik w ciągu dwóch linii skanowania. System operacyjny wykorzystuje powolne skanowanie puli, które zwiększa licznik raz na 114 cykli (linia skanowania), biorąc klatkę (1/60 sekundy), aby uzyskać wynik. System operacyjny odczytuje wartości Pot podczas przerwania pionowego pustego (VBI) i kopiuje wynik do rejestrów Shadow potencjometru w pamięci RAM. Następnie resetuje POTGO dla następnego odczytu podczas następnego VBI.

Bit 3: Włącz tryb dwukolorowy portu szeregowego. Po włączeniu, bity 1 i 0 wysyłane do magistrali SIO są zastępowane tonami ustawionymi przez zegary 1 i 2. Jest to zwykle używane do zapisywania tonów analogowych reprezentujących dane cyfrowe na taśmie magnetofonowej.

Bit 4-6: Sterowanie taktowaniem zegara dla operacji portu szeregowego. Wartości bitów opisane poniżej:

Kontrola portu [6:4] Wartość bitów Zegar wejściowy Zegar wyjściowy Zegar dwukierunkowy
0 0 0 $00 Zewnętrzny Zewnętrzny Wejście
0 0 1 10 $ Kanały 3+4 (asynchroniczne) Zewnętrzny Wejście
0 1 0 20 $ kanał 4 kanał 4 Kanał wyjściowy 4
0 1 1 30 $ Kanał 3+4 (asynchroniczny) Kanał 4 (asynchroniczny) Wejście
1 0 0 40 $ Zewnętrzny kanał 4 Wejście
1 0 1 50 $ Kanał 3+4 (asynchroniczny) Kanał 4 (asynchroniczny) Wejście
1 1 0 60 $ kanał 4 kanał 2 Kanał wyjściowy 4
1 1 1 70 $ Kanał 3+4 (asynchroniczny) kanał 2 Wejście

Bit 7: Wymusza znane wyjście 0, aby timer 2 mógł zresetować timer 1 w trybie dwutonowego wyjścia szeregowego.

SKSTAT $D20F Odczyt

Stan portu szeregowego

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Błąd numeru seryjnego w ramce Serial w przewadze Przekroczenie KB Odczyt Dane gotowe Klawisz Shift Ostatni klawisz wciąż wciśnięty Wejście szeregowe zajęte -

KBCODE $D209 Odczyt

CIEŃ: CH $02FC

Kod klawiatury

Osiem przerwań IRQ

BREAK
Break (przerwanie klawisza BREAK)
K
Klawiatura (przerwanie klawiatury)
SIR
jeśli wejście szeregowe gotowe (odczyt przerwania z szyny szeregowej)
ODN
jeśli dane wyjściowe potrzebne (przerwanie zapisu z szyny szeregowej)
XD
jeśli eXmitend Data (przerwanie końca transmisji szeregowej)
T1
Timer 1 , timer 1 przerwanie
T2
Timer 2, timer 2 przerwanie
T4
Timer 4, timer 4 przerwanie

Przerwania mogą być włączane i wyłączane z oprogramowania przez rejestr IRQEN. Rejestr IRQSTAT zawiera status przerwań.

Klawiatura

Rejestr sześciu klawiszy aktualnie wciśniętych klawiszy (K0 K5), który zawiera wartości od 00 do 3F. Zawiera 2 wartości kontrolne. Jeden z nich pełni rolę dekodera wszystkich 6 wartości. Drugie wartości kontrolne służą do dekodowania specjalnych wartości klawiszy — CTRL, SHIFT i BREAK.

Linki zewnętrzne