WP:COPYARTICLE, old copy of POKEY which this user had just edited, except for the following draft additions:


W I P


Pinout edit

File:20121213180247!Atari POKEY.svg
Atari POKEY (CO12294) pin-out


Audio Channel Frequency edit

The AUDF* registers control the frequency or pitch of the corresponding sound channels. The AUDF* values also control the POKEY hardware timers useful for code that must run in precise intervals more frequent than the vertical blank.

AUDF1 $D200 Write edit

Audio Channel 1 Frequency

AUDF1 $D202 Write edit

Audio Channel 2 Frequency

AUDF1 $D204 Write edit

Audio Channel 3 Frequency

AUDF1 $D206 Write edit

Audio Channel 4 Frequency

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

Each AUDF* register is an 8-bit value providing a countdown timer or divisor for the pulses from the POKEY clock. The values $0hex/0dec to $FFhex/255dec are incremented by POKEY to range from $1hex/1dec to $100hex/256dec. So, smaller values permit more frequent output of pulses from POKEY, and larger values, less frequent. The actual audible sound pitch is dependent on the POKEY clock frequency and distortion values chosen. See Audio Channel Control and Audio Control.

Audio Channel Control edit

AUDF1 $D201 Write edit

Audio Channel 1 Control

AUDF1 $D203 Write edit

Audio Channel 2 Control

AUDF1 $D205 Write edit

Audio Channel 3 Control

AUDF1 $D207 Write edit

Audio Channel 4 Control

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Noise2 Noise1 Noise0 FVol Vol3 Vol2 Vol1 Vol0

Bit 0-3: Control over volume level, from 0 to F.

Bit 4: Forced volume-only output. When this bit is set the channel ignores the AUDF timer, noise/distortion controls, and high-pass filter. Sound it produced only by setting volume bits 0:3.

Bit 5-7: Shift register responsible for noises/distortion. Bit values described below:

Noise Value Bits Value Description
0 0 0 $00 5-bit then 17-bit polynomials
0 0 1 $20 5-bit poly only
0 1 0 $40 5-bit then 4-bit polys
0 1 1 $60 5-bit poly only
1 0 0 $80 17-bit poly only
1 0 1 $A0 no poly (pure tone)
1 1 0 $C0 4-bit poly only
1 1 1 $E0 no poly (pure tone)

Generating random noises is served by reading 8 bits from top of 17-bit shift register. That registers are driven by frequency 1.79 MHz for NTSC or 1.77 MHz for PAL. Its outputs can by probed independently by four audio channels in channel's divider's rate.

AUDCTL $D208 Write edit

Audio Control

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
17vs9Poly CH1-1.79 CH3-1.79 CH2+1 CH4+3 FI1+3 FI2+4 64vs15Khz