signals rulando :D

This commit is contained in:
Gabriel Lorenzo 2003-03-05 16:52:17 +00:00
parent ce6561c6a6
commit db433fa64e
21 changed files with 148 additions and 28 deletions

View file

@ -41,7 +41,7 @@
GenerateDebugInformation="TRUE" GenerateDebugInformation="TRUE"
ProgramDatabaseFile="$(OutDir)/dinmem.pdb" ProgramDatabaseFile="$(OutDir)/dinmem.pdb"
SubSystem="2" SubSystem="2"
ImportLibrary="$(OutDir)/dinmem.lib" ImportLibrary=""
TargetMachine="1"/> TargetMachine="1"/>
<Tool <Tool
Name="VCMIDLTool"/> Name="VCMIDLTool"/>

View file

@ -32,6 +32,7 @@
#else #else
#error ¡adapta las rutinas de timer a Linux! #error ¡adapta las rutinas de timer a Linux!
#endif #endif
#include <assert.h>
#include <stdio.h> #include <stdio.h>
@ -41,6 +42,21 @@
int last_type ; int last_type ;
int last_proc ; int last_proc ;
int DEBUG_PROCESOS(FUNCTION_PARAMS)
{
int i,n;
FILE* f;
f=fopen("procs.txt","a");
fprintf(f,"\n--- COMIENZO ---\n");
for(i=0;i<*fp->num_procs;i++) {
n=fp->procs_s[fp->proc_orden[i]].id;
fprintf(f,"(%d) ID: %d TYPE: %d TIPO: %d STATUS: %d ORDEN: %d\n",i,n,reserved("process_type",n),fp->procs_s[fp->proc_orden[i]].tipo,reserved("status",n),fp->procs_s[fp->proc_orden[i]].orden);
}
fprintf(f,"\n--- FIN ---\n");
fclose(f);
return 0;
}
int ExportaFuncs(EXPORTAFUNCS_PARAMS) int ExportaFuncs(EXPORTAFUNCS_PARAMS)
{ {
@ -164,6 +180,8 @@ int ExportaFuncs(EXPORTAFUNCS_PARAMS)
FUNCTION("signal",2,eDIV_Signal); FUNCTION("signal",2,eDIV_Signal);
FUNCTION("let_me_alone",0,eDIV_Let_Me_Alone); FUNCTION("let_me_alone",0,eDIV_Let_Me_Alone);
FUNCTION("debug_procesos",0,DEBUG_PROCESOS);
ENTRYPOINT( first_load ) ; ENTRYPOINT( first_load ) ;
ENTRYPOINT(frame); ENTRYPOINT(frame);
@ -251,9 +269,10 @@ int eDiv_DefineRegion(FUNCTION_PARAMS)
void signal_tree(int proc, int signal, FUNCTION_PARAMS) void signal_tree(int proc, int signal, FUNCTION_PARAMS)
{ {
int id2; int id2;
reserved("status",proc)=signal;
if(id2=local("son",proc)) { if(id2=local("son",proc)) {
signal_tree(id2,signal,fp); signal_tree(id2,signal,fp);
reserved("status",id2)=signal; //reserved("status",id2)=signal;
} }
while(local("bigbro",id2)) { while(local("bigbro",id2)) {
proc=local("bigbro",id2); proc=local("bigbro",id2);
@ -267,18 +286,18 @@ int eDIV_Signal(FUNCTION_PARAMS)
int proc=getparm(); int proc=getparm();
char tree=FALSE; char tree=FALSE;
// assert(0);
if(signal>=100) { if(signal>=100) {
signal-=100; signal-=100;
tree=TRUE; tree=TRUE;
} }
signal++; signal++;
/* Si se le pasa un ID */ /* Si se le pasa un ID */
if(proc<fp->imem_max) if(proc<fp->imem_max)
{ {
reserved("status",proc)=signal; reserved("status",proc)=signal;
if(tree && (proc=reserved("son",proc))) if(tree && (proc=local("son",proc)))
signal_tree(proc,signal,fp); signal_tree(proc,signal,fp);
} }
/* Si se le pasa un type */ /* Si se le pasa un type */
@ -287,7 +306,7 @@ int eDIV_Signal(FUNCTION_PARAMS)
for(i=0;i<*fp->num_procs;i++) { for(i=0;i<*fp->num_procs;i++) {
if(fp->procs_s[fp->proc_orden[i]].tipo==proc) { if(fp->procs_s[fp->proc_orden[i]].tipo==proc) {
reserved("status",fp->procs_s[fp->proc_orden[i]].id)=signal; reserved("status",fp->procs_s[fp->proc_orden[i]].id)=signal;
if(tree && (p=reserved("son",fp->procs_s[fp->proc_orden[i]].id))) if(tree && (p=local("son",fp->procs_s[fp->proc_orden[i]].id)))
signal_tree(fp->procs_s[fp->proc_orden[i]].id,signal,fp); signal_tree(fp->procs_s[fp->proc_orden[i]].id,signal,fp);
} }
} }

View file

@ -12,7 +12,7 @@
<Configurations> <Configurations>
<Configuration <Configuration
Name="Debug|Win32" Name="Debug|Win32"
OutputDirectory="../../../bin" OutputDirectory="./Debug"
IntermediateDirectory="Debug" IntermediateDirectory="Debug"
ConfigurationType="2" ConfigurationType="2"
CharacterSet="2"> CharacterSet="2">
@ -40,12 +40,13 @@
GenerateDebugInformation="TRUE" GenerateDebugInformation="TRUE"
ProgramDatabaseFile="$(OutDir)/edivstd.pdb" ProgramDatabaseFile="$(OutDir)/edivstd.pdb"
SubSystem="2" SubSystem="2"
ImportLibrary="$(OutDir)/edivstd.lib" ImportLibrary=""
TargetMachine="1"/> TargetMachine="1"/>
<Tool <Tool
Name="VCMIDLTool"/> Name="VCMIDLTool"/>
<Tool <Tool
Name="VCPostBuildEventTool"/> Name="VCPostBuildEventTool"
CommandLine="copy Debug\edivstd.dll ..\..\..\..\ediv\bin\dll"/>
<Tool <Tool
Name="VCPreBuildEventTool"/> Name="VCPreBuildEventTool"/>
<Tool <Tool

View file

@ -40,7 +40,7 @@
GenerateDebugInformation="TRUE" GenerateDebugInformation="TRUE"
ProgramDatabaseFile="$(OutDir)/file.pdb" ProgramDatabaseFile="$(OutDir)/file.pdb"
SubSystem="2" SubSystem="2"
ImportLibrary="$(OutDir)/file.lib" ImportLibrary=""
TargetMachine="1"/> TargetMachine="1"/>
<Tool <Tool
Name="VCMIDLTool"/> Name="VCMIDLTool"/>

View file

@ -41,7 +41,7 @@
GenerateDebugInformation="TRUE" GenerateDebugInformation="TRUE"
ProgramDatabaseFile="$(OutDir)/graphics.pdb" ProgramDatabaseFile="$(OutDir)/graphics.pdb"
SubSystem="2" SubSystem="2"
ImportLibrary="$(OutDir)/graphics.lib" ImportLibrary=""
TargetMachine="1"/> TargetMachine="1"/>
<Tool <Tool
Name="VCMIDLTool"/> Name="VCMIDLTool"/>

View file

@ -41,7 +41,7 @@
GenerateDebugInformation="TRUE" GenerateDebugInformation="TRUE"
ProgramDatabaseFile="$(OutDir)/input.pdb" ProgramDatabaseFile="$(OutDir)/input.pdb"
SubSystem="2" SubSystem="2"
ImportLibrary="$(OutDir)/input.lib" ImportLibrary=""
TargetMachine="1"/> TargetMachine="1"/>
<Tool <Tool
Name="VCMIDLTool"/> Name="VCMIDLTool"/>

View file

@ -40,7 +40,7 @@
GenerateDebugInformation="TRUE" GenerateDebugInformation="TRUE"
ProgramDatabaseFile="$(OutDir)/math.pdb" ProgramDatabaseFile="$(OutDir)/math.pdb"
SubSystem="2" SubSystem="2"
ImportLibrary="$(OutDir)/math.lib" ImportLibrary=""
TargetMachine="1"/> TargetMachine="1"/>
<Tool <Tool
Name="VCMIDLTool"/> Name="VCMIDLTool"/>

View file

@ -39,7 +39,7 @@
GenerateDebugInformation="TRUE" GenerateDebugInformation="TRUE"
ProgramDatabaseFile="$(OutDir)/strings.pdb" ProgramDatabaseFile="$(OutDir)/strings.pdb"
SubSystem="2" SubSystem="2"
ImportLibrary="$(OutDir)/strings.lib" ImportLibrary=""
TargetMachine="1"/> TargetMachine="1"/>
<Tool <Tool
Name="VCMIDLTool"/> Name="VCMIDLTool"/>

View file

@ -40,7 +40,7 @@
GenerateDebugInformation="TRUE" GenerateDebugInformation="TRUE"
ProgramDatabaseFile="$(OutDir)/text.pdb" ProgramDatabaseFile="$(OutDir)/text.pdb"
SubSystem="2" SubSystem="2"
ImportLibrary="$(OutDir)/text.lib" ImportLibrary=""
TargetMachine="1"/> TargetMachine="1"/>
<Tool <Tool
Name="VCMIDLTool"/> Name="VCMIDLTool"/>

View file

@ -1,3 +1,15 @@
05/03/2003
----------
* Hay algún fallo cuando se elimina un proceso, tiene que ver con la
eliminación de procesos de procs_s y proc_orden y la creación y
ejecución de nuevos procesos (probad a rular robots.prg y pasaros el
primer nivel, os dará un error "redefinición del tipo de proceso" cuando
intentéis mover el personaje). (Er_Makina)
04/03/2003
----------
* signal() arreglado, ya funcionan las señales tree (Er_Makina)
18/12/2002 18/12/2002
---------- ----------
* Mas comentarizacion siguiendo las normas del ANSI C (Daijo) * Mas comentarizacion siguiendo las normas del ANSI C (Daijo)

View file

@ -57,6 +57,7 @@ BEGIN
// fade_on(); // fade_on();
// prota=protag(rand(0,39)*8,rand(0,24)*8); // prota=protag(rand(0,39)*8,rand(0,24)*8);
protag(rand(0,39)*8,rand(0,24)*8); protag(rand(0,39)*8,rand(0,24)*8);
debug_procesos();
for(i=1;i<=num_robots;i++) for(i=1;i<=num_robots;i++)
loop loop
x=rand(0,39); x=rand(0,39);
@ -189,8 +190,11 @@ BEGIN
mueve_robots(); mueve_robots();
end end
end end
debug_procesos();
signal(prota,s_kill); signal(prota,s_kill);
debug_procesos();
signal(type robot,s_kill); signal(type robot,s_kill);
debug_procesos();
muertos=0; muertos=0;
cogido=0; cogido=0;
ya=0; ya=0;

81
ediv/bin/signal2.prg Normal file
View file

@ -0,0 +1,81 @@
program prueba_signal2;
global
idbola;
begin
load_fnt("system.fnt");
load_fpg("test16.fpg");
put_screen(0,1);
write_int(1,0,0,0,&idbola);
idbola=bola(0);
loop
frame;
if(key(_f))
signal(idbola,s_freeze_tree);
while(key(_f))
frame;
end
signal(idbola,s_wakeup_tree);
end
if(key(_s))
signal(idbola,s_sleep_tree);
while(key(_s))
frame;
end
signal(idbola,s_wakeup_tree);
end
if(key(_k))
signal(idbola,s_kill_tree);
while(key(_k))
frame;
end
triangulo(7);
idbola=bola(0);
end
if(key(_esc))
exit("Taluego lucas!!",0);
end
end
end
process bola(num)
begin
graph=100;
x=160;
y=30+num*20;
if(num<3)
bola(num+1);
else
triangulo(num+1);
end
loop
frame;
x+=rand(-5,5);
if(x<30) x=30; end
if(x>290) x=290; end
end
end
process triangulo(num)
begin
graph=101;
x=160;
y=30+num*20;
if(num<6)
triangulo(num+1);
end
loop
frame;
x+=rand(-5,5);
if(x<30) x=30; end
if(x>290) x=290; end
end
end

View file

@ -335,7 +335,7 @@ void compila()
#endif #endif
if ((f=fopen(outfilename,"ab"))!=NULL) { if ((f=fopen(outfilename,"ab"))!=NULL) {
fwrite(nombre_program,strlen(nombre_program)+1,1,f); fwrite(nombre_program,strlen((const char*)nombre_program)+1,1,f);
p=(byte*)e_malloc((imem+iloc)*4); p=(byte*)e_malloc((imem+iloc)*4);
m=(imem+iloc)*4+1024; m=(imem+iloc)*4+1024;
q=(byte*)e_malloc(m); q=(byte*)e_malloc(m);
@ -1065,7 +1065,7 @@ void escribe_lin(FILE* f)
b++; b++;
progcomp=e_malloc(b*2); progcomp=e_malloc(b*2);
l=b*2; l=b*2;
if(compress(progcomp,&l,prog,b)) { if(compress(progcomp,(unsigned long*)&l,prog,b)) {
fclose(linf); fclose(linf);
fclose(f); fclose(f);
errormem(); errormem();

View file

@ -33,12 +33,12 @@ char* buffer;
int linea; int linea;
char cfg[256]; char cfg[256];
void cfg_error(int error) /*void cfg_error(int error)
{ {
printf(translate(41),cfg,linea,translate_cfg_error(error)); printf(translate(41),cfg,linea,translate_cfg_error(error));
printf(translate(42)); printf(translate(42));
exit(1); exit(1);
} }*/
void salta_spc() { void salta_spc() {
while(lower[buffer[i]]==0 && i<tamano) { while(lower[buffer[i]]==0 && i<tamano) {

View file

@ -545,7 +545,7 @@ BOOL PrepareDLLImage(void *pMemoryImage, DWORD dwImageSize, BOOL bResolve, BOOL
if(func==NULL) return FALSE; if(func==NULL) return FALSE;
// Write address to appropriate location // Write address to appropriate location
ptd_out->u1.Function = (PDWORD) func; ptd_out->u1.Function = (unsigned long)(PDWORD) func;
ptd_in++; ptd_in++;
ptd_out++; ptd_out++;

View file

@ -242,9 +242,9 @@ int main(int argc, char *argv[])
/* mete el PRG en el buffer prog */ /* mete el PRG en el buffer prog */
fseek(fp,0,SEEK_END); fseek(fp,0,SEEK_END);
progsize=ftell(fp); progsize=ftell(fp);
prog = (char *)e_malloc(progsize+1); prog = (unsigned char *)e_malloc(progsize+1);
fseek(fp,0,SEEK_SET); fseek(fp,0,SEEK_SET);
p=prog; p=(char*)prog;
do { do {
*p = getc(fp); *p = getc(fp);
p++; p++;

View file

@ -16,7 +16,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
#include <memory.h> #include <string.h>
#include "main.h" #include "main.h"
#include "lower.h" #include "lower.h"

View file

@ -39,4 +39,4 @@
#define long_header 9 /* Longitud de la cabecera al inicio de los programas */ #define long_header 9 /* Longitud de la cabecera al inicio de los programas */
#endif /* __EDIV_SHARED_H_ #endif /* __EDIV_SHARED_H_ */

View file

@ -123,9 +123,9 @@ int lista_quita( int num )
{ {
int i ; int i ;
procs_s[num].tipo=0; procs_s[proc_orden[num]].tipo=0;
for ( i = procs_s[num].orden+1 ; i < num_proc_orden ; i++ ) for ( i = num+1 ; i < num_proc_orden ; i++ )
{ {
procs_s[ proc_orden[ i ] ].orden-- ; procs_s[ proc_orden[ i ] ].orden-- ;
proc_orden[ i - 1 ] = proc_orden[ i ] ; proc_orden[ i - 1 ] = proc_orden[ i ] ;
@ -155,9 +155,12 @@ int interprete()
for ( proceso_actual = 0 ; proceso_actual < num_proc_orden ; proceso_actual++ ) for ( proceso_actual = 0 ; proceso_actual < num_proc_orden ; proceso_actual++ )
{ {
//printf("Proceso %d - Estado: %d\n",procs_s[proc_orden[proceso_actual]].id,mem[procs_s[proc_orden[proceso_actual]].id+_status]);
if(mem[procs_s[proc_orden[proceso_actual]].id+_status]==1) { if(mem[procs_s[proc_orden[proceso_actual]].id+_status]==1) {
//mem[procs_s[num].id+_status=0; mem[procs_s[proc_orden[proceso_actual]].id+_status]=0;
//assert(0);
lista_quita(proceso_actual); lista_quita(proceso_actual);
proceso_actual--;
} }
} }

Binary file not shown.

View file

@ -27,7 +27,7 @@
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE" PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="TRUE" MinimalRebuild="TRUE"
BasicRuntimeChecks="3" BasicRuntimeChecks="3"
RuntimeLibrary="5" RuntimeLibrary="2"
UsePrecompiledHeader="0" UsePrecompiledHeader="0"
WarningLevel="3" WarningLevel="3"
Detect64BitPortabilityProblems="FALSE" Detect64BitPortabilityProblems="FALSE"