home *** CD-ROM | disk | FTP | other *** search
/ Mega Top 1 / os2_top1.zip / os2_top1 / APPS / DATACOM / DIVERSEN / SIO145 / VMODEM.TXT < prev    next >
Text File  |  1995-01-27  |  37KB  |  850 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.                                       VMODEM
  25.                            Technical Reference Manual
  26.  
  27.  
  28.  
  29.                      Copyright (c) 1995 by Raymond L. Gwinn
  30.                               12469 Cavalier Drive
  31.                            Woodbridge, Virginia 22192
  32.                                All Rights Reserved
  33.  
  34.                                 January 27, 1995
  35.  
  36.  
  37.                               CompuServe: 71154,575
  38.                              InterNet: ray@gwinn.com
  39.                               Voice: 1-703-494-4673
  40.                                FAX: 1-703-494-0595
  41.                       BBS: 1-703-494-0098 or 199.248.240.2
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.                                   INTRODUCTION
  58.  
  59.      The Virtual Modem is a concept that the author believes will change
  60.      the way serial data communications is done and thought of.  It is
  61.      going to bring the Internet alive more then ever before.  Perhaps it
  62.      will not be this implementation of a Virtual Modem, but the concept
  63.      will remain and be used for a long time.  The concept of the Virtual
  64.      Modem was born from the desire to make the SIO support BBS available
  65.      via Internet.  In only a few minutes, I was convinced the Virtual
  66.      Modem was a solution of a multitude of problems that Internet access
  67.      poses.
  68.  
  69.      The Virtual Modem removes most of the complexities and mysteries of
  70.      the Internet by allowing common, well understood, programs to be used
  71.      to access the Internet highway.  Users can use programs like PmComm
  72.      and TE/2 to download files from a BBS (across the Internet) using
  73.      common protocols like ZMODEM.  The dialing directories of terminal
  74.      programs can contain Internet addresses instead of phone numbers for
  75.      easy access to remote sites.
  76.  
  77.      BBS SysOps can simply declare one or more of their BBS's
  78.      communications ports as a Virtual Modem and users can then "dial" in
  79.      over the Internet and no BBS software changes should be necessary.  Is
  80.      your BBS ready for 20 million new users that can access it without
  81.      making a long distance call?  This Virtual Modem implements protocols,
  82.      including a Telnet server which allows most anyone on Internet to
  83.      access your system.
  84.  
  85.      Users transferring large volumes of data across phone lines (like
  86.      FidoNet echomail) can now use the Internet highway instead.  Again,
  87.      software changes should be minimal, if any at all.
  88.  
  89.      Vmodem is unique in that it has a dual personality of both Server and
  90.      Client.  The Server/Client personality is determined by the direction
  91.      of the connection (outgoing or incoming).
  92.  
  93.  
  94.  
  95.  
  96.      ii
  97.  
  98.                                 TABLE OF CONTENTS
  99.  
  100.      WHAT IS VMODEM  . . . . . . . . . . . . . . . . . . . . . . . . .    1
  101.  
  102.      DISTRIBUTION, ORDERING AND SUPPORT  . . . . . . . . . . . . . . .    2
  103.           Distribution and Ordering  . . . . . . . . . . . . . . . . .    2
  104.                SIO Distribution and Support BBS  . . . . . . . . . . .    2
  105.           Support  . . . . . . . . . . . . . . . . . . . . . . . . . .    2
  106.  
  107.      GETTING IT GOING  . . . . . . . . . . . . . . . . . . . . . . . .    5
  108.           TCP/IP Required  . . . . . . . . . . . . . . . . . . . . . .    5
  109.                TCP/IP Sockets  . . . . . . . . . . . . . . . . . . . .    5
  110.                The default port number . . . . . . . . . . . . . . . .    5
  111.  
  112.      The SIO.SYS command line  . . . . . . . . . . . . . . . . . . . .    5
  113.  
  114.      THE VIRTUAL MODEM . . . . . . . . . . . . . . . . . . . . . . . .    7
  115.           AT Commands Supported  . . . . . . . . . . . . . . . . . . .    7
  116.           S Registers Supported  . . . . . . . . . . . . . . . . . . .    8
  117.           Result Codes . . . . . . . . . . . . . . . . . . . . . . . .    8
  118.                NO CARRIER  . . . . . . . . . . . . . . . . . . . . . .    8
  119.                NO DIALTONE . . . . . . . . . . . . . . . . . . . . . .    8
  120.                  . . . . . . . . . . . . . . . . . . . . . . . . . . .    8
  121.                BUSY  . . . . . . . . . . . . . . . . . . . . . . . . .    8
  122.                CONNECT 57600/ARQ/VMP . . . . . . . . . . . . . . . . .    8
  123.                CONNECT 57600/ARQ/TEL . . . . . . . . . . . . . . . . .    8
  124.                RING  . . . . . . . . . . . . . . . . . . . . . . . . .    8
  125.                RINGING . . . . . . . . . . . . . . . . . . . . . . . .    8
  126.           Caveats  . . . . . . . . . . . . . . . . . . . . . . . . . .    9
  127.  
  128.      SECURITY  . . . . . . . . . . . . . . . . . . . . . . . . . . . .   10
  129.           Discussion . . . . . . . . . . . . . . . . . . . . . . . . .   10
  130.           Vmodem's Implementation  . . . . . . . . . . . . . . . . . .   10
  131.           Developers Information . . . . . . . . . . . . . . . . . . .   10
  132.  
  133.      DIALING EXAMPLES  . . . . . . . . . . . . . . . . . . . . . . . .   11
  134.  
  135.      Telnet  . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   12
  136.           IBM's Telnet Client  . . . . . . . . . . . . . . . . . . . .   12
  137.  
  138.      Development and Debugging Tools . . . . . . . . . . . . . . . . .   13
  139.           The Poor Man's Line Monitor (PMLM.EXE) . . . . . . . . . . .   13
  140.           VIEWPMLM.EXE . . . . . . . . . . . . . . . . . . . . . . . .   14
  141.           SIO's Utility (SU.EXE) . . . . . . . . . . . . . . . . . . .   14
  142.                IRQs that currently free for use  . . . . . . . . . . .   14
  143.  
  144.      Appendix A, Hardware Port and IRQ Assignments . . . . . . . . . .   15
  145.           Addresses and IRQs for COM1 and COM2 . . . . . . . . . . . .   15
  146.           Defacto standard for COM3 and COM4 . . . . . . . . . . . . .   15
  147.           Addresses and IRQ for COM3 through COM8 on the PS/2  . . . .   15
  148.  
  149.      Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   16
  150.  
  151.  
  152.  
  153.  
  154.                                                                           1
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.                                  WHAT IS VMODEM
  168.  
  169.      Vmodem is a software implementation of a modem, referred to as a
  170.      Virtual Modem.  Basically, it attempts to fake out other software
  171.      (like terminal programs) into believing they are accessing a real
  172.      modem.  Vmodem will turn any Terminal into a Telnet Client, and any
  173.      BBS into a Telnet Server.
  174.  
  175.      Normal (real) modems provide an interface that allows terminal
  176.      programs to pass digital information across telephone lines.  Vmodem
  177.      does the same thing from the application (terminal) program's point of
  178.      view.  However, the other side of Vmodem is not a phone line, but a
  179.      digital network like Internet.  Thus, Vmodem allows the hoards of
  180.      communications programs to pass information across Internet instead of
  181.      using phone lines.
  182.  
  183.      In addition to acting as a Telnet server, Vmodem uses a newly designed
  184.      protocol for communications networks, called the Virtual Modem
  185.      Protocol (VMP).  At this time, no other programs have implemented VMP,
  186.      thus Vmodem is required on both ends of the connection to use the VMP. 
  187.       However, VMODEM.EXE will accept inbound Telnet connections from any
  188.      system, meaning a BBS under vmodem can be accessed by just about
  189.      anyone with an Internet connection.
  190.  
  191.      Future implementations of Vmodem may access networks other than
  192.      Internet and use TCP/IP implementations other than IBM's.  The current
  193.      implementation of Vmodem works only on Internet, using the Internet
  194.      Access Kit (IAK) that is included with OS/2 V3 and IBM's TCP/IP (for
  195.      OS/2) version 2.0, with the August 1994 CSD applied.
  196.  
  197.      A single invocation of Vmodem can service all of the Internet ports
  198.      defined in the SIO command line.
  199.  
  200.  
  201.  
  202.  
  203.      2
  204.  
  205.                        DISTRIBUTION, ORDERING AND SUPPORT
  206.  
  207.      Distribution and Ordering
  208.  
  209.      Vmodem is a part of a larger package collectively known as SIO.  The
  210.      entire package collectively known as SIO is ShareWare.  It is not free
  211.      software or freeware.  See LICENSE.TXT and ORDER.TXT for additional
  212.      information.  The ShareWare version of SIO is distributed
  213.      electronically.  One may check their favorite electronic hangout for
  214.      the latest version of SIO.  The latest copy of the ShareWare version
  215.      is always posted for downloading from the BBS at 1-703-494-0098 or
  216.      199.248.240.2.  ShareWare versions of SIO can also be downloaded from
  217.      the CompuServe Forum OS2BVEN, library 4.
  218.  
  219.      Registered versions of SIO are distributed by US Mail and
  220.      electronically from the SIO Distribution and Support BBS.  Users
  221.      desiring to register electronically, may call the BBS and register on
  222.      line (1-703-494-0098 or 199.248.240.2) and immediately download their
  223.      registered version of SIO.  Use the ORDER command at the main BBS
  224.      prompt.
  225.  
  226.      Registrations/Orders can also be placed by phone, mail, FAX, and
  227.      email.  See the front cover of this manual for the phone numbers and
  228.      addresses.  Also see ORDER.TXT for and order form that may be used.
  229.  
  230.      Support
  231.  
  232.      Only product support is provided, user support for Vmodem is NOT
  233.      provided.  That is, help with application program configuration, modem
  234.      init strings etc, is not provided.  Product information such as bug
  235.      reports, suggestions, and information about incompatibilities are
  236.      welcome.  They should be sent to one of the following addresses.
  237.  
  238.  
  239.                                       Email
  240.                               CompuServe 71154,575
  241.                              Internet ray@gwinn.com
  242.                                FAX 1-703-494-0595
  243.                        BBS 1-703-494-0098 or 199.248.240.2
  244.  
  245.  
  246.  
  247.  
  248.                                                                           3
  249.  
  250.                                    QUICK START
  251.  
  252.  
  253.      If some of your applications do not work, it is probably due to the
  254.      timing difference between the virtual modem and real modems.  These
  255.      type of problems are NOT bugs in Vmodem, but in the application itself
  256.      and should be reported to the support department for the application
  257.      program.  Thus, messages saying that application XYZ does not work are
  258.      probably of no value and may be ignored.
  259.  
  260.      The Good Stuff Starts Here:
  261.  
  262.      If you do not have TCP/IP up and running on your system, forget it,
  263.      there is no quick start.  If TCP/IP is running on your system then
  264.      read on.
  265.  
  266.      Users of the IBM Internet Access Kit (IAK) and IBM's SLIP be sure to
  267.      execute MODE COMn DTR=ON somewhere before you attempt to dial in.
  268.  
  269.      First, you must define one or more Virtual Modem ports in the SIO.SYS
  270.      command line and reboot.  DO NOT DEFINE A PORT THAT IS CONNECTED TO A
  271.      REAL MODEM AS AN INTERNET PORT.  Defining a Virtual Modem port simply
  272.      requires that you use the word "Internet" instead of the I/O port
  273.      address in the SIO command line.  Do not forget to assign the DOS
  274.      reflection stuff if you will use the port from DOS sessions.  An SIO
  275.      command line example using COM4 as a Virtual Modem is:
  276.  
  277.      DEVICE=SIO (COM1,3F8,4) (COM4,INTERNET:2E8,NONE:3)
  278.  
  279.      The ":2E8" and the ":3" in the command line tells SIO to reflect data
  280.      to DOS sessions on virtual I/O port 2E8 and virtual IRQ3.  The "NONE"
  281.      in the command line indicates that no real IRQ is used.
  282.  
  283.      After you have made the SIO command line changes, and rebooted, you
  284.      must first activate TCP/IP.  Users of the IBM Internet Access Kit must
  285.      initiate a connection in the normal manner before Vmodem will start. 
  286.      After TCP/IP is activated, type Vmodem at any OS/2 prompt.  The Vmodem
  287.      display attempts to simulate a modem display.  An activity log will
  288.      start at the bottom of the display and scroll up to the bottom of the
  289.      simulated LED display.  If you wish, you can use "START /min Vmodem"
  290.      to invoke Vmodem in your TCP/IP start up scripts, TCPEXIT.CMD is the
  291.      best place.  Hit Control C if you wish to terminate Vmodem, but you
  292.      must leave it running if you want Virtual Modem support.
  293.  
  294.  
  295.  
  296.  
  297.      4
  298.  
  299.  
  300.      Once Vmodem is started, any access to COM4 (in this example) will go
  301.      out over the Internet.  Bring up your favorite terminal program,
  302.      configured for COM4, and type "AT?" for a list of supported AT
  303.      commands.  To dial out, type ATDT inetaddr.com, of course you must use
  304.      a real Internet address.
  305.  
  306.      As of this writing, there are several BBSes available for incoming
  307.      calls using Vmodem.  Their Internet addresses are:
  308.  
  309.      199.248.240.2             SIO Support in Virginia
  310.      199.100.191.2             Bob Juge in Houston Texas
  311.      199.67.41.2               PCBOARD, Clark Development
  312.      198.69.157.10             Steve Haynes, in Virginia
  313.      198.68.171.210            File Bank BBS
  314.      198.68.17.57              Paul Breedlove, Multinet
  315.      bbs.windstar.net          Steve Schmidt in Chicago Illinois
  316.      198.96.20.209             Steven Bonisteel in Canada
  317.      194.70.36.10              Jon Morby in England
  318.      198.17.249.111            Pete Link in USA
  319.      199.165.149.4             Pete Person in Washington State
  320.      bbs.adam.anet.cz          Tomas Kucera in Prague, CZ
  321.      202.12.87.130             Russell Coker, in Australia
  322.      volvo.datacomm.com        Tony Wagner, West Coast USA
  323.      204.120.33.159            Bob Palmer, Belton MO
  324.      199.190.72.11             Patty and Roger Morris, LA
  325.      203.4.149.97              Dave Blears, Australia
  326.      204.91.224.2              Bridgewater, New Jersey
  327.      bbs-ce.uab.es 666         Universitat Autonoma de Barcelona
  328.  
  329.  
  330.  
  331.  
  332.                                                                           5
  333.  
  334.                                 GETTING IT GOING
  335.  
  336.  
  337.                                  TCP/IP Required
  338.  
  339.      The current (first) implementation of Vmodem and works only with the
  340.      Internet Access Kit (IAK) that is included with OS/2 V3 and IBM's
  341.      TCP/IP V2.0 with the August 1994 CSD applied.  Contact IBM for
  342.      information about obtaining their TCP/IP and the CSD update.
  343.  
  344.      Prior to executing Vmodem, you should have TCP/IP installed and
  345.      operational on your system.  The author is far from an Internet or
  346.      TCP/IP expert (more like a novice) so you are on your own in getting
  347.      TCP/IP up on your system.
  348.  
  349.      Users of the IBM Internet Access Kit (IAK) and IBM's SLIP be sure to
  350.      execute MODE COMn DTR=ON somewhere before you attempt to dial in.
  351.  
  352.      The Virtual Modem Protocol (VMP) that is implemented by Vmodem uses
  353.      TCP/IP Sockets.  The default port number used by Vmodem is 3141 (the
  354.      first 4 digits of pi, un-rounded).  However, this default port number
  355.      can be overridden by using the SERVICES file in the TCP/IP ETC
  356.      directory.  If the user defines a "Well Known Port" called "vmodem"
  357.      (lower case) in the SERVICES file, then that port will be used instead
  358.      of 3141.  The port number 3141 has been assigned to the Virtual Modem
  359.      Protocol (VMP) by the Internet Assigned Numbers Authority (IANA).  The
  360.      name associated with port 3141 is "vmodem" (without the quotes). 
  361.      Likewise, the Telent Server in Vmodem can be directed to use any port
  362.      number by adding a "Well Known Port" called VMOTelnet to your SERVICES
  363.      file.  The Telnet Server defaults to port 23 (the standard Telnet
  364.      port).
  365.  
  366.                             The SIO.SYS command line
  367.  
  368.      If you do not already know what SIO.SYS is, you should start with the
  369.      SIO Users Manual which should be a part of the same package that
  370.      contained this manual.  The Vmodem specific part of the SIO command
  371.      line is only documented here.
  372.  
  373.      The changes to the SIO command line to define a Virtual Modem Port(s)
  374.      is simple.  All one does is to replace the I/O port number with the
  375.      word "Internet" (without the quote marks).  I/O port number are
  376.      usually hexadecimal numbers like 3F8 (for COM1) and it is this number
  377.      that is replaced with the word "Internet".  A command line example for
  378.      a Virtual Modem on COM4 that will only be accessed by native OS/2
  379.      programs is as follows:
  380.  
  381.      DEVICE=SIO.SYS (COM1) (COM4,INTERNET,NONE)
  382.  
  383.      The "NONE" in the above simply states that no IRQ is being used.
  384.  
  385.  
  386.  
  387.  
  388.      6
  389.  
  390.  
  391.      If one wishes to access the Virtual Modem from DOS and/or Windows
  392.      sessions, the command line is a little more complicated.  You must
  393.      tell SIO where to present the information to the DOS/Windows session. 
  394.      That is, you must tell SIO (really VSIO) the virtual I/O port number
  395.      and the virtual IRQ that the DOS/Windows application uses to access
  396.      the port.  Continuing to use COM4 as the example should be changed to:
  397.  
  398.      DEVICE=SIO.SYS (COM1) (COM4,INTERNET:2E8,NONE:3)
  399.  
  400.      This command line will present a standard COM4 to the DOS and or
  401.      Windows session(s).
  402.  
  403.  
  404.  
  405.  
  406.                                                                           7
  407.  
  408.                                 THE VIRTUAL MODEM
  409.  
  410.      Starting the Virtual Modem is about as simple as it can be.  Simply
  411.      type VMODEM or START /MIN VMODEM at any OS/2 prompt, there are no
  412.      required command line parameters.  Vmodem then just sits there and
  413.      displays some minimal activity reports.  Vmodem does have one optional
  414.      command line parameter, a log file name.  If a log file name is given,
  415.      all information displayed on the Vmodem screen is written to the file.
  416.  
  417.      Once started, and with the above mentioned additions to the SIO
  418.      command line, application programs should see a relatively simple
  419.      modem that implements a very basic set of AT commands.  Most of the AT
  420.      commands of a real modem simply do not apply in the environment that
  421.      the Virtual Modem is being used in.  For example, flow control is
  422.      automatic (done by TCP/IP) so the virtual modem needs no flow control
  423.      commands.
  424.  
  425.      Remember, the Virtual Modem has no memory, so any needed modem init
  426.      string needs to be presented each time an application program is
  427.      executed.
  428.  
  429.      AT Commands Supported
  430.  
  431.           ?    Display a list of supported AT commands.
  432.  
  433.           DT   Dial the following internet address.
  434.  
  435.           En   Command mode local echo. E0 disables echoing, E1 enables
  436.           echoing.
  437.  
  438.           Fn   Local echo after connection. F0 enables (half duplex), and
  439.           F1 disables.  This command is currently disabled.
  440.  
  441.           Hn   On/Off hook control. H0 or H alone to hang up, H1 go off
  442.           hook.
  443.  
  444.           Mn   Incoming connect notify.  M0 or M alone inhibits speaker
  445.           sounds, and M1 enables speaker sound when an incoming connect is
  446.           detected.
  447.  
  448.           Sr=n Set S register r to n.  The supported set of S registers is
  449.           given below.
  450.  
  451.           Sr=? Display the current value (setting) of S register r.
  452.  
  453.           S?   Display supported S register information.
  454.  
  455.           Z    Virtual modem reset.
  456.  
  457.           &Cn  Carrier detect operation, &C0 always on, &C1 normal.
  458.  
  459.           &Sn  DSR operation, &S0 always on, &S1 normal.
  460.  
  461.           &V   View virtual modem settings.
  462.  
  463.  
  464.  
  465.  
  466.      8
  467.  
  468.      S Registers Supported
  469.  
  470.           S0   Zero disables automatic answer, non-zero enables automatic
  471.           answer.
  472.  
  473.           S7   Number of seconds to wait for carrier (connection) when
  474.           dialing.
  475.  
  476.           S19  Set inactivity timer (automatic disconnect) in minutes (0
  477.           disables).  This S register is currently ignored by Vmodem.
  478.  
  479.           S38  Duration in seconds before disconnect when DTR drops.  This
  480.           S register is currently ignored by Vmodem.
  481.  
  482.  
  483.      Result Codes
  484.  
  485.           NO CARRIER.  This result is returned when a dialing timeout
  486.           occurs or when an established connection terminates.  The timeout
  487.           interval is specified by S register 7.
  488.  
  489.           NO DIALTONE.  This result code means that Vmodem could not obtain
  490.           address information from the name server (or HOSTS file), or that
  491.           the given Internet address is invalid.  This result code is also
  492.           returned if TCP/IP is not responding.
  493.  
  494.           BUSY.  This result means that a connection to the vmodem port was
  495.           established at the remote site.  However, no available
  496.           communications ports (COM1, COM2 etc) were available to assign
  497.           the connection to.
  498.  
  499.           CONNECT 57600/ARQ/VMP.  This result means the dialing and session
  500.           establishment occurred without problems and is ready for user
  501.           data flow using the Virtual Modem Protocol.  The given bit rate
  502.           of 57600 is given only to satisfy the application program.  The
  503.           actual data rate is not know to Vmodem.
  504.  
  505.           CONNECT 57600/ARQ/TEL.  This result is the same as above except
  506.           the protocol being used is Telnet. 
  507.  
  508.           RING.  This result means that an incoming connection has been
  509.           made with a remote system and that the local Vmodem is sending a
  510.           ring indication to the assigned communications port (COM1 etc).
  511.  
  512.           RINGING.  This result means that an outgoing connection has been
  513.           made with a remote system and that the remote Vmodem is sending a
  514.           ring indication to the communications port.
  515.  
  516.  
  517.  
  518.  
  519.                                                                           9
  520.  
  521.  
  522.      Caveats
  523.  
  524.      The modem command mode escape sequence, usually +++, is not
  525.      implemented by the Virtual Modem.  Once the Virtual Modem enters data
  526.      mode, the only way to return to command mode is to drop DTR.  This is
  527.      why the DTR override AT command is not supported.  Implementation of
  528.      the escape (+++) feature would have a severe impact on processor
  529.      overhead and Virtual Modem throughput.
  530.  
  531.      Numeric result codes are not currently implemented, they may be at a
  532.      future time.
  533.  
  534.      Some application programs (like ProComm) translate letters into
  535.      numbers. I have not found a way to use ProComm's dialing directory to
  536.      pass alphabetic strings like those used in Internet addresses.
  537.  
  538.      Other applications (like TE/2) will pass alphabetic strings when they
  539.      are enclosed in double quotes.  Thus, an Internet address can be
  540.      entered into TE/2's dialing directories in the form "vmbbs.xyz.com". 
  541.      The trailing quote is not really necessary as a trailing carriage
  542.      return will also terminate the address.
  543.  
  544.  
  545.  
  546.  
  547.      10
  548.  
  549.                                     SECURITY
  550.  
  551.      Discussion
  552.           Some believe that logging onto a BBS via Internet is not as
  553.           secure as logging onto the same BBS using phone lines.  There are
  554.           rumors of "sniffer" programs on the Internet looking for credit
  555.           card numbers, passwords and the like.  The phone line analogy of
  556.           a sniffer is a tapped phone line.  The author has heard the
  557.           rumors, but has never heard of a confirmed case of a sniffer that
  558.           really worked.
  559.  
  560.           Vmodem attempts to remove the problem of passwords being sent in
  561.           the clear by implementing a "Shared Secret" password encryption
  562.           method, an Internet standard (see RFC 1321 and RFC 1725). 
  563.           Depending on the BBS implementation, the "Shared Secret" may (or
  564.           may not) be your password.  Contact your BBS Sysop, or BBS
  565.           supplier if you have questions about the details.
  566.  
  567.           The way the Shared Secret works is that the BBS sends a unique
  568.           string each time a connection is made.  The contents of the
  569.           unique string is not important so long as it is unique
  570.           (different) each time a logon occurs.  Your Shared Secret
  571.           (probably your password) is then appended to the unique string
  572.           and processed by something called the MD5 algorithm that produces
  573.           yet a third string which is sent back to the BBS.  The BBS also
  574.           processes the unique string and the Shared Secret by the MD5
  575.           algorithm and compares the result to the one received from the
  576.           user.  If they match, then the BBS can proceed without directly
  577.           asking the user for their password.  The unique string and the
  578.           MD5 processing insure that a logon sequence is NEVER the same and
  579.           the Shared Secret is never directly send across the network.  The
  580.           SIO support BBS supports the Shared Secret login.
  581.  
  582.      Vmodem's Implementation
  583.  
  584.           Vmodem allows the user to specify the Shared Secret as a quoted
  585.           string in the dialing command.  For example, if Vmodem processes
  586.           the following:
  587.  
  588.                ATDT 199.248.240.2 "Hi There"
  589.  
  590.           The Shared Secret is "Hi There" (the Shared Secret does not
  591.           include the quote marks).  If Vmodem process the above ATDT
  592.           command and sees the unique string from the BBS, then a proper
  593.           response is returned to the BBS.  The reader should note that the
  594.           Shared Secret is case sensitive.  That is "hi there" is NOT the
  595.           same as "Hi There".
  596.  
  597.  
  598.      Developers Information
  599.  
  600.           A document for developers describing the Share Secret
  601.           procedure and source code for the MD5 algorithm is available
  602.           from the author.  Send requests for MD5.ZIP via email to
  603.           ray@gwinn.com.
  604.  
  605.  
  606.  
  607.  
  608.                                                                          11
  609.  
  610.                                 DIALING EXAMPLES
  611.  
  612.      Vmodem will translate any "*" (asterisk) in the dialing string to a
  613.      "." (dot).  Some terminal programs refuse to pass the dot, but should
  614.      pass the asterisk because it is a key on telephone keypads.
  615.  
  616.      The following are a few dialing examples to numeric type internet
  617.      addresses.
  618.  
  619.  
  620.      ATDT199.100.191.2              Bob Juge in Houston Texas
  621.      ATDT 199.67.41.2               PCBOARD, Clark Development
  622.      ATDT 199*3*36*205              Steve Schmidt in Chicago Illinois
  623.      atdt198.96.20.209              Steven Bonisteel in Canada
  624.      ATDT194*70*36*10               Jon Morby in England
  625.  
  626.  
  627.      Vmodem implements two different Internet protocols, Telnet and VMP. 
  628.      VMP is Vmodem to Vmodem only, but is true binary while Telnet it not. 
  629.      The Internet protocol that Vmodem uses when making an outgoing connect
  630.      is specified in the ATDT command by preceding the Internet address
  631.      with a pound sign "#".  If the pound sign precedes the Internet
  632.      address, then VMP is used. Otherwise, Telnet is used.  Again, the
  633.      reader should note that VMP should be used only when you know your are
  634.      connecting to another Vmodem on the remote.
  635.  
  636.      The following are a few dialing examples to non-existent internet
  637.      addresses using host names.  At least I believe they do not exist.
  638.  
  639.      ATDT vmbbs.gwinn.com     (use Telnet protocol)
  640.  
  641.      ATDT #vmbbs.gwinn.com    (use VMP protocol)
  642.  
  643.      ATDTvmbbs.internet.com
  644.  
  645.      ATDP "BBS.INTERNET.COM"
  646.  
  647.      ATDT VMBBS.INTERNET.COM
  648.  
  649.      ATDT vmbbs.internet.com 1234
  650.  
  651.      In the above example, the user is specifying a port override. 
  652.      Normally Vmodem will attempt a connect on port 3141 (the official port
  653.      for vmodem).  In this case, the dialer is telling Vmodem to use port
  654.      1234 instead of 3141.
  655.  
  656.  
  657.  
  658.  
  659.      12
  660.  
  661.                                      Telnet
  662.  
  663.      Vmodem implements a Telent server meaning that inbound Telent
  664.      connections are accepted.  The "well know name" for the Telnet server
  665.      is VMOTelnet.  The default port is the standard Telnet port, 23.  The
  666.      port used by the Telnet server can be changed by adding a line to the
  667.      SERVICES file in your ETC directory and assigning VMOTelent to another
  668.      port.  This can also be done to disable the Telnet server part of
  669.      Vmodem.
  670.  
  671.      The best Telnet Client to use to connect to a Vmodem Telnet Server is
  672.      a terminal program also executing under Vmodem.  Vmodem can
  673.      concurrently act as a Client and Server, meaning Vmodem can connect to
  674.      itself on the same system.  This feature is a very good testing tool. 
  675.      Of course, you can connect from a remote system as well.
  676.  
  677.      IBM's Telnet Client
  678.  
  679.      IBM's Telnet seems to be a little finicky, but I did get it to connect
  680.      and work with a Vmodem host.  I executed IBM's Telnet with the
  681.      following command line:
  682.  
  683.                telnet -t ANSI -c NONE
  684.  
  685.      In addition, after Telent loads I had to enter the following:
  686.  
  687.                toggle crlf
  688.  
  689.      BE SURE TO ENTER THE ABOVE COMMAND AFTER EXECUTING IBM'S TELENT. 
  690.      Things are really screwy if you do not.
  691.  
  692.  
  693.  
  694.  
  695.                                                                          13
  696.  
  697.                          Development and Debugging Tools
  698.  
  699.      The Poor Man's Line Monitor (PMLM.EXE)
  700.  
  701.      PMLM is basically of interest to developers of comm applications and
  702.      those providing technical support for those applications.  This SIO
  703.      utility is released largely (in self defense) in the hope that some
  704.      users can diagnose their own problems.  PMLM's feature of saving trace
  705.      information to disk will only work with registered and beta versions
  706.      of SIO.
  707.  
  708.      PMLM provides basic line monitoring for OS/2, DOS and Windows comm
  709.      programs.  All characters sent or received by application programs are
  710.      displayed in the upper portion of the screen.  Receive characters are
  711.      displayed as "white on blue" and transmitted characters are displayed
  712.      "yellow on violet".  Line signals, such as CTS are displayed as "dim
  713.      white on red" when turned off and "bright white on red" when turned
  714.      on.  In addition, a signals transition to OFF is displayed in lower
  715.      case and a signals transition to ON is displayed in upper case.
  716.  
  717.      Status information is displayed in the lower part of the screen.  A
  718.      bright white display means the signal is on, a dim white indicates
  719.      that the signal is off.  In addition, when bright,  Rxoff and Txoff
  720.      indicate the SIO has sent (Txoff) or received (Rxoff) an Xoff, and an
  721.      Xon is pending.
  722.  
  723.      When a DOS or Windows session uses a comm port, an additional line of
  724.      signal status appears.  This status line shows the state of the
  725.      virtual UART's signals.  Only the signals which MAY be different from
  726.      the real UART's signals are shown.
  727.  
  728.      "Rx Chars" and "Tx Chars" reflects the number of characters in SIO's
  729.      receive and transmit buffers respectively.
  730.  
  731.      The last line on the screen shows the keys (from the keyboard) that
  732.      PMLM will recognize.  The bright character shows the key to hit for
  733.      the associated function.  The font keys will not work in a windowed
  734.      OS/2 session.
  735.  
  736.      PMLM's command line requires one parameter, the comm port number, and
  737.      optionally accepts an additional parameter giving a save trace file
  738.      name.  For example, PMLM 1 COM1INFO.TEC will monitor COM1 and save ALL
  739.      of the communications traffic in the file COM1INFO.TRC.  The trace
  740.      files created by PMLM contain exactly the same information that is
  741.      displayed by PMLM, video attributes and all.
  742.  
  743.  
  744.  
  745.  
  746.      14
  747.  
  748.  
  749.      VIEWPMLM.EXE may be used to view trace files created by PMLM. 
  750.      VIEWPMLM.EXE requires one parameter, the trace file name.  The user
  751.      can use the keys UP, DOWN, PAGEUP, PAGEDOWN, HOME, and END to navigate
  752.      the saved trace file.  Registered SIO users may send VIEWPMLM.EXE
  753.      (along with saved trace files) to anyone for technical support
  754.      purposes.
  755.  
  756.      VIEWPMLM can be used in native DOS, in DOS sessions under OS/2, and in
  757.      OS/2 sessions.  This means that even those developers and support
  758.      people need not have OS/2 to view the captured communications data
  759.      created by PMLM.
  760.  
  761.      SIO's Utility (SU.EXE)
  762.  
  763.      This utility program has several useful commands.  You can obtain a
  764.      list of the available commands by typing SU at any command line prompt
  765.      without any parameters.  One very useful command is SU IRQS.  This
  766.      command will show IRQs that currently free for use.  Commands are
  767.      provided allowing user control (missing from MODE) are available. 
  768.      Status commands provide a wealth of diagnostic information.
  769.  
  770.  
  771.  
  772.  
  773.                                                                          15
  774.  
  775.                   Appendix A, Hardware Port and IRQ Assignments
  776.  
  777.      I have obtained the following information from various sources. 
  778.      Accuracy is not guaranteed.  In fact, nothing in this document is
  779.      guaranteed.
  780.  
  781.      Addresses and IRQs for COM1 and COM2
  782.  
  783.           COM1 uses 03F8h and IRQ4
  784.           COM2 uses 02F8h and IRQ3
  785.  
  786.      Defacto standard for COM3 and COM4 for PC, XT and AT
  787.  
  788.           COM3 uses 03E8h and IRQ4
  789.           COM4 uses 02E8h and IRQ3
  790.  
  791.      Addresses and IRQ for COM3 through COM8 on the PS/2
  792.  
  793.           COM3 uses 3220h and IRQ3
  794.           COM4 uses 3228h and IRQ3
  795.           COM5 uses 4220h and IRQ3
  796.           COM6 uses 4228h and IRQ3
  797.           COM7 uses 5220h and IRQ3
  798.           COM8 uses 5228h and IRQ3
  799.  
  800.      All PCs (known to the author) prior to the PS/2 and EISA only use 10
  801.      bits to address hardware I/0 ports.  Systems prior to the PS/2 and
  802.      EISA can not address the standard PS/2 addresses for COM3 through
  803.      COM8.  If an AT or below attempts to address COM3 through COM8 using
  804.      the PS/2 addresses, only the low 10 bits of the address are used. 
  805.      That is, the high 6 bits of the address will be ignored by the
  806.      hardware.  This means that any reference to COM3 through COM8 will
  807.      actually address ports 220h through 22Fh on older PCs.
  808.  
  809.      One should avoid expansion boards that use ports 220h through 22Fh
  810.      unless the expansion board is a serial I/O board. 
  811.  
  812.      SIO will (attempt to) determine the hardware architecture (ISA/EISA
  813.      and PS/2) that it is being executed on and use the appropriate
  814.      hardware port addresses for COM1 thru COM4 as defaults.
  815.  
  816.  
  817.  
  818.  
  819.      16
  820.  
  821.                                       Index
  822.  
  823.      Addresses and IRQ for COM3 through COM8 on the PS/2 . . . . . . . . 15
  824.      Addresses and IRQs for COM1 and COM2  . . . . . . . . . . . . . . . 15
  825.      Appendix A, Hardware Notes  . . . . . . . . . . . . . . . . . . . . 15
  826.      AT Commands Supported . . . . . . . . . . . . . . . . . . . . . . .  7
  827.      BBS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  2
  828.      Caveats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  9
  829.      Defacto standard for COM3 and COM4  . . . . . . . . . . . . . . . . 15
  830.      Default port number . . . . . . . . . . . . . . . . . . . . . . . .  5
  831.      Development and Debugging Tools . . . . . . . . . . . . . . . . . . 13
  832.      DIALING EXAMPLES  . . . . . . . . . . . . . . . . . . . . . . . . . 11
  833.      Distribution  . . . . . . . . . . . . . . . . . . . . . . . . . . .  2
  834.      GETTING IT GOING  . . . . . . . . . . . . . . . . . . . . . . . . .  5
  835.      IBM's Telnet Client . . . . . . . . . . . . . . . . . . . . . . . . 12
  836.      Ordering  . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  2
  837.      PMLM.EXE  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
  838.      Result Codes  . . . . . . . . . . . . . . . . . . . . . . . . . . .  8
  839.      S Registers Supported . . . . . . . . . . . . . . . . . . . . . . .  8
  840.      SECURITY  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
  841.      SIO's Utility (SU.EXE)  . . . . . . . . . . . . . . . . . . . . . . 14
  842.      Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  2
  843.      TCP/IP Required . . . . . . . . . . . . . . . . . . . . . . . . . .  5
  844.      TCP/IP Sockets  . . . . . . . . . . . . . . . . . . . . . . . . . .  5
  845.      Telnet  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
  846.      The SIO.SYS command line  . . . . . . . . . . . . . . . . . . . . .  5
  847.      THE VIRTUAL MODEM . . . . . . . . . . . . . . . . . . . . . . . . .  7
  848.      VIEWPMLM.EXE  . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
  849.      WHAT IS VMODEM  . . . . . . . . . . . . . . . . . . . . . . . . . .  1
  850.