Subversion Repositories Kolibri OS

Rev

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

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