Atari POKEY

De Wikipedia, la enciclopedia libre
Saltar a: navegación, búsqueda
Atari POKEY en un Atari 130XE

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.

Descripción[editar]

Atari POKEY (C012294)

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).

Música POKEY[editar]

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[editar]

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[editar]

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-7registro 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[editar]

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 bits

Todos 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[editar]

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[editar]

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, SKSTAT

POKEY 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[editar]

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.

en tods loi puerto de PUR DE PATOS

Teclado[editar]

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[editar]

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[editar]

  • 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[editar]

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[editar]

Referencias[editar]

  1. Atari, Inc. (24-01-1979). «Apparatus for producing a plurality of audio sound effects». United States Patent. Consultado el 5 de Enero  de 2008.
  2. Bob DuHamel (1987). «Atari System Reference Manual - chap.17 Sound». Atari Inc.. Consultado el 7 de enero  de 2009.

Enlaces externos[editar]