0,0 → 1,137 |
device_detect: ; f1811 |
mcall 18,11,1,device_present_buffer |
mov [device_present.rd],1 |
cmp [device_present_buffer.fd],0 |
je @f |
mov [device_present.fd],1 |
@@: |
mov al,[device_present_buffer.hd_cd] |
test al,10b |
je @f |
mov [device_present.cd3],1 |
jmp .ide2 |
@@: |
test al,1b |
je @f |
mov [device_present.hd3],1 |
.ide2: |
@@: |
test al,1000b |
je @f |
mov [device_present.cd2],1 |
jmp .ide1 |
@@: |
test al,100b |
je @f |
mov [device_present.hd2],1 |
.ide1: |
@@: |
test al,100000b |
je @f |
mov [device_present.cd1],1 |
jmp .ide0 |
@@: |
test al,10000b |
je @f |
mov [device_present.hd1],1 |
.ide0: |
@@: |
test al,10000000b |
je @f |
mov [device_present.cd0],1 |
jmp .end |
@@: |
test al,1000000b |
je @f |
mov [device_present.hd0],1 |
.end: |
@@: |
ret |
;--------------------------------------------------------------------- |
device_detect_f70: |
mov eax,[left_folder_data] |
mov [read_folder.return],eax |
mcall 70, read_folder |
test eax,eax |
jz @f |
cmp eax,6 |
jne read_folder_error |
@@: |
mov [left_folder_block],ebx |
mov [temp_counter_1],0 |
mov [retrieved_devices_table_counter],0 |
.start_temp_counter_1: |
imul esi,[temp_counter_1],304 |
add esi,[left_folder_data] |
add esi,32+40 ;[eax+32+40] |
call copy_folder_name_1 |
mov eax,[right_folder_data] |
mov [read_folder_1.return],eax |
mcall 70, read_folder_1 |
test eax,eax |
jz @f |
cmp eax,6 |
jne read_folder_1_error |
@@: |
mov eax,[right_folder_data] |
cmp [eax+4],dword 0 |
je .continue |
mov [right_folder_block],ebx |
mov ebp,0 |
.start_copy_device_patch: |
imul edi,[retrieved_devices_table_counter],10 |
add edi,retrieved_devices_table |
mov [edi],byte '/' |
inc edi |
imul esi,[temp_counter_1],304 |
add esi,[left_folder_data] |
add esi,32+40 ;[eax+32+40] |
call proc_copy_patch |
imul esi,ebp,304 |
add esi,[right_folder_data] |
add esi,32+40 ;[eax+32+40] |
mov [edi-1],byte '/' |
call proc_copy_patch |
inc [retrieved_devices_table_counter] |
inc ebp |
cmp ebp,[right_folder_block] |
jb .start_copy_device_patch |
.continue: |
inc [temp_counter_1] |
mov eax,[temp_counter_1] |
cmp eax,[left_folder_block] |
jb .start_temp_counter_1 |
mov esi,retrieved_devices_table+1 |
call copy_folder_name |
mov esi,retrieved_devices_table+3 |
mov ecx,0 |
@@: |
add esi,8 |
cld |
lodsw |
inc ecx |
cmp ecx,[retrieved_devices_table_counter] |
ja @f |
cmp ax,'hd' |
jne @r |
sub esi,2 |
call copy_folder_name_1 |
ret |
@@: |
; mov [read_folder_1.name+1],dword 0 |
; mov [read_folder_1_name+1],dword 0 |
mov esi,retrieved_devices_table+1 |
call copy_folder_name_1 |
; mov [read_folder_1_name],dword '/rd/' |
; mov [read_folder_1_name+4],word '1/' |
; mov [read_folder_1_name+6],byte 0 |
ret |
;--------------------------------------------------------------------- |
proc_copy_patch: |
@@: |
cld |
lodsb |
stosb |
cmp al,0 |
jne @r |
ret |