Subversion Repositories Kolibri OS

Rev

Rev 509 | Rev 513 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

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