旼컴컴컴컴컴컴컴컴컴컴컴컴컴� � Additional Macro Examples � 읕컴컴컴컴컴컴컴컴컴컴컴컴컴� This file contains a number of sample macros. Feel free to copy any of them to COMMO.MAC and to alter them to your own needs. Additions will be made to this file as time permits. Thanks to the users for their contributions. {COMMO} macros can be made to do many amazing things besides just logging into BBS's and doing mail runs (those are indeed popular functions, however). Some of the simplest macros demonstrate this capability. The first two macros are used for reading messages. They use the grey plus and minus keys in the lower right corner of the keyboard. The first one sends a , then clears the screen. Makes messages a lot easier to read since each one starts displaying at the top of the screen. The second macro just sends a . Nice for keyboards without the extra Enter key. Message reading macros 컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� {:gr+} {send |} {clear} {} {:gr-} {send |} {} The next macro is a very important one. It shows the basic method of asking for a filename and uploading the file. Notice that it first sets the variable "file" to the upload directory (the variable "uldir"). Then when the INPUt function executes, the upload directory appears in the input line with a "\". Upload a file using Zmodem (via DSZ) 컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� {:af2} {setv file,%uldir\} {input file,Enter a filename:} {exec-AW DSZ port %_por sz -m %file} {} Start my mail reader after a mail run 컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� {:cF4} {exec-N slmr} {} SLMR The next two utilities are used in various macros to wait for carrier detect to drop, then continue dialing (ncr) and to hangup when necessary and continue dialing (hng): {:ncr} {:nc1} {pause 1} {ifca nc1} {pause 1} {dial ,} {beep} {} {:hng} {pause 1} {hangup y} {pause 3} {dial ,} {beep} {} My generic login macro will login to most popular BBS's. The generic login subroutine can be called from mail run macros, etc. The GOLOok with the ";passwor" ignores the string "password" in the opening instructions on an Auntie board. Put {login} in your Dialing Directory macro field. Generic login macro 컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� {:login} {capture y,c:\commo\commo.cap} RBBS, PCBoard, Auntie, etc. {asci ,} {call gls} {} Generic login subroutine 컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� {:gls} {setlook 60,hng,10,|} {:li1} {golo li2,(enter)} {golo li3,graphics (enter)} {golo li4,first name} {golo li5,last name} {golo li3,correct} {golo li1,;passwor} {lookfor password} {send ~%_pas|} {return} {:li2} {send ~|} {goto li1} {:li3} {send ~y|} {goto li1} {:li4} {send ~Fred|} {goto li1} {:li5} {send ~Brucker|} {goto li1} Here is a macro using variables to do a mail run on a PCBoard with a MarkMail door or a QMail door. It will upload a reply packet if one exists, delete the packet if the upload is successful, then log off. If there is no reply packet it will download new messages and log off. At the end it will wait for carrier detect to drop, then continue multi-number dialing. The subroutines "mail_up" and "mail_dn" can be changed to use any protocol. The supplied ones use the Internal Xmodem-1k. Four variables must be set prior to starting this macro. These are set in the Linked Macro specified in the Dialing Directory entry. For example, to call Northern Lights and use the QMail door, the Linked Macro looks like this: Northern Lights 컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� {:northern} {setv nodeid,nlbbs} Set node id {setv maildoor,qmail} Set door type {setv nomsgs,sorry, but no} Set message to LOOKfor if no messages {setv ptim,2} Set prompt timer duration {goto pcbmail} GOTO the mail run macro Or here is the Linked Macro for Channel 1 using the MarkMail door: Channel 1 컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� {:chan1} {setv nodeid,channel1} {setv maildoor,markmail} {setv nomsgs,no messages found} {setv ptim,2} {goto pcbmail} PCBoard generic mailrun 컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� {:pcbmail} {capt y,c:\commo\%nodeid.%_day} {asci ,} {setl 30,hng} {look ^g} {call gls} {setl 60,hng,%ptim,n|} {look command?} {setl 90,hng} ** turn off prompt timer {send open %maildoor|} {look %maildoor command?} {ifex %uldir\%nodeid.rep,,mr_dl} ** if no reply, go to download {:mr_ul} {send u|} {look %nodeid.rep} {call mail_up} {look command?} {ifcon mr_gb,mr_ul} ** if error, try again {:mr_dl} {send d|} {push} {golo mr_gb,%nomsgs} {golo mr_sy,when done?} {golo mr_sy,messages (y/n)?} {look %nodeid.qwk} {pops} {call mail_dn} {look command?} {ifcon ,mr_dl} ** if error, try again {:mr_gb} {send g|} {goto ncr} {:mr_sy} {send y|} {return} {:mail_dn} {rxmo %dldir\%nodeid.qwk} {comp %_err,0} {return} {:mail_up} {sxmo-k %uldir\%nodeid.rep} {ifer 1,mu_end} {exec-N del %uldir\%nodeid.rep} {:mu_end} {comp %_err,0} {return} This is my mail run macro for Directory Assistance using the JIMMER mail door. If a reply packet exists, it will be uploaded. If there is no reply packet it will download the new messages. Directory Assistance mail run 컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� {:damail} {unmark 3dir 2dir} {setv nodeid,dirasnt} {capt y,\commo\dir.%_day} {asci ,} {setl 60,off} {golo ncr,no carrier} {look =-=-=-=-=-} {setl 60,off,3,n|} {look first name} {send fred;brucker;%_pass%;!main|} {golo ncr,no carrier} {look your command} {send open jimmer|} {setl 60,off} {call dm3} {ifex %uldir\%nodeid.rep,,dm1} {:dm0} {send u|} {look %nodeid.rep} {call mail_up} {call dm3} {ifcon ,dm0} {send g|} {goto dm2} {:dm1} {send d|} {golo off,no messages to download} {golo off,you must select} {setl 300,off} {look %nodeid.qwk} {call mail_dn} {call dm3} {ifcon ,dm1} {:dm2} {send g|} {look slam!} {goto off} {:dm3} {push} {golo dm4,to continue>} {golo dm5,no carrier} {look your selection} {pops} {return} {:dm4} {send |} {return} {:dm5} {pops} {goto ncr} Here's my latest whizbang quoting macro. It saves the Screen Image File pathname in the variable "scrsav." Then it sets the Screen Image File to a temporary file and goes into Scrollback. In Scrollback I write a block of text to disk (the quote), then exit. My editor (QEdit) is then executed on the temporary file. I do what I need there to dress up the quote (like add quoting marks, etc.). When I save the file and exit the editor, the macro does an ASCII Upload of the file and deletes it. Then the Screen Image pathname is restored to what it was before. Quoting macro 컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� {:cf6} {setv scrsav,%_scr} {screen n,%dldir\temp} {scroll} {exec-N q %_scr} {asci %_scr} {exec-N del %_scr} {screen n,%scrsav} {}