home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 2 BBS
/
02-BBS.zip
/
qnos2207.zip
/
QNODE.DOC
< prev
next >
Wrap
Text File
|
1994-07-31
|
61KB
|
1,341 lines
############
################
### ###
### ###
### ### ## ## ##### ###### #######
### ### ### ## ## ## ## ## ##
### ### #### ## ## ## ## ## ##
### ### ## ## ## ## ## ## ## #####
### ### ## #### ## ## ## ## ##
### ## ### ## ### ## ## ## ## ##
### ## ### ## ## ##### ###### #######
### ## ###
### ###### ## ## ### ### ###
#### #### ## ## ## ## ## ## ## ##
### #### #### ## ## ## ## ##
################### #### ## ## ## ## ##
############ ## ## ##### ## ### ###
Table of Contents
Part 1 - QNode
1.1 - Introduction
1.2 - Program Usage
1.3 - Error Levels
1.4 - Point Nets
1.5 - Multiple Networks
Part 2 - QDiff
2.1 - Introduction
2.2 - Program Usage
2.3 - Error Levels
Part 3 - QIDX
3.1 - Introduction
3.2 - Program Usage
3.3 - Error Levels
Part 4 - Configuration File
4.1 - Introduction
4.2 - Configuration File Commands
Part 5 - DPMI
Part 6 - Common Questions
Part 1 - QNode
1.1 - Introduction
QNode was originally designed to be a fast version 6 nodelist compiler
which could handle my MNP modem properly, seeing as no other nodelist
compiler was really able to do the job.
When version 7 nodelists came out, and I found out just how slow the
indexing system was, I determined that QNode really needed an update to
handle the v7 nodelist.
You are free to use QNode without paying me money, although I would
certainly appreciate people who do send money.
QNode is also a copyrighted program, therefore you are not allowed to
distribute any modified, or incomplete copies of the QNode distribution
archive. You can re-archive this if you really feel like it, but that
is really unfair to the people who download this, since it comes with
my authenticity signature on it, and if people get that, at least they
know that it is an original archive.
To get the latest version of QNode, simply request the magic name of
QNODE from 1:140/26. This is probably going to net you a pre-release
copy however. The most recent release version will probably be
available in the SDS-SOFTDIST area.
If you want a version which uses DPMI, then request the magic name of
QNODX. If you have problems running the DPMI version of QNode under
Windows version 3.00, then you can file request "OSDPMI.ZIP", which is
a utility for changing which executable type a file is. By default,
QNode is set to be compatible with OS/2 and Windows 3.1.
If you want an OS/2 version, request the magic name of QNOS2.
Something that started with QNode 1.40 is that even numbered versions
will be true release versions, while odd-numbered versions will be the
pre-release versions.
If you have any questions or problems relating to QNode, please be sure
to let me know. You can either netmail be (James West) at 1:140/26, or
you can snail-mail be at:
James West
854 Steeves Ave.
Saskatoon SK S7L-5N1
Canada
1.2 - Program Usage
QNode will use the file 'QNODE.CFG', or the first command line
parameter as it's parameter file, and will always search and find the
latest 'NODELIST.###' file (time-stamps are used, so end of year wrap
isn't a problem.) and compile it into one of these sets of files:
VERSION6 - NODELIST.DAT, NODELIST.IDX
VERSION7 - NODEX.DAT
VERSION7, INDEX - NODEX.NDX
USERLIST - FIDOUSER.LST
USERLIST, INDEX - SYSOP.NDX
You will only be allowed to create the version 7 index files and the
FIDOUSER.LST file as well as the indexes on an EMS, DPMI, or OS/2 systems.
Once QNode has read it's configuration file(s), and found a nodelist to
compile, it will start processing the nodelist. While compiling, you
will notice that a status line is kept on the screen showing the most
recent Zone, Region, Net, and Hub. Hubs will only be shown for nets
which are being included in the final nodelist. If a net is not to be
included in the final nodelist, you will see the word 'EXCLUDE' after
the line, and QNode will enter an extremely fast 'overdrive' mode to
get to the next network.
1.3 - ERRORLEVELS
The errorlevels which can be returned by QNODE are:
0 = Nodelist compiled fine.
1 = No Nodelist found.
2 = Cannot open configuration file.
3 = Cannot open nodelist.
4 = Errors exist in the configuration file.
5 = Invalid binary nodelist.
6 = EMS allocation error.
7 = CRC error in nodelist(s).
1.4 - POINTNETS
Pointnets can be done in a couple of different ways, depending upon
your system settings. You can either create 'fake-net' point listings,
or you can create a special 'point-control' file. You can also create
a 'modification' nodelist to insert your points. See the multiple
networks section for a description of this type of nodelist.
In version 6 mode, you are only allowed to create a 'fake-net', but in
version 7 mode, you can do either (or both for that matter.)
A 'fake-net' is a dummy network which is not in the distribution
nodelist, which lists your points as 'virtual' network addresses.
These dummy network number start at 30000, and go up from there. You
should apply to your Zone Co-Ordinator for an official point-net
number, but for testing purposes, you can pretty much choose a random
number between 30000 and 32767.
Each node within this fake-net is actually a point, where the node
number from the fake-net is the point number of the node. For example,
if I used the fake-net number of 32000, then the points for 140/26.1,
140/26.2, 140/26.3, ... would be listed in the nodelist as 32000/1,
32000/2, 32000/3, ... . It is the responsibility of your mail packer
to handle these fake-net numbers. (QMail, and Opus 1.70+ will handle
fake-nets in this fashion.)
A sample of a fake-net follows below:
---cut here---
Host,33000,The_North_Village,City,James_West,1-306-384-0836,2400,MNP
,1,My_First_Point,City,Sysop_Name,1-306-555-1212,1200
,2,My_Second_Point,City,Sysop_Name,1-306-555-1212,9600,HST,V32,V32b
---cut here---
This fake-net must be 'IMPORT'ed somewhere within the nodelist. You
can import it anywhere you like, but normally it should be imported
after your own network, region, or zone.
To import after your own network, you would use the configuration file
command: 'IMPORT 1:140 POINT.LST'. To import after your own region,
you would use the command: 'IMPORT 1:17 POINT.LST'. To import after
your own zone, you would use the command: 'IMPORT 1: POINT.LST'.
A 'point-control' file is one file which contains listings for all
points that you will have access to. It's fairly similar to the 'fake-
net' file, but instead of having a dummy network for each node, the
points are attached to the node itself. As of QNode version 2.00, you
are allowed to have as many point control files as you want.
To use a point-control file, you should use the 'POINTS' command to
include the file which you list all of your points in. For example:
'POINTS POINT.LST'. In the point-control file, everything after the
bosses node number is ignored, so you can use that as any sort of
comment that you like. (The actual information for the boss node is
taken from the nodelist.)
A sample of a point-control file follows:
--- cut here ---
Boss,1:140/26,The_North_Village
,1,AB_Data_Sales,City,Sysop,1-306-555-1212,1200
,2,Another_Point,City,Somebody,1-306-555-1212,9600,HST,V32,V32b
Boss,1:140/200,Another_Boss_Node
,1,His_First_Point,City,Sysop_Name,1-306-555-1212,1200
Pvt,2,His_Private_Point,City,Sysop,-Unpublished-,2400
--- cut here ---
1.5 - MULTIPLE NETWORKS
QNode also supports the compilation of many different input nodelists
into one big output file. This is used for the inclusion of other
networks (like SIGnet for example.)
The configuration file command which enables this is the 'NODELIST'
command, which instructs QNode on which nodelists that it is supposed
to compile.
To compile a joint Fidonet, Signet system you would use the two
commands: 'NODELIST NODELIST' and 'NODELIST SIGNODES'.
WARNING: If you use a 'NODELIST' command in your configuration file,
then the default fidonet nodelist will NOT be included. You must
explicitly include the 'NODELIST NODELIST' statement if you still wish
to include the fidonet nodelist.
There is a special type of input nodelist called a 'modification'
nodelist. It can be used to insert points, or even zones, regions,
nets, hubs, or basically anything. It is most often used to insert
points though.
The basic form of the modification nodelist is:
---cut here---
Zone,1,->
Region,17,->
Host,140,->
,26,->
Point,1,The_North_Village,Saskatoon_Sk,James_West,1-306-384-0836,9600
---cut here---
All lines which are used to advance the current node position must be
terminated with the ",->" sequence, and may not have any other
characters after that sequence.
WARNING: 'modification' nodelists will probably severely confuse a
version 6 nodelist. They are only for the use of version 7 nodelists.
Part 2 - QDIFF
2.1 - Introduction
QDiff is a companion program to QNode, which applies NODEDIFF files to
nodelists, and will generated an updated nodelist. QDiff can apply an
almost unlimited number of nodediffs simultaneously. For example, if
you have NODELIST.101, NODEDIFF.108, NODEDIFF.115, NODEDIFF.122, and
NODEDIFF.129 after running QDiff, you will be left with NODELIST.129.
Note: The actual limit will be determined by the number of file
handles that QDiff is able to open simultaneously. Since it doesn't
bother to expand it's handle table, the true limit would be around a
dozen nodediffs.
2.2 - Program Usage
QDiff has some pretty simple usage for most people: Just run it
without any parameters. It's all automatic. The only thing you have
to do is make sure that the nodelist and nodediff files are in the
directory that you are in when you run QDiff.
QDiff first searches through your NODELIST files to locate the one with
the most recent time stamp, and then it will go through your NODEDIFF
files trying to find ones which are more recent. If it does not find
any, then it will search for any archived NODEDIFF files to see whether
any of them exist. (Current archivers which are recognized are: ARC,
ZIP, LHA, and ARJ, based upon the first letter of the extension.)
You are NOT allowed to 'mix-and-match' archived and un-archived
nodediffs. You must supply one sort or the other to get a proper
output file.
=== DOS/DPMI ===
If given an archived nodediff, QDiff will extract it immediately using
one of the following archive programs:
for NODEDIFF.A##:
PKUNPAK, PKXARC, ARCE, PAK
for NODEDIFF.Z##:
PKUNZIP, PAK
for NODEDIFF.L##:
LHA, LHARC
for NODEDIFF.J##:
ARJ, UNARJ
=== OS/2 ===
If given an archived nodediff, QDiff will determine the archive type,
using the ARCHIVE.CFG file, and then run the extractor listed in that
file. Please keep the ARCHIVE.CFG file either in your path, or in your
nodelist directory. Subsequent programs written by me will also use
this file.
===
QDiff requires LOTS of disk space while running. It must create an
entirely new nodelist on disk before it can delete the old one. This
new nodelist will be created in a file named 'QDIFF$.TMP', which will
be renamed to the correct name if the nodelist is compiled
successfully.
To use QDiff with multiple networks, you must use some command line
parameters. For each network that you wish to compile, you should put
the name of the nodelist, a comma, and the name of the nodediff file.
You can do more than one network at a time, but it's suggested that you
just do one network at once. To cause QDiff to look for a SIGnet
nodelist/diff combination for instance, you would use the command:
'QDIFF SIGNODES,SIGDIFF'
Other parameters that are supported by QDiff are as follows:
/D Deletes all NODEDIFF files when completed. This will not delete
archived nodediff files. If a CRC error is detected during compile,
the nodediff files will still be deleted.
/N Deletes the old nodelist.
/Z Instructs QDiff to place an EOF mark at the end of the new nodelist.
This is not required for either QDiff or QNode, but some utilities
seem to expect it I guess.
/C Instructs QDiff that if it ever encounters a CR without an accompanying
linefeed, that it will then remove the offending CR. This will cause
the CRC to be incorrect, but some external nodelist utilities do not
like CR to be considered part of a single line.
/P Instructs QDiff to run some sort of command based upon the new nodelist
or nodediff files. This command can include the following percent
directives:
%1 - Last 1 character of the julian date of the new nodelist.
%2 - Last 2 characters of the julian date of the new nodelist.
%3 - The full julian date of the new nodelist.
%D - The file name (without numbers) of the NODEDIFF file.
%N - The file name (without numbers) of the NODELIST file.
The %D and %N parameters both include a trailing period.
To include spaces in the command (as most commands require), you would
have to encase the parameter in quotation marks. Some sample commands
follow:
/P:"pkpak -otc a nodelist.a%2 nodelist.%3"
/P:"pkzip -a nodelist.z%2 nodelist.%3"
/P:"lha a %nl%2 %n%3"
NOTE: Within a batch file, you must use two percent signs.
/BINARY Instructs QDiff to create a binary nodelist.
*************************************
*** WARNING: THIS IS IRREVERSIBLE ***
*************************************
If you decide to use this command, make sure that you have access to a
real nodelist somewhere. If your nodelist somehow gets corrupted, it
will be completed unusable.
The benefit of using the /BINARY switch is that the nodelist will take
up approximately HALF the disk space on your local drive. This binary
nodelist is completely against FTSC, and therefore you should not make
the binary nodelist available for download. The only purpose for this
command is for people who are running in extremely low disk space
situations.
Once you have used the /BINARY switch once, it is unnecessary to
specify it again, since QDiff will automatically create a binary
nodelist if it gets a binary nodelist as an input file. Therefore if
you wish to keep certain nodelists in ascii, and certain nodelists in
binary, all that you need to do is manually convert the respective
nodelists to binary, and then QDiff will automatically keep those
nodelists in binary while leaving the other nodelists in ascii.
De-Activated Stuff:
1: The Nodelist CRC can not be checked.
2: Lower-Case anything.
3: The EXPORT command is dead.
4: QDiff will take longer. (QNode might actually be quicker.)
2.3 - Error Levels
The errorlevels which can be returned by QDIFF are:
0 = NODEDIFF applied normally
1 = NODELIST does not require updating
2 = Cannot find nodediff
3 = Cannot find nodelist
4 = Cannot find extraction program
5 = NODEDIFF not found after running extraction program
6 = Extraction program reported an errorlevel other than 0
7 = Disk error during writing, probably disk full
8 = CRC error in new nodelist
9 = Invalid binary file version
Part 3 - QIDX
3.1 - Introduction
QIDX is a simple program which was written to generate the nodelist
indexes without having to compile the nodelist. It is also used when
somebody wishes to generate the FIDOUSER.LST file as well as the
version 7 indexes.
The ability to build the user index was just thrown in.
3.2 - Program Usage
To run QIDX, simply type 'QIDX' followed by the list of parameters for
the indexes to be built. These parameters are:
/N Generates the node number index. You may specify /N:filename to change
the name of the index. (This defaults to NODEX.NDX)
/S Generates the sysop index. You may specify /S:filename to change the
name of the index. (This defaults to SYSOP.NDX)
/U Generates the user file index. You may specify /U:filename to change
the name of the index. (This defaults to USER.NDX)
NOTE: USER.DAT must be in the current directory for /U to work.
If you use a large portion, or all, of the nodelist, then you may wish
to have QIDX build the node number and sysop indexes separately. If
you build both at once, then QIDX must divide memory in half for each
index. If building only one, then it can use all of memory.
To have QIDX compile a different nodelist data file than NODEX.DAT, you
can simply specify the nodelist filename on the command line.
To compile SIGX.DAT into SIGX.NDX and SIGSYSOP.NDX, you would use the
command line:
QIDX SIGX.DAT /N:SIGX.NDX /S:SIGSYSOP.NDX
3.3 - Errorlevels
0 = Everythings fine.
1 = Could not open either the nodelist, or the userlist data file.
2 = Bad parameter specified on command line.
Part 4 - Configuration File
4.1 - Introduction
The QNode configuration file is a free-format text file, which consists
of a keyword followed by optional parameters. The file is totally case
in-sensitive, although some keywords may not be. To place a comment
within the file, preceded the comment by a semi-colon (;).
WARNING: Do not place a comment on a password line.
4.2 - Configuration File Commands
NOTE: Any parameter which starts with 'USES' may be enabled by
preceding the statement with 'USES' and disabled by preceding the
statement with '!USES'.
*** STUFF ABOUT YOUR SYSTEM ***
ADDR #:#/#.# {#:#/#.#} ; SUPERCEDES 'ZONE, NET, NODE'
This sets YOUR network node number. Additional addresses may be
specified, but the first address listed is the default. You are also
allowed to place multiple ADDR lines in your configuration file, but
each subsequent one will totally replace the previous ones. This can
however be used to reduce typing by setting default zone/net numbers.
WARNING: If you use multiple ADDR lines, be absolutely sure that the
last ADDR line in the file is the real one, with all addresses, and the
first address being your 'normal' address.
AKA #:#/#.# {#:#/#.#} ; ENHANCES 'ADDR'
This can be used to set additional addresses without reseting the prior
addresses. This can be used to keep your ADDR line shorter. You can
have up to 20 addresses.
COUNTRY #
This sets your countries telephone direct dial code. In Canada and the
United States, this is '1'.
NODELIST filename{ #{ node-data{ sysop-data}}}
This is to be used to enable multiple, or non-standard nodelist
generation. If no nodelist lines are specified, it will default to:
'NODELIST'. You may have as many of these lines as you like. The
optional number specifies a 'zone override'. If this number is non-zero
then the first zone will be taken to be the number you specify, instead
of the zone listed. Additional zones will be incremented by one. The
zone override is only valid for the nodelist that it is listed for. An
example for a fidonet + signet system follows:
NODELIST NODELIST
NODELIST SIGNODES
The node-data and sysop-data files are used in v7 mode to compile that
nodelist to an entirely different set of data files. If these options
are never specified, they will default to: NODEX and SYSOP.
WARNING: Do not use file extensions on these commands.
Whenever an entry is encountered with a file specified, the current
file will be closed, and the new file(s) will be created. The data-
file overides are only supported in VERSION7 mode.
Do *NOT* specify the same file names on a later line. This will only
erase the previous files. To compile multiple entries into the same
file, group all nodelists whose data should go into the same file
together, and then specify the filename only for the first entry.
As a weird example, suppose you want to have NODELIST and SIGNODES
compiled together into NODEX.DAT, NODEX.NDX, and SYSOP.NDX, but you
need SIGNODES to be compiled into SIGX.DAT, SIGX.NDX, and SIGSYSOP.NDX
as well. The proper usage would be:
NODELIST NODELIST
NODELIST SIGNODES
NODELIST SIGNODES 0 SIGX SIGSYSOP
USES USERLIST ; SUPERCEDES 'USERLIST'
This is an automatic keyword, which will select the userlist that can
be generated, and generate it. If you are in VERSION7 mode, you get
V7USERS, otherwise you get FIDOUSER.
USES V7USERS
This is a version specific replacement to USES USERLIST.
USES FIDOUSER [limit] ; SUPERCEDES 'USERLIST' IN VERSION6 MODE.
This requests that the file 'FIDOUSER.LST' be generated. This file can
only be generated if you either do not generate the version 7 index
files, or if you have a LOT of EMS available. (See the "USES EMS"
parameter.) The limit is the maximum amount of base-memory remaining
before the userlist will be swapped to disk. It defaults to 4096.
USES ALLUSERS ; SUPERCEDES 'ALLUSERS'
This requests that all user names be placed in FIDOUSER.LST, whether
you have them in your nodelist or not. This is normally used for the
ONEZONE or REGULAR style of nodelists. Since inter-zone mail is
normally gate-routed, you do not require the actual node in your
nodelist to send mail to people.
USES ALLMODEMTRANS
This requests that QNode compile ALL modemtrans commands on every node.
You could use this to set bitfields in the modemtype byte, instead of
a straight byte value. This limits you to using eight specific values
when used however (1, 2, 4, 8, 16, 32, 64, 128).
USES BRIEF
This asks for status lines to only be printed for every region, instead
of for every net/host. This is useful if you run in a graphic window.
USES HUBS ; SUPERCEDES 'HUBS'
This asks for hub nodes in nets other than your own to be given mail
command of all private nodes underneath them. Normally, mail command is
given to the host, unless it is in your own net.
USES DIRECTPOINT
This asks for points to be treated like nodes. If you turn this on, then
private point will get it's bosses password, otherwise a private point
will have no password in it.
USES PVTPASSWORD
This asks for private nodes to have the password of the node whose phone
number that they are going to be adopting. With this option on, then a
private node in a net where you have a password with the host/hub will
not be able to call your system. If you have this off, then you will
not be able to call them. As of QNode v2.04, this option defaults to
OFF.
USES EMS [size] ; IGNORED IN DPMI VERSION
This asks for EMS memory to be used for indexes and version 7 buffers.
This will default to on, so the only use for this command is so that
you can use '!USES EMS' to disable this setting. The default for this
command is to allocate 2048.
NOTE: EMS Indexing is noticably slower than using conventional memory.
I would only suggest using this if you want to generate FIDOUSER.LST,
or if you are compiling most of the nodelist.
NOTE: The index does NOT need to fit within it's EMS boundaries. Index
segments will be swapped to disk on an LRU algorithm if you fill the EMS
boundary.
NOTE: As I've noticed running under MS-Windows, EMS requests can be
denied for allocation even if there's still plenty of EMS remaining. I
can only determine that MS-Windows is trying to prevent applications from
hogging the whole system. Thus I had to lower my default allocation from
2048 downto 1600 or so. If you try larger amounts under MS-Windows, and
possibly OS/2 as well, you may see a warning message telling you to lower
your EMS allocation, or to remove it altogether.
ALLOCATE INPUT #
This sets the memory allocation for input files. (Like NODELIST.###)
ALLOCATE OUTPUT #
This sets the memory allocation for output files. (Like NODEX.DAT)
ALLOCATE TEXT #
This sets the memory allocation to be used for auxilliary text files
used in the IMPORT, EXPORT, and FORMAT commands. The default value for
this is 32768. The maximum value is either 65528, or half of remaining
memory (whichever comes first.), but will always get at least 128
bytes.
KEEP FIRSTUSER
This tells QNode to keep the first user entry specificed during
nodelist compile. This was the default in QNode <1.41
KEEP LASTUSER
This tells QNode to keep the last copy of a user entry that it
encounters during nodelist compile. This is the default in QNode>=1.41
KEEP ALLUSERS ; SUPERCEDES 'DUPLICATE'
This allows duplicate entries in a VERSION7 sysop index. OPUS doesn't
do anything with the dupes however.
MAXBAUD #[|#] {[FLAG #[|#]] ...}
This sets the maximum baud rate which will be placed in the compiled
nodelist. Any entries above that value will be reduced to that value.
Notice the optional second number after the pipe symbol. This second
number if the modem type to be used. This sets the PREDIAL# to be used
for Opus 1.70+, or the ModemTrans to be used for BinkleyTerm.
The set of flags after the baud rate specify baud rate or dial prefix
extensions. Any node whose entries contains the flag listed will be
changed to the specified baud rate (and optional modem type). Unlike
every other portion of QNode, the flags work on a LAST MATCH rule. In
case of multiple matches, the last one will have precedence. You are
allowed to have up to 20 flags specified.
An example for a 2400 baud, MNP 5 modem is:
MAXBAUD 2400|1 HST 9600|0 MNP 9600|0 V42 9600|0
Where ModemType 0 is a standard MNP dial, and ModemType 1 disables the
MNP for the dial.
And example for an HST w/V32bis is:
MAXBAUD 9600|0 HST 9600|1 V32 9600|1 V32B 9600|2
Where ModemType 0 is a standard dial, ModemType 1 dials the older HST
modems in HST mode, and ModemType 2 dials the newer V32bis modems with
V32bis enabled. This would enable Janus for higher speeds. If you
don't have Janus, you may wish to dial V32B in HST mode as well.
FLAGBAUD FLAG #[|#] {...}
This adds more flag modifications to the MAXBAUD statement, without
changing the default baud rate and modem type.
MODEMTRANS # [=BAUD[:BAUD]] {[!]FLAG ...}
This command is an alternative to the MAXBAUD/FLAGBAUD method of doing
things. Basically, for every node which has the flags listed, and
doesn't have the flags which you preceded with an exclamation point,
and whose baud rate is within the range specified, will have the listed
MODEMTRANS value attached to it. It is strongly recommended that you
not mix FLAGBAUD and MODEMTRANS statements. See 'USES ALLMODEMTRANS'
for an alternate way of calculating the modemtrans values.
Examples: MODEMTRANS 4 =2400 MNP ; This sets 2400 Baud MNP to type 4
MODEMTRANS 3 300:2400 !MNP ; This sets low speed, non-MNP
; modems to type 3.
*** NODELIST GENERATION COMMANDS ***
COMPILE MYZONES ; Supercedes 'ONEZONE'
COMPILE ONEZONE
Asks for only nodes in your zone(s). (ie: ZONE:*/*)
COMPILE STANDARD ; Supercedes 'REGULAR'
COMPILE REGULAR
Asks for only your zone(s), plus hub nodes from other zones. (ie:
ZONE:*/* + *:*/0)
COMPILE EVERYTHING ; Supercedes 'ALLZONES'
COMPILE ALLZONES
Asks for a complete nodelist (ie: *:*/*)
COMPILE NOTHING ; Supercedes 'NOZONES'
COMPILE NOZONES
Asks for NO nodes whatsoever to be included
USES VERSION6
Asks for a version 6 nodelist
USES VERSION7
Asks for a version 7 nodelist (DEFAULT)
USES INDEX
This is an automatic command, which selects the current nodelist index
to be generated. In VERSION7 mode, you get a V7INDEX.
USES V7INDEX
This is a version specific replacement to USES INDEX.
It asks for version 7 indexes to be created. NOTE: You may wish to
use QIDX instead of this to generate indexes. Either to give more
memory for index creation, or to generate the FIDOUSER.LST file.
ANOTHER WARNING: When generating a VERSION7 data file, you MUST create
indexes by one method or another. You must either specify the USES
INDEX, or use QIDX to build the indexes.
*** NODELIST GENERATION MODIFIERS ***
ADD {[nodeid] ...}
DELETE {[nodeid] ...}
These two functions are used to change the list generated by the quick
output list types. The [nodeid] statements may be any of these style
of numbers:
ZONE: Asks for the entire zone
ZONE:REGION Asks for the entire region
ZONE:NET Asks for the entire net
REGION Asks for a region in your own zone
NET Asks for a net in your own zone
-ZONE: Asks for admin node for the zone
ZONE:-REGION Asks for admin nodes from specified region
These commands are processed in the order they are encountered. You
may have as many add and delete lines as you like, in any order. In
cases of multiple matches, the first applicable match will rule.
If you reference nodes in any zone, then the zone admin nodes will be
automatically added into the final output list.
If you ask for the admin nodes for a specific region, then the
independant nodes will be referenced as well.
For example, to add only region 17, and all admin nodes for Zone 1, I
use (with a second ADD line to add all other nets that I ever do
netmail with.)
NOZONES
ADD -1: -10 -11 -12 -13 -14 -15 -16 17 -18 -19
POINTS filename
This will include the specified file as the point-control file. This
keyword is only active while generating a version 7 nodelist. See the
section on pointnets for an example of this file. You may have
multiple point control files.
If you do not specify a file extension, this command will search for all
files with a numeric file extensions, and select the most recent one,
and compile that. If there are no numbered extensions available, it
will attempt to use the file without an extension.
INCLUDE filename
This will include the specified file into the QNODE.CFG parsing pass.
I personally use this to include my dial and cost tables, which are
used by every nodelist processor.
EXPORT nodeid filename
This will export, a raw portion of the nodelist into a specified file.
Normally used to get a list of the nodes in your own net. See
ADD/DELETE for nodeid values. This works for all nodes, whether they
are in your nodelist or not.
This can also be used to send an abbreviated nodelist to someone else.
WARNING: This command is unavailable if you are using the binary
nodelist format.
IMPORT nodeid filename
This will import a raw style portion of a nodelist into the generated
nodelist once the value specified by nodeid has passed. (Therefore if
you import with your own net, you add nodes to the end of your net.)
The nodeid values are described in ADD/DELETE.
For example, to add the 'fake-net' 31000 to the end of your zone, you
would use the command: "IMPORT 1: POINT.LST". To add it to the end of
your region, you would use the command: "IMPORT 17 POINT.LST".
To add additional nodes to a network, you can use the import command to
import after a network, with the import file not having any zone,
region, or host commands in it.
NOTE: Any networks created through import files should be explicitly
included in the output file using the 'ADD' keyword. This is not
always necessary, but there are occasions when it is.
REPLACE nodeid filename
This will replace the nodeid that you specify with the file that you
specify. You can replace a net, region, zone, or the admin portions of
a region or zone. It's usage is exactly like IMPORT. It will only
work within 'ADD'ed sections of the nodelist.
FORMAT nodeid filename
This works just like the EXPORT command, except it makes a nice looking
print-out, and it will only work with nodes which have been included in
the output nodelist.
*** BULK NODE MODIFICATIONS ***
DEFAULT FEE DOMESTIC fee
This sets the default fee for domestic calls (within your own country
code) This will normally default to '65535', which basically means
that the fee will equal the cost.
DEFAULT FEE INTERNATIONAL fee
This sets the default fee for international calls (outside your own
country code) This will normally default to '65535', which basically
means that the fee will equal the cost.
DEFAULT COST DOMESTIC cost [fee]
This sets the default cost for domestic calls (within your own country
code) This will normally default to 0.
DEFAULT COST INTERNATIONAL cost [fee]
This sets the default cost for international calls (outside your own
country code) This will normally default to 0.
DEFAULT DIAL DOMESTIC [predial][/postdial]
This sets the default dial substitution for domestic calls (within your
own country code) This dial substitution may contain a '/' in it to
separate the prefix addition and the suffix addition. (For example, an
entry of '555-1212W/!' would place the entry '555-1212W' in front of
the phone number, and would place an exclamation point at the end. In
most countries, this entry should be left blank.
DEFAULT DIAL INTERNATIONAL [predial][/postdial]
This sets the default dial substitution for international calls
(outside your own country code) In Canada and the US, this is '011-'
Other countries international direct dial codes will vary. This
follows the same rules as the default domestic dial string.
TYPE SCRIPT modem-type fromdial todial
This will perform a dial substitution on a node, if the modem-type
matches the number that you specify. The dial substitution will be
done if there isn't a specific script for the node. This command will
be executed before a global script command will.
TYPE COST modem-type newcost [newfee]
This sets the default cost and/or fee for a modem of that particular
modem-type. The modem-type is a number from 0-255. The fee is
optional, and if not specified, will default to the same as the cost.
This command will be applied after all other cost processing, and will
only be applied if it is not a free call. If a specific 'CALLCOST'
statement is given, then the TYPE COST table will not be checked.
SCRIPT minbaud maxbaud cost fromdial todial
This is one form of the script command, which I invented to handle my
2400 baud/MNP 5 modem. In this case, every node which has a baud rate
between (or equal to) the minbaud and the maxbaud, with a cost equal to
the cost, will have the listed dial substitution done to it. (If the
start of the phone number doesn't match the fromdial, that node is not
changed.)
On my system, when I used VERSION6, I used:
SCRIPT 300 2400 0 1- "NOMNP1.SCR" ; Local Calls
SCRIPT 300 2400 25 1- "NOMNP2.SCR" ; No Areacode calls
SCRIPT 300 2400 50 1- "NOMNP3.SCR" ; Long Distance calls
VERSION7 nodelist users would probably want to use the ModemType
settings. (See MAXBAUD)
*** DIAL/COST TABLES ***
NOTE: If you define the 'DEFAULT COST' and 'DEFAULT DIAL' parameters,
then these commands do not need to have any parameters after them. (In
fact they don't need any parameters even if you don't specify the
lines.) For those wondering, I split these off to support the 'DEFAULT
FEE' parameter. The others were added for completeness, as well as
readability.
In the dial table, there are two parameters after the dial keyword. the
first is the modifications to local calls (ones within your own country
code), and the second is the modifications to the international direct
dial phone numbers (ones with any other country code.) Each of these
entries consists of what to put before the phone number, as well as
what to put after the phone number. To seperate the two, use a slash
(/). For no change to the phone number, use a slash by itself. You
should use the keyword 'End' to terminate the dial and cost tables.
The dial table will replace every phone number that starts with the
first sequence with the second sequence. This is for local or regional
calls where you aren't allowed to dial the entire phone number.
NOTE: Both the dial table and cost table are on a 'first match' system.
Therefore, you should put the entries in in the order of longest to
shortest.
An example follows:
DIAL / 011-
; Adds 011- to international calls, no change to domestic calls
; The following set up local calls from Saskatoon, SK
1-306-242- 242-
1-306-244- 244-
1-306-373- 373-
1-306-374- 374-
1-306-382- 382-
1-306-384- 384-
1-306-652- 652-
1-306-654- 654-
1-306-664- 664-
1-306-665- 665-
1-306-931- 931-
1-306-933- 933-
1-306-934- 934-
1-306-955- 955-
1-306-966- 966-
1-306-978- 978-
1-306-329- 329-
1-306- 1- ;area code strip for Saskatchewan calls
END
The COST statement at the head of the table can take two arguments,
which are the default costs in pennies to apply to domestic and
international calls, respectively.
Each entry in the cost table consists of a partial phone number
followed by a cost in pennies for sending a message to any node whose
phone number begins with that string. As with the dialing table, the
first matching entry is the one that is used. The cost table is used
before the dial table is used, so you should always use the fully
expanded phone numbers, instead of the simplified phone numbers which
the dial table would generate
You may append an additional entry to the end of each line, being the
fee charged to the user for sending messages to nodes within that phone
prefix.
An example follows:
COST 50 250
; This gives a default cost of 50 cents to domestic calls, and
; $2.50 to international calls.
; The following numbers are free from Saskatoon, SK
1-306-242- 00
1-306-244- 00
1-306-373- 00
1-306-374- 00
1-306-382- 00
1-306-384- 00
1-306-652- 00
1-306-654- 00
1-306-664- 00
1-306-665- 00
1-306-931- 00
1-306-933- 00
1-306-934- 00
1-306-955- 00
1-306-966- 00
1-306-978- 00
1-306-329- 00
1-306-585- 25 22 ; One of Reginas prefixes (short distance)
1-306- 25 ; short distance calls, cheaper rates
1-800- 00
1-900- 50
END
As a memory saving gesture, The 'DIALCOST' table has also been added.
It is a combination of the DIAL and COST tables. (However you may
still use the DIAL and COST tables, and even use them in conjunction
with the DIALCOST table. If you use duplicate tables, then the
DIALCOST table will be applied first, then the DIAL or COST table. The
DIAL or COST table will be checked, even if there was a matching entry
in the DIALCOST table.
The DIALCOST table has a header with four values, these values being:
The default domestic cost for messages, the default international cost
for messages, the default domestic dial substitution, and the default
international dial substitution.
Every entry in the DIALCOST table has 3 mandatory parameters, plus up
to 2 optional parameter. The parameters, in order are: The partial
phone number for the dial substitution and cost to take effect on, the
replacement dial string to be used, the cost of the message to be sent,
the fourth optional parameter is the fee charged to the user for a
message to be sent to that node.
The fifth optional parameter (v2.03+) is the modemtype modifier. It
can be a positive or negative number which is the value to be added to
the modemtype. It's main use is for telephone dialing systems where
all long-distance nodes need special dial strings.
For example: To dial long distance nodes using UniTel from Saskatoon.
1-306-382- 382-
...
1- 1- 30 30 2 ; This adds 2 to the modemtype.
An example follows:
DIALCOST 50 250 / 011-
; The following set up local calls from Saskatoon, SK
1-306-242- 242- 00
1-306-244- 244- 00
1-306-373- 373- 00
1-306-374- 374- 00
1-306-382- 382- 00
1-306-384- 384- 00
1-306-652- 652- 00
1-306-654- 654- 00
1-306-664- 664- 00
1-306-665- 665- 00
1-306-931- 931- 00
1-306-933- 933- 00
1-306-934- 934- 00
1-306-955- 955- 00
1-306-966- 966- 00
1-306-978- 978- 00
1-306-329- 329- 00
1-306-585- 1-585- 25 22 ; Regina, known cost call.
1-306- 1- 25
1-800- 1-800- 00
1-900- 1-900- 50
END
*** INDIVIDUAL NODE MODIFICATIONS ***
BAUD [zone:][net/]node baudrate[|modemtype]
Sets the specified nodes baudrate to whatever you specify. The modem
type flag can be set at the same time, by separating it from the
baudrate with a pipe symbol.
BAUD 1:140/26 9600|0
FLAGS [zone:][net/]node flaglist
Adds the specified flags to the node. (Normally 'CM'). You can also
add the flags: '9', 'A', 'B', 'D', 'E', 'F' which will assigned the
user defined flags in the nodelist. ('F' is bit 15). In case you're
wondering why I skipped 'C', that flag specifies a point, and it
wouldn't be a good idea to let somebody set that flag on their own.
FLAGS 140/26 CM
PHONE [zone:][net/]node phonenumber
Sets the specified nodes phone number (Unless the node number is
unlisted, you may want to see if you can use the SCRIPT command
instead, which doesn't have to be changed if the person ever changes
their phone number.)
PHONE 1:140/26 1-306-384-0836
CALLCOST [zone:][net/]node cost [fee]
Sets the charge to the user for a message to be sent to the listed
node. WARNING: Using this on nodes may cause the nodes to be
unacceptable in the bulk SCRIPT statements. If the node has more than
one node number, then you should probably use a specific COST statement.
The first item 'cost' is used for nodelist processing, the second
entry, or 'fee' is charged to the user for a message to be sent to that
node. If you do not list the fee, then it will default to the same
value as the cost.
CALLCOST 26 1
PASSWORD [zone:][net/]node password
Sets the specified nodes password. The password can be absolutely
anything. Leading and trailing spaces and tabs will be removed, but
everything from that point on is part of the password. Therefore, do
NOT place a comment on this line.
PASSWORD 1:140/26 PASSWORD
SCRIPT [zone:]net/node fromdial todial
This is the second form of the script command. Please note that the
net number IS required, even if it's your own net. (I use the '/' to
determine the difference between the two script lines.)
SCRIPT 140/88 1- "VORTEX.SCR" ; Needs a special script.
Part 5 - DPMI
DPMI is the dos protected mode interface. It's available on '286 or
higher computers with 2 Megs of ram or greater. Aside from enabling
80286 instructions in the source code, the DPMI mode programs give
QNode a LOT more memory to work with, depending on what you have
available. On the standard DPMI system, QNode will never need to swap
to disk for it's indexing. (Or if it does, it will do it much later,
and have much more memory to use its LRU swapping on.)
NOTE: You may not wish to use the DPMI version of QDiff. Depending upon
the command that you run through the /P: directive, the commands may be
incompatible with the DPMI manager. Please read the section below for
more information.
This is the Borland documentation on their RTM.EXE program, which is
used to do the DPMI stuff. This document, plus the files:
RTM.EXE, RTMRES.EXE, DPMI16BI.OVL, DPMIINST.EXE, DPMILOAD.EXE
are all copyrighted by Borland.
================================================================
Running a DOS Protected-Mode Program
================================================================
When you run a DOS protected-mode application, you must ensure that
DPMI16BI.OVL (the DPMI server), RTM.EXE (the run-time manager), and any
DLLs used by the application are present in the current directory, the
same directory as the application, or on the DOS path.
Protected Mode and Memory
-------------------------
A DOS protected-mode program uses DPMI (DOS Protected Mode Interface)
to run in protected mode which gives the application access to all your
computer's memory. With the exceptions outlined below, the DOS
protected-mode technology is completely transparent and no extra steps
are necessary in order to run a protected-mode application.
DPMIINST
One such exception might be when you run a protected-mode program for
the very first time on a 286-based system. The protected mode
technology uses an internal database which contains various machine
characteristics to determine how to enable protected mode operation on
your system, and configures itself accordingly. If you have a computer
with an older 80286 microprocessor, your system might not be
recognized. You'll see this message when you try to run a protected-
mode application:
Machine not in database (RUN DPMIINST)
If you get this message, simply run the DPMIINST program by typing
DPMIINST at the DOS prompt and following the program's instructions.
DPMIINST runs your machine through a series of tests to determine the
best way of enabling protected mode, and automatically configures
accordingly. Once you have run DPMIINST, you won't have to run it again.
Some memory managers, device drivers, and memory-resident (TSR)
programs can interfere with DPMIINST's ability to analyze your system.
If DPMIINST fails, try temporarily disabling or removing these
programs. That gives DPMIINST the unrestricted access it needs to
determine the best way to enter protected mode.
Note that running DPMIINST.EXE will never be required on any system
running HIMEM (or equivalent) or on any system based on an 80386 (or
later) processor.
DPMIMEM
By default, the DPMI interface allocates all available extended memory
for its own use. If you don't want all of the available memory to be
taken by the DPMI kernel, you can set a DOS environment variable to
specify the maximum amount of memory to use. This variable can be
entered directly at the DOS prompt or inserted in your AUTOEXEC.BAT
file, using this syntax:
SET DPMIMEM=MAXMEM nnnn
where nnnn is the amount of memory in kilobytes.
For example, if you have a system with 4MB and want the DPMI kernel to
use only 2MB of it, leaving the other 2MB alone, the DPMIMEM variable
would be set as follows:
SET DPMIMEM=MAXMEM 2048
Some memory managers, like QEMM or 386^Max, allow allocating the same
area of memory as either extended or expanded and many older
applications can use only expanded memmory (EMS). By using the DPMIMEM
DOS environment variable to limit the amount of extended memory used by
the DPMI server, your system will still have expanded memory available
for use by older applications.
RTMRES
RTMRES preloads the protected-mode system. Preloading the DPMI server
lets you load a protected-mode program slightly faster. RTMRES will
start a program if you specify a program name as a parameter. If no
parameter is specified, RTMRES will run a DOS shell. Type EXIT to close
the shell.
RTMRES is especially useful if you start, exit, and start a protected-
mode program frequently. Normally, every time you run a protected-mode
application, the DPMI server is loaded. If you've run RTMRES
previously, the server is already present, and the protected-mode
application loads faster.
EXTENDED MEMORY
A protected-mode application interacts with the DPMI server through
Borland's run-time manager (RTM.EXE). By default, a protected-mode
application uses all the extended memory reserved by the DPMI kernel.
================================================================
Running A DOS Protected-Mode Program from Windows
================================================================
A DOS protected-mode program will run in Windows in 386 enhanced mode.
To configure the amount of memory available to the application, create
a Windows PIF file. To learn more about PIF files, see your Microsoft
Windows User's Guide.
Running Your Program in Windows Standard Mode
---------------------------------------------
In order to run a protected-mode program from Windows standard-mode,
you must set the DPMIMEM DOS environment variable and run RTMRES (both
are described above) before running Windows. Make sure your DPMIMEM
setting leaves enough physical memory for Windows to operate.
Note that once you've run RTMRES, you won't be able to run Windows in
386 enhanced mode until you exit the RTMRES shell (by typing EXIT at a
DOS prompt).
Running from a Windows DOS Prompt
---------------------------------
To run a DOS protected-mode application from a Windows DOS prompt, you
must first modify the DOSPRMPT.PIF file found in your Windows directory
so that the protected-mode program will be able to use extended memory.
Using the Windows PIF editor, open the DOSPRMPT.PIF file, and indicate
the amount of extended memory you want the protected-mode program to
use. If you are unsure how to use the PIF editor, see your Microsoft
Windows User's Guide.
================================================================
Controlling the Amount of Memory the Run-Time Manager Uses
================================================================
The run-time manager attempts to free as much conventional memory as
possible (by moving moveable memory blocks into extended memory, for
example) before starting an application. No attempt is made to release
extended memory, however. Therefore, if you are going to run other
protected-mode applications that don't use the run-time manager
(Paradox 4.0, for example), use the RTM DOS environment variable to
control the run-time manager's allocation of memory.
Use the DOS command line to add the RTM environment variable to your
system's DOS environment. Here is the syntax:
SET RTM=[option nnnn]
The following table lists the options you can use. nnnn can be a
decimal number or a hex number in the form of xAB54 or xab54.
Option Description
-------------------------------------------------------------
EXTLEAVE nnnn Always leave at least nnnn kilobytes of
extended memory available. The default value
is 640K.
EXTMAX nnnn Don't allocate more than nnnn kilobytes of
extended memory. The default value is 4
gigabytes. In Windows, the default value is
one-half the available memory.
EXTMIN nnnn If fewer than nnnn kilobytes are available
after applying EXTMAX and EXTLEAVE limits,
terminate with an Out of Memory message. The
default value is zero.
REALLEAVE nnnn Always leave at least nnnn paragraphs of real
memory available. The default value is 64K or
4096 paragraphs.
REALMAX nnnn Don't allocate more than nnnn paragraphs of
real memory. The default value is 1 megabyte
or 65,535 paragraphs.
REALMIN nnnn If fewer than nnnn paragraphs are available
after applying REALMAX and REALLEAVE, terminate
with an Out of Memory message. The default
value is zero.
The following DOS command limits RTM to 2M bytes of extended memory,
and ensures that 128K bytes of real memory are left unallocated:
SET RTM=EXTMAX 2048 REALLEAVE 8192
================================================================
Important Note for Borland C++ and Paradox 4.0 Users
================================================================
The DPMILOAD.EXE and DPMI16BI.OVL files provided in this package
replace the older ones that came with Paradox 4.0 and BC++ 3.0 or
later. Delete or rename the older versions and make sure the newer ones
are on your DOS path (both Paradox and BC will search the path and find
the newer versions).
If you plan to shell out from Paradox or BC++ to run another protected-
mode application, first limit the amount of extended memory used by
Paradox or BC++. For Paradox, use its /extk command-line parameter; and
for BC++, use its /x command-line parameter. Refer to the Paradox or
BC++ documentation for more information on the use of command-line
options.
* * * * *
Part 6 - Common Questions
Well okay, I made some of 'em up, but you get the idea.
Q: I have to type an awful lot of the same zone number in a multiple
nodelist situation. How can I reduce all these zone numbers?
A: Easy. Just put a bunch of ADDR lines all through the configuration
file. The first number specified on an ADDR line will set the default
zone and net for you. When doing this however, it is important to make
sure that you set the ADDR line correctly at the end of the file.
Q: In V7 mode, can I still generate the FIDOUSER.LST file?
A: You bet. You must specify the VERSION7 and USERLIST keywords in
your config file, but you can't specify the INDEX keyword. You must
use QIDX to build the indexes. If you have lots of EMS, look at USES
EMS.
Q: In V7 mode, how can I configure my 2400 baud MNP modem to work with the
modem type byte?
A: A good MAXBAUD line that you could use would be:
MAXBAUD 2400 MNP 9600|1 HST 9600|1 V32 9600|1 V32B 9600|1
Where modem type 0 is a standard non-MNP dial command, and modem type
1 is an MNP dial command. (Note that the baud rate is locked at 9600
for MNP connects.)
Q: In V7 mode, how can I configure my HST-DS to work with older HST's?
A: A good MAXBAUD line that you could use would be:
MAXBAUD 9600 MNP 9600|1 HST 9600|1 V32 9600|1 V32B 9600|2
Where modem type 0 is a no-correction dial command, modem type 1 is
a simple MNP or older HST type dial command (you may wish to split those
two into separate dial strings as well.), and modem type 2 is the
super-enhanced dial command for other V32bis modems.
Q: When generating a FIDOUSER.LST file, it runs out of memory, and says
extending on disk. It then takes a lot longer to compile. Is there
any way to speed it up?
A: Sorta. You can either reduce the memory overhead of the nodelist buffers
(using the BUFFERS keyword.), or you can use a smaller section of the
nodelist, or both.
Q: In V7 mode, when generating the indexes, after a certain point, the drive
light starts to flash a lot more rapidly than previously, what's going on
and can I speed it up?
A: The V7 index files have just hit the memory limit, and they have to be
swapped to disk now. You can reduce the memory overhead of the nodelist
buffers (using the BUFFERS keyword.), you can use a smaller section of the
nodelist, or you can use the QIDX program to build the indexes instead.
(QIDX can still swap to disk, but it will have more memory than QNODE.)
Q: How can I send somebody part of the nodelist, instead of the whole thing?
A: You can use some constructive QNode and batch file techniques to export
the proper things. I'd suggest making a sub-directory to contain the
temporary files, deleting all files in the sub-directory before compiling
the nodelist with QNode (use the batch command
"FOR %F IN (DIR\*.*) DO DEL %F", which doesn't ask for Y/N)
And then run QNode with the following type of export directives:
EXPORT -1: ADMIN.1
EXPORT 1:-17 ADMIN.17
EXPORT 1:140 NET.140
NOTE: You may wish to export the entire region, or even the entire zone
instead. Just remember that you REQUIRE zone and region administration
nodes in any abbreviated nodelist.
And then execute this command after QNode: "COPY/A DIR\*.* SMALLNDE.001"
Your batch file would look like this then:
---cut here---
FOR %%F IN (TEMP\*.*) DO DEL %%F
QNODE
COPY/A TEMP\*.* SMALLNDE.001
---cut here---
Q: How can I make QNode put zone numbers for all zones in the FIDOUSER.LST
file?
A: Easy. Just change your final 'ADDR' line to contain a dummy address as
the first address, followed by all of your regular addresses. Any
nodes with a zone number other the the zone of the first address will
have their zone number placed in the FIDOUSER.LST file.