2009-10-07 20:41:24 +02:00
|
|
|
|
;*****************************************************************************
|
|
|
|
|
; File Browser control for Kolibri OS
|
2013-07-23 00:38:50 +02:00
|
|
|
|
; Copyright (c) 2009-2013, Marat Zakiyanov aka Mario79, aka Mario
|
2009-10-07 20:41:24 +02:00
|
|
|
|
; All rights reserved.
|
|
|
|
|
;
|
|
|
|
|
; Redistribution and use in source and binary forms, with or without
|
|
|
|
|
; modification, are permitted provided that the following conditions are met:
|
|
|
|
|
; * Redistributions of source code must retain the above copyright
|
|
|
|
|
; notice, this list of conditions and the following disclaimer.
|
|
|
|
|
; * Redistributions in binary form must reproduce the above copyright
|
|
|
|
|
; notice, this list of conditions and the following disclaimer in the
|
|
|
|
|
; documentation and/or other materials provided with the distribution.
|
|
|
|
|
; * Neither the name of the <organization> nor the
|
|
|
|
|
; names of its contributors may be used to endorse or promote products
|
|
|
|
|
; derived from this software without specific prior written permission.
|
|
|
|
|
;
|
|
|
|
|
; THIS SOFTWARE IS PROVIDED BY Marat Zakiyanov ''AS IS'' AND ANY
|
|
|
|
|
; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
|
|
|
; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
|
|
|
; DISCLAIMED. IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY
|
|
|
|
|
; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
|
|
|
; (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
|
|
|
; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
|
|
|
; ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
|
|
|
; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
|
|
|
; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
|
;*****************************************************************************
|
|
|
|
|
;*****************************************************************************
|
|
|
|
|
macro file_browser_exit
|
|
|
|
|
{
|
|
|
|
|
popa
|
|
|
|
|
ret 4
|
|
|
|
|
}
|
|
|
|
|
;*****************************************************************************
|
|
|
|
|
fb_type equ dword [edi] ;dword
|
|
|
|
|
fb_size_x equ [edi+4] ;word
|
|
|
|
|
fb_start_x equ [edi+6] ;word
|
|
|
|
|
fb_size_y equ [edi+8] ;word
|
|
|
|
|
fb_start_y equ [edi+10] ;word
|
|
|
|
|
fb_icon_size_y equ word [edi+12] ;word
|
|
|
|
|
fb_icon_size_x equ word [edi+14] ;word
|
|
|
|
|
fb_line_size_x equ word [edi+16] ;word
|
|
|
|
|
fb_line_size_y equ word [edi+18] ;word
|
|
|
|
|
fb_type_size_x equ word [edi+20] ;word
|
|
|
|
|
fb_size_size_x equ word [edi+22] ;word
|
|
|
|
|
fb_date_size_x equ word [edi+24] ;word
|
|
|
|
|
fb_attributes_size_x equ word [edi+26] ;word
|
|
|
|
|
fb_icon_assoc_area equ dword [edi+28] ;dword
|
|
|
|
|
fb_icon_raw_area equ dword [edi+32] ;dword
|
|
|
|
|
fb_resolution_raw equ dword [edi+36] ;dword
|
|
|
|
|
fb_palette_raw equ dword [edi+40] ;dword
|
|
|
|
|
fb_directory_path_area equ dword [edi+44] ;dword
|
|
|
|
|
fb_file_name_area equ dword [edi+48] ;dword
|
|
|
|
|
fb_select_flag equ dword [edi+52] ;dword
|
|
|
|
|
fb_background_color equ dword [edi+56] ;dword
|
|
|
|
|
fb_select_color equ dword [edi+60] ;dword
|
|
|
|
|
fb_seclect_text_color equ dword [edi+64] ;dword
|
|
|
|
|
fb_text_color equ dword [edi+68] ;dword
|
|
|
|
|
fb_reduct_text_color equ dword [edi+72] ;dword
|
|
|
|
|
fb_marked_text_color equ dword [edi+76] ;dword
|
|
|
|
|
fb_max_panel_line equ dword [edi+80] ;dword
|
|
|
|
|
fb_select_panel_counter equ dword [edi+84] ;dword
|
|
|
|
|
fb_folder_block equ dword [edi+88] ;dword
|
|
|
|
|
fb_start_draw_line equ dword [edi+92] ;dword
|
|
|
|
|
fb_start_draw_cursor_line equ word [edi+96] ;word
|
|
|
|
|
fb_folder_data equ dword [edi+98] ;dword
|
|
|
|
|
fb_temp_counter equ dword [edi+102] ;dword
|
|
|
|
|
fb_file_name_length equ dword [edi+106] ;dword
|
|
|
|
|
fb_marked_file equ dword [edi+110] ;dword
|
|
|
|
|
fb_extension_size equ dword [edi+114] ;dword
|
|
|
|
|
fb_extension_start equ dword [edi+118] ;dword
|
|
|
|
|
fb_type_table equ dword [edi+122] ;dword
|
|
|
|
|
fb_ini_file_start equ dword [edi+126] ;dword
|
|
|
|
|
fb_ini_file_end equ dword [edi+130] ;dword
|
|
|
|
|
fb_draw_scroll_bar equ dword [edi+134] ;dword
|
|
|
|
|
fb_font_size_y equ word [edi+138] ;dword
|
|
|
|
|
fb_font_size_x equ word [edi+140] ;dword
|
|
|
|
|
fb_mouse_keys equ dword [edi+142] ;dword
|
|
|
|
|
fb_mouse_keys_old equ dword [edi+146] ;dword
|
|
|
|
|
fb_mouse_pos equ dword [edi+150] ;dword
|
|
|
|
|
fb_mouse_keys_delta equ dword [edi+154] ;dword
|
|
|
|
|
fb_mouse_key_delay equ dword [edi+158] ;dword
|
|
|
|
|
fb_mouse_keys_tick equ dword [edi+162] ;dword
|
|
|
|
|
fb_start_draw_cursor_line_2 equ word [edi+166] ;dword
|
|
|
|
|
fb_all_redraw equ dword [edi+168] ;dword
|
|
|
|
|
fb_selected_BDVK_adress equ dword [edi+172] ;dword
|
2013-07-23 00:38:50 +02:00
|
|
|
|
fb_key_action equ word [edi+176] ;word
|
|
|
|
|
fb_key_action_num equ word [edi+178] ;word
|
2009-10-07 20:41:24 +02:00
|
|
|
|
fb_name_temp_area equ dword [edi+180] ;dword
|
|
|
|
|
fb_max_name_temp_size equ dword [edi+184] ;dword
|
|
|
|
|
fb_display_name_max_length equ dword [edi+188] ;dword
|
|
|
|
|
fb_draw_panel_selection_flag equ dword [edi+192] ;dword
|
|
|
|
|
fb_mouse_pos_old equ dword [edi+196] ;dword
|
|
|
|
|
fb_marked_counter equ dword [edi+200] ;dword
|
2013-07-23 00:38:50 +02:00
|
|
|
|
fb_keymap_pointer equ dword [edi+204] ;dword
|
2009-10-07 20:41:24 +02:00
|
|
|
|
;---------------------------------------------------------------------
|
2020-12-08 22:01:35 +01:00
|
|
|
|
align 16
|
2009-10-07 20:41:24 +02:00
|
|
|
|
fb_draw_panel:
|
|
|
|
|
pusha
|
|
|
|
|
mov edi,dword [esp+36]
|
|
|
|
|
call fb_clear_panel
|
|
|
|
|
call fb_calc_max_panel_line
|
|
|
|
|
call fb_calc_folder_sysdata
|
|
|
|
|
call fb_draw_panel_selection
|
|
|
|
|
call fb_draw_folder_data
|
2013-07-12 09:08:39 +02:00
|
|
|
|
call fb_prepare_selected_BDVK_adress
|
2009-10-07 20:41:24 +02:00
|
|
|
|
file_browser_exit
|
|
|
|
|
;---------------------------------------------------------------------
|
|
|
|
|
fb_draw_panel_1:
|
|
|
|
|
pusha
|
|
|
|
|
mov eax,fb_select_color
|
|
|
|
|
push eax
|
|
|
|
|
mov eax,fb_seclect_text_color
|
|
|
|
|
push eax
|
|
|
|
|
mov ax,fb_start_draw_cursor_line
|
|
|
|
|
push eax
|
|
|
|
|
mov eax,fb_background_color
|
|
|
|
|
mov fb_select_color,eax
|
|
|
|
|
mov eax,fb_text_color
|
|
|
|
|
mov fb_seclect_text_color,eax
|
|
|
|
|
mov ax,fb_start_draw_cursor_line_2
|
|
|
|
|
mov fb_start_draw_cursor_line,ax
|
|
|
|
|
call fb_draw_panel_selection
|
|
|
|
|
pop eax
|
|
|
|
|
mov fb_start_draw_cursor_line,ax
|
|
|
|
|
pop eax
|
|
|
|
|
mov fb_seclect_text_color,eax
|
|
|
|
|
pop eax
|
|
|
|
|
mov fb_select_color,eax
|
|
|
|
|
call fb_draw_panel_selection
|
|
|
|
|
call fb_draw_folder_data
|
|
|
|
|
popa
|
|
|
|
|
ret
|
|
|
|
|
;---------------------------------------------------------------------
|
2020-12-08 22:01:35 +01:00
|
|
|
|
align 4
|
2009-10-07 20:41:24 +02:00
|
|
|
|
fb_clear_panel:
|
2010-10-20 10:24:25 +02:00
|
|
|
|
cmp fb_all_redraw,1
|
2009-10-07 20:41:24 +02:00
|
|
|
|
jne @f
|
|
|
|
|
xor eax,eax
|
|
|
|
|
mov fb_max_name_temp_size,eax
|
|
|
|
|
@@:
|
|
|
|
|
ret
|
|
|
|
|
;---------------------------------------------------------------------
|
2020-12-08 22:01:35 +01:00
|
|
|
|
align 4
|
2009-10-07 20:41:24 +02:00
|
|
|
|
fb_calc_folder_sysdata:
|
|
|
|
|
mov eax,fb_folder_data
|
|
|
|
|
mov eax,[eax+4]
|
|
|
|
|
mov fb_folder_block,eax
|
|
|
|
|
ret
|
|
|
|
|
;---------------------------------------------------------------------
|
2020-12-08 22:01:35 +01:00
|
|
|
|
align 4
|
2009-10-07 20:41:24 +02:00
|
|
|
|
fb_calc_max_panel_line:
|
|
|
|
|
xor eax,eax
|
|
|
|
|
xor ebx,ebx
|
|
|
|
|
mov ax,fb_size_y
|
|
|
|
|
mov bx,fb_line_size_y
|
|
|
|
|
test ebx,ebx
|
|
|
|
|
jnz @f
|
|
|
|
|
inc ebx
|
|
|
|
|
@@:
|
|
|
|
|
xor edx,edx
|
|
|
|
|
div ebx
|
|
|
|
|
mov fb_max_panel_line,eax
|
|
|
|
|
ret
|
|
|
|
|
;---------------------------------------------------------------------
|
2020-12-08 22:01:35 +01:00
|
|
|
|
align 4
|
2009-10-07 20:41:24 +02:00
|
|
|
|
fb_draw_panel_selection:
|
2010-10-20 10:24:25 +02:00
|
|
|
|
cmp fb_all_redraw,2
|
2009-10-07 20:41:24 +02:00
|
|
|
|
je .end
|
2013-10-10 01:42:19 +02:00
|
|
|
|
mov eax,fb_folder_block
|
|
|
|
|
test eax,eax
|
|
|
|
|
jz .end
|
2009-10-07 20:41:24 +02:00
|
|
|
|
xor eax,eax
|
|
|
|
|
cmp fb_select_panel_counter,eax
|
|
|
|
|
je .end
|
|
|
|
|
mov eax,fb_folder_block
|
|
|
|
|
sub eax,fb_start_draw_line
|
|
|
|
|
mov cx,fb_start_draw_cursor_line
|
|
|
|
|
call fb_for_all_panel_selection
|
|
|
|
|
mov eax,fb_folder_block
|
|
|
|
|
dec eax
|
|
|
|
|
xor edx,edx
|
|
|
|
|
mov dx,fb_line_size_y
|
|
|
|
|
imul eax,edx
|
|
|
|
|
cmp ax,cx
|
|
|
|
|
jae @f
|
|
|
|
|
mov cx,ax
|
|
|
|
|
@@:
|
|
|
|
|
mov fb_start_draw_cursor_line,cx
|
|
|
|
|
mov ebx,fb_size_x
|
|
|
|
|
add cx,fb_start_y
|
|
|
|
|
shl ecx,16
|
|
|
|
|
mov cx,fb_line_size_y
|
|
|
|
|
mov edx,fb_select_color
|
|
|
|
|
xor eax,eax
|
|
|
|
|
mov ax,fb_icon_size_x
|
|
|
|
|
add eax,2
|
|
|
|
|
sub ebx,eax
|
|
|
|
|
shl eax,16
|
|
|
|
|
push eax
|
|
|
|
|
add ebx,eax
|
2020-12-08 22:01:35 +01:00
|
|
|
|
mcall SF_DRAW_RECT
|
2009-10-07 20:41:24 +02:00
|
|
|
|
pop ebx
|
2010-10-20 10:24:25 +02:00
|
|
|
|
cmp fb_all_redraw,0
|
2009-10-07 20:41:24 +02:00
|
|
|
|
je .end
|
|
|
|
|
mov bx,fb_start_x
|
|
|
|
|
ror ebx,16
|
2020-12-08 22:01:35 +01:00
|
|
|
|
mcall SF_DRAW_RECT,,,fb_background_color
|
2009-10-07 20:41:24 +02:00
|
|
|
|
.end:
|
|
|
|
|
ret
|
|
|
|
|
;---------------------------------------------------------------------
|
2020-12-08 22:01:35 +01:00
|
|
|
|
align 4
|
2009-10-07 20:41:24 +02:00
|
|
|
|
fb_for_all_panel_selection:
|
|
|
|
|
xor edx,edx
|
|
|
|
|
mov dx,fb_line_size_y
|
|
|
|
|
imul eax,edx
|
|
|
|
|
cmp ax,cx
|
|
|
|
|
jae @f
|
|
|
|
|
mov cx,ax
|
|
|
|
|
@@:
|
|
|
|
|
mov eax,fb_max_panel_line
|
|
|
|
|
dec eax
|
|
|
|
|
imul eax,edx
|
|
|
|
|
cmp ax,cx
|
|
|
|
|
jae @f
|
|
|
|
|
mov cx,ax
|
|
|
|
|
@@:
|
|
|
|
|
ret
|
|
|
|
|
;---------------------------------------------------------------------
|
2020-12-08 22:01:35 +01:00
|
|
|
|
align 4
|
2009-10-07 20:41:24 +02:00
|
|
|
|
fb_draw_folder_data:
|
|
|
|
|
mov eax,fb_folder_block
|
|
|
|
|
sub eax,fb_max_panel_line
|
2010-08-24 22:12:25 +02:00
|
|
|
|
test eax,0x80000000
|
2009-10-07 20:41:24 +02:00
|
|
|
|
jz .ok_left
|
|
|
|
|
mov fb_start_draw_line,0
|
|
|
|
|
jmp @f
|
|
|
|
|
.ok_left:
|
|
|
|
|
cmp eax,fb_start_draw_line
|
|
|
|
|
jae @f
|
|
|
|
|
mov fb_start_draw_line,eax
|
|
|
|
|
@@:
|
|
|
|
|
mov bx,fb_start_x
|
|
|
|
|
add bx,3
|
|
|
|
|
add bx,fb_icon_size_x
|
|
|
|
|
shl ebx,16
|
|
|
|
|
mov bx,fb_start_y
|
|
|
|
|
mov edx,fb_start_draw_line
|
|
|
|
|
imul edx,304
|
|
|
|
|
add edx,fb_folder_data
|
|
|
|
|
add edx,32+40
|
|
|
|
|
xor eax,eax
|
|
|
|
|
.start:
|
|
|
|
|
pusha
|
|
|
|
|
mov eax,edx
|
|
|
|
|
sub eax,fb_folder_data
|
|
|
|
|
sub eax,32+40
|
|
|
|
|
xor edx,edx
|
|
|
|
|
mov ebx,304
|
|
|
|
|
div ebx
|
|
|
|
|
cmp eax,fb_folder_block
|
|
|
|
|
je .end_1
|
|
|
|
|
popa
|
|
|
|
|
cmp eax,fb_max_panel_line
|
|
|
|
|
je .end_2
|
|
|
|
|
mov fb_marked_file,0
|
|
|
|
|
cmp [edx+299-40],byte 0
|
|
|
|
|
je @f
|
|
|
|
|
mov fb_marked_file,1
|
|
|
|
|
@@:
|
|
|
|
|
call fb_clear_line
|
|
|
|
|
call fb_draw_type_size_date
|
2010-10-20 10:24:25 +02:00
|
|
|
|
cmp fb_all_redraw,2
|
2009-10-07 20:41:24 +02:00
|
|
|
|
je .draw_icon
|
2010-10-20 10:24:25 +02:00
|
|
|
|
cmp fb_all_redraw,0
|
2009-10-07 20:41:24 +02:00
|
|
|
|
je @f
|
|
|
|
|
.draw_icon:
|
|
|
|
|
call fb_draw_icon
|
|
|
|
|
@@:
|
|
|
|
|
push eax
|
|
|
|
|
xor eax,eax
|
|
|
|
|
mov ax,fb_size_x
|
|
|
|
|
push ebx edx
|
|
|
|
|
xor ebx,ebx
|
|
|
|
|
mov bx,fb_font_size_x
|
|
|
|
|
xor edx,edx
|
|
|
|
|
div ebx
|
|
|
|
|
pop edx ebx
|
2022-02-23 15:36:48 +01:00
|
|
|
|
sub eax,23+2+2+2
|
2009-10-07 20:41:24 +02:00
|
|
|
|
mov esi,fb_file_name_length
|
|
|
|
|
mov fb_temp_counter,0
|
|
|
|
|
mov fb_display_name_max_length,eax
|
|
|
|
|
cmp esi,eax
|
|
|
|
|
jbe @f
|
|
|
|
|
mov esi,eax
|
|
|
|
|
mov fb_temp_counter,1
|
|
|
|
|
@@:
|
|
|
|
|
cmp fb_max_name_temp_size,esi
|
|
|
|
|
jae @f
|
|
|
|
|
mov fb_max_name_temp_size,esi
|
|
|
|
|
inc fb_max_name_temp_size
|
|
|
|
|
@@:
|
|
|
|
|
mov ecx,fb_text_color
|
|
|
|
|
cmp fb_marked_file,0
|
|
|
|
|
je @f
|
2015-08-07 11:51:01 +02:00
|
|
|
|
mov ecx,fb_reduct_text_color
|
2009-10-07 20:41:24 +02:00
|
|
|
|
@@:
|
|
|
|
|
mov ax,fb_line_size_y
|
|
|
|
|
sub ax,fb_font_size_y
|
|
|
|
|
push ebx
|
|
|
|
|
mov bx,ax
|
|
|
|
|
shr ax,1
|
|
|
|
|
test bx,1b
|
|
|
|
|
jz @f
|
|
|
|
|
inc ax
|
|
|
|
|
@@:
|
|
|
|
|
pop ebx
|
|
|
|
|
push ebx
|
|
|
|
|
add bx,ax
|
|
|
|
|
call .draw_name_temp_area
|
2015-08-07 11:51:01 +02:00
|
|
|
|
cmp fb_temp_counter,0
|
|
|
|
|
jz .continue
|
2009-10-07 20:41:24 +02:00
|
|
|
|
xor eax,eax
|
|
|
|
|
mov ax,fb_font_size_x
|
|
|
|
|
imul eax,fb_display_name_max_length
|
|
|
|
|
shl eax,16
|
|
|
|
|
push edx
|
|
|
|
|
add ebx,eax
|
|
|
|
|
mov esi,2
|
2015-08-07 11:51:01 +02:00
|
|
|
|
mov ecx,fb_reduct_text_color
|
2009-10-07 20:41:24 +02:00
|
|
|
|
mov edx,dword fb_truncated_filename_char
|
2020-12-08 22:01:35 +01:00
|
|
|
|
mcall SF_DRAW_TEXT
|
2009-10-07 20:41:24 +02:00
|
|
|
|
pop edx
|
|
|
|
|
.continue:
|
|
|
|
|
pop ebx
|
|
|
|
|
add bx,fb_line_size_y
|
|
|
|
|
add edx,304
|
|
|
|
|
pop eax
|
|
|
|
|
inc eax
|
|
|
|
|
jmp .start
|
|
|
|
|
;--------------------------------------
|
2020-12-08 22:01:35 +01:00
|
|
|
|
align 4
|
2009-10-07 20:41:24 +02:00
|
|
|
|
.draw_name_temp_area:
|
|
|
|
|
pusha
|
2015-08-07 11:51:01 +02:00
|
|
|
|
mov eax,fb_max_name_temp_size
|
|
|
|
|
add eax,2
|
|
|
|
|
sub eax,esi
|
|
|
|
|
mov ecx,esi
|
2009-10-07 20:41:24 +02:00
|
|
|
|
mov esi,edx
|
|
|
|
|
mov edi,fb_name_temp_area
|
2015-08-07 11:51:01 +02:00
|
|
|
|
cld
|
|
|
|
|
jcxz @f
|
2009-10-07 20:41:24 +02:00
|
|
|
|
rep movsb
|
2015-08-07 11:51:01 +02:00
|
|
|
|
cmp byte [edi-1],0
|
|
|
|
|
jnz @f
|
|
|
|
|
dec edi
|
|
|
|
|
inc eax
|
|
|
|
|
@@:
|
|
|
|
|
mov ecx,eax
|
|
|
|
|
shr ecx,2
|
|
|
|
|
mov eax,dword ' '
|
|
|
|
|
rep stosd
|
2009-10-07 20:41:24 +02:00
|
|
|
|
popa
|
|
|
|
|
pusha
|
|
|
|
|
mov edx,fb_name_temp_area
|
2010-10-20 10:24:25 +02:00
|
|
|
|
cmp fb_all_redraw,2
|
2015-08-07 11:51:01 +02:00
|
|
|
|
jne @f
|
2009-10-07 20:41:24 +02:00
|
|
|
|
mov esi,fb_max_name_temp_size
|
2015-08-07 11:51:01 +02:00
|
|
|
|
add esi,2
|
|
|
|
|
@@:
|
|
|
|
|
bts ecx,30
|
2009-10-07 20:41:24 +02:00
|
|
|
|
mov eax,fb_background_color
|
|
|
|
|
cmp fb_draw_panel_selection_flag,1
|
|
|
|
|
jne @f
|
|
|
|
|
mov eax,fb_select_color
|
|
|
|
|
@@:
|
|
|
|
|
mov edi,eax
|
2020-12-08 22:01:35 +01:00
|
|
|
|
mcall SF_DRAW_TEXT
|
2009-10-07 20:41:24 +02:00
|
|
|
|
popa
|
|
|
|
|
ret
|
|
|
|
|
;--------------------------------------
|
|
|
|
|
.end_1:
|
|
|
|
|
popa
|
|
|
|
|
.end_2:
|
2010-10-20 10:24:25 +02:00
|
|
|
|
cmp fb_all_redraw,1
|
2009-10-07 20:41:24 +02:00
|
|
|
|
jne @f
|
|
|
|
|
mov ax,fb_start_y
|
|
|
|
|
add ax,fb_size_y
|
|
|
|
|
mov cx,bx
|
|
|
|
|
rol ecx,16
|
|
|
|
|
mov cx,ax
|
|
|
|
|
mov eax,ecx
|
|
|
|
|
shr eax,16
|
|
|
|
|
sub cx,ax
|
|
|
|
|
cmp cx,0
|
|
|
|
|
jbe @f
|
|
|
|
|
mov bx,fb_size_x
|
|
|
|
|
ror ebx,16
|
|
|
|
|
sub bx,fb_icon_size_x
|
|
|
|
|
sub bx,3
|
|
|
|
|
rol ebx,16
|
|
|
|
|
mov edx,fb_background_color ;0xffffff
|
2020-12-08 22:01:35 +01:00
|
|
|
|
mcall SF_DRAW_RECT
|
2009-10-07 20:41:24 +02:00
|
|
|
|
@@:
|
|
|
|
|
ret
|
|
|
|
|
;---------------------------------------------------------------------
|
2020-12-08 22:01:35 +01:00
|
|
|
|
align 4
|
2009-10-07 20:41:24 +02:00
|
|
|
|
fb_clear_line:
|
|
|
|
|
mov fb_draw_panel_selection_flag,0
|
|
|
|
|
pusha
|
|
|
|
|
shl ebx,16
|
|
|
|
|
shr ebx,16
|
|
|
|
|
cmp fb_select_panel_counter,0
|
|
|
|
|
je .continue
|
|
|
|
|
mov ax,fb_start_draw_cursor_line
|
|
|
|
|
add ax,fb_start_y
|
|
|
|
|
cmp bx,ax
|
|
|
|
|
jne .continue
|
|
|
|
|
mov fb_draw_panel_selection_flag,1
|
|
|
|
|
jmp .end
|
|
|
|
|
.continue:
|
2010-10-20 10:24:25 +02:00
|
|
|
|
cmp fb_all_redraw,2
|
2009-10-07 20:41:24 +02:00
|
|
|
|
je .end
|
2010-10-20 10:24:25 +02:00
|
|
|
|
cmp fb_all_redraw,0
|
2009-10-07 20:41:24 +02:00
|
|
|
|
je .end
|
|
|
|
|
mov ebx,[esp+16]
|
|
|
|
|
mov cx,bx
|
|
|
|
|
rol ecx,16
|
|
|
|
|
mov cx,fb_line_size_y
|
|
|
|
|
mov bx,fb_size_x
|
|
|
|
|
ror ebx,16
|
|
|
|
|
sub bx,fb_icon_size_x
|
|
|
|
|
sub bx,3
|
|
|
|
|
rol ebx,16
|
2020-12-08 22:01:35 +01:00
|
|
|
|
mcall SF_DRAW_RECT,,,fb_background_color
|
2009-10-07 20:41:24 +02:00
|
|
|
|
.end:
|
|
|
|
|
popa
|
|
|
|
|
ret
|
|
|
|
|
;---------------------------------------------------------------------
|
2020-12-08 22:01:35 +01:00
|
|
|
|
align 4
|
2009-10-07 20:41:24 +02:00
|
|
|
|
fb_draw_type_size_date:
|
|
|
|
|
pusha
|
|
|
|
|
mov eax,fb_type_table
|
|
|
|
|
test [edx-40],byte 0x10
|
|
|
|
|
jz .copy_type
|
|
|
|
|
mov [eax],dword '<DIR'
|
|
|
|
|
mov [eax+4],word '> '
|
|
|
|
|
mov fb_file_name_length,0
|
|
|
|
|
mov fb_extension_size,0
|
|
|
|
|
jmp .start
|
|
|
|
|
.copy_type:
|
2015-08-07 11:51:01 +02:00
|
|
|
|
mov [eax],dword ' '
|
|
|
|
|
mov [eax+4],word ' '
|
2009-10-07 20:41:24 +02:00
|
|
|
|
.start:
|
|
|
|
|
mov esi,edx
|
|
|
|
|
xor eax,eax
|
|
|
|
|
@@:
|
|
|
|
|
cld
|
|
|
|
|
lodsb
|
|
|
|
|
test eax,eax
|
|
|
|
|
jnz @b
|
|
|
|
|
mov fb_file_name_length,esi
|
|
|
|
|
sub fb_file_name_length,edx
|
|
|
|
|
mov fb_temp_counter,esi
|
|
|
|
|
test [edx-40],byte 0x10
|
|
|
|
|
jnz .size
|
|
|
|
|
dec esi
|
|
|
|
|
dec edx
|
|
|
|
|
@@:
|
|
|
|
|
std
|
|
|
|
|
lodsb
|
|
|
|
|
cmp esi,edx
|
|
|
|
|
je .extension_size_0
|
|
|
|
|
cmp al,'.'
|
|
|
|
|
jnz @b
|
|
|
|
|
add esi,2
|
|
|
|
|
mov fb_extension_start,esi
|
|
|
|
|
mov ecx,fb_temp_counter
|
|
|
|
|
sub ecx,esi
|
|
|
|
|
inc ecx
|
|
|
|
|
mov fb_extension_size,ecx
|
|
|
|
|
sub fb_file_name_length,ecx
|
|
|
|
|
cmp ecx,2
|
|
|
|
|
ja @f
|
|
|
|
|
inc fb_file_name_length
|
|
|
|
|
@@:
|
|
|
|
|
sub ecx,2
|
|
|
|
|
cmp ecx,4
|
|
|
|
|
jbe @f
|
|
|
|
|
mov ecx,3
|
|
|
|
|
mov eax,fb_type_table
|
|
|
|
|
mov [eax+3],word '..'
|
|
|
|
|
@@:
|
|
|
|
|
push edi
|
|
|
|
|
mov edi,fb_type_table
|
|
|
|
|
cld
|
|
|
|
|
rep movsb
|
|
|
|
|
pop edi
|
|
|
|
|
inc edx
|
|
|
|
|
jmp .size
|
|
|
|
|
.extension_size_0:
|
|
|
|
|
inc edx
|
|
|
|
|
mov fb_extension_size,0
|
|
|
|
|
.size:
|
|
|
|
|
mov eax,fb_type_table
|
|
|
|
|
test [edx-40],byte 0x10
|
|
|
|
|
jz .copy_size
|
|
|
|
|
mov [eax+6],dword '----'
|
|
|
|
|
mov [eax+6+4],word '- '
|
|
|
|
|
jmp .date
|
|
|
|
|
;-----------------------------------------
|
2020-12-08 22:01:35 +01:00
|
|
|
|
align 4
|
2009-10-07 20:41:24 +02:00
|
|
|
|
.call_decimal_string:
|
|
|
|
|
mov ebx,fb_type_table
|
2022-02-23 15:36:48 +01:00
|
|
|
|
add ebx,9
|
|
|
|
|
call fb_decimal_string
|
|
|
|
|
mov [ebx+1],dl
|
2009-10-07 20:41:24 +02:00
|
|
|
|
jmp .size_convert_end
|
|
|
|
|
;-----------------------------------------
|
2022-02-06 20:47:41 +01:00
|
|
|
|
.qword_div:
|
|
|
|
|
mov eax,[edx-40+32]
|
|
|
|
|
mov ebx,[edx-40+32+4]
|
|
|
|
|
@@: ; /1024
|
|
|
|
|
shrd eax,ebx,5 ; /32
|
|
|
|
|
shr ebx,5 ; /32
|
|
|
|
|
shrd eax,ebx,5 ; /32
|
|
|
|
|
shr ebx,5 ; /32
|
|
|
|
|
dec ecx
|
|
|
|
|
jnz @b
|
|
|
|
|
; /(1024*1024)
|
|
|
|
|
shr eax,20
|
|
|
|
|
test eax,eax
|
|
|
|
|
ret
|
|
|
|
|
;-----------------------------------------
|
2020-12-08 22:01:35 +01:00
|
|
|
|
align 4
|
2009-10-07 20:41:24 +02:00
|
|
|
|
.copy_size:
|
2022-02-06 01:52:02 +01:00
|
|
|
|
;/0x1000000000000000 - EB
|
|
|
|
|
;/0x4000000000000 - PB
|
|
|
|
|
;/0x10000000000 - TB
|
|
|
|
|
;/0x40000000 - GB
|
|
|
|
|
;/0x100000 - MB
|
|
|
|
|
;/0x400 - KB
|
2009-10-07 20:41:24 +02:00
|
|
|
|
mov [eax+6],dword ' '
|
|
|
|
|
mov [eax+6+4],word ' '
|
2020-12-08 22:01:35 +01:00
|
|
|
|
push ebx edx
|
2022-02-06 20:47:41 +01:00
|
|
|
|
push ecx
|
|
|
|
|
mov ecx,4
|
|
|
|
|
call .qword_div
|
|
|
|
|
pop ecx
|
2009-10-07 20:41:24 +02:00
|
|
|
|
jz @f
|
2022-02-06 01:52:02 +01:00
|
|
|
|
mov dl,byte 'E' ; Exa Byte
|
2009-10-07 20:41:24 +02:00
|
|
|
|
jmp .call_decimal_string
|
|
|
|
|
@@:
|
2022-02-06 20:47:41 +01:00
|
|
|
|
push ecx
|
|
|
|
|
mov ecx,3
|
|
|
|
|
call .qword_div
|
|
|
|
|
pop ecx
|
2022-02-06 01:52:02 +01:00
|
|
|
|
jz @f
|
|
|
|
|
mov dl,byte 'P' ; Peta Byte
|
|
|
|
|
jmp .call_decimal_string
|
|
|
|
|
@@:
|
2022-02-06 20:47:41 +01:00
|
|
|
|
push ecx
|
|
|
|
|
mov ecx,2
|
|
|
|
|
call .qword_div
|
|
|
|
|
pop ecx
|
2022-02-06 01:52:02 +01:00
|
|
|
|
jz @f
|
|
|
|
|
mov dl,byte 'T' ; Tera Byte
|
|
|
|
|
jmp .call_decimal_string
|
|
|
|
|
@@:
|
2022-02-06 20:47:41 +01:00
|
|
|
|
push ecx
|
|
|
|
|
mov ecx,1
|
|
|
|
|
call .qword_div
|
|
|
|
|
pop ecx
|
2022-02-06 01:52:02 +01:00
|
|
|
|
jz @f
|
|
|
|
|
mov dl,byte 'G' ; Giga Byte
|
|
|
|
|
jmp .call_decimal_string
|
|
|
|
|
@@:
|
|
|
|
|
mov eax,[edx-40+32]
|
|
|
|
|
mov ebx,eax
|
2009-10-07 20:41:24 +02:00
|
|
|
|
shr eax,20 ; /(1024*1024)
|
|
|
|
|
test eax,eax
|
|
|
|
|
jz @f
|
2022-02-06 01:52:02 +01:00
|
|
|
|
mov dl,byte 'M' ; Mega Byte
|
2009-10-07 20:41:24 +02:00
|
|
|
|
jmp .call_decimal_string
|
|
|
|
|
@@:
|
|
|
|
|
mov eax,ebx
|
|
|
|
|
shr eax,10 ; /1024
|
|
|
|
|
test eax,eax
|
|
|
|
|
jz @f
|
2022-02-06 01:52:02 +01:00
|
|
|
|
mov dl,byte 'K' ; Kilo Byte
|
2009-10-07 20:41:24 +02:00
|
|
|
|
jmp .call_decimal_string
|
|
|
|
|
@@:
|
|
|
|
|
mov eax,ebx
|
|
|
|
|
mov ebx,fb_type_table
|
2022-02-23 15:36:48 +01:00
|
|
|
|
add ebx,10
|
|
|
|
|
call fb_decimal_string
|
2009-10-07 20:41:24 +02:00
|
|
|
|
.size_convert_end:
|
2020-12-08 22:01:35 +01:00
|
|
|
|
pop edx ebx
|
2009-10-07 20:41:24 +02:00
|
|
|
|
;-----------------------------------------
|
|
|
|
|
.date:
|
2022-02-23 15:36:48 +01:00
|
|
|
|
cmp [edx],word '..'
|
|
|
|
|
jne @f
|
|
|
|
|
|
|
|
|
|
cmp [edx+2],byte 0
|
|
|
|
|
je .not_show_date
|
|
|
|
|
@@:
|
2009-10-07 20:41:24 +02:00
|
|
|
|
xor eax,eax
|
|
|
|
|
mov al,[edx-40+28]
|
|
|
|
|
push ebx
|
|
|
|
|
mov ebx,fb_type_table
|
|
|
|
|
add ebx,12
|
|
|
|
|
call fb_decimal_string_2 ; day
|
|
|
|
|
mov al,[edx-40+29]
|
|
|
|
|
mov ebx,fb_type_table
|
|
|
|
|
add ebx,12+3
|
|
|
|
|
call fb_decimal_string_2 ; month
|
|
|
|
|
mov ax,[edx-40+30]
|
|
|
|
|
mov ebx,fb_type_table
|
2022-02-23 15:36:48 +01:00
|
|
|
|
add ebx,12+9
|
|
|
|
|
mov [ebx-3], dword '0000'
|
|
|
|
|
call fb_decimal_string ; year
|
2009-10-07 20:41:24 +02:00
|
|
|
|
pop ebx
|
|
|
|
|
;-----------------------------------------
|
|
|
|
|
ror ebx,16
|
|
|
|
|
add bx,fb_size_x
|
2022-02-23 15:36:48 +01:00
|
|
|
|
sub ebx,161 ; 122+12+15
|
2009-10-07 20:41:24 +02:00
|
|
|
|
rol ebx,16
|
|
|
|
|
mov ecx,fb_text_color
|
|
|
|
|
cmp fb_marked_file,0
|
|
|
|
|
je @f
|
2015-08-07 11:51:01 +02:00
|
|
|
|
mov ecx,fb_reduct_text_color
|
2009-10-07 20:41:24 +02:00
|
|
|
|
@@:
|
|
|
|
|
mov edx,fb_type_table
|
2022-02-23 15:36:48 +01:00
|
|
|
|
mov esi,22
|
2009-10-07 20:41:24 +02:00
|
|
|
|
mov ax,fb_line_size_y
|
|
|
|
|
sub ax,fb_font_size_y
|
|
|
|
|
push ebx
|
|
|
|
|
mov bx,ax
|
|
|
|
|
shr ax,1
|
|
|
|
|
test bx,1b
|
|
|
|
|
jz @f
|
|
|
|
|
inc ax
|
|
|
|
|
@@:
|
|
|
|
|
pop ebx
|
|
|
|
|
add bx,ax
|
2015-08-07 11:51:01 +02:00
|
|
|
|
bts ecx,30
|
2009-10-07 20:41:24 +02:00
|
|
|
|
mov eax,fb_background_color
|
|
|
|
|
cmp fb_draw_panel_selection_flag,1
|
|
|
|
|
jne @f
|
|
|
|
|
mov eax,fb_select_color
|
|
|
|
|
@@:
|
|
|
|
|
mov edi,eax
|
2020-12-08 22:01:35 +01:00
|
|
|
|
mcall SF_DRAW_TEXT
|
2022-02-23 15:36:48 +01:00
|
|
|
|
.not_show_date:
|
2009-10-07 20:41:24 +02:00
|
|
|
|
popa
|
|
|
|
|
ret
|
|
|
|
|
;---------------------------------------------------------------------
|
2020-12-08 22:01:35 +01:00
|
|
|
|
align 4
|
2009-10-07 20:41:24 +02:00
|
|
|
|
fb_draw_icon:
|
|
|
|
|
pusha
|
|
|
|
|
xor eax,eax
|
|
|
|
|
mov ax,fb_icon_size_y
|
|
|
|
|
mov ebx,fb_resolution_raw
|
|
|
|
|
imul eax,ebx
|
|
|
|
|
mov bx,fb_icon_size_x
|
|
|
|
|
imul eax,ebx
|
|
|
|
|
mov ebx,eax
|
|
|
|
|
shr eax,3
|
|
|
|
|
test ebx,111b
|
|
|
|
|
jz @f
|
|
|
|
|
inc eax
|
|
|
|
|
@@:
|
|
|
|
|
test [edx-40],byte 0x10
|
|
|
|
|
jnz .draw_dir_pic
|
|
|
|
|
call fb_get_icon_number
|
|
|
|
|
imul ebx,eax ;16*16*3
|
|
|
|
|
jmp .draw
|
|
|
|
|
.draw_dir_pic:
|
|
|
|
|
xor ebx,ebx
|
|
|
|
|
cmp [edx],word '..'
|
|
|
|
|
jne .draw
|
2022-03-26 16:51:10 +01:00
|
|
|
|
cmp [edx+2],byte 0
|
2022-03-26 16:36:35 +01:00
|
|
|
|
jne .draw
|
2009-10-07 20:41:24 +02:00
|
|
|
|
mov ebx,eax ;16*16*3
|
|
|
|
|
.draw:
|
|
|
|
|
add ebx,fb_icon_raw_area
|
|
|
|
|
mov cx,fb_icon_size_x
|
|
|
|
|
shl ecx,16
|
|
|
|
|
mov cx,fb_icon_size_y
|
|
|
|
|
mov edx,[esp+16]
|
|
|
|
|
ror edx,16
|
|
|
|
|
sub edx,2
|
|
|
|
|
sub dx,fb_icon_size_x
|
|
|
|
|
rol edx,16
|
|
|
|
|
mov ax,fb_line_size_y
|
|
|
|
|
sub ax,fb_icon_size_y
|
|
|
|
|
shr ax,1
|
|
|
|
|
add dx,ax
|
|
|
|
|
mov esi,fb_resolution_raw
|
|
|
|
|
xor ebp,ebp
|
|
|
|
|
push edi
|
|
|
|
|
mov edi,fb_palette_raw
|
2020-12-08 22:01:35 +01:00
|
|
|
|
mcall SF_PUT_IMAGE_EXT
|
2009-10-07 20:41:24 +02:00
|
|
|
|
pop edi
|
|
|
|
|
popa
|
|
|
|
|
ret
|
|
|
|
|
;---------------------------------------------------------------------
|
|
|
|
|
; Convert of a binary number in decimal string form
|
|
|
|
|
; Input:
|
|
|
|
|
; AX - value
|
|
|
|
|
; EBX - address of string
|
|
|
|
|
; Output:
|
|
|
|
|
; string contains the number, marked the end of the code 0
|
2020-12-08 22:01:35 +01:00
|
|
|
|
align 4
|
2009-10-07 20:41:24 +02:00
|
|
|
|
fb_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
|
|
|
|
|
;---------------------------------------------------------------------
|
2020-12-08 22:01:35 +01:00
|
|
|
|
align 4
|
2022-02-23 15:36:48 +01:00
|
|
|
|
fb_decimal_string:
|
|
|
|
|
push eax ebx ecx edx
|
|
|
|
|
mov ecx,10
|
|
|
|
|
;--------------------------------------
|
2009-10-07 20:41:24 +02:00
|
|
|
|
.p3:
|
|
|
|
|
xor edx,edx
|
2022-02-23 15:36:48 +01:00
|
|
|
|
div ecx
|
2009-10-07 20:41:24 +02:00
|
|
|
|
add edx,48
|
|
|
|
|
mov [ebx],dl
|
2022-02-23 15:36:48 +01:00
|
|
|
|
dec ebx
|
|
|
|
|
test eax,eax
|
|
|
|
|
jnz .p3
|
|
|
|
|
|
|
|
|
|
pop edx ecx ebx eax
|
2009-10-07 20:41:24 +02:00
|
|
|
|
ret
|
|
|
|
|
;---------------------------------------------------------------------
|
2020-12-08 22:01:35 +01:00
|
|
|
|
align 4
|
2009-10-07 20:41:24 +02:00
|
|
|
|
fb_get_icon_number:
|
|
|
|
|
push eax
|
|
|
|
|
mov ebp,fb_extension_size
|
|
|
|
|
test ebp,ebp
|
|
|
|
|
je .end
|
|
|
|
|
dec ebp
|
|
|
|
|
test ebp,ebp
|
|
|
|
|
je .end
|
|
|
|
|
dec ebp
|
|
|
|
|
test ebp,ebp
|
2022-02-06 20:47:41 +01:00
|
|
|
|
je .end
|
2009-10-07 20:41:24 +02:00
|
|
|
|
@@:
|
|
|
|
|
mov edx,fb_ini_file_end
|
|
|
|
|
sub edx,ebp
|
|
|
|
|
mov eax,fb_ini_file_start
|
|
|
|
|
dec eax
|
|
|
|
|
.search_association:
|
|
|
|
|
cmp edx,eax
|
|
|
|
|
jbe .end
|
|
|
|
|
mov esi,fb_extension_start
|
|
|
|
|
inc eax
|
|
|
|
|
mov ecx,eax
|
|
|
|
|
mov ebx,eax
|
|
|
|
|
cld
|
|
|
|
|
.check:
|
|
|
|
|
lodsb
|
|
|
|
|
test al,al
|
|
|
|
|
jz @f
|
|
|
|
|
call fb_char_toupper
|
|
|
|
|
shl ax,8
|
2010-06-02 11:26:10 +02:00
|
|
|
|
.search_start_of_line:
|
2009-10-07 20:41:24 +02:00
|
|
|
|
mov al,[ebx]
|
|
|
|
|
inc ebx
|
|
|
|
|
call fb_char_toupper
|
|
|
|
|
cmp al,ah
|
|
|
|
|
je .check
|
|
|
|
|
mov eax,ecx
|
|
|
|
|
jmp .search_association
|
|
|
|
|
@@:
|
2010-06-02 11:26:10 +02:00
|
|
|
|
mov esi,ecx
|
2009-10-07 20:41:24 +02:00
|
|
|
|
add esi,ebp
|
2010-06-02 11:26:10 +02:00
|
|
|
|
lodsb
|
|
|
|
|
cmp al,byte '='
|
|
|
|
|
mov eax,ecx
|
2022-02-23 15:36:48 +01:00
|
|
|
|
jne .search_association
|
2010-06-02 11:26:10 +02:00
|
|
|
|
cmp eax,fb_ini_file_start
|
|
|
|
|
je @f
|
|
|
|
|
dec eax
|
2022-02-06 20:47:41 +01:00
|
|
|
|
cmp [eax],byte 15
|
2010-06-02 11:26:10 +02:00
|
|
|
|
ja .end
|
|
|
|
|
@@:
|
2009-10-07 20:41:24 +02:00
|
|
|
|
xor ebx,ebx
|
|
|
|
|
xor eax,eax
|
|
|
|
|
mov ecx,9
|
|
|
|
|
call .calculate
|
2022-02-06 20:47:41 +01:00
|
|
|
|
cmp al,0x30
|
2009-10-07 20:41:24 +02:00
|
|
|
|
jb .end
|
|
|
|
|
cmp al,0x39
|
|
|
|
|
ja .end
|
|
|
|
|
sub eax,0x30
|
|
|
|
|
@@:
|
|
|
|
|
call .calculate_1
|
2022-02-06 20:47:41 +01:00
|
|
|
|
cmp al,0x30
|
2009-10-07 20:41:24 +02:00
|
|
|
|
jb @f
|
|
|
|
|
cmp al,0x39
|
|
|
|
|
ja @f
|
|
|
|
|
sub eax,0x30
|
|
|
|
|
|
2022-02-06 20:47:41 +01:00
|
|
|
|
lea ebx,[ebx+ebx*4]
|
2009-10-07 20:41:24 +02:00
|
|
|
|
shl ebx,1
|
|
|
|
|
|
|
|
|
|
dec ecx
|
|
|
|
|
jnz @b
|
|
|
|
|
@@:
|
|
|
|
|
pop eax
|
|
|
|
|
ret
|
|
|
|
|
.end:
|
|
|
|
|
mov ebx,2
|
|
|
|
|
pop eax
|
|
|
|
|
ret
|
|
|
|
|
;---------------------------------------------------------------------
|
2020-12-08 22:01:35 +01:00
|
|
|
|
align 4
|
2009-10-07 20:41:24 +02:00
|
|
|
|
.calculate_1:
|
|
|
|
|
add ebx,eax
|
|
|
|
|
.calculate:
|
|
|
|
|
xor eax,eax
|
|
|
|
|
cld
|
|
|
|
|
lodsb
|
|
|
|
|
ret
|
|
|
|
|
;---------------------------------------------------------------------
|
2020-12-08 22:01:35 +01:00
|
|
|
|
align 4
|
2009-10-07 20:41:24 +02:00
|
|
|
|
fb_char_toupper:
|
|
|
|
|
; convert character to uppercase, using cp866 encoding
|
|
|
|
|
; in: al=symbol
|
|
|
|
|
; out: al=converted symbol
|
|
|
|
|
cmp al,'a'
|
|
|
|
|
jb .ret
|
|
|
|
|
cmp al, 'z'
|
|
|
|
|
jbe .az
|
|
|
|
|
cmp al, '<27>'
|
|
|
|
|
jb .ret
|
|
|
|
|
cmp al, '<27>'
|
|
|
|
|
jb .rus1
|
|
|
|
|
cmp al, '<27>'
|
|
|
|
|
ja .ret
|
|
|
|
|
; 0xE0-0xEF -> 0x90-0x9F
|
|
|
|
|
sub al, '<27>'-'<27>'
|
|
|
|
|
.ret:
|
|
|
|
|
ret
|
|
|
|
|
.rus1:
|
|
|
|
|
; 0xA0-0xAF -> 0x80-0x8F
|
|
|
|
|
.az:
|
|
|
|
|
and al, not 0x20
|
|
|
|
|
ret
|
|
|
|
|
;---------------------------------------------------------------------
|
2020-12-08 22:01:35 +01:00
|
|
|
|
align 4
|
2011-12-15 23:00:21 +01:00
|
|
|
|
fb_char_todown:
|
2012-05-21 21:01:21 +02:00
|
|
|
|
; convert character to lowercase, using cp866 encoding
|
2011-12-15 23:00:21 +01:00
|
|
|
|
; in: al=symbol
|
|
|
|
|
; out: al=converted symbol
|
|
|
|
|
cmp al, 'A'
|
|
|
|
|
jb .ret
|
|
|
|
|
cmp al, 'Z'
|
|
|
|
|
jbe .az
|
|
|
|
|
cmp al, '<27>'
|
|
|
|
|
jb .ret
|
|
|
|
|
cmp al, '<27>'
|
|
|
|
|
jb .rus1
|
|
|
|
|
cmp al, '<27>'
|
|
|
|
|
ja .ret
|
|
|
|
|
; 0x90-0x9F -> 0xE0-0xEF
|
|
|
|
|
add al, '<27>'-'<27>'
|
|
|
|
|
.ret:
|
|
|
|
|
ret
|
|
|
|
|
.rus1:
|
|
|
|
|
; 0x80-0x8F -> 0xA0-0xAF
|
|
|
|
|
.az:
|
|
|
|
|
add al, 0x20
|
|
|
|
|
ret
|
|
|
|
|
;---------------------------------------------------------------------
|
2009-10-07 20:41:24 +02:00
|
|
|
|
fb_truncated_filename_char:
|
|
|
|
|
db '..'
|
|
|
|
|
;---------------------------------------------------------------------
|
|
|
|
|
;*****************************************************************************
|
|
|
|
|
;*****************************************************************************
|
|
|
|
|
; mouse event
|
|
|
|
|
;*****************************************************************************
|
|
|
|
|
;*****************************************************************************
|
2020-12-08 22:01:35 +01:00
|
|
|
|
align 4
|
2009-10-07 20:41:24 +02:00
|
|
|
|
fb_mouse:
|
|
|
|
|
pusha
|
|
|
|
|
mov edi,dword [esp+36]
|
|
|
|
|
;-------------------------------------------------------
|
2020-12-08 22:01:35 +01:00
|
|
|
|
mcall SF_MOUSE_GET,SSF_BUTTON
|
2009-10-07 20:41:24 +02:00
|
|
|
|
mov ebx,fb_mouse_keys
|
|
|
|
|
mov fb_mouse_keys_old,ebx
|
|
|
|
|
mov fb_mouse_keys,eax
|
|
|
|
|
|
2020-12-08 22:01:35 +01:00
|
|
|
|
mcall SF_MOUSE_GET,SSF_WINDOW_POSITION
|
2009-10-07 20:41:24 +02:00
|
|
|
|
mov ebx,fb_mouse_pos
|
|
|
|
|
mov fb_mouse_pos_old,ebx
|
|
|
|
|
mov fb_mouse_pos,eax
|
|
|
|
|
|
|
|
|
|
test eax,0x80000000
|
|
|
|
|
jnz .exit_fb
|
|
|
|
|
test eax,0x8000
|
|
|
|
|
jnz .exit_fb
|
|
|
|
|
|
|
|
|
|
mov ebx,eax
|
|
|
|
|
shr ebx,16 ; x position
|
|
|
|
|
shl eax,16
|
|
|
|
|
shr eax,16 ; y position
|
|
|
|
|
|
|
|
|
|
mov cx,fb_start_x
|
|
|
|
|
cmp bx,cx
|
|
|
|
|
jb .exit_fb
|
|
|
|
|
|
|
|
|
|
add cx,fb_size_x
|
|
|
|
|
cmp bx,cx
|
|
|
|
|
ja .exit_fb
|
|
|
|
|
|
|
|
|
|
mov cx,fb_start_y
|
|
|
|
|
cmp ax,cx
|
|
|
|
|
jb .exit_fb
|
|
|
|
|
|
|
|
|
|
add cx,fb_size_y
|
|
|
|
|
cmp ax,cx
|
|
|
|
|
ja .exit_fb
|
2009-10-29 11:50:03 +01:00
|
|
|
|
|
|
|
|
|
cmp fb_mouse_keys,0
|
|
|
|
|
jz @f
|
|
|
|
|
mov fb_select_flag,1
|
|
|
|
|
@@:
|
2009-10-07 20:41:24 +02:00
|
|
|
|
;-------------------------------------------------------
|
|
|
|
|
cmp fb_mouse_keys_delta,1
|
|
|
|
|
je .enter_1
|
|
|
|
|
|
|
|
|
|
cmp fb_mouse_keys,0
|
|
|
|
|
jz .exit_fb
|
|
|
|
|
.start:
|
|
|
|
|
sub ax,fb_start_y
|
|
|
|
|
xor ebx,ebx
|
|
|
|
|
mov bx,fb_line_size_y
|
|
|
|
|
xor edx,edx
|
|
|
|
|
push eax
|
|
|
|
|
div ebx
|
|
|
|
|
pop eax
|
|
|
|
|
sub eax,edx
|
|
|
|
|
xor edx,edx
|
|
|
|
|
cmp fb_select_panel_counter,edx
|
|
|
|
|
jne @f
|
|
|
|
|
mov fb_mouse_keys_delta,0
|
|
|
|
|
jmp .continue
|
|
|
|
|
@@:
|
|
|
|
|
xor edx,edx
|
|
|
|
|
cmp fb_start_draw_cursor_line,ax
|
|
|
|
|
jne @f
|
|
|
|
|
cmp fb_mouse_keys,edx
|
|
|
|
|
jnz .continue
|
|
|
|
|
@@:
|
|
|
|
|
mov fb_mouse_keys_delta,edx
|
|
|
|
|
.continue:
|
|
|
|
|
xor ebx,ebx
|
|
|
|
|
mov bx,fb_line_size_y
|
|
|
|
|
imul ebx,fb_folder_block
|
|
|
|
|
cmp eax,ebx
|
|
|
|
|
jb @f
|
|
|
|
|
xor edx,edx
|
|
|
|
|
mov dx,fb_line_size_y
|
|
|
|
|
sub ebx,edx
|
|
|
|
|
cmp bx,fb_start_draw_cursor_line
|
|
|
|
|
je .enter
|
|
|
|
|
call .store_old_cursor_line
|
|
|
|
|
mov fb_start_draw_cursor_line,bx
|
|
|
|
|
jmp .continue_1
|
|
|
|
|
@@:
|
|
|
|
|
cmp ax,fb_start_draw_cursor_line
|
|
|
|
|
je .enter
|
|
|
|
|
call .store_old_cursor_line
|
|
|
|
|
mov fb_start_draw_cursor_line,ax
|
|
|
|
|
.continue_1:
|
|
|
|
|
test fb_mouse_keys,10b
|
|
|
|
|
jne .mark_mouse
|
|
|
|
|
jmp .enter_1
|
|
|
|
|
.continue_2:
|
|
|
|
|
mov ax,fb_start_draw_cursor_line
|
|
|
|
|
cmp ax,fb_start_draw_cursor_line_2
|
|
|
|
|
je .exit_fb
|
|
|
|
|
|
|
|
|
|
call fb_draw_panel_1
|
|
|
|
|
jmp .exit_fb
|
|
|
|
|
.enter:
|
|
|
|
|
cmp fb_mouse_keys_delta,2
|
|
|
|
|
je .enter_2
|
|
|
|
|
cmp fb_mouse_keys_delta,1
|
|
|
|
|
je .enter_1
|
|
|
|
|
mov eax,fb_mouse_keys_old
|
|
|
|
|
cmp fb_mouse_keys,eax
|
|
|
|
|
jz .exit_fb
|
|
|
|
|
test fb_mouse_keys,10b
|
|
|
|
|
jne .mark_mouse
|
|
|
|
|
xor edx,edx
|
|
|
|
|
inc edx
|
|
|
|
|
mov fb_mouse_keys_delta,edx
|
|
|
|
|
jmp .exit_fb
|
|
|
|
|
.enter_1:
|
2009-11-05 22:31:58 +01:00
|
|
|
|
; mov eax,fb_mouse_keys_old
|
|
|
|
|
; cmp fb_mouse_keys,eax
|
|
|
|
|
; jz .exit_fb
|
2009-10-07 20:41:24 +02:00
|
|
|
|
test fb_mouse_keys,10b
|
|
|
|
|
jne .mark_mouse
|
|
|
|
|
mov edx,2
|
|
|
|
|
mov fb_mouse_keys_delta,edx
|
2020-12-08 22:01:35 +01:00
|
|
|
|
mcall SF_SYSTEM_GET,SSF_TIME_COUNT
|
2009-10-07 20:41:24 +02:00
|
|
|
|
add eax,fb_mouse_key_delay
|
|
|
|
|
mov fb_mouse_keys_tick,eax
|
|
|
|
|
jmp .continue_2
|
|
|
|
|
.enter_2:
|
2020-12-08 22:01:35 +01:00
|
|
|
|
mcall SF_SYSTEM_GET,SSF_TIME_COUNT
|
2009-10-07 20:41:24 +02:00
|
|
|
|
cmp eax,fb_mouse_keys_tick
|
|
|
|
|
ja @f
|
|
|
|
|
; mov eax,fb_mouse_pos_old
|
|
|
|
|
; cmp eax,fb_mouse_pos
|
|
|
|
|
; jne @f
|
|
|
|
|
mov eax,fb_mouse_keys_old
|
|
|
|
|
cmp fb_mouse_keys,eax
|
|
|
|
|
jz @f
|
|
|
|
|
test fb_mouse_keys,10b
|
|
|
|
|
jne .mark_mouse
|
|
|
|
|
call .enter_3
|
|
|
|
|
jmp .exit_fb
|
|
|
|
|
@@:
|
|
|
|
|
xor eax,eax
|
|
|
|
|
inc eax
|
|
|
|
|
mov fb_mouse_keys_delta,eax
|
|
|
|
|
;-------------------------------------------------------
|
|
|
|
|
.exit_fb:
|
2013-07-12 09:08:39 +02:00
|
|
|
|
call fb_prepare_selected_BDVK_adress
|
2009-10-07 20:41:24 +02:00
|
|
|
|
file_browser_exit
|
|
|
|
|
;-------------------------------------------------------
|
2020-12-08 22:01:35 +01:00
|
|
|
|
align 4
|
2009-10-07 20:41:24 +02:00
|
|
|
|
.mark_mouse:
|
|
|
|
|
call fb_key.mark_1
|
|
|
|
|
call fb_draw_panel_1
|
|
|
|
|
xor eax,eax
|
|
|
|
|
mov fb_mouse_keys_delta,eax
|
|
|
|
|
jmp .exit_fb
|
|
|
|
|
;-------------------------------------------------------
|
2020-12-08 22:01:35 +01:00
|
|
|
|
align 4
|
2009-10-07 20:41:24 +02:00
|
|
|
|
.enter_3:
|
|
|
|
|
xor eax,eax
|
|
|
|
|
mov fb_mouse_keys,eax
|
|
|
|
|
mov fb_mouse_keys_old,eax
|
|
|
|
|
mov eax,3
|
|
|
|
|
mov fb_mouse_keys_delta,eax
|
|
|
|
|
xor eax,eax
|
|
|
|
|
mov fb_max_name_temp_size,eax
|
|
|
|
|
ret
|
|
|
|
|
;-------------------------------------------------------
|
2020-12-08 22:01:35 +01:00
|
|
|
|
align 4
|
2009-10-07 20:41:24 +02:00
|
|
|
|
.store_old_cursor_line:
|
|
|
|
|
push eax
|
|
|
|
|
mov ax,fb_start_draw_cursor_line
|
|
|
|
|
mov fb_start_draw_cursor_line_2,ax
|
|
|
|
|
xor eax,eax
|
|
|
|
|
; mov fb_mouse_keys_delta,eax
|
|
|
|
|
pop eax
|
|
|
|
|
ret
|
|
|
|
|
;*****************************************************************************
|
|
|
|
|
;*****************************************************************************
|
2020-12-08 22:01:35 +01:00
|
|
|
|
align 4
|
2013-07-12 09:08:39 +02:00
|
|
|
|
fb_prepare_selected_BDVK_adress:
|
|
|
|
|
xor eax,eax
|
|
|
|
|
mov ax,fb_start_draw_cursor_line
|
|
|
|
|
xor ebx,ebx
|
|
|
|
|
mov bx,fb_line_size_y
|
|
|
|
|
xor edx,edx
|
|
|
|
|
div ebx
|
|
|
|
|
add eax,fb_start_draw_line
|
|
|
|
|
imul eax,304
|
|
|
|
|
add eax,32
|
|
|
|
|
add eax,fb_folder_data
|
|
|
|
|
mov fb_selected_BDVK_adress,eax
|
|
|
|
|
ret
|
|
|
|
|
;*****************************************************************************
|
|
|
|
|
;*****************************************************************************
|
2009-10-07 20:41:24 +02:00
|
|
|
|
; key event
|
|
|
|
|
; 1 - arrow down
|
|
|
|
|
; 2 - arrow up
|
|
|
|
|
; 3 - PageDown
|
|
|
|
|
; 4 - PageUp
|
|
|
|
|
; 5 - Home
|
|
|
|
|
; 6 - End
|
|
|
|
|
; 7 - Enter
|
|
|
|
|
; 8 - Insert (Mark)
|
|
|
|
|
; 9 - Mark All
|
|
|
|
|
; 10 - Unmark All
|
|
|
|
|
; 11 - Invert Mark
|
2013-07-23 00:38:50 +02:00
|
|
|
|
; 12 - Search with key
|
2009-10-07 20:41:24 +02:00
|
|
|
|
;*****************************************************************************
|
|
|
|
|
;*****************************************************************************
|
2020-12-08 22:01:35 +01:00
|
|
|
|
align 4
|
2009-10-07 20:41:24 +02:00
|
|
|
|
fb_key:
|
|
|
|
|
pusha
|
|
|
|
|
mov edi,dword [esp+36]
|
|
|
|
|
;-------------------------------------------------------
|
2013-07-23 00:38:50 +02:00
|
|
|
|
xor eax,eax
|
|
|
|
|
mov ax,fb_key_action
|
2009-10-07 20:41:24 +02:00
|
|
|
|
shl eax,2
|
|
|
|
|
add eax,dword fb_key_table
|
|
|
|
|
cmp eax,fb_key_table.end
|
|
|
|
|
jae .exit_fb
|
|
|
|
|
cmp [eax],dword 0
|
|
|
|
|
je .exit_fb
|
|
|
|
|
jmp dword [eax]
|
|
|
|
|
;-------------------------------------------------------
|
2020-12-08 22:01:35 +01:00
|
|
|
|
align 4
|
2009-10-07 20:41:24 +02:00
|
|
|
|
.arrow_down:
|
|
|
|
|
mov ax,fb_start_draw_cursor_line
|
|
|
|
|
add ax,fb_line_size_y
|
|
|
|
|
add ax,fb_line_size_y
|
|
|
|
|
cmp ax,word fb_size_y
|
2009-10-15 18:53:53 +02:00
|
|
|
|
ja @f
|
2009-10-07 20:41:24 +02:00
|
|
|
|
.add_1:
|
|
|
|
|
call fb_mouse.store_old_cursor_line
|
|
|
|
|
mov ax,fb_start_draw_cursor_line
|
|
|
|
|
add ax,fb_line_size_y
|
|
|
|
|
mov fb_start_draw_cursor_line,ax
|
|
|
|
|
call fb_draw_panel_1
|
|
|
|
|
jmp .exit_fb
|
|
|
|
|
@@:
|
|
|
|
|
mov eax,fb_folder_block
|
|
|
|
|
sub eax,fb_max_panel_line
|
|
|
|
|
test eax,0x80000000
|
|
|
|
|
jnz .page_down_2
|
|
|
|
|
|
|
|
|
|
call .prepare_data_down
|
|
|
|
|
ja @f
|
|
|
|
|
|
|
|
|
|
cmp fb_start_draw_line,eax
|
|
|
|
|
je .exit_fb
|
|
|
|
|
@@:
|
|
|
|
|
inc fb_start_draw_line
|
|
|
|
|
call fb_draw_panel_3
|
|
|
|
|
jmp .exit_fb
|
|
|
|
|
;-------------------------------------------------------
|
2020-12-08 22:01:35 +01:00
|
|
|
|
align 4
|
2009-10-07 20:41:24 +02:00
|
|
|
|
.arrow_up:
|
|
|
|
|
mov ax,fb_start_draw_cursor_line
|
|
|
|
|
add ax,fb_start_y
|
|
|
|
|
cmp fb_start_y,ax
|
|
|
|
|
je @f
|
|
|
|
|
call fb_mouse.store_old_cursor_line
|
|
|
|
|
mov ax,fb_start_draw_cursor_line
|
|
|
|
|
sub ax,fb_line_size_y
|
|
|
|
|
mov fb_start_draw_cursor_line,ax
|
|
|
|
|
call fb_draw_panel_1
|
|
|
|
|
jmp .exit_fb
|
|
|
|
|
@@:
|
|
|
|
|
cmp fb_start_draw_line,0
|
|
|
|
|
je .exit_fb
|
|
|
|
|
dec fb_start_draw_line
|
|
|
|
|
call fb_draw_panel_3
|
|
|
|
|
jmp .exit_fb
|
|
|
|
|
;-------------------------------------------------------
|
2020-12-08 22:01:35 +01:00
|
|
|
|
align 4
|
2009-10-07 20:41:24 +02:00
|
|
|
|
.page_down:
|
|
|
|
|
mov eax,fb_max_panel_line
|
|
|
|
|
mov ebx,fb_folder_block
|
|
|
|
|
sub ebx,eax
|
|
|
|
|
test ebx,0x80000000
|
|
|
|
|
jnz .page_down_2
|
|
|
|
|
sub ebx,fb_start_draw_line
|
|
|
|
|
cmp ebx,eax
|
|
|
|
|
ja .page_down_3
|
|
|
|
|
mov ebx,fb_folder_block
|
|
|
|
|
sub ebx,eax
|
|
|
|
|
call .prepare_data_down
|
|
|
|
|
ja @f
|
|
|
|
|
cmp ebx,fb_start_draw_line
|
|
|
|
|
je .exit_fb
|
|
|
|
|
@@:
|
|
|
|
|
mov fb_start_draw_line,ebx
|
|
|
|
|
.page_down_0:
|
|
|
|
|
dec eax
|
|
|
|
|
xor ebx,ebx
|
|
|
|
|
mov bx,fb_line_size_y
|
|
|
|
|
imul eax,ebx
|
|
|
|
|
.page_down_1:
|
|
|
|
|
call fb_mouse.store_old_cursor_line
|
|
|
|
|
mov fb_start_draw_cursor_line,ax
|
|
|
|
|
call fb_draw_panel_2
|
|
|
|
|
jmp .exit_fb
|
|
|
|
|
.page_down_2:
|
|
|
|
|
mov eax,fb_folder_block
|
|
|
|
|
sub eax,fb_start_draw_line
|
|
|
|
|
dec eax
|
|
|
|
|
xor ebx,ebx
|
|
|
|
|
mov bx,fb_line_size_y
|
|
|
|
|
imul eax,ebx
|
|
|
|
|
cmp ax,fb_start_draw_cursor_line
|
|
|
|
|
jbe .exit_fb
|
|
|
|
|
jmp .page_down_1
|
|
|
|
|
.page_down_3:
|
|
|
|
|
add fb_start_draw_line,eax
|
|
|
|
|
call fb_draw_panel_2
|
|
|
|
|
jmp .exit_fb
|
|
|
|
|
;-------------------------------------------------------
|
2020-12-08 22:01:35 +01:00
|
|
|
|
align 4
|
2009-10-07 20:41:24 +02:00
|
|
|
|
.prepare_data_down:
|
|
|
|
|
mov ecx,fb_folder_block
|
|
|
|
|
sub ecx,fb_start_draw_line
|
|
|
|
|
dec ecx
|
|
|
|
|
xor edx,edx
|
|
|
|
|
mov dx,fb_line_size_y
|
|
|
|
|
imul ecx,edx
|
|
|
|
|
cmp cx,fb_start_draw_cursor_line
|
|
|
|
|
ret
|
|
|
|
|
;-------------------------------------------------------
|
2020-12-08 22:01:35 +01:00
|
|
|
|
align 4
|
2009-10-07 20:41:24 +02:00
|
|
|
|
.page_up:
|
|
|
|
|
mov eax,fb_max_panel_line
|
|
|
|
|
mov ebx,fb_start_draw_line
|
|
|
|
|
sub ebx,eax
|
2010-08-24 22:12:25 +02:00
|
|
|
|
test ebx,0x80000000
|
2009-10-07 20:41:24 +02:00
|
|
|
|
jz @f
|
|
|
|
|
cmp fb_start_draw_line,0
|
|
|
|
|
jne .page_up_1
|
|
|
|
|
cmp fb_start_draw_cursor_line,0
|
|
|
|
|
je .exit_fb
|
|
|
|
|
mov fb_start_draw_cursor_line,0
|
|
|
|
|
.page_up_1:
|
|
|
|
|
mov fb_start_draw_line,0
|
|
|
|
|
call fb_draw_panel_2
|
|
|
|
|
jmp .exit_fb
|
|
|
|
|
@@:
|
|
|
|
|
sub fb_start_draw_line,eax
|
|
|
|
|
call fb_draw_panel_2
|
|
|
|
|
jmp .exit_fb
|
|
|
|
|
;-------------------------------------------------------
|
2020-12-08 22:01:35 +01:00
|
|
|
|
align 4
|
2009-10-07 20:41:24 +02:00
|
|
|
|
.home:
|
|
|
|
|
cmp fb_start_draw_line,0
|
|
|
|
|
jne @f
|
|
|
|
|
cmp fb_start_draw_cursor_line,0
|
|
|
|
|
je .exit_fb
|
|
|
|
|
@@:
|
|
|
|
|
mov fb_start_draw_line,0
|
|
|
|
|
mov fb_start_draw_cursor_line,0
|
|
|
|
|
call fb_mouse.store_old_cursor_line
|
|
|
|
|
call fb_draw_panel_2
|
|
|
|
|
jmp .exit_fb
|
|
|
|
|
;-------------------------------------------------------
|
2020-12-08 22:01:35 +01:00
|
|
|
|
align 4
|
2009-10-07 20:41:24 +02:00
|
|
|
|
.end:
|
|
|
|
|
mov eax,fb_folder_block
|
|
|
|
|
sub eax,fb_max_panel_line
|
|
|
|
|
test eax,0x80000000
|
|
|
|
|
jnz .page_down_2
|
|
|
|
|
call .prepare_data_down
|
|
|
|
|
ja @f
|
|
|
|
|
cmp eax,fb_start_draw_line
|
|
|
|
|
je .exit_fb
|
|
|
|
|
@@:
|
|
|
|
|
mov fb_start_draw_line,eax
|
|
|
|
|
mov eax,fb_max_panel_line
|
|
|
|
|
jmp .page_down_0
|
|
|
|
|
;-------------------------------------------------------
|
2020-12-08 22:01:35 +01:00
|
|
|
|
align 4
|
2009-10-07 20:41:24 +02:00
|
|
|
|
.enter:
|
|
|
|
|
call fb_mouse.enter_3
|
|
|
|
|
jmp .exit_fb
|
|
|
|
|
;-------------------------------------------------------
|
2020-12-08 22:01:35 +01:00
|
|
|
|
align 4
|
2009-10-07 20:41:24 +02:00
|
|
|
|
.mark:
|
|
|
|
|
call .mark_1
|
|
|
|
|
jmp .arrow_down
|
|
|
|
|
;-------------------------------------------------------
|
2020-12-08 22:01:35 +01:00
|
|
|
|
align 4
|
2009-10-07 20:41:24 +02:00
|
|
|
|
.mark_1:
|
2013-11-03 15:43:13 +01:00
|
|
|
|
mov eax,fb_folder_block
|
|
|
|
|
test eax,eax
|
|
|
|
|
jz .exit
|
|
|
|
|
|
2009-10-07 20:41:24 +02:00
|
|
|
|
xor eax,eax
|
|
|
|
|
mov ax,fb_start_draw_cursor_line
|
|
|
|
|
xor edx,edx
|
|
|
|
|
xor ebx,ebx
|
|
|
|
|
mov bx,fb_line_size_y
|
|
|
|
|
div ebx
|
|
|
|
|
mov esi,fb_start_draw_line
|
|
|
|
|
add esi,eax
|
|
|
|
|
imul esi,304
|
|
|
|
|
add esi,fb_folder_data
|
|
|
|
|
|
|
|
|
|
add esi,32+299
|
|
|
|
|
mov al,[esi]
|
|
|
|
|
and al,1
|
|
|
|
|
|
|
|
|
|
test al,al
|
|
|
|
|
jnz @f
|
|
|
|
|
inc fb_marked_counter
|
|
|
|
|
jmp .mark_2
|
|
|
|
|
@@:
|
|
|
|
|
dec fb_marked_counter
|
|
|
|
|
.mark_2:
|
|
|
|
|
mov al,[esi]
|
|
|
|
|
inc al
|
|
|
|
|
and al,1
|
|
|
|
|
mov [esi],al
|
2013-11-03 15:43:13 +01:00
|
|
|
|
.exit:
|
2009-10-07 20:41:24 +02:00
|
|
|
|
ret
|
|
|
|
|
;-------------------------------------------------------
|
2020-12-08 22:01:35 +01:00
|
|
|
|
align 4
|
2009-10-07 20:41:24 +02:00
|
|
|
|
.mark_all:
|
2013-11-03 16:00:11 +01:00
|
|
|
|
mov eax,fb_folder_block
|
|
|
|
|
test eax,eax
|
|
|
|
|
jz .exit_fb
|
|
|
|
|
|
2009-10-07 20:41:24 +02:00
|
|
|
|
mov fb_temp_counter,0
|
|
|
|
|
.mark_all_1:
|
|
|
|
|
mov ebp,fb_folder_block
|
|
|
|
|
.mark_all_2:
|
|
|
|
|
mov ebx,ebp
|
|
|
|
|
dec ebx
|
|
|
|
|
imul ebx,304
|
|
|
|
|
add ebx,fb_folder_data
|
|
|
|
|
add ebx,32+40
|
|
|
|
|
cmp [ebx],word '..'
|
|
|
|
|
jne .mark_all_3
|
|
|
|
|
cmp [ebx+2],byte 0
|
|
|
|
|
je @f
|
|
|
|
|
.mark_all_3:
|
|
|
|
|
call .select_mark_action
|
|
|
|
|
@@:
|
|
|
|
|
dec ebp
|
|
|
|
|
jnz .mark_all_2
|
|
|
|
|
|
|
|
|
|
call fb_draw_panel_3
|
|
|
|
|
cmp fb_temp_counter,0
|
|
|
|
|
jne @f
|
|
|
|
|
mov eax,fb_folder_block
|
|
|
|
|
jmp .mark_all_4
|
|
|
|
|
@@:
|
|
|
|
|
cmp fb_temp_counter,1
|
|
|
|
|
jne @f
|
|
|
|
|
mov fb_marked_counter,0
|
|
|
|
|
jmp .exit_fb
|
|
|
|
|
@@:
|
|
|
|
|
mov eax,fb_folder_block
|
|
|
|
|
sub eax,fb_marked_counter
|
|
|
|
|
.mark_all_4:
|
|
|
|
|
dec eax
|
|
|
|
|
mov fb_marked_counter,eax
|
|
|
|
|
jmp .exit_fb
|
|
|
|
|
;-------------------------------------------------------
|
2020-12-08 22:01:35 +01:00
|
|
|
|
align 4
|
2009-10-07 20:41:24 +02:00
|
|
|
|
.select_mark_action:
|
|
|
|
|
add ebx,299-40
|
|
|
|
|
cmp fb_temp_counter,0
|
|
|
|
|
jne @f
|
|
|
|
|
mov [ebx],byte 1
|
|
|
|
|
jmp .select_mark_action_1
|
|
|
|
|
@@:
|
|
|
|
|
cmp fb_temp_counter,1
|
|
|
|
|
jne @f
|
|
|
|
|
mov [ebx],byte 0
|
|
|
|
|
jmp .select_mark_action_1
|
|
|
|
|
@@:
|
|
|
|
|
mov al,[ebx]
|
|
|
|
|
inc al
|
|
|
|
|
and al,1
|
|
|
|
|
mov [ebx],al
|
|
|
|
|
.select_mark_action_1:
|
|
|
|
|
ret
|
|
|
|
|
;-------------------------------------------------------
|
2020-12-08 22:01:35 +01:00
|
|
|
|
align 4
|
2009-10-07 20:41:24 +02:00
|
|
|
|
.unmark_all:
|
2013-11-03 16:00:11 +01:00
|
|
|
|
mov eax,fb_folder_block
|
|
|
|
|
test eax,eax
|
|
|
|
|
jz .exit_fb
|
|
|
|
|
|
2009-10-07 20:41:24 +02:00
|
|
|
|
mov fb_temp_counter,1
|
|
|
|
|
jmp .mark_all_1
|
|
|
|
|
;-------------------------------------------------------
|
2020-12-08 22:01:35 +01:00
|
|
|
|
align 4
|
2009-10-07 20:41:24 +02:00
|
|
|
|
.invert_mark:
|
2013-11-03 16:00:11 +01:00
|
|
|
|
mov eax,fb_folder_block
|
|
|
|
|
test eax,eax
|
|
|
|
|
jz .exit_fb
|
|
|
|
|
|
2009-10-07 20:41:24 +02:00
|
|
|
|
mov fb_temp_counter,2
|
|
|
|
|
jmp .mark_all_1
|
|
|
|
|
;-------------------------------------------------------
|
2013-07-23 00:38:50 +02:00
|
|
|
|
; * bit 0 (mask 1): left Shift is pressed
|
|
|
|
|
; * bit 1 (mask 2): right Shift is pressed
|
|
|
|
|
; * bit 2 (mask 4): left Ctrl is pressed
|
|
|
|
|
; * bit 3 (mask 8): right Ctrl is pressed
|
|
|
|
|
; * bit 4 (mask 0x10): left Alt is pressed
|
|
|
|
|
; * bit 5 (mask 0x20): right Alt is pressed
|
|
|
|
|
; * bit 6 (mask 0x40): CapsLock is on
|
|
|
|
|
; * bit 7 (mask 0x80): NumLock is on
|
|
|
|
|
; * bit 8 (mask 0x100): ScrollLock is on
|
|
|
|
|
; * bit 9 (mask 0x200): left Win is pressed
|
|
|
|
|
; * bit 10 (mask 0x400): right Win is pressed
|
|
|
|
|
;-------------------------------------------------------
|
2020-12-08 22:01:35 +01:00
|
|
|
|
align 4
|
2013-07-23 00:38:50 +02:00
|
|
|
|
.search_with_key:
|
2020-12-08 22:01:35 +01:00
|
|
|
|
mcall SF_BOARD,SSF_GET_CONTROL_KEYS
|
2013-07-23 00:38:50 +02:00
|
|
|
|
test al,11b
|
|
|
|
|
jnz .shift_layout
|
|
|
|
|
|
|
|
|
|
test al,110000b
|
|
|
|
|
jnz .alt_layout
|
|
|
|
|
|
|
|
|
|
mov ecx,1 ; Normal
|
|
|
|
|
jmp .get_keyboard_layout
|
|
|
|
|
|
|
|
|
|
.shift_layout:
|
|
|
|
|
mov ecx,2 ; Shift
|
|
|
|
|
jmp .get_keyboard_layout
|
|
|
|
|
|
|
|
|
|
.alt_layout:
|
|
|
|
|
mov ecx,3 ; Alt
|
|
|
|
|
.get_keyboard_layout:
|
2020-12-08 22:01:35 +01:00
|
|
|
|
mcall SF_SYSTEM_GET,SSF_KEYBOARD_LAYOUT,,fb_keymap_pointer
|
2013-07-23 00:38:50 +02:00
|
|
|
|
xor eax,eax
|
|
|
|
|
mov ax,fb_key_action_num
|
|
|
|
|
add eax,fb_keymap_pointer
|
|
|
|
|
mov al,[eax]
|
|
|
|
|
and eax,0xff
|
|
|
|
|
call fb_char_todown
|
|
|
|
|
mov ah,al
|
|
|
|
|
xor esi,esi
|
|
|
|
|
push eax
|
|
|
|
|
movzx eax,fb_start_draw_cursor_line
|
|
|
|
|
movzx ebx,fb_line_size_y
|
|
|
|
|
xor edx,edx
|
|
|
|
|
div ebx
|
|
|
|
|
add si,ax ;fb_start_draw_cursor_line
|
|
|
|
|
pop eax
|
|
|
|
|
add esi,fb_start_draw_line
|
|
|
|
|
mov ecx,esi
|
|
|
|
|
xor ebx,ebx
|
|
|
|
|
inc ecx
|
|
|
|
|
cmp ecx,fb_folder_block
|
|
|
|
|
ja .reset_data
|
|
|
|
|
|
|
|
|
|
.first_entry:
|
|
|
|
|
imul esi,304
|
|
|
|
|
add esi,fb_folder_data
|
|
|
|
|
add esi,40+32
|
|
|
|
|
@@:
|
|
|
|
|
add esi,304
|
|
|
|
|
mov al,[esi]
|
|
|
|
|
call fb_char_todown
|
|
|
|
|
cmp ah,al
|
|
|
|
|
je .match
|
|
|
|
|
|
|
|
|
|
inc ecx
|
|
|
|
|
cmp ecx,fb_folder_block
|
|
|
|
|
jb @b
|
|
|
|
|
|
|
|
|
|
.reset_data:
|
|
|
|
|
xor esi,esi
|
|
|
|
|
|
|
|
|
|
dec esi
|
|
|
|
|
cmp ebx,2
|
|
|
|
|
jae .exit_fb
|
|
|
|
|
|
|
|
|
|
xor ecx,ecx
|
|
|
|
|
inc ebx
|
|
|
|
|
jmp .first_entry
|
|
|
|
|
|
|
|
|
|
.match:
|
|
|
|
|
mov fb_start_draw_line,ecx
|
|
|
|
|
mov eax,fb_folder_block
|
|
|
|
|
mov ebx,fb_max_panel_line
|
|
|
|
|
sub eax,ebx
|
|
|
|
|
jbe .1
|
|
|
|
|
|
|
|
|
|
cmp eax,ecx
|
|
|
|
|
jbe @f
|
|
|
|
|
|
|
|
|
|
xor ecx,ecx
|
|
|
|
|
jmp .2
|
|
|
|
|
@@:
|
|
|
|
|
mov fb_start_draw_line,eax
|
|
|
|
|
mov eax,fb_folder_block
|
|
|
|
|
sub eax,ecx
|
|
|
|
|
|
|
|
|
|
mov ecx,fb_max_panel_line
|
|
|
|
|
sub ecx,eax
|
|
|
|
|
jmp .2
|
|
|
|
|
|
|
|
|
|
.1:
|
|
|
|
|
xor eax,eax
|
|
|
|
|
mov fb_start_draw_line,eax
|
|
|
|
|
.2:
|
|
|
|
|
movzx eax,fb_line_size_y
|
|
|
|
|
imul ecx,eax
|
|
|
|
|
mov fb_start_draw_cursor_line,cx
|
|
|
|
|
call fb_draw_panel_2
|
|
|
|
|
;-------------------------------------------------------
|
2009-10-07 20:41:24 +02:00
|
|
|
|
.exit_fb:
|
2013-07-12 09:08:39 +02:00
|
|
|
|
call fb_prepare_selected_BDVK_adress
|
2009-10-07 20:41:24 +02:00
|
|
|
|
file_browser_exit
|
|
|
|
|
;-------------------------------------------------------
|
2020-12-08 22:01:35 +01:00
|
|
|
|
align 4
|
2009-10-07 20:41:24 +02:00
|
|
|
|
fb_key_table:
|
|
|
|
|
dd 0
|
|
|
|
|
dd fb_key.arrow_down ; 1
|
|
|
|
|
dd fb_key.arrow_up ; 2
|
|
|
|
|
dd fb_key.page_down ; 3
|
|
|
|
|
dd fb_key.page_up ; 4
|
|
|
|
|
dd fb_key.home ; 5
|
|
|
|
|
dd fb_key.end ; 6
|
|
|
|
|
dd fb_key.enter ; 7
|
|
|
|
|
dd fb_key.mark ; 8
|
|
|
|
|
dd fb_key.mark_all ; 9
|
|
|
|
|
dd fb_key.unmark_all ; 10
|
|
|
|
|
dd fb_key.invert_mark ; 11
|
2013-07-23 00:38:50 +02:00
|
|
|
|
dd fb_key.search_with_key ; 12
|
2009-10-07 20:41:24 +02:00
|
|
|
|
.end:
|
|
|
|
|
dd 0
|
|
|
|
|
;-------------------------------------------------------
|
2020-12-08 22:01:35 +01:00
|
|
|
|
align 4
|
2009-10-07 20:41:24 +02:00
|
|
|
|
fb_draw_panel_3:
|
|
|
|
|
mov eax,2
|
|
|
|
|
mov fb_all_redraw,eax
|
2013-07-23 00:38:50 +02:00
|
|
|
|
jmp fb_draw_panel_2.1
|
2020-12-08 22:01:35 +01:00
|
|
|
|
align 4
|
2009-10-07 20:41:24 +02:00
|
|
|
|
fb_draw_panel_2:
|
|
|
|
|
xor eax,eax
|
|
|
|
|
inc eax
|
|
|
|
|
mov fb_all_redraw,eax
|
|
|
|
|
call fb_draw_panel_selection
|
2013-07-23 00:38:50 +02:00
|
|
|
|
.1:
|
2009-10-07 20:41:24 +02:00
|
|
|
|
call fb_draw_folder_data
|
|
|
|
|
xor eax,eax
|
|
|
|
|
mov fb_all_redraw,eax
|
|
|
|
|
inc eax
|
|
|
|
|
mov fb_draw_scroll_bar,eax
|
|
|
|
|
ret
|
|
|
|
|
|