Subversion Repositories Kolibri OS

Rev

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

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