Rev 8153 | Rev 8179 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 8153 | Rev 8165 | ||
---|---|---|---|
Line 77... | Line 77... | ||
77 | } |
77 | } |
Line 78... | Line 78... | ||
78 | 78 | ||
79 | proc @Kolibri@Main$qv |
79 | proc @Kolibri@Main$qv |
80 | and esp,not 3 |
80 | and esp,not 3 |
81 | sub esp,1024 |
81 | sub esp,1024 |
82 | mov eax,9 |
82 | mov eax,SF_THREAD_INFO |
83 | mov ebx,esp |
83 | mov ebx,esp |
84 | mov ecx,-1 |
84 | mov ecx,-1 |
85 | int 0x40 |
85 | int 0x40 |
86 | mov ebx,[esp+26] |
86 | mov ebx,[esp+26] |
Line 95... | Line 95... | ||
95 | end if |
95 | end if |
96 | xor eax,eax |
96 | xor eax,eax |
97 | cld |
97 | cld |
98 | mov edi,@Kolibri@_ThreadTable |
98 | mov edi,@Kolibri@_ThreadTable |
99 | mov ecx,256 |
99 | mov ecx,256 |
100 | rep stos dword [edi] |
100 | rep stosd |
101 | mov esi,@Kolibri@GetPid$qv |
101 | mov esi,@Kolibri@GetPid$qv |
102 | mov edi,@Kolibri@_ThreadSavedBegProc |
102 | mov edi,@Kolibri@_ThreadSavedBegProc |
103 | movs dword [edi],[esi] |
103 | movsd |
104 | movs dword [edi],[esi] |
104 | movsd |
105 | mov esi,@Kolibri@GetThreadData$qv |
105 | mov esi,@Kolibri@GetThreadData$qv |
106 | movs dword [edi],[esi] |
106 | movsd |
107 | movs dword [edi],[esi] |
107 | movsd |
108 | Kolibri_Put_MovEaxVal_Ret @Kolibri@GetPid$qv,edx |
108 | Kolibri_Put_MovEaxVal_Ret @Kolibri@GetPid$qv,edx |
109 | if defined KolibriHeapInit |
109 | if defined KolibriHeapInit |
110 | mov ecx,esp |
110 | mov ecx,esp |
111 | push ebx |
111 | push ebx |
112 | push ecx |
112 | push ecx |
Line 140... | Line 140... | ||
140 | xchg ebp,[esp+8] |
140 | xchg ebp,[esp+8] |
141 | push esi edi |
141 | push esi edi |
142 | sub esp,KOLIBRI_THREAD_DATA_LEN*4 |
142 | sub esp,KOLIBRI_THREAD_DATA_LEN*4 |
143 | mov [esp],ebx |
143 | mov [esp],ebx |
144 | mov [esp+4],ebp |
144 | mov [esp+4],ebp |
145 | mov eax,40 |
145 | mov eax,SF_SET_EVENTS_MASK |
146 | mov ebx,0x27 |
146 | mov ebx,0x27 |
147 | int 0x40 |
147 | int 0x40 |
148 | mov ebx,esp |
148 | mov ebx,esp |
149 | cmp byte [@Kolibri@_ThreadSavedBegProc],0x90 |
149 | cmp byte [@Kolibri@_ThreadSavedBegProc],0x90 |
150 | jz .main_else_first_check |
150 | jz .main_else_first_check |
Line 164... | Line 164... | ||
164 | test al,al |
164 | test al,al |
165 | jnz .main_test_close_first |
165 | jnz .main_test_close_first |
166 | jmp .main_end |
166 | jmp .main_end |
167 | .main_close_first: |
167 | .main_close_first: |
168 | btr dword [esp+KOLIBRI_THREAD_DATA_FLAG*4],31 |
168 | btr dword [esp+KOLIBRI_THREAD_DATA_FLAG*4],31 |
- | 169 | if defined @@KolibriOnClose$qppv |
|
169 | push esp |
170 | push esp |
170 | call @@KolibriOnClose$qppv |
171 | call @@KolibriOnClose$qppv |
171 | pop ecx |
172 | pop ecx |
172 | test al,al |
173 | test al,al |
173 | jnz .main_end |
174 | jnz .main_end |
- | 175 | end if |
|
174 | .main_test_close_first: |
176 | .main_test_close_first: |
175 | cmp dword [esp+KOLIBRI_THREAD_DATA_FLAG*4],0 |
177 | cmp dword [esp+KOLIBRI_THREAD_DATA_FLAG*4],0 |
176 | jl .main_close_first |
178 | jl .main_close_first |
177 | ; push esp |
179 | ; push esp |
178 | ; push dword 1 |
180 | ; push dword 1 |
179 | ; call @Kolibri@Redraw$qippv |
181 | ; call @Kolibri@Redraw$qippv |
180 | ; add esp,8 |
182 | ; add esp,8 |
181 | .main_paint_msg: |
183 | .main_paint_msg: |
182 | or dword [esp+KOLIBRI_THREAD_DATA_FLAG*4],3 |
184 | or dword [esp+KOLIBRI_THREAD_DATA_FLAG*4],3 |
183 | sub esp,1024 |
185 | sub esp,1024 |
184 | mov eax,9 |
186 | mov eax,SF_THREAD_INFO |
185 | mov ebx,esp |
187 | mov ebx,esp |
186 | mov ecx,-1 |
188 | mov ecx,-1 |
187 | int 0x40 |
189 | int 0x40 |
188 | mov eax,[esp+34] |
190 | mov eax,[esp+34] |
189 | mov ebx,[esp+38] |
191 | mov ebx,[esp+38] |
Line 195... | Line 197... | ||
195 | cmp edx,[esp+KOLIBRI_THREAD_DATA_LAST_SY*4] |
197 | cmp edx,[esp+KOLIBRI_THREAD_DATA_LAST_SY*4] |
196 | jz .main_paint |
198 | jz .main_paint |
197 | .main_size: |
199 | .main_size: |
198 | mov [esp+KOLIBRI_THREAD_DATA_LAST_SX*4],ecx |
200 | mov [esp+KOLIBRI_THREAD_DATA_LAST_SX*4],ecx |
199 | mov [esp+KOLIBRI_THREAD_DATA_LAST_SY*4],edx |
201 | mov [esp+KOLIBRI_THREAD_DATA_LAST_SY*4],edx |
- | 202 | if defined @@KolibriOnSize$qpippv |
|
200 | push edx |
203 | push edx |
201 | push ecx |
204 | push ecx |
202 | push ebx |
205 | push ebx |
203 | push eax |
206 | push eax |
204 | lea ecx,[esp+16] |
207 | lea ecx,[esp+16] |
205 | mov edx,esp |
208 | mov edx,esp |
206 | push ecx |
209 | push ecx |
207 | push edx |
210 | push edx |
208 | call @@KolibriOnSize$qpippv |
211 | call @@KolibriOnSize$qpippv |
209 | add esp,24 |
212 | add esp,24 |
- | 213 | end if |
|
210 | test dword [esp+KOLIBRI_THREAD_DATA_FLAG*4],3 |
214 | test dword [esp+KOLIBRI_THREAD_DATA_FLAG*4],3 |
211 | jz .main_cycle |
215 | jz .main_cycle |
212 | .main_paint: |
216 | .main_paint: |
213 | cmp dword [esp+KOLIBRI_THREAD_DATA_FLAG*4],0 |
217 | cmp dword [esp+KOLIBRI_THREAD_DATA_FLAG*4],0 |
214 | jl .main_close |
218 | jl .main_close |
215 | push esp |
219 | push esp |
216 | push dword 0 |
220 | push dword 0 |
217 | call @Kolibri@Redraw$qippv |
221 | call @Kolibri@Redraw$qippv |
218 | add esp,8 |
222 | add esp,8 |
219 | .main_cycle: |
223 | .main_cycle: |
220 | mov eax,11 |
224 | mov eax,SF_CHECK_EVENT |
221 | .main_message: |
225 | .main_message: |
222 | cmp dword [esp+KOLIBRI_THREAD_DATA_FLAG*4],0 |
226 | cmp dword [esp+KOLIBRI_THREAD_DATA_FLAG*4],0 |
223 | jl .main_close |
227 | jl .main_close |
224 | int 0x40 |
228 | int 0x40 |
225 | test eax,eax |
229 | test eax,eax |
226 | jnz .main_on_message |
230 | jnz .main_on_message |
227 | cmp dword [esp+KOLIBRI_THREAD_DATA_FLAG*4],0 |
231 | cmp dword [esp+KOLIBRI_THREAD_DATA_FLAG*4],0 |
228 | jne .main_paint |
232 | jne .main_paint |
- | 233 | if defined @@KolibriOnIdle$qppv |
|
229 | push esp |
234 | push esp |
230 | call @@KolibriOnIdle$qppv |
235 | call @@KolibriOnIdle$qppv |
231 | pop ecx |
236 | pop ecx |
- | 237 | else |
|
- | 238 | or eax,-1 |
|
- | 239 | end if |
|
232 | test eax,eax |
240 | test eax,eax |
233 | jz .main_cycle |
241 | jz .main_cycle |
234 | jl .main_wait_message |
242 | jl .main_wait_message |
235 | mov ebx,eax |
243 | mov ebx,eax |
236 | mov eax,23 |
244 | mov eax,SF_WAIT_EVENT_TIMEOUT |
237 | jmp .main_message |
245 | jmp .main_message |
238 | .main_wait_message: |
246 | .main_wait_message: |
239 | mov eax,10 |
247 | mov eax,SF_WAIT_EVENT |
240 | jmp .main_message |
248 | jmp .main_message |
- | 249 | if defined @@KolibriOnKeyPress$qppv |
|
241 | .main_key_press: |
250 | .main_key_press: |
242 | push esp |
251 | push esp |
243 | call @@KolibriOnKeyPress$qppv |
252 | call @@KolibriOnKeyPress$qppv |
244 | pop ecx |
253 | pop ecx |
245 | jmp .main_cycle |
254 | jmp .main_cycle |
- | 255 | end if |
|
- | 256 | if defined @@KolibriOnMouse$qppv |
|
246 | .main_mouse: |
257 | .main_mouse: |
247 | push esp |
258 | push esp |
248 | call @@KolibriOnMouse$qppv |
259 | call @@KolibriOnMouse$qppv |
249 | pop ecx |
260 | pop ecx |
250 | jmp .main_cycle |
261 | jmp .main_cycle |
- | 262 | end if |
|
- | 263 | ||
- | 264 | align 4 |
|
251 | .main_on_message: |
265 | .main_on_message: |
252 | dec eax |
266 | dec eax |
253 | jz .main_paint_msg |
267 | jz .main_paint_msg |
254 | dec eax |
268 | dec eax |
- | 269 | if defined @@KolibriOnKeyPress$qppv |
|
255 | jz .main_key_press |
270 | jz .main_key_press |
- | 271 | else |
|
- | 272 | jz .main_cycle |
|
- | 273 | end if |
|
256 | cmp eax,4 |
274 | cmp eax,4 |
- | 275 | if defined @@KolibriOnMouse$qppv |
|
257 | jz .main_mouse |
276 | jz .main_mouse |
- | 277 | else |
|
- | 278 | jz .main_cycle |
|
- | 279 | end if |
|
258 | dec eax |
280 | dec eax |
259 | jnz .main_cycle |
281 | jnz .main_cycle |
- | 282 | ||
- | 283 | align 4 |
|
260 | .main_button: |
284 | .main_button: |
261 | mov eax,17 |
285 | mov eax,SF_GET_BUTTON |
262 | int 0x40 |
286 | int 0x40 |
- | 287 | shr eax,8 |
|
- | 288 | cmp eax,1 |
|
- | 289 | je .main_close |
|
- | 290 | if defined @@KolibriOnButton$qlppv |
|
- | 291 | push esp |
|
263 | test al,al |
292 | push eax |
- | 293 | call @@KolibriOnButton$qlppv |
|
- | 294 | add esp,8 |
|
- | 295 | end if |
|
264 | jnz .main_cycle |
296 | jmp .main_cycle |
265 | .main_close: |
297 | .main_close: |
266 | btr dword [esp+KOLIBRI_THREAD_DATA_FLAG*4],31 |
298 | btr dword [esp+KOLIBRI_THREAD_DATA_FLAG*4],31 |
- | 299 | if defined @@KolibriOnClose$qppv |
|
267 | push esp |
300 | push esp |
268 | call @@KolibriOnClose$qppv |
301 | call @@KolibriOnClose$qppv |
269 | pop ecx |
302 | pop ecx |
270 | test al,al |
303 | test al,al |
271 | jz .main_button |
304 | jz .main_button |
- | 305 | end if |
|
272 | .main_end: |
306 | .main_end: |
273 | mov ebx,esp |
307 | mov ebx,esp |
274 | lock dec dword [@Kolibri@_ThreadNumber] |
308 | lock dec dword [@Kolibri@_ThreadNumber] |
275 | if defined Kolibri_SegmentExit & defined Kolibri_SegmentExitEnd |
309 | if defined Kolibri_SegmentExit & defined Kolibri_SegmentExitEnd |
276 | jnz .main_else_last_check |
310 | jnz .main_else_last_check |
Line 288... | Line 322... | ||
288 | add esp,12 |
322 | add esp,12 |
289 | lock inc dword [@Kolibri@_ThreadScanCount+4] |
323 | lock inc dword [@Kolibri@_ThreadScanCount+4] |
290 | mov ebx,1 |
324 | mov ebx,1 |
291 | jmp .main_end_wait |
325 | jmp .main_end_wait |
292 | .main_end_wait_loop: |
326 | .main_end_wait_loop: |
293 | mov eax,5 |
327 | mov eax,SF_SLEEP |
294 | int 0x40 |
328 | int 0x40 |
295 | shl ebx,1 |
329 | shl ebx,1 |
296 | cmp ebx,KOLIBRI_MUTEX_MAX_TIME_WAIT |
330 | cmp ebx,KOLIBRI_MUTEX_MAX_TIME_WAIT |
297 | jna .main_end_wait |
331 | jna .main_end_wait |
298 | mov ebx,KOLIBRI_MUTEX_MAX_TIME_WAIT |
332 | mov ebx,KOLIBRI_MUTEX_MAX_TIME_WAIT |
Line 342... | Line 376... | ||
342 | pop ebp |
376 | pop ebp |
343 | ret |
377 | ret |
344 | .redraw_begin: |
378 | .redraw_begin: |
345 | push ebx esi edi |
379 | push ebx esi edi |
346 | and dword [ebp+KOLIBRI_THREAD_DATA_FLAG*4],0xFFFFFFFC |
380 | and dword [ebp+KOLIBRI_THREAD_DATA_FLAG*4],0xFFFFFFFC |
347 | mov eax,12 |
381 | mov eax,SF_REDRAW |
348 | mov ebx,1 |
382 | mov ebx,SSF_BEGIN_DRAW |
349 | int 0x40 |
383 | int 0x40 |
350 | test dl,2 |
384 | test dl,2 |
351 | jz .redraw_picture |
385 | jz .redraw_picture |
352 | mov eax,48 |
386 | mov eax,SF_STYLE_SETTINGS |
353 | mov ebx,4 |
387 | mov ebx,SSF_GET_SKIN_HEIGHT |
354 | int 0x40 |
388 | int 0x40 |
355 | mov ebx,[ebp+KOLIBRI_THREAD_DATA_X*4] |
389 | mov ebx,[ebp+KOLIBRI_THREAD_DATA_X*4] |
356 | add ebx,2*5-1 |
390 | add ebx,2*5-1 |
357 | mov ecx,[ebp+KOLIBRI_THREAD_DATA_Y*4] |
391 | mov ecx,[ebp+KOLIBRI_THREAD_DATA_Y*4] |
358 | add cx,ax |
392 | add cx,ax |
Line 362... | Line 396... | ||
362 | xor eax,eax |
396 | xor eax,eax |
363 | int 0x40 |
397 | int 0x40 |
364 | .redraw_picture: |
398 | .redraw_picture: |
365 | call @@KolibriOnPaint$qv |
399 | call @@KolibriOnPaint$qv |
366 | .redraw_end_draw: |
400 | .redraw_end_draw: |
367 | mov eax,12 |
401 | mov eax,SF_REDRAW |
368 | mov ebx,2 |
402 | mov ebx,SSF_END_DRAW |
369 | int 0x40 |
403 | int 0x40 |
370 | pop edi esi ebx ebp |
404 | pop edi esi ebx ebp |
371 | ret |
405 | ret |
372 | endp |
406 | endp |
Line 375... | Line 409... | ||
375 | mov eax,[esp+12] |
409 | mov eax,[esp+12] |
376 | mov ebx,[eax] |
410 | mov ebx,[eax] |
377 | mov ecx,[eax+4] |
411 | mov ecx,[eax+4] |
378 | mov edx,[eax+8] |
412 | mov edx,[eax+8] |
379 | mov esi,[eax+12] |
413 | mov esi,[eax+12] |
380 | mov eax,67 |
414 | mov eax,SF_CHANGE_WINDOW |
381 | int 0x40 |
415 | int 0x40 |
382 | ret |
416 | ret |
383 | endp |
417 | endp |
Line 384... | Line 418... | ||
384 | 418 | ||
385 | ;proc @Kolibri@Abort$qv |
419 | proc @Kolibri@ExitDebug$qv |
386 | ; push dword [@Kolibri@DebugPrefix] |
420 | push dword [@Kolibri@DebugPrefix] |
387 | ; call @Kolibri@DebugPutString$qpxc |
421 | call @Kolibri@DebugPutString$qpxc |
388 | ; mov dword [esp],Kolibri_abort_string |
422 | mov dword [esp],Kolibri_debug_string |
389 | ; call @Kolibri@DebugPutString$qpxc |
423 | call @Kolibri@DebugPutString$qpxc |
- | 424 | pop ecx |
|
- | 425 | jmp @Kolibri@ExitProcess$qv |
|
- | 426 | endp |
|
390 | ; pop ecx |
427 | |
391 | proc @Kolibri@ExitProcess$qv |
428 | proc @Kolibri@ExitProcess$qv |
392 | lock bts dword [@Kolibri@_ExitProcessNow],0 |
429 | lock bts dword [@Kolibri@_ExitProcessNow],0 |
393 | jc .exit_process_wait |
430 | jc .exit_process_wait |
394 | sub esp,1024 |
431 | sub esp,1024 |
395 | mov eax,9 |
432 | mov eax,SF_THREAD_INFO |
396 | mov ebx,esp |
433 | mov ebx,esp |
397 | mov ecx,-1 |
434 | mov ecx,-1 |
398 | int 0x40 |
435 | int 0x40 |
399 | mov esi,eax |
436 | mov esi,eax |
400 | mov edi,[esp+30] |
437 | mov edi,[esp+30] |
401 | .exit_process_loop: |
438 | .exit_process_loop: |
402 | mov eax,9 |
439 | mov eax,SF_THREAD_INFO |
403 | mov ebx,esp |
440 | mov ebx,esp |
404 | mov ecx,esi |
441 | mov ecx,esi |
405 | int 0x40 |
442 | int 0x40 |
406 | mov eax,[esp+30] |
443 | mov eax,[esp+30] |
Line 420... | Line 457... | ||
420 | .exit_process_test: |
457 | .exit_process_test: |
421 | test eax,eax |
458 | test eax,eax |
422 | jz .exit_process_continue |
459 | jz .exit_process_continue |
423 | cmp ebx,[eax+KOLIBRI_THREAD_DATA_PID*4] |
460 | cmp ebx,[eax+KOLIBRI_THREAD_DATA_PID*4] |
424 | jnz .exit_process_next |
461 | jnz .exit_process_next |
425 | mov eax,18 |
462 | mov eax,SF_SYSTEM |
426 | mov ebx,2 |
463 | mov ebx,SSF_TERMINATE_THREAD |
427 | mov ecx,esi |
464 | mov ecx,esi |
428 | int 0x40 |
465 | int 0x40 |
429 | .exit_process_continue: |
466 | .exit_process_continue: |
430 | dec esi |
467 | dec esi |
431 | jnl .exit_process_loop |
468 | jnl .exit_process_loop |
Line 438... | Line 475... | ||
438 | .exit_process_end: |
475 | .exit_process_end: |
439 | mov dword [@Kolibri@_ThreadMutex],0 |
476 | mov dword [@Kolibri@_ThreadMutex],0 |
440 | or eax,-1 |
477 | or eax,-1 |
441 | int 0x40 |
478 | int 0x40 |
442 | .exit_process_wait: |
479 | .exit_process_wait: |
443 | mov eax,5 |
480 | mov eax,SF_SLEEP |
444 | mov ebx,1 |
481 | mov ebx,1 |
445 | .exit_process_wait_loop: |
482 | .exit_process_wait_loop: |
446 | cmp dword [@Kolibri@_ExitProcessNow],0 |
483 | cmp dword [@Kolibri@_ExitProcessNow],0 |
447 | jl .exit_process_end |
484 | jl .exit_process_end |
448 | int 0x40 |
485 | int 0x40 |
Line 464... | Line 501... | ||
464 | jc Kolibri_main_end |
501 | jc Kolibri_main_end |
465 | jmp Kolibri_main_cycle |
502 | jmp Kolibri_main_cycle |
466 | endp |
503 | endp |
Line 467... | Line 504... | ||
467 | 504 | ||
468 | proc @Kolibri@Delay$qui uses ebx |
505 | proc @Kolibri@Delay$qui uses ebx |
469 | mov eax,5 |
506 | mov eax,SF_SLEEP |
470 | mov ebx,[esp+8] |
507 | mov ebx,[esp+8] |
471 | int 0x40 |
508 | int 0x40 |
472 | ret |
509 | ret |
Line 473... | Line 510... | ||
473 | endp |
510 | endp |
474 | 511 | ||
475 | proc @Kolibri@Clock$qv uses ebx |
512 | proc @Kolibri@Clock$qv uses ebx |
476 | mov eax,26 |
- | |
477 | mov ebx,9 |
- | |
478 | int 0x40 |
- | |
479 | ret |
- | |
480 | endp |
- | |
481 | - | ||
482 | proc @Kolibri@GetPackedTime$qv |
513 | mov eax,SF_SYSTEM_GET |
483 | mov eax,3 |
514 | mov ebx,SSF_TIME_COUNT |
484 | int 0x40 |
515 | int 0x40 |
Line 485... | Line 516... | ||
485 | ret |
516 | ret |
486 | endp |
517 | endp |
487 | 518 | ||
488 | proc @Kolibri@DrawButton$qllllll uses ebx esi |
- | |
489 | mov eax,8 |
519 | proc @Kolibri@DrawButton$qllllll uses ebx esi |
490 | mov ebx,[esp+12+8] |
520 | mov eax,SF_DEFINE_BUTTON |
491 | shl ebx,16 |
- | |
492 | mov bx,[esp+20+8] |
521 | mov ebx,[esp+12-2+8] |
493 | mov ecx,[esp+16+8] |
522 | mov bx,[esp+20+8] |
494 | shl ecx,16 |
523 | mov ecx,[esp+16-2+8] |
495 | mov cx,[esp+24+8] |
524 | mov cx,[esp+24+8] |
496 | mov edx,[esp+4+8] |
525 | mov edx,[esp+4+8] |
497 | mov esi,[esp+8+8] |
526 | mov esi,[esp+8+8] |
Line -... | Line 527... | ||
- | 527 | int 0x40 |
|
- | 528 | ret |
|
- | 529 | endp |
|
- | 530 | ||
- | 531 | proc @Kolibri@GetPackedTime$qv |
|
- | 532 | mov eax,SF_GET_SYS_TIME |
|
498 | int 0x40 |
533 | int 0x40 |
499 | ret |
534 | ret |
500 | endp |
535 | endp |
501 | 536 | ||
502 | proc @Kolibri@GetTime$qpi |
537 | proc @Kolibri@GetTime$qpi |
503 | mov eax,3 |
538 | mov eax,SF_GET_SYS_TIME |
504 | int 0x40 |
539 | int 0x40 |
Line 524... | Line 559... | ||
524 | mov dword [edx],ecx |
559 | mov dword [edx],ecx |
525 | ret |
560 | ret |
526 | endp |
561 | endp |
Line 527... | Line 562... | ||
527 | 562 | ||
528 | proc @Kolibri@GetPackedDate$qv |
563 | proc @Kolibri@GetPackedDate$qv |
529 | mov eax,29 |
564 | mov eax,SF_GET_SYS_DATE |
530 | int 0x40 |
565 | int 0x40 |
531 | ret |
566 | ret |
Line 532... | Line 567... | ||
532 | endp |
567 | endp |
533 | 568 | ||
534 | proc @Kolibri@GetDate$qpi |
569 | proc @Kolibri@GetDate$qpi |
535 | mov eax,29 |
570 | mov eax,SF_GET_SYS_DATE |
536 | int 0x40 |
571 | int 0x40 |
537 | mov edx,[esp+4] |
572 | mov edx,[esp+4] |
538 | movzx ecx,al |
573 | movzx ecx,al |
Line 556... | Line 591... | ||
556 | mov dword [edx+8],ecx |
591 | mov dword [edx+8],ecx |
557 | ret |
592 | ret |
558 | endp |
593 | endp |
Line 559... | Line 594... | ||
559 | 594 | ||
560 | proc @Kolibri@ReadCommonColors$qpui uses ebx |
595 | proc @Kolibri@ReadCommonColors$qpui uses ebx |
561 | mov eax,48 |
596 | mov eax,SF_STYLE_SETTINGS |
562 | mov ebx,3 |
597 | mov ebx,SSF_GET_COLORS |
563 | mov ecx,[esp+8] |
598 | mov ecx,[esp+8] |
564 | mov edx,40 |
599 | mov edx,40 |
565 | int 0x40 |
600 | int 0x40 |
566 | ret |
601 | ret |
Line 567... | Line 602... | ||
567 | endp |
602 | endp |
568 | 603 | ||
569 | proc @Kolibri@DrawText$qssipxc uses ebx |
604 | proc @Kolibri@DrawText$qssipxc uses ebx |
570 | mov eax,4 |
605 | mov eax,SF_DRAW_TEXT |
571 | mov ebx,[esp+8-2] |
606 | mov ebx,[esp+8-2] |
572 | mov bx,[esp+12] |
607 | mov bx,[esp+12] |
573 | mov ecx,[esp+16] |
608 | mov ecx,[esp+16] |
574 | or ecx,0x80000000 |
609 | or ecx,0x80000000 |
575 | mov edx,[esp+20] |
610 | mov edx,[esp+20] |
576 | int 0x40 |
611 | int 0x40 |
Line -... | Line 612... | ||
- | 612 | ret |
|
- | 613 | endp |
|
- | 614 | ||
- | 615 | proc @Kolibri@SetWindowCaption$qpxc uses ebx |
|
- | 616 | mov eax,SF_SET_CAPTION |
|
- | 617 | mov ebx,2 |
|
- | 618 | mov ecx,[esp+8] |
|
- | 619 | int 0x40 |
|
577 | ret |
620 | ret |
578 | endp |
621 | endp |
579 | 622 | ||
580 | proc @Kolibri@GetProcessInfo$qpuipct1t1piui uses ebx esi edi |
623 | proc @Kolibri@GetProcessInfo$qpuipct1t1piui uses ebx esi edi |
581 | sub esp,1024 |
624 | sub esp,1024 |
582 | mov eax,9 |
625 | mov eax,SF_THREAD_INFO |
583 | mov ebx,esp |
626 | mov ebx,esp |
584 | mov ecx,[1024+12+24+esp] |
627 | mov ecx,[1024+12+24+esp] |
Line 592... | Line 635... | ||
592 | .get_proc_info_no_usecpu: |
635 | .get_proc_info_no_usecpu: |
593 | or edi,[1024+12+8+esp] |
636 | or edi,[1024+12+8+esp] |
594 | jz .get_proc_info_no_name |
637 | jz .get_proc_info_no_name |
595 | lea esi,[esp+10] |
638 | lea esi,[esp+10] |
596 | cld |
639 | cld |
597 | movs dword [edi],[esi] |
640 | movsd |
598 | movs dword [edi],[esi] |
641 | movsd |
599 | movs dword [edi],[esi] |
642 | movsd |
600 | mov byte [edi],0 |
643 | mov byte [edi],0 |
601 | xor edi,edi |
644 | xor edi,edi |
602 | .get_proc_info_no_name: |
645 | .get_proc_info_no_name: |
603 | or edi,[1024+12+12+esp] |
646 | or edi,[1024+12+12+esp] |
604 | jz .get_proc_info_no_mem |
647 | jz .get_proc_info_no_mem |
Line 614... | Line 657... | ||
614 | .get_proc_info_no_pid: |
657 | .get_proc_info_no_pid: |
615 | or edi,[1024+12+20+esp] |
658 | or edi,[1024+12+20+esp] |
616 | jz .get_proc_info_no_rect |
659 | jz .get_proc_info_no_rect |
617 | lea esi,[esp+34] |
660 | lea esi,[esp+34] |
618 | cld |
661 | cld |
619 | movs dword [edi],[esi] |
662 | movsd |
620 | movs dword [edi],[esi] |
663 | movsd |
621 | movs dword [edi],[esi] |
664 | movsd |
622 | movs dword [edi],[esi] |
665 | movsd |
623 | xor edi,edi |
666 | xor edi,edi |
624 | .get_proc_info_no_rect: |
667 | .get_proc_info_no_rect: |
625 | add esp,1024 |
668 | add esp,1024 |
626 | ret |
669 | ret |
627 | endp |
670 | endp |
Line 628... | Line 671... | ||
628 | 671 | ||
629 | proc @Kolibri@GetPid$qv uses ebx |
672 | proc @Kolibri@GetPid$qv uses ebx |
630 | sub esp,1024 |
673 | sub esp,1024 |
631 | mov eax,9 |
674 | mov eax,SF_THREAD_INFO |
632 | mov ebx,esp |
675 | mov ebx,esp |
633 | mov ecx,-1 |
676 | mov ecx,-1 |
634 | int 0x40 |
677 | int 0x40 |
635 | mov eax,[esp+30] |
678 | mov eax,[esp+30] |
Line 657... | Line 700... | ||
657 | lea eax,[eax+4*eax] |
700 | lea eax,[eax+4*eax] |
658 | ror eax,9 |
701 | ror eax,9 |
659 | ret |
702 | ret |
660 | endp |
703 | endp |
Line -... | Line 704... | ||
- | 704 | ||
661 | 705 | if defined @Kolibri@_HashByte$qui | defined @Kolibri@_HashWord$qui | defined @Kolibri@_HashDword$qui |
|
662 | Kolibri_hash_int_val0: |
706 | Kolibri_hash_int_val0: |
663 | dd 0xA82F94C5 |
707 | dd 0xA82F94C5 |
664 | Kolibri_hash_int_val1: |
708 | Kolibri_hash_int_val1: |
- | 709 | dd 0x9193780B |
|
Line 665... | Line 710... | ||
665 | dd 0x9193780B |
710 | end if |
666 | 711 | ||
667 | proc @Kolibri@GetThreadData$qv |
712 | proc @Kolibri@GetThreadData$qv |
668 | call @Kolibri@GetPid$qv |
713 | call @Kolibri@GetPid$qv |
Line 693... | Line 738... | ||
693 | .get_thread_data_end: |
738 | .get_thread_data_end: |
694 | lock dec dword [@Kolibri@_ThreadScanCount] |
739 | lock dec dword [@Kolibri@_ThreadScanCount] |
695 | ret |
740 | ret |
696 | .get_thread_data_wait: |
741 | .get_thread_data_wait: |
697 | push eax ebx |
742 | push eax ebx |
698 | mov eax,5 |
743 | mov eax,SF_SLEEP |
699 | mov ebx,1 |
744 | mov ebx,1 |
700 | .get_thread_data_wait_loop: |
745 | .get_thread_data_wait_loop: |
701 | int 0x40 |
746 | int 0x40 |
702 | cmp dword [@Kolibri@_ThreadScanCount+4],0 |
747 | cmp dword [@Kolibri@_ThreadScanCount+4],0 |
703 | jz .get_thread_data_wait_end |
748 | jz .get_thread_data_wait_end |
Line 710... | Line 755... | ||
710 | pop ebx eax |
755 | pop ebx eax |
711 | jmp .get_thread_data_nowait |
756 | jmp .get_thread_data_nowait |
712 | endp |
757 | endp |
Line 713... | Line 758... | ||
713 | 758 | ||
714 | proc @Kolibri@_GetSkinHeader$qv uses ebx |
759 | proc @Kolibri@_GetSkinHeader$qv uses ebx |
715 | mov eax,48 |
760 | mov eax,SF_STYLE_SETTINGS |
716 | mov ebx,4 |
761 | mov ebx,SSF_GET_SKIN_HEIGHT |
717 | int 0x40 |
762 | int 0x40 |
718 | ret |
763 | ret |
Line 719... | Line 764... | ||
719 | endp |
764 | endp |
720 | 765 | ||
721 | proc @Kolibri@GetScreenSize$qrust1 |
766 | proc @Kolibri@GetScreenSize$qrust1 |
722 | mov eax,14 |
767 | mov eax,SF_GET_SCREEN_SIZE |
723 | int 0x40 |
768 | int 0x40 |
724 | mov ecx,[esp+8] |
769 | mov ecx,[esp+8] |
725 | mov word [ecx],ax |
770 | mov word [ecx],ax |
Line 734... | Line 779... | ||
734 | xor al,al |
779 | xor al,al |
735 | ret |
780 | ret |
736 | endp |
781 | endp |
Line 737... | Line 782... | ||
737 | 782 | ||
738 | proc Kolibri_MutexLockWait uses ebx |
783 | proc Kolibri_MutexLockWait uses ebx |
739 | mov eax,5 |
784 | mov eax,SF_SLEEP |
740 | xor ebx,ebx |
785 | xor ebx,ebx |
741 | .lock_wait_cycle: |
786 | .lock_wait_cycle: |
742 | int 0x40 |
787 | int 0x40 |
743 | shl byte [ecx],1 |
788 | shl byte [ecx],1 |
Line 749... | Line 794... | ||
749 | proc Kolibri_MutexLockWaitTime |
794 | proc Kolibri_MutexLockWaitTime |
750 | cmp dword [esp+12],0 |
795 | cmp dword [esp+12],0 |
751 | jng .MutexLockWait |
796 | jng .MutexLockWait |
752 | push ebx edx |
797 | push ebx edx |
753 | mov edx,[esp+20] |
798 | mov edx,[esp+20] |
754 | mov eax,26 |
799 | mov eax,SF_SYSTEM_GET |
755 | mov ebx,9 |
800 | mov ebx,SSF_TIME_COUNT |
756 | int 0x40 |
801 | int 0x40 |
757 | add edx,eax |
802 | add edx,eax |
758 | .lock_wait_time_cycle: |
803 | .lock_wait_time_cycle: |
759 | mov eax,5 |
804 | mov eax,SF_SLEEP |
760 | xor ebx,ebx |
805 | xor ebx,ebx |
761 | int 0x40 |
806 | int 0x40 |
762 | shl byte [ecx],1 |
807 | shl byte [ecx],1 |
763 | jnz .lock_wait_time_ret_true |
808 | jnz .lock_wait_time_ret_true |
764 | mov eax,26 |
809 | mov eax,SF_SYSTEM_GET |
765 | mov ebx,9 |
810 | mov ebx,SSF_TIME_COUNT |
766 | int 0x40 |
811 | int 0x40 |
767 | cmp eax,edx |
812 | cmp eax,edx |
768 | js .lock_wait_time_cycle |
813 | js .lock_wait_time_cycle |
769 | pop edx ebx eax |
814 | pop edx ebx eax |
770 | xor al,al |
815 | xor al,al |
Line 808... | Line 853... | ||
808 | jz .unlock_pause |
853 | jz .unlock_pause |
809 | ret |
854 | ret |
810 | .unlock_pause: |
855 | .unlock_pause: |
811 | mov byte [ecx],0x40 |
856 | mov byte [ecx],0x40 |
812 | push ebx |
857 | push ebx |
813 | mov eax,5 |
858 | mov eax,SF_SLEEP |
814 | xor ebx,ebx |
859 | xor ebx,ebx |
815 | int 0x40 |
860 | int 0x40 |
816 | pop ebx |
861 | pop ebx |
817 | ret |
862 | ret |
818 | endp |
863 | endp |
Line 836... | Line 881... | ||
836 | push dword [@Kolibri@DebugPrefix] |
881 | push dword [@Kolibri@DebugPrefix] |
837 | call @Kolibri@DebugPutString$qpxc |
882 | call @Kolibri@DebugPutString$qpxc |
838 | mov dword [esp],Kolibri_try_lock_rec_overflow_string |
883 | mov dword [esp],Kolibri_try_lock_rec_overflow_string |
839 | call @Kolibri@DebugPutString$qpxc |
884 | call @Kolibri@DebugPutString$qpxc |
840 | pop ecx |
885 | pop ecx |
841 | jmp @Kolibri@Abort$qv |
886 | jmp @Kolibri@ExitDebug$qv |
842 | endp |
887 | endp |
Line 843... | Line 888... | ||
843 | 888 | ||
844 | proc @Kolibri@TryLock$qp16Kolibri@TRecMutexui |
889 | proc @Kolibri@TryLock$qp16Kolibri@TRecMutexui |
845 | mov eax,Kolibri_MutexLockNoWait |
890 | mov eax,Kolibri_MutexLockNoWait |
Line 876... | Line 921... | ||
876 | .unlock_rec_end: |
921 | .unlock_rec_end: |
877 | ret |
922 | ret |
878 | .unlock_rec_pause: |
923 | .unlock_rec_pause: |
879 | mov byte [ecx],0x20 |
924 | mov byte [ecx],0x20 |
880 | push ebx |
925 | push ebx |
881 | mov eax,5 |
926 | mov eax,SF_SLEEP |
882 | xor ebx,ebx |
927 | xor ebx,ebx |
883 | int 0x40 |
928 | int 0x40 |
884 | pop ebx |
929 | pop ebx |
885 | ret |
930 | ret |
886 | .unlock_rec_notlocked: |
931 | .unlock_rec_notlocked: |
887 | push dword [@Kolibri@DebugPrefix] |
932 | push dword [@Kolibri@DebugPrefix] |
888 | call @Kolibri@DebugPutString$qpxc |
933 | call @Kolibri@DebugPutString$qpxc |
889 | mov dword [esp],Kolibri_unlock_rec_notlocked_string |
934 | mov dword [esp],Kolibri_unlock_rec_notlocked_string |
890 | call @Kolibri@DebugPutString$qpxc |
935 | call @Kolibri@DebugPutString$qpxc |
891 | pop ecx |
936 | pop ecx |
892 | jmp @Kolibri@Abort$qv |
937 | jmp @Kolibri@ExitDebug$qv |
893 | endp |
938 | endp |
Line 894... | Line 939... | ||
894 | 939 | ||
895 | proc @Kolibri@DebugPutChar$qc |
940 | proc @Kolibri@DebugPutChar$qc |
896 | mov cl,byte [esp+4] |
941 | mov cl,byte [esp+4] |
897 | cmp cl,13 |
942 | cmp cl,13 |
898 | jz .debug_put_char_ret |
943 | jz .debug_put_char_ret |
899 | push ebx |
944 | push ebx |
900 | cmp cl,10 |
945 | cmp cl,10 |
901 | jz .debug_put_char_enter |
946 | jz .debug_put_char_enter |
902 | .debug_put_char_after_cmp: |
947 | .debug_put_char_after_cmp: |
903 | mov eax,63 |
948 | mov eax,SF_BOARD |
904 | mov ebx,1 |
949 | mov ebx,SSF_DEBUG_WRITE |
905 | int 0x40 |
950 | int 0x40 |
906 | pop ebx |
951 | pop ebx |
907 | .debug_put_char_ret: |
952 | .debug_put_char_ret: |
908 | ret |
953 | ret |
909 | .debug_put_char_enter: |
954 | .debug_put_char_enter: |
910 | mov cl,13 |
955 | mov cl,13 |
911 | mov eax,63 |
956 | mov eax,SF_BOARD |
912 | mov ebx,1 |
957 | mov ebx,SSF_DEBUG_WRITE |
913 | int 0x40 |
958 | int 0x40 |
914 | mov cl,10 |
959 | mov cl,10 |
915 | jmp .debug_put_char_after_cmp |
960 | jmp .debug_put_char_after_cmp |
Line 916... | Line 961... | ||
916 | endp |
961 | endp |
917 | - | ||
918 | proc @Kolibri@DebugPutString$qpxc |
962 | |
919 | push esi |
963 | proc @Kolibri@DebugPutString$qpxc uses esi |
920 | push dword 0 |
964 | push dword 0 |
921 | mov esi,dword [esp+12] |
965 | mov esi,dword [esp+12] |
922 | jmp .debug_put_string_test |
966 | jmp .debug_put_string_test |
Line 927... | Line 971... | ||
927 | .debug_put_string_test: |
971 | .debug_put_string_test: |
928 | xor eax,eax |
972 | xor eax,eax |
929 | or al,[esi] |
973 | or al,[esi] |
930 | test al,al |
974 | test al,al |
931 | jnz .debug_put_string_loop |
975 | jnz .debug_put_string_loop |
932 | pop ecx esi |
976 | pop ecx |
933 | ret |
977 | ret |
934 | endp |
978 | endp |
Line 935... | Line 979... | ||
935 | 979 | ||
936 | proc @Kolibri@GetKey$qv |
980 | proc @Kolibri@GetKey$qv |
937 | mov eax,2 |
981 | mov eax,SF_GET_KEY |
938 | int 0x40 |
982 | int 0x40 |
939 | test al,al |
983 | test al,al |
940 | jnz .get_key_eof |
984 | jnz .get_key_eof |
941 | movzx eax,ah |
985 | movzx eax,ah |
942 | ret |
986 | ret |
943 | .get_key_eof: |
987 | .get_key_eof: |
944 | mov eax,-1 |
988 | mov eax,SF_TERMINATE_PROCESS |
945 | ret |
989 | ret |
Line 946... | Line 990... | ||
946 | endp |
990 | endp |
947 | 991 | ||
948 | proc @Kolibri@GetMouseButton$qv uses ebx |
992 | proc @Kolibri@GetMouseButton$qv uses ebx |
949 | mov eax,37 |
993 | mov eax,SF_MOUSE_GET |
950 | mov ebx,2 |
994 | mov ebx,SSF_BUTTON |
951 | int 0x40 |
995 | int 0x40 |
Line 952... | Line 996... | ||
952 | ret |
996 | ret |
953 | endp |
997 | endp |
954 | 998 | ||
955 | proc @Kolibri@GetMousePosition$qrst1o uses ebx |
999 | proc @Kolibri@GetMousePosition$qrst1o uses ebx |
956 | mov eax,37 |
1000 | mov eax,SF_MOUSE_GET |
957 | xor ebx,ebx |
1001 | xor ebx,ebx ;SSF_SCREEN_POSITION |
958 | cmp byte [esp+16],0 |
1002 | cmp byte [esp+16],0 |
959 | jnz .get_mouse_pos_absolute |
1003 | jnz .get_mouse_pos_absolute |
Line 1008... | Line 1052... | ||
1008 | sub edx,12 |
1052 | sub edx,12 |
1009 | mov ecx,[esp+8] |
1053 | mov ecx,[esp+8] |
1010 | mov dword [edx+8],ebx |
1054 | mov dword [edx+8],ebx |
1011 | mov dword [edx+4],ecx |
1055 | mov dword [edx+4],ecx |
1012 | mov dword [edx],Kolibri_ThreadFinish |
1056 | mov dword [edx],Kolibri_ThreadFinish |
1013 | mov eax,51 |
1057 | mov eax,SF_CREATE_THREAD |
1014 | mov ebx,1 |
1058 | mov ebx,1 |
1015 | mov ecx,@Kolibri@ThreadMain$qpvt1 |
1059 | mov ecx,@Kolibri@ThreadMain$qpvt1 |
1016 | int 0x40 |
1060 | int 0x40 |
1017 | mov ebx,eax |
1061 | mov ebx,eax |
1018 | or bl,15 |
1062 | or bl,15 |
Line 1032... | Line 1076... | ||
1032 | .create_thread_init: |
1076 | .create_thread_init: |
1033 | push esi edi |
1077 | push esi edi |
1034 | cld |
1078 | cld |
1035 | mov esi,@Kolibri@_ThreadSavedBegProc |
1079 | mov esi,@Kolibri@_ThreadSavedBegProc |
1036 | mov edi,@Kolibri@GetPid$qv |
1080 | mov edi,@Kolibri@GetPid$qv |
1037 | movs dword [edi],[esi] |
1081 | movsd |
1038 | movs dword [edi],[esi] |
1082 | movsd |
1039 | mov edi,@Kolibri@GetThreadData$qv |
1083 | mov edi,@Kolibri@GetThreadData$qv |
1040 | movs dword [edi],[esi] |
1084 | movsd |
1041 | movs dword [edi],[esi] |
1085 | movsd |
1042 | mov eax,0x90909090 |
1086 | mov eax,0x90909090 |
1043 | mov edi,@Kolibri@_ThreadSavedBegProc |
1087 | mov edi,@Kolibri@_ThreadSavedBegProc |
1044 | stos dword [edi] |
1088 | stosd |
1045 | stos dword [edi] |
1089 | stosd |
1046 | stos dword [edi] |
1090 | stosd |
1047 | stos dword [edi] |
1091 | stosd |
1048 | pop edi esi |
1092 | pop edi esi |
1049 | jmp .create_thread_fill_stack |
1093 | jmp .create_thread_fill_stack |
1050 | endp |
1094 | endp |
Line 1051... | Line 1095... | ||
1051 | 1095 | ||
1052 | proc @Kolibri@_FileAccess$qpv uses ebx |
1096 | proc @Kolibri@_FileAccess$qpv uses ebx |
1053 | mov eax,70 |
1097 | mov eax,SF_FILE |
1054 | mov ebx,[esp+8] |
1098 | mov ebx,[esp+8] |
1055 | int 0x40 |
1099 | int 0x40 |
1056 | mov ecx,[esp+8] |
1100 | mov ecx,[esp+8] |
1057 | mov [ecx],ebx |
1101 | mov [ecx],ebx |
1058 | ret |
1102 | ret |
Line -... | Line 1103... | ||
- | 1103 | endp |
|
1059 | endp |
1104 | |
1060 | 1105 | if defined Kolibri_debug_string |
|
- | 1106 | Kolibri_debug_string: |
|
- | 1107 | db 'Abnormal program termination.',10,0 |
|
- | 1108 | end if |
|
1061 | Kolibri_abort_string: |
1109 | |
1062 | db 'Abnormal program termination.',10,0 |
1110 | if defined Kolibri_MutexLockRec |
- | 1111 | Kolibri_try_lock_rec_overflow_string: |
|
- | 1112 | db 'Recursive mutex lock count overflow.',10,0 |
|
- | 1113 | end if |
|
1063 | Kolibri_try_lock_rec_overflow_string: |
1114 | |
1064 | db 'Recursive mutex lock count overflow.',10,0 |
1115 | if defined @Kolibri@UnLock$qp16Kolibri@TRecMutexui |
- | 1116 | Kolibri_unlock_rec_notlocked_string: |
|
Line 1065... | Line 1117... | ||
1065 | Kolibri_unlock_rec_notlocked_string: |
1117 | db 'Recursive mutex unlock error.',10,0 |
Line 1066... | Line 1118... | ||
1066 | db 'Recursive mutex unlock error.',10,0 |
1118 | end if |