Rev 3555 | Rev 3908 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
750 | victor | 1 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
2 | ;; ;; |
||
2465 | Serge | 3 | ;; Copyright (C) KolibriOS team 2004-2011. All rights reserved. ;; |
750 | victor | 4 | ;; Distributed under terms of the GNU General Public License ;; |
5 | ;; ;; |
||
6 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
||
7 | |||
580 | mario79 | 8 | ;************************************************************************** |
9 | ; |
||
10 | ; [cache_ide[X]_pointer] |
||
11 | ; or [cache_ide[X]_data_pointer] first entry in cache list |
||
12 | ; |
||
13 | ; +0 - lba sector |
||
14 | ; +4 - state of cache sector |
||
15 | ; 0 = empty |
||
16 | ; 1 = used for read ( same as in hd ) |
||
17 | ; 2 = used for write ( differs from hd ) |
||
18 | ; |
||
19 | ; [cache_ide[X]_system_data] |
||
20 | ; or [cache_ide[x]_appl_data] - cache entries |
||
21 | ; |
||
22 | ;************************************************************************** |
||
593 | mikedld | 23 | |
750 | victor | 24 | $Revision: 3725 $ |
593 | mikedld | 25 | |
26 | |||
580 | mario79 | 27 | align 4 |
28 | write_cache: |
||
29 | ;----------------------------------------------------------- |
||
30 | ; write all changed sectors to disk |
||
31 | ;----------------------------------------------------------- |
||
3555 | Serge | 32 | push eax ecx edx esi edi |
580 | mario79 | 33 | |
34 | ; write difference ( 2 ) from cache to hd |
||
3555 | Serge | 35 | call calculate_cache |
2434 | Serge | 36 | add esi, 8 |
37 | mov edi, 1 |
||
585 | mario79 | 38 | write_cache_more: |
2434 | Serge | 39 | cmp dword [esi+4], 2; if cache slot is not different |
3555 | Serge | 40 | jne .write_chain |
2434 | Serge | 41 | mov dword [esi+4], 1; same as in hd |
42 | mov eax, [esi] ; eax = sector to write |
||
43 | cmp eax, [PARTITION_START] |
||
3555 | Serge | 44 | jb danger |
2434 | Serge | 45 | cmp eax, [PARTITION_END] |
3555 | Serge | 46 | ja danger |
709 | diamond | 47 | cmp [hdpos], 0x80 |
48 | jae @f |
||
580 | mario79 | 49 | ; DMA write is permitted only if [allow_dma_access]=1 |
3555 | Serge | 50 | cmp [allow_dma_access], 2 |
51 | jae .nodma |
||
52 | cmp [dma_hdd], 1 |
||
53 | jnz .nodma |
||
709 | diamond | 54 | @@: |
3555 | Serge | 55 | ; Объединяем запись цепочки последовательных секторов в одно обращение к диску |
56 | cmp ecx, 1 |
||
57 | jz .nonext |
||
58 | cmp dword [esi+8+4], 2 |
||
59 | jnz .nonext |
||
60 | push eax |
||
61 | inc eax |
||
62 | cmp eax, [esi+8] |
||
63 | pop eax |
||
64 | jnz .nonext |
||
65 | cmp [cache_chain_started], 1 |
||
66 | jz @f |
||
67 | mov [cache_chain_started], 1 |
||
68 | mov [cache_chain_size], 0 |
||
69 | mov [cache_chain_pos], edi |
||
70 | mov [cache_chain_ptr], esi |
||
580 | mario79 | 71 | @@: |
3555 | Serge | 72 | inc [cache_chain_size] |
73 | cmp [cache_chain_size], 16 |
||
74 | jnz .continue |
||
75 | jmp .write_chain |
||
580 | mario79 | 76 | .nonext: |
3555 | Serge | 77 | call flush_cache_chain |
78 | mov [cache_chain_size], 1 |
||
79 | mov [cache_chain_ptr], esi |
||
80 | call write_cache_sector |
||
81 | jmp .continue |
||
580 | mario79 | 82 | .nodma: |
3555 | Serge | 83 | call cache_write_pio |
580 | mario79 | 84 | .write_chain: |
3555 | Serge | 85 | call flush_cache_chain |
580 | mario79 | 86 | .continue: |
585 | mario79 | 87 | danger: |
2434 | Serge | 88 | add esi, 8 |
3555 | Serge | 89 | inc edi |
90 | dec ecx |
||
91 | jnz write_cache_more |
||
92 | call flush_cache_chain |
||
580 | mario79 | 93 | return_02: |
3555 | Serge | 94 | pop edi esi edx ecx eax |
95 | ret |
||
580 | mario79 | 96 | |
97 | flush_cache_chain: |
||
3555 | Serge | 98 | cmp [cache_chain_started], 0 |
99 | jz @f |
||
100 | call write_cache_chain |
||
101 | mov [cache_chain_started], 0 |
||
580 | mario79 | 102 | @@: |
3555 | Serge | 103 | ret |
585 | mario79 | 104 | ;-------------------------------------------------------------------- |
580 | mario79 | 105 | align 4 |
106 | find_empty_slot: |
||
107 | ;----------------------------------------------------------- |
||
108 | ; find empty or read slot, flush cache if next 10% is used by write |
||
109 | ; output : edi = cache slot |
||
110 | ;----------------------------------------------------------- |
||
111 | ; push ecx esi |
||
112 | |||
585 | mario79 | 113 | search_again: |
3555 | Serge | 114 | call calculate_cache_3 |
2434 | Serge | 115 | shr ecx, 3 |
585 | mario79 | 116 | search_for_empty: |
3555 | Serge | 117 | inc edi |
118 | call calculate_cache_4 |
||
119 | jbe inside_cache |
||
2434 | Serge | 120 | mov edi, 1 |
585 | mario79 | 121 | inside_cache: |
3555 | Serge | 122 | push esi |
123 | call calculate_cache_1 |
||
2434 | Serge | 124 | cmp dword [edi*8+esi+4], 2 |
3555 | Serge | 125 | pop esi |
126 | jb found_slot ; it's empty or read |
||
127 | dec ecx |
||
128 | jnz search_for_empty |
||
129 | call write_cache ; no empty slots found, write all |
||
2434 | Serge | 130 | cmp [hd_error], 0 |
3555 | Serge | 131 | jne found_slot_access_denied |
132 | jmp search_again ; and start again |
||
585 | mario79 | 133 | found_slot: |
3555 | Serge | 134 | call calculate_cache_5 |
585 | mario79 | 135 | found_slot_access_denied: |
3555 | Serge | 136 | ret |
585 | mario79 | 137 | ;-------------------------------------------------------------------- |
580 | mario79 | 138 | align 4 |
139 | calculate_cache: |
||
140 | ; 1 - IDE0 ... 4 - IDE3 |
||
141 | .ide0: |
||
2434 | Serge | 142 | cmp [hdpos], 1 |
3555 | Serge | 143 | jne .ide1 |
2434 | Serge | 144 | cmp [hdd_appl_data], 0 |
3555 | Serge | 145 | jne .ide0_appl_data |
2434 | Serge | 146 | mov ecx, [cache_ide0_system_sad_size] |
147 | mov esi, [cache_ide0_pointer] |
||
3555 | Serge | 148 | ret |
580 | mario79 | 149 | .ide0_appl_data: |
2434 | Serge | 150 | mov ecx, [cache_ide0_appl_sad_size] |
151 | mov esi, [cache_ide0_data_pointer] |
||
3555 | Serge | 152 | ret |
580 | mario79 | 153 | .ide1: |
2434 | Serge | 154 | cmp [hdpos], 2 |
3555 | Serge | 155 | jne .ide2 |
2434 | Serge | 156 | cmp [hdd_appl_data], 0 |
3555 | Serge | 157 | jne .ide1_appl_data |
2434 | Serge | 158 | mov ecx, [cache_ide1_system_sad_size] |
159 | mov esi, [cache_ide1_pointer] |
||
3555 | Serge | 160 | ret |
580 | mario79 | 161 | .ide1_appl_data: |
2434 | Serge | 162 | mov ecx, [cache_ide1_appl_sad_size] |
163 | mov esi, [cache_ide1_data_pointer] |
||
3555 | Serge | 164 | ret |
580 | mario79 | 165 | .ide2: |
2434 | Serge | 166 | cmp [hdpos], 3 |
3555 | Serge | 167 | jne .ide3 |
2434 | Serge | 168 | cmp [hdd_appl_data], 0 |
3555 | Serge | 169 | jne .ide2_appl_data |
2434 | Serge | 170 | mov ecx, [cache_ide2_system_sad_size] |
171 | mov esi, [cache_ide2_pointer] |
||
3555 | Serge | 172 | ret |
580 | mario79 | 173 | .ide2_appl_data: |
2434 | Serge | 174 | mov ecx, [cache_ide2_appl_sad_size] |
175 | mov esi, [cache_ide2_data_pointer] |
||
3555 | Serge | 176 | ret |
580 | mario79 | 177 | .ide3: |
2434 | Serge | 178 | cmp [hdpos], 4 |
3555 | Serge | 179 | jne .noide |
2434 | Serge | 180 | cmp [hdd_appl_data], 0 |
3555 | Serge | 181 | jne .ide3_appl_data |
2434 | Serge | 182 | mov ecx, [cache_ide3_system_sad_size] |
183 | mov esi, [cache_ide3_pointer] |
||
3555 | Serge | 184 | ret |
580 | mario79 | 185 | .ide3_appl_data: |
2434 | Serge | 186 | mov ecx, [cache_ide3_appl_sad_size] |
187 | mov esi, [cache_ide3_data_pointer] |
||
3555 | Serge | 188 | ret |
709 | diamond | 189 | .noide: |
3555 | Serge | 190 | push eax |
2434 | Serge | 191 | mov eax, [hdpos] |
192 | sub eax, 80h |
||
3555 | Serge | 193 | cmp byte [BiosDisksData+eax*4+2], -1 |
194 | jz @f |
||
2434 | Serge | 195 | movzx eax, byte [BiosDisksData+eax*4+2] |
196 | imul eax, cache_ide1-cache_ide0 |
||
197 | add eax, cache_ide0 |
||
3555 | Serge | 198 | jmp .get |
709 | diamond | 199 | @@: |
2434 | Serge | 200 | imul eax, cache_ide1-cache_ide0 |
201 | add eax, BiosDiskCaches |
||
709 | diamond | 202 | .get: |
2434 | Serge | 203 | cmp [hdd_appl_data], 0 |
3555 | Serge | 204 | jne .bd_appl_data |
2434 | Serge | 205 | mov ecx, [cache_ide0_system_sad_size-cache_ide0+eax] |
206 | mov esi, [cache_ide0_pointer-cache_ide0+eax] |
||
3555 | Serge | 207 | pop eax |
208 | ret |
||
709 | diamond | 209 | .bd_appl_data: |
2434 | Serge | 210 | mov ecx, [cache_ide0_appl_sad_size-cache_ide0+eax] |
211 | mov esi, [cache_ide0_data_pointer-cache_ide0+eax] |
||
3555 | Serge | 212 | pop eax |
213 | ret |
||
580 | mario79 | 214 | ;-------------------------------------------------------------------- |
215 | align 4 |
||
216 | calculate_cache_1: |
||
217 | ; 1 - IDE0 ... 4 - IDE3 |
||
218 | .ide0: |
||
2434 | Serge | 219 | cmp [hdpos], 1 |
3555 | Serge | 220 | jne .ide1 |
2434 | Serge | 221 | cmp [hdd_appl_data], 0 |
3555 | Serge | 222 | jne .ide0_appl_data |
2434 | Serge | 223 | mov esi, [cache_ide0_pointer] |
3555 | Serge | 224 | ret |
580 | mario79 | 225 | .ide0_appl_data: |
2434 | Serge | 226 | mov esi, [cache_ide0_data_pointer] |
3555 | Serge | 227 | ret |
580 | mario79 | 228 | .ide1: |
2434 | Serge | 229 | cmp [hdpos], 2 |
3555 | Serge | 230 | jne .ide2 |
2434 | Serge | 231 | cmp [hdd_appl_data], 0 |
3555 | Serge | 232 | jne .ide1_appl_data |
2434 | Serge | 233 | mov esi, [cache_ide1_pointer] |
3555 | Serge | 234 | ret |
580 | mario79 | 235 | .ide1_appl_data: |
2434 | Serge | 236 | mov esi, [cache_ide1_data_pointer] |
3555 | Serge | 237 | ret |
580 | mario79 | 238 | .ide2: |
2434 | Serge | 239 | cmp [hdpos], 3 |
3555 | Serge | 240 | jne .ide3 |
2434 | Serge | 241 | cmp [hdd_appl_data], 0 |
3555 | Serge | 242 | jne .ide2_appl_data |
2434 | Serge | 243 | mov esi, [cache_ide2_pointer] |
3555 | Serge | 244 | ret |
580 | mario79 | 245 | .ide2_appl_data: |
2434 | Serge | 246 | mov esi, [cache_ide2_data_pointer] |
3555 | Serge | 247 | ret |
580 | mario79 | 248 | .ide3: |
2434 | Serge | 249 | cmp [hdpos], 4 |
3555 | Serge | 250 | jne .noide |
2434 | Serge | 251 | cmp [hdd_appl_data], 0 |
3555 | Serge | 252 | jne .ide3_appl_data |
2434 | Serge | 253 | mov esi, [cache_ide3_pointer] |
3555 | Serge | 254 | ret |
580 | mario79 | 255 | .ide3_appl_data: |
2434 | Serge | 256 | mov esi, [cache_ide3_data_pointer] |
3555 | Serge | 257 | ret |
709 | diamond | 258 | .noide: |
3555 | Serge | 259 | push eax |
2434 | Serge | 260 | mov eax, [hdpos] |
261 | sub eax, 80h |
||
3555 | Serge | 262 | cmp byte [BiosDisksData+eax*4+2], -1 |
263 | jz @f |
||
2434 | Serge | 264 | movzx eax, byte [BiosDisksData+eax*4+2] |
265 | imul eax, cache_ide1-cache_ide0 |
||
266 | add eax, cache_ide0 |
||
3555 | Serge | 267 | jmp .get |
709 | diamond | 268 | @@: |
2434 | Serge | 269 | imul eax, cache_ide1-cache_ide0 |
270 | add eax, BiosDiskCaches |
||
709 | diamond | 271 | .get: |
2434 | Serge | 272 | cmp [hdd_appl_data], 0 |
3555 | Serge | 273 | jne .bd_appl_data |
2434 | Serge | 274 | mov esi, [cache_ide0_pointer-cache_ide0+eax] |
3555 | Serge | 275 | pop eax |
276 | ret |
||
709 | diamond | 277 | .bd_appl_data: |
2434 | Serge | 278 | mov esi, [cache_ide0_data_pointer-cache_ide0+eax] |
3555 | Serge | 279 | pop eax |
280 | ret |
||
709 | diamond | 281 | |
580 | mario79 | 282 | ;-------------------------------------------------------------------- |
283 | align 4 |
||
284 | calculate_cache_2: |
||
285 | ; 1 - IDE0 ... 4 - IDE3 |
||
286 | .ide0: |
||
2434 | Serge | 287 | cmp [hdpos], 1 |
3555 | Serge | 288 | jne .ide1 |
2434 | Serge | 289 | cmp [hdd_appl_data], 0 |
3555 | Serge | 290 | jne .ide0_appl_data |
2434 | Serge | 291 | mov eax, [cache_ide0_system_data] |
3555 | Serge | 292 | ret |
580 | mario79 | 293 | .ide0_appl_data: |
2434 | Serge | 294 | mov eax, [cache_ide0_appl_data] |
3555 | Serge | 295 | ret |
580 | mario79 | 296 | .ide1: |
2434 | Serge | 297 | cmp [hdpos], 2 |
3555 | Serge | 298 | jne .ide2 |
2434 | Serge | 299 | cmp [hdd_appl_data], 0 |
3555 | Serge | 300 | jne .ide1_appl_data |
2434 | Serge | 301 | mov eax, [cache_ide1_system_data] |
3555 | Serge | 302 | ret |
580 | mario79 | 303 | .ide1_appl_data: |
2434 | Serge | 304 | mov eax, [cache_ide1_appl_data] |
3555 | Serge | 305 | ret |
580 | mario79 | 306 | .ide2: |
2434 | Serge | 307 | cmp [hdpos], 3 |
3555 | Serge | 308 | jne .ide3 |
2434 | Serge | 309 | cmp [hdd_appl_data], 0 |
3555 | Serge | 310 | jne .ide2_appl_data |
2434 | Serge | 311 | mov eax, [cache_ide2_system_data] |
3555 | Serge | 312 | ret |
580 | mario79 | 313 | .ide2_appl_data: |
2434 | Serge | 314 | mov eax, [cache_ide2_appl_data] |
3555 | Serge | 315 | ret |
580 | mario79 | 316 | .ide3: |
2434 | Serge | 317 | cmp [hdpos], 4 |
3555 | Serge | 318 | jne .noide |
2434 | Serge | 319 | cmp [hdd_appl_data], 0 |
3555 | Serge | 320 | jne .ide3_appl_data |
2434 | Serge | 321 | mov eax, [cache_ide3_system_data] |
3555 | Serge | 322 | ret |
580 | mario79 | 323 | .ide3_appl_data: |
2434 | Serge | 324 | mov eax, [cache_ide3_appl_data] |
3555 | Serge | 325 | ret |
709 | diamond | 326 | .noide: |
2434 | Serge | 327 | mov eax, [hdpos] |
328 | sub eax, 80h |
||
3555 | Serge | 329 | cmp byte [BiosDisksData+eax*4+2], -1 |
330 | jz @f |
||
2434 | Serge | 331 | movzx eax, byte [BiosDisksData+eax*4+2] |
332 | imul eax, cache_ide1-cache_ide0 |
||
333 | add eax, cache_ide0 |
||
3555 | Serge | 334 | jmp .get |
709 | diamond | 335 | @@: |
2434 | Serge | 336 | imul eax, cache_ide1-cache_ide0 |
337 | add eax, BiosDiskCaches |
||
709 | diamond | 338 | .get: |
2434 | Serge | 339 | cmp [hdd_appl_data], 0 |
3555 | Serge | 340 | jne .bd_appl_data |
2434 | Serge | 341 | mov eax, [cache_ide0_system_data-cache_ide0+eax] |
3555 | Serge | 342 | ret |
709 | diamond | 343 | .bd_appl_data: |
2434 | Serge | 344 | mov eax, [cache_ide0_appl_data-cache_ide0+eax] |
3555 | Serge | 345 | ret |
580 | mario79 | 346 | ;-------------------------------------------------------------------- |
347 | align 4 |
||
348 | calculate_cache_3: |
||
349 | ; mov ecx,cache_max*10/100 |
||
350 | ; mov edi,[cache_search_start] |
||
351 | |||
352 | ; 1 - IDE0 ... 4 - IDE3 |
||
353 | .ide0: |
||
2434 | Serge | 354 | cmp [hdpos], 1 |
3555 | Serge | 355 | jne .ide1 |
2434 | Serge | 356 | cmp [hdd_appl_data], 0 |
3555 | Serge | 357 | jne .ide0_appl_data |
2434 | Serge | 358 | mov ecx, [cache_ide0_system_sad_size] |
359 | mov edi, [cache_ide0_search_start] |
||
3555 | Serge | 360 | ret |
580 | mario79 | 361 | .ide0_appl_data: |
2434 | Serge | 362 | mov ecx, [cache_ide0_appl_sad_size] |
363 | mov edi, [cache_ide0_appl_search_start] |
||
3555 | Serge | 364 | ret |
580 | mario79 | 365 | .ide1: |
2434 | Serge | 366 | cmp [hdpos], 2 |
3555 | Serge | 367 | jne .ide2 |
2434 | Serge | 368 | cmp [hdd_appl_data], 0 |
3555 | Serge | 369 | jne .ide1_appl_data |
2434 | Serge | 370 | mov ecx, [cache_ide1_system_sad_size] |
371 | mov edi, [cache_ide1_search_start] |
||
3555 | Serge | 372 | ret |
580 | mario79 | 373 | .ide1_appl_data: |
2434 | Serge | 374 | mov ecx, [cache_ide1_appl_sad_size] |
375 | mov edi, [cache_ide1_appl_search_start] |
||
3555 | Serge | 376 | ret |
580 | mario79 | 377 | .ide2: |
2434 | Serge | 378 | cmp [hdpos], 3 |
3555 | Serge | 379 | jne .ide3 |
2434 | Serge | 380 | cmp [hdd_appl_data], 0 |
3555 | Serge | 381 | jne .ide2_appl_data |
2434 | Serge | 382 | mov ecx, [cache_ide2_system_sad_size] |
383 | mov edi, [cache_ide2_search_start] |
||
3555 | Serge | 384 | ret |
580 | mario79 | 385 | .ide2_appl_data: |
2434 | Serge | 386 | mov ecx, [cache_ide2_appl_sad_size] |
387 | mov edi, [cache_ide2_appl_search_start] |
||
3555 | Serge | 388 | ret |
580 | mario79 | 389 | .ide3: |
2434 | Serge | 390 | cmp [hdpos], 4 |
3555 | Serge | 391 | jne .noide |
2434 | Serge | 392 | cmp [hdd_appl_data], 0 |
3555 | Serge | 393 | jne .ide3_appl_data |
2434 | Serge | 394 | mov ecx, [cache_ide3_system_sad_size] |
395 | mov edi, [cache_ide3_search_start] |
||
3555 | Serge | 396 | ret |
580 | mario79 | 397 | .ide3_appl_data: |
2434 | Serge | 398 | mov ecx, [cache_ide3_appl_sad_size] |
399 | mov edi, [cache_ide3_appl_search_start] |
||
3555 | Serge | 400 | ret |
709 | diamond | 401 | .noide: |
3555 | Serge | 402 | push eax |
2434 | Serge | 403 | mov eax, [hdpos] |
404 | sub eax, 80h |
||
3555 | Serge | 405 | cmp byte [BiosDisksData+eax*4+2], -1 |
406 | jz @f |
||
2434 | Serge | 407 | movzx eax, byte [BiosDisksData+eax*4+2] |
408 | imul eax, cache_ide1-cache_ide0 |
||
409 | add eax, cache_ide0 |
||
3555 | Serge | 410 | jmp .get |
709 | diamond | 411 | @@: |
2434 | Serge | 412 | imul eax, cache_ide1-cache_ide0 |
413 | add eax, BiosDiskCaches |
||
709 | diamond | 414 | .get: |
2434 | Serge | 415 | cmp [hdd_appl_data], 0 |
3555 | Serge | 416 | jne .bd_appl_data |
2434 | Serge | 417 | mov ecx, [cache_ide0_system_sad_size-cache_ide0+eax] |
418 | mov edi, [cache_ide0_search_start-cache_ide0+eax] |
||
3555 | Serge | 419 | pop eax |
420 | ret |
||
709 | diamond | 421 | .bd_appl_data: |
2434 | Serge | 422 | mov ecx, [cache_ide0_appl_sad_size-cache_ide0+eax] |
423 | mov edi, [cache_ide0_appl_search_start-cache_ide0+eax] |
||
3555 | Serge | 424 | pop eax |
425 | ret |
||
580 | mario79 | 426 | ;-------------------------------------------------------------------- |
427 | align 4 |
||
428 | calculate_cache_4: |
||
429 | ; cmp edi,cache_max |
||
430 | ; 1 - IDE0 ... 4 - IDE3 |
||
431 | .ide0: |
||
2434 | Serge | 432 | cmp [hdpos], 1 |
3555 | Serge | 433 | jne .ide1 |
2434 | Serge | 434 | cmp [hdd_appl_data], 0 |
3555 | Serge | 435 | jne .ide0_appl_data |
2434 | Serge | 436 | cmp edi, [cache_ide0_system_sad_size] |
3555 | Serge | 437 | ret |
580 | mario79 | 438 | .ide0_appl_data: |
2434 | Serge | 439 | cmp edi, [cache_ide0_appl_sad_size] |
3555 | Serge | 440 | ret |
580 | mario79 | 441 | .ide1: |
2434 | Serge | 442 | cmp [hdpos], 2 |
3555 | Serge | 443 | jne .ide2 |
2434 | Serge | 444 | cmp [hdd_appl_data], 0 |
3555 | Serge | 445 | jne .ide1_appl_data |
2434 | Serge | 446 | cmp edi, [cache_ide1_system_sad_size] |
3555 | Serge | 447 | ret |
580 | mario79 | 448 | .ide1_appl_data: |
2434 | Serge | 449 | cmp edi, [cache_ide1_appl_sad_size] |
3555 | Serge | 450 | ret |
580 | mario79 | 451 | .ide2: |
2434 | Serge | 452 | cmp [hdpos], 3 |
3555 | Serge | 453 | jne .ide3 |
2434 | Serge | 454 | cmp [hdd_appl_data], 0 |
3555 | Serge | 455 | jne .ide2_appl_data |
2434 | Serge | 456 | cmp edi, [cache_ide2_system_sad_size] |
3555 | Serge | 457 | ret |
580 | mario79 | 458 | .ide2_appl_data: |
2434 | Serge | 459 | cmp edi, [cache_ide2_appl_sad_size] |
3555 | Serge | 460 | ret |
580 | mario79 | 461 | .ide3: |
2434 | Serge | 462 | cmp [hdpos], 4 |
3555 | Serge | 463 | jne .noide |
2434 | Serge | 464 | cmp [hdd_appl_data], 0 |
3555 | Serge | 465 | jne .ide3_appl_data |
2434 | Serge | 466 | cmp edi, [cache_ide3_system_sad_size] |
3555 | Serge | 467 | ret |
580 | mario79 | 468 | .ide3_appl_data: |
2434 | Serge | 469 | cmp edi, [cache_ide3_appl_sad_size] |
3555 | Serge | 470 | ret |
709 | diamond | 471 | .noide: |
3555 | Serge | 472 | push eax |
2434 | Serge | 473 | mov eax, [hdpos] |
474 | sub eax, 80h |
||
3555 | Serge | 475 | cmp byte [BiosDisksData+eax*4+2], -1 |
476 | jz @f |
||
2434 | Serge | 477 | movzx eax, byte [BiosDisksData+eax*4+2] |
478 | imul eax, cache_ide1-cache_ide0 |
||
479 | add eax, cache_ide0 |
||
3555 | Serge | 480 | jmp .get |
709 | diamond | 481 | @@: |
2434 | Serge | 482 | imul eax, cache_ide1-cache_ide0 |
483 | add eax, BiosDiskCaches |
||
709 | diamond | 484 | .get: |
2434 | Serge | 485 | cmp [hdd_appl_data], 0 |
3555 | Serge | 486 | jne .bd_appl_data |
2434 | Serge | 487 | cmp edi, [cache_ide0_system_sad_size-cache_ide0+eax] |
3555 | Serge | 488 | pop eax |
489 | ret |
||
709 | diamond | 490 | .bd_appl_data: |
2434 | Serge | 491 | cmp edi, [cache_ide0_appl_sad_size-cache_ide0+eax] |
3555 | Serge | 492 | pop eax |
493 | ret |
||
709 | diamond | 494 | |
580 | mario79 | 495 | ;-------------------------------------------------------------------- |
496 | align 4 |
||
497 | calculate_cache_5: |
||
498 | ; mov [cache_search_start],edi |
||
499 | ; 1 - IDE0 ... 4 - IDE3 |
||
500 | .ide0: |
||
2434 | Serge | 501 | cmp [hdpos], 1 |
3555 | Serge | 502 | jne .ide1 |
2434 | Serge | 503 | cmp [hdd_appl_data], 0 |
3555 | Serge | 504 | jne .ide0_appl_data |
2434 | Serge | 505 | mov [cache_ide0_search_start], edi |
3555 | Serge | 506 | ret |
580 | mario79 | 507 | .ide0_appl_data: |
2434 | Serge | 508 | mov [cache_ide0_appl_search_start], edi |
3555 | Serge | 509 | ret |
580 | mario79 | 510 | .ide1: |
2434 | Serge | 511 | cmp [hdpos], 2 |
3555 | Serge | 512 | jne .ide2 |
2434 | Serge | 513 | cmp [hdd_appl_data], 0 |
3555 | Serge | 514 | jne .ide1_appl_data |
2434 | Serge | 515 | mov [cache_ide1_search_start], edi |
3555 | Serge | 516 | ret |
580 | mario79 | 517 | .ide1_appl_data: |
2434 | Serge | 518 | mov [cache_ide1_appl_search_start], edi |
3555 | Serge | 519 | ret |
580 | mario79 | 520 | .ide2: |
2434 | Serge | 521 | cmp [hdpos], 3 |
3555 | Serge | 522 | jne .ide3 |
2434 | Serge | 523 | cmp [hdd_appl_data], 0 |
3555 | Serge | 524 | jne .ide2_appl_data |
2434 | Serge | 525 | mov [cache_ide2_search_start], edi |
3555 | Serge | 526 | ret |
580 | mario79 | 527 | .ide2_appl_data: |
2434 | Serge | 528 | mov [cache_ide2_appl_search_start], edi |
3555 | Serge | 529 | ret |
580 | mario79 | 530 | .ide3: |
2434 | Serge | 531 | cmp [hdpos], 4 |
3555 | Serge | 532 | jne .noide |
2434 | Serge | 533 | cmp [hdd_appl_data], 0 |
3555 | Serge | 534 | jne .ide3_appl_data |
2434 | Serge | 535 | mov [cache_ide3_search_start], edi |
3555 | Serge | 536 | ret |
580 | mario79 | 537 | .ide3_appl_data: |
2434 | Serge | 538 | mov [cache_ide3_appl_search_start], edi |
3555 | Serge | 539 | ret |
709 | diamond | 540 | .noide: |
3555 | Serge | 541 | push eax |
2434 | Serge | 542 | mov eax, [hdpos] |
543 | sub eax, 80h |
||
3555 | Serge | 544 | cmp byte [BiosDisksData+eax*4+2], -1 |
545 | jz @f |
||
2434 | Serge | 546 | movzx eax, byte [BiosDisksData+eax*4+2] |
547 | imul eax, cache_ide1-cache_ide0 |
||
548 | add eax, cache_ide0 |
||
3555 | Serge | 549 | jmp .get |
709 | diamond | 550 | @@: |
2434 | Serge | 551 | imul eax, cache_ide1-cache_ide0 |
552 | add eax, BiosDiskCaches |
||
709 | diamond | 553 | .get: |
2434 | Serge | 554 | cmp [hdd_appl_data], 0 |
3555 | Serge | 555 | jne .bd_appl_data |
2434 | Serge | 556 | mov [cache_ide0_search_start-cache_ide0+eax], edi |
3555 | Serge | 557 | pop eax |
558 | ret |
||
709 | diamond | 559 | .bd_appl_data: |
2434 | Serge | 560 | mov [cache_ide0_appl_search_start-cache_ide0+eax], edi |
3555 | Serge | 561 | pop eax |
562 | ret |
||
585 | mario79 | 563 | |
580 | mario79 | 564 | ;-------------------------------------------------------------------- |
565 | align 4 |
||
585 | mario79 | 566 | find_empty_slot_CD_cache: |
567 | ;----------------------------------------------------------- |
||
568 | ; find empty or read slot, flush cache if next 10% is used by write |
||
569 | ; output : edi = cache slot |
||
570 | ;----------------------------------------------------------- |
||
571 | .search_again: |
||
3555 | Serge | 572 | call cd_calculate_cache_3 |
585 | mario79 | 573 | .search_for_empty: |
3555 | Serge | 574 | inc edi |
575 | call cd_calculate_cache_4 |
||
576 | jbe .inside_cache |
||
2434 | Serge | 577 | mov edi, 1 |
585 | mario79 | 578 | .inside_cache: |
3555 | Serge | 579 | call cd_calculate_cache_5 |
580 | ret |
||
585 | mario79 | 581 | ;-------------------------------------------------------------------- |
582 | clear_CD_cache: |
||
3555 | Serge | 583 | pusha |
585 | mario79 | 584 | .ide0: |
2434 | Serge | 585 | xor eax, eax |
586 | cmp [cdpos], 1 |
||
3555 | Serge | 587 | jne .ide1 |
2434 | Serge | 588 | mov [cache_ide0_search_start], eax |
589 | mov ecx, [cache_ide0_system_sad_size] |
||
590 | mov edi, [cache_ide0_pointer] |
||
3555 | Serge | 591 | call .clear |
2434 | Serge | 592 | mov [cache_ide0_appl_search_start], eax |
593 | mov ecx, [cache_ide0_appl_sad_size] |
||
594 | mov edi, [cache_ide0_data_pointer] |
||
3555 | Serge | 595 | jmp .continue |
585 | mario79 | 596 | .ide1: |
2434 | Serge | 597 | cmp [cdpos], 2 |
3555 | Serge | 598 | jne .ide2 |
2434 | Serge | 599 | mov [cache_ide1_search_start], eax |
600 | mov ecx, [cache_ide1_system_sad_size] |
||
601 | mov edi, [cache_ide1_pointer] |
||
3555 | Serge | 602 | call .clear |
2434 | Serge | 603 | mov [cache_ide1_appl_search_start], eax |
604 | mov ecx, [cache_ide1_appl_sad_size] |
||
605 | mov edi, [cache_ide1_data_pointer] |
||
3555 | Serge | 606 | jmp .continue |
585 | mario79 | 607 | .ide2: |
2434 | Serge | 608 | cmp [cdpos], 3 |
3555 | Serge | 609 | jne .ide3 |
2434 | Serge | 610 | mov [cache_ide2_search_start], eax |
611 | mov ecx, [cache_ide2_system_sad_size] |
||
612 | mov edi, [cache_ide2_pointer] |
||
3555 | Serge | 613 | call .clear |
2434 | Serge | 614 | mov [cache_ide2_appl_search_start], eax |
615 | mov ecx, [cache_ide2_appl_sad_size] |
||
616 | mov edi, [cache_ide2_data_pointer] |
||
3555 | Serge | 617 | jmp .continue |
585 | mario79 | 618 | .ide3: |
2434 | Serge | 619 | mov [cache_ide3_search_start], eax |
620 | mov ecx, [cache_ide3_system_sad_size] |
||
621 | mov edi, [cache_ide3_pointer] |
||
3555 | Serge | 622 | call .clear |
2434 | Serge | 623 | mov [cache_ide3_appl_search_start], eax |
624 | mov ecx, [cache_ide3_appl_sad_size] |
||
625 | mov edi, [cache_ide3_data_pointer] |
||
585 | mario79 | 626 | .continue: |
3555 | Serge | 627 | call .clear |
628 | popa |
||
629 | ret |
||
585 | mario79 | 630 | .clear: |
2434 | Serge | 631 | shl ecx, 1 |
3555 | Serge | 632 | cld |
633 | rep stosd |
||
634 | ret |
||
585 | mario79 | 635 | ;-------------------------------------------------------------------- |
636 | align 4 |
||
637 | cd_calculate_cache: |
||
638 | ; 1 - IDE0 ... 4 - IDE3 |
||
639 | .ide0: |
||
2434 | Serge | 640 | cmp [cdpos], 1 |
3555 | Serge | 641 | jne .ide1 |
2434 | Serge | 642 | cmp [cd_appl_data], 0 |
3555 | Serge | 643 | jne .ide0_appl_data |
2434 | Serge | 644 | mov ecx, [cache_ide0_system_sad_size] |
645 | mov esi, [cache_ide0_pointer] |
||
3555 | Serge | 646 | ret |
585 | mario79 | 647 | .ide0_appl_data: |
2434 | Serge | 648 | mov ecx, [cache_ide0_appl_sad_size] |
649 | mov esi, [cache_ide0_data_pointer] |
||
3555 | Serge | 650 | ret |
585 | mario79 | 651 | .ide1: |
2434 | Serge | 652 | cmp [cdpos], 2 |
3555 | Serge | 653 | jne .ide2 |
2434 | Serge | 654 | cmp [cd_appl_data], 0 |
3555 | Serge | 655 | jne .ide1_appl_data |
2434 | Serge | 656 | mov ecx, [cache_ide1_system_sad_size] |
657 | mov esi, [cache_ide1_pointer] |
||
3555 | Serge | 658 | ret |
585 | mario79 | 659 | .ide1_appl_data: |
2434 | Serge | 660 | mov ecx, [cache_ide1_appl_sad_size] |
661 | mov esi, [cache_ide1_data_pointer] |
||
3555 | Serge | 662 | ret |
585 | mario79 | 663 | .ide2: |
2434 | Serge | 664 | cmp [cdpos], 3 |
3555 | Serge | 665 | jne .ide3 |
2434 | Serge | 666 | cmp [cd_appl_data], 0 |
3555 | Serge | 667 | jne .ide2_appl_data |
2434 | Serge | 668 | mov ecx, [cache_ide2_system_sad_size] |
669 | mov esi, [cache_ide2_pointer] |
||
3555 | Serge | 670 | ret |
585 | mario79 | 671 | .ide2_appl_data: |
2434 | Serge | 672 | mov ecx, [cache_ide2_appl_sad_size] |
673 | mov esi, [cache_ide2_data_pointer] |
||
3555 | Serge | 674 | ret |
585 | mario79 | 675 | .ide3: |
2434 | Serge | 676 | cmp [cd_appl_data], 0 |
3555 | Serge | 677 | jne .ide3_appl_data |
2434 | Serge | 678 | mov ecx, [cache_ide3_system_sad_size] |
679 | mov esi, [cache_ide3_pointer] |
||
3555 | Serge | 680 | ret |
585 | mario79 | 681 | .ide3_appl_data: |
2434 | Serge | 682 | mov ecx, [cache_ide3_appl_sad_size] |
683 | mov esi, [cache_ide3_data_pointer] |
||
3555 | Serge | 684 | ret |
585 | mario79 | 685 | ;-------------------------------------------------------------------- |
686 | align 4 |
||
687 | cd_calculate_cache_1: |
||
688 | ; 1 - IDE0 ... 4 - IDE3 |
||
689 | .ide0: |
||
2434 | Serge | 690 | cmp [cdpos], 1 |
3555 | Serge | 691 | jne .ide1 |
2434 | Serge | 692 | cmp [cd_appl_data], 0 |
3555 | Serge | 693 | jne .ide0_appl_data |
2434 | Serge | 694 | mov esi, [cache_ide0_pointer] |
3555 | Serge | 695 | ret |
585 | mario79 | 696 | .ide0_appl_data: |
2434 | Serge | 697 | mov esi, [cache_ide0_data_pointer] |
3555 | Serge | 698 | ret |
585 | mario79 | 699 | .ide1: |
2434 | Serge | 700 | cmp [cdpos], 2 |
3555 | Serge | 701 | jne .ide2 |
2434 | Serge | 702 | cmp [cd_appl_data], 0 |
3555 | Serge | 703 | jne .ide1_appl_data |
2434 | Serge | 704 | mov esi, [cache_ide1_pointer] |
3555 | Serge | 705 | ret |
585 | mario79 | 706 | .ide1_appl_data: |
2434 | Serge | 707 | mov esi, [cache_ide1_data_pointer] |
3555 | Serge | 708 | ret |
585 | mario79 | 709 | .ide2: |
2434 | Serge | 710 | cmp [cdpos], 3 |
3555 | Serge | 711 | jne .ide3 |
2434 | Serge | 712 | cmp [cd_appl_data], 0 |
3555 | Serge | 713 | jne .ide2_appl_data |
2434 | Serge | 714 | mov esi, [cache_ide2_pointer] |
3555 | Serge | 715 | ret |
585 | mario79 | 716 | .ide2_appl_data: |
2434 | Serge | 717 | mov esi, [cache_ide2_data_pointer] |
3555 | Serge | 718 | ret |
585 | mario79 | 719 | .ide3: |
2434 | Serge | 720 | cmp [cd_appl_data], 0 |
3555 | Serge | 721 | jne .ide3_appl_data |
2434 | Serge | 722 | mov esi, [cache_ide3_pointer] |
3555 | Serge | 723 | ret |
585 | mario79 | 724 | .ide3_appl_data: |
2434 | Serge | 725 | mov esi, [cache_ide3_data_pointer] |
3555 | Serge | 726 | ret |
585 | mario79 | 727 | ;-------------------------------------------------------------------- |
728 | align 4 |
||
729 | cd_calculate_cache_2: |
||
730 | ; 1 - IDE0 ... 4 - IDE3 |
||
731 | .ide0: |
||
2434 | Serge | 732 | cmp [cdpos], 1 |
3555 | Serge | 733 | jne .ide1 |
2434 | Serge | 734 | cmp [cd_appl_data], 0 |
3555 | Serge | 735 | jne .ide0_appl_data |
2434 | Serge | 736 | mov eax, [cache_ide0_system_data] |
3555 | Serge | 737 | ret |
585 | mario79 | 738 | .ide0_appl_data: |
2434 | Serge | 739 | mov eax, [cache_ide0_appl_data] |
3555 | Serge | 740 | ret |
585 | mario79 | 741 | .ide1: |
2434 | Serge | 742 | cmp [cdpos], 2 |
3555 | Serge | 743 | jne .ide2 |
2434 | Serge | 744 | cmp [cd_appl_data], 0 |
3555 | Serge | 745 | jne .ide1_appl_data |
2434 | Serge | 746 | mov eax, [cache_ide1_system_data] |
3555 | Serge | 747 | ret |
585 | mario79 | 748 | .ide1_appl_data: |
2434 | Serge | 749 | mov eax, [cache_ide1_appl_data] |
3555 | Serge | 750 | ret |
585 | mario79 | 751 | .ide2: |
2434 | Serge | 752 | cmp [cdpos], 3 |
3555 | Serge | 753 | jne .ide3 |
2434 | Serge | 754 | cmp [cd_appl_data], 0 |
3555 | Serge | 755 | jne .ide2_appl_data |
2434 | Serge | 756 | mov eax, [cache_ide2_system_data] |
3555 | Serge | 757 | ret |
585 | mario79 | 758 | .ide2_appl_data: |
2434 | Serge | 759 | mov eax, [cache_ide2_appl_data] |
3555 | Serge | 760 | ret |
585 | mario79 | 761 | .ide3: |
2434 | Serge | 762 | cmp [cd_appl_data], 0 |
3555 | Serge | 763 | jne .ide3_appl_data |
2434 | Serge | 764 | mov eax, [cache_ide3_system_data] |
3555 | Serge | 765 | ret |
585 | mario79 | 766 | .ide3_appl_data: |
2434 | Serge | 767 | mov eax, [cache_ide3_appl_data] |
3555 | Serge | 768 | ret |
585 | mario79 | 769 | ;-------------------------------------------------------------------- |
770 | align 4 |
||
771 | cd_calculate_cache_3: |
||
772 | ; mov ecx,cache_max*10/100 |
||
773 | ; mov edi,[cache_search_start] |
||
774 | |||
775 | ; 1 - IDE0 ... 4 - IDE3 |
||
776 | .ide0: |
||
2434 | Serge | 777 | cmp [cdpos], 1 |
3555 | Serge | 778 | jne .ide1 |
2434 | Serge | 779 | cmp [cd_appl_data], 0 |
3555 | Serge | 780 | jne .ide0_appl_data |
2434 | Serge | 781 | mov edi, [cache_ide0_search_start] |
3555 | Serge | 782 | ret |
585 | mario79 | 783 | .ide0_appl_data: |
2434 | Serge | 784 | mov edi, [cache_ide0_appl_search_start] |
3555 | Serge | 785 | ret |
585 | mario79 | 786 | .ide1: |
2434 | Serge | 787 | cmp [cdpos], 2 |
3555 | Serge | 788 | jne .ide2 |
2434 | Serge | 789 | cmp [cd_appl_data], 0 |
3555 | Serge | 790 | jne .ide1_appl_data |
2434 | Serge | 791 | mov edi, [cache_ide1_search_start] |
3555 | Serge | 792 | ret |
585 | mario79 | 793 | .ide1_appl_data: |
2434 | Serge | 794 | mov edi, [cache_ide1_appl_search_start] |
3555 | Serge | 795 | ret |
585 | mario79 | 796 | .ide2: |
2434 | Serge | 797 | cmp [cdpos], 3 |
3555 | Serge | 798 | jne .ide3 |
2434 | Serge | 799 | cmp [cd_appl_data], 0 |
3555 | Serge | 800 | jne .ide2_appl_data |
2434 | Serge | 801 | mov edi, [cache_ide2_search_start] |
3555 | Serge | 802 | ret |
585 | mario79 | 803 | .ide2_appl_data: |
2434 | Serge | 804 | mov edi, [cache_ide2_appl_search_start] |
3555 | Serge | 805 | ret |
585 | mario79 | 806 | .ide3: |
2434 | Serge | 807 | cmp [cd_appl_data], 0 |
3555 | Serge | 808 | jne .ide3_appl_data |
2434 | Serge | 809 | mov edi, [cache_ide3_search_start] |
3555 | Serge | 810 | ret |
585 | mario79 | 811 | .ide3_appl_data: |
2434 | Serge | 812 | mov edi, [cache_ide3_appl_search_start] |
3555 | Serge | 813 | ret |
585 | mario79 | 814 | ;-------------------------------------------------------------------- |
815 | align 4 |
||
816 | cd_calculate_cache_4: |
||
817 | ; cmp edi,cache_max |
||
818 | ; 1 - IDE0 ... 4 - IDE3 |
||
819 | .ide0: |
||
2434 | Serge | 820 | cmp [cdpos], 1 |
3555 | Serge | 821 | jne .ide1 |
2434 | Serge | 822 | cmp [cd_appl_data], 0 |
3555 | Serge | 823 | jne .ide0_appl_data |
2434 | Serge | 824 | cmp edi, [cache_ide0_system_sad_size] |
3555 | Serge | 825 | ret |
585 | mario79 | 826 | .ide0_appl_data: |
2434 | Serge | 827 | cmp edi, [cache_ide0_appl_sad_size] |
3555 | Serge | 828 | ret |
585 | mario79 | 829 | .ide1: |
2434 | Serge | 830 | cmp [cdpos], 2 |
3555 | Serge | 831 | jne .ide2 |
2434 | Serge | 832 | cmp [cd_appl_data], 0 |
3555 | Serge | 833 | jne .ide1_appl_data |
2434 | Serge | 834 | cmp edi, [cache_ide1_system_sad_size] |
3555 | Serge | 835 | ret |
585 | mario79 | 836 | .ide1_appl_data: |
2434 | Serge | 837 | cmp edi, [cache_ide1_appl_sad_size] |
3555 | Serge | 838 | ret |
585 | mario79 | 839 | .ide2: |
2434 | Serge | 840 | cmp [cdpos], 3 |
3555 | Serge | 841 | jne .ide3 |
2434 | Serge | 842 | cmp [cd_appl_data], 0 |
3555 | Serge | 843 | jne .ide2_appl_data |
2434 | Serge | 844 | cmp edi, [cache_ide2_system_sad_size] |
3555 | Serge | 845 | ret |
585 | mario79 | 846 | .ide2_appl_data: |
2434 | Serge | 847 | cmp edi, [cache_ide2_appl_sad_size] |
3555 | Serge | 848 | ret |
585 | mario79 | 849 | .ide3: |
2434 | Serge | 850 | cmp [cd_appl_data], 0 |
3555 | Serge | 851 | jne .ide3_appl_data |
2434 | Serge | 852 | cmp edi, [cache_ide3_system_sad_size] |
3555 | Serge | 853 | ret |
585 | mario79 | 854 | .ide3_appl_data: |
2434 | Serge | 855 | cmp edi, [cache_ide3_appl_sad_size] |
3555 | Serge | 856 | ret |
585 | mario79 | 857 | ;-------------------------------------------------------------------- |
858 | align 4 |
||
859 | cd_calculate_cache_5: |
||
860 | ; mov [cache_search_start],edi |
||
861 | ; 1 - IDE0 ... 4 - IDE3 |
||
862 | .ide0: |
||
2434 | Serge | 863 | cmp [cdpos], 1 |
3555 | Serge | 864 | jne .ide1 |
2434 | Serge | 865 | cmp [cd_appl_data], 0 |
3555 | Serge | 866 | jne .ide0_appl_data |
2434 | Serge | 867 | mov [cache_ide0_search_start], edi |
3555 | Serge | 868 | ret |
585 | mario79 | 869 | .ide0_appl_data: |
2434 | Serge | 870 | mov [cache_ide0_appl_search_start], edi |
3555 | Serge | 871 | ret |
585 | mario79 | 872 | .ide1: |
2434 | Serge | 873 | cmp [cdpos], 2 |
3555 | Serge | 874 | jne .ide2 |
2434 | Serge | 875 | cmp [cd_appl_data], 0 |
3555 | Serge | 876 | jne .ide1_appl_data |
2434 | Serge | 877 | mov [cache_ide1_search_start], edi |
3555 | Serge | 878 | ret |
585 | mario79 | 879 | .ide1_appl_data: |
2434 | Serge | 880 | mov [cache_ide1_appl_search_start], edi |
3555 | Serge | 881 | ret |
585 | mario79 | 882 | .ide2: |
2434 | Serge | 883 | cmp [cdpos], 3 |
3555 | Serge | 884 | jne .ide3 |
2434 | Serge | 885 | cmp [cd_appl_data], 0 |
3555 | Serge | 886 | jne .ide2_appl_data |
2434 | Serge | 887 | mov [cache_ide2_search_start], edi |
3555 | Serge | 888 | ret |
585 | mario79 | 889 | .ide2_appl_data: |
2434 | Serge | 890 | mov [cache_ide2_appl_search_start], edi |
3555 | Serge | 891 | ret |
585 | mario79 | 892 | .ide3: |
2434 | Serge | 893 | cmp [cd_appl_data], 0 |
3555 | Serge | 894 | jne .ide3_appl_data |
2434 | Serge | 895 | mov [cache_ide3_search_start], edi |
3555 | Serge | 896 | ret |
585 | mario79 | 897 | .ide3_appl_data: |
2434 | Serge | 898 | mov [cache_ide3_appl_search_start], edi |
3555 | Serge | 899 | ret |
585 | mario79 | 900 | ;-------------------------------------------------------------------- |
901 | ;align 4 |
||
902 | ;calculate_linear_to_real: |
||
903 | ; shr eax, 12 |
||
904 | ; mov eax, [page_tabs+eax*4] |
||
905 | ; and eax, 0xFFFFF000 |
||
906 | ; ret |