home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 2 BBS / 02-BBS.zip / MAX200-4.LZH / OS2.DOC < prev    next >
Text File  |  1991-11-04  |  22KB  |  533 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.                                     Contents
  13.  
  14.  
  15.                   1  Introduction  . . . . . . . . . . . . . . . . . 1
  16.                   2  System Requirements . . . . . . . . . . . . . . 1
  17.                   3  Installation  . . . . . . . . . . . . . . . . . 2
  18.                   4  Maximus/2 and BinkleyTerm . . . . . . . . . . . 2
  19.                   5  Differences from DOS version  . . . . . . . . . 3
  20.                   6  Multiline Operation . . . . . . . . . . . . . . 5
  21.                   7  The MAXPIPE program . . . . . . . . . . . . . . 5
  22.                   8  The PMSNOOP program . . . . . . . . . . . . . . 6
  23.  
  24.                Index                                                 8
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.           1  Introduction
  32.  
  33.  
  34.           In  addition  to  all   the   features   mentioned  in  the  main
  35.           documentation,   Maximus/2 2.00 is different from version 1.00 in
  36.           the following ways:
  37.  
  38.                *    Version 2.00 uses MAXCOMM.DLL instead of COMM.DLL.  The
  39.                     Comm API is the same;  the DLL name was changed because
  40.                     of a conflict with another product.
  41.  
  42.                *    All  low-level  message  handling  code is contained in
  43.                     MSGAPI.DLL.  Maxp.exe and many other utilities use this
  44.                     code  (SILT,  SQUISH,  etc).  It is our hope that third
  45.                     party  developers  will  use  this  API/DLL  to  access
  46.                     messages,  rather than trying to do so directly.
  47.  
  48.  
  49.           2  System Requirements
  50.  
  51.  
  52.           Because OS/2 uses  virtual  memory  it  may  be  possible  to run
  53.           Maximus/2 with less than the  following configuration,  but it is
  54.           not recommended.
  55.  
  56.                *    OS/2  Version  1.20  or greater.  It may be possible to
  57.                     run Maximus/2 with earlier  versions  of  OS/2,  but it
  58.                     was not tested.
  59.  
  60.                *    Memory:    For  a  single  line  system  (one  copy  of
  61.                     Maximus/2 running),  you should have,  at  least,   the
  62.                     amount of memory recommended by your  version  of OS/2.
  63.                     For IBM OS/2 1.30,  this is 3MB.
  64.  
  65.                     As you add more phone  lines,    and/or  faster modems,
  66.                     you will have to increase  the amount of memory in your
  67.                     system if you want to prevent  file  transfer overruns.
  68.                     This is especially true if you have an 80286 processor.
  69.                     If  your  system  is  a  mail-only   system   (no  file
  70.                     transfers),  this may not be as large a concern.
  71.  
  72.                *    If using  an 80286,  you should have PROTECTONLY=YES in
  73.                     config.sys.   This prevents interrupts from being  lost
  74.                     by switching to real mode;   a very slow undertaking on
  75.                     that processor.   Even on an 80386 or I486,  if you are
  76.                     using high speed modems,   switching to the dos box may
  77.                     cause bytes to be lost (this will not be a concern with
  78.                     OS/2 2.00).
  79.  
  80.                *    Unless  there are very extenuating circumstances,   you
  81.                     should  leave the config.sys PRIORITY parameter set  to
  82.                     the  default  setting,  DYNAMIC.    By  setting  it  to
  83.                     ABSOLUTE,      you   turn   off    OS/2's   pre-emptive
  84.                     mutlitasking.
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.                *    Maximus/2,  like all OS/2  RS232  software,    does not
  92.                     require  a  "FOSSIL"  driver.  OS/2,  unlike MSDOS,  is
  93.                     shipped with a  proper  device  driver  for  the serial
  94.                     ports.  The driver is called COM0x.SYS (where x = 1 for
  95.                     ISA    computers,        and   2   for   Microchannel).
  96.                     Unfortunately,  most (if not all) versions of OS/2 have
  97.                     shipped with a COM0x.SYS  file  that  is broken in some
  98.                     way.   Included  with  this  package are Gerry Rozema's
  99.                     (1:153/905)    COM16550.SYS and  COM16450.SYS  drivers.
  100.                     These are replacements for COM01.SYS,  and seem to work
  101.                     better than  the  standard  issue.    Both  drivers are
  102.                     contained in COM16550.LZH.
  103.  
  104.                *    HPFS is strongly recommended.  A ten-fold  (or greater)
  105.                     performance increase can be had if you have large *.MSG
  106.                     type messages areas.
  107.  
  108.  
  109.           3  Installation
  110.  
  111.  
  112.           Maximus/2  is  installed  the same way as Maximus/DOS,  using the
  113.           provided installation program  (INSTALL.EXE),  with the exception
  114.           that it should be installed from an OS/2 session,  not DOS.
  115.  
  116.           INSTALL will copy  3 DLLs (MSGAPI.DLL, MAXCOMM.DLL, SNSERVER.DLL)
  117.           to  your  C:\OS2\DLL  directory,    which  it  needs to  complete
  118.           installation.  These DLLs are  also copied to your Maximus system
  119.           directory.  After installation,    you may wish to erase the DLLs
  120.           copied to C:\OS2\DLL,  and add your Maximus  system  directory to
  121.           your LIBPATH in config.sys.  If you are at all unsure  about what
  122.           some  of the terms mentioned in  this  paragraph  (DLL,  LIBPATH,
  123.           CONFIG.SYS),  then do nothing.  Maximus should work as installed.
  124.  
  125.  
  126.           4  Maximus/2 and BinkleyTerm
  127.  
  128.  
  129.           Currently,   the only fidonet mailer  available  for  Maximus  is
  130.           BinkleyTerm.   This  section  discusses  running  Maximus/2  with
  131.           BinkleyTerm as the front end.
  132.  
  133.                *    BinkleyTerm *MUST* use the "BBS Spawn"  method  to load
  134.                     Maximus.  Furthermore,  you must start BinkleyTerm with
  135.                     the SHARE command line option ("BTP SHARE").  These two
  136.                     options cause Bink to  pass  the  opened COMM handle to
  137.                     Maximus.
  138.  
  139.                *    Maximus must be passed  the  FILE  HANDLE of the opened
  140.                     COM: port from binkley.    Using  the sample batch file
  141.                     (spawnbbs.cmd)  supplied  with  this document does this
  142.                     properly.  DO NOT try to hard code this value.  Passing
  143.                     a '1' for COM1: will NOT WORK!
  144.  
  145.  
  146.  
  147.  
  148.                                         - 2 -
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155.                *    ALL serial port  options (bps, parity, handshaking) are
  156.                     inherited  from  BinkleyTerm.    Maximus does not open,
  157.                     close, or alter the COMM parameters in any way,  except
  158.                     for  XON/XOFF  flow control. Therefore,    the  MAX.CTL
  159.                     "Mask  Handshaking"  statements  for  CTS  and  DSR  do
  160.                     nothing.  XON behaves as described.
  161.  
  162.                     NOTE:  Later versions  of  BinkleyTerm  may act in much
  163.                     the same fashion,  so it may be necessary  to  use  the
  164.                     "MODE COMx:" command to set up your port before loading
  165.                     BTP.
  166.  
  167.  
  168.           5  Differences from DOS version
  169.  
  170.  
  171.                *    In WFC (wait for  caller)  mode,   Maximus/2 only polls
  172.                     the keyboard about every 2 seconds.   Therefore, please
  173.                     be patient if you  hit  ALT-X  or  ALT-K, etc. This was
  174.                     done so that a negligible amount of CPU cycles are used
  175.                     while Maximus/2  is  waiting  for  the  phone  to ring.
  176.                     Modem responses are handled immediately.
  177.  
  178.                *    The "-p" command line option (which specifies  the port
  179.                     number under dos) specifies  file  handle  of  the comm
  180.                     port.  Binkley passes this open handle to SPAWNBBS.CMD,
  181.                     which in turn passes it to MAXP.EXE.  Do  not  try  and
  182.                     pass something like '-p1' for  COM1:,  '-p2'  for COM2:
  183.                     etc;  it will NOT work!
  184.  
  185.                *    The "-b" command line option (bps rate) is only used in
  186.                     calculations,  and does not change the data rate of the
  187.                     comm port.  For example,  Maximus uses  this  number to
  188.                     calculate the throughput of file  transfers.    If your
  189.                     modem  is  "locked"  at a high baud  rate  (19200,  for
  190.                     example)  Maximus  will communicate to  your  modem  at
  191.                     19200 (or whatever speed BinkleyTerm was using  when it
  192.                     spawned the  bbs),  but will base all time calculations
  193.                     on the rate passed with the "-b" parameter.  Therefore,
  194.                     the  "LOCKBAUD"  concept  is  totally   transparent  to
  195.                     Maximus.  If BinkleyTerm is happy, so is Maximus.
  196.  
  197.                     New Maximus 2.00 feature: In WFC  mode,  the -b command
  198.                     line  parameter  is  not  ignored.    See  also the  -s
  199.                     parameter (steady  bps  rate)  in  the  normal  Maximus
  200.                     documentation.
  201.  
  202.                *    The "-z" command line option is used by the
  203.                     OS/2 version to  name  the NamedPipe that connects to a
  204.                     PmSnoop session. The -z parameter must be followed by a
  205.                     pipe name,  with no spaces. example:   "-z\PIPE\LINE1".
  206.                     If  this  option  is  not  used,  the  default name  of
  207.  
  208.  
  209.  
  210.  
  211.                                         - 3 -
  212.  
  213.  
  214.  
  215.  
  216.  
  217.  
  218.                     \pipe\maxsnoop  is used. For more information, see  the
  219.                     section on PMSNOOP,  below.
  220.  
  221.                *    External programs ("DOOR" programs) must be called with
  222.                     the  "Extern_Run"  command  (see menus.ctl).  Actually,
  223.                     this may not be true;   but the other Extern_* commands
  224.                     seem  rather silly to use under OS/2,    and  were  not
  225.                     tested.  I guess Extern_Dos would work ok,  but I don't
  226.                     see many uses  for  calling a batch file (since Maximus
  227.                     has such a  rich  set  of  '%' commands to use with the
  228.                     Extern_Run command).
  229.  
  230.                *    For   the  same  reasons  that  the  Extern_Erlvl   and
  231.                     Extern_Chain commands are  not  recommended, restarting
  232.                     Maximus with the "-r"  switch  is  a lost concept under
  233.                     OS/2,  and was never tested.
  234.  
  235.                *    The   "%P"   (case   significant)  command  (Used  with
  236.                     Extern_Run, among other  things) passes the comm handle
  237.                     in ascii decimal.   For  hysterical  reasons,  the "%p"
  238.                     option (lower case) will pass a number that is equal to
  239.                     one less than the  comm  handle,    so you should steer
  240.                     clear of this.
  241.  
  242.                *    The only way for external programs to use the comm port
  243.                     is to accept the file handle to the  comm  port, unless
  244.                     they are simple programs that use stdin and stdout.  In
  245.                     the latter case, MAXPIPE (or something  similar  to it)
  246.                     should be used to redirect stdin and stdout from/to the
  247.                     com port.  Using  the  ">"  and "<" redirection options
  248.                     provided by the Extern_* commands is not recommended.
  249.  
  250.                *    Due to (what I consider a design flaw) in the COM0x.SYS
  251.                     driver, ^C/^K checking in the os/2 version is a kludge.
  252.                     ^C/^K must be  the  FIRST  key  you press if you are to
  253.                     successfully interrupt the  bbs.   If any other key, or
  254.                     line noise,  is  put  into  the  input queue before the
  255.                     ^C/^K,  the ^C/^K will not be processed  until  the BBS
  256.                     wants user input (like at a menu prompt).
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.  
  274.  
  275.                                         - 4 -
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282.           6  Multiline Operation
  283.  
  284.  
  285.           All files/file areas/message areas  can  be  shared  by multiple,
  286.           concurrent copies of Maximus,  except for the log file  and those
  287.           files governed by the "task number" (the -n command line option),
  288.           and the named pipe used for PmSnoop.  Since all  of  these can be
  289.           controlled with command line parameters,  you therefore only need
  290.           one  MAX.CTL.    For example,  one of your sessions may look like
  291.           this:
  292.  
  293.                   maxp max -b%1 -p%2 -t%3 -n1 -lLINE1.LOG -z\PIPE\SNOOP1
  294.  
  295.           And a second like this:
  296.  
  297.                   maxp max -b%1 -p%2 -t%3 -n2 -lLINE2.LOG -z\PIPE\SNOOP2
  298.  
  299.  
  300.           7  The MAXPIPE program
  301.  
  302.  
  303.           This  program  uses  anonymous  pipes  and  multiple  threads  to
  304.           redirect  "standard i/o"  (stdin/stdout/stderr) to/from the  comm
  305.           port.  It also provides  a "watchdog" feature which  monitors the
  306.           carrier.
  307.  
  308.           If the carrier drops,    MaxPipe kills the process it is running,
  309.           and  any children it may have spawned,  and  returns  control  to
  310.           Maximus.  Maximus will promptly notice the lost carrier,  and log
  311.           the caller off.
  312.  
  313.           If the comm handle passed to MaxPipe is 0,  the  watchdog feature
  314.           is disabled.    (Maximus  passes  0  when  the sysop is logged on
  315.           locally).
  316.  
  317.           MaxPipe is invoked thus:
  318.  
  319.                     MaxPipe   <comm handle> <program> [arguments]
  320.  
  321.                     Where :   <comm  handle>  is  the  open   comm  handle,
  322.                               probably passed via the "%P" Maximus thingy.
  323.  
  324.                               <program> is the program you want to run.  If
  325.                               it is not on the path,  be  sure  you specify
  326.                               where it is.
  327.  
  328.                               [arguments]  are  any optional  command  line
  329.                               arguments you want passed to <program>.
  330.  
  331.  
  332.           Here is a snippet from my MENUS.CTL,  which uses MaxPipe:
  333.  
  334.                Xtern_Run MAXPIPE.EXE_%P_ADVENT normal "Adventure"
  335.                Xtern_Run MAXPIPE.EXE_%P_CMD    Sysop  "!Shell to OS/2"
  336.  
  337.  
  338.  
  339.                                         - 5 -
  340.  
  341.  
  342.  
  343.  
  344.  
  345.  
  346.           NOTE:     If programs (written in Microsoft C or IBM C/2) use the
  347.                     popular getch() function  (read  a key),  they will not
  348.                     work correctly with MaxPipe.   For  some  reason,   the
  349.                     os/2   version   of  getch()  was   written   to   call
  350.                     KbdCharIn(),    rather  than  read  from  stdin.    For
  351.                     example, if PKZIP prompts you for any reason (like when
  352.                     you  enter  PKZIP  with no arguments,  to get the Usage
  353.                     screen) you will not be  able  to  send  it keystrokes.
  354.                     Your  only option is to hang up (no  big  deal  --  the
  355.                     system will recover lickety-split).
  356.  
  357.           Maxpipe is a simple program,  written only to keep CMD.EXE happy.
  358.           It  buffers  the  byte streams a bit (100 bytes, I think),  which
  359.           makes a drastic improvement in performance.  However,    this may
  360.           make   some  programs  behave  oddly.     If   you   stick   some
  361.           fflush(stdout) statements in the code  just  before  you  ask for
  362.           user input,  it  will  solve this problem.  Command line utility-
  363.           type programs,   that  don't  get  user  input,  won't  have this
  364.           problem -- but you will notice the output (or the last  100 bytes
  365.           of it) may be delayed until the program completes.
  366.  
  367.  
  368.           8  The PMSNOOP program
  369.  
  370.  
  371.           Making a PM program out  of something like BinkleyTerm or Maximus
  372.           is  a  silly  idea,    since  these  programs  (from  the  sysops
  373.           perspective)  are "read only" programs that  are,  for  the  most
  374.           part, MONITORED rather  than  INTERACTED with.  Running this type
  375.           of program in a VIO window,  where you can keep  your  eye  on it
  376.           while   using  a  PM  app,    just   slows   the   program   down
  377.           (significantly),    and  clutters the desktop.  Pmsnoop,  the way
  378.           Maximus uses it,  gives the sysop a realtime view of the logfile.
  379.           Since PmSnoop uses named pipes,  the sysop could actually monitor
  380.           the bbs from a different computer (via Lan Manager/Lan Server).
  381.  
  382.           Each  copy of the bbs you run (including the one you use to logon
  383.           locally) should use a different pipe name.   (Although  you don't
  384.           have to run  pmsnoop for each,  if you don't want).  If you don't
  385.           do  this,  the  pipe will be given on a "first come, first serve"
  386.           basis, where all but the first copy of Maximus  will  receive  an
  387.           error  when  they  try to create the pipe (this is  NOT  a  fatal
  388.           error, and the bbs will run without any problems).
  389.  
  390.           For each copy  of pmsnoop you use,  you need to tell it about the
  391.           pipe name you used with MAXP.
  392.  
  393.           A pipe name must  ALWAYS  start  with  \pipe\,  or \\server\pipe\
  394.           (yes, that is TWO  slashes  in \\server!),  where \\server is the
  395.           name  of  another  computer on the LAN.   Since  Maximus  is  the
  396.           server process (and  pmsnoop  is  the  client),  if you are using
  397.           LanMan  (Lan  Server)  prior  to  release 2.00,  Maximus must  be
  398.           running  on a network server to connect  to  pmsnoop  on  another
  399.           computer (ie:  If  Maximus  was on a workstation, and pmsnoop was
  400.  
  401.  
  402.  
  403.                                         - 6 -
  404.  
  405.  
  406.  
  407.  
  408.  
  409.  
  410.           on  a  netserver,    it  would  not  work). This  problem  should
  411.           disappear with the "peer services" provided by LanMan 2.00.
  412.  
  413.           Each copy of PmSnoop you load  will  recognize that it is not the
  414.           only copy running,  and will use a different profile from OS2.INI
  415.           to  load  its  options.  Therefore,  when you "save options",  or
  416.           use  the Desktop Manager to save the desktop,    each  copy  will
  417.           store its pipe name,  position,  and font separately.
  418.  
  419.           The  server  end  of  the   named  pipe  (used  by  Maximus)  was
  420.           implemented in a DLL  (SNSERVER.DLL)  so  that other programs can
  421.           use it too.  The Snoop() API is quite simple,    and is published
  422.           with  the  Maximus  source  code.    BinkleyTerm  2.40+  supports
  423.           SNSERVER.DLL too.
  424.  
  425.           The general idea here is that each program serving the same phone
  426.           line use the same named pipe.   When  BTP  spawns  the  bbs,   it
  427.           closes the pipe and the bbs opens it, etc.
  428.  
  429.           SNSERVER.DLL does  all  of  the  named  pipe  magic.  It does not
  430.           expect either  pmsnoop.exe, or the server (binkley and/or bbs) to
  431.           be running at any given time.  ie:  You can  start  and  stop the
  432.           programs  at  will,  or neglect to  start  them.    A  protection
  433.           violation (or other death) of  either program will not affect the
  434.           other.
  435.  
  436.           Pmsnoop does not use snserver.dll.  Only the server process does.
  437.           All other aspects of Pmsnoop should be obvious.  I  apologize for
  438.           not  installing  online help,  but my  mandate  was  to  build  a
  439.           program  that worked under both OS/2 1.10 and  1.20.    The  help
  440.           manager is not available under 1.10.
  441.  
  442.           There is no horizontal scroll bar when run under OS/2 1.10.
  443.  
  444.           When selecting a different font, some older versions  of  1.10 do
  445.           not engage the font correctly.   The  solution to this is to exit
  446.           Pmsnoop and start  it  up  again;    the desired font will now be
  447.           engaged.  (I discovered this problem when running  under  the "MS
  448.           OS/2 1.10 Server Adaption" that comes with 3+Open 1.1.  The fonts
  449.           worked correctly on the version of IBM 1.10 I tried.)
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.  
  467.                                         - 7 -
  468.  
  469.  
  470.  
  471.  
  472.  
  473.  
  474.  
  475.  
  476.  
  477.  
  478.  
  479.  
  480.                                         Index
  481.  
  482.  
  483.                  80286 1                     I
  484.                  80386 1                     I486 1
  485.                  -b 3                        INSTALL.EXE 2
  486.                  %P 4
  487.                  -p 3                        L
  488.                  -s 3                        LOCKBAUD 3
  489.                  -z 3
  490.                                              M
  491.                  B                           MAXCOMM.DLL 1, 2
  492.                  BinkleyTerm 2               MAXPIPE 4
  493.                                              MaxPipe 5
  494.                  C                           Memory 1
  495.                  COM16450.SYS 2              MSGAPI.DLL 1, 2
  496.                  COM16550.SYS 2
  497.                  COM0x.SYS 2                 N
  498.                  COMM.DLL 1                  NamedPipe 3
  499.  
  500.                  E                           P
  501.                  Extern_Run 4                PmSnoop 3
  502.                                              PRIORITY 1
  503.                  F                           processor 1
  504.                  fflush(stdout) 6            PROTECTONLY=YES 1
  505.                  FOSSIL 2
  506.                                              S
  507.                  G                           SNSERVER.DLL 2, 7
  508.                  getch() 6
  509.                                              W
  510.                  H                           wait for caller 3
  511.                  HPFS 2                      WFC 3
  512.  
  513.  
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.                                         - 8 -
  532.  
  533.