Idioma

Chip Pokey

Es un chip de Entrada y Salida digital que controla la frecuencia de audio y los registros de control, los divisores de frecuencia, los contadores de ruido polifónico, los controladores de potenciómetro (paleta), el generador de números aleatorios, el escaneo del teclado, la E/S del puerto serie y las interrupciones IRQ.


Las ubicaciones AUDF# (frecuencia de audio) se utilizan para el tono de los canales de sonido correspondientes, mientras que los AUDC# (registros de control de audio) son los valores de volumen y distorsión para esos mismos canales. Para aplicar POKE a los valores de sonido, primero debe aplicar POKE a cero en las ubicaciones 53768 ($D208) y a tres en 53775 ($D20F).


Los valores de frecuencia pueden variar de cero a 255 ($FF), aunque el ordenador incrementa el valor en uno para alcanzar un rango de uno a 256. Tenga en cuenta que la suma de los volúmenes no debe superar los 32, ya que el volumen se controla con los cuatro bits mas bajos. Se establece desde cero, que indica que no hay volumen, hasta 15 ($F), que indica el máximo. Un POKE con 16 ($10) fuerza la salida de sonido incluso si el volumen no está configurado (es decir, empuja el cono del altavoz hacia afuera. Se oirá un pequeño "pop"). Los cuatro bits superiores controlan la distorsión: 192 ($C0) corresponde a un tono puro; los demás valores varían de 32 a 192. Tenga en cuenta que en BASIC, la tecla BREAK no desactiva el sonido; RESET, sin embargo, sí. Consulte De Re Atari y BYTE, abril de 1982, para obtener más información sobre la generación de sonido.


Los registros AUDF también se utilizan como temporizadores de hardware POKEY. Generalmente, se utilizan para contar un intervalo menor a un VBLANK. Para intervalos más largos, utilice los temporizadores de software en las ubicaciones 536 a 545 ( $218 a $221). Cargue el registro AUDCTL con el número de la frecuencia de reloj deseada. A continuación, ajuste el volumen a cero en el registro AUDC asociado al registro AUDF que planea usar como temporizador. Cargue el propio registro AUDF con el número de intervalos de reloj que desea contar. A continuación, cargue su rutina de interrupción en memoria y utilice POKE para introducir la dirección en el vector de temporizador apropiado entre las ubicaciones 528 y 533 ($210 y $215). Debe configurar los bits adecuados en IRQEN y su registro de sombra POKMSK en la ubicación 16 ($10) para habilitar la interrupción.


Finalmente, cargue STIMER con cualquier valor para cargar e iniciar el/los temporizador(es). El sistema operativo forzará un salto al vector del temporizador y luego a su rutina cuando el registro AUDF llegue a cero. El procesamiento del temporizador puede ser interrumpido por el DMA de ANTIC, un DLI o el proceso VBLANK.


Los valores POT corresponden a las paletas y van de 0 a 240, aumentando a medida que se gira la perilla de la paleta en sentido antihorario. Sin embargo, los valores inferiores a 40 y superiores a 200 representan un área en cada borde de la pantalla que puede no ser visible en todos los televisores o monitores.


Decimal HexadecimalNombreDescripción
53770$D20A

SKREST



RANDOM

Escritura, Reajustar los BITs 5 al 7 del registro de estado del puerto serie en 53775 ($D20F) a uno.


Lectura, Puedes usar esta ubicación en un programa para generar un entero aleatorio entre 0 y 255. Por ejemplo :
10 PRINT PEEK(53770)

53760$D200

AUDF1
 
 
 
 
 


POT0

Lectura, Frecuencia del canal de audio uno. Este es un número (N) utilizado en un circuito de división por N; por cada N pulsos de entrada (según lo establecido por el reloj POKEY), sale un pulso. A medida que N aumenta, los pulsos de salida disminuyen y, por lo tanto, el sonido producido será una nota más grave. N puede estar en el rango de 1 a 256; POKEY suma uno al valor del registro AUDF. Consulte BYTE, abril de 1982, para obtener un programa que crea acordes en lugar de tonos individuales.


Escritura, Potenciómetro (paleta) 0 (624); potenciómetro es la abreviatura de potenciómetro. Al girar la perilla de la paleta en el sentido de las agujas del reloj, se reducen los valores del potenciómetro. Para uso en lenguaje máquina: estos valores potenciómetros son válidos solo 228 líneas de escaneo después del comando POTGO o después de que ALLPOT cambie (véase 53768; $D208 y 53771; $D20B). Los registros POT cuentan continuamente hasta cero, decrementando cada línea de escaneo. Se restablecen a 228 cuando llegan a cero o con los valores leídos de los registros sombra. Esto los hace útiles como temporizadores del sistema. Véase COMPUTE!, febrero de 1982, para un ejemplo de este uso.
La secuencia POTGO (véase 53771; $D20B) restablece los registros POT a cero y los lee 228 líneas de escaneo después. Para el escaneo rápido del potenciómetro, se debe establecer el bit 2 de SKCTL en 53775 ($D20F).