home *** CD-ROM | disk | FTP | other *** search
-
-
-
-
-
-
-
-
-
-
-
- Contents
-
-
- 1 Introduction . . . . . . . . . . . . . . . . . 1
- 2 System Requirements . . . . . . . . . . . . . . 1
- 3 Installation . . . . . . . . . . . . . . . . . 2
- 4 Maximus/2 and BinkleyTerm . . . . . . . . . . . 2
- 5 Differences from DOS version . . . . . . . . . 3
- 6 Multiline Operation . . . . . . . . . . . . . . 5
- 7 The MAXPIPE program . . . . . . . . . . . . . . 5
- 8 The PMSNOOP program . . . . . . . . . . . . . . 6
-
- Index 8
-
-
-
-
-
-
- 1 Introduction
-
-
- In addition to all the features mentioned in the main
- documentation, Maximus/2 2.00 is different from version 1.00 in
- the following ways:
-
- * Version 2.00 uses MAXCOMM.DLL instead of COMM.DLL. The
- Comm API is the same; the DLL name was changed because
- of a conflict with another product.
-
- * All low-level message handling code is contained in
- MSGAPI.DLL. Maxp.exe and many other utilities use this
- code (SILT, SQUISH, etc). It is our hope that third
- party developers will use this API/DLL to access
- messages, rather than trying to do so directly.
-
-
- 2 System Requirements
-
-
- Because OS/2 uses virtual memory it may be possible to run
- Maximus/2 with less than the following configuration, but it is
- not recommended.
-
- * OS/2 Version 1.20 or greater. It may be possible to
- run Maximus/2 with earlier versions of OS/2, but it
- was not tested.
-
- * Memory: For a single line system (one copy of
- Maximus/2 running), you should have, at least, the
- amount of memory recommended by your version of OS/2.
- For IBM OS/2 1.30, this is 3MB.
-
- As you add more phone lines, and/or faster modems,
- you will have to increase the amount of memory in your
- system if you want to prevent file transfer overruns.
- This is especially true if you have an 80286 processor.
- If your system is a mail-only system (no file
- transfers), this may not be as large a concern.
-
- * If using an 80286, you should have PROTECTONLY=YES in
- config.sys. This prevents interrupts from being lost
- by switching to real mode; a very slow undertaking on
- that processor. Even on an 80386 or I486, if you are
- using high speed modems, switching to the dos box may
- cause bytes to be lost (this will not be a concern with
- OS/2 2.00).
-
- * Unless there are very extenuating circumstances, you
- should leave the config.sys PRIORITY parameter set to
- the default setting, DYNAMIC. By setting it to
- ABSOLUTE, you turn off OS/2's pre-emptive
- mutlitasking.
-
-
-
-
-
-
- * Maximus/2, like all OS/2 RS232 software, does not
- require a "FOSSIL" driver. OS/2, unlike MSDOS, is
- shipped with a proper device driver for the serial
- ports. The driver is called COM0x.SYS (where x = 1 for
- ISA computers, and 2 for Microchannel).
- Unfortunately, most (if not all) versions of OS/2 have
- shipped with a COM0x.SYS file that is broken in some
- way. Included with this package are Gerry Rozema's
- (1:153/905) COM16550.SYS and COM16450.SYS drivers.
- These are replacements for COM01.SYS, and seem to work
- better than the standard issue. Both drivers are
- contained in COM16550.LZH.
-
- * HPFS is strongly recommended. A ten-fold (or greater)
- performance increase can be had if you have large *.MSG
- type messages areas.
-
-
- 3 Installation
-
-
- Maximus/2 is installed the same way as Maximus/DOS, using the
- provided installation program (INSTALL.EXE), with the exception
- that it should be installed from an OS/2 session, not DOS.
-
- INSTALL will copy 3 DLLs (MSGAPI.DLL, MAXCOMM.DLL, SNSERVER.DLL)
- to your C:\OS2\DLL directory, which it needs to complete
- installation. These DLLs are also copied to your Maximus system
- directory. After installation, you may wish to erase the DLLs
- copied to C:\OS2\DLL, and add your Maximus system directory to
- your LIBPATH in config.sys. If you are at all unsure about what
- some of the terms mentioned in this paragraph (DLL, LIBPATH,
- CONFIG.SYS), then do nothing. Maximus should work as installed.
-
-
- 4 Maximus/2 and BinkleyTerm
-
-
- Currently, the only fidonet mailer available for Maximus is
- BinkleyTerm. This section discusses running Maximus/2 with
- BinkleyTerm as the front end.
-
- * BinkleyTerm *MUST* use the "BBS Spawn" method to load
- Maximus. Furthermore, you must start BinkleyTerm with
- the SHARE command line option ("BTP SHARE"). These two
- options cause Bink to pass the opened COMM handle to
- Maximus.
-
- * Maximus must be passed the FILE HANDLE of the opened
- COM: port from binkley. Using the sample batch file
- (spawnbbs.cmd) supplied with this document does this
- properly. DO NOT try to hard code this value. Passing
- a '1' for COM1: will NOT WORK!
-
-
-
-
- - 2 -
-
-
-
-
-
-
- * ALL serial port options (bps, parity, handshaking) are
- inherited from BinkleyTerm. Maximus does not open,
- close, or alter the COMM parameters in any way, except
- for XON/XOFF flow control. Therefore, the MAX.CTL
- "Mask Handshaking" statements for CTS and DSR do
- nothing. XON behaves as described.
-
- NOTE: Later versions of BinkleyTerm may act in much
- the same fashion, so it may be necessary to use the
- "MODE COMx:" command to set up your port before loading
- BTP.
-
-
- 5 Differences from DOS version
-
-
- * In WFC (wait for caller) mode, Maximus/2 only polls
- the keyboard about every 2 seconds. Therefore, please
- be patient if you hit ALT-X or ALT-K, etc. This was
- done so that a negligible amount of CPU cycles are used
- while Maximus/2 is waiting for the phone to ring.
- Modem responses are handled immediately.
-
- * The "-p" command line option (which specifies the port
- number under dos) specifies file handle of the comm
- port. Binkley passes this open handle to SPAWNBBS.CMD,
- which in turn passes it to MAXP.EXE. Do not try and
- pass something like '-p1' for COM1:, '-p2' for COM2:
- etc; it will NOT work!
-
- * The "-b" command line option (bps rate) is only used in
- calculations, and does not change the data rate of the
- comm port. For example, Maximus uses this number to
- calculate the throughput of file transfers. If your
- modem is "locked" at a high baud rate (19200, for
- example) Maximus will communicate to your modem at
- 19200 (or whatever speed BinkleyTerm was using when it
- spawned the bbs), but will base all time calculations
- on the rate passed with the "-b" parameter. Therefore,
- the "LOCKBAUD" concept is totally transparent to
- Maximus. If BinkleyTerm is happy, so is Maximus.
-
- New Maximus 2.00 feature: In WFC mode, the -b command
- line parameter is not ignored. See also the -s
- parameter (steady bps rate) in the normal Maximus
- documentation.
-
- * The "-z" command line option is used by the
- OS/2 version to name the NamedPipe that connects to a
- PmSnoop session. The -z parameter must be followed by a
- pipe name, with no spaces. example: "-z\PIPE\LINE1".
- If this option is not used, the default name of
-
-
-
-
- - 3 -
-
-
-
-
-
-
- \pipe\maxsnoop is used. For more information, see the
- section on PMSNOOP, below.
-
- * External programs ("DOOR" programs) must be called with
- the "Extern_Run" command (see menus.ctl). Actually,
- this may not be true; but the other Extern_* commands
- seem rather silly to use under OS/2, and were not
- tested. I guess Extern_Dos would work ok, but I don't
- see many uses for calling a batch file (since Maximus
- has such a rich set of '%' commands to use with the
- Extern_Run command).
-
- * For the same reasons that the Extern_Erlvl and
- Extern_Chain commands are not recommended, restarting
- Maximus with the "-r" switch is a lost concept under
- OS/2, and was never tested.
-
- * The "%P" (case significant) command (Used with
- Extern_Run, among other things) passes the comm handle
- in ascii decimal. For hysterical reasons, the "%p"
- option (lower case) will pass a number that is equal to
- one less than the comm handle, so you should steer
- clear of this.
-
- * The only way for external programs to use the comm port
- is to accept the file handle to the comm port, unless
- they are simple programs that use stdin and stdout. In
- the latter case, MAXPIPE (or something similar to it)
- should be used to redirect stdin and stdout from/to the
- com port. Using the ">" and "<" redirection options
- provided by the Extern_* commands is not recommended.
-
- * Due to (what I consider a design flaw) in the COM0x.SYS
- driver, ^C/^K checking in the os/2 version is a kludge.
- ^C/^K must be the FIRST key you press if you are to
- successfully interrupt the bbs. If any other key, or
- line noise, is put into the input queue before the
- ^C/^K, the ^C/^K will not be processed until the BBS
- wants user input (like at a menu prompt).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - 4 -
-
-
-
-
-
-
- 6 Multiline Operation
-
-
- All files/file areas/message areas can be shared by multiple,
- concurrent copies of Maximus, except for the log file and those
- files governed by the "task number" (the -n command line option),
- and the named pipe used for PmSnoop. Since all of these can be
- controlled with command line parameters, you therefore only need
- one MAX.CTL. For example, one of your sessions may look like
- this:
-
- maxp max -b%1 -p%2 -t%3 -n1 -lLINE1.LOG -z\PIPE\SNOOP1
-
- And a second like this:
-
- maxp max -b%1 -p%2 -t%3 -n2 -lLINE2.LOG -z\PIPE\SNOOP2
-
-
- 7 The MAXPIPE program
-
-
- This program uses anonymous pipes and multiple threads to
- redirect "standard i/o" (stdin/stdout/stderr) to/from the comm
- port. It also provides a "watchdog" feature which monitors the
- carrier.
-
- If the carrier drops, MaxPipe kills the process it is running,
- and any children it may have spawned, and returns control to
- Maximus. Maximus will promptly notice the lost carrier, and log
- the caller off.
-
- If the comm handle passed to MaxPipe is 0, the watchdog feature
- is disabled. (Maximus passes 0 when the sysop is logged on
- locally).
-
- MaxPipe is invoked thus:
-
- MaxPipe <comm handle> <program> [arguments]
-
- Where : <comm handle> is the open comm handle,
- probably passed via the "%P" Maximus thingy.
-
- <program> is the program you want to run. If
- it is not on the path, be sure you specify
- where it is.
-
- [arguments] are any optional command line
- arguments you want passed to <program>.
-
-
- Here is a snippet from my MENUS.CTL, which uses MaxPipe:
-
- Xtern_Run MAXPIPE.EXE_%P_ADVENT normal "Adventure"
- Xtern_Run MAXPIPE.EXE_%P_CMD Sysop "!Shell to OS/2"
-
-
-
- - 5 -
-
-
-
-
-
-
- NOTE: If programs (written in Microsoft C or IBM C/2) use the
- popular getch() function (read a key), they will not
- work correctly with MaxPipe. For some reason, the
- os/2 version of getch() was written to call
- KbdCharIn(), rather than read from stdin. For
- example, if PKZIP prompts you for any reason (like when
- you enter PKZIP with no arguments, to get the Usage
- screen) you will not be able to send it keystrokes.
- Your only option is to hang up (no big deal -- the
- system will recover lickety-split).
-
- Maxpipe is a simple program, written only to keep CMD.EXE happy.
- It buffers the byte streams a bit (100 bytes, I think), which
- makes a drastic improvement in performance. However, this may
- make some programs behave oddly. If you stick some
- fflush(stdout) statements in the code just before you ask for
- user input, it will solve this problem. Command line utility-
- type programs, that don't get user input, won't have this
- problem -- but you will notice the output (or the last 100 bytes
- of it) may be delayed until the program completes.
-
-
- 8 The PMSNOOP program
-
-
- Making a PM program out of something like BinkleyTerm or Maximus
- is a silly idea, since these programs (from the sysops
- perspective) are "read only" programs that are, for the most
- part, MONITORED rather than INTERACTED with. Running this type
- of program in a VIO window, where you can keep your eye on it
- while using a PM app, just slows the program down
- (significantly), and clutters the desktop. Pmsnoop, the way
- Maximus uses it, gives the sysop a realtime view of the logfile.
- Since PmSnoop uses named pipes, the sysop could actually monitor
- the bbs from a different computer (via Lan Manager/Lan Server).
-
- Each copy of the bbs you run (including the one you use to logon
- locally) should use a different pipe name. (Although you don't
- have to run pmsnoop for each, if you don't want). If you don't
- do this, the pipe will be given on a "first come, first serve"
- basis, where all but the first copy of Maximus will receive an
- error when they try to create the pipe (this is NOT a fatal
- error, and the bbs will run without any problems).
-
- For each copy of pmsnoop you use, you need to tell it about the
- pipe name you used with MAXP.
-
- A pipe name must ALWAYS start with \pipe\, or \\server\pipe\
- (yes, that is TWO slashes in \\server!), where \\server is the
- name of another computer on the LAN. Since Maximus is the
- server process (and pmsnoop is the client), if you are using
- LanMan (Lan Server) prior to release 2.00, Maximus must be
- running on a network server to connect to pmsnoop on another
- computer (ie: If Maximus was on a workstation, and pmsnoop was
-
-
-
- - 6 -
-
-
-
-
-
-
- on a netserver, it would not work). This problem should
- disappear with the "peer services" provided by LanMan 2.00.
-
- Each copy of PmSnoop you load will recognize that it is not the
- only copy running, and will use a different profile from OS2.INI
- to load its options. Therefore, when you "save options", or
- use the Desktop Manager to save the desktop, each copy will
- store its pipe name, position, and font separately.
-
- The server end of the named pipe (used by Maximus) was
- implemented in a DLL (SNSERVER.DLL) so that other programs can
- use it too. The Snoop() API is quite simple, and is published
- with the Maximus source code. BinkleyTerm 2.40+ supports
- SNSERVER.DLL too.
-
- The general idea here is that each program serving the same phone
- line use the same named pipe. When BTP spawns the bbs, it
- closes the pipe and the bbs opens it, etc.
-
- SNSERVER.DLL does all of the named pipe magic. It does not
- expect either pmsnoop.exe, or the server (binkley and/or bbs) to
- be running at any given time. ie: You can start and stop the
- programs at will, or neglect to start them. A protection
- violation (or other death) of either program will not affect the
- other.
-
- Pmsnoop does not use snserver.dll. Only the server process does.
- All other aspects of Pmsnoop should be obvious. I apologize for
- not installing online help, but my mandate was to build a
- program that worked under both OS/2 1.10 and 1.20. The help
- manager is not available under 1.10.
-
- There is no horizontal scroll bar when run under OS/2 1.10.
-
- When selecting a different font, some older versions of 1.10 do
- not engage the font correctly. The solution to this is to exit
- Pmsnoop and start it up again; the desired font will now be
- engaged. (I discovered this problem when running under the "MS
- OS/2 1.10 Server Adaption" that comes with 3+Open 1.1. The fonts
- worked correctly on the version of IBM 1.10 I tried.)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - 7 -
-
-
-
-
-
-
-
-
-
-
-
-
- Index
-
-
- 80286 1 I
- 80386 1 I486 1
- -b 3 INSTALL.EXE 2
- %P 4
- -p 3 L
- -s 3 LOCKBAUD 3
- -z 3
- M
- B MAXCOMM.DLL 1, 2
- BinkleyTerm 2 MAXPIPE 4
- MaxPipe 5
- C Memory 1
- COM16450.SYS 2 MSGAPI.DLL 1, 2
- COM16550.SYS 2
- COM0x.SYS 2 N
- COMM.DLL 1 NamedPipe 3
-
- E P
- Extern_Run 4 PmSnoop 3
- PRIORITY 1
- F processor 1
- fflush(stdout) 6 PROTECTONLY=YES 1
- FOSSIL 2
- S
- G SNSERVER.DLL 2, 7
- getch() 6
- W
- H wait for caller 3
- HPFS 2 WFC 3
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - 8 -
-
-