Kenbak-1
# Kenbak-1

El computador Kenbak-1 está considerado como el primer “ordenador personal” disponible comercialmente. Esta designación le fue otorgada por el Computer History Museum en el año 1986 a partir de un concurso realizado con el objetivo de registrar la historia de la computación. Este equipo fue diseñado y fabricado por John Blankenbaker (quien creó la Kenbak Corporation) y comenzó a comercializarse en el año 1971. El objetivo principal de este equipo era el mercado educacional, sin embargo, su comercialización no fue un éxito, ya que únicamente se vendieron 40 equipos, a un coste de 750 dólares cada uno, de los que solo hay referencias de que se conserven 10 ejemplares en la actualidad en varias colecciones. En 1973 cesó la producción y Kenbak Corporation cerró.

## Introducción

El equipo Kenbak-1 representa el primer computador disponible comercialmente basado en la arquitectura Von Neumann y destinado para uso personal. John V. Blankenbaker diseñó la Kenbak-1 y la comercializó a través de la revista Scientific American en septiembre de 1971. La mayoría de las unidades (alrededor de 40) se vendieron por 750 dólares. El nombre del computador tiene su origen en la mitad del apellido de John Blankenbaker.

El computador kenbak-1 fue diseñado en 1970 y es anterior a los microprocesadores puesto que fue construido casi en su totalidad a partir de componentes TTL. El primer microprocesador del mundo (Intel 4004) se introdujo en 1972.

A diferencia de muchas máquinas y motores de cálculo anterior, el Kenbak-1 es un verdadero computador de programa almacenado, puesto que ofrece 256 bytes de memoria, una amplia variedad de operaciones y una velocidad equivalente a 1 MHz. Se compone de una placa de circuito impreso formada por circuitos integrados de pequeña y mediana escala, dos registros de tipo MOS que implementan la memoria e interruptores y luces utilizados para entrada y salida.

El equipo se destinó para uso educacional, pero su comercialización se convirtió en una lucha por convencer a usuarios no profesionales en el campo de la computación de que podían adquirir un ordenador real a coste reducido para uso personal, algo que en esta época no era muy común. Por ello, únicamente 40 de estas máquinas fueron construidas y vendidas antes de que se dejaran de comercializar, y la razón por la cual no tuvieron el éxito esperado fue, según comenta el propio John Blankenbaker, porque el mundo simplemente no estaba listo para la computación personal y la Kenbak-1 carecía de algunas capacidades críticas (tales como la capacidad de expansión y la E/S) que se necesitaban para fomentar la revolución.

El prototipo del equipo comenzó a estar operativo en la primavera de 1971 y se realizó una demostración en una convención para profesores de un instituto. Esta máquina aún funciona y en octubre de 2005 se puso a prueba en la Universidad del Estado de Montana. Las máquinas fabricadas diferían ligeramente del prototipo pero tenían el mismo conjunto de instrucciones y el mismo rendimiento.

   * Para ver una imagen del prototipo de la computadora Kenbak-1 (1971) accede a la URL: http://www.kenbak-1.net/index_files/image001.jpg (Sitio Oficial de la Kenbak-1)

## Historia

John Blankenbaker comenzó el diseño de un dispositivo de computación en el invierno de 1949, cuando aún era estudiante de física en Oregon State College (ahora Universidad Estatal de Oregón). Su motivación principal fue la necesidad de realizar cálculos con logaritmos de forma rápida (ya que era algo muy tedioso) para el laboratorio de física semanal. Se inspiró en un artículo de mecánica que hablaba sobre los dispositivos de computación. Según el propio John Blankenbaker, el artículo no decía mucho, pero comentaba que la máquina usaba cientos de tubos de vacío pero únicamente utilizaba dos dígitos, 0 y 1. John Blankenbaker se centró en cómo escribir números con solo dos dígitos: 0 y 1 y comenzó a investigar cómo realizar cálculos con estos números, sin embargo, tras un tiempo investigando en estos aspectos, comenzó a preguntarse cómo podría conseguir esto con dispositivos mecánicos como relés. El diseño que desarrolló fue un desastre y demasiado caro, pero estimuló su deseo de aprender más sobre computadoras.

En el verano de 1951, John Blankenbaker tuvo la oportunidad de trabajar en SEAC (National Bureau of Standards Eastern Automatic Computer) y, después de graduarse en 1952, trabajó en Hughes Aircraft Company y fue asignado a un departamento de trabajo dedicado a los equipos digitales. Para esta compañía diseñó la unidad aritmética de un procesador de datos profesionales y, en esta etapa de su vida se dio cuenta de que en un computador solo era necesario un flip-flop (biestable capaz de almacenar un 1 o un 0) con la memoria suficiente. La descripción de esta idea fue publicada en 1958 en el artículo “Logically microprogrammed computers” del Grupo IRE profesional en equipos electrónicos, vol. CE-7, N.º 2, pp 103-109. En ese momento, John Blankenbaker comenzó a pensar en la posibilidad de que existieran equipos simples que pudieran servir para uso personal. El secreto para diseñar un ordenador simple era almacenar la descripción de otro ordenador en la memoria y luego evaluar lo que el equipo de destino era capaz de hacer con un programa. El principal objetivo de John Blankenbaker era conseguir un ordenador para uso personal cuyo coste fuese reducido.

En el otoño de 1970, John Blankenbaker estaba desempleado y decidió profundizar en la investigación de cómo conseguir un ordenador para uso personal. Los principales criterios seguidos fueron: bajo coste, que tuviera un objetivo educacional, y que fuera capaz de satisfacer las necesidades de los usuarios a través de sencillos programas. Su idea era un computador basado en circuitos en serie y más lento, que redujera el coste económico. Debido a su pequeño tamaño, el lenguaje de programación a utilizar para su construcción sería el lenguaje máquina. También, por encima de todo, tenía que ser una máquina de programa almacenado basada en la arquitectura Von Neumann. John Blankenbaker en ningún momento consideró diseñar un computador de acuerdo con los principios de los computadores de lógica microprogramada. En lugar de eso, decidió aplicar sus conocimientos al diseño de un ordenador simple. Para mantener un bajo coste, utilizó interruptores y luces como entrada y salida de la máquina.

En el diseño se hizo mucho énfasis en el uso de tantas partes estandarizadas como fuese posible. El objetivo inicial fue conseguir un coste de componentes de 150 dólares por computador pero la cifra real fue de cerca de 250 dólares (cifra que con un gran volumen de producción podría haberse reducido a los 150 dólares iniciales). En la primavera de 1971, la placa de circuito impreso se había construido y el computador fue ensamblado. La memoria era de dos registros de tipo MOS, cada uno de 1.024 bits, la lógica fue implementada mediante circuitos integrados de pequeña y mediana escala y el microprocesador no había sido anunciado aún ni tampoco el primero de ellos habría supuesto una mejora en el diseño.

Los profesionales estaban entusiasmados con sus características y todos ellos coincidían en que era un computador para uso educacional. Tal vez por esto, se hizo hincapié en la comercialización del mismo en escuelas y la mayoría de las unidades vendidas por la Kenbak Corporation iban destinadas a este fin. Según John Blankenbaker, posiblemente hubiese sido mejor hacer hincapié en aspectos más divertidos y comercializarlo con más énfasis para uso personal. Aparte de todo esto, en esta época, existía un problema con la venta a las instituciones educacionales: su largo ciclo presupuestario.

Más tarde, los derechos de la Kenbak Corporation fueron vendidos a la CTI Educational Corporation que continuaron la labor. Por ello, algunos de los computadores, el equivalente funcional a las unidades originales, llevan el nombre de esta Corporación (el nombre de la Kenbak-1 pasó a ser CTI 5050).

   * Para ver una imagen del inventor de la Kenbak-1 (John Blankenbaker) accede a la URL: http://history-computer.com/ModernComputer/Personal/images/Blankenbaker.jpg (Historia de los ordenadores)

## Visión General de su Funcionalidad

El computador Kenbak-1 operaba del mismo modo que otras máquinas basadas en lenguaje máquina de la época. Este computador tiene 8 conmutadores en el panel frontal con los cuales se puede introducir el valor de 1 byte, y dicho byte puede ser almacenado en cualquier posición de memoria de las 256 existentes mediante los botones de “Store Address” o “Store Data”. Los datos en memoria pueden ser verificados y mostrados mediante un banco de 8 luces con los botones “Read Address” o “Read Data”. Una vez que un programa en código máquina se introduce en el computador, puede ser ejecutado mediante el botón “Start” o detenido mediante el botón “Stop”, o incluso puede ejecutar varias instrucciones al mismo tiempo. Un programa en ejecución se puede comunicar con el operador de mostrar cualquier valor de un byte a través de las luces, o puede recibir datos de entrada deteniéndose a la espera de datos desde el operador de entrada, y el operador puede reanudar la ejecución después de ajustar los botones necesarios.

## Cómo fue diseñado

El Kenbak-1 es una equipo de ejecución en “serie”. En lugar de sumar o restar un byte a la vez de forma paralela, las operaciones aritméticas y lógicas se realizan sobre bytes de 1 bit de información al mismo tiempo, a través de un sumador en serie. La mayoría de las calculadoras del momento utilizaban este tipo de aritmética también, con el fin de usar menos transistores, pero a expensas de la velocidad. Los 256 bytes de memoria de la Kenbak-1 se organizaron en dos registros de cambio en “serie” de 1024 bits cada uno de ellos por los cuales circulaba la información (los datos) de forma continua.

## Principales Componentes

En la parte interior del computador Kenbak-1 se encuentran las distintas partes del mismo. En la parte inferior está situada la placa base con 132 circuitos integrados. Las dos fuentes de alimentación, una para 5 voltios y otra para -12 voltios, cubren la parte trasera y envuelven la placa. La energía disipada por la unidad requiere un pequeño ventilador que se encuentra en la parte trasera izquierda. La corriente de aire producida por este ventilador se dirige a los dos registros MOS utilizados para la memoria. El aire, tras pasar por las fuentes de energía sale por detrás de estas.

En el panel frontal se encuentran las luces y los interruptores que están conectados por cables a la placa lógica. En lugar de LEDs se utilizaron luces incandescentes (bombillas T-1) que eran más brillantes. Se realizó una modificación total de la unidad y se hizo de acero. Esto proporcionó una protección excelente salvo para los interruptores que se encuentran en la parte delantera. El reloj trabaja a 1MHz y lo genera un multivibrador.

Se realizaron varias modificaciones de carácter técnico y cosmético desde la presentación del prototipo hasta que se fabricaron las unidades a comercializar. Al principio, existía un botón rojo que servía para almacenar los datos en memoria, pero se eliminó, y, en su lugar, se colocó un interruptor de palanca para bloquear la memoria frente a los cambios que se realizasen desde el panel frontal. Otras partes se rediseñaron y recolocaron para adquirir una mejor visibilidad. Además, se instaló una ranura en el panel frontal para poder insertar en un futuro una tarjeta perforada, pero esto no pudo llevarse a cabo nunca debido al poco éxito de comercialización.

En la esquina posterior izquierda del computador, donde se encuentra el ventilador, se ubican los dos registros MOS que se utilizan para la memoria. Estos registros eran muy fiables y una muestra de esto era que con 70 voltios de corriente alterna el equipo era capaz de continuar funcionando.

   * Para ver una imagen de la vista interior de la computadora Kenbak-1 accede a la URL: http://www.kenbak-1.net/index_files/image011.jpg (Sitio Oficial de la Kenbak-1)

### La Placa Base

    La placa base se compone de circuitos integrados. Este componente principal, era una placa de doble cara diseñada mediante estándares y normas muy conservadoras. En la parte superior de la placa se montan los componentes. Las grandes áreas de color plateado son las fuentes de alimentación y la toma de tierra. Las entradas y salidas lógicas de los circuitos integrados y otros componentes están conectados por cincuenta mil caminos. Como nota adicional del diseño realizado, no se utilizaron caminos entre los pines de los circuitos integrados. En el lado opuesto de la placa, los recorridos de la señal se ubican en dirección opuesta a la que circulan de manera horizontal.
    La zona de arriba a la derecha mantiene el “estado” lógico. Hay 32 estados (a pesar de que no todos se usan) y a cada estado se le asignó una tarea específica como, por ejemplo, la localización de la siguiente instrucción. La lógica determina el siguiente estado. Dicha lógica de procesamiento se encuentra en el centro y a la izquierda se ubica la memoria y circuitos de reloj. Las entradas y salidas se ubican alrededor de la parte inferior.
   * Para ver una imagen de la placa base de una Kenbak-1 accede a la URL: http://www.kenbak-1.net/index_files/image015.jpg (Sitio Oficial de la Kenbak-1)

## Instrucciones en Memoria

Los siguientes registros de un byte cada uno de ellos fueron asignados a las direcciones de memoria:

* Registro A -> dirección de memoria 000 octal
* Registro B -> dirección de memoria 001 octal
* Registro X -> dirección de memoria 002 octal
* Registro P -> dirección de memoria 003 octal (contador de programa)
* Registro de Salida -> dirección de memoria 200 octal (128 decimal)
* Registro de Entrada -> dirección de memoria 377 octal (255 decimal)

También, las posiciones de memoria 201 octal, 202 octal y 203 octal (129, 130 y 131 decimal) fueron asignadas a mantener los bits de desbordamiento y acarreo de los registros A, B y X respectivamente.

El formato general de las instrucciones era de dos bytes donde el primer byte era el comando y el segundo byte podía ser una constante, una dirección de memoria o un puntero a una dirección de memoria. Las instrucciones podían comenzar en una dirección par o impar.

Los modos de direccionamiento de memoria eran:

* Inmediato (constante)
* Directo a memoria
* Indirecto
* Indexado
* Indirecto indexado

Para las operaciones indexadas, se utilizaba el contenido del registro X. Para las operaciones de sumar, restar, cargar y almacenar se utilizaban los registros A, B y X. El registro A también podía almacenar los resultados de las operaciones lógicas or, and y not.

Las instrucciones de salto se testeaban mediante los registros A, B y X para los siguientes saltos: distinto de cero, cero, menor que cero, mayor o igual a cero y mayor que cero. Un salto también podía ser incondicional. Eran posibles dos modos de direccionamiento: Directo (a memoria) e Indirecto. Estas instrucciones de salto también podían ser especificadas mediante direcciones de retorno que permitieran el retorno a las subrutinas.

Había una clase de instrucciones de control de bit que permitían establecer en memoria un 0 o un 1. Otras instrucciones de esta clase permitían que, mediante un bit en memoria se comprobase si se cumplía la condición para realizar el salto a la siguiente instrucción.

Los registros A y B permitían realizar rotaciones o desplazamientos hacia la izquierda o derecha. Por último, había instrucciones de tipo No-Op e interrupciones. Este tipo de instrucciones utilizaba bytes individuales. Debido a que los registros se podían direccionar, era posible hacer muchas más operaciones especializadas de forma más simple. La hoja de codificación que resume todo esta información y proporciona ayuda para escribir programas se muestra en la página http://www.kenbak-1.net/index_files/page0009.htm.

## El Prototipo

El prototipo y las unidades de producción fueron muy similares, pero los componentes de las unidades producidas se ordenaron mejor que en el prototipo.

Un punto importante que se tuvo en cuenta en el diseño de cada unidad era evitar piezas especiales. Por ejemplo, los transformadores de la fuente de alimentación eran transformadores de filamento de tubos de vacío. Se adquirieron varias normas estándar y solo fueron necesarias unas pocas partes específicas como el panel frontal y el panel posterior.

La placa base, y la fuente de alimentación en la placa de circuito impreso también tuvieron que ser diseñadas de forma específica. Se cableó desde la fuente de alimentación y desde el panel frontal para poder establecer estas partes.

En el prototipo surgieron algunos errores que no se habían abordado y probado antes de la construcción del mismo. Además, se necesitaron una serie de cables puenteados para corregir errores lógicos menores.

   * Para ver una imagen de la vista interior de un prototipo de la Kenbak-1 accede a la URL: http://www.kenbak-1.net/index_files/image017.jpg (Sitio Oficial de la Kenbak-1)

## Las Unidades de Producción

Las unidades que se fabricaron tienen una placa cubierta en el interior del panel frontal que cierra una ranura estrecha en la parte superior de la derecha. Esta ranura es una inversión para una posible ampliación futura basada en un lector de tarjetas perforadas, que no se llegó a desarrollar nunca. Esta unidad se encontraba ya desde la primera producción pero, como ya se ha dicho, nunca se terminó. En la actualidad, John Blankenbaker, pretende terminar la máquina, aunque está encontrando limitaciones debidas a la escasez de piezas.

Los interruptores y luces permiten dos representaciones numéricas. La agrupación de cuatro colores en los interruptores indica el sistema numérico hexadecimal, mientras que la separación física de tres sugiere el sistema de numeración octal. Este último sistema fue utilizado por los estudiantes, ya que, tres bits eran más fáciles de introducir que cuatro. Los estudiantes se interesaron por las hojas de codificación para escribir en lenguaje ensamblador pero compilaban las instrucciones de la máquina de forma manual.

Los datos, las instrucciones y las direcciones se introducían durante la primera limpieza del registro de entrada (dirección de memoria 377) con la tecla “Clear” y luego se establecían los bits individuales. Para configurar una dirección de memoria al valor correcto en el registro de entrada, se utilizaba la tecla “Set Address”. Para almacenar la información que estaba en el registro de entrada dentro de la memoria en la dirección establecida previamente, se utilizaba la tecla “Store”. Para leer el contenido de la memoria incluidos los registros A, B, X y P, se establecía primero la dirección y luego se utilizaba la tecla “Read Memory”. Todas estas operaciones se realizaban mientras el computador no estaba en funcionamiento. La lectura o el almacenamiento en memoria avanzaba de forma automática de registro de dirección en registro de dirección, es decir, de uno en uno. Para iniciar operaciones automáticas, se utilizaba la tecla “Run”. El equipo se paraba con la tecla “Stop”. Pulsando las teclas “Stop” y “Ejecutar” el equipo ejecutaba una instrucción. Mientras que el equipo estaba en funcionamiento, se podían realizar operaciones de entrada a través del registro “Input”, además, las ocho luces de datos mostraban el contenido de la memoria en la posición 200 (registro de salida).

   * Para ver una imagen de la vista exterior de una unidad de producción accede a la URL: http://www.kenbak-1.net/index_files/image019.jpg (Sitio Oficial de la Kenbak-1)

## Selección de la Kenbak-1 como la primera PC

El Museo de la Computación de Boston durante el año 1986 se propuso registrar la historia de la computación a través de un concurso. Así, publicitó este evento por Estados Unidos durante un tiempo, solicitando al público que contribuyera con esta iniciativa. Finalmente, recogió un total de 316 muestras y de todas ellas asignó el título de "Primer Computador Personal" a la Kenbak-1. Su elección sorprendió a muchos debido a que se trataba de un modelo descontinuado que incluso precedió a la computadora Altair (la Kenbak-1 se creó 4 años antes que esta última).

## Kenbak-1 Series 2

Se trata de una versión posterior a la inicial que está construida con piezas de mayor calidad. En esta nueva versión cada componente es nuevo y se incluye actualmente en un kit donde se incorporan todos los componentes excepto el cable de alimentación. Este kit es funcional y es idéntico al computador Kenbak-1 original. A pesar de esto el kit incluye una lista de las diferencias existentes.

   * Para ver una imagen de la Kenbak-1 Series 2 accede a la URL: http://www.kenbakkit.com/images/070612-Kenbak_main_DSC_0110.jpg (Kenbak-1 Series 2)

## Inconvenientes

Entre los principales inconvenientes que presenta esta máquina se encuentra su criticado sistema de entrada y salida (criticado por todos aquellos que aspiraban a poseer el título que fue otorgado a la Kenbak-1) y la inexistencia de posibilidades de expansión para la memoria. El primer inconveniente mencionado, se debe a que dicha máquina no presenta una interfaz de entrada y salida de dispositivos tal cual y, debido al segundo inconveniente muchos sostienen que en realidad no es una computadora útil. Por el contrario, la memoria de 256 bytes permite realizar algunos programas bastante complejos, siempre y cuando la entrada y salida del panel frontal sea posible.

## Información Técnica y Documentos

Había muchos documentos para ayudar a un usuario con el aprendizaje de un programa de Kenbak-1 y para reparar y comprender su circuito. Aquí se muestran varios de ellos:

* Brochures and Sales Docs: http://www.compusaur.com/kenrepofiles/Brochure.pdf (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última).
* Laboratory Exercises: http://www.compusaur.com/kenrepofiles/LabExer.pdf (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última).
* Programming Reference Guide: http://www.compusaur.com/kenrepofiles/ProgRef.pdf (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última).
* Theory of Operation: http://www.compusaur.com/kenrepofiles/TheoryOfOperation.pdf (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última).
* John V. Blankenbaker Biography: http://www.compusaur.com/kenrepofiles/blankenbakerbio86.pdf (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última).
* Second John V. Blankenbaker Biography: http://www.compusaur.com/kenrepofiles/blankenbakerbio2.pdf (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última).
* Robert R. Nielsen Sr. Biography Excerpts: http://www.compusaur.com/kenrepofiles/bioNIELSEN2.pdf (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última).
