mysticbbs/mystic/whatsnew.txt

2672 lines
110 KiB
Plaintext
Raw Blame History

! 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 <20> |15Chat mode engaged.|$X70 ESC/Quit |16|CR
; User2User chat mode ended
484 |CL|09|17 <20> |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 4 parameters.
#1: Message base number
#2: Total messages (this is a VAR parameter)
#3: New messages (this is a VAR parameter)
#4: 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
getmbasestats(count, 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>
! Fixed a bug with message base copy/paste where the base unique index was
not being generated.
! Fixed a bug with the /ADDR option of the MP menu command which was not
saving the destination address.
+ Added message base sorting. A range of message bases can be tagged using
the TAB key, and then sorted based on base name, filename, or network
type.
! Fixed a bug with port scanners causing MIS to create ghost nodes in
Windows version.
! 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>
+ 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;100;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>
! 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>
! 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>
! 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>
! 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>
+ 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.
<ALPHA 28 RELEASED>