Rev 293 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 293 | Rev 328 | ||
---|---|---|---|
Line 31... | Line 31... | ||
31 | OS_BASE equ 0 |
31 | OS_BASE equ 0 |
32 | new_app_base equ 0x60400000 |
32 | new_app_base equ 0x60400000 |
33 | PROC_BASE equ OS_BASE+0x0080000 |
33 | PROC_BASE equ OS_BASE+0x0080000 |
Line 34... | Line 34... | ||
34 | 34 | ||
- | 35 | CAPS_SSE2 equ 26 |
|
Line 35... | Line 36... | ||
35 | CAPS_SSE2 equ 26 |
36 | PG_SW equ 0x003 |
36 | 37 | ||
37 | 38 | ||
Line 111... | Line 112... | ||
111 | ;old 64-bit mmx |
112 | ;old 64-bit mmx |
112 | mov [mix_2_core], mmx_mix_2 |
113 | mov [mix_2_core], mmx_mix_2 |
113 | mov [mix_3_core], mmx_mix_3 |
114 | mov [mix_3_core], mmx_mix_3 |
114 | mov [mix_4_core], mmx_mix_4 |
115 | mov [mix_4_core], mmx_mix_4 |
115 | jmp @F |
116 | jmp @F |
116 | .mmx128: ;new 128-bit sse2 extensions |
117 | .mmx128: ;128-bit integer sse2 extensions |
117 | mov [mix_2_core], mmx128_mix_2 |
118 | mov [mix_2_core], mmx128_mix_2 |
118 | mov [mix_3_core], mmx128_mix_3 |
119 | mov [mix_3_core], mmx128_mix_3 |
119 | mov [mix_4_core], mmx128_mix_4 |
120 | mov [mix_4_core], mmx128_mix_4 |
120 | @@: |
121 | @@: |
121 | end if |
122 | end if |
Line 207... | Line 208... | ||
207 | restore out_size |
208 | restore out_size |
Line 208... | Line 209... | ||
208 | 209 | ||
209 | TASK_COUNT equ 0x0003004 |
210 | TASK_COUNT equ 0x0003004 |
Line 210... | Line 211... | ||
210 | CURRENT_TASK equ 0x0003000 |
211 | CURRENT_TASK equ 0x0003000 |
211 | 212 | ||
212 | align 8 |
213 | align 4 |
213 | proc CreateBuffer stdcall, format:dword |
214 | proc CreateBuffer stdcall, format:dword |
214 | locals |
215 | locals |
Line 237... | Line 238... | ||
237 | mov [eax+STREAM.str_bk], ebx |
238 | mov [eax+STREAM.str_bk], ebx |
238 | mov [ebx+STREAM.str_fd], eax |
239 | mov [ebx+STREAM.str_fd], eax |
239 | mov [edx+STREAM.str_bk], eax |
240 | mov [edx+STREAM.str_bk], eax |
240 | popf |
241 | popf |
Line 241... | Line 242... | ||
241 | 242 | ||
Line 242... | Line 243... | ||
242 | stdcall KernelAlloc, 168*1024 |
243 | stdcall KernelAlloc, dword 72*1024 |
243 | 244 | ||
244 | mov edi, [str] |
245 | mov edi, [str] |
245 | mov [edi+STREAM.base], eax |
246 | mov [edi+STREAM.base], eax |
Line 254... | Line 255... | ||
254 | mov [edi+STREAM.notify_off2], eax |
255 | mov [edi+STREAM.notify_off2], eax |
255 | add eax, 0x8000 |
256 | add eax, 0x8000 |
256 | mov [edi+STREAM.limit], eax |
257 | mov [edi+STREAM.limit], eax |
257 | mov [edi+STREAM.lim_1], eax |
258 | mov [edi+STREAM.lim_1], eax |
Line -... | Line 259... | ||
- | 259 | ||
- | 260 | ; create ring buffer |
|
- | 261 | ||
- | 262 | stdcall AllocKernelSpace, dword 128*1024 |
|
- | 263 | ||
258 | 264 | mov edi, [str] |
|
259 | mov [edi+STREAM.work_buff], eax |
265 | mov [edi+STREAM.work_buff], eax |
260 | mov [edi+STREAM.work_read], eax |
266 | mov [edi+STREAM.work_read], eax |
261 | mov [edi+STREAM.work_write], eax |
267 | mov [edi+STREAM.work_write], eax |
262 | mov [edi+STREAM.work_count], 0 |
268 | mov [edi+STREAM.work_count], 0 |
263 | add eax, 0x10000 |
269 | add eax, 64*1024 |
Line -... | Line 270... | ||
- | 270 | mov [edi+STREAM.work_top], eax |
|
- | 271 | ||
- | 272 | stdcall AllocPages, dword 64/4 |
|
- | 273 | mov edi, [str] |
|
- | 274 | mov ebx, [edi+STREAM.work_buff] |
|
- | 275 | mov ecx, 16 |
|
- | 276 | or eax, PG_SW |
|
- | 277 | push eax |
|
- | 278 | push ebx |
|
- | 279 | call CommitPages ;eax, ebx, ecx |
|
- | 280 | mov ecx, 16 |
|
- | 281 | pop ebx |
|
- | 282 | pop eax |
|
- | 283 | add ebx, 64*1024 |
|
- | 284 | call CommitPages ;double mapped |
|
264 | mov [edi+STREAM.work_top], eax |
285 | |
265 | 286 | mov edi, [str] |
|
266 | mov eax, [format] |
287 | mov eax, [format] |
Line 267... | Line 288... | ||
267 | mov [edi+STREAM.format], eax |
288 | mov [edi+STREAM.format], eax |
Line 295... | Line 316... | ||
295 | lea ebx, [edx+0x9000] |
316 | lea ebx, [edx+0x9000] |
296 | call GetPgAddr ;eax |
317 | call GetPgAddr ;eax |
297 | stdcall MapPage, ebx, eax, dword 3 |
318 | stdcall MapPage, ebx, eax, dword 3 |
Line 298... | Line 319... | ||
298 | 319 | ||
299 | mov edi, [edi+STREAM.base] |
320 | mov edi, [edi+STREAM.base] |
300 | mov ecx, (168*1024)/4 |
321 | mov ecx, (72*1024)/4 |
- | 322 | xor eax, eax |
|
- | 323 | cld |
|
- | 324 | rep stosd |
|
- | 325 | ||
- | 326 | mov edi, [str] |
|
- | 327 | mov edi, [edi+STREAM.work_buff] |
|
301 | xor eax, eax |
328 | mov ecx, (64*1024)/4 |
Line 302... | Line 329... | ||
302 | rep stosd |
329 | rep stosd |
303 | 330 | ||
304 | mov eax, [str] |
331 | mov eax, [str] |
305 | ret |
332 | ret |
306 | .fail: |
333 | .fail: |
307 | xor eax, eax |
334 | xor eax, eax |
Line -... | Line 335... | ||
- | 335 | ret |
|
308 | ret |
336 | endp |
309 | endp |
337 | |
Line 310... | Line 338... | ||
310 | 338 | if 0 |
|
311 | align 4 |
339 | align 4 |
Line 335... | Line 363... | ||
335 | mov eax,ecx |
363 | mov eax,ecx |
336 | pop ecx |
364 | pop ecx |
337 | pop ebx |
365 | pop ebx |
338 | ret |
366 | ret |
Line -... | Line 367... | ||
- | 367 | ||
- | 368 | end if |
|
339 | 369 | ||
340 | ;param |
370 | ;param |
Line 341... | Line 371... | ||
341 | ; eax= buffer handle |
371 | ; eax= buffer handle |
342 | 372 | ||
- | 373 | align 4 |
|
Line 343... | Line 374... | ||
343 | align 4 |
374 | DestroyBuffer: |
344 | DestroyBuffer: |
375 | .handle equ esp ;local |
Line 345... | Line 376... | ||
345 | 376 | ||
346 | cmp [eax+STREAM.magic], 'WAVE' |
377 | cmp [eax+STREAM.magic], 'WAVE' |
347 | jne .fail |
378 | jne .fail |
- | 379 | ||
- | 380 | cmp [eax+STREAM.size], STREAM_SIZE |
|
348 | 381 | jne .fail |
|
349 | cmp [eax+STREAM.size], STREAM_SIZE |
382 | .destroy: |
350 | jne .fail |
383 | push eax |
351 | .destroy: |
384 | |
352 | pushf |
385 | pushf |
353 | cli |
386 | cli |
354 | mov ebx, [eax+STREAM.str_fd] |
387 | mov ebx, [eax+STREAM.str_fd] |
Line 355... | Line -... | ||
355 | mov ecx, [eax+STREAM.str_bk] |
- | |
356 | mov [ebx+STREAM.str_bk], ecx |
388 | mov ecx, [eax+STREAM.str_bk] |
357 | mov [ecx+STREAM.str_fd], ebx |
389 | mov [ebx+STREAM.str_bk], ecx |
- | 390 | mov [ecx+STREAM.str_fd], ebx |
|
- | 391 | popf |
|
- | 392 | ||
358 | popf |
393 | stdcall KernelFree, [eax+STREAM.base] |
359 | - | ||
360 | push eax |
394 | mov eax, [.handle] |
361 | stdcall KernelFree, [eax+STREAM.base] |
395 | stdcall KernelFree, [eax+STREAM.work_buff] |
Line 362... | Line 396... | ||
362 | pop eax |
396 | |
363 | call DestroyObject ;eax |
397 | pop eax ;restore stack |
Line 524... | Line 558... | ||
524 | jne .next |
558 | jne .next |
Line 525... | Line 559... | ||
525 | 559 | ||
526 | cmp [edi+STREAM.size], STREAM_SIZE |
560 | cmp [edi+STREAM.size], STREAM_SIZE |
Line 527... | Line -... | ||
527 | jne .next |
- | |
528 | - | ||
529 | ; mov eax,[edi+STREAM.pid] |
- | |
530 | ; cmp eax, -1 |
- | |
531 | ; je .next |
- | |
532 | ; call pid_to_slot |
- | |
533 | ; test eax, eax |
- | |
534 | ; jz .next |
561 | jne .next |
535 | 562 | ||
536 | cmp [edi+STREAM.flags], SND_PLAY; |
563 | cmp [edi+STREAM.flags], SND_PLAY; |
537 | jne .next |
564 | jne .next |
Line 671... | Line 698... | ||
671 | m7 dw 0x8000,0x8000,0x8000,0x8000 |
698 | m7 dw 0x8000,0x8000,0x8000,0x8000 |
672 | mm80 dq 0x8080808080808080 |
699 | mm80 dq 0x8080808080808080 |
673 | mm_mask dq 0xFF00FF00FF00FF00 |
700 | mm_mask dq 0xFF00FF00FF00FF00 |
Line 674... | Line 701... | ||
674 | 701 | ||
675 | ;stream_map dd 0xFFFF ; 16 |
702 | ;stream_map dd 0xFFFF ; 16 |
Line 676... | Line 703... | ||
676 | version dd 0x00030003 |
703 | version dd 0x00030004 |
677 | 704 | ||
Line 678... | Line 705... | ||
678 | szInfinity db 'INFINITY',0 |
705 | szInfinity db 'INFINITY',0 |