Subversion Repositories Kolibri OS

Rev

Rev 2973 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2973 Rev 3313
Line 6... Line 6...
6
;;   23.01.2010  turbanoff  - support 70.0 70.1                 ;;
6
;;   23.01.2010  turbanoff  - support 70.0 70.1                 ;;
7
;;                                                              ;;
7
;;                                                              ;;
8
;;                                                              ;;
8
;;                                                              ;;
9
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
9
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Line 10... Line 10...
10
 
10
 
Line 11... Line 11...
11
$Revision: 2973 $
11
$Revision: 3313 $
12
 
12
 
13
EXT2_BAD_INO         = 1
13
EXT2_BAD_INO         = 1
14
EXT2_ROOT_INO        = 2
14
EXT2_ROOT_INO        = 2
Line 893... Line 893...
893
        jb      .size_great_less
893
        jb      .size_great_less
894
        cmp     [ebp + EXT2_INODE_STRUC.i_size], eax
894
        cmp     [ebp + EXT2_INODE_STRUC.i_size], eax
895
        jae     .size_great_great
895
        jae     .size_great_great
Line 896... Line 896...
896
 
896
 
897
    .size_great_less:
-
 
898
        push    1
897
    .size_great_less:
899
;        or      [EXT2_files_in_folder], 1       ;читаем по границе размера
898
        push    1                                ;читаем по границе размера
900
        mov     ecx, [ebp + EXT2_INODE_STRUC.i_size]
899
        mov     ecx, [ebp + EXT2_INODE_STRUC.i_size]
901
        sub     ecx, [esi]                      ;(размер - старт) = сколько читать
900
        sub     ecx, [esi]                      ;(размер - старт) = сколько читать
Line 902... Line 901...
902
        jmp     @F
901
        jmp     @F
903
 
-
 
904
    .size_great_great:
902
 
Line 905... Line 903...
905
        push    0
903
    .size_great_great:
906
;        and     [EXT2_files_in_folder], 0       ;читаем столько сколько запросили
904
        push    0                                ;читаем столько сколько запросили
907
 
905
 
908
    @@:
906
    @@:
Line 917... Line 915...
917
        ;получим кусок из первого блока
915
        ;получим кусок из первого блока
918
        mov     edx, [esi+4]
916
        mov     edx, [esi+4]
919
        mov     eax, [esi]
917
        mov     eax, [esi]
920
        div     [ext2_data.block_size]
918
        div     [ext2_data.block_size]
Line 921... Line 919...
921
 
919
 
Line 922... Line 920...
922
        push    eax       ;номер блока запоминаем
920
        push    eax       ;счетчик блоков ложим в стек
923
        
921
        
924
        push    ecx
922
        push    ecx
925
        mov     ecx, eax
923
        mov     ecx, eax
Line 947... Line 945...
947
        rep movsb                               ;кусок 1-го блока
945
        rep movsb                               ;кусок 1-го блока
948
        jmp     .calc_blocks_count
946
        jmp     .calc_blocks_count
Line 949... Line 947...
949
 
947
 
950
    .zero_start:
948
    .zero_start:
951
        mov     eax, ecx
949
        mov     eax, ecx
952
        push    0                               ;счетчик блоков
950
        push    0                               ;счетчик блоков ложим в стек
953
        ;теперь в eax кол-во оставшихся байт для чтения
951
        ;теперь в eax кол-во оставшихся байт для чтения
954
    .calc_blocks_count:
952
    .calc_blocks_count:
955
        mov     ebx, edi                        ;чтение блока прям в ->ebx
953
        mov     ebx, edi                        ;чтение блока прям в ->ebx
956
        xor     edx, edx
954
        xor     edx, edx
Line 992... Line 990...
992
        jnz     .error_at_finish_block
990
        jnz     .error_at_finish_block
Line 993... Line 991...
993
 
991
 
994
        mov     ecx, edx 
992
        mov     ecx, edx 
995
        mov     esi, ebx
993
        mov     esi, ebx
-
 
994
        rep movsb                               ;кусок last блока
-
 
995
        jmp     @F
996
        rep movsb                               ;кусок last блока
996
 
-
 
997
    .end_read:
997
    .end_read:
998
        pop     ecx                             ;счетчик блоков, который хранился в стеке
998
        pop     ebx
999
    @@:
-
 
1000
        pop     ebx                             ;количество считанных байт
999
        pop     eax
1001
        pop     eax                             ; 1 или 0 - достигли ли конца файла
1000
        test    eax, eax
1002
        test    eax, eax
Line 1001... Line 1003...
1001
        jz      @F
1003
        jz      @F
1002
 
1004