Subversion Repositories Kolibri OS

Rev

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

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