Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 284 → Rev 285

/kernel/trunk/core/memory.inc
566,14 → 566,18
ret
endp
 
; param
; eax= linear address
;
; retval
; eax= phisical page address
 
align 4
proc get_pg_addr stdcall, lin_addr:dword
mov ebx, [lin_addr]
shr ebx, 12
mov eax, [pages_tab+ebx*4]
get_pg_addr:
shr eax, 12
mov eax, [pages_tab+eax*4]
and eax, 0xFFFFF000
ret
endp
 
align 4
proc page_fault_handler
/kernel/trunk/drivers/ati2d.asm
981,7 → 981,7
dd (R9800XT shl 16)+VID_ATI
dd 0 ;terminator
 
version dd 0x00020002
version dd 0x00030003
 
sz_ati_srv db 'HWCURSOR',0
 
/kernel/trunk/drivers/imports.inc
40,7 → 40,7
extrn AllocPages
end if
if used FreePage
extrn zFreePage
extrn FreePage
end if
if used MapPage
extrn MapPage
/kernel/trunk/drivers/infinity.asm
190,22 → 190,22
mov [edi+STREAM.magic], 'WAVE'
mov [edi+STREAM.size], STREAM_SIZE
 
stdcall KernelAlloc, 180*1024
stdcall KernelAlloc, 172*1024
 
mov edi, [str]
mov [edi+STREAM.base], eax
add eax, 0x1000
mov [edi+STREAM.seg_0], eax
mov [edi+STREAM.curr_seg], eax
mov [edi+STREAM.notify_off1], eax
add eax, 0x7FFF
add eax, 0x8000
mov [edi+STREAM.lim_0], eax
inc eax
add eax, 0x1000
mov [edi+STREAM.seg_1], eax
mov [edi+STREAM.notify_off2], eax
add eax, 0x7FFF
add eax, 0x8000
mov [edi+STREAM.limit], eax
mov [edi+STREAM.lim_1], eax
inc eax
 
mov [edi+STREAM.work_buff], eax
mov [edi+STREAM.work_read], eax
213,8 → 213,6
mov [edi+STREAM.work_count], 0
add eax, 0x10000
mov [edi+STREAM.work_top], eax
add eax, 1024*32
mov [edi+STREAM.r_buff], eax
 
mov ebx, [CURRENT_TASK]
shl ebx, 5
245,8 → 243,18
mov ebx, [resampler_params+eax+12]
mov [edi+STREAM.resample], ebx
 
mov edx, [edi+STREAM.base]
lea eax, [edx+0x9000]
call GetPgAddr ;eax
call FreePage ;eax
 
mov eax, edx
lea ebx, [edx+0x9000]
call GetPgAddr ;eax
stdcall MapPage, ebx, eax, dword 3
 
mov edi, [edi+STREAM.base]
mov ecx, 180*1024/4
mov ecx, (168*1024)/4
xor eax, eax
rep stosd
 
338,7 → 346,6
proc play_buffer stdcall, str:dword
 
mov ebx, [str]
 
cmp [ebx+STREAM.magic], 'WAVE'
jne .fail
 
345,46 → 352,51
cmp [ebx+STREAM.size], STREAM_SIZE
jne .fail
 
mov [ebx+STREAM.flags], SND_PLAY
 
mov eax,[ebx+STREAM.work_buff]
mov [ebx+STREAM.work_read], eax
mov [ebx+STREAM.work_write], eax
mov edi,[ebx+STREAM.work_buff]
mov [ebx+STREAM.work_read], edi
mov [ebx+STREAM.work_write], edi
mov [ebx+STREAM.work_count], 0
 
mov eax, [ebx+STREAM.seg_0]
mov [ebx+STREAM.curr_seg], eax
mov edx, [ebx+STREAM.base]
add edx, 0x1000
mov [ebx+STREAM.seg_0], edx
mov [ebx+STREAM.curr_seg], edx
add edx, 0x8000
mov [ebx+STREAM.lim_0], edx
add edx, 0x1000
mov [ebx+STREAM.seg_1], edx
add edx, 0x8000
mov [ebx+STREAM.lim_1], edx
 
mov esi, [ebx+STREAM.curr_seg]
mov edi, [ebx+STREAM.work_write]
mov edx, [ebx+STREAM.r_buff]
 
mov ecx, 32
mov edx, [ebx+STREAM.seg_0]
mov ecx, -128
mov eax, [ebx+STREAM.r_silence]
@@:
mov [edx], eax
add edx, 4
dec ecx
mov [edx+ecx], eax
add ecx, 4
jnz @B
 
mov edx, [ebx+STREAM.r_buff]
 
stdcall [ebx+STREAM.resample], edi, esi, edx,\
stdcall [ebx+STREAM.resample], edi, edx,\
[ebx+STREAM.r_dt],[ebx+STREAM.r_size],[ebx+STREAM.r_end]
 
mov ebx, [str]
 
add [ebx+STREAM.work_count], eax;
add [ebx+STREAM.work_write], eax;
add [ebx+STREAM.work_count], eax
add [ebx+STREAM.work_write], eax
 
mov eax, [ebx+STREAM.r_size]
add [ebx+STREAM.curr_seg], eax
mov edx, [ebx+STREAM.r_size]
add [ebx+STREAM.curr_seg], edx
 
; if DEBUG
; mov esi, msgPlay
; call [SysMsgBoardStr]
; end if
mov [ebx+STREAM.flags], SND_PLAY
 
mov eax, [ebx+STREAM.r_silence]
mov edi, [ebx+STREAM.work_write]
mov ecx, [ebx+STREAM.work_top]
sub ecx, edi
shr ecx, 2
cld
rep stosd
 
stdcall dev_play, [hSound]
xor eax, eax
inc eax
437,27 → 449,35
cmp esi, new_app_base
jb .fail
 
mov ecx, [size]
test ecx, ecx
jz .fail
mov edi, [offs]
mov ecx, 0x8000
 
mov eax, [edx+STREAM.base]
add eax, [offs]
sub ecx, edi
jbe .seg_1
 
cmp eax, [edx+STREAM.base]
sub [size], ecx
jb .fail
 
mov edi, eax
add eax, ecx
sub eax, 1
 
cmp eax, [edx+STREAM.limit]
add edi, [edx+STREAM.base]
add edi, 0x1000
shr ecx, 2
cld
rep movsd
jmp @F
.seg_1:
add edi, [edx+STREAM.base]
add edi, 0x1000
@@:
add edi, 0x1000
mov ecx, [size]
test ecx, ecx
jz .done
cmp ecx, 0x8000
ja .fail
 
shr ecx, 2
cld
rep movsd
 
.done:
xor eax, eax
inc eax
ret
505,34 → 525,7
ret
endp
 
if 0
align 4
proc check_stream
 
xor edx, edx
mov ecx, [play_count]
.l1:
mov esi, [play_list+edx]
 
mov eax, [esi+STR.curr_seg]
cmp eax, [esi+STR.lim_0]
jb .next
 
mov eax, [esi+STREAM.seg_0]
mov ecx, [esi+STREAM.lim_0]
xchg eax, [ebx+STREAM.seg_1]
xchg ecx, [ebx+STREAM.lim_1]
mov [esi+STREAM.seg_0], eax
mov [esi+STREAM.lim_0], ecx
mov [esi+STR.curr_seg], eax
.next:
add edx, 4
loop .l1
ret
endp
end if
 
align 4
proc prepare_playlist
 
.restart:
723,7 → 716,7
mm_mask dq 0xFF00FF00FF00FF00
 
stream_map dd 0xFFFF ; 16
version dd 0x00020002
version dd 0x00030003
 
szInfinity db 'INFINITY',0
szSound db 'SOUND',0
/kernel/trunk/drivers/main.inc
91,7 → 91,6
.work_write dd 0
.work_count dd 0
.work_top dd 0
.r_buff dd 0
.r_size dd 0
.r_end dd 0
.r_dt dd 0
112,7 → 111,7
.resample dd 0
}
 
STREAM_SIZE equ 27*4
STREAM_SIZE equ 26*4
 
virtual at 0
STREAM STREAM
/kernel/trunk/drivers/mixer.asm
223,9 → 223,8
.m2:
mov esi, [ebx+STREAM.curr_seg]
mov edi, [ebx+STREAM.work_write]
mov edx, [ebx+STREAM.r_buff]
 
stdcall [ebx+STREAM.resample], edi, esi, edx,\
stdcall [ebx+STREAM.resample], edi, esi, \
[ebx+STREAM.r_dt],[ebx+STREAM.r_size],[ebx+STREAM.r_end]
 
mov ebx, [str]
238,6 → 237,13
cmp eax, [ebx+STREAM.lim_0]
jb @f
 
mov esi, [ebx+STREAM.seg_0]
lea edi, [esi-128]
add esi, 0x7F80
mov ecx, 128/4
cld
rep movsd
 
mov eax, [ebx+STREAM.seg_0]
mov ecx, [ebx+STREAM.lim_0]
xchg eax, [ebx+STREAM.seg_1]
273,18 → 279,18
endp
 
align 4
proc resample_1 stdcall, dest:dword,src:dword,r_buff:dword,\
proc resample_1 stdcall, dest:dword,src:dword,\
r_dt:dword, r_size:dword,r_end:dword
 
mov edi, [r_buff]
add edi, 32*2
mov esi, [src]
mov ecx, [r_size]
shr ecx, 2
rep movsd
; dest equ esp+8
; src equ esp+12
; r_dt equ esp+16
; r_size equ esp+20
;r_end equ esp+24
 
mov edi, [dest]
mov edx, [r_buff]
mov edx, [src]
sub edx, 32*2
mov eax, 16
 
align 16
318,25 → 324,12
mov [edi], ebx
add edi, 4
 
add eax, [esp+20] ;rdt
cmp eax, [esp+28] ;r_end
add eax, [esp+16]
cmp eax, [esp+24]
jb .l1
 
mov ebp, esp
 
mov esi, [src]
add esi, [r_size]
sub esi, 32*2
mov edx, [r_buff]
mov ecx, 16
@@:
mov ebx, [esi]
mov [edx], ebx
add esi, 4
add edx, 4
dec ecx
jnz @B
 
sub edi, [dest]
mov eax, edi
ret
343,18 → 336,14
endp
 
align 4
proc resample_18 stdcall, dest:dword,src:dword,r_buff:dword,\
proc resample_18 stdcall, dest:dword,src:dword,\
r_dt:dword, r_size:dword,r_end:dword
 
mov edi, [r_buff]
add edi, 32
mov esi, [src]
mov ecx, [r_size]
shr ecx, 2
rep movsd
 
mov edi, [dest]
mov edx, [r_buff]
mov edx, [src]
sub edx, 32
 
mov esi, 16
 
align 16
393,25 → 382,11
mov [edi], ebx
add edi, 4
 
add esi, [esp+20] ;rdt
cmp esi, [esp+28] ;r_end
add esi, [esp+16]
cmp esi, [esp+24]
jb .l1
 
mov ebp, esp
 
mov esi, [src]
add esi, [r_size]
sub esi, 32
mov edx, [r_buff]
mov ecx, 8
@@:
mov ebx, [esi]
mov [edx], ebx
add esi, 4
add edx, 4
dec ecx
jnz @B
 
sub edi, [dest]
mov eax, edi
ret
418,7 → 393,7
endp
 
align 4
proc copy_stream stdcall, dest:dword,src:dword,r_buff:dword,\
proc copy_stream stdcall, dest:dword,src:dword,\
r_dt:dword, r_size:dword,r_end:dword
 
mov ecx, [r_size]
432,17 → 407,11
endp
 
align 4
proc resample_2 stdcall, dest:dword,src:dword,r_buff:dword,\
proc resample_2 stdcall, dest:dword,src:dword,\
r_dt:dword, r_size:dword,r_end:dword
 
mov edi, [r_buff]
add edi, 32*4
mov esi, [src]
mov ecx, [r_size]
shr ecx, 2
rep movsd ;call memcpy
 
mov edx, [r_buff]
mov edx, [src]
sub edx, 32*4
mov edi, [dest]
mov ebx, [r_dt]
mov eax, 16
461,9 → 430,9
 
movd mm2, ecx
punpcklwd mm2, mm2
movq mm3, qword [m7] ; // 0x8000
movq mm3, qword [m7] ;0x8000
 
psubw mm3, mm2 ; // 0x8000 - iconst
psubw mm3, mm2 ; ;0x8000 - iconst
punpckldq mm3, mm2
 
pmulhw mm0, mm3
483,19 → 452,6
jb .l1
emms
 
mov esi, [src]
add esi, [r_size]
sub esi, 32*4
mov edx, [r_buff]
mov ecx, 32
@@:
mov ebx, [esi]
mov [edx], ebx
add esi, 4
add edx, 4
dec ecx
jnz @B
 
sub edi, [dest]
mov eax, edi
ret
502,17 → 458,11
endp
 
align 4
proc resample_28 stdcall, dest:dword,src:dword,r_buff:dword,\
proc resample_28 stdcall, dest:dword,src:dword,\
r_dt:dword, r_size:dword,r_end:dword
 
mov edi, [r_buff]
add edi, 32*2
mov esi, [src]
mov ecx, [r_size]
shr ecx, 2
rep movsd ;call memcpy
 
mov edx, [r_buff]
mov edx, [src]
sub edx, 32*2
mov edi, [dest]
mov ebx, [r_dt]
mov eax, 16
559,18 → 509,6
jb .l1
emms
 
mov esi, [src]
add esi, [r_size]
sub esi, 32*2
mov edx, [r_buff]
mov ecx, 16
@@:
mov ebx, [esi]
mov [edx], ebx
add esi, 4
add edx, 4
dec ecx
jnz @B
 
sub edi, [dest]
mov eax, edi
578,7 → 516,7
endp
 
 
proc m16_stereo stdcall, dest:dword,src:dword,r_buff:dword,\
proc m16_stereo stdcall, dest:dword,src:dword,\
r_dt:dword, r_size:dword,r_end:dword
 
mov esi, [src]
607,7 → 545,7
endp
 
align 4
proc s8_stereo stdcall, dest:dword,src:dword,r_buff:dword,\
proc s8_stereo stdcall, dest:dword,src:dword,\
r_dt:dword, r_size:dword,r_end:dword
 
mov esi, [src]
638,7 → 576,7
ret
endp
 
proc m8_stereo stdcall, dest:dword,src:dword,r_buff:dword,\
proc m8_stereo stdcall, dest:dword,src:dword,\
r_dt:dword, r_size:dword,r_end:dword
 
mov esi, [src]
/kernel/trunk/drivers/sceletone.asm
143,7 → 143,7
devices dd (DEVICE_ID shl 16)+VENDOR_ID
dd 0 ;terminator
 
version dd 0x00020002
version dd 0x00030003
 
my_service db 'MY_SERVICE',0 ;max 16 chars include zero
 
/kernel/trunk/drivers/sis.asm
457,7 → 457,8
xor eax, eax
rep stosd
 
stdcall GetPgAddr, [ctrl.buffer]
mov eax, [ctrl.buffer]
call GetPgAddr
 
mov ebx, 0xC0004000
mov ecx, 4
501,10 → 502,11
add edi, 4
loop @B
 
mov ecx, pcmout_bdl
stdcall GetPgAddr, ecx
and ecx, 0xFFF
add eax, ecx
mov eax, pcmout_bdl
mov ebx, eax
call GetPgAddr ;eax
and ebx, 0xFFF
add eax, ebx
 
mov edx, PCM_OUT_BDL
call [ctrl.ctrl_write32]
1130,7 → 1132,7
devices dd (CTRL_SIS shl 16)+VID_SIS,msg_AC, set_SIS
dd 0
 
version dd 0x00020002
version dd 0x00030003
 
msg_AC db '7012 AC97 controller',13,10, 0
msg_SIS db 'Silicon Integrated Systems',13,10, 0
/kernel/trunk/drivers/unisound.asm
521,7 → 521,8
cld
rep stosd
 
stdcall GetPgAddr, [ctrl.buffer]
mov eax, [ctrl.buffer]
call GetPgAddr
 
mov ebx, 0xC0002000
mov ecx, 4
572,10 → 573,11
add edi, 4
loop @B
 
mov ecx, pcmout_bdl
stdcall GetPgAddr, ecx
and ecx, 0xFFF
add eax, ecx
mov eax, pcmout_bdl
mov ebx, eax
call GetPgAddr ;eax
and ebx, 0xFFF
add eax, ebx
 
mov edx, PCM_OUT_BDL
call [ctrl.ctrl_write32]
1351,7 → 1353,7
 
dd 0 ;terminator
 
version dd 0x00020002
version dd 0x00030003
 
msg_ICH db 'Intel ICH', 13,10, 0
msg_ICH0 db 'Intel ICH0', 13,10, 0