Al recibir embajadores de toda Latinoamérica, Juan Perón expone los fundamentos políticos del Justicialismo para las Relaciones Exteriores de la Nación, y enseña a los mandatarios cómo instalar en Ubuntu emuladores y paneles de tres  microcomputadoras históricas influyentes: la peronistas Altair 8800, IMSAI 8080, y la Cromemco Z-1.
Señores Presidentes, Ministros Plenipotenciarios, embajadores, damas y caballeros:
Recibo de ustedes la más sinceras muestras de amistad en el nombre de Naciones que serán siempre nuestros más cálidos hermanos y nuestra familia. A todos vosotros he saludado y me he reconfortado en el entendimiento que será una sana hermandad la que nos lleve a nuestro destino común de Grandeza. 
 
Nuestra tarea es una que ha de darse paso a paso, mancomunando esfuerzos en pos de completar las tres consignas que hemos tomado como banderas: Libertad económica, Justicia Social, y Soberanía política. Ese mismo cometido, tan cristiano como colmado de altruismo, puede llevarse a cabo entre hermanos en esta América Grande, que es nuestra tierra Natal y el fin anhelado de nuestros Pueblos.
Son nuestros pueblos quienes nos impulsan a un destino hermanado de grandeza, y no podemos mas que ser fieles reflejos de esta acción. Para ello hemos de alejarnos de las perniciosas doctrinas que - ajenas a nuestro sentir - pretenden imponernos ciertos individuos, y que por inconfesables han sido rechazadas ya por todos los hombres de bien en el globo.
El software no es un bien privado, es un bien de carácter social. La acción ineludible de todo Justicialista ha de ser compartir todo su software. En la informática, compartir el software es combatir al Capital.
La esencia del software es trascendental, pues puede ejecutarse en cualquier tiempo, y por tanto es imperecedera. Bajo tales premisas, constituye un crimen pretender registrarlo intelectualmente bajo la noción de "dereocho de autor", cuando es el usuario del mismo quien goza de los derechos totales de vida. Os ilustraré con un ejemplo, que suele aclararlo todo.
Existen equipos que por antigüedad y fundamental valía en el universo de la computación, deben ser recreados digitalmente. Ya he explicado cómo 
instalar un emulador de equipos dotados de procesador Z80 y del sistema operativo CP/M de la Digital Res€arch en Ubuntu. Sin embargo, además podremos emular por software sus clásicos Paneles de Operación, para tocar lo que haya que tocar para llevar a dichos equipos de antaño la seguridad que nos da el Justicialismo.
En este caso, os enseñaré cómo instalar emuladores de tres microcomputadoras fundacionales: la 
MITS Altair 8800, la 
IMSAI 8080, y la 
Cromemco Z-1. Se trata de equipos diseñados para su venta armados o en forma de kit armables montados alrededor de los primeros microprocesadores de silicio programables y "de potencia" en arquitectura de 8 bits, el Intel 8080 y el Zilog Z80. Fueron estos los que llevaron al nacimiento del software hobbista.
En nombre del Justicialismo 
os enseñaré como instalar dichas máquinas virtuales en Ubuntu, acercaré su documentación escencial, e instruiré cierto accionar básico.
 
Como medida previa, abrimos una terminal con 
Ctrl+Alt+T y descargamos las dependencias de programación necesarias para hacer efectivas las máquinas virtuales. Ello lo haremos con el siguiente Comando de Organización:
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 
El procedimiento nos solicitará descargar los paquetes (indicamos 
s) y luego debemos ingresar a ciegas nuestra contraseña de Conductor; se procederá a la descarga de la paquetería necesaria. Acto seguido crearemos dentro de nuestra Carpeta de Usuario una carpeta oculta donde colocaremos todos los componentes necesarios para las máquinas virtuales y sus paneles de operación, y los descargaremos allí. Todo este predicamento lo haremos Realidad Efectiva introduciendo el siguiente bloque de Comandos de Organización:
mkdir ~/bin/ ~/.simh/ ~/.simh/panelsim/ ;
cd ~/.simh/panelsim/ ;
wget http://www.autometer.de/unix4fun/z80pack/ftp/z80pack-1.36.tgz ;
tar xzvf z80pack-1.36.tgz ;
La descarga del paquete 
z80pack puede tardar un par de minutos. Una vez descargado se habrá descomprimido. Acto seguido compilaremos el material básico para las máquinas emuladas. Lo haremos con estos Comandos de Organización:
cd ~/.simh/panelsim/z80pack-1.36/cpmsim/srcsim ;
make -f Makefile.linux ;
make -f Makefile.linux clean ;
Si todo va bien, debería indicarnos "
done" (hecho) al final de la compilación. Acto seguido, podremos compilar los programas de apoyo para las máquinas virtuales que corran el viejo sistema operativo CP/M, algunos requeridos para la emulación:
cd ~/.simh/panelsim/z80pack-1.36/cpmsim/srctools/ ;
make ;
make clean ;
Conforme nos indique "
done", podremos proceder a crear unos respaldos opcionales de las imágenes de disco arrancables del sistema operativo CP/M (unos archivos 
.dsk). Los haremos con:
cd ~/.simh/panelsim/z80pack-1.36/cpmsim/disks/library/ ;
cp -p * ../backups ;
Ahora podremos compilar e instalar la libreria 
libfrontpanel.so, fundamental para la representación y acción fidedigna de los paneles frontales de nuestras máquinas virtuales cláscas:
cd ~/.simh/panelsim/z80pack-1.36/frontpanel/ ;
make -f Makefile.linux ;
make -f Makefile.linux clean ;
sudo cp ~/.simh/panelsim/z80pack-1.36/frontpanel/libfrontpanel.so /usr/lib ; 
Esto compilará la librería 
libfrontpanel.so y la copiará a la carpeta de sistema para las librerías de usuario
 /usr/lib/. Para que al compilar las máquinas virtuales estas puedan hacer uso de la libreria libfrontpanel.so, hemos de modificar el archivo de perfil para incluir la ruta a la carpeta /usr/lib/. Para ello editamos el archivo 
~/.profile con el siguiente comando de organización:
nano ~/.profile
...se abirá el editor peronista GNU Nano con un archivo que ya tendrá contenido. Debemos desplazarnos al final de dicho archivo sin alterar ninguna de las líneas, y al final agregamos una línea y le pegamos el siguiente texto:
#agregado para compilar paneles frontales emulados 
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/
#fin de agregado
...luego guardamos con 
Ctrl+o y salimos del editor con 
Ctrl+x. Una vez que hayamos retornado a la terminal, 
es importante que la cerremos ingresando el comando:
exit
Como acción final, compilamos los componentes de las tres máquinas virtuales. Para ello volvemos a abrir la terminal con 
Ctrl+Alt+T, y procederemos a compilar primero la maquina virtual 
imsaisim que emula la clásica MITS Altair 8800, la primer microcomputadora personal:
cd ~/.simh/panelsim/z80pack-1.36/altairsim/srcsim/ ;
make -f Makefile.linux ;
make -f Makefile.linux clean ;
Si todo va bien, debería darnos mensajes similares al siguiente:
 
...luego la Cromeco Z-1:
cd ~/.simh/panelsim/z80pack-1.36/cromemcosim/srcsim/ ;
make -f Makefile.linux ;
make -f Makefile.linux clean ;
...y finalmente la joya de la corona, la IMSAI 8008:
cd ~/.simh/panelsim/z80pack-1.36/imsaisim/srcsim/ ;
make -f Makefile.linux ;
make -f Makefile.linux clean ;
En las tres máquinas virtuales debería indicarnos los mismos mensajes de éxito. Con dicho accionar llevado a cabo, habremos procedido a crear émulos libres y virtuales capaces de correr en Linux de las tres microcomputadoras fundamentales. Como última medida enviamos los binarios creados a la carpeta correspondiente con:
cd ~/bin/ ;
sudo mv bin2hex mkdskimg send receive ptp2bin /usr/local/bin/ ;
cd ~ ;
rm -r ~/bin/ 
Ejecución de las máquinas virtuales y sus paneles: 
Para ejecutar el panel de cada una de las máquinas virtuales se debe correr el ejecutable provisto dentro de la carpeta de cada una de ellas.
La primera se trata de la mítica 
MITS Altair 8800, una máquina hobbista dotada de 16K de memoria RAM y microprocesador Intel 8080 de 2 Mhz, que apareció como tapa del número de enero de 1975 de la revista Popular Electronics.
Inspiró a muchos de nerds peronistas para desarrollar y compartir masivamente software casero y libre, y a algunos nerds gorilas en la idea criminal de ocultar los códigos fuentes y comercializar binarios compilados. 
El equipo original 
no disponía de teclado ni monitor, sólo los interruptores de control y las luces de estado, y adicionalmente un puerto serial para conectar una terminal de control. El patrón de trabajo simula a los paneles de las minicomputadoras en boga a mediados de los 70s, como las DEC PDP (de las cuales 
ya he instruido sobre cómo operar 
varios modelos).
Para activar la máquina virtual de la MITS Altair 8800 "pelada" (esto es, en condiciones originales y con su banco de memoria libre) podremos hacer:
cd ~/.simh/panelsim/z80pack-1.36/altairsim/
./altairsim 
El panel de la MITS Altair 8800 virtual está representado por los interruptores básicos de esta microcomputadora fundacional. La documentación en estos casos de computación primigenia cobraba una iportancia extrema, y las compañías ponían mucho énfasis en la documentación impresa en papel y entregada encarpetadas y clasificadas en cajas. Podremos aprender del mismo a través del 
Manual de Operador de la MITS Altair 8800, y programa 
en ensamblador del Intel 8080. En este caso de estudio extremo nos serviría el clásico 
Manual de Programación en Ensablador del Intel 8080. y el mucho más avanzado y electrónico 
Manual de Teoría de Operación para la MITS Altair 8800.
Vean señores, la 
MITS Altair 8800 tenía poco o ningún uso, pero con software intérprete Altair BASIC y luego con sistemas operativos de potencia, constituyó la primer microcomputadora personal práctica de la historia. En este caso contamos para su ejecución con varios intérpretes BASIC (versiones de 4K Micro$oft, de 4K Altair, versiones de 8K, etc), así como distintas versiones del sistema operativo de control CP/M compiladas para el microprocesador de Intel. Estos programas de software pueden cargarse solicitándolos a la hora de correr el ejecutable de la máquina virtual. Por ejemplo, para cargar el potente sistema operativo CP/M 2.2 usaríamos:
cd ~/.simh/panelsim/z80pack-1.36/altairsim/
./cpm22
Esto nos encenderá la terminal de video en 
standby (mostrará el mensaje "8080-SIM":
Para encender la microcomputadora con tal sistema operativo, debemos ir al panel frontal de la Altair, y configurar el conmutador 
ON/OFF en posición 
ON y luego el conmutador 
RUN/STOP en la posición 
RUN.
De esta forma arrancará en frío, inicializará dos unidades de disco virtual (nomencladas
 à la CP/M como 
a: y 
b:) y arrancará "con el diskette magnético del sistema cargando y corriendo". Brillarán las luces del panel, y casi instantáneamente se nos presentará el 
prompt del sistema operativo CP/M 2.2 para la MITS Altair 8800 con Intel 8080.
CP/M COLD BOOT
Micro Resources 64K CP/M Ver. 2.2 of 1/15/82
A>
La videoterminal estará ya aguardando nuestras órdenes de computación arqueológica:
Los comandos de CP/M son relativamente similares a los de M$-DO$ (del cual derivó). Podremos hacer un directorio con 
dir, podremos revisar el contenido de los archivos con 
type, y editar archivos con el vetusto 
ed. Sobre todos ellos me he explayado en artículos anteriores sobre el emulador 
simh  y CP/M, 
y al estar disponible su manual no me extenderé en instruirlos. En cualquier caso, ante el accionar el equipo debemos ver como reacciona el panel luminoso con los contenidos del banco de memoria. 
Podremos encontrar gran variedad de documentación de la Altair 8800 recurriendo 
aquí y 
aquí. Para salir del sistema CP/M 2.2 introducimos el comando 
a:bye
Otra joya destacada de esta colección es la 
IMSAI 8080. Aprovechando que MITS no podía hacer frente a la explosiva demada de sus Altair 8800, IMSAI comenzó a sacar su propio modelo 8080, dotado con el mismo microprocesador Intel 8008 y 16K de memoria RAM, pero con una construcción mejor pensada y componentes de mayor calidad.
La máquina virtual dispone de un vistoso panel 3D de la IMSAI 8080 que podremos utilizar en Ubuntu. Para iniciar la máquina "pelada" (sin software precargado) debemos ejecutar 
Imsaisim. Para ello ingresaríamos:
cd ~/.simh/panelsim/z80pack-1.36/imsaisim/ 
./imsaisim
Al igual que en el caso de la MITS Altair 8800 terminal de video responderá con una pantalla que anuncia la máquina virtual de la IMSAI 8080
:
Asimismo, se nos presentará la interfaz 3D con la IMSAI "pelada" (sin programa alguno cargado en su banco de memoria). Para que arranque movemos el interruptor rojo 
PWR ON/PWR OFF a la posición 
ON.
Indudablemente 
quien conozca la operación de su panel frontal, podrá introducir tediosamente los comandos en el mismo moviendo los interruptores. Las acciones para depositar registros en la memoria son similares a los de las DEC PDP (si bien el lenguaje ensamblador del procesador Intel 8080 es diferente). La IMSAI nos sirve especialmente para practicar ensamblador puro de este microprocesador tan caro al desarrollo de la informática, y como plataforma de estudio de las ciencias de la computación. Su manual de usuario podrá descargarse desde 
aquí.
El panel simulado de la IMSAI por defecto es un modelo 3D, que podremos rotar el botón derecho y los movimientos del ratón, y podremos accionar sus controles mediante clics sobre los mismos con el botón derecho. Con 
Z o 
z regularemos el zoom en la ventana 3D, y con 
Mayúsculas+clic del ratón podremos desplazarnos. Si quisiéramos utilizar un panel 2D podremos seleccionar la ventana con el panel 3D y conmutar a su versión 2D mediante la tecla 
v.
Podremos también arrancar la microcomputadora con cualquiera de los programas que anhelemos. Podremos ejecutar distintos sistemas operativos que se proveyeron a lo largo de la vida útil de la IMSAI 8080: su Sistema Operativo de Disco de IMSAI en las versiones original (
imdos), la 2.02 (
imdos202), la 2.05r0 (
imdos205r0), o el 
IMSAI CP/M 1.31 (imsaicpm13). Todas ellas son versiones creadas y licenciadas por Gary Kildell para la IMSAI.
cd ~/.simh/panelsim/z80pack-1.36/imsaisim/ 
./imsai-cpm13
Una vez que se cargue en la terminal la máquina virtual, debemos encenderla (llevando el conmutador 
PWR ON/PWR OFF en la posición 
ON). Se encenderá la luz 
WAIT). Luego debemos llevar el conmutador 
RUN/STOP a la posición 
RUN (arriba).
En la terminal de video debería aparecer entonces el 
prompt del sistema operativo CP/M 1.31 de nuestra IMSAI:
IMSAI 16K CP/M VERS 1.31 
A>
Para compilar, podremos utilizar ensamblador. Os enseñare cómo hacer un pequeño programa justicialista en este elevadísimo lenguaje.
Programando en Ensablador 8080 en CP/M
Para programar en CP/M, debemos escribir la rutina en Ensamblador 8080, 
interpretarlo, y ejecutarlo. Para ello debemos escribir el programa con el editor 
ed en 
nemónicos de Intel 8080, ensamblarlos con 
asm a hexadecimal, y usar 
load para convertir dicho archivo a un binario ejecutable con extensión .
com.
La tarea será sencilla. Ejecutamos el editor 
ed con un archivo de
 código fuente de extensión .asm. En aras de la facilidad, lo haremos 
con un pqeueño programa que todo programador emplea, el 
pocho.asm. Como Conductor, os indicaré los resultados de pantalla y ustedes 
ingresarán lo que está en negrita:
A> ed pocho.asm
NEW FILE     
: *i
    1:          ORG     0100H
    2:  BDOS    EQU     0005H
    3:  START:  MVI     C,9
    4:          LXI     D,MSG$
    5:          CALL    BDOS
    6:          RET
    7:
    8:  MSG$    DB      'VIVA PERON!$'
    9:  END     START
    10: (presiono Ctrl+z para salir del modo inserción) 
: *e
Tras haber editado nuestro código fuente, lo ensamblamos con:
A> asm pocho
 
CP/M ASSEMBLER - VER 1.0
0115
001H USE FACTOR
END OF ASSEMBLY
Esto creará una serie de archivos nuevos en la unidad de disquete virtual. Si ingresamos 
type pocho.prn veremos el desensamblado para el microprocesador Z80, y si ingresamos 
type pocho.hex veremos el código hexadecimal del mismo.
Si quisiéramos compilar un ejecutable, usaremos 
load pocho, y ello creará el archivo ejecutable 
pocho.com. Si ingresamos 
dump pocho.com, CP/M nos mostrará directamente el volcado de memoria del código objeto del programa binario 
pocho.com.
Para ejecutarlo simplemente ingresamos 
pocho, y si nuestro 
entorno y nuestro programa ensamblador funcionan de manera correcta en 
la máquina Altair 8080 virtual, la informática nos contestará airosa:
Para salir del emulador CP/M debemos introducir 
a:bye, o bien llevar el conmutador 
PWR ON/PWR OFF a la posición 
OFF.
Para iniciar una intérprete de BASIC en la IMSAI 8080, debemos utilizar:
cd ~/.simh/panelsim/z80pack-1.36/imsaisim/  
./imsaisim -xbasic8k.hex
Sin duda es una máquina histórica y de calidad, que podremos volver a la vida y hasta utilizarla para jugar al 
Global Peronism Spread. El manual de operación de estos clones de CP/M puede encontrarse 
aquí, en tanto que la documentación de operación a nivel ensamblador son los mismos que en la Altair 8800 - por tratarse de clones - y ya los he incluido.
Para finalizar, podremos utilizar la menos conocida pero más potente 
Cromemco Z-1. Esta venía con una CPU Zilog Z80 a 4 MHz, y con 8K de memoria RAM
Para ello utilizamos el mismo principio que en los casos anteriores.
cd ~/.simh/panelsim/z80pack-1.36/cromemcosim/ 
./cromemcosim
El panel de la Cromemco Z-1 arrancará en 2D, podremos cambiarlo a 3D, aunque lamentablemente la máquina entera no aparece (sólo podremos reclinar el panel 3D, con lo cual no está muy logrado).
Nuevamente, si quisiéramos que la Cromemco Z-1 apareciese con algún sistema operativo cargado, debemos indicarlo. Por ejemplo:
./cromemcosim cpm2 
Todas las máquinas virtuales cuentan también con placas de entrada/salida emuladas, que pueden configurarse opcionalmente según nuestras necesidades, editando los archivos de texto correspondiente:
nano ~/.simh/panelsim/z80pack-1.36/imsaisim/conf/iodev.conf
nano ~/.simh/panelsim/z80pack-1.36/altairsim/conf/iodev.conf
Ambos archivos de configuración incluyen comentarios (en inglés), aunque sus opciones deberían resultar obvias y no requerir mayor tratamiento de parte del docente.
Ejecutar las máquinas virtuales de manera remota (sin los paneles):
Todas estas microcomputadoras originarias podían adosarse a terminales seriales (inicialmente teletipo, pero también videoterminales tipo DEC). Esta característica nos permitirá ejecutar las terminales a través de nuestra terminal de texto de forma remota. Incluso podríamos utilizar una verdadera terminal serial conectada a nuestro sistema emulador. 
Si quisiéramos ejecutar 
CP/M 2.2 usaríamos:
cd ~/.simh/panelsim/z80pack-1.36/cpmsim
./cpm2
...para salir de la sesión remota de CP/M 2.2 ingreso 
a:bye
Si deseo ejecutar el sistema operativo CP/M 3:
cd ~/.simh/panelsim/z80pack-1.36/cpmsim
./cpm3
...para finalizar la sesión de CP/M 3 ingreso
 a:bye
En tanto, si deseo ejecutar el sistema operativo más avanzado de la serie, el 
MP/M 2, debo utilizar:
cd ~/.simh/panelsim/z80pack-1.36/cpmsim
./mpm
...y cuando arranque la máquina virtual remota, ingreso:
mpmldr
Para salir de la emulación de MP/M 2, ingreso la orden
 a:bye
Para realizar tareas mas intensivas de intercambios y manipulación de datos entre Linux y CP/M podemos utilizar 
cpmtools, un conjunto de herramientas de caracter opcional. Sólo deberían servir si realmente estamos interesados en hacer uso práctico de los emuladores por cuestiones históricas o forense con estos antiguos programas. Entre las herramientas que se incluyen están
- cpmls: es un listador de directorios linux para imágenes CP/M
- cpmcp: copiador de archivos desde y hacia el sistema de archivos CP/M
- cpmrm: borrador de archivos CP/M
- cpmchmod: cambiador de permisos de ficheros CP/M para Linux
- cpmchattr: cambiador de atributos de ficheros CP/M pàra Linux
- mkfs.cpm: formatea un sistema de archivos CP/M en Linux
- fsck.cpm, reparador simple de sistema de archivos CP/M para Linux
- fsed.cpm visor del sistema de archivos CP/M en Linux
- Man (manuales) para Linux sobre el sistema de archivos CP/M y las herramientas.
Para instalarnos la suite de herramientas 
cpmtools las descargamos con:
cd ~/.simh/panelsim/z80pack-1.36/ ;
wget http://www.moria.de/~michael/cpmtools/files/cpmtools-2.20.tar.gz ;
tar xzf cpmtools-2.20.tar.gz ;
...y lo compilamos con:
cd ~/.simh/panelsim/z80pack-1.36/cpmtools-2.20/
./configure
make
make install
Desinstalación 
Si quisiera desinstalar todo lo actuado, es sencillo. Simplemente indico el siguiente bloque de comandos.
rm -r ~/.simh/panelsim/z80pack-1.36/
sudo rm /usr/lib/libfrontpanel.so
cd /usr/local/bin/
sudo rm bin2hex mkdskimg send receive ptp2bin
 
Finalmente, edito el archivo 
.profile para restituirlo a la normalidad.
nano ~/.profile
...y elimino las líneas agregadas al final del mismo.