Subversion Repositories Kolibri OS

Rev

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

Rev 993 Rev 2706
1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2
;                                              ;
2
;                                              ;
3
;   SYSTEM X-TREE BROWSER                      ;
3
;   SYSTEM X-TREE BROWSER                      ;
4
;                                              ;
4
;                                              ;
5
;   Author: Pavlushin Evgeni waptap@mail.ru    ;
5
;   Author: Pavlushin Evgeni waptap@mail.ru    ;
6
;                   site: www.deck4.narod.ru   ;
6
;                   site: www.deck4.narod.ru   ;
7
;                                              ;
7
;                                              ;
8
;   Compile with FASM for MenuetOS             ;
8
;   Compile with FASM for MenuetOS             ;
9
;                                              ;
9
;                                              ;
10
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
10
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
11
 
11
 
12
;Bug report +bug deleted  -bug not deleted
12
;Bug report +bug deleted  -bug not deleted
13
;show/fade del notwork+
13
;show/fade del notwork+
14
;64Ver Run file from HD bug deleted.
14
;64Ver Run file from HD bug deleted.
15
;65Ver The bad scroll realization
15
;65Ver The bad scroll realization
16
;66Ver The good scroll realization, url line anti-flick
16
;66Ver The good scroll realization, url line anti-flick
17
;67Ver Url line monolith procedure
17
;67Ver Url line monolith procedure
18
;68Ver Mini icon on left of file name
18
;68Ver Mini icon on left of file name
19
;69Ver Getimg proc size minus 900 bytes
19
;69Ver Getimg proc size minus 900 bytes
20
;70Ver Del data area ramsize minus 140000 bytes
20
;70Ver Del data area ramsize minus 140000 bytes
21
;72Ver Quick sort, ramsize minus 200000 bytes
21
;72Ver Quick sort, ramsize minus 200000 bytes
22
;73Ver Url flick and out bugs delete
22
;73Ver Url flick and out bugs delete
23
;74Ver scroll bug deleted
23
;74Ver scroll bug deleted
24
;75Ver hd partition fast change button. Add bmp,txt,exec,asm and inc icons.
24
;75Ver hd partition fast change button. Add bmp,txt,exec,asm and inc icons.
25
; sort type in headmenu bug del
25
; sort type in headmenu bug del
26
;78Ver directory extension bug fix by Asko Vuori
26
;78Ver directory extension bug fix by Asko Vuori
27
;79Ver Asko Vuori volume label add and "put in command line" bug fix
27
;79Ver Asko Vuori volume label add and "put in command line" bug fix
28
;80Ver prompt edit fatal bug deleted, antiflick when move list up/down
28
;80Ver prompt edit fatal bug deleted, antiflick when move list up/down
29
;81Ver Save Dialog bug deleted
29
;81Ver Save Dialog bug deleted
30
;82Ver Rewritten to function 70. Corrected work with scrollbar.
30
;82Ver Rewritten to function 70. Corrected work with scrollbar.
31
;83Ver CD-ROM support
31
;83Ver CD-ROM support
32
;84Ver URL line editor corrected
32
;84Ver URL line editor corrected
33
;1560000 bytes memory!
33
;1560000 bytes memory!
34
 
34
 
35
;******************************************************************************
35
;******************************************************************************
36
  use32
36
  use32
37
  org	   0x0
37
  org	   0x0
38
  db	 'MENUET01'   ; 8 byte id
38
  db	 'MENUET01'   ; 8 byte id
39
  dd	 0x01		; header version
39
  dd	 0x01		; header version
40
  dd	 START	      ; program start
40
  dd	 START	      ; program start
41
  dd	 I_END	      ; program image size
41
  dd	 I_END	      ; program image size
42
  dd	 RAM_END      ; memory
42
  dd	 RAM_END      ; memory
43
  dd	 RAM_END      ; stack
43
  dd	 RAM_END      ; stack
44
  dd	 param_area ,0x0   ; param,icon
44
  dd	 param_area ,0x0   ; param,icon
45
;  dd 0,0
45
;  dd 0,0
46
 
46
 
47
;******************************************************************************
47
;******************************************************************************
48
include 'macros.inc'
48
include '../../../macros.inc' ;
49
include 'ascl.inc'
49
include 'ascl.inc'
50
include 'ascgl.inc'
50
include 'ascgl.inc'
51
 
51
 
52
START:		    ; start of execution
52
START:		    ; start of execution
53
; //// Willow
53
; //// Willow
54
;    mov eax,58
54
;    mov eax,58
55
;    mov ebx,MRUfile
55
;    mov ebx,MRUfile
56
;    mcall
56
;    mcall
57
; //// Willow
57
; //// Willow
58
    mcall 18,11,1,table_area
58
    mcall 18,11,1,table_area
59
    cmp [edx+2],byte 0
59
    cmp [edx+2],byte 0
60
    je	  no_hdpartition_on_hd0
60
    je	  no_hdpartition_on_hd0
61
    mov [hdimg1], aHD0
61
    mov [hdimg1], aHD0
62
 no_hdpartition_on_hd0:
62
 no_hdpartition_on_hd0:
63
    cmp [edx+3],byte 0
63
    cmp [edx+3],byte 0
64
    je	  no_hdpartition_on_hd1
64
    je	  no_hdpartition_on_hd1
65
    mov [hdimg2], aHD1
65
    mov [hdimg2], aHD1
66
 no_hdpartition_on_hd1:
66
 no_hdpartition_on_hd1:
67
    cmp [edx+4],byte 0
67
    cmp [edx+4],byte 0
68
    je	  no_hdpartition_on_hd2
68
    je	  no_hdpartition_on_hd2
69
    mov [hdimg3], aHD2
69
    mov [hdimg3], aHD2
70
 no_hdpartition_on_hd2:
70
 no_hdpartition_on_hd2:
71
    cmp [edx+5],byte 0
71
    cmp [edx+5],byte 0
72
    je	  no_hdpartition_on_hd3
72
    je	  no_hdpartition_on_hd3
73
    mov [hdimg4], aHD3
73
    mov [hdimg4], aHD3
74
 no_hdpartition_on_hd3:
74
 no_hdpartition_on_hd3:
75
	test	byte [edx+1], 80h
75
	test	byte [edx+1], 80h
76
	jz	@f
76
	jz	@f
77
	mov	[hdimg1], aCD0
77
	mov	[hdimg1], aCD0
78
	mov	[hdimg1+4], 'CD-R'
78
	mov	[hdimg1+4], 'CD-R'
79
	mov	[hdimg1+8], 'OM  '
79
	mov	[hdimg1+8], 'OM  '
80
@@:
80
@@:
81
	test	byte [edx+1], 20h
81
	test	byte [edx+1], 20h
82
	jz	@f
82
	jz	@f
83
	mov	[hdimg2], aCD1
83
	mov	[hdimg2], aCD1
84
	mov	[hdimg2+4], 'CD-R'
84
	mov	[hdimg2+4], 'CD-R'
85
	mov	[hdimg2+8], 'OM  '
85
	mov	[hdimg2+8], 'OM  '
86
@@:
86
@@:
87
	test	byte [edx+1], 8
87
	test	byte [edx+1], 8
88
	jz	@f
88
	jz	@f
89
	mov	[hdimg3], aCD2
89
	mov	[hdimg3], aCD2
90
	mov	[hdimg3+4], 'CD-R'
90
	mov	[hdimg3+4], 'CD-R'
91
	mov	[hdimg3+8], 'OM  '
91
	mov	[hdimg3+8], 'OM  '
92
@@:
92
@@:
93
	test	byte [edx+1], 2
93
	test	byte [edx+1], 2
94
	jz	@f
94
	jz	@f
95
	mov	[hdimg4], aCD3
95
	mov	[hdimg4], aCD3
96
	mov	[hdimg4+4], 'CD-R'
96
	mov	[hdimg4+4], 'CD-R'
97
	mov	[hdimg4+8], 'OM  '
97
	mov	[hdimg4+8], 'OM  '
98
@@:
98
@@:
99
 
99
 
100
    mov eax,40
100
    mov eax,40
101
    mov ebx,0100111b
101
    mov ebx,0100111b
102
    mcall
102
    mcall
103
 
103
 
104
    cmp byte [param_area],0 ;test parameters line
104
    cmp byte [param_area],0 ;test parameters line
105
    jne no_brow     ;it's dialog
105
    jne no_brow     ;it's dialog
106
    mov [browser], 1   ;it's browser
106
    mov [browser], 1   ;it's browser
107
    jmp no_dlg
107
    jmp no_dlg
108
no_brow:
108
no_brow:
109
 
109
 
110
    mov al,byte [param_area+5]
110
    mov al,byte [param_area+5]
111
    mov [dlg_type],al
111
    mov [dlg_type],al
112
 
112
 
113
    mov eax,9
113
    mov eax,9
114
    mov ebx,procinfo
114
    mov ebx,procinfo
115
    mov ecx,-1
115
    mov ecx,-1
116
    mcall
116
    mcall
117
 
117
 
118
    mov eax,dword [procinfo+30]
118
    mov eax,dword [procinfo+30]
119
    mov edi,MYPID+4-1
119
    mov edi,MYPID+4-1
120
    mov ecx,4
120
    mov ecx,4
121
    mov ebx,10
121
    mov ebx,10
122
    cld
122
    cld
123
 
123
 
124
new_d:
124
new_d:
125
    xor edx,edx
125
    xor edx,edx
126
    div ebx
126
    div ebx
127
    add dl,'0'
127
    add dl,'0'
128
    mov [edi],dl
128
    mov [edi],dl
129
    dec edi
129
    dec edi
130
    loop new_d
130
    loop new_d
131
 
131
 
132
    movzx eax,byte [param_area]
132
    movzx eax,byte [param_area]
133
    sub eax,48
133
    sub eax,48
134
    imul eax,10
134
    imul eax,10
135
    movzx ebx,byte [param_area+1]
135
    movzx ebx,byte [param_area+1]
136
    add eax,ebx
136
    add eax,ebx
137
    sub eax,48
137
    sub eax,48
138
    imul eax,10
138
    imul eax,10
139
    movzx ebx,byte [param_area+2]
139
    movzx ebx,byte [param_area+2]
140
    add eax,ebx
140
    add eax,ebx
141
    sub eax,48
141
    sub eax,48
142
    imul eax,10
142
    imul eax,10
143
    movzx ebx,byte [param_area+3]
143
    movzx ebx,byte [param_area+3]
144
    add eax,ebx
144
    add eax,ebx
145
    sub eax,48
145
    sub eax,48
146
 
146
 
147
    mov ecx,eax ;pid to ecx
147
    mov ecx,eax ;pid to ecx
148
    mov eax,60
148
    mov eax,60
149
    mov ebx,2
149
    mov ebx,2
150
    mov edx,MYPID
150
    mov edx,MYPID
151
    mov esi,4
151
    mov esi,4
152
    mcall
152
    mcall
153
no_dlg:
153
no_dlg:
154
 
154
 
155
    giftoimg but_file,tempimg
155
    giftoimg but_file,tempimg
156
 
156
 
157
;************************
157
;************************
158
;      Get images
158
;      Get images
159
;************************
159
;************************
160
 
160
 
161
    mov eax,0  ;x
161
    mov eax,0  ;x
162
    mov ebx,0	    ;y
162
    mov ebx,0	    ;y
163
    mov esi,286     ;xs
163
    mov esi,286     ;xs
164
    mov edi,16		;ys
164
    mov edi,16		;ys
165
    mov ecx,tempimg ;src
165
    mov ecx,tempimg ;src
166
    mov edx,butimg   ;dest
166
    mov edx,butimg   ;dest
167
    call getimgproc
167
    call getimgproc
168
    mov eax,288
168
    mov eax,288
169
    mov esi,60
169
    mov esi,60
170
    mov edx,logoimg  ;dest
170
    mov edx,logoimg  ;dest
171
    call getimgproc
171
    call getimgproc
172
    mov eax,0  ;x
172
    mov eax,0  ;x
173
    mov ebx,16	       ;y
173
    mov ebx,16	       ;y
174
    mov esi,51	       ;xs
174
    mov esi,51	       ;xs
175
    mov edi,esi      ;ys
175
    mov edi,esi      ;ys
176
    mov edx,logoinfimg	     ;dest
176
    mov edx,logoinfimg	     ;dest
177
    call getimgproc
177
    call getimgproc
178
    mov eax,51	    ;x
178
    mov eax,51	    ;x
179
    mov esi,8	    ;xs
179
    mov esi,8	    ;xs
180
    mov edi,9	     ;ys
180
    mov edi,9	     ;ys
181
    mov edx,upsb   ;dest
181
    mov edx,upsb   ;dest
182
    call getimgproc
182
    call getimgproc
183
    mov eax,51+8  ;x
183
    mov eax,51+8  ;x
184
    mov edx,dnsb   ;dest
184
    mov edx,dnsb   ;dest
185
    call getimgproc
185
    call getimgproc
186
 
186
 
187
    mov eax,51+16  ;x
187
    mov eax,51+16  ;x
188
    mov ebx,16	       ;y
188
    mov ebx,16	       ;y
189
    mov esi,12	       ;xs
189
    mov esi,12	       ;xs
190
    mov edi,9	     ;ys
190
    mov edi,9	     ;ys
191
 
191
 
192
    mov ecx,tempimg ;src
192
    mov ecx,tempimg ;src
193
    mov edx,hdico   ;dest
193
    mov edx,hdico   ;dest
194
    mov ebp,10
194
    mov ebp,10
195
loogetimg:
195
loogetimg:
196
    call getimgproc
196
    call getimgproc
197
    add edx,9*12*3+8
197
    add edx,9*12*3+8
198
    add eax,12
198
    add eax,12
199
    dec ebp
199
    dec ebp
200
    jnz loogetimg
200
    jnz loogetimg
201
 
201
 
202
    call read_directory
202
    call read_directory
203
;    call convertation
203
;    call convertation
204
red:
204
red:
205
    call draw_window	    ; at first, draw the window
205
    call draw_window	    ; at first, draw the window
206
 
206
 
207
still:
207
still:
208
    mov eax,9
208
    mov eax,9
209
    mov ebx,procinfo
209
    mov ebx,procinfo
210
    mov ecx,-1
210
    mov ecx,-1
211
    mcall
211
    mcall
212
 
212
 
213
    wtevent red,key,button
213
    wtevent red,key,button
214
 
214
 
215
scrolltest:
215
scrolltest:
216
    mov eax,37
216
    mov eax,37
217
    mov ebx,2
217
    mov ebx,2
218
    mcall
218
    mcall
219
    dec eax
219
    dec eax
220
    jne still
220
    jne still
221
 
221
 
222
scrl:
222
scrl:
223
    mov eax,37
223
    mov eax,37
224
    mov ebx,1
224
    mov ebx,1
225
    mcall
225
    mcall
226
	movzx	ebx, ax 	; y
226
	movzx	ebx, ax 	; y
227
	shr	eax, 16 	; x
227
	shr	eax, 16 	; x
228
    mov ebp,eax
228
    mov ebp,eax
229
    sub ebp,[listx] ;[procinfo.box.width]
229
    sub ebp,[listx] ;[procinfo.box.width]
230
    sub ebp,[listxsize]
230
    sub ebp,[listxsize]
231
    add ebp,[scrollsize]
231
    add ebp,[scrollsize]
232
    cmp ebp,dword [scrollsize] ;8
232
    cmp ebp,dword [scrollsize] ;8
233
    jae menu_test ; still
233
    jae menu_test ; still
234
 
234
 
235
	lea	ebp, [ebx-scrollbutsize]
235
	lea	ebp, [ebx-scrollbutsize]
236
	sub	ebp, [listy]	; up scroll
236
	sub	ebp, [listy]	; up scroll
237
	jl	menu_test
237
	jl	menu_test
238
	mov	ecx, [listysize]
238
	mov	ecx, [listysize]
239
	sub	ecx, 2*scrollbutsize
239
	sub	ecx, 2*scrollbutsize
240
	mov	eax, [scroll_height]
240
	mov	eax, [scroll_height]
241
	cmp	ebp, ecx
241
	cmp	ebp, ecx
242
	jge	menu_test
242
	jge	menu_test
243
	sub	ecx, eax
243
	sub	ecx, eax
244
	shr	eax, 1
244
	shr	eax, 1
245
	sub	ebp, eax
245
	sub	ebp, eax
246
	jge	@f
246
	jge	@f
247
	xor	ebp, ebp
247
	xor	ebp, ebp
248
@@:
248
@@:
249
	cmp	ebp, ecx
249
	cmp	ebp, ecx
250
	jl	@f
250
	jl	@f
251
	mov	ebp, ecx
251
	mov	ebp, ecx
252
@@:
252
@@:
253
	xor	edx, edx
253
	xor	edx, edx
254
	mov	eax, [listysize]
254
	mov	eax, [listysize]
255
	sub	eax, 2
255
	sub	eax, 2
256
	mov	ebx, 10
256
	mov	ebx, 10
257
	div	ebx
257
	div	ebx
258
	mov	ebx, eax
258
	mov	ebx, eax
259
	cmp	ebx, [listsize]
259
	cmp	ebx, [listsize]
260
	jae	notusescrl
260
	jae	notusescrl
261
	mov	eax, [listsize]
261
	mov	eax, [listsize]
262
	sub	eax, ebx
262
	sub	eax, ebx
263
	mul	ebp
263
	mul	ebp
264
	div	ecx
264
	div	ecx
265
	cmp	eax, [filecursor]
265
	cmp	eax, [filecursor]
266
	jz	still
266
	jz	still
267
	mov	[filecursor], eax
267
	mov	[filecursor], eax
268
	jmp	usescrl
268
	jmp	usescrl
269
notusescrl:
269
notusescrl:
270
	cmp	[filecursor], 0
270
	cmp	[filecursor], 0
271
	jz	still
271
	jz	still
272
    mov [filecursor],0 ;ebp
272
    mov [filecursor],0 ;ebp
273
usescrl:
273
usescrl:
274
 
274
 
275
    mov [flick],1
275
    mov [flick],1
276
    jmp anti_flick ;red
276
    jmp anti_flick ;red
277
 
277
 
278
menu_test:
278
menu_test:
279
    cmp [pmenu_draw],1 ;if menu is show, update all
279
    cmp [pmenu_draw],1 ;if menu is show, update all
280
    jne still
280
    jne still
281
    mov [pmenu_draw],0
281
    mov [pmenu_draw],0
282
    jmp red	     ;update all window
282
    jmp red	     ;update all window
283
 
283
 
284
;this function not use in dialog when poup menu's is not used
284
;this function not use in dialog when poup menu's is not used
285
;in dialog's
285
;in dialog's
286
 
286
 
287
;===================
287
;===================
288
; Test keyboard
288
; Test keyboard
289
;===================
289
;===================
290
key:		  ; key
290
key:		  ; key
291
    mov  eax,2
291
    mov  eax,2
292
    mcall
292
    mcall
293
    cmp dword [focus],0
293
    cmp dword [focus],0
294
    jne con_edit
294
    jne con_edit
295
    cmp  ah,key_Up
295
    cmp  ah,key_Up
296
    jne  no_upk
296
    jne  no_upk
297
    mov  ebx,1
297
    mov  ebx,1
298
    jmp  up
298
    jmp  up
299
no_upk:
299
no_upk:
300
    cmp  ah,key_Down
300
    cmp  ah,key_Down
301
    jne  no_downk
301
    jne  no_downk
302
    mov  ebx,1
302
    mov  ebx,1
303
    jmp  down
303
    jmp  down
304
no_downk:
304
no_downk:
305
    cmp  ah,key_PgUp
305
    cmp  ah,key_PgUp
306
    jne  no_pgup
306
    jne  no_pgup
307
    mov  ebx,10
307
    mov  ebx,10
308
    jmp  up
308
    jmp  up
309
no_pgup:
309
no_pgup:
310
    cmp  ah,key_PgDown
310
    cmp  ah,key_PgDown
311
    jne  no_pgdown
311
    jne  no_pgdown
312
    mov  ebx,10
312
    mov  ebx,10
313
    jmp  down
313
    jmp  down
314
no_pgdown:
314
no_pgdown:
315
    cmp  ah,key_Enter
315
    cmp  ah,key_Enter
316
    je	 kfad
316
    je	 kfad
317
    cmp  ah,key_Bspace
317
    cmp  ah,key_Bspace
318
    je	     back
318
    je	     back
319
    cmp  ah,key_F2
319
    cmp  ah,key_F2
320
    je	     viewset
320
    je	     viewset
321
    cmp  ah,key_F3
321
    cmp  ah,key_F3
322
    je	     textopen
322
    je	     textopen
323
    cmp  ah,key_F5
323
    cmp  ah,key_F5
324
    je	     copy_to_clip
324
    je	     copy_to_clip
325
    cmp  ah,key_F6
325
    cmp  ah,key_F6
326
    je	     paste_from_clip
326
    je	     paste_from_clip
327
    cmp  ah,key_F11
327
    cmp  ah,key_F11
328
    je	     edit_prompt
328
    je	     edit_prompt
329
    cmp  ah,key_F12
329
    cmp  ah,key_F12
330
    je	     update
330
    je	     update
331
    jmp  still
331
    jmp  still
332
 
332
 
333
; test input string
333
; test input string
334
con_edit:
334
con_edit:
335
    cmp  ah,key_Enter
335
    cmp  ah,key_Enter
336
    jne  no_con_ent
336
    jne  no_con_ent
337
    not  [focus]
337
    not  [focus]
338
    jmp  savetest
338
    jmp  savetest
339
;    jmp  update
339
;    jmp  update
340
no_con_ent:
340
no_con_ent:
341
    cmp  ah,key_Left
341
    cmp  ah,key_Left
342
    jne  no_con_left
342
    jne  no_con_left
343
	cmp	[cursor], 0
343
	cmp	[cursor], 0
344
	jz	still
344
	jz	still
345
    dec  [cursor]
345
    dec  [cursor]
346
    mov  [flick],2
346
    mov  [flick],2
347
    jmp  anti_flick ;red
347
    jmp  anti_flick ;red
348
no_con_left:
348
no_con_left:
349
    cmp  ah,key_Right
349
    cmp  ah,key_Right
350
    jne  no_con_right
350
    jne  no_con_right
351
	mov	eax, [cursor]
351
	mov	eax, [cursor]
352
	cmp	byte [path+eax], 0
352
	cmp	byte [path+eax], 0
353
	jz	still
353
	jz	still
354
    inc  [cursor]
354
    inc  [cursor]
355
    mov  [flick],2
355
    mov  [flick],2
356
    jmp  anti_flick ;red
356
    jmp  anti_flick ;red
357
no_con_right:
357
no_con_right:
358
    cmp  ah,key_Bspace
358
    cmp  ah,key_Bspace
359
    jne  no_con_bspace
359
    jne  no_con_bspace
360
 
360
 
361
	mov	ebp, [cursor]
361
	mov	ebp, [cursor]
362
	test	ebp, ebp
362
	test	ebp, ebp
363
	jz	still
363
	jz	still
364
lobsp:
364
lobsp:
365
    mov  bl,byte [path+ebp]
365
    mov  bl,byte [path+ebp]
366
    mov  byte [path+ebp-1],bl
366
    mov  byte [path+ebp-1],bl
367
    inc  ebp
367
    inc  ebp
368
    cmp  ebp,1024
368
    cmp  ebp,1024
369
    jne  lobsp
369
    jne  lobsp
370
    dec  [cursor]
370
    dec  [cursor]
371
    mov  [flick],2
371
    mov  [flick],2
372
    jmp  anti_flick ;red
372
    jmp  anti_flick ;red
373
no_con_bspace:
373
no_con_bspace:
374
 
374
 
375
    mov  ecx,[cursor]
375
    mov  ecx,[cursor]
376
    mov  ebp,1022
376
    mov  ebp,1022
377
	cmp	byte [path+ebp], 0
377
	cmp	byte [path+ebp], 0
378
	jnz	still
378
	jnz	still
379
losx:
379
losx:
380
	cmp	ebp, ecx
380
	cmp	ebp, ecx
381
	jbe	@f
381
	jbe	@f
382
    mov  bl,byte [path+ebp]
382
    mov  bl,byte [path+ebp]
383
    mov  byte [path+ebp+1],bl
383
    mov  byte [path+ebp+1],bl
384
    dec  ebp
384
    dec  ebp
385
    jmp  losx
385
    jmp  losx
386
@@:
386
@@:
387
 
387
 
388
    mov  byte [path+ebp],ah
388
    mov  byte [path+ebp],ah
389
    inc  dword [cursor]
389
    inc  dword [cursor]
390
 
390
 
391
    mov  [flick],2
391
    mov  [flick],2
392
    jmp  anti_flick
392
    jmp  anti_flick
393
 
393
 
394
 
394
 
395
;----------------------------
395
;----------------------------
396
;Test on mouse button
396
;Test on mouse button
397
;-----------------------------
397
;-----------------------------
398
 
398
 
399
  button:	  ; button
399
  button:	  ; button
400
    mov eax,17
400
    mov eax,17
401
    mcall
401
    mcall
402
 
402
 
403
    cmp ah,2	       ;Edit prompt line?
403
    cmp ah,2	       ;Edit prompt line?
404
    je	    edit_prompt
404
    je	    edit_prompt
405
 
405
 
406
    cmp ah,4
406
    cmp ah,4
407
    jne no_filelist
407
    jne no_filelist
408
 
408
 
409
mousetest:
409
mousetest:
410
    mov eax,37
410
    mov eax,37
411
    mov ebx,1
411
    mov ebx,1
412
    mcall
412
    mcall
413
    mov ebx,eax
413
    mov ebx,eax
414
    shr eax,16		 ;x
414
    shr eax,16		 ;x
415
    and ebx,0xffff   ;y
415
    and ebx,0xffff   ;y
416
 
416
 
417
    sub ebx,[listy] ;80
417
    sub ebx,[listy] ;80
418
    mov [mousey],ebx
418
    mov [mousey],ebx
419
 
419
 
420
    mov ecx,[listx]
420
    mov ecx,[listx]
421
    cmp eax,ecx
421
    cmp eax,ecx
422
    jl	    still
422
    jl	    still
423
    add ecx,[listxsize]
423
    add ecx,[listxsize]
424
    cmp eax,ecx
424
    cmp eax,ecx
425
    jg	    still
425
    jg	    still
426
 
426
 
427
filexadd:
427
filexadd:
428
 
428
 
429
; Enter in directory
429
; Enter in directory
430
file_add:
430
file_add:
431
    mov edx,0  ;for div correct work div
431
    mov edx,0  ;for div correct work div
432
    mov eax,dword [mousey]
432
    mov eax,dword [mousey]
433
    mov ebx,10
433
    mov ebx,10
434
    div ebx
434
    div ebx
435
 
435
 
436
    add eax,[filecursor]
436
    add eax,[filecursor]
437
    jmp no_kfad
437
    jmp no_kfad
438
kfad:
438
kfad:
439
    mov eax,[filecursor]
439
    mov eax,[filecursor]
440
no_kfad:
440
no_kfad:
441
    mov ebx,27
441
    mov ebx,27
442
    mul ebx
442
    mul ebx
443
    lea ebp,[convinfo+eax]
443
    lea ebp,[convinfo+eax]
444
    mov esi,[ebp]
444
    mov esi,[ebp]
445
    cmp esi,-1
445
    cmp esi,-1
446
    jz	still
446
    jz	still
447
 
447
 
448
    mov edi,paramtest ;clear param string
448
    mov edi,paramtest ;clear param string
449
    mov ecx,1024/4
449
    mov ecx,1024/4
450
    xor eax,eax
450
    xor eax,eax
451
    rep stosd
451
    rep stosd
452
 
452
 
453
	mov	edi, path
453
	mov	edi, path
454
	mov	ecx, 1024
454
	mov	ecx, 1024
455
	repnz	scasb
455
	repnz	scasb
456
	dec	edi
456
	dec	edi
457
	cmp	[ebp+15], dword 'FOL '
457
	cmp	[ebp+15], dword 'FOL '
458
	jnz	openf
458
	jnz	openf
459
; open directory - append its name to path
459
; open directory - append its name to path
460
	cmp	ecx, 2
460
	cmp	ecx, 2
461
	jb	still
461
	jb	still
462
	push	edi
462
	push	edi
463
	mov	al, '/'
463
	mov	al, '/'
464
	stosb
464
	stosb
465
	dec	ecx
465
	dec	ecx
466
@@:
466
@@:
467
	lodsb
467
	lodsb
468
	stosb
468
	stosb
469
	test	al, al
469
	test	al, al
470
	jz	@f
470
	jz	@f
471
	dec	ecx
471
	dec	ecx
472
	jnz	@b
472
	jnz	@b
473
; name is too long - do not do anything
473
; name is too long - do not do anything
474
	pop	edi
474
	pop	edi
475
	xor	eax, eax
475
	xor	eax, eax
476
	mov	ecx, path+1024
476
	mov	ecx, path+1024
477
	sub	ecx, edi
477
	sub	ecx, edi
478
	rep	stosb
478
	rep	stosb
479
	jmp	still
479
	jmp	still
480
@@:
480
@@:
481
	sub	edi, path+1
481
	sub	edi, path+1
482
	mov	[cursor], edi
482
	mov	[cursor], edi
483
	pop	edi
483
	pop	edi
484
; name appended, now read new directory
484
; name appended, now read new directory
485
    mov [filecursor],0
485
    mov [filecursor],0
486
 
486
 
487
    call read_directory
487
    call read_directory
488
;;    call convertation
488
;;    call convertation
489
    call draw_window
489
    call draw_window
490
    jmp still
490
    jmp still
491
 
491
 
492
;Savetest
492
;Savetest
493
savetest:
493
savetest:
494
    cmp byte [dlg_type],'S'
494
    cmp byte [dlg_type],'S'
495
    jne still
495
    jne still
496
; always force open file - this is better
496
; always force open file - this is better
497
; because there exists files without extension and folders with extension
497
; because there exists files without extension and folders with extension
498
	jmp	openf
498
	jmp	openf
499
;    mov ecx,100
499
;    mov ecx,100
500
;savetestloop:
500
;savetestloop:
501
;    cmp [path+ecx],byte 0
501
;    cmp [path+ecx],byte 0
502
;    je     next_byte
502
;    je     next_byte
503
;    cmp [path+ecx],byte 32
503
;    cmp [path+ecx],byte 32
504
;    je     next_byte
504
;    je     next_byte
505
;    cmp [path+ecx],byte '.'
505
;    cmp [path+ecx],byte '.'
506
;    je     openf  ;it's file
506
;    je     openf  ;it's file
507
;;    cmp [path+ecx],byte '/'
507
;;    cmp [path+ecx],byte '/'
508
;;    je  no_save  ;it's dir
508
;;    je  no_save  ;it's dir
509
;next_byte:
509
;next_byte:
510
;    dec ecx
510
;    dec ecx
511
;    jnz savetestloop
511
;    jnz savetestloop
512
;    jmp still
512
;    jmp still
513
 
513
 
514
;Open/Run file
514
;Open/Run file
515
 
515
 
516
openf:
516
openf:
517
	push	esi edi
517
	push	esi edi
518
	mov	esi, path
518
	mov	esi, path
519
	mov	edi, paramtest
519
	mov	edi, paramtest
520
	mov	ecx, 1024/4
520
	mov	ecx, 1024/4
521
	rep	movsd
521
	rep	movsd
522
	pop	edi esi
522
	pop	edi esi
523
	add	edi, paramtest-path
523
	add	edi, paramtest-path
524
 
524
 
525
    cmp dword [focus],0 ;if prompt line with focus no add file name from frame
525
    cmp dword [focus],0 ;if prompt line with focus no add file name from frame
526
    jne file_set
526
    jne file_set
527
 
527
 
528
	cmp	edi, paramtest+1022
528
	cmp	edi, paramtest+1022
529
	jae	still
529
	jae	still
530
	mov	al, '/'
530
	mov	al, '/'
531
	stosb
531
	stosb
532
@@:
532
@@:
533
	lodsb
533
	lodsb
534
	stosb
534
	stosb
535
	test	al, al
535
	test	al, al
536
	jz	file_set
536
	jz	file_set
537
	cmp	edi, paramtest+1024
537
	cmp	edi, paramtest+1024
538
	jb	@b
538
	jb	@b
539
	jmp	still
539
	jmp	still
540
 
540
 
541
file_set:
541
file_set:
542
 
542
 
543
    cmp [browser],0
543
    cmp [browser],0
544
    jne is_brow
544
    jne is_brow
545
 
545
 
546
    movzx eax,byte [param_area]
546
    movzx eax,byte [param_area]
547
    sub eax,48
547
    sub eax,48
548
    imul eax,10
548
    imul eax,10
549
    movzx ebx,byte [param_area+1]
549
    movzx ebx,byte [param_area+1]
550
    add eax,ebx
550
    add eax,ebx
551
    sub eax,48
551
    sub eax,48
552
    imul eax,10
552
    imul eax,10
553
    movzx ebx,byte [param_area+2]
553
    movzx ebx,byte [param_area+2]
554
    add eax,ebx
554
    add eax,ebx
555
    sub eax,48
555
    sub eax,48
556
    imul eax,10
556
    imul eax,10
557
    movzx ebx,byte [param_area+3]
557
    movzx ebx,byte [param_area+3]
558
    add eax,ebx
558
    add eax,ebx
559
    sub eax,48
559
    sub eax,48
560
 
560
 
561
    mov ecx,eax ;pid to ecx
561
    mov ecx,eax ;pid to ecx
562
    mov eax,60
562
    mov eax,60
563
    mov ebx,2
563
    mov ebx,2
564
    mov edx,paramtest
564
    mov edx,paramtest
565
    mov esi,1024
565
    mov esi,1024
566
    mcall
566
    mcall
567
 
567
 
568
    jmp exit
568
    jmp exit
569
 
569
 
570
is_brow:
570
is_brow:
571
 
571
 
572
;    cmp [convinfo+edi+26],dword 'Fvol'
572
;    cmp [convinfo+edi+26],dword 'Fvol'
573
;    je  edit
573
;    je  edit
574
 
574
 
575
; find extension
575
; find extension
576
	mov	eax, paramtest+1023
576
	mov	eax, paramtest+1023
577
@@:
577
@@:
578
	dec	eax
578
	dec	eax
579
	cmp	byte [eax+1], 0
579
	cmp	byte [eax+1], 0
580
	jz	@b
580
	jz	@b
581
@@:
581
@@:
582
	cmp	byte [eax], '/'
582
	cmp	byte [eax], '/'
583
	jz	.noext
583
	jz	.noext
584
	cmp	byte [eax], '.'
584
	cmp	byte [eax], '.'
585
	jz	.ext
585
	jz	.ext
586
	dec	eax
586
	dec	eax
587
	cmp	eax, paramtest
587
	cmp	eax, paramtest
588
	jae	@b
588
	jae	@b
589
.noext:
589
.noext:
590
; file has no extension
590
; file has no extension
591
;        xor     ebx, ebx
591
;        xor     ebx, ebx
592
	jmp	execute
592
	jmp	execute
593
.ext:
593
.ext:
594
	inc	eax
594
	inc	eax
595
; eax points to extension
595
; eax points to extension
596
	cmp	byte [eax], 0
596
	cmp	byte [eax], 0
597
	jz	.noext
597
	jz	.noext
598
	mov	ecx, dword [eax]
598
	mov	ecx, dword [eax]
599
	and	ecx, not 0x20202020
599
	and	ecx, not 0x20202020
-
 
600
 
600
	mov	ebx, jpgview
601
	mov	ebx, kiv
601
	cmp	ecx, 'JPG'
602
	cmp	ecx, 'JPG'
602
	jz	run
603
	jz	run
603
	cmp	ecx, 'JPEG'	; note that it will select also *.JPEG*
604
	cmp	ecx, 'JPEG'	; note that it will select also *.JPEG*
604
	jz	run
605
	jz	run
605
	mov	ebx, bmpview
-
 
606
	cmp	ecx, 'GIF'
606
	cmp	ecx, 'GIF'
607
	jz	run
607
	jz	run
-
 
608
	cmp	ecx, 'BMP'
-
 
609
	jz	run
-
 
610
	cmp	ecx, 'PNG'
-
 
611
	jz	run
-
 
612
	cmp	ecx, 'ICO'
-
 
613
	jz	run
-
 
614
	cmp	ecx, 'CUR'
-
 
615
	jz	run
-
 
616
 
-
 
617
	
608
	mov	ebx, ac97
618
	mov	ebx, ac97
609
	cmp	ecx, 'WAV'
619
	cmp	ecx, 'WAV'
610
	jz	run
620
	jz	run
611
	cmp	ecx, 'MP3'
621
	cmp	ecx, 'MP3'
612
	jz	run
622
	jz	run
613
	cmp	ecx, 'XM'
623
	cmp	ecx, 'XM'
614
	jz	run
624
	jz	run
-
 
625
	
615
	mov	ebx, midamp
626
	mov	ebx, midamp
616
	cmp	ecx, 'MID'
627
	cmp	ecx, 'MID'
617
	jz	run
628
	jz	run
618
	mov	ebx, htmlv
629
	mov	ebx, htmlv
619
	cmp	ecx, 'HTM'
630
	cmp	ecx, 'HTM'
620
	jz	run
631
	jz	run
621
	mov	ebx, bmpview
-
 
622
	cmp	ecx, 'BMP'
632
	cmp	ecx, 'HTML'
623
	jz	run
-
 
624
; //// Willow
-
 
625
	mov	ebx, pngview
-
 
626
	cmp	ecx, 'PNG'
-
 
627
	jz	run
633
	jz	run
628
; //// Willow
-
 
629
	mov	ebx, rtfread
634
	mov	ebx, rtfread
630
	cmp	ecx, 'RTF'
635
	cmp	ecx, 'RTF'
631
	jz	run
636
	jz	run
632
	mov	ebx, editor
637
	mov	ebx, editor
633
	cmp	ecx, 'ASM'
638
	cmp	ecx, 'ASM'
634
	jz	run
639
	jz	run
635
	cmp	ecx, 'TXT'
640
	cmp	ecx, 'TXT'
636
	jz	run
641
	jz	run
637
	cmp	ecx, 'INC'
642
	cmp	ecx, 'INC'
638
	jz	run
643
	jz	run
639
	cmp	ecx, 'INI'
644
	cmp	ecx, 'INI'
640
	jz	run
645
	jz	run
641
	cmp	ecx, 'LOG'
646
	cmp	ecx, 'LOG'
642
	jz	run
647
	jz	run
643
	cmp	ecx, 'CONF'
648
	cmp	ecx, 'CONF'
644
	jz	run
649
	jz	run
645
	mov	ebx, life2
650
	mov	ebx, life2
646
	cmp	ecx, 'LIF'
651
	cmp	ecx, 'LIF'
647
	jz	run
652
	jz	run
648
	mov	ebx, view3ds
653
	mov	ebx, view3ds
649
	cmp	ecx, '3DS' and not 0x20202020
654
	cmp	ecx, '3DS' and not 0x20202020
650
	jz	run
655
	jz	run
651
	jmp	still
656
	jmp	still
652
 
657
 
653
execute:
658
execute:
654
	mov	ebx, fileinfo_start
659
	mov	ebx, fileinfo_start
655
	and	dword [ebx+8], 0		; no parameters
660
	and	dword [ebx+8], 0		; no parameters
656
	mov	dword [ebx+21], paramtest	; program name
661
	mov	dword [ebx+21], paramtest	; program name
657
.do:
662
.do:
658
	mov	eax, 70
663
	mov	eax, 70
659
	mcall
664
	mcall
660
	jmp	still
665
	jmp	still
661
 
666
 
662
run:
667
run:
663
	mov	[fileinfo_name], ebx		; program name
668
	mov	[fileinfo_name], ebx		; program name
664
	mov	ebx, fileinfo_start
669
	mov	ebx, fileinfo_start
665
	mov	dword [ebx+8], paramtest	; parameters
670
	mov	dword [ebx+8], paramtest	; parameters
666
	jmp	execute.do
671
	jmp	execute.do
667
 
672
 
668
no_filelist:
673
no_filelist:
669
 
674
 
670
    cmp ah,5	;OPEN/SAVE button
675
    cmp ah,5	;OPEN/SAVE button
671
    je	    kfad
676
    je	    kfad
672
 
677
 
673
    cmp ah,6	;Scroll up
678
    cmp ah,6	;Scroll up
674
    jne no_scrlup
679
    jne no_scrlup
675
    mov ebx,1
680
    mov ebx,1
676
    jmp up
681
    jmp up
677
no_scrlup:
682
no_scrlup:
678
 
683
 
679
    cmp ah,7	;Scroll down
684
    cmp ah,7	;Scroll down
680
    jne no_scrldown
685
    jne no_scrldown
681
    mov ebx,1
686
    mov ebx,1
682
    jmp down
687
    jmp down
683
no_scrldown:
688
no_scrldown:
684
 
689
 
685
    cmp ah,8
690
    cmp ah,8
686
    jne no_update
691
    jne no_update
687
update:
692
update:
688
    call read_directory
693
    call read_directory
689
;    call convertation
694
;    call convertation
690
;    mov [filecursor],0
695
;    mov [filecursor],0
691
    call draw_window
696
    call draw_window
692
no_update:
697
no_update:
693
 
698
 
694
    cmp ah,9
699
    cmp ah,9
695
    jne no_textopen
700
    jne no_textopen
696
textopen:
701
textopen:
697
	mov	eax, 27
702
	mov	eax, 27
698
	mul	[filecursor]
703
	mul	[filecursor]
699
	cmp	dword [eax+convinfo+15], 'FOL '
704
	cmp	dword [eax+convinfo+15], 'FOL '
700
	jz	still
705
	jz	still
701
	push	eax
706
	push	eax
702
	mov	esi, path
707
	mov	esi, path
703
	mov	edi, paramtest
708
	mov	edi, paramtest
704
@@:
709
@@:
705
	lodsb
710
	lodsb
706
	test	al, al
711
	test	al, al
707
	jz	@f
712
	jz	@f
708
	stosb
713
	stosb
709
	jmp	@b
714
	jmp	@b
710
@@:
715
@@:
711
	mov	al, '/'
716
	mov	al, '/'
712
	stosb
717
	stosb
713
	pop	eax
718
	pop	eax
714
	mov	esi, [eax+convinfo]
719
	mov	esi, [eax+convinfo]
715
	cmp	esi, -1
720
	cmp	esi, -1
716
	jz	still
721
	jz	still
717
@@:
722
@@:
718
	lodsb
723
	lodsb
719
	stosb
724
	stosb
720
	test	al, al
725
	test	al, al
721
	jz	@f
726
	jz	@f
722
	cmp	edi, paramtest+1024
727
	cmp	edi, paramtest+1024
723
	jb	@b
728
	jb	@b
724
	jmp	still
729
	jmp	still
725
@@:
730
@@:
726
	mov	ebx, editor
731
	mov	ebx, editor
727
	jmp	run
732
	jmp	run
728
 
733
 
729
no_textopen:
734
no_textopen:
730
 
735
 
731
    cmp  ah,11
736
    cmp  ah,11
732
    jne  no_view
737
    jne  no_view
733
viewset:
738
viewset:
734
	inc	[viewmode]
739
	inc	[viewmode]
735
	cmp	[viewmode], 4
740
	cmp	[viewmode], 4
736
	jb	@f
741
	jb	@f
737
	mov	[viewmode], 0
742
	mov	[viewmode], 0
738
@@:
743
@@:
739
    call read_directory
744
    call read_directory
740
;    call convertation
745
;    call convertation
741
    mov [filecursor],0
746
    mov [filecursor],0
742
    call draw_window
747
    call draw_window
743
    jmp still
748
    jmp still
744
no_view:
749
no_view:
745
 
750
 
746
    cmp  ah,12	      ;move back
751
    cmp  ah,12	      ;move back
747
    jne  no_back
752
    jne  no_back
748
back:
753
back:
749
	mov	edi, path+1024
754
	mov	edi, path+1024
750
	mov	ecx, edi
755
	mov	ecx, edi
751
@@:
756
@@:
752
	dec	edi
757
	dec	edi
753
	cmp	byte [edi], '/'
758
	cmp	byte [edi], '/'
754
	jz	@f
759
	jz	@f
755
	cmp	edi, path
760
	cmp	edi, path
756
	ja	@b
761
	ja	@b
757
	jmp	still
762
	jmp	still
758
@@:
763
@@:
759
	sub	ecx, edi
764
	sub	ecx, edi
760
	lea	eax, [edi-path]
765
	lea	eax, [edi-path]
761
	mov	[cursor], eax
766
	mov	[cursor], eax
762
	xor	eax, eax
767
	xor	eax, eax
763
	rep	stosb
768
	rep	stosb
764
    mov [filecursor],0
769
    mov [filecursor],0
765
    call read_directory
770
    call read_directory
766
;    call convertation
771
;    call convertation
767
    call draw_window
772
    call draw_window
768
    jmp still
773
    jmp still
769
 
774
 
770
no_back:
775
no_back:
771
    cmp  ah,13	      ;string up?
776
    cmp  ah,13	      ;string up?
772
    jne  no_up
777
    jne  no_up
773
    mov  ebx,1	      ;step
778
    mov  ebx,1	      ;step
774
up:
779
up:
775
    mov  [downstop],0
780
    mov  [downstop],0
776
    sub  [filecursor],ebx
781
    sub  [filecursor],ebx
777
    cmp  [filecursor],0
782
    cmp  [filecursor],0
778
    jnl  cr_ok
783
    jnl  cr_ok
779
    mov  [filecursor],0
784
    mov  [filecursor],0
780
cr_ok:
785
cr_ok:
781
    jmp  draw_wd
786
    jmp  draw_wd
782
no_up:
787
no_up:
783
    cmp  ah,14		 ;string down?
788
    cmp  ah,14		 ;string down?
784
    jne  no_dn
789
    jne  no_dn
785
    mov  ebx,1		 ;step
790
    mov  ebx,1		 ;step
786
down:
791
down:
787
    cmp  [downstop],1
792
    cmp  [downstop],1
788
    je	     no_dn
793
    je	     no_dn
789
    add  [filecursor],ebx
794
    add  [filecursor],ebx
790
    jmp  draw_wd
795
    jmp  draw_wd
791
no_dn:
796
no_dn:
792
 
797
 
793
    cmp  ah,15
798
    cmp  ah,15
794
    jne  no_copyclip	;copy to clipboard
799
    jne  no_copyclip	;copy to clipboard
795
copy_to_clip:
800
copy_to_clip:
796
	mov	eax, 27
801
	mov	eax, 27
797
	mul	[filecursor]
802
	mul	[filecursor]
798
	cmp	dword [convinfo+eax+15], 'FOL '
803
	cmp	dword [convinfo+eax+15], 'FOL '
799
	jz	still
804
	jz	still
800
	push	eax
805
	push	eax
801
	mov	esi, path
806
	mov	esi, path
802
	mov	edi, paramtest
807
	mov	edi, paramtest
803
@@:
808
@@:
804
	lodsb
809
	lodsb
805
	test	al, al
810
	test	al, al
806
	jz	@f
811
	jz	@f
807
	stosb
812
	stosb
808
	jmp	@b
813
	jmp	@b
809
@@:
814
@@:
810
	pop	eax
815
	pop	eax
811
	mov	esi, [convinfo+eax]
816
	mov	esi, [convinfo+eax]
812
	cmp	esi, -1
817
	cmp	esi, -1
813
	jz	still
818
	jz	still
814
	mov	al, '/'
819
	mov	al, '/'
815
	stosb
820
	stosb
816
@@:
821
@@:
817
	lodsb
822
	lodsb
818
	stosb
823
	stosb
819
	test	al, al
824
	test	al, al
820
	jz	@f
825
	jz	@f
821
	cmp	edi, paramtest+1024
826
	cmp	edi, paramtest+1024
822
	jb	@b
827
	jb	@b
823
	jmp	still
828
	jmp	still
824
@@:
829
@@:
825
	sub	edi, paramtest+1
830
	sub	edi, paramtest+1
826
	mov	ebx, clipfile_info
831
	mov	ebx, clipfile_info
827
	mov	byte [ebx], 2
832
	mov	byte [ebx], 2
828
	mov	[ebx+12], edi
833
	mov	[ebx+12], edi
829
	mov	eax, 70
834
	mov	eax, 70
830
	mcall
835
	mcall
831
	jmp	still
836
	jmp	still
832
no_copyclip:
837
no_copyclip:
833
 
838
 
834
    cmp ah,16
839
    cmp ah,16
835
    jne no_clippaste
840
    jne no_clippaste
836
paste_from_clip:
841
paste_from_clip:
837
	mov	ebx, clipfile_info
842
	mov	ebx, clipfile_info
838
	mov	byte [ebx], 0
843
	mov	byte [ebx], 0
839
	mov	dword [ebx+12], 1023
844
	mov	dword [ebx+12], 1023
840
	mov	eax, 70
845
	mov	eax, 70
841
	mcall
846
	mcall
842
	cmp	ebx, 0
847
	cmp	ebx, 0
843
	jle	still
848
	jle	still
844
	mov	byte [paramtest+ebx], 0
849
	mov	byte [paramtest+ebx], 0
845
; OS allows only 256 symbols in command line
850
; OS allows only 256 symbols in command line
846
	cmp	ebx, 250
851
	cmp	ebx, 250
847
	jae	still
852
	jae	still
848
; we use Pascal-style strings for /RD/1/COPYR
853
; we use Pascal-style strings for /RD/1/COPYR
849
; source file
854
; source file
850
	mov	edi, copyr_param
855
	mov	edi, copyr_param
851
	mov	al, bl
856
	mov	al, bl
852
	stosb
857
	stosb
853
	mov	ecx, ebx
858
	mov	ecx, ebx
854
	mov	esi, paramtest
859
	mov	esi, paramtest
855
	rep	movsb
860
	rep	movsb
856
; destination path
861
; destination path
857
	inc	edi
862
	inc	edi
858
	mov	ebp, edi
863
	mov	ebp, edi
859
	mov	esi, path
864
	mov	esi, path
860
@@:
865
@@:
861
	cmp	edi, copyr_param+255
866
	cmp	edi, copyr_param+255
862
	jae	still
867
	jae	still
863
	lodsb
868
	lodsb
864
	test	al, al
869
	test	al, al
865
	jz	@f
870
	jz	@f
866
	stosb
871
	stosb
867
	jmp	@b
872
	jmp	@b
868
; destination file name
873
; destination file name
869
@@:
874
@@:
870
	dec	ebx
875
	dec	ebx
871
	jz	still
876
	jz	still
872
	cmp	byte [paramtest+ebx], '/'
877
	cmp	byte [paramtest+ebx], '/'
873
	jnz	@b
878
	jnz	@b
874
	lea	esi, [paramtest+ebx]
879
	lea	esi, [paramtest+ebx]
875
@@:
880
@@:
876
	lodsb
881
	lodsb
877
	test	al, al
882
	test	al, al
878
	jz	@f
883
	jz	@f
879
	stosb
884
	stosb
880
	cmp	edi, copyr_param+255
885
	cmp	edi, copyr_param+255
881
	jae	still
886
	jae	still
882
	jmp	@b
887
	jmp	@b
883
@@:
888
@@:
884
	mov	byte [edi], 0
889
	mov	byte [edi], 0
885
	sub	edi, ebp
890
	sub	edi, ebp
886
	mov	eax, edi
891
	mov	eax, edi
887
	mov	[ebp-1], al
892
	mov	[ebp-1], al
888
; display
893
; display
889
    cmp [browser], 1
894
    cmp [browser], 1
890
    jne no_outpath
895
    jne no_outpath
891
    mov  eax,4		   ; function 4 : write text to window
896
    mov  eax,4		   ; function 4 : write text to window
892
    mov  ebx,10*65536+67     ; [x start] *65536 + [y start]
897
    mov  ebx,10*65536+67     ; [x start] *65536 + [y start]
893
    mov  ecx,0x00000000 ;[sc.grab_text] ; color of text RRGGBB
898
    mov  ecx,0x00000000 ;[sc.grab_text] ; color of text RRGGBB
894
	mov	edx, copyr_param+1
899
	mov	edx, copyr_param+1
895
	movzx	esi, byte [edx-1]
900
	movzx	esi, byte [edx-1]
896
    mcall
901
    mcall
897
    mov  ebx,250*65536+67	; [x start] *65536 + [y start]
902
    mov  ebx,250*65536+67	; [x start] *65536 + [y start]
898
    mov  ecx,0x00000000 ;[sc.grab_text] ; color of text RRGGBB
903
    mov  ecx,0x00000000 ;[sc.grab_text] ; color of text RRGGBB
899
	mov	edx, ebp
904
	mov	edx, ebp
900
	mov	esi, edi
905
	mov	esi, edi
901
    mcall
906
    mcall
902
no_outpath:
907
no_outpath:
903
 
908
 
904
; run COPYR
909
; run COPYR
905
	mov	eax, 70
910
	mov	eax, 70
906
	mov	ebx, copyr_run
911
	mov	ebx, copyr_run
907
	mcall
912
	mcall
908
    delay 50   ;wait recoed file
913
    delay 50   ;wait recoed file
909
    jmp update ;still
914
    jmp update ;still
910
no_clippaste:
915
no_clippaste:
911
 
916
 
912
    cmp ah,19		;Delete from floppy
917
    cmp ah,19		;Delete from floppy
913
    jne no_delt
918
    jne no_delt
914
delete_file:
919
delete_file:
915
; OS now do not support file delete
920
; OS now do not support file delete
916
	jmp	still
921
	jmp	still
917
no_delt:
922
no_delt:
918
 
923
 
919
    cmp ah,20		;I - Help
924
    cmp ah,20		;I - Help
920
    je	    help_scr
925
    je	    help_scr
921
 
926
 
922
    cmp ah,22
927
    cmp ah,22
923
    jne no_headfile
928
    jne no_headfile
924
    mov [drawhf],1
929
    mov [drawhf],1
925
    call draw_window
930
    call draw_window
926
    mov [drawhf],0
931
    mov [drawhf],0
927
    mov [pmenu_draw],1
932
    mov [pmenu_draw],1
928
    jmp still
933
    jmp still
929
no_headfile:
934
no_headfile:
930
 
935
 
931
    cmp ah,23
936
    cmp ah,23
932
    jne no_headview
937
    jne no_headview
933
    mov [drawhv],1
938
    mov [drawhv],1
934
    call draw_window
939
    call draw_window
935
    mov [drawhv],0
940
    mov [drawhv],0
936
    mov [pmenu_draw],1
941
    mov [pmenu_draw],1
937
    jmp still
942
    jmp still
938
no_headview:
943
no_headview:
939
 
944
 
940
    cmp ah,24
945
    cmp ah,24
941
    jne no_headinfo
946
    jne no_headinfo
942
    mov [drawhi],1
947
    mov [drawhi],1
943
    call draw_window
948
    call draw_window
944
    mov [drawhi],0
949
    mov [drawhi],0
945
    mov [pmenu_draw],1
950
    mov [pmenu_draw],1
946
    jmp still
951
    jmp still
947
no_headinfo:
952
no_headinfo:
948
 
953
 
949
;FILE MENU
954
;FILE MENU
950
    cmp ah,30
955
    cmp ah,30
951
    je kfad
956
    je kfad
952
 
957
 
953
    cmp ah,31
958
    cmp ah,31
954
    je	    copy_to_clip      ;Copy
959
    je	    copy_to_clip      ;Copy
955
 
960
 
956
    cmp ah,32
961
    cmp ah,32
957
    je	    paste_from_clip ;Paste
962
    je	    paste_from_clip ;Paste
958
 
963
 
959
    cmp ah,33
964
    cmp ah,33
960
    je	    delete_file     ;Delte
965
    je	    delete_file     ;Delte
961
 
966
 
962
    cmp ah,34
967
    cmp ah,34
963
    je	    textopen	;Edit in Tinypad
968
    je	    textopen	;Edit in Tinypad
964
 
969
 
965
    cmp ah,37
970
    cmp ah,37
966
    je	    exit
971
    je	    exit
967
 
972
 
968
;VIEW MENU
973
;VIEW MENU
969
    cmp ah,40		;Sort by name
974
    cmp ah,40		;Sort by name
970
    jne no_sn
975
    jne no_sn
971
	mov	[viewmode], 0
976
	mov	[viewmode], 0
972
    jmp update
977
    jmp update
973
no_sn:
978
no_sn:
974
 
979
 
975
    cmp ah,41		;Sort by extension
980
    cmp ah,41		;Sort by extension
976
    jne no_se
981
    jne no_se
977
	mov	[viewmode], 1
982
	mov	[viewmode], 1
978
    jmp update
983
    jmp update
979
no_se:
984
no_se:
980
 
985
 
981
    cmp ah,42		;Sort by size
986
    cmp ah,42		;Sort by size
982
    jne no_ss
987
    jne no_ss
983
	mov	[viewmode], 2
988
	mov	[viewmode], 2
984
    jmp update
989
    jmp update
985
no_ss:
990
no_ss:
986
 
991
 
987
    cmp ah,43		;Sort by date
992
    cmp ah,43		;Sort by date
988
    jne no_sd
993
    jne no_sd
989
	mov	[viewmode], 3
994
	mov	[viewmode], 3
990
    jmp update
995
    jmp update
991
no_sd:
996
no_sd:
992
 
997
 
993
;HELP MENU
998
;HELP MENU
994
    cmp ah,50		;Help?
999
    cmp ah,50		;Help?
995
    je	    help_scr
1000
    je	    help_scr
996
 
1001
 
997
    cmp ah,51		;Info?
1002
    cmp ah,51		;Info?
998
    je	    info_scr
1003
    je	    info_scr
999
 
1004
 
1000
    cmp ah,1	       ; test on exit button
1005
    cmp ah,1	       ; test on exit button
1001
    je	    exit
1006
    je	    exit
1002
 
1007
 
1003
    jmp still
1008
    jmp still
1004
 
1009
 
1005
exit:
1010
exit:
1006
; //// Willow
1011
; //// Willow
1007
;    mov eax,58
1012
;    mov eax,58
1008
;    mov ebx,MRUfile
1013
;    mov ebx,MRUfile
1009
;    mov dword[ebx+8],255
1014
;    mov dword[ebx+8],255
1010
;    inc dword[ebx]
1015
;    inc dword[ebx]
1011
;    mcall
1016
;    mcall
1012
; //// Willow
1017
; //// Willow
1013
    mov eax,-1
1018
    mov eax,-1
1014
    mcall
1019
    mcall
1015
 
1020
 
1016
draw_wd:
1021
draw_wd:
1017
;    call draw_window
1022
;    call draw_window
1018
;    jmp still
1023
;    jmp still
1019
    mov [flick],1
1024
    mov [flick],1
1020
    jmp anti_flick
1025
    jmp anti_flick
1021
 
1026
 
1022
edit_prompt:
1027
edit_prompt:
1023
    not  [focus]
1028
    not  [focus]
1024
    jmp  red
1029
    jmp  red
1025
 
1030
 
1026
help_scr:
1031
help_scr:
1027
    mov esi,14
1032
    mov esi,14
1028
    mov ebp,help_text
1033
    mov ebp,help_text
1029
    jmp screen
1034
    jmp screen
1030
 
1035
 
1031
info_scr:
1036
info_scr:
1032
    mov esi,6
1037
    mov esi,6
1033
    mov ebp,info_text
1038
    mov ebp,info_text
1034
    jmp screen
1039
    jmp screen
1035
 
1040
 
1036
screen:
1041
screen:
1037
    cmp [browser], 1 ;it's browser?
1042
    cmp [browser], 1 ;it's browser?
1038
    jne dialogscr
1043
    jne dialogscr
1039
 
1044
 
1040
    mov eax,[procinfo.box.height]
1045
    mov eax,[procinfo.box.height]
1041
    sub eax,90
1046
    sub eax,90
1042
    drawfbox 40,76,300,eax,0x00000000
1047
    drawfbox 40,76,300,eax,0x00000000
1043
    mov eax,[procinfo.box.height]
1048
    mov eax,[procinfo.box.height]
1044
    sub eax,92
1049
    sub eax,92
1045
    drawfbox 41,77,298,eax,0x00ffffff
1050
    drawfbox 41,77,298,eax,0x00ffffff
1046
    mov edi,esi ;14
1051
    mov edi,esi ;14
1047
    mov ebx,(41+26)*65536+(77+20)
1052
    mov ebx,(41+26)*65536+(77+20)
1048
    mov ecx,cl_Black
1053
    mov ecx,cl_Black
1049
    mov edx,ebp ;help_text
1054
    mov edx,ebp ;help_text
1050
    jmp outlab
1055
    jmp outlab
1051
 
1056
 
1052
dialogscr:
1057
dialogscr:
1053
    mov eax,[procinfo.box.height]
1058
    mov eax,[procinfo.box.height]
1054
    sub eax,84
1059
    sub eax,84
1055
    drawfbox 16,54,270,eax,0x00000000
1060
    drawfbox 16,54,270,eax,0x00000000
1056
    mov eax,[procinfo.box.height]
1061
    mov eax,[procinfo.box.height]
1057
    sub eax,86
1062
    sub eax,86
1058
    drawfbox 17,55,268,eax,0x00ffffff
1063
    drawfbox 17,55,268,eax,0x00ffffff
1059
    mov edi,esi ;14
1064
    mov edi,esi ;14
1060
    mov ebx,(17+10)*65536+(55+1)
1065
    mov ebx,(17+10)*65536+(55+1)
1061
    mov ecx,cl_Black
1066
    mov ecx,cl_Black
1062
    mov edx,ebp ;help_text
1067
    mov edx,ebp ;help_text
1063
 
1068
 
1064
outlab:     ;out labels
1069
outlab:     ;out labels
1065
    mov eax,4
1070
    mov eax,4
1066
    mov esi,40
1071
    mov esi,40
1067
helploo:
1072
helploo:
1068
    mcall
1073
    mcall
1069
    add ebx,11
1074
    add ebx,11
1070
    add edx,40
1075
    add edx,40
1071
    dec edi
1076
    dec edi
1072
    jnz helploo
1077
    jnz helploo
1073
 
1078
 
1074
    setimg 48,84,logoinfimg
1079
    setimg 48,84,logoinfimg
1075
 
1080
 
1076
    jmp still
1081
    jmp still
1077
 
1082
 
1078
getimgproc:
1083
getimgproc:
1079
    pushad
1084
    pushad
1080
    mov dword [edx],esi ;xs
1085
    mov dword [edx],esi ;xs
1081
    mov dword [edx+4],edi ;ys
1086
    mov dword [edx+4],edi ;ys
1082
 
1087
 
1083
    mov ebp,eax
1088
    mov ebp,eax
1084
    mov eax,dword [ecx] ;getx size
1089
    mov eax,dword [ecx] ;getx size
1085
    push edx
1090
    push edx
1086
    push ecx
1091
    push ecx
1087
    lea ecx,[eax+2*eax]
1092
    lea ecx,[eax+2*eax]
1088
 
1093
 
1089
    mul ebx
1094
    mul ebx
1090
    add eax,ebp ;x
1095
    add eax,ebp ;x
1091
    mov edx,ecx
1096
    mov edx,ecx
1092
    lea eax,[eax+2*eax]  ;eax=offset on imsrc
1097
    lea eax,[eax+2*eax]  ;eax=offset on imsrc
1093
 
1098
 
1094
    mov ebp,esi ;xs
1099
    mov ebp,esi ;xs
1095
    mov ebx,edi ;ys
1100
    mov ebx,edi ;ys
1096
 
1101
 
1097
    pop edi
1102
    pop edi
1098
    lea esi,[eax+8+edi]
1103
    lea esi,[eax+8+edi]
1099
 
1104
 
1100
    pop edi
1105
    pop edi
1101
    add edi,8
1106
    add edi,8
1102
 
1107
 
1103
    cld
1108
    cld
1104
cyc:
1109
cyc:
1105
	push	esi
1110
	push	esi
1106
	lea	ecx, [ebp+ebp*2]
1111
	lea	ecx, [ebp+ebp*2]
1107
	rep	movsb
1112
	rep	movsb
1108
	pop	esi
1113
	pop	esi
1109
    add esi,edx
1114
    add esi,edx
1110
    dec ebx
1115
    dec ebx
1111
    jne cyc
1116
    jne cyc
1112
 
1117
 
1113
    popad
1118
    popad
1114
    ret
1119
    ret
1115
 
1120
 
1116
iglobal
1121
iglobal
1117
;HELP TEXT
1122
;HELP TEXT
1118
help_text:
1123
help_text:
1119
       ;0123456789012345678901234567890123456789
1124
       ;0123456789012345678901234567890123456789
1120
    db '        ~~~~~ SYSTEM X-TREE ~~~~~       '
1125
    db '        ~~~~~ SYSTEM X-TREE ~~~~~       '
1121
    db '                   HELP                 '
1126
    db '                   HELP                 '
1122
    db '                                        '
1127
    db '                                        '
1123
    db '                                        '
1128
    db '                                        '
1124
    db 'F2 - CHANGE SORTMODE (name,ext,size,dat)'
1129
    db 'F2 - CHANGE SORTMODE (name,ext,size,dat)'
1125
    db 'F3 - VIEW file in tinypad               '
1130
    db 'F3 - VIEW file in tinypad               '
1126
 
1131
 
1127
    db 'F5 - COPY FILE to clipboard             '
1132
    db 'F5 - COPY FILE to clipboard             '
1128
    db 'F6 - PASTE FILE from clipboard          '
1133
    db 'F6 - PASTE FILE from clipboard          '
1129
    db 'F11- EDIT PROMPT string                 '
1134
    db 'F11- EDIT PROMPT string                 '
1130
    db 'F12- UPDATE directory sources           '
1135
    db 'F12- UPDATE directory sources           '
1131
    db '                                        '
1136
    db '                                        '
1132
 
1137
 
1133
    db 'Enter - input to directory              '
1138
    db 'Enter - input to directory              '
1134
    db 'Backspace - back to previos directory   '
1139
    db 'Backspace - back to previos directory   '
1135
    db 'PageDn/PageUp, Up/Down - move cursor    '
1140
    db 'PageDn/PageUp, Up/Down - move cursor    '
1136
 
1141
 
1137
info_text:
1142
info_text:
1138
    db '        ~~~~~ SYSTEM X-TREE ~~~~~       '
1143
    db '        ~~~~~ SYSTEM X-TREE ~~~~~       '
1139
    db '               INFO 84 Ver              '
1144
    db '               INFO 84 Ver              '
1140
    db '                                        '
1145
    db '                                        '
1141
    db '        Create by Pavlushin Evgeni      '
1146
    db '        Create by Pavlushin Evgeni      '
1142
    db 'with ASCL library special for Kolibri OS'
1147
    db 'with ASCL library special for Kolibri OS'
1143
    db ' www.deck4.narod.ru      waptap@mail.ru '
1148
    db ' www.deck4.narod.ru      waptap@mail.ru '
1144
endg
1149
endg
1145
 
1150
 
1146
;   *********************************************
1151
;   *********************************************
1147
;   *******  WINDOW DEFINITIONS AND DRAW ********
1152
;   *******  WINDOW DEFINITIONS AND DRAW ********
1148
;   ********    FILE BROWSER / DIALOG   *********
1153
;   ********    FILE BROWSER / DIALOG   *********
1149
 
1154
 
1150
;draw_browser_window:
1155
;draw_browser_window:
1151
 
1156
 
1152
draw_window:
1157
draw_window:
1153
 
1158
 
1154
;    mov eax,9
1159
;    mov eax,9
1155
;    mov ebx,procinfo
1160
;    mov ebx,procinfo
1156
;    mov ecx,-1
1161
;    mov ecx,-1
1157
;    mcall
1162
;    mcall
1158
;    mov  eax,[procinfo.box.width]
1163
;    mov  eax,[procinfo.box.width]
1159
;    cmp  eax,66
1164
;    cmp  eax,66
1160
;    jg  temp12345
1165
;    jg  temp12345
1161
;    ret
1166
;    ret
1162
; temp12345:
1167
; temp12345:
1163
    mov  eax,48
-
 
1164
    mov  ebx,3
1168
 
1165
    mov  ecx,sc
-
 
1166
    mov  edx,sizeof.system_colors
1169
    mcall 48, 3, sc, sizeof.system_colors
1167
    mcall
-
 
1168
 
1170
 
1169
    mov  eax,[sc.work_button]
1171
    mov  eax,[sc.work_button]
1170
    mov  [b_color],eax
1172
    mov  [b_color],eax
1171
 
-
 
1172
    mov  eax,12        ; function 12:tell os about windowdraw
-
 
1173
    mov  ebx,1		   ; 1, start of draw
1173
 
1174
    mcall
1174
    mcall 12, 1
1175
 
1175
 
1176
;Window
1176
;Window
1177
 
1177
 
1178
    xor  eax,eax       ; function 0 : define and draw window
1178
    xor  eax,eax       ; function 0 : define and draw window
1179
 
1179
 
1180
    cmp  [browser], 1 ;it's browser
1180
    cmp  [browser], 1 ;it's browser
1181
    jne  nob1
1181
    jne  nob1
1182
    mov  ebx,140*65536+400     ; [x start] *65536 + [x size]
1182
    mov  ebx,140*65536+400     ; [x start] *65536 + [x size]
1183
    mov  ecx,160*65536+280     ; [y start] *65536 + [y size]
1183
    mov  ecx,160*65536+280     ; [y start] *65536 + [y size]
1184
    jmp  isb1
1184
    jmp  isb1
1185
nob1:
1185
nob1:
1186
    mov  ebx,140*65536+320     ; [x start] *65536 + [x size]
1186
    mov  ebx,140*65536+320     ; [x start] *65536 + [x size]
1187
    mov  ecx,260*65536+240     ; [y start] *65536 + [y size]
1187
    mov  ecx,260*65536+240     ; [y start] *65536 + [y size]
1188
isb1:
1188
isb1:
1189
;    mov  edx,[sc.work]             ; color of work area RRGGBB
1189
;    mov  edx,[sc.work]             ; color of work area RRGGBB
1190
    or	     edx,0x03ffffff;000000
1190
    or	     edx,0x13ffffff
1191
    mcall
1191
    mcall
-
 
1192
	
-
 
1193
    mcall 12, 2      ; end of window redraw
1192
 
1194
 
1193
;Get proc info
1195
;Get proc info
1194
    mov eax,9
1196
    mov eax,9
1195
    mov ebx,procinfo
1197
    mov ebx,procinfo
1196
    mov ecx,-1
1198
    mov ecx,-1
1197
    mcall
1199
    mcall
1198
 
1200
 
1199
    mov  eax,[procinfo.box.width]
1201
    mov  eax,[procinfo.box.width]
1200
    cmp  eax,66
1202
    cmp  eax,66
1201
    jg	 @f
1203
    jg	 @f
1202
.ret:
1204
.ret:
1203
    ret
1205
    ret
1204
 @@:
1206
 @@:
1205
    cmp  [procinfo.box.height], 0x70
1207
    cmp  [procinfo.box.height], 0x70
1206
    jl	.ret
1208
    jl	.ret
1207
 
1209
 
1208
    cmp  [browser], 1 ;it's browser
1210
    cmp  [browser], 1 ;it's browser
1209
    jne  nob9
1211
    jne  nob9
1210
    mov  [listx],120
1212
    mov  [listx],120
1211
;    mov  eax,[procinfo.box.width]
1213
;    mov  eax,[procinfo.box.width]
1212
    sub  eax,127;[listx]+7
1214
    sub  eax,127;[listx]+7
1213
    cmp  eax,10
1215
    cmp  eax,10
1214
    jl	 .ret
1216
    jl	 .ret
1215
    mov  [listxsize],eax
1217
    mov  [listxsize],eax
1216
    mov  [listy],73
1218
    mov  [listy],73
1217
    mov  eax,[procinfo.box.height]
1219
    mov  eax,[procinfo.box.height]
1218
    sub  eax,73+7;[listy]+7
1220
    sub  eax,73+7;[listy]+7
1219
    mov  [listysize],eax
1221
    mov  [listysize],eax
1220
    jmp isb9
1222
    jmp isb9
1221
nob9:
1223
nob9:
1222
    mov  [listx],10
1224
    mov  [listx],10
1223
;    mov  eax,[procinfo.box.width]
1225
;    mov  eax,[procinfo.box.width]
1224
    sub  eax,17 ;[listx]+7
1226
    sub  eax,17 ;[listx]+7
1225
    mov  [listxsize],eax
1227
    mov  [listxsize],eax
1226
    mov  [listy],54
1228
    mov  [listy],54
1227
    mov  eax,[procinfo.box.height]
1229
    mov  eax,[procinfo.box.height]
1228
    sub  eax,54+34;[listy]+34
1230
    sub  eax,54+34;[listy]+34
1229
    mov  [listysize],eax
1231
    mov  [listysize],eax
1230
isb9:
1232
isb9:
1231
 
1233
 
1232
 
1234
 
1233
;Draw only browser components
1235
;Draw only browser components
1234
    cmp  [browser], 1 ;it's browser
1236
    cmp  [browser], 1 ;it's browser
1235
    jne  nob2
1237
    jne  nob2
1236
 
1238
 
1237
    mov  eax,[sc.grab_text]	 ; color of text RRGGBB
1239
    mov  eax,[sc.grab_text]	 ; color of text RRGGBB
1238
    or	     eax,0x10000000
1240
    or	     eax,0x10000000
1239
    glabel 8,8,'SYSTEM X-TREE FILE BROWSER',eax
1241
	mcall 71,1,title_browser
1240
 
1242
 
1241
;Draw buttons headers
1243
;Draw buttons headers
1242
    mov  eax,8
1244
    mov  eax,8
1243
    mov  ebx,8*65536+(6*8-1) ;start pos x
1245
    mov  ebx,8*65536+(6*8-1) ;start pos x
1244
    mov  ecx,23*65536+10      ;start pos y
1246
    mov  ecx,23*65536+10      ;start pos y
1245
    mov  edx,22;+1000000000000000000000000000000b  ;spoke butt
1247
    mov  edx,22;+1000000000000000000000000000000b  ;spoke butt
1246
    mov  edi,3		  ;draw 13 button's
1248
    mov  edi,3		  ;draw 13 button's
1247
    mov  esi,0x00339933
1249
    mov  esi,0x00339933
1248
    mcall
1250
    mcall
1249
    dec edi
1251
    dec edi
1250
nexthbut:
1252
nexthbut:
1251
    add  ebx,(6*8)*65536
1253
    add  ebx,(6*8)*65536
1252
    inc  edx
1254
    inc  edx
1253
    mcall
1255
    mcall
1254
    dec  edi
1256
    dec  edi
1255
    jnz  nexthbut
1257
    jnz  nexthbut
1256
 
1258
 
1257
;File STRING
1259
;File STRING
1258
    glabel 8,25,'  FILE    VIEW    INFO  ',  cl_White ;Black
1260
    glabel 8,25,'  FILE    VIEW    INFO  ',  cl_White ;Black
1259
 
1261
 
1260
;BlackLine
1262
;BlackLine
1261
    mov eax,[procinfo.box.width]
1263
    mov eax,[procinfo.box.width]
1262
    sub eax,10
1264
    sub eax,10
1263
    drawfbox 5,35, eax, 1, cl_Black
1265
    drawfbox 5,35, eax, 1, cl_Black
1264
 
1266
 
1265
;BlackLine2
1267
;BlackLine2
1266
    mov eax,[procinfo.box.width]
1268
    mov eax,[procinfo.box.width]
1267
    sub eax,10
1269
    sub eax,10
1268
    drawfbox 5,68, eax, 1, cl_Black
1270
    drawfbox 5,68, eax, 1, cl_Black
1269
 
1271
 
1270
;BlackLine2 vertical
1272
;BlackLine2 vertical
1271
;    mov eax,[procinfo.box.height]
1273
;    mov eax,[procinfo.box.height]
1272
;    sub eax,69+4
1274
;    sub eax,69+4
1273
;    drawfbox 115, 69, 1, eax, cl_Black
1275
;    drawfbox 115, 69, 1, eax, cl_Black
1274
 
1276
 
1275
;Set logo img
1277
;Set logo img
1276
    setimg 34,88,logoinfimg
1278
    setimg 34,88,logoinfimg
1277
    glabel 20,165,'SYSTEM X-TREE',cl_Black
1279
    glabel 20,165,'SYSTEM X-TREE',cl_Black
1278
    add  ebx,10
1280
    add  ebx,10
1279
    glabel ,,'FOR KolibriOS',
1281
    glabel ,,'FOR KolibriOS',
1280
 
1282
 
1281
    add  ebx,9*65536+20
1283
    add  ebx,9*65536+20
1282
    glabel ,,'welcome to',cl_Green
1284
    glabel ,,'welcome to',cl_Green
1283
    add  ebx,-15*65536+10
1285
    add  ebx,-15*65536+10
1284
    glabel ,,'www.kolibrios.org',cl_Green
1286
    glabel ,,'www.kolibrios.org',cl_Green
1285
 
-
 
1286
;    glabel ,,'Create by',cl_Green
-
 
1287
;    add  ebx,10
-
 
1288
;    glabel ,,'   Pavlushin',
-
 
1289
;    add  ebx,10
-
 
1290
;    glabel ,,'       Evgeni',
-
 
1291
 
1287
 
1292
 
1288
 
1293
;Draw head->file buttons
1289
;Draw head->file buttons
1294
    cmp [drawhf],1
1290
    cmp [drawhf],1
1295
    jne  no_drawhf
1291
    jne  no_drawhf
1296
    mov  ebx,8*65536+6*12 ;start pos x
1292
    mov  ebx,8*65536+6*12 ;start pos x
1297
    mov  ecx,35*65536+10      ;start pos y
1293
    mov  ecx,35*65536+10      ;start pos y
1298
    mov  edx,30  ;spoke butt
1294
    mov  edx,30  ;spoke butt
1299
    mov  edi,8		  ;draw 4 button's
1295
    mov  edi,8		  ;draw 4 button's
1300
    mov  esi,cl_Grey
1296
    mov  esi,cl_Grey
1301
    call menubutton
1297
    call menubutton
1302
no_drawhf:
1298
no_drawhf:
1303
 
1299
 
1304
;Draw head->view buttons
1300
;Draw head->view buttons
1305
    cmp [drawhv],1
1301
    cmp [drawhv],1
1306
    jne  no_drawhv
1302
    jne  no_drawhv
1307
    mov  ebx,(8+6*8)*65536+6*12 ;start pos x
1303
    mov  ebx,(8+6*8)*65536+6*12 ;start pos x
1308
    mov  ecx,35*65536+10      ;start pos y
1304
    mov  ecx,35*65536+10      ;start pos y
1309
    mov  edx,40  ;spoke butt
1305
    mov  edx,40  ;spoke butt
1310
    mov  edi,4		  ;draw 4 button's
1306
    mov  edi,4		  ;draw 4 button's
1311
    mov  esi,cl_Grey
1307
    mov  esi,cl_Grey
1312
    call menubutton
1308
    call menubutton
1313
no_drawhv:
1309
no_drawhv:
1314
 
1310
 
1315
;Draw head->info buttons
1311
;Draw head->info buttons
1316
    cmp [drawhi],1
1312
    cmp [drawhi],1
1317
    jne  no_drawhi
1313
    jne  no_drawhi
1318
    mov  ebx,(8+12*8)*65536+6*12 ;start pos x
1314
    mov  ebx,(8+12*8)*65536+6*12 ;start pos x
1319
    mov  ecx,35*65536+10      ;start pos y
1315
    mov  ecx,35*65536+10      ;start pos y
1320
    mov  edx,50  ;spoke butt
1316
    mov  edx,50  ;spoke butt
1321
    mov  edi,2		  ;draw 2 button's
1317
    mov  edi,2		  ;draw 2 button's
1322
    mov  esi,cl_Grey
1318
    mov  esi,cl_Grey
1323
    call menubutton
1319
    call menubutton
1324
no_drawhi:
1320
no_drawhi:
1325
 
1321
 
1326
nob2:
1322
nob2:
1327
 
1323
 
1328
;Draw buttons instruments
1324
;Draw buttons instruments
1329
    mov  eax,8
1325
    mov  eax,8
1330
    cmp  [browser], 1 ;it's browser
1326
    cmp  [browser], 1 ;it's browser
1331
    jne  nob3
1327
    jne  nob3
1332
    mov  ebx,10*65536+16+5 ;start pos x
1328
    mov  ebx,10*65536+16+5 ;start pos x
1333
    mov  ecx,37*65536+15      ;start pos y
1329
    mov  ecx,37*65536+15      ;start pos y
1334
    jmp isb3
1330
    jmp isb3
1335
nob3:
1331
nob3:
1336
    mov  ebx,16*65536+16+5 ;start pos x
1332
    mov  ebx,16*65536+16+5 ;start pos x
1337
    mov  ecx,29*65536+15      ;start pos y
1333
    mov  ecx,29*65536+15      ;start pos y
1338
isb3:
1334
isb3:
1339
    mov  edx,8;+1000000000000000000000000000000b  ;spoke butt
1335
    mov  edx,8;+1000000000000000000000000000000b  ;spoke butt
1340
    mov  edi,13        ;draw 13 button's
1336
    mov  edi,13        ;draw 13 button's
1341
    mov  esi,cl_Grey
1337
    mov  esi,cl_Grey
1342
    mcall
1338
    mcall
1343
    dec edi
1339
    dec edi
1344
nextbut:
1340
nextbut:
1345
    add  ebx,(16+6)*65536
1341
    add  ebx,(16+6)*65536
1346
    inc  edx
1342
    inc  edx
1347
    mcall
1343
    mcall
1348
    dec  edi
1344
    dec  edi
1349
    jnz  nextbut
1345
    jnz  nextbut
1350
 
1346
 
1351
 
1347
 
1352
    cmp  [browser], 1 ;it's browser
1348
    cmp  [browser], 1 ;it's browser
1353
    jne  nob4
1349
    jne  nob4
1354
;But img browser
1350
;But img browser
1355
    setimg 10,37,butimg
1351
    setimg 10,37,butimg
1356
;left logo
1352
;left logo
1357
    add eax,[procinfo.box.width]
1353
    add eax,[procinfo.box.width]
1358
    sub eax,80
1354
    sub eax,80
1359
    mov [temp],eax
1355
    mov [temp],eax
1360
    setimg [temp],37,logoimg
1356
    setimg [temp],37,logoimg
1361
    jmp isb4
1357
    jmp isb4
1362
nob4:
1358
nob4:
1363
;But img dialog
1359
;But img dialog
1364
    setimg 16,29,butimg
1360
    setimg 16,29,butimg
1365
isb4:
1361
isb4:
1366
 
1362
 
1367
    cmp  [browser], 1 ;it's browser
1363
    cmp  [browser], 1 ;it's browser
1368
    jne  nob5
1364
    jne  nob5
1369
 
1365
 
1370
    mov [urlx],48
1366
    mov [urlx],48
1371
    mov [urly],55
1367
    mov [urly],55
1372
    mov eax,[procinfo.box.width]
1368
    mov eax,[procinfo.box.width]
1373
    sub eax,48+10
1369
    sub eax,48+10
1374
    mov [urlxsize],eax
1370
    mov [urlxsize],eax
1375
    mov [urlysize],12
1371
    mov [urlysize],12
1376
 
1372
 
1377
    glabel 20,57,"URL:",cl_Black
1373
    glabel 20,57,"URL:",cl_Black
1378
 
1374
 
1379
;Out view mode info
1375
;Out view mode info
1380
	movzx	edx, [viewmode]
1376
	movzx	edx, [viewmode]
1381
	shl	edx, 4
1377
	shl	edx, 4
1382
    mov eax,4
1378
    mov eax,4
1383
    mov ebx,180*65536+25
1379
    mov ebx,180*65536+25
1384
    mov ecx,cl_Black
1380
    mov ecx,cl_Black
1385
    add edx,modetext
1381
    add edx,modetext
1386
    mov esi,16
1382
    mov esi,16
1387
    mcall
1383
    mcall
1388
 
1384
 
1389
;List size
1385
;List size
1390
    outcount [listsize],294,25,cl_Black,4*65536
1386
    outcount [listsize],294,25,cl_Black,4*65536
1391
    jmp isb5
1387
    jmp isb5
1392
 
1388
 
1393
iglobal
1389
iglobal
1394
head_dlg: db 'OPEN FILE'
-
 
1395
      db 'SAVE FILE'
-
 
-
 
1390
 
1396
but_dlg:  db 'OPEN'
1391
but_dlg:  db 'OPEN'
1397
      db 'SAVE'
1392
          db 'SAVE'
1398
endg
1393
endg
1399
 
1394
 
1400
nob5:
1395
nob5:
1401
 
1396
 
1402
    mov [urlx],10
1397
    mov [urlx],10
1403
    mov eax,[procinfo.box.height]
1398
    mov eax,[procinfo.box.height]
1404
    sub eax,24
1399
    sub eax,24
1405
    mov [urly],eax
1400
    mov [urly],eax
1406
    mov eax,[procinfo.box.width]
1401
    mov eax,[procinfo.box.width]
1407
    sub eax,80
1402
    sub eax,80
1408
    mov [urlxsize],eax
1403
    mov [urlxsize],eax
1409
    mov [urlysize],12
1404
    mov [urlysize],12
1410
 
1405
 
1411
    cmp byte [dlg_type],'O'    ;if byte O - is Open dialog
1406
    cmp byte [dlg_type],'O'    ;if byte O - is Open dialog
1412
    jne no_openh
1407
    jne no_openh
1413
    mov edx,head_dlg	      ;draw in head OPEN FILE
1408
    mcall 71,1,open_dlg	      ;draw in head OPEN FILE
1414
    jmp out_laby
1409
    jmp no_saveh
1415
no_openh:
1410
no_openh:
1416
    cmp byte [dlg_type],'S'    ;if byte S - is Save dialog
1411
    cmp byte [dlg_type],'S'    ;if byte S - is Save dialog
1417
    jne no_saveh
1412
    jne no_saveh
1418
    mov edx,head_dlg+9	      ;draw in head SAVE FILE
1413
    mcall 71,1,save_dlg	      ;draw in head SAVE FILE
1419
out_laby:
1414
    
1420
    mov ebx,8*65536+8
-
 
1421
    mov ecx,[sc.grab_text]    ; color of text RRGGBB
-
 
1422
    or	    ecx,0x10000000
-
 
1423
    mov esi,9
-
 
1424
    mov eax,4
-
 
1425
    mcall
-
 
1426
no_saveh:
1415
no_saveh:
1427
 
1416
 
1428
 
1417
 
1429
;Draw OPEN\SAVE button
1418
;Draw OPEN\SAVE button
1430
    mov ebx,0*65536+50
1419
    mov ebx,0*65536+50
1431
    mov ecx,0*65536+12
1420
    mov ecx,0*65536+12
1432
    mov eax,[procinfo.box.width]
1421
    mov eax,[procinfo.box.width]
1433
    sub eax,63
1422
    sub eax,63
1434
    shl eax,16
1423
    shl eax,16
1435
    add ebx,eax
1424
    add ebx,eax
1436
    mov eax,[procinfo.box.height]
1425
    mov eax,[procinfo.box.height]
1437
    sub eax,25
1426
    sub eax,25
1438
    shl eax,16
1427
    shl eax,16
1439
    add ecx,eax
1428
    add ecx,eax
1440
    mov  eax,8
1429
    mov  eax,8
1441
    mov  edx,5 ;button ID
1430
    mov  edx,5 ;button ID
1442
    mov  esi,0x006699aa  ;gradient!!!
1431
    mov  esi,0x006699aa  ;gradient!!!
1443
    mcall
1432
    mcall
1444
 
1433
 
1445
; label OPEN or SAVE
1434
; label OPEN or SAVE
1446
    mov ebx,[procinfo.box.width]
1435
    mov ebx,[procinfo.box.width]
1447
    sub ebx,48
1436
    sub ebx,48
1448
    mov eax,[procinfo.box.height]
1437
    mov eax,[procinfo.box.height]
1449
    sub eax,22
1438
    sub eax,22
1450
    shl ebx,16
1439
    shl ebx,16
1451
    add ebx,eax
1440
    add ebx,eax
1452
 
1441
 
1453
    cmp byte [dlg_type],'O'    ;if byte O - is Open dialog
1442
    cmp byte [dlg_type],'O'    ;if byte O - is Open dialog
1454
    jne no_openb
1443
    jne no_openb
1455
    mov edx,but_dlg	   ;draw in head OPEN FILE
1444
    mov edx,but_dlg	   ;draw in head OPEN FILE
1456
    jmp out_labx
1445
    jmp out_labx
1457
no_openb:
1446
no_openb:
1458
    cmp byte [dlg_type],'S'    ;if byte S - is Save dialog
1447
    cmp byte [dlg_type],'S'    ;if byte S - is Save dialog
1459
    jne no_saveb
1448
    jne no_saveb
1460
    mov edx,but_dlg+4	       ;draw in head SAVE FILE
1449
    mov edx,but_dlg+4	       ;draw in head SAVE FILE
1461
out_labx:
1450
out_labx:
1462
    mov ecx,cl_White
1451
    mov ecx,cl_White
1463
    mov esi,4
1452
    mov esi,4
1464
    mov eax,4
1453
    mov eax,4
1465
    mcall
1454
    mcall
1466
no_saveb:
1455
no_saveb:
1467
 
1456
 
1468
isb5:
1457
isb5:
1469
 
1458
 
1470
anti_flick:
1459
anti_flick:
1471
 
1460
 
1472
    cmp [flick],2
1461
    cmp [flick],2
1473
    je draw_url
1462
    je draw_url
1474
    cmp [flick],0
1463
    cmp [flick],0
1475
    jne no_flick_url
1464
    jne no_flick_url
1476
 
1465
 
1477
;***************************
1466
;***************************
1478
;    DRAW URL LINE
1467
;    DRAW URL LINE
1479
;***************************
1468
;***************************
1480
draw_url:
1469
draw_url:
1481
 
1470
 
1482
;Draw URL focus button
1471
;Draw URL focus button
1483
    mov ebx,[urlx]
1472
    mov ebx,[urlx]
1484
    shl ebx,16
1473
    shl ebx,16
1485
    add ebx,[urlxsize]
1474
    add ebx,[urlxsize]
1486
    mov ecx,[urly]
1475
    mov ecx,[urly]
1487
    shl ecx,16
1476
    shl ecx,16
1488
    add ecx,[urlysize]
1477
    add ecx,[urlysize]
1489
    dec ebx
1478
    dec ebx
1490
    dec ecx
1479
    dec ecx
1491
    mov  eax,8
1480
    mov  eax,8
1492
    mov  edx,2 ;button ID
1481
    mov  edx,2 ;button ID
1493
    mov  esi,0x00aaaaaa  ;gradient!!!
1482
    mov  esi,0x00aaaaaa  ;gradient!!!
1494
    mcall
1483
    mcall
1495
 
1484
 
1496
;Draw URL String
1485
;Draw URL String
1497
    mov eax,13
1486
    mov eax,13
1498
    mov edx,cl_Black
1487
    mov edx,cl_Black
1499
    mcall
1488
    mcall
1500
    add ebx,1*65536-2+1
1489
    add ebx,1*65536-2+1
1501
    add ecx,1*65536-2+1
1490
    add ecx,1*65536-2+1
1502
    mov edx,cl_White
1491
    mov edx,cl_White
1503
    mcall
1492
    mcall
1504
 
1493
 
1505
;Draw URL Cursor
1494
;Draw URL Cursor
1506
    mov eax,6
1495
    mov eax,6
1507
    mul [cursor]
1496
    mul [cursor]
1508
    mov ebx,[urlx]
1497
    mov ebx,[urlx]
1509
    add ebx,eax
1498
    add ebx,eax
1510
    shl ebx,16
1499
    shl ebx,16
1511
    add ebx,2*65536+1
1500
    add ebx,2*65536+1
1512
    mov ecx,[urly]
1501
    mov ecx,[urly]
1513
    shl ecx,16
1502
    shl ecx,16
1514
    add ecx,[urlysize]
1503
    add ecx,[urlysize]
1515
    add ecx,2*65536-4
1504
    add ecx,2*65536-4
1516
    mov eax,13
1505
    mov eax,13
1517
    mov edx,cl_Black
1506
    mov edx,cl_Black
1518
    mcall
1507
    mcall
1519
 
1508
 
1520
; OUT TEXT
1509
; OUT TEXT
1521
    mov eax,[urlxsize]	    ;calculating text leight
1510
    mov eax,[urlxsize]	    ;calculating text leight
1522
    sub eax,8
1511
    sub eax,8
1523
    mov ebx,6
1512
    mov ebx,6
1524
    div ebx
1513
    div ebx
1525
    mov esi,eax
1514
    mov esi,eax
1526
 
1515
 
1527
    mov  ebx,[urlx]
1516
    mov  ebx,[urlx]
1528
    shl  ebx,16
1517
    shl  ebx,16
1529
    add  ebx,[urly]
1518
    add  ebx,[urly]
1530
    add  ebx,3*65536+2
1519
    add  ebx,3*65536+2
1531
    mov  eax,4		   ; function 4 : write text to window
1520
    mov  eax,4		   ; function 4 : write text to window
1532
    mov  ecx,0x00000000 ;[sc.grab_text] ; color of text RRGGBB
1521
    mov  ecx,0x00000000 ;[sc.grab_text] ; color of text RRGGBB
1533
    mov  edx,path	 ; pointer to text beginning
1522
    mov  edx,path	 ; pointer to text beginning
1534
    mcall
1523
    mcall
1535
 
1524
 
1536
    cmp  [flick],2
1525
    cmp  [flick],2
1537
    jne  no_flick_url
1526
    jne  no_flick_url
1538
    mov  [flick],0
1527
    mov  [flick],0
1539
    jmp  still
1528
    jmp  still
1540
no_flick_url:
1529
no_flick_url:
1541
 
1530
 
1542
 
1531
 
1543
;***************************
1532
;***************************
1544
;    DRAW FILE LIST
1533
;    DRAW FILE LIST
1545
;***************************
1534
;***************************
1546
 
1535
 
1547
;Draw Scroll Line
1536
;Draw Scroll Line
1548
    mov eax,13
1537
    mov eax,13
1549
 
1538
 
1550
    mov ebx,[listx]
1539
    mov ebx,[listx]
1551
    add ebx,[listxsize]
1540
    add ebx,[listxsize]
1552
    sub ebx,[scrollsize]
1541
    sub ebx,[scrollsize]
1553
    shl ebx,16
1542
    shl ebx,16
1554
    add ebx,dword [scrollsize]
1543
    add ebx,dword [scrollsize]
1555
    mov ecx,[listy]
1544
    mov ecx,[listy]
1556
    add ecx,scrollbutsize
1545
    add ecx,scrollbutsize
1557
    shl ecx,16
1546
    shl ecx,16
1558
    add ecx,[listysize]
1547
    add ecx,[listysize]
1559
    sub ecx,scrollbutsize*2
1548
    sub ecx,scrollbutsize*2
1560
    mov edx,[scrollcolor] ;0x00006600
1549
    mov edx,[scrollcolor] ;0x00006600
1561
    mcall
1550
    mcall
1562
 
1551
 
1563
;Draw Scroll Box
1552
;Draw Scroll Box
1564
    mov  edx,0
1553
    mov  edx,0
1565
    mov  eax,[listysize]
1554
    mov  eax,[listysize]
1566
    sub  eax,2
1555
    sub  eax,2
1567
    mov  ebx,dword 10
1556
    mov  ebx,dword 10
1568
    div  ebx
1557
    div  ebx
1569
 
1558
 
1570
    mov ebx,eax
1559
    mov ebx,eax
1571
    cmp ebx,[listsize]	    ;filelistsize in ebx
1560
    cmp ebx,[listsize]	    ;filelistsize in ebx
1572
    jae    notusescroll
1561
    jae    notusescroll
1573
;usescroll
1562
;usescroll
1574
; calculate scroll size
1563
; calculate scroll size
1575
	mov	eax, [listysize]
1564
	mov	eax, [listysize]
1576
	sub	eax, 2*scrollbutsize
1565
	sub	eax, 2*scrollbutsize
1577
	push	eax
1566
	push	eax
1578
	mul	ebx
1567
	mul	ebx
1579
	div	[listsize]
1568
	div	[listsize]
1580
	cmp	eax, 5
1569
	cmp	eax, 5
1581
	jae	@f
1570
	jae	@f
1582
	mov	al, 5
1571
	mov	al, 5
1583
@@:
1572
@@:
1584
	mov	[scroll_height], eax
1573
	mov	[scroll_height], eax
1585
; calculate scroll pos
1574
; calculate scroll pos
1586
	sub	[esp], eax
1575
	sub	[esp], eax
1587
	mov	eax, [listsize]
1576
	mov	eax, [listsize]
1588
	sub	eax, ebx
1577
	sub	eax, ebx
1589
	mov	ecx, eax
1578
	mov	ecx, eax
1590
	cmp	eax, [filecursor]
1579
	cmp	eax, [filecursor]
1591
	jb	@f
1580
	jb	@f
1592
	mov	eax, [filecursor]
1581
	mov	eax, [filecursor]
1593
@@:
1582
@@:
1594
	mul	dword [esp]
1583
	mul	dword [esp]
1595
	div	ecx
1584
	div	ecx
1596
	mov	[scroll_pos], eax
1585
	mov	[scroll_pos], eax
1597
	pop	ecx
1586
	pop	ecx
1598
; draw
1587
; draw
1599
	lea	ecx, [eax+scrollbutsize]
1588
	lea	ecx, [eax+scrollbutsize]
1600
	add	ecx, [listy]
1589
	add	ecx, [listy]
1601
	shl	ecx, 16
1590
	shl	ecx, 16
1602
	mov	cx, word [scroll_height]
1591
	mov	cx, word [scroll_height]
1603
	mov	eax, 13
1592
	mov	eax, 13
1604
	mov	ebx, [listx]
1593
	mov	ebx, [listx]
1605
	add	ebx, [listxsize]
1594
	add	ebx, [listxsize]
1606
	sub	ebx, [scrollsize]
1595
	sub	ebx, [scrollsize]
1607
	shl	ebx, 16
1596
	shl	ebx, 16
1608
	mov	bx, word [scrollsize]
1597
	mov	bx, word [scrollsize]
1609
	mov	edx, [scrollboxcol]
1598
	mov	edx, [scrollboxcol]
1610
	mcall
1599
	mcall
1611
notusescroll:
1600
notusescroll:
1612
 
1601
 
1613
 
1602
 
1614
;Draw list button for get file name
1603
;Draw list button for get file name
1615
    mov  ebx,[listx]
1604
    mov  ebx,[listx]
1616
    shl  ebx,16
1605
    shl  ebx,16
1617
    add  ebx,[listxsize]
1606
    add  ebx,[listxsize]
1618
    sub  ebx,15      ;right free zone
1607
    sub  ebx,15      ;right free zone
1619
    sub  ebx,[scrollsize]
1608
    sub  ebx,[scrollsize]
1620
    mov  ecx,[listy]
1609
    mov  ecx,[listy]
1621
    shl  ecx,16
1610
    shl  ecx,16
1622
    add  ecx,[listysize]
1611
    add  ecx,[listysize]
1623
 
1612
 
1624
    mov  eax,8
1613
    mov  eax,8
1625
    mov  edx,4+1000000000000000000000000000000b  ;spoke butt
1614
    mov  edx,4+0x60000000
1626
    mcall
1615
    mcall
1627
 
1616
 
1628
    add  ebx,15
1617
    add  ebx,15
1629
    mov  eax,13
1618
    mov  eax,13
-
 
1619
	sub  ebx,[scrollsize]   ;leency
1630
    mov  edx,[listcolor] ;ffffff
1620
    mov  edx,[listcolor] ;ffffff
1631
    mcall
1621
    mcall
1632
 
1622
 
1633
;Draw up/down buttons
1623
;Draw up/down buttons
1634
    mov  ebx,[listx]
1624
    mov  ebx,[listx]
1635
    add  ebx,[listxsize]
1625
    add  ebx,[listxsize]
1636
    sub  ebx,[scrollsize]
1626
    sub  ebx,[scrollsize]
1637
    shl  ebx,16
1627
    shl  ebx,16
1638
    add  ebx,[scrollsize]
1628
    add  ebx,[scrollsize]
1639
    mov  ecx,[listy]
1629
    mov  ecx,[listy]
1640
    shl  ecx,16
1630
    shl  ecx,16
1641
    add  ecx,scrollbutsize-1
1631
    add  ecx,scrollbutsize-1
1642
    mov  eax,8
1632
    mov  eax,8
1643
    mov  edx,6+1000000000000000000000000000000b  ;spoke butt
1633
    mov  edx,6+1000000000000000000000000000000b  ;spoke butt
1644
    mcall
1634
    mcall
1645
 
1635
 
1646
    inc  ecx
1636
    inc  ecx
1647
    mov  eax,13
1637
    mov  eax,13
1648
    mov  edx,[scrollbutcol] ;ffffff
1638
    mov  edx,[scrollbutcol]
1649
    mcall
1639
    mcall
1650
 
1640
 
1651
; Draw image on up button
1641
; Draw image on up button
1652
    pushad
1642
    pushad
1653
    shr  ebx,16
1643
    shr  ebx,16
1654
    mov  edx,ebx
1644
    mov  edx,ebx
1655
    shl  edx,16
1645
    shl  edx,16
1656
    shr  ecx,16
1646
    shr  ecx,16
1657
    add  edx,ecx
1647
    add  edx,ecx
1658
    mov  ecx,8*65536+9
1648
    mov  ecx,8*65536+9
1659
    mov  ebx,upsb+8
1649
    mov  ebx,upsb+8
1660
    mov  eax,7
1650
    mov  eax,7
1661
    mcall
1651
    mcall
1662
    popad
1652
    popad
1663
 
1653
 
1664
 
1654
 
1665
    dec  ecx	 ;correction
1655
    dec  ecx	 ;correction
1666
    mov  edx,7+1000000000000000000000000000000b  ;spoke butt
1656
    mov  edx,7+1000000000000000000000000000000b  ;spoke butt
1667
    mov  eax,[listysize]
1657
    mov  eax,[listysize]
1668
    sub  eax,scrollbutsize
1658
    sub  eax,scrollbutsize
1669
    shl  eax,16
1659
    shl  eax,16
1670
    add  ecx,eax
1660
    add  ecx,eax
1671
 
1661
 
1672
    mov  eax,8
1662
    mov  eax,8
1673
    mcall
1663
    mcall
1674
 
1664
 
1675
    inc  ecx
1665
    inc  ecx
1676
    mov  eax,13
1666
    mov  eax,13
1677
    mov  edx,[scrollbutcol] ;ffffff
1667
    mov  edx,[scrollbutcol] ;ffffff
1678
    mcall
1668
    mcall
1679
 
1669
 
1680
; Draw image on down button
1670
; Draw image on down button
1681
    pushad
1671
    pushad
1682
    shr  ebx,16
1672
    shr  ebx,16
1683
    mov  edx,ebx
1673
    mov  edx,ebx
1684
    shl  edx,16
1674
    shl  edx,16
1685
    shr  ecx,16
1675
    shr  ecx,16
1686
    add  edx,ecx
1676
    add  edx,ecx
1687
    mov  ecx,8*65536+9
1677
    mov  ecx,8*65536+9
1688
    mov  ebx,dnsb+8
1678
    mov  ebx,dnsb+8
1689
    mov  eax,7
1679
    mov  eax,7
1690
    mcall
1680
    mcall
1691
    popad
1681
    popad
1692
 
1682
 
1693
 
1683
 
1694
; Draw text in file list
1684
; Draw text in file list
1695
 
1685
 
1696
;    mov  eax,[listxsize]
1686
;    mov  eax,[listxsize]
1697
;    sub  eax,40*6  ;leight of string
1687
;    sub  eax,40*6  ;leight of string
1698
;    shr  eax,1
1688
;    shr  eax,1
1699
;    add  eax,[listx]
1689
;    add  eax,[listx]
1700
	mov	eax, [listx]
1690
	mov	eax, [listx]
1701
	add	eax, 12+4 ; for icons
1691
	add	eax, 12+4 ; for icons
1702
    shl  eax,16
1692
    shl  eax,16
1703
    add  eax,[listy]
1693
    add  eax,[listy]
1704
    add  eax,2
1694
    add  eax,2
1705
 
1695
 
1706
    mov  [filelistxy],eax ;dword 19*65536+58
1696
    mov  [filelistxy],eax ;dword 19*65536+58
1707
 
1697
 
1708
    mov  edx,0
1698
    mov  edx,0
1709
    mov  eax,[listysize]
1699
    mov  eax,[listysize]
1710
    sub  eax,2
1700
    sub  eax,2
1711
    mov  ebx,dword 10
1701
    mov  ebx,dword 10
1712
    div  ebx
1702
    div  ebx
1713
    mov  [filelistsize],eax  ;dword 40
1703
    mov  [filelistsize],eax  ;dword 40
1714
 
1704
 
1715
; OUT FILE DATA
1705
; OUT FILE DATA
1716
    mov  eax,[filecursor]     ;calc cursor position
1706
    mov  eax,[filecursor]     ;calc cursor position
1717
    mov  ebx,27
1707
    mov  ebx,27
1718
    mul  ebx
1708
    mul  ebx
1719
 
1709
 
1720
;OUT TEXT
1710
;OUT TEXT
1721
    mov  ebp,4096 ; 16             ;out strings process
1711
    mov  ebp,4096 ; 16             ;out strings process
1722
    sub  ebp,[filecursor]
1712
    sub  ebp,[filecursor]
1723
    mov  edx,convinfo ;fileinfo+11
1713
    mov  edx,convinfo ;fileinfo+11
1724
    add  edx,eax
1714
    add  edx,eax
1725
    mov  ebx,dword [filelistxy]
1715
    mov  ebx,dword [filelistxy]
1726
loo:
1716
loo:
1727
	cmp	dword [edx], -1
1717
	cmp	dword [edx], -1
1728
	jz	noout
1718
	jz	noout
1729
    mov  ecx,0x00888888        ;for another file's color white
1719
    mov  ecx,0x00888888        ;for another file's color white
1730
    cmp  [edx+15],dword 'FOL ' ;folder yellow
1720
    cmp  [edx+15],dword 'FOL ' ;folder yellow
1731
    jne  nb
1721
    jne  nb
1732
    mov  ecx,0x00006666
1722
    mov  ecx,0x00006666
1733
    jmp cset1
1723
    jmp cset1
1734
nb:
1724
nb:
1735
	mov	eax, [edx]
1725
	mov	eax, [edx]
1736
	xor	edi, edi
1726
	xor	edi, edi
1737
; find extension and set color
1727
; find extension and set color
1738
@@:
1728
@@:
1739
	inc	eax
1729
	inc	eax
1740
	cmp	byte [eax-1], 0
1730
	cmp	byte [eax-1], 0
1741
	jz	@f
1731
	jz	@f
1742
	cmp	byte [eax-1], '.'
1732
	cmp	byte [eax-1], '.'
1743
	jnz	@b
1733
	jnz	@b
1744
	mov	edi, eax
1734
	mov	edi, eax
1745
	jmp	@b
1735
	jmp	@b
1746
@@:
1736
@@:
1747
	test	edi, edi
1737
	test	edi, edi
1748
	jz	@f
1738
	jz	@f
1749
	mov	edi, [edi]
1739
	mov	edi, [edi]
1750
	and	edi, not 0x20202020	; toupper
1740
	and	edi, not 0x20202020	; toupper
1751
@@:
1741
@@:
1752
;Color set
1742
;Color set
1753
; text's blue
1743
; text's blue
1754
	mov	ecx, 0x00446666
1744
	mov	ecx, 0x00446666
1755
	cmp	edi, 'TXT'
1745
	cmp	edi, 'TXT'
1756
	jz	cset
1746
	jz	cset
1757
	cmp	edi, 'INC'
1747
	cmp	edi, 'INC'
1758
	jz	cset
1748
	jz	cset
1759
	cmp	edi, 'ASM'
1749
	cmp	edi, 'ASM'
1760
	jz	cset
1750
	jz	cset
1761
	cmp	edi, 'RTF'
1751
	cmp	edi, 'RTF'
1762
	jz	cset
1752
	jz	cset
1763
; picture's pure
1753
; picture's pure
1764
	mov	ecx, 0x00226688
1754
	mov	ecx, 0x00226688
1765
	cmp	edi, 'BMP'
1755
	cmp	edi, 'BMP'
1766
	jz	cset
1756
	jz	cset
1767
	cmp	edi, 'JPG'
1757
	cmp	edi, 'JPG'
1768
	jz	cset
1758
	jz	cset
1769
	cmp	edi, 'JPEG'
1759
	cmp	edi, 'JPEG'
1770
	jz	cset
1760
	jz	cset
1771
	cmp	edi, 'GIF'
1761
	cmp	edi, 'GIF'
1772
	jz	cset
1762
	jz	cset
1773
	cmp	edi, 'PNG'
1763
	cmp	edi, 'PNG'
1774
	jz	cset
1764
	jz	cset
1775
	cmp	edi, 'WAV'
1765
	cmp	edi, 'WAV'
1776
	jz	cset
1766
	jz	cset
1777
	cmp	edi, 'MID'
1767
	cmp	edi, 'MID'
1778
	jz	cset
1768
	jz	cset
1779
; execute's green
1769
; execute's green
1780
	mov	ecx, 0x00008866
1770
	mov	ecx, 0x00008866
1781
	test	edi, edi
1771
	test	edi, edi
1782
	jz	cset
1772
	jz	cset
1783
; for another file's color white
1773
; for another file's color white
1784
	mov	ecx, 0x00888888
1774
	mov	ecx, 0x00888888
1785
cset:
1775
cset:
1786
 
1776
 
1787
cset1:
1777
cset1:
1788
    push edx
1778
    push edx
1789
    mov  edx,[edx]
1779
    mov  edx,[edx]
1790
	push	ebx edx
1780
	push	ebx edx
1791
	mov	eax, [listxsize]
1781
	mov	eax, [listxsize]
1792
	sub	eax, [scrollsize]
1782
	sub	eax, [scrollsize]
1793
	sub	eax, 12+4
1783
	sub	eax, 12+4
1794
	xor	edx, edx
1784
	xor	edx, edx
1795
	mov	ebx, 6
1785
	mov	ebx, 6
1796
	div	ebx
1786
	div	ebx
1797
	pop	edx ebx
1787
	pop	edx ebx
1798
	sub	eax, 25
1788
	sub	eax, 25
1799
	xor	esi, esi
1789
	xor	esi, esi
1800
@@:
1790
@@:
1801
	cmp	byte [edx+esi], 0
1791
	cmp	byte [edx+esi], 0
1802
	jz	@f
1792
	jz	@f
1803
	inc	esi
1793
	inc	esi
1804
	cmp	esi, eax
1794
	cmp	esi, eax
1805
	jbe	@b
1795
	jbe	@b
1806
	dec	esi
1796
	dec	esi
1807
@@:
1797
@@:
1808
	push	eax
1798
	push	eax
1809
    mov  eax,4
1799
    mov  eax,4
1810
    mcall
1800
    mcall
1811
	cmp	byte [edx+esi], 0
1801
	cmp	byte [edx+esi], 0
1812
	jz	@f
1802
	jz	@f
1813
	pushad
1803
	pushad
1814
	mov	edx, more_char
1804
	mov	edx, more_char
1815
	mov	eax, esi
1805
	mov	eax, esi
1816
	imul	eax, 6*65536
1806
	imul	eax, 6*65536
1817
	add	ebx, eax
1807
	add	ebx, eax
1818
	mov	esi, 1
1808
	mov	esi, 1
1819
	mov	eax, 4
1809
	mov	eax, 4
1820
	mcall
1810
	mcall
1821
	popad
1811
	popad
1822
@@:
1812
@@:
1823
	pop	eax
1813
	pop	eax
1824
    pop  edx
1814
    pop  edx
1825
    push ebx edx
1815
    push ebx edx
1826
	inc	eax
1816
	inc	eax
1827
	imul	eax, 6*65536
1817
	imul	eax, 6*65536
1828
	add	ebx, eax
1818
	add	ebx, eax
1829
    add  edx,4
1819
    add  edx,4
1830
    mov  esi,23
1820
    mov  esi,23
1831
    mov  eax,4
1821
    mov  eax,4
1832
    mcall
1822
    mcall
1833
    pop  edx ebx
1823
    pop  edx ebx
1834
 
1824
 
1835
    pushad
1825
    pushad
1836
    cmp  [edx+15],dword 'Fvol' ;volume label
1826
    cmp  [edx+15],dword 'Fvol' ;volume label
1837
    jne  no_volico
1827
    jne  no_volico
1838
    push hdico+8
1828
    push hdico+8
1839
    jmp out_ico
1829
    jmp out_ico
1840
no_volico:
1830
no_volico:
1841
    cmp  [edx+15],dword 'FOL '
1831
    cmp  [edx+15],dword 'FOL '
1842
    jne  no_folico
1832
    jne  no_folico
1843
    cmp  [edx+4],dword 'HARD'
1833
    cmp  [edx+4],dword 'HARD'
1844
    jne  no_hdico
1834
    jne  no_hdico
1845
    push hdico+8
1835
    push hdico+8
1846
    jmp out_ico
1836
    jmp out_ico
1847
no_hdico:
1837
no_hdico:
1848
    cmp  [edx+4],dword 'RAMD'
1838
    cmp  [edx+4],dword 'RAMD'
1849
    jne  no_rdico
1839
    jne  no_rdico
1850
    push rdico+8
1840
    push rdico+8
1851
    jmp out_ico
1841
    jmp out_ico
1852
no_rdico:
1842
no_rdico:
1853
    cmp  [edx+4],dword 'FLOP'
1843
    cmp  [edx+4],dword 'FLOP'
1854
    jne  no_fdico
1844
    jne  no_fdico
1855
    push rdico+8
1845
    push rdico+8
1856
    jmp out_ico
1846
    jmp out_ico
1857
no_fdico:
1847
no_fdico:
1858
    cmp  [edx+4],dword 'CD-R'
1848
    cmp  [edx+4],dword 'CD-R'
1859
    jne  no_cdico
1849
    jne  no_cdico
1860
    push cdico+8
1850
    push cdico+8
1861
    jmp out_ico
1851
    jmp out_ico
1862
no_cdico:
1852
no_cdico:
1863
    push folico+8
1853
    push folico+8
1864
    jmp out_ico
1854
    jmp out_ico
1865
no_folico:
1855
no_folico:
1866
    cmp  edi,dword 'BMP'
1856
    cmp  edi,dword 'BMP'
1867
    je	     is_imgico
1857
    je	     is_imgico
1868
    cmp  edi,dword 'JPG'
1858
    cmp  edi,dword 'JPG'
1869
    je	     is_imgico
1859
    je	     is_imgico
1870
    cmp  edi,dword 'JPEG'
1860
    cmp  edi,dword 'JPEG'
1871
    je	     is_imgico
1861
    je	     is_imgico
1872
    cmp  edi,dword 'GIF'
1862
    cmp  edi,dword 'GIF'
1873
    je	     is_imgico
1863
    je	     is_imgico
1874
; //// Willow
-
 
1875
    cmp  edi,dword 'PNG'
1864
    cmp  edi,dword 'PNG'
1876
    je	 is_imgico
1865
    je	     is_imgico
-
 
1866
    cmp  edi,dword 'ICO'
1877
; //// Willow
1867
    je	     is_imgico
-
 
1868
	
1878
    cmp  edi,dword 'WAV'
1869
    cmp  edi,dword 'WAV'
1879
    je	     is_imgico
1870
    je	     is_imgico
1880
    cmp  edi,dword 'MID'
1871
    cmp  edi,dword 'MID'
1881
    je	     is_imgico
1872
    je	     is_imgico
1882
    cmp  edi,dword 'MP3'
1873
    cmp  edi,dword 'MP3'
1883
    je	     is_imgico
1874
    je	     is_imgico
1884
    cmp  edi,dword 'XM'
1875
    cmp  edi,dword 'XM'
1885
    je	     is_imgico
1876
    je	     is_imgico
1886
    jmp  no_imgico
1877
    jmp  no_imgico
1887
is_imgico:
1878
is_imgico:
1888
    push imgico+8
1879
    push imgico+8
1889
    jmp out_ico
1880
    jmp out_ico
1890
no_imgico:
1881
no_imgico:
1891
    cmp  edi,dword 'ASM'
1882
    cmp  edi,dword 'ASM'
1892
    je	     is_asmincico
1883
    je	     is_asmincico
1893
    cmp  edi,dword 'INC'
1884
    cmp  edi,dword 'INC'
1894
    je	     is_asmincico
1885
    je	     is_asmincico
1895
    cmp  edi,dword 'INI'
1886
    cmp  edi,dword 'INI'
1896
    je	     is_asmincico
1887
    je	     is_asmincico
1897
    cmp  edi,dword 'CONF'
1888
    cmp  edi,dword 'CONF'
1898
    je	     is_asmincico
1889
    je	     is_asmincico
1899
    jmp  no_asmincico
1890
    jmp  no_asmincico
1900
is_asmincico:
1891
is_asmincico:
1901
    push asmincico+8
1892
    push asmincico+8
1902
    jmp out_ico
1893
    jmp out_ico
1903
no_asmincico:
1894
no_asmincico:
1904
    cmp  edi,dword 'RTF'
1895
    cmp  edi,dword 'RTF'
1905
    je	 @f
1896
    je	 @f
1906
    cmp  edi,dword 'TXT'
1897
    cmp  edi,dword 'TXT'
1907
    jne  no_txtico
1898
    jne  no_txtico
1908
    cmp  edi,dword 'LOG'
1899
    cmp  edi,dword 'LOG'
1909
    jne  no_txtico
1900
    jne  no_txtico
1910
 @@:
1901
 @@:
1911
    push txtico+8
1902
    push txtico+8
1912
    jmp out_ico
1903
    jmp out_ico
1913
no_txtico:
1904
no_txtico:
1914
    test edi,edi
1905
    test edi,edi
1915
    jne  no_execico
1906
    jne  no_execico
1916
    push execico+8
1907
    push execico+8
1917
    jmp out_ico
1908
    jmp out_ico
1918
no_execico:
1909
no_execico:
1919
    cmp  [edx+15],dword 'DAT '
1910
    cmp  [edx+15],dword 'DAT '
1920
    jne  no_datico
1911
    jne  no_datico
1921
    push datico+8
1912
    push datico+8
1922
    jmp out_ico
1913
    jmp out_ico
1923
no_datico:
1914
no_datico:
1924
    cmp  [edx+15],dword 'DEL '
1915
    cmp  [edx+15],dword 'DEL '
1925
    jne  no_out_ico
1916
    jne  no_out_ico
1926
    push delico+8
1917
    push delico+8
1927
    jmp out_ico
1918
    jmp out_ico
1928
out_ico:
1919
out_ico:
1929
 
1920
 
1930
    mov  edx,ebx
1921
    mov  edx,ebx
1931
    sub  edx,14*65536+1
1922
    sub  edx,14*65536+1
1932
    mov  ecx,12*65536+9
1923
    mov  ecx,12*65536+9
1933
;    mov  ebx,upsb+8
1924
;    mov  ebx,upsb+8
1934
    pop  ebx
1925
    pop  ebx
1935
    mov  eax,7
1926
    mov  eax,7
1936
    mcall
1927
    mcall
1937
no_out_ico:
1928
no_out_ico:
1938
    popad
1929
    popad
1939
 
1930
 
1940
 
1931
 
1941
    add  ebx,10
1932
    add  ebx,10
1942
noout:
1933
noout:
1943
    add  edx,27
1934
    add  edx,27
1944
 
1935
 
1945
    dec  [filelistsize]
1936
    dec  [filelistsize]
1946
    jz	     extloo
1937
    jz	     extloo
1947
 
1938
 
1948
    dec  ebp
1939
    dec  ebp
1949
    jnz  loo
1940
    jnz  loo
1950
dext:
1941
dext:
1951
    mov [downstop],1
1942
    mov [downstop],1
1952
 
1943
 
1953
extloo:
1944
extloo:
1954
 
1945
 
1955
    cmp  [browser], 1 ;it's browser
1946
    cmp  [browser], 1 ;it's browser
1956
    jne  nob8
1947
    jne  nob8
1957
 
1948
 
1958
;Draw text for head->file buttons
1949
;Draw text for head->file buttons
1959
    cmp [drawhf],1
1950
    cmp [drawhf],1
1960
    jne  no_drawhftext
1951
    jne  no_drawhftext
1961
    drawfbox 8,35,(6*12)+1,11*8,0x00000000
1952
    drawfbox 8,35,(6*12)+1,11*8,0x00000000
1962
    drawfbox 9,36,(6*12)-1,(11*8)-2,0x00ffffff
1953
    drawfbox 9,36,(6*12)-1,(11*8)-2,0x00ffffff
1963
 
1954
 
1964
    mov edi,8
1955
    mov edi,8
1965
    mov ebx,9*65536+37
1956
    mov ebx,9*65536+37
1966
    mov ecx,cl_Black
1957
    mov ecx,cl_Black
1967
    mov edx,file_text_label
1958
    mov edx,file_text_label
1968
    call drawmenu
1959
    call drawmenu
1969
 
1960
 
1970
iglobal
1961
iglobal
1971
file_text_label:
1962
file_text_label:
1972
    db	     '    Open    '
1963
    db	     '    Open    '
1973
    db	     '    Copy    '
1964
    db	     '    Copy    '
1974
    db	     '    Paste   '
1965
    db	     '    Paste   '
1975
    db	     '   Delete   '
1966
    db	     '   Delete   '
1976
    db	     '   Tinypad  '
1967
    db	     '   Tinypad  '
1977
    db	     '    Edit    '
1968
    db	     '    Edit    '
1978
    db	     '            '
1969
    db	     '            '
1979
    db	     '    Exit    '
1970
    db	     '    Exit    '
1980
endg
1971
endg
1981
 
1972
 
1982
no_drawhftext:
1973
no_drawhftext:
1983
 
1974
 
1984
;Draw text for head->view buttons
1975
;Draw text for head->view buttons
1985
    cmp [drawhv],1
1976
    cmp [drawhv],1
1986
    jne  no_drawhvtext
1977
    jne  no_drawhvtext
1987
    drawfbox (8+6*8),35,(6*12)+1,(11*4),0x00000000
1978
    drawfbox (8+6*8),35,(6*12)+1,(11*4),0x00000000
1988
    drawfbox (9+6*8),36,(6*12)-1,(11*4)-2,0x00ffffff
1979
    drawfbox (9+6*8),36,(6*12)-1,(11*4)-2,0x00ffffff
1989
 
1980
 
1990
    mov edi,4
1981
    mov edi,4
1991
    mov ebx,(9+6*8)*65536+37
1982
    mov ebx,(9+6*8)*65536+37
1992
    mov ecx,cl_Black
1983
    mov ecx,cl_Black
1993
    mov edx,view_text_label
1984
    mov edx,view_text_label
1994
    call drawmenu
1985
    call drawmenu
1995
 
1986
 
1996
iglobal
1987
iglobal
1997
view_text_label:
1988
view_text_label:
1998
    db	     '  Name sort '
1989
    db	     '  Name sort '
1999
    db	     '  Ext. sort '
1990
    db	     '  Ext. sort '
2000
    db	     '  Size sort '
1991
    db	     '  Size sort '
2001
    db	     '  Date sort '
1992
    db	     '  Date sort '
2002
endg
1993
endg
2003
 
1994
 
2004
no_drawhvtext:
1995
no_drawhvtext:
2005
 
1996
 
2006
;Draw text for head->info buttons
1997
;Draw text for head->info buttons
2007
    cmp [drawhi],1
1998
    cmp [drawhi],1
2008
    jne  no_drawhitext
1999
    jne  no_drawhitext
2009
    drawfbox (8+12*8),35,(6*12)+1,(11*2),0x00000000
2000
    drawfbox (8+12*8),35,(6*12)+1,(11*2),0x00000000
2010
    drawfbox (9+12*8),36,(6*12)-1,(11*2)-2,0x00ffffff
2001
    drawfbox (9+12*8),36,(6*12)-1,(11*2)-2,0x00ffffff
2011
 
2002
 
2012
    mov edi,2
2003
    mov edi,2
2013
    mov eax,4
2004
    mov eax,4
2014
    mov ebx,(9+12*8)*65536+37
2005
    mov ebx,(9+12*8)*65536+37
2015
    mov ecx,cl_Black
2006
    mov ecx,cl_Black
2016
    mov edx,info_text_label
2007
    mov edx,info_text_label
2017
    call drawmenu
2008
    call drawmenu
2018
 
2009
 
2019
iglobal
2010
iglobal
2020
info_text_label:
2011
info_text_label:
2021
    db	     '   Help     '
2012
    db	     '   Help     '
2022
    db	     '   About    '
2013
    db	     '   About    '
2023
endg
2014
endg
2024
 
2015
 
2025
no_drawhitext:
2016
no_drawhitext:
2026
 
2017
 
2027
nob8:
2018
nob8:
2028
    cmp  [flick],1
2019
    cmp  [flick],1
2029
    jne  no_flick
2020
    jne  no_flick
2030
    mov  [flick],0
2021
    mov  [flick],0
2031
    jmp  still
2022
    jmp  still
2032
no_flick:
2023
no_flick:
2033
 
-
 
2034
    mov  eax,12        ; function 12:tell os about windowdraw
-
 
2035
    mov  ebx,2		   ; 2, end of draw
-
 
2036
    mcall
-
 
2037
 
2024
 
2038
    ret
2025
    ret
2039
 
2026
 
2040
;FILE LIST PARAMETRS
2027
;FILE LIST PARAMETRS
2041
 
2028
 
2042
iglobal
2029
iglobal
2043
listx	    dd 15
2030
listx	    dd 15
2044
listy	    dd 72
2031
listy	    dd 72
2045
listxsize dd 350
2032
listxsize dd 350
2046
listysize dd 41
2033
listysize dd 41
2047
 
2034
 
2048
filelistxy    dd 0
2035
filelistxy    dd 0
2049
filelistsize  dd 0
2036
filelistsize  dd 0
2050
scrollsize    dd 8
2037
scrollsize    dd 8
2051
listcolor     dd 0xffffff ;0xeeeeee
2038
listcolor     dd 0xffffff ;0xeeeeee
2052
scrollcolor   dd 0x778877
2039
scrollcolor   dd 0x778877
2053
scrollboxcol  dd 0x335533
2040
scrollboxcol  dd 0x335533
2054
scrollbutcol  dd 0x224422
2041
scrollbutcol  dd 0x224422
2055
scrollbutsize = 9
2042
scrollbutsize = 9
2056
 
2043
 
2057
;URL LINE PARAMETRS
2044
;URL LINE PARAMETRS
2058
 
2045
 
2059
urlx	 dd 10
2046
urlx	 dd 10
2060
urly	 dd 20
2047
urly	 dd 20
2061
urlxsize dd 350
2048
urlxsize dd 350
2062
urlysize dd 12
2049
urlysize dd 12
2063
endg
2050
endg
2064
 
2051
 
2065
drawmenu:
2052
drawmenu:
2066
    mov eax,4
2053
    mov eax,4
2067
    mov esi,12
2054
    mov esi,12
2068
menuloo:
2055
menuloo:
2069
    mcall
2056
    mcall
2070
    add ebx,11
2057
    add ebx,11
2071
    add edx,12
2058
    add edx,12
2072
    dec edi
2059
    dec edi
2073
    jnz menuloo
2060
    jnz menuloo
2074
    ret
2061
    ret
2075
 
2062
 
2076
menubutton:
2063
menubutton:
2077
    mov  eax,8
2064
    mov  eax,8
2078
nextmenubut:
2065
nextmenubut:
2079
    mcall
2066
    mcall
2080
    add  ecx,11*65536
2067
    add  ecx,11*65536
2081
    inc  edx
2068
    inc  edx
2082
    dec  edi
2069
    dec  edi
2083
    jnz  nextmenubut
2070
    jnz  nextmenubut
2084
    ret
2071
    ret
2085
 
2072
 
2086
;*****************************
2073
;*****************************
2087
; READ FILE STRUCTURE PROC
2074
; READ FILE STRUCTURE PROC
2088
;*****************************
2075
;*****************************
2089
 
2076
 
2090
read_directory:
2077
read_directory:
2091
 
2078
 
2092
;STEP 1 CLEAR CONVINFO
2079
;STEP 1 CLEAR CONVINFO
2093
    mov  edi,convinfo
2080
    mov  edi,convinfo
2094
    mov  al,255
2081
    mov  al,255
2095
    mov  ecx,4096*27
2082
    mov  ecx,4096*27
2096
    cld
2083
    cld
2097
    push edi
2084
    push edi
2098
    rep  stosb
2085
    rep  stosb
2099
    pop  edi
2086
    pop  edi
2100
 
2087
 
2101
;STEP 2 TEST ON HD OR PARTITION
2088
;STEP 2 TEST ON HD OR PARTITION
2102
    cmp [path],byte '/'
2089
    cmp [path],byte '/'
2103
    je nstep
2090
    je nstep
2104
; copy info on RD and FD
2091
; copy info on RD and FD
2105
	mov	esi, hdimg
2092
	mov	esi, hdimg
2106
	mov	ecx, 2*27
2093
	mov	ecx, 2*27
2107
	rep	movsb
2094
	rep	movsb
2108
; hard disks
2095
; hard disks
2109
	mov	eax, 4
2096
	mov	eax, 4
2110
.1:
2097
.1:
2111
	mov	ecx, 27
2098
	mov	ecx, 27
2112
	cmp	dword [esi], 0
2099
	cmp	dword [esi], 0
2113
	jz	.2
2100
	jz	.2
2114
	rep	movsb
2101
	rep	movsb
2115
	jmp	.3
2102
	jmp	.3
2116
.2:
2103
.2:
2117
	add	esi, ecx
2104
	add	esi, ecx
2118
.3:
2105
.3:
2119
	dec	eax
2106
	dec	eax
2120
	jnz	.1
2107
	jnz	.1
2121
	mov	[listsize], 0
2108
	mov	[listsize], 0
2122
	ret
2109
	ret
2123
nstep:
2110
nstep:
2124
    cmp [path+3],byte '/'
2111
    cmp [path+3],byte '/'
2125
    je nstep2
2112
    je nstep2
2126
    cmp [path+4],byte '/'
2113
    cmp [path+4],byte '/'
2127
    je nstep2
2114
    je nstep2
2128
    mov ecx,1
2115
    mov ecx,1
2129
    cmp [path+1],word 'RD'
2116
    cmp [path+1],word 'RD'
2130
    jz	loxpt
2117
    jz	loxpt
2131
    cmp [path+1],word 'CD'
2118
    cmp [path+1],word 'CD'
2132
    jz	loxpt
2119
    jz	loxpt
2133
    mov ecx,2
2120
    mov ecx,2
2134
    cmp [path+1],word 'FD'
2121
    cmp [path+1],word 'FD'
2135
    jz	loxpt
2122
    jz	loxpt
2136
    cmp [path+1],dword 'HD0'
2123
    cmp [path+1],dword 'HD0'
2137
    jne nostep_HD0
2124
    jne nostep_HD0
2138
    movzx ecx,byte [table_area+2]
2125
    movzx ecx,byte [table_area+2]
2139
    jmp loxpt
2126
    jmp loxpt
2140
nostep_HD0:
2127
nostep_HD0:
2141
    cmp [path+1],dword 'HD1'
2128
    cmp [path+1],dword 'HD1'
2142
    jne nostep_HD1
2129
    jne nostep_HD1
2143
    movzx ecx,byte [table_area+3]
2130
    movzx ecx,byte [table_area+3]
2144
    jmp loxpt
2131
    jmp loxpt
2145
nostep_HD1:
2132
nostep_HD1:
2146
    cmp [path+1],dword 'HD2'
2133
    cmp [path+1],dword 'HD2'
2147
    jne nostep_HD2
2134
    jne nostep_HD2
2148
    movzx ecx,byte [table_area+4]
2135
    movzx ecx,byte [table_area+4]
2149
    jmp loxpt
2136
    jmp loxpt
2150
nostep_HD2:
2137
nostep_HD2:
2151
    cmp [path+1],dword 'HD3'
2138
    cmp [path+1],dword 'HD3'
2152
    jne nostep_HD3
2139
    jne nostep_HD3
2153
    movzx ecx,byte [table_area+5]
2140
    movzx ecx,byte [table_area+5]
2154
    jmp loxpt
2141
    jmp loxpt
2155
nostep_HD3:
2142
nostep_HD3:
2156
 
2143
 
2157
    mov ecx,2
2144
    mov ecx,2
2158
 
2145
 
2159
loxpt:
2146
loxpt:
2160
	cmp	ecx, 20
2147
	cmp	ecx, 20
2161
	jbe	@f
2148
	jbe	@f
2162
	mov	ecx, 20
2149
	mov	ecx, 20
2163
@@:
2150
@@:
2164
	mov	eax, a1
2151
	mov	eax, a1
2165
	mov	esi, ptimg
2152
	mov	esi, ptimg
2166
@@:
2153
@@:
2167
	stosd
2154
	stosd
2168
	add	eax, 3
2155
	add	eax, 3
2169
	push	ecx esi
2156
	push	ecx esi
2170
	mov	ecx, 23
2157
	mov	ecx, 23
2171
	rep	movsb
2158
	rep	movsb
2172
	pop	esi ecx
2159
	pop	esi ecx
2173
	loop	@b
2160
	loop	@b
2174
    mov [listsize],0
2161
    mov [listsize],0
2175
    ret
2162
    ret
2176
nstep2:
2163
nstep2:
2177
 
2164
 
2178
;STEP 3 was deleted
2165
;STEP 3 was deleted
2179
 
2166
 
2180
;STEP 4 READ DATA FROM HD
2167
;STEP 4 READ DATA FROM HD
2181
 
2168
 
2182
loorhd:
2169
loorhd:
2183
    mov  eax,70
2170
    mov  eax,70
2184
    mov  ebx,fileinfoblock
2171
    mov  ebx,fileinfoblock
2185
    mcall
2172
    mcall
2186
 
2173
 
2187
    cmp eax,6
2174
    cmp eax,6
2188
    je	    end_of_dir
2175
    je	    end_of_dir
2189
 
2176
 
2190
;  It's erorr's test is poor code
2177
;  It's erorr's test is poor code
2191
 
2178
 
2192
    cmp eax,1
2179
    cmp eax,1
2193
    jne no_inv_part
2180
    jne no_inv_part
2194
    glabel 10,10,'Invalid partition or hd base',cl_Red+font_Big
2181
    glabel 10,10,'Invalid partition or hd base',cl_Red+font_Big
2195
    jmp end_of_dir
2182
    jmp end_of_dir
2196
no_inv_part:
2183
no_inv_part:
2197
    cmp eax,3
2184
    cmp eax,3
2198
    jne no_unk_fs
2185
    jne no_unk_fs
2199
    glabel 10,10,'Unknown file system',cl_Red+font_Big
2186
    glabel 10,10,'Unknown file system',cl_Red+font_Big
2200
    jmp end_of_dir
2187
    jmp end_of_dir
2201
no_unk_fs:
2188
no_unk_fs:
2202
 
2189
 
2203
end_of_dir:
2190
end_of_dir:
2204
; -1 -> 0
2191
; -1 -> 0
2205
	cmp	ebx, -1
2192
	cmp	ebx, -1
2206
	sbb	ebx, -1
2193
	sbb	ebx, -1
2207
    mov  [dirlen],ebx
2194
    mov  [dirlen],ebx
2208
 
2195
 
2209
    ; command successful
2196
    ; command successful
2210
 
2197
 
2211
	mov	esi, outinfo+32
2198
	mov	esi, outinfo+32
2212
	and	[listsize], 0
2199
	and	[listsize], 0
2213
	test	ebx, ebx
2200
	test	ebx, ebx
2214
	jz	nofiles
2201
	jz	nofiles
2215
 
2202
 
2216
  newlineb:
2203
  newlineb:
2217
	push	ebx
2204
	push	ebx
2218
 
2205
 
2219
	mov	edi, fileinfo
2206
	mov	edi, fileinfo
2220
	push	edi
2207
	push	edi
2221
	mov	al, ' '
2208
	mov	al, ' '
2222
	mov	ecx, 27
2209
	mov	ecx, 27
2223
	rep	stosb
2210
	rep	stosb
2224
	pop	edi
2211
	pop	edi
2225
	push	esi
2212
	push	esi
2226
	add	esi, 40
2213
	add	esi, 40
2227
	mov	[edi], esi
2214
	mov	[edi], esi
2228
	pop	esi
2215
	pop	esi
2229
 
2216
 
2230
	mov	eax, 'DAT '	; data or ... ?
2217
	mov	eax, 'DAT '	; data or ... ?
2231
	mov	cl, [esi]
2218
	mov	cl, [esi]
2232
	test	cl, 0x10
2219
	test	cl, 0x10
2233
	jz	@f
2220
	jz	@f
2234
	mov	eax, 'FOL '
2221
	mov	eax, 'FOL '
2235
	mov	[edi+15], eax
2222
	mov	[edi+15], eax
2236
	jmp	nosize
2223
	jmp	nosize
2237
@@:
2224
@@:
2238
	test	cl, 8
2225
	test	cl, 8
2239
	jz	novol
2226
	jz	novol
2240
	mov	eax, 'Fvol'
2227
	mov	eax, 'Fvol'
2241
	mov	[edi+15], eax
2228
	mov	[edi+15], eax
2242
	jmp	nosize
2229
	jmp	nosize
2243
novol:
2230
novol:
2244
	mov	[edi+15], eax
2231
	mov	[edi+15], eax
2245
 
2232
 
2246
; size
2233
; size
2247
	mov	eax, [esi+32]
2234
	mov	eax, [esi+32]
2248
	push	esi
2235
	push	esi
2249
	lea	esi, [edi+26]
2236
	lea	esi, [edi+26]
2250
	mov	ebx, 10
2237
	mov	ebx, 10
2251
	mov	ecx, 8
2238
	mov	ecx, 8
2252
newnum:
2239
newnum:
2253
	xor	edx, edx
2240
	xor	edx, edx
2254
	div	ebx
2241
	div	ebx
2255
	add	dl, '0'
2242
	add	dl, '0'
2256
	mov	[esi], dl
2243
	mov	[esi], dl
2257
	test	eax, eax
2244
	test	eax, eax
2258
	jz	zernum
2245
	jz	zernum
2259
	dec	esi
2246
	dec	esi
2260
	loop	newnum
2247
	loop	newnum
2261
zernum:
2248
zernum:
2262
	pop	esi
2249
	pop	esi
2263
nosize:
2250
nosize:
2264
 
2251
 
2265
; date
2252
; date
2266
	mov	dword [edi+6], '.  .'
2253
	mov	dword [edi+6], '.  .'
2267
; year
2254
; year
2268
	movzx	eax, word [esi+28+2]
2255
	movzx	eax, word [esi+28+2]
2269
	mov	ecx, 4
2256
	mov	ecx, 4
2270
newdel1:
2257
newdel1:
2271
	xor	edx, edx
2258
	xor	edx, edx
2272
	mov	ebx, 10
2259
	mov	ebx, 10
2273
	div	ebx
2260
	div	ebx
2274
	add	edx, '0'
2261
	add	edx, '0'
2275
	mov	[edi+ecx+9], dl
2262
	mov	[edi+ecx+9], dl
2276
	loop	newdel1
2263
	loop	newdel1
2277
; month
2264
; month
2278
	movzx	eax, byte [esi+28+1]
2265
	movzx	eax, byte [esi+28+1]
2279
	xor	edx, edx
2266
	xor	edx, edx
2280
	div	ebx
2267
	div	ebx
2281
	add	al, '0'
2268
	add	al, '0'
2282
	add	dl, '0'
2269
	add	dl, '0'
2283
	mov	[edi+7], al
2270
	mov	[edi+7], al
2284
	mov	[edi+8], dl
2271
	mov	[edi+8], dl
2285
; day
2272
; day
2286
	movzx	eax, byte [esi+28]
2273
	movzx	eax, byte [esi+28]
2287
	xor	edx, edx
2274
	xor	edx, edx
2288
	div	ebx
2275
	div	ebx
2289
	add	al, '0'
2276
	add	al, '0'
2290
	add	dl, '0'
2277
	add	dl, '0'
2291
	mov	[edi+4], al
2278
	mov	[edi+4], al
2292
	mov	[edi+5], dl
2279
	mov	[edi+5], dl
2293
 
2280
 
2294
;STEP 5 Test on WRITE OR NOTWRITE
2281
;STEP 5 Test on WRITE OR NOTWRITE
2295
	cmp	word [esi+40], '.'
2282
	cmp	word [esi+40], '.'
2296
	jz	nextfl
2283
	jz	nextfl
2297
	cmp	word [esi+40], '..'
2284
	cmp	word [esi+40], '..'
2298
	jnz	@f
2285
	jnz	@f
2299
	cmp	byte [esi+42], 0
2286
	cmp	byte [esi+42], 0
2300
	jz	nextfl
2287
	jz	nextfl
2301
@@:
2288
@@:
2302
 
2289
 
2303
; STEP 6 SORT ALGORYTHM
2290
; STEP 6 SORT ALGORYTHM
2304
 
2291
 
2305
	push	esi
2292
	push	esi
2306
	xor	esi, esi
2293
	xor	esi, esi
2307
 
2294
 
2308
; At first Fold after Dat
2295
; At first Fold after Dat
2309
 
2296
 
2310
ftestname:
2297
ftestname:
2311
	cmp	dword [convinfo+esi], -1
2298
	cmp	dword [convinfo+esi], -1
2312
	jz	writefile
2299
	jz	writefile
2313
    cmp byte [fileinfo+15],'F'
2300
    cmp byte [fileinfo+15],'F'
2314
    je	    F
2301
    je	    F
2315
    cmp byte [fileinfo+15],'D'
2302
    cmp byte [fileinfo+15],'D'
2316
    jne add_element
2303
    jne add_element
2317
D:  cmp byte [convinfo+esi+15],'D'
2304
D:  cmp byte [convinfo+esi+15],'D'
2318
    je	    add_element
2305
    je	    add_element
2319
    cmp byte [convinfo+esi+15],'F'
2306
    cmp byte [convinfo+esi+15],'F'
2320
    je	    skipfile
2307
    je	    skipfile
2321
    jmp add_element
2308
    jmp add_element
2322
F:  cmp byte [convinfo+esi+15],'D'
2309
F:  cmp byte [convinfo+esi+15],'D'
2323
    je writenow
2310
    je writenow
2324
;    cmp byte [convinfo+esi+15],'F'
2311
;    cmp byte [convinfo+esi+15],'F'
2325
;    je  add_element
2312
;    je  add_element
2326
;    jmp add_element
2313
;    jmp add_element
2327
 
2314
 
2328
add_element:
2315
add_element:
2329
; compare items
2316
; compare items
2330
	movzx	eax, [viewmode]
2317
	movzx	eax, [viewmode]
2331
	call	[compare+eax*4]
2318
	call	[compare+eax*4]
2332
	jb	writenow
2319
	jb	writenow
2333
skipfile:
2320
skipfile:
2334
    add esi,27
2321
    add esi,27
2335
    jmp ftestname
2322
    jmp ftestname
2336
 
2323
 
2337
writenow:
2324
writenow:
2338
    mov ecx,4096*27-1
2325
    mov ecx,4096*27-1
2339
    sub ecx,esi
2326
    sub ecx,esi
2340
ldloop:
2327
ldloop:
2341
    mov al,[convinfo+ecx+esi]
2328
    mov al,[convinfo+ecx+esi]
2342
    mov [convinfo+ecx+esi+27],al
2329
    mov [convinfo+ecx+esi+27],al
2343
    dec ecx
2330
    dec ecx
2344
    jns ldloop
2331
    jns ldloop
2345
 
2332
 
2346
writefile:
2333
writefile:
2347
    mov ecx,26
2334
    mov ecx,26
2348
wfloop:
2335
wfloop:
2349
    mov al,[fileinfo+ecx]
2336
    mov al,[fileinfo+ecx]
2350
    mov [convinfo+ecx+esi],al
2337
    mov [convinfo+ecx+esi],al
2351
    dec ecx
2338
    dec ecx
2352
    jns wfloop
2339
    jns wfloop
2353
	inc	[listsize]
2340
	inc	[listsize]
2354
	pop	esi
2341
	pop	esi
2355
 
2342
 
2356
nextfl:
2343
nextfl:
2357
	add	esi, 304
2344
	add	esi, 304
2358
	pop	ebx
2345
	pop	ebx
2359
	dec	ebx
2346
	dec	ebx
2360
	jnz	newlineb
2347
	jnz	newlineb
2361
 
2348
 
2362
nofiles:
2349
nofiles:
2363
	ret
2350
	ret
2364
 
2351
 
2365
toupper:
2352
toupper:
2366
	cmp	al, 'a'
2353
	cmp	al, 'a'
2367
	jb	.ret
2354
	jb	.ret
2368
	cmp	al, 'z'
2355
	cmp	al, 'z'
2369
	ja	@f
2356
	ja	@f
2370
.sub20:
2357
.sub20:
2371
	sub	al, 0x20
2358
	sub	al, 0x20
2372
.ret:
2359
.ret:
2373
	ret
2360
	ret
2374
@@:
2361
@@:
2375
	cmp	al, 0xA0
2362
	cmp	al, 0xA0
2376
	jb	.ret
2363
	jb	.ret
2377
	cmp	al, 0xB0
2364
	cmp	al, 0xB0
2378
	jb	.sub20
2365
	jb	.sub20
2379
	cmp	al, 0xE0
2366
	cmp	al, 0xE0
2380
	jb	.ret
2367
	jb	.ret
2381
	cmp	al, 0xF0
2368
	cmp	al, 0xF0
2382
	jae	@f
2369
	jae	@f
2383
	sub	al, 0xE0-0x90
2370
	sub	al, 0xE0-0x90
2384
	ret
2371
	ret
2385
@@:
2372
@@:
2386
	cmp	al, 0xF1
2373
	cmp	al, 0xF1
2387
	jnz	.ret
2374
	jnz	.ret
2388
	dec	eax
2375
	dec	eax
2389
	ret
2376
	ret
2390
 
2377
 
2391
compare_date:
2378
compare_date:
2392
	pushad
2379
	pushad
2393
	mov	al, [fileinfo+10]
2380
	mov	al, [fileinfo+10]
2394
	cmp	al, [convinfo+esi+10]
2381
	cmp	al, [convinfo+esi+10]
2395
	jnz	.ret
2382
	jnz	.ret
2396
	mov	al, [fileinfo+11]
2383
	mov	al, [fileinfo+11]
2397
	cmp	al, [convinfo+esi+11]
2384
	cmp	al, [convinfo+esi+11]
2398
	jnz	.ret
2385
	jnz	.ret
2399
	mov	al, [fileinfo+12]
2386
	mov	al, [fileinfo+12]
2400
	cmp	al, [convinfo+esi+12]
2387
	cmp	al, [convinfo+esi+12]
2401
	jnz	.ret
2388
	jnz	.ret
2402
	mov	al, [fileinfo+13]
2389
	mov	al, [fileinfo+13]
2403
	cmp	al, [convinfo+esi+13]
2390
	cmp	al, [convinfo+esi+13]
2404
	jnz	.ret
2391
	jnz	.ret
2405
	mov	al, [fileinfo+7]
2392
	mov	al, [fileinfo+7]
2406
	cmp	al, [convinfo+esi+7]
2393
	cmp	al, [convinfo+esi+7]
2407
	jnz	.ret
2394
	jnz	.ret
2408
	mov	al, [fileinfo+8]
2395
	mov	al, [fileinfo+8]
2409
	cmp	al, [convinfo+esi+8]
2396
	cmp	al, [convinfo+esi+8]
2410
	jnz	.ret
2397
	jnz	.ret
2411
	mov	al, [fileinfo+4]
2398
	mov	al, [fileinfo+4]
2412
	cmp	al, [convinfo+esi+4]
2399
	cmp	al, [convinfo+esi+4]
2413
	jnz	.ret
2400
	jnz	.ret
2414
	mov	al, [fileinfo+5]
2401
	mov	al, [fileinfo+5]
2415
	cmp	al, [convinfo+esi+5]
2402
	cmp	al, [convinfo+esi+5]
2416
	jz	compare_name.1
2403
	jz	compare_name.1
2417
.ret:
2404
.ret:
2418
	popad
2405
	popad
2419
	ret
2406
	ret
2420
compare_name:
2407
compare_name:
2421
	pushad
2408
	pushad
2422
.1:
2409
.1:
2423
	mov	edi, dword [convinfo+esi]
2410
	mov	edi, dword [convinfo+esi]
2424
	mov	esi, dword [fileinfo]
2411
	mov	esi, dword [fileinfo]
2425
	call	strcmpi
2412
	call	strcmpi
2426
	popad
2413
	popad
2427
	ret
2414
	ret
2428
compare_ext:
2415
compare_ext:
2429
	pushad
2416
	pushad
2430
	mov	esi, dword [convinfo+esi]
2417
	mov	esi, dword [convinfo+esi]
2431
	mov	edi, dword [fileinfo]
2418
	mov	edi, dword [fileinfo]
2432
	call	find_ext
2419
	call	find_ext
2433
	xchg	esi, edi
2420
	xchg	esi, edi
2434
	call	find_ext
2421
	call	find_ext
2435
	call	strcmpi
2422
	call	strcmpi
2436
	popad
2423
	popad
2437
	jz	compare_name
2424
	jz	compare_name
2438
	ret
2425
	ret
2439
compare_size:
2426
compare_size:
2440
	pushad
2427
	pushad
2441
	lea	edi, [convinfo+esi+19]
2428
	lea	edi, [convinfo+esi+19]
2442
	lea	esi, [fileinfo+19]
2429
	lea	esi, [fileinfo+19]
2443
	mov	ecx, 8
2430
	mov	ecx, 8
2444
	repz	cmpsb
2431
	repz	cmpsb
2445
	popad
2432
	popad
2446
	jz	compare_name
2433
	jz	compare_name
2447
	ret
2434
	ret
2448
 
2435
 
2449
strcmpi:
2436
strcmpi:
2450
	lodsb
2437
	lodsb
2451
	call	toupper
2438
	call	toupper
2452
	push	eax
2439
	push	eax
2453
	mov	al, [edi]
2440
	mov	al, [edi]
2454
	inc	edi
2441
	inc	edi
2455
	call	toupper
2442
	call	toupper
2456
	cmp	[esp], al
2443
	cmp	[esp], al
2457
	pop	eax
2444
	pop	eax
2458
	jnz	@f
2445
	jnz	@f
2459
	test	al, al
2446
	test	al, al
2460
	jnz	strcmpi
2447
	jnz	strcmpi
2461
@@:
2448
@@:
2462
	ret
2449
	ret
2463
 
2450
 
2464
find_ext:
2451
find_ext:
2465
	lodsb
2452
	lodsb
2466
	test	al, al
2453
	test	al, al
2467
	jz	.noext
2454
	jz	.noext
2468
	cmp	al, '.'
2455
	cmp	al, '.'
2469
	jnz	find_ext
2456
	jnz	find_ext
2470
	ret
2457
	ret
2471
.noext:
2458
.noext:
2472
	dec	esi
2459
	dec	esi
2473
	ret
2460
	ret
2474
 
2461
 
2475
;******************************************************************************
2462
;******************************************************************************
-
 
2463
title_browser db 'SYSTEM X-TREE FILE BROWSER',0
-
 
2464
open_dlg  db 'OPEN FILE',0
-
 
2465
save_dlg  db 'SAVE FILE',0
2476
 
2466
 
2477
; DATA AREA
2467
; DATA AREA
2478
pmenu_draw dd 0  ;if poup menu is draw,update all window
2468
pmenu_draw dd 0  ;if poup menu is draw,update all window
2479
flick	     dd 0  ;anti flick on ?
2469
flick	     dd 0  ;anti flick on ?
2480
drawhf	       dd 0  ;draw file menu?
2470
drawhf	       dd 0  ;draw file menu?
2481
drawhv	       dd 0  ;draw view menu?
2471
drawhv	       dd 0  ;draw view menu?
2482
drawhi	       dd 0  ;draw info menu?
2472
drawhi	       dd 0  ;draw info menu?
2483
cursor	       dd 0  ;cursor in prompt line
2473
cursor	       dd 0  ;cursor in prompt line
2484
focus	     dd 0  ;prompt edit or window?
2474
focus	     dd 0  ;prompt edit or window?
2485
downstop   dd 0
2475
downstop   dd 0
2486
filecursor dd 0
2476
filecursor dd 0
2487
mousex	       dd 0
2477
mousex	       dd 0
2488
mousey	       dd 0
2478
mousey	       dd 0
2489
blocksread dd 0
2479
blocksread dd 0
2490
listsize   dd 0  ;num of files in directory
2480
listsize   dd 0  ;num of files in directory
2491
temp	   dd 0
2481
temp	   dd 0
2492
readblock  dd 1
2482
readblock  dd 1
2493
dlg_type   db 0 ;S-save O-open
2483
dlg_type   db 0 ;S-save O-open
2494
browser    db 0  ;0-dialog, 1-browser
2484
browser    db 0  ;0-dialog, 1-browser
2495
viewmode   db 0  ;folder sort
2485
viewmode   db 0  ;folder sort
2496
 
2486
 
2497
compare dd	compare_name
2487
compare dd	compare_name
2498
	dd	compare_ext
2488
	dd	compare_ext
2499
	dd	compare_size
2489
	dd	compare_size
2500
	dd	compare_date
2490
	dd	compare_date
2501
 
2491
 
2502
aRD	db	'RD',0
2492
aRD	db	'RD',0
2503
aFD	db	'FD',0
2493
aFD	db	'FD',0
2504
aHD0	db	'HD0',0
2494
aHD0	db	'HD0',0
2505
aHD1	db	'HD1',0
2495
aHD1	db	'HD1',0
2506
aHD2	db	'HD2',0
2496
aHD2	db	'HD2',0
2507
aHD3	db	'HD3',0
2497
aHD3	db	'HD3',0
2508
aCD0	db	'CD0',0
2498
aCD0	db	'CD0',0
2509
aCD1	db	'CD1',0
2499
aCD1	db	'CD1',0
2510
aCD2	db	'CD2',0
2500
aCD2	db	'CD2',0
2511
aCD3	db	'CD3',0
2501
aCD3	db	'CD3',0
2512
a1	db	'1',0,0
2502
a1	db	'1',0,0
2513
a2	db	'2',0,0
2503
a2	db	'2',0,0
2514
a3	db	'3',0,0
2504
a3	db	'3',0,0
2515
a4	db	'4',0,0
2505
a4	db	'4',0,0
2516
a5	db	'5',0,0
2506
a5	db	'5',0,0
2517
a6	db	'6',0,0
2507
a6	db	'6',0,0
2518
a7	db	'7',0,0
2508
a7	db	'7',0,0
2519
a8	db	'8',0,0
2509
a8	db	'8',0,0
2520
a9	db	'9',0,0
2510
a9	db	'9',0,0
2521
a10	db	'10',0
2511
a10	db	'10',0
2522
a11	db	'11',0
2512
a11	db	'11',0
2523
a12	db	'12',0
2513
a12	db	'12',0
2524
a13	db	'13',0
2514
a13	db	'13',0
2525
a14	db	'14',0
2515
a14	db	'14',0
2526
a15	db	'15',0
2516
a15	db	'15',0
2527
a16	db	'16',0
2517
a16	db	'16',0
2528
a17	db	'17',0
2518
a17	db	'17',0
2529
a18	db	'18',0
2519
a18	db	'18',0
2530
a19	db	'19',0
2520
a19	db	'19',0
2531
a20	db	'20',0
2521
a20	db	'20',0
2532
 
2522
 
2533
hdimg:
2523
hdimg:
2534
	dd	aRD
2524
	dd	aRD
2535
	db	'RAMDISK    FOL         '
2525
	db	'RAMDISK    FOL         '
2536
	dd	aFD
2526
	dd	aFD
2537
	db	'FLOPPYDISK FOL         '
2527
	db	'FLOPPYDISK FOL         '
2538
hdimg1	dd	0
2528
hdimg1	dd	0
2539
	db	'HARDDISK   FOL         '
2529
	db	'HARDDISK   FOL         '
2540
hdimg2	dd	0
2530
hdimg2	dd	0
2541
	db	'HARDDISK   FOL         '
2531
	db	'HARDDISK   FOL         '
2542
hdimg3	dd	0
2532
hdimg3	dd	0
2543
	db	'HARDDISK   FOL         '
2533
	db	'HARDDISK   FOL         '
2544
hdimg4	dd	0
2534
hdimg4	dd	0
2545
	db	'HARDDISK   FOL         '
2535
	db	'HARDDISK   FOL         '
2546
ptimg	db	'PARTITION  FOL         '
2536
ptimg	db	'PARTITION  FOL         '
2547
 
2537
 
2548
modetext:
2538
modetext:
2549
      ;0123456789012345
2539
      ;0123456789012345
2550
   db 'SORT BY NAME   0'
2540
   db 'SORT BY NAME   0'
2551
   db 'SORT BY EXT.   1'
2541
   db 'SORT BY EXT.   1'
2552
   db 'SORT BY SIZE   2' ;type sort
2542
   db 'SORT BY SIZE   2' ;type sort
2553
   db 'SORT BY DATE   3'
2543
   db 'SORT BY DATE   3'
2554
   db 'DEL SORT NAME  4'
2544
   db 'DEL SORT NAME  4'
2555
   db 'DEL SORT EXT.  5'
2545
   db 'DEL SORT EXT.  5'
2556
   db 'DEL SORT SIZE  6' ;type sort
2546
   db 'DEL SORT SIZE  6' ;type sort
2557
   db 'DEL SORT DATE  7'
2547
   db 'DEL SORT DATE  7'
2558
 
2548
 
2559
dirlen	      dd     0x1
2549
dirlen	      dd     0x1
2560
b_color   dd   0x6677cc
2550
b_color   dd   0x6677cc
2561
 
2551
 
2562
; //// Willow
2552
; //// Willow
2563
;MRUfile:
2553
;MRUfile:
2564
;   dd 0x0
2554
;   dd 0x0
2565
;   dd 0x0
2555
;   dd 0x0
2566
;   dd 0x1
2556
;   dd 0x1
2567
;   dd path
2557
;   dd path
2568
;   dd tempzone
2558
;   dd tempzone
2569
;   db '/RD/1/MRU.LST',0
2559
;   db '/RD/1/MRU.LST',0
2570
; //// Willow
2560
; //// Willow
2571
 
2561
 
2572
;Name of programs
2562
;Name of programs
2573
editor	      db '/sys/TINYPAD',0
2563
editor	  db '/sys/tinypad',0
2574
bmpview   db '/sys/MV',0
-
 
2575
jpgview   db '/sys/JPEGVIEW',0
2564
kiv       db '/sys/media/kiv',0
2576
gifview   db '/sys/GIFVIEW',0
2565
ac97	  db '/sys/media/ac97snd',0
2577
ac97	  db '/sys/AC97SND',0
2566
midamp	  db '/sys/media/midamp',0
2578
htmlv	  db '/sys/NETWORK/HTMLV',0
2567
htmlv	  db '/sys/network/htmlv',0
2579
rtfread   db '/sys/RTFREAD',0
2568
rtfread   db '/sys/rtfread',0
2580
; //// Willow
-
 
2581
pngview   db '/sys/@RCHER',0
-
 
2582
; //// Willow
-
 
2583
midamp	  db '/sys/MIDAMP',0
-
 
2584
view3ds   db '/sys/3D/VIEW3DS',0
2569
view3ds   db '/sys/3d/view3ds',0
2585
life2	  db '/sys/DEMOS/LIFE2',0
2570
life2	  db '/sys/demos/life2',0
2586
 
2571
 
2587
more_char db 10h
2572
more_char db 10h
2588
 
2573
 
2589
IncludeIGlobals
2574
IncludeIGlobals
2590
 
2575
 
2591
fileinfo_start:
2576
fileinfo_start:
2592
	dd	7
2577
	dd	7
2593
	dd	0
2578
	dd	0
2594
fileinfo_params:
2579
fileinfo_params:
2595
	dd	0
2580
	dd	0
2596
	dd	0
2581
	dd	0
2597
	dd	0
2582
	dd	0
2598
	db	0
2583
	db	0
2599
fileinfo_name:
2584
fileinfo_name:
2600
	dd	0
2585
	dd	0
2601
 
2586
 
2602
clipfile_info:
2587
clipfile_info:
2603
	dd	?
2588
	dd	?
2604
	dd	0
2589
	dd	0
2605
	dd	0
2590
	dd	0
2606
	dd	?
2591
	dd	?
2607
	dd	paramtest
2592
	dd	paramtest
2608
	db	'/SYS/CLIPFILE.TXT',0
2593
	db	'/SYS/CLIPFILE.TXT',0
2609
copyr_run:
2594
copyr_run:
2610
	dd	7
2595
	dd	7
2611
	dd	0
2596
	dd	0
2612
	dd	copyr_param
2597
	dd	copyr_param
2613
	dd	0
2598
	dd	0
2614
	dd	0
2599
	dd	0
2615
	db	'/SYS/COPYR',0
2600
	db	'/SYS/COPYR',0
2616
 
2601
 
2617
fileinfoblock:
2602
fileinfoblock:
2618
   dd 0x1    ; read folder
2603
   dd 0x1    ; read folder
2619
   dd 0x0    ; first block
2604
   dd 0x0    ; first block
2620
   dd 0x0    ; flags (ANSI names)
2605
   dd 0x0    ; flags (ANSI names)
2621
   dd 4095   ; number of blocks to read
2606
   dd 4095   ; number of blocks to read
2622
   dd outinfo	  ; ret offset
2607
   dd outinfo	  ; ret offset
2623
path:
2608
path:
2624
times 1024 db 0     ;path
2609
times 1024 db 0     ;path
2625
 
2610
 
2626
table_area:
2611
table_area:
2627
rb 10
2612
rb 10
2628
 
2613
 
2629
;rb 256
2614
;rb 256
2630
but_file:
2615
but_file:
2631
file 'systr12.GIF'
2616
file 'systr12.GIF'
2632
 
2617
 
2633
I_END:
2618
I_END:
2634
 
2619
 
2635
scroll_height dd ?
2620
scroll_height dd ?
2636
scroll_pos dd ?
2621
scroll_pos dd ?
2637
 
2622
 
2638
butimg:
2623
butimg:
2639
rb 400*16*3+8	  ;buttons (left pice of picture)
2624
rb 400*16*3+8	  ;buttons (left pice of picture)
2640
logoimg:
2625
logoimg:
2641
rb 70*16*3+8	;logo (right pice of picture)
2626
rb 70*16*3+8	;logo (right pice of picture)
2642
logoinfimg:
2627
logoinfimg:
2643
rb 60*60*3+8	;logoinfo (right pice of picture)
2628
rb 60*60*3+8	;logoinfo (right pice of picture)
2644
upsb:
2629
upsb:
2645
rb 8*9*3+8    ;up scroll button
2630
rb 8*9*3+8    ;up scroll button
2646
dnsb:
2631
dnsb:
2647
rb 8*9*3+8    ;down scroll button
2632
rb 8*9*3+8    ;down scroll button
2648
 
2633
 
2649
;ICONS RESERVE AREA
2634
;ICONS RESERVE AREA
2650
hdico:
2635
hdico:
2651
rb 12*9*3+8
2636
rb 12*9*3+8
2652
rdico:
2637
rdico:
2653
rb 12*9*3+8
2638
rb 12*9*3+8
2654
folico:
2639
folico:
2655
rb 12*9*3+8
2640
rb 12*9*3+8
2656
datico:
2641
datico:
2657
rb 12*9*3+8
2642
rb 12*9*3+8
2658
delico:
2643
delico:
2659
rb 12*9*3+8
2644
rb 12*9*3+8
2660
imgico:
2645
imgico:
2661
rb 12*9*3+8
2646
rb 12*9*3+8
2662
txtico:
2647
txtico:
2663
rb 12*9*3+8
2648
rb 12*9*3+8
2664
asmincico:
2649
asmincico:
2665
rb 12*9*3+8
2650
rb 12*9*3+8
2666
execico:
2651
execico:
2667
rb 12*9*3+8
2652
rb 12*9*3+8
2668
cdico:
2653
cdico:
2669
rb 12*9*3+8
2654
rb 12*9*3+8
2670
 
2655
 
2671
tempimg:    ;reserve ram for images
2656
tempimg:    ;reserve ram for images
2672
rb 400*100*3+8	     ;for picture
2657
rb 400*100*3+8	     ;for picture
2673
rb 8000
2658
rb 8000
2674
 
2659
 
2675
MYPID:
2660
MYPID:
2676
rd 8
2661
rd 8
2677
 
2662
 
2678
param_area:
2663
param_area:
2679
rb 256
2664
rb 256
2680
paramtest:
2665
paramtest:
2681
rb 1024
2666
rb 1024
2682
filedir:
2667
filedir:
2683
rb 1024
2668
rb 1024
2684
 
2669
 
2685
IncludeUGlobals
2670
IncludeUGlobals
2686
 
2671
 
2687
procinfo process_information
2672
procinfo process_information
2688
sc system_colors
2673
sc system_colors
2689
 
2674
 
2690
fileinfo:
2675
fileinfo:
2691
rb 200 ;4096*62+1024
2676
rb 200 ;4096*62+1024
2692
 
2677
 
2693
copyr_param	rb	256
2678
copyr_param	rb	256
2694
 
2679
 
2695
outinfo:
2680
outinfo:
2696
rb 32+4096*304
2681
rb 32+4096*304
2697
 
2682
 
2698
convinfo:
2683
convinfo:
2699
rb 4096*27
2684
rb 4096*27
2700
; stack
2685
; stack
2701
	align 4
2686
	align 4
2702
	rb	1024
2687
	rb	1024
2703
RAM_END:
2688
RAM_END: