- Atari POKEY
-
Atari POKEY
El sonido en los microcomputadores Atari de 8 bits era controlado por POKEY que se encargaba también de leer el teclado, generar números aleatorios y leer el puerto serial de comunicaciones {en inglés:Serial I/O o SIO}. Manejaba cuatro canales de 8 bits con 256 tonos y 16 niveles de volumen. Se le podía aplicar una 'distorsión' de 15 niveles. Controlable por la orden SOUND del BASIC. Los 4 canales podían combinarse por parejas obteniendo 2 canales de 16 bits con 65536 tonos. Los computadores Atari poseían un altavoz interno, a través de él se simulaban los clics de teclado, pero con una programación adecuada podía usarse como un quinto canal de sonido.
Contenido
Descripción
El Atari POKEY es un circuito integrado digital de E/S (Entrada/Salida) {en inglés: I/O Input/Output} que se encuentra en la familia de microcomputadores Atari de 8 bits y en muchos juegos de arcade (máquinas recreativas o flippers) de los años 1980. Su nombre se deriva de POtentiometer (potenciómetro o resistencia variable) y KEYboard (teclado), ya que se usaba comúnmente para "leer" las señales capturadas desde potenciómetros (como las "paletas" de juego {en inglés: game paddles}), haciendo una conversión analógico-digital. También procesaba "arreglos o matrices de interruptores" (como los teclados de computadora). POKEY fue conocido por su capacidad para generar música y efectos de sonido, produciendo un característico sonido de onda cuadrada {en inglés: square wave} popular entre los aficionados a la micromúsica {chiptunes}. El circuito integrado a gran escala {en inglés: LSI, Large Scale Integration} tenía 40 patitas {del inglés:pins} y se identifica con el código C012294.
La Oficina de Patentes y Marcas de EE.UU. (USPTO) otorgó a Atari la patente Nº 4.314.236 el 2 de febrero 2 de 1982 por un "Aparato para producir una variedad de audio y efectos de sonido"[1] , destacando solamente la sección de audio del circuito. Los inventores mencionados en la patente fueron Steven T. Mayer y Ronald E. Milner.
El POKEY ya no se fabrica, pero es emulado en software por los emuladores de Atari de 8 bits y los emuladores de consolas clásicas de arcade (por ejemplo MAME).
- Audio
- 4 canales de audio semi-independientes
- Los canales pueden tener una de las siguientes configuraciones:
- Cuatro canales de 8 bits
- Dos canales de 16 bits
- Un canal de 16 bits y dos canales de 8 bits
- Cada canal manejaba atributos de volumen, frecuencia, y forma de onda (onda cuadrada con "ciclo de actividad variable" {en inglés duty cycle} o ruido polinómico {polynomial noise} - es decir con variaciones aleatorias de la duración del pulso de la onda cuadrada[2] .)
- Filtro de paso alto
- Lectura del teclado (hasta 64 teclas)
- Puertos de potenciómetro (8 puertos independientes, cada uno con 8 bits de resolución)
- Temporizadores {en inglés: timers} (los canales de audio 1, 2, y 4 pueden configurarse para producir una interrupción de temporización cuando llegan a cero)
- Generador de números aleatorios (puede leer 8 o 9 bits de un contador polinómico de 17 bits)
- Puerto serial de comunicaciones Serial I/O
- Petición de Interrupción IRQ
Música POKEY
El diseño de POKEY posibilitó que los juegos tuvieran música polifónica y efectos de sonido de hasta cuatro canales. Uno de los sistemas de manejo de sonido desarrollados para la familia de Atari de 8 bits se llamó AMP engine {Advanced Music Processor} (en castellano: dispositivo AMP)
Hoy en día es posible emular por software las capacidades de sonido de POKEY usando el programa reproductor SAP player.
Generación de sonido con POKEY
POKEY poseía 4 canales de audio, con controles separados de frecuencia, ruido y volumen.
Cada canal tenía un divisor de frecuencia de 8 bits y un registro de 8 bits para seleccionar ruido y volumen.
AUDF1 a AUDF4 – (AUDio Frequency) registro de frecuencia
AUDC1 a AUDC4 – (AUDio Control) registro de volumen y ruido
AUDCTL – (AUDio ConTroL) registro general, que controla los generadores.Descripción de los registros AUDIOC1-4
Bit
0-3 - Control del volumen, desde 0 hasta F (hexadecimal).
4 - Control del divisor de frecuencia "1" encendido {on}, "0" apagado {off}.
Cuando el divisor de frecuencia está desactivado, se generan sonidos constantes con el volumen escrito en los bits 0-3.
5-7 – registro de desplazamiento responsable de los ruidos - distorsión:000 = registro de 5 y 17 bits 001 = registro de 5 bits 010 = registro de 5 y 4 bits 011 = registro de 5 bits - duplicado, no se usa 100 = registro de 17 bits 101 = sin registro de desplazamiento - tonos puros 110 = registro de 4 bits 111 = sin registro de desplazamiento - duplicado, no se usa
La generación de ruidos al azar se logra leyendo 8 bits desde el extremo superior del registro de desplazamiento de 17 bits. Esos registros son controlados por la frecuencia de 1,79 MHz para NTSC o 1,77 MHz para PAL. Su salida puede ser medida independientemente por cuatro canales de audio en la frecuencia divisora de los canales {en inglés: channel's divider's rate}.
Descripción del registro AUDIOCTL
Si no se especifica, „1” significa "activado" {"on"}:
Bit 0 – (15 kHz), permite seleccionar la frecuencia divisora „0” - 64 kHz, „1” - 15 kHz 1
Bit 1 – (FI2+4), filtro de paso alto para el canal 2, modulado por la frecuencia del canal 4,
Bit 2 – (FI1+3), filtro de paso alto para el canal 1, modulado por la frecuencia del canal 3,
Bit 3 – (CH4+3), combinación de los divisores 4+3 para lograr 16 bits de precisión,
Bit 4 – (CH2+1), conexión de divisores 2+1 para conseguir una exactitud de 16 bits,
Bit 5 – (1,79CH3), determina la frecuencia del canal 3 „0” - 1,77 MHz PAL, „1” - 1,79 MHz NTSC
Bit 6 – (1,79CH1), establece la frecuencia para el canal 1 „0” - 1,77 MHz PAL, „1” - 1,79 MHz NTSC
Bit 7 – (POLY9), conmuta el registro de despalzamiento entre „0” - 17 bits, y „1” – 9 bitsTodos los divisores de frecuencia (AUDIOF), pueden ser controlados al mismo tiempo por 64 kHz o 15 kHz de frecuencia.
Los divisores de frecuencia 1 y 4 pueden ser controlados alternativamente por el reloj de la CPU (1,79 MHz NTSC, 1,77 MHz PAL).
Los divisores de frecuencia 2 y 4 pueden ser controlados alternativamente por la salida de los divisores 1 y 3.
De esta manera, POKEY hace posible la conexión de canales de 8 bits para crear sonidos con 16 bits de precisión.
Configuraciones de canales posibles: - cuatro canales de 8 bits - dos canales de 8 bits y un canal de 16 bits - dos canales de 16 bits
Información adicional
Toda operación de entrada/salida reemplaza los valores de los registros de desplazamiento {shift registers} con el contenido de los controles del generador, por lo tanto, cuando cada vez que se usa POKEY para generar sonido, debe ser reinicializado.
Puerto Serial de entrada y salida
Contiene:
- línea de entrada serial
- línea de salida serial
- línea de salida de reloj serial
- línea de datos de reloj serial de dos vías
- registros SKRES, SEROUT, SERIN, SKCTL, SKSTATPOKEY es un tipo de UART. Generalmente se usa uno de los canales de audio duplicados como generador de baudrate (velocidad o frecuencia de transmisión en baudios). El baudrate estándar es 19,2 kbit/s, el baudrate máximo posible es 127 kbit/s. Un byte puesto en el registro SEROUT se envía automáticamente a través del bus serial. La estructura de datos {data frame} contiene 10 bits: 1 bit de arranque, 8 bits de datos, 1 bit de detención. Los niveles de voltaje son 0V (0 lógico) y +4V (1 lógico). Así se puede conectar el puerto serial de Atari con un puerto RS-232 mediante un simple convertidor de voltaje.
Ocho peticiones de interrupción IRQ
BREAK - Break (interrupción de la tecla BREAK)
K - Keboard (interrupción de teclado)
SIR - if Serial Input Ready (si la entrada serial está lista) entonces (leer la interrupción del bus serial)
ODN - if Output Data Needed (si se requiere datos de salida) entonces (escribir una interrupción desde el bus serial)
XD - eXmitend Data (interrupción de fin de transmisión serial)
T1 - Timer 1, interrupción del temporizador 1
T2 - Timer 2, interrupción del temporizador 2
T4 - Timer 4, interrupción del temporizador 4
Las interrupciones pueden ser activadas (on) o desactivadas (off) por software a través del registro IRQEN.
El registro IRQSTAT contiene el estado de las interrupciones.Teclado
POKEY tiene un registro de las seis últimas teclas presionadas (K0 ... K5), los cuales contienen valores entre 00 y 3F (hexadecimal). Se almacenan 2 valores de control. Uno de ellos actúa como decodificador de los 6 valores. El segundo dato de control se usa para decodificar los valores de las teclas especiales - CTRL, SHIFT y BREAK.
Potenciómetros
POKEY tiene ocho puertos para medir el incremento de la señal de entrada {increase of input}. Cada puerto tiene un temporizador de 8 bits, que calcula el tiempo durante el despliegue de cada línea de TV. Cada entrada tiene un transistor de caída de voltaje variable {variable voltaje drop transistor}, que puede ser activado o desactivado por software.
POKEY además ofrece
- Tres temporizadores, que usan el canal de audio. Cuando se usa el temporizador, los canales de audio se reinicializan.
- Generador de números aleatorios.
Tabla de registros de POKEY
16 registros de POKEY - $D200–$D20F Registro Escritura Lectura Nombre Descripción Nombre Descripción $D200 AUDF1 frecuencia del canal 1 POT0 potenciómetro 0 $D201 AUDC1 generador en el canal 1 POT1 potenciómetro 1 $D202 AUDF2 frecuencia del canal 2 POT2 potenciómetro 2 $D203 AUDC2 generador en el canal 2 POT3 potenciómetro 3 $D204 AUDF3 frecuencia en del canal 3 POT4 potenciómetro 4 $D205 AUDC3 generador en el canal 3 POT5 potenciómetro 5 $D206 AUDF4 frecuencia en el canal 4 POT6 potenciómetro 6 $D207 AUDC4 generador en el canal 4 POT7 potenciómetro 7 $D208 AUDCTL control sobre los canales de audio POTSTAT lectura de las líneas de puerto de los 8 potenciómetros $D209 STIMER lanzamiento (inicio) del temporizador KBCODE código de la última tecla presionada $D20A SKRES reinicialización del status del puerto serial RANDOM valor del generador de números aleatorios $D20B POTGO inicio de la secuencia de exploración de puertos $D20C $D20D SEROUT registro de salida del puerto serial SERIN registro de entrada del puerto serial $D20E IRQEN activación de la interrupción IRQ IRQSTAT estado de las peticiones de interrupción IRQ $D20F SKCTL control sobre el puerto serial SKSTAT status del puerto serial Véase también
- TIA (CTIA y GTIA) de Atari de 8 bits.
- ANTIC
- Chip de sonido
- Chiptune
- Dispositivo AMP
- MOS Technology SID
- General Instruments AY-3-8912 (en inglés).
- Formato de música SAP de Atari
Referencias
- ↑ Atari, Inc. (1979-01-24). «Apparatus for producing a plurality of audio sound effects». United States Patent. Consultado el 5 de Enero de 2008.
- ↑ Bob DuHamel (1987). «Atari System Reference Manual - chap.17 Sound». Atari Inc.. Consultado el 7 de enero de 2009.
Enlaces externos
- ASMA — Atari SAP Music Archive Es una colección de música para el chip POKEY. Tiene reproductores (SAP) y música SAP de varios juegos Atari de 8 bits.
- ASAP — Another Slight Atari Player Una extensión para reproducir música SAP Atari en XMPlay, foobar2000, Winamp, XMMS, y otros.
Categorías: Primeros microcomputadores | Atari | Circuitos integrados - Audio
Wikimedia foundation. 2010.