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