El microprocesador 8008

Por Dario Alejandro Alpern

Historia del 8008

En 1969 Computer Terminal Corp. (ahora Datapoint) visitó Intel. Vic Poor, vicepresidente de Investigación y Desarrollo en CTC quería integrar la CPU (unos cien componentes TTL) de su nueva terminal Datapoint 2200 en unos pocos chips y reducir el costo y el tamaño del circuito electrónico.

Ted Hoff observó la arquitectura, el conjunto de instrucciones y el diseño lógico que había presentado CTC y estimó que Intel podría integrarlo en un sólo chip, así que Intel y CTC firmaron un contrato para desarrollar el chip. El chip, internamente llamado 1201, sería un dispositivo de 8 bits. Pensado para la aplicación de terminal inteligente, debería ser más complejo que el 4004.

Al principio parecía que el 1201 saldría antes que el 4004 ya que Federico Faggin tenía que desarrollar cuatro chips, siendo el 4004 el último de ellos. Sin embargo, después de algunos meses de trabajo con el 1201, el diseñador, Hal Feeney, fue puesto a diseñar un chip de memoria, con lo que el proyecto del 1201 fue puesto en el "freezer".

Mientras tanto, CTC también contrató a la empresa Texas Instruments para hacer el diseño del mismo chip como fuente alternativa. Al final de 1970 Intel continuó con el proyecto del 1201 bajo la dirección de Faggin y Feeney fue puesto nuevamente a trabajar en este proyecto.

En junio de 1971, TI puso un aviso en la revista Electronics donde se detallaban las capacidades de este integrado MOS LSI. Con la leyenda "CPU en un chip" se acompañaba la descripción del circuito a medida para la terminal Datamation 2200. El aviso decía "TI lo desarrolló y lo está produciendo para Computer Terminal Corp.". Las dimensiones indicadas eran 5,46 por 5,71 mm, un chip enorme aun para la tecnología de 1971 y era 225% más grande que el tamaño estimado por Intel.

El chip de Texas Instruments, sin embargo, jamás funcionó y no se puso en el mercado. Sorprendentemente, TI patentó la arquitectura del 1201, que fue realizado por CTC con algunos cambios de Intel, con lo que luego hubo batallas legales entre Intel y TI.

Durante el verano (en el hemisferio norte) de 1971, mientras el trabajo con el 1201 estaba progresando rápidamente, Datapoint decidió que no necesitaba más el 1201. La recesión económica de 1970 había bajado el costo de los circuitos TTL de tal manera que ya no era rentable el circuito a medida. Datapoint le dejó usar la arquitectura a Intel y a cambio la última no le cobraba más los costos de desarrollo.

Intel decidió cambiarle el nombre al 1201: se llamaría 8008. El primero de abril de 1972 se lanzó este microprocesador al mercado con un conjunto de chips de soporte, como una familia de productos llamado MCS-8. Estos chips de soporte eran integrados existentes con los nombres cambiados. El interés del mercado por el MCS-8 fue muy alto, sin embargo las ventas fueron bajas.

Para solucionar este inconveniente, se diseñaron herramientas de hardware y software, entrenamiento y sistemas de desarrollo. Estos últimos son computadoras especializadas para desarrollar y depurar programas (quitarles los errores) para el microprocesador específico. Un año después, Intel recibía más dinero de los sistemas de desarrollo que de los microprocesadores y chips de soporte.

A título informativo cabe destacar que este microprocesador de ocho bits poseía alrededor de 3500 transistores, direccionaba 16 KBytes y la frecuencia máxima de reloj (clock) era de 108 KHz.

Conjunto de registros del 8008

Este conjunto de registros forma la base para comprender el conjunto de registros de los siguientes procesadores, ya que se basan en éste. Éstos son:

ClasificaciónRegistroLongitud (en bits)
AcumuladorA8
Registros de uso generalB8
C8
D8
E8
H8
L8
Contador de programaPC14

El 8008 no tiene registro de puntero de stack (SP). Tiene una pila interna de 8 posiciones para almacenar las direcciones de retorno en el caso de llamadas a subrutina.

Hay cuatro indicadores (o flags): Carry, Sign, Parity y Zero (C, S, P, Z).

Conjunto de instrucciones del 8008

SALTOS LLAMADAS RETORNOS CONDICIÓN
JMP AddrCALL AddrRETIncondicional
JNC AddrCNC AddrRNCSi no hay carry
JNZ AddrCNZ AddrRNZSi no es cero
JP AddrCP AddrRPSi es positivo
JPO AddrCPO AddrRPOSi paridad impar
JC AddrCC AddrRCSi hay carry
JZ AddrCZ AddrRZSi es cero
JM AddrCM AddrRMSi es negativo
JPE AddrCPE AddrRPESi paridad par

MOVER DATO ARITMETICA Y LOGICA
MVI reg,D8 reg <- D8 ADI D8A <- A + D8
MOV reg,A reg <- A ADD regA <- A + reg
MOV reg,B reg <- B ACI D8A <- A + D8 + Cy
MOV reg,C reg <- C ADC regA <- A + reg + Cy
MOV reg,D reg <- D SUI D8A <- A - D8
MOV reg,E reg <- E SUB regA <- A - reg
MOV reg,H reg <- H SBI D8A <- A - D8 - Cy
MOV reg,L reg <- L SBB regA <- A - reg - Cy
ANI D8A <- A and D8
INCREMENTARDECREMENTARANA regA <- A and reg
INR B: B<-B+1DCR B: B<-B-1XRI D8A <- A xor D8
INR C: C<-C+1DCR C: C<-C-1XOR regA <- A xor reg
INR D: D<-D+1DCR D: D<-D-1ORI D8A <- A or D8
INR E: E<-E+1DCR E: E<-E-1ORA regA <- A or reg
INR H: H<-H+1DCR H: H<-H-1CPI D8A - D8
INR L: L<-L+1DCR L: L<-L-1CMP regA - reg

ROTAR ACUMULADORCONTROLRESTART
RLCHLTRST n (0 <= n <= 7)

Es una llamada a una subrutina cuya dirección absoluta es 8*n

RRCNOP
RAL
RAR

ENTRADA DE PORTSALIDA A PORT
IN n (0 <= n <= 7)
A <- Port n
OUT n (8 <= n <=31)
Port n <- A

donde Addr es una dirección de 14 bits y D8 es un dato inmediato de 8 bits. reg puede ser cualquiera de los siete registros A, B, C, D, E, H o L o bien puede ser M. El último indica direccionamiento indirecto utilizando el par HL como puntero.

Nedstat Counter