hay un bug misterioso.. que os cuente cictec..

This commit is contained in:
Gabriel Lorenzo 2002-09-25 01:58:18 +00:00
parent fbe03ef4e8
commit f1f803404d
11 changed files with 119 additions and 9 deletions

View file

@ -2,7 +2,8 @@
>> hacer fuente 0
>> carga de map, pcx, bmp y jpg completa y decente
>> carga de map, pcx, bmp (y jpg?) completa y decente
>> size y angle
>> cargar muchos fpg's

View file

@ -1,3 +1,14 @@
25/9/2002
---------
* Añadido un control para evitar que haya más de "max_process" procesos. Si
ocurre, se produce un critical_error. A veces permite un pequeño margen,
en función de la memoria disponible. (Er_Makina)
* Aconsejo usar en cualquier momento stub_quit() en lugar de exit(), ya que
ahí se libera varindex y se ejecuta SDL_Quit. (Er_Makina)
* Añadidos los opcodes optimizados al stub. He puesto no_optimization a 0 en
el ediv.cfg. He compilado los test y parece que rulan perfectamente.
(Er_Makina)
24/9/2002
---------
*  A馻dido indexado de variables din醡ico!! (縞ontento Rise?) :D

View file

@ -10,7 +10,7 @@ case_sensitive=0 ; Sin case sensitive
ignore_errors=0 ; No ignorar errores
no_strfix=0 ;
no_id_check=0 ;
no_optimization=1 ; Para las pruebas de momento ;)
no_optimization=0 ; Para las pruebas de momento ;)
no_range_check=0 ;
no_null_check=0 ;
no_check=0 ;

Binary file not shown.

View file

@ -37,6 +37,7 @@ struct objeto * ob;
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
@ -64,6 +65,11 @@ int EDIV_Export(char* cadena, int nparam, void* hfuncion)
return 0;
}
if(nparam<0) {
dll_error(5,cadena);
return 0;
}
creaobj=crea_objeto((byte*)cadena);
#ifdef DEBUG_DLL

View file

@ -267,6 +267,7 @@ struct _fun_params{
//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)
struct _entrypoints {
int tipo; // Ver #defines de entrypoints más arriba

View file

@ -306,7 +306,7 @@ int proceso( int num )
reserved("param_offset",procs_s[num_proc].id)=sp-reserved("parameters",procs_s[num_proc].id)+1;
/**/procs_s[num_proc].num_params = mem[ imem-1 ] ;
break;
case lcpa://31 POR HACER #-#
case lcpa://31 POR HACER?
mem[pila[sp--]]=pila[reserved("param_offset",procs_s[num_proc].id)++];
break;
case ltyp://32
@ -320,7 +320,7 @@ int proceso( int num )
reserved("process_type",procs_s[num_proc].id) = procs_s[num_proc].tipo ;
inicio_privadas=mem[6];
break ;
case lpri://33 POR HACER
case lpri://33 POR HACER?
memcpy(&mem[procs_s[num_proc].id+inicio_privadas],&mem[imem+1],(mem[imem]-imem-1)<<2);
inicio_privadas+=(mem[imem]-imem-1); imem=mem[imem];
break ;
@ -400,7 +400,7 @@ int proceso( int num )
pila[ sp-1 ] = mem[ pila[ sp-1 ] ] <<= pila[sp] ;
sp--;
break;
case lpar://52 POR HACER
case lpar://52 POR HACER?
//imem++;
inicio_privadas+=mem[imem++];
break;
@ -428,12 +428,78 @@ int proceso( int num )
break ;
case ldbg://58
#ifdef DBG
//Call_Entrypoint(EDIV_debug,imem,nombreprg,lin,0);
Call_Entrypoint(EDIV_debug,imem,nombreprg,lin,0);
#endif
break ;
// OPCODES OPTIMIZADOS
case lcar2://60
pila[++sp]=mem[imem++];
pila[++sp]=mem[imem++];
break;
case lcar3://61
pila[++sp]=mem[imem++];
pila[++sp]=mem[imem++];
pila[++sp]=mem[imem++];
break;
case lcar4://62
pila[++sp]=mem[imem++];
pila[++sp]=mem[imem++];
pila[++sp]=mem[imem++];
pila[++sp]=mem[imem++];
break;
case lasiasp://63
mem[pila[sp-1]]=pila[sp];
sp-=2;
break;
case lcaraid://64
pila[++sp]=mem[imem++]+procs_s[num_proc].id;
break;
case lcarptr://65
pila[++sp]=mem[mem[imem++]];
break;
case laidptr://66
pila[sp]=mem[pila[sp]+procs_s[num_proc].id];
break;
case lcaraidptr://67
pila[++sp]=mem[mem[imem++]+procs_s[num_proc].id];
break;
case lcaraidcpa://68
mem[mem[imem++]+procs_s[num_proc].id]=pila[reserved("param_offset",procs_s[num_proc].id)++];
break;
case laddptr://69
pila[sp-1]=mem[pila[sp-1]+pila[sp]];
sp--;
break;
case lfunasp://70 NO USADO
break;
case lcaradd://71
pila[sp]+=mem[imem++];
break;
case lcaraddptr://72
pila[sp]=mem[pila[sp]+mem[imem++]];
break;
case lcarmul://73
pila[sp]*=mem[imem++];
break;
case lcarmuladd://74
pila[sp-1]+=pila[sp]*mem[imem++];
sp--;
break;
case lcarasiasp://75
mem[pila[sp]]=mem[imem++];
sp--;
break;
case lcarsub://76
pila[sp]-=mem[imem++];
break;
case lcardiv://77 no hay nunca "cardiv 0"
pila[sp]/=mem[imem++];
break;
}
#ifdef DBG
//Call_Entrypoint(EDIV_trace,imem,nombreprg,lin,0);
Call_Entrypoint(EDIV_trace,imem,nombreprg,lin,0);
#endif
}

View file

@ -782,7 +782,7 @@ char* translate_runtime_error(int num)
char* translate_critical_error(int num)
{
static char *e[NUM_LANGUAGES][9] = {
static char *e[NUM_LANGUAGES][10] = {
/* 0 - ESPAÑOL */
@ -794,7 +794,8 @@ char* translate_critical_error(int num)
/* 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"
/* 8 */ "Demasiados procesos en ejecución",
/* 9 */ "Se requiere SDL versión %d.%d.%d\nVersión detectada en el sistema: %d.%d.%d",
/* 1 - ITALIANO */
@ -807,6 +808,7 @@ char* translate_critical_error(int num)
/* 6 */ "%s non è una libreria valida di eDIV",
/* 7 */ "No se pudo inicializar SDL", // TODO
/* 8 */ "Demasiados procesos en ejecución", // TODO
/* 9 */ "Se requiere SDL versión %d.%d.%d\nVersión detectada en el sistema: %d.%d.%d", // TODO
/* 2 - PORTUGUÉS (FIXMI: traducir) */
@ -819,6 +821,7 @@ char* translate_critical_error(int num)
/* 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", // TODO
/* 3 - INGLÉS */
@ -831,6 +834,7 @@ char* translate_critical_error(int num)
/* 6 */ "%s is not a valid eDIV library",
/* 7 */ "Cannot initialize SDL",
/* 8 */ "Too many processes in execution",
/* 9 */ "This program requires SDL version %d.%d.%d\nSDL version detected in this system: %d.%d.%d",
/* 4 - CATALÁN */
@ -843,6 +847,7 @@ char* translate_critical_error(int num)
/* 6 */ "%s no és una llibreria vàlida d' eDIV",
/* 7 */ "No se pudo inicializar SDL", // TODO
/* 8 */ "Demasiados procesos en ejecución", // TODO
/* 9 */ "Se requiere SDL versión %d.%d.%d\nVersión detectada en el sistema: %d.%d.%d", // TODO
/* 5 - EUSKERA */
@ -855,6 +860,7 @@ char* translate_critical_error(int num)
/* 6 */ "%s ez da eDIV-en liburutegi zuzen bat",
/* 7 */ "No se pudo inicializar SDL", // TODO
/* 8 */ "Demasiados procesos en ejecución", // TODO
/* 9 */ "Se requiere SDL versión %d.%d.%d\nVersión detectada en el sistema: %d.%d.%d" // TODO
};
return e[idioma][num];

View file

@ -56,6 +56,7 @@ int main(int argc, char* argv[])
byte * ptr;
unsigned long len,len_descomp;
byte* vartemp;
const SDL_version* sdl_version;
#ifdef DBG
int start_lin;
int linsize;
@ -68,6 +69,21 @@ int main(int argc, char* argv[])
eDIV_InstallParachute();
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);
#endif
if(sdl_version->major<SDL_MAJOR_VERSION
|| (sdl_version->major==SDL_MAJOR_VERSION &&
sdl_version->minor<SDL_MINOR_VERSION)
|| (sdl_version->major==SDL_MAJOR_VERSION &&
sdl_version->minor==SDL_MINOR_VERSION &&
sdl_version->patch<SDL_PATCHLEVEL)) {
critical_error(9,SDL_MAJOR_VERSION,SDL_MINOR_VERSION,SDL_PATCHLEVEL,
sdl_version->major,sdl_version->minor,sdl_version->patch);
}
for ( i = 0 ; i < 100 ; i++ )
tiempo[ i ] = 0 ;
tiempo_i = 0 ;

View file

@ -179,6 +179,9 @@
<File
RelativePath="..\..\ediv\parser.h">
</File>
<File
RelativePath="..\..\shared\shared.h">
</File>
<File
RelativePath="..\..\shared\varindex.h">
</File>

Binary file not shown.