home *** CD-ROM | disk | FTP | other *** search
/ Beijing Paradise BBS Backup / PARADISE.ISO / software / BBSDOORW / SCRIPTS.ZIP / PHOMAST.T < prev    next >
Text File  |  1995-02-26  |  82KB  |  1,529 lines

  1.  
  2.   PHOMAST.T  [Version 6.4a]                                  Michael R. Ash
  3.   Revised 26 Feb 95 Chuck Forsberg
  4.  
  5.  
  6.   This is the latest in a series of updates to PHOMAST.T scripts designed
  7.   to get you up and running utilizing the power of Professional-YAM or ZCOMM.
  8.   For performance and clarity I have moved my opening remarks and instructions
  9.   about setting up this script to a separate file called: -> PHOMAST.DOC <-
  10.   New features of this update include fully automated menu configuration,
  11.   autospeed detection, and lots of slick coding examples...
  12.  
  13.   When run for the first time this script will generate a new file called
  14.   'PROFILE.DAT' containing specific configuration information that in the
  15.   past you used to have to know and write into the script with an editor
  16.   in advance before using YAM or ZCOMM.  This file, 'PROFILE.DAT', if present
  17.   is loaded every time YAM/ZCOMM is run and defines your generalized defaults.
  18.   I have included comments everywhere to help you understand the fascinating
  19.   and comprehensive script language included in YAM and ZCOMM.  Any information
  20.   that follows a colon (:) mark is not read by YAM or ZCOMM since it is taken
  21.   as a comment.  When you are instructed to uncomment a line it means to load
  22.   the script into an editor and delete the colon at the start of the line so
  23.   the program can use it.
  24.  
  25.   When ZCOMM is loaded it looks in the \ZCOMM subdirectory for a file called
  26.   PHOMAST.T  -=-  When YAM is loaded it looks in the root for a file called
  27.   PHONES.T (you could rename PHOMAST.T to PHONES.T and put it in the root
  28.   but there are a couple of better ways to handle this). The simplest and
  29.   most flexible method is to use the DOS 'set phones' command (shown below)
  30.   to tell YAM/ZCOMM where to find its phones file.  Another method is to
  31.   have PUTSNP.EXE (the serial number installing routine) change the default
  32.   location of the phones files.
  33.  
  34.                          set PHONES=c:\yam\phomast.t
  35.  
  36.   The line above can be added to your AUTOEXEC.BAT file to tell YAM where
  37.   to look for its phones file.  ZCOMM users won't need to use this line
  38.   unless they want to have PHOMAST.T in another directory since it is already
  39.   the default location for ZCOMM.  The phones file (PHOMAST.T) gives YAM/ZCOMM
  40.   directions on how you want the package to operate.
  41.  
  42.   For those of you that haven't heard of YAM, it's the short name for
  43.   Professional-YAM, a commercial package that includes all of ZCOMM (its
  44.   shareware subset) plus advanced capabilities for professional tele-
  45.   communications requirements.
  46.  
  47.   Dialing entries can be placed anywhere in the script but since the script
  48.   is read from the top down, entries placed near the top will be found first.
  49.   A simple dialing entry is usually one line as below, with the label
  50.   starting in column 1.  Using the command 'call pcmag' will cause the
  51.   following.  The old line will be 'hung-up', speed will be set to 2400 baud,
  52.   number dialed, then Error correction turned on and terminal mode entered
  53.   in 8 bit graphics format.  Just copy this line, make a new label, add a
  54.   new number and you're all set with a new phone directory entry...
  55.  
  56. pcmag   sp 2400   1-212-503-5255 ena -E;t -8g    :PC Magazine BBS
  57.  
  58.                         ------------------------------
  59.  
  60.   I have tried to make this script as perfect as possible but like most
  61.   things in life there are no guarantees that I found everything.  I wish
  62.   you the best of luck with YAM or ZCOMM.  Please let me know if you run
  63.   into problems...
  64.  
  65.   I have spent hundreds of hours over many years on this script to make
  66.   ZCOMM or YAM useful to new users right out of the starting blocks.  If
  67.   this has helped you get a better grasp of the package I would like
  68.   to hear from you.  If this really made a difference, and you think my
  69.   time is was well spent, throw a couple bucks my way and I will go out
  70.   for a taco...
  71.  
  72.   Whatever you decide, I would appreciate a postcard, just to get an
  73.   idea who this script finally reached...
  74.  
  75.                                             Michael Ash
  76.                                             POB 231323
  77.                                             Encinitas CA 92023-1323
  78.  
  79.  
  80.                       ---------- Have Fun ----------
  81.  
  82.  
  83. ::----------------------------------------------------------------------------::
  84.  
  85.          -- Special AutoSense Dialing Script with speed fallback --
  86.  
  87.   Below is specialized code you don't need to concern yourself with.  If you
  88.   want to change the default menu colors or the initial generic modem string,
  89.   search for the character <*> to direct you to those parts of the code. Again
  90.   this is optional since 95% of the users out there will be able to use the
  91.   script as is.
  92.  
  93.   The dial routine below replaces internal YAM/ZCOMM carrier detect code...
  94.   This dialing routine is called by the first line in 'setup' section of code
  95.   by the command:  set mcommand "gosub dial"
  96.  
  97.   Calls you make with your modem at 2400 baud that connect to 2400, 1200,
  98.   or 300 baud modems on the other end will automatically change your modem
  99.   speed to match.  It is IMPORTANT to give Xn value in modem setup string the
  100.   highest number available to insure your modem answer using full words, not
  101.   just codes...
  102.  
  103.   To manual dial a voice call use construct: 'xxx-xxxxxv' where 'xxx-xxxx'
  104.   is the phone number you want to call from the command line followed by the
  105.   letter 'v'.  If you need more complex dial routines for mnp and high speed
  106.   modems see 'adial' label under PHONES.T provided with Professional-YAM or
  107.   download DIALERS.ZIP from the scripts subdirectory on Telegodzilla, the
  108.   YAM/ZCOMM support BBS, or FTP.cs.pdx.edu pub/zmodem FTP site.
  109.  
  110. dial    pat     :Clear old patterns
  111.  
  112.         if "%telno<2" echo "\n\nPhone number must be at least 2 numbers\n\n"; return
  113.         bye                   : %telno is string containing phone number
  114.     sleep 10
  115.  
  116.         if "%mprefix<2" goto mandial   :If no modem prefix defined (e.g. ATDT)
  117.                                        :This allows for manual phone dialing.
  118.         pat 0c "v"                     :Search for "v" voice call
  119.                                        :Below list possible messages from modem
  120.         pat 1l CONNECT; pat 2 "NO CARRIER"; pat 3 BUSY; pat 4 RING; pat 9 OK
  121.  
  122.         put %mprefix; putw %telno\r    :Send dial prefix (e.g. ATDT) and phone #
  123.  
  124.         if !0  goto nov :Skip instruction if not a voice call (eg not a ';')
  125.         echo "\n\n\n\n\n\t\t\t Voice Calling in Progress...\n\n"
  126.         echo "\t\t    >>> Once phone ringing Hit RETURN <<<\n\n"
  127.         if y bye ; return        :once key hit, hang up modem...
  128.  
  129. nov:
  130.         wait -f72
  131.         while "4&&!L>3" wait -f40       :while ringing less then 4 times wait
  132.         if "n||2||3||9" echo "No connection made..." pat; o; fail
  133.  
  134.         while "!c&&L<20"  sleep 1       :wait for slow carrier detect
  135.     if "hCONNECT" ss y "[0-9]+";  estimate 0 z0
  136.     if "hCARRIER" ss y "[0-9]+";  estimate 0 z0
  137.     if "hCONNECT" ss y "[0-9]+"; ife az0<4800 speed z0; else handshake on
  138.  
  139.     set telno ""                    :erase telephone number from variable
  140.     dis -d
  141.         return
  142.  
  143.         :: If modem prefix string less than 2 characters, Manual dialing
  144.         :: is assumed.  This allows the special case where you may have
  145.         :: to have an operator make the call (or dial manually on phone)
  146.  
  147. mandial:
  148.         : putw "ATZ\r"        :put modem in standard configuration
  149.         echo "\n\n\n     Please dial %telno... \n"
  150.         lput "     Once dialed wait for FIRST RING then hit F1 and hang up the phone!  "
  151.         t             :Put into terminal mode to prepare modem...
  152.         put "ATD\r"   :Force modem to answer
  153.         echo "\nIf you want to have MODEM do the dialing hit Shift-F6 and change option...\n"
  154.         return
  155.  
  156.  
  157. ::
  158. :: Advanced Dial shell  Rev 5-8-91
  159. ::
  160. ::  String vars: s0: original speed   s1:non empty to lock interface speed
  161. ::    s2: Current dial option   s3:Current telno
  162. ::      s4: Remaining alternate telnums    s5: provisional speed
  163. ::    s8: Result string from modem    s9: empty means no connection
  164. ::
  165. ::    Bypass fail command if called as gosub adial,nofail
  166. ::
  167.  
  168. :: Call modem specific init routine
  169. initmodem
  170.     sets s0 %args
  171.     gosub init.%lib/%MODEM
  172.  
  173. adial    
  174.     set s8 "h/w"; set s9 "port"
  175.     if "itelno,1" if dX echo "Vritual Channel 1"; return
  176.     if "itelno,2" if dX echo "Vritual Channel 2"; return
  177.     if "itelno,3" if dX echo "Vritual Channel 3"; return
  178.     if "itelno,1" port 1;  set dirrx "";  echo "Port 1"; return
  179.     if "itelno,2" port 2;  set dirrx "";  echo "Port 2"; return
  180.     set s8 ""; set s9 ""
  181.     if "%telno<2" echo "Please do not use \"call adial\""; abort
  182.  
  183.     set? s0 S;  sets s4 %telno
  184. adia2:    split s4 "+" ""; sets s4 %z1; sets s3 %z0
  185.     set s1 ""; split s3 "/" ""; sets s3 %z0; sets s2 %z1
  186.     handshake sw;  pat;  sets s5 "%s0"
  187.     echo "PORT = %dport  MODEM = %MODEM  modifier = %s2"
  188.     if js2,mnp set s1 "mnp"
  189.     if js2,_s set s1 "_s"
  190.     if js2,lock set s1 "lock"
  191.     if js2,1200 sp 1200; set s5 1200
  192.     else if js2,300 sp 300; set s5 300
  193.     else if S==450 sp 300 echo "300 bps"
  194.     else if !%s1 if "S<9500&&S>1201" sp 2400 echo "2400 bps"
  195.     if !dv bye
  196.  
  197.     :: set up for modem specific dialnum routine
  198.     set s8 ""; set s9 ""
  199.     gosub dialnum.%lib/%MODEM
  200.     pat;  if %s9 goto adiend
  201.     if %s4 echo "Attempting %s4";  speed s0;  goback adia2
  202.     bye; bye; if "!jargs,nofail" fail
  203.  
  204. adiend:    sets telno %s3        : Telephone number we connected to
  205.     if !js2,nodel queue delete
  206.     if dl<2 echo "Please type t<Enter> to enter terminal function."
  207.     return
  208.  
  209.  
  210. ::----------------------------------------------------------------------------::
  211. ::                                                                            ::
  212. ::              >>>  This SETUP script is where it all begins <<<             ::
  213. ::                                                                            ::
  214. ::      In both Professional-YAM and ZCOMM "setup" is the first subroutine    ::
  215. ::      executed.  In a departure from the standard PHONES script, this       ::
  216. ::      version of the phones file actually looks for another file called     ::
  217. ::      PROFILE.DAT where specific setup information is stored.  If this      ::
  218. ::      file doesn't exist, this script will actually write the code.  This   ::
  219. ::      allows for easy menu modification of things like PORT number and      ::
  220. ::      Dialing Prefix.  Once an entry is made using the menu, a new          ::
  221. ::      PROFILE.DAT file is written to disk and used in the future to load    ::
  222. ::      saved setup information.  The examples assume the modem responds      ::
  223. ::      to the HAYES command set and either COM1 or COM2 connected to a       ::
  224. ::      modem.  Others can modify the script for their application...         ::
  225. ::                                                                            ::
  226. ::      This allows for easy setup modification without the use of an editor  ::
  227. ::      to change configuration information -=- especially useful to laptop   ::
  228. ::      users out there who may need to quickly change dialing configuration  ::
  229. ::      while on the road.  Setup code has been moved to the bottom of the    ::
  230. ::      script since it is run only once at startup...                        ::
  231. ::                                                                            ::
  232. ::----------------------------------------------------------------------------::
  233.  
  234. setup:  lput "\r\n\n...working\r\n\n"  goto do_it    :skip to 'setup' code
  235.  
  236.  
  237. ::============================================================================::
  238.  
  239. ::     --- Some San Antonio Bulletin Boards using simple Phone Directory ---
  240. ::     Remember if you are out of the area you must add (512) area code...
  241.  
  242. apco24     speed 2400  496-5558 ena -E;t -8g  :membership board #
  243. apco12     speed 1200  496-5558 ena -E;t -8g
  244. public     speed 1200  434-1557 ena -E;t -8g  :APCO public BBS
  245. chess      nolog speed 1200 494-5478 ena -E;t -8g  :Chess BBS
  246.  
  247. ::  Note to users -- Some of the above San Antonio bulletin boards operate
  248. ::  at speeds higher than 1200 baud.  If you have a 2400 baud modem, just
  249. ::  edit the 'speed 1200' to read 'speed 2400' as appropriate in the above
  250. ::  directory.  Want to add other favorites?  Just add them in with an ASCII
  251. ::  text editor using the above as example entries.  It's easy!  AreaCode=512
  252.  
  253. ::  To call one of these just give the command 'call buerg' for example...
  254.  
  255. ::                     --- Some Classic BBS systems ---
  256.  
  257. buerg24    sp 2400   1-707-778-8944 ena -E;t -8g    :Vern Buerg's BBS
  258. buerg12    sp 1200   1-707-778-8944 ena -E;t -8g
  259.  
  260. qedit      speed 1200 %l,404-296-9681 ena -E; kill :QEdit Sammy Mitchell (area 5)
  261.            restime; create -S+ %tmp\qedt%d.log ; t -8g
  262.  
  263. virusinfo  sp 2400 %l,408-988-4004 ena -E;t -8g  :John McAfee Viruscan -voice 408-988-3832
  264.  
  265. ::               -=- End of simple phone directory entries -=-
  266. ::  ---------------------------------------------------------------------------
  267.  
  268. menu:  cls                  :On screen Menu Generation...
  269.   set n9 "Pro-YAM"; if dS set n9 " ZCOMM "
  270.  
  271.   echo "                   >>>  %n9 Function Key Menu  <<<                          "
  272.   echo "  Alt-N  EMERGENCY EXIT, 'Nuke It' to get out of trouble/escape a command       "
  273.   echo "                                                                                "
  274.   echo "  F1  Exit Circular Buffer            F2  Enter Circular Buffer                 "
  275.   echo "  F3  OPEN Capture file               F4  Send ASCII Text                       "
  276.   echo "  F5  Send Kermit Upload              F6  Send Zmodem Upload    <<BEST>>        "
  277.   echo "  F7  Receive CrcXmodem Download      F8  Send CrcXmodem Upload                 "
  278.   echo "  F9  Press for THIS HELP SCREEN      F10 Online Manual                         "
  279.   echo "  Alt-1  Get DOS Command prompt       Alt-2  Get %n9 Command prompt         "
  280.   echo "                                                                                "
  281.   echo "  sF3  Holds you on-line...           sF4  Use Turbolearn Script Writer         "
  282.   echo "  sF6  Change YOUR defaults           sF7  Dialing Menu example                 "
  283.   echo "                                                                                "
  284.   echo "  aF1  AutoLog B&F Tech BBS (2400B)   aF2  AutoLog Olde Guard BBS (1200B)       "
  285.   echo "  aF3  CLOSE Capture file             aF4  CIS DEMO at 1200 baud                "
  286.   echo "  aF5  Call PC Magazine's BBS         aF6  Enter HOST MODE operation            "
  287.   echo "  aF7  Sign name on-line...           ALT-F9  Edit PHOMAST.T script             "
  288.   echo "                                                                                "
  289.   echo " TO CALL OTHER BBSs: enter 'call name' where name is a label -=- LD service \45l, "
  290.   echo "    >>To DIAL A NUMBER just enter number followed by ;t  (e.g. 523-8994;t)<<    "
  291.   echo "       -- CompuServe-B, KERMIT, and ZMODEM download automatic --                "
  292.   echo "  Stop Redialing ---- press <CR>      Hangup w/o pgm exit  - enter 'o'          "
  293.   echo "  PgUp into Buffer; <CR> to return    -> EXIT hit F1 then -- enter 'off'        "
  294.   return
  295.  
  296.                           --------------------------------
  297.  
  298. capture:                      :called by F3 to generate capture file...
  299.         acceptl1 s1 "\r\n\n\t Do you want to save what has already past as well (Y/n)? "
  300.         if is1,n  kill      : kill old buffer and start new...
  301.         accept s1 "\t Enter name of Capture File: " create -S+ %s1 lput "\r\n"
  302.         return
  303.  
  304. ::                              ---------------------
  305.  
  306.         Here is a slick way to stay on-line in systems that will log you
  307.         off if you don't hit the keyboard...  Below is an example of how
  308.         to use text positioning (Now Active) to make this happen.
  309.  
  310. hold:   lput "\E[s\E[f\E[33m"  :save cursor position, move to top line, change color
  311.         lput "══════════════════  \E[3m\E[5mHOLDING...\E[0m\E[33m Press SPACE-BAR to continue!  ═════════════════\E[0"
  312.         lput "\E[u"     :restore cursor to line where it was called
  313.  
  314.         :: The line below sends to remote what ever is stored in variable s8
  315.         :: (usually space,BS define at 'setup') until a key is hit (!k). It
  316.         :: allows you to modify what is sent to remote to hold.  For example
  317.         :: on a VT emulation you would use set s8 " \177" for space, backspace/
  318.         :: delete.
  319.  
  320.         while "!k" putw %s8  sleep 20   :While no keyhit keep adding chars
  321.  
  322.         lput "\E[f"     :put cursor on top line
  323.         lput "\E[33m════════════════════════════════  ON-LINE  ═══════════════════════════════════\E[0m"
  324.         lput "\E[u"     :restore cursor to line where it was called
  325.  
  326.         return          :return to calling code
  327.  
  328.  
  329. ::----------------------------------------------------------------------------::
  330. ::                     --- Color Generation examples ---
  331. ::     To see this just give the command 'gosub color' from the prompt...
  332.  
  333. color:
  334.      cls; echo "\n\t\t\t\E[32m\E[41m >>> ANSI Color Calls <<< \n"
  335.      echo "All that is required is you precede the text you want in color with \\E[xxm."
  336.      echo "For example: { echo \" This is \\E[32mGREEN\\Em\" } will make GREEN green.\n"
  337.      echo "Foreground:\n"
  338.      lput "\E[47m\E[30m\\E[30m\E[40m  \E[31m\\E[31m  \E[32m\\E[32m  \E[33m"
  339.      lput "\\E[33m  \E[34m\\E[34m  \E[35m\\E[35m  \E[36m\\E[36m  \E[37m\\E[37m"
  340.  
  341.      echo "\n\nBackground:\n"
  342.      lput "\E[40m\\E[40m \E[30m\E[41m \\E[41m \E[42m \\E[42m \E[43m \\E[43m "
  343.      lput "\E[44m \\E[44m \E[45m \\E[45m \E[46m \\E[46m \E[47m \\E[47m \n\n"
  344.  
  345.      echo "Modifiers (primary here is green):\E[32m\n"  :Switch foregrd back to green
  346.      lput "\E[0mReset,  Bold, Faint, Italics, Underline,    Blinking,"
  347.      lput "    Reverse, Invisible\n\r"
  348.  
  349.      lput "\E[0m\\E[0m   \E[1m\\E[1m \E[2m\\E[2m\E[0m   \E[3m\\E[3m\E[0m     \E[4m\\"
  350.      lput "E[4m\E[0m    \E[5m\\E[5m or \\E[6m \E[0m  \E[7m\\E[7m\E[0m     \\E[8m"
  351.  
  352.      echo "\E[36m\E[22f\t\t   Notice \\E[22f puts cursor on 22rd line...   \E[23f"
  353.  
  354.      lput "\t\t\t  Hit Any Key to continue..."
  355.      ife y  ;          :basically a no-op wait for keystroke (nul else nul)
  356.  
  357.      cls; echo "\E[21f\t\t\t>>> All Numeric Color Calls <<<"
  358.      set s0 0
  359.      p#255; p$5; cls; display noautowrap
  360.      while L<129 obey "pn%s0" lput "\E[m %s0  \r\n" setn s0 s0+1
  361.      pn130; p$80; p#24; lput "\E[10;H\E[m"
  362.      pn1055; lput "\n\t\t\t\E[mFor \E[5mBLINKING\E[m text just add 128\r\n\n"
  363.      lput "\t  Possible colors for: *, @, n, r, s and u Numeric Parameters\r\n"
  364.      lput "\t  where: *=highlite (color shown when text in circular buffer is\r\n"
  365.      lput "\t  marked), @=messages, n=normal text, r=reverse, s=status, u=underline."
  366.      lput "\r\n\n\t  Use these number in the following format 'px#', where x is the\r\n"
  367.      lput "\t  parameter choice (e.g. n,r,s etc.) and # is the color number\r\n"
  368.      lput "\t  above... For example pn2 give light green color to normal text.\n\n\n\n\r"
  369.      return
  370.  
  371. :==============================================================================:
  372. :                      --- Auto Logon Examples --                              :
  373.  
  374. bnf : Autolog onto the Back and Forth Technical Support BBS.  This is a
  375.     : board I talk to more than all others.  This programming below
  376.     : demonstrates an example of an autolog script for WildCat BBS.
  377.  
  378.     : Comment in the line below once you have a password, if you want to enter
  379.     : it and not have it done automatically...
  380.  
  381.     : cls; accept s1 "\E[21f\E[36m\t\t\tEnter your Password now: \E[8m"
  382.  
  383.     cls ;  echo "\n\n\t\t   Calling B&F Support (Line 1)...  TURBO Mode \n"
  384.     echo "\t\t       -- If no answer try 'call bf2' -- \n\n"
  385.     lput "\t\t Are you calling from the San Antonio Area (y/N)? "
  386.     ife y nolog lput "\r\n\n" speed 2400 670-0954 ena -8g goto go; else lput "\r\n\n"
  387.     speed 2400 %l,512-670-0954 ena -8g     :Default of long distance call...
  388.                                            :Note %l, for long distance prefix
  389.  
  390.     goto go   : The 'nolog' command above will prevent local call logging to
  391.               : the 'calllog' file.
  392.  
  393. bf2 cls; echo "\n\n\t\t   Calling B&F Support (Line 2)...  TURBO Mode \n\n"
  394.     lput "\t\t Are you calling from the San Antonio Area (y/N)? "
  395.     ife y nolog lput "\r\n\n" speed 2400 670-1809 ena -8g goto go; else lput "\r\n\n"
  396.     speed 2400 %l,512-670-1809 ena -8g   :Long Distance using %l, service
  397.  
  398. go: cd %tmp        : UNCOMMENT NEXT LINE once you have a password defined...
  399.     : lput "\n\n\n Please Standby...  "; display inhibit
  400.     : pat 5ci "N]on"  "n"     : Watch for N]onStop incase it's there...
  401.  
  402.  
  403. ::  Note you will have to log-on manually first to get a password on this
  404. ::  system.  Since you don't have a password assigned, the line below
  405. ::  skips the rest of the auto log-on and hooks you to this BBS.
  406. ::  When you have a name and password, add them in the 'putw' statement
  407. ::  BELOW and DELETE (or comment out) the NEXT line and uncomment
  408. ::  lines above ('lput "\n\n\n Please Standby..." and 'pat...')
  409.  
  410.          goto bv  :just put to codeset that watches for carrier...
  411. ::       ^^^^^^^^^:delete this after name/password loaded below!
  412.  
  413.  
  414.     pat 1i "Name? " ; wait; put "PUT YOUR LOGIN NAME HERE\r"
  415.     pat 1i "word: " ; wait; put "PUT YOUR PASSWORD IN HERE\r"
  416.     :  pat 1i "word: " ; wait; put "%s1\r"  :if you used passwd prompt above
  417.  
  418.     display noinhibit; lput "Account verified...  "; display inhibit
  419.     pat 1i "    " ; wait; put " "
  420.     pat 1i "[y/N]" ; wait; put "n"
  421.  
  422.     display noinhibit; lput "Login Complete... \n\n "
  423.  
  424.     ::                    >>> Alarm Section <<<
  425.  
  426.     display nobell=visual               :Turn bell back ON
  427.     lput "\r\n\n\t\t  Hit *BACKSPACE* key to \E[3m\E[5mSTOP\E[0m alarm..."
  428.     sleep 30                 :Give 3 seconds for response before alarm
  429.     while "!k&&L<20" lput "\7\7"        :For 20x and While nokey, make noise
  430.     if k goto bv                        :If keyhit then skip next call
  431. bv: : cls
  432.     :: display bell=visual                 :quiet bell
  433.     pat                                 :clear patterns
  434.     pat 1i "Thank you for calling"      :watch for goodbye from BBS
  435.     pf3                                 :set check wait for 3 second
  436.     while "!1&&c" wait                  :while carrier present wait here
  437.     echo "\n\n"
  438.     return
  439.  
  440. :            --- An example of a TComm BBS that has ZCOMM users ---
  441.  
  442.  
  443. oldguard  cls; echo "\n\t\t       Now calling Olde Guard at 1200 Baud \n\n"
  444.  
  445.           : Note I have default from menu to call at 1200 - just change
  446.           : entry for 'set fa2' to oldg24 if you want 2400 by default.
  447.  
  448.           ena -E -Z -8g                 :enaBLE Error ck, auto d/l, w graphics
  449.           nolog; speed 1200             :turn off log and set speed 1200 baud
  450.           goto number                   :Skip 2400 baud dial
  451.  
  452. oldg24    cls; echo "\n\t\t       Now calling Olde Guard at 2400 Baud \n\n"
  453.           ena -E -Z -8g                 :enaBLE Error ck, auto ZModem w graphics
  454.           nolog; speed 2400             :turn off log and set speed 2400 baud
  455.  
  456. number:
  457.           lput "\t\t Are you calling from the San Antonio Area (y/N)? "
  458.           ife y nolog lput "\r\n\n"  684-4470 ena -8g goto go; else lput "\r\n\n"
  459.           %l,512-684-4470               :Long distance  (outside San Antonio)
  460.                                         :Note the %l, selects Long Distance service
  461. go:       cls
  462.           : echo "\E[34m\n\n\t\t >>> Welcome to Olde Guard BBS -- Please standby <<<"
  463.           : display inhibit             :turns off display for opening setup...
  464.                                         :(use this to not show opening screens)
  465.           ena -E -Z -8g                 :enaBLE Error ck, auto ZModem w graphics
  466.           pat; pat 1i "ENTER"           :Clear patterns and look for ENTER
  467.           wait                          :Wait for pattern
  468.           : put "\rn\ry\r\r"              :REQUEST graphics and color
  469.           put "\r\r\r"                  :SKIP graphics and color
  470.           restime                       :Reset status clock  (Yam Only)
  471.           pat 1i "right (y/N/why)?"
  472.           wait                          :wait for tcomm...
  473.           : display noinhibit           :turn display back on if off
  474.           : pat 1i "~~"; wait           :Watch and for opening screen
  475.           : put "\013"                  :Once found Ctrl-K out of it...
  476.           pat 1i "ast name: "           :Look for log in prompt
  477.           wait                          :Wait until prompt occurs
  478.  
  479. ::        Note you will have to log-on manually first to get a password on Olde
  480. ::        Guard...  Since you don't have a password assigned, the line below
  481. ::        skips the rest of the auto log-on and hooks you to the BBS.
  482. ::        When you have a name and password, add them in the 'putw' statement
  483. ::        BELOW and DELETE (or comment out) the NEXT line...
  484.  
  485.           goto bv  :just put to codeset that watches for carrier...
  486. ::        ^^^^^^^^^:delete this after name/password loaded below!
  487.  
  488.           putw "FIRST LAST NAME\rPASSWORD\r"     :Enter name / password
  489.  
  490. ::        --- Note comment out next four lines if you want bulletins ---
  491.           pat 2i "=="              :Look for bulletin menu if turned on
  492.           wait                     :wait until found...
  493.           put \013                 :Ctrl K to skip this menu
  494.           put "q\rm\r"             :Drop to mail menu level to prevent timeout
  495.  
  496. ::                            >>> Alarm Section <<<
  497.  
  498.           display nobell=visual           :Turn bell back ON
  499.  
  500.           lput "\r\n\n\t\t\E[33;1m  Hit *BACKSPACE* key to \E[5;31mSTOP\E[0;33m alarm..."
  501.           : lput "\r\n\n\t\t  Hit *BACKSPACE* key to STOP alarm..." :no ANSI
  502.  
  503.           sleep 30                        :3 sec for response before alarm
  504.           while "!k&&L<20" lput "\7\7"    :For 20x and While nokey, make noise
  505.           if k goto bv                    :If keyhit then skip next call
  506.  
  507. ::        Put other DOS noise making program here if you wish, for example
  508. ::        !sound  (note the '!' will execute DOS programs from inside script)
  509.  
  510. bv:       : cls
  511.           :: display bell=visual                :quiet bell
  512.           : put "r\r"                        :Prepare to read mail. (off now)
  513.           pf30                               :Reset search wait (30 sec)
  514.           kill                               :Clear circular buffer
  515.           restime                            :Reset the timer (YAM only)
  516.           :  create -S+ %tmp\mail%d.log      :Strip all ANSI, append date file
  517.              ::^If today was 5/25/90 this makes a file in c:\tmp
  518.              :: called mail0525.log -- If you need to use a DOS program on
  519.              :: this filename use the syntax @!% [DOS program] mail%d.log
  520.              :: to force YAM/ZCOMM to fill in the date before passing to DOS
  521.  
  522.           : cd %tmp                          :Change directory to d/l area
  523.  
  524. ::        Three lines below show how to check for connection to host system
  525. ::        every 3 seconds.  Once connection is lost you are returned to YAM
  526. ::        command-line.  This is a useful piece of code if you wanted to have
  527. ::        a call placed from a DOS menu and return to DOS menu when the call is
  528. ::        completed.  If this is the case you would replace 'return' with 'off'
  529. ::        and have YAM/ZCOMM return to DOS after this call is completed.
  530.  
  531.           pf3                 : set pattern fail time to 3 seconds
  532.           while c wait        : While connected just wait here...
  533.           return              : once no carrier, return to command line.
  534.  
  535.  
  536. :---------------------------------------------------------------------------:
  537. :           --- Example of an auto logon script for CompuServe ---          :
  538.  
  539. cis       cls           :Note -- CIS access number for SAN ANTONIO, TX
  540.                         :You will need to modify for your local CIS number...
  541.           echo "\t Now accessing CompuServe at 2400 baud using the SA Texas number\n\n "
  542.           speed 2401 239-6124     :Odd number, 2 stop bits, error trap
  543.           goto cislog             :Goto logon section of CIS script
  544.  
  545. cis12     cls; bye; echo "\t Now accessing CompuServe at 1200 baud using the SA Texas number\n\n "
  546.           speed 1200 435-3883     :local San Antonio TX access number...
  547.  
  548. cislog:   sleep 20                            :Sleep for 2 seconds
  549.           ena -E -7e   : put into Error correcting 7 bit, even parity...
  550.           echo ""; echo "Sending ^C"; put \3  :Send Ctrl-C, echo doing it.
  551.           pattern 1i ID:                      :Wait for ID
  552.           wait                                :"i" causes immediate release
  553.           putw "77770,101\r"                  :Enter Account (can be yours)
  554.           pat 1i word:                        :Wait for password prompt
  555.           wait
  556.           putw "FREE-DEMO\r"                  :Enter password for demo...
  557.           pat 1i "word" ;wait
  558.           put "%s1\r"
  559.           cls;  echo "\n\n\t\t\tStandby for CIS to finish logon..."
  560.           pat 1i ompu
  561.           wait
  562.           restime                             :Reset YAM status timer
  563.           putw "\20"; cls                     :Hit ^P to skip menu (\20 = ^P)
  564.                                               :Next line skips interrupt display
  565.           pat 1i "." ; wait; cls; lput "\r\n\nChoice: "
  566.           :  create -S+ %tmp\cis.log          :Setup appended capture file
  567.           :  cd %tmp                          :Change directory to d/l area
  568.  
  569.           :Set: fULL duplex, B proto, strip ctrl char, don't pAUSE for {CR}
  570.           ena -fcs!p
  571.           kill                                :Kill initial login text
  572.           restime                             :Reset status timer (yam only)
  573.  
  574.           while c wait                        :while carrier present wait here
  575.           : w; close                          :Write then close capture file...
  576.           echo "\n\n"                         :This will put you back at the
  577.           return                              :command line once off line...
  578.  
  579.                  ----------------------------------------------------
  580.  
  581. telegodzilla           : Omen Technology (YAM/ZCOMM Upgrade BBS)
  582.                        : just give the command  'call -99 telegodzilla'
  583.  
  584.      pat 9 K\r\n; ena -d; cls          : Ck for OK, disable carrier lost message
  585.      putw "ATS7=100\r" ; wait -f1      : Change wait for connect to 100 sec
  586.      cls; echo "Demand Upgrade(TM): Omen Technology's TeleGodzilla system\n\n"
  587.      accept s7 "Please enter your LAST name: "; accept s6 "First name: "
  588.      :  set s6 "FIRST_NAME" ; set s7 "LAST_NAME" :Fill in and you can comment
  589.                                                  :out accept above and use this
  590.      speed 38400 %l,503-621-3746       :Call using phone account in '%l'
  591.      :speed 38400 621-3746           :Local call
  592.      : speed 2400 1-503-621-3746      :Call using 1-503-621-3746 service
  593.      restime; kill                    :Reset time and Kill buffer
  594.      display overstrike; cls; pat 1 "ease:"; wait -f4
  595.      if "c&&!1" put "\r"; wait -f8
  596.      : if !1||!c echo "Access Failed"; o; fail
  597.      put "\b\b%s6 %s7\r"; pat 1 ect;wait -f2
  598.      put "y"; pat 1 "-Host"; wait -f5
  599.      : !sound  TeleGodzilla is on-line :uncomment if you have external alarm
  600.                                        :program (this one calls sound.exe)
  601.      cd %tmp
  602.      create -S+ %tmp/tele%d.txt        :Strip all ANSI, append to dated file
  603.      : sz -Z [filespec to upload]      :example of how to force file upload
  604.  
  605.      ::  If you uncomment one of the below you can select a file auto-download
  606.      : zcommand "sz -n upgrade/yam.eqe upgrade/newest.meq upgrade/read.meq"
  607.      : zcommand "sz -n upgrade/newest.meq"
  608.      : zcommand "sz -n answer"
  609.      : zcommand "sz -n rzsz*.* upgrade/newest.meq"
  610.      : putw "bye\r"; o
  611.      t -8g      :force terminal mode...
  612.  
  613. upgrade    speed 2400 %l-503-621-3746 t  :no frills calling telegodzilla
  614.  
  615. :                     --- End of Auto Log Examples ---                        :
  616. :=============================================================================:
  617.  
  618. ::         Generate a script with TurboLearn Script Writer(TM)
  619. ::                    Hit Shift-F4 to start this...
  620.  
  621. tlearn    set fc10 "" :: telephone number, and flag that telno was entered
  622.      if c goto connected
  623.      cls
  624.      accept fc10 "Enter Telephone Number "
  625. ag1: accept fa1 "Enter Speed (300, 1200, 2400, 19200, 38400) "
  626.      if ifa1,19200 speed 19200 goto ag2
  627.      if ifa1,38400 speed 38400 goto ag2
  628.      if ifa1,2400 speed 2400 goto ag2
  629.      if ifa1,1200 speed 1200 goto ag2
  630.      if ifa1,300 speed 300 goto ag2
  631.      echo "Bad speed"; goback ag1
  632. ag2: lput "\r\n1 - System uses IBM PC (ANSI) line drawing characters\r\n"
  633.      lput "2 - System uses 7 bits even parity\r\n"
  634.      lput "3 - System uses 8 bits No parity (8n1)\r\n"
  635.      lput "\r\n"
  636.      acceptl1 fa2 "Choose one of the above: "
  637.      lput "\r\n"
  638.      ena -8n
  639.      @%fc10
  640.      if !c echo "Sorry, no connection"; return
  641.      set fa5 ""
  642.      if ifa2,1 ena -8g; set fa5 "ena -8g"
  643.      if ifa2,2 ena -7e; set fa5 "ena -7e"
  644. connected:
  645.      echo "Finish with F1.  Use ALT-B to send a break if necessary"
  646.      learn -y tlrn.tmp
  647. cn2: if !r echo "WARNING: Learning (recording) terminated prematurely!"
  648.      close
  649.      kill
  650.      create newscr.t
  651.      if !r abort
  652.      echo "Is this to become a Telephone Directory entry (y/n)?"
  653.      if !y goto nodir
  654.      accept fa6 "What directory entry name to use? "
  655.      echoc "%fa6    speed %fa1 %fc10 %fa5"
  656. nodir:    close;  set fa2 ""
  657.      echo "Should the script disconnect the phone line (y/n) ?"
  658.      if !y "!tlearn tlrn.tmp >>newscr.t"; goto scdone
  659.      set fa2 "bye;  return"
  660.      echo "Should the script then exit to the Operating System (y/n)?"
  661.      if y  set fa2 "off"
  662.      !tlearn -r tlrn.tmp >>newscr.t
  663.      create -+ newscr.t; echof "   %fa2";  close
  664. scdone:   echo "Your new script is in the file 'newscr.t' !!"
  665.      if %fc10 echo "You may add this file to your Telephone Directory"
  666.      if %fc10 echo "Or execute it with 'call %fa6.newscr.t'";  return
  667.      echo "You may execute this file with 'source newscr.t'"
  668.      return
  669.  
  670.  
  671. :=============================================================================:
  672.  
  673. ::                    ---  Using YAM/ZCOMM in HOST MODE  ---
  674.  
  675. ::      Note that for maximum -security- have this section be another file
  676. ::      so users won't see your passwords.
  677.  
  678.  
  679. ::      YAM users can uncomment 'demand %password' line at end of file
  680.  
  681. host    cls; echo " Activating host mode operation...  Stand by!\n\n"
  682.         sp 2400
  683.         : sp 1200                   : use for 1200 baud host modem...
  684.         : set home "/HOST"          : Optional restricted directory
  685.  
  686. ::    The above command can force users into a specific area on disk.  It
  687. ::    CRITICAL you use "/" NOT a "\" in this command.  This will lock users
  688. ::    into that directory and its subdirectories.  If you use this
  689. ::    command, you MUST have your welcome and xhelpfile as a different
  690. ::    file and this file MUST be in the directory specified by the 'set
  691. ::    home' command.  To function it MUST be a READ ONLY file.  You may
  692. ::    use HOSTHELP.TXT for this purpose but it will need to be renamed to
  693. ::    HOSTHELP.T.  Remember you will also need to add some starting
  694. ::    labels and utilize new 'set welcome' and 'set xhelpfile' commands.
  695.  
  696.         set welcome "@gosub welcome.%phones"  : setup Welcome
  697.         set messages "/host/messages"        : setup file for messages
  698.  
  699. ::    Private should set to another directory so people won't see
  700. ::    private messages, since when HOST restricted they can change from %home
  701.  
  702.         set private "/yam/pmessage"         : Setup private message area
  703.  
  704. ::    Normally section below would be in another file so people could NOT
  705. ::    view your passwords.  For testing you can get around this by assigning
  706. ::    your script a READ-ONLY, HIDDEN attributes.  For YAM users wanting to
  707. ::    use the 'demand %password' option, the file CAN NOT have a HIDDEN
  708. ::    attribute so you MUST put this in another directory that users can't
  709. ::    access for protection.
  710.  
  711.         set password "xxxxxxxx"   : CHANGE THIS Access Password
  712.         set unrestrict "xxxxxx"   : WARNING - CHANGE THIS DOS drop PASSWORD!!
  713.  
  714. ::                     -- HOST Helpfile Defined Below --
  715.  
  716.         set xhelpfile "@gosub help.%phones"  : Custom help 17.29+
  717.         : set xhelpfile "@type hosthelp.txt>com1"    : (older versions)
  718.                                            :^^^^ set this for com1 or com2
  719.                                            : Notice this is an EXTERNAL file!
  720.  
  721.         set disks "abc"                    : Setup restricted disk area
  722.  
  723.         set call1 "ATZ\r\336\336ATZ\r\336\336"  :prepare to answer phone...
  724.         set call2 "ATZ\r\336\336ATM1X1S0=1\r\336ATM1X1S0=1\r\336\336"
  725.  
  726.         :       Note 'call3' below would normally be a command that
  727.         :       requires quotes around it, but it includes a quoted string
  728.         :       so you MUST use this alternate form of the set command to
  729.         :       have the actual command start at COL #1 of the next line.
  730.         :                 <<< This works with YAM only...>>>
  731.  
  732.         : set call3
  733. : @echo "\t\t Now awaiting incoming calls... Press F1 to exit.\n\n"
  734.  
  735.         set answerback "\r\nYOUR NAME HERE...\r\n\21"
  736.  
  737.         set outahost "@pk512; putw ATE1V1X1S7=60S8=1S11=50S0=0\r;pwd; gosub menu"
  738.  
  739.  
  740.         set baudstr "@gosub baud"               : sub below to find speed
  741.         pc60                                    : callout interval = 60 sec
  742.         host
  743.  
  744.         :               >>> Check for Caller Speed <<<
  745.  
  746. baud    pat 1 "CONNECT\r\n"; pat 2 "NO CARRIER"
  747.         pat 3 "CONNECT 1200\r\n"; pat 4 "CONNECT 2400\r\n"
  748.         pe-20
  749.         wait -Ef25
  750.         dis -E
  751.         if 1 speed 300 return
  752.         if 3 speed 1200 sleep 20 return
  753.         if 4 speed 2400 sleep 20 return
  754.         kill create -+ rings
  755.         close
  756.         fail
  757.  
  758. welcome:
  759.             :In HOST mode, below is what the user will see on login
  760.  
  761.     echo "                     >>> Welcome to YAM/ZCOMM Host Mode <<<                    "
  762.  
  763.     : demand %password    :YAM users may uncomment to request password
  764.  
  765. ::    The 'demand' command is only available in YAM and NOT in ZCOMM...
  766. ::    If you are using ZCOMM there is no way to restrict initial access
  767. ::    like you can with YAM.  ZCOMM CAN will RESTRICT access to DOS if
  768. ::    user doesn't know the password ...
  769.  
  770. help:       :Note this is also the help message...
  771.     echo "                                                                               "
  772.     echo "        The thing to remember is that when you see the prompt followed         "
  773.     echo "        by [HOST] it is like you are actually sitting at the host              "
  774.     echo "        terminal...  To execute commands on your own YAM/ZCOMM hit F1          "
  775.     echo "        to call your local terminal program...                                 "
  776.     echo "                                                                               "
  777.     echo "        To open access to the complete disk enter the command: UNRESTRICT      "
  778.     echo "        and then use the system password -- otherwise you will remain in       "
  779.     echo "        the C:\\host directory or one of its subdirectories.                   "
  780.     echo "                                                                               "
  781.     echo "        To see the files on the host enter: 'dir' and hit return.              "
  782.     echo "                                                                               "
  783.     echo "        TO DOWNLOAD a file from the host enter 'sz filename' (wildcards OK)    "
  784.     echo "            (Remember this is just like typing at the HOST keyboard...)        "
  785.     echo "                - For XMODEM enter 'sx filename' at HOST prompt -              "
  786.     echo "           - For KERMIT enter 'kermit sb filename' at Host prompt -            "
  787.     echo "                                                                               "
  788.     echo "        TO UPLOAD a file hit F1 to get into your terminal command mode and     "
  789.     echo "        then enter 'sz filename'.  In ZModem everything else is automatic.     "
  790.     echo "        XMODEM enter 'rx filename' or 'rc filename' for CRCX at HOST prompt    "
  791.     echo "        - KERMIT enter 'kermit rb' at HOST prompt then start your upload -     "
  792.     echo "                                                                               "
  793.     echo "        To leave a MESSAGE enter the command 'message' and follow prompts.     "
  794.     echo "          ---> To see this message anytime enter the command 'help' <---       "
  795.  
  796.  
  797. ::-----------------------------  End of Host Mode ----------------------------::
  798.  
  799. ::------------------------------  Start of Setup  ----------------------------::
  800.  
  801.         : This code segment called from 'setup' label... First thing is to
  802.         : test for the existence of 'PROFILE.DAT' the user's default file.
  803.  
  804. do_it:  cd %home        :first make sure you're in the home directory.  There
  805.                         :are lots of variables, %variable_name activates them.
  806.                         :To see the various variables enter 'set' at the DOS
  807.                         :prompt to see DOS environment and 'set' at YAM/ZCOMM
  808.                         :prompt to see the local variables.
  809.  
  810.         if !fprofile.dat gosub make_profile  :If PROFILE.DAT not found make one
  811.  
  812.         : Initialize Shift-F6 early in case fatal error in PROFILE.DAT produces
  813.         : crashed state (as would happen if you copy the PROFILE.DAT to a system
  814.         : with a different configuration and didn't reinitialize).
  815.  
  816.         set fs6  "@gosub reset"   :Resets PROFILE.DAT containing modem dialing info
  817.  
  818.         source profile.dat      :read and activate PROFILE.DAT file...
  819.  
  820.         set mcommand "gosub dial"
  821.         : The above ^ skips internal dial routine allowing for autospeed sense
  822.  
  823.     : set mcommand "gosub adial"        : select advanced dialer
  824.     : if "!%MODEM" set MODEM hu96.t        : for modem specific dialer
  825.  
  826.         ena -d                  :suppress the Carrier Lost msg during setup
  827.         : ena -D                :establishes a 2 second timing loop for line hits
  828.                                 :(use for call waiting where you can't disable)
  829.         : pa4000                :use for clones running 8 MHz and above...
  830.         pd1                     :turn on time stamping
  831.         pi10                    :set redial for 10 seconds...
  832.         : pt4  :default throttle of 20 char/sec (lower is faster) (see F4)
  833.         pT3                     :set histfile to save commands only if 3 char+
  834.         pv-1                    :Verbose OFF (-1 shows none; 50 shows all)
  835.         pz360                   :set CST timezone (could use DOS: set ZONE=360)
  836.         : p-1                   :for those using MKS ToolKit UNIX Shell
  837.                                 :There are many 'p' parameters you can set,
  838.                                 :these are just examples of some useful one.
  839.  
  840. ::      --------------------------------------------------------------------
  841.  
  842. ::      The option below allows you to hit an up arrow key to use past
  843. ::      commands by setting up a history file.  Since all keystrokes are
  844. ::      recorded (including passwords), the 'onexit' command will delete
  845. ::      the history file when you finish your communications session.  Of
  846. ::      course, you could have more protection by writing over the file with
  847. ::      another.  To do this replace the 'del c:\histfile' with something like
  848. ::      '!copy \command.com \histfile'.  This will write over your history file
  849. ::      with a copy of command.com.  Usually this file deletion is adequate.
  850.  
  851. ::      If you don't want to use this history file option just put a ':' in
  852. ::      front of the command since anything preceded by a ':' is considered
  853. ::      to be a comment.
  854.  
  855.         history c:/histfile   : Setup command line buffer (here in root)
  856.  
  857.         : Note the special construct below.  Since there are quotes in the
  858.         : string, it is put on two lines and will delete histfile on exit...
  859.         : The '\n\n\t' string means two Newlines then TAB over a mark.
  860.  
  861.         set onexit
  862. @history; del c:/histfile ; echo "\n\n\t\t\t History file deleted... "; sleep 5
  863.  
  864.         :: display bell=visual   :turns off bell, comment with ':' for bell
  865.  
  866. ::                             --------------------
  867.  
  868.       :  if c goto online          :if carrier detected skip modem setup.
  869.  
  870. ::    The above line allows you to check the carrier status when YAM/ZCOMM is
  871. ::    loaded.  This means you can take full advantage of the eXit to DOS
  872. ::    function.  Anytime you are on-line you can get to the command line by
  873. ::    hitting F1 then enter 'X'.  What this does is unload the communication
  874. ::    program but leaves the modem and serial port active.  Then you have full
  875. ::    access to DOS and can return on-line as long as the host doesn't time
  876. ::    out (while you are working at the DOS prompt).  Once through with DOS,
  877. ::    re-load YAM/ZCOMM like you did initially and WHAM -- you're back on-line
  878. ::    as if you had never left...
  879.  
  880. ::    To activate remove the ':' from in front of 'if c goto online'.  This
  881. ::    will prevent YAM/ZCOMM from reinitializing the modem.  Then continue and
  882. ::    search for the line 'Second part of testing for on-line conditions' and
  883. ::    comment out the command 'fail'
  884.  
  885. ::                         --- Check Modem Status ---
  886.  
  887.       cls;  lput "\r\n\n\n\t\t\t>>> Modem setup in progress <<<\r\n\n"
  888.  
  889. ::    Below is an example of how to use color and graphics (now turned off).
  890.  
  891.         : echo "\n\n\n\t\t    ╓──────────────────────────────────────╖"
  892.         : echo "\t\t    ║ \E[44;1;33m   >>> Modem setup in progress <<<  \E[0m ║"
  893.         : echo "\t\t    ╙──────────────────────────────────────╜\n"
  894.  
  895.     bye
  896.         sp 9600                           : Initially set up speed at 9600 baud
  897.         pat 9 K\r\n                       : Check for OK from modem
  898. rc:     put "AT\r"; wait -f3              : Hayes 'AT' then wait up to 3 sec for OK
  899.  
  900.         :   Modems using stored profiles can have initialization done here
  901.         :   by replacing "AT\r" with ATZ0\r".  Remember you first have to
  902.         :   initialize and store modem string before this functions correctly.
  903.         :   "ATZ0\r" recalls Hayes Profile 0 if already defined.  If this
  904.         :   is done you can have the script skip further modem setup strings...
  905.  
  906.         if 9 goto modset                  : If Modem on (OK) skip error msg
  907.         lput "\E[4f                                                        "
  908.         lput "\E[5f\t\t  Please turn your modem OFF then back ON,\r\n"
  909.         lput "                                  - OR -                           \r\n"
  910.         lput "\t\t   Hit SHIFT-F6 to change your setup..."
  911.         sleep 20                          : You get 2 seconds to turn it on!
  912.         goback rc                    : Check modem again...
  913.  
  914.    --------------------------------------------------------------------------
  915.  
  916. :: <*>     --- Some of the common MODEM SETUP commands definitions ---
  917.  
  918. ::  &C1=Data Carrier Detect  &D2=hang up with change in DTR
  919. ::  E1=modem echos commands back to terminal  V1=Word result codes
  920. ::  &W=Save config to nonvolatile memory  L=speaker low
  921.  
  922. ::  X4=Detect dial tones and busy signals; enable extended result codes.
  923. ::     With this activated (default for most modems) status messages are
  924. ::     sent to the screen about modem activity.  English words instead of
  925. ::     number codes are displayed on the screen.
  926.  
  927. ::  S0=answer rings  S6=dial tone wait  S7= wait for connect  S8=pause for ","
  928. ::  S9=Carrier det response  S10=delay carrier lost and hangup  S11=dial speed
  929.  
  930. ::  Remember if your modem doesn't hang up correctly ADD '&D2' to the string.
  931. ::   Any backslash characters (\) must be repeated
  932.  
  933. modset:
  934.     putw "AT&F E1V1X4 &D2&C1 &Q5&K3 S0=0\r"  :Rockwell v.FC
  935.                                                      :the default setup!
  936.     : putw "AT&F E1V1X6 &D2&C1 \\N5\\Q3 S0=0\r"  :AT&T CS3820
  937.         : putw "AT E1 V1 X1 S0=0 S7=60 S8=2 S11=60 \r" :Normal 1200 baud setup
  938.  
  939.         :       -- Line below is an alternate 1200 baud setup command --
  940.         :  putw "AT E1 Q0 S0=0 S6=3 S7=40 S8=2 S10=10 S11=50 V1\r" ; wait -f2
  941.  
  942.         :: -- Line below supports Hayes/Zenith 2400, Compaq LTE/286, NEC Ultra
  943.         :  putw "AT E1 L X4 V1 &C1 &D2 S0=0 S6=3 S7=60 S10=10 S11=60\r"
  944.  
  945.         :  put "AT E0 V1 X4 &D2 \r"           :for Everex 2400 baud
  946.  
  947.         :  putw "AT &C1 &D2 E1 &Q0 L1 S7=100 S11=50 \r" :Simple Hayes V-9600
  948.         ::       ^^ Once stored using ATW0 it's in PROM, ATZ0 below gets it...
  949.  
  950. ::         -- A suggested ZOOM 2400 baud modem setup is listed below --
  951.  
  952.         :  handshake both        : Handshakes both CTS or XOff
  953.         :  putw "AT &C &D2 &L0 C1 X5 S9=5 S10=10 S11=40 S25=0 +Z0=2 +Z3=45\r"
  954.         :  S25 DTR timing to 0 seconds
  955.         :  wait -f1              : Wait 1 second and let modem catch up...
  956.  
  957. :  --------------------------------------------------------------------------
  958.  
  959.  
  960. ::                   --- Setup Environment Variables ---
  961.  
  962. online:
  963.         set disks "abcdefghi"         :set up active disks (you can restrict)
  964.  
  965. ::    Note the prompts below can be anything you wish...
  966.  
  967.         set mprompt "\r\E[1m(F9=Menu) %drive:\L%pwd-> \E[m"   :Help prompt
  968.         : set mprompt "\r\E[1m%drive:\L%pwd->\E[m "    :Normal path prompt
  969.         set hprompt "\r\E[1m%drive:\L%pwd\U [HOST]->\E[m " :HOST mode prompt
  970.  
  971.         : The special command below allows you to put comments on status line...
  972.         set statliner "[Alt-2=Cmd Line, F2=View, F9=Help] " :maps status line
  973.  
  974.  
  975. ::                          -- HELPFILE Defined Below --
  976.  
  977. ::      Notice that the Flashup help processor is called with F10 as defined
  978. ::      in key setup or when F1 hit at command line.  The test below
  979. ::      'if fFILENAME' checks for the existence of the help files for ZCOMM
  980. ::      or YAM.  If they are found the variable 'helpfile' is set to the
  981. ::      command that will call help.  The string '@!%' is a clever construct
  982. ::      where each character has a meaning.  The '@' says that what follows
  983. ::      is a YAM/ZCOMM command.  The '!' means to run a DOS program, and the
  984. ::      '%' says to replace all YAM/ZCOMM variables (word beginning with '%')
  985. ::      before the DOS program is called.  The %home variable contains the
  986. ::      name of the subdirectory where YAM/ZCOMM was first called.  If you use
  987. ::      the COMM.BAT file I included, this will always be the location
  988. ::      of your communication programs.  First DOS 'echo' if no helpfiles...
  989.  
  990.         set helpfile "@!%echo     No helpfiles located in the home directory: %home"
  991.  
  992.         if fZMANH.HLP set helpfile "@!%yhp %home\zmanh.hlp zmain" :ZCOMM Help
  993.         if fUMANH.HLP set helpfile "@!%yhp %home\umanh.hlp main"  :YAM Help
  994.  
  995.  
  996. ::                          -- Optional setup statements --
  997.  
  998.         set calllog c:/zcomm/calllog :Setup call log (YAM and Registered ZCOMM)
  999.                                      :This file will keep record of calls made
  1000.  
  1001.         set fleft  "@mput \b"        : Makes left arrow destructive bksp
  1002.         set fright "@mput \40"       : Makes right arrow a right space
  1003.         set s8 " \b"    :set string for 'hold' function to space/backspace key
  1004.  
  1005.         set adlopts rm               : Makes ZModem crash recovery / MobyTurbo
  1006.                                      : Note the 'm' will cause an error in pre-
  1007.                                      : MobyTurbo versions
  1008.  
  1009.         set quitcmd \20bye\r\003\336off\r    : maps string given to ALT Q
  1010.                                      :to log off automatically after d/l; here
  1011.                                      :set to ^P,bye<cr> for CIS then OFF.  Once
  1012.                                      :Download starts, just hit Alt-Q to activate
  1013.  
  1014.         set answerback "\r\n %m \r\n\21"  :Stuff in 'm' name variable...
  1015.  
  1016.         set tmp c:/tmp               : Both tmp and lib are shortcut paths
  1017.     if du set tmp /tmp
  1018.         set lib c:/yam               : you can use in your script. For example
  1019.                                      : if later you may want to change this to
  1020.                                      : 'set tmp c:/zcomm/temp' to allow %tmp
  1021.                                      : to produce subdirectory location.
  1022.  
  1023.         : set dirrx c:/tmp            :Sets up default for downloaded files as
  1024.                                      :above. If you made this 'set dirrx c:\tmp
  1025.                                      :your download would go to the \tmp subdir.
  1026.         : set dircx c:/tmp           :path to capture file directory
  1027.         : set dirfx c:/tmp           :path to files (message) directory
  1028.         : set dirsx c:/tmp           :path to upload dir
  1029.         : set oncloserx "@source c:/yam/gotafile.t"
  1030.  
  1031. :: Above is an example of how you can have a reaction to a file download and
  1032. :: run another file to do special processing.  As you can see you have total
  1033. :: control over where things are placed by the package.
  1034.  
  1035.  
  1036.  
  1037. ::                       -- Define Function Keys --
  1038.  
  1039. key:    cls         :Notice how a label starts in Col 1 and ends in a ":"
  1040.         reskeys     :reset function keys
  1041.  
  1042. ::    Explained below is the function key define command 'set'.  To see all
  1043. ::    the keys defined give the command 'key' at the YAM/ZCOMM prompt.  Note
  1044. ::    below that the command format sets a FUNCTION KEY to a specific task.
  1045. ::    This is just an example, F3 is defined again after this explanation.
  1046.  
  1047.  set f3
  1048. @accept s1 "Enter name of Capture File: " ; create -S+ %s1
  1049.  
  1050.       :  This is just a sample... actual F3 defined below these comments...
  1051.       :  Notice that I used a special case of the 'set' command where the
  1052.       :  key definition actually appears on the next line starting in col #1.
  1053.       :  The reason for this is that normally, function key commands are in
  1054.       :  quotes, yet here I wanted a quoted string inside the command.  To
  1055.       :  avoid having quotes within quotes, there is a special version of the
  1056.       :  set command that accepts the next line starting in column 1, as an
  1057.       :  implied command.  This means you don't need quotes around it...  Note
  1058.       :  as well the 'set' command DOESN'T start in column 1 because if it did
  1059.       :  it would be considered to be a label.
  1060.  
  1061.       :  To explain how the command works remember anything beginning with
  1062.       :  an "@" sign is a YAM/ZCOMM command (a @! allows you to execute a DOS
  1063.       :  program).  Let look at this command defining f3 step by step...
  1064.       :  The command "set" tells the program to set the function key
  1065.       :  (this case F3) to the following string:
  1066.  
  1067.       :        @accept s1 Enter name of Capture File: ;create -S+ %s1
  1068.  
  1069.       :  You could have used an escape sequence \40 to define a space
  1070.       :  in the string but only necessary in single line format.  This will
  1071.       :  make the prompt --> Enter name of Capture File: <--  Now the "accept"
  1072.       :  command assigns anything you type in response to this prompt and
  1073.       :  stores the response in a variable s1.  Remember ";" is just a way to
  1074.       :  separate multiple commands on each line, so you see when we come to
  1075.       :  the next command "create", it causes a capture file to be opened
  1076.       :  using the name you have entered.  The modifiers -S+ means, strip
  1077.       :  off control characters (-S) and append to the file (+) if it already
  1078.       :  exists.  Notice the argument %s1 will insert the file name
  1079.       :  added after the prompt (stored in s1).
  1080.  
  1081.       :  You see the PLUS of YAM/ZCOMM is that you can make things look
  1082.       :  any way you want.  You can set 38 function keys (remember that
  1083.       :  F1 moves you from circular buffer to terminal mode to command mode
  1084.       :  and F2 moves you in the opposite direction).  YAM/ZCOMM has THREE
  1085.       :  displays (command line, terminal mode, and circular buffer) yet this
  1086.       :  is a FAST way to move between them...
  1087.  
  1088.       :  To see variables you have defined just give the 'set' command followed
  1089.       :  by a return at the YAM/ZCOMM prompt.  If you want to see the value of
  1090.       :  a single key or variable for example 'F5' use the  command 'echo f5'.
  1091.       :  To see what KEYS are defined enter the command 'key' at the YAM/ZCOMM
  1092.       :  command line.  Remember command lines can't exceed 132 characters.
  1093.  
  1094.       :  Now set a series of function keys to activate specific commands...
  1095.  
  1096. ::                   --- NORMAL Function Key Definitions ---
  1097.  
  1098.  set f3 "@gosub capture"        :call capture routine just below 'menu:' label
  1099.  
  1100.  set f4
  1101. @accept s1 "Send ASCII Msg named: " f -p %s1  : send ASCII text/mesg -paced
  1102.  
  1103.  set f5
  1104. @accept s1 "Send file using Kermit called: " kermit sb %s1    : send Kermit
  1105.  
  1106.  set f6
  1107. @accept s1 "Send file using ZModem called: "; echo "\n\tStarted upload at: %t\b\b\b\b\b\b\b\b\b\b\b\b Hours      \n"; sz -rZ %s1
  1108.  : above sends file with ZModem (-r) crash recovery and Run Length Encoding
  1109.  : (RLE) using '-Z'.  Echo displays the start time of upload...
  1110.  
  1111.  set f7
  1112. @accept s1 "Receive file using CRCXModem called: " rc %s1   :receive CRCXmodem
  1113.  
  1114.  set f8
  1115. @accept s1 "Send file CRCXModem called: " sx %s1            :send CRC Xmodem
  1116.  
  1117.  set f9  "@gosub menu"                                      :Call Quick Reference
  1118.  : set f9 "@gosub fkeys"  : Call ANSI function key menu (commented out here...)
  1119.  
  1120.  set f10 "@help"   : Call help processor (newer YAM/ZCOMM just hit F1 x3)
  1121.  
  1122.  
  1123. ::                 --- SHIFTED Function Key Definitions ---
  1124.  
  1125.  set fs3 "@gosub hold"    : puts you in a holding pattern while on-line
  1126.  
  1127.  set fs4 "@echo working...;  gosub tlearn"
  1128.  
  1129.  set fs5                                         : check phone dir entries
  1130. @accept s5 "String to find in phones file: "; find \n%s5 %phones
  1131.  
  1132.  set fs6  "@gosub reset"   :Resets PROFILE.DAT containing modem dialing info
  1133.  
  1134.  set fs7  "@gosub start.%home/dial.t"   :setup call to dialing menu...
  1135.  
  1136.  set fs9 "@!chkdsk"        :@! example of how to run DOS program
  1137.                            :In this case CHKDSK used...
  1138.  
  1139. ::                  --- ALT-ed Function Key Definitions ---
  1140.  
  1141.  set fa1 "@kill; call -100 bnf"              : Examples of key assign
  1142.  set fa2 "@kill; call -100 old"              : note "@call -100" will
  1143.  set fa3 "@write; close"                     : call number up to 100
  1144.  set fa4 "@kill; call -100 cis"              : times if busy.
  1145.  set fa5 "@kill; call -100 pcmag"            : kill clears buffer...
  1146.  set fa6 "@kill; bye; gosub host"            : Put into HOST mode
  1147.  set fa7 "\r \r\t\t\t\t %m \r\r"             : When on-line, Alt-F7 signs
  1148.                                              : your name defined in 'm' setup
  1149.                                              : in PROFILE.DAT
  1150.  
  1151. :: Editors are your choice (they just have to be able to save in ASCII format).
  1152.  
  1153. :: I have included version 3.10 of the Colorado State Editor developed by
  1154. :: J. R. Applegate at the Colorado School of Mines.  This full featured
  1155. :: editor is only 13K and features block copies, moves, upcase, lowcase,
  1156. :: deletes, etc.  It is fully configurable and is PUBLIC DOMAIN!
  1157.  
  1158. :: The best ASCII editor I have found that can be configured to run any
  1159. :: command set you want (e.g. WS, WP, Brief, or pull down menus) is a shareware
  1160. :: called QEdit.  It is rated high by many publications (and is my personal
  1161. :: favorite).  QEdit by SemWare is available on most BBS around the country.
  1162. :: Worth a look!
  1163.  
  1164. :: Below I again used the special construct @!% (@=command, !=DOS shell,
  1165. :: %=replace variables before calling DOS command).  If the DOS 'set phones='
  1166. :: command was used to setup environment variable at DOS the %phones will
  1167. :: read it.
  1168.  
  1169.  set fa9                         : Use incase NO editor selected
  1170. @echo " Alt-F9 has no editor defined. Just edit to script under 'set fa9'\n to setup an editor of your choice..."
  1171.  
  1172.  set fa9 "@!%edit %phones"            : example using DOS 5 EDIT
  1173.  : set fa9 "@!%q %phones"            : example using QEdit
  1174.  
  1175. ::  If you want the menu just after loading, remove the ':' in front of the
  1176. ::  line below to comment it in thereby activating the command.
  1177.  
  1178.     : goto menu
  1179.  
  1180. ::  This is an opening msg for new ZCOMM users and can be commented out if
  1181. ::  you want to skip it.
  1182.  
  1183.     lput "\r\n\n\t\t -=* Welcome to the World of Telecommunication *=-\r\n\n"
  1184.     lput "\t\t                     PHOMAST.T                    \r\n"
  1185.     lput "\t\t                   [Version 6.3a]                 \r\n\n"
  1186.     lput "\t\t      >>> Press F9 if you need more help <<<          \E[10f"
  1187.     lput "\t If you want to change your *setup* defaults just hit SHIFT-F6. \r\n\n"
  1188.     lput "\t To view the current defaults stored in 'PROFILE.DAT' just enter\r\n"
  1189.     lput "\t the command 'type profile.dat'.                                \r\n\n"
  1190.     lput "\t Remember, to utilize your Long Distance Service start the number\r\n"
  1191.     lput "\t with a prefix of '\45l,'.  Notice the sample syntax below...   \r\n\n"
  1192.     lput "\t                       '\45l,512-670-0954'                      \E[23f"
  1193.  
  1194. ::                  Second part of testing for on-line conditions
  1195. ::                                 (Optional)
  1196.  
  1197.      fail       : The 'fail' here eliminates the on-line checking... if
  1198.                 : you want on-line checking, comment this 'fail' out (put a
  1199.                 : ':' in front of it) and search from the top of the script
  1200.                 : for the line 'if c goto online' and remove the ':' in front
  1201.                 : of it.
  1202.  
  1203.      if !c return             :if no carrier return, else go online
  1204.      echo "\t\t    System still on-line with remote server..."
  1205.      putw "\r" ; t            :hits return and return to terminal mode
  1206.      return                   :Returns system back
  1207.  
  1208. ::---------------------------  End of Setup Code  ----------------------------::
  1209.  
  1210.                         ---------------------------------
  1211. ::--------------------------  AutoConfiguration Code -------------------------::
  1212.                         ---------------------------------
  1213.  
  1214. ::      This code for PROFILE configuration was put at the bottom of the script
  1215. ::      because the script file is searched from the beginning to end.  Since
  1216. ::      configuration is done only at install and when configuration is
  1217. ::      changed, I put this code at the bottom of the script to allow other
  1218. ::      procedures to be found faster.
  1219.  
  1220.  
  1221. reset:  : This code segment attached to Shift-F6 will delete the old defaults
  1222.         : stored in PROFILE.DAT and start a new one...  It is completely menu
  1223.         : driven.  Once PROFILE.DAT is deleted it branches to 'setup' label
  1224.         : later in the script to do the actual configuration.
  1225.  
  1226.         display nobell=visual   : Turn bell back ON
  1227.         cd %home                : Attempt to return to original directory
  1228.         cls; echo "\n\n\d7\t\t >>> Communications Configuration Setup <<<\n\n"
  1229.         :: display bell=visual     : Turn bell back OFF and ask about delete of file
  1230.         lput "          Don't change your setup if you are currently online...\r\n\n"
  1231.         lput "   Insure you are in directory where phones files stored before making\r\n"
  1232.         lput "   any changes... you are currently in a subdirectory called: "; !cd
  1233.         lput "\r\n\nThis directory contains the following PHONES files:\r\n" ; !dir p*.t
  1234.         lput "\n   Is this the correct directory and do you want to change setup (y/N)? "
  1235.  
  1236.         if !y cls echo "\n\n"  fail
  1237.         del profile.dat             :Delete the old profile data file...
  1238.  
  1239.         :               ---------------------------------
  1240.  
  1241.         : This code segment is where the PROFILE.DAT file is generated in
  1242.         : response to menu selections...
  1243.  
  1244. make_profile:
  1245.         set s0 ""       :initial variable to NULL
  1246.         purgek; kill; pv0; create -y profile.dat   :clear buffer/write profile
  1247.  
  1248.         : Since PROFILE.DAT doesn't exist now, the next code actually writes a
  1249.         : new file (using the echof) called PROFILE.DAT storing your defaults.
  1250.         : What is really happening here is YAM is generating its own script
  1251.         : file that will contain changed configuration information for future
  1252.         : use.  Remember when you use this technique you must have a space or
  1253.         : TAB echoed before every command line so it doesn't write the target
  1254.         : file line in column 1.
  1255.  
  1256.         echof "::                  >>> DON'T DELETE THIS FILE <<<"
  1257.         echof "::                           PROFILE.DAT\n"
  1258.         echof "::  This file contains important setup information used by YAM/ZCOMM "
  1259.         echof "::  and was completely generated by PHOMAST.T file from menu choices!"
  1260.         echof "::  You can edit this file directly or from YAM/ZCOMM; hit Shift-F6"
  1261.         echof "::  to call up configuration menus and have the computer do the work.\n"
  1262.         echof "::  You can change Color default here or in the main PHOMAST.T script"
  1263.         echof "::  but remember ANY changes made here will be changed with Shift-F6."
  1264.         echof "::  To see possible colors enter the command 'gosub color' prompt."
  1265.         echof "\n::  Note: If there is NO port command below, default is 'COM1' \n"
  1266.  
  1267.         :: Note that 'lput' is local echo where 'echof' will write to open file
  1268.         :: Remember that 'lput' doesn't put a hard return at the end of lines.
  1269.         :: Below the \E[xxm just add color to the letters 'COLOR'
  1270.  
  1271.         pn15; cls; lput "\E[m\n\n\n\t\t    Are you using a \E[1m\E[33mC\E[32mO\E[34mL\E[35mO\E[36mR\E[m monitor (y/N)? "
  1272.         if !y echof "    pn15 pr127 pu15 ps112 p*112 p@15   :default monochrome..."; goto mono
  1273.  
  1274.         echof "    if dc pn1055 pr26 pu26 ps26 p*26 p@30    :setup default colors"
  1275.         if dc pn1055 pr26 pu26 ps26 p*26 p@30        :setup colors locally
  1276.  
  1277. :: <*>  -------------------- Optional DISPLAY COLORS Setup -------------------
  1278.  
  1279.         ::  If you don't like the default colors just pick one of the color
  1280.         ::  options below and put one copy inside the quotes of the 'echof'
  1281.         ::  above and another copy just below it (e.g. modify the two lines
  1282.         ::  of code above this comment...)
  1283.         ::
  1284.         ::  if dc means -- If Display Color... and the settings are:
  1285.         ::  n=text, r=reverse, u=underline, s=status line, *=message,
  1286.         ::  @=file indicator (normally blinking i.e. files open)
  1287.         ::  For example: 2=green, 3=blue, 10=bright green etc...
  1288.         ::  By adding 1024 to any number you will get blinking suppression.
  1289.         ::  To see all the possible colors enter the command 'gosub color'
  1290.         ::  at the YAM/ZCOMM prompt...
  1291.  
  1292.         :: pn15 pr127 pu15 ps112 p*112 p@15       :default monochrome string
  1293.         :: pn7  pr7 pu15 ps7  p*112 p@15        :Alternate monochrome setting
  1294.  
  1295.         :: if dc pn1055 pr31 pu26 ps26 p*26 p@30 :default color string
  1296.         :: if dc pn3  pr10 pu10 ps14 p*10 p@10   :works well with RGB
  1297.         :: if dc pn3  pr30 pu15 ps14 p*12 p@79   :color alternate 1
  1298.         :: if dc pn2  pr10 pu6  ps3  p*3  p@3    :color alternate 2
  1299.         :: if dc pn2  pr30 pu15 ps3  p*3  p@79   :color alternate 3
  1300.         :: if dc pn3  pr30 pu15 ps2  p*12 p@79   :Pearson's choice
  1301.         :: if dc pn31 pr30 pu15 ps14 p*15 p@79   :Willoughby's choice
  1302.         :: if dc pn1055 pr26 pu26 ps23 p*26 p@28 :My favorite...
  1303.  
  1304. ::      ----------------------------------------------------------------------
  1305.  
  1306.         cls; lput "\n\n\n\t    Is snow a problem with your monitor (e.g. CGA) (y/N)? "
  1307.         if y echof "    display nowarpdrive       :Turn off high speed display"; goto mono
  1308.         display warpdrive   :turn on high speed display locally
  1309.         echof "    display warpdrive         :Turn ON highspeed display (no snow checking)"
  1310.  
  1311.  
  1312. mono:   cls; lput "\r\n\t\t>>> PULSE / TONE Dial Configuration Menu <<<\r\n\n"
  1313.         lput "\t\t   Your current modem dial string is: %mprefix\r\n"
  1314.         lput "\t\t   (If 'M' above Manual dial selected...)\r\n\n"
  1315.         lput "\t\t    1. Set modem to dial TONE type phone.\r\n"
  1316.         lput "\t\t    2. Set modem to dial PULSE type phone.\r\n"
  1317.         lput "\t\t    3. Dial the number using an EXTERNAL phone.\r\n"
  1318.         lput "\t\t    4. Quit -- Don't change a thing...\r\n\n"
  1319.  
  1320.         acceptl1 s9 "\t\t    Choose one of the above: "  :store ans in s9
  1321.  
  1322.         if "Js9,1234" goto ok   :check for correct input...
  1323.         display nobell=visual
  1324.         lput "\E[24f\7\t\t      You MUST choose between 1 and 4"; sleep 15
  1325.         :: display bell=visual
  1326.         goback mono
  1327.  
  1328. ok:     if is9,3 echof "    sets mprefix M          :setup for MANUAL dial" ; goto pdone :setup for MANUAL dial
  1329.         if is9,4 echof "    sets mprefix %mprefix"; goto pdone :leave unchanged
  1330.         lput "\r\n Excluding long distance service do you need a special dialing prefix (y/N)? "
  1331.  
  1332.         if !y goto pdone
  1333.         accept s0 "\r\n\t\t    Enter the prefix number now: "
  1334.         if %s0<1 set s0 "" ; goto pdone  :Null was entered for prefix number...
  1335.         sets s0 %s0,           :appends a comma after the dial prefix...
  1336.  
  1337.         : Remember you must put a tab/space in echo so it produces a legal
  1338.         : line of code in the PROFILE.DAT file, since without a space or
  1339.         : TAB it would just be a label.  Notice the extra spacing after echof.
  1340.  
  1341. pdone:  if is9,1 echof "    sets mprefix ATDT%s0         :setup for TONE dial" ; goto ok
  1342.         if is9,2 echof "    sets mprefix ATDP%s0         :setup for PULSE dial"; goto ok
  1343.  
  1344.         : The next section of code actually looks at the specific hardware
  1345.         : configuration.  This test will work for the 90% of you that have
  1346.         : COM1 or COM2 active attached to a modem that accepts the HAYES
  1347.         : command set.  What happens is the ATtention command is sent to
  1348.         : each port looking for a response.  If one is found (e.g. the modem
  1349.         : answers 'OK') that port is defined as active.  Once hot port is found
  1350.         : a line is added to PROFILE.DAT which activates that port...  This
  1351.         : is particularly interesting since I know of no comm program that does
  1352.         : auto port configuration...
  1353.  
  1354. ok:     write; close        : Before PORT testing turn off file recording
  1355.     if du accept s0 "Please enter communications port (e.g. tty1A) "; goto pset
  1356.  
  1357.         lput "\r\n      If external MODEM, make sure it's ON for testing, then HIT ANY KEY. "
  1358.         : Below will wait for keystroke hit, then it echoes 'working'
  1359.         ife y ;  lput "      ...working"   :special construct to wait for any keyhit...
  1360.         display inhibit     : Turn off echo to screen (avoids the AT and OK)
  1361.  
  1362.         pat 9 K\r\n         : Check for OK from modem indicating port match...
  1363.         port 1              : Try COM1 first
  1364.         sp 1200             : Initially set up speed at 1200 baud for testing
  1365.         put "AT\r"; wait -f3              : AT command and wait 3 sec for OK
  1366.         if 9 set s0 1 ; goto pset         : If PORT 1 set s0=1 to indicate COM1
  1367.         port 2              : Try COM2 now that COM1 has failed
  1368.         put "AT\r"; wait -f3              : AT command and wait 3 sec for OK
  1369.         if 9 set s0 2 ; goto pset         : If PORT 2 set s0=2 to indicate COM2
  1370.         display noinhibit   : Turn local echo back on
  1371.  
  1372.         : If it wasn't PORT 1 or 2 goto ask user what port to use...
  1373.  
  1374.         lput "\r\n\t    Testing hardware I was unable to find an ACTIVE modem..."
  1375.         acceptl1 s0 "\r\n\t    Enter COM port number modem connected to (normally 1): "
  1376.         display nobell=visual
  1377.         if %s0<1 lput "\7\t                    Port 1 assumed...\r\n"; set s0 1
  1378.         :: display bell=visual
  1379.  
  1380. pset:   display noinhibit   : Turn local echo back on
  1381.         purgek; kill; pv0; create -+ profile.dat   :restart code recording
  1382.         lput  "\r\n\t\t\t Now configured for com port %s0\r\n\n"
  1383.         echof "    port %s0                    :setup computer COM port number"
  1384.         lput "\t\t\t Hit Any Key to continue..."
  1385.         ife y  ;        :basically a no-op wait for keystroke (nul else nul)
  1386.  
  1387.         cls; set s0 "1"        :default long distance service as '1' service
  1388.         lput "\r\n\n\t Do you want to add a long distance service so you can utilize"
  1389.         lput "\r\n\t the syntax \45l,213-555-1212 to add MCI or SPRINT service to the"
  1390.         lput "\r\n\t to your call [Return will default to '1' prefix] (y/N)? "
  1391.         if y accept s0 "\r\n\t Enter your carrier number (3) COMMAs then account: "
  1392.         if %s0<1 echo "\t\t   >>>  Service \"1\" assumed <<<" ; set s0 "1"
  1393.         echof "    set l %s0        :setup long distance service variable \45l"
  1394.  
  1395.         :  >>> Notice that setting UPPER CASE variables is only allowed in YAM.
  1396.         :  ZCOMM doesn't allow upper case variables.  This means if a user
  1397.         :  enters %L, for dialing prefix it there is no way to define it to
  1398.         :  prevent an error...  ZCOMM users can only use %l.
  1399.  
  1400.         : echof "    set L %s0        :setup long distance service variable \45L"
  1401.  
  1402.         lput "\r\n\n\t Enter a name you want defined to Alt-F7 to use as a short cut"
  1403.         accept s9 "\t for signing your name to a message: "
  1404.         if %s9<1 set s9 "<Not defined -  Hit Shift-F6 once off line>"
  1405.         sets m "\42%s9\42"         :add the quotes to the string...to %m
  1406.  
  1407.         : Note ProYAM users could have used a variable call 'name' here and
  1408.         : retrieved it with %name; but ZCOMM is more restrictive.  It does
  1409.         : not allow variable names, so I used 'm' here (normally 'm' is the
  1410.         : second Long Distance Service).  It's much more flexible to use
  1411.         : 'name' since the %name variable makes more sense -=- Oh' well,
  1412.         : just a minor limitation in the shareware ZCOMM...
  1413.  
  1414.         echof "    set m %m   :name stored in '\45m'"
  1415.  
  1416.         echof "\n::\t\t     -- End of Setup Information --\n"
  1417.  
  1418.         lput "\n\t Storing your new configuration in file named: PROFILE.DAT\r\n"
  1419.         write; close    : Code generation complete, close the PROFILE.DAT file
  1420.  
  1421.         lput "\t  Configuration complete -=- All variables now defined..."
  1422.         lput "\E[20f\t\tHit Any Key to continue and view new PROFILE.DAT"
  1423.         ife y  ;         :basically a no-op wait for keystroke (nul else nul)
  1424.         cls; typ profile.dat
  1425.         lput "\t\t\tHit Any Key to continue..."
  1426.         ife y  ;         :basically a no-op wait for keystroke (nul else nul)
  1427.         cls; goto setup  :Force new PROFILE.DAT to be activated.
  1428.  
  1429. ::----------------------- End of Auto Configuration Code --------------------::
  1430.  
  1431. ::                -------------------------------------------
  1432. ::           --- For Fancy TOP LINE Menu using ANSI Graphics ---
  1433. ::                -------------------------------------------
  1434.  
  1435. ::  Special thanks to Michael Pearson and Ron Ottinger for ANSI menus concept...
  1436.  
  1437. ::      Notice the ANSI color setup using 'echo' or 'lput' is not simple. Shown
  1438. ::      here the \E[44;36m sets up light blue letters on dark blue background.
  1439. ::      To change to yellow on red for example just search and replace \E[44;36m
  1440. ::      with \E[33;41m  --  Notice in this example I change pn (normal color)
  1441. ::      to pn15 to make bright white.  To change back at end of each sequence
  1442. ::      I moved it back to pn3 (blue).  Be sure to change this to whatever
  1443. ::      normal color you want...  This code is completely OPTIONAL and just for
  1444. ::      fun!
  1445.  
  1446. fkeys                                            ::func keys menu
  1447.         pn15                                     ::make normal color WHITE
  1448.         lput "\E[s"                              ::save cursor position
  1449.         lput "\E[1;1f"                           ::move cursor to menu line
  1450.         lput " 1\E[37;44mExit B\E[0;m 2\E[37;44mEnterB\E[0;m 3\E[37;44mO Capt\E[0;m 4\E[37;44mSascii\E[0;m"   ::the menu
  1451.         lput " 5\E[37;44mSKermt\E[0;m 6\E[37;44mSZmodm\E[0;m 7\E[37;44mRec CX\E[0;m 8\E[37;44mSCxmod\E[0;m"   ::the menu
  1452.         lput " 9\E[37;44mA KEYS\E[0;m 0\E[37;44m>HELP<\E[0;m"
  1453.         lput "\E[u"                              ::restore cursor position
  1454.         set f9 "@gosub altkeys"                  ::f9 calls ctrl f keys next
  1455.         pn3                                      ::change normal color to blue
  1456.     return
  1457.  
  1458. altkeys                                          ::alt-func keys menu
  1459.         pn15                                     ::make normal color WHITE
  1460.         lput "\E[s"                              ::save cursor position
  1461.         lput "\E[1;1f"                           ::move cursor to menu line
  1462.         lput "a1\E[37;44mB&F-24\E[0;ma2\E[37;44mGurd12\E[0;ma3\E[37;44mCloseC\E[0;ma4\E[37;44mCISdem\E[0;m"   ::the menu
  1463.         lput "a5\E[37;44mPC Mag\E[0;ma6\E[37;44m-HOST-\E[0;ma7\E[37;44msignat\E[0;ma8\E[37;44m      \E[0;m"   ::the menu
  1464.         lput "a9\E[37;44mEdPhon\E[0;ma0\E[37;44m      \E[0;m"
  1465.         lput "\E[u"                              :: restore cursor position
  1466.         set f9 "@gosub shiftkeys"                :: f9 calls no keys next
  1467.         pn3                                      ::change normal color to blue
  1468.     return
  1469.  
  1470. shiftkeys                                        ::shift-func keys menu
  1471.         pn15                                     ::make normal color WHITE
  1472.         lput "\E[s"                              ::save cursor position
  1473.         lput "\E[1;1f"                           ::move cursor to menu line
  1474.         lput "s1\E[37;44m      \E[0;ms2\E[37;44m      \E[0;ms3\E[37;44mHoldOL\E[0;ms4\E[37;44mTLearn\E[0;m"   ::the menu
  1475.         lput "s5\E[37;44mSearch\E[0;ms6\E[37;44mConfig\E[0;ms7\E[37;44m      \E[0;ms8\E[37;44m      \E[0;m"   ::the menu
  1476.         lput "s9\E[37;44mC KEYS\E[0;ms0\E[37;44m      \E[0;m"
  1477.         lput "\E[u"                              :: restore cursor position
  1478.         set f9 "@gosub ctrlkeys"                 :: f9 calls alt f keys next
  1479.         pn3                                      ::change normal color to blue
  1480.     return
  1481.  
  1482. ctrlkeys                                         ::ctrl-func keys menu
  1483.         pn15                                     ::make normal color WHITE
  1484.         lput "\E[s"                              ::save cursor position
  1485.         lput "\E[1;1f"                           ::move cursor to menu line
  1486.         lput "c1\E[37;44m     1\E[0;mc2\E[37;44m     2\E[0;mc3\E[37;44m      \E[0;mc4\E[37;44m      \E[0;m"   ::the menu
  1487.         lput "c5\E[37;44m      \E[0;mc6\E[37;44m      \E[0;mc7\E[37;44m      \E[0;mc8\E[37;44m      \E[0;m"   ::the menu
  1488.         lput "c9\E[37;44mOFF   \E[0;mc0\E[37;44m      \E[0;m"
  1489.         lput "\E[u"                              :: restore cursor position
  1490.         set f9 "@gosub nokeys"                   :: f9 calls shift keys next
  1491.         pn3                                      ::change normal color to blue
  1492.     return
  1493.  
  1494.  
  1495. nokeys:                                           :: restore status line
  1496.         cls; lput "\E[s"                          :: save cursor position
  1497.         lput "\E[1;1f"                            :: move cursor to menu line
  1498.         lput "                                                                                "
  1499.                                                   :: erase to end of line
  1500.         display nostat                            :: restore status line
  1501.         lput "\E[u"                               :: restore cursor position
  1502.         set f9 "@gosub fkeys"                     :: f9 calls f keys next
  1503.     return
  1504.  
  1505. :: This code demonstrated one way of displaying a HELP MENU using ANSI codes.
  1506. ::
  1507. :: What it does: (by pressing F9)
  1508. ::
  1509. ::    1.  Saves the current cursor position
  1510. ::    2.  Moves cursor to top of screen
  1511. ::    3.  Displays a FUNCTION KEY help menu.
  1512. ::    4.  Puts the cursor back to its original position
  1513. ::    5.  Sets F9 to the next FUNCTION KEY menu in the rotation.
  1514.  
  1515. ::-------------------------- End of ANSI Menu Demo ------------------------::
  1516.  
  1517.  
  1518.     ::  I would like to personally thank Bob Willoughby for the tireless
  1519.     ::  hours he spent proof reading both PHOMAST.T and the supporting
  1520.     ::  document files for this effort.  This release is just over 3000
  1521.     ::  lines went through multiple revisions as I found better and
  1522.     ::  better ways to make both YAM and ZCOMM easier for the user.  Bob
  1523.     ::  was there the whole way finding spelling errors and pointing out
  1524.     ::  areas that needed more explanation.  I owe him lots for sticking
  1525.     ::  with this effort.    Thank you Bob!
  1526.  
  1527.  
  1528. ::---------------------------------------------------------------------------::
  1529.