Rev 9682 | Rev 9728 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 9682 | Rev 9690 | ||
---|---|---|---|
1 | ;***************************************************************************** |
1 | ;***************************************************************************** |
2 | ; File Browser control for Kolibri OS |
2 | ; File Browser control for Kolibri OS |
3 | ; Copyright (c) 2009-2013, Marat Zakiyanov aka Mario79, aka Mario |
3 | ; Copyright (c) 2009-2013, Marat Zakiyanov aka Mario79, aka Mario |
4 | ; All rights reserved. |
4 | ; All rights reserved. |
5 | ; |
5 | ; |
6 | ; Redistribution and use in source and binary forms, with or without |
6 | ; Redistribution and use in source and binary forms, with or without |
7 | ; modification, are permitted provided that the following conditions are met: |
7 | ; modification, are permitted provided that the following conditions are met: |
8 | ; * Redistributions of source code must retain the above copyright |
8 | ; * Redistributions of source code must retain the above copyright |
9 | ; notice, this list of conditions and the following disclaimer. |
9 | ; notice, this list of conditions and the following disclaimer. |
10 | ; * Redistributions in binary form must reproduce the above copyright |
10 | ; * Redistributions in binary form must reproduce the above copyright |
11 | ; notice, this list of conditions and the following disclaimer in the |
11 | ; notice, this list of conditions and the following disclaimer in the |
12 | ; documentation and/or other materials provided with the distribution. |
12 | ; documentation and/or other materials provided with the distribution. |
13 | ; * Neither the name of the |
13 | ; * Neither the name of the |
14 | ; names of its contributors may be used to endorse or promote products |
14 | ; names of its contributors may be used to endorse or promote products |
15 | ; derived from this software without specific prior written permission. |
15 | ; derived from this software without specific prior written permission. |
16 | ; |
16 | ; |
17 | ; THIS SOFTWARE IS PROVIDED BY Marat Zakiyanov ''AS IS'' AND ANY |
17 | ; THIS SOFTWARE IS PROVIDED BY Marat Zakiyanov ''AS IS'' AND ANY |
18 | ; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
18 | ; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
19 | ; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
19 | ; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
20 | ; DISCLAIMED. IN NO EVENT SHALL |
20 | ; DISCLAIMED. IN NO EVENT SHALL |
21 | ; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
21 | ; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
22 | ; (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
22 | ; (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
23 | ; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
23 | ; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
24 | ; ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
24 | ; ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
25 | ; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
25 | ; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
26 | ; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
26 | ; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
27 | ;***************************************************************************** |
27 | ;***************************************************************************** |
28 | ;***************************************************************************** |
28 | ;***************************************************************************** |
29 | macro file_browser_exit |
29 | macro file_browser_exit |
30 | { |
30 | { |
31 | popa |
31 | popa |
32 | ret 4 |
32 | ret 4 |
33 | } |
33 | } |
34 | ;***************************************************************************** |
34 | ;***************************************************************************** |
35 | fb_type equ dword [edi] ;dword |
35 | fb_type equ dword [edi] ;dword |
36 | fb_size_x equ [edi+4] ;word |
36 | fb_size_x equ [edi+4] ;word |
37 | fb_start_x equ [edi+6] ;word |
37 | fb_start_x equ [edi+6] ;word |
38 | fb_size_y equ [edi+8] ;word |
38 | fb_size_y equ [edi+8] ;word |
39 | fb_start_y equ [edi+10] ;word |
39 | fb_start_y equ [edi+10] ;word |
40 | fb_icon_size_y equ word [edi+12] ;word |
40 | fb_icon_size_y equ word [edi+12] ;word |
41 | fb_icon_size_x equ word [edi+14] ;word |
41 | fb_icon_size_x equ word [edi+14] ;word |
42 | fb_line_size_x equ word [edi+16] ;word |
42 | fb_line_size_x equ word [edi+16] ;word |
43 | fb_line_size_y equ word [edi+18] ;word |
43 | fb_line_size_y equ word [edi+18] ;word |
44 | fb_type_size_x equ word [edi+20] ;word |
44 | fb_type_size_x equ word [edi+20] ;word |
45 | fb_size_size_x equ word [edi+22] ;word |
45 | fb_size_size_x equ word [edi+22] ;word |
46 | fb_date_size_x equ word [edi+24] ;word |
46 | fb_date_size_x equ word [edi+24] ;word |
47 | fb_attributes_size_x equ word [edi+26] ;word |
47 | fb_attributes_size_x equ word [edi+26] ;word |
48 | fb_icon_assoc_area equ dword [edi+28] ;dword |
48 | fb_icon_assoc_area equ dword [edi+28] ;dword |
49 | fb_icon_raw_area equ dword [edi+32] ;dword |
49 | fb_icon_raw_area equ dword [edi+32] ;dword |
50 | fb_resolution_raw equ dword [edi+36] ;dword |
50 | fb_resolution_raw equ dword [edi+36] ;dword |
51 | fb_palette_raw equ dword [edi+40] ;dword |
51 | fb_palette_raw equ dword [edi+40] ;dword |
52 | fb_directory_path_area equ dword [edi+44] ;dword |
52 | fb_directory_path_area equ dword [edi+44] ;dword |
53 | fb_file_name_area equ dword [edi+48] ;dword |
53 | fb_file_name_area equ dword [edi+48] ;dword |
54 | fb_select_flag equ dword [edi+52] ;dword |
54 | fb_select_flag equ dword [edi+52] ;dword |
55 | fb_background_color equ dword [edi+56] ;dword |
55 | fb_background_color equ dword [edi+56] ;dword |
56 | fb_select_color equ dword [edi+60] ;dword |
56 | fb_select_color equ dword [edi+60] ;dword |
57 | fb_seclect_text_color equ dword [edi+64] ;dword |
57 | fb_seclect_text_color equ dword [edi+64] ;dword |
58 | fb_text_color equ dword [edi+68] ;dword |
58 | fb_text_color equ dword [edi+68] ;dword |
59 | fb_reduct_text_color equ dword [edi+72] ;dword |
59 | fb_reduct_text_color equ dword [edi+72] ;dword |
60 | fb_marked_text_color equ dword [edi+76] ;dword |
60 | fb_marked_text_color equ dword [edi+76] ;dword |
61 | fb_max_panel_line equ dword [edi+80] ;dword |
61 | fb_max_panel_line equ dword [edi+80] ;dword |
62 | fb_select_panel_counter equ dword [edi+84] ;dword |
62 | fb_select_panel_counter equ dword [edi+84] ;dword |
63 | fb_folder_block equ dword [edi+88] ;dword |
63 | fb_folder_block equ dword [edi+88] ;dword |
64 | fb_start_draw_line equ dword [edi+92] ;dword |
64 | fb_start_draw_line equ dword [edi+92] ;dword |
65 | fb_start_draw_cursor_line equ word [edi+96] ;word |
65 | fb_start_draw_cursor_line equ word [edi+96] ;word |
66 | fb_folder_data equ dword [edi+98] ;dword |
66 | fb_folder_data equ dword [edi+98] ;dword |
67 | fb_temp_counter equ dword [edi+102] ;dword |
67 | fb_temp_counter equ dword [edi+102] ;dword |
68 | fb_file_name_length equ dword [edi+106] ;dword |
68 | fb_file_name_length equ dword [edi+106] ;dword |
69 | fb_marked_file equ dword [edi+110] ;dword |
69 | fb_marked_file equ dword [edi+110] ;dword |
70 | fb_extension_size equ dword [edi+114] ;dword |
70 | fb_extension_size equ dword [edi+114] ;dword |
71 | fb_extension_start equ dword [edi+118] ;dword |
71 | fb_extension_start equ dword [edi+118] ;dword |
72 | fb_type_table equ dword [edi+122] ;dword |
72 | fb_type_table equ dword [edi+122] ;dword |
73 | fb_ini_file_start equ dword [edi+126] ;dword |
73 | fb_ini_file_start equ dword [edi+126] ;dword |
74 | fb_ini_file_end equ dword [edi+130] ;dword |
74 | fb_ini_file_end equ dword [edi+130] ;dword |
75 | fb_draw_scroll_bar equ dword [edi+134] ;dword |
75 | fb_draw_scroll_bar equ dword [edi+134] ;dword |
76 | fb_font_size_y equ word [edi+138] ;dword |
76 | fb_font_size_y equ word [edi+138] ;dword |
77 | fb_font_size_x equ word [edi+140] ;dword |
77 | fb_font_size_x equ word [edi+140] ;dword |
78 | fb_mouse_keys equ dword [edi+142] ;dword |
78 | fb_mouse_keys equ dword [edi+142] ;dword |
79 | fb_mouse_keys_old equ dword [edi+146] ;dword |
79 | fb_mouse_keys_old equ dword [edi+146] ;dword |
80 | fb_mouse_pos equ dword [edi+150] ;dword |
80 | fb_mouse_pos equ dword [edi+150] ;dword |
81 | fb_mouse_keys_delta equ dword [edi+154] ;dword |
81 | fb_mouse_keys_delta equ dword [edi+154] ;dword |
82 | fb_mouse_key_delay equ dword [edi+158] ;dword |
82 | fb_mouse_key_delay equ dword [edi+158] ;dword |
83 | fb_mouse_keys_tick equ dword [edi+162] ;dword |
83 | fb_mouse_keys_tick equ dword [edi+162] ;dword |
84 | fb_start_draw_cursor_line_2 equ word [edi+166] ;dword |
84 | fb_start_draw_cursor_line_2 equ word [edi+166] ;dword |
85 | fb_all_redraw equ dword [edi+168] ;dword |
85 | fb_all_redraw equ dword [edi+168] ;dword |
86 | fb_selected_BDVK_adress equ dword [edi+172] ;dword |
86 | fb_selected_BDVK_adress equ dword [edi+172] ;dword |
87 | fb_key_action equ word [edi+176] ;word |
87 | fb_key_action equ word [edi+176] ;word |
88 | fb_key_action_num equ word [edi+178] ;word |
88 | fb_key_action_num equ word [edi+178] ;word |
89 | fb_name_temp_area equ dword [edi+180] ;dword |
89 | fb_name_temp_area equ dword [edi+180] ;dword |
90 | fb_max_name_temp_size equ dword [edi+184] ;dword |
90 | fb_max_name_temp_size equ dword [edi+184] ;dword |
91 | fb_display_name_max_length equ dword [edi+188] ;dword |
91 | fb_display_name_max_length equ dword [edi+188] ;dword |
92 | fb_draw_panel_selection_flag equ dword [edi+192] ;dword |
92 | fb_draw_panel_selection_flag equ dword [edi+192] ;dword |
93 | fb_mouse_pos_old equ dword [edi+196] ;dword |
93 | fb_mouse_pos_old equ dword [edi+196] ;dword |
94 | fb_marked_counter equ dword [edi+200] ;dword |
94 | fb_marked_counter equ dword [edi+200] ;dword |
95 | fb_keymap_pointer equ dword [edi+204] ;dword |
95 | fb_keymap_pointer equ dword [edi+204] ;dword |
96 | ;--------------------------------------------------------------------- |
96 | ;--------------------------------------------------------------------- |
97 | align 16 |
97 | align 16 |
98 | fb_draw_panel: |
98 | fb_draw_panel: |
99 | pusha |
99 | pusha |
100 | mov edi,dword [esp+36] |
100 | mov edi,dword [esp+36] |
101 | call fb_clear_panel |
101 | call fb_clear_panel |
102 | call fb_calc_max_panel_line |
102 | call fb_calc_max_panel_line |
103 | call fb_calc_folder_sysdata |
103 | call fb_calc_folder_sysdata |
104 | call fb_draw_panel_selection |
104 | call fb_draw_panel_selection |
105 | call fb_draw_folder_data |
105 | call fb_draw_folder_data |
106 | call fb_prepare_selected_BDVK_adress |
106 | call fb_prepare_selected_BDVK_adress |
107 | file_browser_exit |
107 | file_browser_exit |
108 | ;--------------------------------------------------------------------- |
108 | ;--------------------------------------------------------------------- |
109 | fb_draw_panel_1: |
109 | fb_draw_panel_1: |
110 | pusha |
110 | pusha |
111 | mov eax,fb_select_color |
111 | mov eax,fb_select_color |
112 | push eax |
112 | push eax |
113 | mov eax,fb_seclect_text_color |
113 | mov eax,fb_seclect_text_color |
114 | push eax |
114 | push eax |
115 | mov ax,fb_start_draw_cursor_line |
115 | mov ax,fb_start_draw_cursor_line |
116 | push eax |
116 | push eax |
117 | mov eax,fb_background_color |
117 | mov eax,fb_background_color |
118 | mov fb_select_color,eax |
118 | mov fb_select_color,eax |
119 | mov eax,fb_text_color |
119 | mov eax,fb_text_color |
120 | mov fb_seclect_text_color,eax |
120 | mov fb_seclect_text_color,eax |
121 | mov ax,fb_start_draw_cursor_line_2 |
121 | mov ax,fb_start_draw_cursor_line_2 |
122 | mov fb_start_draw_cursor_line,ax |
122 | mov fb_start_draw_cursor_line,ax |
123 | call fb_draw_panel_selection |
123 | call fb_draw_panel_selection |
124 | pop eax |
124 | pop eax |
125 | mov fb_start_draw_cursor_line,ax |
125 | mov fb_start_draw_cursor_line,ax |
126 | pop eax |
126 | pop eax |
127 | mov fb_seclect_text_color,eax |
127 | mov fb_seclect_text_color,eax |
128 | pop eax |
128 | pop eax |
129 | mov fb_select_color,eax |
129 | mov fb_select_color,eax |
130 | call fb_draw_panel_selection |
130 | call fb_draw_panel_selection |
131 | call fb_draw_folder_data |
131 | call fb_draw_folder_data |
132 | popa |
132 | popa |
133 | ret |
133 | ret |
134 | ;--------------------------------------------------------------------- |
134 | ;--------------------------------------------------------------------- |
135 | align 4 |
135 | align 4 |
136 | fb_clear_panel: |
136 | fb_clear_panel: |
137 | cmp fb_all_redraw,1 |
137 | cmp fb_all_redraw,1 |
138 | jne @f |
138 | jne @f |
139 | xor eax,eax |
139 | xor eax,eax |
140 | mov fb_max_name_temp_size,eax |
140 | mov fb_max_name_temp_size,eax |
141 | @@: |
141 | @@: |
142 | ret |
142 | ret |
143 | ;--------------------------------------------------------------------- |
143 | ;--------------------------------------------------------------------- |
144 | align 4 |
144 | align 4 |
145 | fb_calc_folder_sysdata: |
145 | fb_calc_folder_sysdata: |
146 | mov eax,fb_folder_data |
146 | mov eax,fb_folder_data |
147 | mov eax,[eax+4] |
147 | mov eax,[eax+4] |
148 | mov fb_folder_block,eax |
148 | mov fb_folder_block,eax |
149 | ret |
149 | ret |
150 | ;--------------------------------------------------------------------- |
150 | ;--------------------------------------------------------------------- |
151 | align 4 |
151 | align 4 |
152 | fb_calc_max_panel_line: |
152 | fb_calc_max_panel_line: |
153 | xor eax,eax |
153 | xor eax,eax |
154 | xor ebx,ebx |
154 | xor ebx,ebx |
155 | mov ax,fb_size_y |
155 | mov ax,fb_size_y |
156 | mov bx,fb_line_size_y |
156 | mov bx,fb_line_size_y |
157 | test ebx,ebx |
157 | test ebx,ebx |
158 | jnz @f |
158 | jnz @f |
159 | inc ebx |
159 | inc ebx |
160 | @@: |
160 | @@: |
161 | xor edx,edx |
161 | xor edx,edx |
162 | div ebx |
162 | div ebx |
163 | mov fb_max_panel_line,eax |
163 | mov fb_max_panel_line,eax |
164 | ret |
164 | ret |
165 | ;--------------------------------------------------------------------- |
165 | ;--------------------------------------------------------------------- |
166 | align 4 |
166 | align 4 |
167 | fb_draw_panel_selection: |
167 | fb_draw_panel_selection: |
168 | cmp fb_all_redraw,2 |
168 | cmp fb_all_redraw,2 |
169 | je .end |
169 | je .end |
170 | mov eax,fb_folder_block |
170 | mov eax,fb_folder_block |
171 | test eax,eax |
171 | test eax,eax |
172 | jz .end |
172 | jz .end |
173 | xor eax,eax |
173 | xor eax,eax |
174 | cmp fb_select_panel_counter,eax |
174 | cmp fb_select_panel_counter,eax |
175 | je .end |
175 | je .end |
176 | mov eax,fb_folder_block |
176 | mov eax,fb_folder_block |
177 | sub eax,fb_start_draw_line |
177 | sub eax,fb_start_draw_line |
178 | mov cx,fb_start_draw_cursor_line |
178 | mov cx,fb_start_draw_cursor_line |
179 | call fb_for_all_panel_selection |
179 | call fb_for_all_panel_selection |
180 | mov eax,fb_folder_block |
180 | mov eax,fb_folder_block |
181 | dec eax |
181 | dec eax |
182 | xor edx,edx |
182 | xor edx,edx |
183 | mov dx,fb_line_size_y |
183 | mov dx,fb_line_size_y |
184 | imul eax,edx |
184 | imul eax,edx |
185 | cmp ax,cx |
185 | cmp ax,cx |
186 | jae @f |
186 | jae @f |
187 | mov cx,ax |
187 | mov cx,ax |
188 | @@: |
188 | @@: |
189 | mov fb_start_draw_cursor_line,cx |
189 | mov fb_start_draw_cursor_line,cx |
190 | mov ebx,fb_size_x |
190 | mov ebx,fb_size_x |
191 | add cx,fb_start_y |
191 | add cx,fb_start_y |
192 | shl ecx,16 |
192 | shl ecx,16 |
193 | mov cx,fb_line_size_y |
193 | mov cx,fb_line_size_y |
194 | mov edx,fb_select_color |
194 | mov edx,fb_select_color |
195 | xor eax,eax |
195 | xor eax,eax |
196 | mov ax,fb_icon_size_x |
196 | mov ax,fb_icon_size_x |
197 | add eax,2 |
197 | add eax,2 |
198 | sub ebx,eax |
198 | sub ebx,eax |
199 | shl eax,16 |
199 | shl eax,16 |
200 | push eax |
200 | push eax |
201 | add ebx,eax |
201 | add ebx,eax |
202 | mcall SF_DRAW_RECT |
202 | mcall SF_DRAW_RECT |
203 | pop ebx |
203 | pop ebx |
204 | cmp fb_all_redraw,0 |
204 | cmp fb_all_redraw,0 |
205 | je .end |
205 | je .end |
206 | mov bx,fb_start_x |
206 | mov bx,fb_start_x |
207 | ror ebx,16 |
207 | ror ebx,16 |
208 | mcall SF_DRAW_RECT,,,fb_background_color |
208 | mcall SF_DRAW_RECT,,,fb_background_color |
209 | .end: |
209 | .end: |
210 | ret |
210 | ret |
211 | ;--------------------------------------------------------------------- |
211 | ;--------------------------------------------------------------------- |
212 | align 4 |
212 | align 4 |
213 | fb_for_all_panel_selection: |
213 | fb_for_all_panel_selection: |
214 | xor edx,edx |
214 | xor edx,edx |
215 | mov dx,fb_line_size_y |
215 | mov dx,fb_line_size_y |
216 | imul eax,edx |
216 | imul eax,edx |
217 | cmp ax,cx |
217 | cmp ax,cx |
218 | jae @f |
218 | jae @f |
219 | mov cx,ax |
219 | mov cx,ax |
220 | @@: |
220 | @@: |
221 | mov eax,fb_max_panel_line |
221 | mov eax,fb_max_panel_line |
222 | dec eax |
222 | dec eax |
223 | imul eax,edx |
223 | imul eax,edx |
224 | cmp ax,cx |
224 | cmp ax,cx |
225 | jae @f |
225 | jae @f |
226 | mov cx,ax |
226 | mov cx,ax |
227 | @@: |
227 | @@: |
228 | ret |
228 | ret |
229 | ;--------------------------------------------------------------------- |
229 | ;--------------------------------------------------------------------- |
230 | align 4 |
230 | align 4 |
231 | fb_draw_folder_data: |
231 | fb_draw_folder_data: |
232 | mov eax,fb_folder_block |
232 | mov eax,fb_folder_block |
233 | sub eax,fb_max_panel_line |
233 | sub eax,fb_max_panel_line |
234 | test eax,0x80000000 |
234 | test eax,0x80000000 |
235 | jz .ok_left |
235 | jz .ok_left |
236 | mov fb_start_draw_line,0 |
236 | mov fb_start_draw_line,0 |
237 | jmp @f |
237 | jmp @f |
238 | .ok_left: |
238 | .ok_left: |
239 | cmp eax,fb_start_draw_line |
239 | cmp eax,fb_start_draw_line |
240 | jae @f |
240 | jae @f |
241 | mov fb_start_draw_line,eax |
241 | mov fb_start_draw_line,eax |
242 | @@: |
242 | @@: |
243 | mov bx,fb_start_x |
243 | mov bx,fb_start_x |
244 | add bx,3 |
244 | add bx,3 |
245 | add bx,fb_icon_size_x |
245 | add bx,fb_icon_size_x |
246 | shl ebx,16 |
246 | shl ebx,16 |
247 | mov bx,fb_start_y |
247 | mov bx,fb_start_y |
248 | mov edx,fb_start_draw_line |
248 | mov edx,fb_start_draw_line |
249 | imul edx,304 |
249 | imul edx,304 |
250 | add edx,fb_folder_data |
250 | add edx,fb_folder_data |
251 | add edx,32+40 |
251 | add edx,32+40 |
252 | xor eax,eax |
252 | xor eax,eax |
253 | .start: |
253 | .start: |
254 | pusha |
254 | pusha |
255 | mov eax,edx |
255 | mov eax,edx |
256 | sub eax,fb_folder_data |
256 | sub eax,fb_folder_data |
257 | sub eax,32+40 |
257 | sub eax,32+40 |
258 | xor edx,edx |
258 | xor edx,edx |
259 | mov ebx,304 |
259 | mov ebx,304 |
260 | div ebx |
260 | div ebx |
261 | cmp eax,fb_folder_block |
261 | cmp eax,fb_folder_block |
262 | je .end_1 |
262 | je .end_1 |
263 | popa |
263 | popa |
264 | cmp eax,fb_max_panel_line |
264 | cmp eax,fb_max_panel_line |
265 | je .end_2 |
265 | je .end_2 |
266 | mov fb_marked_file,0 |
266 | mov fb_marked_file,0 |
267 | cmp [edx+299-40],byte 0 |
267 | cmp [edx+299-40],byte 0 |
268 | je @f |
268 | je @f |
269 | mov fb_marked_file,1 |
269 | mov fb_marked_file,1 |
270 | @@: |
270 | @@: |
271 | call fb_clear_line |
271 | call fb_clear_line |
272 | call fb_draw_type_size_date |
272 | call fb_draw_type_size_date |
273 | cmp fb_all_redraw,2 |
273 | cmp fb_all_redraw,2 |
274 | je .draw_icon |
274 | je .draw_icon |
275 | cmp fb_all_redraw,0 |
275 | cmp fb_all_redraw,0 |
276 | je @f |
276 | je @f |
277 | .draw_icon: |
277 | .draw_icon: |
278 | call fb_draw_icon |
278 | call fb_draw_icon |
279 | @@: |
279 | @@: |
280 | push eax |
280 | push eax |
281 | xor eax,eax |
281 | xor eax,eax |
282 | mov ax,fb_size_x |
282 | mov ax,fb_size_x |
283 | push ebx edx |
283 | push ebx edx |
284 | xor ebx,ebx |
284 | xor ebx,ebx |
285 | mov bx,fb_font_size_x |
285 | mov bx,fb_font_size_x |
286 | xor edx,edx |
286 | xor edx,edx |
287 | div ebx |
287 | div ebx |
288 | pop edx ebx |
288 | pop edx ebx |
289 | sub eax,23+2+2 |
289 | sub eax,23+2+2 |
290 | mov esi,fb_file_name_length |
290 | mov esi,fb_file_name_length |
291 | mov fb_temp_counter,0 |
291 | mov fb_temp_counter,0 |
292 | mov fb_display_name_max_length,eax |
292 | mov fb_display_name_max_length,eax |
293 | cmp esi,eax |
293 | cmp esi,eax |
294 | jbe @f |
294 | jbe @f |
295 | mov esi,eax |
295 | mov esi,eax |
296 | mov fb_temp_counter,1 |
296 | mov fb_temp_counter,1 |
297 | @@: |
297 | @@: |
298 | cmp fb_max_name_temp_size,esi |
298 | cmp fb_max_name_temp_size,esi |
299 | jae @f |
299 | jae @f |
300 | mov fb_max_name_temp_size,esi |
300 | mov fb_max_name_temp_size,esi |
301 | inc fb_max_name_temp_size |
301 | inc fb_max_name_temp_size |
302 | @@: |
302 | @@: |
303 | mov ecx,fb_text_color |
303 | mov ecx,fb_text_color |
304 | cmp fb_marked_file,0 |
304 | cmp fb_marked_file,0 |
305 | je @f |
305 | je @f |
306 | mov ecx,fb_reduct_text_color |
306 | mov ecx,fb_reduct_text_color |
307 | @@: |
307 | @@: |
308 | mov ax,fb_line_size_y |
308 | mov ax,fb_line_size_y |
309 | sub ax,fb_font_size_y |
309 | sub ax,fb_font_size_y |
310 | push ebx |
310 | push ebx |
311 | mov bx,ax |
311 | mov bx,ax |
312 | shr ax,1 |
312 | shr ax,1 |
313 | test bx,1b |
313 | test bx,1b |
314 | jz @f |
314 | jz @f |
315 | inc ax |
315 | inc ax |
316 | @@: |
316 | @@: |
317 | pop ebx |
317 | pop ebx |
318 | push ebx |
318 | push ebx |
319 | add bx,ax |
319 | add bx,ax |
320 | call .draw_name_temp_area |
320 | call .draw_name_temp_area |
321 | cmp fb_temp_counter,0 |
321 | cmp fb_temp_counter,0 |
322 | jz .continue |
322 | jz .continue |
323 | xor eax,eax |
323 | xor eax,eax |
324 | mov ax,fb_font_size_x |
324 | mov ax,fb_font_size_x |
325 | imul eax,fb_display_name_max_length |
325 | imul eax,fb_display_name_max_length |
326 | shl eax,16 |
326 | shl eax,16 |
327 | push edx |
327 | push edx |
328 | add ebx,eax |
328 | add ebx,eax |
329 | mov esi,2 |
329 | mov esi,2 |
330 | mov ecx,fb_reduct_text_color |
330 | mov ecx,fb_reduct_text_color |
331 | mov edx,dword fb_truncated_filename_char |
331 | mov edx,dword fb_truncated_filename_char |
332 | mcall SF_DRAW_TEXT |
332 | mcall SF_DRAW_TEXT |
333 | pop edx |
333 | pop edx |
334 | .continue: |
334 | .continue: |
335 | pop ebx |
335 | pop ebx |
336 | add bx,fb_line_size_y |
336 | add bx,fb_line_size_y |
337 | add edx,304 |
337 | add edx,304 |
338 | pop eax |
338 | pop eax |
339 | inc eax |
339 | inc eax |
340 | jmp .start |
340 | jmp .start |
341 | ;-------------------------------------- |
341 | ;-------------------------------------- |
342 | align 4 |
342 | align 4 |
343 | .draw_name_temp_area: |
343 | .draw_name_temp_area: |
344 | pusha |
344 | pusha |
345 | mov eax,fb_max_name_temp_size |
345 | mov eax,fb_max_name_temp_size |
346 | add eax,2 |
346 | add eax,2 |
347 | sub eax,esi |
347 | sub eax,esi |
348 | mov ecx,esi |
348 | mov ecx,esi |
349 | mov esi,edx |
349 | mov esi,edx |
350 | mov edi,fb_name_temp_area |
350 | mov edi,fb_name_temp_area |
351 | cld |
351 | cld |
352 | jcxz @f |
352 | jcxz @f |
353 | rep movsb |
353 | rep movsb |
354 | cmp byte [edi-1],0 |
354 | cmp byte [edi-1],0 |
355 | jnz @f |
355 | jnz @f |
356 | dec edi |
356 | dec edi |
357 | inc eax |
357 | inc eax |
358 | @@: |
358 | @@: |
359 | mov ecx,eax |
359 | mov ecx,eax |
360 | shr ecx,2 |
360 | shr ecx,2 |
361 | mov eax,dword ' ' |
361 | mov eax,dword ' ' |
362 | rep stosd |
362 | rep stosd |
363 | popa |
363 | popa |
364 | pusha |
364 | pusha |
365 | mov edx,fb_name_temp_area |
365 | mov edx,fb_name_temp_area |
366 | cmp fb_all_redraw,2 |
366 | cmp fb_all_redraw,2 |
367 | jne @f |
367 | jne @f |
368 | mov esi,fb_max_name_temp_size |
368 | mov esi,fb_max_name_temp_size |
369 | add esi,2 |
369 | add esi,2 |
370 | @@: |
370 | @@: |
371 | bts ecx,30 |
371 | bts ecx,30 |
372 | mov eax,fb_background_color |
372 | mov eax,fb_background_color |
373 | cmp fb_draw_panel_selection_flag,1 |
373 | cmp fb_draw_panel_selection_flag,1 |
374 | jne @f |
374 | jne @f |
375 | mov eax,fb_select_color |
375 | mov eax,fb_select_color |
376 | @@: |
376 | @@: |
377 | mov edi,eax |
377 | mov edi,eax |
378 | mcall SF_DRAW_TEXT |
378 | mcall SF_DRAW_TEXT |
379 | popa |
379 | popa |
380 | ret |
380 | ret |
381 | ;-------------------------------------- |
381 | ;-------------------------------------- |
382 | .end_1: |
382 | .end_1: |
383 | popa |
383 | popa |
384 | .end_2: |
384 | .end_2: |
385 | cmp fb_all_redraw,1 |
385 | cmp fb_all_redraw,1 |
386 | jne @f |
386 | jne @f |
387 | mov ax,fb_start_y |
387 | mov ax,fb_start_y |
388 | add ax,fb_size_y |
388 | add ax,fb_size_y |
389 | mov cx,bx |
389 | mov cx,bx |
390 | rol ecx,16 |
390 | rol ecx,16 |
391 | mov cx,ax |
391 | mov cx,ax |
392 | mov eax,ecx |
392 | mov eax,ecx |
393 | shr eax,16 |
393 | shr eax,16 |
394 | sub cx,ax |
394 | sub cx,ax |
395 | cmp cx,0 |
395 | cmp cx,0 |
396 | jbe @f |
396 | jbe @f |
397 | mov bx,fb_size_x |
397 | mov bx,fb_size_x |
398 | ror ebx,16 |
398 | ror ebx,16 |
399 | sub bx,fb_icon_size_x |
399 | sub bx,fb_icon_size_x |
400 | sub bx,3 |
400 | sub bx,3 |
401 | rol ebx,16 |
401 | rol ebx,16 |
402 | mov edx,fb_background_color ;0xffffff |
402 | mov edx,fb_background_color ;0xffffff |
403 | mcall SF_DRAW_RECT |
403 | mcall SF_DRAW_RECT |
404 | @@: |
404 | @@: |
405 | ret |
405 | ret |
406 | ;--------------------------------------------------------------------- |
406 | ;--------------------------------------------------------------------- |
407 | align 4 |
407 | align 4 |
408 | fb_clear_line: |
408 | fb_clear_line: |
409 | mov fb_draw_panel_selection_flag,0 |
409 | mov fb_draw_panel_selection_flag,0 |
410 | pusha |
410 | pusha |
411 | shl ebx,16 |
411 | shl ebx,16 |
412 | shr ebx,16 |
412 | shr ebx,16 |
413 | cmp fb_select_panel_counter,0 |
413 | cmp fb_select_panel_counter,0 |
414 | je .continue |
414 | je .continue |
415 | mov ax,fb_start_draw_cursor_line |
415 | mov ax,fb_start_draw_cursor_line |
416 | add ax,fb_start_y |
416 | add ax,fb_start_y |
417 | cmp bx,ax |
417 | cmp bx,ax |
418 | jne .continue |
418 | jne .continue |
419 | mov fb_draw_panel_selection_flag,1 |
419 | mov fb_draw_panel_selection_flag,1 |
420 | jmp .end |
420 | jmp .end |
421 | .continue: |
421 | .continue: |
422 | cmp fb_all_redraw,2 |
422 | cmp fb_all_redraw,2 |
423 | je .end |
423 | je .end |
424 | cmp fb_all_redraw,0 |
424 | cmp fb_all_redraw,0 |
425 | je .end |
425 | je .end |
426 | mov ebx,[esp+16] |
426 | mov ebx,[esp+16] |
427 | mov cx,bx |
427 | mov cx,bx |
428 | rol ecx,16 |
428 | rol ecx,16 |
429 | mov cx,fb_line_size_y |
429 | mov cx,fb_line_size_y |
430 | mov bx,fb_size_x |
430 | mov bx,fb_size_x |
431 | ror ebx,16 |
431 | ror ebx,16 |
432 | sub bx,fb_icon_size_x |
432 | sub bx,fb_icon_size_x |
433 | sub bx,3 |
433 | sub bx,3 |
434 | rol ebx,16 |
434 | rol ebx,16 |
435 | mcall SF_DRAW_RECT,,,fb_background_color |
435 | mcall SF_DRAW_RECT,,,fb_background_color |
436 | .end: |
436 | .end: |
437 | popa |
437 | popa |
438 | ret |
438 | ret |
439 | ;--------------------------------------------------------------------- |
439 | ;--------------------------------------------------------------------- |
440 | align 4 |
440 | align 4 |
441 | fb_draw_type_size_date: |
441 | fb_draw_type_size_date: |
442 | pusha |
442 | pusha |
443 | mov eax,fb_type_table |
443 | mov eax,fb_type_table |
444 | test [edx-40],byte 0x10 |
444 | test [edx-40],byte 0x10 |
445 | jz .copy_type |
445 | jz .copy_type |
446 | mov [eax],dword ' |
446 | mov [eax],dword ' |
447 | mov [eax+4],word '> ' |
447 | mov [eax+4],word '> ' |
448 | mov fb_file_name_length,0 |
448 | mov fb_file_name_length,0 |
449 | mov fb_extension_size,0 |
449 | mov fb_extension_size,0 |
450 | jmp .start |
450 | jmp .start |
451 | .copy_type: |
451 | .copy_type: |
452 | mov [eax],dword ' ' |
452 | mov [eax],dword ' ' |
453 | mov [eax+4],word ' ' |
453 | mov [eax+4],word ' ' |
454 | .start: |
454 | .start: |
455 | mov esi,edx |
455 | mov esi,edx |
456 | xor eax,eax |
456 | xor eax,eax |
457 | @@: |
457 | @@: |
458 | cld |
458 | cld |
459 | lodsb |
459 | lodsb |
460 | test eax,eax |
460 | test eax,eax |
461 | jnz @b |
461 | jnz @b |
462 | mov fb_file_name_length,esi |
462 | mov fb_file_name_length,esi |
463 | sub fb_file_name_length,edx |
463 | sub fb_file_name_length,edx |
464 | mov fb_temp_counter,esi |
464 | mov fb_temp_counter,esi |
465 | test [edx-40],byte 0x10 |
465 | test [edx-40],byte 0x10 |
466 | jnz .size |
466 | jnz .size |
467 | dec esi |
467 | dec esi |
468 | dec edx |
468 | dec edx |
469 | @@: |
469 | @@: |
470 | std |
470 | std |
471 | lodsb |
471 | lodsb |
472 | cmp esi,edx |
472 | cmp esi,edx |
473 | je .extension_size_0 |
473 | je .extension_size_0 |
474 | cmp al,'.' |
474 | cmp al,'.' |
475 | jnz @b |
475 | jnz @b |
476 | add esi,2 |
476 | add esi,2 |
477 | mov fb_extension_start,esi |
477 | mov fb_extension_start,esi |
478 | mov ecx,fb_temp_counter |
478 | mov ecx,fb_temp_counter |
479 | sub ecx,esi |
479 | sub ecx,esi |
480 | inc ecx |
480 | inc ecx |
481 | mov fb_extension_size,ecx |
481 | mov fb_extension_size,ecx |
482 | sub fb_file_name_length,ecx |
482 | sub fb_file_name_length,ecx |
483 | cmp ecx,2 |
483 | cmp ecx,2 |
484 | ja @f |
484 | ja @f |
485 | inc fb_file_name_length |
485 | inc fb_file_name_length |
486 | @@: |
486 | @@: |
487 | sub ecx,2 |
487 | sub ecx,2 |
488 | cmp ecx,4 |
488 | cmp ecx,4 |
489 | jbe @f |
489 | jbe @f |
490 | mov ecx,3 |
490 | mov ecx,3 |
491 | mov eax,fb_type_table |
491 | mov eax,fb_type_table |
492 | mov [eax+3],word '..' |
492 | mov [eax+3],word '..' |
493 | @@: |
493 | @@: |
494 | push edi |
494 | push edi |
495 | mov edi,fb_type_table |
495 | mov edi,fb_type_table |
496 | cld |
496 | cld |
497 | rep movsb |
497 | rep movsb |
498 | pop edi |
498 | pop edi |
499 | inc edx |
499 | inc edx |
500 | jmp .size |
500 | jmp .size |
501 | .extension_size_0: |
501 | .extension_size_0: |
502 | inc edx |
502 | inc edx |
503 | mov fb_extension_size,0 |
503 | mov fb_extension_size,0 |
504 | .size: |
504 | .size: |
505 | mov eax,fb_type_table |
505 | mov eax,fb_type_table |
506 | test [edx-40],byte 0x10 |
506 | test [edx-40],byte 0x10 |
507 | jz .copy_size |
507 | jz .copy_size |
508 | mov [eax+6],dword '----' |
508 | mov [eax+6],dword '----' |
509 | mov [eax+6+4],word '- ' |
509 | mov [eax+6+4],word '- ' |
510 | jmp .date |
510 | jmp .date |
511 | ;----------------------------------------- |
511 | ;----------------------------------------- |
512 | align 4 |
512 | align 4 |
513 | .call_decimal_string: |
513 | .call_decimal_string: |
514 | mov ebx,fb_type_table |
514 | mov ebx,fb_type_table |
515 | add ebx,6 |
515 | add ebx,6 |
516 | call fb_decimal_string_4 |
516 | call fb_decimal_string_4 |
517 | mov [ebx],dl |
517 | mov [ebx],dl |
518 | jmp .size_convert_end |
518 | jmp .size_convert_end |
519 | ;----------------------------------------- |
519 | ;----------------------------------------- |
- | 520 | .qword_div: |
|
- | 521 | mov eax,[edx-40+32] |
|
- | 522 | mov ebx,[edx-40+32+4] |
|
- | 523 | @@: ; /1024 |
|
- | 524 | shrd eax,ebx,5 ; /32 |
|
- | 525 | shr ebx,5 ; /32 |
|
- | 526 | shrd eax,ebx,5 ; /32 |
|
- | 527 | shr ebx,5 ; /32 |
|
- | 528 | dec ecx |
|
- | 529 | jnz @b |
|
- | 530 | ; /(1024*1024) |
|
- | 531 | shr eax,20 |
|
- | 532 | test eax,eax |
|
- | 533 | ret |
|
- | 534 | ;----------------------------------------- |
|
520 | align 4 |
535 | align 4 |
521 | .copy_size: |
536 | .copy_size: |
522 | ;/0x1000000000000000 - EB |
537 | ;/0x1000000000000000 - EB |
523 | ;/0x4000000000000 - PB |
538 | ;/0x4000000000000 - PB |
524 | ;/0x10000000000 - TB |
539 | ;/0x10000000000 - TB |
525 | ;/0x40000000 - GB |
540 | ;/0x40000000 - GB |
526 | ;/0x100000 - MB |
541 | ;/0x100000 - MB |
527 | ;/0x400 - KB |
542 | ;/0x400 - KB |
528 | mov [eax+6],dword ' ' |
543 | mov [eax+6],dword ' ' |
529 | mov [eax+6+4],word ' ' |
544 | mov [eax+6+4],word ' ' |
530 | push ebx edx |
545 | push ebx edx |
531 | mov eax,[edx-40+32] |
- | |
532 | mov ebx,[edx-40+32+4] |
- | |
533 | ; /1024 |
- | |
534 | shrd eax,ebx,5 ; /32 |
- | |
535 | shr ebx,5 ; /32 |
- | |
536 | shrd eax,ebx,5 ; /32 |
- | |
537 | shr ebx,5 ; /32 |
546 | push ecx |
538 | ; /1024 |
- | |
539 | shrd eax,ebx,5 ; /32 |
- | |
540 | shr ebx,5 ; /32 |
- | |
541 | shrd eax,ebx,5 ; /32 |
- | |
542 | shr ebx,5 ; /32 |
- | |
543 | ; /1024 |
- | |
544 | shrd eax,ebx,5 ; /32 |
- | |
545 | shr ebx,5 ; /32 |
547 | mov ecx,4 |
546 | shrd eax,ebx,5 ; /32 |
- | |
547 | shr ebx,5 ; /32 |
548 | call .qword_div |
548 | ; /1024 |
- | |
549 | shrd eax,ebx,5 ; /32 |
- | |
550 | shr ebx,5 ; /32 |
- | |
551 | shrd eax,ebx,5 ; /32 |
- | |
552 | shr ebx,5 ; /32 |
- | |
553 | ; /(1024*1024) |
- | |
554 | shr eax,20 |
549 | pop ecx |
555 | test eax,eax |
- | |
556 | jz @f |
550 | jz @f |
557 | mov dl,byte 'E' ; Exa Byte |
551 | mov dl,byte 'E' ; Exa Byte |
558 | jmp .call_decimal_string |
552 | jmp .call_decimal_string |
559 | @@: |
553 | @@: |
560 | mov eax,[edx-40+32] |
- | |
561 | mov ebx,[edx-40+32+4] |
- | |
562 | ; /1024 |
- | |
563 | shrd eax,ebx,5 ; /32 |
- | |
564 | shr ebx,5 ; /32 |
- | |
565 | shrd eax,ebx,5 ; /32 |
- | |
566 | shr ebx,5 ; /32 |
554 | push ecx |
567 | ; /1024 |
- | |
568 | shrd eax,ebx,5 ; /32 |
- | |
569 | shr ebx,5 ; /32 |
- | |
570 | shrd eax,ebx,5 ; /32 |
- | |
571 | shr ebx,5 ; /32 |
555 | mov ecx,3 |
572 | ; /1024 |
- | |
573 | shrd eax,ebx,5 ; /32 |
- | |
574 | shr ebx,5 ; /32 |
- | |
575 | shrd eax,ebx,5 ; /32 |
- | |
576 | shr ebx,5 ; /32 |
556 | call .qword_div |
577 | ; /(1024*1024) |
- | |
578 | shr eax,20 |
557 | pop ecx |
579 | test eax,eax |
- | |
580 | jz @f |
558 | jz @f |
581 | mov dl,byte 'P' ; Peta Byte |
559 | mov dl,byte 'P' ; Peta Byte |
582 | jmp .call_decimal_string |
560 | jmp .call_decimal_string |
583 | @@: |
561 | @@: |
584 | mov eax,[edx-40+32] |
- | |
585 | mov ebx,[edx-40+32+4] |
- | |
586 | ; /1024 |
- | |
587 | shrd eax,ebx,5 ; /32 |
- | |
588 | shr ebx,5 ; /32 |
562 | push ecx |
589 | shrd eax,ebx,5 ; /32 |
- | |
590 | shr ebx,5 ; /32 |
563 | mov ecx,2 |
591 | ; /1024 |
- | |
592 | shrd eax,ebx,5 ; /32 |
- | |
593 | shr ebx,5 ; /32 |
564 | call .qword_div |
594 | shrd eax,ebx,5 ; /32 |
- | |
595 | shr ebx,5 ; /32 |
- | |
596 | ; /(1024*1024) |
- | |
597 | shr eax,20 |
565 | pop ecx |
598 | test eax,eax |
- | |
599 | jz @f |
566 | jz @f |
600 | mov dl,byte 'T' ; Tera Byte |
567 | mov dl,byte 'T' ; Tera Byte |
601 | jmp .call_decimal_string |
568 | jmp .call_decimal_string |
602 | @@: |
569 | @@: |
603 | mov eax,[edx-40+32] |
- | |
604 | mov ebx,[edx-40+32+4] |
- | |
605 | ; /1024 |
570 | push ecx |
606 | shrd eax,ebx,5 ; /32 |
- | |
607 | shr ebx,5 ; /32 |
571 | mov ecx,1 |
608 | shrd eax,ebx,5 ; /32 |
- | |
609 | shr ebx,5 ; /32 |
572 | call .qword_div |
610 | ; /(1024*1024) |
- | |
611 | shr eax,20 |
573 | pop ecx |
612 | test eax,eax |
- | |
613 | jz @f |
574 | jz @f |
614 | mov dl,byte 'G' ; Giga Byte |
575 | mov dl,byte 'G' ; Giga Byte |
615 | jmp .call_decimal_string |
576 | jmp .call_decimal_string |
616 | @@: |
577 | @@: |
617 | mov eax,[edx-40+32] |
578 | mov eax,[edx-40+32] |
618 | mov ebx,eax |
579 | mov ebx,eax |
619 | shr eax,20 ; /(1024*1024) |
580 | shr eax,20 ; /(1024*1024) |
620 | test eax,eax |
581 | test eax,eax |
621 | jz @f |
582 | jz @f |
622 | mov dl,byte 'M' ; Mega Byte |
583 | mov dl,byte 'M' ; Mega Byte |
623 | jmp .call_decimal_string |
584 | jmp .call_decimal_string |
624 | @@: |
585 | @@: |
625 | mov eax,ebx |
586 | mov eax,ebx |
626 | shr eax,10 ; /1024 |
587 | shr eax,10 ; /1024 |
627 | test eax,eax |
588 | test eax,eax |
628 | jz @f |
589 | jz @f |
629 | mov dl,byte 'K' ; Kilo Byte |
590 | mov dl,byte 'K' ; Kilo Byte |
630 | jmp .call_decimal_string |
591 | jmp .call_decimal_string |
631 | @@: |
592 | @@: |
632 | mov eax,ebx |
593 | mov eax,ebx |
633 | mov ebx,fb_type_table |
594 | mov ebx,fb_type_table |
634 | add ebx,6 |
595 | add ebx,6 |
635 | call fb_decimal_string_4 |
596 | call fb_decimal_string_4 |
636 | .size_convert_end: |
597 | .size_convert_end: |
637 | mov eax,fb_type_table |
598 | mov eax,fb_type_table |
638 | add eax,6 |
599 | add eax,6 |
639 | push edi |
600 | push edi |
640 | cmp [eax],byte '0' |
601 | cmp [eax],byte '0' |
641 | jne @f |
602 | jne @f |
642 | mov [eax],byte ' ' |
603 | mov [eax],byte ' ' |
643 | @@: |
604 | @@: |
644 | add eax,3 |
605 | add eax,3 |
645 | @@: |
606 | @@: |
646 | cmp [eax+1],byte ' ' |
607 | cmp [eax+1],byte ' ' |
647 | jne @f |
608 | jne @f |
648 | mov esi,eax |
609 | mov esi,eax |
649 | mov edi,esi |
610 | mov edi,esi |
650 | inc edi |
611 | inc edi |
651 | mov ecx,5 |
612 | mov ecx,5 |
652 | std |
613 | std |
653 | rep movsb |
614 | rep movsb |
654 | jmp @r |
615 | jmp @r |
655 | @@: |
616 | @@: |
656 | pop edi |
617 | pop edi |
657 | pop edx ebx |
618 | pop edx ebx |
658 | ;----------------------------------------- |
619 | ;----------------------------------------- |
659 | .date: |
620 | .date: |
660 | xor eax,eax |
621 | xor eax,eax |
661 | mov al,[edx-40+28] |
622 | mov al,[edx-40+28] |
662 | push ebx |
623 | push ebx |
663 | mov ebx,fb_type_table |
624 | mov ebx,fb_type_table |
664 | add ebx,12 |
625 | add ebx,12 |
665 | call fb_decimal_string_2 ; day |
626 | call fb_decimal_string_2 ; day |
666 | mov al,[edx-40+29] |
627 | mov al,[edx-40+29] |
667 | mov ebx,fb_type_table |
628 | mov ebx,fb_type_table |
668 | add ebx,12+3 |
629 | add ebx,12+3 |
669 | call fb_decimal_string_2 ; month |
630 | call fb_decimal_string_2 ; month |
670 | mov ax,[edx-40+30] |
631 | mov ax,[edx-40+30] |
671 | mov ebx,fb_type_table |
632 | mov ebx,fb_type_table |
672 | add ebx,12+15 |
633 | add ebx,12+15 |
673 | call fb_decimal_string_4 ; year |
634 | call fb_decimal_string_4 ; year |
674 | mov ebx,fb_type_table |
635 | mov ebx,fb_type_table |
675 | mov ax,[ebx+12+15+2] |
636 | mov ax,[ebx+12+15+2] |
676 | mov [ebx+12+6],ax |
637 | mov [ebx+12+6],ax |
677 | pop ebx |
638 | pop ebx |
678 | ;----------------------------------------- |
639 | ;----------------------------------------- |
679 | ror ebx,16 |
640 | ror ebx,16 |
680 | add bx,fb_size_x |
641 | add bx,fb_size_x |
681 | sub ebx,122+12+15 |
642 | sub ebx,122+12+15 |
682 | rol ebx,16 |
643 | rol ebx,16 |
683 | mov ecx,fb_text_color |
644 | mov ecx,fb_text_color |
684 | cmp fb_marked_file,0 |
645 | cmp fb_marked_file,0 |
685 | je @f |
646 | je @f |
686 | mov ecx,fb_reduct_text_color |
647 | mov ecx,fb_reduct_text_color |
687 | @@: |
648 | @@: |
688 | mov edx,fb_type_table |
649 | mov edx,fb_type_table |
689 | mov esi,20 |
650 | mov esi,20 |
690 | mov ax,fb_line_size_y |
651 | mov ax,fb_line_size_y |
691 | sub ax,fb_font_size_y |
652 | sub ax,fb_font_size_y |
692 | push ebx |
653 | push ebx |
693 | mov bx,ax |
654 | mov bx,ax |
694 | shr ax,1 |
655 | shr ax,1 |
695 | test bx,1b |
656 | test bx,1b |
696 | jz @f |
657 | jz @f |
697 | inc ax |
658 | inc ax |
698 | @@: |
659 | @@: |
699 | pop ebx |
660 | pop ebx |
700 | add bx,ax |
661 | add bx,ax |
701 | bts ecx,30 |
662 | bts ecx,30 |
702 | mov eax,fb_background_color |
663 | mov eax,fb_background_color |
703 | cmp fb_draw_panel_selection_flag,1 |
664 | cmp fb_draw_panel_selection_flag,1 |
704 | jne @f |
665 | jne @f |
705 | mov eax,fb_select_color |
666 | mov eax,fb_select_color |
706 | @@: |
667 | @@: |
707 | mov edi,eax |
668 | mov edi,eax |
708 | mcall SF_DRAW_TEXT |
669 | mcall SF_DRAW_TEXT |
709 | popa |
670 | popa |
710 | ret |
671 | ret |
711 | ;--------------------------------------------------------------------- |
672 | ;--------------------------------------------------------------------- |
712 | align 4 |
673 | align 4 |
713 | fb_draw_icon: |
674 | fb_draw_icon: |
714 | pusha |
675 | pusha |
715 | xor eax,eax |
676 | xor eax,eax |
716 | mov ax,fb_icon_size_y |
677 | mov ax,fb_icon_size_y |
717 | mov ebx,fb_resolution_raw |
678 | mov ebx,fb_resolution_raw |
718 | imul eax,ebx |
679 | imul eax,ebx |
719 | mov bx,fb_icon_size_x |
680 | mov bx,fb_icon_size_x |
720 | imul eax,ebx |
681 | imul eax,ebx |
721 | mov ebx,eax |
682 | mov ebx,eax |
722 | shr eax,3 |
683 | shr eax,3 |
723 | test ebx,111b |
684 | test ebx,111b |
724 | jz @f |
685 | jz @f |
725 | inc eax |
686 | inc eax |
726 | @@: |
687 | @@: |
727 | test [edx-40],byte 0x10 |
688 | test [edx-40],byte 0x10 |
728 | jnz .draw_dir_pic |
689 | jnz .draw_dir_pic |
729 | call fb_get_icon_number |
690 | call fb_get_icon_number |
730 | imul ebx,eax ;16*16*3 |
691 | imul ebx,eax ;16*16*3 |
731 | jmp .draw |
692 | jmp .draw |
732 | .draw_dir_pic: |
693 | .draw_dir_pic: |
733 | xor ebx,ebx |
694 | xor ebx,ebx |
734 | cmp [edx],word '..' |
695 | cmp [edx],word '..' |
735 | jne .draw |
696 | jne .draw |
736 | mov ebx,eax ;16*16*3 |
697 | mov ebx,eax ;16*16*3 |
737 | .draw: |
698 | .draw: |
738 | add ebx,fb_icon_raw_area |
699 | add ebx,fb_icon_raw_area |
739 | mov cx,fb_icon_size_x |
700 | mov cx,fb_icon_size_x |
740 | shl ecx,16 |
701 | shl ecx,16 |
741 | mov cx,fb_icon_size_y |
702 | mov cx,fb_icon_size_y |
742 | mov edx,[esp+16] |
703 | mov edx,[esp+16] |
743 | ror edx,16 |
704 | ror edx,16 |
744 | sub edx,2 |
705 | sub edx,2 |
745 | sub dx,fb_icon_size_x |
706 | sub dx,fb_icon_size_x |
746 | rol edx,16 |
707 | rol edx,16 |
747 | mov ax,fb_line_size_y |
708 | mov ax,fb_line_size_y |
748 | sub ax,fb_icon_size_y |
709 | sub ax,fb_icon_size_y |
749 | shr ax,1 |
710 | shr ax,1 |
750 | add dx,ax |
711 | add dx,ax |
751 | mov esi,fb_resolution_raw |
712 | mov esi,fb_resolution_raw |
752 | xor ebp,ebp |
713 | xor ebp,ebp |
753 | push edi |
714 | push edi |
754 | mov edi,fb_palette_raw |
715 | mov edi,fb_palette_raw |
755 | mcall SF_PUT_IMAGE_EXT |
716 | mcall SF_PUT_IMAGE_EXT |
756 | pop edi |
717 | pop edi |
757 | popa |
718 | popa |
758 | ret |
719 | ret |
759 | ;--------------------------------------------------------------------- |
720 | ;--------------------------------------------------------------------- |
760 | ; Convert of a binary number in decimal string form |
721 | ; Convert of a binary number in decimal string form |
761 | ; Input: |
722 | ; Input: |
762 | ; AX - value |
723 | ; AX - value |
763 | ; EBX - address of string |
724 | ; EBX - address of string |
764 | ; Output: |
725 | ; Output: |
765 | ; string contains the number, marked the end of the code 0 |
726 | ; string contains the number, marked the end of the code 0 |
766 | align 4 |
727 | align 4 |
767 | fb_decimal_string_2: |
728 | fb_decimal_string_2: |
768 | push eax ebx ecx edx |
729 | push eax ebx ecx edx |
769 | xor ecx,ecx |
730 | xor ecx,ecx |
770 | mov [ebx],byte '0' |
731 | mov [ebx],byte '0' |
771 | inc ebx |
732 | inc ebx |
772 | .p3: |
733 | .p3: |
773 | xor edx,edx |
734 | xor edx,edx |
774 | push ebx |
735 | push ebx |
775 | mov ebx,10 |
736 | mov ebx,10 |
776 | div ebx |
737 | div ebx |
777 | pop ebx |
738 | pop ebx |
778 | add edx,48 |
739 | add edx,48 |
779 | push edx |
740 | push edx |
780 | inc ecx |
741 | inc ecx |
781 | cmp ax,0 |
742 | cmp ax,0 |
782 | jne .p3 |
743 | jne .p3 |
783 | cmp ecx,1 |
744 | cmp ecx,1 |
784 | jbe .p4 |
745 | jbe .p4 |
785 | mov ecx,2 |
746 | mov ecx,2 |
786 | dec ebx |
747 | dec ebx |
787 | .p4: |
748 | .p4: |
788 | pop edx |
749 | pop edx |
789 | mov [ebx],dl |
750 | mov [ebx],dl |
790 | inc ebx |
751 | inc ebx |
791 | loop .p4 |
752 | loop .p4 |
792 | pop edx ecx ebx eax |
753 | pop edx ecx ebx eax |
793 | ret |
754 | ret |
794 | ;--------------------------------------------------------------------- |
755 | ;--------------------------------------------------------------------- |
795 | align 4 |
756 | align 4 |
796 | fb_decimal_string_4: |
757 | fb_decimal_string_4: |
797 | push eax ecx edx |
758 | push eax ecx edx |
798 | xor ecx,ecx |
759 | xor ecx,ecx |
799 | mov [ebx],byte '0' |
760 | mov [ebx],byte '0' |
800 | inc ebx |
761 | inc ebx |
801 | .p3: |
762 | .p3: |
802 | xor edx,edx |
763 | xor edx,edx |
803 | push ebx |
764 | push ebx |
804 | mov ebx,10 |
765 | mov ebx,10 |
805 | div ebx |
766 | div ebx |
806 | pop ebx |
767 | pop ebx |
807 | add edx,48 |
768 | add edx,48 |
808 | push edx |
769 | push edx |
809 | inc ecx |
770 | inc ecx |
810 | cmp eax,0 |
771 | cmp eax,0 |
811 | jne .p3 |
772 | jne .p3 |
812 | cmp ecx,3 |
773 | cmp ecx,3 |
813 | jbe .p4 |
774 | jbe .p4 |
814 | mov ecx,4 |
775 | mov ecx,4 |
815 | dec ebx |
776 | dec ebx |
816 | .p4: |
777 | .p4: |
817 | pop edx |
778 | pop edx |
818 | mov [ebx],dl |
779 | mov [ebx],dl |
819 | inc ebx |
780 | inc ebx |
820 | loop .p4 |
781 | loop .p4 |
821 | pop edx ecx eax |
782 | pop edx ecx eax |
822 | ret |
783 | ret |
823 | ;--------------------------------------------------------------------- |
784 | ;--------------------------------------------------------------------- |
824 | align 4 |
785 | align 4 |
825 | fb_get_icon_number: |
786 | fb_get_icon_number: |
826 | push eax |
787 | push eax |
827 | mov ebp,fb_extension_size |
788 | mov ebp,fb_extension_size |
828 | test ebp,ebp |
789 | test ebp,ebp |
829 | je .end |
790 | je .end |
830 | dec ebp |
791 | dec ebp |
831 | test ebp,ebp |
792 | test ebp,ebp |
832 | je .end |
793 | je .end |
833 | dec ebp |
794 | dec ebp |
834 | test ebp,ebp |
795 | test ebp,ebp |
835 | je .end |
796 | je .end |
836 | @@: |
797 | @@: |
837 | mov edx,fb_ini_file_end |
798 | mov edx,fb_ini_file_end |
838 | sub edx,ebp |
799 | sub edx,ebp |
839 | mov eax,fb_ini_file_start |
800 | mov eax,fb_ini_file_start |
840 | dec eax |
801 | dec eax |
841 | .search_association: |
802 | .search_association: |
842 | cmp edx,eax |
803 | cmp edx,eax |
843 | jbe .end |
804 | jbe .end |
844 | mov esi,fb_extension_start |
805 | mov esi,fb_extension_start |
845 | inc eax |
806 | inc eax |
846 | mov ecx,eax |
807 | mov ecx,eax |
847 | mov ebx,eax |
808 | mov ebx,eax |
848 | cld |
809 | cld |
849 | .check: |
810 | .check: |
850 | lodsb |
811 | lodsb |
851 | test al,al |
812 | test al,al |
852 | jz @f |
813 | jz @f |
853 | call fb_char_toupper |
814 | call fb_char_toupper |
854 | shl ax,8 |
815 | shl ax,8 |
855 | .search_start_of_line: |
816 | .search_start_of_line: |
856 | mov al,[ebx] |
817 | mov al,[ebx] |
857 | inc ebx |
818 | inc ebx |
858 | call fb_char_toupper |
819 | call fb_char_toupper |
859 | cmp al,ah |
820 | cmp al,ah |
860 | je .check |
821 | je .check |
861 | mov eax,ecx |
822 | mov eax,ecx |
862 | jmp .search_association |
823 | jmp .search_association |
863 | @@: |
824 | @@: |
864 | mov esi,ecx |
825 | mov esi,ecx |
865 | add esi,ebp |
826 | add esi,ebp |
866 | lodsb |
827 | lodsb |
867 | cmp al,byte '=' |
828 | cmp al,byte '=' |
868 | jne .end |
829 | jne .end |
869 | mov eax,ecx |
830 | mov eax,ecx |
870 | cmp eax,fb_ini_file_start |
831 | cmp eax,fb_ini_file_start |
871 | je @f |
832 | je @f |
872 | dec eax |
833 | dec eax |
873 | cmp [eax],byte 15 |
834 | cmp [eax],byte 15 |
874 | ja .end |
835 | ja .end |
875 | @@: |
836 | @@: |
876 | xor ebx,ebx |
837 | xor ebx,ebx |
877 | xor eax,eax |
838 | xor eax,eax |
878 | mov ecx,9 |
839 | mov ecx,9 |
879 | call .calculate |
840 | call .calculate |
880 | cmp al,0x30 |
841 | cmp al,0x30 |
881 | jb .end |
842 | jb .end |
882 | cmp al,0x39 |
843 | cmp al,0x39 |
883 | ja .end |
844 | ja .end |
884 | sub eax,0x30 |
845 | sub eax,0x30 |
885 | @@: |
846 | @@: |
886 | call .calculate_1 |
847 | call .calculate_1 |
887 | cmp al,0x30 |
848 | cmp al,0x30 |
888 | jb @f |
849 | jb @f |
889 | cmp al,0x39 |
850 | cmp al,0x39 |
890 | ja @f |
851 | ja @f |
891 | sub eax,0x30 |
852 | sub eax,0x30 |
892 | 853 | ||
893 | lea ebx,[ebx+ebx*4] |
854 | lea ebx,[ebx+ebx*4] |
894 | shl ebx,1 |
855 | shl ebx,1 |
895 | 856 | ||
896 | dec ecx |
857 | dec ecx |
897 | jnz @b |
858 | jnz @b |
898 | @@: |
859 | @@: |
899 | pop eax |
860 | pop eax |
900 | ret |
861 | ret |
901 | .end: |
862 | .end: |
902 | mov ebx,2 |
863 | mov ebx,2 |
903 | pop eax |
864 | pop eax |
904 | ret |
865 | ret |
905 | ;--------------------------------------------------------------------- |
866 | ;--------------------------------------------------------------------- |
906 | align 4 |
867 | align 4 |
907 | .calculate_1: |
868 | .calculate_1: |
908 | add ebx,eax |
869 | add ebx,eax |
909 | .calculate: |
870 | .calculate: |
910 | xor eax,eax |
871 | xor eax,eax |
911 | cld |
872 | cld |
912 | lodsb |
873 | lodsb |
913 | ret |
874 | ret |
914 | ;--------------------------------------------------------------------- |
875 | ;--------------------------------------------------------------------- |
915 | align 4 |
876 | align 4 |
916 | fb_char_toupper: |
877 | fb_char_toupper: |
917 | ; convert character to uppercase, using cp866 encoding |
878 | ; convert character to uppercase, using cp866 encoding |
918 | ; in: al=symbol |
879 | ; in: al=symbol |
919 | ; out: al=converted symbol |
880 | ; out: al=converted symbol |
920 | cmp al,'a' |
881 | cmp al,'a' |
921 | jb .ret |
882 | jb .ret |
922 | cmp al, 'z' |
883 | cmp al, 'z' |
923 | jbe .az |
884 | jbe .az |
924 | cmp al, ' ' |
885 | cmp al, ' ' |
925 | jb .ret |
886 | jb .ret |
926 | cmp al, 'à' |
887 | cmp al, 'à' |
927 | jb .rus1 |
888 | jb .rus1 |
928 | cmp al, 'ï' |
889 | cmp al, 'ï' |
929 | ja .ret |
890 | ja .ret |
930 | ; 0xE0-0xEF -> 0x90-0x9F |
891 | ; 0xE0-0xEF -> 0x90-0x9F |
931 | sub al, 'à'-'' |
892 | sub al, 'à'-'' |
932 | .ret: |
893 | .ret: |
933 | ret |
894 | ret |
934 | .rus1: |
895 | .rus1: |
935 | ; 0xA0-0xAF -> 0x80-0x8F |
896 | ; 0xA0-0xAF -> 0x80-0x8F |
936 | .az: |
897 | .az: |
937 | and al, not 0x20 |
898 | and al, not 0x20 |
938 | ret |
899 | ret |
939 | ;--------------------------------------------------------------------- |
900 | ;--------------------------------------------------------------------- |
940 | align 4 |
901 | align 4 |
941 | fb_char_todown: |
902 | fb_char_todown: |
942 | ; convert character to lowercase, using cp866 encoding |
903 | ; convert character to lowercase, using cp866 encoding |
943 | ; in: al=symbol |
904 | ; in: al=symbol |
944 | ; out: al=converted symbol |
905 | ; out: al=converted symbol |
945 | cmp al, 'A' |
906 | cmp al, 'A' |
946 | jb .ret |
907 | jb .ret |
947 | cmp al, 'Z' |
908 | cmp al, 'Z' |
948 | jbe .az |
909 | jbe .az |
949 | cmp al, '' |
910 | cmp al, '' |
950 | jb .ret |
911 | jb .ret |
951 | cmp al, '' |
912 | cmp al, '' |
952 | jb .rus1 |
913 | jb .rus1 |
953 | cmp al, '' |
914 | cmp al, '' |
954 | ja .ret |
915 | ja .ret |
955 | ; 0x90-0x9F -> 0xE0-0xEF |
916 | ; 0x90-0x9F -> 0xE0-0xEF |
956 | add al, 'à'-'' |
917 | add al, 'à'-'' |
957 | .ret: |
918 | .ret: |
958 | ret |
919 | ret |
959 | .rus1: |
920 | .rus1: |
960 | ; 0x80-0x8F -> 0xA0-0xAF |
921 | ; 0x80-0x8F -> 0xA0-0xAF |
961 | .az: |
922 | .az: |
962 | add al, 0x20 |
923 | add al, 0x20 |
963 | ret |
924 | ret |
964 | ;--------------------------------------------------------------------- |
925 | ;--------------------------------------------------------------------- |
965 | fb_truncated_filename_char: |
926 | fb_truncated_filename_char: |
966 | db '..' |
927 | db '..' |
967 | ;--------------------------------------------------------------------- |
928 | ;--------------------------------------------------------------------- |
968 | ;***************************************************************************** |
929 | ;***************************************************************************** |
969 | ;***************************************************************************** |
930 | ;***************************************************************************** |
970 | ; mouse event |
931 | ; mouse event |
971 | ;***************************************************************************** |
932 | ;***************************************************************************** |
972 | ;***************************************************************************** |
933 | ;***************************************************************************** |
973 | align 4 |
934 | align 4 |
974 | fb_mouse: |
935 | fb_mouse: |
975 | pusha |
936 | pusha |
976 | mov edi,dword [esp+36] |
937 | mov edi,dword [esp+36] |
977 | ;------------------------------------------------------- |
938 | ;------------------------------------------------------- |
978 | mcall SF_MOUSE_GET,SSF_BUTTON |
939 | mcall SF_MOUSE_GET,SSF_BUTTON |
979 | mov ebx,fb_mouse_keys |
940 | mov ebx,fb_mouse_keys |
980 | mov fb_mouse_keys_old,ebx |
941 | mov fb_mouse_keys_old,ebx |
981 | mov fb_mouse_keys,eax |
942 | mov fb_mouse_keys,eax |
982 | 943 | ||
983 | mcall SF_MOUSE_GET,SSF_WINDOW_POSITION |
944 | mcall SF_MOUSE_GET,SSF_WINDOW_POSITION |
984 | mov ebx,fb_mouse_pos |
945 | mov ebx,fb_mouse_pos |
985 | mov fb_mouse_pos_old,ebx |
946 | mov fb_mouse_pos_old,ebx |
986 | mov fb_mouse_pos,eax |
947 | mov fb_mouse_pos,eax |
987 | 948 | ||
988 | test eax,0x80000000 |
949 | test eax,0x80000000 |
989 | jnz .exit_fb |
950 | jnz .exit_fb |
990 | test eax,0x8000 |
951 | test eax,0x8000 |
991 | jnz .exit_fb |
952 | jnz .exit_fb |
992 | 953 | ||
993 | mov ebx,eax |
954 | mov ebx,eax |
994 | shr ebx,16 ; x position |
955 | shr ebx,16 ; x position |
995 | shl eax,16 |
956 | shl eax,16 |
996 | shr eax,16 ; y position |
957 | shr eax,16 ; y position |
997 | 958 | ||
998 | mov cx,fb_start_x |
959 | mov cx,fb_start_x |
999 | cmp bx,cx |
960 | cmp bx,cx |
1000 | jb .exit_fb |
961 | jb .exit_fb |
1001 | 962 | ||
1002 | add cx,fb_size_x |
963 | add cx,fb_size_x |
1003 | cmp bx,cx |
964 | cmp bx,cx |
1004 | ja .exit_fb |
965 | ja .exit_fb |
1005 | 966 | ||
1006 | mov cx,fb_start_y |
967 | mov cx,fb_start_y |
1007 | cmp ax,cx |
968 | cmp ax,cx |
1008 | jb .exit_fb |
969 | jb .exit_fb |
1009 | 970 | ||
1010 | add cx,fb_size_y |
971 | add cx,fb_size_y |
1011 | cmp ax,cx |
972 | cmp ax,cx |
1012 | ja .exit_fb |
973 | ja .exit_fb |
1013 | 974 | ||
1014 | cmp fb_mouse_keys,0 |
975 | cmp fb_mouse_keys,0 |
1015 | jz @f |
976 | jz @f |
1016 | mov fb_select_flag,1 |
977 | mov fb_select_flag,1 |
1017 | @@: |
978 | @@: |
1018 | ;------------------------------------------------------- |
979 | ;------------------------------------------------------- |
1019 | cmp fb_mouse_keys_delta,1 |
980 | cmp fb_mouse_keys_delta,1 |
1020 | je .enter_1 |
981 | je .enter_1 |
1021 | 982 | ||
1022 | cmp fb_mouse_keys,0 |
983 | cmp fb_mouse_keys,0 |
1023 | jz .exit_fb |
984 | jz .exit_fb |
1024 | .start: |
985 | .start: |
1025 | sub ax,fb_start_y |
986 | sub ax,fb_start_y |
1026 | xor ebx,ebx |
987 | xor ebx,ebx |
1027 | mov bx,fb_line_size_y |
988 | mov bx,fb_line_size_y |
1028 | xor edx,edx |
989 | xor edx,edx |
1029 | push eax |
990 | push eax |
1030 | div ebx |
991 | div ebx |
1031 | pop eax |
992 | pop eax |
1032 | sub eax,edx |
993 | sub eax,edx |
1033 | xor edx,edx |
994 | xor edx,edx |
1034 | cmp fb_select_panel_counter,edx |
995 | cmp fb_select_panel_counter,edx |
1035 | jne @f |
996 | jne @f |
1036 | mov fb_mouse_keys_delta,0 |
997 | mov fb_mouse_keys_delta,0 |
1037 | jmp .continue |
998 | jmp .continue |
1038 | @@: |
999 | @@: |
1039 | xor edx,edx |
1000 | xor edx,edx |
1040 | cmp fb_start_draw_cursor_line,ax |
1001 | cmp fb_start_draw_cursor_line,ax |
1041 | jne @f |
1002 | jne @f |
1042 | cmp fb_mouse_keys,edx |
1003 | cmp fb_mouse_keys,edx |
1043 | jnz .continue |
1004 | jnz .continue |
1044 | @@: |
1005 | @@: |
1045 | mov fb_mouse_keys_delta,edx |
1006 | mov fb_mouse_keys_delta,edx |
1046 | .continue: |
1007 | .continue: |
1047 | xor ebx,ebx |
1008 | xor ebx,ebx |
1048 | mov bx,fb_line_size_y |
1009 | mov bx,fb_line_size_y |
1049 | imul ebx,fb_folder_block |
1010 | imul ebx,fb_folder_block |
1050 | cmp eax,ebx |
1011 | cmp eax,ebx |
1051 | jb @f |
1012 | jb @f |
1052 | xor edx,edx |
1013 | xor edx,edx |
1053 | mov dx,fb_line_size_y |
1014 | mov dx,fb_line_size_y |
1054 | sub ebx,edx |
1015 | sub ebx,edx |
1055 | cmp bx,fb_start_draw_cursor_line |
1016 | cmp bx,fb_start_draw_cursor_line |
1056 | je .enter |
1017 | je .enter |
1057 | call .store_old_cursor_line |
1018 | call .store_old_cursor_line |
1058 | mov fb_start_draw_cursor_line,bx |
1019 | mov fb_start_draw_cursor_line,bx |
1059 | jmp .continue_1 |
1020 | jmp .continue_1 |
1060 | @@: |
1021 | @@: |
1061 | cmp ax,fb_start_draw_cursor_line |
1022 | cmp ax,fb_start_draw_cursor_line |
1062 | je .enter |
1023 | je .enter |
1063 | call .store_old_cursor_line |
1024 | call .store_old_cursor_line |
1064 | mov fb_start_draw_cursor_line,ax |
1025 | mov fb_start_draw_cursor_line,ax |
1065 | .continue_1: |
1026 | .continue_1: |
1066 | test fb_mouse_keys,10b |
1027 | test fb_mouse_keys,10b |
1067 | jne .mark_mouse |
1028 | jne .mark_mouse |
1068 | jmp .enter_1 |
1029 | jmp .enter_1 |
1069 | .continue_2: |
1030 | .continue_2: |
1070 | mov ax,fb_start_draw_cursor_line |
1031 | mov ax,fb_start_draw_cursor_line |
1071 | cmp ax,fb_start_draw_cursor_line_2 |
1032 | cmp ax,fb_start_draw_cursor_line_2 |
1072 | je .exit_fb |
1033 | je .exit_fb |
1073 | 1034 | ||
1074 | call fb_draw_panel_1 |
1035 | call fb_draw_panel_1 |
1075 | jmp .exit_fb |
1036 | jmp .exit_fb |
1076 | .enter: |
1037 | .enter: |
1077 | cmp fb_mouse_keys_delta,2 |
1038 | cmp fb_mouse_keys_delta,2 |
1078 | je .enter_2 |
1039 | je .enter_2 |
1079 | cmp fb_mouse_keys_delta,1 |
1040 | cmp fb_mouse_keys_delta,1 |
1080 | je .enter_1 |
1041 | je .enter_1 |
1081 | mov eax,fb_mouse_keys_old |
1042 | mov eax,fb_mouse_keys_old |
1082 | cmp fb_mouse_keys,eax |
1043 | cmp fb_mouse_keys,eax |
1083 | jz .exit_fb |
1044 | jz .exit_fb |
1084 | test fb_mouse_keys,10b |
1045 | test fb_mouse_keys,10b |
1085 | jne .mark_mouse |
1046 | jne .mark_mouse |
1086 | xor edx,edx |
1047 | xor edx,edx |
1087 | inc edx |
1048 | inc edx |
1088 | mov fb_mouse_keys_delta,edx |
1049 | mov fb_mouse_keys_delta,edx |
1089 | jmp .exit_fb |
1050 | jmp .exit_fb |
1090 | .enter_1: |
1051 | .enter_1: |
1091 | ; mov eax,fb_mouse_keys_old |
1052 | ; mov eax,fb_mouse_keys_old |
1092 | ; cmp fb_mouse_keys,eax |
1053 | ; cmp fb_mouse_keys,eax |
1093 | ; jz .exit_fb |
1054 | ; jz .exit_fb |
1094 | test fb_mouse_keys,10b |
1055 | test fb_mouse_keys,10b |
1095 | jne .mark_mouse |
1056 | jne .mark_mouse |
1096 | mov edx,2 |
1057 | mov edx,2 |
1097 | mov fb_mouse_keys_delta,edx |
1058 | mov fb_mouse_keys_delta,edx |
1098 | mcall SF_SYSTEM_GET,SSF_TIME_COUNT |
1059 | mcall SF_SYSTEM_GET,SSF_TIME_COUNT |
1099 | add eax,fb_mouse_key_delay |
1060 | add eax,fb_mouse_key_delay |
1100 | mov fb_mouse_keys_tick,eax |
1061 | mov fb_mouse_keys_tick,eax |
1101 | jmp .continue_2 |
1062 | jmp .continue_2 |
1102 | .enter_2: |
1063 | .enter_2: |
1103 | mcall SF_SYSTEM_GET,SSF_TIME_COUNT |
1064 | mcall SF_SYSTEM_GET,SSF_TIME_COUNT |
1104 | cmp eax,fb_mouse_keys_tick |
1065 | cmp eax,fb_mouse_keys_tick |
1105 | ja @f |
1066 | ja @f |
1106 | ; mov eax,fb_mouse_pos_old |
1067 | ; mov eax,fb_mouse_pos_old |
1107 | ; cmp eax,fb_mouse_pos |
1068 | ; cmp eax,fb_mouse_pos |
1108 | ; jne @f |
1069 | ; jne @f |
1109 | mov eax,fb_mouse_keys_old |
1070 | mov eax,fb_mouse_keys_old |
1110 | cmp fb_mouse_keys,eax |
1071 | cmp fb_mouse_keys,eax |
1111 | jz @f |
1072 | jz @f |
1112 | test fb_mouse_keys,10b |
1073 | test fb_mouse_keys,10b |
1113 | jne .mark_mouse |
1074 | jne .mark_mouse |
1114 | call .enter_3 |
1075 | call .enter_3 |
1115 | jmp .exit_fb |
1076 | jmp .exit_fb |
1116 | @@: |
1077 | @@: |
1117 | xor eax,eax |
1078 | xor eax,eax |
1118 | inc eax |
1079 | inc eax |
1119 | mov fb_mouse_keys_delta,eax |
1080 | mov fb_mouse_keys_delta,eax |
1120 | ;------------------------------------------------------- |
1081 | ;------------------------------------------------------- |
1121 | .exit_fb: |
1082 | .exit_fb: |
1122 | call fb_prepare_selected_BDVK_adress |
1083 | call fb_prepare_selected_BDVK_adress |
1123 | file_browser_exit |
1084 | file_browser_exit |
1124 | ;------------------------------------------------------- |
1085 | ;------------------------------------------------------- |
1125 | align 4 |
1086 | align 4 |
1126 | .mark_mouse: |
1087 | .mark_mouse: |
1127 | call fb_key.mark_1 |
1088 | call fb_key.mark_1 |
1128 | call fb_draw_panel_1 |
1089 | call fb_draw_panel_1 |
1129 | xor eax,eax |
1090 | xor eax,eax |
1130 | mov fb_mouse_keys_delta,eax |
1091 | mov fb_mouse_keys_delta,eax |
1131 | jmp .exit_fb |
1092 | jmp .exit_fb |
1132 | ;------------------------------------------------------- |
1093 | ;------------------------------------------------------- |
1133 | align 4 |
1094 | align 4 |
1134 | .enter_3: |
1095 | .enter_3: |
1135 | xor eax,eax |
1096 | xor eax,eax |
1136 | mov fb_mouse_keys,eax |
1097 | mov fb_mouse_keys,eax |
1137 | mov fb_mouse_keys_old,eax |
1098 | mov fb_mouse_keys_old,eax |
1138 | mov eax,3 |
1099 | mov eax,3 |
1139 | mov fb_mouse_keys_delta,eax |
1100 | mov fb_mouse_keys_delta,eax |
1140 | xor eax,eax |
1101 | xor eax,eax |
1141 | mov fb_max_name_temp_size,eax |
1102 | mov fb_max_name_temp_size,eax |
1142 | ret |
1103 | ret |
1143 | ;------------------------------------------------------- |
1104 | ;------------------------------------------------------- |
1144 | align 4 |
1105 | align 4 |
1145 | .store_old_cursor_line: |
1106 | .store_old_cursor_line: |
1146 | push eax |
1107 | push eax |
1147 | mov ax,fb_start_draw_cursor_line |
1108 | mov ax,fb_start_draw_cursor_line |
1148 | mov fb_start_draw_cursor_line_2,ax |
1109 | mov fb_start_draw_cursor_line_2,ax |
1149 | xor eax,eax |
1110 | xor eax,eax |
1150 | ; mov fb_mouse_keys_delta,eax |
1111 | ; mov fb_mouse_keys_delta,eax |
1151 | pop eax |
1112 | pop eax |
1152 | ret |
1113 | ret |
1153 | ;***************************************************************************** |
1114 | ;***************************************************************************** |
1154 | ;***************************************************************************** |
1115 | ;***************************************************************************** |
1155 | align 4 |
1116 | align 4 |
1156 | fb_prepare_selected_BDVK_adress: |
1117 | fb_prepare_selected_BDVK_adress: |
1157 | xor eax,eax |
1118 | xor eax,eax |
1158 | mov ax,fb_start_draw_cursor_line |
1119 | mov ax,fb_start_draw_cursor_line |
1159 | xor ebx,ebx |
1120 | xor ebx,ebx |
1160 | mov bx,fb_line_size_y |
1121 | mov bx,fb_line_size_y |
1161 | xor edx,edx |
1122 | xor edx,edx |
1162 | div ebx |
1123 | div ebx |
1163 | add eax,fb_start_draw_line |
1124 | add eax,fb_start_draw_line |
1164 | imul eax,304 |
1125 | imul eax,304 |
1165 | add eax,32 |
1126 | add eax,32 |
1166 | add eax,fb_folder_data |
1127 | add eax,fb_folder_data |
1167 | mov fb_selected_BDVK_adress,eax |
1128 | mov fb_selected_BDVK_adress,eax |
1168 | ret |
1129 | ret |
1169 | ;***************************************************************************** |
1130 | ;***************************************************************************** |
1170 | ;***************************************************************************** |
1131 | ;***************************************************************************** |
1171 | ; key event |
1132 | ; key event |
1172 | ; 1 - arrow down |
1133 | ; 1 - arrow down |
1173 | ; 2 - arrow up |
1134 | ; 2 - arrow up |
1174 | ; 3 - PageDown |
1135 | ; 3 - PageDown |
1175 | ; 4 - PageUp |
1136 | ; 4 - PageUp |
1176 | ; 5 - Home |
1137 | ; 5 - Home |
1177 | ; 6 - End |
1138 | ; 6 - End |
1178 | ; 7 - Enter |
1139 | ; 7 - Enter |
1179 | ; 8 - Insert (Mark) |
1140 | ; 8 - Insert (Mark) |
1180 | ; 9 - Mark All |
1141 | ; 9 - Mark All |
1181 | ; 10 - Unmark All |
1142 | ; 10 - Unmark All |
1182 | ; 11 - Invert Mark |
1143 | ; 11 - Invert Mark |
1183 | ; 12 - Search with key |
1144 | ; 12 - Search with key |
1184 | ;***************************************************************************** |
1145 | ;***************************************************************************** |
1185 | ;***************************************************************************** |
1146 | ;***************************************************************************** |
1186 | align 4 |
1147 | align 4 |
1187 | fb_key: |
1148 | fb_key: |
1188 | pusha |
1149 | pusha |
1189 | mov edi,dword [esp+36] |
1150 | mov edi,dword [esp+36] |
1190 | ;------------------------------------------------------- |
1151 | ;------------------------------------------------------- |
1191 | xor eax,eax |
1152 | xor eax,eax |
1192 | mov ax,fb_key_action |
1153 | mov ax,fb_key_action |
1193 | shl eax,2 |
1154 | shl eax,2 |
1194 | add eax,dword fb_key_table |
1155 | add eax,dword fb_key_table |
1195 | cmp eax,fb_key_table.end |
1156 | cmp eax,fb_key_table.end |
1196 | jae .exit_fb |
1157 | jae .exit_fb |
1197 | cmp [eax],dword 0 |
1158 | cmp [eax],dword 0 |
1198 | je .exit_fb |
1159 | je .exit_fb |
1199 | jmp dword [eax] |
1160 | jmp dword [eax] |
1200 | ;------------------------------------------------------- |
1161 | ;------------------------------------------------------- |
1201 | align 4 |
1162 | align 4 |
1202 | .arrow_down: |
1163 | .arrow_down: |
1203 | mov ax,fb_start_draw_cursor_line |
1164 | mov ax,fb_start_draw_cursor_line |
1204 | add ax,fb_line_size_y |
1165 | add ax,fb_line_size_y |
1205 | add ax,fb_line_size_y |
1166 | add ax,fb_line_size_y |
1206 | cmp ax,word fb_size_y |
1167 | cmp ax,word fb_size_y |
1207 | ja @f |
1168 | ja @f |
1208 | .add_1: |
1169 | .add_1: |
1209 | call fb_mouse.store_old_cursor_line |
1170 | call fb_mouse.store_old_cursor_line |
1210 | mov ax,fb_start_draw_cursor_line |
1171 | mov ax,fb_start_draw_cursor_line |
1211 | add ax,fb_line_size_y |
1172 | add ax,fb_line_size_y |
1212 | mov fb_start_draw_cursor_line,ax |
1173 | mov fb_start_draw_cursor_line,ax |
1213 | call fb_draw_panel_1 |
1174 | call fb_draw_panel_1 |
1214 | jmp .exit_fb |
1175 | jmp .exit_fb |
1215 | @@: |
1176 | @@: |
1216 | mov eax,fb_folder_block |
1177 | mov eax,fb_folder_block |
1217 | sub eax,fb_max_panel_line |
1178 | sub eax,fb_max_panel_line |
1218 | test eax,0x80000000 |
1179 | test eax,0x80000000 |
1219 | jnz .page_down_2 |
1180 | jnz .page_down_2 |
1220 | 1181 | ||
1221 | call .prepare_data_down |
1182 | call .prepare_data_down |
1222 | ja @f |
1183 | ja @f |
1223 | 1184 | ||
1224 | cmp fb_start_draw_line,eax |
1185 | cmp fb_start_draw_line,eax |
1225 | je .exit_fb |
1186 | je .exit_fb |
1226 | @@: |
1187 | @@: |
1227 | inc fb_start_draw_line |
1188 | inc fb_start_draw_line |
1228 | call fb_draw_panel_3 |
1189 | call fb_draw_panel_3 |
1229 | jmp .exit_fb |
1190 | jmp .exit_fb |
1230 | ;------------------------------------------------------- |
1191 | ;------------------------------------------------------- |
1231 | align 4 |
1192 | align 4 |
1232 | .arrow_up: |
1193 | .arrow_up: |
1233 | mov ax,fb_start_draw_cursor_line |
1194 | mov ax,fb_start_draw_cursor_line |
1234 | add ax,fb_start_y |
1195 | add ax,fb_start_y |
1235 | cmp fb_start_y,ax |
1196 | cmp fb_start_y,ax |
1236 | je @f |
1197 | je @f |
1237 | call fb_mouse.store_old_cursor_line |
1198 | call fb_mouse.store_old_cursor_line |
1238 | mov ax,fb_start_draw_cursor_line |
1199 | mov ax,fb_start_draw_cursor_line |
1239 | sub ax,fb_line_size_y |
1200 | sub ax,fb_line_size_y |
1240 | mov fb_start_draw_cursor_line,ax |
1201 | mov fb_start_draw_cursor_line,ax |
1241 | call fb_draw_panel_1 |
1202 | call fb_draw_panel_1 |
1242 | jmp .exit_fb |
1203 | jmp .exit_fb |
1243 | @@: |
1204 | @@: |
1244 | cmp fb_start_draw_line,0 |
1205 | cmp fb_start_draw_line,0 |
1245 | je .exit_fb |
1206 | je .exit_fb |
1246 | dec fb_start_draw_line |
1207 | dec fb_start_draw_line |
1247 | call fb_draw_panel_3 |
1208 | call fb_draw_panel_3 |
1248 | jmp .exit_fb |
1209 | jmp .exit_fb |
1249 | ;------------------------------------------------------- |
1210 | ;------------------------------------------------------- |
1250 | align 4 |
1211 | align 4 |
1251 | .page_down: |
1212 | .page_down: |
1252 | mov eax,fb_max_panel_line |
1213 | mov eax,fb_max_panel_line |
1253 | mov ebx,fb_folder_block |
1214 | mov ebx,fb_folder_block |
1254 | sub ebx,eax |
1215 | sub ebx,eax |
1255 | test ebx,0x80000000 |
1216 | test ebx,0x80000000 |
1256 | jnz .page_down_2 |
1217 | jnz .page_down_2 |
1257 | sub ebx,fb_start_draw_line |
1218 | sub ebx,fb_start_draw_line |
1258 | cmp ebx,eax |
1219 | cmp ebx,eax |
1259 | ja .page_down_3 |
1220 | ja .page_down_3 |
1260 | mov ebx,fb_folder_block |
1221 | mov ebx,fb_folder_block |
1261 | sub ebx,eax |
1222 | sub ebx,eax |
1262 | call .prepare_data_down |
1223 | call .prepare_data_down |
1263 | ja @f |
1224 | ja @f |
1264 | cmp ebx,fb_start_draw_line |
1225 | cmp ebx,fb_start_draw_line |
1265 | je .exit_fb |
1226 | je .exit_fb |
1266 | @@: |
1227 | @@: |
1267 | mov fb_start_draw_line,ebx |
1228 | mov fb_start_draw_line,ebx |
1268 | .page_down_0: |
1229 | .page_down_0: |
1269 | dec eax |
1230 | dec eax |
1270 | xor ebx,ebx |
1231 | xor ebx,ebx |
1271 | mov bx,fb_line_size_y |
1232 | mov bx,fb_line_size_y |
1272 | imul eax,ebx |
1233 | imul eax,ebx |
1273 | .page_down_1: |
1234 | .page_down_1: |
1274 | call fb_mouse.store_old_cursor_line |
1235 | call fb_mouse.store_old_cursor_line |
1275 | mov fb_start_draw_cursor_line,ax |
1236 | mov fb_start_draw_cursor_line,ax |
1276 | call fb_draw_panel_2 |
1237 | call fb_draw_panel_2 |
1277 | jmp .exit_fb |
1238 | jmp .exit_fb |
1278 | .page_down_2: |
1239 | .page_down_2: |
1279 | mov eax,fb_folder_block |
1240 | mov eax,fb_folder_block |
1280 | sub eax,fb_start_draw_line |
1241 | sub eax,fb_start_draw_line |
1281 | dec eax |
1242 | dec eax |
1282 | xor ebx,ebx |
1243 | xor ebx,ebx |
1283 | mov bx,fb_line_size_y |
1244 | mov bx,fb_line_size_y |
1284 | imul eax,ebx |
1245 | imul eax,ebx |
1285 | cmp ax,fb_start_draw_cursor_line |
1246 | cmp ax,fb_start_draw_cursor_line |
1286 | jbe .exit_fb |
1247 | jbe .exit_fb |
1287 | jmp .page_down_1 |
1248 | jmp .page_down_1 |
1288 | .page_down_3: |
1249 | .page_down_3: |
1289 | add fb_start_draw_line,eax |
1250 | add fb_start_draw_line,eax |
1290 | call fb_draw_panel_2 |
1251 | call fb_draw_panel_2 |
1291 | jmp .exit_fb |
1252 | jmp .exit_fb |
1292 | ;------------------------------------------------------- |
1253 | ;------------------------------------------------------- |
1293 | align 4 |
1254 | align 4 |
1294 | .prepare_data_down: |
1255 | .prepare_data_down: |
1295 | mov ecx,fb_folder_block |
1256 | mov ecx,fb_folder_block |
1296 | sub ecx,fb_start_draw_line |
1257 | sub ecx,fb_start_draw_line |
1297 | dec ecx |
1258 | dec ecx |
1298 | xor edx,edx |
1259 | xor edx,edx |
1299 | mov dx,fb_line_size_y |
1260 | mov dx,fb_line_size_y |
1300 | imul ecx,edx |
1261 | imul ecx,edx |
1301 | cmp cx,fb_start_draw_cursor_line |
1262 | cmp cx,fb_start_draw_cursor_line |
1302 | ret |
1263 | ret |
1303 | ;------------------------------------------------------- |
1264 | ;------------------------------------------------------- |
1304 | align 4 |
1265 | align 4 |
1305 | .page_up: |
1266 | .page_up: |
1306 | mov eax,fb_max_panel_line |
1267 | mov eax,fb_max_panel_line |
1307 | mov ebx,fb_start_draw_line |
1268 | mov ebx,fb_start_draw_line |
1308 | sub ebx,eax |
1269 | sub ebx,eax |
1309 | test ebx,0x80000000 |
1270 | test ebx,0x80000000 |
1310 | jz @f |
1271 | jz @f |
1311 | cmp fb_start_draw_line,0 |
1272 | cmp fb_start_draw_line,0 |
1312 | jne .page_up_1 |
1273 | jne .page_up_1 |
1313 | cmp fb_start_draw_cursor_line,0 |
1274 | cmp fb_start_draw_cursor_line,0 |
1314 | je .exit_fb |
1275 | je .exit_fb |
1315 | mov fb_start_draw_cursor_line,0 |
1276 | mov fb_start_draw_cursor_line,0 |
1316 | .page_up_1: |
1277 | .page_up_1: |
1317 | mov fb_start_draw_line,0 |
1278 | mov fb_start_draw_line,0 |
1318 | call fb_draw_panel_2 |
1279 | call fb_draw_panel_2 |
1319 | jmp .exit_fb |
1280 | jmp .exit_fb |
1320 | @@: |
1281 | @@: |
1321 | sub fb_start_draw_line,eax |
1282 | sub fb_start_draw_line,eax |
1322 | call fb_draw_panel_2 |
1283 | call fb_draw_panel_2 |
1323 | jmp .exit_fb |
1284 | jmp .exit_fb |
1324 | ;------------------------------------------------------- |
1285 | ;------------------------------------------------------- |
1325 | align 4 |
1286 | align 4 |
1326 | .home: |
1287 | .home: |
1327 | cmp fb_start_draw_line,0 |
1288 | cmp fb_start_draw_line,0 |
1328 | jne @f |
1289 | jne @f |
1329 | cmp fb_start_draw_cursor_line,0 |
1290 | cmp fb_start_draw_cursor_line,0 |
1330 | je .exit_fb |
1291 | je .exit_fb |
1331 | @@: |
1292 | @@: |
1332 | mov fb_start_draw_line,0 |
1293 | mov fb_start_draw_line,0 |
1333 | mov fb_start_draw_cursor_line,0 |
1294 | mov fb_start_draw_cursor_line,0 |
1334 | call fb_mouse.store_old_cursor_line |
1295 | call fb_mouse.store_old_cursor_line |
1335 | call fb_draw_panel_2 |
1296 | call fb_draw_panel_2 |
1336 | jmp .exit_fb |
1297 | jmp .exit_fb |
1337 | ;------------------------------------------------------- |
1298 | ;------------------------------------------------------- |
1338 | align 4 |
1299 | align 4 |
1339 | .end: |
1300 | .end: |
1340 | mov eax,fb_folder_block |
1301 | mov eax,fb_folder_block |
1341 | sub eax,fb_max_panel_line |
1302 | sub eax,fb_max_panel_line |
1342 | test eax,0x80000000 |
1303 | test eax,0x80000000 |
1343 | jnz .page_down_2 |
1304 | jnz .page_down_2 |
1344 | call .prepare_data_down |
1305 | call .prepare_data_down |
1345 | ja @f |
1306 | ja @f |
1346 | cmp eax,fb_start_draw_line |
1307 | cmp eax,fb_start_draw_line |
1347 | je .exit_fb |
1308 | je .exit_fb |
1348 | @@: |
1309 | @@: |
1349 | mov fb_start_draw_line,eax |
1310 | mov fb_start_draw_line,eax |
1350 | mov eax,fb_max_panel_line |
1311 | mov eax,fb_max_panel_line |
1351 | jmp .page_down_0 |
1312 | jmp .page_down_0 |
1352 | ;------------------------------------------------------- |
1313 | ;------------------------------------------------------- |
1353 | align 4 |
1314 | align 4 |
1354 | .enter: |
1315 | .enter: |
1355 | call fb_mouse.enter_3 |
1316 | call fb_mouse.enter_3 |
1356 | jmp .exit_fb |
1317 | jmp .exit_fb |
1357 | ;------------------------------------------------------- |
1318 | ;------------------------------------------------------- |
1358 | align 4 |
1319 | align 4 |
1359 | .mark: |
1320 | .mark: |
1360 | call .mark_1 |
1321 | call .mark_1 |
1361 | jmp .arrow_down |
1322 | jmp .arrow_down |
1362 | ;------------------------------------------------------- |
1323 | ;------------------------------------------------------- |
1363 | align 4 |
1324 | align 4 |
1364 | .mark_1: |
1325 | .mark_1: |
1365 | mov eax,fb_folder_block |
1326 | mov eax,fb_folder_block |
1366 | test eax,eax |
1327 | test eax,eax |
1367 | jz .exit |
1328 | jz .exit |
1368 | 1329 | ||
1369 | xor eax,eax |
1330 | xor eax,eax |
1370 | mov ax,fb_start_draw_cursor_line |
1331 | mov ax,fb_start_draw_cursor_line |
1371 | xor edx,edx |
1332 | xor edx,edx |
1372 | xor ebx,ebx |
1333 | xor ebx,ebx |
1373 | mov bx,fb_line_size_y |
1334 | mov bx,fb_line_size_y |
1374 | div ebx |
1335 | div ebx |
1375 | mov esi,fb_start_draw_line |
1336 | mov esi,fb_start_draw_line |
1376 | add esi,eax |
1337 | add esi,eax |
1377 | imul esi,304 |
1338 | imul esi,304 |
1378 | add esi,fb_folder_data |
1339 | add esi,fb_folder_data |
1379 | 1340 | ||
1380 | add esi,32+299 |
1341 | add esi,32+299 |
1381 | mov al,[esi] |
1342 | mov al,[esi] |
1382 | and al,1 |
1343 | and al,1 |
1383 | 1344 | ||
1384 | test al,al |
1345 | test al,al |
1385 | jnz @f |
1346 | jnz @f |
1386 | inc fb_marked_counter |
1347 | inc fb_marked_counter |
1387 | jmp .mark_2 |
1348 | jmp .mark_2 |
1388 | @@: |
1349 | @@: |
1389 | dec fb_marked_counter |
1350 | dec fb_marked_counter |
1390 | .mark_2: |
1351 | .mark_2: |
1391 | mov al,[esi] |
1352 | mov al,[esi] |
1392 | inc al |
1353 | inc al |
1393 | and al,1 |
1354 | and al,1 |
1394 | mov [esi],al |
1355 | mov [esi],al |
1395 | .exit: |
1356 | .exit: |
1396 | ret |
1357 | ret |
1397 | ;------------------------------------------------------- |
1358 | ;------------------------------------------------------- |
1398 | align 4 |
1359 | align 4 |
1399 | .mark_all: |
1360 | .mark_all: |
1400 | mov eax,fb_folder_block |
1361 | mov eax,fb_folder_block |
1401 | test eax,eax |
1362 | test eax,eax |
1402 | jz .exit_fb |
1363 | jz .exit_fb |
1403 | 1364 | ||
1404 | mov fb_temp_counter,0 |
1365 | mov fb_temp_counter,0 |
1405 | .mark_all_1: |
1366 | .mark_all_1: |
1406 | mov ebp,fb_folder_block |
1367 | mov ebp,fb_folder_block |
1407 | .mark_all_2: |
1368 | .mark_all_2: |
1408 | mov ebx,ebp |
1369 | mov ebx,ebp |
1409 | dec ebx |
1370 | dec ebx |
1410 | imul ebx,304 |
1371 | imul ebx,304 |
1411 | add ebx,fb_folder_data |
1372 | add ebx,fb_folder_data |
1412 | add ebx,32+40 |
1373 | add ebx,32+40 |
1413 | cmp [ebx],word '..' |
1374 | cmp [ebx],word '..' |
1414 | jne .mark_all_3 |
1375 | jne .mark_all_3 |
1415 | cmp [ebx+2],byte 0 |
1376 | cmp [ebx+2],byte 0 |
1416 | je @f |
1377 | je @f |
1417 | .mark_all_3: |
1378 | .mark_all_3: |
1418 | call .select_mark_action |
1379 | call .select_mark_action |
1419 | @@: |
1380 | @@: |
1420 | dec ebp |
1381 | dec ebp |
1421 | jnz .mark_all_2 |
1382 | jnz .mark_all_2 |
1422 | 1383 | ||
1423 | call fb_draw_panel_3 |
1384 | call fb_draw_panel_3 |
1424 | cmp fb_temp_counter,0 |
1385 | cmp fb_temp_counter,0 |
1425 | jne @f |
1386 | jne @f |
1426 | mov eax,fb_folder_block |
1387 | mov eax,fb_folder_block |
1427 | jmp .mark_all_4 |
1388 | jmp .mark_all_4 |
1428 | @@: |
1389 | @@: |
1429 | cmp fb_temp_counter,1 |
1390 | cmp fb_temp_counter,1 |
1430 | jne @f |
1391 | jne @f |
1431 | mov fb_marked_counter,0 |
1392 | mov fb_marked_counter,0 |
1432 | jmp .exit_fb |
1393 | jmp .exit_fb |
1433 | @@: |
1394 | @@: |
1434 | mov eax,fb_folder_block |
1395 | mov eax,fb_folder_block |
1435 | sub eax,fb_marked_counter |
1396 | sub eax,fb_marked_counter |
1436 | .mark_all_4: |
1397 | .mark_all_4: |
1437 | dec eax |
1398 | dec eax |
1438 | mov fb_marked_counter,eax |
1399 | mov fb_marked_counter,eax |
1439 | jmp .exit_fb |
1400 | jmp .exit_fb |
1440 | ;------------------------------------------------------- |
1401 | ;------------------------------------------------------- |
1441 | align 4 |
1402 | align 4 |
1442 | .select_mark_action: |
1403 | .select_mark_action: |
1443 | add ebx,299-40 |
1404 | add ebx,299-40 |
1444 | cmp fb_temp_counter,0 |
1405 | cmp fb_temp_counter,0 |
1445 | jne @f |
1406 | jne @f |
1446 | mov [ebx],byte 1 |
1407 | mov [ebx],byte 1 |
1447 | jmp .select_mark_action_1 |
1408 | jmp .select_mark_action_1 |
1448 | @@: |
1409 | @@: |
1449 | cmp fb_temp_counter,1 |
1410 | cmp fb_temp_counter,1 |
1450 | jne @f |
1411 | jne @f |
1451 | mov [ebx],byte 0 |
1412 | mov [ebx],byte 0 |
1452 | jmp .select_mark_action_1 |
1413 | jmp .select_mark_action_1 |
1453 | @@: |
1414 | @@: |
1454 | mov al,[ebx] |
1415 | mov al,[ebx] |
1455 | inc al |
1416 | inc al |
1456 | and al,1 |
1417 | and al,1 |
1457 | mov [ebx],al |
1418 | mov [ebx],al |
1458 | .select_mark_action_1: |
1419 | .select_mark_action_1: |
1459 | ret |
1420 | ret |
1460 | ;------------------------------------------------------- |
1421 | ;------------------------------------------------------- |
1461 | align 4 |
1422 | align 4 |
1462 | .unmark_all: |
1423 | .unmark_all: |
1463 | mov eax,fb_folder_block |
1424 | mov eax,fb_folder_block |
1464 | test eax,eax |
1425 | test eax,eax |
1465 | jz .exit_fb |
1426 | jz .exit_fb |
1466 | 1427 | ||
1467 | mov fb_temp_counter,1 |
1428 | mov fb_temp_counter,1 |
1468 | jmp .mark_all_1 |
1429 | jmp .mark_all_1 |
1469 | ;------------------------------------------------------- |
1430 | ;------------------------------------------------------- |
1470 | align 4 |
1431 | align 4 |
1471 | .invert_mark: |
1432 | .invert_mark: |
1472 | mov eax,fb_folder_block |
1433 | mov eax,fb_folder_block |
1473 | test eax,eax |
1434 | test eax,eax |
1474 | jz .exit_fb |
1435 | jz .exit_fb |
1475 | 1436 | ||
1476 | mov fb_temp_counter,2 |
1437 | mov fb_temp_counter,2 |
1477 | jmp .mark_all_1 |
1438 | jmp .mark_all_1 |
1478 | ;------------------------------------------------------- |
1439 | ;------------------------------------------------------- |
1479 | ; * bit 0 (mask 1): left Shift is pressed |
1440 | ; * bit 0 (mask 1): left Shift is pressed |
1480 | ; * bit 1 (mask 2): right Shift is pressed |
1441 | ; * bit 1 (mask 2): right Shift is pressed |
1481 | ; * bit 2 (mask 4): left Ctrl is pressed |
1442 | ; * bit 2 (mask 4): left Ctrl is pressed |
1482 | ; * bit 3 (mask 8): right Ctrl is pressed |
1443 | ; * bit 3 (mask 8): right Ctrl is pressed |
1483 | ; * bit 4 (mask 0x10): left Alt is pressed |
1444 | ; * bit 4 (mask 0x10): left Alt is pressed |
1484 | ; * bit 5 (mask 0x20): right Alt is pressed |
1445 | ; * bit 5 (mask 0x20): right Alt is pressed |
1485 | ; * bit 6 (mask 0x40): CapsLock is on |
1446 | ; * bit 6 (mask 0x40): CapsLock is on |
1486 | ; * bit 7 (mask 0x80): NumLock is on |
1447 | ; * bit 7 (mask 0x80): NumLock is on |
1487 | ; * bit 8 (mask 0x100): ScrollLock is on |
1448 | ; * bit 8 (mask 0x100): ScrollLock is on |
1488 | ; * bit 9 (mask 0x200): left Win is pressed |
1449 | ; * bit 9 (mask 0x200): left Win is pressed |
1489 | ; * bit 10 (mask 0x400): right Win is pressed |
1450 | ; * bit 10 (mask 0x400): right Win is pressed |
1490 | ;------------------------------------------------------- |
1451 | ;------------------------------------------------------- |
1491 | align 4 |
1452 | align 4 |
1492 | .search_with_key: |
1453 | .search_with_key: |
1493 | mcall SF_BOARD,SSF_GET_CONTROL_KEYS |
1454 | mcall SF_BOARD,SSF_GET_CONTROL_KEYS |
1494 | test al,11b |
1455 | test al,11b |
1495 | jnz .shift_layout |
1456 | jnz .shift_layout |
1496 | 1457 | ||
1497 | test al,110000b |
1458 | test al,110000b |
1498 | jnz .alt_layout |
1459 | jnz .alt_layout |
1499 | 1460 | ||
1500 | mov ecx,1 ; Normal |
1461 | mov ecx,1 ; Normal |
1501 | jmp .get_keyboard_layout |
1462 | jmp .get_keyboard_layout |
1502 | 1463 | ||
1503 | .shift_layout: |
1464 | .shift_layout: |
1504 | mov ecx,2 ; Shift |
1465 | mov ecx,2 ; Shift |
1505 | jmp .get_keyboard_layout |
1466 | jmp .get_keyboard_layout |
1506 | 1467 | ||
1507 | .alt_layout: |
1468 | .alt_layout: |
1508 | mov ecx,3 ; Alt |
1469 | mov ecx,3 ; Alt |
1509 | .get_keyboard_layout: |
1470 | .get_keyboard_layout: |
1510 | mcall SF_SYSTEM_GET,SSF_KEYBOARD_LAYOUT,,fb_keymap_pointer |
1471 | mcall SF_SYSTEM_GET,SSF_KEYBOARD_LAYOUT,,fb_keymap_pointer |
1511 | xor eax,eax |
1472 | xor eax,eax |
1512 | mov ax,fb_key_action_num |
1473 | mov ax,fb_key_action_num |
1513 | add eax,fb_keymap_pointer |
1474 | add eax,fb_keymap_pointer |
1514 | mov al,[eax] |
1475 | mov al,[eax] |
1515 | and eax,0xff |
1476 | and eax,0xff |
1516 | call fb_char_todown |
1477 | call fb_char_todown |
1517 | mov ah,al |
1478 | mov ah,al |
1518 | xor esi,esi |
1479 | xor esi,esi |
1519 | push eax |
1480 | push eax |
1520 | movzx eax,fb_start_draw_cursor_line |
1481 | movzx eax,fb_start_draw_cursor_line |
1521 | movzx ebx,fb_line_size_y |
1482 | movzx ebx,fb_line_size_y |
1522 | xor edx,edx |
1483 | xor edx,edx |
1523 | div ebx |
1484 | div ebx |
1524 | add si,ax ;fb_start_draw_cursor_line |
1485 | add si,ax ;fb_start_draw_cursor_line |
1525 | pop eax |
1486 | pop eax |
1526 | add esi,fb_start_draw_line |
1487 | add esi,fb_start_draw_line |
1527 | mov ecx,esi |
1488 | mov ecx,esi |
1528 | xor ebx,ebx |
1489 | xor ebx,ebx |
1529 | inc ecx |
1490 | inc ecx |
1530 | cmp ecx,fb_folder_block |
1491 | cmp ecx,fb_folder_block |
1531 | ja .reset_data |
1492 | ja .reset_data |
1532 | 1493 | ||
1533 | .first_entry: |
1494 | .first_entry: |
1534 | imul esi,304 |
1495 | imul esi,304 |
1535 | add esi,fb_folder_data |
1496 | add esi,fb_folder_data |
1536 | add esi,40+32 |
1497 | add esi,40+32 |
1537 | @@: |
1498 | @@: |
1538 | add esi,304 |
1499 | add esi,304 |
1539 | mov al,[esi] |
1500 | mov al,[esi] |
1540 | call fb_char_todown |
1501 | call fb_char_todown |
1541 | cmp ah,al |
1502 | cmp ah,al |
1542 | je .match |
1503 | je .match |
1543 | 1504 | ||
1544 | inc ecx |
1505 | inc ecx |
1545 | cmp ecx,fb_folder_block |
1506 | cmp ecx,fb_folder_block |
1546 | jb @b |
1507 | jb @b |
1547 | 1508 | ||
1548 | .reset_data: |
1509 | .reset_data: |
1549 | xor esi,esi |
1510 | xor esi,esi |
1550 | 1511 | ||
1551 | dec esi |
1512 | dec esi |
1552 | cmp ebx,2 |
1513 | cmp ebx,2 |
1553 | jae .exit_fb |
1514 | jae .exit_fb |
1554 | 1515 | ||
1555 | xor ecx,ecx |
1516 | xor ecx,ecx |
1556 | inc ebx |
1517 | inc ebx |
1557 | jmp .first_entry |
1518 | jmp .first_entry |
1558 | 1519 | ||
1559 | .match: |
1520 | .match: |
1560 | mov fb_start_draw_line,ecx |
1521 | mov fb_start_draw_line,ecx |
1561 | mov eax,fb_folder_block |
1522 | mov eax,fb_folder_block |
1562 | mov ebx,fb_max_panel_line |
1523 | mov ebx,fb_max_panel_line |
1563 | sub eax,ebx |
1524 | sub eax,ebx |
1564 | jbe .1 |
1525 | jbe .1 |
1565 | 1526 | ||
1566 | cmp eax,ecx |
1527 | cmp eax,ecx |
1567 | jbe @f |
1528 | jbe @f |
1568 | 1529 | ||
1569 | xor ecx,ecx |
1530 | xor ecx,ecx |
1570 | jmp .2 |
1531 | jmp .2 |
1571 | @@: |
1532 | @@: |
1572 | mov fb_start_draw_line,eax |
1533 | mov fb_start_draw_line,eax |
1573 | mov eax,fb_folder_block |
1534 | mov eax,fb_folder_block |
1574 | sub eax,ecx |
1535 | sub eax,ecx |
1575 | 1536 | ||
1576 | mov ecx,fb_max_panel_line |
1537 | mov ecx,fb_max_panel_line |
1577 | sub ecx,eax |
1538 | sub ecx,eax |
1578 | jmp .2 |
1539 | jmp .2 |
1579 | 1540 | ||
1580 | .1: |
1541 | .1: |
1581 | xor eax,eax |
1542 | xor eax,eax |
1582 | mov fb_start_draw_line,eax |
1543 | mov fb_start_draw_line,eax |
1583 | .2: |
1544 | .2: |
1584 | movzx eax,fb_line_size_y |
1545 | movzx eax,fb_line_size_y |
1585 | imul ecx,eax |
1546 | imul ecx,eax |
1586 | mov fb_start_draw_cursor_line,cx |
1547 | mov fb_start_draw_cursor_line,cx |
1587 | call fb_draw_panel_2 |
1548 | call fb_draw_panel_2 |
1588 | ;------------------------------------------------------- |
1549 | ;------------------------------------------------------- |
1589 | .exit_fb: |
1550 | .exit_fb: |
1590 | call fb_prepare_selected_BDVK_adress |
1551 | call fb_prepare_selected_BDVK_adress |
1591 | file_browser_exit |
1552 | file_browser_exit |
1592 | ;------------------------------------------------------- |
1553 | ;------------------------------------------------------- |
1593 | align 4 |
1554 | align 4 |
1594 | fb_key_table: |
1555 | fb_key_table: |
1595 | dd 0 |
1556 | dd 0 |
1596 | dd fb_key.arrow_down ; 1 |
1557 | dd fb_key.arrow_down ; 1 |
1597 | dd fb_key.arrow_up ; 2 |
1558 | dd fb_key.arrow_up ; 2 |
1598 | dd fb_key.page_down ; 3 |
1559 | dd fb_key.page_down ; 3 |
1599 | dd fb_key.page_up ; 4 |
1560 | dd fb_key.page_up ; 4 |
1600 | dd fb_key.home ; 5 |
1561 | dd fb_key.home ; 5 |
1601 | dd fb_key.end ; 6 |
1562 | dd fb_key.end ; 6 |
1602 | dd fb_key.enter ; 7 |
1563 | dd fb_key.enter ; 7 |
1603 | dd fb_key.mark ; 8 |
1564 | dd fb_key.mark ; 8 |
1604 | dd fb_key.mark_all ; 9 |
1565 | dd fb_key.mark_all ; 9 |
1605 | dd fb_key.unmark_all ; 10 |
1566 | dd fb_key.unmark_all ; 10 |
1606 | dd fb_key.invert_mark ; 11 |
1567 | dd fb_key.invert_mark ; 11 |
1607 | dd fb_key.search_with_key ; 12 |
1568 | dd fb_key.search_with_key ; 12 |
1608 | .end: |
1569 | .end: |
1609 | dd 0 |
1570 | dd 0 |
1610 | ;------------------------------------------------------- |
1571 | ;------------------------------------------------------- |
1611 | align 4 |
1572 | align 4 |
1612 | fb_draw_panel_3: |
1573 | fb_draw_panel_3: |
1613 | mov eax,2 |
1574 | mov eax,2 |
1614 | mov fb_all_redraw,eax |
1575 | mov fb_all_redraw,eax |
1615 | jmp fb_draw_panel_2.1 |
1576 | jmp fb_draw_panel_2.1 |
1616 | align 4 |
1577 | align 4 |
1617 | fb_draw_panel_2: |
1578 | fb_draw_panel_2: |
1618 | xor eax,eax |
1579 | xor eax,eax |
1619 | inc eax |
1580 | inc eax |
1620 | mov fb_all_redraw,eax |
1581 | mov fb_all_redraw,eax |
1621 | call fb_draw_panel_selection |
1582 | call fb_draw_panel_selection |
1622 | .1: |
1583 | .1: |
1623 | call fb_draw_folder_data |
1584 | call fb_draw_folder_data |
1624 | xor eax,eax |
1585 | xor eax,eax |
1625 | mov fb_all_redraw,eax |
1586 | mov fb_all_redraw,eax |
1626 | inc eax |
1587 | inc eax |
1627 | mov fb_draw_scroll_bar,eax |
1588 | mov fb_draw_scroll_bar,eax |
1628 | ret |
1589 | ret |
1629 | > |
1590 | > |