diff --git a/programs/develop/info3ds/info3ds_u.asm b/programs/develop/info3ds/info3ds_u.asm index 38cb91e4eb..52f2e6c182 100644 --- a/programs/develop/info3ds/info3ds_u.asm +++ b/programs/develop/info3ds/info3ds_u.asm @@ -10,6 +10,7 @@ include '../../proc32.inc' include '../../KOSfuncs.inc' include '../../develop/libraries/libs-dev/libimg/libimg.inc' include '../../load_img.inc' +include '../../load_lib.mac' include '../../develop/libraries/box_lib/trunk/box_lib.mac' include '../../develop/libraries/TinyGL/asm_fork/opengl_const.inc' include 'lang.inc' @@ -154,53 +155,53 @@ start: ;работа с файлом настроек copy_path ini_name,sys_path,file_name,0 mov dword[def_dr_mode],0 - stdcall dword[ini_get_int],file_name,ini_sec_w3d,key_dv,1 + stdcall [ini_get_int],file_name,ini_sec_w3d,key_dv,1 or eax,eax jz @f or dword[def_dr_mode], 1 shl bit_vertexes @@: - stdcall dword[ini_get_int],file_name,ini_sec_w3d,key_df,1 + stdcall [ini_get_int],file_name,ini_sec_w3d,key_df,1 or eax,eax jz @f or dword[def_dr_mode], 1 shl bit_faces @@: - stdcall dword[ini_get_int],file_name,ini_sec_w3d,key_dff,1 + stdcall [ini_get_int],file_name,ini_sec_w3d,key_dff,1 or eax,eax jz @f or dword[def_dr_mode], 1 shl bit_faces_fill @@: - stdcall dword[ini_get_int],file_name,ini_sec_w3d,key_dfm,1 + stdcall [ini_get_int],file_name,ini_sec_w3d,key_dfm,1 or eax,eax jz @f or dword[def_dr_mode], 1 shl bit_faces_mat @@: - stdcall dword[ini_get_int],file_name,ini_sec_w3d,key_dl,1 + stdcall [ini_get_int],file_name,ini_sec_w3d,key_dl,1 or eax,eax jz @f or dword[def_dr_mode], 1 shl bit_light @@: - stdcall dword[ini_get_int],file_name,ini_sec_w3d,key_ds,1 + stdcall [ini_get_int],file_name,ini_sec_w3d,key_ds,1 or eax,eax jz @f or dword[def_dr_mode], 1 shl bit_smooth @@: - stdcall dword[ini_get_color],file_name,ini_sec_w3d,key_ox,0x0000ff + stdcall [ini_get_color],file_name,ini_sec_w3d,key_ox,0x0000ff mov [color_ox],eax - stdcall dword[ini_get_color],file_name,ini_sec_w3d,key_oy,0xff0000 + stdcall [ini_get_color],file_name,ini_sec_w3d,key_oy,0xff0000 mov [color_oy],eax - stdcall dword[ini_get_color],file_name,ini_sec_w3d,key_oz,0x00ff00 + stdcall [ini_get_color],file_name,ini_sec_w3d,key_oz,0x00ff00 mov [color_oz],eax - stdcall dword[ini_get_color],file_name,ini_sec_w3d,key_bk,0x000000 + stdcall [ini_get_color],file_name,ini_sec_w3d,key_bk,0x000000 mov [color_bk],eax shr eax,8 mov [color_bk+4],eax shr eax,8 mov [color_bk+8],eax - stdcall dword[ini_get_color],file_name,ini_sec_w3d,key_vert,0xffffff + stdcall [ini_get_color],file_name,ini_sec_w3d,key_vert,0xffffff mov [color_vert],eax - stdcall dword[ini_get_color],file_name,ini_sec_w3d,key_face,0x808080 + stdcall [ini_get_color],file_name,ini_sec_w3d,key_face,0x808080 mov [color_face],eax - stdcall dword[ini_get_color],file_name,ini_sec_w3d,key_select,0xffff00 + stdcall [ini_get_color],file_name,ini_sec_w3d,key_select,0xffff00 mov [color_select],eax finit fild dword[color_bk+8] @@ -1144,58 +1145,15 @@ lib_name_5 db 'tinygl.obj',0 system_dir_6 db '/sys/lib/' lib_name_6 db 'libini.obj',0 -if lang eq ru - head_f_i: - head_f_l db '"Системная ошибка',0 - err_msg_found_lib_0 db 'Не найдена библиотека ',39,'proc_lib.obj',39,'" -tE',0 - err_msg_import_0 db 'Ошибка при импорте библиотеки ',39,'proc_lib.obj',39,'" -tW',0 - err_msg_found_lib_1 db 'Не найдена библиотека ',39,'libimg.obj',39,'" -tE',0 - err_msg_import_1 db 'Ошибка при импорте библиотеки ',39,'libimg.obj',39,'" -tW',0 - err_msg_found_lib_2 db 'Не найдена библиотека ',39,'box_lib.obj',39,'" -tE',0 - err_msg_import_2 db 'Ошибка при импорте библиотеки ',39,'box_lib',39,'" -tW',0 - err_msg_found_lib_3 db 'Не найдена библиотека ',39,'buf2d.obj',39,'" -tE',0 - err_msg_import_3 db 'Ошибка при импорте библиотеки ',39,'buf2d',39,'" -tW',0 - err_msg_found_lib_4 db 'Не найдена библиотека ',39,'kmenu.obj',39,'" -tE',0 - err_msg_import_4 db 'Ошибка при импорте библиотеки ',39,'kmenu',39,'" -tW',0 - err_msg_found_lib_5 db 'Не найдена библиотека ',39,'tinygl.obj',39,'" -tE',0 - err_msg_import_5 db 'Ошибка при импорте библиотеки ',39,'tinygl',39,'" -tW',0 - err_msg_found_lib_6 db 'Не найдена библиотека ',39,'libini.obj',39,'" -tE',0 - err_msg_import_6 db 'Ошибка при импорте библиотеки ',39,'libini',39,'" -tW',0 -else - head_f_i: - head_f_l db '"System error',0 - err_msg_found_lib_0 db 'Sorry I cannot found library ',39,'proc_lib.obj',39,'" -tE',0 - err_msg_import_0 db 'Error on load import library ',39,'proc_lib.obj',39,'" -tW',0 - err_msg_found_lib_1 db 'Sorry I cannot found library ',39,'libimg.obj',39,'" -tE',0 - err_msg_import_1 db 'Error on load import library ',39,'libimg.obj',39,'" -tW',0 - err_msg_found_lib_2 db 'Sorry I cannot found library ',39,'box_lib.obj',39,'" -tE',0 - err_msg_import_2 db 'Error on load import library ',39,'box_lib.obj',39,'" -tW',0 - err_msg_found_lib_3 db 'Sorry I cannot found library ',39,'buf2d.obj',39,'" -tE',0 - err_msg_import_3 db 'Error on load import library ',39,'buf2d.obj',39,'" -tW',0 - err_msg_found_lib_4 db 'Sorry I cannot found library ',39,'kmenu.obj',39,'" -tE',0 - err_msg_import_4 db 'Error on load import library ',39,'kmenu.obj',39,'" -tW',0 - err_msg_found_lib_5 db 'Sorry I cannot found library ',39,'tinygl.obj',39,'" -tE',0 - err_msg_import_5 db 'Error on load import library ',39,'tinygl',39,'" -tW',0 - err_msg_found_lib_6 db 'Sorry I cannot found library ',39,'libini.obj',39,'" -tE',0 - err_msg_import_6 db 'Error on load import library ',39,'libini',39,'" -tW',0 -end if - align 4 l_libs_start: - lib_0 l_libs lib_name_0, sys_path, file_name, system_dir_0,\ - err_msg_found_lib_0, head_f_l, proclib_import,err_msg_import_0,head_f_i - lib_1 l_libs lib_name_1, sys_path, file_name, system_dir_1,\ - err_msg_found_lib_1, head_f_l, import_libimg, err_msg_import_1,head_f_i - lib_2 l_libs lib_name_2, sys_path, file_name, system_dir_2,\ - err_msg_found_lib_2, head_f_l, import_box_lib,err_msg_import_2,head_f_i - lib_3 l_libs lib_name_3, sys_path, file_name, system_dir_3,\ - err_msg_found_lib_3, head_f_l, import_buf2d, err_msg_import_3,head_f_i - lib_4 l_libs lib_name_4, sys_path, file_name, system_dir_4,\ - err_msg_found_lib_4, head_f_l, import_libkmenu,err_msg_import_4,head_f_i - lib_5 l_libs lib_name_5, sys_path, file_name, system_dir_5,\ - err_msg_found_lib_5, head_f_l, import_lib_tinygl,err_msg_import_5,head_f_i - lib_6 l_libs lib_name_6, sys_path, file_name, system_dir_6,\ - err_msg_found_lib_6, head_f_l, import_libini, err_msg_import_6,head_f_i + lib_0 l_libs lib_name_0, file_name, system_dir_0, import_proclib + lib_1 l_libs lib_name_1, file_name, system_dir_1, import_libimg + lib_2 l_libs lib_name_2, file_name, system_dir_2, import_box_lib + lib_3 l_libs lib_name_3, file_name, system_dir_3, import_buf2d + lib_4 l_libs lib_name_4, file_name, system_dir_4, import_libkmenu + lib_5 l_libs lib_name_5, file_name, system_dir_5, import_lib_tinygl + lib_6 l_libs lib_name_6, file_name, system_dir_6, import_libini l_libs_end: align 4 @@ -1246,7 +1204,7 @@ import_libimg: aimg_draw db 'img_draw',0 align 4 -proclib_import: +import_proclib: OpenDialog_Init dd aOpenDialog_Init OpenDialog_Start dd aOpenDialog_Start OpenDialog_Set_file_name dd aOpenDialog_Set_file_name diff --git a/programs/develop/libraries/box_lib/trunk/t_edit.asm b/programs/develop/libraries/box_lib/trunk/t_edit.asm index 8fd16f8039..79b3c15f61 100644 --- a/programs/develop/libraries/box_lib/trunk/t_edit.asm +++ b/programs/develop/libraries/box_lib/trunk/t_edit.asm @@ -820,6 +820,12 @@ proc ted_on_open_file push edx ;source push esi + or ebx,ebx + jnz @f + ;если файл пустой + stdcall ted_clear,edi,1 ;чистим всю память + jmp .end_opn + @@: stdcall ted_clear,edi,0 ;чистим не всю память, потому что ниже будем ее заполнять новыми даными ;когда символ завершения строки только 10 (без 13) @@ -842,9 +848,8 @@ proc ted_on_open_file .no_10: ;переводим открытый файл внутрь элемента t_edit - mov eax,ebx mov ecx,ebx - add eax,2 + lea eax,[ebx+2] ConvertIndexToPointer eax mov edx,ted_tex add edx,ebx @@ -860,8 +865,8 @@ proc ted_on_open_file mov dword[eax+symbol.tc],-1 mov dword[eax+symbol.td],0 - cmp ecx,0 - je @f + or ecx,ecx + jz @f dec ecx dec edx sub eax,sizeof.symbol @@ -890,11 +895,11 @@ proc ted_on_open_file @@: ;clear memory, need if before was open big file add edx,sizeof.symbol cmp edx,ted_tex_end - jge @f + jge .end_opn mov dword[edx+symbol.tc],0 mov dword[edx+symbol.td],0 jmp @b - @@: + .end_opn: call ted_get_num_lines cmp eax,TED_LINES_IN_NEW_FILE @@ -2446,12 +2451,11 @@ endp ; edi = pointer to tedit struct ; end_pos = position end 'symbol' struct align 16 -proc ted_find_help_id, end_pos:dword +proc ted_find_help_id uses ebx ecx, end_pos:dword ; ecx = word_n ; ebx = l_pos mov ted_help_id,-1 - push ebx ecx xor ebx,ebx mov bl,[edx] shl bx,2 ;ebx*=4 @@ -2518,7 +2522,6 @@ proc ted_find_help_id, end_pos:dword ;return word_n; .if_0e: - pop ecx ebx ret endp @@ -2588,8 +2591,7 @@ align 4 or eax,eax jz @f cmp eax,6 - je @f - jmp .ret_f + jne .ret_f @@: cmp ebx,-1 je .ret_f @@ -3427,8 +3429,7 @@ align 4 cmp byte[edx],9 je @f cmp byte[edx],13 - je @f - jmp .end_f + jne .end_f @@: lea edx,[ted_symbol_space] .end_f: @@ -3472,8 +3473,8 @@ proc ted_draw, edit:dword stdcall ted_clear_line_before_draw, edi,ebx,1,esi call ted_get_first_visible_pos - cmp edx,0 - je .no_draw_text + or edx,edx + jz .no_draw_text mov esi,1 ;длинна выводимого текста по 1-му символу @@: call ted_iterat_next diff --git a/programs/develop/libraries/exif/examples/viev_exif.asm b/programs/develop/libraries/exif/examples/viev_exif.asm index cb4f3d4ff3..e4e8b74e2d 100644 --- a/programs/develop/libraries/exif/examples/viev_exif.asm +++ b/programs/develop/libraries/exif/examples/viev_exif.asm @@ -1,5 +1,5 @@ use32 - org 0x0 + org 0 db 'MENUET01' ;идентиф. исполняемого файла всегда 8 байт dd 1, start, i_end, mem, stacktop, 0, sys_path @@ -7,9 +7,10 @@ include '../../../../macros.inc' include '../../../../proc32.inc' include '../../../../KOSfuncs.inc' include '../../../../load_img.inc' +include '../../../../load_lib.mac' include '../../../../develop/libraries/box_lib/trunk/box_lib.mac' -@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load +@use_library mem.Alloc,mem.Free,mem.ReAlloc,dll.Load caption db 'Просмотр информации Exif 11.03.16',0 ;подпись окна run_file_70 FileInfoBlock @@ -555,38 +556,20 @@ db 0 -head_f_i: -head_f_l db 'Системная ошибка',0 - system_dir_0 db '/sys/lib/' lib_name_0 db 'proc_lib.obj',0 -err_message_found_lib_0 db 'Не найдена библиотека ',39,'proc_lib.obj',39,0 -err_message_import_0 db 'Ошибка при импорте библиотеки ',39,'proc_lib.obj',39,0 - system_dir_1 db '/sys/lib/' lib_name_1 db 'libimg.obj',0 -err_message_found_lib_1 db 'Не найдена библиотека ',39,'libimg.obj',39,0 -err_message_import_1 db 'Ошибка при импорте библиотеки ',39,'libimg.obj',39,0 - system_dir_2 db '/sys/lib/' lib_name_2 db 'buf2d.obj',0 -err_msg_found_lib_2 db 'Не найдена библиотека ',39,'buf2d.obj',39,0 -err_msg_import_2 db 'Ошибка при импорте библиотеки ',39,'buf2d',39,0 - system_dir_3 db '/sys/lib/' lib_name_3 db 'exif.obj',0 -err_msg_found_lib_3 db 'Не найдена библиотека ',39,'exif.obj',39,0 -err_msg_import_3 db 'Ошибка при импорте библиотеки ',39,'exif',39,0 l_libs_start: - lib_0 l_libs lib_name_0, sys_path, file_name, system_dir_0,\ - err_message_found_lib_0, head_f_l, proclib_import,err_message_import_0, head_f_i - lib_1 l_libs lib_name_1, sys_path, file_name, system_dir_1,\ - err_message_found_lib_1, head_f_l, import_libimg, err_message_import_1, head_f_i - lib_2 l_libs lib_name_2, sys_path, file_name, system_dir_2,\ - err_msg_found_lib_2,head_f_l,import_buf2d,err_msg_import_2,head_f_i - lib_3 l_libs lib_name_3, sys_path, file_name, system_dir_3,\ - err_msg_found_lib_3,head_f_l,import_exif,err_msg_import_3,head_f_i + lib_0 l_libs lib_name_0, file_name, system_dir_0, import_proclib + lib_1 l_libs lib_name_1, file_name, system_dir_1, import_libimg + lib_2 l_libs lib_name_2, file_name, system_dir_2, import_buf2d + lib_3 l_libs lib_name_3, file_name, system_dir_3, import_exif l_libs_end: align 4 @@ -637,7 +620,7 @@ import_libimg: aimg_draw db 'img_draw',0 align 4 -proclib_import: ;описание экспортируемых функций +import_proclib: ;описание экспортируемых функций OpenDialog_Init dd aOpenDialog_Init OpenDialog_Start dd aOpenDialog_Start dd 0,0 diff --git a/programs/other/planet_v/planet_v.asm b/programs/other/planet_v/planet_v.asm index 0de605f08e..36e44d4124 100644 --- a/programs/other/planet_v/planet_v.asm +++ b/programs/other/planet_v/planet_v.asm @@ -1,7 +1,7 @@ ;Огромная благодарность Maxxxx32, Diamond, Heavyiron ;и другим программистам, а также Теплову Алексею use32 - org 0x0 + org 0 db 'MENUET01' ;идентиф. исполняемого файла всегда 8 байт dd 1,start,i_end,mem,stacktop,0,sys_path @@ -9,6 +9,7 @@ include '../../proc32.inc' include '../../macros.inc' include '../../KOSfuncs.inc' include '../../load_img.inc' +include '../../load_lib.mac' include '../../develop/libraries/box_lib/trunk/box_lib.mac' min_window_w equ 485 ;минимальная ширина окна @@ -18,7 +19,7 @@ otst_panel_left equ 265 include 'tile_fun.inc' include 'pl_import.inc' -@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc, dll.Load +@use_library mem.Alloc,mem.Free,mem.ReAlloc, dll.Load fn_metki db 'pl_metki.lst',0 ini_name db 'planet_v.ini',0 @@ -363,19 +364,6 @@ pushad popad ret - head_f_i: - head_f_l db 'Системная ошибка',0 - err_message_found_lib0 db 'Не найдена библиотека box_lib.obj',0 - err_message_import0 db 'Ошибка при импорте библиотеки box_lib.obj',0 - err_message_found_lib1 db 'Не найдена библиотека libimg.obj',0 - err_message_import1 db 'Ошибка при импорте библиотеки libimg.obj',0 - err_message_found_lib2 db 'Не найдена библиотека str.obj',0 - err_message_import2 db 'Ошибка при импорте библиотеки str.obj',0 - err_message_found_lib3 db 'Не найдена библиотека libini.obj',0 - err_message_import3 db 'Ошибка при импорте библиотеки libini.obj',0 - err_message_found_lib4 db 'Не найдена библиотека proc_lib.obj',0 - err_message_import4 db 'Ошибка при импорте библиотеки proc_lib.obj',0 - system_dir0 db '/sys/lib/' lib0_name db 'box_lib.obj',0 @@ -393,16 +381,11 @@ lib4_name db 'proc_lib.obj',0 ;library structures l_libs_start: - lib_0 l_libs lib0_name, sys_path, file_name, system_dir0,\ - err_message_found_lib0, head_f_l, boxlib_import, err_message_import0, head_f_i - lib_1 l_libs lib1_name, sys_path, file_name, system_dir1,\ - err_message_found_lib1, head_f_l, libimg_import, err_message_import1, head_f_i - lib_2 l_libs lib2_name, sys_path, file_name, system_dir2,\ - err_message_found_lib2, head_f_l, strlib_import, err_message_import2, head_f_i - lib_3 l_libs lib3_name, sys_path, file_name, system_dir3,\ - err_message_found_lib3, head_f_l, libini_import, err_message_import3, head_f_i - lib_4 l_libs lib4_name, sys_path, file_name, system_dir4,\ - err_message_found_lib4, head_f_l, proclib_import, err_message_import4, head_f_i + lib_0 l_libs lib0_name, file_name, system_dir0, boxlib_import + lib_1 l_libs lib1_name, file_name, system_dir1, libimg_import + lib_2 l_libs lib2_name, file_name, system_dir2, strlib_import + lib_3 l_libs lib3_name, file_name, system_dir3, libini_import + lib_4 l_libs lib4_name, file_name, system_dir4, proclib_import load_lib_end: align 4 @@ -887,23 +870,23 @@ endp align 4 .str: - mov ecx,0x0a ;задается система счисления изменяются регистры ebx,eax,ecx,edx входные параметры eax - число - ;преревод числа в ASCII строку взодные данные ecx=система счисленя edi адрес куда записывать, будем строку, причем конец переменной - cmp eax,ecx ;сравнить если в eax меньше чем в ecx то перейти на @@-1 т.е. на pop eax + mov ecx,10 + cmp eax,ecx jb @f - xor edx,edx ;очистить edx - div ecx ;разделить - остаток в edx - push edx ;положить в стек - call .str ;перейти на саму себя т.е. вызвать саму себя и так до того момента пока в eax не станет меньше чем в ecx + xor edx,edx + div ecx + push edx + ;dec edi ;смещение необходимое для записи с конца строки + call .str pop eax - @@: ;cmp al,10 ;проверить не меньше ли значение в al чем 10 (для системы счисленя 10 данная команда - лишная)) + @@: cmp edi,esi jge @f - or al,0x30 ;данная команда короче чем две выше - stosb ;записать элемент из регистра al в ячеку памяти es:edi + or al,0x30 + stosb mov byte[edi],0 ;в конец строки ставим 0, что-бы не вылазил мусор @@: - ret ;пока в стеке храниться кол-во вызовов то столько раз мы и будем вызываться + ret hed db 'Planet viewer 16.02.16',0 ;подпись окна mouse_dd dd 0 ;нужно для Shift-а в editbox