- POKEY
POKEY is a digital I/O
chip found in theAtari 8-bit family of home computers and manyarcade game s in the 1980s. Its name comes from POtentiometer and KEYboard, as it was commonly used to sample (ADC)potentiometer s (such as game paddles) and scan matrices of switches (such as a computer keyboard). POKEY is also well known for its sound effect and music generation capabilities, producing a distinctivesquare wave sound popular amongchip tune aficionados. The LSI chip has 40 pins and is identified as C012294. POKEY was designed by Atari employee Doug Neubauercite web | url=http://www.dadgum.com/halcyon/BOOK/NEUBAUER.HTM | title=Interview with Doug Neubauer | author=James Hague | work =Halcyon Days | date=2002-06-01 | accessdate=January 14 | accessyear=2008 ] , who also programmed the originalStar Raiders .The
USPTO granted U.S. Patent 4,314,236 to Atari on February 2, 1982 for an "Apparatus for producing a plurality of audio sound effects".cite web | url=http://patft.uspto.gov/netacgi/nph-Parser?patentnumber=4314236 | title=Apparatus for producing a plurality of audio sound effects | date=1979-01-24 | author = Atari, Inc. | work=United States Patent | accessdate=January 14 | accessyear=2008] This referred to POKEY's sound generation abilities. The inventors listed wereSteven T. Mayer andRonald E. Milner .No longer manufactured, POKEY is emulated in software by classic arcade emulators (e.g.
MAME ) and Atari 8-bit emulators.Features
* Audio
** 4 semi-independent audio channels
** Channels may be configured as one of:
*** Four 8-bit channels
*** Two 16-bit channels
*** One 16-bit channel and two 8-bit channels
** Per-channelvolume ,frequency , andwaveform (square wave with variableduty cycle orpolynomial noise)
**High-pass filter
* Keyboard scan (up to 64 keys)
*Potentiometer ports (8 independent ports, each with 8-bit resolution)
* Timers (audio channels 1, 2, and 4 can be configured to cause timer interrupts when they cross zero)
*Random number generator (8 or 9 bits of a 17-bit polynomial counter can be read)
* SerialI/O port
*IRQ interruptsPOKEY music
The design of the POKEY made it possible for games to have polyphonic music and
sound effect s of up to four channels. One of the sound-engines developed for the Atari 8-bit family was called theAMP engine (Advanced Music Processor). This was used by the musicianGary Gilbertson .It is now possible to emulate the POKEY's sound capabilities in software. This can be done with the SAP player [http://asma.atari.org/] .
Generating sound with POKEY
Pokey contains four audio channel, with separate frequency, noise and voice level control.
Each channel has 8-bit frequency divider and 8-bit register to select noise and volume.AUDIOF1 to AUDIOF4 – frequency register (AUDio Frequency)
AUDC1 do AUDC4 – volume and noise register (AUDio Control)
AUDCTL – general register, which controls generators (AUDio ConTroL)AUDIOC1-4 registers description
Bit0-3 - Control over volume level, from 0 to F.
4 - Frequency divider control "1" on, "0" off. When frequency dividier is set to off, constant sounds with volume wrote in bits 0-3 are being generated.
5-7 – Shift register responsible for noises - distortion:000 = 5- and 17-bit register 001 = 5-bit register 010 = 5- and 4-bit register 011 = 5-bit register - doubled, non-used 100 = 17-bit register 101 = without shift register - pure tones 110 = 4-bit register 111 = without shift register - doubled, non-used
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.
AUDIOCTL register description
„1” means "on", if not descripted:
Bit 0 – (15 kHz), choice of frequency divider rate „0” - 64 kHz, „1” - 15 kHz 1
Bit 1 – (FI2+4), high-pass filter for channel 2 rated by frequency of channel 4,
Bit 2 – (FI1+3), high-pass filter for channel 1 rated by frequency of channel 3,
Bit 3 – (CH4+3), connection of dividers 4+3 to obtain 16-bit accuracy,
Bit 4 – (CH2+1), connection of dividers 2+1 to obtain 16-bit accuracy,
Bit 5 – (1,79CH3), set channel 3 frequency „0” - 1,77 MHz PAL, „1” - 1,79 MHz NTSC
Bit 6 – (1,79CH1), set channel 1 frequency „0” - 1,77 MHz PAL, „1” - 1,79 MHz NTSC
Bit 7 – (POLY9), switch shift register „0” - 17-bit, „1” – 9bitAll frequency dividers (AUDIOF) can be at the same time driven by 64 kHz or 15 kHz rate.
Frequency dividers 1 and 4 can be alternately driven by CPU clock (1,79 MHz NTSC, 1,77 MHz PAL).Frequency dividers 2 and 4 can be alternately driven by output of dividers 1 and 3.In this way, Pokey makes possible connecting of 8-bit channels to create sound with 16-bit accuracy.
Possible channel configurations:- four 8-bit channels- two 8-bit channels and one 16-bit channel- two 16-bit channels
Additional information
Each operation of input output caues value change of shift registers with controls generator, so when we use Pokey to generate sound, after each operation its reinitialisation is needed.
erial input output port
Contains:
- serial input line
- serial output line
- serial clock output line
- two-way serial clock data line
- registers SKRES, SEROUT, SERIN, SKCTL, SKSTATPOKEY is a sort of
UART . Usually one of the doubled audio channels is used as baudrate generator. The standard baudrate is 19,2 kbit/s, the maximum possible baudrate is 127 kbit/s. A byte put into the SEROUT register is automatically sent over the serial bus. The data frame contains 10 bits: 1 start bit, 8 data bits, 1 stop bit. The voltage levels are 0V (logical 0) and +4V (logical 1). It is possible to connect the Atari serial port with an RS-232 port by means of a simple voltage converter.Eight IRQ interrupts
BREAK - Break (BREAK key interrupt)
K - Keyboard (keyboard interrupt)
SIR - if Serial Input Ready (read interrupt from serial rail)
ODN - if Output Data Needed (write interrupt from serial rail)
XD - if eXmitend Data (serial transmission end interrupt)
T1 - Timer 1, timer 1 interrupt
T2 - Timer 2, timer 2 interrupt
T4 - Timer 4, timer 4 interrupt
Interrupts can be set on or off from software by register IRQEN.
IRQSTAT register contains interrupts status.Keyboard
Six key register of actually pushed keys (K0 K5), which contains values from 00 to 3F. Contains 2 control values. One of them acts as decoder of all 6 values. Second control values is used to decode special key values - CTRL, SHIFT and BREAK.
Potentiometers
Eight ports to measurement increase of input. Each input has 8-bit timer, counting time when each TV line is being displayed. Each input has drop transistor, which can be set on or off from software.
Additionally pokey offers
* Three timers, which uses audio channel. When timer is being used, audio channels are reset.
* Random number generator.POKEY register table
ee also
*
Atari 8-bit TIA (CTIA and GTIA)
*ANTIC
*Sound chip
*Chiptune
*AMP engine
*MOS Technology SID
*General Instruments AY-3-8912
*Atari SAP music format References
External links
* [http://asma.atari.org/ ASMA — Atari SAP Music Archive] A collection of POKEY chip-music (SAP) players and SAP music from various Atari 8-bit games.
* [http://asap.sourceforge.net/ ASAP - Another Slight Atari Player] An Atari module player/plugin forfoobar2000 ,Winamp ,XMMS , and more.
Wikimedia Foundation. 2010.