Rev 3013 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3013 | Rev 6196 | ||
---|---|---|---|
1 | ; new application structure |
1 | ; new application structure |
2 | macro meos_app_start |
2 | macro meos_app_start |
3 | { |
3 | { |
4 | use32 |
4 | use32 |
5 | org 0x0 |
5 | org 0x0 |
6 | 6 | ||
7 | db 'MENUET01' |
7 | db 'MENUET01' |
8 | dd 0x01 |
8 | dd 0x01 |
9 | dd __start |
9 | dd __start |
10 | dd __end |
10 | dd __end |
11 | dd __memory |
11 | dd __memory |
12 | dd __stack |
12 | dd __stack |
13 | 13 | ||
14 | if used __params & ~defined __params |
14 | if used __params & ~defined __params |
15 | dd __params |
15 | dd __params |
16 | else |
16 | else |
17 | dd 0x0 |
17 | dd 0x0 |
18 | end if |
18 | end if |
19 | 19 | ||
20 | dd 0x0 |
20 | dd 0x0 |
21 | } |
21 | } |
22 | MEOS_APP_START fix meos_app_start |
22 | MEOS_APP_START fix meos_app_start |
23 | 23 | ||
24 | macro code |
24 | macro code |
25 | { |
25 | { |
26 | __start: |
26 | __start: |
27 | } |
27 | } |
28 | CODE fix code |
28 | CODE fix code |
29 | 29 | ||
30 | macro data |
30 | macro data |
31 | { |
31 | { |
32 | __data: |
32 | __data: |
33 | } |
33 | } |
34 | DATA fix data |
34 | DATA fix data |
35 | 35 | ||
36 | macro udata |
36 | macro udata |
37 | { |
37 | { |
38 | if used __params & ~defined __params |
38 | if used __params & ~defined __params |
39 | __params: |
39 | __params: |
40 | db 0 |
40 | db 0 |
41 | __end: |
41 | __end: |
42 | rb 255 |
42 | rb 255 |
43 | else |
43 | else |
44 | __end: |
44 | __end: |
45 | end if |
45 | end if |
46 | __udata: |
46 | __udata: |
47 | } |
47 | } |
48 | UDATA fix udata |
48 | UDATA fix udata |
49 | 49 | ||
50 | macro meos_app_end |
50 | macro meos_app_end |
51 | { |
51 | { |
52 | align 32 |
52 | align 32 |
53 | rb 2048 |
53 | rb 2048 |
54 | __stack: |
54 | __stack: |
55 | __memory: |
55 | __memory: |
56 | } |
56 | } |
57 | MEOS_APP_END fix meos_app_end |
57 | MEOS_APP_END fix meos_app_end |
58 | 58 | ||
59 | 59 | ||
60 | ; macro for defining multiline text data |
60 | ; macro for defining multiline text data |
61 | struc mstr [sstring] |
61 | struc mstr [sstring] |
62 | { |
62 | { |
63 | forward |
63 | forward |
64 | local ssize |
64 | local ssize |
65 | virtual at 0 |
65 | virtual at 0 |
66 | db sstring |
66 | db sstring |
67 | ssize = $ |
67 | ssize = $ |
68 | end virtual |
68 | end virtual |
69 | dd ssize |
69 | dd ssize |
70 | db sstring |
70 | db sstring |
71 | common |
71 | common |
72 | dd -1 |
72 | dd -1 |
73 | } |
73 | } |
74 | 74 | ||
75 | 75 | ||
76 | ; strings |
76 | ; strings |
77 | macro sz name,[data] { ; from MFAR [mike.dld] |
77 | macro sz name,[data] { ; from MFAR [mike.dld] |
78 | common |
78 | common |
79 | if used name |
79 | if used name |
80 | label name |
80 | label name |
81 | end if |
81 | end if |
82 | forward |
82 | forward |
83 | if used name |
83 | if used name |
84 | db data |
84 | db data |
85 | end if |
85 | end if |
86 | common |
86 | common |
87 | if used name |
87 | if used name |
88 | .size = $-name |
88 | .size = $-name |
89 | end if |
89 | end if |
90 | } |
90 | } |
91 | 91 | ||
92 | macro lsz name,[lng,data] { ; from MFAR [mike.dld] |
92 | macro lsz name,[lng,data] { ; from MFAR [mike.dld] |
93 | common |
93 | common |
94 | label name |
94 | label name |
95 | forward |
95 | forward |
96 | if lang eq lng |
96 | if lang eq lng |
97 | db data |
97 | db data |
98 | end if |
98 | end if |
99 | common |
99 | common |
100 | .size = $-name |
100 | .size = $-name |
101 | } |
101 | } |
102 | 102 | ||
103 | 103 | ||
104 | 104 | ||
105 | ; easy system call macro |
105 | ; easy system call macro |
106 | macro mpack dest, hsrc, lsrc |
106 | macro mpack dest, hsrc, lsrc |
107 | { |
107 | { |
108 | if (hsrc eqtype 0) & (lsrc eqtype 0) |
108 | if (hsrc eqtype 0) & (lsrc eqtype 0) |
109 | mov dest, (hsrc) shl 16 + lsrc |
109 | mov dest, (hsrc) shl 16 + lsrc |
110 | else |
110 | else |
111 | if (hsrc eqtype 0) & (~lsrc eqtype 0) |
111 | if (hsrc eqtype 0) & (~lsrc eqtype 0) |
112 | mov dest, (hsrc) shl 16 |
112 | mov dest, (hsrc) shl 16 |
113 | add dest, lsrc |
113 | add dest, lsrc |
114 | else |
114 | else |
115 | mov dest, hsrc |
115 | mov dest, hsrc |
116 | shl dest, 16 |
116 | shl dest, 16 |
117 | add dest, lsrc |
117 | add dest, lsrc |
118 | end if |
118 | end if |
119 | end if |
119 | end if |
120 | } |
120 | } |
121 | 121 | ||
122 | macro __mov reg,a,b { ; mike.dld |
122 | macro __mov reg,a,b { ; mike.dld |
123 | if (~a eq)&(~b eq) |
123 | if (~a eq)&(~b eq) |
124 | mpack reg,a,b |
124 | mpack reg,a,b |
125 | else if (~a eq)&(b eq) |
125 | else if (~a eq)&(b eq) |
126 | mov reg,a |
126 | mov reg,a |
127 | end if |
127 | end if |
128 | } |
128 | } |
129 | 129 | ||
130 | macro mcall a,b,c,d,e,f { ; mike.dld |
130 | macro mcall a,b,c,d,e,f { ; mike.dld |
131 | __mov eax,a |
131 | __mov eax,a |
132 | __mov ebx,b |
132 | __mov ebx,b |
133 | __mov ecx,c |
133 | __mov ecx,c |
134 | __mov edx,d |
134 | __mov edx,d |
135 | __mov esi,e |
135 | __mov esi,e |
136 | __mov edi,f |
136 | __mov edi,f |
137 | int 0x40 |
137 | int 0x40 |
138 | } |
138 | } |
139 | 139 | ||
140 | 140 | ||
141 | 141 | ||
142 | ; language for programs |
142 | ; language for programs |
143 | ;lang fix ru ; ru en fr ge fi |
143 | ;lang fix ru ; ru en fr ge fi |
144 | 144 | ||
145 | 145 | ||
146 | 146 | ||
147 | ; optimize the code for size |
147 | ; optimize the code for size |
148 | __regs fix |
148 | __regs fix |
149 | 149 | ||
150 | macro add arg1,arg2 |
150 | macro add arg1,arg2 |
151 | { |
151 | { |
152 | if (arg2 eqtype 0) |
152 | if (arg2 eqtype 0) |
153 | if (arg2) = 1 |
153 | if (arg2) = 1 |
154 | inc arg1 |
154 | inc arg1 |
155 | else |
155 | else |
156 | add arg1,arg2 |
156 | add arg1,arg2 |
157 | end if |
157 | end if |
158 | else |
158 | else |
159 | add arg1,arg2 |
159 | add arg1,arg2 |
160 | end if |
160 | end if |
161 | } |
161 | } |
162 | 162 | ||
163 | macro sub arg1,arg2 |
163 | macro sub arg1,arg2 |
164 | { |
164 | { |
165 | if (arg2 eqtype 0) |
165 | if (arg2 eqtype 0) |
166 | if (arg2) = 1 |
166 | if (arg2) = 1 |
167 | dec arg1 |
167 | dec arg1 |
168 | else |
168 | else |
169 | sub arg1,arg2 |
169 | sub arg1,arg2 |
170 | end if |
170 | end if |
171 | else |
171 | else |
172 | sub arg1,arg2 |
172 | sub arg1,arg2 |
173 | end if |
173 | end if |
174 | } |
174 | } |
175 | 175 | ||
176 | macro mov arg1,arg2 |
176 | macro mov arg1,arg2 |
177 | { |
177 | { |
178 | if (arg1 in __regs) & (arg2 eqtype 0) |
178 | if (arg1 in __regs) & (arg2 eqtype 0) |
179 | if (arg2) = 0 |
179 | if (arg2) = 0 |
180 | xor arg1,arg1 |
180 | xor arg1,arg1 |
181 | else if (arg2) = 1 |
181 | else if (arg2) = 1 |
182 | xor arg1,arg1 |
182 | xor arg1,arg1 |
183 | inc arg1 |
183 | inc arg1 |
184 | else if (arg2) = -1 |
184 | else if (arg2) = -1 |
185 | or arg1,-1 |
185 | or arg1,-1 |
186 | else if (arg2) > -128 & (arg2) < 128 |
186 | else if (arg2) > -128 & (arg2) < 128 |
187 | push arg2 |
187 | push arg2 |
188 | pop arg1 |
188 | pop arg1 |
189 | else |
189 | else |
190 | mov arg1,arg2 |
190 | mov arg1,arg2 |
191 | end if |
191 | end if |
192 | else |
192 | else |
193 | mov arg1,arg2 |
193 | mov arg1,arg2 |
194 | end if |
194 | end if |
195 | } |
195 | } |
196 | 196 | ||
197 | 197 | ||
198 | macro struct name |
198 | macro struct name |
199 | { |
199 | { |
200 | virtual at 0 |
200 | virtual at 0 |
201 | name name |
201 | name name |
202 | sizeof.#name = $ - name |
202 | sizeof.#name = $ - name |
203 | end virtual |
203 | end virtual |
204 | } |
204 | } |
205 | 205 | ||
206 | ; structures used in MeOS |
206 | ; structures used in MeOS |
207 | struc process_information |
207 | struc process_information |
208 | { |
208 | { |
209 | .cpu_usage dd ? ; +0 |
209 | .cpu_usage dd ? ; +0 |
210 | .window_stack_position dw ? ; +4 |
210 | .window_stack_position dw ? ; +4 |
211 | .window_stack_value dw ? ; +6 |
211 | .window_stack_value dw ? ; +6 |
212 | .not_used1 dw ? ; +8 |
212 | .not_used1 dw ? ; +8 |
213 | .process_name rb 12 ; +10 |
213 | .process_name rb 12 ; +10 |
214 | .memory_start dd ? ; +22 |
214 | .memory_start dd ? ; +22 |
215 | .used_memory dd ? ; +26 |
215 | .used_memory dd ? ; +26 |
216 | .PID dd ? ; +30 |
216 | .PID dd ? ; +30 |
217 | .x_start dd ? ; +34 |
217 | .x_start dd ? ; +34 |
218 | .y_start dd ? ; +38 |
218 | .y_start dd ? ; +38 |
219 | .x_size dd ? ; +42 |
219 | .x_size dd ? ; +42 |
220 | .y_size dd ? ; +46 |
220 | .y_size dd ? ; +46 |
221 | .slot_state dw ? ; +50 |
221 | .slot_state dw ? ; +50 |
222 | rb (1024-52) |
222 | rb (1024-52) |
223 | } |
223 | } |
224 | struct process_information |
224 | struct process_information |
225 | 225 | ||
226 | struc system_colors |
226 | struc system_colors |
227 | { |
227 | { |
228 | .frame dd ? |
228 | .frame dd ? |
229 | .grab dd ? |
229 | .grab dd ? |
230 | .grab_button dd ? |
230 | .work_3d_dark dd ? |
231 | .grab_button_text dd ? |
231 | .work_3d_light dd ? |
232 | .grab_text dd ? |
232 | .grab_text dd ? |
233 | .work dd ? |
233 | .work dd ? |
234 | .work_button dd ? |
234 | .work_button dd ? |
235 | .work_button_text dd ? |
235 | .work_button_text dd ? |
236 | .work_text dd ? |
236 | .work_text dd ? |
237 | .work_graph dd ? |
237 | .work_graph dd ? |
238 | } |
238 | } |
239 | struct system_colors |
239 | struct system_colors |
240 | 240 | ||
241 | 241 | ||
242 | ; constants |
242 | ; constants |
243 | 243 | ||
244 | ; events |
244 | ; events |
245 | EV_IDLE = 0 |
245 | EV_IDLE = 0 |
246 | EV_TIMER = 0 |
246 | EV_TIMER = 0 |
247 | EV_REDRAW = 1 |
247 | EV_REDRAW = 1 |
248 | EV_KEY = 2 |
248 | EV_KEY = 2 |
249 | EV_BUTTON = 3 |
249 | EV_BUTTON = 3 |
250 | EV_EXIT = 4 |
250 | EV_EXIT = 4 |
251 | EV_BACKGROUND = 5 |
251 | EV_BACKGROUND = 5 |
252 | EV_MOUSE = 6 |
252 | EV_MOUSE = 6 |
253 | EV_IPC = 7 |
253 | EV_IPC = 7 |
254 | EV_STACK = 8 |
254 | EV_STACK = 8 |
255 | 255 | ||
256 | ; event mask bits for function 40 |
256 | ; event mask bits for function 40 |
257 | EVM_REDRAW = 1b |
257 | EVM_REDRAW = 1b |
258 | EVM_KEY = 10b |
258 | EVM_KEY = 10b |
259 | EVM_BUTTON = 100b |
259 | EVM_BUTTON = 100b |
260 | EVM_EXIT = 1000b |
260 | EVM_EXIT = 1000b |
261 | EVM_BACKGROUND = 10000b |
261 | EVM_BACKGROUND = 10000b |
262 | EVM_MOUSE = 100000b |
262 | EVM_MOUSE = 100000b |
263 | EVM_IPC = 1000000b |
263 | EVM_IPC = 1000000b |
264 | EVM_STACK = 10000000b> |
264 | EVM_STACK = 10000000b> |