sábado, 13 de febrero de 2021

¿Cómo emparcho el reproductor MOCP para que funcione el teclado numérico en Ubuntu?

Las alocuciones radiales de Juan Perón servían para llevar al hogar de todos los argentinos las palabras del Presidente de la Nación, toda vez que le permitían difundir la Doctrina del Movimiento. Los archivos de RTA conservan la exposición en la cual enseña a compilar una versión emparchada del reproductor MOC para que funcione el teclado numérico con Ubuntu.


¡Mis queridos descamisados!

Esta es una grata ocasión para llevarles a través de las ondas las claras referencias que hemos de seguir. Nuestro Movimiento requiere de una disciplina de ejecución que ha de emanar del Pueblo, ya que el objetivo que nos hemos planteado es trabajar en pos del País.

Sé que ustedes, llegados de su diaria labor, aspiran al justo descanso que hemos otorgado por Derecho a todos los trabajadores. Estas luchas han sido cumplidas y una vez finalizado, el operador continuará con sus tangos tradicionales.


Saben que llevo en mis oídos la más maravillosa música, que es aquella reproducida desde la terminal con el MOCP.

Este reproductor para terminal es capaz de emplear múltiples servidores de audio, reproducir mp3, flac, oga, y toda una miríada de formatos, toda vez que es capaz de sintonizar radios online.

Pero todo lo bueno puede mejorarse, si da el tiempo. Han de saber que la versión empaquetada con Ubuntu, si bien es Leal como el que más, consta de un mínimo problema: no responde adecuadamente al uso de la tecla Enter del teclado numérico.

Esto, que podría parecer una nimiedad soslayable, no lo es tanto para mí. Como carezco de manos utilizo en sobremanera dicho teclado numérico, y sobre todo para desplazarme, en lugar de las consabidas flechas del cursor en "t invertida".

Afortunadamente, gracias al compañero John Fitzgerald, quien es a la postre quien mantiene el paquete moc, contamos con un parche que corrige este problema.

Compilar un programa no es moco de pavo, pero os instruiré para hacerlo, e instalar la versión emparchada sin necesidad de reemplazar la otra (por cualquier problema que pudiesen tener).

Simplemente abrimos la terminal con Ctrl+Alt+T e ingresamos el siguiente comando de organización para instalar las dependencias:

sudo apt install libmadlib-dev libwavpack-dev libsndfile1-dev libspeex-dev libmpc-dev libid3-3.8.3-dev libmodplug-dev libfaad-dev libavcodec-dev libsidplay2-dev libflac-dev libvorbis-dev libsndfile1-dev liboggplay1-dev libncurses5-dev libavformat-dev librcc-dev libresample1-dev libcurl4-gnutls-dev libtaglib-cil-dev libvorbisidec-dev quilt libdb-dev autoconf libpopt-dev libltdl-dev

Esto os solicitará la contraseña de Conductor, y una vez que la ingresen "a ciegas",  descargará e instalará las librerías requeridas. Acto seguido, usaremos nuestra carpeta temporal para descargar su código fuente, compilarlo, e instalarlo. Para ello ingresarán:

touch ~/.popt
chmod og-w ~/.popt
cd /tmp
wget http://ftp.daper.net/pub/soft/moc/unstable/moc-2.6-alpha3.tar.xz
tar xf moc-2.6-alpha3.tar.xz
cp ~/Descargas/moc-26a3-to_r3005-1.patch.gz /tmp/moc-2.6-alpha3/
cd /tmp/moc-2.6-alpha3/
zcat /tmp/moc-2.6-alpha3/moc-26a3-to_r3005-1.patch.gz | patch -p1
echo -n 3005 > REVISION
autoreconf -if
./configure --prefix=/usr/local/
make
sudo make install

Y finalmente podrán copiar el ejecutable a la carpeta de binarios de compilación local con:

sudo cp mocp /usr/local/bin/

Naturalmente, ahora podremos iniciarlo con el comando:

mocp

Naturalmente, podremos contar también con los clásicos ecualizadores de MOCP:

mkdir ~/.moc/
wget http://ftp.daper.net/pub/soft/moc/contrib/eqsets.tar.gz
tar xvfz eqsets.tar.gz
rm eqsets.tar.gz

Esta compilación individual no reemplaza al paquete oficial. Si quisiéramos deshacernos de la versión compilada por nosotros mismos, simplemente la eliminaríamos con:

sudo rm /usr/local/bin/mocp

Y ahora los dejo con su programación favorita.

viernes, 12 de febrero de 2021

¿Cómo emulo una AT&T 3B1 UNIX PC7300 en Ubuntu?

Reunido en el 2º Congreso Confederal de la CGT, Juan Perón pronuncia un claro discurso en el cual enseña a emular una AT&T 3B1 UNIX PC 7300 en Ubuntu.

(...)

¡Trabajadores!

A lo largo de los tiempos históricos, el hombre - limitado a su propia naturaleza - ha abarcado todo tipo de demandas. La mayoría de ellas son inusitadas, pero le proveen el ímpetu vital que lo distingue como especie. Otras son Justas, pero sabemos que sólo podrá resolverlas actuando en comunidad.

Nuestra Doctrina Justicialista posee un carácter fundamentalmente humanista. La estrella polar que la orienta es saciar las ansias Justas del Pueblo Argentino. Para ello nos hemos disciplinado y hemos puesto nuestro empeño de la hora.

Hemos tomado parte en acciones de cohorte que nos han hermanado, y nos ha permitido proveer a nuestro Pueblo de la soluciones a sus inquietudes sociales, en forma de los Derechos del Trabajador, de la Niñez, o de la Ancianidad. Estas son cosas grandes, que se pueden lograr a través de la acción decidida de organismos bien concebidos. Sin embargo, si queremos realizar cosas que verdaderamente superen las ansias de los tiempos, necesariamente hemos de conformar supra-organizaciones, un estadío mayor que las anteriores. Esta mancomunidad es lo que forma un verdadero Movimiento.

En el cómputo suele suceder más o menos lo mismo. Uno puede hacer tareas sencillas, pero las más complejas necesidades de cómputo de potencia sólo pueden ser abarcadas si se organizan múltiples tareas de forma concurrente, en pos de un logro final.

No podemos dudar en que los sistemas UNIX y similares a UNIX siguen este precepto frontispicial a manera cabal, y lo tornan en un aspecto especialmente válido en el caso del equipamiento clásico. Este guarda valía no tanto por su potencia de cálculo real (que en función del tiempo, podría considerarse humilde), sino que lo hace en gran medida como recurso de estudio y aprendizaje de los más básicos rudimentos en las ciencias del cómputo.

Pongamos por caso el de la AT&T 3B1. Se trataba de un sistema informático desarrollado en 1984 por Convergent Technologies para AT&T Technologies. Era una microcomputadora de moderna concepción, que destacaba exteriormente por su moderno gabinete. AT&T decidió integrarle una versión de UNIX System V y varias aplicaciones ofimáticas que la distinguieran sobre la sosa y desprovista PC XT de IBM.

Su hardware giraba alrededor de un muy poderoso microprocesador de 32 bits Motorola MC68010 de 10 megahertz, provisto de entre 512KB y los 4MB de memoria RAM. El hardware de video constaba estaba dado por un adaptador capaz de presentar texto a 80x29 caracteres, y gráficas de 720x348 píxels, en un monitor monocromático de 12 pulgadas de fósforo verde.

Sus medios de almacenamiento de masa estaban dados por una unidad de diskettes de  5 1/4 pulgadas y baja densidad (360 kilobytes, a 9 pistas por sector), en tanto que la novedad la proveían hasta dos discos rígidos MFM, que variaban entre los 10 megabytes hasta los 67 megabytes al final de su ciclo productivo. Siendo diseñada para la AT&T, el equipo estaba dotado de fábrica para aprovechar las redes a través de su comunicador telefónico integrado, que le permitía establecer llamadas convencionales por medio de un software de gestión con agenda telefónica, y a través de redes de datos a 1200 baudios por segundo. Los periféricos se distinguían por su teclado avanzado acomodable sobre el gabinete, y un ratón de tres botones, algo aún inusual para las computadoras hogareñas.

El software de la 3B1 de AT&T se basaba fundamentalmente en una distribución licenciada de UNIX System V formado por la Release 2 a la que se le agregaron controladores de dispositivos desarrollados por Convergent Technologies, junto con extensiones de System V Release 3 y una serie de aplicaciones provenientes de las Versiones 4.1 y 4.2 de la distribución de Berkeley.

La 3B1 pasó así a formar el equipo ofimática inicial dirigido a todo tipo de pequeñas y medianas empresas, bajo el apelativo de AT&T UNIX PC 7300. ndudablemente que todo esto no costaba chirolas sino entre 5 y 7 mil dólares, lo que la dejaba sólo al alcance del más acaudalado oligarca. 

Nuestro Movimmiento es uno de gran raigambre popular, y reconoce que existe una sóla clase de hombres: los que trabajan. Por ello no podemos dudar en dar al Pueblo acceso inclusivo a a todo tipo de hardware y de software que desee. Para ello nuestro sistema GNU con Linux es capaz de emular sistemas de antaño con software libre, muestras de lo cual he dado instruyendo a la Masa a emular la AT 3B2/400 en Ubuntu. 

En este caso, os enseñaré a emular la arquitectura y entorno de la AT&T 3B1 UNIX PC 7300 gracias a FreeBee, un emulador de 3B1 liberado bajo licencia GNU GPLv3.

Se trata de un emulador experimental, pero que ofrece casi todas las funcionalidades, a excepción del módem telefónico.

Instalar el System V en la 3B1 original era una tarea titánica que requería obrados conocimientos, o bien hojear la excelente documentación de puesta a punto del sistema. Aún así, como Conductor del Justicialismo me he impuesto la tarea de obrar día y noche por mis queridos descamisados.

En primer lugar, con fime voluntad abrirán una Terminal con Crtl+Alt+T. Acto seguido, instalarán la única dependencia requerida por el sistema de emulación, mediante el siguiente comando de organización:

sudo apt install libsdl2-dev minicom agetty

Nuestro sistema nos solicitará nuestra contraseña de conductor. Conforme la proveamos, descargará e instalará la librería.

Inmediatamente capearemos la tarea de descargar el código fuente del emulador FreeBee y compilarlo. Para que opere habrán de descargar las imágenes ROM de las rutinas de E/S y BIOS de la AT&T 3B1 (necesarias para el funcionamiento del emulador). Complementariamente habrán generar imágenes vacías de disco rígido e instalar el sistema operativo en él, junto con una miríada de aplicaciones.

Indudablemente que toda esta tarea podrá disfrutarse como unas vacaciones pagas en Chapadmalal, ya que sólo hemos de copiar y pegar en nuestra terminal el siguiente bloque de Comandos de Organización:

cd ~ ;
git clone --recurse-submodules https://github.com/philpem/freebee ;
cd ~/freebee/ ;
make ;
git clone https://github.com/dgesswein/s4-3b1-pc7300 ;
cd ~/.freebee/s4-3b1-pc7300 ;
make ;
mkdir ~/freebee/img/ ~/freebee/roms/ ;
cd ~/freebee/img/ ;
wget https://www.skeeve.com/3b1/os-install/08_Foundation_Set_Ver_3.51_no_phinit.IMD.gz ;
wget https://www.skeeve.com/3b1/enhanced-diag/bootable-extended-diag.img.gz ;
wget https://www.skeeve.com/3b1/enhanced-diag/diag.img.gz ;
wget https://www.skeeve.com/3b1/enhanced-diag/Install ;
wget https://www.skeeve.com/3b1/enhanced-diag/Install.bak ;
wget https://www.skeeve.com/3b1/enhanced-diag/README ;
wget https://www.skeeve.com/3b1/enhanced-diag/README.adr ;
wget https://www.skeeve.com/3b1/enhanced-diag/s4diag ;
wget https://www.skeeve.com/3b1/all-sw+fixdisk-hd.img.gz
wget https://www.skeeve.com/3b1/full+lots-sw.img.gz
wget https://www.skeeve.com/3b1/big-empty.img.gz
wget http://bitsavers.org/pdf/att/3b1/999-801-025IS_ATT_UNIX_PC_System_Software_Installation_Guide_1987.pdf ;
gzip -d full+lots-sw.img.gz ;
cp ~/freebee/img/full+lots-sw.img ~/freebee/hd.img ;
gzip -d 08_Foundation_Set_Ver_3.51_no_phinit.IMD.gz ;
gzip -d bootable-extended-diag.img.gz ;
gzip -d diag.img.gz ;
cd ~/freebee/roms/ ;
wget http://bitsavers.org/pdf/att/3b1/firmware/3b1_roms.zip ;
unzip 3b1_roms.zip ;
mv '14C 72-00616.bin' 14c.bin ;
mv '15C 72-00617.bin' 15c.bin ;
cd ~
mv ~/freebee/ ~/.freebee/ ;
echo '#Arrancador del emulador 3b1' >> ~/.freebee.sh ;
echo 'cd ~/.freebee/' >> ~/.freebee.sh ;
echo './freebee -s 2:3'  >> ~/.freebee.sh ;
chmod +x ~/.freebee.sh ;
echo 'Todo listo!'

Naturalmente presionarán Enter para que se ejecuten.

Opcionalmente podríamos editar el archivo de configuración para darle un buen tamaño de pantalla y el color adecuado del monitor de la UNIX PC. Esto lo haremos con:

nano ~/.freebee/.freebee.toml

Se abrirá el editor GNU Nano. Le pegamos el siguiente contenido (naturalmente reemplazando usuario no nuestro propio nombre de usuario):

# Sample TOML configuration file for freebee
#
# freebee searches first for ./.freebee.toml and then
# for $HOME/.freebee.toml. It reads the first one it
# finds and then stops.

[floppy]
    disk = "/path/to/floppy.img"    # Floppy disk is optional

[hard_disk]
    disk1 = "/home/usuario/.freebee/hd.img"
    disk2 = "/path/to/hd2.img"    # Second disk is optional
    # Default disk parameters. Overridden by disk label in
    # the hard disk image.
    heads = 8
    sectors_per_track = 17

[display]
    x_scale = 2.0            # Scale in X dimension, 0 < n <= 45
    y_scale = 3.0            # Scale in Y dimension, 0 < n <= 45
    scale_quality = "linear"    # "nearest" (fastest), "linear" (default), or "best" (anisotropic)
    red = 0x00            # foreground colors
    green = 0xFF
    blue = 0xA9

[roms]
    rom_14c = "/home/usuario/.freebee/roms/14c.bin"    # Odd locations
    rom_15c = "/home/usuario/.freebee/roms/15c.bin"    # Even locations

[serial]
    symlink = "serial-pty"

[vidpal]
    installed = true

[memory]
    base_memory = 2048        # Units of 1K bytes, 2048 is the max.
    extended_memory = 2048        # Units of 1K bytes, 2048 is the max.

...y guardamos con Ctrl+o y salimos con Ctrl+x.

Ya podrán arrancar el emulador con el System V instalado mediante el comando:

./.freebee.sh

Esto encenderá el equipo virtual y dará iuicio al UNIX System V 3.51m contenido en la imagen de disco rígido. El procedimiento original taradaba unos dos minutos aproximadamente y está detallado en la página 58 del manual de propietario.

Se presentará la pantalla que indica el chuqueo e inicio de la BIOS detallando el contenido de memoria ROM y RAM emulada...

...y conforme se inicialice el stack de framebuffer, System V será capaz de presentar gráficas, una de las características rompedoras de este equipo.

Y el sistema comenzará a la serie de autocomprobación de los temperamentales discos rígidos y sus sistemas de archivo de época. Esta lenta condición sin embargo lo tornaba en uno de los equipos de escritorios más seguros de los ochentas.

El sistema multiusuario solicitará acceso a través de su programa de login

Podremos acceder a un útil tutorial ingresando como el usuario tutor. Cuando solicite contraseña, presionamos Enter sin ingresar ninguna.

El tutor nos enseñará el uso del ratón (lo capturamos en el emulador presionando F10). 

Siguiendo el tutor y el manual podremos aprender a usar el entorno gráfico. También podremos aprender a ver los recursos del UNIX. Naturalemnte, su uso es bastante similar al concepto de escritorio delimitador por "X", al fin y al cabo UNIX System V no inventó la rueda, la hizo girar.

Podremos administrar hasta 4 usuarios activos con sus respectivas ventanas, haciendo clic en el símbolo "W" de la esquina superior derecha. Si elegimos la opción rlogin podremos abrir otra terminal.

Podremos cerrar las ventanas haciendo clic en la "x" del costado inferior izquierdo.

Para ingresar como Superusuario de Administración, debemos acceder como root y sin contraseña.

Usuario: root
Contraseña: ninguna (presionar Enter)

Podremos ahora hacer uso del intérprete de comandos Korn Shell 88, cuyo prompt es un #.

El emulador Freebee cuenta con unas teclas especiales que operan funciones propias:

F9: Tecla SUSPEND
F10: Toma/Suelta cursor del ratón de Ubuntu en el Freebee.
F11: Inserta/retira imagen de diskette floppy (`floppy.img`)
Alt+F12: Sale del emulador

Naturalmente, como lleva un UNIX System V, le podremos cambiar una contraseña con el comando passwd de UNIX.

Podremos usar el conocido editor vi, pero también podrán usar se, el Editor de Pantalla de la Universidad Georgia Tech.

se

El editor arrancará en modalidad comando, y es bastante similar a ed. Podremos obtener ayuda de un comando con el comando h seguido por la letra del comando.

Entre las letras de comando tenemos guardar (w). Podremos salir del editor con el comando q.

Indudablemente, además de la paquetería típica de UNIX System V,, podrán encontrar numeroso software adicional a en UNX PC Taronga.

En cualquiera de las opciones, es útil recordar que el teclado original contaba con algunas teclas no disponibles en el teclado normal, pero que son emuladas mediante combinaciones o teclas del teclado actual.

  • F1-F8 -- "soft keys" en la parte inferior de la pantalla
  • F9 -- Tecla SUSPD (hace aparecer una lista de ventanas)
  • Alt+Esc -- Tecla EXIT
  • Alt+Retroceder -- CANCL key
  • Av.Pág -- Tecla HELP
  • Re.Pág -- Tecla PAGE
  • Ins -- Tecla CMD
  • Intro -- Tecla RETURN
  • Alt+Enter -- Tecla ENTER
  • Pausa Inter -- Tecla RESET BREAK

Configurar comunicaciones en la Unix PC

La Unix PC puede recibir y tranmitir a otras computadoras con un enlace serial, en este caso virtualizado. Para ello hay que configurar su Unix System V. A tal fin nos logueamos a la Unix PC como root y agregamos la linea al dispositivo linux, ingresando los siguientes comandos (todos ellos seguidos de Enter):

cd usr
cd lib
cd uucp
cp L-devices L-devices.orig
rm L-devices

Ahora editaremos el fichero L-devices con:

ed 

Se ejecutará el parco editor de líneas ed. Le ingresamos los siguientes comandos, presionando Enter con cada uno de ellos.

a
DIR tty000 0 9600
.
w L-devices
q

Una vez agregada esta línea, reiniciamos la Unix PC con reboot o shutdown.

a) Loguarse la Unix PC desde Ubuntu:

En la Unix PC nos loguemos como root y la ponemos en escucha:

setgetty 000 1

En tanto en Ubuntu ponemos:

cd ~/.freebee/ ;
minicom -D -/.freebee/serial-pty

Para salir del cliente Minicom, debemos usar Ctrl+a,q

b) Conectarse a Ubuntu desde la Unix PC

En la Unix PC nos logueamos como root y nos aseguramos colgar la terminal tty000 con el comando:

setgetty 000 0

En tanto, en Ubuntu vamos al directorio del emulador Freebee y revisamos en qué pseudo-terminal de Ubuntu pretende usar la terminal serial de la 3B1 Unix PC 7300, mediante:

cd ~/.freebee/ ;
ls -l serial-pty


Por ejemplo, si sale:

serial-pty -> /dev/pts/1

...significa que en Ubuntu debemos dejar en escucha a la pseudoterminal pts/1. Ello se haría con el siguiente comando:

sudo agetty pts/1 vt100

Luego, ya de vuelta en la UNIX PC, ingresamos:

cu -l tty000

Una vez que nos informe "Connected" debemos presionar Enter una vez para recibir el prompt de usuario y contraseña.

Gracias a ello, podremos establecer enlaces desde la terminal serial con la internet moderna.

Apagar el emulador

El procedimiento de apagado correcto de System V se hace desde la consola de administración. Podremos apagar el sistema con el comando shutdown. También es útil recordar que podremos abrir un usuario nuevo presionando F9 y loguearlo como root y escribir shutdown.


Una vez que System V se apaga, podremos desconectar el emulador mediante Alt+F12.

Para crear una imagen de diskette tipo MS-DOS de 360kb (9 pistas por sector) en nuestro sistema de hospedaje GNU con Linux podríamos usar:

dd if=/dev/zero of=attdsk.img bs=1k count=360
/sbin/mkfs.fat dos.img
sudo mount -o loop -t msdos attdsk.img /mnt

Acto seguido copiamos los archivo que queremos en /mnt (recordando de no sobrepasar los 360 kilobytes). Podremos desmontar el diskette con:

sudo umount /mnt

AT&T producía excelente documentación técnica en inglés, los famosos "libritos rojos. Podrán encontrar los manuales de la AT&T 3B1 aquí.