draw_buttons_panel: mov ecx,[skin_high] add ecx,19 shl ecx,16 mov cx,18 mov ebx,[window_width] sub ebx,9 add ebx,5 shl 16 mcall 13,,,0xffffff mov edx,15 shl 16+20 add edx,[skin_high] pusha call .calculate_button mov edx,150 int 0x40 popa mcall 7,[buttons_img_start],<16,16> add edx,26 shl 16 add ebx,16*16*3 pusha call .calculate_button mov edx,151 int 0x40 popa int 0x40 add edx,26 shl 16 add ebx,16*16*3 pusha call .calculate_button mov edx,152 int 0x40 popa int 0x40 add edx,26 shl 16 add ebx,16*16*3 pusha call .calculate_button mov edx,153 int 0x40 popa int 0x40 add edx,26 shl 16 add ebx,16*16*3 pusha call .calculate_button mov edx,154 int 0x40 popa int 0x40 add edx,26 shl 16 add ebx,16*16*3 pusha call .calculate_button mov edx,155 int 0x40 popa int 0x40 add edx,26 shl 16 add ebx,16*16*3 pusha call .calculate_button mov edx,156 int 0x40 popa int 0x40 add edx,26 shl 16 add ebx,16*16*3 pusha call .calculate_button mov edx,157 int 0x40 popa int 0x40 ret .calculate_button: mov esi,0xffffff mov ebx,edx mov bx,15 mov ecx,edx shl ecx,16 mov cx,bx mov eax,8 ret ;--------------------------------------------------------------------- draw_left_sort_button: mov bx,[left_panel_x.start_x] add bx,[left_panel_x.size_x] sub ebx,50+15 mov cx,[left_panel_y.start_y] call calclulate_sort_button_1 mov edx,145 .start: mov esi,0xffffff dec ebp cmp [left_sort_flag],ebp jne @f mov esi,0xccccff @@: call calclulate_sort_button_2 jnz .start ret ;--------------------------------------------------------------------- calclulate_sort_button_1: shl ebx,16 mov bx,50 sub cx,14 shl ecx,16 mov cx,12 mov eax,8 mov ebp,4 ret ;--------------------------------------------------------------------- calclulate_sort_button_2: inc ebp int 0x40 pusha push ebx mov eax,ebx inc eax shl eax,16 add ebx,eax cmp ebp,4 jne @f mov bx,15 jmp .continue @@: mov bx,1 .continue: mov edx,0xcccccc inc ecx mcall 13 pop ebx cmp ebp,1 jne @f mov eax,[temp_panel_end] shl eax,16 add eax,[temp_panel_end] shr eax,16 shr ebx,16 sub ebx,eax shl ebx,16 mov bx,ax rol ebx,16 mcall 13 mov [temp_panel_end],ebx @@: popa pusha shr ecx,16 mov bx,cx add ebx,3 shl 16+2 mov ecx,0x10000000 mov edx,ebp dec edx shl edx,2 add edx,sort_button_name mov eax,4 mov esi,eax int 0x40 popa dec edx sub ebx,38 shl 16 mov bx,36 dec ebp ret ;--------------------------------------------------------------------- draw_right_sort_button: mov bx,[right_panel_x.start_x] add bx,[right_panel_x.size_x] sub ebx,50+15 mov cx,[right_panel_y.start_y] call calclulate_sort_button_1 mov edx,149 .start: mov esi,0xffffff dec ebp cmp [right_sort_flag],ebp jne @f mov esi,0xccccff @@: call calclulate_sort_button_2 jnz .start ret ;--------------------------------------------------------------------- draw_left_select_disk_button: mov bx,[left_panel_x.start_x] mov cx,[left_panel_y.start_y] mov ebp,read_folder_name ;read_folder.name mov edx,0x40000000+140 .1: shl ebx,16 mov bx,60 sub cx,14 shl ecx,16 mov cx,13 mov esi,0xffffff mov eax,8 int 0x40 mov edx,0xffffff mov eax,13 int 0x40 pusha ; mov esi,read_folder.name+2 mov esi,ebp add esi,2 @@: inc esi cmp [esi],byte 0 je @f cmp [esi],byte '/' jne @r add esi,2 @@: sub esi,ebp ;read_folder.name add ebx,1 shl 16 shr ecx,16 mov bx,cx add ebx,3 mov edx,ebp mcall 4, ,0 ;,read_folder.name popa add ebx,50 shl 16 mov bx,10 mov edx,0x6060ff int 0x40 mov [temp_panel_end],ebx add ebx,1 shl 16 shr ecx,16 mov bx,cx add ebx,3 mcall 4, ,0x80ffffff,select_disk_char add ebx,1 shl 16 int 0x40 ret ;--------------------------------------------------------------------- draw_right_select_disk_button: mov bx,[right_panel_x.start_x] mov cx,[right_panel_y.start_y] mov ebp,read_folder_1_name ;read_folder_1.name mov edx,0x40000000+141 jmp draw_left_select_disk_button.1 ;--------------------------------------------------------------------- draw_device_button: mov edi,device_present mov edx,120 mov bx,[left_panel_x.start_x] mov cx,[left_panel_y.start_y] mov eax,[left_panel_x] mov [temp_panel_end],eax mov [temp_counter],0 call .draw ; inc edx mov edx,130 mov bx,[right_panel_x.start_x] mov cx,[right_panel_y.start_y] mov eax,[right_panel_x] mov [temp_panel_end],eax mov [temp_counter],1 .draw: shl ebx,16 mov bx,25 sub cx,30 shl ecx,16 mov cx,12 mov eax,8 mov esi,0xaa00 cmp [edi],byte 1 jne @f mov ebp,read_folder_device_name.rd call .draw_1 @@: inc edx cmp [edi+1],byte 1 jne @f mov ebp,read_folder_device_name.fd call .draw_1 @@: inc edx cmp [edi+2],byte 1 jne @f mov ebp,read_folder_device_name.hd0 call .draw_1 @@: inc edx cmp [edi+3],byte 1 jne @f mov ebp,read_folder_device_name.hd1 call .draw_1 @@: inc edx cmp [edi+4],byte 1 jne @f mov ebp,read_folder_device_name.hd2 call .draw_1 @@: inc edx cmp [edi+5],byte 1 jne @f mov ebp,read_folder_device_name.hd3 call .draw_1 @@: inc edx cmp [edi+6],byte 1 jne @f mov ebp,read_folder_device_name.cd0 call .draw_1 @@: inc edx cmp [edi+7],byte 1 jne @f mov ebp,read_folder_device_name.cd1 call .draw_1 @@: inc edx cmp [edi+8],byte 1 jne @f mov ebp,read_folder_device_name.cd2 call .draw_1 @@: inc edx cmp [edi+9],byte 1 jne @f mov ebp,read_folder_device_name.cd3 call .draw_1 @@: push ebx mov ebx,[temp_panel_end] mov ax,bx shr ebx,16 add eax,ebx pop ebx ror ebx,16 sub ax,bx rol ebx,16 mov bx,ax add ecx,1 add ebx,1 mcall 13,,,0xcccccc cmp [temp_counter],0 je @f mov ax,bx shr ebx,16 add bx,ax mov eax,[window_width] sub eax,4 sub ax,bx cmp eax,0 jbe @f shl ebx,16 mov bx,ax mov ax,[right_panel_y.size_y] add ax,[right_panel_y.start_y] shr ecx,16 sub ax,cx shl ecx,16 mov cx,ax mov edx,0xcccccc mcall 13 ret .draw_1: int 0x40 pusha mov eax,ebx inc eax shl eax,16 add ebx,eax mov bx,1 inc ecx mov edx,0xcccccc mcall 13 popa pusha mov edx,ebp shr ecx,16 mov bx,cx add ebx,2 shl 16 +3 mov ecx,0x90000000 mov eax,4 int 0x40 mov ecx,0x90ffffff sub ebx,1 shl 16 + 1 int 0x40 popa add ebx,27 shl 16 @@: ret ;--------------------------------------------------------------------- draw_ATAPI_tray_control: ret ;--------------------------------------------------------------------- calc_max_panel_line: xor eax,eax mov ax,[left_panel_y.size_y] mov ebx,10 xor edx,edx div ebx mov [max_panel_line],eax ret ;--------------------------------------------------------------------- draw_icon: pusha test [edx-40],byte 0x10 jnz .draw_dir_pic call get_icon_number imul ebx,270 add ebx,mem jmp .draw .draw_dir_pic: mov ebx,mem cmp [edx],word '..' jne .draw add ebx,270 ;*17 .draw: mov edx,[esp+16] ;ebx ror edx,16 sub edx,12 rol edx,16 mcall 7, ,<10,9> popa ret ;--------------------------------------------------------------------- ; ÏÅÐÅÂÎÄ 10-ÍÛÕ ×ÈÑÅË ÑÎ ÇÍÀÊÎÌ Â ÑÒÐÎÊÎÂÛÉ ÂÈÄ ; Âõîä: ; AX - ÷èñëî ; EBX - àäðåñ ñòðîêè ; Âûõîä: ; ñòðîêà ñîäåðæèò ÷èñëî, êîíåö îòìå÷åí êîäîì 0 decimal_string_2: push eax ebx ecx edx xor ecx,ecx mov [ebx],byte '0' inc ebx .p3: xor edx,edx push ebx mov ebx,10 div ebx pop ebx add edx,48 push edx inc ecx cmp ax,0 jne .p3 cmp ecx,1 jbe .p4 mov ecx,2 dec ebx .p4: pop edx mov [ebx],dl inc ebx loop .p4 pop edx ecx ebx eax ret ;--------------------------------------------------------------------- decimal_string_4: push eax ecx edx xor ecx,ecx mov [ebx],byte '0' inc ebx .p3: xor edx,edx push ebx mov ebx,10 div ebx pop ebx add edx,48 push edx inc ecx cmp eax,0 jne .p3 cmp ecx,3 jbe .p4 mov ecx,4 dec ebx .p4: pop edx mov [ebx],dl inc ebx loop .p4 pop edx ecx eax ret ;--------------------------------------------------------------------- draw_type_size_date: pusha test [edx-40],byte 0x10 jz .copy_type mov [type_table],dword ' ' mov [file_name_length],0 mov [extension_size],0 jmp .start ;.size .copy_type: mov [type_table],dword ' ' mov [type_table+4],word ' ' .start: mov esi,edx xor eax,eax @@: cld lodsb test eax,eax jnz @b mov [file_name_length],esi sub [file_name_length],edx mov [temp_counter_1],esi test [edx-40],byte 0x10 jnz .size ;@@: dec esi dec edx @@: std lodsb cmp esi,edx je .extension_size_0 ;@f cmp al,'.' jnz @b add esi,2 mov [extension_start],esi mov ecx,[temp_counter_1] sub ecx,esi inc ecx mov [extension_size],ecx sub [file_name_length],ecx cmp ecx,2 ja @f inc [file_name_length] @@: sub ecx,2 cmp ecx,4 jbe @f mov ecx,4 mov [type_table+4],word '..' @@: mov edi,type_table ;+1 cld rep movsb mov [edi],byte ' ' inc edx jmp .size .extension_size_0: inc edx mov [extension_size],0 .size: test [edx-40],byte 0x10 jz .copy_size mov [size_table],dword '----' mov [size_table+4],word '- ' jmp .date .copy_size: ;/0x40000000 - Gb ;/0x100000 - Mb ;/0x400 Kb mov [size_table],dword ' ' mov [size_table+4],word ' ' push ebx push edx mov eax,[edx-40+32] mov ebx,0x40000000 xor edx,edx div ebx cmp eax,0 je @f mov ebx,size_table call decimal_string_4 mov [ebx],byte 'G' jmp .size_convert_end @@: mov edx,[esp] mov eax,[edx-40+32] mov ebx,0x100000 xor edx,edx div ebx cmp eax,0 je @f mov ebx,size_table call decimal_string_4 mov [ebx],byte 'M' jmp .size_convert_end @@: mov edx,[esp] mov eax,[edx-40+32] mov ebx,0x400 xor edx,edx div ebx cmp eax,0 je @f mov ebx,size_table call decimal_string_4 mov [ebx],byte 'K' jmp .size_convert_end @@: mov edx,[esp] mov eax,[edx-40+32] ;.size_convert: mov ebx,size_table call decimal_string_4 .size_convert_end: cmp [size_table],byte '0' jne @f mov [size_table],byte ' ' @@: cmp [size_table+4],byte ' ' jne @f mov esi,size_table+3 mov edi,esi inc edi mov ecx,5 std rep movsb jmp @r @@: pop edx pop ebx .date: xor eax,eax mov al,[edx-40+28] push ebx mov ebx,date_table call decimal_string_2 mov al,[edx-40+29] mov ebx,date_table+3 call decimal_string_2 mov ax,[edx-40+30] mov ebx,year_table call decimal_string_4 mov ax,[year_table+2] mov [date_table+6],ax pop ebx ror ebx,16 add bx,[left_panel_x.size_x] sub ebx,122+12+15 rol ebx,16 mov ecx,0 cmp [marked_file],byte 0 je @f mov ecx,0xff0000 @@: mov edx,type_table mov esi,20 mov eax,4 int 0x40 popa ret ;--------------------------------------------------------------------- draw_folder_data: cmp [drawing_panel_folder],1 jne .right_panel mov eax,[left_folder_block] sub eax,[max_panel_line] test eax,0x8000000 jz .ok_left mov [left_start_draw_line],0 jmp @f .ok_left: cmp eax,[left_start_draw_line] jae @f mov [left_start_draw_line],eax @@: mov bx,[left_panel_x.start_x] ; inc bx add bx,12 shl ebx,16 mov bx,[left_panel_y.start_y] inc bx mov edx,[left_start_draw_line] imul edx,304 add edx,[left_folder_data] add edx,32+40 mov [temp_counter],0 jmp .type_folder .right_panel: mov eax,[right_folder_block] sub eax,[max_panel_line] test eax,0x8000000 jz .ok_right mov [right_start_draw_line],0 jmp @f .ok_right: cmp eax,[right_start_draw_line] jae @f mov [right_start_draw_line],eax @@: mov bx,[right_panel_x.start_x] ; inc bx add bx,12 shl ebx,16 mov bx,[right_panel_y.start_y] inc bx mov edx,[right_start_draw_line] imul edx,304 add edx,[right_folder_data] add edx,32+40 mov [temp_counter],1 ; mov edx,retrieved_devices_table .type_folder: xor eax,eax .start: pusha mov eax,edx cmp [temp_counter],1 je @f sub eax,[left_folder_data] sub eax,32+40 xor edx,edx mov ebx,304 div ebx cmp eax,[left_folder_block] je .end_1 jmp .continue_1 @@: sub eax,[right_folder_data] sub eax,32+40 xor edx,edx mov ebx,304 div ebx cmp eax,[right_folder_block] je .end_1 .continue_1: popa cmp eax,[max_panel_line] ; 20 je .end_2 ;.end mov [marked_file],0 cmp [edx+299-40],byte 0 je @f mov [marked_file],1 @@: call clear_line call draw_type_size_date call draw_icon push eax xor eax,eax mov ax,[left_panel_x.size_x] push ebx edx mov ebx,6 xor edx,edx div ebx pop edx ebx sub eax,23+2+2 mov esi,[file_name_length] mov [temp_counter_1],0 cmp esi,eax jbe @f mov esi,eax mov [temp_counter_1],1 @@: mov ecx,0 cmp [marked_file],byte 0 je @f mov ecx,0xff0000 @@: mov eax,4 int 0x40 cmp [temp_counter_1],0 je .continue mov eax,esi ;[file_name_length] imul eax,6 shl eax,16 push ebx edx add ebx,eax mov esi,2 mov ecx,0xff0000 mov edx,truncated_filename_char mov eax,4 int 0x40 add ebx,1 shl 16 int 0x40 pop edx ebx .continue: add ebx,10 add edx,304 ;10 pop eax inc eax jmp .start .end_1: popa .end_2: mov ax,[left_panel_y.start_y] add ax,[left_panel_y.size_y] mov cx,bx dec cx rol ecx,16 mov cx,ax mov eax,ecx shr eax,16 sub cx,ax cmp cx,0 jbe @f mov bx,[left_panel_x.size_x] sub ebx,12 shl 16 mov edx,0xffffff mcall 13 @@: .end: cmp [drawing_panel_folder],1 jne @f call draw_scroll_bar_left ret @@: call draw_scroll_bar_right ret ;--------------------------------------------------------------------- clear_line: cmp [not_clear_lines],0 jne .end_1 pusha shl ebx,16 shr ebx,16 dec ebx cmp [drawing_panel_folder],1 jne .right cmp [select_panel_counter],0 jne .continue mov ax,[left_start_draw_cursor_line] add ax,[left_panel_y.start_y] cmp bx,ax je .end jmp .continue .right: cmp [select_panel_counter],0 je .continue mov ax,[right_start_draw_cursor_line] add ax,[right_panel_y.start_y] cmp bx,ax je .end .continue: mov ebx,[esp+16] mov cx,bx dec cx rol ecx,16 mov cx,10 mov bx,[left_panel_x.size_x] cmp [drawing_panel_folder],1 je @f dec ebx @@: sub ebx,12 shl 16+15 mov edx,0xffffff mov eax,13 int 0x40 .end: popa .end_1: ret ;--------------------------------------------------------------------- draw_left_panel: call clear_left_panel call calc_max_panel_line call draw_left_panel_selection mov [drawing_panel_folder],1 call draw_folder_data call draw_left_panel_patch ret ;--------------------------------------------------------------------- draw_right_panel: call clear_right_panel call calc_max_panel_line call draw_right_panel_selection mov [drawing_panel_folder],2 call draw_folder_data call draw_right_panel_patch ret ;--------------------------------------------------------------------- draw_left_panel_patch: cmp [select_panel_counter],0 jne .end mov edx,read_folder_name ;read_folder.name .1: call clear_patch_area mov ebx,[window_high] sub ebx,33 add ebx,8 shl 16 mcall 4, ,0x80000000 ; ,read_folder.name .end: ret ;--------------------------------------------------------------------- draw_right_panel_patch: cmp [select_panel_counter],1 jne draw_left_panel_patch.end mov edx,read_folder_1_name ;read_folder_1.name jmp draw_left_panel_patch.1 ;--------------------------------------------------------------------- clear_patch_area: push edx mov ebx,[window_width] sub ebx,9 add ebx,5 shl 16 mov ecx,[window_high] sub ecx,35 shl ecx,16 mov cx,12 mov edx,0xffffcc mov eax,13 int 0x40 pop edx ret ;--------------------------------------------------------------------- draw_left_panel_selection: cmp [select_panel_counter],0 jne .end mov eax,[left_folder_block] sub eax,[left_start_draw_line] mov edx,left_start_draw_cursor_line mov cx,[edx] call for_all_panel_selection mov eax,[left_folder_block] dec eax imul eax,10 cmp ax,cx jae @f mov cx,ax @@: mov [edx],cx mov ebx,[left_panel_x] add cx,[left_panel_y.start_y] .1: shl ecx,16 mov cx,10 mov edx,0xbbddff sub ebx,15 mov eax,13 int 0x40 .end: ret ;--------------------------------------------------------------------- draw_right_panel_selection: cmp [select_panel_counter],1 jne draw_left_panel_selection.end mov eax,[right_folder_block] sub eax,[right_start_draw_line] mov edx,right_start_draw_cursor_line mov cx,[edx] call for_all_panel_selection mov eax,[right_folder_block] dec eax imul eax,10 cmp ax,cx jae @f mov cx,ax @@: mov [edx],cx mov ebx,[right_panel_x] add cx,[right_panel_y.start_y] jmp draw_left_panel_selection.1 ;--------------------------------------------------------------------- for_all_panel_selection: ; dec eax imul eax,10 cmp ax,cx jae @f mov cx,ax @@: mov eax,[max_panel_line] dec eax imul eax,10 cmp ax,cx jae @f mov cx,ax @@: ret ;--------------------------------------------------------------------- clear_left_panel: mov ebx,7 shl 16 add ebx,[window_width] shr bx,1 sub ebx,6+1 mov [left_panel_x],ebx call calculate_panel_1 mov [left_panel_y],ecx ; cmp [left_panel_clear_all],0 ; je @f ; call calculate_panel_2 ; mov [left_panel_clear_all],0 ;@@: ret ;--------------------------------------------------------------------- calculate_panel_1: mov ecx,[skin_high] add ecx,70 shl ecx,16 add ecx,[window_high] sub ecx,130 ret ;--------------------------------------------------------------------- ;calculate_panel_2: ; sub ebx,15 ; mov edx,0xffffff ; mov eax,13 ; int 0x40 ; ret ;--------------------------------------------------------------------- clear_right_panel: mov ebx,[window_width] shr ebx,1 add ebx,3 shl ebx,16 add ebx,[window_width] shr bx,1 sub bx,2+6 mov [right_panel_x],ebx call calculate_panel_1 mov [right_panel_y],ecx ; cmp [right_panel_clear_all],0 ; je @f ; call calculate_panel_2 ; mov [right_panel_clear_all],0 ;@@: ret ;--------------------------------------------------------------------- erase_fbutton: mov edx,0x80000065 mov eax,8 mov ebp,12 .start: int 0x40 dec ebp jnz .start ret ;--------------------------------------------------------------------- draw_fbutton: mov ecx,[window_high] sub ecx,20 shl ecx,16 add ecx,15 mov eax,[window_width] ; sub eax,8 mov ebx,12 xor edx,edx div ebx mov [fbutton_width],eax mov ebx,5 shl 16 add ebx,eax sub ebx,2 mov esi,0xaa00 mov edx,101 mov eax,8 mov ebp,12 .start: cmp ebp,1 jne @f mov eax,ebx shr eax,16 mov bx,ax mov eax,[window_width] sub ax,bx sub ax,5 mov bx,ax mov eax,8 @@: mcall push eax ebx edx mov edx,0x6060ff mov bx,10 cmp ebp,4 jae @f mov bx,18 @@: mcall 13 cmp ebp,1 je @f ror ebx,16 add ebx,[fbutton_width] dec ebx rol ebx,16 mov bx,1 mov edx,0xcccccc inc ecx mcall dec ecx @@: pop edx ebx eax call .rol_ror inc edx dec ebp jnz .start call draw_fbutton_name ret .rol_ror: rol ebx,16 add ebx,[fbutton_width] ror ebx,16 ret ;--------------------------------------------------------------------- draw_fbutton_name: mov ebx, 7 shl 16 add ebx,[window_high] sub ebx,15 mov eax,4 mov ecx,0x90000000 push ebx call .type_1 pop ebx mov ecx,0x90ffffff sub ebx,1 shl 16 + 1 .type_1: cmp [shift_flag],1 je .type_shift cmp [ctrl_flag],1 je .type_ctrl cmp [alt_flag],1 je .type_alt .type: mov edx,fbutton_name.f1 call .type_all mov edx,fbutton_name.f2 call .type_all mov edx,fbutton_name.f3 call .type_all mov edx,fbutton_name.f4 call .type_all mov edx,fbutton_name.f5 call .type_all mov edx,fbutton_name.f6 call .type_all mov edx,fbutton_name.f7 call .type_all mov edx,fbutton_name.f8 call .type_all mov edx,fbutton_name.f9 call .type_all mov edx,fbutton_name.f10 call .type_all mov edx,fbutton_name.f11 call .type_all mov edx,fbutton_name.f12 int 0x40 ret .type_shift: mov edx,fbutton_name_shift.f1 call .type_all mov edx,fbutton_name_shift.f2 call .type_all mov edx,fbutton_name_shift.f3 call .type_all mov edx,fbutton_name_shift.f4 call .type_all mov edx,fbutton_name_shift.f5 call .type_all mov edx,fbutton_name_shift.f6 call .type_all mov edx,fbutton_name_shift.f7 call .type_all mov edx,fbutton_name_shift.f8 call .type_all mov edx,fbutton_name_shift.f9 call .type_all mov edx,fbutton_name_shift.f10 call .type_all mov edx,fbutton_name_shift.f11 call .type_all mov edx,fbutton_name_shift.f12 int 0x40 ret .type_ctrl: mov edx,fbutton_name_ctrl.f1 call .type_all mov edx,fbutton_name_ctrl.f2 call .type_all mov edx,fbutton_name_ctrl.f3 call .type_all mov edx,fbutton_name_ctrl.f4 call .type_all mov edx,fbutton_name_ctrl.f5 call .type_all mov edx,fbutton_name_ctrl.f6 call .type_all mov edx,fbutton_name_ctrl.f7 call .type_all mov edx,fbutton_name_ctrl.f8 call .type_all mov edx,fbutton_name_ctrl.f9 call .type_all mov edx,fbutton_name_ctrl.f10 call .type_all mov edx,fbutton_name_ctrl.f11 call .type_all mov edx,fbutton_name_ctrl.f12 int 0x40 ret .type_alt: mov edx,fbutton_name_alt.f1 call .type_all mov edx,fbutton_name_alt.f2 call .type_all mov edx,fbutton_name_alt.f3 call .type_all mov edx,fbutton_name_alt.f4 call .type_all mov edx,fbutton_name_alt.f5 call .type_all mov edx,fbutton_name_alt.f6 call .type_all mov edx,fbutton_name_alt.f7 call .type_all mov edx,fbutton_name_alt.f8 call .type_all mov edx,fbutton_name_alt.f9 call .type_all mov edx,fbutton_name_alt.f10 call .type_all mov edx,fbutton_name_alt.f11 call .type_all mov edx,fbutton_name_alt.f12 .type_all: int 0x40 call draw_fbutton.rol_ror ret