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 |