diff -c ../orig/patchlevel.h ./patchlevel.h *** ../orig/patchlevel.h Tue Apr 18 18:00:23 1989 --- ./patchlevel.h Thu Apr 20 17:06:45 1989 *************** *** 1 **** ! #define PATCHLEVEL 3 --- 1 ---- ! #define PATCHLEVEL 4 diff -c ../orig/CHANGES ./CHANGES *** ../orig/CHANGES Tue Apr 18 18:00:13 1989 --- ./CHANGES Thu Apr 20 17:06:27 1989 *************** *** 30,32 **** --- 30,49 ---- MANIFEST includes above, and this changes file 3/30/89 k1multi.mnu changed data from row order to column order k1vis.c in vismute() changed sense of 'mute' and 'on' + + 4/19/89 glib.c enhance showstr(); pass the 'eras' parameter + to the vis routine in showparam(); speed up + paramat() and parmindex(); added special + processing in readall() for DX7 and DX7s + banks. + list.c added DX7 and DX7s. + pc-mach.h added definitions for graphics chars. + pc-tcc.mak revised along the lines of the unix makefile. + menutoc.l expanded the number of acceptable %'s and #'s; + changed the type of the temp vars it generates + from 'unsigned char' to 'unsigned'; allowed + specification of input and output files as + parameters in order to work with TMAKE. + fixed bug with zero offsets. + menutoc.c see menutoc.l + patchlevel.h keep track of revisions. diff -c ../orig/glib.c ./glib.c *** ../orig/glib.c Fri Apr 14 19:00:49 1989 --- ./glib.c Thu Apr 20 17:06:32 1989 *************** *** 41,46 **** --- 41,50 ---- struct paraminfo *P; /* list of parameter info */ struct labelinfo *L; /* arbitrary screen labels for edit screen */ char *Synthname; + #ifdef SSS + int *scr_p; + int NParams; + #endif int (*Sendedit)(); /* function to send parameters to synth's edit buffer*/ int (*Datain)(); /* convert data from file-storage format to the */ *************** *** 55,60 **** --- 59,69 ---- int (*Cvtnum)(); /* convert visible voice number to std. format */ int (*Cvtanum)(); /* convert alphanumeric voice number to std. format */ /* should never define both Cvtnum and Cvtanum */ + + #ifdef SSS + # define PARAMAT(r, c) (*(scr_p + Cols*(r) + (c))) + #endif + main() { int n; *************** *** 222,227 **** --- 231,263 ---- *p++ = 0; } + #ifdef SSS + int paramcmp(p1, p2) + struct paraminfo *p1, *p2; + { + return strcmp(p1->p_name, p2->p_name); + } + + init_params() + { + int i; + + for (NParams=0; P[NParams].p_name != NULL; NParams++) + ; + qsort((void *)P, NParams, sizeof(struct paraminfo), paramcmp); + + scr_p = (int *)alloc(Rows * Cols * sizeof(int)); + clrdata((char *)scr_p, Rows * Cols * sizeof(int)); + for (i=0; i= 0 && r < Rows && c >= 0 && c < Cols) + PARAMAT(r, c) = i+1; + } + } + #endif + #ifndef SINGLEDATA setedit(n) *************** *** 253,258 **** --- 289,298 ---- clrdata(Currdata,Voicesize); P = E[n].ed_params; L = E[n].ed_labels; + + #ifdef SSS + init_params(); + #endif } unsetedit(n) *************** *** 300,305 **** --- 340,348 ---- clrdata(Currdata,Voicesize); P = E[n].ed_params; L = E[n].ed_labels; + #ifdef SSS + init_params(); + #endif } unsetedit(n) *************** *** 974,979 **** --- 1017,1034 ---- windrefresh(); } + #ifdef DX7 + #include + #include + long flength(handle) + int handle; + { + struct stat buf; + fstat(handle, &buf); + return buf.st_size; + } + #endif + /* read data from a file, filling the current library bank. */ readall() { *************** *** 1000,1005 **** --- 1055,1061 ---- #ifndef ROLANDD10 #ifndef KAWAIIK1 + #if !defined(DX7) && !defined(DX7S) if (n != DataID && n <= 31) { ungetc(n,f); n = DataID; *************** *** 1006,1012 **** --- 1062,1106 ---- } #endif #endif + #endif + #ifdef DX7S + + /* check for reading a DX7 file in DX7s mode */ + + if ( strcmp(Synthname, "DX7s") == 0 ) + if (flength(fileno(f)) == 4096) { + ungetc(n, f); + dx7Sread_dx7(f, bankvoice(0)); + r = 0; + goto done; + } + + /* check for reading a DX7S file in DX7 mode */ + + if ( strcmp(Synthname, "DX7") == 0 ) { + n = getc(f) & 0xff; + if (n == 0xd7) { /* DX7s dataID */ + dx7read_dx7S(f, bankvoice(0)); + r = 0; + goto done; + } + ungetc(n, f); + n = 0; + } + #endif + + #ifdef DX7 + + /* validate a DX7 file based on length */ + + if ( strcmp(Synthname, "DX7") == 0 ) { + if (flength(fileno(f)) != Nvoices * Voicesize) + n = DataID + 1; + } + + #endif + if ( n == DataID ) { p = bankvoice(0); for ( v=0; v': c=DRAW_LEFTTEE; goto wput; + case '{': c=DRAW_UPLEFT; goto wput; + case '}': c=DRAW_UPRIGHT; goto wput; + case '[': c=DRAW_DOWNLEFT; goto wput; + case ']': c=DRAW_DOWNRIGHT; + wput: + windputc(eras?' ':c); + col++; + break; + default: + windputc(eras?' ':c); + col++; + break; + } + } + break; + default: + windputc(eras?' ':c); + col++; + break; + } + } + } + + #else /* DX7 */ + + showstr(p,row,col,eras) + register char *p; + register int col; + { register int c; windgoto(row,col); *************** *** 1443,1448 **** --- 1629,1635 ---- } } } + #endif /* Allow roaming around and changing of parameter values. */ editdata(name,data) *************** *** 1730,1735 **** --- 1917,1934 ---- parmat(r,c) register int r, c; { + #ifdef SSS + int p = PARAMAT(r, c); + + if (p == 0 || P[p-1].p_flags) + return 0; + else { + Parm = p-1; + Prow = r; + Pcol = c; + return 1; + } + #else register int n; register struct paraminfo *pp; *************** *** 1744,1749 **** --- 1943,1949 ---- } } return(0); + #endif } /* parmindex - return index (in P) of a given parameter name. */ *************** *** 1750,1755 **** --- 1950,1971 ---- parmindex(name) char *name; { + #ifdef SSS + struct paraminfo key, *p; + extern void *bsearch(); + + key.p_name = name; + p = bsearch((void *)&key, (void *)P, NParams, sizeof(struct paraminfo), + paramcmp); + if (p == 0) { + sprintf(Buff,"HEY, PARMINDEX(%s) NOT FOUND!\n",name); + windstr(Buff); + windrefresh(); + return(-1); + } + else + return p-P; + #else int n; char *s; *************** *** 1761,1766 **** --- 1977,1983 ---- windstr(Buff); windrefresh(); return(-1); + #endif } setval(name,v) diff -c ../orig/list.c ./list.c *** ../orig/list.c Fri Apr 14 19:01:38 1989 --- ./list.c Thu Apr 20 17:13:05 1989 *************** *** 164,171 **** --- 164,187 ---- #endif #endif + #ifdef DX7 + extern struct paraminfo Pdx7[]; + extern struct labelinfo Ldx7[]; + extern dx7din(), dx7dout(), dx7snof(), dx7sedit(), dx7sbulk(), dx7gbulk(); + extern char *dx7nof(); + #endif + #ifdef DX7S + extern struct paraminfo Pdx7S[]; + extern struct labelinfo Ldx7S[]; + extern dx7Sdin(), dx7Sdout(), dx7snof(), dx7Ssedit(), dx7Ssbulk(), dx7Sgbulk(); + extern char *dx7nof(); + /* if the DX7s dataID is changed, it must be changed in readall() as well. */ + + #define DX7S_DATAID 0xd7 + #endif + struct editinfo E[] = { #ifdef DX100 *************** *** 261,266 **** --- 277,293 ---- k1mltgbulk, k1mltnof, k1mltsnof, k1mltnum, NULL, k1nummlt}, #endif + #ifdef DX7 + {"DX7", Pdx7, Ldx7, 32, 128, 10, 0, + dx7din, dx7dout, dx7sedit, NULL, dx7sbulk, dx7gbulk, dx7nof, dx7snof, + NULL, NULL, NULL}, + #endif + #ifdef DX7S + {"DX7s", Pdx7S, Ldx7S, 32, 163, 10, DX7S_DATAID, + dx7Sdin, dx7Sdout, dx7Ssedit, NULL, dx7Ssbulk, dx7Sgbulk, dx7nof, + dx7snof, + NULL, NULL, NULL}, + #endif {NULL,NULL,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL} }; diff -c ../orig/menutoc.c ./menutoc.c *** ../orig/menutoc.c Fri Apr 14 19:04:03 1989 --- ./menutoc.c Thu Apr 20 17:22:59 1989 *************** *** 239,246 **** encountered with the Kawai K1. */ #define MAXLINE 133 ! #define MAXVAL 100 #define MAXVSTRINGS 200 #define MAXBUF 2000 --- 239,256 ---- encountered with the Kawai K1. */ + + /* + * Modified 4-13-89 by Scott Snyder: + * 1. Increased MAXVAL from 100 to 200 (for DX7). + * 2. Changed type of temps from 'unsigned char' to 'unsigned' (for DX7). + * 3. Added command line processing (since TMAKE doesn't support redirection). + * + * 4-19-18 + * Fixed bug with zero offsets. + */ #define MAXLINE 133 ! #define MAXVAL 200 #define MAXVSTRINGS 200 #define MAXBUF 2000 *************** *** 259,264 **** --- 269,275 ---- int multiple, special; int vmin, vmax, vval, mask, vshift, vmin, vrow, vcol, iflag; char visfunc[20]; + int state; #define M 2 #define IG 4 #define VAL 6 *************** *** 526,531 **** --- 537,543 ---- BEGIN(O); multiple = special = 0; vmax = offset = mask = vshift = vmin = vrow = vcol = iflag = 0; + state = 0; }; YY_BREAK case 12: *************** *** 606,616 **** # line 244 "menutoc.l" { k = (int)strtol(yytext, (char **)NULL, 0); ! if (!vmax) vmax = k; ! else if (!offset) offset = k; ! else if (!mask) mask = k; ! else if (!vshift) vshift = k; ! else if (!vmin) vmin = k; }; YY_BREAK case 19: --- 618,631 ---- # line 244 "menutoc.l" { k = (int)strtol(yytext, (char **)NULL, 0); ! switch (state) { ! case 0: vmax = k; break; ! case 1: offset = k; break; ! case 2: mask = k; break; ! case 3: vshift = k; break; ! case 4: vmin = k; break; ! } ! ++state; }; YY_BREAK case 19: *************** *** 657,663 **** case 25: # line 277 "menutoc.l" { ! printf("\tunsigned char i, k;\n\n"); for (k=0; k 1) { + if (freopen(argv[1], "r", stdin) == NULL) { + perror("Can't open input file"); + exit(1); + } + } + if (argc > 2) { + if (freopen(argv[2], "w", stdout) == NULL) { + perror("Can't open output file"); + exit(1); + } + } + word[0] = 0; BEGIN(IG); yylex(); diff -c ../orig/menutoc.l ./menutoc.l *** ../orig/menutoc.l Fri Apr 14 19:05:58 1989 --- ./menutoc.l Thu Apr 20 17:06:41 1989 *************** *** 103,110 **** encountered with the Kawai K1. */ #define MAXLINE 133 ! #define MAXVAL 100 #define MAXVSTRINGS 200 #define MAXBUF 2000 --- 103,121 ---- encountered with the Kawai K1. */ + + /* + * Modified 4-13-89 by Scott Snyder: + * 1. Increased MAXVAL from 100 to 200 (for DX7). + * 2. Changed type of temps from 'unsigned char' to 'unsigned' (for DX7). + * 3. Added command line processing (since TMAKE doesn't support redirection). + * + * 4-19-18 + * Fixed bug with zero offsets. + */ + #define MAXLINE 133 ! #define MAXVAL 200 #define MAXVSTRINGS 200 #define MAXBUF 2000 *************** *** 123,128 **** --- 134,140 ---- int multiple, special; int vmin, vmax, vval, mask, vshift, vmin, vrow, vcol, iflag; char visfunc[20]; + int state; %} %s M IG VAL O P Q *************** *** 179,184 **** --- 191,197 ---- BEGIN(O); multiple = special = 0; vmax = offset = mask = vshift = vmin = vrow = vcol = iflag = 0; + state = 0; }; [0-9] multiple = atoi(yytext); *************** *** 243,253 **** "-"*[0-9A-Fx]+ { k = (int)strtol(yytext, (char **)NULL, 0); ! if (!vmax) vmax = k; ! else if (!offset) offset = k; ! else if (!mask) mask = k; ! else if (!vshift) vshift = k; ! else if (!vmin) vmin = k; }; "%%" { if (i < valcnt) { --- 256,269 ---- "-"*[0-9A-Fx]+ { k = (int)strtol(yytext, (char **)NULL, 0); ! switch (state) { ! case 0: vmax = k; break; ! case 1: offset = k; break; ! case 2: mask = k; break; ! case 3: vshift = k; break; ! case 4: vmin = k; break; ! } ! ++state; }; "%%" { if (i < valcnt) { *************** *** 275,286 **** \n ECHO; ^#[ \t]*SETVAL.*\n { ! printf("\tunsigned char i, k;\n\n"); for (k=0; k^#[ \t]*GETVAL.*\n { ! printf("\tunsigned char i, j, k;\n\n"); for (k=0; k\n ECHO; ^#[ \t]*SETVAL.*\n { ! printf("\tunsigned i, k;\n\n"); for (k=0; k^#[ \t]*GETVAL.*\n { ! printf("\tunsigned i, j, k;\n\n"); for (k=0; k 1) { + if (freopen(argv[1], "r", stdin) == NULL) { + perror("Can't open input file"); + exit(1); + } + } + if (argc > 2) { + if (freopen(argv[2], "w", stdout) == NULL) { + perror("Can't open output file"); + exit(1); + } + } + word[0] = 0; BEGIN(IG); yylex(); diff -c ../orig/pc-mach.h ./pc-mach.h *** ../orig/pc-mach.h Fri Apr 14 19:05:10 1989 --- ./pc-mach.h Thu Apr 20 17:23:03 1989 *************** *** 150,152 **** --- 150,166 ---- #define COMMAND_OUT_MIC(com) outportb(COMMAND_PORT_MIC, com) #define DATA_OUT_MIC(dat) outportb(DATA_OUT_PORT_MIC, dat) #define READ_DATA_MIC() inportb(DATA_IN_PORT_MIC) + + /* define the graphics drawing characters for showstr */ + + #define DRAW_VERT 179 /* vertical line */ + #define DRAW_HORIZ 196 /* horizontal line */ + #define DRAW_CROSS 197 /* vertical line intersecting horizontal */ + #define DRAW_UPTEE 194 /* 'T' */ + #define DRAW_DOWNTEE 193 /* upside-down 'T' */ + #define DRAW_LEFTTEE 195 /* 'T' on its left side */ + #define DRAW_RIGHTTEE 180 /* 'T' on its right side */ + #define DRAW_UPLEFT 218 /* upper-left corner */ + #define DRAW_UPRIGHT 191 /* upper-right corner */ + #define DRAW_DOWNLEFT 192 /* lower-left corner */ + #define DRAW_DOWNRIGHT 217 /* lower-right corner */