¡Trabajadores! Nuestro Movimiento enarbola tres banderas: la de un software Libre, Justo y Soberano; aquel en el cual la CPU no hace más de lo que el Usuario quiere y sigue un sólo interés: ¡el del usuario! Llena mi corazón ver - bajo este día luminoso - una compacta Masa, que no duda en sopesar el Software Libre en la balanza de la Justicia Social. _______ \o/ \ peron \ --------- -----¬ \------- | C G T | ::::::::::::::\::::::::::|---------|::::::::::: %%%%%%%%%%%%%%%\%%%%%%%%%|%%%%%%%%%|%%%%%%%%%%% &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ooooooooooooooooooooooooooooooooooooooooooooooo <o/ ~ \o\ ~o| º/ o _____ _o | ¬º | | | |\|chori| |\ /\ /z /\ /\ /\ /\ º º /\ Estas son horas de decisión binaria. Un Capital sin patria intenta ofuscar datos y cerrar el código. ¡Nuestro Movimiento hará valer su trayectoria y tradición, y no permanecerá en IDLE ante tales afrentas! Cada trabajador ha recibido una misión en el esfuerzo de conjunto: compartir su software. Esta misión será sagrada para cada uno y su importancia estará mas que nada en su cumplimiento. En situaciones como las que vivimos todo puede tener influencias decisivas. Nadie puede pretender que el código fuente se comparta del día a la mañana. Pero todos tenemos el deber ineludible de enfrentar activamente a esos enemigos si no queremos perecer en el infortunio de nuestra desaprensión e incapacidad culposa. Es por ello que engalanado con las palmas y laureles de General de la Nación, he sido erigido como Vínculo de Unión y Conductor de una Comunidad Organizada en las redes telemáticas de alcance global, y asisto a las Masas Obreras con el alto fin de lograr Justicia Social 2.0. __________________________ |+++|++++|++++|++++|++|++ /\ |----+----+----+----+--|++/ _| ____| +++ ++++ ++++ ++++ ++ |/ ++ | | ---------------------------------| | | ------ | | | | | | | | | | | | /|\ o /| | | | | _/ ||\O/|| | | |_______| _/ || o || | | | / | \ / | | | |____/ /-| V | | | | / |\ /| | | /| / ||\O/|| | |---------/~~~---~\--------|| o || | |.....__/ \\.......| \ / | | |..../ \_\.......| V | | |-- ______/\/..........|\ /| | |/ /.....|.............||\O/|| | | /......|.............|| o || | |___ /__________...........| \ / | \_____________ |...........| Y | | +----------- J | \____________________/ Pues bien descamisados, existen ciertos equipos de hardware que - por su insoslayable rol en el Génesis del Cómputo - merecen ser recreados y apreciados la Masa. En este panteón destacan tres microcomputadoras primigenias: la MITS Altair 8800 y sus clones - la IMSAI 8080 y la Cromemco Z-1. Hablamos de equipos de sobremesa, disponibles en forma de kit electrónico para armar o bien como equipo armado. Hacían uso del primer microprocesador programable "de potencia" - el Intel 8080 de 8 bits - y como tal fueron estas las que llevaron al nacimiento del cómputo como pasatiempo. En tiempos del Primer Peronismo estas microcomputadoras eran limitadas. El estado de la CPU se controlaba directametne por medio de 6 conmutadores en su panel frontal. Debían introducirse a mano y en binario los contenidos del banco de memoria haciendo uso de operandos y valores, todo ello por medio de los 16 interruptores. Los resultados binarios se constataban "a ojo" a través de las sendos pares de luces rojas que tenían en el frente. Indudablemente que obrar bajo estas condiciones, si bien posible, es sumamente tedioso. +---------------------------------------------------+ | o o o o o o o o I M S A I 8 0 8 0 | | | | o o o o o o o o o o o o o o o o | | | | o o o o o o o o o o o o o o o o | | | | H H H H H H H H H H H H H H H H H H H H H H | | | | | +___________________________________________________+ "" "" El Justicialismo se ha impuesto la tarea de tornar en Realidad Efectiva el viejo anhelo de mejorar las condiciones en las cuales hombres y mujeres obran en pos de la Grandeza de la Nación. Gracias al bus S-100, ha sido posible adosarles a estos equipos diversos periféricos de entrada y salida que facilitaban enormemente la labor operativa. A las primeras terminales teletipo (que incluían teclado, impresora, y ocasionalmente lectora-perforadora de cintas de papel para almacenamiento), se agregaron terminales de video y unidades de discos magnéticos flexibles. Esto atresó un hardware de base que podía contar con un sistema operativo. Hoy, gracias a la denodada labor del compañero Ugo Munk, podremos emular a través de software libre los vistosos Paneles de Operación de estas máquinas. En ellos podremos tocar lo que haya que tocar sin gastar una chirola, llevando dichos equipos de antaño la seguridad que nos ofrece un entorno GNU con Linux. PARTE I: COMPILAR MICROCOMPUTADORAS CON PANELES DE CONTROL EN UBUNTU Como medida previa descargaremos las dependencias de programación Necesarias. En este caso os indicaré la paquetería necesaria bajo Ubuntu 20.04LTS. Para ello abrimos una terminal (por ejemplo, presionando Ctrl+Alt+T) e introducimos el siguiente comando (no olviden presionar con toda la fuerza de la Confederación General del Trabajo la tecla INTRO): sudo apt-get install libx11-dev libpth-dev xorg-dev gcc libjpeg-dev libpthread-workqueue-dev x11proto-core-dev x11proto-bigreqs-dev freeglut3 freeglut3-dev Nuestro sistema operativo nos solicitará santo y seña, que habremos de ingresar "a ciegas". Acto seguido procederá a la descarga de la paquetería necesaria. Como acción de liberación fundamental, crearemos dentro de nuestro Directorio de Usuario un Directorio oculto destinado a conservar todos los componentes de las máquinas virtuales, los cuales descargaremos. Todo esto lo podrán realizar con: mkdir ~/.simh/ ~/.simh/panelsim/ ; cd ~/.simh/panelsim/ ; wget http://www.autometer.de/unix4fun/z80pack/ftp/z80pack-1.36.tgz ; tar xzvf z80pack-1.36.tgz cd ~/.simh/panelsim/z80pack-1.36/cpmsim/srcsim ; make -f Makefile.linux ; make -f Makefile.linux clean ; cd ~/.simh/panelsim/z80pack-1.36/cpmsim/srctools/ ; make ; make clean ; cd ~/.simh/panelsim/z80pack-1.36/cpmsim/disks/library/ ; cp -p * ../backups Podrán ahora compilar e instalar la libreria libfrontpanel.so, temperamento necesario para la representación gráfica y acción fidedigna de los paneles frontales de nuestras computadoras clásicas virtualizadas: cd ~/.simh/panelsim/z80pack-1.36/frontpanel/ ; export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/ ; make -f Makefile.linux ; make -f Makefile.linux clean ; sudo cp ~/.simh/panelsim/z80pack-1.36/frontpanel/libfrontpanel.so /usr/lib Ello compilará la librería libfrontpanel.so y la copiará al directorio que nuestro entorno GNU destina a las librerías de usuario, /usr/lib/. Como acción final, procedemos a compilar los componentes de las tres máquinas virtuales MITS Altair 8800 (la primera microcomputadora personal), la Cromemco Z-1 y la IMSAI 8080: cd ~/.simh/panelsim/z80pack-1.36/altairsim/srcsim/ ; make -f Makefile.linux ; make -f Makefile.linux clean ; cd ~/.simh/panelsim/z80pack-1.36/cromemcosim/srcsim/ ; make -f Makefile.linux ; make -f Makefile.linux clean ; cd ~/.simh/panelsim/z80pack-1.36/imsaisim/srcsim/ ; make -f Makefile.linux ; make -f Makefile.linux clean Si todo ba bien debería indicarnos los mismos mensajes de éxito "Done!". Gracias al Justicialismo hemos podido crear émulos libres y virtuales capaces de correr en Linux de estas tres microcomputadoras. PARTE 2: USAR LA IMSAI 8080 Encendamos la IMSAI 8080 con el sistema operativo CP/M 2.2 para evaluar su funcionamiento. Para ello activamos el emulador con: cd ~/.simh/panelsim/z80pack-1.36/imsaisim/ ./cpm22 En la terminal aparecerá: ##### ### ##### ### ##### ### # # # # # # # # # # # # # ## ## # # # # # # # # # # # # # # ##### # # ##### # # ##### ##### # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ##### ### ##### ### ##### ### # # Release 1.36, Copyright (C) 1987-2017 by Udo Munk IMSAI 8080 Simulation Release 1.17, Copyright (C) 2008-2017 by Udo Munk CPU speed is 2 MHz RAM size is 54 KB Loader statistics for file bootrom.hex: START : d800H END : df7fH LOADED: 0780H (1920) FrontPanel Simulator v2.1 Copyright (C) 2007-2015 by John Kichury Imsai 3D Model. Copyright (C) 2007-2008 by John Kichury Indudablemente que lo que más nos llamará la atención será la versión tridimensional del panel de la IMSAI 8080. Arrastrando el ratón podremos girar y admirarla. Usando MAYUSCULAS+arrastre del ratón podremos desplazarnos hacia los costados. Mediante la tecla V podremos conmutar entre el panel tridimensional o uno llano bidimensional. Para enceder la IMSAI 8080 con CP/M 2.2, debemos recurrir al procedimiento estandar. Llevamos el conmutador PWR ON/PWR OFF (el interuptor rojo en el extremo derecho del panel) a la posición de encendido "ON"). Esto energizará la máquina, dejando al microprocesador en espera (se encenderá la luz WAIT). Acto seguido buscamos el conmutador RUN/STOP (el anteúltimo de los rojos, contando desde la derecha) y lo ponemos en la posición de ejecución "RUN" (arriba). Nuestra terminal deberá presentar la cantidad de memoria de acceso aleatorio, y el sistema operativo cargado. En este caso se emula el CP/M 2.2 de la Intergalactic Digital Re$earch, corriendo en una IMSAI llevada al tope de sus especificaciones, con portentosos 54K de memoria en las 4 placas de expansión: 54K CP/M VERS 2.2 A> La IMSAI 8080 está presta a responder a los anhelos del Pueblo. Parte 3: Programar en Ensablador 8080 en CP/M En lugar de introducir los códigos de operación y valores "a lo vikingo" a través de los interruptores, el sistema operativo CP/M nos privilegiará con facilidades para escribir la rutina en Ensamblador Intel 8080, interpretarlo, y ejecutarlo. Como primer medida podrán ejecutar el editor "ed", proveyéndole un nombre de fichero de código fuente en ensamblador (de extensión .asm). Como un ejemplo suele aclararlo todo - como decía Napoleón, os indicaré los resultados que devuelve la terminal. Ustedes podrán ingresar lo que figura a continuación del prompt A>: En el prompt A> ingresen: A>ed pocho.asm NEW FILE : * Como vemos, el editor Ed presenta el mensaje NEW FILE denotando que estamos creando un fichero nuevo, y cambia el prompt al de modo comando, el cual es un asterisco "*". Ingresamos i para pasar al Modo de Insersión de texto, y la IMSAI nos hablitará para escribir la línea número 1 de nuestro código en ensamblador. : *i 1: Ahora habrán de meter las patas en el código fuente. Escribirán muy cuidadosamente el código de ensamblador, a tres columnas. Sean precavidos, pues si bien podrían borrar errores con la tecla RETROCEDER, su funcinamiento es diferente al que es usual en las videoterminales: el antediluviano editor ed replica a las teletipo, y en caso de presionar RETROCEDER, vuelverá a presentar en pantalla el caracter anterior. Permitirá así la acción de sobreescritura. Recuerden especialmente que, para saltar a la siguiente columna dentro de la línea, debe presionarse la tecla TAB. Toda vez que completen correctamente una línea, deben introducirla en memoria presionando la tecla INTRO. Ed nos presentará el siguiente número de línea. Introduzcan ahora las siguientes nueve líneas de código (recuerden presionar INTRO para confirmar cada línea, a lo que ed presentará el número de línea siguiente): ORG 0100H BDOS EQU 0005H START: MVI C,9 LXI D,MSG$ CALL BDOS RET MSG$ DB 'VIVA PERON!$' END START Conforme hayan terminado de introducir la última línea de código ensablador, deben presioanr Ctrl+z para abandonar el Modo de Inserción de texto del editor Ed; el prompt volverá a ser un *. Podrán ahora indicar el comando "e" para escribir en disco flexible virtual el archivo pocho.asm y retornar al CP/M. : *e Al retornar al prompt A> de CP/M, bien podrían desear tipear el comando "type pocho.asm" con el fin de comprobar fehacientemente que el código de ensamblador esté bien escrito y almacenado en el diskette de 8 pulgadas. Acto seguido lo ensamblamos: A> asm pocho CP/M ASSEMBLER - VER 2.0 0115 000H USE FACTOR END OF ASSEMBLY Esto creará una serie de archivos nuevos en la unidad de disco flexible virtual. Si ingresamos type pocho.prn veremos el desensamblado del código para el microprocesador Intel 8080. A>type pocho.prn 0100 ORG 0100H 0005 = BDOS EQU 0005H 0100 0E09 START: MVI c,9 0102 110901 LXI D,MSG$ 0105 CD0500 CALL BDOS 0108 C9 RET 0109 5649564120 MSG$ DB 'VIVA PERON!$' 0115 END START ...y si ingresamos type pocho.hex veremos el código hexadecimal del mismo. A>type pocho.hex :100100000E09110901CD0500C95649564120504537 :05011000524F4E2124B6 :00010000FF Ahora compilamos el objeto, usando el comando load pocho. Esto creará un archivo ejecutable llamado pocho.com. A>load pocho SOURCE IS DISK FIRST ADDRESS 0100 LAST ADDRESS 0114 BYTES READ 0015 RECORDS WRITTEN 01 Indudablemente que un Conductor del Justicialismo ha de ser capaz de ejecutar un software "in mente", con tan sólo observar un volcado hexadecimal del mismo. Si quisiéramos probarnos como Hackers de la Conducción, podríamos solicitar un volcado de depuración del código máquina mediante la orden dump pocho.com. A>dump pocho.com 0000 0E 09 11 09 01 CD 05 00 C9 56 49 56 41 20 50 45 0010 52 4F 4E 21 24 00 00 00 00 00 00 00 00 00 00 00 (...) 0070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Técnicamente, la primer columna nos indica la dirección o posición en memoria, en tanto que las 16 restantes indican el contenido de los bytes. La Ejecución in Mente es una resultante práctica del Arte de la Ingeniería Inversa. El Conductor VE los bytes. Ver, base para Apreciar. Apreciar base para Intepretar, e Interpretar base para Ejecutar. Pero técnica y teoría son meros componentes intertes de la Depuración. La parte Vital es es Artista. Indudablemente que para poder ejecutar código "in mente" dependemos de aquel Óleo Sagrado de Samuel con que hayamos sidos ungidos al nacer. Indudablemente que, siendo ustedes ciegos integrantes de la Masa Obrera, sólo necesitarán ejecutar las órdenes emanada de los órganos de conducción. Por ello simplemente deben ingresar el comando "pocho". Si el entorno de emulación y el programa ensamblado funcionaron de la manera correcta, el panel de la IMSAI 8080 debería iluminarse como un arbolito y gritar a la termimal un estruendoso: A>pocho VIVA PERON! Podremos ahora continuar utilizando CP/M 2.2, o bien utilizar los conmutadores de los registros para escribir binariamente en memoria los siguientes bits: 50 55 45 52 54 41 20 44 45 20 48 49 45 52 52 4f 3a 20 50 45 52 4f 4e 40 54 45 58 54 4f 2d 50 4c 41 4e 4f 2e 58 59 5a También podremos apagar la IMSAI emulada. Para ello podríamos indicar: A>bye System halted, bye. Y se apagará el emulador (desapareciendo el panel de la IMSAI). Y recuerden Programadores: ¡Únanse! ¡Sean hoy más hermanos que nunca! Sobre la unidad de los que programan, ha de fundarse en esta Hermosa Patria la Unión de Todos los Argentinos. Y cuando uno de nuestros servidores caiga, ¡CAERÁN CINCO DE LOS DE ELLOS! ____________ / __________ \ / | VIVA | \ / | | \ / | PERON! | \ / |__________| \ / ,------------------ \ / / :::::::::::: :::: \ \ \ ====================== / \==v================v==/ ============================== | oooooooooo oo ooo ooo | | oo | | o ooo ooo ooo ooo ooo ooo | | + +++ +++ +++ +++ +++ +++ | |_+__+__+__+__+__+__+__+_+_____| |MITS Altair 8800 Computer | ============================== - - CONCLUSIÓN La emulación de los equipos primigenios del cómputo hogareño sirve como material de estudio de las Ciencias del Cómputo y la historia del ingenio humano, y constituye - por extensión - una demostración palpable de las bondades del Software Libre como instrumento de Justicia Social. BIBLIOGRAFÍA: Intel 8080 Assembly Language Programming Manual. https://altairclone.com/downloads/manuals/8080%20Programmers%20Manual.pdf