kolibrios/kernel/trunk/fs/parse_fn.inc
SPraid (simba) e1f463adf0 loading libs for kernel
loading from HD
inifiles.asm (not completed, using with kernel to load sys.conf)
parse file names
%sys% may be system directory for programs (70 function)

git-svn-id: svn://kolibrios.org@488 a494cfbc-eb01-0410-851d-a64ba20cac60
2007-05-11 19:38:23 +00:00

183 lines
2.9 KiB
PHP
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

;-------------------------------------------------------------------------
;
; ‡ ¬¥­  ¨¬¥­ ä ©«®¢
;
;
; SPraid
;
;-------------------------------------------------------------------------
; ¯¥à¥¡¨à ¥â ¯® ä ©«ã ¢ à¨ ­âë § ¬¥­
proc full_file_name stdcall,sourc,dest
locals
param rb 60
val rb 60
tmpsrc rb 60 ; ¢à¥¬¥­­®¥ åà ­¥­¨¥ ¯à¥®¡à §®¢ ­¨ï
endl
pushad
mov esi,[sourc]
mov edi,ebp
add edi,tmpsrc-ebp
@@:
lodsb
stosb
or al,al
jnz @b
mov al,[conf_file_loaded] ; âॡã¥âáï ¯à¨ ®¡à é¥­¨¨ ª ¯¥à¢®¬ã ä ©«ã (ª®­ä¨£ã)
or al,al
jnz @use_replace
jmp full_file_name_exit
;--------------------------------
@use_replace:
xor eax,eax
.loop:
push eax
mov ebx,ebp
add ebx,param-ebp
mov ecx,ebp
add ecx,val-ebp
invoke ini.get_par,sect, ebx, ecx, eax
mov bl,[param]
or bl,bl
jz .done
mov eax,ebp
add eax,tmpsrc-ebp
mov ebx,ebp
add ebx,param-ebp
mov ecx,ebp
add ecx,val-ebp
mov edx,[dest]
stdcall full_file_name_parse, eax,edx,ebx,ecx
mov esi,[dest]
mov edi,ebp
add edi,tmpsrc-ebp
@@:
lodsb
stosb
or al,al
jnz @b
pop eax
inc eax
jmp .loop
.done:
pop eax
full_file_name_exit:
mov eax,ebp
add eax,tmpsrc-ebp
stdcall full_file_name_parse , eax , [dest], sysdir_ , sys_path
popad
ret
endp
sect: db 'path',0
;
; <EFBFBD>८¡à §®¢ âì ¨¬ï ¢ ¯®«­®¥. …᫨ ¢ ­ ç «¥ á⮨â
; sourc - áá뫪  ­  áâபã...
; dest - áá뫪  ­  ¡ãä¥à ªã¤  १ã«ìâ â «®¦¨âì
; def - áâப  è ¡«®­ ¤«ï ¯®¨áª 
; dval - ª 祬㠯à¨à ¢­¨¢ âì è ¡«®­
proc full_file_name_parse stdcall,sourc,dest,def,dval
; ¤«ï ®¤­®£®
pushad
mov eax,[sourc]
mov ebx,[def]
@@:
mov dl,[ebx]
mov cl,[eax]
cmp cl,0
je @@bad_s
cmp dl,0
je @@good
or cl,0x20
or dl,0x20
cmp cl,dl
jne @@bad
inc eax
inc ebx
jmp @b
@@bad_s:
cmp dl,0
je @@good
@@bad:
mov edi,[dest]
mov esi,[sourc]
@@:
lodsb
stosb
or al,al
jnz @b
jmp @@ret_ok
@@good:
push eax
mov edi,[dest]
mov esi,[dval]
@@:
lodsb
stosb
or al,al
jnz @b
@@goodl:
pop esi
dec edi
@@:
lodsb
stosb
or al,al
jnz @b
@@ret_ok:
popad
ret
endp
sys_dir_mess: db 'System dir is '
sys_path: db '/HD0/1/KOLIBRI',0,0
sysdir_ db '%sys%',0
; ¡¥à¥â ¯ à ¬¥âàë bx_from_load ¨ ¨áç¨â ä ©« ª®­ä¨£ãà æ¨¨
Parser_params:
pushad
mov ax,[BOOT_VAR+bx_from_load]
cmp al,'r' ; à ¬ ¤¨áª
jnz @f
mov [sys_path],dword '/RD/'
mov [sys_path+4],byte ah
mov [sys_path+5],word 0 ;0x002F
jmp .done
@@:
sub al,49
mov [sys_path],dword '/HDa'
mov [sys_path+3],byte al
mov [sys_path+4],byte '/'
mov [sys_path+5],byte ah
mov [sys_path+6],dword '/KOL'
mov [sys_path+10],dword 'IBRI'
mov [sys_path+14],word 0 ;0x002F
.done:
popad
ret