Subversion Repositories Kolibri OS

Rev

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
}