forked from KolibriOS/kolibrios
use @notify
new macros 'notify_window_run' git-svn-id: svn://kolibrios.org@3374 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
26657b44a4
commit
a2d96a4749
@ -1,4 +1,6 @@
|
|||||||
;08.05.2009 - bugfix
|
;13.03.2013 - use @notify
|
||||||
|
;08.06.2010 - new macros @use_library_mem
|
||||||
|
;08.05.2009 - bugfix
|
||||||
;14.04.2009 - a macros for code load library the box_lib.obj from '/sys/lib/' or current dirrectory.
|
;14.04.2009 - a macros for code load library the box_lib.obj from '/sys/lib/' or current dirrectory.
|
||||||
; The macros for load any library/libraries:
|
; The macros for load any library/libraries:
|
||||||
; Copyright (c) 2009, <Lrz>
|
; Copyright (c) 2009, <Lrz>
|
||||||
@ -27,9 +29,9 @@
|
|||||||
; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
;*****************************************************************************
|
;*****************************************************************************
|
||||||
; This macros based on source code:
|
; This macros based on source code:
|
||||||
; <Lrz> - Alexey Teplov / Алексей Теплов
|
; <Lrz> - Alexey Teplov / €«¥ªá¥© ’¥¯«®¢
|
||||||
; Mario79, Mario - Marat Zakiyanov / Марат Закиянов
|
; Mario79, Mario - Marat Zakiyanov / Œ à â ‡ ª¨ï®¢
|
||||||
; Diamondz - Evgeny Grechnikov / Евгений Гречников
|
; Diamondz - Evgeny Grechnikov / …¢£¥¨© ƒà¥ç¨ª®¢
|
||||||
;------------------------
|
;------------------------
|
||||||
; DESCRIPTION
|
; DESCRIPTION
|
||||||
; Macro load_library
|
; Macro load_library
|
||||||
@ -62,13 +64,13 @@
|
|||||||
;- Well, if you get
|
;- Well, if you get
|
||||||
;
|
;
|
||||||
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||||
;DATA данные
|
;DATA ¤ ë¥
|
||||||
;Всегда соблюдать последовательность в имени.
|
;‚ᥣ¤ ᮡ«î¤ âì ¯®á«¥¤®¢ ⥫ì®áâì ¢ ¨¬¥¨.
|
||||||
;system_path__ db '/sys/lib/'
|
;system_path__ db '/sys/lib/'
|
||||||
;library_name__ db 'box_lib.obj',0
|
;library_name__ db 'box_lib.obj',0
|
||||||
; Если есть желание разъединить, то нужно использовать следующию конструкцию
|
; …᫨ ¥áâì ¦¥« ¨¥ à §ê¥¤¨¨âì, ⮠㦮 ¨á¯®«ì§®¢ âì á«¥¤ãîé¨î ª®áâàãªæ¨î
|
||||||
;system_path__ db '/sys/lib/box_lib.obj',0
|
;system_path__ db '/sys/lib/box_lib.obj',0
|
||||||
;... любая последовательность других команд и определений.
|
;... «î¡ ï ¯®á«¥¤®¢ ⥫ì®áâì ¤àã£¨å ª®¬ ¤ ¨ ®¯à¥¤¥«¥¨©.
|
||||||
;library_name__ db 'box_lib.obj',0
|
;library_name__ db 'box_lib.obj',0
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
@ -112,158 +114,25 @@
|
|||||||
macro @use_library
|
macro @use_library
|
||||||
{
|
{
|
||||||
|
|
||||||
local __sc
|
|
||||||
local lp
|
local lp
|
||||||
local lp1
|
local lp1
|
||||||
local correction
|
local file_name
|
||||||
local exit_
|
|
||||||
|
|
||||||
library_fun_memory_alloc equ 0 ;не использовать в макросах проверку на функции 'lib_init'
|
library_fun_memory_alloc equ 0 ;¥ ¨á¯®«ì§®¢ âì ¢ ¬ ªà®á å ¯à®¢¥àªã äãªæ¨¨ 'lib_init'
|
||||||
err_message1 equ dword [esp+8]
|
|
||||||
head1 equ dword [esp+4]
|
|
||||||
|
|
||||||
|
|
||||||
__sc.frame equ dword [__sc+0]
|
|
||||||
__sc.grab equ dword [__sc+4]
|
|
||||||
__sc.grab_button equ dword [__sc+8]
|
|
||||||
__sc.grab_button_text equ dword [__sc+12]
|
|
||||||
__sc.grab_text equ dword [__sc+16]
|
|
||||||
__sc.work equ dword [__sc+20]
|
|
||||||
__sc.work_button equ dword [__sc+24]
|
|
||||||
__sc.work_button_text equ dword [__sc+28]
|
|
||||||
__sc.work_text equ dword [__sc+32]
|
|
||||||
__sc.work_graph equ dword [__sc+36]
|
|
||||||
|
|
||||||
;;;;;;;;;;;CALC WIDTH & HIGHT WINDOW & CENTER MONITOR POSITION;;;;;;;;;;
|
|
||||||
show_err_:
|
|
||||||
;check memory
|
|
||||||
push dword [arrea_xx]
|
|
||||||
pop eax
|
|
||||||
test eax,eax
|
|
||||||
jnz @f
|
|
||||||
|
|
||||||
mcall 68,11
|
|
||||||
mcall 68,12,4096
|
|
||||||
push eax
|
|
||||||
pop dword [arrea_xx]
|
|
||||||
|
|
||||||
push head1
|
|
||||||
pop dword[eax]
|
|
||||||
|
|
||||||
push 0x0
|
|
||||||
pop dword[eax+4]
|
|
||||||
|
|
||||||
@@:
|
|
||||||
mov eax,48 ;get system color
|
|
||||||
mov ebx,3
|
|
||||||
mov ecx,__sc
|
|
||||||
mov edx,sizeof.system_colors
|
|
||||||
mcall
|
|
||||||
;-----------------------------------
|
|
||||||
xor eax,eax
|
|
||||||
mov esi,err_message1
|
|
||||||
mov ecx,30
|
|
||||||
align 4
|
|
||||||
lp: add ecx,7
|
|
||||||
lodsb
|
|
||||||
test eax,eax
|
|
||||||
jnz lp
|
|
||||||
|
|
||||||
push dword [arrea_xx]
|
|
||||||
pop ebp
|
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
@@: add ebp,4
|
arrea_xx dd 0
|
||||||
mov eax,dword [ebp]
|
file_name db '/rd/1/@notify',0
|
||||||
|
|
||||||
test eax,eax
|
|
||||||
jnz @b
|
|
||||||
|
|
||||||
push err_message1
|
|
||||||
pop dword[ebp]
|
|
||||||
|
|
||||||
mov dword [ebp+4],eax
|
|
||||||
|
|
||||||
mcall 48,5 ;get system window
|
|
||||||
cmp word[on_x],cx
|
|
||||||
jae @f; не нужно обновлять
|
|
||||||
|
|
||||||
sub eax,ecx
|
|
||||||
shl eax,15
|
|
||||||
mov ax,cx
|
|
||||||
mov dword [on_x],eax
|
|
||||||
|
|
||||||
@@:
|
|
||||||
add word [on_y],12
|
|
||||||
sub bx,word [on_y]
|
|
||||||
shl ebx,15
|
|
||||||
mov bx,word [on_y]
|
|
||||||
mov dword [on_y],ebx
|
|
||||||
|
|
||||||
ret
|
|
||||||
|
|
||||||
|
|
||||||
;;;;;;;;;;;DRAW WINDOW;;;;;;;;;;;;;;
|
|
||||||
align 4
|
|
||||||
start__:
|
|
||||||
mcall 40,0x5 ;set mask on events rewraw window and get id button.
|
|
||||||
.red_win:
|
|
||||||
;draw_window:
|
|
||||||
mcall 12,1
|
|
||||||
|
|
||||||
xor eax,eax
|
|
||||||
mov ebp,dword [arrea_xx] ; set point
|
|
||||||
mov ebx,dword [on_x]
|
|
||||||
mov ecx,dword [on_y]
|
|
||||||
mov edx,__sc.work
|
|
||||||
or edx,0x33000000
|
|
||||||
mov esi,__sc.grab_text
|
|
||||||
xor edi,edi
|
|
||||||
mov edi,dword [ebp] ;head1
|
|
||||||
mcall
|
|
||||||
|
|
||||||
mov ebx,(10*65536+25-12)
|
|
||||||
add ebp,4 ;inc index
|
|
||||||
|
|
||||||
@@:
|
|
||||||
mov eax,4
|
|
||||||
add bx,12
|
|
||||||
mov ecx,__sc.grab_text
|
|
||||||
or ecx,0x90000000
|
|
||||||
mov edx,dword [ebp] ;err_message1
|
|
||||||
mcall
|
|
||||||
|
|
||||||
add ebp,4 ;inc index
|
|
||||||
|
|
||||||
mov eax,dword [ebp]
|
|
||||||
test eax,eax
|
|
||||||
jnz @b
|
|
||||||
|
|
||||||
mcall 12,2
|
|
||||||
align 4
|
|
||||||
|
|
||||||
.still: ;main loop
|
|
||||||
mcall 10 ;wait event
|
|
||||||
dec eax
|
|
||||||
jz .red_win
|
|
||||||
sub eax,2
|
|
||||||
jnz .still ;go to main loop
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
.button:
|
|
||||||
mcall 17 ;get id button
|
|
||||||
test ah,ah ;if in ah 0, then go to still
|
|
||||||
jz .still
|
|
||||||
mcall -1
|
|
||||||
ret
|
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
__sc system_colors
|
run_notify_struct:
|
||||||
on_x dd 0x0
|
.Function dd 7
|
||||||
on_y dd 0x0000004E
|
.Position dd 0
|
||||||
arrea_xx dd 0x0
|
.Flags dd ?
|
||||||
rb 0x50
|
.Count dd 0
|
||||||
end_tr:
|
.Buffer dd 0
|
||||||
|
db 0
|
||||||
|
.FileName dd file_name
|
||||||
;---------------------------------------------------------------------
|
;---------------------------------------------------------------------
|
||||||
|
|
||||||
@library_name equ dword [esp+16]
|
@library_name equ dword [esp+16]
|
||||||
@ -368,7 +237,7 @@ exit:
|
|||||||
test eax,eax
|
test eax,eax
|
||||||
jz @f
|
jz @f
|
||||||
|
|
||||||
mcall 51,1,start__,end_tr ; создаем новый поток по шаблону
|
notify_window_run [arrea_xx] ; ᮧ¤ ¥¬ ®ª® @notify
|
||||||
or eax,-1
|
or eax,-1
|
||||||
@@:
|
@@:
|
||||||
|
|
||||||
@ -408,7 +277,7 @@ exit:
|
|||||||
test eax,eax
|
test eax,eax
|
||||||
jz @f
|
jz @f
|
||||||
|
|
||||||
mcall 51,1,start__,end_tr ; создаем новый поток по шаблону
|
notify_window_run [arrea_xx] ; ᮧ¤ ¥¬ ®ª® @notify
|
||||||
or eax,-1
|
or eax,-1
|
||||||
@@:
|
@@:
|
||||||
|
|
||||||
@ -481,7 +350,7 @@ lp2:
|
|||||||
test eax,eax
|
test eax,eax
|
||||||
jz @f
|
jz @f
|
||||||
|
|
||||||
mcall 51,1,start__,end_tr ; создаем новый поток по шаблону
|
notify_window_run [arrea_xx] ; ᮧ¤ ¥¬ ®ª® @notify
|
||||||
or eax,-1
|
or eax,-1
|
||||||
jmp exit_lp2
|
jmp exit_lp2
|
||||||
|
|
||||||
@ -561,7 +430,7 @@ lp2:
|
|||||||
test eax,eax
|
test eax,eax
|
||||||
jz @f
|
jz @f
|
||||||
|
|
||||||
mcall 51,1,start__,end_tr ; создаем новый поток по шаблону
|
notify_window_run [arrea_xx] ; ᮧ¤ ¥¬ ®ª® @notify
|
||||||
or eax,-1
|
or eax,-1
|
||||||
jmp exit_lp2
|
jmp exit_lp2
|
||||||
|
|
||||||
@ -587,22 +456,57 @@ macro copy_path lib_name,dir_path,lib_path,point_dir_name
|
|||||||
popad ;restore all registers
|
popad ;restore all registers
|
||||||
}
|
}
|
||||||
|
|
||||||
|
; £®â®¢¨¬ ⥪áâ ¤«ï ¯®ª § ç¥à¥§ @notify:
|
||||||
|
; 1) ¢ë¤¥«ï¥¬ ¯ ¬ïâì ¢ [arrea_xx]
|
||||||
|
; 2) ª®¯¨à㥬 err_message ¨ head ¢ [arrea_xx]
|
||||||
macro show_error_window err_message, head
|
macro show_error_window err_message, head
|
||||||
{ pushad ;save all registers
|
{
|
||||||
push dword err_message
|
local lp0
|
||||||
push dword head
|
local lp1
|
||||||
|
|
||||||
call show_err_
|
pushad
|
||||||
|
mcall 68,11
|
||||||
|
mcall 68,12,4096
|
||||||
|
push eax
|
||||||
|
pop dword [arrea_xx]
|
||||||
|
|
||||||
add esp,8
|
mov edi,eax
|
||||||
popad ;restore all registers
|
mov esi,dword head
|
||||||
or eax,-1 ;увы
|
cld
|
||||||
|
align 4
|
||||||
|
lp0:
|
||||||
|
movsb
|
||||||
|
cmp byte[esi],0
|
||||||
|
jne lp0
|
||||||
|
mov word[edi],'. '
|
||||||
|
add edi,2
|
||||||
|
mov esi,dword err_message
|
||||||
|
align 4
|
||||||
|
lp1:
|
||||||
|
movsb
|
||||||
|
cmp byte[esi],0
|
||||||
|
jne lp1
|
||||||
|
mov byte[edi],0
|
||||||
|
popad
|
||||||
|
or eax,-1 ;ã¢ë
|
||||||
|
}
|
||||||
|
|
||||||
|
; ¢ª«îç ¥¬ ¯®ª § á®®¡é¥¨ï ç¥à¥§ @notify:
|
||||||
|
macro notify_window_run message
|
||||||
|
{
|
||||||
|
push eax ebx
|
||||||
|
mov eax,message ;¯ à ¬¥âàë ¤«ï ª®¬ ¤®© áâப¨
|
||||||
|
mov [run_notify_struct.Flags], eax
|
||||||
|
mov eax,70 ;run @notify
|
||||||
|
mov ebx,run_notify_struct
|
||||||
|
int 0x40
|
||||||
|
pop ebx eax
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
;входные параметры:
|
;¢å®¤ë¥ ¯ à ¬¥âàë:
|
||||||
;eax - адрес библиотеки в памяти
|
;eax - ¤à¥á ¡¨¡«¨®â¥ª¨ ¢ ¯ ¬ïâ¨
|
||||||
;myimport - импортируемые функции
|
;myimport - ¨¬¯®àâ¨àã¥¬ë¥ äãªæ¨¨
|
||||||
macro import_boxlib myimport, err_message_import__, head_f_i__
|
macro import_boxlib myimport, err_message_import__, head_f_i__
|
||||||
{
|
{
|
||||||
local import_loop
|
local import_loop
|
||||||
@ -619,42 +523,42 @@ local import_not_found
|
|||||||
mov edx, eax
|
mov edx, eax
|
||||||
mov esi,myimport
|
mov esi,myimport
|
||||||
import_loop:
|
import_loop:
|
||||||
lodsd ;mov eax,dword[esi] ;add esi,4 ;получаем в eax указатель на имя импортируемой функции
|
lodsd ;mov eax,dword[esi] ;add esi,4 ;¯®«ãç ¥¬ ¢ eax 㪠§ â¥«ì ¨¬ï ¨¬¯®àâ¨à㥬®© äãªæ¨¨
|
||||||
test eax, eax
|
test eax, eax
|
||||||
jz import_done ;если указатель на имя функции = 0 (в пользовательской программе)
|
jz import_done ;¥á«¨ 㪠§ â¥«ì ¨¬ï äãªæ¨¨ = 0 (¢ ¯®«ì§®¢ ⥫ì᪮© ¯à®£à ¬¬¥)
|
||||||
push edx ;сохраняем начало библиотечных указателей на функции
|
push edx ;á®åà 塞 ç «® ¡¨¡«¨®â¥çëå 㪠§ ⥫¥© äãªæ¨¨
|
||||||
import_find:
|
import_find:
|
||||||
mov ebx, [ds:edx]
|
mov ebx, [ds:edx]
|
||||||
test ebx, ebx
|
test ebx, ebx
|
||||||
jz import_not_found ;если указатель на имя функции = 0 (в библиотеке)
|
jz import_not_found ;¥á«¨ 㪠§ â¥«ì ¨¬ï äãªæ¨¨ = 0 (¢ ¡¨¡«¨®â¥ª¥)
|
||||||
push eax ;eax - указатель на имя экспортируемой функции (в пользовательской программе)
|
push eax ;eax - 㪠§ â¥«ì ¨¬ï íªá¯®àâ¨à㥬®© äãªæ¨¨ (¢ ¯®«ì§®¢ ⥫ì᪮© ¯à®£à ¬¬¥)
|
||||||
lp:
|
lp:
|
||||||
mov cl, [ds:eax]
|
mov cl, [ds:eax]
|
||||||
cmp cl, [ds:ebx] ;сравниваем имена функций в библиотеке и в пользовательской программе
|
cmp cl, [ds:ebx] ;áà ¢¨¢ ¥¬ ¨¬¥ äãªæ¨© ¢ ¡¨¡«¨®â¥ª¥ ¨ ¢ ¯®«ì§®¢ ⥫ì᪮© ¯à®£à ¬¬¥
|
||||||
jnz import_find_next ;если названия не совпали
|
jnz import_find_next ;¥á«¨ §¢ ¨ï ¥ ᮢ¯ «¨
|
||||||
test cl, cl
|
test cl, cl
|
||||||
jz import_found ;если названия совпали, и уже конец строки (cl=0)
|
jz import_found ;¥á«¨ §¢ ¨ï ᮢ¯ «¨, ¨ 㦥 ª®¥æ áâப¨ (cl=0)
|
||||||
inc eax
|
inc eax
|
||||||
inc ebx
|
inc ebx
|
||||||
jmp lp
|
jmp lp
|
||||||
import_find_next:
|
import_find_next:
|
||||||
pop eax
|
pop eax
|
||||||
add edx, 8 ;8 = 4 байта указатель на название и 4 байта указатель на функцию
|
add edx, 8 ;8 = 4 ¡ ©â 㪠§ â¥«ì §¢ ¨¥ ¨ 4 ¡ ©â 㪠§ ⥫ì äãªæ¨î
|
||||||
jmp import_find
|
jmp import_find
|
||||||
import_found:
|
import_found:
|
||||||
pop ebx ;востанавливаем указатель на имя функции (который был в eax) и освобождаем стек
|
pop ebx ;¢®áâ ¢«¨¢ ¥¬ 㪠§ â¥«ì ¨¬ï äãªæ¨¨ (ª®â®àë© ¡ë« ¢ eax) ¨ ®á¢®¡®¦¤ ¥¬ á⥪
|
||||||
mov eax, [ds:edx+4] ;eax = указатель на функцию (в библиотеке)
|
mov eax, [ds:edx+4] ;eax = 㪠§ ⥫ì äãªæ¨î (¢ ¡¨¡«¨®â¥ª¥)
|
||||||
mov [esi-4], eax ;копируем указатель (на функцию) в программу, -4 ставим потому что esi было сдвинуто командой lodsd
|
mov [esi-4], eax ;ª®¯¨à㥬 㪠§ ⥫ì ( äãªæ¨î) ¢ ¯à®£à ¬¬ã, -4 áâ ¢¨¬ ¯®â®¬ã çâ® esi ¡ë«® ᤢ¨ãâ® ª®¬ ¤®© lodsd
|
||||||
pop edx ;устанавливаем edx на начало библиотечных функций
|
pop edx ;ãáâ ¢«¨¢ ¥¬ edx ç «® ¡¨¡«¨®â¥çëå äãªæ¨©
|
||||||
;--- проверяем совпадает ли имя экспортированной функции с 'lib_init'
|
;--- ¯à®¢¥à塞 ᮢ¯ ¤ ¥â «¨ ¨¬ï íªá¯®àâ¨à®¢ ®© äãªæ¨¨ á 'lib_init'
|
||||||
if library_fun_memory_alloc eq 0
|
if library_fun_memory_alloc eq 0
|
||||||
else
|
else
|
||||||
cmp dword[ebx],'lib_'
|
cmp dword[ebx],'lib_'
|
||||||
jne import_loop
|
jne import_loop
|
||||||
cmp dword[ebx+4],'init'
|
cmp dword[ebx+4],'init'
|
||||||
jne import_loop
|
jne import_loop
|
||||||
;--- если имя функции совпало с 'lib_init' попадаем сюда
|
;--- ¥á«¨ ¨¬ï äãªæ¨¨ ᮢ¯ «® á 'lib_init' ¯®¯ ¤ ¥¬ áî¤
|
||||||
;подключение функций для работы с памятью
|
;¯®¤ª«î票¥ äãªæ¨© ¤«ï à ¡®âë á ¯ ¬ïâìî
|
||||||
;push eax
|
;push eax
|
||||||
;call dll.Init
|
;call dll.Init
|
||||||
pushad
|
pushad
|
||||||
@ -672,18 +576,18 @@ import_not_found:
|
|||||||
show_error_window err_message_import__, head_f_i__ ;show error message /create window
|
show_error_window err_message_import__, head_f_i__ ;show error message /create window
|
||||||
jmp e.exit
|
jmp e.exit
|
||||||
import_done:
|
import_done:
|
||||||
xor eax,eax ;=0 все загрузилось удачно
|
xor eax,eax ;=0 ¢á¥ § £à㧨«®áì 㤠ç®
|
||||||
e.exit:
|
e.exit:
|
||||||
;---------------------------------------------------------------------
|
;---------------------------------------------------------------------
|
||||||
}
|
}
|
||||||
ll_struc_size = 48;($-library_name__) ; constant size of struct
|
ll_struc_size = 48;($-library_name__) ; constant size of struct
|
||||||
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
|
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
|
||||||
{
|
{
|
||||||
.library_name__ dd library_name__ ; имя загружаемой библиотеки
|
.library_name__ dd library_name__ ; ¨¬ï § £à㦠¥¬®© ¡¨¡«¨®â¥ª¨
|
||||||
.cur_dir_path__ dd cur_dir_path__ ; указатель на буфер в котором содержиться путь от куда была запущена программа
|
.cur_dir_path__ dd cur_dir_path__ ; 㪠§ â¥«ì ¡ãä¥à ¢ ª®â®à®¬ ᮤ¥à¦¨âìáï ¯ãâì ®â ªã¤ ¡ë« § ¯ãé¥ ¯à®£à ¬¬
|
||||||
|
|
||||||
.library_path__ dd library_path__ ; указатель на буфер в котором будет софоримирован путь к библиотеки, если нужно вычислить путь до либы с места запуска программы, обычно нужно, в случаях, если либа расположена в той же папке
|
.library_path__ dd library_path__ ; 㪠§ â¥«ì ¡ãä¥à ¢ ª®â®à®¬ ¡ã¤¥â á®ä®à¨¬¨à®¢ ¯ãâì ª ¡¨¡«¨®â¥ª¨, ¥á«¨ 㦮 ¢ëç¨á«¨âì ¯ãâì ¤® «¨¡ë á ¬¥áâ § ¯ã᪠¯à®£à ¬¬ë, ®¡ëç® ã¦®, ¢ á«ãç ïå, ¥á«¨ «¨¡ à ᯮ«®¦¥ ¢ ⮩ ¦¥ ¯ ¯ª¥
|
||||||
.complete_path dd system_path__ ; путь который четко содержит путь
|
.complete_path dd system_path__ ; ¯ãâì ª®â®àë© ç¥âª® ᮤ¥à¦¨â ¯ãâì
|
||||||
|
|
||||||
.err_message_found_lib__ dd err_message_found_lib__
|
.err_message_found_lib__ dd err_message_found_lib__
|
||||||
.head_f_l__ dd head_f_l__
|
.head_f_l__ dd head_f_l__
|
||||||
@ -693,7 +597,7 @@ struc l_libs library_name__, cur_dir_path__, library_path__, system_path__, err_
|
|||||||
if point_dir_name eq
|
if point_dir_name eq
|
||||||
.point_dir_name__ dd 0x0
|
.point_dir_name__ dd 0x0
|
||||||
else
|
else
|
||||||
.point_dir_name__ dd point_dir_name ; имя вложенной дирректории в кторой храняться подгружаемые модули.
|
.point_dir_name__ dd point_dir_name ; ¨¬ï ¢«®¦¥®© ¤¨à४â®à¨¨ ¢ ªâ®à®© åà ïâìáï ¯®¤£à㦠¥¬ë¥ ¬®¤ã«¨.
|
||||||
end if
|
end if
|
||||||
.adr_load_lib dd 0x0
|
.adr_load_lib dd 0x0
|
||||||
.status_lib dd 0x0 ;status of load library
|
.status_lib dd 0x0 ;status of load library
|
||||||
|
Loading…
Reference in New Issue
Block a user