;; h2d2b v0.4 use editbox by IgorA ;; ;; 30.08.2011 ;; ;; h2d2b v0.3 system colors by Leency ;; ;; 21.08.2011 ;; ;; hex2dec2bin 0.2 by Alexei Ershov ;; ;; 16.11.2006 ;; use32 org 0x0 db 'MENUET01' dd 0x01,start,i_end,e_end,e_end,0,sys_path include '../../../proc32.inc' include '../../../macros.inc' ; ¬ ªà®áë ®¡«¥£ç îâ ¦¨§ì áᥬ¡«¥à騪®¢! include '../../../develop/libraries/box_lib/load_lib.mac' include '../../../develop/libraries/box_lib/trunk/box_lib.mac' include 'lang.inc' @use_library start: load_libraries l_libs_start,l_libs_end ;¯à®¢¥àª ᪮«ìª® ã¤ ç® § £ã§¨« áì è ¡¨¡«¨®â¥ª mov ebp,lib_0 cmp dword [ebp+ll_struc_size-4],0 jz @f mcall -1 ;exit not correct @@: mcall 40,0x27 mcall 48, 3, sys_colors, 40 edit_boxes_set_sys_color edit1,editboxes_end,sys_colors red: call draw_window still: mcall 10 ; äãªæ¨ï 10 - ¦¤ âì ᮡëâ¨ï cmp eax,1 ; ¯¥à¥à¨á®¢ âì ®ª® ? je red ; ¥á«¨ ¤ - ¬¥âªã red cmp eax,2 ; ¦ â ª« ¢¨è ? je key ; ¥á«¨ ¤ - key cmp eax,3 ; ¦ â ª®¯ª ? je button ; ¥á«¨ ¤ - button cmp eax,6 je mouse jmp still ; ¥á«¨ ¤à㣮¥ ᮡë⨥ - ¢ ç «® 横« ;--------------------------------------------------------------------- key: ; ¦ â ª« ¢¨è ª« ¢¨ âãॠmcall 2 cmp ah,13 ;®¡à ¡®âª ª®¯ª¨ Enter je @f stdcall [edit_box_key], dword edit1 jmp still @@: mov edi,string1 add edi,[edit1.size] ;ãáâ ¢«¨¢ ¥¬ ¢ edi ª®¥æ áâப¨ jmp read_str jmp still ; ¢¥àãâìáï ª ç «ã 横« read_str: dec edi mov esi, string1 call GetBase xor ecx, ecx inc ecx ; ecx = 1 make_bin: xor eax, eax next_digit: xor edx, edx cmp edi, esi jb .done mov dl, [edi] cmp dl, '-' jne @f neg eax jmp .done @@: cmp dl, 'F' jbe @f and dl, 11011111b @@: sub dl, '0' cmp dl, 9 jbe @f sub dl, 'A'-'9'-1 @@: cmp dl, bl jb @f ; ‡¤¥áì ®¡à ¡®â âì ®è¨¡ªã jmp .done @@: push ecx xchg eax, ecx mul edx ; edx:eax = eax * edx add ecx, eax pop eax mul ebx xchg eax, ecx dec edi jmp next_digit .done: mov [num], eax ; á®åà 塞 ¢¢¥¤¥®¥ ç¨á«® jmp red ;--------------------------------------------------------------------- button: mcall 17 ; 17 - ¯®«ãç¨âì ¨¤¥â¨ä¨ª â®à ¦ ⮩ ª®¯ª¨ cmp ah, 1 ; ¥á«¨ … ¦ â ª®¯ª á ®¬¥à®¬ 1, jne @f mcall -1 @@: cmp ah, 2 jne @f shl [num], 1 jmp red @@: cmp ah, 3 jne @f shr [num], 1 jmp red @@: cmp ah, 4 jne @f sar [num], 1 jmp red @@: cmp ah, 5 jne @f mov edi,string1 add edi,[edit1.size] ;ãáâ ¢«¨¢ ¥¬ ¢ edi ª®¥æ áâப¨ jmp read_str ;jmp red @@: jmp still mouse: stdcall [edit_box_mouse], edit1 jmp still ;------------------------------------------------ draw_window: ;------------------------------------------------ mcall 48, 3, sys_colors, 40 mcall 12, 1 mov edx, 0x14000000 or edx, [sys_colors.work] ;mov esi, 0x80000000 ;or esi, [sys_colors.grab_text] mcall 0, 200*65536+300, 200*65536+175, ,,title mcall 8, 15 *65536+ 38, 90*65536+ 15, 2, [sys_colors.work_button] ; ª®¯ª shl mcall , ,110*65536+ 15, , ; ª®¯ª sal mcall , (300-53)*65536+ 38, 90*65536+ 15, 3, ; ª®¯ª shr mcall , ,110*65536+ 15, 4, ; ª®¯ª sar mcall , ,145*65536+ 15, 5, ; ª®¯ª Ok mov ecx, 0x80000000 or ecx, [sys_colors.work_text] mcall 4, 15*65536+30, , binstr, mcall , 15*65536+44, , decstr, mcall , 15*65536+58, ,sdecstr, mcall , 15*65536+72, , hexstr, mcall , 15*65536+150, , numstr, mov ecx, 0x80000000 or ecx, [sys_colors.work_button_text] mcall , 26*65536+94, , shlstr,3 mcall , (300-42)*65536+94, , shrstr, mcall , 26*65536+114, , salstr, mcall , (300-42)*65536+114, , sarstr, mcall , (300-42-3)*65536+149, , Okstr, mov ecx, [num] mcall 47, 8*65536+256,,240*65536+72,[sys_colors.work_text] ; 16- ï mcall , 10*65536, ,228*65536+44, ; 10- ï mcall , 8*65536+512,,240*65536+30, ; 2- ï ror ecx, 8 mcall , ,,(240-56)*65536+30, ror ecx, 8 mcall , ,,(240-56*2)*65536+30, ror ecx, 8 mcall , ,,(240-56*3)*65536+30, ror ecx, 8 mov [minus], '+' jnc @f mov [minus], '-' neg ecx @@: mcall , 10*65536,,228*65536+58, ; 10- ï á® § ª®¬ mcall 4, 222*65536+58, 0, minus, 1 mcall 38, 15*65536+300-15, 137*65536+137, [sys_colors.work_graph] stdcall [edit_box_draw], edit1 mcall 12, 2 ; äãªæ¨ï 12: á®®¡é¨âì Ž‘ ®¡ ®âà¨á®¢ª¥ ®ª ret ;------------------------------------------------- GetBase: ;------------------------------------------------- mov ebx, 10 cmp edi, esi jb .done mov al, [edi] cmp al, 'H' jbe @f and al, 11011111b @@: cmp al, 'H' jne @f mov ebx, 16 dec edi jmp .done @@: cmp al, 'D' jne @f mov ebx, 10 dec edi jmp .done @@: cmp al, 'B' jne .done mov ebx, 2 dec edi .done: ret ;------------------------------------------------- string1: db 34 dup(' ') string1_end: num dd 0 title db 'hex2dec2bin 0.4',0 minus db '-',0 hexstr db 'hex:',0 binstr db 'bin:',0 decstr db 'dec:',0 sdecstr db 'signed dec:',0 shlstr db 'shl',0 salstr db 'sal',0 shrstr db 'shr',0 sarstr db 'sar',0 if lang eq ru numstr db '—¨á«®:',0 Okstr db '‚¢®¤',0 head_f_i: head_f_l db '‘¨á⥬ ï ®è¨¡ª ',0 else numstr db 'Number:',0 Okstr db 'Ok',0 head_f_i: head_f_l db 'System error',0 end if mouse_dd dd 0 edit1 edit_box 182, 59, 146, 0xffffff, 0xff, 0x80ff, 0, 0x8000, (string1_end-string1), string1, mouse_dd, 0 editboxes_end: system_dir_0 db '/sys/lib/' lib_name_0 db 'box_lib.obj',0 err_msg_found_lib_0 db '¥ ©¤¥ ¡¨¡«¨®â¥ª ',39,'box_lib.obj',39,0 err_msg_import_0 db 'Žè¨¡ª ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'box_lib',39,0 l_libs_start: lib_0 l_libs lib_name_0, sys_path, library_path, system_dir_0,\ err_msg_found_lib_0,head_f_l,import_box_lib,err_msg_import_0,head_f_i l_libs_end: align 4 import_box_lib: ;dd sz_init1 edit_box_draw dd sz_edit_box_draw edit_box_key dd sz_edit_box_key edit_box_mouse dd sz_edit_box_mouse ;edit_box_set_text dd sz_edit_box_set_text dd 0,0 ;sz_init1 db 'lib_init',0 sz_edit_box_draw db 'edit_box',0 sz_edit_box_key db 'edit_box_key',0 sz_edit_box_mouse db 'edit_box_mouse',0 ;sz_edit_box_set_text db 'edit_box_set_text',0 i_end: sys_colors system_colors rb 0x400 ;stack sys_path rb 4096 library_path rb 4096 e_end: ; ¬¥âª ª®æ ¯à®£à ¬¬ë