#========================================================================= #WTERM マクロプログラム 本体 WTMR.MAC v10.5 #========================================================================= START: GETID(W$) #USER ID番号をW$に格納。固定。 PRINTCR(" AUTO PILOT WTMR.MAC v10.5 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") #ビギナー会員の場合。 CHAIN("WTMR_B.MAC$START") IFSRCHY(A$,"gular") #レギュラー会員の場合。 CHAIN("WTMR_R.MAC$START") CALL(LOOP0) #LOOP0内では,R$を設定,CHAT判断フラグ。 SEND("\R") #最初のLOGIN確認。 CALL(LOOP0) LOGOPEN("MAR") #MAR****.LOG作成。 GETCRTS(M$,"1") #未読メール確認。 GETCRTS(N$,"2") #未読会議室発言確認。 C$="C\R" #CHAT入りコマンドを格納。切断直前までほぼ固定。 WAIT("") SEND("DOR OFF\R") #DOR OFF指定送信。 CALL(LOOP0) SEND("ESC OFF\R") #ESC OFF指定送信。 CALL(LOOP0) SEND("NAP OFF\R") #NAP OFF指定送信。 CALL(LOOP0) SEND("SBRP\R") #READ POINTER保存。 CALL(LOOP0) X$="WTMR.MAC" #X$はWTMR_001.MACからの戻り先フラグ。 CHAIN("WTMR_001.MAC$DIR00") #アップ文書有無の確認,文書書き込みマクロへ。 #========================================================================= AAA: #PAD指定処理開始。 S$="MAR.PAD" #MAR.PADは行動指定ファイル。 E$="/" #MAR.PAD内区切り文字。 O$="_" #MAR.PAD内区切り文字。 P$="." #MAR.PAD内区切り文字。 X$="" #戻り先フラグの役割解除。 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: #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$) #/で区切った内容を分離。 JUMPE(D$,"B",DAT1) #旧版指定の場合。 JUMPE(D$,"M",DAT1) #旧版指定の場合。 JUMPE(D$,"C",CHAN3) #ハンドル名変更指定。 JUMPE(D$,"R",BCREAD) #BC読み指定。 JUMPE(D$,"W",BCWRIT) #BC書き指定。 JUMPE(D$,"U",UP) #UPLOAD指定。 JUMPE(D$,"D",DOWN) #DWONLOAD指定。 JUMPE(D$,"P",PRO) #プロフィール取得指定。 IFE(D$,"L",DL_) #DLリスト取得指定の場合は,WTMR_001.MACへ。 CHAIN("WTMR_001.MAC$DL_") IFE(D$,"K",KES) #発言削除指定の場合は,WTMR_001.MACへ。 CHAIN("WTMR_001.MAC$KES") IFE(A$,"",DO) #直接コマンド入力指定の場合は,WTMR_001.MACへ。 CHAIN("WTMR_001.MAC$DO") #------------------------------------------------------------------------- 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: #データアップロード指定。 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(2) SWITCH CASE("◆") GOTO(RETRY) #DLに入る前はRETRYへ。 END CALL(LOOP0) SEND(D$) #DL番号送信。 SEND("\R") STIMEOUT(2) SWITCH CASE("◆") GOTO(DWMIS) #DLに入った後はDWMISへ。 END CALL(LOOP0) 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(2) SWITCH CASE("◆") GOTO(UPMIS) "同一名ファイルが存在する場合はUPMISへ。 END CALL(LOOP0) 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") GOTO(SEND) #SENDへ戻る。 EOF: SEND("/E\R") #概要ファイル送信終了処理。 FCLOSE #概要ファイルを閉じる。 CALL(LOOP0) SEND("\R") #修正確認。 CALL(LOOP0) SEND("1\R") #登録確認。 CALL(LOOP0) SEND("1\R") #送信開始確認。 DELAYM(1500) #同期調整。 UPLOAD(4,S$,ERROR) #F-Xmodem送信。 DELAYM(500) #同期調整。 SEND("\R") #調整のための改行送信。 CALL(LOOP0) SEND("T\R") #DLから抜ける。 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を抜ける。 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(2) SWITCH CASE("◆") GOTO(RETRY) #DLに入る前はRETRYへ。 END CALL(LOOP0) SEND(D$) #DL番号送信。 SEND("\R") STIMEOUT(2) SWITCH CASE("◆") GOTO(DWMIS) #指定DLに入れない場合。 END CALL(LOOP0) SEND("3\R") #DOWNLOAD選択。 STIMEOUT(2) SWITCH CASE("◆") GOTO(DWMIS) #DOWNLOAD不可能の場合。 END CALL(LOOP0) SEND(H$) #DOWNLOADデータ番号送信。 SEND("\R") STIMEOUT(2) SWITCH CASE("◆") GOTO(DWMIS1) #DOWNLOAD番号エラー。 END CALL(LOOP0) SEND("1\R") #確認。 CALL(LOOP0) SEND("1\R") #受信方法選択。 DELAYM(4000) #同期調整。 DOWNLOAD(4,U$,ERROR) #F-Xmodemによる受信。 DELAYM(500) #同期調整。 SEND("\R") #同期調整のための改行送信。 CALL(LOOP0) SEND("T\R") #DLを抜ける。 VCLEAR("HU") CALL(LOOP0) GOTO(DAT_) #------------------------------------------------------------------------- DWMIS1: #データ番号ミスの場合。 CALL(LOOP0) SEND("\R") #リターン送信で,DOWNLOADを抜ける。 DWMIS: #DLに入れない場合。DWONLOAD不可能の場合。 CALL(LOOP0) SEND("T\R") #メインプロンプトへ。 CALL(LOOP0) VCLEAR("HU") GOTO(DAT_) #========================================================================= READ0: #MAR.PADがない場合,一行伝言を代入。 X$="また来るねぇ〜 (^^)/゚" #READへ合流。 READ: #DAT1で格納したU$内容による処理。SELECTERへ。 U$="SELECT0" #U$は未読処理後の移動先フラグ。 GOTO(R1) #未読有無確認ルーチンへ。 READ1: #未読処理終了後,自動伝言入力へ行く設定の場合。 U$="OFF4" GOTO(R1) READ2: #未読処理終了後,手動伝言入力へ行く設定の場合。 U$="OFF1" #------------------------------------------------------------------------- R1: #メール未読確認。 JUMPSRCHN(N$,"あります",R2) #あります,がない場合,M$の判断へ。 GOTO(READ000) #あります,があった場合,未読処理へ。 R2: #メール未読がない場合,会議室未読確認。 JUMPSRCHN(M$,"あります",U$) #両方未読がない場合,指定ラヴェルへ。 #------------------------------------------------------------------------- READ000: SEND("/ALL\R") #/ALLによる未読処理。 CALL(LOOP0) VSWITCH(R$) #CHATメッセージ有無の判断分岐。 CASE("C") CALL(CHAT) #CHATへ。 VCLEAR("R") #CHATから復帰。 GOTO(U$) #指定されたラヴェルへ。 ELSE GOTO(U$) END #========================================================================= SELECT0: #メイン MEMU SELECTER 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) 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$="規約を読みます。+SYSOPとチャットをします。抜ける時は「/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$="B" 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) ELSE GOTO(BC2) END #========================================================================= SELECT_: #CHAT信号判断ルーチン。 VSWITCH(R$) CASE("C") CALL(CHAT) #CHATへ。 VCLEAR("R") #CHATから復帰。 GOTO(F$) ELSE GOTO(F$) END #========================================================================= CHAN: #SELECTERからハンドル名変更の場合。 INPUT(A$,"新しいハンドル名を12バイト以内で入力して下さい。","705.60") JUMPE(A$,"",DAT1) #入力が空白のみの場合。 SEND(Y$) #CHAN送信。 SEND("\R") LEFT(A$,"12") #ハンドル名長調整。 CALL(LOOP0) CONVERT(OFF) SEND(A$) #ハンドル名送信。 CONVERT(ON) SEND("\R") WAIT("\010") SEND("\R") #確認。 VCLEAR("AY") CALL(LOOP0) F$="SELECT0" GOTO(SELECT_) #------------------------------------------------------------------------- CHAN3: #MAR.PAD内ハンドル変更指定の場合。 LEFT(A$,"12") #A$は入力済ハンドル名。長さを調整。 JUMPE(A$,"",DAT_) #ハンドル名指定忘れ。 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内の,ハンドル名を元に戻す指定の場合。 SEND("RHAN\R") CALL(LOOP0) GOTO(DAT_) #========================================================================= HAND: #SELECTERから,ポインター移動ルーチン。 F$="ETC3" INPUT(H$,"ポインター移動をする会議室番号を入力して下さい:","705.60") JUMPE(H$,"",SELECT_) #入力がない場合。 SEND(H$) #会議室番号送信。 SEND("\R") CALL(LOOP0) DELAYM(500) #同期調整。 GETCRTS(A$,"2") #会議室移動確認。 JUMPSRCHY(A$,"◆",SELECT_) INPUT(H$,"移動ポインター数を入力して下さい:","705.60") JUMPE(H$,"",SELECT_) #入力がない場合。 SEND("RP ") #RPはポインター移動コマンド。 SEND(H$) #移動先ポインター数送信。 SEND("\R") CALL(LOOP0) DELAYM(500) #同期調整。 GOTO(SELECT_) #========================================================================= PRO: #PROFIELEルーチン(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") CALL(LOOP0) DELAYM(1500) #同期調整。 F$="SLECT0" GOTO(SELECT_) #========================================================================= ETC4: #SELECTERから,自由行動選択の場合。 INPUT(H$,"コマンドを正確に入力して下さい:","705.60") JUMPE(H$,"",SELECT0) #コマンド入力がない場合。 SEND(H$) SEND("\R") CALL(LOOP0) F$="ETC2" #戻り先指定フラグ。 GOTO(SELECT_) #========================================================================= DEF: #MAR.PADで指定した一行伝言の内容表示。 PRINTCR("") PRINTCR("一行伝言に設定されているのは----") PRINTCR(X$) PRINTCR("----です。") F$="ETC" GOTO(SELECT_) #プロンプト表示は待たない。 #========================================================================= ETC1: #SELECTERから,単純コマンド指定の場合。 SEND(Y$) SEND("\R") CALL(LOOP0) F$="SELECT0" GOTO(SELECT_) ETC0100: #未読情報一覧表示の場合(Bコマンド)。 SEND(Y$) SEND("\R") CALL(LOOP0) F$="ETC3" GOTO(SELECT_) #========================================================================= BCSEND: #SELECTERから,BC発言の場合。 I$="BC" CAT(I$,H$,"\R") F$="BCSEND0" BCSEND0: SEND(I$) 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: CALL(LOOP0) F$="SELECT0" GOTO(SELECT_) #------------------------------------------------------------------------- BCREAD: #MAR.PADから,BC未読処理指定の場合。 JUMPE(A$,"",DAT1) #BC番号指定ミス。 U$="BC" CAT(U$,A$,"\R") SEND(U$) CALL(LOOP0) SEND("/E") SEND("\R") CALL(LOOP0) GOTO(DAT_) #------------------------------------------------------------------------- BCWRIT: #MAR.PADから,BC書き込み指定の場合。 PICKWORD(D$,A$,E$) JUMPE(A$,"",DAT1) JUMPE(D$,"",DAT1) H$=A$ U$="BC" CAT(U$,D$,"\R") SEND(U$) 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) GOTO(SELECT0) #========================================================================= DL: H$="自由行動します。" I$="最新到着データを見ます。" SMENU(H$,I$) VSWITCH(H$) CASE("0") GOTO(SELECT0) CASE("1") GOTO(DL0) CASE("2") GOTO(DL1) ELSE GOTO(DL) END DL0: SEND("DL\R") PRINTCR("") PRINTCR("□DL 終了は「Data>」のところで 「T」 or リターン です□") F$="DL00" DL00: L$=")>" CALL(LOOP1) GOTO(DL) #------------------------------------------------------------------------- DL1: #最新DLリスト取得ルーチン。 F$="DL" SEND("DL\R") STIMEOUT(2) SWITCH CASE("◆") GOTO(SELECT_) #DLに入る前。 END CALL(LOOP0) SEND("N\R") CALL(LOOP0) SEND("T\R") CALL(LOOP0) GOTO(SELECT_) #========================================================================= OFF1: #手動伝言書き込み終了処理。 SEND("OFF\R") L$="\013\010:" F$="OFF2" C$="/C\R" #ここまでは,常にC$=C\R。 CALL(LOOP1) SEND("\R") CALL(LOOP1) 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" C$="/C\R" CALL(LOOP1) SEND("\R") CALL(LOOP1) 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("") PRINTCR(" また来てね!") LOGCLOSE EXIT #マクロ終了。 #========================================================================= ERROR: PRINTCR("□ごめんなさい! 送受信に失敗しちゃった! (;_;)□") DELAYM(500) SEND("\R") CALL(LOOP0) SEND("T\R") VCLEAR("HJKU") CALL(LOOP0) GOTO(DAT_) #========================================================================= CHAT: WAIT("",1,CHAT) SEND(C$) #C$=C\R or /C\R CALL(CHAT0) RETURN CHAT0: WAIT("",1,CHAT0) VCLEAR("A") INPUT(A$,"チャットは楽しいね。",705.120) IFE(A$,"") CALL(CHATERR) CONVERT(OFF) SEND(A$) CONVERT(ON) SEND("\R") IFE(A$,"/E") RETURN GOTO(CHAT0) CHATERR: SEND("自動運転中で,反応できないの。ごめんなさい。 m(_._)m\R") CHATERR0: WAIT("",1,CHATERR0) A$="/E" RETURN #------------------------------------------------------------------------- CHATS: WAIT("",1,CHATS) SEND("C\R") CHATS0: WAIT("",1,CHATS0) INPUT(R$,"チャットは楽しいね。",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: SEND("\R") VSWITCH(F$) CASE("OFF2") CALL(CHAT) GOTO(F$) CASE("OFF5") CALL(CHAT) GOTO(F$) CASE("GAME0") GOTO(F$) ELSE GOTO(CHA00) END CHA00: SWITCH CASE(")>") CALL(CHAT) GOTO(F$) CASE(":") SEND("\R") GOTO(CHA00) CASE(":") SEND("\R") GOTO(CHA00) END CHA1: SEND("0\R") WAIT(")>") CALL(CHAT) GOTO(SELECT0) CHA2: SEND("2\R") WAIT("e:") SEND("0\R") WAIT(")>") CALL(CHAT) GOTO(SELECT0) #========================================================================= LOOP0: #CHAT判断ルーチン(その1)。汎用。 SWITCH CASE("T{^。^`}ヨホホホ。") GETCRTS(Z$,"0") R$="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(">") GETCRTS(Z$,"0") WAIT("",1,LOOP0) RETURN CASE("):") WAIT("",1,LOOP0) RETURN CASE(":") WAIT("",1,LOOP0) RETURN END RETURN #------------------------------------------------------------------------- LOOP1: #CHAT判断ルーチン(その2)。DL,GAMEとOFF処理。 SWITCH CASE("\013\010:CHAT{^。^`}ヨホホホ。") CALL(CHA) CASE("る:CHAT{^。^`}ヨホホホ。") CALL(CHA2) CASE(":CHAT{^。^`}ヨホホホ。") CALL(CHA) CASE("e:CHAT{^。^`}ヨホホホ。") CALL(CHA1) CASE("T{^。^`}ヨホホホ。") GETCRTS(Z$,"0") #Z$は居場所フラグ。 CALL(CHA) CASE(L$) GETCRTS(Z$,"0") WAIT("",1,LOOP1) RETURN END RETURN #========================================================================= RETRY: CALL(LOOP0) RETRYD: #DLそのものに入れない場合。UPLOADでも使用。 PRINTCR("□指定ミスか,または,ゆえあって,DLには入れません□") VCLEAR("HUYKS") GOTO(DAT_) #=========================================================================