miércoles, 24 de junio de 2015

¿Cómo emulo el panel de una mainframe DEC PDP-10 en Ubuntu de 64 bits?

¡Trabajadores!

En Movimientos como el nuestro, no serán pocas las ocasiones en las que habremos de cubrir con chimichurri al sapo. Y esto, que tan cierto es en la política, también lo es en los sistemas informáticos.

Vean señores, los mejores sistemas informáticos de antaño en realidad sólo disponían de una fracción de la potencia que cada uno de nosotros tiene en su más lelo de los dispositivos informáticos, pero sin duda contaban con algo que luego se hizo caro: la libertad.

Esto significa que - en aras del estudio y la lúdica - podamos emularlos hoy con muy poco costo computacional. Pero emplear un sistema moderno para las tareas de ayer deja de tener gracia, en tanto que no contamos con los enormes y costosos sistemas que otrora pululaban los centros de cómputo.

Uno de ellos era la mainframe DEC PDP-10, de 36 bitios. Disponible en diferentes modelos, inicialmente transistorizada y con su memoria núcleo, pasó luego a emplear unidades de de cinta magnética o disco como medio de almacenamiento de masa. Se hizo popular entre 1968 y 1983 como equipo primigenio de estudio para las tecnologías que actualmente empleamos.Este equipo fue el lugar de nacimiento de la Internet y el movimiento de Software Libre, así como muchas aplicaciones de software, como Emacs, TeX, numerosos dialectos de LISP, el correo electrónico, y Kermit. La configuración típica de PDP-10 incluia múltiples gabinetes de tamaño completo para la CPU, memoria, controladores, cinta magnética, infraestructura de redes, junto con discos rígidos de tamaño de un lavarropas, impresoras de línea, y demás, requiriendo habitaciones con aire acondicionado e instalación trifásica.
Las versiones más deseadas por la Masa estaban munidas de una consola de entrada/salida (lo que hoy denominaríamos unidad central de proceso) del modelo KI10, corriendo el sistema operativo TOPS-10.
La consola KI10 oficiaba de unidad de mando para inicializar el sistema y también se la podía emplear para consultar a través de sus indicadores luminosos el contenido de las direcciones individuales de la memoria (que se conectaba por separado). Por medio de las teclas retroiluminadas se podían manipular los acumuladores de memoria núcleo, cargando diferentes instrucciones de operación a través de su código binario, y llamando a las mismas para realizar programas en el macro-ensamblador nativo de la máquina, el Macro-10.

Estos dispositivos no estaban al alcance de la Masa Popular hecha partido, pero hoy, gracias al Justicialismo, os diré cómo cargar un emulador de dicho equipo en nuestro sistema GNU con Linux.

En primer lugar hemos de instalar los paquetes necesarios para poder emular todo en nuestro sistema Ubuntu de 64 bits. Para ello abrimos una terminal Linux con Ctrl+Alt+T e ingresamos los siguientes comandos de organización:


sudo dpkg --add-architecture i386 ;
sudo apt-get update ;
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 ;
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 ;
sudo apt-get install libpcap0.8:i386 ;
sudo apt-get install libxext6:i386 libxtst6:i386 libxi6:i386 ;

Luego creamos un directorio para los paneles y nos dirigimos a el:

mkdir ~/.simh/ ~/.simh/panelsim/
cd ~/.simh/panelsim/

El siguiente paso variará de acuerdo a si tenemos un sistema de 32 o de 64 bitios:
  • Si tengo Ubuntu de 64 bits debo ingresar estos comandos:
wget https://github.com/j-hoppe/BlinkenBone/releases/download/1.3/panelsim_ubuntu-x64.tgz ;
tar -xvf panelsim_ubuntu-x64.tgz -z ;
  • Si tengo Ubuntu de 32 bits - en tanto - debo ingresar estos comandos:
wget https://github.com/j-hoppe/BlinkenBone/releases/download/1.3/panelsim_ubuntu-x86.tgz ;
tar -xvf panelsim_ubuntu-x64.tgz -z ;

Luego debo preparar el resto del sistema, lo podré hacer con el comando:

sudo ./prepare.sh

Tras introducir nuestra contraseña, el programa revisará si tenemos instalados todos los componentes necesarios (rpcbind, Java, y otros). Si faltase alguno nos propondrá instalarlo mediante el siguiente mensaje.

'rpcbind' not found, I'm going to install it.

OK? Enter = yes, ^C = no.

Para instalarlo presionamos Enter.

Ahora podremos ejecutar el emulador con los siguientes comandos:


cd ~/.simh/panelsim/

sudo ./pdp10ki10_tops10.sh

Esta orden nos pedirá que introduzcamos nuestra contraseña de Conductor, y tras ello, debería presentarnos una ventana con una reproducción fotográfica de la consola DEC KI10, en estado "Apagado".
Casi instantáneamente, el procedimiento automatizado dará arranque al emulador y lo conectará con la consola de luces KI10. En la ventana de la consola KI10 se deberá encender la luz roja Active indicando que tenemos vinculadas ambas máquinas virtuales, y en su panel retroiluminado debería encenderse automáticamente en blanco el pulsador Power, así como su indicador rojo en la consola KI10. Para poder iniciar un sistema operativo cualquiera, revisamos que en el panel nomenclado STOP de la consola esté en la opción MAN, tanto como el indicador de Datos en Memoria ("Data Memory") debería presentarse encendido:

...a su vez, la pantalla de la terminal de video debería informarnos siguiente:

Se nos presentará entonces el prompt del emulador:

BOOT V3(47)

...y nos mostrará:

BOOT>

(Presionamos Enter una vez debería mostrar:.
[Loading from DSKB:BOOT.EXE[1,4]

Why Reload? opr
Date: 10-14-99 (o similar)

Time: 19:54  (o similar)

Startup Option: quick
Esto indicará que el operador de sistema ("opr") desea reiniciar la secuencia de arranque del sistema operativo (en otras palabras reencender la PDP-10 y dar inicio al sistema operativo), y hacerlo de manera veloz. Mientras tanto, podremos comprobar como se parpadean las luces de los bancos de memoria de la consola KI10:
Al terminar, podría presentarnos el prompt del sistema operativo TOPS-10 (un simple punto).
Normalmente no responderá a ningún comando hasta que nos demos de alta (logueemos al sistema multiusuario). Ello nos será indicado de la siguiente manera:

?LOGIN please
    .

*


Pues bien, podremos loguearnos como usuario invitado (public) o como superusuario. Para loguearnos como usuario simple podemos poner:

*login public

(Para loguearnos como superusuario se usa login 1,2 (y la contraseña, eventualmente, será mcp)
Podríamos pedir un listado de programas con el comando

dir

Podremos ver una pequeña guía de uso a través del programa help, y para ver una ayuda de todos los comandos utilizables, podremos indicar la opción *:

help *

Para cerrar la sesión podremos usar:

kjob

Para poder programar en Basic se podía usar el comando ejecutar (r), de la siguiente manera:

r basic

Entonces el prompt cambiará para indicarnos que estamos en modo BASIC.

Simplemente podremos escribir los comandos en dicho lenguaje. Para volver al sistema podemos usar ... o el comando system.

Para eliminar todos los procesos activos, podremos usar:

:kill all

El sistema TOPS-10 es muy completo a pesar de su obsolescencia, y fue piedra basal para nuevos sistemas que lo seguirían, entre ellos UNIX e incluso implementaciones para microodenadores, como el CP/M de la Int€rgalactic Digital Re$earch. Podremos encontrar un conjunto de manuales aquí. instrucciones completas en el Manual del operador de TOPS-10.

Para encontrarnos con una pequeña guía del panel KI10, podremos encontrarla en la web oficial aquí. Utilizando el panel, podremos programar en ensamblador de la máquina, el obtuso lenguaje DEC MACRO10.

Jugar el juego Adventure:
Adventure fue el primerísimo de los juegos del género de aventuras de texto computadas, y nos presentaba una serie de opciones para seguir en un relato en primera persona, de viaje y descubrimiento. Para poder utilizarlo en la PDP10 emulada nos logueamos como usuario público, e ingresamos el comando:

r dsk:adv

Jugar DECWAR en la PDP-10:
DECWAR 2.3 es un juego de guerra espacial multiusuario del género StarTrek, que opera en tiempo real. Fue diseñado en 1979 para ser utilizado por hasta una decena de operadores en el mainframe DEC-10 dotado del sistema operativo TOPS-10. Para instrucciones sobre cómo jugar, podremos consultar este archivo.

cd ~/.simh/panelsim/pdp10ki10/ ;
wget http://repositories.lib.utexas.edu/bitstream/handle/2152/13510/decwar_drforbin_cis2_tops10_port-2.3.tap ;

En el simh:

sim>att rp2 decwar_drforbin_cis2_tops10_port-2.3.tap

Y lo inicializamos como de costumbre:

sim>boot rp

boot>boot

4 comentarios:

  1. General,
    Tengo entendido que simh permite operar versiones antiguas de unix, ha intentado operarlo con esta configuración que describe? Sería de un interesante valor educativo y lúdico para los trabajadores

    ResponderEliminar
    Respuestas
    1. Estimado Unknown:

      SIMH permite emular al dedillo varios equipos de antaño, incluyendo CPUs, memorias, memorias de masa, interfaces de comunicación etcétera. Se trata de un emulador unificado de hardware. En cuanto al software que pueden correr, depende de cada plataforma emulada. En el caso de la PDP10 no puede correr Unix, pero la PDP-11 si podrá numerosos sistemas operativos, incluyendo Unix.

      Ha de saber que existían numerosas versiones de él, siendo un paquete de tipo privativo y "no integrista".

      Hemos discutido al respecto en http://ubuntuperonista.blogspot.com.ar/2014/04/como-puedo-emular-una-pdp-11-desde.html
      el cual le recomendamos revisar si desea propugnar un valor educativo y lúdico.

      También hemos utilizado SIMH para emular un equipo zon Zilog Z80 y CP/M aquí: http://ubuntuperonista.blogspot.com.ar/2014/09/Z80-cpm-en-ubuntu-wordstar-visicalc-dbase-multiplan-ubuntu.html
      Nuestro movimiento ha escrito

      Eliminar
    2. Podrá aprender a utilizar el panel de la PDP-11 con el siguiente artículo:

      http://ubuntuperonista.blogspot.com.ar/2015/06/como-emulo-el-panel-de-una-dec-pdp-1140.html

      En ese caso, el sistema operativo será RT11 (un sucedáneo de Unix más capaz que la versión v6 del mismo, pero no la versión oficial. Sin embargo, encontrará su documentación completa en línea.

      Atte.

      Juan Perón

      Eliminar
  2. Le agradezco profundamente, y le dejo un caluroso abrazo.

    Gabriel Unknown Aquilano

    ResponderEliminar