Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 187 → Rev 188

/kernel/trunk/drivers/infinity.asm
26,10 → 26,28
new_app_base equ 0x60400000; 0x01000000
PROC_BASE equ OS_BASE+0x0080000
 
public START
public STOP
public service_proc
public START
public IMPORTS
 
extrn AttachIntHandler
extrn SysMsgBoardStr
extrn PciApi
extrn PciRead32
extrn PciRead8
extrn PciWrite8
extrn AllocKernelSpace
extrn MapPage
extrn RegService
extrn KernelAlloc
extrn KernelFree
extrn GetPgAddr
extrn GetCurrentTask
extrn GetService
extrn ServiceHandler
extrn FpuSave
extrn FpuRestore
 
SND_CREATE_BUFF equ 2
SND_PLAY equ 3
SND_STOP equ 4
53,15 → 71,15
IOCTL IOCTL
end virtual
 
section '.flat' align 16
section '.flat' code readable align 16
 
START:
stdcall [GetService], szSound
stdcall GetService, szSound
test eax, eax
jz .fail
mov [hSound], eax
 
stdcall [KernelAlloc], 16*512
stdcall KernelAlloc, 16*512
test eax, eax
jz .out_of_mem
mov [mix_buff], eax
75,17 → 93,15
mov edi, stream
mov ecx, 4*STREAM_SIZE
rep stosd
mov [stream_count],0
 
stdcall set_handler, [hSound], new_mix
 
stdcall [RegService], szInfinity, service_proc
mov [stream_count],0
 
stdcall RegService, szInfinity, service_proc
ret
.fail:
if DEBUG
mov esi, msgFail
call [SysMsgBoardStr]
call SysMsgBoardStr
end if
xor eax, eax
ret
93,9 → 109,10
.out_of_mem:
if DEBUG
mov esi, msgMem
call [SysMsgBoardStr]
call SysMsgBoardStr
end if
xor eax, eax
STOP:
ret
 
handle equ IOCTL.handle
166,7 → 183,6
TASK_COUNT equ 0x0003004
CURRENT_TASK equ 0x0003000
 
 
align 8
proc CreateBuffer stdcall, format:dword
locals
186,7 → 202,7
mov [edi+STREAM.magic], 'WAVE'
mov [edi+STREAM.size], STREAM_SIZE
 
stdcall [KernelAlloc], 180*1024
stdcall KernelAlloc, 180*1024
 
mov edi, [str]
mov [edi+STREAM.base], eax
279,8 → 295,6
pop ebx
ret
 
 
 
align 4
proc DestroyBuffer stdcall, str:dword
 
292,7 → 306,7
cmp [esi+STREAM.size], STREAM_SIZE
jne .fail
 
stdcall [KernelFree], [esi+STREAM.base]
stdcall KernelFree, [esi+STREAM.base]
 
mov eax, [str]
call free_stream
625,7 → 639,7
mov [out_size], 0
 
lea eax, [handler]
stdcall [ServiceHandler], eax
stdcall ServiceHandler, eax
ret
endp
 
652,7 → 666,7
mov [out_size], ebx
 
lea eax, [handle]
stdcall [ServiceHandler], eax
stdcall ServiceHandler, eax
ret
endp
 
659,10 → 673,6
include 'mixer.asm'
 
align 16
play_list dd 16 dup(0)
stream_list dd 17 dup(0)
 
align 16
resampler_params:
;r_size r_end r_dt resampler_func
dd 0,0,0,0 ; 0 PCM_ALL
720,69 → 730,12
dd 2048, 0x02000000, 5462, resample_28 ;35 PCM_2_8_8
dd 1024, 0x02000000, 5462, resample_18 ;36 PCM_1_8_8
 
 
play_count dd 0
 
stream_count dd 0
 
align 8
hSound dd 0
 
m7 dw 0x8000,0x8000,0x8000,0x8000
mm80 dq 0x8080808080808080
mm_mask dq 0xFF00FF00FF00FF00
 
mix_input dd 16 dup(0)
 
align 16
;fpu_state db 512 dup(0)
 
align 16
stream db STREAM_SIZE*16 dup(0)
stream_map dd 0xFFFF ; 16
mix_buff dd 0
mix_buff_map dd 0
 
align 16
IMPORTS:
 
AttachIntHandler dd szAttachIntHandler
SysMsgBoardStr dd szSysMsgBoardStr
PciApi dd szPciApi
PciRead32 dd szPciRead32
PciRead8 dd szPciRead8
AllocKernelSpace dd szAllocKernelSpace
MapPage dd szMapPage
KernelAlloc dd szKernelAlloc
KernelFree dd szKernelFree
GetPgAddr dd szGetPgAddr
RegService dd szRegService
GetCurrentTask dd szGetCurrentTask
GetService dd szGetService
ServiceHandler dd szServiceHandler
FpuSave dd szFpuSave
FpuRestore dd szFpuRestore
dd 0
 
szKernel db 'KERNEL', 0
szAttachIntHandler db 'AttachIntHandler',0
szSysMsgBoardStr db 'SysMsgBoardStr', 0
szPciApi db 'PciApi', 0
szPciRead32 db 'PciRead32', 0
szPciRead8 db 'PciRead8', 0
szAllocKernelSpace db 'AllocKernelSpace',0
szMapPage db 'MapPage',0
szRegService db 'RegService',0
szKernelAlloc db 'KernelAlloc',0
szGetPgAddr db 'GetPgAddr',0
szGetCurrentTask db 'GetCurrentTask ',0
szGetService db 'GetService',0
szServiceHandler db 'ServiceHandler',0
szKernelFree db 'KernelFree',0
szFpuSave db 'FpuSave',0
szFpuRestore db 'FpuRestore',0
 
 
szInfinity db 'INFINITY',0
szSound db 'SOUND',0
 
793,3 → 746,18
msgUser db 'User callback',13,10,0
msgMem db 'Not enough memory',13,10,0
end if
 
section '.data' data readable writable align 16
 
stream rb STREAM_SIZE*16
 
play_list rd 16
mix_input rd 16
 
stream_list rd 17
play_count rd 1
stream_count rd 1
hSound rd 1
mix_buff rd 1
mix_buff_map rd 1