Rev 1127 | Rev 3374 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1127 | Rev 1204 | ||
---|---|---|---|
Line 114... | Line 114... | ||
114 | 114 | ||
115 | local __sc |
115 | local __sc |
116 | local lp |
116 | local lp |
117 | local lp1 |
117 | local lp1 |
118 | local correction |
- | |
119 | ;local end_tr |
118 | local correction |
120 | local exit_ |
119 | local exit_ |
121 | ;/equ |
120 | ;/equ |
122 | err_message1 equ dword [esp+8] |
121 | err_message1 equ dword [esp+8] |
Line 263... | Line 262... | ||
263 | arrea_xx dd 0x0 |
262 | arrea_xx dd 0x0 |
264 | rb 0x50 |
263 | rb 0x50 |
265 | end_tr: |
264 | end_tr: |
Line 266... | Line 265... | ||
266 | 265 | ||
- | 266 | ;--------------------------------------------------------------------- |
|
267 | ;--------------------------------------------------------------------- |
267 | |
268 | @library_name equ dword [esp+12] |
268 | @library_name equ dword [esp+16] |
269 | @cur_dir_path equ dword [esp+8] |
269 | @cur_dir_path equ dword [esp+12] |
- | 270 | @library_path equ dword [esp+8] |
|
Line 270... | Line 271... | ||
270 | @library_path equ dword [esp+4] |
271 | @point_dir_name equ dword [esp+4] |
271 | 272 | ||
272 | align 4 |
273 | align 4 |
273 | @copy_path: |
274 | @copy_path: |
274 | mov ebx,@library_name |
275 | ; mov ebx,@library_name |
Line 275... | Line 276... | ||
275 | mov esi,@cur_dir_path |
276 | mov esi,@cur_dir_path |
276 | mov edi,@library_path |
277 | mov edi,@library_path |
- | 278 | ||
277 | 279 | xor eax,eax |
|
278 | xor eax,eax |
280 | cld |
279 | cld |
281 | align 4 |
280 | .lp1: |
282 | .lp1: |
281 | lodsb |
283 | lodsb |
282 | stosb |
284 | stosb |
Line 283... | Line 285... | ||
283 | test eax,eax |
285 | test eax,eax |
- | 286 | jnz .lp1 |
|
284 | jnz .lp1 |
287 | mov esi,edi |
285 | mov esi,edi |
288 | |
286 | 289 | std |
|
287 | std |
290 | align 4 |
288 | .lp2: |
291 | .lp2: |
289 | lodsb |
- | |
- | 292 | lodsb |
|
290 | cmp al,'/' |
293 | cmp al,'/' |
- | 294 | jnz .lp2 |
|
- | 295 | mov edi,esi |
|
Line -... | Line 296... | ||
- | 296 | ||
- | 297 | add edi,2 |
|
- | 298 | cld |
|
Line 291... | Line 299... | ||
291 | jnz .lp2 |
299 | ; mov esi,@library_name |
292 | mov edi,esi |
300 | |
293 | mov esi,ebx |
301 | mov esi,@point_dir_name |
294 | add edi,2 |
302 | test esi,esi |
295 | 303 | jz .str_lp4 |
|
296 | 304 | ||
- | 305 | align 4 |
|
- | 306 | .lp3: |
|
- | 307 | lodsb |
|
- | 308 | stosb |
|
- | 309 | test eax,eax |
|
- | 310 | jnz .lp3 |
|
- | 311 | ||
- | 312 | ||
- | 313 | dec edi |
|
- | 314 | .str_lp4: |
|
- | 315 | mov esi,@library_name |
|
297 | cld |
316 | align 4 |
298 | .lp3: |
317 | .lp4: |
299 | lodsb |
318 | lodsb |
Line 300... | Line 319... | ||
300 | stosb |
319 | stosb |
301 | test eax,eax |
320 | test eax,eax |
302 | jnz .lp3 |
321 | jnz .lp4 |
303 | ;--------------------------------------------------------------------- |
322 | ;--------------------------------------------------------------------- |
304 | ret |
323 | ret |
305 | } |
324 | } |
Line 306... | Line 325... | ||
306 | 325 | ||
307 | 326 | ||
308 | 327 | ||
Line -... | Line 328... | ||
- | 328 | macro sys_load_library library_name__, cur_dir_path__, library_path__, system_path__, err_message_found_lib__, head_f_l__, myimport, err_message_import__, head_f_i__,point_dir_name__ |
|
- | 329 | { |
|
- | 330 | local end_steep |
|
309 | macro sys_load_library library_name__, cur_dir_path__, library_path__, system_path__, err_message_found_lib__, head_f_l__, myimport, err_message_import__, head_f_i__ |
331 | local exit |
- | 332 | ;--------------------------------------------------------------------- |
|
Line 310... | Line 333... | ||
310 | { |
333 | ; loading Box_Lib library |
311 | local end_steep |
334 | |
312 | local exit |
335 | mcall 68,19,system_path__ ; load of sys directory |
313 | ;--------------------------------------------------------------------- |
336 | test eax,eax |
Line 340... | Line 363... | ||
340 | 363 | ||
341 | ;--------------------------------------------------------------------- |
364 | ;--------------------------------------------------------------------- |
Line 342... | Line 365... | ||
342 | } |
365 | } |
343 | 366 | ||
344 | 367 | ||
345 | macro load_library library_name__, cur_dir_path__, library_path__, system_path__, err_message_found_lib__, head_f_l__, myimport, err_message_import__, head_f_i__ |
368 | macro load_library library_name__, cur_dir_path__, library_path__, system_path__, err_message_found_lib__, head_f_l__, myimport, err_message_import__, head_f_i__,point_dir_name__ |
346 | { |
369 | { |
347 | local end_steep |
370 | local end_steep |
Line -... | Line 371... | ||
- | 371 | local exit |
|
- | 372 | ;--------------------------------------------------------------------- |
|
- | 373 | ; loading Box_Lib library |
|
348 | local exit |
374 | |
- | 375 | if point_dir_name__ eq |
|
Line 349... | Line 376... | ||
349 | ;--------------------------------------------------------------------- |
376 | copy_path library_name__, cur_dir_path__, library_path__,0x0 |
350 | ; loading Box_Lib library |
377 | else |
351 | 378 | copy_path library_name__, cur_dir_path__, library_path__,point_dir_name__ ;the macros making way /current pach a program/+ name system library |
|
Line 391... | Line 418... | ||
391 | err_message_found_lib__ equ [ebp+16] |
418 | err_message_found_lib__ equ [ebp+16] |
392 | head_f_l__ equ [ebp+20] |
419 | head_f_l__ equ [ebp+20] |
393 | my_import equ [ebp+24] |
420 | my_import equ [ebp+24] |
394 | err_message_import__ equ [ebp+28] |
421 | err_message_import__ equ [ebp+28] |
395 | head_f_i__ equ [ebp+32] |
422 | head_f_i__ equ [ebp+32] |
- | 423 | point_dir_name__ equ [ebp+36] |
|
396 | adr_load_lib equ dword [ebp+36] |
424 | adr_load_lib equ dword [ebp+40] |
397 | status_lib equ dword [ebp+40] |
425 | status_lib equ dword [ebp+44] |
Line 398... | Line 426... | ||
398 | 426 | ||
399 | mov ebp,_start |
427 | mov ebp,_start |
Line 400... | Line 428... | ||
400 | mov ecx,((_end-_start)/ll_struc_size) |
428 | mov ecx,((_end-_start)/ll_struc_size) |
401 | 429 | ||
402 | align 4 |
430 | align 4 |
403 | lp: push ecx |
431 | lp: push ecx |
404 | mcall 68,19,system_path__ ; load of sys directory |
432 | mcall 68,19,system_path__ ; load of sys directory |
Line 405... | Line 433... | ||
405 | test eax,eax |
433 | test eax,eax |
Line 406... | Line 434... | ||
406 | jnz end_steep |
434 | jnz end_steep |
407 | 435 | ||
408 | copy_path library_name__, cur_dir_path__, library_path__ ;the macros making way /current pach a program/+ name system library |
436 | copy_path library_name__, cur_dir_path__, library_path__,point_dir_name__ ;the macros making way /current pach a program/+ name system library |
Line 409... | Line 437... | ||
409 | 437 | ||
Line 410... | Line 438... | ||
410 | mcall 68,19,library_path__ ; load of alternative |
438 | mcall 68,19,library_path__ ; load of alternative |
411 | test eax,eax |
439 | test eax,eax |
Line 412... | Line 440... | ||
412 | jnz end_steep |
440 | jnz end_steep |
413 | 441 | ||
414 | or status_lib,0x1 ; status of code - enable error - not found library |
442 | or status_lib,0x1 ; status of code - enable error - not found library |
Line 468... | Line 496... | ||
468 | err_message_found_lib__ equ [ebp+16] |
496 | err_message_found_lib__ equ [ebp+16] |
469 | head_f_l__ equ [ebp+20] |
497 | head_f_l__ equ [ebp+20] |
470 | my_import equ [ebp+24] |
498 | my_import equ [ebp+24] |
471 | err_message_import__ equ [ebp+28] |
499 | err_message_import__ equ [ebp+28] |
472 | head_f_i__ equ [ebp+32] |
500 | head_f_i__ equ [ebp+32] |
- | 501 | point_dir_name__ equ [ebp+36] |
|
473 | adr_load_lib equ dword [ebp+36] |
502 | adr_load_lib equ dword [ebp+40] |
474 | status_lib equ dword [ebp+40] |
503 | status_lib equ dword [ebp+44] |
Line 475... | Line 504... | ||
475 | 504 | ||
476 | mov ebp,_start |
505 | mov ebp,_start |
Line 477... | Line 506... | ||
477 | mov ecx,((_end-_start)/ll_struc_size) |
506 | mov ecx,((_end-_start)/ll_struc_size) |
478 | 507 | ||
Line 479... | Line 508... | ||
479 | align 4 |
508 | align 4 |
Line 480... | Line 509... | ||
480 | lp: push ecx |
509 | lp: push ecx |
481 | 510 | ||
482 | copy_path library_name__, cur_dir_path__, library_path__ ;the macros making way /current pach a program/+ name system library |
511 | copy_path library_name__, cur_dir_path__, library_path__,point_dir_name__ ;the macros making way /current pach a program/+ name system library |
Line 532... | Line 561... | ||
532 | exit_lp2: |
561 | exit_lp2: |
Line 533... | Line 562... | ||
533 | 562 | ||
Line 534... | Line 563... | ||
534 | } |
563 | } |
535 | 564 | ||
536 | 565 | ||
537 | macro copy_path lib_name,dir_path,lib_path |
566 | macro copy_path lib_name,dir_path,lib_path,point_dir_name |
538 | { |
567 | { |
539 | pushad ;save all registers |
568 | pushad ;save all registers |
540 | push dword lib_name |
- | |
- | 569 | push dword lib_name |
|
541 | push dword dir_path |
570 | push dword dir_path |
Line 542... | Line 571... | ||
542 | push dword lib_path |
571 | push dword lib_path |
543 | 572 | push dword point_dir_name |
|
544 | call @copy_path |
573 | call @copy_path |
Line 545... | Line 574... | ||
545 | 574 | ||
546 | add esp,12 |
575 | add esp,16 |
Line 611... | Line 640... | ||
611 | import_done: |
640 | import_done: |
612 | xor eax,eax |
641 | xor eax,eax |
613 | e.exit: |
642 | e.exit: |
614 | ;--------------------------------------------------------------------- |
643 | ;--------------------------------------------------------------------- |
615 | } |
644 | } |
616 | ll_struc_size = 44;($-library_name__) ; constant size of struct |
645 | ll_struc_size = 48;($-library_name__) ; constant size of struct |
617 | struc l_libs library_name__, cur_dir_path__, library_path__, system_path__, err_message_found_lib__, head_f_l__, my_import, err_message_import__, head_f_i__; struct for loading libraries |
646 | struc l_libs library_name__, cur_dir_path__, library_path__, system_path__, err_message_found_lib__, head_f_l__, my_import, err_message_import__, head_f_i__,point_dir_name; struct for loading libraries |
618 | { |
647 | { |
619 | .library_name__ dd library_name__ ; èìÿ çàãðóæàåìîé áèáëèîòåêè |
648 | .library_name__ dd library_name__ ; èìÿ çàãðóæàåìîé áèáëèîòåêè |
620 | .cur_dir_path__ dd cur_dir_path__ ; óêàçàòåëü íà áóôåð â êîòîðîì ñîäåðæèòüñÿ ïóòü îò êóäà áûëà çàïóùåíà ïðîãðàììà |
649 | .cur_dir_path__ dd cur_dir_path__ ; óêàçàòåëü íà áóôåð â êîòîðîì ñîäåðæèòüñÿ ïóòü îò êóäà áûëà çàïóùåíà ïðîãðàììà |
Line 621... | Line 650... | ||
621 | 650 | ||
Line 625... | Line 654... | ||
625 | .err_message_found_lib__ dd err_message_found_lib__ |
654 | .err_message_found_lib__ dd err_message_found_lib__ |
626 | .head_f_l__ dd head_f_l__ |
655 | .head_f_l__ dd head_f_l__ |
627 | .my_import dd my_import |
656 | .my_import dd my_import |
628 | .err_message_import__ dd err_message_import__ |
657 | .err_message_import__ dd err_message_import__ |
629 | .head_f_i__ dd head_f_i__ |
658 | .head_f_i__ dd head_f_i__ |
- | 659 | if point_dir_name eq |
|
- | 660 | .point_dir_name__ dd 0x0 |
|
630 | 661 | else |
|
- | 662 | .point_dir_name__ dd point_dir_name ; èìÿ âëîæåííîé äèððåêòîðèè â êòîðîé õðàíÿòüñÿ ïîäãðóæàåìûå ìîäóëè. |
|
- | 663 | end if |
|
631 | .adr_load_lib dd 0x0 |
664 | .adr_load_lib dd 0x0 |
632 | .status_lib dd 0x0 ;status of load library |
665 | .status_lib dd 0x0 ;status of load library |
633 | ; |
666 | ; |
634 | } |
667 | } |