;--- другие макросы --- include '..\..\develop\examples\editbox\trunk\editbox.inc' include 'txtbut.inc' ;include 'gp.inc' include 'label.inc' ;include '..\..\develop\examples\checkbox\trunk\checkbox.inc' include 'check.inc' include 'file_sys.inc' include 'textwork.inc' ;include 'ini.inc' __CPU_type equ p5 SYSENTER_VAR equ 0 macro movr reg,val { if val < 65536 push val pop reg else mov reg,val end if } macro mcall a,b,c,d,e,f { ; mike.dld, updated by Ghost for Fast System Calls local ..ret_point __mov eax,a __mov ebx,b __mov ecx,c __mov edx,d __mov esi,e __mov edi,f if __CPU_type eq p5 int 0x40 else if __CPU_type eq p6 push ebp mov ebp, esp push ..ret_point ; it may be 2 or 5 byte sysenter ..ret_point: pop edx pop ecx else if __CPU_type eq k6 push ecx syscall pop ecx else display 'ERROR : unknown CPU type' int 0x40 end if end if end if } macro __mov reg,a,b { ; mike.dld if (~a eq)&(~b eq) mpack reg,a,b else if (~a eq)&(b eq) mov reg,a end if } ;--- заголовок --- macro meos_header par_buf,cur_dir_buf { use32 org 0x0 db 'MENUET01' dd 0x01 dd __app_start dd __app_end dd __app_end dd __app_end if eq <> dd 0x0 else dd par_buf end if if eq <> dd 0x0 else dd cur_dir_buf end if } ;--- определить точку входа --- macro app_start { __app_start: } ;--- определить конец приложения и размер стека --- macro app_end stack_size { if eq <> rb 1024 else rb stack_size end if __app_end: } ;--- завершить текущий поток --- macro app_close { xor eax,eax dec eax int 0x40 } ;--- получить код нажатой клавиши --- macro get_key { ;mov eax,2 push 2 pop eax int 0x40 } ;--- получить код нажатой кнопки --- macro get_pressed_button { ;mov eax,17 push 17 pop eax int 0x40 } ;--- сообщить системе о начале перерисовки окна --- macro start_draw_window { ;mov eax,12 push 12 pop eax xor ebx,ebx inc ebx int 0x40 } ;--- сообщить системе о завершении перерисовки окна --- macro stop_draw_window { ;mov eax,12 push 12 pop eax ;mov ebx,2 push 2 pop ebx int 0x40 } ;--- установить маску ожидаемых событий --- macro set_events_mask mask { ;mov eax,40 push 40 pop eax ;mov ebx,mask push mask pop ebx int 0x40 } ;--- получить информацию о процессе --- macro get_procinfo proc_inf_buf,slot_num { ;mov eax,9 push 9 pop eax ;mov ebx,proc_inf_buf push proc_inf_buf pop ebx if eq <> xor ecx,ecx dec ecx else ;mov ecx,slot_num push slot_num pop ecx end if int 0x40 } macro get_sys_colors col_buf { ;mov eax,48 push 48 pop eax ;mov ebx,3 push 3 pop ebx ;mov ecx,col_buf push col_buf pop ecx ;mov edx,40 push 40 pop edx int 0x40 } macro get_grab_area { movr eax,48 movr ebx,7 int 0x40 } macro get_skin_height { movr eax,48 movr ebx,4 int 0x40 } macro min_window { movr eax,18 movr ebx,10 int 0x40 } macro activ_window slot_n { movr eax,18 movr ebx,3 if eq <> else movr ecx,slot_n end if int 0x40 } macro get_active_window { movr eax,18 movr ebx,7 int 0x40 } macro delay time { movr eax,5 if