# 1 "main.cci"

# 1 "main.cci"
# 10 "main.cci"
char *SysMacro = 0;
char SYSMACRO_FN[12] = {'e','d','i','a','.','m','a','c','\0'};
char MACROKEY_EXPSEARCH_PATH[16] = {'E','x','p','_','s','e','a','r','c','h','_','p','a','t','h','\0'};
# 18 "lib.cci"
char *GetAsciiTime( char *s, long t )
{
int *tm;

tm = localtime( &t );
sprintf( s, "%04d/%02d/%02d %02d:%02d",
(tm[5])+1900, (tm[4])+1, (tm[3]),
(tm[2]), (tm[1]) );
return (s);
}

int TxdUsr_saveColTbl( char *txd )
{
int ret;
char *fdl;
char tmp[128], *fn;

if ( (fdl = FDL_open(0)) == 0 )
return ((-1));
FDL_set_wildcard( fdl, "*.tbl");
FDL_set_title( fdl, "SAVE COLOR TABLE");
ret = FDL_start(fdl);
fn = FDL_get_filename(fdl);
if ( ret != (0) || strlen(fn) == 0 )
{
FDL_close(fdl);
return ((-1));
}
FS_appendSnam( tmp, fn, ".tbl");
TXD_saveColTbl(txd,tmp);
FDL_close(fdl);

return ((0));
}
# 1 "pcl.cci"
int SetExpSearchPath()
{
char *p;
char buf[256];
char *tok, *terminator;

if ( (p = AMAC_getName( SysMacro, MACROKEY_EXPSEARCH_PATH )) == 0 )
{




return ((0));

}
terminator = ";";
strcpy(buf,p);

tok = strtok(buf, terminator);
while ( tok )
{
p = tok;
while ( isspace(*p) )
++p;
if ( *p )
AplPclSetPath( p );
tok = strtok(0, terminator);
}
return ((0));
}

int CCI_setExpSearchPath()
{
int ret;
char *p;
char buf[256];
char *dlg;

if ( (p = AMAC_getName( SysMacro, MACROKEY_EXPSEARCH_PATH )) == 0 )
buf[0] = '\0';
else
strcpy(buf,p);

dlg = DLG_getsOpen( (0x10010), (0x10010), 480,"セミコロン(;)で区切って複数指定できます。");
DLG_getsSetTitle( dlg, "EXP SEARCH PATH" );
ret = DLG_getsStart( dlg, 255, buf );
if ( ret > 0 && buf[0] )
{
AMAC_setKey( SysMacro, MACROKEY_EXPSEARCH_PATH, buf );
SetExpSearchPath();
}
DLG_getsClose(dlg);
return ((0));
}
# 5 "he386.cci"
char *_he386p_ = "he386p.exp";
char he386_option[256] = {0};

int he386_compile( char *pn )
{
int ret, drv;
char tmp[256], fn[256];


drv = toupper(pn[0]) - 'A';
FS_chdrv(drv);
FS_getDnamPath(tmp,pn);
FS_chdir(tmp);


AplDtaInit();
AplDtaSetStr( "$MainArg", "%s %s %s", _he386p_, he386_option, pn );

ret = AplPclExec( _he386p_, 4 );

FS_getFnam(fn,pn);
FS_appendSnam( fn, fn, ".mid" );
if ( FS_isFileExist(fn) > 0 )
MID_playStart( fn );

return ((0));
}

int he386_menu( char *pn )
{
int ret;
char tmp[256];
char *dlg;
char *mnu;
char *obj;
char *p;

if ( pn[0] == '\0' )
return ((0));

obj = MNU_alloc(3);
MNU_setObj(obj, 0, (2), 'O', "Option" , 0, 1, 0, 0);
MNU_setObj(obj, 1, (0), 0 , 0 , 0, 2, 0, 0);
MNU_setObj(obj, 2, (2), 'C', "Compile (normal)", 0, 3, 0, 0);

mnu = MNU_open( (0x10010), (0x10010), (1),
obj, "MML Compile" );

for(;;)
{
ret = MNU_start ( mnu );
switch ( ret )
{
case 1:
dlg = DLG_getsOpen( (0x10010), (0x10010), 320,
"HE386 のオプションパラメータを入力してください。");
DLG_getsSetTitle( dlg, "MML Compiler option parameter" );
strcpy( tmp, he386_option);
ret = DLG_getsStart( dlg, 255, tmp );
if ( ret >= 0 )
strcpy( he386_option, tmp );
DLG_getsClose(dlg);
break;

case 3:
he386_compile( pn );
goto _RET;
default:
goto _RET;
}
}

_RET:
MNU_close(mnu);
MNU_free(obj);
return ((0));
}
# 5 "cciexp.cci"
char *_cci_exp_ = "cci.exp";
char cci_cci_option[256] = {0};
char cci_usr_option[256] = {0};

int cci_call( char *pn )
{
int ret, drv;
char tmp[256], fn[256], exfn[256];
char *dlg;


drv = toupper(pn[0]) - 'A';
FS_chdrv(drv);
FS_getDnamPath(tmp,pn);
FS_chdir(tmp);


FS_getFnam(fn,pn);
FS_appendSnam( exfn, fn, "._ci" );
sprintf( tmp, "cpp -d__CCI__ %s %s", pn, exfn );
dlg = DLG_msgOpen( (0x10030), (0x10030),
80*6, 14*12, 1, 3, (0x1000|(((12)&15)<<4)|((7)&15)),
"CPP" );
if ( dlg )
{
DLG_msgSetConfig( dlg, 4, 6, 12 );
DLG_msgClear( dlg, -1 );
DLG_msgConsSet( dlg, 1, 15);
}
MOS_curDisp(2);
system( tmp );
MOS_curDisp(3);
if ( dlg )
{
DLG_msgPrintf(dlg,"\r\n***** COMPLETED *****\r\n");
DLG_msgConsEnd( dlg );
DLG_msgClose(dlg);
}


AplDtaInit();
AplDtaSetStr( "$MainArg", "%s %s %s -- %s", _cci_exp_, cci_cci_option, exfn, cci_usr_option );

ret = AplPclExec( _cci_exp_, 3 );

FS_getFnam(fn,pn);
FS_appendSnam( fn, fn, ".mid" );
if ( FS_isFileExist(fn) > 0 )
MID_playStart( fn );

return ((0));
}

int cci_call_menu( char *pn )
{
int ret;
char tmp[256];
char *dlg;
char *mnu;
char *obj;
char *p;

if ( pn[0] == '\0' )
return ((0));

obj = MNU_alloc(4);
MNU_setObj(obj, 0, (2), 'S', "System option", 0, 1, 0, 0);
MNU_setObj(obj, 1, (2), 'U', "User Option" , 0, 2, 0, 0);
MNU_setObj(obj, 2, (0), 0 , 0 , 0, 3, 0, 0);
MNU_setObj(obj, 3, (2), 'C', "Call CCI" , 0, 4, 0, 0);

mnu = MNU_open( (0x10010), (0x10010), (1),
obj, "CCI" );

for(;;)
{
ret = MNU_start ( mnu );
switch ( ret )
{
case 1:
dlg = DLG_getsOpen( (0x10010), (0x10010), 320,
"CCI のオプションパラメータを入力してください。");
DLG_getsSetTitle( dlg, "CCI system option parameter" );
strcpy( tmp, cci_cci_option);
ret = DLG_getsStart( dlg, 255, tmp );
if ( ret >= 0 )
strcpy( cci_cci_option, tmp );
DLG_getsClose(dlg);
break;

case 2:
dlg = DLG_getsOpen( (0x10010), (0x10010), 320,
"CCI のオプションパラメータを入力してください。");
DLG_getsSetTitle( dlg, "CCI user option parameter" );
strcpy( tmp, cci_usr_option);
ret = DLG_getsStart( dlg, 255, tmp );
if ( ret >= 0 )
strcpy( cci_usr_option, tmp );
DLG_getsClose(dlg);
break;

case 4:
cci_call( pn );
goto _RET;
default:
goto _RET;
}
}

_RET:
MNU_close(mnu);
MNU_free(obj);
return ((0));
}
# 11 "edi.cci"
char *EdiTbl_metakey[26] =
{
"$swave(note,cmd,len,Tn,wn,&,x,sp,ep,sin,amp,ang,spd,amp,sub)",
"$cho(note,len,n,x,sp,ep)",
"continue",
"#define\\t",
"#endif",
"fprintf(\x22",
"fgets(buf,len,fp);",
".mmltype\\tfb386\\n.fm\\t\\t\\tfmtone2\\n.pcm\\t\\tensam01\\n",
"#include\\t",
"#ifdef\\n#\\tdefine\\tEXT\\n#else\\n#\\tdefine\\tEXT\\textern\\n#endif\\n",
"iskanji\x28",



"/*************************************************************************\\n*\\n*************************************************************************/\\n",

"void\\tmain(int argc,char *argv[])\\n{\\t",
"NORMAL",
"if ( (fp = fopen(filename,\x22rb\x22))==NULL )\\n",
"printf(\x22",
"exit();",
"return",
"$slide(note,cmd,n,&,x,sp,ep)",
"typedef",
"unsigned",
"$vib(note,len,n,sin,sp,a,spd,ang)",
"$wave(note,cmd,n,&,sin,sp,a,spd,ang)",
"FALSE",
"TRUE",
"register"
};
# 49 "edi.cci"
int EdiUsr_sysInit()
{
int i;

EdiHistFlag = (1);
for ( i = 0; i < 26; ++i )
EdiMetaKeySet( 'A'+i, EdiTbl_metakey[i]);


TxdSetSearchPattern("NIFTY TITLE", "[0-9]..../[0-9].... ........  .* .*\\|[0-9]../[0-9]..   ...[0-9]....  .* .*" );
TxdSetSearchPattern("C FUNCTION" , "^[A-Za-z_].*[ \\t]*[a-zA-Z_].*(.*)" );
TxdSetSearchPattern("TITLE" ,
"^[ \\t]*[★☆●○◎■□◆◇・§]\\|^[ \\t]*[(（【《][ 0-9０-９]*[)）】》]" );
TxdSetSearchPattern("#ifdef〜else〜endif" ,
"^#[ \\t]*if\\|^#[ \\t]*else\\|^#[ \\t]*endif" );
return ((0));
}

int EdiUsr_sysTerm()
{
return ((0));
}
# 76 "edi.cci"
int EdiUsr_guideMsg()
{
int y, x1,y1,x2,y2;

x1 = EdiFr[0];
y1 = EdiFr[1];
x2 = EdiFr[2];
y2 = y1 + 14*2 - 1;

EdiFr[1] = y2 + 1;

DSP_writePage(0);
DSP_boxf(x1,y1,x2,y2,0,1);
y = y1 + 1;
DSP_putf12(x1,y,14,1,
" ^Y:行削除 ^T:左削除 ^U:右削除  ^A:１単語戻る ^F:１単語進む  ^W:１行上 ^Z:１行下  ^R:１頁上 ^C:１頁下 ");
y += 14;
DSP_putf12(x1,y,14,1,
" ^B:UNDO ^~B:REDO ^O:TAB･改行表\\示切替 ^Q:拡張1 ^K:拡張2 ^P:ﾎﾟｹｯﾄ ^L:行削除ﾊﾞｯﾌｧ･ﾍﾟｰｽﾄ ^J･G:ガイド･オフ");
return ((0));
}
# 104 "edi.cci"
int EdiUsr_openFunc( char *edi )
{
char *txd;
# 117 "edi.cci"
txd = EdiGetTxdPtr(edi);
TXD_cstSetKey( txd, (0x04)|(0x10)|0x4800 , (241), 0, "dup_line	行複写");
TXD_cstSetKey( txd, (0x10)|0x1D00, (241), 0, "template	テンプレート");

TXD_cstSetPfxKey( txd, (0x10)|0x1100 , 0x1200, (241), 0, "word_help	キーワード説明");
TXD_cstSetPfxKey( txd, (0x10)|0x2500 , 0x1200, (241), 0, "cut_word		１単語選択");
TXD_cstSetPfxKey( txd, (0x04)|(0x10)|0x2400 , 0x1700, (241), 0, "undo_info	UNDO/REDO情報の表\\示");
TXD_cstSetPfxKey( txd, (0x04)|(0x10)|0x2400 , 0x2C00, (241), 0, "clear_undo_buffer	撤回用バッファの削除");
TXD_cstSetPfxKey( txd, (0x10)|0x2500 , (0x04)|0x1400,
(241), 0, "auto_rect_edit	罫線内の矩形編集");
TXD_cstSetPfxKey( txd, (0x10)|0x1100 , 0x1200, (241), 0, "word_help	キーワード説明");
TXD_cstSetPfxKey( txd, (0x04)|(0x10)|0x3000 , 0x1500, (241), 0, "mml_toneGen	mml generate");
# 147 "edi.cci"
return ((0));


}
# 156 "edi.cci"
int EdiUsr_saveFunc( char *edi, char *fn )
{
return ((0));
}
# 165 "edi.cci"
int EdiUsr_quitFunc( char *edi )
{
return ((0));
}
# 174 "edi.cci"
int ediUsr_evtFunc( int evtNo, char *sbj )
{
return EDI_cmdJump( GetEvtSbjPtr(sbj), evtNo );
}
# 183 "edi.cci"
int EdiUsr_setPathname( char *edi, char *pn )
{
return ((0));
}

int EDI_menu_1( char *edi, int x, int y )
{
int ret;
char *mnu;
char *obj;
char *func;

func = "ediUsr_evtFunc";
obj = MNU_alloc(11);

MNU_setObj(obj, 0, (2), 'O', "File Open" , 0, (1101) ,func, edi );
MNU_setObj(obj, 1, (2), 'C', "File Close" , 0, (1102) ,func, edi );
MNU_setObj(obj, 2, (0), 0, 0 , 0, 0, 0, 0);
MNU_setObj(obj, 3, (2), 'W', "Write file" , 0, (1104) ,func, edi );
MNU_setObj(obj, 4, (2), 'R', "Read file" , 0, (1103) ,func, edi );
MNU_setObj(obj, 5, (2), 'U', "Update file" , 0, (1105) ,func, edi );
MNU_setObj(obj, 6, (2), 'F', "Change Filename", 0, (1106) ,func, edi );
MNU_setObj(obj, 7, (2), 'E', "Edit original" , 0, (1107),func, edi );
MNU_setObj(obj, 8, (0), 0, 0 , 0, 0, 0, 0);
MNU_setObj(obj, 9, (2), 'P', "UPdate all" , 0, (1110) ,func, edi );
MNU_setObj(obj,10, (2), 'N', "New window" , 0, (1108) ,func, edi );
mnu = MNU_open( x, y, (1), obj, "MENU1 (FILE)" );
# 225 "edi.cci"
ret = MNU_start ( mnu );
MNU_close(mnu);
MNU_free(obj);

return (ret);
}
# 236 "edi.cci"
int edi_evt_jump( int evtNo, char *sbj )
{
char *edi;
char *txd;
char *dlg;
int ret, ln;
char buf[16];

edi = GetEvtSbjPtr(sbj);
dlg = DLG_getsOpen( (0x10010), (0x10010), 320,

"Input line number ?"
# 251 "edi.cci"
);
DLG_getsSetTitle( dlg, "JUMP" );
buf[0] = '\0';
ret = DLG_getsStart( dlg, 15, buf );
if ( ret > 0 && (ln = atoi(buf)) > 0 )
{
txd = EdiGetTxdPtr(edi);
TXD_jumpLine( txd, ln - 1 );
}
DLG_getsClose(dlg);
return (0);
}
# 268 "edi.cci"
int _ediSetRplPtn( int evtNo, char *sbj )
{
char *edi;
char *txd;
char buf[256];

edi = GetEvtSbjPtr(sbj);
txd = EdiGetTxdPtr(edi);
memset( buf, 0, 256);
if ( TXD_getCutBuf(txd,buf,256) >= 0 )
TXD_setReplacePtn( txd, buf );

return (evtNo);
}
# 287 "edi.cci"
int _ediSetRplStr( int evtNo, char *sbj )
{
char *edi;
char *txd;
char buf[256];

edi = GetEvtSbjPtr(sbj);
txd = EdiGetTxdPtr(edi);
memset( buf, 0, 256);
if ( TXD_getCutBuf(txd,buf,256) >= 0 )
TXD_setReplaceStr( txd, buf );

return (evtNo);
}
# 306 "edi.cci"
int _ediSetSearch( int evtNo, char *sbj )
{
char *edi;
char *txd;
int len;
char buf[256];

edi = GetEvtSbjPtr(sbj);
txd = EdiGetTxdPtr(edi);
if ( (len = TXD_getCutBuf(txd,buf,256)) >= 0 )
TXD_setSearchPtn( txd, buf, len );

return (evtNo);
}
# 325 "edi.cci"
int EDI_menu_2( char *edi, int x, int y )
{
int ret;
char *mnu;
char *obj;

obj = MNU_alloc(13);

MNU_setObj(obj, 0, (2), 'F', "Find & jump", 0, (184) , 0, edi );
MNU_setObj(obj, 1, (2), 'S', "Search", 0, (180) , 0, edi );
MNU_setObj(obj, 2, (2), 'R', "Replace", 0, (190) , 0, edi );
MNU_setObj(obj, 3, (2), 'A', "Multi replace All", 0, (191) , 0, edi );
MNU_setObj(obj, 4, (2), '1', "Set repalce pattern", 0, 0, "_ediSetRplPtn", edi );
MNU_setObj(obj, 5, (2), '2', "Set repalce strings", 0, 0, "_ediSetRplStr", edi );
MNU_setObj(obj, 6, (2), '3', "Set search pattern", 0, 0, "_ediSetSearch", edi );
MNU_setObj(obj, 7, (0), 0, 0, 0, 0, 0, 0);
MNU_setObj(obj, 8, (2), 'J', "Jump", 0, 0, "edi_evt_jump" , edi );
MNU_setObj(obj, 9, (2), 'T', "Top of text", 0, (97) , 0, edi );
MNU_setObj(obj,10, (2), 'B', "Bottom of text", 0, (98) , 0, edi );
MNU_setObj(obj,11, (2), 'L', "Last touch", 0, (99) , 0, edi );
MNU_setObj(obj,12, (2), 'M', "Mark", 0, (1201) , 0, edi );
mnu = MNU_open( x, y, (1), obj, "MENU2 (EDIT)" );
# 364 "edi.cci"
ret = MNU_start ( mnu );
MNU_close(mnu);
MNU_free(obj);

if ( ret > 0 )
return EDI_cmdJump(edi,ret);
else
return (ret);
}
# 378 "edi.cci"
int EDI_menu_3( char *edi, int x, int y )
{
int ret;
char *mnu;
char *obj;
char *txd;
int md;
unsigned u[4];
char undoMsg[80], redoMsg[80];

txd = EdiGetTxdPtr(edi);

obj = MNU_alloc(12);
if ( TXD_getUndoInfo( txd, u ) == (0) && u[3] > 0 )
{
md = (2);

sprintf( undoMsg, "Undo (%4d)", u[3] );
# 399 "edi.cci"
} else
{
md = (2) | (0x80);

strcpy( undoMsg, "Undo");
# 407 "edi.cci"
}
MNU_setObj(obj, 0, md, 'U', undoMsg , 0, (141), 0, edi );

if ( TXD_getRedoInfo( txd, u ) == (0) && u[3] > 0 )
{
md = (2);

sprintf( redoMsg, "Redo (%4d)", u[3] );
# 418 "edi.cci"
} else
{
md = (2) | (0x80);

strcpy( redoMsg, "Redo");
# 426 "edi.cci"
}
MNU_setObj(obj, 1, md, 'R', redoMsg, 0, (142), 0, edi );

MNU_setObj(obj, 2, (0), 0, 0, 0, 0 , 0, 0);


MNU_setObj(obj, 3, (2), '1', "Split 1 left/right", 0, (1310), 0, edi );
MNU_setObj(obj, 4, (2), '2', "Split 2 up/down", 0, (1320), 0, edi );
MNU_setObj(obj, 5, (0), 0, 0, 0, 0, 0, 0);
MNU_setObj(obj, 6, (2), 'P', "Print CUT-BUFFER", 0, (1304), 0, edi );
MNU_setObj(obj, 7, (2), 'T', "Text printout", 0, (1330) , 0, edi );
MNU_setObj(obj, 8, (0), 0, 0, 0, 0, 0, 0);
MNU_setObj(obj, 9, (2), 'C', "Calculator", 0, (3041), 0, edi );
MNU_setObj(obj,10, (2), 'A', "Ascii code list", 0, (1301), 0, edi );
MNU_setObj(obj,11, (2), 'K', "Kanji code list", 0, (1302), 0, edi );
mnu = MNU_open( x, y, (1), obj, "MENU3 (UTILITY)" );
# 455 "edi.cci"
ret = MNU_start ( mnu );
MNU_close(mnu);
MNU_free(obj);

if ( ret > 0 )
return EDI_cmdJump(edi,ret);
else
return (ret);
}
# 469 "edi.cci"
int _ediSaveSetup( int evtNo, char *sbj )
{
char *edi;
char *txd;
char *fdl;
int ret;
char tmp[128], *fn;

edi = GetEvtSbjPtr(sbj);
txd = EdiGetTxdPtr(edi);

if ( (fdl = FDL_open(0)) == 0 )
return ((-1));
FDL_set_title( fdl,"SAVE SETUP");
FDL_set_wildcard( fdl, "*.kst" );
ret = FDL_start(fdl);
fn = FDL_get_filename(fdl);
if ( ret != (0) || strlen(fn) == 0 )
{
FDL_close(fdl);
return ((-1));
}
FS_appendSnam( tmp, fn, ".kst" );
EDI_saveKeySetup(edi,tmp);
FDL_close(fdl);

return ((0));
}


int _ediLoadSetup( int evtNo, char *sbj )
{
char *edi;
char *txd;
char *fdl;
int ret;
char tmp[128], *fn;

edi = GetEvtSbjPtr(sbj);
txd = EdiGetTxdPtr(edi);

if ( (fdl = FDL_open(0)) == 0 )
return ((-1));
FDL_set_title( fdl,"LOAD SETUP");
FDL_set_wildcard( fdl, "*.kst" );
ret = FDL_start(fdl);
fn = FDL_get_filename(fdl);
if ( ret != (0) || strlen(fn) == 0 )
{
FDL_close(fdl);
return ((-1));
}
FS_appendSnam( tmp, fn, ".kst" );
EDI_loadKeySetup(edi,tmp);
FDL_close(fdl);

return ((0));
}

int _ediCallCCI( int evtNo, char *sbj )
{
char *edi;
char *pn;

edi = GetEvtSbjPtr(sbj);
pn = ((edi)+(40));
cci_call_menu(pn);

return ((0));
}

int _ediCallHE386( int evtNo, char *sbj )
{
char *edi;
char *pn;

edi = GetEvtSbjPtr(sbj);
pn = ((edi)+(40));
he386_menu( pn );

return ((0));
}

int _ediCallGSPLAY( int evtNo, char *sbj )
{
AplDtaInit();
AplPclExec( "GSPLAY.EXP", 7 );

return ((0));
}

int _ediCallExpPath( int evtNo, char *sbj )
{
CCI_setExpSearchPath();
return ((0));
}
# 570 "edi.cci"
int EDI_menu_4( char *edi, int x, int y )
{
int ret;
char *mnu;
char *obj;

obj = MNU_alloc(10);

MNU_setObj(obj, 0, (2), 'A', "Alphabet buffer" , 0, (3000) , 0, edi );
MNU_setObj(obj, 1, (2), 'K', "Key customize" , 0, (2032) , 0, edi );
MNU_setObj(obj, 2, (2), 'S', "Save key setup data", 0, 0, "_ediSaveSetup" , edi );
MNU_setObj(obj, 3, (2), 'L', "Load key setup data", 0, 0, "_ediLoadSetup" , edi );
MNU_setObj(obj, 4, (0), 0 , 0 , 0, 0, 0 , 0);
MNU_setObj(obj, 5, (2), 'C', "CCI" , 0, 0, "_ediCallCCI" , edi );
MNU_setObj(obj, 6, (2), 'M', "MML Compile" , 0, 0, "_ediCallHE386" , edi );
MNU_setObj(obj, 7, (2), 'G', "GSPLAY" , 0, 0, "_ediCallGSPLAY" , edi );
MNU_setObj(obj, 8, (0), 0 , 0 , 0, 0, 0 , 0);
MNU_setObj(obj, 9, (2), 'P', "EXP search path" , 0, 0, "_ediCallExpPath", edi );
mnu = MNU_open( x, y, (1), obj, "MENU4 (OTHER)" );
# 603 "edi.cci"
ret = MNU_start ( mnu );
MNU_close(mnu);
MNU_free(obj);

if ( ret > 0 )
return EDI_cmdJump(edi,ret);
else
return (ret);
}


int EDI_menu_5( char *edi ) { return ((-1)); }
int EDI_menu_6( char *edi ) { return ((-1)); }
int EDI_menu_7( char *edi ) { return ((-1)); }
int EDI_menu_8( char *edi ) { return ((-1)); }

int _ediSaveColTbl( int evtNo, char *sbj )
{
char *edi;
char *txd;

edi = GetEvtSbjPtr(sbj);
txd = EdiGetTxdPtr(edi);
TxdUsr_saveColTbl( txd );
return ((0));
}
# 634 "edi.cci"
int EDI_setup2( char *edi )
{
int ret;
char *mnu;
char *obj;

obj = MNU_alloc(2);

MNU_setObj(obj, 0, (2), 'C' , "Change color table", 0, (1910) , 0 , edi );
MNU_setObj(obj, 1, (2), 'S' , "Save color table" , 0, 0 , "_ediSaveColTbl", edi );
mnu = MNU_open( (0x10020), (0x10020),
(1), obj, "SETUP2" );
# 653 "edi.cci"
ret = MNU_start( mnu );
MNU_close(mnu);
MNU_free(obj);

if ( ret > 0 )
return EDI_cmdJump(edi,ret);
else
return (ret);
}
# 667 "edi.cci"
int TxdUsr_cut_word(char *txd )
{
if ( _getByte((txd)+(682)) != 0 )
return (0);
TXD_cmdJump( txd, (161) );
TXD_cmdJump( txd, (95) );
TXD_cmdJump( txd, (163) );
return ((0));
}
# 681 "edi.cci"
int TxdUsr_dup_line( char *txd )
{
if ( _getByte((txd)+(682)) != 0 )
return (0);
TXD_cmdJump( txd, (85) );
TXD_cmdJump( txd, (171) );
TXD_cmdJump( txd, (82) );
TXD_cmdJump( txd, (172));

return ((0));
}

int _txd_printUndoInf( char *dlg, int *ubuf )
{
DLG_msgPrintf(dlg,"  最大バッファサイズ %8d bytes\r\n", ubuf[0] );
DLG_msgPrintf(dlg,"  使用バッファサイズ %8d bytes\r\n", ubuf[1] );
DLG_msgPrintf(dlg,"  最大回数           %8d 回\r\n" , ubuf[2] );
DLG_msgPrintf(dlg,"  現在有効数         %8d 回" , ubuf[3] );
}
# 705 "edi.cci"
int TxdUsr_undo_info( char *txd )
{
char *dlg;
int ch, x, y;
int u[4];
unsigned ec;

DSP_writePage(1);
dlg = DLG_msgOpen( (0x10020),(0x10020),
8*38,16*10,1,3,(0x1000|(((12)&15)<<4)|((7)&15)),
"UNDO/REDO BUFFER INFORMATION");
if ( dlg == 0 )
return ((-1));
DLG_msgClear( dlg, -1 );

if ( TXD_getUndoInfo( txd, u ) == (0) )
{
DLG_msgPuts( dlg,"- UNDO -\r\n" );
_txd_printUndoInf( dlg, u );
if ( TXD_getRedoInfo( txd, u ) == (0) )
{
DLG_msgPuts( dlg,"\r\n- REDO -\r\n" );
_txd_printUndoInf( dlg, u );
} else
{
DLG_msgPuts(dlg,"\r\n\n　REDO機能\は使用されていません。\r\n" );
}
} else
{
DLG_msgPuts(dlg,"\r\n　UNDO機能\は使用されていません。\r\n" );
}

while ( 1 )
{
ch = EVT_getkey(&ec);
if ( ch != 0xFFFF || EVT_mos_pget(&x,&y) )
break;
EVT_idl();
}
DLG_msgClose(dlg);
EVT_mos_waitBO();

return ((0));
}
# 754 "edi.cci"
int TxdUsr_clear_undo_buffer( char *txd )
{
TXD_undo_freeAll( txd );
return ((0));
}
# 764 "edi.cci"
int _txd_isRectCha(int ch)
{
switch ( ch )
{
case 0x84A1:
case 0x84A4:
case 0x84A5:
case 0x84A3:
case 0x84A2:
case 0x84A7:
case 0x84A8:
case 0x84A6:
case 0x84A9:
return (0);
case 0x84A0:
return (1);
case 0x849F:
return (2);

case 0x84AC:
case 0x84AD:
case 0x84AE:
case 0x84AF:
case 0x84B0:
case 0x84B1:
case 0x84B2:
case 0x84B3:
case 0x84B4:
return (0);
case 0x84AB:
return (1);
case 0x84AA:
return (2);

case 0x84CC:
case 0x84CD:
case 0x84CE:
case 0x84CF:
case 0x84D0:
case 0x84D1:
case 0x84D2:
case 0x84D3:
case 0x84D4:
return (0);
case 0x84CB:
return (1);
case 0x84CA:
return (2);

default:
return (-1);
}
}
# 822 "edi.cci"
int TxdUsr_auto_rect_edit( char *txd )
{
int saveLnL;
int saveOfs;
int typ, x, y;
int x1, y1, x2, y2;
int pos1LnL, pos1Ofs;
int pos2LnL, pos2Ofs;


saveLnL = _getDword((txd)+(652));
saveOfs = _getDword((txd)+(664));
if ( saveLnL == 0 || _getDword((txd)+(648)) == 0 || _getDword((txd)+(672)) == 0 )
return ((0));
if ( _txd_isRectCha(TXD_getch(txd)) >= 0 )
return ((0));


for(;;)
{
TXD_cmdJump(txd,(83));
typ = _txd_isRectCha(TXD_getch(txd));
if ( typ == (1) )
{
x1 = _getDword((txd)+(672));
break;
} else if ( _getDword((txd)+(672)) == 0 )
goto _ERR;
}


for(;;)
{
TXD_cmdJump(txd,(81));
x = _getDword((txd)+(672));
if ( x != x1 )
goto _ERR;
typ = _txd_isRectCha(TXD_getch(txd));
if ( typ == (0) )
{
y1 = _getDword((txd)+(656));
break;
} else if ( typ != (1) )
goto _ERR;
}

pos1LnL = _getDword((txd)+(652));
pos1Ofs = _getDword((txd)+(664));


for(;;)
{
TXD_cmdJump(txd,(82));
x = _getDword((txd)+(672));
if ( x != x1 )
goto _ERR;
typ = _txd_isRectCha(TXD_getch(txd));
if ( typ == (0) )
{
y2 = _getDword((txd)+(656));
break;
} else if ( typ != (1) )
goto _ERR;
}


for(;;)
{
TXD_cmdJump(txd,(84));
y = _getDword((txd)+(656));
if ( y != y2 )
goto _ERR;
typ = _txd_isRectCha(TXD_getch(txd));
if ( typ == (0) )
{
x2 = _getDword((txd)+(672));
break;
} else if ( typ != (2) )
goto _ERR;
}

if ( x1 >= x2 || y1 >= y2 )
goto _ERR;

pos2LnL = _getDword((txd)+(652));
pos2Ofs = _getDword((txd)+(664));

TXD_jumpPos( txd, pos1LnL, pos1Ofs );
TXD_cmdJump(txd,(84));
TXD_cmdJump(txd,(82));
TXD_cmdJump(txd,(231));

TXD_jumpPos( txd, pos2LnL, pos2Ofs );
TXD_cmdJump(txd,(81));
TXD_cmdJump(txd,(232));

return ((0));

_ERR:
TXD_jumpPos( txd, saveLnL, saveOfs );
return ((0));
}
# 934 "edi.cci"
int TxdUsr_form_1( char *txd )
{
char *edi;

edi = _getDword((txd)+(84));
_setByte((edi)+(32),(0));

_setByte((txd)+(369),(0));
_setByte((txd)+(370),(1));
_setByte((txd)+(371),(1));
_setByte((txd)+(376),(0));
_setByte((txd)+(373),(1));
_setByte((txd)+(374),(1));
_setByte((txd)+(375),(0));
_setDword((txd)+(560),(6));
_setDword((txd)+(564),(12));
_setDword((txd)+(576),(256));
_setDword((txd)+(588),(4));

TXD_chgSize(txd);

return ((0));
}
# 962 "edi.cci"
int TxdUsr_form_2( char *txd )
{
char *edi;

edi = _getDword((txd)+(84));
_setByte((edi)+(32),(0));

_setByte((txd)+(369),(1));
_setByte((txd)+(370),(0));
_setByte((txd)+(371),(1));
_setByte((txd)+(376),(1));
_setByte((txd)+(373),(1));
_setByte((txd)+(374),(1));
_setByte((txd)+(375),(0));
_setDword((txd)+(560),(8));
_setDword((txd)+(564),(16));
_setDword((txd)+(576),(38));
_setDword((txd)+(588),(2));

TXD_chgSize(txd);

return ((0));
}
# 5 "edimml.cci"
int mml_tone_gen( char *txd, char *name )
{
char tmp[256];

TXD_setBuf( txd, 0, 2, "\r\n");

sprintf( tmp, "#define\tA_%s\t$TONE_MODIFY(64,64,64, 64,64, 64,64,64)\r\n", name );
TXD_setBuf( txd, 0, strlen(tmp), tmp);

sprintf( tmp, "#define\tF_%s\t$INSTFILTER(off:0,off:0,rnd:-1/1)\r\n", name );
TXD_setBuf( txd, 0, strlen(tmp), tmp);

sprintf( tmp, "#define\tT_%s\t$F_%s() $INSTMAC(  0, 40, 80, 14,100, 0, 0,12) $A_%s()\r\n", name, name, name );
TXD_setBuf( txd, 0, strlen(tmp), tmp);

sprintf( tmp, "#define\tD_%s\t?(delay:*0..8)\r\n", name );
TXD_setBuf( txd, 0, strlen(tmp), tmp);

sprintf( tmp, "#define\tO_%s\to4\r\n", name );
TXD_setBuf( txd, 0, strlen(tmp), tmp);

sprintf( tmp, "#define\tG_%s\tq92 ?#(gate:*-16..0)\r\n", name );
TXD_setBuf( txd, 0, strlen(tmp), tmp);

sprintf( tmp, "#define\tC_%s\tv100 x127 i0 m0 p0\r\n", name );
TXD_setBuf( txd, 0, strlen(tmp), tmp);

sprintf( tmp, "#define\t  %s\t$D_%s() $O_%s() $C_%s() $G_%s() $GenPin()\r\n", name, name, name, name, name );
TXD_setBuf( txd, 0, strlen(tmp), tmp);

TXD_scnFlush( txd );
return ((0));
}

int TxdUsr_mml_toneGen( char *txd )
{
int ret;
char *dlg;
char name[128];

DSP_writePage(1);
dlg = DLG_getsOpen( (0x10010), (0x10010), 320,
"音色マクロ名を入力してください。");
DLG_getsSetTitle( dlg, "MML GENERATE" );
name[0] = '\0';
ret = DLG_getsStart( dlg, 127, name );
if ( ret > 0 && name[0] != '\0' )
{
mml_tone_gen( txd, name );
}
DLG_getsClose(dlg);
return (0);
}
# 5 "ediwhlp.cci"
char WdHlpPath[128];
char WdHlpFn[128];
char WdHlpIdxFn[128];




int WdHelp( char *name )
{
int ch, i, ret;
char *fp, *idxFp;
char *s, buf[(512)];
char key[(16)+4];
long fpos;
int x0, y0;
char *dlg;
char *txtPtr;

x0 = y0 = (0x10030);
txtPtr = 0;
DSP_writePage(1);
if ( WdHlpPath[0] == '\0' )
strcpy( WdHlpPath, AplGetStartPath() );
sprintf( WdHlpFn , "%sEdiHelp.whf", WdHlpPath );
sprintf( WdHlpIdxFn, "%sEdiHelp.whi", WdHlpPath );

if ( (fp = fopen(WdHlpFn,"rb")) == 0 )
{
DLG_tmpMsgTime( (0x10020), (0x10020),
1, 3, (0x1000|(((10)&15)<<4)|((7)&15)),
3, " %s : \n  File open error!! ", WdHlpFn );
return ((-1));
}

if ( (idxFp = fopen(WdHlpIdxFn,"rb")) == 0 )
{


dlg = DLG_msgOpen(x0,y0, 8*40,16*8, 1,3,12,
"MAKE INDEX FILE for WORD HELP" );
if ( dlg == 0 )
{
fclose(fp);
return ((-1));
}
DLG_msgClear( dlg, -1 );
DLG_msgPrintf(dlg,"インデックスファイルを作成します。\r\n" );

if ( (idxFp = fopen(WdHlpIdxFn,"wb")) == 0 )
{
DLG_msgPrintf(dlg,"File open errro!! (%s)\r\n", WdHlpIdxFn );
DLG_msgClose(dlg);
fclose(fp);
return ((-1));
}

for (;;)
{
fpos = ftell(fp);
if ( fgets(buf,(512),fp) == 0 )
break;
s = buf;
if ( *s != '.' )
continue;
++s;
while ( isspace(*s) )
++s;
memset( key, '\0', 17 );
for ( i = 0; i < (16); ++i )
{
ch = *s; ++s;
if ( isdigit(ch) == 0 && isalpha(ch) == 0 && ch != '_' )
break;
key[i] = ch;
}
if ( key[0] == '\0' )
continue;
DLG_msgPrintf(dlg,"fpos = %6ld : %s\r\n", fpos, key );
fwrite(&fpos, 4,1,idxFp);
fwrite( key,(16),1,idxFp);
}
DLG_msgClose(dlg);
fclose(idxFp);
if ( (idxFp = fopen(WdHlpIdxFn,"rb")) == 0 )
{
fclose(fp);
return ((-1));
}
}

ret = 0;
for(;;)
{
if ( fread(&fpos,4,1,idxFp) < 1 )
{
ret = -1;
break;
}
if ( fread(key,(16),1,idxFp) < 1 )
{
ret = -1;
break;
}
if ( strncmp( name, key, (16)) == 0 )
break;
}
fclose(idxFp);
if ( ret )
{
DLG_tmpMsgTime( (0x10020), (0x10020),
1, 3, (0x1000|(((10)&15)<<4)|((7)&15)),
3, "  %s : \n  Pattern not found!! ", name );
fclose(fp);
return ((-1));
}
fseek(fp,fpos,(0));
fgets(buf,(512),fp);
while ( fgets(buf,(512),fp) != 0 )
{
if ( buf[0] == '.' )
break;
txtPtr = DLG_txtSetLinBuf( txtPtr, 8, 80, "%s", buf );
}
fclose(fp);

if ( (dlg = DLG_txtOpen(x0,y0,80,20,txtPtr,0)) == 0 )
{
DLG_txtFreeLinBuf( txtPtr );
return ((-1));
}
DLG_txtSetTitle( dlg, "EDI WORD HELP" );
DLG_txtSetGuideMsg( dlg, "Function : %s", name );
DLG_txtStart( dlg );
DLG_txtClose( dlg );
DLG_txtFreeLinBuf( txtPtr );

return ((0));
}
# 148 "ediwhlp.cci"
int TxdUsr_word_help( char *txd )
{
int ret, ch, len;
char word[(16)+4];
unsigned int curLnL, curOfs;
char *dlg;

if ( _getByte((txd)+(682)) != 0 )
return (0);


curLnL = _getDword((txd)+(652));
curOfs = _getDword((txd)+(664));

if ( (ch = TXD_getch(txd)) > 0 && ch < 256 && (isalpha(ch) || ch == '_') )
{
len = 0;
while( len < (16) )
{
ch = TXD_getch(txd);
TXD_cmdJump( txd, (84) );
if ( isalpha(ch) || ch == '_' )
{
word[len++] = ch;
} else
break;
}
word[len] = '\0';
TXD_jumpPos( txd, curLnL, curOfs );
if ( len == 0 )
return ((0));
} else
word[0] = '\0';

DSP_writePage(1);
dlg = DLG_getsOpen( (0x10010), (0x10010), 320,
"検索パターンを入力してください。" );
DLG_getsSetTitle( dlg, "PATTERN" );
ret = DLG_getsStart( dlg, (16), word );
DLG_getsClose(dlg);
if ( ret <= 0 )
return (0);

WdHelp( word );

return (0);
}
# 6 "editmp.cci"
char *_ediTmp = 0;

int _ediTmpData_open()
{
char tmp[256];

if ( _ediTmp == 0 )
{
if ( (_ediTmp = AMAC_allocWork(0)) == 0 )
return ((-1));
sprintf( tmp,"%s%s", AplGetStartPath(), "editmp.tbl" );
AMAC_load( _ediTmp, tmp );
}
return ((0));
}
# 26 "editmp.cci"
int TxdUsr_template( char *txd )
{
char word[256], tmp[4];
int ch, len;
unsigned int curLnL, curOfs, lnL;
char *s;

if ( _ediTmpData_open() )
return ((-1));
if ( _getByte((txd)+(682)) != 0 )
return (0);


curLnL = _getDword((txd)+(652));
if ( (curOfs = _getDword((txd)+(664))) == 0 )
return ((0));

TXD_cmdJump( txd, (96) );
if ( _getDword((txd)+(652)) < curLnL )
TXD_cmdJump( txd, (84) );
if ( (ch = TXD_getch(txd)) < 0 || (isalpha(ch) == 0 && ch != '_') )
{
TXD_jumpPos( txd, curLnL, curOfs );
return ((0));
}

len = 0;
while( len < 255 )
{
ch = TXD_getch(txd);
TXD_cmdJump( txd, (84) );
if ( isalpha(ch) || ch == '_' )
{
word[len++] = ch;
} else
break;
}
word[len] = '\0';
TXD_jumpPos( txd, curLnL, curOfs );
if ( len == 0 )
return ((0));

if ( (s = AMAC_getName( _ediTmp, word )) == 0 )
return ((0));

while ( *s )
{
ch = (*s) & 0xFF;
++s;
switch ( ch )
{
case '\x02':
TXD_cmdJump( txd, (85) );
break;
case '\x06':
TXD_cmdJump( txd, (86) );
break;
case '\x08':
TXD_cmdJump( txd, (122) );
break;
case '\n':
TXD_cmdJump( txd, (42) );
break;
case '\x0B':
TXD_jumpPos( txd, curLnL, curOfs );
break;
case '\x1C':
TXD_cmdJump( txd, (84) );
break;
case '\x1D':
TXD_cmdJump( txd, (83) );
break;
case '\x1E':
TXD_cmdJump( txd, (81) );
break;
case '\x1F':
TXD_cmdJump( txd, (82) );
break;
case '\x7F':
TXD_cmdJump( txd, (121) );
break;

default:
if ( iskanji(ch) && iskanji2(*s) )
{
tmp[0] = ch;
tmp[1] = *s; ++s;
tmp[2] = '\0';
TXD_setBuf( txd, 0, 2, tmp );
} else
{
tmp[0] = ch;
tmp[1] = '\0';
TXD_setBuf( txd, 0, 1, tmp );
}
break;
}
}
return ((0));
}
# 22 "main.cci"
char *WildCardTbl[4] =
{
"*.*" ,
"*.doc *.txt *.man",
"*.asm *.c   *.cci *.h",
"*.mml *.h   *.def"
};
# 50 "main.cci"
int EDIA_start()
{
int i;
char tmp[256];


if ( (SysMacro = AMAC_allocWork(0)) != 0 )
{
sprintf( tmp, "%s%s", AplGetStartPath(), SYSMACRO_FN );
AMAC_load( SysMacro, tmp );
GetAsciiTime( tmp, time(0) );
AMAC_setKey( SysMacro, "Startup_time", tmp );
}


for ( i = 0 ; i < 4; ++i )
FdlSetWildCardList( WildCardTbl[i] );
SetExpSearchPath();
# 73 "main.cci"
return (0);
}
# 80 "main.cci"
int EDIA_term()
{
char tmp[256];

if ( SysMacro )
{
GetAsciiTime( tmp, time(0) );
AMAC_setKey( SysMacro, "Exit_time", tmp );

sprintf( tmp, "%s%s", AplGetStartPath(), SYSMACRO_FN );
AMAC_save( SysMacro, tmp, "System macro" );
}
return (0);
}
