Subversion Repositories Kolibri OS

Rev

Rev 3815 | Rev 3865 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3815 Rev 3831
1
;*****************************************************************************
1
;*****************************************************************************
2
; Open Dialog - for Kolibri OS
2
; Open Dialog - 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  nor the
13
;        * Neither the name of the  nor 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  BE LIABLE FOR ANY
20
; DISCLAIMED. IN NO EVENT SHALL  BE LIABLE FOR ANY
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
;Some documentation for memory
29
;Some documentation for memory
30
;
30
;
31
;area name db 'FFFFFFFF_open_dialog',0 ; FFFFFFFF = PID
31
;area name db 'FFFFFFFF_open_dialog',0 ; FFFFFFFF = PID
32
;
32
;
33
; communication area data
33
; communication area data
34
; flag  ; +0
34
; flag  ; +0
35
; dw 0   ; 0 - empty, 1 - file for open, 2 -folder for open,
35
; dw 0   ; 0 - empty, 1 - file for open, 2 -folder for open,
36
;          3 - cancel, 4 - path=name of area 6822.
36
;          3 - cancel, 4 - path=name of area 6822.
37
;
37
;
38
; type of dialog:  0-Open, 1-Save, 2-Dir
38
; type of dialog:  0-Open, 1-Save, 2-Dir
39
; dw 0 ; +2
39
; dw 0 ; +2
40
;
40
;
41
; window X size ; +4
41
; window X size ; +4
42
; dw 0
42
; dw 0
43
;
43
;
44
; window X position ; +6 
44
; window X position ; +6 
45
; dw 0
45
; dw 0
46
;
46
;
47
; window y size ; +8
47
; window y size ; +8
48
; dw 0
48
; dw 0
49
;
49
;
50
; window Y position ; +10
50
; window Y position ; +10
51
; dw 0
51
; dw 0
52
;
52
;
53
; OpenDialog WINDOW SLOT ; +12
53
; OpenDialog WINDOW SLOT ; +12
54
; dd 0
54
; dd 0
55
;
55
;
56
; file_path ; +16
56
; file_path ; +16
57
; rb 3824 ; path to file
57
; rb 3824 ; path to file
58
;
58
;
59
; file name ; +3840
59
; file name ; +3840
60
; rb 256
60
; rb 256
61
;
61
;
62
; filtration flag ; +4096
62
; filtration flag ; +4096
63
; dd 0 ; flag 0 - no filtration,  1 - filtering
63
; dd 0 ; flag 0 - no filtration,  1 - filtering
64
;
64
;
65
; area for storage of filtering values ; +4100
65
; area for storage of filtering values ; +4100
66
; rb 4092
66
; rb 4092
67
;---------------------------------------------------------------------
67
;---------------------------------------------------------------------
68
	use32
68
	use32
69
	org	0x0
69
	org	0x0
70
 
70
 
71
	db 'MENUET01'
71
	db 'MENUET01'
72
	dd 0x01
72
	dd 0x01
73
	dd START
73
	dd START
74
	dd IM_END
74
	dd IM_END
75
	dd I_END
75
	dd I_END
76
	dd stacktop
76
	dd stacktop
77
	dd param
77
	dd param
78
	dd path
78
	dd path
79
 
79
 
80
include '../../macros.inc'
80
include '../../macros.inc'
81
include '../../develop/libraries/box_lib/load_lib.mac'
81
include '../../develop/libraries/box_lib/load_lib.mac'
82
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
82
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
83
;include 'macros.inc'
83
;include 'macros.inc'
84
;include 'load_lib.mac'
84
;include 'load_lib.mac'
85
;include 'box_lib.mac'
85
;include 'box_lib.mac'
86
@use_library
86
@use_library
87
 
87
 
88
x_minimal_size equ 350
88
x_minimal_size equ 350
89
y_minimal_size equ 250
89
y_minimal_size equ 250
90
;---------------------------------------------------------------------
90
;---------------------------------------------------------------------
91
;---------------------------------------------------------------------
91
;---------------------------------------------------------------------
92
START:
92
START:
93
	mcall	68,11
93
	mcall	68,11
94
	mcall	66,1,1
94
	mcall	66,1,1
95
	mcall	40,0x27
95
	mcall	40,0x27
96
	call	get_communication_area
96
	call	get_communication_area
97
	
97
	
98
	call	get_active_pocess
98
	call	get_active_pocess
99
 
99
 
100
load_libraries	l_libs_start,end_l_libs
100
load_libraries	l_libs_start,end_l_libs
101
	test	eax,eax
101
	test	eax,eax
102
	jnz	button.exit
102
	jnz	button.exit
103
; initialize sort
103
; initialize sort
104
	push	dword 1
104
	push	dword 1
105
	call	dword [sort_init]
105
	call	dword [sort_init]
106
; unpack deflate
106
; unpack deflate
107
	mov	eax,[unpack_DeflateUnpack2]
107
	mov	eax,[unpack_DeflateUnpack2]
108
	mov	[deflate_unpack],eax
108
	mov	[deflate_unpack],eax
109
 
109
 
110
	mov	esi,start_pach
110
	mov	esi,start_pach
111
	mov	edi,previous_dir_path
111
	mov	edi,previous_dir_path
112
	call	copy_dir_name.1
112
	call	copy_dir_name.1
113
	
113
	
114
	call	load_root_directory
114
	call	load_root_directory
115
	call	load_start_directory
115
	call	load_start_directory
116
	call	sort_directory
116
	call	sort_directory
117
	call	load_icons
117
	call	load_icons
118
	call	convert_icons
118
	call	convert_icons
119
	call	load_ini
119
	call	load_ini
120
	call	calc_ini
120
	call	calc_ini
121
	jmp	red_1
121
	jmp	red_1
122
;---------------------------------------------------------------------
122
;---------------------------------------------------------------------
123
red:
123
red:
124
	call	control_minimal_window_size
124
	call	control_minimal_window_size
125
red_1:
125
red_1:
126
	call	draw_window
126
	call	draw_window
127
;---------------------------------------------------------------------
127
;---------------------------------------------------------------------
128
still:
128
still:
129
	mcall	10
129
	mcall	10
130
	cmp	eax,1
130
	cmp	eax,1
131
	je	red
131
	je	red
132
	cmp	eax,2
132
	cmp	eax,2
133
	je	key
133
	je	key
134
	cmp	eax,3
134
	cmp	eax,3
135
	je	button
135
	je	button
136
	cmp	eax,6
136
	cmp	eax,6
137
	je	mouse
137
	je	mouse
138
	jmp	still
138
	jmp	still
139
;---------------------------------------------------------------------
139
;---------------------------------------------------------------------
140
control_minimal_window_size:
140
control_minimal_window_size:
141
	pusha
141
	pusha
142
	call	get_window_param
142
	call	get_window_param
143
	test	[window_status],10b
143
	test	[window_status],10b
144
	jnz	.end	;red_1
144
	jnz	.end	;red_1
145
	test	[window_status],100b
145
	test	[window_status],100b
146
	jnz	.end	;red_1
146
	jnz	.end	;red_1
147
	test	[window_status],1b
147
	test	[window_status],1b
148
	jnz	.end	;red_1
148
	jnz	.end	;red_1
149
	mov	esi,-1
149
	mov	esi,-1
150
	mov	eax,procinfo
150
	mov	eax,procinfo
151
	mov	eax,[eax+46]
151
	mov	eax,[eax+46]
152
	cmp	eax,dword y_minimal_size ;200
152
	cmp	eax,dword y_minimal_size ;200
153
	jae	@f
153
	jae	@f
154
	mov	esi,dword y_minimal_size ;200
154
	mov	esi,dword y_minimal_size ;200
155
	mcall	67,-1,ebx,ebx
155
	mcall	67,-1,ebx,ebx
156
@@:
156
@@:
157
	mov	edx,-1
157
	mov	edx,-1
158
	mov	eax,procinfo
158
	mov	eax,procinfo
159
	mov	eax,[eax+42]
159
	mov	eax,[eax+42]
160
	cmp	eax,dword x_minimal_size ;300
160
	cmp	eax,dword x_minimal_size ;300
161
	jae	@f
161
	jae	@f
162
	mov	edx,dword x_minimal_size ;300
162
	mov	edx,dword x_minimal_size ;300
163
	mcall	67,-1,ebx,,ebx
163
	mcall	67,-1,ebx,,ebx
164
@@:
164
@@:
165
.end:
165
.end:
166
	popa
166
	popa
167
	ret
167
	ret
168
;---------------------------------------------------------------------
168
;---------------------------------------------------------------------
169
key:
169
key:
170
	mov	al,[focus_pointer]
170
	mov	al,[focus_pointer]
171
	test	al,al
171
	test	al,al
172
	jne	key_ASCII
172
	jne	key_ASCII
173
	mcall	2
173
	mcall	2
174
	xor	ebx,ebx
174
	xor	ebx,ebx
175
	cmp	[extended_key],1
175
	cmp	[extended_key],1
176
	je	.extended_key
176
	je	.extended_key
177
	test	al,al
177
	test	al,al
178
	jnz	still
178
	jnz	still
179
	cmp	ah,0xE0
179
	cmp	ah,0xE0
180
	jne	@f
180
	jne	@f
181
	mov	[extended_key],1
181
	mov	[extended_key],1
182
	jmp	still
182
	jmp	still
183
@@:
183
@@:
184
	cmp	ah,72	; arrow	up
184
	cmp	ah,72	; arrow	up
185
	je	.2
185
	je	.2
186
	cmp	ah,80	; arrow	down
186
	cmp	ah,80	; arrow	down
187
	je	.1
187
	je	.1
188
	cmp	ah,28	; Enter
188
	cmp	ah,28	; Enter
189
	je	.7
189
	je	.7
190
	cmp	ah,1	; Esc
190
	cmp	ah,1	; Esc
191
	je	button.exit
191
	je	button.exit
192
	cmp	ah,14	; Backspace
192
	cmp	ah,14	; Backspace
193
	je	button.exit_dir
193
	je	button.exit_dir
194
	cmp	ah,187	; F1
194
	cmp	ah,187	; F1
195
	je	select_disk
195
	je	select_disk
196
	cmp	ah,188	; F2
196
	cmp	ah,188	; F2
197
	je	select_sort
197
	je	select_sort
198
	cmp	ah,189	; F3
198
	cmp	ah,189	; F3
199
	je	select_filter
199
	je	select_filter
200
	cmp	ah,19	; R
200
	cmp	ah,19	; R
201
	je	button.reload_dir
201
	je	button.reload_dir
202
	cmp	ah,42
202
	cmp	ah,42
203
	je	key_shift_up
203
	je	key_shift_up
204
	cmp	ah,54
204
	cmp	ah,54
205
	je	key_shift_up
205
	je	key_shift_up
206
	cmp	ah,170
206
	cmp	ah,170
207
	je	key_shift_down
207
	je	key_shift_down
208
	cmp	ah,182
208
	cmp	ah,182
209
	je	key_shift_down
209
	je	key_shift_down
210
	cmp	ah,29
210
	cmp	ah,29
211
	je	key_ctrl_up
211
	je	key_ctrl_up
212
	cmp	ah,157
212
	cmp	ah,157
213
	je	key_ctrl_down
213
	je	key_ctrl_down
214
	cmp	ah,56
214
	cmp	ah,56
215
	je	key_alt_up
215
	je	key_alt_up
216
	cmp	ah,184
216
	cmp	ah,184
217
	je	key_alt_down
217
	je	key_alt_down
218
	cmp	ah,206	; NumPad+ Up
218
	cmp	ah,206	; NumPad+ Up
219
	je	NumPad_plus_Up
219
	je	NumPad_plus_Up
220
	cmp	ah,202	; NumPad- Up
220
	cmp	ah,202	; NumPad- Up
221
	je	NumPad_minus_Up
221
	je	NumPad_minus_Up
222
	cmp	ah,183	; NumPad* Up
222
	cmp	ah,183	; NumPad* Up
223
	je	NumPad_invert_Up
223
	je	NumPad_invert_Up
224
	cmp	ah,158
224
	cmp	ah,158
225
	je	symbol_a_up
225
	je	symbol_a_up
226
	cmp	ah,15	; Tab down
226
	cmp	ah,15	; Tab down
227
	je	change_focus_area_press_Tab_key
227
	je	change_focus_area_press_Tab_key
228
	cmp	ah,143	; Tab up
228
	cmp	ah,143	; Tab up
229
	je	change_focus_area_check_Tab_key
229
	je	change_focus_area_check_Tab_key
-
 
230
; compare for "1,2,3,4,5,6,7,8,9,0,(-),(=)"
-
 
231
	cmp	ah,2
-
 
232
	jb	still
-
 
233
	cmp	ah,13
-
 
234
	jbe	.12
-
 
235
; compare for "q,w,e,r,t,y,u,i,o,p,([),(])"	
-
 
236
	cmp	ah,16
-
 
237
	jb	still
-
 
238
	cmp	ah,27
-
 
239
	jbe	.12
-
 
240
; compare for "a,s,d,f,g,h,j,k,l,(;),('),(`)"	
-
 
241
	cmp	ah,30
-
 
242
	jb	still
-
 
243
	cmp	ah,41
-
 
244
	jbe	.12
-
 
245
; compare for "(\),z,x,c,v,b,n,m,(,),(.),(/)"	
-
 
246
	cmp	ah,43
-
 
247
	jb	still
-
 
248
	cmp	ah,53
-
 
249
	jbe	.12	
230
	jmp	still
250
	jmp	still
231
.extended_key:
251
.extended_key:
232
	mov	[extended_key],0
252
	mov	[extended_key],0
233
	cmp	ah,80	; arrow down
253
	cmp	ah,80	; arrow down
234
	je	.1
254
	je	.1
235
	cmp	ah,72	; arrow up
255
	cmp	ah,72	; arrow up
236
	je	.2
256
	je	.2
237
	cmp	ah,81	; PageDown
257
	cmp	ah,81	; PageDown
238
	je	.3
258
	je	.3
239
	cmp	ah,73	; PageUp
259
	cmp	ah,73	; PageUp
240
	je	.4
260
	je	.4
241
	cmp	ah,71	; Home
261
	cmp	ah,71	; Home
242
	je	.5
262
	je	.5
243
	cmp	ah,79	; End
263
	cmp	ah,79	; End
244
	je	.6
264
	je	.6
245
	cmp	ah,28	; Enter
265
	cmp	ah,28	; Enter
246
	je	.7
266
	je	.7
247
	cmp	ah,82	; Insert
267
	cmp	ah,82	; Insert
248
	je	.8
268
	je	.8
249
	
269
	
250
	cmp	ah,29
270
	cmp	ah,29
251
	je	key_ctrl_up
271
	je	key_ctrl_up
252
	cmp	ah,157
272
	cmp	ah,157
253
	je	key_ctrl_down
273
	je	key_ctrl_down
254
	cmp	ah,56
274
	cmp	ah,56
255
	je	key_alt_up
275
	je	key_alt_up
256
	cmp	ah,184
276
	cmp	ah,184
257
	je	key_alt_down
277
	je	key_alt_down
258
	jmp	still
278
	jmp	still
259
;---------------------------------
279
;---------------------------------
-
 
280
.12:
-
 
281
	inc	ebx	; 12 - Search with key
-
 
282
;---------------------------------
260
.11:
283
.11:
261
	inc	ebx	; 11
284
	inc	ebx	; 11 - Invert Mark
262
;---------------------------------
285
;---------------------------------
263
.10:
286
.10:
264
	inc	ebx	; 10
287
	inc	ebx	; 10 - Unmark All
265
;---------------------------------
288
;---------------------------------
266
.9:
289
.9:
267
	inc	ebx	; 9
290
	inc	ebx	; 9 - Mark All
268
;---------------------------------
291
;---------------------------------
269
.8:
292
.8:
270
	inc	ebx	; 8
293
	inc	ebx	; 8 - Insert (Mark)
271
;---------------------------------
294
;---------------------------------
272
.7:
295
.7:
273
	inc	ebx	; 7
296
	inc	ebx	; 7 - Enter
274
;---------------------------------
297
;---------------------------------
275
.6:
298
.6:
276
	inc	ebx	; 6
299
	inc	ebx	; 6 - End
277
;---------------------------------
300
;---------------------------------
278
.5:
301
.5:
279
	inc	ebx	; 5
302
	inc	ebx	; 5 - Home
280
;---------------------------------
303
;---------------------------------
281
.4:
304
.4:
282
	inc	ebx	; 4
305
	inc	ebx	; 4 - PageUp
283
;---------------------------------
306
;---------------------------------
284
.3:
307
.3:
285
	inc	ebx	; 3
308
	inc	ebx	; 3 - PageDown
286
;---------------------------------
309
;---------------------------------
287
.2:
310
.2:
288
	inc	ebx	; 2
311
	inc	ebx	; 2 - arrow up
289
;---------------------------------
312
;---------------------------------
290
.1:
313
.1:
291
	inc	ebx	; 1
314
	inc	ebx	; 1 - arrow down
292
;---------------------------------
315
;---------------------------------
293
	call	.key_action
316
	call	.key_action
294
	
317
	
295
;	movzx	ecx,word [file_browser_data_1.start_draw_cursor_line]
318
;	movzx	ecx,word [file_browser_data_1.start_draw_cursor_line]
296
;	mcall	47,0x80000,,<50,0>,0x40000000,0xffffff
319
;	mcall	47,0x80000,,<50,0>,0x40000000,0xffffff
297
;	movzx	ecx,word [file_browser_data_1.size_y]
320
;	movzx	ecx,word [file_browser_data_1.size_y]
298
;	mcall	47,0x80000,,<150,0>,0x40000000,0xffffff
321
;	mcall	47,0x80000,,<150,0>,0x40000000,0xffffff
299
 
322
 
300
	mov	eax,file_browser_data_1.mouse_keys_delta
323
	mov	eax,file_browser_data_1.mouse_keys_delta
301
	cmp	[eax],dword 3
324
	cmp	[eax],dword 3
302
	jne	still
325
	jne	still
303
	xor	ebx,ebx
326
	xor	ebx,ebx
304
	mov	[eax],ebx
327
	mov	[eax],ebx
305
	call	load_next_dir
328
	call	load_next_dir
306
	jmp	still
329
	jmp	still
307
;-------------------------------------------------------
330
;-------------------------------------------------------
308
.key_action:
331
.key_action:
309
	mov	[file_browser_data_1.key_action],ebx
332
	mov	[file_browser_data_1.key_action],bx
-
 
333
	shr	ax,8
-
 
334
	mov	[file_browser_data_1.key_action_num],ax
310
 
335
 
311
	push	dword file_browser_data_1
336
	push	dword file_browser_data_1
312
	call	[FileBrowser_key]
337
	call	[FileBrowser_key]
313
 
338
 
314
	call	draw_open_button_label
339
	call	draw_open_button_label
315
 
340
 
316
	cmp	[file_browser_data_1.draw_scroll_bar],0
341
	cmp	[file_browser_data_1.draw_scroll_bar],0
317
	je	@f
342
	je	@f
318
	call	draw_scrollbar1
343
	call	draw_scrollbar1
319
	mov	[file_browser_data_1.draw_scroll_bar],0
344
	mov	[file_browser_data_1.draw_scroll_bar],0
320
@@:
345
@@:
321
	ret
346
	ret
322
;---------------------------------------------------------------------
347
;---------------------------------------------------------------------
323
change_focus_area_Tab_key_ASCII:
348
change_focus_area_Tab_key_ASCII:
324
	xor	eax,eax
349
	xor	eax,eax
325
	inc	eax
350
	inc	eax
326
	mov	[Tab_key_block],al
351
	mov	[Tab_key_block],al
327
	jmp	change_focus_area
352
	jmp	change_focus_area
328
;---------------------------------------------------------------------
353
;---------------------------------------------------------------------
329
change_focus_area_press_Tab_key:
354
change_focus_area_press_Tab_key:
330
	cmp	[open_dialog_type],1
355
	cmp	[open_dialog_type],1
331
	jne	still
356
	jne	still
332
	mov	al,[Tab_key_block]
357
	mov	al,[Tab_key_block]
333
	test	al,al
358
	test	al,al
334
	jnz	still
359
	jnz	still
335
	xor	eax,eax
360
	xor	eax,eax
336
	inc	eax
361
	inc	eax
337
	mov	[Tab_key],al
362
	mov	[Tab_key],al
338
	jmp	still
363
	jmp	still
339
;---------------------------------------------------------------------
364
;---------------------------------------------------------------------
340
change_focus_area_check_Tab_key:
365
change_focus_area_check_Tab_key:
341
	cmp	[open_dialog_type],1
366
	cmp	[open_dialog_type],1
342
	jne	still
367
	jne	still
343
	xor	eax,eax
368
	xor	eax,eax
344
	mov	[Tab_key_block],al
369
	mov	[Tab_key_block],al
345
	mov	al,[Tab_key]
370
	mov	al,[Tab_key]
346
	test	al,al
371
	test	al,al
347
	jz	still
372
	jz	still
348
	xor	eax,eax
373
	xor	eax,eax
349
	mov	[Tab_key],al
374
	mov	[Tab_key],al
350
;---------------------------------------------------------------------
375
;---------------------------------------------------------------------
351
change_focus_area:
376
change_focus_area:
352
	mov	al,[focus_pointer]
377
	mov	al,[focus_pointer]
353
	inc	al
378
	inc	al
354
	and	al,1
379
	and	al,1
355
	mov	[focus_pointer],al
380
	mov	[focus_pointer],al
356
.1:
381
.1:
357
	mov	edi,edit1
382
	mov	edi,edit1
358
	test	al,al
383
	test	al,al
359
	jne	@f
384
	jne	@f
360
	mov	[file_browser_data_1.select_panel_counter],1
385
	mov	[file_browser_data_1.select_panel_counter],1
361
	and	[edi+44],dword 0xFFFFFFFD	; ed_focus
386
	and	[edi+44],dword 0xFFFFFFFD	; ed_focus
362
	mov	[edi+12],dword 0xffffff	; color white
387
	mov	[edi+12],dword 0xffffff	; color white
363
	call	draw_draw_file_browser1
388
	call	draw_draw_file_browser1
364
	mcall	66,1,1
389
	mcall	66,1,1
365
	jmp	still
390
	jmp	still
366
@@:
391
@@:
367
	mov	[file_browser_data_1.select_panel_counter],0
392
	mov	[file_browser_data_1.select_panel_counter],0
368
	or	[edi+44],dword ed_focus
393
	or	[edi+44],dword ed_focus
369
	mov	[edi+12],dword 0xffffb0	; color yellow
394
	mov	[edi+12],dword 0xffffb0	; color yellow
370
	call	draw_draw_file_browser1
395
	call	draw_draw_file_browser1
371
	mcall	66,1,0
396
	mcall	66,1,0
372
	jmp	still
397
	jmp	still
373
;---------------------------------------------------------------------
398
;---------------------------------------------------------------------
374
key_ASCII:
399
key_ASCII:
375
	mcall	2
400
	mcall	2
376
	cmp	ah,9
401
	cmp	ah,9
377
	je	change_focus_area_Tab_key_ASCII
402
	je	change_focus_area_Tab_key_ASCII
378
	cmp	ah,13
403
	cmp	ah,13
379
	je	.13
404
	je	.13
380
	cmp	ah,27
405
	cmp	ah,27
381
	je	button.exit
406
	je	button.exit
382
	push	dword name_editboxes
407
	push	dword name_editboxes
383
	call	[edit_box_key]
408
	call	[edit_box_key]
384
	jmp	still
409
	jmp	still
385
.13:
410
.13:
386
;	cmp [open_dialog_type],2	; Select dir
411
;	cmp [open_dialog_type],2	; Select dir
387
;	je	file_no_folder
412
;	je	file_no_folder
388
;	cmp	[open_dialog_type],1	; Save file
413
;	cmp	[open_dialog_type],1	; Save file
389
;	jne	user_selected_name_action	; load_dir
414
;	jne	user_selected_name_action	; load_dir
390
;	inc	[open_dialog_type]
415
;	inc	[open_dialog_type]
391
	jmp	file_no_folder
416
	jmp	file_no_folder
392
;.load_dir:
417
;.load_dir:
393
;	mov	[file_browser_data_1.select_panel_counter],1
418
;	mov	[file_browser_data_1.select_panel_counter],1
394
;	xor	eax,eax
419
;	xor	eax,eax
395
;	mov	[focus_pointer],al
420
;	mov	[focus_pointer],al
396
;	mcall	66,1,1
421
;	mcall	66,1,1
397
 
422
 
398
;	xor	eax,eax
423
;	xor	eax,eax
399
;	mov	esi,dir_path
424
;	mov	esi,dir_path
400
;	cld
425
;	cld
401
;@@:
426
;@@:
402
;	lodsb
427
;	lodsb
403
;	test	al,al
428
;	test	al,al
404
;	jne	@r
429
;	jne	@r
405
;	sub	esi,2
430
;	sub	esi,2
406
;	cmp	[esi],byte '/'
431
;	cmp	[esi],byte '/'
407
;	jne	@f
432
;	jne	@f
408
;	xor	eax,eax
433
;	xor	eax,eax
409
;	mov	[esi],al
434
;	mov	[esi],al
410
;@@:
435
;@@:
411
;	call	load_next_dir.1
436
;	call	load_next_dir.1
412
;	jmp	still
437
;	jmp	still
413
;---------------------------------------------------------------------
438
;---------------------------------------------------------------------
414
user_selected_name_action:
439
user_selected_name_action:
415
	mov	eax,[communication_area]
440
	mov	eax,[communication_area]
416
	test	eax,eax
441
	test	eax,eax
417
	jnz	@f
442
	jnz	@f
418
	call	control_minimal_window_size
443
	call	control_minimal_window_size
419
	call	draw_window
444
	call	draw_window
420
	ret
445
	ret
421
@@:
446
@@:
422
	add	eax,16	;12
447
	add	eax,16	;12
423
;copy_path	user_selected_name,dir_path,eax,0
448
;copy_path	user_selected_name,dir_path,eax,0
424
	mov	esi,dir_path
449
	mov	esi,dir_path
425
	mov	edi,eax
450
	mov	edi,eax
426
	call	copy_dir_name
451
	call	copy_dir_name
427
	mov	[edi-1],byte '/'
452
	mov	[edi-1],byte '/'
428
	mov	esi,user_selected_name
453
	mov	esi,user_selected_name
429
	call	copy_dir_name
454
	call	copy_dir_name
430
	
455
	
431
	mov	eax,[communication_area]
456
	mov	eax,[communication_area]
432
	mov	[eax],word 1
457
	mov	[eax],word 1
433
	jmp	button.exit
458
	jmp	button.exit
434
;---------------------------------------------------------------------	
459
;---------------------------------------------------------------------	
435
select_disk:
460
select_disk:
436
	call	check_alt
461
	call	check_alt
437
.1:
462
.1:
438
	call	load_root_directory
463
	call	load_root_directory
439
	xor	eax,eax
464
	xor	eax,eax
440
	mov	[menu_data_1.ret_key],eax
465
	mov	[menu_data_1.ret_key],eax
441
 
466
 
442
	push	dword menu_data_1
467
	push	dword menu_data_1
443
	call	[menu_bar_activate]
468
	call	[menu_bar_activate]
444
 
469
 
445
	call	clear_control_key_flag
470
	call	clear_control_key_flag
446
 
471
 
447
	mov	eax,[menu_data_1.ret_key]
472
	mov	eax,[menu_data_1.ret_key]
448
	mov	[menu_data_1.ret_key],dword 0
473
	mov	[menu_data_1.ret_key],dword 0
449
	cmp	eax,1
474
	cmp	eax,1
450
	je	select_filter.1
475
	je	select_filter.1
451
 
476
 
452
	cmp	eax,2
477
	cmp	eax,2
453
	je	select_sort.1
478
	je	select_sort.1
454
 
479
 
455
	cmp	[menu_data_1.click],dword 1
480
	cmp	[menu_data_1.click],dword 1
456
	jne	still
481
	jne	still
457
 
482
 
458
	cmp	[menu_data_1.cursor_out],dword 0
483
	cmp	[menu_data_1.cursor_out],dword 0
459
	jne	analyse_out_menu_1
484
	jne	analyse_out_menu_1
460
	jmp	still
485
	jmp	still
461
;---------------------------------------------------------------------
486
;---------------------------------------------------------------------
462
select_sort:
487
select_sort:
463
	call	check_alt
488
	call	check_alt
464
.1:
489
.1:
465
	xor	eax,eax
490
	xor	eax,eax
466
	mov	[menu_data_2.ret_key],eax
491
	mov	[menu_data_2.ret_key],eax
467
 
492
 
468
	push	dword menu_data_2
493
	push	dword menu_data_2
469
	call	[menu_bar_activate]
494
	call	[menu_bar_activate]
470
 
495
 
471
	call	clear_control_key_flag
496
	call	clear_control_key_flag
472
 
497
 
473
	mov	eax,[menu_data_2.ret_key]
498
	mov	eax,[menu_data_2.ret_key]
474
	mov	[menu_data_2.ret_key],dword 0
499
	mov	[menu_data_2.ret_key],dword 0
475
	cmp	eax,1
500
	cmp	eax,1
476
	je	select_disk.1
501
	je	select_disk.1
477
 
502
 
478
	cmp	eax,2
503
	cmp	eax,2
479
	je	select_filter.1
504
	je	select_filter.1
480
 
505
 
481
 
506
 
482
	cmp	[menu_data_2.click],dword 1
507
	cmp	[menu_data_2.click],dword 1
483
	jne	still
508
	jne	still
484
 
509
 
485
	cmp	[menu_data_2.cursor_out],dword 0
510
	cmp	[menu_data_2.cursor_out],dword 0
486
	jne	analyse_out_menu_2
511
	jne	analyse_out_menu_2
487
	jmp	still
512
	jmp	still
488
;---------------------------------------------------------------------
513
;---------------------------------------------------------------------
489
select_filter:
514
select_filter:
490
	call	check_alt
515
	call	check_alt
491
.1:
516
.1:
492
	xor	eax,eax
517
	xor	eax,eax
493
	mov	[menu_data_3.ret_key],eax
518
	mov	[menu_data_3.ret_key],eax
494
 
519
 
495
	push	dword menu_data_3
520
	push	dword menu_data_3
496
	call	[menu_bar_activate]
521
	call	[menu_bar_activate]
497
 
522
 
498
	call	clear_control_key_flag
523
	call	clear_control_key_flag
499
 
524
 
500
	mov	eax,[menu_data_3.ret_key]
525
	mov	eax,[menu_data_3.ret_key]
501
	mov	[menu_data_3.ret_key],dword 0
526
	mov	[menu_data_3.ret_key],dword 0
502
	cmp	eax,1
527
	cmp	eax,1
503
	je	select_sort.1
528
	je	select_sort.1
504
 
529
 
505
	cmp	eax,2
530
	cmp	eax,2
506
	je	select_disk.1
531
	je	select_disk.1
507
 
532
 
508
 
533
 
509
	cmp	[menu_data_3.click],dword 1
534
	cmp	[menu_data_3.click],dword 1
510
	jne	still
535
	jne	still
511
 
536
 
512
	cmp	[menu_data_3.cursor_out],dword 0
537
	cmp	[menu_data_3.cursor_out],dword 0
513
	jne	analyse_out_menu_3
538
	jne	analyse_out_menu_3
514
	jmp	still
539
	jmp	still
515
;---------------------------------------------------------------------
540
;---------------------------------------------------------------------
516
symbol_a_up:
541
symbol_a_up:
517
NumPad_plus_Up:
542
NumPad_plus_Up:
518
	call	check_ctrl
543
	call	check_ctrl
519
	jmp	key.9
544
	jmp	key.9
520
;---------------------------------------
545
;---------------------------------------
521
NumPad_minus_Up:
546
NumPad_minus_Up:
522
	call	check_ctrl
547
	call	check_ctrl
523
	jmp	key.10
548
	jmp	key.10
524
;---------------------------------------
549
;---------------------------------------
525
NumPad_invert_Up:
550
NumPad_invert_Up:
526
	call	check_ctrl
551
	call	check_ctrl
527
	jmp	key.11
552
	jmp	key.11
528
;---------------------------------------	
553
;---------------------------------------	
529
check_alt:
554
check_alt:
530
	xor	eax,eax
555
	xor	eax,eax
531
	mov	al,[alt_flag]
556
	mov	al,[alt_flag]
532
	test	eax,eax
557
	test	eax,eax
533
	jz	@f
558
	jz	@f
534
	xor	ebx,ebx
559
	xor	ebx,ebx
535
	ret
560
	ret
536
@@:
561
@@:
537
	add	esp,4
562
	add	esp,4
538
	jmp	still
563
	jmp	still
539
;---------------------------------------	
564
;---------------------------------------	
540
check_ctrl:
565
check_ctrl:
541
	xor	eax,eax
566
	xor	eax,eax
542
	mov	al,[ctrl_flag]
567
	mov	al,[ctrl_flag]
543
	test	eax,eax
568
	test	eax,eax
544
	jz	@f
569
	jz	@f
545
	xor	ebx,ebx
570
	xor	ebx,ebx
546
	ret
571
	ret
547
@@:
572
@@:
548
	add	esp,4
573
	add	esp,4
549
	jmp	still
574
	jmp	still
550
;---------------------------------------------------------------------
575
;---------------------------------------------------------------------
551
clear_control_key_flag:
576
clear_control_key_flag:
552
	xor	eax,eax
577
	xor	eax,eax
553
	mov	[shift_flag],al
578
	mov	[shift_flag],al
554
	mov	[ctrl_flag],al
579
	mov	[ctrl_flag],al
555
	mov	[alt_flag],al
580
	mov	[alt_flag],al
556
	ret
581
	ret
557
;---------------------------------------------------------------------
582
;---------------------------------------------------------------------
558
key_shift_up:
583
key_shift_up:
559
	mov	[shift_flag],1
584
	mov	[shift_flag],1
560
	jmp	still
585
	jmp	still
561
;---------------------------------------------------------------------
586
;---------------------------------------------------------------------
562
key_shift_down:
587
key_shift_down:
563
	mov	[shift_flag],0
588
	mov	[shift_flag],0
564
	jmp	still
589
	jmp	still
565
;---------------------------------------------------------------------
590
;---------------------------------------------------------------------
566
key_ctrl_up:
591
key_ctrl_up:
567
	mov	[ctrl_flag],1
592
	mov	[ctrl_flag],1
568
	jmp	still
593
	jmp	still
569
;---------------------------------------------------------------------
594
;---------------------------------------------------------------------
570
key_ctrl_down:
595
key_ctrl_down:
571
	mov	[ctrl_flag],0
596
	mov	[ctrl_flag],0
572
	jmp	still
597
	jmp	still
573
;---------------------------------------------------------------------
598
;---------------------------------------------------------------------
574
key_alt_up:
599
key_alt_up:
575
	mov	[alt_flag],1
600
	mov	[alt_flag],1
576
	jmp	still
601
	jmp	still
577
;---------------------------------------------------------------------
602
;---------------------------------------------------------------------
578
key_alt_down:
603
key_alt_down:
579
	mov	[alt_flag],0
604
	mov	[alt_flag],0
580
	jmp	still
605
	jmp	still
581
;---------------------------------------------------------------------
606
;---------------------------------------------------------------------
582
button:
607
button:
583
	mcall	17
608
	mcall	17
584
	cmp	ah,6
609
	cmp	ah,6
585
	je	.reload_dir_1
610
	je	.reload_dir_1
586
	cmp	ah,4
611
	cmp	ah,4
587
	je	.open_dir_or_file
612
	je	.open_dir_or_file
588
	cmp	ah,3
613
	cmp	ah,3
589
	je	.exit
614
	je	.exit
590
	cmp	ah,2
615
	cmp	ah,2
591
	je	.exit_dir
616
	je	.exit_dir
592
	cmp	ah,1
617
	cmp	ah,1
593
	jne	still
618
	jne	still
594
.exit:
619
.exit:
595
	mov	eax,[communication_area]
620
	mov	eax,[communication_area]
596
	test	eax,eax
621
	test	eax,eax
597
	jz	@f
622
	jz	@f
598
	cmp	[eax],word 1
623
	cmp	[eax],word 1
599
	je	@f
624
	je	@f
600
	mov	[eax],word 3
625
	mov	[eax],word 3
601
@@:
626
@@:
602
	mov	eax,[N_error]
627
	mov	eax,[N_error]
603
	test	eax,eax
628
	test	eax,eax
604
	jz	@f
629
	jz	@f
605
	call	start_error_window_thread
630
	call	start_error_window_thread
606
@@:
631
@@:
607
	call	get_window_param
632
	call	get_window_param
608
	mov	ebx,[communication_area]
633
	mov	ebx,[communication_area]
609
	mov	ecx,procinfo
634
	mov	ecx,procinfo
610
;	mov	eax,[window_x]
635
;	mov	eax,[window_x]
611
	mov	eax,[ecx+34]
636
	mov	eax,[ecx+34]
612
	shl	eax,16
637
	shl	eax,16
613
	add	eax,[ecx+42]
638
	add	eax,[ecx+42]
614
	mov	[ebx+4],eax
639
	mov	[ebx+4],eax
615
;	mov	eax,[window_y]
640
;	mov	eax,[window_y]
616
	mov	eax,[ecx+38]
641
	mov	eax,[ecx+38]
617
	shl	eax,16
642
	shl	eax,16
618
	add	eax,[ecx+46]
643
	add	eax,[ecx+46]
619
	mov	[ebx+8],eax
644
	mov	[ebx+8],eax
620
 
645
 
621
	mcall	-1
646
	mcall	-1
622
;---------------------------------------------------------------------
647
;---------------------------------------------------------------------
623
.reload_dir:
648
.reload_dir:
624
	call	check_ctrl
649
	cmp	[ctrl_flag],bl
-
 
650
	je	key.12 ; Just symbol 'R' or 'r'
625
.reload_dir_1:
651
.reload_dir_1:
626
	call	load_next_dir.1
652
	call	load_next_dir.1
627
	jmp	still
653
	jmp	still
628
;---------------------------------------------------------------------
654
;---------------------------------------------------------------------
629
.exit_dir:
655
.exit_dir:
630
	call	load_next_dir.exit_dir
656
	call	load_next_dir.exit_dir
631
	jmp	still
657
	jmp	still
632
;---------------------------------------------------------------------
658
;---------------------------------------------------------------------
633
.open_dir_or_file:
659
.open_dir_or_file:
634
	cmp	[open_dialog_type],2	;Select	dir
660
	cmp	[open_dialog_type],2	;Select	dir
635
	je	file_no_folder
661
	je	file_no_folder
636
	
662
	
637
	cmp	[open_dialog_type],1	;Save file
663
	cmp	[open_dialog_type],1	;Save file
638
	jne	@f
664
	jne	@f
639
	mov	al,[focus_pointer]
665
	mov	al,[focus_pointer]
640
	test	al,al
666
	test	al,al
641
	jne	file_no_folder	
667
	jne	file_no_folder	
642
@@:
668
@@:
643
	xor	ebx,ebx
669
	xor	ebx,ebx
644
	jmp	key.7
670
	jmp	key.7
645
;---------------------------------------------------------------------
671
;---------------------------------------------------------------------
646
thread_start:
672
thread_start:
647
	mov	eax,[N_error]
673
	mov	eax,[N_error]
648
	cmp	al,1
674
	cmp	al,1
649
	jne	@f
675
	jne	@f
650
	mov	[N_error],load_ini_error_type
676
	mov	[N_error],load_ini_error_type
651
	mov	[error_path],file_name
677
	mov	[error_path],file_name
652
	jmp	.error_type
678
	jmp	.error_type
653
@@:
679
@@:
654
	cmp	al,2
680
	cmp	al,2
655
	jne	@f
681
	jne	@f
656
	mov	[N_error],load_icons_error_type
682
	mov	[N_error],load_icons_error_type
657
	mov	[error_path],file_name
683
	mov	[error_path],file_name
658
	jmp	.error_type
684
	jmp	.error_type
659
@@:
685
@@:
660
	cmp	al,3
686
	cmp	al,3
661
	jne	@f
687
	jne	@f
662
	mov	[N_error],memory_free_error_type
688
	mov	[N_error],memory_free_error_type
663
	xor	eax,eax
689
	xor	eax,eax
664
	mov	[error_path],eax
690
	mov	[error_path],eax
665
	mov	[error_type],eax
691
	mov	[error_type],eax
666
	jmp	.red
692
	jmp	.red
667
@@:
693
@@:
668
	cmp	al,4
694
	cmp	al,4
669
	jne	@f
695
	jne	@f
670
	mov	[N_error],memory_get_error_type
696
	mov	[N_error],memory_get_error_type
671
	xor	eax,eax
697
	xor	eax,eax
672
	mov	[error_path],eax
698
	mov	[error_path],eax
673
	mov	[error_type],eax
699
	mov	[error_type],eax
674
	jmp	.red
700
	jmp	.red
675
@@:
701
@@:
676
	cmp	al,5
702
	cmp	al,5
677
	jne	@f
703
	jne	@f
678
	mov	[N_error],load_directory_error_type
704
	mov	[N_error],load_directory_error_type
679
	mov	[error_path],dir_path
705
	mov	[error_path],dir_path
680
	jmp	.error_type
706
	jmp	.error_type
681
@@:
707
@@:
682
	cmp	al,6
708
	cmp	al,6
683
	jne	.button
709
	jne	.button
684
	mov	[N_error],convert_icons_error_type
710
	mov	[N_error],convert_icons_error_type
685
	mov	[error_path],file_name
711
	mov	[error_path],file_name
686
	xor	eax,eax
712
	xor	eax,eax
687
	mov	[error_type],eax
713
	mov	[error_type],eax
688
	jmp	.red
714
	jmp	.red
689
.error_type:
715
.error_type:
690
	mov	eax,[error_type]
716
	mov	eax,[error_type]
691
	shl	eax,2
717
	shl	eax,2
692
	add	eax,error_fs_text_pointers
718
	add	eax,error_fs_text_pointers
693
	mov	eax,[eax]
719
	mov	eax,[eax]
694
	mov	[error_type],eax
720
	mov	[error_type],eax
695
.red:
721
.red:
696
	call	draw_error_window
722
	call	draw_error_window
697
.still:
723
.still:
698
	mcall	10
724
	mcall	10
699
	cmp	eax,1
725
	cmp	eax,1
700
	je	.red
726
	je	.red
701
	cmp	eax,2
727
	cmp	eax,2
702
	je	.key
728
	je	.key
703
	cmp	eax,3
729
	cmp	eax,3
704
	je	.button
730
	je	.button
705
	jmp	.still
731
	jmp	.still
706
.key:
732
.key:
707
	mcall	2
733
	mcall	2
708
	jmp	.still
734
	jmp	.still
709
.button:
735
.button:
710
	mcall	-1
736
	mcall	-1
711
	jmp	.still
737
	jmp	.still
712
;---------------------------------------------------------------------
738
;---------------------------------------------------------------------
713
draw_error_window:
739
draw_error_window:
714
	mcall	12,1
740
	mcall	12,1
715
	mcall	0,[error_window_x],[error_window_y],0x03ff0000
741
	mcall	0,[error_window_x],[error_window_y],0x03ff0000
716
	call	type_title
742
	call	type_title
717
	mcall	4,<10,30>,0x90ffffff,[N_error]
743
	mcall	4,<10,30>,0x90ffffff,[N_error]
718
	mov	eax,[error_path]
744
	mov	eax,[error_path]
719
	test	eax,eax
745
	test	eax,eax
720
	jz	@f
746
	jz	@f
721
	mcall	4,<10,50>,,[error_path]
747
	mcall	4,<10,50>,,[error_path]
722
@@:
748
@@:
723
	mov	eax,[error_type]
749
	mov	eax,[error_type]
724
	test	eax,eax
750
	test	eax,eax
725
	jz	@f
751
	jz	@f
726
	mcall	4,<10,70>,,[error_type]
752
	mcall	4,<10,70>,,[error_type]
727
@@:
753
@@:
728
	mcall	12,2
754
	mcall	12,2
729
	ret
755
	ret
730
;---------------------------------------------------------------------
756
;---------------------------------------------------------------------
731
start_error_window_thread:
757
start_error_window_thread:
732
	mcall	9,procinfo,-1
758
	mcall	9,procinfo,-1
733
	mov	eax,[ebx+46]
759
	mov	eax,[ebx+46]
734
	shr	eax,1
760
	shr	eax,1
735
	add	eax,[ebx+38]
761
	add	eax,[ebx+38]
736
	sub	eax,40
762
	sub	eax,40
737
	mov	[error_window_y+2],ax
763
	mov	[error_window_y+2],ax
738
	mov	eax,[ebx+42]
764
	mov	eax,[ebx+42]
739
	shr	eax,1
765
	shr	eax,1
740
	add	eax,[ebx+34]
766
	add	eax,[ebx+34]
741
	sub	eax,125
767
	sub	eax,125
742
	mov	[error_window_x+2],ax
768
	mov	[error_window_x+2],ax
743
	mcall	51,1,thread_start,thread_stack
769
	mcall	51,1,thread_start,thread_stack
744
	ret
770
	ret
745
;---------------------------------------------------------------------
771
;---------------------------------------------------------------------
746
mouse:
772
mouse:
747
	mcall	18,7
773
	mcall	18,7
748
	cmp	[active_process],eax
774
	cmp	[active_process],eax
749
	jne	still
775
	jne	still
750
 
776
 
751
	mcall	37,7
777
	mcall	37,7
752
	mov	[mouse_scroll_data],eax
778
	mov	[mouse_scroll_data],eax
753
 
779
 
754
	mcall	37,1
780
	mcall	37,1
755
	mov	[mouse_position],eax
781
	mov	[mouse_position],eax
756
 
782
 
757
	cmp	[scroll_bar_data_vertical.delta2],0
783
	cmp	[scroll_bar_data_vertical.delta2],0
758
	jne	.scrollbar
784
	jne	.scrollbar
759
 
785
 
760
	mov	[file_browser_data_1.select_flag],0
786
	mov	[file_browser_data_1.select_flag],0
761
 
787
 
762
	push	dword file_browser_data_1
788
	push	dword file_browser_data_1
763
	call	[FileBrowser_mouse]
789
	call	[FileBrowser_mouse]
764
 
790
 
765
	call	draw_open_button_label
791
	call	draw_open_button_label
766
 
792
 
767
	mov	eax,file_browser_data_1.mouse_keys_delta
793
	mov	eax,file_browser_data_1.mouse_keys_delta
768
	cmp	[eax],dword 3
794
	cmp	[eax],dword 3
769
	jne	.check_focus	; scrollbar
795
	jne	.check_focus	; scrollbar
770
	mov	[eax],dword 0
796
	mov	[eax],dword 0
771
	call	load_next_dir
797
	call	load_next_dir
772
	jmp	still
798
	jmp	still
773
;---------------------------------------------------
799
;---------------------------------------------------
774
.check_focus:
800
.check_focus:
775
	mov	ebx,[file_browser_data_1.select_flag]
801
	mov	ebx,[file_browser_data_1.select_flag]
776
	test	ebx,ebx
802
	test	ebx,ebx
777
	jz	.scrollbar	;@f
803
	jz	.scrollbar	;@f
778
	mov	al,[focus_pointer]
804
	mov	al,[focus_pointer]
779
	test	al,al
805
	test	al,al
780
	jz	.scrollbar
806
	jz	.scrollbar
781
	xor	eax,eax
807
	xor	eax,eax
782
	mov	[focus_pointer],al
808
	mov	[focus_pointer],al
783
	jmp	change_focus_area.1
809
	jmp	change_focus_area.1
784
;---------------------------------------------------
810
;---------------------------------------------------
785
.scrollbar:
811
.scrollbar:
786
	mov	eax,[scroll_bar_data_vertical.max_area]
812
	mov	eax,[scroll_bar_data_vertical.max_area]
787
	cmp	eax,[scroll_bar_data_vertical.cur_area]
813
	cmp	eax,[scroll_bar_data_vertical.cur_area]
788
	jbe	.menu_bar	;still
814
	jbe	.menu_bar	;still
789
	
815
	
790
	push	dword scroll_bar_data_vertical
816
	push	dword scroll_bar_data_vertical
791
	call	[scrollbar_ver_mouse]
817
	call	[scrollbar_ver_mouse]
792
	
818
	
793
	cmp	[scroll_bar_data_vertical.redraw],0
819
	cmp	[scroll_bar_data_vertical.redraw],0
794
	je	.menu_bar	;still
820
	je	.menu_bar	;still
795
	mov	[scroll_bar_data_vertical.redraw],0
821
	mov	[scroll_bar_data_vertical.redraw],0
796
.draw:
822
.draw:
797
	call	draw_draw_file_browser2
823
	call	draw_draw_file_browser2
798
	jmp	still
824
	jmp	still
799
 
825
 
800
;---------------------------------------------------
826
;---------------------------------------------------
801
.menu_bar:
827
.menu_bar:
802
	cmp	[scroll_bar_data_vertical.delta2],0
828
	cmp	[scroll_bar_data_vertical.delta2],0
803
	jne	still
829
	jne	still
804
 
830
 
805
.menu_bar_1:
831
.menu_bar_1:
806
	call	.set_mouse_flag
832
	call	.set_mouse_flag
807
@@:
833
@@:
808
	push	dword menu_data_1
834
	push	dword menu_data_1
809
	call	[menu_bar_mouse]
835
	call	[menu_bar_mouse]
810
 
836
 
811
	cmp	[menu_data_1.click],dword 1
837
	cmp	[menu_data_1.click],dword 1
812
	jne	.menu_bar_2
838
	jne	.menu_bar_2
813
 
839
 
814
	cmp	[menu_data_1.cursor_out],dword 0
840
	cmp	[menu_data_1.cursor_out],dword 0
815
	jne	select_disk.1	;analyse_out_menu_1
841
	jne	select_disk.1	;analyse_out_menu_1
816
	jmp	.menu_bar_1
842
	jmp	.menu_bar_1
817
;--------------------------------------------
843
;--------------------------------------------
818
.menu_bar_2:
844
.menu_bar_2:
819
	push	dword menu_data_2
845
	push	dword menu_data_2
820
	call	[menu_bar_mouse]
846
	call	[menu_bar_mouse]
821
 
847
 
822
	cmp	[menu_data_2.click],dword 1
848
	cmp	[menu_data_2.click],dword 1
823
	jne	.menu_bar_3
849
	jne	.menu_bar_3
824
 
850
 
825
	cmp	[menu_data_2.cursor_out],dword 0
851
	cmp	[menu_data_2.cursor_out],dword 0
826
	jne	analyse_out_menu_2
852
	jne	analyse_out_menu_2
827
	jmp	.menu_bar_1
853
	jmp	.menu_bar_1
828
;---------------------------------------------------
854
;---------------------------------------------------
829
.menu_bar_3:
855
.menu_bar_3:
830
	push	dword menu_data_3
856
	push	dword menu_data_3
831
	call	[menu_bar_mouse]
857
	call	[menu_bar_mouse]
832
 
858
 
833
	cmp	[menu_data_3.click],dword 1
859
	cmp	[menu_data_3.click],dword 1
834
	jne	.check_editboxes
860
	jne	.check_editboxes
835
 
861
 
836
	cmp	[menu_data_3.cursor_out],dword 0
862
	cmp	[menu_data_3.cursor_out],dword 0
837
	jne	analyse_out_menu_3
863
	jne	analyse_out_menu_3
838
	jmp	.menu_bar_1
864
	jmp	.menu_bar_1
839
;---------------------------------------------------
865
;---------------------------------------------------
840
.check_editboxes:
866
.check_editboxes:
841
	cmp	[open_dialog_type],1
867
	cmp	[open_dialog_type],1
842
	jne	.check_scroll_event
868
	jne	.check_scroll_event
843
	mov	eax,[edit1+44]
869
	mov	eax,[edit1+44]
844
	and	eax,10b
870
	and	eax,10b
845
	push	dword name_editboxes
871
	push	dword name_editboxes
846
	call	[edit_box_mouse]
872
	call	[edit_box_mouse]
847
	mov	ebx,[edit1+44]
873
	mov	ebx,[edit1+44]
848
	and	ebx,10b
874
	and	ebx,10b
849
	cmp	eax,ebx
875
	cmp	eax,ebx
850
	je	.check_scroll_event
876
	je	.check_scroll_event
851
	mov	al,[focus_pointer]
877
	mov	al,[focus_pointer]
852
	test	al,al
878
	test	al,al
853
	jnz	.check_scroll_event
879
	jnz	.check_scroll_event
854
	xor	eax,eax
880
	xor	eax,eax
855
	test	ebx,10b
881
	test	ebx,10b
856
	jz	@f
882
	jz	@f
857
	inc	eax
883
	inc	eax
858
@@:
884
@@:
859
	mov	[focus_pointer],al
885
	mov	[focus_pointer],al
860
	jmp	change_focus_area.1
886
	jmp	change_focus_area.1
861
;---------------------------------------------------
887
;---------------------------------------------------
862
.check_scroll_event:
888
.check_scroll_event:
863
	mov	eax,[mouse_position]
889
	mov	eax,[mouse_position]
864
	xor	ebx,ebx
890
	xor	ebx,ebx
865
	mov	bx,ax	; EBX mouse y
891
	mov	bx,ax	; EBX mouse y
866
	shr	eax,16	; EAX mouse x
892
	shr	eax,16	; EAX mouse x
867
	
893
	
868
	mov	cx,[file_browser_data_1.start_x]
894
	mov	cx,[file_browser_data_1.start_x]
869
	mov	dx,[file_browser_data_1.start_y]
895
	mov	dx,[file_browser_data_1.start_y]
870
 
896
 
871
	cmp	ax,cx
897
	cmp	ax,cx
872
	jb	.mouse_next	; min x
898
	jb	.mouse_next	; min x
873
 
899
 
874
	cmp	bx,dx
900
	cmp	bx,dx
875
	jb	.mouse_next	; min y
901
	jb	.mouse_next	; min y
876
 
902
 
877
	add	cx,[file_browser_data_1.size_x]
903
	add	cx,[file_browser_data_1.size_x]
878
	cmp	ax,cx	
904
	cmp	ax,cx	
879
	ja	.mouse_next	; max x
905
	ja	.mouse_next	; max x
880
 
906
 
881
	add	dx,[file_browser_data_1.size_y]
907
	add	dx,[file_browser_data_1.size_y]
882
	cmp	bx,dx
908
	cmp	bx,dx
883
	ja	.mouse_next	; max y
909
	ja	.mouse_next	; max y
884
 
910
 
885
	xor	ecx,ecx
911
	xor	ecx,ecx
886
	xor	ebx,ebx
912
	xor	ebx,ebx
887
	mov	eax,[mouse_scroll_data]
913
	mov	eax,[mouse_scroll_data]
888
	test	eax,eax
914
	test	eax,eax
889
	jz	.mouse_next
915
	jz	.mouse_next
890
	test	ax,0x8000
916
	test	ax,0x8000
891
	jnz	.decr
917
	jnz	.decr
892
	shr	eax,16
918
	shr	eax,16
893
	test	ax,0x8000
919
	test	ax,0x8000
894
	jnz	.decr_1
920
	jnz	.decr_1
895
 
921
 
896
	mov	cx,[mouse_scroll_data.vertical]
922
	mov	cx,[mouse_scroll_data.vertical]
897
	test	ecx,ecx
923
	test	ecx,ecx
898
	jnz	@f
924
	jnz	@f
899
	mov	cx,[mouse_scroll_data.horizontal]
925
	mov	cx,[mouse_scroll_data.horizontal]
900
	test	ecx,ecx
926
	test	ecx,ecx
901
	jz	.mouse_next
927
	jz	.mouse_next
902
@@:
928
@@:
903
	mov	ebx,1
929
	mov	ebx,1
904
@@:
930
@@:
905
	push	ebx ecx
931
	push	ebx ecx
906
	call	key.key_action
932
	call	key.key_action
907
	pop	ecx ebx
933
	pop	ecx ebx
908
	dec	ecx
934
	dec	ecx
909
	jnz	@r
935
	jnz	@r
910
	jmp	still
936
	jmp	still
911
;----------------------------------------
937
;----------------------------------------
912
.decr:
938
.decr:
913
	mov	bx,[mouse_scroll_data.vertical]
939
	mov	bx,[mouse_scroll_data.vertical]
914
	jmp	@f
940
	jmp	@f
915
.decr_1:
941
.decr_1:
916
	mov	bx,[mouse_scroll_data.horizontal]
942
	mov	bx,[mouse_scroll_data.horizontal]
917
@@:
943
@@:
918
	mov	ecx,0xffff
944
	mov	ecx,0xffff
919
	sub	ecx,ebx
945
	sub	ecx,ebx
920
	inc	ecx
946
	inc	ecx
921
	mov	ebx,2
947
	mov	ebx,2
922
@@:
948
@@:
923
	push	ebx ecx
949
	push	ebx ecx
924
	call	key.key_action
950
	call	key.key_action
925
	pop	ecx ebx
951
	pop	ecx ebx
926
	dec	ecx
952
	dec	ecx
927
	jnz	@r
953
	jnz	@r
928
	jmp	still
954
	jmp	still
929
;---------------------------------------------------
955
;---------------------------------------------------
930
.mouse_next:
956
.mouse_next:
931
	jmp	still
957
	jmp	still
932
;---------------------------------------------------------------------
958
;---------------------------------------------------------------------
933
.set_mouse_flag:
959
.set_mouse_flag:
934
	xor	eax,eax
960
	xor	eax,eax
935
	inc	eax
961
	inc	eax
936
	mov	[menu_data_1.get_mouse_flag],eax
962
	mov	[menu_data_1.get_mouse_flag],eax
937
	mov	[menu_data_2.get_mouse_flag],eax
963
	mov	[menu_data_2.get_mouse_flag],eax
938
	ret
964
	ret
939
;---------------------------------------------------------------------
965
;---------------------------------------------------------------------
940
analyse_out_menu_1:
966
analyse_out_menu_1:
941
; Available disks
967
; Available disks
942
	mov	eax,[menu_data_1.cursor_out]
968
	mov	eax,[menu_data_1.cursor_out]
943
	dec	eax
969
	dec	eax
944
	imul	esi,eax,10
970
	imul	esi,eax,10
945
	add	esi,retrieved_devices_table
971
	add	esi,retrieved_devices_table
946
	mov	edi,dir_path
972
	mov	edi,dir_path
947
	call	copy_dir_name
973
	call	copy_dir_name
948
	call	load_next_dir.1
974
	call	load_next_dir.1
949
	jmp	still
975
	jmp	still
950
;---------------------------------------------------------------------
976
;---------------------------------------------------------------------
951
analyse_out_menu_2:
977
analyse_out_menu_2:
952
; Sort
978
; Sort
953
	mov	eax,[menu_data_2.cursor_out]
979
	mov	eax,[menu_data_2.cursor_out]
954
	xor	ebx,ebx
980
	xor	ebx,ebx
955
	cmp	eax,dword 1
981
	cmp	eax,dword 1
956
	je	.1
982
	je	.1
957
	cmp	eax,dword 2
983
	cmp	eax,dword 2
958
	je	.2
984
	je	.2
959
	cmp	eax,dword 3
985
	cmp	eax,dword 3
960
	je	.3
986
	je	.3
961
	cmp	eax,dword 4
987
	cmp	eax,dword 4
962
	je	.4
988
	je	.4
963
	jmp	still
989
	jmp	still
964
.4:
990
.4:
965
	add	ebx,2
991
	add	ebx,2
966
.3:
992
.3:
967
	add	ebx,2
993
	add	ebx,2
968
.2:
994
.2:
969
	add	ebx,2
995
	add	ebx,2
970
.1:
996
.1:
971
	mov	[sort_type],ebx
997
	mov	[sort_type],ebx
972
	call	sort_directory
998
	call	sort_directory
973
	call	draw_draw_file_browser1
999
	call	draw_draw_file_browser1
974
	jmp	still
1000
	jmp	still
975
;---------------------------------------------------------------------
1001
;---------------------------------------------------------------------
976
analyse_out_menu_3:
1002
analyse_out_menu_3:
977
; Filter
1003
; Filter
978
	mov	eax,[menu_data_3.cursor_out]
1004
	mov	eax,[menu_data_3.cursor_out]
979
	cmp	eax,dword 1
1005
	cmp	eax,dword 1
980
	jne	@f
1006
	jne	@f
981
	mov	[filter_flag],0
1007
	mov	[filter_flag],0
982
	call	load_next_dir.1
1008
	call	load_next_dir.1
983
	jmp	still
1009
	jmp	still
984
@@:
1010
@@:
985
	cmp	eax,dword 2
1011
	cmp	eax,dword 2
986
	jne	still
1012
	jne	still
987
	mov	[filter_flag],1
1013
	mov	[filter_flag],1
988
	call	load_next_dir.1
1014
	call	load_next_dir.1
989
	jmp	still	
1015
	jmp	still	
990
;---------------------------------------------------------------------
1016
;---------------------------------------------------------------------
991
get_communication_area:
1017
get_communication_area:
992
	xor	eax,eax
1018
	xor	eax,eax
993
	mov	al,[param]
1019
	mov	al,[param]
994
	test	eax,eax
1020
	test	eax,eax
995
	jz	@f
1021
	jz	@f
996
	mcall	68,22,param,,0x01
1022
	mcall	68,22,param,,0x01
997
	mov	[communication_area],eax
1023
	mov	[communication_area],eax
998
	movzx	ebx,word [eax+2]
1024
	movzx	ebx,word [eax+2]
999
	mov	[open_dialog_type],ebx
1025
	mov	[open_dialog_type],ebx
1000
	mov	ebx,[eax+4]
1026
	mov	ebx,[eax+4]
1001
	cmp	bx,word x_minimal_size ;300
1027
	cmp	bx,word x_minimal_size ;300
1002
	jb	@f
1028
	jb	@f
1003
	mov	[window_x],ebx
1029
	mov	[window_x],ebx
1004
	mov	ebx,[eax+8]
1030
	mov	ebx,[eax+8]
1005
	cmp	bx,word y_minimal_size ;200
1031
	cmp	bx,word y_minimal_size ;200
1006
	jb	@f
1032
	jb	@f
1007
	mov	[window_y],ebx
1033
	mov	[window_y],ebx
1008
@@:
1034
@@:
1009
	ret
1035
	ret
1010
;---------------------------------------------------------------------
1036
;---------------------------------------------------------------------
1011
load_start_directory:
1037
load_start_directory:
1012
	mov	eax,[communication_area]	
1038
	mov	eax,[communication_area]	
1013
	test	eax,eax
1039
	test	eax,eax
1014
	jz	.1
1040
	jz	.1
1015
	movzx	ebx,word [eax]
1041
	movzx	ebx,word [eax]
1016
	test	eax,eax
1042
	test	eax,eax
1017
	jz	.1
1043
	jz	.1
1018
	add	eax,16	;12 ;4
1044
	add	eax,16	;12 ;4
1019
	mov	esi,eax
1045
	mov	esi,eax
1020
	push	esi
1046
	push	esi
1021
	mov	esi,[communication_area]
1047
	mov	esi,[communication_area]
1022
	add	esi,3840 ;4096-256
1048
	add	esi,3840 ;4096-256
1023
	mov	eax,[esi]
1049
	mov	eax,[esi]
1024
	test	eax,eax
1050
	test	eax,eax
1025
	jnz	@f
1051
	jnz	@f
1026
	mov	esi,example_name_temp
1052
	mov	esi,example_name_temp
1027
@@:
1053
@@:
1028
	mov	edi,user_selected_name
1054
	mov	edi,user_selected_name
1029
	call	copy_dir_name
1055
	call	copy_dir_name
1030
	pop	esi
1056
	pop	esi
1031
	jmp	.2
1057
	jmp	.2
1032
.1:
1058
.1:
1033
	mov	esi,start_pach
1059
	mov	esi,start_pach
1034
.2:
1060
.2:
1035
	mov	edi,dir_path
1061
	mov	edi,dir_path
1036
	call	copy_dir_name
1062
	call	copy_dir_name
1037
	
1063
	
1038
;	call	load_directory
1064
;	call	load_directory
1039
;	mov	eax,[N_error]
1065
;	mov	eax,[N_error]
1040
;	test	eax,eax
1066
;	test	eax,eax
1041
;	jnz	button.exit
1067
;	jnz	button.exit
1042
.3:
1068
.3:
1043
	call	load_directory
1069
	call	load_directory
1044
	mov	eax,[N_error]
1070
	mov	eax,[N_error]
1045
	test	eax,eax
1071
	test	eax,eax
1046
	jz	@f
1072
	jz	@f
1047
	call	error_handler
1073
	call	error_handler
1048
	jmp	.3
1074
	jmp	.3
1049
@@:
1075
@@:
1050
	ret
1076
	ret
1051
;---------------------------------------------------------------------
1077
;---------------------------------------------------------------------
1052
load_next_dir:
1078
load_next_dir:
1053
	mov	ebx,[file_browser_data_1.selected_BDVK_adress]
1079
	mov	ebx,[file_browser_data_1.selected_BDVK_adress]
1054
	add	ebx,40
1080
	add	ebx,40
1055
	test	[ebx-40],byte 0x10
1081
	test	[ebx-40],byte 0x10
1056
	jz	file_no_folder
1082
	jz	file_no_folder
1057
	cmp	[ebx],word '..'
1083
	cmp	[ebx],word '..'
1058
	jne	@f
1084
	jne	@f
1059
	cmp	[ebx+2],byte 0
1085
	cmp	[ebx+2],byte 0
1060
	je	.exit_dir
1086
	je	.exit_dir
1061
@@:
1087
@@:
1062
	mov	esi,dir_path
1088
	mov	esi,dir_path
1063
	call	copy_dir_path
1089
	call	copy_dir_path
1064
 
1090
 
1065
@@:
1091
@@:
1066
.1:
1092
.1:
1067
	call	load_directory
1093
	call	load_directory
1068
	mov	eax,[N_error]
1094
	mov	eax,[N_error]
1069
	test	eax,eax
1095
	test	eax,eax
1070
	jz	@f
1096
	jz	@f
1071
	call	error_handler
1097
	call	error_handler
1072
	jmp	.1
1098
	jmp	.1
1073
@@:
1099
@@:
1074
	call	sort_directory
1100
	call	sort_directory
1075
 
1101
 
1076
	mov	ebx,[scroll_bar_data_vertical.x]
1102
	mov	ebx,[scroll_bar_data_vertical.x]
1077
	inc	ebx
1103
	inc	ebx
1078
	mov	ecx,[scroll_bar_data_vertical.y]
1104
	mov	ecx,[scroll_bar_data_vertical.y]
1079
	inc	ecx
1105
	inc	ecx
1080
	mcall	13,,,0xcccccc
1106
	mcall	13,,,0xcccccc
1081
	mov	edi,edit1
1107
	mov	edi,edit1
1082
	xor	eax,eax
1108
	xor	eax,eax
1083
	mov	[edi+44],eax
1109
	mov	[edi+44],eax
1084
	mov	[edi+12],dword 0xffffff	; color white
1110
	mov	[edi+12],dword 0xffffff	; color white
1085
	call	draw_draw_file_browser1
1111
	call	draw_draw_file_browser1
1086
	ret
1112
	ret
1087
.exit_dir:
1113
.exit_dir:
1088
	mov	esi,dir_path
1114
	mov	esi,dir_path
1089
	call	copy_exit_dir
1115
	call	copy_exit_dir
1090
	jmp	.1
1116
	jmp	.1
1091
;---------------------------------------------------------------------
1117
;---------------------------------------------------------------------
1092
error_handler:
1118
error_handler:
1093
.red:
1119
.red:
1094
	call	.draw_window
1120
	call	.draw_window
1095
;------------------------------------
1121
;------------------------------------
1096
.still:
1122
.still:
1097
	mcall	10
1123
	mcall	10
1098
	cmp	eax,1
1124
	cmp	eax,1
1099
	je	.red
1125
	je	.red
1100
	cmp	eax,2
1126
	cmp	eax,2
1101
	je	.key
1127
	je	.key
1102
	cmp	eax,3
1128
	cmp	eax,3
1103
	je	.button
1129
	je	.button
1104
	jmp	.still
1130
	jmp	.still
1105
;------------------------------------
1131
;------------------------------------
1106
.draw_window:
1132
.draw_window:
1107
	xor	eax,eax
1133
	xor	eax,eax
1108
	inc	eax
1134
	inc	eax
1109
	mov	[error_window],al
1135
	mov	[error_window],al
1110
	call	control_minimal_window_size
1136
	call	control_minimal_window_size
1111
	call	draw_window
1137
	call	draw_window
1112
	xor	eax,eax
1138
	xor	eax,eax
1113
	mov	[error_window],al
1139
	mov	[error_window],al
1114
	ret
1140
	ret
1115
;------------------------------------
1141
;------------------------------------
1116
.key:
1142
.key:
1117
	mcall	2
1143
	mcall	2
1118
	xor	ebx,ebx
1144
	xor	ebx,ebx
1119
	cmp	[extended_key],1
1145
	cmp	[extended_key],1
1120
	je	.extended_key
1146
	je	.extended_key
1121
	test	al,al
1147
	test	al,al
1122
	jnz	.still
1148
	jnz	.still
1123
	cmp	ah,0xE0
1149
	cmp	ah,0xE0
1124
	jne	@f
1150
	jne	@f
1125
	mov	[extended_key],1
1151
	mov	[extended_key],1
1126
	jmp	.still
1152
	jmp	.still
1127
@@:
1153
@@:
1128
	cmp	ah,129	; Esc
1154
	cmp	ah,129	; Esc
1129
	je	.exit
1155
	je	.exit
1130
	jmp	.still
1156
	jmp	.still
1131
.extended_key:
1157
.extended_key:
1132
	jmp	.still
1158
	jmp	.still
1133
;------------------------------------
1159
;------------------------------------
1134
.button:
1160
.button:
1135
	mcall	17
1161
	mcall	17
1136
	cmp	ah,5
1162
	cmp	ah,5
1137
	je	.exit
1163
	je	.exit
1138
	cmp	ah,1
1164
	cmp	ah,1
1139
	jne	.still
1165
	jne	.still
1140
	xor	eax,eax
1166
	xor	eax,eax
1141
	mov	[N_error],eax
1167
	mov	[N_error],eax
1142
	jmp	button.exit
1168
	jmp	button.exit
1143
;------------------------------------
1169
;------------------------------------
1144
.exit:
1170
.exit:
1145
	mov	esi,previous_dir_path
1171
	mov	esi,previous_dir_path
1146
	mov	edi,dir_path
1172
	mov	edi,dir_path
1147
	call	copy_dir_name.1
1173
	call	copy_dir_name.1
1148
	mov	esi,start_pach
1174
	mov	esi,start_pach
1149
	mov	edi,previous_dir_path
1175
	mov	edi,previous_dir_path
1150
	call	copy_dir_name.1
1176
	call	copy_dir_name.1
1151
	ret
1177
	ret
1152
;---------------------------------------------------------------------
1178
;---------------------------------------------------------------------
1153
file_no_folder:
1179
file_no_folder:
1154
	mov	esi,dir_path
1180
	mov	esi,dir_path
1155
	mov	edi,file_name
1181
	mov	edi,file_name
1156
	call	copy_dir_name
1182
	call	copy_dir_name
1157
	push	ebx
1183
	push	ebx
1158
	mov	al,[focus_pointer]
1184
	mov	al,[focus_pointer]
1159
	test	al,al
1185
	test	al,al
1160
	je	@f
1186
	je	@f
1161
	mov	ebx,user_selected_name
1187
	mov	ebx,user_selected_name
1162
@@:
1188
@@:
1163
	cmp	[open_dialog_type],2
1189
	cmp	[open_dialog_type],2
1164
	je	@f
1190
	je	@f
1165
	mov	esi,file_name
1191
	mov	esi,file_name
1166
	call	copy_dir_path
1192
	call	copy_dir_path
1167
@@:
1193
@@:
1168
	mov	eax,[communication_area]
1194
	mov	eax,[communication_area]
1169
	test	eax,eax
1195
	test	eax,eax
1170
	jnz	@f
1196
	jnz	@f
1171
	call	control_minimal_window_size
1197
	call	control_minimal_window_size
1172
	call	draw_window
1198
	call	draw_window
1173
	pop	ebx
1199
	pop	ebx
1174
	ret
1200
	ret
1175
@@:
1201
@@:
1176
	mov	edi,eax
1202
	mov	edi,eax
1177
	add	edi,16	;12
1203
	add	edi,16	;12
1178
	mov	esi,file_name	
1204
	mov	esi,file_name	
1179
	call	copy_dir_name
1205
	call	copy_dir_name
1180
	
1206
	
1181
	pop	esi
1207
	pop	esi
1182
	mov	al,[focus_pointer]
1208
	mov	al,[focus_pointer]
1183
	test	al,al
1209
	test	al,al
1184
	jz	@f
1210
	jz	@f
1185
	mov	esi,user_selected_name
1211
	mov	esi,user_selected_name
1186
@@:
1212
@@:
1187
	mov	edi,[communication_area]
1213
	mov	edi,[communication_area]
1188
	add	edi,3840 ;4096-256
1214
	add	edi,3840 ;4096-256
1189
	call	copy_dir_name
1215
	call	copy_dir_name
1190
	
1216
	
1191
	mov	eax,[communication_area]
1217
	mov	eax,[communication_area]
1192
	mov	[eax],word 1
1218
	mov	[eax],word 1
1193
	jmp	button.exit
1219
	jmp	button.exit
1194
;---------------------------------------------------------------------
1220
;---------------------------------------------------------------------
1195
load_root_directory:
1221
load_root_directory:
1196
	mov	[dirinfo.name],dword dir_path_temp
1222
	mov	[dirinfo.name],dword dir_path_temp
1197
	mov	eax,[dirinfo.return]
1223
	mov	eax,[dirinfo.return]
1198
	push	eax
1224
	push	eax
1199
	mov	eax,[file_browser_data_1.folder_data]
1225
	mov	eax,[file_browser_data_1.folder_data]
1200
	push	eax
1226
	push	eax
1201
	xor	eax,eax
1227
	xor	eax,eax
1202
	mov	[dirinfo.return],eax
1228
	mov	[dirinfo.return],eax
1203
	mov	[file_browser_data_1.folder_data],eax
1229
	mov	[file_browser_data_1.folder_data],eax
1204
	mov	esi,root_pach
1230
	mov	esi,root_pach
1205
	mov	edi,dir_path_temp
1231
	mov	edi,dir_path_temp
1206
	call	copy_dir_name
1232
	call	copy_dir_name
1207
	call	load_directory
1233
	call	load_directory
1208
	mov	eax,[N_error]
1234
	mov	eax,[N_error]
1209
	test	eax,eax
1235
	test	eax,eax
1210
	jnz	button.exit
1236
	jnz	button.exit
1211
 
1237
 
1212
	mov	eax,[dirinfo.return]
1238
	mov	eax,[dirinfo.return]
1213
	mov	[root_folder_area],eax
1239
	mov	[root_folder_area],eax
1214
	mov	eax,[eax+4]
1240
	mov	eax,[eax+4]
1215
	mov	[root_folder_block],eax
1241
	mov	[root_folder_block],eax
1216
 
1242
 
1217
	xor	eax,eax
1243
	xor	eax,eax
1218
	mov	[dirinfo.return],eax
1244
	mov	[dirinfo.return],eax
1219
	mov	[file_browser_data_1.folder_data],eax
1245
	mov	[file_browser_data_1.folder_data],eax
1220
	mov	[temp_counter_1],eax	;0
1246
	mov	[temp_counter_1],eax	;0
1221
 
1247
 
1222
	mov	[retrieved_devices_table_counter],eax	;0
1248
	mov	[retrieved_devices_table_counter],eax	;0
1223
.start_temp_counter_1:
1249
.start_temp_counter_1:
1224
	imul	esi,[temp_counter_1],304
1250
	imul	esi,[temp_counter_1],304
1225
	add	esi,[root_folder_area]
1251
	add	esi,[root_folder_area]
1226
	add	esi,32+40
1252
	add	esi,32+40
1227
	mov	edi,dir_path_temp+1
1253
	mov	edi,dir_path_temp+1
1228
	mov	[edi-1],byte '/'
1254
	mov	[edi-1],byte '/'
1229
	call	copy_dir_name
1255
	call	copy_dir_name
1230
	call	load_directory
1256
	call	load_directory
1231
	mov	eax,[N_error]
1257
	mov	eax,[N_error]
1232
	test	eax,eax
1258
	test	eax,eax
1233
	jnz	button.exit
1259
	jnz	button.exit
1234
 
1260
 
1235
	mov	eax,[dirinfo.return]
1261
	mov	eax,[dirinfo.return]
1236
	mov	[root1_folder_area],eax
1262
	mov	[root1_folder_area],eax
1237
	mov	eax,[eax+4]
1263
	mov	eax,[eax+4]
1238
	test	eax,eax
1264
	test	eax,eax
1239
	jz	.continue
1265
	jz	.continue
1240
	mov	[root1_folder_block],eax
1266
	mov	[root1_folder_block],eax
1241
	
1267
	
1242
	mov	ebp,0
1268
	mov	ebp,0
1243
.start_copy_device_patch:
1269
.start_copy_device_patch:
1244
	imul	edi,[retrieved_devices_table_counter],10
1270
	imul	edi,[retrieved_devices_table_counter],10
1245
	add	edi,retrieved_devices_table
1271
	add	edi,retrieved_devices_table
1246
	mov	[edi],byte '/'
1272
	mov	[edi],byte '/'
1247
	inc	edi
1273
	inc	edi
1248
	imul	esi,[temp_counter_1],304
1274
	imul	esi,[temp_counter_1],304
1249
	add	esi,[root_folder_area]
1275
	add	esi,[root_folder_area]
1250
	add	esi,32+40
1276
	add	esi,32+40
1251
 
1277
 
1252
	call	copy_dir_name
1278
	call	copy_dir_name
1253
 
1279
 
1254
	imul	esi,ebp,304
1280
	imul	esi,ebp,304
1255
	add	esi,[root1_folder_area]
1281
	add	esi,[root1_folder_area]
1256
	add	esi,32+40
1282
	add	esi,32+40
1257
	mov	[edi-1],byte '/'
1283
	mov	[edi-1],byte '/'
1258
 
1284
 
1259
	call	copy_dir_name
1285
	call	copy_dir_name
1260
 
1286
 
1261
	inc	[retrieved_devices_table_counter]
1287
	inc	[retrieved_devices_table_counter]
1262
	inc	ebp
1288
	inc	ebp
1263
	cmp	ebp,[root1_folder_block]
1289
	cmp	ebp,[root1_folder_block]
1264
	jb	.start_copy_device_patch
1290
	jb	.start_copy_device_patch
1265
.continue:
1291
.continue:
1266
	inc	[temp_counter_1]
1292
	inc	[temp_counter_1]
1267
	mov	eax,[temp_counter_1]
1293
	mov	eax,[temp_counter_1]
1268
	cmp	eax,[root_folder_block]
1294
	cmp	eax,[root_folder_block]
1269
	jb	.start_temp_counter_1
1295
	jb	.start_temp_counter_1
1270
 
1296
 
1271
	cmp	[root_folder_area],dword 0
1297
	cmp	[root_folder_area],dword 0
1272
	je	@f
1298
	je	@f
1273
	mcall	68,13,[root_folder_area]
1299
	mcall	68,13,[root_folder_area]
1274
	test	eax,eax
1300
	test	eax,eax
1275
	jz	memory_free_error
1301
	jz	memory_free_error
1276
@@:
1302
@@:
1277
 
1303
 
1278
	xor	ecx,ecx
1304
	xor	ecx,ecx
1279
	mov	edi,menu_text_area_1_1	;.1
1305
	mov	edi,menu_text_area_1_1	;.1
1280
@@:
1306
@@:
1281
	imul	esi,ecx,10
1307
	imul	esi,ecx,10
1282
	add	esi,retrieved_devices_table
1308
	add	esi,retrieved_devices_table
1283
	call	copy_dir_name
1309
	call	copy_dir_name
1284
	inc	ecx
1310
	inc	ecx
1285
	cmp	ecx,[retrieved_devices_table_counter]
1311
	cmp	ecx,[retrieved_devices_table_counter]
1286
	jb	@b
1312
	jb	@b
1287
	mov	[menu_data_1.text_end],edi
1313
	mov	[menu_data_1.text_end],edi
1288
	xor	eax,eax
1314
	xor	eax,eax
1289
	mov	[edi],eax
1315
	mov	[edi],eax
1290
	pop	eax
1316
	pop	eax
1291
	mov	[file_browser_data_1.folder_data],eax
1317
	mov	[file_browser_data_1.folder_data],eax
1292
	pop	eax
1318
	pop	eax
1293
	mov	[dirinfo.return],eax
1319
	mov	[dirinfo.return],eax
1294
	mov	[dirinfo.name],dword dir_path
1320
	mov	[dirinfo.name],dword dir_path
1295
	ret
1321
	ret
1296
;---------------------------------------------------------------------
1322
;---------------------------------------------------------------------
1297
memory_free_error:
1323
memory_free_error:
1298
	mov	[N_error],3
1324
	mov	[N_error],3
1299
	jmp	button.exit
1325
	jmp	button.exit
1300
;---------------------------------------------------------------------
1326
;---------------------------------------------------------------------
1301
memory_get_error:
1327
memory_get_error:
1302
	mov	[N_error],4
1328
	mov	[N_error],4
1303
	jmp	button.exit
1329
	jmp	button.exit
1304
;---------------------------------------------------------------------
1330
;---------------------------------------------------------------------
1305
type_title:
1331
type_title:
1306
	mov	ecx,[open_dialog_type]
1332
	mov	ecx,[open_dialog_type]
1307
	shl	ecx,2
1333
	shl	ecx,2
1308
	add	ecx,open_dialog_title_pointer
1334
	add	ecx,open_dialog_title_pointer
1309
	mov	ecx,[ecx]
1335
	mov	ecx,[ecx]
1310
	test	ecx,ecx
1336
	test	ecx,ecx
1311
	jz	@f
1337
	jz	@f
1312
	mcall	71,1,; title ;;param ;file_name ;dir_path
1338
	mcall	71,1,; title ;;param ;file_name ;dir_path
1313
@@:
1339
@@:
1314
	ret
1340
	ret
1315
;---------------------------------------------------------------------
1341
;---------------------------------------------------------------------
1316
draw_window:
1342
draw_window:
1317
 
1343
 
1318
	mcall	12,1
1344
	mcall	12,1
1319
	
1345
	
1320
	call	prepare_system_colors
1346
	call	prepare_system_colors
1321
 
1347
 
1322
;	mcall	0,<10,420>,<10,320>,0x63AABBCC,
1348
;	mcall	0,<10,420>,<10,320>,0x63AABBCC,
1323
	xor	esi,esi
1349
	xor	esi,esi
1324
;	mov	edx,[w_work]	; color of work area RRGGBB,8->color
1350
;	mov	edx,[w_work]	; color of work area RRGGBB,8->color
1325
;	or	edx,0x63000000
1351
;	or	edx,0x63000000
1326
	mcall	0,[window_x],[window_y],0x63AABBCC
1352
	mcall	0,[window_x],[window_y],0x63AABBCC
1327
 
1353
 
1328
;	mov	ecx,[communication_area]
1354
;	mov	ecx,[communication_area]
1329
;	add	ecx,4096+4+4
1355
;	add	ecx,4096+4+4
1330
	call	type_title
1356
	call	type_title
1331
	call	get_window_param
1357
	call	get_window_param
1332
	
1358
	
1333
	mov	eax,[procinfo+70] ;status of window
1359
	mov	eax,[procinfo+70] ;status of window
1334
	test	eax,100b
1360
	test	eax,100b
1335
	jne	.end
1361
	jne	.end
1336
	
1362
	
1337
	mov	eax,[window_high]
1363
	mov	eax,[window_high]
1338
	sub	eax,25+45
1364
	sub	eax,25+45
1339
	mov	[file_browser_data_1.size_y],ax
1365
	mov	[file_browser_data_1.size_y],ax
1340
	mov	[scroll_bar_data_vertical.size_y],ax
1366
	mov	[scroll_bar_data_vertical.size_y],ax
1341
	
1367
	
1342
	mov	eax,[window_width]
1368
	mov	eax,[window_width]
1343
	sub	eax,10+20
1369
	sub	eax,10+20
1344
	mov	[file_browser_data_1.size_x],ax
1370
	mov	[file_browser_data_1.size_x],ax
1345
	add	ax,10
1371
	add	ax,10
1346
	mov	[scroll_bar_data_vertical.start_x],ax
1372
	mov	[scroll_bar_data_vertical.start_x],ax
1347
	
1373
	
1348
	mov	edx,[w_work]	; color of work area RRGGBB,8->color
1374
	mov	edx,[w_work]	; color of work area RRGGBB,8->color
1349
	or	edx,0x63000000
1375
	or	edx,0x63000000
1350
	mcall	13,[window_width],45	;,0xcccccc
1376
	mcall	13,[window_width],45	;,0xcccccc
1351
 
1377
 
1352
	push	ecx
1378
	push	ecx
1353
	rol	ecx,16
1379
	rol	ecx,16
1354
	add	cx,[file_browser_data_1.size_y]
1380
	add	cx,[file_browser_data_1.size_y]
1355
	add	cx,45
1381
	add	cx,45
1356
	ror	ecx,16
1382
	ror	ecx,16
1357
	mov	cx,25
1383
	mov	cx,25
1358
	mcall
1384
	mcall
1359
	pop	ecx
1385
	pop	ecx
1360
	add	ecx,45 shl 16
1386
	add	ecx,45 shl 16
1361
	mov	cx,[file_browser_data_1.size_y]
1387
	mov	cx,[file_browser_data_1.size_y]
1362
	mov	bx,10
1388
	mov	bx,10
1363
	mcall
1389
	mcall
1364
	mov	bx,[file_browser_data_1.size_x]
1390
	mov	bx,[file_browser_data_1.size_x]
1365
	add	bx,10
1391
	add	bx,10
1366
	shl	ebx,16
1392
	shl	ebx,16
1367
	mov	bx,20
1393
	mov	bx,20
1368
	mcall
1394
	mcall
1369
 
1395
 
1370
	cmp	[error_window],0
1396
	cmp	[error_window],0
1371
	je	@f
1397
	je	@f
1372
	call	draw_for_fs_errors
1398
	call	draw_for_fs_errors
1373
	jmp	.1
1399
	jmp	.1
1374
@@:
1400
@@:
1375
	mov	[do_not_draw_open_button_label],1
1401
	mov	[do_not_draw_open_button_label],1
1376
	call	draw_draw_file_browser1
1402
	call	draw_draw_file_browser1
1377
	mov	[do_not_draw_open_button_label],0
1403
	mov	[do_not_draw_open_button_label],0
1378
.1:
1404
.1:
1379
	push	dword menu_data_1
1405
	push	dword menu_data_1
1380
	call	[menu_bar_draw]
1406
	call	[menu_bar_draw]
1381
	push	dword menu_data_2
1407
	push	dword menu_data_2
1382
	call	[menu_bar_draw]
1408
	call	[menu_bar_draw]
1383
	push	dword menu_data_3
1409
	push	dword menu_data_3
1384
	call	[menu_bar_draw]
1410
	call	[menu_bar_draw]
1385
 
1411
 
1386
	mov	ebx,[file_browser_data_1.x]
1412
	mov	ebx,[file_browser_data_1.x]
1387
	mov	ax,bx
1413
	mov	ax,bx
1388
	shl	eax,16
1414
	shl	eax,16
1389
	add	ebx,eax
1415
	add	ebx,eax
1390
	mov	eax,50
1416
	mov	eax,50
1391
	mov	bx,ax
1417
	mov	bx,ax
1392
	shl	eax,16
1418
	shl	eax,16
1393
	sub	ebx,eax
1419
	sub	ebx,eax
1394
	mov	ecx,26 shl 16+15
1420
	mov	ecx,26 shl 16+15
1395
 
1421
 
1396
	mcall	8,,,2,[w_work_button]	;0xffffff
1422
	mcall	8,,,2,[w_work_button]	;0xffffff
1397
 
1423
 
1398
	pusha
1424
	pusha
1399
	shr	ecx,16
1425
	shr	ecx,16
1400
	mov	bx,cx
1426
	mov	bx,cx
1401
	add	ebx,20 shl 16+2
1427
	add	ebx,20 shl 16+2
1402
	mov	ecx,[w_work_button_text]
1428
	mov	ecx,[w_work_button_text]
1403
	or	ecx,0x90000000
1429
	or	ecx,0x90000000
1404
	mcall	4,,,message_ExitDir_button
1430
	mcall	4,,,message_ExitDir_button
1405
	add	ebx,4
1431
	add	ebx,4
1406
	mcall
1432
	mcall
1407
	add	ebx,4
1433
	add	ebx,4
1408
	mcall
1434
	mcall
1409
	popa
1435
	popa
1410
 
1436
 
1411
	push	ebx
1437
	push	ebx
1412
	sub	ebx,70 shl 16
1438
	sub	ebx,70 shl 16
1413
	mov	bx,60
1439
	mov	bx,60
1414
	mcall	8,,,6
1440
	mcall	8,,,6
1415
 
1441
 
1416
	shr	ecx,16
1442
	shr	ecx,16
1417
	mov	bx,cx
1443
	mov	bx,cx
1418
	add	ebx,5 shl 16+4
1444
	add	ebx,5 shl 16+4
1419
	mov	ecx,[w_work_button_text]
1445
	mov	ecx,[w_work_button_text]
1420
	or	ecx,0x90000000
1446
	or	ecx,0x90000000
1421
	mcall	4,,,message_ReloadDir_button
1447
	mcall	4,,,message_ReloadDir_button
1422
	pop	ebx
1448
	pop	ebx
1423
 
1449
 
1424
	mov	ebx,[file_browser_data_1.x]
1450
	mov	ebx,[file_browser_data_1.x]
1425
	
1451
	
1426
	mov	ax,bx
1452
	mov	ax,bx
1427
	shl	eax,16
1453
	shl	eax,16
1428
	add	ebx,eax
1454
	add	ebx,eax
1429
	mov	eax,55
1455
	mov	eax,55
1430
	mov	bx,ax
1456
	mov	bx,ax
1431
	shl	eax,16
1457
	shl	eax,16
1432
	sub	ebx,eax
1458
	sub	ebx,eax
1433
 
1459
 
1434
	mov	ecx,[file_browser_data_1.y]
1460
	mov	ecx,[file_browser_data_1.y]
1435
	mov	ax,cx
1461
	mov	ax,cx
1436
	add	eax,3
1462
	add	eax,3
1437
	shl	eax,16
1463
	shl	eax,16
1438
	add	ecx,eax
1464
	add	ecx,eax
1439
	mov	cx,15
1465
	mov	cx,15
1440
 
1466
 
1441
	mcall	8,,,3
1467
	mcall	8,,,3
1442
 
1468
 
1443
	pusha
1469
	pusha
1444
 
1470
 
1445
	shr	ecx,16
1471
	shr	ecx,16
1446
	mov	bx,cx
1472
	mov	bx,cx
1447
	add	ebx,6 shl 16+ 4
1473
	add	ebx,6 shl 16+ 4
1448
	mov	ecx,[w_work_button_text]
1474
	mov	ecx,[w_work_button_text]
1449
	or	ecx,0x90000000
1475
	or	ecx,0x90000000
1450
	mcall	4,,,message_cancel_button
1476
	mcall	4,,,message_cancel_button
1451
	popa
1477
	popa
1452
 
1478
 
1453
	sub	ebx,65 shl 16
1479
	sub	ebx,65 shl 16
1454
	mcall	8,,,4
1480
	mcall	8,,,4
1455
	
1481
	
1456
	shr	ecx,16
1482
	shr	ecx,16
1457
	mov	bx,cx
1483
	mov	bx,cx
1458
	add	ebx,6 shl 16+4
1484
	add	ebx,6 shl 16+4
1459
	
1485
	
1460
	mov	edx,[open_dialog_type]
1486
	mov	edx,[open_dialog_type]
1461
	shl	edx,2
1487
	shl	edx,2
1462
	add	edx,message_open_dialog_button
1488
	add	edx,message_open_dialog_button
1463
	mov	edx,[edx]
1489
	mov	edx,[edx]
1464
;--------------------------------------	
1490
;--------------------------------------	
1465
	cmp	[open_dialog_type],1
1491
	cmp	[open_dialog_type],1
1466
	jne	@f
1492
	jne	@f
1467
 
1493
 
1468
	cmp	[focus_pointer],1
1494
	cmp	[focus_pointer],1
1469
	je	@f
1495
	je	@f
1470
	
1496
	
1471
	mov	eax,[file_browser_data_1.selected_BDVK_adress]
1497
	mov	eax,[file_browser_data_1.selected_BDVK_adress]
1472
	test	[eax],byte 0x10
1498
	test	[eax],byte 0x10
1473
	jz	@f
1499
	jz	@f
1474
 
1500
 
1475
	mov	edx,message_0 	; Open Dir
1501
	mov	edx,message_0 	; Open Dir
1476
@@:
1502
@@:
1477
;--------------------------------------
1503
;--------------------------------------
1478
	mov	[open_button_coordinates],ebx
1504
	mov	[open_button_coordinates],ebx
1479
	mov	ecx,[w_work_button_text]
1505
	mov	ecx,[w_work_button_text]
1480
	or	ecx,0x90000000
1506
	or	ecx,0x90000000
1481
	mcall	4	;message_open_button
1507
	mcall	4	;message_open_button
1482
	
1508
	
1483
;	mcall	47,0x80000,[file_browser_data_1.ini_file_start],<250,0>,0x0
1509
;	mcall	47,0x80000,[file_browser_data_1.ini_file_start],<250,0>,0x0
1484
;	mcall	4,<3,420>,0,fb_extension_start,3
1510
;	mcall	4,<3,420>,0,fb_extension_start,3
1485
.end:
1511
.end:
1486
	mcall	12,2
1512
	mcall	12,2
1487
 
1513
 
1488
	ret
1514
	ret
1489
;---------------------------------------------------------------------
1515
;---------------------------------------------------------------------
1490
draw_open_button_label:
1516
draw_open_button_label:
1491
	cmp	[do_not_draw_open_button_label],1
1517
	cmp	[do_not_draw_open_button_label],1
1492
	je	.exit_1	
1518
	je	.exit_1	
1493
 
1519
 
1494
	cmp	[open_dialog_type],1
1520
	cmp	[open_dialog_type],1
1495
	jne	.exit_1
1521
	jne	.exit_1
1496
 
1522
 
1497
	cmp	[focus_pointer],1
1523
	cmp	[focus_pointer],1
1498
	je	draw_save_button_label
1524
	je	draw_save_button_label
1499
	
1525
	
1500
	pusha
1526
	pusha
1501
	mov	ebx,[open_button_coordinates]
1527
	mov	ebx,[open_button_coordinates]
1502
	test	ebx,ebx
1528
	test	ebx,ebx
1503
	jz	.exit
1529
	jz	.exit
1504
 
1530
 
1505
	mov	edx,[open_dialog_type]
1531
	mov	edx,[open_dialog_type]
1506
	shl	edx,2
1532
	shl	edx,2
1507
	add	edx,message_open_dialog_button
1533
	add	edx,message_open_dialog_button
1508
	mov	edx,[edx]
1534
	mov	edx,[edx]
1509
	
1535
	
1510
	mov	eax,[file_browser_data_1.selected_BDVK_adress]
1536
	mov	eax,[file_browser_data_1.selected_BDVK_adress]
1511
	test	[eax],byte 0x10
1537
	test	[eax],byte 0x10
1512
	jz	@f
1538
	jz	@f
1513
	
1539
	
1514
	mov	edx,message_0	; Open Dir
1540
	mov	edx,message_0	; Open Dir
1515
	jmp	.1
1541
	jmp	.1
1516
@@:
1542
@@:
1517
	call	copy_new_file_name
1543
	call	copy_new_file_name
1518
.1:
1544
.1:
1519
	mov	ecx,[w_work_button_text]
1545
	mov	ecx,[w_work_button_text]
1520
	or	ecx,0xd0000000
1546
	or	ecx,0xd0000000
1521
	mov	edi,[w_work_button]
1547
	mov	edi,[w_work_button]
1522
	mcall	4	;message_open_button
1548
	mcall	4	;message_open_button
1523
.exit:
1549
.exit:
1524
	popa
1550
	popa
1525
.exit_1:
1551
.exit_1:
1526
	ret
1552
	ret
1527
;---------------------------------------------------------------------
1553
;---------------------------------------------------------------------
1528
draw_save_button_label:
1554
draw_save_button_label:
1529
	pusha
1555
	pusha
1530
	mov	ebx,[open_button_coordinates]
1556
	mov	ebx,[open_button_coordinates]
1531
 
1557
 
1532
	mov	edx,message_1	; Save
1558
	mov	edx,message_1	; Save
1533
 
1559
 
1534
	mov	ecx,[w_work_button_text]
1560
	mov	ecx,[w_work_button_text]
1535
	or	ecx,0xd0000000
1561
	or	ecx,0xd0000000
1536
	mov	edi,[w_work_button]
1562
	mov	edi,[w_work_button]
1537
	mcall	4	;message_open_button
1563
	mcall	4	;message_open_button
1538
	popa
1564
	popa
1539
	ret
1565
	ret
1540
;---------------------------------------------------------------------
1566
;---------------------------------------------------------------------
1541
copy_new_file_name:
1567
copy_new_file_name:
1542
	mov	esi,[file_browser_data_1.selected_BDVK_adress]
1568
	mov	esi,[file_browser_data_1.selected_BDVK_adress]
1543
	add	esi,40
1569
	add	esi,40
1544
	mov	edi,user_selected_name
1570
	mov	edi,user_selected_name
1545
	cld
1571
	cld
1546
@@:
1572
@@:
1547
	lodsb
1573
	lodsb
1548
	stosb
1574
	stosb
1549
	test	al,al
1575
	test	al,al
1550
	jnz	@r
1576
	jnz	@r
1551
	
1577
	
1552
	sub	edi,user_selected_name
1578
	sub	edi,user_selected_name
1553
	dec	edi
1579
	dec	edi
1554
	
1580
	
1555
	mov	esi,edit1
1581
	mov	esi,edit1
1556
	mov	[esi+48],edi ;ed_size
1582
	mov	[esi+48],edi ;ed_size
1557
	mov	[esi+52],edi ;ed_pos
1583
	mov	[esi+52],edi ;ed_pos
1558
 
1584
 
1559
	push	dword name_editboxes
1585
	push	dword name_editboxes
1560
	call	[edit_box_draw]
1586
	call	[edit_box_draw]
1561
	ret
1587
	ret
1562
;---------------------------------------------------------------------
1588
;---------------------------------------------------------------------
1563
prepare_system_colors:
1589
prepare_system_colors:
1564
	mcall	48,3,app_colours,10*4
1590
	mcall	48,3,app_colours,10*4
1565
 
1591
 
1566
	mov	eax,[w_work]
1592
	mov	eax,[w_work]
1567
	mov	[menu_data_1.bckg_col],eax
1593
	mov	[menu_data_1.bckg_col],eax
1568
	mov	[menu_data_2.bckg_col],eax
1594
	mov	[menu_data_2.bckg_col],eax
1569
	mov	[menu_data_3.bckg_col],eax
1595
	mov	[menu_data_3.bckg_col],eax
1570
 
1596
 
1571
	mov	[menu_data_1.menu_col],eax
1597
	mov	[menu_data_1.menu_col],eax
1572
	mov	[menu_data_2.menu_col],eax
1598
	mov	[menu_data_2.menu_col],eax
1573
	mov	[menu_data_3.menu_col],eax
1599
	mov	[menu_data_3.menu_col],eax
1574
	
1600
	
1575
	mov	[scroll_bar_data_vertical.bckg_col],eax	
1601
	mov	[scroll_bar_data_vertical.bckg_col],eax	
1576
 
1602
 
1577
	mov	eax,[w_work_button]
1603
	mov	eax,[w_work_button]
1578
	mov	[menu_data_1.frnt_col],eax
1604
	mov	[menu_data_1.frnt_col],eax
1579
	mov	[menu_data_2.frnt_col],eax
1605
	mov	[menu_data_2.frnt_col],eax
1580
	mov	[menu_data_3.frnt_col],eax
1606
	mov	[menu_data_3.frnt_col],eax
1581
 
1607
 
1582
	mov	[scroll_bar_data_vertical.frnt_col],eax	
1608
	mov	[scroll_bar_data_vertical.frnt_col],eax	
1583
 
1609
 
1584
	mov	eax,[w_work_button]
1610
	mov	eax,[w_work_button]
1585
	mov	[menu_data_1.menu_sel_col],eax
1611
	mov	[menu_data_1.menu_sel_col],eax
1586
	mov	[menu_data_2.menu_sel_col],eax
1612
	mov	[menu_data_2.menu_sel_col],eax
1587
	mov	[menu_data_3.menu_sel_col],eax
1613
	mov	[menu_data_3.menu_sel_col],eax
1588
 
1614
 
1589
	mov	eax,[w_work_text]
1615
	mov	eax,[w_work_text]
1590
	mov	[menu_data_1.bckg_text_col],eax
1616
	mov	[menu_data_1.bckg_text_col],eax
1591
	mov	[menu_data_2.bckg_text_col],eax
1617
	mov	[menu_data_2.bckg_text_col],eax
1592
	mov	[menu_data_3.bckg_text_col],eax
1618
	mov	[menu_data_3.bckg_text_col],eax
1593
	
1619
	
1594
	mov	eax,[w_work_button_text]
1620
	mov	eax,[w_work_button_text]
1595
	mov	[menu_data_1.frnt_text_col],eax
1621
	mov	[menu_data_1.frnt_text_col],eax
1596
	mov	[menu_data_2.frnt_text_col],eax
1622
	mov	[menu_data_2.frnt_text_col],eax
1597
	mov	[menu_data_3.frnt_text_col],eax
1623
	mov	[menu_data_3.frnt_text_col],eax
1598
	
1624
	
1599
	mov	[scroll_bar_data_vertical.line_col],eax	
1625
	mov	[scroll_bar_data_vertical.line_col],eax	
1600
	ret
1626
	ret
1601
;---------------------------------------------------------------------
1627
;---------------------------------------------------------------------
1602
draw_for_fs_errors:
1628
draw_for_fs_errors:
1603
	call	draw_dir_path
1629
	call	draw_dir_path
1604
 
1630
 
1605
	mov	ebx,[file_browser_data_1.x]
1631
	mov	ebx,[file_browser_data_1.x]
1606
	mov	ecx,[file_browser_data_1.y]
1632
	mov	ecx,[file_browser_data_1.y]
1607
	mcall	13,,,[file_browser_data_1.background_color]
1633
	mcall	13,,,[file_browser_data_1.background_color]
1608
	push	ebx ecx
1634
	push	ebx ecx
1609
	add	ebx,10 shl 16
1635
	add	ebx,10 shl 16
1610
	sub	ebx,20
1636
	sub	ebx,20
1611
	add	ecx,10 shl 16
1637
	add	ecx,10 shl 16
1612
	sub	ecx,20
1638
	sub	ecx,20
1613
	mov	edx,0xff0000
1639
	mov	edx,0xff0000
1614
	mcall
1640
	mcall
1615
 
1641
 
1616
	shr	ecx,16
1642
	shr	ecx,16
1617
	mov	bx,cx
1643
	mov	bx,cx
1618
	add	ebx,5 shl 16+15
1644
	add	ebx,5 shl 16+15
1619
	mcall	4,,0x90ffffff,load_directory_error_type
1645
	mcall	4,,0x90ffffff,load_directory_error_type
1620
 
1646
 
1621
	add	ebx,20
1647
	add	ebx,20
1622
	mcall	4,,,dir_path	
1648
	mcall	4,,,dir_path	
1623
 
1649
 
1624
	mov	eax,[error_type]
1650
	mov	eax,[error_type]
1625
	shl	eax,2
1651
	shl	eax,2
1626
	add	eax,error_fs_text_pointers
1652
	add	eax,error_fs_text_pointers
1627
	mov	edx,[eax]
1653
	mov	edx,[eax]
1628
	add	ebx,20
1654
	add	ebx,20
1629
	mcall	4
1655
	mcall	4
1630
 
1656
 
1631
	pop	ecx ebx
1657
	pop	ecx ebx
1632
 
1658
 
1633
	mov	ebx,[file_browser_data_1.x]
1659
	mov	ebx,[file_browser_data_1.x]
1634
	mov	ax,bx
1660
	mov	ax,bx
1635
	shr	eax,1
1661
	shr	eax,1
1636
	shl	eax,16
1662
	shl	eax,16
1637
	add	ebx,eax
1663
	add	ebx,eax
1638
	mov	eax,50
1664
	mov	eax,50
1639
	mov	bx,ax
1665
	mov	bx,ax
1640
	shr	eax,1
1666
	shr	eax,1
1641
	shl	eax,16
1667
	shl	eax,16
1642
	sub	ebx,eax
1668
	sub	ebx,eax
1643
 
1669
 
1644
	mov	ecx,[file_browser_data_1.y]
1670
	mov	ecx,[file_browser_data_1.y]
1645
	mov	ax,cx
1671
	mov	ax,cx
1646
	sub	eax,40
1672
	sub	eax,40
1647
	shl	eax,16
1673
	shl	eax,16
1648
	add	ecx,eax
1674
	add	ecx,eax
1649
	mov	cx,15
1675
	mov	cx,15
1650
 
1676
 
1651
	mcall	8,,,5,0xffffff
1677
	mcall	8,,,5,0xffffff
1652
 
1678
 
1653
	shr	ecx,16
1679
	shr	ecx,16
1654
	mov	bx,cx
1680
	mov	bx,cx
1655
	add	ebx,4 shl 16+4
1681
	add	ebx,4 shl 16+4
1656
	mcall	4,,0x90000000,message_cancel_button
1682
	mcall	4,,0x90000000,message_cancel_button
1657
 
1683
 
1658
 
1684
 
1659
	ret
1685
	ret
1660
;---------------------------------------------------------------------	
1686
;---------------------------------------------------------------------	
1661
draw_file_name:
1687
draw_file_name:
1662
	mov	esi,user_selected_name
1688
	mov	esi,user_selected_name
1663
	cld
1689
	cld
1664
@@:
1690
@@:
1665
	lodsb
1691
	lodsb
1666
	test	al,al
1692
	test	al,al
1667
	jne	@r
1693
	jne	@r
1668
	sub	esi,user_selected_name
1694
	sub	esi,user_selected_name
1669
	mov	eax,esi
1695
	mov	eax,esi
1670
	dec	eax
1696
	dec	eax
1671
	
1697
	
1672
	mov	edi,edit1
1698
	mov	edi,edit1
1673
	mov	[edi+48],eax ;ed_size
1699
	mov	[edi+48],eax ;ed_size
1674
	mov	[edi+52],eax ;ed_pos
1700
	mov	[edi+52],eax ;ed_pos
1675
;--------------------------------------
1701
;--------------------------------------
1676
	mov	eax,[file_browser_data_1.x]
1702
	mov	eax,[file_browser_data_1.x]
1677
	mov	ebx,eax
1703
	mov	ebx,eax
1678
	shr	ebx,16
1704
	shr	ebx,16
1679
	and	eax,0xffff
1705
	and	eax,0xffff
1680
	sub	eax,200
1706
	sub	eax,200
1681
	mov	[edi],eax
1707
	mov	[edi],eax
1682
	add	ebx,70
1708
	add	ebx,70
1683
	mov	[edi+4],ebx
1709
	mov	[edi+4],ebx
1684
	
1710
	
1685
	mov	eax,[file_browser_data_1.y]
1711
	mov	eax,[file_browser_data_1.y]
1686
	mov	ebx,eax
1712
	mov	ebx,eax
1687
	shr	ebx,16
1713
	shr	ebx,16
1688
	and	eax,0xffff
1714
	and	eax,0xffff
1689
	add	eax,ebx
1715
	add	eax,ebx
1690
	add	eax,5
1716
	add	eax,5
1691
	mov	[edi+8],eax
1717
	mov	[edi+8],eax
1692
	
1718
	
1693
	push	dword name_editboxes
1719
	push	dword name_editboxes
1694
	call	[edit_box_draw]	
1720
	call	[edit_box_draw]	
1695
	
1721
	
1696
	mov	bx,[file_browser_data_1.start_x]
1722
	mov	bx,[file_browser_data_1.start_x]
1697
	add	bx,5
1723
	add	bx,5
1698
	shl	ebx,16
1724
	shl	ebx,16
1699
	mov	bx,[file_browser_data_1.start_y]
1725
	mov	bx,[file_browser_data_1.start_y]
1700
	add	bx,[file_browser_data_1.size_y]
1726
	add	bx,[file_browser_data_1.size_y]
1701
	add	bx,9
1727
	add	bx,9
1702
	mcall	4,,0x80000000,message_file_name
1728
	mcall	4,,0x80000000,message_file_name
1703
	ret
1729
	ret
1704
;---------------------------------------------------------------------
1730
;---------------------------------------------------------------------
1705
draw_dir_path:
1731
draw_dir_path:
1706
	mov	eax,[file_browser_data_1.x]
1732
	mov	eax,[file_browser_data_1.x]
1707
	mov	ebx,eax
1733
	mov	ebx,eax
1708
	shr	ebx,16
1734
	shr	ebx,16
1709
	add	ebx,3
1735
	add	ebx,3
1710
	and	eax,0xffff
1736
	and	eax,0xffff
1711
	sub	eax,5
1737
	sub	eax,5
1712
	
1738
	
1713
	mov	[PathShow_data_1.area_size_x],ax
1739
	mov	[PathShow_data_1.area_size_x],ax
1714
	mov	[PathShow_data_1.start_x],bx
1740
	mov	[PathShow_data_1.start_x],bx
1715
;--------------------------------------
1741
;--------------------------------------
1716
;; top line
1742
;; top line
1717
;	mov	ebx,[file_browser_data_1.x]
1743
;	mov	ebx,[file_browser_data_1.x]
1718
;	mcall	13,,<7,1>,0x0
1744
;	mcall	13,,<7,1>,0x0
1719
; down line
1745
; down line
1720
;	push	ebx ecx
1746
;	push	ebx ecx
1721
;	mcall	,,<21,1>,
1747
;	mcall	,,<21,1>,
1722
;	pop	ecx ebx
1748
;	pop	ecx ebx
1723
; left line	
1749
; left line	
1724
;	push	ebx
1750
;	push	ebx
1725
;	mov	bx,1
1751
;	mov	bx,1
1726
;	mov	cx,15
1752
;	mov	cx,15
1727
;	mcall
1753
;	mcall
1728
;	pop	ebx
1754
;	pop	ebx
1729
; right line
1755
; right line
1730
;	mov	ax,bx
1756
;	mov	ax,bx
1731
;	shr	ebx,16
1757
;	shr	ebx,16
1732
;	add	bx,ax
1758
;	add	bx,ax
1733
;	dec	ebx
1759
;	dec	ebx
1734
;	shl	ebx,16
1760
;	shl	ebx,16
1735
;	mov	bx,1
1761
;	mov	bx,1
1736
;	mcall	13
1762
;	mcall	13
1737
;--------------------------------------	
1763
;--------------------------------------	
1738
	mov	ebx,[file_browser_data_1.x]
1764
	mov	ebx,[file_browser_data_1.x]
1739
	sub	ebx,2
1765
	sub	ebx,2
1740
	add	ebx,1 shl 16
1766
	add	ebx,1 shl 16
1741
	mcall	13,,<8,13>,0xffffcc
1767
	mcall	13,,<8,13>,0xffffcc
1742
;--------------------------------------
1768
;--------------------------------------
1743
; prepare for PathShow
1769
; prepare for PathShow
1744
	push	dword PathShow_data_1
1770
	push	dword PathShow_data_1
1745
	call	[PathShow_prepare]
1771
	call	[PathShow_prepare]
1746
	
1772
	
1747
; draw for PathShow
1773
; draw for PathShow
1748
	push	dword PathShow_data_1
1774
	push	dword PathShow_data_1
1749
	call	[PathShow_draw]
1775
	call	[PathShow_draw]
1750
	
1776
	
1751
	ret
1777
	ret
1752
;---------------------------------------------------------------------
1778
;---------------------------------------------------------------------
1753
draw_draw_file_browser1:
1779
draw_draw_file_browser1:
1754
	call	draw_dir_path
1780
	call	draw_dir_path
1755
	cmp	[open_dialog_type],1
1781
	cmp	[open_dialog_type],1
1756
	jne	@f	
1782
	jne	@f	
1757
	call	draw_file_name
1783
	call	draw_file_name
1758
@@:
1784
@@:
1759
	xor	eax,eax
1785
	xor	eax,eax
1760
	inc	eax
1786
	inc	eax
1761
	mov	[file_browser_data_1.all_redraw],eax
1787
	mov	[file_browser_data_1.all_redraw],eax
1762
	mov	[scroll_bar_data_vertical.all_redraw],eax
1788
	mov	[scroll_bar_data_vertical.all_redraw],eax
1763
	
1789
	
1764
	push	dword file_browser_data_1
1790
	push	dword file_browser_data_1
1765
	call	[FileBrowser_draw]
1791
	call	[FileBrowser_draw]
1766
 
1792
 
1767
	call	draw_open_button_label
1793
	call	draw_open_button_label
1768
	
1794
	
1769
	call	prepare_scrollbar_data
1795
	call	prepare_scrollbar_data
1770
 
1796
 
1771
	call	draw_scrollbar
1797
	call	draw_scrollbar
1772
 
1798
 
1773
	xor	eax,eax
1799
	xor	eax,eax
1774
	mov	[file_browser_data_1.all_redraw],eax
1800
	mov	[file_browser_data_1.all_redraw],eax
1775
	mov	[scroll_bar_data_vertical.all_redraw],eax
1801
	mov	[scroll_bar_data_vertical.all_redraw],eax
1776
	ret
1802
	ret
1777
;---------------------------------------------------------------------
1803
;---------------------------------------------------------------------
1778
draw_draw_file_browser2:
1804
draw_draw_file_browser2:
1779
	mov	eax,2
1805
	mov	eax,2
1780
	mov	[file_browser_data_1.all_redraw],eax
1806
	mov	[file_browser_data_1.all_redraw],eax
1781
 
1807
 
1782
	call	get_scrollbar_data
1808
	call	get_scrollbar_data
1783
 
1809
 
1784
	push	dword file_browser_data_1
1810
	push	dword file_browser_data_1
1785
	call	[FileBrowser_draw]
1811
	call	[FileBrowser_draw]
1786
 
1812
 
1787
	call	draw_open_button_label
1813
	call	draw_open_button_label
1788
 
1814
 
1789
	xor	eax,eax
1815
	xor	eax,eax
1790
	mov	[file_browser_data_1.all_redraw],eax
1816
	mov	[file_browser_data_1.all_redraw],eax
1791
	ret
1817
	ret
1792
;---------------------------------------------------------------------
1818
;---------------------------------------------------------------------
1793
draw_scrollbar1:
1819
draw_scrollbar1:
1794
	mov	eax,[file_browser_data_1.start_draw_line]
1820
	mov	eax,[file_browser_data_1.start_draw_line]
1795
	mov	[scroll_bar_data_vertical.position],eax
1821
	mov	[scroll_bar_data_vertical.position],eax
1796
 
1822
 
1797
	call	draw_scrollbar
1823
	call	draw_scrollbar
1798
 
1824
 
1799
	ret
1825
	ret
1800
;---------------------------------------------------------------------
1826
;---------------------------------------------------------------------
1801
draw_scrollbar:
1827
draw_scrollbar:
1802
	mov	eax,[scroll_bar_data_vertical.max_area]
1828
	mov	eax,[scroll_bar_data_vertical.max_area]
1803
	cmp	eax,[scroll_bar_data_vertical.cur_area]
1829
	cmp	eax,[scroll_bar_data_vertical.cur_area]
1804
	jbe	@f
1830
	jbe	@f
1805
	cmp	[scroll_bar_data_vertical.cur_area],0
1831
	cmp	[scroll_bar_data_vertical.cur_area],0
1806
	je	@f
1832
	je	@f
1807
	push	dword scroll_bar_data_vertical
1833
	push	dword scroll_bar_data_vertical
1808
	call	[scrollbar_ver_draw]
1834
	call	[scrollbar_ver_draw]
1809
@@:
1835
@@:
1810
	ret
1836
	ret
1811
;---------------------------------------------------------------------
1837
;---------------------------------------------------------------------
1812
get_scrollbar_data:
1838
get_scrollbar_data:
1813
	mov	eax,[scroll_bar_data_vertical.position]
1839
	mov	eax,[scroll_bar_data_vertical.position]
1814
	mov	[file_browser_data_1.start_draw_line],eax
1840
	mov	[file_browser_data_1.start_draw_line],eax
1815
	ret
1841
	ret
1816
;---------------------------------------------------------------------
1842
;---------------------------------------------------------------------
1817
prepare_scrollbar_data:
1843
prepare_scrollbar_data:
1818
	mov	eax,[file_browser_data_1.folder_block]
1844
	mov	eax,[file_browser_data_1.folder_block]
1819
	mov	[scroll_bar_data_vertical.max_area],eax
1845
	mov	[scroll_bar_data_vertical.max_area],eax
1820
	mov	eax,[file_browser_data_1.max_panel_line]
1846
	mov	eax,[file_browser_data_1.max_panel_line]
1821
	mov	[scroll_bar_data_vertical.cur_area],eax
1847
	mov	[scroll_bar_data_vertical.cur_area],eax
1822
	ret
1848
	ret
1823
;---------------------------------------------------------------------
1849
;---------------------------------------------------------------------
1824
get_active_pocess:
1850
get_active_pocess:
1825
	mcall	9,procinfo,-1
1851
	mcall	9,procinfo,-1
1826
	mov	ecx,[ebx+30]	; PID
1852
	mov	ecx,[ebx+30]	; PID
1827
	mcall	18,21
1853
	mcall	18,21
1828
	mov	[active_process],eax	; WINDOW SLOT
1854
	mov	[active_process],eax	; WINDOW SLOT
1829
	mov	ebx,[communication_area]	
1855
	mov	ebx,[communication_area]	
1830
	test	ebx,ebx
1856
	test	ebx,ebx
1831
	jz	.1
1857
	jz	.1
1832
	mov	[ebx+12],eax	; WINDOW SLOT to com. area
1858
	mov	[ebx+12],eax	; WINDOW SLOT to com. area
1833
.1:
1859
.1:
1834
	ret
1860
	ret
1835
;---------------------------------------------------------------------
1861
;---------------------------------------------------------------------
1836
get_window_param:
1862
get_window_param:
1837
	mcall	9,procinfo,-1
1863
	mcall	9,procinfo,-1
1838
	mov	eax,[ebx+66]
1864
	mov	eax,[ebx+66]
1839
	inc	eax
1865
	inc	eax
1840
	mov	[window_high],eax
1866
	mov	[window_high],eax
1841
	mov	eax,[ebx+62]
1867
	mov	eax,[ebx+62]
1842
	inc	eax
1868
	inc	eax
1843
	mov	[window_width],eax
1869
	mov	[window_width],eax
1844
	mov	eax,[ebx+70]
1870
	mov	eax,[ebx+70]
1845
	mov	[window_status],eax
1871
	mov	[window_status],eax
1846
	ret
1872
	ret
1847
;---------------------------------------------------------------------
1873
;---------------------------------------------------------------------
1848
convert_icons:
1874
convert_icons:
1849
	xor	eax,eax
1875
	xor	eax,eax
1850
	mov	[return_code],eax
1876
	mov	[return_code],eax
1851
;	mov	eax,image_file
1877
;	mov	eax,image_file
1852
	push	image_file
1878
	push	image_file
1853
	call	[cnv_png_import.Start]
1879
	call	[cnv_png_import.Start]
1854
 
1880
 
1855
	mov	ecx,[image_file]
1881
	mov	ecx,[image_file]
1856
	mcall	68,13,
1882
	mcall	68,13,
1857
	test	eax,eax
1883
	test	eax,eax
1858
	jz	memory_free_error
1884
	jz	memory_free_error
1859
 
1885
 
1860
	cmp	[return_code],dword 0
1886
	cmp	[return_code],dword 0
1861
	je	@f
1887
	je	@f
1862
	mov	[N_error],6
1888
	mov	[N_error],6
1863
	jmp	button.exit
1889
	jmp	button.exit
1864
@@:
1890
@@:
1865
 
1891
 
1866
	mov	ebx,[raw_pointer]
1892
	mov	ebx,[raw_pointer]
1867
	mov	eax,[ebx+4]
1893
	mov	eax,[ebx+4]
1868
; set of icon size x
1894
; set of icon size x
1869
	mov	[file_browser_data_1.icon_size_x],ax
1895
	mov	[file_browser_data_1.icon_size_x],ax
1870
; mov eax,[ebx+8]
1896
; mov eax,[ebx+8]
1871
; set of icon size y
1897
; set of icon size y
1872
	mov	[file_browser_data_1.icon_size_y],ax
1898
	mov	[file_browser_data_1.icon_size_y],ax
1873
	inc	ax
1899
	inc	ax
1874
	mov	[file_browser_data_1.line_size_y],ax
1900
	mov	[file_browser_data_1.line_size_y],ax
1875
	mov	eax,[ebx+12]
1901
	mov	eax,[ebx+12]
1876
; set of RAW resolution to pixel
1902
; set of RAW resolution to pixel
1877
	mov	[file_browser_data_1.resolution_raw],eax
1903
	mov	[file_browser_data_1.resolution_raw],eax
1878
 
1904
 
1879
	mov	eax,[ebx+20]
1905
	mov	eax,[ebx+20]
1880
	add	eax,ebx
1906
	add	eax,ebx
1881
; set RAW palette,use else resolution 8bit or less
1907
; set RAW palette,use else resolution 8bit or less
1882
	mov	[file_browser_data_1.palette_raw],eax
1908
	mov	[file_browser_data_1.palette_raw],eax
1883
 
1909
 
1884
	mov	eax,[ebx+28]
1910
	mov	eax,[ebx+28]
1885
	add	eax,ebx
1911
	add	eax,ebx
1886
; set RAW area for icon
1912
; set RAW area for icon
1887
	mov	[file_browser_data_1.icon_raw_area],eax
1913
	mov	[file_browser_data_1.icon_raw_area],eax
1888
	ret
1914
	ret
1889
;---------------------------------------------------------------------
1915
;---------------------------------------------------------------------
1890
calc_ini:
1916
calc_ini:
1891
	mov	eax,[image_file]
1917
	mov	eax,[image_file]
1892
	mov	[file_browser_data_1.ini_file_start],eax
1918
	mov	[file_browser_data_1.ini_file_start],eax
1893
	add	eax,[img_size]
1919
	add	eax,[img_size]
1894
	mov	[file_browser_data_1.ini_file_end],eax
1920
	mov	[file_browser_data_1.ini_file_end],eax
1895
	ret
1921
	ret
1896
;---------------------------------------------------------------------
1922
;---------------------------------------------------------------------
1897
load_ini:
1923
load_ini:
1898
	mov	ebx,ini_file_name
1924
	mov	ebx,ini_file_name
1899
	mov	esi,path
1925
	mov	esi,path
1900
	mov	edi,file_name
1926
	mov	edi,file_name
1901
	call	copy_file_path
1927
	call	copy_file_path
1902
 
1928
 
1903
	mov	[fileinfo.subfunction],dword 5
1929
	mov	[fileinfo.subfunction],dword 5
1904
	mov	[fileinfo.size],dword 0
1930
	mov	[fileinfo.size],dword 0
1905
	mov	[fileinfo.return],dword file_info
1931
	mov	[fileinfo.return],dword file_info
1906
	mcall	70,fileinfo
1932
	mcall	70,fileinfo
1907
	test	eax,eax
1933
	test	eax,eax
1908
	jnz	.error
1934
	jnz	.error
1909
 
1935
 
1910
	mov	[fileinfo.subfunction],dword 0
1936
	mov	[fileinfo.subfunction],dword 0
1911
 
1937
 
1912
	mov	ecx,[file_info+32]
1938
	mov	ecx,[file_info+32]
1913
	mov	[fileinfo.size],ecx
1939
	mov	[fileinfo.size],ecx
1914
	mov	[img_size],ecx
1940
	mov	[img_size],ecx
1915
	
1941
	
1916
	mcall	68,12
1942
	mcall	68,12
1917
	test	eax,eax
1943
	test	eax,eax
1918
	jz	memory_get_error
1944
	jz	memory_get_error
1919
 
1945
 
1920
	mov	[fileinfo.return],eax
1946
	mov	[fileinfo.return],eax
1921
	mov	[image_file],eax
1947
	mov	[image_file],eax
1922
 
1948
 
1923
	mcall	70,fileinfo
1949
	mcall	70,fileinfo
1924
	test	eax,eax
1950
	test	eax,eax
1925
	jnz	.error
1951
	jnz	.error
1926
	ret
1952
	ret
1927
.error:
1953
.error:
1928
	mov	[N_error],1
1954
	mov	[N_error],1
1929
	mov	[error_type],eax
1955
	mov	[error_type],eax
1930
	jmp	button.exit
1956
	jmp	button.exit
1931
;---------------------------------------------------------------------
1957
;---------------------------------------------------------------------
1932
load_icons:
1958
load_icons:
1933
	mov	ebx,icons_file_name_2
1959
	mov	ebx,icons_file_name_2
1934
	mov	esi,path
1960
	mov	esi,path
1935
	mov	edi,file_name
1961
	mov	edi,file_name
1936
	call	copy_file_path
1962
	call	copy_file_path
1937
 
1963
 
1938
	mov	[fileinfo.subfunction],dword 5
1964
	mov	[fileinfo.subfunction],dword 5
1939
	mov	[fileinfo.size],dword 0
1965
	mov	[fileinfo.size],dword 0
1940
	mov	[fileinfo.return],dword file_info
1966
	mov	[fileinfo.return],dword file_info
1941
	mcall	70,fileinfo
1967
	mcall	70,fileinfo
1942
	test	eax,eax
1968
	test	eax,eax
1943
	jz	@f
1969
	jz	@f
1944
	
1970
	
1945
	mov	ebx,icons_file_name
1971
	mov	ebx,icons_file_name
1946
	mov	esi,path
1972
	mov	esi,path
1947
	mov	edi,file_name
1973
	mov	edi,file_name
1948
	call	copy_file_path
1974
	call	copy_file_path
1949
 
1975
 
1950
	mov	[fileinfo.subfunction],dword 5
1976
	mov	[fileinfo.subfunction],dword 5
1951
	mov	[fileinfo.size],dword 0
1977
	mov	[fileinfo.size],dword 0
1952
	mov	[fileinfo.return],dword file_info
1978
	mov	[fileinfo.return],dword file_info
1953
	mcall	70,fileinfo
1979
	mcall	70,fileinfo
1954
	test	eax,eax
1980
	test	eax,eax
1955
	jnz	.error
1981
	jnz	.error
1956
@@:
1982
@@:
1957
	mov	[fileinfo.subfunction],dword 0
1983
	mov	[fileinfo.subfunction],dword 0
1958
 
1984
 
1959
	mov	ecx,[file_info+32]
1985
	mov	ecx,[file_info+32]
1960
	mov	[fileinfo.size],ecx
1986
	mov	[fileinfo.size],ecx
1961
	mov	[img_size],ecx
1987
	mov	[img_size],ecx
1962
	
1988
	
1963
	mcall	68,12
1989
	mcall	68,12
1964
	test	eax,eax
1990
	test	eax,eax
1965
	jz	memory_get_error
1991
	jz	memory_get_error
1966
 
1992
 
1967
	mov	[fileinfo.return],eax
1993
	mov	[fileinfo.return],eax
1968
	mov	[image_file],eax
1994
	mov	[image_file],eax
1969
 
1995
 
1970
	mcall	70,fileinfo
1996
	mcall	70,fileinfo
1971
	test	eax,eax
1997
	test	eax,eax
1972
	jnz	.error
1998
	jnz	.error
1973
	ret
1999
	ret
1974
.error:
2000
.error:
1975
	mov	[N_error],2
2001
	mov	[N_error],2
1976
	mov	[error_type],eax
2002
	mov	[error_type],eax
1977
	jmp	button.exit
2003
	jmp	button.exit
1978
;---------------------------------------------------------------------
2004
;---------------------------------------------------------------------
1979
sort_directory:
2005
sort_directory:
1980
	mov	eax,[file_browser_data_1.folder_data]
2006
	mov	eax,[file_browser_data_1.folder_data]
1981
	mov	ebx,[eax+4]	; number of files
2007
	mov	ebx,[eax+4]	; number of files
1982
	add	eax,32
2008
	add	eax,32
1983
	cmp	[eax+40],word '..'
2009
	cmp	[eax+40],word '..'
1984
	jne	@f
2010
	jne	@f
1985
	cmp	[eax+40+2],byte 0
2011
	cmp	[eax+40+2],byte 0
1986
	jne	@f
2012
	jne	@f
1987
	dec	ebx
2013
	dec	ebx
1988
	add	eax,304
2014
	add	eax,304
1989
@@:
2015
@@:
1990
	push	dword [sort_type]	; sort mode
2016
	push	dword [sort_type]	; sort mode
1991
	push	ebx	; number of files
2017
	push	ebx	; number of files
1992
	push	eax	; data files
2018
	push	eax	; data files
1993
	call	[sort_dir]
2019
	call	[sort_dir]
1994
	ret
2020
	ret
1995
;--------------------------------------------------------------------
2021
;--------------------------------------------------------------------
1996
load_directory:
2022
load_directory:
1997
	xor	eax,eax
2023
	xor	eax,eax
1998
	mov	[N_error],eax
2024
	mov	[N_error],eax
1999
	cmp	[file_browser_data_1.folder_data],eax
2025
	cmp	[file_browser_data_1.folder_data],eax
2000
	je	@f
2026
	je	@f
2001
	mcall	68,13,[file_browser_data_1.folder_data]
2027
	mcall	68,13,[file_browser_data_1.folder_data]
2002
	test	eax,eax
2028
	test	eax,eax
2003
	jz	memory_free_error
2029
	jz	memory_free_error
2004
 
2030
 
2005
@@:
2031
@@:
2006
	mov	[dirinfo.size],dword 0
2032
	mov	[dirinfo.size],dword 0
2007
	mov	[dirinfo.return],dir_header
2033
	mov	[dirinfo.return],dir_header
2008
	mcall	70,dirinfo
2034
	mcall	70,dirinfo
2009
	test	eax,eax
2035
	test	eax,eax
2010
	jz	@f
2036
	jz	@f
2011
;	mov	esi,previous_dir_path
2037
;	mov	esi,previous_dir_path
2012
;	mov	edi,dir_path
2038
;	mov	edi,dir_path
2013
;	call	copy_dir_name.1
2039
;	call	copy_dir_name.1
2014
;	mcall	70,dirinfo
2040
;	mcall	70,dirinfo
2015
;	test	eax,eax
2041
;	test	eax,eax
2016
;	jz	@f	
2042
;	jz	@f	
2017
	xor	ebx,ebx
2043
	xor	ebx,ebx
2018
	mov	[file_browser_data_1.folder_data],ebx
2044
	mov	[file_browser_data_1.folder_data],ebx
2019
	jmp	.error
2045
	jmp	.error
2020
@@:
2046
@@:
2021
	
2047
	
2022
	mov	ecx,[dir_header.totl_blocks]
2048
	mov	ecx,[dir_header.totl_blocks]
2023
	mov	[dirinfo.size],ecx
2049
	mov	[dirinfo.size],ecx
2024
	imul	ecx,304
2050
	imul	ecx,304
2025
	add	ecx,32
2051
	add	ecx,32
2026
	mcall	68,12
2052
	mcall	68,12
2027
	test	eax,eax
2053
	test	eax,eax
2028
	jz	memory_get_error
2054
	jz	memory_get_error
2029
 
2055
 
2030
	mov	[dirinfo.return],eax
2056
	mov	[dirinfo.return],eax
2031
	mov	[file_browser_data_1.folder_data],eax
2057
	mov	[file_browser_data_1.folder_data],eax
2032
 
2058
 
2033
	mcall	70,dirinfo
2059
	mcall	70,dirinfo
2034
	test	eax,eax
2060
	test	eax,eax
2035
	jnz	.error
2061
	jnz	.error
2036
	
2062
	
2037
; test for empty directory
2063
; test for empty directory
2038
	mov	eax,[dirinfo.return]
2064
	mov	eax,[dirinfo.return]
2039
	mov	eax,[eax+4]
2065
	mov	eax,[eax+4]
2040
	test	eax,eax
2066
	test	eax,eax
2041
	jz	@f
2067
	jz	@f
2042
	
2068
	
2043
	call	delete_point_dir
2069
	call	delete_point_dir
2044
;	call	files_name_normalize
2070
;	call	files_name_normalize
2045
	call	check_filter
2071
	call	check_filter
2046
	call	prepare_extension_and_mark
2072
	call	prepare_extension_and_mark
2047
	call	clear_data_fb_and_sb
2073
	call	clear_data_fb_and_sb
2048
@@:
2074
@@:
2049
	ret
2075
	ret
2050
 
2076
 
2051
.error:
2077
.error:
2052
	mov	[N_error],5
2078
	mov	[N_error],5
2053
	mov	[error_type],eax
2079
	mov	[error_type],eax
2054
	ret
2080
	ret
2055
;---------------------------------------------------------------------
2081
;---------------------------------------------------------------------
2056
clear_data_fb_and_sb:
2082
clear_data_fb_and_sb:
2057
	xor	eax,eax
2083
	xor	eax,eax
2058
	mov	[file_browser_data_1.start_draw_cursor_line],ax
2084
	mov	[file_browser_data_1.start_draw_cursor_line],ax
2059
	mov	[file_browser_data_1.start_draw_line],eax
2085
	mov	[file_browser_data_1.start_draw_line],eax
2060
	mov	[scroll_bar_data_vertical.position],eax	
2086
	mov	[scroll_bar_data_vertical.position],eax	
2061
	ret
2087
	ret
2062
;---------------------------------------------------------------------
2088
;---------------------------------------------------------------------
2063
check_filter:
2089
check_filter:
2064
	cmp [open_dialog_type],2	; Select dir
2090
	cmp [open_dialog_type],2	; Select dir
2065
	je	.1
2091
	je	.1
2066
	xor	eax,eax
2092
	xor	eax,eax
2067
	mov	al,[filter_flag]
2093
	mov	al,[filter_flag]
2068
	test	eax,eax
2094
	test	eax,eax
2069
	jz	@f
2095
	jz	@f
2070
 
2096
 
2071
	mov	eax,[communication_area]
2097
	mov	eax,[communication_area]
2072
	test	eax,eax
2098
	test	eax,eax
2073
	jz	@f
2099
	jz	@f
2074
	mov	eax,[eax+4096]
2100
	mov	eax,[eax+4096]
2075
	test	eax,eax
2101
	test	eax,eax
2076
	jz	@f
2102
	jz	@f
2077
.1:
2103
.1:
2078
	call	delete_unsupported_BDFE
2104
	call	delete_unsupported_BDFE
2079
@@:
2105
@@:
2080
	ret
2106
	ret
2081
;---------------------------------------------------------------------
2107
;---------------------------------------------------------------------
2082
delete_unsupported_BDFE:
2108
delete_unsupported_BDFE:
2083
	mov	ebx,[file_browser_data_1.folder_data]
2109
	mov	ebx,[file_browser_data_1.folder_data]
2084
	add	ebx,4
2110
	add	ebx,4
2085
	xor	ecx,ecx
2111
	xor	ecx,ecx
2086
	dec	ecx
2112
	dec	ecx
2087
	
2113
	
2088
	mov	eax,[file_browser_data_1.folder_data]
2114
	mov	eax,[file_browser_data_1.folder_data]
2089
	add	eax,32+40
2115
	add	eax,32+40
2090
	sub	eax,304
2116
	sub	eax,304
2091
.start:
2117
.start:
2092
	inc	ecx
2118
	inc	ecx
2093
	add	eax,304
2119
	add	eax,304
2094
.1:
2120
.1:
2095
	cmp	[ebx],ecx
2121
	cmp	[ebx],ecx
2096
	je	.end
2122
	je	.end
2097
	cmp	[eax],byte '.'
2123
	cmp	[eax],byte '.'
2098
	jne	@f
2124
	jne	@f
2099
	cmp	[eax+1],byte 0
2125
	cmp	[eax+1],byte 0
2100
	je	.delete
2126
	je	.delete
2101
@@:
2127
@@:
2102
	test	[eax-40],byte 0x10
2128
	test	[eax-40],byte 0x10
2103
	jnz	.start
2129
	jnz	.start
2104
	
2130
	
2105
	cmp	[open_dialog_type],2	; Select dir
2131
	cmp	[open_dialog_type],2	; Select dir
2106
	je	.delete
2132
	je	.delete
2107
	
2133
	
2108
	push	eax ebx
2134
	push	eax ebx
2109
	mov	esi,eax
2135
	mov	esi,eax
2110
	call	search_expansion
2136
	call	search_expansion
2111
	test	eax,eax
2137
	test	eax,eax
2112
	pop	ebx eax
2138
	pop	ebx eax
2113
	jnz	.delete
2139
	jnz	.delete
2114
	
2140
	
2115
	push	eax ebx ecx esi
2141
	push	eax ebx ecx esi
2116
	mov	edi,[communication_area]
2142
	mov	edi,[communication_area]
2117
	add	edi,4100
2143
	add	edi,4100
2118
	call	compare_expansion
2144
	call	compare_expansion
2119
	test	eax,eax
2145
	test	eax,eax
2120
	pop	esi ecx ebx eax
2146
	pop	esi ecx ebx eax
2121
	jz	.start
2147
	jz	.start
2122
	
2148
	
2123
;-------------------------------------------
2149
;-------------------------------------------
2124
.delete:
2150
.delete:
2125
	dec	dword [ebx]
2151
	dec	dword [ebx]
2126
	mov	esi,[ebx]
2152
	mov	esi,[ebx]
2127
	sub	esi,ecx
2153
	sub	esi,ecx
2128
 
2154
 
2129
	push	ecx
2155
	push	ecx
2130
	mov	ecx,esi
2156
	mov	ecx,esi
2131
	imul	ecx,304/4
2157
	imul	ecx,304/4
2132
	mov	edi,eax
2158
	mov	edi,eax
2133
	sub	edi,40
2159
	sub	edi,40
2134
	mov	esi,edi
2160
	mov	esi,edi
2135
	add	esi,304
2161
	add	esi,304
2136
	cld
2162
	cld
2137
	rep	movsd
2163
	rep	movsd
2138
	pop	ecx
2164
	pop	ecx
2139
	
2165
	
2140
	jmp	.1
2166
	jmp	.1
2141
.end:
2167
.end:
2142
	ret
2168
	ret
2143
;---------------------------------------------------------------------
2169
;---------------------------------------------------------------------
2144
search_expansion:
2170
search_expansion:
2145
	mov	edi,esi
2171
	mov	edi,esi
2146
	xor	eax,eax
2172
	xor	eax,eax
2147
@@:
2173
@@:
2148
	cld
2174
	cld
2149
	lodsb
2175
	lodsb
2150
	test	eax,eax
2176
	test	eax,eax
2151
	jnz	@b
2177
	jnz	@b
2152
	mov	ebx,esi
2178
	mov	ebx,esi
2153
	dec	esi
2179
	dec	esi
2154
@@:
2180
@@:
2155
	std
2181
	std
2156
	lodsb
2182
	lodsb
2157
	cmp	esi,edi
2183
	cmp	esi,edi
2158
	jb	.end_err
2184
	jb	.end_err
2159
	cmp	al,'.'
2185
	cmp	al,'.'
2160
	jne	@b
2186
	jne	@b
2161
	
2187
	
2162
	add	esi,2
2188
	add	esi,2
2163
	sub	ebx,esi
2189
	sub	ebx,esi
2164
	mov	[expansion_length],ebx
2190
	mov	[expansion_length],ebx
2165
	cld
2191
	cld
2166
	xor	eax,eax
2192
	xor	eax,eax
2167
	ret
2193
	ret
2168
	
2194
	
2169
.end_err:
2195
.end_err:
2170
	cld
2196
	cld
2171
	xor	eax,eax
2197
	xor	eax,eax
2172
	inc	eax
2198
	inc	eax
2173
	ret
2199
	ret
2174
;---------------------------------------------------------------------
2200
;---------------------------------------------------------------------
2175
compare_expansion:
2201
compare_expansion:
2176
	mov	ebx,[edi]
2202
	mov	ebx,[edi]
2177
	add	ebx,edi
2203
	add	ebx,edi
2178
	add	edi,3
2204
	add	edi,3
2179
.start:
2205
.start:
2180
	cmp	ebx,edi
2206
	cmp	ebx,edi
2181
	jb	.end_err
2207
	jb	.end_err
2182
	mov	ecx,[expansion_length]
2208
	mov	ecx,[expansion_length]
2183
	inc	edi
2209
	inc	edi
2184
	
2210
	
2185
	push	esi edi
2211
	push	esi edi
2186
@@:
2212
@@:
2187
	cld
2213
	cld
2188
	lodsb
2214
	lodsb
2189
	xchg	esi,edi
2215
	xchg	esi,edi
2190
	shl	eax,8
2216
	shl	eax,8
2191
	lodsb
2217
	lodsb
2192
	xchg	esi,edi
2218
	xchg	esi,edi
2193
	call	char_todown
2219
	call	char_todown
2194
	xchg	al,ah
2220
	xchg	al,ah
2195
	call	char_todown
2221
	call	char_todown
2196
	cmp	al,ah
2222
	cmp	al,ah
2197
	jne	@f
2223
	jne	@f
2198
	dec	ecx
2224
	dec	ecx
2199
	jnz	@b
2225
	jnz	@b
2200
	jmp	.end
2226
	jmp	.end
2201
@@:
2227
@@:
2202
	pop	edi esi
2228
	pop	edi esi
2203
	jmp	.start
2229
	jmp	.start
2204
.end:
2230
.end:
2205
	pop	edi esi
2231
	pop	edi esi
2206
	xor	eax,eax
2232
	xor	eax,eax
2207
	ret
2233
	ret
2208
	
2234
	
2209
.end_err:
2235
.end_err:
2210
	xor	eax,eax
2236
	xor	eax,eax
2211
	inc	eax
2237
	inc	eax
2212
	ret
2238
	ret
2213
;---------------------------------------------------------------------
2239
;---------------------------------------------------------------------
2214
prepare_extension_and_mark:
2240
prepare_extension_and_mark:
2215
	mov	esi,[dirinfo.return]
2241
	mov	esi,[dirinfo.return]
2216
	mov	ebp,[esi+4]
2242
	mov	ebp,[esi+4]
2217
	add	esi,32+40
2243
	add	esi,32+40
2218
.start:
2244
.start:
2219
	push	esi
2245
	push	esi
2220
	call	search_extension_start
2246
	call	search_extension_start
2221
	mov	eax,esi
2247
	mov	eax,esi
2222
	pop	esi
2248
	pop	esi
2223
	sub	eax,esi
2249
	sub	eax,esi
2224
	sub	ebx,esi
2250
	sub	ebx,esi
2225
	shl	eax,16
2251
	shl	eax,16
2226
	mov	ax,bx
2252
	mov	ax,bx
2227
	mov	[esi+300-40],eax
2253
	mov	[esi+300-40],eax
2228
	mov	[esi+299-40],byte 0
2254
	mov	[esi+299-40],byte 0
2229
	add	esi,304
2255
	add	esi,304
2230
	dec	ebp
2256
	dec	ebp
2231
	jnz	.start
2257
	jnz	.start
2232
	ret
2258
	ret
2233
;---------------------------------------------------------------------
2259
;---------------------------------------------------------------------
2234
search_extension_start:
2260
search_extension_start:
2235
	mov	edx,esi
2261
	mov	edx,esi
2236
	xor	eax,eax
2262
	xor	eax,eax
2237
	cld
2263
	cld
2238
@@:
2264
@@:
2239
	lodsb
2265
	lodsb
2240
	test	eax,eax
2266
	test	eax,eax
2241
	jnz	@b
2267
	jnz	@b
2242
	dec	esi
2268
	dec	esi
2243
	dec	edx
2269
	dec	edx
2244
	push	esi
2270
	push	esi
2245
	std
2271
	std
2246
@@:
2272
@@:
2247
	lodsb
2273
	lodsb
2248
	cmp	esi,edx
2274
	cmp	esi,edx
2249
	je	.end
2275
	je	.end
2250
	cmp	al,'.'
2276
	cmp	al,'.'
2251
	jnz	@b
2277
	jnz	@b
2252
	add	esi,2
2278
	add	esi,2
2253
	cld
2279
	cld
2254
	pop	ebx
2280
	pop	ebx
2255
	ret
2281
	ret
2256
.end:
2282
.end:
2257
	cld
2283
	cld
2258
	pop	esi
2284
	pop	esi
2259
	mov	ebx,esi
2285
	mov	ebx,esi
2260
	ret
2286
	ret
2261
;---------------------------------------------------------------------
2287
;---------------------------------------------------------------------
2262
delete_point_dir:
2288
delete_point_dir:
2263
	mov	eax,[dirinfo.return]
2289
	mov	eax,[dirinfo.return]
2264
	cmp	[eax+32+40],byte '.'
2290
	cmp	[eax+32+40],byte '.'
2265
	jne	@f
2291
	jne	@f
2266
	cmp	[eax+32+40+1],byte 0
2292
	cmp	[eax+32+40+1],byte 0
2267
	jne	@f
2293
	jne	@f
2268
	mov	edi,eax
2294
	mov	edi,eax
2269
	add	edi,32
2295
	add	edi,32
2270
	mov	esi,edi
2296
	mov	esi,edi
2271
	add	esi,304
2297
	add	esi,304
2272
	mov	ecx,[eax+4]
2298
	mov	ecx,[eax+4]
2273
	dec	ecx
2299
	dec	ecx
2274
	mov	[eax+4],ecx
2300
	mov	[eax+4],ecx
2275
	imul	ecx,304
2301
	imul	ecx,304
2276
	shr	ecx,2
2302
	shr	ecx,2
2277
	cld
2303
	cld
2278
	rep	movsd
2304
	rep	movsd
2279
@@:
2305
@@:
2280
	ret
2306
	ret
2281
;---------------------------------------------------------------------
2307
;---------------------------------------------------------------------
2282
;files_name_normalize:
2308
;files_name_normalize:
2283
;	mov	esi,[dirinfo.return]
2309
;	mov	esi,[dirinfo.return]
2284
;	mov	ebp,[esi+4]
2310
;	mov	ebp,[esi+4]
2285
;	add	esi,32+40
2311
;	add	esi,32+40
2286
;.start:
2312
;.start:
2287
;	push	esi
2313
;	push	esi
2288
;	mov	al,[esi]
2314
;	mov	al,[esi]
2289
;	call	char_toupper
2315
;	call	char_toupper
2290
;	mov	[esi],al
2316
;	mov	[esi],al
2291
;@@:
2317
;@@:
2292
;	inc	esi
2318
;	inc	esi
2293
;	mov	al,[esi]
2319
;	mov	al,[esi]
2294
;	test	al,al
2320
;	test	al,al
2295
;	jz	@f
2321
;	jz	@f
2296
;	call	char_todown
2322
;	call	char_todown
2297
;	mov	[esi],al
2323
;	mov	[esi],al
2298
;	jmp	@b
2324
;	jmp	@b
2299
;@@:
2325
;@@:
2300
;	pop	esi
2326
;	pop	esi
2301
;	add	esi,304
2327
;	add	esi,304
2302
;	dec	ebp
2328
;	dec	ebp
2303
;	jnz	.start
2329
;	jnz	.start
2304
;	ret
2330
;	ret
2305
;---------------------------------------------------------------------
2331
;---------------------------------------------------------------------
2306
char_toupper:
2332
char_toupper:
2307
; convert character to uppercase,using cp866 encoding
2333
; convert character to uppercase,using cp866 encoding
2308
; in: al=symbol
2334
; in: al=symbol
2309
; out: al=converted symbol
2335
; out: al=converted symbol
2310
	cmp	al,'a'
2336
	cmp	al,'a'
2311
	jb	.ret
2337
	jb	.ret
2312
	cmp	al,'z'
2338
	cmp	al,'z'
2313
	jbe	.az
2339
	jbe	.az
2314
	cmp	al,' '
2340
	cmp	al,' '
2315
	jb	.ret
2341
	jb	.ret
2316
	cmp	al,'à'
2342
	cmp	al,'à'
2317
	jb	.rus1
2343
	jb	.rus1
2318
	cmp	al,'ï'
2344
	cmp	al,'ï'
2319
	ja	.ret
2345
	ja	.ret
2320
; 0xE0-0xEF -> 0x90-0x9F
2346
; 0xE0-0xEF -> 0x90-0x9F
2321
	sub	al,'à'-''
2347
	sub	al,'à'-''
2322
.ret:
2348
.ret:
2323
	ret
2349
	ret
2324
.rus1:
2350
.rus1:
2325
; 0xA0-0xAF -> 0x80-0x8F
2351
; 0xA0-0xAF -> 0x80-0x8F
2326
.az:
2352
.az:
2327
	and	al,not	0x20
2353
	and	al,not	0x20
2328
	ret
2354
	ret
2329
;---------------------------------------------------------------------
2355
;---------------------------------------------------------------------
2330
char_todown:
2356
char_todown:
2331
; convert character to uppercase,using cp866 encoding
2357
; convert character to uppercase,using cp866 encoding
2332
; in: al=symbol
2358
; in: al=symbol
2333
; out: al=converted symbol
2359
; out: al=converted symbol
2334
	cmp	al,'A'
2360
	cmp	al,'A'
2335
	jb	.ret
2361
	jb	.ret
2336
	cmp	al,'Z'
2362
	cmp	al,'Z'
2337
	jbe	.az
2363
	jbe	.az
2338
	cmp	al,'€'
2364
	cmp	al,'€'
2339
	jb	.ret
2365
	jb	.ret
2340
	cmp	al,''
2366
	cmp	al,''
2341
	jb	.rus1
2367
	jb	.rus1
2342
	cmp	al,'Ÿ'
2368
	cmp	al,'Ÿ'
2343
	ja	.ret
2369
	ja	.ret
2344
; 0x90-0x9F -> 0xE0-0xEF
2370
; 0x90-0x9F -> 0xE0-0xEF
2345
	add	al,'à'-''
2371
	add	al,'à'-''
2346
.ret:
2372
.ret:
2347
	ret
2373
	ret
2348
.rus1:
2374
.rus1:
2349
; 0x80-0x8F -> 0xA0-0xAF
2375
; 0x80-0x8F -> 0xA0-0xAF
2350
.az:
2376
.az:
2351
	add	al,0x20
2377
	add	al,0x20
2352
	ret
2378
	ret
2353
;---------------------------------------------------------------------
2379
;---------------------------------------------------------------------
2354
copy_file_path:
2380
copy_file_path:
2355
	xor	eax,eax
2381
	xor	eax,eax
2356
	cld
2382
	cld
2357
@@:
2383
@@:
2358
	lodsb
2384
	lodsb
2359
	stosb
2385
	stosb
2360
	test	eax,eax
2386
	test	eax,eax
2361
	jnz	@b
2387
	jnz	@b
2362
	mov	esi,edi
2388
	mov	esi,edi
2363
	dec	esi
2389
	dec	esi
2364
	std
2390
	std
2365
@@:
2391
@@:
2366
	lodsb
2392
	lodsb
2367
	cmp	al,'/'
2393
	cmp	al,'/'
2368
	jnz	@b
2394
	jnz	@b
2369
	mov	edi,esi
2395
	mov	edi,esi
2370
	add	edi,2
2396
	add	edi,2
2371
	mov	esi,ebx
2397
	mov	esi,ebx
2372
	cld
2398
	cld
2373
@@:
2399
@@:
2374
	lodsb
2400
	lodsb
2375
	stosb
2401
	stosb
2376
	test	eax,eax
2402
	test	eax,eax
2377
	jnz	@b
2403
	jnz	@b
2378
	ret
2404
	ret
2379
;---------------------------------------------------------------------
2405
;---------------------------------------------------------------------
2380
copy_dir_path:
2406
copy_dir_path:
2381
	mov	ecx,esi
2407
	mov	ecx,esi
2382
	inc	ecx
2408
	inc	ecx
2383
	inc	ecx
2409
	inc	ecx
2384
	xor	eax,eax
2410
	xor	eax,eax
2385
	cld
2411
	cld
2386
@@:
2412
@@:
2387
	lodsb
2413
	lodsb
2388
	test	eax,eax
2414
	test	eax,eax
2389
	jnz	@b
2415
	jnz	@b
2390
 
2416
 
2391
	cmp	ecx,esi
2417
	cmp	ecx,esi
2392
	jb	@f
2418
	jb	@f
2393
	dec	esi
2419
	dec	esi
2394
@@:
2420
@@:
2395
	mov	[esi-1],byte '/'
2421
	mov	[esi-1],byte '/'
2396
	mov	edi,esi
2422
	mov	edi,esi
2397
	mov	esi,ebx
2423
	mov	esi,ebx
2398
@@:
2424
@@:
2399
	lodsb
2425
	lodsb
2400
	stosb
2426
	stosb
2401
	test	eax,eax
2427
	test	eax,eax
2402
	jnz	@b
2428
	jnz	@b
2403
	ret
2429
	ret
2404
;---------------------------------------------------------------------
2430
;---------------------------------------------------------------------
2405
copy_exit_dir:
2431
copy_exit_dir:
2406
	mov	ebx,esi
2432
	mov	ebx,esi
2407
	inc	ebx
2433
	inc	ebx
2408
	xor	eax,eax
2434
	xor	eax,eax
2409
	cld
2435
	cld
2410
@@:
2436
@@:
2411
	lodsb
2437
	lodsb
2412
	test	eax,eax
2438
	test	eax,eax
2413
	jnz	@b
2439
	jnz	@b
2414
	sub	esi,2
2440
	sub	esi,2
2415
	std
2441
	std
2416
@@:
2442
@@:
2417
	lodsb
2443
	lodsb
2418
	cmp	al,'/'
2444
	cmp	al,'/'
2419
	jnz	@b
2445
	jnz	@b
2420
	xor	eax,eax
2446
	xor	eax,eax
2421
	cmp	ebx,esi
2447
	cmp	ebx,esi
2422
	jb	@f
2448
	jb	@f
2423
	inc	esi
2449
	inc	esi
2424
@@:
2450
@@:
2425
	mov	[esi+1],al
2451
	mov	[esi+1],al
2426
	cld
2452
	cld
2427
	ret
2453
	ret
2428
;---------------------------------------------------------------------
2454
;---------------------------------------------------------------------
2429
copy_dir_name:
2455
copy_dir_name:
2430
	push	esi edi
2456
	push	esi edi
2431
	mov	esi,edi
2457
	mov	esi,edi
2432
	mov	edi,previous_dir_path
2458
	mov	edi,previous_dir_path
2433
	call	.1
2459
	call	.1
2434
	pop	edi esi
2460
	pop	edi esi
2435
.1:
2461
.1:
2436
	xor	eax,eax
2462
	xor	eax,eax
2437
	cld
2463
	cld
2438
@@:
2464
@@:
2439
	lodsb
2465
	lodsb
2440
	stosb
2466
	stosb
2441
	test	eax,eax
2467
	test	eax,eax
2442
	jnz	@b
2468
	jnz	@b
2443
	ret
2469
	ret
2444
;---------------------------------------------------------------------
2470
;---------------------------------------------------------------------
2445
;---------------------------------------------------------------------
2471
;---------------------------------------------------------------------
2446
 
2472
 
2447
;plugins_directory	db 'plugins/',0
2473
;plugins_directory	db 'plugins/',0
2448
plugins_directory	db 0
2474
plugins_directory	db 0
2449
 
2475
 
2450
system_dir_Boxlib	db '/sys/lib/box_lib.obj',0
2476
system_dir_Boxlib	db '/sys/lib/box_lib.obj',0
2451
system_dir_CnvPNG	db '/sys/lib/cnv_png.obj',0
2477
system_dir_CnvPNG	db '/sys/lib/cnv_png.obj',0
2452
system_dir_Sort		db '/sys/lib/sort.obj',0
2478
system_dir_Sort		db '/sys/lib/sort.obj',0
2453
system_dir_UNPACK	db '/sys/lib/archiver.obj',0
2479
system_dir_UNPACK	db '/sys/lib/archiver.obj',0
2454
 
2480
 
2455
ihead_f_i:
2481
ihead_f_i:
2456
ihead_f_l	db 'System	error',0
2482
ihead_f_l	db 'System	error',0
2457
 
2483
 
2458
er_message_found_lib	db 'box_lib.obj - Not found!',0
2484
er_message_found_lib	db 'box_lib.obj - Not found!',0
2459
er_message_import	db 'box_lib.obj - Wrong import!',0
2485
er_message_import	db 'box_lib.obj - Wrong import!',0
2460
 
2486
 
2461
er_message_found_lib2	db 'cnv_png.obj - Not found!',0
2487
er_message_found_lib2	db 'cnv_png.obj - Not found!',0
2462
er_message_import2	db 'cnv_png.obj - Wrong import!',0
2488
er_message_import2	db 'cnv_png.obj - Wrong import!',0
2463
 
2489
 
2464
err_message_found_lib3	db 'sort.obj - Not found!',0
2490
err_message_found_lib3	db 'sort.obj - Not found!',0
2465
err_message_import3	db 'sort.obj - Wrong import!',0
2491
err_message_import3	db 'sort.obj - Wrong import!',0
2466
 
2492
 
2467
err_message_found_lib4	db 'archiver.obj - Not found!',0
2493
err_message_found_lib4	db 'archiver.obj - Not found!',0
2468
err_message_import4	db 'archiver.obj - Wrong import!',0
2494
err_message_import4	db 'archiver.obj - Wrong import!',0
2469
 
2495
 
2470
align	4
2496
align	4
2471
l_libs_start:
2497
l_libs_start:
2472
library01	l_libs	system_dir_Boxlib+9,path,file_name,system_dir_Boxlib,\
2498
library01	l_libs	system_dir_Boxlib+9,path,file_name,system_dir_Boxlib,\
2473
er_message_found_lib,ihead_f_l,Box_lib_import,er_message_import,ihead_f_i,plugins_directory
2499
er_message_found_lib,ihead_f_l,Box_lib_import,er_message_import,ihead_f_i,plugins_directory
2474
 
2500
 
2475
library02	l_libs	system_dir_CnvPNG+9,path,file_name,system_dir_CnvPNG,\
2501
library02	l_libs	system_dir_CnvPNG+9,path,file_name,system_dir_CnvPNG,\
2476
er_message_found_lib2,ihead_f_l,cnv_png_import,er_message_import2,ihead_f_i,plugins_directory
2502
er_message_found_lib2,ihead_f_l,cnv_png_import,er_message_import2,ihead_f_i,plugins_directory
2477
 
2503
 
2478
library03	l_libs	system_dir_Sort+9,path,file_name,system_dir_Sort,\
2504
library03	l_libs	system_dir_Sort+9,path,file_name,system_dir_Sort,\
2479
err_message_found_lib3,ihead_f_l,Sort_import,err_message_import3,ihead_f_i,plugins_directory
2505
err_message_found_lib3,ihead_f_l,Sort_import,err_message_import3,ihead_f_i,plugins_directory
2480
 
2506
 
2481
library04	l_libs	system_dir_UNPACK+9,path,file_name,system_dir_UNPACK,\
2507
library04	l_libs	system_dir_UNPACK+9,path,file_name,system_dir_UNPACK,\
2482
err_message_found_lib4,ihead_f_l,UNPACK_import,err_message_import4,ihead_f_i,plugins_directory
2508
err_message_found_lib4,ihead_f_l,UNPACK_import,err_message_import4,ihead_f_i,plugins_directory
2483
 
2509
 
2484
end_l_libs:
2510
end_l_libs:
2485
 
2511
 
2486
;---------------------------------------------------------------------
2512
;---------------------------------------------------------------------
2487
align	4
2513
align	4
2488
UNPACK_import:
2514
UNPACK_import:
2489
;unpack_Version			dd aUnpack_Version
2515
;unpack_Version			dd aUnpack_Version
2490
;unpack_PluginLoad		dd aUnpack_PluginLoad	
2516
;unpack_PluginLoad		dd aUnpack_PluginLoad	
2491
;unpack_OpenFilePlugin		dd aUnpack_OpenFilePlugin
2517
;unpack_OpenFilePlugin		dd aUnpack_OpenFilePlugin
2492
;unpack_ClosePlugin		dd aUnpack_ClosePlugin
2518
;unpack_ClosePlugin		dd aUnpack_ClosePlugin
2493
;unpack_ReadFolder		dd aUnpack_ReadFolder	
2519
;unpack_ReadFolder		dd aUnpack_ReadFolder	
2494
;unpack_SetFolder		dd aUnpack_SetFolder
2520
;unpack_SetFolder		dd aUnpack_SetFolder
2495
;unpack_GetFiles		dd aUnpack_GetFiles
2521
;unpack_GetFiles		dd aUnpack_GetFiles
2496
;unpack_GetOpenPluginInfo	dd aUnpack_GetOpenPluginInfo
2522
;unpack_GetOpenPluginInfo	dd aUnpack_GetOpenPluginInfo
2497
;unpack_Getattr			dd aUnpack_Getattr
2523
;unpack_Getattr			dd aUnpack_Getattr
2498
;unpack_Open			dd aUnpack_Open
2524
;unpack_Open			dd aUnpack_Open
2499
;unpack_Read			dd aUnpack_Read
2525
;unpack_Read			dd aUnpack_Read
2500
;unpack_Setpos			dd aUnpack_Setpos
2526
;unpack_Setpos			dd aUnpack_Setpos
2501
;unpack_Close			dd aUnpack_Close
2527
;unpack_Close			dd aUnpack_Close
2502
;unpack_DeflateUnpack		dd aUnpack_DeflateUnpack
2528
;unpack_DeflateUnpack		dd aUnpack_DeflateUnpack
2503
unpack_DeflateUnpack2		dd aUnpack_DeflateUnpack2
2529
unpack_DeflateUnpack2		dd aUnpack_DeflateUnpack2
2504
	dd 0
2530
	dd 0
2505
	dd 0
2531
	dd 0
2506
 
2532
 
2507
;aUnpack_Version		db 'version',0
2533
;aUnpack_Version		db 'version',0
2508
;aUnpack_PluginLoad		db 'plugin_load',0
2534
;aUnpack_PluginLoad		db 'plugin_load',0
2509
;aUnpack_OpenFilePlugin		db 'OpenFilePlugin',0
2535
;aUnpack_OpenFilePlugin		db 'OpenFilePlugin',0
2510
;aUnpack_ClosePlugin		db 'ClosePlugin',0
2536
;aUnpack_ClosePlugin		db 'ClosePlugin',0
2511
;aUnpack_ReadFolder		db 'ReadFolder',0
2537
;aUnpack_ReadFolder		db 'ReadFolder',0
2512
;aUnpack_SetFolder		db 'SetFolder',0
2538
;aUnpack_SetFolder		db 'SetFolder',0
2513
;aUnpack_GetFiles		db 'GetFiles',0
2539
;aUnpack_GetFiles		db 'GetFiles',0
2514
;aUnpack_GetOpenPluginInfo	db 'GetOpenPluginInfo',0
2540
;aUnpack_GetOpenPluginInfo	db 'GetOpenPluginInfo',0
2515
;aUnpack_Getattr		db 'getattr',0
2541
;aUnpack_Getattr		db 'getattr',0
2516
;aUnpack_Open			db 'open',0
2542
;aUnpack_Open			db 'open',0
2517
;aUnpack_Read			db 'read',0
2543
;aUnpack_Read			db 'read',0
2518
;aUnpack_Setpos			db 'setpos',0
2544
;aUnpack_Setpos			db 'setpos',0
2519
;aUnpack_Close			db 'close',0
2545
;aUnpack_Close			db 'close',0
2520
;aUnpack_DeflateUnpack		db 'deflate_unpack',0
2546
;aUnpack_DeflateUnpack		db 'deflate_unpack',0
2521
aUnpack_DeflateUnpack2		db 'deflate_unpack2',0
2547
aUnpack_DeflateUnpack2		db 'deflate_unpack2',0
2522
 
2548
 
2523
;---------------------------------------------------------------------
2549
;---------------------------------------------------------------------
2524
;---------------------------------------------------------------------
2550
;---------------------------------------------------------------------
2525
align	4
2551
align	4
2526
Sort_import:
2552
Sort_import:
2527
sort_init	dd aSort_init
2553
sort_init	dd aSort_init
2528
sort_version	dd aSort_version
2554
sort_version	dd aSort_version
2529
sort_dir	dd aSort_SortDir
2555
sort_dir	dd aSort_SortDir
2530
sort_strcmpi	dd aSort_strcmpi
2556
sort_strcmpi	dd aSort_strcmpi
2531
	dd 0
2557
	dd 0
2532
	dd 0
2558
	dd 0
2533
 
2559
 
2534
aSort_init	db 'START',0
2560
aSort_init	db 'START',0
2535
aSort_version	db 'version',0
2561
aSort_version	db 'version',0
2536
aSort_SortDir	db 'SortDir',0
2562
aSort_SortDir	db 'SortDir',0
2537
aSort_strcmpi	db 'strcmpi',0
2563
aSort_strcmpi	db 'strcmpi',0
2538
 
2564
 
2539
;---------------------------------------------------------------------
2565
;---------------------------------------------------------------------
2540
align	4
2566
align	4
2541
cnv_png_import:
2567
cnv_png_import:
2542
.Start		dd aCP_Start
2568
.Start		dd aCP_Start
2543
.Version	dd aCP_Version
2569
.Version	dd aCP_Version
2544
.Check		dd aCP_Check
2570
.Check		dd aCP_Check
2545
.Assoc		dd aCP_Assoc
2571
.Assoc		dd aCP_Assoc
2546
	dd 0
2572
	dd 0
2547
	dd 0
2573
	dd 0
2548
aCP_Start	db 'START',0
2574
aCP_Start	db 'START',0
2549
aCP_Version	db 'version',0
2575
aCP_Version	db 'version',0
2550
aCP_Check	db 'Check_Header',0
2576
aCP_Check	db 'Check_Header',0
2551
aCP_Assoc	db 'Associations',0
2577
aCP_Assoc	db 'Associations',0
2552
;---------------------------------------------------------------------
2578
;---------------------------------------------------------------------
2553
align	4
2579
align	4
2554
Box_lib_import:	
2580
Box_lib_import:	
2555
;init_lib	dd a_init
2581
;init_lib	dd a_init
2556
;version_lib	dd a_version
2582
;version_lib	dd a_version
2557
 
2583
 
2558
 
2584
 
2559
edit_box_draw		dd aEdit_box_draw
2585
edit_box_draw		dd aEdit_box_draw
2560
edit_box_key		dd aEdit_box_key
2586
edit_box_key		dd aEdit_box_key
2561
edit_box_mouse		dd aEdit_box_mouse
2587
edit_box_mouse		dd aEdit_box_mouse
2562
;version_ed		dd aVersion_ed
2588
;version_ed		dd aVersion_ed
2563
 
2589
 
2564
;check_box_draw	dd aCheck_box_draw
2590
;check_box_draw	dd aCheck_box_draw
2565
;check_box_mouse	dd aCheck_box_mouse
2591
;check_box_mouse	dd aCheck_box_mouse
2566
;version_ch		dd aVersion_ch
2592
;version_ch		dd aVersion_ch
2567
 
2593
 
2568
;option_box_draw	dd aOption_box_draw
2594
;option_box_draw	dd aOption_box_draw
2569
;option_box_mouse	dd aOption_box_mouse
2595
;option_box_mouse	dd aOption_box_mouse
2570
;version_op		dd aVersion_op
2596
;version_op		dd aVersion_op
2571
 
2597
 
2572
scrollbar_ver_draw	dd aScrollbar_ver_draw
2598
scrollbar_ver_draw	dd aScrollbar_ver_draw
2573
scrollbar_ver_mouse	dd aScrollbar_ver_mouse
2599
scrollbar_ver_mouse	dd aScrollbar_ver_mouse
2574
;scrollbar_hor_draw	dd aScrollbar_hor_draw
2600
;scrollbar_hor_draw	dd aScrollbar_hor_draw
2575
;scrollbar_hor_mouse	dd aScrollbar_hor_mouse
2601
;scrollbar_hor_mouse	dd aScrollbar_hor_mouse
2576
;version_scrollbar	dd aVersion_scrollbar
2602
;version_scrollbar	dd aVersion_scrollbar
2577
 
2603
 
2578
;dinamic_button_draw	dd aDbutton_draw
2604
;dinamic_button_draw	dd aDbutton_draw
2579
;dinamic_button_mouse	dd aDbutton_mouse
2605
;dinamic_button_mouse	dd aDbutton_mouse
2580
;version_dbutton	dd aVersion_dbutton
2606
;version_dbutton	dd aVersion_dbutton
2581
 
2607
 
2582
menu_bar_draw		dd aMenu_bar_draw
2608
menu_bar_draw		dd aMenu_bar_draw
2583
menu_bar_mouse		dd aMenu_bar_mouse
2609
menu_bar_mouse		dd aMenu_bar_mouse
2584
menu_bar_activate	dd aMenu_bar_activate
2610
menu_bar_activate	dd aMenu_bar_activate
2585
;version_menu_bar	dd aVersion_menu_bar
2611
;version_menu_bar	dd aVersion_menu_bar
2586
 
2612
 
2587
FileBrowser_draw	dd aFileBrowser_draw
2613
FileBrowser_draw	dd aFileBrowser_draw
2588
FileBrowser_mouse	dd aFileBrowser_mouse
2614
FileBrowser_mouse	dd aFileBrowser_mouse
2589
FileBrowser_key		dd aFileBrowser_key
2615
FileBrowser_key		dd aFileBrowser_key
2590
;Version_FileBrowser	dd aVersion_FileBrowser
2616
;Version_FileBrowser	dd aVersion_FileBrowser
2591
 
2617
 
2592
PathShow_prepare	dd sz_PathShow_prepare
2618
PathShow_prepare	dd sz_PathShow_prepare
2593
PathShow_draw		dd sz_PathShow_draw
2619
PathShow_draw		dd sz_PathShow_draw
2594
;Version_path_show	dd szVersion_path_show
2620
;Version_path_show	dd szVersion_path_show
2595
	dd 0
2621
	dd 0
2596
	dd 0
2622
	dd 0
2597
 
2623
 
2598
;a_init			db 'lib_init',0
2624
;a_init			db 'lib_init',0
2599
;a_version		db 'version',0
2625
;a_version		db 'version',0
2600
 
2626
 
2601
aEdit_box_draw		db 'edit_box',0
2627
aEdit_box_draw		db 'edit_box',0
2602
aEdit_box_key		db 'edit_box_key',0
2628
aEdit_box_key		db 'edit_box_key',0
2603
aEdit_box_mouse		db 'edit_box_mouse',0
2629
aEdit_box_mouse		db 'edit_box_mouse',0
2604
;aVersion_ed		db 'version_ed',0
2630
;aVersion_ed		db 'version_ed',0
2605
 
2631
 
2606
;aCheck_box_draw	db 'check_box_draw',0
2632
;aCheck_box_draw	db 'check_box_draw',0
2607
;aCheck_box_mouse	db 'check_box_mouse',0
2633
;aCheck_box_mouse	db 'check_box_mouse',0
2608
;aVersion_ch		db 'version_ch',0
2634
;aVersion_ch		db 'version_ch',0
2609
 
2635
 
2610
;aOption_box_draw	db 'option_box_draw',0
2636
;aOption_box_draw	db 'option_box_draw',0
2611
;aOption_box_mouse	db 'option_box_mouse',0
2637
;aOption_box_mouse	db 'option_box_mouse',0
2612
;aVersion_op		db 'version_op',0
2638
;aVersion_op		db 'version_op',0
2613
 
2639
 
2614
aScrollbar_ver_draw	db 'scrollbar_v_draw',0
2640
aScrollbar_ver_draw	db 'scrollbar_v_draw',0
2615
aScrollbar_ver_mouse	db 'scrollbar_v_mouse',0
2641
aScrollbar_ver_mouse	db 'scrollbar_v_mouse',0
2616
;aScrollbar_hor_draw	db 'scrollbar_h_draw',0
2642
;aScrollbar_hor_draw	db 'scrollbar_h_draw',0
2617
;aScrollbar_hor_mouse	db 'scrollbar_h_mouse',0
2643
;aScrollbar_hor_mouse	db 'scrollbar_h_mouse',0
2618
;aVersion_scrollbar	db 'version_scrollbar',0
2644
;aVersion_scrollbar	db 'version_scrollbar',0
2619
 
2645
 
2620
;aDbutton_draw		db 'dbutton_draw',0
2646
;aDbutton_draw		db 'dbutton_draw',0
2621
;aDbutton_mouse		db 'dbutton_mouse',0
2647
;aDbutton_mouse		db 'dbutton_mouse',0
2622
;aVersion_dbutton	db 'version_dbutton',0
2648
;aVersion_dbutton	db 'version_dbutton',0
2623
 
2649
 
2624
aMenu_bar_draw		db 'menu_bar_draw',0
2650
aMenu_bar_draw		db 'menu_bar_draw',0
2625
aMenu_bar_mouse		db 'menu_bar_mouse',0
2651
aMenu_bar_mouse		db 'menu_bar_mouse',0
2626
aMenu_bar_activate	db 'menu_bar_activate',0
2652
aMenu_bar_activate	db 'menu_bar_activate',0
2627
;aVersion_menu_bar	db 'version_menu_bar',0
2653
;aVersion_menu_bar	db 'version_menu_bar',0
2628
 
2654
 
2629
aFileBrowser_draw	db 'FileBrowser_draw',0
2655
aFileBrowser_draw	db 'FileBrowser_draw',0
2630
aFileBrowser_mouse	db 'FileBrowser_mouse',0
2656
aFileBrowser_mouse	db 'FileBrowser_mouse',0
2631
aFileBrowser_key	db 'FileBrowser_key',0
2657
aFileBrowser_key	db 'FileBrowser_key',0
2632
;aVersion_FileBrowser	db 'version_FileBrowser',0
2658
;aVersion_FileBrowser	db 'version_FileBrowser',0
2633
 
2659
 
2634
sz_PathShow_prepare	db 'PathShow_prepare',0
2660
sz_PathShow_prepare	db 'PathShow_prepare',0
2635
sz_PathShow_draw	db 'PathShow_draw',0
2661
sz_PathShow_draw	db 'PathShow_draw',0
2636
;szVersion_path_show	db 'version_PathShow',0
2662
;szVersion_path_show	db 'version_PathShow',0
2637
;---------------------------------------------------------------------
2663
;---------------------------------------------------------------------
2638
;---------------------------------------------------------------------
2664
;---------------------------------------------------------------------
2639
align	4
2665
align	4
2640
window_high			dd 0
2666
window_high			dd 0
2641
window_width			dd 0
2667
window_width			dd 0
2642
window_status			dd 0
2668
window_status			dd 0
2643
 
2669
 
2644
active_process			dd 0
2670
active_process			dd 0
2645
PID				dd 0
2671
PID				dd 0
2646
sort_type			dd 2
2672
sort_type			dd 2
2647
root_folder_area		dd 0
2673
root_folder_area		dd 0
2648
root_folder_block		dd 0
2674
root_folder_block		dd 0
2649
root1_folder_area		dd 0
2675
root1_folder_area		dd 0
2650
root1_folder_block		dd 0
2676
root1_folder_block		dd 0
2651
temp_counter_1			dd 0
2677
temp_counter_1			dd 0
2652
retrieved_devices_table_counter	dd 0
2678
retrieved_devices_table_counter	dd 0
2653
communication_area		dd 0
2679
communication_area		dd 0
2654
open_dialog_type		dd 0
2680
open_dialog_type		dd 0
2655
 
2681
 
2656
open_dialog_title_pointer:
2682
open_dialog_title_pointer:
2657
	dd title_0
2683
	dd title_0
2658
	dd title_1
2684
	dd title_1
2659
	dd title_2
2685
	dd title_2
2660
	dd 0
2686
	dd 0
2661
	
2687
	
2662
message_open_dialog_button:
2688
message_open_dialog_button:
2663
	dd message_0
2689
	dd message_0
2664
	dd message_1
2690
	dd message_1
2665
	dd message_2
2691
	dd message_2
2666
	dd 0
2692
	dd 0
2667
;---------------------------------------------------------------------
2693
;---------------------------------------------------------------------
2668
expansion_length	dd 0
2694
expansion_length	dd 0
2669
;---------------------------------------------------------------------
2695
;---------------------------------------------------------------------
2670
N_error			dd 0
2696
N_error			dd 0
2671
error_type		dd 0
2697
error_type		dd 0
2672
error_path		dd 0
2698
error_path		dd 0
2673
error_window_x:		dd 100 shl 16+250
2699
error_window_x:		dd 100 shl 16+250
2674
error_window_y:		dd 100 shl 16+120
2700
error_window_y:		dd 100 shl 16+120
2675
;---------------------------------------------------------------------
2701
;---------------------------------------------------------------------
2676
mouse_scroll_data:
2702
mouse_scroll_data:
2677
.vertical	dw 0
2703
.vertical	dw 0
2678
.horizontal	dw 0
2704
.horizontal	dw 0
2679
 
2705
 
2680
mouse_position:
2706
mouse_position:
2681
.y	dw 0
2707
.y	dw 0
2682
.x	dw 0
2708
.x	dw 0
2683
;---------------------------------------------------------------------
2709
;---------------------------------------------------------------------
2684
; not	change	this	section!!!
2710
; not	change	this	section!!!
2685
; start	section
2711
; start	section
2686
;---------------------------------------------------------------------
2712
;---------------------------------------------------------------------
2687
align	4
2713
align	4
2688
image_file	dd 0
2714
image_file	dd 0
2689
raw_pointer	dd 0
2715
raw_pointer	dd 0
2690
return_code	dd 0
2716
return_code	dd 0
2691
img_size	dd 0
2717
img_size	dd 0
2692
deflate_unpack	dd 0
2718
deflate_unpack	dd 0
2693
raw_pointer_2	dd 0	;+20
2719
raw_pointer_2	dd 0	;+20
2694
;---------------------------------------------------------------------
2720
;---------------------------------------------------------------------
2695
; end	section
2721
; end	section
2696
;---------------------------------------------------------------------
2722
;---------------------------------------------------------------------
2697
align	4
2723
align	4
2698
fileinfo:
2724
fileinfo:
2699
.subfunction	dd 5
2725
.subfunction	dd 5
2700
.Offset		dd 0
2726
.Offset		dd 0
2701
.Offset_1	dd 0
2727
.Offset_1	dd 0
2702
.size		dd 0
2728
.size		dd 0
2703
.return		dd file_info
2729
.return		dd file_info
2704
		db 0
2730
		db 0
2705
.name:		dd file_name
2731
.name:		dd file_name
2706
;---------------------------------------------------------------------
2732
;---------------------------------------------------------------------
2707
align	4
2733
align	4
2708
dirinfo:
2734
dirinfo:
2709
.subfunction	dd 1
2735
.subfunction	dd 1
2710
.start		dd 0
2736
.start		dd 0
2711
.flags		dd 0
2737
.flags		dd 0
2712
.size		dd 0
2738
.size		dd 0
2713
.return		dd 0
2739
.return		dd 0
2714
		db 0
2740
		db 0
2715
.name:		dd dir_path
2741
.name:		dd dir_path
2716
;---------------------------------------------------------------------
2742
;---------------------------------------------------------------------
2717
align	4
2743
align	4
2718
dir_header:
2744
dir_header:
2719
.version	dd 0	;+0
2745
.version	dd 0	;+0
2720
.curn_blocks	dd 0	;+4
2746
.curn_blocks	dd 0	;+4
2721
.totl_blocks	dd 0	;+8
2747
.totl_blocks	dd 0	;+8
2722
.other	rb	20
2748
.other	rb	20
2723
;---------------------------------------------------------------------
2749
;---------------------------------------------------------------------
2724
load_ini_error_type:
2750
load_ini_error_type:
2725
	db 'Error loading INI file',0
2751
	db 'Error loading INI file',0
2726
 
2752
 
2727
load_icons_error_type:
2753
load_icons_error_type:
2728
	db 'Error loading of icons file',0
2754
	db 'Error loading of icons file',0
2729
 
2755
 
2730
memory_free_error_type:
2756
memory_free_error_type:
2731
	db 'Error of free memory',0
2757
	db 'Error of free memory',0
2732
 
2758
 
2733
memory_get_error_type:
2759
memory_get_error_type:
2734
	db 'Memory allocation error',0
2760
	db 'Memory allocation error',0
2735
 
2761
 
2736
load_directory_error_type:
2762
load_directory_error_type:
2737
	db 'Error loading directory',0
2763
	db 'Error loading directory',0
2738
 
2764
 
2739
convert_icons_error_type:
2765
convert_icons_error_type:
2740
	db 'Unsupported or corrupt data for icons file',0
2766
	db 'Unsupported or corrupt data for icons file',0
2741
;---------------------------------------------------------------------
2767
;---------------------------------------------------------------------
2742
align	4
2768
align	4
2743
error_fs_text_pointers:
2769
error_fs_text_pointers:
2744
	dd error_fs_text_0
2770
	dd error_fs_text_0
2745
	dd error_fs_text_1
2771
	dd error_fs_text_1
2746
	dd error_fs_text_2
2772
	dd error_fs_text_2
2747
	dd error_fs_text_3
2773
	dd error_fs_text_3
2748
	dd error_fs_text_4
2774
	dd error_fs_text_4
2749
	dd error_fs_text_5
2775
	dd error_fs_text_5
2750
	dd error_fs_text_6
2776
	dd error_fs_text_6
2751
	dd error_fs_text_7
2777
	dd error_fs_text_7
2752
	dd error_fs_text_8
2778
	dd error_fs_text_8
2753
	dd error_fs_text_9
2779
	dd error_fs_text_9
2754
	dd error_fs_text_10
2780
	dd error_fs_text_10
2755
	dd error_fs_text_11
2781
	dd error_fs_text_11
2756
 
2782
 
2757
error_fs_text_0:	db '0 - Success full',0
2783
error_fs_text_0:	db '0 - Success full',0
2758
error_fs_text_1:	db '1 - Base and/or partition of a hard disk is not defined',0
2784
error_fs_text_1:	db '1 - Base and/or partition of a hard disk is not defined',0
2759
error_fs_text_2:	db '2 - Function is not supported for the given file system',0
2785
error_fs_text_2:	db '2 - Function is not supported for the given file system',0
2760
error_fs_text_3:	db '3 - Unknown file system',0
2786
error_fs_text_3:	db '3 - Unknown file system',0
2761
error_fs_text_4:	db '4 - Reserved, is never returned in the current implementation',0
2787
error_fs_text_4:	db '4 - Reserved, is never returned in the current implementation',0
2762
error_fs_text_5:	db '5 - File not found',0
2788
error_fs_text_5:	db '5 - File not found',0
2763
error_fs_text_6:	db '6 - End of file, EOF',0
2789
error_fs_text_6:	db '6 - End of file, EOF',0
2764
error_fs_text_7:	db '7 - Pointer lies outside of application memory',0
2790
error_fs_text_7:	db '7 - Pointer lies outside of application memory',0
2765
error_fs_text_8:	db '8 - Disk is full',0
2791
error_fs_text_8:	db '8 - Disk is full',0
2766
error_fs_text_9:	db '9 - FAT table is destroyed',0
2792
error_fs_text_9:	db '9 - FAT table is destroyed',0
2767
error_fs_text_10:	db '10 - Access denied',0
2793
error_fs_text_10:	db '10 - Access denied',0
2768
error_fs_text_11:	db '11 - Device error',0
2794
error_fs_text_11:	db '11 - Device error',0
2769
;---------------------------------------------------------------------
2795
;---------------------------------------------------------------------
2770
 
2796
 
2771
extended_key	db 0
2797
extended_key	db 0
2772
 
2798
 
2773
shift_flag	db 0
2799
shift_flag	db 0
2774
ctrl_flag	db 0
2800
ctrl_flag	db 0
2775
alt_flag	db 0
2801
alt_flag	db 0
2776
 
2802
 
2777
error_window	db 0
2803
error_window	db 0
2778
 
2804
 
2779
Tab_key		db 0
2805
Tab_key		db 0
2780
Tab_key_block	db 0
2806
Tab_key_block	db 0
2781
 
2807
 
2782
filter_flag	db 1
2808
filter_flag	db 1
2783
 
2809
 
2784
focus_pointer	db 0
2810
focus_pointer	db 0
2785
;---------------------------------------------------------------------
2811
;---------------------------------------------------------------------
2786
start_pach:
2812
start_pach:
2787
	db '/rd/1',0
2813
	db '/rd/1',0
2788
 
2814
 
2789
root_pach:
2815
root_pach:
2790
	db '/',0
2816
	db '/',0
2791
 
2817
 
2792
icons_file_name_2	db 'buttons/'
2818
icons_file_name_2	db 'buttons/'
2793
icons_file_name		db 'z_icons.png',0
2819
icons_file_name		db 'z_icons.png',0
2794
ini_file_name		db 'icons.ini',0
2820
ini_file_name		db 'icons.ini',0
2795
;---------------------------------------------------------------------
2821
;---------------------------------------------------------------------
2796
 
2822
 
2797
message:
2823
message:
2798
	db 'Press any key...',0
2824
	db 'Press any key...',0
2799
 
2825
 
2800
message_cancel_button:
2826
message_cancel_button:
2801
	db 'Cancel',0
2827
	db 'Cancel',0
2802
 
2828
 
2803
message_ReloadDir_button:
2829
message_ReloadDir_button:
2804
	db 'Refresh',0
2830
	db 'Refresh',0
2805
 
2831
 
2806
message_ExitDir_button:
2832
message_ExitDir_button:
2807
	db '^',0
2833
	db '^',0
2808
 
2834
 
2809
message_file_name:
2835
message_file_name:
2810
	db 'File name:',0
2836
	db 'File name:',0
2811
	
2837
	
2812
message_0:
2838
message_0:
2813
	db ' Open ',0
2839
	db ' Open ',0
2814
message_1:
2840
message_1:
2815
	db ' Save ',0
2841
	db ' Save ',0
2816
message_2:
2842
message_2:
2817
	db 'Select',0
2843
	db 'Select',0
2818
	
2844
	
2819
title_0:
2845
title_0:
2820
	db 'Open Dialog',0
2846
	db 'Open Dialog',0
2821
title_1:
2847
title_1:
2822
	db 'Save Dialog',0
2848
	db 'Save Dialog',0
2823
title_2:
2849
title_2:
2824
	db 'Select Dir',0
2850
	db 'Select Dir',0
2825
;---------------------------------------------------------------------
2851
;---------------------------------------------------------------------
2826
align 4
2852
align 4
2827
menu_data_1:
2853
menu_data_1:
2828
.type:		dd 1   ;+0
2854
.type:		dd 1   ;+0
2829
.x:
2855
.x:
2830
.size_x 	dw 80  ;+4
2856
.size_x 	dw 80  ;+4
2831
.start_x	dw 10	;+6
2857
.start_x	dw 10	;+6
2832
.y:
2858
.y:
2833
.size_y 	dw 15	;+8
2859
.size_y 	dw 15	;+8
2834
.start_y	dw 26  ;+10
2860
.start_y	dw 26  ;+10
2835
.text_pointer:	dd menu_text_area_1  ;0 ;+12
2861
.text_pointer:	dd menu_text_area_1  ;0 ;+12
2836
.pos_pointer:	dd menu_text_area_1_1 ;0 ;+16
2862
.pos_pointer:	dd menu_text_area_1_1 ;0 ;+16
2837
.text_end	dd menu_text_area_1_1 ;0 ;+20
2863
.text_end	dd menu_text_area_1_1 ;0 ;+20
2838
.ret_key	dd 0  ;+24
2864
.ret_key	dd 0  ;+24
2839
.mouse_keys	dd 0  ;+28
2865
.mouse_keys	dd 0  ;+28
2840
.x1:
2866
.x1:
2841
.size_x1	dw 80  ;+32
2867
.size_x1	dw 80  ;+32
2842
.start_x1	dw 10	;+34
2868
.start_x1	dw 10	;+34
2843
.y1:
2869
.y1:
2844
.size_y1	dw 100	 ;+36
2870
.size_y1	dw 100	 ;+36
2845
.start_y1	dw 41  ;+38
2871
.start_y1	dw 41  ;+38
2846
.bckg_col	dd 0xffffff  ;0xe5e5e5 ;+40
2872
.bckg_col	dd 0xffffff  ;0xe5e5e5 ;+40
2847
.frnt_col	dd 0xff ;+44
2873
.frnt_col	dd 0xff ;+44
2848
.menu_col	dd 0xeef0ff ;0xffffff ;+48
2874
.menu_col	dd 0xeef0ff ;0xffffff ;+48
2849
.select 	dd 0 ;+52
2875
.select 	dd 0 ;+52
2850
.out_select	dd 0 ;+56
2876
.out_select	dd 0 ;+56
2851
.buf_adress	dd 0 ;+60
2877
.buf_adress	dd 0 ;+60
2852
.procinfo	dd procinfo ;+64
2878
.procinfo	dd procinfo ;+64
2853
.click		dd 0 ;+68
2879
.click		dd 0 ;+68
2854
.cursor 	dd 0 ;+72
2880
.cursor 	dd 0 ;+72
2855
.cursor_old	dd 0 ;+76
2881
.cursor_old	dd 0 ;+76
2856
.interval	dd 16 ;+80
2882
.interval	dd 16 ;+80
2857
.cursor_max	dd 0 ;+84
2883
.cursor_max	dd 0 ;+84
2858
.extended_key	dd 0 ;+88
2884
.extended_key	dd 0 ;+88
2859
.menu_sel_col	dd 0x00cc00 ;+92
2885
.menu_sel_col	dd 0x00cc00 ;+92
2860
.bckg_text_col	dd 0 ; +96
2886
.bckg_text_col	dd 0 ; +96
2861
.frnt_text_col	dd 0xffffff ;+100
2887
.frnt_text_col	dd 0xffffff ;+100
2862
.mouse_keys_old dd 0 ;+104
2888
.mouse_keys_old dd 0 ;+104
2863
.font_height	dd 8 ;+108
2889
.font_height	dd 8 ;+108
2864
.cursor_out	dd 0 ;+112
2890
.cursor_out	dd 0 ;+112
2865
.get_mouse_flag dd 0 ;+116
2891
.get_mouse_flag dd 0 ;+116
2866
;---------------------------------------------------------------------
2892
;---------------------------------------------------------------------
2867
menu_text_area_1:
2893
menu_text_area_1:
2868
db 'Select Disk',0
2894
db 'Select Disk',0
2869
;---------------------------------------------------------------------
2895
;---------------------------------------------------------------------
2870
align 4
2896
align 4
2871
menu_data_2:
2897
menu_data_2:
2872
.type:		dd 0   ;+0
2898
.type:		dd 0   ;+0
2873
.x:
2899
.x:
2874
.size_x 	dw 30  ;+4
2900
.size_x 	dw 30  ;+4
2875
.start_x	dw 95	;+6
2901
.start_x	dw 95	;+6
2876
.y:
2902
.y:
2877
.size_y 	dw 15	;+8
2903
.size_y 	dw 15	;+8
2878
.start_y	dw 26  ;+10
2904
.start_y	dw 26  ;+10
2879
.text_pointer:	dd menu_text_area_2  ;0 ;+12
2905
.text_pointer:	dd menu_text_area_2  ;0 ;+12
2880
.pos_pointer:	dd menu_text_area_2.1 ;0 ;+16
2906
.pos_pointer:	dd menu_text_area_2.1 ;0 ;+16
2881
.text_end	dd menu_text_area_2.end ;0 ;+20
2907
.text_end	dd menu_text_area_2.end ;0 ;+20
2882
.ret_key	dd 0  ;+24
2908
.ret_key	dd 0  ;+24
2883
.mouse_keys	dd 0  ;+28
2909
.mouse_keys	dd 0  ;+28
2884
.x1:
2910
.x1:
2885
.size_x1	dw 30  ;+32
2911
.size_x1	dw 30  ;+32
2886
.start_x1	dw 95	;+34
2912
.start_x1	dw 95	;+34
2887
.y1:
2913
.y1:
2888
.size_y1	dw 100	 ;+36
2914
.size_y1	dw 100	 ;+36
2889
.start_y1	dw 41  ;+38
2915
.start_y1	dw 41  ;+38
2890
.bckg_col	dd 0xffffff ; 0xe5e5e5 ;+40
2916
.bckg_col	dd 0xffffff ; 0xe5e5e5 ;+40
2891
.frnt_col	dd 0xff ;+44
2917
.frnt_col	dd 0xff ;+44
2892
.menu_col	dd 0xeef0ff  ;0xffffff ;+48
2918
.menu_col	dd 0xeef0ff  ;0xffffff ;+48
2893
.select 	dd 0 ;+52
2919
.select 	dd 0 ;+52
2894
.out_select	dd 0 ;+56
2920
.out_select	dd 0 ;+56
2895
.buf_adress	dd 0 ;+60
2921
.buf_adress	dd 0 ;+60
2896
.procinfo	dd procinfo ;+64
2922
.procinfo	dd procinfo ;+64
2897
.click		dd 0 ;+68
2923
.click		dd 0 ;+68
2898
.cursor 	dd 0 ;+72
2924
.cursor 	dd 0 ;+72
2899
.cursor_old	dd 0 ;+76
2925
.cursor_old	dd 0 ;+76
2900
.interval	dd 16 ;+80
2926
.interval	dd 16 ;+80
2901
.cursor_max	dd 0 ;+84
2927
.cursor_max	dd 0 ;+84
2902
.extended_key	dd 0 ;+88
2928
.extended_key	dd 0 ;+88
2903
.menu_sel_col	dd 0x00cc00 ;+92
2929
.menu_sel_col	dd 0x00cc00 ;+92
2904
.bckg_text_col	dd 0 ; +96
2930
.bckg_text_col	dd 0 ; +96
2905
.frnt_text_col	dd 0xffffff ;+100
2931
.frnt_text_col	dd 0xffffff ;+100
2906
.mouse_keys_old dd 0 ;+104
2932
.mouse_keys_old dd 0 ;+104
2907
.font_height	dd 8 ;+108
2933
.font_height	dd 8 ;+108
2908
.cursor_out	dd 0 ;+112
2934
.cursor_out	dd 0 ;+112
2909
.get_mouse_flag dd 0 ;+116
2935
.get_mouse_flag dd 0 ;+116
2910
;---------------------------------------------------------------------
2936
;---------------------------------------------------------------------
2911
menu_text_area_2:
2937
menu_text_area_2:
2912
db 'Sort',0
2938
db 'Sort',0
2913
.1:
2939
.1:
2914
db 'Name',0
2940
db 'Name',0
2915
db 'Type',0
2941
db 'Type',0
2916
db 'Date',0
2942
db 'Date',0
2917
db 'Size',0
2943
db 'Size',0
2918
.end:
2944
.end:
2919
db 0
2945
db 0
2920
;---------------------------------------------------------------------
2946
;---------------------------------------------------------------------
2921
align 4
2947
align 4
2922
menu_data_3:
2948
menu_data_3:
2923
.type:		dd 0   ;+0
2949
.type:		dd 0   ;+0
2924
.x:
2950
.x:
2925
.size_x 	dw 45  ;+4
2951
.size_x 	dw 45  ;+4
2926
.start_x	dw 130	 ;+6
2952
.start_x	dw 130	 ;+6
2927
.y:
2953
.y:
2928
.size_y 	dw 15	;+8
2954
.size_y 	dw 15	;+8
2929
.start_y	dw 26  ;+10
2955
.start_y	dw 26  ;+10
2930
.text_pointer:	dd menu_text_area_3  ;0 ;+12
2956
.text_pointer:	dd menu_text_area_3  ;0 ;+12
2931
.pos_pointer:	dd menu_text_area_3.1 ;0 ;+16
2957
.pos_pointer:	dd menu_text_area_3.1 ;0 ;+16
2932
.text_end	dd menu_text_area_3.end ;0 ;+20
2958
.text_end	dd menu_text_area_3.end ;0 ;+20
2933
.ret_key	dd 0  ;+24
2959
.ret_key	dd 0  ;+24
2934
.mouse_keys	dd 0  ;+28
2960
.mouse_keys	dd 0  ;+28
2935
.x1:
2961
.x1:
2936
.size_x1	dw 95  ;+32
2962
.size_x1	dw 95  ;+32
2937
.start_x1	dw 130	 ;+34
2963
.start_x1	dw 130	 ;+34
2938
.y1:
2964
.y1:
2939
.size_y1	dw 100	 ;+36
2965
.size_y1	dw 100	 ;+36
2940
.start_y1	dw 41  ;+38
2966
.start_y1	dw 41  ;+38
2941
.bckg_col	dd 0xffffff ; 0xe5e5e5 ;+40
2967
.bckg_col	dd 0xffffff ; 0xe5e5e5 ;+40
2942
.frnt_col	dd 0xff ;+44
2968
.frnt_col	dd 0xff ;+44
2943
.menu_col	dd 0xeef0ff  ;0xffffff ;+48
2969
.menu_col	dd 0xeef0ff  ;0xffffff ;+48
2944
.select 	dd 0 ;+52
2970
.select 	dd 0 ;+52
2945
.out_select	dd 0 ;+56
2971
.out_select	dd 0 ;+56
2946
.buf_adress	dd 0 ;+60
2972
.buf_adress	dd 0 ;+60
2947
.procinfo	dd procinfo ;+64
2973
.procinfo	dd procinfo ;+64
2948
.click		dd 0 ;+68
2974
.click		dd 0 ;+68
2949
.cursor 	dd 0 ;+72
2975
.cursor 	dd 0 ;+72
2950
.cursor_old	dd 0 ;+76
2976
.cursor_old	dd 0 ;+76
2951
.interval	dd 16 ;+80
2977
.interval	dd 16 ;+80
2952
.cursor_max	dd 0 ;+84
2978
.cursor_max	dd 0 ;+84
2953
.extended_key	dd 0 ;+88
2979
.extended_key	dd 0 ;+88
2954
.menu_sel_col	dd 0x00cc00 ;+92
2980
.menu_sel_col	dd 0x00cc00 ;+92
2955
.bckg_text_col	dd 0 ; +96
2981
.bckg_text_col	dd 0 ; +96
2956
.frnt_text_col	dd 0xffffff ;+100
2982
.frnt_text_col	dd 0xffffff ;+100
2957
.mouse_keys_old dd 0 ;+104
2983
.mouse_keys_old dd 0 ;+104
2958
.font_height	dd 8 ;+108
2984
.font_height	dd 8 ;+108
2959
.cursor_out	dd 0 ;+112
2985
.cursor_out	dd 0 ;+112
2960
.get_mouse_flag dd 0 ;+116
2986
.get_mouse_flag dd 0 ;+116
2961
;---------------------------------------------------------------------
2987
;---------------------------------------------------------------------
2962
menu_text_area_3:
2988
menu_text_area_3:
2963
db 'Filter',0
2989
db 'Filter',0
2964
.1:
2990
.1:
2965
db '*.* - show all',0
2991
db '*.* - show all',0
2966
db 'Only supported',0
2992
db 'Only supported',0
2967
.end:
2993
.end:
2968
db 0
2994
db 0
2969
;---------------------------------------------------------------------
2995
;---------------------------------------------------------------------
2970
 
2996
 
2971
align 4
2997
align 4
2972
scroll_bar_data_vertical:
2998
scroll_bar_data_vertical:
2973
.x:
2999
.x:
2974
.size_x 	dw 15 ;+0
3000
.size_x 	dw 15 ;+0
2975
.start_x	dw 500 ;+2
3001
.start_x	dw 500 ;+2
2976
.y:
3002
.y:
2977
.size_y 	dw 300 ;+4
3003
.size_y 	dw 300 ;+4
2978
.start_y	dw 45 ;+6
3004
.start_y	dw 45 ;+6
2979
.btn_high	dd 15 ;+8
3005
.btn_high	dd 15 ;+8
2980
.type		dd 2  ;+12
3006
.type		dd 2  ;+12
2981
.max_area	dd 10  ;+16
3007
.max_area	dd 10  ;+16
2982
.cur_area	dd 2  ;+20
3008
.cur_area	dd 2  ;+20
2983
.position	dd 0  ;+24
3009
.position	dd 0  ;+24
2984
.bckg_col	dd 0xeeeeee ;+28
3010
.bckg_col	dd 0xeeeeee ;+28
2985
.frnt_col	dd 0xbbddff ;+32 ;0x8aeaa0
3011
.frnt_col	dd 0xbbddff ;+32 ;0x8aeaa0
2986
.line_col	dd 0  ;+36
3012
.line_col	dd 0  ;+36
2987
.redraw 	dd 0  ;+40
3013
.redraw 	dd 0  ;+40
2988
.delta		dw 0  ;+44
3014
.delta		dw 0  ;+44
2989
.delta2 	dw 0  ;+46
3015
.delta2 	dw 0  ;+46
2990
.run_x:
3016
.run_x:
2991
.r_size_x	dw 0  ;+48
3017
.r_size_x	dw 0  ;+48
2992
.r_start_x	dw 0  ;+50
3018
.r_start_x	dw 0  ;+50
2993
.run_y:
3019
.run_y:
2994
.r_size_y	dw 0 ;+52
3020
.r_size_y	dw 0 ;+52
2995
.r_start_y	dw 0 ;+54
3021
.r_start_y	dw 0 ;+54
2996
.m_pos		dd 0 ;+56
3022
.m_pos		dd 0 ;+56
2997
.m_pos_2	dd 0 ;+60
3023
.m_pos_2	dd 0 ;+60
2998
.m_keys 	dd 0 ;+64
3024
.m_keys 	dd 0 ;+64
2999
.run_size	dd 0 ;+68
3025
.run_size	dd 0 ;+68
3000
.position2	dd 0 ;+72
3026
.position2	dd 0 ;+72
3001
.work_size	dd 0 ;+76
3027
.work_size	dd 0 ;+76
3002
.all_redraw	dd 0 ;+80
3028
.all_redraw	dd 0 ;+80
3003
.ar_offset	dd 1 ;+84
3029
.ar_offset	dd 1 ;+84
3004
;---------------------------------------------------------------------
3030
;---------------------------------------------------------------------
3005
align 4
3031
align 4
3006
file_browser_data_1:
3032
file_browser_data_1:
3007
.type				dd 0 ;+0
3033
.type				dd 0 ;+0
3008
.x:
3034
.x:
3009
.size_x 			dw 400 ;+4
3035
.size_x 			dw 400 ;+4
3010
.start_x			dw 10 ;+6
3036
.start_x			dw 10 ;+6
3011
.y:
3037
.y:
3012
.size_y 			dw 550 ;+8
3038
.size_y 			dw 550 ;+8
3013
.start_y			dw 45 ;+10
3039
.start_y			dw 45 ;+10
3014
.icon_size_y			dw 16 ; +12
3040
.icon_size_y			dw 16 ; +12
3015
.icon_size_x			dw 16 ; +14
3041
.icon_size_x			dw 16 ; +14
3016
.line_size_x			dw 0 ; +16
3042
.line_size_x			dw 0 ; +16
3017
.line_size_y			dw 18 ; +18
3043
.line_size_y			dw 18 ; +18
3018
.type_size_x			dw 0 ; +20
3044
.type_size_x			dw 0 ; +20
3019
.size_size_x			dw 0 ; +22
3045
.size_size_x			dw 0 ; +22
3020
.date_size_x			dw 0 ; +24
3046
.date_size_x			dw 0 ; +24
3021
.attributes_size_x		dw 0 ; +26
3047
.attributes_size_x		dw 0 ; +26
3022
.icon_assoc_area		dd 0 ; +28
3048
.icon_assoc_area		dd 0 ; +28
3023
.icon_raw_area			dd 0 ; +32
3049
.icon_raw_area			dd 0 ; +32
3024
.resolution_raw 		dd 0 ; +36
3050
.resolution_raw 		dd 0 ; +36
3025
.palette_raw			dd 0 ; +40
3051
.palette_raw			dd 0 ; +40
3026
.directory_path_area		dd 0 ; +44
3052
.directory_path_area		dd 0 ; +44
3027
.file_name_area 		dd 0 ; +48
3053
.file_name_area 		dd 0 ; +48
3028
.select_flag			dd 0 ; +52
3054
.select_flag			dd 0 ; +52
3029
.background_color		dd 0xffffff ; +56
3055
.background_color		dd 0xffffff ; +56
3030
.select_color			dd 0xbbddff ; +60
3056
.select_color			dd 0xbbddff ; +60
3031
.seclect_text_color		dd 0 ; +64
3057
.seclect_text_color		dd 0 ; +64
3032
.text_color			dd 0 ; +68
3058
.text_color			dd 0 ; +68
3033
.reduct_text_color		dd 0xff0000 ; +72
3059
.reduct_text_color		dd 0xff0000 ; +72
3034
.marked_text_color		dd 0 ; +76
3060
.marked_text_color		dd 0 ; +76
3035
.max_panel_line 		dd 0 ; +80
3061
.max_panel_line 		dd 0 ; +80
3036
.select_panel_counter		dd 1 ; +84
3062
.select_panel_counter		dd 1 ; +84
3037
.folder_block			dd 0 ; +88
3063
.folder_block			dd 0 ; +88
3038
.start_draw_line		dd 0 ; +92
3064
.start_draw_line		dd 0 ; +92
3039
.start_draw_cursor_line 	dw 0 ; +96 ; pixels
3065
.start_draw_cursor_line 	dw 0 ; +96 ; pixels
3040
.folder_data			dd 0 ; +98
3066
.folder_data			dd 0 ; +98
3041
.temp_counter			dd 0 ; +102
3067
.temp_counter			dd 0 ; +102
3042
.file_name_length		dd 0 ; +106
3068
.file_name_length		dd 0 ; +106
3043
.marked_file			dd 0 ; +110
3069
.marked_file			dd 0 ; +110
3044
.extension_size 		dd 0 ; +114
3070
.extension_size 		dd 0 ; +114
3045
.extension_start		dd 0 ; +118
3071
.extension_start		dd 0 ; +118
3046
.type_table			dd features_table ; +122
3072
.type_table			dd features_table ; +122
3047
.ini_file_start 		dd 0 ; +126
3073
.ini_file_start 		dd 0 ; +126
3048
.ini_file_end			dd 0 ; +130
3074
.ini_file_end			dd 0 ; +130
3049
.draw_scroll_bar		dd 0 ; +134
3075
.draw_scroll_bar		dd 0 ; +134
3050
.font_size_y			dw 9 ; +138
3076
.font_size_y			dw 9 ; +138
3051
.font_size_x			dw 6 ; +140
3077
.font_size_x			dw 6 ; +140
3052
.mouse_keys			dd 0 ; +142
3078
.mouse_keys			dd 0 ; +142
3053
.mouse_keys_old 		dd 0 ; +146
3079
.mouse_keys_old 		dd 0 ; +146
3054
.mouse_pos			dd 0 ; +150
3080
.mouse_pos			dd 0 ; +150
3055
.mouse_keys_delta		dd 0 ; +154
3081
.mouse_keys_delta		dd 0 ; +154
3056
.mouse_key_delay		dd 50 ; +158
3082
.mouse_key_delay		dd 50 ; +158
3057
.mouse_keys_tick		dd 0 ; +162
3083
.mouse_keys_tick		dd 0 ; +162
3058
.start_draw_cursor_line_2	dw 0 ;+166
3084
.start_draw_cursor_line_2	dw 0 ;+166
3059
.all_redraw			dd 0 ;+168
3085
.all_redraw			dd 0 ;+168
3060
.selected_BDVK_adress		dd 0 ;+172
3086
.selected_BDVK_adress		dd 0 ;+172
3061
.key_action			dd 0 ;+176
3087
.key_action			dw 0 ;+176
-
 
3088
.key_action_num			dw 0 ;+178
3062
.name_temp_area 		dd name_temp_area ;+180
3089
.name_temp_area 		dd name_temp_area ;+180
3063
.max_name_temp_size		dd 0 ;+184
3090
.max_name_temp_size		dd 0 ;+184
3064
.display_name_max_length	dd 0 ;+188
3091
.display_name_max_length	dd 0 ;+188
3065
.draw_panel_selection_flag	dd 0 ;+192
3092
.draw_panel_selection_flag	dd 0 ;+192
3066
.mouse_pos_old			dd 0 ;+196
3093
.mouse_pos_old			dd 0 ;+196
3067
.marked_counter 		dd 0 ;+200
3094
.marked_counter 		dd 0 ;+200
-
 
3095
.keymap_pointer 		dd keymap_area ;+204
3068
;---------------------------------------------------------------------
3096
;---------------------------------------------------------------------
3069
PathShow_data_1:
3097
PathShow_data_1:
3070
.type			dd 0	;+0
3098
.type			dd 0	;+0
3071
.start_y		dw 11	;+4
3099
.start_y		dw 11	;+4
3072
.start_x		dw 10	;+6
3100
.start_x		dw 10	;+6
3073
.font_size_x		dw 6	;+8	; 6 - for font 0, 8 - for font 1
3101
.font_size_x		dw 6	;+8	; 6 - for font 0, 8 - for font 1
3074
.area_size_x		dw 200	;+10
3102
.area_size_x		dw 200	;+10
3075
.font_number		dd 0	;+12	; 0 - monospace, 1 - variable
3103
.font_number		dd 0	;+12	; 0 - monospace, 1 - variable
3076
.background_flag	dd 0	;+16
3104
.background_flag	dd 0	;+16
3077
.font_color		dd 0x0	;+20
3105
.font_color		dd 0x0	;+20
3078
.background_color	dd 0x0	;+24
3106
.background_color	dd 0x0	;+24
3079
.text_pointer		dd dir_path	;+28
3107
.text_pointer		dd dir_path	;+28
3080
.work_area_pointer	dd text_work_area	;+32
3108
.work_area_pointer	dd text_work_area	;+32
3081
.temp_text_length	dd 0	;+36
3109
.temp_text_length	dd 0	;+36
3082
;---------------------------------------------------------------------
3110
;---------------------------------------------------------------------
3083
; for EDITBOX
3111
; for EDITBOX
3084
align	4
3112
align	4
3085
name_editboxes:
3113
name_editboxes:
3086
edit1	edit_box 200,10,7,0xffffff,0xbbddff,0,0,0,4095,user_selected_name,mouse_dd,,0
3114
edit1	edit_box 200,10,7,0xffffff,0xbbddff,0,0,0,4095,user_selected_name,mouse_dd,,0
3087
name_editboxes_end:
3115
name_editboxes_end:
3088
 
3116
 
3089
;mouse_flag:	dd 0x0
3117
;mouse_flag:	dd 0x0
3090
 
3118
 
3091
mouse_dd rd	1
3119
mouse_dd rd	1
3092
;---------------------------------------------------------------------
3120
;---------------------------------------------------------------------
3093
window_x:
3121
window_x:
3094
.x_size		dw 420
3122
.x_size		dw 420
3095
.x_start	dw 10
3123
.x_start	dw 10
3096
window_y:
3124
window_y:
3097
.y_size		dw 320
3125
.y_size		dw 320
3098
.y_start	dw 10
3126
.y_start	dw 10
3099
;---------------------------------------------------------------------
3127
;---------------------------------------------------------------------
3100
features_table:
3128
features_table:
3101
.type_table:
3129
.type_table:
3102
	db ' '
3130
	db ' '
3103
;---------------------------------------------------------------------
3131
;---------------------------------------------------------------------
3104
.size_table:
3132
.size_table:
3105
	db '1023b '
3133
	db '1023b '
3106
;---------------------------------------------------------------------
3134
;---------------------------------------------------------------------
3107
.date_table:
3135
.date_table:
3108
	db '00.00.00 00:00 '
3136
	db '00.00.00 00:00 '
3109
;---------------------------------------------------------------------
3137
;---------------------------------------------------------------------
3110
.year_table:
3138
.year_table:
3111
	db '    '
3139
	db '    '
3112
;---------------------------------------------------------------------
3140
;---------------------------------------------------------------------
3113
example_name_temp:	
3141
example_name_temp:	
3114
	db 'temp1.asm',0
3142
	db 'temp1.asm',0
3115
;---------------------------------------------------------------------
3143
;---------------------------------------------------------------------
3116
IM_END:
3144
IM_END:
3117
;---------------------------------------------------------------------
3145
;---------------------------------------------------------------------
3118
do_not_draw_open_button_label	rb 1
3146
do_not_draw_open_button_label	rb 1
3119
;---------------------------------------------------------------------
3147
;---------------------------------------------------------------------
3120
align 4
3148
align 4
3121
app_colours:
3149
app_colours:
3122
 
3150
 
3123
w_frame			rd 1
3151
w_frame			rd 1
3124
w_grab			rd 1
3152
w_grab			rd 1
3125
w_grab_button		rd 1
3153
w_grab_button		rd 1
3126
w_grab_button_text	rd 1
3154
w_grab_button_text	rd 1
3127
w_grab_text		rd 1
3155
w_grab_text		rd 1
3128
w_work			rd 1
3156
w_work			rd 1
3129
w_work_button		rd 1
3157
w_work_button		rd 1
3130
w_work_button_text	rd 1
3158
w_work_button_text	rd 1
3131
w_work_text		rd 1
3159
w_work_text		rd 1
3132
w_work_graph		rd 1
3160
w_work_graph		rd 1
3133
;---------------------------------------------------------------------
3161
;---------------------------------------------------------------------
3134
open_button_coordinates	rd 1
3162
open_button_coordinates	rd 1
3135
;---------------------------------------------------------------------
3163
;---------------------------------------------------------------------
3136
menu_text_area_1_1:
3164
menu_text_area_1_1:
3137
rb 256
3165
rb 256
3138
;---------------------------------------------------------------------
3166
;---------------------------------------------------------------------
3139
	rb 1024
3167
	rb 1024
3140
stacktop:
3168
stacktop:
3141
;---------------------------------------------------------------------
3169
;---------------------------------------------------------------------
3142
; window error message
3170
; window error message
3143
	rb 1024
3171
	rb 1024
3144
thread_stack:
3172
thread_stack:
3145
;---------------------------------------------------------------------
3173
;---------------------------------------------------------------------
3146
retrieved_devices_table:
3174
retrieved_devices_table:
3147
	rb 200
3175
	rb 200
3148
;---------------------------------------------------------------------
3176
;---------------------------------------------------------------------
-
 
3177
keymap_area:
-
 
3178
	rb 128
-
 
3179
;---------------------------------------------------------------------
3149
name_temp_area:
3180
name_temp_area:
3150
	rb 256
3181
	rb 256
3151
;---------------------------------------------------------------------
3182
;---------------------------------------------------------------------
3152
user_selected_name:
3183
user_selected_name:
3153
	rb 256
3184
	rb 256
3154
;---------------------------------------------------------------------
3185
;---------------------------------------------------------------------
3155
param:
3186
param:
3156
	rb 256
3187
	rb 256
3157
;---------------------------------------------------------------------
3188
;---------------------------------------------------------------------
3158
path:
3189
path:
3159
	rb 4096
3190
	rb 4096
3160
;---------------------------------------------------------------------
3191
;---------------------------------------------------------------------
3161
file_name:
3192
file_name:
3162
	rb 4096
3193
	rb 4096
3163
;---------------------------------------------------------------------
3194
;---------------------------------------------------------------------
3164
previous_dir_path:
3195
previous_dir_path:
3165
	rb 4096
3196
	rb 4096
3166
;---------------------------------------------------------------------
3197
;---------------------------------------------------------------------
3167
dir_path:
3198
dir_path:
3168
	rb 4096
3199
	rb 4096
3169
;---------------------------------------------------------------------
3200
;---------------------------------------------------------------------
3170
dir_path_temp:
3201
dir_path_temp:
3171
	rb 4096
3202
	rb 4096
3172
;---------------------------------------------------------------------
3203
;---------------------------------------------------------------------
3173
text_work_area:
3204
text_work_area:
3174
	rb 1024
3205
	rb 1024
3175
;---------------------------------------------------------------------
3206
;---------------------------------------------------------------------
3176
procinfo:
3207
procinfo:
3177
process_info:
3208
process_info:
3178
	rb 1024
3209
	rb 1024
3179
;----------------------
3210
;----------------------
3180
file_info:
3211
file_info:
3181
	rb 40
3212
	rb 40
3182
I_END:
3213
I_END: