Está en la página 1de 144

A Technical guide to:

DAAD Adventure Writer - Version 2


Release 1

A multi-machine adventure writing system.

Revised in November '91.

Traducido por Antonio J. Santos

(c) 1988/89/90/91 Infinite Imaginations

All Rights reserved. No part of this publication may be copied,


loaned, hired or reproduced in any form whatsoever including
electronic retrieval systems without the prior written consent of
the authors.
Contenido
1.0 Descripción
Un vistazo a los principios generales del sistema.

2.0 Contenido de los disquetes


Una descripción de los discos suministrados, y su contenido.

3.0 Ejemplo práctico


Tomando un archivo y creando una aventura en cada máquina.

4.0 El Interprete
Descripción del funcionamiento de los intérpretes.
4.1 Los CondActos
Descripción completa de los CondActos en el sistema.
4.1.0 Terminos usados en esta sección
4.1.1 Indirección
4.1.2 Condiciones
4.1.3 Acciones
4.2 Versiones del interprete por máquinas
Detalles sobre los intérpretes específicos de cada máquina.
4.2.0 IBM
4.2.1 Spectrum 48/128
4.2.2 Amstrad CPC 464/664/6128
4.2.3 CBM 64/128
4.2.4 MSX
4.2.5 Atari ST
4.2.6 Amiga
4.2.7 PCW 8000 & 9000 series
4.3 Errores
Informes de error generados por los intérpretes.
4.4 El parser
Analisis de los aspectos de los parsers
4.4.1 El parser ingles
4.4.2 El parser español
4.5 Las Banderas
Desglose detallado del uso de una bandera.

5.0 El Archivo de código fuente (.SCE)


Formato de un archive de código fuente.
5.1 Sintaxis del código Fuente
5.2 Precompilador (#) commandos

6.0 El Compilador ("DC")


Uso del programa para convertir el Archivo fuente en un archivo
de base de datos.
6.1 Línea de comandos
6.2 Errores y advertencias
7.0 Los editores gráficos
Uso de los editores gráficos para el sistema.
7.1 Drawstring ("DG")
7.1.1 The Main Menu
7.1.2 The Graphics Menu
7.1.3 The Characters Menu
7.1.4 The Window menu
7.1.5 The Text Colours Menu
7.1.6 Drawstring Editor Basic Operation
7.1.7 The Spectrum and MSX
7.1.8 The Amstrad CPC
7.1.9 The Commodore 64
7.2 Image ("DMG")

Apendices
A – Conjunto de caracteres
B – Conexión entre ordenadores
C – EXTERN
D – Lista de los programas del DAAD V2
E – DAAD Notas del 2018
Sección 1 - Descripción

El principio básico de DAAD es proporcionar un sistema en el que un


juego pueda ser escrito sólo una vez y luego trabaje en todas las
máquinas. Por supuesto, esto no es realmente posible sin sacrificar
facilidades. Así que se ha llegado a un compromise donde puede
necesitar hace cierto trabajo adicional para permitir que cada máquina
se utilice de la mejor manera. El núcleo del diseño del juego sigue
siendo independiente reduciendo tiempo de desarrollo y depuración
considerablemente.

DAAD es un lenguaje de programación especialmente diseñado para la


creación de Juegos de Aventuras. Es una adaptación libre de los
sistemas QUILL y PAW de Gilsoft, y la familiaridad con su
funcionamiento puede ser útil. Las principales diferencias respecto a
estas utilidades son las siguientes:

 DAAD Utiliza el un sistema compilador similar al PAW de CPC.

 La base de datos DAAD puede ser compilada para diversos ordenadores.


Así, el mismo juego se puede ejecutar en todos los equipos
compatibles con poco o ningún cambio.

 El lenguaje de Procesos DAAD es mucho más avanzado con muchas


características de lenguajes tradicionales, como los bucles y la
indirección, aunque carece de varios de los comandos específicos de
la máquina para PAW.

 Cuesta un montón de pasta comprar una copia!

Hay varios términos utilizados en este texto que es preciso definir:

Máquina de Desarrollo: El ordenador donde se escribe el juego. Hay


versiones de desarrollo de DAAD para IBM y Atari ST (aunque sólo en IBM
tiene un conjunto completo de utilidades por el momento).

Máquina Objetivo: El ordenador donde finalmente se ejecuta el juego.


DAAD soporta las siguientes máquinas:
- IBM (con Soporte para MDA,CGA y EGA)
- Sinclair Spectrum 48k/128k
- Amstrad CPC (toda la gama)
- Commodore 64 (y 128 en modo64)
- MSX con al menos 64K de RAM
- Atari ST (toda la gama)
- Commodore Amiga (toda la gama)
- Amstrad PCW 8000/9000 Series
DAAD puede dividirse en cinco areas funcionales:

1/ El Código Fuente
EL código fuente (.SCE files) es una colección de tablas, que
contiene toda la información que define un juego de aventuras. Está
en formato de archivo de texto ASCII.

2/ El Compilador
Este se instala solamente en la maquina de desarrollo.
El Compilador comprueba si hay errores en el código Fuente y lo
convierte en una base de datos DAAD (archivo .ddb) para la máquina
especifica que el Interprete pueda entender.

3/ Los Interpretes
Son el verdadero corazón del DAAD. Hay un intérprete por cada
ordenador soportado por sistema DAAD. Ejecuta los datos de la base
de datos utilizando su colección de rutinas para realizar las tareas
necesarias para los juegos de aventura. Proporciona el aspecto
independiente de la máquina del DAAD.

4/ Los Editores Gráficos


Hay dos tipos de editores gráficos:

a) Drawstring
Estos utilizan una forma de dibujo conocido como PLOT, LINE y
FILL, que permiten gráficos muy complejos que utilizan muy
poca memoria. Se utilizan en ordenadores de 8 bits. Tenga en
cuenta que existen editores gráficos para cada tipo de
máquina, excepto MSX, ya que MSX puede utilizar los gráficos
de Spectrum casi sin cambios.

b) Image
Estos gráficos se dibujan utilizando un software gráfico
externo, que porporcionan las funciones necesarias para
ensamblar las imagenes en una base de datos de gráficos para
los Interpretes. Este sistema se utiliza en ordenadores de 16
bits. Se pueden producir con cualquier paquete gráfico, pero
DEGAS PI1 en ST es el formato de archivo estándar aceptado por
los programas.

5/ Utilidades y Comunicaciones
Estas son una colección de programas instaladas, por lo general en
la máquina de desarrollo y cuando sea necesario en el la máquina
objetivo, para permitir la conversión y envío de datos, entre las
máquinas
El ciclo principal para desarrollar una aventura de texto con DAAD
puede visualizarse de la siguiente manera:

Inicio
|
¡Idea del juego!

Editar fichero .SCE


usando un editor de texto
|
Compilar a .DDB
|
_ No_ Testeo con
INTS/ED
¿Funciona?

Si

Compilar .DDB
para cada máquina
|
Enviar a cada
máquina
|
Hecho

Los gráficos siguen un proceso ligeramente diferente. Se dividen en los


dos grupos mensionados anteriormente:

Loa pasos a seguir, siguiendo las flechas desde la máquina Fuente a la


máquina objecto, son normalmente:-

ST Amiga

EGA o CGA

CGA
PC CPC
PCW CGA old
old

Spectrum MSX

CBM 64

Las dos partes, la base de datos de gráficos y la base de datos de


texto se combinan en la máquina objeto. Aunque en el caso de las
máquinas de 16 bits donde se utiliza el disco para contener los
gráficos los archivos permanecerán separados.
Sección 2 - Contenido de los disquetes

Los discos suministrados son los siguientes y, por supuesto, debes


hacer una copia y guardar los originales en un lugar seguro. También
resultará útil para copiar algunos archivos a discos de trabajo (o
instalar todo el sistema en un disco duro) para cada juego, esto se
analiza al final de esta sección.

PC (360K, 5.25 inch)

Disk 1 – Developer

Contiene los principals archivos que permiten que el trabajo de


desarrollo sea llevado a cabo en un PC.

DC EXE The Compiler


DMG EXE PC EGA/CGA gestor gráfico – Este gestor ha sido
superado por el DMG de -ST. Se sigue incluyendo para
Permitir el Soporte a PCW. Será descartado en versiones
futuras.
OBJ (dir) Contiene los ficheros objetos para hacer los
diferentes tipos de interpretes DAAD.
BLANK SCE La base de datos estándar vacía.
BLANK DDB Versión compilada de la base de datos.
SYMBOLS SCE Archivo #include que define simbolos del Sistema comunes
SYMBOLS ASM Archivo que define simbolos para su uso en Ensamblador
SYMBOLS Z80 Simbolos extras especificos para el Z80
SYMBOLS 652 Para el procesador 6502.
MACROS Z80 Definition of MACROS for an assembler EXTERN
EXTERN ASM A MASM format source file, the mimimum 8086 ext.
CHARS ASM A MASM file containing NOOFPARTS, last in link

Disk 2 - Utilities

DAAD se suministra con una amplia gama de utilidades para llevar a cabo
diversas tareas. Los subdirectorios de este disco reflejan ese
propósito.

GRAPHICS (dir) Utilidades relacionadas con el trabajo gráfico.


DRAW (dir) Las relacionadas con las máquinas 'drawstring'.
DSC COM Spectrum -> CBM graphics converter
DSM COM Spectrum -> MSX graphics converter
DSA COM Spectrum -> CPC graphics converter
DCA COM Compress Amstrad Graphics (for old databases)
DCS COM Compress Spectum Graphics (old databases)
Nota: DCA y DSA se han incorporado en los programas DG. Se
incluyen para permitir la compression de versions antiguas de
imágenes o bases de datos.
PIXELS (dir) Para máquinas 'image' (PC/ST/AMIGA/PCW)
CACGA COM Convert CPC Mode 2 to CGA screen image
CSTEGA EXE Convert/Display ST .PI1 to/on EGA mode 13
CSTVGA EXE Convert/Display ST .PI1 to/on VGA mode 13
CSTA COM Convert ST DEGAS (PI1) to CPC Mode 2
CSTAM EXE Convert ST DEGAS (PI1) to Amiga bitmap
CSTS EXE Convert ST DEGAS (PI1) to Spectrum
CST3PCW EXE Convert ST DEGAS HiRes (PI3) to PCW
CST1PCW EXE Convert ST DEGAS LoRes (PI1) to PCW
n.b. A CSTCGA is in preparation, but CSTA and CACGA together can be
used to convert an ST .PI1 to CGA screen!

COMMS (dir) Programas para enviar y recibir archivos.


XMP EXE XModem+ comms using RTS/CTS (Spectrum mainly)
GOCBM COM Send files to CBM (needs special receiver)
PPM COM Send and play games using PDS on MSX
AAH COM Add Amstrad Header to a file
ASH COM Add Spectrum +3 Header to a file
RAAH COM Remove Amstrad Header from a file
RASH COM Remove Spectrum +3 Header from a file
For communication with Atari, Amiga and CPC you use commercial or PD
comms packages

SQUEEZE (dir) Programas de compresión relacionados


FINDTOK EXE Analise a FINDTOK file for common tokens

RECOVER (dir) Ayuda si has eliminado el código fuente


LOOK COM Permite examiner parte de un texto de un .DDB.

Los directorios restantes contienen utilidades que no tienen un uso


directo, pero pueden resultar en algún momento útil.

PRINT (dir) Dealing with the printer


SPP COM Sets the printer to IBM m ode by software
WP (dir) For wordprocessing use
STRIP COM Removes any spaces from the end of a line
ASC1ST COM Converts the major part of 1st word text to ASCII ASM
(dir)
MHEX COM Make a HEX file from data
GENTASM COM Convert HISOFT GENS format to 2500AD.

SPECTRUM (DISCiPLE 800K, 3.5 inch/Spectrum +3 3")

XM LOAD d1"xm" will start the XModem+ comms program (not+3) DG


LOAD d1"dg" will start the Spectrum graphics editor DS48GE
the graphics editor
DRE LOAD d1"dre" allows an English game to be run
DRS LOAD d1"drs" allows a Spanish game to be run.
DS48IS Spanish interpreter
DS48IE English interpreter
n.b. No special provision is made for the +3 at the moment. The
system is provided on both formats for mastering purposes.

CBM 64 (160K, 5.25 inch)

DG LOAD "dg",8,1 inicia el editor gráfico CBM.


DR LOAD "dr",8,1 inicia el programa receptor en paralelo
SDI The Spanish interpreter
EDI The English interpreter
LS1 los cargadores para cargar un juego en Español PART1/2
LS2

AMSTRAD CPC 464/6128 (160K, 3 inch)

Side 1 - Use under CPM (V3 on 6128 is recommended, although 2.2


should work)

DCPCIS Z80 The Spanish interpreter


DCPCIE Z80 The English interpreter
MCRF COM Make an AMSDOS 'RUN' program
UKM7AMS COM A public domain MODEM7 installed for CPC RS232
P11CPM3 EMS Patched version of CPM3 to allow Modem7.

Side 2 - For AMSDOS

DG BIN The CPC graphics editor. (RUN "dg from AMSDOS)


BLANK BIN empty graphics file for above

ST (720K, 3.5 inch)

SDIn PRG El interprete Español (nombre archivo de PART1-n)


EDIn PRG Veersión inglesa del interprete.
Las copias también se suministran con 'L' tras el núm. de partes. Estas
sólo permiten ejecutar el juego en LoRes.
DMG PRG Administrador de archivos gráficos
DMG RSC y su archivo de recursos

AMIGA (800K, 3.5 inch)

SDIn The Spanish interpreter (filename fixed at PARTn)


EDIn English version of the above

VT100 A public domain comms program


No hay editor gráfico para el Amiga, simplemente utilice el archivo ST.

PCW (160K, 3")

DPCWIS Z80 The Spanish interpreter


DPCWIE Z80 The English interpreter

Other Programs/Hardware

In addition to the programs supplied you will need or are


advised to obtain some of the following programs which will make life
easier.

QEDIT PC - Shareware Text editor (very good)

PROCOMM PC - Shareware comms program


3.5" DRIVE PC - Simple transfer to ST (recommended)
VT100 AMIGA - A comms program (included on DAAD disc as PD)
DOS2DOS AMIGA - Load and Save ST/IBM files on Amiga (better)

FLASH ST - Comms program (any one will do actually)


5.25 DRIVE ST - for transfer to PC (3.5" for PC is better)

FASTHACK CBM64 - High speed disk and file copier

De hecho una 720K external 3.5" para PC hará la transferencia más


simple que con un programa de communicaciones en ST y AMIGA (si tienes
DOS2DOS)! Un Atari ST lee y escribe sin problemas discos formateados a
720K de PC. Lo contrario no es cierto, por lo que hay que habituarse a
usar discos con formato PC si necesita transferir datos entre las
máquinas.

Instalación en el Disco Duro del PC de Desarrollo

El método más sencillo de instalar el paquete DAAD es crear un directorio


\DAAD y copiar el contenido de los discos 1 y 2 en el mismo. Puede que le
resulte útil crear el directorio OBJ para los archivos .obj.

VINCULAR el intérprete de desarrollo para el método gráfico que se va a


usar (ver sección PC en la parte de interpretes)

Añada el directorio a la ruta (comando PATH de MS-DOS).

A continuación, cree un directorio para cada juego en el que se colocan


los archivos fuentes.
Sección 3 – Ejemplo Práctico

He aquí un resumen de los principales puntos que se necesitan para


producir un juego (utilizando por defecto el idioma español).

1/ Para empezar edite el fichero fuente (llamado TUTOR) suponiendo que


ha instalado QEDIT en su máquina:

QE TUTOR.SCE

Ahora tenemos un archivo en blanco para empezar a trabajar. Para


facilitar las cosas hay un archivo en el disco que contiene los datos
minimos necesarios más algunas palabras útiles del vocabulario, etc. Se
llama BLANK.SCE, este ahora se puede leer para formar parte de nuestro
archivo (CTRL K & R en QEDIT). Una vez que ha escrito en su juego,
tendrá que guardarlo y salir (CTRL K & X) a la línea de comandos para
probarlo.

2/ Ahora tenemos que hacer un archivo que la computadora pueda


entender. Aquí se utiliza un compilador para hacer una copia del
archivo SCE en forma de archivo DDB.

DC TUTOR

Hará el trabajo y creará un archivo TUTOR.DDB.

3/ Para reproducirlo utilize un intérprete que lea la información del


archivo DDB y ejecute el juego

INTSD TUTOR o INTSDM TUTOR

Le permitirá jugar el juego. Si encuentra un problema, entonces vuelva


a editar el archivo como en el paso 1, pero usted no tendrá que cargar
el archivo en blanco de nuevo.

4/ En este punto, usted puede empezar a dibujar sus gráficos. Usted


necesitará dibujar un set en el Spectrum que más tarde se convertirá a
MSX, CBM y CPC. El otro set se dibujará en el ST (u otro sistema,
siempre y cuando finalmente se grave en modo DEGAS de 16 colores sin
comprimir – extension .PI1).

5/ Hacer una copia ejecutable para cada máquina:

ST

Compile una version del código sin información debug y comprimida


llamada PART1.DDB utilizando la opción del compilador -m5.
Transfierala al ST – Utilizando un programa de comunicaciones
(como por ejemplo FLASH/PROCOMM), o una disquetera externa

Puedes dibujar los gráficos y guardarlos en formato PI1. Utilice DMG


para hacer un archivo gráfico adecuado para el juego y renombralo como
PART1.DAT.
Ponga los archivos .DAT y .ddb en el mismo disco, junto con un archivo
de set de caracteres 6x8 - extensión .CH0. Vea la sección de set de
caracteres para los detalles de redefinición de los set. Para el modo
de texto se necesita un set de caracteres 8x8 especial. Un duplicado
del archivo CH0 llamado .CHR funcionará si no te importa las letras
espaciadas un poco. Luego ponga SDI.PRG en el disco y renombralo según
sea necesario.

Un archivo DEGAS PI1 estándar renombrado com PART1.SCR puede ser


incluido en el disco como pantalla de fondo durante la carga si es
necesario.

El juego se inicia haciendo clic en el archivo .PRG como es normal en


un ST.

AMIGA

Haga una copia del disco OS mínimo. Coloque todos los archivos en este
disco.

Compile una versión del código sin información debug y comprimida


llamada PART1.DDB utilizando la opción del compilador –m6. Transfieralo
al AMIGA (usando VT100/PROCOMM o DOS2DOS desde un disquete de PC (en
la disquetera externa). Observe que si no hay diferencias condicionales
entre ST y AMIGA puede utilizar el archivo ST .ddb que funcionará
perfectamente.

Transferiera los ficheros .DAT y .CH0 desde el ST. Renombra el


fichero .CH0 como .CHR.

Use la utilidad DSTAM en ST para cargar la imagen de fondo .PI1 y


grabarla como fichero BIT. Transferieralo al Amiga y renombrelo como
PART1.SCR

Copia SDI en el disco de trabajo y renombralo como AD. O si cambias el


nombre en el archivo "s/startup-sequence" puedes llamarlo como quieras.
También debes hacer un icono (tool type) con el mismo nombre y copiarlo
en el disco.

El disco es ahora autoarrancable, o si ha añadido un icono, clic desde


el workbench.

PC

Compile una versión del código sin información debug y comprimida


llamada PART1.DDB

EGA Usando el sistema antiguo DMG:-

Los gráficos bajo DEGAS en el ST deben ser modificados para poder


utilizar la paleta fija de 16 colores EGA.

Envíelos al PC a través de un paquete de comunicaciones, o copialo


desde una disquetera externa de 3.5"
Utilice DMG en el PC para hacer un archivo llamado PART1.EGA
constituido por estas imágenes.

Haga un archivo INTS.EXE por el número correcto de las partes y


colocarlo (nombralo como quieras) junto con el archivo .ddb, el archivo
.EGA y el archivo .CHR en el mismo disco.

CGA Sistema antiguo:-

Los gráficos pueden provenir de ST o CPC. Utilice DMG para hacer un


archivo llamado PART1.CGA.

Simplemente ponga el fichero .CGA en el disco EGA y automáticamente se


selecciona el fichero correco acorde con la tarjeta grafica equipada.
Pero si quieres hacer una versión especial CGA, siga los pasos
anteriores, pero utilizar el archivo INTSCGA.EXE como intérprete.

Usando el nuevo sistema gráficos multimáquina (versión ST de DMG):-

Debes tener las versiones EGA y CGA de la paleta cargada para cada
imagen en DMG en el ST. Cualquier tipo de búfer será resuelto. No
importa si está o no comprimido pero la conversión será más rápido lo
está.

Utilice la opción Make IBM para escribir un archivo PARTx.IBM en un


disco. Envíalo al IBM y cambiarle el nombre a PARTx.DAT

Haga un archivo INTSM.EXE por el número correcto de las partes y


colocarlo (nombralo como quieras) junto con el archivo .ddb y el
archivo .CHR en el mismo disco.

Envia un archivo DEGAS PI1 con una paleta de color complete para PC -
esta será normalmente la pantalla de carga ST. Utilice CSTVGA para
hacer un archivo VGA. Tendrá la extension .V13. Para hacer la pantalla
de carga, renombre la extención de archive a .VGS.

Para ambos sistemas:-

Envie un archivo DEGAS PI1 utilizando sólo la paleta EGA de 16 colores


al PC. Utilice CSTEGA para hacer un archive EGA. Tendrá una extensión
.E13 así cambie su nombre a .EGS para la pantalla de carga.

La pantalla de carga CGA se realiza mediante el programa CACGA y se le


dará la extensión CGS. Si quieres que venga de ST utilize el programa
CSTA para convertirla a Amstrad primero. No se espera que haya un
programa CSTCGA en el futuro.

CPC

Compile una versión del código sin información debug y comprimida


llamada xxx.DDB (etc) usando la opción -m3c. Enviela al Amstrad usando
PROCOMM y UKM7AMS.
Envie una copia del fichero gráfico del Spectrum al IBM usando XM en
Spectrum y XMP en IBM – llamandolo yyy.SDG. O PROCOMM/UKM7AMS
desde CPC grabando el fichero en format de disco CPC desde un +3. No
se olvide de eliminar la cabecera del +3.

Use DSA para hacer u n fichero para Amstrad (que se denominará


yyy.BIN). Envielo al Amstrad usando PROCOMM y UKM7AMS.

Use el editor DG para limpiar las imágenes - Normalmente, tendrá que


utilizar la opción -fs en DSA para eliminar rellenos y sombras y volver
a cargarlos de forma manual en DG. Tenga en cuenta que el conjunto de
caracteres es en realidad 8x8 en el CPC y quizás quieras diseñar uno
especial para él que puede ser enviado al CBM y al ST (para el modo de
texto).

Desde CPM use MCRF para hacer un fichero ejecutable en AMSDOS. Esto se
describe en la sección sobre este programa.

Spectrum

Compile una versión del código sin información debug y comprimida


llamada xxx.DDB (etc) usando la opción -m1.

DISCiPLE:-

Envíe la database al Spectrum usando XMP en el PC y XM en el Spectrum.

Siempre que sus gráficos y base de datos tengan el mismo nombre (los
gráficos tendrán un signo + en posición de carácter 10), puede utilizar
LOAD d1"drs" para ejecutar el juego.

+3:-

Use ASH para añadir una cabecera Spectrum al fichero .DDB, renombralo
PARTx.DDB y envielo al CPC usando Procomm & UKM7AMS. El +3 aceptará un
disco en formato de datos CPC fácilmente.

Grave el archive gráfico desde DG en el disco junto a una copia del


intérprete DS48II. Un pequeño cargador BASIC se proporciona en el disco
llamado "DRS" ("DRE" para Inglés), pero si quiere podrá cargar todos los
ficheros en memoria y grabar un bloque.

CBM

Compile una versión del código sin información debug y comprimida


llamada PART1.DDB (etc) usando la opción -m2c.

Envie la database al CBM usando DR en el CBM y GOCBM on the PC. Debe dar
la dirección de carga como 0x3880.

Envie una copia del fichero gráfico del Spectrum al IBM usando XM en
Spectrum y XMP on the IBM (renombralo PARTx.SDG). O vea la nota sobre +3
bajo CPC.
Use DSC para hacer un fichero para CBM (que se denominará yyy.CDG).
Envie el fi cher o al CBM usando DR en el CBM y GOCBM en el PC.
Debes dar la dirección de carga que figure como la dirección más baja
dada por DSC.

Use el editor DG para limpiar las imágenes – tendrá que hacer muy poco
aquí si ha tenido cuidado en la elaboración de las imágenes en el
Spectrum. El juego de caracteres es en realidad 8x8 en CBM y es
posible que desee diseñar uno especial para él (y el modo de texto CPC
/ ST).

Copia el fichero LS1 en tu disco de trabajo (FAST HACK EM) y renombralo


(usando OPEN 15,8,15,"R0:newname=LS1").

MSX

Compile una versión del código sin información debug y comprimida


llamada PARTx.DDB (etc) usando la opción -m4.

Envie una copia del fichero gráfico del Spectrum al IBM usando XM en
Spectrum y XMP on the IBM (renombralo PARTx.SDG).

Use DSM para hacer un fichero para MSX (que se denominará PARTx.MDG).

Asegurese de que una copia del interprete está en el directorio


renombrado como DMSXI.Z80.

Carge una copia de PDS56000 en su máquina MSX (HitBit por el momento).


Use PPL PARTx para enviar y empezar el juego.

Nota: El disco de PC es tu master, a ya que no hay forma sencilla de


guardar archivos en casete en MSX.

PCW

Compile una versión del código sin información debug y comprimida


usando la opción -m7c llamada PARTExxx.DDB donde XXX es el número de
la parte (001,002 etc. los ceros iniciales son necesarios). Envialos
usando PROCOMM/UKM7AMS al disco con formato CPC.

Tienes que hacer un archivo de gráficos CGA usando DMG en el PC.


Luego use la opción write PCW (W) para hacer un fichero DMG.PCW.
Renombralo como PARTExxx.DAT y envialo al disco. Tenemos que cambiar
DMG Atari para facilitar la escritura...

Envia un CHR (8x8 caracteres) en formato Amstrad al PCW llamado


PARTExxx.CHR. El set .CHR usado por el ST servirá para este propósito.

La pantalla de carga se realiza mediante CST1PCW, y se llamará siempre


PARTE001.SCR (siempre). Esta provendrá de una pantalla de ST CGA de 4
colores.

(n.b. Esto no cambiará cuando cambiemos a un nuevo estilo gráfico).

Finalmente situe una copia de DPCWIS.Z80 en el disco y renómbralo como


quieras.
Sección 4 - El Intérprete

4.0 Descripción

La siguiente descripción del intérprete se aplica a todas las


versiones. Las cosas específicas de cada máquina se describen en su
sección correspondiente.

Inicialización

La inicialización del sistema se realiza una sola vez. Todas las


banderas y las posiciones de los objetos se inician. La pantalla se
borra (aunque esto puede cambiar en 8 bits para proporcionar una
pantalla de carga). Tenga en cuenta que la inicialización de las
banderas, el juego siempre comenzará localidad cero. Esto es porque
Player (la bandera 38), la la localización actual del jugador, está
ahora en cero.

Bucle Principal

El programa realiza una llamada a proceso 0. Al salir de esta tabla se


regresa al sistema operativo o se reinicia el juego – solamente con una
de inicialización parcial.

En las máquinas que cuentan con la facilidad de autocarga se puede


especificar una nueva base de datos como parte de la acción EXIT. Esto
hará que la parte destinada a ser cargada y el bucle principal se
restablezcan sin que se produzca ninguna inicialización, permitiendo al
estado del juego pasar a otra base de datos.

Busqueda de la Tabla de Procesos 0

La tabla de procesos 0 será normalmente el bucle principal del


intérprete, aunque no hay ninguna razón por la qué no pueda llevar a
cabo algunas acciones simples y volver al O/S.

El diagram de flujo 1 y la proxima sección describirán como se busca


a través de una table de procesos, esto se aplica al proceso 0, ya que
funciona como cualquier otra table, con la diferencia de que un DONE o
llegar al final del proceso provocará un retorno al sistema operativo
en lugar de la llamada a una tabla.

El fichero de código Fuente BLANK.SCE da un ejemplo de un juego mínimo


escrita bajo DAAD.
Diagrama de Flujo 1
Inicio

No ¿Mas entradas?

Si

¿Verbo No
Coincide?

Si

¿Nombre No
Coincide?

Si

¿Más No
1 CondActs?

Si

No Si
Condición?

No
Hacer Acción ¿Tiene exito?

Si

Si 1
¿RESTART? ----> Inicio

No

Si No
¿EXIT? 1

Fin
Busqueda en una Tabla de Procesos

Esencialmente DAAD examina cada entrada de la tabla hasta que se acabe


(no DAAD sino la tabla). Si encuentra una entrada en la tabla, se
asegurará de que Verbo y el Nombre coincidan con los de la Sentencia
lógica actual (SL) - Esto establecerá una declaración PARSE en algún
lugar del bucle principal del juego de texto tradicional.

El uso de la palabra "_", bien sea como Verbo o como Nombre, hará que
esa palabra coincida con cualquier parte de la SL. Po r lo t anto, u na
entrada en la tabla como "_ _", disparará cualquier entrada, no importa
lo que se haya tecleado. Esto será la entrada normal en el Proceso de
0, ya que será muy poco probable que una SL válida esté presente o sea
significativa para el bucle principal del juego.

DAAD entonces examinará cada uno de los condactos. Si es una condición


válida DAAD buscará el siguiente condacto. Si no, se saldrá de la actual
lista de condactos y buscará otra entrada en la table. Si se trata de
una acción, la llevará a cabo. Las acciones pueden ser divididas en
cinco grupos principales:

1. RESTART: que causará una salida complete de todas las tablas (aunque
esté en un sub-proceso de nivel 10) y saltará al inicio del Proceso
0.

2. END/EXIT: (un grupo por si mismas) causará la salida de todas las


tablas y un salto a inicilizar un nuevo juego o salir al sistema
operativo.

3. Exit (Salida): es cualquier acción que interrumpa el procesamiento


de la table actual y cause su salida a la table de llamada. Por
ejmeplo: DONE etc.

4. Salida Conditional: cualquier acción que interrunpa el procesamiento


de la table actual y cause su salida a la table de llamada si no
puede realizer la función requerida. Por ejempo: GET, PUTIN, etc. Si
no, se continuará con el siguiente CondActo.

5. Normal: acualquier acción que ejecuta su función y permite a DAAD


continuar buscando en el siguiente condacto en la entrada actual.
Por ejemplo: COPYFF, PLUS, etc.

Nota: Algunos condactos en DAAD se comportan de manera diferente a sus


homologos en QUILL/PAW, así que asegurese de comprobarlos en este manual
antes de usarlos. QUIT es un buen ejemplo, en DAAD es una verdadera
condición.
4.1 Los CondActos

Ahora seguirá una descripción detallada de cada condacto. Estan


divididos en grupos, de acuero con el tema del que se encarguen en
DAAD, como banderas, objetos, etc.

4.1.0. Términos utiizados en esta sección

Ahora daremos una descripción detallada de cada CondActo. Están


divididos en grupos, de acuerdo con el tema del que se encargan dentro
de DAAD; como banderas, objetos, etc. También damos algunas claves
sobre su posible uso.

Para los usados en el Sistema PAW, ¡tenga cuidado! Varias acciones se


han eliminado, mientras que otras han cambiado en función. Asegúrese
de comprobar su función dentro de DAAD. Por ejemplo: TURN y SCORE han
sido eliminadas – ahora deben ser codificadas. También TIMEOUT,
PROMPT y GRAPHIC se sustituyen por 'HASAT TIMEOUT', 'LET Prompt x' y
'LET GFlags expression' que efectuarán el mismo trabajo.

En las descripciones se usan varias abreviaturas que es importante


conocer:

locno es el número de una localidad válida.

locno+ es un número válido de localidad o: 252 o "_" (significa no


creado), 253 o "WORN", 254 o "CARRIED" y 255 o "HERE" (que se
convierte en la localidad actual del jugador).

mesno es un mensaje válido.

sysno es un Mensaje del Sistema válido.

flagno es cualquier bandera (0 a 255).

procno es un número válido de sub-proceso.

palabra es una palabra del tipo requerido que está presente en el


vocabulario, o "_" que ahora significa no palabra (que no significa
cualquier palabra como hasta ahora).

valor es un valor de 0 a 255.

4.1.1. Indirección

El primer parámetro en la mayoría de las acciones se puede utilizar


indirección. Esto hará que no se utilize el propio número, sino el
contenido de la bandera indicada por ese número. Sólo el primer
parámetro se puede indireccionar pero esto proporciona un poderoso
recurso. Aunque no todos los comandos se pueden indireccionar, la
mayoría que tengan una bandera, objeto o número como primer parámetro
se pueden indireccionar.

Por ejmemplo: 'MESSAGE [100]' imprimira el número de mensaje dado por


el valor de la Bandera 100 – ¡a diferencia de 'MESSAGE 100' que
imprimiera el mensaje 100!
4.1.2 Condiciones

Hay cuatro condiciones que se ocupan de probar la localidad del jugador:

AT locno

Se cumple si la localidad actual es la misma que locno.

NOTAT locno

Se cumple si la localidad actual es diferente de locno.

ATGT locno

Se cumple si la localidad actual es mayor que locno.

ATLT locno

Se cumple si la localidad actual es menor que locno.

Hay ocho condiciones que se refieren a la ubicación actual de un


objeto:

PRESENT objno

Se cumple si el Objeto objno es llevado, puesto o esta en la localidad


actual.

ABSENT objno

Se cumple si el Objeto objno no es llevado, no está puesto ni tampoco


está en la localidad actual.

WORN objno

Se cumple si el Objeto objno es llevado puesto.

NOTWORN objno

Se cumple si el Objeto objno no es llevado puesto.

CARRIED objno

Se cumple si el Objeto objno es llevado.

NOTCARR objno

Se cumple si el Objeto objno no es llevado.


ISAT objno locno+

Se cumple si el Objeto objno está en la Localidad locno+.

ISNOTAT objno. locno+

Se cumple si el Objeto objno no está en la Localidad locno+.

Hay diez condiciones que tratan de los valores y de la comparación de


las banderas:

ZERO flagno.

Se cumple si la bandera flagno es igual a cero.

NOTZERO flagno.

Se cumple si la bandera flagno es diferente de cero.

EQ flagno. valor

Se cumple si la bandera flagno es igual a valor.

NOTEQ flagno. valor

Se cumple si la bandera flagno es diferente a valor.

GT flagno. valor

Se cumple si la bandera flagno es mayor que valor.

LT flagno. valor

Se cumple si la bandera flagno es menor que valor.

SAME flagno 1 flagno 2

Se cumple si la bandera flagno 1 tiene el mismo valor que la bandera


flagno 2.

NOTSAME flagno 1 flagno 2

Se cumple si la bandera flagno 1 tiene un valor diferente que la


bandera flagno 2.

BIGGER flagno 1 flagno 2

Será cierto si flagno 1 es mayor que flagno 2.

SMALLER flagno 1 flagno 2

Lo contrario que arriba – se puede lograr lo mismo si revertimos los


parametros BIGGER, pero esto hace los programas más legibles y la
indirección se puede utilizar con 'cualquiera' bandera utilizando la
condición apropiada.
Hay cinco condiciones para comprobar si hay una sentencia lógica
extendida. Es mejor usar estas condiciones solamente cuando se
necesita una palabra específica (o la ausencia de palabra si usamos
"_") para diferenciar claramente una situación. Esto permite una mayor
flexibilidad de las órdenes entendidas por medio de la entrada.

ADJECT1 palabra

Se cumple si el adjegivo del primer Nombre encontrado en la SL actual es


igual a palabra.

ADVERB palabra

Se cunple si el adverbio de la SL actual es igual a palabra.

PREP palabra

Se cunple si la preposición de la SL actual es igual a palabra.

NOUN2 palabra

Se cuple si el Segundo Nombre de la SL actual es igual a palabra.

ADJECT2 palabra

Se cumple si el adjetivo del Segundo Nombre en la SL actual es igual a


palabra.

La siguiente condición es utilizada para efectos al azar. Puede usarla


para simular sucesos imprevistos, por e j e m p l o , l a c a í d a d e u n
árbol sobre un jugador, o la caida de un rayo, etc.
Recomendamos no abusar de esta facilidad y dar siempre al
j u g a d o r u n a v i s o q u e l e a y u d e a p r e v e n i r e l p r o b l e m a , tales
como botas de goma
para el rayo, o similar.

CHANCE porcentaje

Se cumple si porcentaje es menor o igual a un número aleatorio entre 1


y 100 (ambos inclusive). Así una condición con CHANCE 50 permitirá a
DAAD mirar en el siguiente condacto solamente si el número aleatorio
generado está entre 1 y 50, un 50% de probabilidades de éxito.

Dos condiciones prveene un test TRUE/FALSE para llamadas a sub-


procesos:

ISDONE
Tiene éxito si la última table finalizó saliendo tras ejecutar una
Acción. Esto es util para probar un simple valor booleano éxito/fallo
desde un Sub-Proceso. Una acción DONE hara que la condición 'done', al
igual que cualquier condacto provoque la salida, o la caida al final
de la tabla - suponiendo que al menos un condacto (que no sea NOTDONE)
sea ejecutado.

Vea también las acciones ISNDONE y NOTDONE.


ISNDONE

Tiene éxito si la última tabla terminó sin hacer nada o con una acción
NOTDONE.

Los atributos de objeto son tratadas por dos condiciones también:

HASAT/HASNAT valor

Comprueba el atributo especificado por valor. 0-15 son los atributos de


objetos para el objeto actual. También hay varios números de atributos
especificados como símbolos en SYMBOLS.SCE que comprueban ciertas
partes de las banderas del sistema DAAD:

Símbolo Bandera Att No. Descripción


WEARABLE Flag 57 - Bit7 23 Objeto actual es llevable
CONTAINER Flag 56 - Bit7 31 Objeto actual es un contenedor
LISTED Flag 53 - Bit7 55 Si es listado por LISTOBJ
TIMEOUT Flag 49 - Bit7 87 Si Timeout último frame
GMODE Flag 29 - Bit7 247 Gráficos disponibles
MOUSE Flag 29 - Bit0 240 Ratón disponible (no suportado
en todas las máquinas)

La opción bits se puede establecer/testear utilizando los valores


definidos dados como atributos y valores de bit en SYMBOLS.SCE

Por ejemplo, la opción de CPC magic draw que carga los colores de la
paleta después de dibujar con tinta negra sobre papel negro se puede
activar con:

HASNAT GA_MDRW ; Si no tenemos magic draw


PLUS GFlags GO_MDRW

Nota: Los simbolos en el formato GA_xxx son valores de atributo para el


testeo HASAT/HASNAT, mientras GO_xxx es el número usado para
establecer/limpiar (usando PLUS/MINUS) el bit.

Otro ejemplo más: La condición TIMEOUT de PAW está implimentada en DAAD


por:

HASAT TIMEOUT

esto también permite una condición 'NOTTIMEOUT' que se creará


utilizando HASNAT!

Por supuesto, puede asignar sus propios valores a partes de una bandera
y probarlos simplemente con las condiciones HASAT/HASNAT.

Son un verdadero testeador de bits de propósito general para las 64


primeras banderas.
La interacción con el jugador se lleva a cabo con dos condiciones:

INKEY

Está condición que se cumplirá si el jugador presiona una tecla. En


máquinas 16Bit las banderas Key1 y Key2 (60 y 61) serán un par de
códigos estandar ASCII IBM. En 8 bit solamente Key1 será válida, y el
código será específico para cada máquina.

QUIT

EL mensaje del sistema número 12 "¿Estás seguro?" se imprime, y la


rutina de INPUT es llamada. Será válido si el jugador responde con la
primera letra del Mensaje del Sistema 30 ("S") a esta petición. Si no,
entonces el resto de la entrada se descarta y la siguiente entrada se
lleva a cabo
4.1.3 Acciones

Hay veinte acciones que se encargan de la manipulación de las


posiciones de los objetos:

GET objno.

1. Si el Objecto objno es llevado o puesto, SYSMES25 ("Ya tengo el__")


se imprime y las acciones NEWTEXT y DONE se ejecutan.

2. Si el Objecto objno no está en la localidad actual, SM26 ("No hay


uno de esos aquí") se imprime y las acciones NEWTEXT & DONE se
ejecutan.

3. Si el peso total de los objetos llevados o puestos encima por el


jugador, más el objeto objno pasa del peso máximo permitido (bandera
52), entonces el SM43 ("El o la _ pesa mucho para mí") se imprime y
las acciones NEWTEXT & DONE se ejecutan.

4. Si el número máximo de objetos ya se lleva (la bandera 1 es mayor o


del mismo valor que la bandera 37), el SM27 ("Ya no puedo llevar más
cosas") se imprime y las acciones NEWTEXT & DONE se ejecutan.
Además, cualquier bucle DOALL es cancelado.

5. Si no se da ninguno de los anteriores, la posición del objeto


marcado como objno se cambia a llevado, la bandera 1 se incrementa y
el Mensaje del Sistema 36 "Ahora tengo _" se imprime.

DROP objno.

1. Si el Objecto objno es llevado puesto, entonces el SM24 ("No puedo.


Llevo puesto _") se imprime y las acciones NEWTEXT & DONE se
ejecutan.

2. Si el Objecto objno está en la localidad actual (pero ni se lleva


puesto encima, ni es llevado), el SM49 ("No tengo _") se imprime y
las acciones NEWTEXT & DONE se ejecutan.

3. Si el Objecto objno no está en la localidad actual, entonces el


SM28 ("No tengo eso") se imprime y las acciones NEWTEXT & DONE se
ejecutan.

4. Si no se dan los casos anteriores, la posición del objeto al que se


refiere objno se cambia a la localidad actual, La bandera 1 se
decrementa y el SM39 ("He dejado caer _") se imprime.

WEAR objno.

1. Si el Objecto objno está en la localidad actual (pero ni se lleva


puesto encima, ni es llevado), el SM49 ("No tengo _") se imprime y
las acciones NEWTEXT & DONE se ejecutan.

2. Si el Objecto objno es llevado puesto, el SM29 ("Ya llevo puesto _")


se imprime y las acciones NEWTEXT & DONE se ejecutan.

3. Si el objeto objno no se lleva, el SM28 ("No tengo uno de esos") se


imprime y las acciones NEWTEXT & DONE se ejecutan.
4. Si el objeto objno es no usable (cómo se especifica en la Sección
Definición de objetos) entonces el SM40 ("No puedo ponerme _") se
imprime y las acciones NEWTEXT & DONE se ejecutan.

5. Si no se dan ninguno de los casos anteriores, la posición del objeto


objno se cambia a "llevado puesto encima", la bandera 1 se decrementa
y el SM37 ("Ahora llevo puesto _") se imprime.

REMOVE objno.

1. Si el objeto objno es llevado o está en la localidad actual (pero no


se lleva puesto) entonces el SM50 ("No llevo puesto _") se imprime y
las acciones NEWTEXT & DONE se ejecutan.

2. Si el Objecto objno no está en la localidad actual, el SM23 ("No


llevo puesto uno de esos") se imprime y las acciones NEWTEXT & DONE
se ejecutan.

3. Si el objeto objno no está marcado como objeto llevable encima (y por


lo tanto como objeto quitable), entonces el SM41 ("No me puedo
quitar _") se imprime y las acciones NEWTEXT y DONE se ejecutan.

4. Si ya se lleva el máximo de objetos (y la bandera 1 es mayor o igual


que la bandera 37), el SM42 ("No puedo quitarme _. Mis manos están
llenas") se imprime y las acciones NEWTEXT y DONE se ejecutan.

5. Si ninguno de los anteriores se da, la posición del objeto objno se


cambia a llevado, la bandera 1 se incrementa y el SM38 ("Me he
quitado _") se imprime.

CREATE objno.

La posición del objeto objno se cambia a la posición de la localidad


actual, la bandera 1 se decrementará si el objeto es llevado por el
jugador.

DESTROY objno.

La posición del objeto a que se refiere objno se cambia a "no creado" y


la bandera 1 se decrementa si el objeto es llevado por el jugador.

SWAP objno 1 objno 2

Las posiciones de dos objetos son cambiadas. La bandera 1 no se toca


para nada. El objeto actualmente referenciado (que DAAD conserva en
memoria en la bandera 51) se sitúa en el objno número 2 (el que está
marcado en la bandera 51).

PLACE objno. locno+

La posición a la que se refiere objno se cambia a la localidad a la que


se refiere locno+. La bandera 1 se decrementa si era un objeto llevado.
Y se incrementa si el objeto se pone en la localidad 254 (llevado).
PUTO locno+

La posición del objeto actualmente referenciado (el objeto a cuyo


número esté en la bandera 51), se cambia a la localidad locno+. La
Bandera 54 mantiene su antigua localidad. La bandera 1 se decrementa si
el objeto era llevado, y se incrementa si el objeto se pone en la
localidad 254 (llevado).

PUTIN objno. locno.

1. Si el objeto objno es llevado puesto encima, entonces el SM24 ("No


puedo, llevo puesto _") se imprime y las acciones NEWTEXT y DONE se
ejecutan.

2. Si el objeto objno está en la localidad actual (pero ni se lleva


puesto encima, ni se lleva), el SM49 ("No tengo _") se imprime y
las acciones NEWTEXT y DONE se ejecutan.

3. Si el objeto objno no está en la localidad actual, pero tampoco se


lleva, entonces el SM28 ("No tengo uno de esos") se imprime y las
acciones NEWTEXT y DONE se ejecutan.

4. De cualquier otra forma, la posición del objeto objno se cambia a


la localidad referidad por locno. La bandera 1 se decrementa y el
SM44 ("El _ está en la"), se describe la localidad del objeto
locno y luego el SM51 (".") se imprime.

TAKEOUT objno. locno.

1. Si el objeto objno se lleva puesto encima o es llevado, el SM25 ("Ya


tengo _") se imprime y las acciones NEWTEXT y DONE se ejecutan.

2. Si el objeto objno está en la localidad actual, el SM45 ("_ no está


en la"), la descripción de la localidad locno del objeto y el SM51
(".")se imprimen y las acciones NEWTEXT y DONE se ejecutan.

3. Si el objeto objno no está en la localidad actual y no está en la


localidad locno entonces el SM52 ("No hay uno de esos en"), la
descripción de la localidad locno del objeto y el SM51 (".") se
imprimen y las acciones NEWTEXT y DONE se ejecutan.

4. Si el objeto locno no se lleva o no está puesto y el peso total de


los objetos llevados por el jugador, más el objeto al que se refiere
objno excede del peso máximo permitido (bandera 52) entonces el SM43
("El _ pesa mucho para mí") se imprime y las acciones NEWTEXT y DONE
se ejecutan.

5. Si el máximo número de objetos ya se lleva (o sea, que la bandera 1


es mayor o igual que la bandera 37), el SM27 ("No puedo llevar más
cosas") se imprime y las acciones NEWTEXT y DONE se ejecutan.
Adicionalmente, cualquier bucle DOALL se cancela.

6. De otro modo, la posición del objeto objno cambia a llevado, la


bandera 1 se incrementa y el SM36 ("Ahora tengo _") se imprime.
Nota Importante: No se hace ningún chequeo ni para PUTIN ni para
TAKEOUT de qué objeto utilizado en locno esté actualmente presente.
Esto debes hacerlo tú si es necesario.

DROPALL

Todos los objetos que sean llevados o puestos encima se crearán en la


localidad actual (es decir, todos los objetos se dejan caer) la bandera
1 se pondrá a 0. Este comando se ha incluido para compatibilidad con
los antiguos sistemas (QUILL, PAW). Es de notar que un DOALL 254
llevará a cabo un verdadero DROP ALL, y además tendrá en cuenta
cualquier otra acción especial que se incluya.

Las siguientes seis acciones tratan de versiones automáticas como


COGER, DEJAR, LLEVAR PUESTOS, QUITAR DE ENCIMA, PONER DENTRO y SACAR
DE, (GET, DROP, WEAR, REMOVE, PUTIN and TAKEOUT). Son automáticos por
el hecho de que en vez de necesitar que se especifique el número del
objeto, ellos convertirán el primer Nombre con su Adjetivo en el objeto
actualmente indicado o referenciado, buscándolo en la Sección de
Definición de Objeto (OBJ). La búsqueda se hace por un objeto que esté
en una de las siguientes localidades en orden descendente de prioridad.
(Mirar las descripciones individuales). Esta búsqueda con prioridades
permite que DAAD "sepa" de qué objeto se trata, si más de un objeto
tiene el mismo nombre descriptivo (cuando el jugador no haya
especificado un Adjetivo), en la localidad actual llevado o puesto
encima o en un contenedor (en el caso del comando TAKEOUT).

AUTOG

Una búsqueda del número del objeto representado por Nombre (Adjetivo) 1
se hace en la Sección de Definición de Objeto (OBJ) según su prioridad
de localización que será: aquí, llevado, puesto, etc. Es más lógico que
el jugador esté tratando de coger un objeto que esté en la localidad
actual, que uno que lleve o tenga puesto encima, por eso el orden de
prioridades.
Si el objeto es encontrado, su número se pasa a la acción GET. De otra
forma, si es un objeto que existe en cualquier otra parte del juego o
si el Nombre1 no está en el Vocabulario, el SM26 ("No hay uno de esos
aquí") se imprime. Si no, el SM8 ("No puedo hacer eso") se imprime
(significa que no es un objeto válido pero que existe en el juego). De
todas formas las acciones NEWTEXT y DONE se ejecutan.

AUTOD

Una búsqueda por el número del objeto representado por Nombre


(Adjetivo) 1 se hace en la Sección de Definición de Objeto (OBJ) según
la prioridad de localidad: llevado, puesto encima, aquí. Por ejemplo,
lo más probable es que el jugador esté intentando dejar caer (DROP) un
objeto que lleve, que lleve puesto encima o esté aquí. Si se encuentra
un objeto, su número se pasa a la acción DROP. De otra forma si hay un
objeto que existe en cualquier parte del juego, o si el Nombre1 no está
en el Vocabulario, el SM28 ("No tengo uno de esos") se imprime. Si no,
el SM8 ("No puedo hacer eso") se imprime, es decir (no es un objeto
válido pero sí que existe en el juego). De cualquier forma las acciones
NEWTEXT y DONE son ejecutadas
AUTOW

En una búsqueda del número del objeto representado por Nombre (Adjetivo) 1 se
hace en la tabla de objetos (OBJ) en orden de prioridad de: llevado, puesto
encima, aquí. Es más probable que el jugador esté intentando ponerse encima
(WEAR) un objeto que lleve en sus manos, que uno que ya lleve puesto o esté
aquí. Si el objeto se encuentra, su número se pasa a la acción WEAR. De otra
manera, si hay un objeto en existencia en cualquier parte del juego o si el
Nombre1 no estaba en el Vocabulario, entonces el SM28 ("No tengo uno de
esos") se imprime. Si no, el SM8 ("No puedo hacer eso") se imprime. No es un
objeto válido, pero sí existe en el juego. De cualquier modo, las acciones
NEWTEXT y DONE se ejecutan.

AUTOR

Una búsqueda por el número del objeto representado por el Nombre (Adjetivo) 1
se hace en la tabla de Objetos (OBJ) con una prioridad de: puesto encima,
llevado, aquí. El jugador, lo más probable es que esté tratando de quitarse
(REMOVE) un objeto que lleve puesto, que uno que lleve en sus manos o que esté
aquí. Si un objeto se encuentra, su número se pasa a la acción REMOVE. Si hay
un objeto en existencia en cualquier parte del juego o si el Nombre1 no estaba
en el Vocabulario, entonces el SM23 ("No llevo uno de esos") se imprime. Si
no, el SM8 ("No puedo hacer eso") se imprime (no es un objeto válido pero
existe en el juego). De cualquier forma, las acciones NEWTEXT y DONE se
ejecutan.

AUTOP locno

Una búsqueda del número del objeto representado por el Nombre (Adjetivo) 1 se
hace en la tabla de Objetos (OBJ) en el siguiente orden de prioridad: llevado,
puesto, aquí. Es más factible que el jugador esté intentando poner un objeto
que lleva en sus manos dentro de otro, que uno que lleva puesto encima o está
aquí. Si el objeto se encuentra, su número se pasa a la acción PUTIN. Si hay
un objeto en existencia en cualquier parte del juego o si el Nombre1 no está
en el Vocabulario, entonces el SM28 ("No tengo uno de esos") se imprime. Si
no, el SM8 ("No puedo hacer eso") se imprime. No es un objeto válido, pero
existe en el juego. De todos modos, las acciones NEWTEXT y DONE son
ejecutadas.

AUTOT locno

Una búsqueda por el número del objeto representado por el Nombre (Adjetivo) 1
se hace en la tabla de Objetos (OBJ) según la siguiente prioridad: un
contenedor, llevado, puesto, aquí. El jugador es más probable que esté
intentando sacar un objeto que esté dentro de un contenedor que un objeto que
sea llevado, puesto encima, o aquí. Si un objeto se encuentra, su número se
pasa a la acción TAKEOUT.
Si hay un objeto en existencia en cualquier parte del juego o si el Nombre1 no
está en el Vocabulario entonces el SM52 ("No hay uno de esos en él"), viene
luego una descripción del objeto que sirve de localidad, y luego el SM51 (“.”)
se imprime.
Si no, el SM8 ("No puedo hacer eso") se imprime. (No es un objeto válido pero
existe en el juego). De cualquier modo, las acciones NEWTEXT y DONE se
ejecutan.

Nota Importante: No se hace ningún chequeo, ni por AUTOP ni por AUTOT, de que
el objeto que se va a usar como contenedor, o sea el de locno esté actualmente
presente. Esto debe ser hecho por ti, si así es requerido.
COPYOO objno1 objno2

La posición del objeto al que se refiere objno2 se hace la misma que la


posición en que estaba el objeto objno1. El objeto que se toma
actualmente como referencia se pone en objno2. Hay cuatro acciones que
permiten dar varios parámetros a los objetos: ponerlos en banderas,
setearlos de banderas. Son usados para comparaciones o manipulaciones.

RESET

Esta acción no se parece a la que tiene el mismo nombre en PAW. Tiene la


función pura de colocar todos los objetos en la posición dada en la
tabla de inicio de objetos. También establece las banderas relevantes
que tratan del número de los objetos transportados etc.

Hay cinco acciones que permiten manipular diversos parámetros de los


objetos: situarlos en banderas, situarlos desde banderas – su
comparación o manipulación.

COPYOF objno flagno

La posición del objeto al que se refiere objno se copia en la bndera


flagno. Esto puede ser usado para examinar la localización de un objeto
en comparación con otro valor de la bandera. Por ejemplo:

COPYOF 1 11
SAME 11 38

puede ser usado para chequear que el objeto 1 esté en la misma localidad
del jugador, aunque ISAT 1 255 sería mucho mejor.

COPYFO flagno objno

La posición del objeto al que se refiere objno se pone como contenido de


la bandera flagno. Una intención de copiar de una bandera que contenga
255 resultará en un error de "Argumento Inválido". El poner un objeto en
una localidad inválida será aceptado puesto que no acarrea ningún
peligro para las operaciones de DAAD. Esto debes tenerlo en cuenta (y no
hacerlo) tú.

WHATO

Es un comando muy importante. Una búsqueda para el número del objeto


representado por el Nombre (Adjetivo) 1 se hace en la tabla de Objetos
(OBJ) con la siguiente prioridad: llevado, puesto, aquí. Esto es, porque
se supone que cualquier uso del comando WHATO se referirá más que todo a
objetos llevados que a cualquier objeto que se lleve puesto o esté aquí.
Si un objeto se encuentra su número se pone en la bandera 51, lo mismo
que con cualquier parámetro del objeto al cual se refiera actualmente en
las banderas 54 a 57.
Esto te permite crear otras acciones de tipo automático (en el manual de
Introducción dábamos un ejemplo de esto dejando caer objetos desde el
árbol).
SETCO objno

Establece el objeto actualmente referenciado a objno.

WEIGH objno flagno

El verdadero peso al que se refiere objno se calcula (por ejemplo: si


es un contenedor, cualquier objeto que lleve dentro hará aumentar su
peso, no te olvides de que puede haber varios contenedores uno dentro
de otro y todos sus pesos se pueden añadir hasta el nivel 10) y el
valor que dé, se pone en la bandera flagno. El máximo es 255.
Si el objeto al que se refiere objno es un contenedor de peso cero, la
bandera flagno se pondrá a cero, puesto que cualquier objeto que esté
en un contenedor que pese cero se considera que tiene un peso de cero
(Sería un dispositivo antigravedad en una aventura de ciencia ficción).

Ahora las acciones que manipulan las banderas:

SET flagno

Establece la bandera flagno a 255.

CLEAR flagno

Establece la bandera flagno a 0.

LET flagno value

Establece la bandera flagno a value.

PLUS flagno value

Incrementa flagno con número que se ponga en value. Si excede de 255,


la bandera se establece a 255.

MINUS flagno value

Decrementa flagno con número que se ponga en value. Si el resultado es


negativo, la bandera se establece a 0.

ADD flagno 1 flagno 2

Se le añade a la bandera contenida en flagno2 el contenido de la


bandera de flagno1. Si el resultado excede de 255 la bandera se pone a
255.

SUB flagno 1 flagno 2

Se le resta al contenido de la bandera en flagno1 el contenido de la


bandera flagno2. Si el resultado es negativo la bandera se pone a 0.
COPYFF flagno1 flagno2

El contenido de la bandera flagno1 se copia en la bandera flagno2.

COPYBF flagno1 flagno2

Igual que COPYFF pero el origen y el destino están invertidos, por lo


que se puede utilizar indirección. Es de esperar que será sustituido
por un sistema integral redirección dual de parametros para la acción
COPY en el futuro.

RANDOM flagno.

La bandera especificada por flagno se pone a un número que es resultado


de una secuencia seudo aleatoria de 1 a 100. Esto puede ser útil para
permitir que se tomen decisiones aleatorias de una manera más sencilla
que con la condición CHANCE.

MOVE flagno.

Esta es una potente acción para la manipulación de los personajes seudo


inteligentes (PSI). Trabaja permitiendo que el Verbo actual de la
sentencia lógica sea usado para buscar en la tabla de conexiones en
busca de la localidad que se dé en la bandera que se especifique en
flagno. Si el Verbo se encuentra, entonces el flagno especificado
cambia a ser el número de localidad asociado con él, y el próximo
condacto se considera. Si el Verbo no es encontrado, o el número de
localidad original no era válido, entonces DAAD se ocupa de la
siguiente entrada en la tabla (si está presente). De esta forma se
podría considerar que DAAD ejecuta las siguientes entradas imaginarias
a su salida de Respuestas si no ha ejecutado ninguna acción:

_ _ MOVE 38 ; Intenta mover al jugador


DESC ; Describe su nueva localidad

_ _ LT 33 14 ; ¿Es una palabra usada para moverse?


SYSMESS 7 ; "No puedes ir a esa localidad"
DONE

_ _ SYSMESS 8 ; "No puedo hacer eso”

Esta orden puede ser usada para dar a los personajes movimientos
aleatorios en direcciones válidas, poniendo para ello el Verbo de la SL
en una palabra de movimiento aleatoria y dejando que la orden MOVE
decida si el personaje puede ir en esa dirección.
Hay que tener en cuenta, que cualquier movimiento especial (o
movimientos) que se manejen en la tabla de Respuestas para el jugador,
deben manejarse separadamente para un PSI.

Hay tres acciones para manipular las banderas que se usan para controlar
al jugador:

GOTO locno.

Cambia la localidad actual al número dado por locno. Efectivamente,


establece la bandera 38 al valor que se dé en locno.
WEIGHT flagno.

Calcula el peso verdadero de todos los objetos llevados y puestos


encima por el jugador (también los de cualquier contenedor, que por
supuesto tendrá el peso de su contenido hasta un máximo de 255), este
valor se pone en la bandera especificada por flagno. Se usa para
asegurar que un jugador no esté, por ejemplo, llevando mucho peso para
cruzar un puente sin que éste se derrumbe, etc.

ABILITY value1 value2

Estblece la bandera 37 (que tiene el número máximo de objetos llevados)


al valor dado por value1, y la bandera 52 (el máximo peso de objetos
que el jugador puede llevar en cualquier momento), o sea, su fuerza, al
valor dado por value2.
No se hace ninguna prueba para chequear que el jugador ya no lleve con
anterioridad un peso mayor que el permitido, porque GET y los demás,
(que si tienen en cuenta estos valores), seguirán todavía trabajando
correctamente y prevendrán que el jugador lleve más objetos, aún si has
establecido el valor a un número más bajo que el número de objetos que
ya lleva en este momento

Hay tres acciones que se ocupan de la manipulación de las banderas para


el modo de pantalla, formato, etc.:

MODE option

Permite que la ventana actual tenga sus banderas de operación


cambiadas. Para calcular el número a usar en option sólo tiene que
añadir los números que aparecen junto a cada elemento para lograr la
combinación requerida;

Opción 1 - Utilice el juego de caracteres superior. (A permanent


^G)
Opción 2 – Hace que el SM32 ("Más...") no aparecerán cuando la
ventana se llene.

por ejemplo, MODO 3 detiene el prompt 'Más ...' y hace que todos los
caracteres se convierten a la gama 128-256.

INPUT stream option

El parametro 'stream' establecerá la mayor parte de la entrada


proveniente de la ventana/stream dada. Un valor de 0 para 'stream' no
utilizara el stream de gráficos como cabría esperar, pero en cambio
causará la entrada proveniente del stream actual cuando se produce la
entrada.

Opciones:
1 – Limpia la ventana despues del input.
2 – Reimprime la línea input en el stream actual cuando se complete.
4 – Reimprime el texto actual del input después de un timeout.

TIME duration option

Permite que los INPUT aparezcan después de un tiempo cuya duración se


especifica en intervalos de 1 segundo.
Por ejemplo, la tabla de Procesos 2 se buscará otra vez si el jugador
no teclea nada durante un tiempo especificado. Esta acción altera las
banderas 48 y 49. El parámetro 'option' permite que esto también pueda
ocurrir durante los mensajes de "PULSAR CUALQUIER TECLA" y "Más...".
Para calcular el número que se debe de usar en option, debes sumar los
números que mostraremos al lado de lo que se requiera, hasta que tengas
la combinación ¡ideal!:

1 - Mientras se espera para la primera letra del INPUT solamente.


2 - Mientras se espera pulsar una tecla cuando sale un mensaje de
"Más...".
4 - Mientras se espera pulsar una tecla después de una acción
ANYKEY.

Por ejemplo: TIME 5 6 (6= option = 2+4) permitirá 5 segundos de


inactividad a favor del jugador después de aparecer el mensaje ANYKEY o
"Más..." antes de que se pulse cualquier tecla para continuar. Mientras
la orden TIME 5 3 (3= option = 1+2) permitirá este periodo de
inactividad solamente antes de la aparición del primer carácter del
INPUT y después de "Más...".

TIME 0 0 interrumpirá todos los tiempos muertos (timeouts). Es el


elegido por defecto.

Acciones para hacer frente a la salida y control de pantalla:

WINDOW window

Selecciona la ventana (0-7) que se usará como stream de impresion de


salida.

WINAT line col

Establece la fila y columna de inicio de la ventana actual. Recorta la


altura y anchura para adaptarse a la pantalla disponible.

WINSIZE height width

Establece el alto y ancho de la ventana actual. Recorta según sea


necesario para adaptarse a la pantalla disponible.

CENTRE

Asegura que la ventana actual se centra en el ancho de columna actual


de la pantalla. (No afecta a la posición de la fila).

CLS

Limpia la ventana actual.

SAVEAT y BACKAT

Guarda y restaura la posición de impresión para la ventana actual. Esto


le permite mantener la posición de impresión, por ejemplo, mientras
imprime en otra parte en la ventana. Debería considerar el uso de una
ventana separada para la mayoría de tareas. Esto puede ser util para la
creación de una nueva linea INPUT o en secuencias de animaciones...
PAPER colour y INK colour

Establece los colores de la ventana actual según la tabla de referencia


dada en los editores gráficos, o como un número de paleta para máquinas
con paleta.

BORDER colour

Establece el color del borde de la pantalla principal - Esto es


específico de para cada máquina.

PRINTAT line col

Establece la posición de impresión actual al punto especificado en la


ventana actual. Si no, entonces la posición de impresión se convierte
en la parte superior izquierda de la ventana.

TAB col

Establece la posición de impresión actual a la columna dada en la línea


actual.

SPACE

Simplemente imprime un espacio en el stream actual de salida. Más corto


que MES Space!

NEWLINE

Imprime un “retorno de carro/avance de línea”.

MES mesno

Imprime el mensaje dado por mesno.

MESSAGE mesno

Imprime el mensaje dado por mesno, pero luego ejecuta una acción
NEWLINE.

SYSMESS sysno

Imprime el mensaje del sistemma dado por sysno.

DESC locno

Imprime la descripción de la localidad indicada por locno, sin ejecutar


una acción NEWLINE.

Las siguientes acciones se ocupan de la impresión de los valores de las


banderas en la pantalla:

PRINT flagno.

El contenido decimal de la bandera a que se refiere flagno es


visualizado sin dejar espacios ni antes ni después. Esta es una acción
muy eficaz.
Por ejemplo, si la bandera 100 contiene el número de monedas que lleva
el jugador, entonces una entrada en la tabla de Procesos del tipo:
MES 10 ;"Tienes "
PRINT 100
MESSAGE 11 ;" monedas de oro."

podría ser utilizado para mostrar estas al jugador.

DPRINT flagno

Imprimirá el contenido de flagno y flagno+1 como un número de dos bytes.


Por ejenplo: un número en el rango 0-65535 generado como:
(flagno+1) * 256 + (flagno)

DPRINT 255 no tiene sentido y propducirá un resultado aleatorio.

Dos acciones realizan listados de objetos en la pantalla. están


controlados por el valor de la bandera 53 tal como se describe en el
capítulo dedicado a los objetos:

LISTOBJ

Si cualquier objeto está presente, entonces el SM1 ("Además puedo


ver:") se imprime, seguido de una lista de los objetos presentes en la
localidad actual. Si no hay ningún objeto, entonces no se imprime nada.

LISTAT locno+

Si hay algunos objetos presentes, se listan. Si no, el SM53 ("Nada") se


imprime. Hay que tener en cuenta que usualmente hay que preceder esta
acción con un mensaje del tipo de "En la bolsa hay", etc.

Cuatro acciones permiten salvar y restaurar el estado actual del juego;


LOAD y SAVE están ambas seguida de un número que significa:

0 – Acción normal
1 – Grabar a CINTA (es decir, no se pregunta "¿disco o cinta?")
2 - Grabar a DISCO (ídem)

SAVE opt

Esta acción salva el estado actual del juego a disco o cinta. El SM60
("Nombre del fichero:") se imprime y se llama a la rutina input para
obtener pedirle el nombre del fichero al jugador. Si el nombre
suministrado no es acceptable, el SM59 ("Nombre de fichero no válido.")
se imprime. Esto no se comprueba en máquinas de 8 bits, el nombre del
archivo se adaptará adecuadamente por el Sistema.
LOAD opt

Esta acción carga una partida desde disco o cinta. El nombre del
fichero se obtiene de la misma forma que SAVE. Diferentes errores
pueden aparecer en cada máquina si el archivo no se encuentra o sufre
un error de carga, generalmente un error de 'I/O'. La siguiente acción
se realiza sólo si la carga se realiza correctamente. En caso
contrario, se efectúa un GOTO 0, RESTART.

RAMSAVE

Es una forma similar de SAVE, pero que graba toda la información


relevante del juego no a disco, sino a un buffer en la memoria del
ordenador. Este buffer, por supuesto, es volátil y se destruye cuando
se apaga el ordenador. Esto debe de hacerse saber al jugador. La
siguiente acción se realiza siempre.

RAMLOAD flagno.

Esta acción es la contraria de RAMSAVE y permite que el buffer que


antes se salvó sea restaurado. El parámetro dado por flagno especifica
la última bandera que debe ser cargada y se usa para mantener valores
por encima de un restore. Por ejemplo una entrada de:

RAMLO _ COPYFF 30 255 ; 30 = score


RAMLOAD 254 ; carga sin cambiar hasta bandera
254
COPYFF 255 30 ; hace la 30 = 25 y luego describe
DESC

podría ser usada para mantener la puntuación actual y evitar que el


jugador pueda usar el RAMSAVE/LOAD como una opción muy fácil de sacar
un 100%. Como verás, lo que hace es cargar la puntuación en una bandera
y luego devolverle a esa bandera la puntuación.!

Nota 1: Esta acciones pueden ser usadas para implementar un commando


OOPS como es común en otros sistemas, para poder volver a la jugada
anterior si has metido la pata. Se hace creando una entrada en el
bucle principal que realice un RANSAVE automático cada vez que el
jugador introduzca un movimiento.

Nota 2: Esta cuatro acciones permiten que el próximo Candacto se


ejecute. Por ello, deben de ir normalmente seguidas por una acción
RESTART o DESC para que el juego se restaure en una posición idéntica.

Ahora dos acciones que permiten hacer una pausa en el juego durante un
tiempo o hasta que se pulse una tecla:

ANYKEY

El SM16 ("Pulsa una tecla para continuar") se imprime y se inicia una


búsqueda en el teclado hasta que se detecte la presión de una tecla o
hasta que haya transcurrido un tiempo determiado (timeout) si este está
habilitado.
PAUSE value

Pausa por un valor/50 segundos (Pause 50 = 1 segundo). Sin embargo, si


value es cero entonces la Pausa es por 256/50 segundos.

Tres acciones que controlan el parser:

PARSE n

El parametro 'n' controla a que grupo de identificación pertenece la


cadena a ser buscada. Por el momento solamente dos grupos son
soportados por los interpretes, de modo que solo dos valores (0 y 1)
son válidos.

0 – Analiza la línea del input principal para la próxima SL.


1 – Analiza cualquier frase entre comillas ("") que se encuentre en
la última SL extraída.

Modo 0 es el método principal para convertir la línea input actual


del jugador a una sentencia lógica (SL). En la descripción
detallada del parser se dan más detalles. El comando extraerá la
siguiente SL desde la línea de entrada actual.

Modo 1 fue diseñado para usarlo en las convesaciones con los PSI.
Cualquier cadena (es decir, una frase adicional entre comillas [""])
que esté presente en la frase actual tecleada por el jugador se
convierte automáticamente en una SL - sobrescribiendo la SL existente
formada originalmente para esa frase.

Si no hay una frase presente en el nivel 0, la línea input es llamada


precedida de un aviso aleatorio – esto consige un nuevo input del
jugador automáticamente cuando sea necesario, eliminando el problema de
manejar múltiples frases por el programador. En el nivel 1 se ejecuta
el siguiente condacto. Esto ocurre en todos los niveles si el SL no es
válido. Tenga en cuenta que DAAD buscará el siguiente condacto en lo
que puede considerarse una situación de fallo - esto es diferente a lo
que se podría esperar. De otra manera la siguiente entrada se considera
con la nueva SL del mensaje hecho al PSI. Debido a que sobrescribe la
SL actual debe usarse con cuidado - esta es también la razón de
ejecutar el próximo condacto en una situación de fallo, piensa en ello!

Si está utilizando una estructura de comando basado en texto necesitará


al menos un condacto PARSE 0 en alguna parte del bucle principal.

Por ejemplo: El mínimo proceso 0 sin inicialización prodría ser:

_ _ PARSE 0
MESSAGE "Ellos no entienden "
REDO

_ _ PROCESS x ; Tratar cualquier comando


REDO
Para usarlo para hablar con un PIS se realizarán dos o más entradas (en
el proceso x del ejemplo anterior), similar a:

DECIR nombre SAME pos 38 ; ¿Están ellos ahí?


PROCESS y ; Decodifica el discurso..
DONE ; Ya que la SL se ha destruido hacer siempre DONE

DECIR nombre MESSAGE z ;"Ellos no están aquí!"


DONE

Con un “PROCESS y” similar a:

_ _ PARSE ; Siempre hay que hacer esta entrada


MESSAGE x ; "Ellos no entienden"
DONE

word word CondAct list ; Cualquier frase que nuestro PSI entienda
_ _ MESSAGE x ; como arriba u otro mensaje diferente

NEWTEXT

Obliga a la pérdida de cualquier frase que permanezca en la línea


actual del input. Se puede usar para evitar que el jugador continue sin
un nuvo input si algo sale mal por su situación. Por ejemplo, la
acción COGER (GET) ya de por sí lleva un NEWTEXT si por alguna razón
falla en coger el objeto que se requiere. Ello se usa para prevenir el
desastre en una frase como:

COGE LA ESPADA Y MATA AL ORCO CON ELLA

ya que atacar al ORCO sin la espada puede ser peligroso.

SYNONYM verb noun

Sustituye el verbo y el nombre dados en la SL. Nullword (por lo general


'_') puede utizarce para suprimir la sustitución de uno u otro (o
ambos). Por ejemplo:

MATCH ON SYNONYM LIGHT MATCH

STRIKE MATCH SYNONYM LIGHT _

LIGHT MATCH .... ;Acciones...

cambiará la SL a un formato estándar para varias entradas diferentes.


Permitiendo que sólo una ejecute las acciones.
Diversas acciones que tratan de saltos, bucles y control de subrutinas:

PROCESS procno.

Esta poderosa acción transfiere la atención de DAAD hacia el número de


tabla de Proceso especificado por procno. Observe que se trata de una
verdadera llamada a una subrutina y cualquier salida de esta nueva
tabla (por ejemplo, DONE, OK etc.) devolverá el control al condacto
siguiente a la llamada de la acción PROCESS. Un subproceso puede llamar
(anidar) a otros procesos hasta un profundidad de 10 en cuyo punto se
creará un error de "Límite Alcanzado".

REDO

Reiniciará la tabla que se está ejecutando, lo que permite

DOALL locno+

Otra acción muy poderosa que permite la implementación de un comando de


tipo "ALL" (todo).

1 - Se intenta encontrar un objeto en la localidad locno, Si no


se encuentra el DOALL se cancela y una acción DONE se ejecuta.

2 - Si se encuentra un objeto, el número del objeto se convierte


en el Nombre1 de la SL (y el Adjetivo1 si está presente) por
medio de una referencia a la tabla de definición de Objetos
(/OBJ). Si Nombre (Adjetivo) 1 es similar o hace juego con
Nombre (Adjetivo) 2 entonces se hace una vuelta al paso 1.
Esto es para facilitar al parser "Verbo TODO EXCEPTO objeto"
(coge todo excepto...)

3 - El siguiente condacto y/o entrada en la tabla se considera


entonces. Esto convierte efectivamente una frase del tipo
"Verbo todo" en una del tipo "Verbo objeto" la cual será
entonces procesada por la tabla como si el jugador lo hubiese
tecleado de la última forma.

4 - Cuando se hace un intento de salida de la tabla actual, si el


DOALL todavía está activo (por ejemplo, no ha sido cancelado
por una acción), entonces la atención del DAAD vuelve de nuevo
a DOALL como desde el paso 1. La búsqueda continuará desde el
siguiente objeto (el que tenga un número más alto).

La consecuencia de este método de búsqueda a través de la tabla de


definición de Objetos (/OBJ) es que los objetos que tengan el mismo
Nombre y Adjetivo en su descripción, (y en donde el juego sólo sabe a
cual objeto se refiere por su presencia en esa localidad) son buscados
en un orden ascendente de número de objeto, si no algunos de ellos se
perderían.

Si se usa un bucle DOALL para cosas como ABRIR TODO, hay que tener en
cuenta el hecho de que, en el funcionamiento de la mayoría de las
puertas, se han puesto banderas y que entonces habría que convertir
esas banderas en objetos para poderlas incluir en un bucle DOALL.
SKIP distance | etiqueta

Donde distance es un rango entre -128 a 128, o a la etiqueta


especificada.

Mueve la entrada actual hacia atras o hacia delante en la tabla. 0


significa la proxíma entrada (por o que no tiene sentido). -1
significa que reinicia la entrada actual (es Peligroso). No hay ninguna
comprobación de errores, por lo que es possible saltar fuera de la
tabla (sería Fatal).

Skip puede aceptar como parámetro una etiqueta local. Estas etiquetas
son precedidos por el signo “$”. Son locales para cada tabla de
procesos y no afectará a los símbolos globales utilizados. La gran
ventaja es que se pueden referenciar.

Esto es implementado con parches trasera. El símbolo se define mediante


la colocación en el archivo fuente inmediatamente antes de la entrada
se refiere a:

Por ejemplo:

$backloop
_ _ PRINT Flag
MINUS Flag 1
NOTZERO Flag
SKIP $backloop

_ _ ZERO Error
SKIP $Forward

_ _ EXIT 0

$Forward
_ _ ...

Dos acciones hacen que DAAD salga completamente de la tabla de


Respuestas o de Procesos, son:

RESTART

Cancela cualquier bucle DOALL, cualquier llamada a sub-proceso y salta


al peoceso 0 y lo ejecuta desde el principio.

END

El SM13 ("¿Quieres jugar otra vez? ") se imprime y se llama a la rutina


de INPUT. Cualquier bucle DOALL y cualquier llamada de subprocesos son
canceladas. Si la respuesta no empieza con el primer carácter del SM31,
se salta a Inicialización. Si no el jugador retornará al Sistema
operativo, ejecutandose el commando EXIT 0.
EXIT value

Si value es 0 se retorna directamente al Sistema operative. Cualquier


valor distinto de 0, reiniciará todo el juego. Note que a diferencia
de RESTART solo se reinicia el procesamiento, lo que limpiará y
restaurará ventanas, etc. Los valores diferentes ce cero, realmente
especifican un número de parte a saltar en las verciones con AUTOLOAD.
Sólo el PCW admite esta función por el momento. Probablemente se
añadirá al PC como parte del trabajo HYPERCARD. Así que si tienes
intención de utilizarlo como un reset, aseguresé de que utiliza el
número de PART como valor.

Tres acciones de salida de table:

DONE

Esta acción salta al final de la tabla de Procesos y banderas e indica


a DAAD que ya se ha ejecutado una acción, es decir, no se consideran
más condactos o entradas. Se retornará a la tabla de Procesos previa o
al punto de inicio de cualquier bucle DOALL que esté activo.

NOTDONE

Esta acción ejecuta un salto al final de la tabla de Procesos y le


índica a DAAD que ninguna acción ha sido hecha. Quiere decir que no se
consideran más condactos ni entradas. Causará una vuelta a cualquier
tabla de Procesos previa o a un punto de partida de cualquier bucle
DOALL que esté activo. Esto hará que DAAD imprima uno de los mensajes
"No puedes" si es necesario, es decir, si no hay más acciones y no hay
entradas presentes en las conexiones para el Verbo actual.

OK
El SM15 ("OK") se imprime y la acción DONE se ejecuta.

Cuatro acciones se utilizan para llamar a una rutina externa a DAAD.


Dos, SFX y GFX ya cuentan con una función en varias máquinas, mientras
EXTERN y CALL proporcionaN mecanismos de llamadas de propósito
general. Todos estos comandos se documentan completamente en el
capítulo de comandos externos

EXTERN value

Llama una rutina externa con value como parámetro. La dirección se


establece por el linkado o mediante el commando pre-compilador #extern
- ver los detalles de la máquina y la sección extern para obtener
información específica.

CALL address

Permite ejecutar 'address' en memoria (o un segmento de la base de


datos para 16 bits).
SFX value1 value2

Esta es una segunda acción de tipo EXTERN diseñada para extenciones de


Efectos de sonido. Por ejemplo, tiene una función 'default' que
permite que el valor 'value1' escribir en un registro el 'value2' del
chip de sonido en máquinas de 8 bits. Esto se puede cambiar con #sfx o
a través del linkado. Ver los detalles de la máquina y la sección
extern para obtener información específica.

GFX value1 value2

Un EXTERN destinado a tratar cualquier extensión gráfica para DAAD. En


16 bits utiliza para implementar las facilidades de conmutación de
pantalla. Esto se puede cambiar con #gfx o a través del linkado. Vea
los detalles de la máquina y la sección extern para obtener
información específica.

There are two actions to implement the primary graphics handling


facilities of DAAD. The descriptions especially for 16bit users
should be read in conjunction with the details of the GFX
command, which provides the extended graphics handling.

Hay dos acciones para implementar el manejo y manipulación de graficos


primaries en DAAD. Las descripciones especialmente para usuarios de 16
bits deben leerse conjuntamente con los detalles del comando GFX, que
proporciona la manipulación de gráficos extendido.

PICTURE picno

Cargará en el buffer de imagen la imagen especificada por picno. Si no


hay ninguna imagen correspondiente la siguiente entrada se llevará a
cabo, si la hay, entonces se ejecuta el siguiente condacto.

Por ejemplo, Para describir una localidad en el Process 0, sería:

_ _ PICTURE [Player] ; Intenta cargar la imagen


DISPLAY [Dark] ; Si la pantalla no está oscura

_ _ DESC [Player] ; Descripción del texto de todos modos

Consulta BLANK.SCE para ver una entrada que trata oscuridad


completamente, etc.

DISPLAY value

Si value=0 entonces la última imagen buffer se coloca en pantalla.

Si value !=0 y la imagen no es una subrutina el area de la ventana


dada se borra. Esto se utiliza normalmente con indirección y una
bandera para comprobar y mostrar la oscuridad. Vea el ejemplo de la
acciónn PICTURE.

En una máquina drawstring (8 bits)cuando una imagen de localidad (no


subrutina) es dibujada, la posición del cursor de dibujo se establece
en el origen y los colores a los de la tabla de colores. Para una
subrutina la imagen se iniciará en el punto final del último dibujo.
Tenga en cuenta que sólo la posición del cursor se mantiene, los
colores siempre comienzan en los colores actuales del stream.
En las máquinas de tipo pixel la acción introducirá los datos de la
ventana requerida y ajustará la imagen al stream actual. Si ajustas el
tamaño de los gráficos correctamente, puede utilizar esto para borrar
una imagen visualizada al seleccionar el mismo stream y utilizando la
acción CLS.

Acciones varias:

MOUSE option

Esta acción en preparación para el sistema hypercard, implementae el


esqueleto de un controlador del ratón en IBM.
4.2 Versiones del interprete por máquinas

Esta sección proporciona información sobre el uso de los intérpretes


en cada máquina. También provee información relevante acerca de
elementos específicos de cada máquima relacionados con el manejo
externo, masterización, etc.

4.2.0 El IBM

Ejecutando el interprete

Hay un gran número de versiones del intérprete, dependiendo de idioma,


características de depuración, sistema de gráficos etc. Todos se
suministran en un archivo .OBJ para permitir el linkado con las
rutinas EXTERN. El método utilizado para darles nombre se explica a
continuación.

Los archivos finales .EXE son programas estándar MSDOS. Se requiere


que el sistema operativo esté presente para el manejo de disco. La
salida de pantalla se maneja dentro del Sistema.

El archivo más común con el que vamos a trabajar será INTSDM si está
utilizando el idioma español. Esta es la versión 'Interpreter,
Spanish, Developer, Multi-graphics'. Las características del desarrollo
del intérprete también se explican en la sección sobre la
configuración de la máquina de desarrollo

Para utilizar los archivos OBJ debe combinarlos usando LINK con
cualquier rutina externa que está utilizando.

Por ejemplo, en el directorio \DAAD (con LINK.EXE incluido en PATH):

LINK \OBJ\INTSDM+EXTERN+CHARS,INTSDM;

Se creará un archivo INTSDM.EXE.

El módulo EXTERN contiene rutinas para lidiar con EXTERN. Mientras que
el módulo de CHARS contiene varias variables externas que pueden ser
modificadas reemsamblando CHARS.ASM. El módulo CHARS siempre debe ser
el último módulo que se indique en LINK.

El enlace de arriba usa archivos EXTERN y CHAR mínimos que se


suministran en formato .OBJ para aquellos que no tienen un
ensamblador. Para cambiar el número de partes en los juegos en
producción (establecido en 2 en el CHARS.OBJ suministrado) y añadir
rutinas externas tendrá que ser capaz de ensamblar los archivos .ASM.
Esto requerirá un ensamblador como MASM que produce archivos objeto
compatibles con LINK.

Intérpretes para no desarrolladores tienen la Forma:

INTl{M {V}}
Los interpretes para desarrolladores:

INTlD{M} name {M|C|E|V}

donde l es el idioma

M indica archivos gráficos multi-máquinas (.DAT) (La opción V


solamente es válida con estas versiones de máquinas), de lo contrario
se buscaran los ficheros .CGA/.EGA desde DMG.

name es el nombre del archive .DDB (no especificar la ruta o la


extención aquí). Solo desarrolladores:

M selecciona el modo texto MDA


C selecciona el modo CGA 4 colores 320x200 (por defecto)
E selecciona el modo EGA 16 colores 320x200
V selecciona el modo VGA paleta de 16 colores 320x200
(la opción V sólo se puede utilizar con los interpretes tipo 'M')

Ejemplos:

Supponiendo que tenenos LINKeadas las versions del interprete que


necesitamos y la hemos situado en el directorio \DAAD, el siguiente
comando:

A>INTSDM CAVE

ejecutará la aventura en español CAVE.DDB en CGA usando gráficos multi-


máquina (un archivo .DAT enviado desde el ST) proporcionando
información completa de depuración.

A>INTED CAVE E

ejecutará la aventura en ingles CAVE.DDB en EGA usando un archivo


grafico .EGA, producido con PC-DMG, proporcionando información
completa de depuración.

A>INTSM

ejecutará la PART1/2/x (como esté defineda en CHARS) de la aventura en


español, seleccionada por el usuario. Se utilizará gráficos multi-
máquina en el modo gráfico más alto disponible, en el orden EGA,CGA.
Sin no se hay tarjeta gráfica, se cambiará al modo texto MDA.

A>INTEM V

ejecutará la PART1/2/x (como esté defineda en CHARS) de la aventura en


ingles, seleccionada por el usuario. Se utilizará gráficos multi-
máquina en modo VGA. Si no está disponible, en el orden EGA,CGA. Sin no
se hay tarjeta gráfica, se cambiará al modo texto MDA.
Caracteres especiales del idioma

El interprete IBM Español reconoce las teclas estandar 'dead' para


generar caracteres acentuados y simbolos especiales. Esta opción sólo
funciona si el controlador de teclado correcto (usando KEYB) se ha
instalado.

Notas especiales

El interprete IBM (y de hecho el ST/AMIGA) usa un metodo de ajuste de


53 columnas de texto en 320x200 píxeles en los modos gráficos. Esto se
logra utilizando solamente 6 píxeles para el ancho. Sin embargo, hay un
problema. Todo desplazamiento y limpieza se realiza en las 40 columnas
proporcionadas para un ancho de carácter de 8 pixeles. Esto es similar
al método utilizado en el Spectrum para obtener 42 col# umns.

Por lo que debe tener cuidado al especificar tamaños de ventana. Su


tamaño será siempre modificado lo más próximo a los 8 píxeles para
contener el número requerido de columnas de texto. La impresora de
texto actual permite ventanas de 53 columnas, solamente en los scrolls
y limpiado puede haber problemas. Una regla general es que al menos se
debe dejar un espacio de columna de texto entre ventanas si desea
desplazarse o limpiar sin afectar ventanas adyacentes.

Archivos a incluir en el juego

Los siguientes archivos tienen que estar presentes en el directorio


actual para que el juego se ejecute.

1/ Gráficos DMG para PC antiguos:

INTl.EXE ;Interpreter
Este archivo debe linkarse con un módulo CHARS con el número correcto
de "partes". El CHARS.OBJ suministrado está establecido en dos. El
archivo se debe renombrar con el nombre del juego.

PARTx.CHR ;Conjunto de caracteres (generalmente del Spectrum)


PARTx.DDB ;Base de datos de texto (desde ficheros .SCE y DC)
PARTx.CGA ;fichero gráfico CGA (desde DMG)
PARTx.EGA ;fichero gráfico EGA (desde DMG)
Estos tres archivos deben estar presentes por cada parte del juego

PART1.CGS ;pantalla de carga CGA (use utilidades CSTA/CACGA)


PART1.EGS ;pantalla de carga EGA (a partir de PI1 usando CSTEGA)
Estos archivos son opcionales. Si no se encuentran, se mostrará una
pantalla en blanco.

Para una version autoconmutada CGA/MDA, simplemente remueva los


ficheros EGA y reemplace el interprete por 'INTlCGA.EXE'.
2/ Nuevos gráficos ST DMG:

INTlM.EXE ;Interprete, donde 'l' es S o E por el momento.


Este archivo debe linkarse con un módulo CHARS con el número correcto
de "partes". El CHARS.OBJ suministrado está establecido en dos. El
archivo se debe renombrar con el nombre del juego

PARTx.CHR ;Conjunto de caracteres


PARTx.DDB ;Base de datos de texto (desde ficheros .SCE y DC)
PARTx.DAT ;Archivo gráfico Común (desde DMG en el ST)
Estos tres archivos deben estar presentes por cada parte del juego

PART1.CGS ;pantalla de carga CGA (use utilidades CSTA/CACGA)


PART1.EGS ;pantalla de carga EGA (a partir de PI1 usando CSTEGA)
PART1.VGS ;pantalla de carga VGA (a partir de PI1 usando CSTVGA)
Estos archivos son opcionales. Si no se encuentran, se mostrará una
pantalla en blanco.

Archivos necesarios para una copia con autoarranque

Además de los archivos anteriores, si desea que el disco sea de


autoarranque, entonces deberá formatear el disco con la opción '/S'. A
continuación, los archivos COMMAND.COM y AUTOEXEC.BAT (que contendrá al
menos una línea con el nombre del juego) deberán estar presentes.

Recuerde que no se le permite liberar software con MSDOS presente - que


esté en contra del acuerdo de distribución.

4.2.1 Spectrum 48/128

Ejecutando el interprete

En DISCiPLE

LOAD d1"drs"

En +3
LOAD "drs"

Archivos necesarios para ejecutar el juego

Necesitará la base de datos y los archivos gráficos.

Archivos necesarios para una copia con autoarranque

Esto se logra mejor combinando cada uno de los bloques de memoria y


guardandolos como un único archivo. Un sensillo cargador BASIC basado
en los programas 'drl' o 'drs' puede utilizarce para cargar una
pantalla de inicio y el archivo.
Caracteres especiales del idioma

Los caracteres especiales del Español se introducen seleccionando el


MOD EXTENDED (es decir, tecla Single en 128/+2, o CAPS y SYMBOL SHIFTS
en 48K), y a continuación, pulsar la tecla correspondiente, como se
muestra en la siguiente tabla:

!,?,a,e,i,o,u,n.
,¨, ,‚,¡,¢,£,¤

Además, si la tecla D o F se colocan después del MODO EXTENDIDO


obtendrá ¤ y ¥ respectivamente, que son las teclas que están en en
España!

Notas especiales

El interprete de Spectrum (y el de MSX que lo emula) utiliza un modo de


40 columnas que abarrota 4 columnas de texto en un grupo de tres
columnas normales. Note que esto significa que el color del borde de
las ventanas deberan elaborarse con cuidado, ya que todas las columnas
del Spectrum son limpiadas y desplazadas por el sistema de ventana,
como si la pantalla de atributos se hubiera quedado atascada en 32
columnas por el hardware. Si dos columnas 40col caen en una columna
32col, el limpiado, desplazamiento o establecimiento de atributos
afectará a ambas columnas 40cols.
#whichever#
Usted está utilizando realmente. Esto no se aplica a la impresión como
las máscaras del sistema de impresión de sus caracteres correctamente
permitiendo ventanas que contengan el texto como era de esperar.

4.2.2 Amstrad CPC 464/664/6128

Ejecutando el interprete

Para el Amstrad tendrá que crear un programa ejecutable. El programa


MCRF.COM se utiliza bajo CPM para crear un programa totalmente
independiente que se puede iniciar utilizando RUN"nombre". El formato
es:

MCRF oufile{.BIN} interp{.Z80} text{.DDB|.BIN} graphics{.BIN}

Tenga en cuenta que debe especificar el tipo de base de datos de texto.


DDB es directa del compilador y BIN se supone que tiene una cabecera de
disco CPC. Por defecto es BIN, pero le aconsejamos enviar archivos DDB
y darle el nombre completo. Esto significa que no es necesario usar
"AAH" en el PC para añadirle una cabecera de disco Amstrad

Archivos necesarios para ejecutar el juego

El disco tendrá que contener el CPM si se trabaja con CPM2.2 ya que


necesita ejecutar MCRF.
DCPCIl.Z80 ;El interprete, donde 'l' es S o E
name.DDB ;Una base de datos desde el PC
name.BIN ;Un archive gráfico dibujado/editado con DG.
MCRF.COM
Archivos necesarios para una copia con autoarranque

Solamente es necesario el archive BIN ejecutable creadoo por MCRF. Si


es necesario, puede añadir un pequeño programa de arranque para cargar
la pantalla de prentación, establecer los colores, etc.

Caracteres especiales del idioma

Las letras especiales son las siguientes en DCPCIS.Z80

CTRL a,e,i,o,u,n - ,‚,¡,¢,£,¤


CTRL v - 
CTRL 1 -
The /? key now gives ¨?
¤ works as expected

Notas

Las opciones INK y PAPER establecen que la tinta utilice 0-3 para
escribir los caracteres. Estos dependen de los colores establecidox en
la base de datos de gráficos. BORDER establece el color físico real del
borde de 0-26.

4.2.3 El CBM 64/128

Ejecutando el interprete

El iterprete Español se llama SDI o DC64IS.

El interprete contiene un pequeño programa BASIC que permite grabar a


CINTA y recargar utilizando SHIFT/RUNSTOP, o desde el disco utilizando
LOAD"name",8 y RUN. Aunque esto está bien para pequeños programas la
carga de memoria no es fiable, es mejor usar los cargadores que se
describen a continuación con LOAD"",8,1.

Hay dos pequeños programas en el disco de lanzamiento llamado LDS1 y


LDS2. Estos se pueden renombrar como se quiera.

Se inician con:

LOAD "name",8,1 ; Donde name es el LDSx renombrado

A continuación, carga SDI y las bases de datos de texto y gráficos que


se deben llamar PARTx, a continuación se inicia el juego.

Caracteres especiales del idioma

Las letras especiales se obtienen como sigue en el CBM para el


intérprete español DC64IS.
CTRL a,e,i,o,u,n - ,‚,¡,¢,£,¤
CTRL v - 
<- (siguiente a 1 topleft) –
La tecla /? da ¨?
[: is now ¤¥ (mayusculas y minusculas)

4.2.4 El MSX

Funciona igual que todas las demás versiones realmente. El intérprete


español reconoce todas las letras acentuadas desde el teclado.

Véase también la nota sobre 40 columnas en el Spectrum.

Hay una sutil diferencia entre el MSX y Spectrum: Cada línea de píxeles
en MSX tiene su propio atributo de color. Esto puede causar algunos
problemas leves en los gráficos al portarlos. Con el fin de mantener la
velocidad solamente se establecen los atributos del pixel por encima y
por de bajo del que está siendo trazado (esto no es estrictamente
cierto, sólo se establece si corresponde posicion línea-columna 8x8).
Esto proporcionará una emulación razonable del Spectrum, pero puede
causar problemas si se dibujan los gráficos suponiendo que todo el
color de la celda de caracteres se ajustará al dibujar una línea a
través de ella. Nota: ¡ES DEMASIADO LENTO establecer todas las líneas
a8 píxeles!

4.2.5 El Atari ST

Por el momento suministramos dos versiones del intérprete: lDIn.PRG y


lDInL.PRG

Donde l es el idioma y n el número de partes.

Las versions xxxL.PRG no permiten que el programa se ejecute en Media


Resolución. Esto evita efectivamente el uso en modo texto.

Ejecutando el interprete

Simplemente haga clic en el archive PRG. Puede renombrar el archive


como quiera

Archivos necesarios para ejecutar el juego

lDIn.PRG o lDInL.PRG (renombrado con el nombre del juego)

PARTx.CHR ;Conjunto de caracteres para el modo hi-res 8x8


PARTx.CH0 ;Conjunto de caracteres para el modo lo-res 6x8
PARTx.DDB ;La base de datos (desde ficheros .SCE y DC)
PARTx.DAT ;Archivo gráfico Común (desde DMG)
Estos cuatro archivos deben estar presentes por cada parte del juego.
Puede omitir el archivo CHR si solamente usa el interprete de baja
resolución (lo-res).

PART1.SCR ;pantalla de carga(archivo PI1 renombrado)


La pantalla de carga es opcional. Si no se encuentra, se mostrará una
pantalla en blanco.

También te puede interesar abrir una ventana, centre el archivo PRG y


guárdelo en el escritorio. Como puede mover el archivo que se visualiza
(porque ahora hay otro archivo en el disco) puede que tenga que repetir
el proceso.

Los requerimientos para hacer una copia con autoarranque son los mismos.

Caracteres especiales del idioma

No necesita el programa ACCENTS en una carpeta de auto. De hecho si se


agrega tendrá que pulsar las teclas de acento DOS VECES! Aparte de que
las teclas de 'dead' funcionan como es de esperar.

4.2.6 El Amiga

Sólo hay un único intérprete para cada idioma en el Amiga, lDIn. Donde
l es el idioma y n el número de partes.

Ejecutando el interprete

Desde la línea de comandos, escriba el nombre del intérprete. Puede


crea un icono de tipo 'TOOL' y darle el mismo nombre que el intérprete
y ejecutarlo hacidndo clic en el icono del programa. Por supuesto,
puede cambiar el nombre a lo que quieras.

Tenga en cuenta que el intérprete es un verdadero proceso multi-tarea.


Puede arrastrar la ventana hacia abajo para ver el escritorio. Si la
memoria lo permite, puede iniciar otra copia del juego o una parte
diferente e incluso un juego/programa diferente. También puede hacer
clic en la parte superior derecho de la pantalla, para traer al frente
o atras la pantalla, si los gadgets de 'intuition'estan presents, como
es habitual.

Archivos necesarios para ejecutar el juego

lDIn ;renombrado con el nombre del juego


lDIn.info ;un icono de tipo TOOL

PARTx.CHR ;Conjunto de caracteres para el modo lo-res 6x8


PARTx.DDB ;La base de datos (desde ficheros .SCE y DC)
PARTx.DAT ;Archivo gráfico Común (desde DMG en el ST)
Estos tres archivos deben estar presentes por cada parte del juego.

PART1.SCR ;pantalla de carga (archivo PI1 convertido a .BIT con


DSTA en el ST)
La pantalla de carga es opcional. Si no se encuentra, se mostrará una
pantalla en blanco.
Archivos necesarios para una copia con autoarranque

Deberá crear un disco que contenga el sistema operativo mínimo AMIGA (Si
mantiene una copia de este disco puedes simplemente hacer una copia del
mismo cada vez que realiza un master).

Coloque todos los archivos anteriores en el disco y luego cambie la


última línea del archivo 's/startup-sequence' por el nombre de su
intérprete.

Caracteres especiales del idioma

Debe asegurarse de que el controlador correcto del idioma del teclado


esté presente en la carpeta device del disco de arranque. Si es así
todos los acentos funcionarán correctamente.

4.2.7 El PCW 8000 y 9000 series

Solo se suministra un interprete para cada idioma en el PCW: DPCWIl.Z80


Donde l es el idioma. Es necesario renombralo como archive .COM antes
de utilizarlo.

Ejecutando el interprete

Desde e prompt A: teclee el nombre del interprete.

Archivos necesarios para ejecutar el juego

DPCWIl.Z80 ;renombrado con el nombre del juego.COM


PARTExxx.CHR ;Conjunto de caracteres modo 8x8
PARTExxx.DDB ;La base de datos (desde ficheros .SCE y DC)
PARTExxx.DAT ;Archivo gráfico Común (desde DMG en el PC)
Estos tres archivos deben estar presentes por cada parte del juego.
Puede omitir el archivo CHR si solamente usa el interprete de baja
resolución (lo-res).

PART001.SCR ;pantalla de carga (CST1PCW desde un archivo PI1)


La pantalla de carga es opcional. Si no se encuentra, se mostrará una
pantalla en blanco.

Los requerimientos para hacer una copia con autoarranque son los mismos.

Caracteres especiales del idioma

Todas las teclas de acento funcionarán correctamente.

Notas:

La pantalla del PCW tiene 31 líneas por 96 columnas y esto va a


necesitar algún tipo de procesamiento especial. Todos los comandos de
ventana se pueden utilizar en este tamaño de pantalla, pero le sugerimos
que utilice un buen número declaraciones #if PCW.
Este es el primer intérprete en ofrecer el sistema AUTOLOAD. Esto
permite que el comando EXIT n seleccione la parte 'n' que luego se
cargará automáticamente.

Todos los nombres de archivo tienen que tener el formato PARTExxx.eee.

Los intérpretes esperan encontrar todos los archivos de la parte 1 en


la cara A, y todos los de la parte 2 en la cara B. Esperamos producer
una utilidad de instalación, pero por el momento este es el proceso.
4.3 Errores

Aunque hacemos una gran cantidad de comprobaciones en el Compilador,


hay algunos errores que solo se pueden detector en tiempo de ejecución.

Los intérpretes pueden arrojar varios tipos de errores. Por lo general,


en una pequeña ventana en la parte superior izquierda en 8 bits y en el
centro en 16 bits, pero si es durante una grabación serán impresos en
el flujo de entrada actual, para no causar el reinicio del juego.

Los errores son:


I/O Error Estos dos son evidentes
BREAK
Error n Donde n es el error normal de la máquina
Game Error n Donde n es uno de
0 – Número de objeto inválido
1 – Asignación illegal HERE (Bandera 38)
2 - Intentar establecer objeto a loc 255
3 - Límite alcanzado en llamadas a PROCESOS
4 - Intento de jerarquía DOALL
5 – CondActo ilegal (db corrupta o antigua)
6 – Llamada a proceso invalido
7 – Número de mensaje invalido
8 – IMAGEN invalida (solo en drawstring)

En la versión de depuración de los intérpretes, los errores en tiempo


de ejecución son seguidos por cuatro números en la forma p:v,n>c donde
p es el número de proceso, v y n son los números de palabra del verbo y
sustantivo de la entrada que ha causado el error, y c es el número
condacto tal como figura en la sección sobre el compilador.

a) Los números de error tienen los significados dados anteriormente.

b) El número de la tabla de proceso no debería necesitar más


explicaciones.

c) Los valores de las palabras se pueden consultar en el vocabulario.


Nota: Un valor de palabra de 255 significa que caracter nullword.
d) El número válio de Condición/acción tiene los siguientes
significados:

0 AT 32 AUTOD 64 BEEP 96 INPUT


1 NOTAT 33 AUTOW 65 PAPER 97 SAVEAT
2 ATGT 34 AUTOR 66 INK 98 BACKAT
3 ATLT 35 PAUSE 67 BORDER 99 PRINTAT
4 PRESENT 36 SYNONYM 68 PREP 100 WHATO
5 ABSENT 37 GOTO 69 NOUN2 101 CALL
6 WORN 38 MESSAGE 70 ADJECT2 102 PUTO
7 NOTWORN 39 REMOVE 71 ADD 103 NOTDONE
8 CARRIED 40 GET 72 SUB 104 AUTOP
9 NOTCARR 41 DROP 73 PARSE 105 AUTOT
10 CHANCE 42 WEAR 74 LISTAT 106 MOVE
11 ZERO 43 DESTROY 75 PROCESS 107 WINSIZE
12 NOTZERO 44 CREATE 76 SAME 108 REDO
13 EQ 45 SWAP 77 MES 109 CENTRE
14 GT 46 PLACE 78 WINDOW 110 EXIT
15 LT 47 SET 79 NOTEQ 111 INKEY
16 ADJECT1 48 CLEAR 80 NOTSAME 112 BIGGER
17 ADVERB 49 PLUS 81 MODE 113 SMALLER
18 SFX 50 MINUS 82 WINAT 114 ISDONE
19 DESC 51 LET 83 TIME 115 ISNDONE
20 QUIT 52 NEWLINE 84 PICTURE 116 SKIP
21 END 53 PRINT 85 DOALL 117 RESTART
22 DONE 54 SYSMESS 86 MOUSE 118 TAB
23 OK 55 ISAT 87 GFX 119 COPYOF
24 ANYKEY 56 SETCO 88 ISNOTAT 120 internal
25 SAVE 57 SPACE 89 WEIGH 121 COPYOO
26 LOAD 58 HASAT 90 PUTIN 122 internal
27 DPRINT 59 HASNAT 91 TAKEOUT 123 COPYFO
28 DISPLAY 60 LISTOBJ 92 NEWTEXT 124 internal
29 CLS 61 EXTERN 93 ABILITY 125 COPYFF
30 DROPALL 62 RAMSAVE 94 WEIGHT 126 COPYBF
31 AUTOG 63 RAMLOAD 95 RANDOM 127 RESET

Nota: Debe probar su aventura para asegurarse de que no experimenta


alguno de estos errores en tiempo de ejecución.
4.4 El parser

El parser actúa buscando en una línea de Input, (que puede ser hasta 125
letras), palabras que estén en el Vocabulario, extrayendo de esta forma
"frases" que se puedan convertir en Sentencias Lógicas (SL).

Cuando una frase ha sido extraída, las tablas de Respuesta y de


Conexiones son revisadas para ver si la Sentencia Lógica es reconocida
en ellas. Si no, entonces el Mensaje del Sistema número 8 ("No puedes
hacer eso") o el Mensaje del Sistema número 7 ("No puedes ir en esa
dirección") se imprimirá, dependiendo siempre del valor del Verbo (por
ejemplo, si el Verbo tiene un valor inferior a 14, se usará el Mensaje
del Sistema 7, porque los Verbos inferiores a 14 tienen un sentido de
dirección). Luego se pide otro nuevo Input.

También se pedirá un nuevo input si cualquier acción falla de alguna


otra forma, (por ejemplo, un objeto que sea muy pesado), o si el
escritor lo fuerza con una acción NEWTEXT. A veces este salto a pedir
otro nuevo input se hace para evitar resultados verdaderamente
catastróficos. Supongamos que el jugador haya tecleado "COGE EL HACHA Y
ATACA AL TROLL" y no haya ningún hacha a mano; en este caso se haría un
salto para impedir que el jugador pueda atacar al troll con las manos
vacías, con el consiguiente mordisco en la cabeza y desmembramiento
sangriento.

Si la Sentencia Lógica (SL) se ejecuta satisfactoriamente, el parser


extrae otra frase, y si no la hay, requiere un nuevo texto.

Las frases pueden ir separadas por las conjugaciones "Y" o "ENTONCES" y


por cualquier otro signo de puntuación.

Nota Muy Importante: En la versión inglesa se utilizaba el pronombre


"IT' para referirse al último Nombre o Adjetivo que ha sido usado en la
frase previa, aunque fuese un input independiene. Esto permitía la
facilidad de poder decir "coge la manzana y come it = (ella)"

En la versión castellana se ha tenido el cuidado de modificar esta


zona, para que el parser haga una búsqueda a la inversa de las
terminaciones de cualquier Verbo, buscando las terminaciones LA, LO,
LOS y LAS, permitiendo así que el jugador pueda decir "COGE LA MANZANA
Y COMETELA". Esto facilita mucho la forma de jugar, puesto que no
tienes que repetir dos veces manzana.

El parser sabrá que todos los Nombres que tengan un valor menor de 50
los utilizará el escritor para nombres propios, y por lo tanto no se
verán afectados por esta regla.

Por ejemplo, en la frase "COGE LA MANZANA DE EVA Y COMETELA", el parser


sabe que se refiere a la manzana si está situada con un número mayor de
50 y Eva con un número menor de 50.

El formato de la Sentencia Lógica es el siguiente:

(Adverbio)Verbo(Adjetivo1[Nombre1])(preposición)(Adjetivo2[Nombre2])

donde los tipos entre corchetes son opcionales.


La mínima unidad que forma una frase es un Verbo (o un Verbo de
conversion, que es un Nombre que tenga un valor menor de 20, en cuyo
caso, si no se encuentra el Verbo en esa frase, ese Nombre será
convertido en Verbo, es el ejemplo de: NORTE, SUR, etc.).

En caso de que el Verbo sea omitido en una frase, entonces la SL asumirá


que se está utilizando un Verbo previamente usado. Por ejemplo: "COGE
LA ESPADA Y EL ESCUDO" trabajará perfectamente, porque el parser sabe
que lo que estás intentando hacer con el escudo es cogerlo.

Tenga en cuenta que la frase no tiene porque escribirse estrictamente


por el jugador en este formato. A modo de ejemplo:

COGE LA PEQUEÑA ESPADA RAPIDAMENTE


RAPIDAMENE COGE LA PEQUEÑA ESPADA
RAPIDAMENTE LA PEQUEÑA ESPADA COGE

todas son frases equivalentes que producen la misma SL.

Una sentencia verdadera podría ser:

COGE TODO. ABRE LA PUERTA Y DIRIGETE AL SUR, LUEGO COGE LA MALETA


Y MIRA DENTRO DE ELLA.

Esta frase se dividirá en cinco SL:

COGE TODO
ABRIR PUERTA (porque el artículo LA no está en el Vocabulario)
SUR (porque DIRIGETE no está en el Vocabulario)
COGE MALETA
MIRA DENTRO ELLA (ese ella se asume que es maleta, puesto que es
el último Nombre del que se ha hablado)

Tenga en cuenta que DOALL no generará el objeto descrito por


Nombre(Adjetivo)2 de la Sentencia Lógica. Esto proporciona un método
sencillo de implementar EXCEPT. Por ejemplo COGE TODO EXCEPTO LOS PECES,
tiene el efecto secundario de no permitir DEJAR TODO EXCEPTO LOS PECES
EN LA MALETA, ya que tiene tres nombres.

4.4.0 Español

Si un Verbo tiene menos de 5 letras necesitará incluir las versiones


"lo,la,los,las" en el vocabulario. Obviamente se se trata de cuatro
letras, solamente necesitara la terminación 'l' conmo sinónimo, si se
trata de tres letras necesitará necesitará los sinónimos 'lo' y 'la' y
si es de una o dos letras necesitará 'lo','la','los' y 'las'.

Si tiene un nombre plural en el juego que cambia la tónica, entonces


necesitará incluir las tónicas y átonas - Vea talones en el juego de
demostración para ver un ejemplo.

El Parser Español trata de forma diferente los NOMBRES, PRONOMBRES y


ADJETIVOS que el Ingles. Específicamente se supone que los adjetivos
siguen a los nombres, y no se ocupa de los nombres compuestos. Un nombre
compuesto es donde un objeto es descrito por dos nombres como BANCO DEL
PARQUE, donde el jugador puede usar una o ambas palabras para describir
el objeto.
Por ejemplo: COGE BANCO, COGE PARQUE, COGE BANCO PARQUE, PARQUE y BANCO
probablemente serían sinónimos y el problema no se plantearía hasta que
se utilice un segundo nombre. Por ejemplo, PINTA BANCO PARQUE CON
BROCHA. Aquí BROCHA es nombre2, pero el parser asume que BANCO es
nombre1 y PARQUE es nombre2. El Parser Ingles se ocupa de esta
situación, pero es complicado hacerlo con el Español.

4.5 Las Banderas

Las banderas normales son libres para usarlas de cualquier forma en el


juego. Pero vea el archive SYMBOLS.SCE. En este archivo se define el
uso de las banderas desde la 0 a la 63 (las banderas del 'sistema').
También define los nombres simbólicos para las banderas del sistema.
Aunque DAAD no hace referencia a todas ellas (sólo las que se muestran a
continuación) pueden ser tratadas especialmente por las futuras
actualizaciones, por eso tratelás con cuidado.

La mejor manera de testear el bit definido en las banderas es utilizar


el condacto HASAT. Por ejemplo, HASAT MOUSE (suponiendo que SYMBOLS.SCE
se ha incluido) será verdadero si un ratón está presente.

Flag 0 Cuando no es cero indica oscuridad (vea también object 0)


Flag 1 Almacena la cantidad de objetos llevados (no puestos)
Flags 2 a 28 no se utilizan en realidad por los intérpretes de DAAD.
Por lo tanto son libres para usarlos en sus propios juegos. A través del
archivo SYMBOLS.SCE, define algunos usos predefinidos que le sugerimos
que se ajuste a ellos.

Flag 29
7 - Establece si hay gráficos disponibles. Si la bandera es menor de
128 se asume que está en modo texto de 80 columnas (porque sólo el
ST y el IBM no establecen este bit, y eso es cuando se están
ejecutando en modo texto de 80 columnas)
6 - Modo de dibujo invisible para máquinas Drawstring. Cuando se
establece este bit hace que las máquina Drawstring que usan paleta
(por ejemplo CPC) se abstengan de establecer los colores hasta el
toda la imagen se haya dibujado
5 - Imagenes OFF (drawstring solamente)
4 - Espere por una tecla después de dibujar la imagen (drawstring)
3 – Cambia el color del BORDER de la imagen (drawstring)
2/1 Sin definir
0 - Mouse presente (16 bit solamente).

Flag 30 Lleva la puntuación (no se usa actualmente en DAAD, pero es


tradicional)
Flag 31/32 (LSB/MSB) Turnos o número de frases del input del jugador.

Flag 33 El Verbo de la SL actual


Flag 34 El primer Nombre de la SL actual
Flag 35 El Adjetivo del primer Nombre
Flag 36 El Adverbio de la SL actual

Flag 37 El número máximo de objetos llevables (inicialmente 4) S e


e s t a b l e c e u s a n d o l a a c c i ó n ABILITY.
Flag 38 La localidad actual.
Flag 39/40 Sin definer.
Flag 41 Da el número stream de entrada que desea utilizar. 0 significa el
stream actual. Utilice Modulo 8. decir 8 se considera como 0
Flag 42 Lleva el mensaje con el que se contesta al input del jugador
(normalmente se selecciona de forma aleatoria entre los Mensajes del
Sistema 1 a 4)

Flag 43 Lleva la Preposición de la SL actual.


Flag 44 Lleva el Segundo Nombre de la SL actual.
Flag 45 Lleva el Adjetivo del Segundo Nombre.
Flag 46 Lleva el Pronombre del Nombre actual (La o Lo)
Flag 47 Lleva el Pronombre del Adjetivo actual (La o Lo)
Flag 48 holds Timeout duration required
Flag 49 Lleva la duración de TIEMPO MUERTO (timeout)
7 - Establece si el timeout se produjo en el último frame
6 - Establece si los datos están disponibles para recordar (no
es de uso del escritor)
5 - Configure esta opción para para provocar una autollamada del Buffer
de Input durante el Tiempo Muerto
4 - Configure esta opción para imprimir la entrada en la corriente
actual después de editar
3 - Configure esta opción para borrar la ventana de input
2 – Establece que ocurra el timeout despues de ANYKEY
1 - Establece que ocurra el timeout despues "Más..."
0 - Establece que ocurra el timeout solamente al inicio del input.

Flag 50 Lleva el Número del Objeto a un bucle DOALL (Es el valor que
sigue a DOALL).

Flag 51 Lleva el último objeto referenciao por GET/DROP/WEAR/WHATO etc.


Este es el número del objeto actualmente referenciado como
impreso en lugar de cualquier subrayados en el texto.

Flag 52 La fuerza del jugador (el máximo peso de los objetos llevados
más los puestos encima) Inicialmente es 10. Se establece con la
acción ABILITY.

Flag 53 Es la bandera para imprimir los objetos en INVENTARIO.


7 – Establece que cualquier objeto se imprima en LISTOBJ o LISTAT.
6 – Establece que los objetos se impriman en una línea continua. Por
ejemplo, LET 53 64 hará que se listen en una sola línea formando
una frase.

Flag 54
Lleva el número de la loc. del objeto actualmente referido.
Flag 55
Lleva el Peso del objeto actualmente referido.
Flag 56
Estará a 128 si el objeto actualmente referido es un contenedor.
Flag 57
Estará a 128 si el objeto actualmente referido se puede llevar
puesto encima.
Flag 58 y 59 Son los atributos de los objetos de usuario actualmente
referenciados.

Flags 60 y 61 Dan el código de teclado devuelto por una condición


INKEY. La bandera 61 sólo es relevante en IBM, ST y AMIGA
donde se utiliza para proporcionar los códigos extendidos
cuando se pulsa una tecla de cursor o función. En este
caso la bandera 60 es cero y la bandera 61 contiene el
código de IBM extendido.
Flag 62 en ST y PC da el modo de pantalla absoluta en uso en la
máquina. Esto permite comprobar esta última en cuanto a
tamaño de pantalla, etc, pero para determinar si se encuentra
en modo gráfico ver la bandera 29.
En ST:
0 - lo-res
1 - med-res
En PC:
4 - Modo CGA
7 - Modo mono caracter solamente
13 - is EGA or VGA
+128 (el Bit 7 establecido) en VGA para indicar que tienes conmutación
paleta.

Flag 63 define la ventana activa. Tenga en cuenta que se trata de una


copia por lo que cambiar su valor no afectará al Sistema DAAD.

Flag 64 a 255 están disponibles para su propio uso.


Sección 5.0 – El Código fuente

El archivo de Fuente consiste en un número de secciones


interrelacionadas que describen la aventura. Por lo general, se
corresponden con las áreas que se encuentran en la base de datos. Las
secciones son:

La sección de Control (CTL)

Esta sección le dice al compilador qué carácter ha sido elegido como


una palabra nula. A lo largo de este manual, la palabra nula (null
word) se supone que es un subrayado _. No debería ser necesario cambiar
este ajuste, no se aconseja de todas maneras.

La sección Vocabulario (VOC)

Cada entrada de esta sección contiene una palabra (o los primeros cinco
caracteres de una palabra), un valor de palabra y un tipo de palabra.
Palabras con el mismo valor y tipo se llaman sinónimos. Un
especificador de idioma opcional se puede dar para fijar una palabra
para un idioma específico.

La sección Mensajes del Sistema (STX)

Esta sección contiene los mensajes utilizados por el intérprete


numerados del 0 en adelante. La descripción del Intérprete muestra
cuando se utilizan estos mensajes. Además mensajes adicionales pueden
ser insertados por el escritor si así lo require el juego.

La sección Mensajes de Texto del Usuario (MTX)

Esta sección contiene el texto de los mensajes que se necesitan en la


aventura. Los mensajes se numeran desde 0 en adelante.

La sección Textos de Objetos (OTX)

Esta sección, que tiene una entrada para cada objeto, contiene el
texto que se imprime cuando se describe un objeto. Un objeto es
cualquier cosa en una aventura que puede ser manipulados y los objetos
son numerados desde 0 hacia arriba. El Objeto 0 es para el intérprete
una fuente de luz

La sección Textos de Localidades (LTX)

Esta sección, que tiene una entrada para cada localidad, contiene el
texto que se imprime cuando se describe una localidad. Las entradas
están numeradas de 0 hacia arriba y la localidad 0 es la localidad en
la cual comienza la aventura.

La sección de Conexiones (CON)

Esta sección tiene una entrada para cada localidad y cada entrada puede
estar vacía (null) o contener un número de "pares de movimiento". Un par
de movimiento consiste en un Verbo (o un Nombre de conversion a Verbo)
del vocabulario seguido por el número de una localidad.
Esto significa que cualquier Verbo (o un Nombre de conversion a Verbo)
con ese valor causa un movimiento hasta esa localidad. Una entrada
típica sería:

SUR 6
ESTE 7
SALIR 6
NORTE 5

lo que significa que SUR o SALIR (o sus sinónimos) producirán un


movimiento a la localidad 6. ESTE (o su sinónimo) a la localidad 7 y
NORTE (o su sinónimo) a la localidad 5.

Nota 1. Cuando la aventura completa se está jugando, lo único que


producirá movimiento será el Verbo de la SL.

Nota 2. Si se ejecuta un movimiento desde una entrada en la tabla de


Respuestas usando la acción GOTO, entonces no se necesita
poner ningún par de movimiento en la tabla de conexiones, a
menos que esa entrada sea necesaria para un PSI que se puede
mover incondicionalmente.

La sección de Definición de Objetos (OBJ)

Esta sección tiene una entrada para cada objeto especificado:

a) La localidad en la que está situado el objeto al comienzo de


la aventura.
b) El peso de los objetos.
c) El nombre y el adjetivo asociado con el objeto.
d) Si el objeto es un contenedor.
e) Si el objeto se puede poner/quitar.
f) El estado de los otros atributos de los objetos

La sección de La Tabla de Procesos (PRO)

Esta sección es el corazón del código fuente que proporciona el


principal control del juego. Cada tabla se compone de un número de
entradas. Cada entrada contiene el Verbo y el Nombre que va a ser
aparejado con la SL, seguido de cualquier número de condactos.

Cuando se juega la aventura, si hay alguna entrada en la tabla que


coincide con el Verbo y el Nombre1 de la SL, entonces los condactos son
válidos y se ejecutan.

Todos los condactos y lo que hacen, se ha especificado en la Sección 4.


El Intérprete. La SL puede establecerse mediante un método diferente de
la acción PARSE. Esto permitiría la creación de un sistema de menú, la
entrada de multiples-opciones, etc.

Process table 0

Contiene el control de un programa DAAD. Se introduce después de la


inicialización con el SL actual vacía. Normalmente consistirá en una
entrada '_ _' y alguna forma de bucle.
Process 1 (y superiores)

Son opcionales y definen sub-procesos que pueden ser referenciados


mediante la acción PROCESS.

Commandos del Pre-procesador del Compilador

Esto no es realmente una sección, aunque algunos de los comandos


pueden generar datos en la base de datos. El compilador acepta una
serie de comandos para llevar a cabo una variedad de tareas en tiempo
de compilación que pueden ser intercalados en el código fuente. Su
sintaxis se incluye en la siguiente sección junto a algunas
excepciones a su uso. Aunque generalmente no hay restricción a la
colocación de comandos pre-compilador, hay lugares donde su uso es
inadecuado o inútil.
5.1 Sintaxis del Código Fuente

El código fuente consiste en un número de secciones que deben estar


presentes en el orden correcto. Un buen ejemplo de código Fuente es el
archivo BLANK.SCE. Cada línea del código debe ser inferior a 256
caracteres. Si no puede obtener resultados extraños. Cualquier línea
con un punto y coma en la primera columna se considera un comentario.
Las líneas en blanco sólo se permiten en los tablas de proceso.
Cualquier línea que comienza con # se considera que contiene un
comando pre-compilador al igual que /LNK. Solamente dentro de las
tablas de proceso, una línea que comienza con un $ se considera que
contiene una etiqueta local

En las definiciones de cada sección del código fuente encontraremos las


siguientes etiquetas:

a) 'w-s' significa espacio en blanco (caracteres space o TAB).


b) Elementos entre {} son opcionales.
c) 'EOL' significa End of line (Fin De Línea).
d) Cuando se requiere un número, a menos que se indique lo
contrario, es posible usar una expresión compuesta de números y/o
símbolos unidos por los operadores más '+' y menos '-'. La
expresión se evalúa de izquierda a derecha. Se debe evaluar un
solo número, es decir, los símbolos sin definir causan un error.
Esto significa que no se puede usar hacia delante referencias.
Por ejemplo, (asumiendo PSIBase=100):
PSIBase+9 se evaluará como 109.
e) 'comment' es cualquier secuencia de caracteres, que serán
ignorados. Aunque el compilador permite comentarios sin ningún
carácter inical en ciertos lugares, se aconseja que siempre ponga
un punto y coma ';' delante.

CTL

La sección de control consta de 3 líneas de la siguiente manera:

/CTL {comment} EOL NULLWORD


{comment} EOL

Note:
a) NULLWORD es el carácter que se utilizará como palabra nula. Debe
ser un character diferente a a-Z o 0-9. No se recomienda cambiar
esta definición.

VOC

La secció Vocabulario se inicia con la línea:

/VOC {comment} EOL

y puede ser seguido por cualquier número de líneas de la forma


siguiente:

{w-s} WORD w-s VALUE w-s WORDTYPE {w-s{LANG}{w-s}{;comment}} EOL


Notas:
a) Solo los primeros 5 caracteres de WORD son significativos.
b) Se convierten a mayúsculas y solo se permiten A-Z y 0-9, además
de los caracteres especiales definidos en el idioma actual. Por
ejemplo, si se selecciona la opción de línea de commandos 'l1'
(Español) ,‚,¡,¢,£,,¤ se pueden utilizar en el Vocabulario.
c) Las palabras duplicadas no están permitidas.
d) VALUE es un valor entre 1 y 254
e) WORDTYPE debe ser: VERB, NOUN, ADJECTIVE, ADVERB, PREPOSITION,
PRONOUN o CONJUGATION.
f) En el interprete, los nombres con valor < 20 se pueden usar como
verbos si no se ha introducio ningún verbo. Los Verbos < 14 se
utilizan como palabras de movimiento.
g) LANG es una etiqueta opcional de una sola letra. Por ejemplo S
para Español, E para English. Esto asegura que la palabra se
incluye sólo cuando el archivo SCE se compila con ese idioma
seleccionado en la línea de comandos. Se utiliza con el commando
pre-compilador #lookup para permitir archivos .SCE multi-idioma.

STX, MTX, OTX & LTX

La sección de mensajes de texto del sistema empieza por la línea:

/STX {comment} EOL

La sección de mensajes de texto se inicia con la línea:

/MTX {comment} EOL

La sección de objetos de texto empieza por la línea:

/OTX {comment} EOL

La sección Localidades empieza por la línea:

/LTX {comment} EOL

Dentro de cada sección, cada entrada consta de:

/n {w-s {comment}} EOL

después cualquier número de líneas de texto que no empiecen con /

Notas:
a) 'n' debe evaluar a los números consecutivos y empezar por cero.
b) STX el límite es 60-255
c) MTX el límite es 1-255
d) OTX el límite es 1-255
e) LTX el límite es 1-252
f) Las líneas de texto sólo deben contener caracteres imprimibles
ASCII normales, o un código de escape como se describe a
continuación. El compilador le dará una advertencia si
encuentra cualquier carácter de control en el texto. Cualquier
carácter con un valor de menos decimal de 32 o superior a 127
se considera un código de control incluyendo TAB (código 9). El
compilador sólo da una advertencia acerca de los códigos de
control - Si los dejas pueden inducer a error al intérprete y
algunos códigos de control también pueden confundir al
compilador.

g) Los caracteres especiales se pueden incluir en el texto


mediante secuencias de escape usando la barra invertida '\':

\s se acepta en el texto como un espacio. Es necesario para


poner un espacio en el final de las líneas - o al comienzo para
evitar códigos TAB. Esto hace que los anuncios más evidente y
supera el hecho de que algunos editores de texto quite los
espacios de la final de las líneas durante la edición.

\f se utiliza como un espacio forzado. En realidad, es un


carácter aparte en el conjunto de caracteres (código 127
curiosamente) que se parece a un espacio. Esto permite que dos
palabras se mantengan juntas que el sistema la word#wrapping sería
dividir. Esta es más comúnmente necesario para los nombres
comerciales o marcas comerciales que deben mantenerse juntos. Por
ejemplo Kit\Kat en el archivo fuente garantizaría el Kit de dos
palabras y Kat siempre estén en la misma línea.

\b (borrar!) se activará la función CLS de la rutina de impresión


para borrar la ventana actual.

\k activará una esperar por una tecla durante la impresión.


Normalmente se usaría esto con \b, por ejemplo \k\b para esperar
a una tecla, limpia la ventana y continuar con más texto.

\g activará un giro a la (normalmente gráfico) la mitad superior


del conjunto de caracteres. En el modo de texto de IBM esto hará
que todas las carac # tros para ser ignorados, excepto los CAPS AZ
que aparecen como tales. Esto es porque se supone que va a utilizar
estas palabras especiales de texto (como nombres de períodos, etc.
en otro juego de caracteres) y que tendrá que ser visible en modo
texto.

\t restaurará el (texto) parte inferior del conjunto de caracteres

\A -> \P generará el código de caracteres DAAD 16-31. Estos son


los caracteres de idiomas especiales que varían para los
diferentes idiomas. En el apéndice da más detalles del juego de
caracteres.

\\ generará una sola barra invertida.


h) Cuando se especifica un idioma con la opción de línea de
comandos 'l' del compilador varios caracteres adicionales se pueden
utilizar directamente en el texto. Su editor de texto debe ser
capaz de manejar los caracteres especiales de IBM para poder
utilizar este servicio. Los códigos que se aceptan cuando se
selecciona 'l1' españoles se muestran a continuación:-

Symbol IBM code DAAD code Escape


¦ 166 16 A
173 17 B
¨ 168 18 C
® 174 19 D
¯ 175 20 E
160 21 F
‚ 130 22 G
¡ 161 23 H
¢ 162 24 I
£ 163 25 J
¤ 164 26 K
¥ 165 27 L
‡ 135 28 M
€ 128 29 N
 129 30 O
š 154 31 P

Cualquiera de ellos puede ser utilizado en el texto (y aparecerá


correctamente en la máquina destino).

Si necesita acceder a los caracteres en cualquier idioma a


continuación, utilizar las secuencias de escape \A a \P (con
mayúsculas). Esto no requerirá entonces el cambio de idioma que
desee seleccionar. Aunque lo que aparezca el carácter que puede
cambiar de un idioma a otro.

i) El compilador une líneas consecutivos no-nulas con un espacio. Por


ejemplo:

I será impreso por el intérprete como soy grande.


So are you. Soy grande. Así que eres tú.

j) El compilador convierte líneas nulas en retornos de carro. Por


ejemplo:

I am will be printed by the Interpreter as big.


I am big.
So So are you.
are you.
CON

La sección Conexiones empieza por la línea:

/CON {comment} EOL

Cada entrada consta de:

/n {w-s {comment}} EOL then

cualquier número de líneas

{w-s} WORD w-s LOCNO {w-s{;comment}} EOL

Notas:
a) Debe tener el mismo nº de entradas que en LTX.
b) 'n' debe evaluar a los números consecutivos y empezar por cero.
c) WORD debe estar en el vocabulario como Verbo (o Nombre < 20).
d) LOCNO se debe especificar en LTX.

OBJ

La sección de definición de objeto empieza por la línea:

/OBJ {comment} EOL

Cada línea se compone de:

/n w-s LN w-s WT w-s CONT w-s WR w-s NOUN w-s ADJ {w-s{;com}} EOL

Notas:
a) n debe comenzar en 0 y ser consecutivo.
b) Debe haber el mismo número de entradas que en OTX.
c) LN es la posición de los objetos en el inicio de la aventura y se
debe especificar en LTX, o ser 252-254, WORN, CARRIED, o la
palabra carácter nulo.
252 y la palabra carácter nulo no significa que estan creados
253 y WORN significa puesto encima
254 y CARRIED significa llevado
d) WT es el peso de los objetos en un rango de 0-63.
e) CONT especifica si el objeto es un contenedor. Puede ser Y o la
palabra nula.
f) WR especifica si el objeto se puede poner/quitar. Puede ser Y o
la palabra nula.
g) NOUN es un nombre en el vocabulario, que se refiere al objeto o
la palabra nula.
h) ADJ es un adjetivo en el vocabulario, que se refiere al objeto o
la palabra nula.
i) Si un objeto comienza puesto (WORN) entonces WR debe ser Y.
j) No se puede especificar un adjetivo sin un nombre.
PRO

La sección de procesos consiste en una serie de tablas cada una de


ellas comienza con la línea de:

/PRO {w-s} n {w-s{comment}} EOL Notas:


a) es el número de la tabla de procesos y debe comenzar en 0 y ser
consecutivo.
b) Siempre se debe especificar un mínimo de 1 tabla de proceso.
c) Las líneas en blanco entre las entradas o líneas que comienzan w-
s; son ignoradas.
d) Las líneas que comienzan con $ indican una etiqueta local.
Normalmente se deben colocar en la línea inmediatamente antes de
una entrada. Registran el número de entrada de la siguiente
entrada para su uso con SKIP.

Cada entrada comienza con:

V w-s N w-s KEYWORD {w-s PARAM1 {w-s PARAM2}} {w-s{;comment}} EOL

después cualquier número de:

w-s KEYWORD {w-s PARAM1 {w-s PARAM2 }} {w-s{;comment}} EOL

Notas:
a) V debe ser un verbo en el vocabulario, un nombre < 20 en el
vocabulario o la palabra carácter nulo.
b) debe ser un nombre en el vocabulario o carácter nullword.
c) KEYWORD puede ser una CONDITION o una ACTION.
d) Cualquier cosa en la col 1 se supone que es el comienzo de la
siguiente entrada.
e) PARAM1 sólo puede estar encerrado entre corchetes '[]' para la
mayoría de CondActos que tengan un parámetro. Esta indica que se
requiere indirección. Esto hará que el condacto use el contenido
de la bandera especificado por el parámetro, como parámetro real.
por ejemplo (suponiendo que la bandera 100 contiene 9):
SETCO 12 ; Establece el número de objeto actual a 12
SETCO [100] ; Establece el número de objeto actual a 9

Los CondActos válidos se resumen a continuación. Los detalles de su


funcionamiento se incluye en la descripción de la intérprete:

Condiciones

AT locno ADVERB adverb


NOTAT locno HASAT objno attrib
ATGT locno HASNAT objno attrib
ATLT locno ISAT objno locno+
PRESENT objno ISNOTAT objno locno+
ABSENT objno PREP preposition
WORN objno NOUN2 noun
NOTWORN objno ADJECT2 adjective
CARRIED objno SAME flagno flagno
NOTCARR objno NOTEQ flagno value
CHANCE percent NOTSAME flagno flagno
ZERO flagno BIGGER flagno flagno
NOTZERO flagno SMALLER flagno flagno EQ
flagno value BIGGER flagno flagno GT
flagno value ISDONE
LT flagno value ISNDONE
ADJECT1 adjective

Acciones

SFX value value MINUS flagno value


DESC locno LET flagno value
QUIT NEWLINE
END PRINT flagno
DONE SYSMESS smesno
OK SETCO objno
ANYKEY SPACE
SAVE device LISTOBJ
LOAD device EXTERN value
DPRINT flagno RAMSAVE
DISPLAY value RAMLOAD flagno
CLS BEEP value value
DROPALL PAPER colour
AUTOG INK colour
AUTOD BORDER colour
AUTOW ADD flagno flagno
AUTOR SUB flagno flagno
PAUSE PARSE
SYNONYM word word LISTAT locno+
GOTO PROCESS prono
MESSAGE mesno MES mesno
REMOVE objno WINDOW stream
GET objno MODE value
DROP objno WINAT line col
WEAR objno TIME value value
DESTROY objno PICTURE picno
CREATE objno DOALL locno+
SWAP objno objno MOUSE value value
PLACE objno locno+ GFX value value
SET flagno WEIGH objno flagno
CLEAR flagno PUTIN objno locno
PLUS flagno value TAKEOUT objno flagno

NEWTEXT
ABILITY value value
WEIGHT flagno
RANDOM flagno
INPUT stream
WHATO
CALL address
PUTO locno+
NOTDONE
AUTOP
AUTOT
MOVE flagno WINSIZE
height width REDO
CENTRE
INKEY
EXIT value
SKIP offset8
RESTART
TAB col
COPYOF objno flagno
COPYOO objno objno
COPYFO flagno objno
COPYFF flagno flagno

Notas:
a) flagno y value están en el rango 0-255.
b) percent está en el rango 1-99.
c) objno debe definirse en OTX.
d) mesno debe definirse en MTX.
e) smesno debe definirse en STX.
f) prono debe ser el número de la table de procesos.
g) locno debe definirse en LTX.
h) locno+ debe definirse en LTX o ser 252-255 o el character null
word, 'WORN', 'CARRIED' o 'HERE'.
i) adjective debe ser un adjetivo en el vocabulario o el caracter
word.
j) adverb debe ser un adverbio en el vocabulario o el caracter word
null.
k) Preposition debe ser una en el vocabulario o el caracter word
null.
l) noun debe ser un nombre en el vocabulario o el caracter word
null.
m) 'stream' es una window/stream 0-7 válida.
n) Line, col, height y width no comprueban el rango en el compilador
como los interpretes adaptandose a la pantalla cuando sea
necesario.
o) offset8 es una distancia de salto de -127 a 128, que especifica
una entrada para saltar. Si se especifica una etiqueta local,
entonces la distancia se calcula automáticamente.
5.2 Comandos del pre-procesador

Todos los comandos del preprocesador son precedidos por el character


('#') a excepción de LNK. Cada uno tiene que ocupar una línea propia.
Generalmente se pueden colocar casi en cualquier lugar, a pesar de que
puede no ser apropiado o útil.

/LNK {w-s} filespec

Una línea que comienza con /LNK puede aparecer en cualquier parte del
código fuente y obliga al Compilador a cambiar a un archivo de código
fuente diferente. Tenga en cuenta que todo lo que sigue a la
instrucción /LNK en el archivo actual se ignora.

Por ejemplo:

/LNK srcfile2 ; cambiará a SRCFILE2.SCE


/LNK x:\game\common\psi.inc ; cambiará a PSI.INC en drive X

Compare esto con #include que retorna al archivo original para


continuar la compilación cuando finaliza el nuevo archivo.

#INCLUDE filespec

Hace que el compilador utilice el archive de código especificado. Al


finalizar el archivo, el compilador retorna a la siguiente línea del
archivo fuente original. Incluye puede anidarse hasta una profundidad
de 10. Esto permite que los archivos fuentes incluyan a su vez otros
archivos y así sucesivamente hasta una profundidad de 10

#DEFINE symbol expression

Define una etiqueta (distingue mayúsculas y minúsculas y como máximo 20


caracteres) con el valor dado por expression. Puede consistir en otros
símbolos, números y lo operadores suma (+) o resta (-).Los símbolos
generalmente se pueden usar en cualquier lugar que se requiero un
número junto a operadores. Esta no se aplica a sentencias IF que sólo
aceptará un único símbolo.

Tenga en cuenta que el compilador en un solo paso debe definir todos


los símbolos antes de usarlos. Esto no se aplica a los símbolos locales
(los precedido de $) como se detalla en otra parte.

Una vez que un símbolo se ha definido generará u error si intenta


definirlo nuevamente. Si necesita hacer esto utilice el comando #var.

El compilador define varios símbolos automáticamente. Asigna un valor


no-cero (TRUE) en función con las opciones de línea de comandos:

Desde la opción máquina 'm'.


opt symbol
0 PC
Desde la opción máquina 'm'.
opt symbol
0 PC
1 SPE
2 CBM64
3 CPC
4 MSX
5 ST
6 AMIGA
7 PCW

Los siguientes símbolos se les da un valor distinto de cero para las


opciones de máquina 8-12. Tenga en cuenta que el símbolo correspondiente
de la lista anterior es también distinto de cero.

opt symbol machine symbol


8 VGA PC
9 EGA PC
10 CGA PC
11 S48 SPE
12 SP3 SPE

La opción de idioma 'l' genera un valor distinto de cero para los


siguientes simbolos:
0 ENGLISH
1 SPANISH

La opción debug 'd' establece como verdadero (no cero) el símbolo


'DEBUG'. Si la opción 'm' selecciona una maquina que cuenta con los
commandos gráficos PLOT, FILL y DRAW (por el momento SPE, CBM64, CPC y
MSX) el símbolo 'DRAW' tenrá un valor distinto de cero.

C42,C40,C53 – verdadero (no cero) si la máquina 'm' cuenta con este


número de columnas en la pantalla. En ST e IBM es posible que el juego
se esté ejecutando en un modo texto de 80 columnas, por lo que puede
que tenga que utilizar el símbolo COLS en los cálculos.

COLS - En realidad contiene el número de columnas como un número. Esto


se puede utilizar en los cálculos en tiempo de compilación (o tiempo
de ejecución si se le asigna a una bandera por LET la bandera COLS).

Los archivos SYMBOLS.* pueden incluirse en la compilación. En ellos se


utiliza la directiva #define para definer muchos más símbolos. Su
utilida se explica en esos mismos archivos.

#VAR symbol expression

Esto es similar al comando #define pero redefine un símbolo que ya se


ha definido anteriormente. Esto se usa como contador de un elemento en
un archive o en compilación condicional, etc.
#IF {!}symbol
{#ELSE}
#ENDIF

Este grupo de comandos tendrá lugar juntos. Tenga en cuenta que el ELSE
es opcional. Todas las líneas siguientes al #if (hasta el siguiente
#else o #endif) se incluirán en la compilación, sólo si symbol tiene un
valor no cereo (verdadero).

Adicionalmente cualquier símbolo puede volverse FALSO usando un signo


de exclamación ("!"). Por ejemplo

#if !DRAW

será verdadero si en una máquina carga sus gráficos desde disco en un


formato basado en pixels.

El #else hace que las líneas entre éste y el siguiente #endif se


compilen en caso de que #if no sea cierto. Esto no duplica la función
del signo de admiración ya que a menudo no se necesita hacer nada si
symbol no es cierto. En este caso deberá utilizar el signo de
exclamación para negar symbol en lugar de una cláusula #else/#endif
vacía.

No se puede utilizar una expresión en lugar del símbolo. Si usted


necesita probar un grupo de condiciones, utilice un #define para
establecer una etiqueta temporal. Por ejemplo.

#define COL53DISC DISC+COL53


#if COL53
...
#endif

compilará las líneas entre #if y #endif sólo si estamos en una máquina
de discos de 53 columna.

These conditional statements can be nested to a depth of 10,


during the entire compilation.

All data inside #IF,#ELSE,#ENDIF must be indented by the correct


number of spaces, one space for each nest level. This does not apply
to files included using a #include within a conditional block. Any
exception to this will cause a 'Fatal loss of conditional
nesting sync' error.

Tiene que haber un #endif correspondiente por cada #if o se producirán


algunos efectos extraños, como que el compilador ignore el resto del
código Fuente.

A continuación se ofrece un ejemplo de la utilización de la compilación


condicional para hacer frente a las diferencias entre máquinas y sus
modos gráficos. Tenga en cuenta la sangría en cada nivel #if.
#if PC
CLS
PAPER 0
#if EGA
INK 15
#else
INK 7
#endif
#endif

#ECHO

Texto de salida a la consola durante la compilación - generalmente para


indicar mensajes y la inclusión de un archivo con opciones
condicionales.

Por ejemplo:

#if PC
#echo Including IBM Display handler
#include \LIB\PCDISP.SCE
#endif

#LOOKUP lang

Hace que el compilador busque el diccionario del idioma especificado


para el Verbo y el Nombre en las entradas de la Tabla de Procesos.
Esta le permite tener una tabla de procesos escrit en un idioma que se
compilará en un juego escrito en otro idioma. Esto debe ser combinado
con un vocabulario multi-idioma. Vea la sección de juegos multi-idioma

Los valores válidos para 'lang' son 0 para Inglés o '1' para Español.
Pueden asignarse a símbolos, si es necesario.

The following are several pre-processor commands designed mainly to


deal with external data and code. Further explanations are given in
the document on external code inclusion.

Lo siguiente son varios comandos pre-procesador diseñados


principalmente para tratar con datos y código externos. Más
explicaciones se dan en el documento sobre la inclusión de código
externo.

#INCBIN filespec

Incluye un archivo de imagen de memoria en la posición actual en la


base de datos. Esto permite que casi cualquier tipo de datos se
incluyen en el segmento de base de datos.

#DEFB expression {{{expression} expression}...}

Incluye el valor(s) del byte indicado en la base de datos en la


dirección actual. Por ejemplo:
#DEFB 1 2 3 4
#defb PSIFLAG-1 PSILAST-PSIFLAG

#DEFW expression {{{expression} expression}...}

Incluye el valor(s) dela palabra indicado en la base de datos en la


dirección actual. Por ejemplo:

#defw 6578
#defw IOADDR+4 65535

Los comandos #defb/w pueden utilizarse con preferencia a INCBIN si


necesita incluir sólo unos pocos valores o los que se calculan a partir
de valores de símbolos.

#HEX hexpair{{w-s}{hexpair}...}

Incluye datos hexadecimales directos en la db. Es similar a la


declaración HEX de PDS. Siempre debe haber un número par de dígitos
hexadecimales, incluso si separa elementos con un espacio en blanco.
Por ejemplo:

#hex FFDE7898
#HEX 00 89 FD F3

#DBADDR symbol

Dará el símbolo de la dirección actual en la base de datos. Esto se


puede utilizar para CALL, #userptr o los comandos #defw.

#USERPTR n

Donde n será entre 0-9.


Este comando está diseñado para superar la limitación de referencia
hacia delante del compilador de una sola pasada. Se coloca la dirección
de base de datos actual en una de los diez vectores cuya posición se
fija al comienzo de la base de datos. Por lo tanto una rutina externa
puede localizar los datos insertados en la base de datos mirando el
vector fijo.

#EXTERN {filespec}
#SFX {filespec}

Para 8 bits solamente. Estos tres comandos son similares a #USERPTR,


pero el valor almacenado por ellos se copian por el intérprete en la
base de datos cargada para el vector EXTERN correspondiente. Tenga en
cuenta que SFX ya tiene un efecto predeterminado de escritura en los
registros del chip de sonido. Así que cualquier rutina utilizando este
vector reemplazará esta función. El archivo EXTERN.SCE utiliza EXTERN
para lograr el sonido para que el comando SFX sigua funcionando.

Ahora cualquier EXTERN o comandos SFX serán dirigidos a su rutina. Los


intérpretes reconocen 3 vectores externos. El tercero es para una
interrupción de 50Hz:
#INT {filespec}

Para máquinas de 8 bits solamente. Cualquier rutina colocada en este


vector será llamada 50 veces por segundo durante todo el período que el
juego está en marcha. Por lo tanto no hay un comando en el lenguaje
DAAD para llamar a la rutina. Los Z80 guardan sólo los registros AF y
HL (dando HL como dirección), así que asegúrese de guardar todos los
demás registros que utiliza. Los intérpretrs 6502 guardan todo el
estado del procesador.

Si se incluye el nombre del archivo en los comandos #EXTERN, #SFX o


#INT, entonces dicho archivooo se incluirán en la base de datos - Como
si el comando fuese seguido por #INCBIN.
Sección 6 - El Compilador

El compilador permite el uso de nombres de rutas completas de origen,


destino e imprimir los nombres de archivo. Varias opciones pueden
añadirse utiizando el signo menos ("-"). El formato de línea de
comandos es...

DC infile outfile {-c|l?|s|m?|n|d|t|pprnfile} {-w|h|a?} c –

c - Aplica compresión al texto (excepto objetos)


l - Idioma, donde? Valores entre 0 - 1
0 - English
1 - Spanish (por defecto)
m - Máquina, donde? Valores entre 0 - 12
número symbol en el código fuente
0 - IBM PC(default) PC
1 - Spectrum SPE
2 - CBM 64 CBM64
3 - CPC CPC
4 - MSX MSX
5 - ST ST
6 - Amiga AMIGA
7 - PCW PCW
; Estos símbolos permiten que puedan generarse versiones especiales
8 - PC VGA VGA
9 - PC EGA EGA
10 - PC CGA CGA
11 - Spectrum 48K S48
12 - Spectrum Plus 3 SP3
n – no hay archivo de salida
d – Incluye secciones DEBUG
t - Escribir un archivo de análisis de tokens llamado FINDTOK
p - Especifica el archivo de salida de texto (salvo errores importantes)
s - Da la tabla de símbolos

el segundo grupo de opciones sólo se puede utilizar con m0 y son sólo


para uso del sistema. Nunca debería utilizarlas sin indicaciones de
Infinite Imaginations.

6.1 Descripción detallada del Compilador

El compilador ha sido especialmente diseñado para que se detenga tan


pronto encuentre un error. El proceso es el siguiente:
Proceso de la línea de comandos. Si un error es encontrado para.
Abre el archivo de impression .PRN (si es necesario)
Procesa CTL
Si no encuentra errores, abre la BBDD .$$$ (si es necesario)
Si no encuentra errores, procesa VOC, STX, MTX, OTX & LTX
Si no encuentra errores, procesa CON, OBJ & PRO
Si no encuentra errores, procesa las rutinas finales.
La Compilación finaliza OK
o La Compilación finaliza con n WARNING(S)
o La Compilación finaliza con n ERROR(S)
o La Compilación finaliza con n ERROR(S) y n WARNING(S)

6.2 Errores y Warnings

Advertencias del compilador (WARNINGS)

Cualquier cosa que produzca una advertencia no detendrá la producción


de la base de datos, pero el intérprete puede encontrar algunos de los
códigos un poco extraño, o saltar a una entrada incorrecta de las
advertencias de símbolos.

Hay 10 tipos de warnings que pueden emitirse:

1) Token is longer than a previous token

Los tokens deben estar realmente en orden de tamaño

2) Token contiene char > 127 – Valor (n)

El compilador ha encontrado un character con valor n (128-255


decimal). Estos valores se utilizan para almacenar los tokens, por
lo que no se pueden usar en un token.

3) ESCAPE code expected

Has incluido una barra invertida ("\") en un token o párrafo de


texto y no seguido de un caracter. Esto normalmente solo ocurrirá
al final de la línea. La \ es ignorada.

4) ESCAPE code invalid

El character que sigue a una barra invertida ("\") no es un token


válido. Consulte la sintaxis del archivo fuente para obtener una
descripción de los códigos ESCAPE legales. El código se ignora,
esto generalmente significará la pérdida de una letra del texto.

5) Control character present in text - value(n)

El compilador ha encontrado un character con valor n (0-32


decimal). Este character puede confundir al interprete.
6) Character value > 127 present in text - value(n)

El compilador ha encontrado un caracter con valor n (128-255


decimal). Estos valores se usan para comprimir tokens, por lo
que no se pueden usar en el texto. Obtendrá un error en lugar
de una advertencia si intenta comprimir el texto con estos
caracteres presentes.

7) Local symbol already defined: symbol

Solo puede usar un símbolo una vez dentro de una tabla de


proceso. Los símbolos se borran al final de la tabla y pueden
reutilizarse en otras tablas.

8) Symbol already defined: symbol

La tabla de símbolos global ya contiene una entrada para este


símbolo. Tenga cuidado de que su compilación necesite ser
eliminada si el símbolo es importante. La primera definición
es válida.

9) Symbol not defined: name

Un nombre que el compilador ha supuesto que es un símbolo no


está definido en la tabla de símbolos global.
10) Invalid hex pair on line

You must specify an even number if digits in #hex statements.


The rest of the line will be ignored.

ERRORES de compilación

Siempre haya un error, el número de línea del archivo fuente y su


contenido se imprimen cuando corresponda, luego el número de
error y el motivo del error.

En el caso de errores marcados como (fatales), el compilador se


detendrá e imprimirá el error en la pantalla, incluso si hay un
archivo de impresión activo; esto no se repite en el archivo de
impresión, así que asegúrese de anotar el número.

Los errores que se pueden encontrar son:

1) Max texts already processed

El número máximo de textos permitidos en esta sección ya se ha


definido.

2) Valid word not found xxxx

O bien un parámetro faltaba o un carácter no válido es


detectado. xxx puede no estar presente en el mensaje.
3) No. (1-254) not found

Se esperaba un número en el rango 1-254 pero no se encontró.

4) Too many parameters

Se han especificado demasiados parámetros. Posiblemente el


‘;’ se ha omitido al comienzo de un comentario.

Esto también se produce si hay al menos una tabla PROCESO que


no se llama al final de la base de datos. es decir, no
detectará las tablas de proceso no utilizadas solo las no
utilizadas al final de la base de datos.

5) Vocab limit exceeded - VOCAB too big!

Hay un límite en el tamaño del vocabulario que ahora se ha


alcanzado. El mensaje 'nn words processed' que sigue, muestra
por cuántas palabras su vocabulario es demasiado grande.

6) xxxx is not in Vocabulary

La palabra xxxx no está definida en el vocabulario.

7) Connections for all locations already processed

Los movimientos para todas las ubicaciones especificadas en


LTX se han procesado pero el final de la sección CON no se ha
alcanzado.

8) Location No. not found

Se esperaba una localidad No. pero no se encontró.

9) Location No. too big

El número de localidad especificado no se ha definido en la


sección LTX.

10)Entries for all objects already processed

Las entradas para todos los objetos especificados en la


sección OTX se han procesado pero el final de la sección OBJ
no se ha alcanzado.

11) Start of entry expected

El compilador esperaba que esta línea fuera el inicio de una


entrada.
12) System message No. not found

Se esperaba un número de mensaje del sistema pero no se


encontró.

13) Percentage not found

Se esperaba un porcentaje pero no se encontró.

14) Percentage out of range

El porcentaje especificado está fuera del rango 1-99.

15) xxxx is not a condition or action

xxxx no es una condición o acción reconocida.

16) Object No. not found

Se esperaba un objeto No. pero no se encontró.

17) Object No. too big

El objeto No. especificado no está definido en la sección


OTX.

18) Message No. not found

Se esperaba el mensaje No. pero no se encontró.

19) Message No. too big

El mensaje No. especificado no se ha definido en la sección


MTX.

20) Flag No. not found or too big

La bandera No. era esperada pero no se encontró o era> 255.

21) System message No. too big

El mensaje del sistema No. especificado no se ha definido en


la sección STX.

22) Value not found or too big

Se esperaba un valor pero no se encontró o era > 255.

23) Table limit exceeded

El compilador tiene un área de memoria que usa para 2 cosas.


Primero tiene que almacenar todo el vocabulario en él (7
bytes por cada palabra). Luego, lo que queda se usa como área
de trabajo para procesar esta tabla (4 bytes para cada
entrada).
¡Esta área de memoria ahora está llena! El mensaje 'nn
entradas procesadas con éxito' que sigue, muestra por cuántas
entradas esta sección es demasiado grande.

24) /nn expected

La siguiente entrada esperada debería comenzar /nn.

25) (fatal) Invalid File Name

El nombre del archivo en la línea de comandos, la instrucción


/LNK o #include contenía algunos caracteres no válidos.

26) Drive A-P not found

Se esperaba un identificador de unidad en el rango A-P pero


no se encontró.

27) Object starts worn but is unwearable

Si un objeto comienza el juego puesto, entonces debe ser


ponible.

28) Invalid null word character

Se ha especificado un carácter no válido como el carácter de


palabra nula. ¡Sugerimos que solo '_' se use de todos modos!

29) (fatal) Adventure Name not given

No se pudo encontrar un nombre de aventura en la línea de


comando.

30) (fatal) Invalid drive x

Se especificó una unidad no válida.

31) Parameters missing

Se esperaba un parámetro, pero no se ha proporcionado.

32) Insufficient System messages

Se deben especificar los mensajes del sistema 0-60.

33) Connections for remaining locations missing

Debe especificar conexiones para cada ubicación especificada


en LTX.

34) Entries for remaining objects missing

Debe especificar una definición para cada objeto especificado


en OTX.
35) Unable to open xxxx

La base de datos xxxx no puede abrirse. Por ejemplo,


directorio de disco lleno.

36) Failure to rename xxxx

La base de datos .$$$ no se pudo renombrar a .DDB

37) Duplicate word xxxx

La palabra xxxx ha sido definida dos veces en VOC. Recuerde


que solo los primeros 5 caracteres son significativos.

38) xxxx not found

El fichero fuente xxxx no pudo ser encontrado.

39) Database not correct length - Disk may be full

El compilador ha comprobado la longitud real de la base de


datos en el disco con la longitud que cree que debería ser;
si es más corta, probablemente no haya suficiente espacio en
disco para la base de datos.

40) Illegal use of Flag 38

Has especificado un uso ilegal de la Flag 38. Por ejemplo SET


38, LET 38 x - donde x es mayor que el número de localidades.

41) A container needs a corresponding location

Para que un objeto sea un contenedor, debe haber una ubicación


con el mismo número que el objeto.

42) xxxx expected

The next section expected should start with xxxx.

43) Valid word type not found xxxx

xxxx no es un tipo de palabra válida.

44) Object weight not found

Se esperaba un Objeto pesado pero no se encontró.

45) xxxx is not a(n) yyyy

Se espera un tipo de palabra particular (yyyy) aquí, pero


xxxx no es ese tipo.
46) Adjective specified without noun

Para especificar un adjetivo también debes especificar un


sustantivo.

47) /PRO nnn expected

La siguiente sección esperada debería comenzar con /PRO nnn.

48) Process table No. not found or too big

La tabla de proceso No. no fue encontrada o es > 255.

49) Process table No. out of range

En la acción PROCESO solo se permiten las tablas de proceso


números del 2 al 254.

50) You can only PUTIN to or TAKEOUT of a container

Está tratando de poner un objeto en algo que no es un


contenedor o está tratando de sacar un objeto de algo que no
es un contenedor.

51) Wearable indicator not found or invalid x

Se esperaba una 'Y' o el carácter de palabra nula, pero no


se encontró. x puede no estar presente.

52) Object weight too big

Los pesos de los objetos deben estar en el rango 0-63.

53) Container indicator not found or invalid x

Se esperaba una 'Y' o el carácter de palabra nula, pero no


se encontró. x puede no estar presente.

54) Character value > 127 present in text - value(n)

El compilador ha encontrado un caracter con valor n (128-255


decimal). Estos valores se usan para comprimir tokens, por lo
que no se pueden usar en el texto. No se puede comprimir el
texto que tiene estos valores en él.

55) Database much too big

¡La base de datos es tan grande que abarca desde 65535 hasta
0!

56) Stream not found or too big

La secuencia de WINDOW no estaba en el rango 0-7.


57) Line not found or too big

58) Column not found or too big

59) Height not found or out of range

60) Width not found or out of range

61) *** Not used

62) Input option not found or out of range

63) Colour not found or out of range

64) Already processed 128 tokens

Tienes más de 128 tokens en la sección /TOK. Esto puede


ocurrir si se incluye un archivo TOK que contiene un /TOK
extra al inicio.

65) Insufficient tokens found

Opuesto a 63!

66) Token is too long

Un token debe tener menos de 9 caracteres.

67) Token is too short

Un token debe tener más de 2 caracteres.

68) (fatal) Invalid option 'opt'

La opción dada en la línea de comando no es válida.

69) (fatal) Bad/Missing parameter for option 'opt'

l parámetro para la opción está fuera de rango o falta.

70) (fatal) Too many files specified

Solo debe especificar un máximo de dos nombres de archivo en


la línea de comando (a excepción del archivo PRN que se
especifica con -p).

71) Invalid compiler command

El comando del preprocesador (#) no se reconoce.

72) (fatal) Symbol table full


Eso es todo, la tabla de símbolos es de un tamaño específico.

73) (fatal) Maximum conditional nesting exceeded

Solo puede #if un máximo de 10 veces en cualquier archivo.

74) Imbalanced conditional

Se encontró un #endif sin un #if anterior.

75) (fatal) Fatal loss of conditional nesting sync

Debe incluir al menos el mismo número de espacios delante de


cada línea, ya que la profundidad del bloque condicional está
contenida en.

76) Can't indirect this parameter

Ha intentado indirectamente el segundo parámetro de un


CondAct o el primero de los pocos que no admiten la
indirección.

77) Missing bracket on indirection

The compiler thinks you have missed the closing bracket ']'
on an indirected parameter.

78) (fatal) Maximum include nesting exceeded

You can only nest the #include statement upto 10 times.

79) Symbol not found, or invalid

The symbol was not found in the global symbol table.

80) Not enough user attribute indicators found

You must specify 16 user attributes (even if null) for every


object in the game.

81) User attribute indicator invalid 'attrib'

The character must be 'Y' to set a user attribute.

82) Unresolved forward references on line(s):

Has hecho un SKIP a un símbolo local que posteriormente no


fue definido. Tenga en cuenta que este error se da al final
de la tabla de proceso a la que hace referencia. Debido al
funcionamiento del compilador, no es factible imprimir la
línea afectada, solo su número de línea.

83) (fatal) Forward reference data cache full, increase it


El área de memoria interna utilizada para referencias
avanzadas se ha llenado. Pruebe y reduzca el nivel de
anidación de SKIPS hacia adelante, o si todo lo demás falla,
contáctese con Infinite Imaginations para aumentar el tamaño
del búfer.

84) Maximum forward references, reduce nesting or quantity

Similar a lo anterior pero has alcanzado los límites. Lo


mismo aplica para el error 82.

85) Out of forward reference index space, increase it

See references to 82 and 83.

86) Backward SKIP out of range

The maximum reverse skip is -128 entries.

87) SKIP label illegal within an entry

Una etiqueta local ($) solo puede ocurrir entre las


entradas. Esto implica que debe venir después de la línea en
blanco que finaliza la entrada anterior. De hecho, el mejor
lugar está en la línea inmediatamente anterior a la
siguiente entrada.

88) Forward SKIP(s) to this label out of range

El salto de avance máximo es de 127 entradas. Hay al menos un


SKIP en esta etiqueta que está fuera del rango. El único
remedio fácil es buscar en el archivo las referencias al
símbolo y eliminar el primero (o los primeros si obviamente
también están fuera de rango), ya que este es el más alejado.

89) (fatal) Internal fri error, patch code not SKIP

Se ha producido un parche de omisión ilegal. Esto sucederá


solo si las tablas internas del compilador se corrompen,
guarde el archivo .SCE e informe a Infinite Imaginations.

90) Language specifier not found or invalid

You have not specified a language for the #lookup command

91) Vector already defined

The user vector has already been allocated.

92) (fatal) Size exceeds cache space

La tabla de proceso se ha vuelto demasiado grande, intente


reducirla dividiéndola en subprocesos.
93) (fatal) Error reading file

A disk error has occured during compilation.

94) Can't include binary data in this section

Ha intentado un #incbin o uno de los comandos que incluyen


datos en una sección del compilador que no lo permite, p. en
/VOC

95) Invalid address

Has especificado una dirección que no está en el rango


numérico 0- 65535.

96) Invalid user vector number

El número de vector de usuario no está en el rango 0-9.

97) Can't open file FINDTOK.TXT for write

El compilador no puede abrir el archivo 'FINDTOK.TXT' para


escribir. Esto podría ocurrir si el directorio está lleno o
si el archivo existe con el conjunto de atributos 'solo
lectura'.

nn) Compiler error nn

Hay un error dentro del compilador. Más específicamente, una


de las comprobaciones internas dentro del compilador ha
fallado. Primero, intente volver a compilar su aventura. Si
falla por segunda vez, intente de nuevo con su copia de
seguridad. Si todo lo demás falla contáctanos.
Sección 7 - Gráficos

Hay dos editores de gráficos:

1. Drawstring (para máquinas de 8 bits)

Todas las versiones son muy similares en operación y serán


discutidas juntas.

2. Image (DMG)

Se trata de más gráficos/gestores de datos, ya que no incluyen


ninguna forma de edición de gráficos (o en los últimos sonidos de
edición) como tal, sino que utilizan imágenes de un editor
gráfico externo.

7.1 Editor Drawstring ("DG")

Sugerimos que se familiarice con la opción de gráficos de PAW


PARA Spectrum, CPC y CBM 64 Illustrator. Los editores de DAAD son
muy similares.

7.1.1 Main menu

A - Graphics Permite insertar gráficos, modificarlos,


imprimirlos, etc.

B - Characters Permite insertar caracteres, modificarlos, etc.


los caracteres se duplican como patrones de
sombreado y como caracteres individuales para
crear detalles

C - Windows Configura las ventanas que usarán los gráficos


cuando se ejecutan en el juego final.

D - Text Colours Establece los colores reales a los que se verán


los 16 colores DAAD y el color del borde de la
pantalla - para el juego final

E - Set SPARE Configura el primer byte disponible para los


gráficos en la memoria. Cuando el compilador ha
compilado un juego, le da una dirección final para
la base de datos. Escriba esto en esta opción y la
opción F mantendrá correctamente su memoria libre.
Tenga en cuenta que el compilador debe estar
compilando para la misma máquina en la que lo está
configurando. Tenga en cuenta que puede configurar
esto en cualquier momento. Es decir. puedes
escribir el juego y los gráficos por separado.
F - Free Memory Una vez que se haya utilizado la opción E dará
una indicación de la cantidad de memoria
disponible disponible.

G,H,I & J Funciones bastante obvias que se describen a


continuación:

Spectrum

SAVE Graphics
Equivalente al comando BASIC SAVE f CODE m, n donde m es la
dirección de inicio de la base de datos, n es la longitud y f es
el nombre del archivo.

VERIFY Graphics
Equivalent to the BASIC command VERIFY f CODE m,n

LOAD Graphics
Equivalent to the BASIC command LOAD f CODE, i.e. it will load
any file of bytes back to the address it was saved from.

Very Important
Si se presiona BREAK o se detecta un error de cinta durante una
carga, la base de datos retenida en la memoria estaría dañada. Si
se presiona CAPS SHIFT & 6 mientras se solicita un nombre, la
base de datos gráfica no se verá afectada.

Amstrad CPC

Disc/Tape
Para aquellos con una unidad de disco y una platina de cinta. Le
permite elegir entre Guardar, gato, etc.

SAVE & LOAD Graphics


Estas opciones permiten que la base de datos gráfica se guarde o vuelva
a cargar y en cada caso se le pedirá que "Escriba el nombre del
archivo". Al cargar, la computadora buscará un archivo de bytes con el
nombre especificado y luego lo cargará. Se puede usar un nombre de
archivo nulo cuando usa cinta pero no con disco. Se debe tener cuidado
al usar Load Graphics con un nombre de archivo nulo porque cargará
cualquier archivo binario que encuentre. LOAD cargará cualquier archivo
binario a la dirección desde la que se guardó. p.ej. usaría 'E' para
cargar una rutina SCDUMP.

Very Important
Si se presiona ESC o se detecta un error durante una carga, la base de
datos retenida en la memoria estaría dañada, por lo que se realiza una
llamada para establecer una base de datos mínima. Esto significa que
sus gráficos se perderán, pero no ha dañado la base de datos y puede
usar cualquier opción disponible. Si se presiona ESC mientras se
solicita un nombre, la base de datos gráfica no se verá afectada.

CAT
Puede usarse para catalogar una cinta o disco de la misma manera que en
BASIC.
Commodore 64

Save, Verify & Load Graphics

Estas opciones en el menú principal permiten que la base de datos


gráfica se guarde, verifique o vuelva a cargar y en cada caso se
le preguntará "¿Disco o cinta?" responda D o T según sea
necesario y "Escriba el nombre del archivo". Al cargar, la
computadora buscará un archivo de bytes con el nombre
especificado y luego lo cargará.

Very important
Si se presiona RUN STOP o se detecta un error durante una carga,
la base de datos almacenada en la memoria estaría dañada, por lo
que se realiza una llamada para establecer una base de datos
mínima. Resultado: ¡una ubicación en blanco! Esto significa que
sus gráficos y patrones de color se perderán pero la base de
datos no está corrupta y puede usar cualquier opción disponible.
Si se pulsa RUN STOP mientras se solicita un nombre o medio, la
base de datos gráfica no se verá afectada.

7.1.2 Graphics Menu

Las imágenes pueden insertarse, enmendarse, imprimirse o tener su


longitud calculada:

Insert I

Se utiliza el siguiente número de imagen disponible y se realiza


una entrada nula en la tabla de imágenes. También se hace una
entrada para ello en la tabla de indicadores de ubicación. El
procesamiento continúa con una llamada automática a la rutina de
modificación para permitir al usuario modificar la entrada nula
ya configurada en la tabla de imágenes.

Amend A picno.

La base de datos de gráficos se expande para proporcionar un


espacio al final de la imagen requerida. Luego se ingresa el
ciclo principal del Editor de gráficos que se describe a
continuación. Cuando se presiona return, se elimina cualquier
espacio restante. nótese bien. la base de datos en sí misma ha
cambiado, por lo tanto, no puede abandonar una edición.

Size S

El número de bytes entre el inicio del cordón y el inicio del


siguiente se calcula e imprime en la pantalla.

Print P picno. or L picno.

La imagen requerida se dibuja en la pantalla y si se seleccionó L


se llama a la rutina SCDUMP. picno. debe ser especificado.
Puntos a tener en cuenta:

* Hay un límite de 254 imágenes.

Spectrum

* Las localidades que son subrutinas usan PAPER 1, INK 7 como


colores de inicio.

Amstrad CPC

* Las localidades que son subrutinas usan INKS 1,24,18 y 26 como


colores de inicio.

* Debido a la variedad de impresoras / trazadores disponibles, la


subrutina SCDUMP proporcionada guarda la pantalla en disco /
cinta con un nombre de archivo de PICxxx. Este archivo puede
ser recargado desde BASIC y luego puede usar cualquiera de las
rutinas de volcado de pantalla publicadas o disponibles
comercialmente para producir una copia impresa.

Alternativamente, la dirección de la subrutina del código de


máquina SCDUMP se proporciona en la pantalla de inicio. Si lo
desea, puede escribir su propio controlador de impresora y
aplicarle un parche utilizando la opción Cargar gráficos en el
menú principal. La subrutina debe terminar con una instrucción
RET, debe conservar todos los registros, no debe exceder los 13
bytes y obviamente no debe "estropear" el firmware.

Commodore 64

* Las localidades que son subrutinas usan PAPER 6 como color de


inicio.

* SCDUMP es una rutina que copiará la pantalla de alta resolución


(hires) a la impresora. Si lo desea, puede cambiar la rutina
para usar una impresora diferente creando un archivo (máximo
1000 bytes) en la dirección indicada en la pantalla de título,
y cargándolo con LOAD Graphics.

Dump D

Copia la imagen especificada en cinta o disco como una pantalla


8K Hires (Guardado desde $ 8000 hex) seguido de una pantalla 1K
Color (Guardado desde $ CC00 hex) bajo el nombre de archivo
especificado, pero precedido por un B & C respectivamente - estos
podrían ser utilizados en sus propios programas, la guía de
programadores brinda detalles sobre el uso de una pantalla normal
hires desde BASIC.

Notas para usuarios de ILLUSTRATOR/PAW.

TODAS las versiones


* Las subrutinas ahora se pueden rotar alrededor del eje X o Y
para proporcionar la función espejo.
* Shade no puede mezclar patrones, pero puede usar cualquier
carácter gráfico hasta el máximo de 256.

CBM Y CPC
* Las subrutinas ahora se pueden anidar a una profundidad de diez
como en el Spectrum
* No hay la opción Freehand (mano alzada)
* CTRL + C (CTRL + T on CPC) permite colocar caracteres gráficos
individuales en la pantalla en la Base del Cursor para agregar
detalles a las imágenes.

CBM
* La función Ayuda en H aún está disponible a pesar de que
Spectrum / CPC no la tienen.
* No dibuje 'off' en la parte inferior de la pantalla, esto
dañará las dos líneas de texto inferiores en el intérprete, ya
que no usa una pantalla dividida como el editor.

7.1.3 Menu Characters

Esta opción permite modificar los 256 caracteres estándar


(descritos en otro lugar), guardarlos cargados, etc.

Las opciones Guardar y Cargar permiten manipular una colección


arbitraria de caracteres. P.ej. Puede cargar un juego de
caracteres de PAW estándar simplemente haciendo L 0, para cargar
en el carácter 0. Esta función, además de permitir que se
transfieran caracteres útiles entre las bases de datos, también
se puede usar para moverlos en el conjunto. P.ej. S 10 14 seguido
de un L 20, a través del disco, movería los caracteres
10,11,12,13 y 14 para que sean los caracteres 20,21,22,23 y 24.

El editor de caracteres

Esta sección del editor permite modificar un patrón / carácter de


tono. Los patrones de sombreado consisten en una cuadrícula de 8
por 8 píxeles (8 por 4 en CPC) que se repite mediante el comando
SHADE sobre toda el área de sombra. Los caracteres se pueden
colocar en la pantalla desde dentro del drawstring. Obviamente se
muestran por cualquier salida de texto en un juego.

El editor proporciona tres áreas de pantalla:

1/ The Grid Los patrones de bits de un tono en particular se


muestran en una cuadrícula de cuadrados grises muy
ampliada (x8), y cualquier conjunto se muestra con
un cuadrado negro. También está presente en la
cuadrícula un cuadrado rojo parpadeante que
muestra la posición actual del cursor.

2/ The Test A la derecha de la cuadrícula hay un patrón de pru


Pattern ba del tono actual en las formas normal e invertid
(Normal en la parte superior). Esto no cambia al
cambiar la cuadricula, pero se puede actualizar pulsando F7.
3/ Status Esto muestra el número de patrón actual y propor-
Area ciona un resumen de los comandos disponibles.

Commodore 64

Para modificar el patrón, use las teclas del cursor (marcadas con
CRSR) junto con SHIFT, según sea necesario, para mover el cursor
parpadeante. El estado del bit debajo del cursor se puede cambiar
en cualquier momento usando la BARRA ESPACIADORA.

RETURN almacenará el patrón enmendado en la base de datos.


RUN STOP abandonará la edición dejando el patrón como estaba.

Amstrad CPC

A menos que comprenda el método que utiliza el CPC para codificar


cuatro caracteres de modo de color, solo use los caracteres que
haya editado en el modo de sombreado para el comando SHADE.

7.1.4 Menú Window

Se puede usar de tres maneras:

A picno

Configurará la imagen dada para que sea una subrutina, es decir


no tener una imagen.

A picno paper ink

Le dará a la imagen picno el papel y la tinta para comenzar a


dibujar con.

A picno paper ink line column height width

Le dará a la imagen picno el papel y la tinta especificados y


definirá un área de la pantalla que será borrada por el
intérprete al dibujar esta imagen. Tenga en cuenta que la opción
Cuadrícula al editar un gráfico resaltará solo esta región.

Spectrum

En Spectrum esta área puede no ser la esperada, ya que las


ventanas están configuradas en modo de 40 columnas, por lo que la
cuadrícula muestra el ajuste más cercano en los atributos de 32
columnas. Podría considerar esto útil ya que muestra qué área
real de la pantalla está ocupada por la ventana de 40 columnas.
Si dibujas fuera de la ventana, seguirá apareciendo durante el
juego, ¡simplemente estará fuera de la ventana! Es decir. DAAD no
'acorta' sus gráficos. Ver la nota bajo CBM también para un
problema similar.
7.1.5 Text Colours

Esta opción establece los colores reales de la máquina que


utilizará el intérprete cuando utiliza los CondActs de INK y
PAPER. Esto es para que el escritor de la base de datos no tenga
que preocuparse por los diferentes números de color en varias
máquinas. Es decir. En las versiones que tiene hasta el momento,
el color DAAD 0 es siempre NEGRO, el color 1 siempre es BLANCO y
el color 2 siempre es ROJO. A pesar de que el blanco y el rojo
son números de colores diferentes en el CBM y SPECTRUM.

Amstrad CPC

* La opción de color de texto en el CPC configura la Pallette


inicial para el inicio del juego. Cualquier parte de la paleta
se puede cambiar selectivamente para cada imagen dibujada en
una localidad. Pero si estás atascado con la paleta actual para
los dibujados con PICTURE. Esto no supone ningún problema, ya
que solo hay cuatro colores disponibles, por lo que las caras
de los personajes, etc. deben usar el bit fijo de la paleta
utilizada por el texto, ¡o la apariencia cambiará! Ver la nota
sobre la gestión de paletas en ST/Amiga.

7.1.6 Basic Operation

DAAD permite llevar a cabo varias operaciones en forma de una


cadena de dibujo para cada localidad. Al editar, la cadena se
presenta en memoria de la siguiente forma;

-------------
| FINAL | Marcador de final de cadena
|-----------|
| |
| SIGUIENTE | Comandos todavía no dibujados
|-----------|
| |
| |
| |
| LIBRE | Memoria disponible
|-----------|
| TFINAL | Punto final temporal
|-----------|
| |
| |
| |
| DIBUJO | Cadena principal de dibujo
-------------

Al utilizar el editor, es importante imaginar el modelo anterior.


De lo contrario, encontrará que es fácil retroceder a través del
cadena dejando comandos no dibujados en la sección SIGUIENTE.
Estos pueden salir 'fuera de contexto' y cuando se dibujan en la
reedición o al utilizar los comandos Next pueden causar un error
de pantalla.
7.1.7 Spectrum Graphic Editor (and MSX)

Se usa una línea ”elástica” para dibujar. El “punto” es el punto


base de esa línea y muestra el el último punto al que se ha
movido. El punto final de la línea elástica muestra la próxima
posición del "punto" o el lugar de comienzo de un
Fill/Sombreado, etc.

Hay cuatro grupos de órdenes. Todos requieren el uso de SIMBOL


SHIFT (a menos que se especifique lo contrario).

1) Comandos de Dibujo

ABS MOVE A Mueve el “punto” a la posición x, y del final de


la línea, configurando solo los atributos. Esto se
codificado como una PLOT con el Inverse y Over
activados.

PLOT P Establece el píxel al final de la línea según


Inverse y Over, luego mueve el punto a esa
posición.

REL MOVE R Mueve el “punto” al final de la línea sin afectar


la pantalla. Se codifica como una retirada
relativa desde el punto anterior.

LINE L Dibuja (o arregla) una línea recta desde el punto


hasta el final de la línea de acuerdo con Inverse
y Over, luego mueve el punto al final de la línea.
La línea está codificada como una desviación
relativa del punto anterior.

FILL F El área de fin de línea (relativa) se llena


usando píxeles sólidos. Rellene pasando un patron a
la rutina SHADE routine para que las notas en
SHADE se apliquen también.

Todo lo anterior usa 3 bytes en la base de datos.

SHADE S El área del final de la línea (relativa) está sombreada


con uno de una gran cantidad de patrones. La base de
datos contiene 256 caracteres, que se pueden cambiar
con el Editor de caracteres.

El patrón utilizado para sombrear se determina de la


siguiente manera:
a) Se le solicita un número de patrón en el rango
de 0 a 255.
b) Si INVERSE está 'on' el patrón resultante se
invierte, es decir, los píxeles SET/RESET se
intercambian.

Nota 1. La sombra primero funciona en una dirección descendente y luego


en una dirección ascendente. Para la velocidad, cuando está
bajando no mira hacia arriba y viceversa. Todas las áreas en
las que el tono falta se deben sombrear por separado, aunque
la elección cuidadosa de la posición de inicio para el tono
minimizará esto.
Note 2. Si el área sombreada es demasiado compleja, la sombra se
abandonará. Tiene que hacer esto para permitirle detectar
cuando se trata de un área que ya ha sido sombreada. Por
lo tanto, un área solo se puede sombrear una vez, ya que
un área ya sombreada será demasiado compleja para
sombrearla nuevamente. No debe sombrear un área y luego
tratar de completar el fondo con un comando de relleno,
use la opción Invertir.

TEXT T Un caracter en el rango 0 a 255 es solicitado.


Este carácter se coloca en la pantalla en la plaza
carácter (como se muestra por el comando Grid) que la
punta de la línea está contenido dentro. Está diseñado
principalmente para permitir que "los bits más
complicados" de la imagen se dibujen con el editor de
caracteres, por lo que se usa menos memoria que muchas
líneas.

Text y Shade usan 4 bytes en la base de datos cada uno.

BLOCK B Hace que un bloque de los colores seleccionados


actualmente llene el rectángulo de cuadrados de
atributos que la línea define la diagonal of.

Block usa 5 bytes en la base de datos.

2) Comandos de Color

INK X La tinta actual se establece con el valor seleccio-


Nado. INK 8 como en BASIC hace que toda la tinta
se tome de los atributos de pantalla existentes.

PAPER C Establece el papel actual al valor seleccionado.


PAPER 8 como en BASIC.
FLASH V The new value of Flash is requested (0,1 or 8).

BRIGHT Z Se solicita el nuevo valor de Bright (0,1 o 8).

todo lo anterior usa un byte en la base de datos.

INVERSE I The state of Inverse (on/off) is toggled.

OVER O The state of Over (on/off) is toggled.

Neither Inverse nor Over use any memory but their state is
encoded as part of each future instruction which is affected by
them.

3) Commando de Subroutina

GOSUB G Se solicita un número de imagen que debe estar


entre 0 y locno. A scale value for the picture is
then requested. Se solicita un valor de escala
para la imagen. Esto puede ser de 0 a 7 donde el
número indica el tamaño de la imagen en octavos -
0 significa 'sin escala' (por e.j., 8/8).

Luego se le pregunta si desea rotar el diseño


sobre X, o Y o ambos ejes.

Tenga en cuenta:

a) La escala solo afecta ciertos comandos, estos


son MOVER RELATIVE, LINE, FILL y SHADE. Los
comandos MOVER ABSOLUTE, PLOT, BLOCK y TEXT no se
escalarán o reubicarán y, en general, no se deben
usar en subrutinas (aunque funcionarán y se pueden
usar de forma útil en ocasiones).

b) Solo puede anular llamadas de subrutina a un


nivel de diez. (Anidar significa llamar a una
subrutina desde una subrutina).

c) La escala no afecta a los comandos GOSUB, es


decir, si se usa un GOSUB dentro de una subrutina,
la cadena dibujada tendrá un tamaño fijo y no se
escalará.

d) Llamar a la misma rutina que está dibujando


provocará un error de "Límite alcanzado" ya que se
habrá alcanzado el límite de 10 niveles de
subrutina.

Gosub usa dos bytes en la base de datos.

4) Comandos de Edición

START Coloca el puntero de dibujo al comienzo del


dibujo.

NEXT Ejecuta el siguiente comando de dibujo disponible:


si no hay uno, el comando se ignora.

PREVIOUS Mueve el puntero de dibujo hacia atrás un comando


y actualiza la pantalla.

DELETE (CAPS SHIFT + 0 en 48K) borra el comando


anterior en el dibujo y actualiza la pantalla.

DELETE NEXT GRAPH(ICS) (CAPS SHIFT + 9 en 48K) borra el


Siguiente si lo hay.

GRID Y Alterna una accion para una cuadrícula de carac-


teres de INK 0, PAPER 7 Y PAPER 6. Esto permite
tener encuenta las posiciones exactas de los lí-
mites de color al dibujar.
JOYSTICK J Activa y desactiva la opción del Kempston joystick.

Las teclas alrededor de la ‘S’ dr mueven al final de la línea


alrededor de un píxel a la vez (esto puede acelerarse a ocho
píxeles por vez manteniendo presionada la tecla CAPS SHIFT) de
esta manera:

Q W E

A D

Z X C

El joystick debe estar enchufado en el Puerto 2 de la Interfaz 2


o en el Spectrum Plus 2. Alternativamente, se puede conectar a
una interfaz Kempston en cuyo caso se debe usar SYMBOL SHIFT + J
para permitir que DAAD lo lea. CAPS SHIFT también acelerará la
velocidad de movimiento en el joystick. El botón de fuego actuará
como SYMBOL SHIFT y L para dibujar una línea.

Mensajes de error del editor de Spectrum y sus significados

BREAK BREAK se presionó durante una operación


periférica.

STOP in INPUT CAPS SHIFT + 6 pulsados.

Tape loading error como en BASIC. Tenga en cuenta que un


error de cinta durante la carga de la BD
Significa que la BD está dañada y debe
recargarse.

Database full No hay espac io suficiente para lo que


intentabas hacer en la BD.

Limit reached La cantidad máxima de gráficos o páginas


ya están presentes. Alternativamente, se
ha alcanzado la profundidad máxima de
subrutina - 10.

Integer out of range Mientras dibuja una imagen, un comando


LINE se ha salido del rango. Esto
generalmente se debe a un cambio de
posición del punto de inicio durante la
edición

Out of memory Esto ocurre cuando se intenta iniciar una


nueva página de RAM en un Spectrum 48K,
cargar un juego de 128K en un Spectrum 48K
o si se ha dejado espacio de trabajo
insuficiente, por ej. configurando
canales fijos antes de cargar o
escribiendo un programa demasiado grande
para usar con EXTERN.

Nota: Después de un error durante la edición de un dibujo; el


puntero de Drawstring se coloca justo antes del comando que causó
el error (es decir, un comando NEXT causará el error nuevamente).
Si no puede corregir el problema, puede usar DELETE NEXT para
eliminar el comando erróneo. Tenga en cuenta que esto puede dejar
aún más comandos sin dibujar (lo que puede causar otro error).

7.1.8 Amstrad Graphic Editor

Un sistema de dos cursores se usa para editar; el cursor Base


muestra el último punto trazado, movido a etc., el cursor de
goma muestra la siguiente posición del cursor Base o el punto
para un relleno.

El Editor proporciona cuatro grupos de comandos:

1) Commandos de Dibujo

PLOT P Establece el píxel en la posición del Cursor de


Caucho (RC) de acuerdo con el Pen actual y luego
mueve el Cursor Base (BC) a esa posición. La
posición trazada es una posición absoluta y solo
se pueden trazar las posiciones en la pantalla
visible.

MOVE M Mueve BC a RC sin afectar la pantalla. Esto está


codificado como una compensación relativa de BC.

MOVEA A Mueve la posición BC a RC sin afectar la pantalla.


La posición movida a es una posición absoluta y debe
estar en la pantalla visible.

LINE L Dibuja una línea recta de BC a RC de acuerdo con el


Pen actual, luego mueve BC a RC. La línea está
codificada como una desviación relativa de BC.

FILL F El área debajo de RC (relativa) se llena


utilizando el lápiz actual. Complete las tareas
pasando un patrón a la rutina SHADE para que las
notas en SHADE también se apliquen a FILL.

Todo lo anterior usa 3 bytes en la base de datos. Las distancias


relativas están limitadas a #+#1022 en la dirección X y #+#510 en
la dirección Y.
SHADE S El área debajo de RC (relativa) está sombreada con
uno de una gran cantidad de patrones.
El patrón utilizado para sombrear se determina de
la siguiente manera:
a) Se le solicita un número de patrón en el
rango de 0 a 255. Esto corresponde a un carácter.
b) Cualquier Ink 3 en el patrón resultante se
cambia al Pen actual. (Si el Pen actual es Pen 3,
entonces esto no tiene efecto).
c) Si presionó SHIFT S, se le pedirá un número de
color y el patrón resultante tendrá píxeles de
fondo (INK 0) configurados para ese color.

Notas sobre la rutina de sombra (y relleno):

1) La sombra primero funciona en una dirección descendente y luego en


una dirección ascendente. Para la velocidad, cuando está bajando no
mira hacia arriba y viceversa. Cualquier área que el sombreado
omita debe sombrearse por separado, aunque la elección cuidadosa de
la posición de inicio para la sombra minimizará este problema.

2) El área a sombrear se define por la tinta del píxel de inicio.


Cualquier otra tinta o el borde de la pantalla visible marcan el
borde del área sombreada.

3) El punto de inicio de la sombra debe estar en la pantalla visible.

4) Si el área sombreada es "demasiado compleja", la sombra se


abandonará. Tiene que hacer esto para permitirle detectar cuando se
trata de un área que ya ha sido sombreada. Por lo tanto, un área
solo se puede sombrear una vez, ya que un área ya sombreada será
'demasiado compleja' para sombrearla nuevamente. No debe sombrear
un área y luego tratar de completar el fondo con un comando de
relleno - Use SHIFT + S para seleccionar el papel correcto.

5) nótese bien. La rutina de dibujo de líneas del firmware en el 664


es ligeramente diferente a la del 464, por lo que un trazado de
línea de A a B puede no trazar exactamente los mismos píxeles en
las dos máquinas. Es poco probable que esto cause problemas, pero
al seleccionar un punto de inicio para un tono, se recomienda no ir
inmediatamente al lado de las líneas que ya están en la pantalla.

TEXT T Se solicita un código de carácter en el rango de 0 a


255. Este personaje se coloca en la pantalla en la
posición dada por el cursor RC. Está diseñado
principalmente para permitir que "los bits más
complicados" de la imagen se dibujen con el editor de
caracteres, por lo que se usa menos memoria que muchas
líneas.

Text y Shade usan 4 bytes en la base de datos.

BLOCK B El rectángulo definido por BC & RC (Absoluto) está


completamente lleno usando el Pen actual. El borde
de la mano izquierda se redondeará hacia abajo para
comenzar en un píxel que es divisible por 8.
El borde de la mano derecha se redondeará hacia
arriba para que el ancho de el rectángulo es un
múltiplo de 8 píxeles. Este comando utiliza la
rutina de firmware SCR FLOOD BOX, por lo que es
más rápido que FILL pero mucho menos flexible.

Block usa 5 bytes en la base de datos.

2) Comandos de Color

PEN CTRL/0-3 Changes to the Pen specified.

Pen uses 1 byte in the database.

3) Comando de Subrutina

GOSUB G Se solicita un número de imagen que debe estar en


el rango de 0 a máx. picno. Se solicita un valor
de escala para la imagen. Esto puede ser de 0 a
7, donde el número indica el tamaño de la imagen
en octavos - 0 significa 'sin escala' (es decir,
8/8).

Luego se le pregunta si desea rotar el diseño


sobre la X, la Y o ambos ejes.

Tenga en cuenta lo siguiente:

a) La escala solo afecta los comandos relativos,


estos son MOVE, LINE, FILL y SHADE. Los otros
comandos no se escalarán ni se reubicarán y, en
general, no se deben usar en subrutinas (aunque
funcionarán y se pueden usar de forma útil a
veces)

b) La escala funciona multiplicando la


distancia relativa por el valor de la escala,
dividiendo por 8 y redondeando hacia abajo. Por lo
tanto, solo las distancias relativas que son
múltiplos de 8 se escalarán con precisión.

c) Las subrutinas pueden anidarse a una


profundidad de 10. Exceder esto provocará un error
de 'Límite alcanzado'. Si esto sucede, al
presionar cualquier tecla se volverá a dibujar la
imagen justo antes del GOSUB, luego se puede usar
la tecla CLR (que borra el siguiente comando) para
eliminar el GOSUB erróneo.

4/ Comandos de Edición

START Coloca el puntero de Drawstring al comienzo del


dibujo.

NEXT Ejecuta el siguiente comando de dibujo disponible: si


no hay uno, el comando se ignora.
PREVIOUS Mueve el puntero de dibujo hacia atrás un comando
y actualiza la pantalla.

DELETE DEL El comando anterior se borra y la pantalla se


vuelve a dibujar.

DELN CLR Elimina el siguiente comando si hay uno.

Mensajes de error del editor de Amstrad y sus significados

BREAK Se presionó ESC durante una operación


periférica o durante la edición, o se
produjo un error de disco.

I/O Error Se ha producido un error de E/S. Tenga


en cuenta que un error durante la carga
de Graphics configurará una BD nula.

Database full No hay suficiente espacio en la BD


para lo que estabas intentando.

Limit reached El número máximo de imágenes ya está


presente o se ha encontrado un GOSUB
anidado.

Nota: Después de un error durante la edición, el puntero de


Drawstring se coloca justo antes del comando que causó el error
(es decir, un comando NEXT () provocará el error nuevamente). Si
imprime, se realiza una devolución a un menú.

7.1.9 Commodore Graphic Editor

Un sistema de dos cursores se usa para editar; el cursor Base


muestra el último punto trazado, movido a etc., el cursor de
goma muestra la siguiente posición del cursor Base o el punto
para un relleno.

El Editor proporciona cuatro grupos de comandos:

1) Comoandos de Dibujo (activo si CTRL se mantiene presionado)

PLOT P Establece el píxel en la posición del Cursor de


Caucho (RC) de acuerdo con el estado actual de
Inverse/Over (ver más adelante) y luego mueve el
Cursor Base (BC) a esa posición. La posición
trazada es una posición absoluta y solo se pueden
trazar las posiciones en la pantalla visible.
REL MOVE R Mueve BC a RC sin afectar la pantalla. Esto está
codificado como una compensación relativa de BC.

ABS MOVE A Mueve BC a RC sin afectar la pantalla. La posición


movida a es una posición absoluta y debe estar en
la pantalla visible.

LINE L Dibuja una línea recta de BC a RC de acuerdo con el


Pen actual, luego mueve BC a RC. La línea está
codificada como una desviación relativa de BC (No se
establece el punto final de la línea).

FILL F El área debajo de RC (relativa) se llena


utilizando el lápiz actual. Complete las tareas
pasando un patrón a la rutina SHADE para que las
notas en SHADE también se apliquen a FILL.

Todo lo anterior usa 3 bytes en la base de datos. Las distancias


relativas están limitadas a #+#511 en la dirección X y #+#256 en la
dirección Y.

SHADE S El área debajo de RC (relativa) está sombreada con


uno de una gran cantidad de patrones.
El patrón utilizado para sombrear se determina de
la siguiente manera:
a) Se le solicita un número de patrón en el
rango de 0 a 255. Esto corresponde a un carácter.
b) Si INVERSE estaba 'on', el patrón resultante
se invierte, es decir, los píxeles SET/RESET se
intercambian.

Notas sobre la rutina de sombra (y relleno):

1) La sombra primero funciona en una dirección descendente y luego en


una dirección ascendente. Para la velocidad, cuando está bajando no
mira hacia arriba y viceversa. Cualquier área que el sombreado
omita debe sombrearse por separado, aunque la elección cuidadosa de
la posición de inicio para la sombra minimizará este problema.

2) El punto de inicio de la sombra debe estar en la pantalla


visible. (¡Aunque podría estar debajo del screenbreak y por
lo tanto invisible! Esto no se recomienda ya que el salto de
pantalla no está en el mismo lugar en el intérprete)

3) Si el área sombreada es "demasiado compleja", la sombra se


abandonará. Tiene que hacer esto para permitirle detectar
cuando se trata de un área que ya ha sido sombreada. Por lo
tanto, un área solo se puede sombrear una vez, ya que un área
ya sombreada será 'demasiado compleja' para sombrearla
nuevamente. No debe sombrear un área y luego tratar de
completar el fondo con un comando de relleno.
CHAR C Se solicita un código de carácter en el rango de 0
a 255. Este personaje se coloca en la pantalla en
el cuadro de caracteres (como se muestra en el
comando Grill) en el que se encuentra el cursor RC.
Está diseñado principalmente para permitir que "los
bits más complicados" de la imagen se dibujen con
el editor de caracteres, por lo que se usa menos
memoria que muchas líneas

El carácter y la sombra usan 4 bytes en la base de datos.

BLOCK B El rectángulo definido por BC & RC (Absoluto)


está completamente lleno usando los colores
actuales. Este comando es más rápido que FILL
pero mucho menos flexible. (Tenga en cuenta que
no establece ningún color de solo píxeles).
Block utiliza 5 bytes en la base de datos.

2) Comandos de Color

PAPER CTRL + 0 Permite seleccionar un paper de 0 a 16.

INK CTRL + I Permite seleccionar una ink de 0 a 16.

Tanto INK como PAPER usan un byte en la base de datos. Tenga en


cuenta que un valor de 16 no es un color como tal, pero puede
considerarse como transparente, es decir. Hace que los colores
de pantalla existentes se muestren transparentes.

INK y PAPER usan 1 byte cada uno en la base de datos.

INVERSE F3 Se selecciona Inverso lo que hace que se


establezca el bit inverso de cualquier comando
futuro de FREEHAND, PLOT LINE y SHADE. Esto hace
que todos los píxeles se restablezcan en lugar de
establecerse en el caso de FREEHAND, PLOT & LINE
y el patrón que se invertirá en el caso de SHADE.
SHIFT + F3 restablecerán la bandera inversa.

OVER F5 Se selecciona Over, lo que causa que se configure


un poco más de cualquier comando futuro de FREEHAND
PLOT & LINE. Esto hace que se restablezcan todos
los píxeles configurados y se configuren los
píxeles de restablecimiento (es decir, el nuevo
estado de un píxel es el O EXCLUSIVO de su estado
anterior).
Ni Inverse ni Over usan memoria ya que su estado está codificado
como parte de cada instrucción.

3) Comando Subrutina

GOSUB G Se solicita un número de imagen que debe estar en


el rango de 0 a máx. picno. Se solicita un valor
de escala para la imagen. Esto puede ser de 0 a
7, donde el número indica el tamaño de la imagen
en octavos - 0 significa 'sin escala' (es decir,
8/8).
Luego se le pregunta si desea rotar el diseño
sobre la X, la Y o ambos ejes.

Tenga en cuenta lo siguiente:

a) La escala solo afecta los comandos


relativos, estos son MOVE, LINE, FILL y SHADE. Los
otros comandos no se escalarán ni se reubicarán y,
en general, no se deben usar en subrutinas (aunque
funcionarán y se pueden usar de forma útil a
veces)

b) La escala funciona multiplicando la


distancia relativa por el valor de la escala,
dividiendo por 8 y redondeando hacia abajo. Por lo
tanto, solo las distancias relativas que son
múltiplos de 8 se escalarán con precisión.

c) Las subrutinas pueden anidarse a una


profundidad de 10. Exceder esto provocará un error
de 'Límite alcanzado'. Si esto sucede, al
presionar cualquier tecla se volverá a dibujar la
imagen justo antes del GOSUB, luego se puede usar
la tecla CLR (es decir, SHIFT + HOME borra el
siguiente comando) para eliminar el GOSUB erróneo.

4/ Editing commands

START (SHIFT + CRSR DOWN) Pone el puntero de Drawstring


al comienzo del dibujo.

NEXT (CRSR DERECHA) Ejecuta el siguiente comando de


dibujo disponible: si no hay uno, el comando se
ignora.

PREVIOUS (SHIFT + CRSR RIGHT) Mueve el puntero de dibujo


hacia atrás un comando y actualiza la pantalla.

DELETE INST (SHIFT + DEL) Se borra el comando anterior y se


vuelve a dibujar la pantalla.

DELN CLR (SHIFT + HOME) Elimina el siguiente comando si hay


uno.

GRID F7 Superpone una cuadrícula en el dibujo que permite


ver los límites de color. Como solo puede haber un
color de Paper y uno de Ink en cada cuadro de 8x8
píxeles, se necesita un posicionamiento muy
inteligente para evitar los conflictos de color.
SHIFT + F7 eliminarán la cuadrícula (redibuja la
pantalla).
Mensajes de error del editor de Commodore y sus significados

RUN STOP Se pulsó RUN STOP durante una operación


periférica o durante la edición.

I/O Error Se ha producido un error de E/S. Tenga en


cuenta que un error durante la carga de
Graphics configurará una base de datos
nula.

Database full No hay suficiente espacio en la BD


para lo que estabas intentando.

Limit reached El número máximo de imágenes ya está


está presente o se ha encontrado un
GOSUB anidado.

Nota: Después de un error durante la edición, el puntero del


cordón se coloca justo antes de que el comando que causó el error
(es decir, un comando NEXT (CRSR RIGHT) vuelva a provocar el
error). Si imprime, se realiza una devolución a un menú.

NB: los gestores de datos No-Drawstring (DMG) para PC y Atari ST


se tratan en un documento separado.
7.2 Image (DMG)
==============

1. Introducción:
================
Éste es el creador y editor de la base de datos con los gráficos
(y el sonido, en la versión de ST) de la aventura para los
ordenadores de 16 bits y PCW. Hay dos versiones:

ST: Admite gráficos y sonidos digitalizados. Soporta el sistema


múltiple, utilizado a partir de la Aventura Espacial, en el que
la misma base de datos gráfica (b.d.g. a partir de ahora) sirve
para Atari, Amiga y PC CGA, EGA y VGA. Las b.d.g. creadas con
este DMG deben llevar la extensión .DAT y son las que
admiten los intérpretes de PC cuyo nombre acaba en 'M' y los
de Atari y Amiga.

PC: Es la versión antigua, sólo para CGA, EGA y PCW. La b.d.g. de


CGA y la de EGA deben hacerse por separado (llevando las
extensiones .CGA y .EGA respectivamente); la de PCW se crea a
partir de la de CGA. En PC funciona en los intérpretes cuyo nombre
no acaba en 'M'. Ya que es mucho más facil hacer las b.d.g. de PC
en el Atari nosotros sólo usamos esta versión para hacer la de
PCW.

2. DMG para Atari ST:


=====================
Ya que el DMG actualiza la b.d.g. bastante a menudo, la mejor
forma de utilizar el DMG si no se dispone de disco duro es
teniendo la b.d.g en un disco ram. Éste debe ser al menos el doble
de grande que la b.d.g con la que vayamos a trabajar ya que con
ciertas opeaciones el DMG crea una copia de seguridad (.BAK).

A continuación se detallan los distintos menús y sus opciones:

2.1. Menú File


--------------

2.1.1. Open DB:


Abrir la base de datos para comenzar a trabajar con ella. Si
indicamos el nombre de una b.d.g. nuecva nos pide confirmación
antes de crearla.

2.1.2. Close DB:


Cerrar la b.d.g. con la que estamos trabajando para poder abrir
otra. Si no vamos a abrir otra no es necesario escoger esta opción
ya que Quit la cierra antes de salir al sistema.

2.1.2. Load PI1:


Carga una pantalla en formato PI1 en la memoria de trabajo.
2.1.3. Load SPL:
Carga un sonido digitalizado en la memoria de trabajo.

2.1.4. Quit:
Sale al sistema tras pedir confirmación.

2.2. Menú DB:


-------------

2.2.1. Locations:
Información sobre los datos contenidos en una localidad. En ella
podemos ver:
-Botones << y >>: nos permiten ver la localidad anterior y
la
siguente respectivamente. Entre ellos aparece el número de la
localidad que estamos viendo.
-Offset: si esta localidad está vacía, aparecerá la frase "no
data". En caso aparecerá un número en hexadecimal que no es de
niguna utilidad para el desarrollo de la de la aventura.
-Copy: permite copiar este gráfico o sonido a otra localidad.
En realidad sólo se copia el puntero a ese gráfico o sonido, por
lo que el tamaño de la b.d.g. no aumenta, ahorrándose así memoria.
Notese que la información de dos localidades con el mismo gráfico
o sonido es independiente, es decir, podemos tener dos localidades
apuntando al mismo gráfico y en una tenerlo como fijo y en otra
como flotante, o con distintas coordenadas, o tener dos
localidades apuntando al mismo sonido y en cada una haber
especificado una frecuencia distinta.
-Clear: borra el puntero de la localidad, con lo que esta
queda libre. Si esta era la única localidad que apunta a ese
gráfico o sonido, el programa nos lo advierte y pide confirmación.
La actualización de la base de datos al borrar un dibujo o sonido
puede llevar algún tiempo; especialmente si no se trabaja con un
disco ram. Al finalizar la actualización conviene salir del DMG y
borrar el fichero .BAK que se ha creado para disponer de más
espacio de trabajo en el disco.
-Nobuff/buffer:Al cargar el juego el DAAD reserva una zona de
memoria (buffer) en la que se cargan tantos gráficos y sonidos
como quepan, todos los demás serán cargados de disco cuando se
haga un PICTURE. Con la opción buffer indicamos al DAAD que el
gráfico o sonido de esta localidad tiene prioridad a la hora de
cargarse en memoria al principio del juego. Se usa, por ejemplo,
para gráficos de objetos, marco para el gráfico, caras de
personajes y en general cualquier cosa en la que se necesite
velocidad y no queramos que el juego se ponga a cargar. Hay que
tener en cuenta que la capacidad del buffer es limitada, variando
según el modelo de ordenador y la memoria de que disponga. Se
garantizan 32k de buffer aunque normalmente se puede contar con
algo más.

El resto del panel varía según lo que haya en la localidad sea un


gráfico o un sonido (si no hay nada, puede aparecer cualquiera de
los dos tipos de panel; esto no tiene importancia).
Si en esta localidad hay un gráfico en el panel encontraremos:

-Fix/float: un gráfico fijo (fixed) aparece siempre en las


mismas coordenadas cuando lo imprimimos en el juego y siempre con
el mismo tamaño. Las coordenadas y dimensiones de la ventana que
esté seleccionada en ese momento, así como la paleta, se adaptarán
a las del gráfico (Véase al respecto la opción Palette Range más
abajo). Un gráfico flotante (floating), en cambio, aparece en las
coordenadas de la ventana seleccionada y con el tamaño de ésta y
sólo aparecerá entero si la ventana es mayor o igual que él; si es
menor, el gráfico quedará recortado por abajo y por la derecha (es
decir, la esquina superior izquierda del gráfico aparecerá
siempre). Así mismo, un gráfico flotante tomará la paleta que esté
activa en ese momento.
Junto al botón Fix aparecen la coordenadas de la esquina
superior izquierda del gráfico en pixels. Nótese que sólo están
iluminadas en el caso de que el gráfico sea fijo.
-Views: permite ver el gráfico asociado a esta localidad con
cualquiera de sus tres paletas (ST/Amiga/Vga, Ega o CGA). Si se
elige View EGA o CGA sin haber incluido su paleta correspondiente,
toda la pantalla aparecerá negra. Usar la opción view puede
corromperel gráfico o el sonido de la memoria de trabajo, por lo
que habrá que volver a cargarlo si no hemos acabado de trabajar
con él.
-Palette: Permite cargar y editar las paletas de EGA y CGA.
Esta opción se explica con más detalle en la sección 2.4.4.
-Palette range: Sólo para gráficos fijos, permite especificar
qué parte de la paleta va a modificar al imprimirlo. Si por
ejemplo damos el valor 9 como Start y 15 como End, al imprimir
este gráfico sólo los registros del 9 al 15 de la paleta cambiarán
a los de este gráfico.
-Relocate: Permite cambiar las coordenadas de un gráfico
fijo. Aparecerá el dibujo en pantalla y lo podremos mover con las
teclas W (arriba), X (abajo), A (izquierda) y D (derecha). Nótese
que el movimiente es de 8 en 8 pixels; las coordenadas de un
gráfico fijo son siempre múltiplos de 8.

Si lo que hay en esta localidad es un sonido, aparecen sólo dos


botones:
-Info: permite cambiar la frecuencia del sonido y ver su
longitud.
-Listen: para oir el sonido.

Tanto para gráficos como para sonido, en la parte baja del panel
están los botones OK para confirmar los cambios realizados y
Cancel, que nos pregunta si queremos cancelar todos los cambios
realizados desde que se seleccionó Locations en el menú DB, sólo
los de la localidad seleccionada en este momento, o ninguno.

2.2.2. Make picture:


Con esta opción asociamos un gráfico a una localidad. Aparece el
gráfico que tengamos cargado en la memoria de trabajo y sobre él
un rectángulo en línea discontinua. Podemos cambiar el tamaño del
rectángulo con las teclas W, X, A y D; si además mantenemos
pulsada la tecla Shift, lo que haremos será mover el rectángulo,
una vez hayamos encuadrado la parte del gráfico que queremos
"recortar" basta con Return. En cualquier momento se puede salir
con la tecla Esc.

2.2.3. Link sound:


Para asociar el sonido de la memoria de trabajo con una localidad.

2.2.4. Squeeze:
Comprime la b.d.g. Requiere más espacio de disco cuanto mayor sea
la b.d.g. , por lo que conviene comprimir antes de que la b.d.g.
crezca demasiado (unas 300k si se trabaja con disco ram en una
máquina de 1 mega).

2.2.5. Buffer sort:


Para que la opción buffer de la opción Locations funcione hay que
realizar un buffer sort tras haber especificado qué graficos
queremos que vayan al buffer. Al final de la ordenación se nos
indica cuántos bytes del buffer hay ocupados con gráficos.
Tanto Squeeze como Buffer Sort crean ficheros .BAK que conviene
borrar antes de seguir.

2.2.6. Build IBM:


La b.d.g. de PC es ligeramente diferente a la de Atari. Con esta
opción se crea la b.d.g. de PC; que tendrá por defecto la
extensión .IBM y que, una vez pasada al PC deberá renombrarse a
.DAT.

2.2.7. Info:
Nos da el número de gráficos y sonidos que tiene la b.d.g. (si
hemos copiado un gráfico o un sonido a más de una localidad, sólo
se cuenta una vez) y la longitud total de la b.d.g.

2.3. Menú Pic:


--------------

2.3.1. View:
Permite ver con la paleta de ST/Amiga/VGA la pantalla que hayamos
cargado en la memoria de trabajo.

2.3.2. View CGA:


Permite ver con la paleta de CGA la pantalla que hayamos cargado
en la memoria de trabajo. Si no hemos incluido una paleta de CGA,
no se verá nada en pantalla (el dibujo estará ahí, pero con todos
los colores puestos a negro, que es valor por defecto de todos los
registros para las paletas de CGA y EGA).

2.3.3. View EGA:


Similar a la anterior pero para EGA.
2.3.4. Hot Points:
Esta opción no está implementada.

2.4. Menú Palette:


------------------

2.4.1. Load CGA:


Carga una paleta de CGA para el gráfico de la memoria de trabajo.
Esta paleta debe pertenecer a un gráfico en formato .PI1. La mejor
forma de hacerla es, teniendo el gráfico con la paleta original de
ST en el programa de dibujo que se use (nosotros usamos Degas
Elite y Delux Paint ST), cambiar cada registro de la paleta a uno
de los cuatro colores de la CGA hasta que quede bien (al menos
todo lo bien que puede quedar un dibujo en CGA); a continuación se
salva el gráfico y será de este gráfico del que el DMG saque la
paleta. Los valores de RGB que el DMG acepta se litan más abajo.

2.4.2. Load EGA:


Similar a la anterior para la paleta de EGA.

2.4.3. Calculate:
Como alternativa a las opciones de cargar las paletas de EGA y CGA
se puede hacer que el DMG las calcule a partir de la de ST. Esto
es más cómodo pero los resultados no son tan buenos, aunque se
pueden mejorar con la opción Edit.

2.4.4. Edit:
Permite editar las paletas de EGA y CGA. En la mitad izquierda del
panel aparecen tres columnas que, de izquierda a derecha,
representan los 16 registros de la paleta (numerados del 0 al 15)
y los colores de EGA y CGA que tienen asignados respectivamente.
A continuación se listan los colores de EGA y CGA junto el número
que representa a cada uno en el DMG y sus valores RGB:

EGA:
----
RGB
0 Negro 000
1 Azul 006
2 Verde 060
3 Cyan oscuro 066
4 Rojo 600
5 Magenta oscuro 606
6 Naranja 620
7 Gris claro 666
8 Gris oscuro 222
9 Azul claro 337
10 Verde claro 272
11 Cyan claro 277
12 Rojo claro 722
13 Magenta claro 727
14 Amarillo 772
15 Blanco 777

CGA:
----
RGB
0 Negro 000
1 Cyan 277
2 Rosa 727
3 Blanco 777

En la parte derecha de panel se encuentran los siguientes botones:


-CGA Blue On/Off: cuando está a OFF, los colores de CGA serán
negro, verde, rojo y marrón en lugar de los listados arriba.
-Load EGA y Load CGA permiten cargar desde aquí la paleta
exactamente igual a como se explicó arriba.

Este panel tambien aparece al usar el botón Palette del panel


Location Info. La diferencia es que en ese caso afecta al gráfico
de la localidad seleccionada mientras que en éste afecta al
gráfico que haya en la memoria de trabajo. En este último caso,
además, las paletas de EGA y CGA se conservan aunque se cargue
otro gráfico en la memoria de trabajo; así, si se quiere usar la
misma paleta de EGA o CGA para más de un gráfico no hay que volver
a cargarla, calcularla o editarla.

2.5. Menú Sounds:


----------------

Con las opciones Hear Sample e Info, idénticas a las de los


botones Listen e Info del panel Location Info, solo que se
refieren al sonido almacenado en la memoria de trabajo.

3. DMG para PC:


===============

Si se le llama con
DMG nombrebdg
y no existe una b.d.g. con ese nombre, la creará para CGA.

Si se le llama con
DMG nombrebdg -ega
y no existe una b.d.g. con ese nombre, la creará para EGA.

En el caso de especificar una b.d.g. ya existente no es necesario


darle ningún parámetro ya que el DGM detecta para qué tarjeta es.

Una vez cargado el programa aparece en la parte superior de la


pantalla información sobre la b.d.g., alguna ayuda y un prompt
donde debemos teclear uno de los comandos disponibles. Estos
comandos son los siguientes (nota:"ln" quiere decir "numero de
localidad" y "v" puede ser 0 ó 1):

A nombre - Carga una pantalla de Amstrad CPC de 4 colores


llamada 'nombre'. (Esta opción sólo se usó en La
Aventura Original).

B ln v - Indica si el dibujo de la localidad ln tiene


prioridad para cargarse en el buffer (v=1) o no
(v=0).

C ln - Borra el puntero de una localidad. Funciona como la


opción CLEAR del DMG de Atari.

D ln1 ln2 - Copia (duplica) el puntero de la localidad ln1 en el


de la localidad ln2. Como la opción COPY del DMG de
Atari.

E ln nombre - Export clip: salva a disco con el nombre 'nombre' el


dibujo recortado (clip) de la localidad ln.

F ln v - Para indicar si el gráfico en la localidad ln va a


ser fijo (v=0) o flotante (v=1).

I ln nombre - Import clip: carga de disco el clip 'nombre' en la


localidad ln.

L nombre - Carga en la memoria de trabajo un gráfico en formato


.PI1 y lo convierte al modo en el que estemos
trabajando. Para que la conversión sea correcta, se
recomienda usar estas paletas:

Registro EGA CGA


rgb rgb
0 000 000
1 006 007
2 060 007
3 066 007
4 600 007
5 606 007
6 620 007
7 666 777
8 222 007
9 337 007
10 272 007
11 277 177
12 722 007
13 727 007
14 772 747
15 777 656

M ln - Hacer (Make) el dibujo para la localidad ln.


Funciona igual que la opción Make Picture del DMG de
Atari, con la diferencia de que el renctángilo se
controla con las teclas del cursor.

O - Ordena el buffer. Igual que la opción Buffer Sort de


la versión de Atari.

P ln v - Como la opción CGA Blue del DMG de Atari. 0 equivale


a Blue Off.

R ln - Cambia las coordenadas de un gráfico fijo, como en


Atari, pero con las teclas del cursor.

S - Comprime la b.d.g. (Squeeze).

V [ln] - Para ver el gráfico asociado a la localidad ln. Si


no se da ningún numero de localidad se muestra lo
que hay en la memoria de trabajo.

W - Crea una b.d.g. para PCW. Siempre la llama DGM.PCW,


por lo que hay que renombrarla.

X ln - Muestra información sobre la localidad ln: su


offset, si es un gráfico fijo o flotante, si tiene
prioridad para el buffer y, en CGA, si usa la paleta
de los azules o no.

Q - Salir al sistema.

Las opciones A, P y W sólo están disponibles en CGA.


Apendice A – Conjunto de caracteres

En todo el sistema DAAD se usa el mismo juego de 256 caracteres.


Los códigos son los siguientes:

0-15 son códigos internos y no se pueden usar en el texto. Por lo


tanto, están disponibles solo para patrones de sombreado y
caracteres gráficos de los editores gráficos.

16-31 son los códigos específicos especiales del idioma. Estos


cambian según la opción de idioma. No significan nada en el
intérprete inglés. En español:

Symbol IBM code DAAD code Escape


ª 166 16 A
¡ 173 17 B
¿ 168 18 C
« 174 19 D
» 175 20 E
á 160 21 F
é 130 22 G
í 161 23 H
ó 162 24 I
ú 163 25 J
ñ 164 26 K
Ñ 165 27 L
ç 135 28 M
Ç 128 29 N
ü 129 30 O
Ü 154 31 P

32-126 son el conjunto ASCII estándar

127 se utiliza como un código de espacio forzado.

128-255 son lo que quieras. Usando el código de escape \g pueden


convertirse en un segundo conjunto, que toma los mismos códigos
que 0-127. En IBM en modo texto, solo aparecerán las mayúsculas
ASCII 'A' a 'Z', todas las demás se suprimirán.
CONEXION ENTRE LOS ORDENADORES

Hay que construir los siguientes cables:

a) Cable 1:
-----------
Sirve para conectar el PC vía RS-232 con el Atari ST, el
Amiga y el Amstrad CPC. Tiene un conector hembra de 25 pines (DB-
25) a cada extremo. Los conectores deben estar cableados como
sigue:

1--------------1
2--------------2
3--------------3
|---4 4---|
| 5--------------5 |
|---6 6---|
| 7--------------7 |
|---8 8---|
20--------------20

b) Cable 2:
-----------
Para conectar el PC con el RS-232 de un Spectrum 128k ó +2. Los
programas de comunicaciones que se suministran con el DAAD sólo
funcionan con un Disciple,que es incompatible con el +2A y el +3
(las comunicaciones con +3 y PCW se hacen a través del Amstrad
CPC, utilizando discos en formato DATA que pueden ser leídos por
cualquiera de los tres ordenadores).
Es un cable de 6 hilos con un conector DB-25 en un extremo y un
conector para el zócalo RS-232 del Spectrum en el otro cableados
como sigue:

Función DB-25 Spectrum


------- ----- --------
Masa 7 1 |---------------|
TXD 2 2 |--- 6 5 4 3 2 1 |
RXD 3 3 |--- - - - - - - |
DTR 20 4 |---------------|
CTS 5 5
+12 V 6 6 Zócalo RS-232 Spectrum

c) Cable 3:
-----------
Para conectar el puerto paralelo del PC con el puerto de E/S de
usuario del Commodore 64. Es un cable plano de 25 hilos con un
conector a presión DB-25 en un extremo y el conector adecuado para
el Commodore en el otro. Este conector está cableado como sigue:
Hilo Patilla del conector del C-64
---- -----------------------------
5 M
9 L
11 K
13 J
15 H
17 F
19 E
21 D
23 C
25 B

Los hilos se han numerado de izquierda a derecha sosteniendo el


cable de forma que la patilla A del conector del C-64 es la que
queda más a la derecha.
EXTERN

Esto proporciona un resumen del soporte para lenguaje ensamblador en los


intérpretes DAAD. Tenga en cuenta que el mecanismo de ensamblador descrito
es solo para 8 bits. Los intérpretes de 16 bits tienen un mecanismo LINK
para el código externo, pero aún puede usar las directivas del compilador
para proporcionar datos en la base de datos en 16 bits.

Para simplificar las cosas, se recomienda utilizar las instalaciones


proporcionadas con el compilador, esto hace que todo el proceso sea
simple (y lo mismo) para cada máquina.

La idea es incluir un bloque de lenguaje ensamblador y llamarlo desde un


programa DAAD. La única memoria libre real en el sistema DAAD es el área
utilizada para la base de datos, por lo que parece lógico incluir
cualquier ensamblador en esta sección.

La base de datos es bastante simple en el diseño, consiste en una serie de


punteros en la dirección DBADDR. Todos los símbolos dados se definen en el
archivo de encabezado SYMBOLS.ASM que debe incluirse en cualquier origen
de ensamblador. También se definen en SYMBOLS.Z80/6502 para su uso con
declaraciones de datos dentro de un archivo DAAD, ver más adelante.

Después de estos indicadores, aparecen las tablas de datos generadas por el


compilador. El primero es la sección CTL. Ahora, porque esto está realmente
vacío y siempre en la misma dirección (después de los punteros), es la única
dirección / lugar realmente útil para cualquier código no reubicable. El
archivo EXTERN.SCE usa esto para el código de interrupción. el símbolo
CTLADDR define la dirección de la sección CTL. NOTA: Todas estas direcciones
son diferentes en cada máquina por razones obvias, por lo que debe armar una
copia del código para cada máquina. Los ejemplos muestran cómo hacer esto
fácilmente con el ensamblaje condicional.

Si incluye código de máquina en cualquier otro lugar de la BD, no sabrá su


dirección hasta el momento de la compilación, y cuando realice cambios en la
base de datos, su posición podría cambiar, por lo que tendría que volver a
ensamblar y compilar de nuevo. Por lo tanto, el único código que debe incluir
en otra parte de la BD es el código/datos reubicables. El código máquina es
solo una serie de números como cualquier dato, por lo que el siguiente problema
es insertar el código en la base de datos.

El compilador proporciona varios comandos de preprocesador para lograr esto:

NOTA: Usted no está limitado solo al lenguaje ensamblador. También puede


generar nuevas tablas de datos con estos comandos.

#incbin filespec

Incluirá un archivo de imagen de memoria en la posición actual en la BD

#defb expression {{{expression} expression}...

Incluirá los valores de bytes indicados en la base de datos en la


dirección actual.

#defw expression {{{expression} expression}...

Incluirá los valores de palabra indicados en la base de datos en la


dirección actual.

#hex hexpair{{whitespace}{hexpair}....}

Incluirá datos hexadecimales directos en el db. Esto es similar a la


declaración HEX de PDS.

#dbaddr symbol
Dará el símbolo de la dirección actual en la base de datos. Esto se
puede usar para los comandos CALL o #defw.

El mecanismo de llamada para 8 bit.


-----------------------------------

Para llamar a una rutina de ensamblador, tienes dos mecanismos:

1/ SFX,EXTERN

Estos dos comandos tienen un vector externo. Que se puede configurar


usando dos formas especiales de la directiva #incbin:

#extern {filespec}
#sfx {filespec}

Si incluye el nombre del archivo, el archivo dado se incluirá en la base de


datos (como si el comando fuera seguido por #incbin). El vector en el intérprete
se establece en la carga de la base de datos a la dirección de la rutina. Tenga
en cuenta que SFX ya tiene un efecto predeterminado de escritura en los
registros de chips de sonido. Entonces cualquier rutina que use este vector
reemplazará esta función. El archivo EXTERN.SCE utiliza EXTERN para lograr el
sonido para que el comando SFX continúe funcionando.

Ahora cualquier comando EXTERN o SFX será dirigido a su rutina.

os intérpretes reconocen 3 vectores externos. El tercero es para una


interrupción de 50Hz:

#int {filespec}

Cualquier rutina colocada en este vector se llamará 50 veces por segundo


durante todo el período de ejecución del juego. Por lo tanto, no hay
ningún comando en el lenguaje DAAD para llamar a la rutina. Los Z80 solo
guardan los registros AF y HL (como HL se da como su dirección), así que
asegúrese de guardar cualquier otro registro que use. Las interrupciones
del 6502 guardan el estado del procesador.

2/ CALL address

Este es un CondAct especial que transfiere la ejecución a la rutina


dada. Aunque es flexible, no puede pasar ningún parámetro directamente.
Debe colocar datos en Banderas antes de la llamada o usar #defb/w para
incluir parmetros estáticos. Estos se pueden extraer utilizando el
puntero BC, dejándolo apuntando al primer byte no parametrico después.

Address puede ser cualquier expresión que evalúe un número en el rango


0-65535. Tenga en cuenta que las direcciones de llamadas que no son
rutinas documentadas o sus propias subrutinas generalmente podrán
bloquear la computadora.

Assembler bit
-------------

1/ Z80

Para SFX y EXTERN CondActs, su rutina se suministrará con la siguiente


información:

A - Valor del primer parámetro (puede ser indirecto, en cuyo caso


obtendrá el contenido de la bandera en A.)
HL - Puntos en la bandera dados por el primer parámetro (o la bandera dada
por el contenido de la bandera si ind
DE - Puntos en la ubicación del Objeto dada por el primer parámetro
IX - Dirección de Flag 0, 256 bytes después de esto están los objetos
BC - puntos en el segundo parámetro de la llamada, puede avanzar este puntero
y dejarlo apuntando al último parámetro en línea si lo desea. Por ejemplo:

EXTERN 0 6
#defw Anaddress

Se podría acceder con la siguiente rutina:

LD A,(BC)
PUSH AF
INC BC
LD A,(BC)
LD E,A
INC BC
LD A,(BC)
LD D,A ; DE = Anaddress
POP AF ; A = 6

Los registros IX y BC deben conservarse / actualizarse. Pero los registros A,


DE y HL pueden tratarse como desee. Tenga en cuenta que debe evitar el
conjunto alternativo y AF' e IY ya que estos son utilizados por el sistema
operativo de varias máquinas.

Después de una llamada, los registros A, HL y DE no tienen sentido. Y el


registro BC ya apunta al próximo CondAct o cualquier dato siguiente, esto
es diferente de SFX/EXTERN.

Tenga en cuenta que en las máquinas donde coexisten RAM y ROM, su entorno
será de 64 K de RAM, por lo que no busque ROMS sin más información...
LISTA DE LOS PROGRAMAS DEL DAAD V2
================================================================================

I.- IBM PC (6 discos de 5 1/4):


===============================

NOTA:Los ficheros con la extensión .ARJ están comprimidos. Bajo cada uno de
ellos se listan los ficheros que se obtienen al descomprimirlos.

1.-Disco de desarrollo (Developer):


-----------------------------------
CHARS.ASM -En este fuente se declara el numero de partes de una aventura y
la distribución por los distintos discos de los ficheros que la
componen. Para ensamblar y linkar este fichero y el siguente
son necesarios los programas MASM y LINK de Microsoft (no
incluidos). En caso de que no se disponga de estos programas
también se incluye una versión ejecutable de los intérpretes
(ver disco 3)
EXTERN.ASM -Fuente mínimo a linkar con un interprete de PC si no se usan
externs en PC
DC.EXE -Compilador
DMG.EXE -Creador de bases de datos gráficas para PC (CGA/EGA) y PCW
SYMBOLS.SCE -Declaración de símbolos útiles a la hora de programar
(como por ejemplo, los nombres de las banderas)
SYMBOLS.ASM -Idem para ensamblador
MACROS.Z80 -Idem
SYMBOLS.Z80 -Para incluir pequeños listados en ensamblador de Z80
en el fuente de la aventura
SYMBOLS.652 -Idem para el microprocesador 6502
BLANK.SCE -Fuente mínimo para empezar una aventura
BLANK.DDB -Versión compilada de BLANK.SCE
DMSXI.Z80 -Intérprete de MSX

OBJ <DIR> -Los intérpretes de PC vienen como módulos objeto para


poder linkarlos con EXTERN.OBJ y CHARS.OBJ
CHARS.OBJ -Versión ensamblada de CHARS.ASM
EXTERN.OBJ -Versión ensamblada de EXTERN.ASM
INTE.OBJ -Distintos tipos de intérpretes (en inglés y español)
INTECGA.OBJ
INTED.OBJ
INTEDM.OBJ
INTEM.OBJ
INTS.OBJ
INTSCGA.OBJ
INTSD.OBJ
INTSDM.OBJ
INTSM.OBJ

2.-Disco de utilidades del DAAD (Utilities):


--------------------------------------------
GRAPHICS <DIR>
DRAW <DIR>
DSC.COM -Convierte gráficos de Spectrum a Commodore 64
DSM.COM -Idem a MSX
DSA.COM -Idem a Amstrad CPC
DCA.COM -Comprime los gráficos de Spectrum
DCS.COM -Comprime los gráficos de Amstrad CPC

PIXELS <DIR>
CACGA.COM -Convierte gráficos de Amstrad CPC a CGA
CSTEGA.EXE -Convierte gráficos en formato .PI1 de ST a EGA
CSTVGA.EXE -Idem a VGA (para la pantalla de presentación)
CSTAM.EXE -Idem a Amiga
CSTS.EXE -Idem a Spectrum
CSTA.COM -Idem a Amstrad CPC
CST1PCW.EXE -Idem a PCW
CST3PCW.EXE -Convierte gráficos en formato .PI3 de ST a PCW

COMMS <DIR>
XMP.EXE -Comunicaciones entre PC y Spectrum (Con Disciple)
GOCBM.COM -Comunicaciones con Commodore 64
PPM.COM -Envía una aventura al MSX y la ejecuta (Necesita PDS)
AAH.COM -Añade una cabecera de Amstrad CPC a un fichero
ASH.COM -Añade una cabecera de Spectrum +3 a un fichero
RAAH.COM -Quita la cabecera de Amstrad CPC de un fichero
RASH.COM -Quita la cabecera de Spectrum +3 de un fichero

SQUEEZE <DIR>
FINDTOK.EXE -Halla los tokens que proporcionarán la compresión más
eficiente del texto de la aventura.

RECOVER <DIR>
LOOK.COM -Permite examinar los textos de una aventura compilada

PRINT <DIR>
SPP.COM -Pone la impresora en modo IBM
WP <DIR>
STRIP.COM -Elimina los espacios al final de cada línea
de un texto.
ASC1ST.COM -Convierte un texto en formato del 1st Word
de Atari a ASCII

ASM <DIR>
MHEX.COM -Crea a partir de un fichero binario un bloque en
fuente para incluir en el listado de la aventura
GENTASM.COM -Convierte un listado de GENS de Spectrum al ensamblador
cruzado 2500AD (no incluido)

3.-Disco de intérpretes ejecutables:


------------------------------------
Para el caso de que no se disponga de los programas MASM y LINK necesarios
para montar los intérpretes de PC, aquí se incluyen ya montados. De los que
necesitan que se les indique el número de partes de la aventura, se incluyen
versiones para una, dos y tres partes.

INTE1.EXE
INTE2.EXE
INTE3.EXE
INTECGA1.EXE
INTECGA2.EXE
INTECGA3.EXE
INTED.EXE
INTEDM.EXE
INTEM1.EXE
INTEM2.EXE
INTEM3.EXE
INTS1.EXE
INTS2.EXE
INTS3.EXE
INTSCGA1.EXE
INTSCGA2.EXE
INTSCGA3.EXE
INTSD.EXE
INTSDM.EXE
INTSM1.EXE
INTSM2.EXE
INTSM3.EXE

4.-Disco de documentos y demostración (Doc & Demo)


--------------------------------------------------
EXTERN.ARJ -Demostración de externs para ordenadores de 8 bits
EXTERN.DOC
EXTERN.SCE
JMSINT.Z80
DSRCPC.Z80
DSRMSX.Z80
RCCPC.Z80
RCMSX.Z80
RCSPE.Z80
SONIDOS.EMD

GFX.ARJ -Demostración del comando GFX (manejo de gráficos y paletas en


16 bits).
GFX.DOC
GFX.SCE
GFXREAD.ME

TEMPLOS1.ARJ -Todo lo necesario para compilar y ejecutar la primera parte de


"Los Templos Sagrados"
T1.SCE -Fuente principal
TD.SCE -Otros fuentes
TP.SCE
TV.SCE
T1B.TXT -Texto para ordenadores con mucha memoria
T1B.TOK -Y los tokens para su compresión
T1S.TXT -Texto para ordenadores con memoria pequeña
T1S.TOK -Y sus tokens
TS1.TXT -Mensajes del sistema
INTSDM.EXE -Intérprete
T1.DDB -Aventura ya compilada
T1.DAT -Gráficos (CGA/EGA/VGA)
T1.CHR -Juego de caractéres

5.-Manuales del DAAD


--------------------

6.-Programas de dominio público/shareware


-----------------------------------------
ARJ -Compresor/descompresor
PROCOMM -Programa de comunicaciones
QEDIT -Editor de textos

II.- ATARI ST (1 disco de 3 1/2 formateado a doble cara):


=========================================================

EDI1.PRG -Intérprete inglés para una parte. Baja y media resolución.


EDI1L.PRG -Intérprete inglés para una parte. Sólo baja resolución.
EDI2.PRG -Intérprete inglés para dos partes. Baja y media resolución.
EDI2L.PRG -Intérprete inglés para dos partes. Sólo baja resolución.
EDI3.PRG -Intérprete inglés para tres partes. Baja y media resolución.
EDI3L.PRG -Intérprete inglés para tres partes. Sólo baja resolución.
SDI1.PRG -Intérprete español para una parte. Baja y media resolución.
SDI1L.PRG -Intérprete español para una parte. Sólo baja resolución.
SDI2.PRG -Intérprete español para dos partes. Baja y media resolución.
SDI2L.PRG -Intérprete español para dos partes. Sólo baja resolución.
SDI3.PRG -Intérprete español para tres partes. Baja y media resolución.
SDI3L.PRG -Intérprete español para tres partes. Sólo baja resolución.
DMG.PRG -Creador de bases de datos gáficas para ST, Amiga y PC (CGA,EGA,
VGA). También para incluir sonidos digitalizados (ST y Amiga)
DMG.RSG -Su fichero de recursos.
DSTA.PRG -Covierte pantallas de ST a Amiga
DSTA.RSC -Su fichero de recursos.
PART1.CH0 -Un juego de caractéres para baja resolución
PART1.CHR -Un juego de caractéres para media resolución
INTRAM.ACC -Un disco-ram de dominio público
INTRAM.RSC -Su fichero de recursos

DEMO <DIR>
STT1.DAT -La base de datos gráfica de la primera parte de Los Templos
Sagrados para poder estudiarla con el DMG y poder hacer las
versiones de Atari ST y Amiga si se desea.

III.- AMIGA (1 disco de 3 1/2):


===============================

OTROS <DIR>
DAAD <DIR>
EDI1 -Intérprete inglés para una parte
EDI2 -Intérprete inglés para dos partes
EDI3 -Intérprete inglés para tres partes
SDI1 -Intérprete español para una parte
SDI2 -Intérprete español para dos partes
SDI3 -Intérprete español para tres partes
PART1.CHR -Set de caracteres
SDI2.INFO -Un icono que, renombrándolo, se puede usar
con cualquier intérprete

UTILIDADES <DIR>
DOS-TO-DOS -Permite leer y escribir discos de PC y Atari
VT100 -Programa de comunicaciones

Este disco contiene, además, todos los directorios y ficheros necesarios para
hacer que la aventura se autoejecute. Para ello basta con hacer una copia del
disco, eliminar el directorio OTROS y, evidentemente, incluir la aventura.

IV.- Spectrum (1 disco de 3 1/2 para Disciple y otro de 3'' para +3)
====================================================================

1.-Disciple:
------------
DRS -Cargador BASIC para una aventura
DS48IS -Intérprete
DG -Editor de gráficos: cargador BASIC
DS48GE -Editor de gráficos: programa en C.M.
BLANK + -Una base de datos gráfica vacía necesaria para el editor
XM -Programa de comunicaciones con PC: cargador BASIC
SXM -Programa de comunicaciones con PC: programa en C.M.

2.-Spectrum +3:
---------------
DRS -Cargador BASIC para una aventura
DS48IS.P3F -Intérprete
DG -Editor de gráficos: cargador BASIC
DS48GE.P3F -Editor de gráficos: programa en C.M.
BLANK.SDG -Una base de datos gráfica vacía necesaria para el editor
V.- CPC/PCW (1 disco de 3''):
=============================

CPC (CMP):
----------
P11CPM3.EMS -Versión de CPM3 preparada para usar el protocolo de
comunicación Modem7
DCPCIS.Z80 -Intérprete
MCRF.COM -Construye u programa ejecurable desde AmsDOS a partir de los
ficheros de una aventura
UKM7AMS.COM -Programa de comunicaciones

CPC (AmsDOS)
------------
DG.BIN -Editor de gráficos
BLANK.BIN -Base de datos gráfica vacía para DG

NOTA: El mismo disco de 3'' contiene por una cara los ficheros para +3 y por la
otra los de CPC y PCW.

VI.- Commodore 64 (2 discos de 5 1/4):


======================================

1.-DAAD:
--------
LS1 -Cargador para la primera parte de una
aventura LS2 -Idem para la segunda parte
SDI -Intérprete
DR -Programa para recibir based de datos desde
PC DRC -Y su C.M.
DG -Editor de gráficos.
DGC -Su C.M.
aBLANK -Base de datos gráfica vacía para
DG R -Programa para renombrar ficheros
S -Programa para borrar ficheros

2.-FAST HACK'EM:
----------------
Programa para formatear disco y copiar discos y ficheros.
DAAD
Adventure Writer
Version 2 - Release 2

A multi-machine adventure writing system.

Revised in September 2018

Project lead, coding, English language recovery and testing,


debugging, bundled tools, documentation:
Tim Gilberts, Stefan Vogt

Syntax highlighter:
Chris Ainsley

Spanish language testing, worked example (modern adaption),


countless contributions:
Pedro Fernández

A special thanks goes to Andrés Samudio who kindly contributed DAAD to the
public domain, allowing us to build upon this wonderful heritage.

http://8-bit.info/infinite-imaginations-aventuras-ad/

1
Preambulo
Crecer en Europa en los 80 con un interés en los juegos de aventura, ya sea que
solo quisieras jugar o escribir, significaba usar directa o indirectamente los
sistemas de aventura de Gilsoft. Con "The Quill" y su sucesor "PAWs (escritor
profesional de aventuras)", Gilsoft publicó aplicaciones innovadoras que
permitieron crear aventuras de código de máquina de una manera simple e
innovadora. Para la mayoría de nosotros, solo hemos experimentado los juegos
que hemos experimentado, pero algunos de nosotros aprovechamos las nuevas
posibilidades y escribimos novelas interactivas. Un defensor temprano muy
conocido de los sistemas fue, por ejemplo, Fergus McNeill (Bored of the Rings,
The Colour of Magic, The Big Sleaze).

Si bien PAWs fue el último sistema abierto al público, no fue el último sistema que
involucró a Tim Gilberts, el fundador de Gilsoft. Después de que la etiqueta de
Gilsoft se desvaneció a finales de la década de 1980, fundó Infinite Imaginations
para asesorar y apoyar a otras empresas con herramientas y soluciones
personalizadas. Durante este tiempo, se creó SWAN (Sistema sin nombre) para
Delta 4 de Fergus McNeill y fue el primer sistema disponible solo para una sola
compañía.

Luego vino DAAD. Es el sistema final basado en el código que se puede seguir
hasta Quill. Al mismo tiempo, es el sistema más avanzado de esta cadena y
admite un analizador que está a la par de los títulos de Infocom. DAAD fue
desarrollado como una solución interna para la legendaria aventura española
Forge Aventuras AD. Después de que Aventuras AD tuvo que cerrar en bancarrota
en 1992, el sistema se consideró perdido durante muchos años. En 2014, el Sr.
Samudio, el fundador de Aventuras AD, descubrió el sistema en su ático. En lugar
de mantener el DAAD bajo llave, lo puso a disposición de la escena de aventura
española. Su generosa contribución de dominio público es la base sobre la cual se
basa este nuevo lanzamiento de DAAD.

Cuando el DAAD volvió a estar disponible después de décadas, resultó que el tiempo no
era bueno para el sistema. Teóricamente, las aventuras fueron apoyadas tanto en español
como en inglés. Prácticamente fue para que los intérpretes de inglés fueran borrados en
casi todos los medios. Dado que Aventuras AD no los usaba, se eliminaron con el tiempo.
Lo mismo se aplica a las plantillas de juegos en inglés. Parecía que el apoyo del idioma
inglés había desaparecido en las perpetuas mareas del tiempo. Además, el disco C64
estaba dañado. Algunas partes de él podrían ser restauradas, pero el analizador español
ya no era la última versión, sino una copia del último juego de Aventuras AD, Chichén Itzá.
Uno podría arreglar con el sistema, pero era un hecho que partes importantes de DAAD
probablemente se perderían para siempre.

Como parte de su continua colaboración en la preservación de la herencia de Gilsoft, Tim


Gilberts, creador de DAAD Adventure Writer, y Stefan Vogt decidieron recuperar
completamente el sistema y finalmente ponerlo a disposición del público en idioma
inglés. En lugar de restaurar solo los archivos que faltaban, decidieron también hacer
adiciones útiles al sistema, teniendo en cuenta el año 2018. El fruto de esta colaboración
es lo que ha descargado ahora.
¿Qué es DAAD y qué puede ser para ti?
DAAD es un escritor de aventuras multi-máquina y multi-gráficos, que le permite
enfocarse en una amplia gama de sistemas de 8 y 16 bits, incluidos C64, ZX
Spectrum, Amstrad CPC, MSX, PCW, Atari ST, Amiga, IBM PC (DOS). Puede crear
tantos juegos de aventura con el sistema como desee, incluso comerciales. Antes
de comenzar a utilizar DAAD, le sugerimos que lea detenidamente la sección
legal al final de este documento.

DAAD es muy sofisticado, pero no espere que sea el PAW 2 que nunca estuvo en
la tienda. DAAD se creó teniendo en mente al desarrollador profesional de
aventuras. En lugar de ser una aplicación única, es un conjunto de más de 30
herramientas que necesitan ser operadas desde el shell de comandos de DOS.
DAAD requiere habilidades de programación y conocimiento en el manejo de
archivos de código fuente y compiladores. Las fuentes de sus aventuras (archivos
.SCE) se compilan en bases de datos de juegos que deben dominarse y
transferirse a los sistemas de destino donde se ejecutan en intérpretes
específicos de la plataforma. Las herramientas necesarias para lograr esto son
proporcionadas o referenciadas. Hay una sección en la documentación de 1991
llamada "un ejemplo trabajado" que explica los pasos necesarios. Además,
tenemos una sección de ejemplos trabajados en esta documentación de 2018,
con el propósito de complementar el problema original con conocimiento
moderno y formas más sencillas de dominar su juego de aventuras.

Es muy recomendable que tenga experiencia con los sistemas de aventura de


Gilsoft, especialmente con la lógica CondActs de Quill y PAW, porque un
superconjunto de esto es la base de DAAD. Perfecto sería el conocimiento sobre la
versión CP/M de las PAW. Es el sistema Gilsoft el más cercano al DAAD. Tenga en
cuenta que los archivos .SCE de CP/M PAW son similares a los archivos .SCE que
DAAD usa, pero no son lo mismo. Con algunos esfuerzos, podría usar un archivo
así para llevar su aventura al DAAD. Las secciones que difieren más son los
objetos, el proceso y las tablas de respuestas. El DAAD tampoco tiene ninguna
función que disminuya automáticamente los enteros (indicadores). Si utilizó la
lógica de decremento automático en el pasado, debe implementarla usted mismo
en DAAD.

Requisitos del sistema y recomendaciones


Queríamos asegurarnos de que pueda trabajar con DAAD en un entorno (la mayoría)
moderno. Estos son los requisitos obligatorios del sistema para comenzar a desarrollar
sus propias aventuras:

• un sistema operativo moderno (Linux, MacOS, Windows)


• Visual Studio Code
• DOSBox

3
Tenga en cuenta que los archivos DAAD .SCE deben procesarse en DOS. Para
garantizar la compatibilidad, le sugerimos que los abra con la codificación de la
página de códigos 437. Puede anular la configuración predeterminada en la
configuración del usuario para abrir siempre archivos .SCE con codificación
CP437.
Después de montar los contenidos del directorio DAAD en DOSBox, está
totalmente configurado y listo para crear sus propias novelas interactivas..
Changes and additions since DAAD v2 Release 1 (1991)

in DAAD\SCE\

• BLANK.SCE → recreated English language database template


• BLANK.DDB → compiled English language database template
• TXTBLANK.SCE → English language database template for text-only games
• SPANISH.SCE → Spanish language database template
• SPANISH.DDB → compiled Spanish language database template
• HIB1.SCE → the complete source of Pond’s Hibernated 1 (read file!)

in DAAD\

• MOVEDB → moves PARTx.DDB database files to TEST directory


• RUN → quickly runs a game via DOS interpreter(s) for testing

in DAAD\TAPMAST\

• TAPCAT → creates ZX Spectrum tapes (.TAP files) for distribution


• 2CDT → creates CPC tapes (.CDT files) for distribution

in DAAD\TOOLS\

• ACHTUNG → adds a Commodore 64 header to a database


• SC → allows editing C64 disk image files (D64)

on the DAAD C64 disk in LIB\C64\

• LE1 → loader for an ENGLISH game PART1


• LE2 → loader for an ENGLISH game PART2
• [c]NEWCHRSET → alt. charset taken from Chichén Itzá by Aventuras AD
• EDI → new version of the ENGLISH C64 interpreter
• SDI → new version of the SPANISH C64 interpreter

on the DAAD CPC disk in LIB\CPC\

• DCPCIE.Z80 → recovered ENGLISH CPC interpreter

on the DAAD compile disk in LIB\CPC\

• GFX.BIN → minimal CPC graphics database for text-only games

El disco de compilación DAAD es una imagen que le permite crear rápidamente


binarios finales para su distribución. También agregamos una imagen CP/M Plus,
ya que la herramienta MCRF que combina los archivos ejecutables, está basada en
CP/M. Detalles en la nueva sección de trabajo de ejemplo.

5
in LIB\AMIGA\

• PART1.DAT → minimal Amiga graphics database for text-only games


• S-PIC.ADF → Amiga tool to create startup screens from IFF images

on the DAAD Spectrum disk in LIB\SPECTRUM\

• PART1.SDG → minimal Speccy graphics database for text-only games


• BLANK.DDB → compiled Spectrum database template for testing
• DS48IE.P3F → recovered ENGLISH Spectrum interpreter
• TMASTER.BAS → loader script for Aventuras AD tape master tool
• TBOOT2.BIN → Aventuras AD tape master tool (recovered, untested)
• DRE.BAS → loader script for ENGLISH +3 game
• MERGE → basic script, merges all files into single binary ENGLISH
• MERGES → basic script, merges all files into single binary SPANISH
• TAPLOAD → template for a full-featured tape loader with SCREEN$

in LIB\ST\

• PART1.DAT → minimal Atari ST graphics database for text-only games

Directory structure DAAD v2 R2 (2018)


Cambiamos significativamente la estructura de directorios y los archivos empaquetados
en comparación con la versión incompleta española. La razón detrás de esto fue la
intención de proporcionar una distribución lista para usar. También queríamos separar
los archivos del sistema real del patrimonio histórico importante de Aventuras AD. Por
eso hay dos descargas de DAAD disponibles en el sitio web oficial en: http://8-
bit.info/infinite-imaginations-aventuras-ad/

→ The DAAD Adventure Writer


Contains all the tools to develop adventure games.

→ DAAD Aventuras AD preservation files


Contains historical files from Aventuras AD that were rediscovered together with
DAAD, mostly Spanish game master disks and sources.

DAAD\ → Directorio raíz DAAD donde se encuentran los archivos


del compilador (DC). Se recomienda poner este directorio
en la raíz de una unidad DOS, D:\ por ejemplo

DAAD\TOOLS\ → contiene todas las utilidades del sistema en un solo lugar,


debe agregar esta carpeta a su variable PATH en DOSBox.

DAAD\TEST\ → quick DOS test environment for your adventures

DAAD\TAPEMAST\ → directory for mastering tape files (Spectrum, CPC)


DAAD\SCE\ → contains all the database template files and examples

DAAD\OBJ\ → as referenced in the 1991 documentation, no changes

DAAD\INTERP\ → contains all the DOS interpreter files, see 1991 docs

LIB\ → intérpretes y herramientas para implementar sus juegos


en todas las plataformas soportadas

DOCS\ → the documentation

Edición de imágenes: gráficos de píxeles y pantallas de carga

La documentación de DAAD 1991 a menudo se refiere al conocido programa ST


DEGAS para editar gráficos de píxeles y pantallas de carga. Si bien está bien
seguir usando DEGAS, le sugerimos que eche un vistazo a algunas de las
soluciones modernas y más convenientes.
Aquí hay dos programas que recomendamos encarecidamente, Grafx2 como
reemplazo para editar archivos PI1 (el formato ST común), Multipaint para editar
pantallas de carga para Spectrum, C64, CPC y MSX.

Un trabajo de ejemplo en tiempos modernos

ATARI ST
Este es uno es bastante fácil. Haz exactamente lo que dice la documentación de
1991. No hagas la transferencia de cable sugerida. Use un emulador de elección
para obtener sus archivos de juego en una imagen de disco vacía. Hatari es una
buena solución, ya que permite el montaje de directorios como discos duros TOS.
No olvide copiar los archivos del intérprete de la imagen del disco DAAD ST.

AMIGA
Compilar como se describe en la documentación de 1991. No use ninguno de los
programas de transferencia a menos que realmente quiera hacerlo de la manera
antigua. Recomendamos encarecidamente obtener ADF Opus, un gran explorador
y editor de imágenes de disco de Amiga. Es una aplicación de Windows pero
funciona bien en Linux con Wine. Haga una copia de la imagen de disco MinOS
Amiga (en LIB\AMIGA\). Reemplace PART1.DDB en la imagen con su propia base
de datos de juegos. Haga lo mismo con el archivo PART1.DAT si su aventura
no es solo de texto. Si no quiere agregar una pantalla de carga, básicamente ya
está hecho. Si desea agregarla: en lugar de crear una pantalla de carga como se
describe en la documentación, cree una imagen IFF con una herramienta moderna
como GIMP. Utilice la utilidad S-Pic proporcionada (consulte la documentación
incluida) para crear un ejecutable comprimido de su imagen. Agréguelo al disco de
su juego y agregue el nombre ejecutable de la imagen en “s/startup-sequence”.
Debe ingresarse antes de la línea de carga del intérprete. El intérprete de inglés

7
(EDI) se a renombrado a INTERP en la plantilla de SO mínima. Si está creando un
juego en español, debe eliminar el intérprete que ya está en el disco y copiar SDI
desde el disco DAAD Amiga al disco de su juego. Cambie el nombre a INTERP y
listo. La copia y el cambio de nombre se pueden hacer con ADF Opus.

PC (DOS)
Sin cambios a la documentación de 1991. Solo queremos agregar que
definitivamente debe seguir con el método descrito como "usar nuevos gráficos
multimáquinas del sistema". Después de 28 años, es seguro decir que este
método funcionará mejor para usted.

CPC
Puede estar cerca de la documentación de 1991. Recomendamos usar WinAPE para
transferir sus archivos de juego a un disco de Amstrad. WinAPE tiene un modo de "edición
de disco", permitiendo convenientemente alterar el contenido mediante arrastrar y soltar.
WinAPE es una aplicación de Windows pero se ejecutará con Wine en Linux. En Linux,
recomendamos Arnold para todas las tareas que no sean mover bits y bytes. En LIB / CPC
hay un disco mínimo configurado con los archivos esenciales listos para compilar su juego
(DAAD_compile.DSK). Siempre debe hacer una copia del disco de compilación primero en
lugar de usar la imagen original. Esto tiene la ventaja de que puede eliminar todos los
archivos, excepto el binario del juego, una vez completado el proceso de compilación. El
disco contiene un archivo GFX.BIN que es una base de datos de gráficos vacía que puede
usar para aventuras solo de texto. Reemplácelo con su propio archivo si creó gráficos.
DAAD siempre quiere archivos gráficos, no funcionará sin ellos. La compilación es
manejada por MCRF que es un programa CP / M. Por lo tanto, debe iniciar en CP/M para la
compilación en sí. La documentación de 1991 dice que puede usar CP/M 2.2 y CP / M 3
(Plus), lo cual está desafortunadamente desafortunado. Solo CP/M 3 (Plus) funcionará.
Encontrarás una imagen en LIB\CPC. Aquí está la sinopsis:

MCRF oufile{.BIN} interp{.Z80} text{.DDB|.BIN} graphics{.BIN}

Tenga en cuenta que debe especificar el tipo de base de datos de texto. DDB es
del compilador directo (que se recomienda) y se supone que BIN tiene un
encabezado de disco CPC.

Después de crear un CPC nativo, puede usar la aplicación de consola de Windows


2CDT.EXE (en DAAD\TAPMAST) para crear también un archivo de cinta. Funcionará
con Wine CMD bajo Linux. Sin embargo, cuidado, ya que 2CDT.EXE no es un
ejecutable de DOS. Los documentos para 2CDT están en el directorio. Para tomar
su archivo de juego de la imagen de disco de Amstrad puede usar WinAPE, en
Linux usamos una utilidad de terminal llamada iDSK.
ZX Spectrum
Este flujo de trabajo es un poco diferente de lo que era en el pasado, por lo que
reemplazamos completamente la documentación de 1991 con esto.

Compila una versión de tu fuente sin información de depuración comprimida


llamada xxx.DDB (etc.) usando la opción -m1. Use ASH para agregar un
encabezado Spectrum al archivo .DDB, renómbrelo PARTx.DDB. Haga una copia de
su DAAD_Spectrum.dsk. Usa WinAPE para transferir los archivos del juego a él. No
se confunda, estamos usando un emulador Amstrad para mover archivos a una
imagen de disco de Spectrum +3. Ambas máquinas usan el mismo sistema de
disco para que funcione. Cierre WinAPE después de transferir los archivos. Ahora
abre la imagen en tu emulador Spectrum. Recomendamos ZEsarux o Fusible.
Asegúrate de haber seleccionado una máquina +3 para la emulación.

ZX Spectrum: creating a Spectrum +3 release


Open +3 básico. Utilice una de las plantillas de cargador básico de +3 para crear
un cargador para su juego con el comando MERGE "DRE". Tenga en cuenta que es
"DRS" para las aventuras españolas. Borre la línea donde carga una pantalla en
caso de que no proporcione una. Cambie el nombre de la pantalla de su cargador
si difiere. Ahora guarde el cargador en el disco con el comando SAVE "MYGAME"
LINE 10. Reemplace MYGAME con el nombre real que desea darle a su cargador.
Ahora borre todo del disco al que no se hizo referencia en su archivo de cargador.
La eliminación también se puede hacer desde WinAPE. Eso es todo.

ZX Spectrum: creating a tape release (.TAP file)


Probablemente desee distribuir un archivo TAP, ya que se puede usar fácilmente para crear
cintas reales y también se puede usar en interfaces comunes como divMMC. Los pasos para
lograr esto son algo diferentes de un lanzamiento +3. En la imagen del disco, encontrará un
archivo llamado MERGE (y MERGES) para juegos en español. Ejecútelo mediante LOAD
"MERGE". Cargará el intérprete, PART1.DDB y PART1.SDG en la memoria. La solicitud
básica volverá a aparecer luego de que eso ocurra. Ahora use el siguiente comando para
guardar el contenido de la memoria en el disco como un solo ejecutable:

SAVE "MYFILE" CODE 24576,40960

Reemplace MYFILE con el nombre de su juego, por supuesto. También necesita un cargador de cinta.
Hay un archivo TAPLOAD en el disco, que se puede utilizar como una plantilla con todas las
funciones. Usa el comando MERGE de nuevo para echarle un vistazo y tal vez borrar la línea donde
carga una pantalla en caso de que no proporciones una. Guárdelo en el disco a través de SAVE
"TLOADER" LINE 10 o simplemente sobreescribiéndolo. Si elige sobreescribirlo, el sistema creará
un archivo .BAK de todos modos. Ahora necesita obtener su cargador y el juego binario de la imagen
de disco +3 en la estructura DAAD en DOSBox. Podría usar WinAPE nuevamente para este propósito.
IDSK también hará el trabajo. Coloque los dos archivos en el directorio de masterización de cintas en
DAAD\TAPMAST. Finalmente use TAPCAT para crear el archivo TAP final. TAPCAT es una utilidad de
DOS, no necesita cambiar a un shell de comandos de Windows para esa. También se puede
encontrar una breve documentación que contiene un ejemplo de trabajo para la constelación del
script DAAD TLOADER junto con un binario en el directorio de masterización de cintas. ¡Felicidades,
cinta lista para distribución!

10
CBM 64
El Commodore 64 fue nuestro hijo problemático debido a discos dañados,
intérpretes obsoletos, encabezados perdidos. Vamos a reemplazar el howto de 1991
por completo con este.

Compila una versión de tu fuente sin información de depuración comprimida


llamada PART1.DDB (etc.) usando la opción -m2c. Utilice nuestra nueva y brillante
herramienta ACHTUNG (solo Tim le puede decir qué significa el acrónimo y sí, es
uno) para agregar un encabezado C64 a su base de datos. El formato de salida de
ACHTUNG es * .DDC. Cambie el nombre del archivo a PART1 sin ningún sufijo. Haga
una copia del DAAD_C64.D64 y coloque el archivo en él. Puede usar SC de la
colección de herramientas para este fin, también puede usar una herramienta
alternativa para manejar las imágenes de disco de Commodore 64. Una buena que
es multiplataforma es DROID64, que funciona bien en Linux. Después de que haya
puesto el archivo en el disco, abra su emulador de elección (recomendamos VICE).
Lo primero que debe hacer es cambiar el nombre de la base de datos del archivo.
El C64 tiene una lógica diferente a la hora de nombrar. Su base de datos,
actualmente PART1 necesita ser renombrada a [B] PART1, donde [B] es una B
invertida en realidad y PART se escribe con la tecla shift presionada para que la
salida sea símbolos y no letras. Así es como se ve todo el comando de Commodore
Basic:

Si tienes eso, lo tienes bien. Tenga en cuenta que hay un archivo similar en la
imagen del disco, que es la base de datos de gráficos. Lo reconoce porque aparece
con una A invertida en el directorio. Debe dejar eso en la imagen, incluso si crea una
aventura de solo texto ya que el archivo contiene el juego de caracteres para su
juego. Si desea utilizar un juego de caracteres diferente, hay uno robado de un juego
de Aventuras AD en el disco. Ingrese el editor DG, seleccione la opción cargar juego
de caracteres, proporcione el nombre NEWCHRSET cuando se le pida un nombre.
Guarde la base de datos de gráficos como PART1 en el disco nuevamente. Agregue
gráficos por supuesto si desea que su aventura incluya gráficos.
DAAD también tiene instalaciones para que importes tus gráficos desde la base de
datos de gráficos de Spectrum. Hay dos intérpretes en el disco, EDI (inglés) y SDI
(español). Agregamos cargadores para juegos en inglés y español. Por lo tanto,
puede renombrar convenientemente un cargador. LE = Loader English y LS =
Loader Spanish. LE1, por ejemplo, cargará un juego inglés PART1. LS2 cargará un
juego español PART2. Finalmente borre del disco lo que ya no necesita. Esto
finalmente trae un analizador sofisticado a la par con PAWs al Commodore 64.
¡Disfruta!
11
Problemas conocidos
Los juegos Spectrum +3 solo pueden guardarse en cinta
Guardar en el disco nunca se implementó con los intérpretes del DAAD Spectrum.
Entonces, el juego funciona, pero le pedirá una cinta cuando escriba el comando
GUARDAR. Tim es consciente del problema y dijo que podríamos respaldar la
función desde Gilsoft PAWs (versión +3), que de hecho puede guardar en cinta y
disco. Como los PAW y el intérprete DAAD no están demasiado lejos el uno del
otro, confiamos en que puede esperar una actualización en el futuro cercano. Tim
definitivamente tendrá una mirada. Manténganse al tanto.

Los CPC franceses de AZERTY no son compatibles


Lamentablemente, los juegos de CPC no funcionarán en los CPC franceses con
teclado AZERTY. La tecla "M" no se puede presionar. Ni siquiera éramos conscientes
de que esas máquinas existen y en realidad no tenemos idea de lo que Amstrad
pensó que estaban haciendo. Resulta que estas unidades sufrieron mucho por
incompatibilidad en el pasado. Muchos juegos tuvieron que ser alterados para el
mercado francés. Los mapas de teclas están codificados en el intérprete, por lo que
este problema es difícil de resolver. El código permanece intacto desde 1991.
Queremos ser honestos. Por el momento, no confiamos en que los juegos se
ejecuten en unidades AZERTY. Estas máquinas funcionan bien: CPC de Reino Unido,
España, Italia, Alemania (Schneider), básicamente todas excepto unidades
francesas con teclados AZERTY. Las unidades francesas más antiguas tienen
teclados QWERTY y funcionarán.

Credits
Parte del software que ahora incluimos con el DAAD no está hecho por nosotros.
Queremos dar crédito a los autores originales y aconsejarle que los apoye de
cualquier manera que pueda. SC por ejemplo, a pesar de que es regalo, puede ser
registrado.

TAPCAT → Written by John Elliot as part of TAPTOOLS. You may find


other programs in the TAPTOOLS bundle interesting.

SC / StarCommander → Written by Joe Forster. Please be so kind and register the


program if you continue using it. We are sure Joe would
appreciate that a lot.

2CDT → Written by Kevin Thacker.

Legal notes
Los archivos binarios del DAAD fueron cedidos amablemente al dominio público por
Andrés Samudio, el fundador de Aventuras AD. Fue su empresa la que tuvo el derecho
único de usar este software. Las fuentes de las herramientas de DAAD y el compilador
siguen siendo copyright Tim Gilberts e Infinite Imaginations y no se distribuyen.

El código fuente de Hibernated 1 - This Place is Death es copyright Stefan Vogt y


Pond Software. Lea los detalles de la licencia en el encabezado del archivo SCE
para obtener más información. Ni el nombre del autor ni los nombres de otros
colaboradores pueden utilizarse para respaldar o promocionar productos
derivados de este software sin un permiso previo específico por escrito.

Este software se proporciona "tal cual" y se renuncia a todas las garantías


explícitas o implícitas, incluidas, entre otras, las garantías implícitas de
comerciabilidad e idoneidad para un fin determinado. En ningún caso el autor o
los contribuyentes serán responsables por daños directos, indirectos, incidentales,
especiales, ejemplares o consecuentes (que incluyen, entre otros, la adquisición
de bienes o servicios sustitutos de uso, datos o beneficios o interrupción del
negocio). ) Sin embargo, causó y en cualquier teoría de responsabilidad, ya sea en
contrato, responsabilidad objetiva o agravio (incluyendo negligencia o de otro
tipo) que surja de cualquier manera del uso de este software, incluso si se informa
de la posibilidad de tal daño.

Usted es responsable de cualquier problema legal que surja de su uso de este software.

Ultimas palabras
Nos tomó muchas horas, té y polvo de hadas crear este nuevo lanzamiento del
DAAD, todo por el bien de la preservación. DAAD es la herramienta final y más
sofisticada que surge del código que una vez comenzó como "The Quill" en un
teclado de goma ZX Spectrum. Ahora completa nuevamente por primera vez en
casi 30 años, nunca estuvo disponible para el público y nunca para una audiencia
en inglés. DAAD es un hito importante en la historia de la aventura de texto, un
patrimonio que se refleja en las maravillosas "aventuras conversacionales" de
Aventuras AD. Pero en lugar de un "gracias", queremos que use el sistema.
Demasiadas aventuras se escribieron con ella y el tiempo no podría ser mejor para
cambiar eso. ¡Imagina mundos!

Tim and Stefan,


September 2018

13

También podría gustarte