home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 2 BBS / 02-BBS.zip / qnos2207.zip / QNODE.DOC < prev    next >
Text File  |  1994-07-31  |  61KB  |  1,341 lines

  1.     ############
  2.   ################
  3.  ###            ###
  4.  ###            ###
  5. ###              ###  ##    ##  #####  ######  #######
  6. ###              ###  ###   ## ##   ## ##   ## ##
  7. ###              ###  ####  ## ##   ## ##   ## ##
  8. ###              ###  ## ## ## ##   ## ##   ## #####
  9. ###              ###  ##  #### ##   ## ##   ## ##
  10. ###           ## ###  ##   ### ##   ## ##   ## ##
  11. ###           ## ###  ##    ##  #####  ######  #######
  12. ###           ## ###
  13. ###           ######       ##  ##  ###      ###   ### 
  14. ####           ####        ##  ## ## ##    ## ## ## ##
  15.  ###            ####        ####    ##     ## ## ## ##
  16.   ###################       ####   ##      ## ## ## ##
  17.     ############   ##        ##   ##### ##  ###   ###
  18.  
  19.                              Table of Contents
  20.  
  21. Part 1 - QNode
  22.        1.1 - Introduction
  23.        1.2 - Program Usage
  24.        1.3 - Error Levels
  25.        1.4 - Point Nets
  26.        1.5 - Multiple Networks
  27.  
  28. Part 2 - QDiff
  29.        2.1 - Introduction
  30.        2.2 - Program Usage
  31.        2.3 - Error Levels
  32.  
  33. Part 3 - QIDX
  34.        3.1 - Introduction
  35.        3.2 - Program Usage
  36.        3.3 - Error Levels
  37.  
  38. Part 4 - Configuration File
  39.        4.1 - Introduction
  40.        4.2 - Configuration File Commands
  41.  
  42. Part 5 - DPMI
  43.  
  44. Part 6 - Common Questions
  45.  
  46.                               Part 1 - QNode
  47.  
  48. 1.1 - Introduction
  49.  
  50.     QNode was originally designed to be a fast version 6 nodelist compiler 
  51.     which could handle my MNP modem properly, seeing as no other nodelist 
  52.     compiler was really able to do the job.
  53.  
  54.     When version 7 nodelists came out, and I found out just how slow the 
  55.     indexing system was, I determined that QNode really needed an update to 
  56.     handle the v7 nodelist.
  57.  
  58.     You are free to use QNode without paying me money, although I would
  59.     certainly appreciate people who do send money.
  60.  
  61.     QNode is also a copyrighted program, therefore you are not allowed to 
  62.     distribute any modified, or incomplete copies of the QNode distribution 
  63.     archive. You can re-archive this if you really feel like it, but that 
  64.     is really unfair to the people who download this, since it comes with 
  65.     my authenticity signature on it, and if people get that, at least they 
  66.     know that it is an original archive.
  67.  
  68.     To get the latest version of QNode, simply request the magic name of 
  69.     QNODE from 1:140/26.  This is probably going to net you a pre-release 
  70.     copy however.  The most recent release version will probably be 
  71.     available in the SDS-SOFTDIST area.
  72.  
  73.     If you want a version which uses DPMI, then request the magic name of 
  74.     QNODX.  If you have problems running the DPMI version of QNode under 
  75.     Windows version 3.00, then you can file request "OSDPMI.ZIP", which is 
  76.     a utility for changing which executable type a file is.  By default, 
  77.     QNode is set to be compatible with OS/2 and Windows 3.1.
  78.  
  79.     If you want an OS/2 version, request the magic name of QNOS2.
  80.  
  81.     Something that started with QNode 1.40 is that even numbered versions 
  82.     will be true release versions, while odd-numbered versions will be the 
  83.     pre-release versions.
  84.  
  85.     If you have any questions or problems relating to QNode, please be sure 
  86.     to let me know.  You can either netmail be (James West) at 1:140/26, or 
  87.     you can snail-mail be at:
  88.  
  89.        James West
  90.        854 Steeves Ave.
  91.        Saskatoon  SK  S7L-5N1
  92.        Canada
  93.  
  94. 1.2 - Program Usage
  95.  
  96.     QNode will use the file 'QNODE.CFG', or the first command line 
  97.     parameter as it's parameter file, and will always search and find the 
  98.     latest 'NODELIST.###' file (time-stamps are used, so end of year wrap 
  99.     isn't a problem.) and compile it into one of these sets of files:
  100.  
  101.        VERSION6        - NODELIST.DAT, NODELIST.IDX
  102.        VERSION7        - NODEX.DAT
  103.        VERSION7, INDEX - NODEX.NDX
  104.        USERLIST        - FIDOUSER.LST
  105.        USERLIST, INDEX - SYSOP.NDX
  106.  
  107.     You will only be allowed to create the version 7 index files and the 
  108.     FIDOUSER.LST file as well as the indexes on an EMS, DPMI, or OS/2 systems.
  109.  
  110.     Once QNode has read it's configuration file(s), and found a nodelist to 
  111.     compile, it will start processing the nodelist.  While compiling, you 
  112.     will notice that a status line is kept on the screen showing the most 
  113.     recent Zone, Region, Net, and Hub.  Hubs will only be shown for nets 
  114.     which are being included in the final nodelist.  If a net is not to be 
  115.     included in the final nodelist, you will see the word 'EXCLUDE' after 
  116.     the line, and QNode will enter an extremely fast 'overdrive' mode to 
  117.     get to the next network.
  118.  
  119. 1.3 - ERRORLEVELS
  120.  
  121.     The errorlevels which can be returned by QNODE are:
  122.  
  123.            0 = Nodelist compiled fine.
  124.            1 = No Nodelist found.
  125.            2 = Cannot open configuration file.
  126.            3 = Cannot open nodelist.
  127.            4 = Errors exist in the configuration file.
  128.            5 = Invalid binary nodelist.
  129.            6 = EMS allocation error.
  130.            7 = CRC error in nodelist(s).
  131.  
  132. 1.4 - POINTNETS
  133.  
  134.     Pointnets can be done in a couple of different ways, depending upon 
  135.     your system settings.  You can either create 'fake-net' point listings, 
  136.     or you can create a special 'point-control' file.  You can also create 
  137.     a 'modification' nodelist to insert your points.  See the multiple 
  138.     networks section for a description of this type of nodelist.
  139.  
  140.     In version 6 mode, you are only allowed to create a 'fake-net', but in 
  141.     version 7 mode, you can do either (or both for that matter.)
  142.  
  143.     A 'fake-net' is a dummy network which is not in the distribution 
  144.     nodelist, which lists your points as 'virtual' network addresses.  
  145.     These dummy network number start at 30000, and go up from there.  You 
  146.     should apply to your Zone Co-Ordinator for an official point-net 
  147.     number, but for testing purposes, you can pretty much choose a random 
  148.     number between 30000 and 32767.
  149.  
  150.     Each node within this fake-net is actually a point, where the node 
  151.     number from the fake-net is the point number of the node.  For example, 
  152.     if I used the fake-net number of 32000, then the points for 140/26.1, 
  153.     140/26.2, 140/26.3, ... would be listed in the nodelist as 32000/1, 
  154.     32000/2, 32000/3, ... .  It is the responsibility of your mail packer 
  155.     to handle these fake-net numbers.  (QMail, and Opus 1.70+ will handle 
  156.     fake-nets in this fashion.)
  157.  
  158.     A sample of a fake-net follows below:
  159.  
  160.     ---cut here---
  161.     Host,33000,The_North_Village,City,James_West,1-306-384-0836,2400,MNP
  162.     ,1,My_First_Point,City,Sysop_Name,1-306-555-1212,1200
  163.     ,2,My_Second_Point,City,Sysop_Name,1-306-555-1212,9600,HST,V32,V32b
  164.     ---cut here---
  165.  
  166.     This fake-net must be 'IMPORT'ed somewhere within the nodelist.  You 
  167.     can import it anywhere you like, but normally it should be imported 
  168.     after your own network, region, or zone.
  169.  
  170.     To import after your own network, you would use the configuration file 
  171.     command: 'IMPORT 1:140 POINT.LST'.  To import after your own region, 
  172.     you would use the command: 'IMPORT 1:17 POINT.LST'.  To import after 
  173.     your own zone, you would use the command: 'IMPORT 1: POINT.LST'.
  174.  
  175.     A 'point-control' file is one file which contains listings for all 
  176.     points that you will have access to.  It's fairly similar to the 'fake- 
  177.     net' file, but instead of having a dummy network for each node, the 
  178.     points are attached to the node itself.  As of QNode version 2.00, you 
  179.     are allowed to have as many point control files as you want.
  180.  
  181.     To use a point-control file, you should use the 'POINTS' command to 
  182.     include the file which you list all of your points in.  For example: 
  183.     'POINTS POINT.LST'.  In the point-control file, everything after the 
  184.     bosses node number is ignored, so you can use that as any sort of 
  185.     comment that you like.  (The actual information for the boss node is 
  186.     taken from the nodelist.)
  187.  
  188.     A sample of a point-control file follows:
  189.  
  190.     --- cut here ---
  191.     Boss,1:140/26,The_North_Village
  192.     ,1,AB_Data_Sales,City,Sysop,1-306-555-1212,1200
  193.     ,2,Another_Point,City,Somebody,1-306-555-1212,9600,HST,V32,V32b
  194.     Boss,1:140/200,Another_Boss_Node
  195.     ,1,His_First_Point,City,Sysop_Name,1-306-555-1212,1200
  196.     Pvt,2,His_Private_Point,City,Sysop,-Unpublished-,2400
  197.     --- cut here ---
  198.  
  199. 1.5 - MULTIPLE NETWORKS
  200.  
  201.     QNode also supports the compilation of many different input nodelists 
  202.     into one big output file.  This is used for the inclusion of other 
  203.     networks (like SIGnet for example.)
  204.  
  205.     The configuration file command which enables this is the 'NODELIST' 
  206.     command, which instructs QNode on which nodelists that it is supposed 
  207.     to compile.
  208.  
  209.     To compile a joint Fidonet, Signet system you would use the two 
  210.     commands: 'NODELIST NODELIST' and 'NODELIST SIGNODES'.
  211.  
  212.     WARNING:  If you use a 'NODELIST' command in your configuration file, 
  213.     then the default fidonet nodelist will NOT be included.  You must 
  214.     explicitly include the 'NODELIST NODELIST' statement if you still wish 
  215.     to include the fidonet nodelist.
  216.  
  217.     There is a special type of input nodelist called a 'modification' 
  218.     nodelist.  It can be used to insert points, or even zones, regions, 
  219.     nets, hubs, or basically anything.  It is most often used to insert 
  220.     points though.
  221.  
  222.     The basic form of the modification nodelist is:
  223.     
  224.     ---cut here---
  225.     Zone,1,->
  226.     Region,17,->
  227.     Host,140,->
  228.     ,26,->
  229.     Point,1,The_North_Village,Saskatoon_Sk,James_West,1-306-384-0836,9600
  230.     ---cut here---
  231.  
  232.     All lines which are used to advance the current node position must be 
  233.     terminated with the ",->" sequence, and may not have any other 
  234.     characters after that sequence.
  235.  
  236.     WARNING:  'modification' nodelists will probably severely confuse a 
  237.     version 6 nodelist.  They are only for the use of version 7 nodelists.
  238.  
  239.                                 Part 2 - QDIFF
  240.  
  241. 2.1 - Introduction
  242.  
  243.     QDiff is a companion program to QNode, which applies NODEDIFF files to 
  244.     nodelists, and will generated an updated nodelist.  QDiff can apply an 
  245.     almost unlimited number of nodediffs simultaneously.  For example, if 
  246.     you have NODELIST.101, NODEDIFF.108, NODEDIFF.115, NODEDIFF.122, and 
  247.     NODEDIFF.129 after running QDiff, you will be left with NODELIST.129.
  248.     Note:  The actual limit will be determined by the number of file 
  249.     handles that QDiff is able to open simultaneously.  Since it doesn't 
  250.     bother to expand it's handle table, the true limit would be around a 
  251.     dozen nodediffs.
  252.  
  253. 2.2  - Program Usage
  254.  
  255.     QDiff has some pretty simple usage for most people:  Just run it 
  256.     without any parameters.  It's all automatic.  The only thing you have 
  257.     to do is make sure that the nodelist and nodediff files are in the 
  258.     directory that you are in when you run QDiff.
  259.  
  260.     QDiff first searches through your NODELIST files to locate the one with 
  261.     the most recent time stamp, and then it will go through your NODEDIFF 
  262.     files trying to find ones which are more recent.  If it does not find 
  263.     any, then it will search for any archived NODEDIFF files to see whether 
  264.     any of them exist.  (Current archivers which are recognized are: ARC, 
  265.     ZIP, LHA, and ARJ, based upon the first letter of the extension.)
  266.  
  267.     You are NOT allowed to 'mix-and-match' archived and un-archived 
  268.     nodediffs.  You must supply one sort or the other to get a proper 
  269.     output file.
  270.  
  271.     === DOS/DPMI ===
  272.  
  273.     If given an archived nodediff, QDiff will extract it immediately using 
  274.     one of the following archive programs:
  275.  
  276.        for NODEDIFF.A##:
  277.                PKUNPAK, PKXARC, ARCE, PAK
  278.        for NODEDIFF.Z##:
  279.                PKUNZIP, PAK
  280.        for NODEDIFF.L##:
  281.                LHA, LHARC
  282.        for NODEDIFF.J##:
  283.                ARJ, UNARJ
  284.  
  285.     === OS/2 ===
  286.  
  287.     If given an archived nodediff, QDiff will determine the archive type, 
  288.     using the ARCHIVE.CFG file, and then run the extractor listed in that 
  289.     file.  Please keep the ARCHIVE.CFG file either in your path, or in your 
  290.     nodelist directory.  Subsequent programs written by me will also use 
  291.     this file.
  292.  
  293.     ===
  294.  
  295.     QDiff requires LOTS of disk space while running.  It must create an 
  296.     entirely new nodelist on disk before it can delete the old one.  This 
  297.     new nodelist will be created in a file named 'QDIFF$.TMP', which will 
  298.     be renamed to the correct name if the nodelist is compiled 
  299.     successfully.
  300.  
  301.     To use QDiff with multiple networks, you must use some command line 
  302.     parameters.  For each network that you wish to compile, you should put 
  303.     the name of the nodelist, a comma, and the name of the nodediff file.  
  304.     You can do more than one network at a time, but it's suggested that you 
  305.     just do one network at once.  To cause QDiff to look for a SIGnet 
  306.     nodelist/diff combination for instance, you would use the command: 
  307.     'QDIFF SIGNODES,SIGDIFF'
  308.  
  309.     Other parameters that are supported by QDiff are as follows:
  310.  
  311. /D  Deletes all NODEDIFF files when completed.  This will not delete 
  312.     archived nodediff files.  If a CRC error is detected during compile, 
  313.     the nodediff files will still be deleted.
  314. /N  Deletes the old nodelist.
  315. /Z  Instructs QDiff to place an EOF mark at the end of the new nodelist.
  316.     This is not required for either QDiff or QNode, but some utilities 
  317.     seem to expect it I guess.
  318. /C  Instructs QDiff that if it ever encounters a CR without an accompanying 
  319.     linefeed, that it will then remove the offending CR.  This will cause 
  320.     the CRC to be incorrect, but some external nodelist utilities do not 
  321.     like CR to be considered part of a single line.
  322. /P  Instructs QDiff to run some sort of command based upon the new nodelist 
  323.     or nodediff files.  This command can include the following percent 
  324.     directives:
  325.        %1 - Last 1 character of the julian date of the new nodelist.
  326.        %2 - Last 2 characters of the julian date of the new nodelist.
  327.        %3 - The full julian date of the new nodelist.
  328.        %D - The file name (without numbers) of the NODEDIFF file.
  329.        %N - The file name (without numbers) of the NODELIST file.
  330.     The %D and %N parameters both include a trailing period.
  331.     To include spaces in the command (as most commands require), you would 
  332.     have to encase the parameter in quotation marks.  Some sample commands 
  333.     follow:
  334.        /P:"pkpak -otc a nodelist.a%2 nodelist.%3"
  335.        /P:"pkzip -a nodelist.z%2 nodelist.%3"
  336.        /P:"lha a %nl%2 %n%3"
  337.     NOTE:  Within a batch file, you must use two percent signs.
  338.  
  339. /BINARY  Instructs QDiff to create a binary nodelist.
  340.     *************************************
  341.     *** WARNING: THIS IS IRREVERSIBLE ***
  342.     *************************************
  343.     If you decide to use this command, make sure that you have access to a 
  344.     real nodelist somewhere.  If your nodelist somehow gets corrupted, it 
  345.     will be completed unusable.
  346.  
  347.     The benefit of using the /BINARY switch is that the nodelist will take 
  348.     up approximately HALF the disk space on your local drive.  This binary 
  349.     nodelist is completely against FTSC, and therefore you should not make 
  350.     the binary nodelist available for download.  The only purpose for this 
  351.     command is for people who are running in extremely low disk space 
  352.     situations.
  353.  
  354.     Once you have used the /BINARY switch once, it is unnecessary to 
  355.     specify it again, since QDiff will automatically create a binary 
  356.     nodelist if it gets a binary nodelist as an input file.  Therefore if 
  357.     you wish to keep certain nodelists in ascii, and certain nodelists in 
  358.     binary, all that you need to do is manually convert the respective 
  359.     nodelists to binary, and then QDiff will automatically keep those 
  360.     nodelists in binary while leaving the other nodelists in ascii.
  361.  
  362.     De-Activated Stuff:
  363.        1: The Nodelist CRC can not be checked.
  364.        2: Lower-Case anything.
  365.        3: The EXPORT command is dead.
  366.        4: QDiff will take longer.  (QNode might actually be quicker.)
  367.  
  368. 2.3 - Error Levels
  369.  
  370.     The errorlevels which can be returned by QDIFF are:
  371.  
  372.        0 = NODEDIFF applied normally
  373.        1 = NODELIST does not require updating
  374.        2 = Cannot find nodediff
  375.        3 = Cannot find nodelist
  376.        4 = Cannot find extraction program
  377.        5 = NODEDIFF not found after running extraction program
  378.        6 = Extraction program reported an errorlevel other than 0
  379.        7 = Disk error during writing, probably disk full
  380.        8 = CRC error in new nodelist
  381.        9 = Invalid binary file version
  382.  
  383.                                  Part 3 - QIDX
  384.  
  385. 3.1 - Introduction
  386.  
  387.     QIDX is a simple program which was written to generate the nodelist 
  388.     indexes without having to compile the nodelist.  It is also used when 
  389.     somebody wishes to generate the FIDOUSER.LST file as well as the 
  390.     version 7 indexes.
  391.  
  392.     The ability to build the user index was just thrown in.
  393.  
  394. 3.2 - Program Usage
  395.  
  396.     To run QIDX, simply type 'QIDX' followed by the list of parameters for 
  397.     the indexes to be built.  These parameters are:
  398.  
  399. /N  Generates the node number index.  You may specify /N:filename to change 
  400.     the name of the index.  (This defaults to NODEX.NDX)
  401. /S  Generates the sysop index.  You may specify /S:filename to change the 
  402.     name of the index.  (This defaults to SYSOP.NDX)
  403.     
  404. /U  Generates the user file index.  You may specify /U:filename to change 
  405.     the name of the index.  (This defaults to USER.NDX)
  406.     NOTE:  USER.DAT must be in the current directory for /U to work.
  407.  
  408.     If you use a large portion, or all, of the nodelist, then you may wish 
  409.     to have QIDX build the node number and sysop indexes separately.  If 
  410.     you build both at once, then QIDX must divide memory in half for each 
  411.     index.  If building only one, then it can use all of memory.
  412.  
  413.     To have QIDX compile a different nodelist data file than NODEX.DAT, you 
  414.     can simply specify the nodelist filename on the command line.
  415.  
  416.     To compile SIGX.DAT into SIGX.NDX and SIGSYSOP.NDX, you would use the 
  417.     command line:
  418.  
  419.     QIDX SIGX.DAT /N:SIGX.NDX /S:SIGSYSOP.NDX
  420.  
  421. 3.3 - Errorlevels
  422.  
  423.     0 = Everythings fine.
  424.     1 = Could not open either the nodelist, or the userlist data file.
  425.     2 = Bad parameter specified on command line.
  426.  
  427.                           Part 4 - Configuration File
  428.  
  429. 4.1 - Introduction
  430.  
  431.     The QNode configuration file is a free-format text file, which consists 
  432.     of a keyword followed by optional parameters.  The file is totally case 
  433.     in-sensitive, although some keywords may not be.  To place a comment 
  434.     within the file, preceded the comment by a semi-colon (;).
  435.     WARNING:  Do not place a comment on a password line.
  436.  
  437. 4.2 - Configuration File Commands
  438.  
  439.     NOTE:  Any parameter which starts with 'USES' may be enabled by 
  440.     preceding the statement with 'USES' and disabled by preceding the 
  441.     statement with '!USES'.
  442.  
  443.     *** STUFF ABOUT YOUR SYSTEM ***
  444. ADDR #:#/#.# {#:#/#.#} ; SUPERCEDES 'ZONE, NET, NODE'
  445.     This sets YOUR network node number.  Additional addresses may be 
  446.     specified, but the first address listed is the default. You are also 
  447.     allowed to place multiple ADDR lines in your configuration file, but 
  448.     each subsequent one will totally replace the previous ones. This can 
  449.     however be used to reduce typing by setting default zone/net numbers.
  450.  
  451.     WARNING: If you use multiple ADDR lines, be absolutely sure that the 
  452.     last ADDR line in the file is the real one, with all addresses, and the 
  453.     first address being your 'normal' address.
  454.  
  455. AKA #:#/#.# {#:#/#.#} ; ENHANCES 'ADDR'
  456.     This can be used to set additional addresses without reseting the prior
  457.     addresses.  This can be used to keep your ADDR line shorter.  You can
  458.     have up to 20 addresses.
  459.  
  460. COUNTRY #
  461.     This sets your countries telephone direct dial code.  In Canada and the 
  462.     United States, this is '1'.
  463.  
  464. NODELIST filename{ #{ node-data{ sysop-data}}}
  465.     This is to be used to enable multiple, or non-standard nodelist 
  466.     generation.  If no nodelist lines are specified, it will default to: 
  467.     'NODELIST'.  You may have as many of these lines as you like.  The 
  468.     optional number specifies a 'zone override'. If this number is non-zero 
  469.     then the first zone will be taken to be the number you specify, instead 
  470.     of the zone listed.  Additional zones will be incremented by one. The 
  471.     zone override is only valid for the nodelist that it is listed for. An 
  472.     example for a fidonet + signet system follows:
  473.        NODELIST NODELIST
  474.        NODELIST SIGNODES
  475.     The node-data and sysop-data files are used in v7 mode to compile that 
  476.     nodelist to an entirely different set of data files.  If these options 
  477.     are never specified, they will default to: NODEX and SYSOP.
  478.  
  479.     WARNING:  Do not use file extensions on these commands.
  480.  
  481.     Whenever an entry is encountered with a file specified, the current 
  482.     file will be closed, and the new file(s) will be created.  The data- 
  483.     file overides are only supported in VERSION7 mode.
  484.  
  485.     Do *NOT* specify the same file names on a later line.  This will only 
  486.     erase the previous files.  To compile multiple entries into the same 
  487.     file, group all nodelists whose data should go into the same file 
  488.     together, and then specify the filename only for the first entry.
  489.  
  490.     As a weird example, suppose you want to have NODELIST and SIGNODES  
  491.     compiled together into NODEX.DAT, NODEX.NDX, and SYSOP.NDX, but you 
  492.     need SIGNODES to be compiled into SIGX.DAT, SIGX.NDX, and SIGSYSOP.NDX 
  493.     as well.  The proper usage would be:
  494.  
  495.        NODELIST NODELIST
  496.        NODELIST SIGNODES
  497.        NODELIST SIGNODES 0 SIGX SIGSYSOP
  498.  
  499. USES USERLIST ; SUPERCEDES 'USERLIST'
  500.     This is an automatic keyword, which will select the userlist that can 
  501.     be generated, and generate it.  If you are in VERSION7 mode, you get
  502.     V7USERS, otherwise you get FIDOUSER.
  503.  
  504. USES V7USERS
  505.     This is a version specific replacement to USES USERLIST.
  506.  
  507. USES FIDOUSER [limit] ; SUPERCEDES 'USERLIST' IN VERSION6 MODE.
  508.     This requests that the file 'FIDOUSER.LST' be generated.  This file can 
  509.     only be generated if you either do not generate the version 7 index 
  510.     files, or if you have a LOT of EMS available.  (See the "USES EMS" 
  511.     parameter.)  The limit is the maximum amount of base-memory remaining 
  512.     before the userlist will be swapped to disk.  It defaults to 4096.
  513.  
  514. USES ALLUSERS ; SUPERCEDES 'ALLUSERS'
  515.     This requests that all user names be placed in FIDOUSER.LST, whether 
  516.     you have them in your nodelist or not.  This is normally used for the 
  517.     ONEZONE or REGULAR style of nodelists.  Since inter-zone mail is 
  518.     normally gate-routed, you do not require the actual node in your 
  519.     nodelist to send mail to people.
  520.  
  521. USES ALLMODEMTRANS
  522.     This requests that QNode compile ALL modemtrans commands on every node.
  523.     You could use this to set bitfields in the modemtype byte, instead of
  524.     a straight byte value.  This limits you to using eight specific values
  525.     when used however (1, 2, 4, 8, 16, 32, 64, 128).
  526.  
  527. USES BRIEF
  528.     This asks for status lines to only be printed for every region, instead 
  529.     of for every net/host.  This is useful if you run in a graphic window.
  530.  
  531. USES HUBS ; SUPERCEDES 'HUBS'
  532.     This asks for hub nodes in nets other than your own to be given mail 
  533.     command of all private nodes underneath them. Normally, mail command is 
  534.     given to the host, unless it is in your own net.
  535.  
  536. USES DIRECTPOINT
  537.     This asks for points to be treated like nodes.  If you turn this on, then 
  538.     private point will get it's bosses password, otherwise a private point 
  539.     will have no password in it.
  540.  
  541. USES PVTPASSWORD
  542.     This asks for private nodes to have the password of the node whose phone 
  543.     number that they are going to be adopting.  With this option on, then a 
  544.     private node in a net where you have a password with the host/hub will 
  545.     not be able to call your system.  If you have this off, then you will 
  546.     not be able to call them.  As of QNode v2.04, this option defaults to
  547.     OFF.
  548.  
  549. USES EMS [size] ; IGNORED IN DPMI VERSION
  550.     This asks for EMS memory to be used for indexes and version 7 buffers. 
  551.     This will default to on, so the only use for this command is so that 
  552.     you can use '!USES EMS' to disable this setting.  The default for this 
  553.     command is to allocate 2048.
  554.  
  555.     NOTE:  EMS Indexing is noticably slower than using conventional memory.  
  556.     I would only suggest using this if you want to generate FIDOUSER.LST, 
  557.     or if you are compiling most of the nodelist.
  558.     
  559.     NOTE:  The index does NOT need to fit within it's EMS boundaries.  Index 
  560.     segments will be swapped to disk on an LRU algorithm if you fill the EMS 
  561.     boundary.
  562.     
  563.     NOTE:  As I've noticed running under MS-Windows, EMS requests can be 
  564.     denied for allocation even if there's still plenty of EMS remaining.  I 
  565.     can only determine that MS-Windows is trying to prevent applications from 
  566.     hogging the whole system.  Thus I had to lower my default allocation from 
  567.     2048 downto 1600 or so.  If you try larger amounts under MS-Windows, and 
  568.     possibly OS/2 as well, you may see a warning message telling you to lower 
  569.     your EMS allocation, or to remove it altogether.
  570.  
  571. ALLOCATE INPUT #
  572.     This sets the memory allocation for input files. (Like NODELIST.###)
  573.  
  574. ALLOCATE OUTPUT #
  575.     This sets the memory allocation for output files. (Like NODEX.DAT)
  576.  
  577. ALLOCATE TEXT #
  578.     This sets the memory allocation to be used for auxilliary text files 
  579.     used in the IMPORT, EXPORT, and FORMAT commands.  The default value for 
  580.     this is 32768.  The maximum value is either 65528, or half of remaining 
  581.     memory (whichever comes first.), but will always get at least 128 
  582.     bytes.
  583.  
  584. KEEP FIRSTUSER
  585.     This tells QNode to keep the first user entry specificed during 
  586.     nodelist compile.  This was the default in QNode <1.41
  587.  
  588. KEEP LASTUSER
  589.     This tells QNode to keep the last copy of a user entry that it 
  590.     encounters during nodelist compile.  This is the default in QNode>=1.41
  591.  
  592. KEEP ALLUSERS ; SUPERCEDES 'DUPLICATE'
  593.     This allows duplicate entries in a VERSION7 sysop index.  OPUS doesn't 
  594.     do anything with the dupes however.
  595.  
  596. MAXBAUD #[|#] {[FLAG #[|#]] ...}
  597.     This sets the maximum baud rate which will be placed in the compiled 
  598.     nodelist.  Any entries above that value will be reduced to that value.  
  599.     Notice the optional second number after the pipe symbol.  This second 
  600.     number if the modem type to be used.  This sets the PREDIAL# to be used 
  601.     for Opus 1.70+, or the ModemTrans to be used for BinkleyTerm.
  602.  
  603.     The set of flags after the baud rate specify baud rate or dial prefix 
  604.     extensions.  Any node whose entries contains the flag listed will be 
  605.     changed to the specified baud rate (and optional modem type).  Unlike 
  606.     every other portion of QNode, the flags work on a LAST MATCH rule.  In 
  607.     case of multiple matches, the last one will have precedence.  You are 
  608.     allowed to have up to 20 flags specified.
  609.  
  610.     An example for a 2400 baud, MNP 5 modem is:
  611.        MAXBAUD 2400|1  HST 9600|0  MNP 9600|0  V42 9600|0
  612.     Where ModemType 0 is a standard MNP dial, and ModemType 1 disables the 
  613.     MNP for the dial.
  614.  
  615.     And example for an HST w/V32bis is:
  616.        MAXBAUD 9600|0  HST 9600|1  V32 9600|1  V32B 9600|2
  617.     Where ModemType 0 is a standard dial, ModemType 1 dials the older HST 
  618.     modems in HST mode, and ModemType 2 dials the newer V32bis modems with 
  619.     V32bis enabled.  This would enable Janus for higher speeds.  If you 
  620.     don't have Janus, you may wish to dial V32B in HST mode as well.
  621.  
  622. FLAGBAUD FLAG #[|#] {...}
  623.     This adds more flag modifications to the MAXBAUD statement, without
  624.     changing the default baud rate and modem type.
  625.  
  626. MODEMTRANS # [=BAUD[:BAUD]] {[!]FLAG ...}
  627.     This command is an alternative to the MAXBAUD/FLAGBAUD method of doing 
  628.     things.  Basically, for every node which has the flags listed, and 
  629.     doesn't have the flags which you preceded with an exclamation point, 
  630.     and whose baud rate is within the range specified, will have the listed 
  631.     MODEMTRANS value attached to it.  It is strongly recommended that you 
  632.     not mix FLAGBAUD and MODEMTRANS statements.  See 'USES ALLMODEMTRANS' 
  633.     for an alternate way of calculating the modemtrans values.
  634.  
  635.       Examples:  MODEMTRANS 4 =2400 MNP  ; This sets 2400 Baud MNP to type 4
  636.                  MODEMTRANS 3 300:2400 !MNP ; This sets low speed, non-MNP
  637.                                             ; modems to type 3.
  638.  
  639.     *** NODELIST GENERATION COMMANDS ***
  640. COMPILE MYZONES ; Supercedes 'ONEZONE'
  641. COMPILE ONEZONE
  642.     Asks for only nodes in your zone(s). (ie: ZONE:*/*)
  643.  
  644. COMPILE STANDARD ; Supercedes 'REGULAR'
  645. COMPILE REGULAR
  646.     Asks for only your zone(s), plus hub nodes from other zones.  (ie: 
  647.     ZONE:*/* + *:*/0)
  648.  
  649. COMPILE EVERYTHING ; Supercedes 'ALLZONES'
  650. COMPILE ALLZONES
  651.     Asks for a complete nodelist (ie: *:*/*)
  652.  
  653. COMPILE NOTHING ; Supercedes 'NOZONES'
  654. COMPILE NOZONES
  655.     Asks for NO nodes whatsoever to be included
  656.  
  657. USES VERSION6
  658.     Asks for a version 6 nodelist
  659.  
  660. USES VERSION7
  661.     Asks for a version 7 nodelist (DEFAULT)
  662.  
  663. USES INDEX
  664.     This is an automatic command, which selects the current nodelist index
  665.     to be generated.  In VERSION7 mode, you get a V7INDEX.
  666.  
  667. USES V7INDEX
  668.     This is a version specific replacement to USES INDEX.
  669.  
  670.     It asks for version 7 indexes to be created.  NOTE:  You may wish to 
  671.     use QIDX instead of this to generate indexes.  Either to give more 
  672.     memory for index creation, or to generate the FIDOUSER.LST file.
  673.  
  674.     ANOTHER WARNING: When generating a VERSION7 data file, you MUST create 
  675.     indexes by one method or another.  You must either specify the USES 
  676.     INDEX, or use QIDX to build the indexes.
  677.  
  678.     *** NODELIST GENERATION MODIFIERS ***
  679. ADD {[nodeid] ...}
  680. DELETE {[nodeid] ...}
  681.     These two functions are used to change the list generated by the quick 
  682.     output list types.  The [nodeid] statements may be any of these style 
  683.     of numbers:
  684.  
  685.        ZONE:         Asks for the entire zone
  686.        ZONE:REGION   Asks for the entire region
  687.        ZONE:NET      Asks for the entire net
  688.        REGION        Asks for a region in your own zone
  689.        NET           Asks for a net in your own zone
  690.        -ZONE:        Asks for admin node for the zone
  691.        ZONE:-REGION  Asks for admin nodes from specified region
  692.  
  693.     These commands are processed in the order they are encountered.  You 
  694.     may have as many add and delete lines as you like, in any order.  In 
  695.     cases of multiple matches, the first applicable match will rule.
  696.  
  697.     If you reference nodes in any zone, then the zone admin nodes will be 
  698.     automatically added into the final output list.
  699.  
  700.     If you ask for the admin nodes for a specific region, then the 
  701.     independant nodes will be referenced as well.
  702.  
  703.     For example, to add only region 17, and all admin nodes for Zone 1, I 
  704.     use (with a second ADD line to add all other nets that I ever do 
  705.     netmail with.)
  706.  
  707.        NOZONES
  708.        ADD -1: -10 -11 -12 -13 -14 -15 -16 17 -18 -19
  709.  
  710. POINTS filename
  711.     This will include the specified file as the point-control file.  This 
  712.     keyword is only active while generating a version 7 nodelist.  See the 
  713.     section on pointnets for an example of this file.  You may have 
  714.     multiple point control files.
  715.  
  716.     If you do not specify a file extension, this command will search for all 
  717.     files with a numeric file extensions, and select the most recent one, 
  718.     and compile that.  If there are no numbered extensions available, it 
  719.     will attempt to use the file without an extension.
  720.  
  721. INCLUDE filename
  722.     This will include the specified file into the QNODE.CFG parsing pass.  
  723.     I personally use this to include my dial and cost tables, which are 
  724.     used by every nodelist processor.
  725.  
  726. EXPORT nodeid filename
  727.     This will export, a raw portion of the nodelist into a specified file.  
  728.     Normally used to get a list of the nodes in your own net.  See 
  729.     ADD/DELETE for nodeid values.  This works for all nodes, whether they 
  730.     are in your nodelist or not.
  731.     This can also be used to send an abbreviated nodelist to someone else.
  732.     WARNING: This command is unavailable if you are using the binary 
  733.     nodelist format.
  734.  
  735. IMPORT nodeid filename
  736.     This will import a raw style portion of a nodelist into the generated 
  737.     nodelist once the value specified by nodeid has passed.  (Therefore if 
  738.     you import with your own net, you add nodes to the end of your net.)  
  739.     The nodeid values are described in ADD/DELETE.
  740.  
  741.     For example, to add the 'fake-net' 31000 to the end of your zone, you 
  742.     would use the command: "IMPORT 1: POINT.LST".  To add it to the end of 
  743.     your region, you would use the command: "IMPORT 17 POINT.LST".
  744.  
  745.     To add additional nodes to a network, you can use the import command to 
  746.     import after a network, with the import file not having any zone, 
  747.     region, or host commands in it.
  748.  
  749.     NOTE:  Any networks created through import files should be explicitly 
  750.     included in the output file using the 'ADD' keyword.  This is not 
  751.     always necessary, but there are occasions when it is.
  752.  
  753. REPLACE nodeid filename
  754.     This will replace the nodeid that you specify with the file that you 
  755.     specify.  You can replace a net, region, zone, or the admin portions of 
  756.     a region or zone.  It's usage is exactly like IMPORT.  It will only 
  757.     work within 'ADD'ed sections of the nodelist.
  758.  
  759. FORMAT nodeid filename
  760.     This works just like the EXPORT command, except it makes a nice looking 
  761.     print-out, and it will only work with nodes which have been included in 
  762.     the output nodelist.
  763.  
  764.     *** BULK NODE MODIFICATIONS ***
  765.  
  766. DEFAULT FEE DOMESTIC fee
  767.     This sets the default fee for domestic calls (within your own country 
  768.     code)  This will normally default to '65535', which basically means 
  769.     that the fee will equal the cost.
  770.  
  771. DEFAULT FEE INTERNATIONAL fee
  772.     This sets the default fee for international calls (outside your own
  773.     country code)  This will normally default to '65535', which basically
  774.     means that the fee will equal the cost.
  775.  
  776. DEFAULT COST DOMESTIC cost [fee]
  777.     This sets the default cost for domestic calls (within your own country 
  778.     code)  This will normally default to 0.
  779.  
  780. DEFAULT COST INTERNATIONAL cost [fee]
  781.     This sets the default cost for international calls (outside your own 
  782.     country code)  This will normally default to 0.
  783.  
  784. DEFAULT DIAL DOMESTIC [predial][/postdial]
  785.     This sets the default dial substitution for domestic calls (within your 
  786.     own country code)  This dial substitution may contain a '/' in it to 
  787.     separate the prefix addition and the suffix addition.  (For example, an 
  788.     entry of '555-1212W/!' would place the entry '555-1212W' in front of 
  789.     the phone number, and would place an exclamation point at the end.  In 
  790.     most countries, this entry should be left blank.
  791.  
  792. DEFAULT DIAL INTERNATIONAL [predial][/postdial]
  793.     This sets the default dial substitution for international calls 
  794.     (outside your own country code)  In Canada and the US, this is '011-' 
  795.     Other countries international direct dial codes will vary.  This 
  796.     follows the same rules as the default domestic dial string.
  797.  
  798. TYPE SCRIPT modem-type fromdial todial
  799.     This will perform a dial substitution on a node, if the modem-type 
  800.     matches the number that you specify.  The dial substitution will be 
  801.     done if there isn't a specific script for the node.  This command will 
  802.     be executed before a global script command will.
  803.  
  804. TYPE COST modem-type newcost [newfee]
  805.     This sets the default cost and/or fee for a modem of that particular 
  806.     modem-type.  The modem-type is a number from 0-255.  The fee is 
  807.     optional, and if not specified, will default to the same as the cost.  
  808.     This command will be applied after all other cost processing, and will 
  809.     only be applied if it is not a free call.  If a specific 'CALLCOST' 
  810.     statement is given, then the TYPE COST table will not be checked.
  811.  
  812. SCRIPT minbaud maxbaud cost fromdial todial
  813.     This is one form of the script command, which I invented to handle my 
  814.     2400 baud/MNP 5 modem.  In this case, every node which has a baud rate 
  815.     between (or equal to) the minbaud and the maxbaud, with a cost equal to 
  816.     the cost, will have the listed dial substitution done to it.  (If the 
  817.     start of the phone number doesn't match the fromdial, that node is not 
  818.     changed.)
  819.  
  820.     On my system, when I used VERSION6, I used:
  821.        SCRIPT 300 2400 0 1- "NOMNP1.SCR"   ; Local Calls
  822.        SCRIPT 300 2400 25 1- "NOMNP2.SCR"  ; No Areacode calls
  823.        SCRIPT 300 2400 50 1- "NOMNP3.SCR"  ; Long Distance calls
  824.  
  825.     VERSION7 nodelist users would probably want to use the ModemType 
  826.     settings.  (See MAXBAUD)
  827.  
  828.     *** DIAL/COST TABLES ***
  829.     NOTE:  If you define the 'DEFAULT COST' and 'DEFAULT DIAL' parameters, 
  830.     then these commands do not need to have any parameters after them.  (In 
  831.     fact they don't need any parameters even if you don't specify the 
  832.     lines.)  For those wondering, I split these off to support the 'DEFAULT 
  833.     FEE' parameter.  The others were added for completeness, as well as 
  834.     readability.
  835.  
  836.     In the dial table, there are two parameters after the dial keyword. the 
  837.     first is the modifications to local calls (ones within your own country 
  838.     code), and the second is the modifications to the international direct 
  839.     dial phone numbers (ones with any other country code.)  Each of these 
  840.     entries consists of what to put before the phone number, as well as 
  841.     what to put after the phone number.  To seperate the two, use a slash 
  842.     (/).  For no change to the phone number, use a slash by itself. You 
  843.     should use the keyword 'End' to terminate the dial and cost tables.
  844.  
  845.     The dial table will replace every phone number that starts with the 
  846.     first sequence with the second sequence.  This is for local or regional 
  847.     calls where you aren't allowed to dial the entire phone number.
  848.  
  849.     NOTE: Both the dial table and cost table are on a 'first match' system.  
  850.     Therefore, you should put the entries in in the order of longest to 
  851.     shortest.
  852.  
  853.     An example follows:
  854.  
  855.        DIAL    /    011-
  856.        ; Adds 011- to international calls, no change to domestic calls
  857.     
  858.        ; The following set up local calls from Saskatoon, SK
  859.          1-306-242- 242-
  860.          1-306-244- 244-
  861.          1-306-373- 373-
  862.          1-306-374- 374-
  863.          1-306-382- 382-
  864.          1-306-384- 384-
  865.          1-306-652- 652-
  866.          1-306-654- 654-
  867.          1-306-664- 664-
  868.          1-306-665- 665-
  869.          1-306-931- 931-
  870.          1-306-933- 933-
  871.          1-306-934- 934-
  872.          1-306-955- 955-
  873.          1-306-966- 966-
  874.          1-306-978- 978-
  875.          1-306-329- 329-
  876.          1-306- 1-          ;area code strip for Saskatchewan calls
  877.        END
  878.     
  879.     The COST statement at the head of the table can take two arguments, 
  880.     which are the default costs in pennies to apply to domestic and 
  881.     international calls, respectively.
  882.  
  883.     Each entry in the cost table consists of a partial phone number 
  884.     followed by a cost in pennies for sending a message to any node whose 
  885.     phone number begins with that string.  As with the dialing table, the 
  886.     first matching entry is the one that is used.  The cost table is used 
  887.     before the dial table is used, so you should always use the fully 
  888.     expanded phone numbers, instead of the simplified phone numbers which 
  889.     the dial table would generate
  890.  
  891.     You may append an additional entry to the end of each line, being the 
  892.     fee charged to the user for sending messages to nodes within that phone 
  893.     prefix.
  894.  
  895.     An example follows:
  896.  
  897.        COST 50 250
  898.        ; This gives a default cost of 50 cents to domestic calls, and
  899.        ; $2.50 to international calls.
  900.  
  901.        ; The following numbers are free from Saskatoon, SK
  902.          1-306-242- 00
  903.          1-306-244- 00
  904.          1-306-373- 00
  905.          1-306-374- 00
  906.          1-306-382- 00
  907.          1-306-384- 00
  908.          1-306-652- 00
  909.          1-306-654- 00
  910.          1-306-664- 00
  911.          1-306-665- 00
  912.          1-306-931- 00
  913.          1-306-933- 00
  914.          1-306-934- 00
  915.          1-306-955- 00
  916.          1-306-966- 00
  917.          1-306-978- 00
  918.          1-306-329- 00
  919.          1-306-585- 25 22 ; One of Reginas prefixes (short distance)
  920.          1-306- 25 ; short distance calls, cheaper rates
  921.          1-800- 00
  922.          1-900- 50
  923.        END
  924.  
  925.     As a memory saving gesture, The 'DIALCOST' table has also been added.  
  926.     It is a combination of the DIAL and COST tables.  (However you may 
  927.     still use the DIAL and COST tables, and even use them in conjunction 
  928.     with the DIALCOST table.  If you use duplicate tables, then the 
  929.     DIALCOST table will be applied first, then the DIAL or COST table.  The 
  930.     DIAL or COST table will be checked, even if there was a matching entry 
  931.     in the DIALCOST table.
  932.  
  933.     The DIALCOST table has a header with four values, these values being:  
  934.     The default domestic cost for messages, the default international cost 
  935.     for messages, the default domestic dial substitution, and the default 
  936.     international dial substitution.
  937.  
  938.     Every entry in the DIALCOST table has 3 mandatory parameters, plus up 
  939.     to 2 optional parameter.  The parameters, in order are: The partial 
  940.     phone number for the dial substitution and cost to take effect on, the 
  941.     replacement dial string to be used, the cost of the message to be sent, 
  942.     the fourth optional parameter is the fee charged to the user for a 
  943.     message to be sent to that node.
  944.  
  945.     The fifth optional parameter (v2.03+) is the modemtype modifier.  It 
  946.     can be a positive or negative number which is the value to be added to 
  947.     the modemtype.  It's main use is for telephone dialing systems where 
  948.     all long-distance nodes need special dial strings.
  949.       For example: To dial long distance nodes using UniTel from Saskatoon.
  950.            1-306-382- 382-
  951.            ...
  952.            1-   1-   30 30 2 ; This adds 2 to the modemtype.
  953.  
  954.     An example follows:
  955.  
  956.        DIALCOST 50 250 / 011-
  957.     
  958.        ; The following set up local calls from Saskatoon, SK
  959.          1-306-242-   242- 00
  960.          1-306-244-   244- 00
  961.          1-306-373-   373- 00
  962.          1-306-374-   374- 00
  963.          1-306-382-   382- 00
  964.          1-306-384-   384- 00
  965.          1-306-652-   652- 00
  966.          1-306-654-   654- 00
  967.          1-306-664-   664- 00
  968.          1-306-665-   665- 00
  969.          1-306-931-   931- 00
  970.          1-306-933-   933- 00
  971.          1-306-934-   934- 00
  972.          1-306-955-   955- 00
  973.          1-306-966-   966- 00
  974.          1-306-978-   978- 00
  975.          1-306-329-   329- 00
  976.          1-306-585- 1-585- 25 22 ; Regina, known cost call.
  977.          1-306-     1-     25
  978.          1-800-     1-800- 00
  979.          1-900-     1-900- 50
  980.        END
  981.  
  982.     *** INDIVIDUAL NODE MODIFICATIONS ***
  983.  
  984. BAUD [zone:][net/]node baudrate[|modemtype]
  985.     Sets the specified nodes baudrate to whatever you specify.  The modem 
  986.     type flag can be set at the same time, by separating it from the 
  987.     baudrate with a pipe symbol.
  988.  
  989.        BAUD 1:140/26 9600|0
  990.  
  991. FLAGS [zone:][net/]node flaglist
  992.     Adds the specified flags to the node. (Normally 'CM').  You can also 
  993.     add the flags: '9', 'A', 'B', 'D', 'E', 'F' which will assigned the 
  994.     user defined flags in the nodelist.  ('F' is bit 15).  In case you're 
  995.     wondering why I skipped 'C', that flag specifies a point, and it 
  996.     wouldn't be a good idea to let somebody set that flag on their own.
  997.        FLAGS 140/26 CM
  998.  
  999. PHONE [zone:][net/]node phonenumber
  1000.     Sets the specified nodes phone number (Unless the node number is 
  1001.     unlisted, you may want to see if you can use the SCRIPT command 
  1002.     instead, which doesn't have to be changed if the person ever changes 
  1003.     their phone number.)
  1004.  
  1005.        PHONE 1:140/26 1-306-384-0836
  1006.  
  1007. CALLCOST [zone:][net/]node cost [fee]
  1008.     Sets the charge to the user for a message to be sent to the listed 
  1009.     node.  WARNING: Using this on nodes may cause the nodes to be 
  1010.     unacceptable in the bulk SCRIPT statements. If the node has more than 
  1011.     one node number, then you should probably use a specific COST statement.
  1012.  
  1013.     The first item 'cost' is used for nodelist processing, the second 
  1014.     entry, or 'fee' is charged to the user for a message to be sent to that 
  1015.     node.  If you do not list the fee, then it will default to the same 
  1016.     value as the cost.
  1017.  
  1018.        CALLCOST 26 1
  1019.  
  1020. PASSWORD [zone:][net/]node password
  1021.     Sets the specified nodes password. The password can be absolutely 
  1022.     anything.  Leading and trailing spaces and tabs will be removed, but 
  1023.     everything from that point on is part of the password.  Therefore, do 
  1024.     NOT place a comment on this line.
  1025.  
  1026.        PASSWORD 1:140/26 PASSWORD
  1027.  
  1028. SCRIPT [zone:]net/node fromdial todial
  1029.     This is the second form of the script command.  Please note that the 
  1030.     net number IS required, even if it's your own net. (I use the '/' to 
  1031.     determine the difference between the two script lines.)
  1032.  
  1033.        SCRIPT 140/88 1- "VORTEX.SCR"  ; Needs a special script.
  1034.  
  1035.                                   Part 5 - DPMI
  1036.  
  1037.     DPMI is the dos protected mode interface.  It's available on '286 or 
  1038.     higher computers with 2 Megs of ram or greater.  Aside from enabling 
  1039.     80286 instructions in the source code, the DPMI mode programs give 
  1040.     QNode a LOT more memory to work with, depending on what you have 
  1041.     available.  On the standard DPMI system, QNode will never need to swap 
  1042.     to disk for it's indexing.  (Or if it does, it will do it much later, 
  1043.     and have much more memory to use its LRU swapping on.)
  1044.  
  1045.     NOTE: You may not wish to use the DPMI version of QDiff. Depending upon 
  1046.     the command that you run through the /P: directive, the commands may be 
  1047.     incompatible with the DPMI manager.  Please read the section below for 
  1048.     more information.
  1049.  
  1050.     This is the Borland documentation on their RTM.EXE program, which is 
  1051.     used to do the DPMI stuff. This document, plus the files:
  1052.       RTM.EXE, RTMRES.EXE, DPMI16BI.OVL, DPMIINST.EXE, DPMILOAD.EXE
  1053.     are all copyrighted by Borland.
  1054.  
  1055.     ================================================================
  1056.     Running a DOS Protected-Mode Program
  1057.     ================================================================
  1058.  
  1059.     When you run a DOS protected-mode application, you must ensure that 
  1060.     DPMI16BI.OVL (the DPMI server), RTM.EXE (the run-time manager), and any 
  1061.     DLLs used by the application are present in the current directory, the 
  1062.     same directory as the application, or on the DOS path.
  1063.  
  1064.  
  1065.     Protected Mode and Memory
  1066.     -------------------------
  1067.  
  1068.     A DOS protected-mode program uses DPMI (DOS Protected Mode Interface) 
  1069.     to run in protected mode which gives the application access to all your 
  1070.     computer's memory. With the exceptions outlined below, the DOS 
  1071.     protected-mode technology is completely transparent and no extra steps 
  1072.     are necessary in order to run a protected-mode application.
  1073.  
  1074.  
  1075.     DPMIINST
  1076.  
  1077.     One such exception might be when you run a protected-mode program for 
  1078.     the very first time on a 286-based system. The protected mode 
  1079.     technology uses an internal database which contains various machine 
  1080.     characteristics to determine how to enable protected mode operation on 
  1081.     your system, and configures itself accordingly. If you have a computer 
  1082.     with an older 80286 microprocessor, your system might not be 
  1083.     recognized. You'll see this message when you try to run a protected- 
  1084.     mode application:
  1085.  
  1086.      Machine not in database (RUN DPMIINST)
  1087.  
  1088.     If you get this message, simply run the DPMIINST program by typing 
  1089.     DPMIINST at the DOS prompt and following the program's instructions.
  1090.  
  1091.     DPMIINST runs your machine through a series of tests to determine the 
  1092.     best way of enabling protected mode, and automatically configures 
  1093.     accordingly. Once you have run DPMIINST, you won't have to run it again.
  1094.  
  1095.     Some memory managers, device drivers, and memory-resident (TSR) 
  1096.     programs can interfere with DPMIINST's ability to analyze your system. 
  1097.     If DPMIINST fails, try temporarily disabling or removing these 
  1098.     programs. That gives DPMIINST the unrestricted access it needs to 
  1099.     determine the best way to enter protected mode.
  1100.  
  1101.     Note that running DPMIINST.EXE will never be required on any system 
  1102.     running HIMEM (or equivalent) or on any system based on an 80386 (or 
  1103.     later) processor.
  1104.  
  1105.  
  1106.     DPMIMEM
  1107.  
  1108.     By default, the DPMI interface allocates all available extended memory 
  1109.     for its own use. If you don't want all of the available memory to be 
  1110.     taken by the DPMI kernel, you can set a DOS environment variable to 
  1111.     specify the maximum amount of memory to use. This variable can be 
  1112.     entered directly at the DOS prompt or inserted in your AUTOEXEC.BAT 
  1113.     file, using this syntax:
  1114.  
  1115.     SET DPMIMEM=MAXMEM nnnn
  1116.  
  1117.     where nnnn is the amount of memory in kilobytes.
  1118.  
  1119.     For example, if you have a system with 4MB and want the DPMI kernel to 
  1120.     use only 2MB of it, leaving the other 2MB alone, the DPMIMEM variable 
  1121.     would be set as follows:
  1122.  
  1123.     SET DPMIMEM=MAXMEM 2048
  1124.  
  1125.     Some memory managers, like QEMM or 386^Max, allow allocating the same 
  1126.     area of memory as either extended or expanded and many older 
  1127.     applications can use only expanded memmory (EMS). By using the DPMIMEM 
  1128.     DOS environment variable to limit the amount of extended memory used by 
  1129.     the DPMI server, your system will still have expanded memory available 
  1130.     for use by older applications.
  1131.  
  1132.  
  1133.     RTMRES
  1134.  
  1135.     RTMRES preloads the protected-mode system. Preloading the DPMI server 
  1136.     lets you load a protected-mode program slightly faster. RTMRES will 
  1137.     start a program if you specify a program name as a parameter. If no 
  1138.     parameter is specified, RTMRES will run a DOS shell. Type EXIT to close 
  1139.     the shell.
  1140.  
  1141.     RTMRES is especially useful if you start, exit, and start a protected- 
  1142.     mode program frequently. Normally, every time you run a protected-mode 
  1143.     application, the DPMI server is loaded. If you've run RTMRES 
  1144.     previously, the server is already present, and the protected-mode 
  1145.     application loads faster.
  1146.  
  1147.  
  1148.     EXTENDED MEMORY
  1149.  
  1150.     A protected-mode application interacts with the DPMI server through 
  1151.     Borland's run-time manager (RTM.EXE). By default, a protected-mode 
  1152.     application uses all the extended memory reserved by the DPMI kernel.
  1153.  
  1154.  
  1155.     ================================================================
  1156.     Running A DOS Protected-Mode Program from Windows
  1157.     ================================================================
  1158.  
  1159.     A DOS protected-mode program will run in Windows in 386 enhanced mode. 
  1160.     To configure the amount of memory available to the application, create 
  1161.     a Windows PIF file. To learn more about PIF files, see your Microsoft 
  1162.     Windows User's Guide.
  1163.  
  1164.  
  1165.     Running Your Program in Windows Standard Mode
  1166.     ---------------------------------------------
  1167.  
  1168.     In order to run a protected-mode program from Windows standard-mode, 
  1169.     you must set the DPMIMEM DOS environment variable and run RTMRES (both 
  1170.     are described above) before running Windows. Make sure your DPMIMEM 
  1171.     setting leaves enough physical memory for Windows to operate.
  1172.  
  1173.     Note that once you've run RTMRES, you won't be able to run Windows in 
  1174.     386 enhanced mode until you exit the RTMRES shell (by typing EXIT at a 
  1175.     DOS prompt).
  1176.  
  1177.  
  1178.     Running from a Windows DOS Prompt
  1179.     ---------------------------------
  1180.  
  1181.     To run a DOS protected-mode application from a Windows DOS prompt, you 
  1182.     must first modify the DOSPRMPT.PIF file found in your Windows directory 
  1183.     so that the protected-mode program will be able to use extended memory.
  1184.  
  1185.     Using the Windows PIF editor, open the DOSPRMPT.PIF file, and indicate 
  1186.     the amount of extended memory you want the protected-mode program to 
  1187.     use. If you are unsure how to use the PIF editor, see your Microsoft 
  1188.     Windows User's Guide.
  1189.  
  1190.  
  1191.     ================================================================
  1192.     Controlling the Amount of Memory the Run-Time Manager Uses
  1193.     ================================================================
  1194.  
  1195.     The run-time manager attempts to free as much conventional memory as 
  1196.     possible (by moving moveable memory blocks into extended memory, for 
  1197.     example) before starting an application. No attempt is made to release 
  1198.     extended memory, however. Therefore, if you are going to run other 
  1199.     protected-mode applications that don't use the run-time manager 
  1200.     (Paradox 4.0, for example), use the RTM DOS environment variable to 
  1201.     control the run-time manager's allocation of memory.
  1202.  
  1203.     Use the DOS command line to add the RTM environment variable to your 
  1204.     system's DOS environment. Here is the syntax:
  1205.  
  1206.     SET RTM=[option nnnn]
  1207.  
  1208.     The following table lists the options you can use. nnnn can be a 
  1209.     decimal number or a hex number in the form of xAB54 or xab54.
  1210.  
  1211.      Option          Description
  1212.      -------------------------------------------------------------
  1213.      EXTLEAVE nnnn   Always leave at least nnnn kilobytes of
  1214.                      extended memory available. The default value
  1215.                      is 640K.
  1216.  
  1217.      EXTMAX nnnn     Don't allocate more than nnnn kilobytes of
  1218.                      extended memory. The default value is 4
  1219.                      gigabytes. In Windows, the default value is
  1220.                      one-half the available memory.
  1221.  
  1222.      EXTMIN nnnn     If fewer than nnnn kilobytes are available
  1223.                      after applying EXTMAX and EXTLEAVE limits,
  1224.                      terminate with an Out of Memory message. The
  1225.                      default value is zero.
  1226.  
  1227.      REALLEAVE nnnn  Always leave at least nnnn paragraphs of real
  1228.                      memory available. The default value is 64K or
  1229.                      4096 paragraphs.
  1230.  
  1231.      REALMAX nnnn    Don't allocate more than nnnn paragraphs of
  1232.                      real memory. The default value is 1 megabyte
  1233.                      or 65,535 paragraphs.
  1234.  
  1235.      REALMIN nnnn   If fewer than nnnn paragraphs are available
  1236.                     after applying REALMAX and REALLEAVE, terminate
  1237.                     with an Out of Memory message. The default
  1238.                     value is zero.
  1239.  
  1240.     The following DOS command limits RTM to 2M bytes of extended memory, 
  1241.     and ensures that 128K bytes of real memory are left unallocated:
  1242.  
  1243.      SET RTM=EXTMAX 2048 REALLEAVE 8192
  1244.  
  1245.  
  1246.     ================================================================
  1247.     Important Note for Borland C++ and Paradox 4.0 Users
  1248.     ================================================================
  1249.  
  1250.     The DPMILOAD.EXE and DPMI16BI.OVL files provided in this package 
  1251.     replace the older ones that came with Paradox 4.0 and BC++ 3.0 or 
  1252.     later. Delete or rename the older versions and make sure the newer ones 
  1253.     are on your DOS path (both Paradox and BC will search the path and find 
  1254.     the newer versions).
  1255.  
  1256.     If you plan to shell out from Paradox or BC++ to run another protected- 
  1257.     mode application, first limit the amount of extended memory used by 
  1258.     Paradox or BC++. For Paradox, use its /extk command-line parameter; and 
  1259.     for BC++, use its /x command-line parameter. Refer to the Paradox or 
  1260.     BC++ documentation for more information on the use of command-line 
  1261.     options.
  1262.  
  1263.                       *    *    *    *    *
  1264.  
  1265.                            Part 6 - Common Questions
  1266.  
  1267.     Well okay, I made some of 'em up, but you get the idea.
  1268.  
  1269. Q:  I have to type an awful lot of the same zone number in a multiple 
  1270.     nodelist situation.  How can I reduce all these zone numbers?
  1271. A:  Easy.  Just put a bunch of ADDR lines all through the configuration 
  1272.     file.  The first number specified on an ADDR line will set the default 
  1273.     zone and net for you.  When doing this however, it is important to make 
  1274.     sure that you set the ADDR line correctly at the end of the file.
  1275.  
  1276. Q:  In V7 mode, can I still generate the FIDOUSER.LST file?
  1277. A:  You bet.  You must specify the VERSION7 and USERLIST keywords in
  1278.     your config file, but you can't specify the INDEX keyword.  You must
  1279.     use QIDX to build the indexes.  If you have lots of EMS, look at USES 
  1280.     EMS.
  1281.  
  1282. Q:  In V7 mode, how can I configure my 2400 baud MNP modem to work with the
  1283.     modem type byte?
  1284. A:  A good MAXBAUD line that you could use would be:
  1285.     MAXBAUD 2400 MNP 9600|1 HST 9600|1 V32 9600|1 V32B 9600|1
  1286.     Where modem type 0 is a standard non-MNP dial command, and modem type
  1287.     1 is an MNP dial command.  (Note that the baud rate is locked at 9600
  1288.     for MNP connects.)
  1289.  
  1290. Q:  In V7 mode, how can I configure my HST-DS to work with older HST's?
  1291. A:  A good MAXBAUD line that you could use would be:
  1292.     MAXBAUD 9600 MNP 9600|1 HST 9600|1 V32 9600|1 V32B 9600|2
  1293.     Where modem type 0 is a no-correction dial command, modem type 1 is
  1294.     a simple MNP or older HST type dial command (you may wish to split those
  1295.     two into separate dial strings as well.), and modem type 2 is the
  1296.     super-enhanced dial command for other V32bis modems.
  1297.  
  1298. Q:  When generating a FIDOUSER.LST file, it runs out of memory, and says
  1299.     extending on disk.  It then takes a lot longer to compile.  Is there
  1300.     any way to speed it up?
  1301. A:  Sorta.  You can either reduce the memory overhead of the nodelist buffers
  1302.     (using the BUFFERS keyword.), or you can use a smaller section of the
  1303.     nodelist, or both.
  1304.  
  1305. Q:  In V7 mode, when generating the indexes, after a certain point, the drive
  1306.     light starts to flash a lot more rapidly than previously, what's going on
  1307.     and can I speed it up?
  1308. A:  The V7 index files have just hit the memory limit, and they have to be
  1309.     swapped to disk now.  You can reduce the memory overhead of the nodelist
  1310.     buffers (using the BUFFERS keyword.), you can use a smaller section of the
  1311.     nodelist, or you can use the QIDX program to build the indexes instead.
  1312.     (QIDX can still swap to disk, but it will have more memory than QNODE.)
  1313.  
  1314. Q:  How can I send somebody part of the nodelist, instead of the whole thing?
  1315. A:  You can use some constructive QNode and batch file techniques to export
  1316.     the proper things.  I'd suggest making a sub-directory to contain the
  1317.     temporary files, deleting all files in the sub-directory before compiling
  1318.     the nodelist with QNode (use the batch command
  1319.     "FOR %F IN (DIR\*.*) DO DEL %F", which doesn't ask for Y/N)
  1320.     And then run QNode with the following type of export directives:
  1321.        EXPORT -1: ADMIN.1
  1322.        EXPORT 1:-17 ADMIN.17
  1323.        EXPORT 1:140 NET.140
  1324.     NOTE: You may wish to export the entire region, or even the entire zone
  1325.     instead.  Just remember that you REQUIRE zone and region administration
  1326.     nodes in any abbreviated nodelist.
  1327.     And then execute this command after QNode: "COPY/A DIR\*.* SMALLNDE.001"
  1328.     Your batch file would look like this then:
  1329.        ---cut here---
  1330.        FOR %%F IN (TEMP\*.*) DO DEL %%F
  1331.        QNODE
  1332.        COPY/A TEMP\*.* SMALLNDE.001
  1333.        ---cut here---
  1334.  
  1335. Q:  How can I make QNode put zone numbers for all zones in the FIDOUSER.LST 
  1336.     file?
  1337. A:  Easy.  Just change your final 'ADDR' line to contain a dummy address as 
  1338.     the first address, followed by all of your regular addresses.  Any 
  1339.     nodes with a zone number other the the zone of the first address will 
  1340.     have their zone number placed in the FIDOUSER.LST file.
  1341.