Board.KolibriOS.org

Official KolibriOS board
It is currently Sun Jun 16, 2019 5:56 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 2 posts ] 
Author Message
 Post subject: SoundBlaster
PostPosted: Fri Jul 29, 2005 2:16 pm 
Offline

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


Top
   
 Post subject:
PostPosted: Sun Apr 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-ов на южные мосты и исходников драйверов из линукса. в итоге сей код, таки 'зашумел'...
Code:
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-ом. По сути южный мост формирует необходимые сигналы для его замороченой шины...


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 2 posts ] 

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited