home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Frozen Fish 1: Amiga
/
FrozenFish-Apr94.iso
/
bbs
/
alib
/
d1xx
/
d158
/
yachtc3.lha
/
YachtC3
/
src
/
soundproc.c
< prev
next >
Wrap
C/C++ Source or Header
|
1988-10-02
|
3KB
|
93 lines
/***
soundproc.c M.E.S. 87-12-28
a process for multitasking "scales"
***/
#include "soundproc.h"
main()
{
register int howlong;
register struct MsgPort *gimmemessagePort;
register char *words;
register ULONG what;
register ULONG class;
register UBYTE type;
if ( !(DOSBase = (struct DosLibrary *)OpenLibrary("dos.library",0))) return;
/* SysBase = (struct ExecBase *)OpenLibrary("exec.library", 0);
echo = (int)Output(); */
/* Allocating memory for the message "t" is done in the parent.
"sounproc" just shares this memory block temporarily. */
if((gimmemessagePort = CreatePort("gimme.my.message",0)) == 0)
{
printf("could not create the reply port\n");
return(0);
}
InitIOA(); /* in bonesound.c */
makewaves();
for (;;)
{
Wait( 1L << gimmemessagePort->mp_SigBit);
while( t = (struct test_message *)GetMsg(gimmemessagePort))
{
words = t->d.string;
what = t->d.function;
howlong = t->d.length;
class = t->d.flags;
type = t->d.id;
t->d.flags = IGOTMESSAGE;
ReplyMsg(t);
if (class == TURNOFF) /* then turn this task off */
{
printf("So long ......\n");
goto cleanup;
}
/* check if we're already making sounds */
if (class == VERBAGE) /* actually this is the task */
{
switch(what) /* call the function */
{
case DICEROLL:
Click(howlong);
break;
case YAHSOUND:
YahtzeeSound(howlong);
break;
case HAPPYSOUND:
Happy(howlong);
break;
case BOMBSOUND:
Bomb(howlong);
break;
default:
Happy(howlong);
break;
}
}
}
} /* end of forever loop */
cleanup:
printf("for now ......\n");
FinishProg(0);
DeletePort(gimmemessagePort);
/* return(0); */
}