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.
HistoriaVean 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 LinuxNo 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 emuladorSi 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.txtPara 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 ;y ejecutamos el emulador de Altair con:
cd ~/.simh/altairz80/ && ~/.simh/altairz80/altairz80Nos mostrará el prompt del sistema operativo:
Altair 8800 (Z80) simulator V3.9-0 build 1625 (scp created DD/MM/HH) at HH:MM:SS with gcc 4.2.4)
sim>Ahora en dicho prompt habremos de escribir los comandos necesarios para emular un equipo con 64 Kilobytes de RAM, una velocidad de reloj de 4Mhz. Asimismo, se 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).
Todo esto se hace ingresando en el emulador los siguientes comandos indicados en negrita:sim> d tracks[0-7] 254 sim> attach dsk0 cpm2.dsksim> attach dsk1 wordstar.dsksim>attach dsk2 games.dsksim>attach dsk3 multiplan.dsksim>attach dsk4 vedit.dsksim>attach dsk5 dbase.dsksim>attach dsk6 supercalc.dsksim> attach dsk7 app.dsk sim> set cpu 64k itrap z80 altairrom nonbankedsim> d clock 4000 sim> reset cpusim> d wru 1dsim> boot dsk0Tras darle la orden de inicio al dsk0, se arrancará el sistema operativo CP/M, con el siguiente indicativo:
64K CP/M Version 2.2 (SIMH ALTAIR 8800, BIOS V1.27, 2 HD, 02-May-2009)
A>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> wsEn 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 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ánlo 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) : *eTras haber editado nuestro código fuente, lo ensamblamos con:
A> asm pocho
CP/M ASSEMBLER - VER 2.00115000H USE FACTOREND OF ASSEMBLYEsto 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: