[Back to SOUND SWAG index] [Back to Main SWAG index] [Original]
{
NORBERT IGL
>> if you already have the DAC Programming, simply Write out each
>> Byte to the DAC PORT (Write $10, then the data For Direct Mode)
>> Then Delay after each Byte, depending on the Sampling rate.
>> You'll have to play around With the Delay's.
Just found a piece of source in my Files.... (:-)),
but i don't know the original author ( RedFox ? )
and i translated the (orig.) german remarks....
}
Uses
Crt;
Const
ResetPort = $226;
ReadPort = $22A;
WritePort = $22C;
StatusPort = $22C;
DataDaPort = $22E;
{ N.I.: Note: Use SB_Port (prev. Msg) to get the correct address.... }
AD_Null = $80;
OK = 0000;
NichtGefunden = 1000;
DirectDAC = $10;
SpeakerOn = $D1;
SpeakerOff = $D3;
Var
DSPResult : Word;
DSPReadWert : Byte;
loop : Word;
w : Word;
m : Word;
Procedure WriteToDSP(Command : Byte);
begin
Repeat Until (port[StatusPort] and $80) = 0;
port[WritePort] := Command;
end;
Procedure ReadFromDSP;
begin
Repeat Until (port[DataDaPort] and $80) = $80;
DSPReadWert := port[ReadPort];
end;
Procedure ResetDSP;
Var
MaxVersuch : Byte;
begin
MaxVersuch:=100;
Repeat
port[ResetPort] := 1;
Delay(10);
port[ResetPort] := 0;
ReadFromDSP;
dec(MaxVersuch);
Until (DSPReadWert = $AA) or (MaxVersuch = 0);
if MaxVersuch = 0 then
DSPResult := NichtGefunden
else
DSPResult := OK;
end;
begin
ClrScr;
ResetDSP;
if DSPResult <> OK then
begin
Writeln(' Soundeblaster not found !');
Writeln(' Wrong SB-address ?');
end
else
begin
Writeln(' Demo : direct output to the SoundblasterCard !');
Writeln(' ÚÄÄ¿ ÚÄÄ¿ ÚÄÄ¿ ÚÄÄ¿ ÚÄÄ¿ Ú creates a square');
Writeln(' ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ waveform With an');
Writeln('ÄÄÙ ÀÄÄÙ ÀÄÄÙ ÀÄÄÙ ÀÄÄÙ ÀÄÄÙ 64`er amplitude ');
Writeln;
Writeln(' RedFox (14.11.91) ');
WriteToDSP(SpeakerOn); { Speaker on }
m := 5000; { dynamc Wait (Init) }
For loop := 1 to 600 do { 600 samples }
begin
dec(m, 10);
if m < 20 then
m := 500;
WriteToDSP(DirectDAC); { command to SB }
WriteToDSP(AD_Null + 32); { now the sample }
{ rising edge }
For w := 1 to m do begin end; { dynamc wait }
WriteToDSP(DirectDAC); { command to SB }
WriteToDSP(AD_Null - 32); { falling edge }
For w := 1 to m do begin end; { wait again }
end;
WriteToDSP(SpeakerOff); { speaker off }
end;
end.
[Back to SOUND SWAG index] [Back to Main SWAG index] [Original]