#========================================================================= #WTERM マクロプログラム 本体 WTMR.MAC v10.8 (f) #========================================================================= START: GETID(W$) #USER ID番号をW$に格納。固定。 PRINTCR(" AUTO PILOT WTMR.MAC v10.8(f) START! by Gako") PRINTCR("") PRINTCR("") PRINTCR(" ようこそ! ◎◎NetWorkの世界を堪能してね (^o^)v") PRINTCR("") TIMED("ON") #LOGTIME表示指定。 START0: #ID,パスワード入力等処理。 SWITCH CASE("User-ID --->") SEND("\I\R") GOTO(START0) CASE("Password --->") SEND("\P\R") GOTO(START0) CASE("ださい−") #確認リターン。 SEND("\R") END GETS(A$,"』です") #会員レヴェル取得のため画面をA$に格納。 IFSRCHY(A$,"inner") #ビギナー会員の場合。 Z$="WTMR_B.MAC" #Z$はCHAINマクロ名を格納。固定。 IFSRCHY(A$,"gular") #レギュラー会員の場合。 Z$="WTMR_R.MAC" CALL(LOOP0) #LOOP0内では,R$を設定,CHAT判断フラグ。 SEND("\R") #最初のLOGIN確認。 WAIT("未読のお手紙") GETS(M$,"(総数") SWITCH CASE("書き込みが") GETS(N$,"あります","+") CASE("書き込みは") GETS(N$,"ありません","+") END C$="C\R" #CHAT入りコマンドを格納。切断直前までほぼ固定。 LOGOPEN("MAR") #MAR****.LOG作成。 CALL(LOOP0) SEND("ESC OFF\R") #ESC OFF指定送信。 CALL(LOOP0) SEND("NAP OFF\R") #NAP OFF指定送信。 CALL(LOOP0) JUMPSRCHY(Z$,"_",001) #ビギナー,レギュラー会員の場合は処理を飛ばす。 SEND("DOR OFF\R") #DOR OFF指定送信。 CALL(LOOP0) SEND("SBRP\R") #READ POINTER保存。 #SEND("RBRP\R") #万が一の場合,READ POINTERを戻す。 CALL(LOOP0) 001: CHAIN("WTMR_001.MAC$DIR00") #アップ文書有無の確認,文書書き込みマクロへ。 #========================================================================= AAA: #PAD指定処理開始。 PRINTCR("□ MAR.PAD 指定処理を開始します □") S$="MAR.PAD" #MAR.PADは行動指定ファイル。 E$="/" #MAR.PAD内区切り文字。 O$="_" #MAR.PAD内区切り文字。 P$="." #MAR.PAD内区切り文字。 B$="" #B$はWTMR_001.MACで使用。 GETTXUPD(I$) #I$=G:\WT\UP_TXT\ CAT(B$,I$,S$) #B$=G:\WT\UP_TXT\MAR.PAD。PAD処理中はB$は固定。 ROPEN(B$,READ0) #MAR.PADがなければ,READ0へ。 RREAD(A$) #MAR.PADから一行,A$へ読み込み。 VSWAP(A$,X$) #A$とX$を交換。 IFE(X$,"") #X$はMAR.PADの一行目,一行伝言。ほぼ固定。 X$="/E" #一行伝言が改行のみの場合は,/Eとする。 CAT(I$,"MAR.WRK") #I$=G:\WT\UP_TXT\MAR.WRK WOPEN(I$) #MAR.WRK作成。 WCLOSE #WAPPENDのために,いったん閉じる。 WAPPEND(I$) #MAR.WRKオープン。 WRITE("") #一行伝言部分を削除して空白を書き込む。 WCLOSE #MAR.WRKを閉じる。 #========================================================================= DAT_: #>に戻って,CHATに入るかどうかを決めるルーチン。 D$="" VSWITCH(R$) #LOOP0でR$を設定。 CASE("C") #CHATメッセージがあった場合,R$=C。 CALL(CHAT) #CHATへ。 VCLEAR("R") #CHATから復帰。 GOTO(DAT1) #MAR.PADファイル指定読み込みルーチンへ。 ELSE #R$がCでない場合。 GOTO(DAT1) END #========================================================================= DAT1_: CALL(LOOP0) DAT1: #MAR.PAD内指定読み取りルーチン。 RREAD(A$) #MAR.PADから二行目以降をA$へ読み込み。 JUMPE(A$,"",DAT1) #空白のみの行の場合,DAT1へ戻る。 J$=A$ #J$はWAPPEND書き込み用変数。 U$=A$ L$="" #L$はWTMR_001.MACからの戻り先フラグ。 LEFT(U$,"1") JUMPE(U$,"#",DAT1) #「#」で始まるコメント行の場合,DAT1へ戻る。 VSWITCH(A$) CASE("SEL") #MENU SELECTER へ。 U$="READ" #U$は移動先フラグ。 GOTO(DAT3) #DAT3は,MAR.PAD書換えルーチン。 CASE("OFF") #自動一行伝言書き込み終了へ。 U$="READ2" GOTO(DAT3) CASE("BYE") #手動一行伝言書き込み終了へ。 U$="READ1" GOTO(DAT3) CASE("PAS") #未読処理をせずに,MENU SELECTERへ。 U$="SELECT0" GOTO(DAT3) ELSE GOTO(DAT2) END #------------------------------------------------------------------------- DAT2: #「/」指定の分岐。 L$="WTMR.MAC" #WTMR_001.MACから戻り先のフラグ。 IFE(A$,"DLN/") #最新DLリスト取得指定の場合は,WTMR_001.MACへ。 CHAIN("WTMR_001.MAC$DLN") PICKWORD(D$,A$,E$) #A$を/で区切った内容を分離,冒頭をD$に格納。 UPCASE(D$,D$) #D$を大文字に変換。 IFE(A$,"") #直接コマンド入力指定の場合は,WTMR_001.MACへ。 CHAIN("WTMR_001.MAC$DO") VSWITCH(D$) CASE("B") GOTO(PADERR) #旧版指定の場合。 CASE("M") GOTO(PADERR) #旧版指定の場合。 CASE("C") GOTO(CHAN3) #ハンドル名変更指定。 CASE("R") GOTO(BCREAD) #BC読み指定。 CASE("W") GOTO(BCWRIT) #BC書き指定。 CASE("U") GOTO(UP) #UPLOAD指定。 CASE("D") GOTO(DOWN) #DWONLOAD指定。 CASE("P") GOTO(PRO) #プロフィール取得指定。 CASE("L") #DLリスト取得指定の場合は,WTMR_001.MACへ。 CHAIN("WTMR_001.MAC$DL_") CASE("K") #発言削除指定の場合は,WTMR_001.MACへ。 CHAIN("WTMR_001.MAC$KES") ELSE GOTO(PADERR) END PADERR: PRINTCR("□ MAR.PAD の指定ミスです。パスしますね。□") WAPPEND(I$) #追加書き込みに,MAR.WRKをオープン。 A$="" CAT(A$,"#指定ミス-----> ",J$) WRITE(A$) #MAR.PADのエラー内容をMAR.WRKに書き込む。 WCLOSE #MAR.WRKを閉じる。 GOTO(DAT1) #------------------------------------------------------------------------- DAT3: #MAR.PAD書換えルーチン。 WAPPEND(I$) #追加書き込みに,MAR.WRKをオープン。 WRITE(J$) #MAR.PAD内容をMAR.WRKに書き込む。 DAT4: #読み込み行以下をMAR.WRKに書き込むルーチン。 RREAD(J$,DAT5) #MAR.PADから読み込み。EOFならば,DAT5へ。 WRITE(J$) #MAR.WRKに書き込み。 GOTO(DAT4) DAT5: #MAR.PAD最終処理ルーチン。 WCLOSE #MAR.WRKを閉じる。 RCLOSE #MAR.PADを閉じる。 A$="" CAT(A$,"DEL ",B$) #A$=DEL G:\WT\UP_TXT\MAR.PAD CHILD(A$) #MAR.PAD削除。 DELAYM(1500) #同期調整。 CHANGE(B$,"MAR.PAD","MAR.WRK") A$="" CAT(A$,"REN ",B$) #A$=REN G:\WT\UP_TXT\MAR.WRK CAT(A$," MAR.PAD") #A$=REN G:\WT\UP_TXT\MAR.WRK MAR.PAD CHILD(A$) #MAR.WRKを,MAR.PADに改名。 DELAYM(1500) #同期調整。 GOTO(U$) #DAT1で格納した移動先へ。 #========================================================================= UP: #データアップロード指定。 JUMPSRCHY(Z$,"_B",DAT1) #ビギナー会員の場合にはパス。 GETUPD(U$) #U$=G:\WT\UP\ Y$=U$ PICKWORD(D$,A$,E$) #/で区切る。D$は,UPLOAD先DL番号。A$=***.LZH JUMPE(A$,"",RETRYD) JUMPE(D$,"",RETRYD) PICKWORD(K$,A$,P$) #K$=***,A$=LZH JUMPE(K$,"",RETRYD) JUMP<>(A$,"LZH",RETRYD) #A$がLZHでない場合。 S$=K$ CAT(K$,".GGG") #K$=***.GGG CAT(S$,".LZH") #S$=***.LZH CAT(U$,K$) #U$=G:\WT\UP\***.GGG CAT(Y$,S$) #Y$=G:\WT\UP\***.LZH JUMPFILEN(U$,RETRYD) #概要ファイルがない場合。 JUMPFILEN(Y$,RETRYD) #アップロードファイルがない場合。 SEND("DL\R") #DLへ。 STIMEOUT(4) SWITCH CASE("◆") GOTO(RETRY) #DLに入る前はRETRYへ。 CASE("OFF. 速攻ログアウトする") WAIT("Data>") END SEND(D$) #DL番号送信。 SEND("\R") STIMEOUT(4) SWITCH CASE("◆") GOTO(DWMIS) #DLに入った後はDWMISへ。 CASE("☆ DataLib ☆") WAIT(":") END SEND("2\R") #UPLOADを選択。 CALL(LOOP0) SEND("\R") #確認。 CALL(LOOP0) SEND("1\R") #バイナリ送信選択。 CALL(LOOP0) SEND("\R") #確認。 CALL(LOOP0) SEND(S$) #UPLOADファイル名送信。 SEND("\R") STIMEOUT(4) SWITCH CASE("◆") GOTO(UPMIS) "同一名ファイルが存在する場合はUPMISへ。 CASE("(1:OK 2:NG)") WAIT(":") END SEND("1\R") #確認。 CALL(LOOP0) FOPEN(U$) #概要ファイルオープン。 FREAD(F$) #概要ファイル一行目格納。TITLE。 LEFT(F$,"26") #TITLE長調整。 SEND(F$) #TILTE送信。 SEND("\R") CALL(LOOP0) SEND("\R") #TITLE確認。 CALL(LOOP0) SEND("2\R") #概要ファイルのアップロードを選択。 CALL(LOOP0) SEND: FREAD(F$,EOF) #発言ファイル読込。続きがない場合。 JUMPE(F$,"/E",EOF) #/Eがある場合。 CONVERT(OFF) SEND(F$) #発言ファイル内容一行送信。 CONVERT(ON) SEND("\R") WAIT("\010") GOTO(SEND) #SENDへ戻る。 EOF: SEND("/E\R") #概要ファイル送信終了処理。 FCLOSE #概要ファイルを閉じる。 CALL(LOOP0) SEND("\R") #修正確認。 CALL(LOOP0) SEND("1\R") #登録確認。 CALL(LOOP0) SEND("1\R") #送信開始確認。 WAIT("開始します(Flying X-Modem(SUM128))−") UPLOAD(4,S$,ERROR) #4はF-Xmodem。1は,Xmodem送信。 WAIT("−受信終了−") CALL(LOOP0) SEND("T\R") #DLから抜ける。 WAIT("−データライブラリを終了しました−") CALL(LOOP0) V$="namv -a " A$="" CAT(A$,V$,U$) #U$=G:\WT\UP\***.GGG Q$=" $(UploadD)DONE\" CAT(A$,Q$) CHILD(A$) #概要ファイル移動。 CAT(V$,Y$) #Y$=G:\WT\UP\***.LZH CAT(V$,Q$) CHILD(V$) #LZHファイル移動。 VCLEAR("KUVQSY") GOTO(DAT_) #------------------------------------------------------------------------- UPMIS: #既に同名ファイルが存在する場合の処理。 SEND("ERROR.ERR\R") #ダミー名送信。 CALL(LOOP0) SEND("1\R") #修正確認(修正しない)。 CALL(LOOP0) SEND("ERROR\R") #ダミーのタイトル名,ERROR。 CALL(LOOP0) SEND("\R") #確認。 CALL(LOOP0) SEND("E\R") #送信処理を抜ける。 CALL(LOOP0) SEND("T\R") #DLを抜ける。 WAIT("−データライブラリを終了しました−") CALL(LOOP0) PRINTCR("□GGGファイルをリネームします□") A$="" CAT(A$,"REN ",U$) #A$=REN G:\WT\UP\UP.GGG CAT(A$," *.ERR") #A$=REN G:\WT\UP\UP.GGG *.ERR CHILD(A$) #書き込みエラーファイルの拡張子をERRにリネーム。 DELAYM(1500) #同期調整。 VCLEAR("KUVQSY") GOTO(DAT_) #========================================================================= DOWN: #DOWNLOAD指定。 PICKWORD(D$,A$,E$) #D$はDL番号。A$=23/***.LZH PICKWORD(H$,A$,E$) #H$はDOWNLOADデータ番号。A$はデータ名。 JUMPE(A$,"",RETRYD) #指定ミスの場合。 JUMPE(D$,"",RETRYD) JUMPE(H$,"",RETRYD) U$=A$ SEND("DL\R") #DLへ。 STIMEOUT(4) SWITCH CASE("◆") GOTO(RETRY) #DLに入る前はRETRYへ。 CASE("OFF. 速攻ログアウトする") WAIT("Data>") END SEND(D$) #DL番号送信。 SEND("\R") STIMEOUT(4) SWITCH CASE("◆") GOTO(DWMIS) #指定DLに入れない場合。 CASE("☆ DataLib ☆") WAIT(":") END SEND("3\R") #DOWNLOAD選択。 STIMEOUT(4) SWITCH CASE("◆") GOTO(DWMIS) #DOWNLOAD不可能の場合。 CASE("−リターンのみで QUIT できます−") WAIT(":") END SEND(H$) #DOWNLOADデータ番号送信。 SEND("\R") STIMEOUT(4) SWITCH CASE("◆") GOTO(DWMIS1) #DOWNLOAD番号エラー。 CASE("良いですか?(1:OK 2:NG)") WAIT(":") END SEND("1\R") #確認。 STIMEOUT(4) SWITCH CASE("◆") GOTO(DWMIS) #DLが空の場合。 (^^; Tを入力して抜ける処理へ。 CASE("ダウンロード") WAIT(":") END SEND("1\R") #受信方法選択。 WAIT("開始します (Flying X-Modem)−") DOWNLOAD(4,U$,ERROR) #4は,F-Xmodem。1は,Xmodemによる受信。 WAIT("−送信終了−") CALL(LOOP0) SEND("T\R") #DLを抜ける。 WAIT("−データライブラリを終了しました−") VCLEAR("HU") CALL(LOOP0) GOTO(DAT_) #------------------------------------------------------------------------- DWMIS1: #データ番号ミスの場合。 CALL(LOOP0) SEND("\R") #リターン送信で,DOWNLOADを抜ける。 DWMIS: #DLに入れない場合。DWONLOAD不可能の場合。 CALL(LOOP0) SEND("T\R") #メインプロンプトへ。 WAIT("−データライブラリを終了しました−") CALL(LOOP0) VCLEAR("HU") GOTO(DAT_) #========================================================================= READ0: #MAR.PADがない場合,一行伝言を代入。 X$="また来るねぇ〜 (^^)/゚" #READへ合流。 READ: #DAT1で格納したU$内容による処理。PAS指定。 U$="SELECT0" #U$は未読処理後の移動先フラグ。 GOTO(R1) #未読有無確認ルーチンへ。 READ1: #未読処理終了後,自動伝言入力へ行く設定の場合。 U$="OFF4" GOTO(R1) READ2: #未読処理終了後,手動伝言入力へ行く設定の場合。 U$="OFF1" #------------------------------------------------------------------------- R1: #メール未読確認。 JUMPSRCHN(N$,"あります",R2) #あります,がない場合,M$の判断へ。 GOTO(READ000) #あります,があった場合,未読処理へ。 R2: #メール未読がない場合,会議室未読確認。 JUMPSRCHN(M$,"あります",R3) #両方未読がない場合,R3へ。 GOTO(READ000) R3: JUMPSRCHY(U$,"OFF",U$) #OFF処理は各レヴェル共通,当マクロ内で処理。 S$="" CAT(S$,Z$,"$") CAT(S$,U$) #S$=WTMR_B.MAC$SELECT0 IFSRCHY(Z$,"_") #ビギナー,レギュラー会員の場合。 CHAIN(S$) #各マクロへ。 GOTO(U$) #U$=SELECT0。 #------------------------------------------------------------------------- READ000: #未読処理ルーチン(/ALLによる)。 IFSRCHY(Z$,"_") #ビギナー,レギュラー会員の場合。 CHAIN("WTMR_B.MAC$READ000") SEND("/ALL\R") #/ALLによる未読処理。 WAIT("−スキャン終了−") CALL(LOOP0) VSWITCH(R$) #CHATメッセージ有無の判断分岐。 CASE("C") CALL(CHAT) #CHATへ。 VCLEAR("R") #CHATから復帰。 GOTO(U$) #指定されたラヴェルへ。 ELSE GOTO(U$) END #========================================================================= SELECT__: CALL(LOOP0) SELECT_: #CHAT信号判断ルーチン。 VSWITCH(R$) CASE("C") CALL(CHAT) #CHATへ。 VCLEAR("R") #CHATから復帰。 GOTO(F$) ELSE GOTO(F$) END #------------------------------------------------------------------------- SELECT0: #メイン MEMU SELECTER S$="" CAT(S$,Z$,"$") CAT(S$,"SELECT0") #S$=WTMR_R.MAC$SELECT0 IFSRCHY(Z$,"_") #ビギナー,レギュラー会員の場合。 CHAIN(S$) #各マクロへ。 H$="ボードチャット 2〜7+他にも色々できるよ。" I$="ボードチャット 8〜11+GAMEをします。 GAME内は,自由行動です。" J$="データライブラリに行きます。+伝言を新たに入力後,ログアウトします。" SMENU(H$,I$,J$) VSWITCH(H$) CASE("0") PRINTCR(" MACRO STOP! SEE YOU AGAIN! (^o^)/゚") EXIT CASE("1") GOTO(BC1) CASE("2") GOTO(BC2) CASE("3") GOTO(DL) CASE("4") GOTO(ETC) CASE("5") GOTO(GAME) CASE("6") GOTO(OFF1) ELSE GOTO(SELECT0) END ETC: H$="各種 RANK表示をします。+もっと,いろいろできるよ。" I$="誰がアクセスしてるかな?+設定済の伝言内容の確認をします。" J$="今日はどんな日かな?+設定済の伝言を自動的に入力してログアウトします。" SMENU(H$,I$,J$) VSWITCH(H$) CASE("0") GOTO(SELECT0) CASE("1") GOTO(ETC01) CASE("2") Y$="LOG" GOTO(ETC1) CASE("3") Y$="DAY" GOTO(ETC1) CASE("4") GOTO(ETC2) CASE("5") GOTO(DEF) CASE("6") GOTO(OFF4) ELSE GOTO(ETC) END ETC01: H$="所有GOLD RANKINGを表示します。+発言回数RANKINGを表示します。" I$="書き込み率RANKINGを表示します。+元のメニューに戻る。" J$="アクセス回数RANKINGを表示します。" SMENU(H$,I$,J$) VSWITCH(H$) CASE("0") GOTO(ETC) CASE("1") Y$="GRNK" GOTO(ETC1_) CASE("2") Y$="RRNK" GOTO(ETC1_) CASE("3") Y$="ARNK" GOTO(ETC1_) CASE("4") Y$="WRNK" GOTO(ETC1_) CASE("5") GOTO(ETC) ELSE GOTO(ETC01) END ETC2: H$="50,000GOLD取得者を表示します。+まだまだできるよ。" I$="ハンドル名を一時的に変更します。+PROFIELを表示します。" J$="ハンドル名を元に戻します。+自由行動します。" SMENU(H$,I$,J$) VSWITCH(H$) CASE("0") GOTO(SELECT0) CASE("1") Y$="KING" GOTO(ETC1) CASE("2") Y$="CHAN" GOTO(CHAN) CASE("3") Y$="RHAN" GOTO(ETC1) CASE("4") GOTO(ETC3) CASE("5") Y$="PROF" GOTO(PROF) CASE("6") GOTO(ETC4) ELSE GOTO(ETC2) END ETC3: H$="規約を読みます。+チャットをします。抜ける時は「/E」を入れてね。" I$="郵送規約を読みます。+未読ポインター移動を行います。指示通り入力してね。" J$="会議室とボードチャットの一覧を見ます(MAP)。+未読情報を表示します。" SMENU(H$,I$,J$) VSWITCH(H$) CASE("0") GOTO(SELECT0) CASE("1") Y$="規約" GOTO(ETC1) CASE("2") Y$="郵送" GOTO(ETC1) CASE("3") Y$="MAP" GOTO(ETC1) CASE("4") GOTO(CHATS) CASE("5") GOTO(HAND) CASE("6") Y$="BST" GOTO(ETC0100) ELSE GOTO(ETC2) END BC1: H$="No.2 異次元の部屋+No.5 夢と希望の部屋" I$="No.3 好き者の部屋(会員レヴェル制限があります)+No.6 ギャグの部屋" J$="No.4 アニメの部屋+No.7 音楽の部屋" SMENU(H$,I$,J$) VSWITCH(H$) CASE("0") GOTO(SELECT0) CASE("1") ADD(H$,H$,"1") GOTO(BCSEND) CASE("2") ADD(H$,H$,"1") GOTO(BCSEND) CASE("3") ADD(H$,H$,"1") GOTO(BCSEND) CASE("4") ADD(H$,H$,"1") GOTO(BCSEND) CASE("5") ADD(H$,H$,"1") GOTO(BCSEND) CASE("6") ADD(H$,H$,"1") GOTO(BCSEND) ELSE GOTO(BC1) END BC2: H$="No. 8 尻取りの部屋+No.11 マルフィーの法則" I$="No. 9 電脳の部屋+メイン・メニュー・セレクターに戻る。" J$="No.10 TRPGの部屋" SMENU(H$,I$,J$) VSWITCH(H$) CASE("0") GOTO(SELECT0) CASE("1") ADD(H$,H$,"7") GOTO(BCSEND) CASE("2") ADD(H$,H$,"7") GOTO(BCSEND) CASE("3") ADD(H$,H$,"7") GOTO(BCSEND) CASE("4") ADD(H$,H$,"7") GOTO(BCSEND) CASE("5") GOTO(SELECT0) ELSE GOTO(BC2) END #========================================================================= CHAN: #SELECTERからハンドル名変更の場合。 INPUT(A$,"12バイト以内で入力。キャンセルはリターンのみ。","705.60") JUMPE(A$,"",SELECT0) #入力が空白のみの場合。 SEND(Y$) #CHAN送信。 SEND("\R") LEFT(A$,"12") #ハンドル名長調整。 CALL(LOOP0) CONVERT(OFF) SEND(A$) #ハンドル名送信。 CONVERT(ON) SEND("\R") WAIT("\010") SEND("\R") #確認。 VCLEAR("AY") F$="SELECT0" GOTO(SELECT__) #------------------------------------------------------------------------- CHAN3: #MAR.PAD内ハンドル変更指定の場合。 JUMPSRCHY(Z$,"_B",DAT1) #ビギナー会員の場合にはパス。 LEFT(A$,"12") #A$は入力済ハンドル名。長さを調整。 JUMPE(A$,"",DAT1) #ハンドル名指定忘れ。 SEND("CHAN\R") CALL(LOOP0) CONVERT(OFF) SEND(A$) #新ハンドル名送信。 CONVERT(ON) SEND("\R") WAIT("\010") SEND("\R") #確認。 VCLEAR("AY") CALL(LOOP0) GOTO(DAT_) #========================================================================= RHAN: #MAR.PAD内の,ハンドル名を元に戻す指定の場合。 JUMPSRCHY(Z$,"_B",DAT1) #ビギナー会員の場合にはパス。 SEND("RHAN\R") CALL(LOOP0) GOTO(DAT_) #========================================================================= HAND: #SELECTERから,ポインター移動ルーチン。 F$="ETC3" INPUT(H$,"移動する会議室番号を入力。キャンセルはリターンのみ。:","705.60") JUMPE(H$,"",SELECT0) #入力がない場合。 UPCASE(H$,H$) JUMPSRCHY(H$,"M",SELECT0) #MAILモードを指定した場合。 SEND(H$) #会議室番号送信。 SEND("\R") STIMEOUT(4) SWITCH CASE("◆") GOTO(SELECT__) CASE("(BOAD") WAIT(">") END INPUT(H$,"ポインター数を入力。キャンセルはリターンのみ。:","705.60") JUMPE(H$,"",SELECT_) #入力がない場合。 SEND("RP ") #RPはポインター移動コマンド。 SEND(H$) #移動先ポインター数送信。 SEND("\R") STIMEOUT(4) SWITCH CASE("◆") GOTO(SELECT__) CASE("(BOAD") WAIT(">") END GOTO(SELECT__) #========================================================================= PRO: #MAR.PAD指定から。 JUMPE(A$,"",DAT_) #表示先ID等指定ミスの場合。 SEND("PROF ") #PROFIELE表示コマンド。 SEND(A$) #表示先ID等送信。 SEND("\R") CALL(LOOP0) GOTO(DAT_) #------------------------------------------------------------------------- PROF: #PROFIELEルーチン(SELECTERから)。 INPUT(H$,"ID or ハンドルを入力。キャンセルはリターンのみ。:","705.60") JUMPE(H$,"",SELECT0) #ID等の指定がない場合。 CAT(Y$," ") #Y$=PROF CAT(Y$,H$) #Y$=PROF ID SEND(Y$) SEND("\R") SWITCH CASE("☆ プロフィール表示終了 ☆") WAIT("(") CASE("☆ プロフィールが登録されていません ☆") WAIT("(") CASE("☆ そのID(名前)は未登録です ☆") WAIT("(") END F$="SELECT0" GOTO(SELECT__) #========================================================================= ETC4: #SELECTERから,自由行動選択の場合。 F$="ETC2" #戻り先指定フラグ。 GETCRTS(S$,"0") #居場所を格納。 IFSRCHN(S$,"BOAD1)") #BOAD1にメインプロンプトがない場合。 SEND("1\R") #メインプロンプトをBOAD1に固定。 INPUT(H$,"コマンドを入力。キャンセルはリターンのみ。:","705.60") JUMPE(H$,"",SELECT0) #コマンド入力がない場合。 SEND(H$) SEND("\R") WAIT("(BOAD1)") GOTO(SELECT__) #========================================================================= DEF: #MAR.PADで指定した一行伝言の内容表示。 PRINTCR("") PRINTCR("一行伝言に設定されているのは----") PRINTCR(X$) PRINTCR("----です。") F$="ETC" GOTO(SELECT_) #プロンプト表示は待たない。 #========================================================================= ETC1: #SELECTERから,単純コマンド指定の場合。 F$="SELECT0" GETCRTS(S$,"0") #居場所を格納。 IFSRCHN(S$,"BOAD1)") #BOAD1にメインプロンプトがない場合。 SEND("1\R") #メインプロンプトをBOAD1に固定。 SEND(Y$) SEND("\R") WAIT("(BOAD1)") GOTO(SELECT__) ETC1_: #各種ランキング表示コマンドの場合。 SEND(Y$) SEND("\R") WAIT("★ 以上! 現在のランキングですじゃ") F$="SELECT0" GOTO(SELECT__) ETC0100: #未読情報一覧表示の場合(Bコマンド)。 SEND(Y$) SEND("\R") F$="ETC3" GOTO(SELECT__) #========================================================================= BCSEND: #SELECTERから,BC発言の場合。 F$="SELECT0" I$="BC" CAT(I$,H$,"\R") SEND(I$) #BC番号送信。 STIMEOUT(4) SWITCH CASE("◆") GOTO(SELECT__) CASE("メッセージ書く:") WAIT("前の発言を見る:") END CALL(LOOP0) INPUT(K$,"書き込まない場合はリターンのみ。","705.120") IFE(K$,"") #リターン処理をした場合。 K$="/E" CONVERT(OFF) SEND(K$) #入力内容を送信。 CONVERT(ON) SEND("\R") JUMPE(K$,"/E",BCSENDE) #入力がない場合。確認処理を飛ばす。 CALL(LOOP0) SEND("\R") #確認。 BCSENDE: GOTO(SELECT__) #------------------------------------------------------------------------- BCREAD: #MAR.PADから,BC未読処理指定の場合。 JUMPSRCHY(Z$,"_B",DAT1) #ビギナー会員の場合にはパス。 JUMPE(A$,"",DAT1) #BC番号指定ミス。 U$="BC" CAT(U$,A$,"\R") SEND(U$) STIMEOUT(4) SWITCH CASE("◆") GOTO(DAT1_) CASE("メッセージ書く:") WAIT("前の発言を見る:") END CALL(LOOP0) SEND("/E") SEND("\R") CALL(LOOP0) GOTO(DAT_) #------------------------------------------------------------------------- BCWRIT: #MAR.PADから,BC書き込み指定の場合。 JUMPSRCHY(Z$,"_B",DAT1) #ビギナー会員の場合にはパス。 PICKWORD(D$,A$,E$) JUMPE(A$,"",DAT1) JUMPE(D$,"",DAT1) H$=A$ U$="BC" CAT(U$,D$,"\R") SEND(U$) STIMEOUT(4) SWITCH CASE("◆") GOTO(DAT1_) CASE("メッセージ書く:") WAIT("前の発言を見る:") END CALL(LOOP0) CONVERT(OFF) SEND(H$) CONVERT(ON) SEND("\R") CALL(LOOP0) SEND("\R") VCLEAR("H") CALL(LOOP0) GOTO(DAT_) #========================================================================= GAME: SEND("GAME\R") F$="GAME0" #F$はLOOP1内で使用する移動先フラグ。 GAME0: L$=")>" #L$はLOOP1内で使用するプロンプト判断変数。 CALL(LOOP1) F$="SELECT0" #F$はSELECT_内で使用する移動先フラグ。 GOTO(SELECT0) #========================================================================= DL: H$="自由行動します。アップロードやダウンロードはできません。" I$="最新到着データを見ます。" J$="メイン・メニュー・セレクターに戻る。" SMENU(H$,I$,J$) VSWITCH(H$) CASE("0") GOTO(SELECT0) CASE("1") GOTO(DL0) CASE("2") GOTO(DL1) CASE("3") GOTO(SELECT0) ELSE GOTO(DL) END DL0: #DL自由行動。 SEND("DL\R") F$="SELECT0" #DLに入れない場合には,メイン・メニューへ戻る。 STIMEOUT(4) SWITCH CASE("◆") GOTO(SELECT__) CASE("OFF. 速攻ログアウトする") WAIT("Data>") END PRINTCR("□データライブラリの終了までは手動運転です□") DL00: WAIT("−データライブラリを終了しました−") F$="DL" GOTO(SELECT__) #------------------------------------------------------------------------- DL1: #最新DLリスト取得ルーチン。 F$="SELECT0" #DLに入れない場合には,メイン・メニューへ戻る。 SEND("DL\R") STIMEOUT(4) SWITCH CASE("◆") GOTO(SELECT__) CASE("OFF. 速攻ログアウトする") WAIT("Data>") END SEND("N\R") CALL(LOOP0) SEND("T\R") WAIT("−データライブラリを終了しました−") F$="DL" GOTO(SELECT__) #========================================================================= OFF1: #手動伝言書き込み終了処理。 SEND("OFF\R") L$="\013\010:" F$="OFF2" C$="/C\R" #ここまでは,常にC$=C\R。 CALL(LOOP2) SEND("\R") WAIT("メッセージ") CALL(LOOP3) OFF2: INPUT(A$,"一行伝言を入力して下さい。",705.120) CONVERT(OFF) SEND(A$) CONVERT(ON) SEND("\R") JUMPE(A$,"",OUT) JUMPE(A$,"/E",OUT) WAIT(":") SEND("\R") GOTO(OUT) #------------------------------------------------------------------------- OFF4: #指定伝言書き込み終了処理。 SEND("OFF\R") L$="\013\010:" F$="OFF5" #LOOP2での移動先フラグ。 C$="/C\R" #CHAT入りコマンド。 CALL(LOOP2) SEND("\R") WAIT("メッセージ") CALL(LOOP3) OFF5: CONVERT(OFF) SEND(X$) #MAR.PAD指定一行伝言内容。 CONVERT(ON) SEND("\R") JUMPE(X$,"/E",OUT) #指定一行伝言が空白の場合。 WAIT(":") SEND("\R") GOTO(OUT) #------------------------------------------------------------------------- OUT: #マクロ終了処理。 WAIT("切断します−") PRINTCR("") PRINTCR("") PRINTCR(" MACRO STOP! SEE YOU AGAIN! (^o^)/゚") PRINTCR("") PRINTCR(" また来てね!") LOGCLOSE EXIT #マクロ終了。 #========================================================================= ERROR: PRINTCR("□ごめんなさい! 送受信に失敗しちゃった! (;_;)□") WAIT(":") SEND("T\R") WAIT("−データライブラリを終了しました−") VCLEAR("HJKU") CALL(LOOP0) GOTO(DAT_) #========================================================================= CHAT: #汎用CHATルーチン。 WAIT("",1,CHAT) SEND(C$) #C$=C\R or /C\R CALL(CHAT0) IFE(F$,"OFF2") #伝言手動入力の場合。 WAIT("\013\010:") #伝言書き込みプロンプト待ち。 RETURN #CALL先へ戻る。 CHAT0: #送信ルーチン。CHATから。 WAIT("",1,CHAT0) VCLEAR("A") INPUT(A$,"チャットは楽しいね。リターンのみで終了です。",705.120) IFE(A$,"") CALL(CHATERR) CONVERT(OFF) SEND(A$) CONVERT(ON) SEND("\R") IFE(A$,"/E") #/Eは,CHAT終了コマンド。 RETURN #/Eが入力された場合,CALL先(CHAT)へ戻る。 GOTO(CHAT0) CHATERR: #2分間入力がない場合の処理。 SEND("自動運転中で,反応できないの。ごめんなさい。 m(_._)m\R") CHATERR0: JUMPE(F$,"OFF5",CHATERR1) JUMPE(F$,"OFF2",CHATERR1) WAIT("",1,CHATERR0) #OFF直前の場合には,ここでは待たない。 A$="/E" RETURN #CALL先へ戻る。 CHATERR1: #OFF確認直前CAHTの場合。 A$="/E" RETURN #CALL先へ戻る。 #------------------------------------------------------------------------- CHATS: #SELECTERから。 WAIT("",1,CHATS) SEND("C\R") CHATS0: WAIT("",1,CHATS0) INPUT(R$,"チャットは楽しいね。/Eで終了します。",705.120) CONVERT(OFF) SEND(R$) CONVERT(ON) SEND("\R") JUMPE(R$,"/E",CHATS1) JUMPE(R$,"/e",CHATS1) GOTO(CHATS0) CHATS1: WAIT("",1,CHATS1) VCLEAR("R") GOTO(SELECT0) #------------------------------------------------------------------------- CHA: #OFF直前のCHAT。確認リターン前の場合。 SEND("\R") #終了を確認するリターン。 WAIT("\013\010:") CALL(CHAT) GOTO(F$) #========================================================================= LOOP0: #CHATサイン判断。汎用。 SWITCH CASE("T{^。^`}ヨホホホ。") R$="C" #CHATサインがあった場合,Cを格納。 RETURN CASE("+\013\010") WAIT("",1,LOOP0) RETURN CASE("0\013\010") WAIT("",1,LOOP0) RETURN CASE("い\013\010:") WAIT(" ",1,LOOP0) RETURN CASE("\010:") WAIT("",1,LOOP0) RETURN CASE("\010:") WAIT("",1,LOOP0) RETURN CASE("名】:") WAIT("",1,LOOP0) RETURN CASE(">") WAIT("",1,LOOP0) RETURN CASE("):") WAIT("",1,LOOP0) RETURN CASE(":") WAIT("",1,LOOP0) RETURN END RETURN #------------------------------------------------------------------------- LOOP1: #GAME内CHATサイン判断。 SWITCH CASE("T{^。^`}ヨホホホ。") PRINTCR("□CHATが呼びかけられました。GAME終了後,CHATします□") R$="C" #CHATサインがあった場合,Cを格納。 GOTO(F$) CASE(L$) WAIT("",1,LOOP1) RETURN END RETURN #------------------------------------------------------------------------- LOOP2: #OFF直前CHATサイン判断1。 SWITCH CASE("T{^。^`}ヨホホホ。") GOTO(CHA) #確認リターン送信後,CHATへ。CHAでは,F$へ。 CASE(L$) WAIT("",1,LOOP2) RETURN END RETURN #------------------------------------------------------------------------- LOOP3: #OFF直前CHATサイン判断2。 SWITCH CASE("T{^。^`}ヨホホホ。") GOTO(CHAT) RETURN CASE(L$) WAIT("",1,LOOP3) RETURN END RETURN #========================================================================= RETRY: CALL(LOOP0) RETRYD: #DLそのものに入れない場合。UPLOADでも使用。 PRINTCR("□指定ミスか,または,ゆえあって,DLには入れません□") VCLEAR("HUYKS") GOTO(DAT_) #=========================================================================