2 * MIDI Music Composer STed v2.07 (c)1996/11/17 by TURBO
\r
5 * v2.06f 95/04/18 YUI-NETのSYSOP(ゆい工房)さんにソース公開
\r
9 struct RCD_HEAD *rcd;
\r
10 char rcd_version[5];
\r
13 char hlp_path[128]; /* help file path & name */
\r
14 char fon_path[128]; /* font file path & name */
\r
16 char def_path[128]; /* .def path name */
\r
17 char rcp_path[128]; /* .rcp path name */
\r
18 char prt_path[128]; /* .prt path name */
\r
19 char trk_path[128]; /* .trk path name */
\r
21 char def_file[128]; /* .def file name */
\r
22 char rcp_file[128]; /* .rcp file name */
\r
23 char prt_file[128]; /* .prt file name */
\r
24 char trk_file[128]; /* .trk file name */
\r
26 char repl[128]; /* replace string */
\r
27 char delt[128]; /* delete string */
\r
28 char srch[128]; /* find string */
\r
30 char repl_t[26*6][40];
\r
31 char repl_d[26*6][50];
\r
33 int tr_step[36]; /* track total step temp */
\r
34 int tr_alc[36]; /* track aloc size */
\r
35 int tr_len[36]; /* track used size */
\r
36 int tr_pos[36][2][4]; /* track cursor position */
\r
37 int tag[26+2][4]; /* tag jamp list buffer */
\r
39 int es,ecode,scyp; /* input subroutine exit code */
\r
41 int btrack; /* track set top track */
\r
42 int track,track1,track2; /* edit track no. */
\r
43 int edit_scr; /* 0=l_track 1=r_track 2=rhythm */
\r
44 int cmdflag,cnfflag,mdlflag; /* STed2 system flag */
\r
47 int TRACK_SIZE,work_size; /* buffer size */
\r
48 int buff_size,buff_free,buff_max;
\r
49 int cpcy,cpadd,cplen;
\r
50 int cpleng,rcpf,rcplen; /* copy flag */
\r
52 void *ErrorTrap_Old; /* err trap vecter/flag */
\r
56 char comment[64]; /* comment */
\r
58 int tm_lag; /* graphic rewrite time lag */
\r
59 char inpmode; /* editor input mode */
\r
60 char grpmode; /* editor graphic mode */
\r
61 char thrumode; /* edit midi in thru mode */
\r
62 int rec_getch,rec_putmd; /* recoding ch./put mode */
\r
65 unsigned char rfilt[32][4]; /* record filter */
\r
66 unsigned char pfilt[32][4]; /* play filter */
\r
71 unsigned char keyst_table[2][128]; /* key# -> st/gt convert table */
\r
72 unsigned char stgt_tbl[60]; /* f.key -> st/gt table */
\r
76 char chcom_s[26*2][2][50]; /* child command comment */
\r
77 char chcom_c[26*2][2][16]; /* child command parameter */
\r
80 char module[64]; /* module name */
\r
82 int lsp_wait; /* last para. transfer wait */
\r
83 int bend_range; /* piche bend range */
\r
85 char tim_asin[33]; /* tone list channle assign */
\r
86 char tim_head[400][24]; /* tone list title */
\r
87 char tim_sym[400][8]; /* tone list symbol */
\r
88 char tim_name[80*128][15]; /* tone name buffer */
\r
89 short tim_top[400]; /* tone name buffer address */
\r
91 char card_name[21][64]; /* pcm card name list */
\r
92 char card_no[2]; /* used pcm card no. */
\r
94 short gs_bank[18*128]; /* gs bank part no.(8+1 group) */
\r
95 short gs_mode[18]; /* gs bank mode (8+1 group) */
\r
97 char rhy_stest[8]; /* rhythm sound test ch. & para */
\r
98 char rec_met[10]; /* recording metoro tone */
\r
100 unsigned char init_exc_data[258]; /* init exclusive data */
\r
102 /*** rcp format head parameter ***/
\r
103 char mtitle[65]; /* music title */
\r
104 char memo[12][29]; /* memo */
\r
106 int beat1,beat2,bkey,pbias; /* common parameter */
\r
107 char cm6_file[128],gsd_file[128]; /* controol file name */
\r
109 char rhyna[32][15]; /* rhythm assign name */
\r
110 unsigned char rhyno[32][2]; /* rhythm assign key & gate */
\r
112 char user_exc_memo[8][25]; /* user exclusive memo */
\r
113 unsigned char user_exc_data[8][24]; /* user exclusive data */
\r
115 unsigned char trno[36]; /* track no. */
\r
116 unsigned char trmod[36]; /* track play mode */
\r
117 unsigned char trrhy[36]; /* track rhythm sw. */
\r
118 unsigned char mch[36]; /* track midi ch. */
\r
119 unsigned char trkey[36]; /* track key shift */
\r
120 unsigned char trst[36]; /* track st shift */
\r
121 char trkmemo[36][37]; /* track comment */
\r
124 unsigned char lcbuf[1024*4+4]; /* delete line buffer */
\r
125 unsigned char rlcbuf[132]; /* delete rhythm line buffer */
\r
126 unsigned char cm6[22601],gsd[4096]; /* control file buffer */
\r
127 unsigned char hed[1414]; /* rcp header temporary */
\r
129 unsigned char *trk[36]; /* track buffer pointer */
\r
130 unsigned char *cpbuf; /* track copy buffer */
\r
131 unsigned char *rcpbuf; /* rhythm track copy buffer */
\r
132 unsigned char *dat; /* temporary & recording buffer */
\r
133 unsigned char *dat2; /* temporary */
\r
135 /* the following variables is only PC version available */
\r
137 int issted3; /* Am I a new version ? */
\r
138 int isconsole; /* is console mode? */
\r
139 int isxwin; /* is X mode? */
\r
140 char euc_text[1024]; /* code convert buffer */
\r
141 char player_name[1024]; /* midi player name */
\r
142 char midi_port_name[1024]; /* midi_port device name */
\r
143 char font_name[1024]; /* X font set name */
\r
144 int player_flag; /* is player able to play only SMF? */
\r
146 char KEY_XF1[]; /* keysym names */
\r
166 int iswindowopened;
\r
167 int iocs_graph_home; /* 0 or 1 */
\r
169 char fnc_func[10][32];
\r
170 char fnc_sfunc[10][32];
\r
171 char fnc_key[12][6];
\r
175 static char menu1[18][9] = {
\r
176 "LOAD ","SAVE ","EDIT&SET","PLAY ","RECORD ","FILTER ",
\r
177 "TIME&KEY","TITLE ","MEMO ","PART ASS","RHY ASSI","USER EXC",
\r
178 "CM64 CON","SC55 CON","OPTION ","UNIT SEL","INIT ","EXIT "};
\r
180 static char menu2[18][9]={
\r
181 "BTM.LOAD","R36.SAVE","EDIT&SET","PANEL ","MIDI MON","FILTER ",
\r
182 "TIME&KEY","TITLE ","MEMO ","PART ASS","RHY ASSI","USER EXC",
\r
183 "CM64 CON","SC55 CON","OPTION ","UNIT SEL","INIT ","強制EXIT"};
\r
187 static char beats[21][5]={
\r
189 "1/4","2/4","3/4","4/4","5/4","6/4",
\r
190 "1/8","2/8","3/8","4/8","5/8","6/8","7/8","8/8","9/8","10/8","11/8","12/8"};
\r
194 static int tbase_tbl[]={48,60,80,96,120,160,192,240,384,480};
\r
195 /*RCM V2.5G : 48,60,80,96,120,160,240,480*/
\r
198 static unsigned char fnckey[12]={
\r
199 0x12,0x17,0x01,0x07, 0x05,0x13,0x04,0x18, 0x0C,0x16,0x0B,0x15};
\r
200 /* R.UP,R.DOWN,INS,DEL, UP,LEFT,RIGHT,DOWN, CLR,HELP,HOME,UNDO*/
\r
202 unsigned char fnckey0[712],fnckey1[712];
\r
203 char fonbuf[188*32];
\r
205 char env_opt[32][128];
\r
208 int cmdflagold,used_u=0;
\r
210 static char version_id[1024];
\r
211 const char* get_version_id(void) {return (const char *)version_id;}
\r
213 #define Trap14 (0x002e) /*TRAP #14で参照するベクタ*/
\r
215 /********** program start **********/
\r
216 int main(int argc,char *argv[])
\r
230 STed_system_initialize( &argc, &argv ); /* Aug.08.1998 Daisuke Nagano */
\r
233 strcpy(version_id, "2.07m + ");
\r
234 strcat(version_id, VERSION_ID);
\r
235 #else /* VERSION_ID */
\r
236 strcpy(version_id, "2.07m");
\r
237 #endif /* VERSION_ID */
\r
243 ErrorTrap_Old = NULL;
\r
247 buff_max = 256 * 36 * 1024;
\r
261 track=0;poft=0;rcpf=0;rcplen=0;cpadd=0;cplen=0;cpleng=0;
\r
262 cmdflag=0;cnfflag=0;mdlflag=0;
\r
264 lcbuf[0]=255;rlcbuf[0]=255;
\r
265 btrack=0;rec_getch=0;rec_putmd=1;
\r
269 if ((p=getenv("RCP_DIR"))==(char*)0) p=getenv("rcp_dir");
\r
270 if (p!=(char*)0){strcpy(rcp_path,p);}
\r
272 if ((p=getenv("PRT_DIR"))==(char*)0) p=getenv("prt_dir");
\r
273 if (p!=(char*)0){strcpy(prt_path,p);}
\r
275 if ((p=getenv("RC_PATH"))==(char*)0) p=getenv("rc_path");
\r
276 if (p!=(char*)0){strcpy(rc_path,p);}
\r
278 if ((p=getenv("STED2"))==(char*)0) p=getenv("sted2");
\r
279 if (p!=(char*)0){strcpy(cmdline,p);eoptc=option_read(cmdline);}
\r
281 i=snprintf(tmp0,1024,"MIDI Music Composer STed %s Copyright 1990-97 TURBO\r\n",version_id);
\r
285 /*B_PRINT("X68k MIDI Music Composer STed v2.07m Copyright 1990-97 TURBO\r\n");*/
\r
286 /*B_PRINT("X68k MIDI Sequencer STed v2.07m Copyright 1990-97 TURBO\r\n");*/
\r
289 for(i=1;i<argc;i++){if(eoptc<32){strcpy(env_opt[eoptc++],argv[i]);}}
\r
291 for(i=0;i<eoptc;i++){
\r
292 strcpy(cmd,env_opt[i]);
\r
298 case 'm':TRACK_SIZE=str_val(&cmd[2]);break;
\r
301 case 'u':buff_max=str_val(&cmd[2])*1024;
\r
305 case 'w':work_size2=str_val(&cmd[2])*1024;break;
\r
308 case 'b':card_no[0]=str_val(&cmd[2]);break;
\r
312 strcpy(rcp_path,&cmd[2]);
\r
313 if(rcp_path[0]==0){
\r
314 if(i+1<eoptc && env_opt[i+1][0]!='-'){
\r
315 i++;strcpy(rcp_path,env_opt[i]);}
\r
321 strcpy(def_file,&cmd[2]);
\r
322 if(def_file[0]==0){
\r
323 if(i+1<eoptc && env_opt[i+1][0]!='-'){
\r
324 i++;strcpy(def_file,env_opt[i]);}
\r
329 case 'p':cmdflag|=0x8000;break;
\r
332 case 'r':cmdflag|=0x0080;break;
\r
335 case 'l':cmdflag|=0x0008;break;
\r
338 case 's':cmdflag|=0x0010;break;
\r
341 case 'o':cmdflag|=0x0200;break;
\r
346 strcpy(rcp_file,cmd);
\r
352 B_PRINT("usage: STed2 [option...] [file name] (.RCP/.R36/.MDF)\n");
\r
353 B_PRINT("options\r\n");
\r
354 B_PRINT( _("\t-M<size>\t Set the max size of track\n") );
\r
355 B_PRINT( _("\t-U<size>\t Set the size of track buffer\n") );
\r
356 B_PRINT( _("\t-W<size>\t Set the size of recording buffer\n") );
\r
357 B_PRINT( _("\t-F<file>\t Specify Module configuration file\n") );
\r
358 B_PRINT( _("\t-B<num>\t\t Specify the name of PCM card (CM64)\n") );
\r
359 B_PRINT( _("\t-D<path>\t Specify the data directory\n") );
\r
360 B_PRINT( _("\t-R\t\t Do pointplay with RCD function\n") );
\r
361 B_PRINT( _("\t-P\t\t Set panel displaying as default playing command\n") );
\r
362 B_PRINT( _("\t-L\t\t Read the data in RCD buffer at boot time\n") );
\r
363 B_PRINT( _("\t-S\t\t Don't copy the data to RCD buffer when exit\n\n") );
\r
367 if( (int)rcd==0 ) {
\r
368 B_PRINT(_("RCD is not running.\n"));exit(1);
\r
370 if( strcmp(rcd_version,"3.01")<0 || strcmp(rcd_version,"3.09")>0 ){
\r
371 B_PRINT(_("Invalid RCD version.\n"));
\r
376 if( card_no[0]<0 || card_no[0]>16 || TRACK_SIZE<32 || TRACK_SIZE>256 ||
\r
377 buff_max<64*1024 || buff_max>256*36*1024 ){
\r
378 B_PRINT(_("Invalid options.\n"));exit(1);
\r
381 TRACK_SIZE=TRACK_SIZE*1024-48;buff_size=TRACK_SIZE*36;
\r
382 if(buff_size>buff_max){buff_size=buff_max;}
\r
384 work_size=TRACK_SIZE+32*1024;if(work_size<work_size2){work_size=work_size2;}
\r
386 cpbuf=(unsigned char *)MALLOC(TRACK_SIZE);
\r
387 rcpbuf=(unsigned char *)MALLOC(TRACK_SIZE);
\r
389 dat=(unsigned char *)MALLOC(work_size);
\r
390 dat2=(unsigned char *)MALLOC(work_size);
\r
391 /* May.06.2001 NAGANO Daisuke <breeze.nagano@nifty.ne.jp> */
\r
393 if((int)dat>=0x81000000){
\r
394 B_PRINT(_("Cannot allocate track buffers.\n"));exit(1);}
\r
398 trk[0]=(unsigned char *)MALLOC(buff_size);
\r
400 if((int)trk[0]>=0x81000000) {
\r
402 buff_size=((int)trk[0])&0xfffffc;if(buff_size>=64*1024){goto realc;}
\r
404 B_PRINT(_("Cannot allocate track buffers.\n"));exit(1);
\r
408 buff_max=buff_size;
\r
411 if(TGUSEMD(0,-1)==1){
\r
412 B_PRINT(_("G-RAM is active. Init. OK?(Y/N)"));
\r
415 if(i=='Y'||i=='y'){break;}
\r
416 if(i=='N'||i=='n'){B_PRINT(_(": Terminated.\r\n"));exit(1);}
\r
421 str_change(rcp_path);str_change(prt_path);str_change(trk_path);
\r
422 str_change(rcp_file);str_change(def_file);str_change(rc_path);
\r
424 if( rcp_file[0]!=0 ){
\r
425 if(str_search(rcp_file,".MDF")>0 || str_search(rcp_file,".mdf")>0){
\r
428 if(str_search(rcp_file,".")==0){
\r
430 strmfe(rcp_file,rcp_file,'DEF");
\r
431 if(!(fp= fopen2(rcp_file,"rb"))){
\r
432 strmfe(rcp_file,rcp_file,'DFB");
\r
433 if(!(fp= fopen2(rcp_file,"rb"))){
\r
435 strmfe(rcp_file,rcp_file,"MDF");
\r
436 if(!(fp= fopen2(rcp_file,"rb"))){
\r
437 strmfe(rcp_file,rcp_file,"R36");
\r
438 if(!(fp= fopen2(rcp_file,"rb"))){
\r
439 strmfe(rcp_file,rcp_file,"RCP");
\r
449 strcpy(def_file,rcp_file);
\r
454 strcpy(def_file,rcp_file);
\r
462 if(!(fp= fopen2(rcp_file,"rb"))){
\r
464 B_PRINT(_(": File not found.\n"));exit(1);
\r
467 path_cut(rcp_path,rcp_file);
\r
470 /* load sted2 configuration file */
\r
473 strmfe(tmp0,argv[0],"cnf");
\r
475 if(defload(tmp0,2)!=0){
\r
476 B_PRINT(tmp0);B_PRINT(_(": File not found.\n"));exit(1);}*/
\r
479 strmfe(tmp0,argv[0],"cf2");defload(tmp0,2);
\r
480 /* 1997-07-20 STed2.cf2があればそれも読み込むようにした*/
\r
482 p = getenv("HOME");
\r
483 if (p && ( strlen(p) < sizeof(tmp0)-9 )) {
\r
485 strcat(tmp0, "/.sted2rc");
\r
486 defload(tmp0, 2); /* Mar.05.1999 */
\r
489 if(tm_lag==0){tm_lag=8000;}
\r
490 cmdflagold=cmdflag;
\r
492 stgt_init();filt_init();
\r
494 /* load module definition file */
\r
496 if(def_file[0]==0){strcpy(def_file,argv[0]);strmfe(def_file,def_file,"def");}
\r
497 str_change(def_file);
\r
501 if(str_search(def_file,".")==0){lvl=2;}
\r
503 if(lvl==2){strmfe(def_file,def_file,"dfb");}
\r
504 if(lvl==1){strmfe(def_file,def_file,"def");}
\r
506 i=defload(def_file,0);
\r
508 strcpy(tmp0,def_path);
\r
509 if(str_last((uint8*)tmp0)!='/'){strcat(tmp0,"/");}
\r
510 strcat(tmp0,def_file);
\r
514 strcpy(tmp1,argv[0]);path_cut(tmp0,tmp1);
\r
515 strcat(tmp0,def_file);
\r
519 if(lvl==2){lvl--;goto loop;}
\r
521 if(i==-1){B_PRINT(def_file);B_PRINT(_(": File not found.\n"));}*/
\r
522 if (i==-1) goto not_found;
\r
525 strcpy(def_file,tmp0);
\r
527 strcpy(tmp1,def_file);path_cut(tmp0,tmp1);
\r
528 if(tmp0[0]==0){def_file[0]=0;path_set(def_file);strcat(def_file,tmp1);}
\r
533 path_cut(def_path,def_file);
\r
537 fonread((uint8*)fonbuf);
\r
538 if(fon_path[0]==0){
\r
539 strmfe(fon_path,argv[0],"fon");
\r
541 str_change(fon_path);
\r
542 if(str_last((uint8*)fon_path)!='/'){strcat(fon_path,"/");}
\r
543 strcpy(tmp0,argv[0]);strmfe(tmp0,tmp0,"fon");
\r
544 path_cut(tmp1,tmp0);strcat(fon_path,tmp0);
\r
548 if(hlp_path[0]==0){
\r
549 strmfe(hlp_path,argv[0],"hlp");
\r
551 str_change(hlp_path);
\r
552 if(str_last((uint8*)hlp_path)!='/'){strcat(hlp_path,"/");}
\r
553 strcpy(tmp0,argv[0]);strmfe(tmp0,tmp0,"hlp");
\r
554 path_cut(tmp1,tmp0);strcat(hlp_path,tmp0);
\r
558 for(i=0;i<12;i++){fnckey1[0x280+i*6]=fnckey[i];}
\r
559 FNCKEYGT(0,(char*)fnckey0);FNCKEYST(0,(char*)fnckey1);
\r
561 path_set(rcp_path);path_set(def_path);
\r
563 if(trk_path[0]==0){
\r
564 strcpy(trk_path,prt_path);
\r
565 if(prt_path[0]==0){strcpy(trk_path,rcp_path);}}
\r
566 if(prt_path[0]==0){strcpy(prt_path,rcp_path);}
\r
568 if(str_last((uint8*)rcp_path)!='/'){strcat(rcp_path,"/");}
\r
569 if(str_last((uint8*)prt_path)!='/'){strcat(prt_path,"/");}
\r
570 if(str_last((uint8*)trk_path)!='/'){strcat(trk_path,"/");}
\r
571 if(str_last((uint8*)def_path)!='/'){strcat(def_path,"/");}
\r
572 if(rc_path[0]!=0 && str_last((uint8*)rc_path)!='/'){strcat(rc_path,"/");}
\r
576 char tmp[128];int ec;
\r
578 strcpy(tmp0,rcp_path);strcat(tmp0,rcp_file);
\r
579 strcpy(tmp,"lzm -x ");strcat(tmp,tmp0);ec=exe(tmp);
\r
580 if(ec<0){tmp[2]='z';ec=exe(tmp);}
\r
581 if(ec!=0 && ec<32){FNCKEYST(0,(char*)fnckey0);fonset((uint8*)fonbuf);exit(1);}
\r
588 C_CUROFF();LEDMOD(4,1);C_FNKMOD(3);sinit();/*MS_CUROF();*/
\r
590 if((cmdflag&0x8)!=0){
\r
591 if(bufload()!=0){bufset();}
\r
594 if( rcp_file[0]!=0 ){
\r
595 strcpy(tmp0,rcp_path);strcat(tmp0,rcp_file);dload(tmp0,0);
\r
597 if(cm6_file[0]!=0){
\r
598 strcpy(tmp0,rcp_path);strcat(tmp0,cm6_file);
\r
599 if(timload(tmp0)!=0){
\r
601 B_PRINT(_(": File not found.\n"));cm6_file[0]=0;
\r
604 if(gsd_file[0]!=0){
\r
605 strcpy(tmp0,rcp_path);strcat(tmp0,gsd_file);
\r
606 if(gsdload(tmp0)!=0){
\r
608 B_PRINT(_(": File not found.\n"));gsd_file[0]=0;
\r
613 form();timtra();/*key_vect_set();*/com_sel();/*key_vect_reset();*/
\r
615 end_proc();exit(0);
\r
618 /***************************/
\r
621 /* msg_clr();tpl(0);G_CLR_ON();CRTMOD(16);C_FNKMOD(0);C_CURON();LEDMOD(4,0);*/ /* Aug.09.1998 Daisuke Nagano */
\r
622 msg_clr();tpl(0);G_CLR_ON();CRTMOD(17);C_FNKMOD(0);C_CURON();LEDMOD(4,0);
\r
623 if(!(cmdflag&0x10)){bufset();}
\r
624 FNCKEYST(0,(char*)fnckey0);fonset((uint8*)fonbuf);
\r
625 close_midi_device(); /* Sep.02.1998 Daisuke Nagano */
\r
627 rst_errvect();exit(0);
\r
630 /***************************/
\r
636 if (NULL == (ErrorTrap_Old=(void *)B_INTVCS(Trap14,(int)*ErrorTrap)) ) {
\r
637 B_PRINT("TRAP14が再設定できませんでした。中止します。\r\n");
\r
640 #endif /* X680x0 */
\r
648 if (ErrorTrap_Old != NULL) {
\r
649 B_INTVCS(Trap14,(int)ErrorTrap_Old);
\r
651 #endif /* X680x0 */
\r
654 /***************************/
\r
658 char tmp0[128],tmp1[128],path2[128];
\r
660 for(i=0;i<18;i++){sdis(1,112+i*21,menu1[i],8,15,8);}
\r
665 sdis(1,112+cy*21,menu1[cy],8,0,15);
\r
666 ke=inkey3();sh=ke>>8;ke=ke&0xff;
\r
667 if(ke>='a' && ke<='z'){ke-=32;}
\r
668 sdis(1,112+cy*21,menu1[cy],8,15,8);
\r
670 if( ke==0xe0 ){if((sh&1)==0){poplay(0,4);}else{poplay(0,5);}}
\r
671 if( ke==0xe1 ){if((sh&1)==0){poplay(0,1);}else{poplay(0,2);}}
\r
673 if( ke>='A' && ke<='Z' && (sh&4)!=0 ){option(ke-'A',0);ke=0;}
\r
674 if(ke=='L'){cy=0;ke=13;}
\r
675 if(ke=='S'){cy=1;ke=13;}
\r
676 if(ke=='E'){cy=2;ke=13;}
\r
677 if(ke=='P' || ke==0x10){cy=3;ke=13;}
\r
678 if(ke=='R'){cy=4;ke=13;}
\r
679 if(ke=='F'){cy=5;ke=13;}
\r
681 if(ke=='K'){cy=6;ke=13;}
\r
682 if(ke=='T'){cy=7;ke=13;}
\r
683 if(ke=='M'){cy=8;ke=13;}
\r
684 if(ke=='G'){cy=9;ke=13;}
\r
685 if(ke=='A'){cy=10;ke=13;}
\r
686 if(ke=='U'){cy=11;ke=13;}
\r
687 if(ke=='C'){cy=12;ke=13;if(sh&1){cy=13;}}
\r
689 if(ke=='O'){cy=14;ke=13;}
\r
690 if(ke=='D'){cy=15;ke=13;}
\r
691 if(ke=='I'){cy=16;ke=13;}
\r
692 if(ke=='X'){cy=17;ke=13;}
\r
694 if(ke=='Z'){timtra();}
\r
696 if( ke==13 || ke==32 ){
\r
698 sdis(1,112+cy*21,menu2[cy],8,0,11);
\r
700 sdis(1,112+cy*21,menu1[cy],8,0,11);
\r
703 if( cy==0 ){load_sub(sh);}
\r
704 if( cy==1 ){save_sub(sh);}
\r
705 if( cy==2 ){trk_set(0);}
\r
706 if( cy==3 ){dplay(sh&3,0,0);}
\r
707 if( cy==4 ){if((sh & 1)!=0){inpmon();}else{trk_set(1);}}
\r
708 if( cy==5 ){rec_filter(0);}
\r
709 if( cy==6 ){beat_set();}
\r
712 msg(_("Input new title"));
\r
713 if(yn_sel()>0){mtitle[0]=0;}
\r
715 B_LOCATE(28,3);sinput(mtitle,64);rcp_dat2(0,0);}
\r
716 /*B_LOCATE(28,3);sinput(eucconv(mtitle),65);rcp_dat2(0,0);} /* code converted! */
\r
719 if( cy==8 ){memo_ed(sh);}
\r
720 if( cy==9 ){part_as();}
\r
721 if( cy==10 ){rhy_as();}
\r
722 if( cy==11 ){user_exc_as(0);}
\r
723 if( cy==12 ){cm64_con();}
\r
724 if( cy==13 ){gsd_con();}
\r
725 if( cy==14 ){option(-1,0);}
\r
728 strcpy(tmp1,def_file);strcpy(path2,def_path);
\r
729 fsel(tmp1,path2,0x004);
\r
730 if( es==0 && tmp1[0]!=0){
\r
732 strcpy(tmp0,path2);strcat(tmp0,tmp1);
\r
733 card_no[0]=0;card_no[1]=0;definit();
\r
734 cmdflag=cmdflagold;mdlflag=0;
\r
739 if(!(cnfflag&0x0008)){strcpy(def_path,path2);}
\r
740 strcpy(def_file,tmp1);
\r
741 if(cm6_file[0]==0){cminit();}
\r
742 if(gsd_file[0]==0){gsinit();}
\r
743 asin_init();if(rcp_file[0]==0){user_exc_init();}
\r
744 msg_clr();sdis2(30+9,0,module,22,15,8);
\r
745 }else{if(n==-1){msg(_(": File not found.\n"));}}
\r
750 msg(_("Initialize all data"));
\r
751 if(yn_sel()>0){dinit();rcp_file[0]=0;timtra();form2();}
\r
754 if((sh & 1)!=0){end_proc();}
\r
756 if(yn_sel()>0){end_proc();}
\r
758 C_WINDOW(0,31);B_LOCATE(0,2);C_CLS_ED();
\r
761 if( ke==5 || ke==0x3c ){cy--;if(cy<0){cy=17;}}
\r
762 if( ke==24 || ke==0x3e ){cy++;if(cy>17){cy=0;}}
\r
766 /***************************/
\r
767 void load_sub(int sh)
\r
769 char tmp0[128],tmp1[128],path2[128];
\r
771 strcpy(tmp1,rcp_file);
\r
772 strcpy(path2,rcp_path);fsel(tmp1,path2,0x001);
\r
773 if( es==0 && tmp1[0]!=0){
\r
774 strcpy(tmp0,path2);strcat(tmp0,tmp1);
\r
775 msg(_("Loading ..."));
\r
776 if(dload(tmp0,sh&1)==0 ){
\r
778 strcpy(tmp0,path2);strcat(tmp0,cm6_file);
\r
779 if(cm6_file[0]!=0){
\r
780 if(timload(tmp0)!=0){
\r
781 msg(cm6_file);B_PRINT(_(": File not found.\n"));
\r
785 strcpy(tmp0,path2);strcat(tmp0,gsd_file);
\r
786 if(gsd_file[0]!=0){
\r
787 if(gsdload(tmp0)!=0){
\r
788 msg(gsd_file);B_PRINT(_(": File not found.\n"));
\r
792 if(!(cnfflag&0x0008)){strcpy(rcp_path,path2);}
\r
793 strcpy(rcp_file,tmp1);
\r
794 form2();timtra();msg_clr();
\r
799 void save_sub(int sh)
\r
801 char tmp0[128],tmp1[128],path2[128];
\r
803 strcpy(tmp1,rcp_file);
\r
805 if(tmp1[0]==0 || (sh&1)==0){
\r
806 if(cnfflag&0x0040){sh=1-(sh&1);}
\r
808 if(str_search(rcp_file,".R36")>0){
\r
809 strmfe(tmp1,tmp1,"RCP");sh=0;
\r
811 strmfe(tmp1,tmp1,"R36");sh=1;
\r
815 strcpy(path2,rcp_path);fsel(tmp1,path2,0x100+(sh&1));
\r
816 if( es==0 && tmp1[0]!=0 ){
\r
817 strcpy(tmp0,path2);strcat(tmp0,tmp1);
\r
818 msg(_("Saving ..."));
\r
819 if(dsave(tmp0)==0){
\r
820 if(!(cnfflag&0x0008)){strcpy(rcp_path,path2);}
\r
821 strcpy(rcp_file,tmp1);
\r
825 sdis2(28,64,rcp_file,22,15,0);
\r
828 /***************************/
\r
829 void memo_ed(int sh)
\r
838 msg(_("Initialize memo"));
\r
839 if(yn_sel()>0){for(i=0;i<12;i++){memo[i][0]=0;}}
\r
843 fill(0,512+32,767,1023,0);
\r
844 box(263,152+512,504,375+512,14,65535);
\r
845 box(265,169+512,502,373+512,14,65535);
\r
846 sdis(33,152+512," MEMO",30,15,14);
\r
849 /*for(i=0;i<12;i++){tdis(34,11+i,memo[i],28,3);}*/
\r
850 for(i=0;i<12;i++){tdis(34,11+i,eucconv(memo[i]),28,3);} /* code converted! */
\r
853 /*tdis(34,11+y,memo[y],28,11);*/
\r
854 tdis(34,11+y,eucconv(memo[y]),28,11); /* code converted! */
\r
856 /*tdis(34,11+y,memo[y],28,3);*/
\r
857 tdis(34,11+y,eucconv(memo[y]),28,3); /* code converted! */
\r
859 if( ke==0xc ){goto redraw;}
\r
860 if( ke==27 ){C_CLS_AL();home2(0);break;}
\r
861 if( ke==13 ){B_LOCATE(34,11+y);sinput(memo[y],28);}
\r
862 /*if( ke==13 ){B_LOCATE(34,11+y);sinput(eucconv(memo[y]),28);} /* code converted! */
\r
863 if( ke==0x05 ){y--;if( y<0 ){y=11;}}
\r
864 if( ke==0x18 ){y++;if( y>11 ){y=0;}}
\r
867 strcpy(tmp,memo[y]);
\r
869 strcpy(memo[i],memo[i+1]);}
\r
870 strcpy(memo[11],"");goto top;
\r
874 strcpy(memo[i],memo[i-1]);}
\r
875 strcpy(memo[y],tmp);goto top;
\r
880 /***************************/
\r
881 int option(int md,int sm)
\r
883 int ke,i,y=0,ex=0,gy=scyp;
\r
885 char path2[128],tmp0[128],tmp1[128],tmp2[128];
\r
888 fill(0,544,767,1001,0);box(0,556,320,1001,14,65535);fill(1,556+17,8,1000,8);
\r
889 sdis(0,556," OPTION COMMAND",40,15,14);home2(512);
\r
892 tmp0[0]=i+'A';tmp0[1]=32;tmp0[2]=0;strcat(tmp0,chcom_s[i][0]);
\r
893 tdis(0,4+i,tmp0,39,3);}
\r
895 if(md>=0){y=md;goto cexec;}
\r
900 tdis(2,4+y,chcom_s[y][0],37,11);
\r
902 tdis(2,4+y,chcom_s[y][0],37,3);
\r
904 if( ke==27 ){break;}
\r
905 if( ke==0x05 ){y--;if( y<0 ){y=25;}}
\r
906 if( ke==0x18 ){y++;if( y>25 ){y=0;}}
\r
907 if(ke>='a' && ke<='z'){y=ke-'a';ke=13;}
\r
908 if(ke>='A' && ke<='Z'){y=ke-'A';ke=13;}
\r
910 if( (ke==13 || ke==32)&& chcom_s[y][1][0]!=0 ){
\r
912 tdis(2,4+y,chcom_s[y][0],37,9);
\r
913 strcpy(tmp0,chcom_s[y][1]);
\r
914 strcpy(tmp2,chcom_c[y][0]);
\r
916 cmd=progmode(tmp2);
\r
918 if((cmd&512)!=0 && sm){
\r
919 msg(_("This function is not available except for Main Menu."));
\r
920 if(md<0){goto top;}
\r
924 if((cmd&32)!=0 && chcom_c[y][1][0]!=0){
\r
926 strcpy(path2,rcp_path);fsel(tmp1,path2,y+64);
\r
927 if( es==0 && tmp1[0]!=0 ){
\r
929 strcat(tmp0,path2);strcat(tmp0,tmp1);
\r
933 if(rcp_file[0]!=0){
\r
934 strcpy(tmp1,rcp_file);
\r
935 if(chcom_c[y][1][0]!=0){
\r
936 strmfe(tmp1,tmp1,chcom_c[y][1]);
\r
939 strcat(tmp0,rcp_path);strcat(tmp0,tmp1);
\r
943 if(tmp0[0]!=0){ex=paraexe(tmp0,0,0,sm,cmd);break;}
\r
946 B_CLR_AL();home2(gy);
\r
950 /***************************/
\r
951 int option22(int md,int sm,int ad,int ew)
\r
953 int ke,i,y=0,ex=0,gy=scyp,cx,gx;
\r
955 char path2[128],tmp0[128],tmp1[128],tmp2[128];
\r
957 if(ew==0){cx=41+16-16;gx=327+128-128;}else{cx=1+16-2;gx=7+128-16;}
\r
961 edit_scr=ew;noed_cls();edit_scr=0;
\r
963 box(gx,556,gx+320,1001,14,65535);fill(gx+1,556+17,gx+8,1000,8);
\r
964 sdis(cx,556," OPTION COMMAND",40,15,14);home2(512);
\r
967 tmp0[0]=i+'A';tmp0[1]=32;tmp0[2]=0;strcat(tmp0,chcom_s[i+26][0]);
\r
968 tdis(cx,4+i,tmp0,39,3);}
\r
970 if(md>=0){y=md;goto cexec;}
\r
975 tdis(cx+2,4+y,chcom_s[y+26][0],37,11);
\r
977 tdis(cx+2,4+y,chcom_s[y+26][0],37,3);
\r
979 if( ke==27 ){break;}
\r
980 if( ke==0x05 ){y--;if( y<0 ){y=25;}}
\r
981 if( ke==0x18 ){y++;if( y>25 ){y=0;}}
\r
982 if(ke>='a' && ke<='z'){y=ke-'a';ke=13;}
\r
983 if(ke>='A' && ke<='Z'){y=ke-'A';ke=13;}
\r
985 /* if( ke==0x17 || ke==0x13 ){pg-=26;if(pg<0){pg=26;}goto redraw;}
\r
986 if( ke==0x12 || ke==0x04 ){pg+=26;if(pg>26){pg=0;}goto redraw;}
\r
988 if( (ke==13 || ke==32)&& chcom_s[y+26][1][0]!=0 ){
\r
990 tdis(cx+2,4+y,chcom_s[y+26][0],37,9);
\r
991 strcpy(tmp0,chcom_s[y+26][1]);
\r
992 strcpy(tmp2,chcom_c[y+26][0]);
\r
994 cmd=progmode(tmp2);
\r
996 if((cmd&512)!=0 && sm){
\r
997 msg(_("This function is not available except for Main Menu."));
\r
998 if(md<0){goto top;}
\r
1002 if((cmd&32)!=0 && chcom_c[y+26][1][0]!=0){
\r
1004 strcpy(path2,rcp_path);
\r
1006 edit_scr=ew;noed_cls_t();noed_cls();edit_scr=0;
\r
1008 if(sm==2){fsel(tmp1,path2,y+64+(ew&1)*0x200+26);
\r
1009 }else{fsel(tmp1,path2,y+64);}
\r
1010 if( es==0 && tmp1[0]!=0 ){
\r
1012 strcat(tmp0,path2);strcat(tmp0,tmp1);
\r
1014 if(es!=0){goto redraw;}
\r
1018 if(rcp_file[0]!=0){
\r
1019 strcpy(tmp1,rcp_file);
\r
1020 if(chcom_c[y+26][1][0]!=0){
\r
1021 strmfe(tmp1,tmp1,chcom_c[y+26][1]);
\r
1024 strcat(tmp0,rcp_path);strcat(tmp0,tmp1);
\r
1029 edit_scr=ew;noed_cls_t();noed_cls();edit_scr=0;
\r
1030 ex=paraexe(tmp0,ad,ew,sm,cmd);break;}
\r
1036 if(ke==27){edit_scr=ew;noed_cls_t();noed_cls();edit_scr=0;}
\r
1043 /***************************/
\r
1044 int option2(int md,int sm,int ad,int ew)
\r
1048 char path2[128],tmp0[128],tmp1[128],tmp2[128];
\r
1051 if( chcom_s[y][1][0]!=0 ){
\r
1052 strcpy(tmp0,chcom_s[y][1]);
\r
1053 strcpy(tmp2,chcom_c[y][0]);
\r
1055 cmd=progmode(tmp2);
\r
1057 if((cmd&512)!=0 && sm){
\r
1058 msg(_("This function is not available except for Main Menu."));
\r
1062 if((cmd&32)!=0 && chcom_c[y][1][0]!=0){
\r
1064 strcpy(path2,rcp_path);
\r
1066 if(sm==2){fsel(tmp1,path2,y+64+(ew&1)*0x200);
\r
1067 }else{fsel(tmp1,path2,y+64);}
\r
1069 if( es==0 && tmp1[0]!=0 ){
\r
1071 strcat(tmp0,path2);strcat(tmp0,tmp1);
\r
1076 if(rcp_file[0]!=0){
\r
1077 strcpy(tmp1,rcp_file);
\r
1078 if(chcom_c[y][1][0]!=0){
\r
1079 strmfe(tmp1,tmp1,chcom_c[y][1]);
\r
1082 strcat(tmp0,rcp_path);strcat(tmp0,tmp1);
\r
1086 if(tmp0[0]!=0){ex=paraexe(tmp0,ad,ew,sm,cmd);}
\r
1093 int paraexe(char *tmp0,int ad,int ew,int sm,int cmd)
\r
1096 char tmp1[256],tmp2[256];
\r
1097 int dlen=0,dadd=0,dlen2=0;
\r
1099 if( (cplen<0 && cpadd!=ad) && sm==2){
\r
1101 dlen=abs(dadd-ad);if(dadd>ad ){dadd=ad;}
\r
1103 }else{dlen=tr_len[track];}
\r
1108 while((a=tmp0[i++])!=0){
\r
1110 a=tmp0[i++];if(a==0){break;}
\r
1112 case 't':strcat(tmp1,nstr(track+1));break;
\r
1113 case 'm':strcat(tmp1,nstr(meas_no(ad)));break;
\r
1115 case 'o':strcat(tmp1,nstr(ad+44));break;
\r
1117 case 'u':strcat(tmp1,nstr(dadd+44));break;
\r
1118 case 'd':strcat(tmp1,nstr(dadd+dlen+40));break;
\r
1119 case 'l':strcat(tmp1,nstr(dlen2));break;
\r
1121 case 'w':strcat(tmp1,nstr(ew));break;
\r
1122 case 's':strcat(tmp1,nstr(sm));break;
\r
1124 default:tmp2[0]=a;tmp2[1]=0;strcat(tmp1,tmp2);break;
\r
1127 tmp2[0]=a;tmp2[1]=0;strcat(tmp1,tmp2);
\r
1133 if((cmd&0x2000)==0){bufset();}else{bufset_trk(track);}
\r
1135 if((cmd&8)!=0){all_note_off(2);}
\r
1137 C_CURON();C_FNKMOD(0);FNCKEYST(0,(char*)fnckey0);
\r
1138 C_WINDOW(0,31);B_COLOR(3);B_LOCATE(0,0);
\r
1140 if((cmd&0x400)==0){B_CLR_AL();dpl(0);tpl(0);}
\r
1141 else{B_LOCATE(0,1);}
\r
1143 if((cmd&0x800)!=0 && sm==2){if(grpmode){grpmode=0;/*noed_cls();*/}}
\r
1145 im=(B_SFTSNS()&4096);
\r
1147 if(im){LEDMOD(4,1);}else{LEDMOD(4,0);}
\r
1149 if(ex==0 && sm==2){cplen=0;}
\r
1151 C_FNKMOD(3);fnc_dis(-1);FNCKEYST(0,(char*)fnckey1);
\r
1152 if((cmd&16)!=0){(*rcd->end)();}
\r
1153 if((cmd&128)!=0 || (ex!=0 && (cmd&0x400)==0)){key_pause();}
\r
1154 B_COLOR(3);C_CUROFF();
\r
1156 if((cmd&0x400)==0){B_CLR_AL();CRTMOD(16+256);OnGraphic();}
\r
1158 if(sm<2){home2(0);}else{home2(512);}
\r
1159 WINDOW(0,0,1023,1023);
\r
1161 ex=0;if(point(0,0)!=8||(cmd&0x100)!=0){sinit();ex=1;}
\r
1162 if((cmd&(2+4))!=0){
\r
1164 if((cmd&0x2000)==0){bufload();form2();
\r
1165 }else{bufload_trk(track);trk_lin(track,-1,0);}
\r
1167 if((cmd&2)!=0){timtra();}
\r
1169 if(ex!=0){form();}
\r
1172 rcd->data_valid=0;
\r
1176 /***************************/
\r
1177 int progmode(char *tmp2)
\r
1184 while((a=tmp2[i++])!=0){
\r
1185 if(a=='B'){cmd|=0x0001;} /*bufset*/
\r
1186 if(a=='L'){cmd|=0x0002;} /*bufread*/
\r
1187 if(a=='N'){cmd|=0x0004;} /*bufread non cm6/gsd*/
\r
1188 if(a=='O'){cmd|=0x0008;} /* 実行前に演奏を停止する*/
\r
1189 if(a=='E'){cmd|=0x0010;} /* 実行後に演奏を停止する*/
\r
1190 if(a=='S'){cmd|=0x0020;} /*select*/
\r
1191 if(a=='F'){cmd|=0x0040;} /*ext change*/
\r
1192 if(a=='P'){cmd|=0x0080;} /*pause*/
\r
1193 if(a=='G'){cmd|=0x0100;} /*rewrite*/
\r
1194 if(a=='M'){cmd|=0x0200;} /*main only*/
\r
1195 if(a=='U'){cmd|=0x0400;} /*not screen clr*/
\r
1196 if(a=='R'){cmd|=0x0800;} /*not edit window clr*/
\r
1198 /*if(a=='C'){cmd|=0x1000;}*/ /*command.x*/
\r
1199 if(a=='T'){cmd|=0x2000;} /*trk dataのみバッファアクセスする*/
\r
1204 /***************************/
\r
1207 B_COLOR(1);B_LOCATE(0,31);B_PRINT(_("Return to STed2 ! Press [RET]"));
\r
1208 while(inkey2()!=13){}
\r
1209 B_COLOR(1);B_LOCATE(0,31);B_PRINT(" ");
\r
1212 /***************************/
\r
1220 B_PRINT(_("? (Y/N)"));
\r
1223 if(ke==y || ke==tolower(y)||ke==13){ec= 1;break;}
\r
1224 if(ke==n || ke==tolower(n)){ec=-1;break;}
\r
1225 if(ke==27){break;}
\r
1231 /***************************/
\r
1234 rcp_dat();trk_dat();
\r
1237 /***************************/
\r
1240 fill(102,43,767,485,0);form();
\r
1243 /***************************/
\r
1246 fill(103,188,743,484,0);trk_dat();
\r
1249 /***************************/
\r
1254 CRTMOD(16);G_CLR_ON();WINDOW(0,0,1023,1023);home2(0);C_WINDOW(0,32);
\r
1255 B_CLR_AL();dpl(1);tpl(1);logo(0);logo(512);sdis2(30+9,0,module,22,15,8);
\r
1256 box(0,43,96,99,14,65535);
\r
1257 for(i=0;i<18;i++){sdis(1,112+i*21,menu1[i],8,15,8);}
\r
1260 /***************************/
\r
1264 fill(496,512,767,512+31,0);
\r
1265 fill(496,512,767,512+15,8);box(496,512,767,512+15,14,65535);
\r
1268 sdis2(0,y," FREE:",14,15,8);sdis2(15,y," USED:",14,15,8);
\r
1269 sdis2(30,y," TR.: 1",8,15,8);
\r
1270 fill(496,y,767,y+31,8);box(496,y,767,y+31,14,65535);
\r
1271 symbol(496+5,y+18,comment,1,1,0,15,0);
\r
1274 g_print(496+24,y+2,"STed v2.07 (c)1990-97 TURBO",15);
\r
1276 g_print(496+13,y+3,"・・・ ・・・m・1990-97・・・・",0);
\r
1277 g_print(496+12,y+2,"・・・ ・・・m・1990-97・・・・",15);
\r
1279 /* g_print(496 ,y+2,"・・・・・・・・ ・1990-97・・・・",15);*/
\r
1280 /* g_print(496+8 ,y+2,"・・・・・・・・ ・1990-97 TURBO",15);*/
\r
1282 /* JIS-[7621] SJIS-[EB9F]
\r
1283 ----------------------------------------------------------------
\r
1284 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
\r
1286 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
\r
1287 ----------------------------------------------------------------
\r
1288 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
\r
1290 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
\r
1291 ----------------------------------------------------------------
\r
1292 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
\r
1294 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・
\r
1295 ----------------------------------------------------------------
\r
1298 /***************************/
\r
1302 static short xpos[7]={163,195,227,259,291,589,637};
\r
1304 fill(103,189,120,484,8);
\r
1305 for(i=0;i<7;i++){line(xpos[i],171,xpos[i],484,14,65535);}
\r
1307 for(i=btrack;i<btrack+18;i++){trk_lin(i,-1,2);}
\r
1311 /***************************/
\r
1314 box(102,43,744,99-16,14,65535);
\r
1315 sdis(14,48,"MUSIC TITLE :",0,15,-1);sdis(14,64,"FILE NAME :",0,15,-1);
\r
1316 sdis(14+37,80-16,"/",0,15,-1);sdis(14+37+19,80-16,"/",0,15,-1);
\r
1318 box(102,106-16,424,164,14,65535);box(432,106-16,744,164,14,65535);
\r
1320 sdis(14, 96,"TEMPO :",0,15,-1); sdis(34, 96,"TIMEBASE :",0,15,-1);
\r
1321 sdis(14,112,"PLAY BIAS:",0,15,-1); /*midi thru*/
\r
1322 sdis(14,128,"KEY :",0,15,-1); /*sync mode*/
\r
1323 sdis(14,144,"BEAT : /",0,15,-1); sdis(34,144,"MIDI IN :",9,15,-1);
\r
1327 box(102,171,744,485,14,65535);
\r
1328 sdis(13,172,"TR MODE CH. ST+ K#+ RHY TRACK MEMO STEP TOTAL ST",80,15,14);
\r
1331 /***************************/
\r
1332 void rcp_dat2(int n,int m)
\r
1336 if(m==1){c1=0;c2=15;}else{c1=15;c2=0;}
\r
1339 /*if(n==0 || n<0){sdis2(28,48,mtitle,64,c1,c2);}*/
\r
1340 if(n==0 || n<0){sdis2(28,48,eucconv(mtitle),65,c1,c2);} /* code converted! */
\r
1341 if(n==1 || n<0){sdis2(28,64,rcp_file,22,c1,c2);}
\r
1342 if(n==2 || n<0){sdis2(28+25,64,cm6_file,12,c1,c2);sdis2(28+44,64,gsd_file,16,c1,c2);}
\r
1343 if(n==3 || n<0){vdis(25,96,mtempo,3,c1,c2);}
\r
1344 if(n==4 || n<0){i=pbias;if(i>127){i=i-256;}vdis(25,112,i,3,c1,c2);}
\r
1345 if(n==5 || n<0){sdis2(20,128,scale_str(bkey),13,c1,c2);}
\r
1346 if(n==6 || n<0){vdis(22,144,beat1,2,c1,c2);vdis(26,144,beat2,2,c1,c2);}
\r
1347 if(n==7 || n<0){vdis(45,96,tbase,3,c1,c2);}
\r
1348 if(n==8 || n<0){sdis2(44,144,mdinport(),8,c1,c2);}
\r
1351 /***************************/
\r
1354 int ke,sh,ex,cx=0,i=0,mm=0;
\r
1358 if(cx==0 && i==0){mm=3;}
\r
1362 if(cx==1 && i==0){mm=7;}
\r
1365 ke=inkey3();sh=ke>>8;ke=ke&0xff;
\r
1368 if( ke==27 ){break;}
\r
1372 B_LOCATE(25,6);ex=vinput(mtempo,0x803);
\r
1373 if(es==0 && ex>7 && ex<256 ){mtempo=ex;}
\r
1376 ex=pbias;if(ex>127){ex=ex-256;}
\r
1377 B_LOCATE(25,7);ex=vinput(ex,0x803);
\r
1378 if(ex>=-36 && ex<=36){
\r
1379 if(ex<0){ex=ex+256;}
\r
1380 if(es==0 && ex>=0 && ex<=255){pbias=ex;}
\r
1384 sdis2(20,128,"",13,0,7);
\r
1385 ex=scale_sel(20,8,bkey);
\r
1386 if(ex>=0){bkey=ex;}
\r
1389 B_LOCATE(22,9);ex=vinput(beat1,0x802);
\r
1390 if(es==0 && ex>0 && ex<=32){beat1=ex;}
\r
1391 B_LOCATE(26,9);ex=vinput(beat2,0x802);
\r
1392 if(es==0 && ex>1 && ex<=8){beat2=ex;}
\r
1395 B_LOCATE(45,6);ex=vinput(tbase,0x803);
\r
1396 if(es==0 && ex>=48 && ex<=480){tbase=ex;}
\r
1398 B_LOCATE(0,2);C_CLS_ED();
\r
1401 if( ke>='0' && ke<='9' ){
\r
1403 B_LOCATE(25,6);ex=vinput(ke-'0',0x403);
\r
1404 if(es==0 && ex>7 && ex<256 ){mtempo=ex;}
\r
1407 ex=pbias;if(ex>127){ex=ex-256;}
\r
1408 B_LOCATE(25,7);ex=vinput(ke-'0',0x403);
\r
1409 if(ex>=-36 && ex<=36){
\r
1410 if(ex<0){ex=ex+256;}
\r
1411 if(es==0 && ex>=0 && ex<=255){pbias=ex;}
\r
1415 B_LOCATE(22,9);ex=vinput(ke-'0',0x402);
\r
1416 if(es==0 && ex>0 && ex<=32){beat1=ex;}
\r
1417 B_LOCATE(26,9);ex=vinput(beat2,0x802);
\r
1418 if(es==0 && ex>1 && ex<=8){beat2=ex;}
\r
1421 B_LOCATE(45,6);ex=vinput(ke-'0',0x403);
\r
1422 if(es==0 && ex>=48 && ex<=480){tbase=ex;}
\r
1424 B_LOCATE(0,2);C_CLS_ED();
\r
1427 if( ke=='+' || ke=='>' || ke=='.' ){
\r
1429 if(sh&1){mtempo+=10;}else{mtempo++;}
\r
1430 if(mtempo>255){mtempo=255;}}
\r
1432 ex=pbias;if(ex>127){ex=ex-256;}
\r
1433 if(sh&1){ex+=12;}else{ex++;}
\r
1435 if(ex<0){ex=ex+256;}
\r
1439 if( mm==5 ){bkey++;if(bkey>31){bkey=0;}}
\r
1442 for(j=0;j<10;j++){
\r
1443 if(tbase<tbase_tbl[j]){tbase=tbase_tbl[j];break;}
\r
1447 if( ke=='-' || ke=='<' || ke==',' ){
\r
1449 if(sh&1){mtempo-=10;}else{mtempo--;}
\r
1450 if(mtempo<8){mtempo=8;}}
\r
1452 ex=pbias;if(ex>127){ex=ex-256;}
\r
1453 if(sh&1){ex-=12;}else{ex--;}
\r
1455 if(ex<0){ex=ex+256;}
\r
1459 if( mm==5 ){bkey--;if(bkey<0){bkey=31;}}
\r
1462 for(j=10-1;j>=0;j--){
\r
1463 if(tbase>tbase_tbl[j]){tbase=tbase_tbl[j];break;}
\r
1469 if( mm==3 ){mtempo=120;}
\r
1470 if( mm==4 ){pbias=0;}
\r
1471 if( mm==5 ){bkey=0;}
\r
1472 if( mm==6 ){beat1=4;beat2=4;}
\r
1473 if( mm==7 ){tbase=48;}
\r
1475 if( ke==0x0b ){i=0;}
\r
1477 if( ke==0x05 ){i--;if(i<0){i=3;}}
\r
1478 if( ke==0x18 ){i++;if(i>3){i=0;}}
\r
1479 if( ke==0x13 ){cx--;if(cx<0){cx=1;}}
\r
1480 if( ke==0x04 ){cx++;if(cx>1){cx=0;}}
\r
1484 /***************************/
\r
1487 static char tmp0[64];
\r
1491 if(rcd->rcd_type==4){strcpy(tmp0,"RS-232C");
\r
1493 if(rcd->rcd_type==3){strcpy(tmp0,"POLYPHON");
\r
1495 if(rcd->put_mode==2){
\r
1496 if(rcd->rcd_type==0){strcpy(tmp0,"RS-232C");
\r
1497 }else{strcpy(tmp0,"POLYPHON");}
\r
1498 }else{strcpy(tmp0,"CZ-6BM1");}
\r
1503 if ( midi_port_name[0] != 0 ) { /* Sep.02.1998 Daisuke Nagano */
\r
1504 a = strrchr( midi_port_name, '/' );
\r
1505 if ( a==NULL ) a=midi_port_name-1;
\r
1506 strncpy( tmp0, a+1, 63 );
\r
1508 strcpy( tmp0, "NoConnect" );
\r
1513 /***************************/
\r
1518 for(i=0;i<=15;i++){if(a==0){GPALET(i,0);}else{GPALET(i,palet_dat[i]);}}
\r
1521 /***************************/
\r
1526 for(i=1;i<=3;i++){if(a==0){TPALET(i,-2);}else{TPALET(i,palet_dat[i]);}}
\r
1529 /***************************/
\r
1530 void fonload(char *fi)
\r
1536 if(!(fp= fopen2(fi,"rb"))){
\r
1537 strcpy( tmp0, STED_DEFAULT_PATH );
\r
1538 strcat( tmp0, "/" );
\r
1539 strcat( tmp0, (strrchr(fi,'/')==NULL)?fi:(strrchr(fi,'/')+1) );
\r
1540 if (!(fp=fopen2( tmp0, "rb" ))) {
\r
1541 B_PRINT(fi);B_PRINT(_(": File not found.\n"));exit(1);
\r
1543 } /* Oct.13.1998 by Daisuke Nagano */
\r
1544 fread(dat,1,12*1024,fp);fclose(fp);
\r
1549 /***************************/
\r
1550 void fonread(unsigned char *buf)
\r
1554 struct X68_FNTBUF *fntb,buff;
\r
1557 for(i=0;i<94;i++){
\r
1558 FNTGET(8,0x7621+i,fntb);memcpy(&buf[i*32 ],fntb->buffer,32);
\r
1559 FNTGET(8,0x7721+i,fntb);memcpy(&buf[i*32+94*32],fntb->buffer,32);
\r
1563 /***************************/
\r
1564 void fonset(unsigned char *buf)
\r
1568 for(i=0;i<94;i++){
\r
1569 DEFCHR(8,0x7621+i,&buf[i*32 ]);
\r
1570 DEFCHR(8,0x7721+i,&buf[i*32+94*32]);
\r
1574 /***************************/
\r
1575 int option_read(char *env_option)
\r
1579 strcat(env_option," ");i=0;s=0;nn=0;
\r
1581 while(env_option[i]!=0){
\r
1582 if(env_option[i]==32){
\r
1584 env_opt[nn][s]=0;nn++;s=0;if(nn>31){break;}
\r
1587 env_opt[nn][s]=env_option[i];s++;
\r
1594 /***************************/
\r
1604 use=buff_size-buff_free;
\r
1605 SETBLOCK((void *)trk[0],use);
\r
1608 if(rc_path[0]!=0){strcpy(tmp0,rc_path);strcat(tmp0,cl);ec=child(tmp0);}
\r
1609 if(ec<0){ec=child(cl);}
\r
1611 buff_size=buff_max;
\r
1613 er=SETBLOCK((void *)trk[0],buff_size);
\r
1615 if(er>=0x81000000){
\r
1616 msg("トラックバッファが再確保出来ません。");
\r
1617 buff_size=er&0xfffffc;
\r
1618 if(er<0x82000000){goto realc;}
\r
1621 buff_free=buff_size-use;
\r
1631 /***************************/
\r
1632 void ErrorTrap(void)
\r
1635 fprintf(stderr,"ErrorTrap\n");
\r
1639 register int ErrCode asm(" d7");
\r
1641 if (((unsigned int)ErrCode >=0x1000) && ((unsigned int)ErrCode <= 0x7fff)) {
\r
1642 switch ( (unsigned int)ErrCode ) {
\r
1643 /*case 0x01:msg("無効なユニットを指定しました。");break;
\r
1644 case 0x02:msg("ドライブの準備ができていません。");break;
\r
1645 case 0x03:msg("無効なコマンドを指定しました。");break;*/
\r
1646 case 0x04:msg("CRCエラー");break;
\r
1647 case 0x05:msg("管理領域が異常です。");break;
\r
1648 case 0x06:msg("シークエラー");break;
\r
1649 case 0x07:msg("無効なメディアです。");break;
\r
1650 case 0x08:msg("セクタが見つかりません。");break;
\r
1651 case 0x0a:msg("書き込みエラー");break;
\r
1652 case 0x0b:msg("読み込みエラー");break;
\r
1653 case 0x0d:msg("ライトプロテクトされてます。");break;
\r
1654 case 0x0e:msg("書き込みが禁止されています。");break;
\r
1655 /*case 0x0f:msg("ファイル共有違反です。");break;*/
\r
1657 case 0x09:/*msg("プリンタオフライン");*/;
\r
1658 /*case 0x1f:msg("インタラプトが押されました。");*/
\r
1659 IJUMP_RTE();return;break;
\r
1661 IJUMP(ErrorTrap_Old);return;break;
\r
1663 /*bufset();IJUMP(ErrorTrap_Old);*/
\r
1665 (0);B_LOCATE(0,2);C_CLS_ED();fcloseall();
\r
1667 asm("andi.w #$d8ff,sr");
\r
1668 IJUMP((int)*com_sel);
\r
1670 IJUMP(ErrorTrap_Old);
\r
1676 /***************************/
\r