
loadfun()
{
int area,esc_flag;
float c=0;
long int test;
char lname[10],not[10];
if(notedisp==0)
{
load=1;
notedisp=1;
size(32,0);
while(1)
{
messgline(10);
esc_flag=ask_name("Enter Record name",lname," Load Record ");
if(esc_flag==ESC)
{
load=0;
notedisp=0;
status_line();
return(0);
}
if(mouseinit!=0)
hidemsptr();
filpoint=fopen(lname,"rb");
if(filpoint==NULL)
{
errormesg(0,1);
load=0;
notedisp=0;
status_line();
}
else
{
load=1;
break;
}
}
area=(17-6+1)*(60-19+1)*2;
disparea=malloc(area);
if(disparea==NULL)
{
errormesg(0,10);
}
if(mouseinit!=0)
hidemsptr();
savevideo(6,19,17,60,disparea);
menubox(6,19,17,60,112,7);
drawbox(6,19,16,58,112);
write_fname(lname);
writestring("Notes:",9,32,112);
writestring("Persistence:",11,26,112);
writestring("Volume:",13,31,112);
writestring("Pause:",12,32,112);
fseek(filpoint,0,SEEK_END);
test=ftell(filpoint);
c=test/6;
writestring("Total Notes:",10,26,112);
sprintf(not,"%10.0f",c);
writestring(not,10,38,112);
}
status_line();
if(mouseinit!=0)
showms_ptr();
return(0);
}
void playforwfun()
{
float c=0;
char noteptr[10],persistptr[10],pauseptr[10],volptr[10];
if(load==1)
{
size(32,0);
if(mouseinit!=0)
hidemsptr();
/* status line indicating ESC*/
menubox(24,0,24,79,112,NO_SHADOW);
writestring("Play Record Forwards Press ^<^E^S^C^> to Quit ",24,1,112);
fseek(filpoint,0,SEEK_SET);
while(fread(¬e,sizeof(note),1,filpoint)==1)
{
++c;
sprintf(noteptr,"%10.0f",c);
writestring(noteptr,9,38,112);
sprintf(persistptr,"%10u",note.persist);
writestring(persistptr,11,38,112);
sprintf(pauseptr,"%10u",note.pause);
writestring(pauseptr,12,38,112);
sprintf(volptr,"%10.1f",volume);
writestring(volptr,13,38,112);
sound(note.valnote*volume);
delay(note.persist);
if(kbhit())
{
int sca=0;
{
union REGS i,o;
i.h.ah=0;
int86(22,&i,&o);
sca=o.h.ah;
}
if(sca==1)
{
nosound();
if(mouseinit!=0)
showms_ptr();
status_line();
return;
}
else if(sca==72 || sca==80)
{
nosound();
volumefun();
if(mouseinit!=0)
hidemsptr();
}
}
if(note.pause>1)
{
nosound();
delay(note.pause);
}
}
}
nosound();
if(mouseinit!=0)
showms_ptr();
status_line();
}
void playbacwfun()
{
long int test,ctest;
float c=0;
char noteptr[10],persistptr[10],pauseptr[10],volptr[10],sizptr[30];
if(load==1)
{
size(32,0);
if(mouseinit!=0)
hidemsptr();
fseek(filpoint,0,SEEK_END);
ctest=ftell(filpoint);
c=ctest/6;
writestring(noteptr,9,38,112);
/* status line indicating ESC*/
menubox(24,0,24,79,112,NO_SHADOW);
writestring("Play Record Backwards Press ^<^E^S^C^> to Quit ",24,1,112);
fseek(filpoint,0,SEEK_END);
test=ftell(filpoint);
fseek(filpoint,-6,SEEK_CUR);
while(fread(¬e,sizeof(note),1,filpoint)==1)
{
sprintf(noteptr,"%10.0f",c);
writestring(noteptr,9,38,112);
sprintf(persistptr,"%10u",note.persist);
writestring(persistptr,11,38,112);
sprintf(pauseptr,"%10u",note.pause);
writestring(pauseptr,12,38,112);
sprintf(volptr,"%10.1f",volume);
writestring(volptr,13,38,112);
sound(note.valnote*volume);
delay(note.persist);
if(kbhit())
{
int sca=0;
{
union REGS i,o;
i.h.ah=0;
int86(22,&i,&o);
sca=o.h.ah;
}
if(sca==1)
{
nosound();
if(mouseinit!=0)
showms_ptr();
status_line();
return;
}
else if(sca==72 || sca==80)
{
nosound();
volumefun();
if(mouseinit!=0)
hidemsptr();
}
}
if(note.pause>0)
delay(note.pause);
test=ftell(filpoint);
if(test<7)
break;
fseek(filpoint,-12,SEEK_CUR);
--c;
}
}
nosound();
if(mouseinit!=0)
showms_ptr();
status_line();
}
pgetname(row,col,p)
int row,col;
char *p;
{
int i=0,k,tab=1,resc=7;
char str[11]="NONAME1";
char *s;
int flags,escflag=0;
char *str1="Enter Record Name";
int len;
len=strlen(str1);
size(6,7);
if(mouseinit!=0)
hidemsptr();
writestring(str,row,col+i,47);
if(mouseinit!=0)
showms_ptr();
while(1)
{
if(mouseinit!=0)
showms_ptr();
gotoxy(col+i+1,row+1);
getkey();
if(ascii==27 || tab==4 ||((button==1) && (xgrid>=360 && xgrid<=432) && ygrid==112 ))
{
size(32,0);
if(ascii==13)
return(ESC);
else if(button==1)
{
if(mouseinit!=0)
hidemsptr();
size(32,0);
writestring("Add",14,35,32);
writestring("Done",14,23,32);
menubox(14,45,15,56,112,NO_SHADOW);
menubox(14,46,14,55,32,NO_SHADOW);
writestring("Cancel",14,48,47);
delay(150);
menubox(14,45,15,56,32,HALF_SHADOW);
writestring("Cancel",14,47,32);
delay(75);
return(ESC);
}
else if(ascii==ESC)
return(ESC);
}
else if(((ascii==13 || i>8) && (tab==3 || tab==1) && button==0) || (button==1 && (xgrid>=264 && xgrid<=312) && ygrid==112))
{
if(button==1)
{
if(mouseinit!=0)
hidemsptr();
size(32,0);
writestring("Done",14,23,32);
writestring("Cancel",14,47,32);
menubox(14,33,15,41,112,NO_SHADOW);
menubox(14,34,14,40,32,NO_SHADOW);
writestring("Add",14,36,47);
delay(150);
menubox(14,33,15,41,32,HALF_SHADOW);
writestring("Add",14,35,32);
delay(75);
}
if(i>9)
{
if(mouseinit!=0)
hidemsptr();
errormesg(4,5);
}
else
break;
}
else if((tab==2 && ascii==13 && button==0) || (button==1 && (xgrid>=168 && xgrid<=224) && ygrid==112))
{
if(button==1)
{
if(mouseinit!=0)
hidemsptr();
writestring("Add",14,35,32);
writestring("Cancel",14,47,32);
menubox(14,21,15,30,112,NO_SHADOW);
menubox(14,22,14,29,32,NO_SHADOW);
writestring("Done",14,24,47);
delay(150);
menubox(14,21,15,30,32,HALF_SHADOW);
writestring("Done",14,23,32);
delay(75);
tab=2;
}
if(strcmp(str,"NONAME1")==0)
{
resc=8;
break;
}
else if(i>0)
{
resc=9;
break;
}
else if(i==0)
{
resc=7;
break;
}
}
if(i==0 && button==0)
menubox(11,21,12,56,47,HALF_SHADOW);
if(ascii=='\b' && button==0 && tab==1)
{
if(i!=0)
{
i--;
writechar(row,col+i,' ',47);
}
}
if(isascii(ascii) && !iscntrl(ascii) && tab==1 && button==0 && (isdigit(ascii) || isalpha(ascii)) )
{
str[i]=toupper(ascii);
writechar(row,col+i,ascii,47);
i++;
if(isdigit(str[0]))
{
if(mouseinit!=0)
hidemsptr();
errormesg(2,3);
i=0;
menubox(11,21,12,56,47,HALF_SHADOW);
size(6,7);
}
}
if(ascii==9)
{
++tab;
if(tab>4)
tab=1;
if(tab==1)
{
if(mouseinit!=0)
hidemsptr();
menubox(14,45,15,56,32,HALF_SHADOW);
writestring("Cancel",14,47,32);
menubox(14,33,15,41,32,HALF_SHADOW);
writestring("Add",14,35,47);
size(6,7);
writestring(str1,9,39-len/2,127);
messgline(1);
resc=6;
}
else if(tab==2)
{
if(mouseinit!=0)
hidemsptr();
size(30,0);
writestring(str1,9,39-len/2,112);
menubox(14,33,15,41,32,HALF_SHADOW);
writestring("Add",14,35,32);
menubox(14,21,15,30,32,HALF_SHADOW);
writestring("Done",14,23,47);
messgline(13);
resc=9;
}
else if(tab==3)
{
if(mouseinit!=0)
hidemsptr();
size(30,0);
menubox(14,21,15,30,32,HALF_SHADOW);
writestring("Done",14,23,32);
menubox(14,33,15,41,32,HALF_SHADOW);
writestring("Add",14,35,47);
messgline(14);
resc=6;
}
else if(tab==4)
{
if(mouseinit!=0)
hidemsptr();
size(30,0);
menubox(14,33,15,41,32,HALF_SHADOW);
writestring("Add",14,35,32);
menubox(14,45,15,56,32,HALF_SHADOW);
writestring("Cancel",14,47,47);
messgline(12);
resc=ESC;
}
}
}
escflag=resc;
if(i>0 || tab==1 || tab==3)
{
if(i>0)
str[i]='\0';
strcat(str,".SNG");
strcpy(p,str);
}
size(32,0);
if(tab==1 || tab==3)
escflag=6;
return(escflag);
}
pask_name(name)
char *name;
{
int area,esc_flag,len;
char *p;
char *str="Enter Record Name";
char *str1=" Play Continous ";
area=(17-7+1)*(62-17+1)*2;
p=malloc(area);
if(p==NULL)
{
errormesg(0,10);
}
if(mouseinit!=0)
hidemsptr();
savevideo(7,17,17,62,p);
menubox(7,17,17,62,112,7);
drawbox(7,17,16,60,112);
len=strlen(str1);
writestring(str1,7,39-len/2,127);
len=strlen(str);
writestring(str,9,39-len/2,127);
menubox(11,21,12,56,47,HALF_SHADOW);
messgline(1);
while(1)
{
menubox(14,21,15,30,32,HALF_SHADOW);
writestring("Done",14,23,32);
menubox(14,33,15,41,32,HALF_SHADOW);
writestring("Add",14,35,47);
menubox(14,45,15,56,32,HALF_SHADOW);
writestring("Cancel",14,47,32);
esc_flag=pgetname(11,22,name);
if(mouseinit!=0)
hidemsptr();
if(esc_flag==6 || esc_flag==9)
{
filpoint=fopen(name,"rb");
if(filpoint==NULL)
{
if(mouseinit!=0)
hidemsptr();
errormesg(0,1);
menubox(11,21,12,56,47,HALF_SHADOW);
}
else
{
fclose(filpoint);
break;
}
}
else if(esc_flag==ESC || esc_flag==8 || esc_flag==7)
break;
}
restorevideo(7,17,17,62,p);
free(p);
if(mouseinit!=0)
showms_ptr();
return(esc_flag);
}
plybckcontin()
{
int area,esc_flag,i=0,m=0,j=0,cont=0,k=0,count=0,y=0;
char *darea;
struct lpname
{
char lname[13];
}lpl[20];
if(notedisp==0 && load==0)
{
area=(16-4+1)*(60-19+1)*2;
darea=malloc(area);
if(darea==NULL)
{
errormesg(0,1);
}
if(mouseinit!=0)
hidemsptr();
savevideo(4,19,16,60,darea);
while(1)
{
size(32,0);
esc_flag=pask_name(lpl[i].lname);
if(esc_flag==ESC || (esc_flag==8 && i==0))
{
load=0;
notedisp=0;
if(mouseinit!=0)
hidemsptr();
restorevideo(4,19,16,60,darea);
status_line();
free(darea);
return(0);
}
else if(esc_flag==7 || esc_flag==8)
{
if(esc_flag==8)
i--;
break;
}
else if(esc_flag==6 || esc_flag==9 )
{
if(i==0)
{
char str[2];
int k;
cont=1;
notedisp=1;
menubox(4,20,16,54,112,NO_SHADOW);
drawbox(4,20,16,54,112);
writestring("Records",5,34,112);
sprintf(str,"%c",179);
for(k=0; k<10; k++)
writestring(str,6+k,37,112);
if(esc_flag==9)
break;
delay(150);
}
if(i<10)
{
writestring(lpl[i].lname,6+i,23,112);
delay(150);
}
else if(i>9)
{
writestring(lpl[i].lname,6+j,40,112);
j++;
delay(150);
}
if(esc_flag==9)
break;
++i;
if(i>19)
{
i--;
break;
}
}
}
}
messgline(2);
if(mouseinit!=0)
hidemsptr();
if(cont==1)
{
j=0;
while(1)
{
if(m<10)
{
if(k==0)
{
if(count>0 && i<10)
{
menubox(6+y-1,23,6+y-1,32,112,NO_SHADOW);
writestring(lpl[y-1].lname,6+y-1,23,112);
}
if(i>9 && count>0)
{
menubox(6+j-1,40,6+j-1,51,112,NO_SHADOW);
writestring(lpl[10+j-1].lname,6+j-1,40,112);
}
j=0;
}
if(m>0)
{
menubox(6+m-1,23,6+m-1,32,112,NO_SHADOW);
writestring(lpl[m-1].lname,6+m-1,23,112);
}
menubox(6+m,23,6+m,32,31,NO_SHADOW);
writestring(lpl[m].lname,6+m,23,31);
k++;
count=1;
}
if(m>9)
{
if(j==0)
{
k=0;
menubox(6+m-1,23,6+m-1,32,112,NO_SHADOW);
writestring(lpl[m-1].lname,6+m-1,23,112);
}
else
{
menubox(6+j-1,40,6+j-1,51,112,NO_SHADOW);
writestring(lpl[m-1].lname,6+j-1,40,112);
}
menubox(6+j,40,6+j,51,31,NO_SHADOW);
writestring(lpl[m].lname,6+j,40,31);
j++;
}
filpoint=fopen(lpl[m].lname,"rb");
if(filpoint==NULL)
{
errormesg(0,8);
}
while(fread(¬e,sizeof(note),1,filpoint)==1)
{
sound(note.valnote*volume);
delay(note.persist);
if(kbhit())
{
int sca=0;
{
union REGS i,o;
i.h.ah=0;
int86(22,&i,&o);
sca=o.h.ah;
}
if(sca==1)
{
nosound();
restorevideo(4,19,16,60,darea);
free(darea);
status_line();
load=0;
notedisp=0;
fclose(filpoint);
if(mouseinit!=0)
showms_ptr();
return(0);
}
else if(sca==72 || sca==80)
{
nosound();
volumefun();
}
}
if(note.pause>0)
delay(note.pause);
}
nosound();
fclose(filpoint);
m++;
if(m>i)
{
if(m<10)
{
y=k;
k=0;
}
m=0;
}
}
}
status_line();
return(0);
}