home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS - Coast to Coast / simteldosarchivecoasttocoast2.iso / citadel / k2ne603b.zip / CTDL_MAN.ZIP / INSTALL3.MAN < prev    next >
Text File  |  1988-02-25  |  117KB  |  2,908 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.                        INSTALLATION MANUAL
  16.   
  17.                         CITADEL-86  V3.03
  18.  
  19.                            by Hue, Jr.
  20.  
  21.                      C-86 Test System Sysop
  22.  
  23.                         (612) 866-1804
  24.  
  25.                             88Mar01
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.                          Table of Contents
  72.  
  73.      I. Introduction & Requirements                                  2
  74.         I.1 ... but first, a caveat.                                 2
  75.         I.2 Introduction                                             2
  76.         I.2 Requirements                                             3
  77.  
  78.      II. INSTALLATION                                                4
  79.          II.1 Tickling DOS configurations                            4
  80.          II.2 Making your modem do the right thing                   4
  81.          II.3 Citadel-86 Operating Procedures
  82.                          (and other epic fantasies)                  5
  83.               II.3.a Who's this masked Temporary file, anyways?      6
  84.          II.3 (con't)                                                6
  85.          II.4 Other Data Files                                       7
  86.          II.5 The ole' configuration file                            8
  87.               II.5.a But first, a word on moral values ...           8
  88.               II.5.b Section 1 of CTDLCNFG.SYS                       9
  89.                 Part 1 of Section 1: MEANINGLESS MISCELLANEA        10
  90.                 Part 2 of Section 1: REQUIRED ODD STUFF             11
  91.                 Part 3 of Section 1: DATA FILE SIZES                12
  92.                 Part 4 of Section 1: DATA FILE LOCATIONS            14
  93.                 Part 5 of Section 1: POLICY OPTIONS                 15
  94.                 Part 6 of Section 1: MODEM HANDLING                 16
  95.               II.5.c Section 2 of CTDLCNFG.SYS                      18
  96.               II.5.d Section 3 of CTDLCNFG.SYS                      24
  97.          II.6 The Big Step -- Your first experience with CONFG      27
  98.          II.7 CTDL -- That Childhood Experience                     28
  99.          II.8 When the inevitable happens                           29
  100.          II.9 Installation -- Advanced Topics                       29
  101.               II.9.a Command Line options                           30
  102.               II.9.b BAT files and program termination ERRORLEVELS  31
  103.               II.9.c Making BAT files and command line options
  104.                                                      work for you   31
  105.               II.9.d Extreme options in CTDLCNFG.SYS                33
  106.  
  107.      Appendix -- Exhibit copy of CTDLCNFG.SYS.                      36
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.                                     -1-
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.      I. Introduction & Requirements
  138.         Hi.  This is the Citadel-86 Installation Manual.  This manual comes in
  139.      two parts.  In the first part we hope to present a very short intro-
  140.      duction to Citadel-86 and give you an idea of the requirements of running
  141.      Citadel-86.
  142.  
  143.         The second part of the Manual will contain a comprehensive (we hope!)
  144.      discussion of general operation of Citadel-86 and a step-by-step
  145.      installation guide.
  146.  
  147.         If you are looking for documentation covering the day to day operations
  148.      of Citadel-86, please read MANUAL3.DOC.  Just ignore the blood spots
  149.      in there -- we sweated blood to write that.
  150.  
  151.      I.1 ... but first, a caveat.
  152.         Citadel-86 has a number of eccentricities in it; in fact, some people
  153.      might describe it as one giant eccentricity, and an explanation is,
  154.      perhaps, in order.  One of the authors of this manual, Hue, Jr., is also
  155.      the principal porter and caretaker of Citadel-86.  Citadel-86 derives
  156.      directly from the version 2.10 of Citadel written by Cynbe ru Taren for
  157.      CP/M, and contains a number of the apparent oddities that originally
  158.      appeared in Cynbe's code.  Hue, Jr., feeling that there may have been
  159.      certain reasons in Cynbe's mind for what he did, has been somewhat loathe
  160.      to change how certain things worked.  This may indicate a certain lack of
  161.      ambition on his part; if so, so be it.  Whatever the case, he has chosen
  162.      to leave them in, due to his faith that Cynbe knew what he was doing.
  163.  
  164.      I.2 Introduction
  165.         Citadel-86 is part of a growing family of BBSes that are termed
  166.      "room-based" systems.  These systems are characterized as excellent
  167.      messaging systems in which the message base is partitioned into various
  168.      'areas' that enhance the focus of the topics on that particular system
  169.      (if well-managed); the areas are usually termed 'rooms' in order to
  170.      provide a highly familiar metaphor for the common user.
  171.  
  172.         Some room-based systems have an additional structure added on to them,
  173.      known sometimes as 'hallways' or 'floors', which give addition focus.
  174.      Citadel-86 has a 'floor' capability, which is optionally available to the
  175.      users.  Floors allow the sysop and aides to partition the collection of
  176.      rooms into 'subject floors' (or 'topical floors'), so that rooms may be
  177.      grouped as needed.
  178.  
  179.         Room-based systems normally feature an extremely streamlined set of
  180.      commands, in which those used the most often are mnemonic 'single-stroke'
  181.      commands whereby the user supplies the first letter of the command to
  182.      execute and the system provides the rest of the command.  The speed
  183.      and ease-of-use of such a command set, in conjunction with the room
  184.      concept, has combined to make room based systems extremely popular and
  185.      heavily used in several sections of the United States.
  186.  
  187.         Citadel-86 also has file upload and download abilities, integrated
  188.      with the room metaphor, and a network capability.
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.                                     -2-
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.      I.3 Requirements
  204.         There are a number of requirements connected with running a Citadel-86
  205.      system. The most important one, though, is perhaps the most ignored, and 
  206.      that is experience with Citadel-86 or similar BBS software from a user
  207.      standpoint.  It can't be stressed enough that you should have at least a
  208.      month of day-to-day experience with Citadel-86 as a normal user, learning
  209.      the various commands relating to messages and files, and in general
  210.      becoming not only familiar, but comfortable with the Citadel-86 style of
  211.      bbsing before aspiring to sysopdom.
  212.  
  213.         More formally, Citadel-86 is capable of running on two classes of
  214.      machines using the same executable code.  The first is the Zenith Z-100,
  215.      an 8085/8088 machine.  The second category contains the IBM PCs, ATs, and
  216.      close clones (note that a Z-100 does NOT constitute a close clone,
  217.      although it is supported).  These two classes are similar enough that we
  218.      do not need to discuss the requirements for each class separately.
  219.  
  220.       o Operating System: PC- or MS- DOS 2.x or 3.x is required.  While not
  221.         every single version of DOS that falls in the 2.x to 3.x range has been
  222.         tested with Citadel-86, we have not had any reports of problems with
  223.         those versions of DOS.  Version 1.x of MSDOS is a NO NO!
  224.  
  225.       o RAM: We suggest that at least 256K RAM be made available to Citadel-86.
  226.         This is in addition to RAM for MS-DOS, TSR programs, etc.
  227.  
  228.       o Disk storage: A hard disk is, naturally, highly desirable.  However,
  229.         you can run Citadel-86 on a two floppy system, but if you must do so,
  230.         you should also try to make sure that you can have a relatively large
  231.         RAM disk available; due to Citadel-86's structure, disk access is
  232.         quite frequent.  While hard drives (and RAM drives!) do not mind
  233.         frequent disk accesses, floppy drives have been known to burn out
  234.         under constant usage unless certain options concerning RAM drives
  235.         are taken advantage of within Citadel-86.
  236.  
  237.       o An auto-answer modem and the hardware (cables, etc.) requisite to hook
  238.         it up to your computer:  While a Hayes or compatible is by far the most
  239.         popular modem in usage, Citadel-86 can be configured to use several
  240.         other types of modems.
  241.  
  242.       o A copy of the Citadel-86 software:  Typically, Citadel-86 comes in the
  243.         form of three archives.  The first is called RUNTIME.ARC, and is
  244.         absolutely necessary.  It contains the required executables to bring
  245.         Citadel-86 up, various help files, and a configuration file.  The
  246.         second is called SUPPORT.ARC, and contains what little documentation is
  247.         available for Citadel-86.  It is not strictly necessary, but
  248.         useful (or at least comforting).  The third is called UTILEXE.ARC, and
  249.         contain the utilities available for Citadel-86.  (If you don't have
  250.         these, they may possibly be on Test System in a room called
  251.         Necessities].)
  252.  
  253.       o Some patience!
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.                                     -3-
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.      II. INSTALLATION
  270.         In this section we explore the installation procedure for Citadel-86,
  271.      investigating territory ranging from a general overview of the operating
  272.      procedures of Citadel-86 to the details of setting up a system.
  273.  
  274.         We'll begin with a very short section on DOS and modem configuration. 
  275.      Then we get to the red, raw meat of Citadel-86: a description of how to
  276.      prepare and operate Citadel-86, and a discussion of the data files that
  277.      Citadel-86 needs or generates.  Following that will be a walk-through of
  278.      actually setting up a basic Citadel-86 installation, at the end of which
  279.      you should have a working Citadel-86 system.
  280.  
  281.         Easy, right?
  282.  
  283.      II.1 Tickling DOS configurations
  284.         First comes the only required DOS configuration that must be performed,
  285.      and that is to place the line "FILES=20" in your CONFIG.SYS file on your
  286.      boot disk.  If such a line already exists (or more than 20 is specified),
  287.      then you don't need to worry about anything.  If such a line doesn't
  288.      exist, then please put it into CONFIG.SYS, save the file, and reboot your
  289.      system so that it'll take effect.  IF YOU DON'T, CITADEL WILL BE VERY
  290.      PEEVISH!
  291.  
  292.         If you don't understand what we're gabbing about, then please consult
  293.      your DOS manuals.  CONFIG.SYS is an important part of the DOS system; it
  294.      will do you good to learn what it's about.
  295.  
  296.         We AREN'T going to discuss DOS batch files in here.  We'll leave that
  297.      for a later advanced section, because Citadel-86 exits with different
  298.      ERRORLEVELs; the exact levels vary with the reason that Citadel-86 exited.
  299.      We feel that it would be better not to cause excess confusion now, because
  300.      you'll be confused soon enough as it is.
  301.  
  302.         We AREN'T going to discuss Citadel-86 command line parameters here,
  303.      either.  While such things exist, we deem these to be the subject of an
  304.      advanced section, and so we leave them for later attention in this manual.
  305.  
  306.      II.2  Making your modem do the right thing
  307.         The Citadel-86 basic requirements in the area of modems are:
  308.       o Modem can be hooked up to the computer
  309.       o Modem can auto-answer the phone
  310.       o Modem supports true carrier detect (very preferably on pin 8)
  311.       o Modem can be hung up
  312.  
  313.         That sounds pretty darn basic, and it is.  However, if you want to take
  314.      advantage of some of the default configurations of Citadel-86 for the
  315.      modem, here's what we suggest for your modem in terms of characteristics:
  316.       o Hayes or (semi) compatible
  317.      or
  318.       o Carrier detect on pin 8 (normal for most modems)
  319.       o Carrier hangs up modem when DTR is dropped
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.                                     -4-
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.         Like we said, Citadel-86 is not restricted to Hayes/compatible
  336.      modems, although they are of course the most popular modem used.  But
  337.      other modems, such as TransModems, have been used successfully with 
  338.      Citadel-86. This makes our job, as the manual writers, substantially 
  339.      more difficult. Due to the overwhelming popularity of the Hayes compatible
  340.      modems, we're going to confine most of our advice on modem configuration
  341.      to Hayes and compatibles.
  342.  
  343.         The first thing to bear in mind is that "compatible" is often a
  344.      slippery term.  Our advice is based on our own experience with our Hayes 
  345.      compatible modems; if what we say doesn't seem to jibe with your modem's
  346.      documentation, then use a little imagination and search.
  347.  
  348.         Hayes modems are not normally correctly configured fresh from the
  349.      factory, so you must configure yours.  Usually, a combination of two
  350.      methods are used to achieve the correct configuration.  First, DIP
  351.      switches on the modem usually control several different functions,
  352.      including auto-answer mode.  However, on some Hayes compatibles they
  353.      don't exist; the functions they usually serve are then either accessed
  354.      via software, or not at all. Second, (as you might have guessed), software
  355.      can be used to configure the modem, through the use of AT commands.
  356.  
  357.         We strongly suggest that you have your modem manual available at this
  358.      point.
  359.  
  360.         First, you want to make sure that your modem will drop carrier when DTR
  361.      is dropped; the opposite of this is sometimes called the "forced DTR"
  362.      function, and can be found in the DIP switches.  Make sure that the modem
  363.      does not have "forced DTR" on.
  364.  
  365.         Next, you need to ensure that the modem is not "forcing carrier
  366.      detect". Instead, it should only have carrier detect true when there is
  367.      actually a caller online; otherwise your Citadel-86 will not work
  368.      correctly.
  369.  
  370.         Finally, you want to make sure that the modem will auto-answer when
  371.      Citadel-86 is up.  This can be selected either by DIP switch or through
  372.      software.  Even if you have a modem that has a DIP switch that controls
  373.      this function, you may want to use software instead, for finer control of
  374.      how your modem acts.  You'll find later in this manual that you can
  375.      specify a string of commands to be sent to the modem when Citadel-86 first
  376.      comes up, which you can use to activate auto-answer mode.
  377.  
  378.         The above comments apply equally well to non-Hayes compatible modems,
  379.      although the details of how to initialize the modem will differ greatly.
  380.  
  381.         More detail on initialization of the modem will appear later in this
  382.      manual in Section II.5.b: Part 6 of Section 1: MODEM HANDLING.
  383.  
  384.      II.3 Citadel-86 Operating Procedures (and other epic fantasies)
  385.         Citadel-86 comes with a whole mess of files.  However, only three of
  386.      these files are important, because they constitute the beginnings and
  387.      necessities of Citadel-86.  They are:
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.                                     -5-
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403.       o CTDLCNFG.SYS.  This file will contain your description of how you want
  404.         your system set up.  Decisions concerning the location of important
  405.         data files, system policies, and other semi-arcane things are described
  406.         for Citadel-86's use.  The CTDLCNFG.SYS that should have accompanied
  407.         your system is a template of a very generic system, and we plan to
  408.         guide you through it later in this manual.
  409.  
  410.       o CONFG.EXE.  This executable program digests CTDLCNFG.SYS, converting
  411.         the information contained therein into a form that is far easier to
  412.         digest by computer programs.  It is also responsible for generating new
  413.         data files when necessary (typically only when a new system is first
  414.         built!) and analyzing old data files.  It produces a highly temporary
  415.         yet necessary file called CTDLTABL.SYS.
  416.  
  417.       o CTDL.EXE.  This is the main executable program of Citadel-86.  It
  418.         expects to find CTDLTABL.SYS (remember that name?).  If it finds it, it
  419.         reads it, erases it, and then continues to try to bring up the rest of
  420.         the system, using the information that it found in CTDLTABL.SYS.  If
  421.         there are no severe abnormalities during CTDL.EXE's use, it will write
  422.         a new version of CTDLTABL.SYS for use the next time you bring up
  423.         CTDL.EXE.
  424.  
  425.      II.3.a Who's this masked Temporary file, anyways?
  426.         CTDLTABL.SYS has been passed off so far as a temporary file, generated
  427.      by CONFG.EXE from digesting CTDLCNFG.SYS, and required by CTDL.EXE.
  428.      However, for a mere temporary file, it merits more discussion.  We said
  429.      that CTDL.EXE expects to find it; you may have figured out that if it's
  430.      not there, then CTDL.EXE won't function properly.  This is correct, and
  431.      the proper corrective action is to run CONFG.EXE.  DON'T TRY TO USE AN OLD
  432.      VERSION OF CTDLTABL.SYS THAT YOU MAY HAVE SAVED IN CASE OF A CRASH!  Yes,
  433.      we know that running CONFG.EXE to generate a new CTDLTABL.SYS can take a
  434.      while if you're running a big system.  We mentioned that CONFG.EXE
  435.      analyzes old data files; as it happens, the results of this analysis is
  436.      also placed in CTDLTABL.SYS, and used to enhance access to various parts
  437.      of Citadel-86, such as the log.
  438.  
  439.         If you use an old version of CTDLTABL.SYS, the older information can
  440.      cause Citadel-86 to look for messages that no longer exist, lose track of
  441.      new rooms and log accounts, and other behaviors that a sysop generally
  442.      finds disruptive to domestic tranquility.  So, really, "Just say no."  Run
  443.      CONFG.EXE if you lose your current CTDLTABL.SYS through a crash or power
  444.      loss.  (This can be automated.  See section II.9 for advice on
  445.      batch files.)
  446.  
  447.  
  448.      II.3 (con't)
  449.          Back to the subject.  We now know the purposes of the three primary
  450.      files of Citadel-86.  CTDLCNFG.SYS contains information that only the
  451.      sysop can supply; CONFG.EXE processes CTDLCNFG.SYS and other data files,
  452.      producing CTDLTABL.SYS; CTDL.EXE requires CTDLTABL.SYS, and constitutes
  453.      the main executable of Citadel-86.
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.                                     -6-
  461.  
  462.  
  463.  
  464.  
  465.  
  466.  
  467.          So, in short form, here's how you run Citadel-86:
  468.       o Modify CTDLCNFG.SYS to taste.
  469.       o Run CONFG.EXE.
  470.       o Run CTDL.EXE as many times as desired, as long as each run is
  471.         terminated normally.
  472.  
  473.         If you crash, either from a fatal bug or power loss or whatever, just
  474.      run CONFG.EXE again.
  475.  
  476.      II.4 Other Data Files
  477.         When you run CONFG.EXE for the first time, a number of data files are
  478.      created, and they're what we're going to talk about in this section. 
  479.      These files contain the information -- accounts, rooms, messages, and
  480.      other things -- that make up any BBS.  The capacities of these files are
  481.      selectable by the sysop, and once selected they remain the same size as
  482.      CTDL.EXE runs (don't panic, though -- they can be changed through the use
  483.      of Citadel-86 utilities!).  And with no more delay....
  484.  
  485.       o CTDLMSG.SYS.   This file contains all the messages in the system.
  486.       o CTDLROOM.SYS.  This file contains information about the rooms in your
  487.                        system.  The size of this file is given later in this
  488.                        manual.
  489.       o CTDLLOG.SYS.   This file contains all the accounts for users on your
  490.                        system.  The size of this file is given later in this
  491.                        manual.
  492.       o CTDLNET.SYS.   This file, if it exists, will be 0 bytes long when
  493.                        initially generated by CONFG.EXE.
  494.       o CTDLFLR.SYS.   This file contains information about the floors in your
  495.                        system.  This is the only file of this group is not
  496.                        static; it grows as you add floors to your system.
  497.                        Don't panic, though.  Each floor only takes 21 bytes.
  498.  
  499.         These, however, are not the only data files that are associated with
  500.      Citadel-86.  CTDL.EXE may, on occasion, generate data files also.  These
  501.      files, unlike those generated by CONFG.EXE, are not static; however, they
  502.      are almost always very small.
  503.  
  504.       o CTDLARCH.SYS.  This file contains data about auto-archiving of rooms
  505.                        (an advanced topic to be covered under day-to-day 
  506.                        operations).
  507.       o CTDLNET.SYS.   This file, created by CONFG.EXE, will be expanded by
  508.                        CTDL.EXE if you are participating in a network.
  509.       o CALLLOG.SYS.   This file, an optional text file, is updated as each
  510.                        caller hangs up.
  511.       o CTDLDIR.SYS.   This file contains data about the directory rooms on
  512.                        your system, specifically the name of the DOS directory
  513.                        associated with each directory room on your system.
  514.  
  515.         There are also the collection of help files that came with
  516.      Citadel-86, which we talk about in Section X.
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.  
  526.                                     -7-
  527.  
  528.  
  529.  
  530.  
  531.  
  532.  
  533.      II.5 The ole' configuration file
  534.         So... we're done with that dull, but necessary, overview.  Now we get
  535.      down to that fun stuff, the screechy details of deciding those system
  536.      policies that can be enforced through the Citadel-86 software, where
  537.      certain data files or groups of data files will be kept on your system,
  538.      and some other details.  We do this by editing the file CTDLCNFG.SYS
  539.      mentioned earlier in this manual, so you may want to haul out your editor.
  540.  
  541.         Or you may not.  Instead, it might be better to first read through this
  542.      section along with a printout of CTDLCNFG.SYS, (we've included a copy of 
  543.      it in this file as well; see pages 35-42) comparing, taking notes,
  544.      understanding what is required and what questions you will have to answer
  545.      in order to set up your Citadel-86.
  546.  
  547.         We've decided to divide the CTDLCNFG.SYS file into four sections in
  548.      this manual.  The first section covers the utter necessities that must be
  549.      set correctly for Citadel-86 to come up, options that cannot be shut off,
  550.      and some miscellaneous doodads that aren't strictly required for a basic
  551.      system, but that we'd like you to set anyway.  This first section makes up
  552.      the bulk of the CTDLCNFG.SYS parameters, and is the only one that you must
  553.      fill out in order to bring up Citadel-86; the rest of the sections
  554.      constitute options that are not necessary for a basic Citadel-86
  555.      (although, of course, they ARE useful!).  If you're using a 'virgin' copy
  556.      of CTDLCNFG.SYS, the options in the rest of the sections have been set to
  557.      what we feel are harmless values.
  558.  
  559.          The second section is made up of options that are useful, but not
  560.      necessary, for the operation of Citadel-86.
  561.  
  562.         The third section is made up of options related to Citadel-86's
  563.      networker.
  564.  
  565.         The fourth section covers extremely optional parameters designed to
  566.      make modem handling very flexible when necessary.  (Don't read this
  567.      unless you have a captive, well-fed assembly-language programmer nearby.)
  568.  
  569.      II.5.a But first, a word on moral values ...
  570.         There are two methods that values are set in CTDLCNFG.SYS.  One method
  571.      is related to our reference to the fourth section, above, and will
  572.      thus be covered in that advanced section.  The other method for setting
  573.      parameter values, used with the rest of CTDLCNFG.SYS, looks like this:
  574.  
  575.      #<parameter name> <parameter value>
  576.  
  577.         The '#' MUST be in the left-most column of the file in order for
  578.      CONFG.EXE to recognize it as a parameter. Indenting this line a space
  579.      provides an easy way to disable or save an old value when experimenting
  580.      and causes CONFG.EXE to ignore the line.
  581.  
  582.         A parameter value will usually either be a numerical value or a string
  583.      value, and we'll tell you for each parameter whether your selection should
  584.      be numerical or a string.  When it is numerical, always use decimal (with
  585.      the exception of the fourth section).
  586.  
  587.  
  588.  
  589.  
  590.  
  591.  
  592.                                     -8-
  593.  
  594.  
  595.  
  596.  
  597.  
  598.  
  599.         String values are always enclosed in quotes.  Most string values are
  600.      used to indicate where to find certain files, but some string values are
  601.      special in that certain hard-to-express codes may need to be used in order
  602.      to accomplish something; this occurs almost exclusively when communicating
  603.      with odd modems (such as TransModems).  Therefore, certain parameter
  604.      string values in CTDLCNFG.SYS will allow formatting "directives" to be
  605.      placed within them, which will be interpreted during the execution of
  606.      CTDL.EXE to do special things.  The general format of a directive is a
  607.      backslash ('\') followed by a either a character that indicates a specific
  608.      action, or a sequence of three digits that represent an OCTAL value that
  609.      you need to be in this particular position to accomplish what you wish to
  610.      accomplish. Here is the list of characters that perform special actions
  611.      when following a backslash:
  612.  
  613.             n: CR-LF
  614.             t: Tab character
  615.             b: Non-destructive Backspace
  616.             r: CR
  617.             f: Formfeed
  618.             ": Put out a quote (allows quotes to appear in your strings)
  619.             \: Backslash
  620.  
  621.      So, if you wanted to insert a CR/LF into a string value, you would type
  622.  
  623.              "...\n..."
  624.  
  625.      If you needed to have the binary value of 6 in a string value, you would 
  626.      type
  627.  
  628.              "....\006...."
  629.  
  630.         Not all parameter string values accept these formatting directives;
  631.      those that don't will simply ignore them.  We have marked those parameters
  632.      that do accept them both in this manual and in CTDLCNFG.SYS.  (OCTAL
  633.      values, you say! Well.... the gentleman who donated the code to do the
  634.      formatting directives, a certain Dalnefre' of SynTel, is a C hacker, and
  635.      did it that way.  We feel that it might be worth changing sometime in
  636.      the future, too.)
  637.  
  638.         One more note.  Certain of the string values in CTDLCNFG.SYS end up
  639.      being printed to the users via Citadel-86's formatter.  In these cases,
  640.      when you use the CR/LF formatting directive ("\n"), remember to have a
  641.      space follow it -- otherwise, Citadel-86's formatter probably won't send
  642.      a CR/LF to the caller's terminal!
  643.  
  644.      II.5.b Section 1 of CTDLCNFG.SYS
  645.         We're finally looking at CTDLCNFG.SYS.  The file starts (or at least
  646.      our virgin copy does) with a short introduction to itself, which basically
  647.      tells you to consult this manual if you find it too terse.  A short list
  648.      of supported formatting directives is also included.
  649.  
  650.  
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.  
  658.                                     -9-
  659.  
  660.  
  661.  
  662.  
  663.  
  664.  
  665.      Part 1 of Section 1: MEANINGLESS MISCELLANEA
  666.  
  667.         We're going to start Section 1 with some miscellaneous parameters.
  668.  
  669.      ------
  670.      #nodeTitle
  671.         The first parameter you should find is called nodeTitle. It is a string
  672.      value that obeys formatting directives, and is subject to formatting
  673.      considerations.  nodeTitle is the title of your installation that is
  674.      printed when carrier is detected on your system.  More precisely,
  675.      nodeTitle will show up in the following place on your system:
  676.  
  677.       Welcome to <#nodeTitle>
  678.        Running ...
  679.  
  680.      However, nodeTitle may not necessarily be printed at this point,
  681.      because if a file named BANNER.BLB exists on your system in the right
  682.      place, it will be printed in place of the "Welcome to <nodeTitle>" part.
  683.      For more details, refer to Part 3 of this manual, on day to day operations
  684.      (when it comes into existence).  EXAMPLE:
  685.  
  686.      #nodeTitle "Test System\n Truly a Heaven in Reverse"
  687.  
  688.      The #nodeTitle is printed out on .Read Status commands, also.  There is no
  689.      formal limit on the length of this parameter, but you should definitely
  690.      use BANNER.BLB for long #nodeTitles, or to vary it easily.
  691.  
  692.      ------
  693.      #nodeName
  694.         nodeName is, in reality, purely a network parameter, and if you have no
  695.      plans to ever join a C86net, then there is no need to fill in this
  696.      parameter.  However, it has always been traditional, even before there was
  697.      a net for any Citadel system anywhere, to fill in this and the next
  698.      parameter (and, so, sentimentally we feel this belongs in this
  699.      Miscellaneous section).   nodeName is a string value which does NOT accept
  700.      formatting directives (i.e., formatting directives will be ignored).  It 
  701.      can be no longer than 19 letters long.  It should be a short, mnemonic
  702.      name for your system.  An EXAMPLE of a reasonable value:
  703.  
  704.      #nodeName "ODD-DATA"            -- The original Citadel
  705.  
  706.      If you ever do join a C86net, messages from your system appearing on
  707.      another Citadel-86 node of that net will look something like this
  708.  
  709.         82Nov23 from Cynbe ru Taren @ODD-DATA
  710.  
  711.      except that ODD-DATA would be replaced with your value for #nodeName.
  712.  
  713.  
  714.  
  715.  
  716.  
  717.  
  718.  
  719.  
  720.  
  721.  
  722.  
  723.  
  724.                                     -10-
  725.  
  726.  
  727.  
  728.  
  729.  
  730.  
  731.      ------
  732.      #nodeId
  733.         As mentioned, this parameter is a network parameter that has
  734.      traditionally always been set, even for non-network Citadels.  If you have
  735.      no plans to ever be on a C86net, then you don't have to set this string
  736.      value parameter to anything important.  If you do plan to join one,
  737.      though, (we'll go over this in more detail in the section on the network),
  738.      then you do have to set this parameter correctly.  The format of this
  739.      parameter is
  740.  
  741.           "<Country code><Area Code><Phone number>"
  742.  
  743.      all of which applies to the phone that your system resides on.  Country
  744.      code is a two letter sequence indicating what country you live in (US is
  745.      the United States, CA is Canada.  Other country codes may be found in
  746.      COUNTRY.DOC. see page xx). Area code is the area code of your system (yes,
  747.      we are aware that there is a clear bias towards US-style telephony).  And
  748.      Phone number is, of course, the phone number that your system is on.  You
  749.      can put punctuation (such as parenthesis and dashes), but please be
  750.      conservative with them.  This string value does not obey formatting
  751.      directives.  Here's a fairly generic example:
  752.  
  753.      #nodeId "US (612) 866 1804"          -- Some system somewhere
  754.  
  755.      Part 2 of Section 1: REQUIRED ODD STUFF
  756.  
  757.      ------
  758.      #baseRoom
  759.         OK, now we're out of the miscellanea and into parameters that you have
  760.      to set, starting with baseRoom.  Citadel-86 always has a minimum of three
  761.      rooms, the Aide> room for housekeeping, the Mail> room for private
  762.      correspondence, and the <baseRoom>, which is the room that a caller is
  763.      always initially placed in.  (Historical note: the old CP/M Citadel called
  764.      this room the Lobby>; we've only made the name of the Lobby> selectable by
  765.      the sysop.)  This parameter is a string value that obeys formatting
  766.      directives and goes through the Citadel-86 formatter, and you must limit
  767.      yourself to 19 characters or less for this value. And one more note --
  768.      Citadel-86 will append the '>' to this name when it prints the room prompt
  769.      for this room, you don't have to put it in yourself. If you wished to
  770.      emulate the old CP/M Citadel, you'd set baseRoom thus:
  771.  
  772.      #baseRoom "Lobby"
  773.  
  774.      There is no default for this parameter.
  775.  
  776.      ------
  777.      #MainFloor
  778.         MainFloor is analogous to #baseRoom.  Any Citadel-86 V3 has a base
  779.      floor, just as it has an Aide> room, etc.  This parameter allows you to
  780.      name this base floor.  This parameter is a string value which cannot be
  781.      longer than 19 characters, and specifies the name of your base floor.  So,
  782.      if you want to name your base floor MAIN FLOOR, you'd have
  783.  
  784.      #MainFloor "MAIN FLOOR"
  785.  
  786.      There is no default value for this parameter.
  787.  
  788.  
  789.  
  790.                                     -11-
  791.  
  792.  
  793.  
  794.  
  795.  
  796.  
  797.      ------
  798.      #CRYPTSEED
  799.         Citadel-86 automatically encrypts all sensitive data files.  While the
  800.      algorithm used can, of course, be broken by the determined, particularly
  801.      since the code is available for perusal, the encryption does provide
  802.      protection against casual eyes, mistakes, and amateur system breakers.  We
  803.      do encourage you to take precautions of your own, such as not opening
  804.      directory rooms that look at sensitive data.
  805.  
  806.         CRYPTSEED is an encryption seed that Citadel-86 uses to encrypt your
  807.      data; if someone should acquire of all of your data files but for
  808.      CTDLCNFG.SYS, then they still won't have access to your system until they
  809.      figure out what your CRYPTSEED is.  DON'T EVER CHANGE THIS VALUE WHILE
  810.      RUNNING A CITADEL-86, OR EVERYTHING WILL BECOME MESSED UP!
  811.  
  812.         We do not know of any value that you can select that will "deactivate"
  813.      the encryption process (to be frank, we don't understand the encryption
  814.      algorithm ourselves).  Pick a value at random; the value should be a
  815.      value less than 65536.  Here's an example:
  816.  
  817.      #CRYPTSEED    69            -- a little hubris for the shy
  818.  
  819.      Part 3 of Section 1: DATA FILE SIZES
  820.  
  821.      ------
  822.      #MESSAGEK
  823.         MESSAGEK defines how much disk space you wish to allocate for messages
  824.      on your installation.  There is no way to define how many messages you
  825.      want in your system, or how fast they turnover.  All the messages in your
  826.      system will reside in CTDLMSG.SYS, and thus the number of messages in your
  827.      system at any given moment will depend on the length of the messages being
  828.      entered into the system by your users.  The turnover rate of your messages
  829.      will depend on how busy your system is.  As an example, Test System has a
  830.      611K message base, which holds 2100 messages +/- 300, of which some are of
  831.      fairly good length.  Turnover seems to between 3 weeks and a month, since
  832.      80-160 messages are entered a day.  However, Test System is also a busy
  833.      system.
  834.  
  835.         The sysop of an installation should also keep in mind that very large
  836.      systems, with many new messages, can be intimidating to new users, so
  837.      large message spaces should be approached with caution.  Remember, there
  838.      is a utility for expanding the message base, but not for shrinking it.
  839.  
  840.         This is a numerical value which you specify in 'K', which is actually
  841.      1024 bytes/K.  So, for example, to specify a 250K message file
  842.  
  843.      #MESSAGEK 250               -- 250K message base
  844.  
  845.      ------
  846.      #MSG-SLOTS
  847.         This numerical parameter specifies how many messages per room will
  848.      be used on this system (the lone exception is the Mail>, which is covered
  849.      by the following parameter).  If you wanted to use Citadel-86's
  850.      traditional number of messages per room, you'd have
  851.  
  852.      #MSG-SLOTS 58
  853.  
  854.  
  855.  
  856.                                     -12-
  857.  
  858.  
  859.  
  860.  
  861.  
  862.  
  863.      ------
  864.      #MAIL-SLOTS
  865.         This is a numerical parameter specifying how many messages per log
  866.      record that you wish to reserve for Mail.  The Mail> room is the only
  867.      room in the system whose data is not kept in CTDLROOM.SYS.  Instead, the
  868.      file CTDLLOG.SYS contains the "Mail>" room, reserving for each account
  869.      enough room for MAIL-SLOTS Mail messages.  Therefore, this parameter gives
  870.      you the ability to decide the maximum number of Mail> messages per user 
  871.      that they can access.  Please remember that if a user gets more messages
  872.      in Mail> than there are MAIL-SLOTS between two successive logins, then
  873.      they will lose the earlier messages sent to them.  Another consideration
  874.      is that many users like to review old Mail when engaged in an in-depth
  875.      private conversation.  Therefore, setting MAIL-SLOTS to a low value may
  876.      not be the attractive alternative that it first seems.  However, it should
  877.      go without saying a high MAIL-SLOTS value may eat up more room than
  878.      necessary on your drives.  The section on LOGSIZE will give an exact
  879.      formula for how much space your log will take up.  If you wanted to use
  880.      what Citadel-86 used before V3, you'd have
  881.  
  882.      #MAIL-SLOTS 58
  883.  
  884.      ------
  885.      #MAXROOMS
  886.         This numerical parameter specifies the maximum number of rooms your
  887.      system will support.  Since the baseRoom, Aide>, and Mail> room are
  888.      necessary, the smallest value you can give is 3.  The largest number is
  889.      65536 (probably).  If you wanted to have a 64 room system, you'd have
  890.  
  891.      #MAXROOMS 64
  892.  
  893.         You can use the following formula to estimate the number of bytes a 
  894.      room file will take up on your system:
  895.  
  896.           # of bytes = MAXROOMS * (50 + (6 * MSG-SLOTS))
  897.  
  898.      ------
  899.      #LOGSIZE
  900.         This numerical parameter gives you, the sysop, the ability to decide
  901.      how many accounts will be available on your system.  If you run a system
  902.      in which more accounts are used than there are accounts reserved, then new
  903.      accounts are generated by killing old accounts.  The account that will be
  904.      replaced with the new account is that account which has not been used in 
  905.      the longest time (in other words, accounts that are not used will be the
  906.      first to be killed).
  907.  
  908.         All space is reserved immediately for these accounts.  The size of
  909.      this file can be estimated from the formula
  910.      
  911.           # of bytes = LOGSIZE * (82 + MAXROOMS + (6 * MAIL-SLOTS))
  912.  
  913.      so if you are operating in a restricted environment, plan accordingly.
  914.  
  915.         If you need to, you can expand the size of the log through the use of
  916.      the DATACHNG utility, but the log cannot be shrunk.  This is a numerical
  917.      value.  Here is an example:
  918.  
  919.      #LOGSIZE 180                -- Usually adequate.
  920.  
  921.  
  922.                                     -13-
  923.  
  924.  
  925.  
  926.  
  927.  
  928.  
  929.      Part 4 of Section 1: DATA FILE LOCATIONS
  930.  
  931.         Now we discuss where you want the data files to be located on your
  932.      system.  These parameters are all specified in the same way, as a string
  933.      value (which does not obey formatting directives, naturally) that tells
  934.      Citadel where on your system the given data file or files associated with
  935.      the given parameter is located.
  936.  
  937.         Simply use the MSDOS relative directory specification.  You can
  938.      ONLY specify a directory that is a subdirectory of the current directory
  939.      on the disk that you specify (if you don't specify a disk, then the
  940.      current disk will be assumed).  So, some sample valid specifications would
  941.      be "c:", "a:system", "b:msgs", and "i:bark".  Some sample INVALID
  942.      specifications include "c:\citadel\msgs" (that is an absolute
  943.      specification, rather than relative), "a:\audit" (ditto), and "i:.."
  944.      (".." is technically not a subdirectory, but a parent directory).
  945.  
  946.         If CONFG.EXE cannot find the directory that you specify, it will
  947.      attempt to create that directory, after asking permission.
  948.  
  949.      ------
  950.      HELPAREA
  951.         This parameter specifies where all of your Help files will be located.
  952.      These files are *.HLP, *.BLB, and *.MNU.  Normally, you should create this
  953.      directory and place the help files in the directory before bringing up
  954.      Citadel-86, since help files are usually online at all times.
  955.  
  956.      #HELPAREA "c:helps"         -- helps subdirectory on drive C:
  957.  
  958.      ------
  959.      LOGAREA
  960.         This parameter specifies the location of your CTDLLOG.SYS file (this 
  961.      file is sized by your LOGSIZE parameter).
  962.  
  963.      #LOGAREA "c:system"         -- put it in a general system dir
  964.  
  965.      ------
  966.      ROOMAREA
  967.         This parameter specifies the location of CTDLROOM.SYS, CTDLARCH.SYS,
  968.      and CTDLDIR.SYS.
  969.  
  970.      #ROOMAREA "system"          -- another general system dir
  971.  
  972.      ------
  973.      MSGAREA
  974.         This parameter specifies the location of CTDLMSG.SYS.
  975.  
  976.      #MSGAREA "c:msg"            -- give msgs there own place in the sun
  977.  
  978.      ------
  979.      FLOORAREA
  980.         This parameter specifies the location of CTDLFLR.SYS.
  981.  
  982.      #FLOORAREA "floors"
  983.  
  984.  
  985.  
  986.  
  987.  
  988.                                     -14-
  989.  
  990.  
  991.  
  992.  
  993.  
  994.  
  995.      Part 5 of Section 1: POLICY OPTIONS
  996.  
  997.         Now we enter the POLICY part of the CTDLCNFG.SYS file.  The parameters
  998.      discussed here represent the parts of your policy that can be enforced via
  999.      the Citadel-86 software.
  1000.  
  1001.      ------
  1002.      #AIDESEEALL
  1003.         This parameter is a toggle that gives you some power over the scope of
  1004.      your aides' "vision".  If you set this parameter to 1, then your aides
  1005.      have access to all public AND private rooms (but not invite rooms, unless
  1006.      the have been invited).  If this parameter is set to 0, then aides only
  1007.      have access to public rooms, plus those private and invite rooms that
  1008.      they've been invited to.  So, if you want your aides to see all public and
  1009.      private rooms, you would have
  1010.  
  1011.      #AIDESEEALL 1               -- See all but invite rooms
  1012.  
  1013.      if you don't want your aides to be so nosy, then you'd have
  1014.  
  1015.      #AIDESEEALL 0               -- See only public rooms.
  1016.  
  1017.      ------
  1018.      #LOGINOK
  1019.         The LOGINOK parameter controls whether your system is an "open" or
  1020.      "closed" system.  If you set LOGINOK to 1, the system will allow anyone to
  1021.      log in as a "new" user; that is, it will ask a caller who uses an
  1022.      unrecognized password if they wish to login as a new user.  If LOGINOK is
  1023.      set to 0, the system will simply tell the caller without a valid password
  1024.      that there is no record of that password, and that they should leave
  1025.      Mail> to the sysop; the only way to enter new users into the system is
  1026.      from the system console. If you want an open system, for example, you
  1027.      would have
  1028.  
  1029.      #LOGINOK 1                  -- let the riff-raff in!
  1030.  
  1031.      ------
  1032.      #ENTEROK
  1033.         ENTEROK controls whether a caller who is not logged in can enter
  1034.      messages or not.  If ENTEROK is 1, then a caller who has not logged in
  1035.      can enter messages; if it is 0, then they must log in first, except for
  1036.      Mail to the sysop.  Setting ENTEROK to 0 can reduce vandalism; setting
  1037.      it to 1 gives your callers the privilege of anonymity.
  1038.  
  1039.      #ENTEROK  0                 -- log in first, folks!
  1040.  
  1041.      ------
  1042.      #READOK
  1043.         READOK controls whether an unlogged caller can read messages.  If
  1044.      READOK is 1, then they may.  If READOK is 0, then an unlogged caller can
  1045.      only read the policy statement available in the Mail> room (POLICY.HLP),
  1046.      and the help files.  Setting READOK to 0 can discourage unwelcome callers
  1047.      from using scarce system time.
  1048.  
  1049.      #READOK 0                   -- gotta login to read these gems...
  1050.  
  1051.  
  1052.  
  1053.  
  1054.                                     -15-
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.  
  1061.      ------
  1062.      #ROOMOK
  1063.         ROOMOK controls who can create new rooms on your system.  If ROOMOK is
  1064.      1, then any logged in user of the system may create new rooms.  If ROOMOK
  1065.      is 0, then only aides may create new rooms on your system.
  1066.  
  1067.      #ROOMOK 1                   -- a liberal policy
  1068.  
  1069.      ------
  1070.      #ALLMAIL
  1071.         ALLMAIL controls who can use the Mail> room.  If ALLMAIL is 1, then
  1072.      any user may use Mail> to send private messages to any other user on the
  1073.      system.  If ALLMAIL is 0, then only Aides may use the Mail> room in a
  1074.      general manner; regular folk can only use Mail> for messages to Sysop.
  1075.      Setting ALLMAIL to 0 may be appropriate on tightly focused systems
  1076.      operating in a small environment.
  1077.  
  1078.      #ALLMAIL 1                  -- the normal policy
  1079.  
  1080.  
  1081.      Part 6 of Section 1: MODEM HANDLING
  1082.         We now enter into defining the essential details of your communications
  1083.      hardware.
  1084.  
  1085.      ------
  1086.      #IBM
  1087.         You use this parameter to tell your Citadel-86 if your system is
  1088.      running on an IBM PC/XT/AT or compatible, or if it is running on a Zenith
  1089.      Z-100 (set it at 0). If you have an IBM, you'd have
  1090.  
  1091.      #IBM 1                      -- Big Boo
  1092.  
  1093.      ------
  1094.      #COM
  1095.         This parameter is meaningful only for IBMs, and selects which COM port
  1096.      the modem is attached to (on Z-100s only J2 ports are supported).  For
  1097.      IBMs, only COM ports 1 and 2 are supported.
  1098.  
  1099.      #COM 1                      -- If you are using COM1.
  1100.  
  1101.      ------
  1102.      #SYSBAUD
  1103.         The SYSBAUD parameter is used to tell Citadel-86 what baud rates your
  1104.      hardware will support.  Citadel-86 cannot normally be configured to run
  1105.      high baud rates while excluding lower baud rates (i.e., operate
  1106.      correctly at 1200 baud but not at 300 baud).  A value of 0 indicates that
  1107.      the system is a 300 baud system, 1 indicates 300/1200, 2 indicates
  1108.      300/1200/2400, 3 indicates 3/12/24/48, and 4 indicates 3/12/24/48/96.
  1109.  
  1110.      #SYSBAUD 1                  -- A 3/12 system.
  1111.  
  1112.      ------
  1113.      #SEARCHBAUD
  1114.         IF YOU ARE A NOVICE, WE SUGGEST SETTING THIS PARAMETER TO 1, EVEN IF
  1115.      YOU DO HAVE AN INTERNAL HAYES MODEM.  ONLY PLAY WITH THE SEARCHBAUD
  1116.      PARAMETER AFTER YOU HAVE A CITADEL-86 INSTALLATION THAT WORKS CORRECTLY.
  1117.  
  1118.  
  1119.  
  1120.                                     -16-
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126.  
  1127.         The SEARCHBAUD parameter is used to tell Citadel-86 how to find the
  1128.      baud rate of the caller.  If the value of this parameter is 1, then
  1129.      Citadel-86 will search for the correct baud rate by switching through each
  1130.      of the valid baud rates for this installation, searching for a half second
  1131.      at each baud rate for a carriage return from the caller.  If the value
  1132.      of this parameter is 0, then Citadel-86 assumes that you have a
  1133.      failure-proof method of detecting the baud rate of the caller, and will
  1134.      execute the interpreter routine CHECKBAUD to find it.  If you check the
  1135.      advanced section on interpreter routines, you'll notice that CHECKBAUD is
  1136.      set up to handle a Hayes/compatible 1200 baud internal modem on an IBM,
  1137.      by checking the modem's high speed pin. This is the only way which we are
  1138.      aware of for infallibly detecting the baud rate of the modem; Hayes result
  1139.      codes are NOT a guaranteed method, although we detail support for Hayes
  1140.      result codes later in this manual.
  1141.  
  1142.      #SEARCHBAUD 1               -- Normal setting
  1143.  
  1144.      ------
  1145.      #modemSetup
  1146.         This parameter is used to initialize your modem.  It is a string value
  1147.      parameter that obeys the formatting directives; however, you should be
  1148.      warned that Citadel-86 automatically appends a "\r" to the end of this
  1149.      string before sending it to the modem.
  1150.                                                          
  1151.         And when is modemSetup sent to the modem?  It is automatically sent
  1152.      twice while Citadel-86 is initializing, and it will also be automatically
  1153.      sent to the modem whenever the <R>einitialize command is selected from the
  1154.      Sysop Menu (i.e. privileged function:).
  1155.  
  1156.         The value that you use for this string should cause the modem to be
  1157.      put into a mode where it will function suitably with Citadel-86.  This
  1158.      includes auto-answer and response to DTR, at the very least.  Other
  1159.      options that you may wish to consider include turning the modem speaker
  1160.      off (if you have one); consult your modem manual for details.  The example
  1161.      we have here is biased towards Hayes/compatible modems.  You may have to
  1162.      do some research if you're using an odd modem.  Our example turns
  1163.      auto-answer on and turns off the speaker on a Hayes modem; note the lack
  1164.      of "\r".
  1165.  
  1166.      #modemSetup "AT S0=1 M0"           -- Surely an exercise in aesthetics...
  1167.  
  1168.      ------
  1169.         If you are a novice setting up Citadel-86 for the first time, please 
  1170.      SKIP to Section II.6.  This is the end of Section 1 of CTDLCNFG.SYS,
  1171.      parameters that must be set for Citadel-86 to run correctly.  The other
  1172.      three sections of a virgin copy of CTDLCNFG.SYS (which we assume you are
  1173.      working with) have been given default values that shouldn't cause any
  1174.      problems with running a Citadel-86.
  1175.  
  1176.         If, on the other hand, you're just exploring what's available, continue
  1177.      on your merry way!
  1178.  
  1179.  
  1180.  
  1181.  
  1182.  
  1183.  
  1184.  
  1185.  
  1186.                                     -17-
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192.  
  1193.      II.5.c Section 2 of CTDLCNFG.SYS
  1194.  
  1195.         Now we enter into the realm of options that may prove useful to you in
  1196.      your particular environment, but which are not necessary for the correct
  1197.      operation of a Citadel-86.  We're going to begin by discussing a general
  1198.      time-driven event-handler facility.  Then we'll talk about some other
  1199.      miscellaneous parameters.
  1200.  
  1201.      ------
  1202.      #event ...
  1203.         This is what we're calling a "time-driven event-handler", which we're
  1204.      going to define as the ability to cause Citadel-86 to do certain things
  1205.      at times that you specify.  So, for instance, you can have the system
  1206.      come down at certain times of the day to back itself up, or have it go
  1207.      into networking mode several times a week -- or several times a day.  Or
  1208.      do whatever your imagination suggests.  Any number of these #event
  1209.      parameters may appear in your CTDLCNFG.SYS file.
  1210.  
  1211.         This is the generic format of these parameters.
  1212.  
  1213.      #event <days> <time> <class> <type> <duration> <warning string> <depends>
  1214.  
  1215.         Here is an explanation of each parameter field in the above.
  1216.  
  1217.      <days> can be any of the values "Mon", "Tue", "Wed", "Thu", "Fri", "Sat",
  1218.      "Sun", or "All", or any combination of the first seven.  If used in
  1219.      combination, separate each with a ',', but NO spaces are allowed.  This
  1220.      part of #event is used to specify on what days this event is to take
  1221.      place.  So, if you want something to happen only on Wednesdays and
  1222.      Saturdays, then you'd have
  1223.  
  1224.      #event Wed,Sat ....
  1225.  
  1226.      The 'All' value means, of course, all days of the week.
  1227.  
  1228.      <time> is the military specification of what time of day this event is
  1229.      supposed to happen (unless the class of this event is 'relative' -- see
  1230.      below).  For instance, 11 AM would be
  1231.  
  1232.      #event .... 11:00 ....
  1233.  
  1234.      while 11 PM would be
  1235.  
  1236.      #event .... 23:00 ....
  1237.  
  1238.      and 12:30 AM would be
  1239.  
  1240.      #event .... 00:30 ....
  1241.  
  1242.      Only one time can be specified in this field.  If you need the same event
  1243.      to happen at multiple times, then use separate #event entries.
  1244.  
  1245.      <class> indicates the class of the event, which is roughly what kind of
  1246.      event it will be.  C-86 supports four classes of events at this time:
  1247.  
  1248.  
  1249.  
  1250.  
  1251.  
  1252.                                     -18-
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.  
  1259.      'network' -- this indicates that Citadel-86 should drop into networking
  1260.      mode on the day(s) at the time indicated by the <days> and <time> fields.
  1261.  
  1262.      'external' -- this indicates that Citadel-86 should come down on the
  1263.      day(s) at the time specified by the <days> and <time> fields.  The
  1264.      ERRORLEVEL that Citadel-86 should generate when it comes down will be
  1265.      discussed later in the subsection on the <depends> field.  This class
  1266.      should be used in conjunction with a carefully written batch file.
  1267.  
  1268.      'relative' -- this indicates that Citadel-86 should come down X minutes
  1269.      after it has come up (this is used to replace the TIMEOUT and HOUROUT
  1270.      parameters).
  1271.  
  1272.      The number of minutes should be expressed in the <time> field; the <days>
  1273.      field has no meaning (although it should be filled in) when class is
  1274.      'relative'.  The ERRORLEVEL to be generated by Citadel-86 when it comes
  1275.      down will be discussed later, but for now we'll state that it occupies the
  1276.      <depends> field.  For instance, if you want your system to come down 6
  1277.      hours after it comes up, do something, and then come back up (at which
  1278.      point you should realize it'll come back down again 6 hours after that,
  1279.      unless another event comes first), you would have an event like:
  1280.  
  1281.      #event Sat 6:00 relative .... 7
  1282.  
  1283.      in your CTDLCNFG.SYS (note that Sat is meaningless, but some valid field
  1284.      has to be there), and your batch file would have something like this:
  1285.  
  1286.      :loop
  1287.      ctdl
  1288.      ...
  1289.      if ERRORLEVEL 7 goto doseven
  1290.      ...
  1291.      :doseven
  1292.      REM this is a generic program call, fill in with what you'd really do
  1293.      generic
  1294.      REM other things..
  1295.      ....
  1296.      REM now bring Citadel-86 back up
  1297.      goto loop
  1298.      ....
  1299.  
  1300.      'dl-time' -- This indicates that a "download time limit" should be
  1301.      activated.  This was a recent addition to the #event handler, and is thus
  1302.      a patch rather than a full-scale addition; to truly implement a download
  1303.      time limit would probably require a Major Release.  When this class of
  1304.      event is active, the total amount of time a user may use in downloads
  1305.      during a session is limited by the value in the <depends> field, which
  1306.      is designated in MINUTES.  This class value should only be used with the
  1307.      'quiet' type (see below).  When this event ends, download time limits
  1308.      return to an unlimited status automatically.
  1309.  
  1310.      <type> defines what type of event this will be, which essentially means
  1311.      how Citadel-86 reacts when the event time comes around.  There are two
  1312.      types of events supported at this time:
  1313.  
  1314.  
  1315.  
  1316.  
  1317.  
  1318.                                     -19-
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324.  
  1325.      'preempt' -- this indicates that when it's time for this event to occur,
  1326.      the current user (if one is on) will be kicked off the system.  A warning
  1327.      will be issued to the user 5 minutes before the event is to occur (or if
  1328.      they call in after the 5 minute mark has passed, they will get the warning
  1329.      immediately). This type should be used for events that MUST occur at a
  1330.      given time, such as networking.
  1331.  
  1332.      'non-preempt' -- this indicates that the system is willing to wait until
  1333.      the current user is off the system before executing the current event.  If
  1334.      the time of the event is passed by, the event will still be executed when
  1335.      the caller logs off.
  1336.  
  1337.      'quiet' -- this indicates that the event should occur with no notice given
  1338.      to the user.  Currently, this only makes sense with the 'dl-time' 
  1339.      parameter, since there is no need to bring the system down or drop into
  1340.      network mode to change the dl-time limit.
  1341.  
  1342.  
  1343.  
  1344.      <duration> defines how long the event will last, in minutes.  If duration
  1345.      is 0, then if you happen to bring the system up at the exact time that the
  1346.      event is to take place, the event WON'T take place; for all other values
  1347.      of duration, the event will take place. Duration should probably be 0 for
  1348.      external events that you only want to happen once, happen quickly, and
  1349.      bring the system right back up, such as a backup event in which your BAT
  1350.      file backs up the system and then brings it back up.  This can go so fast
  1351.      that your system will be back up in less than 1 minute, so you don't* want
  1352.      duration set to 1 -- you want it at 0, otherwise the event could be
  1353.      executed more than once.  However, for network events you certainly want
  1354.      it set correctly.  A 45 minute network event would look like this:
  1355.  
  1356.      #event ... ... network preempt 45 ....
  1357.  
  1358.      <warning string> is only valid for 'preempt' events.  It is sent to the
  1359.      user for the warning and for the "you've been kicked off" messages.  It
  1360.      should be enclosed in quotes.  Here's what the messages look like:
  1361.  
  1362.      "<beep>WARNING: System going down at <time> for <warning string>."
  1363.  
  1364.      "<beep>Going to <warning string>, bye!"
  1365.  
  1366.      So, for networking,
  1367.  
  1368.      #event .... "networking" ...
  1369.  
  1370.      works just fine.
  1371.  
  1372.  
  1373.  
  1374.  
  1375.  
  1376.  
  1377.  
  1378.  
  1379.  
  1380.  
  1381.  
  1382.  
  1383.  
  1384.                                     -20-
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390.  
  1391.      <depends> is a parameter whose meaning depends on the class of the event.
  1392.      If the class of the event is 'external' or 'relative', then this value is
  1393.      the ERRORLEVEL that Citadel-86 is supposed to generate as it comes down,
  1394.      and should be used in BAT files for further processing.  The upper
  1395.      effective limit on this parameter is whatever MSDOS allows in BAT files,
  1396.      we think.  Before leaping into this, however, please review the section
  1397.      on BAT files in this Installation Manual, paying particular attention to
  1398.      already-reserved ERRORLEVELS.
  1399.  
  1400.      If the class of this event is 'network', then <depends> specifies what
  1401.      net(s) this network event is going to participate in.  While we are not
  1402.      going to discuss in detail what Citadel-86's "multinet" capability is,
  1403.      here is a summary: Citadel-86 supports handling multiple C86nets.  Each
  1404.      network is identified by a number; all of the nodes in your system can
  1405.      be associated with 0 or more of these nets.  Thus, using the <depends>
  1406.      field can allow you to network with certain systems at one time and/or
  1407.      day, and other systems on other times and/or days. The <depends> field
  1408.      must have at least one of the nets identified here, and may have more
  1409.      if a particular network session is servicing more than one network at
  1410.      a time.  If more than one net is to be serviced, place a comma, and ONLY
  1411.      a comma, between each net identifier. So, if you wanted to specify
  1412.      nets 1, 6, and 14, you'd have
  1413.  
  1414.      #event .... 1,6,14
  1415.  
  1416.      If the class of the event is 'dl-time', then the depends field specifies
  1417.      the maximum number of minutes that may be spent in downloading during
  1418.      a single login while this event is in effect.
  1419.  
  1420.          And that's it for the #event parameter(s).  We hope our explanation
  1421.      is understandable; we sure had a hard enough time writing it!
  1422.  
  1423.      ------
  1424.      #sysPassword
  1425.         This parameter gives you access to the Remote Sysop capabilities of
  1426.      Citadel-86.
  1427.  
  1428.         A "Remote Sysop" is an Aide, not at the System Console, who knows
  1429.      the Remote Sysop Password.  A Remote Sysop's capabilities include complete
  1430.      access to the Sysop Menu (yes, including such silly things as changing
  1431.      the Baud Rate -- See Section X) and when editing rooms the Remote Sysop
  1432.      can do what a normal Sysop can do.  A Remote Sysop gains access to the
  1433.      Sysop capabilities in exactly the same way as a normal Sysop does, by
  1434.      sending a ^L to the system -- but a Remote Sysop has to supply a password.
  1435.  
  1436.         This parameter, a string value that does not obey formatting
  1437.      directives, does NOT (repeat NOT!) specify the Remote Sysop Password.
  1438.      Rather, it specifies the NAME of a file that contains, on one line, the
  1439.      Remote Sysop Password (this allows you to hide your Remote Sysop Password
  1440.      somewhere on your system).  This filename may specify any file anywhere
  1441.      on your system, including different drives and subdirectories.
  1442.  
  1443.         The password itself must be at least 15 letters long, and is, unlike
  1444.      most passwords, case-sensitive.  WARNING: If you change the password
  1445.      in the file, you must run CONFG again (CONFG ONLYPARAMS -- see the Section
  1446.      on Command Line parameters).
  1447.  
  1448.  
  1449.  
  1450.                                     -21-
  1451.  
  1452.  
  1453.  
  1454.  
  1455.  
  1456.  
  1457.         If this parameter is not specified, or the file is not found, then the
  1458.      Remote Sysop facility is not active.
  1459.  
  1460.         We really don't recommend you use this facility, due to the abuse
  1461.      possible if some juvenile delinquent breaks two passwords.  However, if
  1462.      you insist on using this facility, and placed your password in a file in
  1463.      a directory on drive G, in a file named PWD in a directory on the root
  1464.      called HIDING, you'd have the following in your CTDLCNFG.SYS file.
  1465.  
  1466.      #sysPassword "g:\hiding\pwd"       -- Note the lack of '\\' sequences
  1467.  
  1468.  
  1469.      ------
  1470.      #CALLAREA
  1471.         This parameter is just like the MSGAREA, et al.  It is a string value
  1472.      parameter that specifies a drive and directory which will hold an audit
  1473.      file.  If this parameter is not present in your CTDLCNFG.SYS file, then
  1474.      the audit file will not be created or updated by Citadel-86.
  1475.  
  1476.         The audit file is known as CALLLOG.SYS.  It is a simple ASCII text file
  1477.      that contains notes regarding system usage.  There are only two types of
  1478.      notes.  The first lists when the system has come up and down.
  1479.  
  1480.         The second type records who has called, listing login and logout times,
  1481.      one line per person, in the following format:
  1482.  
  1483.      <person>   :   <login time> - <logout time> <baud rate>
  1484.  
  1485.         Occasionally such a line will have an extra character appended onto it,
  1486.      and they have the following significance.
  1487.  
  1488.         '+'  Means that this user logged in as new.
  1489.         '-'  Means that this user used .TS to logout.
  1490.         'T'  Means that this user timed out on the system.
  1491.         'E'  Means that this user hit the error limit on the system and was
  1492.              kicked off.
  1493.  
  1494.         If you want to have a call log, you would have something like this in
  1495.      your CTDLCNFG.SYS file:
  1496.  
  1497.      #CALLAREA "c:audit"         -- This can only be a subdirectory
  1498.  
  1499.      ------
  1500.      #MIRRORMSG
  1501.         The structure of Citadel-86's message base causes frequent disk access.
  1502.      While this is not particularly deleterious for a hard disk, this kind of
  1503.      activity has been known to actually destroy floppy drives. Therefore, it
  1504.      makes sense to put the message base into a RAM drive. However, this leaves
  1505.      systems vulnerable to message base loss due to power failure. Because of
  1506.      this, Citadel-86 has the ability to support two identical message bases at
  1507.      once.
  1508.  
  1509.  
  1510.  
  1511.  
  1512.  
  1513.  
  1514.  
  1515.  
  1516.                                     -22-
  1517.  
  1518.  
  1519.  
  1520.  
  1521.  
  1522.  
  1523.         The first message base functions as the primary; messages are written
  1524.      to and read from this base. This message base is specified by the MSGAREA
  1525.      parameter.  The second message base, however, is subject only to writing,
  1526.      thus saving wear and tear on the media involved.  Since the primary
  1527.      message base (the one that is both written to and read from) is subject
  1528.      to a lot of wear and tear, this message base should be placed in a RAM
  1529.      disk. The MSGAREA parameter mentioned earlier specifies the area for the
  1530.      primary message base.  It is your responsibility to make sure that a copy
  1531.      of CTDLMSG.SYS is in the RAM disk when you bring Citadel-86 up; Citadel-86
  1532.      will not do that for you.
  1533.  
  1534.         The secondary message base, since it is only written to, should reside
  1535.      on permanent media, such as a floppy.  The parameter MSG2AREA, a string
  1536.      value that does not respond to formatting directives, specifies the area
  1537.      where the secondary message base should reside.  Since both message bases
  1538.      are written to simultaneously, they should remain identical.
  1539.  
  1540.         If you wish to use this option, MIRRORMSG should be set to 1;
  1541.      otherwise, it should be set to 0.  If MIRRORMSG is set to 1, then MSG2AREA
  1542.      should specify where the secondary message base should reside.  For
  1543.      instance
  1544.  
  1545.      #MIRRORMSG 1                -- yeah, why not?
  1546.      #MSG2AREA "b:msg"           -- on floppy, of course
  1547.  
  1548.      ------
  1549.      #RESULT-300
  1550.      #RESULT-1200
  1551.      #RESULT-2400
  1552.      #RESULT-4800
  1553.      #RESULT-9600
  1554.      #RING
  1555.  
  1556.         Citadel-86 has the ability to read the result codes from Hayes modems
  1557.      and determine the baud connection of the modem from them.  This currently
  1558.      only works with the PCompatibles; the Zenith Z-100s are not yet capable
  1559.      of this.
  1560.  
  1561.         The #RESULT-xxxx parameters and the #RING parameter are string values
  1562.      which should contain the result codes your modem will return for the 
  1563.      respective connections, while #RING is the result code for a RING.
  1564.      Consult your modem for the exact values, since they vary from modem to
  1565.      modem.  You are also responsible for using the #modemSetup parameter to
  1566.      initialize your modem correctly for returning result codes.
  1567.  
  1568.         When Citadel-86 is trying to use result codes to detect the baud rate
  1569.      of a caller, it proceeds by scanning the input for a C/R.  Once one is
  1570.      found, then the characters accumulated before the C/R are compared to your
  1571.      #RING value.  If they are identical, then all the characters are thrown
  1572.      away and Citadel-86 looks for more result codes.  If #RING did not match,
  1573.      then the system will scan the various #RESULT-xxxx values that you 
  1574.      specified, again looking for a match.  If one is found, then the
  1575.      respective baud rate is set and the system proceeds with login.  If a
  1576.      match is not found, then the system begins scanning for user-sent C/Rs in
  1577.      an attempt to find the baud rate.
  1578.  
  1579.  
  1580.  
  1581.  
  1582.                                     -23-
  1583.  
  1584.  
  1585.  
  1586.  
  1587.  
  1588.  
  1589.         You do not need to specify values for baud rates your modem doesn't
  1590.      support, and we recommend that you do not.
  1591.  
  1592.         If you have your SEARCHBAUD parameter set to 0, then you should NOT use
  1593.      this option.
  1594.  
  1595.         Here is an example for a MultiTech MT224.
  1596.  
  1597.      #RESULT-300 "1"
  1598.      #RESULT-1200 "5"
  1599.      #RESULT-2400 "9"
  1600.      #RING "2"
  1601.  
  1602.      ------
  1603.      #HOLDAREA
  1604.         Citadel-86 has the optional capability to save messages that are
  1605.      inadvertently interrupted during composition by users for later
  1606.      completion.  The reason we say "optional" is that the method used to
  1607.      save such messages is to save them as files on disk, and in a restricted
  1608.      environment such an ability may not be desirable. Thus, this feature is
  1609.      only available on systems in which #HOLDAREA is defined.  #HOLDAREA is
  1610.      another directory specification, exactly like those of Section 1 of
  1611.      CTDLCNFG.SYS.  All messages that are interrupted will be stored there
  1612.      until the next time the user logs in.  These files are currently 7706
  1613.      bytes long.
  1614.  
  1615.      #HOLDAREA "hold"
  1616.  
  1617.      ------
  1618.      #sysopName
  1619.         This parameter is used to tell your system who the sysop is.  The only
  1620.      real effect of this parameter is that all Mail> to sysop is automatically
  1621.      routed to the account that you specify in this parameter's string value.
  1622.      (This will also affect net Mail> to sysop.)  If you're not using this
  1623.      parameter, or the account does not exist, then Mail> to sysop will end up
  1624.      in the Aide> room.
  1625.  
  1626.      #sysopName "Me!"
  1627.  
  1628.      ------
  1629.  
  1630.      II.5.d Section 3 of CTDLCNFG.SYS
  1631.  
  1632.         This section covers the parameters of CTDLCNFG.SYS that are concerned
  1633.      with the Citadel-86 networker.  We have no intention of covering the
  1634.      network itself with this section; we tried to cover that in NETWORK.DOC.
  1635.  
  1636.      ------
  1637.      #NETWORK
  1638.         This parameter controls whether or not you're in the network at all.
  1639.      Set it to 1, and you are.  If it is set to 0, then you are not (initial
  1640.      setting for our virgin copy).  If you are planning to participate in the
  1641.      network, then please be sure that you understand the section on the
  1642.      #event parameter, because that is what you use to tell your system when
  1643.      to communicate with other systems on the networks.
  1644.  
  1645.      #NETWORK 1                  -- This system participates.
  1646.  
  1647.  
  1648.                                     -24-
  1649.  
  1650.  
  1651.  
  1652.  
  1653.  
  1654.  
  1655.      ------
  1656.      #LONG-HAUL
  1657.         This parameter controls whether or not you'll ever call any systems
  1658.      that are long distance from you.  If 1, then you will (if you have any on
  1659.      your list, natch); if 0, then you won't.  Naturally, if you never have
  1660.      any systems that are long distance from you in your node list, your system
  1661.      will never call long distance.
  1662.  
  1663.      #LONG-HAUL 1                -- Sure, what da heck
  1664.  
  1665.      ------
  1666.      #NewNetPrivs
  1667.         This numerical parameter let's you decide if new users should 
  1668.      automatically have net privileges or not.  If 1, then they do; 0, they
  1669.      don't.
  1670.  
  1671.      #NewNetPrivs 0                     -- let's be paranoid!
  1672.  
  1673.      ------
  1674.      #NETAREA
  1675.         This string parameter specifies where all the net files will be located
  1676.      on your system.  The "net files" are CTDLNET.SYS and various temporary
  1677.      files that have the suffixes ML, RFL, and SFL.  NETAREA is just like
  1678.      LOGAREA, MSGAREA, etc., specifying drivename, if necessary, and only a
  1679.      subdirectory of the current directory of the relevant drive.
  1680.  
  1681.      #NETAREA "netstuff"         -- let's put it in a directory called
  1682.                                  -- netstuff.
  1683.  
  1684.      ------
  1685.      #SHARED-ROOMS
  1686.         This numeric parameter reserves room in each node record for the number
  1687.      of shared rooms you think you'd like to share.  Each takes up 6 bytes, so
  1688.      plan according in view of the number of nodes you'll have on your node
  1689.      list and the number of rooms you might want to share with other systems.
  1690.  
  1691.      #SHARED-ROOMS 4            -- conservative
  1692.  
  1693.      ------
  1694.      #NET-ARCH-ROOMS
  1695.         This numeric parameter reserves room in each node record for the number
  1696.      rooms that you think you'd like to archive via the network.  Each takes up
  1697.      6 bytes, so once again plan accordingly.
  1698.  
  1699.      #NET-ARCH-ROOMS 2          -- it's an odd capability
  1700.  
  1701.  
  1702.  
  1703.  
  1704.  
  1705.  
  1706.  
  1707.  
  1708.  
  1709.  
  1710.  
  1711.  
  1712.  
  1713.  
  1714.                                     -25-
  1715.  
  1716.  
  1717.  
  1718.  
  1719.  
  1720.  
  1721.      ------
  1722.      #NET_RECEPT_AREA
  1723.         This parameter specifies a directory on your system that will contain
  1724.      all files that are sent to your system by some other system during
  1725.      networking, using the Send File facility (this is not the same as
  1726.      requesting files over the network).  NET_RECEPT_AREA is a string value
  1727.      that does not obey string formatting directives, of course, and it may
  1728.      specify any directory on your system, not just a subdirectory to your
  1729.      current directory.  So, supposing you wanted to specify
  1730.      C:\CITADEL\HOLDING as the directory for incoming files from the net,
  1731.      you'd have in your CTDLCNFG.SYS
  1732.  
  1733.      #NET_RECEPT_AREA "c:\CITADEL\HOLDING" -- that directory
  1734.  
  1735.      ------
  1736.      #NET_AREA_SIZE
  1737.      #MAX_NET_FILE
  1738.         These two parameters allow you to control how much space you wish to
  1739.      devote to files coming into your system from the net via the Send File
  1740.      command (i.e., other systems sending you files without you asking).
  1741.  
  1742.         NET_AREA_SIZE allows you to tell Citadel-86 how much space to devote to
  1743.      the directory specified in NET_RECEPT_AREA.  When a system attempts to
  1744.      send you a file, Citadel-86 will get the size of the file, and then check 
  1745.      to see how much space is already being taken up by files in
  1746.      NET_RECEPT_AREA.  If the difference of NET_AREA_SIZE and the files already
  1747.      in NET_RECEPT_AREA is less than the size of the incoming file, then your
  1748.      system will not accept the file that is being sent to you.
  1749.  
  1750.         MAX_NET_FILE allows you to control how big a file you will ever accept.
  1751.      If the size of the file being sent to you exceeds the value you specify
  1752.      here, then your system will not accept the file being sent.
  1753.  
  1754.         Both of these values are in terms of K.  So, for instance, if you only
  1755.      wanted to allow files of up 24K into your system, and only wished to
  1756.      devote up to 44K to NET_RECEPT_AREA, you'd have:
  1757.  
  1758.      #NET_AREA_SIZE 24
  1759.      #MAX_NET_FILE  44
  1760.  
  1761.      ------
  1762.      #callOutPrefix
  1763.      #callOutSuffix
  1764.         These two parameters control modem dialing during networking.  These
  1765.      are both string value parameters that will obey formatting directives, and
  1766.      should be used to convey commands to the modem.  When dialing, Citadel-86
  1767.      constructs a phone number to send to the phone company, and sends the
  1768.      following to your modem:
  1769.  
  1770.       <callOutPrefix><phone#><callOutSuffix>
  1771.  
  1772.      callOutPrefix should alert the modem to dial, while callOutSuffix should
  1773.      do anything necessary to finish the dialing sequence (usually, just send
  1774.      a C/R to the modem).
  1775.  
  1776.  
  1777.  
  1778.  
  1779.  
  1780.                                     -26-
  1781.  
  1782.  
  1783.  
  1784.  
  1785.  
  1786.  
  1787.         If you have a Hayes modem, we recommend you use the following values
  1788.      for these two parameters.
  1789.  
  1790.      #callOutPrefix "ATDT"            -- Tells a Hayes modem to dial out using
  1791.                                       -- touch tones
  1792.      #callOutSuffix "\r"              -- puts a carriage return at the end
  1793.  
  1794.  
  1795.      II.6 The Big Step -- Your first experience with CONFG
  1796.         You should have a complete, if only minimally, CTDLCNFG.SYS on your
  1797.      disk now (you DID save that file to disk when you were finished, didn't
  1798.      you?), so now it's time to process it into something that CTDL.EXE finds
  1799.      palatable.
  1800.  
  1801.         You do this with CONFG.EXE.  First, make sure that CTDLCNFG.SYS is
  1802.      located on your default disk; if you are running on a floppy-only system
  1803.      make sure that you have the correct floppies in the drives.
  1804.  
  1805.         Run CONFG.  It will come up with some sort of identification banner,
  1806.      and then begin processing your CTDLCNFG.SYS.  Normally, it will echo each
  1807.      parameter as it processes it.  If it runs into a parameter that it doesn't
  1808.      recognize, or a parameter value that may be out of range, it will come to
  1809.      a stop and tell you about it (or at least it should).  Make note of the 
  1810.      problem and edit your CTDLCNFG.SYS accordingly.  If it seems critical, or
  1811.      you don't understand what's wrong, review this manual, and if that
  1812.      doesn't help, some active research (local Citadel-86 sysops, etc.) may
  1813.      be called for.  (Good luck.)
  1814.  
  1815.         Once you get past this step, CONFG will grumble with the disk for a
  1816.      moment (or two on a floppy system), and then ask you some questions.
  1817.      This first set of questions depends on whether you created the system
  1818.      directories (assuming that you specified that at least some of the
  1819.      system files belong in their own directories) or not.  If you didn't,
  1820.      CONFG will ask you if it may create the directories needed for the
  1821.      system files; this gives you a chance to make sure you didn't screw
  1822.      something up.  If you didn't, then answer 'Y' (or 'y') for each question
  1823.      regarding directories.
  1824.  
  1825.         Once CONFG has decided that the directories are setup correctly, it
  1826.      will try to open your system files (i.e., the message file, the log file,
  1827.      etc.), and since this is the first time you've run CONFG, it won't find
  1828.      them, and therefore it will complain about this, and tell you that it is
  1829.      creating each of them.
  1830.  
  1831.         This is the first and last time you should ever have to see the
  1832.      questions about the directories, or the messages about missing system
  1833.      files.  If you do ever see them again, and don't know why, you may have
  1834.      problems.
  1835.  
  1836.         Next, CONFG will ask if you wish to initialize your system files.
  1837.      Since this is the first time, answer 'Y'.  NEVER answer 'Y' again unless
  1838.      you know what you're doing, because answering 'Y' tells CONFG to ERASE all
  1839.      the data in your data files.
  1840.  
  1841.  
  1842.  
  1843.  
  1844.  
  1845.  
  1846.                                     -27-
  1847.  
  1848.  
  1849.  
  1850.  
  1851.  
  1852.  
  1853.         Since you answered 'Y' (this doesn't happen when you answer 'N'),
  1854.      CONFG will ask if you wish to erase and initialize your message file
  1855.      (in case you didn't mean to say yes before).  Type 'Y', and then sit back
  1856.      and watch as CONFG creates the message base.  CONFG displays the number of
  1857.      'sectors' (128 byte chunks) to clear, and then counts them off as they are
  1858.      cleared.  If you are going to have a large (300K or more) message base 
  1859.      and have fairly slow disk drive(s), this is probably the time to get that
  1860.      cup of coffee.
  1861.  
  1862.         Once it is finished with the message base, it'll ask if you wish to
  1863.      erase and initialize the room file, and then the log file.  Since you are
  1864.      still creating your system, answer 'Y' to them and watch as CONFG clears
  1865.      each file.
  1866.  
  1867.         If CONFG encounters any problems during this process, it will tell you
  1868.      about it and exit without finishing.  It's up to you to figure out what's
  1869.      wrong at this juncture.
  1870.  
  1871.         Once it finishes with these files, it tells you that it is creating
  1872.      CTDLTABL.SYS (remember that file?), and exits after a few more seconds.
  1873.  
  1874.         You should now have a CTDLTABL.SYS on your current default disk, which
  1875.      also happens to be the disk that your Helps reside on.
  1876.  
  1877.  
  1878.      II.7 CTDL -- That Childhood Experience
  1879.         And now we get to that long awaited moment.  DO IT.  Run CTDL, however
  1880.      you have to do it.  (Is your modem on?)
  1881.  
  1882.         If everything is put together right, you have enough memory, and
  1883.      everything is configured right, CTDL will be read in, grumble at your disk
  1884.      or disks for a moment, initialize your modem, rumble a little more,
  1885.      initialize the modem a second time, and then come up with YOUR welcome
  1886.      banner.
  1887.  
  1888.         If that's what happened, sit back!  Didn't that feel good?  Feel the
  1889.      warm, golden glow?  (Quick, knock on some wood.)  And now you should
  1890.      probably turn to OPER3.MAN, the everyday care and feeding of Citadel-86.
  1891.      (Since we don't have that section written yet, just pretend you did.)
  1892.      The remainder of Section II covers advanced installation topics which you
  1893.      shouldn't concern yourself with right now, with the exception of Section
  1894.      II.8 which covers what to do in case of unexpected power losses and
  1895.      crashes. You should certainly read the advanced topics of Section II at
  1896.      some time in the future, because we talk about automating your
  1897.      installation with batch files, command line arguments, and other beasties;
  1898.      however, right now you're just getting used to being a Citadel-86 sysop.
  1899.  
  1900.      Delving into other topics when you're not familiar with the basic features
  1901.      of the sysop side of Citadel-86 could turn into a messy disaster that
  1902.      neither you, nor we, would wish to deal with.  So turn to OPER3.MAN.
  1903.  
  1904.  
  1905.  
  1906.  
  1907.  
  1908.  
  1909.  
  1910.  
  1911.  
  1912.                                     -28-
  1913.  
  1914.  
  1915.  
  1916.  
  1917.  
  1918.  
  1919.         If CTDL DIDN'T come up, there are a large variety of reasons for the
  1920.      failure.  If your system seemed to make it up but came down relatively
  1921.      gracefully (i.e., left you at the system prompt), check your disks for a
  1922.      file named CRASH. It may give you (or the person you turn to for help!)
  1923.      a hint on what might be wrong. If it seems to think there's an error with
  1924.      a file, perhaps you forgot to configure MS-DOS correctly.  If CTDL itself
  1925.      complains about "no ctdltabl.sys!", then either that file isn't on your
  1926.      default disk when you called CTDL, or CONFG didn't successfully finish.
  1927.  
  1928.         However, we should mention that on certain computers Citadel-86 simply
  1929.      won't run, even though the computers claim to be a PCompatible.  We don't
  1930.      know why, although we attribute the problem to a new compiler.  If this
  1931.      happens, well, we don't know what to say.  Certainly you should try to 
  1932.      find someone with more knowledge about Citadel-86 to discuss your problems
  1933.      with; it may be a problem with your CTDLCNFG.SYS, rather than this dreaded
  1934.      problem.
  1935.  
  1936.  
  1937.      II.8 When the inevitable happens
  1938.         Citadel-86, just like any other software, is not immune to such things
  1939.      as crashes, power failures, hardware failures, and the like.  When this
  1940.      happens, you must take corrective actions, because normally such
  1941.      occurrences will leave your system missing (or with a mangled version
  1942.      of) the valid version of CTDLTABL.SYS.
  1943.  
  1944.         In order to rebuild this vital file, you must run CONFG again.  CONFG
  1945.      will digest your CTDLCNFG.SYS, and then survey and summarize for CTDL the
  1946.      current contents of your data files.  Once it is finished, you may
  1947.      (usually) run CDTL.
  1948.  
  1949.         Let's go over exactly what will happen.  When you run CONFG, it should
  1950.      go through CTDLCNFG.SYS, just as it did in Section II.6, echoing each
  1951.      parameter as it encounters it.  Once finished, however, it's behavior will
  1952.      differ. It should not ask you if it may create the appropriate directories
  1953.      (since they should already exist), and it should not complain about not
  1954.      being able to find any of your system files (these should still exist,
  1955.      too!).  However, it WILL ask you if you wish to erase and initialize your
  1956.      system files.  This time reply N (with vigor!).  CONFG will immediately
  1957.      begin analyzing your data files, and after several minutes, depending on
  1958.      the size of your system, it will produce a CTDLTABL.SYS; your system will
  1959.      be fit to run again.
  1960.  
  1961.         Obviously, there are benefits to automating this process, particularly
  1962.      for handling power outages.  Consult the section on batch files and the
  1963.      section on command line options for details on effectively automating your
  1964.      system in such cases.
  1965.  
  1966.      II.9 Installation -- Advanced Topics
  1967.         By now you should have a pretty good feel for Citadel-86 procedures,
  1968.      but may wish to look into automating Citadel-86.  The first two
  1969.      subsections discuss subjects pertaining to that minor miracle; the third
  1970.      section will try to bring the first two together, with some representative
  1971.      examples of DOS BAT files.
  1972.  
  1973.  
  1974.  
  1975.  
  1976.  
  1977.  
  1978.                                     -29-
  1979.  
  1980.  
  1981.  
  1982.  
  1983.  
  1984.  
  1985.      II.9.a Command Line options
  1986.         A 'command line option' is a string of letters that you type
  1987.      directly following the program name.  Each command line option should be
  1988.      separated from the program name and any other command line option by at
  1989.      least one space.  Command line options are used to tell a program to do
  1990.      something that it might not do if the option wasn't there.  In abstract,
  1991.      from drive C: of MS-DOS:
  1992.  
  1993.      C><program name> <command line option 1> <c.l.o. 2> ...
  1994.  
  1995.         Both CONFG and CTDL have a set of command line options which you can
  1996.      use to make them do special things.  We'll treat each program separately.
  1997.  
  1998.      CONFG
  1999.         The CONFG program will respond to two options, which may appear
  2000.      together or individually on the command line.
  2001.  
  2002.         The first parameter is called ONLYPARAMS.  When CONFG finds this
  2003.      parameter on the command line, CONFG will NOT try to process your data
  2004.      files.  Instead, it will limit itself to reading and processing your
  2005.      CTDLCNFG.SYS file.  This ability is useful when you wish to change one of 
  2006.      the CTDLCNFG.SYS parameter values without going through the entire
  2007.      process of reading your data files. You MUST have a completely valid
  2008.      CTDLTABL.SYS available for CONFG to read; otherwise, this option will be
  2009.      ignored and your data files will be processed.
  2010.  
  2011.         The second parameter is any string of letters that do not match any
  2012.      other command line option for CONFG.  If this 'option' (you can just use
  2013.      some random string of characters) is on the command line, then CONFG will
  2014.      not ask whether or not you wish to erase and initialize your data files.
  2015.      Instead, CONFG will assume that your answer was 'N' (i.e., you simply wish
  2016.      to perform a reconstruction).  Thus, CONFG will never query the keyboard 
  2017.      for attention, and can run unattended, so long as all the data files are
  2018.      in their places.
  2019.  
  2020.      CTDL
  2021.         The CTDL program officially supports several options, and unofficially
  2022.      several more which will not be detailed here.  An 'official' option is an
  2023.      option that we anticipate supporting for a while; an 'unofficial' option
  2024.      is an option that is used for experimentation, and will someday be moved
  2025.      into the CTDLCNFG.SYS parameter file (or just thrown away).
  2026.  
  2027.         The first command line option is called +netlog.  This option applies
  2028.      only to networking systems.  When employed, it will cause a log of all
  2029.      network sessions to be written to the file NETLOG.SYS in your NETAREA
  2030.      directory.
  2031.  
  2032.         +nochat completely shuts the Chat option off.  Normally, an aide can
  2033.      force a chat when Chat is turned off.  This command line option prohibits
  2034.      aides from forcing Chat when Chat is turned off.  This option does nothing
  2035.      when Chat mode is on.
  2036.  
  2037.  
  2038.  
  2039.  
  2040.  
  2041.  
  2042.  
  2043.  
  2044.                                     -30-
  2045.  
  2046.  
  2047.  
  2048.  
  2049.  
  2050.  
  2051.         +newvideo will ask Citadel-86 to use a new style of video interface
  2052.      for the Sysop on the System Console.  The reason that this feature is
  2053.      accessed via a command line switch is that there is some sort of bug
  2054.      that won't allow some systems to use this feature.  Please check to
  2055.      see if you have a VIDTEST.EXE file in one of your archive files.  If
  2056.      so, it will test your system to see if Citadel-86 will blow up your
  2057.      system or not (you'll be able to tell by whether or not you have to
  2058.      reboot your system after running the test program).
  2059.  
  2060.         If +inv is on your command line, then your status bar will appear
  2061.      in inverse video.
  2062.  
  2063.         A command line option that does not match any of those listed so far
  2064.      is known as the 'crash' option.  It will cause CTDL to leave a message in
  2065.      your Aide> room informing you that Citadel-86 apparently came up from a
  2066.      crash at the time of the message.  This is useful for batch files.
  2067.  
  2068.      II.9.b BAT files and program termination ERRORLEVELS
  2069.         MS-DOS BAT files depend heavily on the concept of ERRORLEVELs, and we
  2070.      encourage you to read the MS-DOS manuals for a full explanation of BAT
  2071.      files. The CTDL program, on termination, will set the MS-DOS ERRORLEVEL
  2072.      level to a value that you can use to write useful BAT files; you may also
  2073.      cause other ERRORLEVELS to be set, as explained earlier in this manual.  
  2074.      The values indicate the reason that Citadel-86 terminated, and the ones
  2075.      reserved by Citadel-86 are discussed here.  Feel free to use other
  2076.      ERRORLEVELS at your discretion.
  2077.  
  2078.      0 -- A normal exit.  This indicates that the sysop took the system down
  2079.           via e<X>it on the Sysop's menu (see Section III.? for an explanation
  2080.           of the sysop menu).
  2081.      1 -- Not used.  You may use, if you wish, in conjunction with the #event
  2082.           parameters.
  2083.      2 -- This was a crash exit.  Citadel-86 is capable of recognizing a number
  2084.           of fatal internal errors; when any of them are encountered,
  2085.           Citadel-86 will hangup the current caller and immediately terminate
  2086.           with this value.  If a crash of this sort occurs, CONFG should be
  2087.           run before attempting to run CTDL again.  Some (not all) of these
  2088.           fatal errors include non-existence of CTDLTABL.SYS (very, very
  2089.           common, due to power failures), missing system files (such as the
  2090.           message file, etc.), and corrupted internal data, which indicates 
  2091.           the possibility of a bug in CTDL.  Some of these crashes will leave
  2092.           the files CRASH and AUDIT behind, which can give hints on what's
  2093.           wrong (particularly CRASH).
  2094.      3 -- A remote sysop exit.  Since an Aide can be given access to the sysop
  2095.           menu from remote (see Section II.5.c on the parameter #sysPassword), 
  2096.           s/he is capable of taking your system down from remote.  A number of
  2097.           sysops indicated that it might be useful to distinguish between a
  2098.           sysop exit and a remote sysop exit, so this ERRORLEVEL is supported.
  2099.  
  2100.         One more note.  When you write a BAT file, make sure that you handle
  2101.      the ERRORLEVELS in a "top to bottom" manner.  DOS will not process the
  2102.      ERRORLEVELS correctly otherwise.
  2103.  
  2104.      II.9.c Making BAT files and command line options work for you.
  2105.         No program is ever bug-free.  However, it is nice to pretend that one
  2106.      is, and an effective way to pretend that a particular program has achieved
  2107.      such a goal is by never having it require your attention when you are
  2108.      attending to other things.
  2109.  
  2110.                                     -31-
  2111.  
  2112.  
  2113.  
  2114.  
  2115.  
  2116.  
  2117.         Citadel-86 tries to emulate this sort of utopian software by returning
  2118.      a value to MS-DOS when it terminates gracefully, as we described above,
  2119.      which allows you to construct BAT files that will handle most
  2120.      contingencies.
  2121.  
  2122.         Basically, we have to handle 'emergency' situations, which consist of
  2123.      coming up from a reboot and handling a graceful crash, and handling
  2124.      non-emergencies, which are coming out of C-86 in response to timeouts,
  2125.      sysop exits, and remote sysop exits.
  2126.  
  2127.         First, let's look at the emergencies.  Typically, an emergency never
  2128.      happens at a convenient time; instead, you're off on vacation, at work,
  2129.      or feeding the cat.  Therefore, the software has to handle the emergencies
  2130.      on its own, within limits.
  2131.  
  2132.        In both of our emergency situations, the system must go through a CONFG
  2133.      call. When we looked at the command line options of CONFG, we saw that a
  2134.      nonsensical argument on CONFG's command line tells it not to ask for
  2135.      operator input regarding whether the system should be erased, but rather
  2136.      to simply re-analyze the data in preparation for a CTDL call.  Therefore,
  2137.      part of our BAT file strategy will contain the line
  2138.  
  2139.      CONFG gleeeeepy
  2140.  
  2141.      which we may end up placing in its own BAT file.
  2142.  
  2143.         Looking into the section on ERRORLEVELs, we should have also noticed 
  2144.      that one of the events that will cause a graceful crash is the absence of
  2145.      a CTDLTABL.SYS file.  Thus, we can classify a power down as simply another
  2146.      graceful crash -- after we make some modifications to your boot disks
  2147.      AUTOEXEC.BAT.  But first let's look at just how we should handle these
  2148.      'graceful crashes'.
  2149.  
  2150.         We said that a graceful crash produces an ERRORLEVEL of 2.  With this
  2151.      in mind, we can put in one of our BAT files some lines that look roughly
  2152.      like this:
  2153.  
  2154.      CTDL
  2155.      ...
  2156.      if ERRORLEVEL 2 Fixit
  2157.  
  2158.      Fixit, in this case, is another BAT file which will fix the system for us.
  2159.      I.e., it runs CONFG and gets the system back up on its feet.  What should
  2160.      it look like?  Well, first we want to start the file as mentioned above:
  2161.  
  2162.      CONFG Gleeepy
  2163.  
  2164.      Once CONFG finishes, we need to restart CTDL.  As it happens, MSDOS BAT
  2165.      files do not 'stack' up; if A.BAT calls B.BAT, when B finishes it does
  2166.      NOT return to A, but instead falls out to MS-DOS.  This makes it easy to
  2167.      write BAT files to accomplish our purposes.  Suppose we call our main BAT
  2168.      file RUNIT.BAT (the file that contains the 'if ERRRORLEVEL 2 Fixit' line
  2169.      in it).  Then we can simply finish the FIXIT.BAT file with
  2170.  
  2171.  
  2172.  
  2173.  
  2174.  
  2175.  
  2176.                                     -32-
  2177.  
  2178.  
  2179.  
  2180.  
  2181.  
  2182.  
  2183.      RUNIT CRASH
  2184.  
  2185.      We'll explain the CRASH command line option later.
  2186.  
  2187.         What about the rest of those ERRORLEVELs?  Well, let's solidify your
  2188.      RUNIT.BAT a little more.
  2189.  
  2190.      CTDL
  2191.      if ERRORLEVEL 3 goto remote
  2192.      if ERRORLEVEL 2 Fixit
  2193.      if ERRORLEVEL 1 goto timeout
  2194.      if ERRORLEVEL 2 goto alldone
  2195.  
  2196.         (Note the descending order we use here.  This is necessary due to the
  2197.      method MS-DOS uses to handle 'if' statements.)  This was simple -- we just
  2198.      put off all the work.  However, most of the work is yours, because it is
  2199.      really up to you to figure out what you wish to do when your system
  2200.      times out (CTDLCNFG.SYS's #event parameter -- we simply assumed that you
  2201.      used a 1 in the <depends> field of an external #event parameter) and when
  2202.      your remote sysops bring your system down.
  2203.  
  2204.         So let's flesh out the rest of this sample RUNIT.BAT.
  2205.  
  2206.      :loop
  2207.      CTDL %1 ...
  2208.      shift
  2209.      if ERRORLEVEL 3 goto remote
  2210.      if ERRORLEVEL 2 Fixit
  2211.      if ERRORLEVEL 1 goto timeout
  2212.      if ERRORLEVEL 2 goto alldone
  2213.      :remote
  2214.      REM put here what you want remote terminations to cause to happen.  If you
  2215.      REM want to rerun CTDL, you'd have 'goto loop'.
  2216.      ...
  2217.      :timeout
  2218.      REM put here what you want timeouts to do (backups or whatever)
  2219.      ...
  2220.      REM we assume that you'd want to restart Citadel-86 afterwards.
  2221.      goto loop
  2222.      :alldone
  2223.      REM And now the sysop at the console took us down, so we'll die.
  2224.  
  2225.         Most of this should be pretty easy to understand.  The '...' on the
  2226.      CTDL command line simply means whatever options you choose to put on that
  2227.      line. However, the '%1' may be puzzling.  As the MS-DOS manual indicates,
  2228.      %1 is the first argument on the command line of this BAT file.  Now,
  2229.      let's look back at the FIXIT batch file, where we put RUNIT CRASH.  This
  2230.      will force the parameter CRASH to appear on your CTDL command line, which 
  2231.      CTDL will interpret as a 'nonsense' argument, therefore causing a 'crash'
  2232.      message to appear in your Aide> room.  Since it was the FIXIT batch file
  2233.      that ultimately causes this message to appear, this is good behavior.
  2234.  
  2235.  
  2236.  
  2237.  
  2238.  
  2239.  
  2240.  
  2241.  
  2242.                                     -33-
  2243.  
  2244.  
  2245.  
  2246.  
  2247.  
  2248.  
  2249.         But what of that SHIFT following the CTDL command line?  This causes
  2250.      the RUNIT command line arguments to shift 1 to the left.  Since there were
  2251.      no more arguments to RUNIT, any executions of CTDL subsequent to the SHIFT
  2252.      call, while within this BAT file, will not result in messages in the Aide>
  2253.      room.  And why might there be any more calls to CTDL after the first one?
  2254.      Look at the commands following the timeout label.
  2255.  
  2256.         This is just an example.  Have fun.
  2257.  
  2258.      II.9.d Extreme options in CTDLCNFG.SYS
  2259.         Some of the modem I/O routines in Citadel-86 can be changed by the
  2260.      adventurous sysop via the CTDLCNFG.SYS file.  Normally, Citadel-86 uses
  2261.      built-in modem routines designed to handle the normal situations of Z-100s
  2262.      and the two COM ports of PClones.  However, they can be replaced through
  2263.      manipulation of CTDLCNFG.SYS.
  2264.  
  2265.         When do you want to use these options?  NEVER, really.  But you
  2266.      probably do when you have an unusual, but not unique, modem setup.  If you
  2267.      feel your modem connection is really, really odd, you may wish to acquire
  2268.      the source code for Citadel-86 and perform some hideous hacks of your own.
  2269.      These options are useful when you wish to do something unusual with your
  2270.      installation.
  2271.  
  2272.         All right, what ARE these 'routines,' anyways?  They came from the CP/M
  2273.      version of Citadel, where they were the entirety of Citadel's modem I/O.
  2274.      To quote the old documentation that accompanied them, they "...implemented
  2275.      a virtual machine with a single accumulator", which is another way of
  2276.      saying that a primitive psuedo-assembly language was made available to
  2277.      the sysop for designing their own modem I/O.  The reason that they
  2278.      exist in Citadel-86 is partly inertia and partly their flexibility: the 
  2279.      two types of machines that Citadel-86 supports, Zenith Z-100s and most
  2280.      PClones, have radically different serial interfaces.  Using the
  2281.      appropriate routines saves some (probably only a trivial amount of) code
  2282.      room.
  2283.  
  2284.         OK, let's get concrete.  Each routine available to you is composed
  2285.      of two parts, the name of the routine and the code which implements it.
  2286.      Abstractly, it looks like this:
  2287.  
  2288.      #start <routine name>
  2289.      #code <instruction> <optional instruction data>
  2290.      #code <instruction> <optional instruction data>
  2291.      ...
  2292.  
  2293.         Usually, the last #code instruction will specify a RET.
  2294.  
  2295.  
  2296.  
  2297.  
  2298.  
  2299.  
  2300.  
  2301.  
  2302.  
  2303.  
  2304.  
  2305.  
  2306.  
  2307.  
  2308.                                     -34-
  2309.  
  2310.  
  2311.  
  2312.  
  2313.  
  2314.  
  2315.  
  2316.         Here is the list of routines currently supported:
  2317.  
  2318.      HANGUP     -- This routine MUST force your modem to hangup.
  2319.      INITPORT   -- This routine should initialize your port AND your modem.
  2320.                    (NOTE: If INITPORT exists, #modemSetup should NOT exist.)
  2321.      CARRDETECT -- This routine MUST return (see the RET instruction) a 0 when
  2322.                    there is no carrier, and a non-0 value when there is
  2323.                    carrier.
  2324.      SET300     -- This routine should set your modem's port to 300 baud.
  2325.      SET1200    -- This routine should set your modem's port to 1200 baud.
  2326.      SET2400    -- This routine should set your modem's port to 2400 baud.
  2327.      SET4800    -- This routine should set your modem's port to 4800 baud.
  2328.      SET9600    -- This routine should set your modem's port to 9600 baud.
  2329.      SET_HIGHER -- This routine should set your modem's port to your choosing
  2330.                    (this option may not be supported in the future).
  2331.      CHECKBAUD  -- This routine is only used when SEARCHBAUD is 0.
  2332.                    CHECKBAUD must return (see RET) 0 if the modem is at
  2333.                    300 baud, 1 if 1200 baud, 2 if 2400 baud, 3 if 4800 baud,
  2334.                    and 4 if 9600 baud.
  2335.      ENABLE     -- This routine must ENABLE your modem for answering the phone.
  2336.      DISABLE    -- This routine must DISABLE your modem from answering the
  2337.                    phone.
  2338.  
  2339.         The instructions available to you simulate a very simple machine with
  2340.      one accumulator and a scratch array.  You'll find the instructions crude,
  2341.      primitive, and limiting.  The scratch array is addressed from 0, and has
  2342.      40 elements.  Here they are:
  2343.  
  2344.      LOAD x   -- This instruction loads the accumulator with the value in
  2345.                  location x of memory (!).
  2346.      ANDI x   -- This instruction performs a logical AND of the accumulator
  2347.                  with x and places the result in the accumulator.
  2348.      ORI x    -- This instruction performs a logical OR of the accumulator with
  2349.                  x and places the result in the accumulator.
  2350.      XORI x   -- This instruction performs a logical XOR of the accumulator
  2351.                  with x and places the result in the accumulator.
  2352.      STORE x  -- This instruction stores the accumulator in the specified 
  2353.                  address of memory(!).
  2354.      LOADI x  -- This instruction loads the accumulator with the value of x.
  2355.      RET   x  -- This instruction forces the routine to return to the caller
  2356.                  with the value of the accumulator (in this case, 'x' is just
  2357.                  a dummy value).
  2358.      INP x    -- This instruction causes the accumulator to be loaded with the
  2359.                  value currently present at port x.
  2360.      OUTP x   -- This instruction causes the accumulator to be sent to port x.
  2361.      PAUSEI x -- This instruction causes the Citadel-86 installation to pause
  2362.                  for x/10s of a second.
  2363.      ARRAY[]= x -- This instruction stores the accumulators value in the
  2364.                    specified location of the scratch array.
  2365.      ARRAY[] x  -- This instruction loads the accumulator with the value in the
  2366.                    specified location of the scratch array.
  2367.      OUTSTRING "x" -- This instruction causes the string "x" to be sent to the
  2368.                       modem.
  2369.  
  2370.  
  2371.  
  2372.  
  2373.  
  2374.                                     -35-
  2375.  
  2376.  
  2377.  
  2378.  
  2379.  
  2380.  
  2381.      OPR# "x" low high -- This instruction causes the string "x" to be
  2382.                           displayed, followed by a request for a number.  Low
  2383.                           and high specify the lowest and highest acceptable
  2384.                           values that will be accepted.  The accumulator
  2385.                           receives the value specified by the user.
  2386.  
  2387.         In SUPPORT.ARC there should be a file named PSUEDO.DOC.  It contains a
  2388.      listing of all the default routines used by Citadel-86.  If you have ANY
  2389.      plans at all for using your own routines, first examine those in
  2390.      PSUEDO.DOC, both to understand what is used for a default, and for working
  2391.      examples of how to write valid routines.
  2392.  
  2393.         And, lastly, REALLY WE HOPE YOU DON'T HAVE TO ENGAGE IN THIS SILLINESS.
  2394.  
  2395.  
  2396.  
  2397.                                 ctdlCnfg.sys
  2398.  
  2399.  
  2400.         This is the configuration file for the Citadel-86 bulletin board
  2401.      system. It is read in by confg.exe which sets up a "ctdlTabl.sys" file
  2402.      recording the configuration parameters.  (CtdlTabl.sys is read by the
  2403.      other Citadel programs.) This file must be edited to be appropriate to
  2404.      the local environment. Lines not beginning with "#" are ignored by CONFG
  2405.      and may be deleted once the file is successfully configured -- they are
  2406.      purely documentary.  For more detail, consult the CITADEL-86 SYSOP MANUAL.
  2407.  
  2408.      GENERAL STRING FORMATTING CONTROLS:
  2409.      The following are supported:
  2410.              "\n": CR-LF
  2411.              "\t": Tab character
  2412.              "\b": Non-destructive Backspace
  2413.              "\r": CR
  2414.              "\f": Formfeed
  2415.              "\"": '"'
  2416.              "\\": Backslash
  2417.              "\<xxx>": The octal* ASCII value is output
  2418.  
  2419.         SECTION 1: NECESSITIES AND MISCELLANEA
  2420.  
  2421.      SYSTEM TITLE
  2422.         nodeTitle is printed after the "Welcome to" and before the "Running..."
  2423.      lines of the banner that pops up on carrier detect, UNLESS BANNER.BLB
  2424.      exists, in which case the entire "Welcome to <nodeTitle>" line is
  2425.      replaced with the contents of BANNER.BLB.  nodeTitle is a string value
  2426.      that accepts formatting directives and goes through the Citadel
  2427.      formatter.
  2428.  
  2429.  
  2430. #nodeTitle "Our Name"         -- An obvious imposter
  2431.  
  2432.  
  2433.  
  2434.  
  2435.  
  2436.  
  2437.  
  2438.  
  2439.  
  2440.                                     -36-
  2441.  
  2442.  
  2443.  
  2444.  
  2445.  
  2446.  
  2447.      SYSTEM NAME
  2448.         nodeName is purely for networking purposes.  Messages which
  2449.      originated on your system will have headers looking like:
  2450.  
  2451.            82Nov23 From Cynbe ru Taren @ODD-DATA
  2452.  
  2453.      This should be a short (for the sake of the reader!) mnemonic
  2454.      identifying your node for humans.  It does not use formatting directives.
  2455.  
  2456. #nodeName "ODD-DATA"          -- The original Citadel (kow-tow, everyone)
  2457.  
  2458.      SYSTEM ID
  2459.         nodeId is also purely for networking purposes.  Messages which
  2460.      originate on your system will be marked with the nodeId, but it will
  2461.      not normally be printed out.  It is primarily for the use of the
  2462.      networking support software, and forms a globally unique name and
  2463.      address for your system.  It consists of a country abbreviation
  2464.      followed by area code and system phone number.  This string value does not
  2465.      use formatting directives. Country abbreviation for the US is "US", for
  2466.      Canada is "CA".  (For others, see COUNTRY.DOC.)
  2467.  
  2468.  
  2469. #nodeId "US 612 866 1804"
  2470.  
  2471.  
  2472.      SYSTEM BASEROOM
  2473.         baseRoom is the homeroom of the Citadel in operation, the place you
  2474.      go when there are no more rooms with unread messages left.  This is
  2475.      usually known as the Lobby> on most systems.  It's simply a nice,
  2476.      easy way to customize and give character to your system..
  2477.  
  2478. #baseRoom "Glops"
  2479.  
  2480.      SYSTEM BASE FLOOR
  2481.         MainFloor is the home floor of the Citadel in operation, the floor
  2482.      where baseRoom, Aide, and Mail are located.  It's another nice, easy
  2483.      way to customize your system
  2484.  
  2485. #MainFloor "Da Basement"
  2486.  
  2487.      SYSTEM ENCRYPTION SEED
  2488.         CRYPTSEED is a number used in encrypting the data files.  Change
  2489.      it once when you install the system, but not thereafter -- or you
  2490.      won't be able to read the existing files any more.
  2491.  
  2492. #CRYPTSEED 333                --
  2493.  
  2494.  
  2495.  
  2496.  
  2497.  
  2498.  
  2499.  
  2500.  
  2501.  
  2502.  
  2503.  
  2504.  
  2505.  
  2506.                                     -37
  2507.  
  2508.  
  2509.  
  2510.  
  2511.  
  2512.  
  2513.      DATA FILES SIZE: MESSAGE BASE
  2514.         MESSAGEK sizes "ctdlmsg.sys", the file message text is stored in. The
  2515.      size of this parameter together with the rate at which message text is
  2516.      entered determines message lifetime.
  2517.  
  2518. #MESSAGEK 300                 -- 300Kbyte ctdlmsg.sys
  2519.  
  2520.      DATA FILES SIZE: MESSAGES PER ROOM
  2521.         MSG-SLOTS defines the maximum number of displayable messages per room
  2522.      on your room, except for the Mail> room.
  2523.  
  2524. #MSG-SLOTS 58                 -- 58 is kind of traditional
  2525.  
  2526.      DATA FILES SIZE: MESSAGES PER MAIL ROOM
  2527.         MAIL-SLOTS defines the maximum number of displayable messages for each
  2528.      user's Mail> room.
  2529.  
  2530. #MAIL-SLOTS 58                -- Yet another tradition...
  2531.  
  2532.      DATA FILES SIZE: ROOM FILE
  2533.         MAXROOMS defines the maximum number of rooms on your system.
  2534.  
  2535. #MAXROOMS 64                  -- This is usually enough
  2536.  
  2537.      DATA FILES SIZE: LOG FILE
  2538.         LOGSIZE is the number of entries that you want in your log. Once
  2539.      you've selected a log size and have configured, you may NOT shrink
  2540.      the log except by destroying the log totally. There is a utility
  2541.      available for expanding the log, called DATACHNG.
  2542.  
  2543. #LOGSIZE 180                  --
  2544.  
  2545.      **DATA FILE LOCATIONS**
  2546.         The next several parameters allow you to specify where certain system
  2547.      files are to appear on your system.  Please note that only subdirectories
  2548.      of the disk you specified are legal.  Disk specifications are legal.
  2549.  
  2550.         This parameter specifies where you want your help files located in your
  2551.      system.
  2552.  
  2553. #HELPAREA "helps"             -- All help files located in subdir
  2554.                               -- "helps"
  2555.  
  2556.         This applies to the CTDLLOG.SYS file.
  2557.  
  2558. #LOGAREA "a:log"              -- in subdir "log" on drive a:
  2559.  
  2560.         This applies to the CTDLROOM.SYS, CTDLBAD.SYS, and CTDLARCH.SYS files.
  2561.  
  2562. #ROOMAREA "system"            -- in subdir "system"
  2563.  
  2564.         This applies to the CTDLMSG.SYS file.
  2565.  
  2566. #MSGAREA ""                   -- current directory of default disk
  2567.  
  2568.  
  2569.  
  2570.  
  2571.  
  2572.                                     -38-
  2573.  
  2574.  
  2575.  
  2576.  
  2577.  
  2578.  
  2579.         This applies to the CTDLFLR.SYS file.
  2580.  
  2581. #FLOORAREA "floors"           -- its own subdirectory for no particular reason.
  2582.  
  2583.      AIDE SCOPE:
  2584.         The AIDESEEALL parameter controls the scope that Aides have on the
  2585.      installation.  If this parameter is set to 0, then Aides are only allowed
  2586.      to see public rooms and private rooms that they are told about;
  2587.      private room creation will leave an entry in the Aide> room indicating
  2588.      that a room was created, but not the name.  An Aide at the SysConsole
  2589.      will, however, see all rooms.  If this parameter is set to 1, then all
  2590.      Aides will see all rooms on the system, public or private.
  2591.  
  2592. #AIDESEEALL 0                 -- Aides see nothing
  2593.  
  2594.      NEW USER CONTROL:
  2595.         LOGINOK controls whether users without a password can login from
  2596.      remote. If LOGINOK is 1, they may; if LOGINOK is 0, then the only place
  2597.      that new accounts may be entered is from the system console.
  2598.  
  2599. #LOGINOK 1                    -- user-established accounts
  2600.  
  2601.      MESSAGE ENTRY CONTROL:
  2602.         If ENTEROK is 1, callers that are not logged in may enter messages.  If
  2603.      0, then they must login first before they can enter messages (except for
  2604.      Mail> to the Sysop.  Note that Anonymous rooms are not an exception.
  2605.  
  2606. #ENTEROK 0                    -- login first
  2607.  
  2608.      READING CONTROL:
  2609.         If READOK is 1, then unlogged callers can read messages.  If READOK is
  2610.      0, then users must login before reading messages.
  2611.  
  2612. #READOK 0                     -- login first
  2613.  
  2614.      ROOM CREATION CONTROL:
  2615.         If ROOMOK is 1 then regular folks can create new rooms, else only those
  2616.      with aide privilege can do so.
  2617.  
  2618. #ROOMOK 1                     -- general room-creation privileges
  2619.  
  2620.      MAIL CONTROL:
  2621.         If ALLMAIL is 1, all get privileges; 0 means only aides have the
  2622.      privilege.
  2623.  
  2624. #ALLMAIL 1                    -- Everybody can send mail
  2625.  
  2626.  
  2627.      COMPUTER HARDWARE TYPE:
  2628.         Setting IBM to 1 implies the system is a PClone, and to use some
  2629.      internal routines for accessing modem.  If IBM is 0, then substitute
  2630.      other special routines specific to the Z100 for accessing modem.
  2631.  
  2632. #IBM 1                        -- IBM clone
  2633.  
  2634.  
  2635.  
  2636.  
  2637.  
  2638.                                     -39-
  2639.  
  2640.  
  2641.  
  2642.  
  2643.  
  2644.  
  2645.      COM PORT:
  2646.         The COM parameter allows the sysop who is using an IBM to select
  2647.      either COM1 or COM2 as the communications port. This parameter is
  2648.      meaningless for Z-100s.
  2649.  
  2650. #COM 1                        -- COM1 is the selection
  2651.  
  2652.      SYSTEM BAUD RATES:
  2653.         SYSBAUD defines the baud rates supported by this installation.  0
  2654.      indicates 300 only, 1 indicates 300/1200, 2 indicates 300/1200/2400,
  2655.      and 3 indicates 300/1200/2400/your own selection.
  2656.  
  2657. #SYSBAUD 1                    -- A 3/12 system.
  2658.  
  2659.  
  2660.      CALLER BAUD DETECTION:
  2661.         If SEARCHBAUD is 1, then a "search for carriage returns" commences
  2662.      amongst the valid baud rates defined by SYSBAUD.  If SEARCHBAUD is 0,
  2663.      then the interpreter routine CHECKBAUD is executed to find the correct
  2664.      baud.
  2665.  
  2666. #SEARCHBAUD 1                 -- Yes, autosearch
  2667.  
  2668.  
  2669.      MODEM INITIALIZATION:
  2670.         modemSetup specifies what should be sent to the modem after
  2671.      initializing the port. While Hayes/compatibles are recommended, other
  2672.      types of modes have been successfully used with Citadel-86, such as
  2673.      TransModems.
  2674.  
  2675. #modemSetup "AT S0=1 M1"
  2676.  
  2677.  
  2678.         SECTION 2: INTERESTING OPTIONS
  2679.  
  2680.      TIMED EVENT HANDLER:
  2681.         See the manual for this one.  Here is the generic format:
  2682.  
  2683. -#event <days> <time> <class> <type> <duration> <warning string> <depends>
  2684.  
  2685.      REMOTE SYSOP FACILITY:
  2686.         #sysPassword specifies the file that contains a string that will act
  2687.      as the password to the remote sysop abilities.  If this parameter is not
  2688.      specified, or if the file is not found, or is unreadable, then remote
  2689.      sysop abilities are disabled.  Only Aides can access remote sysop
  2690.      abilities, and they must* know the exact password, including the case
  2691.      of the individual letters.
  2692.  
  2693. -#sysPassword "c:\pwd"        -- Inactive (note the leading hyphen)
  2694.  
  2695.  
  2696.  
  2697.  
  2698.  
  2699.  
  2700.  
  2701.  
  2702.  
  2703.  
  2704.                                     -40-
  2705.  
  2706.  
  2707.  
  2708.  
  2709.  
  2710.  
  2711.      AUDIT:
  2712.         This parameter specifies where the CALLLOG.SYS file ends up on your
  2713.      system.  Note that the directory specified has to be a subdirectory of
  2714.      a current directory.
  2715.  
  2716.  
  2717. -#CALLAREA ""                 -- put CALLLOG.SYS in the current directory
  2718.                               -- (inactive -- note leading hyphen)
  2719.      RAM DRIVE HANDLING:
  2720.         These two parameters control whether or not and where a secondary
  2721.      message file will reside.  If you use this parameter, it should
  2722.      reference a permanent media file, and the MSGAREA parameter should
  2723.      reference a RAM drive.  MSGAREA will always be both read and written to,
  2724.      while this one will only be written to; thus, this parameter should
  2725.      reference the media more sensitive to wear and tear.  MIRRORMSG should
  2726.      be 1 if you wish to use this ability; MSG2AREA then referrnces the
  2727.      location of the secondary message base.
  2728.  
  2729. #MIRRORMSG 0                  -- Turn it off for novices
  2730. #MSG2AREA ""                  -- so this is irrelevant while MIRRORMSG
  2731.                               -- is 0
  2732.  
  2733.      RESULT CODES FOR BAUD DETECT:
  2734.         These parameters allow you to try to detect baud rate via result codes.
  2735.      Do not use these parameters if you SEARCHBAUD is 0.  The following is
  2736.      only an example for a MultiTech 224.
  2737.  
  2738. -#RESULT-300  "1"             -- all are deactivated
  2739. -#RESULT-1200 "5"
  2740. -#RESULT-2400 "9"
  2741. -#RESULT-4800
  2742. -#RESULT-9600
  2743. -#RING        "2"
  2744.  
  2745.      INTERRUPTED MESSAGE AREA:
  2746.         This parameter specifies where to save interrupted messages for
  2747.      later completion.
  2748.  
  2749. -#HOLDAREA "held"             -- inactive
  2750.  
  2751.      SYSOP MAIL ROUTING:
  2752.         This parameter specifies the account that Mail> to sysop should be
  2753.      routed to.
  2754.  
  2755.  -#sysopName "Me!"            -- inactive
  2756.  
  2757.         SECTION 3: NETWORK PARAMETERS
  2758.  
  2759.      NETWORK SELECT:
  2760.         You use this parameter to decide whether or not you are a networking
  2761.      system.  If you set this parameter to 0, then the rest of the parameters
  2762.      in this section are meaningless, because you are not a networking
  2763.      system.
  2764.  
  2765. #NETWORK 0                    -- Disable for novices
  2766.  
  2767.  
  2768.  
  2769.  
  2770.                                     -41-
  2771.  
  2772.  
  2773.  
  2774.  
  2775.  
  2776.  
  2777.      LONG DISTANCE NET:
  2778.         This parameter decides whether you'll call LD systems or not.  If 1,
  2779.      then you will; if not, you won't.  This parameter may be unneeded in
  2780.      the future.
  2781.  
  2782. #LONG-HAUL 0                  -- Off for now
  2783.  
  2784.  
  2785.      NEW USER NET PRIVILEGES:
  2786.         #NewNetPrivs specifies whether or not new users automatically have
  2787.      net privileges.
  2788.  
  2789. #NewNetPrivs 0                -- Nope.
  2790.  
  2791.      NET FILES LOCATION:
  2792.         You use this parameter to specify where the various network-related
  2793.      files will be located.  It is a string parameter that you use to specify
  2794.      the drive and directory to put these files.
  2795.  
  2796. #NETAREA "c:net"              -- an example ONLY
  2797.  
  2798.      MAXIMUM SHARED ROOMS:
  2799.         This parameter selects the maximum number of shared rooms per system.
  2800.  
  2801. #SHARED-ROOMS 1
  2802.  
  2803.  
  2804.      ARCHIVING ACROSS THE NETWORK:
  2805.         This parameter selects the maximum number of rooms that you think
  2806.      you'll ever want to simultaneously archive to another system.
  2807.  
  2808. #NET-ARCH-ROOMS 1
  2809.  
  2810.  
  2811.      RECEPTION AREA FOR FILES:
  2812.  
  2813.         The NET_RECEPT_AREA parameter specifies the directory that files sent
  2814.      to this installation Via the Send File feature of the net will be placed
  2815.      in.  Do NOT end it with a '\'!
  2816.  
  2817. #NET_RECEPT_AREA "C:\citadel\recept" -- Just an example
  2818.  
  2819.  
  2820.      RECEPTION DIRECTORY SIZE:
  2821.         The parameter NET_AREA_SIZE allows the sysop to specify how much room
  2822.      should be allocated for the NET_RECEPT_AREA parameter.  This allows the
  2823.      sysop to ensure that his system isn't swamped by files sent by other
  2824.      systems. The NET_AREA_SIZE parameter should be in K. (Remember, this
  2825.      should be in hex.)
  2826.  
  2827. #NET_AREA_SIZE 500
  2828.  
  2829.  
  2830.  
  2831.  
  2832.  
  2833.  
  2834.  
  2835.  
  2836.                                     -42-
  2837.  
  2838.  
  2839.  
  2840.  
  2841.  
  2842.  
  2843.      INCOMING FILES SIZES:
  2844.         The MAX_NET_FILE parameter allows the sysop to decide how large of a
  2845.      file the system will accept from another system when the file is sent
  2846.      by the other system (this does NOT apply to Requesting a file, only to
  2847.      accepting a file Sent with the Send Net feature). This parameter is
  2848.      also in K.
  2849.  
  2850. #MAX_NET_FILE 300
  2851.  
  2852.      MODEM DIALOUT:
  2853.         callOutPrefix determines what is output to the modem prior to
  2854.      the phone number to be dialed.  It must send all commands necessary
  2855.      to put the modem into dial out mode.  Additionally, it must contain
  2856.      what is neceessary in the way of special commands dealing with PBX's,
  2857.      etc.
  2858.  
  2859.         #callOutSuffix determines what is output to the modem after
  2860.      #callOutPrefix and the phone number has been output.  Graphically,
  2861.  
  2862.             <#callOutPrefix><phone#><#callOutSuffix>
  2863.  
  2864.      is the sequence in which data is out when the networker tries
  2865.      to dial out.  Since nothing is automatically appended to the
  2866.      number when it is being output to the modem during networking,
  2867.      the typical value for an installation using a Hayes/compatible is
  2868.  
  2869.             #callOutSuffix "\r"
  2870.  
  2871.      since Hayes/compatibles require a C/R to end a command string.
  2872.  
  2873.      This may not hold true for other brands of modems.
  2874.  
  2875. #callOutPrefix "ATDT"         -- Normal Hayes installation w/ TT.
  2876. #callOutSuffix "\r"           -- Typical Hayes suffix
  2877.  
  2878.         SECTION 4: SPECIAL REQUIREMENT HANDLING
  2879.  
  2880.         NOTE: If you think you have an odd modem setup, such as a
  2881.      non-standard cable for allowing direct access to a high-speed pin, then
  2882.      consult the Citadel-86 SYSOP MANUAL, Section II.5.d, which details what
  2883.      abilities are available in this section of CTDLCNFG.SYS.  If that
  2884.      section is not clear, or doesn't seem to handle your particular problem,
  2885.      try to contact Hue, Jr. on the C-86 Test System (612) 866-1804 for help,
  2886.      or his successors.
  2887.  
  2888. #alldone x x                  -- end of file
  2889.  
  2890.  
  2891.  
  2892.  
  2893.  
  2894.  
  2895.  
  2896.  
  2897.  
  2898.  
  2899.  
  2900.  
  2901.  
  2902.                                     -43-
  2903.  
  2904.  
  2905.  
  2906.  
  2907.  
  2908.