Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Вс ноя 19, 2017 12:25 am

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 2 сообщения ] 
Автор Сообщение
 Заголовок сообщения: SoundBlaster
СообщениеДобавлено: Пт июл 29, 2005 2:16 pm 
Не в сети

Зарегистрирован: Вс июн 19, 2005 7:08 pm
Сообщения: 41
У кого-то получалось запустить SoundBlaster-совместимую карту? У меня встренная AC97 (VIA AD1885) эмулирует SoundBlaster, но ни в ДОСе, ни в МеОС играть не захотела. Сейчас воткнул PCI-ную на чипе Avance Logic ALS40000. В ДОСе работает, в МеОС - молчит.


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Вс апр 01, 2007 10:47 pm 
Вобще-то, Legacy SB это ни какая не эмуляция... Крутилась как-то, идея заюзать звуковуху напрямую через порты, используя фичу на некоторых МБ (со встроеными AC97 звучками) как legacy SB Pro, так как некоторые DOS игры (doom\quake1), шли со звуком, с этой опцией (включеной в BIOS), правда под Win9x (что давало, подозрения предпологать по поводу банальной 'эмуляцией' девайса). После того как, пара DOS примеров, c прямым 8-битным выводом в DAC, успешно отработали и в вариантах под Win95, я решил обкатать сиё, и на win2000. Как и следовало ожидать, результатом была тишина :) Разбор полётов показал, что WDM драйвер наглым образом, деактивировал настройки BIOS'а (ну понятно - нечего искать лёгких путей, когда за вас M$, подумали), однако простота и естественность юзабилити портов, всёж таки взяли вверх... Правда в этом деле ещё порулило курение pdf-ов на южные мосты и исходников драйверов из линукса. в итоге сей код, таки 'зашумел'...
Код:
program   Sound; uses windows;
const
                  BaseSB  = $220;

          ResetPort       = BaseSB + $6;
          ReadPort        = BaseSB + $A;
          WritePort       = BaseSB + $C;

          CmdDirectDAC    = $10;
          CmdDirectADC    = $20;
          CmdSpeakerOn    = $D1;

          PciCfgAddr      = $CF8;
          PciCfgData      = $CFC;
var
          data:dword;

procedure outb (val:integer; port:integer); asm  out dx, al end;
procedure outl (val,port: integer);         asm  out dx, eax end;
function  inb  (port:integer) :byte;        asm  mov edx, eax; in  al,dx end;
function  inl  (val :integer) :integer;     asm  mov edx, eax; in eax,dx end;

//Активация legacy SB на VТ686B (и наоборот)
Procedure SetupLegacySBPro (Enabled:boolean);
begin
// Тип уст-ва: Звуковые, видео и игровые устройства
// Размещение: PCI шина 0, устройство 7, функция 5
     data := $80000000 or (7 shl 11)  or (5 shl 8) or $40;//'хитрый' способ
     outl (data, PciCfgAddr);  //выбрать конфигурационный ($40) порт звуковухи
     data := inl  (PciCfgData);//считать текущее значение
     data := data or $00010100;// (SB_Enable=1, SB_AcLink_Enable=1)
 if  Enabled = false then data := data and not $00010100;
     outl (data, PciCfgData);  // установить необходимые флаги.
end;

procedure Thread (id:integer); stdcall;
begin
 while true do
  begin
     outb (CmdDirectDAC, WritePort);
     outb (random (255), WritePort);
     sleep (0);
  end;
end;


begin
     //разрешить использование портов =)
     CreateFile ('\\.\\GiveIO', $80000000, 0, NIL, 3, $80, 0);

     SetupLegacySBPro (true); //Активировать legacy SB

     outb (ResetPort, 1);
     sleep (5);
     outb (ResetPort, 0);
     sleep (5);
     outb (CmdSpeakerOn, WritePort);

     CreateThread(nil,0,@Thread, nil,0,data);
     Readln;
     SetupLegacySBPro (false); //Отключить legacy SB
end.


Единственое с чем облом так это с прямым вводом (команда $20), из-за чего и затевалась вся эта интрига =((( Хотя в принципе, по выводу (8-бит/48000гц) результат, не самый плохой, хотябы в плане, альтернативы PC спикеру.. Правда, использование legacy SB, вовсе не исключает использование микшера на AC97-ом. По сути южный мост формирует необходимые сигналы для его замороченой шины...


Вернуться к началу
   
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 2 сообщения ] 

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB