Synchronet Version 2 Development History
----------------------------------------

Legend: !  Bug Fix
	*  New Feature
	&  Change of Operation

Each line begins with one of the modification types listed in the legend above
and then followed by a single digit (0-9) rating the importance/severity of
the modification (0 being least significant).

***********************************
June 2, 1994 Version 2.00a Released
***********************************

!0 When a directory was set for content ratings, the rating letter was not
   converted to uppercase and a new line was not displayed after the uploader
   entered the rating.

!9 If more nodes were configured in SCFG than the node license allowed
   for (i.e. 3 nodes in SCFG with a 2 node license), random lock-ups and
   bizzare errors would occur, increasing in frequency between logons. Version
   2.00a was supposed to allow for an additional local-only node for all
   licenses. Even the existance of the additional node in SCFG would cause
   this problem. If you had more nodes listed in SCFG than your node license
   allows, this could explain just about any wierd behavior you may have
   experienced.

!0 RESORT directory command no longer creates an empty extended descriptions
   file (EXB) if there are no extended descriptions for the files in the
   directory being sorted/compressed.

!5 Start-up directory for timed events not working at all.

!1 Bulk upload command would abort if sysop hit ENTER for the description, thus
   not allowing the automatic DIZ import into the single line description.
   A Ctrl-C is now required to abort a bulk upload.

!0 Slash commands were sometimes written with a control character following
   the slash in the activity log files.

&5 The contents of the current PCMS variables (string, logic state, and command
   key) are now retained when loading a Baja module via EXEC_BIN function. This
   allows variables to be "passed" from a shell to a module.

*3 Users can logon directly to the QWK: prompt by prepending an asterisk (*)
   to their user name or number at the logon prompt.

!4 When performing an un-read personal message scan (MSG_YOUR_SCAN), if a sub
   contained more than one un-read personal message, every other message would
   be by-passed without displaying.

!2 When viewing the user defaults from the User Edit function, the command
   shell shown was the command shell of the current user online (most likely
   the sysop), not the user that was being viewed in User Edit.

!1 When modifying the external editor from the user defaults function, hitting
   enter did not select the default editor if no external editor was previously
   selected.

&1 The COMPARE_USER_MISC Baja function now only sets the logic state to TRUE
   if the all of the flags specified are enabled for the current user.
   Previously, anyone of the flags set would cause the logic to be set to
   TRUE.

&0 When retrieving statistics for the WFC statistics display, a single dot
   is displayed for each stat that has been retrieved.

!5 Rockwell/Supra/PPI Caller ID format support (NMBR) was not functioning.
   Synchronet was looking for "DATE=" when in reality the modems return
   "DATE =".

!8 A garbaged SFDOORS.DAT file was being created if this drop file type was
   selected for an external program, and sometimes creating this drop file
   when running the program from SBBS would hang the system or cause other
   miscellaneous problems.

&4 Improved preperation of DIZ text for single line description, when a
   single line description is not provided by the uploader.

!0 Could not change internal code of chat channels in SCFG - chat channel
   internal codes are not used in Synchronet at all at this point, so this
   bug really had no effect.

!1 Could not change internal code of Gurus in SCFG.

!2 FidoNet EchoMail base directory was not always created when saving changes.

!1 Modifying certain elements in SCFG->Networks->QWK Networks would not prompt
   to save changes when ESCaping.

!2 Installation program no longer causing SCFG to give an error reading
    MAIN.CNF if installing without default config (.CNF) files.

&1 New (V)ersion command line switch for SBBS to display detailed revision
   information (i.e. "SBBS V").

!3 EXEC_BIN function was not looking in the EXEC directory for .BIN modules.

!2 PAGE_SYSOP function was not checking the 'C' exemption for the user.

&2 DEFAULT.SRC, MAJOR.SRC, and RENEGADE.SRC all load (via EXEC_BIN) the module
   STR_CMDS.BIN for the string (sysop) commands (i.e. DOS, MEM, CHUSER, etc).
   This eliminates the duplicated code in the various .SRC files, so changes
   are easier made.

&1 CHAT command (for 'C' exempt users) was added back into the string commands.

!2 There were no time left warnings before disconnect when using private chat.

!1 Fixed problem of (NULL)*.* being created in current node directory when
   using temp archive features.

!3 Viewable file types with less than a three character extension were not
   being recognized as viewable file types. Same thing with extractable
   file types.

************************************
June 25, 1994 Version 2.00b Released
************************************

!1 Users can read/delete private posts if they are the author.

!3 If a user had access to more than one external program section and the
   sysop did not use a custom XTRN_SEC menu screen, and the user did not
   have access to the first external program section listed in SCFG, they
   could just hit CR and get access to it.

!3 SCFG was not creating DATA\TEXT\<code> directories correctly for general
   text file sections.

&1 If NAME.DAT becomes corrupted (truncated), valid user accounts in USER.DAT
   will not be overwritten by new users.

!3 Forwarding e-mail would cause the attributes to become corrupted.

!7 The ;RESORT command would corrupt extended file descriptions.

&2 Unused extended description records in the DATA\DIRS\*.EXB files could
   contain garbage. While this didn't hurt anything, some curious sysops were
   concerned about the contents of this file containing recognizable data. Now
   the unused records are filled with 0 instead.

&7 Sending Internet NetMail from the BBS required an '@' in the user address
   and the name was stored separate from the address in the SMB header record.

!5 If the advanced option "Expires when out-of-time" was set to Yes and the
   user expired to a level that allowed the same amount of time online or
   less, it would loop saying "Your account has expired" and "Time's up".

&2 If a non fidonet network address is used in netmail and internet netmail
   is disallowed and a default fidonet address is specified in SCFG, then the
   outbound name@addr will become name@addr@fidoaddr to allow for remote
   fido/uucp gateways.

&3 Fixed problem when setting message new-scan pointers and a large message
   number gap existed in the base. Was very slow at the finding the date
   of the nearest message to display to the user.

!1 Number of posts incorrect when displaying user stats from the BBS.

*8 SCFG now uses a modem configuration database that can be user modified
   and extended. Also added options for exporting and importing modem config
   files (.MDM).

**************************************
August 20, 1994 Version 2.00c Released
**************************************

!9 New version of Borland C++ (v4.0) causing numerous problems with external
   program/event execution. Reverting back to older release (v3.1) only
   apparent solution. No code changes whatsoever.

**************************************
August 21, 1994 Version 2.00d Released
**************************************

!7 Fixed bug that would erase extended descriptions for existing files in
   a directory when a new file was uploaded with an extended description
   and the directory was already compressed (no deleted file slots).

**************************************
August 24, 1994 Version 2.00e Released
**************************************

!7 The above mentioned bug in v2.00d was not fixed in the revision E patch.
   It has now been fixed.

&4 QWK packet downloads will not be started if the estimated transfer time
   is more than the user is allowed for that logon and the user does not have
   the 'T' exemption.

**************************************
August 30, 1994 Version 2.00f Released
**************************************

!4 32-bit CRCs were generated incorrectly in v2.00f (only) and have been
   corrected. This would cause errorneous duplicate message errors when
   posting or importing messages into a sub-board that used duplicate message
   checking.

!3 If all Artificial Gurus were deleted in SCFG, editing Multinode Chat
   Channels would cause displayed garbage or other problems.

!9 Moving files between drives would cause occasional lock-ups or exceptions.

!2 Newly created sub-boards would default to 'On' in users' new-scans even if
   the sub-board had been set to not default on in SCFG.

*3 Added toggle option for each sub-board to set whether a sub-board will
   default to 'On' or not for users' "Your" message scans.

****************************************
September 9, 1994 Version 2.00g Released
****************************************

&0 User's can no longer use ASCII char 255 in their name/alias/handle.

&4 Internet posts can now be replied to via NetMail with the 'M' command
   from the reading messages prompt.

*3 Automatically loaded Baja modules can be specified in SCFG->System->
   Loadable Modules. This is for specifying .BIN modules that you want
   to have loaded automatically without having to edit all of your command
   shells. Available triggers are Logon, Logoff, and New User.

!5 Relative swap directory disallowed by SBBS and SCFG (i.e. ..\etc) which
   would cause problems when swapping to disk for external programs that
   have start-up directories. If a swap directory is specified, the complete
   path must be specified.

&2 More intelligent directory/drive checking in SCFG when saving changes.

!4 Problems resolved with private posts not being exported into QWK type
   networks.

*2 External programs can be configured to suspend the user's time online
   while running the program (Free Time).

!1 EXPIRE ARS paramter wasn't functioning properly.

*7 File directory listings are re-listed if using batch flagging prompt.
   If a selection other than [More] is selected, the current page of files
   is redisplayed.

!0 When CID is used to reject a caller, the log showed a random amount of
   time used.

!0 Fixed problem with @EXPDAYS@ showing expired users with large numbers of
   days till expiration.

!0 Fixed problem with @TUSED@ showing incorrect time used under some
   circumstances.

*4 Private node-to-node chat now uses a split-screen mode for ANSI users.

!1 Messages posted to "SYSOP" and read by user #1 will be marked as READ.

!3 Fixed problem of users being able to extract files from directories they
   were not allowed to download from.

!3 Multiple extractions from the same file would not work properly unless the
   command was given multiple types ('E' for example), from the transfer
   section.

*4 New toggle option in SCFG for each directory to specify if directory
   should be excluded from new file scans of all libraries/directories.
   This helps speed up new-file scans when there are large numbers of CD-ROM
   directories where no new uploads are likely to occur.

*5 New toggle option in SCFG for each directory to specify if directory
   should be exluded from Auto-ADDFILES search for new FILES.BBS entries
   (for use with ADDFILES v2.10 or later).

*2 New options in SCFG->Nodes->Node X->Toggle options. Logons via user number
   can be disallowed, logon via user "real name" can be allowed (in addition
   to alias), and passwords can be prompted for each logon attempt (even if
   the user name is not found).

&3 Any keys left in the local keyboard buffer by an executed program are
   ignored by Synchronet. Some programs (namely DSZ) have a nasty bug where
   they leave random key sequences (like Ctrl-Break and Alt-Tab) in the
   keyboard buffer sometimes. These "magical" keystrokes are now purged from
   the keyboard buffer.

*0 If an external program creates the file HANGUP.NOW in the node directory
   (file size and contents irrelevent), Synchronet will immediately hang-up the
   user upon return and log the user off without logging a "Hung-up" in the log
   file or the HUNGUP.LOG file. Both SCB (Synchronet Callback) v1.24+ and SMM
   (Synchronet Match Maker) will create this file, so the user can logoff
   directly from the program without generating a "Hung-up" in the log. XSDK
   programs can't drop carrier on users. While this is still the case,
   technically, the user can be automatically hung-up upon exit if the program
   creates this file, giving the appearance of the program actually hanging the
   user up.

*2 External programs (doors) that require DORINFO1.DEF (for all nodes), this
   drop file can be selected (separately from DORINFO#.DEF) in SCFG.

*4 External editors that require drop files can now have the drop files
   automatically created by Synchronet (configured in SCFG).

*9 New memory compression algorithms allow for more configured items
   (message and files areas, for example) in SBBS. Some systems may see
   as much as 50k more free memory (typing ;MEM at the main menu) with this
   version. Each additional configuration item (message area, file area, etc)
   will also take up much less RAM, thus allowing a much larger number of
   items for most configurations. This memory compression technique is not and
   cannot be utilized in SCFG. Run "SCFG /M" to display the amount of free
   memory in the configuration utility at all times.

!1 The %T command line specifier could contain the wrong number when run during
   the new user process (new users events or external editors). When used
   during a new user logon, this specifier will always be 10 minutes.

*7 Any command line configurable in SCFG can be used to execute a Baja module
   (.BIN file in your EXEC directory) instead of an executable (.COM, .EXE, or
   .BAT). This is done by prefixing the command line with a '*'. For example:
   "*type %f" for a viewable file type command line for .TXT. TYPE.BIN is
   included and makes a single Baja call to a new function, PRINTFILE_STR,
   which is the same as PRINTFILE, except that it prints the contents of the
   current string variable (as passed to the module via the command line,
   %f in the example above, the path and filename to print). This is also
   convenient for executing Baja modules from your external program (door)
   menu or as transfer protocols, or whereever an external program is normally
   used.

!2 User's time left was not checked before starting the download of an e-mail
   file attachment.

!0 When sending bulkmail, the title of all messages after the first were
   converted to all lowercase characters.

!7 When displaying the userlist and sorting alphabetically, if there wasn't
   enough available memory for allocation, the BBS would "lose" most of what
   memory was available.

*5 User database (USER.DAT) is accessed using record locking, rather than
   file locking (as before). This significantly increases speed on writing
   to the user database on active multinode BBSs.

*9 Optional message base compression using LZH encoding. Intelligent
   compression algorithm only stores in compressed form if disk space (in 256
   byte block increments) is actually saved. Larger messages compress better.
   Preliminary testing shows average message base compression between 30%
   and 50%, which can equal hundreds of megabytes on large message base
   systems. This toggle should only be used on message bases where the average
   message is at least 512 bytes in length (roughly have a page of text).
   Debate and philosophy type sub-boards appear to benefit the most from
   compression. :-)

&3 PostLink networked sub-board now allow 60 character "to" fields and
   70 character "subject" fields.

*4 MAIL_SEND_NETFILE baja command now allows sending FidoNet file attachments
   as well as Internet file attachments.

*1 FidoNet NetMail "Direct" status now supported (in SCFG->Networks).

*5 TEXT.DAT strings can be replaced dynamically with a Baja function call,
   REPLACE_TEXT. See TEXTNUMS.DAT for the number of the TEXT line you wish
   to replace in a specific shell or module.

*3 DOOR.SYS is now created with line 31 (Max Kbytes to download today)
   containing the number of credits the user has (including free credits) in
   kilobytes. If "Modify User Data" is set to Yes for a DOOR.SYS type external
   program, line 29 is read back to update the number of downloaded files in
   the user data and line 30 (Kbytes downloaded today) is read back in,
   subtracted from the user's credits and added the total bytes downloaded in
   the user data.

*4 Support for FAX/Modems that insist on returning verbal result code "+FCON"
   upon FAX connections. The BBS will exit with error level 100 so that the
   SBBS.BAT file may launch the FAX receive software.

!3 Fixed problem with bi-directional QWKnet account transfers that would cause
   contents of outbound QWK packet to be imported into DATA\QNET\<QWKID>.IN.

*8 New message storage method: Hyper Allocation for the ultimate message
   importing (tossing) performance. Twice as fast as "Fast Allocation".

!1 @ZIP@ code wasn't working at all.

*3 If blind uploads are allowed, files are not added the database (upload
   rejected) if the file was found in another directory.

*5 Circular QWK echomail messages are automatically detected and rejected.

*9 QWK NetMail with automatically maintained route map (DATA\QNET\ROUTE.DAT)
   for routing instructions for multiple hop NetMail.

*7 Optional QWKnet user list (DATA\QNET\USERS.DAT) for automatic address
   look-up. Created with included utility: QWKNODES.EXE

&2 Searching for "Your messages" and displaying Titles only is MUCH faster
   now.

*3 QWK mail imported that's sent to the system ID will be sent to user #1
   rather than being rejected as an "Unknown user".

*5 Support for QWKnet call-out semaphore files: DATA\QNET\<HUBID>.NOW
   If this file exists the QWKnet call-out node will delete the file and
   do an immediate call-out for that hub.

*1 QWKnet call-outs can be forced from any node using the WFC 'F' command
   or by typing ;FORCE <BBSID> from the main menu in the BBS.

*3 If a user attempts to send e-mail to user@addr, the BBS will automatically
   assume they intend to send netmail.

*1 Ctrl-AZ can now be used to signify a premature end of file for display.

****************************************
February 17, 1995 Version 2.10a Released
****************************************

!0 QWK netmail forwarded to a FidoNet address would have the "From" field
   set to the sysop's name instead of the sender's name.

*2 When creating a message locally, all tear lines in the message text are
   automatically converted to "-+-" by Synchronet. This conversion does
   not happen with E-mail or NetMail.

!2 Couldn't receive e-mail by user number via QWK REP packets.

&5 Removed Guest ('G' restriction) hardcoded shell and expert questions and
   display of SBBS.MSG

*3 Added SELECT_SHELL and SET_SHELL Baja functions for changing user's command
   shells from Baja modules.

*2 Added SELECT_EDITOR and SET_EDITOR Baja functions for changing user's
   external editor from Baja modules.

*0 Added RANDOM ARS keyword for random number generation used in access
   requirements and Baja modules. Baja line "COMPARE_ARS RANDOM 5=1" would
   generate a random number between 0 and 5 and set the logic state to true
   if the number generated was a 1.

*1 Searches for "Un-read messages to you" will now show messages sent to the
   either the user's name or alias (regardless of whether the echo is set to
   "Use real names" or not).

!3 Fixed problem with Searches for "Un-read messages to you" starting at the
   last personal message in the sub-board if the user's last read message
   pointer was higher than the last un-read message, rather than the beggining
   of the un-read messages (as it should have).

*2 Searches for messages to you from the reading messages prompt and from
   the main menu (displaying titles only) is many times faster.

*2 Message threading (by from, to, or subject) from the reading messages prompt
   is many times faster.

*1 Un-read messages to the user online will be displayed with a flag of '!'
   in message title listings in sub-boards.

!2 Baja function "SET_USER_STRING" was changed in the following ways:
   Had a bug when called and the current string was blank. No longer allows the
   user to choose an alias already in use (which could be bad) or an alias that
   does not begin with an alpha character. For ALIAS, REALNAME, or HANDLE
   checks the TEXT\NAME.CAN before allowing the user to use that name. For
   PHONE checks the TEXT\PHONE.CAN before allowing the user to use that number.
   For REALNAME or HANDLE disallows names in use if the "Force Unique" toggle
   is set to Yes in SCFG->System->New User Values->Question Toggles. For
   setting BIRTHDAY, invalid BIRTHDATES are not allowed. If the string can't be
   used the logic state is sete to FALSE, otherwise it is is set to TRUE.

!7 Serious problems when attempting to load a baja module from within another
   baja module (not command shell).

*3 Added ARS keywords LASTON and LOGONS to check for days since last logon and
   total logons in Baja COMPARE_ARS functions or in SCFG.

*7 Added Pre-pack QWK feature. All users meeting the requirements in SCFG->
   Msg Options->Pre-pack QWK Requirements will have new messages automatically
   added to a QWK packet and store until they download a QWK packet and the
   pre-packed QWK will be appended to. This is mainly intended to reduce LD
   costs for long QWKnet connections.

!4 Sending FidoNet file attachments from Synchronet with a relative data
   directory in SCFG (i.e. ..\DATA) would cause the file to not be sent.

*2 When posting on a local message base (not networked) and a "to" name
   is prompted for, the name is checked against the user database before
   allowing the posting user to continue.

*3 When a QWKnet call-out node is run, it will now import HUBID.QW0 through
   .QW9 as well as .QWK if they exist in the DATA directory.

&5 When routing QWK netmail, Synchronet will automatically take the shortest
   route if the next hop is a node or hub off of the local system (overriding
   the DATA\QNET\ROUTE.DAT file).

&2 Synchronet will automatically eliminate duplicate entries in the ROUTE.DAT
   file, keeping the newest entry.

!2 Solved the problem of a user or QWKnet node receving e-mail while creating
   a QWK packet. The mail would be auto-deleted after the packet was downloaded
   even though the new e-mail wasn't included in the packet and wasn't read.

*4 The following Baja functions can now use %s (to represent the current
   string) and %f (to represent the current file directory) and any of the
   command line specifiers (listed in Appendix A of the sysop manual) in their
   string arguments: REPLACE_TEXT, LOG, PRINT, PRINT_LOCAL, PRINT_REMOTE,
   PRINTFILE, PRINTFILE_REMOTE, PRINTFILE_LOCAL, CHKFILE, EXEC_BIN, YES_NO,
   NO_YES, MENU, SETSTR, SET_MENU_DIR, SET_MENU_FILE, and COMPARE_STR.

*4 The following command line specifiers have been added: %o (SysOp Name)
   %q (System QWK ID) %x (User's Command Shell) %* (Node number 0 padded to 3
   digits) %1 (user number) %2 (user number 0 padded to 2 digits) %3 (user
   number 0 padded to 3 digits) %4 etc.

&0 Version number command line specifier (%v) now includes revision letter
   (i.e. 2.10B).

&3 Added option in SCFG->Message Options to Allow users to have their e-mail
   forwarded to a netmail address. Previously, this option would automatically
   be available to the user if the system allowed users to send FidoNet or
   Internet mail. This toggle defaults to "No" (disallow forwarding).

&2 Added option in SCFG->Message Options to have Read E-mail automatically
   killed by running "SMBUTIL M".

!2 Fixed problem of small chunks of memory disappearing while moving around
   within SCFG.

&5 Overlay buffer manipulation released 32k of more free memory in SCFG and
   40k of more free memory in SBBS.

&6 Daily events, QWKnet call-outs, and PostLink call-outs will now execute
   automatically, even when started from a front-end mailer or other program
   which requires SBBS to exit after a caller.

*5 New QWK options can be toggled from the "Change Settings" menu from the
   QWK prompt: Include Message Path (VIA), Include Time Zone (TZ), Include
   Index Files, and Include Control Files. This allows for non-Synchronet
   systems to QWKnet with Synchronet BBSs without receiving @VIA and @TZ
   lines. This also allows Synchronet systems to eliminate the index and
   control files from QWK packets since they are unnecessary for QWKnet
   importing and just make the file larger. These options can also be
   toggled via QWK control message to "SBBS" with a title of "VIA", "TZ",
   "NDX", or "CONTROL" followed by "ON" or "OFF". TZ and VIA default to OFF,
   so Synchronet systems may need to post a control message to enable them.

*2 Split screen chat can now be toggled from the Chat: prompt with the 'S'
   command.

*6 New Baja functions: COMPARE_NODE_MISC, COMPARE_USER_CHAT, COMPARE_USER_QWK,
   TOGGLE_USER_CHAT, and TOGGLE_USER_QWK. See BAJA.TXT for details.

!2 The timeleft field in drop files created for external editors could contain
   the incorrect number when used as a new user external editor for validation
   feedback.

!0 Batch file flag prompt (P)revious command went backwards exactly one file
   less of a full screen.

!3 When forwarding mail, the original author's user number could be set to
   a random number which would cause havoc when the new destination user
   (A)uto-replied to the mail.

*4 External editors can now be configured as QuickBBS (MSGTMP) style to
   support native QuickBBS/Remote Access external editors (i.e. GEdit,
   IceEdit, TopEd, etc.)

*1 External editors can now be configured to expand single line feeds to
   carriage return/line feed pairs. This is for editors that store new lines
   as a single line feed (i.e. VI and other Unix editors, WWIVEdit in WWIV
   mode, etc.)

*5 Externalized storage (environment variables SBBSFILENAME and SBBSFILEDESC)
   of uploaded file names and descriptions allows upload processors to
   use file names and descriptions. Upload processors can modify the file
   name and description of uploaded files by writing the files SBBSFILE.NAM
   and SBBSFILE.DES in the current node's directory.

*4 New node toggle options in SCFG for turning on/off the retrieval of total
   files and messages (significantly speeding up the WFC statistics retrieval),
   disabling the local keyboard (entirely), disabling local inactivity warning
   and auto-logoff, and requiring the input of system password for local WFC
   commands and Alt-key combinations.

*2 New Baja function MSG_NEW_SCAN_SUB to scan the current sub-board for new
   messages. Sets the current logic state to FALSE if the user aborted the
   scan.

*1 New Baja functions MSG_SET_GROUP and FILE_SET_LIBRARY to set the current
   message group of file library by short name.

!2 E-mail file attachments can now be downloaded from the Reading Sent Mail
   and Reading All Mail prompts and if the file is not there, it will say
   File Not Found at the end of the message.

*5 Split-screen private node-to-node chat enhancments: Ctrl-P and Ctrl-U
   functional, fake cursor in top window, and notification of waiting
   telegrams and node messages on window separation line.

&2 Extended file descriptions in file listings are no longer truncated at page
   break and displayed again on next page.

*5 SCFG now imports and exports message area files: AREAS.BBS, SUBS.TXT,
   and FIDONET.NA as well as file area files: DIRS.TXT and FILEBONE.NA

*3 SCFG now support multiple levels of automated back-up of config files.
   SCFG /B# specified back-up level (by number), default is 3.


!2 Message pointers are now loaded before any logon modules, so the Baja
   message new-scan functions can be used in logon modules.

!0 HUBID.QW0, QW1, etc. would not be deleted automatically after import.

!1 Fixed problem with XTRN_EXEC Baja function causing "checking instruction"
   error message.

*1 Sub-boards can be configured with static QWK conference numbers instead of
   the default dynamic numbering scheme (allowing inserting of sub-boards
   without causing incorrect REP posting by users).

*1 Added FA: (File Attacment) Subject "status override" for FidoNet Netmail
   from Sysop or 'F' exempt users. Be VERY careful who you give the 'F'
   exemption to! They can attach any file on your system to Fido netmail.
   This is to be used when sending the same file attach to multiple people
   instead of the MAIL_SEND_NETFILE Baja function.

!0 Node paging and activity alerts were enabled between logon and the end
   of the logon sequence regardless of the user's default settings for these
   two toggles.

*5 Files added to batch download queue, but not downloaded while online
   will be automatically added to the batch queue during the user's next logon
   until the files are either downloaded successfully or removed from the
   queue.

*8 Baja modules can now be executed from within TEXT.DAT lines (that don't
   contain % variables) and menus/text files by using "@EXEC:MODNAME@"
   without the quotes, where MODNAME is the name of the .BIN file (without
   the .BIN) in the EXEC directory.

&2 Down arrow (ESC[B) is now translated by Synchronet into Ctrl-J instead of
   Ctrl-M.

!2 Telegrams and inter-node messages could flash by (screen cleared)
   without being read in some circumstances.

*3 Added new command line option to SBBS (o) to force Synchronet to run
   any pending events and then immediately exit. This eliminates the need to
   have events down the nodes they are being run on to return to front-end
   mailers. But more importantly, if "SBBS O" is run as an event from a mailer
   and there just so happens to be no pending events, Synchronet will
   immediately exit back to the mailer instead of sitting at the waiting for
   call screen.

*0 Added Guru response codes `o (SysOp's name), `s (System name), `g (Guru's
   name), and `I (System's QWK ID), `L (user's level - previously `m),
   `T (time), `M (month), `W (day of week), `J (day of month), `Y (year),
   `Z (user's zip/postal code).

!1 Replies to Anonymous posts on local sub-boards now work.

!2 Pre-packed QWK packets will no longer contain e-mail (causing duplicates)

*3 Guru expressions can now contain ARS elements contained in square brackets.
   Example: (HELLO&GURU&[LEVEL 90 OR FLAG S])

!5 SBBS now correctly supports more than 3000-4000 posts per sub-board (if
   available memory allows).

!1 Auto-sorting file directories by upload date now functions correctly.

*4 Non-Synchronet color codes are now supported in extended file listings.

!0 Baja function COMPARE_KEY now supports DIGIT, EDIGIT, control characters
   (^x) and slash commands like the CMDKEY function.

*9 New Baja functions: INKEY, RIOSYNC, GETTIMELEFT, SAVELINE, RESTORELINE,
   MSWAIT, ADJUST_USER_MINUTES, TRASHCAN, CREATE_SIF, READ_SIF, CMDKEYS,
   COMPARE_KEYS, and PAGE_GURU.

!2 When (V)alidating a message from the Reading Messages prompt, the index
   was not properly updated causing the header and index attributes to be
   mismatched (as reported by CHKSMB). This also caused validated messages to
   remain unvalidated.

*1 When changing message attributes, a menu-interface is now used.

!4 Using Hyper Allocation (and possibly Fast Allocation or Self-packing),
   message bases could be corrupted when importing multiple sequential messages
   for a single message base. The symptom would be corrupted message bodies
   (appearing as blank in the BBS) and CHKSMB v1.21 or later reporting
   unsupported translation types. This was fixed in SMBLIB v1.20b used in
   v2.22 of SBBSFIDO and Synchronet UTI as well.

*9 New Baja variable functions: INT, STR, SET, GLOBAL_INT, GLOBAL_STR, PRINTF,
   SPRINTF, STRCAT, RANDOM, COPY, SWAP, ADD, SUB, MUL, DIV, MOD, AND, OR, NOT,
   XOR, TIME, TIME_STR, DATE_STR, FTIME_STR, SECOND_STR, STRLEN, STRUPR,
   STRLWR, and DATE_STR_TO_INT.

*9 New Baja instructions: COMPARE, IF_EQUAL, IF_NOT_EQUAL, IF_GREATER,
   IF_GREATER_OR_EQUAL, IF_LESS, IF_LESS_OR_EQUAL, SWITCH, CASE, END_CASE,
   DEFAULT, and END_SWITCH.

*9 New Baja file I/O functions: FOPEN, FCLOSE, FREAD, FWRITE, FSEEK, FGET_POS,
   FEOF, FGET_LENGTH, FSET_LENGTH, FGET_TIME, FSET_TIME, FLOCK, FUNLOCK,
   FPRINTF, and FSET_ETX.

!0 Fixed problem of extremely-slow file searches when using the Remove/Edit
   command from the file section.

*2 Timed events can be forced by creating a CODE.NOW semaphore file in the
   DATA directory, where CODE is the internal code of the timed event.

*1 The number of seconds between each node semaphore check and statistics
   check while WFC can be configured in SCFG->Node->Advanced Options.

*3 File areas can be toggled to deduct time during uploads (normally time spent
   uploading is not counted).

*1 File areas can be toggled to reward the uploader with minutes instead of
   credits.

*1 Sub-boards can be toggled on as networked to the Internet via UUCP when
   using NetXpress allowing unknown "To" users and the 'N' restriction to work
   properly.

*4 New system toggle to disallow users to convert credits into minutes.

&2 When local system protection is used (node toggle), the system password is
   now prompted for in the status line.

*3 When deleting a message from a sub-board, the message is flagged for
   deletion rather than being immediately removed. This allows the sysop or
   user to undelete the message before message base maintenance is run.

*2 Messages can be be moved between sub-boards without deleting the original
   message.

&0 Reinitializing message pointers now resets the last read message pointer
   as well as the highest read message pointer.

*5 New Baja functions: ONLINE, OFFLINE, and PUT_NODE.

*1 NODE_ACTION Baja function now supports the following actions:
   MAIN, RMSG, RMAL, SMAL, RTXT, RSML, PMSG, AMSG, XTRN, DFLT, XFER, DLNG,
   ULNG, BXFR, LFIL, LOGN, LCHT, MCHT, GCHT, CHAT, SYSP, TQWK, PCHT, PAGE,
   and RFSD as well as specifying the action number directly.

*2 New Baja function: NODE_STATUS can set the current node status to:
   WFC, LOGON, NEWUSER, INUSE, QUIET, OFFLINE, NETTING, EVENT_WAITING,
   EVENT_RUNNING, or EVENT_LIMBO.

*0 Messages and text files larger than the available memory (size is unlimited)
   can now be displayed.

&1 If SCFG->System->Toggle Options->Expire When Out-of-time is set to "Yes",
   specific users can be excluded from this behavior by giving them the 'E'
   exemption.

&0 If SCFG->System->New User Values->Question Toggles->Location is set to
   "Yes", commas will not be required if the "Require Commas" toggle is set
   to "No".

*5 Local messages (posts or e-mail) from user #1 containing @-codes WILL be
   expanded to message variables (or actions) when read.

*1 "Beep Locally" toggle option moved from System to Node Toggle Options in
   SCFG.

*5 Each security level can have a specific security level to expire to or
   quick-validation set to expire to.

*9 New loadable modules for Login, Synchronization, Logout, and Expired Users.

*3 New Baja instructions: COMPARE_STRN and COMPARE_SUBSTR.

*0 New command line specifier: %z to represent the text directory (similar to
   the %j, %k, and %! specifiers).

*2 New Baja functions: FLENGTH, USER_EVENT, and PRINTTAIL.

&9 Removed hardcoded login procedure (NN: prompt, "New" for new-user, etc.).
   Must use a login module to perform this functions (see EXEC\LOGIN.SRC
   or EXEC\MATRIX.SRC and DOCS\BAJA.DOC for details). Login module name is
   specified in SCFG->System->Loadable Modules->Login Module. If set to blank,
   Synchronet will assume "LOGIN" as the module name.

&9 Removed hardcoded logon procedures for displaying TEXT\MENU\LOGON screens,
   last few callers, auto-message, user events, etc. Must use logon module
   to perform these functions (see EXEC\LOGON.SRC and DOCS\BAJA.DOC).

*9 New Baja function: LOGIN to initiate login procedure, LOGON to initiate
   LOGON procedure (includes automatic execution of Logon module) and LOGOUT
   to force LOGOUT procedure (only to be used for RE-logins, does NOT execute
   Logout module).

*2 New Baja function: BATCH_ADD_LIST to add a list of files to the current
   users batch download queue and automatically delete the list file.

*5 When returning from an external program, if the file DATA\FILE\xxxx.DWN
   exists (where xxxx is the user's number), the files contained in that
   list will be automatically added to the user's batch download queue and
   the list file will be deleted.

*7 Default download protocol can be selected by users in default config.
   And automatic hang-up after download (without asking) can be turned on.
   New user defaults for these two options can be configured in SCFG.

*5 Baja compiler supports definition of macros (!DEFINE) and include files
   (!INCLUDE).

&0 SCFG online help now functions correctly even if SCFG.EXE is renamed.

*3 WIP (Windows Interface Protocol) terminal (DC-TERM) auto-detected and .WIP
   menu files displayed (if present). New WIP ARS keyword as well.

&1 When RIP or WIP terminals are detected, a color and extended ASCII support
   is assumed.

&0 When moving files from upload or sysop directory, upload date/time is
   changed to current date/time.

!1 When importing AREAS.BBS or FIDONET.NA message base lists in SCFG, internal
   codes would be padded with spaces out to eight characters (which was wrong).

&2 Internet netmail uploaded via QWK REP is now stored with name and addressed
   combined (same as sending netmail online) instead of the SBBS 2.0 method
   of separate name and address. Both methods are valid (and documented in
   the SMB specification), but this has been changed for consistency with the
   newer storage method of online Internet netmail.

&1 The ADJUST_USER_CREDITS Baja function will now deduct from the user's free
   credits (if they have any), if adjusting negative.

!0 Fixed problem with CREDIT ARS keyword not working correctly with values
   greater than 32MB. This keyword now supports up to 64MB, for comparison.

!1 Fixed problem with executing a loadable (Baja) module as an external program
   if that module contained an EXEC_XTRN statement. This would cause problems
   with re-opening the log file when returning from module.

!0 Fixed problem with editing Access Requirements for External Program Sections
   in SCFG when the section name was longer than a certain number of chars.

!0 Fixed problem with FILE_SET_LIBRARY Baja function causing critical error.

*1 Archives can be (V)iewed from the (R)emove file prompt.

*8 System variables can be read (and some modified) from Baja modules. See
   DOCS\BAJA.DOC for a list of available system variables.

&3 The DIR and SUB ARS keywords now support the area's internal code as well
   as the sub-board or directory number (which can change and be hard to
   calculate). To specify a directory or sub-board internal code that begins
   with a digit, use SUBCODE or DIRCODE instead of the SUB or DIR keyword.
   If the first character of the value is not a digit, it is assumed to be
   a internal code.

&1 When deleting file libraries and directories in SCFG, the data files may
   automatically be deleted (if the sysop answers YES to the delete data
   prompt).

&3 When forwarding e-mail that has file attachments, the attachments are now
   automatically copied along with the e-mail message.

*1 When in local Guru chat (not multi-node Guru chat), the Guru will type
   first, as if responding to the user string "HELLO".

*5 New Baja function (LOAD_TEXT) to load an alternate TEXT.DAT file from module
   or command shell.

*2 Additional line in TEXT.DAT allows different keys for (Y)es and (N)o.

*3 Configuration command line (from WFC) configurable in SCFG for each node.
   This is allows the sysop to add command line switches for some all nodes,
   or use the 32-bit version of SCFG (SCFG32.EXE) for some or all nodes.

&1 Hitting the key for (N)o at the pause prompt is now the same as hitting
   Ctrl-C (abort).

*3 RIP and WIP files are not displayed locally to keep the local screen clean.

*0 New GETSTR (Baja function) mode, NOECHO accepts a string of input without
   echoing to the local or remote consoles.

*4 E-7-1 terminals are now supported by setting the Node Toggle Option in
   SCFG for "Allow 8-Bit Remote Logons" to "No". If a user logs on and
   does not have IBM extended ASCII support disabled, then they will be allowed
   to send 8-bit characters (after the logon procedure).

&2 New users are asked less initial questions about terminal type (to simplify
   new user procedure). If ANSI, RIP, or WIP is auto-detected, auto-terminal
   type is not asked. If RIP or WIP is detected, COLOR is not asked. 
   If auto-terminal type is not selected, RIP is not asked. All these items can
   still be toggled from the user default settings menu (which may still appear
   during the new user procedure if configured), allowing undetected RIP
   terminals (for example) to be correctly configured during the new user
   procedure. WIP is not supported unless it is correctly auto-detected.

*1 New Baja functions: CHKSUM and STRIP_CTRL

!0 Hexadecimal character constants (\x1b) in the TEXT.DAT were not interpretted
   correctly.

*2 New @-code to display a menu from within the TEXT.DAT or within another
   text file or menu (@MENU:filename@).

*1 New @-code to allow yes/no questions to be imbedded in menu files
   (@QUESTION@).

*1 New Baja functions: FILE_SEND, SEND_FILE_VIA, and FREAD_LINE.

*0 Lines starting with '#' in the TEXT.DAT will be ignored (comments).

*2 New @-code to display any file from any directory within another text file
   or menu (@TYPE:filename@).

*4 New DOS File System related Baja functions: REMOVE_FILE, RENAME_FILE,
   COPY_FILE, MOVE_FILE, GET_FILE_ATTRIB, and SET_FILE_ATTRIB.

*3 New DOS Directory System related Baja functions: MAKE_DIR, CHANGE_DIR,
   REMOVE_DIR, OPEN_DIR, READ_DIR, REWIND_DIR, and CLOSE_DIR.

*1 New Baja function (GET_FILE_TIME) to get file date/time without having to
   open the file first (FGET_TIME).

**************************************
August 31, 1995 Version 2.20a Released
**************************************

&0 ú[ is now interpreted as <ESC>[ when ANSI encoded reading messages.

!3 The "maximum time" option for external programs, was using the value
   for maximum SECONDS instead of minutes causing invalid drop file to
   be created if this option was used.

!1 The "Credit Uploader with Minutes" option could not be toggled to Yes
   in SCFG (under Directory Toggle Options).

*2 External editors can be configured to automatically quote all or none
   of the message text, rather than prompting the user.

&0 Users should no longer run out-of-time while in local chat with the sysop
   (alt-C) or be kicked out immediately after exiting chat if popped in
   during logon sequence.

!0 The FSET_POS Baja function was incorrectly setting the logic state to
   Non-TRUE unless the file was set to the beginning.

!0 When logging on for immediate QWK (*username at the login prompt or 'Q'
   restriction), any waiting telegrams would not be displayed. Now they are.

*5 No more 500 line limit for messages created online. The maximum number of
   lines is determined by free memory. Most systems should be able to allow
   1000-2000 line messages. The internal line editor still has a 500 line
   message limit. Raw input and external editors are limited only by the number
   of lines set in SCFG for the user's security level and the available DOS
   memory.

!1 The FINDUSER Baja function was setting the current command string to an
   invalid string if the username was not found and NOT setting the command
   string if it was.

&5 SBBS.EXE is now limited to 2 nodes when run in unregistered mode (no
   key file) plus an additional local node (total of 3 nodes).

&0 Directories with "Check for file existence" set to "No" will no longer
   allow single file downloads and extended file information now includes
   the correct file size and date.

!1 Fixed problem with possible stack overflow (lock-up) if pause (ctrl-a p)
   used in TimesUp TEXT.DAT entry.

!0 Toggling "Allow Anonymous Posts" from "Only" to "No" for a sub-board in
   SCFG did not work correctly.

*2 Carbon Copy FidoNet netmail now supported. Only one "cc: name@addr"
   allowed per line (cc: must start line, anywhere in body text). If
   "cc: addr" is used, then "sysop" will be used as the destination
   user name. "* Originally to: name@addr" is placed at the top of all
   carbon copy messages. "cc:" is not case sensitive and all white space
   inbetween "cc:" and "name@addr" is ignored.

*****************************************
September 27, 1995 Version 2.20b Released
*****************************************

&0 FidoNet netmail CC:'s didn't support name@addr@addr. This has been changed.

!9 Fixed problem with local node (node license + 1) locking up.

&1 Yes/No prompt can now use light-bar module (no patch required), and Ctrl-C
   sets the abort flag correctly (unlike the patch).

*3 The updating of a file's upload date when moving from one directory or
   another can now be toggled (per directory) in SCFG. The default is OFF.

&0 Video mode is optionally reset between each call (Node toggle option). This
   reverses the effects of some external programs that change the text mode
   (without permission). This option is not suggested when running in an
   OS/2 window (i.e. not full screen).

&0 XTRN.DAT now contains EXEC directory, TEXT directory, TEMP directory,
   System's QWK ID, and Node toggle options (in hex) for use with XSDK v2.40
   and later.

*1 Added TRIBBS.SYS door drop file support.

!5 Fixed problem with lock-ups during text searches in message bases with
   excessively large messages (>64k).

*3 Maximum number of seconds to allow for message base open/lock retries
   now configurable in SCFG->Message Options. Previously hard-coded at 10
   seconds, now configurable (defaults to 30 seconds).

*4 Inactivity seconds before warning and disconnection now configurable
   (per node) under node advanced options in SCFG.

&0 OS/2 flavor of SCFG now gives up time-slices while waiting for keyboard
   input.

*2 Internal editor no longer limited to 500 lines per message.

*1 New modem configuration toggle option to disallow unknown result codes
   (the default behavior is to allow them and use the last configured
   result code information, but still log an error for the sysop).

!3 COMPARE_STRN Baja function could/would mess up the execution (flow control)
   if located in if/else/end_if code blocks.

*7 All Baja File I/O functions now use buffered I/O for a major increase in
   read/write performance from Baja modules.

*1 New @-code (@SETSTR:value@) sets the current command string for the
   currently executing module or shell to the value specified.

&3 When a node is configured for exclusive execution and it is waiting for
   other nodes to become inactive, it now displays the number and status of
   the first offending node that it's waiting for (this will help sysops to
   know which node is keeping their events from executing).

*2 New Baja File I/O function FFLUSH <handle> to flush any pending output
   (writes) to a file.

&1 New ARS keyword "OS2" to specify whether or not the current node is running
   Synchronet for OS/2 or not.

&5 All paths are expanded to FULL paths (no longer relative) when the BBS is
   run (i.e. "..\EXEC" becomes "C:\SBBS\EXEC") to eliminate dependancy on
   the current directory (which SHOULD always be the current NODE directory
   when the BBS is executing) and intermittent problems under some system
   configurations. The downside is that users can now see your full system
   paths when view/extracting archives (if the archiver, e.g. PKZIP, shows
   the path).

&0 If the sysop has specified a trailing backslash on the start-up directory
   for a timed event, it will be automatically removed by the BBS. DOS will
   not let you CD to a sub-directory with a trailing backslash.

*9 When running Synchronet for OS/2, all executables (with the exception
   of SCFG) are assumed to be DOS programs (which require extra work by the BBS
   to execute) unless the program name is listed in SCFG->External
   Programs->OS/2 Program List. At the very least, CMD.EXE should be listed
   here. Since all DOS programs are executed in a fresh DOS window (with
   very little overhead) all swap options are unused in SYNC4OS2. WWIV
   external programs (requiring DCDWATCH and/or WWIV color codes) are not
   supported in Synchronet for OS/2. OS/2 programs canNOT have I/O interrupts
   intercepted (this is a DOS program ONLY feature).

*2 New %y command line specifier points to your DOS COMMAND.COM (in
   Synchronet for DOS, gets the path from the COMSPEC environment variable,
   in Synchronet for OS/2, gets the path from SCFG->Nodes->Node X->DOS
   Command Interpreter).

&5 New modules for Synchronet for OS/2: EXECSBBS.EXE (not to be confused with
   EXECSBBS.COM, still required by Synchronet for DOS) and EXECDOS.EXE located
   in your EXEC directory.

!2 All pending events are now executed when "SBBS O" is run regardless of
   the order of their configuration vs. execution time in SCFG.

&1 Posts to non-QWKnet sub-boards from a Q restricted account are now
   disallowed.

&4 Maximum file sizes (for the file transfer section) have been increased from
   9,999,999 bytes to 999,999,999 bytes.

!2 ARS for compressable file types was not being used.

&1 New ARS keyword "DOS" evaluates to true if the current node is running the
   16-bit DOS version of Synchronet.

&5 The 32-bit versions of Synchronet now allow a maximum of 10000 files per
   directory (vs. 1000 for the 16-bit DOS version) and 50000 total e-mail
   messages (vs. 5000 for the 16-bit DOS version).

&8 Synchronet no longer physically removes deleted e-mail messages when a user
   exits the reading mail prompt unless the sysop has set SCFG->Message Opts
   ->Delete E-mail Immediately to "Yes". Instead, the mail is physically
   removed during the system daily maintenance (run automatically). This speeds
   up the e-mail access considerably on systems with large e-mail databases.
   Also, e-mail and posts that have been flagged for deletion will not be
   visible to the user unless the sysop has set SCFG->Message Opts->Deleted
   Messages Viewable to "Yes". Settings this option to "Sysop Only" means only
   sysops or sub-ops (when appropriate) can see deleted messages. The above
   mentioned system maintenance also scans for old e-mail (greater than the
   maximum age specified in SCFG->Message Opts->Purge Mail by Age) if enabled.
   SMBUTIL is no longer necessary for maintaining your MAIL database.

&1 When a new user takes a deleted user's slot, any mail that user has SENT
   will be deleted as well as any mail that user had received (previously,
   sent mail was not deleted and thus readable by the new user).

*3 Added the following @-codes: @last@ for user's last name/alias,
   @firstreal@ for user's first real/company name, and @lastreal@ for
   user's last real/company name.

&0 Maximum allowed DCE rated increased from 57600 to 64000 (to support ISDN
   modems).

*2 When reading e-mail, the thread commands (<>{}[]) are now available
   to thread forward and backward by subject, from user, and to user (as
   with reading sub-boards).

*0 When a node is run and a NODE.LOG already exists (not a normal situation)
   it is appended to the file DATA\CRASH.LOG (as well as the normal system
   log) to allow the sysop to easily browse through logs resulting in possible
   crashes to help diagnose the cause. The file CRASH.LOG in the current
   node's directory is also appended (to more easily solve node specific
   crashes).

*0 New @-codes: REAL, LAST, LASTREAL, and FIRSTREAL

*7 Synchronet BBS now supports VERBAL modem result codes by setting SCFG->Nodes
   ->Node #->Modem Config->Toggle Options->Use Verbal Result Codes to "Yes".
   You must also change V0 to V1 in your modem init string. When verbal result
   codes are enabled, the result code list is no longer used. This feature was
   added for the flexibility and easier configuration of modems that don't
   correctly support numeric result codes, insist on returning multiple connect
   results (CARRIER, PROTOCOL, etc), or have too many possible result codes to
   configure by hand. When this option is set to "Yes", Synchronet
   automatically creates the connection description and estimated CPS rates.
   This option also has the added advantage of supporting DCE (connection)
   rates above 65535. The DCE rate is not to be confused with the DTE rate
   which is currently limited to 115200 bps.

*4 Synchronet will now automatically fix the E, V, and &C modem registers
   if configured incorrectly in (one of) the modem init string(s). If the
   above "Verbal Result Codes" option is used (for example), the init string
   does not need to be modified. Synchronet will automatically send an ATV1
   after the init and special init strings (if needed).

&1 The PERSONAL.NDX file included in QWK packets now includes entries for
   the E-mail conference (#0) as well as private posts in sub-boards.

*3 Synchronet for OS/2 (SBBS4OS2.EXE) can now be launched with an already
   open port by specifying the open port's handle on the command line (with
   the new H command line parameter). This is useful for OS/2 front-end mailers
   (like BinkleyTerm) that leave the port open when spawning the BBS.

*3 When Synchronet for OS/2 launches OS/2 executables, the com port can be left
   open by configuring the program (in SCFG->External Programs->OS/2 Programs)
   to leave the port open. The port handle must then be passed to the child
   process with the %H command line specifier. The port is always closed when
   launching DOS executables and then re-opened upon returning.

*0 The system variable, _WORDWRAP is now available for Baja programmers to
   check/modify the current word wrap buffer (set with GETSTR).

*0 New Baja functin, EXIT immediately aborts execution of the current module
   (used in place of RETURN when in CALLed sub-routines).

*4 The following Baja functions now allow integer variables to be used in place
   of integer constants: USER_EVENT, COMPARE_STRN, RANDOM, FOPEN, FSET_ETX,
   NODE_ACTION, NODE_STATUS, PRINTFILE, PRINTTAIL, GETSTR, GETNUM, MSWAIT,
   GETLINE, GETSTRUPR, GETNAME, SHIFT_STR, REPLACE_TEXT, REVERT_TEXT,
   TOGGLE/COMPARE_USER_MISC, TOGGLE/COMPARE_USER_CHAT, TOGGLE/COMPARE_USER_QWK,
   TOGGLE/COMPARE_NODE_MISC, SET_USER_LEVEL, SET_USER_STRING,
   ADJUST_USER_CREDITS, and ADJUST_USER_MINUTES.

*0 New @-codes: MAILW (number of e-mail messages waiting for current user),
   MAILP (number of e-mail messages sent by current user pending deletion),
   MAILW:# (number of e-mail messages waiting for user #), and MAILP:#.

&4 If a loadable module is executed from a module (or shell), the logic state
   is maintained when returning to the parent. This allows sub-modules to
   return error levels to the parent modules without using global variables.

*2 If a module named FEEDBACK.BIN exists in the EXEC directory, it will be
   executed whenever a user sends e-mail to user #1 (with the exception of
   validation feedback). If the module sets the logic state to FALSE, then
   the feedback will be aborted.

!5 When the day passes midnight (new day) while a user is online, his/her
   daily stats (e-mails per day, posts per day, free credits, etc) are reset
   immediately.

*3 New 'P'urge user command from the Sysop's e-mail and reading messages
   menus.

*4 New 'N'ext un-read message command from reading e-mail prompt.

&2 If a user uploads a file and that user is then deleted and another user
   then logs on as 'New' with the old users name and the file is subsequently
   downloaded, the new user will not receive the credit award.

!5 Fixed bug in daily mail maintenaince that would corrupt memory and the
   mail index file in the 16-bit DOS 2.3 beta version if there were over 3276
   messages in the e-mail database. No effect on the 32-bit versions.

!9 Fixed bug that would potentially crash the process if first user to logon
   was a new user and hung-up during the new-user feedback.

!4 Fixed bug that would potentially crash the process if a DORINFO*.DEF door
   was run with no timed events configured.

!0 If SCFG->Message Options->Users Can View Deleted Messages was set to "No",
   and a user delete a post, the current message number skipped over the next
   message.

!1 If the Internet toggle option for a sub-board is set to "Yes", replies are
   always posted to "All" - reply-to-user name is not prompted for.

***********************************
May 30, 1997 Version 2.30a Released
***********************************

!2 SBBS4OS2 status bar would disappear sometimes (fixed by Enigma by shortening
   status bar to 79 chars instead of 80).

!9 SBBS4OS2 would occassionally display output very slowly (fixed by Enigma
   by adding time-slice yields to various console loops).

!4 SBBS4OS2 would get non-uppercase filenames confused on HPFS partitions
   (fixed by Enigma by converting all filenames to uppercase).

!3 Internal message editor would continue to display first line of message when
   using the up arrow (fixed by Enigma).

!6 When SBBS.EXE/SBBS4OS2.EXE returned with a non-zero errorlevel (e.g.
   incoming FAX or whatever), the NODE.DAB was closed prematurely, posssibly
   causing errrors (fixed by Enigma).

*5 IP logging of telnet connections (requires "TEL FROM" in connect string)
   to detailed log file and user note field (added by Enimga).

*5 IP trash can (TEXT\IP.CAN) for telnet connections now supported
   (added by Enigma).

!5 Possible crash (GPF) cause in internal message editor when clearing (/CLR)
   a message when not on the last line of the message (fixed by Enigma).

****************************************
September 5, 1997 Version 2.30b Released
****************************************

!8 Fixed Y2K bugs in QWK, Fido, and log filenames where a 2-digit year
   is used (would have used 100 in some places for the year 2000). When parsing
   a 2-digit year, a 100-year window is used with 1970 as the pivot point.
   e.g. "69" is assumed to refer to 2069, "70" is assumed to refer to 1970.

&4 Birthdates are still stored in MM/DD/YY format. But if a user's age is
   calculated to be more than 90, then 90 is subtracted from the calculated age
   e.g. A user born in 01/01/00 is assumed to have been born in 2000, not 1900.

*3 New @-codes: REV (Synchronet revision), CONN (current connection),
   LOCATION (system location), TNODES (total nodes on system),
   HOST (same as CPU), CID and IP (Caller-ID or user IP addr).

*1 Down-arrow at a pause prompt now moves down one line at a time.

*1 'Q' at the Pause prompt aborts the display (same as 'N' or Ctrl-C).

*1 TAB (Ctrl-I) now works like CR (enter) when at string prompts.
   i.e. you can now "TAB" from the NN: prompt to the PW: prompt in a
   full-screen/ANSI login.

!4 Creating REP packets that contained messages with "Replied-to" numbers
   larger than 7-digits (some OLRs apparently send large bogus numbers in
   this field), would corrupt the packet. When attempting to import such a
   corrupted packet into an SBBS system, the error message was garbled.

!1 Only the last line of an inter-node telegram was logged to the system
   activity log. Now the entire telegram is logged.

!1 High-priority input is no longer assumed when in RAW input mode (Ctrl-Z).

!5 Guest account ('G' restriction) would save the real user's name in the
   database (if asked during login via logon module). If the user then hungup
   and called back and logged on as "New", they would be unable to use their
   real name (if duplicate real names are disallowed in SCFG). The real name
   field is now cleared upong logoff (for 'G' restricted users).

!0 If a user hung-up without fully logging on (during the new user process,
   for example), an inter-node message was sent to all active nodes saying that
   he/she logged off (even though there was never a "logon" anouncment).

!1 The number of posts read statistic was not being properly reset for QWKnet
   node ('Q' restricted user) calls.

!0 If EXEC_XTRN was called from a loadable module or shell, the node status was
   not automatically changed back to "User at external program menu".

!3 SBBS4OS2 created an invalid EXITINFO.BBS (created with DORINFOx.DEF). Would
   cause doors that used this file to behave strangely or fail to function.

&4 Changed NOPEN/NODEDAB retry counter from 500 (which could take several
   minutes on some systems) to 50 (more like several seconds).

!0 Hitting 'A' from a local node WFC no longer tries to answer a call.

****************************************
December 14, 1999 Version 2.30c Released
****************************************

*3 New @-codes: QWKID (System QWK-ID), INETADDR (System's Internet Address),
   FIDOADDR (System's primary FidoNet address).

