/* Library file for LBsynth (c) 1989 Larry Battraw */ #include #include #include #include #include #include #include unsigned int seg=0xF000; unsigned int offst; void senddt0(int reg,int data); void senddt1(int reg,int data); void nphs0(int phs0); void nphs1(int phs1); void ch0(int ct0); void ch1(int ct1); void ch2(int ct2); void ch3(int ct3); void ch4(int ct4); void ch5(int ct5); void ch0v(int cv0); void ch1v(int cv1); void ch2v(int cv2); void ch3v(int cv3); void ch4v(int cv4); void ch5v(int cv5); void sendchk(int data); int xlat(char *alph); void silence(); unsigned int readfil(void); unsigned int n=0; int c,cv,c0v,c1v,c2v,c3v,c4v,c5v,erc; int cth,ctl; int ofst; /* ------functions on registers -------------------- */ void senddt0(int reg,int data) { ofst=offst; /* send register code */ ofst=ofst+0x300+reg; c=peekb(seg,ofst); ofst=offst; /* send data */ ofst=ofst+0x100+data; c=peekb(seg,ofst); } void senddt1(int reg,int data) { ofst=offst; /* send register code */ ofst=ofst+0x700+reg; c=peekb(seg,ofst); ofst=offst; /* send data */ ofst=ofst+0x500+data; c=peekb(seg,ofst); } void nphs0(int phs0) { ofst=offst; /* send register code */ ofst=ofst+0x306; c=peekb(seg,ofst); ofst=offst; /* send data */ ofst=ofst+0x100+phs0; c=peekb(seg,ofst); } void nphs1(int phs1) { ofst=offst; /* send register code */ ofst=ofst+0x706; c=peekb(seg,ofst); ofst=offst; /* send data */ ofst=ofst+0x500+phs1; c=peekb(seg,ofst); } void ch0(int ct0) { cth=ct0/255; ctl=ct0-cth*255; ofst=offst; /* send register code1 */ ofst=ofst+0x300; c=peekb(seg,ofst); ofst=offst; /* send datalow */ ofst=ofst+0x100+ctl; c=peekb(seg,ofst); ofst=offst; /* send register code2*/ ofst=ofst+0x301; c=peekb(seg,ofst); ofst=offst; /* send datahigh */ ofst=ofst+0x100+cth; c=peekb(seg,ofst); } void ch1(int ct1) { cth=ct1/255; ctl=ct1-cth*255; ofst=offst; /* send register code1 */ ofst=ofst+0x302; c=peekb(seg,ofst); ofst=offst; /* send datalow */ ofst=ofst+0x100+ctl; c=peekb(seg,ofst); ofst=offst; /* send register code2*/ ofst=ofst+0x303; c=peekb(seg,ofst); ofst=offst; /* send datahigh */ ofst=ofst+0x100+cth; c=peekb(seg,ofst); } void ch2(int ct2) { cth=ct2/255; ctl=ct2-cth*255; ofst=offst; /* send register code1 */ ofst=ofst+0x304; c=peekb(seg,ofst); ofst=offst; /* send datalow */ ofst=ofst+0x100+ctl; c=peekb(seg,ofst); ofst=offst; /* send register code2*/ ofst=ofst+0x305; c=peekb(seg,ofst); ofst=offst; /* send datahigh */ ofst=ofst+0x100+cth; c=peekb(seg,ofst); } void ch3(int ct3) { /* channel 0 of chip two... */ cth=ct3/255; ctl=ct3-cth*255; ofst=offst; /* send register code1 */ ofst=ofst+0x700; c=peekb(seg,ofst); ofst=offst; /* send datalow */ ofst=ofst+0x500+ctl; c=peekb(seg,ofst); ofst=offst; /* send register code2*/ ofst=ofst+0x701; c=peekb(seg,ofst); ofst=offst; /* send datahigh */ ofst=ofst+0x500+cth; c=peekb(seg,ofst); } void ch4(int ct4) { /* channel 1 chip two */ cth=ct4/255; ctl=ct4-cth*255; ofst=offst; /* send register code1 */ ofst=ofst+0x702; c=peekb(seg,ofst); ofst=offst; /* send datalow */ ofst=ofst+0x500+ctl; c=peekb(seg,ofst); ofst=offst; /* send register code2*/ ofst=ofst+0x703; c=peekb(seg,ofst); ofst=offst; /* send datahigh */ ofst=ofst+0x500+cth; c=peekb(seg,ofst); } void ch5(int ct5) { /* channel 2 chip 2 */ cth=ct5/255; ctl=ct5-cth*255; ofst=offst; /* send register code1 */ ofst=ofst+0x704; c=peekb(seg,ofst); ofst=offst; /* send datalow */ ofst=ofst+0x500+ctl; c=peekb(seg,ofst); ofst=offst; /* send register code2*/ ofst=ofst+0x705; c=peekb(seg,ofst); ofst=offst; /* send datahigh */ ofst=ofst+0x500+cth; c=peekb(seg,ofst); } void ch0v(int cv0) { c0v=cv0; ofst=offst; /* send register code */ ofst=ofst+0x308; c=peekb(seg,ofst); ofst=offst; /* send data */ ofst=ofst+0x100+c0v; c=peekb(seg,ofst); } void ch1v(int cv1) { c1v=cv1; ofst=offst; /* send register code */ ofst=ofst+0x309; c=peekb(seg,ofst); ofst=offst; /* send data */ ofst=ofst+0x100+c1v; c=peekb(seg,ofst); } void ch2v(int cv2) { c2v=cv2; ofst=offst; /* send register code */ ofst=ofst+0x30A; c=peekb(seg,ofst); ofst=offst; /* send data */ ofst=ofst+0x100+c2v; c=peekb(seg,ofst); } void ch3v(int cv3) { c3v=cv3; ofst=offst; /* send register code */ ofst=ofst+0x708; c=peekb(seg,ofst); ofst=offst; /* send data */ ofst=ofst+0x500+c3v; c=peekb(seg,ofst); } void ch4v(int cv4) { c4v=cv4; ofst=offst; /* send register code */ ofst=ofst+0x709; c=peekb(seg,ofst); ofst=offst; /* send data */ ofst=ofst+0x500+c4v; c=peekb(seg,ofst); } void ch5v(int cv5) { c5v=cv5; ofst=offst; /* send register code */ ofst=ofst+0x70A; c=peekb(seg,ofst); ofst=offst; /* send data */ ofst=ofst+0x500+c5v; c=peekb(seg,ofst); } int xlat(char *alph) { int code=0; if(strcmpi(alph,"PA1")==0) {code=1;} if(strcmpi(alph,"PA2")==0) {code=1;} if(strcmpi(alph,"PA3")==0) {code=2;} if(strcmpi(alph,"PA4")==0) {code=3;} if(strcmpi(alph,"PA5")==0) {code=4;} if(strcmpi(alph,"OY")==0) {code=5;} if(strcmpi(alph,"AY")==0){code=6;} if(strcmpi(alph,"EH")==0){code=7;} if(strcmpi(alph,"KK3")==0) {code=8;} if(strcmpi(alph,"PP")==0){code=9;} if(strcmpi(alph,"JH")==0){code=10;} if(strcmpi(alph,"NN1")==0) {code=11;} if(strcmpi(alph,"IH")==0){code=12;} if(strcmpi(alph,"TT2")==0) {code=13;} if(strcmpi(alph,"RR1")==0) {code=14;} if(strcmpi(alph,"AX")==0){code=15;} if(strcmpi(alph,"MM")==0){code=16;} if(strcmpi(alph,"TT1")==0) {code=17;} if(strcmpi(alph,"DH1")==0) {code=18;} if(strcmpi(alph,"IY")==0){code=19;} if(strcmpi(alph,"EY")==0){code=20;} if(strcmpi(alph,"DD1")==0) {code=21;} if(strcmpi(alph,"UW1")==0) {code=22;} if(strcmpi(alph,"AO")==0){code=23;} if(strcmpi(alph,"AA")==0){code=24;} if(strcmpi(alph,"YY2")==0) {code=25;} if(strcmpi(alph,"AE")==0){code=26;} if(strcmpi(alph,"HH1")==0) {code=27;} if(strcmpi(alph,"BB1")==0) {code=28;} if(strcmpi(alph,"TH")==0){code=29;} if(strcmpi(alph,"UH")==0){code=30;} if(strcmpi(alph,"UW2")==0) {code=31;} if(strcmpi(alph,"AW")==0){code=32;} if(strcmpi(alph,"DD2")==0) {code=33;} if(strcmpi(alph,"GG3")==0) {code=34;} if(strcmpi(alph,"VV")==0){code=35;} if(strcmpi(alph,"GG1")==0) {code=36;} if(strcmpi(alph,"SH")==0){code=37;} if(strcmpi(alph,"ZH")==0){code=38;} if(strcmpi(alph,"RR2")==0) {code=39;} if(strcmpi(alph,"FF")==0){code=40;} if(strcmpi(alph,"KK2")==0) {code=41;} if(strcmpi(alph,"KK1")==0) {code=42;} if(strcmpi(alph,"ZZ")==0){code=43;} if(strcmpi(alph,"NG")==0){code=44;} if(strcmpi(alph,"LL")==0){code=45;} if(strcmpi(alph,"WW")==0){code=46;} if(strcmpi(alph,"XR")==0){code=47;} if(strcmpi(alph,"WH")==0){code=48;} if(strcmpi(alph,"YY1")==0) {code=49;} if(strcmpi(alph,"CH")==0){code=50;} if(strcmpi(alph,"ER1")==0) {code=51;} if(strcmpi(alph,"ER2")==0) {code=52;} if(strcmpi(alph,"OW")==0){code=53;} if(strcmpi(alph,"DH2")==0) {code=54;} if(strcmpi(alph,"SS")==0){code=55;} if(strcmpi(alph,"NN2")==0) {code=56;} if(strcmpi(alph,"HH2")==0) {code=57;} if(strcmpi(alph,"OR")==0){code=58;} if(strcmpi(alph,"AR")==0){code=59;} if(strcmpi(alph,"YR")==0){code=60;} if(strcmpi(alph,"GG2")==0) {code=61;} if(strcmpi(alph,"EL")==0){code=62;} if(strcmpi(alph,"BB2")==0) {code=63;} if(code==0) { printf("\n Code:%s not found.",alph); return(-1); } else{ return(code); } } void sendchk(int data) { erc=0; ofst=offst; ofst=ofst+0x100; n=peekb(seg,ofst); ofst=offst; ofst=ofst+0x100+data; n=peekb(seg,ofst); do{ n=peekb(seg,ofst); if(n==65535) ++erc;} while(erc<4); } unsigned int readfil(void) { int adofst; long fofst; char *frd; FILE * stream; stream=fopen("synth.cfg","rt"); if(stream==NULL) goto error; else { fgets(frd,5,stream); fofst=strtol(frd,NULL,16); if(adofst==0) goto nonum; adofst=0+fofst; offst=adofst; return(adofst); } error: puts(" Sorry, I can't find your synthesizer configuration file-"); puts("I require it to be in the same directory as the file you are"); puts("attempting to execute."); puts("(Have you run the setup program?)"); exit(1); nonum: puts(" Sorry- your configuration file is incorrectly formatted-"); puts("Please run the setup program again."); exit(2); } void silence(void) { /* channel 0 */ ofst=offst; /* send register code */ ofst=ofst+0x308; c=peekb(seg,ofst); ofst=offst; /* send data */ ofst=ofst+0x100; c=peekb(seg,ofst); /* channel 1 */ ofst=offst; /* send register code */ ofst=ofst+0x309; c=peekb(seg,ofst); ofst=offst; /* send data */ ofst=ofst+0x100; c=peekb(seg,ofst); /* channel 2 */ ofst=offst; /* send register code */ ofst=ofst+0x30a; c=peekb(seg,ofst); ofst=offst; /* send data */ ofst=ofst+0x100; c=peekb(seg,ofst); /* channel 3 */ ofst=offst; /* send register code */ ofst=ofst+0x708; c=peekb(seg,ofst); ofst=offst; /* send data */ ofst=ofst+0x500; c=peekb(seg,ofst); /* channel 4 */ ofst=offst; /* send register code */ ofst=ofst+0x709; c=peekb(seg,ofst); ofst=offst; /* send data */ ofst=ofst+0x500; c=peekb(seg,ofst); /* channel 5 */ ofst=offst; /* send register code */ ofst=ofst+0x70a; c=peekb(seg,ofst); ofst=offst; /* send data */ ofst=ofst+0x500; c=peekb(seg,ofst); }