¡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