Conversion from ISO-8859-15 to UTF-8 for *.c and *.h files
This commit is contained in:
parent
3c828e13cf
commit
b77270c2a4
|
@ -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
|
||||
* fp->Runtime_Error
|
||||
*/
|
||||
|
|
|
@ -20,8 +20,8 @@
|
|||
|
||||
/*
|
||||
*EDIVSTD.DLL
|
||||
* 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.
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifdef _WIN32
|
||||
|
@ -30,7 +30,7 @@
|
|||
unsigned int tiempo;
|
||||
unsigned int ultimo_tiempo;
|
||||
#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
|
||||
#include <limits.h>
|
||||
#include <assert.h>
|
||||
|
@ -65,7 +65,7 @@ int ExportaFuncs(EXPORTAFUNCS_PARAMS)
|
|||
|
||||
/* CONSTANTES PREDEFINIDAS */
|
||||
|
||||
/* Opciones de compilación */
|
||||
/* Opciones de compilación */
|
||||
CONST("_max_process",0);
|
||||
CONST("_extended_conditions",1);
|
||||
CONST("_simple_conditions",2);
|
||||
|
@ -99,7 +99,7 @@ int ExportaFuncs(EXPORTAFUNCS_PARAMS)
|
|||
CONST("max_int",INT_MAX);
|
||||
CONST("min_int",INT_MIN);
|
||||
|
||||
/* Señales entre procesos */
|
||||
/* Señales entre procesos */
|
||||
CONST("s_kill",0);
|
||||
CONST("s_wakeup",1);
|
||||
CONST("s_sleep",2);
|
||||
|
@ -115,18 +115,18 @@ int ExportaFuncs(EXPORTAFUNCS_PARAMS)
|
|||
/* Contadores de tiempo */
|
||||
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);
|
||||
|
||||
/* Argumentos de línea de comando */
|
||||
/* Argumentos de línea de comando */
|
||||
GLOBAL("argc",0);
|
||||
GLOBAL_ARRAY("argv",9);
|
||||
|
||||
|
||||
/* DATOS LOCALES PREDEFINIDOS */
|
||||
|
||||
/* 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,
|
||||
/* 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,
|
||||
* respectivamente)? ya nos toparemos con ellas cuando hagamos el modo7.
|
||||
*/
|
||||
|
||||
|
@ -153,7 +153,7 @@ int ExportaFuncs(EXPORTAFUNCS_PARAMS)
|
|||
_INT("caller_id",0);
|
||||
END_STRUCT;
|
||||
|
||||
/* Jerarquía de procesos */
|
||||
/* Jerarquía de procesos */
|
||||
LOCAL("father",0);
|
||||
LOCAL("son",0);
|
||||
LOCAL("smallbro",0);
|
||||
|
@ -190,7 +190,7 @@ int eDIV_Exit(FUNCTION_PARAMS)
|
|||
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) {
|
||||
#ifdef _WIN32
|
||||
|
@ -200,7 +200,7 @@ int eDIV_Exit(FUNCTION_PARAMS)
|
|||
#endif
|
||||
}
|
||||
#ifdef _DEBUG
|
||||
printf("dbg:\texit(): código de retorno: %d\n",codigo);
|
||||
printf("dbg:\texit(): código de retorno: %d\n",codigo);
|
||||
#endif
|
||||
fp->Stub_Quit(codigo);
|
||||
|
||||
|
|
|
@ -50,7 +50,7 @@ int eDiv_Fopen(FUNCTION_PARAMS)
|
|||
for (i=0;i<strlen(modo);i++)
|
||||
if (modo[i]!='r' && modo[i]!='w' && modo[i]!='a' && modo[i]!='+') break;
|
||||
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;
|
||||
}
|
||||
strcat(modo,"b");
|
||||
|
@ -83,7 +83,7 @@ int eDiv_Fwrite(FUNCTION_PARAMS)
|
|||
offset = getparm() ;
|
||||
|
||||
if ( !existe[handle] ) {
|
||||
fp->Runtime_Error(170); /* handle no válido */
|
||||
fp->Runtime_Error(170); /* handle no válido */
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -119,7 +119,7 @@ int eDiv_Ftell(FUNCTION_PARAMS)
|
|||
int handle=getparm();
|
||||
|
||||
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... */
|
||||
}
|
||||
|
||||
|
@ -134,7 +134,7 @@ int eDiv_Fseek(FUNCTION_PARAMS)
|
|||
handle = getparm() ;
|
||||
|
||||
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... */
|
||||
}
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
#include "export.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
|
||||
* @return 1
|
||||
* @see eDIV_XADVANCE()
|
||||
|
@ -28,8 +28,8 @@ int eDIV_ADVANCE(FUNCTION_PARAMS)
|
|||
return 1 ;
|
||||
}
|
||||
|
||||
/*! \brief Avanza 'b' unidades según el ángulo 'a'
|
||||
* @param a Ángulo
|
||||
/*! \brief Avanza 'b' unidades según el ángulo 'a'
|
||||
* @param a Ángulo
|
||||
* @param b Distancia que se quiere avanzar
|
||||
* @return 1
|
||||
* @see eDIV_ADVANCE()
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
** 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...)
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
** 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>
|
||||
|
@ -10,11 +10,11 @@
|
|||
|
||||
/*
|
||||
** 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:
|
||||
** 0 - No hay colisión
|
||||
** 1 - Hay colisión
|
||||
** 0 - No 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)
|
||||
{
|
||||
|
@ -30,14 +30,14 @@ int IntersectionRR(int rc1left,int rc1top,int rc1right,int rc1bottom,int rc2left
|
|||
/*
|
||||
** eDIV_COLLISION (id)
|
||||
**
|
||||
** 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
|
||||
** 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
|
||||
**
|
||||
** 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
|
||||
** ese type, en sucesivas llamadas se irán devolviendo sus respec-
|
||||
** 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.
|
||||
** 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
|
||||
** ese type, en sucesivas llamadas se irán devolviendo sus respec-
|
||||
** 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.
|
||||
*/
|
||||
int eDIV_COLLISION(FUNCTION_PARAMS)
|
||||
{
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
/*! \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
|
||||
* de bytes que contienen la información RGBA de los colores de la paleta que
|
||||
* 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
|
||||
* se inicializa por defecto (ya que el modo por defecto es de 8 bits).
|
||||
*/
|
||||
|
||||
|
|
|
@ -8,11 +8,11 @@
|
|||
#include "graphics.h"
|
||||
|
||||
/*! \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
|
||||
* @param t Tipo de figura (1=línea, 2=rectángulo, 3=rectángulo relleno, 4=elipse, 5=elipse rellena)
|
||||
* \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 c Color
|
||||
* @param o Opacidad (0..15)
|
||||
* @param r Región
|
||||
* @param r Región
|
||||
* @param x0 Coordenada X inicial
|
||||
* @param y0 Coordenada Y inicial
|
||||
* @param x1 Coordenada X final
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
/*! \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
|
||||
* 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.
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
|
@ -25,12 +25,12 @@
|
|||
#include "SDL_rotozoom.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
|
||||
*/
|
||||
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("m320x240",320240);
|
||||
CONST("m320x400",320400);
|
||||
|
@ -88,7 +88,7 @@ int ExportaFuncs(EXPORTAFUNCS_PARAMS)
|
|||
GLOBAL("num_video_modes",0);
|
||||
GLOBAL("vsync",0);
|
||||
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 */
|
||||
LOCAL("x",0);
|
||||
|
@ -170,9 +170,9 @@ FILE * memo ;
|
|||
|
||||
/*! \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
|
||||
* fichero válido del tipo nombre_programa####.bmp, donde #### es el primer
|
||||
* número que haya disponible, para ir numerando las capturas automáticamente.
|
||||
* 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
|
||||
* número que haya disponible, para ir numerando las capturas automáticamente.
|
||||
* Luego simplemente usa SDL_SaveBMP() para guardar el backbuffer con ese
|
||||
* nombre.
|
||||
* @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);
|
||||
}
|
||||
|
||||
/*! \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)
|
||||
* ordene los blits (del tipo struct _blits) según su Z, para que se dibujen
|
||||
* 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
|
||||
* en el backbuffer en el orden correcto.
|
||||
* @param a Primer 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
|
||||
*/
|
||||
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
|
||||
*
|
||||
* 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
|
||||
* 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
|
||||
* en pantalla (fondo, draws, procesos y los creados por otras DLL's mediante
|
||||
* fp->Dibuja()), blitearlos en el backbuffer y actualizar la pantalla.
|
||||
* @see Dibuja(), draw.c
|
||||
|
@ -245,7 +245,7 @@ void frame(FUNCTION_PARAMS)
|
|||
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)) {
|
||||
fp->Critical_Error(7); /* No se pudo inicializar SDL */
|
||||
|
@ -478,9 +478,9 @@ void frame(FUNCTION_PARAMS)
|
|||
|
||||
/*! \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
|
||||
* realizar alguna operación inicial si es preciso.
|
||||
* realizar alguna operación inicial si es preciso.
|
||||
*/
|
||||
void first_load(FUNCTION_PARAMS)
|
||||
{
|
||||
|
@ -566,28 +566,28 @@ void first_load(FUNCTION_PARAMS)
|
|||
* 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
|
||||
* 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.
|
||||
* 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.
|
||||
* \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
|
||||
* 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
|
||||
* 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.
|
||||
* @param src Superficie donde se encuentra el gráfico a dibujar
|
||||
* @param x Coordenada X destino
|
||||
* @param y Coordenada Y destino
|
||||
* @param cx Y del centro del gráfico (relativo al mismo)
|
||||
* @param cy X del centro del gráfico
|
||||
* @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 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 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 cx Y del centro del gráfico (relativo al mismo)
|
||||
* @param cy X del centro del gráfico
|
||||
* @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 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 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)
|
||||
* @return 1
|
||||
* @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;
|
||||
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
|
||||
* 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)
|
||||
*/
|
||||
|
||||
|
@ -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);
|
||||
|
||||
if(flags&3) {
|
||||
/* el volteado vertical es más rápido */
|
||||
/* el volteado vertical es más rápido */
|
||||
if((flags&3)==2) {
|
||||
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);
|
||||
|
@ -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);
|
||||
|
||||
/*!
|
||||
* Pequeño hack para arreglar transparency
|
||||
* \todo Debería limpiarse y revisarse un poco :P
|
||||
* Pequeño hack para arreglar transparency
|
||||
* \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 ;
|
||||
}
|
||||
|
||||
/*! \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,
|
||||
* y devuelve una nueva superficie que contiene el gráfico transformado.
|
||||
* @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 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
|
||||
* 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.
|
||||
* @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 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
|
||||
* @see Dibuja(), SDL_rotozoom.c
|
||||
*/
|
||||
SDL_Surface *xput(SDL_Surface *src,double size,double angle)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*! \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
|
||||
* (excepto de SDL_rotozoom.c).
|
||||
|
@ -20,12 +20,12 @@
|
|||
#define ERR_INVALIDFPGHEADER 106
|
||||
#define ERR_INVALIDMAPCODE 110
|
||||
|
||||
#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_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) */
|
||||
|
||||
/* 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)))
|
||||
|
||||
/*! Asigna a una superficie la paleta de otra superficie */
|
||||
|
@ -116,7 +116,7 @@ int last_blit ;
|
|||
|
||||
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 */
|
||||
|
||||
|
|
|
@ -2,9 +2,9 @@
|
|||
* \brief Funciones de 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>
|
||||
|
@ -14,13 +14,13 @@
|
|||
|
||||
/*! \brief Copia un trozo de mapa y lo pega en otro mapa
|
||||
*
|
||||
* Esta función sólo permite operaciones en el mismo FPG.
|
||||
* \todo ¿sobrecargar para permitir operaciones entre FPG's?
|
||||
* Esta función sólo permite operaciones en el mismo FPG.
|
||||
* \todo ¿sobrecargar para permitir operaciones entre FPG's?
|
||||
* @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 y2 Coordenada Y destino
|
||||
* @param g1 Gráfico de origen
|
||||
* @param g1 Gráfico de origen
|
||||
* @param x1 Coordenada X origen
|
||||
* @param y1 Coordenada Y origen
|
||||
* @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.
|
||||
* @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 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()
|
||||
*/
|
||||
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
|
||||
*
|
||||
* Esta función sólo permite operaciones en el mismo FPG.
|
||||
* \todo ¿sobrecargar para permitir operaciones entre FPG's?
|
||||
* Esta función sólo permite operaciones en el mismo FPG.
|
||||
* \todo ¿sobrecargar para permitir operaciones entre FPG's?
|
||||
* @param f Fichero (FPG) donde se encuentran los dos mapas.
|
||||
* @param g2 Gráfico de destino
|
||||
* @param g1 Gráfico de origen
|
||||
* @param g2 Gráfico de destino
|
||||
* @param g1 Gráfico de origen
|
||||
* @param x Coordenada X
|
||||
* @param y Coordenada Y
|
||||
* @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 grafico Código del mapa dentro del FPG
|
||||
* @param x Coordenada X del píxel
|
||||
* @param y Coordenada y del píxel
|
||||
* @param grafico Código del mapa dentro del FPG
|
||||
* @param x Coordenada X del píxel
|
||||
* @param y Coordenada y del píxel
|
||||
* @param color Color
|
||||
* @return 1
|
||||
* @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
|
||||
* @param fichero Fichero (FPG) donde se encuentra el gráfico
|
||||
* @param grafico Código del mapa dentro del FPG
|
||||
* @param fichero Fichero (FPG) donde se encuentra el gráfico
|
||||
* @param grafico Código del mapa dentro del FPG
|
||||
* @param x Coordenada X destino
|
||||
* @param y Coordenada Y destino
|
||||
* @return 1
|
||||
|
@ -250,14 +250,14 @@ int eDIV_PUT(FUNCTION_PARAMS)
|
|||
}
|
||||
|
||||
|
||||
/*! \brief Como eDIV_PUT() pero permitiendo indicar ángulo, tamaño y flags.
|
||||
* \todo Falta soporte para flags. Revisar y añadir fp->Runtime_Error()
|
||||
* @param fichero Fichero (FPG) donde se encuentra el gráfico
|
||||
* @param grafico Código del mapa dentro del FPG
|
||||
/*! \brief Como eDIV_PUT() pero permitiendo indicar ángulo, tamaño y flags.
|
||||
* \todo Falta soporte para flags. Revisar y añadir fp->Runtime_Error()
|
||||
* @param fichero Fichero (FPG) donde se encuentra el gráfico
|
||||
* @param grafico Código del mapa dentro del FPG
|
||||
* @param x Coordenada X destino
|
||||
* @param y Coordenada Y destino
|
||||
* @param angle Ángulo (en milésimas de grado)
|
||||
* @param zoom Tamaño (en porcentaje)
|
||||
* @param angle Ángulo (en milésimas de grado)
|
||||
* @param zoom Tamaño (en porcentaje)
|
||||
* @return 1 si se ha colocado correctamente, -1 si el mapa no existe.
|
||||
* @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
|
||||
* @param fichero Fichero (FPG) donde se encuentra el gráfico
|
||||
* @param grafico Código del mapa dentro del FPG
|
||||
* @param fichero Fichero (FPG) donde se encuentra el gráfico
|
||||
* @param grafico Código del mapa dentro del FPG
|
||||
* @return 1
|
||||
* @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.
|
||||
* @param x Coordenada X 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()
|
||||
*/
|
||||
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.
|
||||
* @param w Anchura del mapa
|
||||
* @param h Altura del mapa
|
||||
* @param cx Coordenada X del centro del mapa
|
||||
* @param cy Coordenada Y del centro del 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
|
||||
* @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
|
||||
* @see eDIV_LOAD_MAP(), eDIV_UNLOAD_MAP()
|
||||
*/
|
||||
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
|
||||
* \todo La región copiada debe ESTIRARSE para adaptarse a la región destino
|
||||
* @param r Región de la pantalla
|
||||
/*! \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
|
||||
* @param r Región de la pantalla
|
||||
* @param f Fichero del mapa destino
|
||||
* @param g Gráfico destino
|
||||
* @param g Gráfico destino
|
||||
* @param x Coordenada X destino
|
||||
* @param y Coordenada Y destino
|
||||
* @param w Ancho de la región destino dentro del mapa
|
||||
* @param h Alto 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
|
||||
* @return 1
|
||||
* @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
|
||||
* @param f Fichero en el que se encuentra el mapa
|
||||
* @param g Código del mapa dentro del FPG
|
||||
* @param n Número del punto de control
|
||||
* @param g Código del mapa dentro del FPG
|
||||
* @param n Número del punto de control
|
||||
* @param offset_x Offset de la variable donde guardar la coordenada X
|
||||
* @param offset_y Offset de la variable donde guardar la coordenada Y
|
||||
* @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
|
||||
* \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_y Offset de la variable donde guardar la coordenada Y
|
||||
* @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 ;
|
||||
}
|
||||
|
||||
/*! \brief Obtiene información sobre un mapa
|
||||
/*! \brief Obtiene información sobre un mapa
|
||||
* @param f Fichero donde se encuentra el mapa
|
||||
* @param g Código del gráfico dentro del FPG
|
||||
* @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).
|
||||
* @return La información solicitada, o -1 si hubo un error.
|
||||
* @param g Código del gráfico dentro del FPG
|
||||
* @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).
|
||||
* @return La información solicitada, o -1 si hubo un error.
|
||||
* @see eDIV_GET_POINT()
|
||||
*/
|
||||
int eDIV_GRAPHIC_INFO(FUNCTION_PARAMS)
|
||||
|
|
|
@ -8,18 +8,18 @@
|
|||
#include "graphics.h"
|
||||
|
||||
/*! \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:
|
||||
* @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:
|
||||
* @param anchura Ancho 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 [flags] Flags de la ventana del juego, puede ser una combinación de:
|
||||
* _fullscreen (1), ... ya veremos si añadimos más xD
|
||||
* @param anchura Ancho 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 [flags] Flags de la ventana del juego, puede ser una combinación de:
|
||||
* _fullscreen (1), ... ya veremos si añadimos más xD
|
||||
* .
|
||||
*
|
||||
* @return 0
|
||||
|
|
|
@ -37,11 +37,11 @@ int eDIV_GET_TRANSPARENT_COLOR(FUNCTION_PARAMS)
|
|||
|
||||
/*! \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
|
||||
* 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
|
||||
* que recibe los parámetros en un rango de 0..255 en vez de 0..63.
|
||||
* 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.
|
||||
* @param r Componente roja (red)
|
||||
* @param g Componente verde (green)
|
||||
* @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.
|
||||
*
|
||||
* 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
|
||||
* 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
|
||||
* parámetros en un rango de 0..63 en vez de 0..255. Se ha incluido para
|
||||
* 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
|
||||
* mantener la compatibilidad con DIV2.
|
||||
* @param r Componente roja (red)
|
||||
* @param g Componente verde (green)
|
||||
|
@ -84,10 +84,10 @@ int eDIV_FIND_COLOR(FUNCTION_PARAMS)
|
|||
|
||||
/*! \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
|
||||
* se recibe un 0, se ignorará esa componente.
|
||||
* @param color Color del que se quiere obtener la información
|
||||
* se recibe un 0, se ignorará esa componente.
|
||||
* @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_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)
|
||||
|
@ -111,7 +111,7 @@ int eDIV_GET_RGB(FUNCTION_PARAMS)
|
|||
|
||||
/*! \brief Hace un fundido de pantalla
|
||||
*
|
||||
* \todo ¡¡función sin acabar!!
|
||||
* \todo ¡¡función sin acabar!!
|
||||
*/
|
||||
int eDIV_FADE(FUNCTION_PARAMS)
|
||||
{
|
||||
|
|
|
@ -8,13 +8,13 @@
|
|||
#include "graphics.h"
|
||||
|
||||
|
||||
/*! \brief Define una región de pantalla
|
||||
* \todo Añadir un poco de comprobación de errores
|
||||
* @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 y Coordenada Y de la esquina superior izquierda de la región
|
||||
* @param w Anchura de la región
|
||||
* @param h Altura de la región
|
||||
/*! \brief Define una región de pantalla
|
||||
* \todo Añadir un poco de comprobación de errores
|
||||
* @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 y Coordenada Y de la esquina superior izquierda de la región
|
||||
* @param w Anchura de la región
|
||||
* @param h Altura de la región
|
||||
* @return 1 si todo fue bien o 0 si hubo un error
|
||||
* @see eDIV_OUT_REGION(), eDIV_SCREEN_COPY()
|
||||
*/
|
||||
|
@ -28,7 +28,7 @@ int eDIV_DEFINE_REGION(FUNCTION_PARAMS)
|
|||
n = getparm() ;
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -41,10 +41,10 @@ int eDIV_DEFINE_REGION(FUNCTION_PARAMS)
|
|||
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 r Región
|
||||
* @return 1 si el proceso está fuera de la región o 0 en caso contrario
|
||||
* @param r Región
|
||||
* @return 1 si el proceso está fuera de la región o 0 en caso contrario
|
||||
* @see eDIV_DEFINE_REGION()
|
||||
*/
|
||||
int eDIV_OUT_REGION(FUNCTION_PARAMS)
|
||||
|
|
|
@ -19,12 +19,12 @@
|
|||
*/
|
||||
|
||||
/* 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
|
||||
* 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
|
||||
* 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
|
||||
* DESARROLLADORES DE eDIV. EN CASO DE SER MODIFICADO, SE PERDERÁ LA
|
||||
* COMPATIBILIDAD CON eDIV Y EL RESTO DE DLLs.
|
||||
* En caso de encontrar cualquier bug o anomalía en este archivo, por favor
|
||||
* notifíquelo a Sion Entertainment en bugs@edivcentral.com
|
||||
* En caso de encontrar cualquier bug o anomalía en este archivo, por favor
|
||||
* notifíquelo a Sion Entertainment en bugs@edivcentral.com
|
||||
*/
|
||||
|
||||
/*! \file export.h
|
||||
|
@ -65,7 +65,7 @@ typedef enum { v_global, v_reserved, v_local } tipo_t;
|
|||
|
||||
/*! Estructura de variables indexadas */
|
||||
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) */
|
||||
char* nombre; /*!< Nombre de la variable */
|
||||
int offset; /*!< offset en mem[] (relativo al proceso si es local o reservada) */
|
||||
|
@ -84,7 +84,7 @@ typedef struct {
|
|||
|
||||
#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_Const)(byte* 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() */
|
||||
typedef enum {
|
||||
_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;
|
||||
|
||||
typedef void (TYPEOF_Runtime_Error)(int, ...);
|
||||
typedef void (TYPEOF_Critical_Error)(int, ...);
|
||||
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);
|
||||
|
||||
/*! Finaliza el stub (exit) */
|
||||
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 \
|
||||
TYPEOF_EDIV_Export *EDIV_Export ,\
|
||||
TYPEOF_EDIV_Export_Const *EDIV_Export_Const ,\
|
||||
|
@ -146,7 +146,7 @@ TYPEOF_EDIV_Export_Priority *EDIV_Export_Priority
|
|||
* ENTRY-POINTS
|
||||
*
|
||||
* 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)
|
||||
*/
|
||||
|
||||
|
@ -154,7 +154,7 @@ TYPEOF_EDIV_Export_Priority *EDIV_Export_Priority
|
|||
|
||||
/*! \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_active_palette 3 /* Al modificar la paleta activa (usada en los fades) */
|
||||
#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_end 18 /* Fin de salvapantallas */
|
||||
#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_first_load 22 /* Se ejecuta al cargar la DLL en ejecucion */
|
||||
#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
|
||||
# undef CONST
|
||||
#endif
|
||||
|
@ -200,7 +200,7 @@ TYPEOF_EDIV_Export_Priority *EDIV_Export_Priority
|
|||
|
||||
/*!
|
||||
* 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
|
||||
|
||||
|
@ -216,12 +216,12 @@ struct _procs_s{
|
|||
int graph ;
|
||||
};
|
||||
|
||||
/*! Estructura de una región de pantalla */
|
||||
/*! Estructura de una región de pantalla */
|
||||
struct _regions {
|
||||
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 {
|
||||
int regions ;
|
||||
int dibuja ;
|
||||
|
@ -267,7 +267,7 @@ struct _graphics {
|
|||
struct _palette* activepal;
|
||||
};
|
||||
|
||||
/*! Parámetros para las funciones exportadas */
|
||||
/*! Parámetros para las funciones exportadas */
|
||||
struct _fun_params{
|
||||
int *pila ;
|
||||
int *sp ;
|
||||
|
|
|
@ -43,7 +43,7 @@
|
|||
#define _prn_scr 55 /* Impr Pant */
|
||||
#define _scroll_lock 70 /* Bloq Despl */
|
||||
|
||||
#define _wave 41 /* "º" */
|
||||
#define _wave 41 /* "º" */
|
||||
#define _1 2
|
||||
#define _2 3
|
||||
#define _3 4
|
||||
|
@ -55,7 +55,7 @@
|
|||
#define _9 10
|
||||
#define _0 11
|
||||
#define _minus 12 /* ? */
|
||||
#define _plus 13 /* ¿ */
|
||||
#define _plus 13 /* ¿ */
|
||||
|
||||
#define _backspace 14
|
||||
#define _tab 15
|
||||
|
@ -83,7 +83,7 @@
|
|||
#define _j 36
|
||||
#define _k 37
|
||||
#define _l 38
|
||||
#define _semicolon 39 /* Ñ */
|
||||
#define _semicolon 39 /* Ñ */
|
||||
#define _apostrophe 40 /* { */
|
||||
#define _backslash 43 /* } */
|
||||
|
||||
|
@ -248,20 +248,20 @@ int ExportaFuncs(EXPORTAFUNCS_PARAMS)
|
|||
GLOBAL_STRUCT("mouse",0);
|
||||
_INT("x",0); /* Coordenada x */
|
||||
_INT("y",0); /* Coordenada y */
|
||||
_INT("graph",0); /* Gráfico */
|
||||
_INT("graph",0); /* Gráfico */
|
||||
_INT("file",0); /* FPG */
|
||||
_INT("z",-512); /* Profundidad (TODO) */
|
||||
_INT("angle",0); /* Ángulo (TODO) */
|
||||
_INT("size",100); /* Tamaño (TODO) */
|
||||
_INT("angle",0); /* Ángulo (TODO) */
|
||||
_INT("size",100); /* Tamaño (TODO) */
|
||||
_INT("flags",0); /* Banderas (TODO) */
|
||||
_INT("region",0); /* Región (TODO) */
|
||||
_INT("left",0); /* Botón izquierdo */
|
||||
_INT("middle",0); /* Botón central o de ruedecilla */
|
||||
_INT("right",0); /* Botón derecho */
|
||||
_INT("region",0); /* Región (TODO) */
|
||||
_INT("left",0); /* Botón izquierdo */
|
||||
_INT("middle",0); /* Botón central o de ruedecilla */
|
||||
_INT("right",0); /* Botón derecho */
|
||||
_INT("wheelup",0); /* Ruedecilla arriba (NUEVO) */
|
||||
_INT("wheeldown",0); /* Ruedecilla abajo (NUEVO) */
|
||||
_INT("cursor",0); /* Emulación con teclas de cursor (TODO) */
|
||||
_INT("speed",0); /* Velocidad del ratón (TODO) */
|
||||
_INT("cursor",0); /* Emulación con teclas de cursor (TODO) */
|
||||
_INT("speed",0); /* Velocidad del ratón (TODO) */
|
||||
_INT("transparency",0); /* Transparencia (NUEVO) (TODO) */
|
||||
END_STRUCT;
|
||||
|
||||
|
@ -430,10 +430,10 @@ void frame(FUNCTION_PARAMS)
|
|||
if(mbuttons&SDL_BUTTON(3))
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
/* si mouse.graph!=0 */
|
||||
|
@ -450,7 +450,7 @@ void frame(FUNCTION_PARAMS)
|
|||
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]);
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Este fichero contiene rutinas específicas para una plataforma.
|
||||
* En caso de hacer un port de la librería, deben implementarse las siguientes
|
||||
* Este fichero contiene rutinas específicas para una plataforma.
|
||||
* En caso de hacer un port de la librería, deben implementarse las siguientes
|
||||
* funciones:
|
||||
*
|
||||
* gr_Init
|
||||
|
|
|
@ -29,9 +29,9 @@ typedef struct
|
|||
HDC hDC; // DC global que usamos
|
||||
HWND hWnd; // HWND de la ventana principal
|
||||
|
||||
HDC hdcDIBSection; // DC compatible con sección DIB
|
||||
HBITMAP hDIBSection; // sección DIB
|
||||
unsigned char *pDIBBase; // puntero base DIB, ¡NO usado directamente para dibujar!
|
||||
HDC hdcDIBSection; // DC compatible con sección DIB
|
||||
HBITMAP hDIBSection; // sección DIB
|
||||
unsigned char *pDIBBase; // puntero base DIB, ¡NO usado directamente para dibujar!
|
||||
|
||||
HPALETTE hPal; // paleta actual
|
||||
HPALETTE hpalOld; // paleta original del sistema
|
||||
|
@ -40,7 +40,7 @@ typedef struct
|
|||
HINSTANCE hinstDDRAW; // instancia de DDRAW.DLL
|
||||
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 lpddsOffScreenBuffer; // backbuffer en memoria del sistema
|
||||
LPDIRECTDRAWPALETTE lpddpPalette; // paleta DirectDraw
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
#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;
|
||||
|
||||
|
@ -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
|
||||
};
|
||||
|
||||
/* 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] =
|
||||
{
|
||||
|
@ -78,9 +78,9 @@ void inicializa_lower()
|
|||
|
||||
set_c_lower ("ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz");
|
||||
set_c_lower ("abcdefghijklmnopqrstuvwxyz","abcdefghijklmnopqrstuvwxyz");
|
||||
set_c_lower ("ÁÉÍÓÚÑÇÀÈÌÒÙÄËÏÖÜÝÂÊÎÔÛÆÃÅÕ","áéíóúñçàèìòùäëïöüýâêîôûæãåõ");
|
||||
set_c_lower("áéíóúñçàèìòùäëïöüýâêîôûæãåõ","áéíóúñçàèìòùäëïöüýâêîôûæãåõ");
|
||||
set_c_lower("1234567890#$_ºª","1234567890#$_ºª");
|
||||
set_c_lower ("ÁÉÍÓÚÑÇÀÈÌÒÙÄËÏÖÜÝÂÊÎÔÛÆÃÅÕ","áéíóúñçàèìòùäëïöüýâêîôûæãåõ");
|
||||
set_c_lower("áéíóúñçàèìòùäëïöüýâêîôûæãåõ","áéíóúñçàèìòùäëïöüýâêîôûæãåõ");
|
||||
set_c_lower("1234567890#$_ºª","1234567890#$_ºª");
|
||||
}
|
||||
|
||||
void inicializa_upper()
|
||||
|
@ -89,7 +89,7 @@ void inicializa_upper()
|
|||
|
||||
set_c_upper ("abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ");
|
||||
set_c_upper ("ABCDEFGHIJKLMNOPQRSTUVWXYZ","ABCDEFGHIJKLMNOPQRSTUVWXYZ");
|
||||
set_c_upper ("áéíóúñçàèìòùäëïöüýâêîôûæãåõ","ÁÉÍÓÚÑÇÀÈÌÒÙÄËÏÖÜÝÂÊÎÔÛÆÃÅÕ");
|
||||
set_c_upper("ÁÉÍÓÚÑÇÀÈÌÒÙÄËÏÖÜÝÂÊÎÔÛÆÃÅÕ","ÁÉÍÓÚÑÇÀÈÌÒÙÄËÏÖÜÝÂÊÎÔÛÆÃÅÕ");
|
||||
set_c_upper("1234567890#$_ºª","1234567890#$_ºª");
|
||||
set_c_upper ("áéíóúñçàèìòùäëïöüýâêîôûæãåõ","ÁÉÍÓÚÑÇÀÈÌÒÙÄËÏÖÜÝÂÊÎÔÛÆÃÅÕ");
|
||||
set_c_upper("ÁÉÍÓÚÑÇÀÈÌÒÙÄËÏÖÜÝÂÊÎÔÛÆÃÅÕ","ÁÉÍÓÚÑÇÀÈÌÒÙÄËÏÖÜÝÂÊÎÔÛÆÃÅÕ");
|
||||
set_c_upper("1234567890#$_ºª","1234567890#$_ºª");
|
||||
}
|
|
@ -82,7 +82,7 @@ int DIV_strcpy(FUNCTION_PARAMS)
|
|||
int dest=getparm();
|
||||
|
||||
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;
|
||||
}
|
||||
if ((unsigned)src>255) {
|
||||
|
@ -115,7 +115,7 @@ int DIV_strset(FUNCTION_PARAMS)
|
|||
int n;
|
||||
|
||||
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;
|
||||
}
|
||||
n=(fp->mem[cadena-1]&0xFFFFF)+1;
|
||||
|
@ -174,7 +174,7 @@ int DIV_strcat(FUNCTION_PARAMS)
|
|||
int n;
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -318,7 +318,7 @@ int DIV_strdel(FUNCTION_PARAMS)
|
|||
int str=getparm();
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
|
||||
/*
|
||||
-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
|
||||
-Mapa de caracteres
|
||||
es la imagen del mapa de caracteres, se copia directamente.
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/**
|
||||
* @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__
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/**
|
||||
* @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__
|
||||
|
|
|
@ -116,7 +116,7 @@ int eDiv_Write(FUNCTION_PARAMS)
|
|||
fuente = getparm() ;
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -196,7 +196,7 @@ int eDiv_WriteInt(FUNCTION_PARAMS)
|
|||
fuente = getparm() ;
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -297,7 +297,7 @@ int eDiv_DeleteText(FUNCTION_PARAMS)
|
|||
return 1;
|
||||
}
|
||||
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 ;
|
||||
}
|
||||
|
||||
|
|
|
@ -64,13 +64,13 @@ void prepara_compilacion()
|
|||
iobj=obj;
|
||||
num_obj=0;
|
||||
|
||||
/* Inicializamos la tabla de símbolos */
|
||||
/* Inicializamos la tabla de símbolos */
|
||||
memset(lex_simb,0,sizeof(lex_simb));
|
||||
ilex_simb=lex_simb;
|
||||
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++)
|
||||
if (lower[n]) {
|
||||
if (n>='0' && n<='9')
|
||||
|
@ -87,7 +87,7 @@ void prepara_compilacion()
|
|||
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();
|
||||
|
||||
|
||||
|
@ -108,7 +108,7 @@ void prepara_compilacion()
|
|||
loc=(int*)e_malloc(iloc_max*sizeof(int));
|
||||
memset(loc,0,iloc_max*sizeof(int));
|
||||
|
||||
/* ¿Que es esto? */
|
||||
/* ¿Que es esto? */
|
||||
ifrm_max=default_buffer/2;
|
||||
frm=(int*)e_malloc(ifrm_max*sizeof(int));
|
||||
memset(frm,0,ifrm_max*sizeof(int));
|
||||
|
@ -139,7 +139,7 @@ void compila()
|
|||
|
||||
printf(translate(27));
|
||||
|
||||
/* inicio_textos debe ser como mínimo 256 */
|
||||
/* inicio_textos debe ser como mínimo 256 */
|
||||
if(imem<256) imem=256;
|
||||
itxt=inicio_textos=imem;
|
||||
psintactico(); /* Para obtener "longitud_textos" */
|
||||
|
@ -184,7 +184,7 @@ void compila()
|
|||
source=prog;
|
||||
|
||||
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((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;
|
||||
itxt=inicio_textos=imem;
|
||||
imem+=longitud_textos;
|
||||
|
@ -204,7 +204,7 @@ void compila()
|
|||
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:
|
||||
*/
|
||||
for(n=0;n<numdlls;n++)
|
||||
|
@ -216,7 +216,7 @@ void compila()
|
|||
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) {
|
||||
dlls[numdlls].mem_nombre=imem;
|
||||
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
|
||||
* que guardar la posición actual en el offset que guardamos en salto_import
|
||||
* 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
|
||||
*/
|
||||
mem[salto_import]=imem;
|
||||
|
||||
|
@ -240,7 +240,7 @@ void compila()
|
|||
|
||||
g2(ljmp,salto_import+1);
|
||||
|
||||
/* Ya está !! :) */
|
||||
/* Ya está !! :) */
|
||||
|
||||
/* Preparamos la cabecera del bytecode */
|
||||
mem[2]=imem;
|
||||
|
@ -249,26 +249,26 @@ void compila()
|
|||
mem[5]=iloc_len-iloc;
|
||||
mem[6]=iloc;
|
||||
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,
|
||||
* éstas eran:
|
||||
* éstas eran:
|
||||
* +1 = El programa es un setup de sonido (setup_program)
|
||||
* +128 = El programa invoca al trazador nada más ejecutarse (compilado con F12)
|
||||
* +512 = Se ignoran los errores de ejecución (ignore_errors)
|
||||
* +128 = El programa invoca al trazador nada más ejecutarse (compilado con F12)
|
||||
* +512 = Se ignoran los errores de ejecución (ignore_errors)
|
||||
* +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:
|
||||
* +16 = El exe lleva incluidas las DLL's
|
||||
* 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
|
||||
* +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)
|
||||
* +512 = ignore_errors, igual que en DIV2
|
||||
*/
|
||||
|
@ -355,7 +355,7 @@ void compila()
|
|||
free(q); free(p);
|
||||
m=l*2;
|
||||
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(&l,1,4,f);
|
||||
fwrite(&m,1,sizeof(unsigned long),f);
|
||||
|
@ -371,7 +371,7 @@ void compila()
|
|||
fwrite(&start_lin,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);
|
||||
} else {
|
||||
free(q);
|
||||
|
@ -409,7 +409,7 @@ void compila()
|
|||
|
||||
/*
|
||||
* 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)
|
||||
{
|
||||
|
@ -566,17 +566,17 @@ void sentencia(void) {
|
|||
if (pieza==p_step) {
|
||||
lexico();
|
||||
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);
|
||||
} else {
|
||||
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);
|
||||
|
||||
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);
|
||||
} else {
|
||||
g2(lcar,-dir); g1(laid);
|
||||
|
@ -593,7 +593,7 @@ void sentencia(void) {
|
|||
if (pieza!=p_end) error(0,57); inicio_sentencia(); /* esperando END */
|
||||
lexico();
|
||||
|
||||
im3=imem; /* Posición del continue */
|
||||
im3=imem; /* Posición del continue */
|
||||
|
||||
if (dir>=0) { /* Incremento y vuelta al inicio del bucle */
|
||||
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) {
|
||||
|
@ -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)
|
||||
|
@ -958,7 +958,7 @@ void gen(int param, int op, int pa)
|
|||
} else if (code[15].op==lcar){
|
||||
if (mem[imem-1]==1) remove_code(1);
|
||||
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;
|
||||
}
|
||||
} 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)
|
||||
|
@ -1077,15 +1077,15 @@ void escribe_lin(FILE* f)
|
|||
fclose(f);
|
||||
errormem();
|
||||
}
|
||||
/* escribe el tamaño del codigo descomprimido */
|
||||
/* escribe el tamaño del codigo descomprimido */
|
||||
fwrite(&b,1,4,f);
|
||||
/* escribe el tamaño del codigo comprimido */
|
||||
/* escribe el tamaño del codigo comprimido */
|
||||
fwrite(&l,1,4,f);
|
||||
/* escribe el codigo comprimido */
|
||||
fwrite(progcomp,1,l,f);
|
||||
free(progcomp);
|
||||
|
||||
/* Escribe el tamaño del LIN */
|
||||
/* Escribe el tamaño del LIN */
|
||||
#ifdef _DEBUG
|
||||
printf("dbg: linsize: %d\n",linsize);
|
||||
#endif
|
||||
|
@ -1094,7 +1094,7 @@ void escribe_lin(FILE* f)
|
|||
ediv_lin=fopen("ediv.lin","w");
|
||||
fprintf(ediv_lin,"linsize: %d\n",linsize);
|
||||
#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);
|
||||
while((b=fgetc(linf))!=EOF) {
|
||||
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)
|
||||
{
|
||||
|
@ -1135,7 +1135,7 @@ void escribe_dbg(FILE* f)
|
|||
int v0,v1,v2,v3,v4,v5;
|
||||
} ob;
|
||||
|
||||
/* Cabecera de sección DBG */
|
||||
/* Cabecera de sección DBG */
|
||||
fwrite(&num_obj,4,1,f);
|
||||
fwrite(&num_obj_predefinidos,4,1,f);
|
||||
n=(int)&obj[0];
|
||||
|
@ -1157,11 +1157,11 @@ void escribe_dbg(FILE* f)
|
|||
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);
|
||||
|
||||
/* 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);
|
||||
}
|
||||
|
||||
/* Escribe el tamaño del vector de nombres */
|
||||
/* Escribe el tamaño del vector de nombres */
|
||||
n=(int)ivnom.b-(int)vnom;
|
||||
fwrite(&n,4,1,f);
|
||||
|
||||
|
|
|
@ -46,14 +46,14 @@ int iloc_len; /* final de las variables locales incluyendo las privadas */
|
|||
|
||||
/*
|
||||
* mem[] vector de memoria destino
|
||||
* imem puntero para la generación de datos y código
|
||||
* imem_max fin de la memoria destino (indice máximo de mem[])
|
||||
* imem puntero para la generación de datos y código
|
||||
* imem_max fin de la memoria destino (indice máximo de mem[])
|
||||
* iloc inicio en mem[] de las variables locales (inicializadas)
|
||||
* 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
|
||||
* 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 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 land 5 /* And lógico, operador sobre condiciones */
|
||||
#define ligu 6 /* Igual, operador logico de comparación */
|
||||
#define land 5 /* And lógico, operador sobre condiciones */
|
||||
#define ligu 6 /* Igual, operador logico de comparación */
|
||||
#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 lmei 10 /* Menor o igual */
|
||||
#define lmai 11 /* Mayor o igual */
|
||||
#define ladd 12 /* Suma dos constantes */
|
||||
#define lsub 13 /* Resta, operación binaria */
|
||||
#define lmul 14 /* Multiplicación */
|
||||
#define ldiv 15 /* División de enteros */
|
||||
#define lmod 16 /* Módulo, resto de la división */
|
||||
#define lneg 17 /* Negación, cambia de signo una constante */
|
||||
#define lsub 13 /* Resta, operación binaria */
|
||||
#define lmul 14 /* Multiplicación */
|
||||
#define ldiv 15 /* División de enteros */
|
||||
#define lmod 16 /* Módulo, resto de la división */
|
||||
#define lneg 17 /* Negación, cambia de signo una constante */
|
||||
#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 lcid 21 /* Carga id en la pila */
|
||||
#define lrng 22 /* rango Realiza una comparación de rango */
|
||||
#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 lfun 25 /* código Llamada a un proceso interno, ej. signal() (obsoleto, ver lext) */
|
||||
#define lrng 22 /* rango Realiza una comparación de rango */
|
||||
#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 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 lret 27 /* Auto-eliminación del proceso */
|
||||
#define lret 27 /* Auto-eliminación del proceso */
|
||||
#define lasp 28 /* Desecha un valor apilado */
|
||||
#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 lcpa 31 /* Saca offset, lee parámetro [offset] y bp++ */
|
||||
#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 lcpa 31 /* Saca offset, lee parámetro [offset] y bp++ */
|
||||
#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 lcse 34 /* offset Si switch <> expresión, salta al offset */
|
||||
#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 lcsr 35 /* offset Si switch no esta en el rango, salta al offset */
|
||||
#define lshr 36 /* Rotacion a la derecha (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 ldpt 40 /* Decremento y pointer */
|
||||
#define lptd 41 /* Pointer y decremento */
|
||||
#define lada 42 /* Add-asignación */
|
||||
#define lsua 43 /* Sub-asignación */
|
||||
#define lmua 44 /* Mul-asignación */
|
||||
#define ldia 45 /* Div-asignación */
|
||||
#define lmoa 46 /* Mod-asignación */
|
||||
#define lana 47 /* And-asignación */
|
||||
#define lora 48 /* Or-asignación */
|
||||
#define lxoa 49 /* Xor-asignación */
|
||||
#define lsra 50 /* Shr-asignación */
|
||||
#define lsla 51 /* Shl-asignación */
|
||||
#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 lada 42 /* Add-asignación */
|
||||
#define lsua 43 /* Sub-asignación */
|
||||
#define lmua 44 /* Mul-asignación */
|
||||
#define ldia 45 /* Div-asignación */
|
||||
#define lmoa 46 /* Mod-asignación */
|
||||
#define lana 47 /* And-asignación */
|
||||
#define lora 48 /* Or-asignación */
|
||||
#define lxoa 49 /* Xor-asignación */
|
||||
#define lsra 50 /* Shr-asignación */
|
||||
#define lsla 51 /* Shl-asignación */
|
||||
#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 lclo 54 /* offset Crea un clon del proceso actual */
|
||||
#define lfrf 55 /* Pseudo-Frame (frame a un porcentaje) */
|
||||
#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 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 lcar3 61 /* car + car + car */
|
||||
#define lcar4 62 /* car + car + car + car */
|
||||
|
@ -167,31 +167,31 @@ int case_sensitive;
|
|||
#define lcarsub 76 /* car + sub */
|
||||
#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 lasichr 79 /* Saca (valor, index, offset) y mete el valor en [offset+byte index] */
|
||||
#define liptchr 80 /* Incremento y pointer */
|
||||
#define lptichr 81 /* Pointer e incremento */
|
||||
#define ldptchr 82 /* Decremento y pointer */
|
||||
#define lptdchr 83 /* Pointer y decremento */
|
||||
#define ladachr 84 /* Add-asignación */
|
||||
#define lsuachr 85 /* Sub-asignación */
|
||||
#define lmuachr 86 /* Mul-asignación */
|
||||
#define ldiachr 87 /* Div-asignación */
|
||||
#define lmoachr 88 /* Mod-asignación */
|
||||
#define lanachr 89 /* And-asignación */
|
||||
#define lorachr 90 /* Or-asignación */
|
||||
#define lxoachr 91 /* Xor-asignación */
|
||||
#define lsrachr 92 /* Shr-asignación */
|
||||
#define lslachr 93 /* Shl-asignación */
|
||||
#define lcpachr 94 /* Saca offset, lee parámetro [offset] y bp++ */
|
||||
#define ladachr 84 /* Add-asignación */
|
||||
#define lsuachr 85 /* Sub-asignación */
|
||||
#define lmuachr 86 /* Mul-asignación */
|
||||
#define ldiachr 87 /* Div-asignación */
|
||||
#define lmoachr 88 /* Mod-asignación */
|
||||
#define lanachr 89 /* And-asignación */
|
||||
#define lorachr 90 /* Or-asignación */
|
||||
#define lxoachr 91 /* Xor-asignación */
|
||||
#define lsrachr 92 /* Shr-asignación */
|
||||
#define lslachr 93 /* Shl-asignación */
|
||||
#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 lstrfix 96 /* Amplia una cadena antes de meter un char en ella */
|
||||
#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 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 lstrlen 101 /* Sustituye una cadena por su longitud */
|
||||
#define lstrigu 102 /* Comparacion de igualdad de dos cadenas */
|
||||
|
@ -200,39 +200,39 @@ int case_sensitive;
|
|||
#define lstrmen 105 /* Cadena menor */
|
||||
#define lstrmei 106 /* Cadena mayor 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 lasiwor 110 /* Saca (valor, index, offset) y mete el valor en [offset+byte index] */
|
||||
#define liptwor 111 /* Incremento y pointer */
|
||||
#define lptiwor 112 /* Pointer e incremento */
|
||||
#define ldptwor 113 /* Decremento y pointer */
|
||||
#define lptdwor 114 /* Pointer y decremento */
|
||||
#define ladawor 115 /* Add-asignación */
|
||||
#define lsuawor 116 /* Sub-asignación */
|
||||
#define lmuawor 117 /* Mul-asignación */
|
||||
#define ldiawor 118 /* Div-asignación */
|
||||
#define lmoawor 119 /* Mod-asignación */
|
||||
#define lanawor 120 /* And-asignación */
|
||||
#define lorawor 121 /* Or-asignación */
|
||||
#define lxoawor 122 /* Xor-asignación */
|
||||
#define lsrawor 123 /* Shr-asignación */
|
||||
#define lslawor 124 /* Shl-asignación */
|
||||
#define lcpawor 125 /* Saca offset, lee parámetro [offset] y bp++ */
|
||||
#define ladawor 115 /* Add-asignación */
|
||||
#define lsuawor 116 /* Sub-asignación */
|
||||
#define lmuawor 117 /* Mul-asignación */
|
||||
#define ldiawor 118 /* Div-asignación */
|
||||
#define lmoawor 119 /* Mod-asignación */
|
||||
#define lanawor 120 /* And-asignación */
|
||||
#define lorawor 121 /* Or-asignación */
|
||||
#define lxoawor 122 /* Xor-asignación */
|
||||
#define lsrawor 123 /* Shr-asignación */
|
||||
#define lslawor 124 /* Shl-asignación */
|
||||
#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 */
|
||||
|
||||
/* Instrucciones añadidas en eDIV */
|
||||
#define lextasp 127 /* Combinación de ext y asp, sustituye a funasp */
|
||||
/* Instrucciones añadidas en eDIV */
|
||||
#define lextasp 127 /* Combinación de ext y asp, sustituye a funasp */
|
||||
|
||||
|
||||
struct { /* Peephole, "mirilla" para el optimizador */
|
||||
int dir; /* Dirección */
|
||||
int param; /* Indica si ese opcode tiene parámetro */
|
||||
int dir; /* Dirección */
|
||||
int param; /* Indica si ese opcode tiene parámetro */
|
||||
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) */
|
||||
FILE * linf; /* En este temporal guardamos la info y luego lo agregamos al exe */
|
||||
|
|
|
@ -117,9 +117,9 @@ void lee_ediv_cfg(char* ediv_cfg)
|
|||
break;
|
||||
case 3: /* _case_sensitive */
|
||||
lexico();
|
||||
memcpy(lower+129,"üéâäàåçêëèïîìäåéææôöòûùÿöü¢£¥áíóú",35);
|
||||
memcpy(lower+129,"üéâäàåçêëèïîìäåéææôöòûùÿöü¢£¥áíóú",35);
|
||||
memcpy(lower+'A',"ABCDEFGHIJKLMNOPQRSTUVWXYZ",26);
|
||||
lower['Ñ']='Ñ';
|
||||
lower['Ñ']='Ñ';
|
||||
break;
|
||||
case 4: /* _ignore_errors */
|
||||
lexico();
|
||||
|
|
|
@ -34,7 +34,7 @@ void muestra_motd();
|
|||
void conecta(char *servidor, char *archivo);
|
||||
|
||||
#else
|
||||
# include <dlfcn.h> /* ¿será igual en BeOS? */
|
||||
# include <dlfcn.h> /* ¿será igual en BeOS? */
|
||||
# include <dirent.h>
|
||||
#endif
|
||||
|
||||
|
@ -138,7 +138,7 @@ int main(int argc, char *argv[])
|
|||
}
|
||||
#endif
|
||||
else {
|
||||
printf(translate(13),argv[i]); /* parámetro erróneo */
|
||||
printf(translate(13),argv[i]); /* parámetro erróneo */
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
@ -180,7 +180,7 @@ int main(int argc, char *argv[])
|
|||
exit(0);
|
||||
#endif
|
||||
default:
|
||||
printf(translate(15),argv[i][j]); /* parámetro erróneo */
|
||||
printf(translate(15),argv[i][j]); /* parámetro erróneo */
|
||||
exit(1);
|
||||
}
|
||||
j++;
|
||||
|
@ -197,7 +197,7 @@ int main(int argc, char *argv[])
|
|||
hayprog=2;
|
||||
break;
|
||||
default:
|
||||
printf(translate(13),argv[i]); /* parámetro erróneo */
|
||||
printf(translate(13),argv[i]); /* parámetro erróneo */
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
@ -341,7 +341,7 @@ int main(int argc, char *argv[])
|
|||
|
||||
/*
|
||||
* 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:
|
||||
* 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;
|
||||
byte *_ie;
|
||||
|
@ -431,7 +431,7 @@ void error(word tipo, word num, ...)
|
|||
|
||||
#ifdef MULTI_ERROR
|
||||
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) {
|
||||
printf("edivc: Finalizado - %d advertencias, %d errores\n",n_warnings,n_errors);
|
||||
|
|
|
@ -38,11 +38,11 @@ struct objeto * ob2;
|
|||
int creaobj;
|
||||
int numparams;
|
||||
|
||||
byte decl_struct=0; /* 1 si se está declarando un struct */
|
||||
byte struct_reserved=0; /* 1 si se está declarando la estructura reserved */
|
||||
byte decl_struct=0; /* 1 si se está declarando un struct */
|
||||
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, ...)
|
||||
{
|
||||
va_list opparam;
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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) {
|
||||
|
@ -58,7 +58,7 @@ void con0() { /* Operadores con asociatividad de derecha a izquierda <- */
|
|||
|
||||
con1();
|
||||
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) {
|
||||
byte * __ierror, * _ierror;
|
||||
|
@ -120,7 +120,7 @@ void expresion(void) {
|
|||
}
|
||||
|
||||
|
||||
/* expresiones de parámetros */
|
||||
/* expresiones de parámetros */
|
||||
void expresion_cpa(void) {
|
||||
byte * __ierror, * _ierror;
|
||||
int _linea;
|
||||
|
@ -143,7 +143,7 @@ void expresion_cpa(void) {
|
|||
g1(lcpawor);
|
||||
} else if ((*(_exp-1)).tipo==eoper && (*(_exp-1)).token==p_string) {
|
||||
_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;
|
||||
}
|
||||
|
||||
|
@ -259,7 +259,7 @@ void generar_expresion(void) {
|
|||
case p_pointerbyte: g1(lptrchr); break;
|
||||
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;
|
||||
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
|
||||
*/
|
||||
int constante (void) {
|
||||
|
@ -307,7 +307,7 @@ int constante (void) {
|
|||
case p_not: pila[i]^=-1; break;
|
||||
case p_shr: 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;
|
||||
default: error(4,54);
|
||||
}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) {
|
||||
|
@ -367,8 +367,8 @@ void exp0() { /* Operadores con asociatividad de derecha a izquierda <- */
|
|||
exp00(-1);
|
||||
(*_exp).tipo=eoper; (*_exp++).token=p_strsub;
|
||||
(*_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,13); /* asignación incorrecta */
|
||||
} else error(0,12); /* asignación a cadena incorrecta */
|
||||
} else error(0,13); /* asignación incorrecta */
|
||||
} tipo_factor=0;
|
||||
}
|
||||
|
||||
|
@ -390,7 +390,7 @@ void exp2() {
|
|||
tf=tipo_factor;
|
||||
lexico(); exp3();
|
||||
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;
|
||||
(*_exp).tipo=eoper; (*_exp++).token=p;
|
||||
tipo_factor=0;
|
||||
|
@ -468,7 +468,7 @@ void unario() {
|
|||
if ((*(_exp-2)).tipo==econs && (*(_exp-2)).valor==0) _exp-=2;
|
||||
else error(4,14); /* &words[<exp>] ??? */
|
||||
} 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 if (p==p_inc || p==p_dec) {
|
||||
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 if (p==p_pointer) {
|
||||
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) {
|
||||
/* *cadena[0] ð cadena[0] */
|
||||
/* *cadena[0] ð cadena[0] */
|
||||
} 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) {
|
||||
/* *cadena == cadena */
|
||||
} 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>
|
||||
* 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 ...)
|
||||
* 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 ...)
|
||||
*/
|
||||
|
||||
if ((*e).tipo==eoper && (*e).token==p_punto)
|
||||
|
@ -601,18 +601,18 @@ void factor(void) {
|
|||
(*_exp++).valor=((*o).cglo.totalen+5)/4; break;
|
||||
case tvglo: case tvloc:
|
||||
(*_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 ')' */
|
||||
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 (error_25==25) error(1,25); else error(0,error_25);
|
||||
} else {
|
||||
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;
|
||||
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);
|
||||
lexico(); ob=o;
|
||||
analiza_pointer_struct(tpslo,iloc++,obs);
|
||||
|
@ -623,7 +623,7 @@ void factor(void) {
|
|||
(*_exp).tipo=eoper; (*_exp++).token=p_pointer;
|
||||
} 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 (error_25==25) error(1,25); else error(0,error_25);
|
||||
} else {
|
||||
|
@ -671,7 +671,7 @@ void factor(void) {
|
|||
(*_exp).tipo=eoper; (*_exp++).token=p_string;
|
||||
} 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 (error_25==25) error(1,25); else error(0,error_25);
|
||||
} else {
|
||||
|
@ -703,7 +703,7 @@ void factor(void) {
|
|||
(*_exp).tipo=eoper; (*_exp++).token=p_pointerbyte;
|
||||
} 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 (error_25==25) error(1,25); else error(0,error_25);
|
||||
} else {
|
||||
|
@ -735,14 +735,14 @@ void factor(void) {
|
|||
(*_exp).tipo=eoper; (*_exp++).token=p_pointerword;
|
||||
} 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 (error_25==25) error(1,25); else error(0,error_25);
|
||||
} else {
|
||||
lexico();
|
||||
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 (error_25==25) error(1,25); else error(0,error_25);
|
||||
} parametros++;
|
||||
|
@ -878,7 +878,7 @@ void factor(void) {
|
|||
}
|
||||
if (pieza!=p_corce) error(3,19); /* esperando ']' */
|
||||
lexico();
|
||||
} else { /* mi_byte ð mi_byte[0] */
|
||||
} else { /* mi_byte ð mi_byte[0] */
|
||||
(*_exp).tipo=econs; (*_exp++).valor=0;
|
||||
} (*_exp).tipo=eoper; (*_exp++).token=p_pointerbyte ; break;
|
||||
|
||||
|
@ -916,7 +916,7 @@ void factor(void) {
|
|||
}
|
||||
if (pieza!=p_corce) error(3,19); /* esperando ']' */
|
||||
lexico();
|
||||
} else { /* mi_byte ð mi_byte[0] */
|
||||
} else { /* mi_byte ð mi_byte[0] */
|
||||
(*_exp).tipo=econs; (*_exp++).valor=0;
|
||||
} (*_exp).tipo=eoper; (*_exp++).token=p_pointerword; break;
|
||||
|
||||
|
@ -1074,7 +1074,7 @@ void factor(void) {
|
|||
}
|
||||
if (pieza!=p_corce) error(3,19); /* esperando ']' */
|
||||
lexico();
|
||||
} else { /* mi_byte ð mi_byte[0] */
|
||||
} else { /* mi_byte ð mi_byte[0] */
|
||||
(*_exp).tipo=econs; (*_exp++).valor=0;
|
||||
} (*_exp).tipo=eoper; (*_exp++).token=p_pointerbyte ; break;
|
||||
|
||||
|
@ -1115,7 +1115,7 @@ void factor(void) {
|
|||
}
|
||||
if (pieza!=p_corce) error(3,19); /* esperando ']' */
|
||||
lexico();
|
||||
} else { /* mi_byte ð mi_byte[0] */
|
||||
} else { /* mi_byte ð mi_byte[0] */
|
||||
(*_exp).tipo=econs; (*_exp++).valor=0;
|
||||
} (*_exp).tipo=eoper; (*_exp++).token=p_pointerword; break;
|
||||
|
||||
|
@ -1197,7 +1197,7 @@ void factor(void) {
|
|||
|
||||
case tproc:
|
||||
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++;
|
||||
exp00(0);
|
||||
if (pieza!=p_cerrar) {
|
||||
|
@ -1208,12 +1208,12 @@ void factor(void) {
|
|||
if (p!=(*ob).proc.num_par) error(1,38); /* numero de parametros incorrecto */
|
||||
(*_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:
|
||||
ob=o; lexico(); if (pieza!=p_abrir) error(3,22); /* esperando '(' */
|
||||
lexico();
|
||||
p=0; while (pieza!=p_cerrar) { /* pðnum_par */
|
||||
p=0; while (pieza!=p_cerrar) { /* pðnum_par */
|
||||
p++;
|
||||
exp00(0);
|
||||
if (pieza!=p_cerrar) {
|
||||
|
@ -1357,7 +1357,7 @@ void factor_struct(void) {
|
|||
(*_exp).tipo=eoper; (*_exp++).token=p_add;
|
||||
}
|
||||
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;
|
||||
} struct_pointer=p_pointerbyte; break;
|
||||
|
||||
|
@ -1394,7 +1394,7 @@ void factor_struct(void) {
|
|||
(*_exp).tipo=eoper; (*_exp++).token=p_add;
|
||||
}
|
||||
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;
|
||||
} struct_pointer=p_pointerword; break;
|
||||
|
||||
|
@ -1540,7 +1540,7 @@ void factor_struct(void) {
|
|||
(*_exp).tipo=eoper; (*_exp++).token=p_add;
|
||||
}
|
||||
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;
|
||||
} struct_pointer=p_pointerbyte; break;
|
||||
|
||||
|
@ -1577,7 +1577,7 @@ void factor_struct(void) {
|
|||
(*_exp).tipo=eoper; (*_exp++).token=p_add;
|
||||
}
|
||||
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;
|
||||
} struct_pointer=p_pointerword; break;
|
||||
|
||||
|
|
|
@ -21,12 +21,12 @@
|
|||
#ifndef __EDIV_EXPRESION_H_
|
||||
#define __EDIV_EXPRESION_H_
|
||||
|
||||
#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 max_exp 512 /* Máximo número de elementos en una expresió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 {
|
||||
byte tipo; /* econs, eoper, erango, ewhoami, ecall */
|
||||
|
@ -39,14 +39,14 @@ struct exp_ele {
|
|||
|
||||
#define econs 0 /* Constante // Tipos de elementos en tabexp[] */
|
||||
#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 ecall 4 /* Creación de un proceso */
|
||||
/*#define efunc 5*/ /* Llamada a una función interna */
|
||||
#define efext 6 /* Llamada a una función externa */
|
||||
#define echeck 7 /* Comprobació¢n de validez de un identificador */
|
||||
#define ecall 4 /* Creación de un proceso */
|
||||
/*#define efunc 5*/ /* Llamada a una función interna */
|
||||
#define efext 6 /* Llamada a una función externa */
|
||||
#define echeck 7 /* Comprobació¢n de validez de un identificador */
|
||||
#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
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
extern struct keywords {
|
||||
char keyword[20]; /* Max. 20 caracteres por 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[];
|
||||
|
||||
extern struct prioridades {
|
||||
|
@ -38,8 +38,8 @@ extern struct prioridades {
|
|||
/* CM = TIPO DE COMANDO */
|
||||
#define CM_SEPARATE 0 /* Se pone entre linea y linea */
|
||||
#define CM_STATEMENT 1 /* Statement */
|
||||
#define CM_CALL 2 /* Llamada a una función o un proceso */
|
||||
#define CM_SIGNO 3 /* Asignación */
|
||||
#define CM_CALL 2 /* Llamada a una función o un proceso */
|
||||
#define CM_SIGNO 3 /* Asignación */
|
||||
#define CM_DATA 4 /* Cualquier dato */
|
||||
|
||||
/* ST = STATEMENTS */
|
||||
|
|
|
@ -35,11 +35,11 @@ int detecta_idioma_iso(char* lang)
|
|||
{
|
||||
int i;
|
||||
static char getid[NUM_LANGUAGES][3] = {
|
||||
"es", /* español */
|
||||
"es", /* español */
|
||||
"it", /* italiano */
|
||||
"pt", /* portugués */
|
||||
"en", /* inglés */
|
||||
"ca", /* catalán */
|
||||
"pt", /* portugués */
|
||||
"en", /* inglés */
|
||||
"ca", /* catalán */
|
||||
"eu" /* euskera */
|
||||
};
|
||||
if(lang==NULL) return DEFAULT_LANGUAGE;
|
||||
|
@ -62,11 +62,11 @@ int detecta_idioma()
|
|||
#ifdef _WIN32
|
||||
int i;
|
||||
static int getid[NUM_LANGUAGES] = {
|
||||
0x0a, /* español */
|
||||
0x0a, /* español */
|
||||
0x10, /* italiano */
|
||||
0x16, /* portugués */
|
||||
0x09, /* inglés */
|
||||
0x03, /* catalán */
|
||||
0x16, /* portugués */
|
||||
0x09, /* inglés */
|
||||
0x03, /* catalán */
|
||||
0x2d /* euskera */
|
||||
};
|
||||
LANGID lang;
|
||||
|
|
|
@ -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
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
@ -21,7 +21,7 @@
|
|||
#include "main.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;
|
||||
|
||||
|
@ -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
|
||||
};
|
||||
|
||||
/* 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] =
|
||||
{
|
||||
|
@ -91,16 +91,16 @@ void inicializa_lower()
|
|||
"abcdefghijklmnopqrstuvwxyz");
|
||||
|
||||
#ifdef RESPETAR_ACENTOS
|
||||
set_c_lower ("ÁÉÍÓÚÑÇÀÈÌÒÙÄËÏÖÜÝÂÊÎÔÛÆÃÅÕ",
|
||||
"áéíóúñçàèìòùäëïöüýâêîôûæãåõ");
|
||||
set_c_lower("áéíóúñçàèìòùäëïöüýâêîôûæãåõ",
|
||||
"áéíóúñçàèìòùäëïöüýâêîôûæãåõ");
|
||||
set_c_lower ("ÁÉÍÓÚÑÇÀÈÌÒÙÄËÏÖÜÝÂÊÎÔÛÆÃÅÕ",
|
||||
"áéíóúñçàèìòùäëïöüýâêîôûæãåõ");
|
||||
set_c_lower("áéíóúñçàèìòùäëïöüýâêîôûæãåõ",
|
||||
"áéíóúñçàèìòùäëïöüýâêîôûæãåõ");
|
||||
#else
|
||||
set_c_lower ("ÁÉÍÓÚÑÇÀÈÌÒÙÄËÏÖÜÝÂÊÎÔÛÆÃÅÕ",
|
||||
"aeiouncaeiouaeiouyaeiouæaao");
|
||||
set_c_lower ("áéíóúñÑçÇàèìòùäëïöüýâêîôûæãåõÁÉÍÓÚ",
|
||||
"aeiounnccaeiouaeiouyaeiouÆaaoaeiou");
|
||||
set_c_lower ("ÁÉÍÓÚÑÇÀÈÌÒÙÄËÏÖÜÝÂÊÎÔÛÆÃÅÕ",
|
||||
"aeiouncaeiouaeiouyaeiouæaao");
|
||||
set_c_lower ("áéíóúñÑçÇàèìòùäëïöüýâêîôûæãåõÁÉÍÓÚ",
|
||||
"aeiounnccaeiouaeiouyaeiouÆaaoaeiou");
|
||||
#endif
|
||||
|
||||
set_c_lower("1234567890#$_ºª","1234567890#$_ºª");
|
||||
set_c_lower("1234567890#$_ºª","1234567890#$_ºª");
|
||||
}
|
||||
|
|
|
@ -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>
|
||||
|
@ -43,9 +43,9 @@ void ltlex_error(int error)
|
|||
|
||||
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 */
|
||||
int len; /* Tamaño del archivo */
|
||||
int len; /* Tamaño del archivo */
|
||||
struct lex_ele * e; /* Puntero al lex_case correspondiente */
|
||||
FILE * def; /* Stream del fichero */
|
||||
|
||||
|
@ -65,7 +65,7 @@ void analiza_ltlex(void){
|
|||
fseek(def,0,SEEK_SET);
|
||||
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;
|
||||
|
||||
#ifdef _DEBUG
|
||||
|
@ -89,10 +89,10 @@ void analiza_ltlex(void){
|
|||
case lf:
|
||||
linea++;
|
||||
break;
|
||||
/* Los ; indican línea de comentario */
|
||||
/* Los ; indican línea de comentario */
|
||||
case ';':
|
||||
while (*buf!=cr && *buf!=lf) buf++; break;
|
||||
/* El símbolo & indica definición de token */
|
||||
/* El símbolo & indica definición de token */
|
||||
case '&':
|
||||
*buf=lower[*buf];
|
||||
if (*buf>='0' && *buf<='9')
|
||||
|
@ -118,7 +118,7 @@ void analiza_ltlex(void){
|
|||
buf--; ivnom.b++;
|
||||
} else if (t>=0x78 && t<=0x7b) { /* Analiza un delimitador de literal */
|
||||
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 (num_nodos++==max_nodos)
|
||||
ltlex_error(3);
|
||||
|
|
|
@ -33,11 +33,11 @@
|
|||
|
||||
#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 */
|
||||
size_t progsize; /* tamaño del PRG */
|
||||
char nombreprog[256]; /* nombre del PRG sin extensión */
|
||||
size_t progsize; /* tamaño del PRG */
|
||||
char nombreprog[256]; /* nombre del PRG sin extensión */
|
||||
char *fichero_prg; /* nombre del archivo a compilar */
|
||||
char outfilename[256]; /* archivo de salida */
|
||||
char edivrun_lib[256]; /* archivo stub (distinto para cada sistema) */
|
||||
|
@ -50,7 +50,7 @@ int n_errors;
|
|||
int n_warnings;
|
||||
int linea;
|
||||
|
||||
/* Información sobre los errores */
|
||||
/* Información sobre los errores */
|
||||
|
||||
/*
|
||||
* 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_free(void *puntero); /* un free que fija el puntero a NULL tras liberarlo */
|
||||
void errormem(); /* mensaje "memoria insuficiente" */
|
||||
void save_error(word tipo); /* guarda una posición de error */
|
||||
void error(word tipo,word num, ...); /* error de compilación */
|
||||
void save_error(word tipo); /* guarda una posición de error */
|
||||
void error(word tipo,word num, ...); /* error de compilación */
|
||||
void warning(int num, ...); /* warning en el proceso */
|
||||
|
||||
#endif
|
|
@ -203,7 +203,7 @@ void dll_func()
|
|||
if(fichero_dll->d_type==DT_REG) {
|
||||
char dllkey[256]="dll_priority:";
|
||||
#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
|
||||
carga=1;
|
||||
sprintf(fichdll,"%s/%s",dir,fichero_dll->d_name);
|
||||
|
|
|
@ -71,7 +71,7 @@ int crea_objeto(byte * nombre, int 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).name=(byte*)(ptr_o+1);
|
||||
(*o).member=member;
|
||||
|
@ -97,7 +97,7 @@ int crea_objeto(byte * nombre, int nparam)
|
|||
|
||||
|
||||
////////////////////
|
||||
// PRECOMPILACIÓN //
|
||||
// PRECOMPILACIÓN //
|
||||
////////////////////
|
||||
|
||||
void psintactico(void)
|
||||
|
@ -136,13 +136,13 @@ lex_scan:
|
|||
|
||||
case l_err:
|
||||
if (coment) { pieza=p_rem; _source++; }
|
||||
else error(0,5); // carácter no reconocido
|
||||
else error(0,5); // carácter no reconocido
|
||||
_source++;
|
||||
break;
|
||||
|
||||
case l_eof:
|
||||
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;
|
||||
|
||||
case l_cr:
|
||||
|
@ -280,8 +280,8 @@ lex_scan:
|
|||
}
|
||||
|
||||
if (pieza==p_ultima) {
|
||||
if (coment) error(0,1); // llegó el final dentro de un comentario
|
||||
else error(0,4); // símbolo no reconocido (¡¡creo!!) TODO: comprobar
|
||||
if (coment) error(0,1); // llegó el final dentro de un comentario
|
||||
else error(0,4); // símbolo no reconocido (¡¡creo!!) TODO: comprobar
|
||||
}
|
||||
|
||||
break;
|
||||
|
@ -294,7 +294,7 @@ lex_scan:
|
|||
|
||||
|
||||
//////////////////////////////////////
|
||||
// ANÁLISIS SINTÁCTICO DEL PROGRAMA //
|
||||
// ANÁLISIS SINTÁCTICO DEL PROGRAMA //
|
||||
//////////////////////////////////////
|
||||
|
||||
void sintactico(void)
|
||||
|
@ -327,9 +327,9 @@ void sintactico(void)
|
|||
optimizar=1;*/
|
||||
|
||||
if(case_sensitive) {
|
||||
memcpy(lower+129,"üéâäàåçêëèïîìäåéææôöòûùÿöü¢£¥áíóú",35);
|
||||
memcpy(lower+129,"üéâäàåçêëèïîìäåéææôöòûùÿöü¢£¥áíóú",35);
|
||||
memcpy(lower+'A',"ABCDEFGHIJKLMNOPQRSTUVWXYZ",26);
|
||||
lower['Ñ']='Ñ';
|
||||
lower['Ñ']='Ñ';
|
||||
}
|
||||
|
||||
if (pieza==p_compiler_options) {
|
||||
|
@ -360,9 +360,9 @@ void sintactico(void)
|
|||
case 3: // _case_sensitive
|
||||
lexico();
|
||||
case_sensitive=1;
|
||||
memcpy(lower+129,"üéâäàåçêëèïîìäåéææôöòûùÿöü¢£¥áíóú",35);
|
||||
memcpy(lower+129,"üéâäàåçêëèïîìäåéææôöòûùÿöü¢£¥áíóú",35);
|
||||
memcpy(lower+'A',"ABCDEFGHIJKLMNOPQRSTUVWXYZ",26);
|
||||
lower['Ñ']='Ñ';
|
||||
lower['Ñ']='Ñ';
|
||||
break;
|
||||
case 4: // _ignore_errors
|
||||
lexico();
|
||||
|
@ -399,18 +399,18 @@ void sintactico(void)
|
|||
comprueba_null=0;
|
||||
break;
|
||||
default:
|
||||
error(0,8); // se esperaba una opción de compilación
|
||||
error(0,8); // se esperaba una opción de compilación
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
if (!free_sintax) {
|
||||
if (pieza==p_program) {
|
||||
error(3,9); // se esperaba ';' (¡creo!) TODO: comprobar
|
||||
error(3,9); // se esperaba ';' (¡creo!) TODO: comprobar
|
||||
//lexico();
|
||||
break;
|
||||
}
|
||||
else {
|
||||
error(0,8); // se esperaba una opción de compilación
|
||||
error(0,8); // se esperaba una opción de compilación
|
||||
//lexico();
|
||||
// puede ser peligroso
|
||||
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_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"
|
||||
|
||||
|
@ -515,7 +515,7 @@ void sintactico(void)
|
|||
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
|
||||
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);
|
||||
lexico();
|
||||
puntero_a_struct:
|
||||
|
@ -874,7 +874,7 @@ void sintactico(void)
|
|||
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
|
||||
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);
|
||||
lexico();
|
||||
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;
|
||||
|
||||
|
@ -1236,10 +1236,10 @@ void sintactico(void)
|
|||
while (pieza==p_ptocoma || pieza==p_coma) lexico();
|
||||
}
|
||||
|
||||
// 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
|
||||
// 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
|
||||
// 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
|
||||
// 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
|
||||
// salto_import, donde al final sustituiremos el 0 por el offset adecuado.
|
||||
|
||||
salto_import=imem+1;
|
||||
|
@ -1302,10 +1302,10 @@ void sintactico(void)
|
|||
while (pieza!=p_cerrar) {
|
||||
(*ob).proc.num_par++; expresion_cpa();
|
||||
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 (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();
|
||||
|
||||
|
@ -1313,7 +1313,7 @@ void sintactico(void)
|
|||
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;
|
||||
|
||||
|
@ -1362,7 +1362,7 @@ lex_scan:
|
|||
|
||||
case l_err:
|
||||
if (coment) { pieza=p_rem; _source++; }
|
||||
else error(0,5); // carácter no reconocido
|
||||
else error(0,5); // carácter no reconocido
|
||||
_source++;
|
||||
break;
|
||||
|
||||
|
@ -1527,7 +1527,7 @@ lex_scan:
|
|||
pieza=p_num;
|
||||
pieza_num=0;
|
||||
|
||||
// Número hexadecimal
|
||||
// Número hexadecimal
|
||||
if (*_source=='0' && lower[*(_source+1)]=='x') {
|
||||
_source+=2;
|
||||
while ((int)lex_case[*_source]==l_num ||
|
||||
|
@ -1580,8 +1580,8 @@ lex_scan:
|
|||
}
|
||||
|
||||
if (pieza==p_ultima) {
|
||||
if (coment) error(0,1); // llegó el final dentro de un comentario
|
||||
else error(0,4); // símbolo no reconocido (¡¡creo!!)
|
||||
if (coment) error(0,1); // llegó el final dentro de un comentario
|
||||
else error(0,4); // símbolo no reconocido (¡¡creo!!)
|
||||
}
|
||||
|
||||
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
|
||||
|
@ -1754,7 +1754,7 @@ void pasa_ptocoma(void)
|
|||
//
|
||||
|
||||
// *** 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)
|
||||
|
||||
void analiza_private(void) {
|
||||
|
@ -1776,7 +1776,7 @@ void analiza_private(void) {
|
|||
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
|
||||
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);
|
||||
lexico();
|
||||
puntero_a_struct:
|
||||
|
@ -1867,7 +1867,7 @@ void analiza_private(void) {
|
|||
} else {
|
||||
|
||||
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 ((*ob).tipo==tcloc) { // Se repite un string
|
||||
save_error(0);
|
||||
|
@ -1883,8 +1883,8 @@ void analiza_private(void) {
|
|||
lexico();
|
||||
}
|
||||
} else dup=255;
|
||||
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
|
||||
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 {
|
||||
while (pieza==p_ptocoma || pieza==p_coma) lexico();
|
||||
(*ob).param++;
|
||||
|
@ -1955,10 +1955,10 @@ void analiza_private(void) {
|
|||
if (pieza!=p_id) error(1,23); // esperando un nombre
|
||||
ob=o; if ((*ob).tipo!=tnone) {
|
||||
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();
|
||||
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
|
||||
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 {
|
||||
while (pieza==p_ptocoma || pieza==p_coma) {
|
||||
lexico();
|
||||
|
@ -2047,10 +2047,10 @@ void analiza_private(void) {
|
|||
if (pieza!=p_id) error(1,23); // esperando un nombre
|
||||
ob=o; if ((*ob).tipo!=tnone) {
|
||||
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();
|
||||
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
|
||||
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 {
|
||||
while (pieza==p_ptocoma || pieza==p_coma) {
|
||||
lexico();
|
||||
|
@ -2139,14 +2139,14 @@ void analiza_private(void) {
|
|||
|
||||
} 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) {
|
||||
if (parametros==-1 && (*ob).param==1 && (*ob).bloque==bloque_actual) {
|
||||
if ((*ob).tipo==tvloc) { // Se repite una variable local
|
||||
lexico();
|
||||
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
|
||||
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 {
|
||||
while (pieza==p_ptocoma || pieza==p_coma) {
|
||||
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)
|
||||
|
@ -2220,7 +2220,7 @@ struct objeto * analiza_pointer(int tipo, int offset)
|
|||
if (pieza!=p_id) error(1,23); // esperando un nombre
|
||||
ob=o; if ((*ob).tipo!=tnone) {
|
||||
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();
|
||||
len1=-1; len2=-1; len3=-1;
|
||||
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 (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
|
||||
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 {
|
||||
while (pieza==p_ptocoma || pieza==p_coma) lexico();
|
||||
(*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;
|
||||
struct objeto * ob;
|
||||
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;
|
||||
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);
|
||||
lexico();
|
||||
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;
|
||||
struct objeto * ob;
|
||||
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;
|
||||
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);
|
||||
lexico();
|
||||
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;
|
||||
struct objeto * ob;
|
||||
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;
|
||||
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);
|
||||
lexico();
|
||||
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
|
||||
ob=o; if ((*ob).tipo!=tnone) {
|
||||
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();
|
||||
items1=-1; items2=-1; items3=-1;
|
||||
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 (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
|
||||
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 {
|
||||
(*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.ostruct=estructura; // struct original
|
||||
|
||||
// (*ob).psgl.len_item ð (*((*ob).psgl.ostruct)).len_item;
|
||||
// (*ob).psgl.len_item ð (*((*ob).psgl.ostruct)).len_item;
|
||||
|
||||
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 ] )
|
||||
// [ p_coma <init>]
|
||||
|
@ -3455,7 +3455,7 @@ void tglo_init2(int tipo) {
|
|||
|
||||
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 (*(imemptr-(int)mem+(int)frm)==1 || tipo==1) {
|
||||
|
@ -3474,7 +3474,7 @@ void tglo_init2(int tipo) {
|
|||
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 (*(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)) {
|
||||
|
||||
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
|
||||
|
||||
|
@ -3569,7 +3569,7 @@ void tglo_init2(int tipo) {
|
|||
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
|
||||
|
||||
|
@ -3614,13 +3614,13 @@ void tglo_init2(int tipo) {
|
|||
if (dup<1) error(2,52); // no se puede duplicar 0 o menos veces
|
||||
lexico();
|
||||
|
||||
// Analiza la secuencia como otra inicialización ...
|
||||
// Analiza la secuencia como otra inicialización ...
|
||||
|
||||
oimemptr=imemptr;
|
||||
tglo_init2(tipo);
|
||||
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) {
|
||||
len=imemptr-oimemptr;
|
||||
|
@ -3633,7 +3633,7 @@ void tglo_init2(int tipo) {
|
|||
imem=((int)imemptr-(int)mem+3)/4;
|
||||
_imem=((int)oimemptr+n-(int)mem+3)/4;
|
||||
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 (frm[_imem]==0xdad00000) error(3,53);
|
||||
}
|
||||
|
|
|
@ -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
|
||||
* 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 DLL, estructuras, etc. etc. etc.
|
||||
* Estudiaros la siguiente tabla para entenderlo mejor...
|
||||
|
@ -44,11 +44,11 @@ byte* nombre_program; /* nombre del programa, para guardarlo en el exe */
|
|||
struct objeto {
|
||||
byte tipo; /* Tipo de objeto */
|
||||
byte usado; /* Indica si el objeto ha sido usado antes de definirse */
|
||||
byte * name; /* Puntero al nombre, para algún listado */
|
||||
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 param; /* Indica que es un objeto declarado en los parámetros */
|
||||
int dll; /* En qué dll se declara el objeto, -1 = pertenece al prg */
|
||||
byte * name; /* Puntero al nombre, para algún listado */
|
||||
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 param; /* Indica que es un objeto declarado en los parámetros */
|
||||
int dll; /* En qué dll se declara el objeto, -1 = pertenece al prg */
|
||||
struct objeto * anterior; /* Anterior objeto de igual nombre */
|
||||
struct objeto * bloque; /* Bloque de este proceso (0-global/local N-private) */
|
||||
struct objeto * member; /* Indica a que struct pertenece (0-n/a) */
|
||||
|
@ -81,14 +81,14 @@ struct objeto {
|
|||
} cglo,pcgl;
|
||||
struct { /* Struct */
|
||||
int offset;
|
||||
int len_item; /* Número de campos */
|
||||
int len_item; /* Número de campos */
|
||||
int totalitems; /* Numero total de registros */
|
||||
int items1,items2,items3; /* -1 si n/a */
|
||||
} sglo,sloc;
|
||||
struct { /* Struct pointer */
|
||||
int offset;
|
||||
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 */
|
||||
} psgl,pslo;
|
||||
struct { /* Variable local */
|
||||
|
@ -116,12 +116,12 @@ struct objeto {
|
|||
struct { /* Proceso */
|
||||
struct objeto * bloque;
|
||||
int offset;
|
||||
int num_par; /* Número de parámetros */
|
||||
int num_par; /* Número de parámetros */
|
||||
} proc;
|
||||
|
||||
/*
|
||||
* 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) */
|
||||
|
@ -144,7 +144,7 @@ struct objeto {
|
|||
#define tfunc 9
|
||||
#define tsglo 10 /* Structs */
|
||||
#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 twglo 14 /* Word global */
|
||||
#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.
|
||||
* 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
|
||||
* un bug en el evaluador de expresiones, al parecer los operadores lógicos no funcionan de
|
||||
* 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)
|
||||
* 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
|
||||
* 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 ;)
|
||||
*/
|
||||
|
||||
#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 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 */
|
||||
#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_spc 3 /* Espacios y tabulaciones */
|
||||
#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 */
|
||||
|
||||
|
||||
/*
|
||||
* Valores sintácticos o tokens (pieza)
|
||||
* Valores sintácticos o tokens (pieza)
|
||||
*/
|
||||
#define p_ultima 0x00 /* Fin de fichero <EOF> */
|
||||
#define p_program 0x01
|
||||
|
@ -210,7 +210,7 @@ byte * vhash[256]; /* Punteros al vector de nombres; */
|
|||
#define p_process 0x07
|
||||
#define p_private 0x08
|
||||
#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_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_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;
|
||||
byte token;
|
||||
struct lex_ele * alternativa;
|
||||
struct lex_ele * siguiente; }
|
||||
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;
|
||||
|
||||
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 * 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_obj_predefinidos;
|
||||
|
||||
|
@ -401,14 +401,14 @@ int num_obj_predefinidos;
|
|||
/*
|
||||
* 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;
|
||||
|
||||
/* El último token leido está en (linea,ierror,ierror_end) */
|
||||
/* El último token leido está en (linea,ierror,ierror_end) */
|
||||
byte * ultima_linea,cero;
|
||||
|
||||
/* Siguiente token -> next_lexico() */
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
* 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
|
||||
# define el_stub "stub.exe"
|
||||
|
@ -112,9 +112,9 @@ void init_rnd_coder(int n, char * clave)
|
|||
rndb();
|
||||
}
|
||||
|
||||
//ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
|
||||
// Funci¢n de encriptaci¢n/desencriptaci¢n
|
||||
//ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
|
||||
//ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
|
||||
// Funci¢n de encriptaci¢n/desencriptaci¢n
|
||||
//ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
|
||||
|
||||
void coder(byte * ptr, int len, char * clave)
|
||||
{
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
|
||||
/*
|
||||
-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
|
||||
-Mapa de caracteres
|
||||
es la imagen del mapa de caracteres, se copia directamente.
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
#include "main.h"
|
||||
#include "varindex.h"
|
||||
|
||||
#define MAX_EXTERN_FUNCS 0xFFFF /* ¿Demasiado? */
|
||||
#define MAX_EXTERN_FUNCS 0xFFFF /* ¿Demasiado? */
|
||||
#define MAX_EXTFUNC_PARMS 0xFF
|
||||
#define MAX_DLLS 0xFF
|
||||
#define MAX_ENTRYPOINTS 0xFF
|
||||
|
@ -33,7 +33,7 @@
|
|||
#define P_SIEMPRE 512 /* yo creo ke esto vale */
|
||||
#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_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);
|
||||
|
||||
/* Finaliza el stub (exit) */
|
||||
|
@ -99,7 +99,7 @@ typedef void (TYPEOF_Stub_Quit)(int n);
|
|||
* ENTRY-POINTS
|
||||
*
|
||||
* 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)
|
||||
*/
|
||||
|
||||
|
@ -107,7 +107,7 @@ typedef void (TYPEOF_Stub_Quit)(int n);
|
|||
* 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_active_palette 3 // Al modificar la paleta activa (usada en los fades)
|
||||
#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_end 18 // Fin de salvapantallas
|
||||
#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_first_load 22 // Se ejecuta al cargar la DLL en ejecucion
|
||||
#define EDIV_quit 23 // Llamado por stub_quit()
|
||||
|
@ -134,7 +134,7 @@ typedef void (TYPEOF_Stub_Quit)(int n);
|
|||
/*
|
||||
* 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)
|
||||
*/
|
||||
int Call_Entrypoint(int ep, ...);
|
||||
|
@ -178,9 +178,9 @@ TYPEOF_EDIV_Export_Priority *
|
|||
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 \
|
||||
int *params, int *sp, \
|
||||
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 sp;
|
||||
*/
|
||||
|
||||
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 {
|
||||
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 */
|
||||
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];
|
||||
|
||||
struct _dlls {
|
||||
char* nombre; /* nombre de la DLL (ej: "sample.so") */
|
||||
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 */
|
||||
void* hDLL;
|
||||
} dlls[MAX_DLLS];
|
||||
|
@ -300,9 +300,9 @@ struct _dlls {
|
|||
int dimem; /* indices para poder devolver offsets de variables segun se van declarando */
|
||||
int diloc;
|
||||
|
||||
int numdlls; /* Número de DLLs encontradas en el directorio */
|
||||
int n_dlls; /* Número de DLLs requeridas por el programa */
|
||||
int n_externs; /* Número de funciones importadas */
|
||||
int n_entrypoints; /* Número de entrypoints declarados */
|
||||
int numdlls; /* Número de DLLs encontradas en el directorio */
|
||||
int n_dlls; /* Número de DLLs requeridas por el programa */
|
||||
int n_externs; /* Número de funciones importadas */
|
||||
int n_entrypoints; /* Número de entrypoints declarados */
|
||||
|
||||
#endif // __EXTERN_H
|
|
@ -21,11 +21,11 @@
|
|||
|
||||
/*
|
||||
* IDs de idioma:
|
||||
* 0 - ES - Español
|
||||
* 0 - ES - Español
|
||||
* 1 - IT - Italiano (CicTec)
|
||||
* 2 - PT - Portugués (tareco)
|
||||
* 3 - EN - Inglés (de momento Er_Makina :P)
|
||||
* 4 - CA - Catalán (BenKo)
|
||||
* 2 - PT - Portugués (tareco)
|
||||
* 3 - EN - Inglés (de momento Er_Makina :P)
|
||||
* 4 - CA - Catalán (BenKo)
|
||||
* 5 - EU - Euskera (Jorge Urreta)
|
||||
*/
|
||||
|
||||
|
|
|
@ -21,13 +21,13 @@
|
|||
|
||||
/*
|
||||
* ARCHIVO DE IDIOMA DE EDIV
|
||||
* 4 - CATALÁN (ca)
|
||||
* Autora: Belén Albeza (BenKo)
|
||||
* 4 - CATALÁN (ca)
|
||||
* Autora: Belén Albeza (BenKo)
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* Errores de compilación
|
||||
* Errores de compilación
|
||||
*/
|
||||
|
||||
#if TRANSLATE == TRANSLATE_ERROR
|
||||
|
@ -36,45 +36,45 @@
|
|||
/* 1 */ "Ha arribat el final dins d' un comentari",
|
||||
/* 2 */ "Excedida la capacitat del vector de noms",
|
||||
/* 3 */ "Literal sense tancar",
|
||||
/* 4 */ "Símbol no reconegut",
|
||||
/* 5 */ "Caràcter no reconegut",
|
||||
/* 4 */ "Símbol no reconegut",
|
||||
/* 5 */ "Caràcter no reconegut",
|
||||
/* 6 */ "Excedida la capacitat de la tabla d' objectes",
|
||||
/* 7 */ "Esperant '='",
|
||||
/* 8 */ "Esperant una opció de compilació",
|
||||
/* 8 */ "Esperant una opció de compilació",
|
||||
/* 9 */ "Esperant ';'",
|
||||
/* 10 */ "S' esperava un operand",
|
||||
/* 11 */ "Expresió incorrecta",
|
||||
/* 12 */ "Asignació a cadena incorrecta",
|
||||
/* 13 */ "Asignació incorrecta",
|
||||
/* 11 */ "Expresió incorrecta",
|
||||
/* 12 */ "Asignació a cadena incorrecta",
|
||||
/* 13 */ "Asignació incorrecta",
|
||||
/* 14 */ "No es pot calcular l' offset de la dada",
|
||||
/* 15 */ "No es pot calcular l' offset",
|
||||
/* 16 */ "No es pot realitzar l' increment",
|
||||
/* 17 */ "Local no es pot accedir",
|
||||
/* 18 */ "Esperant ')'",
|
||||
/* 19 */ "Esperant ']'",
|
||||
/* 20 */ "No és un tipus de procés",
|
||||
/* 21 */ "Esperant el nom del procés",
|
||||
/* 20 */ "No és un tipus de procés",
|
||||
/* 21 */ "Esperant el nom del procés",
|
||||
/* 22 */ "Esperant '('",
|
||||
/* 23 */ "Esperant un nom",
|
||||
/* 24 */ "No es pot calcular el tamany",
|
||||
/* 25 */ "Expresió incorrecta",
|
||||
/* 26 */ "No es pot rebre una estructura com a paràmetre",
|
||||
/* 25 */ "Expresió incorrecta",
|
||||
/* 26 */ "No es pot rebre una estructura com a paràmetre",
|
||||
/* 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",
|
||||
/* 30 */ "El nom no és nou",
|
||||
/* 30 */ "El nom no és nou",
|
||||
/* 31 */ "Cadena de text de longitud negativa",
|
||||
/* 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",
|
||||
/* 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",
|
||||
/* 38 */ "Nombre de paràmetres incorrecte",
|
||||
/* 38 */ "Nombre de paràmetres incorrecte",
|
||||
/* 39 */ "Esperant un element de la estructura",
|
||||
/* 40 */ "Tabla de longitud negativa",
|
||||
/* 41 */ "La longitud no coincideix amb la declaració anterior",
|
||||
/* 42 */ "No es pot inicialitzar un paràmetre",
|
||||
/* 41 */ "La longitud no coincideix amb la declaració anterior",
|
||||
/* 42 */ "No es pot inicialitzar un paràmetre",
|
||||
/* 43 */ "Estructura de longitud negativa",
|
||||
/* 44 */ "Esperant PROGRAM",
|
||||
/* 45 */ "Esperant el nom del programa",
|
||||
|
@ -85,26 +85,26 @@
|
|||
/* 50 */ "Valor BYTE fora del rang (0...255)",
|
||||
/* 51 */ "Valor WORD fora del rang (0...65535)",
|
||||
/* 52 */ "No es pot duplicar 0 o menys vegades",
|
||||
/* 53 */ "Inicialització incorrecta",
|
||||
/* 54 */ "S' esperava una expresió constant",
|
||||
/* 53 */ "Inicialització incorrecta",
|
||||
/* 54 */ "S' esperava una expresió constant",
|
||||
/* 55 */ "Massa valors per a la estructura",
|
||||
/* 56 */ "Esperant BEGIN",
|
||||
/* 57 */ "Esperant END",
|
||||
/* 58 */ "Esperant UNTIL",
|
||||
/* 59 */ "Esperant una variable",
|
||||
/* 60 */ "Esperant TO",
|
||||
/* 61 */ "Sentència FROM incorrecta",
|
||||
/* 62 */ "El valor STEP no es vàlid",
|
||||
/* 61 */ "Sentència FROM incorrecta",
|
||||
/* 62 */ "El valor STEP no es vàlid",
|
||||
/* 63 */ "Esperant CASE, DEFAULT o END",
|
||||
/* 64 */ "Esperant ':'",
|
||||
/* 65 */ "BREAK no apareix dins d' un bucle",
|
||||
/* 66 */ "CONTINUE no apareix dins d' un bucle",
|
||||
/* 67 */ "S' esperava una sentència",
|
||||
/* 68 */ "Expresió sense sentit",
|
||||
/* 69 */ "Asignació dins d' una condició",
|
||||
/* 70 */ "Esperant el nomb del procés o funció",
|
||||
/* 67 */ "S' esperava una sentència",
|
||||
/* 68 */ "Expresió sense sentit",
|
||||
/* 69 */ "Asignació dins d' una condició",
|
||||
/* 70 */ "Esperant el nomb del procés o funció",
|
||||
/* 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 */
|
||||
|
||||
|
||||
|
@ -115,7 +115,7 @@
|
|||
#elif TRANSLATE == TRANSLATE_WARNING
|
||||
|
||||
/* 0 */ "",
|
||||
/* 1 */ "SETUP_PROGRAM: Característica desfasada",
|
||||
/* 1 */ "SETUP_PROGRAM: Característica desfasada",
|
||||
/* 2 */ "IMPORT: Sintaxi antiga, s' ignora" /* SIN COMA */
|
||||
|
||||
|
||||
|
@ -126,13 +126,13 @@
|
|||
#elif TRANSLATE == TRANSLATE_DLL_ERROR
|
||||
|
||||
/* 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",
|
||||
/* 4 */ "Funció '%s': El nom no és nou",
|
||||
/* 4 */ "Funció '%s': El nom no és nou",
|
||||
/* 5 */ "Error declarant objecte '%s'",
|
||||
/* 6 */ "Objecte '%s': Declaració il·legal dins d' struct",
|
||||
/* 7 */ "Objecte '%s': Declaració d' un membre fora d' struct",
|
||||
/* 8 */ "Tamany il·legal de l' string '%s'",
|
||||
/* 6 */ "Objecte '%s': Declaració il·legal dins d' struct",
|
||||
/* 7 */ "Objecte '%s': Declaració d' un membre fora d' struct",
|
||||
/* 8 */ "Tamany il·legal de l' string '%s'",
|
||||
/* 9 */ "EndStruct sense Struct",
|
||||
/* 10 */ "Una estructura ha de contenir almenys un element" /* SIN COMA */
|
||||
|
||||
|
@ -146,8 +146,8 @@
|
|||
/* 0 */ "",
|
||||
/* 1 */ "Arxiu ltlex.def no trobat",
|
||||
/* 2 */ "S' esperava un valor hexadecimal (&00..&FF)",
|
||||
/* 3 */ "Massa símbols definits",
|
||||
/* 4 */ "Símbol no vàlid" /* SIN COMA */
|
||||
/* 3 */ "Massa símbols definits",
|
||||
/* 4 */ "Símbol no vàlid" /* SIN COMA */
|
||||
|
||||
|
||||
/*
|
||||
|
@ -157,47 +157,47 @@
|
|||
#elif TRANSLATE == TRANSLATE_COMPILER
|
||||
|
||||
/* 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",
|
||||
/* 3 */ "%s [opcions] arxiu.prg [executable]\n\n",
|
||||
/* 4 */ "Llista d' opcions:\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",
|
||||
/* 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",
|
||||
/* 10 */ " -s, --system Sistema Operatiu destí (per defecte %s)\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",
|
||||
/* 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",
|
||||
/* 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",
|
||||
/* 10 */ " -s, --system Sistema Operatiu destí (per defecte %s)\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",
|
||||
/* 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",
|
||||
/* 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",
|
||||
/* 17 */ "edivc: Error obrint l' arxiu %s.\n",
|
||||
/* 18 */ "edivc: Compilant: %s\n",
|
||||
/* 19 */ "edivc: ERROR: No es troba %s\n",
|
||||
/* 20 */ "edivc: ERROR: Format incorrecte de %s\n",
|
||||
/* 21 */ "edivc: Interromput (%d advertències)\n",
|
||||
/* 22 */ "edivc: Finalitzat amb èxit (%d advertències)\n",
|
||||
/* 21 */ "edivc: Interromput (%d advertències)\n",
|
||||
/* 22 */ "edivc: Finalitzat amb èxit (%d advertències)\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: ",
|
||||
/* 26 */ "%s:%d: Advertència: ",
|
||||
/* 26 */ "%s:%d: Advertència: ",
|
||||
/* 27 */ "Precompilant...\n",
|
||||
/* 28 */ "Compilant...\n",
|
||||
/* 29 */ "Error creant arxiu d' intercanvi\n",
|
||||
/* 30 */ "Generant llistats...\n",
|
||||
/* 31 */ "Guardant executable...\n",
|
||||
/* 32 */ "Guardant informació de depurat...\n",
|
||||
/* 32 */ "Guardant informació de depurat...\n",
|
||||
/* 33 */ "Error escriguent executable\n",
|
||||
/* 34 */ "Compilació finalitzada.\n",
|
||||
/* 34 */ "Compilació finalitzada.\n",
|
||||
/* 35 */ "%s: ERROR: ",
|
||||
/* 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",
|
||||
/* 39 */ "Codi EML de %s - eDIV versió " VERSION "\n",
|
||||
/* 39 */ "Codi EML de %s - eDIV versió " VERSION "\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",
|
||||
#ifdef _WIN32
|
||||
/* 43 */ "No es troba cap DLL\n",
|
||||
|
@ -206,17 +206,17 @@
|
|||
/* 43 */ "No es troba cap llibreria\n",
|
||||
/* 44 */ "Directori %s/ no trobat\n",
|
||||
#endif
|
||||
/* 45 */ "Error cargant llibrería %s\n",
|
||||
/* 45 */ "Error cargant llibrería %s\n",
|
||||
#ifdef _WIN32
|
||||
/* 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
|
||||
/* 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
|
||||
/* 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",
|
||||
/* 50 */ "Error: l' arxiu rebut no és del tipus esperat\n" /* SIN COMA */
|
||||
/* 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",
|
||||
/* 50 */ "Error: l' arxiu rebut no és del tipus esperat\n" /* SIN COMA */
|
||||
|
||||
|
||||
/*
|
||||
|
@ -227,102 +227,102 @@
|
|||
|
||||
/* FIXMI: traducir esto */
|
||||
/* 0 */ "ERROR %d: ",
|
||||
/* 1 */ "eDIV: Error en ejecución",
|
||||
/* 2 */ "eDIV: Error crítico",
|
||||
/* 1 */ "eDIV: Error en ejecución",
|
||||
/* 2 */ "eDIV: Error crítico",
|
||||
/* 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
|
||||
|
||||
/* 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.",
|
||||
/* 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.",
|
||||
/* 105 */ "No es va poder carregar l' arxiu, arxiu no trobat.",
|
||||
/* 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).",
|
||||
/* 108 */ "Número de regió invàlid (fora de rang).",
|
||||
/* 109 */ "Codi d' arxiu invàlido.",
|
||||
/* 110 */ "Codi de gràfic invà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).",
|
||||
/* 108 */ "Número de regió invàlid (fora de rang).",
|
||||
/* 109 */ "Codi d' arxiu invàlido.",
|
||||
/* 110 */ "Codi de gràfic invàlid.",
|
||||
/* 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.",
|
||||
/* 114 */ "No es va poder carregar la font, arxiu no trobat.",
|
||||
/* 115 */ "Es va intentar carregar un arxiu de font no vàlid.",
|
||||
/* 116 */ "Codi identificador de font de lletres invàlid.",
|
||||
/* 117 */ "Codi de centrat de text invàlid.",
|
||||
/* 115 */ "Es va intentar carregar un arxiu de font no vàlid.",
|
||||
/* 116 */ "Codi identificador de font de lletres invàlid.",
|
||||
/* 117 */ "Codi de centrat de text invàlid.",
|
||||
/* 118 */ "Hi ha massa textos actius al programa.",
|
||||
/* 119 */ "Indentificador de text no vàlid.",
|
||||
/* 120 */ "Regió de pantalla definida incorrectament.",
|
||||
/* 121 */ "Es va intentar utilitzar un gràfic que no existeix.",
|
||||
/* 122 */ "Es va intentar escriure un bloc fora de la memòria.",
|
||||
/* 119 */ "Indentificador de text no vàlid.",
|
||||
/* 120 */ "Regió de pantalla definida incorrectament.",
|
||||
/* 121 */ "Es va intentar utilitzar un gràfic que no existeix.",
|
||||
/* 122 */ "Es va intentar escriure un bloc fora de la memòria.",
|
||||
/* 123 */ "No es va poder obrir l' arxiu per a escritura.",
|
||||
/* 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.",
|
||||
/* 127 */ "No es va poder llegir l' arxiu.",
|
||||
/* 128 */ "No es va poder carregar l' efecte de so.",
|
||||
/* 129 */ "No es va poder reproduir l' efecte de so sol·licitat.",
|
||||
/* 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).",
|
||||
/* 132 */ "Es necessita un codi de gràfic per al mode 7.",
|
||||
/* 133 */ "Número de punt de control invàlid.",
|
||||
/* 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).",
|
||||
/* 136 */ "Direcció de la tabla de paleta fora de la memòria.",
|
||||
/* 137 */ "No es poden comprovar regions en gràfics de mode 7.",
|
||||
/* 138 */ "Codi d' informació gràfica incorrecte.",
|
||||
/* 139 */ "No es poden comprovar col·lisions en gràfics de mode 7.",
|
||||
/* 140 */ "Accés fora de rang.",
|
||||
/* 141 */ "Es va intentar accedir a un procés invàlid.",
|
||||
/* 142 */ "El procés sembla bloquejat, esperant FRAME.",
|
||||
/* 129 */ "No es va poder reproduir l' efecte de so sol·licitat.",
|
||||
/* 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).",
|
||||
/* 132 */ "Es necessita un codi de gràfic per al mode 7.",
|
||||
/* 133 */ "Número de punt de control invàlid.",
|
||||
/* 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).",
|
||||
/* 136 */ "Direcció de la tabla de paleta fora de la memòria.",
|
||||
/* 137 */ "No es poden comprovar regions en gràfics de mode 7.",
|
||||
/* 138 */ "Codi d' informació gràfica incorrecte.",
|
||||
/* 139 */ "No es poden comprovar col·lisions en gràfics de mode 7.",
|
||||
/* 140 */ "Accés fora de rang.",
|
||||
/* 141 */ "Es va intentar accedir a un procés invàlid.",
|
||||
/* 142 */ "El procés sembla bloquejat, esperant FRAME.",
|
||||
/* 143 */ "No es va poder carregar el mapa, arxiu no trobat.",
|
||||
/* 144 */ "Es va intentar carregar un arxiu de mapa invàlid.",
|
||||
/* 145 */ "S' ha intentar fer una divisió entre zero.",
|
||||
/* 146 */ "El tamany de la regió es incorrecte.",
|
||||
/* 144 */ "Es va intentar carregar un arxiu de mapa invàlid.",
|
||||
/* 145 */ "S' ha intentar fer una divisió entre zero.",
|
||||
/* 146 */ "El tamany de la regió es incorrecte.",
|
||||
/* 147 */ "No es va poder carregar FLI/FLC, arxiu no trobat.",
|
||||
/* 148 */ "Valor de timeout incorrecte (ha de ser entre 1 y 60).",
|
||||
/* 149 */ "Nombre de jugadors incorrecte (ha de ser entre 2 y 8).",
|
||||
/* 150 */ "Només es poden enviar dades globals.",
|
||||
/* 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).",
|
||||
/* 150 */ "Només es poden enviar dades globals.",
|
||||
/* 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).",
|
||||
/* 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).",
|
||||
/* 155 */ "El centre es troba fora dels límits del gràfic.",
|
||||
/* 156 */ "L' objecte es troba fora del mapa i serà eliminat.",
|
||||
/* 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.",
|
||||
/* 156 */ "L' objecte es troba fora del mapa i serà eliminat.",
|
||||
/* 157 */ "Textura del mapa no trobada.",
|
||||
/* 158 */ "El tamany de la textura és incorrecte.",
|
||||
/* 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.",
|
||||
/* 161 */ "El número de bandera no és vàlid.",
|
||||
/* 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).",
|
||||
/* 164 */ "La cadena de text destí no és vàlida.",
|
||||
/* 158 */ "El tamany de la textura és incorrecte.",
|
||||
/* 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.",
|
||||
/* 161 */ "El número de bandera no és vàlid.",
|
||||
/* 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).",
|
||||
/* 164 */ "La cadena de text destí no és vàlida.",
|
||||
/* 165 */ "Es va intentar accedir a un punter nul.",
|
||||
/* 166 */ "El mode d' accés a l' arxiu no és vàlid.",
|
||||
/* 167 */ "No es va poder carregar el mòdul.",
|
||||
/* 166 */ "El mode d' accés a l' arxiu no és vàlid.",
|
||||
/* 167 */ "No es va poder carregar el mòdul.",
|
||||
/* 168 */ "Massa errors ignorats.",
|
||||
/* 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.",
|
||||
/* 172 */ "Massa objectes gràfics visualitzats.",
|
||||
/* 173 */ "Tipus d' objecte gràfic no conegut.",
|
||||
/* 172 */ "Massa objectes gràfics visualitzats.",
|
||||
/* 173 */ "Tipus d' objecte gràfic no conegut.",
|
||||
/* 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].",
|
||||
/* 177 */ "Textura de map.",
|
||||
/* 178 */ "no trobada en arxiu.",
|
||||
/* 179 */ "Es van realitzar massa peticions de memòria dinàmica.",
|
||||
/* 180 */ "El punter no es correspón amb ningú dels blocs reservats.",
|
||||
/* 181 */ "No es poden reservar blocs de menys d' una posició.",
|
||||
/* 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.",
|
||||
/* 179 */ "Es van realitzar massa peticions de memòria dinàmica.",
|
||||
/* 180 */ "El punter no es correspón amb ningú dels blocs reservats.",
|
||||
/* 181 */ "No es poden reservar blocs de menys d' una posició.",
|
||||
/* 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.",
|
||||
/* 184 */ "",
|
||||
/* 185 */ "",
|
||||
/* 186 */ "",
|
||||
|
@ -343,7 +343,7 @@
|
|||
|
||||
|
||||
/*
|
||||
* Errores críticos del stub
|
||||
* Errores críticos del stub
|
||||
*/
|
||||
|
||||
#elif TRANSLATE == TRANSLATE_CRITICAL_ERROR
|
||||
|
@ -351,13 +351,13 @@
|
|||
/* 0 */ "",
|
||||
/* 1 */ "Error llegint el codi del programa",
|
||||
/* 2 */ "Error en el format de codi",
|
||||
/* 3 */ "Redefinició del tipus de procés",
|
||||
/* 4 */ "No es va poder reservar memòria per a la pila",
|
||||
/* 3 */ "Redefinició del tipus de procés",
|
||||
/* 4 */ "No es va poder reservar memòria per a la pila",
|
||||
/* 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
|
||||
/* 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
|
||||
/* 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
|
||||
|
||||
|
||||
#endif
|
||||
|
|
|
@ -255,7 +255,7 @@
|
|||
|
||||
#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.",
|
||||
/* 101 */ "Call to a key() with a nonexistent key code.",
|
||||
/* 102 */ "The palette was not loaded, archive not found.",
|
||||
|
|
|
@ -21,48 +21,48 @@
|
|||
|
||||
/*
|
||||
* ARCHIVO DE IDIOMA DE EDIV
|
||||
* 0 - ESPAÑOL (es)
|
||||
* 0 - ESPAÑOL (es)
|
||||
* Autores: eDIV Team, Hammer Technologies
|
||||
*/
|
||||
|
||||
/*
|
||||
* Este archivo puede usarse como archivo de plantilla para hacer nuevas
|
||||
* 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,
|
||||
* avísanos y nos ocuparemos de que lo soporte :)
|
||||
* avísanos y nos ocuparemos de que lo soporte :)
|
||||
*
|
||||
* Si editas este archivo, por favor:
|
||||
* - 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.
|
||||
* - Respeta la numeración de los mensajes.
|
||||
* - Respeta las comillas, los símbolos reservados de C (%s, \n, etc),
|
||||
* - Respeta la numeración de los mensajes.
|
||||
* - Respeta las comillas, los símbolos reservados de C (%s, \n, etc),
|
||||
* las instrucciones de preprocesador (#ifdef, #else, etc)...
|
||||
* - 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
|
||||
|
||||
/* 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",
|
||||
/* 3 */ "Literal sin cerrar",
|
||||
/* 4 */ "Símbolo no reconocido",
|
||||
/* 5 */ "Carácter no reconocido",
|
||||
/* 4 */ "Símbolo no reconocido",
|
||||
/* 5 */ "Carácter no reconocido",
|
||||
/* 6 */ "Excedida la capacidad de la tabla de objetos",
|
||||
/* 7 */ "Esperando '='",
|
||||
/* 8 */ "Esperando una opción de compilación",
|
||||
/* 8 */ "Esperando una opción de compilación",
|
||||
/* 9 */ "Esperando ';'",
|
||||
/* 10 */ "Se esperaba un operando",
|
||||
/* 11 */ "Expresión incorrecta",
|
||||
/* 12 */ "Asignación a cadena incorrecta",
|
||||
/* 13 */ "Asignación incorrecta",
|
||||
/* 11 */ "Expresión incorrecta",
|
||||
/* 12 */ "Asignación a cadena incorrecta",
|
||||
/* 13 */ "Asignación incorrecta",
|
||||
/* 14 */ "No se puede calcular el offset del dato",
|
||||
/* 15 */ "No se puede calcular el offset",
|
||||
/* 16 */ "No se puede realizar el incremento",
|
||||
|
@ -73,25 +73,25 @@
|
|||
/* 21 */ "Esperando el nombre de un proceso",
|
||||
/* 22 */ "Esperando '('",
|
||||
/* 23 */ "Esperando un nombre",
|
||||
/* 24 */ "No se puede calcular el tamaño",
|
||||
/* 25 */ "Expresión incorrecta",
|
||||
/* 26 */ "No se puede recibir una estructura como parámetro",
|
||||
/* 24 */ "No se puede calcular el tamaño",
|
||||
/* 25 */ "Expresión incorrecta",
|
||||
/* 26 */ "No se puede recibir una estructura como parámetro",
|
||||
/* 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",
|
||||
/* 30 */ "El nombre no es nuevo",
|
||||
/* 31 */ "Cadena de texto de longitud negativa",
|
||||
/* 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",
|
||||
/* 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",
|
||||
/* 38 */ "Número de parámetros incorrecto",
|
||||
/* 38 */ "Número de parámetros incorrecto",
|
||||
/* 39 */ "Esperando un elemento de la estructura",
|
||||
/* 40 */ "Tabla de longitud negativa",
|
||||
/* 41 */ "La longitud no coincide con la declaración anterior",
|
||||
/* 42 */ "No se puede inicializar un parámetro",
|
||||
/* 41 */ "La longitud no coincide con la declaración anterior",
|
||||
/* 42 */ "No se puede inicializar un parámetro",
|
||||
/* 43 */ "Estructura de longitud negativa",
|
||||
/* 44 */ "Esperando PROGRAM",
|
||||
/* 45 */ "Esperando el nombre del programa",
|
||||
|
@ -102,8 +102,8 @@
|
|||
/* 50 */ "Valor BYTE fuera del rango (0...255)",
|
||||
/* 51 */ "Valor WORD fuera del rango (0...65535)",
|
||||
/* 52 */ "No se puede duplicar 0 o menos veces",
|
||||
/* 53 */ "Inicialización incorrecta",
|
||||
/* 54 */ "Se esperaba una expresión constante",
|
||||
/* 53 */ "Inicialización incorrecta",
|
||||
/* 54 */ "Se esperaba una expresión constante",
|
||||
/* 55 */ "Demasiados valores para la estructura",
|
||||
/* 56 */ "Esperando BEGIN",
|
||||
/* 57 */ "Esperando END",
|
||||
|
@ -111,17 +111,17 @@
|
|||
/* 59 */ "Esperando una variable", /* (para el FROM) */
|
||||
/* 60 */ "Esperando 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",
|
||||
/* 64 */ "Esperando ':'",
|
||||
/* 65 */ "BREAK no aparece dentro de un bucle",
|
||||
/* 66 */ "CONTINUE no aparece dentro de un bucle",
|
||||
/* 67 */ "Se esperaba una sentencia",
|
||||
/* 68 */ "Expresión sin sentido",
|
||||
/* 69 */ "Asignación dentro de una condición",
|
||||
/* 70 */ "Esperando el nombre del proceso o función",
|
||||
/* 68 */ "Expresión sin sentido",
|
||||
/* 69 */ "Asignación dentro de una condición",
|
||||
/* 70 */ "Esperando el nombre del proceso o función",
|
||||
/* 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 */
|
||||
|
||||
|
||||
|
@ -145,11 +145,11 @@
|
|||
/* 1 */ "Sobrepasado buffer de nombres de objeto",
|
||||
/* 2 */ "Objeto '%s': El nombre no es nuevo",
|
||||
/* 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'",
|
||||
/* 6 */ "Objeto '%s': Declaración ilegal dentro de struct",
|
||||
/* 7 */ "Objeto '%s': Declaración de un miembro fuera de struct",
|
||||
/* 8 */ "Tamaño ilegal del string '%s'",
|
||||
/* 6 */ "Objeto '%s': Declaración ilegal dentro de struct",
|
||||
/* 7 */ "Objeto '%s': Declaración de un miembro fuera de struct",
|
||||
/* 8 */ "Tamaño ilegal del string '%s'",
|
||||
/* 9 */ "EndStruct sin Struct",
|
||||
/* 10 */ "Una estructura debe contener al menos un elemento" /* SIN COMA */
|
||||
|
||||
|
@ -163,8 +163,8 @@
|
|||
/* 0 */ "",
|
||||
/* 1 */ "Archivo ltlex.def no encontrado",
|
||||
/* 2 */ "Se esperaba un valor hexadecimal (&00..&FF)",
|
||||
/* 3 */ "Demasiados símbolos definidos",
|
||||
/* 4 */ "Símbolo no válido" /* SIN COMA */
|
||||
/* 3 */ "Demasiados símbolos definidos",
|
||||
/* 4 */ "Símbolo no válido" /* SIN COMA */
|
||||
|
||||
|
||||
/*
|
||||
|
@ -179,23 +179,23 @@
|
|||
/* 3 */ "%s [opciones] archivo.prg [ejecutable]\n\n",
|
||||
/* 4 */ "Lista de opciones:\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",
|
||||
/* 8 */ " -t, --table Guarda la tabla de objetos como <programa.tab>\n",
|
||||
/* 9 */ " -c, --check No genera un ejecutable (para comprobar sintaxis, etc.)\n",
|
||||
/* 10 */ " -s, --system Sistema Operativo destino (por defecto %s)\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",
|
||||
/* 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",
|
||||
/* 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",
|
||||
/* 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",
|
||||
/* 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",
|
||||
/* 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",
|
||||
/* 17 */ "edivc: Error al abrir archivo %s.\n",
|
||||
/* 18 */ "edivc: Compilando: %s\n",
|
||||
/* 19 */ "edivc: ERROR: No se encuentra %s\n",
|
||||
/* 20 */ "edivc: ERROR: Formato incorrecto de %s\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",
|
||||
/* 24 */ "edivc: ERROR: Memoria insuficiente\n",
|
||||
/* 25 */ "%s:%d:%d: ERROR %d: ",
|
||||
|
@ -205,14 +205,14 @@
|
|||
/* 29 */ "Error creando archivo de intercambio\n",
|
||||
/* 30 */ "Generando listados...\n",
|
||||
/* 31 */ "Guardando ejecutable...\n",
|
||||
/* 32 */ "Guardando información de depurado...\n",
|
||||
/* 32 */ "Guardando información de depurado...\n",
|
||||
/* 33 */ "Error escribiendo ejecutable\n",
|
||||
/* 34 */ "Compilación finalizada.\n",
|
||||
/* 34 */ "Compilación finalizada.\n",
|
||||
/* 35 */ "%s: ERROR: ",
|
||||
/* 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",
|
||||
/* 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",
|
||||
/* 41 */ "edivc: %s (linea %d) ERROR: %s\n\n",
|
||||
/* 42 */ "edivc: Interrumpido - se han encontrado errores\n",
|
||||
|
@ -220,18 +220,18 @@
|
|||
/* 43 */ "No se encuentra ninguna DLL\n",
|
||||
/* 44 */ "",
|
||||
#else
|
||||
/* 43 */ "No se encuentra ninguna librería\n",
|
||||
/* 43 */ "No se encuentra ninguna librería\n",
|
||||
/* 44 */ "Directorio %s/ no encontrado\n",
|
||||
#endif
|
||||
/* 45 */ "Error al cargar librería %s\n",
|
||||
/* 45 */ "Error al cargar librería %s\n",
|
||||
#ifdef _WIN32
|
||||
/* 46 */ "No puedo cargar %s\n",
|
||||
/* 47 */ "No se encuentra ExportaFuncs en %s - DLL no valida\n",
|
||||
#else
|
||||
/* 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
|
||||
/* 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",
|
||||
/* 50 */ "Error: el fichero recibido no es del tipo esperado\n" /* SIN COMA */
|
||||
|
||||
|
@ -243,102 +243,102 @@
|
|||
#elif TRANSLATE == TRANSLATE_STUB
|
||||
|
||||
/* 0 */ "ERROR %d: ",
|
||||
/* 1 */ "eDIV: Error en ejecución",
|
||||
/* 2 */ "eDIV: Error crítico",
|
||||
/* 1 */ "eDIV: Error en ejecución",
|
||||
/* 2 */ "eDIV: Error crítico",
|
||||
/* 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
|
||||
|
||||
/* 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.",
|
||||
/* 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.",
|
||||
/* 105 */ "No se pudo cargar el fichero, archivo no encontrado.",
|
||||
/* 106 */ "Se intentó cargar un fichero FPG no válido.",
|
||||
/* 107 */ "Número de scroll inválido (debe estar entre 0 y 9).",
|
||||
/* 108 */ "Número de región inválido (fuera de rango).",
|
||||
/* 109 */ "Código de fichero inválido.",
|
||||
/* 110 */ "Código de gráfico inválido.",
|
||||
/* 111 */ "Se intentó usar un fichero FPG antes de cargarlo.",
|
||||
/* 112 */ "Se necesita un código de gráfico para el scroll.",
|
||||
/* 106 */ "Se intentó cargar un fichero FPG no válido.",
|
||||
/* 107 */ "Número de scroll inválido (debe estar entre 0 y 9).",
|
||||
/* 108 */ "Número de región inválido (fuera de rango).",
|
||||
/* 109 */ "Código de fichero inválido.",
|
||||
/* 110 */ "Código de gráfico inválido.",
|
||||
/* 111 */ "Se intentó usar un fichero FPG antes de cargarlo.",
|
||||
/* 112 */ "Se necesita un código de gráfico para el scroll.",
|
||||
/* 113 */ "Se han cargado demasiados fuentes de letras.",
|
||||
/* 114 */ "No se pudo cargar el fuente, archivo no encontrado.",
|
||||
/* 115 */ "Se intentó cargar un archivo de fuente no válido.",
|
||||
/* 116 */ "Código identificador de fuente de letras inválido.",
|
||||
/* 117 */ "Código de centrado de texto inválido.",
|
||||
/* 115 */ "Se intentó cargar un archivo de fuente no válido.",
|
||||
/* 116 */ "Código identificador de fuente de letras inválido.",
|
||||
/* 117 */ "Código de centrado de texto inválido.",
|
||||
/* 118 */ "Hay demasiados textos activos en el programa.",
|
||||
/* 119 */ "Indentificador de texto no válido.",
|
||||
/* 120 */ "Región de pantalla definida incorrectamente.",
|
||||
/* 121 */ "Se intentó utilizar un gráfico que no existe.",
|
||||
/* 122 */ "Se intentó escribir un bloque fuera de la memoria.",
|
||||
/* 119 */ "Indentificador de texto no válido.",
|
||||
/* 120 */ "Región de pantalla definida incorrectamente.",
|
||||
/* 121 */ "Se intentó utilizar un gráfico que no existe.",
|
||||
/* 122 */ "Se intentó escribir un bloque fuera de la memoria.",
|
||||
/* 123 */ "No se pudo abrir el archivo para escritura.",
|
||||
/* 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.",
|
||||
/* 127 */ "No se pudo leer el archivo.",
|
||||
/* 128 */ "No se pudo cargar el efecto de sonido.",
|
||||
/* 129 */ "No se pudo tocar el efecto de sonido solicitado.",
|
||||
/* 130 */ "No se pudo iniciar la animación solicitada.",
|
||||
/* 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.",
|
||||
/* 133 */ "Número de punto de control inválido.",
|
||||
/* 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).",
|
||||
/* 136 */ "Dirección de la tabla de paleta fuera de la memoria.",
|
||||
/* 137 */ "No se pueden comprobar regiones en gráficos de m-7.",
|
||||
/* 138 */ "Código de información gráfica incorrecto.",
|
||||
/* 139 */ "No se pueden comprobar colisiones en gráficos de m-7.",
|
||||
/* 130 */ "No se pudo iniciar la animación solicitada.",
|
||||
/* 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.",
|
||||
/* 133 */ "Número de punto de control inválido.",
|
||||
/* 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).",
|
||||
/* 136 */ "Dirección de la tabla de paleta fuera de la memoria.",
|
||||
/* 137 */ "No se pueden comprobar regiones en gráficos de m-7.",
|
||||
/* 138 */ "Código de información gráfica incorrecto.",
|
||||
/* 139 */ "No se pueden comprobar colisiones en gráficos de m-7.",
|
||||
/* 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.",
|
||||
/* 143 */ "No se pudo cargar el mapa, archivo no encontrado.",
|
||||
/* 144 */ "Se intentó cargar un archivo de mapa inválido.",
|
||||
/* 145 */ "Se ha intentado hacer una división entre cero.",
|
||||
/* 146 */ "El tamaño de la región es incorrecto.",
|
||||
/* 144 */ "Se intentó cargar un archivo de mapa inválido.",
|
||||
/* 145 */ "Se ha intentado hacer una división entre cero.",
|
||||
/* 146 */ "El tamaño de la región es incorrecto.",
|
||||
/* 147 */ "No se pudo cargar FLI/FLC, archivo no encontrado.",
|
||||
/* 148 */ "Valor de timeout incorrecto (debe ser entre 1 y 60).",
|
||||
/* 149 */ "Número de jugadores incorrecto (debe ser entre 2 y 8).",
|
||||
/* 150 */ "Sólo se pueden enviar datos globales.",
|
||||
/* 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).",
|
||||
/* 153 */ "Tamaño de mapa incorrecto (de 1x1 a 32768x32768).",
|
||||
/* 154 */ "Número de color incorrecto (debe ser de 0 a 255).",
|
||||
/* 155 */ "El centro está fuera de los límites del gráfico.",
|
||||
/* 149 */ "Número de jugadores incorrecto (debe ser entre 2 y 8).",
|
||||
/* 150 */ "Sólo se pueden enviar datos globales.",
|
||||
/* 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).",
|
||||
/* 153 */ "Tamaño de mapa incorrecto (de 1x1 a 32768x32768).",
|
||||
/* 154 */ "Número de color incorrecto (debe ser de 0 a 255).",
|
||||
/* 155 */ "El centro está fuera de los límites del gráfico.",
|
||||
/* 156 */ "El objeto se encuentra fuera del mapa y sera eliminado.",
|
||||
/* 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.",
|
||||
/* 160 */ "No se pudo cargar el mundo, archivo no válido.",
|
||||
/* 161 */ "El número de bandera no es válido.",
|
||||
/* 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).",
|
||||
/* 164 */ "La cadena de texto destino no es válida.",
|
||||
/* 165 */ "Se intentó acceder a un puntero nulo.",
|
||||
/* 166 */ "El modo de acceso al archivo no es válido.",
|
||||
/* 167 */ "No se pudo cargar el módulo.",
|
||||
/* 160 */ "No se pudo cargar el mundo, archivo no válido.",
|
||||
/* 161 */ "El número de bandera no es válido.",
|
||||
/* 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).",
|
||||
/* 164 */ "La cadena de texto destino no es válida.",
|
||||
/* 165 */ "Se intentó acceder a un puntero nulo.",
|
||||
/* 166 */ "El modo de acceso al archivo no es válido.",
|
||||
/* 167 */ "No se pudo cargar el módulo.",
|
||||
/* 168 */ "Demasiados errores ignorados.",
|
||||
/* 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.",
|
||||
/* 172 */ "Demasiados objetos gráficos visualizados.",
|
||||
/* 173 */ "Tipo de objeto gráfico no conocido.",
|
||||
/* 172 */ "Demasiados objetos gráficos visualizados.",
|
||||
/* 173 */ "Tipo de objeto gráfico no conocido.",
|
||||
/* 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].",
|
||||
/* 177 */ "Textura de mapa.",
|
||||
/* 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.",
|
||||
/* 181 */ "No se pueden reservar bloques de menos de una posición.",
|
||||
/* 182 */ "Se intentó (des)encriptar un bloque fuera de la memoria.",
|
||||
/* 183 */ "No se puede cargar otra paleta cuando está forzada la actual.",
|
||||
/* 181 */ "No se pueden reservar bloques de menos de una posición.",
|
||||
/* 182 */ "Se intentó (des)encriptar un bloque fuera de la memoria.",
|
||||
/* 183 */ "No se puede cargar otra paleta cuando está forzada la actual.",
|
||||
/* 184 */ "",
|
||||
/* 185 */ "",
|
||||
/* 186 */ "",
|
||||
|
@ -359,21 +359,21 @@
|
|||
|
||||
|
||||
/*
|
||||
* Errores críticos del stub
|
||||
* Errores críticos del stub
|
||||
*/
|
||||
|
||||
#elif TRANSLATE == TRANSLATE_CRITICAL_ERROR
|
||||
|
||||
/* 0 */ "",
|
||||
/* 1 */ "Error leyendo el código del programa",
|
||||
/* 2 */ "Error en el formato de código",
|
||||
/* 1 */ "Error leyendo el código del programa",
|
||||
/* 2 */ "Error en el formato de código",
|
||||
/* 3 */ "Redefinicion del tipo de proceso",
|
||||
/* 4 */ "No se pudo reservar memoria para la pila",
|
||||
/* 5 */ "Librería no encontrada: %s",
|
||||
/* 6 */ "%s no es una librería válida de eDIV",
|
||||
/* 5 */ "Librería no encontrada: %s",
|
||||
/* 6 */ "%s no es una librería válida de eDIV",
|
||||
/* 7 */ "No se pudo inicializar SDL",
|
||||
/* 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 */
|
||||
/* 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 */
|
||||
|
||||
|
||||
#endif
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
|
||||
|
||||
/*
|
||||
* Errores de compilación
|
||||
* Errores de compilación
|
||||
*/
|
||||
|
||||
#if TRANSLATE == TRANSLATE_ERROR
|
||||
|
@ -227,14 +227,14 @@
|
|||
|
||||
/* FIXME: traducir esto */
|
||||
/* 0 */ "ERROR %d: ",
|
||||
/* 1 */ "eDIV: Error en ejecución",
|
||||
/* 2 */ "eDIV: Error crítico",
|
||||
/* 1 */ "eDIV: Error en ejecución",
|
||||
/* 2 */ "eDIV: Error crítico",
|
||||
/* 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
|
||||
|
@ -343,7 +343,7 @@
|
|||
|
||||
|
||||
/*
|
||||
* Errores críticos del stub
|
||||
* Errores críticos del stub
|
||||
*/
|
||||
|
||||
#elif TRANSLATE == TRANSLATE_CRITICAL_ERROR
|
||||
|
@ -356,8 +356,8 @@
|
|||
/* 5 */ "Ezin da liburutegia aurkitu: %s",
|
||||
/* 6 */ "%s ez da eDIV-en liburutegi zuzen bat",
|
||||
/* 7 */ "No se pudo inicializar SDL", // 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
|
||||
/* 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
|
||||
|
||||
|
||||
#endif
|
||||
|
|
|
@ -27,18 +27,18 @@
|
|||
|
||||
|
||||
/*
|
||||
* Errores de compilación
|
||||
* Errores de compilación
|
||||
*/
|
||||
|
||||
#if TRANSLATE == TRANSLATE_ERROR
|
||||
|
||||
/* 0 */ "",
|
||||
/* 1 */ "Si aspettava '*/'",
|
||||
/* 2 */ "Capacità vettore nomi oltrepassata",
|
||||
/* 2 */ "Capacità vettore nomi oltrepassata",
|
||||
/* 3 */ "Si aspettava '\"'",
|
||||
/* 4 */ "Simbolo non riconosciuto",
|
||||
/* 5 */ "Carattere non riconosciuto",
|
||||
/* 6 */ "Capacità tabella oggetti oltrepassata",
|
||||
/* 6 */ "Capacità tabella oggetti oltrepassata",
|
||||
/* 7 */ "Aspettando '='",
|
||||
/* 8 */ "Aspettando un'opzione di compilazione",
|
||||
/* 9 */ "Aspettando ';'",
|
||||
|
@ -48,28 +48,28 @@
|
|||
/* 13 */ "Assegnazione incorretta",
|
||||
/* 14 */ "Impossibile calcolare l'offset del dato",
|
||||
/* 15 */ "Impossibile calcolare l'offset",
|
||||
/* 16 */ "Non è possibile realizzare l'incremento",
|
||||
/* 16 */ "Non è possibile realizzare l'incremento",
|
||||
/* 17 */ "Impossibile accedere a local",
|
||||
/* 18 */ "Aspettando ')'",
|
||||
/* 19 */ "Aspettando ']'",
|
||||
/* 20 */ "Non è un tipo di proceso",
|
||||
/* 20 */ "Non è un tipo di proceso",
|
||||
/* 21 */ "Aspettando il nome di un processo",
|
||||
/* 22 */ "Aspettando '('",
|
||||
/* 23 */ "Aspettando un nome",
|
||||
/* 24 */ "Impossibile calcolare la grandezza",
|
||||
/* 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",
|
||||
/* 28 */ "Dichiarazione incorretta di puntatore a struttura",
|
||||
/* 29 */ "Aspettando il nome della catena",
|
||||
/* 30 */ "Il nome non è nuovo",
|
||||
/* 30 */ "Il nome non è nuovo",
|
||||
/* 31 */ "Catena di testo di lunghezza negativa",
|
||||
/* 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",
|
||||
/* 35 */ "Si aspettava una virgola",
|
||||
/* 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",
|
||||
/* 39 */ "Aspettando un elemento della struttura",
|
||||
/* 40 */ "Tabella di lunghezza negativa",
|
||||
|
@ -84,7 +84,7 @@
|
|||
/* 49 */ "Stringa troppo lunga",
|
||||
/* 50 */ "Valore BYTE fuori rango (0...255)",
|
||||
/* 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",
|
||||
/* 54 */ "Si aspettava un'espressione costante",
|
||||
/* 55 */ "Troppi valori per la struttura",
|
||||
|
@ -94,7 +94,7 @@
|
|||
/* 59 */ "Aspettando una variabile",
|
||||
/* 60 */ "Aspettando TO",
|
||||
/* 61 */ "Sentenza FROM incorretta",
|
||||
/* 62 */ "Il valore STEP non è valido",
|
||||
/* 62 */ "Il valore STEP non è valido",
|
||||
/* 63 */ "Aspettando CASE, DEFAULT o END",
|
||||
/* 64 */ "Aspettando ':'",
|
||||
/* 65 */ "BREAK non appare dentro un bugle",
|
||||
|
@ -126,9 +126,9 @@
|
|||
#elif TRANSLATE == TRANSLATE_DLL_ERROR
|
||||
|
||||
/* 1 */ "Limite buffer nomi oggetto oltrepassato",
|
||||
/* 2 */ "Oggetto '%s': Il nome non è nuovo",
|
||||
/* 2 */ "Oggetto '%s': Il nome non è nuovo",
|
||||
/* 3 */ "Troppi oggetti dichiarati",
|
||||
/* 4 */ "Funzione '%s': Il nome non è nuovo",
|
||||
/* 4 */ "Funzione '%s': Il nome non è nuovo",
|
||||
/* 5 */ "Errore dichiarando oggetto '%s'",
|
||||
/* 6 */ "Oggetto '%s': Dichiarazione illegale dentro struct",
|
||||
/* 7 */ "Oggetto '%s': Dichiarazione di un membro fuori struct",
|
||||
|
@ -157,7 +157,7 @@
|
|||
#elif TRANSLATE == TRANSLATE_COMPILER
|
||||
|
||||
/* 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",
|
||||
/* 3 */ "%s [opzioni] archivio.prg [eseguibile]\n\n",
|
||||
/* 4 */ "Lista opzioni:\n",
|
||||
|
@ -172,7 +172,7 @@
|
|||
/* 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",
|
||||
/* 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",
|
||||
/* 18 */ "edivc: Compilando: %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",
|
||||
#endif
|
||||
/* 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",
|
||||
/* 50 */ "Errore: il file ricevuto non è del tipo atteso\n" /* SIN COMA */
|
||||
/* 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 */
|
||||
|
||||
|
||||
/*
|
||||
|
@ -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
|
||||
|
||||
/* 100 */ "Non hai memoria sufficiente per eseguire il programma.",
|
||||
/* 101 */ "Chiamata a key() con un codice di tasto inesistente.",
|
||||
/* 102 */ "Non è tasto possibile caricare la paletta, archivio non trovato.",
|
||||
/* 103 */ "Si è tentato di caricare un archivio di paletta non valido.",
|
||||
/* 102 */ "Non è tasto possibile caricare la paletta, archivio non trovato.",
|
||||
/* 103 */ "Si è tentato di caricare un archivio di paletta non valido.",
|
||||
/* 104 */ "Troppi file FPG aperti contemporaneamente.",
|
||||
/* 105 */ "Non è stato possibile caricare il file, archivio non trovato.",
|
||||
/* 106 */ "Si è tentato di caricare un file FPG non valido.",
|
||||
/* 105 */ "Non è stato possibile caricare il file, archivio non trovato.",
|
||||
/* 106 */ "Si è tentato di caricare un file FPG non valido.",
|
||||
/* 107 */ "Numero di scroll non valido (deve essere tra 0 e 9).",
|
||||
/* 108 */ "Numero di regione non valido (fuori rango).",
|
||||
/* 109 */ "Codice di file 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.",
|
||||
/* 113 */ "Sono state caricate troppe fonti di lettere.",
|
||||
/* 114 */ "Non è stato possibile caricare la fonte, archivio non trovato.",
|
||||
/* 115 */ "Si è tentato di caricare un archivio di fonte non valido.",
|
||||
/* 114 */ "Non è stato possibile caricare la fonte, archivio non trovato.",
|
||||
/* 115 */ "Si è tentato di caricare un archivio di fonte non valido.",
|
||||
/* 116 */ "Codice identificatore fonte di lettere non valido.",
|
||||
/* 117 */ "Codice di allineamento testo non valido.",
|
||||
/* 118 */ "Hai troppi testi attivi nel programma.",
|
||||
/* 119 */ "Identificatore di testo non valido.",
|
||||
/* 120 */ "Regione di schermo definita incorrettamente.",
|
||||
/* 121 */ "Si è tentato di utilizzare un grafico che non esiste.",
|
||||
/* 122 */ "Si è tentato di scrivere un blocco fuori della memoria.",
|
||||
/* 123 */ "Non è stato possibile aprire l'archivio per la scrittura.",
|
||||
/* 124 */ "Non è stato possibile scrivere l'archivio (vedere spazio nel disco).",
|
||||
/* 125 */ "Si è tentato di leggere un blocco fuori della memoria.",
|
||||
/* 126 */ "Non è stato possibile aprire l'archivio per la lettura.",
|
||||
/* 127 */ "Non è stato possibile leggere l'archivio.",
|
||||
/* 128 */ "Non è stato possibile caricare l'effetto di suono.",
|
||||
/* 129 */ "Non è stato possibile eseguire l'effetto di suono sollecitato.",
|
||||
/* 130 */ "Non è stato possibile iniziare l'animazione sollecitata.",
|
||||
/* 121 */ "Si è tentato di utilizzare un grafico che non esiste.",
|
||||
/* 122 */ "Si è tentato di scrivere un blocco fuori della memoria.",
|
||||
/* 123 */ "Non è stato possibile aprire l'archivio per la scrittura.",
|
||||
/* 124 */ "Non è stato possibile scrivere l'archivio (vedere spazio nel disco).",
|
||||
/* 125 */ "Si è tentato di leggere un blocco fuori della memoria.",
|
||||
/* 126 */ "Non è stato possibile aprire l'archivio per la lettura.",
|
||||
/* 127 */ "Non è stato possibile leggere l'archivio.",
|
||||
/* 128 */ "Non è stato possibile caricare l'effetto di suono.",
|
||||
/* 129 */ "Non è stato possibile eseguire l'effetto di suono sollecitato.",
|
||||
/* 130 */ "Non è stato possibile iniziare l'animazione sollecitata.",
|
||||
/* 131 */ "Numero di mode 7 non valido (deve essere tra 0 e 9).",
|
||||
/* 132 */ "Si necessita un codice di grafico per il mode 7.",
|
||||
/* 133 */ "Numero punto di controllo non valido.",
|
||||
|
@ -279,13 +279,13 @@
|
|||
/* 138 */ "Codice d'informazione grafica incorretto.",
|
||||
/* 139 */ "Non si possono comprovare collisioni in grafici di m-7.",
|
||||
/* 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.",
|
||||
/* 143 */ "Non è stato possibile caricare la mappa, archivio non trovato.",
|
||||
/* 144 */ "Si è tentato di caricare un archivio di mappa non valido.",
|
||||
/* 145 */ "Si è tentato di eseguire una divisione per zero.",
|
||||
/* 146 */ "La grandezza della regione è incorretta.",
|
||||
/* 147 */ "Non è stato possibile caricare FLI/FLC, archivio non trovato.",
|
||||
/* 143 */ "Non è stato possibile caricare la mappa, archivio non trovato.",
|
||||
/* 144 */ "Si è tentato di caricare un archivio di mappa non valido.",
|
||||
/* 145 */ "Si è tentato di eseguire una divisione per zero.",
|
||||
/* 146 */ "La grandezza della regione è incorretta.",
|
||||
/* 147 */ "Non è stato possibile caricare FLI/FLC, archivio non trovato.",
|
||||
/* 148 */ "Valore del timeout incorretto (deve essere tra 1 e 60).",
|
||||
/* 149 */ "Numero di giocatori incorretto (deve essere tra 2 e 8).",
|
||||
/* 150 */ "Si possono inviare solo dati globali.",
|
||||
|
@ -293,19 +293,19 @@
|
|||
/* 152 */ "Mappa di ricerca non valida (da 1x1 a 128x128).",
|
||||
/* 153 */ "Grandezza di mappa incorretta (da 1x1 a 32768x32768).",
|
||||
/* 154 */ "Numero di colore incorretto (deve essere da 0 a 255).",
|
||||
/* 155 */ "Il centro è fuori dai limiti del grafico.",
|
||||
/* 156 */ "L'oggetto si trova fuori dalla mappa è sarà eliminato.",
|
||||
/* 155 */ "Il centro è fuori dai limiti del grafico.",
|
||||
/* 156 */ "L'oggetto si trova fuori dalla mappa è sarà eliminato.",
|
||||
/* 157 */ "Textura della mappa non trovata.",
|
||||
/* 158 */ "La grandezza della textura è incorretta.",
|
||||
/* 159 */ "Non è stato possibile caricare il mondo, archivio non trovato.",
|
||||
/* 160 */ "Non è stato possibile caricare il mondo, archivio non valido.",
|
||||
/* 161 */ "Il numero di bandiera non è valido.",
|
||||
/* 158 */ "La grandezza della textura è incorretta.",
|
||||
/* 159 */ "Non è stato possibile caricare il mondo, archivio non trovato.",
|
||||
/* 160 */ "Non è stato possibile caricare il mondo, archivio non valido.",
|
||||
/* 161 */ "Il numero di bandiera non è valido.",
|
||||
/* 162 */ "Dispositivo non valido (solo 1-IPX,2-SERIAL,3-MODEM).",
|
||||
/* 163 */ "Grandezza di pacchetto non valida (solo da 1 a 199).",
|
||||
/* 164 */ "La catena testo di destinazione non è valida.",
|
||||
/* 165 */ "Si è tentato di accedere ad un puntatore nullo.",
|
||||
/* 166 */ "Il modo di acceso all'archivio non è valido.",
|
||||
/* 167 */ "Non è stato possibile caricare il modulo.",
|
||||
/* 164 */ "La catena testo di destinazione non è valida.",
|
||||
/* 165 */ "Si è tentato di accedere ad un puntatore nullo.",
|
||||
/* 166 */ "Il modo di acceso all'archivio non è valido.",
|
||||
/* 167 */ "Non è stato possibile caricare il modulo.",
|
||||
/* 168 */ "Troppi errori ignorati.",
|
||||
/* 169 */ "Troppi archivi aperti.",
|
||||
/* 170 */ "Identificatore archivio (handle) non valido.",
|
||||
|
@ -319,9 +319,9 @@
|
|||
/* 178 */ "non trovata in file.",
|
||||
/* 179 */ "Sono state realizzate troppe sollecitazioni di memoria dinamica.",
|
||||
/* 180 */ "Il puntatore non corrisponde con nessuno dei blocchi reservati.",
|
||||
/* 181 */ "Non è possibile riservare blocchi minori di una posizione.",
|
||||
/* 182 */ "Si è tentato di (dis)encriptare un blocco fuori della memoria.",
|
||||
/* 183 */ "Non è possibile caricare un'altra paletta quando è forzata l'attuale.",
|
||||
/* 181 */ "Non è possibile riservare blocchi minori di una posizione.",
|
||||
/* 182 */ "Si è tentato di (dis)encriptare un blocco fuori della memoria.",
|
||||
/* 183 */ "Non è possibile caricare un'altra paletta quando è forzata l'attuale.",
|
||||
/* 184 */ "",
|
||||
/* 185 */ "",
|
||||
/* 186 */ "",
|
||||
|
@ -338,11 +338,11 @@
|
|||
/* 197 */ "",
|
||||
/* 198 */ "",
|
||||
/* 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
|
||||
|
@ -351,10 +351,10 @@
|
|||
/* 1 */ "Errore leggendo il codice del programma",
|
||||
/* 2 */ "Errore nel formato di codice",
|
||||
/* 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",
|
||||
/* 6 */ "%s non è una libreria valida di eDIV",
|
||||
/* 7 */ "Non è stato possibile inizializzare SDL",
|
||||
/* 6 */ "%s non è una libreria valida di eDIV",
|
||||
/* 7 */ "Non è stato possibile inizializzare SDL",
|
||||
/* 8 */ "Troppi processi in esecuzione",
|
||||
/* 9 */ "E' richiesta SDL %d.%d.%d\nVersione rilevata nel sistema: %d.%d.%d" /* SIN COMA */
|
||||
|
||||
|
|
|
@ -21,13 +21,13 @@
|
|||
|
||||
/*
|
||||
* ARCHIVO DE IDIOMA DE EDIV
|
||||
* 2 - PORTUGUÉS (pt)
|
||||
* 2 - PORTUGUÉS (pt)
|
||||
* Autor: tareko
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* Errores de compilación
|
||||
* Errores de compilación
|
||||
*/
|
||||
|
||||
#if TRANSLATE == TRANSLATE_ERROR
|
||||
|
@ -36,45 +36,45 @@
|
|||
/* 1 */ "Esperava-se '*/'",
|
||||
/* 2 */ "Capacidade do vector de nomes excedida",
|
||||
/* 3 */ "Esperava-se '\"'",
|
||||
/* 4 */ "Símbolo desconhecido",
|
||||
/* 4 */ "Símbolo desconhecido",
|
||||
/* 5 */ "Caracter desconhecido",
|
||||
/* 6 */ "Capacidade da tabela de objectos excedida",
|
||||
/* 7 */ "Esperando '='",
|
||||
/* 8 */ "Esperando uma opção de compilação",
|
||||
/* 8 */ "Esperando uma opção de compilação",
|
||||
/* 9 */ "Esperando ';'",
|
||||
/* 10 */ "Esperando um operando",
|
||||
/* 11 */ "Expressão incorrecta",
|
||||
/* 12 */ "Asignação a cadeia incorrecta",
|
||||
/* 13 */ "Asignação incorrecta",
|
||||
/* 14 */ "Não se pode calcular o offset do dado",
|
||||
/* 15 */ "Não se pode calcular o offset",
|
||||
/* 16 */ "Não se pode realizar o incremento",
|
||||
/* 17 */ "Local não se pode aceder",
|
||||
/* 11 */ "Expressão incorrecta",
|
||||
/* 12 */ "Asignação a cadeia incorrecta",
|
||||
/* 13 */ "Asignação incorrecta",
|
||||
/* 14 */ "Não se pode calcular o offset do dado",
|
||||
/* 15 */ "Não se pode calcular o offset",
|
||||
/* 16 */ "Não se pode realizar o incremento",
|
||||
/* 17 */ "Local não se pode aceder",
|
||||
/* 18 */ "Esperando ')'",
|
||||
/* 19 */ "Esperando ']'",
|
||||
/* 20 */ "Não é um tipo de processo",
|
||||
/* 20 */ "Não é um tipo de processo",
|
||||
/* 21 */ "Esperando o nome de um processo",
|
||||
/* 22 */ "Esperando '('",
|
||||
/* 23 */ "Esperando um nome",
|
||||
/* 24 */ "Não se pode calcular o tamanho",
|
||||
/* 25 */ "Expressão incorrecta",
|
||||
/* 26 */ "Não se pode receber uma estructura como parametro",
|
||||
/* 24 */ "Não se pode calcular o tamanho",
|
||||
/* 25 */ "Expressão incorrecta",
|
||||
/* 26 */ "Não se pode receber uma estructura como parametro",
|
||||
/* 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",
|
||||
/* 30 */ "O nome não é novo",
|
||||
/* 30 */ "O nome não é novo",
|
||||
/* 31 */ "Cadeia de texto de longitude negativa",
|
||||
/* 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",
|
||||
/* 35 */ "Esperava-se uma virgula",
|
||||
/* 36 */ "Esperava-se outro parametro",
|
||||
/* 37 */ "Não se pode aceder a dados PRIVATE externos",
|
||||
/* 38 */ "Número de parametros incorrecto",
|
||||
/* 37 */ "Não se pode aceder a dados PRIVATE externos",
|
||||
/* 38 */ "Número de parametros incorrecto",
|
||||
/* 39 */ "Esperando um elemento da estructura",
|
||||
/* 40 */ "Tabela de longitude negativa",
|
||||
/* 41 */ "A longitude não coincide con a declaração anterior",
|
||||
/* 42 */ "Não se pode inicializar un parametro",
|
||||
/* 41 */ "A longitude não coincide con a declaração anterior",
|
||||
/* 42 */ "Não se pode inicializar un parametro",
|
||||
/* 43 */ "Estructura de longitude negativa",
|
||||
/* 44 */ "Esperando PROGRAM",
|
||||
/* 45 */ "Esperando o nome do programa",
|
||||
|
@ -84,28 +84,28 @@
|
|||
/* 49 */ "Literal demasiado largo",
|
||||
/* 50 */ "Valor BYTE fora de alcance (0...255)",
|
||||
/* 51 */ "Valor WORD fora de alcance (0...65535)",
|
||||
/* 52 */ "Não se pode duplicar 0 o menos veces",
|
||||
/* 53 */ "Inicialização incorrecta",
|
||||
/* 54 */ "Esperava-se uma expressão constante",
|
||||
/* 52 */ "Não se pode duplicar 0 o menos veces",
|
||||
/* 53 */ "Inicialização incorrecta",
|
||||
/* 54 */ "Esperava-se uma expressão constante",
|
||||
/* 55 */ "Demasiados valores para a estructura",
|
||||
/* 56 */ "Esperando BEGIN",
|
||||
/* 57 */ "Esperando END",
|
||||
/* 58 */ "Esperando UNTIL",
|
||||
/* 59 */ "Esperando uma variable",
|
||||
/* 60 */ "Esperando TO",
|
||||
/* 61 */ "Sentença FROM incorrecta",
|
||||
/* 62 */ "O valor STEP não é válido",
|
||||
/* 61 */ "Sentença FROM incorrecta",
|
||||
/* 62 */ "O valor STEP não é válido",
|
||||
/* 63 */ "Esperando CASE, DEFAULT ou END",
|
||||
/* 64 */ "Esperando ':'",
|
||||
/* 65 */ "BREAK não aparece dentro de um ciclo",
|
||||
/* 66 */ "CONTINUE não aparece dentro de um ciclo",
|
||||
/* 67 */ "Esperava-se uma sentença",
|
||||
/* 68 */ "Expressão sem sentido",
|
||||
/* 69 */ "Asignação dentro de uma condição",
|
||||
/* 70 */ "Esperando o nome do processo ou função",
|
||||
/* 65 */ "BREAK não aparece dentro de um ciclo",
|
||||
/* 66 */ "CONTINUE não aparece dentro de um ciclo",
|
||||
/* 67 */ "Esperava-se uma sentença",
|
||||
/* 68 */ "Expressão sem sentido",
|
||||
/* 69 */ "Asignação dentro de uma condição",
|
||||
/* 70 */ "Esperando o nome do processo ou função",
|
||||
/* 71 */ "Esperando PROCESS ou FUNCTION",
|
||||
/* 72 */ "Parametro não válido",
|
||||
/* 73 */ "ELSEIF não aparece dentro de um bloco IF" /* SIN COMA */
|
||||
/* 72 */ "Parametro não válido",
|
||||
/* 73 */ "ELSEIF não aparece dentro de um bloco IF" /* SIN COMA */
|
||||
|
||||
|
||||
/*
|
||||
|
@ -115,7 +115,7 @@
|
|||
#elif TRANSLATE == TRANSLATE_WARNING
|
||||
|
||||
/* 0 */ "",
|
||||
/* 1 */ "SETUP_PROGRAM: Caracteristica ambígua",
|
||||
/* 1 */ "SETUP_PROGRAM: Caracteristica ambígua",
|
||||
/* 2 */ "IMPORT: Sintaxe antiga, ignorado" /* SIN COMA */
|
||||
|
||||
|
||||
|
@ -126,12 +126,12 @@
|
|||
#elif TRANSLATE == TRANSLATE_DLL_ERROR
|
||||
|
||||
/* 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",
|
||||
/* 4 */ "Função '%s': O nome não é novo",
|
||||
/* 4 */ "Função '%s': O nome não é novo",
|
||||
/* 5 */ "Erro declarando objecto '%s'",
|
||||
/* 6 */ "Objecto '%s': Declaração ilegal dentro de struct",
|
||||
/* 7 */ "Objecto '%s': Declaração de um membro fora de struct",
|
||||
/* 6 */ "Objecto '%s': Declaração ilegal dentro de struct",
|
||||
/* 7 */ "Objecto '%s': Declaração de um membro fora de struct",
|
||||
/* 8 */ "Tamanho ilegal da string '%s'",
|
||||
/* 9 */ "EndStruct sem Struct",
|
||||
/* 10 */ "Uma estructura deve conter ao menos um elemento" /* SIN COMA */
|
||||
|
@ -144,10 +144,10 @@
|
|||
#elif TRANSLATE == TRANSLATE_LTLEX_ERROR
|
||||
|
||||
/* 0 */ "",
|
||||
/* 1 */ "Arquivo ltlex.def não encontrado",
|
||||
/* 1 */ "Arquivo ltlex.def não encontrado",
|
||||
/* 2 */ "Esperava-se um valor hexadecimal (&00..&FF)",
|
||||
/* 3 */ "Demasiados símbolos definidos",
|
||||
/* 4 */ "Símbolo inválido" /* SIN COMA */
|
||||
/* 3 */ "Demasiados símbolos definidos",
|
||||
/* 4 */ "Símbolo inválido" /* SIN COMA */
|
||||
|
||||
|
||||
/*
|
||||
|
@ -157,30 +157,30 @@
|
|||
#elif TRANSLATE == TRANSLATE_COMPILER
|
||||
|
||||
/* 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",
|
||||
/* 2 */ "Ajuda de opções de comando:\n\n",
|
||||
/* 3 */ "%s [opções] arquivo.prg [executavel]\n\n",
|
||||
/* 4 */ "Lista de opções:\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",
|
||||
/* 3 */ "%s [opções] arquivo.prg [executavel]\n\n",
|
||||
/* 4 */ "Lista de opções:\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",
|
||||
/* 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",
|
||||
/* 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",
|
||||
/* 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",
|
||||
/* 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",
|
||||
/* 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",
|
||||
/* 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",
|
||||
/* 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",
|
||||
/* 17 */ "edivc: Erro ao abrir arquivo %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",
|
||||
/* 21 */ "edivc: Interrompido (%d advertencias)\n",
|
||||
/* 22 */ "edivc: Finalizado con exito (%d advertencias)\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: ",
|
||||
/* 26 */ "%s:%d: Advertencia: ",
|
||||
/* 27 */ "Precompilando...\n",
|
||||
|
@ -188,35 +188,35 @@
|
|||
/* 29 */ "Erro ao criar arquivo de intercambio\n",
|
||||
/* 30 */ "Generando listados...\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",
|
||||
/* 34 */ "Compilação finalizada.\n",
|
||||
/* 34 */ "Compilação finalizada.\n",
|
||||
/* 35 */ "%s: ERRO: ",
|
||||
/* 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",
|
||||
/* 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",
|
||||
/* 41 */ "edivc: %s (linha %d) ERRO: %s\n\n",
|
||||
/* 42 */ "edivc: Interrompido - encontraram-se erros\n",
|
||||
#ifdef _WIN32
|
||||
/* 43 */ "Não se encontra nenhuma DLL\n",
|
||||
/* 43 */ "Não se encontra nenhuma DLL\n",
|
||||
/* 44 */ "",
|
||||
#else
|
||||
/* 43 */ "Não se encontra nenhuma biblioteca\n",
|
||||
/* 44 */ "Directorio %s/ não foi encontrado\n",
|
||||
/* 43 */ "Não se encontra nenhuma biblioteca\n",
|
||||
/* 44 */ "Directorio %s/ não foi encontrado\n",
|
||||
#endif
|
||||
/* 45 */ "Erro ao carregar biblioteca %s\n",
|
||||
#ifdef _WIN32
|
||||
/* 46 */ "Não podo carregar %s\n",
|
||||
/* 47 */ "Não se encontra ExportaFuncs em %s - DLL invalida\n",
|
||||
/* 46 */ "Não podo carregar %s\n",
|
||||
/* 47 */ "Não se encontra ExportaFuncs em %s - DLL invalida\n",
|
||||
#else
|
||||
/* 46 */ "Não se pode carregar %s (%s)\n",
|
||||
/* 47 */ "Não se encontra ExportaFuncs em %s - Biblioteca invalida (%s)\n",
|
||||
/* 46 */ "Não se pode carregar %s (%s)\n",
|
||||
/* 47 */ "Não se encontra ExportaFuncs em %s - Biblioteca invalida (%s)\n",
|
||||
#endif
|
||||
|
||||
/* 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",
|
||||
/* 50 */ "Error: el fichero recibido no es del tipo esperado\n" /* SIN COMA */
|
||||
|
||||
|
@ -229,103 +229,103 @@
|
|||
|
||||
/* FIXME: traducir esto */
|
||||
/* 0 */ "ERROR %d: ",
|
||||
/* 1 */ "eDIV: Error en ejecución",
|
||||
/* 2 */ "eDIV: Error crítico",
|
||||
/* 1 */ "eDIV: Error en ejecución",
|
||||
/* 2 */ "eDIV: Error crítico",
|
||||
/* 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
|
||||
|
||||
/* FIXME: traducir esto */
|
||||
/* 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.",
|
||||
/* 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.",
|
||||
/* 105 */ "No se pudo cargar el fichero, archivo no encontrado.",
|
||||
/* 106 */ "Se intentó cargar un fichero FPG no válido.",
|
||||
/* 107 */ "Número de scroll inválido (debe estar entre 0 y 9).",
|
||||
/* 108 */ "Número de región inválido (fuera de rango).",
|
||||
/* 109 */ "Código de fichero inválido.",
|
||||
/* 110 */ "Código de gráfico inválido.",
|
||||
/* 111 */ "Se intentó usar un fichero FPG antes de cargarlo.",
|
||||
/* 112 */ "Se necesita un código de gráfico para el scroll.",
|
||||
/* 106 */ "Se intentó cargar un fichero FPG no válido.",
|
||||
/* 107 */ "Número de scroll inválido (debe estar entre 0 y 9).",
|
||||
/* 108 */ "Número de región inválido (fuera de rango).",
|
||||
/* 109 */ "Código de fichero inválido.",
|
||||
/* 110 */ "Código de gráfico inválido.",
|
||||
/* 111 */ "Se intentó usar un fichero FPG antes de cargarlo.",
|
||||
/* 112 */ "Se necesita un código de gráfico para el scroll.",
|
||||
/* 113 */ "Se han cargado demasiados fuentes de letras.",
|
||||
/* 114 */ "No se pudo cargar el fuente, archivo no encontrado.",
|
||||
/* 115 */ "Se intentó cargar un archivo de fuente no válido.",
|
||||
/* 116 */ "Código identificador de fuente de letras inválido.",
|
||||
/* 117 */ "Código de centrado de texto inválido.",
|
||||
/* 115 */ "Se intentó cargar un archivo de fuente no válido.",
|
||||
/* 116 */ "Código identificador de fuente de letras inválido.",
|
||||
/* 117 */ "Código de centrado de texto inválido.",
|
||||
/* 118 */ "Hay demasiados textos activos en el programa.",
|
||||
/* 119 */ "Indentificador de texto no válido.",
|
||||
/* 120 */ "Región de pantalla definida incorrectamente.",
|
||||
/* 121 */ "Se intentó utilizar un gráfico que no existe.",
|
||||
/* 122 */ "Se intentó escribir un bloque fuera de la memoria.",
|
||||
/* 119 */ "Indentificador de texto no válido.",
|
||||
/* 120 */ "Región de pantalla definida incorrectamente.",
|
||||
/* 121 */ "Se intentó utilizar un gráfico que no existe.",
|
||||
/* 122 */ "Se intentó escribir un bloque fuera de la memoria.",
|
||||
/* 123 */ "No se pudo abrir el archivo para escritura.",
|
||||
/* 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.",
|
||||
/* 127 */ "No se pudo leer el archivo.",
|
||||
/* 128 */ "No se pudo cargar el efecto de sonido.",
|
||||
/* 129 */ "No se pudo tocar el efecto de sonido solicitado.",
|
||||
/* 130 */ "No se pudo iniciar la animación solicitada.",
|
||||
/* 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.",
|
||||
/* 133 */ "Número de punto de control inválido.",
|
||||
/* 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).",
|
||||
/* 136 */ "Dirección de la tabla de paleta fuera de la memoria.",
|
||||
/* 137 */ "No se pueden comprobar regiones en gráficos de m-7.",
|
||||
/* 138 */ "Código de información gráfica incorrecto.",
|
||||
/* 139 */ "No se pueden comprobar colisiones en gráficos de m-7.",
|
||||
/* 130 */ "No se pudo iniciar la animación solicitada.",
|
||||
/* 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.",
|
||||
/* 133 */ "Número de punto de control inválido.",
|
||||
/* 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).",
|
||||
/* 136 */ "Dirección de la tabla de paleta fuera de la memoria.",
|
||||
/* 137 */ "No se pueden comprobar regiones en gráficos de m-7.",
|
||||
/* 138 */ "Código de información gráfica incorrecto.",
|
||||
/* 139 */ "No se pueden comprobar colisiones en gráficos de m-7.",
|
||||
/* 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.",
|
||||
/* 143 */ "No se pudo cargar el mapa, archivo no encontrado.",
|
||||
/* 144 */ "Se intentó cargar un archivo de mapa inválido.",
|
||||
/* 145 */ "Se ha intentado hacer una división entre cero.",
|
||||
/* 146 */ "El tamaño de la región es incorrecto.",
|
||||
/* 144 */ "Se intentó cargar un archivo de mapa inválido.",
|
||||
/* 145 */ "Se ha intentado hacer una división entre cero.",
|
||||
/* 146 */ "El tamaño de la región es incorrecto.",
|
||||
/* 147 */ "No se pudo cargar FLI/FLC, archivo no encontrado.",
|
||||
/* 148 */ "Valor de timeout incorrecto (debe ser entre 1 y 60).",
|
||||
/* 149 */ "Número de jugadores incorrecto (debe ser entre 2 y 8).",
|
||||
/* 150 */ "Sólo se pueden enviar datos globales.",
|
||||
/* 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).",
|
||||
/* 153 */ "Tamaño de mapa incorrecto (de 1x1 a 32768x32768).",
|
||||
/* 154 */ "Número de color incorrecto (debe ser de 0 a 255).",
|
||||
/* 155 */ "El centro está fuera de los límites del gráfico.",
|
||||
/* 149 */ "Número de jugadores incorrecto (debe ser entre 2 y 8).",
|
||||
/* 150 */ "Sólo se pueden enviar datos globales.",
|
||||
/* 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).",
|
||||
/* 153 */ "Tamaño de mapa incorrecto (de 1x1 a 32768x32768).",
|
||||
/* 154 */ "Número de color incorrecto (debe ser de 0 a 255).",
|
||||
/* 155 */ "El centro está fuera de los límites del gráfico.",
|
||||
/* 156 */ "El objeto se encuentra fuera del mapa y sera eliminado.",
|
||||
/* 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.",
|
||||
/* 160 */ "No se pudo cargar el mundo, archivo no válido.",
|
||||
/* 161 */ "El número de bandera no es válido.",
|
||||
/* 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).",
|
||||
/* 164 */ "La cadena de texto destino no es válida.",
|
||||
/* 165 */ "Se intentó acceder a un puntero nulo.",
|
||||
/* 166 */ "El modo de acceso al archivo no es válido.",
|
||||
/* 167 */ "No se pudo cargar el módulo.",
|
||||
/* 160 */ "No se pudo cargar el mundo, archivo no válido.",
|
||||
/* 161 */ "El número de bandera no es válido.",
|
||||
/* 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).",
|
||||
/* 164 */ "La cadena de texto destino no es válida.",
|
||||
/* 165 */ "Se intentó acceder a un puntero nulo.",
|
||||
/* 166 */ "El modo de acceso al archivo no es válido.",
|
||||
/* 167 */ "No se pudo cargar el módulo.",
|
||||
/* 168 */ "Demasiados errores ignorados.",
|
||||
/* 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.",
|
||||
/* 172 */ "Demasiados objetos gráficos visualizados.",
|
||||
/* 173 */ "Tipo de objeto gráfico no conocido.",
|
||||
/* 172 */ "Demasiados objetos gráficos visualizados.",
|
||||
/* 173 */ "Tipo de objeto gráfico no conocido.",
|
||||
/* 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].",
|
||||
/* 177 */ "Textura de mapa.",
|
||||
/* 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.",
|
||||
/* 181 */ "No se pueden reservar bloques de menos de una posición.",
|
||||
/* 182 */ "Se intentó (des)encriptar un bloque fuera de la memoria.",
|
||||
/* 183 */ "No se puede cargar otra paleta cuando está forzada la actual.",
|
||||
/* 181 */ "No se pueden reservar bloques de menos de una posición.",
|
||||
/* 182 */ "Se intentó (des)encriptar un bloque fuera de la memoria.",
|
||||
/* 183 */ "No se puede cargar otra paleta cuando está forzada la actual.",
|
||||
/* 184 */ "",
|
||||
/* 185 */ "",
|
||||
/* 186 */ "",
|
||||
|
@ -346,22 +346,22 @@
|
|||
|
||||
|
||||
/*
|
||||
* Errores críticos del stub
|
||||
* Errores críticos del stub
|
||||
*/
|
||||
|
||||
#elif TRANSLATE == TRANSLATE_CRITICAL_ERROR
|
||||
|
||||
/* FIXME: traducir esto */
|
||||
/* 0 */ "",
|
||||
/* 1 */ "Error leyendo el código del programa",
|
||||
/* 2 */ "Error en el formato de código",
|
||||
/* 1 */ "Error leyendo el código del programa",
|
||||
/* 2 */ "Error en el formato de código",
|
||||
/* 3 */ "Redefinicion del tipo de proceso",
|
||||
/* 4 */ "No se pudo reservar memoria para la pila",
|
||||
/* 5 */ "Librería no encontrada: %s",
|
||||
/* 6 */ "%s no es una librería válida de eDIV",
|
||||
/* 5 */ "Librería no encontrada: %s",
|
||||
/* 6 */ "%s no es una librería válida de eDIV",
|
||||
/* 7 */ "No se pudo inicializar SDL",
|
||||
/* 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 */
|
||||
/* 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 */
|
||||
|
||||
|
||||
#endif
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
|
||||
/*
|
||||
* 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)
|
||||
*/
|
||||
|
||||
|
|
|
@ -62,7 +62,7 @@ int carga_dll(char* nombre)
|
|||
printf("intento 2: %s\n",resolved_path);
|
||||
if(resolved_path) hDLL=LoadLibraryEx(resolved_path,NULL,LOAD_WITH_ALTERED_SEARCH_PATH);
|
||||
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
|
||||
|
@ -115,7 +115,7 @@ int carga_dll(char* nombre)
|
|||
strcat(fichdll,".so");
|
||||
hDLL=dlopen(fichdll2,RTLD_NOW);
|
||||
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
|
||||
|
|
|
@ -44,13 +44,13 @@ struct objeto * ob2;*/
|
|||
|
||||
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
|
||||
int nregs;
|
||||
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
|
||||
|
||||
/*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, ...)
|
||||
{
|
||||
|
@ -185,7 +185,7 @@ int EDIV_Export_Const(char* cadena, int valor)
|
|||
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);
|
||||
|
||||
|
|
|
@ -18,18 +18,18 @@
|
|||
* 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
|
||||
* 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
|
||||
* 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
|
||||
* 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
|
||||
* 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
|
||||
* 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
|
||||
* 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
|
||||
* (la librería a usar debe ser linkada de forma estática)
|
||||
* (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)
|
||||
*/
|
||||
|
||||
#ifdef _WIN32
|
||||
|
@ -44,9 +44,9 @@
|
|||
|
||||
/* Error ( numero, parametros [...] )
|
||||
*
|
||||
* 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á
|
||||
* invocar al trazador (llamando a la función adecuada, que aún no está hecha, en debug.dll)
|
||||
* 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á
|
||||
* 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
|
||||
* la compatibilidad con el ignore_error... 100% compatible, recordad.. :P
|
||||
*/
|
||||
|
@ -81,7 +81,7 @@ void error(int num, ...)
|
|||
/* critical_error ( numero, parametros [...] )
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
|
@ -107,16 +107,16 @@ void critical_error(int num, ...)
|
|||
/* custom_error (tipo, mensaje)
|
||||
*
|
||||
* 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
|
||||
* un error crítico (que debe interrumpir la ejecución del programa) o un error
|
||||
* 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
|
||||
* 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
|
||||
* ignore_error (no tienen un código asociado), aunque sí se ven afectados por
|
||||
* ignore_error (no tienen un código asociado), aunque sí se ven afectados por
|
||||
* compiler_options _ignore_errors.
|
||||
* 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
|
||||
* 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
|
||||
* 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)
|
||||
|
|
|
@ -56,8 +56,8 @@ int ini_interprete()
|
|||
|
||||
// Posicion de inicio del code
|
||||
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_pub_len=mem[6]; // Longitud de las variables locales p£blicas
|
||||
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
|
||||
inicio_privadas=iloc_pub_len;
|
||||
imem=mem[1]; // Principio del codigo
|
||||
/*
|
||||
|
@ -274,12 +274,12 @@ int proceso( int num, int padre )
|
|||
sp--;
|
||||
break;
|
||||
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] ;
|
||||
sp--;
|
||||
break;
|
||||
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] ;
|
||||
sp--;
|
||||
break;
|
||||
|
@ -360,11 +360,11 @@ int proceso( int num, int padre )
|
|||
break;
|
||||
case ltyp://32
|
||||
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;
|
||||
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);
|
||||
reserved("process_id",procs_s[num_proc].id)=procs_s[num_proc].id;
|
||||
if(padre!=-1) {
|
||||
|
@ -413,14 +413,14 @@ int proceso( int num, int padre )
|
|||
case lipt://38
|
||||
pila[sp] = ++mem[ pila[sp] ] ;
|
||||
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] ]++;
|
||||
pila[sp] = mem[ pila[sp] ]-1 ;
|
||||
break ;
|
||||
case ldpt://40
|
||||
pila[sp] = --mem[ pila[sp] ] ;
|
||||
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] ]--;
|
||||
pila[sp] = mem[ pila[sp] ]+1 ;
|
||||
break ;
|
||||
|
@ -846,14 +846,14 @@ int proceso( int num, int padre )
|
|||
nstring=((nstring+1)&3);
|
||||
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]]);
|
||||
if (oo<1028) {
|
||||
strcpy((char*)&mem[nullstring[nstring]],(char*)&mem[pila[sp-1]]);
|
||||
if (pila[sp]>0) { /* Quitar caracteres */
|
||||
if (pila[sp]>=oo) memb[nullstring[nstring]*4]=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 */
|
||||
if (pila[sp]>1025) pila[sp]=1025;
|
||||
for (;oo<pila[sp];oo++) {
|
||||
|
@ -865,7 +865,7 @@ int proceso( int num, int padre )
|
|||
nstring=((nstring+1)&3);
|
||||
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]]);
|
||||
/* #ifdef DEBUG
|
||||
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]>=oo) memb[pila[sp-1]*4]=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 */
|
||||
for (;oo<pila[sp];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]++;
|
||||
break;
|
||||
|
||||
/* Comprobación de punteros nulos */
|
||||
/* Comprobación de punteros nulos */
|
||||
case lnul:
|
||||
/* #ifdef DEBUG
|
||||
if (!pila[sp]) {
|
||||
|
@ -1068,18 +1068,18 @@ int proceso( int num, int padre )
|
|||
|
||||
/*
|
||||
* 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).
|
||||
*
|
||||
* Retorna:
|
||||
* ((El índice en lin[])-1)/4 <- sentiende no?
|
||||
* ((El índice en lin[])-1)/4 <- sentiende no?
|
||||
*/
|
||||
|
||||
int localiza_lin(int ip)
|
||||
{
|
||||
lin_item* last;
|
||||
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 */
|
||||
last=(lin_item*)(&lin[last_lin*4]);
|
||||
if(last->inicio<=ip && last->fin>=ip) {
|
||||
|
@ -1087,8 +1087,8 @@ int localiza_lin(int ip)
|
|||
return last_lin;
|
||||
}
|
||||
|
||||
/* 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
|
||||
/* 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
|
||||
anterior */
|
||||
for(i=last_lin;i<lin[0];i++) {
|
||||
if(lin[i*4+1]<=ip && lin[i*4+2]>=ip)
|
||||
|
@ -1101,7 +1101,7 @@ int localiza_lin(int ip)
|
|||
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
|
||||
printf("PANIC! No se en que parte del PRG estoy! imem=%d, last_lin=%d\n",ip,last_lin);
|
||||
#endif
|
||||
|
|
|
@ -33,46 +33,46 @@
|
|||
#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 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 land 5 // And lógico, operador sobre condiciones
|
||||
#define ligu 6 // Igual, operador logico de comparación
|
||||
#define land 5 // And lógico, operador sobre condiciones
|
||||
#define ligu 6 // Igual, operador logico de comparación
|
||||
#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 lmei 10 // Menor o igual
|
||||
#define lmai 11 // Mayor o igual
|
||||
#define ladd 12 // Suma dos constantes
|
||||
#define lsub 13 // Resta, operación binaria
|
||||
#define lmul 14 // Multiplicación
|
||||
#define ldiv 15 // División de enteros
|
||||
#define lmod 16 // Módulo, resto de la división
|
||||
#define lneg 17 // Negación, cambia de signo una constante
|
||||
#define lsub 13 // Resta, operación binaria
|
||||
#define lmul 14 // Multiplicación
|
||||
#define ldiv 15 // División de enteros
|
||||
#define lmod 16 // Módulo, resto de la división
|
||||
#define lneg 17 // Negación, cambia de signo una constante
|
||||
#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 lcid 21 // Carga id en la pila
|
||||
#define lrng 22 // rango Realiza una comparación de rango
|
||||
#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 lfun 25 /* código Llamada a un proceso interno, ej. signal() (obsoleto, ver lext) */
|
||||
#define lrng 22 // rango Realiza una comparación de rango
|
||||
#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 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 lret 27 // Auto-eliminación del proceso
|
||||
#define lret 27 // Auto-eliminación del proceso
|
||||
#define lasp 28 // Desecha un valor apilado
|
||||
#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 lcpa 31 // Saca offset, lee parámetro [offset] y bp++
|
||||
#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 lcpa 31 // Saca offset, lee parámetro [offset] y bp++
|
||||
#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 lcse 34 // offset Si switch <> expresión, salta al offset
|
||||
#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 lcsr 35 // offset Si switch no esta en el rango, salta al offset
|
||||
#define lshr 36 // Rotacion a la derecha (modo C, >>)
|
||||
#define lshl 37 // Rotacion a la izquierda (modo C, <<)
|
||||
|
@ -80,26 +80,26 @@
|
|||
#define lpti 39 // Pointer e incremento
|
||||
#define ldpt 40 // Decremento y pointer
|
||||
#define lptd 41 // Pointer y decremento
|
||||
#define lada 42 // Add-asignación
|
||||
#define lsua 43 // Sub-asignación
|
||||
#define lmua 44 // Mul-asignación
|
||||
#define ldia 45 // Div-asignación
|
||||
#define lmoa 46 // Mod-asignación
|
||||
#define lana 47 // And-asignación
|
||||
#define lora 48 // Or-asignación
|
||||
#define lxoa 49 // Xor-asignación
|
||||
#define lsra 50 // Shr-asignación
|
||||
#define lsla 51 // Shl-asignación
|
||||
#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 lada 42 // Add-asignación
|
||||
#define lsua 43 // Sub-asignación
|
||||
#define lmua 44 // Mul-asignación
|
||||
#define ldia 45 // Div-asignación
|
||||
#define lmoa 46 // Mod-asignación
|
||||
#define lana 47 // And-asignación
|
||||
#define lora 48 // Or-asignación
|
||||
#define lxoa 49 // Xor-asignación
|
||||
#define lsra 50 // Shr-asignación
|
||||
#define lsla 51 // Shl-asignación
|
||||
#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 lclo 54 // offset Crea un clon del proceso actual
|
||||
#define lfrf 55 // Pseudo-Frame (frame a un porcentaje, frame(100)==frame)
|
||||
#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 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 lcar3 61 /* car + car + car */
|
||||
|
@ -120,7 +120,7 @@
|
|||
#define lcarsub 76 /* car + sub */
|
||||
#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 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 ldptchr 82 // Decremento y pointer
|
||||
#define lptdchr 83 // Pointer y decremento
|
||||
#define ladachr 84 // Add-asignación
|
||||
#define lsuachr 85 // Sub-asignación
|
||||
#define lmuachr 86 // Mul-asignación
|
||||
#define ldiachr 87 // Div-asignación
|
||||
#define lmoachr 88 // Mod-asignación
|
||||
#define lanachr 89 // And-asignación
|
||||
#define lorachr 90 // Or-asignación
|
||||
#define lxoachr 91 // Xor-asignación
|
||||
#define lsrachr 92 // Shr-asignación
|
||||
#define lslachr 93 // Shl-asignación
|
||||
#define lcpachr 94 // Saca offset, lee parámetro [offset] y bp++
|
||||
#define ladachr 84 // Add-asignación
|
||||
#define lsuachr 85 // Sub-asignación
|
||||
#define lmuachr 86 // Mul-asignación
|
||||
#define ldiachr 87 // Div-asignación
|
||||
#define lmoachr 88 // Mod-asignación
|
||||
#define lanachr 89 // And-asignación
|
||||
#define lorachr 90 // Or-asignación
|
||||
#define lxoachr 91 // Xor-asignación
|
||||
#define lsrachr 92 // Shr-asignación
|
||||
#define lslachr 93 // Shl-asignación
|
||||
#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 lstrfix 96 // Amplia una cadena antes de meter un char en ella
|
||||
#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 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 lstrlen 101 // Sustituye una cadena por su longitud
|
||||
#define lstrigu 102 // Comparacion de igualdad de dos cadenas
|
||||
|
@ -155,9 +155,9 @@
|
|||
#define lstrmen 105 // Cadena menor
|
||||
#define lstrmei 106 // Cadena mayor 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 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 ldptwor 113 // Decremento y pointer
|
||||
#define lptdwor 114 // Pointer y decremento
|
||||
#define ladawor 115 // Add-asignación
|
||||
#define lsuawor 116 // Sub-asignación
|
||||
#define lmuawor 117 // Mul-asignación
|
||||
#define ldiawor 118 // Div-asignación
|
||||
#define lmoawor 119 // Mod-asignación
|
||||
#define lanawor 120 // And-asignación
|
||||
#define lorawor 121 // Or-asignación
|
||||
#define lxoawor 122 // Xor-asignación
|
||||
#define lsrawor 123 // Shr-asignación
|
||||
#define lslawor 124 // Shl-asignación
|
||||
#define lcpawor 125 // Saca offset, lee parámetro [offset] y bp++
|
||||
#define ladawor 115 // Add-asignación
|
||||
#define lsuawor 116 // Sub-asignación
|
||||
#define lmuawor 117 // Mul-asignación
|
||||
#define ldiawor 118 // Div-asignación
|
||||
#define lmoawor 119 // Mod-asignación
|
||||
#define lanawor 120 // And-asignación
|
||||
#define lorawor 121 // Or-asignación
|
||||
#define lxoawor 122 // Xor-asignación
|
||||
#define lsrawor 123 // Shr-asignación
|
||||
#define lslawor 124 // Shl-asignación
|
||||
#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
|
||||
|
||||
/* Instrucciones añadidas en eDIV */
|
||||
/* Instrucciones añadidas en eDIV */
|
||||
#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 _IdScan 1 //Recorrido del resto de los procesos (p.ej.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 _NumPar 5 //N£mero de par metros del proceso
|
||||
#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 _NumPar 5 //N£mero de par metros del proceso
|
||||
#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 _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
|
||||
|
||||
// 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 _x0 14 //Caja ocupada por el sprite cada
|
||||
#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 _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 _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 _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 _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 _Z 28 //Coordenada z (Prioridad para la impresi¢n)
|
||||
#define _Graph 29 //C¢digo del gr fico (se corresponde con los ficheros)
|
||||
#define _Z 28 //Coordenada z (Prioridad para la impresi¢n)
|
||||
#define _Graph 29 //C¢digo del gr fico (se corresponde con los ficheros)
|
||||
#define _Flags 30 //Define espejados horizontales y verticales
|
||||
#define _Size 31 //Tama¤o (%) del gr fico
|
||||
#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 _File 34 //FPG que contiene los gr ficos del proceso
|
||||
#define _XGraph 35 //Puntero a tabla: n§graficos,graf_angulo_0,...
|
||||
#define _Size 31 //Tama€o (%) del gr fico
|
||||
#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 _File 34 //FPG que contiene los gr ficos del proceso
|
||||
#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 _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 _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 _Radius 39 //Radio del objeto en m8
|
||||
#define _M8_Wall 40 //Pared con la que colisiona
|
||||
#define _M8_Sector 41 //Sector en el que esta
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
*/
|
||||
|
||||
|
||||
/**** ¡¡¡ OJO CON LAS COMAS !!! ****/
|
||||
/**** ¡¡¡ OJO CON LAS COMAS !!! ****/
|
||||
|
||||
|
||||
#ifdef _WIN32
|
||||
|
@ -37,11 +37,11 @@ int detecta_idioma_iso(char* lang)
|
|||
{
|
||||
int i;
|
||||
static char getid[NUM_LANGUAGES][3] = {
|
||||
"es", // español
|
||||
"es", // español
|
||||
"it", // italiano
|
||||
"pt", // portugués
|
||||
"en", // inglés
|
||||
"ca", // catalán
|
||||
"pt", // portugués
|
||||
"en", // inglés
|
||||
"ca", // catalán
|
||||
"eu" // euskera
|
||||
};
|
||||
if(lang==NULL) return DEFAULT_LANGUAGE;
|
||||
|
@ -61,11 +61,11 @@ int detecta_idioma()
|
|||
#ifdef _WIN32
|
||||
int i;
|
||||
static int getid[NUM_LANGUAGES] = {
|
||||
0x0a, // español
|
||||
0x0a, // español
|
||||
0x10, // italiano
|
||||
0x16, // portugués
|
||||
0x09, // inglés
|
||||
0x03, // catalán
|
||||
0x16, // portugués
|
||||
0x09, // inglés
|
||||
0x03, // catalán
|
||||
0x2d // euskera
|
||||
};
|
||||
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
|
||||
* aprovechadlos para añadir nuevos errores.
|
||||
* NOTA: los huecos vacíos (184..199) son de errores no usados en DIV2, por favor
|
||||
* aprovechadlos para añadir nuevos errores.
|
||||
*/
|
||||
|
||||
char* translate_runtime_error(int num)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Fenix - Compilador/intérprete de videojuegos
|
||||
* Copyright (C) 1999 José Luis Cebrián Pagüe
|
||||
/* Fenix - Compilador/intérprete de videojuegos
|
||||
* Copyright (C) 1999 José Luis Cebrián Pagüe
|
||||
*
|
||||
* Adaptado a eDiv por Sion Entertainment
|
||||
*
|
||||
|
@ -23,7 +23,7 @@
|
|||
#include "main.h"
|
||||
#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;
|
||||
|
||||
|
@ -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
|
||||
};
|
||||
|
||||
/* 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] =
|
||||
{
|
||||
|
@ -87,7 +87,7 @@ void set_c_lower (const byte * from, const byte * to)
|
|||
void inicializa_lower()
|
||||
{
|
||||
|
||||
/* ¡Esto hay que revisarlo bastante!
|
||||
/* ¡Esto hay que revisarlo bastante!
|
||||
*/
|
||||
|
||||
memset (lower, 0, 256); // es necesario
|
||||
|
@ -98,16 +98,16 @@ void inicializa_lower()
|
|||
"abcdefghijklmnopqrstuvwxyz");
|
||||
|
||||
#ifdef RESPETAR_ACENTOS
|
||||
set_c_lower ("ÁÉÍÓÚÑÇÀÈÌÒÙÄËÏÖÜÝÂÊÎÔÛÆÃÅÕ",
|
||||
"áéíóúñçàèìòùäëïöüýâêîôûæãåõ");
|
||||
set_c_lower("áéíóúñçàèìòùäëïöüýâêîôûæãåõ",
|
||||
"áéíóúñçàèìòùäëïöüýâêîôûæãåõ");
|
||||
set_c_lower ("ÁÉÍÓÚÑÇÀÈÌÒÙÄËÏÖÜÝÂÊÎÔÛÆÃÅÕ",
|
||||
"áéíóúñçàèìòùäëïöüýâêîôûæãåõ");
|
||||
set_c_lower("áéíóúñçàèìòùäëïöüýâêîôûæãåõ",
|
||||
"áéíóúñçàèìòùäëïöüýâêîôûæãåõ");
|
||||
#else
|
||||
set_c_lower ("ÁÉÍÓÚÑÇÀÈÌÒÙÄËÏÖÜÝÂÊÎÔÛÆÃÅÕ",
|
||||
"aeiouncaeiouaeiouyaeiouæaao");
|
||||
set_c_lower ("áéíóúñÑçÇàèìòùäëïöüýâêîôûæãåõÁÉÍÓÚ",
|
||||
"aeiounnccaeiouaeiouyaeiouÆaaoaeiou");
|
||||
set_c_lower ("ÁÉÍÓÚÑÇÀÈÌÒÙÄËÏÖÜÝÂÊÎÔÛÆÃÅÕ",
|
||||
"aeiouncaeiouaeiouyaeiouæaao");
|
||||
set_c_lower ("áéíóúñÑçÇàèìòùäëïöüýâêîôûæãåõÁÉÍÓÚ",
|
||||
"aeiounnccaeiouaeiouyaeiouÆaaoaeiou");
|
||||
#endif
|
||||
|
||||
set_c_lower("1234567890#$_ºª","1234567890#$_ºª");
|
||||
set_c_lower("1234567890#$_ºª","1234567890#$_ºª");
|
||||
}
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
//#include <SDL/SDL.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);}
|
||||
|
||||
|
@ -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 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
|
||||
word * memw;
|
||||
|
@ -100,10 +100,10 @@ int linsize;
|
|||
// PROTOTIPOS
|
||||
///
|
||||
|
||||
void error(int num, ...); // Mensaje de error no crítico (trazable)
|
||||
void critical_error(int num, ...); // Mensaje de error crítico
|
||||
void error(int num, ...); // Mensaje de error no crítico (trazable)
|
||||
void critical_error(int num, ...); // Mensaje de error crítico
|
||||
void custom_error(tipoerror tipo, char* mensaje); /* Errores personalizados de las DLLs */
|
||||
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 */
|
|
@ -111,7 +111,7 @@ void dll_func() // ke original, no? XD
|
|||
for(i=0;i<2;i++) {
|
||||
fichero_dll=readdir(directorio);
|
||||
if(fichero_dll==0) {
|
||||
printf("No se encuentra ninguna librería\n");
|
||||
printf("No se encuentra ninguna librería\n");
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
@ -121,7 +121,7 @@ void dll_func() // ke original, no? XD
|
|||
if(fichero_dll==0)
|
||||
break;
|
||||
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/");
|
||||
strcat(fichdll,fichero_dll->d_name);
|
||||
// dlls[numdlls].nfuncs=0;
|
||||
|
@ -134,7 +134,7 @@ void dll_func() // ke original, no? XD
|
|||
}
|
||||
}
|
||||
if(numdlls==0) {
|
||||
printf("No se encuentra ninguna librería\n");
|
||||
printf("No se encuentra ninguna librería\n");
|
||||
exit(1);
|
||||
}
|
||||
#endif
|
||||
|
@ -157,7 +157,7 @@ void dll_func2()
|
|||
#endif
|
||||
strcat(fichdll,dlls[i].nombre);
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
@ -234,7 +234,7 @@ int leedll()
|
|||
ExportaFuncs=(TYPEOF_ExportaFuncs *) dlsym(hDLL,"ExportaFuncs");
|
||||
|
||||
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);
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -50,7 +50,7 @@
|
|||
/* Main ( argc, argv )
|
||||
*
|
||||
* 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)
|
||||
*/
|
||||
|
||||
|
@ -88,8 +88,8 @@ int main(int argc, char* argv[])
|
|||
|
||||
/*sdl_version=SDL_Linked_Version();
|
||||
#ifdef _DEBUG
|
||||
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 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);
|
||||
#endif
|
||||
if(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]);
|
||||
if((f=open(argv[0],O_RDONLY | O_BINARY))==-1)
|
||||
#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);
|
||||
|
@ -148,7 +148,7 @@ int main(int argc, char* argv[])
|
|||
if (mimem[3]>0) {
|
||||
imem_max=mimem[8]+mimem[3]*(iloc_len)+iloc_len+2;
|
||||
} 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;
|
||||
if (imem_max<256*1024) imem_max=256*1024;
|
||||
if (imem_max>512*1024) imem_max=512*1024;
|
||||
|
@ -212,7 +212,7 @@ int main(int argc, char* argv[])
|
|||
free(ptr);
|
||||
free(vartemp);
|
||||
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));
|
||||
|
@ -251,7 +251,7 @@ int main(int argc, char* argv[])
|
|||
close(f);
|
||||
free(prog);
|
||||
free(progcomp);
|
||||
critical_error(1); // error leyendo el código del programa
|
||||
critical_error(1); // error leyendo el código del programa
|
||||
}
|
||||
free(progcomp);
|
||||
read(f,&linsize,4);
|
||||
|
@ -280,10 +280,10 @@ int main(int argc, char* argv[])
|
|||
// - Inicializar SDL
|
||||
// - Inicializarlo todo (incluyendo trazador si DBG esta definido)
|
||||
// - Rular el kernel y ke interprete el programa
|
||||
// - 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
|
||||
// - Al terminar la ejecución, descargarlo TODO (empezando por los recursos y
|
||||
// acabando por el código interno)
|
||||
// - 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
|
||||
// - Al terminar la ejecución, descargarlo TODO (empezando por los recursos y
|
||||
// acabando por el código interno)
|
||||
// - Restaurar el estado del sistema si es necesario y finalizar SDL
|
||||
|
||||
// Nota: las DLL's se cargan en el transcurso del programa (las instrucciones
|
||||
|
@ -406,15 +406,15 @@ int main(int argc, char* argv[])
|
|||
} else {
|
||||
close(f);
|
||||
free(ptr);
|
||||
critical_error(1); // error leyendo el código del programa
|
||||
critical_error(1); // error leyendo el código del programa
|
||||
}
|
||||
|
||||
} else {
|
||||
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;
|
||||
}
|
||||
|
@ -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* ret;
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
/**
|
||||
* @file builtinfont.c
|
||||
* Convierte una fuente en bmp (8bpp) de 6x8 en un .h para poderse usar como
|
||||
* fuente de sistema (nº 0) en el stub.
|
||||
* fuente de sistema (nº 0) en el stub.
|
||||
* 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);
|
||||
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,"static unsigned char %s[256*8] = {\n",nombre);
|
||||
|
||||
|
|
|
@ -53,7 +53,7 @@ void procesa_indice();
|
|||
/*
|
||||
* esta es llamada cuando encontramos <%subindex%>. Se le indica el fichero
|
||||
* 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);
|
||||
|
||||
|
|
|
@ -1,17 +1,17 @@
|
|||
/* 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,
|
||||
* 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
|
||||
* + 32x32 a 4, 8 y 24 bits de color
|
||||
* - "Pesar" exactamente 8.854 bytes.
|
||||
* 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á tú..
|
||||
* 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
|
||||
* 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á tú..
|
||||
* 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
|
||||
* 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
|
||||
* 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
|
||||
|
@ -21,7 +21,7 @@
|
|||
*/
|
||||
|
||||
#ifndef _WIN32
|
||||
#error IconChanger es sólamente para Win32
|
||||
#error IconChanger es sólamente para Win32
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
|
@ -31,9 +31,9 @@
|
|||
#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_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)
|
||||
|
@ -71,10 +71,10 @@ int main(int argc, char* argv[])
|
|||
tamanyo=ftell(f);
|
||||
if(tamanyo!=ICO_SIZE) {
|
||||
fclose(f);
|
||||
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(" - 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("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(" - 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("No puede faltar ninguna, ya que el archivo debe ocupar EXACTAMENTE %d bytes.\n\n",ICO_SIZE);
|
||||
exit(4);
|
||||
}
|
||||
|
|
|
@ -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
|
||||
* 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[]={
|
||||
|
|
Loading…
Reference in a new issue