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 |