_______________________________________________________________________
   /*
      ATDT MAGAZINE ::::::::::::::::::::::::::::::::::::::::::::::::::::::
      ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
      ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::[0x02-07]:
      NUMERO 0x02:::::::::::::::::::::::::::::::::::::::::::::::::::::::::

                                "emulando IMSAI 8080 en Ubuntu" por ~peron
   */

  ¡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 por 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 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
  ensamblador, 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:

                             ¡Unanse!

                 ¡Sean hoy mas 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     |
                  ==============================
                   -                          -


 CONCLUSION

  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

  [x] [Peron] > ConducTor / IndoctrinaTor / Ubuntu Peronista EdiTor / Hacker

   _______________________________________________________________________
   !EOF -> atdt-zine-0x02-07.txt