/kernel/trunk/fs/fat32.inc |
---|
129,8 → 129,41 |
pop eax |
sti |
ret |
;******************************************** |
reserve_hd_channel: |
cmp [hdbase], 0x1F0 |
jne .IDE_Channel_2 |
.IDE_Channel_1: |
cli |
cmp [IDE_Channel_1],0 |
je .reserve_ok_1 |
sti |
call change_task |
jmp .IDE_Channel_1 |
.IDE_Channel_2: |
cli |
cmp [IDE_Channel_2],0 |
je .reserve_ok_2 |
sti |
call change_task |
jmp .IDE_Channel_1 |
.reserve_ok_1: |
mov [IDE_Channel_1],1 |
ret |
.reserve_ok_2: |
mov [IDE_Channel_2],1 |
ret |
free_hd_channel: |
cmp [hdbase], 0x1F0 |
jne .IDE_Channel_2 |
.IDE_Channel_1: |
mov [IDE_Channel_1],0 |
ret |
.IDE_Channel_2: |
mov [IDE_Channel_2],0 |
ret |
;******************************************** |
clear_hd_cache: |
push eax ecx edi |
/kernel/trunk/fs/fs_lfn.inc |
---|
407,6 → 407,7 |
mov [hdid], 0x10 |
push 4 |
fs_OnHd: |
call reserve_hd_channel |
pop eax |
mov [hdpos], eax |
cmp ecx, 0x100 |
414,6 → 415,7 |
cmp cl, [0x40001+eax] |
jbe @f |
.nf: |
call free_hd_channel |
and [hd1_status], 0 |
mov dword [esp+36], 5 ; not found |
ret |
430,11 → 432,13 |
jae .not_impl |
add ebx, 4 |
call dword [fs_HdServices + eax*4] |
call free_hd_channel |
and [hd1_status], 0 |
mov [esp+36], eax |
mov [esp+24], ebx |
ret |
.not_impl: |
call free_hd_channel |
and [hd1_status], 0 |
mov dword [esp+36], 2 ; not implemented |
ret |
475,7 → 479,7 |
mov [DiskNumber],1 |
push 0 |
fs_OnCd: |
call reserve_cd_channel |
pop eax |
mov [hdpos], eax |
cmp ecx, 0x100 |
489,6 → 493,7 |
jnz @f |
.nf: |
call free_cd_channel |
and [cd_status], 0 |
mov dword [esp+36], 5 ; not found |
ret |
501,11 → 506,13 |
jae .not_impl |
add ebx, 4 |
call dword [fs_CdServices + eax*4] |
call free_cd_channel |
and [cd_status], 0 |
mov [esp+36], eax |
mov [esp+24], ebx |
ret |
.not_impl: |
call free_cd_channel |
and [cd_status], 0 |
mov dword [esp+36], 2 ; not implemented |
ret |
/kernel/trunk/fs/iso9660.inc |
---|
4,6 → 4,8 |
cd_current_pointer_of_input_2 dd 0 |
cd_mem_location dd 0 |
cd_counter_block dd 0 |
IDE_Channel_1 db 0 |
IDE_Channel_2 db 0 |
endg |
CDDataBuf equ 0x7000 |
16,7 → 18,7 |
sti |
call change_task |
jmp reserve_hd1 |
jmp reserve_cd |
reserve_ok2: |
29,6 → 31,40 |
sti |
ret |
reserve_cd_channel: |
cmp [ChannelNumber],1 |
jne .IDE_Channel_2 |
.IDE_Channel_1: |
cli |
cmp [IDE_Channel_1],0 |
je .reserve_ok_1 |
sti |
call change_task |
jmp .IDE_Channel_1 |
.IDE_Channel_2: |
cli |
cmp [IDE_Channel_2],0 |
je .reserve_ok_2 |
sti |
call change_task |
jmp .IDE_Channel_1 |
.reserve_ok_1: |
mov [IDE_Channel_1],1 |
ret |
.reserve_ok_2: |
mov [IDE_Channel_2],1 |
ret |
free_cd_channel: |
cmp [ChannelNumber],1 |
jne .IDE_Channel_2 |
.IDE_Channel_1: |
mov [IDE_Channel_1],0 |
ret |
.IDE_Channel_2: |
mov [IDE_Channel_2],0 |
ret |
cd_status dd 0 |
;---------------------------------------------------------------- |