What are we gonna see?

◾ Basic use of the EDIT tool

◾ Creation of a DOS program script

◾ Display text on screen

¿Qué es el VR-SCRIPT?

VR-SCRIPT es el lenguaje de scripting nativo de los MSXVR y con el que se pueden desarrollar cualquier tipo de aplicaciones y juegos. Además de la versatilidad del script, permite una programación orientada a objetos entre otras particularidades especiales. Este lenguaje utiliza una sintaxis similar a la del C/C++. Dentro del MSXVR se lanzan programas que ejecutan estos scripts. Estos programas tienen acceso a un conjunto de funciones nativas para poder
desarrollar todo tipo de tareas.

El editor EDIT

Dentro del conjunto de aplicaciones del sistema operativo del MSXVR, exista una que es el editor de textos. Este editor nos va a permitir crear scripts, ejecutarlos e incluso manejar proyectos. Para abrir el editor podemos ir al VR-DOS y ejecutar la siguiente línea:

Este comando abrirá el editor de textos y desde aquí vamos a crear nuestro primer script.

Un primer programa «Hello World!»

class HelloWorld implements DOS_Program
{
	virtual Start()
	{
		GetDOS().GetConsole().PrintLn("Hello World!");
	}
}

Vamos a escribir este código en el editor de textos. Para ello invocamos el editor:

Escribimos el código y guardamos. Volvemos al VR-DOS de nuevo (salimos del editor) y ejecutamos el script:

Escribimos «helloworld» que es el nombre que hemos indicado a nuestro archivo de script y pulsamos la tecla ENTER.

¡Así de sencillo! con este código mostraremos un texto «Hello World!» en la consola del VR-DOS. Una vez ejecutado, para volver al VR-DOS y cancelar la ejecución del programa, usaremos el atajo de teclado: CTRL + C. También podemos abrir el menú de VR-DOS (tecla MENU o atajo CTRL+ALT+M) y acceder al menú Programas -> Terminar actual.

Para poder finalizar la ejecución de un DOS_Program, desde código, podríamos haber escrito la siguiente instrucción:

End(0);

De este modo retornaríamos a VR-DOS el control. NOTA: En la salida indicamos con un 0 que nuestro programa no ha generado ningún tipo de error.

Vamos a ver con más detalle en que consiste este script:

class HelloWorld implements DOS_Program

Esta primera línea permite crear un contexto de clase, en el que indicamos un nombre «HelloWorld». También heredamos el comportamiento de un «DOS_Program». Esto es importante. Si no heredásemos un comportamiento de programa, nuestro script no podría ejecutarse. Todos los comportamientos de programa heredan de «Engine_Program» y disponemos de los siguientes: DOS_Program, View_Program, GL_Program, BASIC_Program. Todo en función de que tipo de aplicación queramos crear. Por supuesto, se pueden crear o personalizar propios, siempre y cuando hereden de «Engine_Program», esto es obligatorio.

Esas llaves { } es la forma de indicar un ámbito. Se usan del mismo modo que se hace en otros lenguajes como el C o el C++.

El punto de entrada a nuestro script lo haremos a través de la función Start. NOTA: Realmente este no es el punto de entrada inicial, pero si el que debemos utilizar de forma protocolaría en el uso de un «DOS_Program».

virtual Start()

En este caso, definimos una función (método) de nuestra clase «HelloWord». Este método es heredado de «DOS_Program» que a su vez lo hereda de «Engine_Program» de modo que por eso es importante que el método ejecute el código de las clases padre. ¿Qué quiere decir esto?, bien, la forma de crear una función de clase, sería esta:

function Start()
{
}

Pero si hacemos esto, cuando el motor invoca el Start de nuestro script, si lo hacemos así, no ejecutará ni el Start definido en «DOS_Program» ni el que hay en «Engine_Program». Solo ejecutaría nuestro código y eso sería un problema porque en este método las clases padre hacer cosas que nos hacen falta para operar correctamente. Por tanto, para garantizar esto haríamos:

function Start()
{
	::Start();
}

Haciendo ::Start(), invocamos el Start de la clase padre. Esto mismo, exactamente igual, es lo que hace el «virtual» o sea, si en vez de poner function ponemos virtual, estamos implícitamente invocando el Start del padre.

Aunque todo esto te pueda sonar a klingon (siempre y cuando no sepas klingon, claro está) es algo que se irá repitiendo a lo largo del resto de ejemplos y tutoriales, por lo que iremos normalizándolo.

Seguimos con la siguiente instrucción:

GetDOS().GetConsole().PrintLn("Hello World!");

Esto realmente se podría ver así:

_dos = GetDOS();
_console = _dos.GetConsole();
_console.PrintLn("Hello World!");

Esto es lo mismo que antes, pero en varias líneas. Primero obtenemos la instancia del VR-DOS que está ejecutando el script, luego obtenemos el acceso al controlador de la consola de texto y finalmente mandamos volcar un texto. La función «PrintLn» muestra el texto y baja una línea en la consola. Existe la versión «Print» que no haría esto último. La consola del VR-DOS tiene un cursor además de funcionalidades para localización y coloreado de texto (según el modo de la consola).

Vamos a ver como ejecutar nuestro script desde el editor y como usar el logger para poder usarlo para depurar zonas de nuestro código.

Ampliaremos nuestro programa con otro ejemplo:

class HelloWorld implements DOS_Program
{
	virtual Start()
	{
		GetDOS().GetConsole().PrintLn("Hello World!");
		GetEngine().LogVerbose("Estamos aquí");
		Test("dato1", "dato2");
	}

	function Test(_a, _b)
	{
		GetEngine().LogVerbose(_a);
		GetDOS().GetConsole().PrintLn(_b);
	}
}

Desde el editor, procederemos a abrir el panel de logger y a ejecutar el script con LCTRL + R. Sería interesante que echases un vistazo a la sección del editor de textos para saber de que estamos hablando.

En el código anterior se ve un ejemplo de llamada a función de clase, en nuestro caso de nombre «Test» y a la que se le pasan dos parámetros. Ambos se espera sean de tipo string (cadena de caracteres). Al llamar a la función «Test» se ejecutará el código que se ha definido en la función y este sacará el texto «_a» por el logger y el texto «_b» por la consola del DOS. Para saber más sobre declaración de funciones, echa un vistazo here.


Conclusión

Con este, arrancamos una serie de tutoriales para aprender los secretos y manejo del VR-Script, el lenguaje nativo de los MSXVR. Esperamos que te haya llamado la atención y quieras seguir aprendiendo más cosas de cara a sacarle todo su verdadero potencial.

¡Nos vemos en el siguiente tutorial! ¡Saludos!

en_GBEnglish