Rev 4277 | Rev 5363 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 4277 | Rev 4700 | ||
---|---|---|---|
Line 3... | Line 3... | ||
3 | ;; Copyright (C) KolibriOS team 2004-2011. All rights reserved. ;; |
3 | ;; Copyright (C) KolibriOS team 2004-2011. All rights reserved. ;; |
4 | ;; Distributed under terms of the GNU General Public License ;; |
4 | ;; Distributed under terms of the GNU General Public License ;; |
5 | ;; ;; |
5 | ;; ;; |
6 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
6 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
Line 7... | Line 7... | ||
7 | 7 | ||
Line 8... | Line 8... | ||
8 | $Revision: 4277 $ |
8 | $Revision: 4700 $ |
9 | 9 | ||
10 | ERROR_SUCCESS = 0 |
10 | ERROR_SUCCESS = 0 |
11 | ERROR_DISK_BASE = 1 |
11 | ERROR_DISK_BASE = 1 |
Line 41... | Line 41... | ||
41 | dd fs_OnCd2 |
41 | dd fs_OnCd2 |
42 | dd fs_NextCd |
42 | dd fs_NextCd |
43 | db 3,'cd3' |
43 | db 3,'cd3' |
44 | dd fs_OnCd3 |
44 | dd fs_OnCd3 |
45 | dd fs_NextCd |
45 | dd fs_NextCd |
- | 46 | db 3,'cd4' |
|
- | 47 | dd fs_OnCd4 |
|
- | 48 | dd fs_NextCd |
|
- | 49 | db 3,'cd5' |
|
- | 50 | dd fs_OnCd5 |
|
- | 51 | dd fs_NextCd |
|
- | 52 | db 3,'cd6' |
|
- | 53 | dd fs_OnCd6 |
|
- | 54 | dd fs_NextCd |
|
- | 55 | db 3,'cd7' |
|
- | 56 | dd fs_OnCd7 |
|
- | 57 | dd fs_NextCd |
|
- | 58 | db 3,'cd8' |
|
- | 59 | dd fs_OnCd8 |
|
- | 60 | dd fs_NextCd |
|
- | 61 | db 3,'cd9' |
|
- | 62 | dd fs_OnCd9 |
|
- | 63 | dd fs_NextCd |
|
- | 64 | db 4,'cd10' |
|
- | 65 | dd fs_OnCd10 |
|
- | 66 | dd fs_NextCd |
|
- | 67 | db 4,'cd11' |
|
- | 68 | dd fs_OnCd11 |
|
- | 69 | dd fs_NextCd |
|
46 | ;*********************************************** |
70 | ;*********************************************** |
47 | db 0 |
71 | db 0 |
Line 48... | Line 72... | ||
48 | 72 | ||
Line 55... | Line 79... | ||
55 | db 'cd1',0 |
79 | db 'cd1',0 |
56 | dd fs_HasCd2 |
80 | dd fs_HasCd2 |
57 | db 'cd2',0 |
81 | db 'cd2',0 |
58 | dd fs_HasCd3 |
82 | dd fs_HasCd3 |
59 | db 'cd3',0 |
83 | db 'cd3',0 |
- | 84 | dd fs_HasCd4 |
|
- | 85 | db 'cd4',0 |
|
- | 86 | dd fs_HasCd5 |
|
- | 87 | db 'cd5',0 |
|
- | 88 | dd fs_HasCd6 |
|
- | 89 | db 'cd6',0 |
|
- | 90 | dd fs_HasCd7 |
|
- | 91 | db 'cd7',0 |
|
- | 92 | dd fs_HasCd8 |
|
- | 93 | db 'cd8',0 |
|
- | 94 | dd fs_HasCd9 |
|
- | 95 | db 'cd9',0 |
|
- | 96 | dd fs_HasCd10 |
|
- | 97 | db 'cd10',0 |
|
- | 98 | dd fs_HasCd11 |
|
- | 99 | db 'cd11',0 |
|
60 | ;********************************************** |
100 | ;********************************************** |
61 | dd 0 |
101 | dd 0 |
62 | endg |
102 | endg |
Line 63... | Line 103... | ||
63 | 103 | ||
Line 147... | Line 187... | ||
147 | mov esi, [edi+4] |
187 | mov esi, [edi+4] |
148 | .maindir_noesi: |
188 | .maindir_noesi: |
149 | cmp dword [ebx], 1 |
189 | cmp dword [ebx], 1 |
150 | jnz .access_denied |
190 | jnz .access_denied |
151 | xor eax, eax |
191 | xor eax, eax |
152 | mov ebp, [ebx+12] ;количество блоков для считывания |
192 | mov ebp, [ebx+12] ;the number of blocks to read |
153 | mov edx, [ebx+16] ;куда записывать рузельтат |
193 | mov edx, [ebx+16] ;where to write the result |
154 | ; add edx, std_application_base_address |
194 | ; add edx, std_application_base_address |
155 | push dword [ebx+4] ; first block |
195 | push dword [ebx+4] ; first block |
156 | mov ebx, [ebx+8] ; flags |
196 | mov ebx, [ebx+8] ; flags |
157 | ; ebx=flags, [esp]=first block, ebp=number of blocks, edx=return area, esi='Next' handler |
197 | ; ebx=flags, [esp]=first block, ebp=number of blocks, edx=return area, esi='Next' handler |
158 | mov edi, edx |
198 | mov edi, edx |
Line 402... | Line 442... | ||
402 | ; out: [image_of_eax]=image of eax, [image_of_ebx]=image of ebx |
442 | ; out: [image_of_eax]=image of eax, [image_of_ebx]=image of ebx |
Line 403... | Line 443... | ||
403 | 443 | ||
404 | fs_NotImplemented: |
444 | fs_NotImplemented: |
405 | mov eax, 2 |
445 | mov eax, 2 |
406 | ret |
- | |
407 | 446 | ret |
|
408 | ;******************************************************* |
447 | ;----------------------------------------------------------------------------- |
409 | fs_OnCd0: |
448 | fs_OnCd0: |
410 | call reserve_cd |
449 | call reserve_cd |
411 | mov [ChannelNumber], 1 |
450 | mov [ChannelNumber], 1 |
412 | mov [DiskNumber], 0 |
451 | mov [DiskNumber], 0 |
413 | push 6 |
452 | push 6 |
414 | push 1 |
453 | push 1 |
- | 454 | jmp fs_OnCd |
|
415 | jmp fs_OnCd |
455 | ;----------------------------------------------------------------------------- |
416 | fs_OnCd1: |
456 | fs_OnCd1: |
417 | call reserve_cd |
457 | call reserve_cd |
418 | mov [ChannelNumber], 1 |
458 | mov [ChannelNumber], 1 |
419 | mov [DiskNumber], 1 |
459 | mov [DiskNumber], 1 |
420 | push 4 |
460 | push 4 |
421 | push 2 |
461 | push 2 |
- | 462 | jmp fs_OnCd |
|
422 | jmp fs_OnCd |
463 | ;----------------------------------------------------------------------------- |
423 | fs_OnCd2: |
464 | fs_OnCd2: |
424 | call reserve_cd |
465 | call reserve_cd |
425 | mov [ChannelNumber], 2 |
466 | mov [ChannelNumber], 2 |
426 | mov [DiskNumber], 0 |
467 | mov [DiskNumber], 0 |
427 | push 2 |
468 | push 2 |
428 | push 3 |
469 | push 3 |
- | 470 | jmp fs_OnCd |
|
429 | jmp fs_OnCd |
471 | ;----------------------------------------------------------------------------- |
430 | fs_OnCd3: |
472 | fs_OnCd3: |
431 | call reserve_cd |
473 | call reserve_cd |
432 | mov [ChannelNumber], 2 |
474 | mov [ChannelNumber], 2 |
433 | mov [DiskNumber], 1 |
475 | mov [DiskNumber], 1 |
434 | push 0 |
476 | push 0 |
- | 477 | push 4 |
|
- | 478 | jmp fs_OnCd |
|
- | 479 | ;----------------------------------------------------------------------------- |
|
- | 480 | fs_OnCd4: |
|
- | 481 | call reserve_cd |
|
- | 482 | mov [ChannelNumber], 1 |
|
- | 483 | mov [DiskNumber], 0 |
|
- | 484 | push 6 |
|
- | 485 | push 5 |
|
- | 486 | jmp fs_OnCd |
|
- | 487 | ;----------------------------------------------------------------------------- |
|
- | 488 | fs_OnCd5: |
|
- | 489 | call reserve_cd |
|
- | 490 | mov [ChannelNumber], 1 |
|
- | 491 | mov [DiskNumber], 1 |
|
- | 492 | push 4 |
|
- | 493 | push 6 |
|
- | 494 | jmp fs_OnCd |
|
- | 495 | ;----------------------------------------------------------------------------- |
|
- | 496 | fs_OnCd6: |
|
- | 497 | call reserve_cd |
|
- | 498 | mov [ChannelNumber], 2 |
|
- | 499 | mov [DiskNumber], 0 |
|
- | 500 | push 2 |
|
- | 501 | push 7 |
|
- | 502 | jmp fs_OnCd |
|
- | 503 | ;----------------------------------------------------------------------------- |
|
- | 504 | fs_OnCd7: |
|
- | 505 | call reserve_cd |
|
- | 506 | mov [ChannelNumber], 2 |
|
- | 507 | mov [DiskNumber], 1 |
|
- | 508 | push 0 |
|
- | 509 | push 8 |
|
- | 510 | jmp fs_OnCd |
|
- | 511 | ;----------------------------------------------------------------------------- |
|
- | 512 | fs_OnCd8: |
|
- | 513 | call reserve_cd |
|
- | 514 | mov [ChannelNumber], 1 |
|
- | 515 | mov [DiskNumber], 0 |
|
- | 516 | push 6 |
|
- | 517 | push 9 |
|
- | 518 | jmp fs_OnCd |
|
- | 519 | ;----------------------------------------------------------------------------- |
|
- | 520 | fs_OnCd9: |
|
- | 521 | call reserve_cd |
|
- | 522 | mov [ChannelNumber], 1 |
|
- | 523 | mov [DiskNumber], 1 |
|
- | 524 | push 4 |
|
- | 525 | push 10 |
|
- | 526 | jmp fs_OnCd |
|
- | 527 | ;----------------------------------------------------------------------------- |
|
- | 528 | fs_OnCd10: |
|
- | 529 | call reserve_cd |
|
- | 530 | mov [ChannelNumber], 2 |
|
- | 531 | mov [DiskNumber], 0 |
|
- | 532 | push 2 |
|
- | 533 | push 11 |
|
- | 534 | jmp fs_OnCd |
|
- | 535 | ;----------------------------------------------------------------------------- |
|
- | 536 | fs_OnCd11: |
|
- | 537 | call reserve_cd |
|
- | 538 | mov [ChannelNumber], 2 |
|
- | 539 | mov [DiskNumber], 1 |
|
- | 540 | push 0 |
|
- | 541 | push 12 |
|
435 | push 4 |
542 | ;----------------------------------------------------------------------------- |
436 | fs_OnCd: |
- | |
437 | call reserve_cd_channel |
543 | fs_OnCd: |
438 | pop eax |
544 | pop eax |
- | 545 | mov [cdpos], eax |
|
439 | mov [cdpos], eax |
546 | call reserve_cd_channel |
440 | pop eax |
547 | pop eax |
441 | cmp ecx, 0x100 |
548 | cmp ecx, 0x100 |
442 | jae .nf |
549 | jae .nf |
443 | push ecx ebx |
550 | push ecx ebx |
- | 551 | mov cl, al |
|
- | 552 | ||
- | 553 | push eax |
|
- | 554 | mov eax, [cdpos] |
|
- | 555 | dec eax |
|
- | 556 | shr eax, 2 |
|
444 | mov cl, al |
557 | lea eax, [eax*5] |
- | 558 | mov bl, [eax+DRIVE_DATA+1] |
|
- | 559 | pop eax |
|
445 | mov bl, [DRIVE_DATA+1] |
560 | |
446 | shr bl, cl |
561 | shr bl, cl |
447 | test bl, 2 |
562 | test bl, 2 |
Line 448... | Line 563... | ||
448 | pop ebx ecx |
563 | pop ebx ecx |
Line 470... | Line 585... | ||
470 | .not_impl: |
585 | .not_impl: |
471 | call free_cd_channel |
586 | call free_cd_channel |
472 | and [cd_status], 0 |
587 | and [cd_status], 0 |
473 | mov dword [image_of_eax], 2 ; not implemented |
588 | mov dword [image_of_eax], 2 ; not implemented |
474 | ret |
589 | ret |
475 | - | ||
- | 590 | ;----------------------------------------------------------------------------- |
|
476 | fs_CdServices: |
591 | fs_CdServices: |
477 | dd fs_CdRead |
592 | dd fs_CdRead |
478 | dd fs_CdReadFolder |
593 | dd fs_CdReadFolder |
479 | dd fs_NotImplemented |
594 | dd fs_NotImplemented |
480 | dd fs_NotImplemented |
595 | dd fs_NotImplemented |
Line 483... | Line 598... | ||
483 | dd fs_NotImplemented |
598 | dd fs_NotImplemented |
484 | dd 0 |
599 | dd 0 |
485 | dd fs_NotImplemented |
600 | dd fs_NotImplemented |
486 | dd fs_NotImplemented |
601 | dd fs_NotImplemented |
487 | fs_NumCdServices = ($ - fs_CdServices)/4 |
602 | fs_NumCdServices = ($ - fs_CdServices)/4 |
488 | - | ||
489 | ;******************************************************* |
603 | ;----------------------------------------------------------------------------- |
490 | fs_HasCd0: |
604 | fs_HasCd0: |
491 | test byte [DRIVE_DATA+1], 10000000b |
605 | test byte [DRIVE_DATA+1], 10000000b |
492 | setnz al |
606 | setnz al |
493 | ret |
607 | ret |
- | 608 | ;-------------------------------------- |
|
494 | fs_HasCd1: |
609 | fs_HasCd1: |
495 | test byte [DRIVE_DATA+1], 00100000b |
610 | test byte [DRIVE_DATA+1], 00100000b |
496 | setnz al |
611 | setnz al |
497 | ret |
612 | ret |
- | 613 | ;-------------------------------------- |
|
498 | fs_HasCd2: |
614 | fs_HasCd2: |
499 | test byte [DRIVE_DATA+1], 00001000b |
615 | test byte [DRIVE_DATA+1], 00001000b |
500 | setnz al |
616 | setnz al |
501 | ret |
617 | ret |
- | 618 | ;-------------------------------------- |
|
502 | fs_HasCd3: |
619 | fs_HasCd3: |
503 | test byte [DRIVE_DATA+1], 00000010b |
620 | test byte [DRIVE_DATA+1], 00000010b |
504 | setnz al |
621 | setnz al |
505 | ret |
622 | ret |
- | 623 | ;-------------------------------------- |
|
- | 624 | fs_HasCd4: |
|
- | 625 | test byte [DRIVE_DATA+6], 10000000b |
|
- | 626 | setnz al |
|
- | 627 | ret |
|
- | 628 | ;-------------------------------------- |
|
- | 629 | fs_HasCd5: |
|
- | 630 | test byte [DRIVE_DATA+6], 00100000b |
|
- | 631 | setnz al |
|
- | 632 | ret |
|
- | 633 | ;-------------------------------------- |
|
- | 634 | fs_HasCd6: |
|
- | 635 | test byte [DRIVE_DATA+6], 00001000b |
|
- | 636 | setnz al |
|
- | 637 | ret |
|
- | 638 | ;-------------------------------------- |
|
- | 639 | fs_HasCd7: |
|
- | 640 | test byte [DRIVE_DATA+6], 00000010b |
|
- | 641 | setnz al |
|
- | 642 | ret |
|
- | 643 | ;-------------------------------------- |
|
- | 644 | fs_HasCd8: |
|
506 | ;******************************************************* |
645 | test byte [DRIVE_DATA+11], 10000000b |
- | 646 | setnz al |
|
- | 647 | ret |
|
- | 648 | ;-------------------------------------- |
|
- | 649 | fs_HasCd9: |
|
- | 650 | test byte [DRIVE_DATA+11], 00100000b |
|
- | 651 | setnz al |
|
- | 652 | ret |
|
- | 653 | ;-------------------------------------- |
|
- | 654 | fs_HasCd10: |
|
- | 655 | test byte [DRIVE_DATA+11], 00001000b |
|
- | 656 | setnz al |
|
- | 657 | ret |
|
- | 658 | ;-------------------------------------- |
|
- | 659 | fs_HasCd11: |
|
- | 660 | test byte [DRIVE_DATA+11], 00000010b |
|
- | 661 | setnz al |
|
- | 662 | ret |
|
- | 663 | ;----------------------------------------------------------------------------- |
|
507 | 664 | ; |
|
508 | ; fs_NextXXX functions: |
665 | ; fs_NextXXX functions: |
509 | ; in: eax = partition number, from which start to scan |
666 | ; in: eax = partition number, from which start to scan |
510 | ; out: CF=1 => no more partitions |
667 | ; out: CF=1 => no more partitions |
511 | ; CF=0 => eax=next partition number |
668 | ; CF=0 => eax=next partition number |
512 | 669 | ; |
|
513 | ;******************************************************* |
670 | ;----------------------------------------------------------------------------- |
514 | fs_NextCd: |
671 | fs_NextCd: |
515 | ; we always have /cdX/1 |
672 | ; we always have /cdX/1 |
516 | test eax, eax |
673 | test eax, eax |
517 | stc |
674 | stc |
518 | jnz @f |
675 | jnz @f |
519 | mov al, 1 |
676 | mov al, 1 |
520 | clc |
677 | clc |
521 | @@: |
678 | @@: |
522 | ret |
679 | ret |
523 | ;******************************************************* |
- | |
524 | - | ||
525 | ;----------------------------------------------------------------------------- |
680 | ;----------------------------------------------------------------------------- |
526 | process_replace_file_name: |
681 | process_replace_file_name: |
527 | ; in |
682 | ; in |
528 | ; esi - path with filename(f.70) |
683 | ; esi - path with filename(f.70) |
529 | ; |
684 | ; |