Subversion Repositories Kolibri OS

Rev

Rev 509 | Rev 513 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. ;-------------------------------------------------------------------------
  2. ;
  3. ;    ‡ ¬¥­  ¨¬¥­ ä ©«®¢
  4. ;
  5. ;
  6. ;     SPraid
  7. ;
  8. ;-------------------------------------------------------------------------
  9.  
  10. full_file_name_table dd 0               ; 㪠§ â¥«ì ­  ¯ ¬ïâì ¤«ï â ¡«¨æë ¯ã⥩ 4Š   § ¯¨áì 64 (32 - áâப  è ¡«®­ ¤«ï ¯®¨áª , 32 - áâப  è ¡«®­ ¤«ï § ¬¥­ë)
  11.  
  12. ; ¯¥à¥¡¨à ¥â ¯® ä ©«ã ¢ à¨ ­âë § ¬¥­
  13. proc full_file_name stdcall,sourc,dest
  14. locals
  15.   tmpsrc rb 60  ; ¢à¥¬¥­­®¥ åà ­¥­¨¥ ¯à¥®¡à §®¢ ­¨ï
  16. endl
  17.   pushad
  18.   mov esi,[sourc]
  19.   lea edi, [tmpsrc]
  20.  
  21. @@:
  22.   lodsb
  23.   stosb
  24.   or al,al
  25.   jnz @b
  26.  
  27.   mov al,[conf_file_loaded]                                     ; âॡã¥âáï ¯à¨ ®¡à é¥­¨¨ ª ¯¥à¢®¬ã ä ©«ã (ª®­ä¨£ã)
  28.   or al,al
  29.   jnz @use_replace
  30.  
  31.   jmp full_file_name_exit
  32.  
  33.  
  34. ;--------------------------------
  35.  @use_replace:
  36.  
  37.   xor eax,eax
  38. .loop:
  39.   push eax
  40.  
  41.   imul eax,eax,64
  42.   add eax,[full_file_name_table]
  43.   mov ebx,eax
  44.   add eax,32
  45.  
  46.   mov cl,[ebx]
  47.   or cl,cl
  48.   jz .done
  49.  
  50.   lea ecx, [tmpsrc]
  51.   mov edx,[dest]
  52.  
  53.   stdcall full_file_name_parse, ecx,edx,ebx,eax
  54.  
  55.   mov esi,[dest]
  56.   lea edi, [tmpsrc]
  57. @@:
  58.   lodsb
  59.   stosb
  60.   or al,al
  61.   jnz @b
  62.  
  63.   pop eax
  64.   inc eax
  65.   jmp .loop
  66.  
  67. .done:
  68.   pop eax
  69. full_file_name_exit:
  70.  
  71.   lea eax, [tmpsrc]
  72.   stdcall full_file_name_parse , eax , [dest], sysdir_ , sys_path
  73.   popad
  74.   ret
  75. endp
  76.  
  77. ;
  78. ;  à¥®¡à §®¢ âì ¨¬ï ¢ ¯®«­®¥. …᫨ ¢ ­ ç «¥ á⮨â
  79. ;     sourc - áá뫪  ­  áâபã...
  80. ;         dest - áá뫪  ­  ¡ãä¥à ªã¤  १ã«ìâ â «®¦¨âì
  81. ;         def - áâப  è ¡«®­ ¤«ï ¯®¨áª 
  82. ;         dval - ª 祬㠯à¨à ¢­¨¢ âì è ¡«®­
  83. proc full_file_name_parse stdcall,sourc,dest,def,dval
  84.   ; ¤«ï ®¤­®£®
  85.   pushad
  86.  
  87.   mov eax,[sourc]
  88.   mov ebx,[def]
  89. @@:
  90.   mov dl,[ebx]
  91.   mov cl,[eax]
  92.   cmp cl,0
  93.   je  @@bad_s
  94.   cmp dl,0
  95.   je  @@good
  96.  
  97.   or cl,0x20
  98.   or dl,0x20
  99.   cmp cl,dl
  100.   jne  @@bad
  101.  
  102.   inc eax
  103.   inc ebx
  104.   jmp @b
  105.  
  106. @@bad_s:
  107.   cmp dl,0
  108.   je  @@good
  109.  
  110. @@bad:
  111.   mov edi,[dest]
  112.   mov esi,[sourc]
  113. @@:
  114.   lodsb
  115.   stosb
  116.   or al,al
  117.   jnz   @b
  118.   jmp @@ret_ok
  119.  
  120. @@good:
  121.   push eax
  122.   mov edi,[dest]
  123.   mov esi,[dval]
  124. @@:
  125.   lodsb
  126.   stosb
  127.   or al,al
  128.   jnz   @b
  129.  
  130. @@goodl:
  131.   pop esi
  132.   dec edi
  133. @@:
  134.   lodsb
  135.   stosb
  136.   or al,al
  137.   jnz   @b
  138.  
  139. @@ret_ok:
  140.   popad
  141.   ret
  142.  
  143. endp
  144.  
  145.  sys_dir_mess: db 'System dir is '
  146.  sys_path: db '/HD0/1/KOLIBRI',0,0
  147.  sysdir_ db '%sys%',0
  148.  
  149. ; ¡¥à¥â ¯ à ¬¥âàë bx_from_load ¨ ¨áç¨â ä ©« ª®­ä¨£ãà æ¨¨
  150. Parser_params:
  151.   pushad
  152.   mov ax,[OS_BASE+0x10000+bx_from_load]
  153.   cmp al,'r' ; à ¬ ¤¨áª
  154.   jnz @f
  155.   mov [sys_path],dword '/RD/'
  156.   mov [sys_path+4],byte ah
  157.   mov [sys_path+5],word 0 ;0x002F
  158.   jmp .done
  159. @@:
  160.   sub al,49
  161.   mov [sys_path],dword '/HDa'
  162.   mov [sys_path+3],byte al
  163.   mov [sys_path+4],byte '/'
  164.   mov [sys_path+5],byte ah
  165.   mov [sys_path+6],dword '/KOL'
  166.   mov [sys_path+10],dword 'IBRI'
  167.   mov [sys_path+14],word 0 ;0x002F
  168.  
  169. .done:
  170.   popad
  171.   ret
  172.  
  173. proc load_file_parse_table
  174.   pushad
  175.   stdcall kernel_alloc,0x1000
  176.   mov [full_file_name_table],eax
  177.  
  178.   invoke ini.enum_keys,conf_fname,conf_path_sect,get_every_key
  179.  
  180.   mov eax,[loading_counter]
  181.   imul eax,eax,64
  182.   add eax,[full_file_name_table]
  183.   mov [eax],byte 0
  184.   popad
  185.   ret
  186. endp
  187.  
  188. loading_counter dd 0
  189. def_val_1 db 0
  190.  
  191. proc get_every_key stdcall,f_name, sec_name, key_name
  192.   pushad
  193.   mov esi,[key_name]
  194.   mov edi,[loading_counter]
  195.   imul edi,edi,64
  196.   add edi,[full_file_name_table]
  197. @@:
  198.   lodsb
  199.   stosb
  200.   or al,al
  201.   jnz   @b
  202.  
  203.   mov eax,[loading_counter]
  204.   imul eax,eax,64
  205.   add eax,[full_file_name_table]
  206.   add eax,32
  207.   mov ebx,[key_name]
  208.   invoke ini.get_str,conf_fname,conf_path_sect,ebx,eax,32,def_val_1
  209.  
  210.   inc dword [loading_counter]
  211.  
  212.   popad
  213.   mov eax,1
  214.   ret
  215. endp
  216.  
  217.