Conversion from ISO-8859-15 to UTF-8 for *.c and *.h files

This commit is contained in:
Víctor Román Archidona 2014-07-24 10:00:07 +02:00
parent 3c828e13cf
commit b77270c2a4
65 changed files with 1199 additions and 1199 deletions

View file

@ -4,7 +4,7 @@
/* /*
* POR HACER: eDIV debe controlar todas las peticiones de memoria dinámica * POR HACER: eDIV debe controlar todas las peticiones de memoria dinámica
* es decir, si hacemos un free() donde no debemos, debe producirse un * es decir, si hacemos un free() donde no debemos, debe producirse un
* fp->Runtime_Error * fp->Runtime_Error
*/ */

View file

@ -20,8 +20,8 @@
/* /*
*EDIVSTD.DLL *EDIVSTD.DLL
* Esta librería contiene los datos más básicos que puede requerir un programa * Esta librería contiene los datos más básicos que puede requerir un programa
* DIV, tal como las opciones de compilación, estructura reserved, etc. * DIV, tal como las opciones de compilación, estructura reserved, etc.
*/ */
#ifdef _WIN32 #ifdef _WIN32
@ -30,7 +30,7 @@
unsigned int tiempo; unsigned int tiempo;
unsigned int ultimo_tiempo; unsigned int ultimo_tiempo;
#else #else
#error ¡adapta las rutinas de timer a Linux! (edivstd no debe usar SDL) #error ¡adapta las rutinas de timer a Linux! (edivstd no debe usar SDL)
#endif #endif
#include <limits.h> #include <limits.h>
#include <assert.h> #include <assert.h>
@ -65,7 +65,7 @@ int ExportaFuncs(EXPORTAFUNCS_PARAMS)
/* CONSTANTES PREDEFINIDAS */ /* CONSTANTES PREDEFINIDAS */
/* Opciones de compilación */ /* Opciones de compilación */
CONST("_max_process",0); CONST("_max_process",0);
CONST("_extended_conditions",1); CONST("_extended_conditions",1);
CONST("_simple_conditions",2); CONST("_simple_conditions",2);
@ -99,7 +99,7 @@ int ExportaFuncs(EXPORTAFUNCS_PARAMS)
CONST("max_int",INT_MAX); CONST("max_int",INT_MAX);
CONST("min_int",INT_MIN); CONST("min_int",INT_MIN);
/* Señales entre procesos */ /* Señales entre procesos */
CONST("s_kill",0); CONST("s_kill",0);
CONST("s_wakeup",1); CONST("s_wakeup",1);
CONST("s_sleep",2); CONST("s_sleep",2);
@ -115,18 +115,18 @@ int ExportaFuncs(EXPORTAFUNCS_PARAMS)
/* Contadores de tiempo */ /* Contadores de tiempo */
GLOBAL_ARRAY("timer",9); GLOBAL_ARRAY("timer",9);
/* Tiempo máximo de ejecución para un proceso */ /* Tiempo máximo de ejecución para un proceso */
GLOBAL("max_process_time",500); GLOBAL("max_process_time",500);
/* Argumentos de línea de comando */ /* Argumentos de línea de comando */
GLOBAL("argc",0); GLOBAL("argc",0);
GLOBAL_ARRAY("argv",9); GLOBAL_ARRAY("argv",9);
/* DATOS LOCALES PREDEFINIDOS */ /* DATOS LOCALES PREDEFINIDOS */
/* Estructura reserved - POR HACER: ¿preservar compatibilidad con DIV? -> si /* Estructura reserved - POR HACER: ¿preservar compatibilidad con DIV? -> si
* pero ¿Qué hacer con distance_1 y distance_2 (sinónimos de m8_object y old_ctype, * pero ¿Qué hacer con distance_1 y distance_2 (sinónimos de m8_object y old_ctype,
* respectivamente)? ya nos toparemos con ellas cuando hagamos el modo7. * respectivamente)? ya nos toparemos con ellas cuando hagamos el modo7.
*/ */
@ -153,7 +153,7 @@ int ExportaFuncs(EXPORTAFUNCS_PARAMS)
_INT("caller_id",0); _INT("caller_id",0);
END_STRUCT; END_STRUCT;
/* Jerarquía de procesos */ /* Jerarquía de procesos */
LOCAL("father",0); LOCAL("father",0);
LOCAL("son",0); LOCAL("son",0);
LOCAL("smallbro",0); LOCAL("smallbro",0);
@ -190,7 +190,7 @@ int eDIV_Exit(FUNCTION_PARAMS)
char* mensaje=getstrparm(); char* mensaje=getstrparm();
/* /*
* FIXME: ¿Qué hacemos con el mensaje? ¿Lo mostramos en un msgbox si no es ""? * FIXME: ¿Qué hacemos con el mensaje? ¿Lo mostramos en un msgbox si no es ""?
*/ */
if(*mensaje) { if(*mensaje) {
#ifdef _WIN32 #ifdef _WIN32
@ -200,7 +200,7 @@ int eDIV_Exit(FUNCTION_PARAMS)
#endif #endif
} }
#ifdef _DEBUG #ifdef _DEBUG
printf("dbg:\texit(): código de retorno: %d\n",codigo); printf("dbg:\texit(): código de retorno: %d\n",codigo);
#endif #endif
fp->Stub_Quit(codigo); fp->Stub_Quit(codigo);

View file

@ -50,7 +50,7 @@ int eDiv_Fopen(FUNCTION_PARAMS)
for (i=0;i<strlen(modo);i++) for (i=0;i<strlen(modo);i++)
if (modo[i]!='r' && modo[i]!='w' && modo[i]!='a' && modo[i]!='+') break; if (modo[i]!='r' && modo[i]!='w' && modo[i]!='a' && modo[i]!='+') break;
if (i<strlen(modo)) { if (i<strlen(modo)) {
fp->Runtime_Error(166); /* modo de acceso al archivo no válido */ fp->Runtime_Error(166); /* modo de acceso al archivo no válido */
return 0; return 0;
} }
strcat(modo,"b"); strcat(modo,"b");
@ -83,7 +83,7 @@ int eDiv_Fwrite(FUNCTION_PARAMS)
offset = getparm() ; offset = getparm() ;
if ( !existe[handle] ) { if ( !existe[handle] ) {
fp->Runtime_Error(170); /* handle no válido */ fp->Runtime_Error(170); /* handle no válido */
return 0; return 0;
} }
@ -119,7 +119,7 @@ int eDiv_Ftell(FUNCTION_PARAMS)
int handle=getparm(); int handle=getparm();
if ( !existe[handle] ) { if ( !existe[handle] ) {
fp->Runtime_Error(170); /* handle no válido */ fp->Runtime_Error(170); /* handle no válido */
return -1 ; /* En caso de error, DIV2 devuelve handle, pero no me parece muy correcto... */ return -1 ; /* En caso de error, DIV2 devuelve handle, pero no me parece muy correcto... */
} }
@ -134,7 +134,7 @@ int eDiv_Fseek(FUNCTION_PARAMS)
handle = getparm() ; handle = getparm() ;
if ( !existe[handle] ) { if ( !existe[handle] ) {
fp->Runtime_Error(170); /* handle no válido */ fp->Runtime_Error(170); /* handle no válido */
return -1 ; /* ocurre lo mismo que con ftell... */ return -1 ; /* ocurre lo mismo que con ftell... */
} }

View file

@ -10,7 +10,7 @@
#include "export.h" #include "export.h"
#include "graphics.h" #include "graphics.h"
/*! \brief Avanza 'a' unidades según el ángulo del proceso. /*! \brief Avanza 'a' unidades según el ángulo del proceso.
* @param a Distancia que se quiere avanzar * @param a Distancia que se quiere avanzar
* @return 1 * @return 1
* @see eDIV_XADVANCE() * @see eDIV_XADVANCE()
@ -28,8 +28,8 @@ int eDIV_ADVANCE(FUNCTION_PARAMS)
return 1 ; return 1 ;
} }
/*! \brief Avanza 'b' unidades según el ángulo 'a' /*! \brief Avanza 'b' unidades según el ángulo 'a'
* @param a Ángulo * @param a Ángulo
* @param b Distancia que se quiere avanzar * @param b Distancia que se quiere avanzar
* @return 1 * @return 1
* @see eDIV_ADVANCE() * @see eDIV_ADVANCE()

View file

@ -1,6 +1,6 @@
/* /*
** carga.c ** carga.c
** Incluye las funciones de carga y descarga de recursos gráficos ** Incluye las funciones de carga y descarga de recursos gráficos
** (bmp, fpg, map, pcx, pal, png...) ** (bmp, fpg, map, pcx, pal, png...)
*/ */

View file

@ -1,6 +1,6 @@
/* /*
** collision.c ** collision.c
** Incluye las rutinas de detección de colisiones entre sprites ** Incluye las rutinas de detección de colisiones entre sprites
*/ */
#include <SDL/SDL.h> #include <SDL/SDL.h>
@ -10,11 +10,11 @@
/* /*
** int IntersectionRR(int rc1left,int rc1top,int rc1right,int rc1bottom,int rc2left,int rc2top,int rc2right,int rc2bottom) ** int IntersectionRR(int rc1left,int rc1top,int rc1right,int rc1bottom,int rc2left,int rc2top,int rc2right,int rc2bottom)
** Comprueba si hay colisión entre dos regiones rectangulares. ** Comprueba si hay colisión entre dos regiones rectangulares.
** **
** Devuelve: ** Devuelve:
** 0 - No hay colisión ** 0 - No hay colisión
** 1 - Hay colisión ** 1 - Hay colisión
*/ */
int IntersectionRR(int rc1left,int rc1top,int rc1right,int rc1bottom,int rc2left,int rc2top,int rc2right,int rc2bottom) int IntersectionRR(int rc1left,int rc1top,int rc1right,int rc1bottom,int rc2left,int rc2top,int rc2right,int rc2bottom)
{ {
@ -30,14 +30,14 @@ int IntersectionRR(int rc1left,int rc1top,int rc1right,int rc1bottom,int rc2left
/* /*
** eDIV_COLLISION (id) ** eDIV_COLLISION (id)
** **
** Detecta si el proceso actual está colisionando con el del id indicado, o, si ** Detecta si el proceso actual está colisionando con el del id indicado, o, si
** se le indica un type, si colisiona con algún proceso de ese tipo ** se le indica un type, si colisiona con algún proceso de ese tipo
** **
** Devuelve: - el ID del proceso con el que se está colisionando (si se indica ** Devuelve: - el ID del proceso con el que se está colisionando (si se indica
** un type y se está colisionando a la vez con varios procesos de ** un type y se está colisionando a la vez con varios procesos de
** ese type, en sucesivas llamadas se irán devolviendo sus respec- ** ese type, en sucesivas llamadas se irán devolviendo sus respec-
** tivos IDs, hasta devolver 0 cuando ya no queden más). ** tivos IDs, hasta devolver 0 cuando ya no queden más).
** - 0 si no se colisiona con ningún proceso del ID o type indicado. ** - 0 si no se colisiona con ningún proceso del ID o type indicado.
*/ */
int eDIV_COLLISION(FUNCTION_PARAMS) int eDIV_COLLISION(FUNCTION_PARAMS)
{ {

View file

@ -1,8 +1,8 @@
/*! \file default_palette.h /*! \file default_palette.h
* \brief Contiene la definición de la paleta por defecto * \brief Contiene la definición de la paleta por defecto
* *
* Este fichero contiene la definición de #default_palette, que es un array * Este fichero contiene la definición de #default_palette, que es un array
* de bytes que contienen la información RGBA de los colores de la paleta que * de bytes que contienen la información RGBA de los colores de la paleta que
* se inicializa por defecto (ya que el modo por defecto es de 8 bits). * se inicializa por defecto (ya que el modo por defecto es de 8 bits).
*/ */

View file

@ -8,11 +8,11 @@
#include "graphics.h" #include "graphics.h"
/*! \brief Crea un nuevo draw /*! \brief Crea un nuevo draw
* \todo Permitir más tipos de figuras, y hacer que se dibujen en tiempo real, para que sean más rápidos y no consuman memoria * \todo Permitir más tipos de figuras, y hacer que se dibujen en tiempo real, para que sean más rápidos y no consuman memoria
* @param t Tipo de figura (1=línea, 2=rectángulo, 3=rectángulo relleno, 4=elipse, 5=elipse rellena) * @param t Tipo de figura (1=línea, 2=rectángulo, 3=rectángulo relleno, 4=elipse, 5=elipse rellena)
* @param c Color * @param c Color
* @param o Opacidad (0..15) * @param o Opacidad (0..15)
* @param r Región * @param r Región
* @param x0 Coordenada X inicial * @param x0 Coordenada X inicial
* @param y0 Coordenada Y inicial * @param y0 Coordenada Y inicial
* @param x1 Coordenada X final * @param x1 Coordenada X final

View file

@ -1,9 +1,9 @@
/*! \file graphics.c /*! \file graphics.c
* \brief DLL principal del motor gráfico 2D de eDIV * \brief DLL principal del motor gráfico 2D de eDIV
* *
* En esta DLL se encuentran las principales funciones relacionadas con el * En esta DLL se encuentran las principales funciones relacionadas con el
* manejo de gráficos. Tiene prioridad P_SIEMPRE ya que se supone que la * manejo de gráficos. Tiene prioridad P_SIEMPRE ya que se supone que la
* mayoría de los programas hechos con eDIV requerirán tratamiento de gráficos. * mayoría de los programas hechos con eDIV requerirán tratamiento de gráficos.
*/ */
#include <stdio.h> #include <stdio.h>
@ -25,12 +25,12 @@
#include "SDL_rotozoom.h" #include "SDL_rotozoom.h"
#include "default_palette.h" #include "default_palette.h"
/*! \brief Función de exportación de símbolos de la DLL /*! \brief Función de exportación de símbolos de la DLL
* @return TRUE si la DLL da su permiso para ser cargada, en caso contrario, FALSE * @return TRUE si la DLL da su permiso para ser cargada, en caso contrario, FALSE
*/ */
int ExportaFuncs(EXPORTAFUNCS_PARAMS) int ExportaFuncs(EXPORTAFUNCS_PARAMS)
{ {
/* Modos predefinidos para set_mode (sólo 8 bpp, compatibilidad DIV2) */ /* Modos predefinidos para set_mode (sólo 8 bpp, compatibilidad DIV2) */
CONST("m320x200",320200); CONST("m320x200",320200);
CONST("m320x240",320240); CONST("m320x240",320240);
CONST("m320x400",320400); CONST("m320x400",320400);
@ -88,7 +88,7 @@ int ExportaFuncs(EXPORTAFUNCS_PARAMS)
GLOBAL("num_video_modes",0); GLOBAL("num_video_modes",0);
GLOBAL("vsync",0); GLOBAL("vsync",0);
GLOBAL("draw_z",-255); GLOBAL("draw_z",-255);
GLOBAL("smooth",smooth); /* > Atención una nueva variable que indica si se activa o no el SMOOTH al ZOOMEAR. */ GLOBAL("smooth",smooth); /* > Atención una nueva variable que indica si se activa o no el SMOOTH al ZOOMEAR. */
/* variables locales */ /* variables locales */
LOCAL("x",0); LOCAL("x",0);
@ -170,9 +170,9 @@ FILE * memo ;
/*! \brief Guarda una captura de la pantalla en un .bmp /*! \brief Guarda una captura de la pantalla en un .bmp
* *
* Esta función es llamada cuando se pulsa ALT+P. Primero busca un nombre de * Esta función es llamada cuando se pulsa ALT+P. Primero busca un nombre de
* fichero válido del tipo nombre_programa####.bmp, donde #### es el primer * fichero válido del tipo nombre_programa####.bmp, donde #### es el primer
* número que haya disponible, para ir numerando las capturas automáticamente. * número que haya disponible, para ir numerando las capturas automáticamente.
* Luego simplemente usa SDL_SaveBMP() para guardar el backbuffer con ese * Luego simplemente usa SDL_SaveBMP() para guardar el backbuffer con ese
* nombre. * nombre.
* @param nombre_program Nombre del programa, obtenido de fp->nombre_program * @param nombre_program Nombre del programa, obtenido de fp->nombre_program
@ -194,14 +194,14 @@ void guarda_pantallazo(char* nombre_program)
SDL_SaveBMP(screen,capturef); SDL_SaveBMP(screen,capturef);
} }
/*! \brief Función para usar con qsort() para ordenar los blits por su Z /*! \brief Función para usar con qsort() para ordenar los blits por su Z
* *
* Esta función se pasa a qsort() para que la graphics (en el entrypoint frame) * Esta función se pasa a qsort() para que la graphics (en el entrypoint frame)
* ordene los blits (del tipo struct _blits) según su Z, para que se dibujen * ordene los blits (del tipo struct _blits) según su Z, para que se dibujen
* en el backbuffer en el orden correcto. * en el backbuffer en el orden correcto.
* @param a Primer blit a ordenar * @param a Primer blit a ordenar
* @param b Segundo blit a ordenar * @param b Segundo blit a ordenar
* @return -1 si a está detrás de b, 1 si a está delante de b, 0 si tienen la misma Z * @return -1 si a está detrás de b, 1 si a está delante de b, 0 si tienen la misma Z
* @see frame(), struct _blits * @see frame(), struct _blits
*/ */
int ordena_por_z(const void* a, const void* b) int ordena_por_z(const void* a, const void* b)
@ -218,8 +218,8 @@ int ordena_por_z(const void* a, const void* b)
/*! \brief Entrypoint frame /*! \brief Entrypoint frame
* *
* Este entrypoint se ejecuta una vez todos los procesos han ejecutado su código * Este entrypoint se ejecuta una vez todos los procesos han ejecutado su código
* correspondiente al frame actual. Se encarga de procesar todos los gráficos * correspondiente al frame actual. Se encarga de procesar todos los gráficos
* en pantalla (fondo, draws, procesos y los creados por otras DLL's mediante * en pantalla (fondo, draws, procesos y los creados por otras DLL's mediante
* fp->Dibuja()), blitearlos en el backbuffer y actualizar la pantalla. * fp->Dibuja()), blitearlos en el backbuffer y actualizar la pantalla.
* @see Dibuja(), draw.c * @see Dibuja(), draw.c
@ -245,7 +245,7 @@ void frame(FUNCTION_PARAMS)
primer_frame=FALSE; primer_frame=FALSE;
/* /*
* TODO: Añadir comprobacion de errores en los 2 if siguientes (Daijo) * TODO: Añadir comprobacion de errores en los 2 if siguientes (Daijo)
*/ */
if (SDL_Init(SDL_INIT_VIDEO)) { if (SDL_Init(SDL_INIT_VIDEO)) {
fp->Critical_Error(7); /* No se pudo inicializar SDL */ fp->Critical_Error(7); /* No se pudo inicializar SDL */
@ -478,9 +478,9 @@ void frame(FUNCTION_PARAMS)
/*! \brief Entrypoint first_load /*! \brief Entrypoint first_load
* *
* Este entrypoint se ejecuta cuando la DLL se carga en el comienzo de la ejecución * Este entrypoint se ejecuta cuando la DLL se carga en el comienzo de la ejecución
* del programa. Se usa para inicializar todos los datos internos de la DLL y * del programa. Se usa para inicializar todos los datos internos de la DLL y
* realizar alguna operación inicial si es preciso. * realizar alguna operación inicial si es preciso.
*/ */
void first_load(FUNCTION_PARAMS) void first_load(FUNCTION_PARAMS)
{ {
@ -566,28 +566,28 @@ void first_load(FUNCTION_PARAMS)
* Funciones Internas de la DLL * Funciones Internas de la DLL
*/ */
/*! \brief Agrega un gráfico a la lista de blits /*! \brief Agrega un gráfico a la lista de blits
* *
* Esta función puede usarse desde cualquier DLL (se exporta en la estructura fp) * Esta función puede usarse desde cualquier DLL (se exporta en la estructura fp)
* y se encarga de meter un registro en la pila de bliteos, permitiendo especificar * y se encarga de meter un registro en la pila de bliteos, permitiendo especificar
* ciertos parámetros describiendo cómo debe dibujarse el gráfico, incluyendo Z, * ciertos parámetros describiendo cómo debe dibujarse el gráfico, incluyendo Z,
* transparencia, etc. * transparencia, etc.
* La función hace "clipping" al gráfico automáticamente según la región que se le * La función hace "clipping" al gráfico automáticamente según la región que se le
* indique. * indique.
* \todo Hacer que no obligue a la DLL que la llama a usar SDL. Puede convertirse * \todo Hacer que no obligue a la DLL que la llama a usar SDL. Puede convertirse
* esta función o usar una alternativa, esta se usaría de forma interna y la otra se * esta función o usar una alternativa, esta se usaría de forma interna y la otra se
* almacenaría en fp->Dibuja para que la usen las demás DLL's. * almacenaría en fp->Dibuja para que la usen las demás DLL's.
* @param src Superficie donde se encuentra el gráfico a dibujar * @param src Superficie donde se encuentra el gráfico a dibujar
* @param x Coordenada X destino * @param x Coordenada X destino
* @param y Coordenada Y destino * @param y Coordenada Y destino
* @param cx Y del centro del gráfico (relativo al mismo) * @param cx Y del centro del gráfico (relativo al mismo)
* @param cy X del centro del gráfico * @param cy X del centro del gráfico
* @param region Región de pantalla en la que se dibujará * @param region Región de pantalla en la que se dibujará
* @param z Profundidad del gráfico, permite que pueda dibujarse delante o detrás de otros gráficos * @param z Profundidad del gráfico, permite que pueda dibujarse delante o detrás de otros gráficos
* @param flags Flags de espejado horizontal(1)/vertical(2) (sólo se tendrán en cuenta estos dos bits) * @param flags Flags de espejado horizontal(1)/vertical(2) (sólo se tendrán en cuenta estos dos bits)
* @param trans Transparencia del gráfico (0..255) * @param trans Transparencia del gráfico (0..255)
* @param size Tamaño (en porcentaje) al que debe escalarse el gráfico, 100% es el tamaño original * @param size Tamaño (en porcentaje) al que debe escalarse el gráfico, 100% es el tamaño original
* @param angle Ángulo (en milésimas de grado) para rotar el gráfico. (0 = sin rotación) * @param angle Ángulo (en milésimas de grado) para rotar el gráfico. (0 = sin rotación)
* @return 1 * @return 1
* @see frame(), xput(), ordena_por_z(), #blits * @see frame(), xput(), ordena_por_z(), #blits
*/ */
@ -615,9 +615,9 @@ int Dibuja(SDL_Surface *src,int x,int y,int cx,int cy,int region,int z,int flags
if(angle<0) angle+=360000; if(angle<0) angle+=360000;
angulo=angle/1000; angulo=angle/1000;
/*! Ahora siempre se crea una copia de la surface, lo he puesto así porque /*! Ahora siempre se crea una copia de la surface, lo he puesto así porque
* tiene la ventaja de que con el smooth no kedan bordes negros y hace un * tiene la ventaja de que con el smooth no kedan bordes negros y hace un
* perfecto antialiasing, pero vamos, esto hay ke optimizarlo bastante (habrá * perfecto antialiasing, pero vamos, esto hay ke optimizarlo bastante (habrá
* que guarrear bastante en el SDL_rotozoomer.c) * que guarrear bastante en el SDL_rotozoomer.c)
*/ */
@ -625,7 +625,7 @@ int Dibuja(SDL_Surface *src,int x,int y,int cx,int cy,int region,int z,int flags
SDL_SetColorKey(temp,src->flags,color_transparente); SDL_SetColorKey(temp,src->flags,color_transparente);
if(flags&3) { if(flags&3) {
/* el volteado vertical es más rápido */ /* el volteado vertical es más rápido */
if((flags&3)==2) { if((flags&3)==2) {
for(i=0;i<src->h;i++) for(i=0;i<src->h;i++)
memcpy((byte*)temp->pixels+i*temp->pitch,(byte*)src->pixels+(src->h-i-1)*src->pitch,src->pitch); memcpy((byte*)temp->pixels+i*temp->pitch,(byte*)src->pixels+(src->h-i-1)*src->pitch,src->pitch);
@ -657,8 +657,8 @@ int Dibuja(SDL_Surface *src,int x,int y,int cx,int cy,int region,int z,int flags
blits[last_blit].src = xput(temp,zoom,angulo); blits[last_blit].src = xput(temp,zoom,angulo);
/*! /*!
* Pequeño hack para arreglar transparency * Pequeño hack para arreglar transparency
* \todo Debería limpiarse y revisarse un poco :P * \todo Debería limpiarse y revisarse un poco :P
*/ */
@ -720,14 +720,14 @@ int Dibuja(SDL_Surface *src,int x,int y,int cx,int cy,int region,int z,int flags
return 1 ; return 1 ;
} }
/*! \brief Escala y rota un gráfico /*! \brief Escala y rota un gráfico
* *
* Esta función recibe una superficie y la rota y escala según los valores deseados, * Esta función recibe una superficie y la rota y escala según los valores deseados,
* y devuelve una nueva superficie que contiene el gráfico transformado. * y devuelve una nueva superficie que contiene el gráfico transformado.
* @param src La superficie con el gráfico que se desea transformar * @param src La superficie con el gráfico que se desea transformar
* @param size Tamaño al que se desea escalar el gráfico (1.0 es el tamaño original) * @param size Tamaño al que se desea escalar el gráfico (1.0 es el tamaño original)
* @param angle Ángulo (en grados) al que se desea rotar el gráfico (0.0 = sin rotación) * @param angle Ángulo (en grados) al que se desea rotar el gráfico (0.0 = sin rotación)
* @return Una nueva superficie con el gráfico transformado * @return Una nueva superficie con el gráfico transformado
* @see Dibuja(), SDL_rotozoom.c * @see Dibuja(), SDL_rotozoom.c
*/ */
SDL_Surface *xput(SDL_Surface *src,double size,double angle) SDL_Surface *xput(SDL_Surface *src,double size,double angle)

View file

@ -1,5 +1,5 @@
/*! \file graphics.h /*! \file graphics.h
* \brief Cabecera principal de la librería * \brief Cabecera principal de la librería
* *
* Este fichero, aparte de otras cosas, contiene los prototipos de todos los .c * Este fichero, aparte de otras cosas, contiene los prototipos de todos los .c
* (excepto de SDL_rotozoom.c). * (excepto de SDL_rotozoom.c).
@ -20,12 +20,12 @@
#define ERR_INVALIDFPGHEADER 106 #define ERR_INVALIDFPGHEADER 106
#define ERR_INVALIDMAPCODE 110 #define ERR_INVALIDMAPCODE 110
#define MAX_DRAWS 1024 /*!< Número máximo de objetos que soporta draw() (en el DIV2 eran 256) */ #define MAX_DRAWS 1024 /*!< Número máximo de objetos que soporta draw() (en el DIV2 eran 256) */
#define MAX_REGIONS 32 /*!< Número máximo de regiones de pantalla (en el DIV2 eran 32) */ #define MAX_REGIONS 32 /*!< Número máximo de regiones de pantalla (en el DIV2 eran 32) */
/* Macros */ /* Macros */
/*! Se usa para la colisión por bounding-box */ /*! Se usa para la colisión por bounding-box */
#define Miedzy(x,a,b) (((x) >= (a)) && ((x) <= (b))) #define Miedzy(x,a,b) (((x) >= (a)) && ((x) <= (b)))
/*! Asigna a una superficie la paleta de otra superficie */ /*! Asigna a una superficie la paleta de otra superficie */
@ -116,7 +116,7 @@ int last_blit ;
int _gamma[3] ; int _gamma[3] ;
int smooth; /*!< Indica si se desea suavizar los gráficos @see xput() */ int smooth; /*!< Indica si se desea suavizar los gráficos @see xput() */
struct _graphics* graphics; /*!< Para que todas las funciones puedan acceder a fp->graphics */ struct _graphics* graphics; /*!< Para que todas las funciones puedan acceder a fp->graphics */

View file

@ -2,9 +2,9 @@
* \brief Funciones de operaciones con mapas * \brief Funciones de operaciones con mapas
* *
* Este fichero contiene las funciones para las operaciones con mapas * Este fichero contiene las funciones para las operaciones con mapas
* (modificación, obtención de información, bliteos, etc). * (modificación, obtención de información, bliteos, etc).
* *
* \todo Falta respetar el centro del gráfico, y soporte para FLAGS 1 y 2 * \todo Falta respetar el centro del gráfico, y soporte para FLAGS 1 y 2
*/ */
#include <SDL/SDL.h> #include <SDL/SDL.h>
@ -14,13 +14,13 @@
/*! \brief Copia un trozo de mapa y lo pega en otro mapa /*! \brief Copia un trozo de mapa y lo pega en otro mapa
* *
* Esta función sólo permite operaciones en el mismo FPG. * Esta función sólo permite operaciones en el mismo FPG.
* \todo ¿sobrecargar para permitir operaciones entre FPG's? * \todo ¿sobrecargar para permitir operaciones entre FPG's?
* @param f FPG donde se encuentran los dos mapas * @param f FPG donde se encuentran los dos mapas
* @param g2 Gráfico de destino * @param g2 Gráfico de destino
* @param x2 Coordenada X destino * @param x2 Coordenada X destino
* @param y2 Coordenada Y destino * @param y2 Coordenada Y destino
* @param g1 Gráfico de origen * @param g1 Gráfico de origen
* @param x1 Coordenada X origen * @param x1 Coordenada X origen
* @param y1 Coordenada Y origen * @param y1 Coordenada Y origen
* @param w Anchura del bloque a copiar * @param w Anchura del bloque a copiar
@ -63,10 +63,10 @@ int eDIV_MAP_BLOCK_COPY(FUNCTION_PARAMS)
/*! \brief Obtiene el color del pixel, en las coordenadas (x,y), de un mapa. /*! \brief Obtiene el color del pixel, en las coordenadas (x,y), de un mapa.
* @param f Fichero (FPG) donde se encuentra el mapa * @param f Fichero (FPG) donde se encuentra el mapa
* @param g Código del gráfico dentro del FPG. * @param g Código del gráfico dentro del FPG.
* @param x Coordenada X del pixel * @param x Coordenada X del pixel
* @param y Coordenada Y del pixel * @param y Coordenada Y del pixel
* @return El color del píxel. * @return El color del píxel.
* @see eDIV_MAP_PUT_PIXEL(), eDIV_PUT_PIXEL(), eDIV_GET_PIXEL() * @see eDIV_MAP_PUT_PIXEL(), eDIV_PUT_PIXEL(), eDIV_GET_PIXEL()
*/ */
int eDIV_MAP_GET_PIXEL(FUNCTION_PARAMS) int eDIV_MAP_GET_PIXEL(FUNCTION_PARAMS)
@ -110,11 +110,11 @@ int eDIV_MAP_GET_PIXEL(FUNCTION_PARAMS)
/*! \brief Blitea un mapa dentro de otro mapa /*! \brief Blitea un mapa dentro de otro mapa
* *
* Esta función sólo permite operaciones en el mismo FPG. * Esta función sólo permite operaciones en el mismo FPG.
* \todo ¿sobrecargar para permitir operaciones entre FPG's? * \todo ¿sobrecargar para permitir operaciones entre FPG's?
* @param f Fichero (FPG) donde se encuentran los dos mapas. * @param f Fichero (FPG) donde se encuentran los dos mapas.
* @param g2 Gráfico de destino * @param g2 Gráfico de destino
* @param g1 Gráfico de origen * @param g1 Gráfico de origen
* @param x Coordenada X * @param x Coordenada X
* @param y Coordenada Y * @param y Coordenada Y
* @return 1 * @return 1
@ -144,11 +144,11 @@ int eDIV_MAP_PUT(FUNCTION_PARAMS)
} }
/*! \brief Cambia el color de un píxel determinado de un mapa /*! \brief Cambia el color de un píxel determinado de un mapa
* @param fichero Fichero (FPG) donde se encuentra el mapa * @param fichero Fichero (FPG) donde se encuentra el mapa
* @param grafico Código del mapa dentro del FPG * @param grafico Código del mapa dentro del FPG
* @param x Coordenada X del píxel * @param x Coordenada X del píxel
* @param y Coordenada y del píxel * @param y Coordenada y del píxel
* @param color Color * @param color Color
* @return 1 * @return 1
* @see eDIV_MAP_GET_PIXEL(), eDIV_PUT_PIXEL(), eDIV_GET_PIXEL() * @see eDIV_MAP_GET_PIXEL(), eDIV_PUT_PIXEL(), eDIV_GET_PIXEL()
@ -218,8 +218,8 @@ int eDIV_MAP_PUT_PIXEL(FUNCTION_PARAMS)
/*! \brief Blitea un mapa sobre el buffer del fondo /*! \brief Blitea un mapa sobre el buffer del fondo
* @param fichero Fichero (FPG) donde se encuentra el gráfico * @param fichero Fichero (FPG) donde se encuentra el gráfico
* @param grafico Código del mapa dentro del FPG * @param grafico Código del mapa dentro del FPG
* @param x Coordenada X destino * @param x Coordenada X destino
* @param y Coordenada Y destino * @param y Coordenada Y destino
* @return 1 * @return 1
@ -250,14 +250,14 @@ int eDIV_PUT(FUNCTION_PARAMS)
} }
/*! \brief Como eDIV_PUT() pero permitiendo indicar ángulo, tamaño y flags. /*! \brief Como eDIV_PUT() pero permitiendo indicar ángulo, tamaño y flags.
* \todo Falta soporte para flags. Revisar y añadir fp->Runtime_Error() * \todo Falta soporte para flags. Revisar y añadir fp->Runtime_Error()
* @param fichero Fichero (FPG) donde se encuentra el gráfico * @param fichero Fichero (FPG) donde se encuentra el gráfico
* @param grafico Código del mapa dentro del FPG * @param grafico Código del mapa dentro del FPG
* @param x Coordenada X destino * @param x Coordenada X destino
* @param y Coordenada Y destino * @param y Coordenada Y destino
* @param angle Ángulo (en milésimas de grado) * @param angle Ángulo (en milésimas de grado)
* @param zoom Tamaño (en porcentaje) * @param zoom Tamaño (en porcentaje)
* @return 1 si se ha colocado correctamente, -1 si el mapa no existe. * @return 1 si se ha colocado correctamente, -1 si el mapa no existe.
* @see eDIV_PUT(), eDIV_MAP_XPUT(), eDIV_MAP_PUT() * @see eDIV_PUT(), eDIV_MAP_XPUT(), eDIV_MAP_PUT()
*/ */
@ -294,8 +294,8 @@ int eDIV_XPUT(FUNCTION_PARAMS)
/*! \brief Blitea un mapa sobre el buffer del fondo en la ESQUINA SUPERIOR IZQUIERDA de la pantalla /*! \brief Blitea un mapa sobre el buffer del fondo en la ESQUINA SUPERIOR IZQUIERDA de la pantalla
* @param fichero Fichero (FPG) donde se encuentra el gráfico * @param fichero Fichero (FPG) donde se encuentra el gráfico
* @param grafico Código del mapa dentro del FPG * @param grafico Código del mapa dentro del FPG
* @return 1 * @return 1
* @see eDIV_PUT(), eDIV_LOAD_SCREEN() * @see eDIV_PUT(), eDIV_LOAD_SCREEN()
*/ */
@ -394,7 +394,7 @@ int eDIV_CLEAR_SCREEN(FUNCTION_PARAMS)
/*! \brief Obtiene el color del pixel, en las coordenadas (x,y), del buffer del fondo. /*! \brief Obtiene el color del pixel, en las coordenadas (x,y), del buffer del fondo.
* @param x Coordenada X del pixel * @param x Coordenada X del pixel
* @param y Coordenada Y del pixel * @param y Coordenada Y del pixel
* @return El color del píxel. * @return El color del píxel.
* @see eDIV_PUT_PIXEL(), eDIV_MAP_GET_PIXEL() * @see eDIV_PUT_PIXEL(), eDIV_MAP_GET_PIXEL()
*/ */
int eDIV_GET_PIXEL(FUNCTION_PARAMS) int eDIV_GET_PIXEL(FUNCTION_PARAMS)
@ -431,16 +431,16 @@ int eDIV_GET_PIXEL(FUNCTION_PARAMS)
} }
/*! \brief Crea un nuevo mapa con las características indicadas. /*! \brief Crea un nuevo mapa con las características indicadas.
* *
* El nuevo mapa se creará en el fichero 0, como si se hubiera cargado con * El nuevo mapa se creará en el fichero 0, como si se hubiera cargado con
* \link eDIV_LOAD_MAP() load_map() \endlink. * \link eDIV_LOAD_MAP() load_map() \endlink.
* @param w Anchura del mapa * @param w Anchura del mapa
* @param h Altura del mapa * @param h Altura del mapa
* @param cx Coordenada X del centro del mapa * @param cx Coordenada X del centro del mapa
* @param cy Coordenada Y del centro del mapa * @param cy Coordenada Y del centro del mapa
* @param c Color con el que se rellenará el nuevo mapa * @param c Color con el que se rellenará el nuevo mapa
* @return El código del nuevo gráfico, o -1 si ocurrió un error * @return El código del nuevo gráfico, o -1 si ocurrió un error
* @see eDIV_LOAD_MAP(), eDIV_UNLOAD_MAP() * @see eDIV_LOAD_MAP(), eDIV_UNLOAD_MAP()
*/ */
int eDIV_NEW_MAP(FUNCTION_PARAMS) int eDIV_NEW_MAP(FUNCTION_PARAMS)
@ -474,15 +474,15 @@ int eDIV_NEW_MAP(FUNCTION_PARAMS)
} }
/*! \brief Copia una región de la pantalla en un mapa /*! \brief Copia una región de la pantalla en un mapa
* \todo La región copiada debe ESTIRARSE para adaptarse a la región destino * \todo La región copiada debe ESTIRARSE para adaptarse a la región destino
* @param r Región de la pantalla * @param r Región de la pantalla
* @param f Fichero del mapa destino * @param f Fichero del mapa destino
* @param g Gráfico destino * @param g Gráfico destino
* @param x Coordenada X destino * @param x Coordenada X destino
* @param y Coordenada Y destino * @param y Coordenada Y destino
* @param w Ancho de la región destino dentro del mapa * @param w Ancho de la región destino dentro del mapa
* @param h Alto de la región destino dentro del mapa * @param h Alto de la región destino dentro del mapa
* @return 1 * @return 1
* @see eDIV_DEFINE_REGION(), eDIV_MAP_BLOCK_COPY() * @see eDIV_DEFINE_REGION(), eDIV_MAP_BLOCK_COPY()
*/ */
@ -517,8 +517,8 @@ int eDIV_SCREEN_COPY(FUNCTION_PARAMS)
/*! \brief Obtiene las coordenadas de un punto de control de un mapa /*! \brief Obtiene las coordenadas de un punto de control de un mapa
* @param f Fichero en el que se encuentra el mapa * @param f Fichero en el que se encuentra el mapa
* @param g Código del mapa dentro del FPG * @param g Código del mapa dentro del FPG
* @param n Número del punto de control * @param n Número del punto de control
* @param offset_x Offset de la variable donde guardar la coordenada X * @param offset_x Offset de la variable donde guardar la coordenada X
* @param offset_y Offset de la variable donde guardar la coordenada Y * @param offset_y Offset de la variable donde guardar la coordenada Y
* @return 0 si todo va bien, -1 si el mapa no existe * @return 0 si todo va bien, -1 si el mapa no existe
@ -544,7 +544,7 @@ int eDIV_GET_POINT(FUNCTION_PARAMS)
/*! \brief Obtiene las coordenadas en pantalla de un punto de control del proceso actual /*! \brief Obtiene las coordenadas en pantalla de un punto de control del proceso actual
* \todo Tener en cuenta angle, size, etc * \todo Tener en cuenta angle, size, etc
* @param n Número del punto de control * @param n Número del punto de control
* @param offset_x Offset de la variable donde guardar la coordenada X * @param offset_x Offset de la variable donde guardar la coordenada X
* @param offset_y Offset de la variable donde guardar la coordenada Y * @param offset_y Offset de la variable donde guardar la coordenada Y
* @return 0 si todo va bien, -1 si el mapa no existe * @return 0 si todo va bien, -1 si el mapa no existe
@ -571,12 +571,12 @@ int eDIV_GET_REAL_POINT(FUNCTION_PARAMS)
return 0 ; return 0 ;
} }
/*! \brief Obtiene información sobre un mapa /*! \brief Obtiene información sobre un mapa
* @param f Fichero donde se encuentra el mapa * @param f Fichero donde se encuentra el mapa
* @param g Código del gráfico dentro del FPG * @param g Código del gráfico dentro del FPG
* @param i Indica qué información quiere extraerse del mapa, puede ser uno de: * @param i Indica qué información quiere extraerse del mapa, puede ser uno de:
* \a g_wide (0), \a g_height (1), \a g_x_center (2) ó \a g_y_center (3). * \a g_wide (0), \a g_height (1), \a g_x_center (2) ó \a g_y_center (3).
* @return La información solicitada, o -1 si hubo un error. * @return La información solicitada, o -1 si hubo un error.
* @see eDIV_GET_POINT() * @see eDIV_GET_POINT()
*/ */
int eDIV_GRAPHIC_INFO(FUNCTION_PARAMS) int eDIV_GRAPHIC_INFO(FUNCTION_PARAMS)

View file

@ -8,18 +8,18 @@
#include "graphics.h" #include "graphics.h"
/*! \brief Cambia el modo de la pantalla /*! \brief Cambia el modo de la pantalla
* \todo ¿más flags? * \todo ¿más flags?
* *
* Esta función permite distintas sintaxis: * Esta función permite distintas sintaxis:
* - Sintaxis de DIV2: * - Sintaxis de DIV2:
* @param modo Modo de pantalla indicado por una constante tipo mWWWxHHH ó por un identificador de video_modes[] * @param modo Modo de pantalla indicado por una constante tipo mWWWxHHH ó por un identificador de video_modes[]
* *
* - Sintaxis de eDIV: * - Sintaxis de eDIV:
* @param anchura Ancho de la nueva resolución * @param anchura Ancho de la nueva resolución
* @param altura Alto de la nueva resolución * @param altura Alto de la nueva resolución
* @param [bpp] Profundidad de color, puede ser 8, 16, 24 ó 32 (por defecto es 8) * @param [bpp] Profundidad de color, puede ser 8, 16, 24 ó 32 (por defecto es 8)
* @param [flags] Flags de la ventana del juego, puede ser una combinación de: * @param [flags] Flags de la ventana del juego, puede ser una combinación de:
* _fullscreen (1), ... ya veremos si añadimos más xD * _fullscreen (1), ... ya veremos si añadimos más xD
* . * .
* *
* @return 0 * @return 0

View file

@ -37,11 +37,11 @@ int eDIV_GET_TRANSPARENT_COLOR(FUNCTION_PARAMS)
/*! \brief Crea un color a partir de las componentes RGB dadas. /*! \brief Crea un color a partir de las componentes RGB dadas.
* *
* Esta función devuelve el color más próximo posible a las componentes RGB * Esta función devuelve el color más próximo posible a las componentes RGB
* dadas. En modos de color paletizado (8 bits) puede devolver un color muy * dadas. En modos de color paletizado (8 bits) puede devolver un color muy
* distinto al esperado si no se encuentra otro mejor en la paleta. * distinto al esperado si no se encuentra otro mejor en la paleta.
* Esta función difiere de \link eDIV_FIND_COLOR() find_color() \endlink en * Esta función difiere de \link eDIV_FIND_COLOR() find_color() \endlink en
* que recibe los parámetros en un rango de 0..255 en vez de 0..63. * que recibe los parámetros en un rango de 0..255 en vez de 0..63.
* @param r Componente roja (red) * @param r Componente roja (red)
* @param g Componente verde (green) * @param g Componente verde (green)
* @param b Componente azul (blue) * @param b Componente azul (blue)
@ -60,11 +60,11 @@ int eDIV_RGB(FUNCTION_PARAMS)
/*! \brief Crea un color a partir de las componentes RGB dadas. /*! \brief Crea un color a partir de las componentes RGB dadas.
* *
* Esta función devuelve el color más próximo posible a las componentes RGB * Esta función devuelve el color más próximo posible a las componentes RGB
* dadas. En modos de color paletizado (8 bits) puede devolver un color muy * dadas. En modos de color paletizado (8 bits) puede devolver un color muy
* distinto al esperado si no se encuentra otro mejor en la paleta. * distinto al esperado si no se encuentra otro mejor en la paleta.
* Esta función difiere de \link eDIV_RGB() RGB() \endlink en que recibe los * Esta función difiere de \link eDIV_RGB() RGB() \endlink en que recibe los
* parámetros en un rango de 0..63 en vez de 0..255. Se ha incluido para * parámetros en un rango de 0..63 en vez de 0..255. Se ha incluido para
* mantener la compatibilidad con DIV2. * mantener la compatibilidad con DIV2.
* @param r Componente roja (red) * @param r Componente roja (red)
* @param g Componente verde (green) * @param g Componente verde (green)
@ -84,10 +84,10 @@ int eDIV_FIND_COLOR(FUNCTION_PARAMS)
/*! \brief Obtiene las componentes RGB de un color dado. /*! \brief Obtiene las componentes RGB de un color dado.
* *
* Esta función recibe un color y almacena en las variables indicadas sus * Esta función recibe un color y almacena en las variables indicadas sus
* componentes RGB (siempre en un rango de 0..255). Si en lugar de un offset * componentes RGB (siempre en un rango de 0..255). Si en lugar de un offset
* se recibe un 0, se ignorará esa componente. * se recibe un 0, se ignorará esa componente.
* @param color Color del que se quiere obtener la información * @param color Color del que se quiere obtener la información
* @param offset_r Offset de la variable donde se quiere guardar el valor de la componente roja (red) * @param offset_r Offset de la variable donde se quiere guardar el valor de la componente roja (red)
* @param offset_g Offset de la variable donde se quiere guardar el valor de la componente verde (green) * @param offset_g Offset de la variable donde se quiere guardar el valor de la componente verde (green)
* @param offset_b Offset de la variable donde se quiere guardar el valor de la componente azul (blue) * @param offset_b Offset de la variable donde se quiere guardar el valor de la componente azul (blue)
@ -111,7 +111,7 @@ int eDIV_GET_RGB(FUNCTION_PARAMS)
/*! \brief Hace un fundido de pantalla /*! \brief Hace un fundido de pantalla
* *
* \todo ¡¡función sin acabar!! * \todo ¡¡función sin acabar!!
*/ */
int eDIV_FADE(FUNCTION_PARAMS) int eDIV_FADE(FUNCTION_PARAMS)
{ {

View file

@ -8,13 +8,13 @@
#include "graphics.h" #include "graphics.h"
/*! \brief Define una región de pantalla /*! \brief Define una región de pantalla
* \todo Añadir un poco de comprobación de errores * \todo Añadir un poco de comprobación de errores
* @param n Número de la región a definir (1..31) * @param n Número de la región a definir (1..31)
* @param x Coordenada X de la esquina superior izquierda de la región * @param x Coordenada X de la esquina superior izquierda de la región
* @param y Coordenada Y de la esquina superior izquierda de la región * @param y Coordenada Y de la esquina superior izquierda de la región
* @param w Anchura de la región * @param w Anchura de la región
* @param h Altura de la región * @param h Altura de la región
* @return 1 si todo fue bien o 0 si hubo un error * @return 1 si todo fue bien o 0 si hubo un error
* @see eDIV_OUT_REGION(), eDIV_SCREEN_COPY() * @see eDIV_OUT_REGION(), eDIV_SCREEN_COPY()
*/ */
@ -28,7 +28,7 @@ int eDIV_DEFINE_REGION(FUNCTION_PARAMS)
n = getparm() ; n = getparm() ;
if ( n > 31 || n < 1 ) { if ( n > 31 || n < 1 ) {
fp->Runtime_Error(108); /* nº de región inválido */ fp->Runtime_Error(108); /* nº de región inválido */
return 0; return 0;
} }
@ -41,10 +41,10 @@ int eDIV_DEFINE_REGION(FUNCTION_PARAMS)
return 1 ; return 1 ;
} }
/*! \brief Indica si un proceso está fuera de la región indicada /*! \brief Indica si un proceso está fuera de la región indicada
* @param id Identificador del proceso * @param id Identificador del proceso
* @param r Región * @param r Región
* @return 1 si el proceso está fuera de la región o 0 en caso contrario * @return 1 si el proceso está fuera de la región o 0 en caso contrario
* @see eDIV_DEFINE_REGION() * @see eDIV_DEFINE_REGION()
*/ */
int eDIV_OUT_REGION(FUNCTION_PARAMS) int eDIV_OUT_REGION(FUNCTION_PARAMS)

View file

@ -19,12 +19,12 @@
*/ */
/* Este fichero es la cabecera para las DLL's de eDIV. /* Este fichero es la cabecera para las DLL's de eDIV.
* Para saber cómo se utiliza, consulte el eDIV SDK de la documentación de eDIV * Para saber cómo se utiliza, consulte el eDIV SDK de la documentación de eDIV
* ESTE FICHERO -NO- HA DE SER MODIFICADO PARA CREAR DLLs, TAN SÓLO POR * ESTE FICHERO -NO- HA DE SER MODIFICADO PARA CREAR DLLs, TAN SÓLO POR
* DESARROLLADORES DE eDIV. EN CASO DE SER MODIFICADO, SE PERDERÁ LA * DESARROLLADORES DE eDIV. EN CASO DE SER MODIFICADO, SE PERDERÁ LA
* COMPATIBILIDAD CON eDIV Y EL RESTO DE DLLs. * COMPATIBILIDAD CON eDIV Y EL RESTO DE DLLs.
* En caso de encontrar cualquier bug o anomalía en este archivo, por favor * En caso de encontrar cualquier bug o anomalía en este archivo, por favor
* notifíquelo a Sion Entertainment en bugs@edivcentral.com * notifíquelo a Sion Entertainment en bugs@edivcentral.com
*/ */
/*! \file export.h /*! \file export.h
@ -65,7 +65,7 @@ typedef enum { v_global, v_reserved, v_local } tipo_t;
/*! Estructura de variables indexadas */ /*! Estructura de variables indexadas */
typedef struct { typedef struct {
unsigned char hash; /*!< Hash del nombre de la variable, para acelerar su búsqueda */ unsigned char hash; /*!< Hash del nombre de la variable, para acelerar su búsqueda */
tipo_t tipo; /*!< Tipo de variable (global, reservada o local) */ tipo_t tipo; /*!< Tipo de variable (global, reservada o local) */
char* nombre; /*!< Nombre de la variable */ char* nombre; /*!< Nombre de la variable */
int offset; /*!< offset en mem[] (relativo al proceso si es local o reservada) */ int offset; /*!< offset en mem[] (relativo al proceso si es local o reservada) */
@ -84,7 +84,7 @@ typedef struct {
#include <SDL/SDL.h> #include <SDL/SDL.h>
/* Funciones de exportación de datos */ /* Funciones de exportación de datos */
typedef int (TYPEOF_EDIV_Export)(char* cadena, int nparam, void* hfuncion); typedef int (TYPEOF_EDIV_Export)(char* cadena, int nparam, void* hfuncion);
typedef int (TYPEOF_EDIV_Export_Const)(byte* cadena, int valor); typedef int (TYPEOF_EDIV_Export_Const)(byte* cadena, int valor);
typedef int (TYPEOF_EDIV_Export_Global)(char* cadena, int valor); typedef int (TYPEOF_EDIV_Export_Global)(char* cadena, int valor);
@ -111,20 +111,20 @@ typedef int (TYPEOF_Dibuja)(SDL_Surface *src,int x,int y,int cx,int cy,int regio
/*! Tipos de error para custom_error() */ /*! Tipos de error para custom_error() */
typedef enum { typedef enum {
_runtime_error=1, /*!< Error normal (se puede depurar y/o ignorar) */ _runtime_error=1, /*!< Error normal (se puede depurar y/o ignorar) */
_critical_error=2 /*!< Error crítico (interrumpe obligatoriamente el programa) */ _critical_error=2 /*!< Error crítico (interrumpe obligatoriamente el programa) */
} tipoerror; } tipoerror;
typedef void (TYPEOF_Runtime_Error)(int, ...); typedef void (TYPEOF_Runtime_Error)(int, ...);
typedef void (TYPEOF_Critical_Error)(int, ...); typedef void (TYPEOF_Critical_Error)(int, ...);
typedef void (TYPEOF_Custom_Error)(tipoerror,char*); typedef void (TYPEOF_Custom_Error)(tipoerror,char*);
/*! Obtiene offset de variable indexada dinámicamente */ /*! Obtiene offset de variable indexada dinámicamente */
typedef int (TYPEOF_GetVarOffset)(tipo_t tipo,char* nombre); typedef int (TYPEOF_GetVarOffset)(tipo_t tipo,char* nombre);
/*! Finaliza el stub (exit) */ /*! Finaliza el stub (exit) */
typedef void (TYPEOF_Stub_Quit)(int n); typedef void (TYPEOF_Stub_Quit)(int n);
/*! EXPORTAFUNCS_PARAMS deben usarse como parámetros para ExportaFuncs */ /*! EXPORTAFUNCS_PARAMS deben usarse como parámetros para ExportaFuncs */
#define EXPORTAFUNCS_PARAMS \ #define EXPORTAFUNCS_PARAMS \
TYPEOF_EDIV_Export *EDIV_Export ,\ TYPEOF_EDIV_Export *EDIV_Export ,\
TYPEOF_EDIV_Export_Const *EDIV_Export_Const ,\ TYPEOF_EDIV_Export_Const *EDIV_Export_Const ,\
@ -146,7 +146,7 @@ TYPEOF_EDIV_Export_Priority *EDIV_Export_Priority
* ENTRY-POINTS * ENTRY-POINTS
* *
* Estas funciones son llamadas por el STUB en determinados eventos * Estas funciones son llamadas por el STUB en determinados eventos
* (Cuando una DLL hace cierta acción, lo avisa al Stub y el stub se encarga de llamar * (Cuando una DLL hace cierta acción, lo avisa al Stub y el stub se encarga de llamar
* a las correspondientes rutinas de las dll's, ordenadas por prioridad) * a las correspondientes rutinas de las dll's, ordenadas por prioridad)
*/ */
@ -154,7 +154,7 @@ TYPEOF_EDIV_Export_Priority *EDIV_Export_Priority
/*! \defgroup entrypoints Entrypoints */ /*! \defgroup entrypoints Entrypoints */
/*! @{ */ /*! @{ */
#define EDIV_set_video_mode 1 /* Al activar un nuevo modo de vídeo */ #define EDIV_set_video_mode 1 /* Al activar un nuevo modo de vídeo */
#define EDIV_process_palette 2 /* Al cargar una paleta */ #define EDIV_process_palette 2 /* Al cargar una paleta */
#define EDIV_process_active_palette 3 /* Al modificar la paleta activa (usada en los fades) */ #define EDIV_process_active_palette 3 /* Al modificar la paleta activa (usada en los fades) */
#define EDIV_process_sound 4 /* Al cargar un efecto sonoro */ #define EDIV_process_sound 4 /* Al cargar un efecto sonoro */
@ -173,13 +173,13 @@ TYPEOF_EDIV_Export_Priority *EDIV_Export_Priority
#define EDIV_ss_frame 17 /* Frame de salvapantallas */ #define EDIV_ss_frame 17 /* Frame de salvapantallas */
#define EDIV_ss_end 18 /* Fin de salvapantallas */ #define EDIV_ss_end 18 /* Fin de salvapantallas */
#define EDIV_frame 19 /* En cada frame */ #define EDIV_frame 19 /* En cada frame */
#define EDIV_trace 20 /* Después de ejecutar cada instrucción de bytecode (solo en debug) */ #define EDIV_trace 20 /* Después de ejecutar cada instrucción de bytecode (solo en debug) */
#define EDIV_debug 21 /* Invocar al trazador - sentencia debug (solo en debug) */ #define EDIV_debug 21 /* Invocar al trazador - sentencia debug (solo en debug) */
#define EDIV_first_load 22 /* Se ejecuta al cargar la DLL en ejecucion */ #define EDIV_first_load 22 /* Se ejecuta al cargar la DLL en ejecucion */
#define EDIV_quit 23 /* Llamado por stub_quit() */ #define EDIV_quit 23 /* Llamado por stub_quit() */
/*! @} */ /*! @} */
/* #defines para que la declaración de datos sea un poco más BASIC... :p */ /* #defines para que la declaración de datos sea un poco más BASIC... :p */
#ifdef CONST #ifdef CONST
# undef CONST # undef CONST
#endif #endif
@ -200,7 +200,7 @@ TYPEOF_EDIV_Export_Priority *EDIV_Export_Priority
/*! /*!
* FUNCTION_PARAMS deben usarse como parametros para TODAS las funciones * FUNCTION_PARAMS deben usarse como parametros para TODAS las funciones
* ¡OJO! debe ser igual en extern.h * ¡OJO! debe ser igual en extern.h
*/ */
#define FUNCTION_PARAMS struct _fun_params * fp #define FUNCTION_PARAMS struct _fun_params * fp
@ -216,12 +216,12 @@ struct _procs_s{
int graph ; int graph ;
}; };
/*! Estructura de una región de pantalla */ /*! Estructura de una región de pantalla */
struct _regions { struct _regions {
int x , y , w , h ; int x , y , w , h ;
}; };
/*! Permite asegurarnos de que ciertos recursos están cargados */ /*! Permite asegurarnos de que ciertos recursos están cargados */
struct _existe { struct _existe {
int regions ; int regions ;
int dibuja ; int dibuja ;
@ -267,7 +267,7 @@ struct _graphics {
struct _palette* activepal; struct _palette* activepal;
}; };
/*! Parámetros para las funciones exportadas */ /*! Parámetros para las funciones exportadas */
struct _fun_params{ struct _fun_params{
int *pila ; int *pila ;
int *sp ; int *sp ;

View file

@ -43,7 +43,7 @@
#define _prn_scr 55 /* Impr Pant */ #define _prn_scr 55 /* Impr Pant */
#define _scroll_lock 70 /* Bloq Despl */ #define _scroll_lock 70 /* Bloq Despl */
#define _wave 41 /* "º" */ #define _wave 41 /* "º" */
#define _1 2 #define _1 2
#define _2 3 #define _2 3
#define _3 4 #define _3 4
@ -55,7 +55,7 @@
#define _9 10 #define _9 10
#define _0 11 #define _0 11
#define _minus 12 /* ? */ #define _minus 12 /* ? */
#define _plus 13 /* ¿ */ #define _plus 13 /* ¿ */
#define _backspace 14 #define _backspace 14
#define _tab 15 #define _tab 15
@ -83,7 +83,7 @@
#define _j 36 #define _j 36
#define _k 37 #define _k 37
#define _l 38 #define _l 38
#define _semicolon 39 /* Ñ */ #define _semicolon 39 /* Ñ */
#define _apostrophe 40 /* { */ #define _apostrophe 40 /* { */
#define _backslash 43 /* } */ #define _backslash 43 /* } */
@ -248,20 +248,20 @@ int ExportaFuncs(EXPORTAFUNCS_PARAMS)
GLOBAL_STRUCT("mouse",0); GLOBAL_STRUCT("mouse",0);
_INT("x",0); /* Coordenada x */ _INT("x",0); /* Coordenada x */
_INT("y",0); /* Coordenada y */ _INT("y",0); /* Coordenada y */
_INT("graph",0); /* Gráfico */ _INT("graph",0); /* Gráfico */
_INT("file",0); /* FPG */ _INT("file",0); /* FPG */
_INT("z",-512); /* Profundidad (TODO) */ _INT("z",-512); /* Profundidad (TODO) */
_INT("angle",0); /* Ángulo (TODO) */ _INT("angle",0); /* Ángulo (TODO) */
_INT("size",100); /* Tamaño (TODO) */ _INT("size",100); /* Tamaño (TODO) */
_INT("flags",0); /* Banderas (TODO) */ _INT("flags",0); /* Banderas (TODO) */
_INT("region",0); /* Región (TODO) */ _INT("region",0); /* Región (TODO) */
_INT("left",0); /* Botón izquierdo */ _INT("left",0); /* Botón izquierdo */
_INT("middle",0); /* Botón central o de ruedecilla */ _INT("middle",0); /* Botón central o de ruedecilla */
_INT("right",0); /* Botón derecho */ _INT("right",0); /* Botón derecho */
_INT("wheelup",0); /* Ruedecilla arriba (NUEVO) */ _INT("wheelup",0); /* Ruedecilla arriba (NUEVO) */
_INT("wheeldown",0); /* Ruedecilla abajo (NUEVO) */ _INT("wheeldown",0); /* Ruedecilla abajo (NUEVO) */
_INT("cursor",0); /* Emulación con teclas de cursor (TODO) */ _INT("cursor",0); /* Emulación con teclas de cursor (TODO) */
_INT("speed",0); /* Velocidad del ratón (TODO) */ _INT("speed",0); /* Velocidad del ratón (TODO) */
_INT("transparency",0); /* Transparencia (NUEVO) (TODO) */ _INT("transparency",0); /* Transparencia (NUEVO) (TODO) */
END_STRUCT; END_STRUCT;
@ -430,10 +430,10 @@ void frame(FUNCTION_PARAMS)
if(mbuttons&SDL_BUTTON(3)) if(mbuttons&SDL_BUTTON(3))
fp->mem[_mouse+11]=1; fp->mem[_mouse+11]=1;
if(mbuttons&SDL_BUTTON(4)) /* podria no funcionar ¿necesario sdl_event? */ if(mbuttons&SDL_BUTTON(4)) /* podria no funcionar ¿necesario sdl_event? */
fp->mem[_mouse+12]=1; fp->mem[_mouse+12]=1;
if(mbuttons&SDL_BUTTON(5)) /* podria no funcionar ¿necesario sdl_event? */ if(mbuttons&SDL_BUTTON(5)) /* podria no funcionar ¿necesario sdl_event? */
fp->mem[_mouse+13]=1; fp->mem[_mouse+13]=1;
/* si mouse.graph!=0 */ /* si mouse.graph!=0 */
@ -450,7 +450,7 @@ void frame(FUNCTION_PARAMS)
dstrect.h=mapamouse->h; dstrect.h=mapamouse->h;
/* /*
* TODO: añadir chequeo de error si no existe file o mapa * TODO: añadir chequeo de error si no existe file o mapa
*/ */
fp->Dibuja(mapamouse,dstrect.x,dstrect.y,fp->files[fp->mem[_mouse+3]].mapa[fp->mem[_mouse+2]].cpoint[0].x,fp->files[fp->mem[_mouse+3]].mapa[fp->mem[_mouse+2]].cpoint[0].y,fp->mem[_mouse+8],fp->mem[_mouse+4],fp->mem[_mouse+7],(fp->mem[_mouse+7]&4)?128:255,fp->mem[_mouse+6],fp->mem[_mouse+5]); fp->Dibuja(mapamouse,dstrect.x,dstrect.y,fp->files[fp->mem[_mouse+3]].mapa[fp->mem[_mouse+2]].cpoint[0].x,fp->files[fp->mem[_mouse+3]].mapa[fp->mem[_mouse+2]].cpoint[0].y,fp->mem[_mouse+8],fp->mem[_mouse+4],fp->mem[_mouse+7],(fp->mem[_mouse+7]&4)?128:255,fp->mem[_mouse+6],fp->mem[_mouse+5]);
} }

View file

@ -1,6 +1,6 @@
/* /*
* Este fichero contiene rutinas específicas para una plataforma. * Este fichero contiene rutinas específicas para una plataforma.
* En caso de hacer un port de la librería, deben implementarse las siguientes * En caso de hacer un port de la librería, deben implementarse las siguientes
* funciones: * funciones:
* *
* gr_Init * gr_Init

View file

@ -29,9 +29,9 @@ typedef struct
HDC hDC; // DC global que usamos HDC hDC; // DC global que usamos
HWND hWnd; // HWND de la ventana principal HWND hWnd; // HWND de la ventana principal
HDC hdcDIBSection; // DC compatible con sección DIB HDC hdcDIBSection; // DC compatible con sección DIB
HBITMAP hDIBSection; // sección DIB HBITMAP hDIBSection; // sección DIB
unsigned char *pDIBBase; // puntero base DIB, ¡NO usado directamente para dibujar! unsigned char *pDIBBase; // puntero base DIB, ¡NO usado directamente para dibujar!
HPALETTE hPal; // paleta actual HPALETTE hPal; // paleta actual
HPALETTE hpalOld; // paleta original del sistema HPALETTE hpalOld; // paleta original del sistema
@ -40,7 +40,7 @@ typedef struct
HINSTANCE hinstDDRAW; // instancia de DDRAW.DLL HINSTANCE hinstDDRAW; // instancia de DDRAW.DLL
LPDIRECTDRAW lpDirectDraw; // puntero al objeto DirectDraw LPDIRECTDRAW lpDirectDraw; // puntero al objeto DirectDraw
LPDIRECTDRAWSURFACE lpddsFrontBuffer; // frontbuffer en memoria de vídeo LPDIRECTDRAWSURFACE lpddsFrontBuffer; // frontbuffer en memoria de vídeo
LPDIRECTDRAWSURFACE lpddsBackBuffer; // backbuffer en memoria del sistema LPDIRECTDRAWSURFACE lpddsBackBuffer; // backbuffer en memoria del sistema
LPDIRECTDRAWSURFACE lpddsOffScreenBuffer; // backbuffer en memoria del sistema LPDIRECTDRAWSURFACE lpddsOffScreenBuffer; // backbuffer en memoria del sistema
LPDIRECTDRAWPALETTE lpddpPalette; // paleta DirectDraw LPDIRECTDRAWPALETTE lpddpPalette; // paleta DirectDraw

View file

@ -2,7 +2,7 @@
#include "conv.h" #include "conv.h"
/* Tabla de conversión de caracteres MS-DOS a Windows */ /* Tabla de conversión de caracteres MS-DOS a Windows */
int dos_chars=0; int dos_chars=0;
@ -25,7 +25,7 @@ byte dos_to_win[256] = {
173, 177, 61, 190, 182, 167, 247, 184, 176, 168, 183, 185, 179, 178, 166, 160 173, 177, 61, 190, 182, 167, 247, 184, 176, 168, 183, 185, 179, 178, 166, 160
}; };
/* Tabla de conversión de caracteres Windows a MS-DOS */ /* Tabla de conversión de caracteres Windows a MS-DOS */
byte win_to_dos[256] = byte win_to_dos[256] =
{ {
@ -78,9 +78,9 @@ void inicializa_lower()
set_c_lower ("ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz"); set_c_lower ("ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz");
set_c_lower ("abcdefghijklmnopqrstuvwxyz","abcdefghijklmnopqrstuvwxyz"); set_c_lower ("abcdefghijklmnopqrstuvwxyz","abcdefghijklmnopqrstuvwxyz");
set_c_lower ("ÁÉÍÓÚÑÇÀÈÌÒÙÄËÏÖÜÝÂÊÎÔÛÆÃÅÕ","áéíóúñçàèìòùäëïöüýâêîôûæãåõ"); set_c_lower ("ÁÉÍÓÚÑÇÀÈÌÒÙÄËÏÖÜÝÂÊÎÔÛÆÃÅÕ","áéíóúñçàèìòùäëïöüýâêîôûæãåõ");
set_c_lower("áéíóúñçàèìòùäëïöüýâêîôûæãåõ","áéíóúñçàèìòùäëïöüýâêîôûæãåõ"); set_c_lower("áéíóúñçàèìòùäëïöüýâêîôûæãåõ","áéíóúñçàèìòùäëïöüýâêîôûæãåõ");
set_c_lower("1234567890#$_ºª","1234567890#$_ºª"); set_c_lower("1234567890#$_ºª","1234567890#$_ºª");
} }
void inicializa_upper() void inicializa_upper()
@ -89,7 +89,7 @@ void inicializa_upper()
set_c_upper ("abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ"); set_c_upper ("abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ");
set_c_upper ("ABCDEFGHIJKLMNOPQRSTUVWXYZ","ABCDEFGHIJKLMNOPQRSTUVWXYZ"); set_c_upper ("ABCDEFGHIJKLMNOPQRSTUVWXYZ","ABCDEFGHIJKLMNOPQRSTUVWXYZ");
set_c_upper ("áéíóúñçàèìòùäëïöüýâêîôûæãåõ","ÁÉÍÓÚÑÇÀÈÌÒÙÄËÏÖÜÝÂÊÎÔÛÆÃÅÕ"); set_c_upper ("áéíóúñçàèìòùäëïöüýâêîôûæãåõ","ÁÉÍÓÚÑÇÀÈÌÒÙÄËÏÖÜÝÂÊÎÔÛÆÃÅÕ");
set_c_upper("ÁÉÍÓÚÑÇÀÈÌÒÙÄËÏÖÜÝÂÊÎÔÛÆÃÅÕ","ÁÉÍÓÚÑÇÀÈÌÒÙÄËÏÖÜÝÂÊÎÔÛÆÃÅÕ"); set_c_upper("ÁÉÍÓÚÑÇÀÈÌÒÙÄËÏÖÜÝÂÊÎÔÛÆÃÅÕ","ÁÉÍÓÚÑÇÀÈÌÒÙÄËÏÖÜÝÂÊÎÔÛÆÃÅÕ");
set_c_upper("1234567890#$_ºª","1234567890#$_ºª"); set_c_upper("1234567890#$_ºª","1234567890#$_ºª");
} }

View file

@ -82,7 +82,7 @@ int DIV_strcpy(FUNCTION_PARAMS)
int dest=getparm(); int dest=getparm();
if ((fp->mem[dest-1]&0xFFF00000)!=0xDAD00000) { if ((fp->mem[dest-1]&0xFFF00000)!=0xDAD00000) {
fp->Runtime_Error(164); /* Cadena destino inválida */ fp->Runtime_Error(164); /* Cadena destino inválida */
return 0; return 0;
} }
if ((unsigned)src>255) { if ((unsigned)src>255) {
@ -115,7 +115,7 @@ int DIV_strset(FUNCTION_PARAMS)
int n; int n;
if ((fp->mem[cadena-1]&0xFFF00000)!=0xDAD00000) { if ((fp->mem[cadena-1]&0xFFF00000)!=0xDAD00000) {
fp->Runtime_Error(164); /* Cadena destino inválida */ fp->Runtime_Error(164); /* Cadena destino inválida */
return 0; return 0;
} }
n=(fp->mem[cadena-1]&0xFFFFF)+1; n=(fp->mem[cadena-1]&0xFFFFF)+1;
@ -174,7 +174,7 @@ int DIV_strcat(FUNCTION_PARAMS)
int n; int n;
if ((fp->mem[dest-1]&0xFFF00000)!=0xDAD00000) { if ((fp->mem[dest-1]&0xFFF00000)!=0xDAD00000) {
fp->Runtime_Error(164); /* Cadena destino inválida */ fp->Runtime_Error(164); /* Cadena destino inválida */
return 0; return 0;
} }
@ -318,7 +318,7 @@ int DIV_strdel(FUNCTION_PARAMS)
int str=getparm(); int str=getparm();
if ((fp->mem[str-1]&0xFFF00000)!=0xDAD00000) { if ((fp->mem[str-1]&0xFFF00000)!=0xDAD00000) {
fp->Runtime_Error(164); /* Cadena destino inválida */ fp->Runtime_Error(164); /* Cadena destino inválida */
return str; return str;
} }

View file

@ -21,7 +21,7 @@
/* /*
-Estructura de control -Estructura de control
contiene informacion sobre el offset y tamaño del bmp en el fichero .fnt contiene informacion sobre el offset y tamaño del bmp en el fichero .fnt
para poder leerlo, tambien contiene el offset de la estructura de informacion para poder leerlo, tambien contiene el offset de la estructura de informacion
-Mapa de caracteres -Mapa de caracteres
es la imagen del mapa de caracteres, se copia directamente. es la imagen del mapa de caracteres, se copia directamente.

View file

@ -1,6 +1,6 @@
/** /**
* @file sys06x08_latin1.h * @file sys06x08_latin1.h
* Definición de la fuente sys06x08_latin1 (generado por builtinfont) * Definición de la fuente sys06x08_latin1 (generado por builtinfont)
*/ */
#ifndef __EDIV__sys06x08_latin1_h__ #ifndef __EDIV__sys06x08_latin1_h__

View file

@ -1,6 +1,6 @@
/** /**
* @file sys06x08_msdos.h * @file sys06x08_msdos.h
* Definición de la fuente sys06x08_msdos (generado por builtinfont) * Definición de la fuente sys06x08_msdos (generado por builtinfont)
*/ */
#ifndef __EDIV__sys06x08_msdos_h__ #ifndef __EDIV__sys06x08_msdos_h__

View file

@ -116,7 +116,7 @@ int eDiv_Write(FUNCTION_PARAMS)
fuente = getparm() ; fuente = getparm() ;
if(fuente<0 || fuente>MAX_FONTS || !existe[fuente]) { if(fuente<0 || fuente>MAX_FONTS || !existe[fuente]) {
fp->Runtime_Error(116); /* id de fuente no válido */ fp->Runtime_Error(116); /* id de fuente no válido */
return -1; return -1;
} }
@ -196,7 +196,7 @@ int eDiv_WriteInt(FUNCTION_PARAMS)
fuente = getparm() ; fuente = getparm() ;
if(fuente<0 || fuente>MAX_FONTS || !existe[fuente]) { if(fuente<0 || fuente>MAX_FONTS || !existe[fuente]) {
fp->Runtime_Error(116); /* id de fuente no válido */ fp->Runtime_Error(116); /* id de fuente no válido */
return -1; return -1;
} }
@ -297,7 +297,7 @@ int eDiv_DeleteText(FUNCTION_PARAMS)
return 1; return 1;
} }
else if (i<1 || i>MAX_WRITES) { else if (i<1 || i>MAX_WRITES) {
fp->Runtime_Error(119); /* id de texto no válido */ fp->Runtime_Error(119); /* id de texto no válido */
return -1 ; return -1 ;
} }

View file

@ -64,13 +64,13 @@ void prepara_compilacion()
iobj=obj; iobj=obj;
num_obj=0; num_obj=0;
/* Inicializamos la tabla de símbolos */ /* Inicializamos la tabla de símbolos */
memset(lex_simb,0,sizeof(lex_simb)); memset(lex_simb,0,sizeof(lex_simb));
ilex_simb=lex_simb; ilex_simb=lex_simb;
num_nodos=0; num_nodos=0;
/* Inicializamos los caracteres básicos en lex_case */ /* Inicializamos los caracteres básicos en lex_case */
for (n=0;n<256;n++) for (n=0;n<256;n++)
if (lower[n]) { if (lower[n]) {
if (n>='0' && n<='9') if (n>='0' && n<='9')
@ -87,7 +87,7 @@ void prepara_compilacion()
ivnom.b=vnom; ivnom.b=vnom;
/* Leemos los símbolos y palabras reservadas de ltlex.def */ /* Leemos los símbolos y palabras reservadas de ltlex.def */
analiza_ltlex(); analiza_ltlex();
@ -108,7 +108,7 @@ void prepara_compilacion()
loc=(int*)e_malloc(iloc_max*sizeof(int)); loc=(int*)e_malloc(iloc_max*sizeof(int));
memset(loc,0,iloc_max*sizeof(int)); memset(loc,0,iloc_max*sizeof(int));
/* ¿Que es esto? */ /* ¿Que es esto? */
ifrm_max=default_buffer/2; ifrm_max=default_buffer/2;
frm=(int*)e_malloc(ifrm_max*sizeof(int)); frm=(int*)e_malloc(ifrm_max*sizeof(int));
memset(frm,0,ifrm_max*sizeof(int)); memset(frm,0,ifrm_max*sizeof(int));
@ -139,7 +139,7 @@ void compila()
printf(translate(27)); printf(translate(27));
/* inicio_textos debe ser como mínimo 256 */ /* inicio_textos debe ser como mínimo 256 */
if(imem<256) imem=256; if(imem<256) imem=256;
itxt=inicio_textos=imem; itxt=inicio_textos=imem;
psintactico(); /* Para obtener "longitud_textos" */ psintactico(); /* Para obtener "longitud_textos" */
@ -184,7 +184,7 @@ void compila()
source=prog; source=prog;
inicializa_index(); /* ahora toca construir el indice de variables */ inicializa_index(); /* ahora toca construir el indice de variables */
dll_func2(); /* recarga sólo las dlls necesarias */ dll_func2(); /* recarga sólo las dlls necesarias */
if(debug) { if(debug) {
if((linf=tmpfile())==NULL) { if((linf=tmpfile())==NULL) {
@ -193,7 +193,7 @@ void compila()
} }
} }
/* inicio_textos debe ser como mínimo 256 */ /* inicio_textos debe ser como mínimo 256 */
if(imem<256) imem=256; if(imem<256) imem=256;
itxt=inicio_textos=imem; itxt=inicio_textos=imem;
imem+=longitud_textos; imem+=longitud_textos;
@ -204,7 +204,7 @@ void compila()
sintactico(); sintactico();
/* /*
* Ahora que estamos en el final del bytecode, añadiremos la rutina que carga * Ahora que estamos en el final del bytecode, añadiremos la rutina que carga
* las DLLs. Lo primero es guardar las cadenas con los nombres: * las DLLs. Lo primero es guardar las cadenas con los nombres:
*/ */
for(n=0;n<numdlls;n++) for(n=0;n<numdlls;n++)
@ -216,7 +216,7 @@ void compila()
test_buffer(&mem,&imem_max,imem); test_buffer(&mem,&imem_max,imem);
} }
/* Si estamos compilando en modo debug, añadimos tambien la debug.dll */ /* Si estamos compilando en modo debug, añadimos tambien la debug.dll */
if(debug) { if(debug) {
dlls[numdlls].mem_nombre=imem; dlls[numdlls].mem_nombre=imem;
memcpy(&mem[imem],"debug",6); memcpy(&mem[imem],"debug",6);
@ -225,8 +225,8 @@ void compila()
} }
/* /*
* Ahora estamos en la posición donde comienza la rutina, por lo que tenemos * Ahora estamos en la posición donde comienza la rutina, por lo que tenemos
* que guardar la posición actual en el offset que guardamos en salto_import * que guardar la posición actual en el offset que guardamos en salto_import
*/ */
mem[salto_import]=imem; mem[salto_import]=imem;
@ -240,7 +240,7 @@ void compila()
g2(ljmp,salto_import+1); g2(ljmp,salto_import+1);
/* Ya está !! :) */ /* Ya está !! :) */
/* Preparamos la cabecera del bytecode */ /* Preparamos la cabecera del bytecode */
mem[2]=imem; mem[2]=imem;
@ -249,26 +249,26 @@ void compila()
mem[5]=iloc_len-iloc; mem[5]=iloc_len-iloc;
mem[6]=iloc; mem[6]=iloc;
mem[7]=0; /* Antes imem+iloc (inicio textos), ahora no se utiliza */ mem[7]=0; /* Antes imem+iloc (inicio textos), ahora no se utiliza */
mem[8]=imem+iloc; /* Número de elementos ocupados en mem[] */ mem[8]=imem+iloc; /* Número de elementos ocupados en mem[] */
/* /*
* mem[0] se usa para almacenar flags para el ejecutable. En el caso de DIV 2, * mem[0] se usa para almacenar flags para el ejecutable. En el caso de DIV 2,
* éstas eran: * éstas eran:
* +1 = El programa es un setup de sonido (setup_program) * +1 = El programa es un setup de sonido (setup_program)
* +128 = El programa invoca al trazador nada más ejecutarse (compilado con F12) * +128 = El programa invoca al trazador nada más ejecutarse (compilado con F12)
* +512 = Se ignoran los errores de ejecución (ignore_errors) * +512 = Se ignoran los errores de ejecución (ignore_errors)
* +1024= Modo DEMO (mensaje en el centro de la pantalla parpadeando diciendo * +1024= Modo DEMO (mensaje en el centro de la pantalla parpadeando diciendo
* "VERSIÓN DE DEMOSTRACIÓN") * "VERSIÓN DE DEMOSTRACIÓN")
*/ */
/* /*
* nosotros usaremos las siguientes: * nosotros usaremos las siguientes:
* +16 = El exe lleva incluidas las DLL's * +16 = El exe lleva incluidas las DLL's
* A ver como lo hacemos en Linux.. 1) con temporales o 2) hurgando en el codigo * A ver como lo hacemos en Linux.. 1) con temporales o 2) hurgando en el codigo
* de dlopen y demas y haciendonos una pekeña lib (esto es mas aconsejable) * de dlopen y demas y haciendonos una pekeña lib (esto es mas aconsejable)
* +32 = El exe lleva incluido el PAK * +32 = El exe lleva incluido el PAK
* +64 = Compilado en modo debug * +64 = Compilado en modo debug
* +128 = Igual que en DIV2, el programa invoca al trazador nada más ejecutarse (se * +128 = Igual que en DIV2, el programa invoca al trazador nada más ejecutarse (se
* ha usado la orden "trazar programa" en el IDE) * ha usado la orden "trazar programa" en el IDE)
* +512 = ignore_errors, igual que en DIV2 * +512 = ignore_errors, igual que en DIV2
*/ */
@ -355,7 +355,7 @@ void compila()
free(q); free(p); free(q); free(p);
m=l*2; m=l*2;
q=(byte*)e_malloc(m); q=(byte*)e_malloc(m);
if(!compress(q,&m,varptr,l)) { /* nºvariables,longitud_datos_descomp,longitud_datos_comp,datos_comp... */ if(!compress(q,&m,varptr,l)) { /* nºvariables,longitud_datos_descomp,longitud_datos_comp,datos_comp... */
fwrite(&num_indexed_vars,1,4,f); fwrite(&num_indexed_vars,1,4,f);
fwrite(&l,1,4,f); fwrite(&l,1,4,f);
fwrite(&m,1,sizeof(unsigned long),f); fwrite(&m,1,sizeof(unsigned long),f);
@ -371,7 +371,7 @@ void compila()
fwrite(&start_lin,1,4,f); fwrite(&start_lin,1,4,f);
fwrite(&start_dbg,1,4,f); fwrite(&start_dbg,1,4,f);
} }
fwrite(&stub_size,1,4,f); /* Ultimos 4 bytes siempre son el tamaño del stub */ fwrite(&stub_size,1,4,f); /* Ultimos 4 bytes siempre son el tamaño del stub */
fclose(f); fclose(f);
} else { } else {
free(q); free(q);
@ -409,7 +409,7 @@ void compila()
/* /*
* void test_buffer(int **bufer, int *maximo, int n); * void test_buffer(int **bufer, int *maximo, int n);
* Comprueba los límites de un buffer de generación de código * Comprueba los límites de un buffer de generación de código
*/ */
void test_buffer(int **buffer,int *maximo,int n) void test_buffer(int **buffer,int *maximo,int n)
{ {
@ -566,17 +566,17 @@ void sentencia(void) {
if (pieza==p_step) { if (pieza==p_step) {
lexico(); lexico();
step=constante(); step=constante();
if (from<to && step<=0) error(4,62); /* el valor step no es válido */ if (from<to && step<=0) error(4,62); /* el valor step no es válido */
if (from>to && step>=0) error(4,62); if (from>to && step>=0) error(4,62);
} else { } else {
if (from<to) step=1; else step=-1; if (from<to) step=1; else step=-1;
} }
g2(lcar,from); /* Asignación del from */ g2(lcar,from); /* Asignación del from */
g1(lasi); g1(lasp); g1(lasi); g1(lasp);
im1=imem; /* Inicio del bucle */ im1=imem; /* Inicio del bucle */
if (dir>=0) { /* Comparación de la condición de permanencia */ if (dir>=0) { /* Comparación de la condición de permanencia */
g2(lcar,dir); g2(lcar,dir);
} else { } else {
g2(lcar,-dir); g1(laid); g2(lcar,-dir); g1(laid);
@ -593,7 +593,7 @@ void sentencia(void) {
if (pieza!=p_end) error(0,57); inicio_sentencia(); /* esperando END */ if (pieza!=p_end) error(0,57); inicio_sentencia(); /* esperando END */
lexico(); lexico();
im3=imem; /* Posición del continue */ im3=imem; /* Posición del continue */
if (dir>=0) { /* Incremento y vuelta al inicio del bucle */ if (dir>=0) { /* Incremento y vuelta al inicio del bucle */
g2(lcar,dir); g2(lcar,dir);
@ -787,7 +787,7 @@ void sentencia(void) {
/* /*
* Funciones de generación de código * Funciones de generación de código
*/ */
void g1(int op) { void g1(int op) {
@ -799,7 +799,7 @@ void g2(int op, int pa) {
} }
/* /*
* Optimización peephole de código intermedio EML * Optimización peephole de código intermedio EML
*/ */
void gen(int param, int op, int pa) void gen(int param, int op, int pa)
@ -958,7 +958,7 @@ void gen(int param, int op, int pa)
} else if (code[15].op==lcar){ } else if (code[15].op==lcar){
if (mem[imem-1]==1) remove_code(1); if (mem[imem-1]==1) remove_code(1);
else if (mem[imem-1]!=0) { else if (mem[imem-1]!=0) {
code[15].op=mem[imem-2]=lcardiv; /* Un cardiv nunca será "cardiv 0" */ code[15].op=mem[imem-2]=lcardiv; /* Un cardiv nunca será "cardiv 0" */
optimizado=1; optimizado=1;
} }
} break; } break;
@ -1054,7 +1054,7 @@ void grabar_sentencia(void)
} }
/* /*
* Agrega información de depurado al ejecutable * Agrega información de depurado al ejecutable
*/ */
void escribe_lin(FILE* f) void escribe_lin(FILE* f)
@ -1077,15 +1077,15 @@ void escribe_lin(FILE* f)
fclose(f); fclose(f);
errormem(); errormem();
} }
/* escribe el tamaño del codigo descomprimido */ /* escribe el tamaño del codigo descomprimido */
fwrite(&b,1,4,f); fwrite(&b,1,4,f);
/* escribe el tamaño del codigo comprimido */ /* escribe el tamaño del codigo comprimido */
fwrite(&l,1,4,f); fwrite(&l,1,4,f);
/* escribe el codigo comprimido */ /* escribe el codigo comprimido */
fwrite(progcomp,1,l,f); fwrite(progcomp,1,l,f);
free(progcomp); free(progcomp);
/* Escribe el tamaño del LIN */ /* Escribe el tamaño del LIN */
#ifdef _DEBUG #ifdef _DEBUG
printf("dbg: linsize: %d\n",linsize); printf("dbg: linsize: %d\n",linsize);
#endif #endif
@ -1094,7 +1094,7 @@ void escribe_lin(FILE* f)
ediv_lin=fopen("ediv.lin","w"); ediv_lin=fopen("ediv.lin","w");
fprintf(ediv_lin,"linsize: %d\n",linsize); fprintf(ediv_lin,"linsize: %d\n",linsize);
#endif #endif
/* Escribe la información LIN (offset de cada sentencia en el prg y en el bytecode) */ /* Escribe la información LIN (offset de cada sentencia en el prg y en el bytecode) */
fseek(linf,0,SEEK_SET); fseek(linf,0,SEEK_SET);
while((b=fgetc(linf))!=EOF) { while((b=fgetc(linf))!=EOF) {
fputc(b,f); fputc(b,f);
@ -1120,7 +1120,7 @@ void escribe_lin(FILE* f)
/* /*
* Escribe información sobre los objetos * Escribe información sobre los objetos
*/ */
void escribe_dbg(FILE* f) void escribe_dbg(FILE* f)
{ {
@ -1135,7 +1135,7 @@ void escribe_dbg(FILE* f)
int v0,v1,v2,v3,v4,v5; int v0,v1,v2,v3,v4,v5;
} ob; } ob;
/* Cabecera de sección DBG */ /* Cabecera de sección DBG */
fwrite(&num_obj,4,1,f); fwrite(&num_obj,4,1,f);
fwrite(&num_obj_predefinidos,4,1,f); fwrite(&num_obj_predefinidos,4,1,f);
n=(int)&obj[0]; n=(int)&obj[0];
@ -1157,11 +1157,11 @@ void escribe_dbg(FILE* f)
ob.v5=(int)obj[n].sglo.items3; ob.v5=(int)obj[n].sglo.items3;
if (obj[n].tipo==tpsgl || obj[n].tipo==tpslo) ob.v1=(ob.v1-(int)&obj[0])/sizeof(struct objeto); if (obj[n].tipo==tpsgl || obj[n].tipo==tpslo) ob.v1=(ob.v1-(int)&obj[0])/sizeof(struct objeto);
/* OJO ! que no se pueden añadir objetos aquí (ver uso de &obj[0] y sizeof(struct objeto)) */ /* OJO ! que no se pueden añadir objetos aquí (ver uso de &obj[0] y sizeof(struct objeto)) */
fwrite(&ob,sizeof(ob),1,f); fwrite(&ob,sizeof(ob),1,f);
} }
/* Escribe el tamaño del vector de nombres */ /* Escribe el tamaño del vector de nombres */
n=(int)ivnom.b-(int)vnom; n=(int)ivnom.b-(int)vnom;
fwrite(&n,4,1,f); fwrite(&n,4,1,f);

View file

@ -46,14 +46,14 @@ int iloc_len; /* final de las variables locales incluyendo las privadas */
/* /*
* mem[] vector de memoria destino * mem[] vector de memoria destino
* imem puntero para la generación de datos y código * imem puntero para la generación de datos y código
* imem_max fin de la memoria destino (indice máximo de mem[]) * imem_max fin de la memoria destino (indice máximo de mem[])
* iloc inicio en mem[] de las variables locales (inicializadas) * iloc inicio en mem[] de las variables locales (inicializadas)
* iloc_len longitud de las variables locales * iloc_len longitud de las variables locales
*/ */
/* /*
* Inserción en la tabla de expresiones, acceso a variables: * Inserción en la tabla de expresiones, acceso a variables:
* *
* vglo &vglo ptr * vglo &vglo ptr
* tglo[_exp] &tglo <_exp> add rng ptr * tglo[_exp] &tglo <_exp> add rng ptr
@ -84,43 +84,43 @@ int case_sensitive;
/* /*
* MNEMÓNICOS BYTECODE EML * MNEMÓNICOS BYTECODE EML
*/ */
#define lnop 0 /* * No operación */ #define lnop 0 /* * No operación */
#define lcar 1 /* valor Carga una constante en pila */ #define lcar 1 /* valor Carga una constante en pila */
#define lasi 2 /* Saca valor, offset y mete el valor en [offset] */ #define lasi 2 /* Saca valor, offset y mete el valor en [offset] */
#define lori 3 /* Or lógico */ #define lori 3 /* Or lógico */
#define lxor 4 /* Xor, or exclusivo */ #define lxor 4 /* Xor, or exclusivo */
#define land 5 /* And lógico, operador sobre condiciones */ #define land 5 /* And lógico, operador sobre condiciones */
#define ligu 6 /* Igual, operador logico de comparación */ #define ligu 6 /* Igual, operador logico de comparación */
#define ldis 7 /* Distinto, true si los 2 valores son diferentes */ #define ldis 7 /* Distinto, true si los 2 valores son diferentes */
#define lmay 8 /* Mayor, comparación con signo */ #define lmay 8 /* Mayor, comparación con signo */
#define lmen 9 /* Menor, idem */ #define lmen 9 /* Menor, idem */
#define lmei 10 /* Menor o igual */ #define lmei 10 /* Menor o igual */
#define lmai 11 /* Mayor o igual */ #define lmai 11 /* Mayor o igual */
#define ladd 12 /* Suma dos constantes */ #define ladd 12 /* Suma dos constantes */
#define lsub 13 /* Resta, operación binaria */ #define lsub 13 /* Resta, operación binaria */
#define lmul 14 /* Multiplicación */ #define lmul 14 /* Multiplicación */
#define ldiv 15 /* División de enteros */ #define ldiv 15 /* División de enteros */
#define lmod 16 /* Módulo, resto de la división */ #define lmod 16 /* Módulo, resto de la división */
#define lneg 17 /* Negación, cambia de signo una constante */ #define lneg 17 /* Negación, cambia de signo una constante */
#define lptr 18 /* Pointer, saca offset y mete [offset] */ #define lptr 18 /* Pointer, saca offset y mete [offset] */
#define lnot 19 /* Negación binaria, bit a bit */ #define lnot 19 /* Negación binaria, bit a bit */
#define laid 20 /* Suma id a la constante de la pila */ #define laid 20 /* Suma id a la constante de la pila */
#define lcid 21 /* Carga id en la pila */ #define lcid 21 /* Carga id en la pila */
#define lrng 22 /* rango Realiza una comparación de rango */ #define lrng 22 /* rango Realiza una comparación de rango */
#define ljmp 23 /* offset Salta a una dirección de mem[] */ #define ljmp 23 /* offset Salta a una dirección de mem[] */
#define ljpf 24 /* offset Salta si un valor es falso a una dirección */ #define ljpf 24 /* offset Salta si un valor es falso a una dirección */
#define lfun 25 /* código Llamada a un proceso interno, ej. signal() (obsoleto, ver lext) */ #define lfun 25 /* código Llamada a un proceso interno, ej. signal() (obsoleto, ver lext) */
#define lcal 26 /* offset Crea un nuevo proceso en el programa */ #define lcal 26 /* offset Crea un nuevo proceso en el programa */
#define lret 27 /* Auto-eliminación del proceso */ #define lret 27 /* Auto-eliminación del proceso */
#define lasp 28 /* Desecha un valor apilado */ #define lasp 28 /* Desecha un valor apilado */
#define lfrm 29 /* Detiene por este frame la ejecución del proceso */ #define lfrm 29 /* Detiene por este frame la ejecución del proceso */
#define lcbp 30 /* num_par Inicializa el puntero a los parámetros locales */ #define lcbp 30 /* num_par Inicializa el puntero a los parámetros locales */
#define lcpa 31 /* Saca offset, lee parámetro [offset] y bp++ */ #define lcpa 31 /* Saca offset, lee parámetro [offset] y bp++ */
#define ltyp 32 /* bloque Define el tipo de proceso actual (colisiones) */ #define ltyp 32 /* bloque Define el tipo de proceso actual (colisiones) */
#define lpri 33 /* offset Salta a la dirección, y carga var. privadas */ #define lpri 33 /* offset Salta a la dirección, y carga var. privadas */
#define lcse 34 /* offset Si switch <> expresión, salta al offset */ #define lcse 34 /* offset Si switch <> expresión, salta al offset */
#define lcsr 35 /* offset Si switch no esta en el rango, salta al offset */ #define lcsr 35 /* offset Si switch no esta en el rango, salta al offset */
#define lshr 36 /* Rotacion a la derecha (modo C, >>) */ #define lshr 36 /* Rotacion a la derecha (modo C, >>) */
#define lshl 37 /* Rotacion a la izquierda (modo C, <<) */ #define lshl 37 /* Rotacion a la izquierda (modo C, <<) */
@ -128,26 +128,26 @@ int case_sensitive;
#define lpti 39 /* Pointer e incremento */ #define lpti 39 /* Pointer e incremento */
#define ldpt 40 /* Decremento y pointer */ #define ldpt 40 /* Decremento y pointer */
#define lptd 41 /* Pointer y decremento */ #define lptd 41 /* Pointer y decremento */
#define lada 42 /* Add-asignación */ #define lada 42 /* Add-asignación */
#define lsua 43 /* Sub-asignación */ #define lsua 43 /* Sub-asignación */
#define lmua 44 /* Mul-asignación */ #define lmua 44 /* Mul-asignación */
#define ldia 45 /* Div-asignación */ #define ldia 45 /* Div-asignación */
#define lmoa 46 /* Mod-asignación */ #define lmoa 46 /* Mod-asignación */
#define lana 47 /* And-asignación */ #define lana 47 /* And-asignación */
#define lora 48 /* Or-asignación */ #define lora 48 /* Or-asignación */
#define lxoa 49 /* Xor-asignación */ #define lxoa 49 /* Xor-asignación */
#define lsra 50 /* Shr-asignación */ #define lsra 50 /* Shr-asignación */
#define lsla 51 /* Shl-asignación */ #define lsla 51 /* Shl-asignación */
#define lpar 52 /* num_par_pri Define el número de parámetros privados */ #define lpar 52 /* num_par_pri Define el número de parámetros privados */
#define lrtf 53 /* Auto-eliminación del proceso, devuelve un valor */ #define lrtf 53 /* Auto-eliminación del proceso, devuelve un valor */
#define lclo 54 /* offset Crea un clon del proceso actual */ #define lclo 54 /* offset Crea un clon del proceso actual */
#define lfrf 55 /* Pseudo-Frame (frame a un porcentaje) */ #define lfrf 55 /* Pseudo-Frame (frame a un porcentaje) */
#define limp 56 /* offset text Importa una DLL externa */ #define limp 56 /* offset text Importa una DLL externa */
#define lext 57 /* código Llama a una función externa */ #define lext 57 /* código Llama a una función externa */
#define lchk 58 /* Comprueba la validez de un identificador */ #define lchk 58 /* Comprueba la validez de un identificador */
#define ldbg 59 /* Invoca al debugger */ #define ldbg 59 /* Invoca al debugger */
/* Instrucciones añadidas para la optimización (DIV 2.0) */ /* Instrucciones añadidas para la optimización (DIV 2.0) */
#define lcar2 60 /* car + car */ #define lcar2 60 /* car + car */
#define lcar3 61 /* car + car + car */ #define lcar3 61 /* car + car + car */
#define lcar4 62 /* car + car + car + car */ #define lcar4 62 /* car + car + car + car */
@ -167,31 +167,31 @@ int case_sensitive;
#define lcarsub 76 /* car + sub */ #define lcarsub 76 /* car + sub */
#define lcardiv 77 /* car + div */ #define lcardiv 77 /* car + div */
/* Instrucciones añadidas para el manejo de caracteres */ /* Instrucciones añadidas para el manejo de caracteres */
#define lptrchr 78 /* Pointer, saca (index, offset) y mete [offset+byte index] */ #define lptrchr 78 /* Pointer, saca (index, offset) y mete [offset+byte index] */
#define lasichr 79 /* Saca (valor, index, offset) y mete el valor en [offset+byte index] */ #define lasichr 79 /* Saca (valor, index, offset) y mete el valor en [offset+byte index] */
#define liptchr 80 /* Incremento y pointer */ #define liptchr 80 /* Incremento y pointer */
#define lptichr 81 /* Pointer e incremento */ #define lptichr 81 /* Pointer e incremento */
#define ldptchr 82 /* Decremento y pointer */ #define ldptchr 82 /* Decremento y pointer */
#define lptdchr 83 /* Pointer y decremento */ #define lptdchr 83 /* Pointer y decremento */
#define ladachr 84 /* Add-asignación */ #define ladachr 84 /* Add-asignación */
#define lsuachr 85 /* Sub-asignación */ #define lsuachr 85 /* Sub-asignación */
#define lmuachr 86 /* Mul-asignación */ #define lmuachr 86 /* Mul-asignación */
#define ldiachr 87 /* Div-asignación */ #define ldiachr 87 /* Div-asignación */
#define lmoachr 88 /* Mod-asignación */ #define lmoachr 88 /* Mod-asignación */
#define lanachr 89 /* And-asignación */ #define lanachr 89 /* And-asignación */
#define lorachr 90 /* Or-asignación */ #define lorachr 90 /* Or-asignación */
#define lxoachr 91 /* Xor-asignación */ #define lxoachr 91 /* Xor-asignación */
#define lsrachr 92 /* Shr-asignación */ #define lsrachr 92 /* Shr-asignación */
#define lslachr 93 /* Shl-asignación */ #define lslachr 93 /* Shl-asignación */
#define lcpachr 94 /* Saca offset, lee parámetro [offset] y bp++ */ #define lcpachr 94 /* Saca offset, lee parámetro [offset] y bp++ */
/* Instrucciones añadidas para el manejo de cadenas */ /* Instrucciones añadidas para el manejo de cadenas */
#define lstrcpy 95 /* Saca si, di, y hace strcpy(mem[di],[si]) (deja di en pila) */ #define lstrcpy 95 /* Saca si, di, y hace strcpy(mem[di],[si]) (deja di en pila) */
#define lstrfix 96 /* Amplia una cadena antes de meter un char en ella */ #define lstrfix 96 /* Amplia una cadena antes de meter un char en ella */
#define lstrcat 97 /* Concatena dos cadenas (opera como strcpy) */ #define lstrcat 97 /* Concatena dos cadenas (opera como strcpy) */
#define lstradd 98 /* Suma dos strings "en el aire" y deja en pila el puntero al aire */ #define lstradd 98 /* Suma dos strings "en el aire" y deja en pila el puntero al aire */
#define lstrdec 99 /* Añade o quita caracteres a una cadena */ #define lstrdec 99 /* Añade o quita caracteres a una cadena */
#define lstrsub 100 /* Quita caracteres a una cadena (-=) */ #define lstrsub 100 /* Quita caracteres a una cadena (-=) */
#define lstrlen 101 /* Sustituye una cadena por su longitud */ #define lstrlen 101 /* Sustituye una cadena por su longitud */
#define lstrigu 102 /* Comparacion de igualdad de dos cadenas */ #define lstrigu 102 /* Comparacion de igualdad de dos cadenas */
@ -200,39 +200,39 @@ int case_sensitive;
#define lstrmen 105 /* Cadena menor */ #define lstrmen 105 /* Cadena menor */
#define lstrmei 106 /* Cadena mayor o igual */ #define lstrmei 106 /* Cadena mayor o igual */
#define lstrmai 107 /* Cadena menor o igual */ #define lstrmai 107 /* Cadena menor o igual */
#define lcpastr 108 /* Carga un parámetro en una cadena */ #define lcpastr 108 /* Carga un parámetro en una cadena */
/* Instrucciones añadidas para el manejo de Words */ /* Instrucciones añadidas para el manejo de Words */
#define lptrwor 109 /* Pointer, saca (index, offset) y mete [offset+byte index] */ #define lptrwor 109 /* Pointer, saca (index, offset) y mete [offset+byte index] */
#define lasiwor 110 /* Saca (valor, index, offset) y mete el valor en [offset+byte index] */ #define lasiwor 110 /* Saca (valor, index, offset) y mete el valor en [offset+byte index] */
#define liptwor 111 /* Incremento y pointer */ #define liptwor 111 /* Incremento y pointer */
#define lptiwor 112 /* Pointer e incremento */ #define lptiwor 112 /* Pointer e incremento */
#define ldptwor 113 /* Decremento y pointer */ #define ldptwor 113 /* Decremento y pointer */
#define lptdwor 114 /* Pointer y decremento */ #define lptdwor 114 /* Pointer y decremento */
#define ladawor 115 /* Add-asignación */ #define ladawor 115 /* Add-asignación */
#define lsuawor 116 /* Sub-asignación */ #define lsuawor 116 /* Sub-asignación */
#define lmuawor 117 /* Mul-asignación */ #define lmuawor 117 /* Mul-asignación */
#define ldiawor 118 /* Div-asignación */ #define ldiawor 118 /* Div-asignación */
#define lmoawor 119 /* Mod-asignación */ #define lmoawor 119 /* Mod-asignación */
#define lanawor 120 /* And-asignación */ #define lanawor 120 /* And-asignación */
#define lorawor 121 /* Or-asignación */ #define lorawor 121 /* Or-asignación */
#define lxoawor 122 /* Xor-asignación */ #define lxoawor 122 /* Xor-asignación */
#define lsrawor 123 /* Shr-asignación */ #define lsrawor 123 /* Shr-asignación */
#define lslawor 124 /* Shl-asignación */ #define lslawor 124 /* Shl-asignación */
#define lcpawor 125 /* Saca offset, lee parámetro [offset] y bp++ */ #define lcpawor 125 /* Saca offset, lee parámetro [offset] y bp++ */
/* Miscelánea */ /* Miscelánea */
#define lnul 126 /* Comprueba que un puntero no sea NULL */ #define lnul 126 /* Comprueba que un puntero no sea NULL */
/* Instrucciones añadidas en eDIV */ /* Instrucciones añadidas en eDIV */
#define lextasp 127 /* Combinación de ext y asp, sustituye a funasp */ #define lextasp 127 /* Combinación de ext y asp, sustituye a funasp */
struct { /* Peephole, "mirilla" para el optimizador */ struct { /* Peephole, "mirilla" para el optimizador */
int dir; /* Dirección */ int dir; /* Dirección */
int param; /* Indica si ese opcode tiene parámetro */ int param; /* Indica si ese opcode tiene parámetro */
int op; /* Opcode */ int op; /* Opcode */
} code[16]; /* En code[15] debe quedar siempre la última instrucción generada */ } code[16]; /* En code[15] debe quedar siempre la última instrucción generada */
/* Informacion para temporal de debug (posicion en mem y fuente de cada sentencia) */ /* Informacion para temporal de debug (posicion en mem y fuente de cada sentencia) */
FILE * linf; /* En este temporal guardamos la info y luego lo agregamos al exe */ FILE * linf; /* En este temporal guardamos la info y luego lo agregamos al exe */

View file

@ -117,9 +117,9 @@ void lee_ediv_cfg(char* ediv_cfg)
break; break;
case 3: /* _case_sensitive */ case 3: /* _case_sensitive */
lexico(); lexico();
memcpy(lower+129,"üéâäàåçêëèïîìäåéææôöòûùÿöü¢£¥áíóú",35); memcpy(lower+129,"üéâäàåçêëèïîìäåéææôöòûùÿöü¢£¥áíóú",35);
memcpy(lower+'A',"ABCDEFGHIJKLMNOPQRSTUVWXYZ",26); memcpy(lower+'A',"ABCDEFGHIJKLMNOPQRSTUVWXYZ",26);
lower['Ñ']='Ñ'; lower['Ñ']='Ñ';
break; break;
case 4: /* _ignore_errors */ case 4: /* _ignore_errors */
lexico(); lexico();

View file

@ -34,7 +34,7 @@ void muestra_motd();
void conecta(char *servidor, char *archivo); void conecta(char *servidor, char *archivo);
#else #else
# include <dlfcn.h> /* ¿será igual en BeOS? */ # include <dlfcn.h> /* ¿será igual en BeOS? */
# include <dirent.h> # include <dirent.h>
#endif #endif
@ -138,7 +138,7 @@ int main(int argc, char *argv[])
} }
#endif #endif
else { else {
printf(translate(13),argv[i]); /* parámetro erróneo */ printf(translate(13),argv[i]); /* parámetro erróneo */
exit(1); exit(1);
} }
} }
@ -180,7 +180,7 @@ int main(int argc, char *argv[])
exit(0); exit(0);
#endif #endif
default: default:
printf(translate(15),argv[i][j]); /* parámetro erróneo */ printf(translate(15),argv[i][j]); /* parámetro erróneo */
exit(1); exit(1);
} }
j++; j++;
@ -197,7 +197,7 @@ int main(int argc, char *argv[])
hayprog=2; hayprog=2;
break; break;
default: default:
printf(translate(13),argv[i]); /* parámetro erróneo */ printf(translate(13),argv[i]); /* parámetro erróneo */
exit(1); exit(1);
} }
} }
@ -341,7 +341,7 @@ int main(int argc, char *argv[])
/* /*
* void *e_malloc(size_t size) * void *e_malloc(size_t size)
* Idéntico a malloc, pero con errormsg automático * Idéntico a malloc, pero con errormsg automático
* *
* Retorna: * Retorna:
* El numero de bytes de memoria alojados o sale si no se puede reservar la memoria. * El numero de bytes de memoria alojados o sale si no se puede reservar la memoria.
@ -374,7 +374,7 @@ void errormem()
/* /*
* Gestión de errores * Gestión de errores
*/ */
int _le,_t; int _le,_t;
byte *_ie; byte *_ie;
@ -431,7 +431,7 @@ void error(word tipo, word num, ...)
#ifdef MULTI_ERROR #ifdef MULTI_ERROR
if(n_errors>20) if(n_errors>20)
printf("Demasiados errores. Compilación interrumpida.\n"); printf("Demasiados errores. Compilación interrumpida.\n");
if(num==1 || num==2 || num==6 || n_errors>20) { if(num==1 || num==2 || num==6 || n_errors>20) {
printf("edivc: Finalizado - %d advertencias, %d errores\n",n_warnings,n_errors); printf("edivc: Finalizado - %d advertencias, %d errores\n",n_warnings,n_errors);

View file

@ -38,11 +38,11 @@ struct objeto * ob2;
int creaobj; int creaobj;
int numparams; int numparams;
byte decl_struct=0; /* 1 si se está declarando un struct */ byte decl_struct=0; /* 1 si se está declarando un struct */
byte struct_reserved=0; /* 1 si se está declarando la estructura reserved */ byte struct_reserved=0; /* 1 si se está declarando la estructura reserved */
/* Errores específicos en la ejecución de una DLL */ /* Errores específicos en la ejecución de una DLL */
void dll_error(int error, ...) void dll_error(int error, ...)
{ {
va_list opparam; va_list opparam;

View file

@ -86,7 +86,7 @@ void init_rnd_coder(int n, char * clave)
} }
/* /*
* Funci¢n de encriptaci¢n/desencriptaci¢n * Funci¢n de encriptaci¢n/desencriptaci¢n
*/ */
void coder(byte * ptr, int len, char * clave) void coder(byte * ptr, int len, char * clave)

View file

@ -29,7 +29,7 @@ int tipo_factor=0; /* idem */
/* /*
* Analisis de una condición (genera código para calcularla) * Analisis de una condición (genera código para calcularla)
*/ */
void condicion(void) { void condicion(void) {
@ -58,7 +58,7 @@ void con0() { /* Operadores con asociatividad de derecha a izquierda <- */
con1(); con1();
if ((p=pieza)==p_asig || (p>=p_add_asig && p<=p_shl_asig)) { if ((p=pieza)==p_asig || (p>=p_add_asig && p<=p_shl_asig)) {
error(0,69); /* asignación dentro de una condición */ error(0,69); /* asignación dentro de una condición */
} }
} }
@ -105,7 +105,7 @@ void con2() {
/* /*
* Analisis de una expresión (genera código para calcularla) * Analisis de una expresión (genera código para calcularla)
*/ */
void expresion(void) { void expresion(void) {
byte * __ierror, * _ierror; byte * __ierror, * _ierror;
@ -120,7 +120,7 @@ void expresion(void) {
} }
/* expresiones de parámetros */ /* expresiones de parámetros */
void expresion_cpa(void) { void expresion_cpa(void) {
byte * __ierror, * _ierror; byte * __ierror, * _ierror;
int _linea; int _linea;
@ -143,7 +143,7 @@ void expresion_cpa(void) {
g1(lcpawor); g1(lcpawor);
} else if ((*(_exp-1)).tipo==eoper && (*(_exp-1)).token==p_string) { } else if ((*(_exp-1)).tipo==eoper && (*(_exp-1)).token==p_string) {
_exp--; generar_expresion(); g1(lcpastr); _exp--; generar_expresion(); g1(lcpastr);
} else error(4,72); /* parámetro no válido */ } else error(4,72); /* parámetro no válido */
linea=_linea; ierror=__ierror; linea=_linea; ierror=__ierror;
} }
@ -259,7 +259,7 @@ void generar_expresion(void) {
case p_pointerbyte: g1(lptrchr); break; case p_pointerbyte: g1(lptrchr); break;
case p_string: break; /* Es como un p_pointer nulo, que no se hace */ case p_string: break; /* Es como un p_pointer nulo, que no se hace */
default: error(4,11); /* expresión incorrecta */ default: error(4,11); /* expresión incorrecta */
} break; } break;
default: error(4,11); default: error(4,11);
} }
@ -268,7 +268,7 @@ void generar_expresion(void) {
/* /*
* Analisis de una expresión constante * Analisis de una expresión constante
* No se procesan valores locales ni llamadas a otros procesos * No se procesan valores locales ni llamadas a otros procesos
*/ */
int constante (void) { int constante (void) {
@ -307,7 +307,7 @@ int constante (void) {
case p_not: pila[i]^=-1; break; case p_not: pila[i]^=-1; break;
case p_shr: pila[i-1]>>=pila[i]; i--; break; case p_shr: pila[i-1]>>=pila[i]; i--; break;
case p_shl: pila[i-1]<<=pila[i]; i--; break; case p_shl: pila[i-1]<<=pila[i]; i--; break;
default: error(4,54); /* se esperaba una expresión constante */ default: error(4,54); /* se esperaba una expresión constante */
} break; } break;
default: error(4,54); default: error(4,54);
}while (++e!=_exp); }while (++e!=_exp);
@ -316,7 +316,7 @@ int constante (void) {
} }
/* /*
* Análisis de una expresión a *tabexp * Análisis de una expresión a *tabexp
*/ */
void exp00(int tipo_exp) { void exp00(int tipo_exp) {
@ -367,8 +367,8 @@ void exp0() { /* Operadores con asociatividad de derecha a izquierda <- */
exp00(-1); exp00(-1);
(*_exp).tipo=eoper; (*_exp++).token=p_strsub; (*_exp).tipo=eoper; (*_exp++).token=p_strsub;
(*_exp).tipo=eoper; (*_exp++).token=p_string; /* Sigue habiendo una cadena en la pila */ (*_exp).tipo=eoper; (*_exp++).token=p_string; /* Sigue habiendo una cadena en la pila */
} else error(0,12); /* asignación a cadena incorrecta */ } else error(0,12); /* asignación a cadena incorrecta */
} else error(0,13); /* asignación incorrecta */ } else error(0,13); /* asignación incorrecta */
} tipo_factor=0; } tipo_factor=0;
} }
@ -390,7 +390,7 @@ void exp2() {
tf=tipo_factor; tf=tipo_factor;
lexico(); exp3(); lexico(); exp3();
if (tf==2 || tipo_factor==2) { if (tf==2 || tipo_factor==2) {
/* OJO, p==q no se hará el strcmp() si son dos punteros a cadenas */ /* OJO, p==q no se hará el strcmp() si son dos punteros a cadenas */
p+=p_strigu-p_igu; p+=p_strigu-p_igu;
(*_exp).tipo=eoper; (*_exp++).token=p; (*_exp).tipo=eoper; (*_exp++).token=p;
tipo_factor=0; tipo_factor=0;
@ -468,7 +468,7 @@ void unario() {
if ((*(_exp-2)).tipo==econs && (*(_exp-2)).valor==0) _exp-=2; if ((*(_exp-2)).tipo==econs && (*(_exp-2)).valor==0) _exp-=2;
else error(4,14); /* &words[<exp>] ??? */ else error(4,14); /* &words[<exp>] ??? */
} else if ((*(_exp-1)).tipo==eoper && (*(_exp-1)).token==p_string) { } else if ((*(_exp-1)).tipo==eoper && (*(_exp-1)).token==p_string) {
/* &cadena ð cadena */ /* &cadena ð cadena */
} else error(4,15); /* no se puede calcular el offset */ } else error(4,15); /* no se puede calcular el offset */
} else if (p==p_inc || p==p_dec) { } else if (p==p_inc || p==p_dec) {
if ((*(_exp-1)).tipo==eoper && (*(_exp-1)).token==p_pointer) { if ((*(_exp-1)).tipo==eoper && (*(_exp-1)).token==p_pointer) {
@ -492,11 +492,11 @@ void unario() {
} else error(4,16); /* no se puede realizar el incremento */ } else error(4,16); /* no se puede realizar el incremento */
} else if (p==p_pointer) { } else if (p==p_pointer) {
if ((*(_exp-1)).tipo==eoper && (*(_exp-1)).token==p_pointerchar) { if ((*(_exp-1)).tipo==eoper && (*(_exp-1)).token==p_pointerchar) {
/* *cadena[0] ð cadena[0] */ /* *cadena[0] ð cadena[0] */
} else if ((*(_exp-1)).tipo==eoper && (*(_exp-1)).token==p_pointerbyte) { } else if ((*(_exp-1)).tipo==eoper && (*(_exp-1)).token==p_pointerbyte) {
/* *cadena[0] ð cadena[0] */ /* *cadena[0] ð cadena[0] */
} else if ((*(_exp-1)).tipo==eoper && (*(_exp-1)).token==p_pointerword) { } else if ((*(_exp-1)).tipo==eoper && (*(_exp-1)).token==p_pointerword) {
/* *cadena[0] ð cadena[0] */ /* *cadena[0] ð cadena[0] */
} else if ((*(_exp-1)).tipo==eoper && (*(_exp-1)).token==p_string) { } else if ((*(_exp-1)).tipo==eoper && (*(_exp-1)).token==p_string) {
/* *cadena == cadena */ /* *cadena == cadena */
} else { } else {
@ -521,8 +521,8 @@ void exp6() { /* Operador de acceso a variables o tablas locales ajenas */
/* /*
* OJO, el <p_punto> DEBE SER LO SEGUNDO que el <factor> * OJO, el <p_punto> DEBE SER LO SEGUNDO que el <factor>
* introduzca en la <expresión>, no quedan más cojones. * introduzca en la <expresión>, no quedan más cojones.
* (bueno, si, hacer aquí una búsqueda del p_punto entre e-1 y _exp ...) * (bueno, si, hacer aquí una búsqueda del p_punto entre e-1 y _exp ...)
*/ */
if ((*e).tipo==eoper && (*e).token==p_punto) if ((*e).tipo==eoper && (*e).token==p_punto)
@ -601,18 +601,18 @@ void factor(void) {
(*_exp++).valor=((*o).cglo.totalen+5)/4; break; (*_exp++).valor=((*o).cglo.totalen+5)/4; break;
case tvglo: case tvloc: case tvglo: case tvloc:
(*_exp++).valor=1; break; (*_exp++).valor=1; break;
default: error(0,24); /* no se puede calcular el tamaño */ default: error(0,24); /* no se puede calcular el tamaño */
} lexico(); if (pieza!=p_cerrar) error(3,18); lexico(); /* esperando ')' */ } lexico(); if (pieza!=p_cerrar) error(3,18); lexico(); /* esperando ')' */
break; break;
case p_struct: /* Se comprueba la declaración de un puntero a struct parámetro */ case p_struct: /* Se comprueba la declaración de un puntero a struct parámetro */
if (parametros<=0) { if (parametros<=0) {
if (error_25==25) error(1,25); else error(0,error_25); if (error_25==25) error(1,25); else error(0,error_25);
} else { } else {
lexico(); lexico();
if (pieza!=p_pointer) error(0,26); /* No se define el pointer así */ if (pieza!=p_pointer) error(0,26); /* No se define el pointer así */
lexico(); if (pieza!=p_id) error(1,27); obs=o; lexico(); if (pieza!=p_id) error(1,27); obs=o;
if ((*obs).tipo==tnone) error(0,28); /* No se define el pointer así */ if ((*obs).tipo==tnone) error(0,28); /* No se define el pointer así */
if ((*obs).tipo!=tsglo && (*obs).tipo!=tsloc) error(0,28); if ((*obs).tipo!=tsglo && (*obs).tipo!=tsloc) error(0,28);
lexico(); ob=o; lexico(); ob=o;
analiza_pointer_struct(tpslo,iloc++,obs); analiza_pointer_struct(tpslo,iloc++,obs);
@ -623,7 +623,7 @@ void factor(void) {
(*_exp).tipo=eoper; (*_exp++).token=p_pointer; (*_exp).tipo=eoper; (*_exp++).token=p_pointer;
} break; } break;
case p_string: /* Se comprueba la declaración de un string parámetro */ case p_string: /* Se comprueba la declaración de un string parámetro */
if (parametros<=0) { if (parametros<=0) {
if (error_25==25) error(1,25); else error(0,error_25); if (error_25==25) error(1,25); else error(0,error_25);
} else { } else {
@ -671,7 +671,7 @@ void factor(void) {
(*_exp).tipo=eoper; (*_exp++).token=p_string; (*_exp).tipo=eoper; (*_exp++).token=p_string;
} break; } break;
case p_byte: /* Se comprueba la declaración de un byte parámetro */ case p_byte: /* Se comprueba la declaración de un byte parámetro */
if (parametros<=0) { if (parametros<=0) {
if (error_25==25) error(1,25); else error(0,error_25); if (error_25==25) error(1,25); else error(0,error_25);
} else { } else {
@ -703,7 +703,7 @@ void factor(void) {
(*_exp).tipo=eoper; (*_exp++).token=p_pointerbyte; (*_exp).tipo=eoper; (*_exp++).token=p_pointerbyte;
} break; } break;
case p_word: /* Se comprueba la declaración de un word parámetro */ case p_word: /* Se comprueba la declaración de un word parámetro */
if (parametros<=0) { if (parametros<=0) {
if (error_25==25) error(1,25); else error(0,error_25); if (error_25==25) error(1,25); else error(0,error_25);
} else { } else {
@ -735,14 +735,14 @@ void factor(void) {
(*_exp).tipo=eoper; (*_exp++).token=p_pointerword; (*_exp).tipo=eoper; (*_exp++).token=p_pointerword;
} break; } break;
case p_int: /* Se comprueba la declaración de un int parámetro */ case p_int: /* Se comprueba la declaración de un int parámetro */
if (parametros<=0) { if (parametros<=0) {
if (error_25==25) error(1,25); else error(0,error_25); if (error_25==25) error(1,25); else error(0,error_25);
} else { } else {
lexico(); lexico();
if (pieza==p_pointer) { if (pieza==p_pointer) {
case p_pointer: /* Declaración de un puntero a int parámetro */ case p_pointer: /* Declaración de un puntero a int parámetro */
if (parametros<=0) { if (parametros<=0) {
if (error_25==25) error(1,25); else error(0,error_25); if (error_25==25) error(1,25); else error(0,error_25);
} parametros++; } parametros++;
@ -878,7 +878,7 @@ void factor(void) {
} }
if (pieza!=p_corce) error(3,19); /* esperando ']' */ if (pieza!=p_corce) error(3,19); /* esperando ']' */
lexico(); lexico();
} else { /* mi_byte ð mi_byte[0] */ } else { /* mi_byte ð mi_byte[0] */
(*_exp).tipo=econs; (*_exp++).valor=0; (*_exp).tipo=econs; (*_exp++).valor=0;
} (*_exp).tipo=eoper; (*_exp++).token=p_pointerbyte ; break; } (*_exp).tipo=eoper; (*_exp++).token=p_pointerbyte ; break;
@ -916,7 +916,7 @@ void factor(void) {
} }
if (pieza!=p_corce) error(3,19); /* esperando ']' */ if (pieza!=p_corce) error(3,19); /* esperando ']' */
lexico(); lexico();
} else { /* mi_byte ð mi_byte[0] */ } else { /* mi_byte ð mi_byte[0] */
(*_exp).tipo=econs; (*_exp++).valor=0; (*_exp).tipo=econs; (*_exp++).valor=0;
} (*_exp).tipo=eoper; (*_exp++).token=p_pointerword; break; } (*_exp).tipo=eoper; (*_exp++).token=p_pointerword; break;
@ -1074,7 +1074,7 @@ void factor(void) {
} }
if (pieza!=p_corce) error(3,19); /* esperando ']' */ if (pieza!=p_corce) error(3,19); /* esperando ']' */
lexico(); lexico();
} else { /* mi_byte ð mi_byte[0] */ } else { /* mi_byte ð mi_byte[0] */
(*_exp).tipo=econs; (*_exp++).valor=0; (*_exp).tipo=econs; (*_exp++).valor=0;
} (*_exp).tipo=eoper; (*_exp++).token=p_pointerbyte ; break; } (*_exp).tipo=eoper; (*_exp++).token=p_pointerbyte ; break;
@ -1115,7 +1115,7 @@ void factor(void) {
} }
if (pieza!=p_corce) error(3,19); /* esperando ']' */ if (pieza!=p_corce) error(3,19); /* esperando ']' */
lexico(); lexico();
} else { /* mi_byte ð mi_byte[0] */ } else { /* mi_byte ð mi_byte[0] */
(*_exp).tipo=econs; (*_exp++).valor=0; (*_exp).tipo=econs; (*_exp++).valor=0;
} (*_exp).tipo=eoper; (*_exp++).token=p_pointerword; break; } (*_exp).tipo=eoper; (*_exp++).token=p_pointerword; break;
@ -1197,7 +1197,7 @@ void factor(void) {
case tproc: case tproc:
ob=o; lexico(); if (pieza!=p_abrir) error(3,22); lexico(); /* esperando '(' */ ob=o; lexico(); if (pieza!=p_abrir) error(3,22); lexico(); /* esperando '(' */
p=0; while (pieza!=p_cerrar) { /* pðnum_par */ p=0; while (pieza!=p_cerrar) { /* pðnum_par */
p++; p++;
exp00(0); exp00(0);
if (pieza!=p_cerrar) { if (pieza!=p_cerrar) {
@ -1208,12 +1208,12 @@ void factor(void) {
if (p!=(*ob).proc.num_par) error(1,38); /* numero de parametros incorrecto */ if (p!=(*ob).proc.num_par) error(1,38); /* numero de parametros incorrecto */
(*_exp).tipo=ecall; (*_exp++).objeto=ob; lexico(); break; (*_exp).tipo=ecall; (*_exp++).objeto=ob; lexico(); break;
// POR HACER: implementar soporte para qsort (ver comentario aquí arriba) // POR HACER: implementar soporte para qsort (ver comentario aquí arriba)
case tfext: case tfext:
ob=o; lexico(); if (pieza!=p_abrir) error(3,22); /* esperando '(' */ ob=o; lexico(); if (pieza!=p_abrir) error(3,22); /* esperando '(' */
lexico(); lexico();
p=0; while (pieza!=p_cerrar) { /* pðnum_par */ p=0; while (pieza!=p_cerrar) { /* pðnum_par */
p++; p++;
exp00(0); exp00(0);
if (pieza!=p_cerrar) { if (pieza!=p_cerrar) {
@ -1357,7 +1357,7 @@ void factor_struct(void) {
(*_exp).tipo=eoper; (*_exp++).token=p_add; (*_exp).tipo=eoper; (*_exp++).token=p_add;
} }
if (pieza!=p_corce) error(3,19); lexico(); /* esperando ']' */ if (pieza!=p_corce) error(3,19); lexico(); /* esperando ']' */
} else { /* mi_byte ð mi_byte[0] */ } else { /* mi_byte ð mi_byte[0] */
(*_exp).tipo=econs; (*_exp++).valor=0; (*_exp).tipo=econs; (*_exp++).valor=0;
} struct_pointer=p_pointerbyte; break; } struct_pointer=p_pointerbyte; break;
@ -1394,7 +1394,7 @@ void factor_struct(void) {
(*_exp).tipo=eoper; (*_exp++).token=p_add; (*_exp).tipo=eoper; (*_exp++).token=p_add;
} }
if (pieza!=p_corce) error(3,19); lexico(); /* esperando ']' */ if (pieza!=p_corce) error(3,19); lexico(); /* esperando ']' */
} else { /* mi_byte ð mi_byte[0] */ } else { /* mi_byte ð mi_byte[0] */
(*_exp).tipo=econs; (*_exp++).valor=0; (*_exp).tipo=econs; (*_exp++).valor=0;
} struct_pointer=p_pointerword; break; } struct_pointer=p_pointerword; break;
@ -1540,7 +1540,7 @@ void factor_struct(void) {
(*_exp).tipo=eoper; (*_exp++).token=p_add; (*_exp).tipo=eoper; (*_exp++).token=p_add;
} }
if (pieza!=p_corce) error(3,19); lexico(); /* esperando ']' */ if (pieza!=p_corce) error(3,19); lexico(); /* esperando ']' */
} else { /* mi_byte ð mi_byte[0] */ } else { /* mi_byte ð mi_byte[0] */
(*_exp).tipo=econs; (*_exp++).valor=0; (*_exp).tipo=econs; (*_exp++).valor=0;
} struct_pointer=p_pointerbyte; break; } struct_pointer=p_pointerbyte; break;
@ -1577,7 +1577,7 @@ void factor_struct(void) {
(*_exp).tipo=eoper; (*_exp++).token=p_add; (*_exp).tipo=eoper; (*_exp++).token=p_add;
} }
if (pieza!=p_corce) error(3,19); lexico(); /* esperando ']' */ if (pieza!=p_corce) error(3,19); lexico(); /* esperando ']' */
} else { /* mi_byte ð mi_byte[0] */ } else { /* mi_byte ð mi_byte[0] */
(*_exp).tipo=econs; (*_exp++).valor=0; (*_exp).tipo=econs; (*_exp++).valor=0;
} struct_pointer=p_pointerword; break; } struct_pointer=p_pointerword; break;

View file

@ -21,12 +21,12 @@
#ifndef __EDIV_EXPRESION_H_ #ifndef __EDIV_EXPRESION_H_
#define __EDIV_EXPRESION_H_ #define __EDIV_EXPRESION_H_
#define max_exp 512 /* Máximo número de elementos en una expresión */ #define max_exp 512 /* Máximo número de elementos en una expresión */
#define long_pila 2048 /* Longitud de la pila en ejecución */ #define long_pila 2048 /* Longitud de la pila en ejecución */
int pila[long_pila+max_exp+64]; /* cálculo de expresiones (compilación y ejecución) */ int pila[long_pila+max_exp+64]; /* cálculo de expresiones (compilación y ejecución) */
/* Tabla de elementos en la evaluación de una expresión */ /* Tabla de elementos en la evaluación de una expresión */
struct exp_ele { struct exp_ele {
byte tipo; /* econs, eoper, erango, ewhoami, ecall */ byte tipo; /* econs, eoper, erango, ewhoami, ecall */
@ -39,14 +39,14 @@ struct exp_ele {
#define econs 0 /* Constante // Tipos de elementos en tabexp[] */ #define econs 0 /* Constante // Tipos de elementos en tabexp[] */
#define eoper 1 /* Operador */ #define eoper 1 /* Operador */
#define erango 2 /* Comprobación de rango */ #define erango 2 /* Comprobación de rango */
#define ewhoami 3 /* Identificador de proceso */ #define ewhoami 3 /* Identificador de proceso */
#define ecall 4 /* Creación de un proceso */ #define ecall 4 /* Creación de un proceso */
/*#define efunc 5*/ /* Llamada a una función interna */ /*#define efunc 5*/ /* Llamada a una función interna */
#define efext 6 /* Llamada a una función externa */ #define efext 6 /* Llamada a una función externa */
#define echeck 7 /* Comprobació¢n de validez de un identificador */ #define echeck 7 /* Comprobació¢n de validez de un identificador */
#define estring 8 /* Cadena de texto (su offset constante) */ #define estring 8 /* Cadena de texto (su offset constante) */
#define enull 9 /* Comprobaci¢n de NULL pointer */ #define enull 9 /* Comprobaci¢n de NULL pointer */
/* /*
* Prototipos * Prototipos

View file

@ -25,7 +25,7 @@
extern struct keywords { extern struct keywords {
char keyword[20]; /* Max. 20 caracteres por keyword */ char keyword[20]; /* Max. 20 caracteres por keyword */
char code; /* Code del keyword */ char code; /* Code del keyword */
void* hfuncion; /* Puntero a la función correspondiente (para no usar SWITCH) */ void* hfuncion; /* Puntero a la función correspondiente (para no usar SWITCH) */
} table[]; } table[];
extern struct prioridades { extern struct prioridades {
@ -38,8 +38,8 @@ extern struct prioridades {
/* CM = TIPO DE COMANDO */ /* CM = TIPO DE COMANDO */
#define CM_SEPARATE 0 /* Se pone entre linea y linea */ #define CM_SEPARATE 0 /* Se pone entre linea y linea */
#define CM_STATEMENT 1 /* Statement */ #define CM_STATEMENT 1 /* Statement */
#define CM_CALL 2 /* Llamada a una función o un proceso */ #define CM_CALL 2 /* Llamada a una función o un proceso */
#define CM_SIGNO 3 /* Asignación */ #define CM_SIGNO 3 /* Asignación */
#define CM_DATA 4 /* Cualquier dato */ #define CM_DATA 4 /* Cualquier dato */
/* ST = STATEMENTS */ /* ST = STATEMENTS */

View file

@ -35,11 +35,11 @@ int detecta_idioma_iso(char* lang)
{ {
int i; int i;
static char getid[NUM_LANGUAGES][3] = { static char getid[NUM_LANGUAGES][3] = {
"es", /* español */ "es", /* español */
"it", /* italiano */ "it", /* italiano */
"pt", /* portugués */ "pt", /* portugués */
"en", /* inglés */ "en", /* inglés */
"ca", /* catalán */ "ca", /* catalán */
"eu" /* euskera */ "eu" /* euskera */
}; };
if(lang==NULL) return DEFAULT_LANGUAGE; if(lang==NULL) return DEFAULT_LANGUAGE;
@ -62,11 +62,11 @@ int detecta_idioma()
#ifdef _WIN32 #ifdef _WIN32
int i; int i;
static int getid[NUM_LANGUAGES] = { static int getid[NUM_LANGUAGES] = {
0x0a, /* español */ 0x0a, /* español */
0x10, /* italiano */ 0x10, /* italiano */
0x16, /* portugués */ 0x16, /* portugués */
0x09, /* inglés */ 0x09, /* inglés */
0x03, /* catalán */ 0x03, /* catalán */
0x2d /* euskera */ 0x2d /* euskera */
}; };
LANGID lang; LANGID lang;

View file

@ -1,4 +1,4 @@
/* Copyright (C) 1999 José Luis Cebrián Pagüe /* Copyright (C) 1999 José Luis Cebrián Pagüe
* Copyright (C) 2000-2002 Sion, Ltd * Copyright (C) 2000-2002 Sion, Ltd
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
@ -21,7 +21,7 @@
#include "main.h" #include "main.h"
#include "lower.h" #include "lower.h"
/* Tabla de conversión de caracteres MS-DOS a Windows */ /* Tabla de conversión de caracteres MS-DOS a Windows */
int dos_chars=0; int dos_chars=0;
@ -44,7 +44,7 @@ byte dos_to_win[256] = {
173, 177, 61, 190, 182, 167, 247, 184, 176, 168, 183, 185, 179, 178, 166, 160 173, 177, 61, 190, 182, 167, 247, 184, 176, 168, 183, 185, 179, 178, 166, 160
}; };
/* Tabla de conversión de caracteres Windows a MS-DOS */ /* Tabla de conversión de caracteres Windows a MS-DOS */
byte win_to_dos[256] = byte win_to_dos[256] =
{ {
@ -91,16 +91,16 @@ void inicializa_lower()
"abcdefghijklmnopqrstuvwxyz"); "abcdefghijklmnopqrstuvwxyz");
#ifdef RESPETAR_ACENTOS #ifdef RESPETAR_ACENTOS
set_c_lower ("ÁÉÍÓÚÑÇÀÈÌÒÙÄËÏÖÜÝÂÊÎÔÛÆÃÅÕ", set_c_lower ("ÁÉÍÓÚÑÇÀÈÌÒÙÄËÏÖÜÝÂÊÎÔÛÆÃÅÕ",
"áéíóúñçàèìòùäëïöüýâêîôûæãåõ"); "áéíóúñçàèìòùäëïöüýâêîôûæãåõ");
set_c_lower("áéíóúñçàèìòùäëïöüýâêîôûæãåõ", set_c_lower("áéíóúñçàèìòùäëïöüýâêîôûæãåõ",
"áéíóúñçàèìòùäëïöüýâêîôûæãåõ"); "áéíóúñçàèìòùäëïöüýâêîôûæãåõ");
#else #else
set_c_lower ("ÁÉÍÓÚÑÇÀÈÌÒÙÄËÏÖÜÝÂÊÎÔÛÆÃÅÕ", set_c_lower ("ÁÉÍÓÚÑÇÀÈÌÒÙÄËÏÖÜÝÂÊÎÔÛÆÃÅÕ",
"aeiouncaeiouaeiouyaeiouæaao"); "aeiouncaeiouaeiouyaeiouæaao");
set_c_lower ("áéíóúñÑçÇàèìòùäëïöüýâêîôûæãåõÁÉÍÓÚ", set_c_lower ("áéíóúñÑçÇàèìòùäëïöüýâêîôûæãåõÁÉÍÓÚ",
"aeiounnccaeiouaeiouyaeiouÆaaoaeiou"); "aeiounnccaeiouaeiouyaeiouÆaaoaeiou");
#endif #endif
set_c_lower("1234567890#$_ºª","1234567890#$_ºª"); set_c_lower("1234567890#$_ºª","1234567890#$_ºª");
} }

View file

@ -19,7 +19,7 @@
*/ */
/* /*
* Precarga de las estructuras léxicas, analiza el fichero ltlex.def * Precarga de las estructuras léxicas, analiza el fichero ltlex.def
*/ */
#include <stdio.h> #include <stdio.h>
@ -43,9 +43,9 @@ void ltlex_error(int error)
void analiza_ltlex(void){ void analiza_ltlex(void){
byte *_buf, * buf; /* Buffer del texto y puntero al carácter actual */ byte *_buf, * buf; /* Buffer del texto y puntero al carácter actual */
byte cont=1; /* 0 indica final del archivo */ byte cont=1; /* 0 indica final del archivo */
int len; /* Tamaño del archivo */ int len; /* Tamaño del archivo */
struct lex_ele * e; /* Puntero al lex_case correspondiente */ struct lex_ele * e; /* Puntero al lex_case correspondiente */
FILE * def; /* Stream del fichero */ FILE * def; /* Stream del fichero */
@ -65,7 +65,7 @@ void analiza_ltlex(void){
fseek(def,0,SEEK_SET); fseek(def,0,SEEK_SET);
len=fread(buf,1,len,def); len=fread(buf,1,len,def);
/* El carácter ASCII 0 indica final del fichero */ /* El carácter ASCII 0 indica final del fichero */
*(buf+len)=0; *(buf+len)=0;
#ifdef _DEBUG #ifdef _DEBUG
@ -89,10 +89,10 @@ void analiza_ltlex(void){
case lf: case lf:
linea++; linea++;
break; break;
/* Los ; indican línea de comentario */ /* Los ; indican línea de comentario */
case ';': case ';':
while (*buf!=cr && *buf!=lf) buf++; break; while (*buf!=cr && *buf!=lf) buf++; break;
/* El símbolo & indica definición de token */ /* El símbolo & indica definición de token */
case '&': case '&':
*buf=lower[*buf]; *buf=lower[*buf];
if (*buf>='0' && *buf<='9') if (*buf>='0' && *buf<='9')
@ -118,7 +118,7 @@ void analiza_ltlex(void){
buf--; ivnom.b++; buf--; ivnom.b++;
} else if (t>=0x78 && t<=0x7b) { /* Analiza un delimitador de literal */ } else if (t>=0x78 && t<=0x7b) { /* Analiza un delimitador de literal */
lex_case[*buf]=(struct lex_ele*)l_lit; lex_case[*buf]=(struct lex_ele*)l_lit;
} else { /* Analiza un nuevo símbolo */ } else { /* Analiza un nuevo símbolo */
if ((e=lex_case[*buf])==0) { if ((e=lex_case[*buf])==0) {
if (num_nodos++==max_nodos) if (num_nodos++==max_nodos)
ltlex_error(3); ltlex_error(3);

View file

@ -33,11 +33,11 @@
#define swap(a,b) {(a)^=(b);(b)^=(a);(a)^=(b);} #define swap(a,b) {(a)^=(b);(b)^=(a);(a)^=(b);}
unsigned int stub_size; /* tamaño del STUB.EXE (está almacenado en edivrun.lib) */ unsigned int stub_size; /* tamaño del STUB.EXE (está almacenado en edivrun.lib) */
byte *prog, *tprog; /* buffer donde se almacena el PRG */ byte *prog, *tprog; /* buffer donde se almacena el PRG */
size_t progsize; /* tamaño del PRG */ size_t progsize; /* tamaño del PRG */
char nombreprog[256]; /* nombre del PRG sin extensión */ char nombreprog[256]; /* nombre del PRG sin extensión */
char *fichero_prg; /* nombre del archivo a compilar */ char *fichero_prg; /* nombre del archivo a compilar */
char outfilename[256]; /* archivo de salida */ char outfilename[256]; /* archivo de salida */
char edivrun_lib[256]; /* archivo stub (distinto para cada sistema) */ char edivrun_lib[256]; /* archivo stub (distinto para cada sistema) */
@ -50,7 +50,7 @@ int n_errors;
int n_warnings; int n_warnings;
int linea; int linea;
/* Información sobre los errores */ /* Información sobre los errores */
/* /*
* int numero_error=-1; * int numero_error=-1;
@ -65,8 +65,8 @@ word error_25; /* Para emitir "se esperaba una sentencia" */
void *e_malloc(size_t size); /* un malloc con mensaje de error */ void *e_malloc(size_t size); /* un malloc con mensaje de error */
void e_free(void *puntero); /* un free que fija el puntero a NULL tras liberarlo */ void e_free(void *puntero); /* un free que fija el puntero a NULL tras liberarlo */
void errormem(); /* mensaje "memoria insuficiente" */ void errormem(); /* mensaje "memoria insuficiente" */
void save_error(word tipo); /* guarda una posición de error */ void save_error(word tipo); /* guarda una posición de error */
void error(word tipo,word num, ...); /* error de compilación */ void error(word tipo,word num, ...); /* error de compilación */
void warning(int num, ...); /* warning en el proceso */ void warning(int num, ...); /* warning en el proceso */
#endif #endif

View file

@ -203,7 +203,7 @@ void dll_func()
if(fichero_dll->d_type==DT_REG) { if(fichero_dll->d_type==DT_REG) {
char dllkey[256]="dll_priority:"; char dllkey[256]="dll_priority:";
#ifdef _DEBUG #ifdef _DEBUG
printf("dbg: Librería encontrada: %s/%s\n",dir,fichero_dll->d_name); printf("dbg: Librería encontrada: %s/%s\n",dir,fichero_dll->d_name);
#endif #endif
carga=1; carga=1;
sprintf(fichdll,"%s/%s",dir,fichero_dll->d_name); sprintf(fichdll,"%s/%s",dir,fichero_dll->d_name);

View file

@ -71,7 +71,7 @@ int crea_objeto(byte * nombre, int nparam)
o=(*o).anterior; o=(*o).anterior;
} }
//while(o!=NULL && (((*o).tipo==tfext) ^^ ((*o).fext.num_par!=nparam))) o=(*o).anterior; //while(o!=NULL && (((*o).tipo==tfext) ^^ ((*o).fext.num_par!=nparam))) o=(*o).anterior;
if(o==NULL) { // ok, lo añadimos a la lista if(o==NULL) { // ok, lo añadimos a la lista
o=iobj++; (*o).anterior=*ptr_o; *ptr_o=o; o=iobj++; (*o).anterior=*ptr_o; *ptr_o=o;
(*o).name=(byte*)(ptr_o+1); (*o).name=(byte*)(ptr_o+1);
(*o).member=member; (*o).member=member;
@ -97,7 +97,7 @@ int crea_objeto(byte * nombre, int nparam)
//////////////////// ////////////////////
// PRECOMPILACIÓN // // PRECOMPILACIÓN //
//////////////////// ////////////////////
void psintactico(void) void psintactico(void)
@ -136,13 +136,13 @@ lex_scan:
case l_err: case l_err:
if (coment) { pieza=p_rem; _source++; } if (coment) { pieza=p_rem; _source++; }
else error(0,5); // carácter no reconocido else error(0,5); // carácter no reconocido
_source++; _source++;
break; break;
case l_eof: case l_eof:
pieza=p_ultima; pieza=p_ultima;
if (coment) error(0,1); // llegó el final dentro de un comentario if (coment) error(0,1); // llegó el final dentro de un comentario
break; break;
case l_cr: case l_cr:
@ -280,8 +280,8 @@ lex_scan:
} }
if (pieza==p_ultima) { if (pieza==p_ultima) {
if (coment) error(0,1); // llegó el final dentro de un comentario if (coment) error(0,1); // llegó el final dentro de un comentario
else error(0,4); // símbolo no reconocido (¡¡creo!!) TODO: comprobar else error(0,4); // símbolo no reconocido (¡¡creo!!) TODO: comprobar
} }
break; break;
@ -294,7 +294,7 @@ lex_scan:
////////////////////////////////////// //////////////////////////////////////
// ANÁLISIS SINTÁCTICO DEL PROGRAMA // // ANÁLISIS SINTÁCTICO DEL PROGRAMA //
////////////////////////////////////// //////////////////////////////////////
void sintactico(void) void sintactico(void)
@ -327,9 +327,9 @@ void sintactico(void)
optimizar=1;*/ optimizar=1;*/
if(case_sensitive) { if(case_sensitive) {
memcpy(lower+129,"üéâäàåçêëèïîìäåéææôöòûùÿöü¢£¥áíóú",35); memcpy(lower+129,"üéâäàåçêëèïîìäåéææôöòûùÿöü¢£¥áíóú",35);
memcpy(lower+'A',"ABCDEFGHIJKLMNOPQRSTUVWXYZ",26); memcpy(lower+'A',"ABCDEFGHIJKLMNOPQRSTUVWXYZ",26);
lower['Ñ']='Ñ'; lower['Ñ']='Ñ';
} }
if (pieza==p_compiler_options) { if (pieza==p_compiler_options) {
@ -360,9 +360,9 @@ void sintactico(void)
case 3: // _case_sensitive case 3: // _case_sensitive
lexico(); lexico();
case_sensitive=1; case_sensitive=1;
memcpy(lower+129,"üéâäàåçêëèïîìäåéææôöòûùÿöü¢£¥áíóú",35); memcpy(lower+129,"üéâäàåçêëèïîìäåéææôöòûùÿöü¢£¥áíóú",35);
memcpy(lower+'A',"ABCDEFGHIJKLMNOPQRSTUVWXYZ",26); memcpy(lower+'A',"ABCDEFGHIJKLMNOPQRSTUVWXYZ",26);
lower['Ñ']='Ñ'; lower['Ñ']='Ñ';
break; break;
case 4: // _ignore_errors case 4: // _ignore_errors
lexico(); lexico();
@ -399,18 +399,18 @@ void sintactico(void)
comprueba_null=0; comprueba_null=0;
break; break;
default: default:
error(0,8); // se esperaba una opción de compilación error(0,8); // se esperaba una opción de compilación
break; break;
} }
} else { } else {
if (!free_sintax) { if (!free_sintax) {
if (pieza==p_program) { if (pieza==p_program) {
error(3,9); // se esperaba ';' (¡creo!) TODO: comprobar error(3,9); // se esperaba ';' (¡creo!) TODO: comprobar
//lexico(); //lexico();
break; break;
} }
else { else {
error(0,8); // se esperaba una opción de compilación error(0,8); // se esperaba una opción de compilación
//lexico(); //lexico();
// puede ser peligroso // puede ser peligroso
while(pieza!=p_coma && pieza!=p_ptocoma && pieza!=p_program) while(pieza!=p_coma && pieza!=p_ptocoma && pieza!=p_program)
@ -431,7 +431,7 @@ void sintactico(void)
if (pieza!=p_program && pieza!=p_setup_program) error(4,44); // esperando PROGRAM if (pieza!=p_program && pieza!=p_setup_program) error(4,44); // esperando PROGRAM
if (pieza==p_setup_program) if (pieza==p_setup_program)
warning(1); // característica desfasada warning(1); // característica desfasada
//if ((lins=fopen(cWork,"wb"))==NULL) c_error(0,0); // cWork="system\exec.ins" //if ((lins=fopen(cWork,"wb"))==NULL) c_error(0,0); // cWork="system\exec.ins"
@ -515,7 +515,7 @@ void sintactico(void)
if (pieza==p_pointer) { // Se define un puntero a struct if (pieza==p_pointer) { // Se define un puntero a struct
lexico(); if (pieza!=p_id) error(1,27); ob=o; // esperando el nombre de la estructura lexico(); if (pieza!=p_id) error(1,27); ob=o; // esperando el nombre de la estructura
if ((*ob).tipo==tnone) error(0,28); // No se define el pointer así if ((*ob).tipo==tnone) error(0,28); // No se define el pointer así
if ((*ob).tipo!=tsglo && (*ob).tipo!=tsloc) error(0,28); if ((*ob).tipo!=tsglo && (*ob).tipo!=tsloc) error(0,28);
lexico(); lexico();
puntero_a_struct: puntero_a_struct:
@ -874,7 +874,7 @@ void sintactico(void)
if (pieza==p_pointer) { // Se define un puntero a struct if (pieza==p_pointer) { // Se define un puntero a struct
lexico(); if (pieza!=p_id) error(1,27); ob=o; // esperando el nombre de la estructura lexico(); if (pieza!=p_id) error(1,27); ob=o; // esperando el nombre de la estructura
if ((*ob).tipo==tnone) error(0,28); // No se define el pointer así if ((*ob).tipo==tnone) error(0,28); // No se define el pointer así
if ((*ob).tipo!=tsglo && (*ob).tipo!=tsloc) error(0,28); if ((*ob).tipo!=tsglo && (*ob).tipo!=tsloc) error(0,28);
lexico(); lexico();
puntero_a_struct_local: puntero_a_struct_local:
@ -1211,10 +1211,10 @@ void sintactico(void)
} }
// //
// Código principal // Código principal
// //
// Genera el salto al inicio del código (long_header) // Genera el salto al inicio del código (long_header)
mem[0]=0; mem[1]=imem; iloc_len=iloc; mem[0]=0; mem[1]=imem; iloc_len=iloc;
@ -1236,10 +1236,10 @@ void sintactico(void)
while (pieza==p_ptocoma || pieza==p_coma) lexico(); while (pieza==p_ptocoma || pieza==p_coma) lexico();
} }
// esta instrucción realiza un salto a la rutina donde están los limp // esta instrucción realiza un salto a la rutina donde están los limp
// (importación de DLLs). Como esta la colocaremos al final (porque, hasta // (importación de DLLs). Como esta la colocaremos al final (porque, hasta
// que lleguemos al final no sabremos qué dlls hay que importar), dejamos // que lleguemos al final no sabremos qué dlls hay que importar), dejamos
// el parámetro de ljmp de momento a 0 y guardamos el offset en // el parámetro de ljmp de momento a 0 y guardamos el offset en
// salto_import, donde al final sustituiremos el 0 por el offset adecuado. // salto_import, donde al final sustituiremos el 0 por el offset adecuado.
salto_import=imem+1; salto_import=imem+1;
@ -1302,10 +1302,10 @@ void sintactico(void)
while (pieza!=p_cerrar) { while (pieza!=p_cerrar) {
(*ob).proc.num_par++; expresion_cpa(); (*ob).proc.num_par++; expresion_cpa();
if (pieza!=p_cerrar) if (pieza!=p_coma) error(3,35); // se esperaba una coma if (pieza!=p_cerrar) if (pieza!=p_coma) error(3,35); // se esperaba una coma
else { lexico(); if (pieza==p_cerrar) error(3,36); } // se esperaba otro parámetro else { lexico(); if (pieza==p_cerrar) error(3,36); } // se esperaba otro parámetro
} }
if ((*ob).usado) { if ((*ob).usado) {
if (num_par==(*ob).proc.num_par) (*ob).usado=0; else error(0,38); // nº de parametros incorrecto if (num_par==(*ob).proc.num_par) (*ob).usado=0; else error(0,38); // nº de parametros incorrecto
} }
pasa_ptocoma(); final_sentencia(); pasa_ptocoma(); final_sentencia();
@ -1313,7 +1313,7 @@ void sintactico(void)
g2(lpar,parametros-1); g2(lpar,parametros-1);
} }
parametros=-1; // Para que los parámetros se puedan repetir como PRIVATE parametros=-1; // Para que los parámetros se puedan repetir como PRIVATE
num_par=mem[_imem]=(*ob).proc.num_par; num_par=mem[_imem]=(*ob).proc.num_par;
@ -1362,7 +1362,7 @@ lex_scan:
case l_err: case l_err:
if (coment) { pieza=p_rem; _source++; } if (coment) { pieza=p_rem; _source++; }
else error(0,5); // carácter no reconocido else error(0,5); // carácter no reconocido
_source++; _source++;
break; break;
@ -1527,7 +1527,7 @@ lex_scan:
pieza=p_num; pieza=p_num;
pieza_num=0; pieza_num=0;
// Número hexadecimal // Número hexadecimal
if (*_source=='0' && lower[*(_source+1)]=='x') { if (*_source=='0' && lower[*(_source+1)]=='x') {
_source+=2; _source+=2;
while ((int)lex_case[*_source]==l_num || while ((int)lex_case[*_source]==l_num ||
@ -1580,8 +1580,8 @@ lex_scan:
} }
if (pieza==p_ultima) { if (pieza==p_ultima) {
if (coment) error(0,1); // llegó el final dentro de un comentario if (coment) error(0,1); // llegó el final dentro de un comentario
else error(0,4); // símbolo no reconocido (¡¡creo!!) else error(0,4); // símbolo no reconocido (¡¡creo!!)
} }
break; break;
@ -1594,7 +1594,7 @@ lex_scan:
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Adivina cual será la siguiente pieza lexica leida (y donde estará) // Adivina cual será la siguiente pieza lexica leida (y donde estará)
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// No genera nunca errores // No genera nunca errores
@ -1754,7 +1754,7 @@ void pasa_ptocoma(void)
// //
// *** OJO *** No se debe permitir #id.tvpri // *** OJO *** No se debe permitir #id.tvpri
// pues fallaría a no ser que #id fuera del mismo tipo que el // pues fallaría a no ser que #id fuera del mismo tipo que el
// proceso actual (hermano) // proceso actual (hermano)
void analiza_private(void) { void analiza_private(void) {
@ -1776,7 +1776,7 @@ void analiza_private(void) {
if (pieza==p_pointer) { // Se define un puntero a struct if (pieza==p_pointer) { // Se define un puntero a struct
lexico(); if (pieza!=p_id) error(1,27); ob=o; // esperando el nombre de la estructura lexico(); if (pieza!=p_id) error(1,27); ob=o; // esperando el nombre de la estructura
if ((*ob).tipo==tnone) error(0,28); // No se define el pointer así if ((*ob).tipo==tnone) error(0,28); // No se define el pointer así
if ((*ob).tipo!=tsglo && (*ob).tipo!=tsloc) error(0,28); if ((*ob).tipo!=tsglo && (*ob).tipo!=tsloc) error(0,28);
lexico(); lexico();
puntero_a_struct: puntero_a_struct:
@ -1867,7 +1867,7 @@ void analiza_private(void) {
} else { } else {
if (pieza!=p_id) error(1,29); // esperando el nombre de la cadena if (pieza!=p_id) error(1,29); // esperando el nombre de la cadena
ob=o; if ((*ob).tipo!=tnone) { // Mira si se repite un parámetro ... ob=o; if ((*ob).tipo!=tnone) { // Mira si se repite un parámetro ...
if (parametros==-1 && (*ob).param==1 && (*ob).bloque==bloque_actual) { if (parametros==-1 && (*ob).param==1 && (*ob).bloque==bloque_actual) {
if ((*ob).tipo==tcloc) { // Se repite un string if ((*ob).tipo==tcloc) { // Se repite un string
save_error(0); save_error(0);
@ -1883,8 +1883,8 @@ void analiza_private(void) {
lexico(); lexico();
} }
} else dup=255; } else dup=255;
if (dup!=(*ob).cloc.totalen) error(4,41); // la longitud no coincide con la declaración anterior if (dup!=(*ob).cloc.totalen) error(4,41); // la longitud no coincide con la declaración anterior
else if (pieza==p_asig) error(0,42); // no se puede inicializar un parámetro else if (pieza==p_asig) error(0,42); // no se puede inicializar un parámetro
else { else {
while (pieza==p_ptocoma || pieza==p_coma) lexico(); while (pieza==p_ptocoma || pieza==p_coma) lexico();
(*ob).param++; (*ob).param++;
@ -1955,10 +1955,10 @@ void analiza_private(void) {
if (pieza!=p_id) error(1,23); // esperando un nombre if (pieza!=p_id) error(1,23); // esperando un nombre
ob=o; if ((*ob).tipo!=tnone) { ob=o; if ((*ob).tipo!=tnone) {
if (parametros==-1 && (*ob).param==1 && (*ob).bloque==bloque_actual) { if (parametros==-1 && (*ob).param==1 && (*ob).bloque==bloque_actual) {
if ((*ob).tipo==tbloc) { // Se repite un byte parámetro if ((*ob).tipo==tbloc) { // Se repite un byte parámetro
lexico(); lexico();
if (pieza==p_corab) error(2,33); // no se puede pasar una tabla como parámetro if (pieza==p_corab) error(2,33); // no se puede pasar una tabla como parámetro
else if (pieza==p_asig) error(0,42); // no se puede inicializar un parámetro else if (pieza==p_asig) error(0,42); // no se puede inicializar un parámetro
else { else {
while (pieza==p_ptocoma || pieza==p_coma) { while (pieza==p_ptocoma || pieza==p_coma) {
lexico(); lexico();
@ -2047,10 +2047,10 @@ void analiza_private(void) {
if (pieza!=p_id) error(1,23); // esperando un nombre if (pieza!=p_id) error(1,23); // esperando un nombre
ob=o; if ((*ob).tipo!=tnone) { ob=o; if ((*ob).tipo!=tnone) {
if (parametros==-1 && (*ob).param==1 && (*ob).bloque==bloque_actual) { if (parametros==-1 && (*ob).param==1 && (*ob).bloque==bloque_actual) {
if ((*ob).tipo==twloc) { // Se repite un word parámetro if ((*ob).tipo==twloc) { // Se repite un word parámetro
lexico(); lexico();
if (pieza==p_corab) error(2,33); // no se puede pasar una tabla como parámetro if (pieza==p_corab) error(2,33); // no se puede pasar una tabla como parámetro
else if (pieza==p_asig) error(0,42); // no se puede inicializar un parámetro else if (pieza==p_asig) error(0,42); // no se puede inicializar un parámetro
else { else {
while (pieza==p_ptocoma || pieza==p_coma) { while (pieza==p_ptocoma || pieza==p_coma) {
lexico(); lexico();
@ -2139,14 +2139,14 @@ void analiza_private(void) {
} else { } else {
// Si el objeto no es tnone, se repite un parámetro o bien es un error // Si el objeto no es tnone, se repite un parámetro o bien es un error
ob=o; if ((*ob).tipo!=tnone) { ob=o; if ((*ob).tipo!=tnone) {
if (parametros==-1 && (*ob).param==1 && (*ob).bloque==bloque_actual) { if (parametros==-1 && (*ob).param==1 && (*ob).bloque==bloque_actual) {
if ((*ob).tipo==tvloc) { // Se repite una variable local if ((*ob).tipo==tvloc) { // Se repite una variable local
lexico(); lexico();
if (pieza==p_corab) error(2,33); // no se puede pasar una tabla como parámetro if (pieza==p_corab) error(2,33); // no se puede pasar una tabla como parámetro
else if (pieza==p_asig) error(0,42); // no se puede inicializar un parámetro else if (pieza==p_asig) error(0,42); // no se puede inicializar un parámetro
else { else {
while (pieza==p_ptocoma || pieza==p_coma) { while (pieza==p_ptocoma || pieza==p_coma) {
lexico(); lexico();
@ -2209,7 +2209,7 @@ void analiza_private(void) {
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Análisis de una declaración pointer (int, word o byte) // Análisis de una declaración pointer (int, word o byte)
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
struct objeto * analiza_pointer(int tipo, int offset) struct objeto * analiza_pointer(int tipo, int offset)
@ -2220,7 +2220,7 @@ struct objeto * analiza_pointer(int tipo, int offset)
if (pieza!=p_id) error(1,23); // esperando un nombre if (pieza!=p_id) error(1,23); // esperando un nombre
ob=o; if ((*ob).tipo!=tnone) { ob=o; if ((*ob).tipo!=tnone) {
if (parametros==-1 && (*ob).param==1 && (*ob).bloque==bloque_actual) { if (parametros==-1 && (*ob).param==1 && (*ob).bloque==bloque_actual) {
if ((*ob).tipo==tipo) { // Se repite un pointer parámetro como private if ((*ob).tipo==tipo) { // Se repite un pointer parámetro como private
save_error(0); lexico(); save_error(0); lexico();
len1=-1; len2=-1; len3=-1; len1=-1; len2=-1; len3=-1;
if (pieza==p_corab) { lexico(); if (pieza==p_corab) { lexico();
@ -2234,8 +2234,8 @@ struct objeto * analiza_pointer(int tipo, int offset)
} }
} if (pieza!=p_corce) error(3,19); lexico(); // esperando ']' } if (pieza!=p_corce) error(3,19); lexico(); // esperando ']'
} }
if (len1!=(*ob).pilo.len1 || len2!=(*ob).pilo.len2 || len3!=(*ob).pilo.len3) error(4,41); // la longitud no coincide con la declaración anterior if (len1!=(*ob).pilo.len1 || len2!=(*ob).pilo.len2 || len3!=(*ob).pilo.len3) error(4,41); // la longitud no coincide con la declaración anterior
else if (pieza==p_asig) error(0,42); // no se puede inicializar un parámetro else if (pieza==p_asig) error(0,42); // no se puede inicializar un parámetro
else { else {
while (pieza==p_ptocoma || pieza==p_coma) lexico(); while (pieza==p_ptocoma || pieza==p_coma) lexico();
(*ob).param++; // No permite volver a redeclararlo (*ob).param++; // No permite volver a redeclararlo
@ -2269,7 +2269,7 @@ struct objeto * analiza_pointer(int tipo, int offset)
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
int analiza_struct(int offstruct) { // tras " struct id [ <const> ] " // idðmember int analiza_struct(int offstruct) { // tras " struct id [ <const> ] " // idðmember
int len=0,dup,i,_itxt,_imem; int len=0,dup,i,_itxt,_imem;
struct objeto * ob; struct objeto * ob;
struct objeto * old_member,* member2; struct objeto * old_member,* member2;
@ -2288,7 +2288,7 @@ int analiza_struct(int offstruct) { // tras " struct id [ <const> ] " // id
old_member=member; member=NULL; lexico(); member=old_member; old_member=member; member=NULL; lexico(); member=old_member;
if (pieza!=p_id) error(1,27); ob=o; // esperando el nombre de la estructura if (pieza!=p_id) error(1,27); ob=o; // esperando el nombre de la estructura
if ((*ob).tipo==tnone) error(0,28); // No se define el pointer así if ((*ob).tipo==tnone) error(0,28); // No se define el pointer así
if ((*ob).tipo!=tsglo && (*ob).tipo!=tsloc) error(0,28); if ((*ob).tipo!=tsglo && (*ob).tipo!=tsloc) error(0,28);
lexico(); lexico();
puntero_a_struct: puntero_a_struct:
@ -2629,7 +2629,7 @@ int analiza_struct(int offstruct) { // tras " struct id [ <const> ] " // id
// //
int analiza_struct_local(int offstruct) { // tras " struct id [ <const> ] " // idðmember int analiza_struct_local(int offstruct) { // tras " struct id [ <const> ] " // idðmember
int len=0,dup,i,_itxt,_iloc; int len=0,dup,i,_itxt,_iloc;
struct objeto * ob; struct objeto * ob;
struct objeto * old_member,* member2; struct objeto * old_member,* member2;
@ -2648,7 +2648,7 @@ int analiza_struct_local(int offstruct) { // tras " struct id [ <const> ] " // i
old_member=member; member=NULL; lexico(); member=old_member; old_member=member; member=NULL; lexico(); member=old_member;
if (pieza!=p_id) error(1,27); ob=o; // esperando el nombre de la estructura if (pieza!=p_id) error(1,27); ob=o; // esperando el nombre de la estructura
if ((*ob).tipo==tnone) error(0,28); // No se define el pointer así if ((*ob).tipo==tnone) error(0,28); // No se define el pointer así
if ((*ob).tipo!=tsglo && (*ob).tipo!=tsloc) error(0,28); if ((*ob).tipo!=tsglo && (*ob).tipo!=tsloc) error(0,28);
lexico(); lexico();
puntero_a_struct: puntero_a_struct:
@ -2993,7 +2993,7 @@ int analiza_struct_local(int offstruct) { // tras " struct id [ <const> ] " // i
// //
int analiza_struct_private(int offstruct) { // tras " struct id [ <const> ] " // idðmember int analiza_struct_private(int offstruct) { // tras " struct id [ <const> ] " // idðmember
int len=0,dup,i,_itxt,_imem; int len=0,dup,i,_itxt,_imem;
struct objeto * ob; struct objeto * ob;
struct objeto * old_member,* member2; struct objeto * old_member,* member2;
@ -3012,7 +3012,7 @@ int analiza_struct_private(int offstruct) { // tras " struct id [ <const> ] " //
old_member=member; member=NULL; lexico(); member=old_member; old_member=member; member=NULL; lexico(); member=old_member;
if (pieza!=p_id) error(1,27); ob=o; // esperando el nombre de la estructura if (pieza!=p_id) error(1,27); ob=o; // esperando el nombre de la estructura
if ((*ob).tipo==tnone) error(0,28); // No se define el pointer así if ((*ob).tipo==tnone) error(0,28); // No se define el pointer así
if ((*ob).tipo!=tsglo && (*ob).tipo!=tsloc) error(0,28); if ((*ob).tipo!=tsglo && (*ob).tipo!=tsloc) error(0,28);
lexico(); lexico();
puntero_a_struct: puntero_a_struct:
@ -3366,7 +3366,7 @@ int analiza_pointer_struct(int tipo, int offset, struct objeto * estructura)
if (pieza!=p_id) error(1,23); // esperando un nombre if (pieza!=p_id) error(1,23); // esperando un nombre
ob=o; if ((*ob).tipo!=tnone) { ob=o; if ((*ob).tipo!=tnone) {
if (parametros==-1 && (*ob).param==1 && (*ob).bloque==bloque_actual) { if (parametros==-1 && (*ob).param==1 && (*ob).bloque==bloque_actual) {
if ((*ob).tipo==tipo) { // Se repite un pointer parámetro como private if ((*ob).tipo==tipo) { // Se repite un pointer parámetro como private
save_error(0); lexico(); save_error(0); lexico();
items1=-1; items2=-1; items3=-1; items1=-1; items2=-1; items3=-1;
if (pieza==p_corab) { lexico(); if (pieza==p_corab) { lexico();
@ -3380,8 +3380,8 @@ int analiza_pointer_struct(int tipo, int offset, struct objeto * estructura)
} }
} if (pieza!=p_corce) error(3,19); lexico(); // esperando ']' } if (pieza!=p_corce) error(3,19); lexico(); // esperando ']'
} }
if (items1!=(*ob).psgl.items1 || items2!=(*ob).psgl.items2 || items3!=(*ob).psgl.items3) error(4,41); // la longitud no coincide con la declaración anterior if (items1!=(*ob).psgl.items1 || items2!=(*ob).psgl.items2 || items3!=(*ob).psgl.items3) error(4,41); // la longitud no coincide con la declaración anterior
else if (pieza==p_asig) error(0,42); // no se puede inicializar un parámetro else if (pieza==p_asig) error(0,42); // no se puede inicializar un parámetro
else { else {
(*ob).param++; return(0); // No permite volver a redeclararlo (*ob).param++; return(0); // No permite volver a redeclararlo
} }
@ -3410,13 +3410,13 @@ int analiza_pointer_struct(int tipo, int offset, struct objeto * estructura)
(*ob).psgl.offset=offset; // del pointer (*ob).psgl.offset=offset; // del pointer
(*ob).psgl.ostruct=estructura; // struct original (*ob).psgl.ostruct=estructura; // struct original
// (*ob).psgl.len_item ð (*((*ob).psgl.ostruct)).len_item; // (*ob).psgl.len_item ð (*((*ob).psgl.ostruct)).len_item;
return(1); return(1);
} }
// //
// Inicialización de tablas (a mem[imem++]) // Inicialización de tablas (a mem[imem++])
// //
// <init> := ( <string> | <exp> [ [p_dup] p_abrir <init> p_cerrar ] ) // <init> := ( <string> | <exp> [ [p_dup] p_abrir <init> p_cerrar ] )
// [ p_coma <init>] // [ p_coma <init>]
@ -3455,7 +3455,7 @@ void tglo_init2(int tipo) {
while (1) { while (1) {
// Mira si finaliza la inicialización de datos // Mira si finaliza la inicialización de datos
if (pieza==p_cerrar || pieza==p_ptocoma) { if (pieza==p_cerrar || pieza==p_ptocoma) {
if (*(imemptr-(int)mem+(int)frm)==1 || tipo==1) { if (*(imemptr-(int)mem+(int)frm)==1 || tipo==1) {
@ -3474,7 +3474,7 @@ void tglo_init2(int tipo) {
return; return;
} }
// Una coma sola, como "3,,4", avanza una posición (y define un 0) // Una coma sola, como "3,,4", avanza una posición (y define un 0)
if (pieza==p_coma) { if (pieza==p_coma) {
if (*(imemptr-(int)mem+(int)frm)==1 || tipo==1) { if (*(imemptr-(int)mem+(int)frm)==1 || tipo==1) {
@ -3506,7 +3506,7 @@ void tglo_init2(int tipo) {
} else if (pieza==p_lit || (pieza==p_id && (*o).tipo==tcons && (*o).cons.literal)) { } else if (pieza==p_lit || (pieza==p_id && (*o).tipo==tcons && (*o).cons.literal)) {
valor=pieza_num; lexico(); valor=pieza_num; lexico();
if (pieza==p_abrir || pieza==p_dup) error(2,52); // no se puede duplicar 0 o menos veces (se ha indicado un literal como número de veces) if (pieza==p_abrir || pieza==p_dup) error(2,52); // no se puede duplicar 0 o menos veces (se ha indicado un literal como número de veces)
// Mete un literal en un dato de tipo string // Mete un literal en un dato de tipo string
@ -3569,7 +3569,7 @@ void tglo_init2(int tipo) {
if (frm[imem]==0xdad00000) error(2,46); // se esperaba un literal if (frm[imem]==0xdad00000) error(2,46); // se esperaba un literal
} }
// Mete un valor numérico en la memoria // Mete un valor numérico en la memoria
if (*(imemptr-(int)mem+(int)frm)==1 || tipo==1) { // En un word if (*(imemptr-(int)mem+(int)frm)==1 || tipo==1) { // En un word
@ -3614,13 +3614,13 @@ void tglo_init2(int tipo) {
if (dup<1) error(2,52); // no se puede duplicar 0 o menos veces if (dup<1) error(2,52); // no se puede duplicar 0 o menos veces
lexico(); lexico();
// Analiza la secuencia como otra inicialización ... // Analiza la secuencia como otra inicialización ...
oimemptr=imemptr; oimemptr=imemptr;
tglo_init2(tipo); tglo_init2(tipo);
if (pieza!=p_cerrar) error(3,18); // esperando ')' if (pieza!=p_cerrar) error(3,18); // esperando ')'
// Y la duplica el número de veces indicado // Y la duplica el número de veces indicado
if (dup>1) { if (dup>1) {
len=imemptr-oimemptr; len=imemptr-oimemptr;
@ -3633,7 +3633,7 @@ void tglo_init2(int tipo) {
imem=((int)imemptr-(int)mem+3)/4; imem=((int)imemptr-(int)mem+3)/4;
_imem=((int)oimemptr+n-(int)mem+3)/4; _imem=((int)oimemptr+n-(int)mem+3)/4;
if (frm[imem]==0xdad00000) { if (frm[imem]==0xdad00000) {
if (frm[_imem]!=0xdad00000) error(3,53); // inicialización incorrecta if (frm[_imem]!=0xdad00000) error(3,53); // inicialización incorrecta
else if (mem[imem]!=mem[_imem]) error(3,53); else if (mem[imem]!=mem[_imem]) error(3,53);
} else if (frm[_imem]==0xdad00000) error(3,53); } else if (frm[_imem]==0xdad00000) error(3,53);
} }

View file

@ -28,7 +28,7 @@ byte* nombre_program; /* nombre del programa, para guardarlo en el exe */
/* /*
* A continuacion viene el asunto de los objetos. Para el que no se haya estudiado a fondo * A continuacion viene el asunto de los objetos. Para el que no se haya estudiado a fondo
* el DIVC.CPP (ejem) diré que un objeto es cada una de las variables, constantes, tipos * el DIVC.CPP (ejem) diré que un objeto es cada una de las variables, constantes, tipos
* de proceso (declarados con PROCESS), tipos de funcion (declarados con FUNCTION), funciones * de proceso (declarados con PROCESS), tipos de funcion (declarados con FUNCTION), funciones
* de DLL, estructuras, etc. etc. etc. * de DLL, estructuras, etc. etc. etc.
* Estudiaros la siguiente tabla para entenderlo mejor... * Estudiaros la siguiente tabla para entenderlo mejor...
@ -44,11 +44,11 @@ byte* nombre_program; /* nombre del programa, para guardarlo en el exe */
struct objeto { struct objeto {
byte tipo; /* Tipo de objeto */ byte tipo; /* Tipo de objeto */
byte usado; /* Indica si el objeto ha sido usado antes de definirse */ byte usado; /* Indica si el objeto ha sido usado antes de definirse */
byte * name; /* Puntero al nombre, para algún listado */ byte * name; /* Puntero al nombre, para algún listado */
byte * ierror;/* Puntero al código para determinar la columna si es necesario */ byte * ierror;/* Puntero al código para determinar la columna si es necesario */
int linea; /* Línea de código fuente, para informar del error */ int linea; /* Línea de código fuente, para informar del error */
int param; /* Indica que es un objeto declarado en los parámetros */ int param; /* Indica que es un objeto declarado en los parámetros */
int dll; /* En qué dll se declara el objeto, -1 = pertenece al prg */ int dll; /* En qué dll se declara el objeto, -1 = pertenece al prg */
struct objeto * anterior; /* Anterior objeto de igual nombre */ struct objeto * anterior; /* Anterior objeto de igual nombre */
struct objeto * bloque; /* Bloque de este proceso (0-global/local N-private) */ struct objeto * bloque; /* Bloque de este proceso (0-global/local N-private) */
struct objeto * member; /* Indica a que struct pertenece (0-n/a) */ struct objeto * member; /* Indica a que struct pertenece (0-n/a) */
@ -81,14 +81,14 @@ struct objeto {
} cglo,pcgl; } cglo,pcgl;
struct { /* Struct */ struct { /* Struct */
int offset; int offset;
int len_item; /* Número de campos */ int len_item; /* Número de campos */
int totalitems; /* Numero total de registros */ int totalitems; /* Numero total de registros */
int items1,items2,items3; /* -1 si n/a */ int items1,items2,items3; /* -1 si n/a */
} sglo,sloc; } sglo,sloc;
struct { /* Struct pointer */ struct { /* Struct pointer */
int offset; int offset;
struct objeto * ostruct; /* Puntero al struct */ struct objeto * ostruct; /* Puntero al struct */
int totalitems; /* Número total de registros */ int totalitems; /* Número total de registros */
int items1,items2,items3; /* -1 si n/a */ int items1,items2,items3; /* -1 si n/a */
} psgl,pslo; } psgl,pslo;
struct { /* Variable local */ struct { /* Variable local */
@ -116,12 +116,12 @@ struct objeto {
struct { /* Proceso */ struct { /* Proceso */
struct objeto * bloque; struct objeto * bloque;
int offset; int offset;
int num_par; /* Número de parámetros */ int num_par; /* Número de parámetros */
} proc; } proc;
/* /*
* qsort requiere como parametros un nombre de estructura y un campo * qsort requiere como parametros un nombre de estructura y un campo
* Ya le buscaremos una solución (p.ej. una función complementaria a EDIV_Export) * Ya le buscaremos una solución (p.ej. una función complementaria a EDIV_Export)
*/ */
struct { /* Funcion externa (DLL) */ struct { /* Funcion externa (DLL) */
@ -144,7 +144,7 @@ struct objeto {
#define tfunc 9 #define tfunc 9
#define tsglo 10 /* Structs */ #define tsglo 10 /* Structs */
#define tsloc 11 #define tsloc 11
#define tfext 12 /* Función de una librer¡a externa */ #define tfext 12 /* Función de una librer¡a externa */
#define tbglo 13 /* Byte global */ #define tbglo 13 /* Byte global */
#define twglo 14 /* Word global */ #define twglo 14 /* Word global */
#define tbloc 15 /* Byte local */ #define tbloc 15 /* Byte local */
@ -172,33 +172,33 @@ byte * vhash[256]; /* Punteros al vector de nombres; */
/* /*
* Ahora viene todo lo referente al parser en si, es decir, al analizador léxico y sintáctico. * Ahora viene todo lo referente al parser en si, es decir, al analizador léxico y sintáctico.
* También se incluye aquí al evaluador de expresiones (por cierto, usa notación polaca xD) * También se incluye aquí al evaluador de expresiones (por cierto, usa notación polaca xD)
* El parser de DIV es realmente bueno, y además muy personalizable. Que yo sepa, sólo existe * El parser de DIV es realmente bueno, y además muy personalizable. Que yo sepa, sólo existe
* un bug en el evaluador de expresiones, al parecer los operadores lógicos no funcionan de * un bug en el evaluador de expresiones, al parecer los operadores lógicos no funcionan de
* igual forma en sus distintas sintaxis, al menos al trabajar con cadenas. Es decir, que un * igual forma en sus distintas sintaxis, al menos al trabajar con cadenas. Es decir, que un
* AND no devuelve lo mismo que un && (pablo-bug nº1). Pero todo se arreglará con un vistazo * AND no devuelve lo mismo que un && (pablo-bug nº1). Pero todo se arreglará con un vistazo
* al listado EML ;) * al listado EML ;)
*/ */
#define max_nodos 128 /* Máximo número de nodos del léxico para símbolos */ #define max_nodos 128 /* Máximo número de nodos del léxico para símbolos */
#define cr 13 /* Retorno de carro */ #define cr 13 /* Retorno de carro */
#define lf 10 /* Salto de linea */ #define lf 10 /* Salto de linea */
#define tab 9 /* Tabulación */ #define tab 9 /* Tabulación */
/* Valores de lex_case, si no son punteros a lex_simb */ /* Valores de lex_case, si no son punteros a lex_simb */
#define l_err 0 /* Caracter desconocido */ #define l_err 0 /* Caracter desconocido */
#define l_cr 1 /* Fin de linea (l_err Carácter no esperado) */ #define l_cr 1 /* Fin de linea (l_err Carácter no esperado) */
#define l_id 2 /* Identificador o palabra reservada */ #define l_id 2 /* Identificador o palabra reservada */
#define l_spc 3 /* Espacios y tabulaciones */ #define l_spc 3 /* Espacios y tabulaciones */
#define l_lit 4 /* Literal */ #define l_lit 4 /* Literal */
#define l_num 5 /* Constante numérica */ #define l_num 5 /* Constante numérica */
#define l_eof 6 /* Fin de fichero */ #define l_eof 6 /* Fin de fichero */
/* /*
* Valores sintácticos o tokens (pieza) * Valores sintácticos o tokens (pieza)
*/ */
#define p_ultima 0x00 /* Fin de fichero <EOF> */ #define p_ultima 0x00 /* Fin de fichero <EOF> */
#define p_program 0x01 #define p_program 0x01
@ -210,7 +210,7 @@ byte * vhash[256]; /* Punteros al vector de nombres; */
#define p_process 0x07 #define p_process 0x07
#define p_private 0x08 #define p_private 0x08
#define p_struct 0x09 #define p_struct 0x09
#define p_import 0x0A /* sólo para mostrar el warning de que ya no se usa */ #define p_import 0x0A /* sólo para mostrar el warning de que ya no se usa */
#define p_setup_program 0x0B /* idem */ #define p_setup_program 0x0B /* idem */
#define p_string 0x0C #define p_string 0x0C
@ -376,16 +376,16 @@ byte * vhash[256]; /* Punteros al vector de nombres; */
#define p_lit 0xfc /* Puntero al literal (txt) en pieza_num */ #define p_lit 0xfc /* Puntero al literal (txt) en pieza_num */
#define p_id 0xfd /* o es un ptr a vnom (a un ptr al objeto) */ #define p_id 0xfd /* o es un ptr a vnom (a un ptr al objeto) */
#define p_num 0xfe /* Número en pieza_num */ #define p_num 0xfe /* Número en pieza_num */
/* Tabla de elementos léxicos (distintos tipos de token) */ /* Tabla de elementos léxicos (distintos tipos de token) */
struct lex_ele { byte caracter; struct lex_ele { byte caracter;
byte token; byte token;
struct lex_ele * alternativa; struct lex_ele * alternativa;
struct lex_ele * siguiente; } struct lex_ele * siguiente; }
lex_simb[max_nodos], * ilex_simb, * lex_case[256]; lex_simb[max_nodos], * ilex_simb, * lex_case[256];
/* Pieza (token) que se está leyendo (ver constantes p_xxxx) */ /* Pieza (token) que se está leyendo (ver constantes p_xxxx) */
int pieza, pieza_num; int pieza, pieza_num;
struct objeto * o; /* Cuando pieza=p_id, objeto de tipo (**o).tipo */ struct objeto * o; /* Cuando pieza=p_id, objeto de tipo (**o).tipo */
@ -393,7 +393,7 @@ struct objeto * bloque_actual; /* Bloque que esta siendo analizado *
struct objeto * bloque_lexico; /* Es 0 hasta las privadas del program */ struct objeto * bloque_lexico; /* Es 0 hasta las privadas del program */
struct objeto * member; /* !=0 al declarar/acceder un miembro de un struct */ struct objeto * member; /* !=0 al declarar/acceder un miembro de un struct */
/* número de nodos, número de objetos */ /* número de nodos, número de objetos */
int num_nodos, num_obj; int num_nodos, num_obj;
int num_obj_predefinidos; int num_obj_predefinidos;
@ -401,14 +401,14 @@ int num_obj_predefinidos;
/* /*
* Variables relacionadas con el listado formateado * Variables relacionadas con el listado formateado
*/ */
int coment; /* 0-Código, 1-Dentro de comentario, 2-Anidado, ... */ int coment; /* 0-Código, 1-Dentro de comentario, 2-Anidado, ... */
int old_linea; /* Situación en el fichero del token anterior al último leido */ int old_linea; /* Situación en el fichero del token anterior al último leido */
byte * old_ierror, * old_ierror_end; byte * old_ierror, * old_ierror_end;
/* El último token leido está en (linea,ierror,ierror_end) */ /* El último token leido está en (linea,ierror,ierror_end) */
byte * ultima_linea,cero; byte * ultima_linea,cero;
/* Siguiente token -> next_lexico() */ /* Siguiente token -> next_lexico() */

View file

@ -18,7 +18,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
// ¡ojo! versión capada, no devuelve errores // ¡ojo! versión capada, no devuelve errores
#ifdef WIN32 #ifdef WIN32
# define el_stub "stub.exe" # define el_stub "stub.exe"
@ -112,9 +112,9 @@ void init_rnd_coder(int n, char * clave)
rndb(); rndb();
} }
//ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ //ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
// Funci¢n de encriptaci¢n/desencriptaci¢n // Funci¢n de encriptaci¢n/desencriptaci¢n
//ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ //ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
void coder(byte * ptr, int len, char * clave) void coder(byte * ptr, int len, char * clave)
{ {

View file

@ -23,7 +23,7 @@
/* /*
-Estructura de control -Estructura de control
contiene informacion sobre el offset y tamaño del bmp en el fichero .fnt contiene informacion sobre el offset y tamaño del bmp en el fichero .fnt
para poder leerlo, tambien contiene el offset de la estructura de informacion para poder leerlo, tambien contiene el offset de la estructura de informacion
-Mapa de caracteres -Mapa de caracteres
es la imagen del mapa de caracteres, se copia directamente. es la imagen del mapa de caracteres, se copia directamente.

View file

@ -25,7 +25,7 @@
#include "main.h" #include "main.h"
#include "varindex.h" #include "varindex.h"
#define MAX_EXTERN_FUNCS 0xFFFF /* ¿Demasiado? */ #define MAX_EXTERN_FUNCS 0xFFFF /* ¿Demasiado? */
#define MAX_EXTFUNC_PARMS 0xFF #define MAX_EXTFUNC_PARMS 0xFF
#define MAX_DLLS 0xFF #define MAX_DLLS 0xFF
#define MAX_ENTRYPOINTS 0xFF #define MAX_ENTRYPOINTS 0xFF
@ -33,7 +33,7 @@
#define P_SIEMPRE 512 /* yo creo ke esto vale */ #define P_SIEMPRE 512 /* yo creo ke esto vale */
#define P_NUNCA -512 #define P_NUNCA -512
char fichdll[256]; /* Nombre de la DLL que se está ejecutando ahora */ char fichdll[256]; /* Nombre de la DLL que se está ejecutando ahora */
/* /*
@ -89,7 +89,7 @@ typedef void (TYPEOF_Runtime_Error)(int, ...);
typedef void (TYPEOF_Critical_Error)(int, ...); typedef void (TYPEOF_Critical_Error)(int, ...);
typedef void (TYPEOF_Custom_Error)(int,char*); typedef void (TYPEOF_Custom_Error)(int,char*);
/* Obtiene offset de variable indexada dinámicamente */ /* Obtiene offset de variable indexada dinámicamente */
typedef int (TYPEOF_GetVarOffset)(tipo_t tipo,char* nombre); typedef int (TYPEOF_GetVarOffset)(tipo_t tipo,char* nombre);
/* Finaliza el stub (exit) */ /* Finaliza el stub (exit) */
@ -99,7 +99,7 @@ typedef void (TYPEOF_Stub_Quit)(int n);
* ENTRY-POINTS * ENTRY-POINTS
* *
* Estas funciones son llamadas por el STUB en determinados eventos * Estas funciones son llamadas por el STUB en determinados eventos
* (Cuando una DLL hace cierta acción, lo avisa al Stub y el stub se encarga de llamar * (Cuando una DLL hace cierta acción, lo avisa al Stub y el stub se encarga de llamar
* a las correspondientes rutinas de las dll's, ordenadas por prioridad) * a las correspondientes rutinas de las dll's, ordenadas por prioridad)
*/ */
@ -107,7 +107,7 @@ typedef void (TYPEOF_Stub_Quit)(int n);
* Constantes para EDIV_Export_Entrypoint * Constantes para EDIV_Export_Entrypoint
*/ */
#define EDIV_set_video_mode 1 // Al activar un nuevo modo de vídeo #define EDIV_set_video_mode 1 // Al activar un nuevo modo de vídeo
#define EDIV_process_palette 2 // Al cargar una paleta #define EDIV_process_palette 2 // Al cargar una paleta
#define EDIV_process_active_palette 3 // Al modificar la paleta activa (usada en los fades) #define EDIV_process_active_palette 3 // Al modificar la paleta activa (usada en los fades)
#define EDIV_process_sound 4 // Al cargar un efecto sonoro #define EDIV_process_sound 4 // Al cargar un efecto sonoro
@ -126,7 +126,7 @@ typedef void (TYPEOF_Stub_Quit)(int n);
#define EDIV_ss_frame 17 // Frame de salvapantallas #define EDIV_ss_frame 17 // Frame de salvapantallas
#define EDIV_ss_end 18 // Fin de salvapantallas #define EDIV_ss_end 18 // Fin de salvapantallas
#define EDIV_frame 19 // En cada frame #define EDIV_frame 19 // En cada frame
#define EDIV_trace 20 // Después de ejecutar cada instrucción de bytecode (solo en debug) #define EDIV_trace 20 // Después de ejecutar cada instrucción de bytecode (solo en debug)
#define EDIV_debug 21 // Invocar al trazador - sentencia debug (solo en debug) #define EDIV_debug 21 // Invocar al trazador - sentencia debug (solo en debug)
#define EDIV_first_load 22 // Se ejecuta al cargar la DLL en ejecucion #define EDIV_first_load 22 // Se ejecuta al cargar la DLL en ejecucion
#define EDIV_quit 23 // Llamado por stub_quit() #define EDIV_quit 23 // Llamado por stub_quit()
@ -134,7 +134,7 @@ typedef void (TYPEOF_Stub_Quit)(int n);
/* /*
* Call_Entrypoint * Call_Entrypoint
* *
* Devuelve el número de entrypoints a los que corresponde ese identificador. * Devuelve el número de entrypoints a los que corresponde ese identificador.
* (0 si no hay ninguno) * (0 si no hay ninguno)
*/ */
int Call_Entrypoint(int ep, ...); int Call_Entrypoint(int ep, ...);
@ -178,9 +178,9 @@ TYPEOF_EDIV_Export_Priority *
typedef int (TYPEOF_ExportaFuncs)(EXPORTAFUNCS_PARAMS_DECLARE); typedef int (TYPEOF_ExportaFuncs)(EXPORTAFUNCS_PARAMS_DECLARE);
/* FUNCIÓN EXTERNA */ /* FUNCIÓN EXTERNA */
/* ¡ojo! debe ser igual en export.h */ /* ¡ojo! debe ser igual en export.h */
#define FUNCTION_PARAMS \ #define FUNCTION_PARAMS \
int *params, int *sp, \ int *params, int *sp, \
int mem[], \ int mem[], \
@ -275,24 +275,24 @@ struct _fun_params{
/* /*
* La pila de parametros y su señalador o como se llame * La pila de parametros y su señalador o como se llame
* int params[MAX_EXTFUNC_PARMS]; * int params[MAX_EXTFUNC_PARMS];
* int sp; * int sp;
*/ */
void* extfuncs[MAX_EXTERN_FUNCS]; /* tabla de punteros a las funciones de las DLLs (stub) */ void* extfuncs[MAX_EXTERN_FUNCS]; /* tabla de punteros a las funciones de las DLLs (stub) */
int extparms[MAX_EXTERN_FUNCS]; /* nº de parámetros de cada función externa (necesario para la sobrecarga) */ int extparms[MAX_EXTERN_FUNCS]; /* nº de parámetros de cada función externa (necesario para la sobrecarga) */
struct _entrypoints { struct _entrypoints {
int tipo; /* Ver #defines de entrypoints más arriba */ int tipo; /* Ver #defines de entrypoints más arriba */
int dll; /* DLL que contiene este entrypoint */ int dll; /* DLL que contiene este entrypoint */
void* hfuncion; /* Puntero a la función entrypoint de la DLL */ void* hfuncion; /* Puntero a la función entrypoint de la DLL */
} entrypoints[MAX_ENTRYPOINTS]; } entrypoints[MAX_ENTRYPOINTS];
struct _dlls { struct _dlls {
char* nombre; /* nombre de la DLL (ej: "sample.so") */ char* nombre; /* nombre de la DLL (ej: "sample.so") */
byte usado; /* si la dll es requerida por el programa */ byte usado; /* si la dll es requerida por el programa */
int mem_nombre; /* posición del nombre en mem[] */ int mem_nombre; /* posición del nombre en mem[] */
int prioridad; /* prioridad por defecto de la DLL */ int prioridad; /* prioridad por defecto de la DLL */
void* hDLL; void* hDLL;
} dlls[MAX_DLLS]; } dlls[MAX_DLLS];
@ -300,9 +300,9 @@ struct _dlls {
int dimem; /* indices para poder devolver offsets de variables segun se van declarando */ int dimem; /* indices para poder devolver offsets de variables segun se van declarando */
int diloc; int diloc;
int numdlls; /* Número de DLLs encontradas en el directorio */ int numdlls; /* Número de DLLs encontradas en el directorio */
int n_dlls; /* Número de DLLs requeridas por el programa */ int n_dlls; /* Número de DLLs requeridas por el programa */
int n_externs; /* Número de funciones importadas */ int n_externs; /* Número de funciones importadas */
int n_entrypoints; /* Número de entrypoints declarados */ int n_entrypoints; /* Número de entrypoints declarados */
#endif // __EXTERN_H #endif // __EXTERN_H

View file

@ -21,11 +21,11 @@
/* /*
* IDs de idioma: * IDs de idioma:
* 0 - ES - Español * 0 - ES - Español
* 1 - IT - Italiano (CicTec) * 1 - IT - Italiano (CicTec)
* 2 - PT - Portugués (tareco) * 2 - PT - Portugués (tareco)
* 3 - EN - Inglés (de momento Er_Makina :P) * 3 - EN - Inglés (de momento Er_Makina :P)
* 4 - CA - Catalán (BenKo) * 4 - CA - Catalán (BenKo)
* 5 - EU - Euskera (Jorge Urreta) * 5 - EU - Euskera (Jorge Urreta)
*/ */

View file

@ -21,13 +21,13 @@
/* /*
* ARCHIVO DE IDIOMA DE EDIV * ARCHIVO DE IDIOMA DE EDIV
* 4 - CATALÁN (ca) * 4 - CATALÁN (ca)
* Autora: Belén Albeza (BenKo) * Autora: Belén Albeza (BenKo)
*/ */
/* /*
* Errores de compilación * Errores de compilación
*/ */
#if TRANSLATE == TRANSLATE_ERROR #if TRANSLATE == TRANSLATE_ERROR
@ -36,45 +36,45 @@
/* 1 */ "Ha arribat el final dins d' un comentari", /* 1 */ "Ha arribat el final dins d' un comentari",
/* 2 */ "Excedida la capacitat del vector de noms", /* 2 */ "Excedida la capacitat del vector de noms",
/* 3 */ "Literal sense tancar", /* 3 */ "Literal sense tancar",
/* 4 */ "Símbol no reconegut", /* 4 */ "Símbol no reconegut",
/* 5 */ "Caràcter no reconegut", /* 5 */ "Caràcter no reconegut",
/* 6 */ "Excedida la capacitat de la tabla d' objectes", /* 6 */ "Excedida la capacitat de la tabla d' objectes",
/* 7 */ "Esperant '='", /* 7 */ "Esperant '='",
/* 8 */ "Esperant una opció de compilació", /* 8 */ "Esperant una opció de compilació",
/* 9 */ "Esperant ';'", /* 9 */ "Esperant ';'",
/* 10 */ "S' esperava un operand", /* 10 */ "S' esperava un operand",
/* 11 */ "Expresió incorrecta", /* 11 */ "Expresió incorrecta",
/* 12 */ "Asignació a cadena incorrecta", /* 12 */ "Asignació a cadena incorrecta",
/* 13 */ "Asignació incorrecta", /* 13 */ "Asignació incorrecta",
/* 14 */ "No es pot calcular l' offset de la dada", /* 14 */ "No es pot calcular l' offset de la dada",
/* 15 */ "No es pot calcular l' offset", /* 15 */ "No es pot calcular l' offset",
/* 16 */ "No es pot realitzar l' increment", /* 16 */ "No es pot realitzar l' increment",
/* 17 */ "Local no es pot accedir", /* 17 */ "Local no es pot accedir",
/* 18 */ "Esperant ')'", /* 18 */ "Esperant ')'",
/* 19 */ "Esperant ']'", /* 19 */ "Esperant ']'",
/* 20 */ "No és un tipus de procés", /* 20 */ "No és un tipus de procés",
/* 21 */ "Esperant el nom del procés", /* 21 */ "Esperant el nom del procés",
/* 22 */ "Esperant '('", /* 22 */ "Esperant '('",
/* 23 */ "Esperant un nom", /* 23 */ "Esperant un nom",
/* 24 */ "No es pot calcular el tamany", /* 24 */ "No es pot calcular el tamany",
/* 25 */ "Expresió incorrecta", /* 25 */ "Expresió incorrecta",
/* 26 */ "No es pot rebre una estructura com a paràmetre", /* 26 */ "No es pot rebre una estructura com a paràmetre",
/* 27 */ "Esperant el nom de la estructura", /* 27 */ "Esperant el nom de la estructura",
/* 28 */ "Declaració incorrecta de punter a una estructura", /* 28 */ "Declaració incorrecta de punter a una estructura",
/* 29 */ "Esperant el nom de la cadena", /* 29 */ "Esperant el nom de la cadena",
/* 30 */ "El nom no és nou", /* 30 */ "El nom no és nou",
/* 31 */ "Cadena de text de longitud negativa", /* 31 */ "Cadena de text de longitud negativa",
/* 32 */ "Cadena de text massa llarga", /* 32 */ "Cadena de text massa llarga",
/* 33 */ "No es pot especificar una tabla com a paràmetre", /* 33 */ "No es pot especificar una tabla com a paràmetre",
/* 34 */ "Nombre desconegut: %s", /* 34 */ "Nombre desconegut: %s",
/* 35 */ "S' esperava una coma", /* 35 */ "S' esperava una coma",
/* 36 */ "S' esperaba altre paràmetre", /* 36 */ "S' esperaba altre paràmetre",
/* 37 */ "No es pot accedir a dades PRIVATE externes", /* 37 */ "No es pot accedir a dades PRIVATE externes",
/* 38 */ "Nombre de paràmetres incorrecte", /* 38 */ "Nombre de paràmetres incorrecte",
/* 39 */ "Esperant un element de la estructura", /* 39 */ "Esperant un element de la estructura",
/* 40 */ "Tabla de longitud negativa", /* 40 */ "Tabla de longitud negativa",
/* 41 */ "La longitud no coincideix amb la declaració anterior", /* 41 */ "La longitud no coincideix amb la declaració anterior",
/* 42 */ "No es pot inicialitzar un paràmetre", /* 42 */ "No es pot inicialitzar un paràmetre",
/* 43 */ "Estructura de longitud negativa", /* 43 */ "Estructura de longitud negativa",
/* 44 */ "Esperant PROGRAM", /* 44 */ "Esperant PROGRAM",
/* 45 */ "Esperant el nom del programa", /* 45 */ "Esperant el nom del programa",
@ -85,26 +85,26 @@
/* 50 */ "Valor BYTE fora del rang (0...255)", /* 50 */ "Valor BYTE fora del rang (0...255)",
/* 51 */ "Valor WORD fora del rang (0...65535)", /* 51 */ "Valor WORD fora del rang (0...65535)",
/* 52 */ "No es pot duplicar 0 o menys vegades", /* 52 */ "No es pot duplicar 0 o menys vegades",
/* 53 */ "Inicialització incorrecta", /* 53 */ "Inicialització incorrecta",
/* 54 */ "S' esperava una expresió constant", /* 54 */ "S' esperava una expresió constant",
/* 55 */ "Massa valors per a la estructura", /* 55 */ "Massa valors per a la estructura",
/* 56 */ "Esperant BEGIN", /* 56 */ "Esperant BEGIN",
/* 57 */ "Esperant END", /* 57 */ "Esperant END",
/* 58 */ "Esperant UNTIL", /* 58 */ "Esperant UNTIL",
/* 59 */ "Esperant una variable", /* 59 */ "Esperant una variable",
/* 60 */ "Esperant TO", /* 60 */ "Esperant TO",
/* 61 */ "Sentència FROM incorrecta", /* 61 */ "Sentència FROM incorrecta",
/* 62 */ "El valor STEP no es vàlid", /* 62 */ "El valor STEP no es vàlid",
/* 63 */ "Esperant CASE, DEFAULT o END", /* 63 */ "Esperant CASE, DEFAULT o END",
/* 64 */ "Esperant ':'", /* 64 */ "Esperant ':'",
/* 65 */ "BREAK no apareix dins d' un bucle", /* 65 */ "BREAK no apareix dins d' un bucle",
/* 66 */ "CONTINUE no apareix dins d' un bucle", /* 66 */ "CONTINUE no apareix dins d' un bucle",
/* 67 */ "S' esperava una sentència", /* 67 */ "S' esperava una sentència",
/* 68 */ "Expresió sense sentit", /* 68 */ "Expresió sense sentit",
/* 69 */ "Asignació dins d' una condició", /* 69 */ "Asignació dins d' una condició",
/* 70 */ "Esperant el nomb del procés o funció", /* 70 */ "Esperant el nomb del procés o funció",
/* 71 */ "Esperant PROCESS o FUNCTION", /* 71 */ "Esperant PROCESS o FUNCTION",
/* 72 */ "Paràmetre no vàlid", /* 72 */ "Paràmetre no vàlid",
/* 73 */ "ELSEIF no apareix dins d' un bloc IF" /* SIN COMA */ /* 73 */ "ELSEIF no apareix dins d' un bloc IF" /* SIN COMA */
@ -115,7 +115,7 @@
#elif TRANSLATE == TRANSLATE_WARNING #elif TRANSLATE == TRANSLATE_WARNING
/* 0 */ "", /* 0 */ "",
/* 1 */ "SETUP_PROGRAM: Característica desfasada", /* 1 */ "SETUP_PROGRAM: Característica desfasada",
/* 2 */ "IMPORT: Sintaxi antiga, s' ignora" /* SIN COMA */ /* 2 */ "IMPORT: Sintaxi antiga, s' ignora" /* SIN COMA */
@ -126,13 +126,13 @@
#elif TRANSLATE == TRANSLATE_DLL_ERROR #elif TRANSLATE == TRANSLATE_DLL_ERROR
/* 1 */ "Sobrepassat buffer de noms d' objecte", /* 1 */ "Sobrepassat buffer de noms d' objecte",
/* 2 */ "Objecte '%s': El nom no és nou", /* 2 */ "Objecte '%s': El nom no és nou",
/* 3 */ "Massa objectes declarats", /* 3 */ "Massa objectes declarats",
/* 4 */ "Funció '%s': El nom no és nou", /* 4 */ "Funció '%s': El nom no és nou",
/* 5 */ "Error declarant objecte '%s'", /* 5 */ "Error declarant objecte '%s'",
/* 6 */ "Objecte '%s': Declaració il·legal dins d' struct", /* 6 */ "Objecte '%s': Declaració il·legal dins d' struct",
/* 7 */ "Objecte '%s': Declaració d' un membre fora d' struct", /* 7 */ "Objecte '%s': Declaració d' un membre fora d' struct",
/* 8 */ "Tamany il·legal de l' string '%s'", /* 8 */ "Tamany il·legal de l' string '%s'",
/* 9 */ "EndStruct sense Struct", /* 9 */ "EndStruct sense Struct",
/* 10 */ "Una estructura ha de contenir almenys un element" /* SIN COMA */ /* 10 */ "Una estructura ha de contenir almenys un element" /* SIN COMA */
@ -146,8 +146,8 @@
/* 0 */ "", /* 0 */ "",
/* 1 */ "Arxiu ltlex.def no trobat", /* 1 */ "Arxiu ltlex.def no trobat",
/* 2 */ "S' esperava un valor hexadecimal (&00..&FF)", /* 2 */ "S' esperava un valor hexadecimal (&00..&FF)",
/* 3 */ "Massa símbols definits", /* 3 */ "Massa símbols definits",
/* 4 */ "Símbol no vàlid" /* SIN COMA */ /* 4 */ "Símbol no vàlid" /* SIN COMA */
/* /*
@ -157,47 +157,47 @@
#elif TRANSLATE == TRANSLATE_COMPILER #elif TRANSLATE == TRANSLATE_COMPILER
/* 0 */ " **** Compilador eDIV " VERSION " ****\n" COPYRIGHT "\n" WEBSITE "\n", /* 0 */ " **** Compilador eDIV " VERSION " ****\n" COPYRIGHT "\n" WEBSITE "\n",
/* 1 */ "ATENCIÓ: Aquesta versió d' eDIV està sense acabar.\nSi us plau, informi de qualsevol bug a: ediv@divsite.net\n", /* 1 */ "ATENCIÓ: Aquesta versió d' eDIV està sense acabar.\nSi us plau, informi de qualsevol bug a: ediv@divsite.net\n",
/* 2 */ "Ajuda d' opcions de comand:\n\n", /* 2 */ "Ajuda d' opcions de comand:\n\n",
/* 3 */ "%s [opcions] arxiu.prg [executable]\n\n", /* 3 */ "%s [opcions] arxiu.prg [executable]\n\n",
/* 4 */ "Llista d' opcions:\n", /* 4 */ "Llista d' opcions:\n",
/* 5 */ " -h, --help Mostra aquesta ajuda i en sort\n", /* 5 */ " -h, --help Mostra aquesta ajuda i en sort\n",
/* 6 */ " -d, --debug Genera informació adicional de depurat\n", /* 6 */ " -d, --debug Genera informació adicional de depurat\n",
/* 7 */ " -l, --list Guarda el llistat EML com a <programa.eml>\n", /* 7 */ " -l, --list Guarda el llistat EML com a <programa.eml>\n",
/* 8 */ " -t, --table Guarda la tabla d' objectes com a <programa.tab>\n", /* 8 */ " -t, --table Guarda la tabla d' objectes com a <programa.tab>\n",
/* 9 */ " -c, --check No genera un executable (per comprovar sintaxi, etc.)\n", /* 9 */ " -c, --check No genera un executable (per comprovar sintaxi, etc.)\n",
/* 10 */ " -s, --system Sistema Operatiu destí (per defecte %s)\n", /* 10 */ " -s, --system Sistema Operatiu destí (per defecte %s)\n",
/* 11 */ " -v, --version Mostra versió i en sort\n\n", /* 11 */ " -v, --version Mostra versió i en sort\n\n",
/* 12 */ "Paràmetre --system: ha d' indicar un sistema destí\nConsulti la documentació per a obtenir ajuda\n", /* 12 */ "Paràmetre --system: ha d' indicar un sistema destí\nConsulti la documentació per a obtenir ajuda\n",
/* 13 */ "Paràmetre erroni: %s\nUtilitze la opció -h per a veure l' ajuda\n", /* 13 */ "Paràmetre erroni: %s\nUtilitze la opció -h per a veure l' ajuda\n",
/* 14 */ "Paràmetre -s: ha d' indicar un sistema destí\nConsulti la documentació per a obtenir ajuda\n", /* 14 */ "Paràmetre -s: ha d' indicar un sistema destí\nConsulti la documentació per a obtenir ajuda\n",
/* 15 */ "Paràmetre erroni: -%c\nUtilitze la opció -h per a veure l' ajuda\n", /* 15 */ "Paràmetre erroni: -%c\nUtilitze la opció -h per a veure l' ajuda\n",
/* 16 */ "No s'ha especificat un arxiu\nUtilitze la opció -h per a veure l' ajuda\n", /* 16 */ "No s'ha especificat un arxiu\nUtilitze la opció -h per a veure l' ajuda\n",
/* 17 */ "edivc: Error obrint l' arxiu %s.\n", /* 17 */ "edivc: Error obrint l' arxiu %s.\n",
/* 18 */ "edivc: Compilant: %s\n", /* 18 */ "edivc: Compilant: %s\n",
/* 19 */ "edivc: ERROR: No es troba %s\n", /* 19 */ "edivc: ERROR: No es troba %s\n",
/* 20 */ "edivc: ERROR: Format incorrecte de %s\n", /* 20 */ "edivc: ERROR: Format incorrecte de %s\n",
/* 21 */ "edivc: Interromput (%d advertències)\n", /* 21 */ "edivc: Interromput (%d advertències)\n",
/* 22 */ "edivc: Finalitzat amb èxit (%d advertències)\n", /* 22 */ "edivc: Finalitzat amb èxit (%d advertències)\n",
/* 23 */ "edivc: Sortida amb errors\n", /* 23 */ "edivc: Sortida amb errors\n",
/* 24 */ "edivc: ERROR: Memòria insuficient\n", /* 24 */ "edivc: ERROR: Memòria insuficient\n",
/* 25 */ "%s:%d:%d: ERROR %d: ", /* 25 */ "%s:%d:%d: ERROR %d: ",
/* 26 */ "%s:%d: Advertència: ", /* 26 */ "%s:%d: Advertència: ",
/* 27 */ "Precompilant...\n", /* 27 */ "Precompilant...\n",
/* 28 */ "Compilant...\n", /* 28 */ "Compilant...\n",
/* 29 */ "Error creant arxiu d' intercanvi\n", /* 29 */ "Error creant arxiu d' intercanvi\n",
/* 30 */ "Generant llistats...\n", /* 30 */ "Generant llistats...\n",
/* 31 */ "Guardant executable...\n", /* 31 */ "Guardant executable...\n",
/* 32 */ "Guardant informació de depurat...\n", /* 32 */ "Guardant informació de depurat...\n",
/* 33 */ "Error escriguent executable\n", /* 33 */ "Error escriguent executable\n",
/* 34 */ "Compilació finalitzada.\n", /* 34 */ "Compilació finalitzada.\n",
/* 35 */ "%s: ERROR: ", /* 35 */ "%s: ERROR: ",
/* 36 */ "Error creant arxiu %s\n", /* 36 */ "Error creant arxiu %s\n",
/* 37 */ "Llistado d' objectes de %s - eDIV versió " VERSION "\n\n", /* 37 */ "Llistado d' objectes de %s - eDIV versió " VERSION "\n\n",
/* 38 */ "\tbloque(%u), anterior(%u)\n", /* 38 */ "\tbloque(%u), anterior(%u)\n",
/* 39 */ "Codi EML de %s - eDIV versió " VERSION "\n", /* 39 */ "Codi EML de %s - eDIV versió " VERSION "\n",
/* 40 */ "edivc: ERROR: %s\n\n", /* 40 */ "edivc: ERROR: %s\n\n",
/* 41 */ "edivc: %s (línia %d) ERROR: %s\n\n", /* 41 */ "edivc: %s (línia %d) ERROR: %s\n\n",
/* 42 */ "edivc: Interromput - s' han trobat errors\n", /* 42 */ "edivc: Interromput - s' han trobat errors\n",
#ifdef _WIN32 #ifdef _WIN32
/* 43 */ "No es troba cap DLL\n", /* 43 */ "No es troba cap DLL\n",
@ -206,17 +206,17 @@
/* 43 */ "No es troba cap llibreria\n", /* 43 */ "No es troba cap llibreria\n",
/* 44 */ "Directori %s/ no trobat\n", /* 44 */ "Directori %s/ no trobat\n",
#endif #endif
/* 45 */ "Error cargant llibrería %s\n", /* 45 */ "Error cargant llibrería %s\n",
#ifdef _WIN32 #ifdef _WIN32
/* 46 */ "No es pot cargar %s\n", /* 46 */ "No es pot cargar %s\n",
/* 47 */ "No es troba ExportaFuncs en %s - DLL no vàlida\n", /* 47 */ "No es troba ExportaFuncs en %s - DLL no vàlida\n",
#else #else
/* 46 */ "No es pot cargar %s (%s)\n", /* 46 */ "No es pot cargar %s (%s)\n",
/* 47 */ "No es troba ExportaFuncs en %s - Llibreria no vàlida (%s)\n", /* 47 */ "No es troba ExportaFuncs en %s - Llibreria no vàlida (%s)\n",
#endif #endif
/* 48 */ " -n, --news Mostra les últimes notícies d' eDIVCentral i en surt\n", /* 48 */ " -n, --news Mostra les últimes notícies d' eDIVCentral i en surt\n",
/* 49 */ "Error: No s' ha configurat un servidor de notícies en ediv.cfg\n", /* 49 */ "Error: No s' ha configurat un servidor de notícies en ediv.cfg\n",
/* 50 */ "Error: l' arxiu rebut no és del tipus esperat\n" /* SIN COMA */ /* 50 */ "Error: l' arxiu rebut no és del tipus esperat\n" /* SIN COMA */
/* /*
@ -227,102 +227,102 @@
/* FIXMI: traducir esto */ /* FIXMI: traducir esto */
/* 0 */ "ERROR %d: ", /* 0 */ "ERROR %d: ",
/* 1 */ "eDIV: Error en ejecución", /* 1 */ "eDIV: Error en ejecución",
/* 2 */ "eDIV: Error crítico", /* 2 */ "eDIV: Error crítico",
/* 3 */ "Error en %s: ", /* 3 */ "Error en %s: ",
/* 4 */ "eDIV: Error en librería dinámica" /* SIN COMA */ /* 4 */ "eDIV: Error en librería dinámica" /* SIN COMA */
/* /*
* Errores de tiempo de ejecución del stub * Errores de tiempo de ejecución del stub
*/ */
#elif TRANSLATE == TRANSLATE_RUNTIME_ERROR #elif TRANSLATE == TRANSLATE_RUNTIME_ERROR
/* 100 */ "No hi ha memòria suficient per a executar el programa.", /* 100 */ "No hi ha memòria suficient per a executar el programa.",
/* 101 */ "Crida a key() amb un codi de tecla inexistent.", /* 101 */ "Crida a key() amb un codi de tecla inexistent.",
/* 102 */ "No es va poder carregar la paleta, arxiu no trobat.", /* 102 */ "No es va poder carregar la paleta, arxiu no trobat.",
/* 103 */ "Es va intentar carregar un arxiu de paleta invàlid.", /* 103 */ "Es va intentar carregar un arxiu de paleta invàlid.",
/* 104 */ "Massa arxius FPG oberts al mateix temps.", /* 104 */ "Massa arxius FPG oberts al mateix temps.",
/* 105 */ "No es va poder carregar l' arxiu, arxiu no trobat.", /* 105 */ "No es va poder carregar l' arxiu, arxiu no trobat.",
/* 106 */ "Es va intentar carregar un arxiu FPG no vàlid.", /* 106 */ "Es va intentar carregar un arxiu FPG no vàlid.",
/* 107 */ "Número d' scroll invàlid (ha d' estar entre 0 y 9).", /* 107 */ "Número d' scroll invàlid (ha d' estar entre 0 y 9).",
/* 108 */ "Número de regió invàlid (fora de rang).", /* 108 */ "Número de regió invàlid (fora de rang).",
/* 109 */ "Codi d' arxiu invàlido.", /* 109 */ "Codi d' arxiu invàlido.",
/* 110 */ "Codi de gràfic invàlid.", /* 110 */ "Codi de gràfic invàlid.",
/* 111 */ "Es va intentar usar un arxiu FPG abans de carregar-lo.", /* 111 */ "Es va intentar usar un arxiu FPG abans de carregar-lo.",
/* 112 */ "Es necesita un codi de gràfic per a l' scroll.", /* 112 */ "Es necesita un codi de gràfic per a l' scroll.",
/* 113 */ "S' han carregat massa fonts de lletres.", /* 113 */ "S' han carregat massa fonts de lletres.",
/* 114 */ "No es va poder carregar la font, arxiu no trobat.", /* 114 */ "No es va poder carregar la font, arxiu no trobat.",
/* 115 */ "Es va intentar carregar un arxiu de font no vàlid.", /* 115 */ "Es va intentar carregar un arxiu de font no vàlid.",
/* 116 */ "Codi identificador de font de lletres invàlid.", /* 116 */ "Codi identificador de font de lletres invàlid.",
/* 117 */ "Codi de centrat de text invàlid.", /* 117 */ "Codi de centrat de text invàlid.",
/* 118 */ "Hi ha massa textos actius al programa.", /* 118 */ "Hi ha massa textos actius al programa.",
/* 119 */ "Indentificador de text no vàlid.", /* 119 */ "Indentificador de text no vàlid.",
/* 120 */ "Regió de pantalla definida incorrectament.", /* 120 */ "Regió de pantalla definida incorrectament.",
/* 121 */ "Es va intentar utilitzar un gràfic que no existeix.", /* 121 */ "Es va intentar utilitzar un gràfic que no existeix.",
/* 122 */ "Es va intentar escriure un bloc fora de la memòria.", /* 122 */ "Es va intentar escriure un bloc fora de la memòria.",
/* 123 */ "No es va poder obrir l' arxiu per a escritura.", /* 123 */ "No es va poder obrir l' arxiu per a escritura.",
/* 124 */ "No es va poder escriure l' arxiu (veure espai al disc).", /* 124 */ "No es va poder escriure l' arxiu (veure espai al disc).",
/* 125 */ "Es va intentar llegir un bloc fora de la memòria.", /* 125 */ "Es va intentar llegir un bloc fora de la memòria.",
/* 126 */ "No es va poder obrir l' arxiu per a lectura.", /* 126 */ "No es va poder obrir l' arxiu per a lectura.",
/* 127 */ "No es va poder llegir l' arxiu.", /* 127 */ "No es va poder llegir l' arxiu.",
/* 128 */ "No es va poder carregar l' efecte de so.", /* 128 */ "No es va poder carregar l' efecte de so.",
/* 129 */ "No es va poder reproduir l' efecte de so sol·licitat.", /* 129 */ "No es va poder reproduir l' efecte de so sol·licitat.",
/* 130 */ "No es va poder iniciar l' animació sol·licitada.", /* 130 */ "No es va poder iniciar l' animació sol·licitada.",
/* 131 */ "Número de mode 7 invàlid (ha d' estar entre 0 y 9).", /* 131 */ "Número de mode 7 invàlid (ha d' estar entre 0 y 9).",
/* 132 */ "Es necessita un codi de gràfic per al mode 7.", /* 132 */ "Es necessita un codi de gràfic per al mode 7.",
/* 133 */ "Número de punt de control invàlid.", /* 133 */ "Número de punt de control invàlid.",
/* 134 */ "Número de botó incorrecte (ha d' estar entre 0 y 3).", /* 134 */ "Número de botó incorrecte (ha d' estar entre 0 y 3).",
/* 135 */ "Número d' eix incorrecte (ha d' estar entre 0 y 3).", /* 135 */ "Número d' eix incorrecte (ha d' estar entre 0 y 3).",
/* 136 */ "Direcció de la tabla de paleta fora de la memòria.", /* 136 */ "Direcció de la tabla de paleta fora de la memòria.",
/* 137 */ "No es poden comprovar regions en gràfics de mode 7.", /* 137 */ "No es poden comprovar regions en gràfics de mode 7.",
/* 138 */ "Codi d' informació gràfica incorrecte.", /* 138 */ "Codi d' informació gràfica incorrecte.",
/* 139 */ "No es poden comprovar col·lisions en gràfics de mode 7.", /* 139 */ "No es poden comprovar col·lisions en gràfics de mode 7.",
/* 140 */ "Accés fora de rang.", /* 140 */ "Accés fora de rang.",
/* 141 */ "Es va intentar accedir a un procés invàlid.", /* 141 */ "Es va intentar accedir a un procés invàlid.",
/* 142 */ "El procés sembla bloquejat, esperant FRAME.", /* 142 */ "El procés sembla bloquejat, esperant FRAME.",
/* 143 */ "No es va poder carregar el mapa, arxiu no trobat.", /* 143 */ "No es va poder carregar el mapa, arxiu no trobat.",
/* 144 */ "Es va intentar carregar un arxiu de mapa invàlid.", /* 144 */ "Es va intentar carregar un arxiu de mapa invàlid.",
/* 145 */ "S' ha intentar fer una divisió entre zero.", /* 145 */ "S' ha intentar fer una divisió entre zero.",
/* 146 */ "El tamany de la regió es incorrecte.", /* 146 */ "El tamany de la regió es incorrecte.",
/* 147 */ "No es va poder carregar FLI/FLC, arxiu no trobat.", /* 147 */ "No es va poder carregar FLI/FLC, arxiu no trobat.",
/* 148 */ "Valor de timeout incorrecte (ha de ser entre 1 y 60).", /* 148 */ "Valor de timeout incorrecte (ha de ser entre 1 y 60).",
/* 149 */ "Nombre de jugadors incorrecte (ha de ser entre 2 y 8).", /* 149 */ "Nombre de jugadors incorrecte (ha de ser entre 2 y 8).",
/* 150 */ "Només es poden enviar dades globals.", /* 150 */ "Només es poden enviar dades globals.",
/* 151 */ "Tamany de casella invàlid (ha de ser entre 1 y 256).", /* 151 */ "Tamany de casella invàlid (ha de ser entre 1 y 256).",
/* 152 */ "Map de búsqueda no vàlid (des d' 1x1 fins a 128x128).", /* 152 */ "Map de búsqueda no vàlid (des d' 1x1 fins a 128x128).",
/* 153 */ "Tamany de mapa incorrecte (des d' 1x1 fins a 32768x32768).", /* 153 */ "Tamany de mapa incorrecte (des d' 1x1 fins a 32768x32768).",
/* 154 */ "Número de color incorrecte (ha de ser ser des de 0 fins a 255).", /* 154 */ "Número de color incorrecte (ha de ser ser des de 0 fins a 255).",
/* 155 */ "El centre es troba fora dels límits del gràfic.", /* 155 */ "El centre es troba fora dels límits del gràfic.",
/* 156 */ "L' objecte es troba fora del mapa i serà eliminat.", /* 156 */ "L' objecte es troba fora del mapa i serà eliminat.",
/* 157 */ "Textura del mapa no trobada.", /* 157 */ "Textura del mapa no trobada.",
/* 158 */ "El tamany de la textura és incorrecte.", /* 158 */ "El tamany de la textura és incorrecte.",
/* 159 */ "No es va poder carregar el món, arxiu no trobat.", /* 159 */ "No es va poder carregar el món, arxiu no trobat.",
/* 160 */ "No es va poder carregar el món, arxiu no vàlid.", /* 160 */ "No es va poder carregar el món, arxiu no vàlid.",
/* 161 */ "El número de bandera no és vàlid.", /* 161 */ "El número de bandera no és vàlid.",
/* 162 */ "Dispositiu invàlid (només 1-IPX,2-SERIAL,3-MODEM).", /* 162 */ "Dispositiu invàlid (només 1-IPX,2-SERIAL,3-MODEM).",
/* 163 */ "Tamany de paquet invàlid (només des d' 1 fins a 199).", /* 163 */ "Tamany de paquet invàlid (només des d' 1 fins a 199).",
/* 164 */ "La cadena de text destí no és vàlida.", /* 164 */ "La cadena de text destí no és vàlida.",
/* 165 */ "Es va intentar accedir a un punter nul.", /* 165 */ "Es va intentar accedir a un punter nul.",
/* 166 */ "El mode d' accés a l' arxiu no és vàlid.", /* 166 */ "El mode d' accés a l' arxiu no és vàlid.",
/* 167 */ "No es va poder carregar el mòdul.", /* 167 */ "No es va poder carregar el mòdul.",
/* 168 */ "Massa errors ignorats.", /* 168 */ "Massa errors ignorats.",
/* 169 */ "Massa arxius oberts.", /* 169 */ "Massa arxius oberts.",
/* 170 */ "Identificador d' arxiu (handle) no vàlid.", /* 170 */ "Identificador d' arxiu (handle) no vàlid.",
/* 171 */ "Valor fora de rang.", /* 171 */ "Valor fora de rang.",
/* 172 */ "Massa objectes gràfics visualitzats.", /* 172 */ "Massa objectes gràfics visualitzats.",
/* 173 */ "Tipus d' objecte gràfic no conegut.", /* 173 */ "Tipus d' objecte gràfic no conegut.",
/* 174 */ "Percentatge de tinta fora de rang (0..15).", /* 174 */ "Percentatge de tinta fora de rang (0..15).",
/* 175 */ "Número d' objecte gràfic no vàlid.", /* 175 */ "Número d' objecte gràfic no vàlid.",
/* 176 */ "Error variable de mode 8: Textura de mapa [a] no trobada en arxiu [b].", /* 176 */ "Error variable de mode 8: Textura de mapa [a] no trobada en arxiu [b].",
/* 177 */ "Textura de map.", /* 177 */ "Textura de map.",
/* 178 */ "no trobada en arxiu.", /* 178 */ "no trobada en arxiu.",
/* 179 */ "Es van realitzar massa peticions de memòria dinàmica.", /* 179 */ "Es van realitzar massa peticions de memòria dinàmica.",
/* 180 */ "El punter no es correspón amb ningú dels blocs reservats.", /* 180 */ "El punter no es correspón amb ningú dels blocs reservats.",
/* 181 */ "No es poden reservar blocs de menys d' una posició.", /* 181 */ "No es poden reservar blocs de menys d' una posició.",
/* 182 */ "Es va intentar (des)encriptar un bloc fora de la memòria.", /* 182 */ "Es va intentar (des)encriptar un bloc fora de la memòria.",
/* 183 */ "No es pot carregar altra paleta quan està forçada l' actual.", /* 183 */ "No es pot carregar altra paleta quan està forçada l' actual.",
/* 184 */ "", /* 184 */ "",
/* 185 */ "", /* 185 */ "",
/* 186 */ "", /* 186 */ "",
@ -343,7 +343,7 @@
/* /*
* Errores críticos del stub * Errores críticos del stub
*/ */
#elif TRANSLATE == TRANSLATE_CRITICAL_ERROR #elif TRANSLATE == TRANSLATE_CRITICAL_ERROR
@ -351,13 +351,13 @@
/* 0 */ "", /* 0 */ "",
/* 1 */ "Error llegint el codi del programa", /* 1 */ "Error llegint el codi del programa",
/* 2 */ "Error en el format de codi", /* 2 */ "Error en el format de codi",
/* 3 */ "Redefinició del tipus de procés", /* 3 */ "Redefinició del tipus de procés",
/* 4 */ "No es va poder reservar memòria per a la pila", /* 4 */ "No es va poder reservar memòria per a la pila",
/* 5 */ "Llibreria no trobada: %s", /* 5 */ "Llibreria no trobada: %s",
/* 6 */ "%s no és una llibreria vàlida d' eDIV", /* 6 */ "%s no és una llibreria vàlida d' eDIV",
/* 7 */ "No se pudo inicializar SDL", // FIXME: traducir esto /* 7 */ "No se pudo inicializar SDL", // FIXME: traducir esto
/* 8 */ "Demasiados procesos en ejecución", // FIXME: traducir esto /* 8 */ "Demasiados procesos en ejecución", // FIXME: traducir esto
/* 9 */ "Se requiere SDL versión %d.%d.%d\nVersión detectada en el sistema: %d.%d.%d" /* SIN COMA */ // FIXME: traducir esto /* 9 */ "Se requiere SDL versión %d.%d.%d\nVersión detectada en el sistema: %d.%d.%d" /* SIN COMA */ // FIXME: traducir esto
#endif #endif

View file

@ -255,7 +255,7 @@
#elif TRANSLATE == TRANSLATE_RUNTIME_ERROR #elif TRANSLATE == TRANSLATE_RUNTIME_ERROR
/* TODO: Creo que esta traducción es un poco patatera, voy a tener que revisarla un poco. */ /* TODO: Creo que esta traducción es un poco patatera, voy a tener que revisarla un poco. */
/* 100 */ "There is not enough memory to execute the program.", /* 100 */ "There is not enough memory to execute the program.",
/* 101 */ "Call to a key() with a nonexistent key code.", /* 101 */ "Call to a key() with a nonexistent key code.",
/* 102 */ "The palette was not loaded, archive not found.", /* 102 */ "The palette was not loaded, archive not found.",

View file

@ -21,48 +21,48 @@
/* /*
* ARCHIVO DE IDIOMA DE EDIV * ARCHIVO DE IDIOMA DE EDIV
* 0 - ESPAÑOL (es) * 0 - ESPAÑOL (es)
* Autores: eDIV Team, Hammer Technologies * Autores: eDIV Team, Hammer Technologies
*/ */
/* /*
* Este archivo puede usarse como archivo de plantilla para hacer nuevas * Este archivo puede usarse como archivo de plantilla para hacer nuevas
* traducciones. Si quieres que eDIV soporte un nuevo idioma, traduce este * traducciones. Si quieres que eDIV soporte un nuevo idioma, traduce este
* archivo y envíanoslo por email. * archivo y envíanoslo por email.
* De momento eDIV no soporta Unicode, pero si tu idioma lo requiere, * De momento eDIV no soporta Unicode, pero si tu idioma lo requiere,
* avísanos y nos ocuparemos de que lo soporte :) * avísanos y nos ocuparemos de que lo soporte :)
* *
* Si editas este archivo, por favor: * Si editas este archivo, por favor:
* - Puedes utilizar un editor de Linux, Windows o Mac, pero NO uses un * - Puedes utilizar un editor de Linux, Windows o Mac, pero NO uses un
* editor de MS-DOS (como EDIT.COM), ya que destrozarás todos los acentos * editor de MS-DOS (como EDIT.COM), ya que destrozarás todos los acentos
* y caracteres especiales. * y caracteres especiales.
* - Respeta la numeración de los mensajes. * - Respeta la numeración de los mensajes.
* - Respeta las comillas, los símbolos reservados de C (%s, \n, etc), * - Respeta las comillas, los símbolos reservados de C (%s, \n, etc),
* las instrucciones de preprocesador (#ifdef, #else, etc)... * las instrucciones de preprocesador (#ifdef, #else, etc)...
* - Ten especial cuidado con las comas que aparecen al final de todas las * - Ten especial cuidado con las comas que aparecen al final de todas las
* líneas, EXCEPTO en la última línea de cada bloque. * líneas, EXCEPTO en la última línea de cada bloque.
*/ */
/* /*
* Errores de compilación * Errores de compilación
*/ */
#if TRANSLATE == TRANSLATE_ERROR #if TRANSLATE == TRANSLATE_ERROR
/* 0 */ "", /* 0 */ "",
/* 1 */ "Llegó el final dentro de un comentario", /* 1 */ "Llegó el final dentro de un comentario",
/* 2 */ "Excedida la capacidad del vector de nombres", /* 2 */ "Excedida la capacidad del vector de nombres",
/* 3 */ "Literal sin cerrar", /* 3 */ "Literal sin cerrar",
/* 4 */ "Símbolo no reconocido", /* 4 */ "Símbolo no reconocido",
/* 5 */ "Carácter no reconocido", /* 5 */ "Carácter no reconocido",
/* 6 */ "Excedida la capacidad de la tabla de objetos", /* 6 */ "Excedida la capacidad de la tabla de objetos",
/* 7 */ "Esperando '='", /* 7 */ "Esperando '='",
/* 8 */ "Esperando una opción de compilación", /* 8 */ "Esperando una opción de compilación",
/* 9 */ "Esperando ';'", /* 9 */ "Esperando ';'",
/* 10 */ "Se esperaba un operando", /* 10 */ "Se esperaba un operando",
/* 11 */ "Expresión incorrecta", /* 11 */ "Expresión incorrecta",
/* 12 */ "Asignación a cadena incorrecta", /* 12 */ "Asignación a cadena incorrecta",
/* 13 */ "Asignación incorrecta", /* 13 */ "Asignación incorrecta",
/* 14 */ "No se puede calcular el offset del dato", /* 14 */ "No se puede calcular el offset del dato",
/* 15 */ "No se puede calcular el offset", /* 15 */ "No se puede calcular el offset",
/* 16 */ "No se puede realizar el incremento", /* 16 */ "No se puede realizar el incremento",
@ -73,25 +73,25 @@
/* 21 */ "Esperando el nombre de un proceso", /* 21 */ "Esperando el nombre de un proceso",
/* 22 */ "Esperando '('", /* 22 */ "Esperando '('",
/* 23 */ "Esperando un nombre", /* 23 */ "Esperando un nombre",
/* 24 */ "No se puede calcular el tamaño", /* 24 */ "No se puede calcular el tamaño",
/* 25 */ "Expresión incorrecta", /* 25 */ "Expresión incorrecta",
/* 26 */ "No se puede recibir una estructura como parámetro", /* 26 */ "No se puede recibir una estructura como parámetro",
/* 27 */ "Esperando el nombre de la estructura", /* 27 */ "Esperando el nombre de la estructura",
/* 28 */ "Declaración incorrecta de puntero a una estructura", /* 28 */ "Declaración incorrecta de puntero a una estructura",
/* 29 */ "Esperando el nombre de la cadena", /* 29 */ "Esperando el nombre de la cadena",
/* 30 */ "El nombre no es nuevo", /* 30 */ "El nombre no es nuevo",
/* 31 */ "Cadena de texto de longitud negativa", /* 31 */ "Cadena de texto de longitud negativa",
/* 32 */ "Cadena de texto demasiado larga", /* 32 */ "Cadena de texto demasiado larga",
/* 33 */ "No se puede especificar una tabla como parámetro", /* 33 */ "No se puede especificar una tabla como parámetro",
/* 34 */ "Nombre desconocido: %s", /* 34 */ "Nombre desconocido: %s",
/* 35 */ "Se esperaba una coma", /* 35 */ "Se esperaba una coma",
/* 36 */ "Se esperaba otro parámetro", /* 36 */ "Se esperaba otro parámetro",
/* 37 */ "No se puede acceder a datos PRIVATE externos", /* 37 */ "No se puede acceder a datos PRIVATE externos",
/* 38 */ "Número de parámetros incorrecto", /* 38 */ "Número de parámetros incorrecto",
/* 39 */ "Esperando un elemento de la estructura", /* 39 */ "Esperando un elemento de la estructura",
/* 40 */ "Tabla de longitud negativa", /* 40 */ "Tabla de longitud negativa",
/* 41 */ "La longitud no coincide con la declaración anterior", /* 41 */ "La longitud no coincide con la declaración anterior",
/* 42 */ "No se puede inicializar un parámetro", /* 42 */ "No se puede inicializar un parámetro",
/* 43 */ "Estructura de longitud negativa", /* 43 */ "Estructura de longitud negativa",
/* 44 */ "Esperando PROGRAM", /* 44 */ "Esperando PROGRAM",
/* 45 */ "Esperando el nombre del programa", /* 45 */ "Esperando el nombre del programa",
@ -102,8 +102,8 @@
/* 50 */ "Valor BYTE fuera del rango (0...255)", /* 50 */ "Valor BYTE fuera del rango (0...255)",
/* 51 */ "Valor WORD fuera del rango (0...65535)", /* 51 */ "Valor WORD fuera del rango (0...65535)",
/* 52 */ "No se puede duplicar 0 o menos veces", /* 52 */ "No se puede duplicar 0 o menos veces",
/* 53 */ "Inicialización incorrecta", /* 53 */ "Inicialización incorrecta",
/* 54 */ "Se esperaba una expresión constante", /* 54 */ "Se esperaba una expresión constante",
/* 55 */ "Demasiados valores para la estructura", /* 55 */ "Demasiados valores para la estructura",
/* 56 */ "Esperando BEGIN", /* 56 */ "Esperando BEGIN",
/* 57 */ "Esperando END", /* 57 */ "Esperando END",
@ -111,17 +111,17 @@
/* 59 */ "Esperando una variable", /* (para el FROM) */ /* 59 */ "Esperando una variable", /* (para el FROM) */
/* 60 */ "Esperando TO", /* 60 */ "Esperando TO",
/* 61 */ "Sentencia FROM incorrecta", /* (from==to) */ /* 61 */ "Sentencia FROM incorrecta", /* (from==to) */
/* 62 */ "El valor STEP no es válido", /* 62 */ "El valor STEP no es válido",
/* 63 */ "Esperando CASE, DEFAULT o END", /* 63 */ "Esperando CASE, DEFAULT o END",
/* 64 */ "Esperando ':'", /* 64 */ "Esperando ':'",
/* 65 */ "BREAK no aparece dentro de un bucle", /* 65 */ "BREAK no aparece dentro de un bucle",
/* 66 */ "CONTINUE no aparece dentro de un bucle", /* 66 */ "CONTINUE no aparece dentro de un bucle",
/* 67 */ "Se esperaba una sentencia", /* 67 */ "Se esperaba una sentencia",
/* 68 */ "Expresión sin sentido", /* 68 */ "Expresión sin sentido",
/* 69 */ "Asignación dentro de una condición", /* 69 */ "Asignación dentro de una condición",
/* 70 */ "Esperando el nombre del proceso o función", /* 70 */ "Esperando el nombre del proceso o función",
/* 71 */ "Esperando PROCESS o FUNCTION", /* 71 */ "Esperando PROCESS o FUNCTION",
/* 72 */ "Parámetro no válido", /* 72 */ "Parámetro no válido",
/* 73 */ "ELSEIF no aparece dentro de un bloque IF" /* SIN COMA */ /* 73 */ "ELSEIF no aparece dentro de un bloque IF" /* SIN COMA */
@ -145,11 +145,11 @@
/* 1 */ "Sobrepasado buffer de nombres de objeto", /* 1 */ "Sobrepasado buffer de nombres de objeto",
/* 2 */ "Objeto '%s': El nombre no es nuevo", /* 2 */ "Objeto '%s': El nombre no es nuevo",
/* 3 */ "Demasiados objetos declarados", /* 3 */ "Demasiados objetos declarados",
/* 4 */ "Función '%s': El nombre no es nuevo", /* 4 */ "Función '%s': El nombre no es nuevo",
/* 5 */ "Error declarando objeto '%s'", /* 5 */ "Error declarando objeto '%s'",
/* 6 */ "Objeto '%s': Declaración ilegal dentro de struct", /* 6 */ "Objeto '%s': Declaración ilegal dentro de struct",
/* 7 */ "Objeto '%s': Declaración de un miembro fuera de struct", /* 7 */ "Objeto '%s': Declaración de un miembro fuera de struct",
/* 8 */ "Tamaño ilegal del string '%s'", /* 8 */ "Tamaño ilegal del string '%s'",
/* 9 */ "EndStruct sin Struct", /* 9 */ "EndStruct sin Struct",
/* 10 */ "Una estructura debe contener al menos un elemento" /* SIN COMA */ /* 10 */ "Una estructura debe contener al menos un elemento" /* SIN COMA */
@ -163,8 +163,8 @@
/* 0 */ "", /* 0 */ "",
/* 1 */ "Archivo ltlex.def no encontrado", /* 1 */ "Archivo ltlex.def no encontrado",
/* 2 */ "Se esperaba un valor hexadecimal (&00..&FF)", /* 2 */ "Se esperaba un valor hexadecimal (&00..&FF)",
/* 3 */ "Demasiados símbolos definidos", /* 3 */ "Demasiados símbolos definidos",
/* 4 */ "Símbolo no válido" /* SIN COMA */ /* 4 */ "Símbolo no válido" /* SIN COMA */
/* /*
@ -179,23 +179,23 @@
/* 3 */ "%s [opciones] archivo.prg [ejecutable]\n\n", /* 3 */ "%s [opciones] archivo.prg [ejecutable]\n\n",
/* 4 */ "Lista de opciones:\n", /* 4 */ "Lista de opciones:\n",
/* 5 */ " -h, --help Muestra esta ayuda y sale\n", /* 5 */ " -h, --help Muestra esta ayuda y sale\n",
/* 6 */ " -d, --debug Genera información adicional de depurado\n", /* 6 */ " -d, --debug Genera información adicional de depurado\n",
/* 7 */ " -l, --list Guarda el listado EML como <programa.eml>\n", /* 7 */ " -l, --list Guarda el listado EML como <programa.eml>\n",
/* 8 */ " -t, --table Guarda la tabla de objetos como <programa.tab>\n", /* 8 */ " -t, --table Guarda la tabla de objetos como <programa.tab>\n",
/* 9 */ " -c, --check No genera un ejecutable (para comprobar sintaxis, etc.)\n", /* 9 */ " -c, --check No genera un ejecutable (para comprobar sintaxis, etc.)\n",
/* 10 */ " -s, --system Sistema Operativo destino (por defecto %s)\n", /* 10 */ " -s, --system Sistema Operativo destino (por defecto %s)\n",
/* 11 */ " -v, --version Muestra versión y sale\n\n", /* 11 */ " -v, --version Muestra versión y sale\n\n",
/* 12 */ "Parámetro --system: debe indicar un sistema destino\nConsulte la documentación para obtener ayuda\n", /* 12 */ "Parámetro --system: debe indicar un sistema destino\nConsulte la documentación para obtener ayuda\n",
/* 13 */ "Parámetro erróneo: %s\nUse la opción -h para ver la ayuda\n", /* 13 */ "Parámetro erróneo: %s\nUse la opción -h para ver la ayuda\n",
/* 14 */ "Parámetro -s: debe indicar un sistema destino\nConsulte la documentación para obtener ayuda\n", /* 14 */ "Parámetro -s: debe indicar un sistema destino\nConsulte la documentación para obtener ayuda\n",
/* 15 */ "Parámetro erróneo: -%c\nUse la opción -h para ver la ayuda\n", /* 15 */ "Parámetro erróneo: -%c\nUse la opción -h para ver la ayuda\n",
/* 16 */ "No se ha especificado un archivo\nUse la opción -h para ver la ayuda\n", /* 16 */ "No se ha especificado un archivo\nUse la opción -h para ver la ayuda\n",
/* 17 */ "edivc: Error al abrir archivo %s.\n", /* 17 */ "edivc: Error al abrir archivo %s.\n",
/* 18 */ "edivc: Compilando: %s\n", /* 18 */ "edivc: Compilando: %s\n",
/* 19 */ "edivc: ERROR: No se encuentra %s\n", /* 19 */ "edivc: ERROR: No se encuentra %s\n",
/* 20 */ "edivc: ERROR: Formato incorrecto de %s\n", /* 20 */ "edivc: ERROR: Formato incorrecto de %s\n",
/* 21 */ "edivc: Interrumpido (%d advertencias)\n", /* 21 */ "edivc: Interrumpido (%d advertencias)\n",
/* 22 */ "edivc: Finalizado con éxito (%d advertencias)\n", /* 22 */ "edivc: Finalizado con éxito (%d advertencias)\n",
/* 23 */ "edivc: Salida con errores\n", /* 23 */ "edivc: Salida con errores\n",
/* 24 */ "edivc: ERROR: Memoria insuficiente\n", /* 24 */ "edivc: ERROR: Memoria insuficiente\n",
/* 25 */ "%s:%d:%d: ERROR %d: ", /* 25 */ "%s:%d:%d: ERROR %d: ",
@ -205,14 +205,14 @@
/* 29 */ "Error creando archivo de intercambio\n", /* 29 */ "Error creando archivo de intercambio\n",
/* 30 */ "Generando listados...\n", /* 30 */ "Generando listados...\n",
/* 31 */ "Guardando ejecutable...\n", /* 31 */ "Guardando ejecutable...\n",
/* 32 */ "Guardando información de depurado...\n", /* 32 */ "Guardando información de depurado...\n",
/* 33 */ "Error escribiendo ejecutable\n", /* 33 */ "Error escribiendo ejecutable\n",
/* 34 */ "Compilación finalizada.\n", /* 34 */ "Compilación finalizada.\n",
/* 35 */ "%s: ERROR: ", /* 35 */ "%s: ERROR: ",
/* 36 */ "Error creando archivo %s\n", /* 36 */ "Error creando archivo %s\n",
/* 37 */ "Listado de objetos de %s - eDIV versión " VERSION "\n\n", /* 37 */ "Listado de objetos de %s - eDIV versión " VERSION "\n\n",
/* 38 */ "\tbloque(%u), anterior(%u)\n", /* 38 */ "\tbloque(%u), anterior(%u)\n",
/* 39 */ "Código EML de %s - eDIV versión " VERSION "\n", /* 39 */ "Código EML de %s - eDIV versión " VERSION "\n",
/* 40 */ "edivc: ERROR: %s\n\n", /* 40 */ "edivc: ERROR: %s\n\n",
/* 41 */ "edivc: %s (linea %d) ERROR: %s\n\n", /* 41 */ "edivc: %s (linea %d) ERROR: %s\n\n",
/* 42 */ "edivc: Interrumpido - se han encontrado errores\n", /* 42 */ "edivc: Interrumpido - se han encontrado errores\n",
@ -220,18 +220,18 @@
/* 43 */ "No se encuentra ninguna DLL\n", /* 43 */ "No se encuentra ninguna DLL\n",
/* 44 */ "", /* 44 */ "",
#else #else
/* 43 */ "No se encuentra ninguna librería\n", /* 43 */ "No se encuentra ninguna librería\n",
/* 44 */ "Directorio %s/ no encontrado\n", /* 44 */ "Directorio %s/ no encontrado\n",
#endif #endif
/* 45 */ "Error al cargar librería %s\n", /* 45 */ "Error al cargar librería %s\n",
#ifdef _WIN32 #ifdef _WIN32
/* 46 */ "No puedo cargar %s\n", /* 46 */ "No puedo cargar %s\n",
/* 47 */ "No se encuentra ExportaFuncs en %s - DLL no valida\n", /* 47 */ "No se encuentra ExportaFuncs en %s - DLL no valida\n",
#else #else
/* 46 */ "No puedo cargar %s (%s)\n", /* 46 */ "No puedo cargar %s (%s)\n",
/* 47 */ "No se encuentra ExportaFuncs en %s - Librería no válida (%s)\n", /* 47 */ "No se encuentra ExportaFuncs en %s - Librería no válida (%s)\n",
#endif #endif
/* 48 */ " -n, --news Muestra las últimas noticias de eDivCentral.com y sale\n", /* 48 */ " -n, --news Muestra las últimas noticias de eDivCentral.com y sale\n",
/* 49 */ "Error: no se ha configurado un servidor de noticias en ediv.cfg\n", /* 49 */ "Error: no se ha configurado un servidor de noticias en ediv.cfg\n",
/* 50 */ "Error: el fichero recibido no es del tipo esperado\n" /* SIN COMA */ /* 50 */ "Error: el fichero recibido no es del tipo esperado\n" /* SIN COMA */
@ -243,102 +243,102 @@
#elif TRANSLATE == TRANSLATE_STUB #elif TRANSLATE == TRANSLATE_STUB
/* 0 */ "ERROR %d: ", /* 0 */ "ERROR %d: ",
/* 1 */ "eDIV: Error en ejecución", /* 1 */ "eDIV: Error en ejecución",
/* 2 */ "eDIV: Error crítico", /* 2 */ "eDIV: Error crítico",
/* 3 */ "Error en %s: ", /* 3 */ "Error en %s: ",
/* 4 */ "eDIV: Error en librería dinámica" /* SIN COMA */ /* 4 */ "eDIV: Error en librería dinámica" /* SIN COMA */
/* /*
* Errores de tiempo de ejecución del stub * Errores de tiempo de ejecución del stub
*/ */
#elif TRANSLATE == TRANSLATE_RUNTIME_ERROR #elif TRANSLATE == TRANSLATE_RUNTIME_ERROR
/* 100 */ "No hay memoria suficiente para ejecutar el programa.", /* 100 */ "No hay memoria suficiente para ejecutar el programa.",
/* 101 */ "Llamada a key() con un código de tecla inexistente.", /* 101 */ "Llamada a key() con un código de tecla inexistente.",
/* 102 */ "No se pudo cargar la paleta, archivo no encontrado.", /* 102 */ "No se pudo cargar la paleta, archivo no encontrado.",
/* 103 */ "Se intentó cargar un archivo de paleta inválido.", /* 103 */ "Se intentó cargar un archivo de paleta inválido.",
/* 104 */ "Demasiados ficheros FPG abiertos a la vez.", /* 104 */ "Demasiados ficheros FPG abiertos a la vez.",
/* 105 */ "No se pudo cargar el fichero, archivo no encontrado.", /* 105 */ "No se pudo cargar el fichero, archivo no encontrado.",
/* 106 */ "Se intentó cargar un fichero FPG no válido.", /* 106 */ "Se intentó cargar un fichero FPG no válido.",
/* 107 */ "Número de scroll inválido (debe estar entre 0 y 9).", /* 107 */ "Número de scroll inválido (debe estar entre 0 y 9).",
/* 108 */ "Número de región inválido (fuera de rango).", /* 108 */ "Número de región inválido (fuera de rango).",
/* 109 */ "Código de fichero inválido.", /* 109 */ "Código de fichero inválido.",
/* 110 */ "Código de gráfico inválido.", /* 110 */ "Código de gráfico inválido.",
/* 111 */ "Se intentó usar un fichero FPG antes de cargarlo.", /* 111 */ "Se intentó usar un fichero FPG antes de cargarlo.",
/* 112 */ "Se necesita un código de gráfico para el scroll.", /* 112 */ "Se necesita un código de gráfico para el scroll.",
/* 113 */ "Se han cargado demasiados fuentes de letras.", /* 113 */ "Se han cargado demasiados fuentes de letras.",
/* 114 */ "No se pudo cargar el fuente, archivo no encontrado.", /* 114 */ "No se pudo cargar el fuente, archivo no encontrado.",
/* 115 */ "Se intentó cargar un archivo de fuente no válido.", /* 115 */ "Se intentó cargar un archivo de fuente no válido.",
/* 116 */ "Código identificador de fuente de letras inválido.", /* 116 */ "Código identificador de fuente de letras inválido.",
/* 117 */ "Código de centrado de texto inválido.", /* 117 */ "Código de centrado de texto inválido.",
/* 118 */ "Hay demasiados textos activos en el programa.", /* 118 */ "Hay demasiados textos activos en el programa.",
/* 119 */ "Indentificador de texto no válido.", /* 119 */ "Indentificador de texto no válido.",
/* 120 */ "Región de pantalla definida incorrectamente.", /* 120 */ "Región de pantalla definida incorrectamente.",
/* 121 */ "Se intentó utilizar un gráfico que no existe.", /* 121 */ "Se intentó utilizar un gráfico que no existe.",
/* 122 */ "Se intentó escribir un bloque fuera de la memoria.", /* 122 */ "Se intentó escribir un bloque fuera de la memoria.",
/* 123 */ "No se pudo abrir el archivo para escritura.", /* 123 */ "No se pudo abrir el archivo para escritura.",
/* 124 */ "No se pudo escribir el archivo (ver espacio en disco).", /* 124 */ "No se pudo escribir el archivo (ver espacio en disco).",
/* 125 */ "Se intentó leer un bloque fuera de la memoria.", /* 125 */ "Se intentó leer un bloque fuera de la memoria.",
/* 126 */ "No se pudo abrir el archivo para lectura.", /* 126 */ "No se pudo abrir el archivo para lectura.",
/* 127 */ "No se pudo leer el archivo.", /* 127 */ "No se pudo leer el archivo.",
/* 128 */ "No se pudo cargar el efecto de sonido.", /* 128 */ "No se pudo cargar el efecto de sonido.",
/* 129 */ "No se pudo tocar el efecto de sonido solicitado.", /* 129 */ "No se pudo tocar el efecto de sonido solicitado.",
/* 130 */ "No se pudo iniciar la animación solicitada.", /* 130 */ "No se pudo iniciar la animación solicitada.",
/* 131 */ "Número de modo 7 inválido (debe estar entre 0 y 9).", /* 131 */ "Número de modo 7 inválido (debe estar entre 0 y 9).",
/* 132 */ "Se necesita un código de gráfico para el modo 7.", /* 132 */ "Se necesita un código de gráfico para el modo 7.",
/* 133 */ "Número de punto de control inválido.", /* 133 */ "Número de punto de control inválido.",
/* 134 */ "Número de botón incorrecto (debe estar entre 0 y 3).", /* 134 */ "Número de botón incorrecto (debe estar entre 0 y 3).",
/* 135 */ "Número de eje incorrecto (debe estar entre 0 y 3).", /* 135 */ "Número de eje incorrecto (debe estar entre 0 y 3).",
/* 136 */ "Dirección de la tabla de paleta fuera de la memoria.", /* 136 */ "Dirección de la tabla de paleta fuera de la memoria.",
/* 137 */ "No se pueden comprobar regiones en gráficos de m-7.", /* 137 */ "No se pueden comprobar regiones en gráficos de m-7.",
/* 138 */ "Código de información gráfica incorrecto.", /* 138 */ "Código de información gráfica incorrecto.",
/* 139 */ "No se pueden comprobar colisiones en gráficos de m-7.", /* 139 */ "No se pueden comprobar colisiones en gráficos de m-7.",
/* 140 */ "Acceso fuera de rango.", /* 140 */ "Acceso fuera de rango.",
/* 141 */ "Se intentó acceder a un proceso inválido.", /* 141 */ "Se intentó acceder a un proceso inválido.",
/* 142 */ "El proceso parece bloqueado, esperando FRAME.", /* 142 */ "El proceso parece bloqueado, esperando FRAME.",
/* 143 */ "No se pudo cargar el mapa, archivo no encontrado.", /* 143 */ "No se pudo cargar el mapa, archivo no encontrado.",
/* 144 */ "Se intentó cargar un archivo de mapa inválido.", /* 144 */ "Se intentó cargar un archivo de mapa inválido.",
/* 145 */ "Se ha intentado hacer una división entre cero.", /* 145 */ "Se ha intentado hacer una división entre cero.",
/* 146 */ "El tamaño de la región es incorrecto.", /* 146 */ "El tamaño de la región es incorrecto.",
/* 147 */ "No se pudo cargar FLI/FLC, archivo no encontrado.", /* 147 */ "No se pudo cargar FLI/FLC, archivo no encontrado.",
/* 148 */ "Valor de timeout incorrecto (debe ser entre 1 y 60).", /* 148 */ "Valor de timeout incorrecto (debe ser entre 1 y 60).",
/* 149 */ "Número de jugadores incorrecto (debe ser entre 2 y 8).", /* 149 */ "Número de jugadores incorrecto (debe ser entre 2 y 8).",
/* 150 */ "Sólo se pueden enviar datos globales.", /* 150 */ "Sólo se pueden enviar datos globales.",
/* 151 */ "Tamaño de casilla inválido (debe ser entre 1 y 256).", /* 151 */ "Tamaño de casilla inválido (debe ser entre 1 y 256).",
/* 152 */ "Mapa de búsqueda no válido (desde 1x1 hasta 128x128).", /* 152 */ "Mapa de búsqueda no válido (desde 1x1 hasta 128x128).",
/* 153 */ "Tamaño de mapa incorrecto (de 1x1 a 32768x32768).", /* 153 */ "Tamaño de mapa incorrecto (de 1x1 a 32768x32768).",
/* 154 */ "Número de color incorrecto (debe ser de 0 a 255).", /* 154 */ "Número de color incorrecto (debe ser de 0 a 255).",
/* 155 */ "El centro está fuera de los límites del gráfico.", /* 155 */ "El centro está fuera de los límites del gráfico.",
/* 156 */ "El objeto se encuentra fuera del mapa y sera eliminado.", /* 156 */ "El objeto se encuentra fuera del mapa y sera eliminado.",
/* 157 */ "Textura del mapa no encontrada.", /* 157 */ "Textura del mapa no encontrada.",
/* 158 */ "El tamaño de la textura es incorrecto.", /* 158 */ "El tamaño de la textura es incorrecto.",
/* 159 */ "No se pudo cargar el mundo, archivo no encontrado.", /* 159 */ "No se pudo cargar el mundo, archivo no encontrado.",
/* 160 */ "No se pudo cargar el mundo, archivo no válido.", /* 160 */ "No se pudo cargar el mundo, archivo no válido.",
/* 161 */ "El número de bandera no es válido.", /* 161 */ "El número de bandera no es válido.",
/* 162 */ "Dispositivo inválido (sólo 1-IPX,2-SERIAL,3-MODEM).", /* 162 */ "Dispositivo inválido (sólo 1-IPX,2-SERIAL,3-MODEM).",
/* 163 */ "Tamaño de paquete inválido (sólo de 1 a 199).", /* 163 */ "Tamaño de paquete inválido (sólo de 1 a 199).",
/* 164 */ "La cadena de texto destino no es válida.", /* 164 */ "La cadena de texto destino no es válida.",
/* 165 */ "Se intentó acceder a un puntero nulo.", /* 165 */ "Se intentó acceder a un puntero nulo.",
/* 166 */ "El modo de acceso al archivo no es válido.", /* 166 */ "El modo de acceso al archivo no es válido.",
/* 167 */ "No se pudo cargar el módulo.", /* 167 */ "No se pudo cargar el módulo.",
/* 168 */ "Demasiados errores ignorados.", /* 168 */ "Demasiados errores ignorados.",
/* 169 */ "Demasiados archivos abiertos.", /* 169 */ "Demasiados archivos abiertos.",
/* 170 */ "Identificador de archivo (handle) no válido.", /* 170 */ "Identificador de archivo (handle) no válido.",
/* 171 */ "Valor fuera de rango.", /* 171 */ "Valor fuera de rango.",
/* 172 */ "Demasiados objetos gráficos visualizados.", /* 172 */ "Demasiados objetos gráficos visualizados.",
/* 173 */ "Tipo de objeto gráfico no conocido.", /* 173 */ "Tipo de objeto gráfico no conocido.",
/* 174 */ "Porcentaje de tinta fuera de rango (0..15).", /* 174 */ "Porcentaje de tinta fuera de rango (0..15).",
/* 175 */ "Número de objeto gráfico no válido.", /* 175 */ "Número de objeto gráfico no válido.",
/* 176 */ "Error variable de vpe: Textura de mapa [a] no encontrada en fichero [b].", /* 176 */ "Error variable de vpe: Textura de mapa [a] no encontrada en fichero [b].",
/* 177 */ "Textura de mapa.", /* 177 */ "Textura de mapa.",
/* 178 */ "no encontrada en fichero.", /* 178 */ "no encontrada en fichero.",
/* 179 */ "Se realizaron demasiadas peticiones de memoria dinámica.", /* 179 */ "Se realizaron demasiadas peticiones de memoria dinámica.",
/* 180 */ "El puntero no se corresponde con ninguno de los bloques reservados.", /* 180 */ "El puntero no se corresponde con ninguno de los bloques reservados.",
/* 181 */ "No se pueden reservar bloques de menos de una posición.", /* 181 */ "No se pueden reservar bloques de menos de una posición.",
/* 182 */ "Se intentó (des)encriptar un bloque fuera de la memoria.", /* 182 */ "Se intentó (des)encriptar un bloque fuera de la memoria.",
/* 183 */ "No se puede cargar otra paleta cuando está forzada la actual.", /* 183 */ "No se puede cargar otra paleta cuando está forzada la actual.",
/* 184 */ "", /* 184 */ "",
/* 185 */ "", /* 185 */ "",
/* 186 */ "", /* 186 */ "",
@ -359,21 +359,21 @@
/* /*
* Errores críticos del stub * Errores críticos del stub
*/ */
#elif TRANSLATE == TRANSLATE_CRITICAL_ERROR #elif TRANSLATE == TRANSLATE_CRITICAL_ERROR
/* 0 */ "", /* 0 */ "",
/* 1 */ "Error leyendo el código del programa", /* 1 */ "Error leyendo el código del programa",
/* 2 */ "Error en el formato de código", /* 2 */ "Error en el formato de código",
/* 3 */ "Redefinicion del tipo de proceso", /* 3 */ "Redefinicion del tipo de proceso",
/* 4 */ "No se pudo reservar memoria para la pila", /* 4 */ "No se pudo reservar memoria para la pila",
/* 5 */ "Librería no encontrada: %s", /* 5 */ "Librería no encontrada: %s",
/* 6 */ "%s no es una librería válida de eDIV", /* 6 */ "%s no es una librería válida de eDIV",
/* 7 */ "No se pudo inicializar SDL", /* 7 */ "No se pudo inicializar SDL",
/* 8 */ "Demasiados procesos en ejecución", /* 8 */ "Demasiados procesos en ejecución",
/* 9 */ "Se requiere SDL versión %d.%d.%d\nVersión detectada en el sistema: %d.%d.%d" /* SIN COMA */ /* 9 */ "Se requiere SDL versión %d.%d.%d\nVersión detectada en el sistema: %d.%d.%d" /* SIN COMA */
#endif #endif

View file

@ -27,7 +27,7 @@
/* /*
* Errores de compilación * Errores de compilación
*/ */
#if TRANSLATE == TRANSLATE_ERROR #if TRANSLATE == TRANSLATE_ERROR
@ -227,14 +227,14 @@
/* FIXME: traducir esto */ /* FIXME: traducir esto */
/* 0 */ "ERROR %d: ", /* 0 */ "ERROR %d: ",
/* 1 */ "eDIV: Error en ejecución", /* 1 */ "eDIV: Error en ejecución",
/* 2 */ "eDIV: Error crítico", /* 2 */ "eDIV: Error crítico",
/* 3 */ "Error en %s: ", /* 3 */ "Error en %s: ",
/* 4 */ "eDIV: Error en librería dinámica" /* SIN COMA */ /* 4 */ "eDIV: Error en librería dinámica" /* SIN COMA */
/* /*
* Errores de tiempo de ejecución del stub * Errores de tiempo de ejecución del stub
*/ */
#elif TRANSLATE == TRANSLATE_RUNTIME_ERROR #elif TRANSLATE == TRANSLATE_RUNTIME_ERROR
@ -343,7 +343,7 @@
/* /*
* Errores críticos del stub * Errores críticos del stub
*/ */
#elif TRANSLATE == TRANSLATE_CRITICAL_ERROR #elif TRANSLATE == TRANSLATE_CRITICAL_ERROR
@ -356,8 +356,8 @@
/* 5 */ "Ezin da liburutegia aurkitu: %s", /* 5 */ "Ezin da liburutegia aurkitu: %s",
/* 6 */ "%s ez da eDIV-en liburutegi zuzen bat", /* 6 */ "%s ez da eDIV-en liburutegi zuzen bat",
/* 7 */ "No se pudo inicializar SDL", // FIXME: traducir esto /* 7 */ "No se pudo inicializar SDL", // FIXME: traducir esto
/* 8 */ "Demasiados procesos en ejecución", // FIXME: traducir esto /* 8 */ "Demasiados procesos en ejecución", // FIXME: traducir esto
/* 9 */ "Se requiere SDL versión %d.%d.%d\nVersión detectada en el sistema: %d.%d.%d" /* SIN COMA */ // FIXME: traducir esto /* 9 */ "Se requiere SDL versión %d.%d.%d\nVersión detectada en el sistema: %d.%d.%d" /* SIN COMA */ // FIXME: traducir esto
#endif #endif

View file

@ -27,18 +27,18 @@
/* /*
* Errores de compilación * Errores de compilación
*/ */
#if TRANSLATE == TRANSLATE_ERROR #if TRANSLATE == TRANSLATE_ERROR
/* 0 */ "", /* 0 */ "",
/* 1 */ "Si aspettava '*/'", /* 1 */ "Si aspettava '*/'",
/* 2 */ "Capacità vettore nomi oltrepassata", /* 2 */ "Capacità vettore nomi oltrepassata",
/* 3 */ "Si aspettava '\"'", /* 3 */ "Si aspettava '\"'",
/* 4 */ "Simbolo non riconosciuto", /* 4 */ "Simbolo non riconosciuto",
/* 5 */ "Carattere non riconosciuto", /* 5 */ "Carattere non riconosciuto",
/* 6 */ "Capacità tabella oggetti oltrepassata", /* 6 */ "Capacità tabella oggetti oltrepassata",
/* 7 */ "Aspettando '='", /* 7 */ "Aspettando '='",
/* 8 */ "Aspettando un'opzione di compilazione", /* 8 */ "Aspettando un'opzione di compilazione",
/* 9 */ "Aspettando ';'", /* 9 */ "Aspettando ';'",
@ -48,28 +48,28 @@
/* 13 */ "Assegnazione incorretta", /* 13 */ "Assegnazione incorretta",
/* 14 */ "Impossibile calcolare l'offset del dato", /* 14 */ "Impossibile calcolare l'offset del dato",
/* 15 */ "Impossibile calcolare l'offset", /* 15 */ "Impossibile calcolare l'offset",
/* 16 */ "Non è possibile realizzare l'incremento", /* 16 */ "Non è possibile realizzare l'incremento",
/* 17 */ "Impossibile accedere a local", /* 17 */ "Impossibile accedere a local",
/* 18 */ "Aspettando ')'", /* 18 */ "Aspettando ')'",
/* 19 */ "Aspettando ']'", /* 19 */ "Aspettando ']'",
/* 20 */ "Non è un tipo di proceso", /* 20 */ "Non è un tipo di proceso",
/* 21 */ "Aspettando il nome di un processo", /* 21 */ "Aspettando il nome di un processo",
/* 22 */ "Aspettando '('", /* 22 */ "Aspettando '('",
/* 23 */ "Aspettando un nome", /* 23 */ "Aspettando un nome",
/* 24 */ "Impossibile calcolare la grandezza", /* 24 */ "Impossibile calcolare la grandezza",
/* 25 */ "Espressione incorretta", /* 25 */ "Espressione incorretta",
/* 26 */ "Non è possibile ricevere una struttura come parametro", /* 26 */ "Non è possibile ricevere una struttura come parametro",
/* 27 */ "Aspettando il nome della struttura", /* 27 */ "Aspettando il nome della struttura",
/* 28 */ "Dichiarazione incorretta di puntatore a struttura", /* 28 */ "Dichiarazione incorretta di puntatore a struttura",
/* 29 */ "Aspettando il nome della catena", /* 29 */ "Aspettando il nome della catena",
/* 30 */ "Il nome non è nuovo", /* 30 */ "Il nome non è nuovo",
/* 31 */ "Catena di testo di lunghezza negativa", /* 31 */ "Catena di testo di lunghezza negativa",
/* 32 */ "Catena di testo troppo lunga", /* 32 */ "Catena di testo troppo lunga",
/* 33 */ "Non si può specificare una tabella come parametro", /* 33 */ "Non si può specificare una tabella come parametro",
/* 34 */ "Nome sconosciuto: %s", /* 34 */ "Nome sconosciuto: %s",
/* 35 */ "Si aspettava una virgola", /* 35 */ "Si aspettava una virgola",
/* 36 */ "Si aspettava un altro parametro", /* 36 */ "Si aspettava un altro parametro",
/* 37 */ "Non è possibile accedere a dati PRIVATE esterni", /* 37 */ "Non è possibile accedere a dati PRIVATE esterni",
/* 38 */ "Numero di parametri incorretto", /* 38 */ "Numero di parametri incorretto",
/* 39 */ "Aspettando un elemento della struttura", /* 39 */ "Aspettando un elemento della struttura",
/* 40 */ "Tabella di lunghezza negativa", /* 40 */ "Tabella di lunghezza negativa",
@ -84,7 +84,7 @@
/* 49 */ "Stringa troppo lunga", /* 49 */ "Stringa troppo lunga",
/* 50 */ "Valore BYTE fuori rango (0...255)", /* 50 */ "Valore BYTE fuori rango (0...255)",
/* 51 */ "Valore WORD fuori rango (0...65535)", /* 51 */ "Valore WORD fuori rango (0...65535)",
/* 52 */ "Non si può duplicare 0 o meno volte", /* 52 */ "Non si può duplicare 0 o meno volte",
/* 53 */ "Inizializzazione incorretta", /* 53 */ "Inizializzazione incorretta",
/* 54 */ "Si aspettava un'espressione costante", /* 54 */ "Si aspettava un'espressione costante",
/* 55 */ "Troppi valori per la struttura", /* 55 */ "Troppi valori per la struttura",
@ -94,7 +94,7 @@
/* 59 */ "Aspettando una variabile", /* 59 */ "Aspettando una variabile",
/* 60 */ "Aspettando TO", /* 60 */ "Aspettando TO",
/* 61 */ "Sentenza FROM incorretta", /* 61 */ "Sentenza FROM incorretta",
/* 62 */ "Il valore STEP non è valido", /* 62 */ "Il valore STEP non è valido",
/* 63 */ "Aspettando CASE, DEFAULT o END", /* 63 */ "Aspettando CASE, DEFAULT o END",
/* 64 */ "Aspettando ':'", /* 64 */ "Aspettando ':'",
/* 65 */ "BREAK non appare dentro un bugle", /* 65 */ "BREAK non appare dentro un bugle",
@ -126,9 +126,9 @@
#elif TRANSLATE == TRANSLATE_DLL_ERROR #elif TRANSLATE == TRANSLATE_DLL_ERROR
/* 1 */ "Limite buffer nomi oggetto oltrepassato", /* 1 */ "Limite buffer nomi oggetto oltrepassato",
/* 2 */ "Oggetto '%s': Il nome non è nuovo", /* 2 */ "Oggetto '%s': Il nome non è nuovo",
/* 3 */ "Troppi oggetti dichiarati", /* 3 */ "Troppi oggetti dichiarati",
/* 4 */ "Funzione '%s': Il nome non è nuovo", /* 4 */ "Funzione '%s': Il nome non è nuovo",
/* 5 */ "Errore dichiarando oggetto '%s'", /* 5 */ "Errore dichiarando oggetto '%s'",
/* 6 */ "Oggetto '%s': Dichiarazione illegale dentro struct", /* 6 */ "Oggetto '%s': Dichiarazione illegale dentro struct",
/* 7 */ "Oggetto '%s': Dichiarazione di un membro fuori struct", /* 7 */ "Oggetto '%s': Dichiarazione di un membro fuori struct",
@ -157,7 +157,7 @@
#elif TRANSLATE == TRANSLATE_COMPILER #elif TRANSLATE == TRANSLATE_COMPILER
/* 0 */ " **** Compilatore eDIV " VERSION " ****\n" COPYRIGHT "\n" WEBSITE "\n", /* 0 */ " **** Compilatore eDIV " VERSION " ****\n" COPYRIGHT "\n" WEBSITE "\n",
/* 1 */ "ATTENZIONE: Questa versione di eDIV è incompleta.\nPer favore informa su qualunque bug a: ediv@divsite.net\n", /* 1 */ "ATTENZIONE: Questa versione di eDIV è incompleta.\nPer favore informa su qualunque bug a: ediv@divsite.net\n",
/* 2 */ "Guida opzioni di comando:\n\n", /* 2 */ "Guida opzioni di comando:\n\n",
/* 3 */ "%s [opzioni] archivio.prg [eseguibile]\n\n", /* 3 */ "%s [opzioni] archivio.prg [eseguibile]\n\n",
/* 4 */ "Lista opzioni:\n", /* 4 */ "Lista opzioni:\n",
@ -172,7 +172,7 @@
/* 13 */ "Parametro errato: %s\nUsa l'opzione -h per visualizzare la guida\n", /* 13 */ "Parametro errato: %s\nUsa l'opzione -h per visualizzare la guida\n",
/* 14 */ "Parametro -s: deve indicare il sistema di destinazione\nConsulta la documentazione per ottenere aiuto\n", /* 14 */ "Parametro -s: deve indicare il sistema di destinazione\nConsulta la documentazione per ottenere aiuto\n",
/* 15 */ "Parametro errato: -%c\nUsa l'opzione -h per visualizzare la guida\n", /* 15 */ "Parametro errato: -%c\nUsa l'opzione -h per visualizzare la guida\n",
/* 16 */ "Non è stato specificato l'archivio\nUsa l'opzione -h per visualizzare la guida\n", /* 16 */ "Non è stato specificato l'archivio\nUsa l'opzione -h per visualizzare la guida\n",
/* 17 */ "edivc: Errore aprendo l'archivio %s.\n", /* 17 */ "edivc: Errore aprendo l'archivio %s.\n",
/* 18 */ "edivc: Compilando: %s\n", /* 18 */ "edivc: Compilando: %s\n",
/* 19 */ "edivc: ERRORE: Non si incontra %s\n", /* 19 */ "edivc: ERRORE: Non si incontra %s\n",
@ -215,8 +215,8 @@
/* 47 */ "Non si trova ExportaFuncs in %s - Libreria non valida (%s)\n", /* 47 */ "Non si trova ExportaFuncs in %s - Libreria non valida (%s)\n",
#endif #endif
/* 48 */ " -n, --news Mostra le ultime notizie di eDivCentral.com ed esce\n", /* 48 */ " -n, --news Mostra le ultime notizie di eDivCentral.com ed esce\n",
/* 49 */ "Errore: non è stato configurato un server di notizie in ediv.cfg\n", /* 49 */ "Errore: non è stato configurato un server di notizie in ediv.cfg\n",
/* 50 */ "Errore: il file ricevuto non è del tipo atteso\n" /* SIN COMA */ /* 50 */ "Errore: il file ricevuto non è del tipo atteso\n" /* SIN COMA */
/* /*
@ -233,42 +233,42 @@
/* /*
* Errores de tiempo de ejecución del stub * Errores de tiempo de ejecución del stub
*/ */
#elif TRANSLATE == TRANSLATE_RUNTIME_ERROR #elif TRANSLATE == TRANSLATE_RUNTIME_ERROR
/* 100 */ "Non hai memoria sufficiente per eseguire il programma.", /* 100 */ "Non hai memoria sufficiente per eseguire il programma.",
/* 101 */ "Chiamata a key() con un codice di tasto inesistente.", /* 101 */ "Chiamata a key() con un codice di tasto inesistente.",
/* 102 */ "Non è tasto possibile caricare la paletta, archivio non trovato.", /* 102 */ "Non è tasto possibile caricare la paletta, archivio non trovato.",
/* 103 */ "Si è tentato di caricare un archivio di paletta non valido.", /* 103 */ "Si è tentato di caricare un archivio di paletta non valido.",
/* 104 */ "Troppi file FPG aperti contemporaneamente.", /* 104 */ "Troppi file FPG aperti contemporaneamente.",
/* 105 */ "Non è stato possibile caricare il file, archivio non trovato.", /* 105 */ "Non è stato possibile caricare il file, archivio non trovato.",
/* 106 */ "Si è tentato di caricare un file FPG non valido.", /* 106 */ "Si è tentato di caricare un file FPG non valido.",
/* 107 */ "Numero di scroll non valido (deve essere tra 0 e 9).", /* 107 */ "Numero di scroll non valido (deve essere tra 0 e 9).",
/* 108 */ "Numero di regione non valido (fuori rango).", /* 108 */ "Numero di regione non valido (fuori rango).",
/* 109 */ "Codice di file non valido.", /* 109 */ "Codice di file non valido.",
/* 110 */ "Codice di grafico non valido.", /* 110 */ "Codice di grafico non valido.",
/* 111 */ "Si è tentato di usare un file FPG prima di caricarlo.", /* 111 */ "Si è tentato di usare un file FPG prima di caricarlo.",
/* 112 */ "Si necessita un codice di grafico per lo scroll.", /* 112 */ "Si necessita un codice di grafico per lo scroll.",
/* 113 */ "Sono state caricate troppe fonti di lettere.", /* 113 */ "Sono state caricate troppe fonti di lettere.",
/* 114 */ "Non è stato possibile caricare la fonte, archivio non trovato.", /* 114 */ "Non è stato possibile caricare la fonte, archivio non trovato.",
/* 115 */ "Si è tentato di caricare un archivio di fonte non valido.", /* 115 */ "Si è tentato di caricare un archivio di fonte non valido.",
/* 116 */ "Codice identificatore fonte di lettere non valido.", /* 116 */ "Codice identificatore fonte di lettere non valido.",
/* 117 */ "Codice di allineamento testo non valido.", /* 117 */ "Codice di allineamento testo non valido.",
/* 118 */ "Hai troppi testi attivi nel programma.", /* 118 */ "Hai troppi testi attivi nel programma.",
/* 119 */ "Identificatore di testo non valido.", /* 119 */ "Identificatore di testo non valido.",
/* 120 */ "Regione di schermo definita incorrettamente.", /* 120 */ "Regione di schermo definita incorrettamente.",
/* 121 */ "Si è tentato di utilizzare un grafico che non esiste.", /* 121 */ "Si è tentato di utilizzare un grafico che non esiste.",
/* 122 */ "Si è tentato di scrivere un blocco fuori della memoria.", /* 122 */ "Si è tentato di scrivere un blocco fuori della memoria.",
/* 123 */ "Non è stato possibile aprire l'archivio per la scrittura.", /* 123 */ "Non è stato possibile aprire l'archivio per la scrittura.",
/* 124 */ "Non è stato possibile scrivere l'archivio (vedere spazio nel disco).", /* 124 */ "Non è stato possibile scrivere l'archivio (vedere spazio nel disco).",
/* 125 */ "Si è tentato di leggere un blocco fuori della memoria.", /* 125 */ "Si è tentato di leggere un blocco fuori della memoria.",
/* 126 */ "Non è stato possibile aprire l'archivio per la lettura.", /* 126 */ "Non è stato possibile aprire l'archivio per la lettura.",
/* 127 */ "Non è stato possibile leggere l'archivio.", /* 127 */ "Non è stato possibile leggere l'archivio.",
/* 128 */ "Non è stato possibile caricare l'effetto di suono.", /* 128 */ "Non è stato possibile caricare l'effetto di suono.",
/* 129 */ "Non è stato possibile eseguire l'effetto di suono sollecitato.", /* 129 */ "Non è stato possibile eseguire l'effetto di suono sollecitato.",
/* 130 */ "Non è stato possibile iniziare l'animazione sollecitata.", /* 130 */ "Non è stato possibile iniziare l'animazione sollecitata.",
/* 131 */ "Numero di mode 7 non valido (deve essere tra 0 e 9).", /* 131 */ "Numero di mode 7 non valido (deve essere tra 0 e 9).",
/* 132 */ "Si necessita un codice di grafico per il mode 7.", /* 132 */ "Si necessita un codice di grafico per il mode 7.",
/* 133 */ "Numero punto di controllo non valido.", /* 133 */ "Numero punto di controllo non valido.",
@ -279,13 +279,13 @@
/* 138 */ "Codice d'informazione grafica incorretto.", /* 138 */ "Codice d'informazione grafica incorretto.",
/* 139 */ "Non si possono comprovare collisioni in grafici di m-7.", /* 139 */ "Non si possono comprovare collisioni in grafici di m-7.",
/* 140 */ "Accesso fuori rango.", /* 140 */ "Accesso fuori rango.",
/* 141 */ "Si è tentato di accedere ad un processo non valido.", /* 141 */ "Si è tentato di accedere ad un processo non valido.",
/* 142 */ "Il processo sembra bloccato, aspettando FRAME.", /* 142 */ "Il processo sembra bloccato, aspettando FRAME.",
/* 143 */ "Non è stato possibile caricare la mappa, archivio non trovato.", /* 143 */ "Non è stato possibile caricare la mappa, archivio non trovato.",
/* 144 */ "Si è tentato di caricare un archivio di mappa non valido.", /* 144 */ "Si è tentato di caricare un archivio di mappa non valido.",
/* 145 */ "Si è tentato di eseguire una divisione per zero.", /* 145 */ "Si è tentato di eseguire una divisione per zero.",
/* 146 */ "La grandezza della regione è incorretta.", /* 146 */ "La grandezza della regione è incorretta.",
/* 147 */ "Non è stato possibile caricare FLI/FLC, archivio non trovato.", /* 147 */ "Non è stato possibile caricare FLI/FLC, archivio non trovato.",
/* 148 */ "Valore del timeout incorretto (deve essere tra 1 e 60).", /* 148 */ "Valore del timeout incorretto (deve essere tra 1 e 60).",
/* 149 */ "Numero di giocatori incorretto (deve essere tra 2 e 8).", /* 149 */ "Numero di giocatori incorretto (deve essere tra 2 e 8).",
/* 150 */ "Si possono inviare solo dati globali.", /* 150 */ "Si possono inviare solo dati globali.",
@ -293,19 +293,19 @@
/* 152 */ "Mappa di ricerca non valida (da 1x1 a 128x128).", /* 152 */ "Mappa di ricerca non valida (da 1x1 a 128x128).",
/* 153 */ "Grandezza di mappa incorretta (da 1x1 a 32768x32768).", /* 153 */ "Grandezza di mappa incorretta (da 1x1 a 32768x32768).",
/* 154 */ "Numero di colore incorretto (deve essere da 0 a 255).", /* 154 */ "Numero di colore incorretto (deve essere da 0 a 255).",
/* 155 */ "Il centro è fuori dai limiti del grafico.", /* 155 */ "Il centro è fuori dai limiti del grafico.",
/* 156 */ "L'oggetto si trova fuori dalla mappa è sarà eliminato.", /* 156 */ "L'oggetto si trova fuori dalla mappa è sarà eliminato.",
/* 157 */ "Textura della mappa non trovata.", /* 157 */ "Textura della mappa non trovata.",
/* 158 */ "La grandezza della textura è incorretta.", /* 158 */ "La grandezza della textura è incorretta.",
/* 159 */ "Non è stato possibile caricare il mondo, archivio non trovato.", /* 159 */ "Non è stato possibile caricare il mondo, archivio non trovato.",
/* 160 */ "Non è stato possibile caricare il mondo, archivio non valido.", /* 160 */ "Non è stato possibile caricare il mondo, archivio non valido.",
/* 161 */ "Il numero di bandiera non è valido.", /* 161 */ "Il numero di bandiera non è valido.",
/* 162 */ "Dispositivo non valido (solo 1-IPX,2-SERIAL,3-MODEM).", /* 162 */ "Dispositivo non valido (solo 1-IPX,2-SERIAL,3-MODEM).",
/* 163 */ "Grandezza di pacchetto non valida (solo da 1 a 199).", /* 163 */ "Grandezza di pacchetto non valida (solo da 1 a 199).",
/* 164 */ "La catena testo di destinazione non è valida.", /* 164 */ "La catena testo di destinazione non è valida.",
/* 165 */ "Si è tentato di accedere ad un puntatore nullo.", /* 165 */ "Si è tentato di accedere ad un puntatore nullo.",
/* 166 */ "Il modo di acceso all'archivio non è valido.", /* 166 */ "Il modo di acceso all'archivio non è valido.",
/* 167 */ "Non è stato possibile caricare il modulo.", /* 167 */ "Non è stato possibile caricare il modulo.",
/* 168 */ "Troppi errori ignorati.", /* 168 */ "Troppi errori ignorati.",
/* 169 */ "Troppi archivi aperti.", /* 169 */ "Troppi archivi aperti.",
/* 170 */ "Identificatore archivio (handle) non valido.", /* 170 */ "Identificatore archivio (handle) non valido.",
@ -319,9 +319,9 @@
/* 178 */ "non trovata in file.", /* 178 */ "non trovata in file.",
/* 179 */ "Sono state realizzate troppe sollecitazioni di memoria dinamica.", /* 179 */ "Sono state realizzate troppe sollecitazioni di memoria dinamica.",
/* 180 */ "Il puntatore non corrisponde con nessuno dei blocchi reservati.", /* 180 */ "Il puntatore non corrisponde con nessuno dei blocchi reservati.",
/* 181 */ "Non è possibile riservare blocchi minori di una posizione.", /* 181 */ "Non è possibile riservare blocchi minori di una posizione.",
/* 182 */ "Si è tentato di (dis)encriptare un blocco fuori della memoria.", /* 182 */ "Si è tentato di (dis)encriptare un blocco fuori della memoria.",
/* 183 */ "Non è possibile caricare un'altra paletta quando è forzata l'attuale.", /* 183 */ "Non è possibile caricare un'altra paletta quando è forzata l'attuale.",
/* 184 */ "", /* 184 */ "",
/* 185 */ "", /* 185 */ "",
/* 186 */ "", /* 186 */ "",
@ -338,11 +338,11 @@
/* 197 */ "", /* 197 */ "",
/* 198 */ "", /* 198 */ "",
/* 199 */ "", /* 199 */ "",
/* 200 */ "Archivio con dati corrotti, non si è potuto caricare." /* SIN COMA */ /* 200 */ "Archivio con dati corrotti, non si è potuto caricare." /* SIN COMA */
/* /*
* Errores críticos del stub * Errores críticos del stub
*/ */
#elif TRANSLATE == TRANSLATE_CRITICAL_ERROR #elif TRANSLATE == TRANSLATE_CRITICAL_ERROR
@ -351,10 +351,10 @@
/* 1 */ "Errore leggendo il codice del programma", /* 1 */ "Errore leggendo il codice del programma",
/* 2 */ "Errore nel formato di codice", /* 2 */ "Errore nel formato di codice",
/* 3 */ "Ridefinizione del tipo di processo", /* 3 */ "Ridefinizione del tipo di processo",
/* 4 */ "Non si è potuto riservare memoria per la pila", /* 4 */ "Non si è potuto riservare memoria per la pila",
/* 5 */ "Libreria non trovata: %s", /* 5 */ "Libreria non trovata: %s",
/* 6 */ "%s non è una libreria valida di eDIV", /* 6 */ "%s non è una libreria valida di eDIV",
/* 7 */ "Non è stato possibile inizializzare SDL", /* 7 */ "Non è stato possibile inizializzare SDL",
/* 8 */ "Troppi processi in esecuzione", /* 8 */ "Troppi processi in esecuzione",
/* 9 */ "E' richiesta SDL %d.%d.%d\nVersione rilevata nel sistema: %d.%d.%d" /* SIN COMA */ /* 9 */ "E' richiesta SDL %d.%d.%d\nVersione rilevata nel sistema: %d.%d.%d" /* SIN COMA */

View file

@ -21,13 +21,13 @@
/* /*
* ARCHIVO DE IDIOMA DE EDIV * ARCHIVO DE IDIOMA DE EDIV
* 2 - PORTUGUÉS (pt) * 2 - PORTUGUÉS (pt)
* Autor: tareko * Autor: tareko
*/ */
/* /*
* Errores de compilación * Errores de compilación
*/ */
#if TRANSLATE == TRANSLATE_ERROR #if TRANSLATE == TRANSLATE_ERROR
@ -36,45 +36,45 @@
/* 1 */ "Esperava-se '*/'", /* 1 */ "Esperava-se '*/'",
/* 2 */ "Capacidade do vector de nomes excedida", /* 2 */ "Capacidade do vector de nomes excedida",
/* 3 */ "Esperava-se '\"'", /* 3 */ "Esperava-se '\"'",
/* 4 */ "Símbolo desconhecido", /* 4 */ "Símbolo desconhecido",
/* 5 */ "Caracter desconhecido", /* 5 */ "Caracter desconhecido",
/* 6 */ "Capacidade da tabela de objectos excedida", /* 6 */ "Capacidade da tabela de objectos excedida",
/* 7 */ "Esperando '='", /* 7 */ "Esperando '='",
/* 8 */ "Esperando uma opção de compilação", /* 8 */ "Esperando uma opção de compilação",
/* 9 */ "Esperando ';'", /* 9 */ "Esperando ';'",
/* 10 */ "Esperando um operando", /* 10 */ "Esperando um operando",
/* 11 */ "Expressão incorrecta", /* 11 */ "Expressão incorrecta",
/* 12 */ "Asignação a cadeia incorrecta", /* 12 */ "Asignação a cadeia incorrecta",
/* 13 */ "Asignação incorrecta", /* 13 */ "Asignação incorrecta",
/* 14 */ "Não se pode calcular o offset do dado", /* 14 */ "Não se pode calcular o offset do dado",
/* 15 */ "Não se pode calcular o offset", /* 15 */ "Não se pode calcular o offset",
/* 16 */ "Não se pode realizar o incremento", /* 16 */ "Não se pode realizar o incremento",
/* 17 */ "Local não se pode aceder", /* 17 */ "Local não se pode aceder",
/* 18 */ "Esperando ')'", /* 18 */ "Esperando ')'",
/* 19 */ "Esperando ']'", /* 19 */ "Esperando ']'",
/* 20 */ "Não é um tipo de processo", /* 20 */ "Não é um tipo de processo",
/* 21 */ "Esperando o nome de um processo", /* 21 */ "Esperando o nome de um processo",
/* 22 */ "Esperando '('", /* 22 */ "Esperando '('",
/* 23 */ "Esperando um nome", /* 23 */ "Esperando um nome",
/* 24 */ "Não se pode calcular o tamanho", /* 24 */ "Não se pode calcular o tamanho",
/* 25 */ "Expressão incorrecta", /* 25 */ "Expressão incorrecta",
/* 26 */ "Não se pode receber uma estructura como parametro", /* 26 */ "Não se pode receber uma estructura como parametro",
/* 27 */ "Esperando o nome da estructura", /* 27 */ "Esperando o nome da estructura",
/* 28 */ "Declaração incorrecta de ponteiro a uma estructura", /* 28 */ "Declaração incorrecta de ponteiro a uma estructura",
/* 29 */ "Esperando o nome da cadeia", /* 29 */ "Esperando o nome da cadeia",
/* 30 */ "O nome não é novo", /* 30 */ "O nome não é novo",
/* 31 */ "Cadeia de texto de longitude negativa", /* 31 */ "Cadeia de texto de longitude negativa",
/* 32 */ "Cadeia de texto demasiado larga", /* 32 */ "Cadeia de texto demasiado larga",
/* 33 */ "Não se pode especificar uma tabela como parametro", /* 33 */ "Não se pode especificar uma tabela como parametro",
/* 34 */ "Nome desconhecido: %s", /* 34 */ "Nome desconhecido: %s",
/* 35 */ "Esperava-se uma virgula", /* 35 */ "Esperava-se uma virgula",
/* 36 */ "Esperava-se outro parametro", /* 36 */ "Esperava-se outro parametro",
/* 37 */ "Não se pode aceder a dados PRIVATE externos", /* 37 */ "Não se pode aceder a dados PRIVATE externos",
/* 38 */ "Número de parametros incorrecto", /* 38 */ "Número de parametros incorrecto",
/* 39 */ "Esperando um elemento da estructura", /* 39 */ "Esperando um elemento da estructura",
/* 40 */ "Tabela de longitude negativa", /* 40 */ "Tabela de longitude negativa",
/* 41 */ "A longitude não coincide con a declaração anterior", /* 41 */ "A longitude não coincide con a declaração anterior",
/* 42 */ "Não se pode inicializar un parametro", /* 42 */ "Não se pode inicializar un parametro",
/* 43 */ "Estructura de longitude negativa", /* 43 */ "Estructura de longitude negativa",
/* 44 */ "Esperando PROGRAM", /* 44 */ "Esperando PROGRAM",
/* 45 */ "Esperando o nome do programa", /* 45 */ "Esperando o nome do programa",
@ -84,28 +84,28 @@
/* 49 */ "Literal demasiado largo", /* 49 */ "Literal demasiado largo",
/* 50 */ "Valor BYTE fora de alcance (0...255)", /* 50 */ "Valor BYTE fora de alcance (0...255)",
/* 51 */ "Valor WORD fora de alcance (0...65535)", /* 51 */ "Valor WORD fora de alcance (0...65535)",
/* 52 */ "Não se pode duplicar 0 o menos veces", /* 52 */ "Não se pode duplicar 0 o menos veces",
/* 53 */ "Inicialização incorrecta", /* 53 */ "Inicialização incorrecta",
/* 54 */ "Esperava-se uma expressão constante", /* 54 */ "Esperava-se uma expressão constante",
/* 55 */ "Demasiados valores para a estructura", /* 55 */ "Demasiados valores para a estructura",
/* 56 */ "Esperando BEGIN", /* 56 */ "Esperando BEGIN",
/* 57 */ "Esperando END", /* 57 */ "Esperando END",
/* 58 */ "Esperando UNTIL", /* 58 */ "Esperando UNTIL",
/* 59 */ "Esperando uma variable", /* 59 */ "Esperando uma variable",
/* 60 */ "Esperando TO", /* 60 */ "Esperando TO",
/* 61 */ "Sentença FROM incorrecta", /* 61 */ "Sentença FROM incorrecta",
/* 62 */ "O valor STEP não é válido", /* 62 */ "O valor STEP não é válido",
/* 63 */ "Esperando CASE, DEFAULT ou END", /* 63 */ "Esperando CASE, DEFAULT ou END",
/* 64 */ "Esperando ':'", /* 64 */ "Esperando ':'",
/* 65 */ "BREAK não aparece dentro de um ciclo", /* 65 */ "BREAK não aparece dentro de um ciclo",
/* 66 */ "CONTINUE não aparece dentro de um ciclo", /* 66 */ "CONTINUE não aparece dentro de um ciclo",
/* 67 */ "Esperava-se uma sentença", /* 67 */ "Esperava-se uma sentença",
/* 68 */ "Expressão sem sentido", /* 68 */ "Expressão sem sentido",
/* 69 */ "Asignação dentro de uma condição", /* 69 */ "Asignação dentro de uma condição",
/* 70 */ "Esperando o nome do processo ou função", /* 70 */ "Esperando o nome do processo ou função",
/* 71 */ "Esperando PROCESS ou FUNCTION", /* 71 */ "Esperando PROCESS ou FUNCTION",
/* 72 */ "Parametro não válido", /* 72 */ "Parametro não válido",
/* 73 */ "ELSEIF não aparece dentro de um bloco IF" /* SIN COMA */ /* 73 */ "ELSEIF não aparece dentro de um bloco IF" /* SIN COMA */
/* /*
@ -115,7 +115,7 @@
#elif TRANSLATE == TRANSLATE_WARNING #elif TRANSLATE == TRANSLATE_WARNING
/* 0 */ "", /* 0 */ "",
/* 1 */ "SETUP_PROGRAM: Caracteristica ambígua", /* 1 */ "SETUP_PROGRAM: Caracteristica ambígua",
/* 2 */ "IMPORT: Sintaxe antiga, ignorado" /* SIN COMA */ /* 2 */ "IMPORT: Sintaxe antiga, ignorado" /* SIN COMA */
@ -126,12 +126,12 @@
#elif TRANSLATE == TRANSLATE_DLL_ERROR #elif TRANSLATE == TRANSLATE_DLL_ERROR
/* 1 */ "Buffer de nomes de objecto ultrapassado", /* 1 */ "Buffer de nomes de objecto ultrapassado",
/* 2 */ "Objecto '%s': O nome não é novo", /* 2 */ "Objecto '%s': O nome não é novo",
/* 3 */ "Demasiados objectos declarados", /* 3 */ "Demasiados objectos declarados",
/* 4 */ "Função '%s': O nome não é novo", /* 4 */ "Função '%s': O nome não é novo",
/* 5 */ "Erro declarando objecto '%s'", /* 5 */ "Erro declarando objecto '%s'",
/* 6 */ "Objecto '%s': Declaração ilegal dentro de struct", /* 6 */ "Objecto '%s': Declaração ilegal dentro de struct",
/* 7 */ "Objecto '%s': Declaração de um membro fora de struct", /* 7 */ "Objecto '%s': Declaração de um membro fora de struct",
/* 8 */ "Tamanho ilegal da string '%s'", /* 8 */ "Tamanho ilegal da string '%s'",
/* 9 */ "EndStruct sem Struct", /* 9 */ "EndStruct sem Struct",
/* 10 */ "Uma estructura deve conter ao menos um elemento" /* SIN COMA */ /* 10 */ "Uma estructura deve conter ao menos um elemento" /* SIN COMA */
@ -144,10 +144,10 @@
#elif TRANSLATE == TRANSLATE_LTLEX_ERROR #elif TRANSLATE == TRANSLATE_LTLEX_ERROR
/* 0 */ "", /* 0 */ "",
/* 1 */ "Arquivo ltlex.def não encontrado", /* 1 */ "Arquivo ltlex.def não encontrado",
/* 2 */ "Esperava-se um valor hexadecimal (&00..&FF)", /* 2 */ "Esperava-se um valor hexadecimal (&00..&FF)",
/* 3 */ "Demasiados símbolos definidos", /* 3 */ "Demasiados símbolos definidos",
/* 4 */ "Símbolo inválido" /* SIN COMA */ /* 4 */ "Símbolo inválido" /* SIN COMA */
/* /*
@ -157,30 +157,30 @@
#elif TRANSLATE == TRANSLATE_COMPILER #elif TRANSLATE == TRANSLATE_COMPILER
/* 0 */ " **** Compilador eDIV " VERSION " ****\n" COPYRIGHT "\n" WEBSITE "\n", /* 0 */ " **** Compilador eDIV " VERSION " ****\n" COPYRIGHT "\n" WEBSITE "\n",
/* 1 */ "ATENÇÃO: Esta versão de eDIV está inacabada.\nPor favor informe-nos de qualquer bug a: ediv@divsite.net\n", /* 1 */ "ATENÇÃO: Esta versão de eDIV está inacabada.\nPor favor informe-nos de qualquer bug a: ediv@divsite.net\n",
/* 2 */ "Ajuda de opções de comando:\n\n", /* 2 */ "Ajuda de opções de comando:\n\n",
/* 3 */ "%s [opções] arquivo.prg [executavel]\n\n", /* 3 */ "%s [opções] arquivo.prg [executavel]\n\n",
/* 4 */ "Lista de opções:\n", /* 4 */ "Lista de opções:\n",
/* 5 */ " -h, --help Mostra esta ajuda e sai\n", /* 5 */ " -h, --help Mostra esta ajuda e sai\n",
/* 6 */ " -d, --debug Gera informação adicional de depuração\n", /* 6 */ " -d, --debug Gera informação adicional de depuração\n",
/* 7 */ " -l, --list Guarda o listado EML como <programa.eml>\n", /* 7 */ " -l, --list Guarda o listado EML como <programa.eml>\n",
/* 8 */ " -t, --table Guarda a tabela de objectos como <programa.tab>\n", /* 8 */ " -t, --table Guarda a tabela de objectos como <programa.tab>\n",
/* 9 */ " -c, --check Não gera um executavel (para comprovar sintaxe, etc.)\n", /* 9 */ " -c, --check Não gera um executavel (para comprovar sintaxe, etc.)\n",
/* 10 */ " -s, --system Sistema Operativo de destino (por defeito %s)\n", /* 10 */ " -s, --system Sistema Operativo de destino (por defeito %s)\n",
/* 11 */ " -v, --version Mostra versão e sai\n\n", /* 11 */ " -v, --version Mostra versão e sai\n\n",
/* 12 */ "Parametro --system: deve indicar um sistema de destino\nConsulte a documentação para obter ajuda\n", /* 12 */ "Parametro --system: deve indicar um sistema de destino\nConsulte a documentação para obter ajuda\n",
/* 13 */ "Parametro erróneo: %s\nUse a opção -h para ver a ajuda\n", /* 13 */ "Parametro erróneo: %s\nUse a opção -h para ver a ajuda\n",
/* 14 */ "Parametro -s: deve indicar um sistema de destino\nConsulte a documentação para obter ajuda\n", /* 14 */ "Parametro -s: deve indicar um sistema de destino\nConsulte a documentação para obter ajuda\n",
/* 15 */ "Parametro erróneo: -%c\nUse a opção -h para ver a ajuda\n", /* 15 */ "Parametro erróneo: -%c\nUse a opção -h para ver a ajuda\n",
/* 16 */ "Não foi especificado um arquivo\nUse a opção -h para ver a ajuda\n", /* 16 */ "Não foi especificado um arquivo\nUse a opção -h para ver a ajuda\n",
/* 17 */ "edivc: Erro ao abrir arquivo %s.\n", /* 17 */ "edivc: Erro ao abrir arquivo %s.\n",
/* 18 */ "edivc: Compilando: %s\n", /* 18 */ "edivc: Compilando: %s\n",
/* 19 */ "edivc: ERROR: Não se enconntra %s\n", /* 19 */ "edivc: ERROR: Não se enconntra %s\n",
/* 20 */ "edivc: ERROR: Formato incorrecto de %s\n", /* 20 */ "edivc: ERROR: Formato incorrecto de %s\n",
/* 21 */ "edivc: Interrompido (%d advertencias)\n", /* 21 */ "edivc: Interrompido (%d advertencias)\n",
/* 22 */ "edivc: Finalizado con exito (%d advertencias)\n", /* 22 */ "edivc: Finalizado con exito (%d advertencias)\n",
/* 23 */ "edivc: Saida com erros\n", /* 23 */ "edivc: Saida com erros\n",
/* 24 */ "edivc: ERROR: Memória insuficiente\n", /* 24 */ "edivc: ERROR: Memória insuficiente\n",
/* 25 */ "%s:%d:%d: ERROR %d: ", /* 25 */ "%s:%d:%d: ERROR %d: ",
/* 26 */ "%s:%d: Advertencia: ", /* 26 */ "%s:%d: Advertencia: ",
/* 27 */ "Precompilando...\n", /* 27 */ "Precompilando...\n",
@ -188,35 +188,35 @@
/* 29 */ "Erro ao criar arquivo de intercambio\n", /* 29 */ "Erro ao criar arquivo de intercambio\n",
/* 30 */ "Generando listados...\n", /* 30 */ "Generando listados...\n",
/* 31 */ "Guardando executavel...\n", /* 31 */ "Guardando executavel...\n",
/* 32 */ "Guardando informação de depuração...\n", /* 32 */ "Guardando informação de depuração...\n",
/* 33 */ "Erro ao escrever executavel\n", /* 33 */ "Erro ao escrever executavel\n",
/* 34 */ "Compilação finalizada.\n", /* 34 */ "Compilação finalizada.\n",
/* 35 */ "%s: ERRO: ", /* 35 */ "%s: ERRO: ",
/* 36 */ "Erro ao criar arquivo %s\n", /* 36 */ "Erro ao criar arquivo %s\n",
/* 37 */ "Listado de objectos de %s - eDIV versão " VERSION "\n\n", /* 37 */ "Listado de objectos de %s - eDIV versão " VERSION "\n\n",
/* 38 */ "\tbloco(%u), anterior(%u)\n", /* 38 */ "\tbloco(%u), anterior(%u)\n",
/* 39 */ "Código EML de %s - eDIV versão " VERSION "\n", /* 39 */ "Código EML de %s - eDIV versão " VERSION "\n",
/* 40 */ "edivc: ERRO: %s\n\n", /* 40 */ "edivc: ERRO: %s\n\n",
/* 41 */ "edivc: %s (linha %d) ERRO: %s\n\n", /* 41 */ "edivc: %s (linha %d) ERRO: %s\n\n",
/* 42 */ "edivc: Interrompido - encontraram-se erros\n", /* 42 */ "edivc: Interrompido - encontraram-se erros\n",
#ifdef _WIN32 #ifdef _WIN32
/* 43 */ "Não se encontra nenhuma DLL\n", /* 43 */ "Não se encontra nenhuma DLL\n",
/* 44 */ "", /* 44 */ "",
#else #else
/* 43 */ "Não se encontra nenhuma biblioteca\n", /* 43 */ "Não se encontra nenhuma biblioteca\n",
/* 44 */ "Directorio %s/ não foi encontrado\n", /* 44 */ "Directorio %s/ não foi encontrado\n",
#endif #endif
/* 45 */ "Erro ao carregar biblioteca %s\n", /* 45 */ "Erro ao carregar biblioteca %s\n",
#ifdef _WIN32 #ifdef _WIN32
/* 46 */ "Não podo carregar %s\n", /* 46 */ "Não podo carregar %s\n",
/* 47 */ "Não se encontra ExportaFuncs em %s - DLL invalida\n", /* 47 */ "Não se encontra ExportaFuncs em %s - DLL invalida\n",
#else #else
/* 46 */ "Não se pode carregar %s (%s)\n", /* 46 */ "Não se pode carregar %s (%s)\n",
/* 47 */ "Não se encontra ExportaFuncs em %s - Biblioteca invalida (%s)\n", /* 47 */ "Não se encontra ExportaFuncs em %s - Biblioteca invalida (%s)\n",
#endif #endif
/* FIXME: revisar/traducir esto */ /* FIXME: revisar/traducir esto */
/* 48 */ " -n, --news Mostra a última notícia de eDivCentral.com e sai\n", /* 48 */ " -n, --news Mostra a última notícia de eDivCentral.com e sai\n",
/* 49 */ "Error: no se ha configurado un servidor de noticias en ediv.cfg\n", /* 49 */ "Error: no se ha configurado un servidor de noticias en ediv.cfg\n",
/* 50 */ "Error: el fichero recibido no es del tipo esperado\n" /* SIN COMA */ /* 50 */ "Error: el fichero recibido no es del tipo esperado\n" /* SIN COMA */
@ -229,103 +229,103 @@
/* FIXME: traducir esto */ /* FIXME: traducir esto */
/* 0 */ "ERROR %d: ", /* 0 */ "ERROR %d: ",
/* 1 */ "eDIV: Error en ejecución", /* 1 */ "eDIV: Error en ejecución",
/* 2 */ "eDIV: Error crítico", /* 2 */ "eDIV: Error crítico",
/* 3 */ "Error en %s: ", /* 3 */ "Error en %s: ",
/* 4 */ "eDIV: Error en librería dinámica" /* SIN COMA */ /* 4 */ "eDIV: Error en librería dinámica" /* SIN COMA */
/* /*
* Errores de tiempo de ejecución del stub * Errores de tiempo de ejecución del stub
*/ */
#elif TRANSLATE == TRANSLATE_RUNTIME_ERROR #elif TRANSLATE == TRANSLATE_RUNTIME_ERROR
/* FIXME: traducir esto */ /* FIXME: traducir esto */
/* 100 */ "No hay memoria suficiente para ejecutar el programa.", /* 100 */ "No hay memoria suficiente para ejecutar el programa.",
/* 101 */ "Llamada a key() con un código de tecla inexistente.", /* 101 */ "Llamada a key() con un código de tecla inexistente.",
/* 102 */ "No se pudo cargar la paleta, archivo no encontrado.", /* 102 */ "No se pudo cargar la paleta, archivo no encontrado.",
/* 103 */ "Se intentó cargar un archivo de paleta inválido.", /* 103 */ "Se intentó cargar un archivo de paleta inválido.",
/* 104 */ "Demasiados ficheros FPG abiertos a la vez.", /* 104 */ "Demasiados ficheros FPG abiertos a la vez.",
/* 105 */ "No se pudo cargar el fichero, archivo no encontrado.", /* 105 */ "No se pudo cargar el fichero, archivo no encontrado.",
/* 106 */ "Se intentó cargar un fichero FPG no válido.", /* 106 */ "Se intentó cargar un fichero FPG no válido.",
/* 107 */ "Número de scroll inválido (debe estar entre 0 y 9).", /* 107 */ "Número de scroll inválido (debe estar entre 0 y 9).",
/* 108 */ "Número de región inválido (fuera de rango).", /* 108 */ "Número de región inválido (fuera de rango).",
/* 109 */ "Código de fichero inválido.", /* 109 */ "Código de fichero inválido.",
/* 110 */ "Código de gráfico inválido.", /* 110 */ "Código de gráfico inválido.",
/* 111 */ "Se intentó usar un fichero FPG antes de cargarlo.", /* 111 */ "Se intentó usar un fichero FPG antes de cargarlo.",
/* 112 */ "Se necesita un código de gráfico para el scroll.", /* 112 */ "Se necesita un código de gráfico para el scroll.",
/* 113 */ "Se han cargado demasiados fuentes de letras.", /* 113 */ "Se han cargado demasiados fuentes de letras.",
/* 114 */ "No se pudo cargar el fuente, archivo no encontrado.", /* 114 */ "No se pudo cargar el fuente, archivo no encontrado.",
/* 115 */ "Se intentó cargar un archivo de fuente no válido.", /* 115 */ "Se intentó cargar un archivo de fuente no válido.",
/* 116 */ "Código identificador de fuente de letras inválido.", /* 116 */ "Código identificador de fuente de letras inválido.",
/* 117 */ "Código de centrado de texto inválido.", /* 117 */ "Código de centrado de texto inválido.",
/* 118 */ "Hay demasiados textos activos en el programa.", /* 118 */ "Hay demasiados textos activos en el programa.",
/* 119 */ "Indentificador de texto no válido.", /* 119 */ "Indentificador de texto no válido.",
/* 120 */ "Región de pantalla definida incorrectamente.", /* 120 */ "Región de pantalla definida incorrectamente.",
/* 121 */ "Se intentó utilizar un gráfico que no existe.", /* 121 */ "Se intentó utilizar un gráfico que no existe.",
/* 122 */ "Se intentó escribir un bloque fuera de la memoria.", /* 122 */ "Se intentó escribir un bloque fuera de la memoria.",
/* 123 */ "No se pudo abrir el archivo para escritura.", /* 123 */ "No se pudo abrir el archivo para escritura.",
/* 124 */ "No se pudo escribir el archivo (ver espacio en disco).", /* 124 */ "No se pudo escribir el archivo (ver espacio en disco).",
/* 125 */ "Se intentó leer un bloque fuera de la memoria.", /* 125 */ "Se intentó leer un bloque fuera de la memoria.",
/* 126 */ "No se pudo abrir el archivo para lectura.", /* 126 */ "No se pudo abrir el archivo para lectura.",
/* 127 */ "No se pudo leer el archivo.", /* 127 */ "No se pudo leer el archivo.",
/* 128 */ "No se pudo cargar el efecto de sonido.", /* 128 */ "No se pudo cargar el efecto de sonido.",
/* 129 */ "No se pudo tocar el efecto de sonido solicitado.", /* 129 */ "No se pudo tocar el efecto de sonido solicitado.",
/* 130 */ "No se pudo iniciar la animación solicitada.", /* 130 */ "No se pudo iniciar la animación solicitada.",
/* 131 */ "Número de modo 7 inválido (debe estar entre 0 y 9).", /* 131 */ "Número de modo 7 inválido (debe estar entre 0 y 9).",
/* 132 */ "Se necesita un código de gráfico para el modo 7.", /* 132 */ "Se necesita un código de gráfico para el modo 7.",
/* 133 */ "Número de punto de control inválido.", /* 133 */ "Número de punto de control inválido.",
/* 134 */ "Número de botón incorrecto (debe estar entre 0 y 3).", /* 134 */ "Número de botón incorrecto (debe estar entre 0 y 3).",
/* 135 */ "Número de eje incorrecto (debe estar entre 0 y 3).", /* 135 */ "Número de eje incorrecto (debe estar entre 0 y 3).",
/* 136 */ "Dirección de la tabla de paleta fuera de la memoria.", /* 136 */ "Dirección de la tabla de paleta fuera de la memoria.",
/* 137 */ "No se pueden comprobar regiones en gráficos de m-7.", /* 137 */ "No se pueden comprobar regiones en gráficos de m-7.",
/* 138 */ "Código de información gráfica incorrecto.", /* 138 */ "Código de información gráfica incorrecto.",
/* 139 */ "No se pueden comprobar colisiones en gráficos de m-7.", /* 139 */ "No se pueden comprobar colisiones en gráficos de m-7.",
/* 140 */ "Acceso fuera de rango.", /* 140 */ "Acceso fuera de rango.",
/* 141 */ "Se intentó acceder a un proceso inválido.", /* 141 */ "Se intentó acceder a un proceso inválido.",
/* 142 */ "El proceso parece bloqueado, esperando FRAME.", /* 142 */ "El proceso parece bloqueado, esperando FRAME.",
/* 143 */ "No se pudo cargar el mapa, archivo no encontrado.", /* 143 */ "No se pudo cargar el mapa, archivo no encontrado.",
/* 144 */ "Se intentó cargar un archivo de mapa inválido.", /* 144 */ "Se intentó cargar un archivo de mapa inválido.",
/* 145 */ "Se ha intentado hacer una división entre cero.", /* 145 */ "Se ha intentado hacer una división entre cero.",
/* 146 */ "El tamaño de la región es incorrecto.", /* 146 */ "El tamaño de la región es incorrecto.",
/* 147 */ "No se pudo cargar FLI/FLC, archivo no encontrado.", /* 147 */ "No se pudo cargar FLI/FLC, archivo no encontrado.",
/* 148 */ "Valor de timeout incorrecto (debe ser entre 1 y 60).", /* 148 */ "Valor de timeout incorrecto (debe ser entre 1 y 60).",
/* 149 */ "Número de jugadores incorrecto (debe ser entre 2 y 8).", /* 149 */ "Número de jugadores incorrecto (debe ser entre 2 y 8).",
/* 150 */ "Sólo se pueden enviar datos globales.", /* 150 */ "Sólo se pueden enviar datos globales.",
/* 151 */ "Tamaño de casilla inválido (debe ser entre 1 y 256).", /* 151 */ "Tamaño de casilla inválido (debe ser entre 1 y 256).",
/* 152 */ "Mapa de búsqueda no válido (desde 1x1 hasta 128x128).", /* 152 */ "Mapa de búsqueda no válido (desde 1x1 hasta 128x128).",
/* 153 */ "Tamaño de mapa incorrecto (de 1x1 a 32768x32768).", /* 153 */ "Tamaño de mapa incorrecto (de 1x1 a 32768x32768).",
/* 154 */ "Número de color incorrecto (debe ser de 0 a 255).", /* 154 */ "Número de color incorrecto (debe ser de 0 a 255).",
/* 155 */ "El centro está fuera de los límites del gráfico.", /* 155 */ "El centro está fuera de los límites del gráfico.",
/* 156 */ "El objeto se encuentra fuera del mapa y sera eliminado.", /* 156 */ "El objeto se encuentra fuera del mapa y sera eliminado.",
/* 157 */ "Textura del mapa no encontrada.", /* 157 */ "Textura del mapa no encontrada.",
/* 158 */ "El tamaño de la textura es incorrecto.", /* 158 */ "El tamaño de la textura es incorrecto.",
/* 159 */ "No se pudo cargar el mundo, archivo no encontrado.", /* 159 */ "No se pudo cargar el mundo, archivo no encontrado.",
/* 160 */ "No se pudo cargar el mundo, archivo no válido.", /* 160 */ "No se pudo cargar el mundo, archivo no válido.",
/* 161 */ "El número de bandera no es válido.", /* 161 */ "El número de bandera no es válido.",
/* 162 */ "Dispositivo inválido (sólo 1-IPX,2-SERIAL,3-MODEM).", /* 162 */ "Dispositivo inválido (sólo 1-IPX,2-SERIAL,3-MODEM).",
/* 163 */ "Tamaño de paquete inválido (sólo de 1 a 199).", /* 163 */ "Tamaño de paquete inválido (sólo de 1 a 199).",
/* 164 */ "La cadena de texto destino no es válida.", /* 164 */ "La cadena de texto destino no es válida.",
/* 165 */ "Se intentó acceder a un puntero nulo.", /* 165 */ "Se intentó acceder a un puntero nulo.",
/* 166 */ "El modo de acceso al archivo no es válido.", /* 166 */ "El modo de acceso al archivo no es válido.",
/* 167 */ "No se pudo cargar el módulo.", /* 167 */ "No se pudo cargar el módulo.",
/* 168 */ "Demasiados errores ignorados.", /* 168 */ "Demasiados errores ignorados.",
/* 169 */ "Demasiados archivos abiertos.", /* 169 */ "Demasiados archivos abiertos.",
/* 170 */ "Identificador de archivo (handle) no válido.", /* 170 */ "Identificador de archivo (handle) no válido.",
/* 171 */ "Valor fuera de rango.", /* 171 */ "Valor fuera de rango.",
/* 172 */ "Demasiados objetos gráficos visualizados.", /* 172 */ "Demasiados objetos gráficos visualizados.",
/* 173 */ "Tipo de objeto gráfico no conocido.", /* 173 */ "Tipo de objeto gráfico no conocido.",
/* 174 */ "Porcentaje de tinta fuera de rango (0..15).", /* 174 */ "Porcentaje de tinta fuera de rango (0..15).",
/* 175 */ "Número de objeto gráfico no válido.", /* 175 */ "Número de objeto gráfico no válido.",
/* 176 */ "Error variable de vpe: Textura de mapa [a] no encontrada en fichero [b].", /* 176 */ "Error variable de vpe: Textura de mapa [a] no encontrada en fichero [b].",
/* 177 */ "Textura de mapa.", /* 177 */ "Textura de mapa.",
/* 178 */ "no encontrada en fichero.", /* 178 */ "no encontrada en fichero.",
/* 179 */ "Se realizaron demasiadas peticiones de memoria dinámica.", /* 179 */ "Se realizaron demasiadas peticiones de memoria dinámica.",
/* 180 */ "El puntero no se corresponde con ninguno de los bloques reservados.", /* 180 */ "El puntero no se corresponde con ninguno de los bloques reservados.",
/* 181 */ "No se pueden reservar bloques de menos de una posición.", /* 181 */ "No se pueden reservar bloques de menos de una posición.",
/* 182 */ "Se intentó (des)encriptar un bloque fuera de la memoria.", /* 182 */ "Se intentó (des)encriptar un bloque fuera de la memoria.",
/* 183 */ "No se puede cargar otra paleta cuando está forzada la actual.", /* 183 */ "No se puede cargar otra paleta cuando está forzada la actual.",
/* 184 */ "", /* 184 */ "",
/* 185 */ "", /* 185 */ "",
/* 186 */ "", /* 186 */ "",
@ -346,22 +346,22 @@
/* /*
* Errores críticos del stub * Errores críticos del stub
*/ */
#elif TRANSLATE == TRANSLATE_CRITICAL_ERROR #elif TRANSLATE == TRANSLATE_CRITICAL_ERROR
/* FIXME: traducir esto */ /* FIXME: traducir esto */
/* 0 */ "", /* 0 */ "",
/* 1 */ "Error leyendo el código del programa", /* 1 */ "Error leyendo el código del programa",
/* 2 */ "Error en el formato de código", /* 2 */ "Error en el formato de código",
/* 3 */ "Redefinicion del tipo de proceso", /* 3 */ "Redefinicion del tipo de proceso",
/* 4 */ "No se pudo reservar memoria para la pila", /* 4 */ "No se pudo reservar memoria para la pila",
/* 5 */ "Librería no encontrada: %s", /* 5 */ "Librería no encontrada: %s",
/* 6 */ "%s no es una librería válida de eDIV", /* 6 */ "%s no es una librería válida de eDIV",
/* 7 */ "No se pudo inicializar SDL", /* 7 */ "No se pudo inicializar SDL",
/* 8 */ "Demasiados procesos en ejecución", /* 8 */ "Demasiados procesos en ejecución",
/* 9 */ "Se requiere SDL versión %d.%d.%d\nVersión detectada en el sistema: %d.%d.%d" /* SIN COMA */ /* 9 */ "Se requiere SDL versión %d.%d.%d\nVersión detectada en el sistema: %d.%d.%d" /* SIN COMA */
#endif #endif

View file

@ -21,7 +21,7 @@
/* /*
* Archivo auxiliar para los language.c * Archivo auxiliar para los language.c
* Hay que editarlo cada vez que se añada un nuevo idioma * Hay que editarlo cada vez que se añada un nuevo idioma
* LOS INCLUDES DEBEN ESTAR EN ORDEN (ver language.h) * LOS INCLUDES DEBEN ESTAR EN ORDEN (ver language.h)
*/ */

View file

@ -62,7 +62,7 @@ int carga_dll(char* nombre)
printf("intento 2: %s\n",resolved_path); printf("intento 2: %s\n",resolved_path);
if(resolved_path) hDLL=LoadLibraryEx(resolved_path,NULL,LOAD_WITH_ALTERED_SEARCH_PATH); if(resolved_path) hDLL=LoadLibraryEx(resolved_path,NULL,LOAD_WITH_ALTERED_SEARCH_PATH);
if(hDLL==NULL) if(hDLL==NULL)
critical_error(5,fichdll); // Librería no encontrada critical_error(5,fichdll); // Librería no encontrada
} }
// Inicializa y ejecuta la funcion ExportaFuncs de la DLL // Inicializa y ejecuta la funcion ExportaFuncs de la DLL
@ -115,7 +115,7 @@ int carga_dll(char* nombre)
strcat(fichdll,".so"); strcat(fichdll,".so");
hDLL=dlopen(fichdll2,RTLD_NOW); hDLL=dlopen(fichdll2,RTLD_NOW);
if(!hDLL) if(!hDLL)
critical_error(5,fichdll); // Librería no encontrada critical_error(5,fichdll); // Librería no encontrada
} }
// Inicializa y ejecuta la funcion ExportaFuncs de la DLL // Inicializa y ejecuta la funcion ExportaFuncs de la DLL

View file

@ -44,13 +44,13 @@ struct objeto * ob2;*/
int creaobj; int creaobj;
byte decl_struct=0; // 1 si se está declarando un struct byte decl_struct=0; // 1 si se está declarando un struct
byte slocal=0; // para las structs. 0=global, 1=local byte slocal=0; // para las structs. 0=global, 1=local
int nregs; int nregs;
int offset; int offset;
// no creo que haga falta (sólo serviría para comprobar errores en las dll) // no creo que haga falta (sólo serviría para comprobar errores en las dll)
// -> nos ahorramos la tabla de objetos // -> nos ahorramos la tabla de objetos
/*int crea_objeto(byte * nombre) /*int crea_objeto(byte * nombre)
@ -80,7 +80,7 @@ int offset;
}*/ }*/
// Errores específicos en la ejecución de una DLL // Errores específicos en la ejecución de una DLL
void dll_error(int error, ...) void dll_error(int error, ...)
{ {
@ -185,7 +185,7 @@ int EDIV_Export_Const(char* cadena, int valor)
return 0; return 0;
} }
// sólamente se tendrá que hacer algo en la versión con trazador // sólamente se tendrá que hacer algo en la versión con trazador
/* creaobj=crea_objeto((byte*)cadena); /* creaobj=crea_objeto((byte*)cadena);

View file

@ -18,18 +18,18 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
/* Errores en tiempo de ejecución */ /* Errores en tiempo de ejecución */
/* POR HACER: En Windows se muestra un MsgBox para los errores, pero en Linux se hace /* POR HACER: En Windows se muestra un MsgBox para los errores, pero en Linux se hace
* un simple printf. Esto no es problema en los errores no críticos de la versión debug * un simple printf. Esto no es problema en los errores no críticos de la versión debug
* (ya que los errores los muestra la DLL de Delphi), o si siempre ejecutamos los juegos * (ya que los errores los muestra la DLL de Delphi), o si siempre ejecutamos los juegos
* desde una consola, pero el usuario final los ejecutará haciendo doble clic sobre el * desde una consola, pero el usuario final los ejecutará haciendo doble clic sobre el
* programa. Por tanto en Linux también tenemos que mostrar una MsgBox, y no podemos usar * programa. Por tanto en Linux también tenemos que mostrar una MsgBox, y no podemos usar
* el propio buffer de SDL para imprimirlos (ya que uno de los errores no críticos es la * el propio buffer de SDL para imprimirlos (ya que uno de los errores no críticos es la
* falta de memoria), así que habrá que tirar de X a lo basto, recomiendo mirar el código * falta de memoria), así que habrá que tirar de X a lo basto, recomiendo mirar el código
* fuente de XBill ya que implementa MsgBoxes de una forma reducida usando Motif o Athena * fuente de XBill ya que implementa MsgBoxes de una forma reducida usando Motif o Athena
* (basada en Xaw). XBill también puede usar GTK pero esa librería ya es demasiado grande * (basada en Xaw). XBill también puede usar GTK pero esa librería ya es demasiado grande
* (la librería a usar debe ser linkada de forma estática) * (la librería a usar debe ser linkada de forma estática)
*/ */
#ifdef _WIN32 #ifdef _WIN32
@ -44,9 +44,9 @@
/* Error ( numero, parametros [...] ) /* Error ( numero, parametros [...] )
* *
* Genera un error en tiempo de ejecución, no crítico (en debug se llama al trazador) * Genera un error en tiempo de ejecución, no crítico (en debug se llama al trazador)
* ATENCIÓN: Ahora mismo está en forma de RELEASE, para la versión DEBUG del stub se deberá * ATENCIÓN: Ahora mismo está en forma de RELEASE, para la versión DEBUG del stub se deberá
* invocar al trazador (llamando a la función adecuada, que aún no está hecha, en debug.dll) * invocar al trazador (llamando a la función adecuada, que aún no está hecha, en debug.dll)
* Otra nota: he puesto exactamente los mismos errores de DIV2, ya que tenemos que mantener * Otra nota: he puesto exactamente los mismos errores de DIV2, ya que tenemos que mantener
* la compatibilidad con el ignore_error... 100% compatible, recordad.. :P * la compatibilidad con el ignore_error... 100% compatible, recordad.. :P
*/ */
@ -81,7 +81,7 @@ void error(int num, ...)
/* critical_error ( numero, parametros [...] ) /* critical_error ( numero, parametros [...] )
* *
* Interrumpe el programa con un mensaje de error. No es posible trazar. * Interrumpe el programa con un mensaje de error. No es posible trazar.
* Esta función es igual para release que para debug, ya que no se puede trazar en el punto * Esta función es igual para release que para debug, ya que no se puede trazar en el punto
* en que se produce un error de este tipo. * en que se produce un error de este tipo.
*/ */
@ -107,16 +107,16 @@ void critical_error(int num, ...)
/* custom_error (tipo, mensaje) /* custom_error (tipo, mensaje)
* *
* Permite a las DLLs generar sus propios errores, para que no dependan de los * Permite a las DLLs generar sus propios errores, para que no dependan de los
* que hay definidos en el stub. El parámetro tipo permite indicar si se trata de * que hay definidos en el stub. El parámetro tipo permite indicar si se trata de
* un error crítico (que debe interrumpir la ejecución del programa) o un error * un error crítico (que debe interrumpir la ejecución del programa) o un error
* runtime (que llama al trazador si estamos en modo debug). A ser posible hay * runtime (que llama al trazador si estamos en modo debug). A ser posible hay
* que usar los que incluye el stub, ya que estos errores no pueden usarse con * que usar los que incluye el stub, ya que estos errores no pueden usarse con
* ignore_error (no tienen un código asociado), aunque se ven afectados por * ignore_error (no tienen un código asociado), aunque se ven afectados por
* compiler_options _ignore_errors. * compiler_options _ignore_errors.
* NOTA: una DLL puede incluir su propio sistema de gestión de errores, por tanto * NOTA: una DLL puede incluir su propio sistema de gestión de errores, por tanto
* puede asignar códigos a sus propios errores e incluso incluir su propia versión * puede asignar códigos a sus propios errores e incluso incluir su propia versión
* de ignore_error. * de ignore_error.
* DESVENTAJA: se pierde la capacidad multilingüe, a menos que la incluya la propia DLL. * DESVENTAJA: se pierde la capacidad multilingüe, a menos que la incluya la propia DLL.
*/ */
void custom_error(tipoerror tipo, char* mensaje) void custom_error(tipoerror tipo, char* mensaje)

View file

@ -56,8 +56,8 @@ int ini_interprete()
// Posicion de inicio del code // Posicion de inicio del code
iloc=mem[2]; // Inicio de la imagen de las variables locales iloc=mem[2]; // Inicio de la imagen de las variables locales
iloc_len=mem[6]+mem[5]; // Longitud de las locales (p£blicas y privadas) iloc_len=mem[6]+mem[5]; // Longitud de las locales (p£blicas y privadas)
iloc_pub_len=mem[6]; // Longitud de las variables locales p£blicas iloc_pub_len=mem[6]; // Longitud de las variables locales p£blicas
inicio_privadas=iloc_pub_len; inicio_privadas=iloc_pub_len;
imem=mem[1]; // Principio del codigo imem=mem[1]; // Principio del codigo
/* /*
@ -274,12 +274,12 @@ int proceso( int num, int padre )
sp--; sp--;
break; break;
case ldiv://15 case ldiv://15
if(pila[sp]==0) error(145); // división entre cero if(pila[sp]==0) error(145); // división entre cero
pila[sp-1] /= pila[sp] ; pila[sp-1] /= pila[sp] ;
sp--; sp--;
break; break;
case lmod://16 case lmod://16
if(pila[sp]==0) error(145); // división entre cero if(pila[sp]==0) error(145); // división entre cero
pila[sp-1] %= pila[sp] ; pila[sp-1] %= pila[sp] ;
sp--; sp--;
break; break;
@ -360,11 +360,11 @@ int proceso( int num, int padre )
break; break;
case ltyp://32 case ltyp://32
if ( procs_s[num_proc].tipo != 0 ) { if ( procs_s[num_proc].tipo != 0 ) {
critical_error(3); // redefinición del tipo de proceso critical_error(3); // redefinición del tipo de proceso
} }
procs_s[num_proc].id = (mem[2] + ( num_proc * iloc_len ))|1; procs_s[num_proc].id = (mem[2] + ( num_proc * iloc_len ))|1;
if(procs_s[num_proc].id>imem_max-iloc_len) if(procs_s[num_proc].id>imem_max-iloc_len)
critical_error(8); // demasiados procesos en ejecución critical_error(8); // demasiados procesos en ejecución
memcpy(&mem[procs_s[num_proc].id],&mem[iloc],iloc_pub_len<<2); memcpy(&mem[procs_s[num_proc].id],&mem[iloc],iloc_pub_len<<2);
reserved("process_id",procs_s[num_proc].id)=procs_s[num_proc].id; reserved("process_id",procs_s[num_proc].id)=procs_s[num_proc].id;
if(padre!=-1) { if(padre!=-1) {
@ -413,14 +413,14 @@ int proceso( int num, int padre )
case lipt://38 case lipt://38
pila[sp] = ++mem[ pila[sp] ] ; pila[sp] = ++mem[ pila[sp] ] ;
break ; break ;
case lpti://39 COMPORTAMIENTO EXTRAÑO SI SE PONE EN UNA LINEA case lpti://39 COMPORTAMIENTO EXTRAÑO SI SE PONE EN UNA LINEA
mem[ pila[sp] ]++; mem[ pila[sp] ]++;
pila[sp] = mem[ pila[sp] ]-1 ; pila[sp] = mem[ pila[sp] ]-1 ;
break ; break ;
case ldpt://40 case ldpt://40
pila[sp] = --mem[ pila[sp] ] ; pila[sp] = --mem[ pila[sp] ] ;
break ; break ;
case lptd://41 COMPORTAMIENTO EXTRAÑO SI SE PONE EN UNA LINEA case lptd://41 COMPORTAMIENTO EXTRAÑO SI SE PONE EN UNA LINEA
mem[ pila[sp] ]--; mem[ pila[sp] ]--;
pila[sp] = mem[ pila[sp] ]+1 ; pila[sp] = mem[ pila[sp] ]+1 ;
break ; break ;
@ -846,14 +846,14 @@ int proceso( int num, int padre )
nstring=((nstring+1)&3); nstring=((nstring+1)&3);
break; break;
case lstrdec: /* cambio de tamaño "en el aire" (no da error, hace lo que puede) */ case lstrdec: /* cambio de tamaño "en el aire" (no da error, hace lo que puede) */
oo=strlen((char*)&mem[pila[sp-1]]); oo=strlen((char*)&mem[pila[sp-1]]);
if (oo<1028) { if (oo<1028) {
strcpy((char*)&mem[nullstring[nstring]],(char*)&mem[pila[sp-1]]); strcpy((char*)&mem[nullstring[nstring]],(char*)&mem[pila[sp-1]]);
if (pila[sp]>0) { /* Quitar caracteres */ if (pila[sp]>0) { /* Quitar caracteres */
if (pila[sp]>=oo) memb[nullstring[nstring]*4]=0; if (pila[sp]>=oo) memb[nullstring[nstring]*4]=0;
else memb[nullstring[nstring]*4+oo-pila[sp]]=0; else memb[nullstring[nstring]*4+oo-pila[sp]]=0;
} else if (pila[sp]<0) { /* Añadir (?) caracteres (por homogeneidad) */ } else if (pila[sp]<0) { /* Añadir (?) caracteres (por homogeneidad) */
pila[sp]=oo-pila[sp]; /* Nueva longitud */ pila[sp]=oo-pila[sp]; /* Nueva longitud */
if (pila[sp]>1025) pila[sp]=1025; if (pila[sp]>1025) pila[sp]=1025;
for (;oo<pila[sp];oo++) { for (;oo<pila[sp];oo++) {
@ -865,7 +865,7 @@ int proceso( int num, int padre )
nstring=((nstring+1)&3); nstring=((nstring+1)&3);
break; break;
case lstrsub: /* cambio de tamaño a un string */ case lstrsub: /* cambio de tamaño a un string */
oo=strlen((char*)&mem[pila[sp-1]]); oo=strlen((char*)&mem[pila[sp-1]]);
/* #ifdef DEBUG /* #ifdef DEBUG
if ((mem[pila[sp-1]-1]&0xFFF00000)!=0xDAD00000) { if ((mem[pila[sp-1]-1]&0xFFF00000)!=0xDAD00000) {
@ -882,7 +882,7 @@ int proceso( int num, int padre )
if (pila[sp]>0) { // Quitar caracteres if (pila[sp]>0) { // Quitar caracteres
if (pila[sp]>=oo) memb[pila[sp-1]*4]=0; if (pila[sp]>=oo) memb[pila[sp-1]*4]=0;
else memb[pila[sp-1]*4+oo-pila[sp]]=0; else memb[pila[sp-1]*4+oo-pila[sp]]=0;
} else if (pila[sp]<0) { /* Añadir (?) caracteres (por homogeneidad) */ } else if (pila[sp]<0) { /* Añadir (?) caracteres (por homogeneidad) */
pila[sp]=oo-pila[sp]; /* Nueva longitud */ pila[sp]=oo-pila[sp]; /* Nueva longitud */
for (;oo<pila[sp];oo++) { for (;oo<pila[sp];oo++) {
memb[pila[sp-1]*4+oo]=' '; memb[pila[sp-1]*4+oo]=' ';
@ -1011,7 +1011,7 @@ int proceso( int num, int padre )
sp--; mem[procs_s[num_proc].id+_param_offset]++; sp--; mem[procs_s[num_proc].id+_param_offset]++;
break; break;
/* Comprobación de punteros nulos */ /* Comprobación de punteros nulos */
case lnul: case lnul:
/* #ifdef DEBUG /* #ifdef DEBUG
if (!pila[sp]) { if (!pila[sp]) {
@ -1068,18 +1068,18 @@ int proceso( int num, int padre )
/* /*
* int localiza_lin (int ip) * int localiza_lin (int ip)
* Localiza el imem actual (ip) en la tabla LIN (es decir, localiza en qué línea y * Localiza el imem actual (ip) en la tabla LIN (es decir, localiza en qué línea y
* columna del PRG nos encontramos). * columna del PRG nos encontramos).
* *
* Retorna: * Retorna:
* ((El índice en lin[])-1)/4 <- sentiende no? * ((El índice en lin[])-1)/4 <- sentiende no?
*/ */
int localiza_lin(int ip) int localiza_lin(int ip)
{ {
lin_item* last; lin_item* last;
int i; int i;
/* Primero, para ahorrar tiempo, comprueba si aún seguimos dentro de la misma /* Primero, para ahorrar tiempo, comprueba si aún seguimos dentro de la misma
sentencia, aunque sea distinto opcode */ sentencia, aunque sea distinto opcode */
last=(lin_item*)(&lin[last_lin*4]); last=(lin_item*)(&lin[last_lin*4]);
if(last->inicio<=ip && last->fin>=ip) { if(last->inicio<=ip && last->fin>=ip) {
@ -1087,8 +1087,8 @@ int localiza_lin(int ip)
return last_lin; return last_lin;
} }
/* Si no, recorre la tabla LIN a partir de donde estábamos, no desde el principio, /* Si no, recorre la tabla LIN a partir de donde estábamos, no desde el principio,
ya que es más probable que hayamos saltado a una sentencia posterior que a una ya que es más probable que hayamos saltado a una sentencia posterior que a una
anterior */ anterior */
for(i=last_lin;i<lin[0];i++) { for(i=last_lin;i<lin[0];i++) {
if(lin[i*4+1]<=ip && lin[i*4+2]>=ip) if(lin[i*4+1]<=ip && lin[i*4+2]>=ip)
@ -1101,7 +1101,7 @@ int localiza_lin(int ip)
return i; return i;
} }
/* Si aún no lo hemos encontrado, mal rollito.. bug seguro, avisemos al programador */ /* Si aún no lo hemos encontrado, mal rollito.. bug seguro, avisemos al programador */
#ifdef _DEBUG #ifdef _DEBUG
printf("PANIC! No se en que parte del PRG estoy! imem=%d, last_lin=%d\n",ip,last_lin); printf("PANIC! No se en que parte del PRG estoy! imem=%d, last_lin=%d\n",ip,last_lin);
#endif #endif

View file

@ -33,46 +33,46 @@
#endif /* _WIN32 */ #endif /* _WIN32 */
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// MNEMÓNICOS BYTECODE EML // MNEMÓNICOS BYTECODE EML
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
//Mnemónico-Códg.-Operandos (Generación de código EML, "*" = "aún no usado") //Mnemónico-Códg.-Operandos (Generación de código EML, "*" = "aún no usado")
#define lnop 0 // * No operación #define lnop 0 // * No operación
#define lcar 1 // valor Carga una constante en pila #define lcar 1 // valor Carga una constante en pila
#define lasi 2 // Saca valor, offset y mete el valor en [offset] #define lasi 2 // Saca valor, offset y mete el valor en [offset]
#define lori 3 // Or lógico #define lori 3 // Or lógico
#define lxor 4 // Xor, or exclusivo #define lxor 4 // Xor, or exclusivo
#define land 5 // And lógico, operador sobre condiciones #define land 5 // And lógico, operador sobre condiciones
#define ligu 6 // Igual, operador logico de comparación #define ligu 6 // Igual, operador logico de comparación
#define ldis 7 // Distinto, true si los 2 valores son diferentes #define ldis 7 // Distinto, true si los 2 valores son diferentes
#define lmay 8 // Mayor, comparación con signo #define lmay 8 // Mayor, comparación con signo
#define lmen 9 // Menor, idem #define lmen 9 // Menor, idem
#define lmei 10 // Menor o igual #define lmei 10 // Menor o igual
#define lmai 11 // Mayor o igual #define lmai 11 // Mayor o igual
#define ladd 12 // Suma dos constantes #define ladd 12 // Suma dos constantes
#define lsub 13 // Resta, operación binaria #define lsub 13 // Resta, operación binaria
#define lmul 14 // Multiplicación #define lmul 14 // Multiplicación
#define ldiv 15 // División de enteros #define ldiv 15 // División de enteros
#define lmod 16 // Módulo, resto de la división #define lmod 16 // Módulo, resto de la división
#define lneg 17 // Negación, cambia de signo una constante #define lneg 17 // Negación, cambia de signo una constante
#define lptr 18 // Pointer, saca offset y mete [offset] #define lptr 18 // Pointer, saca offset y mete [offset]
#define lnot 19 // Negación binaria, bit a bit #define lnot 19 // Negación binaria, bit a bit
#define laid 20 // Suma id a la constante de la pila #define laid 20 // Suma id a la constante de la pila
#define lcid 21 // Carga id en la pila #define lcid 21 // Carga id en la pila
#define lrng 22 // rango Realiza una comparación de rango #define lrng 22 // rango Realiza una comparación de rango
#define ljmp 23 // offset Salta a una dirección de mem[] #define ljmp 23 // offset Salta a una dirección de mem[]
#define ljpf 24 // offset Salta si un valor es falso a una dirección #define ljpf 24 // offset Salta si un valor es falso a una dirección
#define lfun 25 /* código Llamada a un proceso interno, ej. signal() (obsoleto, ver lext) */ #define lfun 25 /* código Llamada a un proceso interno, ej. signal() (obsoleto, ver lext) */
#define lcal 26 // offset Crea un nuevo proceso en el programa #define lcal 26 // offset Crea un nuevo proceso en el programa
#define lret 27 // Auto-eliminación del proceso #define lret 27 // Auto-eliminación del proceso
#define lasp 28 // Desecha un valor apilado #define lasp 28 // Desecha un valor apilado
#define lfrm 29 // Detiene por este frame la ejecución del proceso #define lfrm 29 // Detiene por este frame la ejecución del proceso
#define lcbp 30 // num_par Inicializa el puntero a los parámetros locales #define lcbp 30 // num_par Inicializa el puntero a los parámetros locales
#define lcpa 31 // Saca offset, lee parámetro [offset] y bp++ #define lcpa 31 // Saca offset, lee parámetro [offset] y bp++
#define ltyp 32 // bloque Define el tipo de proceso actual (colisiones) #define ltyp 32 // bloque Define el tipo de proceso actual (colisiones)
#define lpri 33 // offset Salta a la dirección, y carga var. privadas #define lpri 33 // offset Salta a la dirección, y carga var. privadas
#define lcse 34 // offset Si switch <> expresión, salta al offset #define lcse 34 // offset Si switch <> expresión, salta al offset
#define lcsr 35 // offset Si switch no esta en el rango, salta al offset #define lcsr 35 // offset Si switch no esta en el rango, salta al offset
#define lshr 36 // Rotacion a la derecha (modo C, >>) #define lshr 36 // Rotacion a la derecha (modo C, >>)
#define lshl 37 // Rotacion a la izquierda (modo C, <<) #define lshl 37 // Rotacion a la izquierda (modo C, <<)
@ -80,26 +80,26 @@
#define lpti 39 // Pointer e incremento #define lpti 39 // Pointer e incremento
#define ldpt 40 // Decremento y pointer #define ldpt 40 // Decremento y pointer
#define lptd 41 // Pointer y decremento #define lptd 41 // Pointer y decremento
#define lada 42 // Add-asignación #define lada 42 // Add-asignación
#define lsua 43 // Sub-asignación #define lsua 43 // Sub-asignación
#define lmua 44 // Mul-asignación #define lmua 44 // Mul-asignación
#define ldia 45 // Div-asignación #define ldia 45 // Div-asignación
#define lmoa 46 // Mod-asignación #define lmoa 46 // Mod-asignación
#define lana 47 // And-asignación #define lana 47 // And-asignación
#define lora 48 // Or-asignación #define lora 48 // Or-asignación
#define lxoa 49 // Xor-asignación #define lxoa 49 // Xor-asignación
#define lsra 50 // Shr-asignación #define lsra 50 // Shr-asignación
#define lsla 51 // Shl-asignación #define lsla 51 // Shl-asignación
#define lpar 52 // num_par_pri Define el número de parámetros privados #define lpar 52 // num_par_pri Define el número de parámetros privados
#define lrtf 53 // Auto-eliminación del proceso, devuelve un valor #define lrtf 53 // Auto-eliminación del proceso, devuelve un valor
#define lclo 54 // offset Crea un clon del proceso actual #define lclo 54 // offset Crea un clon del proceso actual
#define lfrf 55 // Pseudo-Frame (frame a un porcentaje, frame(100)==frame) #define lfrf 55 // Pseudo-Frame (frame a un porcentaje, frame(100)==frame)
#define limp 56 // offset text Importa una DLL externa #define limp 56 // offset text Importa una DLL externa
#define lext 57 // código Llama a una función externa #define lext 57 // código Llama a una función externa
#define lchk 58 // Comprueba la validez de un identificador #define lchk 58 // Comprueba la validez de un identificador
#define ldbg 59 // Invoca al debugger #define ldbg 59 // Invoca al debugger
// Instrucciones añadidas para la optimización (DIV 2.0) // Instrucciones añadidas para la optimización (DIV 2.0)
#define lcar2 60 /* car + car */ #define lcar2 60 /* car + car */
#define lcar3 61 /* car + car + car */ #define lcar3 61 /* car + car + car */
@ -120,7 +120,7 @@
#define lcarsub 76 /* car + sub */ #define lcarsub 76 /* car + sub */
#define lcardiv 77 /* car + div */ #define lcardiv 77 /* car + div */
// Instrucciones añadidas para el manejo de caracteres // Instrucciones añadidas para el manejo de caracteres
#define lptrchr 78 // Pointer, saca (index, offset) y mete [offset+byte index] #define lptrchr 78 // Pointer, saca (index, offset) y mete [offset+byte index]
#define lasichr 79 // Saca (valor, index, offset) y mete el valor en [offset+byte index] #define lasichr 79 // Saca (valor, index, offset) y mete el valor en [offset+byte index]
@ -128,25 +128,25 @@
#define lptichr 81 // Pointer e incremento #define lptichr 81 // Pointer e incremento
#define ldptchr 82 // Decremento y pointer #define ldptchr 82 // Decremento y pointer
#define lptdchr 83 // Pointer y decremento #define lptdchr 83 // Pointer y decremento
#define ladachr 84 // Add-asignación #define ladachr 84 // Add-asignación
#define lsuachr 85 // Sub-asignación #define lsuachr 85 // Sub-asignación
#define lmuachr 86 // Mul-asignación #define lmuachr 86 // Mul-asignación
#define ldiachr 87 // Div-asignación #define ldiachr 87 // Div-asignación
#define lmoachr 88 // Mod-asignación #define lmoachr 88 // Mod-asignación
#define lanachr 89 // And-asignación #define lanachr 89 // And-asignación
#define lorachr 90 // Or-asignación #define lorachr 90 // Or-asignación
#define lxoachr 91 // Xor-asignación #define lxoachr 91 // Xor-asignación
#define lsrachr 92 // Shr-asignación #define lsrachr 92 // Shr-asignación
#define lslachr 93 // Shl-asignación #define lslachr 93 // Shl-asignación
#define lcpachr 94 // Saca offset, lee parámetro [offset] y bp++ #define lcpachr 94 // Saca offset, lee parámetro [offset] y bp++
// Instrucciones añadidas para el manejo de cadenas // Instrucciones añadidas para el manejo de cadenas
#define lstrcpy 95 // Saca si, di, y hace strcpy(mem[di],[si]) (deja di en pila) #define lstrcpy 95 // Saca si, di, y hace strcpy(mem[di],[si]) (deja di en pila)
#define lstrfix 96 // Amplia una cadena antes de meter un char en ella #define lstrfix 96 // Amplia una cadena antes de meter un char en ella
#define lstrcat 97 // Concatena dos cadenas (opera como strcpy) #define lstrcat 97 // Concatena dos cadenas (opera como strcpy)
#define lstradd 98 // Suma dos strings "en el aire" y deja en pila el puntero al aire #define lstradd 98 // Suma dos strings "en el aire" y deja en pila el puntero al aire
#define lstrdec 99 // Añade o quita caracteres a una cadena #define lstrdec 99 // Añade o quita caracteres a una cadena
#define lstrsub 100 // Quita caracteres a una cadena (-=) #define lstrsub 100 // Quita caracteres a una cadena (-=)
#define lstrlen 101 // Sustituye una cadena por su longitud #define lstrlen 101 // Sustituye una cadena por su longitud
#define lstrigu 102 // Comparacion de igualdad de dos cadenas #define lstrigu 102 // Comparacion de igualdad de dos cadenas
@ -155,9 +155,9 @@
#define lstrmen 105 // Cadena menor #define lstrmen 105 // Cadena menor
#define lstrmei 106 // Cadena mayor o igual #define lstrmei 106 // Cadena mayor o igual
#define lstrmai 107 // Cadena menor o igual #define lstrmai 107 // Cadena menor o igual
#define lcpastr 108 // Carga un parámetro en una cadena #define lcpastr 108 // Carga un parámetro en una cadena
// Instrucciones añadidas para el manejo de Words // Instrucciones añadidas para el manejo de Words
#define lptrwor 109 // Pointer, saca (index, offset) y mete [offset+byte index] #define lptrwor 109 // Pointer, saca (index, offset) y mete [offset+byte index]
#define lasiwor 110 // Saca (valor, index, offset) y mete el valor en [offset+byte index] #define lasiwor 110 // Saca (valor, index, offset) y mete el valor en [offset+byte index]
@ -165,39 +165,39 @@
#define lptiwor 112 // Pointer e incremento #define lptiwor 112 // Pointer e incremento
#define ldptwor 113 // Decremento y pointer #define ldptwor 113 // Decremento y pointer
#define lptdwor 114 // Pointer y decremento #define lptdwor 114 // Pointer y decremento
#define ladawor 115 // Add-asignación #define ladawor 115 // Add-asignación
#define lsuawor 116 // Sub-asignación #define lsuawor 116 // Sub-asignación
#define lmuawor 117 // Mul-asignación #define lmuawor 117 // Mul-asignación
#define ldiawor 118 // Div-asignación #define ldiawor 118 // Div-asignación
#define lmoawor 119 // Mod-asignación #define lmoawor 119 // Mod-asignación
#define lanawor 120 // And-asignación #define lanawor 120 // And-asignación
#define lorawor 121 // Or-asignación #define lorawor 121 // Or-asignación
#define lxoawor 122 // Xor-asignación #define lxoawor 122 // Xor-asignación
#define lsrawor 123 // Shr-asignación #define lsrawor 123 // Shr-asignación
#define lslawor 124 // Shl-asignación #define lslawor 124 // Shl-asignación
#define lcpawor 125 // Saca offset, lee parámetro [offset] y bp++ #define lcpawor 125 // Saca offset, lee parámetro [offset] y bp++
/* Miscelánea */ /* Miscelánea */
#define lnul 126 // Comprueba que un puntero no sea NULL #define lnul 126 // Comprueba que un puntero no sea NULL
/* Instrucciones añadidas en eDIV */ /* Instrucciones añadidas en eDIV */
#define lextasp 127 /* ext + asp, sustituye a funasp */ #define lextasp 127 /* ext + asp, sustituye a funasp */
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Variables locales del sistema de sprites (las primeras no son p£blicas) // Variables locales del sistema de sprites (las primeras no son p£blicas)
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
#define _Id 0 //Para comprobar validez de accesos externos #define _Id 0 //Para comprobar validez de accesos externos
#define _IdScan 1 //Recorrido del resto de los procesos (p.ej.colisiones) #define _IdScan 1 //Recorrido del resto de los procesos (p.ej.colisiones)
#define _Bloque 2 //Identificador del tipo de proceso (para colisiones) #define _Bloque 2 //Identificador del tipo de proceso (para colisiones)
#define _BlScan 3 //Ultimo tipo de proceso scaneado en el £ltimo recorrido #define _BlScan 3 //Ultimo tipo de proceso scaneado en el £ltimo recorrido
#define _Status 4 //Estado (0 dead, 1 killed, 2 alive, 3 sleept, 4 freezed) #define _Status 4 //Estado (0 dead, 1 killed, 2 alive, 3 sleept, 4 freezed)
#define _NumPar 5 //N£mero de par metros del proceso #define _NumPar 5 //N£mero de par metros del proceso
#define _Param 6 //Puntero a los par metros pasados al proceso (en pila) #define _Param 6 //Puntero a los par metros pasados al proceso (en pila)
#define _IP 7 //Puntero de ejecuci¢n (la siguiente al frame anterior) #define _IP 7 //Puntero de ejecuci¢n (la siguiente al frame anterior)
#define _SP 8 //Puntero de pila (stack pointer del proceso) #define _SP 8 //Puntero de pila (stack pointer del proceso)
#define _Executed 9 //Indica para cada frame si el proceso ya se ejecut¢ #define _Executed 9 //Indica para cada frame si el proceso ya se ejecut¢
#define _Painted 10 //Indica si el proceso ya ha sido pintado #define _Painted 10 //Indica si el proceso ya ha sido pintado
// Las siguientes 2 variables son duales, segun el proceso sea de m7 o m8 // Las siguientes 2 variables son duales, segun el proceso sea de m7 o m8
@ -211,30 +211,30 @@
#define _Frame 13 //Cuanto frame lleva el proceso (frame(n)) #define _Frame 13 //Cuanto frame lleva el proceso (frame(n))
#define _x0 14 //Caja ocupada por el sprite cada #define _x0 14 //Caja ocupada por el sprite cada
#define _y0 15 // vez que se pinta para realizar #define _y0 15 // vez que se pinta para realizar
#define _x1 16 // volcado y restauraci¢n de fondo #define _x1 16 // volcado y restauraci¢n de fondo
#define _y1 17 // parcial (dump_type==0 y restore_background==0) #define _y1 17 // parcial (dump_type==0 y restore_background==0)
#define _FCount 18 //Cuenta de llamadas a funcion (para saltarse retornos en frame) #define _FCount 18 //Cuenta de llamadas a funcion (para saltarse retornos en frame)
#define _Caller 19 //ID del proceso o funcion llamador (0 si ha sido el kernel) #define _Caller 19 //ID del proceso o funcion llamador (0 si ha sido el kernel)
#define _Father 20 //Id del padre del proceso (0 si no existe) #define _Father 20 //Id del padre del proceso (0 si no existe)
#define _Son 21 //Id del £ltimo hijo que ha creado (0 sne) #define _Son 21 //Id del £ltimo hijo que ha creado (0 sne)
#define _SmallBro 22 //Id del hermano menor del proceso (0 sne) #define _SmallBro 22 //Id del hermano menor del proceso (0 sne)
#define _BigBro 23 //Id del hermanos mayor (m s viejo) del proceso (0 sne) #define _BigBro 23 //Id del hermanos mayor (m s viejo) del proceso (0 sne)
#define _Priority 24 //Prioridad de proceso (positivo o negativo) #define _Priority 24 //Prioridad de proceso (positivo o negativo)
#define _Ctype 25 //Indica si es relativo a pantalla, parallax o mode 7 #define _Ctype 25 //Indica si es relativo a pantalla, parallax o mode 7
#define _X 26 //Coordenada x (del centro gravitatorio del gr fico) #define _X 26 //Coordenada x (del centro gravitatorio del gr fico)
#define _Y 27 //Coordenada y (idem) #define _Y 27 //Coordenada y (idem)
#define _Z 28 //Coordenada z (Prioridad para la impresi¢n) #define _Z 28 //Coordenada z (Prioridad para la impresi¢n)
#define _Graph 29 //C¢digo del gr fico (se corresponde con los ficheros) #define _Graph 29 //C¢digo del gr fico (se corresponde con los ficheros)
#define _Flags 30 //Define espejados horizontales y verticales #define _Flags 30 //Define espejados horizontales y verticales
#define _Size 31 //Tama¤o (%) del gr fico #define _Size 31 //Tamao (%) del gr fico
#define _Angle 32 //Angulo de rotaci¢n del gr fico (0 gr fico normal) #define _Angle 32 //Angulo de rotaci¢n del gr fico (0 gr fico normal)
#define _Region 33 //Regi¢n con la que hacer el clipping del gr fico #define _Region 33 //Regi¢n con la que hacer el clipping del gr fico
#define _File 34 //FPG que contiene los gr ficos del proceso #define _File 34 //FPG que contiene los gr ficos del proceso
#define _XGraph 35 //Puntero a tabla: n§graficos,graf_angulo_0,... #define _XGraph 35 //Puntero a tabla: n§graficos,graf_angulo_0,...
#define _Height 36 //Altura de los procesos en el modo 7 (pix/4) #define _Height 36 //Altura de los procesos en el modo 7 (pix/4)
#define _Cnumber 37 //Indica en que scroll o m7 se ver  el gr fico #define _Cnumber 37 //Indica en que scroll o m7 se ver  el gr fico
#define _Resolution 38 //Resoluci¢n de las coordenadas x,y para este proceso #define _Resolution 38 //Resoluci¢n de las coordenadas x,y para este proceso
#define _Radius 39 //Radio del objeto en m8 #define _Radius 39 //Radio del objeto en m8
#define _M8_Wall 40 //Pared con la que colisiona #define _M8_Wall 40 //Pared con la que colisiona
#define _M8_Sector 41 //Sector en el que esta #define _M8_Sector 41 //Sector en el que esta

View file

@ -19,7 +19,7 @@
*/ */
/**** ¡¡¡ OJO CON LAS COMAS !!! ****/ /**** ¡¡¡ OJO CON LAS COMAS !!! ****/
#ifdef _WIN32 #ifdef _WIN32
@ -37,11 +37,11 @@ int detecta_idioma_iso(char* lang)
{ {
int i; int i;
static char getid[NUM_LANGUAGES][3] = { static char getid[NUM_LANGUAGES][3] = {
"es", // español "es", // español
"it", // italiano "it", // italiano
"pt", // portugués "pt", // portugués
"en", // inglés "en", // inglés
"ca", // catalán "ca", // catalán
"eu" // euskera "eu" // euskera
}; };
if(lang==NULL) return DEFAULT_LANGUAGE; if(lang==NULL) return DEFAULT_LANGUAGE;
@ -61,11 +61,11 @@ int detecta_idioma()
#ifdef _WIN32 #ifdef _WIN32
int i; int i;
static int getid[NUM_LANGUAGES] = { static int getid[NUM_LANGUAGES] = {
0x0a, // español 0x0a, // español
0x10, // italiano 0x10, // italiano
0x16, // portugués 0x16, // portugués
0x09, // inglés 0x09, // inglés
0x03, // catalán 0x03, // catalán
0x2d // euskera 0x2d // euskera
}; };
LANGID lang; LANGID lang;
@ -96,8 +96,8 @@ char* translate(int id_cadena)
/* /*
* NOTA: los huecos vacíos (184..199) son de errores no usados en DIV2, por favor * NOTA: los huecos vacíos (184..199) son de errores no usados en DIV2, por favor
* aprovechadlos para añadir nuevos errores. * aprovechadlos para añadir nuevos errores.
*/ */
char* translate_runtime_error(int num) char* translate_runtime_error(int num)

View file

@ -1,5 +1,5 @@
/* Fenix - Compilador/intérprete de videojuegos /* Fenix - Compilador/intérprete de videojuegos
* Copyright (C) 1999 José Luis Cebrián Pagüe * Copyright (C) 1999 José Luis Cebrián Pagüe
* *
* Adaptado a eDiv por Sion Entertainment * Adaptado a eDiv por Sion Entertainment
* *
@ -23,7 +23,7 @@
#include "main.h" #include "main.h"
#include "lower.h" // <- hacer un h con las declaraciones #include "lower.h" // <- hacer un h con las declaraciones
/* Tabla de conversión de caracteres MS-DOS a Windows */ /* Tabla de conversión de caracteres MS-DOS a Windows */
int dos_chars=0; int dos_chars=0;
@ -46,7 +46,7 @@ byte dos_to_win[256] = {
173, 177, 61, 190, 182, 167, 247, 184, 176, 168, 183, 185, 179, 178, 166, 160 173, 177, 61, 190, 182, 167, 247, 184, 176, 168, 183, 185, 179, 178, 166, 160
}; };
/* Tabla de conversión de caracteres Windows a MS-DOS */ /* Tabla de conversión de caracteres Windows a MS-DOS */
byte win_to_dos[256] = byte win_to_dos[256] =
{ {
@ -87,7 +87,7 @@ void set_c_lower (const byte * from, const byte * to)
void inicializa_lower() void inicializa_lower()
{ {
/* ¡Esto hay que revisarlo bastante! /* ¡Esto hay que revisarlo bastante!
*/ */
memset (lower, 0, 256); // es necesario memset (lower, 0, 256); // es necesario
@ -98,16 +98,16 @@ void inicializa_lower()
"abcdefghijklmnopqrstuvwxyz"); "abcdefghijklmnopqrstuvwxyz");
#ifdef RESPETAR_ACENTOS #ifdef RESPETAR_ACENTOS
set_c_lower ("ÁÉÍÓÚÑÇÀÈÌÒÙÄËÏÖÜÝÂÊÎÔÛÆÃÅÕ", set_c_lower ("ÁÉÍÓÚÑÇÀÈÌÒÙÄËÏÖÜÝÂÊÎÔÛÆÃÅÕ",
"áéíóúñçàèìòùäëïöüýâêîôûæãåõ"); "áéíóúñçàèìòùäëïöüýâêîôûæãåõ");
set_c_lower("áéíóúñçàèìòùäëïöüýâêîôûæãåõ", set_c_lower("áéíóúñçàèìòùäëïöüýâêîôûæãåõ",
"áéíóúñçàèìòùäëïöüýâêîôûæãåõ"); "áéíóúñçàèìòùäëïöüýâêîôûæãåõ");
#else #else
set_c_lower ("ÁÉÍÓÚÑÇÀÈÌÒÙÄËÏÖÜÝÂÊÎÔÛÆÃÅÕ", set_c_lower ("ÁÉÍÓÚÑÇÀÈÌÒÙÄËÏÖÜÝÂÊÎÔÛÆÃÅÕ",
"aeiouncaeiouaeiouyaeiouæaao"); "aeiouncaeiouaeiouyaeiouæaao");
set_c_lower ("áéíóúñÑçÇàèìòùäëïöüýâêîôûæãåõÁÉÍÓÚ", set_c_lower ("áéíóúñÑçÇàèìòùäëïöüýâêîôûæãåõÁÉÍÓÚ",
"aeiounnccaeiouaeiouyaeiouÆaaoaeiou"); "aeiounnccaeiouaeiouyaeiouÆaaoaeiou");
#endif #endif
set_c_lower("1234567890#$_ºª","1234567890#$_ºª"); set_c_lower("1234567890#$_ºª","1234567890#$_ºª");
} }

View file

@ -24,7 +24,7 @@
//#include <SDL/SDL.h> //#include <SDL/SDL.h>
#include "shared.h" #include "shared.h"
//#define DEBUG_DLL // para mostrar información al cargar las DLLs //#define DEBUG_DLL // para mostrar información al cargar las DLLs
#define swap(a,b) {(a)^=(b);(b)^=(a);(a)^=(b);} #define swap(a,b) {(a)^=(b);(b)^=(a);(a)^=(b);}
@ -49,9 +49,9 @@ int debug; // 1 = el programa esta compilado en modo debug
int num_proc; // Numero de proceso activo ( indice procs_s[] ) int num_proc; // Numero de proceso activo ( indice procs_s[] )
int imem; // indice de mem int imem; // indice de mem
int imem_max; // máximo indice de mem int imem_max; // máximo indice de mem
int * mem; // Memoria principal de la máquina destino int * mem; // Memoria principal de la máquina destino
// iguales que mem pero de tipo word y byte // iguales que mem pero de tipo word y byte
word * memw; word * memw;
@ -100,10 +100,10 @@ int linsize;
// PROTOTIPOS // PROTOTIPOS
/// ///
void error(int num, ...); // Mensaje de error no crítico (trazable) void error(int num, ...); // Mensaje de error no crítico (trazable)
void critical_error(int num, ...); // Mensaje de error crítico void critical_error(int num, ...); // Mensaje de error crítico
void custom_error(tipoerror tipo, char* mensaje); /* Errores personalizados de las DLLs */ void custom_error(tipoerror tipo, char* mensaje); /* Errores personalizados de las DLLs */
void stub_quit(int n); // Salir del stub void stub_quit(int n); // Salir del stub
void* e_malloc(size_t size); // identico a malloc pero con errormsg utomático void* e_malloc(size_t size); // identico a malloc pero con errormsg utomático
#endif /* __MAIN_H */ #endif /* __MAIN_H */

View file

@ -111,7 +111,7 @@ void dll_func() // ke original, no? XD
for(i=0;i<2;i++) { for(i=0;i<2;i++) {
fichero_dll=readdir(directorio); fichero_dll=readdir(directorio);
if(fichero_dll==0) { if(fichero_dll==0) {
printf("No se encuentra ninguna librería\n"); printf("No se encuentra ninguna librería\n");
exit(1); exit(1);
} }
} }
@ -121,7 +121,7 @@ void dll_func() // ke original, no? XD
if(fichero_dll==0) if(fichero_dll==0)
break; break;
if(fichero_dll->d_type==DT_REG) { if(fichero_dll->d_type==DT_REG) {
printf("Librería encontrada: so/%s\n",fichero_dll->d_name); printf("Librería encontrada: so/%s\n",fichero_dll->d_name);
strcpy(fichdll,"so/"); strcpy(fichdll,"so/");
strcat(fichdll,fichero_dll->d_name); strcat(fichdll,fichero_dll->d_name);
// dlls[numdlls].nfuncs=0; // dlls[numdlls].nfuncs=0;
@ -134,7 +134,7 @@ void dll_func() // ke original, no? XD
} }
} }
if(numdlls==0) { if(numdlls==0) {
printf("No se encuentra ninguna librería\n"); printf("No se encuentra ninguna librería\n");
exit(1); exit(1);
} }
#endif #endif
@ -157,7 +157,7 @@ void dll_func2()
#endif #endif
strcat(fichdll,dlls[i].nombre); strcat(fichdll,dlls[i].nombre);
if(leedll()) { if(leedll()) {
printf("Error al cargar librería %s\n",dlls[i].nombre); printf("Error al cargar librería %s\n",dlls[i].nombre);
exit(1); exit(1);
} }
} }
@ -234,7 +234,7 @@ int leedll()
ExportaFuncs=(TYPEOF_ExportaFuncs *) dlsym(hDLL,"ExportaFuncs"); ExportaFuncs=(TYPEOF_ExportaFuncs *) dlsym(hDLL,"ExportaFuncs");
if((errordll=dlerror())!=NULL) { if((errordll=dlerror())!=NULL) {
printf("No se encuentra ExportaFuncs en %s - Librería no válida (%s)\n",fichdll,errordll); printf("No se encuentra ExportaFuncs en %s - Librería no válida (%s)\n",fichdll,errordll);
dlclose(hDLL); dlclose(hDLL);
return 1; return 1;
} }

View file

@ -50,7 +50,7 @@
/* Main ( argc, argv ) /* Main ( argc, argv )
* *
* Rutina principal. Lee el bytecode del ejecutable, lo descomprime y lo carga en memoria * Rutina principal. Lee el bytecode del ejecutable, lo descomprime y lo carga en memoria
* (La mayoría de las variables y buffers se mantienen con el mismo nombre que en el compilador: * (La mayoría de las variables y buffers se mantienen con el mismo nombre que en el compilador:
* mem, imem_max, etc) * mem, imem_max, etc)
*/ */
@ -88,8 +88,8 @@ int main(int argc, char* argv[])
/*sdl_version=SDL_Linked_Version(); /*sdl_version=SDL_Linked_Version();
#ifdef _DEBUG #ifdef _DEBUG
printf("Versión SDL del exe: %d.%d.%d\n",SDL_MAJOR_VERSION,SDL_MINOR_VERSION,SDL_PATCHLEVEL); printf("Versión SDL del exe: %d.%d.%d\n",SDL_MAJOR_VERSION,SDL_MINOR_VERSION,SDL_PATCHLEVEL);
printf("Versión de SDL instalada: %d.%d.%d\n",sdl_version->major,sdl_version->minor,sdl_version->patch); printf("Versión de SDL instalada: %d.%d.%d\n",sdl_version->major,sdl_version->minor,sdl_version->patch);
#endif #endif
if(sdl_version->major<SDL_MAJOR_VERSION if(sdl_version->major<SDL_MAJOR_VERSION
|| (sdl_version->major==SDL_MAJOR_VERSION && || (sdl_version->major==SDL_MAJOR_VERSION &&
@ -126,7 +126,7 @@ int main(int argc, char* argv[])
printf("%s\n",argv[0]); printf("%s\n",argv[0]);
if((f=open(argv[0],O_RDONLY | O_BINARY))==-1) if((f=open(argv[0],O_RDONLY | O_BINARY))==-1)
#endif*/ #endif*/
critical_error(1); // error leyendo el código del programa critical_error(1); // error leyendo el código del programa
} }
lseek(f,-4,SEEK_END); lseek(f,-4,SEEK_END);
@ -148,7 +148,7 @@ int main(int argc, char* argv[])
if (mimem[3]>0) { if (mimem[3]>0) {
imem_max=mimem[8]+mimem[3]*(iloc_len)+iloc_len+2; imem_max=mimem[8]+mimem[3]*(iloc_len)+iloc_len+2;
} else { } else {
/* si max_process==0, calcula un límite de memoria */ /* si max_process==0, calcula un límite de memoria */
imem_max=mimem[8]+128*(iloc_len)+iloc_len+2; imem_max=mimem[8]+128*(iloc_len)+iloc_len+2;
if (imem_max<256*1024) imem_max=256*1024; if (imem_max<256*1024) imem_max=256*1024;
if (imem_max>512*1024) imem_max=512*1024; if (imem_max>512*1024) imem_max=512*1024;
@ -212,7 +212,7 @@ int main(int argc, char* argv[])
free(ptr); free(ptr);
free(vartemp); free(vartemp);
close(f); close(f);
critical_error(1); // error leyendo el código del programa critical_error(1); // error leyendo el código del programa
} }
varindex=(varindex_t*)e_malloc(num_indexed_vars*sizeof(varindex_t)); varindex=(varindex_t*)e_malloc(num_indexed_vars*sizeof(varindex_t));
@ -251,7 +251,7 @@ int main(int argc, char* argv[])
close(f); close(f);
free(prog); free(prog);
free(progcomp); free(progcomp);
critical_error(1); // error leyendo el código del programa critical_error(1); // error leyendo el código del programa
} }
free(progcomp); free(progcomp);
read(f,&linsize,4); read(f,&linsize,4);
@ -280,10 +280,10 @@ int main(int argc, char* argv[])
// - Inicializar SDL // - Inicializar SDL
// - Inicializarlo todo (incluyendo trazador si DBG esta definido) // - Inicializarlo todo (incluyendo trazador si DBG esta definido)
// - Rular el kernel y ke interprete el programa // - Rular el kernel y ke interprete el programa
// - Si hay un error, llamar a error() y que se encargue de todo. Si está // - Si hay un error, llamar a error() y que se encargue de todo. Si está
// definido DBG, debe ser posible retomar la ejecución despues del error // definido DBG, debe ser posible retomar la ejecución despues del error
// - Al terminar la ejecución, descargarlo TODO (empezando por los recursos y // - Al terminar la ejecución, descargarlo TODO (empezando por los recursos y
// acabando por el código interno) // acabando por el código interno)
// - Restaurar el estado del sistema si es necesario y finalizar SDL // - Restaurar el estado del sistema si es necesario y finalizar SDL
// Nota: las DLL's se cargan en el transcurso del programa (las instrucciones // Nota: las DLL's se cargan en el transcurso del programa (las instrucciones
@ -406,15 +406,15 @@ int main(int argc, char* argv[])
} else { } else {
close(f); close(f);
free(ptr); free(ptr);
critical_error(1); // error leyendo el código del programa critical_error(1); // error leyendo el código del programa
} }
} else { } else {
close(f); close(f);
critical_error(1); // error leyendo el código del programa critical_error(1); // error leyendo el código del programa
} }
} else { close(f); error(1); } // error leyendo el código del programa } else { close(f); error(1); } // error leyendo el código del programa
return 0; return 0;
} }
@ -435,7 +435,7 @@ void stub_quit(int n)
} }
// idéntico a malloc, pero con errormsg utomático // idéntico a malloc, pero con errormsg utomático
void* e_malloc(size_t size) void* e_malloc(size_t size)
{ {
void* ret; void* ret;

View file

@ -22,7 +22,7 @@
/** /**
* @file builtinfont.c * @file builtinfont.c
* Convierte una fuente en bmp (8bpp) de 6x8 en un .h para poderse usar como * Convierte una fuente en bmp (8bpp) de 6x8 en un .h para poderse usar como
* fuente de sistema ( 0) en el stub. * fuente de sistema ( 0) en el stub.
* NOTA: Este programa es menos indulgente que el de Riseven leyendo los .bmp :p * NOTA: Este programa es menos indulgente que el de Riseven leyendo los .bmp :p
*/ */
@ -110,7 +110,7 @@ int main(int argc, char* argv[])
printf("Error al crear %s\n",nombreh); printf("Error al crear %s\n",nombreh);
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
fprintf(fp,"/**\n * @file %s\n * Definición de la fuente %s (generado por builtinfont)\n */\n\n",nombreh,nombre); fprintf(fp,"/**\n * @file %s\n * Definición de la fuente %s (generado por builtinfont)\n */\n\n",nombreh,nombre);
fprintf(fp,"#ifndef __EDIV__%s_h__\n#define __EDIV__%s_h__\n\n",nombre,nombre); fprintf(fp,"#ifndef __EDIV__%s_h__\n#define __EDIV__%s_h__\n\n",nombre,nombre);
fprintf(fp,"static unsigned char %s[256*8] = {\n",nombre); fprintf(fp,"static unsigned char %s[256*8] = {\n",nombre);

View file

@ -53,7 +53,7 @@ void procesa_indice();
/* /*
* esta es llamada cuando encontramos <%subindex%>. Se le indica el fichero * esta es llamada cuando encontramos <%subindex%>. Se le indica el fichero
* actual y busca la entrada correspondiente en el index.dok. Entonces parsea * actual y busca la entrada correspondiente en el index.dok. Entonces parsea
* la porcion de arbol que engloba y genera un subíndice como los de SGML. * la porcion de arbol que engloba y genera un subíndice como los de SGML.
*/ */
void procesa_subindice(char* actual); void procesa_subindice(char* actual);

View file

@ -1,17 +1,17 @@
/* IconChanger /* IconChanger
* Pequeña utilidad-complemento para eDIV que permite sustituir el icono del stub de * Pequeña utilidad-complemento para eDIV que permite sustituir el icono del stub de
* win32 por otro. El icono nuevo debe ser exactamente igual que el original del stub, * win32 por otro. El icono nuevo debe ser exactamente igual que el original del stub,
* es decir, tiene que cumplir las siguientes condiciones: * es decir, tiene que cumplir las siguientes condiciones:
* - Contener 6 imágenes en total: * - Contener 6 imágenes en total:
* + 16x16 a 4, 8 y 24 bits de color * + 16x16 a 4, 8 y 24 bits de color
* + 32x32 a 4, 8 y 24 bits de color * + 32x32 a 4, 8 y 24 bits de color
* - "Pesar" exactamente 8.854 bytes. * - "Pesar" exactamente 8.854 bytes.
* Este programa es muy simple así que no se molesta en comprobar el formato del fichero, * Este programa es muy simple así que no se molesta en comprobar el formato del fichero,
* únicamente comprueba su tamaño. Si metes un icono que no es adecuado.. allá .. * únicamente comprueba su tamaño. Si metes un icono que no es adecuado.. allá ..
* Puede ser útil en el futuro currarnos un programa decente que soporte cualquier tipo * Puede ser útil en el futuro currarnos un programa decente que soporte cualquier tipo
* de iconos, que cambiara el tamaño del exe, etc etc, ya sería la reostia, pero por * de iconos, que cambiara el tamaño del exe, etc etc, ya sería la reostia, pero por
* ahora con esto nos sobra. * ahora con esto nos sobra.
* Pekeño inconveniente: sólo se puede cambiar el icono 1 vez :p Si se kiere cambiar el * Pekeño inconveniente: sólo se puede cambiar el icono 1 vez :p Si se kiere cambiar el
* icono por segunda vez, hay que recompilar el programa. En realidad no importa, ya que * icono por segunda vez, hay que recompilar el programa. En realidad no importa, ya que
* en verdad es lo que pasa en todos los compiladores... * en verdad es lo que pasa en todos los compiladores...
* Si se kiere cambiar el icono y un virus te ha comido el ediv.exe o el .prg, pos tiras * Si se kiere cambiar el icono y un virus te ha comido el ediv.exe o el .prg, pos tiras
@ -21,7 +21,7 @@
*/ */
#ifndef _WIN32 #ifndef _WIN32
#error IconChanger es sólamente para Win32 #error IconChanger es sólamente para Win32
#endif #endif
#include <stdio.h> #include <stdio.h>
@ -31,9 +31,9 @@
#include "iconchanger.h" #include "iconchanger.h"
#define ICO_SIZE 8854 // Tamaño que debe tener el .ico #define ICO_SIZE 8854 // Tamaño que debe tener el .ico
#define ICO_START 0x66 // Offset donde se empieza a leer el .ico #define ICO_START 0x66 // Offset donde se empieza a leer el .ico
#define ICO_LEN 0x2230 // Tamaño del bloque a copiar del .ico al .exe #define ICO_LEN 0x2230 // Tamaño del bloque a copiar del .ico al .exe
void* e_malloc(size_t size) void* e_malloc(size_t size)
@ -71,10 +71,10 @@ int main(int argc, char* argv[])
tamanyo=ftell(f); tamanyo=ftell(f);
if(tamanyo!=ICO_SIZE) { if(tamanyo!=ICO_SIZE) {
fclose(f); fclose(f);
printf("ERROR: El icono no es del formato válido\n\n"); printf("ERROR: El icono no es del formato válido\n\n");
printf("Te refrescaré la memoria:\nEl icono (.ico) DEBE contener 6 imágenes en total, a saber:\n"); printf("Te refrescaré la memoria:\nEl icono (.ico) DEBE contener 6 imágenes en total, a saber:\n");
printf(" - 3 imágenes de 16x16 (a 4, 8 y 24 bits de color).\n"); printf(" - 3 imágenes de 16x16 (a 4, 8 y 24 bits de color).\n");
printf(" - 3 imágenes de 32x32 (a 4, 8 y 24 bits de color).\n"); printf(" - 3 imágenes de 32x32 (a 4, 8 y 24 bits de color).\n");
printf("No puede faltar ninguna, ya que el archivo debe ocupar EXACTAMENTE %d bytes.\n\n",ICO_SIZE); printf("No puede faltar ninguna, ya que el archivo debe ocupar EXACTAMENTE %d bytes.\n\n",ICO_SIZE);
exit(4); exit(4);
} }

View file

@ -1,7 +1,7 @@
/* /*
* Esto contiene la imagen del icono por defecto del stub en su versión * Esto contiene la imagen del icono por defecto del stub en su versión
* 16x16x16 (obtenida con Resource Hacker y gif2h), la cual se busca en el * 16x16x16 (obtenida con Resource Hacker y gif2h), la cual se busca en el
* stub para saber dónde hay que escribir el nuevo icono. * stub para saber dónde hay que escribir el nuevo icono.
*/ */
static unsigned char image[]={ static unsigned char image[]={