[Back to SOUND SWAG index] [Back to Main SWAG index] [Original]
{
> Hi! I have the following problem:
> I'm trying to get my Sound Blaster card (version 1.0) to speak a string,
> like the SAY.EXE program that comes with SB.
(Sorry for the german comments, but I'm to lazy to rewrite them ð:-|) }
Program Talk;
{ by Mirko Holzer; 16.2.1994 }
Uses
Crt,
Dos,
Strings;
Const
cSBTalkSig='FB ';
Type
tTalkEpStruc=record
Signature: array[0..2] of char; {Signatur: "FB "}
MajorVers: byte; {Hauptversion ??}
Entry: pointer; {Treiber Einsprungadresse}
Unknown: array[0..23] of byte; {Weiá nicht was da drin steht...}
DataLen: byte; {L�nge des zu sprechenden Strings}
TalkStr: array[0..255] of char; {Zu sprechender String}
end;
pTalkEpStruc=^tTalkEpStruc;
Var
sbt: pTalkEpStruc;
eing: string;
Function ChkSBT: pointer; assembler;
asm
mov ax,$FBFB
mov bx,0
mov es,bx
int $2F
mov dx,es
mov ax,bx
end;
Procedure TalkIt(var sb: pTalkEpStruc; what: string);
Var
SBCall: pointer;
begin
sb^.DataLen:=Length(what);
StrPCopy(sb^.TalkStr,what);
SBCall:=sb^.Entry;
asm
les di,sb
mov bx,di
mov al,$07
call [sbcall]
end;
end;
begin
sbt:=ChkSBT;
ClrScr;
Writeln('SBTalker - Test');
Writeln('16.2.94 von Mirko Holzer');
Writeln;
If sbt^.Signature<>cSBTalkSig then
begin
Writeln('The program sbtalk.exe is not installed.');
Writeln('Programm beendet.');
Writeln;
Halt;
end;
TalkIt(sbt,'Hello, here is S B talker speaking... Please enter your string '+
'or press enter to stop the program.');
Writeln('Zu sprechenden String eingeben oder <ENTER> dr�cken f�r Ende.');
Repeat
eing:='';
Readln(eing);
TalkIt(sbt,eing);
Until eing='';
TalkIt(sbt,'Look out for Demos from.... Terrible Minds Productions');
Writeln;
end.
[Back to SOUND SWAG index] [Back to Main SWAG index] [Original]