{"id":636,"date":"2025-01-01T11:05:00","date_gmt":"2025-01-01T10:05:00","guid":{"rendered":"https:\/\/blogs.etsii.urjc.es\/museo\/?p=636"},"modified":"2026-03-26T15:48:59","modified_gmt":"2026-03-26T14:48:59","slug":"se-cumplen-50-anos-de-una-portada-historica","status":"publish","type":"post","link":"https:\/\/blogs.etsii.urjc.es\/museo\/divulgacion\/se-cumplen-50-anos-de-una-portada-historica\/","title":{"rendered":"Se cumplen 50 a\u00f1os de una portada hist\u00f3rica"},"content":{"rendered":"\n<p>\u00a1Feliz A\u00f1o Nuevo!<\/p>\n\n\n\n<p>En este enero de 2025 se cumplen 50 a\u00f1os exactos de una portada que cambi\u00f3 el transcurso de la Historia, y no exageramos, pues fue la semilla que dio origen a la revoluci\u00f3n inform\u00e1tica tal y como la conocemos desde entonces. Nos referimos, como no puede ser de otra forma, a la portada de la revista <a href=\"https:\/\/archive.org\/details\/197501PopularElectronics\" target=\"_blank\" rel=\"noreferrer noopener\">Popular Electronics<\/a> de enero de 1975, cuyo elemento central era el ordenador Altair 8800. Esta portada la vieron tanto Paul Allen y Bill Gates, que fundar\u00edan Micro-Soft (con guion) cuatro meses despu\u00e9s, como Steve Jobs y Steve Wozniak, que har\u00edan lo propio con Apple un a\u00f1o m\u00e1s tarde. Un segundo art\u00edculo, publicado en <a href=\"https:\/\/archive.org\/details\/197502PopularElectronics\/mode\/2up\" target=\"_blank\" rel=\"noreferrer noopener\">febrero de 1975<\/a>, daba una pincelada sobre c\u00f3mo se programaba el Altair.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"734\" height=\"1024\" src=\"https:\/\/blogs.etsii.urjc.es\/museo\/wp-content\/uploads\/sites\/12\/2024\/12\/197501-Popular-Electronics_Pagina_001-734x1024.jpg\" alt=\"\" class=\"wp-image-637\" srcset=\"https:\/\/blogs.etsii.urjc.es\/museo\/wp-content\/uploads\/sites\/12\/2024\/12\/197501-Popular-Electronics_Pagina_001-734x1024.jpg 734w, https:\/\/blogs.etsii.urjc.es\/museo\/wp-content\/uploads\/sites\/12\/2024\/12\/197501-Popular-Electronics_Pagina_001-215x300.jpg 215w, https:\/\/blogs.etsii.urjc.es\/museo\/wp-content\/uploads\/sites\/12\/2024\/12\/197501-Popular-Electronics_Pagina_001-768x1071.jpg 768w, https:\/\/blogs.etsii.urjc.es\/museo\/wp-content\/uploads\/sites\/12\/2024\/12\/197501-Popular-Electronics_Pagina_001-1102x1536.jpg 1102w, https:\/\/blogs.etsii.urjc.es\/museo\/wp-content\/uploads\/sites\/12\/2024\/12\/197501-Popular-Electronics_Pagina_001.jpg 1162w\" sizes=\"auto, (max-width: 734px) 100vw, 734px\" \/><figcaption class=\"wp-element-caption\">Portada de enero de 1975 de la revista Popular Electronics<\/figcaption><\/figure>\n\n\n\n<p>La empresa MITS (Micro Instrumentation and Telemetry Systems), no confundir con MIPS, se fundar\u00eda unos a\u00f1os antes por Ed Roberts y Forrest Mims. Inicialmente se dedicaba a productos de coheter\u00eda, ya que creaba detectores de telemetr\u00eda. Luego empez\u00f3 a construir calculadoras electr\u00f3nicas, en pleno apogeo por aquella \u00e9poca. Una guerra de precios exacerbada les llev\u00f3 casi a la ruina a pesar del \u00e9xito de sus calculadoras. As\u00ed fue c\u00f3mo desembarcaron en el \u00e1mbito de la inform\u00e1tica personal.<\/p>\n\n\n\n<p>Hay que imaginarse c\u00f3mo era la d\u00e9cada de los 70 en cuanto a la Inform\u00e1tica se refiere. No exist\u00edan los ordenadores personales. Hab\u00eda grandes ordenadores en el \u00e1mbito cient\u00edfico, gubernamental y militar, pero el resto de los mortales no ten\u00edan acceso a estas m\u00e1quinas. Parafraseando a un personaje de la pel\u00edcula <a href=\"https:\/\/www.imdb.com\/es-es\/title\/tt0168122\/\" target=\"_blank\" rel=\"noreferrer noopener\">Piratas de Silicon Valley<\/a> (Martyn Burke, 1999), que narra los comienzos de Apple y de Microsoft, &#8220;\u00bfpara qu\u00e9 va a querer la gente normal querer ordenadores?&#8221;.<\/p>\n\n\n\n<p>Aqu\u00ed es donde llega la idea genial de Ed Roberts. Se le ocurri\u00f3 crear un ordenador barato que pudiera interesar a entusiastas de la electr\u00f3nica, hasta el punto de que lo vender\u00eda en formato kit, es decir, en una bolsita te daban todos los materiales, pero te lo ten\u00edas que montar (y soldar) por tu cuenta. Esto redujo enormemente los precios, en concreto, hasta los 439 $. \u00bfCu\u00e1nto supon\u00eda esta cantidad en 1975? Pues segu\u00eda siendo una enorme cantidad, hasta medio sueldo en muchos casos, y sin embargo esto no impidi\u00f3 que fuera un \u00e9xito.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\u00bfPara qu\u00e9 va a querer la gente normal querer ordenadores? <\/p>\n\n\n\n<p>(Piratas de Silicon Valley, Martyn Burke, 1999)<\/p>\n<\/blockquote>\n\n\n\n<p>Como suele suceder a menudo, el Altair 8800 no fue el primer ordenador en kit anunciado en una revista de electr\u00f3nica. En julio de 1974 ya se hab\u00eda publicado un art\u00edculo sobre el Mark-8 en la revista <a href=\"https:\/\/archive.org\/details\/radioelectronics45unse_5\" target=\"_blank\" rel=\"noreferrer noopener\">Radio Electronics<\/a>, si bien no tuvo una gran acogida. Ni siquiera hab\u00eda sido el primer intento de llevar los ordenadores hacia un p\u00fablico m\u00e1s general, aunque todav\u00eda en el \u00e1mbito educativo, como s\u00ed ocurri\u00f3 con el <a href=\"https:\/\/archive.org\/details\/bitsavers_kenbakKENB_836265\/mode\/2up\" target=\"_blank\" rel=\"noreferrer noopener\">Kenbak-1<\/a> de 1971. Sin embargo, fue el Altair 8800 el que alcanz\u00f3 la gloria y aceler\u00f3 todo lo que vino despu\u00e9s.<\/p>\n\n\n\n<p>La revoluci\u00f3n tecnol\u00f3gica que posibilit\u00f3 el Altair se hab\u00eda producido cuatro a\u00f1os antes. En noviembre de 1971 la empresa Intel present\u00f3 al mundo el primer microprocesador de la historia, el Intel 4004. Hasta entonces, los ordenadores se constru\u00edan con componentes discretos, transistores, resistencias, condensadores. Exist\u00edan ya circuitos integrados o chips, pero no fue hasta esa fecha que lograron fabricar el primer chip que inclu\u00eda por completo todo lo necesario para &#8220;gobernar&#8221; al resto del computador, algo as\u00ed como el anillo \u00fanico de El Se\u00f1or de los Anillos. Nos referimos al procesador o unidad central de proceso. Ese primer chip 4004 era muy limitado (las palabras eran de 4 bits) y tuvo su aplicaci\u00f3n en el \u00e1mbito de las calculadoras. Al a\u00f1o siguiente lleg\u00f3 el 8008, y en 1974, el 8080 (&#8220;ochenta ochenta&#8221;). Fue este el procesador elegido para el Altair.<\/p>\n\n\n\n<p>El Intel 8080 ya empezaba a apuntar maneras en cuanto a su potencia de c\u00e1lculo. Se trataba de un procesador preparado para trabajar con palabras de 8 bits (o bytes), si bien pod\u00eda manejar direcciones de memoria de 16 bits, con lo que en teor\u00eda podr\u00eda direccionar hasta 64 kB (una cantidad inmensa para aquella \u00e9poca). La frecuencia de reloj, que va marcando el ritmo al que se iban ejecutando las instrucciones, pod\u00eda alcanzar los 2 MHz (un megahercio representa un mill\u00f3n de oscilaciones por segundo). El procesador se ofrec\u00eda en un empaquetado de doble hilera de 40 pines. <\/p>\n\n\n\n<p>Hay que pensar que el Altair se ofrec\u00eda &#8220;tal cual&#8221;, sin la log\u00edstica necesaria para un uso adecuado y sencillo. No dispon\u00eda de teclado, ni mucho menos rat\u00f3n. Tampoco ten\u00eda monitor ni pod\u00eda conectarse a un televisor. Simplemente constaba de una serie de lucecitas led, 36 en total, y unos interruptores de palanca en el panel frontal. A trav\u00e9s de los interruptores, deb\u00edan introducirse los programas en c\u00f3digo m\u00e1quina, es decir, expresados en binario. Los resultados se visualizaban mediante los ledes que, encendidos o apagados, mostraban el valor de cada byte. <\/p>\n\n\n\n<p>Aunque se pod\u00eda ampliar, el Altair ven\u00eda equipado inicialmente con la friolera de 256 bytes de memoria. Un byte sirve para almacenar cada una de las letras, n\u00fameros, espacios o signos de un texto, con lo que se necesitar\u00edan 256 para memorizar este p\u00e1rrafo.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"490\" src=\"https:\/\/blogs.etsii.urjc.es\/museo\/wp-content\/uploads\/sites\/12\/2024\/12\/altair8800-1024x490.jpg\" alt=\"\" class=\"wp-image-650\" srcset=\"https:\/\/blogs.etsii.urjc.es\/museo\/wp-content\/uploads\/sites\/12\/2024\/12\/altair8800-1024x490.jpg 1024w, https:\/\/blogs.etsii.urjc.es\/museo\/wp-content\/uploads\/sites\/12\/2024\/12\/altair8800-300x144.jpg 300w, https:\/\/blogs.etsii.urjc.es\/museo\/wp-content\/uploads\/sites\/12\/2024\/12\/altair8800-768x368.jpg 768w, https:\/\/blogs.etsii.urjc.es\/museo\/wp-content\/uploads\/sites\/12\/2024\/12\/altair8800-1536x736.jpg 1536w, https:\/\/blogs.etsii.urjc.es\/museo\/wp-content\/uploads\/sites\/12\/2024\/12\/altair8800-2048x981.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">R\u00e9plica del Altair 8800 que pudo contemplarse en el evento <a href=\"https:\/\/www.retromadrid.org\/balance-resultados-retromadrid-2018\/\" target=\"_blank\" rel=\"noreferrer noopener\">RetroMadrid 2018<\/a> (foto: \u00c1ngel Serrano S\u00e1nchez de Le\u00f3n)<\/figcaption><\/figure>\n\n\n\n<p>La programaci\u00f3n en c\u00f3digo m\u00e1quina no est\u00e1 al alcance de cualquiera. El ordenador acepta una secuencia de ceros y unos en un orden determinado para indicarle qu\u00e9 es lo que debe realizar, si debe leer dos n\u00fameros almacenados en la memoria y sumarlos y mostrar el resultado en los ledes, o bien, si se prefiere realizar cualquier otra operaci\u00f3n que se desee. El c\u00f3digo binario es el lenguaje nativo del computador, porque lo comprende inmediatamente, pero se encuentra muy alejado de la manera que tenemos los humanos de pensar y trabajar. Por eso nos resulta tan complicado. Para aligerar un poco la programaci\u00f3n, a determinadas secuencias de ceros y unos se les pone un alias o &#8220;mnemot\u00e9cnico&#8221; (llamado as\u00ed porque se trata de una palabra m\u00e1s f\u00e1cil de recordar que una ristra de bits).<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Aunque se pod\u00eda ampliar, el Altair ven\u00eda equipado inicialmente con la friolera de 256 bytes de memoria. Un byte sirve para almacenar cada una de las letras, n\u00fameros, espacios o signos de un texto, con lo que se necesitar\u00edan 256 para memorizar este p\u00e1rrafo.<\/p>\n<\/blockquote>\n\n\n\n<p>Un computador puede considerarse que est\u00e1 formado por varios bloques o unidades funcionales, que cumplen un cometido muy espec\u00edfico. La memoria es el almac\u00e9n de informaci\u00f3n, que sirve para albergar tanto los programas (secuencias de instrucciones) como los datos que manipular\u00e1n dichos programas. La memoria puede imaginarse como un cine de butacas numeradas. Cada byte (conjunto de 8 bits) tiene una direcci\u00f3n \u00fanica, al igual que tu entrada de cine te dice si va al patio de butacas, lado derecho, fila 7 y butaca 10. El procesador, que es la parte m\u00e1s importante, dispone de una secci\u00f3n para realizar los c\u00e1lculos, la llamada unidad aritm\u00e9tico-l\u00f3gica (o ALU, por sus siglas en ingl\u00e9s), m\u00e1s otra secci\u00f3n llamada unidad de control, que es quien coordina a los dem\u00e1s componentes del computador y les dice lo que tienen que hacer y en qu\u00e9 preciso instante lo deben hacer. Puesto que el ordenador debe poder comunicarse con el exterior para extraer o introducir informaci\u00f3n, tiene un bloque especializado en las operaciones de entrada-salida. Para terminar, todos los elementos est\u00e1n conectados mediante un bus, que es como una autopista de m\u00faltiples carriles por los que se van enviando los datos entre los diferentes componentes del computador.<\/p>\n\n\n\n<p>En el caso concreto del Intel 8080, todas las operaciones aritm\u00e9ticas necesitan trabajar con un elemento primordial de la ALU llamado acumulador. Seguro que has manejado un acumulador en tu vida sin darte cuenta. Por ejemplo, enciende una calculadora, da igual que sea la del m\u00f3vil, la del ordenador, o una &#8220;de verdad&#8221;. Escribe 1 y pulsa el signo m\u00e1s repetidamente. Autom\u00e1ticamente en la pantalla aparecer\u00e1 un 2. Si sigues pulsando el m\u00e1s, saldr\u00e1 un 3 y un 4, y as\u00ed sucesivamente. Cada suma necesita dos n\u00fameros. En este caso, uno de los n\u00fameros es el resultado de la suma anterior. Ese es el acumulador. En el 8080, el acumulador es tan importante que simb\u00f3licamente se le llama A. Se trata de un registro especial para albergar un dato de 8 bits que es siempre uno de los operandos de una operaci\u00f3n aritm\u00e9tica y tambi\u00e9n es donde se guarda el resultado de la operaci\u00f3n.<\/p>\n\n\n\n<p>El 8080 dispone de otros registros, llamados B, C, D, E, H y L, todos de 8 bits tambi\u00e9n, si bien pueden operar en parejas para albergar datos de 16 bits (el B con el C, el D con el E, y el H con el L). Estos registros complementan al acumulador A en sus tareas para realizar los c\u00e1lculos aritm\u00e9ticos.<\/p>\n\n\n\n<p>Otro registro especial de gran importancia es el llamado contador de programa (o PC por sus siglas en ingl\u00e9s). Se trata de un registro de 16 bits que contiene no un dato, sino una direcci\u00f3n de memoria (recordemos que todas las direcciones de memoria del 8080 son de 16 bits, aunque el Altair solo pueda acceder por defecto a las primeras 256 posiciones). En concreto, el programa que queremos ejecutar se encuentra almacenado a partir de la direcci\u00f3n de memoria 0. El programa se organiza en peque\u00f1as instrucciones o comandos, que le dicen al ordenador lo que tienen que hacer. El PC va anotando en cada instante la direcci\u00f3n de la siguiente instrucci\u00f3n que tiene que ejecutar, algo as\u00ed como el apuntador que va recordando las frases a los actores de una obra de teatro.<\/p>\n\n\n\n<p>Veamos paso a paso un sencillo programa para el Altair 8800. Puede comprobarse con este <a href=\"https:\/\/s2js.com\/altair\/\" target=\"_blank\" rel=\"noreferrer noopener\">espl\u00e9ndido simulador<\/a> que hemos encontrado por Internet. Supongamos que disponemos de dos n\u00fameros almacenados en nuestra memoria y que queremos sumarlos y ver el resultado. Por ejemplo, tenemos el n\u00famero 1 almacenado en la direcci\u00f3n de memoria 16 y el n\u00famero 2 en la direcci\u00f3n siguiente, la 17. En la direcci\u00f3n 18 escribiremos la suma.<\/p>\n\n\n\n<p>Para poder realizar esta operaci\u00f3n, escribiremos un sencillo programa. Para que nos resulte m\u00e1s f\u00e1cil de entender, daremos primero la versi\u00f3n en ensamblador, es decir, utilizando mnemot\u00e9cnicos y valores num\u00e9ricos en base 10, pero luego explicaremos c\u00f3mo se convierte a binario para programar el Altair.<\/p>\n\n\n\n<p>La primera instrucci\u00f3n consiste en leer de la memoria el primero de los operandos, que, como hemos dicho, se encuentra en la direcci\u00f3n 16, y llevarlo o &#8220;cargarlo&#8221; en el acumulador. El mnemot\u00e9cnico de esta operaci\u00f3n es LDA (<em>load accumulator<\/em>) y va seguido de la direcci\u00f3n que queremos leer, es decir:<\/p>\n\n\n\n<p>LDA 16<\/p>\n\n\n\n<p>Cuando se haya ejecutado esta instrucci\u00f3n, el acumulador A valdr\u00e1 1, pues este es el valor almacenado en la direcci\u00f3n 16 de la memoria.<\/p>\n\n\n\n<p>Necesitamos leer el segundo operando para poder realizar la suma, con lo que tendremos que mover el 1 a un lugar seguro donde no nos estorbe. Por eso, la segunda instrucci\u00f3n consiste en mover (m\u00e1s bien, copiar) el valor del acumulador A en el registro auxiliar B. El mnemot\u00e9cnico es MOV (<em>move<\/em>) y va seguido del registro al que llevamos el dato, en este caso B, separado por una coma del registro del que tomamos el dato, en este caso A. Por tanto:<\/p>\n\n\n\n<p>MOV B,A<\/p>\n\n\n\n<p>Tras ejecutar esta instrucci\u00f3n, tanto el registro B como el A contendr\u00e1n el valor 1. La operaci\u00f3n de copiar el valor de A en B no modifica el valor de A.<\/p>\n\n\n\n<p>Repetimos de nuevo la operaci\u00f3n de carga, es decir, leer un valor de la memoria para escribirlo en el acumulador. En esta ocasi\u00f3n, toca leer la direcci\u00f3n de memoria 17, que es donde tenemos almacenado el n\u00famero 2.<\/p>\n\n\n\n<p>LDA 17<\/p>\n\n\n\n<p>Tras esta operaci\u00f3n, el acumulador A contendr\u00e1 el valor 2, mientras que el registro B sigue valiendo 1. Ya tenemos los dos operandos que queremos sumar. Lo que nos queda ahora es activar la operaci\u00f3n de sumar, para lo cual usaremos el mnemot\u00e9cnico ADD. El acumulador se sobreentiende que es uno de los sumandos, as\u00ed como el lugar donde almacenaremos el resultado. Solo nos falta indicar cu\u00e1l ser\u00e1 el segundo sumando, en este caso, el registro B.<\/p>\n\n\n\n<p>ADD B<\/p>\n\n\n\n<p>Con esta operaci\u00f3n, hemos hecho que el acumulador contenga un 3, que es el resultado de la suma 1+2. Ahora vamos a almacenar este resultado en la direcci\u00f3n de memoria 18, que es la que ten\u00edamos reservada a tal efecto. La operaci\u00f3n de escribir en memoria se denomina STA (<em>store accumulator<\/em>), que va seguida de la direcci\u00f3n 18.<\/p>\n\n\n\n<p>STA 18<\/p>\n\n\n\n<p>El efecto que produce esta instrucci\u00f3n es que el valor del acumulador, que contiene el 3, se deposita en la direcci\u00f3n de memoria 18. Las direcciones 16 y 17, que conten\u00edan el 1 y el 2, no se ven afectadas por esta operaci\u00f3n. Este almacenamiento no enciende ni apaga ning\u00fan led, pero luego podremos comprobar el contenido de esta posici\u00f3n de memoria, como diremos despu\u00e9s.<\/p>\n\n\n\n<p>Para terminar, podemos pedirle al procesador que se paralice y no intente seguir ejecutando instrucciones. Para ello usamos la instrucci\u00f3n HLT (<em>halt<\/em>).<\/p>\n\n\n\n<p>HLT<\/p>\n\n\n\n<p>El conjunto de todas estas instrucciones forman el programa que realiza la suma de dos n\u00fameros. Sin embargo, el procesador necesita que le proporcionemos toda esta informaci\u00f3n mascadita y en formato binario, o de lo contrario no entender\u00e1 ni papa. Debemos consultar por ejemplo la <a href=\"https:\/\/archive.org\/details\/intel80858080assemblylanguagereferencecard\" target=\"_blank\" rel=\"noreferrer noopener\">tarjeta de referencia del procesador 8080<\/a> para conocer las equivalencias entre los mnemot\u00e9cnicos de ensamblador y el c\u00f3digo m\u00e1quina. Las instrucciones se codifican en binario con varios bytes, seg\u00fan el mnemot\u00e9cnico y los operandos, en concreto entre 1 y 3 bytes.<\/p>\n\n\n\n<p>Comencemos con LDA 16. Al mnemot\u00e9cnico LDA le corresponde el byte $3A (escrito en notaci\u00f3n hexadecimal), tambi\u00e9n expresable como 00 111 010 en binario. Este byte lo almacenaremos en la posici\u00f3n de memoria 0. A continuaci\u00f3n, debemos expresar la direcci\u00f3n 16 con 2 bytes, donde colocaremos en la direcci\u00f3n de memoria 1 el byte de la derecha, el menos significativo, y en la direcci\u00f3n 2 el de la izquierda, el m\u00e1s significativo. Por tanto, en la direcci\u00f3n 1 tendremos $10 o 00 010 000 y en la direcci\u00f3n 2 estar\u00e1 $00 o 00 000 000.<\/p>\n\n\n\n<p>La segunda instrucci\u00f3n era MOV B,A. En este caso, solo nos hace falta un \u00fanico byte, ya que est\u00e1 reservado el valor hexadecimal $47 o binario 01 000 111 para codificar la instrucci\u00f3n MOV con los operandos B,A. Este byte estar\u00e1 almacenado en la direcci\u00f3n de memoria 3.<\/p>\n\n\n\n<p>La tercera instrucci\u00f3n es una nueva carga, LDA 17. El c\u00f3digo de LDA ya lo conocemos, $3A o 00 111 010. Este byte estar\u00e1 en la direcci\u00f3n de memoria 4. A continuaci\u00f3n, la direcci\u00f3n 17 se codifica una vez m\u00e1s como 2 bytes, primero el de la derecha y luego el de la izquierda. En la direcci\u00f3n 5 tendremos $11 o 00 010 001, y en la direcci\u00f3n 6 tendremos $00 o 00 000 000.<\/p>\n\n\n\n<p>La siguiente instrucci\u00f3n es ADD B. Al mnemot\u00e9cnico ADD le corresponde el c\u00f3digo $80 o 10 000 000 cuando el sumando es el registro B. Por eso, de nuevo tenemos una instrucci\u00f3n de un \u00fanico byte. Estar\u00e1 almacenado en la direcci\u00f3n de memoria 7.<\/p>\n\n\n\n<p>A continuaci\u00f3n, tenemos STA 18. El mnemot\u00e9cnico STA se codifica con el byte $32 o 00 110 010, que estar\u00e1 en la direcci\u00f3n de memoria 8. Despu\u00e9s, y una vez m\u00e1s, se codifica el valor 18 con 2 bytes, que ser\u00e1n $12 o 00 010 010 (direcci\u00f3n 9) y $00 o 00 000 000 (direcci\u00f3n 10).<\/p>\n\n\n\n<p>Para terminar, la instrucci\u00f3n HLT tiene el c\u00f3digo $76 o 01 110 110. Esto finaliza la parte de la memoria que contiene el programa.<\/p>\n\n\n\n<p>No podemos olvidarnos de los datos. En la direcci\u00f3n de memoria 16 debemos tener el byte $01 o 00 000 001, mientras que en la posici\u00f3n 17 tendremos el byte $02 o 00 000 010. Estos son los dos valores que suma el programa.<\/p>\n\n\n\n<p>En resumen, queremos cargar el siguiente programa en la memoria del Altair:<\/p>\n\n\n\n<figure class=\"wp-block-table aligncenter\"><table class=\"has-fixed-layout\"><tbody><tr><td class=\"has-text-align-center\" data-align=\"center\">Direcci\u00f3n de memoria<\/td><td class=\"has-text-align-center\" data-align=\"center\">Contenido de la direcci\u00f3n de memoria (en hexadecimal)<\/td><td class=\"has-text-align-center\" data-align=\"center\">Contenido de la direcci\u00f3n de memoria (en binario)<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">0<\/td><td class=\"has-text-align-center\" data-align=\"center\">$3A<\/td><td class=\"has-text-align-center\" data-align=\"center\">00 111 010<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">1<\/td><td class=\"has-text-align-center\" data-align=\"center\">$10<\/td><td class=\"has-text-align-center\" data-align=\"center\">00 010 000<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">2<\/td><td class=\"has-text-align-center\" data-align=\"center\">$00<\/td><td class=\"has-text-align-center\" data-align=\"center\">00 000 000<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">3<\/td><td class=\"has-text-align-center\" data-align=\"center\">$47<\/td><td class=\"has-text-align-center\" data-align=\"center\">01 000 111<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">4<\/td><td class=\"has-text-align-center\" data-align=\"center\">$3A<\/td><td class=\"has-text-align-center\" data-align=\"center\">00 111 010<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">5<\/td><td class=\"has-text-align-center\" data-align=\"center\">$11<\/td><td class=\"has-text-align-center\" data-align=\"center\">00 010 001<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">6<\/td><td class=\"has-text-align-center\" data-align=\"center\">$00<\/td><td class=\"has-text-align-center\" data-align=\"center\">00 000 000<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">7<\/td><td class=\"has-text-align-center\" data-align=\"center\">$80<\/td><td class=\"has-text-align-center\" data-align=\"center\">10 000 000<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">8<\/td><td class=\"has-text-align-center\" data-align=\"center\">$32<\/td><td class=\"has-text-align-center\" data-align=\"center\">00 110 010<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">9<\/td><td class=\"has-text-align-center\" data-align=\"center\">$12<\/td><td class=\"has-text-align-center\" data-align=\"center\">00 010 010<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">10<\/td><td class=\"has-text-align-center\" data-align=\"center\">$00<\/td><td class=\"has-text-align-center\" data-align=\"center\">00 000 000<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">11<\/td><td class=\"has-text-align-center\" data-align=\"center\">$76<\/td><td class=\"has-text-align-center\" data-align=\"center\">01 110 110<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">&#8230;<\/td><td class=\"has-text-align-center\" data-align=\"center\">&#8230;<\/td><td class=\"has-text-align-center\" data-align=\"center\">&#8230;<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">16<\/td><td class=\"has-text-align-center\" data-align=\"center\">$01<\/td><td class=\"has-text-align-center\" data-align=\"center\">00 000 001<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">17<\/td><td class=\"has-text-align-center\" data-align=\"center\">$02<\/td><td class=\"has-text-align-center\" data-align=\"center\">00 000 010<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Bien, ya solo nos queda introducir estos valores binarios en el Altair, pero no tiene teclado. \u00bfC\u00f3mo lo haremos? Pues accionando adecuadamente los diferentes interruptores de palanca que encontraremos en su panel frontal.<\/p>\n\n\n\n<p>En primer lugar, se enciende el Altair con el interruptor m\u00e1s a la izquierda (donde pone OFF\/ON). A continuaci\u00f3n, se realiza un reseteo accionando el interruptor RESET.<\/p>\n\n\n\n<p>Vemos que el Altair est\u00e1 equipado en su zona central con 16 interruptores, numerados desde el 15 al 0. Comprobemos que est\u00e1n todos los interruptores en su posici\u00f3n inferior (significa 0). Si pulsamos el interruptor EXAMINE, estaremos consultando el contenido de la direcci\u00f3n de memoria 0, es decir, hemos establecido el valor del registro PC para que apunte a la direcci\u00f3n 0. Los ledes marcados de A15 hasta A0 (la A viene de <em>address<\/em>, direcci\u00f3n) estar\u00e1n todos apagados, ya que el valor 0 se escribe en binario con 16 ceros. Por otro lado, algunos de los ledes marcados de D7 a D0 estar\u00e1n encendidos y otros estar\u00e1n apagados. Estos ledes muestran el byte almacenado en la direcci\u00f3n de memoria. Esto se debe a que el contenido de la memoria es aleatorio hasta que no se le da un valor concreto.<\/p>\n\n\n\n<p>Manipulemos ahora los interruptores 7 a 0 para escribir el primer byte del programa, que ya sabemos que debe valer 00 111 010. Esto significa que los interruptores 5, 4, 3 y 1 estar\u00e1n apuntando hacia arriba para indicar un 1, mientras que los dem\u00e1s estar\u00e1n apuntando hacia abajo para indicar un 0. Si a continuaci\u00f3n pulsamos el interruptor DEPOSIT, habremos escrito este byte (correspondiente al mnemot\u00e9cnico LDA) en la direcci\u00f3n de memoria 0.<\/p>\n\n\n\n<p>De esta forma se podr\u00eda ir realizando la escritura del programa: primero marcando la direcci\u00f3n para examinarla y luego escribiendo el byte para depositarlo. Para acelerar el proceso, puesto que el programa se compone de instrucciones que se almacenan en posiciones consecutivas de memoria, podemos ahora manipular los interruptores para escribir el siguiente byte (00 010 000). Para ello, bajamos todos los interruptores, excepto el n\u00famero 4, que se queda apuntando hacia arriba. Pulsaremos ahora el interruptor DEPOSIT NEXT. Esto lo que hace es escribir este byte a continuaci\u00f3n del anterior, es decir, en la direcci\u00f3n de memoria 1. Con mucho cuidado, iremos escribiendo el programa byte a byte y activando el interruptor DEPOSIT NEXT.<\/p>\n\n\n\n<p>Para terminar, una vez introducida el byte correspondiente a la instrucci\u00f3n HLT (01 110 110), nos queda por introducir los dos datos. Manipulando los interruptores para seleccionar la direcci\u00f3n 16 (todos los interruptores est\u00e1n apuntando hacia abajo excepto el n\u00famero 4), pulsamos en este caso EXAMINE. Se enciende en este caso el led A4 y los ledes de datos D7 a D0 podr\u00e1n estar encendidos o apagados. Bajamos el interruptor 4 y subimos el interruptor 0. Pulsamos DEPOSIT. Habremos escrito 00 000 001 en la posici\u00f3n de memoria 16. Seguidamente, bajamos el interruptor 0 y subimos el 1. Pulsamos DEPOSIT NEXT. Ahora tenemos el valor 00 000 010 en la posici\u00f3n de memoria 17.<\/p>\n\n\n\n<p>F\u00e1cil, \u00bfverdad?<\/p>\n\n\n\n<p>Si no nos hemos equivocado al activar o desactivar los interruptores, habremos introducido adecuadamente nuestro programa. Nos bastar\u00e1 ahora con activar el interruptor RUN. Puesto que el Altair se ejecuta siguiendo el tictac de un reloj interno que suena 2 millones de veces por segundo, tan pronto hayamos pulsado RUN, ya se habr\u00e1 ejecutado el programa. As\u00ed que podemos parar el ordenador accionando el interruptor STOP.<\/p>\n\n\n\n<p>Para comprobar que la suma se ha realizado, escribimos la direcci\u00f3n de memoria 18. Recordemos que todos los interruptores deben estar desactivados excepto el 4 y el 1. Si pulsamos EXAMINE, en los ledes de datos deber\u00eda verse el valor 3, que en binario se expresa como 00 000 011, es decir, los ledes D1 y D0 estar\u00e1n encendidos y los dem\u00e1s apagados.<\/p>\n\n\n\n<p>\u00bfY c\u00f3mo un ordenador que ten\u00edas que soldar por piezas en tu casa y que no ten\u00eda teclado ni pantalla pudo triunfar? \u00a1Si parec\u00eda no estar predestinado para ello! Como ya hemos explicado, hemos tenido que aprender un poco de la arquitectura interna del procesador para poder hacer un programa de lo m\u00e1s tonto, pero que para nada es evidente. Programar ordenadores directamente en c\u00f3digo m\u00e1quina es un infierno y hacerlo en ensamblador solo alivia un poco la tarea. \u00bfQu\u00e9 se nos est\u00e1 escapando?<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Programar ordenadores directamente en c\u00f3digo m\u00e1quina es un infierno y hacerlo en ensamblador solo alivia un poco la tarea. \u00bfQu\u00e9 se nos est\u00e1 escapando?<\/p>\n<\/blockquote>\n\n\n\n<p>Pues aqu\u00ed es donde entran Bill Gates y Paul Allen. Cuando contemplaron la portada de Popular Electronics se dieron cuenta al instante de que el negocio de la Inform\u00e1tica estaba en el software, los programas, no en crear ordenadores. Y supusieron que esta maquinita de lucecitas y palanquitas necesitar\u00eda un lenguaje m\u00e1s amigable para poder comunicarse con los humanos. Y aqu\u00ed es donde idearon el <a href=\"https:\/\/archive.org\/details\/bitsavers_mitsAltairceJul77_9357641\/mode\/2up\">Altair Basic<\/a>. El Basic era un lenguaje de programaci\u00f3n interpretado que se hab\u00eda inventado una d\u00e9cada atr\u00e1s en la Universidad de Dartmouth por John G. Kemeny&nbsp;y Thomas E. Kurtz. Fue creado para permitir que cualquier estudiante, no solo de \u00e1reas como las matem\u00e1ticas o la ingenier\u00eda, pudieran escribir sus propios programas. Las primeras versiones de Basic se usaron en sistemas de tiempo compartido y, m\u00e1s adelante, para alg\u00fan minicomputador, pero la primera para un microordenador fue la del Altair 8800.<\/p>\n\n\n\n<p>Gates y Allen, como grandes vendedores de humo, llamaron a Ed Roberts para ofrecerle su versi\u00f3n de Basic para el Altair. En realidad, no ten\u00edan nada. El propio Allen termin\u00f3 la programaci\u00f3n in extremis en el avi\u00f3n que le llev\u00f3 a su reuni\u00f3n en la sede de MITS. Pero por suerte para ellos, todo sali\u00f3 sobre ruedas, y este fue el primer gran producto de la nueva Micro-Soft. La versi\u00f3n m\u00e1s reducida de Basic ocupaba 4 kB (de ah\u00ed que pasara a llamarse Basic 4K), si bien luego se hicieron las versiones de 8K y 12K, entre otras. El precio del Basic 4K rondaba los 150 $. Recordemos que el kit del Altair se vend\u00eda a 439 $. Bill Gates ya apuntaba maneras y ser\u00eda el despegue de su empresa, pero eso ya es otra historia.<\/p>\n\n\n\n<p>\u00bfCu\u00e1l fue el destino del Altair 8800? B\u00e1sicamente, MITS muri\u00f3 de \u00e9xito. Fue tal la cantidad de pedidos que recibieron, que no pudieron hacer frente a la demanda. Afortunadamente, gracias al bus S-100, elegido para su estructura interna, y convertido en todo un est\u00e1ndar de facto, surgieron numerosos fabricantes de componentes y tarjetas de expansi\u00f3n compatibles con el Altair sin tener que soportar las largas listas de espera de MITS. As\u00ed surgi\u00f3 el concepto de industria. En 1977 MITS fue vendida a la empresa Pertec. El propio Ed Roberts se retir\u00f3 del mundo de la Inform\u00e1tica y se acab\u00f3 convirtiendo en m\u00e9dico rural.<\/p>\n\n\n\n<p>A finales de 1975, sali\u00f3 al mercado el primer ordenador cl\u00f3nico de la historia, como no pod\u00eda ser de otra forma, del Altair. Se trataba del Imsai 8080, muy conocido por la pel\u00edcula <a href=\"https:\/\/www.youtube.com\/watch?v=1VZlmV9V2Do\" target=\"_blank\" rel=\"noreferrer noopener\">Juegos de Guerra<\/a> (1983). El Imsai fue un redise\u00f1o total respecto del Altair, pero segu\u00eda funcionando a base de pulsadores y lucecitas led. Incluso la carcasa exterior era de un azul similar al del Altair. Ya hablaremos en otro art\u00edculo sobre este ordenador.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"558\" src=\"https:\/\/blogs.etsii.urjc.es\/museo\/wp-content\/uploads\/sites\/12\/2024\/12\/imsai8080-1024x558.jpg\" alt=\"\" class=\"wp-image-664\" srcset=\"https:\/\/blogs.etsii.urjc.es\/museo\/wp-content\/uploads\/sites\/12\/2024\/12\/imsai8080-1024x558.jpg 1024w, https:\/\/blogs.etsii.urjc.es\/museo\/wp-content\/uploads\/sites\/12\/2024\/12\/imsai8080-300x163.jpg 300w, https:\/\/blogs.etsii.urjc.es\/museo\/wp-content\/uploads\/sites\/12\/2024\/12\/imsai8080-768x418.jpg 768w, https:\/\/blogs.etsii.urjc.es\/museo\/wp-content\/uploads\/sites\/12\/2024\/12\/imsai8080-1536x837.jpg 1536w, https:\/\/blogs.etsii.urjc.es\/museo\/wp-content\/uploads\/sites\/12\/2024\/12\/imsai8080-2048x1115.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">R\u00e9plica del Imsai 8080 expuesta en el <a href=\"https:\/\/oxomuseomadrid.com\/?\" target=\"_blank\" rel=\"noreferrer noopener\">Museo OXO de Madrid<\/a> (foto: \u00c1ngel Serrano S\u00e1nchez de Le\u00f3n)<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">M\u00e1s informaci\u00f3n:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>H. E. Roberts y W. Yates, <a href=\"https:\/\/archive.org\/details\/197501PopularElectronics\/page\/n27\/mode\/2up\" target=\"_blank\" rel=\"noreferrer noopener\">\u00abAltair 8800: The most powerful minicomputer project ever presented\u2014can be built for under $400\u00bb<\/a>, <em>Popular Electronics<\/em>, volumen 7, n\u00famero 1, enero 1975, pp. 33-38<\/li>\n\n\n\n<li>H. E. Roberts y W. Yates, <a href=\"https:\/\/archive.org\/details\/197502PopularElectronics\/page\/58\/mode\/2up\">\u00abBuild the Altair 8800 Minicomputer Part 2: P<\/a><a href=\"https:\/\/archive.org\/details\/197502PopularElectronics\/page\/58\/mode\/2up\" target=\"_blank\" rel=\"noreferrer noopener\">r<\/a><a href=\"https:\/\/archive.org\/details\/197502PopularElectronics\/page\/58\/mode\/2up\">actical use of the computer, including programming\u00bb<\/a>, <em>Popular Electronics<\/em>, volumen 7, n\u00famero 2, febrero 1975, pp. 56-58<\/li>\n\n\n\n<li><a href=\"https:\/\/archive.org\/details\/intel80858080assemblylanguagereferencecard\" target=\"_blank\" rel=\"noreferrer noopener\">Intel 8085\/8080 Assembly Language Reference Card<\/a>, Intel Corporation, marzo 1979<\/li>\n\n\n\n<li><a href=\"https:\/\/archive.org\/details\/intel-8080-assembly-language-programming-manual-1975\/mode\/2up\" target=\"_blank\" rel=\"noreferrer noopener\">Intel 8080 Assembly Language Programming Manual, Rev. B<\/a>, Intel Corporation, 1975<\/li>\n\n\n\n<li><a href=\"https:\/\/archive.org\/details\/bitsavers_mitsAltairceJul77_9357641\/mode\/2up\" target=\"_blank\" rel=\"noreferrer noopener\">Altair 8800 Basic Reference Manual Version 4.1<\/a>, MITS Inc., julio 1977<\/li>\n\n\n\n<li>MITS Altair Simulator, <a href=\"https:\/\/s2js.com\/altair\/\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/s2js.com\/altair\/<\/a><\/li>\n\n\n\n<li>P. Freiberger y M. Swaine, <em>Fire in the Valley: The Making of the Personal Computing<\/em>, McGraw-Hill Education, 2.\u00aa edici\u00f3n, 1999<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00a1Feliz A\u00f1o Nuevo! En este enero de 2025 se cumplen 50 a\u00f1os exactos de una portada que cambi\u00f3 el transcurso de la Historia, y no exageramos, pues fue la semilla que dio origen a la revoluci\u00f3n inform\u00e1tica tal y como la conocemos desde entonces. Nos referimos, como no puede ser de otra forma, a la [&hellip;]<\/p>\n","protected":false},"author":12,"featured_media":650,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[12],"tags":[77,88,86,82,81,85,80,78,79,84,87,83],"class_list":["post-636","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-divulgacion","tag-altair-8800","tag-basic","tag-bill-gates","tag-binario","tag-codigo-maquina","tag-ed-roberts","tag-ensamblador","tag-imsai-8080","tag-intel-8080","tag-microsoft","tag-paul-allen","tag-popular-electronics"],"_links":{"self":[{"href":"https:\/\/blogs.etsii.urjc.es\/museo\/wp-json\/wp\/v2\/posts\/636","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.etsii.urjc.es\/museo\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.etsii.urjc.es\/museo\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/museo\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/museo\/wp-json\/wp\/v2\/comments?post=636"}],"version-history":[{"count":27,"href":"https:\/\/blogs.etsii.urjc.es\/museo\/wp-json\/wp\/v2\/posts\/636\/revisions"}],"predecessor-version":[{"id":695,"href":"https:\/\/blogs.etsii.urjc.es\/museo\/wp-json\/wp\/v2\/posts\/636\/revisions\/695"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/museo\/wp-json\/wp\/v2\/media\/650"}],"wp:attachment":[{"href":"https:\/\/blogs.etsii.urjc.es\/museo\/wp-json\/wp\/v2\/media?parent=636"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/museo\/wp-json\/wp\/v2\/categories?post=636"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/museo\/wp-json\/wp\/v2\/tags?post=636"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}