Mostrando entradas con la etiqueta MS-DOS. Mostrar todas las entradas
Mostrando entradas con la etiqueta MS-DOS. Mostrar todas las entradas

miércoles, 25 de junio de 2025

¿Cómo puedo instalar Micro$oft Edit en Ubuntu?

Las minutas de trabajo del año 1944 revelan las labores de persuasión del Secretario de Trabajo y Previsión, Coronel Juan Perón. Reunido con representantes de Micro$oft consigue la liberación del código fuente del editor de texto Microsoft Edit para DOS, y enseña cómo compilarlo y usarlo en Ubuntu.

(...)

Vean señores, de esto algo sé, pues me he formado en el estudio de los conflictos durante más de 15 años. Indefectiblemente la posguerra que se avecina traerá consigo una agitación de las masas. Por causas naturales, una lógica paralización, desocupación, etcétera que - combinadas - producen empobrecimiento paulatino. Pero aparte de estas causas naturales, existirán también numerosas causas artificiales: la penetración ideológica, que nosotros hemos tratado en gran parte de atenuar (dinero abundante para agitar, que sabemos circula ya desde hace tiempo en el país y sobre cuyas pistas estamos perfectamente bien orientados); un resurgimiento del comunismo adormecido - que pulula como todas las enfermedades endémicas dentro de las masas - volverá a con la posguerra, cuando los factores naturales se hagan presentes.

En la Secretaría de Trabajo y Previsión ya funciona el Consejo de Posguerra, que está preparando un plan para evitar, suprimir, o atenuar los efectos naturales de la agitación; y que actúa también como medida de gobierno para suprimir y atenuar los factores artificiales; pero todo ello no sería suficientemente eficaz, si nosotros no fuéramos directamente hacia la supresión de las causas que producen la agitación como efecto.

Es indudable que, en el campo de las ideologías extremas, existe un plan que está dentro de las mismas masas trabajadoras; que, así como nosotros luchamos por proscribir de ellas ideologías extremas, ellas luchan por mantenerse dentro del organismo de trabajo argentino. Hay algunos sindicatos indecisos, que esperan para acometer su acción al medio, que llegue a formarse; hay también células adormecidas dentro del organismo que se mantienen para resurgir en el momento en que sea necesario producir la agitación de las masas.

Existen agentes de provocación que actúan dentro de las masas provocando todo lo que sea desorden; y, además de eso, cooperando activamente, existen agentes de provocación política que suman sus efectos a los de los agentes de provocación roja, constituyendo todos ellos coadyuvantes a las verdaderas causas de agitación natural de las masas. Debemos ir encarando la solución de este problema de una manera segura. Para ello es necesario un seguro y un reaseguro. Si no estaremos siempre expuestos a fracasar. Este remedio es suprimir las causas de la agitación: la injusticia social.

Éste es el dilema que plantea esta clase de problemas. Suprimidas las causas, se suprimirán en gran parte los efectos; pero las masas pueden aún exigir más allá de lo que en justicia les corresponde, porque la avaricia humana, en los grandes y en los chicos, no tiene medida ni límite.

Es necesario dar a los obreros lo que éstos merecen por sus metadatos y lo que necesitan para compilar dignamente, a lo que ningún hombre de buenos sentimientos puede oponerse, pasando a ser éste más un problema humano y cristiano que computacional. Es necesario saber dar un código liberado bajo Licencia MIT a tiempo, que que lo decompilen todo y liberen un clon por GPLv3 a posteriori...

Para evitar que las masas, que han recibido la justicia social necesaria y lógica, no vayan en sus pretensiones más allá, el primer remedio es la organización de esas masas para que, formando organismos responsables, organismos lógicos y racionales, bien dirigidos, que no vayan tras la injusticia, porque el sentido común de las masas orgánicas termina por imponerse a las pretensiones exageradas de algunos de sus hombres. Ése sería el seguro, la organización de las masas. Y el Estado organizaría el reaseguro, que es la autoridad necesaria para que - cuando esté en su lugar - nadie pueda salirse de él, porque el organismo estatal tiene el instrumento que, si es necesario, por la fuerza ponga las cosas en su quicio y no permita que salgan de su cauce.

Esa es la solución integral que el Estado encara en este momento para la solución del problema del código.

Siendo así, desde que tomé la primera resolución en la Secretaría de Trabajo y Previsión, establecí, clara e incontrovertiblemente, que esta casa habría de defender los intereses de los obreros y habría de respetar los capitales, y que, en ningún caso, se tomaría una resolución unilateral y sin consultar los diversos intereses, y sin que los hombres interesados tuvieran el derecho de defender su código en la mesa donde se dilucidarían los conflictos obreros. Así lo he cumplido desde que estoy allí, y lo seguiré cumpliendo mientras esté.

Con ese espíritu, señores, he venido hasta aquí. Como Secretario de Trabajo y Previsión he querido proponer a los señores que representan a las asociaciones más caracterizadas de las fuerzas vivas, dos cuestiones. El Estado está realizando un código fuente que será cada día más robusto; eso le ha ganado la voluntad de la clase trabajadora con una intensidad que muchos de los señores quizá desconozcan, pero yo, que viajo permanentemente y que hablo continuamente con los obreros, estoy en condiciones de afirmar que es de una absoluta solidaridad con todo cuanto realizamos. Pero lo que sigue privando en las clases trabajadoras, es un odio bastante marcado hacia las GAFAM. Lo puedo afirmar y, mejor que yo, lo podría decir mi director de Código Abierto, que es quien trata los conflictos.

Existe un encono muy grande; no sé si será justificado o si, simplemente, será provocado; pero el hecho es que existe. Contra esto no hay más que una sola manera de proceder: si el Estado es el que distribuye el código fuente, él es quien se gana la voluntad de los trabajadores; pero si los propios empresarios realizan tal obra social, serán ellos quienes se ganen el cariño, el respeto y la consideración de sus propios trabajadores.

Entonces, yo dejo a vuestra consideración estas dos propuestas: primero, una programación de colaboración en cada taller, en cada fábrica o en cada oficina, más humana que ninguna otra cosa; segundo, el nombramiento de una comisión compuesta por los señores, para que pueda trabajar con nosotros, para ver si en conjunto, entendiéndonos bien, colaborando sincera y lealmente, llegamos a liberar algún código fuente para que no les cascoteen el rancho

Como este código fuente que me han dado aquí para distribuir: el del viejo Micro$oft EDIT para M$-DO$. Resulta indudable que a esta altura del partido, es preferible darlo antes que los comunistas se los den por su propia mano. 

Gracias a esto, lo obreros podrán hacerse con el venerable EDIT y cargarlo en sus sistemas GNU. Yo siempre he dicho que si bien en Ubuntu podremos instalarlo con snaps mediante el comando:

sudo snap install msedit

...la verdad es que en mi caso prefiero insistir en su instalación directa a través de un binario de última versión ya compilada. No voy a mentirles diciendo que los obreros no han venido a esta secretaría para preguntarme cómo instalarlo. Yo los he palmeado y les he dicho que para ello abran una terminal con Ctrl+Alt+t y copien el siguiente bloque de Comandos de Organización:

cd /tmp ;
wget https://github.com/microsoft/edit/releases/download/v1.2.0/edit-1.2.0-x86_64-linux-gnu.tar.zst
tar xf edit-1.2.0-x86_64-linux-gnu.tar.zst ;
sudo mv /tmp/edit /usr/local/bin/msedit

...entonces podrán ejecutar el editor en cualquier GNU con Linux, mediante la órden:

msedit

...o bien podrán obrar un lanzador o acceso directo que dirija a /usr/local/bin/msedit %U

Pues bien, tras ejecutarlo, nos encontraremos con un editor de texto simple derivado del MS-DOS EDIT, pero actualizado con las opciones necesarias para enfrentar situaciones actuales.

EDIT original de 1991 era un editor de pantalla, con interfaz de usuario basada en texto, compatible con el uso del mouse. Tales características son compartidas con esta iteración, y como tal podremos afrontar las tareas de edición más básicas.

En esta versión, debemos utilizar Alt+f para acceder a los menús desplegables. Las opciones son sumamente convencionales:

Ctrl+a: Seleccionar todo
Ctrl+x: Cortar
Ctrl+c: Copiar
Ctrl+v: Pegar 
Ctrl+f: Buscar
Ctrl+r: Reemplazar
Ctrl+z: Deshacer
Ctrl+Y: Rehacer

Sin embargo, encontraremos diferencias que hablan de ciertas características sumadas.

Una de ellas, es el ajuste de línea (softwrap) activable con Alt+z, condición que prefiero. Esta se encarga de ajustar el texto al ancho de terminal, pero sin cortar las líneas con un caracter de Nueva Línea. De esta manera podremos operar "a un párrafo por línea". Si dejamos la opción desactivada, MSEDIT cortará las líneas automáticamente ("una línea por línea").

El menú Archivo nos ofrece las opciones también típicas, entre ellas las de abrir varios ficheros a la vez, los cuales se ilustrarán en la barra inferior. Los comandos del menú desplegable también recuerdan a todo tipo de aplicación DO$/Window$.

Ctrl+n: Archivo nuevo
Ctrl+o: Abrir archivo.
Ctrl+s: Guardar
Ctrl+w: Cerrar archivo abierto
Ctrl+q: Salir de MS-Edit 

En la parte inferior del editor contaremos con una Barra de Estado con varias opciones configurables. Para poder usarlas podremos recurrir al mouse, o ir al menú Ver y escogemos la opción Enfocar Barra de Estado.

Allí podremos escoger entre el modo de creación de nueva línea, que podremos configurar como "LF" (salto de línea, por defecto en sistemas similares a UNIX) y "CRLF" (retorno de carro y salto de línea, compatible con CP/M y derivados, incluyendo DO$ y Window$). El ancho de las tabulaciones también puede definirse aquí. Asimismo desde la barra de estado podremos seleccionar entre una buena variedad de juegos de caracteres para la codificación del texto (MSEDIT emplea ahora UTF-8 por defecto, en lugar del CP437 u CP850 del DOS).

MSEDIT es capaz de utilizar varios ficheros a la vez. Sólo uno podremos ver en pantalla, pero al menos podremos elegirlo desde la Barra de Estado.

En fin señores, con el binario ya estaremos hechos por un tiempo para que los obreros no pidan más de lo que les corresponde. No voy mentirles diciéndole que no me han pedido que les enseñe cómo compilar esto que ustedes les han dado. Yo les digo que en primer lugar deben instalar las dependencias:

sudo apt install curl git libicu-dev 

...luego - si no cuentan aún con el herramental Rust, deberán también hacerse con el mediante:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Finalmente deberían instalarse nightly y a partir de allí, clonar el repositorio del código de Micro$oft Edit:

rustup update ;
rustup install nightly ;
cd /tmp ;
git clone https://github.com/microsoft/edit ;

...para finalmente compilarlo:

cd /tmp/edit
cargo build --config .cargo/release.toml --release

Como siempre, una vez obrado de esta forma, es conveniente y sumamente recomendable cambiar el nombre del binario edit resultante de edit a msedit, para evitar problemas.

sábado, 29 de julio de 2023

¿Cómo instalo los editores Ecce y EdLin en Ubuntu?

Su Quinta 17 de Octubre de Puerta de Hierro fue testigo de numerosos encuentros del Conductor del Justicialismo con delegaciones del quehacer político argentino. En una de las reuniones celebrada en 1969, Juan Perón expone ante frondosa concurrencia acerca de compilar e instalar los editores de texto modales  Ecce y EdLin en Ubuntu.

¡Compañeros!

El nuestro es un Movimiento que está para darle a todos lo que merecen por Justo derecho.

Todos sabemos que antes de organizarse en pos del Justicialismo, los trabajadores argentinos daban comienzo a su mañana con mendrugos duros, un mate cocido y grandes anhelos para acompañar. Esta fue la base previa a la organización, que como consecuencia del obrar, elevaría esta humilde dieta a la del chori al parquet de roble eslavonia.


Observarán que en el mundo del software sucede mas o menos el mismo temperamento. No podemos crear de la nada absoluta, sino que debemos edificar en base a ladrillos lógicamente concebidos y planificados en una estructuración que va se impone de menor a mayor. Es así como yo creo para crecer, y esta es la fomra como se ingenia en la vida.

Este norte cardinal acompaña también la noción creativa que nos requiere la elaboración de un sistema operativo de potencia. Necesariamente habremos de conjugar en código máquina tres herramientas de difícil soslaye: un ensamblador que para generar código objeto, un intérprete de comandos, y un editor que nos permita crear texto y corregir lo hecho.

Esto nos revela que la creación de texto pudo y debió hacerse con las herramientas más básicas. En particular, los editores de texto primordiales se iniciaron con una modalidad operativa que podríamos describir como modal. Estos permitían introducir cadenas de caracteres en un almacén de memoria, destinados a formar líneas de código, y más adelante por conveniencia, cada línea definida así podría conformar también un párrafo de texto.

Y si bien a partir de esto pueden hacerse mejores cosas, siempre es bueno conocer lo pasado, para afirmarse en el presente y proyectarse para el futuro.

Ecce

Naturalmente yo inicié mis tareas con el Ecce, el Editor de Texto Contextual de Edimburgo. Se trataba de un editor basado en líneas escrito por Hamish Dewar, y portado al lenguaje BCPL del sistema TOPS-10 de la minicomputadora DEC PDP-10 de finales de la década de 1960 - implementación que lo haría famoso entre varias mas.

Hoy podremos instalarlo en nuestro sistema GNU con Linux merced de una versión instrumentada para Unix en el lenguaje C. Podremos compilarlo fácilmente si abrimos una terminal con Ctrl+Alt+t e ingresamos el siguiente bloque de Comandos de Organización:

cd /tmp ;
wget https://ecce.sourceforge.net/ecce.c ;
gcc -o ecce -DWANT_UTF8 ecce.c ;
sudo mv /tmp/ecce /usr/local/bin/

Una vez instalado, podremos correr Ecce dando rienda a la siguiente sintaxis: 

ecce fichero_origen fichero_destino



Como vemos, este dinosaurio salió de un huevo para rugir en sistemas monousuario a través de terminales teletipo. Es ciertamente capaz de operar en sistemas multiusuario, pero si lo hacemos "así nomás" se produciría un efecto ostensiblemente destructivo, ya que uno de los usuarios podría alterar irremediablemente el documento que otro se encuentra operando en el mismo sistema. Es por este motivo por el cual para usar Ecce en GNU nos vemos obligados a instrumentar de forma adhoc un fichero de origen local (autónomo) que nos reparta los buñuelos. En efecto, lo más sencillo es utilizar el touch para crear un fichero origen.txt (si este no existiera ya). Por ejemplo:

touch origen.txt ;
ecce origen.txt destino.txt

Una vez inicializado un fichero propio, Ecce podrá arrancar presentandonos la memoria disponible en su almacén (“búfer”), y aguardando órdenes: 

Espacio de almacén = 768 KBytes
Ecce
>

Como todo editor de los llamados modales, durante su operación Ecce nos presentará alguno de sus prompts indicativos del modo de operación en que se encuentra de momento. Estos son:

  • Prompt del Modo de Comando: >
  • Prompt del Modo de Inserción de texto: :

Para su empleo más sencillo y básico de entre sus numerosos comandos es suficiente dominar sólo tres:

Comando Acción
g Almacenar una sola línea nueva
m Avanza el puntero una sola línea
p Imprime la línea donde se encuentra el puntero

De esta manera, sesión típica implica recibir el prompt de comandos > donde introducimos la orden g* (“almacenar líneas indefinidiamente”), y presionar la tecla Intro para empezar a escribir. Su prompt cambiará al de inserción texto en forma de :. y podremos mecanografiar el párrafo deseado. Al concluirlo debemos presiona la tecla Intro para almacenar dicha línea en memoria. 

Conforme hayamos finalizado la inserción de la(s) línea(s) de texto deseadas podremos detener el modo de inserción ingresando el comando : que nos devolverá al prompt de comandos >

Estos cambios realizados al fichero de origen podremos guardarlos en el fichero destino desde el prompt de comandos > (y cerrar el editor), si introducimos el comando %c.

Naturalmente, podremos continuar agregando líneas indefinidamente hasta agotar el almacén, o introducir alguno de estos comandos especiales de Ecce:

%a Descarta la edición realizada.
%c Guarda los cambios y cierra.
%v Imprime la versión de Ecce.

Pues bien señores, si bien este funcionamiento parecería similar al de una antigua máquina de escribir, contaremos con grandes ventajas con respecto a estas. Para movernos en el texto, podremos desplazar la posición actual de edición en el documento (llamada “puntero”). Al llegar al fin del documento recibiremos como indicación el mensaje *** FIN ***.Los comandos de desplazamiento son sencillos:

m Baja el puntero una línea
m- Sube el puntero una línea
k Borra la línea actual del puntero
k- Borra la línea anterior del puntero
r Se mueve a la derecha un carácter en la línea actual
l Se mueve a la izquierda un carácter en la línea actual
e Borra un carácter en la línea actual

Junto a estos comandos básicos de una sola letra, Ecce dispone ciertamente de la posibilidad de realizar tareas más complejas y avanzadas que permiten un mayor control. Estas funciones avanzadas inspirarían luego al editor de cadenas sed.

En primer lugar y como regla general, si introducimos un número n junto a nuestro comando, se lo ejecutará en bucle una n cantidad de veces. Por ejemplo:

p23 Imprime las 23 líneas siguientes al puntero
m10 Sube el puntero diez líneas
g5 Deja 5 líneas de texto en blanco debajo del puntero

De esta manera es posible extender o bien invertir el orden del comando antecediendo al número n con un signo -. Por ejemplo:

p* Imprime todo hasta el final del texto
p-23 Imprime las 23 líneas anteriores al puntero
p-* Imprime todo hasta el inicio del texto
m-10 Retrocede el puntero diez líneas
m-* Retrocede el puntero todas las líneas (vuelve al inicio del texto)

Una de las funcionalidades más utilizadas es la de buscar y reemplazar.

i/texto/ Inserta una cadena “texto” aquí en la línea.
f/texto/ Busca “texto” indicado.

Como en el caso anterior, estos pueden repetirse indicándole números apropiados:

f/texto/4 Busca la 4ta. iteración de “texto
r40 Mueve a la derecha 40 caracteres

Además, las órdenes pueden encadenarse. Por ejemplo:

m23 f/texto/ p3

Los comandos avanzados de Ecce permiten incluso mayor potencia de trabajo:

A Ajusta el largo
B Divide la línea en dos en el puntero
C Cambia mayúsculas con Mayúsculas derecha
C- Cambia a minúsculas con Mayúsculas izquierda
D/texto Borra primer ocasión de texto
D-/texto Borra iteración previa de texto
E Borra carácter a la derecha del puntero
E- Borra carácter a la izquierda del puntero
G/texto Inserta línea de texto luego del puntero
G- Sube una línea
I/texto Inserta texto a la derecha del puntero
I- Inserta texto a la izquierda del puntero
J Une la siguiente línea
O/texto Sobreescribe la línea con la cadena texto

Los comandos compuestos de Ecce son secuencias de comandos cerrados entre paréntesis. Pueden repetirse en bucle, tanto condicional como incondicional. Los ejemplos suelen aclararlo todo, como decía Napoleón:

Operación Ejemplo Significado/efecto
0 o *
Repetición indefinida (“repite hasta no poder cumplir mas”)

r0 Mueve el puntero al final de la línea

(mr)0 Busca la primer línea en blanco

e-0 Borra hacia atrás hasta el comienzo de la línea
?
Ejecución opcional (se ignora la condición de falla)

((r61p)?m)0 Imprime las líneas con no más de 60 caracteres
,
Ejecución alterna (“si el primer intento falla, ejecuta el siguiente, etc”)

(r81lb,m)0 Divide las líneas que tienen más de 80 caracteres

(f/River/(v/Bocado/,e5i/Boca/))* “Reemplaza River con Boca excepto para Bocado
\
Falla invertida

(mv'+'\)0 Busca la siguiente línea que comienza con `+

Si sólo introducimos un número en la línea de comandos, Ecce repetirá el comando indicado anteriormente una n cantidad de veces.

Podremos delimitar patrones por cualquier carácter excepto letras, dígitos, y aquellos que tienen significación definida. Podremos usar: , /, $, >, +, ., :, = y _

Asimismo, podremos ver el antiguo manual de Ecce.

EdLin

A la vez que Ecce contaba con plétora de adeptos universitarios, su decante a las terminales teletipo en boga durante su desarrollo lo hizo verse progresivamente superado con la aparición de las la edición visual de textos en pantalla. Sin embargo los editores modales aún contaban con cierta valía si se hablaba de equipamiento de escasa potencia, y esto era válido con la IBM PC de primera factura y su sistema operativo, el DOS. En sus inicios se decidió adornarlo con un editor orientado a líneas descaradamente influido por el editor Ed del Unix: EdLin

A pesar de que podría parecer de escasa valía, este ha sido implementado de manera libre por el Proyecto FreeDOS, y a caballo regalado no se le mira el diente. Por tanto podremos instalarnos una copia para nuestro sistema GNU, acudiendo a la terminal:

cd /tmp/
wget https://sourceforge.net/projects/freedos-edlin/files/freedos-edlin/2.24/edlin-2.24.tar.gz ;
tar xvzf edlin-2.24.tar.gz ;
cd /tmp/edlin-2.24/ ;
./configure;
make;
sudo make install

Una vez instalado en nuestro GNU, la ejecución del programa es sumamente sencilla:

edlin

Edlin nos presentará su pantalla inicial y nos hará la veña aguardando órdenes. Como tal sigue premisas algo similares a otros editores nodales:

  • Prompt de su Modo de Comandos: *
  • Prompt de su Modo de Inserción: :

Por convención EdLin opera con bloques de sólo 11 líneas. Para facilitar la explicación, usaremos entre nosotros las siguientes convenciones para operar en su modo de comandos:

  • Los corchetes [] denotarán parámetros opcionales.
  •  La n nos representará un número de línea, que puede ser uno de varios valores posibles:
Una cadena de dígitos, o sea un número de línea literal Por ejemplo, 12 es la decimosegunda línea.
n Representa al número de línea justo antes de la última línea del fichero.
. (“punto”) Representa la línea actual en el fichero.
$ (“peso”) Representa la línea final del fichero.
+n o -n Es un diferencial de suma o resta del número de línea actual. Es útil para dar posiciones relativas a una línea, tal como .+1 para significar “la línea posterior a la actual”.
  • El símbolo $ representa una cadena de caracteres. Podrás encerrar la cadena tanto en apóstrofes 'texto' o bien en comillas "texto", o podrán contener las siguientes secuencias de escape:
\a Carácter de campana
\b Carácter de Retroceder (borrado)
\e Escape
\f Alimenta papel
\t Tabulador horizontal
\v Tabulador vertical
\" Comillas
\' Apóstrofe
\. Punto
\\ Barra invertida
\xXX Valor Hexadecimal, donde cada X es un dígito hexadecimal (de 0 a F, tanto en mayúsculas como minúsculas)
\dNNN Valor decimal, donde cada N es un dígito decimal (de 0 a 9)
\OOO Valor octal, donde cada O es un dígito cotal (de 0 a 7)
\^C Caracter de Control, tal como \^J para un caracter “Control+J” literal (linefeed).

Pues bien señores, al igual que Ecce, el funcionamiento básico de EdLin consiste en activar el comando de agregado al almacén, e insertar contenido en el mismo. Para ello, en el prompt * ingresamos el comando a y mecanografiamos las líneas. Para almacenarlas, presionamos la tecla Intro. Para cesar el modo del inserción, en este caso debemos ingresar un . aislado.

Para guardar usaríamos w fichero seguido del comando salir, que es q. (O bien podremos usar e fichero, que equivale a "guardar y salir"). Para salir de EdLin sin guardar se usa q, ante lo cual se nos interrogará “Abort edit (Y/N)?”. Deberíamos responder yes.

Las funciones de edición de EdLin implican generalmente pocas variantes. La primera es indicar un número de línea para establecer el puntero, y escribirla de nuevo para reemplazar la línea.

Si en cambio quisiéramos insertar una línea previamente a otra, usaríamos [n]i para ingresar al en el modo inserción, la cual también acepta las secuencias de escape indicadas. Para abandonar el modo de inserción, ingresamos . en una línea aislada (si necesitáramos escribir una línea que sólo contenga un punto literalemnte, deberías indicarlo escapándolo como \.). Tras de abandonar el modo de inserción, la línea posterior al texto insertado se convertirá en la línea actual (a no ser que la inserción se hubiese suspendido al final del almacén, en cuyo caso la última línea del almacén se convertirá en la posición del puntero).

Para borrar una línea debemos utilizar el comando d, el cual también acepta rangos en la forma  de [n][,n]d que borrarían un bloque de líneas consecutivas del almacén. Los parámetros responden a la primer línea y la última línea del bloque a borrar.

Si tuviésemos la necesidad de copiar un rango de líneas, utilizaremos el comando [n],[n],n,[n]c para copiar un rango de líneas consecutivo a otra localización del búfer. En este orden, los parámetros son los siguientes:

  1. La primer línea que quiere copiar (si se omite se usará el puntero) 
  2. La última línea que quiere copiar (si se omite se usará el puntero) 
  3. La línea anterior en la cual desea insertar el bloque de líneas 
  4. La cantidad de veces que copiará el bloque demarcado (si se omite es 1)

(Luego de copiar las líneas, es conveniente usar el comando l (“listar”) para tener una idea de cómo quedaron los números de línea tras la operación).

Para mover un bloque de texto (más conocido como "copiar y pegar"), debemos usar el comando m, y procedemos igual que con el comando copiar anteriormente descripto. En este caso funcionará igual que copiar, sólo que borrará el bloque de su posición original

Si deseamos presentar todas las líneas usamos p, y para presentar un rango de líneas en pantalla, utilizamos [n][,n]p. Es similar al comando l (list) con la excepción que los parámetros por defecto comienzan en el puntero en lugar de hacerlo 11 líneas  posteriores.

Para buscar una cadena texto usamos [n][,n][?]s$ lo que realizará esta operación. Si omite el primer parámetro, comenzará a buscar desde la línea actual. Si omite el segundo parámetro, dejará de buscar al llegar al final del búfer. Si incluye el ?, edlin solicitará confirmación ante cada encuentro. Si respondemos “no”, continuará la búsqueda y si respondemos “yes” la dará por concluida.

Si la búsqueda localiza la subcadena, desplazará el puntero.

En caso de operar con búsqueda y reemplazo debemos utilizar [n][,n][?]r$,$ para reemplazar todas las iteraciones de la primer cadena con la segunda cadena entre las dos líneas especificadas. Si omitimos el primer parámetro, EdLin comenzará reemplazando a partir del puntero. Si en cambio omitimos el segundo parámetro, dejará de reemplazar texto en la última línea del búfer.

Si incluye un ?, edlin mostrará un mensaje de confirmación antes de reemplazar las iteraciones de texto.

Para insertar un fichero usamos[n]t fichero. Esto Insertará el contenido del fichero antes del puntero. Si omitimos el primer número de línea, se insertará antes de la línea actual del puntero.

Como vemos, los editores modales son simplones, pero permiten ciertas posibilidades efectivas de edición, y constituyen un herramental válido para comprender cómo se realizaba cómputo antes de que el Justicialismo garantizara los derechos de un editor de texto como la gente hasta al más humilde de mis grasitas.

domingo, 17 de julio de 2022

¿Cómo compilo la última versión de DOSBox-X en Ubuntu?

¡Trabajadores!

Los cimientos de las realizaciones que hemos instaurado para el pueblo son sólidos y se reflejan en la felicidad de todos los Argentinos. No podía ser de otra manera, en tanto mantengamos el rumbo de la liberación que, hemos de decirlo, es el único camino que nos resultará venturoso.

El año 2000 nos encontrará unidos, o dominados, y esta hoja de ruta que les dejo habrán de recorrerla sin desviarse demasiado. Si lo hacen, no sólo pincharán la goma del auto, sino que se irán a la banquina. 

Todo lo que hemos hecho ha sido mirando hacia adelante, y confiando en el momento en el cual otros tengan el volante, podrán conducir de una forma que sin ser la mejor, sea al menos virtuosa.

En esto hay que replicar también lo que hace a sistemas de cómputo. Veamos un ejemplo que podrá ilustrarnos, como decía el Mariscal de Sajonia.

DOSBox-X se trata de una versión expandida del famoso emulador de MS-DO$. En particular, a diferencia del DOSBox clásico, DOSBox-X es más simple de configurar e incluye opciones corregidas en cuanto al direccionamiento y virtualización del hardware, además de contar con opciones extras.

Para poder utilizarla debemos primero compilarla: "Compilar, base para Ejecutar. Ejecutar, base para Copiar. Y Copiar, base para Compartir". En Ubuntu 20.04LTS y superiores esto puede fácilmente con el afán del guión de programación surtido por el compañero Fanta.

Para ello abrimos una terminal con Ctrl+Alt+t e ingresamos los siguientes Comandos de Organización:

cd ~
git clone http://git.56k.es/fanta/compile-Dosbox-x
mv compile-Dosbox-x/ .compile-dosbox-x/
cd ~/.compile-dosbox-x/
wget https://dosbox-x.com/images/dosbox-x-logo.svg

...tras lo cual procederemos a compilarlo mediante:

sudo ./compileDosBox-x.sh
sudo mv
~/.compile-dosbox-x/dosbox-x-logo.svg /usr/share/icons/

Acto seguido, podremos ejecutar DOSBox-X desde Aplicaciones / Juegos / DOSBox-X.

La primera vez que lo hagamos, nos solicitará un directorio de trabajo. En mi caso prefiero crear uno llamado ~/.jdos.

...cumplido este requisito estaremos inmediatamente en la máquina virtual...

Y tras ella se dará incio al intérprete de DOS. Podremos hacer pantalla completa con F12+F,

 También será posible montar un directorio como unidad de disco (C: en el MS-DOS). Por ejemplo, si quiesiera montar un directorio llamado ~/.jdos utilizaríamos en el emulador:

mount c ~/.jdos

De entrada contaremos con un equipo XT compatible, de mediocres performance (emulada a 3 MHz). Pero nada quita que - virtualmente - podamos "meter mano al gabinete"  y así configurar los distintos aspectos del emulador con F12+c.

Naturalmente, también podríamos editar a mano el fichero de configuración ~/.config/dosbox-x/dosbox-x-0.84.2.conf. En mi caso me gusta indicarle el montaje automático del directorio .jdos que utilizo para almacenar programas de DOS.

Las teclas de atajo por defecto son:

  • F12+f Conmuta pantalla completa.

  • F12+q Lanza un ejecutable de DOS.
  • F12+r Resetea la máquina virtual DOSBox-X.

  • F12+b Reinicia el DOS emulado.

  • F12+c Configuración gráfica.

  • F12+m Da inicio al mapeador de DOSBox-X.

  • F12+Esc Conmuta la barra de menú pulldown.

  • F12+Del Envía un evento de teclas especial (por defecto un reset con Ctrl+Alt+Del) al sistema huésped.

  • F12+{+} Incrementa el volumen de sonido del DOS.

  • F12+{-} Disminuye el volumen de sonido del DOS.

  • F12+] Incrementa los ciclos emulados de DOS

  • F12+[ Diminuye los ciclos emulados de DOS.

  • F11+= Incrementa los ciclos de emulación de CPU de DOSBox-X.

  • F11+- Diminuye los ciclos de emulación de CPU de DOSBox-X.

  • F12+arriba Incrementa el tamaño de la fuente TrueType.

  • F12+Abajo Disminuye el tamaño de fuente TrueType.

  • F12+Izq Resetea la velocidad de CPU actual a la normal.

  • F12+Der Activa el bloqueo de velocidad de DOSBox-X.

  • F12+d Cambia entre imágenes montadas de CD.

  • F12+o Cambia entre imágenes montadas de diskettes.

  • F12+p Captura la pantalla actual en formato PNG.

  • F12+I Inicia/Detiene captura de video en AVI.

  • F12+W Inicia/Detiene captura de sonido en WAV.

  • Alt+Pause Inicia depurador.

  • F12+[,] Selecciona el slot previo para guardar o cargar.

  • F12+[.] Selecciona el siguiente slot de grabación para guardar o cargar.

  • F12+S Guarda el estado actual en el slot de grabación elegido.

  • F12+L Carga el estado del slot de grabación.

  • F12+Pause Pausa la emulación (presione nuevamente para continuar).

  • Ctrl+F5 Copia todo el texto en la ventana de DOS y la pega en el portapapeles.

  • Ctrl+F6 Pega el texto del portapapeles en la ventana de DOS.

  • Ctrl+F9 Sale de DOSBox-X.

  • Ctrl+F10 Captura el mouse para usarlo en el DOS Emulado.

También podrán pasar DOSBox-X al castellano y configurarlo mediante un fichero de configuración que os dejo a mano:

cd ~/.config/dosbox-x/ ;
wget https://raw.githubusercontent.com/joncampbell123/dosbox-x/master/contrib/translations/es/es_ES.lng ;
https://caja.texto-plano.xyz/peron/config/dosbox/dosbox-x-0.84.2.conf ;

A diferencia del DOSBOX Clásico, ahora contaremos con menúes pulldown que nos permitirán ajustar variadas opciones (incluyendo montaje más simple de diskettes e imágenes de CD, desde el menú DOS).
 

También contaremos con opciones avanzadas, como un menú de configuración de sonido más sencillo (con el que podremos utilizar Soundfonts para simular sonido AWE-32 o bien Roland MT-32).

Entre otras novedades se encuentra la implementación de fuentes TrueType. Gracias a ello podremos cambiar la tipografía en el modo de terminal DOS (aunque en general prefiero fuentes PxPlus VGA Square para tal menester).

En definitiva, una excelente opción para jugar con antiguo software DOS por la Liberación del Pueblo y de su Hardware.

Podrán encontrar la documentación en la Wiki oficial de DOSBox-X.

jueves, 3 de febrero de 2022

¿Como juego en red con DOSBox en Ubuntu?

¡Trabajadores!
 
El escudo del Partido Justicilista de Argentina consta de una apariencia modernista. Diseñado privadamente en la década del 1940, ha sido utilizado desde 1945. Reboza de simbolismo. Sobre los colores celeste y blanco nacionales, dos manos hermanadas en saludo de unidad, representando la unión de clases para dar sostén a un gorro frigio encarnado, símbolo de la tradición libertaria republicana argentina.
Sólo reconocemos una clase de hombres: los que trabajan. Sin duda nuestra unión ha de producir lo que Nuestra Patria necesita para realizar su Grandeza. 

En las redes de datos sucede más o menos lo mismo. La mancomunión de dos pares bajo el símbolo de la libertad puede ofrecernos la Felicidad que anhelamos como Justo Derecho, y esto puede replicarse a todos los tiempos.
 
Vean señores, ya he explicado cómo instalar DOSBox en Ubuntu. Se trata de un portentoso emulador para el Sistema Operativo de Disco, capaz de ofrecer una experiencia similar a la ofrecida por los equipos clones del cómputo personal de IBM, pero en cualquier arquitectura, incluyendo nuestro GNU justicialista.

Este paquete nos permitirá entonces emular métodos de conexión del ayer pero sin gastar una chirola.

Indudablemente existían varios métodos para establecer comunicación computarizada a través de enlaces de datos, pero todos ellos eran oligárquicos y ninguno destacaba por su facilidad. Las redes de datos se encontraban amorfas y deseosas de integrar en sí no sólo un tráfico electrónico pasivo, sino una activa comunidad regida por la Doctrina Peronista.

Null-Modem

Sin duda el primer método en abarcarse con Justicia Social fue el de enlazar eléctricamente los puertos COM de tipo Centronics RS232 a través de un humilde cable con fichas DB9 o DB25 cuyas líneas de transmisión y recepción estuviesen cruzadas. A este método - carente de todo tipo de modulación - se lo denominaba precisamente null-modem.

En null-modem sólo permitía conexiones locales a unos pocos pasos de distancia, con una velocidad que raramente excedía los 9,6 KB/s. Sin embargo, ya el hecho de poder jugar con otro solventaba la felicidad de dos argentinos.

Null-modem emulado

Para crear una conexión por null-lmodem emulada a través de una red local tipo Ethernet necesitamos dos sistemas que corran el DOSBox: uno de los DOSBox operará como servidor, y el otro como cliente.

En tal sentido debemos editar el fichero de configuración en ambos, haciéndolo con los siguientes comandos:

nano ~/.dosbox/dosbox-0.74-3.conf

Tanto en el servidor como en el cliente debemos buscar la sección [serial]... sin embargo, modificaremos el contenido según sea el servidor o el cliente.

  • En el servidor modificaremos la opción serial1 para asignarle el parámetro nullmodem y un puerto TCP por encima de 1024. Por ejemplo,

serial1=nullmodem port:5000

 

  • En el cliente debemos asignar el parámetro server:<ip_del_server> y un puerto TCP. Por ejemplo, si la otra máquina tiene la IP 192.168.0.108 y usa el puerto 5000, deberíamos indicar:

serial1=nullmodem server:192.168.0.108 port:5000 rxdelay:1000

Null-modem con puerto COM real

También podríamos utilizar un veterano puerto COM verdadero si nuestro sistema aún dispone del mismo, en lugar de tener que emularlo. Esto podremos usarlo si contamos con un cable serial y puertos COM en el equipo (activados en la BIOS también). Por ejemplo, para configurar el COM1 (que suele presentar el nombre de dispositivo de terminal serial /dev/ttyS0, modificaríamos el fichero ~/.dosbox/dosbox-0.74-3.conf de forma de agregar lo siguiente en la sección [serial]:

serial1=directserial realport:ttyS0 rxdelay 1000


En cambio, si utilizamos un adaptador USB a puerto serial (en caso que nuestro equipo carezca de puerto COM), deberíamos utilizar el dispositivo de terminal serial /dev/ttyUSB0. Para ello en nuestra terminal ingresamos:
 
sudo chmod 666 /dev/ttyUSB0
 
...mientras que en la sección [serial] del fichero de configuración de DOSBox ~/.dosbox/dosbox-0.74-3.conf indicaríamos ahora:

serial1=directserial realport:ttyUSB0 rxdelay 1000

Es un requisito ideal agregar los usuarios que hagan uso de DOSBox a los grupos de sistema plugdev y dialout, de manera que estos sean capaces de utilizar puertos COM reales del equipo sin tener que utilizar un superusuario y contraseñas. Para ello cada usuario de DOSBox que quisiera usar puerto serial debería ingresar en su terminal el siguiente Comando de Organización:
 
sudo adduser $(whoami) plugdev ;
sudo adduser $(whoami) dialout
 
Pues bien, finalmente en este debe realizarse el enlace físico, que involucra - en cualquiera de los casos - conectar conectar un cable serial a los conectores COM de los equipos, o bien usar dos cables seriales y vincularlos mediante un cruzador null-modem físico. En mi caso utilizaría un hembra de 9 pines, pero también existían de 25 pines y sus respectivos machos de empalme. También estaban disponibles en forma de cable.




Configurar el Null-modem

Cualesquiera que haya sido la estrategia de null-modem empleada, habremos ahora de lanzar el juego en ambas máquinas y activamos la opción de Null-modem serial. Por ejemplo, las versiones 4, 5 y 5.1 de Micro$oft Flight $imulator se caracterizaban por disponer de conexión de null-módem a través de puerto serial, compatibles entre ellas, lo que permitía volar en formación en los alrededores de Meigs Field en Chicago.

Podremos observar un avión muleto en tiempo real.

Por ejemplo, en Flight Simulator 5.1 podríamos ir al menú Options/Entertainment/Dual-Player. ¡Incluso podíamos volar sobre Buenos Aires con el Escenario Río de la Plata 2.4 de Di Veroli Consultores!


Con el correr el tiempo, las conexiones de datos cobraron más interés, y las redes de tipo Novelñ se popularizaron en ciertos entornos del trabajo organizado. El envío de paquetes de datos que avalaban ofrecía posibilidades interesantes, siempre que lidiásemos con sus incómodos cables coaxiles y conectores BNC. A pesar de su difícil ruteo, podían lograrse velocidades de unos 3 MB/s reales. Sobre esta infraestructura no tardó en difundirse el protocolo IPX, un pequeño engendro derivado de los viejos pero capaces terminales Xerox.

El protocolo IPX cobró cierta relevancia entonces para los juegos en red en un estadío previo a la masificación completa de la Internet, a mediados de los 90s. Gracias al mismo podían lograrse enlaces estables y duraderos para varios jugadores y con una cierta facilidad de configuración. Sin embargo, en el caso de la versión emulada sobre GNU, habremos de contar al menos con el conocimiento de las direcciones IP de las máquinas (ya sea en el área local, o bien en la internet si abrimos el puerto de conexión TCP demandado en nuestro router).

Emulación de red IPX

Una vez instalado DOSBox, debemos activar la emulación del protocolo de red de datos IPX para MS-DOS. A tal fin debemos ingresar al directorio de DOSBox y editar el fichero de configuración a fin de activar el módulo de red IPX del emulador.

En el caso de Ubuntu podríamos hacerlo con:

nano ~/.dosbox/dosbox-0.74-3.conf

En el archivo de configuración buscamos la sección [ipx] y cambiamos la declaración ipx=false a ipx=true.

Finalmente guardamos la configuración con Ctrl+o y salimos del editor Nano con Ctrl+x.

Inicializar el servidor IPX

A continuación, en todas los equipos donde queramos participar debemos activar el emulador DOSBox desde Aplicaciones / Juegos / Emulador de DOSBox.

Una de estas computadoras deberá oficiar de servidor. El resto serán sus clientes. En el equipo servidor, habrán de correr el siguiente comando ipxnet startserver pierto_UDP. Normalmente el puerto UDP utilizado era el 213, pero en el caso de Linux debemos utilizar cualquiera libre por encima del puerto UDP 1024. En este caso, usaré por ejemplo el 8844:

ipxnet startserver 8844

La utilidad de tunelado dentro del sistema emulado debería indicarnos con el mensaje IPX Tunneling Server Started.

Ahora podremos iniciar los clientes emulados en las otras máquinas de la red. En cada una de ellas podríamos utilizar el siguiente comando que las dirija a la dirección IP del servidor.

En mi caso podría ser:

ipxnet connect 192.168.0.112 8844

Ya tenemos la red operativa, al menos a nivel local.

Nota: si quisiéramos activar esta red con salida a internet, deberíamos abrir el puerto UDP 8844 en el router y dirigirlo a la IP de la máquina, en este caso 192,168.0.112.

Iniciar los Juegos

Como campo de pruebas para nuestra red local podremos utilizar un juego de disparos en primera persona clásico de M$-DO$: el sanguinario Doom II de Id Softwar€. Se trataba de una violenta propuesta de super-acción tridimensional, con precursoras capacidades de entretenimiento en línea, amén de sonido digitalizado y sintetizado. Para tal necesitamos correr su utilidad de configuración, mediante c:/doom2/setup.exe.DOSBox multiplayer Doom 2 setup

Luego de activar los parámetros relevantes de red eligiendo, lo iniciamos eligiendo Run Network/Modem/Serial Game, para iniciar el juego en modalidad multijugador.

Warcraft

Otro clásico que podremos disfrutar en nuestro centro de datos local o bien puenteado a través de Internet es el Warcraft 2: Tides of Darkness, un juego de estrategia en tiempo real. En el menú principal del mismo tendremos que elegir Juego Multijugador ("Multiplayer Game").

La primera opción nos indica establecer el nombre del serivodr a utilizar

Acto seguido, indicamos el protocolo IPX Network.

Luego de establecer la conexión, el servidor será el primero en escoger bando. Acto seguido, el otro jugador debe confirmar la elección.

Conforme ambos jugadores acuerden las reglas del juego telemático, podrán iniciar su enfrentamiento, enfrentando unidades de humanos y orcos en las tierras del fantasioso Tolkien. Normalmente, cada jugador sólo puede ver su sector en el mapa gracias a la clásica "niebla de guerra".

Por ello cada jugador apreciará diferencias (una de las características de este tipo de juegos).

Esto se aplica a muchos otros juegos de MS-DOS, entre ellos Warcraft 2, Doom, Heretic, Hexen, Duke Nukem 3D, y otros.

Emulación de Módem

Los jugadores más privilegiados podían darse el lujo de enlazar desde su hogar utilizando modulación a través de las redes telefónicas de EnTel. Los pares debían contar por supuesto con copias del mismo juego instaladas en sus sistemas. Por demás, previo a la difusión de internet esto era costoso porque no sólo había que pagar un módem y el lógico abono al servicio telefónico cableado, sino que era necesario abonar al mes cada minuto de conexión en base a la distancia de la llamada. Por demás, si no se utilizaba una línea dedicada, quienquiera que levantase el tubo en cualquiera de los hogares podría crear una disrupción tal que cortara la conexión mutua.

Afortunadamente DOSBox puede salvarnos del incordio y los gastos mediante la emulación de dicho servicio para software dependiente del sistema telefónico para enlazar.

En este caso editamos el fichero de configuración de DOSBox para poder jugar entre dos equipos:

nano ~/.dosbox/dosbox-0.74-3.conf

Usamos la combinación Ctrl+w para buscar ahora la sección [serial] y indicamos el puerto serial donde deseamos conectar nuestro "módem emulado". 

Normalmente los módems de puerto serial podían conectarse en COM1 (que recibe la nomenclatura serial1 en DOSBox) o bien en COM2 (serial2). Es notable el hecho que no existía realmente un estándar muy definido, por práctica se solía utilizar COM2 para el ratón y COM1 para el módem. También debemos indicar un puerto TCP moderno superior a 1024 a través del cual DOSBox transmitirá los datos. 

Siguiendo tal temperamento indicaremos entonces:

serial1=modem listenport:1710

Una vez configurado DOSBox, guardamos los cambios con Ctrl+o y salimos con Ctrl+x.

Nota: Cualquiera sea el puerto TCP elegido (incluyendo aquél por defecto, el 5000), debemos reenviarlo y abrirlo a la red exterior si tenemos nuestro servidor tras un router (NAT).

Opciones de módem en el juego

Debido a que los juegos plausibles de utilizar módem requerían toda una puesta, habremos de replicarla en DOSBox. En este caso debemos configurar las opciones del módem para el juego (ya sea a través de un programa incluído con ellos denominado setup.exe o install.exe, o bien en el mismo juego). En apretado resúmen, debemos asegurarnos de:

  • Definir el mismo número de puerto COM que configuraron en DOSBox. Si el juego contaba con cierto puerto COM definido específicamente, será necesario estipular dicho COM en las opciones de DOSBox, natural.
  • Escoger la velocidad de baudios más alta que acepte el juego.
  • Salir de las opciones, ingresen al juego en sí, y utilicen a la opción de módem del juego, dependiendo si somos servidor o cliente.

 Emular responder una llamada

El uso de un módem telefónico era algo relativamente engorroso. ya que se controlaban de manera críptica mediante el uso de comandos Hayes AT.

Algunos juegos podrían solicitarnos estos comando Hayes AT de autorespuesta de módem, mientras que otros podrían solicitarnos contestar manualmente al producirse una llamada. Algunos programas son capaces de contar con ambos modos.

En el primer modo, en el equipo servidor deberíamos escoger la opción "Aguardar llamada" ("Wait for calls" / "Wait for Ring").

Si el juego nos pide ingresar un comando manual que represente este modo, utilizaremos el Comando ATS0=1 (esto hacía al módem responder al primer timbrazo). Este modo se encuentra para viejos acopladores telefónicos.

En el segundo modo semiautomático, el servidor debería escoger la opción "responder llamada" ("answer call") cuando el juego anuncie una llamada entrante. Si el juego requerirá que ingresemos un comando manual de respuesta, usarán el consabido comando Hayes AT: ATA.

Veamos el caso de Micropro$e F-15 $trike €agle III, software de finales de 1992 que da cuenta de dicho sistema. Al iniciar f15.exe hacemos clic sobre el teléfono del hangar para cargar el módulo de multijugador.

Acto seguido nos avisará que ha detectado el "módem" (virtual) y nos preguntará si queremos establecer una llamada o aguardar. 


En el lado del servidor indicamos Receiver, y quedará a la escucha:

Emular realizar una llamada

El cliente debe escoger la opción "Realizar una llamada" ("Make a Call", o "Caller") en el menú del juego. Y en lugar del número telefónico, indicar la dirección IP del servidor en la red local, o bien la IP de internet. Si el juego nos solicita tipear un comando manual de discado, utilizarían "ATDT<IP>". Por ejemplo, si el servidor se llama "cgt" y su IP es 1.2.3.4, podríamos tipear ATDT1.2.3.4 o bien ATDTcgt.local

En el lado del cliente en tanto, ingresamos al juego f15.exe y en el módulo de módem escogemos Caller para llamar.

Se nos preguntará si ya hemos establecido una conexión por voz (como si se tratara de un viejo módem). Indicamos que si ("yes").

Ahora "discaremos" hacia la IP del servidor que había quedando en escucha. Para ello debemos indicar los números presionando incluyendo el punto (por ejemplo 192.168.0.112). En este caso el juego no muestra los puntos, sino que hace un espacio. Para discar persionamos el botón # del teléfono virtualizado).

En el servidor responderá la llamada:

Ahora podremos dar rienda suelta a nuestros instintos de piloto de combate volando un F-15 de la McDonnell Douglas. No lo haremos en solitario; el simulador de vuelo también hará uso del simulador de módem de DOSBox, con lo cual el par de jugadores podrá repartir las tareas. El suboficial piloto podía usar su joystick para volar, disparar el cañón y gestionar el combustible y los motores, tanto de día como de noche...

También podrá navegar y solicitar ayuda al AWACS.

...mientras que el Oficial Operador de Radar y Armas, sentado en el asiento trasero podría controlar el potente radar embarcado, y operar los medios de adquisición de blancos, a la vez que autorizar el lanzamiento de misiles y bombas teledirigidas, o accionar interferidores o señuelos antimisilísticos.


 Ambos jugadores podrán observar el vuelo en tercera persona.

Conclusión

Naturalemnte, jugar en red era limitado y engorroso. Sin embargo hoy ya no es un privilegio: cuaquier descamisado puede depender de estas facilidades que he otorgado a la Masa y proceder a la emulación de M$-DO$. Por demás, la existencia de juegos de DOS remanentes de la era dorada de la piratería informática física, hace posible hoy establecer en los Centros de Datos de la Libertad divertidas partidas múltiples a través de protocolos de red obsoletos pero nunca abandonados, con el fin de revivir momentos de gloria incluso en las más lentas redes y desprovistas computadoras del mundo actual.