Subversion Repositories Kolibri OS

Rev

Rev 7563 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
7564 pavelyakov 1
 
2
 
3
	consoleInit();
7562 pavelyakov 4
	count = 1;
7563 pavelyakov 5
	WHILE(count)
7564 pavelyakov 6
	{
7563 pavelyakov 7
		con_printf stdcall (DSDWORD[args]);
7562 pavelyakov 8
		args+=4;
9
		count--;
7563 pavelyakov 10
	}
11
}
7562 pavelyakov 12
7563 pavelyakov 13
:dword std_set(dword count, args)
14
 
7564 pavelyakov 15
	dword name = 0;
16
	dword value = 0;
17
	WHILE(count>0)
18
	{
19
		name = DSDWORD[args];
20
		args += 4;
21
		value = DSDWORD[args];
22
		args += 4;
23
		variables.set(name, value);
24
		count-=2;
25
	}
26
}
27
28
:dword std_get(dword count, args)
29
 
30
	RETURN variables.get(DSDWORD[args]);
31
}
32
33
:dword std_str(dword count, args)
34
 
7563 pavelyakov 35
	dword tmp = 0;
36
	tmp = malloc(15);
37
	itoa_(tmp,DSDWORD[args]);
38
	RETURN tmp;
39
}
40
41
:dword std_add(dword count, args)
42
 
43
	dword ret = 0;
44
	WHILE(count)
45
	{
46
		ret += DSDWORD[args];
7562 pavelyakov 47
		args+=4;
7563 pavelyakov 48
		count--;
49
	}
50
	RETURN ret;
7562 pavelyakov 51
}
7563 pavelyakov 52
53
:dword std_sub(dword count, args)
54
 
55
	dword ret = 0;
56
	IF(count)
57
	{
58
		ret = DSDWORD[args];
59
		count--;
60
		args+=4;
61
	}
62
	WHILE(count)
7562 pavelyakov 63
	{
7563 pavelyakov 64
		ret -= DSDWORD[args];
7562 pavelyakov 65
		args+=4;
7563 pavelyakov 66
		count--;
67
	}
68
	RETURN ret;
7562 pavelyakov 69
}
7563 pavelyakov 70
71
void Init()
72
 
73
	functions.init(100);
74
75
	/* Console functions */
76
 
77
78
 
7564 pavelyakov 79
 
7563 pavelyakov 80
81
	/* System functions */
82
 
83
84
	/* Math functions */
85
 
86
	functions.set("-", #std_sub);
87
88
	/* Lisp functions */
89
 
7564 pavelyakov 90
	functions.set("get", #std_get);
91
92
	variables.init(100);
93
 
7563 pavelyakov 94
95
dword StdCall(dword count, name, args)
96
 
97
	dword tmp = 0;
98
99
	functions.get(name);
7564 pavelyakov 100
 
7563 pavelyakov 101
	IF(!strcmp(name, "print"))
7564 pavelyakov 102
	{
103
		consoleInit();
104
		count = 1;
105
		WHILE(count)
106
		{
107
			con_printf stdcall (DSDWORD[args]);
108
			args += 4;
109
			count--;
110
		}
111
	}
112
	RETURN 0;
113
}
7563 pavelyakov 114