home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 5
/
FREESOFT.BIN
/
mopterm
/
fapx405b
/
fapxmain.plt
< prev
next >
Wrap
Text File
|
1992-08-19
|
17KB
|
616 lines
/************************************************************************
* *
* nifty Full Auto Pilot eXtended V4 *
* *
* All Right Reserved, Copyright(c) Yama-chan 1991-1992 *
* (Hiroaki Yamada NIFTY-ID PEE01244) *
* All Right Reserved, Copyright(c) 北狐 1991 *
* (Yuse Okabe NIFTY-ID NAH01244) *
* All Right Reserved, Copyright(c) モップ 1991 *
* (Masahiro Kezuka NIFTY-ID PFF00570) *
* All Right Reserved, Copyright(c) るぱん 1991 *
* (Kunio Yamaguchi NIFTY-ID MHB01736) *
* All Right Reserved, Copyright(c) -なる- 1992 *
* (Tetsuo Hayakawa NIFTY-ID PGA03316) *
* *
*************************************************************************
/************************************************************************
* *
* 更新履歴 *
* *
* v2.02 1991.01.05 original made by 北狐 *
* v2.改 1991.02.02 MREADコマンド対応他 by Yama-chan *
* v3.00 1991.02.23 MOPTERM v0.98対応他 *
* (途中省略) *
* v4.00a 1991.08.15 対話型セットアップ機能を始めとする大幅変更 *
* (途中省略) *
* v4.01a 1991.08.31 ログ参照機能追加 *
* (途中省略) *
* v4.02a 1991.10.17 ファイル操作機能追加 *
* (途中省略) *
* v4.03a 1991.11.25 ログ参照機能にコメント作成機能追加 *
* (途中省略) *
* v4.04a 1992.01.15 ファイル操作機能にNAPLPSファイル表示機能追加 *
* (途中省略) *
* v4.05a 1992.04.12 MOPTERM v2.02対応(plane文の採用) *
* (FAPXVIEW.PLP,FAPXUSET.PLP,FAPXDSET.PLP)*
* lcx.exeをtxf.exe -lcxに変更 *
* バグ修正(ルートディレクトリの場合のログ参照) *
* ファイル操作メニュー体系変更 *
* ファイル操作にEOFコード除去機能追加 *
* 今週のお知らせを読む処理を追加 *
* ログイン後FAPXを終了するメニューを追加 *
* 異常時の強制切断処理変更 *
* v4.05b 1992.04.14 ログ参照機能からのコメント作成処理変更 *
* バグ修正(異常時強制切断処理) *
* *
*************************************************************************/
/* FAPXのV/L */
%VerLev {4.05b};
/************************************************************************
* 定数・変数領域の指定 *
*************************************************************************/
/* ID & PASSWORD */
var ID [8];
var PassWord[8];
/* 電話番号 */
var ROAD1 [20];
var ROAD2 [20];
/* モデムコマンド及び通信速度 */
var MODEM [40];
var DIAL [1];
/* ディレクトリ */
var TEMP [64];
var LOG [64];
var SOUND [64];
var TEMP2 [64];
var LOG2 [64];
var SOUND2 [64];
/* ログファイル作成モード */
var LOGmode [8];
/* NIFTYにおける処理 */
var NIFTY [1536];
/* 画面背景色 */
var R [3];
var G [3];
var B [3];
/* オプションスイッチ */
var BELFIL [64];
var VBELL [3];
var NATTOU [3];
var CLICK [3];
var TAB [2];
var LOCK [3];
/* 保存ファイルの圧縮指定 */
var COMPRESS[3];
var ARCHIVER[64];
/* 設定ファイルのパス名 */
var SETFILE [64];
var NIFFILE [64];
var SETFILE1[64];
var SETFILE2[64];
/* MREADコマンドのLIMITパラメータ */
var LIMIT [4];
/* 変数の定義 */
var upldcntl[64]; /* 自動アップロード制御ファイル名 */
var dnldcntl[64]; /* 自動ダウンロード制御ファイル名 */
var liblist [40]; /* ライブラリ番号リスト */
var AM3 [3]; /* 夜間自動実行フラグ */
/* ウェイト時間の設定 */
%Wtime1 10; /* モデム応答待ち時間 */
%Wtime2 60; /* NIFTYプロンプト待ち時間 */
%Wtime4 60; /* select入力待ち時間 */
/* ベルコード */
%BELL @xc({07});
/************************************************************************
* 共通処理モジュール *
************************************************************************/
/* 音声メッセージ出力処理 */
%SNDMSG {
[file]
case (SOUND2={}||SOUND2={\},
{No},{case(@filechk(SOUND2|file),
{Yes},{snd(SOUND2|file)},
{No}, {display(BELL)})},
{Yes},{display(BELL)}
);
};
/*異常切断処理*/
%AbortOff{
[CommentB]
display(CommentB);
SNDMSG({okasi_f.snd});
display({\nNIFTYとの通信を強制切断します\n});
type({BYE\n});
wait (Wtime2,,
{\n01+},,
{HOST NAME?\n*},{type({OFF\n});wait(3)});
discon;
display({\nモデムを直接切断しました\n\n});
SNDMSG({owata_f.snd});
stop;
};
/*切断処理 及び 切断終了表示処理*/
%LogOff {
display({\n切断処理を開始しました\n\n});
type({BYE\n});
wait (Wtime2,{discon},
{\n01+},{discon},
{HOST NAME?\n*},{type({OFF\n});wait(3);discon}
);
};
%PLTSTOP{
SNDMSG({owata_f.snd});
display({\nオートパイロットFAPX}|VerLev|{を停止しました\n});
stop;
};
%AUTOEND{
footnote({オートパイロットの終了処理をしています});
display({\nNIFTYとの通信を終了しました\n});
SNDMSG({owata_f.snd});
wait(2);
};
%WAITABORT{
[sec]
wait (sec,{AbortOff({\nホストの反応が鈍いよぉ~\n})},
{\n>},, {\nmore>},, {\nnext>},, {\nFORUM>},,
{\nCCS(N)>},, {\nCCS(R)>},, {\nLIB>},, {\nHP>},,
{\nMAIL>},, {\nBBS>},,
);
};
%WAITCHAR{
[sec,Waitchr,WaitcmdC]
wait (sec,{AbortOff({\nホストの反応が鈍いよぉ~\n})},
Waitchr,WaitcmdC)
};
/* パラメタで指定されたディレクトリへ移動する(「A:\」と「A:」の両方が可能) */
%setcdir2{
[dir]
%dir2 @case(@nochar(dir),2,{im(dir|{\})},,{im(dir)});
setcdir(dir2)
};
/* 指定されたディレクトリー配下に,第2パラメターで指定されたディレクトリを
(もし,無ければ)作成する。 */
%mkdir {
[dir,name]
dispoff({Yes});
case (@setcdir2(dir),
{Yes},{command({mkdir }|name)},
{No},
{
select ({装置(}|dir|{)が使えませんが?},
Wtime4,{},
{ もう一回やってみる },{mkdir(dir,name)},
{ 自動処理をやめる },{stop},
{ 無視して先の処理をやる },{});
});
dispoff({No})
};
/* 指定されたディレクトリーを(もし,無ければ)作成する。 */
%mkdir2 {
[dir]
case (@setcdir2(dir),
{Yes},,
{No},{mkdir2(@body(dir,,{\}));
mkdir(@body(dir,,{\}),@tail(dir,{\}));}
);
};
/* n番目の部分文字列をとりだす関数 */
%nth {
[str,n,sep] /* 元の文字列,順番,区切り文字列 */
var a [256];
var m [3];
a:=str;
m:=0;
case (n<1,
{Yes},{im({})},
{No},
{loop ({
m:=m+1;
case (m==n||a={},{Yes},{im({No})},
{No},{a:=@body(a,sep);im({Yes})});
});
im(@head(a,sep));
});
};
/* 現在の日付・時刻を得る 「yyyy-mm-dd (曜) hh:mm:ss」 */
%getdt {
%dt @daylong;
%week @case (@getchar(dt,12,3),
{Sun},{im({日})},{Mon},{im({月})},
{Tue},{im({火})},{Wed},{im({水})},
{Thu},{im({木})},{Fri},{im({金})},
{Sat},{im({土})},,{im({ })});
im(@getchar(dt,1,4)|{-}|@getchar(dt,6,2)|{-}|@getchar(dt,9,2)|
{ (}|week|{) }|@getchar(dt,16,8));
};
/* 指定されたファイルを yymmddnn.* にリネームして指定されたディレクトリにコピーする */
%renfile{
[file,path]
var n [2];
var file2 [12];
%d @getdt;
%date @getchar(d,3,2)|@getchar(d,6,2)|@getchar(d,9,2);
n:=-1;
mkdir2(path);
setcdir2(path);
loop ({
n:=n+1;
case (@nochar(n)=1,{Yes},{n:={0}|n});
case (@body(file,{.})={},
{Yes},{file2:=date|n},
{No}, {file2:=date|n|{.}|@tail(file,{.})});
case (@filechk(file2)={No}||n==99,
{Yes},{im({No})},
{No}, {im({Yes})});
});
dispoff({Yes});
command({copy }|file|{ }|file2);
dispoff({No});
im(file2);
};
/* 指定されたファイルを MddHmmss.* にリネームして指定されたディレクトリにコピーする */
%nowfile2{
[file,path]
var file2 [12];
%d @getdt;
%mm @case (@getchar(d,6,2),
{01},{im({1})},{02},{im({2})},{03},{im({3})},
{04},{im({4})},{05},{im({5})},{06},{im({6})},
{07},{im({7})},{08},{im({8})},{09},{im({9})},
{10},{im({a})},{11},{im({b})},{12},{im({c})});
%dd @getchar(d,9,2);
%hh @case (@getchar(d,17,2),
{01},{im({1})},{02},{im({2})},{03},{im({3})},
{04},{im({4})},{05},{im({5})},{06},{im({6})},
{07},{im({7})},{08},{im({8})},{09},{im({9})},
{10},{im({a})},{11},{im({b})},{12},{im({c})},
{13},{im({d})},{14},{im({e})},{15},{im({f})},
{16},{im({g})},{17},{im({h})},{18},{im({i})},
{19},{im({j})},{20},{im({k})},{21},{im({l})},
{22},{im({m})},{23},{im({n})},{00},{im({0})});
%mmss @getchar(d,20,2)|@getchar(d,23,2);
case (@body(file,{.})={},
{Yes},{file2:=mm|dd|hh|mmss},
{No}, {file2:=mm|dd|hh|mmss|{.}|@body(file,{.})});
mkdir2(path);
setcdir2(path);
dispoff({Yes});
command({copy }|file|{ }|file2);
dispoff({No});
im(file2);
};
/* 指定されたディレクトリに yymmddnn.* というファイルを作成する */
%crefile{
[path,sfx]
var n [2];
var file1 [12];
%d @getdt;
%date @getchar(d,3,2)|@getchar(d,6,2)|@getchar(d,9,2);
n:=-1;
mkdir2(path);
setcdir2(path);
loop ({
n:=n+1;
case (@nochar(n)=1,{Yes},{n:={0}|n});
case (sfx={},
{Yes},{file1:=date|n},
{No}, {file1:=date|n|{.}|sfx});
case (@filechk(file1)={No}||n==99,
{Yes},{im({No})},
{No}, {im({Yes})});
});
im(file1);
};
/* 初期設定 */
%init {
setoak({J});
case (NATTOU={Yes}||NATTOU={No},{Yes},{nattou(NATTOU)});
case (CLICK={Yes}||CLICK={No},{Yes},{click(CLICK)});
case (LOCK={Yes}||LOCK={No},{Yes},{shiftl(LOCK)});
case (R<>{}&&G<>{}&&B<>{},{Yes},{backclr(R,G,B)});
case (VBELL={Yes}||VBELL={No},{Yes},{visibell(VBELL)});
case (@tail(BELFIL,{.}),
{snd},{bellfile(BELFIL)},
{SND},{bellfile(BELFIL)});
case (TAB<>{},{Yes},{tab(TAB)});
case (TEMP={},{Yes},{TEMP:=CDIR});
case (@nochar(TEMP)==3,
{No}, {TEMP2:=TEMP|{\}},
{Yes},{TEMP2:=TEMP});
case (TEMP<>{}&&@setcdir2(TEMP)={No},{Yes},{mkdir2(TEMP)});
case (LOG={},{Yes},{LOG:=CDIR});
case (@nochar(LOG)==3,
{No}, {LOG2:=LOG|{\}},
{Yes},{LOG2:=LOG});
case (LOG<>{}&&@setcdir2(LOG)={No},{Yes},{mkdir2(LOG)});
case (@nochar(SOUND)==3,
{No}, {SOUND2:=SOUND|{\}},
{Yes},{SOUND2:=SOUND});
};
/* skip top message */
%TOPMENU{
wait (Wtime2,{AbortOff({\nホストの反応が鈍いよぉ~\n})},
{NIFTY-Serve TOP},{WAITABORT(Wtime2)},
{CUG トップ},{WAITABORT(Wtime2)},
{\n>},{type({\n});TOPMENU}
);
};
/* niftyへ行く */
%GONIF {
WAITABORT(Wtime2);
type({GO NIF\n});
WAITABORT(Wtime2);
type({1\n});
TOPMENU;
};
/* フォーラムのトップメニューへ行く */
%FORUMTOP{
wait (Wtime2,{AbortOff({\nホストの反応が鈍いよぉ~\n})},
{◆番号又はコマンドを入力して下さい◆\n>},
{SNDMSG({okasi_f.snd});
display({フォーラム名が違っていませんか?\n});
im({forumERROR});},
{2.一時利用 3.入会手続き\n>},
{SNDMSG({okasi_f.snd});
display({入会していないフォーラムです\n});
im({forumERROR});},
{現在、サービスは大変混雑しています。},
{WAITABORT(Wtime2);
SNDMSG({okasi_f.snd});
display({混雑しているため次の処理に移ります\n});
im({forumERROR});},
{-保守作業の為しばらくの間御利用頂けません-},
{WAITABORT(Wtime2);
SNDMSG({okasi_f.snd});
display({保守作業中のため次の処理に移ります\n});
im({forumERROR});},
{続き (改行で表示 E:終了)\n>},
{type({\n});FORUMTOP;},
{\nmore>},
{type({\n});FORUMTOP;},
{:オプション E:終了\n>},
{type({SET MENU ON\n});
WAITABORT(Wtime2);
type({SET PAGE OFF\n});
WAITABORT(Wtime2);
type({SEND OFF\n});
WAITABORT(Wtime2);
im({OK});},
{\nFORUM>},
{type({SET MENU ON\n});
WAITABORT(Wtime2);
type({SET PAGE OFF\n});
WAITABORT(Wtime2);
type({SEND OFF\n});
WAITABORT(Wtime2);
im({OK});}
);
};
/************************************************************************
* ダウンロード開始と終了の処理 *
*************************************************************************/
/* LOG DOWN START */
%DOWNSTART{
case (LOGmode={forum},
{Yes},,
{No},
{
display({\nダウンロードを開始します\n});
dispoff({Yes});
command({del }|TEMP2|{_mopterm.log});
dispoff({No});
receive(TEMP2|{_mopterm.log});
});
};
/* LOG DOWN STOP */
%DOWNSTOP{
case (LOGmode={forum},
{Yes},,
{No},
{
stoprec;
case (COMPRESS={Yes}&&ARCHIVER<>{},
{Yes},
{
dispoff({Yes});
%file @nowfile2(TEMP2|{_mopterm.log},TEMP);
dispoff({Yes});
command(ARCHIVER|{ a }|LOG2|{Niftylog.lzh }|
TEMP2|file);
command({del }|TEMP2|file);
dispoff({No});
},
{No},
{
mkdir2(LOG2|{Niftylog});
renfile(TEMP2|{_mopterm.log},LOG2|{Niftylog});
});
display({\nダウンロードを終了しました\n});
setcdir(CDIR);
});
};
/************************************************************************/
/* ログインのみの処理 */
/************************************************************************/
%LOGIN {
setcdir(CDIR);
#FAPXLGIN.PLP;
setcdir(CDIR);
#FAPXCHAT.PLP;
discon;
AUTOEND;
};
/************************************************************************/
/* ログインと自動アップロードと自動ダウンロードのみの処理 */
/************************************************************************/
%UPDOWN {
setcdir(CDIR);#FAPXLGIN.PLP;
case(upldcntl<>{}||@filechk(TEMP2|{_mopres.ctl}),
{Yes},{setcdir(CDIR);#FAPXUPLD.PLP});
case(dnldcntl<>{}||@filechk(TEMP2|{_mopdlib.ctl}),
{Yes},{setcdir(CDIR);#FAPXDNLD.PLP});
setcdir(CDIR);#FAPXMAIL.PLP;
LogOff;
AUTOEND;
};
/************************************************************************/
/* NIFTYへの通信メニュー */
/************************************************************************/
%ONLINE {
loop ({
SNDMSG ({erande_f.snd});
footnote({現在のユーザー設定ファイル=}|SETFILE1|
{ NIFTY設定ファイル=}|SETFILE2);
select ({処理を選択してください},
Wtime4*10,{im({No})},
{ 自動通信を行う },
{AM3:={No};FAPXMAIN;im({No})},
{ 割引時間帯に通信を行う },
{setcdir(CDIR);AM3:={Yes};#FAPX3AM.PLP;
FAPXMAIN;im({No})},
{ 自動ログインを行う },
{setcdir(CDIR);AM3:={No};LOGIN;im({No})},
{ 自動アップ/ダウンロードのみ行う },
{setcdir(CDIR);AM3:={No};UPDOWN;im({No})},
{ 自動ログイン後FAPXを終了する },
{setcdir(CDIR);AM3:={No};#FAPXLGIN.PLP;stop},
{ 設定ファイルの読み込み },
{setcdir(CDIR);#FAPXSCHG.PLP;im({Yes})},
{ 終 了 },
{im({No})}
);
});
};
/************************************************************************/
/* メイン処理 */
/************************************************************************/
%FAPXMAIN{
setcdir(CDIR);#FAPXLGIN.PLP;
case(upldcntl<>{}||@filechk(TEMP2|{_mopres.ctl}),
{Yes},{setcdir(CDIR);#FAPXUPLD.PLP});
case(dnldcntl<>{}||@filechk(TEMP2|{_mopdlib.ctl}),
{Yes},{setcdir(CDIR);#FAPXDNLD.PLP});
setcdir(CDIR);#FAPXMAIL.PLP;
DOWNSTART;
setcdir(CDIR);#FAPXLOOP.PLP;
DOWNSTOP;
LogOff;
AUTOEND;
};
/********************* 処理モジュール終了 *****************************/
/************************************************************************/
/* 以下メインモジュール */
/************************************************************************/
/* カレントディレクトリセット*/
%CDIR @getcdir;
%CDIR2 @case (@nochar(CDIR)==3,
{Yes}, {im(CDIR)},
{No},{im(CDIR|{\})});
/* 初期設定 */
footnote({FAPX}|VerLev|{初期処理中});
display({オートパイロットFAPX}|VerLev|{を開始します\n\n});
setoak({J});
case (@nochar(CDIR)==3,
{No}, {SETFILE:=CDIR|{\}|{FAPXSET.SET}},
{Yes},{SETFILE:=CDIR|{FAPXSET.SET}});
case (@filechk(SETFILE),
{Yes},{setcdir(CDIR);#FAPXSET.SET;SETFILE1:={標準設定}},
{No}, {setcdir(CDIR);#FAPXSET.PLP});
init;
case (@nochar(CDIR)==3,
{No}, {NIFFILE:=CDIR|{\}|{FAPXNIF.SET}},
{Yes},{NIFFILE:=CDIR|{FAPXNIF.SET}});
case (@filechk(NIFFILE),
{Yes},{setcdir(CDIR);#FAPXNIF.SET;SETFILE2:={標準設定}},
{No}, {setcdir(CDIR);#FAPXNIF.PLP});
/* テンポラリディレクトリとログディレクトリを作成する */
mkdir2(TEMP);
mkdir2(LOG);
setcdir2(CDIR);
loop ({
SNDMSG ({erande_f.snd});
footnote({処理を選択してください});
select ({処理を選択してください << FAPX}|VerLev|{ >>},
Wtime4*10,{im({Yes})},
{ NIFTYと通信を行う },
{AM3:={No};ONLINE;im({Yes})},
{ 自動アップロードの指定 },
{setcdir(CDIR);#FAPXUSET.PLP;im({Yes})},
{ 自動ダウンロードの指定 },
{setcdir(CDIR);#FAPXDSET.PLP;im({Yes})},
{ 各種の設定を行う },
{setcdir(CDIR);#FAPXSET.PLP;init;im({Yes})},
{ NIFTYでの処理の設定 },
{setcdir(CDIR);#FAPXNIF.PLP;im({Yes})},
{ 設定ファイルの読み込み },
{setcdir(CDIR);#FAPXSCHG.PLP;im({Yes})},
{ 受信ログを読む },
{setcdir(CDIR);#FAPXVIEW.PLP;im({Yes})},
{ ファイル操作を行う },
{setcdir(CDIR);#FAPXFILE.PLP;im({Yes})},
{ 他のオートパイロットを実行する },
{setcdir(CDIR);#FAPXPLTX.PLP;im({Yes})},
{ FAPXを終了する },
{im({No})}
);
});
/* オートパイロット停止時にPF10で再起動できるように */
setpf(10,{footnote({Loading ...});}|
{setcdir(}|@xc({7b})|CDIR|@xc({7d})|{);}|
{#FAPXMAIN.PLT});
display({オートパイロットFAPX}|VerLev|{を終了しました\n});
footnote({});