Revelador | Juan Blankenbaker |
---|---|
Fabricante | Corporación Kenbak |
Tipo | Ordenador personal |
Fecha de lanzamiento | 1971 ( 1971 ) |
Precio de introducción | US$750 (equivalente a $5,640 en 2023) |
Interrumpido | 1973 ( 1973 ) |
Unidades vendidas | 44 [1] |
Memoria | 256 bytes de memoria |
El Kenbak-1 es considerado por el Computer History Museum , [2] el Computer Museum of America [3] y el American Computer Museum [4] como el primer " ordenador personal " del mundo, [5] inventado por John Blankenbaker (nacido en 1929) de Kenbak Corporation en 1970 y vendido por primera vez a principios de 1971. [6] Se construyeron menos de 50 máquinas, utilizando carcasas de Bud Industries como carcasa . [1] El sistema se vendió primero por 750 dólares estadounidenses. [7] Hoy en día, solo se sabe que existen 14 máquinas en todo el mundo, [8] [9] en manos de varios coleccionistas y museos. La producción del Kenbak-1 se detuvo en 1973, [10] cuando Kenbak fracasó y fue absorbida por CTI Education Products, Inc. CTI renombró el inventario y lo rebautizó como 5050, aunque las ventas siguieron siendo difíciles de alcanzar. [11]
Dado que el Kenbak-1 se inventó antes que el primer microprocesador , la máquina no tenía una CPU de un solo chip , sino que se basaba puramente en chips TTL de integración a pequeña escala . [12] La máquina de 8 bits ofrecía 256 bytes de memoria , [13] implementados en registros de desplazamiento MOS de compuerta de silicio tipo 1404A de Intel . [14] El período de la señal de reloj era de 1 microsegundo (equivalente a una velocidad de reloj de 1 MHz ), pero la velocidad del programa promediaba por debajo de las 1000 instrucciones por segundo debido a los muchos ciclos de reloj necesarios para cada operación y al lento acceso a la memoria en serie. [12]
La máquina estaba programada en código de máquina puro , utilizando una serie de botones e interruptores. La salida consistía en una fila de luces.
Internamente, el Kenbak-1 tiene una arquitectura de computadora en serie , procesando un bit a la vez. [15] [16]
0 7 | 0 6 | 0 5 | 0 4 | 0 3 | 0 2 | 0 1 | 0 0 | (posición de bit) |
Registros principales | ||||||||
A | A | |||||||
B | B | |||||||
incógnita | X (Índice) | |||||||
PAG | Contador de programas | |||||||
Banderas | ||||||||
000000 | do | Oh | Una bandera | |||||
000000 | do | Oh | Banderas B | |||||
000000 | do | Oh | Banderas X | |||||
Entrada/Salida | ||||||||
Producción | Luces | |||||||
Aporte | Interruptores |
El Kenbak-1 tiene un total de nueve registros. Todos están mapeados en memoria. Tiene tres registros de propósito general: A, B y X. El registro A es el destino implícito de algunas operaciones. El registro X, también conocido como registro de índice, convierte los modos directo e indirecto en modos directo indexado e indirecto indexado. También tiene un contador de programa, llamado registro P, tres registros de "desbordamiento y acarreo" para A, B y X, respectivamente, así como un registro de entrada y un registro de salida. [17]
Las instrucciones Agregar, Restar, Cargar, Almacenar, Cargar Complemento, Y y O operan entre un registro y otro operando utilizando cinco modos de direccionamiento:
Las instrucciones están codificadas en 8 bits, con un segundo byte que puede proporcionar un valor o dirección inmediata. Algunas instrucciones tienen múltiples codificaciones posibles. [17]
Matriz de código de operación para el conjunto de instrucciones Kenbak-1 | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Dígitos octales altos | Dígito octal bajo | |||||||||||||||||
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |||||||||||
00 | DETENER | SFTR-A1 | CONJUNTO 0 b0 XXX | AGREGAR UN #XXX | AGREGAR UN XXX | AGREGAR UN (XXX) | AGREGAR UNA XXX, X | AGREGAR A (XXX), X | ||||||||||
01 | DETENER | SFTR-A2 | CONJUNTO 0 b1 XXX | Subtítulo A #XXX | Subscríbete a XXX | SUB A (XXX) | Subtítulo XXX, X | SUB A (XXX), X | ||||||||||
02 | DETENER | SFTR-A3 | CONJUNTO 0 b2 XXX | CARGAR UN #XXX | CARGAR UN XXX | CARGA A (XXX) | CARGAR UN XXX, X | CARGA A (XXX), X | ||||||||||
03 | DETENER | Formato SFTR A4 | CONJUNTO 0 b3 XXX | TIENDA A #XXX | GUARDAR UN XXX | TIENDA A (XXX) | TIENDA A XXX, X | TIENDA A (XXX), X | ||||||||||
04 | DETENER | SFTR-B1 | CONJUNTO 0 b4 XXX | JPDA ≠0 XXX | JPDA = 0 XXX | JPDA <0 XXX | JPDA ≥0 XXX | JPDA >0 XXX | ||||||||||
05 | DETENER | SFTR-B2 | CONJUNTO 0 b5 XXX | Índice de precios al consumidor A ≠0 XXX | JPIA = 0 XXX | JP A <0 XXX | Índice de precios al consumidor A ≥0 XXX | JP A >0 XXX | ||||||||||
06 | DETENER | SFTR-B3 | CONJUNTO 0 b6 XXX | JMD A ≠0 XXX | JMD A = 0 XXX | JMD A <0 XXX | MDJ A ≥0 XXX | JMD A >0 XXX | ||||||||||
07 | DETENER | SFTR-B4 | CONJUNTO 0 b7 XXX | JMI A ≠0 XXX | JMI A = 0 XXX | JMI A <0 XXX | IMI A ≥0 | JMI A >0 XXX | ||||||||||
10 | DETENER | ROTR-A1 | CONJUNTO 1 b0 XXX | AGREGAR B #XXX | AGREGAR B XXX | AGREGAR B (XXX) | AGREGAR B XXX, X | AGREGAR B (XXX), X | ||||||||||
11 | DETENER | ROTR-A2 | CONJUNTO 1 b1 XXX | Subtítulo B #XXX | Subtítulo B XXX | SUB B (XXX) | Subtítulo B XXX, X | SUB B (XXX), X | ||||||||||
12 | DETENER | ROTR-A3 | CONJUNTO 1 b2 XXX | CARGA B #XXX | CARGA B XXX | CARGA B (XXX) | CARGA B XXX, X | CARGA B (XXX), X | ||||||||||
13 | DETENER | ROTR-A4 | CONJUNTO 1 b3 XXX | TIENDA B #XXX | TIENDA B XXX | TIENDA B (XXX) | TIENDA B XXX, X | TIENDA B (XXX), X | ||||||||||
14 | DETENER | ROTR-B1 | CONJUNTO 1 b4 XXX | JP B ≠0 XXX | JP B = 0 XXX | JP B <0 XXX | JPPD B ≥0 XXX | JP B >0 XXX | ||||||||||
15 | DETENER | ROTR-B2 | CONJUNTO 1 b5 XXX | Índice de precios al consumidor B ≠0 XXX | IBP B = 0 XXX | Índice de precios al consumidor B < 0 XXX | Índice de precios al consumidor B ≥0 XXX | Índice de precios al consumidor B > 0 XXX | ||||||||||
16 | DETENER | ROTR-B3 | CONJUNTO 1 b6 XXX | JMD B ≠0 XXX | JMD B = 0 XXX | JMD B <0 XXX | MJMD B ≥0 XXX | JMD B >0 XXX | ||||||||||
17 | DETENER | ROTR-B4 | CONJUNTO 1 b7 XXX | JMI B ≠0 XXX | JMI B = 0 XXX | JMI B <0 XXX | IMI B ≥0 XXX | JMI B >0 XXX | ||||||||||
20 | No, no. | SFTL-A1 | SKP 0b0XXX | AGREGAR X #XXX | AGREGAR X XXX | AGREGAR X (XXX) | AGREGAR X XXX, X | AGREGAR X (XXX), X | ||||||||||
21 | No, no. | SFTL-A2 | SKP 0 b1 XXX | Subtítulo X #XXX | Subtítulo XXXX | Subtítulo X (XXX) | Subtítulo XXXX,X | SUB X (XXX), X | ||||||||||
22 | No, no. | Formato SFTL A3 | SKP 0 b2 XXX | CARGA X #XXX | CARGA X XXX | CARGA X (XXX) | CARGA X (XXX) | CARGA X (XXX), X | ||||||||||
23 | No, no. | Formato A4 de SFTL | SKP0b3XXX | TIENDA X #XXX | TIENDA X XXX | TIENDA X (XXX) | TIENDA X XXX, X | TIENDA X (XXX), X | ||||||||||
24 | No, no. | Licenciatura en lengua española B1 | SKP 0 b4 XXX | Dólar estadounidense X ≠ 0 XXX | JPPD X = 0 XXX | JPPD X <0 XXX | JPPD X ≥0 XXX, X | JPPD X > 0 XXX | ||||||||||
25 | No, no. | Licenciatura en Lenguaje Único B2 | SKP 0 b5 XXX | Índice de precios al consumo X ≠ 0 XXX | IPP X = 0 XXX | Índice de precios al consumidor X < 0 XXX | Índice de precios al consumidor X ≥0 XXX | Índice de precios al consumidor X > 0 XXX | ||||||||||
26 | No, no. | Licencia B3 | SKP 0 b6 XXX | JMDX ≠0XXX | JMDX = 0 XXX | JMDX <0 XXX | MJMD X ≥0 XXX | JMDX > 0 XXX | ||||||||||
27 | No, no. | SFTL-B4 | SKP 0 b7 XXX | JMI X ≠ 0 XXX | JMI X = 0 XXX | JMI X <0 XXX | JMI X ≥0 XXX | JMI X > 0 XXX | ||||||||||
30 | No, no. | ROTL A1 | SKP 1 b0 XXX | O #XXX | O XXX | O (XXX) | O XXX, X | O (XXX), X | ||||||||||
31 | No, no. | ROTL A2 | SKP1b1XXX | — | — | — | — | — | ||||||||||
32 | No, no. | ROTL A3 | SKP1b2XXX | Y #XXX | Y XXX | Y (XXX) | Y XXX, X | Y (XXX), X | ||||||||||
33 | No, no. | ROTL A4 | SKP1b3XXX | Número de serie n.° XXX | LNG XXX | LNEG (XXX) | Número de serie XXX, X | LNEG (XXX), X | ||||||||||
34 | No, no. | ROTL B1 | SKP 1 b4 XXX | Departamento de Policía de Carolina del Norte, XXX | Departamento de Policía de Carolina del Norte, XXX | Departamento de Policía de Carolina del Norte, XXX | Departamento de Policía de Carolina del Norte, XXX | Departamento de Policía de Carolina del Norte, XXX | ||||||||||
35 | No, no. | ROTL B2 | SKP 1 b5 XXX | Instituto Público de Canadá (JPI) XXX | Instituto Público de Canadá (JPI) XXX | Instituto Público de Canadá (JPI) XXX | Instituto Público de Canadá (JPI) XXX | Instituto Público de Canadá (JPI) XXX | ||||||||||
36 | No, no. | ROTL B3 | SKP1b6XXX | Universidad de Carolina del Norte, Universidad de Carolina del Norte, XXX | Universidad de Carolina del Norte, Universidad de Carolina del Norte, XXX | Universidad de Carolina del Norte, Universidad de Carolina del Norte, XXX | Universidad de Carolina del Norte, Universidad de Carolina del Norte, XXX | Universidad de Carolina del Norte, Universidad de Carolina del Norte, XXX | ||||||||||
37 | No, no. | ROTL B4 | SKP1b7XXX | JMI UNC XXX | JMI UNC XXX | JMI UNC XXX | JMI UNC XXX | JMI UNC XXX |
El Kenbak-1, lanzado a principios de 1971, es considerado por el Museo de Historia de la Computación como el primer ordenador personal del mundo. Fue diseñado e inventado por John Blankenbaker de Kenbak Corporation en 1970, y se vendió por primera vez a principios de 1971. A diferencia de un ordenador personal moderno, el Kenbak-1 estaba construido con circuitos integrados de pequeña escala y no utilizaba un microprocesador. El sistema se vendió inicialmente por 750 dólares estadounidenses. Solo se vendieron 44 máquinas, aunque se dice que se fabricaron entre 50 y 52. En 1973, la producción del Kenbak-1 se detuvo cuando Kenbak Corporation cerró.
Con una memoria fija de 256 bytes, entrada y salida restringidas a luces e interruptores (sin puertos ni salida serial) y sin ninguna forma posible de ampliar sus capacidades, el Kenbak-1 solo era realmente útil para uso educativo.
256 bytes de memoria, tamaño de palabra de 8 bits y E/S limitada a interruptores y luces en el panel frontal también son características del Altair 8800 de 1975 , cuyo destino fue diametralmente opuesto al del Kenbak. Sin embargo, hubo tres factores diferenciadores principales entre el Altair y el Kenbak que llevaron a que el posterior Altair 8800 vendiera más de 25000 unidades e influyera en muchas personas, mientras que el Kenbak-1 solo vendió 44 y no influyó en casi nadie.
Si el Kenbak-1 se hubiera publicitado mejor y la máquina hubiera tenido al menos un puerto serie para que fuera más útil, podría haber tenido un buen desempeño a su precio de 750 dólares en 1971, al que ningún otro ordenador Turing completo del mercado se acercaba. Sin embargo, no pasaría mucho tiempo antes de que salieran al mercado ordenadores personales basados en el Intel 8008, mucho más capaz, seguido poco después una vez más por el Intel 8080 , diez veces más rápido , en el Altair 8800, altamente expandible.