Subversion Repositories Kolibri OS

Rev

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

Rev 154 Rev 364
Line 63... Line 63...
63
.IDE_Channel_2:
63
.IDE_Channel_2:
64
    mov [IDE_Channel_2],0
64
    mov [IDE_Channel_2],0
65
    ret
65
    ret
66
    
66
 
Line -... Line 67...
-
 
67
uglobal    
67
cd_status dd 0
68
cd_status dd 0
-
 
69
endg
Line 68... Line 70...
68
 
70
 
69
;----------------------------------------------------------------
71
;----------------------------------------------------------------
70
;
72
;
71
;  fs_CdRead - LFN variant for reading CD disk
73
;  fs_CdRead - LFN variant for reading CD disk
Line 251... Line 253...
251
        jne   .noaccess_1
253
        jne     .noaccess_1
252
        call .get_names_from_buffer
254
        call    .get_names_from_buffer
253
        sub  eax,2048
255
        sub     eax,2048
254
; äèðåêòîðèÿ çàêîí÷èëàñü?
256
; äèðåêòîðèÿ çàêîí÷èëàñü?
255
        cmp  eax,0
257
        ja      .read_to_buffer
256
        ja   .read_to_buffer
-
 
257
        mov   edi,[cd_counter_block]
258
        mov     edi, [cd_counter_block]
258
        mov   [edx+8],edi
259
        mov     [edx+8], edi
259
        mov   edi,[ebx] 
260
        mov     edi, [ebx]
260
        sub   [edx+4],edi
261
        sub     [edx+4], edi
261
        pop     ecx edi
262
        xor     eax, eax
-
 
263
        dec     ecx
-
 
264
        js      @f
-
 
265
        mov     al, ERROR_END_OF_FILE
-
 
266
@@:
-
 
267
        pop     ecx edi
262
        mov     ebx, [edx+4]
268
        mov     ebx, [edx+4]
263
        mov     eax,ERROR_SUCCESS
269
        ret
264
        ret    
-
 
265
    
270
 
Line 266... Line 271...
266
.get_names_from_buffer:
271
.get_names_from_buffer:
267
    mov     [cd_current_pointer_of_input_2],CDDataBuf
272
    mov     [cd_current_pointer_of_input_2],CDDataBuf
268
    push    eax esi edi edx
273
    push    eax esi edi edx
Line 656... Line 661...
656
; êîíåö ïóòè ôàéëà
661
; êîíåö ïóòè ôàéëà
657
        cmp    byte [esi-1], 0
662
        cmp    byte [esi-1], 0
658
        jz    .done
663
        jz    .done
659
        mov    eax,[cd_current_pointer_of_input]
664
        mov    eax,[cd_current_pointer_of_input]
660
        add    eax,2
665
        push    dword [eax+2]
661
        mov    eax,[eax]
-
 
662
        mov    [CDSectorAddress],eax ; íà÷àëî äèðåêòîðèè
666
        pop     dword [CDSectorAddress]       ; íà÷àëî äèðåêòîðèè
663
        add    eax,8
667
        mov    eax,[eax+2+8]  ; ðàçìåð äèðåêòîðèè
664
        mov    eax,[eax]  ; ðàçìåð äèðåêòîðèè
-
 
665
        jmp    .mainloop
668
        jmp    .mainloop
666
; óêàçàòåëü ôàéëà íàéäåí
669
; óêàçàòåëü ôàéëà íàéäåí
667
   .done:
670
   .done:
668
        pop  esi eax
671
        pop  esi eax
669
        clc
672
        clc
670
        ret
673
        ret