Subversion Repositories Kolibri OS

Rev

Rev 9726 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

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