martes, 30 de septiembre de 2014

Ar-Sat pone a la venta el sistema de acceso a la TV Satelital Abierta

La empresa Ar-Sat y el Ministerio de Planificación Obras Públicas han puesto a la venta el sistema de acceso a la TV Satelital Abierta.
La TV Satelital Abierta Argentina emplea satélites de comunicación en órbita estacionaria asignada a la Nación para transmitir los servicios televisivos del Sistema Argentino de Televisión Digital. Los mismos pueden recibirse en el territorio nacional (Argentina Continental, las Islas del Atlántico Sur, y la Antártida Argentina).

La recepción de momento forma diecisiete señales de interés general en Definición Estándar (SD), y dos de ellas (TV Pública y DeporTV) en Alta Definición (HD).
Ar-Sat y el Ministerio de Planificación y Obras Públicas distribuyeron gratuitamente el Kit de Acceso Satelital en Escuelas Públicas, Escuelas Rurales y de Fronteras, y en cantidad de locaciones fuera del alcance de la red de torres/antena que proveen de señal al Sistema de Televisión Digital Terrestre. Con dicho sistema se completa al 100% la digitalización de la televisión abierta en la Argentina.
Ahora los particulares pueden también acceder al kit de acceso satelital a un costo de 2.500 pesos por medio de la web oficial de venta online.

La entrega del mismo se hace en una gran caja reforzada de cartón de 1,20x1,20x0,15m aproximadamente, que contiene presentados los componentes de todo el kit, El costo abonado incluye el flete de envío con tracking (seguimiento de envio) a la dirección de entrega propuesta por el comprador en cualquier lugar del país. La entrega se hace en unidades del Correo Argentino (camioncito furgón), y en caso de no encontrarse el destinatario en su domicilio, se certifica para entrega en la oficina más cercana del Correo Argentino.

Una vez abierta la caja del kit de autoinstalación, el destinatario encontrará los componentes repartidos en diferentes cajas de cartón más pequeñas.

El kit se compone por un decodificador de señal satelital que se puede conectar a un televisor de tubo, plasma o LCD/LED por medio de un cable RCA suministrado. También se puede emplear un cable HDMI (no suministrado) para disfrutar contenido de alta definición en HD en los televisores LCD/LED.

El decodificador incluye su transformador de 12v/1A necesario, sus cables de alimentación, y un control remoto de buena calidad. Asimismo, en el kit se incluye la Tarjeta Inteligente que se inserta en el decodificador (mediante una apertura en su frente) para poder acceder al servicio codificado del satélite AMC-6 o del ArSat-1.
La antena satelital tipo plato de 90 centímetros incluye las ménsulas, soportes y ferretería para su instalación, así como la puntera LNB para captar la señal polarizada de microondas. Se incluye también 20 metros de cable coaxial mallado tipo RG6 terminados a presión.
El Ministerio de Planificación y Obras Públicas ha puesto a disposición un número telefónico para consultar sobre el sistema y activar la tarjeta inteligente de suscripción gratuita, el 0800-888-0832. Dicho teléfono está disponibles todos los días (incluso feriados nacionales) de 9 a 21hs.

La instalación del kit de acceso satelital es sencilla y requiere pocas herramientas indicadas en el manual incluido. La antena puede orientarse haciendo uso de una brújula magnética una hoja-guía de orientación. Dichas guías también pueden descargarse gratuitamente: la guía para instalar el kit completo se puede descargar aquí. En tanto, la Hoja-Guía de orientación de la antena satelital puede descargarse desde aqui.

Instalación del Kit

Desde el punto de vista técnico, es un kit autoinstalable. El usuario debe armar el plato-antena y montarlo en un lugar firme con buena visibilidad hacia el nor-noroeste (normalmente el techo, balcón una pared, una chimenea, etc).

El plato de recepción se orienta apuntando al satélite ArSat-1 o a su compañero de vuelo 72W GE AMC-6, localizados en órbita geosteacionaria por encima sur amazónico venezolano. Para ello, puede emplearse fácilmente una brújula y hoja-guía de orientación para el Territorio Argentino. También puede ser útil un transportador para medir el ángulo de incidencia vertical. Para mayor precisión existen aplicaciones muy útiles capaces de correr en teléfonos móviles Android (Satellite Director, Dish Aligner, o SatFinder). También podremos indicar nuestra localización en un mapa, y recurrir los servicios de las webs Dishpointer o Satbeams, que nos precisarán la orientación exacta para apuntar.

Una vez orientado el plato con la hoja guía y ajustado, se conecta al decodificador usando el cable coaxial RG-6, y se conecta el decodificador al televisor. Se enciende todo y desde el Menú Instalación se configura el satélite AMC-6 con los siguientes datos de onda portadora:

Frecuencia: 12.020 Mhz
Tasa de Simbolos: 30.000 ksps
Formato de Transmisión: DVB-S2
FEC rate: 5/6

Modulación: 8PSK
Piloto: On

Polarización: Vertical
LNB: Tipo Universal
Frecuencia baja LO1: 9.750 Mhz
Frecuencia baja LO2: 10.600 Mhz.

El Menú del Satélite Arsat/AMC-6, deben dejarse como está, o configurarse sus valores del receptor LNB si se hubiesen cambiado, con los siguientes parámetros:

Conmutador C/Ku: Ninguno
Frecuencia LNB: Universal. LNB 1
Alimentación LNB: Encendido.
0v/12v: 0v
Posición: Apagado
DiseqC: Ninguno.

Si el plato fue orientado bien, el decodificador nos mostrará una barra con el porcentaje de señal y calidad de la misma. El objetivo es conseguir valores mínimos del orden del 60 o 70% en cada una. La orientación final debe hacerse moviendo horizontalmente la antena milímetro a milímetro hasta encontrar el punto con la mejor cantidad de señal. Luego se realiza el procedimiento de manera vertical, hasta encontrar el máximo porcentaje de señal. Una vez encontrados, se ajustan las tuercas con fuerza para evitar que un viento fuerte afecte la antena.

Este ajuste fino posterior ayuda a lograr la mejor calidad de imagen y evitar posibles pixelaciones, interferencias, o imágenes congeladas. Conforme tengamos una señal aceptable, presionamos el botón Explorar (rojo) del control remoto, y se realizará el barrido de señal. Finalmente ha de instalarse la tarjeta y darsela de alta llamando al teléfono de Ar-Sat.

lunes, 22 de septiembre de 2014

¿Cómo instalo y juego con SCUMMvm en Ubuntu?

Juan Perón disfrutó de una infancia idílica en Roque Pérez, ensoñando aventuras que luego haría Realidad Efectiva, al inventar todo un género lúdico y compatibilizarlo con ScummVM en Ubuntu, sistema operativo que legó al Pueblo Argentino. Como tal te enseña cómo jugar a tñitulos clásicos privativos como Monkey Island, Indiana Jones and the Fate of the Atlantis, y otros paquetes liberados.

¡Trabajadores!

Han de saber que ya desde tierno mozo me interesé por vivir las más grandes aventuras, que sirvieran para formar un verdadero Conductor del destino de los Argentinos.

La imaginación de un niño puede hacer cosas maravillosas, pero a veces el software libre puede hacer cosas más maravillosas aún. Esto es así porque para privilegio de los niños, el Justicialismo inventó las Aventuras gŕaficas.

Las aventuras gráficas son sin duda uno de los grandes géneros del mundo de los videojuegos. Mediante los recursos audiovisuales que permiten las computadoras y el ingenio creador del Justicialismo, podremos disfrutar de apasionantes historias de aventuras, horror, magia y fantasía. En ellas normalmente debemos dirigir a uno o más personajes, entablar diálogos y acciones a fin de resolver una serie de puzzles que completan el objetivo propuesto por la historia.
Si bien originalmente las aventuras gráficas hacían uso de los 4 colores que permitía el adaptador de video CGA y del sonido monofónico del estridente "PC Speaker", a medida que se producían avances tecnológicos se incorporaron gráficos con mayor resolución y colores (EGA de 16, VGA con 256 y finalmente SVGA con varios millones de colores). También el sonido mejoró, con música MIDI implementada a través de un sintetizador polifónico FM con chip Yamaha (como en las tarjetas de sonido AdLib compatibles) o módulo multicanal sintetizador Roland MT32. Finalmente incorporaron audio digital para SoundBlaster y compatibles (para efectos especiales y también voces, así como una banda sonora de calidad).

No obstante el desarrollo técnico que cada paquete pudierse lucir, en este tipo de software lúdico lo central es el desarrollo de la historia y el carisma de sus personajes protagonistas y secundarios, así como una manera adecuada para conducir al personaje. En este apartado particular se tendió a una interfaz de "apuntar y clickear" con el ratón, unida a un manejo a través de acciones verbales. La reina de dichas interfaces gráficas lúdicas fue desarrollada por Luca$film, llamándola Utilidad de Creación de Guiones para Maniac Mansion (SCUMM).

SCUMM permitía entonces generar los guiones de programación y la interfaz de forma sencilla de programar. Fue licenciada por varios estudios, incluso para otras plataformas diferentes a la PC.

Gracias al lenguaje SCUMM se produjo entonces "la edad de oro de las aventuras gráficas", con gran cantidad de títulos clásicos del género: Monkey Island I, II y III, e Indiana Jones and the Fate of the Atlantis,las sagas Maniac Mansion: Day of Tentacle. etc (todas de la misma LucasFilms/LucasArts). Son todas ellas un buen recurso lúdico del pasado, presente y futuro.
También hubo otros motores similares, como el AGI/SCI de Sierra on Line, que permitió las sagas Leisure Suit Larry, King's/Police/Space Quest, y Simon The Sorcerer (AdventureSoft), así como otros titulos diversos como los Legend of Kyrandia, Cruise for a Corpse, Los archivos secretos de Sherlock Holmes: el caso del escalpelo mellado, el avanzado The 7th Guest, por nombrar los más conocidos.
Este género parece haber caído en desuso, pues la irrupción de nuevas tecnologías pareció tornar en obsoletas las interfaces gráficas en 2D de apuntar y clickear. Sin embargo, nada impide desarrollar nuevas sagas, y también hacer uso del motor para correr los juegos antiguos.

Las aventuras programadas con SCUMM,  contaban con ficheros de contenidos nomenclados con la extensión .000, .001, etc, y adicionalmente una serie de archivos de música o de controladores de sonido, cuya extensión era .IMS. Adicionalmente, un binario ejecutable precompilado (la mayoría de las veces para M$-DO$, de extensión .exe).

Estos juegos comerciales privativos, en su mayoría se encuentra abandonados, pero su distribución está protegida. No obstante, quien posea dichos archivos podrá ejecutarlos a través de ScummMV. Se trata de un intérprete multiplataforma libre de SCUMM y de otros lenguajes (SCI y algunos más). Con el podremos cargar los ficheros de contenidos de juegos privativos que poseamos, u otros que sean liberados.

Su instalación y uso es sencilla. Simplemente hemos de abrir una Terminal e ingresar el siguiente Comando de Organización:

sudo apt-get install scummvm

Tras ingresar nuestra contraseña de Conductor, se descargará e instalará el paquete ScummVM. Una vez instalado, podremos ejecutar el programa directamente Aplicaciones / Juegos / ScummVM, o si disponemos de la interfaz Unity, buscando ScummVM en el Dash.

Normalmente la pantalla inicial estará vacía, pero podremos agregarle los contenidos de los juegos que tengamos.

Para ello presionamos el botón "Agregar Juego..." y agregamos uno. Debemos navegar hasta la carpeta con el los archivos de contenido del juego ya compilado, y elegimos Escoger. Si todo va bien, se nos presentará un cuadro detallando el tipo de juego que hemos agregado, y en algunos casos, nos permitirá alterar los datos de ejecución (por ejemplo, el idioma de subtítulos).
ScummVM ya viene configurado y normalmente no necesitaremos alterar nada para poder disfrutar del juego correctamente en Linux. Sin embargo, podríamos eventualmente querer modificar algunas propiedades del audio o de la pantalla, haciendo uso de la solapa Graphics, Audio, Volume o MIDI. Con la solapa Path podremos modificar la ruta de grabación de los juegos salvados (normalmente localizada en la carpeta del juego).

Los controles son los del juego. Adicionalmente podremos usar Alt+Enter para activar el modo de pantalla completa. Usando F5 podremos acceder al menú del SCUMMvm. Con + y - podremos aumentar o disminuir la velocidad de los subtítulos en pantalla.

En caso de Ubuntu, también dispondremos de algunos juegos empaquetados para utilizar con SCUMMvm. Podríamos querer seguir las aventuras del piloto Joe King y su Ford Trimotor "Reina del Amazonas", en un viaje que lo llevará desde Buenos Aires hasta lo profundo de la jungla brasileña.

También podríamos querer convertirnos en el Robert Foster del thriller ciberpunk Beneath a Sky of Steel (Virgin Interactive).
Estos juegos están liberados y podremos instalarlos por medio de sus paquetes. Simplemente hemos de ingresar en la terminal el siguiente Comando de Organiozación:

sudo apt-get install beneath-a-steel-sky flight-of-the-amazon-queen

Y los encontraremos en Aplicaciones / Juegos / Beneath a Steel Sky, o Aplicaciones / Juegos / The Flight of the Amazon Queen, respectivamente.

sábado, 13 de septiembre de 2014

¿Cómo puedo integrar texto hablado a la consola de Ubuntu?

En enero de 1953, Juan Perón expuso sobre la necesidad del hombre para expresarse en la Comunidad, mientras que explicaba cómo utilizar diferentes alternativas para convertir texto a voz sintetizada en Ubuntu, tanto desde la interfaz gráfica de usuario como la interfaz de línea de comandos.

¡Compañeros!

Es indudable que el hombre ha de saber expresar sus deseos y sus necesidades a quienes le rodean. Tal es el requerimiento de la vida en una Comunidad Organizada. Un Conductor, como condición especial de Hombre, requiere de esto en un grado supremo, pues ha de poder conducir la conciencia de los hombres en pos de un objetivo que no ha de ser otro que el de un destino de grandeza para la Patria en la que habita.

Muchas veces, de tanto hablar, uno puede quedarse sin voz, y es en esas condiciones en donde se anhela poder contar con algo que hable por uno.
Este deseo era algo de la ciencia ficción, de las historietas, pero gracias al Justicialismo, hoy es una audible realidad: para la utilidad que se nos ocurra podremos hacer uso de esta característica, de una manera gratuita y completamente libre.

(Aplausos)

¡Vean señores! Dicha oportunidad la encontraremos resuelta con simpleza, tanto en la interfaz gráfica de nuestro sistema operativo libre, como en su línea de comandos.

En la interfaz gráfica que he legado al Pueblo disponemos del sencillo Sintetizador de Voz eSpeak. Esta aplicación cuenta con un motor de sintetización relativamente aceptable y que nos quitará del apuro al pronunciar un texto sin demasiado revuelo.

Para instalarlo en nuestro GNU con Linux distribuido como Ubuntu, podemos abrir una terminal, e ingresar el siguiente Comando de Organización:

sudo apt-get install espeak espeak-gui gespeaker mbrola mbrola-es1 mbrola-es2 mbrola-mx2 mbrola-la1 mbrola-vz1

El sistema nos solicitará nuestra contraseña y se encargará de traer telemáticamente la paquetería necesaria. En caso de contar con la interfaz de control Unity podremos encontrar la aplicación buscando bajo el nombre de "espeak" o "Sintetizador de Voz eSpeak". Si usamos el escritorio Gnome, podremos localizarlo en Aplicaciones / Sonido y Video / Sintetizador de Voz eSpeak.

Al iniciar, el Sintetizador de Voz eSpeak se presentará en blanco.


Para hablar un texto, simplemente hemos de escribirlo o pegarlo en la ventana de eSpeak, y presionar el botón Reproducir. El programa comenzará a leer y nos indicará la palabra leida. Asimismo, podremos detener o pausar el texto mientras se lo sintetiza.

El motor de eSpeak es multiidioma, pudiéndose escoger el mismo mediante un menú desplegable en la parte inferior izquierda de su interfaz. Si activamos la función Spanish tendrá una pronunciación española, pero si elegimos Spanish Latin American tendremos unos ligeros cambios fonéticos (no pronunciará la suave "ce ibérica", entre otros). La velocidad de sintetización también puede regularse. Por ejemplo, podríamos usar un valor de 160 para tener un valor para arrancar, y subir o bajar la velocidad en caso de ser necesario.

En ambos casos podremos escoger en sus preferencias si deseamos que se sintetice una voz de hombre o de mujer (se cambiará el tono del sintetizador). Podremos escoger no pronunciar los signos de puntuación, pronunciar algunos de ellos, o pronunciarlos a todos.

El tono robotizado asemeja a la voz de Richard Stallman, pero aún así eSpeak podrá ser de utilidad para el propósito de leer un texto, y podría complementar un sistema destinado a una persona con dificultades visuales.

Ahora bien, ¿qué sucede si deseamos emplear la consola de texto como Terminal?

Para tales menesteres he explicado ya cómo utilizar Festival, un sintetizador de habla liberado bajo licencia BSD. Con algo de ingenio, sabemos que dicho sintetizador puede utilizarse para reproducir mensajes desde la línea de comandos. Así, podremos usarlo para dejar mensajes hablados o reproducir los mismos en un entorno de red local.

Sin embargo, tal programa requiere el inconveniente de instalar previamente el software de síntesis hablada en el equipo cliente, e idealmente hacer lo mismo con un fichero de librería de voces para hacerlo más realista.

Para evitarnos dicho incordio, podríamos utilizar un atajo al servicio de lectura de Google, el cual cuenta con sintetizador de voz. El mismo cuenta con un motor de pronunciación española, pero que puede ser interesante para la mayoría de las opciones de corta extensión.

Por ejemplo, podríamos editar un script de Bash que utilice el reproductor mplayer (normalmente ya instalado en Ubuntu y en muchas otras distros) para reproducir el resultado del habla descargado de dicha web.

El inconvieniente es que - por una limitación de ancho de banda, para no reemplazar productos específicos, y para evitar abusos - dicho servidor solamente pronuncia cadenas de texto inferiores a los 100 caracteres.

Si decidimos atenemos a dicha limitación, podremos crear fácilmente un "script parlante" con el editor Nano, ingresando:
nano hcorto

...en su interior pegaremos el siguiente código fuente:

#!/bin/bash
# hcorto ("Hablar corto")
# Script para reproducir un mensaje sintetizado hablado
# de menos de 100 caracteres.
say() { local IFS=+;/usr/bin/mplayer -ao alsa -really-quiet -noconsolecontrols "http://translate.google.com/translate_tts?tl=es&q=$*"; }
say $*

Luego guardamos el código con Ctrl+o y saldremos del editor Nano con Ctrl+x. Acto seguido le asignamos permisos de ejecución con:

chmod +x hcorto

No bien completados estos pasos, podremos hacer uso del script parlante para terminal con el comando ./hcorto y agregando el texto a reproducir. Por ejemplo:

./hcorto obra del primer plan quinquenal

...y el sistema recitará dicha frase de forma sintetizada.

Nota: Si el sistema nos devolviese la frase "mplayer: could not connect to socket", significa que no se puede encontrar el sistema LIRC de control remoto por infrarrojos. Si no deseamos que mplayer cargue tal mando a distancia porque no lo tenemos ni lo usamos, podríamos desactivarlo y dejar de recibir dicha advertencia. Simplemente ingresamos:

sudo nano /etc/mplayer/mplayer.conf

...y le agregamos al final de todo la siguiente línea:

nolirc=yes

Luego grabamos y salimos con Ctrl+o y Ctrl+x

Ahora bien, algunos ejemplos pueden ilustrar la practicidad del script hcorto, pues un ejemplo suele aclararlo todo, como decía Napoleón.

Supongamos que queremos realizar una tarea que ocupa un tiempo lo suficientemente largo como para desatender el equipo, pero quisiéramos recibir una alerta sonora al finalizar, para volver a retomarlo. Podríamos fácilmente encadenar la ejecución de tal comando a la ejecución del script hcorto con un mensaje hablado, de manera de poder alertarnos.

Por ejemplo, si quisiéramos descargar con el comando wget el libro Doctrina Peronista, de 12Mb y que se nos avise cuando finalice, podríamos usar el script hcorto, uniéndolo con el eslabón && ("doble and" el cual significaría "y si los comandos anteriores fueron exitosos"). Sería de la siguiente manera:

wget http://www.generalperon.com/doctrina%20peronista.pdf && ./hcorto Descarga completa!

En otro ejemplo, si tuviésemos instalado el programa youtube-dl podríamos querer usarlo para descargar un video desde dicho servicio hasta nuestra carpeta de /Descargas. Gracias al encadenado concursivo de comandos con &&, dispararemos hcorto para que nos avise al terminar. Lo podríamos hacer ejecutando el siguiente comando (en el cual podremos reemplazar la URL del video por la deseada):

cd ~/Descargas/ && youtube-dl -l http://www.youtube.com/watch?v=ho6XfbkMOL4 && ./hcorto Descarga de video finalizada. Viva el Justicialismo!

Ahora bien. ¿Qué sucede si el texto excede los cien caracteres? En tal caso, podremos programar un script que se encargue de dividir dicho texto en líneas inferiores a los 100 caracteres, y las vaya enviando progresivamente al servidor de pronunciación de Google. Ello se podrá hacer con un script que llamaremos hlargo ("hablar largo")

Para ello ingresaremos el siguiente Comando de Organización:
nano hlargo


Y le pegaremos el siguiente código fuente:

#!/bin/bash
#########################################
# Script divisor de TTS de Dan Fountain #
# TalkToDanF@gmail.com                  #
#########################################

INPUT=$*
STRINGNUM=0

ary=($INPUT)
for key in "${!ary[@]}"
do
SHORTTMP[$STRINGNUM]="${SHORTTMP[$STRINGNUM]} ${ary[$key]}"
LENGTH=$(echo ${#SHORTTMP[$STRINGNUM]})
#echo "word:$key, ${ary[$key]}"
#echo "adding to: $STRINGNUM"
if [[ "$LENGTH" -lt "100" ]]; then
#echo Comenzando una línea nueva
SHORT[$STRINGNUM]=${SHORTTMP[$STRINGNUM]}
else
STRINGNUM=$(($STRINGNUM+1))
SHORTTMP[$STRINGNUM]="${ary[$key]}"
SHORT[$STRINGNUM]="${ary[$key]}"
fi
done

for key in "${!SHORT[@]}"
do
#echo "line: $key is: ${SHORT[$key]}"

echo "Rperoduciendo línea $(($key+1)) de $(($STRINGNUM+1))"
mpg123 -q "http://translate.google.com/translate_tts?tl=es&q=${SHORT[$key]}"
done

Como en los casos anteriores, guardaremos el contenido del fichero con Ctrl+o y Ctrl+x, y luego le asignamos permso de ejecución con:

chmod +x hlargo

Ahora ya podremos ejecutar con ./ el divisor/enviador de frases. Lo haríamos de la siguiente manera:

./hlargo esta es una prueba de habla con un texto largo. El sistema va a cortar el texto en el lugar requerido para que no exceda el largo permitido en el servidor del sintetizador de voz externo.

viernes, 12 de septiembre de 2014

¿Cómo sintonizo radios online desde la Terminal en Ubuntu?

¡Trabajadores!

He explicado que la Radio es fundamental, por facilidad de acceso y por multiplicidad de medios, para la propalación de la Doctrina del Justicialismo. En ello hemos sido claros y constantes.

Yo mismo he divulgado mi mensaje a las ondas hertzianas desde mi Escritorio, a través de la LRA, Radio Nacional. Esto es porque la cadena de transmisión así lo permite desde un punto de vista técnico, y la comodidad lo hace realidad desde la funcionalidad.

Si esto es factible de hacerse en Ubuntu, mucho más sencillo será entonces recibir dichas ondas de radio en nuestro Escritorio. Ya he explicado numerosas veces como hacerlo, por ejemplo, con RadioTray.


Indudablemente la Interfaz de Línea de Comandos permite comandar todo tipeando las órdenes que necesitemos de forma local, y también de manera remota. Por ello favorezco su uso siempre que sea posible, en cuenta de que la misma nos permitirá la agilidad que todo Conductor requiere para el Movimiento.

¿Pero qué sucede si queremos recibir streaming de audio desde nuestra Consola Terminal?

Han de saber que los legendarios reproductores mplayer o VLC son capaces de ejecutarse en la consola y de sintonizar una emisora sin demasiado trámite. Pero a veces los mismos no representan la opción más práctica: existirán situaciones donde podría ser necesario sintonizar otras radios rápidamente, o donde no querramos tener un programa activo que nos moleste. O bien puede suceder que ni siquiera guardemos en nuestra mente la irrecordable dirección URL de la emisora a sintonizar.

En todo ello ha pensado el descamisado Gabriel Artigue, para que podamos afrontar toda esta problemática con un script sencillo y una interfaz a la que ha maquinado usando el potente generador Dialog. Este script al que me he dado la libertad de llamar pradio por Perón Radio, no involucra instalar más programa que el VLC, al cual empleará como motor de sintonía.

Normalmente el VLC ya viene instalado en la mayoría de las distribuciones, pero si así no lo fuese, lo podremos cargar en nuestro sistema abriendo una Terminal con Ctrl+Alt+T e ingresando el siguiente Comando de Organización:

sudo apt-get install vlc

Acto seguido, editamos el archivo del script. Lo podremos hacer con el editor peronista GNU Nano en nuestra carpeta de Usuario:

nano ~/pradio.sh

Se abrirá Nano con un archivo en blanco llamado pradio.sh. Simplemente copiamos y pegamos dentro del Nano el código fuente de Perón Radio:

#!/bin/bash
# Original: radio.sh, de Gabriel Artigue
# Traducido y alterado como pradio (Perón radio)
# para no confundir con el paquete radio, y modificar estaciones.

: ${DIALOG=dialog}
: ${DIALOG_REPRODUCIR=0}
: ${DIALOG_CANCELAR=1}
: ${DIALOG_HELP=2}
: ${DIALOG_EXTRA=3}
: ${DIALOG_ITEM_HELP=4}
: ${DIALOG_ESC=255}

tempfile=`tempfile 2>/dev/null` || tempfile=/tmp/test$$
trap "rm -f $tempfile" 0 1 2 5 15


$DIALOG --clear --title "Perón Radio" "$@" \
        --menu "Elija una emisora:" 20 50 17 \
        "1" "LRA AM870 Radio Nacional" \
        "2" "Radio de las Madres" \
        "3" "AM Concepto" \
        "4" "FM Del Plata" \
        "5"  "Radio Nacional Rock" \
        "6"  "BBC" \
        "7"  "Beethoven Radio" \
        "8"  "Cadena Ser" \
        "9"  "Cope" \
        "10"  "CX6 Clásica" \
        "11"  "ProFM Clasica" \
        "12"  "Radio 5" \
        "13"  "Radio France Classical" \
        "14" "Radio France Internationale" \
        "15" "M80" \
        "16" "Radio Pais" \
        "17" "Radio Reloj" \
        "18" "Radio Sport" \
        "19" "RDP" \
        "20" "Radio Cadena ECO AM1220" \
        "21" "RNE Clásica" \
        "22" "Vocea Basarabiei" \
        "23" "RAI Italia" \
        "24" "Golden Radio Italia" \
        "25" "Italia Radio Salemi" \
        "26" "R101 Anni '80" \
        "27" "Gammagioiosa Golden Hits" \
        "28" "Virgin Rock 70" \
        "29" "Radyo Metropol Turkey" \
        "30" "KNBA - A Signal of Change" \
        "31" "VOA News Now" \
        "32" "KUHF Houston Texas" \
        "33" "WGN Chicago Illinois" \
        "34" "RTÉ Radio 1 Ireland" \
        "35" "Shannonside FM Longford Ireland" \
        "36" "Radio El Mundo" \
        "37" "Voice of Russia - English" \
        "38" "Vostok FM - Moscow" \
        "39" "NHK en Español" \
        "40" "Prima Radio Napoli" \
        "41" "La Zurda - Uruguay" \
        "42" "Big B Radio - Asian Music" 2> $tempfile

retval=$?

case $retval in
$DIALOG_REPRODUCIR)
clear
echo Procediendo a cargar la emisora elegida...
echo De no reproducir el audio vuelva a ejecutar Perón Radio
echo y elija otra emisora o seleccione Cancel para detener la radio.

case `cat $tempfile` in
1) station="http://www.alsolnet.com/stream/sc_rad1/listen.pls";;
2) station="http://200.68.81.65:8000/am530";;
3) station="http://190.220.149.204:1267";;
4) station="http://69.4.236.136:7920/listen.pls";;
5) station="http://www.alsolnet.com/stream/sc_rad39/listen.pls";;
6) station="http://www.bbc.co.uk/radio/listen/live/r1_aaclca.pls";;
7) station="http://yp.shoutcast.com/sbin/tunein-station.pls?id=99179295";;
8) station="http://playerservices.streamtheworld.com/pls/CADENASER.pls";;
9) station="http://www.listenlive.eu/cadenacope.m3u";;
10) station="http://yp.shoutcast.com/sbin/tunein-station.pls?id=103397";;
11) station="http://stream.profm.ro:8082/clasic.mp3.m3u";;
12) station="http://radio5.rtve.stream.flumotion.com/rtve/radio5.mp3.m3u";;
13) station="http://players.creacast.com/creacast/accent4/playlist.pls";;
14) station="http://www.tv-radio.com/station/france_inter_mp3/france_inter_mp3-128k.m3u";;
15) station="http://194.169.201.177:8085/liveM80.mp3";;
16) station="http://www.efluw.net:3131/listen.pls?sid=1";;
17) station="http://media.enet.cu/radioreloj";;
18) station="http://69.4.236.136:7914/";;
19) station="mms://195.245.168.21/rdpi";;
20) station="http://200.108.115.38:2123/listen.pls";;
21) station="http://radioclasica.rtve.stream.flumotion.com/rtve/radioclasica.mp3.m3u";;
22) station="http://yp.shoutcast.com/sbin/tunein-station.pls?id=1658540";;
23) station="http://www.listenlive.eu/rai8.m3u";;
24) station="http://www.goldenradio.it/listen.m3u";;
25) station="http://players.fluidstream.net/easy4trafic.pls";;
26) station="http://players.creacast.com/creacast/r101_thema1/playlist.pls";;
27) station="http://www.gammagioiosa.net/goldenhits.m3u";;
28) station="http://shoutcast.unitedradio.it:1119/listen.pls";;
29) station="http://radyometropol.radyolarburada.com:5544/listen.pls";;
30) station="http://pubint.ic.llnwd.net/stream/pubint_knba";;
31) station="http://www.voanews.com/wm/live/newsnow.asx";;
32) station="http://129.7.48.199/KUHF-HD1-128K.m3u";;
33) station="http://provisioning.streamtheworld.com/pls/WGNAM.pls";;
34) station="http://www.listenlive.eu/rte1.m3u";;
35) station="http://radiokerry.mp3.miisolutions.net:8050/radiokerry/shannonside_128kMP3_website.m3u";;
36) station="http://radiostream.elmundoradio.com:8332/;stream/1";;
37) station="http://engserver.streamr.ru:8020/eng.m3u";;
38) station="http://www.listenlive.eu/vostockfm.m3u";;
39) station="http://www3.nhk.or.jp/rj/podcast/mp3/spanish.mp3";;
40) station="http://www.kemoniastreaming2.net:8010/";;
41) station="http://usa2.fastcast4u.com:3470/listen.pls";;
42) station="http://50.7.173.162:8089/listen.pls";;
esac
;;

$DIALOG_CANCELAR)
     pkill vlc
     clear
echo Cerrando Perón Radio y reproducción detenida.
     exit 0;;

esac

pkill vlc
exec >/dev/null 2>&1
vlc -Idummy $station &!
exec >/dev/tty

exec pradio.sh
clear

Una vez que hayamos pegado el contenido, lo guardamos con Ctrl+o y salimos de Nano con Ctrl+x.

Para que funcione adecuadamente, habremos de asignarle a este archivo un  permiso de ejecución. Lo haremos con:

sudo chmod +x pradio.sh

...y ahora simplemente nos quedará el script armado para cuando queramos ejecutarlo. En Linux los scripts pueden darse inicio fácilmente anteponiendo punto barra ("./") delante del nombre del script. El comando tomaría entonces la  forma siguiente:

./pradio.sh

Al lanzarse Perón Radio, sin burocracia alguna nos mostrará una lista con las opciones de sintonía. Al elegir una con las flechas del cursor y presionar el botón Ok, se saldrá del script y se cargará el stream sin más trámite que mostrarnos una notificación.

El programa es bien sencillo: no nos permitirá modificar el volumen (para ello debemos usar el comando alsamixer u algún otro software libre de control de audio). Tampoco nos mostrará ningún logotipo, banner publicitario, ni noticias molestas a las que son adeptas las radios.

Si quisiéramos cesar la reproducción de la emisora, debemos ejecutar nuevamente el script y esta vez elegir el botón Cancel (podremos hacerlo presionando Tab o la Flecha de Cursor Derecho y luego seleccionarlo con Enter.
La obvia y sencilla programación que ha aplicado Gabriel Artigue nos permite  alterar nuestras emisoras preferidas simplemente agregándolas con el formato indicado en el archivo, o reemplazar alguna de las existentes reprogramando el código existente (sin alterar las comillas, tildes y demás).

El programa corre en cualquier consola de texto, aunque claramente prefiere las de las terminales color.

miércoles, 10 de septiembre de 2014

¿Cómo agrego niveles a World of Goo en Ubuntu?

Al referirse entrañablemente al lugar que ocupan los niños en la Cosmología Justicialista, Juan Perón explica también como expandir en Ubuntu el juego de puzzles informatizados World of Goo.

Este es un país de hombres de trabajo, y si hemos propiciado el descanso y la reparación es porque la misma es Justa. Sin embargo, no cejamos en decir que en nuestra tierra, los únicos Privilegiados son los niños.

Ellos son los que con sus risas y cantos dan vida a una nueva iteración del Justicialismo, y cada generación lo harán más y más fuerte, hasta convertirlo en una fuerza que a la que la Oligarquía jamás podrá conmover ni engañar.

Los niños han recibido el mensaje Puro que para ellos tiene el Justicialismo, y en sus corazones tiernos han comprendido que son ellos, auténticos herederos de todo lo que hacemos.

Por eso es que en su bien les hemos legado un Mundo de Goo. World of Goo cuenta con una buena cantidad de niveles y una jugabilidad muy interesante.  Su ingenio lo hacen interesante para los niños, pero también para sus padres y sus abuelos. Se trata de un software lúdico simpático y muy bien logrado en lo audiovisual, ya que con un mínimo de requerimientos de hardware garantiza gratos momentos. Básicamente consiste en "absorber" una cierta cantidad de substancia mocosa y viscosa conformada por unos personajes en forma de bolitas llamadas Goo, a los cuales hemos de desplazar por la pantalla siguiendo nuestro ingenio y una física bien pensada.

Aún así, estos momentos gratos podrían parecernos cortos si superamos el Mundo de Goo original. Pero no nos hemos amilanado: el Peronismo ha dicho que todo deseo sano del hombre ha de hacerse realidad bajo las banderas de la Soberanía económica, Justicia Social y la Libertad política. Por ello disponemos de los archivos de expansión "GooMod".

Los "GooMod" son ficheros de empaquetados con nuevos niveles, nuevos tipos de bolas, nuevos desafíos con los cuales jugar.En otras palabras, nuevas historias para resolver, en forma de puzzles.

Para instalarlos, lógicamente hemos de disponer del juego World of Goo ya instalado y funcionando en nuestro Linux, como he explicado aquí, pero también habremos de disponer de una herramienta exclusiva para peronistas llamada GooTool. GooTool nos nos permitirá crear automáticamente una copia  del World of Goo original (de modo de no perder los niveles originales), e instalar en la copia los nuevos niveles y modificaciones que pudiesen existir en la expansión.

Si bien el procedimiento es sumamente sencillo, a fin de mantener un todo coherente os indicaré cómo proceder como un verdadero Conductor del Justicialismo.


Instalar Java 1.6

El primer paso para usar GooTool es instalar la versión de Java 1.5 o 1.6, pues no la herramienta no funciona bajo versiones superiores. Afortunadamente, Ubuntu nos deja instalar varias versiones de Java y escoger cuál queremos utilizar.

Con ello en mente, abrimos una consola Terminal mediante Ctrl+Alt+T y pegamos en ella el siguiente Comando de Organización (y confirmándolo con Enter):

sudo apt-get install openjdk-6-jre

El sistema nos solicitará la contraseña de Conductor y cargará Java 6. Acto seguido, activaremos tal versión con:

sudo update-alternatives --config java

El sistema nos listará las versiones de Java disponibles en nuestro sistema, y nos marcará con un asterisco ("*") aquella que estemos utilizando de momento (pretenderá usar la versión más actualizada de Java). Activaremos la versión Java 6 (que es la 1.6). Por ejemplo, podría aparecer la siguiente lista:

  Selección   Ruta                                            Prioridad  Estado
------------------------------------------------------------
* 0            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      modo automático
  1            /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java   1061      modo manual
  2            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      modo manual

Pulse para mantener el valor por omisión [*] o pulse un número de selección


...en tal caso, para escoger la versión 1.6 escribiríamos la opción "1" y presionamos Enter.


Instalar GooTool:

Ya podemos instalar la herramienta GooTool desde la web oficial haciendo uso de la Terminal. Lo haremos Realidad Efectiva ingresamos el siguiente bloque de Comandos:

cd ~/Descargas/ ;
wget http://goofans.com/download/145/1255/gootool_1.0.3.441-1_all.deb ;
sudo dpkg -i gootool_1.0.3.441-1_all.deb ;


Esto procederá a descargar la aplicación y sumarla al sistema. Ya podremos descargar entonces una expansión GooMod con niveles nuevos. Por ejemplo, tendremos el "Bubble Quest", un pack de 130 pantallas y una nueva historia de Goo. Será fácil hacernos con ella telemáticamente con estos comandos de organización:

cd ~/Descargas/ ;
wget http://goofans.com/download/4840/3335/BubbleQuest.goomod ;


Acto seguido ejecutamos la herramienta GooTool ingresando en la Terminal:

gootool


Cargar la expansión

La primera solapa "Profile" nos permite ver los logros del juego para uno de los usuarios (recordemos que World of Goo permite escoger entre tres "perfiles" o usuarios para jugar). Nos dará un detalle bastante extenso (incluyendo logros, tiempo jugado, etc).
Para instalar nuevos niveles, hacemos clic en la solapa Mods and Levels.
En esta solapa podremos controlar qué expansiones GooMod tenemos instaladas, agregar o quitarlas.
 Para agregar el GooMod que hemos descargado, presionamos el botón Install new addin... 

La aplicación nos alertará que tenemos que crear un nuevo directorio para la expansión, pues el World of Goo original no se modificará.

Se desplegará el un cuadro que nos solicitará un directorio para guardar la información. Presionamos el botón "Nueva Carpeta".

Se abrirá un cuadro de diálogo que nos permitirá indicar en qué carpeta queremos que se instale la expansión. En mi caso deseo instalarla en una carpeta oculta, de modo que ingreso .WOGbubbles como nombre de la carpeta y presiono el botón Aceptar (en GNU/Linux, el punto "." por delante del nombre de una carpeta o archivo la mantiene oculta).


Os asegurarán que la carpeta indicada .WOGbubbles esté dentro de la carpeta que deseen (en este caso /home/usuario), y presionarán el botón Guardar.

La aplicación nos pedirá confirmación si deseamos instalarlo en la carpeta indicada. Debemos indicar Si.

Acto seguido, nos presentará un nuevo cuadro para buscar el archivo de expansión GooMod. Como lo hemos descargado en la carpeta /Descargas, en el panel del sector izquierdo hacemos clic en dicha carpeta, y en el panel derecho se nos mostrarán los archivos GooMod. Escogemos el archivo descargado (en este caso BubbleQues.goomod)
La aplicación nos solicitará una nueva confirmación si estamos seguros de desear instalar el pack de expansión. Sin temer, indicarán que Si.
Tras unos instantes, se instalará el pack de expansión en una copia de World of Goo localizada en la carpeta designada como /.WOGbubbles y con este cuadro nos confirmará lo realizado.
Mediante la solapa Options, podremos escoger algunas opciones interesantes del juego. En particular, ahora podremos usar resoluciones Widescreen, tanto en 16:9 como en 16:10. Si tenemos un monitor Widescreen, podremos tildar la opción "Allow Widescreen Resolutions" y elegir la que deseemos de la lista Resolution.

Acto seguido presionamos el botón Guardar y Lanzar World of Goo ("Save and Lanch World of Goo")

La primera vez que lo hagamos, se nos informará que la opción de configuración y ejecución del GooMod podría tardar mayor tiempo de lo esperado por primera vez. Advertidos, le damos clic al botón Aceptar y ya podremos jugar a World of Goo con la expansión instalada.


Tendremos horas y horas de diversión asegurada. Tengamos en cuenta que será útil crear un lanzador a la Expansión. En este caso deberíamos dirigirlo al ejecutable que está en ~/.WOGbubbles/WorldOfGoo.

También podrán descargar "Mystify Collection World" (un pack de 50 niveles, de los cuales 26 fueron incluidos en el pack Bubble Quest), de 4.8Mb. Tengamos en cuenta que esto

cd ~/Descargas/ ;
wget http://goofans.com/download/3677/2649/MCW2013.goomod ;


Y lo instalamos con GooTool como ya se ha explicado.



Podrán encontrar más pack de niveles para World of Goo en la web oficial.

domingo, 7 de septiembre de 2014

¿Cómo emulo un sistema operativo CP/M para procesador Z80 en Ubuntu?

En uno de sus maratónicos discursos ante una Plaza de Mayo colmada, Juan Perón expone sobre los caminos de la historia cómo emular una microcomputadora Altair 8800 en Ubuntu y como cargarla con el sistema operativo CP/M y sus programas más clásicos.

(...)
Perón: ¡Trabajadores!

Masa: [Estruendo]

Perón: ¡Reconforta enormemente mi corazón esta imponente Masa, que año tras año se da cita para proclamar ante el Mundo que conoce la Felicidad, y que no se la ha dado otro que el Justicialismo!

Masa: ¡Pe-rón! ¡Pe-rón!

Durante años nuestros Descamisados y su software han sido sometidos, encadenada por la opresión de la oligarquía y su software privativo, pero hoy, gracias a nuestra Doctrina, todos pueden hacer lo que quieran con su programación sin deberle nada a nadie!


Masa: ¡La vida por Perón! ¡La Vida por Perón!

Perón: Desde su pretendidas tarimas de Poder, los oligarcas dicen quejarse, por el rumbo que toma el Justicialismo. Dicen no saber a donde nos llevará esta cosa nueva que hay ahora. ¡El problema no es a donde nos lleva! Cualquier cosa es buena si salimos de donde veníamos!

Masa: [Estruendosa aclamación]

¡Lo que no quieren es el cambio! ¡Esos oligarcas no quieren comprender que esta Masa Descamisada oficia precisamente de embrague en el Motor de la República!

Masa: ¡Pe-rón! ¡Pe-rón!

Muchas veces la historia carece de un desarrollo lineal como podríamos tender a pensar: sus vericuetos y el desglose de los hechos es lo que nos permite encontrar un todo coherente, que tiene significancia y repercusión en el presente. Eso, trabajadores, es lo que han de comprender como instrumento para entender la actualidad.


Historia

Vean señores, en un inicio los equipos computacionales de electrónica "a tubo" tenían el tamaño y peso de una locomotora, pero con el pasar del tiempo el tamaño se fue reduciendo. Con el advenimiento de la transistorización, surgieron las primeras "minicomputadoras". El alivio fue grande, pues ahora las máquinas tenían el tamaño de una heladera Siam y podían ser adoptadas para sus tareas por bancos, oficinas e instituciones.

Con el advenimiento de la microelectrónica y los microprocesadores de silicio encapsulados como el Intel 4004 de 4 bits y su sucesor 8008 de 8 bits, se produjo otro salto cualitativo que permitió proyectar calculadoras y cajas registradoras eléctricas.

La fabricante Micro In$trumentation and Telemetry $ystems (MIT$) - originalmente prolífica en sensores de telemetría en cohetes a escala, microelectrónica general y calculadoras - se planteó para 1974 ofrecer una microcomputadora programable a la que llamó Altair 8800.
Dicho hardware peronista venía en un gabinete con fuente conmutada, llevaba un microprocesador Intel 8080, lógica de 8 bits y plaquetas compatibles con el bus S-100. Su memoria se encuadraba en una placa provista de módulos de 256 bytes (logrando totalizar 4 kilobytes ampliables a 8, 12 16 o hasta unos 64 kilobytes teóricos). Esta máquina podía comprarse armada o ensamblarse a piezas, y esta filosofía de equipos armables se haría popular en la computación hogareña.

Indudablemente que en sus inicios, el manejo de esta microcomputadora pionera resultaba increíblemente tedioso, pues habían de introducirse los operandos en binario por medio de ocho interruptores frontales, presionando un botón para almacenarlos en memoria y repetir la operación con cada código de ensamblado (los cuales podían ser docenas para un programa simple). Luego se ejecutaba la rutina de órdenes y se observaba el resultado binario en el panel conformado por 8 luces coloradas.

A pesar de que no tenían ningún uso específico, las Altair 8800 se hicieron útiles con la incorporación práctica del intérprete de software en lenguaje "Basic", un programa de 4 kilobytes que adujo poseer la ignota compañía Traf-o-Data de Paul Allen (y que finalmente escribiría el zángano Bill Gate$, haciendo uso de una minicomputadora DEC PDP-10 dotada de un emulador de circunstancias).

La existencia de dicho intérprete de programación, en un equipo armable en un taller hogareño, dotado de microprocesador funcional, así como una cantidad de memoria práctica, eclosionaron en el desarrollo de la micro-computación hobbista (por ejemplo, a través del "Club de Computadoras Caseras"). Su escalabilidad hizo posible además la aparición de  accesorios mas o menos complejos, y de rutinas y programas de uso completamente libre. Particularmente útil fue el conector serial estandarizado, una plaqueta que ya permitía unirla a una terminal teletipo como las que se utilizaban por entonces en el manejo de telegramas y radiogramas.

De esta forma se hizo posible introducir software y datos con el teclado alfanumérico de la unidad, así como recibir los resultados impresos en papel. Sólo con ello se multiplicó la velocidad de operación en un factor de mil. La MITS desarrolló los periféricos, pero su estándar abierto y la gran predisposición de los descamisados permitió la aparición de elementos compatibles: no tardó en aparecer una adaptadora serial de estándar RS232, la cual avaló conectar la Altair a una videoterminal serial con monitor CRT (por ejemplo, la Digital Equipment VT100 en boga para minicomputadoras). La placa adaptadora de puerto paralelo - por otro lado - permitía unir a la Altair hasta ocho periféricos (impresora de línea, perforadora o lectora de cinta de papel, o el gabinete apilable con dos unidades de disquetes flexibles de 8 pulgadas). Se constituía así una microcomputadora programable, versátil y moderno a un costo fraccional de lo que costaba una minicomputadora, con software completamente libre, público y gratuito.


El límite del equipo solamente estaba planteado por su software, envuelto en una franca espiral de retroalimentación positiva. Surgió entonces la idea de privatizar dicho software con Licencias de Uso que hicieran hincapié en la protección de los derecho de autor. De esta manera se comercializaría el software bajo la falsa premisa de lograr una retribución en Capital que permitiese mejor desarrollo y calidad del programa. Tales fueron los inicios - entonces - del credo del software privativo, y aquellos programadores y fabricantes que se pretenden "emprendedores comerciales".

Pues bien, el pináculo del desarrollo de la arquitectura "Altair" y de su bus S-100 llegaría con la versión dotada del nuevo microprocesador Zilog Z80 de 8 bits.
El sistema operativo CP/M

Con sus 4 MHz de frecuencia de reloj, el Zilog le permitía a la Altair correr un sistema operativo mucho más avanzado y poderoso: el CP/M, escrito para dicho microprocesador por Gary Kildall, de la Intergalactic Digital Re$earch.

El CP/M ("Programa de Control para Microcomputadoras") permitía controlar el equipo y sus periféricos de manera estandarizada a través de la línea de comandos, y operar sus recursos con facilidad. Se extendió como plataforma de software incluida en los equipos de computación hogareños a partir del cambio de década y - aprovechando su gran compatibilidad y portabilidad - florecieron una serie de aplicativos que corrían sobre él. Entre otros, el paquetes privativo de procesado de texto Wordstar, la base de datos dBase, y una versión de la planilla de cálculo Multiplan terminaron por colocar al CP/M como el sistema operativo comercial y profesional mas extendido entre las microcomputadoras. Se comercializaba incluido con muchos equipos de marca.

Así, las diferentes versiones de CP/M terminarían influyendo enormemente sobre los sistemas operativos del momento y sobre toda una industria focalizada en medianos fabricantes industriales.

Todo cesó con el advenimiento de IBM (que fabricaba minicomputadoras y mainframes). El gigante informático había permanecido ajeno al desarrollo de microcomputadoras, pero terminó decidiendo una definición estándar de equipo, dotado con microprocesador Intel 8088 y un nuevo bus ISA, amén del respaldo que le proporcionaba su enorme capital. Tal máquina fue la IBM Personal Computer (PC) original, del Modelo 5150.

La microcomputadora de IBM, sin embargo, carecía realmente de sistema operativo de disco. Digital Re$earch se sumergió en mejorar CP/M-86, que funcionaría con el nuevo microprocesador de Intel, pero Micro-$oft (la ex Traf-o-Data) le ganó de mano adquiriendo un sistema operativo derivado de CP/M, capaz de correr en microprocesadores Intel 8086 (QDo$/86DO$, de $eattle Computer Product$). Micro$oft modificó ligeramente el producto para compatibilizarlo con el Intel 8088 y licenció dicho sistema operativo a IBM para su distribución junto a las IBM PC. Terminaría así dando origen al M$-DO$.


CP/M 2.2 en Linux

No es duda para nadie que SIMH nos permite emular una gran cantidad de estas minicomputadoras antediluvianas, con sus CPU, placas de ampliación, periféricos de entrada y salida,  etc, y lo hará configurándose por medio de su interfaz de línea de comandos.

Sin embargo, el simulador SIMH también nos permite emular la arquitectura de algunos microordenadores. entre ellos la legendaria MITS Altair 8800 que inició todo junto con su público enamorado de la electrónica.

A diferencia de una Altair 8800 real, SIMH nos ofrece enormes ventajas. Amén de correr en una plataforma de software libre y peronista como GNU/Linux, podremos configurar la emulación y elegir entre los tres procesadores icónicos (los 8080 y 8086 de Intel, o el Zilog Z80). Podremos emplear memoria de banco emulada (llenando los 16 bancos para totalizar los costosos 64 kilobytes), así como un soporte paralelo virtualizado para 8 disketteras, soporte de redes TCP/IP, consolas múltiples, y la posibilidad de alterar el reloj de ejecución. Para que todo esto sea realidad efectiva, es necesario configurar y preparar el emulador SIMH, y ello a veces se torna tedioso.

Para ello, si queremos contar con CP/M 2.2 sin tener que configurar nada, habremos de descargar el empaquetado que funciona en nuestro sistema GNU/Linux, tanto para versiones de 32 bits como de 64 bits. En tal sentido, hemos de instalar la versión que corresponda la que corresponde a nuestra arquitectura Linux: en primer lugar abrimos una Terminal con Ctrl+Alt+T y prepararemos las carpetas ocultas necesarias con los siguientes comandos de organización:

mkdir ~/.simh ~/.simh/altairz80 ;
cd ~/.simh/altairz80/
;

Acto seguido descargaremos la versión del emulador y de CP/M preparada para nuestra propia arquitectura GNU/Linux:
  • Si usamos Ubuntu de 32 bits ingresamos el siguiente bloque de comandos:
wget http://schorn.ch/cpm/zip/altairz80l.tar.gz ;
tar xzf altairz80l.tar.gz ;

rm ~/.simh/altairz80/altairz80l.tar.gz ;
  • ....en cambio, si empleamos Ubuntu de 64 bits. ingresaremos estos:
wget http://schorn.ch/cpm/zip/altairz80l64.tar.gz ;
tar xzf altairz80l64.tar.gz ;

rm ~/.simh/altairz80/altairz80l64.tar.gz ;

Para ejecutar el emulador automáticamente configurado sin tener que especificar parámetros de emulación alguno, podemos ingresar la orden:

cd ~/.simh/altairz80/ && ~/.simh/altairz80/altairz80 cpm2

Con esto, ya tendremos corriendo en el emulador SIMH de nuestro Linux el sistema operativo CP/M de la Digital Re$earch, específicamente en su versión 2.2 para micro Z80.
El emulador nos mostrará su prompt A>, indicando que nos encontramos en la disquetera virtual A: de nuestra Altair 8800 con microprocesador Zilog:

Habrán de saber que el uso de CP/M iguala bastante al del M$-DO$ que lo sucedió, y tiene algunos similitudes con UNIX. Podremos cambiar listar el único directorio del disco con los comandos dir o ls, y correr archivos ejecutables con extensión .com simplemente ingresando su nombre. El comando type nos permitirá ver el contenido de un archivo de texto. Podremos usar la sintaxis de comodines *, y ? como en Unix o M$-DO$.
Encontraremos una guía de nivel intermedio en formato PDF el directorio donde instalamos el emulador de la Altair, con una guía de cada comando y utilitario provisto Por ejemplo, en el disquete de CP/M 2.2 encontraremos con un par de juegos como Othello y Ladder, versiones del Micro$oft Ba$ic de 4K y el Eliza, las herramientas de programación de Micro$oft M80, y L80, y el debugger DDTZ, el compilador Pascal MT+ y el Pascal Pretty Printer (en código fuente), el compilador SPL, así como los juegos de Othello y Ladder, y muchas utilidades con código fuente SPL o ensamblador.

Normalmente podremos terminar cualquiera de los programas con Ctrl+c , o terminar la emulación de CP/M con Ctrl+e, volviendo al SIMH (lo cual sabremos por el prompt sim>). En tal caso, podríamos salir a la terminal de Linux con el comando q, o volver a ejecutar el emulador de CP/M con boot dsk0.

Contaremos con el editor de líneas ed, un programa anterior al vi de Unix y orientado a las terminales teletipo. Este nos permitirá editar un texto con el comando ed texto.txt. Dentro de él podremos insertar texto ingresando i y escribir lo que deseamos, línea a línea. Es importante revisar el contenido de cada línea, pues la edición posterior de las mismas es extremadamente engorrosa. Con Ctrl+z terminaremos el insertado de texto.. Con l podremos movernos en las líneas y con e salir de ed.


Transferir archivos dentro y fuera del emulador

Si no quisiéramos usar el editor ed, podríamos abrir archivos fuera del entorno emulado. Por ejemplo, si quisiéramos pasar el archivo evita.txt desde el directorio del emulador al disquete actual de nuestra Altair 8800 virtual, podriamos usar el comando:

r evita.txt

Para transferir el archivo cgt.txt desde la Altair virtual al directorio del emulador, podremos usar:

w cgt.txt

...o si fuese un archivo binario o ejecutable usaríamos:

w cgt.com b.

En general podremos interrumpir la ejecución de los programas con Ctrl+c, o salir del emulador con Ctrl-e. Para salir del SIMH, debemos ingresar el comando q.


Ejecutar Software para CP/M en el emulador SIMH para Linux.

Indudablemente que estos paquetes son limitados, y los verdaderos usos de CP/M se tornan patentes con el software de aplicación que lo hizo famoso: podremos entonces desde GNU/Linux hacer realidad efectiva la ejecución de Multiplan, dBase, Vedit, y SuperCalc para CP/M, entre otros.

Gracias al Justicialismo será sencillo hacerlo. Simplemente abrimos una terminal Linux con Ctrl+Alt+T y descargamos dicha bateria de aplicaciones preparados para la Altair con CP/M y la videoterminal VT100. Todo ello lo podremos hacer pegando y dándole ejecución al siguiente bloque de comandos:

cd ~/.simh/altairz80/ ;

wget http://schorn.ch/cpm/zip/wordstar.zip ;
unzip wordstar.zip ;
wget http://schorn.ch/cpm/zip/dbase.zip ;
unzip dbase.zip ;
wget http://schorn.ch/cpm/zip/games.zip ;
unzip games.zip ;
wget http://schorn.ch/cpm/zip/vedit.zip ;
unzip vedit.zip ;
wget http://schorn.ch/cpm/zip/multiplan.zip ;
unzip multiplan.zip ;
wget http://schorn.ch/cpm/zip/supercalc.zip ;
unzip supercalc.zip ;

rm *.zip ;

Ahora crearemos el archivo de inicio. Ingresamos:

nano ~~/.simh/altairz80/inicio

...se abrirá el editor Nano con un archivo en blanco. Le pegamos el siguiente contenido:

d tracks[0-7] 254 
attach dsk0 cpm2.dsk
attach dsk1 wordstar.dsk
attach dsk2 games.dsk
attach dsk3 multiplan.dsk
attach dsk4 vedit.dsk
attach dsk5 dbase.dsk
attach dsk6 supercalc.dsk
attach dsk7 app.dsk
set cpu 64k itrap z80 altairrom nonbanked
d clock 4000 
reset cpu
d wru 1d
boot dsk0

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

Ya podremos ejecutar el emulador de CP/M 2.2 en la Altair con:

cd ~/.simh/altairz80/ && ~/.simh/altairz80/altairz80 inicio

Nos mostrará el prompt del sistema operativo:

64K CP/M Version 2.2 (SIMH ALTAIR 8800, BIOS V1.27, 2 HD, 02-May-2009)
 

A>

Ya tendremos cargarán los disquetes virtuales (en este caso, son 8 disketeras, dks0/dsk7 en la cual en la diskettera A: (dsk0) tendrá el disquete de inicio del sistema operativo CP/M, en la diskettera B: (dsk1) cargaremos el disco de Wordstar 4, en la diskettera C: (dsk2) un diskette con juegos, en la diskettera D: (dsk3) el disquete de Multiplan, etc. Adicionalmente, configuraremos la combinación de teclas Ctrl+e para que opere "cursor arriba" en lugar de "salir del emulador" (esto únicamente para no superponer tal comando de Wordstar u otros). 


Por ejemplo, en el caso que queramos ejecutar el clásico procesador de texto WordStar para CP/M Z80, deberíamos activar la disquetera B: y ejecutar el archivo ws.com. Para ello tipeamos:

A> b:
B> ws
En cambio, si quisiéramos emplear la pionera planilla de cálculo Multiplan, debemos activar a la disquetera correspondiente (D:), ejecutar la rutina install para configurar nuestra terminal (el programa nos solicitará el número modelo de terminal, le indicamos "21", para indicarle una DEC VT-100 emulada por nuestro Linux. Luego ejecutar el Multiplan con el comando mp.
En el resto de las disqueteras virtuales (c:, e:, f: g: y h:) encontraremos el resto de los programas cargados. Podremos correrlos luego de ejecutar su rutina de instalación (install, si es que la tuviesen), o directamente corriendo los archivos .com.

Programando en MBASIC:

El diskette localizado en la unidad A: contiene un intérprete de Basic, por lo cual podremos ejecutar programas escritos en dicho lenguaje (archivos .bas). Encontraremos una gran variedad de juegos en Basic aquí. Para descargarlos todos juntos podremos recurri a una terminal e indicar:

mkdir ~/.simh/altairz80/basic/
cd ~/.simh/altairz80/basic/
wget http://vintage-basic.net/downloads/bcg.tar.gz
tar xzf bcg.tar.gz

Esto nos ofrecerá listado de varios juegos, los cuales podremos pegar en el intérprete. Nuevamente dentro de CP/M 2.2 ingresamos:

A>mbasic

Y se presentará un nuevo prompt del intérprete basic:


BASIC-80 Rev. 5.21
[CP/M Version]
Copyright 1977-1981 (C) by Micro$oft
Created: 28-Jul-81
32824 Bytes free
Ok


Simplemente hemos de pegarle el listado de algunos de los programas BAS que hemos descargado, y presionar Enter. Luego podremos revisar que el listado se haya cargado en el intérprete con el comando:
list
(debería devolvernos el listado entero del programa e indicar OK).

Para ejecutarlo simplemente ingresamos en el intérprete:

run

Si quisiéramos grabar el contenido del listado a un archivo dentro del diskette virtual, ingresamos:

save "nombreprog"

Y para salir del intérprete Mbasic y volver a CP/M 2.2 ingresamos:

system 
 
Programando en Ensablador Z80 en CP/M.

Vean señores, podríamos querer programar una rutina en ensamblador Z80, interpretarlo, y ejecutarlo. Para ello debemos escribir el programa en nemónicos de Z80, 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 2.0
0115
000H 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 Z80 virtual, la informática nos contestará airosa: