¡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