@Conceptos bsicos
:Introduccin
^Introduccin a PROMETEO 2.2.1

     PROMETEO 2.2.1 es un generador de aventuras conversacionales. Permite
 escribir aventuras de texto (con posibilidad de animaciones y sonido) sin
 necesidad de tener conocimientos profundos de Informtica o Programacin.
 Posee un lenguaje propio para describir aventuras de forma cmoda y
 sencilla.

     PROMETEO 2.2.1 es un paquete compuesto por varias herramientas. Las ms
 importantes son el compilador (PC.EXE) y el mdulo run-time (PR.EXE). El
 compilador toma el programa fuente escrito en el lenguaje de descripcin de
 aventuras, y con l genera un programa objeto con un formato propio en un
 fichero de igual nombre y extensin .GAM. Una vez generado el cdigo, se usa
 el mdulo run-time para, en base a la informacin contenida en el fichero
 objeto, ejecutar la aventura.

     As, distribuir una aventura es muy fcil. Tan slo hay que dar el
 cdigo objeto (el fichero de extensin .GAM) y el mdulo run-time (el
 programa PR.EXE), que son los dos nicos ficheros que el jugador necesita
 para poder jugar a la aventura. El cdigo fuente queda asegurado, y no es
 necesario facilitarlo, lo que hace que sea un producto muy seguro.

     Un programa fuente para PROMETEO 2.2.1 ser un fichero de texto (usual-
 mente de extensin .PRO) formado por varias secciones de informacin, que
 suministran al compilador la informacin necesaria para poder generar la
 aventura. Estas secciones pueden aparecer en cualquier lugar del programa
 fuente, teniendo en cuenta que:

     - Las secciones son disjuntas, lo que significa que ninguna seccin
       puede estar total o parcialmente contenida en otra.

     - Antes de usar un cierto elemento, hay que definirlo. Por ejemplo, si
       queremos usar una palabra en la seccin de respuestas, previamente
       hemos tenido que definir esa palabra en el ~vocabulario~.

     - Las secciones pueden aparecer varias veces en un mismo fichero fuente
       siempre que no se redefina un elemento previamente definido. Por
       ejemplo, es posible tener dos secciones de ~vocabulario~ separadas por
       una seccin de ~localidades~.

     Otras caractersticas ms avanzadas del lenguaje de PROMETEO 2.2.1 son
 las ~subrutinas~, las estructuras que cambian el flujo de control, etc.
 Tambin es posible reproducir ficheros de animacin en formato .FLI, y usar
 la Sound Blaster para generar sonidos por hasta 8 canales independientes.

     Puede aprender ms sobre las herramientas de desarrollo, entrando en
 el submen correspondiente del men principal. En el submen dedicado a
 los conceptos bsicos encontrar ms informacin sobre las distintas
 secciones que componen un programa para PROMETEO 2.2.1, adems de otra infor-
 macin de inters para los que empiezan a escribir aventuras con esta he-
 rramienta.

:Programa de Ejemplo
^Programa de Ejemplo: "El Billete"

     En el directorio donde haya instalado PROMETEO 2.2.1, se encuentra una
 aventura de ejemplo que pretende mostrar algunas de las caractersticas
 de este generador de aventuras. El cdigo fuente se encuentra en el fichero
 BILLETE.PRO, y el cdigo objeto es el fichero BILLETE.GAM (caso de que no
 se encuentre, se puede generar sin problemas compilando el fichero fuente
 con la orden "PC BILLETE" desde el prompt de MS-DOS). Para jugarla debe
 escribirse "PR BILLETE".

     El objetivo del juego consiste en encontrar el billete de autobs que
 se le ha perdido al jugador mientras esperaba cerca de un parque. Este
 billete es necesario para poder tomar el autobs y volver sano y salvo a
 su casa. Es una aventura muy pequea (pocas localidades, pocos objetos,
 fcil de terminar, ...) pero creo que sirve bastante bien para aclarar
 algunos conceptos y mostar alguna que otra caracterstica curiosa de
 PROMETEO 2.2.1. Por ejemplo, si examinamos al pajarito, aparecer una anima-
 cin. Tambin se ejemplifica el uso de los colores en el texto, y se
 muestra como hacer operaciones automticas con muchos objetos a la vez
 (cosas del estilo de "COGE TODO EXCEPTO LA BOLSA", y as). En realidad,
 mucho de su cdigo puede reutilizarse para formar el "esqueleto" base de
 cualquier aventura que el escritor desarrolle.

:Intrprete
^El intrprete de lenguaje natural

     Cuando el jugador est ejecutando la aventura, sta le pide constante-
 mente que le vaya indicando las acciones que desea realizar. Estas acciones
 son descritas usando un lenguaje natural (que puede ser castellano, cataln,
 u otro cualquiera, dependiendo del escritor). Pues bien: la parte de
 PROMETEO que traduce en tiempo de ejecucin la frase del jugador a los
 cdigos internos que la aventura entiende es el intrprete de lenguaje
 natural (para abreviar, "intrprete").

     La finalidad del intrprete es, por tanto, verificar que la frase est
 correctamente escrita, y en caso afirmativo, almacenar en las ~banderas~
 adecuadas los cdigos de las palabras que componen la frase. A su vez,
 dichas palabras deberan haber sido introducidas en el ~vocabulario~ cuando
 la aventura se estaba desarrollando. Toda palabra escrita por el jugador que
 no aparezca en el vocabulario ser simplemente ignorada por el intrprete.

     Una frase vlida para PROMETEO es una combinacin de palabras de la
 siguiente forma:

     VERBO [PREPOSICION] [NOMBRE [ADJETIVO] | PRONOMBRE] ["FRASE"]
           [PREPOSICION] [NOMBRE [ADJETIVO] | PRONOMBRE] [ADVERBIO]

     Adems, una frase puede estar compuesta de varias unidas mediante una
 CONJUNCION o un signo de puntuacin (".", "," o ";").

     Como puede comprobarse, el nico elemento necesario en una frase es el
 verbo, que es el que indica la accin de la frase. El resto de los compo-
 nentes se usan para escribir frases ms complejas. Por ejemplo, es normal
 usar frases con verbo y nombre, indicando as que se quiere hacer algo con
 una cosa (se expresa la accin y aquello sobre lo que recae la accin).

     A veces, es necesario especificar dos cosas para completar la accin
 del verbo. Por ejemplo, en la frase "METE LA LLAVE EN LA BOLSA" (recordamos
 que las palabras como "LA" o "EN" son ignorados, pues no aparecen en el
 vocabulario), tenemos un verbo ("METE") y dos nombres ("LLAVE" y "BOLSA").
 Eso se puede hacer sin problemas y el intrprete lo entiende perfectamente.

     Los nombres pueden ser sustituidos por un pronombre, y en ese caso, el
 nombre ser el mismo que se us en la frase anterior. Por ejemplo, sera
 vlido escribir "COGE LA ESPADA Y MATA A MANOLO CON ELLA", donde "ELLA" es
 el pronombre.

     Existen unos nombres especiales, que son los "nombres convertibles a
 verbos", que se transforman automticamente en el verbo de la frase cuando no
 se especifica ningn verbo en concreto. De entre ellos, los ms interesantes
 son las "direcciones", que funcionan como nombres o verbos segn el caso, y
 que cuando se teclean en una frase y no existe conexin asociada a ella en la
 localidad actual, hace que se emita el mensaje "No hay salida en esa direc-
 cin", en lugar del "No puedo hacer eso" tradicional. (Ver ~Vocabulario~ para
 ms informacin).

     Adems, a veces hay que matizar ms la accin a realizar, incluyendo
 adverbios ("RAPIDAMENTE", por ejemplo), que modifican la accin del verbo,
 o preposiciones.


^Caractersticas avanzadas del intrprete

     El intrprete es ms inteligente de lo que parece a primera vista, pues
 adems es capaz de entender otras frases ms complicadas. Por ejemplo,
 la frase "COGE LA MANZANA Y COMETELA" la entiende correctamente, porque
 cuando el intrprete detecta un verbo terminado en "LA", "LAS", "LO", "LOS",
 "LE" o "LES", toma el verbo, y el nombre lo toma de la frase anterior. En
 el ejemplo, tomara "COMETE" como verbo, y el nombre sera "MANZANA".

     Otro concepto avanzado del intrprete es la gestin de las frases que
 van dirigidas a otros personajes del juego. En efecto, PROMETEO usa una
 sintxis especial para cuando el jugador quiere hablar con algn personaje.
 Esta consiste en usar comillas (") para delimitar aquello que se quiere
 decir al personaje, como por ejemplo: DI AL GUARDIA "DEJAME ENTRAR". Si
 tenemos "DEJAME" como verbo en el vocabulario, la frase ser correctamente
 entendida por el intrprete. Cmo lo hace?

     Ya sabemos que una frase se descompone en palabras componentes, y el
 intrprete lo que hace es almacenar los cdigos internos de las palabras
 en sus correspondientes ~banderas~ (hay una bandera para el verbo, otra para
 el primer nombre, otra para el segundo, etc...). Pues lo mismo hace con
 las palabras escritas entre comillas: hay una bandera para el verbo de la
 frase entre comillas, otra para el nombre, etc. Estas banderas, por
 supuesto, son distintas a las usadas por las palabras de la frase
 "principal".

     Posteriormente, en el cdigo fuente se debe haber previsto la circuns-
 tancia de que el jugador pueda hablar con el personaje. La tcnica habitual
 es usar la funcin ~analiza~.

:Vocabulario
^Vocabulario

     El vocabulario determina qu palabras entender el intrprete una vez
 se est jugando a la aventura. A su vez, y como consecuencia, determina
 las posibles frases vlidas que el jugador puede escribir para que el
 ~Intrprete~ le entienda.

     Cuando una palabra es inscrita en el vocabulario, automticamente le es
 asignado un cdigo interno, consistente en un nmero entero. Por tanto, para
 PROMETEO, una palabra no es ms que un nmero; el lexema de dicha palabra
 slo se usa en el momento en que el jugador teclea una frase, y entonces
 el ~Intrprete~ traduce dicha palabra y la sustituye internamente por su
 cdigo correspondiente.


^Sinnimos

     El caso es que una aventura en la que para hacer algo se tenga que
 buscar exactamente las palabras que el escritor pens, es algo horrible de
 jugar. Por eso, PROMETEO introduce el concepto de "sinnimo": una palabra
 es sinnimo de otra cuando, teniendo lexemas diferentes, tienen asignadas
 el mismo cdigo interno. Claramente se ve que dos palabras con el mismo
 cdigo sern tratadas internamente por PROMETEO "exactamente" de la misma
 forma, puesto que PROMETEO slo ve nmeros y no palabras. Es el ~Intrprete~
 el nico que ve diferencia entre ambas, diferencia que elimina en el momen-
 to en que las traduce a su correspondiente cdigo.

     El uso de los sinnimos enriquece enormemente la aventura, puesto que
 de esta forma el potencial jugador no tendr que buscar mientras juega
 exactamente aquella palabra que se le ocurri al escritor en el momento de
 escribir la aventura.


^Sintaxis del vocabulario

     El vocabulario de la aventura se expresa por la siguiente construccin
 sintctica:

%    vocabulario '{'
%        <tipo> <lexema> {, <lexema>}
%            ['=' '{' <lexema> {, <lexema>} '}'] ';'
%        {<tipo> <lexema> {, <lexema>}
%            ['=' '{' <lexema> {, <lexema>} '}'] ';'}
%    '}'

 donde <tipo> es una de las siguientes palabras reservadas:

     - verbo
     - adverbio
     - nombre
     - adjetivo
     - preposicion
     - conjuncion
     - nombre_verbo
     - direccion

     Hay que decir antes de nada que el compilador de PROMETEO es sensible al
 caso, lo que significa que distingue entre letras maysculas y minsculas.
 Por tanto, "vocabulario" no ser lo mismo que "VOCABULARIO" o que
 "Vocabulario". Adems, los lexemas de las palabras del vocabulario deben ir
 siempre en maysculas.

^---*---

%Caso especial

     Podemos hacer que un nmero de varias cifras sea tambin una palabra del
 vocabulario. Esto es til cuando hay un cdigo que el jugador tiene que
 teclear (Ej: "TECLEA 48572 EN EL ORDENADOR"), o algo similar. Para que el
 compilador sepa que es una palabra y no un nmero, hay que anteponer al nme-
 ro en cuestin una comilla simple ('), TANTO EN EL VOCABULARIO COMO EN EL
 RESTO DEL CODIGO FUENTE (Ej: "nombre '48572"). De esta forma, reconocer que
 se trata de un lexema especial, formado slo por nmeros. En el caso de que
 los nmeros vengan tras letras, como en "PEPE123", no es necesario poner la
 comilla.

^---*---

     El vocabulario empieza con la palabra clave "vocabulario", seguido de
 una lista de declaraciones de palabras encerrada entre llaves. Cada
 declaracin consta de un tipo de palabra (verbo, nombre, etc.) y una lista
 de lexemas separadas por comas, y terminada en un punto y coma. Opcional-
 mente, se pueden indicar los sinnimos de la ltima palabra de la lista.
 Para ello, se aade el signo '=', seguido de otra lista de palabras
 separadas por comas y encerradas entre llaves.

 Hay dos tipos de palabra especiales: "nombre_verbo" y "direccion". El tipo
 "nombre_verbo" indica "nombre convertible en verbo", y cuando una palabra es
 de ese tipo, quiere decir que es un nombre, pero que puede llegar a ser el
 verbo de una frase del jugador cuando ste no especifica ningn verbo en tal
 frase. Por otra parte, "direccion" es un caso particular de "nombre converti-
 ble en verbo", que lo que indica es que se trata de una orden de movimiento.
 Las palabras "direccin" son las que se deberan usar para las conexiones
 entre las localidades, ya que, cuando se teclea una direccin que no existe
 en la localidad actual, se emite el mensaje "No hay salida en esa direccin",
 en lugar de la usual "No puedo hacer eso", que en este caso es menos apropia-
 da.

     Un ejemplo de vocabulario sera el siguiente:

%    vocabulario {
%        verbo COGER = { ASIR, AGARRAR };
%        verbo DEJAR, ABRIR, CERRAR;
%        direccion NORTE = { N };
%        direccion SUR = { S };
%        nombre MANZANA, PUERTA, PAJARO = { PAJARITO };
%        adjetivo AMARILLO, CERRADA;
%        conjuncion Y, ENTONCES;
%    }

     La seccin de arriba declara, entre otros, el verbo "COGER" y le asocia
 los sinnimos "ASIR" y "AGARRAR". De esta forma, "COGER", "ASIR" y "AGARRAR"
 sern sinnimos y por tanto, tendrn el mismo cdigo dentro del vocabulario.
 Como puede apreciarse, dicho cdigo no hay por qu indicarlo, ya que lo
 gestiona PROMETEO internamente. Por otra parte, "NORTE", "N", "SUR" y "S" se
 declaran como direcciones.

     "MANZANA", "PUERTA" y "PAJARO" se declaran como nombres, y se le aade
 la palabra "PAJARITO" como un sinnimo de "PAJARO". Es decir, dentro de una
 declaracin, los sinnimos hacen referencia a la ltima palabra de la lista,
 en ste caso "PAJARO". El resto de las declaraciones son similares.

:Localidades
^Localidades

     Las localidades son las distintas reas en las que se divide el mapa
 geogrfico de la aventura. Para el ordenador, una aventura consiste en un
 determinado nmero de apartados o localidades que el jugador debe visitar.
 Representan en cierta forma las estancias del mundo imaginario en el que se
 desenvuelve la aventura, y cada una de ellas posee sus propias caracters-
 ticas particulares. Cada una posee una descripcin, una posible animacin
 grfica, un conjunto de conexiones (posiblemente vaco) a otras localidades
 y un posible conjunto de objetos visibles.

     Todas las localidades poseen su propia descripcin. La descripcin es
 un texto que informa al jugador de las caractersticas que la localidad
 posee, entre ellas: informacin sobre el decorado, personajes no jugadores
 que rondan por ella, y objetos directamente visibles por el jugador.

     Naturalmente, debe haber alguna forma de cambiar de localidad, ya que
 si no fuese as, de qu nos serviran cientos de localidades inconexas?
 La forma de comunicar unas localidades con otras se basa en las ~conexiones~.


^Sintaxis de la seccin de localidades

     En la seccin de localidades se expresan las distintas habitaciones de
 la aventura, con su descripcin y sus posibles conexiones entre ellas. La
 sintaxis sera la siguiente:

%    localidades '{'
%        <num> ':' <descripcion> [imagen <fichero>]
%            ['{' <verbo> ':' <num> {, <verbo> ':' <num> } '}'] ';'
%        {<num> ':' <descripcion> [imagen <fichero>]
%            ['{' <verbo> ':' <num> {, <verbo> ':' <num> } '}'] ';'}
%    '}'

     La seccin de localidades comienza con la palabra clave "localidades",
 seguida de una lista de declaraciones entre llaves. Cada declaracin consta
 de un nmero de localidad, seguida de dos puntos, seguida de la descripcin
 de esa localidad, una posible imagen indicada por la palabra reservada
 "imagen" y el nombre de un fichero, y finalmente un punto y coma.
 Adicionalmente, es posible incluir conexiones entre esa localidad y las
 otras, aadiendo una lista de conexiones entre llaves. Cada conexin tiene
 la forma "<verbo> ':' <num>", indicando que si estamos en esa localidad y se
 introduce un cierto verbo, el jugador se trasladar a la localidad dada por
 el nmero.

    Como ejemplo tenemos el siguiente:

%   localidades {
%       0 : "Esta es la localidad 0." imagen "PANTA0"
%           { NORTE : 1, SUR : 3 };
%       1 : "Estamos en la localidad 1."
%           { SUR : 0, ENTRAR : 2 };
%       2 : "La localidad nmero 2." imagen "PANTA2";
%       3 : "Esta es la localidad 3."
%           { NORTE : 0 };
%   }

     Hemos declarado cuatro localidades: la 0, la 1, la 2 y la 3, cada una
 con sus descripciones -las descripciones son irrelevantes en este ejemplo-.
 La localidad 0 lleva asociada una imagen de nombre "PANTA0". Por tanto,
 cada vez que el jugador entre en la localidad 0 y se describa, aparecer en
 pantalla la imagen -o animacin- includa en el fichero indicado. Adems, la
 localidad 0 posee dos conexiones: con "NORTE" se va a la localidad 1, y con
 "SUR" se va a la 3. La localidad 1 es anloga a la anterior, pero con otras
 conexiones y sin imagen. La 2 tiene imagen pero no conexiones, algo
 perfectamente posible y que posibilita el que el jugador se encuentre
 encerrado o algo as. La 3 es semejante a la 1.


^Las localidades especiales "llevado", "encima" y "no_creado"

     Antes que nada vamos a explicar cmo maneja internamente PROMETEO la
 gestin de los objetos llevados en el inventario, y encima del jugador como
 ropa. PROMETEO considera que el inventario del jugador es una localidad, y
 por tanto, los objetos que el jugador se lleva a su inventario (al cogerlos
 por ejemplo), realmente se trasladan hacia dicha localidad. Esa localidad
 tiene un nombre especial y se llama "llevado". De igual forma, los objetos
 que el jugador se pone encima (si son ropa) se trasladan a otra localidad
 distinta llamada "encima".

     Finalmente, la localidad "no_creado" es aquella en la que residen todos
 aquellos objetos que no han sido creados todava o han sido destrudos
 ~destruir~). Son aquellos objetos que no deben aparecer en la aventura hasta
 que sta alcance un cierto estado. Los objetos pueden aparecer con la orden
 ~crear~ o simplemente movindolos a otra localidad diferente con la orden
 ~colocar~.

     Indicar por ltimo que aunque son localidades como cualesquiera otras,
 realmente no tiene mucho sentido enviar al jugador a alguna de ellas (aunque
 el lmite del escritor de aventuras es su propia imaginacin, y quin
 sabe...).

:Conexiones
^Las conexiones entre localidades

     Las conexiones son enlaces lgicos que el creador de la aventura inser-
 ta entre dos ~localidades~ para que el jugador pueda moverse por ellas. El
 modo ms habitual de representar dichas conexiones consiste en indicar a
 qu localidad se llegara si partiramos de otra dada e indicramos una
 cierta direccin (generalmente tomada de los cuatro u ocho puntos cardina-
 les).

     Las conexiones automatizan el proceso de mover al jugador de una loca-
 lidad a otra. Cuando el jugador teclea una frase formada por un verbo,
 el ~Intrprete~ determina si en la localidad actual hay una conexin aso-
 ciada con ese verbo. Si es as, es que el verbo indica una accin de
 movimiento, y traslada al jugador automticamente a la localidad indicada
 por la conexin.


     Ver tambin: ~Localidades~

:Objetos
^Objetos

     El concepto de "objeto" puede ser el ms importante dentro del mundo
 de las aventuras conversacionales. La potencia y flexibilidad de un
 generador de aventuras, y la facilidad de uso y capacidad de expresin de
 una aventura radican principalmente en el tratamiento que hacen de los
 objetos.

     Un objeto es, como puede figurarse, todo aquello presente en la aven-
 tura y que es directamente manipulable por el jugador. En esta definicin
 deberamos eliminar, por ejemplo, a las puertas que pueden abrirse y
 cerrarse (que no son objetos, sino parte del decorado que se emula con
 banderas -ver ~Banderas~-), a menos que podamos cogerlas y
 llevarlas en nuestro inventario.

     Casi siempre (aunque hay excepciones) los objetos directamente manipu-
 lables aparecen justo despus de la descripcin de la localidad actual,
 con un mensaje del tipo "Tambin puedes ver:" (ver ~Mensajes~).
 Evidentemente, nada impide que hayan varios objetos en una misma localidad.

     Los objetos pueden ser cogidos, dejados caer, puestos encima y quitados
 (si son "ropa"), e incluso albergar dentro otros objetos (si son "contene-
 dores").

%Atributos

     Por atributos entendemos todas aquellas propiedades o caractersticas
 que sirven para describir un objeto y diferenciarlo de los dems. Ejemplos
 de atributos son: su nombre, su descripcin, su peso, su localidad inicial,
 su localidad actual, etc... Algunos son fijos: es el caso del nombre o la
 localidad inicial; otros son variables: pueden cambiar de valor a lo largo
 de la aventura, como su localidad actual, o incluso su peso.

     Tambin hay que tener en cuenta que el nombre de un objeto puede llevar
 asociado un adjetivo, ed decir, una palabra que termina de completar la
 referencia a dicho objeto. Por ejemplo, en una aventura, la "llave roja"
 sera un objeto distinto a la "llave amarilla".

%Tipos de objetos

     Los objetos podemos clasificarlos en tres grandes categoras:

%        - normales o generales

%        - contenedores

%        - ropa

     Hay que decir que los contenedores y las ropas son, en realidad,
 objetos normales a los que se han aadido ciertas caractersticas especiales
 que les dan sus propiedades particulares.

     Los contenedores son objetos que permiten, adems de todo lo que permite
 un objeto normal, almacenar objetos en su interior. Un clsico ejemplo sera
 el de una bolsa o un saco en el que se podran meter monedas o cualquier
 otra cosa.

     Las ropas son objetos que pueden ponerse o quitarse, como por ejemplo
 una camisa o unos pantalones. Dan un mayor realismo a la aventura, al
 permitir al jugador realizar acciones usuales con ste tipo de objetos,
 como ponrselos, quitrselos, etc...

     Finalmente, los objetos generales son precisamente aquellos objetos que
 no caen dentro de las otras dos clases, es decir, que no son contenedores
 ni ropa.

     Existe un objeto especial, que se trata como "fuente de luz" con inde-
 pendencia de su tipo. Este objeto es necesario en algunas ~localidades~,
 aquellas en las que se supone hay poca luz para ver nada, y por lo tanto no
 se describen cuando se entra en ellas. En ese tipo de ~localidades~ hay que
 llevar dicho objeto en nuestras manos para que podamos "ver", y de esa forma
 se produzca la descripcin de la localidad actual. Para simular luz y
 oscuridad, se usa una bandera especial (ver ~Bandera 0~).


^Sintaxis de la seccin de objetos

     Los objetos poseen un cierto nmero de atributos que deberemos
 indicar al compilador para representarlos con todas sus propiedades. Ello lo
 haremos con la siguiente construccin sintctica:

%    objetos '{'
%        <nombre> [<adjetivo>] <descripcion>
%            [peso <num>] [inicial <local>] [contenedor | ropa] ';'
%        {<nombre> [<adjetivo>] <descripcion>
%            [peso <num>] [inicial <local>] [contenedor | ropa] ';'}
%    '}'

     Si no se especifica el peso, se supone que el objeto tiene peso 1.
     Si no se indica la localidad inicial, sta ser ~no_creado~.
     Si no se especifica el tipo de objeto, ste ser de tipo normal.
     Debemos tener en cuenta que una cosa es el nombre y el adjetivo usados
 para referenciar al objeto, y otra cosa es la forma de describir el objeto
 al jugador. Una manzana verde puede referenciarse con el nombre "MANZANA" y
 el adjetivo "VERDE", y su descripcin podra ser algo como "La jugosa
 manzana de color verde". Podra decirse que el nombre y el adjetivo sera la
 forma que tiene PROMETEO de hacer referencia a un cierto objeto, mientras que
 la descripcin sera la forma en que el jugador "ve" dicho objeto. Como
 puede observarse, el adjetivo es opcional, y puede omitirse si es necesario
 en la prctica, hay pocos objetos que necesiten adjetivos para
 diferenciarlos de los dems.

     Tras la descripcin vienen atributos como el peso del objeto (un
 nmero entero), y su localidad inicial, es decir, la localidad en la que
 aparecer el objeto al comienzo de la aventura. Adems de las ~localidades~
 anteriormente creadas, tenemos otras tres ms que, sin ser ~localidades~
 estrictamente hablando, se usan para situar mejor a los objetos. La
 localidad ~no_creado~ se usa cuando no que requiere que el objeto est
 incialmente en una localidad concreta. (A esta localidad se le suele llamar
 a veces el "limbo".) Otra sera la localidad ~llevado~, lo que hace que
 dicho objeto est inicialmente en el inventario del jugador. Finalmente, la
 localidad ~encima~ (slo para objetos de tipo ~ropa~) indica que dicho
 objeto debe aparecer puesto encima por el jugador, como su camisa o sus
 zapatos.

     Estas tres ~localidades~ ms siempre existen y pueden usarse en
 cualquier contexto en el que se necesite un nmero de localidad.

     Si a la declaracin se le aade la palabra reservada "~contenedor~",
 esto indicar que dicho objeto es un contenedor de otros objetos, o sea,
 que puede albergar dentro de s mismo a ms objetos. Si en lugar de eso, se
 le aade la palabra "~ropa~", indicar que dicho objeto puede ponerse y
 quitarse como si fuera ropa. Un objeto no puede ser contenedor y ropa a la
 vez.

     Como ejemplo, tenemos el siguiente trozo de cdigo:

%    objetos {
%        PAJARO "el canario de tu abuela" peso 3 incial 1;
%        MANZANA VERDE "la jugosa manzana de color verde"
%            peso 5 inicial llevado;
%        MANZANA ROJA "la manzana roja" peso 5 inicial 8;
%    }

     Hemos declarado un pajaro que va a ser representado en la aventura por
 el nombre "PAJARO" (dicho nombre debe aparecer en el ~vocabulario~). Si, por
 ejemplo, tenemos a "CANARIO" como sinnimo de "PAJARO", podemos poner uno
 cualquiera de los dos, ya que la tabla de objetos recuerda el cdigo del
 objeto y no su lexema. Tambin vemos que hay dos manzanas que, para
 distinguirlas, le ponemos dos adjetivos diferentes. Cada una de ellas est
 en una localidad diferente  la verde la lleva el jugador inicialmente,
 mientras que la otra aparecer en la localidad 8 , y tienen (en este caso)
 el mismo peso.

:Mensajes
^Mensajes de respuesta

     Los mensajes de respuesta son la forma que la aventura tiene de
 decirle algo al jugador. Hay dos tipos de mensajes de respuesta: los
 mensajes del usuario, que se imprimen usando ~"mensaje"~ seguido de un ";",
 y los mensajes del sistema, que aparecen de forma automtica ante ciertas
 situaciones.

     Tpicamente, son cadenas de caracteres (con una longitud mxima de
 2 Kb) y opcionalmente, algunos cdigos de control intercalados (ver
 ~Cdigos especiales~). Estos mensajes, junto con las descripciones de las
 ~localidades~ y los ~objetos~, son la nica fuente de informacin para el
 jugador, y por tanto deben ser cuidados con mimo por parte del escritor.
 A su vez, los ms importantes son los mensajes del usuario, que aparecen
 cuando el escritor requiere dar informacin al jugador en un momento dado.
 Como una aventura conversacional es bsicamente informacin textual, se
 ve rpidamente que los mensajes del usuario son la parte ms importante
 desde el punto de vista de la escritura de la aventura.

     Por otra parte, los mensajes del sistema son menos importantes, pero
 quizs ms difciles de entender. Si quieres saber ms sobre ellos, mira
 en ~Mensajes sistema~.


^Sintaxis de la seccin de mensajes del sistema

     La seccin de mensajes del sistema tiene la siguiente sintaxis:

%    sistema '{'
%        <num> ':' <descripcion> ';'
%        {<num> ':' <descripcion> ';'}
%    '}'

     Los mensajes del sistema son opcionales: si no se incluyen, se tomarn
 mensajes por defecto. Tambin es posible especificar slo alguno de ellos,
 dejando el resto por defecto.

     En el cdigo, se puede forzar la aparicin de un mensaje del sistema
 usando para ello la sentencia ~mensis~.


     Ver tambin: ~Mensajes iniciales~

:Seccin de cdigo
^Seccin de cdigo

     La seccin de cdigo la forma el lenguaje usado para describir el
 sistema de procesamiento. Es un lenguaje de programacin imperativo,
 estructurado y procedimental, ya que divide la tarea a realizar en trozos
 ms pequeos. Hay que considerar a la tabla de respuestas como el proce-
 dimiento "padre" o raz, es decir, aquel que llama a los dems y comienza
 toda la ejecucin. Cuando el intrprete reconoce una cierta entrada del
 usuario, busca en la tabla de respuestas una entrada que concuerde con
 ella. Cuando la encuentra, empieza a ejecutar el cdigo correspondiente,
 como si fuera la llamada a un procedimiento en cualquier lenguaje proce-
 dimental.

     Podramos dividir a estos procedimientos en dos tipos: ~respuestas~ y
 ~subrutinas~. Las respuestas son las primeras en ejecutarse, como consecuen-
 cia de la llamada efectuada por el intrprete. Una respuesta, por tanto, es
 un conjunto de instrucciones que se ejecutan cuando la entrada del jugador
 concuerda con su cabecera  su verbo y su nombre . Las subrutinas slo sern
 ejecutadas si son llamadas desde una respuesta u otra subrutina.

:Respuestas
^Respuestas

     Puede pensarse en una respuesta como un procedimiento cuyo nombre
 est formado por un verbo y un nombre, de forma que el jugador, cuando
 escribe una cierta sentencia, activa el procedimiento cuya cabecera est
 formada por el verbo y el nombre de dicha sentencia.


^Sintaxis de la seccin de respuestas

     La sintaxis para describir las respuestas es la siguiente:

%    verbo nombre '{' sentencia; {sentencia;} '}'
%    {verbo nombre '{' sentencia; {sentencia;} '}'}

     Como se ve, tiene mucha similitud a la definicin de una funcin en C o
 Pascal, con la diferencia de que el nombre de dicha funcin es en realidad
 un par formado por un verbo y un nombre. Las sentencias son las instruc-
 ciones que indican las acciones a realizar. Hay muchas acciones diferentes,
 que sirven para manipular objetos, moverse entre localidades, y verficar y
 cambiar el estado de una bandera, entre otras cosas.

     Un ejemplo de sto sera:

%    COGER MANZANA {
%        si (llevado?(MANZANA))
%            "Ya tienes la manzana";
%        sino
%            "Has cogido la manzana";
%    }

%    ABRIR PUERTA {
%        si (b78 = 1) {
%            b78 := 0;
%            "Cierras la puerta lentamente";
%        } sino
%            "La puerta ya est cerrada";
%    }

     Este cdigo incluye dos entradas en la tabla de respuestas: una para
 "COGER MANZANA" y otra para "ABRIR PUERTA". Las acciones a ejecutar se
 compilan y su cdigo es puesto en una zona de cdigo objeto. El campo de
 direccin de las entradas de la tabla sern las direcciones de comienzo del
 cdigo objeto generado para cada una de las respuestas.

     Lo anterior significa: si el jugador teclea la sentencia
 "COGER MANZANA", el intrprete debe ejecutar los pasos indicados entre
 llaves. Estos dicen que si el jugador ya lleva la manzana, debe emitir el
 mensaje de usuario tal; en caso contrario, debe emitir el cual. Para
 "ABRIR PUERTA", si la bandera 78 est a 1, ponerla a 0 y emitir el mensaje
 correspondiente; en otro caso, emitir el otro.


^Las palabras especiales "*" y "_"

     A veces no hace falta saber el nombre, sino slo el verbo. Otras veces,
 ocurre al contrario. Incluso hay veces que sera interesante que una
 respuesta se activase siempre independientemente de la entrada del jugador.
 Para eso, tenemos dos palabras especiales: "*" y "_". Los dos tienen el
 mismo significado: significan "cualquier palabra". Por tanto, si en la
 respuesta no es necesario saber el nombre, sino slamente el verbo, se
 podra poner (por ejemplo):

%    COGER * {
%        "No hay ningn objeto aqu para coger";
%    }

     La respuesta anterior se ejecutara siempre que el jugador escribiera
 el verbo "COGER" e independientemente del nombre que escriba (incluso si
 no escribe ningn nombre).

     Una respuesta que siempre se activara sera:

%    * * {
%        "Esto siempre se imprime";
%    }

     La diferencia entre "*" y "_" es que se busca antes el "*", luego la
 palabra tecleada por el jugador (si la ha tecleado), y finalmente el "_".
 Es fundamentalmente importante en los casos como el sgte.:

%    COGER * {
%          "Coges un objeto:\n";
%    }

%    COGER LAMPARA {
%          "Al coger la lmpara descubres una moneda.\n";
%    }

%    COGER _ {
%          autoc;
%    }

     Si el jugador teclea el verbo "COGER", primero se ejecutara la
 respuesta "COGER *", luego la respuesta "COGER LAMPARA" slo si el nombre
 tecleado es "LAMPARA", y por ltimo la respuesta "COGER _". Hay otros
 casos en los que resulta especialmente interesante el uso conjunto de
 "*" y "_".

     Tambin tener en cuenta que el orden en el que se escriben las
 respuestas en el cdigo fuente no influyen en absoluto en el orden en el
 que se ejecutan. Eso quiere decir que podramos haber alterado el orden
 de las respuestas anteriores y el resultado hubiera sido el mismo.


:Subrutinas
^Subrutinas

     La tabla de subrutinas es semejante a la tabla de respuestas, con una
 diferencia: se hace referencia a ellas mediante un nombre o identificador, y
 no mediante un verbo y un nombre. Slo se activan mediante una llamada desde
 otro punto del programa.


^Sintaxis de la seccin de subrutinas

     Su sintaxis es:

%    [subrutina identificador '{' sentencia; {sentencia;} '}'
%    {subrutina identificador '{' sentencia; {sentencia;} '}'}]

     Como se ve, es una seccin opcional.

     Cada subrutina comienza con la palabra clave "subrutina", seguida de un
 identificador -el nombre de la subrutina- y una lista de instrucciones
 encerradas entre llaves. Pueden haber varias subrutinas, o una, o ninguna
 -la tabla de subrutinas es opcional, pero rara vez deja de utilizarse.

     Un ejemplo de tabla de subrutinas sera la siguiente:

%    subrutina Perro {
%        si (verbo?(COGER) y nombre1?(PERRO))
%            "Intentas coger al perro, pero ste no se deja";
%        b14 := 0;
%        b13 := b13 + 1;
%        si (b13 >= 30)
%            b13 := 0;
%    }

     En este caso, tenemos una sola subrutina en la tabla. Una subrutina se
 activa con la orden "~llama~(nombre_subrutina);". Por tanto, para activar la
 subrutina anterior, se deber incluir en alguna parte del cdigo la
 sentencia "~llama~(Perro);".


^Las subrutinas Process1 y Process2

     Hay dos subrutinas especiales, llamadas Process1 y Process2. Son
 especiales, porque PROMETEO las llama automticamente en dos situaciones
 distintas:

     Process1: Se llama tras describir la localidad actual.
     Process2: Se llama inmediatamente antes de pedir la entrada al jugador.

     Son dos subrutinas opcionales, pero lo normal es que se incluyan
 siempre. Process1 suele usarse para ampliar la descripcin de la localidad
 actual, con cosas tales como personajes presentes. Process2 es como el
 turno de la aventura, y suele usarse para acciones automticas del estilo
 de movimientos de personajes, suelos que se derrumban bajo tus pies, etc.

     Con Process1 hay que tener un cuidado especial si se incluye en ella
 una accin "~describe~". Como se sabe, Process1 se llama automticamente
 tras describir una localidad; por tanto, cada vez que se ejecute "describe"
 tambin se har implcitamente una llamada posterior a la subrutina
 Process1. Es decir: si inclumos "describe" dentro de Process1, es posible
 que se produzca un bucle sin fin por llamarse una a la otra. Para evitar
 esto, hay que proteger la accin "describe" con algn condicional, de
 manera que no siempre se ejecute (por ejemplo, el caso tpico es ejecutar
 un "describe" nicamente cuando se est en la localidad 0 -la de comienzo-
 y se mueve al jugador a la localidad de inicio de la aventura; as, como
 el jugador nunca estar ms en la localidad 0, no se ejecutar ms la
 accin describe, y por tanto Process1 tampoco).

%    Ejemplo:

%    subrutina Process1 {
%        si (esta?(0)) {   // Si el jugador est en la localidad inicial.
%            tecla;	   // Espera una tecla.
%            mueve(1);     // Mueve al jugador a la localidad 1.
%            describe;     // Describe dicha localidad. Implica llamar otra
%        } sino {          // vez a Process1, pero ahora se ejecutar la rama
%            ...           // correspondiente al "sino". Se supone que aqu
%            ...           // ya no hay otra accin "describe".
%        }
%    }


^La subrutina Timeout

     Una subrutina opcional, llamada Timeout, se llama automticamente
 cada cierto tiempo prefijado por la ~bandera 11~. Esta bandera especifica,
 en segundos, cada cunto tiempo se llama a dicha subrutina. Si su valor es
 cero, no tiene ningn efecto.

     El tiempo empieza a contar cuando se le pide una entrada al jugador, y
 ste no escribe. En el momento en que escribe algo, se empieza a contar
 desde cero.

     Es importante saber que si la subrutina termina con un "hecho" o un
 "no_hecho", entonces se perder la entrada actual del jugador y se pedir
 otra nueva. Si por el contrario se termina con un "retorno", la entrada
 actual no sufrir cambios, y en el caso de que no se imprima ningn mensaje
 en la pantalla, el jugador ni siquiera se enterar de que se ha ejecutado
 una subrutina.

%    Ej: subrutina Timeout {
%            "\nEl tiempo pasa...";
%        }

%    Ej: subrutina Timeout {
%            sonido("PASOS");
%        }      // Sin "hecho" o "no_hecho", el jugador sigue como si nada


     Ver tambin: ~llama~  ~retorno~  ~hecho~  ~no_hecho~

:Sentencias:Expresiones
^Sentencias y expresiones

     - Una sentencia es una accin vlida de PROMETEO terminada en un punto
       y coma ";". A su vez, las estructuras de control "Secuencia", "si",
       "mientras" y "evaluar" tambin son consideradas sentencias por s
       mismas, y pueden ser utilizadas en cualquier contexto en el que se
       necesite una sentencia.

     - Una expresin es una combinacin de operadores y de nmeros colocados
       de manera consistente. Por operadores entenderemos los aritmticos
       ("+", "-", "*", "/"), los lgicos ("y", "o", "no"), los relacionales
       ("<", "<=", ">", ">=", "=", "<>") y las funciones de uno o varios
       argumentos. Toda expresin denota un nmero entero.

       Adems, el lexema de un verbo denota el cdigo interno de dicho ~verbo~
       (cosa que se puede usar para comparar lo que ha dicho el jugador con lo
       que debera de decir), y el nombre y el posible adjetivo de un objeto
       referencia al cdigo de dicho objeto. Lo dicho anteriormente para
       "verbo" tambin es vlido para "~nombre_verbo~" y "~direccion~".

       Por ltimo, cuando una cadena de caracteres se usa como parte de una
       expresin, el valor que devuelven es el nmero interno (el puntero) de
       dicha cadena en la tabla de cadenas y mensajes. Eso quiere decir que
       podemos almacenar una cadena en una bandera (realmente un puntero a
       ella), para luego poder ser usada en sentencias como ~imagen~ o
       ~sonido~.


     Tendremos en cuenta las siguientes pautas:

     1.  Cuando decirmos "localidad", estamos haciendo referencia a un nmero
         vlido de localidad; "objeto" es el cdigo de un cierto objeto; y
         "palabra" es el cdigo interno de la palabra, no su lexema.
         Los cdigos de las palabras y los objetos no son visibles al
         escritor de aventuras (ni falta que hace), pues en lugar de ello
         se usa directamente el nombre del objeto o el lexema de la palabra.
         Por otra parte, "fichero" es una cadena de caracteres que indica
         el nombre de un fichero MS-DOS, y "sonido" es una cadena que hace
         referencia al nombre de un sonido grabado en la librera de sonidos.
         Cualquier otro concepto se considerar un nmero (ej: "contenedor"
         es el cdigo de un objeto contenedor, y "nmero" es un n entero
         comprendido entre -32768 y 32767).

     2.  Una bandera se identifica mediante la letra "b" minscula seguida
         inmediatamente por un nmero, como "b38". El contenido de una
         bandera es un nmero entero, y adems las banderas son las nicas
         unidades lxicas que pueden aparecer en la parte izquierda
         -lvalue- de una asignacin. Por tanto, el contexto dir cundo
         una bandera evala a una direccin y cundo a un contenido.

     3.  Un objeto se indica mediante su nombre y su posible adjetivo. En
         cualquier lugar en el que se necesite una expresin, puede usarse el
         nombre de un objeto. Este evaluar al cdigo de dicho objeto. Por
         tanto, la expresin "MANZANA VERDE" es perfectamente vlida, y
         hace referencia al cdigo de dicho objeto.
         De igual forma, el lexema de un verbo (por ejemplo, "COGER"), hace
         referencia directamente al cdigo de dicho verbo, y puede ser usado
         en expresiones como un operando entero ms (o sea, puede ser compa-
         rado con otro nmero -o verbo-, puede ser asignado a una bandera,
         etctera).

     4.  Una localidad se referencia por su nmero o por una de las tres
         siguientes palabras clave: llevado, encima, no_creado. Estas tres no
         son ms que una forma distinta de llamar a tres localidades
         especiales y son localidades que siempre existen, por lo que el
         escritor no tiene que declararlas. (Ms informacin en la seccin
         ~Localidades~).

     Es importante indicar que todas las sentencias (menos las estructuras de
 control) acaban en punto y coma. Es decir, el punto y coma es un terminador
 de sentencias, como en C.

     Es posible interaccionar con los objetos, con las banderas, con las
 localidades, etc., lo que permite expresar las acciones a realizar en
 trminos comunes y abstractos. Ayuda a esconder los detalles de implementa-
 cin (en ningn momento se hablan de las estructuras de datos, por ejemplo),
 y de esta forma el escritor no se tiene que preocupar por el "cmo", sino
 por el "qu".

:Flujo de control
^Flujo de control

     Vamos a describir de forma ms precisa el conjunto de acciones que
 efecta el mdulo run-time a la hora de ejecutar el cdigo de la aventura.
 Son un total de 7 puntos, de los cuales el primero slo se realiza una vez
 -al entrar en la aventura-, mientras que los otros seis forman un bucle, de
 manera que cada iteracin coincide con un turno del jugador.

%    1.  INICIALIZACION DEL SISTEMA
%    ------------------------------
     - Las banderas son todas puestas a cero, excepto:
       La ~bandera 37~, la cual contiene el nmero de objetos llevables,
       se pondr a 4.
       La ~bandera 52~, lleva el mximo peso permitido y se pone a 10.
       La ~bandera 1~, lleva el nmero de objetos llevados pero no
       puestos encima.
     - Hay que tener en cuenta que con la limpieza de las banderas, el juego
       siempre comenzar en la localidad 0. Esto es porque la ~bandera 38~,
       que lleva la localizacin actual del jugador, est ahora a cero.
     - Por ltimo, mueve los objetos a sus lugares iniciales.

%    2.  DESCRIPCION DE LA LOCALIDAD ACTUAL
%    --------------------------------------
     - Si la ~bandera 2~ no est a cero, ser decrementada en 1.
     - Si est oscuro (la ~bandera 0~ no es cero) y la ~bandera 3~ no es
       cero, entonces la ~bandera 3~ es decrementada. Si est oscuro y la
       ~bandera 4~ no est a cero y el objeto 0 -la fuente de luz- est
       ausente, la ~bandera 4~ es decrementada.
       Todo esto se hace para proporcionar al escritor unos indicadores
       automticos que les sirva para manejar las habitaciones oscuras.
     - Se hace una limpieza de pantalla si el contenido del modo de pantalla
       (el que contiene la ~bandera 40~) no est a 1.
     - Si est oscuro y el objeto 0 est ausente, entonces el mensaje del
       sistema n 0 (el que se refiere al mensaje "Est muy oscuro para
       poder ver") se imprime.
       Si no, la imagen de la localidad (si la tiene) es presentada en
       pantalla, y aparecer la descripcin de la localidad en texto.

%    3.  BUSQUEDA EN LA TABLA DE ~SUBRUTINAS~: Process1
%    ------------------------------------------------
     La subrutina Process1 se utiliza principalmente para que contenga
     aquellas entradas que van a aadir informacin extra a la descripcin
     actual de la localidad. Por ejemplo, detalles sobre puertas abiertas,
     objetos presentes, etc.

     A partir de aqu, entramos en el bucle principal del intrprete, que
     actuar en cada paso de tiempo -siempre que se haya extrado una
     sentencia del jugador- y tambin con las respuestas a las rdenes del
     jugador.

%    4.  BUSQUEDA EN LA TABLA DE ~SUBRUTINAS~: Process2
%    ------------------------------------------------
     Esta subrutina contiene el control principal del turno de PROMETEO
     durante el juego. Se usa para implementar los movimientos y las acciones
     de los personajes. Tambin se usa en los eventos incontrolados, como son
     puentes que se derrumban, cosas que se caen, etc.

%    5.  OBTENER LA ENTRADA DEL JUGADOR
%    ----------------------------------
     - Si la ~bandera 7~ y la ~bandera 8~ no estn a cero, son decrementadas.
       Si est oscuro (la ~bandera 0~ no est a cero) y la ~bandera 9~ no
       est a cero, entonces tambin es decrementada. Si est oscuro y la
       ~bandera 10~ no est a cero, ser decrementada si el ~objeto 0~ est
       ausente.
     - Ahora el parser va a extraer una entrada y convertirla en sentencias.
       Si el bffer de input est vaco, se busca un nuevo input del jugador
       por medio de la impresin del mensaje adecuado y una posterior
       llamada a la rutina de input. El mensaje ser el que contenga la
       ~bandera 42~. Si tiene un valor igual a 0, los mensajes se
       seleccionarn de entre los nmeros 2, 3, 4 y 5 con probabilidad 0.30,
       0.30, 0.30 y 0.10, respectivamente.
     - La entrada se convierte en una sentencia convirtiendo cualquier
       palabra que est presente en ella -y que est en el ~vocabulario~- a su
       cdigo de palabra y ponindola luego en la bandera requerida. Si no
       se encuentra una sentencia vlida, entonces el mensaje del sistema
       n 6 ("No te entiendo") aparece y vuelve a activar la subrutina
       Process2.

%    6.  BUSQUEDA EN LA TABLA DE RESPUESTAS
%    --------------------------------------
     - El n de turnos se almacena en la ~bandera 31~. Este turno entonces se
       incrementar en 1.
     - En la tabla de respuestas se busca una entrada que haga juego con el
       ~Verbo~ y el primer ~Nombre~ de la sentencia actual.
     - Si la bsqueda es satisfactoria, se llevan a cabo las acciones y
       luego se vuelve a activar la subrutina Process2.

%    7.  BUSQUEDA DE CONEXIONES
%    --------------------------
     Es importante destacar que las ~conexiones~ se buscarn despus de
     haber pasado por el sistema de procesamiento -la tabla de ~respuestas~
     y la de ~subrutinas~-. Por ello, cualquier conexin construda "a mano"
     en el sistema de procesamiento puede ser omitida en las ~conexiones~.
     Esto se hace para tener un mayor control sobre las ~conexiones~,
     impidiendo que el jugador pase de localidad si no tiene una cierta
     llave, etc.
     - Para la localidad actual, se busca en su lista de conexiones una
       palabra que haga juego con el verbo presente en la sentencia actual.
     - Si se encuentra una, entonces la localidad del jugador (llevada por
       la ~bandera 38~) se actualiza para que lleve ahora el nmero de
       localidad que est asociado con dicha palabra en la tabla. Luego se
       emite la descripcin de esa localidad. Si no se encuentra la
       palabra, PROMETEO imprimir el mensaje del sistema n 7 ("No puedo
       hacer eso"). De cualquier manera, se vuelve de nuevo a activar la
       subrutina Process2.
