User Tools

Site Tools


whats_new_110

Mystic BBS v1.10 - What's New

Every Mystic BBS archive contains a WHATSNEW.TXT file that tracks the development of Mystic BBS for the version related to that archive.

This page contains notes from the author (g00r00) during the development of Mystic BBS v1.10

It outlines what is a new or changed feature, a bug fix, or something that has been removed.

In order to interpret each entry below, the following key explains the nature of each change that has been noted in the WHATSNEW.TXT for this version of Mystic BBS.

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

Use the Table of Contents on the right hand side of this page to quickly jump between the notes that relate to each Alpha version of Mystic BBS during this development cycle.

If you spot something you think looks amiss with these notes please contact us using the contact info found on this Wiki.

















1.10 Alpha 1 - 21

  ! 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 such as ddTelnet or xinetd, etc.

 + 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.

 + New formatting MCI code $X##C

   This works similar to the $D MCI code except that the D version will
   duplicate a character ## amount of times.  The X version will only
   duplicate the character until the cursor reaches column ##.

   So for example:

   |CLThis is a line of text|$X79!

   The above example will print the ! character until the 79th column:

   This is a line of text!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

 + Mystic now has user to user (node to node) private chat and paging system
   so that users can page each other and chat.  Linux and OSX sysops can use
   this to chat with their users if needed.  Any user with the Sysop ACS
   level will have the option to force the user into chat and any users in a
   forced chat session cannot leave.

   A new menu command of NP will now allow a node to page another node for
   a private chat session.

   The following new prompts go along with this:

   ; User2User chat page which node?
   479 |CR|09Enter node to chat with |01[|10?|01/|10List|01]|09: |XX

   ; User2User node/user is unavailable
   480 |CR|15That user is marked unavailable.|CR|CR|PA

   ; User2User force user into chat?
   481 |CR|12Force user into chat? |XX

   ; User2User sending chat request &1=User &2=Node
   482 |CR|15Sending chat request to |&1...|DE|DE|CR

   ; User2User chat mode starting
   483 |CL|09|17 ° |15Chat mode engaged.|$X70 ESC/Quit |16|CR

   ; User2User chat mode ended
   484 |CL|09|17 ° |15Chat mode end.|$X79 |16|DE|DE

   ; User2User accept chat page request? &1=user &2=Node
   485 |CL|15|&1 is requesting private user chat.  Accept? |11

 + Mystic now has a new User Editor redesigned with the ANSI menu interface.

 + The ALT-U local Sysop command has been removed (moved to user editor).
   Alt-E now opens a local user editor for the user which also contains the
   Upgrade option.

 + Added CARDINAL (Unsigned 32-bit Integer) type to MPL

 + MPLC and MIDE now calculate the error position in the file (line and
   column) after the error has occured.  This takes a little bit of time
   but it ensures that the column/line error position is accurate.

 + The Node message send menu command (NS) no longer sends the message to
   the current node when it is doing a broadcast to all nodes.

 + Mystic now allows arrays of records in MPL.

 + Reduced the FTP server directory caching buffer to 4k, but expanded the
   file send buffer from 4K to 32KB.  After doing some local network FTP
   transfers of giant files, it seemed like the 4K transfer was pretty
   harsh on disk usage.

 + Mystic now allows base record variable types to be assigned to other
   base record variable types.

 + When prompted to save an edited message, Mystic now defaults to YES.

 + Added SizeOf function to MPL which returns the size of a variable or
   record type.

 + Added fWriteRec and fReadRec that can be used to write an entire record
   or array of records to an opened file in MPL

   Specific elements can be addressed with fWrite/fRead if desired.

 + Fixed a screen bleed bug under UNIX platforms.

 + Added some more CHATX.DAT checks in UNIX versions, although I am not sure
   it will make any noticable difference in ghost nodes.

 + MIS in Linux now has the ability to Snoop telnet nodes if you use the
   MIS console as a telnet server.

 + NNTP server is now somewhat functional but does need quite a bit more
   work to make it good.  It is now possible to enable it, but it has only
   been briefly tested with XNEWS and does not follow RFC stadards yet.

 + New MPL function FillChar similar to Pascal.  IE:

     type
       myuserrecord = record
         username  : string[30];
         somevalue : array[1..5] of byte;
       end;
     var
       u : myuserrecord;
     begin
       fillchar(u, sizeof(u), #0);
     end.

 + Mystic Internet Server (MIS) can now be started in daemon mode by
   executing MIS with the -d command line option for Unix platforms.

 + Added new Message Base "QuickScan" menu command (MQ).  This command
   does a scan of message bases and shows you the number of new messages,
   new messages to you, total messages, etc.  This is modeled after PCBoard
   scans and only scans bases in the bases flagged for scanning by the
   user.  For example:

     Starting QuickScan

     Base: General Messages         Total: 1,000  New: 24  Yours: 3
     Base: Test Message Base        Total: 1,000  New: 24  Yours: 3

     Quick Scan Complete

   By default the QuickScan will do a global scan of all message bases in
   all groups.  However there are many optional data options:

     /CURRENT = scan only current message base
     /GROUP   = scan only current group's bases
     /NOSCAN  = do not show "scanning" prompt
     /NOFOOT  = do not show "end of scan" prompt
     /NOHEAD  = do not show "starting quickscan" prompt

   This can be combined with the MN menu command to prompt the user what to
   do next.  You could even get creative with the & MCI codes and MPL to
   make logical decisions for the user based on the results of the scan!

   Four new prompts go along with this:

   ; MsgBase quickscan header prompt
   486 |CR|12Starting Quick Scan|CR

   ; MsgBase quickscan Scanning prompt
   ; &1=basename  &2=current base#  &3=total bases#
   487 Scanning |&1 [|&2 of |&3]...

   ; MsgBase quickscan base list prompt
   ; &4=msgs in base    &5=new messages  &6=your messages  &7=global total msg
   ; &8=global new msgs &9=global your msgs
   488 |03Base: |14|$R40|&1 |03Total: |09|$L04|&4|03 New: |11|$L04|&5 |03Yours: |12|$L03|&6

   ; MsgBase quickscan footer prompt
   ; &7=global total msg   &8=global new msgs   &9=global your msgs
   489 |CRQuick Scan complete. |CR|CR|PA

 + The Full screen editor now does a full redraw of the editor screen and
   text after uploading a .txt file into the editor.

 + New MPL procedure "hangup" does exactly what you think it does to the
   caller! :)

 + Mystic now allows users to login by the permanent index number as well as
   their user name.  Private e-mails and other areas of the BBS also allow
   for usage of the permanent index now as well.

 + Mystic now allows for the new user application process to be completely
   replaced by an MPL program.  You must at a very minimum set either the
   user real name or handle fields, as well as the password value.

   If the newuserapp.mpx exists in the scripts directory, it will be
   executed instead of the normal application process.

 + New MPL function IsUser takes a string value which can contain either
   a user realname, handle, or user perm index number.  If the user exists,
   it will return a TRUE result or FALSE if the user does not exist.

 + Enhanced standard menus to allow for HOME/END/PAGEUP/PAGEDOWN hotkeys
   which execute menu commands when those keys are pressed.  So the total
   list of special hotkeys are:

     ESCAPE
     ENTER
     TAB
     HOME
     UP
     PAGEUP
     LEFT
     RIGHT
     END
     DOWN
     PAGEDOWN

   In addition these are still functional as auto-exec commands:

     FIRSTCMD - Execute only once when the menu is first loaded
     EVERY    - Execute each time a menu is display, before it is displayed
     AFTER    - Execute after the menu is displayed but before the prompt

   And hopefully soon I can get in the TIMER auto-exec from Mystic 2 which
   is by far the most badass of all of them! :)

 + Added new prompt #490 to the themes.  This prompt defines the message
   base header flags which were previously hard coded.  Each flag is one
   word separated by a space:

      ; Msg header flags text one word each separated by a space
      ; 1=Local 2=Echo 3=Private 4=Sent 5=Delete
      490 Local Echo Private Sent Deleted

 + Mystic will now abbreviate GIGABYTE size files in the file listings.  In
   the past it would only do megabytes and kilobytes.  Still, the record
   limitation is 4 gigs for the max filesize in the filebases.  This needs to
   be changed at some point, but it requires data format change.

 + Added new prompt #491 to the themes.  This prompt defines the file size
   and flags within the file listings.

      ; File base filesize flags one word separated by a space
      ; 1=offline  2=failed  3=unvalidated  4=GB  5=MB  6=KB  7=B
      491 OFFLINE FAILED UNVALID GB MB KB B

 + Menu access ACS and each menu command ACS has been expanded to 30
   characters.

 ! Fixed a bug in the Unix ANSI detection routines which caused an unwanted
   extra pause in detection (thanks to Kevin Lamonte)

 ! Fixed a bug which could cause Mystic to sometimes crash when saving a
   message reply if the message content was large (100+ lines or so)

 + While reading messages, it is now possible to Forward the message to a
   different messsage base by using the F hotkey.  This only works if you
   are a SysOp or message owner.  A new prompt goes along with this:

      ; Forward msg: which base
      492 |CR|09Forward message to which base (?/List): |XX

 + The Sysop Password prompt has been added to the theme prompt files.  A new
   prompt goes with this:

      ; Sysop password prompt
      493 |CR|09Sysop Password: |XX

 + MPL identifiers now have a maximum size of 30 characters, up from 20.

 ! Mystic was not properly stripping the path of exported text files when
   doing an export.  Functionally it worked fine, but it was printing the
   directory of the node's temp directory to the user.

 + New "user flag" in the user editor: No CallStats.  If this is set to YES
   the user's calls will not be added to the last caller information, and
   they will also not have their call counted in the BBS history database.

 + New "user flag" in the user editor: No PWChange.  If this is set to YES
   the user will be exempt from the forced password change after the
   configured time interval (if its enabled).

 + New "user flag" in the user editor: No History.  If this is set to YES
   the user will be exempt from BBS history tracking.  This includes Emails,
   Message posts, download stats, upload stats, new user counts, and call
   counts.  NoCallStats simply ignores the lastcaller display, and the system
   caller count numbers.  This flag ignores ALL history of the user.

 + MakeTheme now only looks at the "mysticbbs" environment variable if
   mystic.dat is not found in the same directory.

 + The "Transfer of XXX" file prompt has been enhanced to attempt to
   always strip the filepath from the file, in case of a strange situation
   where it somehow gets into the prompt info code.

 + Display files that are not found in a theme directory now have the option
   to "fallback" to the default display file directory, if Theme fallback
   is enabled for the theme.

 + Added new ANSI menu editor to replace the old outdated crap.  The new
   editor has references to all of the menu commands as well as the special
   functional hotkeys.  It still maintains the ability to "simulate" menus
   as well.

 + Revamped the entire menu system.  Menu files must be converted if you are
   any version pre 1.10 alpha 15 using the CvtMenus program.  Simply copy
   this into your folder with all of the *.mnu files are run it one time ONLY

   After you are done you will want to review your system because the new
   system is not a direct convertion of file format.  The method that Mystic
   links menu commands has changed.  The conversion program does its best to
   analyze your menu files and create a menu that functions the same, but
   there may be issues - particularly in lightbar grid menus I would guess
   since they can be quite complex.

   For those of you alpha testing, if you do find a menu that does not
   convert correctly, please send the .mnu file to me so that I can see if
   I can improve the conversion process before 1.10 official release.

 + Each menu option on a menu now as its own "execution list" of menu
   commands.  This basically replaces the old "kludge" stacking of commands
   to execute back to back with a single hotkey.  It is a much more clean
   approach this way, and it allows for more options!

 + Each menu command now has the option to redraw the menu or not after its
   command list executes.  This defaults to on to mimic previous menu system
   however for some advanced stuff, like TIMER, you may will to turn them
   off.

 + Menus can now be internally generated from 1 to 4 columns (up from 3)

 + Menus now contain a description configurable within the menu flags.  A
   new MCI code |MD goes along with it, and will display the description
   of the current menu.

 + Menus now have an optional "user status" field in the menu flags.  If this
   is set to a non-blank value, the user's action in node listings will be
   updated to this value.  If the value is left blank, Mystic will use the
   default "Browsing menus" prompt from the theme prompts.

 + Menus now have a "theme fallback" option similar to the recent change to
   the display file system.  If a menu is not found in its theme menu
   directory, then if the option is enabled, Mystic will look for it in the
   default menu directory configured in the System Configuration.  When
   combined with the similar display changes, it makes it very easy to build
   additional themes off of the default.  In your new themes, the stuff that
   you haven't themed can simply fall back to your default theme now.

 + Merged the "Hot Key" and "Long Key" options from the old menu system into
   one single hotkey field.

 + Added an "Input char" option to menu flags that defines how the user's
   input is echoed back to them at a menu prompt.  Valid options are
   Uppercase, Lowercase, and hidden.

 + Lightbar menus now allow extended input while the lightbar continues to
   function!  This works for both standard lightbar and lightbar grid menus.

   For example, you can set the hotkey to "OWNAGE" and have full lightbar
   menu.  Mystic will still recognize and execute the commands linked to
   OWNAGE if the user types it.  In addition, it has a smart input so that
   it only allows valid characters to be entered.  Mystic will use the X/Y
   location of the cursor after the menu prompt is displayed, so it is best
   to set where you might want to see the user's input (if its not hidden)
   using the menu footer/prompt.

 + Lightbar grid menus now allow the following events to be handled in
   addition to arrow keys:

      Page Up
      Page Down
      Escape
      Tab
      Home
      End

 + In a lightbar grid menu, each menu command now has the ability to execute
   on a grid-specific event.  The following are available options:

     Selected
     Up
     Down
     Left
     Right
     Tab
     Escape
     PgUp
     PgDn
     Home
     End

 + All displayed menu items now have an option for display type.  If it set
   to Access it will only be displayed if the user has access.  If it is set
   to Always, it will always been displayed.  If its set to Never, it will
   never be displayed.

 + Lightbar and Lightbar/Grid menus now display menu header and prompts if
   they are not set to a blank value.  They were ignored in the past, but
   this provides some better flexibility.  If you have lightbar menus you
   may need to validate that the header/footers in your menu flags are blank
   if you do not want this feature.

 + New auto-exec hotkey for menu commands: TIMER.  An item with the hotkey
   of TIMER will automatically execute every X amount of seconds, which is
   defined per menu command.  This combined with all of the other new
   features makes for an amazingly powerful new menu system!

 + Increased the menu reading buffer to 4k, up from 2k

 + Added new menu command -I which sets the menu timer counter to the value
   in the optional data field.  The menu timer is an internal incrementing
   counter used to fire off TIMER commands.  It represents the number of
   seconds that have passed since the menu was loaded.

 + TIMER commands also have 3 types, configurable per each menu option:

      Interval  - Always execute at the configured timed interval
      OnlyOnce  - Execute at interval ONLY ONCE per menu being loaded
      PerRedraw - Execute after each menu redraw as per timer interval

 + When using hotkey-style menu input, extended hotkeys are no longer
   required to have a / first.  You can make a hotkey command named QUIT
   for example, and it will execute immediately when QUIT is entered.

   Keep in mind it is still a hot-key styled input.  So you cannot have
   one hotkey named QUIT and one named QUITNOW.  The QUIT command will
   always get the hotkey.  If you need functionality like that, hotkeys
   can be disabled on the menu.

 + Similar to the display file and menu systems, the MPL scripts directory
   will now also fallback from the theme scripts path to the default
   scripts directory if the feature is enabled in the selected theme.

 + Enhanced the ANSI listbox functions for some better efficiency.

 + ANSI listbox now searches for an entire search string, rather than
   jumping to first characters.  For example, in the User Editor when you
   are at the list of user names, you can simply start typing the user
   name of the person you are looking for, and you will get there.

   Anytime you do anything that isn't typing a character, the search string
   will be "reset" allow you to continue searching for something else.

 ! Setting inactivity to 0 (to globally disable it) wasn't working.  I don't
   know if this was a fault in 1.10 alphas or also in 1.09, so I am
   mentioning it just in case.

 + New MPL function: GetMBaseStats.  This can be used as a function or a
   procedure (returning true if successful).  It takes 6 parameters.

      #1: Message base number
      #2: Exclude messages FROM the current user in stats
      #3: Exclude messages TO the current user that have already been read
      #4: Total messages (this is a VAR parameter)
      #5: New messages (this is a VAR parameter)
      #6: New messages to you (this is a VAR parameter)

   Example:

      uses mbase;

      var
        count, total, new, yours : longint;
      begin
        count := 1;  //start @1 to skip email base

        while getmbase(count) do begin
          getmbstats(count, true, true, total, new, yours);

          writeln('base       : ' + mbasename);
          writeln('total msgs : ' + int2str(total));
          writeln('new msgs   : ' + int2str(new));
          writeln('your msgs  : ' + int2str(yours));
          writeln('');

          count := count + 1
        end;
      end.

 + New MPL procedure: WriteXY.  This procedure writes a string of text at
   the defined X/Y location with a specific text attribute.  This of course
   requires the user has ANSI to function properly.

     WriteXY (1, 10, 8, 'Prints at X:1 Y:10 with dark grey text');

 + New MPL procedure WriteXYpipe.  This procedure writes a string of text at
   the defined location, similar to WriteXY *except* it parses pipe color
   codes *and* requires a "maximum field size" of which it will always
   extend or restrict the length of the text within that field.

     WriteXYPipe (1, 10, 8, 50, 'This pads to 50 chars at location 1,10');

 + Added new user flag "UserNoTimeout" which makes a single user immune to
   inactivity timeout check.

 + Enhanced the ANSI listbox search capabilities.  Most listboxes will now
   allow you to type a search string in which it will use to attempt to
   select an item that matches the search string.  While you are typing you
   can use CTRL-A to search "again" with the current string, or CTRL-Y to
   delete the current string.  Moving the lightbar selector will also reset
   the current search string.  The search string is case insensitive.

   Since the space key may need to be used in a search string, the hotkey
   used to mark items in a listbox has changed from the SPACE key to the TAB
   key.

 + If Message base list columns is set to 1, the toggle newscan and qwkscan
   message base lists will also now be 1 column.

 + If file base list columns is set to 1, the toggle new scan list will now
   also be shown in a single list.

 ! Mystic was not checking the "Download ACS" for each file base when files
   were added to the batch queue within a file listing.  Instead it was
   relying on the List ACS.  This is now fixed.

 + Mystic now allows users to select a default file transfer protocol.  If
   a protocol has been selected by a user they will not be asked to select
   a protocol when transfering files.

   A new addition to the GE menu command (optional data 32) will allow the
   user to select their default protocol.

 + Restructured some class code to reduce executable sizes in the Mystic
   binary.  The result is about 120kb smaller executable size in Windows for
   Mystic.exe.  The other versions should see similar results.

 ! Mystic was not properly parsing long filenames with spaces in them during
   external file transfer.

 ! Mystic was not properly setting the "Transfering files" node status when
   executing transfer protocols.

 + Mystic now has internal Zmodem protocol.  To enable it, just use the
   @ZMODEM text for the send/receive commands in the Protocol editor, and
   Mystic will do the rest.  The Zmodem has been tested extensively with
   the following clients.  The current status is as follows:

      mTelnet       Windows         Downloads and Uploads successful
      SEXYZ         Windows         Downloads and uploads successful
      NetRunner     Windows/Linux   Downloads and uploads successful
      ZOC           Windows         Downloads and uploads successful
      SyncTerm      Windows/Linux   Downloads ok, uploads fail
      Qodem         Linux           Downloads ok, Upload Qodem segfault
      HyperTerminal Windows         Nothing works (ever) with this terminal

 + The file directory editor is now available in the standard file listing.
   In the past it only worked in the lightbar file listing.  Whoops.  The
   hotkey is E if you have SysOp access.

 ! File list downloader was not properly allowing a download after the list
   was created.

 + File list compiler now only adds the filebase header/footer to the list
   if the filebase has files listed.

 + File list compiler now uses megabytes instead of kilobytes in the file
   base summary footer.

 + MIS and MYSTIC now switch ownership to the group/user who owns each
   binary upon startup on Unix-based systems.  MIS waits until after it
   binds the ports, so if it is SUDO started, it can listen on ports less
   than 1024 while not running as a root application/daemon.

 + Display files can now be aborted with the SPACE bar during transmission. I
   may remove this feature if people do not like it.

 + New MCI code AO turns off display file aborting within the current display
   file.

 ! The date shown in the message base header while reading messages should
   now properly display in the user's configured date format.  In the past
   it was always MM/DD/YY format.

 ! Mystic was converting the passed hostname to all upper case.  This is no
   longer the case.

 ! Mystic was converting the passed MPL program (from command line) to all
   upper case.  This caused the Unix versions to fail to execute the MPL
   program and exit.

 + MIDE now has a mide.ini configuration file.  This file is in the .INI file
   format and allows various things such as auto indent, tab space, screen
   mode (25 or 50 line) and others to be defined.

 + MIDE now has a "Run" option which will compile and execute the current
   MPL program without logging into Mystic itself.  You will need to set up
   the options with mide.ini in order for this to work.  See the default
   mide.ini for more information.

 ! Posts made via QWK were not being counted in the BBS history.

 + Mystic now supports QWK control posts.  This means that with modern QWK
   readers you can add/drop message bases that are included in your packet
   from within the offline reader.

   If the reader does not support that feature, you can post a message in
   your reader to "MYSTICQWK" with the subject of either "ADD" or "DROP" in
   the message base in which you want to add or drop from your QWK packets.

   Tested with MultiMail

 + Mystic now supports the QWKE extension for offline mail.  What does this
   mean?  Well it means first off that the 12 character message base name
   limitation is completely gone.  Mystic will now generate the full base
   name with MCI codes stripped in QWKE packets.  It also means that the
   25 character limitation on From, To, and Subject fields is gone.

   In addition, it opens up room for future enhancements such as offline
   file requests, and the ability to maintain master file lists / new file
   lists, as well as setting lastread pointers from within the offline
   reader.  And file attachments, and and...

   A new menu command (OE) has been added to download a QWKE packet.  When
   uploading a .REP packet, Mystic can determine if the REP is QWK or QWKE
   so there is no need for a new upload menu command.

 + Given the new changes, Mystic now includes ALL message bases in QWK
   packets regardless of if it is in the QWK scan settings.  Mystic will
   NOT send any messages if you are not subscribed to the message base, but
   it should still appear in the offline reader.  This is changed so that
   users can add/drop message bases.

 - Menu passwords have been removed from the menu flags.  If you want to
   password protect your menus you can do the same thing by using the -P
   and FIRSTCMD options on your menus.

 + Mystic should now be able to recognize FILE_ID.DIZ on Unix platforms
   regardless of the casing, just as long as the archive program is able to
   extract it.  MUTIL mass upload should also work like this now.

 + Mystic should now be able to recognize TODOOR.EXT files from QWKE packets
   regardless of their file casing, just as long as the archive utility is
   able to extract it.

 + Added syntax highlighting back into MIDE, however it does not and probably
   will not support block comment highlighting.  Just use the single line
   // comments if you like syntax highlighting.  The highlighting can be
   turned on/off via mide.ini by adding this option under "[General]":

      ; do syntax highlighting (note does not support block comments)
      ; and is substancially slower in screen updates
      syntax_highlight = true

   In addition, colors can be configured for the source code editor text:

      [Colors]

      ; syntax highlighting colors (text attributes 0-255)
      ; attribute = foreground_color + background_color * 16
      ; foreground is 0-15 and background is 0-7

      syn_normal  = 30
      syn_keyword = 31
      syn_string  = 27
      syn_number  = 19
      syn_comment = 23
      syn_hex     = 28
      syn_charnum = 27

 ! Fixed a bug that could cause viewing files from within an archive to
   fail.

 + MUTIL now has the ability to import FILES.BBS files automatically.  In
   addition, if MUTIL detects that a file already exists, but has a
   different file size, it will update the existing record and description.
   This is for people who are using it for networked file bases and TIC.
   See MUTIL.CFG file for more information.

 + When importing FILE_ID.DIZ, Mystic will attempt to use its internal
   archive viewing capabilities to find the "casing" of the FILE_ID.DIZ file.
   If it finds one it will pass the exact casing to the configured archive.

 ! Fixed a bug where Mystic would not detect and use its internal archive
   viewing for LZH files with a different file extension (ie .LHA files from
   an Amiga, for example).  Mystic will now properly internally view LHA
   extensions, as well as properly look for LHA in the archive configuration.

 ! Fixed a bug when viewing an archive that could cause the lightbar file
   list display to not get redrawn after.

 ! Duplicate IP check in MIS was not working properly.  It is now.

 + MIS telnet in Windows now has an option to hide node windows.

 + Added a new utility called NodeSpy.  This utility will allow you to
   monitor active nodes, snoop, kick, chat with users, etc.

 ! Mystic was not properly creating BBS history database if it did not
   already exist.

 + MIDE now uses CTRL+K and CTRL+U to cut and paste text, similar to
   Pico/Nano-like Unix text editors.

 + Mystic now tracks calls by the hour in its BBS history database.

 + Added USAGE.MPS to the default installation.  This currently shows a
   weekly and monthly usage graph calculated based on the number of calls.

 ! Fixed a bug which could sometimes cause a node to get disconnected just
   after MIS answered the all in Windows.

 + If the user has zero downloads and uploads, Mystic will now allow them to
   transfer one file for "free" (either a download or an upload) before the
   ratio tracking comes into play.

 ! Sysop chat hours now function as expected.  This was broken somewhere
   around the 1.09 era.

 ! Fixed bugs with MIS calculating the wrong node number if a user was
   logged in locally in Windows.

 + Mystic in non-Unix will now assign an available node number automatically
   similar to how it works in a Unix environment.  This will help prevent
   a person from accidentally logging into a node that is being used during
   a local login.

 + Mystic now sends IAC_DO_BINARY as part of the starting telnet negotiations
   done by MIS.  This will help fix some weird issues with Linux/OSX default
   telnet command line client.

 + In MPL including a file has been changed to its own keyword as opposed to
   mimicing a compile directive.  All MPL programs for 1.10 must be updated
   if INCLUDE files are used:

      Old: {$include myfile.mps}
      New: include myfile.mps

 + Added an hourly usage graph to usage.mps.

 ! MUTIL FILEBONE import was not adding the trailing slash when generating a
   file path.

 + MUTIL now has an option to generate an allfiles list which contains a
   listing of all files from each filebase in one text file.

   The functionality if there, but its not very configurable yet.  If
   anyone has suggestions please let me know.

 + Added 3 new MPL functions: MsgEditor, MsgEditSet, MsgEditGet.  These allow
   access to the internal Mystic msg editor (line and/or full) from within
   MPL.  It even allows you to define wrap position and template to completely
   make it look like its not the Mystic editor!

   As a little hint the MsgEditSet and MsgEditGet stuff could be used to post
   process message text on posts.  Like say for example you wanted to write
   a MPL that allows users to add Tag lines, you could do that by replacing
   the "Saving message..." prompt and using those two in order to modify the
   text before it is saved by Mystic!

   Rather than trying to explain it all, here is an example of all 3:

     Var
       Lines    : Integer = 0;
       WrapPos  : Integer = 79;
       MaxLines : Integer = 200;
       Forced   : Boolean = False;
       Template : String  = 'ansiedit';
       Subject  : String  = 'My subject';
       Count    : Integer;
     Begin
       MsgEditSet (1, 'this is line 1');
       MsgEditSet (2, 'this is line 2!');

       Lines := 2;

       SetPromptInfo(1, 'MsgTo');  // if template uses &1 for "To:" display

       If MsgEditor(0, Lines, WrapPos, MaxLines, Forced, Template, Subject) Then Begin
         WriteLn('User selected to save.');
         WriteLn('There are ' + Int2Str(Lines) + ' of text in buffer:');

         For Count := 1 to Lines Do
           WriteLn(MsgEditGet(Count));

         Pause;
       End Else Begin
         WriteLn('User aborted the edit.');

         Pause;
       End
     End

 ! Fixed a bug in the internal LHA archive viewing that could cause the last
   file in the archive to get corrupted during the view, if the file had
   comments (and was created on an Amiga?)

 + CTRL-Z and [ESCAPE] now both bring up the full screen editor prompt to
   save, etc.  I did a lot of research with old softwares and editors, and
   found this approach to be the common ground between everything ever. :)

 + Revampped message quoting a little bit.  Quoted text will now be auto
   reformatted if adding the initials would cut off text in the original
   message EXCEPT when quoting quoted text.

   Quote initials will always be 2 characters now.  In an effort to better
   "standardize" quoting: If the User handle has a single word handle, Mystic
   will now use the first two letters of their name instead of one.

 ! Fixed a bug that could corrupt a message and/or crash when editing a
   message with a lot of lines.

 + New option: "Ask Theme" in the General Settings.  If this is set to true
   Mystic will prompt the user to select a theme after the graphics are
   detected upon each connection.

 + Added new MPL function: Real2Str this takes a string and decimal place
   value.  Example:

      Var
        R : Real;
      Begin
        R := 1234.1234;
        WriteLn (Real2Str(R, 2));  // Will print 1234.12
      End

 + The GE menu command (edit user settings) option 14 (select theme) can now
   have an option which specifies the base filename of a theme.  For example
   if the theme filename is "english" you can do:

      Menu command: GE
              Data: 14 english

   This will cause the theme to be selected automatically, without prompting
   the user for anything.  If a second parameter is not supplied, the user
   will be prompted to select a theme as usual.

 + Copy/Paste is now added/fixed for menu commands and menu execution lists
   in the new menu editor.

 + NodeSpy in Windows now uses OS named pipes instead of Disk I/O.

 + NodeSpy in Unix now uses OS named pipes instead of Disk I/O.

 + NodeSpy now has a full blown telnet client, which replaces the "local
   login" feature.  Instead, the default the phone book will contain an entry
   for "local login" which telnets to localhost.

 + NodeSpy now defaults "Auto Snoop" to OFF.  Auto Snoop will automatically
   start snooping a node upon connection if it is the only active
   connection.  To enable this, create an nodespy.ini file in the same
   directory as the NodeSpy and add this content:

      [General]
         autosnoop=1

 + Renamed the default mutil.cfg to mutil.ini since it is indeed an INI
   format file.  This is just in case someone has .ini files associated with
   an editor on their OS.  EXISTING USERS WILL NEED TO RENAME MUTIL.CFG TO
   MUTIL.INI unless you are supplying the filename on the command line.

 + Added logging into MUTIL.  Add the following crap below into the
   [GENERAL] section of your configutation files if you want to use it.  If
   you would like some things logged that are not please let me know, and
   vice versa.  Anyway, from the new default mutil.ini:

      ; Logging option.  If no directory is specified in the logfile
      ; name, mUtil will attempt to use the configured LOGS directory from
      ; in Mystic's configuration.  To disable logging, leave the logfile
      ; option commented out or set to a blank value.

      logfile=mutil.log

      ; Level 1 = basic process logging
      ; Level 2 = verbose

      loglevel=1

   An example of loglevel=1 logging for mUtil configured for a single
   process (mass upload) follows.  I haven't tested the logging with all
   processes to get them where I want them, so please give feedback if you
   have something to suggest! :)

      + 09/24/12 23:11 Startup using mutil.ini
      + 09/24/12 23:11 Process: Mass Upload Files
      + 09/24/12 23:11    Add: mbbs_104.zip To: New File Base
      + 09/24/12 23:11    Add: SPOT1_3B.LHA To: New File Base
      + 09/24/12 23:11 Result: Uploaded 2 file(s)
      + 09/24/12 23:11 Shutdown

 + MUTIL now has a message purge function.  This function will go through
   all of the messages in all message bases and delete any messages that do
   not meet the "Age" or "Max Messages" settings for each message base.

   To use this function simply add the following into your [GENERAL] header
   of your mUtil .INI configuration file(s):

   	  PurgeMessageBases  = true

 ! MBBSUTIL -UKILL was not working properly.

 ! MBBSUTIL BBS list packer was not working properly when checking
   verification days.

 + MUTIL now has a message posting function.  This function can post any
   number of text files to a message base, including echomail and netmail
   bases.  It will also split large posts into multple messages - allowing
   up to 10,000 line text files to be posted.  To enable, add this to your
   [GENERAL] section of your mUtil .INI configuration files:

      PostTextFiles = true

   Then add the [PostTextFiles] section from the default mutil.ini from a
   new install.

 + The Toggle New Scan and Toggle QWK Scan menu commands now allow an optional
   /ALLGROUP in the optional data.  If this is supplied it will show all bases
   in all groups.  By default it only shows current group only.

 - Removed MYSTPACK from Mystic BBS distribution.  Do not use this anymore.

 + Added a message base packer and renumber option to mUtil.  This replaces
   MYSTPACK with the bonus that it also works with Squish (and appears to not
   be as buggy as MYSTPACK).  I would suggest doing a backup of your message
   bases as a precaution before running this for the first time, just in case
   there are problems.

 + Added Global Message Base editor into the Message base editor.  Use the
   TAB key when in the Message base list to tag areas that you'd like to set
   global values for.  Then use /G to open the editor.  Set the options you'd
   like to change to "Yes" and then set the value for that option.  Press
   CTRL-U when ready to update all tagged bases with the selected values.

 + When scanning results of a "DSZ-logged" file transfer, Mystic will now
   ignore filename casing in Unix environments.  I believe this might
   help reduce problems with QWK .REP uploading.

   <ALPHA 21 RELEASED>
   

1.10 Alpha 22


 + Added Message base sorting.  Use TAB to select a range of bases to sort
   and then use Sort from the command menu.  Ranges of bases can be sorted
   by base Name, FileName, or Network that they belong to.

 ! Fixed a bug where /ADDR: option was not properly being parsed when
   supplied as optional data MP menu command.

 ! The Copy/Paste in the message base editor was not properly generating a
   permanent index for the pasted message base.

 ! Fixed a problem with MIS and Windows that caused port scanners to create
   a ghost node.
   
 ! I accidentally overwrote my HISTORY file while preparing the Alpha 22
   release, so I am missing some stuff here.

 + I will now track changes per-alpha in the history file.  Each version of
   Mystic will now come with a HISTORY.TXT which contains the history of
   Mystic changes for all previous releases.  WHATSNEW.TXT will contain only
   the latest release changes for that version with a marking to denote when
   a new alpha was released.

 + The installation program will now have the option to view the history of
   changes with Mystic BBS, or just the WHATSNEW for the latest major version
   release.

 + The installation program will now highlight major and alpha releases in a
   different color while viewing the history or the whatsnew.

   <ALPHA 22 RELEASED>

1.10 Alpha 23

 + Added the network that a message base belongs to into the list of message
   bases in the configuration editor.

 ! Fixed an issue with inserting records in the message base editor where it
   would copy the record before it, instead of creating a fresh entry.

 ! Fixed an issue with inserting records in the file base editor where it
   would copy the record before it, instead of creating a fresh entry.

 + NodeSpy now has a 1000 line scrollback when connecting via telnet using
   it's terminal mode.  Press Alt-B when connected and you will get a nice
   status line/scrollback of up to 1000 lines!

 + Prompt editor now has a prompt simulator if you press ENTER while editing
   a prompt.

 + NodeSpy's phone book now allows directory searching similar to other
   Mystic editors.  Just type away and it will search on the fly.

 ! Fixed a bug during list box searches that would cause the search string
   to not get updated.

 + Mystic will now set the window title to "Mystic Configuration" when
   started in configuration mode (-cfg)

 + New MPL fuction: Function ABS (Num: LongInt) : LongInt;  This value takes
   a signed integer and returns the absolute value.  All MPL programs must be
   recompiled.

 + New menu command: GV.  This uses an ANSI full screen file viewer which is
   capable of extracting SAUCE info and also parsing ANSI/pipe display files.
   The format of the optional data is as follows:

      <template name>;<placeholder>;<filename>;<END optional>

   Examples:

     Optional data: ansiviewer;dummy;prelogon
     Optional data: ansiviewer;dummy;prelogon;end

   If ;END is added at the end, the viewer will start viewing at the END of
   the file instead of at the top of it.

   An example ansiviewer.ans template is now included with the default
   installation and has the following new MCI codes used:

   Optional:
     &1 = Display file name (excluding directories)
     &2 = File title (from SAUCE)
     &3 = File author (from SAUCE)
     &4 = File group (from SAUCE)

   Required:
     !1 = Specifies the first line (row) of the file viewing display window
     !2 = Specifies the last line (row) of the file viewing display window

   If you want to use the File Viewer percentage bar from the theme's
   configuration you will need to add these two Screen Info codes as well:

     !3 = Specifies the X/Y location of the File Viewer percentage bar
     !4 = Specifies the X/Y location and attribute of the percentage number

 + The ANSI art gallery now by default uses the full screen ANSI file viewer
   to display ANSI files.

   A new template has been added called "ansigalv" which will be used to
   display files and uses the same template format as the ansiviewer (GV)
   menu command template.

   If you would like to continue NOT use the full screen viewer you can
   specify the speed and DISPLAY option on the optional data of the menu
   command:

     Example using full screen viewer:

       Optional data: <directory>
       Optional data: /mygallery/

     Example using the old display type with display speed option:

       Optional data: <directory>;<speed>;DISPLAY
       Optional data: /mygallery;85;DISPLAY

 ! Fixed improper message date generation in NTTP server.

 + NNTP server now reports the raw message number as the MsgID which seems to
   increase compatibility with certain readers.  In the future this should be
   changed to truely unique MsgIDs if possible.

 ! Fixed an issue where message base permanent indexes were not properly
   being generated.

 ! Fixed an issue where file base permanent indexes were not properly being
   generated.

 + Message base records now contain the date the message base was created.

 + Added new function to MBBSUTIL: -FIXINDEX.  This function will go through
   all message and file bases and make sure that the indexes are unique, and
   if they are not it will make them unique.

   It will also check to make sure the "creation date" of each base is set to
   a valid date.  If it is not, it will set it to the current date.

   This needs to be ran once after upgrading to this alpha due to some prior
   bugs.

   <ALPHA 23 RELEASED>

1.10 Alpha 24

 ! Fixed a bug with the telnet protocol negotiation which was causing Zmodem
   uploads from SyncTerm to fail.

 ! Fixed a few additional internal Zmodem related bugs

 ! Fixed a bug in the file base editor where a file was left open, causing
   Mystic to eventually crash.

 + NodeSpy's telnet client now has the option to ALT-H to disconnect.

 + NodeSpy's telnet client now has a built in Zmodem upload and download. The
   default download/upload directory can be defined in nodespy.ini in the
   [General] section as transfer_dir.  If nothing is defined, NodeSpy will use
   the current directory.

 + NodeSpy telnet client can optionally automatically start Zmodem downloads
   and uploads.  This option can be disabled in the .ini file:

      [General]
        auto_zmodem = true

   <ALPHA 24 RELEASED>

1.10 Alpha 25

! NodeSpy's telnet client was saving the phone directory in the wrong
   directory after a Zmodem upload was completed.

 ! The internal RAR archive viewer was not working when a .RAR file had a
   comment in the file.

 ! Fixed an issue with the minimum upload space check in Linux.

 + Mystic can now view archives within an archive instead of just text files.
   So for example if you have MYZIP.ZIP and inside that file there is another
   ZIP/LZH/LHA/ARJ/RAR file, you can View it's contents using the (V)iew
   command.  If the file you've entered is not a valid archive, it will try
   to display it as a text file as it has in the past.

 ! Fixed an issue with the previous page command in the standard file
   listing, where it could sometimes show the file uploader text before the
   actual filename text.

 ! More Zmodem upload fixes with SyncTerm.

 ! Closing a node window in Windows should no longer create a ghost user
   on the node.

 + Added Zmodem 8K (ZEDZAP) internal protocol.  You can use the Send/Recv
   command of "@zmodem8" to use it.  Updated the protocol definitions for
   the default install to include ZEDZAP, and to also disable SEXYZ
   protocols by default.

 + NodeSpy's telnet client will now switch to ZEDZAP (Zmodem 8K) during
   Zmodem download if the sender supports it.

 + When reading messages in the normal message reader, you can now just type
   a message number on the prompt to automatically jump to that message.

   <ALPHA 25 RELEASED>

1.10 Alpha 26

! After doing a list of message in the standard message reader, the
   current message number on the prompt will no longer show the wrong
   message number.

 + Added two MCI codes to prompt #44: &1 total files in base &2 last listed
   file number.

 + In a standard generated menu you can now set the "display columns" to
   zero which will cause the generated menu to only show the menu prompt.

 + Added new menu command: -G.  This command shows the currently loaded
   internally generated menu.  The optional data field will determine the
   number of display columns to use to format the menu.  The -G command does
   not display the menu prompt or execute "EVERY" menu commands.

 + Added a new menu type that can be created in the menu editor.  You can
   now set a "Lightbar/Prompt" type menu, which will allow you to create
   menus similar to the old Searchlight style with a lightbar prompt.  Users
   can scroll through commands with the arrow keys or also search by simply
   typing in letters.  Our version supports commands with hotkeys that
   contain more than one character among other things that Searchlight
   didn't do.

   If the user has hotkeys enabled, or the menu forces hotkeys, the command
   will be executed as soon as a match of a hotkey is inputted from the user.

   If the user has hotkeys disabled, or the menu forces longkeys, then the
   user will always have to press enter to execute the selected command.

   Each menu item is created similar to a standard type menu, with the the
   following changes:

      1. The "Lightbar Hi" text contains the look of the selected lightbar
         command.  The location prompt will be generated where the cursor
         is after the menu prompt is displayed.

      2. The "Lightbar Lo" text contains the description that will be
         displayed below the currently selected command.  If this is blank
         the extended description will not be used.

         The description will automatically be aligned below the lightbar
         command, unless the "X" value of the command is defined.  If the X
         is not equal to 0, Mystic will print the description at that X
         column instead.

   A new menu has been included with the default installation called
   testlbprompt.mnu.  Please use this to experiment with these types of
   menus if it interests you.

 + The smart input used by the standard message base reader to jump between
   messages now creates an input field according to the selected theme.  You
   can of course turn it off for specific prompts using the IF MCI code if
   you don't like it.

 + The message base change command now uses the smart input function for
   input while prompting to select a message base.

 + The message group change command now uses the smart input function for
   input while prompting to select a message group.

 + The file base change command now uses the smart input function for input
   while prompting to select a file base.

 + The file group change command now uses the smart input function for input
   while prompting to select a file group.

 + Rewrote the file tagging system in the standard file listing.  The old
   way still works, by pressing F to flag a file.  However, you can now
   just type in the file number to add or remove a file from your batch
   queue without every pressing the F key.

 + The F flag command now uses smart input when prompting for the file number
   to add/remove from queue (in standard file listing)

 + The V view command now uses smart input when prompting for the file number
   to view in the standard file listing.

 + Sending a node message will now use the smart input function when
   prompting for the node number.

 + Paging a user for user/user chat now uses the smart input function.

 + When selecting "Forward" reading, Mystic now uses the smart input
   function to prompt for the message start number.

 + Rewrote the message move and fowarding functions.  Both now make use of
   compressed message base numbers when selecting the target message base,
   and they both now use smart input.

 ! Fixed a bug which could cause a crash after moving a message while doing
   a newscan of message bases.

 + Added sorting to the file bases configuration editor.  Use TAB to mark
   and /S to sort just like message bases.

 ! Fixed a bug when editing prompts using the theme editor when performing
   a search.

 ! The Menu editor was not properly using the theme selected when it was
   started.

 ! According to a document I saw, the ANSI-BBS C function to move the cursor
   should hard stop at 80.  Mystic's ANSI parser wraps to the next line which
   I think was added in a while back to increase ANSI compatibility.  For
   now I changed it back to follow what this standard document is claiming.

 + If a message bases's data files actually exist, for but some reason the
   highest message number is 0 (ie everything has been deleted), Mystic will
   now display the "There are no messages in this base" prompt when reading.

 + When downloading a file or a batch, Mystic will now ask the user if they
   would like to disconnect after the transfer.  Replace two prompts in your
   language file:

      ; Disconnect after download?
      066 |CR|12Disconnect after file transfer? |11

      ; Disconneting in 10 seconds, press a key to abort
      067 |CR|09Disconnecting in 10 seconds: Press a key to abort.

 ! Mystic wasn't properly checking the message base "auto signature" setting
   before adding in the user's auto signature.

 + Mystic will now ignore the group membership contraints in the ACS string
   when using the MW (write email) menu command.

 + Mystic now has an ACS setting to "see offline" files in the file bases.
   This setting is found in System Config -> File Base Settings.

 + If you select the I (Ignore all messages) option while reading message
   bases, Mystic will now ask you if you want to remove the base from your
   new message scan.  Two new prompts go along with this:

      ; Normal msg reader: Remove from newscan? (after I command)
      494 |CR|12Remove |15|MB |12from message newscan? |XX

      ; Lightbar msg reader: Remove from newscan (after I command)
      495 |CR|12Remove |15|MB |12from message newscan? |XX

 ! MBBSUTIL -NOCHECK option was not bypassing the online user check.

 ! MBBSUTIL -FCHECK was not properly marking some files OFFLINE when they
   should have been.

 + MBBSUTIL -FCHECK now has an optional command after it which will cause
   missing files to be removed from the file listing, instead of marked
   offline. Add KILL after fcheck to enable this function:

      mbbsutil -fcheck kill

   <ALPHA 26 RELEASED>

1.10 Alpha 27

! MPL WordGet will now trim spaces off the beginning of the string, but only
   when space is used as a word separator.  When something other than a
   space is used, it will not trim anything.  This fixes a problem that
   could cause the result to be incorrect when using non-space separators.

 + Mystic now has a node address lookup option when sending NetMail.  This
   search allows wildcard search by address, or text seaching of the BBS
   name, SysOp name, location, phone and Internet address.  In addition, it
   also has functions to list zones and specific nets within a zone, rather
   than just nodes themselves.

   To enable this feature, simply copy a raw FTN-style nodelist into the
   data directory and name it "nodelist.txt".  Mystic is using raw uncompiled
   nodelists.  The reason for this is due to a lack of nodelist compilers,
   standards that are behind the times, and when combined with faster CPUs
   and shrinking nodelist size it seems to make the most sense.

   A new display file called "nodesearch.xxx" will be displayed if it exists
   before the netmail address prompt, and when the user selects ?/help at the
   prompt.  A nodesearch.asc file has been included in the new default
   install.

   The following new prompts must be added:

      ; Netmail send address prompt with active nodelist searching
      496 |CR|09Enter netmail address or search criteria (|10?|09/|10Help|09): |11

      ; Nodelist browser prompt
      497 |CR|09Enter nodelist search criteria (|10?|09/|10Help|09): |11

      ; Nodelist search results header
      498 |CR|15Node         System Name                Location           SysOp               |CR|09============ ========================== ================== ====================

      ; Node list search results
      ; &1=addr  &2=bbsname  &3=location  &4=sysop  &5=phone  &6=internet
      499 |10|$R12|&1 |15|$R26|&2 |11|$R18|&3 |09|$R20|&4

      ; Node list single result
      500 |CR|03    Address: |14|&1|CR|03System Name: |11|&2|CR|03   Location: |11|&3|CR|03   Operator: |11|&4|CR|03      Phone: |11|&5|CR|03   Internet: |11|&6

      ; Node list search  "found X matches"  &1=# of matches
      501 |CR|03Found |11|&1 |03matches.

      ; Netmail send confirmation
      ; &1=addr  &2=bbsname  &3=location  &4=sysop  &5=phone  &6=internet  &7=to
      502 |CR|12Send netmail to |15|&7|07 at |15|&1|12? |11

 ! Fixed a bug with internal Zmodem uploads which would cause the upload to
   not be detected by Mystic.

 + After uploading a QWK .REP reply packet, Mystic will now display some
   basic statistics of messages posted, or of failed imports.  A new prompt
   must be added to go with this:

      ; QWK .REP complete/results prompt
      ; &1=msgs imported  &2=msgs failed  &3=bases added to scan  &4=bases removed
      503 |10SUCCESS|01.|CR|CR|11- |03Posted |11|&1 |03new messages (|11|&2 |03failed)|CR|11- |03Added |11|&3 |03bases to new scan (|11|&4 |03removed).|CR|CR|PA

 + Added new menu command ML (Nodelist Browser).  This kicks off the new
   nodelist browser, just in case someone would like to use it outside of
   sending a netmail.

 + Complete rewrote the MIS telnet server for Unix platforms.  It should be
   much faster now.  There is no reason not to use MIS now at all and you
   should switch to it as soon as possible - at least if you want to take
   advantage of future features that will require MIS (new event system, FTN
   mailer and tosser, etc).

 ! Fixed all known issues with MIS and STDIO redirection.  DOSEMU works
   great now, and is pretty easy to setup.  Check the new section in the
   Linux installation document for a tutorial on how to set up a DOS door
   in DOSEMU with Mystic!

   <ALPHA 27 RELEASED>

1.10 Alpha 28

 + Added a new function to MUTIL called ImportMessageBase.  This function
   will scan the configured Message Base directory for existance of either
   JAM or Squish datafiles.  For each message base MUTIL finds, it will
   create a Message Base in Mystic if one does not already exist.

   You must add "Import_MessageBase = true" to your GENERAL header in
   mutil.ini, and then configure the template message base settings for
   newly created bases in a [ImportMessageBase] section.  See the default
   MUTIL.INI for an example.

 + E-mail messages are now included in QWK packets.

 + Added additional support for the QWKE packets.  Mystic will now generate
   the appropriate QWKE data to tell the reader if the message base is
   public or private, if reading is forced, if real names or handles should
   be used, and whether or not they have access to post/reply to the area.

 + Rewrote the status bar on the local console (in Windows) to use the color
   values set in the configuration.

 + Message QuickScan (MQ) menu command now has two new options:

      /YOU - Only show base if it has messages address to you
      /NEW - Only show base if it has new messages

 ! Fixed a bug which caused the nodelist text search to not work.

 + The "startup" MPL program that is executed if it exists after ANSI
   detection and theme assignment can now set the user login and password
   to bypass the internal login functions.  You must set to two variables:

      UserLoginName
      UserLoginPW

   So for example if I had a startup.mpx that simply did this:

      Begin
        UserLoginName := 'g00r00';
        UserLoginPW   := 'mypassword';
      End;

   It would automatically log in as g00r00 and bypass the normal login/pw
   stuff.  This combined with newuserapp.mpx allows you to completely
   rewrite login and newuser functions in MPL if you'd like to.

 + The Read Messages menu command (MR) now has the option to pass /NOLR
   in the optional data.  If this is found, Mystic will not update the
   users last read pointers after reading.

   You MUST still supply the read type as the first character.  So for
   example:

           Command: MR
     Optional data: Y /NOLR

   Would read all messages addressed specifically to that user, but would
   not set their last read pointers.

 + The Message New Scan (MN) now has the option to supply /NOLR which will
   cause the users last read pointers to NOT get updated during this
   message scan.

 + New Menu Command -R will set the value of the "OK" acs flag.  The
   optional data of 0 will set the OK flag to return false, or 1 will set
   it to return true.

 + New ACS function: ON.  This returns true if the last performed message
   "Quick scan" found new messages or if the last performed Email check
   found unread emails.

 + New ACS function: OY.  This returns true if the last performed message
   "Quick scan" found new messages addressed to the user.

 + The Message New Scan (MN) now has the option to supply /NOFROM which
   will skip over any messages FROM the user.  This works in ALL reading
   modes.

 + The Read Messages (MR) now has the option to supply /NOFROM which
   will skip over any messages FROM the user.  This works in ALL reading
   modes.

 + The Message Quick Scan (MQ) command now has the option to supply
   /NOFROM which will not count any messages FROM the user in the scan.

 + Added a new menu "personalscan.mnu" into the default install menu
   directory which demonstrates many of the new message reading/scanning
   functions.

 - MPL GetMBaseStats has changed in a few ways.  First, it has been renamed
   to "getmbstats" and now has two additional parameters:

      #1: Message base number
      #2: Exclude messages FROM the current user in stats? T/F
      #3: Exclude personal messages that have already been read?  T/F
      #4: Total messages (this is a VAR parameter)
      #5: New messages (this is a VAR parameter)
      #6: New messages to you (this is a VAR parameter)

 + Mystic now tracks if ANY message (public or private) has been read by
   the user the message is addressed to.  You MUST replace your old
   message header flags prompt with the new one to include the received
   flag at the end:

      ; Msg header flags text one word each separated by a space
      ; 1=Local 2=Echo 3=Private 4=Sent 5=Delete 6=Received
      490 Local Echo Private Sent Deleted Rcvd

 ! Fixed a bug that could cause private messages to not be marked as private
   when uploading a QWKE REP packet.

 + Two new prompt info codes added to prompt #127 (read email? prompt):

     &1 = number of emails
     &2 = number of unread emails

   In addition, the Yes/No prompt defaults to NO if they do not have any
   unread emails, or YES if they do.

 + The Read Messages command (RM) now allows for the option /NOREAD which
   will skip over any message marked as received.  A received message is
   classified as a message addressed to the current user that has already
   been read.

 + The Message New Scan (MN) command now allows for the /NOREAD option.

 + The QuickScan command (MQ) now allows for the /NOREAD option.

 - Removed QuickScan header prompt and /NOHEAD option.  It was pointless and
   could easily be done in a menu if yo someone wanted it.

 + Added prompts that will be displayed when setting the last read pointer
   within the message readers.  The two new prompts are:

      ; Standard message reader: Lastread pointer set &1 = msg number
      504 |CR|11Last read pointer has been set to message number |&1.|CR|CR|PA

      ; Lightbar reader: Lastread pointer set &1 = msg number
      505 |CR|11Last read pointer has been set to message number |&1.|CR|CR|PA

 + Added a /LIST option to the QuickScan which will list out messages based
   on the options presented.  The following new prompts need to be added:

      ; QuickScan message list header    &2=basename
      506 |15From            Base                 Subject|CR|09=============== ==================== ==========================================

      ; QuickScan message list middle
      ; &1=msg#  &2=basename  &3=from  &4=to  &5=subject  &6=date

      507 |10|$R15|&3 |09|$R20|&2 |11|$R42|&5
      ; QuicScan message list footer

      508 |09|$D79=|CR

   <ALPHA 28 RELEASED>

1.10 Alpha 29

 + Prompt #490 has been changed to separate message header flags by comma
   instead of space.  This allows the ability to completely exclude certain
   flags (ie if you never want a Local flag you can just remove it and leave
   the comma)

     ; Msg header flags text one word each separated by a comma
     ; 1=Local 2=Echo 3=Private 4=Sent 5=Delete, 6=Received
     490 Local,Echo,Private,Sent,Deleted,Read

 ! Echo flag was not displaying correctly in the message headers.

 ! Fixed a bug in the ANSI file viewer which was causing garbled ANSIs
   in the gallery and the viewer.

 ! Fixed a bug in the ANSI file viewer that could be caused by falsely
   recognizing pipe codes when they were not.

 + Pressing the SPACE bar in the ANSI viewer now displays the file
   "normally" with a screenpause at the end.

 + The ansi viewer now has a help file option.  The format of the optional
   data has changed for the GV menu command so you will need to change it
   if you are using it.

      <template><helpfile><displayspeed><filename>

      IE:
        Command: GV
           Data: ansiviewer;ansivhelp;0;myansi

 ! Fixed a bug in Zmodem that could cause a locked node if carrier was
   dropped at a certain point during Zmodem upload initialization.

 + Added a different type of line check into the ANSI parsers.  If a line
   ends with a linefeed but didn't have carrage return before it (as is
   standard), Mystic will now add the carrage return.  This is an attempt to
   auto-correct ANSI files that are incorrectly saved in Unix.

 ! Fixed a bug with pipe color code parsing in the ANSI viewer (GV)

 ! The ANSI art gallery would crash if the directory passed to it did not
   exist.

 + Mystic now allows the column size to be defined within a theme.  Valid
   values are 40 or 80 columns.

 + Mystic will now perform text wrapping in the message editors based on
   the select theme's column size.

 + Abbreviated Mystic's copyright notice upon connect to display within a
   40 column terminal.

 + Rearranged the built in message header a little bit to allow more space
   for message flags.  Moved the date to the right side and the status
   flags to the left side.

 ! Fixed a random weird bug in the Matrix login that I don't feel like
   explaining. :)

 + Added a new MPL function called OneKeyRange.  This function works similar
   to OneKey, except that it will also allow for a number input within a
   certain range.  The number value is stored in a variable called
   RangeValue and the function returns a #0 if a number was entered.  For
   example:

     Var
       Ch : Char;
     Begin
       Write ('Enter letters A-G or a number between 1-50: ');

       Ch := OneKeyRange('ABCDEFG', 1, 50);

       If Ch = #0 Then
         WriteLn ('You entered a number: ' + Int2Str(RangeValue))
       Else
         WriteLn ('You entered character: ' + Ch);
     End.

 + MPL errors when executing a MPX module are now logged in the SYSOP logs

   <ALPHA 29 RELEASED>

1.10 Alpha 30

 + Added new INBOUND and OUTBOUND echomail directories into the System
   Configuration.

 + Added new Echomail node editor.  This allows you to configure nodes which
   you are going to exchange echomail from, either an uplink or downlink.  In
   addition, you can view/edit the list of message bases configured for
   export to that node.

 + Message bases now have a echomail TAG option which is intended to include
   the bases's echomail tag from .NA files.

 + Message bases now have an "Export To" option where up to 2 million
   echomail nodes can be linked to each message base.  This relationship with
   nodes can also be edited from the Echomail node editor.

 ! Fixed a bug which would cause the file to be deleted if you tried to
   move it to the new file base.  Mystic should check now and give an
   error.

 + Message base global editor now confirms the number of different settings
   you will be updating before it does.  This will help prevent people from
   claiming its buggy because they forgot to select "Yes" on a setting! :)

 + The MUTIL mass upload function now has the ability to ignore files when
   performating the mass upload.  The list can contain up to 100 ignore
   masks (supporting ? and * wildcards).  For example under your header
   for [MassUpload] you can add them:

      [MassUpload]

         ignore = files.bbs
         ignore = *.readme

 ! Fixed a bug with sending Netmail using the text file post menu command

 + Mystic will now attempt to perform AKA matching on the origin address
   of netmail messages.  If you have a netmail base configured as the address
   of 1:111/111 but you send a Netmail to 911:111/111, Mystic will switch the
   origin address to your 911 AKA (if you have one configured in Network
   addresses).

 + Message quoting will now indent itself by a single character to better
   facilitate separation from regular text.  The text will wrap and
   reformat itself so no text should be lost.

 + The full screen editor now shows a different text color for quoted text.
   The attributes are defined in the template file (ansiedit.ans).  The
   attribute of |!1 is the standard text color, and the attribute of |!2 is
   the quoted text color.

 + If you change message base's storage filename or path, Mystic will now ask
   you if you want to physically rename them on disk too upon leaving the
   base editor.

 + MUTIL now has a full binkley-style 5D echomail importer and exporter.  It
   can autocreate new bases, perform dupe checking, and push duplicate msgs
   to their own base.  All node configuration, echos, and export info comes
   from within the new editor options with Mystic's configuration.

   Please review MUTIL.INI for the two new added functions for import/export

   There are a few things left on my TODO list before I consider everything
   pretty much functional.  I have two networks setup using only Mystic and
   it is able to interact fine so far (Fido and Agora) with both Echo and
   Netmail - so it DOES work, however, please review the current TODO:

     1. Does not support exporting to point nodes.
     2. Does not properly create reply chain links when importing
     3. Netmail routing/passthrough does not exist yet.  You can only export
        netmail to a configured uplink or downlink.  This is a big issue
        when using networks like Fido that have multiple zones.
     4. Does not have the option to keep "last scanned" pointers when
        exporting mail.  This means that it searches all of your messages when
        exporting.  This doesn't effect features, just the speed of exporting
        messages.

   The basic setup is this:

      0. Set your inbound and outbound directories in the System Paths.

      1. Edit echomail message bases to set their ECHOTAG value (match
         whatever they are from the .NA definitions).  Make sure you don't
         forget to set your origin address / base type!

      2. Configure any nodes that you want to import/export echomail with
         using the Echomail Node editor.

      3. Link each message base to the node that you want to export messages
         to.  You can do this either by node (using Echomail Node editor)
         or by attaching nodes to a specific message base (using the Message
         base editor).

      4. If you want to use a base for duplicate messages, see information
         inside of MUTIL.INI

      5. If you want to auto-create message bases when a new echobase is
         found, see information inside of MUTIL.INI

      6. Turn on importing/exporting in MUTIL.INI.

      7. Set one echomail address as your PRIMARY address.  This will be
         what the root outbound directory you defined in system configuration
         will use.  When a echomail message for a non-primary address is
         found Mystic will replace the last directory with the domain and
         zone.  So for example if your root is:

            c:\mybbs\echomail\out\

         And you have Fido as your primary, a message posted to Agora net
         will be created in:

            c:\mybbs\echomail\agoranet.02e\

         The 5D BSO outbound format doesn't append to the base outbound
         directory as you would expect.  Because of this, I recommand setting
         the default outbound to include the primary address network domain.

         So for example, if you have FidoNet as your primary address, set your
         outbound directory to include the primary's domain:

            c:\mybbs\echomail\out\fidonet\

         This will mean that Mystic will then create the following using the
         above example:

            c:\mybbs\echomail\out\agoranet.02e\

         I know all of this is confusing and stupid, but I didn't create the
         standard I'm only dealing with it! :)

      8. At your own risk: Delete FastEcho, GEcho, CrashMail, etc.  :)

         NOTE that the first time you run the export function of MUTIL it may
         toss all messages in your bases, depending on what tosser you used
         before Mystic's tosser.  You can just delete all the packets in your
         outbound directory after running it the first time.  This problem will
         go away once tossing is finished.

 ! Fixed a bug that could cause the user editor to crash directly after a
   new install if you didn't create your SysOp account first.

 + The MBBSUTIL -fixindex function will now also check users for duplicate
   perm index and attempt to fix them (along with the file/msg bases).

 + Added new event editor to replace the old crappy one.  You should delete
   event*.dat from your DATA directory.  You will have to reconfigure your
   events unfortunately (as if anyone even used them ever).

 + BBS events can now be executed on specific days of the week.

 + Old Voting booth editor has been replaced with the VD menu command used
   to delete voting questions.

 + CTRL-B will now reformat paragraphs in the FS editor.

 + In the FSE the TAB key now works in insert mode meaning it will push and
   wrap text by tabstop.

 ! Forced messages were able to be aborted sometimes while using the FS
   editor and using the CTRL-A key to abort.

 + Toggling message base new scan and QWK scan can now accept commas, in
   addition to range.  For example: 1,3,7-9,15 will toggle bases
   1, 3, 7, 8, 9, and 15.

 + Toggling file base new scan can now accept commas, in addition to range.
   For example: 1,3,7-9,15 will toggle bases 1, 3, 7, 8, 9, and 15.

 + After toggling any base or range of bases, the list of bases will now
   automatically redisplay for both message, qwk, and file bases.

 ! Fixed a bug in the MPL user get functions that could cause a RTE 100.

 ! Installation will now properly create the file base directory for the
   default upload filebase.

 + Installation now creates a DOCS directory off the root installation. This
   will eventually contain documentation that hopefully doesn't suck. :)

 + Installation now creates default echomail in/out directories.

 + New program called FIDOPOLL has been added.  This will poll or send mail
   to configured echomail nodes using BINKP.  This will eventually be baked
   into MIS or MUTIL and will also include FTP echomail exchange as well as
   QWK FTP networking.  For now it just does BINKP.

   This program does NOT run as a server (daemon) so it will only poll for
   mail it will not allow nodes to connect to you to exchange mail.

   <ALPHA 30 RELEASED>

1.10 Alpha 31

+ Lots of changes to the MUTIL echomail import functions:

     1. MUTIL will now process all PKT files with no regard of message type
        (ie echo or netmail).  It should now also process PKT files that
        have a mix of each without crashing.

     2. MUTIL will now ignore the base filename of PKT files meaning it will
        attempt to process ALL incoming PKT files.  MUTIL will check the PKT
        header against the configured AKAs and if there is a match it will
        import.  If a PKT is found that is not addressed to a configured AKA
        address, MUTIL will delete it.

     3. For incoming echomail bundles, MUTIL will continue to first attempt
        to match the bundle filename to a configured echomail node, but if a
        configured node cannot be linked, it will attempt to find an archive
        signature and use that to extract the bundle.  Currently supported
        signatures are ZIP, RAR, LZH, and ARJ.

        If either a signature is found OR a link to an echomail node is found
        it will attempt to import.  Should both fail, MUTIL will no longer
        delete the bundle instead it will only log the issue.  This allows
        the issue to be resolved without loss of echomail.

        If it DOES succeed, MUTIL will process all PKT files using the same
        logic that is described in #2 above.

     4. MUTIL now reports status and percentage bars for each individual PKT
        file when tossing a bundle, rather than just the bundle itself.  In
        addition, the logging will contain both the bundle and the PKT files
        contained within it.

 ! Fixed a bug with the windows local console bleeding colors on a clear EOL
   that was introduced in A30.

 + Added the footprint for the new reply functions (reply by current base,
   email, netmail, or a selectable msg base).  These are not functional yet,
   but the internal changes have been made to allow for it.  If you notice
   wierdness during message replies let me know.

   <ALPHA 31 RELEASED>

1.10 Alpha 32

+ New option in System Config -> Message Base settings called "Forced NL
   Match".  If this is set to TRUE, Mystic will force a user who is sending
   netmail to match an address found in the nodelist.  If it is set to false
   Mystic will still allow a user to search the nodelist, but if it does
   not find a match they will still have the option to send the netmail.

 + When replying to a message, Mystic now gives the option to reply in the
   current message base, BBS email base, or by selecting a new message base.
   Four new prompts have been added for this:

      ; Message reply options (standard)
      ; &1=base name  &2=reply to name   &3=msg subject
      509 |16|CL|09|17 ° |15Message Reply |$X79 |16|CR|CR|03    Area: |11|&1|CR      |03To: |11|&2|CR|03 Subject: |11|$R65|&3|CR|CR|09Reply area (|11ENTER|09) Current, |09(|11B|09)ase, |09(|11E|09)mail, |09(|11Q|09)uit? |14

      ; Message reply options (lightbar)
      ; &1=base name  &2=reply to name   &3=msg subject
      510 |16|CL|09|17 ° |15Message Reply |$X79 |16|CR|CR|03    Area: |11|&1|CR      |03To: |11|&2|CR|03 Subject: |11|$R65|&3|CR|CR|09Reply area (|11ENTER|09) Current, |09(|11B|09)ase, |09(|11E|09)mail, |09(|11Q|09)uit? |14

      ; Message reply select base prompt
      511 |CR|09Select message base for reply [|10?|09/|10List|09]: |11

      ; Message "replying to X base" prompt   &1=base name
      512 |CR|03Posting reply message to base |11|&1|03.

 + The message jump command in both lightbar and standard message readers
   now use intelligent input for the message number.

 + MUTIL can now optionally remap incoming netmail messages by defining up to
   50 sets of mappings under [EchoImport] address.  For example:

      [EchoImport]
        forward = sysop;g00r00
        forward = system operator;g00r00

 + Netmail exporting has been rewritten and now requires routing information
   configured for each Echomail node.  The first requirement is that any
   netmail base must first be linked for export if you want it to be checked
   for routing of netmail posted in that base.

   Once linked, it must match the "Routing Info" defined for that node.  In
   general if you only have one uplink for that zone/network, you can use the
   first example below.  But if you have many uplinks for a single network it
   will of course become more complicated.

   Routing info is defined in the format of addresses separated by spaces and
   uses an asterisk (*) as a wildcard.  In addition to an address, a "NOT" can
   be applied to each address by appending a ! and another address mask to it
   which will then be excluded.

   For example if you have are a FidoNet node in zone 1 and you want to route
   all netmail posted to zones 1 through 5 to a specific downlink, you'd
   configure the following Routing Info for that echomail node:

      Routing Info | 1:* 2:* 3:* 4:* 5:*

   For most cases that will do.  For networks that only have one zone you'd
   simply route just that zone.  IE RandomNet zone 66 would just have 66:*
   and you are done.  But...

   If for example, you had two FidoNet uplinks one at (1:123/1) and you
   wanted to route all Netmail to your first uplink EXCEPT for Netmail
   specifically addressed to your second uplink's NET you'd do this for your
   primary uplink:

      Routing Info | 1:*!1:123/* 2:* 3:* 4:* 5:*

   This will cause ALL zone 1-5 netmail to be routed to that uplink EXCEPT
   for netmail with a destination to 1:123/*.  And then you'd configure your
   second uplink to route ONLY net 123:

      Routing Info | 1:123/*

   Remember, only exported echomail nodes are eligible for routing, so in the
   above example you'd link both FidoNet bases to your export and Mystic.

   As usual with routing it can be confusing when you have very specific
   routing needs but if you have only single uplinks then it can be pretty
   straight forward.  EXISTING echomail users need to go in and add their
   routing information if they are using the internal tosser.

 + Message bases can now be tagged and deleted in bulk, along with their
   message base data files.

 + Message base global editor can now add and/or remove an echomail link to
   a selected list of bases.

 + New MPL filebase variable: "fbasefn" returns the file base's filename.

 + Added new utility program: ansi2pipe.  This program converts ANSI files
   to pipe color files and should compile for all operating systems that
   Mystic compiles for.  This program is not distributed with Mystic directly
   but is on SourceForge.

 + New MPL function "GetMBaseTotal (Compress: Boolean) : LongInt".  This
   function returns the total message bases on the system.  If Compressed
   is true, then it will return the total number of message bases the user
   has access to (slower to calculate).  If it is false, it returns the raw
   total number of bases on the system.

 + MPL variables can now be initialized by calling a function.  This has
   actually been in a for a while but I think I forgot to document it.  For
   example:

     Var
       TotalBases : LongInt = GetMBaseTotal(False);
     Begin
       WriteLn ('Total message bases: ' + Int2Str(TotalBases));
     End.

 + New MPL procedure "GetMailStats" returns the number of e-mail messages
   and the number of unread email messages:

     Var
       Total, UnRead: LongInt;
     Begin
       GetMailStats(Total, UnRead);

       WriteLn ('You have ' + Int2Str(Total) + ' emails, ' + Int2Str(UnRead) + ' unread');
     End;

 + The MC (check email) menu command now has the optional data /NOLIST.  If
   this is supplied Mystic will go straight to reading mail instead of
   listing the messages and asking the user if they want to read e-mail.

 + New MPL vars: CfgNetDesc (array 1..30 of string[25] contains network
   descriptions) and MBaseNetAddr (contains the network address target of
   the message base).  Ex:

      Uses CFG, MBASE;

      Begin
        If GetMBase(1) Then
          WriteLn ('Base #1 is in network: ' + CfgNetDesc[MBaseNetAddr]);
      End.

   <ALPHA 32 RELEASED>

1.10 Alpha 33

 ! Fixed a small pipe code display bug in the new FS editor.

 + MUTIL echo import now ignores case of echotag when trying to match.

 ! MUTIL no longer adds netmail messages to a Binkley FLO file when exporting
   echomail.

 ! FIDOPOLL no longer expects netmail packets to be in a FLO file.

 + Message base editor now has a Move command.  You must first Copy a message
   base, and then move to where you want to move it to and then /M to move it.

 + FTP server now has the option to allow passive data transfers or not, and
   this has replaced the "Allow Anonymous" which does not exist at this time.
   PLEASE REVIEW YOUR CONFIGURATION.  If you or users have issues with passive
   turn it off or review the network interface setting (see below).

   The default should set it to off now.

 + When editing a posted message, Mystic now allows the option to set the
   echomail "sent" flag.  Prompt #296 has been updated for this new option. A
   new default follows:

      ; editing message display
      296 |16|CL|09|17 ° |15Message Editing |$X79 |16|CR|CR|09(|11A|09)      |03To: |11|&1|CR|09(|11B|09) |03Subject: |11|&2|CR|09(|11C|09)    |03Sent: |11|&3|CR|CR|09Edit option (|11!|09) Edit text, (|11Q|09)uit? |11

 + When Mystic gives an input prompt with a default text value, pressing a
   backspace will now automatically erase the default.  Likewise, typing any
   key will erase the default.

 + Added a new flag into message bases called Pvt Reply.  If this is set to
   true then Mystic will allow private replies/posts to a message based
   marked as public.  This basically creates a "public/private" type base.

   Two new prompts are added for this:

      ; Message post: "post msg as private" in pub/priv type base
      513 |CR|12Post this as a private message? |11

      ; Message reply: "post msg as private" in pub/priv type base
      514 |CR|12Post this as a private message? |11

 ! When using extended hotkeys in a standard menu (ie UP,DOWN,PGUP,DOWN,etc)
   Mystic was bleeding input during some events, and also allowing input
   and redrawing the menu when invalid input was entered.  This is now fixed.

 + Further optimized the on-the-fly ANSI optimization generated by Mystic. I
   think its probably not possible to make it more efficient now.

 + MUTIL now properly exports echomail and netmail for BSO-style point nodes.

 + FIDOPOLL now supports sending/receiving echomail for point systems.

 ! Fixed a bug in the QWK download system that could cause some networked
   message bases to get corrupted.

 + Mystic now allows the network interface to be defined for its MIS servers.
   If you want it to work the same as before, you MUST set the "Interface"
   value in "System Configuration -> Internet Options" to "0.0.0.0" without
   the quotes.  ALPHA TESTERS: DO NOT SKIP THIS STEP!  USE CTRL-Y WHEN
   EDITING THIS FIELD AND VALIDATE THAT IT IS BLANK BEFORE SETTING THE
   VALUE TO 0.0.0.0 (ie no spaces before or after etc).

   If you specify 0.0.0.0 Mystic will try to accept ANY connection on a
   specified port for all adapters.  If you specify one in particular Mystic
   will only bind, accept, and use connections from that network interface.

 + Added some new file buffer functions to replace the old stuff.  In areas
   where this is used (very few for now) there should be some speed up.  Be
   on the lookout for broken things.

 + When selecting message base during a reply, Mystic will now list all bases
   the user has access to, instead of just the current group.

 ! Fixed a rare bug that could ocassionally cause some strange behavior
   during global new scans IF a message was moved.

 ! The new FS editor wasn't correctly handling the parameters passed to it
   via MPL and some other areas (like editing file descriptions).  This has
   been fixed.  It can do SO much more than it does now, but its going to
   require a revamp to the editor template files.  More on that later.

 + The "Crosspost ACS" value in the configuration has been renamed as the
   "Extended Reply ACS".  If this value is met for a user, Mystic will allow
   the user to select the message base which the reply will go to.  ALPHAS:
   YOU MUST REVIEW THIS SETTING BECAUSE IT WILL BE S255 BY DEFAULT NOW.

   Crossposting is already allowed because once you post a message you can
   forward it to other message bases if you are the "owner" of that message,
   which is basically the same outcome.  This ACS was unused and useless so
   its now changed to a more appropriate "Extended Reply ACS".

 + Mystic has been ported to ARM Linux (aka Raspberry Pi).  There is still
   one issue with MIS and FIDOPOLL so I am not releasing a complete install
   for A33, but once that is sorted out I will do an installable release.

   In the meantime, you can certainly compile the code now and run it.  It
   runs suprisingly well once you get the console setup correctly.  However,
   until the issue with MIS is solved you will have to use inetxd or similar
   for your telnet server.

   <ALPHA 33 RELEASED>

1.10 Alpha 34

! Mystic was not properly closing some files when resetting the message
   base new scan pointer date.

 ! The FTP server will now gracefully handle data session timeouts (after
   10 seconds) which should prevent FTP ghost users when there is a firewall
   or network adapter configuration issue.

 - Removed MPL support for GOTO labels.

 - MPL/IPL syntax for not equal has been changed from "<>" to "!="

 - Removed MakeTheme.  Prompts are not longer required to be compiled.  You
   can delete *.thm from your DATA directory it is no longer used.  You MUST
   move your default.txt, etc, from your root Mystic BBS directory into your
   DATA directory.

 + The N and P keys now go to next and previous pages in the full screen
   ANSI viewer.

 + The MATRIX login will now use the matrix login prompts for ALL logins
   from matrix login.  This means that the standard login will now be
   bypassed for menu command XL.  Make sure your matrix login looks the
   way you want after upgrading, if you use matrix.

 ! Fixed some quirkiness introduced in A33 around netmail.

 ! Lots of minor bug fixes that were mostly not reported.

 + The prompt to set the message base pointers by date now defaults to the
   current date.

 + The FS editor quote window template has changed (ANSIQUOT).  It now allows
   the quote window size to be defined and all attributes.  3 screen info
   codes are used:

      !1 = Defines the text attribute and Y location where normal text ends
      !2 = Defines the top Y location of quote window text and attribute
      !3 = Defines the bot Y location of quote window and lightbar attribute

 + Added 3 new optional Screen Info codes to the FS editor (ANSIEDIT)
   template which allow different types of text to be colored "on the fly".

   If you do not want to use these features, just do not set them in your
   template.

      !4 = Defines the color of capital letters
      !5 = Defines the color of punctuation
      !6 = Defines the color of numbers

 ! Fixed issues with the ALT-GR key detection for international keyboards in
   the Windows version.

   <ALPHA 34 RELEASED>

1.10 Alpha 35

 + MBBSUTIL -FSORT will now ignore file casing on case sensitive operating
   systems.

 + When changing theme options involving single character input (field input
   percentage bars, etc) Mystic will now prompt for the ASCII character
   number.

 + When doing a message QuickScan (MQ) with the /LIST option, Mystic will now
   pause when the users terminal screen is full (and allow them to abort the
   scan as well).

 ! Mystic would get stuck in an endless loop if the MATRIX menu was turned
   on but the menu didn't physically exist.  It will not error and log that
   the menu is missing.

 + When "Ask Theme at Connect" is ON, Mystic will now set the theme selected
   as the users default theme.  Previously it would reload their last used
   theme regardless of what was selected on startup.

 + If the download directory doesn't exist when NodeSpy attempts a Zmodem
   download, it will now tell you instead of crashing.

 + NodeSpy Terminal now allows the current connected phone book entry to be
   edited while connected.  This allows the password to be set, statusbar to
   be turned on/off, etc.

 + NodeSpy Terminal now only updates the last call date and times called if
   the connection was successful.

 + NodeSpy terminal now fully disconnects the session before displaying the
   "connection terminated" box.

 + MPLC will now continue to attempt to compile subsequent MPL programs even
   if one compilation fails.

 + Message Base QWK scan and regular scan settings now have the ability to
   toggle ALL bases on or off at one time.  An updated prompt goes along with
   this:

      ; Message base new and qwk scan toggle prompt:
      095 Toggle: |09[|11#-#,#|09], Select [|11A|09]dd ll, [|11R|09]emove All, [|11?|09/|11List|09]: |XX

 ! Fixed a bug in the matrix login after creating a new user.

 ! Fixed a bug when searching or doing new scans on a single file base which
   could sometimes cause a crash.

 ! Broke BADIP.TXT recently.  Fixed now.

 ! Fixed a bug with NodeSpy Zmodem download which would cause it to crash,
   hopefully it will work better now?  At least it shouldn't crash now either
   way.

 ! Fixed a few other bugs and did some minor enhancements that no one will
   notice. ;)

   <ALPHA 35 RELEASED>

1.10 Alpha 36

 ! Fixed a memory leak in the new theme prompt system.  Mystic was leaking
   about 30kb per login.

 ! Mystic should now will properly display the file base "display file"
   before listing files.

 ! Date corruption with MUTIL echomail export has hopefully been fixed.

 + MPL now has the ability to interface directly with internal Mystic BBS
   classes.  This opens up a whole world of new possibilities in the future
   (for example) sockets, full remote ANSI screen library (boxes, listboxes)
   data sorting, and more.

   Classes must first be created and then freed after using.  Mystic will
   create the class instance and return a handle to that specific class to
   use with the functions.  Finally, the class is freed.  Two new functions
   go with this:

      ClassCreate (ClassHandle, ClassType)
      ClassFree (ClassHandle)

 + MPL now supports the ANSI box class.  There are three functions which
   go along with this: BoxOpen, BoxClose, and BoxOptions.  The Box class
   will automatically save and and subsequently restore the text under the
   box when it is closed.

   See TESTBOX.MPS for an example.

 + MPL now supports the ANSI input class.  There are several functions which
   go along with this: InputString, InputNumber, InputEnter, InputOptions.
   This class allows you more freedom over input functions than the standard
   MPL input functions do.

   See TESTINPUT.MPS for an example.

 + MIS FTP server now will display 'ftpbanner.txt' from the DATA directory
   if it exists when a user connects via FTP.

 ! Once a default protocol was selected, the GE command (option 22) to change
   the default was not working.

 + MPL now supports ANSI screen class.  This allows the ability to save and
   restore portions of the user's screen.  The example below saves the screen
   coordinates defined as: X1:20, Y1:5, X2:60, Y2:10.  It then clears the
   screen and then restores the saved portion of the screen.

      Var SavedScreen : LongInt;

      ClassCreate (SavedScreen, 'image');
      ImageGet    (SavedScreen, 20, 5, 60, 10);

      ClrScr;
      WriteLn ('Press a key to restore');

      Pause;

      ImagePut (SavedScreen);
      ClassFree (SavedScreen);

      Pause;

   <ALPHA 36 RELEASED>

1.10 Alpha 37

! Fixed an issue with useropts variable in MPL which could cause memory
   corruption.

 ! Fixed two leaked file handles during QWK packet generation.

 + New MCI code: FT returns the total number of files in the current file
   area.

 + MIS BINKP server is now active.  Configuration is in the system
   configuration with the rest of the servers.

 + All MIS servers now maintain their own independant log files in the LOGS
   directory, assuming "Server Logging" is turned on in Internet Server
   Options.

 + In order to maintain consistancy and for easier file association, telnet
   node logs have changed from "sysop.nodenumber" to "node<nodenumber>.log"
   in the logs directory.

 + Users can now be flaged as "QWK Network Account" in the User editor.
   Account names should be the same as their QWK Network BBSID.  These users
   will bypass a majority of the login procedures and can have their own
   distinct start menu (found in General Settings).  A new default menu called
   "qwknetwork.mnu" has been included as an example of how one should likely
   be setup.

 + Message bases can now be flagged as "Allow QWK Networking" which means that
   the message base will be allowed to be selected for scanning by QWK network
   scans.

 + The OS menu command (Set QWK scan settings) now has the /QWKNET option
   available in command data.  This limits the message bases listed to ONLY
   show bases flagged for QWK networking.

 + The OE menu command has been removed.  Instead, a setting now saves the
   users preference of QWK or QWKE packets.  You will need to update your
   QWK menu to remove this command and to add the toggle of the QWKE packet,
   or you can optionally use the new qwk.mnu included as a guide/replacement.

 + New Menu command GE (edit user preferences) optional data: 33.  This
   toggles the user's preference for QWKE style packets on or off.

 + New MCI code QE returns Yes/No based on the users QWK Extended setting.

 + The MD menu command (set message lastread pointers) now has the optional
   data option of /ALL.  If this is used, Mystic will NOT has if the user
   wants to update their current base, and will instead force the update for
   all message bases.

 ! Mystic was changing the user's message base to the last base processed
   when globally resetting the new message scan date.

 ! Fixed a bug that could cause a lockup in the FS editor when using the TAB
   key.

 + The FTP server now accurately reports the file date during file listings.

 + The FTP server now accurately reports directories (filebases) based on the
   actual time the file base was created in Mystic.

 + When editing the FTP directory name for a file base, / and \ characters
   are now automatically converted to _ so it does not conflict with FTP.  If
   you have existing FTP names set for your file bases, you must open them in
   the file base editor for their names to be automatically changed.

 + Users can now download QWK packets using the FTP server.  A QWK packet
   filename will be shown in all FTP listings.  If the user is flagged as a
   FTP network account, their handle will be used as the BBSID for the QWK
   packet (handle.qwk).

 + Users can now upload QWK reply packets using the FTP server.  If the user
   is flagged as a FTP network account, their reply packet will need to be
   "handle.rep".

 + The file base configuration editor now allows bulk file base deletion
   if a list of bases are tagged when delete is requested.

 + Mystic's FTP server now supports uploading directly to Mystic's file bases
   using FTP.  It will also attempt to use the archive configuration to import
   FILE_ID.DIZ files.

 + MIS server status updates and logging now use a MMM DD format date instead
   of MM/DD which was confusing/annoying for people outside of North America.

 + Mystic's node logging now uses MMM DD format date instead of MM/DD/YY.

 + The FTP server now allows resumed uploads via the APPE function.

 + System configuration now has a QWK Networks configuration editor, where
   one or more QWK networks can be defined.

 + Message base editor now allows each message base to be linked to a
   configured QWK network.  In addition, each message base also now has a QWK
   network conference ID number.

 + Users can now be linked to a configured QWK network using the User editor.
   This defines the QWK network message bases that they have access to if
   they are flagged as a QWK network account.

 + Mystic's QWK system no longer forces all upper case user names and
   subjects.

 + A new temporary QWK mailer has been included called QWKPOLL.  This will
   allow you to function as a node of a QWK network.  It will connect via FTP
   to your network hub, send them a REP packet of new messages, download a
   QWK packet of new messages, and toss them into the BBS message bases all
   automatically.

 + QWK and QWKE Networking (as a HUB and a NODE) has been implemented.  This
   implementation also allows you to be a part of multiple QWK networks and
   even HUB them in addition to being members of several - all with separate
   access management.

      NOTE: All setups require you to have defined your QWK packet ID in
      the Local QWK settings.  This is the filename of the QWK packets
      generated from your BBS or uploaded to your BBS.

      SETTING UP AS A NODE OF A QWK NETWORK
      =====================================
      1. Create a new QWK network profile in the System Configuration ->
         QWK Networks and set the member type to Node.  When you join a QWK
         network you should get all of the details required to fill in the
         rest of the settings.

      2. For each message base in the QWK networking:
            A. Create message base in the message base editor.
            B. Set message base type to echomail
            C. Set QWK Network to point to your newly created QWK network.
            D. Set the QWK Conference ID for the base.  This is specific to
               the network and should be provided to you along with the list
               of bases when joining the network.

      3. Thats it.  When you run QWKPOLL it will attempt to connect to your
         QWK networking hub and exchange/import messages for you for each
         base (via FTP).

      SETTING UP YOUR OWN QWK NETWORK
      ===============================

      1. Create a new QWK network profile in the System Configuration, and
         set the member type to HUB.
      2. Create your message bases in the same way that you would as a node
         (see above), except you need to make up a unique QWK conference number
         for each message base.  This number should be unique across all QWK
         networks and needs to be provided to your nodes.  Mystic itself does NOT
         require that each base is unique across all networks, but it appears
         that other software does require this.

         These two steps are all that is needed to create your own network!

      Now for each node that is a part of your network, you need to give them
      a list of the conference IDs you created for each base you've created
      for your network.

      Next you need to login and create a new user, or instruct the Sysop of
      your node to create an account using a unique BBS ID.  For example, my
      BBS is Sector 7 so I would create a user named "sector7".  Once the
      user is created, set the user's "Qwk Networking Acount" flag in the
      user editor to TRUE and then associate them to the network you've
      created (also in the user editor).

      From now on when the user calls and logs in as their BBS ID (sector7 in
      this example), they will be given a menu which allows them to select
      which networked bases to subscribe to, in addition to resetting scan
      pointers, etc.

      Once that is done and the person has their client side setup, then can
      connect to the MIS FTP server and login with the BBSID and password. From
      this point they can download bbsid.qwk and upload bbsid.rep to the FTP
      server to exchange mail.  If they are also using Mystic, QWKPOLL will do
      all of that for them!

 ! MUTIL should now generate a MSGID when posting text files to an echomail
   base.

 + MUTIL logs now use MMM DD YYYY date stamps, instead of MM/DD/YY.

 + MUTIL now has a MergeNodeLists function which will scan for nodelist
   files to find the most recent nodelists, then combine them and copy them
   into the Mystic DATA folder so they can be used for node lookups.  It also
   supports merging archived nodelists.  See MUTIL.INI for more information.

 + Mystic's terminal library in Linux will now attempt to detect terminal
   screen size before switching to 80x25, and will also attempt to restore
   screen size upon exit.

   <ALPHA 37 RELEASED>

1.10 Alpha 38

 + Mystic now creates "echomail.in" whenever it receives a new file from an
   authenticated connection via the BINKP server.

 + The semaphore files named echomail.now, newsmail.now, and netmail.now
   have all been changed to .out, ie echomail.out, newsmail.out, netmail.out
   You will need to update any scripts that key off of those files.

 + Mystic now creates "qwkmail.out" whenever new messages have been posted
   in a base assigned to a QWK network.

 + MUTIL EchoImport function now deletes echomail.in semaphore file after
   it is done tossing messages.

 + MUTIL EchoExport function now deletes echomail.out semaphore file after it
   is done exporting messages.

 ! Fixed a problem with the BINKP server and CRAM MD5 authentication.

 ! Fixed a problem with FIDOPOLL and BINKP where a file transfer would appear
   to get stuck in certain situations when a file was skipped.

 ! Fixed a compatibility issue with the BINKP server when used against a BINKD
   client.

 ! Fixed a bug when posting messages via NNTP.  Since there is no "To" in
   NNTP, Mystic now sets all posts to "To: All".  This fixed a problem where
   some messages posted via NNTP were not showing up inside of Mystic.

 ! Fixed: Posts to networked bases via NNTP were not adding origin lines.

 ! BINKP server should now properly escape filenames with spaces in them.

 + When tossing ECHOMAIL PKT files and bundles, Mystic will now sort the
   entire incoming directory by filedate and then filename as a secondary and
   process each PKT or bundle in order.

 + When tossing an ECHOMAIL bundle, Mystic will now extract the bundle and
   then sort the contents of the bundle by filedate and secondly by filename,
   then process each PKT in the sorted order.

 + The message base editor now has a new function /R (Reset messages).  This
   will take a single base or a selection of tagged bases and remove ALL
   messages in them without effecting your user's new scan/qwk scan settings
   OR the echomail linkage.  IF bases are tagged before /R Mystic will also
   offer to reset the echomail duplicate tracking pointers as well.

 + QWKPOLL should now provide more detail during the polling process,
   including possible data port issues and when the HUB does not have a QWK
   packet with new messages for you.

 ! Fixed a bug where Mystic would incorrectly address routed Netmail in both
   the header and INTL kludge.  This could cause tossers to not correctly
   reroute netmail to the correct destination.

 ! Fixed a bug in BINKP protocol on the client side where the client was not
   sending the proper SKIP filesize back to the server.  With BINKD this
   could cause the BINKD server to just wait until the session times out
   instead of sending EOB.

 + FIDOPOLL can now poll a single node by the address.  IE:
      fidopoll 46:1/100

 + FIDOPOLL now logs to "fidopoll.log" in the logs directory.

 ! SEEN-BY and PATH kludge lines are no longer added to exported netmail
   messages.

 + Mystic will now flush the buffer after displaying the Inactivity timeout
   prompt so that your remote users will actually see it!

 + When sending NETMAIL, Mystic's nodelist browser will now filter out any
   nodes which are part of net "0" in the address searches.  Using the browser
   menu command will still show them.  Assuming you have Forced NL compliance
   turned on, this will prevent users from ever being able to select a net 0
   address.

 + Mystic's netmail fowarding will now strip leading and trailing spaces in
   case of typos in the .INI.

 ! Netmail messages will no longer export from MUTIL if their destination
   address is one of your configured AKA addresses.

 + Mystic echomail nodes can now be configured as a "Directory" session type,
   which means that Mystic (FIDOPOLL) will send bundles to/from locally
   configured inbound and outbound directories instead of using BINKP or FTP.

 ! Mystic's FTP server was not sending the QWK packet name in directory
   listings when the NLST command was used (instead of LIST).

 + When importing a FIDONET.NA format file, or when creating message bases
   during echomail import OR when using the ImportMsgBase function, MUTIL
   will now change any filenames (calculated from ECHOTAG) to replace both
   \ and / with a _ character.

 + Mystic echomail nodes can now be configured as a "FTP" session type, which
   means Mystic (FIDOPOLL) will send/receive bundles with their uplink using
   the FTP protocol (as opposed to BINKP or Directory).

 + Added the ability to turn off showing the user's QWK packet in FTP
   directory listings (Internet Servers > FTP)

 + The autocreating message base while Importing Echomail can now have a
   lowercase_filename = 1 value to convert all msg base filenames to lower
   cased.  This was previously only available in FIDOBONE/FIDONET.NA
   importing but it works under [ImportEchoMail] now too

 ! When hubbing FTN point systems, if you had multiple point systems their
   PKTs were all getting stuffed into one bundle.  Fixed.

 + FIDOPOLL's FTP send client will now list echomail packets on the remote
   server and automatically increment packet names (ie we1->we2) until it
   finds an unused packet name on the remote server.

 ! Fixed a bug when using spaces in menu filenames which caused the menu
   editor to fail to edit, copy, and delete menus.

 ! When posting a text file to a netmail base using the MX menu command, the
   origin address was not being AKA matched with the destination address.

 ! MIS telnet in Linux should no longer create zombie processes.

 + Inactivity timeout is now disabled when running Mystic with the -CFG
   option from the command line.

 ! MUTIL import of FIDONET.NA will now not blow up if you used tabs instead
   of spaces to separate echotag with description.

 ! MUTIL import of FIDOBONE.NA will now not blow up if you used tabs instead
   of spaces to separate tag with description.

 ! MUTIL import of FIDOBONE will now replace / and \ characters when
   calculating the datafile name, if they exist in the echotag.

 + Changed the filename format used when Mystic generates PKT filenames in
   bundles and when sending ?UT files:

     Old way: Day of month + Hour + Minutes + Seconds
     New way: Hex(Day + Seconds past midnight + Hundredth of seconds)

   This allows truely unique names down to the hundred of a second for a one
   month period.  It solves all collision issues caused by the old way!

 + The FS editor quote window will now only insert a blank line when exiting
   if new text was quoted.

 + When editing message text, Mystic will now try to find the originating
   message and re-create the quote data, so that you can access the quote
   text just as you did when you originally posted the message.

 + If an echonode's archive type is set to a blank value, Mystic will create
   non-bundled PKT files in the outbound directory for that node.

 + If an archive type is blank for an echomail node, Mystic will try to
   detect the archive type of the inbound bundles and extract them
   accordingly.  ZIP, RAR, LZH, LHA, and ARJ detection is supported.

 ! Fixed a bug where the wrong Internet address could be shown during
   nodelist searches.

 + The callers count in the BBS history now will only increase if an actual
   user has logged into the BBS.  In the past, it counted any connection which
   means it would count port scanners, etc.

 ! Fixed a bug where NodeSpy could crash on startup, if there is no BBS history
   data.

 + Prompt #473 now has the option to supply &1 in the Title section of the
   prompt.  &1 returns the filename, however, it is truncated to 34 characters
   which is the field size for SAUCE titles.

 + New option in Message Settings: "Message Upload ACS".  The user must meet
   this ACS string in order to be allowed to upload message text in the message
   editors.  A new prompt has been added, make sure you add this to your
   default.txt (or any prompts files you are using):

      ; Msg Editor: No permission to upload message text
      515 |CR|12You do not have access to upload message text.|CR|CR|PA

 ! Not really a Mystic bug, but mTelnet does not honor the Zmodem standard
   properly when handling file dates.  Mystic now sends the file date along
   with the file in a way that mTelnet will correctly handle it.

 ! Mystic now appropriately stores and retrieves MSGID and REPLY in JAM
   header subtext instead of the message body.  In addition, other kludge
   lines will also be stored correctly during echomail import.

 ! Fixed a small bug in MUTIL's message base packer that could cause a crash
   during a status update under rare circumstances.

 + When auto-creating Message Bases during echomail import, Mystic will now
   attempt to automatically configure the message base for export back to the
   uplink.

 ! When posting an echomail message via NNTP, Mystic was not generating a
   MSGID.  Fixed.

 + Pressing V from within the message reader will now toggle showing of
   kludge lines in messages.  If kludge lines are toggled on, they will also
   appear in message quote data.  The state of kludge viewing is constant per
   session.

 + Mystic export should now generate proper Type2+ echomail PKT files.

 ! Fixed a bug in the ANSI message reader where on occasion a blank line
   would not be displayed when redrawing a message.

 ! Fixed a small bug that could cause a loss of a character when uploading
   a message that had a message line that ended with a pipe code.

 + New Message Box system has been added.  Each theme now has a "Message Box"
   section where style elements can be defined for Message Boxes.  The style
   element allows colors and frame type to be defined, as well as box shadow
   options.  Message boxes when used with Mystic will pop up and save then
   restore the screen content underneith it.

   Mystic boxes are triggered through a new MCI code: #B

   The new MCI code format is as follows:

      |#B<Header text>#<Message text>#

   Here is an example of how you might want to use it:

      ; Ansi msg reader scan toggle  &1 = message base name
      404 |#BInfo#|&1 will NOT be scanned in new message scan#
      405 |#BInfo#|&1 will be scanned in new message scan!#

   In the examples above, when a person toggles a message base scan setting
   while reading in the ANSI reader, Mystic will pop up a message box with
   the configured message, and then it will restore only the part of the user
   screen where the box was after they press ENTER.  Example:

      .-------------------- Info --------------------.
      |                                              |
      |  MYSTIC will be scanned in new message scan  |
      |                                              |
      |                      OK                      |
      `----------------------------------------------'

   Existing Sysops should go into the Message Box settings at least once and
   select the "Reset Defaults" options, so that defaults will be loaded.

 + When posting a message, Mystic will now force all messages to be Private
   in Netmail message bases, regardless of if the base is set to Public or
   Private.

 ! All JAM kludge lines are now handled and stored 100% in compliance with
   the JAM message base proposal.

 + MUTIL's Echomail import (mutil.ini) has a new option to strip SEEN-BY
   lines from messages during import.  This is disabled by default, so
   add it in under your EchoMail Import stanza if you want to strip them.

        ; Strip SEEN-BY lines from messages when importing?
        strip_seenby = false

 + Mystic will no longer prompt the user to Post a message while reading
   if they do not meet the Post ACS level.

 ! FIDOPOLL now properly counts the number of systems polled for mail.

 + RIGHT ARROW on the last message in a base now moves to the next message
   base in the full screen ANSI message reader.

 + Mystic should now play nicely with GoldEd+ and last read pointers.  Keep
   in mind that the first "UserName" defined in GoldEd must match your
   "real name" in your Mystic user record in order for them to link together.

   This also works when packing and renumbering message bases without
   screwing up any lastread pointers.

   EXISTING SYSOPS should run MUTIL to pack their message bases, so that
   Mystic will rebuild the last read files.  This WILL reset your pointers
   in GoldEd+, but from this point on they will be managed hand in hand.

 + New Menu command: MI.  This is the Area Index reader.  This command cycles
   through all message bases and calculates total, new, and personal messages
   and then presents them in a scrollable and customizable window to the user.

   The list is sorted so that the bases with new messages are first, then
   by the base name.  Typing text while in the list will automatically search
   the message base list.  CTRL-A will search again, CTRL-Y or using any of
   the movement keys will reset the reset.  Pressing ENTER will read new
   messages if it is a base with new messages, otherwise it will start reading
   at the first message if there are no new messages.  ESCAPE quits.

   A new template ANSIMIDX goes along with this feature.  Please also note
   ANSIMIDX.INI as well which is now part of the template, and read the next
   section!  This template .INI has tons of configuration options for the
   Area index so be sure to take a look!

 + A new template format has been implemented.  Placing the screen info codes
   in the existing format's ANSI file is annoying, so this format is designed
   to simplify templates so that you never have to modify the ANSI to inject
   codes again.

   The new format uses a .INI file which goes in the same directory as the
   template.  The INI file now holds the screen location codes and various
   other configuration options related to the function of the BBS that uses
   the ANSI template.  In addition to that, I am experimenting with also
   including all prompts related to the function inside of the INI file, but
   this might change in the future depending on feedback.

   The negative here is we lose nice things like being able to setup the
   percentage bars inside the theme editor.  We also lose the ability to
   edit the prompts for template-related functions from within the theme's
   prompt editor, because they will be stored in the INI file now.

   The positive here is we no longer have to "inject" the |!X codes into
   ANSI files, and we have all configuration and prompts related to a
   template found in a single location.  This means you can easily release
   template mods with just a .INI and .ANS and it will work just as you want
   it to by simply copying those two files into another Mystic BBS setup.

   Please give me feedback as to whether or not you like this new system,
   or if we should revert back to the old or make changes.  Eventually all
   templates will be converted to this new system and additional
   configuration options will likely be added for each template.  I am most
   excited about redoing the ANSI gallery! :)

   As an alternative, we could keep the percentage bars in the theme editor
   and keep the prompts in the prompt editor, and only put configuaration
   options and screen locations inside of the .INI files?

 - Mystic no longer exists with a certain errorlevel when new echomail is
   entered.  Instead, Semaphore files should be used (echomail.out, etc).

 + Mystic now has a new option in System Configuration -> Message Base
   Settings: Create Semaphore (Logoff or MsgPost).  This determines whether
   or not Mystic will create semaphore files immediately when saving a
   message, or if it will wait for the user to logoff.  Logoff is the default
   and recommended setting because it allows users time to edit their message
   before it gets sent off.

 + New MIS event system is active.  This event system has four event types
   which can be used to fully automate your BBS including echomail and QWK
   networking transmission, among other things.

   ** IF YOU ARE UPGRADING YOU MUST DELETE "EVENT.DAT" IN YOUR DATA FOLDER
   ** DO NOT SKIP THIS STEP OR YOU WILL HAVE ISSUES THE EVENT FILE FORMAT HAS
   ** CHANGED NOW THAT WE HAVE ACTUAL EVENTS!

   Here is a description of each Event type:

   TYPE1: Semaphore
   ================
   This event type listens for one or more "semaphore" files, and will execute
   a command line if one or more of the semaphore files are found.  Prior to
   executing the command line, MIS will also delete the detected semaphores.

   The following options are used for Semaphore type events.  Any other options
   not mentioned here can be ignored for this type:

     Active      - If yes this event will be active.  Set to No to disable.
     Description - This can be any description you want.
     Exec Type   - This is one of BBS, Shell, or Semaphore
     Semaphore   - This defines the semaphore filename to "look" for.  If
                   there is no path included, Mystic will automatically look
                   in the configured semaphore directory.  In addition, more
                   than one semaphore file can be monitored by using a pipe
                   symbol to separate them (|).  For example:

                      Semaphore: echomail.out|netmail.out

                   The above example will look for the existance of EITHER
                   echomail.out or netmail.out in the configured semaphore
                   directory.  If either file is found, the event will remove
                   the semaphore files and then execute the event.

                      Semaphore: c:\mybbs\somefile.txt

                   The above will list for the c:\mybbs\somefile.txt and
                   trigger the event if it is found.

     Shell       - This is the command line which will be executed when the
                   event is triggered.  Similar to the Semaphore detection,
                   this can have one *or more* executions per event each
                   separated by a pipe.  If no path is supplied, MIS will
                   default to the root Mystic BBS directory.  For example:

                      Shell: domail.bat

                   The above example will execute domail.bat in the root
                   Mystic BBS directory.

                      Shell: mutil export.ini|fidopoll send|mutil import.ini

                   The above will execute 3 command lines in a row:

                      mutil export.ini
                      fidopoll send
                      mutil import.ini

                   If we put it all together we can get something like this:

                          Active: Yes
                     Description: Send outgoing echomail
                       Exec Type: Semaphore
                       Semaphore: echomail.out|netmail.out
                           Shell: mutil export.ini|fidopoll send|mutil import.ini

                   The above example wait for echomail or netmail.out, and
                   execute mutil to export, then fidopoll to send, then
                   mutil to import any new packets.  Completely automated!

   TYPE2: Shell
   ============
   This event type executes on a defined time, defined on a weekly schedule.
   When the event executes, it will execute the Shell command line.  Like the
   Semaphore event type, this Shell command can also execute multiple command
   lines by separating them with a pipe character (|).

   The different between this type and Semaphore is that instead of waiting
   for a file, the event is defined by a specific execution time.  This is
   defined by picking which days of the week the event should execute, and
   what time per day it should be ran (in 24-hour format).  For example:

          Active: Yes
     Description: Pack message bases
       Exec Type: Shell
           Shell: mutil msgpack.ini
       Exec Hour: 01
        Exec Min: 30

        Sun: No  Mon: Yes  Tue: No  Wed: No  Thu:  No  Fri: No  Sat: No

   The above event would execute once per week, at 1:30am on Monday morning
   and execute the command line "mutil msgpack.ini" from the root Mystic BBS
   directory.

   TYPE3: Interval
   ===============
   This event type is similar to the shell event type, except that the hour
   and minute define a time interval.  For example, if you want to execute
   the event every 15 minutes you would set:

      Exec Hour: 00
      Exec Mins: 15

   If you wanted to run the event every 3 hours and 30 minutes, you set:

      Exec Hour: 3
      Exec Mins: 30

   When the time interval expires, the shell command line is executed with
   the same possiblities as the other events (using the pipe character, etc).
   This event is commonly used to polling for mail.

   TYPE4: BBS
   ==========
   This event type is not actually executed by MIS itself, and is similar to
   what you might have found in old DOS-based BBS software.  The purpose for
   this event is to provide an option to force users to log off the BBS if
   you want them to.

   Like the scheduled Shell event, a BBS type event can be scheduled at a
   certain hour/min and one or more days of the week.  In addition to the
   time/day scheduling there are some other options:

         Node: This defines the node number for which the event will execute.
               If you keep the node number at 0, it will be applied to all
               users on all nodes.

      Warning: This determins the time before the event to notify the user
               of the upcoming event.  This can be set to 0 to never warn them,
               or (for example) 10 to give them a message that they will be
               required to logoff in 10 minutes.

   When this event time hits, the user will be logged off of the BBS if they
   have not already logged off on their own.

 + When using the DF mci code make sure that the proper format is used which
   means the DF ends with a pipe code.  IE: |DF<filename>|  Mystic will be
   more selective in what it allows for this.  Prompts that had a space in
   them used to work, but may not now.

   If you notice issues, you can go into the Themes->Prompt and do a search
   for |DF and use the Search Again to fix each one.

 + New optional data option for the MR (read messages) menu command: /NOIDX
   If this is supplied, Mystic will bypass the user's setting for the message
   list index and go straight to the reader.

   <ALPHA 38 RELEASED>

1.10 Alpha 39

   <ALPHA 39 SKIPPED>

 + Alpha 39 was skipped so that I could better track who is using the new
   tosser vs who is using the old (a rewritten tosser was introduced in A40).

1.10 Alpha 40

 + MUTIL's Import_MessageBase now has the option to search subdirectories and
   create message bases based on data files found in directories off of the
   main message base directory.  A new option has been added into the MUTIL
   .INI file format in the import stanza:

   [Import_MessageBase]
     search_subdir = true

 + All servers can now use a DNS blacklist lookup.  There are two new options
   in the System Configuration > Servers > Internet Server Options section:

      Use DNSBL  - If set to Yes, MIS will preform a DNSBL lookup on all
                   connections.
      DNSBL Host - Hostname of the DNSBL server.  The default will be
                   configured to use "xbl.spamhaus.org" for now, so if you
                   are upgrading that is one option for this setting.

   For those who may not be familiar with a DNS blacklist service: A DNS
   blacklist service is basically a giant public database filled with IP
   addresses of known spammers, scanners, etc...

   MIS will now optionally perform a lookup of all incoming connections and
   if they are found to be in this database, they will be blocked as if they
   were in the BADIP.TXT file.  In addition, MIS will log the result of the
   DNSBL service so that further information about the particular IP address
   can be retrieved if needed.

 + All servers can now use a DNS country lookup and connections can now be
   both identified by country and optionally blocked by country.  Two new
   options in System Configuration > Servers > Internet Server Options:

      Use DNSCC  - If set to Yes, MIS will preform a DNSCC lookup on all
                   connections.

      DNSCC Host - Hostname of the DNSCC server.  The default will be
                   configured to use "zz.countries.nerd.dk", so if you
                   are upgrading that is the setting to use.

   In addition to the DNSCC configuration, a badcountry.txt file must exist
   in the DATA directory.  This file contains a master list of all countries
   in the world, sorted by the ISO country number.  MIS uses this along with
   the DNSCC host to determine the origin country of the connection.  Inside
   this file, each country can optionally be blocked as well so you can use
   this to identify all connections AND/OR block by country too!  MIS will
   now show status/logs like this:

     Connection from United States  <-- DNSCC is enabled
     Connect: 123.123.123.123 (myhostname.myinternet.com)

     or

     Connection from China
     BLOCKED 123.123.123.121 (somehostname.china.whatever)

   See the contents of the badcountry.txt file for information on how to
   block by country.

 + MUTIL now has optional logfile management via a log roller.

   Two new log options have been added to the GENERAL section of MUTIL.INI
   files:

     [General]

        ; number of old log files to keep (0 to disable)
        maxlogfiles = 10

        ; size of each log file in kilobytes
        maxlogsize = 500

 + MUTIL logging performance has been significantly improved.  Running with
   debug logging on should no longer slow down some processes to a crawl.

 + Lightbar area index now has a CTRL-N key.  This highlights the next base
   that has new messages, if one exists.

 + Lightbar area index now starts reading at the last message in a message
   base if ENTER is pressed on a base when there are no new messages.

 + Lightbar area index now has a CTRL-Z key which displays "ansimidxhelp"
   and then redraws the screen.

 + Lightbar area index now has a CTRL-R key which will recalculate all
   message statistics and redraw the entire screen.

 + When auto-creating message bases during echomail import, Mystic now allows
   some options to be configured based on the network address used within the
   new message base.  These will override the default if a base is being
   created with that network address.  For example (in [ImportEchoMail]):

     ; If you want auto created bases that are linked to your AgoraNet
     ; address of 46:999/999 then you can by prefixing with the address:

     ;46:999/999_acs_list     =
     ;46:999/999_acs_read     =
     ;46:999/999_acs_post     =
     ;46:999/999_acs_news     =
     ;46:999/999_acs_sysop    = s255
     ;46:999/999_use_realname = 0

   This is very useful if you want to place auto-created bases in certain
   groups, or if some networks have a real name vs alias requirement, etc.

 + New MCI code #I works just like the #B mci code, but does not wait
   for a key and restore the screen afterward.  IE:

      |#IHello#This is a box!#

 + MUTIL now has a new option to configure the time stamp of log files.  In
   the [General] header you can now set "logstamp=" using the following
   codes:

     YYYY  4 digit year
       YY  2 digit year
       MM  2 digit month
      DDD  3 letter day of week
       DD  2 digit day
       HH  2 digit hour
       II  2 digit minutes
       SS  2 digit seconds
      NNN  3 letter month

   ; logfile time stamp.  defaults to NNN DD HH:II:SS if not set here
   ;logstamp = YYYYHHMMHHIISS

 + MUTIL echomail tossing has been revamped so that messages are tossed to
   your downlinks during message import.  This is more in-line with
   traditional tossers.

 + Some MUTIL functions used during import/export operations have been
   revamped for a performance increase.  Still more to come though.

 + Duplicate message detection has been improved so that it does not factor
   in SEEN-BY/CTRL-A kludge lines into the message text.  Unfortunately this
   makes existing duplicate databases useless, so you can delete echodupes.dat
   from the DATA folder to reset your duplicate database.

 + Echomail Nodes can now have a maximum PKT size and maximum ARCmail/bundle
   size defined in their setup (in kilobytes). Defaults will be 512kb for PKT
   and 2048kb for bundles.

   Keep in mind these are approximate values, and that the PKT size should be
   significantly less than the ARCmail size if you want accurate results
   (because bundles are just zipped PKTs).  Both can be set to 0 to disable.

 ! Fixed a compatibility issue with Mystic's BINKP against MBCICO

 + Mystic now properly allows pass-through (re-routed) netmail messages.

 + NetMail message bases no longer need to be linked to any Echomail nodes
   in order for Mystic to attempt exporting.

 + Mystic, when routing Netmail, will now first compare the destination
   address against all configured echomail nodes.  If there is a direct match
   Mystic will route the Netmail automatically to that node without reviewing
   the Route Info.

   If there is no direct match, Mystic will then look at the Route Info
   for each Echomail node (starting at the first entry) until it finds a
   match and redirect netmail through that system.

 + Mystic now has a built in AreaFix.  The following commands are currently
   supported:

     %COMPRESS <type>
     This sets the compress type where <type> is either left blank for raw
     PKT or an archive extension configured for that OS (ZIP, RAR, etc)

     %HELP
     This appends the contents of "areafixhelp.txt" from the DATA folder
     into the response message.  The help text is included at the end, so
     that if additional commands were administered, those results will be
     displayed before the help.

     %PWD <new password>
     Changes the password for the node to <new password>

     %LIST
     Returns a list of all available echomail areas.  This is done by
     comparing the network domain of the address assigned to the message base
     with the echomail node's configured domain.

     %LINKED
     Returns a list of all linked echomail areas

     %UNLINKED
     Returns a list of all unlinked echomail areas

     %RESCAN [R=# or D=#]
     This rescans all linked echomail areas and exports the last 250
     messages in each area, unless the optiona R and D commands are also
     specified.  Ex:

       %RESCAN        <--- Returns last 250 messages in all linked areas
       %RESCAN R=1000 <--- Returns last 1000 messages in all linked areas
       %RESCAN D=365  <--- Returns messages posted in the last 365 days

     -ECHOTAG
     This removes ECHOTAG from the list of exported echos for this node.

     +ECHOTAG [R=# or D=#]
     This adds ECHOTAG to the list of exported echos for this node.  The
     plus symbol can also be omitted to add an echo, for example:

        +MYSTIC        <--- Adds the MYSTIC echo area
        FIDONEWS       <--- Adds the FIDONEWS echo area

     In addtion, a rescan value can be OPTIONALLY supplied where R specifies
     the # of most recent messages to return.  D returns messages less than
     # days old.  For example:

        +MYSTIC,R=50   <--- Add MYSTIC echo and export the latest 50 messages
        MYSTIC D=365   <--- Add MYSTIC echo and export last year of messages

     A comma or space can be used to separate the echo tag and the rescan
     information, if it is supplied.

     =ECHOTAG <R=# or D=#>
     This rescans an existing linked message base, where R is the number of
     newest messages to export, or D is the number of days of messages to
     export.  For example:

       =MYSTIC R=100        <--- Exports the most recent 100 messages
       =MYSTIC D=90         <--- Exports all messages posted within 90 days

     The echotag can be separated by a space as shown above, or a comma for
     example: =MYSTIC, D=365 will return the last year of messages in MYSTIC.

 + When performing a nodelist search when sending Netmail, Mystic will now
   pop up uplink of a point address, if a point address is entered.  This
   allows the user to see where the message is being sent, and it allows the
   "Force NL" option to be enabled without preventing people to netmail point
   systems.

   <ALPHA 40 RELEASED>

1.10 Alpha 41

 ! Areafix RESCAN will now only rescan areas that a downlink is subscribed
   to!  Whoops! :)

 + When exporting message quote data, Mystic will now replace CTRL-A
   characters (in kludge lines) with the "@" character.

 + Mystic should now properly add and use FMPT and TOPT kludges for echomail
   point systems.  This may fix incompatibilities with HPT (fingers crossed!)

 ! AreaFix will no longer try to automatically rescan a base when it is
   linked.

 + PKT passwords can now be configured for each echonode system and will be
   both added to created PKTs and enforced for incoming packets if a password
   is defined.

 + Mystic should now gracefully handle changing event configuration while
   MIS is running, including changing of event types.

 ! MIS event thread could get stuck if events were edited in the
   configuration at the same time.  Should be fixed.

 + Pressing ESCAPE while picking an echomail address now preserves the
   original setting, instead of setting the address to the first one.

 + File Base editor now allows a FileEcho Tag and a Network address to be
   defined for each file area.

 + The File Base editor now allows for echomail nodes to be linked to
   file bases.  This works just like message bases, but for file echoes!

 + Mystic MUTIL tosser now supports FileFix.  FileFix works just like
   AreaFix, except the message is addressed to FileFix and is used to
   link to configured file echos.  The following commands are supported:

      %HELP     - Append contents of DATA folder: filefixhelp.txt
      %PWD      - Change session password for BINKP/FTP/etc
      %LIST     - List all available file echos
      %LINKED   - List all linked file echoes
      %UNLINKED - List all unlinked file echoes
      +ECHOTAG  - Link to a file echo (+ can be omitted)
      -ECHOTAG  - Remove a linked file echo

 + MUTIL now counts the number of rescanned messages and includes them into
   the toss statistic on the status screen/logs.

 ! Other hard to explain or minor internal changes AKA I'm forgetting stuff :)

   <ALPHA 41 RELEASED>

1.10 Alpha 42

+ When receiving incoming BINKP connections from ARGUS, the CRAM-MD5 string
   is sent from ARGUS with a null terminated character at the end which
   changes the value of a CRAM string.  Mystic will now gracefully handle this

 + FIDOPOLL now creates the echomail.in semaphore file when it receives files
   during a client transfer.  This is true for BINKP, FTP, and Directory
   tossing.

 ! Fixed a problem with |DF MCI code when used inside another display file.

 ! QWKPOLL could possibly save a corrupted networked QWK message to a random
   message base in a rare situation.  This should be fixed now.

 + Mystic BINKP server will now attempt to strip ".org" and ".net" from domain
   names during authentication.  Domain names should have a maximum of 8
   characters to comply with the "domain.zonehex" BSO directory structure under
   DOS (and it should never include a period) but some people seem to append
   .net or .org for some reason (which can causes auth failures)

   <ALPHA 42 RELEASED>

1.10 Alpha 43

 ! Fixed event editor crashing introduced in last alpha.

 + Mystic's tosser now has a Twit filter.  Anyone added to the twit filter will
   have every message To or From that person automatically ignored while tossing
   messages.  In addition, an echomail address can be specified which will cause
   all messages labeled as originating from that node to be deleted.

   Twit messages will not be imported, and will not be tossed down to any
   downlinks; they will basically disappear from your network.  There can be up
   to 100 twits in the [ImportEchoMail] one per line, for example:

      [ImportEchoMail]

          ; twit names or addresses, up to 100

          twit=John Guillory
	  twit=1:396/60

 ! Hide AKA BINKP option now uses the domain to generate a list AKAs instead of
   zone.

   <ALPHA 43 RELEASE>
   

1.10 Alpha 44

! Twit filtering now actually does something other than log.

 ! The TID kludge line should now only be added to local messages, instead it
   was also added to messages being tossed to downlinks during import.

 ! Added some additional logging details into MUTIL packet importing

 ! Fixed PATH/SEENBY corruption when exporting multiple echomail messages at
   once (thanks to Mark for finding a producable problem)

 ! BINKP should now send the correct file dates when sending files.  It was
   sending every file with a March 2013 date (oops!)

 + Mystic Echomail nodes now support outbound FileBoxes.  If FileBox is
   enabled for that echomail node, then any existing files found in FileBox
   directory will be sent along with echomail packets.  There are two new
   settings for each node in the Echomail Node configuration:

      Use FileBox | No, Any, Hold
          FileBox | Defines the directory name for this node's filebox

   If FileBox is set to No, no files will ever be sent from the filebox.
   If set to Any: Files will be transmitted during any connection.
   If set to Hold: Files will only be transmitted when the system connects
   to you.

   All files are deleted after they are successfully sent.

   Note: This also works for FTP and Directory tossing as well, not just
         BINKP.

 ! Fixed a bug in the Area Index reader which could cause the Network
   category to show up incorrectly when sorting by network type.

   <ALPHA 44 RELEASE>

1.10 Alpha 45

 + FIDOPOLL now has a LIST command which lists all active echomail nodes,
   by description, address, and session type.

 + FIDOPOLL now has a ROUTE command which lists the top-down netmail route
   priority.

 + MIS and MYSTIC now correctly set the "effective" user ID and group ID
   instead of just the current process group and user ID.

 ! When running MIS as root, files received by BINKP, etc, will no longer
   have root ownership, but instead, have the ownership equal to the ownership
   of MIS.

 ! When running Mystic, the virtual PTY spawned by DOSEMU should no longer
   create itself as root causing an access error.

 + Mystic now attempts to detect whether or not it is being executed on the local
   console or not, and will properly setup the DELETE and BACKSPACE functionality
   based on this detection.  If you recently changed your backspace fuction in
   your terminal for A44, change it back.

 + During echomail bundle extraction, Mystic will now attempt to extract *.pkt
   instead of *

   <ALPHA 45 RELEASED>
   

1.10 Alpha 46

! In Linux, Mystic now has additional precautions to make sure the effective
   user is not root after binding the ports.  This should fix issues with BINKP
   root PKTs and DOSEMU when running in Daemon mode.

 + MUTIL can now process incoming TIC/FDN files and import them to the BBS.  It
   can also auto-create areas, perform CRC/size checks, process or refuse
   unsecured files, import .DIZ, support TIC Replace/LDESC keywords, toss files
   out to any downlinks connected to the file base.  In addition, failed files
   can be archived globally or specifically per echomail node.  FileFix is also
   provided to allow nodes to self-service their connected file bases.

   A new stanza [FileToss] should be added to MUTIL.INI (see the new default
   MUTIL.INI for this stanza).  In addition the filetoss option should be
   added under the [General] stanza.

   There are many options within this stanza all which are documented within
   the default MUTIL.INI.  Keep in mind, in order for an echomail node to use
   FDN, they must have FileBoxes enabled for their node.

   <ALPHA 46 RELEASED>

1.10 Alpha 47

 ! Fixed a minor backspace bug in the FS editor.

 ! Mystic was always saving the seconds as 0 when saving JAM message timestamps

 ! TIC processor in Linux was only processing files with the all-lowercase .tic
   file extension.  It should now ignore casing and process .TIC, .Tic, etc.

 + Mystic Windows version now traps additional Linux terminal keys are
   configured by default in some clients such as Putty.  This is only specific
   to the Windows version as the Linux/OSX versions have always done this.

 + Mystic's BINKP client and server now logs specifically when a connection
   times out or the connection is lost.

 + TIC process now uses the AKA listed in the "To" field of the TIC file as the
   address when auto-creating file bases, instead of zone matching.

 + Echomail tossing now uses the AKA listed in the PKT destination of the mail
   bundle as the address when auto-creating message bases, instead of zone
   matching.

 + Mystic's MIS will now log when it cannot bind to a port on startup and will
   shut down the server thread.

 ! The FTP client code (FidoPoll FTP and QwkPoll) have had some compatibility
   and performance improvements.

 ! Fixed the / key on the keypad and é in Windows.

 + Added more debug logging to BINKP sessions for further IREX compatibility
   diagnoses.

   <ALPHA 47 RELEASED>
   

1.10 Alpha 48

 + Enhanced the FILES.BBS import to hopefully work with some more odd ways of
   using it.

 ! Fixed random timeout issues from BINKP server

 ! Fixed an issue with the file handshake when a file already exists using
   BINKP.

   <ALPHA 48 RELEASED>
   

1.10 Alpha 49

 + FTP server now has more options for how QWK packets are shown in FTP listing
   Hide=Do not show ever, Root=Show only in root directory, All=Show in all dir

 + Changed the Linux access settings yet again.  I think I nailed it this time,
   all tests on all of my platforms have been successful!

 + Releasing this version early because I forgot to increment the A48 version.

   <ALPHA 49 RELEASED>
   

1.10 Alpha 50

+ The FIDOPOLL FORCED command now has an optional [type] to specify a session
   type For example:

      fidopoll forced dir      < only poll dir nodes
      fidopoll forced ftp      < only poll ftp nodes
      fidopoll forced binkp    < only poll binkp nodes

   This is mostly useful for the directory tossing mailer.  Including no type
   will poll all types as it always has.

 + Mystic now supports display of ICE colors, which allows for 8 new
   background colors within ANSI.  Note that your terminal needs to support
   this too, and it may show up as nothing or blinking text on some terminals.

   The latest version of NetRunner 2.x will also support proper ICE colors.

   There are also 8 new pipe colors to go along with this:

      |24 Grey background
      |25 Bright blue background
      |26 Bright green background
      |27 Bright cyan background
      |28 Bright red background
      |29 Bright magenta background
      |30 Bright yellow background
      |31 Bright white background

 + Pressing ESCAPE in MIS will now pop up a confirmation yes/no box before
   exiting.

   <ALPHA 50 RELEASED>
   

1.10 Alpha 51

! Fixed a bug with ICE colors where the |16 wasn't turning off the resetting
   ICE colors.

 + MIS now has the option to automatically BAN an IP if they connect to a
   server more than X times in X seconds.  The default recommendation is
   4 connections in 120 seconds.  This setting can be found in System
   Configuration -> Internet Servers.  Setting either of the values to a zero
   will disable this feature.

 + Windows version now has better support for terminals that use alternative
   extended keymappings, for better handling of keys like F1-F10, INSERT, etc
   between different telnet clients.

 + When in the Message Area list reader, CTRL+U now updates the lastread
   pointer of the currently selected message base to the last message.

 + Added some trickery in the socket shutdown code to ensure data is completely
   sent prior to terminating the connection (for logoff screens, etc).

 ! Fixed a bug in MIS which could cause it to crash randomly in Linux.  I just
   did a full load test of a 25 node BBS which consisted of allowed, blocked
   accounts (and an activity level that refused 25 nodes with BUSY).  No ghost
   nodes and thousands of connections handled!  Seems pretty stable now.

   <ALPHA 51 RELEASED>

1.10 Alpha 52

+ CTRL-P now posts a message of the currently select message base in the area
   index reader.  A new [Prompts] has been added to ansimidx.ini template file:

	; Shown before posting a message  &1 = message base name
	str9 = |16||11|CLPosting a message to area |15|&1|11.|CR

 + The FS editor now automatically reformats the paragraph when using the
   delete key.

 + Slightly streamlined the ANSI efficiency of the paragraph reformat command
   in the FS editor.  Keep an eye out for display issues.

 + New MCI code: SS.  This MCI code saves the remote user's screen in its
   current state.

 + New MCI code: RS.  This MCI code restores the remote user's screen in its
   current state.  IE:

        |SS|CLPress a key to restore screen|PN|RS

 ! Fixed a small ICE color bleed when resetting a grey background

 ! Fixed issues with PKT processing in MUTIL, where MUTIL could sometimes pull
   the wrong point or zone information, causing the PKT not to get tossed due
   to an invalid AKA.

 ! JAM: Mystic should now properly store any REPLY variation that is not
   specificly "REPLY:" as an UNKNOWN JAM kludge (replyto, replyaddr, etc)

 + Mystic BINKP now allows unsecured BINKP echomail transfers.  A new path for
   unsecure inbound files has been added to System Configuration > Paths
   as well as a toggle to enable this feature in Servers > BinkP.

   If this feature is on, then Mystic BINKP will accept connections and files
   from nodes that are not configured in the Echomail nodes, and these files
   will be placed in the unsecured directory.

 + MUTIL echomail import now allows the option to also toss packets from the
   unsecure directory.  This option can be set by adding the unsecure option
   to your "[ImportEchoMail]" stanza:

      [ImportEchoMail]

         ; Toss packets from unsecure directory in addition to inbound?
         unsecure_dir = false

 + MUTIL filetoss now allows the option to also process TIC/files from the
   unsecure directory.  This option can be set by adding the unsecure option
   to your [FileToss] stanza:

      [FileToss]

         ; Toss TIC from unsecure directory in addition to inbound?
         unsecure_dir = false

 ! Fixed a bug in the FTP server that caused FireFox to not pop up a login box
   if no credentials were provided on the URL.

 + Exporting a message with the V (show kludge) lines option turned on will now
   include kludge lines in the exported file.

 + MUTIL nodelist merger now logs the archive command line when debug logging
   is turned on.

 ! Mystic should now (hopefully) properly handle the seconds in PKT files and
   in both JAM and Squish format bases, and these changes should reflect
   accurately in PKT files as well.

 ! Added back the ridiculous BINKP debug logging so we can hopefully figure out
   any remaining issues with IREX compatibility (malformed command)

   <ALPHA 52 RELEASED>

1.10 Alpha 53

+ In the Index reader, Mystic will now "snap" to the next new area with
   messages in relation to your currently selected base (if the option is on)
   instead of always finding the first base with new messages in the list.

 ! Pipe codes are now striped from user name and alias inputs during new user
   applications.  This also happens when using a MPL program to replace the new
   user application process.

 + The /ME command will no longer broadcast to all chat rooms.  It will only
   show to people in the same chat room as the person doing /me.

 ! Mystic will now strip PIPE codes out of message subjects before displaying
   them in the message reader lightbar message list.  This was causing some
   formatting errors.

 ! Fixed a bug where backspace could always delete the input string when editing
   a default string using the stanard line input.

 ! Fixed a display bug where Mystic wasn't recalculating the "&X" MCI codes after
   editing a message.

 ! Fixed some pathing issues with UnSecure inbound files using BINKP

 ! Fixed BINKP resume problems (malformed command).

 + New option Internet Servers -> BINKP -> File Conflict specifies the action to
   take when there is a file name conflict with an incoming file and an existing
   file, and these files are determined to be different files.

      - Rename  : Automatically rename the file using the filename.#.ext where #
                  is the first available number.  So myfile.zip would be renamed
                  to myfile.1.zip

      - Skip    : Skip the incoming file send from remote system.  This will cause
                  the remote mailer to attempt to resend the file in a later
                  session

   Note: Existing files with the same timestamp will be resumed, unless they have
   a matching time stamp and file size, in which case Mystic will report the file
   as successfully received.

 ! Fixed a small bug where the output buffer was not being flushed when using the
   theme box MCI code #I

 ! Fixed a small MCI parsing bug which could cause some oddities in display files
   in very rare occasions

 + New option in message index reader to create the area list by categorizing
   bases using group information.  Two new options have been added to the [Options]
   section of ANSIMIDX.INI in the TEXT directory:

      [Options]
         group_list = true
         exclude_groups = 1,5

   If group_list is TRUE Mystic will generate the area list using group information
   as categories.  If group_list is false, Mystic will generate the area list by
   using the network address and network descriptions.

   The exclude_groups option specifies the group number to exclude from the list
   when group_list=true.  This is useful to exclude a "global" group from the list

 + Linux version of Mystic now supports mouse with a supported terminal (NetRunner)
   in some areas.  Some configuration boxes, the Area index message reader, and a few
   other places will have preliminary mouse support.

   <ALPHA 53 RELEASED>
   

1.10 Alpha 54

 ! Fixed a bug with group membership while using the index reader

   <ALPHA 54 RELEASED>
   

1.10 Alpha 55

 ! Fixed a possible record locking issue when listing files.

 ! Fixed an issue where the X hotkey when editing a menu would change both the X
   position and the Timer type.

 ! Fixed an issue with group ordering in the message index reader

 + Added the dreadful BINKP debug logging again to diagnose a unsecure session issue

   <ALPHA 55 RELEASED>
   

1.10 Alpha 56

! Fixed a problem with BINKP non-secure authentication from the Argus class of
   mailers

 ! Incoming BINKP authentication could sometimes fail if the address list was more
   than 255 characters.  Fixed.

 + When displaying kludge lines with the V command in the message reader, Mystic
   will now change the #1 ascii character to a @ for a cleaner display

 ! Fixed a very rare QWK message import bug in the QWK networking engine which
   could cause some minor corruption of text

 + Mystic now supports BINKP 1.0 with the Non-realiable extension

 + Mystic now supports BINKP 1.1 with fallback to 1.0/NR or 1.0

 + BINKP now responds to the remote side with "secure" or "non-secure" when
   accepting a new connection.  This is not required by BINKP but "recommended"

 + Importing packets from unsecure directory should now only process NETMAIL

 + MUTIL now logs the log level when starting up

 ! Fixed a bug with date converstions past the year 2070.

 ! Extended msg/nodechat buffer length per line, which in turn means about 50k
   more memory is used per active telnet node.  This is temporary until I recode
   it but this will fix the weird wrapping issue in node chat.

 + Node chat messages now word wrap, instead of just chopping the line off but
   as a result, MCI codes are stripped from the messages.  This probably should
   have always worked this way.

 + In addition to /MSG in node chat, /T or /TELL will also now send a private
   message to a user.

 + In addition to /Q, /QUIT will now quit node chat.

 + In addition to /ME, /EMOTE will now perform an action in node chat.

 + New node chat option: /R or /REPLY <text> will send a private message to the
   last person who sent you a private message.

 + Updated telehelp.asc in the default installtion to contain the new chat
   commands.

   <ALPHA 56 RELEASED>
   

1.10 Alpha 57

 ! Fixed a bug which could cause crashing in MPL programs.  I accidentally added
   the wrong files for A56 so I am release a57 just an hour or so later to fix it

   <ALPHA 57 RELEASED>
   

1.10 Alpha 58

+ Rejoice! BINKP debug logging spam has been removed.

 + Added new prompt info codes to node chat message prompts, as follows:

      &2 = Returns the node number
      &3 = Returns low node-specific color (node zero = blue (color 1), node
           one = cyan (color 2) and so on.
      &4 = Returns high (bright) node specific color (node one = bright cyan)

   Changed the default prompt #181 for node chat to use all of these things to
   create node specific colors as an example:

      181 |&3<|&4|&1|&3:|&4|&2|&3> |07

   The above prompt will produce something like this for g00r00 on node 1:

      <g00r00:1> This is a test message
      |02<|10g00r00|02:|101|02> |07This is a test message

   The brackets and the : will be color 2 (green) and g00r00 and 1 (the node
   number) will be color 10 (bright green).  The users text will be in grey
   color 7, but could easily be changed to use the node specific color, too.

   Now on node 2, the same thing would be true except cyan would be used.  Node
   3 would use red, 4 magenta, 5 yellow, 6 white, 7 blue, 8 green, and so on.

 - Disabled BINKP 1.1 and now identifies as 1.0 with NR for compatibility reasons

 ! Pressing enter on a private or netmail base should now properly allow you to
   read your messages in the Area Index reader

   <ALPHA 58 RELEASED>
   

1.10 Alpha 59

 ! Fixed a bug which was causing kludge lines to get completely stripped when
   tossing to downlinks.  The lack of kludges was also likely the cause of
   some weird addressing recently when replying to netmail.

 - Added back a check on the Sent flag in QWK networking.  This breaks FidoNet
   gating between QWK which was hidding from all of you anyway, but it may also
   stop the recently flood of duplicates as well.

 + The &6 MCI code in ANSIMLST related prompts now lists the message date in the
   users selected format.

   <ALPHA 59 RELEASED>
   

1.10 Alpha 60

 ! Fixed a bug which could cause QWK exported messages to get a few characters
   truncated from the end of the message.

 ! [X and [Y MCI codes are no longer parsed in message text.

 ! Removed critical sections from Raspberry Pi MIS because it was causing some
   crashes.  I have not tested the effects of this enough to know if MIS will
   remain stable on a Pi, but it should be usable under Pi now.

 ! When sending netmail, the INTL was listing the origin and destination
   addresses in the wrong order.  Should be fixed

 ! Fixed a bug with MPL char type function results

 ! Mystic's internal LZH/LHA file viewing functions were not compatible with
   level 2 files.  Mystic should properly handle level 0,1,2 formats now

 + New MPL procedure: AppendText (FileName, Text: String).  This procedure
   will append a single line of text onto a text file.  If the file does
   not exist, it will be created.  Example:

      AppendText("c:\test.txt', 'This is a line of text added to test.txt!')

 + New MPL variables CfgChatStart and CfgChatEnd.  These return the byte
   of the chat hour start and end variables from the System Configuration

 + Install program should now copy unix.install.txt to the docs directory

 + New file in data folder: goodip.txt.  This file works as a way to except an
   IP address from the DNS blacklist, DNS country check, and the auto ban IP
   systems.  The format of the file is the same as badip.txt.

 + Added error checking system into BINKP receive file functions.  If a remove
   connection sends too much junk, Mystic will terminate the connection.  This
   is just a shot in the dark at the CPU 100% thing that two people have
   reported.

 + Increased the internal Zmodem disk read and write buffer to 32kb in size up
   from 8k.

   <ALPHA 60 RELEASED>
   

1.10 Alpha 61

+ Slightly improved output buffering when generating default menus, loading
   messages in the full screen reader, the message index list, lb file list etc

 + Mystic now supports inline description importing from text files.  Each text
   file extension must be defined in the Archive editor with an extract command
   of "@TEXTDIZ".  When Mystic matches an extension with @TEXTDIZ as the extract
   command, it will search the contents of the file and import the description
   between @BEGIN_FILE_ID_DIZ and @END_FILE_ID_DIZ

 + Mystic now supports using the ansi viewer for viewing text files in the file
   listing and from within archive viewing.  If an extension is found with a
   view command of "@TEXTVIEW" then Mystic will display the file using the ANSI
   viewer (ansiviewer, ansiviewerhelp templates) and it will extract SAUCE.

 + Mystic now supports using the standard display file function for viewing
   text files in the file listing.  If an extension is found with a view
   command of "@TEXTSHOW" Mystic will display the file using the standard
   file display function.

 + Updated default archive configuration to support TXT ASC and NFO for DIZ
   import and file viewing, and ANS for file viewing.  Note that archives that
   have a first character of @ will now be ignored when the list of archives
   is presented to the user.  In other words, ANS TXT etc should start with @
   in their description so the user cannot select them for QWK arc type, etc

 ! INTL format was still not right so it has now been fixed.  Maybe.  I think!

 + The DI mci code now does a more accurate baud emulation. In display files
   you can specify |DI## where ## is a number between 0 and 99 that determines
   baud rate emulation.  The number maps to a real baud rate now:

     01-09 = 300      40-49 = 9600     80-89 = 57600
     10-19 = 1200     50-59 = 19200    90-99 = 115200
     20-29 = 2400     60-69 = 28800
     30-39 = 4800     70-79 = 38400    00    = Full speed

   So for example if you add |DI25 you will display at emulated 2400 baud
   and |DI55 you will display at emualted 19200 baud, |DI95 is 115200 etc

 + The Q key now exits the ansi viewer (in addition to escape)

 + The Q key now exits lightbar file list (in addition to escape)

 ! Fixed a bug in the new node chat text wrapping added a few alphas ago

 ! Page down in the lightbar lister no longer causes it to draw while its
   scrolling to the end of the file listing.

 ! LB file lister was showing the prompt twice in a row when the template was
   displayed the first time.

 + If an echomail message is sent out through the network while the author is
   editing it, a message will be displayed to them if they try to save the
   message (asking confirmation that they really want to resend it again).

 + New event system type: Hourly.  This event type will execute once every
   hour at the defined minute.  So for example, if you set the exec minute
   to 15, it will execuite at 15 minutes past every hour.

 + Mystic now exports messages in DOS CRLF format even when produced in Linux

 ! When Mystic gets message lines of 80 characters in the full screen reader it
   will now assume the terminal automatically wraps the text.

   <ALPHA 61 RELEASED>
   

1.10 Alpha 62

+ New prompt contains ANSI/ASCII values for TE MCI code:

      ; Terminal emulation for TE mci code
      ; word1=ASCII   word2=ANSI
      516 ASCII ANSI

 + New prompt contains values for UB mci code:

      ; UB results (File list type)
      ; word1=Normal  word2=Lightbar
      517 Normal Lightbar

 + New prompt contains values for UE mci code:

      ; UE results (message editor type)
      ; word1=line,   word2=full   word3=ask
      518 Line Full Ask

 + New prompt contains values for UG MCI code:

      ; UG results (gender/sex)
      ; word1=female   word2=male   word3=unknown
      519 Female Male Unknown

 + New prompt contains values for UJ MCI code:

      ; UJ results (message reader type)
      ; word1=Normal   word2=Lightbar
      520 Normal Lightbar

 + New prompt contains values for UQ MCI code:

      ; UQ results (lightbar quote style)
      ; word1=standard   word2=windowed
      521 Standard Windowed

 + New prompt contains values for various Yes an No text

      ; Yes and No text used in various places
      ; Word1=no   word2=Yes
      522 No Yes

 + New prompt contains values for various Off an On text

      ; Off and On text used in various places
      ; Word1=Off   word2=On
      523 Off On

 + New prompt contains values for No/Yes new scan toggles

      ; New scan toggle yes/no (on/off) toggle text
      ; Word1=no   word2=Yes
      524 No Yes

 + New prompt contains the message subject when editing auto signatures

      ; Editing auto signature message subject
      525 Signature Editor

 + New prompt contains short (3 char) months

      ; Months of the year (short name) one word per, Jan-Dec separated by a space
      526 Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec

 + New prompt contains full month names

      ; Months of the year (long name) one word per, Jan-Dec separated by a space
      527 January February March April May June July August September October November December

 ! /B in nodechat was chopping off the first character of the broadcasted message

 + Refined the baud rate chart slightly so it works in tiers of 10 for the DI
   MCI code.  Also refined the buffer flushes to (hopefully) perform a little
   smoother in Windows.

     01-09 = 300      40-49 = 9600     80-89 = 57600
     10-19 = 1200     50-59 = 19200    90-99 = 115200
     20-29 = 2400     60-69 = 28800
     30-39 = 4800     70-79 = 38400    00    = Full speed

 + New DI system is now implemented in Linux.

 + The Ansiviewer and Ansi gallery menu command options now require you to
   supply the actual baud rate that you want to display the ANSI files, rather
   than a 00-99 number that it used to accept.

   <ALPHA 62 RELEASED>
   

1.10 Alpha 63

 ! The TAB grid jump in Lightbar/Grid menus was not working correctly

 + Mystic now delays for 1 second after displaying an MPL execution error
   message.

 ! BINKP no longer displays a Remote disconnect/session timeout message when
   it shouldn't

 + Aborting an ANSI will now not abort until the current ANSI sequence is
   completed to prevent any ANSI code bleeding on abort (or until 10+ chars
   are processed).

 + Aborting ANSI file display is now based on time (checked every half
   second).  This was in 1.10 A62 but wasn't documented.

 + Reworked file buffering in file listings for a nice performance gain
   particularly when searching file descriptions and on operating systems
   with poor internal I/O caching.

 ! Mystic was incorrectly showing the message base editor menu command in
   the menu command list.

 + Mystic can now properly handle ANSI in .DIZ file descriptions.  It will
   parse the ANSI then convert them to PIPE colors and save them that way.

   <ALPHA 63 RELEASED>
   

1.10

 ! Mystic's NNTP server was not properly responding to HEAD and BODY commands
   causing newsreaders to fail that were not using the ARTICLE function to get
   message data (Pine/Alpine).

 ! MUTIL auto create and message base importers were not properly setting the
   creation date of the newly created bases.

 + Mystic's NNTP server now supports the NEWGROUPS function which allows
   clients to see when new message bases have been added.

 ! Some newsreaders would not properly display message text if the ID was not
   included in the header result from the ARTICLE command.  Mystic now always
   sends the ID.

   <1.10 RELEASED FEB 20, 2015>
   
whats_new_110.txt · Last modified: 2016/05/22 04:32 by avon

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki