Subversion Repositories Kolibri OS

Rev

Rev 5887 | Rev 7996 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5887 Rev 7863
1
;------------------------------------------------------------------------------
1
;------------------------------------------------------------------------------
2
draw_buttons_panel:
2
draw_buttons_panel:
3
	mov	ecx,[skin_high]
3
	mov	ecx,[skin_high]
4
	add	ecx,19
4
	add	ecx,19
5
	shl	ecx,16
5
	shl	ecx,16
6
	mov	cx,18
6
	mov	cx,18
7
	mov	ebx,[window_width]
7
	mov	ebx,[window_width]
8
	sub	ebx,9
8
	sub	ebx,9
9
	add	ebx,5 shl 16
9
	add	ebx,5 shl 16
10
	mcall	13,,,0xffffff
10
	mcall	13,,,0xffffff
-
 
11
	
11
	mov	edx,15 shl 16+20
12
	mov	edx,15 shl 16+20
12
	add	edx,[skin_high]
13
	add	edx,[skin_high]
13
	pusha
-
 
14
	call	.calculate_button
-
 
15
	mcall	,,,150
-
 
16
	popa
-
 
17
	mcall	7,[buttons_img_start],<16,16>
14
	mcall	7,buttons_file_data,<198,16>
18
	add	edx,26 shl 16
-
 
19
	add	ebx,16*16*3
-
 
20
	pusha
-
 
21
	call	.calculate_button
-
 
22
	mcall	,,,151
-
 
23
	popa
15
	
24
	mcall
-
 
25
	add	edx,26 shl 16
-
 
26
	add	ebx,16*16*3
-
 
27
	pusha
-
 
28
	call	.calculate_button
-
 
29
	mcall	,,,152
16
	mov ecx, 20
30
	popa
-
 
31
	mcall
-
 
32
	add	edx,26 shl 16
17
	add ecx, [skin_high]
33
	add	ebx,16*16*3
18
	shl ecx, 16
34
	pusha
-
 
35
	call	.calculate_button
-
 
36
	mcall	,,,153
-
 
37
	popa
-
 
38
	mcall
-
 
39
	add	edx,26 shl 16
-
 
40
	add	ebx,16*16*3
19
	add ecx, 16
41
	pusha
-
 
42
	call	.calculate_button
-
 
43
	mcall	,,,154
20
	mcall	8,<15,16>,,150+0x40000000
44
	popa
21
	
45
	mcall
22
_new_but:
46
	add	edx,26 shl 16
23
	add	ebx,26 shl 16
47
	add	ebx,16*16*3
-
 
48
	pusha
-
 
49
	call	.calculate_button
-
 
50
	mcall	,,,155
-
 
51
	popa
-
 
52
	mcall
24
	inc edx
53
	add	edx,26 shl 16
-
 
54
	add	ebx,16*16*3
-
 
55
	pusha
-
 
56
	call	.calculate_button
-
 
57
	mcall	,,,156
-
 
58
	popa
-
 
59
	mcall
25
	mcall
60
	add	edx,26 shl 16
26
	cmp edx, 157+0x40000000
61
	add	ebx,16*16*3
-
 
62
	pusha
-
 
63
	call	.calculate_button
-
 
64
	mcall	,,,157
27
	jl  _new_but
65
	popa
28
	
66
	mcall
-
 
67
	ret
29
	ret
68
;--------------------------------------
30
;--------------------------------------
69
.calculate_button:
31
.calculate_button:
70
	mov	esi,0xffffff
-
 
71
	mov	ebx,edx
32
	mov	ebx,edx
72
	mov	bx,15
33
	mov	bx,15
73
	mov	ecx,edx
34
	mov	ecx,edx
74
	shl	ecx,16
35
	shl	ecx,16
75
	mov	cx,bx
36
	mov	cx,bx
76
	mov	eax,8
-
 
77
	ret
37
	ret
78
;------------------------------------------------------------------------------
38
;------------------------------------------------------------------------------
79
draw_left_sort_button:
39
draw_left_sort_button:
80
	mov	bx,[left_panel_x.start_x]
40
	mov	bx,[left_panel_x.start_x]
81
	add	bx,[left_panel_x.size_x]
41
	add	bx,[left_panel_x.size_x]
82
	sub	ebx,50+15
42
	sub	ebx,50+15
83
	mov	cx,[left_panel_y.start_y]
43
	mov	cx,[left_panel_y.start_y]
84
	call	calclulate_sort_button_1
44
	call	calclulate_sort_button_1
85
	mov	edx,145
45
	mov	edx,145
86
;--------------------------------------
46
;--------------------------------------
87
.start:
47
.start:
88
	mov	esi,0xffffff
48
	mov	esi,0xffffff
89
	dec	ebp
49
	dec	ebp
90
	cmp	[left_sort_flag],ebp
50
	cmp	[left_sort_flag],ebp
91
	jne	@f
51
	jne	@f
92
 
52
 
93
	mov	esi,0xccccff
53
	mov	esi,0xccccff
94
;--------------------------------------
54
;--------------------------------------
95
@@:
55
@@:
96
	call	calclulate_sort_button_2
56
	call	calclulate_sort_button_2
97
	jnz	.start
57
	jnz	.start
98
 
58
 
99
	ret
59
	ret
100
;------------------------------------------------------------------------------
60
;------------------------------------------------------------------------------
101
calclulate_sort_button_1:
61
calclulate_sort_button_1:
102
	shl	ebx,16
62
	shl	ebx,16
103
	mov	bx,50
63
	mov	bx,50
104
	sub	cx,14
64
	sub	cx,14
105
	shl	ecx,16
65
	shl	ecx,16
106
	mov	cx,12
66
	mov	cx,12
107
	mov	eax,8
67
	mov	eax,8
108
	mov	ebp,4
68
	mov	ebp,4
109
	ret
69
	ret
110
;------------------------------------------------------------------------------
70
;------------------------------------------------------------------------------
111
calclulate_sort_button_2:
71
calclulate_sort_button_2:
112
	inc	ebp
72
	inc	ebp
113
	mcall
73
	mcall
114
	pusha
74
	pusha
115
	push	ebx
75
	push	ebx
116
	mov	eax,ebx
76
	mov	eax,ebx
117
	inc	eax
77
	inc	eax
118
	shl	eax,16
78
	shl	eax,16
119
	add	ebx,eax
79
	add	ebx,eax
120
	cmp	ebp,4
80
	cmp	ebp,4
121
	jne	@f
81
	jne	@f
122
 
82
 
123
	mov	bx,15
83
	mov	bx,15
124
	jmp	.continue
84
	jmp	.continue
125
;--------------------------------------
85
;--------------------------------------
126
@@:
86
@@:
127
	mov	bx,1
87
	mov	bx,1
128
;--------------------------------------
88
;--------------------------------------
129
.continue:
89
.continue:
130
	inc	ecx
90
	inc	ecx
131
	mcall	13,,,0xcccccc
91
	mcall	13,,,0xcccccc
132
	pop	ebx
92
	pop	ebx
133
	cmp	ebp,1
93
	cmp	ebp,1
134
	jne	@f
94
	jne	@f
135
 
95
 
136
	mov	eax,[temp_panel_end]
96
	mov	eax,[temp_panel_end]
137
	shl	eax,16
97
	shl	eax,16
138
	add	eax,[temp_panel_end]
98
	add	eax,[temp_panel_end]
139
	shr	eax,16
99
	shr	eax,16
140
	shr	ebx,16
100
	shr	ebx,16
141
	sub	ebx,eax
101
	sub	ebx,eax
142
	shl	ebx,16
102
	shl	ebx,16
143
	mov	bx,ax
103
	mov	bx,ax
144
	rol	ebx,16
104
	rol	ebx,16
145
	mcall	13
105
	mcall	13
146
	mov	[temp_panel_end],ebx
106
	mov	[temp_panel_end],ebx
147
;--------------------------------------
107
;--------------------------------------
148
@@:
108
@@:
149
	popa
109
	popa
150
	pusha
110
	pusha
151
	shr	ecx,16
111
	shr	ecx,16
152
	mov	bx,cx
112
	mov	bx,cx
153
	add	ebx,3 shl 16+2
113
	add	ebx,3 shl 16+2
154
	mov	edx,ebp
114
	mov	edx,ebp
155
	dec	edx
115
	dec	edx
156
	shl	edx,2
116
	shl	edx,2
157
	add	edx,sort_button_name
117
	add	edx,sort_button_name
158
	mov	eax,4
118
	mov	eax,4
159
	xor	ecx,ecx
119
	xor	ecx,ecx
160
	mov	esi,eax
120
	mov	esi,eax
161
	mcall
121
	mcall
162
	popa
122
	popa
163
	dec	edx
123
	dec	edx
164
	sub	ebx,38 shl 16
124
	sub	ebx,38 shl 16
165
	mov	bx,36
125
	mov	bx,36
166
	dec	ebp
126
	dec	ebp
167
	ret
127
	ret
168
;------------------------------------------------------------------------------
128
;------------------------------------------------------------------------------
169
draw_right_sort_button:
129
draw_right_sort_button:
170
	mov	bx,[right_panel_x.start_x]
130
	mov	bx,[right_panel_x.start_x]
171
	add	bx,[right_panel_x.size_x]
131
	add	bx,[right_panel_x.size_x]
172
	sub	ebx,50+15
132
	sub	ebx,50+15
173
	mov	cx,[right_panel_y.start_y]
133
	mov	cx,[right_panel_y.start_y]
174
	call	calclulate_sort_button_1
134
	call	calclulate_sort_button_1
175
	mov	edx,149
135
	mov	edx,149
176
;--------------------------------------
136
;--------------------------------------
177
.start:
137
.start:
178
	mov	esi,0xffffff
138
	mov	esi,0xffffff
179
	dec	ebp
139
	dec	ebp
180
	cmp	[right_sort_flag],ebp
140
	cmp	[right_sort_flag],ebp
181
	jne	@f
141
	jne	@f
182
 
142
 
183
	mov	esi,0xccccff
143
	mov	esi,0xccccff
184
;--------------------------------------
144
;--------------------------------------
185
@@:
145
@@:
186
	call	calclulate_sort_button_2
146
	call	calclulate_sort_button_2
187
	jnz	.start
147
	jnz	.start
188
 
148
 
189
	ret
149
	ret
190
;------------------------------------------------------------------------------
150
;------------------------------------------------------------------------------
191
draw_left_select_disk_button:
151
draw_left_select_disk_button:
192
	mov	bx,[left_panel_x.start_x]
152
	mov	bx,[left_panel_x.start_x]
193
	mov	cx,[left_panel_y.start_y]
153
	mov	cx,[left_panel_y.start_y]
194
	mov	ebp,read_folder_name	      ;read_folder.name
154
	mov	ebp,read_folder_name	      ;read_folder.name
195
	mov	edx,0x40000000+140
155
	mov	edx,0x40000000+140
196
;--------------------------------------
156
;--------------------------------------
197
.1:
157
.1:
198
	shl	ebx,16
158
	shl	ebx,16
199
	mov	bx,60
159
	mov	bx,60
200
	sub	cx,14
160
	sub	cx,14
201
	shl	ecx,16
161
	shl	ecx,16
202
	mov	cx,13
162
	mov	cx,13
203
	mcall	8,,,,0xffffff
163
	mcall	8,,,,0xffffff
204
	mcall	13,,,0xffffff
164
	mcall	13,,,0xffffff
205
	pusha
165
	pusha
206
	mov	esi,ebp
166
	mov	esi,ebp
207
	add	esi,2
167
	add	esi,2
208
;--------------------------------------
168
;--------------------------------------
209
@@:
169
@@:
210
	inc	esi
170
	inc	esi
211
	cmp	[esi],byte 0
171
	cmp	[esi],byte 0
212
	je	@f
172
	je	@f
213
 
173
 
214
	cmp	[esi],byte '/'
174
	cmp	[esi],byte '/'
215
	jne	@r
175
	jne	@r
216
 
176
 
217
	add	esi,2
177
	add	esi,2
218
;--------------------------------------
178
;--------------------------------------
219
@@:
179
@@:
220
	sub	esi,ebp  ;read_folder.name
180
	sub	esi,ebp  ;read_folder.name
221
	add	ebx,1 shl 16
181
	add	ebx,1 shl 16
222
	shr	ecx,16
182
	shr	ecx,16
223
	mov	bx,cx
183
	mov	bx,cx
224
	add	ebx,3
184
	add	ebx,3
225
	mov	edx,ebp
185
	mov	edx,ebp
226
	mcall	4,,0  ;,read_folder.name
186
	mcall	4,,0  ;,read_folder.name
227
	popa
187
	popa
228
	add	ebx,50 shl 16
188
	add	ebx,50 shl 16
229
	mov	bx,10
189
	mov	bx,10
230
	mcall	,,,0x6060ff
190
	mcall	,,,0x6060ff
231
	mov	[temp_panel_end],ebx
191
	mov	[temp_panel_end],ebx
232
	add	ebx,1 shl 16
192
	add	ebx,1 shl 16
233
	shr	ecx,16
193
	shr	ecx,16
234
	mov	bx,cx
194
	mov	bx,cx
235
	add	ebx,3
195
	add	ebx,3
236
	mcall	4, ,0x80ffffff,select_disk_char
196
	mcall	4, ,0x80ffffff,select_disk_char
237
	add	ebx,1 shl 16
197
	add	ebx,1 shl 16
238
	mcall
198
	mcall
239
	ret
199
	ret
240
;------------------------------------------------------------------------------
200
;------------------------------------------------------------------------------
241
draw_right_select_disk_button:
201
draw_right_select_disk_button:
242
	mov	bx,[right_panel_x.start_x]
202
	mov	bx,[right_panel_x.start_x]
243
	mov	cx,[right_panel_y.start_y]
203
	mov	cx,[right_panel_y.start_y]
244
	mov	ebp,read_folder_1_name   ;read_folder_1.name
204
	mov	ebp,read_folder_1_name   ;read_folder_1.name
245
	mov	edx,0x40000000+141
205
	mov	edx,0x40000000+141
246
	jmp	draw_left_select_disk_button.1
206
	jmp	draw_left_select_disk_button.1
247
;------------------------------------------------------------------------------
207
;------------------------------------------------------------------------------
248
;draw_ATAPI_tray_control:
208
;draw_ATAPI_tray_control:
249
;	ret
209
;	ret
250
;------------------------------------------------------------------------------
210
;------------------------------------------------------------------------------
251
calc_max_panel_line:
211
calc_max_panel_line:
252
	xor	eax,eax
212
	xor	eax,eax
253
	mov	ax,[left_panel_y.size_y]
213
	mov	ax,[left_panel_y.size_y]
254
	mov	ebx,10
214
	mov	ebx,10
255
	xor	edx,edx
215
	xor	edx,edx
256
	div	ebx
216
	div	ebx
257
	mov	[max_panel_line],eax
217
	mov	[max_panel_line],eax
258
	ret
218
	ret
259
;------------------------------------------------------------------------------
219
;------------------------------------------------------------------------------
260
draw_icon:
220
draw_icon:
261
	pusha
221
	pusha
262
	test	[edx-40],byte 0x10
222
	test	[edx-40],byte 0x10
263
	jnz	.draw_dir_pic
223
	jnz	.draw_dir_pic
264
 
224
 
265
	call	get_icon_number
225
	call	get_icon_number
266
	imul	ebx,270
226
	imul	ebx,270
267
	add	ebx,mem
227
	add	ebx,mem
268
	jmp	.draw
228
	jmp	.draw
269
;--------------------------------------
229
;--------------------------------------
270
.draw_dir_pic:
230
.draw_dir_pic:
271
	mov	ebx,mem
231
	mov	ebx,mem
272
	cmp	[edx],word '..'
232
	cmp	[edx],word '..'
273
	jne	 .draw
233
	jne	 .draw
274
 
234
 
275
	add	ebx,270   ;*17
235
	add	ebx,270   ;*17
276
;--------------------------------------
236
;--------------------------------------
277
.draw:
237
.draw:
278
	mov	edx,[esp+16]	;ebx
238
	mov	edx,[esp+16]	;ebx
279
	ror	edx,16
239
	ror	edx,16
280
	sub	edx,12
240
	sub	edx,12
281
	rol	edx,16
241
	rol	edx,16
282
	mcall	7, ,<10,9>
242
	mcall	7, ,<10,9>
283
	popa
243
	popa
284
	ret
244
	ret
285
;------------------------------------------------------------------------------
245
;------------------------------------------------------------------------------
286
;       ÏÅÐÅÂÎÄ 10-ÍÛÕ ×ÈÑÅË ÑÎ ÇÍÀÊÎÌ Â ÑÒÐÎÊÎÂÛÉ ÂÈÄ
246
;       ÏÅÐÅÂÎÄ 10-ÍÛÕ ×ÈÑÅË ÑÎ ÇÍÀÊÎÌ Â ÑÒÐÎÊÎÂÛÉ ÂÈÄ
287
;       Âõîä:
247
;       Âõîä:
288
;               AX - ÷èñëî
248
;               AX - ÷èñëî
289
;               EBX - àäðåñ ñòðîêè
249
;               EBX - àäðåñ ñòðîêè
290
;       Âûõîä:
250
;       Âûõîä:
291
;               ñòðîêà ñîäåðæèò ÷èñëî, êîíåö îòìå÷åí êîäîì 0
251
;               ñòðîêà ñîäåðæèò ÷èñëî, êîíåö îòìå÷åí êîäîì 0
292
;------------------------------------------------------------------------------
252
;------------------------------------------------------------------------------
293
decimal_string_2:
253
decimal_string_2:
294
	push	eax ebx ecx edx
254
	push	eax ebx ecx edx
295
	xor	ecx,ecx
255
	xor	ecx,ecx
296
	mov	[ebx],byte '0'
256
	mov	[ebx],byte '0'
297
	inc	ebx
257
	inc	ebx
298
;--------------------------------------
258
;--------------------------------------
299
.p3:
259
.p3:
300
	xor	edx,edx
260
	xor	edx,edx
301
	push	ebx
261
	push	ebx
302
	mov	ebx,10
262
	mov	ebx,10
303
	div	ebx
263
	div	ebx
304
	pop	ebx
264
	pop	ebx
305
	add	edx,48
265
	add	edx,48
306
	push	edx
266
	push	edx
307
	inc	ecx
267
	inc	ecx
308
	cmp	ax,0
268
	cmp	ax,0
309
	jne	.p3
269
	jne	.p3
310
 
270
 
311
	cmp	ecx,1
271
	cmp	ecx,1
312
	jbe	.p4
272
	jbe	.p4
313
 
273
 
314
	mov	ecx,2
274
	mov	ecx,2
315
	dec	ebx
275
	dec	ebx
316
;--------------------------------------
276
;--------------------------------------
317
.p4:
277
.p4:
318
	pop	edx
278
	pop	edx
319
	mov	[ebx],dl
279
	mov	[ebx],dl
320
	inc	ebx
280
	inc	ebx
321
	loop	.p4
281
	loop	.p4
322
	pop	edx ecx ebx eax
282
	pop	edx ecx ebx eax
323
	ret
283
	ret
324
;------------------------------------------------------------------------------
284
;------------------------------------------------------------------------------
325
decimal_string_4:
285
decimal_string_4:
326
	push	eax ecx edx
286
	push	eax ecx edx
327
	xor	ecx,ecx
287
	xor	ecx,ecx
328
	mov	[ebx],byte '0'
288
	mov	[ebx],byte '0'
329
	inc	ebx
289
	inc	ebx
330
;--------------------------------------
290
;--------------------------------------
331
.p3:
291
.p3:
332
	xor	edx,edx
292
	xor	edx,edx
333
	push	ebx
293
	push	ebx
334
	mov	ebx,10
294
	mov	ebx,10
335
	div	ebx
295
	div	ebx
336
	pop	ebx
296
	pop	ebx
337
	add	edx,48
297
	add	edx,48
338
	push	edx
298
	push	edx
339
	inc	ecx
299
	inc	ecx
340
	cmp	eax,0
300
	cmp	eax,0
341
	jne	.p3
301
	jne	.p3
342
 
302
 
343
	cmp	ecx,3
303
	cmp	ecx,3
344
	jbe	.p4
304
	jbe	.p4
345
 
305
 
346
	mov	ecx,4
306
	mov	ecx,4
347
	dec	ebx
307
	dec	ebx
348
;--------------------------------------
308
;--------------------------------------
349
.p4:
309
.p4:
350
	pop	edx
310
	pop	edx
351
	mov	[ebx],dl
311
	mov	[ebx],dl
352
	inc	ebx
312
	inc	ebx
353
	loop	.p4
313
	loop	.p4
354
 
314
 
355
	pop	edx ecx eax
315
	pop	edx ecx eax
356
	ret
316
	ret
357
;------------------------------------------------------------------------------
317
;------------------------------------------------------------------------------
358
draw_type_size_date:
318
draw_type_size_date:
359
	pusha
319
	pusha
360
	test	[edx-40],byte 0x10
320
	test	[edx-40],byte 0x10
361
	jz	.copy_type
321
	jz	.copy_type
362
 
322
 
363
	mov	[type_table],dword '
323
	mov	[type_table],dword '
364
	mov	[type_table+4],word '> '
324
	mov	[type_table+4],word '> '
365
	mov	[file_name_length],0
325
	mov	[file_name_length],0
366
	mov	[extension_size],0
326
	mov	[extension_size],0
367
	jmp	.start  ;.size
327
	jmp	.start  ;.size
368
;--------------------------------------
328
;--------------------------------------
369
.copy_type:
329
.copy_type:
370
	mov	[type_table],dword '    '
330
	mov	[type_table],dword '    '
371
	mov	[type_table+4],word '  '
331
	mov	[type_table+4],word '  '
372
;--------------------------------------
332
;--------------------------------------
373
.start:
333
.start:
374
	mov	esi,edx
334
	mov	esi,edx
375
	xor	eax,eax
335
	xor	eax,eax
376
;--------------------------------------
336
;--------------------------------------
377
@@:
337
@@:
378
	cld
338
	cld
379
	lodsb
339
	lodsb
380
	test	eax,eax
340
	test	eax,eax
381
	jnz	@b
341
	jnz	@b
382
 
342
 
383
	mov	[file_name_length],esi
343
	mov	[file_name_length],esi
384
	sub	[file_name_length],edx
344
	sub	[file_name_length],edx
385
	mov	[temp_counter_1],esi
345
	mov	[temp_counter_1],esi
386
	test	[edx-40],byte 0x10
346
	test	[edx-40],byte 0x10
387
	jnz	 .size
347
	jnz	 .size
388
 
348
 
389
	dec	esi
349
	dec	esi
390
	dec	edx
350
	dec	edx
391
;--------------------------------------
351
;--------------------------------------
392
@@:
352
@@:
393
	std
353
	std
394
	lodsb
354
	lodsb
395
	cmp	esi,edx
355
	cmp	esi,edx
396
	je	.extension_size_0
356
	je	.extension_size_0
397
 
357
 
398
	cmp	al,'.'
358
	cmp	al,'.'
399
	jnz	@b
359
	jnz	@b
400
 
360
 
401
	add	esi,2
361
	add	esi,2
402
	mov	[extension_start],esi
362
	mov	[extension_start],esi
403
	mov	ecx,[temp_counter_1]
363
	mov	ecx,[temp_counter_1]
404
	sub	ecx,esi
364
	sub	ecx,esi
405
	inc	ecx
365
	inc	ecx
406
	mov	[extension_size],ecx
366
	mov	[extension_size],ecx
407
	sub	[file_name_length],ecx
367
	sub	[file_name_length],ecx
408
	cmp	ecx,2
368
	cmp	ecx,2
409
	ja	@f
369
	ja	@f
410
 
370
 
411
	inc	[file_name_length]
371
	inc	[file_name_length]
412
;--------------------------------------
372
;--------------------------------------
413
@@:
373
@@:
414
	sub	ecx,2
374
	sub	ecx,2
415
	cmp	ecx,4
375
	cmp	ecx,4
416
	jbe	@f
376
	jbe	@f
417
 
377
 
418
	mov	ecx,4
378
	mov	ecx,4
419
	mov	[type_table+4],word '..'
379
	mov	[type_table+4],word '..'
420
;--------------------------------------
380
;--------------------------------------
421
@@:
381
@@:
422
	mov	edi,type_table  ;+1
382
	mov	edi,type_table  ;+1
423
	cld
383
	cld
424
	rep	movsb
384
	rep	movsb
425
	mov	[edi],byte ' '
385
	mov	[edi],byte ' '
426
	inc	edx
386
	inc	edx
427
	jmp	.size
387
	jmp	.size
428
;--------------------------------------
388
;--------------------------------------
429
.extension_size_0:
389
.extension_size_0:
430
	inc	edx
390
	inc	edx
431
	mov	[extension_size],0
391
	mov	[extension_size],0
432
;--------------------------------------
392
;--------------------------------------
433
.size:
393
.size:
434
	test	[edx-40],byte 0x10
394
	test	[edx-40],byte 0x10
435
	jz	.copy_size
395
	jz	.copy_size
436
 
396
 
437
	mov	[size_table],dword '----'
397
	mov	[size_table],dword '----'
438
	mov	[size_table+4],word '- '
398
	mov	[size_table+4],word '- '
439
	jmp	.date
399
	jmp	.date
440
;--------------------------------------
400
;--------------------------------------
441
.copy_size:
401
.copy_size:
442
;/0x40000000 - Gb
402
;/0x40000000 - Gb
443
;/0x100000 - Mb
403
;/0x100000 - Mb
444
;/0x400 Kb
404
;/0x400 Kb
445
	mov	[size_table],dword '    '
405
	mov	[size_table],dword '    '
446
	mov	[size_table+4],word '  '
406
	mov	[size_table+4],word '  '
447
	push	ebx
407
	push	ebx
448
	push	edx
408
	push	edx
449
	mov	eax,[edx-40+32]
409
	mov	eax,[edx-40+32]
450
	mov	ebx,0x40000000
410
	mov	ebx,0x40000000
451
	xor	edx,edx
411
	xor	edx,edx
452
	div	ebx
412
	div	ebx
453
	cmp	eax,0
413
	cmp	eax,0
454
	je	@f
414
	je	@f
455
 
415
 
456
	mov	ebx,size_table
416
	mov	ebx,size_table
457
	call	decimal_string_4
417
	call	decimal_string_4
458
	mov	[ebx],byte 'G'
418
	mov	[ebx],byte 'G'
459
	jmp	.size_convert_end
419
	jmp	.size_convert_end
460
;--------------------------------------
420
;--------------------------------------
461
@@:
421
@@:
462
	mov	edx,[esp]
422
	mov	edx,[esp]
463
	mov	eax,[edx-40+32]
423
	mov	eax,[edx-40+32]
464
	mov	ebx,0x100000
424
	mov	ebx,0x100000
465
	xor	edx,edx
425
	xor	edx,edx
466
	div	ebx
426
	div	ebx
467
	cmp	eax,0
427
	cmp	eax,0
468
	je	@f
428
	je	@f
469
 
429
 
470
	mov	ebx,size_table
430
	mov	ebx,size_table
471
	call	decimal_string_4
431
	call	decimal_string_4
472
	mov	[ebx],byte 'M'
432
	mov	[ebx],byte 'M'
473
	jmp	.size_convert_end
433
	jmp	.size_convert_end
474
;--------------------------------------
434
;--------------------------------------
475
@@:
435
@@:
476
	mov	edx,[esp]
436
	mov	edx,[esp]
477
	mov	eax,[edx-40+32]
437
	mov	eax,[edx-40+32]
478
	mov	ebx,0x400
438
	mov	ebx,0x400
479
	xor	edx,edx
439
	xor	edx,edx
480
	div	ebx
440
	div	ebx
481
	cmp	eax,0
441
	cmp	eax,0
482
	je	@f
442
	je	@f
483
 
443
 
484
	mov	ebx,size_table
444
	mov	ebx,size_table
485
	call	decimal_string_4
445
	call	decimal_string_4
486
	mov	[ebx],byte 'K'
446
	mov	[ebx],byte 'K'
487
	jmp	.size_convert_end
447
	jmp	.size_convert_end
488
;--------------------------------------
448
;--------------------------------------
489
@@:
449
@@:
490
	mov	edx,[esp]
450
	mov	edx,[esp]
491
	mov	eax,[edx-40+32]
451
	mov	eax,[edx-40+32]
492
;.size_convert:
452
;.size_convert:
493
	mov	ebx,size_table
453
	mov	ebx,size_table
494
	call	decimal_string_4
454
	call	decimal_string_4
495
;--------------------------------------
455
;--------------------------------------
496
.size_convert_end:
456
.size_convert_end:
497
	cmp	[size_table],byte '0'
457
	cmp	[size_table],byte '0'
498
	jne	@f
458
	jne	@f
499
 
459
 
500
	mov	[size_table],byte ' '
460
	mov	[size_table],byte ' '
501
;--------------------------------------
461
;--------------------------------------
502
@@:
462
@@:
503
	cmp	[size_table+4],byte ' '
463
	cmp	[size_table+4],byte ' '
504
	jne	@f
464
	jne	@f
505
 
465
 
506
	mov	esi,size_table+3
466
	mov	esi,size_table+3
507
	mov	edi,esi
467
	mov	edi,esi
508
	inc	edi
468
	inc	edi
509
	mov	ecx,5
469
	mov	ecx,5
510
	std
470
	std
511
	rep	movsb
471
	rep	movsb
512
	jmp	@r
472
	jmp	@r
513
;--------------------------------------
473
;--------------------------------------
514
@@:
474
@@:
515
	pop	edx
475
	pop	edx
516
	pop	ebx
476
	pop	ebx
517
;--------------------------------------
477
;--------------------------------------
518
.date:
478
.date:
519
	xor	eax,eax
479
	xor	eax,eax
520
	mov	al,[edx-40+28]
480
	mov	al,[edx-40+28]
521
	push	ebx
481
	push	ebx
522
	mov	ebx,date_table
482
	mov	ebx,date_table
523
	call	decimal_string_2
483
	call	decimal_string_2
524
	mov	al,[edx-40+29]
484
	mov	al,[edx-40+29]
525
	mov	ebx,date_table+3
485
	mov	ebx,date_table+3
526
	call	decimal_string_2
486
	call	decimal_string_2
527
	mov	ax,[edx-40+30]
487
	mov	ax,[edx-40+30]
528
	mov	ebx,year_table
488
	mov	ebx,year_table
529
	call	decimal_string_4
489
	call	decimal_string_4
530
	mov	ax,[year_table+2]
490
	mov	ax,[year_table+2]
531
	mov	[date_table+6],ax
491
	mov	[date_table+6],ax
532
	pop	ebx
492
	pop	ebx
533
	ror	ebx,16
493
	ror	ebx,16
534
	add	bx,[left_panel_x.size_x]
494
	add	bx,[left_panel_x.size_x]
535
	sub	ebx,122+12+15
495
	sub	ebx,122+12+15
536
	rol	ebx,16
496
	rol	ebx,16
537
	mov	ecx,0
497
	mov	ecx,0
538
	cmp	[marked_file],byte 0
498
	cmp	[marked_file],byte 0
539
	je	@f
499
	je	@f
540
 
500
 
541
	mov	ecx,0xff0000
501
	mov	ecx,0xff0000
542
;--------------------------------------
502
;--------------------------------------
543
@@:
503
@@:
544
	mcall	4,,,type_table,20
504
	mcall	4,,,type_table,20
545
	popa
505
	popa
546
	ret
506
	ret
547
;------------------------------------------------------------------------------
507
;------------------------------------------------------------------------------
548
draw_folder_data:
508
draw_folder_data:
549
	cmp	[drawing_panel_folder],1
509
	cmp	[drawing_panel_folder],1
550
	jne	.right_panel
510
	jne	.right_panel
551
 
511
 
552
	mov	eax,[left_folder_block]
512
	mov	eax,[left_folder_block]
553
	sub	eax,[max_panel_line]
513
	sub	eax,[max_panel_line]
554
	test	eax,0x8000000
514
	test	eax,0x8000000
555
	jz	.ok_left
515
	jz	.ok_left
556
 
516
 
557
	mov	[left_start_draw_line],0
517
	mov	[left_start_draw_line],0
558
	jmp	@f
518
	jmp	@f
559
;--------------------------------------
519
;--------------------------------------
560
.ok_left:
520
.ok_left:
561
	cmp	eax,[left_start_draw_line]
521
	cmp	eax,[left_start_draw_line]
562
	jae	@f
522
	jae	@f
563
 
523
 
564
	mov	[left_start_draw_line],eax
524
	mov	[left_start_draw_line],eax
565
;--------------------------------------
525
;--------------------------------------
566
@@:
526
@@:
567
	mov	bx,[left_panel_x.start_x]
527
	mov	bx,[left_panel_x.start_x]
568
	add	bx,12
528
	add	bx,12
569
	shl	ebx,16
529
	shl	ebx,16
570
	mov	bx,[left_panel_y.start_y]
530
	mov	bx,[left_panel_y.start_y]
571
	inc	bx
531
	inc	bx
572
	mov	edx,[left_start_draw_line]
532
	mov	edx,[left_start_draw_line]
573
	imul	edx,304
533
	imul	edx,304
574
	add	edx,[left_folder_data]
534
	add	edx,[left_folder_data]
575
	add	edx,32+40
535
	add	edx,32+40
576
	mov	[temp_counter],0
536
	mov	[temp_counter],0
577
	jmp	.type_folder
537
	jmp	.type_folder
578
;--------------------------------------
538
;--------------------------------------
579
.right_panel:
539
.right_panel:
580
	mov	eax,[right_folder_block]
540
	mov	eax,[right_folder_block]
581
	sub	eax,[max_panel_line]
541
	sub	eax,[max_panel_line]
582
	test	eax,0x8000000
542
	test	eax,0x8000000
583
	jz	.ok_right
543
	jz	.ok_right
584
 
544
 
585
	mov	[right_start_draw_line],0
545
	mov	[right_start_draw_line],0
586
	jmp	@f
546
	jmp	@f
587
;--------------------------------------
547
;--------------------------------------
588
.ok_right:
548
.ok_right:
589
	cmp	eax,[right_start_draw_line]
549
	cmp	eax,[right_start_draw_line]
590
	jae	@f
550
	jae	@f
591
 
551
 
592
	mov	[right_start_draw_line],eax
552
	mov	[right_start_draw_line],eax
593
;--------------------------------------
553
;--------------------------------------
594
@@:
554
@@:
595
	mov	bx,[right_panel_x.start_x]
555
	mov	bx,[right_panel_x.start_x]
596
	add	bx,12
556
	add	bx,12
597
	shl	ebx,16
557
	shl	ebx,16
598
	mov	bx,[right_panel_y.start_y]
558
	mov	bx,[right_panel_y.start_y]
599
	inc	bx
559
	inc	bx
600
	mov	edx,[right_start_draw_line]
560
	mov	edx,[right_start_draw_line]
601
	imul	edx,304
561
	imul	edx,304
602
	add	edx,[right_folder_data]
562
	add	edx,[right_folder_data]
603
	add	edx,32+40
563
	add	edx,32+40
604
	mov	[temp_counter],1
564
	mov	[temp_counter],1
605
;--------------------------------------
565
;--------------------------------------
606
.type_folder:
566
.type_folder:
607
	xor	eax,eax
567
	xor	eax,eax
608
;--------------------------------------
568
;--------------------------------------
609
.start:
569
.start:
610
	pusha
570
	pusha
611
	mov	eax,edx
571
	mov	eax,edx
612
	cmp	[temp_counter],1
572
	cmp	[temp_counter],1
613
	je	@f
573
	je	@f
614
 
574
 
615
	sub	eax,[left_folder_data]
575
	sub	eax,[left_folder_data]
616
	sub	eax,32+40
576
	sub	eax,32+40
617
	xor	edx,edx
577
	xor	edx,edx
618
	mov	ebx,304
578
	mov	ebx,304
619
	div	ebx
579
	div	ebx
620
	cmp	eax,[left_folder_block]
580
	cmp	eax,[left_folder_block]
621
	je	.end_1
581
	je	.end_1
622
 
582
 
623
	jmp	.continue_1
583
	jmp	.continue_1
624
;--------------------------------------
584
;--------------------------------------
625
@@:
585
@@:
626
	sub	eax,[right_folder_data]
586
	sub	eax,[right_folder_data]
627
	sub	eax,32+40
587
	sub	eax,32+40
628
	xor	edx,edx
588
	xor	edx,edx
629
	mov	ebx,304
589
	mov	ebx,304
630
	div	ebx
590
	div	ebx
631
	cmp	eax,[right_folder_block]
591
	cmp	eax,[right_folder_block]
632
	je	.end_1
592
	je	.end_1
633
;--------------------------------------
593
;--------------------------------------
634
.continue_1:
594
.continue_1:
635
	popa
595
	popa
636
	cmp	eax,[max_panel_line]	;  20
596
	cmp	eax,[max_panel_line]	;  20
637
	je	.end_2
597
	je	.end_2
638
 
598
 
639
	mov	[marked_file],0
599
	mov	[marked_file],0
640
	cmp	[edx+299-40],byte 0
600
	cmp	[edx+299-40],byte 0
641
	je	@f
601
	je	@f
642
 
602
 
643
	mov	[marked_file],1
603
	mov	[marked_file],1
644
;--------------------------------------
604
;--------------------------------------
645
@@:
605
@@:
646
	call	clear_line
606
	call	clear_line
647
	call	draw_type_size_date
607
	call	draw_type_size_date
648
	call	draw_icon
608
	call	draw_icon
649
	push	eax
609
	push	eax
650
	xor	eax,eax
610
	xor	eax,eax
651
	mov	ax,[left_panel_x.size_x]
611
	mov	ax,[left_panel_x.size_x]
652
	push	ebx edx
612
	push	ebx edx
653
	mov	ebx,6
613
	mov	ebx,6
654
	xor	edx,edx
614
	xor	edx,edx
655
	div	ebx
615
	div	ebx
656
	pop	edx ebx
616
	pop	edx ebx
657
	sub	eax,23+2+2
617
	sub	eax,23+2+2
658
	mov	esi,[file_name_length]
618
	mov	esi,[file_name_length]
659
	mov	[temp_counter_1],0
619
	mov	[temp_counter_1],0
660
	cmp	esi,eax
620
	cmp	esi,eax
661
	jbe	@f
621
	jbe	@f
662
 
622
 
663
	mov	esi,eax
623
	mov	esi,eax
664
	mov	[temp_counter_1],1
624
	mov	[temp_counter_1],1
665
;--------------------------------------
625
;--------------------------------------
666
@@:
626
@@:
667
	mov	ecx,0
627
	mov	ecx,0
668
	cmp	[marked_file],byte 0
628
	cmp	[marked_file],byte 0
669
	je	@f
629
	je	@f
670
 
630
 
671
	mov	ecx,0xff0000
631
	mov	ecx,0xff0000
672
;--------------------------------------
632
;--------------------------------------
673
@@:
633
@@:
674
	mcall	4
634
	mcall	4
675
	cmp	[temp_counter_1],0
635
	cmp	[temp_counter_1],0
676
	je	.continue
636
	je	.continue
677
 
637
 
678
	mov	eax,esi ;[file_name_length]
638
	mov	eax,esi ;[file_name_length]
679
	imul	eax,6
639
	imul	eax,6
680
	shl	eax,16
640
	shl	eax,16
681
	push	ebx edx
641
	push	ebx edx
682
	add	ebx,eax
642
	add	ebx,eax
683
	mcall	4,,0xff0000,truncated_filename_char,2
643
	mcall	4,,0xff0000,truncated_filename_char,2
684
	add	ebx,1 shl 16
644
	add	ebx,1 shl 16
685
	mcall
645
	mcall
686
	pop	edx ebx
646
	pop	edx ebx
687
;--------------------------------------
647
;--------------------------------------
688
.continue:
648
.continue:
689
	add	ebx,10
649
	add	ebx,10
690
	add	edx,304 ;10
650
	add	edx,304 ;10
691
	pop	eax
651
	pop	eax
692
	inc	eax
652
	inc	eax
693
	jmp	.start
653
	jmp	.start
694
;--------------------------------------
654
;--------------------------------------
695
.end_1:
655
.end_1:
696
	popa
656
	popa
697
;--------------------------------------
657
;--------------------------------------
698
.end_2:    
658
.end_2:    
699
	mov	ax,[left_panel_y.start_y]
659
	mov	ax,[left_panel_y.start_y]
700
	add	ax,[left_panel_y.size_y]
660
	add	ax,[left_panel_y.size_y]
701
	mov	cx,bx
661
	mov	cx,bx
702
	dec	cx
662
	dec	cx
703
	rol	ecx,16
663
	rol	ecx,16
704
	mov	cx,ax
664
	mov	cx,ax
705
	mov	eax,ecx
665
	mov	eax,ecx
706
	shr	eax,16
666
	shr	eax,16
707
	sub	cx,ax
667
	sub	cx,ax
708
	cmp	cx,0
668
	cmp	cx,0
709
	jbe	@f
669
	jbe	@f
710
 
670
 
711
	mov	bx,[left_panel_x.size_x]
671
	mov	bx,[left_panel_x.size_x]
712
	sub	ebx,12 shl 16
672
	sub	ebx,12 shl 16
713
	mcall	13,,,0xffffff
673
	mcall	13,,,0xffffff
714
;--------------------------------------
674
;--------------------------------------
715
@@:
675
@@:
716
.end:
676
.end:
717
	cmp	[drawing_panel_folder],1
677
	cmp	[drawing_panel_folder],1
718
	jne	@f
678
	jne	@f
719
 
679
 
720
	call	draw_scroll_bar_left
680
	call	draw_scroll_bar_left
721
	ret
681
	ret
722
;--------------------------------------
682
;--------------------------------------
723
@@:
683
@@:
724
	call	draw_scroll_bar_right
684
	call	draw_scroll_bar_right
725
	ret
685
	ret
726
;------------------------------------------------------------------------------
686
;------------------------------------------------------------------------------
727
clear_line:
687
clear_line:
728
	cmp	[not_clear_lines],0
688
	cmp	[not_clear_lines],0
729
	jne	.end_1
689
	jne	.end_1
730
 
690
 
731
	pusha
691
	pusha
732
	shl	ebx,16
692
	shl	ebx,16
733
	shr	ebx,16
693
	shr	ebx,16
734
	dec	ebx
694
	dec	ebx
735
	cmp	[drawing_panel_folder],1
695
	cmp	[drawing_panel_folder],1
736
	jne	.right
696
	jne	.right
737
 
697
 
738
	cmp	[select_panel_counter],0
698
	cmp	[select_panel_counter],0
739
	jne	.continue
699
	jne	.continue
740
 
700
 
741
	mov	ax,[left_start_draw_cursor_line]
701
	mov	ax,[left_start_draw_cursor_line]
742
	add	ax,[left_panel_y.start_y]
702
	add	ax,[left_panel_y.start_y]
743
	cmp	bx,ax
703
	cmp	bx,ax
744
	je	.end
704
	je	.end
745
 
705
 
746
	jmp	.continue
706
	jmp	.continue
747
;--------------------------------------
707
;--------------------------------------
748
.right:
708
.right:
749
	cmp	[select_panel_counter],0
709
	cmp	[select_panel_counter],0
750
	je	.continue
710
	je	.continue
751
 
711
 
752
	mov	ax,[right_start_draw_cursor_line]
712
	mov	ax,[right_start_draw_cursor_line]
753
	add	ax,[right_panel_y.start_y]
713
	add	ax,[right_panel_y.start_y]
754
	cmp	bx,ax
714
	cmp	bx,ax
755
	je	.end
715
	je	.end
756
;--------------------------------------
716
;--------------------------------------
757
.continue:
717
.continue:
758
	mov	ebx,[esp+16]
718
	mov	ebx,[esp+16]
759
	mov	cx,bx
719
	mov	cx,bx
760
	dec	cx
720
	dec	cx
761
	rol	ecx,16
721
	rol	ecx,16
762
	mov	cx,10
722
	mov	cx,10
763
	mov	bx,[left_panel_x.size_x]
723
	mov	bx,[left_panel_x.size_x]
764
	cmp	[drawing_panel_folder],1
724
	cmp	[drawing_panel_folder],1
765
	je	@f
725
	je	@f
766
 
726
 
767
	dec	ebx
727
	dec	ebx
768
;--------------------------------------
728
;--------------------------------------
769
@@:
729
@@:
770
	sub	ebx,12 shl 16+15
730
	sub	ebx,12 shl 16+15
771
	mcall	13,,,0xffffff
731
	mcall	13,,,0xffffff
772
;--------------------------------------
732
;--------------------------------------
773
.end:
733
.end:
774
	popa
734
	popa
775
;--------------------------------------
735
;--------------------------------------
776
.end_1:
736
.end_1:
777
	ret
737
	ret
778
;------------------------------------------------------------------------------
738
;------------------------------------------------------------------------------
779
draw_left_panel:
739
draw_left_panel:
780
	call	clear_left_panel
740
	call	clear_left_panel
781
	call	calc_max_panel_line
741
	call	calc_max_panel_line
782
	call	draw_left_panel_selection
742
	call	draw_left_panel_selection
783
	mov	[drawing_panel_folder],1
743
	mov	[drawing_panel_folder],1
784
	call	draw_folder_data
744
	call	draw_folder_data
785
	call	draw_left_panel_patch
745
	call	draw_left_panel_patch
786
	ret
746
	ret
787
;------------------------------------------------------------------------------
747
;------------------------------------------------------------------------------
788
draw_right_panel:
748
draw_right_panel:
789
	call	clear_right_panel
749
	call	clear_right_panel
790
	call	calc_max_panel_line
750
	call	calc_max_panel_line
791
	call	draw_right_panel_selection
751
	call	draw_right_panel_selection
792
	mov	[drawing_panel_folder],2
752
	mov	[drawing_panel_folder],2
793
	call	draw_folder_data
753
	call	draw_folder_data
794
	call	draw_right_panel_patch
754
	call	draw_right_panel_patch
795
	ret
755
	ret
796
;------------------------------------------------------------------------------
756
;------------------------------------------------------------------------------
797
draw_left_panel_patch:
757
draw_left_panel_patch:
798
	cmp	[select_panel_counter],0
758
	cmp	[select_panel_counter],0
799
	jne	.end
759
	jne	.end
800
 
760
 
801
	mov	edx,read_folder_name	   ;read_folder.name
761
	mov	edx,read_folder_name	   ;read_folder.name
802
;--------------------------------------
762
;--------------------------------------
803
.1:
763
.1:
804
	call	clear_patch_area
764
	call	clear_patch_area
805
	mov	ebx,[window_high]
765
	mov	ebx,[window_high]
806
	sub	ebx,33
766
	sub	ebx,33
807
	add	ebx,8 shl 16
767
	add	ebx,8 shl 16
808
	mcall	4,,0x80000000  ; ,read_folder.name
768
	mcall	4,,0x80000000  ; ,read_folder.name
809
;--------------------------------------
769
;--------------------------------------
810
.end:
770
.end:
811
	ret
771
	ret
812
;------------------------------------------------------------------------------
772
;------------------------------------------------------------------------------
813
draw_right_panel_patch:
773
draw_right_panel_patch:
814
	cmp	[select_panel_counter],1
774
	cmp	[select_panel_counter],1
815
	jne	draw_left_panel_patch.end
775
	jne	draw_left_panel_patch.end
816
 
776
 
817
	mov	edx,read_folder_1_name    ;read_folder_1.name
777
	mov	edx,read_folder_1_name    ;read_folder_1.name
818
	jmp	draw_left_panel_patch.1
778
	jmp	draw_left_panel_patch.1
819
;------------------------------------------------------------------------------
779
;------------------------------------------------------------------------------
820
clear_patch_area:
780
clear_patch_area:
821
	push	edx
781
	push	edx
822
	mov	ebx,[window_width]
782
	mov	ebx,[window_width]
823
	sub	ebx,9
783
	sub	ebx,9
824
	add	ebx,5 shl 16
784
	add	ebx,5 shl 16
825
	mov	ecx,[window_high]
785
	mov	ecx,[window_high]
826
	sub	ecx,35
786
	sub	ecx,35
827
	shl	ecx,16
787
	shl	ecx,16
828
	mov	cx,12
788
	mov	cx,12
829
	mcall	13,,,0xffffcc
789
	mcall	13,,,0xffffcc
830
	pop	edx
790
	pop	edx
831
	ret
791
	ret
832
;------------------------------------------------------------------------------
792
;------------------------------------------------------------------------------
833
draw_left_panel_selection:
793
draw_left_panel_selection:
834
	cmp	[select_panel_counter],0
794
	cmp	[select_panel_counter],0
835
	jne	.end
795
	jne	.end
836
	
796
	
837
	mov	eax,[left_folder_block]
797
	mov	eax,[left_folder_block]
838
	sub	eax,[left_start_draw_line]
798
	sub	eax,[left_start_draw_line]
839
	mov	edx,left_start_draw_cursor_line
799
	mov	edx,left_start_draw_cursor_line
840
	mov	cx,[edx]
800
	mov	cx,[edx]
841
	call	for_all_panel_selection
801
	call	for_all_panel_selection
842
	mov	eax,[left_folder_block]
802
	mov	eax,[left_folder_block]
843
	dec	eax
803
	dec	eax
844
	imul	eax,10
804
	imul	eax,10
845
	cmp	ax,cx
805
	cmp	ax,cx
846
	jae	 @f
806
	jae	 @f
847
 
807
 
848
	mov	cx,ax
808
	mov	cx,ax
849
;--------------------------------------
809
;--------------------------------------
850
@@:
810
@@:
851
	mov	[edx],cx
811
	mov	[edx],cx
852
	mov	ebx,[left_panel_x]
812
	mov	ebx,[left_panel_x]
853
	add	cx,[left_panel_y.start_y]
813
	add	cx,[left_panel_y.start_y]
854
;--------------------------------------
814
;--------------------------------------
855
.1:
815
.1:
856
	shl	ecx,16
816
	shl	ecx,16
857
	mov	cx,10
817
	mov	cx,10
858
	sub	ebx,15
818
	sub	ebx,15
859
	mcall	13,,,0xbbddff
819
	mcall	13,,,0xbbddff
860
;--------------------------------------
820
;--------------------------------------
861
.end:
821
.end:
862
	ret
822
	ret
863
;------------------------------------------------------------------------------
823
;------------------------------------------------------------------------------
864
draw_right_panel_selection:
824
draw_right_panel_selection:
865
	cmp	[select_panel_counter],1
825
	cmp	[select_panel_counter],1
866
	jne	draw_left_panel_selection.end
826
	jne	draw_left_panel_selection.end
867
 
827
 
868
	mov	eax,[right_folder_block]
828
	mov	eax,[right_folder_block]
869
	sub	eax,[right_start_draw_line]
829
	sub	eax,[right_start_draw_line]
870
	mov	edx,right_start_draw_cursor_line
830
	mov	edx,right_start_draw_cursor_line
871
	mov	cx,[edx]
831
	mov	cx,[edx]
872
	call	for_all_panel_selection
832
	call	for_all_panel_selection
873
	mov	eax,[right_folder_block]
833
	mov	eax,[right_folder_block]
874
	dec	eax
834
	dec	eax
875
	imul	eax,10
835
	imul	eax,10
876
	cmp	ax,cx
836
	cmp	ax,cx
877
	jae	 @f
837
	jae	 @f
878
 
838
 
879
	mov	cx,ax
839
	mov	cx,ax
880
;--------------------------------------
840
;--------------------------------------
881
@@:
841
@@:
882
	mov	[edx],cx
842
	mov	[edx],cx
883
	mov	ebx,[right_panel_x]
843
	mov	ebx,[right_panel_x]
884
	add	cx,[right_panel_y.start_y]
844
	add	cx,[right_panel_y.start_y]
885
	jmp	draw_left_panel_selection.1
845
	jmp	draw_left_panel_selection.1
886
;------------------------------------------------------------------------------
846
;------------------------------------------------------------------------------
887
for_all_panel_selection:
847
for_all_panel_selection:
888
	imul	eax,10
848
	imul	eax,10
889
	cmp	ax,cx
849
	cmp	ax,cx
890
	jae	@f
850
	jae	@f
891
 
851
 
892
	mov	cx,ax
852
	mov	cx,ax
893
;--------------------------------------
853
;--------------------------------------
894
@@:
854
@@:
895
	mov	eax,[max_panel_line]
855
	mov	eax,[max_panel_line]
896
	dec	eax
856
	dec	eax
897
	imul	eax,10
857
	imul	eax,10
898
	cmp	ax,cx
858
	cmp	ax,cx
899
	jae	@f
859
	jae	@f
900
 
860
 
901
	mov	cx,ax
861
	mov	cx,ax
902
;--------------------------------------
862
;--------------------------------------
903
@@:
863
@@:
904
	ret
864
	ret
905
;------------------------------------------------------------------------------
865
;------------------------------------------------------------------------------
906
clear_left_panel:
866
clear_left_panel:
907
	mov	ebx,7 shl 16
867
	mov	ebx,7 shl 16
908
	add	ebx,[window_width]
868
	add	ebx,[window_width]
909
	shr	bx,1
869
	shr	bx,1
910
	sub	ebx,6+1
870
	sub	ebx,6+1
911
	mov	[left_panel_x],ebx
871
	mov	[left_panel_x],ebx
912
	call	calculate_panel_1
872
	call	calculate_panel_1
913
	mov	[left_panel_y],ecx
873
	mov	[left_panel_y],ecx
914
	xor	eax,eax
874
	xor	eax,eax
915
	mov	ax,cx
875
	mov	ax,cx
916
	xor	edx,edx
876
	xor	edx,edx
917
	mov	ebx,10
877
	mov	ebx,10
918
	div	ebx
878
	div	ebx
919
; óìíîæåíèå íà 10
879
; óìíîæåíèå íà 10
920
	shl	eax,1      ; óìíîæåíèå íà 2
880
	shl	eax,1      ; óìíîæåíèå íà 2
921
	lea	eax,[eax+eax*4] ; óìíîæåíèå íà 5
881
	lea	eax,[eax+eax*4] ; óìíîæåíèå íà 5
922
	mov	[left_panel_y_correct_size_y],ax
882
	mov	[left_panel_y_correct_size_y],ax
923
	ret
883
	ret
924
;------------------------------------------------------------------------------
884
;------------------------------------------------------------------------------
925
calculate_panel_1:
885
calculate_panel_1:
926
	mov	ecx,[skin_high]
886
	mov	ecx,[skin_high]
927
	add	ecx,70
887
	add	ecx,70
928
	shl	ecx,16
888
	shl	ecx,16
929
	add	ecx,[window_high]
889
	add	ecx,[window_high]
930
	sub	ecx,129
890
	sub	ecx,129
931
	ret
891
	ret
932
;------------------------------------------------------------------------------
892
;------------------------------------------------------------------------------
933
clear_right_panel:
893
clear_right_panel:
934
	mov	ebx,[window_width]
894
	mov	ebx,[window_width]
935
	shr	ebx,1
895
	shr	ebx,1
936
	add	ebx,3
896
	add	ebx,3
937
	shl	ebx,16
897
	shl	ebx,16
938
	add	ebx,[window_width]
898
	add	ebx,[window_width]
939
	shr	bx,1
899
	shr	bx,1
940
	sub	bx,2+6
900
	sub	bx,2+6
941
	mov	[right_panel_x],ebx
901
	mov	[right_panel_x],ebx
942
	call	calculate_panel_1
902
	call	calculate_panel_1
943
	mov	[right_panel_y],ecx
903
	mov	[right_panel_y],ecx
944
	xor	eax,eax
904
	xor	eax,eax
945
	mov	ax,cx
905
	mov	ax,cx
946
	xor	edx,edx
906
	xor	edx,edx
947
	mov	ebx,10
907
	mov	ebx,10
948
	div	ebx
908
	div	ebx
949
; óìíîæåíèå íà 10
909
; óìíîæåíèå íà 10
950
	shl	eax,1      ; óìíîæåíèå íà 2
910
	shl	eax,1      ; óìíîæåíèå íà 2
951
	lea	eax,[eax+eax*4] ; óìíîæåíèå íà 5
911
	lea	eax,[eax+eax*4] ; óìíîæåíèå íà 5
952
	mov	[right_panel_y_correct_size_y],ax
912
	mov	[right_panel_y_correct_size_y],ax
953
	ret
913
	ret
954
;------------------------------------------------------------------------------
914
;------------------------------------------------------------------------------
955
erase_fbutton:
915
erase_fbutton:
956
	mov	edx,0x80000065
916
	mov	edx,0x80000065
957
	mov	eax,8
917
	mov	eax,8
958
	mov	ebp,12
918
	mov	ebp,12
959
;--------------------------------------
919
;--------------------------------------
960
.start:
920
.start:
961
	mcall
921
	mcall
962
	dec	ebp
922
	dec	ebp
963
	jnz	.start
923
	jnz	.start
964
 
924
 
965
	ret
925
	ret
966
;------------------------------------------------------------------------------
926
;------------------------------------------------------------------------------
967
draw_fbutton:
927
draw_fbutton:
968
	test	[window_status],100b	; window is rolled up
928
	test	[window_status],100b	; window is rolled up
969
	jnz	.exit
929
	jnz	.exit
970
 
930
 
971
	test	[window_status],10b	; window is minimized to panel
931
	test	[window_status],10b	; window is minimized to panel
972
	jnz	.exit
932
	jnz	.exit
973
 
933
 
974
	mov	ecx,[window_high]
934
	mov	ecx,[window_high]
975
	sub	ecx,20
935
	sub	ecx,20
976
	shl	ecx,16
936
	shl	ecx,16
977
	add	ecx,15
937
	add	ecx,15
978
	mov	eax,[window_width]
938
	mov	eax,[window_width]
979
	mov	ebx,12
939
	mov	ebx,12
980
	xor	edx,edx
940
	xor	edx,edx
981
	div	ebx
941
	div	ebx
982
	mov	[fbutton_width],eax
942
	mov	[fbutton_width],eax
983
	mov	ebx,5 shl 16
943
	mov	ebx,5 shl 16
984
	add	ebx,eax
944
	add	ebx,eax
985
	sub	ebx,2
945
	sub	ebx,2
986
	mov	esi,0xaa00
946
	mov	esi,0xaa00
987
	mov	edx,101
947
	mov	edx,101
988
	mov	eax,8
948
	mov	eax,8
989
	mov	ebp,12
949
	mov	ebp,12
990
;--------------------------------------
950
;--------------------------------------
991
.start:
951
.start:
992
	cmp	ebp,1
952
	cmp	ebp,1
993
	jne	@f
953
	jne	@f
994
 
954
 
995
	mov	eax,ebx
955
	mov	eax,ebx
996
	shr	eax,16
956
	shr	eax,16
997
	mov	bx,ax
957
	mov	bx,ax
998
	mov	eax,[window_width]
958
	mov	eax,[window_width]
999
	sub	ax,bx
959
	sub	ax,bx
1000
	sub	ax,5
960
	sub	ax,5
1001
	mov	bx,ax
961
	mov	bx,ax
1002
	mov	eax,8
962
	mov	eax,8
1003
;--------------------------------------
963
;--------------------------------------
1004
@@:
964
@@:
1005
	mcall
965
	mcall
1006
	push	eax ebx edx
966
	push	eax ebx edx
1007
	mov	edx,0x6060ff
967
	mov	edx,0x6060ff
1008
	mov	bx,10
968
	mov	bx,10
1009
	cmp	ebp,4
969
	cmp	ebp,4
1010
	jae	@f
970
	jae	@f
1011
 
971
 
1012
	mov	bx,18
972
	mov	bx,18
1013
;--------------------------------------
973
;--------------------------------------
1014
@@:
974
@@:
1015
	mcall	13
975
	mcall	13
1016
	cmp	ebp,1
976
	cmp	ebp,1
1017
	je	@f
977
	je	@f
1018
 
978
 
1019
	ror	ebx,16
979
	ror	ebx,16
1020
	add	ebx,[fbutton_width]
980
	add	ebx,[fbutton_width]
1021
	dec	ebx
981
	dec	ebx
1022
	rol	ebx,16
982
	rol	ebx,16
1023
	mov	bx,1
983
	mov	bx,1
1024
	inc	ecx
984
	inc	ecx
1025
	mcall	,,,0xcccccc
985
	mcall	,,,0xcccccc
1026
	dec	ecx
986
	dec	ecx
1027
;--------------------------------------
987
;--------------------------------------
1028
@@:
988
@@:
1029
	pop	edx ebx eax
989
	pop	edx ebx eax
1030
	call	.rol_ror
990
	call	.rol_ror
1031
	inc	edx
991
	inc	edx
1032
	dec	ebp
992
	dec	ebp
1033
	jnz	.start
993
	jnz	.start
1034
 
994
 
1035
	call	draw_fbutton_name
995
	call	draw_fbutton_name
1036
	ret
996
	ret
1037
;--------------------------------------
997
;--------------------------------------
1038
.rol_ror:
998
.rol_ror:
1039
	rol	ebx,16
999
	rol	ebx,16
1040
	add	ebx,[fbutton_width]
1000
	add	ebx,[fbutton_width]
1041
	ror	ebx,16
1001
	ror	ebx,16
1042
;--------------------------------------
1002
;--------------------------------------
1043
.exit:
1003
.exit:
1044
	ret
1004
	ret
1045
;------------------------------------------------------------------------------
1005
;------------------------------------------------------------------------------
1046
draw_fbutton_name:
1006
draw_fbutton_name:
1047
	mov	ebx, 7 shl 16
1007
	mov	ebx, 7 shl 16
1048
	add	ebx,[window_high]
1008
	add	ebx,[window_high]
1049
	sub	ebx,19
1009
	sub	ebx,19
1050
	mov	eax,4
1010
	mov	eax,4
1051
	mov	ecx,0x90000000
1011
	mov	ecx,0x90000000
1052
	push	ebx
1012
	push	ebx
1053
	call	.type_1
1013
	call	.type_1
1054
	pop	ebx
1014
	pop	ebx
1055
	mov	ecx,0x90ffffff
1015
	mov	ecx,0x90ffffff
1056
	sub	ebx,1 shl 16 + 1
1016
	sub	ebx,1 shl 16 + 1
1057
;--------------------------------------
1017
;--------------------------------------
1058
.type_1:
1018
.type_1:
1059
	cmp	[shift_flag],1
1019
	cmp	[shift_flag],1
1060
	je	.type_shift
1020
	je	.type_shift
1061
 
1021
 
1062
	cmp	[ctrl_flag],1
1022
	cmp	[ctrl_flag],1
1063
	je	.type_ctrl
1023
	je	.type_ctrl
1064
 
1024
 
1065
	cmp	[alt_flag],1
1025
	cmp	[alt_flag],1
1066
	je	.type_alt
1026
	je	.type_alt
1067
;--------------------------------------
1027
;--------------------------------------
1068
.type:
1028
.type:
1069
	mov	edx,fbutton_name.f1
1029
	mov	edx,fbutton_name.f1
1070
	call	.type_all
1030
	call	.type_all
1071
	mov	edx,fbutton_name.f2
1031
	mov	edx,fbutton_name.f2
1072
	call	.type_all
1032
	call	.type_all
1073
	mov	edx,fbutton_name.f3
1033
	mov	edx,fbutton_name.f3
1074
	call	.type_all
1034
	call	.type_all
1075
	mov	edx,fbutton_name.f4
1035
	mov	edx,fbutton_name.f4
1076
	call	.type_all
1036
	call	.type_all
1077
	mov	edx,fbutton_name.f5
1037
	mov	edx,fbutton_name.f5
1078
	call	.type_all
1038
	call	.type_all
1079
	mov	edx,fbutton_name.f6
1039
	mov	edx,fbutton_name.f6
1080
	call	.type_all
1040
	call	.type_all
1081
	mov	edx,fbutton_name.f7
1041
	mov	edx,fbutton_name.f7
1082
	call	.type_all
1042
	call	.type_all
1083
	mov	edx,fbutton_name.f8
1043
	mov	edx,fbutton_name.f8
1084
	call	.type_all
1044
	call	.type_all
1085
	mov	edx,fbutton_name.f9
1045
	mov	edx,fbutton_name.f9
1086
	call	.type_all
1046
	call	.type_all
1087
	mov	edx,fbutton_name.f10
1047
	mov	edx,fbutton_name.f10
1088
	call	.type_all
1048
	call	.type_all
1089
	mov	edx,fbutton_name.f11
1049
	mov	edx,fbutton_name.f11
1090
	call	.type_all
1050
	call	.type_all
1091
	mov	edx,fbutton_name.f12
1051
	mov	edx,fbutton_name.f12
1092
	mcall
1052
	mcall
1093
	ret
1053
	ret
1094
;--------------------------------------
1054
;--------------------------------------
1095
.type_shift:
1055
.type_shift:
1096
	mov	edx,fbutton_name_shift.f1
1056
	mov	edx,fbutton_name_shift.f1
1097
	call	.type_all
1057
	call	.type_all
1098
	mov	edx,fbutton_name_shift.f2
1058
	mov	edx,fbutton_name_shift.f2
1099
	call	.type_all
1059
	call	.type_all
1100
	mov	edx,fbutton_name_shift.f3
1060
	mov	edx,fbutton_name_shift.f3
1101
	call	.type_all
1061
	call	.type_all
1102
	mov	edx,fbutton_name_shift.f4
1062
	mov	edx,fbutton_name_shift.f4
1103
	call	.type_all
1063
	call	.type_all
1104
	mov	edx,fbutton_name_shift.f5
1064
	mov	edx,fbutton_name_shift.f5
1105
	call	.type_all
1065
	call	.type_all
1106
	mov	edx,fbutton_name_shift.f6
1066
	mov	edx,fbutton_name_shift.f6
1107
	call	.type_all
1067
	call	.type_all
1108
	mov	edx,fbutton_name_shift.f7
1068
	mov	edx,fbutton_name_shift.f7
1109
	call	.type_all
1069
	call	.type_all
1110
	mov	edx,fbutton_name_shift.f8
1070
	mov	edx,fbutton_name_shift.f8
1111
	call	.type_all
1071
	call	.type_all
1112
	mov	edx,fbutton_name_shift.f9
1072
	mov	edx,fbutton_name_shift.f9
1113
	call	.type_all
1073
	call	.type_all
1114
	mov	edx,fbutton_name_shift.f10
1074
	mov	edx,fbutton_name_shift.f10
1115
	call	.type_all
1075
	call	.type_all
1116
	mov	edx,fbutton_name_shift.f11
1076
	mov	edx,fbutton_name_shift.f11
1117
	call	.type_all
1077
	call	.type_all
1118
	mov	edx,fbutton_name_shift.f12
1078
	mov	edx,fbutton_name_shift.f12
1119
	mcall
1079
	mcall
1120
	ret
1080
	ret
1121
;--------------------------------------
1081
;--------------------------------------
1122
.type_ctrl:
1082
.type_ctrl:
1123
	mov	edx,fbutton_name_ctrl.f1
1083
	mov	edx,fbutton_name_ctrl.f1
1124
	call	.type_all
1084
	call	.type_all
1125
	mov	edx,fbutton_name_ctrl.f2
1085
	mov	edx,fbutton_name_ctrl.f2
1126
	call	.type_all
1086
	call	.type_all
1127
	mov	edx,fbutton_name_ctrl.f3
1087
	mov	edx,fbutton_name_ctrl.f3
1128
	call	.type_all
1088
	call	.type_all
1129
	mov	edx,fbutton_name_ctrl.f4
1089
	mov	edx,fbutton_name_ctrl.f4
1130
	call	.type_all
1090
	call	.type_all
1131
	mov	edx,fbutton_name_ctrl.f5
1091
	mov	edx,fbutton_name_ctrl.f5
1132
	call	.type_all
1092
	call	.type_all
1133
	mov	edx,fbutton_name_ctrl.f6
1093
	mov	edx,fbutton_name_ctrl.f6
1134
	call	.type_all
1094
	call	.type_all
1135
	mov	edx,fbutton_name_ctrl.f7
1095
	mov	edx,fbutton_name_ctrl.f7
1136
	call	.type_all
1096
	call	.type_all
1137
	mov	edx,fbutton_name_ctrl.f8
1097
	mov	edx,fbutton_name_ctrl.f8
1138
	call	.type_all
1098
	call	.type_all
1139
	mov	edx,fbutton_name_ctrl.f9
1099
	mov	edx,fbutton_name_ctrl.f9
1140
	call	.type_all
1100
	call	.type_all
1141
	mov	edx,fbutton_name_ctrl.f10
1101
	mov	edx,fbutton_name_ctrl.f10
1142
	call	.type_all
1102
	call	.type_all
1143
	mov	edx,fbutton_name_ctrl.f11
1103
	mov	edx,fbutton_name_ctrl.f11
1144
	call	.type_all
1104
	call	.type_all
1145
	mov	edx,fbutton_name_ctrl.f12
1105
	mov	edx,fbutton_name_ctrl.f12
1146
	mcall
1106
	mcall
1147
	ret
1107
	ret
1148
;--------------------------------------
1108
;--------------------------------------
1149
.type_alt:
1109
.type_alt:
1150
	mov	edx,fbutton_name_alt.f1
1110
	mov	edx,fbutton_name_alt.f1
1151
	call	.type_all
1111
	call	.type_all
1152
	mov	edx,fbutton_name_alt.f2
1112
	mov	edx,fbutton_name_alt.f2
1153
	call	.type_all
1113
	call	.type_all
1154
	mov	edx,fbutton_name_alt.f3
1114
	mov	edx,fbutton_name_alt.f3
1155
	call	.type_all
1115
	call	.type_all
1156
	mov	edx,fbutton_name_alt.f4
1116
	mov	edx,fbutton_name_alt.f4
1157
	call	.type_all
1117
	call	.type_all
1158
	mov	edx,fbutton_name_alt.f5
1118
	mov	edx,fbutton_name_alt.f5
1159
	call	.type_all
1119
	call	.type_all
1160
	mov	edx,fbutton_name_alt.f6
1120
	mov	edx,fbutton_name_alt.f6
1161
	call	.type_all
1121
	call	.type_all
1162
	mov	edx,fbutton_name_alt.f7
1122
	mov	edx,fbutton_name_alt.f7
1163
	call	.type_all
1123
	call	.type_all
1164
	mov	edx,fbutton_name_alt.f8
1124
	mov	edx,fbutton_name_alt.f8
1165
	call	.type_all
1125
	call	.type_all
1166
	mov	edx,fbutton_name_alt.f9
1126
	mov	edx,fbutton_name_alt.f9
1167
	call	.type_all
1127
	call	.type_all
1168
	mov	edx,fbutton_name_alt.f10
1128
	mov	edx,fbutton_name_alt.f10
1169
	call	.type_all
1129
	call	.type_all
1170
	mov	edx,fbutton_name_alt.f11
1130
	mov	edx,fbutton_name_alt.f11
1171
	call	.type_all
1131
	call	.type_all
1172
	mov	edx,fbutton_name_alt.f12
1132
	mov	edx,fbutton_name_alt.f12
1173
;--------------------------------------
1133
;--------------------------------------
1174
.type_all:
1134
.type_all:
1175
	mcall
1135
	mcall
1176
	call	draw_fbutton.rol_ror
1136
	call	draw_fbutton.rol_ror
1177
	ret
1137
	ret
1178
;------------------------------------------------------------------------------
1138
;------------------------------------------------------------------------------
1179
>
1139
>