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