Subversion Repositories Kolibri OS

Rev

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

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