Rev 6219 | Rev 6832 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 6219 | Rev 6276 | ||
---|---|---|---|
1 | @^ fix macro comment { |
1 | @^ fix macro comment { |
2 | ^@ fix } |
2 | ^@ fix } |
3 | 3 | ||
4 | ; ------------------------- |
4 | ; ------------------------- |
5 | macro library [lname,fname] |
5 | macro library [lname,fname] |
6 | { |
6 | { |
7 | forward |
7 | forward |
8 | dd __#lname#_library_table__,__#lname#_library_name__ |
8 | dd __#lname#_library_table__,__#lname#_library_name__ |
9 | common |
9 | common |
10 | dd 0 |
10 | dd 0 |
11 | forward |
11 | forward |
12 | align 4 |
12 | align 4 |
13 | __#lname#_library_name__ db fname,0 |
13 | __#lname#_library_name__ db fname,0 |
14 | } |
14 | } |
15 | 15 | ||
16 | macro import lname,[name,sname] |
16 | macro import lname,[name,sname] |
17 | { |
17 | { |
18 | common |
18 | common |
19 | align 4 |
19 | align 4 |
20 | __#lname#_library_table__: |
20 | __#lname#_library_table__: |
21 | forward |
21 | forward |
22 | if used name |
22 | if used name |
23 | name dd __#name#_import_name__ |
23 | name dd __#name#_import_name__ |
24 | end if |
24 | end if |
25 | common |
25 | common |
26 | dd 0 |
26 | dd 0 |
27 | forward |
27 | forward |
28 | if used name |
28 | if used name |
29 | align 4 |
29 | align 4 |
30 | __#name#_import_name__ db sname,0 |
30 | __#name#_import_name__ db sname,0 |
31 | end if |
31 | end if |
32 | } |
32 | } |
33 | 33 | ||
34 | macro export [name,sname] |
34 | macro export [name,sname] |
35 | { |
35 | { |
36 | forward |
36 | forward |
37 | dd __#name#_export_name__,name |
37 | dd __#name#_export_name__,name |
38 | common |
38 | common |
39 | dd 0 |
39 | dd 0 |
40 | forward |
40 | forward |
41 | align 4 |
41 | align 4 |
42 | __#name#_export_name__ db sname,0 |
42 | __#name#_export_name__ db sname,0 |
43 | } |
43 | } |
44 | ; ------------------------- |
44 | ; ------------------------- |
45 | 45 | ||
46 | macro m2m dest,src { |
46 | macro m2m dest,src { |
47 | push src |
47 | push src |
48 | pop dest |
48 | pop dest |
49 | } |
49 | } |
50 | 50 | ||
51 | 51 | ||
52 | macro iglobal { |
52 | macro iglobal { |
53 | IGlobals equ IGlobals, |
53 | IGlobals equ IGlobals, |
54 | macro __IGlobalBlock { } |
54 | macro __IGlobalBlock { } |
55 | 55 | ||
56 | macro uglobal { |
56 | macro uglobal { |
57 | UGlobals equ UGlobals, |
57 | UGlobals equ UGlobals, |
58 | macro __UGlobalBlock { } |
58 | macro __UGlobalBlock { } |
59 | 59 | ||
60 | endg fix } ; Use endg for ending iglobal and uglobal blocks. |
60 | endg fix } ; Use endg for ending iglobal and uglobal blocks. |
61 | 61 | ||
62 | 62 | ||
63 | macro IncludeIGlobals{ |
63 | macro IncludeIGlobals{ |
64 | macro IGlobals dummy,[n] \{ __IGlobalBlock |
64 | macro IGlobals dummy,[n] \{ __IGlobalBlock |
65 | purge __IGlobalBlock \} |
65 | purge __IGlobalBlock \} |
66 | match I, IGlobals \{ I \} } |
66 | match I, IGlobals \{ I \} } |
67 | 67 | ||
68 | macro IncludeUGlobals{ |
68 | macro IncludeUGlobals{ |
69 | macro UGlobals dummy,[n] \{ |
69 | macro UGlobals dummy,[n] \{ |
70 | \common |
70 | \common |
71 | \local begin, size |
71 | \local begin, size |
72 | begin = $ |
72 | begin = $ |
73 | virtual at $ |
73 | virtual at $ |
74 | \forward |
74 | \forward |
75 | __UGlobalBlock |
75 | __UGlobalBlock |
76 | purge __UGlobalBlock |
76 | purge __UGlobalBlock |
77 | \common |
77 | \common |
78 | size = $ - begin |
78 | size = $ - begin |
79 | end virtual |
79 | end virtual |
80 | rb size |
80 | rb size |
81 | \} |
81 | \} |
82 | match U, UGlobals \{ U \} } |
82 | match U, UGlobals \{ U \} } |
83 | 83 | ||
84 | uglobal |
84 | uglobal |
85 | endg |
85 | endg |
86 | 86 | ||
87 | iglobal |
87 | iglobal |
88 | endg |
88 | endg |
89 | 89 | ||
90 | 90 | ||
91 | ; new application structure |
91 | ; new application structure |
92 | macro meos_app_start |
92 | macro meos_app_start |
93 | { |
93 | { |
94 | use32 |
94 | use32 |
95 | org 0x0 |
95 | org 0x0 |
96 | 96 | ||
97 | db 'MENUET01' |
97 | db 'MENUET01' |
98 | dd 0x01 |
98 | dd 0x01 |
99 | dd __start |
99 | dd __start |
100 | dd __end |
100 | dd __end |
101 | dd __memory |
101 | dd __memory |
102 | dd __stack |
102 | dd __stack |
103 | 103 | ||
104 | if used __params & ~defined __params |
104 | if used __params & ~defined __params |
105 | dd __params |
105 | dd __params |
106 | else |
106 | else |
107 | dd 0x0 |
107 | dd 0x0 |
108 | end if |
108 | end if |
109 | 109 | ||
110 | dd 0x0 |
110 | dd 0x0 |
111 | } |
111 | } |
112 | MEOS_APP_START fix meos_app_start |
112 | MEOS_APP_START fix meos_app_start |
113 | 113 | ||
114 | macro code |
114 | macro code |
115 | { |
115 | { |
116 | __start: |
116 | __start: |
117 | } |
117 | } |
118 | CODE fix code |
118 | CODE fix code |
119 | 119 | ||
120 | macro data |
120 | macro data |
121 | { |
121 | { |
122 | __data: |
122 | __data: |
123 | IncludeIGlobals |
123 | IncludeIGlobals |
124 | } |
124 | } |
125 | DATA fix data |
125 | DATA fix data |
126 | 126 | ||
127 | macro udata |
127 | macro udata |
128 | { |
128 | { |
129 | if used __params & ~defined __params |
129 | if used __params & ~defined __params |
130 | __params: |
130 | __params: |
131 | db 0 |
131 | db 0 |
132 | __end: |
132 | __end: |
133 | rb 255 |
133 | rb 255 |
134 | else |
134 | else |
135 | __end: |
135 | __end: |
136 | end if |
136 | end if |
137 | __udata: |
137 | __udata: |
138 | IncludeUGlobals |
138 | IncludeUGlobals |
139 | } |
139 | } |
140 | UDATA fix udata |
140 | UDATA fix udata |
141 | 141 | ||
142 | macro meos_app_end |
142 | macro meos_app_end |
143 | { |
143 | { |
144 | align 32 |
144 | align 32 |
145 | rb 2048 |
145 | rb 2048 |
146 | __stack: |
146 | __stack: |
147 | __memory: |
147 | __memory: |
148 | } |
148 | } |
149 | MEOS_APP_END fix meos_app_end |
149 | MEOS_APP_END fix meos_app_end |
150 | 150 | ||
151 | 151 | ||
152 | ; macro for defining multiline text data |
152 | ; macro for defining multiline text data |
153 | struc mstr [sstring] |
153 | struc mstr [sstring] |
154 | { |
154 | { |
155 | forward |
155 | forward |
156 | local ssize |
156 | local ssize |
157 | virtual at 0 |
157 | virtual at 0 |
158 | db sstring |
158 | db sstring |
159 | ssize = $ |
159 | ssize = $ |
160 | end virtual |
160 | end virtual |
161 | dd ssize |
161 | dd ssize |
162 | db sstring |
162 | db sstring |
163 | common |
163 | common |
164 | dd -1 |
164 | dd -1 |
165 | } |
165 | } |
166 | 166 | ||
167 | ; macro for defining multiline text data |
167 | ; macro for defining multiline text data |
168 | struc mls [sstring] |
168 | struc mls [sstring] |
169 | { |
169 | { |
170 | forward |
170 | forward |
171 | local ssize |
171 | local ssize |
172 | virtual at 0 |
172 | virtual at 0 |
173 | db sstring ; mod |
173 | db sstring ; mod |
174 | ssize = $ |
174 | ssize = $ |
175 | end virtual |
175 | end virtual |
176 | db ssize |
176 | db ssize |
177 | db sstring |
177 | db sstring |
178 | common |
178 | common |
179 | db -1 ; mod |
179 | db -1 ; mod |
180 | } |
180 | } |
181 | 181 | ||
182 | 182 | ||
183 | 183 | ||
184 | ; strings |
184 | ; strings |
185 | macro sz name,[data] { ; from MFAR [mike.dld] |
185 | macro sz name,[data] { ; from MFAR [mike.dld] |
186 | common |
186 | common |
187 | if used name |
187 | if used name |
188 | name db data |
188 | name db data |
189 | .size = $-name |
189 | .size = $-name |
190 | end if |
190 | end if |
191 | } |
191 | } |
192 | 192 | ||
193 | macro szZ name,[data] { ; same as sz, but for zero terminated string [dunkaist] |
193 | macro szZ name,[data] { ; same as sz, but for zero terminated string [dunkaist] |
194 | common |
194 | common |
195 | if used name |
195 | if used name |
196 | name db data,0 |
196 | name db data,0 |
197 | .size = $-name-1 |
197 | .size = $-name-1 |
198 | end if |
198 | end if |
199 | } |
199 | } |
200 | sz0 fix szZ |
200 | sz0 fix szZ |
201 | 201 | ||
202 | macro lsz name,[lng,data] { ; from MFAR [mike.dld] |
202 | macro lsz name,[lng,data] { ; from MFAR [mike.dld] |
203 | common |
203 | common |
204 | if used name |
204 | if used name |
205 | label name |
205 | label name |
206 | forward |
206 | forward |
207 | if lang eq lng |
207 | if lang eq lng |
208 | db data |
208 | db data |
209 | end if |
209 | end if |
210 | common |
210 | common |
211 | .size = $-name |
211 | .size = $-name |
212 | end if |
212 | end if |
213 | } |
213 | } |
214 | 214 | ||
215 | macro szc name,elsz,[data] { ; from MFAR [mike.dld] |
215 | macro szc name,elsz,[data] { ; from MFAR [mike.dld] |
216 | common |
216 | common |
217 | local s,m |
217 | local s,m |
218 | m = 0 |
218 | m = 0 |
219 | if used name |
219 | if used name |
220 | label name |
220 | label name |
221 | forward |
221 | forward |
222 | virtual at 0 |
222 | virtual at 0 |
223 | db data |
223 | db data |
224 | s = $ |
224 | s = $ |
225 | end virtual |
225 | end virtual |
226 | d#elsz s |
226 | d#elsz s |
227 | if m < s |
227 | if m < s |
228 | m = s |
228 | m = s |
229 | end if |
229 | end if |
230 | db data |
230 | db data |
231 | common |
231 | common |
232 | .size = $-name |
232 | .size = $-name |
233 | .maxl = m |
233 | .maxl = m |
234 | end if |
234 | end if |
235 | } |
235 | } |
236 | 236 | ||
237 | macro lszc name,elsz,[lng,data] { ; from MFAR [mike.dld] |
237 | macro lszc name,elsz,[lng,data] { ; from MFAR [mike.dld] |
238 | common |
238 | common |
239 | local s,m,c |
239 | local s,m,c |
240 | m = 0 |
240 | m = 0 |
241 | c = 0 |
241 | c = 0 |
242 | if used name |
242 | if used name |
243 | label name |
243 | label name |
244 | forward |
244 | forward |
245 | if lang eq lng |
245 | if lang eq lng |
246 | virtual at 0 |
246 | virtual at 0 |
247 | db data |
247 | db data |
248 | s = $ |
248 | s = $ |
249 | end virtual |
249 | end virtual |
250 | d#elsz s |
250 | d#elsz s |
251 | if m < s |
251 | if m < s |
252 | m = s |
252 | m = s |
253 | end if |
253 | end if |
254 | db data |
254 | db data |
255 | c = c+1 |
255 | c = c+1 |
256 | end if |
256 | end if |
257 | common |
257 | common |
258 | .size = $-name |
258 | .size = $-name |
259 | .maxl = m |
259 | .maxl = m |
260 | .count = c |
260 | .count = c |
261 | end if |
261 | end if |
262 | } |
262 | } |
263 | 263 | ||
264 | 264 | ||
265 | ; easy system call macro |
265 | ; easy system call macro |
266 | macro mpack dest, hsrc, lsrc |
266 | macro mpack dest, hsrc, lsrc |
267 | { |
267 | { |
268 | if (hsrc eqtype 0) & (lsrc eqtype 0) |
268 | if (hsrc eqtype 0) & (lsrc eqtype 0) |
269 | mov dest, (hsrc) shl 16 + lsrc |
269 | mov dest, (hsrc) shl 16 + lsrc |
270 | else |
270 | else |
271 | if (hsrc eqtype 0) & (~lsrc eqtype 0) |
271 | if (hsrc eqtype 0) & (~lsrc eqtype 0) |
272 | mov dest, (hsrc) shl 16 |
272 | mov dest, (hsrc) shl 16 |
273 | add dest, lsrc |
273 | add dest, lsrc |
274 | else |
274 | else |
275 | mov dest, hsrc |
275 | mov dest, hsrc |
276 | shl dest, 16 |
276 | shl dest, 16 |
277 | add dest, lsrc |
277 | add dest, lsrc |
278 | end if |
278 | end if |
279 | end if |
279 | end if |
280 | } |
280 | } |
281 | 281 | ||
282 | macro __mov reg,a,b { ; mike.dld |
282 | macro __mov reg,a,b { ; mike.dld |
283 | if (~a eq)&(~b eq) |
283 | if (~a eq)&(~b eq) |
284 | mpack reg,a,b |
284 | mpack reg,a,b |
285 | else if (~a eq)&(b eq) |
285 | else if (~a eq)&(b eq) |
286 | mov reg,a |
286 | mov reg,a |
287 | end if |
287 | end if |
288 | } |
288 | } |
289 | 289 | ||
290 | 290 | ||
291 | include 'config.inc' |
291 | include 'config.inc' |
292 | ;__CPU_type equ p5 |
292 | ;__CPU_type equ p5 |
293 | SYSENTER_VAR equ 0 |
293 | SYSENTER_VAR equ 0 |
294 | 294 | ||
295 | macro mcall a,b,c,d,e,f { ; mike.dld, updated by Ghost for Fast System Calls |
295 | macro mcall a,b,c,d,e,f { ; mike.dld, updated by Ghost for Fast System Calls |
296 | local ..ret_point |
296 | local ..ret_point |
297 | __mov eax,a |
297 | __mov eax,a |
298 | __mov ebx,b |
298 | __mov ebx,b |
299 | __mov ecx,c |
299 | __mov ecx,c |
300 | __mov edx,d |
300 | __mov edx,d |
301 | __mov esi,e |
301 | __mov esi,e |
302 | __mov edi,f |
302 | __mov edi,f |
303 | 303 | ||
304 | if __CPU_type eq p5 |
304 | if __CPU_type eq p5 |
305 | int 0x40 |
305 | int 0x40 |
306 | else |
306 | else |
307 | if __CPU_type eq p6 |
307 | if __CPU_type eq p6 |
308 | push ebp |
308 | push ebp |
309 | mov ebp, esp |
309 | mov ebp, esp |
310 | push ..ret_point ; it may be 2 or 5 byte |
310 | push ..ret_point ; it may be 2 or 5 byte |
311 | sysenter |
311 | sysenter |
312 | ..ret_point: |
312 | ..ret_point: |
313 | pop edx |
313 | pop edx |
314 | pop ecx |
314 | pop ecx |
315 | 315 | ||
316 | else |
316 | else |
317 | if __CPU_type eq k6 |
317 | if __CPU_type eq k6 |
318 | push ecx |
318 | push ecx |
319 | syscall |
319 | syscall |
320 | pop ecx |
320 | pop ecx |
321 | else |
321 | else |
322 | display 'ERROR : unknown CPU type (set to p5)', 10, 13 |
322 | display 'ERROR : unknown CPU type (set to p5)', 10, 13 |
323 | __CPU_type equ p5 |
323 | __CPU_type equ p5 |
324 | int 0x40 |
324 | int 0x40 |
325 | end if |
325 | end if |
326 | end if |
326 | end if |
327 | end if |
327 | end if |
328 | } |
328 | } |
329 | 329 | ||
330 | 330 | ||
331 | ; ------------------------- |
331 | ; ------------------------- |
332 | macro header a,[b] { |
332 | macro header a,[b] { |
333 | common |
333 | common |
334 | use32 |
334 | use32 |
335 | org 0 |
335 | org 0 |
336 | db 'MENUET',a |
336 | db 'MENUET',a |
337 | forward |
337 | forward |
338 | if b eq |
338 | if b eq |
339 | dd 0 |
339 | dd 0 |
340 | else |
340 | else |
341 | dd b |
341 | dd b |
342 | end if } |
342 | end if } |
343 | macro section name { align 16 |
343 | macro section name { align 16 |
344 | label name } |
344 | label name } |
345 | macro func name { |
345 | macro func name { |
346 | if ~used name |
346 | if ~used name |
347 | display 'FUNC NOT USED: ',`name,13,10 |
347 | display 'FUNC NOT USED: ',`name,13,10 |
348 | else |
348 | else |
349 | align 4 |
349 | align 4 |
350 | name: |
350 | name: |
351 | ;diff16 `name,0,name |
351 | ;diff16 `name,0,name |
352 | ;pushad |
352 | ;pushad |
353 | ;pushfd |
353 | ;pushfd |
354 | ;dps `name |
354 | ;dps `name |
355 | ;newline |
355 | ;newline |
356 | ;mcall 5,1 |
356 | ;mcall 5,1 |
357 | ;popfd |
357 | ;popfd |
358 | ;popad |
358 | ;popad |
359 | } |
359 | } |
360 | macro endf { end if } |
360 | macro endf { end if } |
361 | 361 | ||
362 | macro diff16 title,l1,l2 |
362 | macro diff16 title,l1,l2 |
363 | { |
363 | { |
364 | local s,d |
364 | local s,d |
365 | s = l2-l1 |
365 | s = l2-l1 |
366 | display title,': 0x' |
366 | display title,': 0x' |
367 | repeat 8 |
367 | repeat 8 |
368 | d = '0' + s shr ((8-%) shl 2) and $0F |
368 | d = '0' + s shr ((8-%) shl 2) and $0F |
369 | if d > '9' |
369 | if d > '9' |
370 | d = d + 'A'-'9'-1 |
370 | d = d + 'A'-'9'-1 |
371 | end if |
371 | end if |
372 | display d |
372 | display d |
373 | end repeat |
373 | end repeat |
374 | display 13,10 |
374 | display 13,10 |
375 | } |
375 | } |
376 | 376 | ||
377 | macro diff10 title,l1,l2 |
377 | macro diff10 title,l1,l2 |
378 | { |
378 | { |
379 | local s,d,z,m |
379 | local s,d,z,m |
380 | s = l2-l1 |
380 | s = l2-l1 |
381 | z = 0 |
381 | z = 0 |
382 | m = 1000000000 |
382 | m = 1000000000 |
383 | display title,': ' |
383 | display title,': ' |
384 | repeat 10 |
384 | repeat 10 |
385 | d = '0' + s / m |
385 | d = '0' + s / m |
386 | s = s - (s/m)*m |
386 | s = s - (s/m)*m |
387 | m = m / 10 |
387 | m = m / 10 |
388 | if d <> '0' |
388 | if d <> '0' |
389 | z = 1 |
389 | z = 1 |
390 | end if |
390 | end if |
391 | if z <> 0 |
391 | if z <> 0 |
392 | display d |
392 | display d |
393 | end if |
393 | end if |
394 | end repeat |
394 | end repeat |
395 | display 13,10 |
395 | display 13,10 |
396 | } |
396 | } |
397 | 397 | ||
398 | 398 | ||
399 | macro movi arg1,arg2 |
399 | macro movi arg1,arg2 |
400 | { |
400 | { |
401 | if (arg1 in |
401 | if (arg1 in |
402 | if (arg2) = 0 |
402 | if (arg2) = 0 |
403 | xor arg1,arg1 |
403 | xor arg1,arg1 |
404 | else if (arg2) = 1 |
404 | else if (arg2) = 1 |
405 | xor arg1,arg1 |
405 | xor arg1,arg1 |
406 | inc arg1 |
406 | inc arg1 |
407 | else if (arg2) = -1 |
407 | else if (arg2) = -1 |
408 | or arg1,-1 |
408 | or arg1,-1 |
409 | else if (arg2) >= -128 & (arg2) <= 127 |
409 | else if (arg2) >= -128 & (arg2) <= 127 |
410 | push arg2 |
410 | push arg2 |
411 | pop arg1 |
411 | pop arg1 |
412 | else |
412 | else |
413 | mov arg1,arg2 |
413 | mov arg1,arg2 |
414 | end if |
414 | end if |
415 | else |
415 | else |
416 | mov arg1,arg2 |
416 | mov arg1,arg2 |
417 | end if |
417 | end if |
418 | } |
418 | } |
419 | 419 | ||
420 | 420 | ||
421 | macro RGB [a] { |
421 | macro RGB [a] { |
422 | common |
422 | common |
423 | match (r=,g=,b),a \{ |
423 | match (r=,g=,b),a \{ |
424 | \dd ((r) shl 16) or ((g) shl 8) or (b) |
424 | \dd ((r) shl 16) or ((g) shl 8) or (b) |
425 | \} |
425 | \} |
426 | } |
426 | } |
427 | 427 | ||
428 | 428 | ||
429 | struc POINT _t,_dx,_dy { |
429 | struc POINT _t,_dx,_dy { |
430 | .x _t _dx |
430 | .x _t _dx |
431 | .y _t _dy |
431 | .y _t _dy |
432 | } |
432 | } |
433 | 433 | ||
434 | ; structure definition helper |
434 | ; structure definition helper |
435 | include 'struct.inc' |
435 | include 'struct.inc' |
436 | 436 | ||
437 | struct RECT |
437 | struct RECT |
438 | left dd ? |
438 | left dd ? |
439 | top dd ? |
439 | top dd ? |
440 | right dd ? |
440 | right dd ? |
441 | bottom dd ? |
441 | bottom dd ? |
442 | ends |
442 | ends |
443 | 443 | ||
444 | struct BOX |
444 | struct BOX |
445 | left dd ? |
445 | left dd ? |
446 | top dd ? |
446 | top dd ? |
447 | width dd ? |
447 | width dd ? |
448 | height dd ? |
448 | height dd ? |
449 | ends |
449 | ends |
450 | 450 | ||
451 | ; structures used in KolibriOS |
451 | ; structures used in KolibriOS |
452 | struct process_information |
452 | struct process_information |
453 | cpu_usage dd ? ; +0 |
453 | cpu_usage dd ? ; +0 |
454 | window_stack_position dw ? ; +4 |
454 | window_stack_position dw ? ; +4 |
455 | window_stack_value dw ? ; +6 |
455 | window_stack_value dw ? ; +6 |
456 | dw ? ; +8 |
456 | dw ? ; +8 |
457 | process_name rb 12 ; +10 |
457 | process_name rb 12 ; +10 |
458 | memory_start dd ? ; +22 |
458 | memory_start dd ? ; +22 |
459 | used_memory dd ? ; +26 |
459 | used_memory dd ? ; +26 |
460 | PID dd ? ; +30 |
460 | PID dd ? ; +30 |
461 | box BOX ; +34 |
461 | box BOX ; +34 |
462 | slot_state dw ? ; +50 |
462 | slot_state dw ? ; +50 |
463 | dw ? ; +52 |
463 | dw ? ; +52 |
464 | client_box BOX ; +54 |
464 | client_box BOX ; +54 |
465 | wnd_state db ? ; +70 |
465 | wnd_state db ? ; +70 |
466 | rb (1024-71) |
466 | rb (1024-71) |
467 | ends |
467 | ends |
468 | 468 | ||
469 | struct system_colors |
469 | struct system_colors |
470 | frame dd ? ;nonset1 |
470 | frame dd ? ;nonset1 |
471 | grab dd ? ;nonset2 |
471 | grab dd ? ;nonset2 |
472 | work_3d_dark dd ? |
472 | work_3d_dark dd ? |
473 | work_3d_light dd ? |
473 | work_3d_light dd ? |
474 | grab_text dd ? ;nonset3 |
474 | grab_text dd ? ;window_title |
475 | work dd ? |
475 | work dd ? |
476 | work_button dd ? |
476 | work_button dd ? |
477 | work_button_text dd ? |
477 | work_button_text dd ? |
478 | work_text dd ? |
478 | work_text dd ? |
479 | work_graph dd ? |
479 | work_graph dd ? |
480 | ends |
480 | ends |
481 | 481 | ||
482 | struct FILEDATE |
482 | struct FILEDATE |
483 | Second db ? |
483 | Second db ? |
484 | Minute db ? |
484 | Minute db ? |
485 | Hour db ? |
485 | Hour db ? |
486 | db ? |
486 | db ? |
487 | Day db ? |
487 | Day db ? |
488 | Month db ? |
488 | Month db ? |
489 | Year dw ? |
489 | Year dw ? |
490 | ends |
490 | ends |
491 | 491 | ||
492 | struct FILEINFO |
492 | struct FILEINFO |
493 | Attributes dd ? |
493 | Attributes dd ? |
494 | IsUnicode db ? |
494 | IsUnicode db ? |
495 | db 3 dup(?) |
495 | db 3 dup(?) |
496 | DateCreate FILEDATE |
496 | DateCreate FILEDATE |
497 | DateAccess FILEDATE |
497 | DateAccess FILEDATE |
498 | DateModify FILEDATE |
498 | DateModify FILEDATE |
499 | Size dq ? |
499 | Size dq ? |
500 | ends |
500 | ends |
501 | 501 | ||
502 | cmove fix cmovz |
502 | cmove fix cmovz |
503 | 503 | ||
504 | macro cmovz reg1, reg2 { |
504 | macro cmovz reg1, reg2 { |
505 | 505 | ||
506 | local ..jumpaddr |
506 | local ..jumpaddr |
507 | 507 | ||
508 | if __CPU_type eq p5 ; CMOVcc isnt supported on the P5 |
508 | if __CPU_type eq p5 ; CMOVcc isnt supported on the P5 |
509 | jnz ..jumpaddr |
509 | jnz ..jumpaddr |
510 | mov reg1, reg2 |
510 | mov reg1, reg2 |
511 | ..jumpaddr: |
511 | ..jumpaddr: |
512 | else |
512 | else |
513 | cmovz reg1, reg2 |
513 | cmovz reg1, reg2 |
514 | end if |
514 | end if |
515 | 515 | ||
516 | } |
516 | } |
517 | 517 | ||
518 | cmovne fix cmovnz |
518 | cmovne fix cmovnz |
519 | 519 | ||
520 | macro cmovnz reg1, reg2 { |
520 | macro cmovnz reg1, reg2 { |
521 | 521 | ||
522 | local ..jumpaddr |
522 | local ..jumpaddr |
523 | 523 | ||
524 | if __CPU_type eq p5 ; CMOVcc isnt supported on the P5 |
524 | if __CPU_type eq p5 ; CMOVcc isnt supported on the P5 |
525 | jz ..jumpaddr |
525 | jz ..jumpaddr |
526 | mov reg1, reg2 |
526 | mov reg1, reg2 |
527 | ..jumpaddr: |
527 | ..jumpaddr: |
528 | else |
528 | else |
529 | cmovnz reg1, reg2 |
529 | cmovnz reg1, reg2 |
530 | end if |
530 | end if |
531 | 531 | ||
532 | } |
532 | } |
533 | 533 | ||
534 | macro cmovg reg1, reg2 { |
534 | macro cmovg reg1, reg2 { |
535 | 535 | ||
536 | local ..jumpaddr |
536 | local ..jumpaddr |
537 | 537 | ||
538 | if __CPU_type eq p5 ; CMOVcc isnt supported on the P5 |
538 | if __CPU_type eq p5 ; CMOVcc isnt supported on the P5 |
539 | jle ..jumpaddr |
539 | jle ..jumpaddr |
540 | mov reg1, reg2 |
540 | mov reg1, reg2 |
541 | ..jumpaddr: |
541 | ..jumpaddr: |
542 | else |
542 | else |
543 | cmovg reg1, reg2 |
543 | cmovg reg1, reg2 |
544 | end if |
544 | end if |
545 | } |
545 | } |
546 | 546 | ||
547 | macro cmovl reg1, reg2 { |
547 | macro cmovl reg1, reg2 { |
548 | 548 | ||
549 | local ..jumpaddr |
549 | local ..jumpaddr |
550 | 550 | ||
551 | if __CPU_type eq p5 ; CMOVcc isnt supported on the P5 |
551 | if __CPU_type eq p5 ; CMOVcc isnt supported on the P5 |
552 | jge ..jumpaddr |
552 | jge ..jumpaddr |
553 | mov reg1, reg2 |
553 | mov reg1, reg2 |
554 | ..jumpaddr: |
554 | ..jumpaddr: |
555 | else |
555 | else |
556 | cmovl reg1, reg2 |
556 | cmovl reg1, reg2 |
557 | end if |
557 | end if |
558 | } |
558 | } |
559 | 559 | ||
560 | ; constants |
560 | ; constants |
561 | 561 | ||
562 | ; events |
562 | ; events |
563 | EV_IDLE = 0 |
563 | EV_IDLE = 0 |
564 | EV_TIMER = 0 |
564 | EV_TIMER = 0 |
565 | EV_REDRAW = 1 |
565 | EV_REDRAW = 1 |
566 | EV_KEY = 2 |
566 | EV_KEY = 2 |
567 | EV_BUTTON = 3 |
567 | EV_BUTTON = 3 |
568 | EV_EXIT = 4 |
568 | EV_EXIT = 4 |
569 | EV_BACKGROUND = 5 |
569 | EV_BACKGROUND = 5 |
570 | EV_MOUSE = 6 |
570 | EV_MOUSE = 6 |
571 | EV_IPC = 7 |
571 | EV_IPC = 7 |
572 | EV_STACK = 8 |
572 | EV_STACK = 8 |
573 | 573 | ||
574 | ; event mask bits for function 40 |
574 | ; event mask bits for function 40 |
575 | EVM_REDRAW = 1b |
575 | EVM_REDRAW = 1b |
576 | EVM_KEY = 10b |
576 | EVM_KEY = 10b |
577 | EVM_BUTTON = 100b |
577 | EVM_BUTTON = 100b |
578 | EVM_EXIT = 1000b |
578 | EVM_EXIT = 1000b |
579 | EVM_BACKGROUND = 10000b |
579 | EVM_BACKGROUND = 10000b |
580 | EVM_MOUSE = 100000b |
580 | EVM_MOUSE = 100000b |
581 | EVM_IPC = 1000000b |
581 | EVM_IPC = 1000000b |
582 | EVM_STACK = 10000000b |
582 | EVM_STACK = 10000000b |
583 | EVM_DEBUG = 100000000b |
583 | EVM_DEBUG = 100000000b |
584 | EVM_STACK2 = 1000000000b |
584 | EVM_STACK2 = 1000000000b |
585 | 585 | ||
586 | EVM_MOUSE_FILTER = 0x80000000 |
586 | EVM_MOUSE_FILTER = 0x80000000 |
587 | EVM_CURSOR_FILTER = 0x40000000=>>>>> |
587 | EVM_CURSOR_FILTER = 0x40000000=>>>>> |