CP1600
# CP1600

El CP1600 es un microprocesador nmos de 16 bits, fabricado por General Instrument y utilizado en su miniordenador GIMINI. Existe una versión más lenta, el CP1610, utilizado por Mattel en su consola de videojuegos Intellivision. El CP1600 necesita un reloj de dos fases, no compatible con TTL. Se alimenta a tres tensiones: Vdd: 12V (11V en el CP1610), Vcc: 5V y Vss: -3V (-2'2 en el CP1610).

## Arquitectura

### Registros

Dispone de un array de 8 registros de 16 bits, además de un registro de estado de cuatro bits: S Z OV C

R7 es el contador de programa

R6 es el puntero de la pila

R5 y R4 sirven para direccionamiento indirecto y se llaman Data counters

R3 a R0 son de propósito general.

### Memoria

Direcciona directamente 64K palabras a través de un bus de 16 hilos, dando un espacio de memoria total de 128K bytes, uno de los más amplios de su tiempo. Las instrucciones solo emplean 10 bits, siendo irrelevantes los seis más significativos. Esto tiene su explicación en el precio de las memorias: en lugar de poner 4 ROM de cuatro bits, basta con poner tres. General Instrument menciona otra ventaja: como hay seis bits irrelevantes, éstos los puede utilizar el usuario para codificar instrucciones a los periféricos. La desventaja, para la propia GI es que las ROM's para el CP1600 son exclusivamente para el CP1600, es decir no es un circuito de propósito general. Permite la comunicación con periféricos a través de solo ocho hilos.

### Interrupciones

Dispone de una entrada de interrupción enmascarable y no enmascarable. "MoVe Out" y "PuSH Register" son instrucciones no interrumpibles.

## Instrucciones

Dispone de un juego completo de instrucciones, pero carece de multiplicación y división. Utilizando los Data counters puede realizar direccionamientos "autoincrementados", por ejemplo, para gestión de pilas. Los desplazamientos se pueden realizar en uno o dos bits, si bien el acarreo solo mantiene el último bit. Para el acceso a periféricos existe un prefijo que le obliga a separar los 16 bits en dos accesos de ocho. Como las instrucciones se codifican en 10 bits, la instrucción de salto ocupa tres palabras, para acomodar la dirección de 16 bits.

Dispone de 16 condiciones externas para saltos.

## Periféricos

General Instrument fabricó diversos periféricos de uso general:

* Interface paralelo
* Converdor D/A
* Interfaz serie: toda una familia de UART de propósito general

Y para la que fue su aplicación más común, videojuegos, ofrecía:

* PSG, Generadores de sonido programable: AY-3-8910, AY-3-8912, AY-3-8913, AY-3-8915
* STIC, Standard Television IC, Para generar las señales de televisión NTSC y PAL.
* Sintetizadores de voz: SP0256
* Datos: Q663715
