Acerca de...
El equipo
Encuestas
Política de privacidad
WinTablets

Encuesta

¿Cual crees que triunfará?

Ver Resultados

Cargando ... Cargando ...

últimas entradas importantes

Categorías

Archivos

22
May 2018
Historia

Altair 8800 – Jugando con la prehistoria de la computación

Lo que ves encima de estas líneas es un ordenador. Un ordenador diseñado en 1975 basado en el procesador Intel 8080 de 8 bits con una velocidad de 2 MHz. Era capaz de gestionar hasta 4K de memoria y a futuro contó con puerto serie, paralelo y puerto de cassette.

En este artículo os cuento como funcionaba, como se programaba y por qué fue importante en la historia de la informática.

El producto fue desarrollado por la empresa MITS y se vendía en kit o ya montado por un precio que oscilaba entre los 439 USD y los 621 USD de la época. Pero cada añadido sumaba a ese precio. Esta es la lista de precios de 1974 del Altair 8800:

Este ordenador en principio se programaba en código máquina. ¿Qué es eso? Básicamente es el conjunto de instrucciones internas del procesador al cual se accede por medio de unos y ceros. Esas instrucciones de código máquina (ya sea en binario o en octal) tenían un equivalente en lenguaje ensamblador que es más sencillo de recordar por los humanos.

Por ejemplo una instrucción en ensamblador como JMP 0000h que es saltar a la posición 0 de la memoria se pone en binario como 11000011 00000000 00000000 esas instrucciones le dicen al ordenador que va a realizar un salto en el programa y los dos bytes siguientes le indican la dirección de memoria, la 0. Como un sistema intermedio entre el binario y el ensamblador se usaba el código octal que eran números de 0 al 7 para cada dígito, de ahí octal, esto es en base ocho, al igual que el binario es base 2 y usa por tanto solo 0 y 1 como dígitos.

La instrucción de salto entonces en octal quedaba 303 000 000.

Vale, ya hemos visto la teoría de como se programaba, pero como se programa un ordenador que en principio no tiene ni teclado ni monitor.

Lo primero que teníamos que hacer era encender el equipo, para ello bajamos la palanca OFF/ON que está a la izquierda. El equipo se enciende y muestra algunas luces.

En ese punto ya podemos empezar a jugar con el equipo.

Vemos las palancas marcadas del 0 al 7, eso es un byte, y las palancas del 8 al 15 es el segundo byte de modo que podemos en teoría direccionar espacios de direcciones de hasta dos bytes, esto es en hexadecimal todas las posiciones de memoria desde 0000 a FFFF o en binario desde 00000000:00000000 hasta 11111111:11111111, esto son 65535 posiciones de memoria, o sea 64 K, aunque el ordenador generalmente como máximo venía con 4 K.

Si seleccionamos en el Altair, con las palancas 0 al 15 una dirección de memoria podemos pulsar la palanca EXAMINE y las luces mostrarán el valor almacenado en esa celda de memoria.

Por ejemplo en la siguiente imagen hemos levantado las palancas uno y dos y pulsado a EXAMINE y en las luces A0 a A15 nos muestra la dirección de memoria, la 00000000:00000110 y en las luces D0 a D7 el valor almacenado, en esta imagen 00010101 esto es un 21 decimal.

Bien seleccionando la dirección a leer en los switches A0-A15 y pulsando EXAMINE o bien pulsado EXAMINE NEXT para ir leyendo memoria secuencialmente podemos ir viendo el contenido de la memoria del Altair 8800.

¿Pero como alteramos una posición de memoria?

Sencillo.

Lo primero seleccionamos la posición de memoria que queremos grabar, por ejemplo la 00000000:00001000 seleccionando los switches A0-A15 para que correspondan con ese patrón. En este ejemplo es levantar el switch A3 dejando el resto abajo. Pulsamos EXAMINE y en A0-A15 se mostrará la dirección 00000000:00001000 y en las luces D0-D7 mostrará el valor que tenga la celda en ese momento.

Hecho esto usaremos los switches A0 al A7 para poner en binario el valor que queremos almacenar, por ejemplo 00100101 (que es un 37 decimal) y levantaremos la palanca DEPOSIT. Con ello almacenamos un 00100101 en la dirección 00000000:00001000 y las luces se verán así:

Esto es básicamente como leer y escribir en memoria.

El proceso de escribir un programa es «sencillo». Teniendo el programa en ensamblador lo pasamos a octal «compilándolo» a mano. Por ejemplo buscamos en las tablas y vemos que la instrucción JMP es 303 en octal. Pues cada vez que tengamos que «teclear» JMP (que es un salto incondicional) simplemente meteremos 303 en la posición de memoria por donde vayamos escribiendo.

Supongamos que tenemos este programa:

Lo pasamos a octal y queda así:

Entonces procederemos a «teclearlo». ¿Por qué en octal? Porque es más fácil de leer para teclearlo. Fijaros que cada dígito octal representa tres bits. Así la isntrucción 3 0 3 en octal es 011 000 011 en binario. De ese modo sabiendo de memoria los números binarios del 000 al 111 podemos teclear (subir los switches) muy rápidamente.

Por ejemplo 303 que es 11 000 011 en binario son esta posición de switches:

Así que para teclear el programa lo que hacemos es, primero poner los switches 0 al 15 a cero (todos abajo), pues vamos a empezar a escribir en la primera posición de memoria. Entonces tecleamos la primera instrucción (041) en los switches 0 al 7 y pulsamos DEPOSIT, tecleamos la segunda instrucción (000) en los switches 0 al 7 y pulsamos DEPOSIT NEXT con lo que se graba en la siguiente posición de memoria (la uno) y luego ya repetimos, teclear tercera instrucción y DEPOSIT NEXT, cuarta instrucción DEPOSIT NEXT y así hasta acabar todas las instrucciones.

Una vez terminado ya podemos ejecutar.

Para ello debemos primero indicarle al ordenador donde vamos a empezar a ejecutar. En nuestro caso en 00000000:00000000 por lo que pondremos todos los switches 0 al 15 abajo (a cero) y pulsaremos EXAMINE. Con eso pondremos el contador del programa en la primera instrucción. Las luces D0 a D7 mostrarán la primera instrucción 041 (00 100 001). Estamos listos.

Podemos ejecutar todo el programa o depurarlo. Para ejecutar todo el programa de golpe solo tendremos que bajar la palanca RUN hacia abajo (es el segundo switch por la derecha) y las luces empezarán a parpadear mientras el programa se ejecuta. Para pararlo simplemente moveremos la palanca a STOP.

Pero podemos ejecutar paso a paso. Para ello pulsaremos en vez de RUN la palanca SINGLE STEP. Cada vez que la pulsemos las luces mostrarán en A0-A15 la dirección que se ejecuta y las luces D0 a D7 el valor o la instrucción. De ese modo podemos monitorizar el programa como si de un debugger moderno se tratase.

¿Complejo?

Pues sí, bastante. Pero entonces un tal Bill Gates y un tal Paul Allen sacaron algo llamado ALTAIR BASIC que era un interprete de mandatos de BASIC. Conectaron un terminal con pantalla y teclado a uno de los puertos serie y mediante una cassette cargaban el programa ALTAIR BASIC. El monitor mostraba READY y ya podías teclear programas en BASIC que ALTAIR BASIC convertía paso a paso a código máquina para que al poner por ejemplo PRINT 2+2 saliera en pantalla un precioso 4.

Estos eran los precios que cobraban por el ALTAIR BASIC:

Con el dinero recolectado por ALTAIR BASIC pudieron fundar Microsoft… y el resto… el resto es historia.

Si el tema os interesa os paso una serie de enlaces donde podréis aprender a programar el ALTAIR 8800 gracias a emuladores tanto en EXE como online, así como enlaces a cursos en vídeo.

ALTAIR Simulador online
El simulador en sí
Manual del operador del Altair 8800
Manual de instrucciones en ensamblador
Manual de programación del Altair 8800
Un tutorial para aprender a programar el ALTAIR 8800
Un emulador en formato EXE para Windows
Una playlist de Youtube donde nos enseñan a programar desde cero el ALTAIR 8800 usando una réplica

Espero haber despertado interés con este artículo sobre la prehistoria de la computación.

Por Mahjong | 1 Comentario | Enlaza esta entrada
contacto@wintablet.info tema WinTablet.info por Ángel García (Hal9000)