update 'load_lib.mac', update 'info3ds', fix 'kol_f_edit'

git-svn-id: svn://kolibrios.org@8083 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
IgorA 2020-09-29 19:58:14 +00:00
parent dcf43649a6
commit 06339c5e4e
5 changed files with 312 additions and 316 deletions

View File

@ -231,12 +231,12 @@ start:
stdcall [glEnable], GL_NORMALIZE ;¤¥« ¬ ­®à¬ «¨ ®¤¨­ ª®¢®© ¢¥«¨ç¨­ë ¢® ¨§¡¥¦ ­¨¥  àâ¥ä ªâ®¢
stdcall [glClearColor], [color_bk+8],[color_bk+4],[color_bk],0.0
stdcall [glShadeModel], GL_SMOOTH
stdcall [gluNewQuadric]
call [gluNewQuadric]
mov [qObj],eax
mov eax,dword[ctx1] ;eax -> TinyGLContext.GLContext
mov eax,[eax] ;eax -> ZBuffer
mov eax,[eax+offs_zbuf_pbuf] ;eax -> ZBuffer.pbuf
mov eax,[eax+ZBuffer.pbuf]
mov dword[buf_ogl],eax
;open file from cmd line
@ -1392,9 +1392,6 @@ align 4
w_scr_t1 scrollbar 16,0, 3,0, 15, 100, 0,0, 0,0,0, 1
align 4
ctx1 db 28 dup (0) ;TinyGLContext or KOSGLContext
;sizeof.TinyGLContext = 28
qObj dd 0
light_position dd 0.0, 0.0, -2.0, 1.0 ; <20> á¯®«®¦¥­¨¥ ¨áâ®ç­¨ª  [0][1][2]
@ -1407,13 +1404,14 @@ white_light dd 0.8, 0.8, 0.8, 1.0 ;
lmodel_ambient dd 0.3, 0.3, 0.3, 1.0 ; <20> à ¬¥âàë ä®­®¢®£® ®á¢¥é¥­¨ï
if lang eq ru
capt db 'info 3ds ¢¥àá¨ï 23.03.19',0 ;¯®¤¯¨áì ®ª­ 
capt db 'info 3ds ¢¥àá¨ï 29.09.20',0 ;¯®¤¯¨áì ®ª­ 
else
capt db 'info 3ds version 23.03.19',0 ;window caption
capt db 'info 3ds version 29.09.20',0 ;window caption
end if
align 16
i_end:
ctx1 rb 28 ;sizeof.TinyGLContext = 28
procinfo process_information
run_file_70 FileInfoBlock
sc system_colors

View File

@ -227,12 +227,12 @@ start:
stdcall [glEnable], GL_NORMALIZE ;¤¥« ¬ ­®à¬ «¨ ®¤¨­ ª®¢®© ¢¥«¨ç¨­ë ¢® ¨§¡¥¦ ­¨¥  àâ¥ä ªâ®¢
stdcall [glClearColor], [color_bk+8],[color_bk+4],[color_bk],0.0
stdcall [glShadeModel], GL_SMOOTH
stdcall [gluNewQuadric]
call [gluNewQuadric]
mov [qObj],eax
mov eax,dword[ctx1] ;eax -> TinyGLContext.GLContext
mov eax,[eax] ;eax -> ZBuffer
mov eax,[eax+offs_zbuf_pbuf] ;eax -> ZBuffer.pbuf
mov eax,[eax+ZBuffer.pbuf]
mov dword[buf_ogl],eax
;open file from cmd line
@ -287,14 +287,14 @@ mouse:
stdcall [tl_node_get_data],tree1
or eax,eax
jz .end_d
mov ebx,dword[eax]
mov ebx,[eax]
add ebx,dword[open_file_data] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ ¯ ¬ïâ¨
cmp word[ebx],CHUNK_OBJBLOCK
jne .end_d
mcall SF_MOUSE_GET,SSF_WINDOW_POSITION
mov ebx,eax
shr ebx,16 ;mouse.x
sar ebx,16 ;mouse.x
cmp ebx,3d_wnd_l
jg @f
mov ebx,3d_wnd_l
@ -304,7 +304,7 @@ mouse:
jle @f
mov ebx,3d_wnd_w
@@:
and eax,0xffff ;mouse.y
movsx eax,ax ;mouse.y
cmp eax,3d_wnd_t
jg @f
mov eax,3d_wnd_t
@ -346,13 +346,13 @@ mouse:
;mouse l. but. press
mcall SF_MOUSE_GET,SSF_WINDOW_POSITION
mov ebx,eax
shr ebx,16 ;mouse.x
sar ebx,16 ;mouse.x
cmp ebx,3d_wnd_l
jl .end_d
sub ebx,3d_wnd_l
cmp ebx,3d_wnd_w
jg .end_d
and eax,0xffff ;mouse.y
movsx eax,ax ;mouse.y
cmp eax,3d_wnd_t
jl .end_d
sub eax,3d_wnd_t
@ -363,7 +363,7 @@ mouse:
mov dword[mouse_y],eax
.end_d:
stdcall [tl_mouse], dword tree1
stdcall [tl_mouse], tree1
stdcall [kmainmenu_dispatch_cursorevent], [main_menu]
pop ebx eax
ret
@ -378,19 +378,18 @@ timer_funct:
stdcall [tl_node_get_data],tree1
or eax,eax
jz .end_f
mov edi,eax
add edi,list_offs_obj3d
lea edi,[eax+list_offs_obj3d]
mov ebx,eax
mov eax,dword[ebx]
mov ecx,dword[ebx+4] ;à §¬¥à ¡«®ª 
mov eax,[ebx]
mov ecx,[ebx+4] ;à §¬¥à ¡«®ª 
stdcall hex_in_str, txt_3ds_offs.dig, eax,8
stdcall hex_in_str, txt_3ds_offs.siz, ecx,8
add eax,dword[open_file_data] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ ¯ ¬ïâ¨
cmp dword[offs_last_timer],eax
add eax,[open_file_data] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ ¯ ¬ïâ¨
cmp [offs_last_timer],eax
je .end_f
;¥á«¨ ¢ë¤¥«¥­­ë© ¡«®ª ¤ ­­ëå ­¥ ᮢ¯ ¤ ¥â á ¯®á«¥¤­¨¬ § ¯®¬­¥­­ë¬
mov dword[offs_last_timer],eax
mov [offs_last_timer],eax
cmp word[eax],CHUNK_OBJBLOCK
jne .end_oblo
@ -422,7 +421,7 @@ timer_funct:
stdcall buf_draw_beg, buf_ogl
stdcall [buf2d_draw_text], buf_ogl, buf_1,txt_3ds_offs,5,35,0xb000
mov edx,dword[ebx+list_offs_p_data]
mov edx,[ebx+list_offs_p_data]
or edx,edx ;ᬮâਬ ¥áâì «¨ ®¯¨á ­¨¥ ¡«®ª 
jz .no_info
stdcall [buf2d_draw_text], buf_ogl, buf_1,edx,5,45,0xb000
@ -1043,8 +1042,7 @@ proc add_3ds_object, icon:dword, level:dword, size_bl:dword, info_bl:dword
.no_capt:
mov ecx,(sizeof.obj_3d)/4
xor eax,eax
mov edi,buffer
add edi,list_offs_obj3d
mov edi,buffer+list_offs_obj3d
rep stosd
stdcall [tl_node_add], tree1, ebx, buffer
stdcall [tl_cur_next], tree1
@ -1459,9 +1457,6 @@ align 4
w_scr_t1 scrollbar 16,0, 3,0, 15, 100, 0,0, 0,0,0, 1
align 4
ctx1 db 28 dup (0) ;TinyGLContext or KOSGLContext
;sizeof.TinyGLContext = 28
qObj dd 0
light_position dd 0.0, 0.0, -2.0, 1.0 ; <20> á¯®«®¦¥­¨¥ ¨áâ®ç­¨ª  [0][1][2]
@ -1474,13 +1469,14 @@ white_light dd 0.8, 0.8, 0.8, 1.0 ;
lmodel_ambient dd 0.3, 0.3, 0.3, 1.0 ; <20> à ¬¥âàë ä®­®¢®£® ®á¢¥é¥­¨ï
if lang eq ru
capt db 'info 3ds [user] ¢¥àá¨ï 23.03.19',0 ;¯®¤¯¨áì ®ª­ 
capt db 'info 3ds [user] ¢¥àá¨ï 29.09.20',0 ;¯®¤¯¨áì ®ª­ 
else
capt db 'info 3ds [user] version 23.03.19',0 ;window caption
capt db 'info 3ds [user] version 29.09.20',0 ;window caption
end if
align 16
i_end:
ctx1 rb 28 ;sizeof.TinyGLContext = 28
procinfo process_information
run_file_70 FileInfoBlock
sc system_colors

View File

@ -2,7 +2,7 @@
; áâàãªâãàë ¨ ä㭪樨 ¤«ï à¨á®¢ ­¨ï 3d ®¡ê¥ªâ®¢
;
offs_zbuf_pbuf equ 24 ;const. from 'zbuffer.inc'
include '../../develop/libraries/TinyGL/asm_fork/zbuffer.inc'
struct obj_3d
poi_data dd ? ;㪠§ â¥«ì ­  ª®®à¤¨­ âë ¢¥à設
@ -356,8 +356,7 @@ pushad
mov ecx,[ecx+obj_3d.poi_data]
align 4
@@:
mov edi,ebp
sub edi,36 ;tbl2
lea edi,[ebp-36] ;tbl2
movzx esi,word[edx] ;1-ï ¢¥à設 
imul esi,12
add esi,ecx
@ -377,8 +376,7 @@ align 4
movsd
movsd
mov esi,ebp
sub esi,72 ;tbl1
lea esi,[ebp-72] ;tbl1
sub edi,36 ;tbl2
;v1 <-> v2
fld dword[edi+12]
@ -806,7 +804,7 @@ proc draw_3d uses eax ebx ecx edi, o_data:dword
cmp dword[edi+obj_3d.poi_count],2
jl .end_f
stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;®ç¨á⨬ ¡ãä¥à æ¢¥â  ¨ £«ã¡¨­ë
stdcall [glPushMatrix]
call [glPushMatrix]
bt dword[draw_mode],bit_light
jnc @f
call SetLight
@ -976,10 +974,10 @@ if version_edit eq 1
stdcall [glEnd]
stdcall [glColor3ub],[color_select+2],[color_select+1],[color_select]
stdcall [glPushMatrix]
call [glPushMatrix]
stdcall [glTranslatef], [eax],[eax+4],[eax+8]
stdcall [gluSphere], [qObj], [sph_radius], 8,8
stdcall [glPopMatrix]
call [glPopMatrix]
@@:
;à¨á®¢ ­¨¥ ¢ë¤¥«¥­­ëå â®ç¥ª
@ -997,10 +995,10 @@ align 4
jne .next_sel
stdcall [tl_node_poi_get_data], tree3,ebx
mov eax,[eax]
stdcall [glPushMatrix]
call [glPushMatrix]
stdcall [glTranslatef], [eax],[eax+4],[eax+8]
stdcall [gluSphere], [qObj], [sph_radius], 4,4
stdcall [glPopMatrix]
call [glPopMatrix]
dec ecx
jz .end_select
.next_sel:
@ -1009,14 +1007,14 @@ align 4
.end_select:
end if
stdcall [glPopMatrix]
call [glPopMatrix]
if version_edit eq 1
cmp dword[obj_poi_sel_c],0
je @f
stdcall [buf2d_draw_text], buf_ogl, buf_1,txt_select_vert,5,3,[color_select]
@@:
end if
stdcall [kosglSwapBuffers]
call [kosglSwapBuffers]
.end_f:
ret
endp

View File

@ -1,13 +1,7 @@
use32
org 0x0
org 0
db 'MENUET01'
dd 0x1
dd start
dd i_end
dd mem
dd stacktop
dd buf_cmd_lin
dd sys_path
dd 1,start,i_end,mem,stacktop,buf_cmd_lin,sys_path
include '../../macros.inc'
include '../../proc32.inc'
@ -21,7 +15,7 @@ include 'obj_codes.inc'
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc, dll.Load
hed db 'kol_f_edit 16.11.15',0
hed db 'kol_f_edit 29.09.20',0
sizeof.TreeList equ 20 ;need for element 'tree_list'
@ -1337,34 +1331,34 @@ obj_m_win dd 0 ;
;
if 1 ;lang eq ru
err_message_found_lib0 db '<27>¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  box_lib.obj',0 ;áâப , ª®â®à ï ¡ã¤¥â ¢ áä®à¬¨à®¢ ­­®¬ ®ª­¥, ¥á«¨ ¡¨¡«¨®â¥ª  ­¥ ¡ã¤¥â ­ ©¤¥­ 
err_message_import0 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ box_lib.obj',0
err_message_found_lib1 db '<27>¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  proc_lib.obj',0
err_message_import1 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ proc_lib.obj',0
err_message_found_lib2 db '<27>¥ 㤠«®áì ­ ©â¨ ¡¨¡«¨®â¥ªã buf2d.obj',0
err_message_import2 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ buf2d.obj',0
err_message_found_lib3 db '<27>¥ 㤠«®áì ­ ©â¨ ¡¨¡«¨®â¥ªã libimg.obj',0
err_message_import3 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ libimg.obj',0
err_message_found_lib4 db '<27>¥ 㤠«®áì ­ ©â¨ ¡¨¡«¨®â¥ªã msgbox.obj',0
err_message_import4 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ msgbox.obj',0
err_message_found_lib0 db '<27>¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  box_lib.obj',39,'" -tE',0
err_message_import0 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ box_lib.obj',39,'" -tW',0
err_message_found_lib1 db '<27>¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  proc_lib.obj',39,'" -tE',0
err_message_import1 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ proc_lib.obj',39,'" -tW',0
err_message_found_lib2 db '<27>¥ 㤠«®áì ­ ©â¨ ¡¨¡«¨®â¥ªã buf2d.obj',39,'" -tE',0
err_message_import2 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ buf2d.obj',39,'" -tW',0
err_message_found_lib3 db '<27>¥ 㤠«®áì ­ ©â¨ ¡¨¡«¨®â¥ªã libimg.obj',39,'" -tE',0
err_message_import3 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ libimg.obj',39,'" -tW',0
err_message_found_lib4 db '<27>¥ 㤠«®áì ­ ©â¨ ¡¨¡«¨®â¥ªã msgbox.obj',39,'" -tE',0
err_message_import4 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ msgbox.obj',39,'" -tW',0
head_f_i:
head_f_l db '‘¨á⥬­ ï ®è¨¡ª ',0 ;§ £®«®¢®ª ®ª­ , ¯à¨ ¢®§­¨ª­®¢¥­¨¨ ®è¨¡ª¨
head_f_l db '"‘¨á⥬­ ï ®è¨¡ª ',0 ;§ £®«®¢®ª ®ª­ , ¯à¨ ¢®§­¨ª­®¢¥­¨¨ ®è¨¡ª¨
else
err_message_found_lib0 db 'Sorry I cannot found library box_lib.obj',0
err_message_import0 db 'Error on load import library box_lib.obj',0
err_message_found_lib1 db 'Sorry I cannot found library proc_lib.obj',0
err_message_import1 db 'Error on load import library proc_lib.obj',0
err_message_found_lib2 db 'Sorry I cannot found library buf2d.obj',0
err_message_import2 db 'Error on load import library buf2d.obj',0
err_message_found_lib3 db 'Sorry I cannot found library libimg.obj',0
err_message_import3 db 'Error on load import library libimg.obj',0
err_message_found_lib4 db 'Sorry I cannot found library msgbox.obj',0
err_message_import4 db 'Error on load import library msgbox.obj',0
err_message_found_lib0 db 'Sorry I cannot found library box_lib.obj',39,'" -tE',0
err_message_import0 db 'Error on load import library box_lib.obj',39,'" -tW',0
err_message_found_lib1 db 'Sorry I cannot found library proc_lib.obj',39,'" -tE',0
err_message_import1 db 'Error on load import library proc_lib.obj',39,'" -tW',0
err_message_found_lib2 db 'Sorry I cannot found library buf2d.obj',39,'" -tE',0
err_message_import2 db 'Error on load import library buf2d.obj',39,'" -tW',0
err_message_found_lib3 db 'Sorry I cannot found library libimg.obj',39,'" -tE',0
err_message_import3 db 'Error on load import library libimg.obj',39,'" -tW',0
err_message_found_lib4 db 'Sorry I cannot found library msgbox.obj',39,'" -tE',0
err_message_import4 db 'Error on load import library msgbox.obj',39,'" -tW',0
head_f_i:
head_f_l db 'System error',0 ;§ £®«®¢®ª ®ª­ , ¯à¨ ¢®§­¨ª­®¢¥­¨¨ ®è¨¡ª¨
head_f_l db '"System error',0 ;§ £®«®¢®ª ®ª­ , ¯à¨ ¢®§­¨ª­®¢¥­¨¨ ®è¨¡ª¨
end if
system_dir0 db '/sys/lib/'
@ -1492,7 +1486,7 @@ import_box_lib:
ted_but_undo dd sz_ted_but_undo
ted_but_redo dd sz_ted_but_redo
ted_but_reverse dd sz_ted_but_reverse
ted_but_find_next dd sz_ted_but_find_next
ted_but_find dd sz_ted_but_find
ted_text_colored dd sz_ted_text_colored
;version_text_edit dd sz_ted_version
@ -1558,7 +1552,7 @@ dd 0,0
sz_ted_but_undo db 'ted_but_undo',0
sz_ted_but_redo db 'ted_but_redo',0
sz_ted_but_reverse db 'ted_but_reverse',0
sz_ted_but_find_next db 'ted_but_find_next',0
sz_ted_but_find db 'ted_but_find',0
sz_ted_text_colored db 'ted_text_colored',0
;sz_ted_version db 'version_text_edit',0

View File

@ -85,32 +85,14 @@
;edit_box_key dd aEdit_box_key
;edit_box_mouse dd aEdit_box_mouse
;version_ed dd aVersion_ed
;
;check_box_draw dd aCheck_box_draw
;check_box_mouse dd aCheck_box_mouse
;version_ch dd aVersion_ch
;
;option_box_draw dd aOption_box_draw
;option_box_mouse dd aOption_box_mouse
;version_op dd aVersion_op
; dd 0
; dd 0
;
; dd 0,0
;aEdit_box_draw db 'edit_box',0
;aEdit_box_key db 'edit_box_key',0
;aEdit_box_mouse db 'edit_box_mouse',0
;aVersion_ed db 'version_ed',0
;aCheck_box_draw db 'check_box_draw',0
;aCheck_box_mouse db 'check_box_mouse',0
;aVersion_ch db 'version_ch',0
;aOption_box_draw db 'option_box_draw',0
;aOption_box_mouse db 'option_box_mouse',0
;aVersion_op db 'version_op',0
;---------------------------------------------------------------------
macro @use_library
{
local lp1
@ -136,13 +118,70 @@ run_notify_struct:
.Buffer dd 0
db 0
.FileName dd file_name
;---------------------------------------------------------------------
@library_name equ dword [esp+16]
@cur_dir_path equ dword [esp+12]
@library_path equ dword [esp+8]
@point_dir_name equ dword [esp+4]
;description:
; £®â®¢¨¬ ⥪áâ ¤«ï ¯®ª §  ç¥à¥§ @notify:
; 1) ¢ë¤¥«ï¥¬ ¯ ¬ïâì ¢ [arrea_xx] ­® ­¥ ¡®«ìè¥ ®¤­®£® à § 
; 2) ª®¯¨à㥬 § £®«®¢®ª (¥á«¨ ¥áâì ¨¬ï ä㭪樨 â® ¤®¡ ¢«ï¥¬ ¥£® ª § £®«®¢ªã) ¨ ⥪áâ á®®¡é¥­¨ï ¢ [arrea_xx]
;input:
; ebp+8 - head message
; ebp+12 - error message
; ebp+16 - 0 ¨«¨ ¨¬ï ä㭪樨, ª®â®àãî ­¥ 㤠«®áì íªá¯®àâ¨à®¢ âì
;output:
; eax = -1
align 4
l_lib_init_error_window:
push ebp
mov ebp,esp
cmp dword[arrea_xx],0
jne .no_msg ;¥á«¨ à ­ìè¥ ¡ë«® ᮧ¤ ­® ¤à㣮¥ á®®¡é¥­¨¥
pushad
mcall 68,11
mcall 68,12,4096
mov [arrea_xx],eax
mov edi,eax
mov esi,[ebp+8]
align 4
@@:
movsb
cmp byte[esi],0
jne @b
mov word[edi],0xa0d
add edi,2
;¤®¡ ¢«ï¥¬ ¨¬ï ä㭪樨 ¢ § £®«®¢®ª
mov esi,[ebp+16]
or esi,esi
jz .lp1
mov word[edi-2],0x2020
@@:
movsb
cmp byte[esi],0
jne @b
mov word[edi],0xa0d
add edi,2
.lp1:
mov esi,[ebp+12]
align 4
@@:
movsb
cmp byte[esi],0
jne @b
mov byte[edi],0
popad
.no_msg:
or eax,-1
pop ebp
ret 12
align 4
@copy_path:
mov esi,@cur_dir_path
@ -200,11 +239,9 @@ align 4
stosb
test eax,eax
jnz .lp4
;---------------------------------------------------------------------
ret
}
;---------------------------------------------------------------------
macro @use_library_mem mem_alloc,mem_free,mem_realloc,dll_load
{
@ -215,92 +252,93 @@ library_fun_memory_realloc equ mem_realloc
library_fun_dll_load equ dll_load
}
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__
{
local end_steep
local exit
;---------------------------------------------------------------------
; loading Box_Lib library
local i_begin
local i_error
local i_exit
mcall 68,19,system_path__ ; load of sys directory
test eax,eax
jnz end_steep
jnz i_begin
if point_dir_name__ eq
copy_path library_name__, cur_dir_path__, library_path__,0x0
copy_path library_name__, cur_dir_path__, library_path__,0
else
copy_path library_name__, cur_dir_path__, library_path__,point_dir_name__ ;the macros making way /current pach a program/+ name system library
;the macros making way /current path a program/ + name system library
copy_path library_name__, cur_dir_path__, library_path__,point_dir_name__
end if
mcall 68,19,library_path__ ; load of alternative
test eax,eax
jnz end_steep
show_error_window err_message_found_lib__, head_f_l__ ;show error message /create window
jmp exit
jnz i_begin
push eax
push dword err_message_found_lib__
push dword head_f_l__
jmp i_error
align 4
end_steep:
import_boxlib myimport, err_message_import__, head_f_i__ ;import
exit:
i_begin:
import_boxlib myimport
test eax,eax
jz @f
jz i_exit
push eax
push dword err_message_import__
push dword head_f_i__
i_error:
call l_lib_init_error_window
notify_window_run [arrea_xx] ; ᮧ¤ ¥¬ ®ª­® @notify
or eax,-1
@@:
;---------------------------------------------------------------------
i_exit:
}
;---------------------------------------------------------------------
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__
{
local end_steep
local exit
;---------------------------------------------------------------------
; loading Box_Lib library
local i_begin
local i_error
local i_exit
if point_dir_name__ eq
copy_path library_name__, cur_dir_path__, library_path__,0x0
copy_path library_name__, cur_dir_path__, library_path__,0
else
copy_path library_name__, cur_dir_path__, library_path__,point_dir_name__ ;the macros making way /current pach a program/+ name system library
;the macros making way /current path a program/ + name system library
copy_path library_name__, cur_dir_path__, library_path__,point_dir_name__
end if
mcall 68,19,library_path__ ; load of alternative
test eax,eax
jnz end_steep
jnz i_begin
mcall 68,19,system_path__ ; load of sys directory
test eax,eax
jnz end_steep
show_error_window err_message_found_lib__, head_f_l__ ;show error message /create window
jmp exit
jnz i_begin
push eax
push dword err_message_found_lib__
push dword head_f_l__
jmp i_error
align 4
end_steep:
import_boxlib myimport, err_message_import__, head_f_i__ ;import
exit:
i_begin:
import_boxlib myimport
test eax,eax
jz @f
jz i_exit
push eax
push dword err_message_found_lib__
push dword head_f_l__
i_error:
call l_lib_init_error_window
notify_window_run [arrea_xx] ; ᮧ¤ ¥¬ ®ª­® @notify
or eax,-1
@@:
i_exit:
;---------------------------------------------------------------------
}
;description:
; ¬ ªà®á § £à㧪¨ ¡¨¡«¨®â¥ª ¨§ á¨á⥬­®© ¯ ¯ª¨, ¥á«¨ ¡¨¡«¨®â¥ª  ­¥ ­ ©¤¥­ 
; ⮣¤  ¯®¨áª ¨¤¥â ¢ ⥪ã饩 ¯ ¯ª¥ á ¯à®£à ¬¬®©
macro sys_load_libraries _start,_end
{
local exit_lp2
local lp2
local lp
local cycle0
local end_steep
local next
local cycle0n
local cycle1
local cycle1n
local cycle1e
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
library_name__ equ [ebp]
cur_dir_path__ equ [ebp+4]
@ -316,69 +354,75 @@ adr_load_lib equ dword [ebp+40]
status_lib equ dword [ebp+44]
mov ebp,_start
mov ecx,((_end-_start)/ll_struc_size)
mov ecx,(_end-_start)/ll_struc_size
align 4
lp: push ecx
cycle0:
push ecx
mcall 68,19,system_path__ ; load of sys directory
test eax,eax
jnz end_steep
copy_path library_name__, cur_dir_path__, library_path__,point_dir_name__ ;the macros making way /current pach a program/+ name system library
;the macros making way /current path a program/ + name system library
copy_path library_name__, cur_dir_path__, library_path__,point_dir_name__
mcall 68,19,library_path__ ; load of alternative
test eax,eax
jnz end_steep
or status_lib,1 ; status of code - enable error - not found library
or status_lib,0x1 ; status of code - enable error - not found library
show_error_window err_message_found_lib__, head_f_l__, ;show error message /create window
jmp next
push eax
push dword err_message_found_lib__
push dword head_f_l__
call l_lib_init_error_window
jmp cycle0n
align 4
end_steep:
mov adr_load_lib,eax ;save adr lib in memory
import_boxlib my_import, err_message_import__, head_f_i__ ;import
import_boxlib my_import
test eax,eax
jz next
or status_lib,0x2 ; status of code - enable error - import error
next:
jz cycle0n
or status_lib,2 ; status of code - enable error - import error
push eax
push dword err_message_import__
push dword head_f_i__
call l_lib_init_error_window
cycle0n:
pop ecx
add ebp,ll_struc_size
dec ecx
jnz lp
jnz cycle0
;----------------------------------
;¢ë¢®¤ á®®¡é¥­¨ï ®¡ ®è¨¡ª¥ ¯à¨ § £à㧪¥
mov ebp,_start
mov ecx,((_end-_start)/ll_struc_size)
mov ecx,(_end-_start)/ll_struc_size
align 4
lp2:
cycle1:
mov eax,status_lib
test eax,eax
jz @f
jz cycle1n
notify_window_run [arrea_xx] ; ᮧ¤ ¥¬ ®ª­® @notify
or eax,-1
jmp exit_lp2
@@:
mov eax,-1
jmp cycle1e
align 4
cycle1n:
add ebp,ll_struc_size
dec ecx
jnz lp2
exit_lp2:
jnz cycle1
cycle1e:
}
;description:
; ¬ ªà®á § £à㧪¨ ¡¨¡«¨®â¥ª ¨§ ⥪ã饩 ¯ ¯ª¨ á ¯à®£à ¬¬®©, ¥á«¨ ¡¨¡«¨®â¥ª  ­¥ ­ ©¤¥­ 
; ⮣¤  ¯®¨áª ¨¤¥â ¢ á¨á⥬­®© ¯ ¯ª¥
macro load_libraries _start,_end
{
local lp2
local exit_lp2
local lp
local cycle0
local end_steep
local next
local cycle0n
local cycle1
local cycle1n
local cycle1e
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
library_name__ equ [ebp]
cur_dir_path__ equ [ebp+4]
@ -394,12 +438,13 @@ adr_load_lib equ dword [ebp+40]
status_lib equ dword [ebp+44]
mov ebp,_start
mov ecx,((_end-_start)/ll_struc_size)
mov ecx,(_end-_start)/ll_struc_size
align 4
lp: push ecx
cycle0:
push ecx
copy_path library_name__, cur_dir_path__, library_path__,point_dir_name__ ;the macros making way /current pach a program/+ name system library
;the macros making way /current path a program/ + name system library
copy_path library_name__, cur_dir_path__, library_path__,point_dir_name__
mcall 68,19,library_path__ ; load of alternative
test eax,eax
@ -408,49 +453,48 @@ lp: push ecx
mcall 68,19,system_path__ ; load of sys directory
test eax,eax
jnz end_steep
or status_lib,1 ; status of code - enable error - not found library
or status_lib,0x1 ; status of code - enable error - not found library
show_error_window err_message_found_lib__, head_f_l__ ;show error message /create window
jmp next
push eax
push dword err_message_found_lib__
push dword head_f_l__
call l_lib_init_error_window
jmp cycle0n
align 4
end_steep:
mov adr_load_lib,eax ;save adr lib in memory
import_boxlib my_import, err_message_import__, head_f_i__ ;import
import_boxlib my_import
test eax,eax
jz next
or status_lib,0x2 ; status of code - enable error - import error
next:
jz cycle0n
or status_lib,2 ; status of code - enable error - import error
push eax
push dword err_message_import__
push dword head_f_i__
call l_lib_init_error_window
cycle0n:
pop ecx
add ebp,ll_struc_size
dec ecx
jnz lp
jnz cycle0
;-----------------------------------------------
;¢ë¢®¤ á®®¡é¥­¨ï ®¡ ®è¨¡ª¥ ¯à¨ § £à㧪¥
mov ebp,_start
mov ecx,((_end-_start)/ll_struc_size)
mov ecx,(_end-_start)/ll_struc_size
align 4
lp2:
cycle1:
mov eax,status_lib
test eax,eax
jz @f
jz cycle1n
notify_window_run [arrea_xx] ; ᮧ¤ ¥¬ ®ª­® @notify
or eax,-1
jmp exit_lp2
@@:
mov eax,-1
jmp cycle1e
align 4
cycle1n:
add ebp,ll_struc_size
dec ecx
jnz lp2
exit_lp2:
jnz cycle1
cycle1e:
}
@ -468,41 +512,6 @@ pushad ;save all registers
popad ;restore all registers
}
; £®â®¢¨¬ ⥪áâ ¤«ï ¯®ª §  ç¥à¥§ @notify:
; 1) ¢ë¤¥«ï¥¬ ¯ ¬ïâì ¢ [arrea_xx]
; 2) ª®¯¨à㥬 err_message ¨ head ¢ [arrea_xx]
macro show_error_window err_message, head
{
local lp0
local lp1
pushad
mcall 68,11
mcall 68,12,4096
push eax
pop dword[arrea_xx]
mov edi,eax
mov esi,head
cld
align 4
lp0:
movsb
cmp byte[esi],0
jne lp0
mov word[edi],0xa0d
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
{
@ -516,10 +525,12 @@ pop ebx eax
}
;¢å®¤­ë¥ ¯ à ¬¥âàë:
;input:
; eax -  ¤à¥á ¡¨¡«¨®â¥ª¨ ¢ ¯ ¬ïâ¨
; myimport - ¨¬¯®àâ¨àã¥¬ë¥ ä㭪樨
macro import_boxlib myimport, err_message_import__, head_f_i__
;output:
; eax - ¥á«¨ 㤠筮 â® 0 ¨«¨ 㪠§ â¥«ì ­  ¨¬ï ä㭪樨 ª®â®àãî ­¥ 㤠«®áì § £à㧨âì
macro import_boxlib myimport
{
local import_loop
local import_find
@ -528,7 +539,6 @@ local import_find_next
local import_found
local import_done
local exit
local e.exit
local import_not_found
; initialize import
@ -540,13 +550,13 @@ import_loop:
jz import_done ;¥á«¨ 㪠§ â¥«ì ­  ¨¬ï ä㭪樨 = 0 (¢ ¯®«ì§®¢ â¥«ì᪮© ¯à®£à ¬¬¥)
push edx ;á®å࠭塞 ­ ç «® ¡¨¡«¨®â¥ç­ëå 㪠§ â¥«¥© ­  ä㭪樨
import_find:
mov ebx, [ds:edx]
mov ebx, [edx]
test ebx, ebx
jz import_not_found ;¥á«¨ 㪠§ â¥«ì ­  ¨¬ï ä㭪樨 = 0 (¢ ¡¨¡«¨®â¥ª¥)
push eax ;eax - 㪠§ â¥«ì ­  ¨¬ï íªá¯®àâ¨à㥬®© ä㭪樨 (¢ ¯®«ì§®¢ â¥«ì᪮© ¯à®£à ¬¬¥)
lp:
mov cl, [ds:eax]
cmp cl, [ds:ebx] ;áà ¢­¨¢ ¥¬ ¨¬¥­  ä㭪権 ¢ ¡¨¡«¨®â¥ª¥ ¨ ¢ ¯®«ì§®¢ â¥«ì᪮© ¯à®£à ¬¬¥
mov cl, [eax]
cmp cl, [ebx] ;áà ¢­¨¢ ¥¬ ¨¬¥­  ä㭪権 ¢ ¡¨¡«¨®â¥ª¥ ¨ ¢ ¯®«ì§®¢ â¥«ì᪮© ¯à®£à ¬¬¥
jnz import_find_next ;¥á«¨ ­ §¢ ­¨ï ­¥ ᮢ¯ «¨
test cl, cl
jz import_found ;¥á«¨ ­ §¢ ­¨ï ᮢ¯ «¨, ¨ 㦥 ª®­¥æ áâப¨ (cl=0)
@ -559,7 +569,7 @@ import_find_next:
jmp import_find
import_found:
pop ebx ;¢®áâ ­ ¢«¨¢ ¥¬ 㪠§ â¥«ì ­  ¨¬ï ä㭪樨 (ª®â®àë© ¡ë« ¢ eax) ¨ ®á¢®¡®¦¤ ¥¬ á⥪
mov eax, [ds:edx+4] ;eax = 㪠§ â¥«ì ­  äã­ªæ¨î (¢ ¡¨¡«¨®â¥ª¥)
mov eax, [edx+4] ;eax = 㪠§ â¥«ì ­  äã­ªæ¨î (¢ ¡¨¡«¨®â¥ª¥)
mov [esi-4], eax ;ª®¯¨à㥬 㪠§ â¥«ì (­  äã­ªæ¨î) ¢ ¯à®£à ¬¬ã, -4 áâ ¢¨¬ ¯®â®¬ã çâ® esi ¡ë«® ᤢ¨­ãâ® ª®¬ ­¤®© lodsd
pop edx ;ãáâ ­ ¢«¨¢ ¥¬ edx ­  ­ ç «® ¡¨¡«¨®â¥ç­ëå ä㭪権
;--- ¯à®¢¥à塞 ᮢ¯ ¤ ¥â «¨ ¨¬ï íªá¯®àâ¨à®¢ ­­®© ä㭪樨 á 'lib_init'
@ -585,13 +595,13 @@ end if
jmp import_loop
import_not_found:
add esp,4
show_error_window err_message_import__, head_f_i__ ;show error message /create window
jmp e.exit
jmp exit
import_done:
xor eax,eax ;=0 ¢á¥ § £à㧨«®áì 㤠筮
e.exit:
;---------------------------------------------------------------------
exit:
}
;---------------------------------------------------------------------
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
{
@ -607,11 +617,11 @@ struc l_libs library_name__, cur_dir_path__, library_path__, system_path__, err_
.err_message_import__ dd err_message_import__
.head_f_i__ dd head_f_i__
if point_dir_name eq
.point_dir_name__ dd 0x0
.point_dir_name__ dd 0
else
.point_dir_name__ dd point_dir_name ; ¨¬ï ¢«®¦¥­­®© ¤¨à४â®à¨¨ ¢ ªâ®à®© åà ­ïâìáï ¯®¤£à㦠¥¬ë¥ ¬®¤ã«¨.
end if
.adr_load_lib dd 0x0
.status_lib dd 0x0 ;status of load library
.adr_load_lib dd 0
.status_lib dd 0 ;status of load library
;
}