Rev 7565 | 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 | consoleInit(); |
||
7566 | pavelyakov | 68 | WHILE(count) |
7565 | pavelyakov | 69 | { |
70 | IF(!DSDWORD[args]) con_printf stdcall ("nil"); |
||
7566 | pavelyakov | 71 | ELSE con_printf stdcall (DSDWORD[args]); |
72 | args+=4; |
||
7563 | pavelyakov | 73 | count--; |
74 | } |
||
7562 | pavelyakov | 75 | RETURN ret; |
7563 | pavelyakov | 76 | } |
77 | |||
78 | |||
7565 | pavelyakov | 79 | { |
80 | dword buf = 0; |
||
81 | consoleInit(); |
||
7566 | pavelyakov | 82 | buf = malloc(100); |
7565 | pavelyakov | 83 | WHILE(count) |
84 | { |
||
85 | con_printf stdcall (DSDWORD[args]); |
||
86 | args+=4; |
||
87 | count--; |
||
88 | } |
||
89 | con_gets stdcall(buf, 100); |
||
90 | RETURN EAX; |
||
91 | } |
||
92 | |||
93 | |||
7563 | pavelyakov | 94 | { |
95 | functions.init(100); |
||
96 | |||
97 | |||
98 | functions.set("print", #std_print); |
||
7565 | pavelyakov | 99 | functions.set("input", #std_input); |
100 | |||
7563 | pavelyakov | 101 | |
102 | functions.set("str", #std_str); |
||
103 | |||
104 | |||
105 | functions.set("exit", #ExitProcess); |
||
106 | |||
107 | |||
108 | functions.set("+", #std_add); |
||
109 | functions.set("-", #std_sub); |
||
110 | |||
111 | |||
7564 | pavelyakov | 112 | functions.set("set", #std_set); |
113 | functions.set("get", #std_get); |
||
114 | |||
115 | |||
7563 | pavelyakov | 116 | } |
117 | |||
118 | |||
119 | { |
||
120 | functions.get(name); |
||
121 | IF(EAX) RETURN EAX(count, args); |
||
7564 | pavelyakov | 122 | RETURN 0; |
7563 | pavelyakov | 123 | } |
7564 | pavelyakov | 124 |