Subversion Repositories Kolibri OS

Rev

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

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