home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-387-Vol-3of3.iso / c / cn311-sw.zip / CIRCUIT.DOC < prev    next >
Text File  |  1992-05-28  |  117KB  |  2,124 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.                         Circuit Net Version 3.11
  11.  
  12.                  The Best Electronic - Net-Mail System
  13.  
  14.                                 For the
  15.  
  16.                      Spitfire Bulletin Board System
  17.  
  18.                               Version 3.11
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.      T A B L E  O F  C O N T E N T S
  26.      
  27. ------------------------------------------------------------------------
  28.      TABLE OF CONTENTS . . . . . . . . . . . . . . . . . . . . . .  2
  29.      CONFIGURATION . . . . . . . . . . . . . . . . . . . . . . . .  4
  30.       System Requirements  . . . . . . . . . . . . . . . . . . . .  4
  31.       Setting Up Made easy . . . . . . . . . . . . . . . . . . . .  4
  32.         Configuration  . . . . . . . . . . . . . . . . . . . . . .  4
  33.         Batch files  . . . . . . . . . . . . . . . . . . . . . . .  6
  34.        Starting from scratch . . . . . . . . . . . . . . . . . . .  7
  35.         First things first . . . . . . . . . . . . . . . . . . . .  7
  36.         Configuration  . . . . . . . . . . . . . . . . . . . . . .  8
  37.         Batch files  . . . . . . . . . . . . . . . . . . . . . . . 11
  38.        Changing from node to host  . . . . . . . . . . . . . . . . 14
  39.         Configuration  . . . . . . . . . . . . . . . . . . . . . . 14
  40.         Batch files  . . . . . . . . . . . . . . . . . . . . . . . 15
  41.      SYSTEM OPERATIONS . . . . . . . . . . . . . . . . . . . . . . 19
  42.       The Network  . . . . . . . . . . . . . . . . . . . . . . . . 19
  43.       Processing Mail  . . . . . . . . . . . . . . . . . . . . . . 19
  44.       Batch files  . . . . . . . . . . . . . . . . . . . . . . . . 20
  45.       Mail transfers . . . . . . . . . . . . . . . . . . . . . . . 20
  46.       Communications programs  . . . . . . . . . . . . . . . . . . 21
  47.      FILE EXPLANATIONS . . . . . . . . . . . . . . . . . . . . . . 22
  48.       Directories  . . . . . . . . . . . . . . . . . . . . . . . . 22
  49.        CircuitNET directories  . . . . . . . . . . . . . . . . . . 22
  50.         Mail Directory . . . . . . . . . . . . . . . . . . . . . . 22
  51.         Work Directory . . . . . . . . . . . . . . . . . . . . . . 22
  52.         System Directory . . . . . . . . . . . . . . . . . . . . . 22
  53.        SpitFire Directories  . . . . . . . . . . . . . . . . . . . 22
  54.         System Directory . . . . . . . . . . . . . . . . . . . . . 23
  55.         Work Directory . . . . . . . . . . . . . . . . . . . . . . 23
  56.         Message directory  . . . . . . . . . . . . . . . . . . . . 23
  57.       Work Files . . . . . . . . . . . . . . . . . . . . . . . . . 24
  58.       Mail Packets . . . . . . . . . . . . . . . . . . . . . . . . 24
  59.       Dossier Files  . . . . . . . . . . . . . . . . . . . . . . . 25
  60.       CONFIG.EXE . . . . . . . . . . . . . . . . . . . . . . . . . 26
  61.       NODES File . . . . . . . . . . . . . . . . . . . . . . . . . 33
  62.       Packet compression . . . . . . . . . . . . . . . . . . . . . 33
  63.       PRIMER.EXE . . . . . . . . . . . . . . . . . . . . . . . . . 34
  64.       EXTRACT.EXE  . . . . . . . . . . . . . . . . . . . . . . . . 34
  65.       IMPORT.EXE . . . . . . . . . . . . . . . . . . . . . . . . . 35
  66.       MAILCALL.EXE . . . . . . . . . . . . . . . . . . . . . . . . 35
  67.  
  68.      APPENDIX A  . . . . . . . . . . . . . . . . . . . . . . . . . 36
  69.      LICENSE AGREEMENTS  . . . . . . . . . . . . . . . . . . . . . 36
  70.      STANDARD DISCLAIMER . . . . . . . . . . . . . . . . . . . . . 38
  71.      COPYRIGHT NOTICES . . . . . . . . . . . . . . . . . . . . . . 39
  72.       THE ANATOMY OF A MESSAGE . . . . . . . . . . . . . . . . . . 40
  73.        SpitFire Messages . . . . . . . . . . . . . . . . . . . . . 40
  74.        Circuit Net Messages  . . . . . . . . . . . . . . . . . . . 40
  75.      APPENDIX B  . . . . . . . . . . . . . . . . . . . . . . . . . 44
  76.       BASIC CONCEPTS . . . . . . . . . . . . . . . . . . . . . . . 44
  77.      APPENDIX C  . . . . . . . . . . . . . . . . . . . . . . . . . 46
  78.       Source Code and Record Structures  . . . . . . . . . . . . . 46
  79.      APPENDIX D  . . . . . . . . . . . . . . . . . . . . . . . . . 47
  80.       Circuit Net Revision history . . . . . . . . . . . . . . . . 47
  81.      APPENDIX E  . . . . . . . . . . . . . . . . . . . . . . . . . 48
  82.      APPENDIX F  . . . . . . . . . . . . . . . . . . . . . . . . . 53
  83.      REGISTRATION INFORMATION  . . . . . . . . . . . . . . . . . . 54
  84.       Circuit Net Upgrades . . . . . . . . . . . . . . . . . . . . 55
  85.       Registration Form  . . . . . . . . . . . . . . . . . . . . . 56
  86.      END OF DOCUMENT . . . . . . . . . . . . . . . . . . . . . . . 57
  87.  
  88.      CONFIGURATION
  89.          Configuring CircuitNET v3.11 has been made as simple as
  90.     possible.  CONFIG.EXE will allow you to setup not only CircuitNET
  91.    files, but also make any necessary changes to the configuration of
  92.    your Spitfire setup.
  93.  
  94.        System Requirements
  95.            In addition to the obvious requirement of having an MSDOS or
  96.        Os/2 v2.0+ based computer and a modem, you must also have Spitfire
  97.        BBS software version 3.x, and some free space on your hard drive.
  98.        The amount of free space depends upon the message traffic in the
  99.        network you will be participating in.  10 Meg of free disk space
  100.        should be more than sufficient to start with.  As you get familiar
  101.        with the volume of message traffic, the disk space requirements for
  102.        your particular situation may turn out to be more or less than
  103.        initially allocated.
  104.  
  105.        Setting Up Made easy:
  106.  
  107.                                  **** IMPORTANT NOTE *****
  108.  
  109.              The following sections are divided into two areas that contain
  110.              instructions for specific situations.  The instructions are
  111.              written in checklist form and should be folloId step by step.
  112.  
  113.                                   **********************
  114.  
  115.        Step one:  Choose the ONE of the following sections that applies
  116.              to your situation, and follow the instructions step by step.
  117.  
  118.                                   *** IMPORTANT NOTE ***
  119.  
  120.              SEEDING of conferences is NOT NECESSARY, and only clutters
  121.              the network with meaningless messages.  CONFIG.EXE will seed
  122.              any conferences created with non-net-mail messages.
  123.  
  124.                                   **********************
  125.  
  126.        Starting from scratch
  127.                This section is for those setting up CircuitNET for the
  128.           First time.  If you are setting up a second CircuitNET based
  129.           Network, refer to the section on multiple copies first.
  130.  
  131.        First things first
  132.  
  133.                                   **** IMPORTANT NOTE ***
  134.  
  135.                CircuitNET Software is intended for use with an established
  136.           network.  The BBS from which you obtained the original
  137.           information should be able to provide you with the information
  138.           you will need to properly install the software.  If the BBS that
  139.           provided you with the software cannot help you, then contact any
  140.           node of the network you wish to participate in for the name of
  141.           that network's secretary, and contact the network secretary to
  142.           get assigned to a host whose job it will be to provide you with
  143.           the necessary information.  If you intend to start a new network,
  144.           then contact Dave Stahl at the address or number
  145.           given in the registration information appendix.
  146.  
  147.                                   **********************
  148.  
  149.                Before setting up CircuitNET Software, you will need the
  150.           following information and files from your host:
  151.  
  152.           1) A Node Id.  This is a 1 to 8 Alpha-Numeric designation by
  153.                which your BBS will be identified to the software, and to
  154.                the network.
  155.  
  156.           2) HOST Node Id.  You will need this to tell the software what to
  157.                name your outgoing mail packets.
  158.  
  159.           3) A current list of conferences available and/or required for
  160.                you to carry.
  161.  
  162.           4) A copy of the Network Charter, Bylaws, or Rules for the
  163.                network you are joining.
  164.  
  165.           5) Instructions on how and when to make your mail transfers.  In
  166.                most cases, this will include a special logon account for
  167.                your BBS to use when calling for mail.
  168.  
  169.           6) Sample scripts for unattended transfers.  Or the information
  170.                required for building a suitable script.  (Some sample
  171.                scripts are included in the CircuitNET distribution packet,
  172.                but I make no guarantee as to their suitability for any
  173.                specific host.)
  174.  
  175.        Configuration
  176.                Now that you have the information you need from your host,
  177.           you are ready to start the installation.  You may now turn the
  178.           page and begin.
  179.  
  180.           1)  Using DOS or your favorite disk management utility, create a
  181.                directory named CIRCUIT.  Normally this would be a sub-
  182.                directory of your Spitfire System directory, but it need not
  183.                be.  If you plan to dedicate a drive to CircuitNET
  184.                operations, you can use the root directory as your CIRCUIT
  185.                directory.  (If you choose a directory that is not a sub-
  186.                directory of your Spitfire System Directory, you will be
  187.                prompted for the path to an SFNODES.DAT file.)
  188.  
  189.           2)  Unzip *.EXE from your CircuitNET distribution file into your
  190.                CIRCUIT directory.  If you have not already done so to unzip
  191.                the files, make your CIRCUIT directory the current DOS
  192.                directory.
  193.  
  194.           3)  Enter CONFIG or CONFIG COLOR to invoke the CircuitNET
  195.                Configuration Utility.  You will be presented with a series
  196.                of questions before you reach the main menu, and will be
  197.                told that several directories Ire not found.  You either
  198.                need to tell the program to (M)ake them, or (R)e-enter the
  199.                name of an existing directory.  The default names will
  200.                identify the purpose of the directory that could not be
  201.                found.  At a minimum, the Circuit\Work, and Circuit\Mail
  202.                directories should need to be created.
  203.  
  204.                   (Note: Config cannot (M)ake two directories at once.  If a
  205.                   two deep directory is required to be created, you will have
  206.                   to (M)ake only the first at this point, and change the path
  207.                   later in the configuration process.)
  208.  
  209.                3a) Are you a HOST Node (Y/N) N Press Enter to accept the
  210.                     Default of NO.  (You should not be in this section if
  211.                     you are a host node.  If you are one of those rare
  212.                     cases of a a node joining the net and hosting another
  213.                     new node, then you have my sympathy, and should ansIr
  214.                     Yes, and then skip the CONFIG portion of "Converting
  215.                     from a node to a host.)
  216.  
  217.                3b) Do you want Primer to mark old messages for deletion? Y
  218.                     Press return to accept the default of Yes.  This will
  219.                     cause Primer to check for messages older than the old
  220.                     message value configured for each conference as it
  221.                     searches for Net-Mail messages to send.  If any are
  222.                     found, they will be explicitly marked as deleted, just
  223.                     as if you had deleted them from within Spitfire, so
  224.                     that the next purge of the message base will purge
  225.                     them.  AnsIring No to this prompt will cause Primer to
  226.                     ignore old messages, and only consider the net-mail
  227.                     status as it scans each message conference.
  228.  
  229.                3c) Keep History for how many MSG/Conf (512..2048) 1024
  230.                     Press enter for the default history size of 1024.  You
  231.                     will be able to change this value later if you develop
  232.                     problems with duplicates or incomplete threading, or
  233.                     have consistent out of memory problems with IMPORT.
  234.                     Read the section on system operation for details on
  235.                     when it should be changed, and what effects changing it
  236.                     will have.
  237.  
  238.                3d) Enter BBS Phone number
  239.                     This entry is used to display your phone number in the
  240.                     tagline of messages originating on your BBS. (It is
  241.                     prefixed by the word 'Phone: ' when the tagline is
  242.                     built.)
  243.  
  244.                3e) Enter BBS Name
  245.                     This entry is also used to build the taglines for
  246.                     messages originating from your BBS.  It is intended to
  247.                     provide the network users with some idea of where in
  248.                     the world each message came from. (Consult the network
  249.                     rules provided by your host to see if the network you
  250.                     are joining has some rule concerning the information to
  251.                     be put in this field.)
  252.  
  253.                3f) (REGISTERED COPIES ONLY)
  254.                     Enter Your Location or Motto This is also used to build
  255.                     the tagline, but is only displayed in registered
  256.                     versions.  The shareware version uses this field to
  257.                     identify unregistered nodes.
  258.  
  259.           4)  You should now be presented with the Main Menu for CONFIG.
  260.                Select (M) to configure the message conferences.  This will
  261.                link the names from the Conference list provided by your
  262.                host with specific Spitfire conferences.  All of the
  263.                information displayed, save the conference codename, is
  264.                taken from your SpitFire SFMCONF.DAT, and will Update
  265.                Spitfire's configuration when you (Q)uit this menu and
  266.                select (Y)es when asked to save the changes.  The Conference
  267.                Codename field will be written to a file named CNCONFS.CFG
  268.                in Your CIRCUIT Directory.  When the conferences are saved,
  269.                all conferences are automatically seeded with a non-net-mail
  270.                message, and the SFMSGxx.LMR files are updated to SpitFire
  271.                3.2 standards.  (Spitfire 3.1 has no problems with this.)
  272.  
  273.                4a)  You are presented with the display for Conference
  274.                     Number 1 of nn, where 'nn' is the total number of
  275.                     conferences configured.  Using the '+' and '-' keys you
  276.                     can step through the conferences and set those that
  277.                     will be assigned network codenames to "Net-Mail
  278.                     conference = TRUE".  As you change the net-mail status
  279.                     to TRUE, select (C)odename and enter the network
  280.                     conference name that is to be associated with the
  281.                     conference.
  282.  
  283.                     All of the fields, EXCEPT the Codename field are
  284.                     explained in the Spitfire documentation.  All of the
  285.                     fields are covered in the section on CONFIG.EXE also.
  286.                     Conference codenames are explained in detail in the
  287.                     System Operations section under "the Network".
  288.  
  289.                4b)  ADDING Conferences:  When you have exhausted the
  290.                     conferences which Ire originally configured in
  291.                     SpitFire, you can add more as required, up Spitfire's
  292.                     maximum of 255.  Conferences are always added as the
  293.                     LAST conference.  The new conference is automatically
  294.                     identified as a net-mail conference, and needs only a
  295.                     CodeName to be completely configured as a network
  296.                     conference.
  297.  
  298.                4c)  DELETING Conferences:  When you select (D)elete a
  299.                     conference, the LAST conference will be displayed, and
  300.                     you will be asked if you wish to delete it.  CONFIG
  301.                     will only delete the last conference, and it DOES NOT
  302.                     delete the SFMSGxx.* Files associated with the
  303.                     conference being deleted.  Deletion of the files must
  304.                     be done at the DOS level.
  305.  
  306.           5) Select (Q)uit when you have configured the conferences you
  307.                wish to echo with the network, and hit enter to save the
  308.                changes to BOTH Spitfire and CNCONFS.CFG.
  309.  
  310.                              *** MULTIPLE NODES TAKE NOTE ***
  311.  
  312.                The SFMCONF.DAT file is only updated for the node which
  313.           CircuitNET uses for finding the Spitfire information it needs.
  314.           If you have multiple nodes that share a message directory, you
  315.           will need to copy the modified SFMCONF.DAT to the other nodes if
  316.           you wish them to have access to any added conferences, and any
  317.           changed descriptions.
  318.  
  319.                              ********************************
  320.  
  321.                AT this point, CircuitNET and SpitFire are configured for
  322.           echoing messages to and from the network manually.  Meaning that
  323.           you can now use Primer, Extract and Import from the DOS command
  324.           line to build and process mail packets.  A rather cumbersome and
  325.           usually erratic means of day to day net-mailing.  So you need to
  326.           automate the process through batch files.
  327.  
  328.        Batch files
  329.                In order to automate your mail transfer, you will need to
  330.           configure a scheduled event to invoke Primer and Extract, invoke
  331.           a communications program to exchange mail packets with your host,
  332.           and then invoke Import.  The sample batch file NODEVENT.BAT
  333.           included in the documentation package contains all of the
  334.           required commands to automate your mail transfers.  Your host
  335.           should be able to tell you what modifications need to be made to
  336.           the script files to log on to his system.
  337.  
  338.                                      ***** NOTE *****
  339.                The examples and explanations below use TELIX only as an
  340.           example because that is the communications program *I* use, and
  341.           am familiar with.  Any communications program that can be invoked
  342.           in a batch file and run a script unattended can be used.  Sample
  343.           scripts contributed by various nodes in CircuitNET International
  344.           are included for other communications programs.
  345.  
  346.           1) Choose an event in the SF.BAT file that controls the node
  347.                CircuitNET is configured on.  (If your system is controlled
  348.                by a front door program, you can configure CircuitNET as an
  349.                External event for the front door program.)  :EVENT_A is
  350.                chosen for this explanation.
  351.  
  352.           2) Using an ASCII Text editor, read in the file NODEVENT.BAT
  353.                betIen the :EVENT_A label, and the GOTO LOOP command, and
  354.                edit the paths to conform to how your system is configured.
  355.                (If you aren't using TELIX, you will need to replace the
  356.                lines that call TELIX with the appropriate commands for your
  357.                communications program.)
  358.  
  359.           3) Configure your communications program to upload and download
  360.                from the CIRCUIT\MAIL directory.  In Telix, make a dialing
  361.                directory entry for your host's BBS.  The script to link is
  362.                CNMAIL, and the password must be entered. (The sample Telix
  363.                script obtains the password from this entry.)
  364.  
  365.           4) Enable the event chosen to run at the time your host has
  366.                scheduled your mail run.
  367.  
  368.                                        *** NOTE ***
  369.                If you are going to use a two call system, then the event
  370.           needs to be broken into 'send' and 'receive' events.  The line by
  371.           line explanation of NODEVENT.BAT below identifies where the break
  372.           would need to be made.  Separate scripts would be used for the
  373.           send and receive calls to the communications program, and in
  374.           Telix two dialing directory entries would be needed.
  375.  
  376.        The NODEVENT.BAT Explained:
  377.  
  378.          :EVENT_A
  379.          ECHO OFF
  380.          C:
  381.          CD \SF\CIRCUIT\MAIL
  382.          REM Change to mail drive and directory to keep filenames
  383.          REM shorter on the command lines.
  384.  
  385.          IF EXIST HOSTNODE.ZIP PKUNZIP HOSTNODE
  386.          REM If the file hasn't been renamed later in this event,
  387.          REM it wasn't sent. so unzip it to append the new mail to
  388.          REM the existing packet.
  389.  
  390.          C:
  391.          CD \SF\CIRCUIT
  392.          REM change to the drive and directory where CIRCUIT.CFG is.
  393.  
  394.          PRIMER
  395.          REM Primer does NOT have to reside in the current directory.
  396.          REM It may be in the PATH, or invoked with a full pathname.
  397.          REM this applies to all of the CircuitNET programs.
  398.  
  399.          EXTRACT /Node=HOSTNODE
  400.          REM This command line format extracts to a single node, and
  401.          REM bypasses the NODES file.
  402.  
  403.                                        *** NOTE ***
  404.                From this point to the GOTO LOOP would be included in the
  405.           Receive Mail event for a two call system.  The dialing script
  406.           would be changed to DIAL2.SLC to dial the entry with the download
  407.           mail script in place of the upload mail script.
  408.                                        ************
  409.          C:
  410.          CD \TELIX
  411.          REM Change to the drive and directory of your comm program.
  412.          REM Telix is configured to upload and download from the
  413.          REM CIRCUIT\MAIL directory so moving files is not required.
  414.          REM If your communications program is NOT configured to
  415.          REM upload and download directly from the CIRCUIT\MAIL
  416.          REM directory, then HOSTNODE.ZIP needs to be copied to the
  417.          REM appropriate directory.
  418.  
  419.          TELIX /SDIAL1
  420.          REM This line tells Telix to start up and run the script
  421.          REM 'DIAL1.SLC'.  The script dials entry number 1 in Telix's
  422.          REM dialing directory, and turns over control to the script
  423.          REM linked to that entry when a connection is made.  The
  424.          REM DIAL1 script provided redials indefinitely, but can be
  425.          REM configured to try a limited number of times if desired.
  426.  
  427.          C:
  428.          CD \SF\CIRCUIT\MAIL
  429.          REM Change back to the mail directory to shorten pathnames.
  430.  
  431.          IF ERROR LEVEL 1 GOTO NOT_SENT
  432.          COPY HOSTNODE.ZIP HOSTNODE.DB4
  433.          DEL HOSTNODE.ZIP
  434.          :NOT_SENT
  435.          REM This error trap will rename the file to indicate that
  436.          REM your comm program did not encounter an error sending the
  437.          REM file. Save the file rather than killing it long enough
  438.          REM to give your host a chance to request a resend if needed
  439.  
  440.                                        *** NOTE ***
  441.                At this point, a GOTO LOOP would be inserted to end the send
  442.           mail event for a two call system.  The receive mail event would
  443.           start at the preceding note, and include the following commands.
  444.                                        ************
  445.          C:
  446.          CD \SF\CIRCUIT
  447.          REM Change back to the drive and directory where CIRCUIT.CFG
  448.          REM is located.
  449.  
  450.          IMPORT
  451.          REM Import the mail downloaded from your host.  If there was
  452.  
  453.          REM no mail, Import will detect that, and log the
  454.          REM information in the status report, and the log file.
  455.  
  456.          GOTO LOOP
  457.  
  458.                There is nothing that prohibits other commands from being
  459.           included in the event such as bulletin generators to notify your
  460.           users when the new mail has arrived, or prohibits removing
  461.           redundant commands (such as changing drives if you have
  462.           everything on the same drive.)  This is simply a *generic* event
  463.           for you to build upon.  If you wish to link your mail event to
  464.           the internal message packing event, you would put these commands
  465.           in SFMSGPAK.BAT which executes following Event M if it exists.
  466.  
  467.  
  468.        Changing from node to host
  469.           Configuration
  470.                There is one change needed in your CircuitNET configuration
  471.           for hosting from a single node, and one additional text file
  472.           named NODES, and one additional program that requires
  473.           configuration. i.e. MAILCALL  If you have multiple nodes, refer
  474.           to the section on Multi Node operations.
  475.  
  476.           1)  Invoke CONFIG, and go to the sub-menu for (B)BBS info, and
  477.                change the HOST BBS flag to TRUE.  And save the changes.
  478.  
  479.           2)  In the CircuitNET system directory, create a text file named
  480.                NODES, which contains the node id's of your dependent
  481.                node(s).
  482.  
  483.           3) Change to the CircuitNET system directory and invoke MAILCALL
  484.                EDIT.  (A)dd records for each of your dependent nodes using
  485.                the name they will be logging on under, and the full name of
  486.                the packet file to send to them.  Refer to Mailcall.Doc for
  487.                more about editing MAILCALL.DAT.
  488.  
  489.        Batch files
  490.                There are Two additional batch files, and two changes to
  491.           your existing event required to host another node.
  492.  
  493.           1) Changes to your existing event:
  494.                a) Following the IMPORT command line add the following
  495.                     commands:
  496.                     EXTRACT LOCK
  497.                     REM The LOCK parameter is required on the last EXTRACT
  498.                     REM of the event as it it not automatically selected as
  499.                     REM it is when HOST is configured as FALSE.
  500.  
  501.                     IF ERROR LEVEL 133 GOTO SINGLES
  502.                     REM Error level 133 is returned if EXTRACT does not
  503.                find
  504.                     REM enough disk space to extract for all of the nodes
  505.                     REM listed in the NODES file.  If Error 133 is
  506.  
  507.                     REM encountered when extracting for a single node,
  508.                     REM files will need to be deleted to make room.  See
  509.                     REM the troubleshooting section for more info.
  510.  
  511.                     :RESUME
  512.                     REM The Resume label is only needed if there Ire
  513.                     REM existing commands betIen the IMPORT and GOTO LOOP
  514.  
  515.                     GOTO LOOP
  516.                     :SINGLES
  517.                     EXTRACT /Node=firstnode
  518.                     EXTRACT /Node=secondnode
  519.                     EXTRACT LOCK /Node=LastNode
  520.                     REM Replace "firstnode", "secondnode", "lastnode" with
  521.                     REM the nodes listed in the NODES file.  Each node
  522.                     REM added later to the nodes file, would require a
  523.                     REM corresponding command line under the :SINGLES
  524.                label.
  525.  
  526.                     GOTO RESUME
  527.                     REM Could be GOTO LOOP if :RESUME wasn't needed.
  528.  
  529.                b) Following the IF EXIST HOSTNODE.ZIP ... Statement at the
  530.                     beginning of the NODEVENT.BAT commands, add
  531.                     corresponding IF EXIST NODEID.ZIP PKUNZIP NODEID
  532.                     commands for each node id in the NODES file.  The batch
  533.                     file(s) that send the packets will be responsible for
  534.                     renaming the packets if successfully sent.
  535.  
  536.           2) SFINIT.BAT file: This Batch file executes before Spitfire
  537.                resets for the next caller.  The following commands need to
  538.                be added to check for an uploaded mail packet from a
  539.                dependent node, and import it.
  540.  
  541.                     IF NOT EXIST C:\SF\CIRCUIT\MAIL\YOURNODE.ZIP GOTO
  542.                     NOMAIL
  543.                     REM Skip over the import command is there's no mail
  544.  
  545.                     C:
  546.                     CD \SF\CIRCUIT
  547.                     REM Go to the directory with CIRCUIT.CFG
  548.  
  549.                     IMPORT
  550.                     REM Import the mail Refer to the Troubleshooting
  551.                     section for
  552.                     REM details on error levels returned for error trapping
  553.                     if
  554.                     REM desired.
  555.  
  556.                     :NOMAIL
  557.                     REM continue with your existing SFINIT.BAT file, or
  558.                     return
  559.                     REM control to Spitfire.
  560.  
  561.           3) SFSECxx.BAT file: This batch file executes as soon as a user
  562.                with a security of 'xx' logs on. Most hosts have a specific
  563.                security level for their dependents nodes when the call for
  564.                mail.  (The dependent BBS's have a separate user account
  565.                from their sysop's account under their node ID.)
  566.  
  567.                     This makes SFSECxx.BAT the ideal place for mail
  568.                pickups. This is by no means the ONLY setup for distributing
  569.                the mail to your dependents.  SFMESS.BAT, SFMAIN.BAT,
  570.                SFFILE.BAT, an unused :DOOR_x label in SF.BAT, or a
  571.                frontdoor program can all be used to accomplish the goal of
  572.                sending the right packet to the right node.  The simplest
  573.                method would be to simply configure the CIRCUIT\MAIL
  574.                directory as one of Spitfire's file areas, and let the nodes
  575.                download and upload their packets as they would any other
  576.                file.
  577.  
  578.                ECHO OFF
  579.                COPY SFDOORS.DAT C:\SF\SFEXTEND\SFDOORS.DAT
  580.                :LOOP
  581.                C:
  582.                CD C:\SF\SFEXTEND
  583.                SFMNUEXT
  584.                IF ERROR LEVEL 48 GOTO EXTENDZ
  585.                ...
  586.                REM Most of the IF ERROR LEVEL statements removed to save
  587.                REM space as only 0, 1, 2, & 4 are used for mail
  588.                REM transfers.  Refer to SFEXTEND documentation for
  589.                REM information on setting up extension A for downloading
  590.                REM mail, and Extension B for uploading mail.
  591.  
  592.                IF ERROR LEVEL 6 GOTO EXTENDC
  593.                IF ERROR LEVEL 4 GOTO EXTENDB
  594.                IF ERROR LEVEL 2 GOTO EXTENDA
  595.                IF ERROR LEVEL 1 GOTO LOOP
  596.                IF ERROR LEVEL 0 GOTO END
  597.  
  598.                :EXTENDA
  599.                MAILCALL C:\SF\EXTERNAL\SFEXTDNA.BAT
  600.                REM The batchfile specified on the command line does not
  601.                REM need to be one that Spitfire normally uses for external
  602.                REM transfer protocols, only one that can make use of the
  603.                REM same parameters as Spitfire passes to it's external
  604.                REM protocol batch files.  The batch file used should  check
  605.                REM for a successful transfer, and rename the packet to
  606.                REM indicate it was picked up. Refer to MAILCALL.DOC for a
  607.                REM more detailed explanation.
  608.  
  609.                IF ERROR LEVEL 250 GOTO FATAL_A
  610.                IF ERROR LEVEL 2 GOTO LOOP
  611.                IF ERROR LEVEL 1 GOTO NOMAIL
  612.                REM Refer to MAILCALL.DOC for details on these and other
  613.                REM error levels it returns.  Suffice it to say that all
  614.                REM fatal errors are greater than 250, error 2 is "User not
  615.                REM in Mailcall.dat", and Error 1 is "Mail packet not found
  616.                REM to send."
  617.  
  618.                GOTO LOOP
  619.                REM Fall through to here is packet was sent successfully.
  620.  
  621.                :NOMAIL
  622.  
  623.                C:\SF\EXTERNAL\DSZ port 2 sz -mrr NOMAIL.ZIP
  624.                GOTO LOOP
  625.                REM This sends a very small file named NOMAIL.ZIP to
  626.                REM indicate that the lack of mail was not a failure of the
  627.                REM dependent's event, but rather there was no packet built
  628.                REM for that day.
  629.                :EXTENDB
  630.                CD C:\SF\CIRCUIT\MAIL
  631.                C:\SF\EXTERNAL\DSZ port 1 rz -mrr
  632.                GOTO LOOP
  633.                REM Receive file directly into The CIRCUIT\MAIL directory.
  634.                REM You may wish to add commands to make a copy in a safe
  635.                REM place if you are of the paranoid persuasion.
  636.  
  637.                :END
  638.  
  639.                                        *** NOTE ***
  640.  
  641.                In addition to setting up your system to function as a HOST
  642.           you must also assist your dependent nodes with Scripts,
  643.           conference listings, network rules, and provide any other
  644.           information they may need to reliably echo mail from your board.
  645.           Echoing from your system will be subtly different from echoing
  646.           with any other Host, and this documentation cannot anticipate
  647.           your unique situation.
  648.                                        ************
  649.  
  650.      SYSTEM OPERATIONS
  651.                This section is an overview of various aspects of CircuitNET
  652.           software operations.  The appendix on Basic Concepts is a
  653.           detailed discussion of netmailing in general, and CircuitNET
  654.           software based networks in particular.
  655.  
  656.        The Network
  657.                A CircuitNET Software based Net-Work is inherently a tree
  658.           structured system.  The software assumes that there is one and
  659.           only one path to any other node in the network.  The structure
  660.           consists of one ROOT node, (Generally referred to as the
  661.           "National Host" or "National Hub"),  Several HOST nodes, and END
  662.           nodes.  The ROOT and HOST nodes are "way-stations", or "switching
  663.           stations" for network messages, and store messages that are "in
  664.           transit" and distribute them to more than one other node.  END
  665.           nodes only exchange messages with their HOST.  In addition to the
  666.           technical limitations that mandate a tree structure, the
  667.           administrative body of each network may have other requirements
  668.           that affect the network structure, and where your BBS fits into
  669.           that structure.
  670.  
  671.        Processing Mail
  672.                There are three stages of processing involved in CircuitNET
  673.           software.  Conversion from the BBS's message format to CircuitNET
  674.           format, Sorting of messages in CircuitNET format into transfer
  675.           packets, and converting messages from CircuitNET format back into
  676.           the BBS's message format.  These functions are performed by
  677.           PRIMER.EXE, EXTRACT.EXE, And IMPORT.EXE respectively.
  678.  
  679.           PRIMER:  Primer's function is to identify messages flagged as
  680.                net-mail in the BBS's message area, and convert ones that
  681.                haven't already been sent into CircuitNET format.  It checks
  682.                each message for routing information in the subject field,
  683.                and determines if the message is routable.  If the message
  684.                can be sent, Primer assigns it a unique network number,
  685.                identifies the thread it is part of, (if applicable), and
  686.                adds the node of origin and destination (if routed).  The
  687.                message is then added to any other "in-transit" messages in
  688.                the work directory to be processed by EXTRACT.  Once PRIMER
  689.                has converted a message to CircuitNET's format, CircuitNET
  690.                considers it to be "In-transit" until it reaches an end
  691.                node, or it's destination.
  692.  
  693.           EXTRACT:  Extract selects messages from the "in-transit" holding
  694.                area, and builds one or more transfer packets.  It performs
  695.                several tests on each message to determine if it should be
  696.                included in a specific packet.  The tests include checking
  697.                to see if the origin or last seen nodes are among the nodes
  698.                accessible through the node the packet is for, checking to
  699.                see if it is routed to a node accessible through the node
  700.                the packet is for, and checking that node wants the
  701.                conference the message is for. If the message passes all of
  702.                the tests, then it is included in the packet.  If it fails
  703.                anyone of them, it is ignored.
  704.  
  705.           IMPORT:  Import checks each message it processes against a
  706.                history file to reject any duplicate messages.  It also
  707.                determines which BBS message conference the message belongs
  708.                in, and assigns the message to one of three categories.  The
  709.                message has reached it's final destination, it is "just
  710.                passing through", or It's both.  In the case of an end node,
  711.                There is nowhere to pass a message on to, so import ignores
  712.                messages that would otherwise be "just passing through".
  713.                For Host nodes, messages which haven't reached their final
  714.                destination, are added to those in the holding area, and
  715.                messages which pass the tests for being converted to the
  716.                BBS's message format are added to the appropriate BBS
  717.                message area.
  718.  
  719.        Batch files
  720.                CircuitNET software is designed to work in and in
  721.           conjunction with batch files.  This gives a great deal of
  722.           latitude in the way CircuitNET works on any particular BBS.  Very
  723.           basic batch files are provided as samples, but CircuitNET also
  724.           provides a multitude of Error level exit codes that can be tested
  725.           in batch files.  I leave it up to your imagination and the list
  726.           of exit codes as to how you make use of them.
  727.  
  728.        Mail transfers
  729.                CircuitNET Software does NOT contain any communications
  730.           routines, and does not concern itself with how the transfer
  731.           packets are moved from one node to another.  The utility
  732.           MAILCALL.EXE is provided as a means of matching a caller with a
  733.           packet file, but even there, the actual file transfer is
  734.           accomplished by a batch file based on Spitfire's External
  735.           protocol batch files.  Sample batchfiles, and sample scripts for
  736.           some of the more common communications programs are provided to
  737.           assist you in transferring the mail, but are not the only way the
  738.           transfers can be accomplished.  The means of transferring the
  739.           mail packets must be co-ordinated with your host, and any means
  740.           that can be agreed upon is the means that should be used.
  741.  
  742.        Communications programs
  743.                CircuitNET software does NOT contain any communications
  744.           routines.  It relies upon your choice of communications program
  745.           to transfer the files from one node to another.  As of this
  746.           writing, the three most common programs used to transfer mail
  747.           packets are Telix, Qmodem, and DSZ.COM.  DSZ is generally used in
  748.           conjunction with Mailcall in a host configuration where a phone
  749.           call is ansIred, while Telix, QModem and other terminal packages
  750.           are generally used where a phone call must be made.  Some Hosts
  751.           have Front End programs which allow "FREQ'ing" a mail packet if
  752.           you have that capability, but a front end is NOT required for
  753.           CircuitNET.  Any Communications program that is capable of making
  754.           an unattended phone call from a batch file will do.  The fact
  755.           that the Author of this document uses Telix in the examples is
  756.           not to be construed as an endorsement of Telix as the preferred
  757.           means of transferring the packets.  It is merely the program with
  758.           which the author is most familiar.
  759.  
  760.      FILE EXPLANATIONS
  761.        Directories
  762.                CircuitNET Software needs to know where certain files are
  763.           located, and expects certain files to be in certain directories.
  764.           The following is a discussion of what directories CircuitNET
  765.           Software utilizes, and what each directory is utilized for.
  766.  
  767.        CircuitNET directories
  768.                These are the directories that are peculiar to CircuitNET.
  769.  
  770.        Mail Directory
  771.                The MAIL directory is where EXTRACT.EXE builds the message
  772.           packet(s).  It is also where MAILCALL.EXE will look for the
  773.           filename you specify to be sent to a specific username.  Normally
  774.           you will see only files with a Node Id for a name and the
  775.           extension '.ZIP', but during execution of EXTRACT.EXE a .CND and
  776.           a .CNP file will be built for each node being extracted for, plus
  777.           PKZIP will normally use this directory for it's temporary file
  778.           while zipping the packet.  A good estimate of the amount of space
  779.           required in this directory, is to multiply the file sizes of the
  780.           finished packet(s) by 3 to get the amount of space that needs to
  781.           be free in this directory for EXTRACT to do it's job.
  782.  
  783.        Work Directory
  784.                The WORK directory is where "Messages In-Transit" are held,
  785.           and where IMPORT.EXE unzips incoming packets to.  For a Host
  786.           node, there will normally be two files in this directory named
  787.           MESSAGES.CND and MESSAGES.CND.  For an end node, the files only
  788.           exist from the time that PRIMER.EXE runs until EXTRACT.EXE is
  789.           done building the packet for the host.  While IMPORT.EXE is
  790.           importing messages, there will also be a CND and CNP file with
  791.           your Node Id as a filename.  Import deletes then when it is done
  792.           with them.
  793.  
  794.        System Directory
  795.                The CIRCUIT or System directory, is where the Dossier Files,
  796.           outbound history files, CNCONFS.CFG, and CNROUTES.LST are stored.
  797.           It is normally also where CIRCUIT.CFG and the executable files
  798.           are kept, but it is not absolutely necessary that they be kept
  799.           there.  The CIRCUIT.CFG file in the current DOS directory will be
  800.           used when each module is invoked, and the directories defined in
  801.           the CIRCUIT.CFG file will be used.
  802.  
  803.        SpitFire Directories
  804.                Since CircuitNET is designed to work directly with the
  805.           Spitfire message base, it needs to know where some of Spitfire's
  806.           files are to be found.
  807.  
  808.        System Directory
  809.                CircuitNET uses Three (3) files in the Spitfire system
  810.           directory.  SFMCONF.DAT, SFNODE.DAT, and SFDOOR.DAT (or
  811.           equivalent).
  812.  
  813.           SFMCONF.DAT and SFNODE.DAT are used by CONFIG.EXE which also uses
  814.                the SpitFire WORK path from SFNODE.DAT to find SFSYSTEM.DAT
  815.                in order to initialize the Sysop names, and obtain the
  816.                number of users alloId.  SFMCONF.DAT is updated by
  817.                CONFIG.EXE with any changes made in the message conference
  818.                configuration menu.
  819.  
  820.           PRIMER.EXE uses SFMCONF.DAT to get the old message purge date for
  821.                each net-mail conference if PRIMER is to kill old messages.
  822.                PRIMER ignores SFMCONF.DAT if the kill old message feature
  823.                is turned off.
  824.  
  825.           SFDOOR.DAT or one of the equivalent files is used by MAILCALL.EXE
  826.                to select the mail packet to be sent, and find the
  827.                parameters needed to be passed to the batch file which does
  828.                the actual transfer of the file.
  829.  
  830.        Work Directory
  831.                As stated above, this directory is only used by CONFIG.EXE,
  832.           and is obtained from SFNODE.DAT.
  833.  
  834.        Message directory
  835.                Spitfire's message directory needs to be know for obvious
  836.           reasons.  Other than messages, PRIMER and IMPORT both 'lock' this
  837.           directory by creating a file named WORKING.CN while they are
  838.           processing messages.  The file should only exist while PRIMER or
  839.           IMPORT is running, and should be removed when they are complete.
  840.           Both PRIMER and IMPORT work with a history file for each
  841.           CircuitNET conference with the extension '.HST', plus SFMSG00.HST
  842.           for "other" conferences.
  843.  
  844.        Work Files
  845.                The two files named MESSAGES.CNP and MESSAGES.CND in the
  846.           CircuitNET WORK directory are a holding area for "Messages In-
  847.           Transit".  A message is considered In-Transit from the time that
  848.           PRIMER converts it to CircuitNET format, until it reaches it's
  849.           final destination.  Each node it passes through, (including the
  850.           node it originated on), collects one mail cycle's worth of
  851.           messages in the work files, until EXTRACT has processed them to
  852.           all nodes being serviced.  For an End node, only the messages
  853.           that PRIMER copies from the Spitfire message base are involved,
  854.           and only for as long as it takes for EXTRACT to process them.
  855.           For a Host node, the work files are a little more important.  As
  856.           the messages from each dependent node are imported, any have not
  857.           reached their final destination, (i.e. messages routed TO: the
  858.           host node), and are not rejected as being duplicates, are added
  859.           to the work files.  PRIMER adds any messages entered locally, and
  860.           then EXTRACT builds outgoing mail packets from the work files.
  861.           When the last packet in the mail cycle has been built, EXTRACT
  862.           deletes the work files so the cycle can begin again.
  863.  
  864.        Mail Packets
  865.                A Mail packet is essentially a "copy" of the work files with
  866.           unwanted conferences, and duplicate messages purged out.  Each
  867.           packet is a compressed file containing a .CND file, and a .CNP
  868.           file.  CircuitNET Software is constructed to use PKWare
  869.           compression utilities, although it is possible to use other
  870.           compression utilities by use of batch files named PKZIP.BAT and
  871.           PKUNZIP.BAT provided the extension '.ZIP' is used so IMPORT.EXE
  872.           will recognize the presence of a packet.
  873.  
  874.        History Files
  875.                CircuitNET 3.11 changes the duplicate rejection scheme from
  876.           prior releases.  The change involves the use of history files
  877.           which have the extension of '.HST'.  There are Three different
  878.           history files used, of two different types.  There are the
  879.           conference history files, and the node history files.
  880.  
  881.                The Conference History files are kept in the SpitFire
  882.           message directory.  There is one for each conference used by
  883.           CircuitNET, and one for all conferences that are NOT carried by
  884.           the node.  SFMSG00.HST is the name used for the "all others"
  885.           history, and SFMSGxx.HST is matched to the rest of the SFMSGxx.*
  886.           files for the conferences carried by the BBS.  The conference
  887.           History file size is controlled by the "Max History per
  888.           Conference" value configured in CIRCUIT.CFG.  Once the maximum
  889.           number of history entries for each conference is reached, (Or
  890.           double the Maximum for SFMSG00.HST), each new message Primed or
  891.           Imported replaces the oldest history record in the file.  Primer
  892.           does NOT do any duplicate rejection on outbound messages, and
  893.           only records the history information for threading purposes.
  894.           Import checks each incoming message against the appropriate
  895.           history file and rejects duplicates and links threads based on
  896.           the information therein.  Obviously the more history kept, the
  897.           better the duplicate rejection, and the more complete the
  898.           threading.  On the down side hoIver, the larger the history
  899.           file, the sloIr Import runs, because of decreased memory
  900.           available for processing large blocks of incoming messages at one
  901.           time.
  902.  
  903.                The NODE history files are used for outbound duplicate
  904.           rejection.  One is created for each node extract builds a packet
  905.           for, and kept in the CircuitNET System directory.  The file Size
  906.           is not as rigidly controlled as the conference histories, and
  907.           purging of old history records is based on the number of days
  908.           since the message was sent.  The number of days history to keep
  909.           is derived from the Maximum History value that controls the size
  910.           of the conference history files.  The Maximum History value is
  911.           divided by 64 to give a minimum of 8 days history, and a maximum
  912.           of 32 days.  (The number of days is rounded down to the nearest
  913.           integer value.)  Only messages which pass all other tests for
  914.           inclusion in a mail packet are checked against the node history
  915.           file to see if it has already been sent to that node.  Then all
  916.           messages are added to the history file with the date they Ire
  917.           sent. (Rejected messages get added with a new date to prevent
  918.           problem messages from ever being resent.)
  919.  
  920.                (Note: Incoming messages from a node are NOT included in the
  921.           node history file as they should never pass the tests for
  922.           inclusion in the packet in the first place.)
  923.  
  924.        Dossier Files
  925.                Each node messages are extracted for needs a dossier file in
  926.           the CircuitNET System directory with the conferences that are to
  927.           be echoed to that node.  IMPORT.EXE will add any new conferences
  928.           it sees to the Dossier file for the node that built the packet,
  929.           and EXTRACT.EXE will add conferences if it finds a message routed
  930.           through a node that doesn't already have that conference in it's
  931.           Dossier.  Import will also delete conferences from a Dossier file
  932.           if it encounters a message that requests such deletion.  Extract
  933.           never deletes conferences from dossier files.
  934.  
  935.          WORKING.CN
  936.                Both Primer and Import manipulate the conference history
  937.           files by reading them into memory, and then re-writing the entire
  938.           file when done with it.  In order to prevent multiple copies of
  939.           Import from trying to update the same history file or Import and
  940.           Primer from writing contradictory changes to the same file, a
  941.           'key' file is used to lock the entire Spitfire message directory
  942.           from use by more than one CircuitNET module at a time.  The File
  943.           is named WORKING.CN, and Primer and Import both will look for the
  944.           file before they begin processing.  If it doesn't exist it is
  945.           created to lock out another module from starting, and if it does
  946.           exist, the program will pause in a loop for 10-15 minutes
  947.           checking for the file every few seconds.  If the file is removed
  948.           before time runs out, then the program replaces it to claim the
  949.           message directory and proceeds with processing, or it puts a
  950.           notice in the status message that it encountered the key file
  951.           which didn't clear in the allotted time.
  952.  
  953.          CNROUTES.LST
  954.                CircuitNET provides the capability to 'route' messages to a
  955.           specific node.  In order to know which packet a routed message
  956.           should be included in, it refers to CNROUTES.LST.  This file is a
  957.           pure ASCII text file, with <Destination>,<node_to_Route_through>
  958.           on each line.  IMPORT.EXE builds this list by looking at the true
  959.           origin, and last node to process each incoming message.  Every
  960.           packet imported is used to build a new list in memory, and when
  961.           the entire packet has been processed, any existing routing list
  962.           is compared to the new list in memory, and Destinations not
  963.           represented in the packet processed are added to the new list in
  964.           memory.  Once the new information and the old (unchanged)
  965.           information is combined in memory, the entire file is over-
  966.           written with the new list.  IMPORT has no way of knowing how long
  967.           it has been since a message was received from a specific
  968.           destination, and whether none have been received because the node
  969.           is no longer active or just didn't have any message traffic for
  970.           that day, so it NEVER deletes a destination once it has been
  971.           added.  Deletions must be done manually with a ASCII text editor
  972.           periodically as node numbers are changed because of registrations
  973.           or moves, or for nodes that drop out of the network.  Inactive
  974.           nodes present no particular problem other than taking up space.
  975.  
  976.          CONFIG.EXE
  977.                Config is how you maintain CircuitNET's configuration file.
  978.           Config defaults to a White on Black color scheme, but will accept
  979.           the command line parameter 'COLOR' to switch to a White on Blue
  980.           color scheme for those who prefer less contrast.
  981.  
  982.                Config automatically selects one of four possible operating
  983.           modes, based on what files it can find when invoked.
  984.  
  985.                Config first looks for an existing file named CIRCUIT.CFG in
  986.           the current DOS directory.  If the file is a version 3.0x format
  987.           file, config automatically converts the file to 3.1x format, and
  988.           asks for the additional information needed.  Otherwise it goes
  989.           directly to the main menu.
  990.  
  991.                If config doesn't find CIRCUIT.CFG it looks in the parent
  992.           directory of the current DOS directory for SFNODE.DAT.  If it is
  993.           not found, Config will ask where SFNODE.DAT can be found.  Once
  994.           it finds SFNODE.DAT, it looks for SFSYSTEM.DAT and asks for
  995.           directions if it cannot be found.  Using the information from
  996.           SFNODE.DAT, and SFSYTEM.DAT and some default directory names,
  997.           CONFIG will ask if you want each directory it can't find Made or
  998.           Re-entered, or if you want to abort Config.  It will then ask
  999.           several questions, (with suggested responses for everything
  1000.           except Node Id), and eventually deliver you to the main config
  1001.           menu.
  1002.  
  1003.        The Main Menu:
  1004.                Since all possibilities eventually lead here, I guess I
  1005.           should explain what's going on here.
  1006.  
  1007.           The main menu presents you with 4 choices:
  1008.                [C] - Configure CircuitNET Information.
  1009.                [M] - Configure/Add Message Conferences.
  1010.                [S] - Configure Spitfire (Sysop Names/net-mail Toggle)
  1011.                [Q] - End the Program
  1012.  
  1013.                     The Quit option should be pretty much self explanatory,
  1014.                so I'm just going to ignore that one, but since I'm at the
  1015.                bottom of the list I'll go backwards.
  1016.  
  1017.                [S]  This will take you to another menu with 6 choices:
  1018.                [R] - Sysop Real Name:
  1019.                     The name you put here, (and save to CircuitNET), is the
  1020.                name which will appear on your messages in the network.  It
  1021.                is also the name that IMPORT.EXE will look for and swap back
  1022.                to your sysop logon name.
  1023.  
  1024.                [U] - Sysop User Name:
  1025.                     The name that appears here, is the name that Primer
  1026.                will look for and change to the name above on messages it
  1027.                puts into the network.  This is also the name that "Sysop
  1028.                ALL", "Sysop <NodeId>", and the name above will be converted
  1029.                to by IMPORT.EXE.  It should therefore be the name you
  1030.                normally log on to the BBS with, (or your mail door uses to
  1031.                determine which messages are TO: You)
  1032.  
  1033.                [N] - net-mail will be used:
  1034.                     Should be True if you want people to be able to tag
  1035.                messages for net-mail.  If it's False, you will be able to
  1036.                import network messages, but won't be able to send any.
  1037.  
  1038.                [S] - Save Changes to Spitfire
  1039.                     Only SFSYSTEM.DAT will be updated to the values shown.
  1040.                CIRCUIT.CFG will remain unchanged (Unless saved later from
  1041.                the [C] - Configure CircuitNET Info menu. This should
  1042.                therefore be the LAST changes you make if you do not want
  1043.                Spitfire and CircuitNET to agree on the Sysop's Real Name.
  1044.                See note to SFMail users below)
  1045.  
  1046.                [C] - Save changes to CircuitNET
  1047.                     The Sysop Names displayed will be saved into
  1048.                CIRCUIT.CFG only without changing the values used by
  1049.                Spitfire. (See the note below if you use SFMail.)
  1050.  
  1051.                [B] - Save changes to both SpitFire and CircuitNET
  1052.                     The values displayed will be written to both
  1053.                CIRCUIT.CFG and to SFSYSTEM.DAT.
  1054.  
  1055.                     NOTE to SFMail users.  The author of SFMail keys the
  1056.                registration to the "Sysop Real Name" saved to SFSYSTEM.DAT.
  1057.                If you wish to be known by an alias in the network, and log
  1058.                on the the BBS as "Sysop", (or a different alias than you
  1059.                want shown in the network), then you need to NOT use the [S]
  1060.                option or the [B] option, and only save changes to
  1061.                CircuitNET.  Doing otherwise will either cause SFMail to
  1062.                crash, or cause the name you registered SFMail under to be
  1063.                used on the network.
  1064.  
  1065.                     To return to the Main Menu  select Q for Quit.
  1066.  
  1067.               [M] - Configure/Add Message Conferences
  1068.                     The menu displayed when you select this option is
  1069.                basically the same as that displayed by ALT-R from the
  1070.                spitfire "Ready for use" prompt.  Therefore I will only
  1071.                cover four of the options which either don't exist, or
  1072.                function differently than the SpitFire ALT-R menu.
  1073.                [#] - Conf Access Type:
  1074.                     The only difference here is the notation.  SpitFire
  1075.                Spells out "Equal to user security", and "Equal To Or
  1076.                Greater Than User Security", while Config uses Either the
  1077.                mathematical symbols '=' or '>=' for "Equal to" and "Greater
  1078.                Than or Equal To".  The function is the same, but the
  1079.                symbols Ire used to save space on the display.
  1080.  
  1081.                [A] - ADD a conference
  1082.  
  1083.                [D] - DELETE a conference.
  1084.                     Both the Add and Delete Functions only work on the
  1085.                highest numbered conference.  Inserting a conference or
  1086.                removing a conference from the middle of the file is not
  1087.                supported.  With large numbers of conferences, properly
  1088.                inserting a conference, or removing one from the middle
  1089.                involves a great deal of time in moving files to keep them
  1090.                in synch with the conference descriptions.  Config will
  1091.                automatically seed new conferences, and update all .LMR
  1092.                files to match the SpitFire 3.2 standard.  It does NOT
  1093.                hoIver do the reverse, and delete the conference files
  1094.                along with the conference description.  The files are left
  1095.                intact so that they can be renamed to a new conference
  1096.                number if the description they match was moved to a new
  1097.                record.  Deleting and re-adding a conference will therefore
  1098.                NOT remove messages which do not match the new description.
  1099.  
  1100.                                   *** IMPORTANT NOTE ***
  1101.  
  1102.                     DO NOT, repeat DO NOT insert or delete conferences
  1103.                through Spitfire!  Doing so will cause the conference
  1104.                codenames to be shifted away from the matching descriptions.
  1105.                The codenames are stored in a parallel file which matches
  1106.                SFMCONF.DAT record for record.  If you need more conferences
  1107.                added to Spitfire, CONFIG can add non-CircuitNET conferences
  1108.                simply by leaving the Conf. Codename field blank.
  1109.  
  1110.                                 **********************
  1111.  
  1112.                [C] - Conf. Codename:
  1113.                     This option updates a separate file from all of the
  1114.                other fields shown on the Conference Configuration menu.
  1115.                CNCONFS.CFG is kept in the CircuitNET System directory, and
  1116.                matches the SFMCONF.DAT record for record.  If this field is
  1117.                'NC' (meaning 'Not Configured'), or Blank, then CircuitNET
  1118.                ignores the conference.  Any other Alpha-Numeric entry will
  1119.                be treated as a network conference codename.  (The name by
  1120.                which the conference is known to the software.)  As only
  1121.                upper case information is accepted, case is not critical.
  1122.                and spaces will be stripped out.  Spelling hoIver is
  1123.                important!  If you mis-spell the codename assigned to a
  1124.                conference, then you have effectively created a conference
  1125.                that only you carry, and one BBS is not much of a network.
  1126.  
  1127.                When you have made all necessary changes to your message
  1128.           conferences, press Q to quit, and you will be asked if you want
  1129.           to save the changes.  'Y' or <Enter> will write all changes to
  1130.           SFMCONF.DAT, and to CNCONFS.CFG, and check each conference to see
  1131.           if it requires seeding, or if the .LMR file requires updating to
  1132.           SF 3.2 specifications.  A non-net-mail seed message will be
  1133.           written to each conference that has no messages already, and
  1134.           empty last read pointers will be appended to any .LMR file that
  1135.           has feIr records than the maximum number of users alloId.
  1136.           (SpitFire 3.2 pre-builds .LMR records for all allowable users.
  1137.           The larger .LMR files do not affect the operation of earlier
  1138.           Versions of Spitfire 3.x.  Existing last read pointers are not
  1139.           changed by Config.)
  1140.  
  1141.               [C] - Configure CircuitNET Information
  1142.                     This choice from the Main Menu takes you to a menu with
  1143.                     Two Choices:
  1144.               [P] - CircuitNET Paths and FileNames
  1145.                     The paths Ire discussed above, and   The activity and
  1146.                     error logs can be any valid filename.  It is not
  1147.                     recommended that they be the same file, although it is
  1148.                     permitted.  Many nodes use SpitFire's HEYSYSOP.LOG so
  1149.                     activity reporting is accessible remotely.  (The
  1150.                     minimum logging is a status report as a private message
  1151.                     in conference #1 addressed to the Sysop User Name in
  1152.                     CIRCUIT.CFG, so remote access to information logged to
  1153.                     the files is not generally needed.)  New entries are
  1154.                     checked for validity before being accepted.
  1155.  
  1156.                [B] - BBS Information (Node ID)
  1157.                     This choice takes you to the BBS Information
  1158.                     Configuration Menu.   This menu is the only one isn't
  1159.                     relatively self explanatory.
  1160.  
  1161.                 [N] - Node ID
  1162.                     The Node ID field is where you tell the software
  1163.                     several things.  Where messages entered on your BBS
  1164.                     come from, What file name IMPORT.EXE should look for,
  1165.                     and which routed messages and "Sysop WildCard" format
  1166.                     messages are meant for you to read. The Node ID is
  1167.                     assigned by the network you are joining, and should be
  1168.                     obtained from your host.  The node ID is used for
  1169.                     several filenames through out the network, so it is
  1170.                     limited to the characters alloId by DOS in an
  1171.                     unambiguous filename.  (i.e. no '*','?','/','\','<','>'
  1172.                     characters.)  what you enter will be converted to upper
  1173.                     case, and have any spaces stripped out before it is
  1174.                     saved.
  1175.  
  1176.                [#] - Msgs/Conf to keep a history on =
  1177.                     This field has several effects on the operation of the
  1178.                     software.  It controls both the maximum size of the
  1179.                     conference history files, (File size = MaxHist * 8
  1180.                     Bytes), the number of days to keep outbound histories
  1181.                     for each node extracted to, ( Days = MaxHist DIV 64),
  1182.                     and how effective net-wide threading is, ( at least one
  1183.                     thread element must be represented in the history file
  1184.                     for the thread to be linkable).  A minimum of 512
  1185.                     messages (8 Days) and a maximum of 2048 messages (32
  1186.                     Days) are permitted.  Any value betIen those two is
  1187.                     acceptable.  The default is 1024 (16 Days).  Since both
  1188.                     Primer and Import read the entire conference history
  1189.                     files into memory, the larger this value, the less
  1190.                     memory they have available for manipulating more than
  1191.                     one message at a time, so they have to read in and
  1192.                     process smaller blocks of messages for processing.
  1193.                     This will affect processing speed on importing of large
  1194.                     packets with messages for many conferences, more than
  1195.                     it will Priming, or packets with few conferences
  1196.                     represented.  If you are concerned about processing
  1197.                     times, you will need to find the optimum value for your
  1198.                     system that handles rejection of duplicates and
  1199.                     threading adequately, without increasing processing
  1200.                     time beyond what you consider acceptable.
  1201.  
  1202.                [K] - Kill Old Msgs When Priming
  1203.                     This feature exists because some of the message packing
  1204.                     facilities do NOT kill old messages, and old message
  1205.                     thread elements properly.  Since Primer reads every
  1206.                     message in each net-mail conference anyway to find un-
  1207.                     sent messages, you can have it also check the message
  1208.                     date against the Old Message Purge Days you have
  1209.                     configured in SFMCONF.DAT.  If this is set to TRUE,
  1210.                     Primer will flag ALL old messages as being explicitly
  1211.                     deleted, and disconnect each message from it's thread,
  1212.                     and flag it has having been received.  This will force
  1213.                     any message packer to remove the message unless it is
  1214.                     the sole survivor in a conference.  Primer will
  1215.                     recognize purge dates as low as one day, while The
  1216.                     internal SpitFire message packer will treat any value
  1217.                     of less than 5 as 120 days.  Having this feature turned
  1218.                     on gives Primer more work to do, and slows it down
  1219.                     marginally.  Turning this feature to FALSE will speed
  1220.                     Primer up some if you are happy with the way the
  1221.                     message base packer you use handles old messages.
  1222.  
  1223.  
  1224.                [H] - This BBS is a HOST
  1225.                     This flag changes how IMPORT and EXTRACT deal with the
  1226.                     work files.  If you are not hosting other nodes. (i.e.
  1227.                     building packets for more than one other node.) then
  1228.                     this should be set to FALSE, so that IMPORT.EXE will
  1229.                     not waste time or disk space writing copies of the
  1230.                     incoming messages to the work files only to have them
  1231.                     bypassed by EXTRACT.EXE and deleted.  This causes
  1232.                     Extract to default as if you specified 'LOCK' on the
  1233.                     command line to delete the work files when it is done.
  1234.                     Setting this field to TRUE causes IMPORT to write
  1235.                     messages to the work files, and EXTRACT to leave those
  1236.                     files intact when it is done, so that mail from
  1237.                     dependent nodes can be combined with mail from the host
  1238.                     node and distributed to all of the nodes you are linked
  1239.                     with.  YOU are then responsible for specifying the
  1240.                     'LOCK' parameter on the command line for the last
  1241.                     extract of the day to dispose of the files, or to
  1242.                     manually dispose of them at the appropriate time.
  1243.  
  1244.                [P] - BBS Phone number
  1245.                [B] - BBS Name
  1246.                 (and on registered copies)
  1247.                [M] - City/State/Motto or Whatever
  1248.                     These three fields are combined by Primer to build an
  1249.                     identifying tagline for all messages that originate on
  1250.                     your BBS.  All will accept any Alpha-Numeric ASCII
  1251.                     ('True' ASCII, NOT the full IBM Extended Character set,
  1252.                     or Control characters.)  The two lines below are an
  1253.                     example of how the tagline is built:
  1254.  
  1255.              CircuitNET 3.11: Node: <NODEID> Phone <BBS Phone>
  1256.              <BBS Name field> <BBS Motto Field on registered versions>
  1257.  
  1258.                Once you have made changes on the sub-menus of the Configure
  1259.           CircuitNET information menu, and select Q to return to the Main
  1260.           Menu, you will be asked if you want to save any changes made. 'Y'
  1261.           or <Enter> will re-write CIRCUIT.CFG with any changes made.
  1262.  
  1263.                                        *** NOTE ***
  1264.  
  1265.                The information changed includes the Sysop Names displayed
  1266.           on the Configure Spitfire (Sysop Names) option from the main
  1267.           menu.  Any time changes are save to CircuitNET, the Entire
  1268.           Configuration file is re-written with whatever is in memory, and
  1269.           NOT just the changes that Ire made on a specific menu.
  1270.  
  1271.                                        ************
  1272.  
  1273.          NODES File
  1274.                     The NODES file is where Extract looks for the node(s)
  1275.                it is to build (a) mail packet(s) for.  If Extract doesn't
  1276.                find a /NODE= command line parameter, it looks for an ASCII
  1277.                text file named NODES in the CircuitNET System Directory.
  1278.                In the file it expects to find a list of Node ID's separated
  1279.                by carriage returns. (i.e. one node ID per line.)  Extract
  1280.                Builds a mail packet for each node it finds in the file.
  1281.                (Note: Each additional node listed increases EXTRACT.EXE's
  1282.                disk space requirement in the CircuitNET MAIL directory by
  1283.                the size of the work files.  Too many nodes will cause
  1284.                Extract to abort with an error level of 133.)  If Extract
  1285.                finds a /NODE= command line parameter, it bypasses the NODES
  1286.                file and builds only the packet for the node ID specified on
  1287.                the command line.
  1288.  
  1289.  
  1290.        Packet compression
  1291.                     CircuitNET Software expects to find PKZIP.EXE and
  1292.                PKUNZIP.EXE in the DOS search path.  Because of the method
  1293.                used to shell out for packet compression, if PKZIP.BAT or
  1294.                PKUNZIP.BAT are found before the .EXE file is, then the
  1295.                batch file will be executed in it's place.  EXTRACT.EXE does
  1296.                not check for an existing packet before shelling out, but
  1297.                IMPORT does.  If you wish to modify the way the packets are
  1298.                compressed or uncompressed, you need only create a batch
  1299.                file with the appropriate name and place it where it will be
  1300.                found and executed before the corresponding .EXE file.  In
  1301.                order to get Import to shell out, a file with your node Id
  1302.                and the extension '.ZIP' needs to be placed in the
  1303.                CircuitNET MAIL Directory.  The following command line
  1304.                parameters would be passed to the batch files.
  1305.  
  1306.        From EXTRACT.EXE to PKZIP.BAT:
  1307.               %1 = -m
  1308.               %2 = <CircuitNET MAIL Dir><NodeID of packet to Compress>
  1309.               %3 = '@'<CircuitNET Mail Dir><NodeID of packet to compress>'.CMD'
  1310.  
  1311.                (Note: Extract appends to any existing .CMD file found to
  1312.                allow inclusion of other files in the mail packets.)
  1313.  
  1314.              From IMPORT.EXE to PKUNZIP.BAT:
  1315.               %1 = -o
  1316.               %2 = <CircuitNET MAIL Dir><Your Node Id>
  1317.               %3 = <CircuitNET WORK Dir>
  1318.  
  1319.                (Note: Import expects to find the .CND &.CNP files to
  1320.                process in the CircuitNET WORK directory when the shell
  1321.                returns control.)
  1322.                It should be noted that any changes in the compression
  1323.                utility used to build the packet needs to be co-ordinated
  1324.                with the other nodes involved.  You cannot simply choose to
  1325.                send a packet in a non-Zip format to a node that is not
  1326.                setup to process it.  How you deal with converting the
  1327.                command line information and determining the format of
  1328.                incoming packets, and select alternate compression formats
  1329.                is entirely up to your imagination and Skill in batch file
  1330.                construction.
  1331.  
  1332.          PRIMER.EXE
  1333.                     Primer is used to convert messages from Spitfire format
  1334.                to CircuitNET format.  In the process of finding and
  1335.                converting net-mail messages, primer marks each message as
  1336.                having been sent in the Spitfire message files, swap the
  1337.                name from the sysop's logon name to the sysop's real name,
  1338.                and parses the subject field for routing and conference
  1339.                management codes.  If a routing code is found Primer checks
  1340.                the routing list to insure that it is routed to valid
  1341.                destination.  Primer assigns each message a unique message
  1342.                number and a unique thread identifier and marks the message
  1343.                with it's true origin.  Primer also updates the conference
  1344.                history file with the Unique number it assigned to the
  1345.                message matched to the messages internal Spitfire message
  1346.                number so that replies to the message from the network can
  1347.                be threaded to it.
  1348.  
  1349.          EXTRACT.EXE
  1350.                     Extract is basically a message sorter.  It checks each
  1351.                message in the work files against the dossier files, node
  1352.                history files, and routing list to determine if the message
  1353.                should be included in each nodes mail packet.  Extract's
  1354.                most important function for end nodes is to Ied out
  1355.                duplicate messages that result from repeated uploads of the
  1356.                same reply packet from offline mail readers.  For host
  1357.                nodes, the routing and selection functions gain in
  1358.                importance.
  1359.  
  1360.          IMPORT.EXE
  1361.                     Import converts messages back into Spitfire format, and
  1362.                determines which messages are to be passed on to other
  1363.                nodes. Import is responsible for changing the Sysop's real
  1364.                name back to the Sysop's logon name, and will recognize
  1365.                several variations of messages addressed to "Sysop xxx" as
  1366.                being the equivalent of being addressed to the sysop's real
  1367.                name.  The special formats are "Sysop" and either the
  1368.                keyword "ALL" or a node ID specification.  The node Id
  1369.                Specification can be either an explicit node ID, or a DOS
  1370.                style wildcard.  "Sysop All" will always convert to the
  1371.                sysop's log-on name, and be imported.  Import will by-pass
  1372.                other Sysop messages if they do not match your node ID, and
  1373.                pass them on to the work files so they can be relayed to
  1374.                other nodes.  (NOTE: If you are NOT configured as a host,
  1375.                then Import will not write ANY messages to the work files.)
  1376.                Import does one more thing with messages that will convert
  1377.                to the Sysop's logon name.  I will "rescue" messages that
  1378.                are in conferences that are not normally imported by
  1379.                importing them as "comments to the sysop" in conference #1.
  1380.                If a message reaches your board, and is intended for you to
  1381.                read, then you will see it, even if you do not normally
  1382.                import that conference.
  1383.  
  1384.          MAILCALL.EXE
  1385.                     Mailcall is a utility for host nodes to distribute mail
  1386.                packets to the proper nodes.  It is covered in full in the
  1387.                separate file MAILCALL.DOC.  It is NOT required for end
  1388.                nodes.
  1389.  
  1390.      APPENDIX A
  1391.      L I C E N S E   A G R E E M E N T  Shareware Version
  1392.      
  1393. --------------------------------------------------------------------------
  1394.  
  1395.                CircuitNET is not a Public Domain program and is not free.
  1396.  
  1397.              Non-registered users of CircuitNET are granted a 30 Day
  1398.           limited license to evaluate the suitability of CircuitNET for
  1399.           their particular requirements.  Any usage of CircuitNET beyond
  1400.           the evaluation time period requires registration of each copy of
  1401.           CircuitNET used, according to the multi-net usage agreement.
  1402.           Use of non-registered copies of CircuitNET beyond the original
  1403.           evaluation period is prohibited.
  1404.  
  1405.              CircuitNET and its accompanying programs may NOT be modified
  1406.           in any respect, for any reason, including but not limited to, de-
  1407.           compiling, disassembling, reverse engineering, or editing of the EXE.
  1408.           This documentation may not be reproduced, transmitted, transcribed,
  1409.           or translated into any language, computer or otherwise, without the
  1410.           express written consent of Dave Stahl.
  1411.  
  1412.              You are free to distribute the PUBLICLY AVAILABLE shareware
  1413.           version of CircuitNET to others subject to the above restrictions
  1414.           and also the following:
  1415.  
  1416.           A.   No fee is charged for its use.
  1417.  
  1418.           B.   No remuneration may be accepted for CircuitNET.
  1419.                This does not apply to computer access charges the system
  1420.                operators ( Sysops ) of or organizations owning bulletin
  1421.                board systems, online services, etc. may charge subscribers.
  1422.  
  1423.           C.   CircuitNET must be copied in unaltered form, complete with
  1424.                files containing license information, the FULL documentation
  1425.                and all accompanying files.
  1426.  
  1427.           D.   License to distribute this program is granted to Shareware
  1428.                Houses & Disk Vendors, with the following conditions:
  1429.                 ■ The files distributed MUST be the latest available,
  1430.                    preferably from a CircuitNET distribution BBS.
  1431.                 ■ The CircuitNET archive must be complete, and MUST be
  1432.                    named with the author's ( Dave Stahl ) naming conventions.
  1433.  
  1434.                Commercial distributors of "Public  Domain", "Shareware",
  1435.           and/or User Supported software may distribute CircuitNET subject
  1436.           to the above conditions only after obtaining WRITTEN permission
  1437.           from Dave Stahl.  This condition statement supersedes all previous
  1438.           agreements.
  1439.  
  1440.                Please refer to registration/ordering section for additional
  1441.           information  on registration,  corporate site-licensing and
  1442.           related topics.
  1443.  
  1444. --------------------------------------------------------------------------
  1445.  
  1446.      L I C E N S E   A G R E E M E N T  Registered Version
  1447.      
  1448. --------------------------------------------------------------------------
  1449.  
  1450.              CircuitNET and its accompanying programs may NOT be
  1451.           Modified in any respect - for any reason - including,
  1452.           but not limited to:
  1453.            ■ Decompiling.
  1454.            ■ Disassembling.
  1455.            ■ Reverse Engineering.
  1456.            ■ "Editing" Of Compiled EXE.
  1457.  
  1458.              The documentation for CircuitNET may be translated into foreign
  1459.           languages ONLY with permission from Dave Stahl.
  1460.  
  1461.              The SHAREWARE license statement does not apply to the REGISTERED
  1462.           version of CircuitNET.  The registered software of Dave Stahl is
  1463.           protected under United States Copyright and Trademark Laws.
  1464.           It must be treated just like a book with certain exceptions ( Below )
  1465.  
  1466.  
  1467.           A.   Dave Stahl authorizes the making of archival
  1468.                copies of the registered software for the sole purpose of
  1469.                backing-up your software and protecting your investment from
  1470.                possible loss.
  1471.  
  1472.           B.   The medium on which the registered software is recorded is
  1473.                transferred to the customer, but not the title to the
  1474.                software.
  1475.  
  1476.           C.   The Licensee may resell or transfer unmodified copies of the
  1477.                registered software provided the customer has registered
  1478.                from Dave Stahl one copy of the registered software for each
  1479.                one sold or distributed.   The provisions of this software
  1480.                license shall also be applicable to third parties receiving
  1481.                copies of the registered software from the customer.  The
  1482.                resale price of CircuitNET is not to exceed the price paid
  1483.                originally.
  1484.  
  1485.           D. Multi-Net usage Agreement:
  1486.                Each registered copy of CircuitNET can be used on up to
  1487.                2 ( Two ) Bulletin Board Systems owned by you, regardless of
  1488.                the number of networks you run.
  1489.                This does not apply to Multi-Node BBS's, Nor to Subboards
  1490.                off the same BBS.
  1491.  
  1492.                Should you require a second registration, please see the
  1493.                registration form for details.
  1494.  
  1495.           E.   Dave Stahl reserves the right to cancel your registration of
  1496.                CircuitNET upon proof of any aberration of the above outlined
  1497.                terms, particularlly those dealing with modifications.
  1498.  
  1499.           F.    You MAY NOT form new network using CircuitNET software
  1500.                 without CONSENT from Dave Stahl.
  1501.                 This applies to local networks, as well as national
  1502.                 or international networks.
  1503.  
  1504.      S T A N D A R D   D I S C L A I M E R
  1505.      
  1506. --------------------------------------------------------------------------
  1507.  
  1508.                CircuitNET is provided AS IS without any warranty, expressed
  1509.           or implied.  This includes without limitation the fitness to a
  1510.           particular purpose or application and any warranties of
  1511.           merchantability.
  1512.  
  1513.                While I tried to be as through as possible while debugging
  1514.           CircuitNET, Dave Stahl shall not be liable for any damages, whether
  1515.           direct, indirect, special, or consequential arising from a failure
  1516.           of this program or accompanying files to operate in a manner desired
  1517.           by the user.  Dave Stahl shall not be liable for any damage to data
  1518.           or property which may be caused directly or indirectly by use of this
  1519.           program.
  1520.  
  1521.                In no event will Dave Stahl be liable to you for any damages,
  1522.           including any lost profits, lost savings or other incidental or
  1523.           consequential damages arising out of your use or inability to use
  1524.           the program, or for any claim by any other party.
  1525.  
  1526.                If you have a problem with CircuitNET please notify Dave
  1527.           Stahl, describing the situation & revision number/date.
  1528.           Registered users, please include the serial number found on
  1529.           your registered programs.
  1530.  
  1531. --------------------------------------------------------------------------
  1532.  
  1533.  
  1534.      THE ANATOMY OF A MESSAGE
  1535.        SpitFire Messages
  1536.                Spitfire maintains and manipulates messages with a system of
  1537.           parallel files.  It maintains .PTR, .DAT, .IDX, and .LMR files
  1538.           for each conference.  All of the files have a common file name
  1539.           consisting of SFMSG folloId by the number of the conference.
  1540.           CircuitNET deals only with the first three files. (CONFIG.EXE
  1541.           does create the .LMR file for new conferences but doesn't
  1542.           manipulate it in any way.)
  1543.  
  1544.                The .PTR file:  Spitfire messages are separated into the
  1545.           header or pointer record, and the data records or message body.
  1546.           The .PTR file is where the header records for each conference is
  1547.           stored.  The header record contains the information on who the
  1548.           message is to and from, when it was entered, the location and
  1549.           number of data records, an internal message number, and thread
  1550.           identification.  It also contains a set of Flags that indicate
  1551.           whether the message is deleted, net-mail, received, or part of a
  1552.           thread.  Essentially everything Spitfire needs to know about each
  1553.           message except what it actually says.
  1554.  
  1555.                The .DAT file:  The SpitFire message Data File stores the
  1556.           text of the message in 128 byte blocks.  EAch message is "rounded
  1557.           up" to the next multiple of 128 bytes.
  1558.  
  1559.                The .IDX file:  Spitfire uses an index file to speed
  1560.           searches through the message directory.  Each index record
  1561.           contains a code identifying who the message is to, who the
  1562.           message is from, and the message number and thread identification
  1563.           number.
  1564.                The to and from codes are simply 32 bit CRC's of the text in
  1565.           the to and from fields of the pointer record for the matching
  1566.           message.
  1567.  
  1568.                The .LMR file:  Spitfire maintains one record in each .LMR
  1569.           file with the internal message number of the last message read by
  1570.           each user in each conference.  ( With Spitfire 3.2 there is a
  1571.           record for each user allowed rather than for each active user. )
  1572.  
  1573.        Circuit Net Messages
  1574.                CircuitNET uses a similar system to Spitfire's with the
  1575.           difference that CircuitNET doesn't require the index and last
  1576.           read files.  It does need to keep track of a history of which
  1577.           messages have been moved in and out of each of Spitfire's message
  1578.           conferences.  So CircuitNET adds one file to SpitFire's files
  1579.           with the extension .HST to keep the historical data in.
  1580.           CircuitNET uses the extension .CNP for it's pointer files, and
  1581.           the extension .CND for it's data files.
  1582.  
  1583.                The .CNP File:  Like Spitfire, CircuitNET keeps the data in
  1584.           a separate file from the header records.  CircuitNET uses much of
  1585.           the information from the Spitfire .PTR file to build it's pointer
  1586.           records, but there is information in the Spitfire record that
  1587.           CircuitNET doesn't need, and there is information  that
  1588.           CircuitNET needs that is not in the Spitfire records.  Also, some
  1589.           of the information that CircuitNET does get from the Spitfire
  1590.           record isn't as compact as it could be.  So CircuitNET builds a
  1591.           record that contains everything it needs to re-construct a
  1592.           Spitfire message header, plus everything it needs to control the
  1593.           messages travels through the network, and at the same time is a
  1594.           small as possible.  The end result is that SpitFire's pointer
  1595.           record is 64 bytes larger than CircuitNET's.
  1596.  
  1597.                The .CND file:  CircuitNET's Data file is not organized in
  1598.           blocks, but in single bytes.  Strings of repeated characters in
  1599.           the Spitfire data records are stored as three bytes, and trailing
  1600.           spaces are stripped out.  (Repeated characters are represented as
  1601.           a identification mark, number of characters, and the character to
  1602.           repeat.)  Short of an actual compression, as is done by archiving
  1603.           programs, this transfers the message text in as few characters as
  1604.           possible.
  1605.  
  1606.      M E S S A G E   C O N T R O L   C O D E S
  1607.      
  1608. --------------------------------------------------------------------------
  1609.  
  1610.                CircuitNET Message Control codes (MCCs).  MCCs allow you or
  1611.           any user of your system to route messages to a specific node.  In
  1612.           addition, the Sysop may REMOTELY modify his or her Dossier File
  1613.           on another system.
  1614.  
  1615.                                      ROUTING MESSAGES
  1616.  
  1617.                In order to route a message to a specific node, a user must
  1618.           enter the Route Specifier, which consists of TWO greater-than
  1619.           signs (>>) immediately folloId by the node number of the system
  1620.           that message is to be routed to,  in the SUBJECT of the message.
  1621.           The Route Specifier, together with the  destination node,
  1622.           comprise the Route MCC.  Thus, if a user wanted to route  a
  1623.           message to another user on node 801000, he or she would enter the
  1624.           message  as normal, but would place the following in the subject
  1625.           of the message:
  1626.  
  1627.           Message to:    Joe Blow
  1628.           Message From:  Joe User
  1629.           Message subject:  Hi Joe! >>801000
  1630.                                      |   |
  1631.                                      |   +--  Node to Route message to.
  1632.                                      + -----  Route Specifier
  1633.  
  1634.              *NOTE:    The FIRST character of the subject MUST be a letter.
  1635.  
  1636.                The rest of the message would contain the actual text of the
  1637.           message.  Thus, the entire message would appear as below, and
  1638.           would be sent to all of your linked nodes, but would only be
  1639.           imported into node 801000:
  1640.  
  1641.           Message To:       Joe Blow
  1642.           Message From:     Joe User
  1643.           Message Subject:  Hi Joe! >>801000
  1644.  
  1645.           1: This is a routed message to node 801000.
  1646.           2:
  1647.           3: Sincerely,
  1648.           4:
  1649.           5: Joe User
  1650.  
  1651.      DOSSIER FILE MODIFICATION
  1652.  
  1653.                A Sysop of a CircuitNET system may REMOTELY modify his or
  1654.           her Dossier File on another system by using the Add and Delete
  1655.           MCCs.  A CircuitNET Sysop may both add and delete conferences
  1656.           from his or her Dossier File.
  1657.  
  1658.           Adding a conference:  Adding a conference simply requires sending a
  1659.           routed message IN that conference.  Assign the desired codename to a
  1660.           Spitfire Conference, and then enter a routed message in that
  1661.           conference to be sent net-mail.  Route the message to any node you
  1662.           know already echoes that conference.  (Usually routing to your host
  1663.           is sufficient.)  Address the message TO: Sysop <NodeId> of the node
  1664.           you route the message to.  WildCard routing and Sysop specifiers are
  1665.           permissible.  The desired conference will be added to ALL dossier
  1666.           files required for you to echo the conference betIen your node and
  1667.           the node the message is routed to.
  1668.  
  1669.           Deleting a conference:  Remote deletion of conferences is more
  1670.           tightly restricted.
  1671.  
  1672.           1:  You can only delete conferences from the Dossier file for YOUR
  1673.           node on systems you echo directly to.  You CANNOT delete conferences
  1674.           in nodes you do not build packets for.
  1675.  
  1676.           2:  The message must be FROM: the name given as Sysop User Name in
  1677.           Config.  A message from any other name will produce an error message
  1678.           from Primer in both the Activity and Error log files alerting you to
  1679.           an "Unauthorized attempt to delete a conference", and the message
  1680.           will NOT be processed.  The warning message will be repeated each
  1681.           time primer is run until the offending message is deleted, or until
  1682.           the Sysop User Name is changed to match the From: field in the
  1683.           message.
  1684.  
  1685.           3:  The Subject: filed must contain a routing specifier AND a
  1686.           deletion command.  non-routed attempts to delete a message will be
  1687.           processed as a normal message and sent into the network, but will
  1688.           have NO effect on the dossier files. (i.e. SUBJ: >>MYHOST--BANANAS)
  1689.  
  1690.           4:  The last character of the codename to delete must be folloId by
  1691.           a space, or be the last character in the subject.  Imbedded spaces
  1692.           are ignored.  any text following the '>>' marker, (including the
  1693.           marker), will be removed once Primer parses the information so any
  1694.           text following the codename will be lost.
  1695.  
  1696.           5:  On the recieving end, the name of the Dossier file to modify
  1697.           must match the node ID of the true origin of the message.  In other
  1698.           words, you cannot modify any dossier file except the one for YOUR
  1699.           node on a system that builds packets FOR you.  (i.e. your host, or a
  1700.           direct dependent of your node.)
  1701.  
  1702.           NOTE:  All traffic in the conference must cease, or the automatic
  1703.           update feature of IMPORT will re-add the conference.  All message in
  1704.           the packet containing the deletion command will Import normally
  1705.           before the deletion is made, so the command can delete the
  1706.           conference it is sent in, but it must be manually removed from the
  1707.           affected dossier file on your end. (After the delete command is sent
  1708.           if it is in the affected conference.  Any time if in another
  1709.           conference.)
  1710.  
  1711.  
  1712.      A P P E N D I X   B   B a s i c   N e t m a i l   C o n c e p t s
  1713.      
  1714. --------------------------------------------------------------------------
  1715.  
  1716.                                       NODE NUMBERING
  1717.  
  1718.                In order to maintain organization throughout ANY network, a
  1719.           system must have an address, or a unique identifier that
  1720.           distinguishes that system from another.  In CircuitNET, this
  1721.           addressing technique is called Node Numbering.  Each system using
  1722.           CircuitNET will have a node number.
  1723.  
  1724.             In the CircuitNET International Network, node numbers are
  1725.           assigned as follows:
  1726.  
  1727.           - Node numbers consist of the area code of the system's location,
  1728.           followed by a three-digit number denoting the number of the system.
  1729.           Thus, the first system in area code 801 would be assigned the node
  1730.           number 801001.
  1731.  
  1732.           - Any CircuitNET system which performs host duties is assigned a
  1733.           000 number to their node number.  Thus, the host system for the
  1734.           801 area code is designated as 801000.  Host Systems are usually
  1735.           the first registered CircuitNET systems in an area.
  1736.  
  1737.      CONFERENCE IDENTIFICATION
  1738.  
  1739.                Each conference used by CircuitNET must have a codename.
  1740.           This codename is used to match up conferences on different system
  1741.           whose conference configuration are not identical.  For example,
  1742.           if System A has the CircuitNET Support Conference as Spitfire
  1743.           conference number one, and System B has it as Spitfire conference
  1744.           number nine, then there needs to be some way for CircuitNET to
  1745.           make sure that the mail from System A's conference number one is
  1746.           imported into System B's conference nine, and vice-versa.  This
  1747.           is where CODENAMEs come in.
  1748.  
  1749.                Conference CODENAMEs are eight-letter mnemonics used to
  1750.           represent the name of a conference.  By using a conference
  1751.           codename, conferences are more accurately represented on a
  1752.           system.  Instead of having to maintain a database that represents
  1753.           each system's unique configuration, a more static method is
  1754.           provided by assigning each conference a codename that is used to
  1755.           denote which conferences are to be linked together.  Thus,
  1756.           CircuitNET doesn't worry about matching conference number up, but
  1757.           rather concentrates its effort in getting the mail from one
  1758.           conference into another conference with the same CODENAME.
  1759.  
  1760.                                     DUPLICATE MESSAGES
  1761.  
  1762.                Duplicate messages occur when there are two or more messages
  1763.           which are exactly the same in any given conference.  IMPORT
  1764.           compares each message being imported to those already in the
  1765.           software message conference and rejects any that would be
  1766.           duplicates.  If there is no matching message in the spitfire
  1767.           message base then the message is imported.  This may result in a
  1768.           resent message which is a message that was on a given board then
  1769.           deleted and then re-imported into that boards message base and
  1770.           then sent back out on the net.
  1771.  
  1772.      APPENDIX C
  1773.  
  1774.                This appendix is provided to those of you who like the
  1775.           technical aspects of CircuitNET.  If you have any questions
  1776.           concerning topics above and beyond those covered in this manual,
  1777.           contact Dave Stahl and I will help you out in
  1778.           any way I can.
  1779.  
  1780.      SOURCE CODE AND RECORD STRUCTURES
  1781.  
  1782.            There are no plans to release the source code to CircuitNET
  1783.           to anyone.
  1784.  
  1785.             The record structures, however, will be released on a case by
  1786.           case basis to those who wish to write utilities to function with
  1787.           any of the Circuit Net files.
  1788.  
  1789.      APPENDIX D
  1790.      REVISION HISTORY
  1791.      
  1792. --------------------------------------------------------------------------
  1793.  
  1794.           April, 1992 -
  1795.               Copyright purchased from Gorilla Brothers Software by
  1796.             Dave Stahl
  1797.  
  1798.           Jan 1992 -
  1799.                Release Ver 3.11 - Rewrite of CircuitNET mail packet
  1800.              structure, duplicate rejection sceme reworked for better
  1801.              results, Node ID increased to 8, addition of .HST files
  1802.              for duplicate rejection, Outbound duplicate rejection added,
  1803.              NET wide message threading added, message routing expanded
  1804.              to now include wildcard message routing, SYSOP ALL message
  1805.              routing now added.
  1806.  
  1807.           Dec 1990 -
  1808.                Copyright purchased from Sean C. Burbidge by Gorilla
  1809.              Brothers Software.
  1810.  
  1811.           Release 3.04 -
  1812.                Fixed memory allocation problems and message
  1813.              conference size limitations introduced in release 3.01 of
  1814.              import, also enabled transparent conference routing and
  1815.              automatic dossier file updates.
  1816.  
  1817.           Release 3.01 -
  1818.                Added Duplicated Rejection facilities to
  1819.              IMPORT.EXE
  1820. --------------------------------------------------------------------------
  1821.  
  1822.      APPENDIX E
  1823.        Command lines, Exit Codes, and Troubleshooting
  1824.          PRIMER.EXE only recognizes three command line parameters:
  1825.                NOLOG:  Reduces logging to the status message, and
  1826.                     start/stop times in the activity log.  Errors will be
  1827.                     reported to the Error log with only a reduction in
  1828.                     detail.
  1829.                BRIEF:  The default logging level with the status report
  1830.                     message copied to the log files.
  1831.                VERBOSE:  For Primer only notification of errors is added to
  1832.                     the default brief logging.
  1833.  
  1834.          EXTRACT.EXE Recognizes the same three logging level commands
  1835.                   as does Primer plus three additional command line
  1836.                   parameters:
  1837.  
  1838.                     Nolog, Brief, and Verbose function basically the same
  1839.                as for Primer, with the exception of the verbose mode.  For
  1840.                Extract verbose logging adds detail to reject notices, but
  1841.                extract does NOT notify you that it has rejected any
  1842.                messages.  the only trace of outbound rejections is the
  1843.                error log entries.
  1844.  
  1845.                /Node=xxxxxxxx  This command line causes Extract to bypass
  1846.                     the NODES file, and only build one packet. Only the
  1847.                     first occurrence of this parameter is recognized.
  1848.  
  1849.                LOCK  This parameter tells extract that the mail cycle is
  1850.                     complete, and that the work files are no longer needed.
  1851.                     The work files will be deleted when extract is finished
  1852.                     building the packet(s).  If Extract encounters a fatal
  1853.                     error, this parameter is ignored.  If the BBS is
  1854.                     configured as a HOST this parameter must be used.  If
  1855.                     the BBS is configured as an end node (i.e. "This BBS is
  1856.                     a host = FALSE) this parameter is automatically set.
  1857.  
  1858.                HOST  This parameter overrides the configuration host mode
  1859.                     variable and preserves the work files.  It is the
  1860.                     functional opposite of LOCK.
  1861.  
  1862.          IMPORT.EXE Recognizes the three logging levels, plus one other
  1863.                   command line parameter:
  1864.  
  1865.                NOLOG Import reduces the information in the status report
  1866.                     message, as Ill as reducing the Activity log to
  1867.                     start/stop times.  Import will also stop reporting of
  1868.                     which messages Ire rejected to the error log.
  1869.  
  1870.                BRIEF:  In the default mode of Brief logging, Import reports
  1871.                     the numbers imported by conference in addition to the
  1872.                     totals reported in NOLOG mode.  It also copies the same
  1873.                     information to the Activity log.  Minimal information
  1874.                     is reported to the error log for rejected messages.
  1875.  
  1876.                VERBOSE:  Import Adds information on each message imported
  1877.                     to the Activity log, and expands the information on
  1878.                     rejected messages in the Error log.  (The format of the
  1879.                     verbose activity log is compatible with NETBULL.EXE by
  1880.                     Kenneth Rucker which generates a bulletin for your
  1881.                     users.)
  1882.  
  1883.                HOST:  Import does not write messages to the work files
  1884.                     unless it is in host mode.  Import uses the HOST
  1885.                     variable in the CIRCUIT.CFG file as the default.  This
  1886.                     parameter can be used to force Import to write to the
  1887.                     work files, although no command line facility has been
  1888.                     provided to prevent it from writing to the work files
  1889.                     if the BBS is configured as a host.
  1890.  
  1891.      Error Levels and trouble shooting:
  1892.          Primer.exe:
  1893.                Prime has two error exit levels
  1894.                128 : CIRCUIT.CFG not found or unreadable.  There are two
  1895.                     possible causes for this error.  Either Primer was
  1896.                     invoked with the current DOS directory other than the
  1897.                     one that contains CIRCUIT.CFG, or the CIRCUIT.CFG file
  1898.                     as not compatible with version 3.11 of CircuitNET.
  1899.                     (Either corrupted, or from an older version of
  1900.                     CircuitNET.)   Insure that your batch file changes to
  1901.                     the directory that contains CIRCUIT.CFG, and if that
  1902.                     doesn't correct the problem, you will need to re-build
  1903.                     CIRCUIT.CFG with CONFIG.EXE
  1904.  
  1905.                135 : Message base locked by WORKING.CN.  Both Import and
  1906.                     Primer use a file named WORKING.CN to "lock" the
  1907.                     SpitFire message Directory.  If you suffer a poIr
  1908.                     failure or have to re-boot the system while Import or
  1909.                     Primer is working, this file is not deleted as it
  1910.                     should be.  Primer and Import will loop until this file
  1911.                     is deleted, or 10-15 minutes, or until any key is
  1912.                     pressed.  If the file is removed while they are looping
  1913.                     they go ahead and execute, other wise they exit with a
  1914.                     notice to the the status message and log files, and
  1915.                     this error level.  Normally this error level indicates
  1916.                     that a run-time error or other program interruption
  1917.                     cause the key file to be left behind.  If WORKING.CN
  1918.                     exists when neither Import or Primer is running, then
  1919.                     it should be deleted.  (Your batch file can delete the
  1920.                     working file when the main Spitfire node is booted, but
  1921.                     care should be used to prevent the file from being
  1922.                     deleted when a module is actually working.)  Another
  1923.                     situation that can cause this error level is when the
  1924.                     module that has the message area locked does in fact
  1925.                     take more than 15 minutes to complete it's processing.
  1926.                     Primer's processing time is much longer than the time
  1927.                     Import will wait if you have many conferences and/or
  1928.                     several conferences with great numbers of messages.
  1929.                     For a 286/12 machine over 100 conferences, or over
  1930.                     10,000 messages total will push Primer's processing
  1931.                     time beyond the time limit to wait for the Key file to
  1932.                     clear.
  1933.  
  1934.          EXTRACT.EXE
  1935.                     Extract only exits with an error level of 0, 128, or
  1936.                133.
  1937.  
  1938.                128 is generated when Extract cannot open or read any of the
  1939.                     files it requires.  The error log is used to report
  1940.                     which file caused the problem.
  1941.  
  1942.                133 is generated when Extract cannot find enough disk space
  1943.                     to build the mail packets.  If this occurs when
  1944.                     extracting for a single node, files will need to be
  1945.                     deleted or moved to make room in the CircuitNET Mail
  1946.                     directory.  If it occurs when extracting for multiple
  1947.                     nodes then usually extracting for each node singly with
  1948.                     the /NODE= command line option will be successful.
  1949.  
  1950.          IMPORT.EXE
  1951.                Import has the most extensive error exit reporting.
  1952.  
  1953.                1 :  Error level 1 is generated when there is no mail packet
  1954.                     found to process.  Import checks in the CircuitNET Mail
  1955.                     directory for <nodeid>.ZIP before doing any processing.
  1956.  
  1957.                2 :  Error level 2 is generated if either the .CND or .CNP
  1958.                     file from the mail packet are not found in the
  1959.                     CircuitNET Work directory after returning from the
  1960.                     shell to PKUNZIP.  The most probable cause for this
  1961.                     error is that the mail packet contained Zero byte
  1962.                     files. Other possible causes include an error unzipping
  1963.                     the packet, and insufficient disk space in the Work
  1964.                     directory.
  1965.  
  1966.                128 : Import could not find CIRCUIT.CFG or could not read
  1967.                     it.
  1968.  
  1969.                129 : Import could not find CNCONFS.CFG in the CircuitNET
  1970.                     system directory, or could not read it.
  1971.  
  1972.                131 : Import did not find enough memory to process the
  1973.                     packet.  Import requires approximately 256K to load,
  1974.                     and then checks to insure it has enough memory
  1975.                     available to read in the files it needs to process the
  1976.                     message packet.
  1977.  
  1978.                133 : Not enough space on work drive to run.  Import did not
  1979.                     find enough disk space on the drive that contains the
  1980.                     CircuitNET Work directory to process the mail packet.
  1981.  
  1982.                134 : Not enough memory to continue.  Import ran out of
  1983.                     available memory.  This indicates that the mail packet
  1984.                     contained information that caused it to build bigger
  1985.                     lists in memory than it predicted it would need.
  1986.                     Import leaves the .CND and .CNP file in the work
  1987.                     directory in this case, and often simply re-zipping
  1988.                     them and re-importing the packet will recover missed
  1989.                     mail. (The rejection of the previously processed
  1990.                     messages consumes less memory than processing them the
  1991.                     first time did.)  If that fails, removing TSR's and
  1992.                     device drivers from memory is required to provide more
  1993.                     memory for import to work with.
  1994.  
  1995.                135 : Message base locked by WORKING.CN.  See the comments
  1996.                     under Primer for more information on this error. Import
  1997.                     is susceptible to some of the same factors that would
  1998.                     cause Primer to run longer than the time limit. i.e.
  1999.                     large numbers of conferences, or a very large packet
  2000.                     with messages to many different conferences.  On a
  2001.                     286/12 machine a packet with over 2000 messages to 100
  2002.                     different conferences was required to cause import to
  2003.                     run longer than the time another module would wait.
  2004.  
  2005.                136  : Unable to Open/Create MESSAGES.CN?  If host mode is
  2006.                     active, and Import cannot open or create the work
  2007.                     files, it will abort without processing any messages,
  2008.                     and leave the packet .CNP/CND files in the work
  2009.                     directory so that they can be re-zipped after the
  2010.                     problem is corrected.  Most probable cause of this
  2011.                     error is Extract having the files open longer than
  2012.                     Import's sharing code will re-try, or an orphaned file
  2013.                     lock in the tables maintained by SHARE.COM.  Re-zipping
  2014.                     the packet and re-trying should correct the problem.
  2015.  
  2016.  
  2017.      R E G I S T R A T I O N   I N F O R M A T I O N
  2018.      
  2019. --------------------------------------------------------------------------
  2020.  
  2021.                Once a registered user of CircuitNET, you are free to
  2022.           utilize the program as often as you wish.
  2023.            You will also be notified when a significant enhancement has
  2024.           been made to CircuitNET.  Once registered, all upgrades are
  2025.           available for free.
  2026.  
  2027.                Upon the receipt of your registration you will be provided
  2028.           with your registered copy of CircuitNet which will allow you
  2029.           full access to all of the current net mail conferences.
  2030.  
  2031.                There are two ways to register.  The first is by sending
  2032.           $20.00 (US) to Dave Stahl along with a registration form.
  2033.           You may then download your registered version from Quantum Leap!
  2034.           @ (408) 267-0631.  Or, for an additional $5.00 (US), I will send
  2035.           you the latest shareware and registered versions of CircuitNET
  2036.           on disk along with documentation (on disk) w/Utilities.
  2037.  
  2038.                                   CircuitNET UPGRADES
  2039.  
  2040.                Once you have registered CircuitNET, future upgrades are
  2041.           free.  Registered users desiring an upgrade may either download
  2042.           the new version from the CircuitNET Support BBS, or may opt to
  2043.           receive the new version on diskette.  In such case, please send
  2044.           $5.00 (US) to Dave Stahl for handling costs.
  2045.  
  2046.      APPENDIX F: REGISTRATION FORM
  2047.  
  2048.      Remit Registration To:   Dave Stahl
  2049.                               3158 Ross Ave
  2050.                               San Jose, Ca, 95124
  2051.  
  2052.      Qty.   Description                                     Each    Total
  2053. --------------------------------------------------------------------------
  2054.      ____  CircuitNET Upgrade to version 3.11 on disk       $5.00   _______
  2055.  
  2056.      ____  CircuitNET Registration                         $20.00   _______
  2057.  
  2058.      ____  CircuitNET Registration ( 360K 5.25" )          $25.00   _______
  2059.  
  2060.      ____  CircuitNET Registration ( 720K 3.5"  )          $25.00   _______
  2061.  
  2062.      ____  CircuitNET Second Registration                  $10.00   _______
  2063.  
  2064.      ____  CircuitNET Second Registration ( 360K 5.25" )   $15.00   _______
  2065.  
  2066.      ____  CircuitNET Second Registration ( 720K 3.5" )    $15.00   _______
  2067.  
  2068.      --------------------------------------------------- Subtotal   _______
  2069.  
  2070.      All orders outside US & Canada add $5 Shipping      Shipping   _______
  2071.  
  2072.      Add $5 for Currency Exchange *SEE ABOVE        Misc. Charges   _______
  2073.  
  2074.      CA residents please add 8.25% sales tax                  Tax   _______
  2075.  
  2076.      ------------------------------------------------------ TOTAL  $_______
  2077.  
  2078.      Name: ________________________________________________________________
  2079.  
  2080.      Company: _____________________________________________________________
  2081.  
  2082.      Address: _____________________________________________________________
  2083.  
  2084.      City: _________________________  State: _______  ZIP: _________-______
  2085.  
  2086.      Data Phone #1: _______________________  Home Phone:___________________
  2087.  
  2088.      Data Phone #2: _______________________  BBS Bps: _____________________
  2089.  
  2090.      BBS Name: ____________________________________________________________
  2091.  
  2092.      BBS Hours: _____________  Password For Quantum Leap!:_________________
  2093.  
  2094.       If you are not already logged into Quantum Leap!, please give me a
  2095.       password to set up your account with.
  2096.  
  2097.            All checks must be drawn on US funds in US Dollars.
  2098.            Sorry, No COD orders will be accepted.
  2099.  
  2100. --------------------------------------------------------------------------
  2101.  
  2102.                    C O P Y R I G H T   N O T I C E S
  2103.      
  2104. --------------------------------------------------------------------------
  2105.  
  2106.              CircuitNET is Copyright (c) 1992 by Dave Stahl
  2107.      Spitfire is Copyright (c) 1987,1992 by Buffalo Creek Software.
  2108.    PKZIP and PKUNZIP are Copyright (c) 1990 by PKWare, Incorporated.
  2109.    Turbo Pascal is Copyright (c) 1989,1992 by Borland International.
  2110.                  Turbo Pascal Reg. U.S. Pat. & Tm. Off.
  2111.      
  2112. --------------------------------------------------------------------------
  2113.  
  2114.                I would like to thank the following people who have helped
  2115.           in the making of this project.
  2116.  
  2117.                Bill Arlofski       Steve Newman        Wayne Letalien
  2118.                Bill Gray           Glenn Lewis         Lonnie Odom
  2119.                Michael Benedict    Mike Ist            Steve Palmer
  2120.                Lynn Hochwitz       Sean Burbidge       Mark Eastman
  2121.                Jere Issel
  2122.  
  2123.                What are you looking down here for?  Get netmailing!
  2124.