1.new drivers loader

2.changes in 68.11 init_heap

git-svn-id: svn://kolibrios.org@188 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Sergey Semyonov (Serge)
2006-10-20 14:02:26 +00:00
parent 7d1826758e
commit ad55c9aee2
12 changed files with 876 additions and 854 deletions

View File

@@ -26,9 +26,27 @@ OS_BASE equ 0; 0x80400000
new_app_base equ 0x60400000; 0x01000000
PROC_BASE equ OS_BASE+0x0080000
public service_proc
public START
public IMPORTS
public STOP
public service_proc
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
@@ -53,15 +71,15 @@ virtual at 0
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 @@ START:
mov edi, stream
mov ecx, 4*STREAM_SIZE
rep stosd
stdcall set_handler, [hSound], new_mix
stdcall [RegService], szInfinity, service_proc
mov [stream_count],0
stdcall set_handler, [hSound], new_mix
stdcall RegService, szInfinity, service_proc
ret
.fail:
if DEBUG
mov esi, msgFail
call [SysMsgBoardStr]
call SysMsgBoardStr
end if
xor eax, eax
ret
@@ -93,10 +109,11 @@ START:
.out_of_mem:
if DEBUG
mov esi, msgMem
call [SysMsgBoardStr]
call SysMsgBoardStr
end if
xor eax, eax
ret
STOP:
ret
handle equ IOCTL.handle
io_code equ IOCTL.io_code
@@ -166,7 +183,6 @@ restore out_size
TASK_COUNT equ 0x0003004
CURRENT_TASK equ 0x0003000
align 8
proc CreateBuffer stdcall, format:dword
locals
@@ -186,7 +202,7 @@ proc CreateBuffer stdcall, format:dword
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 @@ pid_to_slot:
pop ebx
ret
align 4
proc DestroyBuffer stdcall, str:dword
@@ -292,7 +306,7 @@ proc DestroyBuffer stdcall, str:dword
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 @@ proc set_handler stdcall, hsrv:dword, handler_proc:dword
mov [out_size], 0
lea eax, [handler]
stdcall [ServiceHandler], eax
stdcall ServiceHandler, eax
ret
endp
@@ -652,16 +666,12 @@ proc dev_play stdcall, hsrv:dword
mov [out_size], ebx
lea eax, [handle]
stdcall [ServiceHandler], eax
stdcall ServiceHandler, eax
ret
endp
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
@@ -720,68 +730,11 @@ resampler_params:
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 @@ msgStop db 'Stop',13,10,0
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