diff --git a/ediv/CHANGE_LOG.txt b/ediv/CHANGE_LOG.txt index 114ed4d..4f8fd28 100644 --- a/ediv/CHANGE_LOG.txt +++ b/ediv/CHANGE_LOG.txt @@ -1,3 +1,19 @@ +29/10/2002 +---------- + * Bug arreglado: el programa se bloqueaba al llegar a cierta cantidad de + procesos. El problema estaba en que los procesos no desechaban los parámetros + de la pila después de leerlos. He cuidado que funcione bien tanto con + optimización como sin ella :D (Er_Makina) + * Para evitar cosas como esta (desbordamientos de pila) he puesto un "PANIC!" + en modo _DEBUG cuando se termina de ejecutar un frame y quedan cosas en la + pila. (Er_Makina) + * Bug arreglado: los procesos no devolvían el id. La causa del bug era la misma + que el de más arriba :) (Er_Makina) + * Ahora se dibujan todos los blits con la Z correcta. He quitado el sistema + que había antes (orden[]) y lo he reemplazado por un qsort justo antes de + dibujarlo todo, además supongo que es más rápido que ir insertando cosas + cada vez que se llamaba a Dibuja(). (Er_Makina) + 28/10/2002 ---------- * Añadida la variable SIZE. diff --git a/ediv/src/bmp2fnt/b2f.vcproj b/ediv/src/bmp2fnt/b2f.vcproj index 7b98202..32bceed 100644 --- a/ediv/src/bmp2fnt/b2f.vcproj +++ b/ediv/src/bmp2fnt/b2f.vcproj @@ -4,8 +4,7 @@ Version="7.00" Name="b2f" ProjectGUID="{892F2A1D-847C-45C1-B7D9-3F421D749FA5}" - SccProjectName="" - SccLocalPath=""> + > diff --git a/ediv/src/dlls/dlls.suo b/ediv/src/dlls/dlls.suo index 6450323..07b12b8 100644 Binary files a/ediv/src/dlls/dlls.suo and b/ediv/src/dlls/dlls.suo differ diff --git a/ediv/src/stub/inte.c b/ediv/src/stub/inte.c index 19645c7..0d5c637 100644 --- a/ediv/src/stub/inte.c +++ b/ediv/src/stub/inte.c @@ -169,6 +169,7 @@ int proceso( int num, int padre ) int no_devuelve = 0 ; int (*externa)(struct _fun_params*); int temp ; + int cpas=0; #ifdef DBG int actual_lin; #endif @@ -324,8 +325,12 @@ int proceso( int num, int padre ) 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? - mem[pila[sp--]]=pila[reserved("param_offset",procs_s[num_proc].id)++]; + case lcpa://31 + mem[pila[sp]]=pila[reserved("param_offset",procs_s[num_proc].id)++]; + sp--; + cpas++; + if(cpas==reserved("parameters",procs_s[num_proc].id)) + sp-=cpas; break; case ltyp://32 if ( procs_s[num_proc].tipo != 0 ) @@ -498,6 +503,7 @@ int proceso( int num, int padre ) break; case lcaraidcpa://68 mem[mem[imem++]+procs_s[num_proc].id]=pila[reserved("param_offset",procs_s[num_proc].id)++]; + sp--; break; case laddptr://69 pila[sp-1]=mem[pila[sp-1]+pila[sp]]; diff --git a/ediv/src/stub/language.c b/ediv/src/stub/language.c index 7254a66..ee234fd 100644 --- a/ediv/src/stub/language.c +++ b/ediv/src/stub/language.c @@ -272,7 +272,7 @@ char* translate_runtime_error(int num) /* 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 centrato di testo 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.", diff --git a/ediv/src/stub/stub.c b/ediv/src/stub/stub.c index 5ec63a7..66c4a92 100644 --- a/ediv/src/stub/stub.c +++ b/ediv/src/stub/stub.c @@ -291,12 +291,12 @@ int main(int argc, char* argv[]) if ( screen == NULL ) k_error(K_ERR_SDL_SET_VIDEO_MODE); -*/ +*/ + //assert(0); ini_interprete(); /*if ( !ini_interprete() ) k_error(K_ERR_INI_INTERPRETE) ;*/ - while (1) { char noevent; /* @@ -338,6 +338,10 @@ int main(int argc, char* argv[]) stub_quit(0); interprete(); + + #ifdef _DEBUG + if(sp!=0) printf("PANIC! Quedan restos en la pila!! (sp=%d)\n",sp); + #endif /*if (!interprete()) k_error(K_ERR_INTERPRETE);*/ diff --git a/ediv/src/visual c/ediv_ws.suo b/ediv/src/visual c/ediv_ws.suo index 6dbc14d..e253866 100644 Binary files a/ediv/src/visual c/ediv_ws.suo and b/ediv/src/visual c/ediv_ws.suo differ