forked from KolibriOS/kolibrios
4c1ad6f2c7
move sys_pgmap at the top of kernel memory git-svn-id: svn://kolibrios.org@513 a494cfbc-eb01-0410-851d-a64ba20cac60
217 lines
3.6 KiB
PHP
217 lines
3.6 KiB
PHP
;-------------------------------------------------------------------------
|
||
;
|
||
; ‡ ¬¥ ¨¬¥ ä ©«®¢
|
||
;
|
||
;
|
||
; SPraid
|
||
;
|
||
;-------------------------------------------------------------------------
|
||
|
||
full_file_name_table dd 0 ; 㪠§ â¥«ì ¯ ¬ïâì ¤«ï â ¡«¨æë ¯ã⥩ 4Š § ¯¨áì 64 (32 - áâப è ¡«® ¤«ï ¯®¨áª , 32 - áâப è ¡«® ¤«ï § ¬¥ë)
|
||
|
||
; ¯¥à¥¡¨à ¥â ¯® ä ©«ã ¢ ਠâë § ¬¥
|
||
proc full_file_name stdcall,sourc,dest
|
||
locals
|
||
tmpsrc rb 260 ; ¢à¥¬¥®¥ åà ¥¨¥ ¯à¥®¡à §®¢ ¨ï
|
||
endl
|
||
pushad
|
||
mov esi,[sourc]
|
||
lea edi, [tmpsrc]
|
||
|
||
@@:
|
||
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
|
||
|
||
imul eax,eax,64
|
||
add eax,[full_file_name_table]
|
||
mov ebx,eax
|
||
add eax,32
|
||
|
||
mov cl,[ebx]
|
||
or cl,cl
|
||
jz .done
|
||
|
||
lea ecx, [tmpsrc]
|
||
mov edx,[dest]
|
||
|
||
stdcall full_file_name_parse, ecx,edx,ebx,eax
|
||
|
||
mov esi,[dest]
|
||
lea edi, [tmpsrc]
|
||
@@:
|
||
lodsb
|
||
stosb
|
||
or al,al
|
||
jnz @b
|
||
|
||
pop eax
|
||
inc eax
|
||
jmp .loop
|
||
|
||
.done:
|
||
pop eax
|
||
full_file_name_exit:
|
||
|
||
lea eax, [tmpsrc]
|
||
stdcall full_file_name_parse , eax , [dest], sysdir_ , sys_path
|
||
popad
|
||
ret
|
||
endp
|
||
|
||
;
|
||
; <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,[OS_BASE+0x10000+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
|
||
|
||
proc load_file_parse_table
|
||
pushad
|
||
stdcall kernel_alloc,0x1000
|
||
mov [full_file_name_table],eax
|
||
|
||
invoke ini.enum_keys,conf_fname,conf_path_sect,get_every_key
|
||
|
||
mov eax,[loading_counter]
|
||
imul eax,eax,64
|
||
add eax,[full_file_name_table]
|
||
mov [eax],byte 0
|
||
popad
|
||
ret
|
||
endp
|
||
|
||
loading_counter dd 0
|
||
def_val_1 db 0
|
||
|
||
proc get_every_key stdcall,f_name, sec_name, key_name
|
||
pushad
|
||
mov esi,[key_name]
|
||
mov edi,[loading_counter]
|
||
imul edi,edi,64
|
||
add edi,[full_file_name_table]
|
||
@@:
|
||
lodsb
|
||
stosb
|
||
or al,al
|
||
jnz @b
|
||
|
||
mov eax,[loading_counter]
|
||
imul eax,eax,64
|
||
add eax,[full_file_name_table]
|
||
add eax,32
|
||
mov ebx,[key_name]
|
||
invoke ini.get_str,conf_fname,conf_path_sect,ebx,eax,32,def_val_1
|
||
|
||
inc dword [loading_counter]
|
||
|
||
popad
|
||
mov eax,1
|
||
ret
|
||
endp
|
||
|