POKEY - POKEY
Pot Klávesnice Integrated Circuit ( Pokey ) je digitální I / O chip určena pro 8-bitové rodiny Atari domácích počítačů a našel v Atari pasáž hry roku 1980. POKEY kombinuje funkce pro vzorkování potenciometrů (například herní pádla ) a skenovací matice přepínačů (například klávesnice počítače ) a také generování zvuku. Vytváří čtyři hlasy charakteristického zvuku čtvercových vln , buď jako čisté tóny, nebo upravené s řadou nastavení zkreslení.
POKEY čipy se používají pro zvuk v mnoha arkádových hrách včetně Stonožky , Missile Command , Asteroids Deluxe a Gauntlet . Některé arkádové systémy Atari používají vícejádrové verze se 2 nebo 4 POKEY v jednom balíčku pro více zvuků. Atari 7800 konzoly umožňuje herní cartridge tak, aby obsahovaly Pokey, které poskytují lepší zvuk než zvukový čip systému. Toho využívají pouze dvě licencované hry: porty Ballblazer a Commando .
LSI čip má 40 kolíků a je identifikován jako C012294. POKEY navrhl zaměstnanec Atari Doug Neubauer , který také programoval původní Star Raiders . USPTO udělil americký patent 4,314,236 pro Atari dne 2. února 1982 pro „zařízení pro výrobu množství audio zvukových efektů“. Uvedenými vynálezci jsou Steven T. Mayer a Ronald E. Milner.
POKEY se již nevyrábí a je emulován v softwaru arkádovými a 8bitovými emulátory Atari a také prostřednictvím hudebního formátu Atari SAP a přidruženého přehrávače.
Funkce
- Zvuk
- 4 částečně nezávislé zvukové kanály
- Kanály lze konfigurovat jako jeden z následujících:
- Čtyři 8bitové kanály
- Dva 16bitové kanály
- Jeden 16bitový kanál a dva 8bitové kanály
- Objem , frekvence a průběh na kanál ( čtvercová vlna s proměnným pracovním cyklem nebo pseudonáhodný šum)
- Dělič kmitočtu 15 kHz nebo 64 kHz.
- Dva kanály mohou být řízeny na taktovací frekvenci CPU.
- High-pass filtr
- Skenování klávesnice (až 64 kláves) + 2 modifikační bity (Shift, Control) + Break
- Porty potenciometru (8 nezávislých portů, každý s 8bitovým rozlišením)
- Časovače s vysokým rozlišením (zvukové kanály 1, 2 a 4 lze nakonfigurovat tak, aby způsobovaly přerušení časovače při překročení nuly)
- Generátor náhodných čísel (lze přečíst 8 bitů 17bitového polynomiálního čítače)
- Sériový I/O port
- Osm IRQ přerušení
Verze
Podle čísla dílu:
- C012294-Používá se ve všech 8bitových rodinných počítačích Atari , včetně Atari XEGS a konzole Atari 5200. Přípona na čipu odkazuje na výrobce:
- C012294B-01-AMI
- C012294-03-Signetika
- C012294-19-National Semiconductor
- C012294-22-OKI
- C012294-31-IMP
- 137430-001-Číslo dílu se někdy používá v arkádových automatech Atari pro POKEY.
- 137324-1221-Čtyřjádrový POKEY používaný v arkádových automatech Atari Major Havoc , I, Robot , Firefox a Návrat Jediho .
Pinout
Název PINu | Číslo PINu | Popis |
---|---|---|
A0 - A3 | 36, 35, 34, 33 | Zadání adresy paměti |
ACLK | 27 | Výstup sériových hodin |
AUD | 37 | Audio výstup |
BCLK | 26 | Obousměrné hodiny I/O |
CS0 | 30 | Výběr čipu |
CS1 | 31 | Výběr čipu |
D0 - D7 | 38, 39, 40, 2, 3, 4, 5, 6 | Data Bus I/O |
IRQ | 29 | Výstup požadavku na přerušení |
K0 - K5 | 23, 22, 21, 20, 19, 18 | Výstup skenování klávesnice |
KR1 - KR2 | 25, 16 | Vstup stroboskopu na klávesnici |
P0 - P7 | 14, 15, 12, 13, 10, 11, 8, 9 | Skenování potenciometrem (pádlem) |
R/W | 32 | Čtení/zápis I/O ovládání |
SID | 24 | Sériová vstupní data |
DRN | 28 | Sériová výstupní data |
V cc | 17 | Napájení +5 voltů |
V ss | 1 | Přízemní |
Ø2 | 7 | Vstup fáze 2 |
Registry
8bitové počítače Atari mapují POKEY na hexadecimální stránku $ D2xx a konzole Atari 5200 ji mapuje na hexadecimální stránku $ E8xx .
POKEY poskytuje 29 registrů čtení/zápisu ovládajících zvuk, pádlový vstup, vstup z klávesnice, sériový vstup/výstup a přerušení. Mnoho adres registru POKEY má dvojí účel a plní různé funkce jako registr čtení a zápisu. Proto by žádný kód neměl číst hardwarové registry, které očekávají načtení dříve zapsané hodnoty.
Tento problém je u některých registrů vyřešen registry „Shadow“ operačního systému implementovanými v běžné paměti RAM, které zrcadlí hodnoty registrů hardwaru. Během svislého prázdného prostoru operační systém zkopíruje stínové registry v RAM pro zápisové registry do odpovídajícího hardwarového registru a podle toho aktualizuje stínové hodnoty pro čtecí registry z hardwaru. Zápisy do hardwarových registrů, které mají odpovídající stínové registry, budou tedy přepsány hodnotou stínových registrů během dalšího svislého prázdného místa.
Čtení hodnot přímo z hardwaru v neznámé fázi cyklu zobrazení může vrátit nekonzistentní výsledky (příklad: čtení potenciometrů). Stínové registry operačního systému pro registry ke čtení by byly obvykle preferovaným zdrojem informací.
Některé hardwarové registry pro zápis nemají odpovídající stínové registry. Mohou být bezpečně zapsány aplikací, aniž by byla hodnota přepsána během svislého prázdného místa. Pokud aplikace potřebuje znát poslední hodnotu zapsanou do registru, je odpovědností aplikace implementovat vlastní hodnotu stínu, aby si pamatovala, co napsala.
název | Popis | Číst psát | Hex Addr | Prosinec Addr | Název stínu | Shadow Hex Addr | Shadow Dec Addr |
---|---|---|---|---|---|---|---|
1 AUDF | Frekvence zvukového kanálu 1 | Napsat | 200 D $ | 53760 | |||
POT0 | Potenciometr (pádlo) 0 | Číst | 200 D $ | 53760 | PADDL0 | 0270 $ | 624 |
AUDC1 | Ovládání zvukového kanálu 1 | Napsat | $ D201 | 53761 | |||
HRNEC 1 | Potenciometr (pádlo) 1 | Číst | $ D201 | 53761 | PADDL1 | 0271 USD | 625 |
AUDF2 | Frekvence zvukového kanálu 2 | Napsat | 202 $ | 53762 | |||
POT2 | Potenciometr (pádlo) 2 | Číst | 202 $ | 53762 | PADDL2 | 0272 USD | 626 |
AUDC2 | Ovládání zvukového kanálu 2 | Napsat | 203 $ | 53763 | |||
POT3 | Potenciometr (pádlo) 3 | Číst | 203 $ | 53763 | PADDL3 | 0273 USD | 627 |
AUDF3 | Frekvence zvukového kanálu 3 | Napsat | 204 $ | 53764 | |||
POT4 | Potenciometr (pádlo) 4 | Číst | 204 $ | 53764 | PADDL4 | 0274 $ | 628 |
AUDC3 | Ovládání zvukového kanálu 3 | Napsat | 205 USD | 53765 | |||
POT 5 | Potenciometr (pádlo) 5 | Číst | 205 USD | 53765 | PADDL5 | 0275 USD | 629 |
AUDF4 | Frekvence zvukového kanálu 4 | Napsat | 206 $ | 53766 | |||
POT6 | Potenciometr (pádlo) 6 | Číst | 206 $ | 53766 | PADDL6 | 0276 USD | 630 |
AUDC4 | Ovládání audio kanálu 4 | Napsat | 207 $ | 53767 | |||
7 | Potenciometr (pádlo) 7 | Číst | 207 $ | 53767 | PADDL7 | 2 027 $ | 631 |
AUDCTL | Ovládání zvuku | Napsat | 208 $ | 53768 | |||
ALLPOT | Přečtěte si stav portu 8 řádků POT | Číst | 208 $ | 53768 | |||
STIMER | Spusťte časovače | Napsat | 209 $ | 53769 | |||
KBCODE | Kód klávesnice | Číst | 209 $ | 53769 | CH | $ 02FC | 764 |
SKREST | Obnovit sériový stav (SKSTAT) | Napsat | $ D20A | 53770 | |||
NÁHODNÝ | Generátor náhodných čísel | Číst | $ D20A | 53770 | |||
BRAMBOR | Spusťte sekvenci skenování POT | Napsat | $ D20B | 53771 | |||
SEROUT | Výstup dat ze sériového portu | Napsat | $ D20D | 53773 | |||
SERIN | Vstup dat sériového portu | Číst | $ D20D | 53773 | |||
IRQEN | Povolit požadavek na přerušení | Napsat | $ D20E | 53774 | POKMSK | 10 $ | 16 |
IRQST | Stav IRQ | Číst | $ D20E | 53774 | |||
SKCTL | Ovládání sériového portu | Napsat | $ D20F | 53775 | SSKCTL | 0232 USD | 562 |
SKSTAT | Stav sériového portu | Číst | $ D20F | 53775 |
V jednotlivých registrech uvedených níže platí následující legenda:
Bitová hodnota | Popis |
---|---|
0 | Bit musí být 0 |
1 | Bit musí být 1 |
? | Bit může mít hodnotu 0 nebo 1 a slouží k určitému účelu. |
- | Bit je nepoužitý nebo by se nemělo očekávat, že bude mít určitou hodnotu |
označení | Účel bitu najdete v pozdějším vysvětlení. |
Zvuk
Pokey obsahuje programovatelný zvukový generátor ; čtyři zvukové kanály se samostatnými ovládacími prvky frekvence, šumu a hlasu.
Každý kanál má 8bitový frekvenční dělič a 8bitový registr pro výběr šumu a hlasitosti.
- AUDF1 až AUDF4 - frekvenční registr (AUDio frekvence)
- AUDC1 až AUDC4 - registr hlasitosti a šumu (ovládání AUDio)
- AUDCTL - obecný registr, který řídí generátory (AUDio ConTroL)
Zvuk POKEY je výrazný: když jsou čtyři kanály použity nezávisle, dochází k znatelnému rozladění částí 12tónové škály stejného temperamentu kvůli nedostatečné přesnosti výšky. Kanály mohou být spárovány pro vyšší přesnost; navíc je k dispozici více forem zkreslení , což umožňuje silnější zvuk. Zkreslení se používá především v hudbě pro basové party.
Jeden ze zvukových motorů vyvinutých pro 8bitovou rodinu Atari se nazýval AMP engine (Advanced Music Processor). Toho využil hudebník Gary Gilbertson .
Frekvence zvukového kanálu
Registry AUDF* řídí frekvenci nebo výšku odpovídajících zvukových kanálů. Hodnoty AUDF* také ovládají hardwarové časovače POKEY užitečné pro kód, který musí běžet v přesných intervalech častěji než svislé prázdné místo.
Každý registr AUDF* je 8bitová hodnota poskytující časovač odpočítávání nebo dělič pulsů z hodin POKEY. Menší hodnoty tedy umožňují častější výstup impulsů z POKEY a větší hodnoty méně časté. Hodnoty $ 0 hex /0 dec na $ FF hex /255 dec jsou POKEY zvýšeny tak, aby se pohybovaly od 1 $ hex /1 dec do 100 $ hex /256 dec . Skutečná výška slyšitelného zvuku závisí na zvolené frekvenci hodin POKEY a na hodnotách zkreslení. Viz Ovládání zvukových kanálů a Ovládání zvuku .
AUDF1 $ D200 Zápis
Frekvence zvukového kanálu 1
AUDF2 $ D202 Zápis
Frekvence zvukového kanálu 2
AUDF3 $ D204 Zápis
Frekvence zvukového kanálu 3
AUDF4 $ D206 Zápis
Frekvence zvukového kanálu 4
Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 |
---|---|---|---|---|---|---|---|
? | ? | ? | ? | ? | ? | ? | ? |
Ovládání zvukového kanálu
Registry ovládání zvukových kanálů poskytují ovládání hlasitosti a zkreslení jednotlivých zvukových kanálů. Zvuk lze také generovat nezávisle na hodinách POKEY přímou manipulací hlasitosti zvukového kanálu, což je užitečné pro přehrávání digitálních samplů.
AUDC1 $ D201 Zápis
Ovládání zvukového kanálu 1
AUDC2 $ D203 Zápis
Ovládání audio kanálu 2
AUDC3 $ D205 Zápis
Ovládání zvukového kanálu 3
AUDC4 $ D207 Zápis
Ovládání audio kanálu 4
Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 |
---|---|---|---|---|---|---|---|
Hluk 2 | Hluk 1 | Hluk 0 | Vynutit hlasitost | Svazek 3 | Svazek 2 | Hlasitost 1 | Svazek 0 |
Bit 0-3: Ovládání úrovně hlasitosti od 0 do F.
Bit 4: Vynucený výstup pouze pro svazek. Je-li tento bit nastaven, kanál ignoruje časovač AUDF, ovládání šumu/zkreslení a filtr horní propusti. Zvuk je produkován pouze nastavením bitů hlasitosti 0: 3. Tato funkce byla použita k vytvoření digitálního zvuku prostřednictvím modulace pulzního kódu .
Bit 5-7: Nastavení posuvného registru pro zvuky/zkreslení. Bitové hodnoty popsané níže:
Hodnota hluku | Hodnota bitů | Popis |
---|---|---|
0 0 0 | 00 $ | 5bitové a pak 17bitové polynomy |
0 0 1 | 20 $ | Pouze 5bitový poly |
0 1 0 | 40 dolarů | 5bitové a pak 4bitové polys |
0 1 1 | 60 dolarů | Pouze 5bitový poly |
100 | 80 dolarů | Pouze 17bitový poly |
1 0 1 | $ A0 | žádný poly (čistý tón) |
1 1 0 | $ C0 | Pouze 4bitový poly |
1 1 1 | $ E0 | žádný poly (čistý tón) |
Generování náhodných šumů je prováděno čtením 8 bitů z vrcholu 17bitového posuvného registru. Tyto registry jsou poháněny frekvencí 1,79 MHz pro NTSC nebo 1,77 MHz pro PAL. Jeho výstupy lze použít nezávisle na poměru děličů jednotlivých zvukových kanálů.
AUDCTL $ D208 Zápis
Ovládání zvuku umožňuje výběr hodinového vstupu použitého pro zvukové kanály, ovládání funkce filtru horních propustí, sloučení dvou kanálů dohromady umožňující přesnost 16bitové frekvence, výběr vysokofrekvenčních hodin pro konkrétní kanály a kontrolu nad „náhodností“ polynomiálního vstupu.
Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 |
---|---|---|---|---|---|---|---|
17 vs 9 Poly | CH1 1,79 | CH3 1,79 | CH2 + 1 | CH4 + 3 | FI1 + 3 | FI2 + 4 | 64 vs 15 kHz |
„1“ znamená „zapnuto“, pokud není popsáno:
- Bit 0
- $ 01: (15 kHz), volba frekvence děliče frekvence „0“ - 64 kHz, „1“ - 15 kHz
- Bit 1
- 02 $: (FI2 + 4), horní propust pro kanál 2 hodnocená podle frekvence kanálu 4
- Bit 2
- $ 04: (FI1 + 3), horní propust pro kanál 1 hodnocená podle frekvence kanálu 3
- Bit 3
- 08 $: (CH4 + 3), připojení děličů 4 + 3 pro získání 16bitové přesnosti
- Bit 4
- 10 $: (CH2 + 1), připojení děličů 2 + 1 pro získání 16bitové přesnosti
- Bit 5
- 20 $: (CH3 1,79), nastavená frekvence kanálu „0“ je 64 kHz. „1“ je 1,79 MHz NTSC nebo 1,77 MHz PAL
- Bit 6
- 40 $: (CH1 1,79), nastavená frekvence kanálu „0“ je 64 kHz. „1“ je 1,79 MHz NTSC nebo 1,77 MHz PAL
- Bit 7
- 80 $: (POLIKA 9), přepínač posuvného registru „0“-17bitový, „1“-9bitový
Všechny frekvenční děliče (AUDF) lze řídit současně rychlostí 64 kHz nebo 15 kHz.
Frekvenční děliče 1 a 3 lze střídavě řídit hodinami CPU (1,79 MHz NTSC, 1,77 MHz PAL). Frekvenční děliče 2 a 4 lze střídavě řídit výstupem děličů 1 a 3. Tímto způsobem POKEY umožňuje připojení 8bitových kanálů k vytvoření zvuku se 16bitovou přesností.
Možné konfigurace kanálů:
- čtyři 8bitové kanály
- dva 8bitové kanály a jeden 16bitový kanál
- dva 16bitové kanály
Potenciometry
POKEY má osm analogově digitálních převodníkových portů, které se nejčastěji používají pro potenciometry, známé také jako pádlové ovladače. Analogové vstupy se používají také pro ovladač Touch Tablet a 12tlačítkové ovladače pro herní hry. Každý vstup má poklesový tranzistor, který lze zapnout nebo vypnout pomocí softwaru. Časovače mohou být také použity k podpoře světelného pera , připojením fotodiody k drop tranzistoru, který zachycuje časovač, když elektronový paprsek v televizi prochází kolem pera. Svislou polohu pera bylo nutné číst samostatně.
Číst POT0 $ D200
SHADOW: PADDL0 $ 0270
Pádlový ovladač 0 vstup
ČTENÍ POT1 $ D201
SHADOW: PADDL1 $ 0271
Pádlový ovladač 1 vstup
Číst POT2 $ D202
SHADOW: PADDL2 $ 0272
Paddle Controller 2 vstup
Číst POT3 $ D203
SHADOW: PADDL3 $ 0273
Paddle Controller 3 vstup
Číst POT4 $ D204
SHADOW: PADDL4 $ 02704
Pádlový ovladač se 4 vstupy
Číst POT5 $ D205
SHADOW: PADDL5 $ 0275
Pádlový ovladač 5 vstupů
Číst POT6 $ D206
SHADOW: PADDL6 $ 0276
Pádlový ovladač 6 vstupů
Číst POT7 $ D207
SHADOW: PADDL7 $ 0277
Pádlový ovladač 7 vstup
Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 |
---|---|---|---|---|---|---|---|
? | ? | ? | ? | ? | ? | ? | ? |
Každý vstup má 8bitový časovač, který počítá čas při zobrazení každé televizní linky. To mělo další výhodu v tom, že umožnilo načtení hodnoty přímo do souřadnic obrazovky objektů poháněných pádly. Hodnoty pádla Atari se pohybují od 0 do 228, i když maximum je 244. Pádlový ovladač čte 0, když je otočen do své maximální polohy ve směru hodinových ručiček, a vrací rostoucí hodnoty, když je otočen proti směru hodinových ručiček a končí na své maximální hodnotě.
Proces čtení pádlem začíná zápisem do POTGO, který resetuje hodnoty POT* na 0, hodnotu ALLPOT na $ FF a vybije čtecí kondenzátory potenciometru. Hodnoty POT* se při skenování zvyšují, dokud nedosáhnou hodnoty odporu potenciometru. Po dokončení čtení pádla se odpovídající bit v ALLPOT resetuje na 0.
Proces skenování pádla může trvat většinu video rámce k dokončení. O čtení pádly se automaticky stará operační systém Atari. Pádla jsou čtena a skenování pádel zahájeno během svislého prázdného stupně 2. Hodnoty pádla se zkopírují do stínových registrů. (Všimněte si, že spouště pádla jsou ve skutečnosti vstupem joysticku načteným z PIA.)
Rychlejší režim skenování pádel je možný nastavením trochu v SKCTL . Čtecí sekvence se dokončí pouze v několika řádcích skenování, ale hodnota je méně přesná.
ALLPOT $ D208 Přečteno
Stav skenování potenciometru
Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 |
---|---|---|---|---|---|---|---|
Pádlo 7 | Pádlo 6 | Pádlo 5 | Pádlo 4 | Pádlo 3 | Pádlo 2 | Pádlo 1 | Pádlo 0 |
Každý bit odpovídá jednomu vstupu potenciometru (registr POT*). Když je skenování pádla spuštěno zápisem do POTGO, každý bit pádla v ALLPOT je nastaven na 1. Když je skenování pádla dokončeno, odpovídající bit v ALLPOT je resetován na 0, což znamená, že hodnota v přidruženém registru POT* je nyní platná pro čtení.
POTGO $ D20B Zápis
Spusťte skenování potenciometru
Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 |
---|---|---|---|---|---|---|---|
- | - | - | - | - | - | - | - |
Zápis do POTGO zahájí proces skenování potenciometru (pádla). Tím se vynulují hodnoty POT* na 0, hodnota ALLPOT na $ FF a vybijí se čtecí kondenzátory potenciometru. Po dokončení každého skenování potenciometru se bit odpovídající potenciometru v ALLPOT vymaže, což znamená, že hodnota příslušného registru POT* je platná pro čtení.
Výstupní port sériového vstupu
Obsahuje:
- sériový vstupní řádek
- sériový výstupní řádek
- výstupní řádek sériových hodin
- datová linka obousměrných sériových hodin
- registruje SKREST, SEROUT, SERIN, SKCTL, SKSTAT
POKEY je jakýsi UART . Jako generátor přenosové rychlosti se obvykle používá jeden ze zdvojených zvukových kanálů. Standardní přenosová rychlost je 19,2 kbit/s, maximální možná přenosová rychlost je 127 kbit/s. Bajt vložený do registru SEROUT je automaticky odeslán po sériové sběrnici. Datový rámec obsahuje 10 bitů: 1 počáteční bit, 8 datových bitů, 1 stop bit. Úrovně napětí jsou 0 V (logická 0) a +4 V (logická 1). Sériový port Atari je možné propojit s portem RS-232 pomocí jednoduchého měniče napětí.
Každá operace vstupu/výstupu způsobí, že interní posuvné registry POKEY změní hodnotu, takže při programování pro POKEY je nutné po provedení každé operace znovu inicializovat některé hodnoty.
SKREST $ D20A Napište
Resetovat stav sériového portu (SKSTAT).
Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 |
---|---|---|---|---|---|---|---|
- | - | - | - | - | - | - | - |
Zápis do tohoto registru resetuje bity 5 až 7 SKSTAT, což jsou západky na 1. Přepnutí klávesnice příznaku západek, překročení sériového vstupu dat a chyba rámce vstupu sériového dat.
Napište SEROUT $ D20D
Výstupní byte dat sériového portu.
Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 |
---|---|---|---|---|---|---|---|
- | - | - | - | - | - | - | - |
Jedná se o paralelní „přidržovací“ registr pro hodnotu osmi bitů (jeden bajt), který bude přenesen do sériového posuvného registru pro výstup po jednom bitu. Když je port připraven přijímat data pro výstup, přerušení Serial Data Out informuje operační systém, že může zapsat bajt do tohoto výstupního registru.
Přečteno SERIN $ D20D
Vstupní byte dat sériového portu.
Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 |
---|---|---|---|---|---|---|---|
- | - | - | - | - | - | - | - |
Stejně jako SEROUT také paralelní „holding“ registr. To uchovává hodnotu osm bitů (jeden bajt) sestavenou sériovým posuvným registrem, která čte vstup dat po jednom bitu. Když je načten celý bajt, dojde k přerušení sériových dat informujících operační systém, že může přečíst bajt z tohoto registru.
SKCTL $ D20F Zápis
Ovládání sériového portu
Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 |
---|---|---|---|---|---|---|---|
Sériová přestávka | Sériový režim 2 | Sériový režim 1 | Sériový režim0 | Sériový dvoutónový | Rychlé skenování hrnce | Povolit skenování KB | KB debounce |
Bit 0: Povolte skenování „debounce“, které je určeno k odstranění šumu nebo chvění z mechanických přepínačů. Hodnota 1 umožňuje POKEY používat při skenování klíčů interní srovnávací registr. Klíč musí být detekován ve dvou simultánních skenováních, než bude identifikován jako stisknutý, a musí být viděn uvolněný, aby se dvě po sobě jdoucí skenování považovala za uvolněná. To by mělo být povoleno, aby bylo zachováno normální ovládání klávesnice s operačním systémem.
Bit 1: Nastavením na 1 povolíte skenování klávesnice. To by mělo být povoleno, aby bylo zachováno normální ovládání klávesnice s operačním systémem.
Bit 2: Nastavením na 1 umožníte rychlé, i když méně přesné skenování potenciometru. Rychlé skenování hrnce zvyšuje čítač v každém cyklu a vrací použitelný výsledek do dvou řádků skenování. Operační systém používá pomalé skenování hrnců, které k dosažení výsledku zvýší čítač jednou za 114 cyklů (skenovací řádek) a pořídí snímek (1/60 sekundy). OS čte hodnoty potu během jeho vertikálního přerušení (VBI) a zkopíruje výsledek do potenciometrových stínových registrů v RAM. Poté resetuje POTGO pro další čtení během dalšího VBI.
Bit 3: Povolte dvoubarevný režim sériového portu. Pokud je povoleno, 1 a 0 bitový výstup na SIO sběrnici jsou nahrazeny tóny nastavenými časovači 1 a 2. To se běžně používá pro zápis analogových tónů představujících digitální data na kazetovou pásku.
Bit 4-6: Ovládání časování hodin pro provoz sériového portu. Bitové hodnoty popsané níže:
Port Control [6: 4] | Hodnota bitů | Vstupní hodiny | Výstupní hodiny | Obousměrné hodiny |
---|---|---|---|---|
0 0 0 | 00 $ | Externí | Externí | Vstup |
0 0 1 | 10 $ | Kanály 3+4 (asynchronní) | Externí | Vstup |
0 1 0 | 20 $ | Kanál 4 | Kanál 4 | Výstupní kanál 4 |
0 1 1 | 30 $ | Kanál 3+4 (asynchronní) | Kanál 4 (asynchronní) | Vstup |
100 | 40 dolarů | Externí | Kanál 4 | Vstup |
1 0 1 | 50 dolarů | Kanál 3+4 (asynchronní) | Kanál 4 (asynchronní) | Vstup |
1 1 0 | 60 dolarů | Kanál 4 | Kanál 2 | Výstupní kanál 4 |
1 1 1 | 70 dolarů | Kanál 3+4 (asynchronní) | Kanál 2 | Vstup |
Bit 7: Vynucuje známý výstup 0, takže časovač 2 může resetovat časovač 1 v režimu dvoubarevného sériového výstupu.
SKSTAT $ D20F Přečteno
Stav sériového portu
Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 |
---|---|---|---|---|---|---|---|
Sériová chyba v rámci | Sériové v doběhu | Přetečení KB | Čtení dat připraveno | Klávesa Shift | Poslední stisknutá klávesa | Sériový vstup zaneprázdněn | - |
Přečíst KBCODE $ D209
SHADOW: CH $ 02FC
Kód klávesnice
Osm přerušení IRQ
- PŘESTÁVKA
- Přerušení (přerušení klávesy BREAK)
- K
- Klávesnice (přerušení klávesnice)
- VÁŽENÝ PANE
- pokud je připraven sériový vstup (přerušení čtení ze sériové sběrnice)
- ODN
- pokud jsou požadována výstupní data (přerušení zápisu ze sériové sběrnice)
- XD
- if eXmitend Data (přerušení konce sériového přenosu)
- T1
- Časovač 1, časovač 1 přerušení
- T2
- Časovač 2, časovač 2 přerušení
- T4
- Časovač 4, časovač 4 přerušení
Přerušení lze zapnout nebo vypnout pomocí softwaru pomocí registrace IRQEN. Registr IRQSTAT obsahuje stav přerušení.
Klávesnice
Šest klíčových registrů skutečně tlačených klíčů (K0 K5), které obsahují hodnoty od 00 do 3F. Obsahuje 2 kontrolní hodnoty. Jeden z nich funguje jako dekodér všech 6 hodnot. Druhé kontrolní hodnoty slouží k dekódování speciálních klíčových hodnot - CTRL, SHIFT a BREAK.
Reference
externí odkazy
- ASMA-Atari SAP Music Archive Sbírka přehrávačů POKEY chip-music (SAP) a hudby SAP z různých 8bitových her Atari.
- Datový list POKEY čipu naskenován do PDF .
- POKEY vyrobené z logických čipů malého rozsahu
- Video 8bitového Atari (pomocí POKEY) emulace čipu Commodore SID.