.---------------------------------------------------------------------------.
| Mystic BBS History Documentation               Versions 1.05 through 1.10 |
`---------------------------------------------------------------------------'

 ! = Bug fix
 + = New or changed feature
 - = Removed

 Note: Not all changes have been documented here.  I try to keep a fairly
       accurate list of changes, but there are many times when I either
       forget, or just don't think its important to document a change.

.-----------------------------------------------------.
| May 2nd, 1999 -> Mystic BBS Version 1.05 - RELEASED |
`-----------------------------------------------------'

 ! Mystic was not updating the user's total message posts if they were
   posting via a REP offline mail packet.

 ! Mystic was not pausing on a screen full when displaying a text file!
   I was testing some code right before the 1.05 release and I left the
   page pausing stuff commented out.  Duh... =)

 + Mystic now allows message bases to be defined as "mandatory" in the
   scan setting.  This means that users will never be able to toggle the
   base off in their scan settings.

 ! When executing an MPE program, the arrow key functions would stop working
   after a call to the MenuCmd procedure.

 + Mystic now displays "None" for the user's current message and file base
   if they have never selected a message base instead of just blank spaces.

 + New MCI code: IL.  This code returns either ON or OFF depending on the
   user's node invisibility status.

 + Mystic now allows file bases to be defined as "mandatory" in the scan
   base's scan setting.  This means that users will never be able to toggle
   the base OFF in their scan settings.

 + New command option for the MN (Message New Scan) option.  When supplying
   /M on the command line, the MN command will only scan bases that are
   tagged as mandatory ("Always").  I will probably be re-writing the
   MN and FN commands completely sometime in the near future...

 ! The percentage bar in MIDE would get corrupt when compiling a .MPS file
   larger than 32,000 bytes.  Fixed!

.------------------------------------------------.
| June 9th, 1999 -> Mystic BBS v1.05a - RELEASED |
`------------------------------------------------'

 ! Fixed a bug in the Message Base Editor of MCONFIG.EXE which caused the QWK
   Index to get corrupted.  This caused QWK packets to be corrupted when
   created via Mystic BBS.

 ! Fixed a bug in the File Base Editor of MCONFIG.EXE.  The Default New Scan
   field was not allowing file bases to be set to "Always Scan".

 + The full screen editor quote window now saves the current text position
   after quoting, and will resume at that position if a user opens the quote
   window again.

 + In the user editor, the [ and ] keys now wrap around to the first/last
   record into the user database.  This makes things a little easier...

 + The search function in the user editor now allows a record number to be
   entered.  If a record number entered, Mystic will automatically jump to
   that record.

 + Added a new menu hotkey: TAB.  When "TAB" is entered as a hotkey, the
   menu command will be ran when/if a user presses the TAB key.

 + The DF mci code in language prompts can now have text after it.  After
   a DF is encountered, Mystic will look for a space or the end of the
   prompt.  For example, "|CL|DFhello more text here" will now be displayed
   as expected.

 + Added four new menu command hotkeys: RIGHT, LEFT, UP, and DOWN.  These
   only work in non-lightbar menus and are used to detect arrow key input
   in standard menus.

 ! Fixed carrier detection problems in the OS/2 native version.

 ! MIDE.EXE and MPLC.EXE were not always catching undefined variables in
   MPS source code.

 ! When using the Matrix login system, if the Matrix menu was not found,
   Mystic would loop over and over printing: "Menu not found.  Loading
   fallback."  Mystic will now exit with an error if the Matrix menu is
   not found.

 ! Other stuff... =)

.------------------------------------------------.
| July 6th, 1999 -> Mystic BBS v1.05b - RELEASED |
`------------------------------------------------'

 + Added new DOOR MCI code: %0 passes the com port handle for Win32 and
   OS/2 versions only.

 ! The Win32 (and possibly the OS/2) version was displaying the message
   date incorrectly in JAM message bases.

 ! When executing a MenuCmd function from an MPE, the arrow keys would
   stop working after the MenuCmd.  This was just fixed in the past version
   but I commented the fix for it out by accident when I recompiled the
   1.05b executables.

 + The -F menu command now allows multiple flags to be manipulated instead
   of only one flag per menu command.  See MYSTIC.DOC for more information!

 + Added a new display file: EMAILHLP.XXX.  This file is displayed when the
   user enters "?" while reading e-mail messages.

 + Added a (Q)uit option to the first screen of the group editor.

 + When in the message and file base editor, Mystic will now redisplay the
   list of bases if enter is pressed at the prompt.

 ! It was rumored that ALT-U would drop carrier on a user.  I wasn't able
   to reproduce this problem, but hopefully it has been fixed.

 ! The ALT-U (upgrade user) command was not upgrading a user's time when
   their security was changed while online.

 + If @S is found in a menu's display filename, Mystic will replace it with
   the user's security level.  For example, a menu's display file of
   MAIN@S will translate to MAIN20 if the user has a security level of 20.
   If MAIN20 doesn't exist, Mystic will strip the @S and use the base
   filename (ie, MAIN in this example).

 + Bad password attempts now log the user name as well as the password
   entered.

 ! Mystic was not executing events if the execution time passed while a
   user was in a door.  Now Mystic should log the user off immediately
   after returning from a door (if the event is forced) or wait until the
   user logs off (if the event is NOT forced).

 + The default screen length during a new user login is now configurable
   in System Config -> General Configuration.  Prompt #153 has been changed,
   as well as prompt 372:

        153 |CR|09Screen Pause Length (Enter/|&1):
        372 |CR|09Screen Pause Length (Enter/|&1):

 + Duplicate file scanning option: System Config - File Base Settings
   -> Upload Dupe Scan.  This can be set to three different options:

        None    -> Mystic will not scan for duplicate files
        Current -> Mystic will only scan the CURRENT file base for dupes
        All     -> Mystic will scan ALL file bases for duplicate files

 + Blind uploads have been added into Mystic.  The entire upload process
   has been rewritten.    The following prompts have been changed during the
   rewrite.  Replace these new prompts with your old ones:

       ; File upload testing FAILED text
       035 Failed

       ; File upload PASSED text
       055 Passed

       ; Xfer successful:      &1 = file name
       083 |CR|12� |11|&1 |03found.|CR

       ; Xfer failed:  &1 = file name
       084 |CR|12� |11|&1 |03skipped.|CR

       ; Displayed before running uploads processor
       206 |12� |03Testing file for errors :

   The following prompts are new.  Add these to your language file and
   recompile with the new MAKELANG.EXE:

       ; Blind upload?
       375 |CR|12Blind upload?

       ; Processing uploads
       376 |CR|14Processing uploads ...|CR

       ; BLIND dupe search
       377 |12� |03Searching for duplicate files :

       ; BLIND dupe found
       378 Dupe found.

       ; BLIND no dupe found
       379 None.

       ; Importing file_id.diz
       380 |12� |03Importing file description :

       ; FILE_ID found
       381 Found.

       ; No FILE_ID
       382 None.

 + New display file: BLINDUL.XXX - This file is displayed after a user
   selects a blind upload, just as the UPLOAD.XXX file is displayed.

 ! Pressing enter when upgrading a user's security level from the user
   editor was sometimes causing some strange display problems.

 ! Mystic was bombing out with an error when 0 byte files were uploaded,
   or if a user tried to view the contents of a 0 byte archive.

 + New prompt info MCI code for prompt #072: &2 now displays the file
   name for which the description is being entered.

 + Mystic now prompts the user to post a message on a message base after
   the last message has been read.        A new prompt goes along with this
   addition, make sure you update your language files:

       ; Post on message base?
       383 |12Post on |MB?

 + Enhanced the archive view functions.  When a user views a text file from
   within an archive, Mystic will now display a line of text before sending
   the text file.  The filename prompt has also been added to the language
   file.  Prompt #306 should replace the old one, and prompt 384 should be
   added to your language file.

       ; Viewing text file &1 = Filename
       306 |CL|14Viewing contents of text file: |15|&1|14.|07|CR

       ; View text file filename prompt
       384 |CR|09File name:

 + More rearrangement of prompts has brought two more additions to the
   prompt file.  Add the following:

       ; Download successful
       385 |CR|12Transfer successful!

       ; Download failed
       386 |CR|12Transfer failed!

 + Added the option to download files from within archived files.  When
   viewing the contents of an archive, files can now be downloaded.  As
   a result of this added feature, prompt #304 has been changed:

       ; Archive view command prompt
       304 |CR|14Archive View: (|15R|14)e-list, (|15V|14)iew File, (|15D|14)ownload File or (|15Q|14)uit: |15

 + When viewing a text file from within an archive, MCI codes are no longer
   filtered out.  The file is displayed in straight text mode.

 ! If the last read pointer file in a JAM base was deleted for some reason,
   Mystic would not recreate it, and thus users weren't getting their last
   read information saved.

 ! Fixed a bug in MIDE which would cause an error when when text was
   marked and deleted (under certain conditions).

 + New ACS command: OI.  This returns true if the user is invisible.

 + New MCI code: AV.  This returns Yes or No depending on the user's
   node message availability.

 + New ACS command: OA.  This returns true if the user is available to
   receive node messages.

 + Added three new Prompt Info MCI codes to prompt #139 (Who's Online):

       &6 = User's gender (M or F)
       &7 = User's Age
       &8 = User's Availability

 + Added a new menu command: MM - This is a mass e-mail command, which
   allows the sysop to send multiple users e-mail all in one shot.
   The following new prompts have been added, make the nessasary changes
   to your language files, and recompile:

       ; Mass mail prompt
       387 |CRsend mass mail by:|CR|CR(1) ACS level|CR(2) List of users|CR(3) All users|CR(Q) Quit|CR|CRCommand:

       ; Mass mail ACS prompt
       388 |CREnter ACS level:

       ; Mass mail name info
       389 |CR|11Enter user name, or search string.|CREnter a blank line to end.|CR

       ; Mass mail name prompt &1 = # of users in list
       390 |CR|11|&1 |03users in list.  Enter user name:

       ; Mass mail name list
       391 |CR|14User mailing list:|CR

       ; Mass mail name format &1 = name
       392      |03|&1

       ; Mass mail name list confirmation
       393 |CR|12send e-mail to this list?

       ; sending mass mail
       394 |CR|CR|14sending mass e-mail, please wait ...

 + New language prompt #395: Displayed when a user tries to send a node
   message to an unavailable node:

       ; Node unavilable
       395 |CR|14Sorry, this user is marked as unavailable.

 + Added the option to perform a text search on message bases.  When a user
   selects to read message in the current message base, Mystic will now
   offer the option to search for text, which will search the From, To,
   and Subject fields as well as the message body.  Prompt #112 has been
   changed and a new prompt (#396) has been added:

       112 |CR|07(|14F|07)|15orward, |07(|14N|07)|15ew, |07(|14Y|07)|15ours, |07(|14S|07)|15earch, |07(|14Q|07)|15uit?

       ; Msg search prompt
       396 |CR|03Enter search string:

 + Expanded the inactivity timeout setting to allow for up to 9999
   seconds.  It would only allow for up to 255 seconds in the past.

 ! Fixed some strange MPE engine bugs in the Win32 and OS/2 versions.  For
   some reason, some MPE programs that worked fine with the DOS version
   were not working correctly with the 32-bit versions.

 + Added ([) Prev and (]) Next commands to the Protocol editor.

 + Added the ability to toggle hotkeys on or off.  A new MCI code HK is now
   available which displays ON or OFF depending on the user's hotkey setting.
   The GE menu command has been expanded as well - option 19 now toggles
   the user's hotkey status.  A new field has been added for each menu
   command in the menu command editor.    This field is called "LONG KEY" and
   works just like the hotkey field except it sets the valid key to execute
   the command when the user has hot keys toggled OFF.

 + Added new option to System Config -> New User Settings in preparation
   for the lightbar message reading system. "Message Reader" has three
   options, similar to the file lists: Normal, Lightbar, and Ask.  Two
   prompts have been added to go along with this:

      ; Info edit: Msg Read type
      397 |CR|11(|030|08) |14Normal   |15: |10View messages page by page|CR|11(|031|08) |14LightBar |15: |10Scroll message lists with arrow keys|CR|CR|15S|10ele|02ct |15T|10yp|02e: |15

      ; New user: Msg Read type
      398 |CR|11(|030|08) |14Normal   |15: |10View messages page by page|CR|11(|031|08) |14LightBar |15: |10Scroll message lists with arrow keys|CR|CR|15S|10ele|02ct |15T|10yp|02e: |15

 + Added new option to the Security Level editor.  The option
   "Post / Call Ratio" is used to set the number of posts a user must have
   within 100 calls to the BBS.

 + Added new ACS command: OP.  This option returns true if the current user
   meets the set post / call ratio for their security level.      If they do
   not meet this ratio, OP will be false.

 + Added two new MCI codes:

      PC - This returns the user's actual post / call percentage.
      SP - This returns the user's needed post / call percentage in
           order to have a passing post/call ratio.

 + Completed the new full screen ANSI message reader / lister.  There are
   lots of changes that go along with this - as the entire message reading
   process has been rewritten for this addition.

   The first new addition is a new ANSI template: ANSIMLST.XXX.  This is the
   template for the ANSI message index listing, where users can scroll
   through a list of messages with the arrow keys.  The following MCI codes
   are used:

      !1 = Y position of the top line in the message index list
      !2 = Y position of the borrom line in the message index list
      !3 = Bottom of template.  When a user exists from the list, Mystic
           will move to this Y position in preparation for other text.

   The second new addition is a new ANSI template: ANSIMRD.XXX.  This is the
   template for the actual message reader, which allows the user to scroll
   through the message using the arrow keys / pgup, pgdn keys.  The following
   MCI codes are used:

      !1 = Y position of the top line of the message text window
      !2 = Y position of the bottom line of the message text window
      !3 = Y position of the bottom of the template.

   The message header information is the same as it for the standard
   message reading mode:

      |&1  From                       |&6  Total messages in base
      |&2  To                         |&7  Reply to message number
      |&3  Subject                    |&8  See also message number
      |&4  Date / Time                |&9  Message status
      |&5  Message number

   The third new addition are new prompts.  Add the following prompts to
   your language files and recompile them using MAKELANG.EXE:

      ; Ansi msg read: index list format
      ; &1 = msg #   &2 = subject     &3 = from       &4 = to
      399 |15|$L05|&1        |10|$R30|&2 |14|$R20|&3 |13|$R20|&4

      ; Ansi msg read: index list highlight
      ; &1 = msg #   &2 = subject     &3 = from       &4 = to
      400 |08|23|$L05|&1  |$R30|&2 |$R20|&3 |$R20|&4|16

      ; Ansi msg read: index list highlight OFF
      ; &1 = msg #   &2 = subject     &3 = from       &4 = to
      401 |15|$L05|&1        |10|$R30|&2 |14|$R20|&3 |13|$R20|&4

      ; Ansi msg read: delete msg
      402 |CR|12Delete this mail?

      ; Ansi msg read: jump to msg: &1 = cur msg num  &2 = high msg num
      403 |CR|09Jump to which message? (1-|&2):

      ; Ansi msg read: scan toggle  &1 = message base name
      404 |CR|11|&1 will NOT be scanned in new message scan!

      405 |CR|11|&1 will be scanned in new message scan!
      406 |CR|11|MB is marked as mandatory reading!

 + Separated the "To:" prompt when posting a message.  The following
   new prompts are:

      ; Reply msg To: standard
      407 |CR|09To:

      ; Reply msg To: lightbar
      408 |CR|09To:

 + Mystic now has the option System Config -> New User Settings ->
   HotKeys.  This option allows for three options: Yes/No/Ask.  Two
   new prompts have been added:

      ; User edit: Hotkeys
      409 |CR|12Use hot-key input?

      ; New user: Hotkeys
      410 |CR|12Use hot-key input?

 + Added a new command to the standard message reader: (L)ist messages
   Three new prompts go along with this new addition:

      ; Msg List Header
      411 |CR|15Msg #  From                                                           To                                                                       Subject|CR|09|$D79-

      ; Msg List Format (Same prompt info as header)
      412 |15|$L05|&5  |09|$R20|&1 |$R20|&2 |10|$R30|&3

      ; Msg List Footer
      413 |09|$D79-|CR|PA

 + New MPL procedure: MOVEY.  This works just like MOVEX except it works for
   the Y position.

 + The DATE/TIME PromptInfo MCI code for message headers have been
   separated.  Now &4 = msg date, and &0 = msg time.

 ! Mystic had a slight error in the format of the CHAIN.TXT door drop file.
   This should be fixed, and it should be created properly.

 + Rewrote the variable handling in the MPE engine.  Arrays can now have
   full expressions as indicies.  For example:

       Str := 4
       Test(Str2Int(Str) - 3) := 'Hello world'

 + The Win32 version now sets the console window title to "Mystic Node x"
   where X is the node number.    Haven't added this to the OS/2 version yet
   as I haven't had the chance to search for the appropriate API call.

 + The mouse is no longer active during a Mystic BBS Win32 session as it
   was in the past.

 + The VAR statement (for defining variables) in the MPE engine has been
   rewritten to allow a comma to separate variable defintions.  For example,
   the following is now supported:

        var
          somestr  string,
          somech   char,
          somebyte byte

 + Added local procedure variables into the MPE language.  This means that
   variables can be defined within a procedure and will only be able to be
   used in that procedure.  For example:

        Proc Hello
          Var S String
          S := 'Hello'
          WriteLn(S)
        Pend Hello

        WriteLn(S)

   The above example would not compile because the main body of the program
   is trying to access a variable which was defined within the HELLO
   procedure only.  Variables declared in the main body of the program are
   still considered global variables, and will be available to any/all
   functions.

 + The MPE engine compilers now ignore all "BEGIN" and "END" keywords to
   make it a little more "pascal-syntax" friendly.  Some people think that
   the "BEGIN/END" helps make their program code more readable.  However,
   this could cause some confusion in the future since BEGIN and END don't
   come up as errors, but they are not actual valid MPL keywords.

 + MIDE now syntax highlights "BEGIN" and "END".

 + Changed the syntax of the Procedure definition in the MPL.  The new
   format is as follows:

        Procedure <procname> (<optional vars>)
        Pend

   So for example, an old procedure that looked like this:

        Proc Hello_World
          WriteLn ('Hello world')
        Pend Hello_World

   Would now be changed to:

        Procedure Hello_World
          WriteLn ('Hello world')
        Pend

   Now that this change has been implemented, all older .MPS source code
   will need to be modified to fit this format.  The "PROC" keyword has
   been extended to "Procedure" and the procedure name is no longer
   required after the "Pend" statement.  If you forget to remove the name
   at the end of your Pend statement, the code will still compile.  However,
   it will not execute properly!

 + Variables can now be passed to procedures!  For example, the following
   is a valid procedure:

        Procedure Print (Str String)
          WriteLn ('Contents of STR = ' + Str)
        Pend

   Then, to call the procedure in your code:

        Print ('Hello World')

   And now that the MPL engine is a little more friendly to some of the
   Pascal syntax, the following is a valid procedure:

        Procedure Print (Str String)
        Var
          Str2 String,
          Str3 String
        Begin
          WriteLn (Str)
        Pend

 + Added four new options to menu commands MW (Write e-mail) and MP
   (post new message):

        /TO:<username>   <- This sets the message's TO field.
      /SUBJ:<subject>    <- This sets the message's SUBJECT field.
      /ADDR:<netaddr>    <- This sets the message's netmail address field.
         /F              <- Forces user to post the message (they can't
                            abort it from the editor).

 + Added two new options to the FF menu command (Create/Download file list):

              /NEW - Creates a list of only NEW files.
        /ALLGROUPS - Creates a list of files in ALL file groups.

 + New MPL function: ISLOCALKEY.  Returns TRUE or FALSE after calling
   READKEY based on who entered the key.

 ! If Allow ANSI is set to NO, Mystic will now skip the graphics detection
   and automatically set their terminal type of ASCII.

 ! Mystic was not pausing after a screen size of message and file group
   names when selecting groups.

 + Added new MPL command: WriteLocalXY.  This procedure allows text to be
   printed to the local screen only.

 - Removed MPL command: StatusWrite.  This procedure can be completely
   replaced by the new WriteLocalXY command.

 + New MPL "CFG" variable: CFGSTATUSTYPE

 + Added two new prompts, to separate the Xport message function in ansi
   and standard reading modes:

        ; Ansi msg read: export to file
        414 Export to filename:
        ; Ansi msg read: local export
        415 Export to filepath/filename:

 + Added the user's age after their birthdate in the user editor.

 + MPE change: The Write and WriteLn statements now REQUIRE that any
   variables passed or functions used are of the STRING type.  If you want
   to print numerical variables, you must use the strI2S function.

 + Added new MPE command: CONST.  This allows constant variable
   defintions to be defined.  At this time there are a few limitations...
   Any CONSTANT value cannot be used when assigning variables.  For
   example:

       Var
         Str String
       Const
         SomeStr = 'Hello World'
       Begin
         Str := SomeStr
       End

   The above example won't work, because you are trying to assign a
   variable the value of a CONSTANT.  They do work, however, in
   expression evaluations:

       Const
         SomeByte = 69
       Begin
         If SomeByte > 69 Then
           WriteLn ('Greater!')
         ElseIf SomeByte < 69 Then
           WriteLn ('Less than!')
         Else
           WriteLn ('Same')
         EndIf
       End

 + Added permanent user index numbers for each user.  These will be used
   quite a bit internally in the future.

 + New ACS command: Ux.  This command will return true if the user's
   permanent index matches the supplied number.  For example, an ACS of
   "u1" would only return true if the user's permanent index was 1.

 + Added FUNCTIONS into the MPE engine.  Functions work almost indentical
   to procedures except that they return values.  The following is an
   example function:

     Function Return10 : Byte
     Begin
       Return10 := 10
     Pend

     Var
       Temp Byte
     Begin
       Temp := Return10 + 10
       WriteLn ('This should say 20 : ' + strI2S(Temp))
     End

 + Added new prompt #416 to the mass e-mail...

      ; mass email subj: prompt
      416 |CR|09Subject:

 + Added new MPE command: ONEKEY.

 + Added new ACS option to System Config -> General Settings.  The
   "See Invisible ACS" is the ACS level required to see users marked as
   invisible in the Who's Online listing.

 + Added new USER variable into the MPE engine: USERPERMIDX is the user's
   permanent user index number.

 + The new user feedback e-mail can now be configured in System Config ->
   New User Settings.  In the past it would automatically send the e-mail
   to the SysOp name defined in System Config -> General Settings.

 + Added some new options to the Mass Upload command.  The (G)lobal command
   now scans all areas for all new files automatically.

   If no FILE_ID.DIZ file is found, Mystic will now prompt for a file
   description, unless in Auto Area or Auto Global mode.  The mass upload
   command should also be much faster than it was in previous versions!

 + Added new MPE demo program: MPEDEMO.MPS into the default full
   installation.  I'll also include it into the 1.06 upgrade package.

 + Added a wide-beta release telnet server for the Win32 version.  This
   server allows Mystic BBS for Win32 to handle incomming telnet connections
   without the need of a virtual modem driver.  Unfortunetly, existing DOS
   doors and protocol drivers will not work with this server, so it may not
   attract too many SysOps.  In the future, Mystic will have its own set of
   internal protocols which will work over a telnet connection.

 + Separated many of the "invalid password" prompts.  From now on, #417
   will be a "general" invalid password prompt, for most things like
   invalid menu passwords, invalid file/msg base passwords, etc.  Other
   invalid password prompts have been separated and will be listed
   below:

      ; General Invalid PW
      417 |CR|12Invalid password.

 + Separated the new user login PW prompts with the change password prompts.
   Along with this comes some new prompts:

      ; INFO EDIT: Do not match
      418 |CR|12 Passwords do not match!
      ; INFO EDIT: PW prompt
      419 |CR|03Enter your desired password.|CRIt should be between 4 and 20 characters.|CR|CR|09Password:
      ; INFO EDIT: PW too short
      420 |CR|12Password must be at least 4 characters long!
      ; INFO EDIT: Verify PW
      421 |CR|11Enter your password again for verification.|CR|CR|09Password:

 + Some new and changed invalid password prompts:

      ; User login: Invalid PW
      003 |CR|12invalid password.
      ; Matrix user login: Invalid PW
      293 |CR|12Invalid password.
      ; UNUSED
      331 UNUSED!!
      ; General Invalid PW
      417 |CR|12Invalid password.
      ; Invalid New User PW
      422 |CR|12Invalid password!
      ; Invalid Matrix PW
      423 |CR|12Invalid password!

 + Added new blind upload prompt:

      ; Upload: No files found
      424 |CR|15No files found!|CR|CR|PA

 + Added new read command (B)y you.  When this is selected, Mystic will
   only show messages post by the user.  Prompt 112 has been changed to
   add this command:

      112 |CR|07(|14F|07)|15orward, |07(|14N|07)|15ew, |07(|14B|07)|15y You, |07(|14Y|07)|15ours, |07(|14S|07)|15earch, |07(|14Q|07)|15uit?

 + Added new menu command: MV - View outbound (sent) e-mail.

 ! When compiling a file list, Mystic would sometimes not display the file
   base name after the "Working..." prompt.  This only happened when there
   were no files in a base and the data files didn't exist for that area.

 + File list compiler now aborts if there are no files in the list.  A new
   prompt goes along with this:

      ; File list compile: No files found
      425 |CR|15No files found!|CR|CR|PA

 + Added the ability to refuse multinode user logins on multiple nodes.
   If System Config -> General Config -> User Multiple Logins is set to
   Yes, Mystic will not allow the same user to be connected to more than
   more node at a time.  A new prompt #426 has been added:

      426 |CR|14You cannot login to more than one node at a time.|CR|CR|PA

.-----------------------------------------------.
| Jan 30th, 2000 -> Mystic BBS v1.06 - RELEASED |
`-----------------------------------------------'

 + Added new Prompt Info MCI code to Prompt #30: &7 now returns the user's
   age.

 + New MCI code: RPxx.  This sets Mystic's pause count to the value contained
   in xx when displaying a text file.  I've found that this can come in
   handy when doing some in depth modding.  For example: RP10 will set the
   pause count to 10, meaning Mystic thinks its displayed 10 lines since the
   last page pause.

 ! SysOp feedback after a chat page was not working.  It does now! =)

 + The <space> key can now be used to toggle the Yes/No lightbars.

 ! New user feedback was not being forced.  In other words, the user would
   be able to abort posting the message.  This has been fixed.

 + LANGEDIT.EXE will now ask if you would like the language file
   automatically compiled after saving.

 + Updated the node chat a little bit.  The chat now has real-time updating,
   which basically means that you can be typing a reply and it will still
   display other user's text.  In the past, if you weren't typing it would
   look for new text from other nodes, but now it will do it the entire time
   you're in chat, no matter what you're doing!  I've also been thinking
   about rewriting the chat to be more IRC-like.  If that sounds good, let
   me know and i'll probably do it! =)

 + New program LANGUPDT.EXE has been added to the Mystic upgrade packages.
   This program will automatically update old language files with new or
   changed prompts...

 ! MPE: The GET/PUTMBASE functions were off by a number, for example
   GetMBase(1) would actually return Base 0.

 ! MPE: PutMBase was corrupting a field in the message base record.

 + MPE: Added new MBASE variable: MBASENTYPE.  Just to clear some things up
   here:

      MBASENTYPE = Net type (Local, Echomail, etc)
      MBASEBTYPE = Base type (JAM, Squish)
      MBASEPTYPE = Post type (Public, Private)

 ! Fixed a small bug in the Win32 full screen editor that caused Mystic to
   lock up.

 + New prompt in node chat:

     ; nodechat input &1 = username
     427 |07[ |15|&1 |07>> |03

 + Added a configurable WFC screen template.  The WFC screen template is
   found in the data directory as "WFCSCRN.XXX".  The random display file
   system works as well, allowing up to 10 randomly selected WFC screens!

   The following screen info codes are used:

      !1 Status line (40 characters in length)
      !2 System Time
      !3 System Date
      !4 Next Event Time
      !5 Top X/Y position and standard color of node window
      !6 Bottom X/Y position and highlight color of node window
      !7 Top X/Y position and color of modem window
      !8 Bottom X/Y position of modem window

 + MPE: Added two new USER variables:

      USERCURMBASE - User's current MBASE
      USERCURFBASE - User's current FBASE

 + Added User's Screen Size into the user editor.  I can't believe I forgot
   to add that in the past! =)

 ! Mystic was not updating the user's flags on the statusline after the
   -F menu command was used.

 + Passing a zero to the baud parameter when loading Mystic now skips the
   WFC screen and runs the user login in local mode.  Passing a -L on the
   command line still goes to the WFC screen first.

 + Changed the split screen chat a little bit.  First, the text color is
   now defined by the screen info MCI codes.  This allows the SysOp and
   User windows to have different text color.  Second, two new screen info
   codes have been added:

      !0 - Specifies the X/Y position and color for the user's time left.
           It will be updated every minute, and is optional.
      !9 - Specified the X/Y position and color for the system time.  It
           will be updated every minute and is optional.

 + Added new nodechat prompt:

     ; nodechat user not found
     428 |CR|15User not found.

 ! The "S" optional data option for the MR menu command was not working
   properly.

 ! When reading messages in the lightbar message reader, users were able
   to delete messages even if they were not the user who posted them.

 ! Fixed a bug in the menu hotkeys when entering "/x" commands.  Sometimes
   Mystic would temorarily ignore input after backspacing over the "/"
   character.

 + The maximum number of menu commands have been expanded to 75 commands
   per menu, rather than the old maximum of 50 commands.

 + Added the option for Sysop/Users to toggle which mode the lightbar
   message reader starts in: message index mode, or message reading mode.
   Along with these additions comes to following:

      System Config -> New User Settings -> Msg Lightbar Idx.  This option
      sets the default for new accounts and can be set to "Yes/No/Ask".

      Added prompt #429:
      ; new user: use lightbar message index?
      429 |CR|12Use lightbar message index? |11

      Added new option to menu command GE: 21.  This toggles the status of
      the user's lightbar message reading index mode on/off.

      Added new MCI code: ML.  This returns on/off based on the status of
      the lightbar message index.

 + Added the (Q)uit command to the lightbar message reader.  This command
   was in the standard message reader, but I somehow overlooked it in the
   lightbar version.

 + Added new program: MYSTPACK.EXE.  This program packs all JAM message
   bases on your BBS.  It will remain external from MBBSUTIL.EXE until I am
   able to finish the Squish side of things.  Here's the following
   functions:

      - Removes deleted messages from your data files.
      - Renumbers messages in numerical order
      - Renumbers the reply chains (Refer to and See Also)
      - Updates each user's last read pointers
      - Removes any message in violation of the Max Msgs / Max Age settings
        for each base (found in the Message Base Editor).

   It also has the option to -SKIPFIRST, which will skip the first message
   in all local message bases, so they will never be deleted unless marked
   deleted by the SysOp.  This allows for a "This base is for..." or
   BASE_ID.DIZ message to always stay as the first message.

 ! When inputting a password and CTRL-Y was pressed, Mystic was filling the
   entire field up with the echo character instead of blank spaces.

 + Added two new command options to the FG menu command (change file
   group).  The + and - command will now move to the next and the previous
   file group.  Mystic will automatically find the first file base the user
   has access to after changing groups.

 + Added two new command options to the MG menu command (change message
   group).  The + and - command will now move to the next and the previous
   message group.  Mystic will automatically find the first message base
   the user has access to after changing groups.

 + Added new prompt: Message base scan setting footer:

      ; msg scan setting footer
      430

 + In Lightbar menus, Mystic will now keep track of the user's lightbar
   position when a menu command is ran.  In the past, it would always default
   to the first command on the menu when it was redisplayed.

 + Full screen editor quote window now only adds a blank line to the bottom
   of the message if new text was quoted.

 + The %0 door MCI code now returns the fossil com port in the DOS version.
   In the past, it would not get filtered out.

 ! Ocassionally, when editing text of a posted message, Mystic would garble
   up the display.

 ! Mystic was not correctly rewriting the message index information after
   saving changes to an edited message.  This would cause some JAM packers
   to duplicate messages, which other JAM packers would process the index
   correctly.

 + Mystic will now try to put new users into a group instead of having them
   start out in no group.

 + The (N) command during a lightbar message index has been changed to
   (G) to match the identical command when reading in non-lightbar mode.
   This function goes to the next base in the message scan, or does
   nothing if not in a message scan.  You may want to update your lightbar
   message index template and your AMSGHLP1.XXX files to reflect these
   changes.

 + The (ESC) function in the lightbar message reader has been changed to
   quit reading.  In the past, it would show the lightbar message index.

 + The lightbar message index command, which was (ESC) in the past, has
   been changed to (L) to reflect the same command as the non-lightbar
   reading command to view the message index.

 + Made some major changes to the file lists, in preparation for support
   for long file names.  The ANSIFLST.XXX template has been changed quite a
   bit and the highlight data has been moved to prompts to make it more
   flexible.  The following Screen Info codes are used in ANSIFLST.XXX now:

   !1 = Top Y location of the file list window.
   !2 = Bottom Y location of the file list window.
   !3 = Y location of the status text.
   !4 = X/Y location of the number of files tagged.

   The following prompts are new or changed:

   ; Standard file list: #/filename:
   ; &1 = file num, &2 = filename, &3 = tag char
   042 |15|&1|07|&3 |14|&2

   ; Standard file list: description/info
   ; &1 = size, &2 = date, &3 = DLs, &4 = desc, &5 = uploader
   043  |07�� |09|$L11|&1 bytes |10|&2    |11|&4

   ; Standard file list, ext desc: &4 = description
   045 |11|$D34 |&4

   ; Lightbar file list: #/filename:
   ; &1 = file num, &2 = filename, &3 = tag char
   431 |15|&1|07|&3 |14|&2

   ; Lightbar file list: highlight on: &1 = #, &2 = filename, &3 = tag char
   432 |00|23|&1|16

   ; Lightbar file list: highlight off: &1 = #, &2 = filename, &3 = tag char
   433 |15|&1|07|&3 |14|&2

   ; Lightbar file list: description/info
   ; &1 = size, &2 = date, &3 = DLs, &4 = desc, &5 = uploader
   434  |07�� |09|$L11|&1 bytes |10|&2    |11|&4

   ; Lightbar file list, ext desc: &4 = description
   435 |11|$D34 |&4

   ; Lightbar file list, uploaded by: &5 = uploader
   436 |03|$D34 Uploaded By: |&5

   ; Standard file list, uploaded by: &5 = uploader
   437 |03|$D34 Uploaded By: |&5

 ! When a user tried to login on more than one node at a time (and multiple
   login is disabled), their time left was being set to 0.

 + Added new MCI code: PI.  This just displays a | character.

 ! There was a security leak in Mystic's email system that allowed user's to
   access other user's email messages!  This has been fixed!

 + Added a set of internal file transfer protocols.  Included are the
   following:

     Xmodem
     Xmodem/CRC
     Xmodem/1K
     Ymodem Batch
     Ymodem/G Batch
     Zmodem Batch

   Support for external protocols has been removed, at least temporarily.
   I'm not aware of any external protocol drivers that will work with
   long file names, or with Mystic's internal telnet server anyway.  So
   supporting them wouldn't do much good.

   Two changed prompts go along with this:

   ; Protocol select batch prompt
   061 |CR|14[|15Y|14] Ymodem|CR[|15G|14] Ymodem/G|CR[|15Z|14] Zmodem|CR|CRSelect Protocol [|15Y G Z|14]:

   ; Protocol select standard prompt
   062 |CR|14[|15X|14] Xmodem CRC|CR[|151|14] Xmodem 1K|CR|14[|15Y|14] Ymodem|CR[|15G|14] Ymodem/G|CR[|15Z|14] Zmodem|CR|CRSelect Protocol [|15X 1 Y G Z|14]:

   Also, be aware that when updating you will probably want to modify all the
   prompts that ask for a filename, by adding a CR at the end of them.  For
   example:

     OLD: 344 |CREnter file name:
     NEW: 344 |CREnter file name|CR:

 - Display files PROTO.XXX and PROTOB.XXX have been removed, as they are
   useless now.  You can replace prompts #61 and #62 with the PROTO and
   PROTOB display files if you want to still use those files.

 + Added new LightBar Grid menu type.  In the menu flags for each menu,
   there is now a menu type field, which can be set to any one of the
   following options:

      Standard
      Lightbar
      Lightbar Grid

   Both Standard and Lightbar options work the same as they have in the
   previous versions, but the LightBar Grid system implements a way more
   confusing and way more flexible LightBar system. =)

   When the grid system is activated on a menu, it will use the following
   new options that have been added to each menu command within a menu:

     Arrow Up    : 1
     Arrow Down  : 5
     Arrow Left  : 2
     Arrow Right : 4

   If a menu command is currently highlighted in a lightbar grid menu, and
   the up arrow is pressed, Mystic will jump to menu command #1.  If the
   down arrow is pressed, Mystic will jump to menu command #5.  The same
   also goes for the left and right options.

   As you can see, this will allow for an enormous amount of flexibility as
   compared to the previous lightbar system and the lightbar systems found
   in most other BBS packages.  However, its a little more work to create
   these menus so I imagine only some of the hard core SysOps will make
   much use of this system.

 + Due to "popular demand", file description line length has been expanded
   from 45 characters to 50 characters.

 + The mass upload command now executes the upload tester if one has been
   configured for Mystic.

 + Added a "Post on this base?" prompt after reading messages into the
   Lightbar message reader.

 + Cleaned up the functionality of the Lightbar message reader quite a bit,
   to make it operate more like the standard reader in certain places.

 + MPE: New MPL function ODD.  Returns true or false based on if the passed
   number is ODD or EVEN.

 + MPE: Finished up the CONST variable support.  In the past CONST
   variables would only work in evaluations and could not be used in
   variable assigning statements.

 + MPE: In the past, declared functions were not allowed in expression
   evaluations.  They are now! =)

 + MPE: Boolean parameters are now allowed in declared functions and
   procedures.

 + MPE: Boolean modifiers were not allowed when assigning variables.  I
   totally overlooked that somehow and never noticed that it wasn't
   implemented.  For example, this will work now:

      Function Neg (Bol Boolean) : Boolean
      Begin
        Neg := Not Bol
      Pend

 + Added a character in the lightbar message index listing to mark messages
   which are new.  The character can be setup in System Config -> Language
   Definitions -> New Msg Char.  Prompts #399-401 now have a promptinfo &5
   code that returns either the new msg char or a space.

 + Recoded some internal MPE engine functions.  The compiler is probably
   now a little faster than it was in the previous release, and the executor
   engine is probably about 300-400% faster in most cases!

 + Cleaned up the word wrapping in the full screen editor.  In the past,
   if a paragraph existed under the paragraph currently being edited, Mystic
   would allow the text from the first paragraph to wrap into the second
   paragraph.  The editor now detects a second paragraph and will insert
   a line when wrapping to prevent this.

 + Added a second set of access flags for each user.

 + Added new ACS command: "Dx".  This command works just like the "Fx" ACS
   command, except it targets the second set of access flags as opposed to
   the first set, which "Fx" checks.

 + The login display file "FLAGx.XXX" has been changed to "FLAG1x.XXX".

 + Added new display file "FLAG2x.XXX", which is works just like FLAG1.XXX
   except it targets the second set of access flags.  IE: FLAG2A.XXX will
   display during login if the user has flag A set in their second set.

 + Rewrote the user editor to make room for the second set of flags, and
   other new user options.

 + Added new menu command: -D.  This works identical to the -F command, and
   is used to toggle or set flags in the user's SECOND set.

 + Added new user database field: E-mail address.  This option can be set
   or disabled in the new user settings, and edited within the user editor.
   Two new prompts have been added to go along with this:

      ; new user: enter email address
      439 |CR|09Enter e-mail address|CR:
      ; info edit: enter email address
      440 |CR|09Enter E-mail address|CR:

   An addition to the GE menu command has also been made.  Optional data
   22 now edits the E-mail address field.

   New MCI code: UK has been added, which returns the users email address.

 + Added new user database field: User note.  This option can be set or
   disabled in the new user settings, and edited with the user editor.
   Two new prompts have been added to go along with this:

      ; new user: enter user note
      441 |CR|09Enter your desired user note|CR:
      ; info edit: enter user note
      442 |CR|09Enter your desired user note|CR:

   An addition to the GE menu command has also been made.  Optional data
   field 23 now edits the User Note field.

   New MCI code: UI has been added, which returns the user note field.

 + Added three new optional/configurable questions into the user database.
   They can be configured/enabled/disabled in New User Settings.  Six new
   prompts have been added:

      ; new user: option 1
      443 |CR|09Enter optional field 1:
      ; info edit: option 1
      444 |CR|09Enter optional field 1:
      ; new user: option 2
      445 |CR|09Enter optional field 2:
      ; info edit: option 2
      446 |CR|09Enter optional field 2:
      ; new user: option 3
      447 |CR|09Enter optional field 3:
      ; info edit: option 3
      448 |CR|09Enter optional field 3:

   Optional data fields for menu command GE have been added to edit these
   fields.  These are 24, 25, and 26.

   Three new MCI codes have been added. U1, U2, and U3.  These return the
   optional data 1, 2, and 3 fields.

 + The "Post on this base" question is no longer asked when a user aborts
   reading messages.

 + Added the ability to disable the Lightbar Quote Window both on a SysOp
   and a user basis.  These have been added into the user editor and into
   the new user settings.  One changed prompt goes with this:

      ; New user: Use FSE quote window?
      060 |CR|12Use full screen editor quote window?

   Optional data field 27 has been added into the GE menu command to toggle
   this option on a user basis.

   New MCI code of UQ has been added, which returns "standard" or "lightbar"
   for the quote mode, based on the user's setting.

 + Added the ability to start reading in the lightbar index mode in just
   the e-mail base.  This is also configurable on a Sysop and individual
   user basis.  One changed prompt goes along with this:

      ; Start at message index in email? (lightbar msg reader)
      331 |CR|12Start at e-mail message index?

   Optional data field 28 has been added into the GE menu command to toggle
   this option on a user basis.

   New MCI code UM returns ON/OFF based on this setting

 ! Mystic no longer asks users if they want to "Post a message here" when
   viewing sent e-mail.

 + New MPE command: TextColor.  This takes a text attribute number and
   changes to that color.

 + New MPE function: TextAttr.  This returns the current text attribute.

 ! MPE: Assigning a char variable to a string variable would cause a
   variable type mismatch!  IE: Str := Str + Ch

 + MPE: Support for CHAR variables as function results has been added.  I
   didn't even realized that they weren't supported!  Hrrmmm,
   Forgetful I am, yes...

 + Each network address now has a network name to go along with it, which
   is defined in System Config -> Network Settings.  There is also a new
   MCI code that goes along with this: MN, which returns the network
   name for the current message base.  This can be used in the message base
   scanning prompt or the message base list format prompt... or anywhere
   else! =)

 + Added a footer to the "file base scan setting" list:

   ; file base scan setting footer
   449

 + Default options for TSERVER can now be set in MCFG.EXE, under System
   Configuration -> Telnet Options.

 + MPL: Added two new commands: GETFGROUP and PUTFGROUP.  These are used
   to read and write to the file group records, and work just like the
   GETFBASE and PUTFBASE commands.  Two new variables go along with this:

      FGROUPNAME - Name of File Group
      FGROUPACS  - Access string of File Group

 + MPL: Added two new commands: GETMGROUP and PUTMGROUP.  These are used
   to read and write to the file group records, and work just like the
   GETMBASE and PUTMBASE commands.  Two new variables go along with this:

      MGROUPNAME - Name of File Group
      MGROUPACS  - Access string of File Group

 + MPL: Added two new commands: GetTextStr and PutTextStr.  These commands
   will be used to read/write/edit messages and file descriptions as well
   as being used to access the message and text editors within Mystic.
   More on this stuff later! =)

 + Expanded the Prompt Info codes to 15 instead of ten.  New Prompt Info
   codes are &A through &E...

 + Added new prompt info codes for prompt #30:

      &8 = Email address
      &9 = User note
      &0 = Optional field 1
      &A = Optional field 2
      &B = Optional field 3

 + Added new prompt info codes for prompt #142:

      &9 = User note
      &0 = Email
      &A = Optional field 1
      &B = Optional field 2
      &C = Optional field 3

 + New menu command auto-exec type: AFTER.  This works just like EVERY
   except it is drawn AFTER the menu is displayed, directly before
   the prompt.  EVERY executes before the menu is drawn each time it is
   drawn.

 + New menu option: "Input Type".  This can be set to any of the following
   values:

      Long key     : Forces the menu to use long key input
      Hot key      : Forces the menu to use hot key input
      User setting : Uses whichever input mode the user has set

 - Removed the Xmodem and Ymodem protocols.  This is most likely a temporary
   thing, but I doubt many will use them anyway.  They're still kinda buggy
   and I want to get 1.07 released as soon as I can.

   Changed two prompts for this:

   ; Protocol select batch prompt
   061 |CR|14Press [|15ENTER|14] to start Zmodem transfer, or [|15Q|14] to Quit:
   ; Protocol select standard prompt
   062 |CR|14Press [|15ENTER|14] to start Zmodem transfer, or [|15Q|14] to Quit:

 + New menu command: VN.  This will search for any new voting questions and
   allow the user to vote on them.

 ! Mystic (Win32) wasn't setting the node number correctly in the Window
   Title.

 + New prompt: Prompt #450 is now the TO: for a privately posted message
   "TO:" field.

      450 |CR|09To:

 + Added two new fields to the New User Settings in System Configuraton:

      Start Message Group
      Start File Group

   This allows for the msg/file group that new users start off in to be
   defined.  In the past, Mystic would just put them in the first group
   and first base they had access to.  Setting these options to zero will
   cause Mystic to act like it used to - putting the user into the first
   group and base they have access to.

 - Removed MENUEDIT.EXE from the distribution

 - Removed LANGEDIT.EXE from the distribution

 - Removed MCONFIG.EXE from the distribution

 + Added new program: MCFG.EXE.  This program is going to be an all-in-one
   configuration and management utility!  All of the functions that existed
   in MENUEDIT, LANGEDIT, and MCONFIG have already been added to this, as
   well as a file base list manager and many other parts of the System
   Configuration.  This program is not 100% completed, but its a VERY nice
   start!  Many MANY enhancements into the menu editor, and language editor
   as well as an overall clearer and more intuitive interface!  Includes
   native DOS, Win32, OS/2 and Linux versions!

 + Completely rewrote MIDE.EXE, the Mystic Programming Language IDE.  This
   new version offers these new features:

      + Improved interface
      + Allows up to 9 files to be edited at once
      + Configurable tab spacing stops
      + Ability to disable syntax highlighting
      + Enhanced text copy/cut/paste block functions
      + DOS, Win32, OS/2, and Linux native versions
      + Full online help system similar to Borland's IDE help systems.
        Includes a full reference to the Mystic Programming Language
        functions and procedures - along with examples of each of them!

 + Completely rewrote MPL.DOC (The Mystic BBS Programming Language Manual).
   Its not 100% completed, but its more organized and complete than the
   MPL.DOC which was distributed with version 1.06.

 + Cleaned up the way Mystic determines file/msg groups for new users and
   existing users.  It's very "intelligent" now...

 + Rewrote the installation program.  The install looks much nicer than the
   pervious install and no longer requires any type of external archive
   utility to complete the installation.

 + MYSTIC BBS NOW HAS A NATIVE LINUX VERSION!

      The linux version of Mystic BBS has been completed.  Mystic/Linux is
      a complete shell replacement, which means that it will work
      effortlessly over dialup and telnet connections to your system!  The
      configuration is file case sensitive, but other than that all data
      files are compatible with other native versions of Mystic (ie, DOS,
      Windows, and OS/2).

      Many changes had to be made to the Sysop end of Mystic to work around
      various Linux issues.  Running a BBS under Linux is an entirely
      different experience, but i've tried to make the transistion as easy
      as possible for everyone.  Just be aware that the functionality of
      Mystic/Linux is identical to all other versions, but the Sysop
      operations will be different.

 + TSERVER (the Mystic BBS telnet server for Windows) has been cleaned up.
   When a new connection is received, TSERVER will now spawn new Mystic
   windows completely in the background without interrupting the current
   process.  In the past, TSERVER would always force Windows to return to
   the desktop - so, for example, if you were in a full screen DOS session,
   it would return your DOS session to a GUI window.

 + Mystic now has full support for long file names.  It already has since
   early 1.07 alphas, but apparently I forgot to reflect that in the whats
   new file!

 + Mystic's internal user editor now sets users who are logged into other
   nodes as "read only" when their account is being viewed.  If their
   account needs editing, you'll have to switch to their task and edit them
   with the SysOp functions.

 ! Mystic wasn't saving user accouts in the user editor if the user logged
   in was trying to edit their own account.  For example, if "Joe SysOp"
   was logged in, went to the user editor, and tried to edit his account -
   it wouldn't save.

 ! When using the ALT-E sysop command (edit user account), Mystic was not
   changing the users online time if a new "Time Left" was set.

 + New MPE command: EXIT.  This function will immediately exit the current
   procedure or function.

 + Two new options have been added to the new user settings: Start Msg
   Group and Start File Group.  In the past, Mystic would start a new user
   in whatever the first group they had access to was.  This can be used to
   start a new user in a definied message and file group.

 + New option added to the message base options:  The option to "Show Bases
   in Group List" must now be set to Yes for Mystic to calculate the number
   of areas in that group when the user is selecting a message group.  If
   this option is toggled off, Mystic will return a "0" for number of areas
   in a group.

 + New option added to the file base options: Show Base in Group List.
   This works just like the same option in the message base settings.

 ! Fixed a bug with user's time left getting set to 0 on certain occasions
   during a login.

 + Mystic now disconnects the user after three login attempts.  If they
   don't select to create an account in those 3 attempts, Mystic boots them.

 + MPE: Added support for including source files into the main source of
   an MPS file.  This hasn't been tested very well and has caused a slight
   decrease in compile speed, but its there and appears to work! =)

   Example:

     # Sample source file which includes common.mps
     # --------------------------------------------

     #include common.mps

     Begin
       WriteLn ('Any functions or procedures in common.mps can be called')
     End

   Note that the compilers will still compile a procedure or function into
   the executable if they're not used in the program.  So if you did make
   an include of common functions and procedures that you use, they will
   all be compiled.  In the future i'd like to add a "smart linking"
   feature which would remove all unused functions and variables.

 + Added new user flag: Ignore LC.  When set to YES, this option will
   not add the user into the last caller information.

 + Mystic will now not add the user to the last callers file if they log in
   in Invisible mode.

 ! Fixed a problem within MBBSUTIL's user packer.  Under certain situations,
   MBBSUTIL was messing up the user's last read pointers and their base
   scan settings.  This has been fixed.

 + MPE: Added new var to USER record: UserEditType.  This returns the user's
   current editor setting.

 + The one liners function now redisplays the oneliners after a user adds
   a new entry.

 + Separated the post subject prompt and the REPLY subject prompt in the
   language file.  New prompt added:

      ; reply msg SUBJ
      451 |CR|09Subject:

 + Added a header prompt into the standard (non-quote-window) quote mode.  A
   new prompt has been added:

      ; standard quote header
      452 |15Quote mode: Select a range of text to quote

 + Added a new option to the message and file area selection menu commands
   (MA and FA).  When "nolist" is supplied in the optional data field of
   the menu command, Mystic will just show the prompt to select a message
   base number unless, of course, the user enters "?" on that prompt, which
   they would then get a listing of available bases.

 + Added new option to Mystic's graphics detection when a user connects.
   An option of "Force ANSI" can be set in the general settings of the
   system configuration as the detect type.  This will force the user into
   ANSI mode and not attempt to detect or ask for the graphics mode.

 + Added new prompt: 453.  This is the footer for the listing of users in
   teleconference.

      ; footer for teleconference user list
      453 |CR|PA

 + Added an entirely new FULL SCREEN irc-like teleconference system!  The
   older system is still around for people who like it better or for users
   who don't support ANSI graphics.  This new system allows for the user to
   have a permanent input line as well as a window where text will scroll,
   maybe similar to a text-based mIRC client.  Each user also has a 200
   line scrollback buffer!  Many changes and additions go along with this:

   Changed prompts:

      ; nodechat user's text: &1 = user name
      181 |07<|15&1|07> |03

      ; nodechat broadcast text: &1 = user name
      319 |01<|09|&1 |11Broadcast|01> |03

      ; nodechat private text: &1 = user name
      218 |04<|12|&1 |14Private|04> |03

      ; nodechat action text: &1 = user name
      229 |13* |&1

      ; nodechat: info/status text
      226 |12- |07

      ; new user: use full screen node chat?
      187 |CR|12Use full screen node chat? |11

      ; Node chat scroll mode back
      237 |15Scrollback:  (Up/Down) Move  (Ctrl-R) Page Up  (Ctrl-C) Page Down  (ESC) Quit

   Also some new options in the new user settings, where the node chat can
   be either forced on or off for new users, or the new user can be asked.
   New additions for this field has also been added to the user editors as
   well as an addition to the "GE" menu command with optional field data
   of 29 to toggle the user's setting.  The MCI code "CM" returns the
   on/off status of the full screen chat function.

 ! Fixed a bug that existed when viewing text files.  The pause prompt would
   display on the last line of the page (overwriting the last line) rather
   than moving down to the next line and displaying the pause.

 + When doing a new scan for personal messages, Mystic will now update the
   last read pointers for each base.  This wasn't a bug, I designed it to
   not save the pointers, but I really don't know why I originally did it
   that way. :p

 + Added a new menu command: MS.  This command allows for easy message
   searching in the current base, current group, or all groups/bases.
   See MYSTIC.DOC for more information.  Two changed prompts go along
   with this new command:

      ; Message search: search text input
      310 |CR|03Enter text to search for:

      ; Message search completed
      311 |15Message search completed.

 + Two new additions to the MPL evaluation engine: In the past both function
   calls and constant variables could not be evaluated in the second part of
   a statement.  I never noticed this before, but it has been completed now.

   For example (in the 1.06 MPL engine):

       OK: If Ord(' ') = 32 Then WriteLn('Hello') EndIf
      BAD: If 32 = Ord(' ') Then WriteLn('Hello') EndIf

 + Added new option: System Config -> New User Settings -> Ask Screen Size.
   If this option is set to Yes, Mystic will ask new users for their screen
   size.  If this option is set to No, Mystic will automaticly set the user's
   screen length to the configured default screen length.

 + New MCI code: QL.  This returns YES or NO based on the user's QWK setting
   to include a new files list in each packet.

 - Removed the "OC" menu command (Set QWK options) and added the options
   individually into the GE menu command.  See MYSTIC.DOC for more
   information on the GE menu command.

 - Removed prompt 228 that went along with the OC menu command.

 + Added a footer prompt to the batch queue listing.  New prompt is #428

 + Expanded the modem initialization string from 40 characters to a max
   of 80 characters

 + Added new prompt to the QWK packet creation: Prompt #228 now displays
   if a packet is created with 0 messages, and the download is then aborted

      ; QWK DL: No messages
      228 |CR|15No messages found.|CR|CR|PA

.-----------------------------------------------.
| Mystic BBS v1.07 RELEASED : December 26, 2000 |
`-----------------------------------------------'

 ! MCFG: The New User Settings 1 -> Language file setting was backwards.
   It'd say "Ask" when it really should have said "Use default".

 ! MCFG: The option New User Settings 2 -> Ask Screen Size was missing from
   the options but available from within Mystic's internal configuration.

 ! Fixed a bug in the QWK system that would cause certain messages in a
   packet to get scrambled.

 ! The QWK system was creating .NDX files for bases that didn't have any
   messages in them.  This is fine for most QWK readers, but there are a few
   that didn't like that.  In addition, the .NDX files were not getting
   created correctly under certain operating systems.

 + Mystic will now restore the screen on the user's side after sysop chat
   modes.

 + Mystic was looking for FILE_ID.DIZ in the Linux version of Mystic.  This
   has been changed to look for file_id.diz instead.

 ! In line quote mode, Mystic would not allow you to quote a range of text
   that wasn't already displayed.

 ! MIDE: When changing the file name during a "Save As", MIDE was not
   renaming the window to the new file name.

 + Added new MPL function: PATHCHAR.  This will allow for MPE programs to
   be easily written to work on both Unix and DOS type file systems.

 ! The index files in Squish message bases were getting written incorrectly.
   I think i've managed to nail this bug but I haven't had any substancial
   testing done as none of my alpha sites run Squish message bases. :(

 + MCFG: Added (ALT+S) Sort into the status line of the file base editor.
   Sorting was always available, but for some reason I never put it on
   the status line.  Even the help listing had ALT-S documented. =]

 + Changed the INSTALL program to use CTRL-S to start the installation,
   instead of the F2 key that was used.  Linux users were not able to
   use F2 over an xterminal.

 + MPL: Added new procedure called GETSCREENINFO.  This is used to read the
   values of the Screen Info MCI codes.  This will come in handy when
   creating lightbar mods which use ANSI templates similar to the rest of
   Mystic.

 ! Fixed a small memory leak in the DOS/WIN/OS2 versions caused when running
   external programs (doors).

 ! Fixed the DOOR32 problems in Windows version.  I had some code commented
   out when I released 1.07.  I forgot to 'put things back to normal' when
   I was done testing some things before the release. =]

 ! Fixed the viewing of the BBS list in the Linux version.  Just the case of
   an error in file casing.  Mystic was looking for a data file in all
   uppercased letters when it should have been lowercased.

 ! Fixed the error with inserting a new menu in the Linux internal menu
   editor.

 ! Fixed a small problem with displaying the time in twelve hour format.
   It'd display 12:01am when it should have said been 12:01pm.

 ! The BI mci code (User's Birthdate) wasn't being displayed correctly.

.------------------------------------------------.
| Mystic BBS v1.07.2 RELEASED : January 20, 2000 |
`------------------------------------------------'

 + Added (Q)uit to prompt #361.  Before if you selected to add to the BBS
   list, you'd have to fill out the entire entry before you could save or
   abort.

 ! Fixed a problem with the Linux MPE loader.  If you tried to run a
   script outside of the script directory, things wouldn't work.  Mystic
   was looking for a "\" instead of a "/".

 + MYSTPACK: Changed the file names of the temporary files created when
   packing bases.  Hopefully this will solve it crashing on some Linux
   distributions.

 ! When Mystic prompted for an upload file name, a space could be entered
   as a valid filename.

 ! MPL: When compiling a program, Numerical variables could be assigned to
   a function which returned variables in the type of String.  A mismatch
   error should have occured.

 ! When the remote screen was redrawn after a sysop chat session, it would
   redraw incorrectly on if the status bar was NOT in single line mode.

 + Mystic now creates QWK packet's CONTROL.DAT file in MSDOS format even
   in Unix type file systems.  This seems to be more compatible with all
   types of QWK readers.

 ! MPL: When assigning certain numerical variable types, MIDE and MPLC would
   report a variable type mismatch when it shouldn't have.

 + Optimized the idle sensitivity within Mystic's Windows version.  This
   should make keyboard input a little faster/more efficient.

 + Enhanced the method Mystic uses to determine if a line of message text
   is quoted text.  A few QWK readers would indent quoted text within the
   message and Mystic wouldn't see it as quoted text.

 ! Fixed a bug in the file and message base selection listing.  When the
   base listing was aborted, Mystic would only let an area be selected if it
   were already displayed in the list.

 + Mystic/Windows will now check to see if the window title was changed
   after running a door, and restore it as "Mystic Node x" if it has been
   changed.

 ! If the SysOp was in two line status bar mode and the node chat template
   used line 23 as the input line, the teleconferance wouldn't work right.
   Fixed.

 + Added new command into the message reading system.  The (H) key will now
   set the current message as the high water (last read) pointer.  At the
   moment it doesn't display anything telling you that it worked (when H is
   pressed), but it does work.  The reason for this is that I don't like to
   add new prompts into minor builds.  I'll add the new prompts for it in
   the 1.08 release.  Just thought i'd include it in this form because
   there were a couple requests for this feature.

 + The ENTER key is now available in menus using longkey input.

 ! The Hotkey and Longkey settings were reversed in MCFG's menu editor.

 ! When using the lightbar file lister's previous page option, it'd skip
   the second page (and ONLY the second page) and go directly from the
   third page to the first page in the listing.  Fixed.

 + The ESCAPE key in the full screen message editor will now bring up the
   command prompt.

 + MCFG: There is now a command to delete a ghosted user from within the
   node manager.

 + MCFG: Changed all the commands within MCFG to use CTRL keys instead of Fx
   or ALT keys.  It may take a little to get used to these changes, but it
   allows for us to have MCFG work over terminals in Linux while keeping all
   the function keys consistant in all versions of MCFG.

 + MCFG: The mouse cursor is no longer present in the Windows version.

 + MCFG: The window title is now set to "Mystic Configuration"

 + The Linux version of Mystic will now accept the D3 menu command.  This
   allows the Linux version to write a DOOR32.SYS drop file.

 ! MPL: Fixed a bug with the UserDeleted variable which could cause the
   user's flags to get corrupted.

 ! The CHAIN.TXT drop file now outputs the user's age field and a zero for
   the gold field.  Apparently, having a blank and not a 0 for gold would
   cause some doors to crash.

 ! Fixed some Squish related QWK bugs, which caused QWK packet corruption
   on all Squish format message bases.

 + Added the (I)gnore message reading command into the lightbar message
   index.

 ! Squish last read pointers were not stored in records based on a
   0-based user index.  This would cause problems with 3rd party SysOp
   mail readers.

 ! Fixed a problem with the lightbar message reader in Squish mode.  Mystic
   was giving strange results when the previous message command was selected
   on the last message of a base.

 + Mystic now adds the ^AMSGID and ^AREPLY fields to all outbound echomail
   posts and replies.

 + Mystic will now filter any kludge lines from message text, quoting, and
   message exporting.  Kludges lines are any line of text in which the first
   character is a ^A (smiley face)...

 ! Fixed small input bug in MCFG's language prompt editor.

 ! If a user was online at midnight, their time per day wasn't getting reset
   correctly.  Mystic will now reset their time left to whatever their
   daily limit is for their security level.

 + Added a new door command line MCI code: %U will now be replaced with
   the user's alias.

 + MCFG: Added the General Settings into the System Configuration menu.

 + MCFG: Added the Global Message Base Editing feature into the Message
   Base Editor.  This is a very handy utility.

 + The online file listing editor will now allow renaming files based on
   file casing, for operating systems that support it.

 ! Fixed a small bug in the lightbar file lister's next page option which
   would sometimes report the end of the listing without displaying the
   last file in the listing.

 + MIDE will now save its configuration file in the same path that the
   actual MIDE.EXE file exists.  This allows for MIDE to be placed in a
   directory on the PATH and will prevent it from making a new .cfg file
   in each directory MIDE is used.

 + MIDE will now also look for it's help file (mide.hlp) in the actual
   path where MIDE.EXE exists.

 ! Finally got around to nailing one of the two word wrapping bugs in the
   Full screen editor.  This one would cause the BBS to lock up under
   certain rare situations.

 + Removed the hard coded clear screen from the standard quote mode.  You
   will have to update prompt #452 with a |CL mci code in the beginning
   of the prompt for it to work the same as it did in the past...

 + MPE programs can now be executed from one of the sysop macros.  Any
   macro which begins with a ! character will execute an MPL program.  The
   format is !<mpepath><mpename>.  If <mpepath> is omitted, Mystic will
   look in the SCRIPTS directory as defined in System Paths.

 ! When an MPL program resided in the scripts path, the ParamStr(0) function
   would only return the file name of the MPL program and not the full
   path and file name as it should have.

 + Added the OS/2 native version of Mystic back into the distribution.  It
   hasn't had much testing, but hopefully it will do us well.  If you find
   any problems with it, let me know and I'll try to fix it.  Keep in mind
   that I no longer have an OS/2 development machine here so I will need
   a hand testing things.

.----------------------------------------------.
| Mystic BBS v1.07.3 RELEASED : May 13th, 2000 |
`----------------------------------------------'

 + New MPL function: GETUSERTIME returns the number of minutes the user
   has remaining.

 ! Kludge lines were not getting filtered out in standard message reader
   mode.  This also caused a problem creating REPLYID tags in networked
   message bases.

 ! MCFG would exit out to the prompt when CTRL-C was used to copy a menu
   command in the menu editor.

 + Added IP blocking into Mystic's Telnet server (TSERVER).  The file
   IPBLOCK.TXT can now be placed into the data directory and contain a
   list of IP addresses which should be blocked.  An asterics can be used
   to block a mask of addresses.  Each address needs to be in the format
   of #.#.#.# and only one address can be specified on a single line.  For
   example:

      204.186.*.*
      24.67.213.*
      24.87.321.534

 + Completely rewrote MYSTPACK to fix some problems with the way the
   previous version packed the message bases.  Gone should be the crashes
   and any problems with last read pointers being screwed up because of
   MYSTPACK.  Also added the -pack command line, which is now required
   in order to start packing the bases. IE: mystpack -pack -skipfirst. Some
   minor cosmetic changes have been made.  A spinning cursor has been added
   while each base is getting packed, and the total number of messages and
   bytes removed are displayed or each base along with a total for all
   bases after all packing has been completed.

 ! MPL: Fixed a bug which caused some of the MBASE variables to get
   corrupted.

 ! MCFG: Fixed a minor aestetics error in the global file base editor.

 + Added a daily history system.  Mystic will now track the following
   things on a daily basis: emails, posts, downloads, uploads, upload KB,
   download KB, calls, and new users.  A new menu command (G1) has been
   added to view all the daily history, and the following new prompts have
   been added:

      ; no history data
      454 |CR|12No history data available.|CR|CR|PA
      ; history header
      455 |CL|15Daily System History|CR|CR  Date    Calls  New    Posts  Email  DLs    DLkb       ULs    ULkb|CR|08|$D79-
      ; history list
      ; &1=date  &2=calls  &3=newusers  &4=posts  &5=emails  &6=dls  &7=dlkb
      ; &8=uls   &9=ulkb
      456 |07|&1  |$R05|&2  |$R05|&3  |$R05|&4  |$R05|&5  |$R05|&6  |$R09|&7  |$R05|&8  |&9
      ; history footer &1=total days
      457 |08|$D79-|CR|15* Total days: |&1|CR|CR|PA

 ! The extended descriptions in the file list compiler were off by a single
   character.  Fixed.

 + Added message scan date setting.  Users can now set the message last read
   pointers based on a date.  A new menu command of MD accesses this
   function, and a few new prompts have been added:

      ; msg scan date prompt
      458 |CR|09Enter new message scan date |01[|10|UF|01]|09: |11
      ; msg scan date global prompt
      459 |CR|12Set this date for all bases? |11
      ; msg scan date: updating pointers
      460 |CR|12Updating pointers: Please wait...

 + The [ and ] keys now work while editing files within file listings.

 + Mystic will now automatically rename any file name longer than 70
   characters (the maximum Mystic supports) during an upload or a mass
   upload.  It will keep the file extention if there is one and make the
   total filename length 70 characters.  If a file already exists with the
   new shortened name, Mystic will prompt for the user to enter a new file
   name for the file, and then rename it to whatever they type.  Pretty
   slick if you ask me. =]  A new prompt goes along with this:

      461 |CR|12File of this name already exists.|CR|CR|09Enter new file name (max 70 chars)|CR:

 + Mystic's internal user editor will now accept partial user searching as
   well as user record number jumping.

 + When importing FILE_ID.DIZ, Mystic will now strip off all extra blank
   lines of text.  So if a FILE_ID.DIZ has 10 blank lines before or after
   the description, Mystic will remove those 10 blank lines.

 + MPL: Expanded the maximum number of parameters passed in a procedure or
   function from 5 to 8.

 + Mystic can now set an ACS level for each node which a user must meet
   in order to login to that node.  This is found in the Modem/Node
   editor.  A changed prompt goes along with this:

      ; Node login ACS failed
      315 |CR|14You do not have access to call this node.

 + MPL: Added new MPL function: MCI2STR.  This function takes an MCI code
   and converts the value of the code into a string variable.

 + Added the /ALLGROUP optional data option into the QWK Download menu
   command.

 + Removed the Lightbar Yes/No configuration from the language settings
   into the language file as prompts.  You will need to replace the
   following prompts with the lightbar Y/N stuff:

      ; Lightbar Y/N: YES text
      316 |09|17�|15Yes|09�|16  |14N|11o |16
      ; Lightbar Y/N: NO text
      317 |14 Y|11es  |09|17�|15No|09�|16

 + Added a new option into the language settings.  There are now two input
   field colors, one being the color of the typed text, and the other
   being the color of the field itself.  This allows for some pretty cool
   input field combinations, when playing with these two settings and the
   input field fill character.

 + Added the language settings into MCFG, accessible via the language
   editor.

 + Added new 'percentage bar' system into MCFG's language configuration.
   The first percentage bar is the voting booth results bar.  It is now
   configured with the language editor and activated when the same Prompt
   Info MCI code as in the past.  This just allows more customization of
   the percentage bar.

 + Added a percentage bar into the lightbar message viewer.  The new
   configuration options for the message reader percentage bar can be
   found in the language editor of MCFG.  Two new and optional Screen
   Info MCI codes are now available in the ANSIMRD.XXX template file:

      !4 = The X/Y location and text attribute of the actual percentage
           of the message read (ie a number between 0 and 100).  If this
           code is not in the template, it will be ignored.

      !5 = The X/Y location of the percentage bar.  If this code is not in
           the template file, it will also be ignored.

 + Changed the clear screen functions in Mystic to send an ESC[2J rather
   than a ASCII #12 if the user has ANSI graphics.  This is a little more
   compatible with obscure terminals and telnet clients.

 + MCFG now saves the selected option when navigating menus, and keeps that
   option highlighted when returning to a previous menu.

 ! When the status bar was set to single line and a user paged the sysop,
   Mystic wouldn't update the statusbar properly to show the user name,
   chat reason, and chat commands.

 + MCFG: Added some extra checking in the sort functions.  This should
   prevent any sorting problems due to memory limitations in the file
   and message base editors.

 ! Fixed a bug which could cause some messages that were marked as deleted
   to still be readable.  In fact, they'd only be actually deleted when
   MYSTPACK was ran on the bases.

 ! MCFG: Fixed a very bad bug in the user editor.  If you selected CTRL-U
   to upgrade, then hit ESC to abort the upgrade, MCFG would upgrade the
   user to security level 255.  VERY BAD - BUT FIXED NOW!  SORRY!

 + Added the ability for message moving.  If a user was the original
   poster of the message, or if the user has SysOp access rights to the
   message base, they can move the message to any message base they have
   access to by pressing (M).  Changed prompts:

      ; Move message to where?
      282 |CR|09Move to which base (?/List):
      ; Moving message. &1=base name
      318 |CR|14Moving message to |15|&1|14...

 - Removed CTRL-Z and CTRL-R commands from the line mode text editor for
   compatibility with Linux.  Also removed prompt #161.

 + Removed CTRL-Z in the full screen editor and the full screen text editor.
   CTRL-Z was save in the text editor and CTRL-Z was help in the normal
   full screen editor.  The help command has been moved to /H.

 ! Fixed a huge bug in MBBSUTIL's -FPACK function which would truncate
   file descriptions at 45 characters.  When Mystic was enhanced to allow
   50 characters on a line, somehow MBBSUTIL wasn't. :(

 + Added two new command line features: The -U and -P command line options
   can be used to log in as a user from the command line, skipping the
   user name and password prompts, or login matrix if one is activated.
   These must be used along side the -B command line option in order to
   work.  If either the user name or password supplied is not valid,
   Mystic will simply exit.  When supplying a user name, you must replace
   all spaces in a name with an underscore (_).  For example:

        MYSTIC -B0 -Usome_user_name -Ppassword

   The above would start Mystic in local mode with user "some user name"
   already logged in.

 + Mystic will now run STARTUP.MPE if it exists in the scripts directory
   directly after the graphics emulation detection/selection.

 + When replying to a private or e-mail message, Mystic will now force
   that the To: field is a valid user on the system.  A changed prompt
   goes along with this:

      161 |CR|11|&1 is not a valid user on this system.

 + Added new ACS command "Mx" which is based on the current minute.  This
   command is used to check if a user is accessing a command at a certain
   minute.  Where X is the minute.  For example: M15 will prevent the user
   from accessing the command before :15 after each hour.

 + Added new ACS command "Wx" which is based on the current day of the week.
   Where X is a numerical value from 0 to 6, representing a day of the week:

      0 = Sunday
      1 = Monday
      2 = Tuesday
      3 = Wednesday
      4 = Thursday
      5 = Friday
      6 = Saturday

   For example, "W0" would make the command only accessible on sunday.  W5
   would be Friday, etc.

 ! The Netmail Origin and Destination address was not getting set properly
   when replying to a netmail message.  The Origin address was also not
   getting set properly when posting a netmail message.  These are fixed!

 + Added new command line option: -X<data>
   This option goes along with the -U and -P command line options and when
   supplied on the command line will execute a compiled MPL program file.
   <data> contains the file name and any command line options supplied to
   the mpe program.  As with the -U option, any spaces should be replaced
   with a _ character.  If no path is supplied, Mystic will look in the
   configured scripts directory for the program.  Some examples:

      MYSTIC -B0 -Ug00r00 -PHELLO -XTEST
      MYSTIC -B0 -Ug00r00 -PHELLO -XBULLETIN_BULLETIN_BULLET_CHECK
      MYSTIC -B0 -Ug00r00 -PHELLO -XC:\MYSTIC\SCRIPTS\GAME\MYGAME

   After the script is ran, Mystic will exit back to the operating system.
   This is mostly useful to MPE developers being that they can setup an
   external editor for coding their programs, and have it automatically
   run the program from within the editor to test things.

 + Expanded the maximum number of variables in an MPL program to 500.  This
   took quite a bit of recoding because MPL was originally intended to be
   a simple script engine, and was written with certain limitations.  Well,
   now one of those limitations is gone.  Technically (if memory allowed),
   I could expand the max variables up to 64,000 now!

 + Added the display of the user's permanent index within MCFG's User
   Editor.  That should have been there to begin with, but I must have
   overlooked it.

 ! Fixed a small display bug in MCFG's user editor with the "Editing User
   XXX of XXX" would get messed up.

 ! MCFG: The statusbar in the file base editor didn't have the (I)nsert
   command on it.  I'm not sure if it was like that in 1.07.3 or just the
   1.08 alphas, so I thought I'd mention it here.

 ! Did a full rewrite of the mandatory message base code.  The old system
   was very buggy and allowed users to quit reading mandatory bases.  In
   addition, the /M option of the new message scan (scan all mandatory
   bases) was not working properly.  This should all be fixed now.

 + Added a new auto-running menu command type called 'LINEFEED'.  If you
   set the hotkey of a internally generated menu to LINEFEED, Mystic will
   go to the next line and display the 'display text' of the command.  This
   can be used, for example, to separate normal commands from sysop commands.

 + Added new 'LINEFEED' option into MCFG's menu editor.

 + The Linux version now sets the terminal mode back into RAW mode when
   returning from doors.  This should solve some problems with running
   external programs that modified the terminal setting, causing Mystic to
   seem like its getting input in 'line mode' (ie, no hotkeys).

 + Linux: The input buffer is now purged after an ANSI detection.

 + Added new Door execution MCI codes:

     %P = Current node's temp path where door drop files are made.
     %T = Current user's time left in minutes.
     %# = Current user's permanent user index number.

 + MIDE: New option for auto indenting added.  This can be toggled on or off
   within the MIDE options.

 + MPL: The compilers now ignore semicolons, so if you accidentally add on
   at the end of a line or something, the program will still compile.

 + MIDE: When the delete key is pressed on a blank line or if it is pressed
   at the end of a line, MIDE will now wrap the text from the following
   line onto the current line.

 ! When reading private e-mail, it was possible to read another user's
   email by using a combination of the prev/next message commands and the
   reply command.  This has been fixed.  I doubt many people found the bug
   though as it went over a year before it was reported to me.

 + New MCI display code: U#.  This returns the user's permanent index
   number.

 ! The GROUP.XXX and FGROUP.XXX display files were showing up during the
   login sequence when Mystic was loading the user's msg/file group
   information.

 + Added a percentage bar into the lightbar file lister.  The new
   configuration options for the file list percentage bar can be found in
   the language editor of MCFG.  Two new and optional Screen Info MCI codes
   are now available in the ANSIFLST.XXX template file:

      !5 = The X/Y location and text attribute of the actual percentage
           of the message read (ie a number between 0 and 100).  If this
           code is not in the template, it will be ignored.

      !6 = The X/Y location of the percentage bar.  If this code is not in
           the template file, it will also be ignored.

 + If the user's NoCaller flag is set, Mystic will no longer update the
   total system calls.  In the past, Mystic would only exempt the use from
   the last callers data.

 ! Fixed a bug which would cause the message base listing to pop up during
   the user's login.  This was a rare bug, but I finally tracked it down
   and squashed it.

 + The optional data field of command G1 (View System History) will now
   accept a numerical value to display the last xx days of history.  For
   example, optional data of 10 will show the history of the last 10
   days.

 + New MCI Code: SN.  Displays the SysOp name as configured in Mystic's
   configuration.

 ! Fixed a bug in the mass mailing procedure that would cause the From:
   field in the message to get corrupted.

 + Two new command line options for the Win32 version of Mystic.  When
   loading Mystic, the socket descriptor or the comm handle can be passed
   on the command line.  This is used for using 3rd party telnet and dialup
   servers such as a mailer.  The command line options are:

      -TID<socket descriptor>
      -CID<comm handle>

 ! MPL/Linux: Fixed problems with the file access functions, specifically
   FSEEK, but others may have been affected by the same bug.

 ! While reading messages using the lightbar message index, Mystic would
   sometimes show messages as new when they were not.

 + The left/right arrow keys now work as page up and down in the lightbar
   file listings.

 ! Mystic was not checking the Post ACS for message bases when uploading
   a QWK reply packet.

 ! Mystic was not checking the ACS before running menu commands with the
   AFTER hotkey.

 ! Mystic was not checking the ACS before running menu commands with the
   EVERY hotkey.

 ! Fixed all mass email bugs.  There were several and they should all be
   squashed now

 - Removed Mystic's internal Zmodem protocol.

 + Added support for external protocols.  Mystic is now compatibile with any
   protocol driver that can create a DSZ-style log of the files that were
   transferred.  Mystic will automatically set the DSZLOG environment
   variable before executing the configured protocol.  Here are the MCI
   codes used in the Protocol Configuration:

     %0 : Returns communications handle (Win32 and OS/2 only)
     %1 : Node's modem port as configured
     %2 : User's baud rate
     %3 : FileName of file to send/receive (or path/filename of text file
          which lists all of the files if in batch mode.  When receiving
          this will return the directory where files should be uploaded
          to).
     %4 : Node's baud rate as configured
     %5 : User's UserID as passed with the -UID command option
     %6 : User's handle.  Spaces are converted to _.
     %7 : Current node number

 + New Menu command of *P for Protocol Editor and new WFC menu key P to
   access the Protocol Editor.

 + New command line option: UID.  Here you can pass any value up to 60
   characters in length to identify the user.  It must be a single word,
   it cannot contain any spaces.

 + New MCI code UX returns the user's ID as it was passed with the -UID
   command, or blank if one wasn't passed.

 + When pressing ENTER in the lightbar message reader, Mystic will now
   PAGE DOWN instead of jumping to the next message immediately.  This
   allows reading of all messages in the reader by just using the ENTER
   key! =]

 + Pressing ENTER in the lightbar file listings now work the same as the
   message reader.  ENTER will scroll down the listing a page, and if at the
   bottom, will move onto the next base in the scan or quit the listing if
   not scanning.

 + New Door MCI code (translated when executing doors): %5 will be replaced
   by the User ID as passed with the -UID command line option.  This works
   the same as %5 in the protocol editor.

 + Added the ability to execute an MPL program instead of the command line
   for a protocol.  By starting your command line with a !, you can have
   Mystic run a MPE program.  For example:

       send Command: !test %1 %2 %3

   The above would execute test.mpe from your scripts directory and pass
   the results of the %1 %2 %3 protocol MCI codes as command parameters to
   the MPL program.  Keep in mind that if you do use this to execute some
   type of protocol, you must set the DSZLOG environment variable yourself
   and have it point to the current node's temp directory as xfer.log.  Mystic
   will also create an xfer.bat or xfer.sh (depending on operating system) which
   can also be executed.

 + Added prompts for protocol selection to the language file.  You will
   need to replace the old prompts with the new prompts listed below, and
   then recompile your language files:

      ; Protocol List Header
      359 |CR|14Available Protocols:|CR
      ; Protocol list prompt &1=HotKey &2=Description
      061 |14[|15|&1|14] |&2
      ; Protocol select prompt
      062 |CR|14Select Protocol [|15Q/Quit|14]: |XX

 + Users now have the option to (R)eply to a received node to node message.
   There are updated prompts that go along with this:

     145 |CR|09(R)eply to Message or (ENTER/Continue): |15
     ; NodeMsg reply &1=from &2=node#
     360 |CR|09sending reply to |&1 on node |&2:

 + If a user is online when another user sends them e-mail, Mystic will now
   notify the user via a system message that new mail has been received.

 + TSERVER now passes the user's IP address using the -UID command line
   option.

 + The /TO: /SUBJ: and /ADDR: options now work with the MP menu command.

 ! MCI codes are now stripped from Message and File base names when they
   are written to the Sysop logs.

 ! The UM (use lightbar message index in E-mail) MCI code was not working
   correctly.

 ! Fixed MCFG and MIDE "Out of memory" errors that could occur sometimes
   in Linux.  Now if it happens, you are seriously out of memory that was
   allocated to those programs. =]

 + Added the ability to change the message subject from within the line and
   full screen message editors.  The following new/changed prompts exist:

      ; Line editor "command" prompt help
      167 |CR|03(|11A|03)bort Message    (|11C|03)ontinue Message     (|11U|03)pload Message|CR(|11Q|03)uote Message    (|11S|03)ave Message         (|11H|03)elp|CR(|11T|03)itle Change
      ; FS editor command prompt help
      355 |CR|03(|11A|03)bort Message    (|11C|03)ontinue Message     (|11U|03)pload Message|CR(|11Q|03)uote Message    (|11S|03)ave Message         (|11H|03)elp|CR(|11T|03)itle Change
      ; line editor edit subject
      462 |CR|09Enter new subject:
      ; FS editor edit subject
      463 |CR|09Enter new subject:

 + Expanded the data filename size from 8 characters to 40 characters in
   both the message and file bases.

 + Mystic will now recreate MBASES.DAT with the Electronic Mail base if for
   some reason reason it does not exist in the data directory.

 + Mystic now allows the quote header to be configurable in all quoted text.
   A new prompt goes along with this:

      ; msgtext quote header &1=date &2=from &3=initials
      464 On |&1, |&2 said the following...

 + When tagging a file in the lightbar file lister, Mystic now automatically
   moves to the next file after tagging the current.

 ! Fixed a bug in Linux relating to parsing MCI codes in a display file.

 + Completely rewrote all of the 'local' input and output functions in
   the Windows version.  It should be faster.

 - Removed the password being displayed in clear text on the SysOp status
   bar when a user is logging in.

 + The user editor now masks the password with asterisk unless it is being
   edited.

 - Removed the DOS and OS2 versions.

 + Completely switched all versions of Mystic BBS over to Free Pascal. Using
   only one compiler now makes it much easier to maintain the code.

 + Added new MCI code |ISxx where XX is a two digit number.  This limits the
   actual max amount of input on the next input prompt.  Whereas IN limits
   the size of the input prompt space itself, this limits the actual amount
   of characters that will be accepted.

 ! Fixed a bug when attempting to determine an archive's file extension
   under Linux.  The actual extension comparison is now NOT case sensitive
   when checking it against the archive tools in the configuration.

 ! Fixed a bug in the full screen editor, where the cursor would move
   strangely when using the right arrow key at the end of a line.

 + MBBSUTIL's UPACK (user pack) function will now go through every message
   base marked as "Private" and delete any messages TO or FROM the person
   being deleted.

 ! Mystic wasn't working correctly on voting questions #15-20 (if you had
   that many).  The maximum is 20 and all 20 should work correctly now.

 + All door menu commands can now include the /DOS option on the command
   line data.  If /DOS is found, drop files will be created in MSDOS format
   even if the operating system is not Windows.  If the /DOS option is not
   supplied, the drop files will be created in the format of the operating
   system (CRLF for Windows and LF for Linux/OSX). Ex:

        Menu Command: DD
       Optional data: c:\mystic\doors\mydoor.sh %1 %2 /DOS

 + Removed all of the remote modem/TCPIP code for Windows and replaced it
   with newer stuff from Mystic 2.0 code.  Unfortunately this means that
   built in support for modems/dialup has been removed.  But it opens a
   lot of doors moving forward.  I would like to eventually support dialup
   in Windows again in the future.  It is probably possible using 3rd party
   software for now.

 ! Mystic was not always setting the user's node action correctly when
   reading messages.  This should be fixed.

 ! Fixed various bugs with pause prompts, where some terminals sending
   CRLF would cause subsequent pause prompts to be skipped.

 + Replaced TSERVER with MIS.  MIS only has its telnet functionality
   enabled for now.  It is based off of the Mystic 2.0 server code,
   which had semi-working POP3/SMTP/FTP servers and seems to be more
   efficient and at least as stable.

 + Changed the WFC screen to "configuration mode", accessible by running
   mystic -cfg command line.  This also works in Linux allowing access
   to the internal configuration editors.  Mystic will skip checking
   for created directories and some other data file related start up
   checks when this command line is used, so that they can be corrected
   using the editors.  Mystic only requires MYSTIC.DAT and a valid language
   file in order to enter configuration mode.

 - Removed the "screen saver" from the WFC/Configuration mode screen. It
   was really only useful in the DOS version which is no longer supported.

 + Added a new MCI code: XX.  This actually does nothing, but it can be useful
   in some prompts files to help with prompts.  For example, if you have an
   editor that always removes any trailing spaces, you might use it to make
   sure the ending space is never removed:
        Enter user name:
        Enter user name: |XX

 ! Fixed a bug where Mystic was doing a case sensitive check of language
   files in Windows.

 + Expanded menu names to a maximum of 20 characters now, up from 8.  Now
   that the DOS version is no longer developed, we can finally start moving
   away from its limitations! There will be places where this isn't updated
   and that is because I didn't want to change the data file formats this
   close to release.

 + Added in a new Intel Mac OSX native version of Mystic BBS!

.------------------------------------------------.
| Mystic BBS v1.08 RELEASED : September 20, 2011 |
`------------------------------------------------'

 ! Fixed a bug in the full screen editor that could sometimes garble text
   seemingly at random.

 ! The TAB and ESCAPE hotkeys were not working in lightbar menus.

 ! Fixed some minor display bugs in MCFG

 + Added new function to MBBSUTIL called -MTRASH.  This will go through
   all message bases and delete any messages To or From the users listed
   in a text file.  The file should contain one username per line,
   and the names do NOT have to be members of your BBS.

       MBBSUTIL -MTRASH c:\mybbs\data\trashcan.dat

   It is recommended to use this with your trashcan.dat file in the data
   directory, which Mystic uses to disallow new users with any usernames
   found in the file.  If you have networked message bases, this could
   be executed whenever your tosser brings in new messages - assuming
   it is not already able to filter out messages on its own.

 + Mystic now creates semaphore files in the DATA directory when new
   networked mail is created:

     echomail.now - Created when new echomail has been posted.
     netmail.now  - Created when new netmail has been posted.
     newsmail.now - Created when new "newsgroup" message has been posted.

   This is basically an alternative to using errorlevels to process
   networked messages.  This is now the recommended method to use for
   tosser activity as there may be a time in the future when Mystic does
   not exit after each session.

 + Did some restructuring of the file base data.  The following changes
   have been made in order to support future features:

      + Added FTP name for each base
      + Added FTP list ACS for each base
      + Expanded file base passwords to 20 characters
      + Expanded all file base ACS strings to 30 characters
      + Expanded the file directory to 120 characters
      + Expanded the display file name to 20 characters.
      + Added an ansi template field on a per base level.

 + Enabled the FTP server inside of MIS.  At the time of this writing the
   server does not support uploads and it does not properly send file and
   directory dates.  It has been tested with the following:

      Linux "ftp"       - No problems
      Windows FTP       - No problems
      Filezilla FTP     - No problems
      SmartFTP          - No problems
      Firefox           - No problems
      Chrome            - Does not work.  This is a problem with Chrome
                          which does not properly support the base FTP
                          protocol standards (tries to force EPSV mode)
                          I think.
      Internet Explorer - Does not work, cannot determine why

   As a result, a version of MIS is now included in the OSX and Linux
   versions.  These versions do not support telnet (since Telnet is
   currently handled by inetd-type services on those platforms).

   The FTP server creates a virtual directory structure, one for each
   file base using the "FTP Name" configured for each file base.  No
   other configuration is needed outside of setting the basic FTP
   stuff within the Internet options of MCFG.

   When configuring the FTP ACS for each file base, keep in mind that
   any "session"-type data in ACS will automatically return true.  This
   means that most basic ACS works (security, time of day stuff, user
   flags) but some things like "ansi graphics mode" are always true,
   since the user cannot have a graphics mode via FTP.

 ! Removed some debug logging accidentally left in 1.08.

 + Expanded the maximum message size in the message bases to 500 lines,
   up from 200.  This was a bigger undertaking than I had expected, so
   hopefully there are no issues.

 + Message Base permanent indexes are now shown in the internal message
   base editor.

 ! Fixed a screen bleeding bug that could happen occasionally while
   scrolling the screen.

 ! Door drop files under Linux were actually being created in old MacOS
   file format, unless /DOS was specified to create DOS versions.  Whoops!

 ! Fixed the installation where it would not properly assign/create the
   local QWK path.

 ! Fixed a bug where Windows was not letting sub-processes properly
   inherit a socket handle.  This means that NetFoss for example was not
   working properly with Mystic to run old DOS doors in Windows.

 + Mystic no longer creates duplicate socket handles when executing doors.
   This was added to work around a bug in Windows 95, which I have decided
   doesn't really need to be supported anymore.

 + Added in a POP3 mail server into MIS.  This allows BBS e-mail be to
   retrieved by e-mail clients, smart phones, etc.  Use MCFG to set it up
   under Internet Options and make sure you set your domain name correctly
   as all email will be User_Name@yourdomain.com.

 + Mystic now saves the last 5 inputs and you can use the up and down arrow
   keys to scroll through your input history during field-based input.
   This doesn't work for hotkeys and the like, only field-based input such
   as message subjects, node chat messages, etc.

 + Mystic will now remember the user name entered before "Create new user?"
   question and force it into the input buffer as the default value if the
   user selects to create a new account.  Unless of course the user types
   "new" then it will not default to anything.

 ! Fixed some file-casing issues with the message base editor, when
   deleting a message base and its data files in Linux.

 + New MCI code [K sends a "clear to end of line" ANSI code, or nothing
   if the user does not have a capable terminal.

 + New MCI code BS sends a destructive backspace.

 ! MCI code IS was not working correctly when it was found in a display
   file.

 + New MCI code [Lxx, where XX is a two-digit number.  This code takes the
   cursor from its current position, and does a descrutive backpace until
   it reaches cursor position XX.  So for example, |[L01 would move the
   cursor to the beginning of the current line, while erasing everything
   on the way.  If the cursor is already less than XX, it does nothing.

 ! Mystic now longer converts the user name to proper casing when a new
   message is uploaded by QWK.

 + Removed some data file checks on startup of Mystic.  Any major issues
   which would cause Mystic not to start can be addressed using MCFG.

 + Added SMTP server into MIS to go along with the POP3 server.  Settings
   are in MCFG.  Make sure you are setting your domain name correctly.  Its
   a very basic server.  It does not reformat messages that might
   be sent with a client that does not word wrap at a compatible level.  In
   addition, there is always the challenge of HTML emails.

 ! Fixed a small display file parsing bug.

 + If "newletter.txt" exists in the DATA directory, its contents will now
   be automatically e-mailed to new users when their account is created.

 + If "sysletter.txt" exists in the DATA directory, its contents will now
   be automatically e-mailed to the SYSOP whenever a new user account is
   created.  An example of its contents might be:

          A new user account has been created!

                 Handle: |UH
              Real name: |UN
               Security: |SL (|SD)
                     IP: |UX

          This account was created on |DA at |TI.

 + If "hackwarn.txt" exists in the DATA directory, its contents will now
   be automatically e-mailed to a USER if someone tries to log in as them
   but fails the password check enough to be disconnected.  An example of
   its contents might be:

     This is an automated E-mail sent to users when an unsuccessful attempt to
     login has occured.  This could have been your own error, or possibly someone
     attempting to access your account without your knowledge.

     Here is some information our system has logged from this attempt:

              Date: |DA
              Time: |TI
        IP Address: |UX

 + Added a new MPL function: PurgeInput.  This will clear out any local
   or remote input data.

 + Added new MCI code PB.  This will purge the input buffer just as the
   MPL function above will.

 + The left and right arrow keys now function the same as page down and
   page up keys in the full screen editor quote window.

 ! Fixed a very rare MCI parsing bug. So rare it made it this long without
   ever being reported!  Hopefully this fix doesn't create any new issues.

 ! Fixed a small bug where the cursor wasn't properly updating on the screen
   after a backspace during local mode in the Windows version!  Whew!

 + The lightbar message reader now allows you to scroll through all messages
   in the message base, regardless of where you start reading from.

 + The HOME key now works in the lightbar message index.  This returns you
   to the first message on the first page.

 + The END key now works in the lightbar message index.  This takes you to
   the last message on the last page.

 + The HOME key now works in the lightbar message reader.  This takes you
   to the start of the message.

 + The END key now works in the lightbar message reader.  This takes you to
   the end of the message.

 + New menu command: MX.  This command posts a text file to a message
   base.  First it will look for the file in the DATA directory, but
   you can also include the path in the command data.  The format of
   the command data is:

       Syntax: <TextFile>;Area #;From;To;Subject
   Ex:
      Command: MX
         Data: \mystic\mystic.doc;2;g00r00;All;Mystic Documentation

   The command will automatically split text files into multiple posts
   if the text file is larger than 500 lines (the max per message).  It
   will also append the post count onto the subject.  So for example, if
   the above document was 1200 lines in size, it would create 3 posts in
   area 2 with the subjects:

      Mystic Documentation (1/3)
      Mystic Documentation (2/3)
      Mystic Documentation (3/3)

   The command caps at 10,000 lines for a text file post.  Even that much
   would be pretty rediculous (20 posts!).

 + Setting message scan pointer dates now checks to see if a valid date
   has been entered, and aborts if an invalid date has been entered.

 ! MCFG wasn't updating the status bar correctly when returning from the
   message base edit back to the message base list.

 + Mystic now supports random origin lines on a per-base level.  You can
   replace the origin line for each message base with:

      @RANDOM=<textfile>

   You can include a path to the text file, but if no path is included
   Mystic will look in the DATA directory for the file.  This allows
   for random origin lines to be generated from separate lists, per base
   if you choose.

   Example:

     Origin: @RANDOM=randomorigins.txt

   If the origin line is configured as above, it will select a random
   origin line from the file "randomorigins.txt" in the DATA directory. The
   random origin text file should contain one origin line per line in the
   file.  Traditionally the maximum characters for an origin line is 50, but
   Mystic does not put any restriction on this - so you are responsible to
   keep them at a length considered acceptable.  Blank lines will not be
   factored into the random line.  If it finds a blank line, it will skip
   over it and select a new one.

   Remember, you can use MCFG's global message base editor to update
   every (or some) message bases at once with this new feature, if you
   decide to use it.

 + The %0 code has been added to the Test upload commmand line.  This
   passes the socket handle.

 + Mystic now checks for valid date input when setting the new file scan
   date.

 ! Fixed a bug in the installation program that would cause the terminal
   in Linux/OS to get stuck in RAW mode if the installation encountered an
   error.

 ! Fixed a problem in the FTP server where it was returning the wrong
   status number with the PWD command.

 ! Fixed a problem with PASSIVE mode FTP transfers.  The server was not
   opening a passive connection immediately when a PASV command was
   found.  Instead it was waiting for the next command where a data
   connection would be used to open it.  This caused the server not to
   work with some clients.  As a result, it now works with Internet
   Explorer and Cyberduck.

 + Added Extended Passive and Extended Port support to the FTP server.  The
   server now works with Google Chrome as a client.

.------------------------------------------------.
| Mystic BBS v1.09 RELEASED  :  October 17, 2011 |
`------------------------------------------------'

 ! Mystic was not exiting with errorlevel 255 when quitting from the WFC
   screen as it did in previous versions.

 + Added an "Active" and "OSType" to the archive configuration.  You will
   want to verify that these are set correctly for your OS when upgrading.

 + Added an "Active" and "OSType" to protocol configuration.  You will want
   to verify that these are set correctly for your OS when upgrading.

 + Added Protocol configuration to MCFG

 + Added Archive configuration to MCFG

 ! The internal editors for message and file groups were not correctly
   displaying the group name during the group listing.

 + Pressing enter (entering nothing) during toggle of file and message
   base newscan settings will now exit instead of redisplaying the prompt
   again.

 + Did some minor optimization of the ANSI codes which Mystic generated
   when using pipe codes.

 ! Mystic wasn't correctly determining the free space on the disk when
   attempting to copy from a slow media device.  This was only happening
   on Linux/OSX.

 ! The right arrow key was not working as PAGEDOWN in the fs editor quote
   window.

 + The HOME and END keys now work in the full screen editor quote window.

 + File and message groups can now be flagged as "Hidden" which means they
   will not show in the group listings.

 ! Fixed a bug with the HOME and END keys in the lightbar message reader
   which could cause a lock up.

 ! Fixed a bug when drawing percentage bars in the various places where it
   was possible for a divide by zero crash.

 ! When using the -X command line, Mystic was going to the local WFC screen
   if local mode was specified.  The -X command line now forces an immediate
   local login as it was intended.  This only happened in Windows.

 + Fixed RAR internal archive viewing.  It broke when we switched compilers.
   Apparently it is still broken if there are comments embedded in the .RAR
   file.  Hopefully I will get this cleared up soon too.

 + MPL has been completely overhauled and now follows very closely to real
   Pascal syntax.  This will require lots of syntax changes, but the good
   news is that the syntax will likely not change again, since we are
   standardizing it.  Most changes are in the following areas:

     - Pend, Wend, Fend all must be changed to END
     - If statements now require a THEN and also a BEGIN/END if it has more
       than one statement.  EndIf is now just an End (if required), and
       ElseIf is now two separate statements (Else If)

         OLD:
           If Ch = 'A'
           ElseIf Ch = 'B'
           EndIf

         NEW:
           If Ch = 'A' Then
             WriteLn('A');
           Else
           If Ch = 'B' Then
             WriteLn('B');
           Else
           If Ch = 'C' Then Begin
             WriteLn('C');
             WriteLn('Needs a begin and end because there are two statements');
           End;

     - Variable declartions follow Pascal rules, so:

        OLD: Var ch char array(1..20)
        NEW: Var ch : Array[1..20] of Char;
        NEW: Var B1, B2, B3 : Byte;

     - Array elements are now specified with [ and ] instead of ( and )

     - For and While statements now require "Do" and if there are more than
       one statement in the looped section, it must have open and close
       blocks (ie Begin End).  Fend and Wend are changed to "End" now or
       removed depending on if there is more than one statement.

         OLD:
           For A := 1 to 10
             WriteLn('Hello');
           Fend

         NEW:
           For A := 1 to 10 Do
             WriteLn('Hello');

           For A := 1 to 10 Do Begin
             WriteLn('This code');
             WriteLn('Has more than one statement so it needs Begin/End');
           End;

     - "#" style comments are not supported.  Instead most standard language
       comments are supported... //, /* */ and (*  *) comments are used.

     - Include files have been changed to {$include Myfile.mps} since # is
       not a part of MPL comment/directive system anymore.

 + New MIDE replaces old MIDE.  This version does not yet have syntax
   highlighting, but has a nicer pulldown menu interface.  Syntax highlighting
   may or may not be implemented in the future.  This updated MPL has multiple
   syntax and block comments which makes it a much larger effort to support.

   The good news is, MPL (at least the Pascal syntax) is consistant with real
   Pascal compilers, so those editors will properly syntax highlight now!

 + New MPLC replaces old MPLC.

 + The "OneKey" function now has a boolean arguement which if true causes
   Mystic to echo the character to the user.  So:

     Ch := OneKey('ABCDEFG', True);

   Would be the same as the old:

     Ch := OneKey('ABCDEFG');

   Supplying FALSE it will not echo, which increases its usability.

 - Removed fOpen, fReadRec and fWriteRec functions.

 + Added new File type variable along with fAssign/fReset/fReWrite
   functions which work closer to how Pascal would work.  It also makes
   managing files all together much easier and includes the ability to
   specify a "filemode" which in the example below 66 means "Read/Write"
   and "Deny None" access to a file.  This would be the most commonly
   used filemode.

    OLD:
      fOpen (1, Text, Reset, 'myfile.txt');
    NEW:
      Var MyFile : File;

      fAssign (MyFile, 'myfile.txt' 66);
      fReset  (MyFile);

   FReadRec and FWriteRec can be replaced with FRead/FWrite.  There are a few
   considerations.  Previously they were designed to work with Pascal records
   now that limitation is removed, but a slight change is needed.  Strings
   need to have one more added to their size when you FREAD/FWRITE, and other
   variable types used to not require a size, which they do now.

   OLD READING OF BBSLIST RECORD:

     fReadRec (1, bbs_cType)
     fReadRec (1, bbs_Phone,    15)
     fReadRec (1, bbs_Telnet,   40)
     fReadRec (1, bbs_Name,     30)
     fReadRec (1, bbs_Location, 25)
     fReadRec (1, bbs_Sysop,    30)
     fReadRec (1, bbs_Baud,      6)
     fReadRec (1, bbs_Software, 10)
     fReadRec (1, bbs_Deleted)
     fReadRec (1, bbs_AddedBy,  30)
     fReadRec (1, bbs_Verified)
     fReadRec (1, bbs_Extra1)
     fReadRec (1, bbs_Extra2)

   NEW READING OF BBSLIST RECORD:

     fRead (ListFile, bbs_cType,     1)
     fRead (ListFile, bbs_Phone,    16)
     fRead (ListFile, bbs_Telnet,   41)
     fRead (ListFile, bbs_Name,     31)
     fRead (ListFile, bbs_Location, 26)
     fRead (ListFile, bbs_Sysop,    31)
     fRead (ListFile, bbs_Baud,      7)
     fRead (ListFile, bbs_Software, 11)
     fRead (ListFile, bbs_Deleted,   1)
     fRead (ListFile, bbs_AddedBy,  31)
     fRead (ListFile, bbs_Verified,  4)
     fRead (ListFile, bbs_Extra1,    4)
     fRead (ListFile, bbs_Extra2,    2)

     Note the strings have one added to their size, and other variable types
     now also include their size:

       Byte, Char    = 1 byte
       Integer, Word = 2 bytes
       LongInt       = 4 bytes
       Strings       = String size + 1

 + MPL now does not trap File IO errors and stop execution of the MPL
   program.  Instead, the result of the last call is now stored in the
   "IoResult" variable.  Ex:

      fAssign (MyFile, 'myfile.txt' 66);
      fReset  (MyFile);

      If IoResult <> 0 Then
        WriteLn('Unable to open file!');

 + MPL now supports negative numbers.

 + MPL now supports the "Real" variable type which allows floating point
   calculations.

 + MPL now supports proper order of operations (PEMDAS) during mathmatical
   equations.  It also now supports the ability to use paranthesis to
   override order.

 + The "MOD" operator has been changed to a % character.  So:

      OLD: A := 10 MOD 8
      NEW: A := 10 % 8;

 + MPL now supports a POWER operator in mathmatical equations:

    A := 2 ^ 3;

 + Support for line comments that begin with a # character has been removed
   and replaced with a more standard // comment.

     OLD: # My comment here
     NEW: // My comment here

 + MPL now supports block comments (* and *) similar to Pascal:

     (*
     This is a comment
     So is this
     *)

 + Strings can now be defined with an actual string length.  Supplying no
   string length defaults to the maximum of 255 characters.

     Ex: Var MyString : String[10];

 - Removed the GetCFG MPL command.  The configuration variables now point
   directory to the configuration record stored in Mystic's memory, so this
   function is no longer needed - the variables are already populated.

 + MPL now allows variables to be declared in local blocks (ie anywhere) and
   can default them to a value.  IE:

     Var Ch : Char = 'A';

 + MPL now allows functions and procedures to defined inside of other
   functions and procedures.

 + MPL now allows procedures to be called recursively.

 + MPL now supports GOTO labels

 + Added new MPL variables for groups: FGROUPHIDDEN MGROUPHIDDEN

 + Added new DIRATTR attribute used with FindFirst/FindNext/FindClose in
   MPL.

 + Increased the maximum number of MPL variables from 500 to 2500

 + MPL now allows multi-dimensional arrays up to 3 levels deep:

     Var MyArray : Array[1..10, 1..10, 1..10] of String[30];

 + MPL now allows a second type of Syntax which is closer to C but modeled
   after Iniquity's programming language.  This can be changed on the fly
   in your code using a compiler directive.  See MPLTEST.MPS now included
   with the Mystic distribution for an example.

 + MPL now allows the memory location of a variable to be passed to
   functions and procedures using the VAR keyword.  It works the same
   syntax as Pascal:

     Procedure myProc (Var Str: String)

 + MPL now handles variable memory differently, as well as does more file
   seeks vs sequential reads to move around the compiled MPL program.  In
   some test cases this has increased execution speed by up to 400%, but
   this gain is not consistant.  I hope in general it will be an increase.

 + MPL now supports CASE statements.  This has actually been expanded on
   from the Pascal standard but still follows the same syntax.  It has been
   expanded to allow CASE of more variable types, such as strings.  See
   the included MPLTEST.MPS for examples.

 + Addressing an array element now uses the [ and ] characters instead of
   the ( and ) characters similar to real Pascal.

 + MPL now allows characters to be referenced by their ascii number.

     Ex: If Ch = #32 Then WriteLn('Ch was a space key!');

 + MPL strings can now be accessed (in most places) as if they are an array
   of characters, as Pascal allows:

     Var S : String;

     S := 'Hello';

     If S[1] = 'H' Then WriteLn('First letter is H!');

 + MPL programs no longer require a "USES DIR" when doing directory stuff.

 + Renamed MPL function "fExist" to "FileExist"

 + Renamed MPL function fErase to FileErase.  The reason I am renaming them
   is because the "f" prefix implies a File IO function, and these are not
   functions that deal with a "File" type variable.

 + Renamed MPL user variables USERLAST and USERFIRST to UserLastOn and
   UserFirstOn.  LAST and FIRST didnt really make sense.

 + MPL now allows functions to be called without a variable being assigned.
   Ex: Function ReadKey normally returns a character, but it can be used
   without one now simply but calling "ReadKey" by itself.  This opens up
   a lot of flexibility in the way MPL functions and procedures can work.

     Ex:
        Write ('Press a key: ');
        ReadKey;

 - Removed the "IsNoFile" function in MPL due to above change and because
   of below change:

 + The DispFile function now optionally returns TRUE or FALSE depending on
   if the file actually displayed.  Keep in mind "IsNoFile" was TRUE if the
   file was missing, while this is TRUE if it displayed a file.

 + Renamed the file extension of compiled MPL programs to .MPX.  This was
   because many operating systems think a MPE file is a video file, and also
   to signify the giant changes in MPL with this version.  You can delete
   *.MPE from your scripts directory.

 + Renamed the "CLS" MPL function to ClrScr to match Pascal's CRT function.

 + Renamed the "fCopy" MPL function to "FileCopy" since the "f" implies a
   file-type variable function.

 + Changed "FB" variables to "FBASE".  These are the variables that go along
   with USES FBASE.  The prefix should match, as it does with the MBASE
   variables.  So Ex: FBNAME is now FBASENAME

 + Updated BBSLIST.MPS for 1.10 and fixed some potential issues which would
   happen under Unix platforms.

 + The FindFirst/FindNext functions due to compiler/OS changes do not quite
   work the same as they once did in DOS.  You should assume that you will
   get directories and files and use "DirExists" to determine the difference
   until a better system is in place.  Optionally you can check the DIRATTR
   bit set to determine a directory vs a file.

 + MPL now supports /* and */ style block comments!

     /*
     This is a comment block!
     */

 + New ACS code OM returns true if the user has Sysop access to the current
   message base OR is the owner of the current message (if reading messages).

 ! When moving a message, Mystic could crash after listing the message bases.
   If you did not list the message bases, it would work fine.

 ! Mystic was not properly redrawing the screen after moving a message in the
   lightbar message reader.

 + New MCI code MT returns the total messages in the current message base.

 + New MPL variable AllowArrow (boolean) is used to turn on arrow key
   processing in the readkey function.  This is also used outside of MPL so
   change it with caution.

 + New MPL variable IgnoreGroups (boolean) is used to cause all group ACS
   evaluations to return true even if they are not in the group.  This is
   also used outside of MPL so change it with caution.

 + New MPL variable pausepos (byte) gives access to Mystic's internal line
   counter used for screen pauses.

 + New MPL variable allowmci (boolean) toggles on/off MCI code parsing. This
   is used outside of MPL so adjust this with caution.

 + New MPL function WordCount returns the number of words in a string using
   the final parameter to define the character that determines what separates
   words.  Ex:

     Str := 'Hello this is a test';

     WriteLn ('Str has ' + Int2Str(WordCount(Str, ' ')) + ' words in it.');

 + New MPL function WordGet returns the actual word at a specific word count.
   Ex:

     Str := 'Hello this is a test';

     WriteLn('The second word was: ' + WordGet(2, Str, ' '));

 + New MPL function WordPos returns the character position in the string where
   s specific word is located.  Ex:

     Str := 'Hello this is a test';

     WriteLn ('Second word is at: ' + Int2Str(WordPos(2, Str, ' ')));

 + New MPL function DayOfWeek returns a number between 0-6 depending on the
   day of the week:

     0 = Sun, 1 = Mon, 2 = Tue, 3 = Wed, 4 = Thu, 5 = Fri, 6 = Sat

 + New MPL function DateJulian returns the longint Julian value of the current
   date.

 + New MPL function DaysAgo function takes a Julian date value and returns
   the number of days between the current date and the passed date.

 + New MPL function DateStrJulian works just like DateStr but accepts a
   Julian date.

 + DateStr no longer accepts 0 as the users current date format.  Pass the
   user's actual date format to it if you want that.  For example:

     Str := DateStr(MyDateTime, UserDateType);

   The other parameters (ie 1 = MM/DD/YY) work as they used to.

 + New MPL variable ProgName returns the path and filename of the current
   MPL program.

 + New MPL variable ProgParams returns any of the parameters passed to the
   MPL program as a single string.

 + New MPL function JustPath takes a string arguement and returns only the
   path (including the trailing backslash).  Ex:

      WriteLn ('This MPX is located in ' + JustPath(ProgName));

 + New MPL function JustFile takes a string arguement and returns only the
   filename:

      WriteLn ('This MPX filename is: ' + JustFile(ProgName));

 + New MPL function JustFileName takes a string arguement and returns only
   the base filename (ie, not the extension so it basically just removes
   a file extension).  This does not remove a path, JustFile does that.

 + New MPL funtion JustFileExt takes a string arguement and returns only the
   file extension.

 + New MPL function ReadEnv returns the value of an environment variable of
   the operating system.

 + New MPL function DirExist returns true or false if a directory exists.

 + New MPL function Replace replaces all occurances of a supplied text and
   returns a string.  Ex:

     Var Str : String = 'Hello Hello Hello';

     Str := Replace(Str, 'Hello', 'World');  // Str is now World World World

 + New MPL function strWrap takes two strings and wraps them after the word
   closest to the maximum supplied length.  It optionally returns the actual
   position where it wrapped.

      Var Str   : String = 'This will wrap';
      Var Str2  : String = '';
      Var Where : Byte;

      Where := strWrap(Str, Str2, 10);

      WriteLn ('It wrapped at ' + Int2Str(Where));
      WriteLn ('First string: ' + Str);
      WriteLn ('Second string: ' + Str2);

 + New MPL function strComma accepts a longint and returns it as a string,
   with commas added where applicable:

     Ex:

     WriteLn (strComma(1000000));  // will print 1,000,000

 + New MPL Cfg variable CfgTempPath returns the location of the current node
   temporary directory.

 + New MPL function TimerMin works just like Timer except returns minutes
   instead of seconds.

 + New MPL function Date2Dos takes a MM/DD/YY format date and converts it to
   DOS packed datetime format.

 + New MPL function Date2Julian takes a MM/DD/YY format date and converts it
   to a Julian date format.

 + New MPL function dateg2j takes a gregorian date format and converts it to
   a Julian format.

 + New MPL function datej2g takes a julian date format and converts it to a
   gregorian format.

 + New MPL function DateValid takes a MM/DD/YY date and returns true or false
   depending on if the date is valid (ie, month is 01-12, etc).

 + New MPL funtion WritePipe works just like Write but only parses Pipe color
   codes instead of all MCI codes.

 + New MPL function WritePipeLn is WritePipe with a CRLF at the end.

 + New MPL function WriteRaw works just like write except it does not parse
   any pipe color codes OR MCI codes.

 + New MPL function WriteRawLn works just like WriteRaw except with a CRLF
   added to the end.

 ! Mystic now properly buffers menu files when loading them.

 + New MPL fuction "MorePrompt" displays the system more prompt and returns
   a Char value of either Y N or C depending on what the user selected.

 + New MPL function "Pause" displays the system pause prompt, for those that
   don't like doing a "Write('|PA')".  Keep in mind if you have a function
   called Pause in your MPL program, you will need to rename it to something
   else.

 + The %U code for running doors now replaces spaces in the username with an
   underscore (_).

 + New MPL function AddSlash(String) : String takes a directory and appends
   the appropriate ending backslash or forward slash depending on operating
   system.  If the slash is already there, it does nothing.

 ! InputNY function now correctly returns TRUE if they user selected YES.  It
   was reversing the result.  InputYN worked fine, this one did not.  MPL
   programs that used a work around for this, will need to change code.

 + Mystic now properly parses PAGEUP and PAGEDOWN keys sent by SyncTerm.  This
   change is only for Windows as it has yet to be determined if making this
   change in OSX is going to conflict with the F9 and F10 keys.  I may end up
   making this change on those sides too and forgetting to update the changes
   file.  Be forwarned :)

 + Mystic now has an internal ANSI gallery.  A new menu command, 2 new
   templates, a new percent bar configuration, and several new prompts come
   along with this.

   The new menu command is GA and takes a command line option that points to
   the root of where your ANSI files exist.  This allows the user to move
   around through the directory structure starting at the root supplied in
   the command option data.

   The gallery allows for an unlimited "depth" in the directory structure with
   the only limitation being that each directory can have up to 1,000 files
   or folders in it.  The gallery supports file downloads, first letter
   filename jumping, and full arrow/pageup/pagedown/home/end manuvering.

   The gallery will also attempt to import SAUCE tags on the fly while
   presenting the directory structure which will be sorted alphabetically on
   the fly.  SAUCE data is available as Prompt Info codes in the prompts
   that go along with it.  This stuff is CPU intensive and wasn't really
   viable "back in the day".

   A new percent bar configuration can be found in the language settings in
   MCFG for the Gallery Bar.  This bar in the default template expects a bar
   length of 20.  You will need to go set that up how you'd like it, and if
   you do not want to use it you can simply blank out the percent bar prompt.

   Two new templates go with this:

      ansigal.ans - Contains the main gallery screen.  ScreenInfo codes !1 and
                    !2 are used to define the top line and the bottom line in
                    the file listing box.  The actual content of the box is
                    defined using prompts.

      ansigalh.ans- This is the help screen displayed when the user enters
                    a ?.

   The following new prompts must be added to your language files, and your
   language files must be recompiled using MAKELANG or MCFG:

   ; ansi gallery: Ansi is required to use this prompt
   466 |CRSorry, this gallery requires ANSI graphics|CR|CR|PA

   ; ansi gallery: Deselected file in list (bar OFF)
   ; &1=filename     &2=filesize  &3=filedate  &4=sauce author  &5=sauce title
   ; &6=sauce group  &7=filetime
   467 |[X02|07|16 |$R49|&1 |$R12|&6 |$R12|&4 |XX

   ; ansi gallery: Selected file in list (bar ON)
   ; &1=filename     &2=filesize  &3=filedate  &4=sauce author  &5=sauce title
   ; &6=sauce group  &7=filetime
   468 |[X02|15|17 |$R49|&1 |$R12|&6 |$R12|&4 |XX

   ; ansi gallery: Deselected DIRECTORY in list (bar OFF)
   ; &1=filename     &2=filesize  &3=filedate  &4=sauce author  &5=sauce title
   ; &6=sauce group  &7=filetime
   469 |[X02|07|16 |$R49|&1 |12<DIRECTORY>|$D15 |XX

   ; ansi gallery: Selected DIRECTORY in list (bar ON)
   ; &1=filename     &2=filesize  &3=filedate  &4=sauce author  &5=sauce title
   ; &6=sauce group  &7=filetime
   470 |[X02|15|17 |$R49|&1 |12<DIRECTORY>|$D15 |XX

   ; ansi gallery: Current path update prompt (when switching directories)
   ; set to blank to not display a path
   ; &1 = current path   &2 = # of files in path
   471 |[X08|[Y05|15|16|$R70|&1

   ; ansi gallery: Percent bar update (when redrawing page)
   ; Set to blank to not display a bar.  Bar config is in MCFG lang settings
   ; &1 = Percentage bar   &2 = Percentage (0-100)
   472 |[X52|[Y23|15|16|$L03|&2|07% |&1

   ; ansi gallery: Default sauce values for no sauce record.  3 words separated
   ; by semi-colons: Title;Author;Group  IE: Unknown;Unknown;Unknown
   473 Unknown;Unknown;Unknown

   ; ansi gallery: Command prompt for ! (only download for now)
   474 |CR|12Download |&1? |XX

   Enjoy!

 + MPL FOR/WHILE/REPEAT loop statements now have CONTINUE and BREAK commands
   availble to manipulate the loop.

 + When MIS creates a new telnet node in Windows, the specific node will have
   its screen updates disabled by default.  This will speed up output a bit.
   Switching to the window and pressing ALT-V will toggle the local display on
   and off so you can still "snoop" the user.  A message is printed in the
   Window with instructions when the screen is disabled.

 + Reworked Mystic's socket buffering in Windows.  This combined with the
   above change should give an output speed up in the Windows version when
   not connected locally.  Initial feedback from alphas say that these changes
   have GREATLY improved speed in Windows.

   Linux and OSX will not notice much of a difference because those versions
   had better buffering to begin with.

 + Increased OSX and Linux output buffer to 4KB up from 1KB.  I am not sure
   this will make much of a difference, but it is now the same as the new
   Windows buffer.  I think the "sweet spot" is around 2K actually.

 + New MCI code |DI## where ## is a number between 0 and 99.  This MCI code
   only works in display files and is used to set a character display rate.
   The ## defines the number of characters displayed between delay, so 00 is
   no delay, 01 is the slowest, 99 is the fastest.  This can be useful when
   trying to emulate certain baud rates, or if you have ANSImation and want
   callers to actually see it! :)  This code can be used multiple times in
   a single display file to change speeds throughout.

 + Mystic no longer sends multiple warnings to a user when their time is
   running out.  It now only sends them one warning when they have 5 minutes
   left.

 + Rewrote some of the input functions to be more efficient, mostly on the
   Windows platform.  Input should be a bit more responsive now on all
   platforms though.  Generally, when combined with the other Windows
   changes, overall feel should be "snappier" than in the past.

 + The ANSI gallery menu command now accepts a second parameter to define
   the display speed of the files in the gallery.  The format for the
   optional data is now:

      <root gallery path>;<speed>
      c:\mystic\mygallery;0

   Zero will disable any speed reduction.  1 is the slowest and you can go
   up to 255 for the fastest delay with the speed option.

 + Mystic now updates the Window title with the current logged in user and
   their node "action" in each node's window. (Windows only) ie:

      "Mystic Node 1 - g00r00 - Reading messages"

 + New MPL command SetPromptInfo.  This allows you to set Mystic's internal
   "changing" PromptInfo MCI codes (the |&X codes).  For example:

      SetPromptInfo(1, 'Hello!');
      WriteLn ('This MCI code would like to say: |&1');

   As a side note, there is NOT a GetPromptInfo because you can simply use
   MCI2STR:

      WriteLn('This MCI code would like to say: ' + Mci2Str('&1'));

 + New MPL command GetScreenInfo.  This allows you to read Mystic's internal
   ScreenInfo codes, used in Templates - so your MPLs can easily have
   templates just like Mystic!  These are the |!X codes.

     Var
       X, Y, Attr : Byte;
     Begin
       GetScreenInfo(1, X, Y, Attr);

       WriteLn('The value of the !1 MCI code was:');
       WriteLn('   X: ' + Int2Str(X));
       WriteLn('   Y: ' + Int2Str(Y));
       WriteLn('Attr: ' + Int2Str(Attr));
     End;

 + New MPL command "BufFlush".  This causes Mystic to immediately send
   whatever is in the output buffer to the client.  In almost all cases you
   will never need to use this, as Mystic knows most of the time when it
   needs to do that.  It is more of a precautionary function.

 ! This isn't really a bug, more of an oversight.  When Mystic is saving
   previously entered text, it would also save password input.  Input
   history is accessible by pressing the up/down arrows on field input. You
   did know about that, right?  Figures! :)

 + New MPL function "StripL" strips the left side of a string of any
   specified leading characters.

     Var S : String = '    Hello';
     S := StripL(S, ' ');

 + New MPL function "StripR" strips the right side of a string of any
   specifcied trailing character:

     Var S : String = 'Hello     ';
     S := StripR(S, ' ');

 + New MPL function "StripB" strips both sides of the string if a specific
   character.

     Var S : String = '     Hello     ';
     S := StripB(S, ' ');

 + New MPL function "StripLow" strips all chracters from a string that are
   less than ascii code #32.

     Var S : String = #12#12#12#12 + 'Hello';
     S := StripLow(S);

 + New MPL function "MCILength" works just like "Length" except it tries to
   ignore MCI codes.  It doesn't check for actual validity of MCI codes.

     Var B : Byte;
     B := MCILength('|15Hello|UH');
     WriteLn ('Length should be 5: ' + Int2Str(B));

 + New MPL function "Initials" takes a user name and attempts to return one
   or two character initials.

     S := Initials('Jack Phlash'); // should return "JP"

 + New MPL function "StripPipe" takes a string and strips only pipe color
   codes from it.

     S := StripPipe('|15Hello there, |UH');  //returns "Hello There, |UH"

 + New MPL function "StrMci" takes an entire string and attempts to translate
   any MCI codes found in it, returning the entire result.

     S := StrMci('Hello |UH');

 + New MPL function "BitCheck" accepts a bit position and checks it against
   an integer, returning true or false if the bit is on.  So for example in
   the Records, the third bit in UserFlags is UserDeleted:

     GetThisUser
     If BitCheck(3, UserFlags) Then WriteLn('User is marked deleted');

   Note that this was implemented before actual bitwise math, which also
   made it into this version.  Keep reading! :)

 + New MPL function "BitToggle" accepts a bit position and an integer and
   toggles the bit.

     GetThisUser
     BitToggle(3, UserFlags);  // undeletes if they are deleted or deletes if
                               // they are not deleted.

 + New MPL function "BitSet" accepts a bit position and an integer and sets
   the bit ON/OFF based on a boolean:

     GetThisUser
     BitSet(3, UserFlags, True);  // user is marked as deleted

 + MPL now allows hexidecimal values to be used in numeric variable assignment
   numerical evaluation, and in numeric constant variables.  A hex value must
   begin with a $ character.  Some examples:

     Const
       MyHexValue = $1F;

     Value := $10;

     If Value = $10 Then WriteLn('Value is 16 <in decimal>');

 + MPL now fully supports bitwise math and operators!  The following are
   implemented:

      AND - Bitwise AND
      OR  - Bitwise OR
      XOR - Bitwise exclusive OR
      SHL - Bitwise shift left
      SHR - Bitwise shift right

   Example:

     Const
       UserDeleted = $04;  // established bit for userdeleted from records.pas
                           // note: this value has changed check records.pas!
     Begin
       GetThisUser

       If UserFlags AND UserDeleted <> 0 Then
         WriteLn('User is deleted');
     End;

 + Mystic now keeps a "virtual terminal" of what the users terminal SHOULD
   look like.  This opens up the ability to have "remote" screen saves and
   restores since Mystic thinks it knows what their screen looks like. :)

 + New MPL function "GetCharXY" returns the character located on the user's
   screen at the XY location.

     Var Ch : Char;
     Ch := GetCharXY(1, 1);
     WriteLn('The user has the following character at 1,1: ' + Ch);

   This kind of stuff could allow you to create MPL-based custom screen
   effects like TheDraw used to have, except for on-the-fly with whatever
   is on the user's screen.

 + New MPL function "GetAttrXY" returns the attribute of the character
   at position XY on the user's screen:

     Var Attr : Byte;
     Attr := GetAttrXY(1, 1);
     WriteLn ('The attribure of the character at 1,1 is: ' + strI2S(Attr));

 + New MPL variable "CfgSeeInvis" gives you access to the "See Invisible"
   ACS value from Mystic's configuration.

 + New MPL variable "CfgMaxNode" gives you access to the "Max Nodes" setting
   from Mystic's configuration. -- LATER REPLACED IN SAME ALPHA KEEP READING

 + Completely reworked the System Configuration data file (MYSTIC.DAT).  Some
   variable names were changed for clarity.  This also makes room for some new
   features that are on the drawing board.  Record formats will probably not
   change again for quite some time.  Configuration editors still need to be
   reworked to better support the new format - big changes incoming on that
   front.  Ideally, writing a utility for 1.10 will work for many versions to
   come - just as long as I didn't overlook something serious.

 + The Allow Multiple login feature is now an ACS setting instead of a simple
   Yes or No.  Find in in the configuration somewhere! :)

 - Removed the "Archiver" directory as it was meaningless.  Put the path in
   your archive configurations if you need to, otherwise they are probably
   already in your 'path' to begin with and likely do not need one to begin
   with.

 + Added a "Semaphore" directory.  This is where the *.now files are now
   created for new network-based message events.  Previously they were created
   in the DATA directory and could not be changed.

 + ACS strings in the System Configuration now have a maximum of 30 characters
   up from 20.

 + System directories have been expanded to 80 characters, up from 40.

 + All menu names in the System Configuration now have a maximum filename of
   20 characters, up from 8.  You still can't create
   "omgthisismymenunowlolsitsawesome.mnu" but you CAN create "messagemenu.mnu"

 - Removed the unused "ScreenBlank" setting from Mystic.  Screensaver does not
   matter outside of a DOS OS, and DOS is gone, thankfully.

 + Increased the maximum number of "EchoMail" networks from 20 to 30.

 - Removed Node settings and NODEx.DAT files.  You can delete node*.dat from
   your data directory.  Since Mystic no longer internally supports modems,
   this configuration is not needed.  Any MCI codes for doors and related that
   normally put a baud rate or comport will now default to 38400 baud and COM1
   unless it is a local login.

 - Prompt #315 is no longer used.  I can't remember why.  :)

 + Removed MPL Cfg Variable "CfgMaxNodes" and replaced it with "CfgTNNodes"
   variable, which now contains the number of telnet nodes to allow.  These
   are basically interchangable in your MPL code but it is changing to more
   accurately reflect what Mystic is doing.

 + Removed the "Max Nodes" from the System Configuration.  This is now longer
   needed.  The number of telnet connections determines your max nodes, since
   there are not telnet and dialup nodes now.  Dialup can still be supported
   using gating software that accepts a dialup connection, and creates a
   telnet connection to Mystic.  This may become internal at some point, but
   I do not know of a single dialup Mystic BBS (and there is 3rd party
   software to do this) so it is low in priority.

 + Added new "Max Telnet Nodes" in MCFG's Internet Configuration.  This needs
   to be set to the maximum number of nodes you wish to allow/listen for under
   all platforms.  This replaces the old "Max Nodes" setting.

 + Mystic now saves information in the configuration of when it was last
   upgraded.  If the data file formats are outdated, Mystic will refuse to run
   and exit with an error.  MIS, MBBSUTIL, MCFG, MYSTPACK also check to ensure
   data files are current before executing.  If you want to add something
   similar into your utilities (that include records.pas), here is an example:

      {$I records.pas}

      Var
        ConfigFile : File of RecConfig;
        Config     : RecConfig;

      Assign (ConfigFile, 'mystic.dat');
      {$I-} Reset (ConfigFile, Config); {$I+}

      If IoResult <> 0 Then Begin
        WriteLn('Cannot read mystic.dat.  Run from root Mystic dir!');
        Halt(1);
      End;

      Read  (ConfigFile, Config);
      Close (ConfigFile);

      If Config.DataChanged <> mysDataChanged Then Begin
        WriteLn('Your data files are not compatible with this version');
        Halt(1);
      End;

      // Everything is good and now you have Mystic's configuration loaded
      // in memory for your utility.

   Now granted, this checks ONLY the base Mystic configuration file,
   but the upgrade utility for each release should update this base, AND
   everything else too.  So the assumption is if the base configuration is
   not up to par, then nothing else is either.

 - The "Wait for call" screen has been removed from the Mystic process
   executable.  Instead, a Mystic -L just logs you directly into the BBS as
   it would in Linux.  Executing Mystic -CFG will take you to the
   configuration that would normally be accessible from the "WFC" screen.
   You can delete "wfcscrn.ans" from your DATA directory.

 - Removed -CID command line which was identical to the -TID command line
   option since modems had been removed.

 + If MYSTIC.EXE is ran without any parameters, it will default to node 1
   local mode and start the login process in Windows.  This change was made
   because that is how the Linux and OSX versions work.  Previously you would
   get an error saying you needed to use -L for local mode, which was kind of
   redundant.

 ! Mystic was only drawing 79 characters on the status bar during a Windows
   login before the user logged in.  Fixed.

 - Removed 2-line status bar option in the Windows version.  I couldn't find
   anyone that uses it, it complicates codes, and interferes with ANSIs that
   are assumed to support 24-lines by pretty much all terminals.

 + When exiting Sysop chat mode on Windows, Mystic now remotely restores the
   user's screen to what it was before chat was started.  Small entry to the
   whatsnew, but pretty awesome in what its really doing.

 + Mystic now has the option to define the maximum number of password
   attempts.  It used to be hard-coded to 3.

 + Mystic now has the option to define the maximum number of login attempts
   when a user is first prompted for their user name before the connection
   is terminated.  This was previously hard coded to 3.

 + Mystic now allows the number of minutes given to an unknown user to be
   defined in the configuration.  This is the amount of time they have to
   either login or create a new account.

 ! Mystic was not properly sending the 'hackwarn.txt' e-mail to a user
   when their password was incorrectly entered via the Matrix login.

 + Mystic now allows the option for users to send a "password inquiry" email
   to the user defined in the configuration as the "Feedback To" user.  This
   option is available when a user fails to enter a valid password from
   either the Matrix login or the standard login.  A new prompt goes along
   with this:

     ; Password inquiry prompt
     475 |CR|12Send a password inquiry message to the SysOp? |XX

   This feature can be turned off or on in the login configuration.

 ! Fixed a bug in split screen chat text wrapping that as introduced in the
   previous version.

 ! Split screen chat now filters out the linefeed character.  Some terminals
   that send CRLF when ENTER is pressed were causing some display issues in
   split chat.

 + Added account expiration system into Mystic.  User accounts now have a
   Expires date (mm/dd/yy) and Expires To (security level) field on each
   record.  Accounts set to expire to level 0 will be marked as deleted.

   Two new MCI codes go along with this:

     XD - Displays the number of days until expiration (or 0 if none)
     XS - Displays the security level user will expire to.

   Two new prompts go along with this:

     ; Displayed when account expired down to a security level > 0
     476 |CR|14Your account has expired.  Downgrading security to |XS.
     ; Displayed when account expired down to level 0 (delete)
     477 |CR|12Your account has expired and is now marked for deletion.

 + Mystic can now force the user to change their password after a certain
   number of days.  This option is found in the system configuration login
   settings.  In addition, users can be individually flagged so that they
   are never required to change their password.  If the configuration value
   is set to 0, it will disable this feature.

   A new MCI code goes along with this

      PW - Returns the value for password reset days in configuration

   A new prompt goes along with this:

      ; User required password change
      478 |CR|14This BBS requires a password change every |PW days.

   For now the password change uses the same prompts as the new user
   configuration.  That can be separated in the future if it is needed,
   but for now it is the same.

 - Removed MCFG from Mystic BBS.  It is being replaced with an new internal
   configuration.  Read on!

 + Mystic now has a complete ANSI-based menu UI system for configuration
   editors and possibly more in the future.

 + Executing mystic -cfg now takes you directly to the configuration editors.
   When quitting the editor, Mystic will exit back to the operating system.
   If you are used to using MCFG you can create a MCFG.BAT or MCFG.SH which
   just executes "mystic -cfg" to get a similar effect.

   The new internal editor uses the new ANSI menu interface which allows both
   hotkey and arrow keys, listboxes, etc.  This is also now accessible using
   the *S Sysop menu command, meaning it usable over your telnet connection
   or locally.

   A new ANSI file "cfgroot.ans" needs to be placed into the DATA directory.
   This serves as a "wallpaper" for the System Configuration.

 + Replaced old, outdated Archive editor with a new "popup" lightbar
   Archive editor, using the new ANSI UI system.

 + Replaced old, outdated Protocol editor with a new "popup" lightbar
   Protocol editor, using the new ANSI UI system.

 ! Fixed a bug in file search "description" highlighting.  Not sure if this
   was in previous versions or introduced in the latest alphas but it should
   be fixed up now.

 - Removed the ALT+J shell to DOS function from the Windows version.  There
   is no reason to have this built into the node process since DOS is no
   longer supported.

 + Mystic now accepts a -IP command line which passes the IP.  The old
   -UID should pass the hostname.

 + Mystic now accepts a -HOST command line which passes the HOST.  The UID
   command line is the same as -HOST and remains only for backwards
   compatibility.  It might be removed in the future, so if you use the UID
   command line, its best to switch to HOST.

 + New MCI code UY returns the IP address (UX returns host)

 + %4 when executing doors, now returns the IP address (%5 is host)

 + When executing protocols, %4 now returns IP address (%5 is host)

 + Mystic now replaces logging of the baud rate in the Sysop log with the
   IP and hostname of the connection.

 + MIS now passes both the IP and HOST command lines when creating a telnet
   session.

 ! Mystic should now properly copy Welcome, News, and Goodbye files if they
   exist into QWK packets.

 + Mystic now strips out pipe color codes from the headers of the allfiles
   or newfiles exports in the file bases and in QWK packets.

 + FTP Server now has minimum and maximum port values for passive and
   extended passive data ports.  Defaults should be 60000, and 65535

 + FTP Server now has a configurable "per connection" timeout.  Recommended
   value is at least 300 seconds.

 + FTP server now has a configurable "max connections with same IP" value.
   This should be set to at least 2, for incoming data connections with
   the same IP.

 + Added configurable POP3 server options for connection Timeout and for
   Delete Mail on Retrieve.

 + TAB key now works in the full screen editor.  Tab stop is 5 spaces.

 + CTRL-D now functions the same as the right arrow in the full screen
   editor.

 + CTRL-E now functions the same as the up arrow in the full screen
   editor.

 + CTRL-F now moves the beginning of the current line in the full screen
   editor.

 + CTRL-G now moves to the end of the current line (same as end key)

 + CTRL-J now erases the current line in the full screen editor.  It does
   not completely remove the line as CTRL-Y does, it just erases.

 + CTRL-N now does a page down in the full screen editor.

 + CTRL-O now displays the full screen editor help screen in the full
   screen editor.

 + CTRL-P now does a page up in the full screen editor.

 + CTRL-T now moves one word to the left in the full screen editor.

 + CTRL-R now moves one word to the right in the full screen editor.

 + CTRL-X now moves down one line the same as the down arrow key in the
   full screen editor.

 + CTRL-W now deletes the word to the left of the cursor in the full
   screen editor.

 ! SysOp Chat Page in Windows now properly updates the user's terminal
   during the page.

 + Sysop Chat Page in Windows now plays the "default beep" sound as
   configured in Windows.

 + MBBSUTIL has a new function -FUPLOAD.  This goes through every file base
   and looks for new files.  If a new file is found it will be added into
   Mystic's file base listing as a new file.  FILE_ID.DIZ will be imported
   as well.  **This was later moved to MUTIL**

 ! Mystic will no longer shell to the console and get "stuck" when trying
   to execute an archive that has a blank command line in the configuration

 ! MBBSUTIL was sorting BBS Lists and File Lists in reverse alphabetical
   order.  This is now fixed to sort as most people would expect.

 + The HOME key now functions in the lightbar file listings to move to the
   beginning of the list.

 + The END key now functions in the lightbar file listing.  It is kind of a
   half-assed implementation though, since doing it "the right way" will
   involve some extra coding in the future.

 + File Base settings for all ACS strings has been increased from 20 to 30
   characters.

 + File base "lightbar" list templates are now defined per file base in
   the file base editor.  The upgrade utility will set existing bases to
   'ansiflst' but any newly created bases will need to have this value set
   per base now.

 + Updated file base record structures and added options for the possible
   future "Comment and Rating" system for file bases.  In addition, some
   boolean data has been changed into a bitmapped flag variable.

 + Added new ANSI file base editor into the System Configuration.

 + Added Copy/Paste functions into all new ANSI internal editors.

 + Added new ANSI message group and file group editors.

 - Removed Password protected file and message bases.  This is a barely
   used feature and it doesn't integrate well when the bases are available
   via FTP and NTTP, etc.  Security around bases needs to be based on the
   ACS system to avoid issues in those situations.

     Prompts 66, and 67 are no longer used.
     Prompts 103 and 104 are no longer used.

 + Ansi message reader template is now configured on a per-base level just
   as the standard reader template is.

 + Ansi message reader message index is now configured on a per-base level
   just like the ansi reader template.

 + Message base ACS length has been extended to 30 characters.

 + Message base standard reader header filename has been expanded to 20
   characters.

 + Message base path expanded to 80 characters from 40.

 + Added new ANSI message base editor.

 + Added new ANSI security level editor.

 + SMTP server now has a configurable timeout value per session (in seconds)

 + SMTP server now has a configurable number of simultaneous connections
   from the same IP address.

 + CTRL-K now cuts a line of text in the full screen editor.  If you continue
   to cut more than one time, the text is appended to the cut buffer and will
   contiue to do so until it is pasted.  Any cut after a paste resets the cut
   data.  This is inspired by the Nano/Pico editors on Unix platforms which
   work the same way (with the same keys!).  The cut buffer currently allows
   up to 100 lines to be cut and pasted at once.

 + CTRL-U now Uncuts all text that is currently in the cut buffer within the
   full screen editor.  You can uncut (paste) as many times as you like with
   the current buffer.

 + Mystic now has support for configuring Echomail domains for 5D addresses.

 + Mystic now has support to configure an uplink address for each echomail
   address.

 + Default language filename can now be up to a 20 character filename

 + Default start menu can now be up to a 20 character filename

 + All ACS settings in the System configuration have been expanded from 20
   characters to 30 characters max.

 + All paths in the System configuration have been expanded to 80 characters
   max.

 + MBBSUTIL now has an -AREASOUT option which will export a list of all bases
   flagged as Echomail in the AREAS.BBS format.

 + Added a new program called MUTIL.  This will eventually become the
   replacement for MBBSUTIL and MYSTPACK.  In addition, it will have a ton of
   new features that MBBSUTIL did not have.  MUTIL and MUTIL.CFG contain more
   details.

 + MUTIL now has the ability to import FIDONET.NA style files into Mystic's
   message bases.

 + MUTIL now has the ability to perform an offline "Mass upload" into file
   bases.  It will also import File_ID.DIZ (optionally) based on the archive
   configuration.

 + "Languages" have been renamed to Themes.  LANGUAGE.DAT has been renamed to
   THEME.DAT in the data directory.  A ton of new features await with this new
   system.  It of course is still possible to use the Theme system to create
   support for different languages as well.

   Additionally, compiled prompt files that used to have the .LNG file
   extension have been renamed to .THM extension.  The upgrade utility should
   take care of all this renaming for you.

 - MAKELANG has been removed from Mystic BBS distribution.

 - MakeTHEME has been added to the Mystic BBS distribution.  This utility
   works much like MAKELANG did but it has a few new options:

      1) The ability to decompile prompt files.  Keep in mind, comments are
         not added into compiled prompt files, so when you decompile one you
         will lose that information.

      2) MakeTheme will now check for the existance of a "mysticbbs"
         environment variable.  If it finds this variable, it will look in that
         location for MYSTIC.DAT, allowing MakeTheme to no longer be required to
         be in the root Mystic BBS directory.

      3) Prompts within a prompt file no longer has to be in numerical order.
         More to come on why this change is being made, but generally this
         allows you to categorize prompts.

 + Mystic now saves the last known IP and hostname from each user.

 + Revamped last caller information.  It now saves the IP, Hostname,
   Gender, and if the user was a new user or not.  In addition, it will now
   save all 10 custom user questions (not implemented yet).

 + MUTIL can now import FILEBONE.NA format files, creating both file bases
   and their directories (if they do not already exist).  See MUTIL.CFG for
   more information.

 ! The MCI parser for |!x MCI codes now checks for validity of the number
   or otherwise does not parse the code.

 + MUTIL can now generate top 1-99 callers, posters, downloaders, uploaders
   and post/call ratio all configurable by templates.

 + MUTIL now has a -NOSCREEN option which disables the screen output when
   executing.  When suppling this on the command line, a .cfg file must be
   supplied as well.  IE:  mutil mutil.cfg -noscreen This is useful for
   Linux/OSX people that may want to execute MUTIL during a login or
   something but do not want their users to see the MUTIL screen.

 + Mystic now has 10 colors definable per theme, with 10 new MCI codes
   |T0 to |T9 to display them.

 + Mystic's internal Language editor has now been replaced with a theme
   editor.  This editor is full ANSI lightbar-capable like other newer
   configurations.  It can also edit all prompts and compile prompt files
   all internally.  It support at least the features of the old MCFG editor
   including prompt text search, jumping, copy/paste, undo, etc.

 + Mystic now checks for messages between nodes every 3 seconds while waiting
   for input.  Previously Mystic would check based on situation (ie, before
   menu prompt, in between messages, etc) but never while idle waiting on
   input as it does now.

 ! Mystic was not allowing node messages within MPL programs.  It is not clear
   if this was introduced in the 1.10 alphas or if the problem existed in the
   past.

 + Mystic now saves and restores the user's screen before and after showing a
   node message.  You can now place a clear screen comfortably in those
   prompts to make a really clean look when users are interrupted with node
   messages.

 + MIS Linux can now accept telnet connections and properly redirect STDIO
   while spawning Mystic.  This means it can entirely replace a Linux
   telnet daemon if desired.  It has had little testing though at the moment.

 + Prompt 000 now has new MCI prompt info codes:
      &1 = Login attempt number
      &2 = Max login attempts
      &3 = Attempts remaining

 + The scrollback buffer in node chat has been expanded to the same size as
   the maximum message size (1000 lines up from 200).  Its possible this
   will change in the future again.

 + MUTIL now has the option to reverse sorting of top lists, meaning you can
   create the "bottom 99" for each of the types of bulletins.