Subversion Repositories Kolibri OS

Rev

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

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