Звук
-
Народ, а VIA в колибри не ходит ?
skina12
Пост мало информативен - нет даже полного названия звуковухи и материнской платы.
Пост мало информативен - нет даже полного названия звуковухи и материнской платы.
Основная проблема в том, что отсутствует промежуточное звено между драйверами и программами: программа>интерфейс>драйвер. Именно стандартный интерфейс (простой и удобный), может упростить написание драйверов.
Hater
А что ты называешь "стандартным интерфейсом" ?
Есть вызов 68.17 который отправляет драйверу сообщения в виде struc IOCTL. Вот и весь интерфейс, примерно такой же как и в других системах. Есть статья diamond-a с примером создания драйвера, дополнительные комментарии к ней на форуме (ссылку не помню) и готовые драйверы для примера.
А что ты называешь "стандартным интерфейсом" ?
Есть вызов 68.17 который отправляет драйверу сообщения в виде struc IOCTL. Вот и весь интерфейс, примерно такой же как и в других системах. Есть статья diamond-a с примером создания драйвера, дополнительные комментарии к ней на форуме (ссылку не помню) и готовые драйверы для примера.
подскажите плиз !!!!
а как насчет дров для встроенного звука HD Realteck AC 97
где и как моно поставить дрова на звук ????
а как насчет дров для встроенного звука HD Realteck AC 97
где и как моно поставить дрова на звук ????
dedsave
HD это наверное High Definition Audio (Azalia). Это не АС97, совсем другая система. Дров для неё нет.
HD это наверное High Definition Audio (Azalia). Это не АС97, совсем другая система. Дров для неё нет.
ага она самая )))
а как нет ? а как мне тады быть (((
а как нет ? а как мне тады быть (((
Тады без звука тебе быть, ну или писать драйвер, всегда есть выбор...
Есть ли возможность написать драйвер, выводящий музыку через PC-Speaker? Гдето я видел на паскале прогу, которая проигрывала на нём Wav-ики. Качество приемлемое, особенно, если не имеешь альтернатив. Как пример - игра RoketZ, умела проигрывать музыку через спикер, только для этого её надо было изпод доса запускать (там таймер нужен высокочастотный, который винда походу для переключения задач использовала), а мне было лень дос ставить, настраивать...
Для PC-Speaker'а драйверы не нужны, для проигрывания музыки на нём есть специальные системные функции. В качестве примера - приложение midamp и файл kuzkina.mid на рамдиске, который можно запустить (в midamp) в любом файловом менеджере. Только чтобы услышать звук, нужно разрешить обращение к спикеру (на панели есть такой рисунок, по умолчанию перечёркнутый).
Dragon
Возможность есть всегда! Если ты желаешь и готов этим заняться - мы все будем только рады.
На текущий момент все программисты заняты "своей" работой и выполнять дополнительные "хотелки" ни у кого нет времени.
diamond
Как я понял, он имел в виду эмуляцию звуковой карты через спикер, с псевдополифонией. Такое в принципе возможно - я сам у знакомого видел и слышал запущенный проигрывать под DOS для MOD файлов. Даже голосовые включения в трекерную музыку звучали вполне прилично.
Возможность есть всегда! Если ты желаешь и готов этим заняться - мы все будем только рады.
На текущий момент все программисты заняты "своей" работой и выполнять дополнительные "хотелки" ни у кого нет времени.
diamond
Как я понял, он имел в виду эмуляцию звуковой карты через спикер, с псевдополифонией. Такое в принципе возможно - я сам у знакомого видел и слышал запущенный проигрывать под DOS для MOD файлов. Даже голосовые включения в трекерную музыку звучали вполне прилично.
Понимаю, у меня, к сожалению, тоже проблема со временемMario79 wrote: Возможность есть всегда! Если ты желаешь и готов этим заняться - мы все будем только рады.
На текущий момент все программисты заняты "своей" работой и выполнять дополнительные "хотелки" ни у кого нет времени.
Возникла проблема при перехвате и обработке int 0x20. Ниже код (исполняется в драйвере). На Celeron, Celeron 2 никаких проблем не возникало, а вот на машинках поновее перехват выполняется, но при обращении к HDD, например, чтение ранее не открытого файла, система виснет. Всё это планируется для вывода звука через PCSpeaker (если проблема не решится, я и разоряться не стану).
proc hook
mov bx,-1
.waiting:
mov al,0 ;фиксация значения счетчика в канале 0
out 43h,al ;порт 43h: управляющий регистр таймера
in al,40h ;младший байт счетчика
mov ah,al ;в АН
in al,40h ;старший байт счетчика в AL
xchg ah,al ;поменять их местами
cmp ax,bx
mov bx,ax
jb .waiting
cli
sidt [idtreg]
mov eax,[idt]
lea ecx,[eax+32*8] ;0x8000B200+32*8
mov ax,[ecx+6] ;старший word смещения (биты 31-16 старшего dword-а шлюза)
shl eax, 16
mov ax,[ecx] ;младший word смещения(биты 15-0 младшего dword-а шлюза)
xor ebx,ebx
mov bx,[ecx+2] ;bx - селектор сегмента кода, где находится код обработчика
mov [oldselector],bx
mov [oldhandler],eax
mov eax,new_handler
mov [ecx],ax
shr eax,16
mov [ecx+6],ax
mov ax,cs
mov [ecx+2],ax
mov al,00110100b ;1193181/12000
out 43h,al
mov al,100 ;новая частота
out 40h,al
xor al,al
out 40h,al
sti
ret
endp
align 16
new_handler:
pushfd
cmp [ticker],120
je .jmp_old
push ax
mov al,0x20 ;EOI to PIC
out 0x20,al
pop ax
inc [ticker]
popfd
iretd
.jmp_old:
mov [ticker],0
popfd
jmp dword [oldhandler]
oldhandler rd 1
oldselector rw 1
idtreg:
rw 1
idt rd 1
proc hook
mov bx,-1
.waiting:
mov al,0 ;фиксация значения счетчика в канале 0
out 43h,al ;порт 43h: управляющий регистр таймера
in al,40h ;младший байт счетчика
mov ah,al ;в АН
in al,40h ;старший байт счетчика в AL
xchg ah,al ;поменять их местами
cmp ax,bx
mov bx,ax
jb .waiting
cli
sidt [idtreg]
mov eax,[idt]
lea ecx,[eax+32*8] ;0x8000B200+32*8
mov ax,[ecx+6] ;старший word смещения (биты 31-16 старшего dword-а шлюза)
shl eax, 16
mov ax,[ecx] ;младший word смещения(биты 15-0 младшего dword-а шлюза)
xor ebx,ebx
mov bx,[ecx+2] ;bx - селектор сегмента кода, где находится код обработчика
mov [oldselector],bx
mov [oldhandler],eax
mov eax,new_handler
mov [ecx],ax
shr eax,16
mov [ecx+6],ax
mov ax,cs
mov [ecx+2],ax
mov al,00110100b ;1193181/12000
out 43h,al
mov al,100 ;новая частота
out 40h,al
xor al,al
out 40h,al
sti
ret
endp
align 16
new_handler:
pushfd
cmp [ticker],120
je .jmp_old
push ax
mov al,0x20 ;EOI to PIC
out 0x20,al
pop ax
inc [ticker]
popfd
iretd
.jmp_old:
mov [ticker],0
popfd
jmp dword [oldhandler]
oldhandler rd 1
oldselector rw 1
idtreg:
rw 1
idt rd 1
staper
А зачем так извращаться с подменой дескриптора если можно просто поправить обработчик ?
cmp [ticker],120 и т.п. могут дать непредсказуемый результат. Лучше загрузить ds или cmp [ss:ticker],120
В системе уже есть возможность выводить звук через спикер. ф.55 и код в sound/playnote.inc
А зачем так извращаться с подменой дескриптора если можно просто поправить обработчик ?
cmp [ticker],120 и т.п. могут дать непредсказуемый результат. Лучше загрузить ds или cmp [ss:ticker],120
В системе уже есть возможность выводить звук через спикер. ф.55 и код в sound/playnote.inc
Serge, спасибо за подсказку.
Исходник spksnd и драйвер в архиве (закинуть в папку с драйверами вместо sound.obj). Качество звука очень плохое (вполне ожидаемо), при каждом чтении файла раздаётся громкий писк, мышь тоже попискивает Ж). Любая попытка чтения с HDD (SATA) убивает файловый менеджер, так что я слушал MP3 с привода.
Исходник spksnd и драйвер в архиве (закинуть в папку с драйверами вместо sound.obj). Качество звука очень плохое (вполне ожидаемо), при каждом чтении файла раздаётся громкий писк, мышь тоже попискивает Ж). Любая попытка чтения с HDD (SATA) убивает файловый менеджер, так что я слушал MP3 с привода.
- Attachments
-
-
spksnd.7z (3.39 KiB)Downloaded 581 times
-
Who is online
Users browsing this forum: No registered users and 2 guests