MOS Technology VIC
# MOS Technology VIC

El VIC (Video Interface Chip) (Chip de Interfaz de Video), específicamente conocido como el MOS Technology 6560 (versión NTSC)/6561 ( PAL), es el circuito integrado responsable de generar gráficos de video y sonido en la computadora doméstica Commodore VIC-20. Originalmente fue diseñado para aplicaciones tales como terminales CRT de bajo costo, monitores biomédicos, pantallas de sistemas de control y arcades o consolas de videojuegos.

El chip fue diseñado por Al Charpentier en 1977, pero Commodore no pudo encontrar un mercado para el chip. En 1979, MOS Technology comenzó a trabajar en un chip de video llamado MOS Technology 6564 destinado a la computadora TOI y también había trabajado en otro chip, el MOS 6562, destinado a una versión en color del Commodore PET. Ambos chips fallaron debido a limitaciones de tiempo de memoria (ambos requerían una memoria SRAM muy rápida y, por lo tanto, costosa, lo que los hacía inadecuados para la producción en masa). Antes de comenzar finalmente a usar el VIC en el VIC-20, el diseñador de chips Robert Yannes introdujo características del 6562 (un mejor generador de sonido) y del 6564 (más colores) al 6560, así que antes de que el VIC-20 entrara a producirse en masa, había sido revisado a fondo.

## Características

Sus características incluyen:

* Espacio de direcciones de 16 kB para la pantalla, los caracteres y la memoria de color (solo 5 kB apunta a la RAM en el VIC-20 sin una modificación de hardware)
* 16 colores (los 8 superiores solo se pueden usar en el fondo global y colores auxiliares)
* Dos tamaños de caracteres seleccionables (8 × 8 u 8 × 16 bits; el ancho de píxel es 1 bit para caracteres «alta definición» y 2 bits para caracteres «multicolores»)
* La resolución máxima de video depende del sistema de televisión (176 × 184 es el estándar para el firmware VIC-20, aunque es posible hasta 248 × 232p/464i en la máquina NTSC y hasta 256×280 en la máquina PAL)
* sistema de sonido de 4 canales (3 ondas cuadradas + ruido «blanco» + ajuste de volumen global)
* DMA en chip
* Dos conversores analógico/digital de 8 bits
* Soporte de lápiz óptico

A diferencia de muchos otros circuitos de video de la época, no ofrece capacidad de refresco de RAM dinámica. Por lo tanto, el VIC-20 empleó los chips de RAM estática (SRAM) más costosos. Esta es probablemente la razón por la que la máquina se vendió con solo 5 KB de RAM. Las expansiones de memoria para el VIC-20 también usaron SRAM o implementaron su propio circuito de refresco.

El VIC fue programado manipulando sus 16 registros de control, memoria asignada al rango de dirección de memoria $9000-$900F en el espacio de direcciones del VIC-20. Los convertidores A/D en chip se utilizaron para lecturas de posición dual paddle por el VIC-20, que también utilizó la función lápiz óptico del VIC. El VIC precedió al mucho más avanzado VIC-II, utilizado por los sucesores del VIC-20, el C64 y C128.

Las VIC-20 con expansión de RAM tienen su memoria de video (550 bytes) a $1000 y cuando no está presente, $1E00. Los juego de caracteres definidos por el usuario deben colocarse dentro de los primeros 5kB de la RAM del sistema. La ROM de caracteres PETSCII está en forma predeterminada en $8000 y cada carácter necesita 8 bytes para almacenarse. Se pueden utilizar hasta 128 caracteres a la vez. Si bien el PET tenía una barra invertida (\) en su conjunto de caracteres, esto fue reemplazado en el VIC-20 (y todas las máquinas Commodore posteriores) con un signo de libra esterlina (£).

Los caracteres programables son la única forma de crear gráficos y animaciones en el VIC, ya que el chip no tiene sprites o un modo de mapa de bits direccionable para todos los puntos. De los 16 colores en la paleta, ocho se pueden usar para el primer plano (por la RAM de color en $9400) y el borde, mientras que los otros se limitan al fondo y los multicolores auxiliares. El MSB de la RAM de color es una bandera que se utiliza para indicar si ese carácter es multicolor o de alta resolución. Debido al bloqueo extremo del primero, la mayoría de los juegos VIC-20 utilizan personajes de alta resolución.

El VIC no admite el desplazamiento o las interrupciones de trama como en el VIC-II, pero los contadores de la línea de exploración se pueden sondear para un punto específico en la pantalla para producir efectos de trama. Esta característica rara vez se usaba en juegos, excepto en algunos títulos como Demon Attack de Imagic.

La programación de sonido en el VIC se realiza colocando un valor de frecuencia en uno de los cuatro registros en $900A-$900D (se apagan escribiéndoles un cero). Los tres primeros son generadores de ondas cuadradas con un tono de media octava entre sí y el cuarto es para ruido blanco.

## Registros

El VIC tiene 16 registros de lectura/escritura que se enumeran a continuación:

| Registro | Hexadecimal | Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 |
| - | - | - | - | - | - | - | - | - | - |
| 0 | 9000 | Entrelazado | Origen horizontal | Origen horizontal | Origen horizontal | Origen horizontal | Origen horizontal | Origen horizontal | Origen horizontal |
| 1 | 9001 | Origen vertical | Origen vertical | Origen vertical | Origen vertical | Origen vertical | Origen vertical | Origen vertical | Origen vertical |
| 2 | 9002 | VA9 | Número de columnas | Número de columnas | Número de columnas | Número de columnas | Número de columnas | Número de columnas | Número de columnas |
| 3 | 9003 | R0 | Número de filas | Número de filas | Número de filas | Número de filas | Número de filas | Número de filas | 8/16 |
| 4 | 9004 | Línea de trama (bits 8-1) | Línea de trama (bits 8-1) | Línea de trama (bits 8-1) | Línea de trama (bits 8-1) | Línea de trama (bits 8-1) | Línea de trama (bits 8-1) | Línea de trama (bits 8-1) | Línea de trama (bits 8-1) |
| 5 | 9005 | Direcc. de video (bits 13-10) | Direcc. de video (bits 13-10) | Direcc. de video (bits 13-10) | Direcc. de video (bits 13-10) | Direcc. de caract. (bits 13-10) | Direcc. de caract. (bits 13-10) | Direcc. de caract. (bits 13-10) | Direcc. de caract. (bits 13-10) |
| 6 | 9006 | Lápiz óptico horizontal | Lápiz óptico horizontal | Lápiz óptico horizontal | Lápiz óptico horizontal | Lápiz óptico horizontal | Lápiz óptico horizontal | Lápiz óptico horizontal | 1 |
| 7 | 9007 | Lápiz óptico vertical | Lápiz óptico vertical | Lápiz óptico vertical | Lápiz óptico vertical | Lápiz óptico vertical | Lápiz óptico vertical | Lápiz óptico vertical | Lápiz óptico vertical |
| 8 | 9008 | Paddle X | Paddle X | Paddle X | Paddle X | Paddle X | Paddle X | Paddle X | Paddle X |
| 9 | 9009 | Paddle Y | Paddle Y | Paddle Y | Paddle Y | Paddle Y | Paddle Y | Paddle Y | Paddle Y |
| 10 | 900A | activado | Frecuencia oscilador 1 | Frecuencia oscilador 1 | Frecuencia oscilador 1 | Frecuencia oscilador 1 | Frecuencia oscilador 1 | Frecuencia oscilador 1 | Frecuencia oscilador 1 |
| 11 | 900B | activado | Frecuencia oscilador 2 | Frecuencia oscilador 2 | Frecuencia oscilador 2 | Frecuencia oscilador 2 | Frecuencia oscilador 2 | Frecuencia oscilador 2 | Frecuencia oscilador 2 |
| 12 | 900C | activado | Frecuencia oscilador 3 | Frecuencia oscilador 3 | Frecuencia oscilador 3 | Frecuencia oscilador 3 | Frecuencia oscilador 3 | Frecuencia oscilador 3 | Frecuencia oscilador 3 |
| 13 | 900D | activado | Frecuencia ruido blanco | Frecuencia ruido blanco | Frecuencia ruido blanco | Frecuencia ruido blanco | Frecuencia ruido blanco | Frecuencia ruido blanco | Frecuencia ruido blanco |
| 14 | 900E | Color aux | Color aux | Color aux | Color aux | Volumen | Volumen | Volumen | Volumen |
| 15 | 900F | Fondo | Fondo | Fondo | Fondo | RV | Borde | Borde | Borde |

## Paleta de colores

La paleta completa de dieciséis colores es:

| Number — name | Y | Pb (rel.) | Pr (rel.) |
| - | - | - | - |
| 0 — negro | 0 | 0 | 0 |
| 1 — blanco | 1 | 0 | 0 |
| 2 — rojo | 0,25 | −0,3826834 | 0,9238795 |
| 3 — cyan | 0,75 | 0,3826834 | −0,9238795 |
| 4 — púrpura | 0,5 | 0,7071068 | 0,7071068 |
| 5 — verde | 0,5 | −0,7071068 | −0,7071068 |
| 6 — azul | 0,25 | 1 | 0 |
| 7 — amarillo | 0,75 | −1 | 0 |
| 8 — naranja | 0,5 | −0,7071068 | 0,7071068 |
| 9 — naranja claro | 0,75 | −0,7071068 | 0,7071068 |
| 10 — rojo claro | 0,5 | −0,3826834 | 0,9238795 |
| 11 — cyan claro | 1 | 0,3826834 | −0,9238795 |
| 12 — púrpura claro | 0,75 | 0,7071068 | 0,7071068 |
| 13 — verde claro | 0,75 | −0,7071068 | −0,7071068 |
| 14 — azul claro | 0,5 | 1 | 0 |
| 15 — amarillo claro | 1 | −1 | 0 |

## Lista de los CI VIC

* MOS Technology 6560 NTSC
* MOS Technology 6561E PAL Versión de cerámica, utilizada en los primeros VIC-20
* MOS Technology 6561-101 PAL
