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