IMPORTANT UPDATE NOTES FOR PREVIOUS USERS OF THE TOOLKIT:

1) To utilize the new library you must RECOMPILE all source modules in your
   application which include the PCBTOOLS.H file.  This will ensure that all
   variable structures are correct and that any prototyping changes will be
   taken into account.

2) Most users should not have to make source-level changes.  Simply recompiling
   and relinking the application will be sufficient.  From there, new
   functionality can be added by taking advantage of the new functions and
   information that are available in the Toolkit.

------------------------------------------------------------------------------

The following is a list of the new features offered in the v15.2-compatible
release of the PCBoard DOOR Developer's Toolkit:

- The major new feature of this release is the ability to write messages into
  the message base utilizing a few function calls without having to know the
  message base formats.  More than 10 functions were added to the Toolkit to
  allow you to write a message into the message base.  But all of them can be
  reduced down to a single function called copyfiletomessage() if that one
  function will do exactly what you want.  If it doesn't do what you want, then
  you can make use of the lower level functions, or you can modify the source
  code to copyfiletomessage() which is included on disk and in Appendix M as
  part of the sample programs.

- New v15.2 macros which ARE supported by the Toolkit:

  @alias@     - user's alias name
  @real@      - user's real name
  @yeschar@   - current language yes character (e.g. 'Y')
  @nochar@    - current language no character (e.g. 'N')
  @xoff@      - disable @X code interpretation
  @xon@       - enable @X code interpretation

  Also, as was added in PCBoard v15.1, the ability to use DOS's environment
  variables to store values for macros can also be used.  To view DOS
  environment variables, they must begin and end with @.  For example, you
  would use SET @PHONE@=801-261-1686.  Then, using the @env@ macro, you would
  display the phone number like this:  @env=phone@.  Of course, "env" would
  have to be typed in uppercase letters.  NOTE:  The name of the environment
  variable is surrounded by @ characters (i.e.  SET @PHONE@= instead of SET
  PHONE=).  This is to avoid potential security leaks (access to
  non-@-surrounded variables).

  Finally, as was added in PCBoard v15.21, the new 'T' macro modifier can now
  be used to truncate macros.  For example, if a user's name is 15 characters
  long, then @user:10t@ would display only the first 10 characters.  Whereas
  if the caller's name was 5 characters long it will be padded to 10 with
  spaces.

- New v15.2 macros which are NOT supported by the Toolkit:

  @dirname@, @dirnum@, @fbytes@, @ffiles@, @fnum@, @maxbytes@, @maxfiles@,
  @ratiobytes@, @ratiofiles@, @bytecredit@, @filecredit@, @pwxdate@, @pwxdays@,
  @logdate@, @logtime@, @numconf@, @credleft@, @crednow@, @credstart@,
  @credused@

- Modified functions:

  - char * pascal stripleft(char *Str, char Ch);
    char * pascal stripright(char *Str, char Ch);

    Both functions now return a pointer to *Str

- New functions:

  - There are also a number of new message base functions for entering new
    messages into a message (sorry, no functions have been included for reading
    messages).

    For further information on which functions have been added for the message
    base support, see chapter 6 in the manual under "Message Functions" as
    well as in-depth information of each function in chapter 7.

  - getalternatename(char *FileName, displayfiletype Type, int RecordSize);

    This function determines if an alternate display file exists, using the
    same rules that PCBoard uses to find alternate display files based on
    graphics, security and language considerations.

    For instance, if you pass "FILE" into the function as the *FileName value,
    and Type is set to GRAPHICS|SECURITY|LANGUAGE, this function will then
    check for FILE##G.LAN files where ## is the optional security level, G is
    the optional graphics extension, and .LAN is the optional language
    extension, all based on the caller's current settings.  The value passed in
    *FileName is then returned modified if an altnernate filename was found.

    NOTE:  RecordSize should generally be set to 0.  If set to a non-zero
    value, the function will automatically ignore any file whose filesize is
    *not* a multiple of the RecordSize value.  In other words, a FILE10 that
    is 101 bytes in size would be ignored if "FILE" was passed in together
    with a record size of 10 because 101 is not a multiple of 10.

  - int pascal putconfrecord(unsigned ConfNum, pcbconftype *Conf);

    This function allows you to modify an existing conference record, or write
    a new record out to disk.

    NOTE:  This means that the opencnames() function now opens the CNAMES.*
    files in read-write mode instead of read-only mode as in the past.

  - char * pascal ucomma(char *Buffer, unsigned long Num);
    char * pascal dcomma(char *Buffer, double Num);

    Similar to the comma() function, which produces a comma delimited string
    based on a signed long integer, ucomma() produces a comma delimited string
    based on an unsigned long integer, and dcomma() produces a comma delimited
    string based on a double.

- New Variables:

  - bool B16650;

    Reading this variable will let you know if the system has a 16650 chip.
    NOTE: You should *never* change the value of this variable.

  - bool Allow16650;

    The Toolkit will not attempt to look for a 16650 unless the sysop tells
    it to by using the SET PCB=/16650 environment setting.  That setting
    causes Allow16650 to be set to TRUE.  You could modify this value yourself
    if you wish.  However, it is recommended that the sysop himself know that
    a 16650 exists before attempting to detect one because there is no 100%
    reliable way to determine if a system is using a 16650.

  - The following structures have been modified (some purely for internal
    Toolkit use, some simply reflect changes in what PCBoard uses which may
    not be used by the Toolkit):

    DOSFILE, statustype, asytype, pcbdattype, pcbconftype, userrectype

   You can reference the PCBTOOLS.H to see the structures.  They will be fully
   documented in the Toolkit manual.

   For reference, the following variables were added to the structures:

      DOSFILE:      curpos, last_op
      statustype:   DisableColor, CurSecLevel
      asytype:      Telnet
      pcbdattype:   ModemInit2, ModemAns, ModemDial, NumRedials, MaxTries,
                    FidoProcessIn, FidoProcessOrphan, FidoProcessOut,
                    FidoDialOut, FidoPktFreq, FidoExportFreq, FidoMailFreq,
                    FidoDefaultZone, FidDefaultNet, FidoQueue, CmdLoc,
                    ForceIntro, SkipProtocol, SkipAlias, NoCarrierExit,
                    OS2Driver, EnableAccounting, ShowCurrency, Concurrent,
                    IgnoreDropSecLevel, PeakStart, PeakEnd, PeakDays,
                    HolidaysFile, AccountConfig, AccountIntro, AccountWarn,
                    AccountTrack, AccountLogoff, uucpPath, uucpSpoolPath,
                    uucpLogPath, CompBatFile, DeCompBatFile, uucpName,
                    uucpDomainName, uucpEmailHost, uucpNewsHost, uucpDefDist,
                    uucpTimeZone, uucpSeparator, Organization, uucpHighAscii,
                    uucpEmailConf, uucpJunkConf, uucpBangDomain, uucpSubDomain,
                    uucpModFile, FidoImportAfterXfer, FidoCrashSec,
                    FidoLogLevel, FidoCreateMsg, FidoEnableRouting
      pcbconftype:  Name (increased from 14 to 61 bytes), ConfType, ExportPtr,
                    ChargeTime, ChargeMsgRead, ChargeMsgWrite
      userrectype:  AccountSupport, Account, QwkSupport, QwkConfig

  - The following structures have been added in support of the changes made
    to the userrectype structure.

    accounttype, qwkconfigtype

