Atari POKEY

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. 1983, y es lo que se supone que debería haber sido la 5200, un sistema retrocompatible con la consola Atari 2600, con un chip gráfico mejorado. En todos los aspectos se supone que es la mejor máquina de las consolas de la serie mil de Atari, pero no lo es de las consolas de Atari de 8 bits, ya que se sitúa por detrás de la XEGS, ya que esta es un ordenador hecho consola y la 7800 es una mejora de la 2600, de manera que el chip de sonido de la 5200 y la XEGS es el POKEY (incluido en la serie 8 bits), es superior al de la 7800, que lo que lleva es una mejora del chip de la del 2600, creando también sonidos en varios canales 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 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 PMA {Procesador Musical Avanzado})

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 estatus 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 estatus del puerto serial

Véase también

[editar]

Referencias

[editar]
  1. Atari, Inc. (24 de enero de 1979). «Apparatus for producing a plurality of audio sound effects». United States Patent. Archivado desde el original el 3 de junio de 2015. Consultado el 5 de enero de 2008. 
  2. Bob DuHamel (1987). «Atari System Reference Manual - chap.17 Sound». Atari Inc. Archivado desde el original el 23 de mayo de 2008. Consultado el 7 de enero de 2009. 

Enlaces externos

[editar]