Subversion Repositories Kolibri OS

Rev

Rev 1488 | Rev 4987 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1488 Rev 3374
Line -... Line 1...
-
 
1
;13.03.2013 - use @notify
-
 
2
;08.06.2010 - new macros @use_library_mem
1
;08.05.2009 - bugfix 
3
;08.05.2009 - bugfix
2
;14.04.2009 - a macros for code load library the box_lib.obj from '/sys/lib/' or current dirrectory.
4
;14.04.2009 - a macros for code load library the box_lib.obj from '/sys/lib/' or current dirrectory.
3
; The macros for load any library/libraries:
5
; The macros for load any library/libraries:
4
; Copyright (c) 2009, 
6
; Copyright (c) 2009, 
5
; All rights reserved.
7
; All rights reserved.
Line 25... Line 27...
25
; ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27
; ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26
; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28
; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27
; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
;*****************************************************************************
30
;*****************************************************************************
29
; This macros based on source code:
31
; This macros based on source code:
30
;  - Alexey Teplov / Àëåêñåé Òåïëîâ
32
;  - Alexey Teplov / €«¥ªá¥© ’¥¯«®¢
31
; Mario79, Mario - Marat Zakiyanov / Ìàðàò Çàêèÿíîâ
33
; Mario79, Mario - Marat Zakiyanov / Œ à â ‡ ª¨ï­®¢
32
; Diamondz - Evgeny Grechnikov / Åâãåíèé Ãðå÷íèêîâ
34
; Diamondz - Evgeny Grechnikov / …¢£¥­¨© ƒà¥ç­¨ª®¢
33
;------------------------
35
;------------------------
34
; DESCRIPTION
36
; DESCRIPTION
35
; Macro load_library
37
; Macro load_library
36
; Logick of work.
38
; Logick of work.
37
; A first time we must to check system path, where I belive find a system library. System path is "/sys/lib/".
39
; A first time we must to check system path, where I belive find a system library. System path is "/sys/lib/".
Line 60... Line 62...
60
;        cmp     eax,-1
62
;        cmp     eax,-1
61
;        jz      exit
63
;        jz      exit
62
;- Well, if you get 
64
;- Well, if you get 
63
;
65
;
64
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
66
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
65
;DATA äàííûå
67
;DATA ¤ ­­ë¥
66
;Âñåãäà ñîáëþäàòü ïîñëåäîâàòåëüíîñòü â èìåíè.
68
;‚ᥣ¤  ᮡ«î¤ âì ¯®á«¥¤®¢ â¥«ì­®áâì ¢ ¨¬¥­¨.
67
;system_path__      db '/sys/lib/'
69
;system_path__      db '/sys/lib/'
68
;library_name__     db 'box_lib.obj',0
70
;library_name__     db 'box_lib.obj',0
69
; Åñëè åñòü æåëàíèå ðàçúåäèíèòü, òî íóæíî èñïîëüçîâàòü ñëåäóþùèþ êîíñòðóêöèþ
71
; …᫨ ¥áâì ¦¥« ­¨¥ ࠧꥤ¨­¨âì, â® ­ã¦­® ¨á¯®«ì§®¢ âì á«¥¤ãîé¨î ª®­áâàãªæ¨î
70
;system_path__      db '/sys/lib/box_lib.obj',0
72
;system_path__      db '/sys/lib/box_lib.obj',0
71
;... ëþáàÿ ïîñëåäîâàòåëüíîñòü äðóãèõ êîìàíä è îïðåäåëåíèé.
73
;... «î¡ ï ¯®á«¥¤®¢ â¥«ì­®áâì ¤àã£¨å ª®¬ ­¤ ¨ ®¯à¥¤¥«¥­¨©.
72
;library_name__     db 'box_lib.obj',0
74
;library_name__     db 'box_lib.obj',0
73
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
75
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Line 74... Line 76...
74
 
76
 
75
;err_message_found_lib__   db 'Sorry I cannot found library box_lib.obj',0
77
;err_message_found_lib__   db 'Sorry I cannot found library box_lib.obj',0
Line 110... Line 112...
110
 
112
 
111
;---------------------------------------------------------------------
113
;---------------------------------------------------------------------
112
macro @use_library
114
macro @use_library
Line 113... Line -...
113
{
-
 
114
 
115
{
115
local __sc
116
 
116
local lp
117
local lp
117
local lp1
-
 
Line 118... Line 118...
118
local correction
118
local lp1
119
local exit_
-
 
120
 
-
 
121
library_fun_memory_alloc equ 0 ;íå èñïîëüçîâàòü â ìàêðîñàõ ïðîâåðêó íà ôóíêöèè 'lib_init'
-
 
122
err_message1     equ    dword [esp+8]
-
 
123
head1            equ    dword [esp+4]
-
 
124
 
-
 
125
 
-
 
126
__sc.frame                equ  dword [__sc+0]
-
 
127
__sc.grab                 equ  dword [__sc+4]
-
 
128
__sc.grab_button          equ  dword [__sc+8]
-
 
129
__sc.grab_button_text     equ  dword [__sc+12] 
-
 
130
__sc.grab_text            equ  dword [__sc+16]
-
 
131
__sc.work                 equ  dword [__sc+20]
-
 
132
__sc.work_button          equ  dword [__sc+24]
-
 
133
__sc.work_button_text     equ  dword [__sc+28]
-
 
134
__sc.work_text            equ  dword [__sc+32]
-
 
135
__sc.work_graph           equ  dword [__sc+36]
-
 
136
 
-
 
137
;;;;;;;;;;;CALC WIDTH & HIGHT WINDOW & CENTER MONITOR POSITION;;;;;;;;;;
-
 
138
show_err_:
-
 
139
;check memory
-
 
140
        push    dword [arrea_xx]
-
 
141
        pop     eax
-
 
142
        test    eax,eax
-
 
143
        jnz     @f
-
 
144
 
-
 
145
        mcall   68,11
-
 
Line 146... Line -...
146
        mcall   68,12,4096
-
 
147
        push    eax
-
 
148
        pop     dword [arrea_xx]
-
 
149
 
-
 
150
        push    head1
-
 
151
        pop     dword[eax]
-
 
152
 
-
 
153
        push    0x0
-
 
154
        pop     dword[eax+4]
-
 
155
 
-
 
156
@@:
-
 
157
        mov     eax,48             ;get system color
-
 
158
        mov     ebx,3
-
 
159
        mov     ecx,__sc
-
 
160
        mov     edx,sizeof.system_colors
-
 
161
        mcall
-
 
162
;-----------------------------------
119
local file_name
163
        xor     eax,eax
-
 
164
        mov     esi,err_message1
120
 
165
        mov     ecx,30
-
 
166
align 4
-
 
167
lp:     add     ecx,7
-
 
168
        lodsb
121
library_fun_memory_alloc equ 0 ;­¥ ¨á¯®«ì§®¢ âì ¢ ¬ ªà®á å ¯à®¢¥àªã ­  ä㭪樨 'lib_init'
169
        test    eax,eax
-
 
Line 170... Line 122...
170
        jnz     lp
122
 
171
 
-
 
172
        push    dword [arrea_xx]
-
 
173
        pop     ebp
-
 
174
 
-
 
175
align 4
123
align 4
176
@@:     add     ebp,4
-
 
177
        mov     eax,dword [ebp]
-
 
178
 
-
 
179
        test    eax,eax
-
 
180
        jnz     @b 
-
 
181
 
-
 
182
        push    err_message1
-
 
183
        pop     dword[ebp]
-
 
184
 
-
 
185
        mov     dword [ebp+4],eax
-
 
186
 
-
 
187
        mcall   48,5    ;get system window
-
 
188
        cmp     word[on_x],cx
-
 
189
        jae     @f; íå íóæíî îáíîâëÿòü
-
 
190
 
-
 
191
        sub     eax,ecx
-
 
192
        shl     eax,15
-
 
193
        mov     ax,cx
-
 
194
        mov     dword [on_x],eax
-
 
195
 
-
 
196
@@:
-
 
197
        add     word [on_y],12
-
 
198
        sub     bx,word [on_y]
-
 
199
        shl     ebx,15
-
 
200
        mov     bx,word [on_y]
-
 
201
        mov     dword [on_y],ebx
-
 
202
 
-
 
203
        ret
-
 
204
 
-
 
205
 
-
 
206
;;;;;;;;;;;DRAW WINDOW;;;;;;;;;;;;;;
124
arrea_xx dd 0
207
align 4
-
 
208
start__:
-
 
209
        mcall   40,0x5         ;set mask on events rewraw window and get id button.
-
 
210
.red_win:
-
 
211
;draw_window:
-
 
212
        mcall 12,1
-
 
213
 
-
 
214
        xor     eax,eax
-
 
215
        mov     ebp,dword [arrea_xx]      ; set point
-
 
216
        mov     ebx,dword [on_x]
-
 
217
        mov     ecx,dword [on_y]
-
 
218
        mov     edx,__sc.work
-
 
219
        or      edx,0x33000000
-
 
220
        mov     esi,__sc.grab_text
-
 
221
        xor     edi,edi
-
 
222
        mov     edi,dword [ebp]         ;head1
-
 
223
        mcall
-
 
224
 
-
 
225
        mov     ebx,(10*65536+25-12)
-
 
226
        add     ebp,4   ;inc index
-
 
227
 
-
 
228
@@:
-
 
229
        mov     eax,4
-
 
230
        add     bx,12
-
 
231
        mov     ecx,__sc.grab_text
-
 
232
        or      ecx,0x90000000
-
 
233
        mov     edx,dword [ebp]       ;err_message1
-
 
234
        mcall
-
 
235
 
125
file_name db '/rd/1/@notify',0
236
        add     ebp,4   ;inc index
-
 
237
 
-
 
238
        mov     eax,dword [ebp]
126
 
239
        test    eax,eax
-
 
240
        jnz     @b
-
 
241
 
-
 
242
        mcall 12,2
-
 
243
align 4
-
 
244
 
-
 
245
.still:                          ;main loop
-
 
246
        mcall   10              ;wait event
-
 
247
        dec  eax
127
align 4
248
        jz   .red_win
-
 
249
        sub  eax,2
-
 
250
        jnz  .still   ;go to main loop
-
 
251
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
 
252
.button:
128
run_notify_struct:
253
        mcall   17      ;get id button
-
 
254
        test    ah,ah      ;if in ah 0, then go to still
129
	.Function dd 7
255
        jz      .still
-
 
256
        mcall   -1
-
 
257
        ret
-
 
258
 
130
	.Position dd 0
259
align 4
-
 
260
__sc     system_colors
-
 
261
on_x     dd     0x0
-
 
262
on_y     dd     0x0000004E
131
	.Flags dd ?
Line 263... Line 132...
263
arrea_xx dd     0x0
132
	.Count dd 0
264
rb      0x50
133
	.Buffer dd 0
265
end_tr:
134
		db 0
Line 366... Line 235...
366
        import_boxlib myimport, err_message_import__, head_f_i__  ;import
235
        import_boxlib myimport, err_message_import__, head_f_i__  ;import
367
exit:
236
exit:
368
        test    eax,eax
237
        test    eax,eax
369
        jz      @f
238
        jz      @f
Line 370... Line 239...
370
 
239
 
371
        mcall   51,1,start__,end_tr            ; ñîçäàåì íîâûé ïîòîê ïî øàáëîíó
240
        notify_window_run [arrea_xx] ; ᮧ¤ ¥¬ ®ª­® @notify
372
        or      eax,-1
241
        or      eax,-1
Line 373... Line 242...
373
@@:     
242
@@:     
374
 
243
 
Line 406... Line 275...
406
        import_boxlib myimport, err_message_import__, head_f_i__  ;import
275
        import_boxlib myimport, err_message_import__, head_f_i__  ;import
407
exit:
276
exit:
408
        test    eax,eax
277
        test    eax,eax
409
        jz      @f
278
        jz      @f
Line 410... Line 279...
410
 
279
 
411
        mcall   51,1,start__,end_tr            ; ñîçäàåì íîâûé ïîòîê ïî øàáëîíó
280
        notify_window_run [arrea_xx] ; ᮧ¤ ¥¬ ®ª­® @notify
412
        or      eax,-1
281
        or      eax,-1
Line 413... Line 282...
413
@@:     
282
@@:     
414
        
283
        
Line 479... Line 348...
479
lp2:
348
lp2:
480
        mov     eax,status_lib
349
        mov     eax,status_lib
481
        test    eax,eax
350
        test    eax,eax
482
        jz      @f
351
        jz      @f
Line 483... Line 352...
483
 
352
 
484
        mcall   51,1,start__,end_tr            ; ñîçäàåì íîâûé ïîòîê ïî øàáëîíó
353
        notify_window_run [arrea_xx] ; ᮧ¤ ¥¬ ®ª­® @notify
485
        or      eax,-1
354
        or      eax,-1
Line 486... Line 355...
486
        jmp     exit_lp2
355
        jmp     exit_lp2
487
 
356
 
Line 559... Line 428...
559
lp2:
428
lp2:
560
        mov     eax,status_lib
429
        mov     eax,status_lib
561
        test    eax,eax
430
        test    eax,eax
562
        jz      @f
431
        jz      @f
Line 563... Line 432...
563
 
432
 
564
        mcall   51,1,start__,end_tr            ; ñîçäàåì íîâûé ïîòîê ïî øàáëîíó
433
        notify_window_run [arrea_xx] ; ᮧ¤ ¥¬ ®ª­® @notify
565
        or      eax,-1
434
        or      eax,-1
Line 566... Line 435...
566
        jmp     exit_lp2
435
        jmp     exit_lp2
567
 
436
 
Line 585... Line 454...
585
 
454
 
586
        add     esp,16
455
        add     esp,16
587
        popad   ;restore all registers
456
        popad   ;restore all registers
Line -... Line 457...
-
 
457
}
-
 
458
 
-
 
459
; £®â®¢¨¬ ⥪áâ ¤«ï ¯®ª §  ç¥à¥§ @notify:
588
}
460
; 1) ¢ë¤¥«ï¥¬ ¯ ¬ïâì ¢ [arrea_xx]
-
 
461
; 2) ª®¯¨à㥬 err_message ¨ head ¢ [arrea_xx]
-
 
462
macro show_error_window  err_message, head
-
 
463
{
-
 
464
local lp0
-
 
465
local lp1
-
 
466
 
589
 
467
pushad
590
macro show_error_window  err_message, head
468
	mcall 68,11
591
{       pushad  ;save all registers
469
	mcall 68,12,4096
Line -... Line 470...
-
 
470
	push eax
-
 
471
	pop dword [arrea_xx]
-
 
472
 
-
 
473
	mov edi,eax
-
 
474
	mov esi,dword head
-
 
475
	cld
-
 
476
align 4
-
 
477
lp0:
-
 
478
	movsb
-
 
479
	cmp byte[esi],0
592
        push    dword err_message
480
	jne lp0
-
 
481
	mov word[edi],'. '
-
 
482
	add edi,2
-
 
483
	mov esi,dword err_message
-
 
484
align 4
-
 
485
lp1:
-
 
486
	movsb
-
 
487
	cmp byte[esi],0
-
 
488
	jne lp1
-
 
489
	mov byte[edi],0
Line -... Line 490...
-
 
490
popad
-
 
491
	or eax,-1  ;ã¢ë
-
 
492
}
593
        push    dword head
493
 
-
 
494
; ¢ª«îç ¥¬ ¯®ª § á®®¡é¥­¨ï ç¥à¥§ @notify:
594
 
495
macro notify_window_run message
595
        call    show_err_
496
{
-
 
497
push eax ebx
-
 
498
	mov eax,message ;¯ à ¬¥âàë ¤«ï ª®¬ ­¤­®© áâப¨
-
 
499
	mov [run_notify_struct.Flags], eax
596
 
500
	mov eax,70 ;run @notify
Line 597... Line 501...
597
        add     esp,8
501
	mov ebx,run_notify_struct
598
        popad   ;restore all registers
502
	int 0x40
599
        or      eax,-1  ;óâû
503
pop ebx eax
600
}
504
}
601
 
505
 
602
 
506
 
603
;âõîäíûå ïàðàìåòðû:
507
;¢å®¤­ë¥ ¯ à ¬¥âàë:
604
;eax - àäðåñ áèáëèîòåêè â ïàìÿòè
508
;eax -  ¤à¥á ¡¨¡«¨®â¥ª¨ ¢ ¯ ¬ïâ¨
Line 617... Line 521...
617
; initialize import
521
; initialize import
Line 618... Line 522...
618
        
522
        
619
        mov     edx, eax
523
        mov     edx, eax
620
        mov     esi,myimport
524
        mov     esi,myimport
621
import_loop:
525
import_loop:
622
        lodsd	;mov eax,dword[esi] ;add esi,4 ;ïîëó÷àåì â eax óêàçàòåëü íà èìÿ èìïîðòèðóåìîé ôóíêöèè
526
        lodsd	;mov eax,dword[esi] ;add esi,4 ;¯®«ãç ¥¬ ¢ eax 㪠§ â¥«ì ­  ¨¬ï ¨¬¯®àâ¨à㥬®© ä㭪樨
623
        test    eax, eax
527
        test    eax, eax
624
        jz      import_done ;åñëè óêàçàòåëü íà èìÿ ôóíêöèè = 0 (â ïîëüçîâàòåëüñêîé ïðîãðàììå)
528
        jz      import_done ;¥á«¨ 㪠§ â¥«ì ­  ¨¬ï ä㭪樨 = 0 (¢ ¯®«ì§®¢ â¥«ì᪮© ¯à®£à ¬¬¥)
625
        push    edx ;ñîõðàíÿåì íà÷àëî áèáëèîòå÷íûõ óêàçàòåëåé íà ôóíêöèè
529
        push    edx ;á®å࠭塞 ­ ç «® ¡¨¡«¨®â¥ç­ëå 㪠§ â¥«¥© ­  ä㭪樨
626
import_find:
530
import_find:
627
        mov     ebx, [ds:edx]
531
        mov     ebx, [ds:edx]
628
        test    ebx, ebx
532
        test    ebx, ebx
629
        jz      import_not_found ;åñëè óêàçàòåëü íà èìÿ ôóíêöèè = 0 (â áèáëèîòåêå)
533
        jz      import_not_found ;¥á«¨ 㪠§ â¥«ì ­  ¨¬ï ä㭪樨 = 0 (¢ ¡¨¡«¨®â¥ª¥)
630
        push    eax ;eax - óêàçàòåëü íà èìÿ ýêñïîðòèðóåìîé ôóíêöèè (â ïîëüçîâàòåëüñêîé ïðîãðàììå)
534
        push    eax ;eax - 㪠§ â¥«ì ­  ¨¬ï íªá¯®àâ¨à㥬®© ä㭪樨 (¢ ¯®«ì§®¢ â¥«ì᪮© ¯à®£à ¬¬¥)
631
lp:
535
lp:
632
        mov     cl, [ds:eax]
536
        mov     cl, [ds:eax]
633
        cmp     cl, [ds:ebx] ;ñðàâíèâàåì èìåíà ôóíêöèé â áèáëèîòåêå è â ïîëüçîâàòåëüñêîé ïðîãðàììå
537
        cmp     cl, [ds:ebx] ;áà ¢­¨¢ ¥¬ ¨¬¥­  ä㭪権 ¢ ¡¨¡«¨®â¥ª¥ ¨ ¢ ¯®«ì§®¢ â¥«ì᪮© ¯à®£à ¬¬¥
634
        jnz     import_find_next ;åñëè íàçâàíèÿ íå ñîâïàëè
538
        jnz     import_find_next ;¥á«¨ ­ §¢ ­¨ï ­¥ ᮢ¯ «¨
635
        test    cl, cl
539
        test    cl, cl
636
        jz      import_found ;åñëè íàçâàíèÿ ñîâïàëè, è óæå êîíåö ñòðîêè (cl=0)
540
        jz      import_found ;¥á«¨ ­ §¢ ­¨ï ᮢ¯ «¨, ¨ 㦥 ª®­¥æ áâப¨ (cl=0)
637
        inc     eax
541
        inc     eax
638
        inc     ebx
542
        inc     ebx
639
        jmp     lp
543
        jmp     lp
640
import_find_next:
544
import_find_next:
641
        pop     eax
545
        pop     eax
642
        add     edx, 8 ;8 = 4 áàéòà óêàçàòåëü íà íàçâàíèå è 4 áàéòà óêàçàòåëü íà ôóíêöèþ
546
        add     edx, 8 ;8 = 4 ¡ ©â  㪠§ â¥«ì ­  ­ §¢ ­¨¥ ¨ 4 ¡ ©â  㪠§ â¥«ì ­  äã­ªæ¨î
643
        jmp     import_find
547
        jmp     import_find
644
import_found:
548
import_found:
645
        pop     ebx ;âîñòàíàâëèâàåì óêàçàòåëü íà èìÿ ôóíêöèè (êîòîðûé áûë â eax) è îñâîáîæäàåì ñòåê
549
        pop     ebx ;¢®áâ ­ ¢«¨¢ ¥¬ 㪠§ â¥«ì ­  ¨¬ï ä㭪樨 (ª®â®àë© ¡ë« ¢ eax) ¨ ®á¢®¡®¦¤ ¥¬ á⥪
646
        mov     eax, [ds:edx+4] ;eax = óêàçàòåëü íà ôóíêöèþ (â áèáëèîòåêå)
550
        mov     eax, [ds:edx+4] ;eax = 㪠§ â¥«ì ­  äã­ªæ¨î (¢ ¡¨¡«¨®â¥ª¥)
647
        mov     [esi-4], eax ;êîïèðóåì óêàçàòåëü (íà ôóíêöèþ) â ïðîãðàììó, -4 ñòàâèì ïîòîìó ÷òî esi áûëî ñäâèíóòî êîìàíäîé lodsd
551
        mov     [esi-4], eax ;ª®¯¨à㥬 㪠§ â¥«ì (­  äã­ªæ¨î) ¢ ¯à®£à ¬¬ã, -4 áâ ¢¨¬ ¯®â®¬ã çâ® esi ¡ë«® ᤢ¨­ãâ® ª®¬ ­¤®© lodsd
648
        pop     edx ;óñòàíàâëèâàåì edx íà íà÷àëî áèáëèîòå÷íûõ ôóíêöèé
552
        pop     edx ;ãáâ ­ ¢«¨¢ ¥¬ edx ­  ­ ç «® ¡¨¡«¨®â¥ç­ëå ä㭪権
649
;--- ïðîâåðÿåì ñîâïàäàåò ëè èìÿ ýêñïîðòèðîâàííîé ôóíêöèè ñ 'lib_init'
553
;--- ¯à®¢¥à塞 ᮢ¯ ¤ ¥â «¨ ¨¬ï íªá¯®àâ¨à®¢ ­­®© ä㭪樨 á 'lib_init'
650
if library_fun_memory_alloc eq 0
554
if library_fun_memory_alloc eq 0
651
else
555
else
652
		cmp dword[ebx],'lib_'
556
		cmp dword[ebx],'lib_'
653
		jne		import_loop
557
		jne		import_loop
654
		cmp dword[ebx+4],'init'
558
		cmp dword[ebx+4],'init'
655
		jne		import_loop
559
		jne		import_loop
656
;--- åñëè èìÿ ôóíêöèè ñîâïàëî ñ 'lib_init' ïîïàäàåì ñþäà
560
;--- ¥á«¨ ¨¬ï ä㭪樨 ᮢ¯ «® á 'lib_init' ¯®¯ ¤ ¥¬ á
657
		;ïîäêëþ÷åíèå ôóíêöèé äëÿ ðàáîòû ñ ïàìÿòüþ
561
		;¯®¤ª«î祭¨¥ ä㭪権 ¤«ï à ¡®âë á ¯ ¬ïâìî
658
		;push eax
562
		;push eax
659
		;call dll.Init
563
		;call dll.Init
660
		pushad
564
		pushad
661
		mov esi,eax
565
		mov esi,eax
Line 670... Line 574...
670
import_not_found:
574
import_not_found:
671
        add     esp,4
575
        add     esp,4
672
        show_error_window  err_message_import__, head_f_i__    ;show error message /create window
576
        show_error_window  err_message_import__, head_f_i__    ;show error message /create window
673
        jmp     e.exit
577
        jmp     e.exit
674
import_done:
578
import_done:
675
        xor     eax,eax ;=0 âñå çàãðóçèëîñü óäà÷íî
579
        xor     eax,eax ;=0 ¢á¥ § £à㧨«®áì 㤠筮
676
e.exit: 
580
e.exit: 
677
;---------------------------------------------------------------------
581
;---------------------------------------------------------------------
678
}
582
}
679
ll_struc_size = 48;($-library_name__)    ; constant   size of struct
583
ll_struc_size = 48;($-library_name__)    ; constant   size of struct
680
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
584
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
681
{        
585
{        
682
.library_name__           dd library_name__        ; èìÿ çàãðóæàåìîé áèáëèîòåêè
586
.library_name__           dd library_name__        ; ¨¬ï § £à㦠¥¬®© ¡¨¡«¨®â¥ª¨
683
.cur_dir_path__           dd cur_dir_path__        ; óêàçàòåëü íà áóôåð â êîòîðîì ñîäåðæèòüñÿ ïóòü îò êóäà áûëà çàïóùåíà ïðîãðàììà
587
.cur_dir_path__           dd cur_dir_path__        ; 㪠§ â¥«ì ­  ¡ãä¥à ¢ ª®â®à®¬ ᮤ¥à¦¨âìáï ¯ãâì ®â ªã¤  ¡ë«  § ¯ã饭  ¯à®£à ¬¬ 
Line 684... Line 588...
684
                        
588
                        
685
.library_path__           dd library_path__        ; óêàçàòåëü íà áóôåð â êîòîðîì áóäåò ñîôîðèìèðîâàí ïóòü ê áèáëèîòåêè, åñëè íóæíî âû÷èñëèòü ïóòü äî ëèáû ñ ìåñòà çàïóñêà ïðîãðàììû, îáû÷íî íóæíî, â ñëó÷àÿõ, åñëè ëèáà ðàñïîëîæåíà â òîé æå ïàïêå
589
.library_path__           dd library_path__        ; 㪠§ â¥«ì ­  ¡ãä¥à ¢ ª®â®à®¬ ¡ã¤¥â á®ä®à¨¬¨à®¢ ­ ¯ãâì ª ¡¨¡«¨®â¥ª¨, ¥á«¨ ­ã¦­® ¢ëç¨á«¨âì ¯ãâì ¤® «¨¡ë á ¬¥áâ  § ¯ã᪠ ¯à®£à ¬¬ë, ®¡ëç­® ­ã¦­®, ¢ á«ãç ïå, ¥á«¨ «¨¡  à á¯®«®¦¥­  ¢ ⮩ ¦¥ ¯ ¯ª¥
Line 686... Line 590...
686
.complete_path            dd system_path__         ; ïóòü êîòîðûé ÷åòêî ñîäåðæèò ïóòü
590
.complete_path            dd system_path__         ; ¯ãâì ª®â®àë© ç¥âª® ᮤ¥à¦¨â ¯ãâì
687
 
591
 
688
.err_message_found_lib__  dd err_message_found_lib__
592
.err_message_found_lib__  dd err_message_found_lib__
689
.head_f_l__               dd head_f_l__
593
.head_f_l__               dd head_f_l__
690
.my_import                dd my_import
594
.my_import                dd my_import
691
.err_message_import__     dd err_message_import__
595
.err_message_import__     dd err_message_import__
692
.head_f_i__               dd head_f_i__
596
.head_f_i__               dd head_f_i__
693
if point_dir_name eq
597
if point_dir_name eq
694
.point_dir_name__	dd 0x0
598
.point_dir_name__	dd 0x0
695
else
599
else
696
.point_dir_name__	dd point_dir_name	   ; èìÿ âëîæåííîé äèððåêòîðèè â êòîðîé õðàíÿòüñÿ ïîäãðóæàåìûå ìîäóëè.
600
.point_dir_name__	dd point_dir_name	   ; ¨¬ï ¢«®¦¥­­®© ¤¨à४â®à¨¨ ¢ ªâ®à®© åà ­ïâìáï ¯®¤£à㦠¥¬ë¥ ¬®¤ã«¨.
697
end if 
601
end if 
698
.adr_load_lib           dd 0x0
602
.adr_load_lib           dd 0x0
699
.status_lib             dd 0x0          ;status of load library
603
.status_lib             dd 0x0          ;status of load library