Rev 593 | Rev 750 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 593 | Rev 709 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | $Revision: 0 $ |
1 | $Revision: 0 $ |
Line 2... | Line -... | ||
2 | - | ||
3 | - | ||
4 | ;cache_ide0_pointer dd 0 |
- | |
5 | ;cache_ide0_size dd 0 ; not use |
- | |
6 | ;cache_ide0_data_pointer dd 0 |
- | |
7 | ;cache_ide0_system_data_size dd 0 ; not use |
- | |
8 | ;cache_ide0_appl_data_size dd 0 ; not use |
- | |
9 | ;cache_ide0_system_data dd 0 |
- | |
10 | ;cache_ide0_appl_data dd 0 |
- | |
11 | ;cache_ide0_system_sad_size dd 0 |
- | |
12 | ;cache_ide0_appl_sad_size dd 0 |
- | |
13 | 2 | ||
Line 14... | Line 3... | ||
14 | pusha |
3 | pusha |
15 | 4 | ||
16 | mov eax,[pg_data.pages_free] |
5 | mov eax,[pg_data.pages_free] |
Line 37... | Line 26... | ||
37 | mov [cache_ide1_size],eax |
26 | mov [cache_ide1_size],eax |
38 | mov [cache_ide2_size],eax |
27 | mov [cache_ide2_size],eax |
39 | mov [cache_ide3_size],eax |
28 | mov [cache_ide3_size],eax |
40 | xor eax,eax |
29 | xor eax,eax |
41 | mov [cache_ide0_search_start],eax |
30 | mov [hdd_appl_data],1 ;al |
42 | mov [cache_ide0_appl_search_start],eax |
- | |
43 | mov [cache_ide1_search_start],eax |
- | |
44 | mov [cache_ide1_appl_search_start],eax |
- | |
45 | mov [cache_ide2_search_start],eax |
- | |
46 | mov [cache_ide2_appl_search_start],eax |
- | |
47 | mov [cache_ide3_search_start],eax |
- | |
48 | mov [cache_ide3_appl_search_start],eax |
- | |
49 | mov [hdd_appl_data],1 ;al |
- | |
50 | mov [cd_appl_data],1 |
31 | mov [cd_appl_data],1 |
51 | 32 | ||
Line 52... | Line 33... | ||
52 | mov cl,[DRIVE_DATA+1] |
33 | mov ch,[DRIVE_DATA+1] |
53 | mov ch,cl |
34 | mov cl,ch |
54 | and cl,11b |
35 | and cl,11b |
55 | cmp cl,0 |
- | |
56 | je .ide2 |
36 | je .ide2 |
- | 37 | mov esi,cache_ide3 |
|
57 | call get_cache_ide3 |
38 | call get_cache_ide |
58 | .ide2: |
39 | .ide2: |
59 | mov cl,ch |
40 | mov cl,ch |
60 | and cl,1100b |
41 | shr cl,2 |
61 | cmp cl,0 |
42 | and cl,11b |
62 | je .ide1 |
43 | je .ide1 |
- | 44 | mov esi,cache_ide2 |
|
63 | call get_cache_ide2 |
45 | call get_cache_ide |
64 | .ide1: |
46 | .ide1: |
65 | mov cl,ch |
47 | mov cl,ch |
66 | and cl,110000b |
48 | shr cl,4 |
67 | cmp cl,0 |
49 | and cl,11b |
68 | je .ide0 |
50 | je .ide0 |
- | 51 | mov esi,cache_ide1 |
|
69 | call get_cache_ide1 |
52 | call get_cache_ide |
70 | .ide0: |
53 | .ide0: |
71 | mov cl,ch |
54 | mov cl,ch |
72 | and cl,11000000b |
55 | shr cl,6 |
73 | cmp cl,0 |
56 | and cl,11b |
74 | je end_get_cache |
57 | je @f |
75 | call get_cache_ide0 |
58 | mov esi,cache_ide0 |
76 | jmp end_get_cache |
59 | call get_cache_ide |
77 | 60 | @@: |
|
78 | get_cache_ide0: |
61 | xor ecx,ecx |
79 | push ecx |
62 | cmp [NumBiosDisks],ecx |
80 | stdcall kernel_alloc,[cache_ide0_size] |
63 | jz .endbd |
81 | mov [cache_ide0_pointer],eax |
64 | mov esi,BiosDiskCaches |
82 | pop ecx |
65 | .loopbd: |
- | 66 | cmp byte [BiosDisksData+ecx*4+2],-1 |
|
83 | mov edx,eax |
67 | jnz .contbd |
84 | mov eax,[cache_ide0_size] |
68 | mov eax,[cache_ide0_size] |
85 | shr eax,3 |
- | |
86 | mov [cache_ide0_system_data_size],eax |
69 | mov [esi+cache_ide0_size-cache_ide0],eax |
87 | mov ebx,eax |
- | |
88 | imul eax,7 |
- | |
89 | mov [cache_ide0_appl_data_size],eax |
- | |
90 | add ebx,edx |
- | |
91 | mov [cache_ide0_data_pointer],ebx |
- | |
92 | - | ||
93 | cmp cl,10000000b |
- | |
94 | je .cd |
- | |
95 | push ecx |
- | |
96 | mov eax,[cache_ide0_system_data_size] |
- | |
97 | call calculate_for_hd |
- | |
98 | add eax,[cache_ide0_pointer] |
- | |
99 | mov [cache_ide0_system_data],eax |
- | |
100 | mov [cache_ide0_system_sad_size],ecx |
- | |
101 | - | ||
102 | push edi |
- | |
103 | mov edi,[cache_ide0_pointer] |
- | |
104 | call clear_ide_cache |
- | |
105 | pop edi |
- | |
106 | - | ||
107 | mov eax,[cache_ide0_appl_data_size] |
- | |
108 | call calculate_for_hd |
- | |
109 | add eax,[cache_ide0_data_pointer] |
- | |
110 | mov [cache_ide0_appl_data],eax |
- | |
111 | mov [cache_ide0_appl_sad_size],ecx |
- | |
112 | - | ||
113 | push edi |
- | |
114 | mov edi,[cache_ide0_data_pointer] |
- | |
115 | call clear_ide_cache |
- | |
116 | pop edi |
- | |
117 | - | ||
118 | pop ecx |
- | |
119 | ret |
- | |
120 | .cd: |
- | |
121 | push ecx |
- | |
122 | mov eax,[cache_ide0_system_data_size] |
- | |
123 | call calculate_for_cd |
- | |
124 | add eax,[cache_ide0_pointer] |
- | |
125 | mov [cache_ide0_system_data],eax |
- | |
126 | mov [cache_ide0_system_sad_size],ecx |
- | |
127 | - | ||
128 | push edi |
- | |
129 | mov edi,[cache_ide0_pointer] |
- | |
130 | call clear_ide_cache |
- | |
131 | pop edi |
- | |
132 | - | ||
133 | mov eax,[cache_ide0_appl_data_size] |
- | |
134 | call calculate_for_cd |
- | |
135 | add eax,[cache_ide0_data_pointer] |
- | |
136 | mov [cache_ide0_appl_data],eax |
- | |
137 | mov [cache_ide0_appl_sad_size],ecx |
- | |
138 | - | ||
139 | push edi |
- | |
140 | mov edi,[cache_ide0_data_pointer] |
- | |
141 | call clear_ide_cache |
- | |
142 | pop edi |
- | |
143 | - | ||
144 | pop ecx |
- | |
145 | ret |
- | |
146 | - | ||
147 | get_cache_ide1: |
- | |
148 | push ecx |
- | |
149 | stdcall kernel_alloc,[cache_ide1_size] |
- | |
150 | mov [cache_ide1_pointer],eax |
- | |
151 | pop ecx |
- | |
152 | mov edx,eax |
- | |
153 | mov eax,[cache_ide1_size] |
- | |
154 | shr eax,3 |
- | |
155 | mov [cache_ide1_system_data_size],eax |
- | |
156 | mov ebx,eax |
- | |
157 | imul eax,7 |
- | |
158 | mov [cache_ide1_appl_data_size],eax |
- | |
159 | add ebx,edx |
- | |
160 | mov [cache_ide1_data_pointer],ebx |
- | |
161 | - | ||
162 | cmp cl,100000b |
- | |
163 | je .cd |
- | |
164 | push ecx |
- | |
165 | mov eax,[cache_ide1_system_data_size] |
- | |
166 | call calculate_for_hd |
- | |
167 | add eax,[cache_ide1_pointer] |
- | |
168 | mov [cache_ide1_system_data],eax |
- | |
169 | mov [cache_ide1_system_sad_size],ecx |
- | |
170 | - | ||
171 | push edi |
- | |
172 | mov edi,[cache_ide1_pointer] |
- | |
173 | call clear_ide_cache |
- | |
174 | pop edi |
- | |
175 | - | ||
176 | mov eax,[cache_ide1_appl_data_size] |
- | |
177 | call calculate_for_hd |
- | |
178 | add eax,[cache_ide1_data_pointer] |
- | |
179 | mov [cache_ide1_appl_data],eax |
- | |
180 | mov [cache_ide1_appl_sad_size],ecx |
- | |
181 | - | ||
182 | push edi |
- | |
183 | mov edi,[cache_ide1_data_pointer] |
- | |
184 | call clear_ide_cache |
- | |
185 | pop edi |
- | |
186 | - | ||
187 | pop ecx |
- | |
188 | ret |
- | |
189 | .cd: |
- | |
190 | push ecx |
70 | push ecx |
191 | mov eax,[cache_ide1_system_data_size] |
- | |
192 | call calculate_for_cd |
- | |
193 | add eax,[cache_ide1_pointer] |
- | |
194 | mov [cache_ide1_system_data],eax |
- | |
195 | mov [cache_ide1_system_sad_size],ecx |
- | |
196 | - | ||
197 | push edi |
- | |
198 | mov edi,[cache_ide1_pointer] |
- | |
199 | call clear_ide_cache |
- | |
200 | pop edi |
71 | mov cl,1 |
201 | - | ||
202 | mov eax,[cache_ide1_appl_data_size] |
- | |
203 | call calculate_for_cd |
- | |
204 | add eax,[cache_ide1_data_pointer] |
- | |
205 | mov [cache_ide1_appl_data],eax |
- | |
206 | mov [cache_ide1_appl_sad_size],ecx |
- | |
207 | - | ||
208 | push edi |
- | |
209 | mov edi,[cache_ide1_data_pointer] |
- | |
210 | call clear_ide_cache |
72 | call get_cache_ide |
211 | pop edi |
- | |
212 | - | ||
213 | pop ecx |
- | |
214 | ret |
- | |
215 | - | ||
216 | get_cache_ide2: |
- | |
217 | push ecx |
- | |
218 | stdcall kernel_alloc,[cache_ide2_size] |
- | |
219 | mov [cache_ide2_pointer],eax |
- | |
220 | pop ecx |
73 | pop ecx |
221 | mov edx,eax |
- | |
222 | mov eax,[cache_ide2_size] |
- | |
223 | shr eax,3 |
- | |
224 | mov [cache_ide2_system_data_size],eax |
- | |
225 | mov ebx,eax |
- | |
226 | imul eax,7 |
- | |
227 | mov [cache_ide2_appl_data_size],eax |
- | |
228 | add ebx,edx |
- | |
229 | mov [cache_ide2_data_pointer],ebx |
- | |
230 | - | ||
231 | cmp cl,1000b |
- | |
232 | je .cd |
- | |
233 | push ecx |
- | |
234 | mov eax,[cache_ide2_system_data_size] |
- | |
235 | call calculate_for_hd |
- | |
236 | add eax,[cache_ide2_pointer] |
- | |
237 | mov [cache_ide2_system_data],eax |
- | |
238 | mov [cache_ide2_system_sad_size],ecx |
- | |
239 | - | ||
240 | push edi |
- | |
241 | mov edi,[cache_ide2_pointer] |
- | |
242 | call clear_ide_cache |
- | |
243 | pop edi |
74 | .contbd: |
244 | - | ||
245 | mov eax,[cache_ide2_appl_data_size] |
- | |
246 | call calculate_for_hd |
- | |
247 | add eax,[cache_ide2_data_pointer] |
75 | add esi,cache_ide1-cache_ide0 |
248 | mov [cache_ide2_appl_data],eax |
- | |
249 | mov [cache_ide2_appl_sad_size],ecx |
- | |
250 | - | ||
251 | push edi |
76 | inc ecx |
252 | mov edi,[cache_ide2_data_pointer] |
- | |
253 | call clear_ide_cache |
77 | cmp ecx,[NumBiosDisks] |
254 | pop edi |
78 | jb .loopbd |
255 | - | ||
256 | pop ecx |
- | |
257 | ret |
- | |
258 | .cd: |
79 | .endbd: |
259 | push ecx |
- | |
260 | mov eax,[cache_ide2_system_data_size] |
- | |
261 | call calculate_for_cd |
- | |
262 | add eax,[cache_ide2_pointer] |
- | |
263 | mov [cache_ide2_system_data],eax |
- | |
264 | mov [cache_ide2_system_sad_size],ecx |
- | |
265 | - | ||
266 | push edi |
- | |
267 | mov edi,[cache_ide2_pointer] |
- | |
268 | call clear_ide_cache |
- | |
269 | pop edi |
- | |
270 | - | ||
271 | mov eax,[cache_ide2_appl_data_size] |
- | |
272 | call calculate_for_cd |
- | |
273 | add eax,[cache_ide2_data_pointer] |
- | |
274 | mov [cache_ide2_appl_data],eax |
- | |
275 | mov [cache_ide2_appl_sad_size],ecx |
- | |
276 | - | ||
277 | push edi |
- | |
278 | mov edi,[cache_ide2_data_pointer] |
- | |
279 | call clear_ide_cache |
80 | jmp end_get_cache |
280 | pop edi |
- | |
281 | - | ||
282 | pop ecx |
- | |
283 | ret |
- | |
Line 284... | Line 81... | ||
284 | 81 | ||
- | 82 | get_cache_ide: |
|
- | 83 | and [esi+cache_ide0_search_start-cache_ide0],0 |
|
285 | get_cache_ide3: |
84 | and [esi+cache_ide0_appl_search_start-cache_ide0],0 |
286 | push ecx |
85 | push ecx |
287 | stdcall kernel_alloc,[cache_ide3_size] |
86 | stdcall kernel_alloc,[esi+cache_ide0_size-cache_ide0] |
288 | mov [cache_ide3_pointer],eax |
87 | mov [esi+cache_ide0_pointer-cache_ide0],eax |
289 | pop ecx |
88 | pop ecx |
290 | mov edx,eax |
89 | mov edx,eax |
291 | mov eax,[cache_ide3_size] |
90 | mov eax,[esi+cache_ide0_size-cache_ide0] |
292 | shr eax,3 |
91 | shr eax,3 |
293 | mov [cache_ide3_system_data_size],eax |
92 | mov [esi+cache_ide0_system_data_size-cache_ide0],eax |
294 | mov ebx,eax |
93 | mov ebx,eax |
295 | imul eax,7 |
94 | imul eax,7 |
296 | mov [cache_ide3_appl_data_size],eax |
95 | mov [esi+cache_ide0_appl_data_size-cache_ide0],eax |
297 | add ebx,edx |
96 | add ebx,edx |
Line 298... | Line 97... | ||
298 | mov [cache_ide3_data_pointer],ebx |
97 | mov [esi+cache_ide0_data_pointer-cache_ide0],ebx |
299 | 98 | ||
300 | cmp cl,10b |
99 | cmp cl,10b |
301 | je .cd |
100 | je .cd |
302 | push ecx |
101 | push ecx |
303 | mov eax,[cache_ide3_system_data_size] |
102 | mov eax,[esi+cache_ide0_system_data_size-cache_ide0] |
304 | call calculate_for_hd |
103 | call calculate_for_hd |
305 | add eax,[cache_ide3_pointer] |
104 | add eax,[esi+cache_ide0_pointer-cache_ide0] |
Line 306... | Line 105... | ||
306 | mov [cache_ide3_system_data],eax |
105 | mov [esi+cache_ide0_system_data-cache_ide0],eax |
307 | mov [cache_ide3_system_sad_size],ecx |
106 | mov [esi+cache_ide0_system_sad_size-cache_ide0],ecx |
308 | 107 | ||
309 | push edi |
108 | push edi |
Line 310... | Line 109... | ||
310 | mov edi,[cache_ide3_pointer] |
109 | mov edi,[esi+cache_ide0_pointer-cache_ide0] |
311 | call clear_ide_cache |
110 | call clear_ide_cache |
312 | pop edi |
111 | pop edi |
313 | 112 | ||
314 | mov eax,[cache_ide3_appl_data_size] |
113 | mov eax,[esi+cache_ide0_appl_data_size-cache_ide0] |
Line 315... | Line 114... | ||
315 | call calculate_for_hd |
114 | call calculate_for_hd |
316 | add eax,[cache_ide3_data_pointer] |
115 | add eax,[esi+cache_ide0_data_pointer-cache_ide0] |
317 | mov [cache_ide3_appl_data],eax |
116 | mov [esi+cache_ide0_appl_data-cache_ide0],eax |
318 | mov [cache_ide3_appl_sad_size],ecx |
117 | mov [esi+cache_ide0_appl_sad_size-cache_ide0],ecx |
Line 319... | Line 118... | ||
319 | 118 | ||
320 | push edi |
119 | push edi |
321 | mov edi,[cache_ide3_data_pointer] |
120 | mov edi,[esi+cache_ide0_data_pointer-cache_ide0] |
322 | call clear_ide_cache |
121 | call clear_ide_cache |
323 | pop edi |
122 | pop edi |
324 | 123 | ||
325 | pop ecx |
124 | pop ecx |
326 | ret |
125 | ret |
327 | .cd: |
126 | .cd: |
Line 328... | Line 127... | ||
328 | push ecx |
127 | push ecx |
329 | mov eax,[cache_ide3_system_data_size] |
128 | mov eax,[esi+cache_ide0_system_data_size-cache_ide0] |
330 | call calculate_for_cd |
129 | call calculate_for_cd |
331 | add eax,[cache_ide3_pointer] |
130 | add eax,[esi+cache_ide0_pointer-cache_ide0] |
Line 332... | Line 131... | ||
332 | mov [cache_ide3_system_data],eax |
131 | mov [esi+cache_ide0_system_data-cache_ide0],eax |
333 | mov [cache_ide3_system_sad_size],ecx |
132 | mov [esi+cache_ide0_system_sad_size-cache_ide0],ecx |
334 | 133 | ||
335 | push edi |
134 | push edi |
336 | mov edi,[cache_ide3_pointer] |
135 | mov edi,[esi+cache_ide0_pointer-cache_ide0] |
Line 337... | Line 136... | ||
337 | call clear_ide_cache |
136 | call clear_ide_cache |
338 | pop edi |
137 | pop edi |
339 | 138 | ||
340 | mov eax,[cache_ide3_appl_data_size] |
139 | mov eax,[esi+cache_ide0_appl_data_size-cache_ide0] |
Line 341... | Line 140... | ||
341 | call calculate_for_cd |
140 | call calculate_for_cd |
342 | add eax,[cache_ide3_data_pointer] |
141 | add eax,[esi+cache_ide0_data_pointer-cache_ide0] |