Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 7562 → Rev 7563

/programs/cmm/lisp/stdcall.h
1,24 → 1,76
dword StdCall(dword count, name, args)
:dword std_print(dword count, args)
{
dword tmp = 0;
if(!strcmp(name, "print"))
consoleInit();
WHILE(count)
{
consoleInit();
con_printf stdcall (DSDWORD[args]);
args+=4;
count--;
}
else if(!strcmp(name, "input"))
{
}
}
else if(!strcmp(name, "str"))
:dword std_str(dword count, args)
{
dword tmp = 0;
tmp = malloc(15);
itoa_(tmp,DSDWORD[args]);
return tmp;
RETURN tmp;
}
else if(!strcmp(name, "exit"))
 
:dword std_add(dword count, args)
{
ExitProcess();
dword ret = 0;
WHILE(count)
{
ret += DSDWORD[args];
args+=4;
count--;
}
return 0;
RETURN ret;
}
 
:dword std_sub(dword count, args)
{
dword ret = 0;
IF(count)
{
ret = DSDWORD[args];
count--;
args+=4;
}
WHILE(count)
{
ret -= DSDWORD[args];
args+=4;
count--;
}
RETURN ret;
}
 
void Init()
{
functions.init(100);
/* Console functions */
functions.set("print", #std_print);
/* String functions */
functions.set("str", #std_str);
/* System functions */
functions.set("exit", #ExitProcess);
/* Math functions */
functions.set("+", #std_add);
functions.set("-", #std_sub);
variables.init(100);
}
 
dword StdCall(dword count, name, args)
{
dword tmp = 0;
functions.get(name);
IF(EAX)RETURN EAX(count, args);
RETURN 0;
}