/* MIDIPlay SAMPLE PLAYER, plays samples triggered from MIDI in */
/* Vet i fan om det kommer att funka det h�r... DSP:n anv�nds ju */
/* b�de av Voice och MIDI! J�vla skit... */
if ( ! GetEnvSetting() )
{
if (sbc_check_card() & 4)
{
if (sbc_test_int())
{
if (sbc_test_dma() >= 0)
{
if ((voice_drv = LoadDriver("CT-VOICE.DRV")) != 0)
{
if (!ctvm_init())
{
for(i = 0;i<16;i++)
Sampbuf[i] = 0;
strcpy(path,"*.*");
dsp_rd_p = ct_io_addx+0xA;
dsp_wr_p = ct_io_addx+0xC;
dsp_datavail_p = ct_io_addx+0xE;
ctvm_speaker(1);
return(0);
}
else
{
printf("Initialization of driver failed!\n");
return(1);
}
}
else
{
printf("Error loading CT-VOICE.DRV!\n");
return(1);
}
}
else
{
printf("Error on DMA channel.\n");
return(1);
}
}
else
{
printf("Error on interrupt.\n");
return(1);
}
}
else
{
printf("Sound Blaster Card not found or wrong I/O settings.\n") ;
return(1);
}
}
else
{
printf("BLASTER environment not set or incomplete or invalid.\n");
return(1);
}
}
quit()
{
int i;
for(i = 0; i <16 ; i++)
freemem(FP_SEG(Sampbuf[i]));
ctvm_speaker(0);
ctvm_terminate();
textcolor(LIGHTGRAY);
clrscr();
}
draw_screen()
{
unsigned segp;
int i;
clrscr();
printf("SAMPPLAY Sample Player for SoundBlaster cards Free blocks: %u\n",allocmem(0xffff,&segp));
printf("--------------------------------------------- MIDI Channel: %d\n\n",chan+1);
printf("(0-F) Load Sample into slot (M)IDI Channel\n");
printf("(L)ist files (P)ath (S)et save/load \n\n");
for(i = 0;i<16;i++)
printf("Slot %X (Note number %d) => %s\n",i,60+i,strupr(fname[i]));
}
int process_key()
{
int scan;
scan = (bioskey(0) >> 8) & 0xFF;
if(scan == 1) return(0);
switch(scan) {
case 2 : loadsample(1);break;
case 3 : loadsample(2);break;
case 4 : loadsample(3);break;
case 5 : loadsample(4);break;
case 6 : loadsample(5);break;
case 7 : loadsample(6);break;
case 8 : loadsample(7);break;
case 9 : loadsample(8);break;
case 10 : loadsample(9);break;
case 11 : loadsample(0);break;
case 0x1e : loadsample(0xA);break;
case 0x30 : loadsample(0xB);break;
case 0x2e : loadsample(0xC);break;
case 0x20 : loadsample(0xD);break;
case 0x12 : loadsample(0xE);break;
case 0x21 : loadsample(0xF);break;
case 0x32 : setmidichan();break;
case 0x26 : listfiles();break;
case 0x19 : changepath();break;
case 0x1f : setsaveload();
}
return(1);
}