.---------------------------------------------------------------------------. | Mystic BBS History Documentation Versions 1.05 through 1.10 | `---------------------------------------------------------------------------' ! = Bug fix + = New or changed feature - = Removed Note: Not all changes have been documented here. I try to keep a fairly accurate list of changes, but there are many times when I either forget, or just don't think its important to document a change. .-----------------------------------------------------. | May 2nd, 1999 -> Mystic BBS Version 1.05 - RELEASED | `-----------------------------------------------------' ! Mystic was not updating the user's total message posts if they were posting via a REP offline mail packet. ! Mystic was not pausing on a screen full when displaying a text file! I was testing some code right before the 1.05 release and I left the page pausing stuff commented out. Duh... =) + Mystic now allows message bases to be defined as "mandatory" in the scan setting. This means that users will never be able to toggle the base off in their scan settings. ! When executing an MPE program, the arrow key functions would stop working after a call to the MenuCmd procedure. + Mystic now displays "None" for the user's current message and file base if they have never selected a message base instead of just blank spaces. + New MCI code: IL. This code returns either ON or OFF depending on the user's node invisibility status. + Mystic now allows file bases to be defined as "mandatory" in the scan base's scan setting. This means that users will never be able to toggle the base OFF in their scan settings. + New command option for the MN (Message New Scan) option. When supplying /M on the command line, the MN command will only scan bases that are tagged as mandatory ("Always"). I will probably be re-writing the MN and FN commands completely sometime in the near future... ! The percentage bar in MIDE would get corrupt when compiling a .MPS file larger than 32,000 bytes. Fixed! .------------------------------------------------. | June 9th, 1999 -> Mystic BBS v1.05a - RELEASED | `------------------------------------------------' ! Fixed a bug in the Message Base Editor of MCONFIG.EXE which caused the QWK Index to get corrupted. This caused QWK packets to be corrupted when created via Mystic BBS. ! Fixed a bug in the File Base Editor of MCONFIG.EXE. The Default New Scan field was not allowing file bases to be set to "Always Scan". + The full screen editor quote window now saves the current text position after quoting, and will resume at that position if a user opens the quote window again. + In the user editor, the [ and ] keys now wrap around to the first/last record into the user database. This makes things a little easier... + The search function in the user editor now allows a record number to be entered. If a record number entered, Mystic will automatically jump to that record. + Added a new menu hotkey: TAB. When "TAB" is entered as a hotkey, the menu command will be ran when/if a user presses the TAB key. + The DF mci code in language prompts can now have text after it. After a DF is encountered, Mystic will look for a space or the end of the prompt. For example, "|CL|DFhello more text here" will now be displayed as expected. + Added four new menu command hotkeys: RIGHT, LEFT, UP, and DOWN. These only work in non-lightbar menus and are used to detect arrow key input in standard menus. ! Fixed carrier detection problems in the OS/2 native version. ! MIDE.EXE and MPLC.EXE were not always catching undefined variables in MPS source code. ! When using the Matrix login system, if the Matrix menu was not found, Mystic would loop over and over printing: "Menu not found. Loading fallback." Mystic will now exit with an error if the Matrix menu is not found. ! Other stuff... =) .------------------------------------------------. | July 6th, 1999 -> Mystic BBS v1.05b - RELEASED | `------------------------------------------------' + Added new DOOR MCI code: %0 passes the com port handle for Win32 and OS/2 versions only. ! The Win32 (and possibly the OS/2) version was displaying the message date incorrectly in JAM message bases. ! When executing a MenuCmd function from an MPE, the arrow keys would stop working after the MenuCmd. This was just fixed in the past version but I commented the fix for it out by accident when I recompiled the 1.05b executables. + The -F menu command now allows multiple flags to be manipulated instead of only one flag per menu command. See MYSTIC.DOC for more information! + Added a new display file: EMAILHLP.XXX. This file is displayed when the user enters "?" while reading e-mail messages. + Added a (Q)uit option to the first screen of the group editor. + When in the message and file base editor, Mystic will now redisplay the list of bases if enter is pressed at the prompt. ! It was rumored that ALT-U would drop carrier on a user. I wasn't able to reproduce this problem, but hopefully it has been fixed. ! The ALT-U (upgrade user) command was not upgrading a user's time when their security was changed while online. + If @S is found in a menu's display filename, Mystic will replace it with the user's security level. For example, a menu's display file of MAIN@S will translate to MAIN20 if the user has a security level of 20. If MAIN20 doesn't exist, Mystic will strip the @S and use the base filename (ie, MAIN in this example). + Bad password attempts now log the user name as well as the password entered. ! Mystic was not executing events if the execution time passed while a user was in a door. Now Mystic should log the user off immediately after returning from a door (if the event is forced) or wait until the user logs off (if the event is NOT forced). + The default screen length during a new user login is now configurable in System Config -> General Configuration. Prompt #153 has been changed, as well as prompt 372: 153 |CR|09Screen Pause Length (Enter/|&1): 372 |CR|09Screen Pause Length (Enter/|&1): + Duplicate file scanning option: System Config - File Base Settings -> Upload Dupe Scan. This can be set to three different options: None -> Mystic will not scan for duplicate files Current -> Mystic will only scan the CURRENT file base for dupes All -> Mystic will scan ALL file bases for duplicate files + Blind uploads have been added into Mystic. The entire upload process has been rewritten. The following prompts have been changed during the rewrite. Replace these new prompts with your old ones: ; File upload testing FAILED text 035 Failed ; File upload PASSED text 055 Passed ; Xfer successful: &1 = file name 083 |CR|12þ |11|&1 |03found.|CR ; Xfer failed: &1 = file name 084 |CR|12þ |11|&1 |03skipped.|CR ; Displayed before running uploads processor 206 |12þ |03Testing file for errors : The following prompts are new. Add these to your language file and recompile with the new MAKELANG.EXE: ; Blind upload? 375 |CR|12Blind upload? ; Processing uploads 376 |CR|14Processing uploads ...|CR ; BLIND dupe search 377 |12þ |03Searching for duplicate files : ; BLIND dupe found 378 Dupe found. ; BLIND no dupe found 379 None. ; Importing file_id.diz 380 |12þ |03Importing file description : ; FILE_ID found 381 Found. ; No FILE_ID 382 None. + New display file: BLINDUL.XXX - This file is displayed after a user selects a blind upload, just as the UPLOAD.XXX file is displayed. ! Pressing enter when upgrading a user's security level from the user editor was sometimes causing some strange display problems. ! Mystic was bombing out with an error when 0 byte files were uploaded, or if a user tried to view the contents of a 0 byte archive. + New prompt info MCI code for prompt #072: &2 now displays the file name for which the description is being entered. + Mystic now prompts the user to post a message on a message base after the last message has been read. A new prompt goes along with this addition, make sure you update your language files: ; Post on message base? 383 |12Post on |MB? + Enhanced the archive view functions. When a user views a text file from within an archive, Mystic will now display a line of text before sending the text file. The filename prompt has also been added to the language file. Prompt #306 should replace the old one, and prompt 384 should be added to your language file. ; Viewing text file &1 = Filename 306 |CL|14Viewing contents of text file: |15|&1|14.|07|CR ; View text file filename prompt 384 |CR|09File name: + More rearrangement of prompts has brought two more additions to the prompt file. Add the following: ; Download successful 385 |CR|12Transfer successful! ; Download failed 386 |CR|12Transfer failed! + Added the option to download files from within archived files. When viewing the contents of an archive, files can now be downloaded. As a result of this added feature, prompt #304 has been changed: ; Archive view command prompt 304 |CR|14Archive View: (|15R|14)e-list, (|15V|14)iew File, (|15D|14)ownload File or (|15Q|14)uit: |15 + When viewing a text file from within an archive, MCI codes are no longer filtered out. The file is displayed in straight text mode. ! If the last read pointer file in a JAM base was deleted for some reason, Mystic would not recreate it, and thus users weren't getting their last read information saved. ! Fixed a bug in MIDE which would cause an error when when text was marked and deleted (under certain conditions). + New ACS command: OI. This returns true if the user is invisible. + New MCI code: AV. This returns Yes or No depending on the user's node message availability. + New ACS command: OA. This returns true if the user is available to receive node messages. + Added three new Prompt Info MCI codes to prompt #139 (Who's Online): &6 = User's gender (M or F) &7 = User's Age &8 = User's Availability + Added a new menu command: MM - This is a mass e-mail command, which allows the sysop to send multiple users e-mail all in one shot. The following new prompts have been added, make the nessasary changes to your language files, and recompile: ; Mass mail prompt 387 |CRsend mass mail by:|CR|CR(1) ACS level|CR(2) List of users|CR(3) All users|CR(Q) Quit|CR|CRCommand: ; Mass mail ACS prompt 388 |CREnter ACS level: ; Mass mail name info 389 |CR|11Enter user name, or search string.|CREnter a blank line to end.|CR ; Mass mail name prompt &1 = # of users in list 390 |CR|11|&1 |03users in list. Enter user name: ; Mass mail name list 391 |CR|14User mailing list:|CR ; Mass mail name format &1 = name 392 |03|&1 ; Mass mail name list confirmation 393 |CR|12send e-mail to this list? ; sending mass mail 394 |CR|CR|14sending mass e-mail, please wait ... + New language prompt #395: Displayed when a user tries to send a node message to an unavailable node: ; Node unavilable 395 |CR|14Sorry, this user is marked as unavailable. + Added the option to perform a text search on message bases. When a user selects to read message in the current message base, Mystic will now offer the option to search for text, which will search the From, To, and Subject fields as well as the message body. Prompt #112 has been changed and a new prompt (#396) has been added: 112 |CR|07(|14F|07)|15orward, |07(|14N|07)|15ew, |07(|14Y|07)|15ours, |07(|14S|07)|15earch, |07(|14Q|07)|15uit? ; Msg search prompt 396 |CR|03Enter search string: + Expanded the inactivity timeout setting to allow for up to 9999 seconds. It would only allow for up to 255 seconds in the past. ! Fixed some strange MPE engine bugs in the Win32 and OS/2 versions. For some reason, some MPE programs that worked fine with the DOS version were not working correctly with the 32-bit versions. + Added ([) Prev and (]) Next commands to the Protocol editor. + Added the ability to toggle hotkeys on or off. A new MCI code HK is now available which displays ON or OFF depending on the user's hotkey setting. The GE menu command has been expanded as well - option 19 now toggles the user's hotkey status. A new field has been added for each menu command in the menu command editor. This field is called "LONG KEY" and works just like the hotkey field except it sets the valid key to execute the command when the user has hot keys toggled OFF. + Added new option to System Config -> New User Settings in preparation for the lightbar message reading system. "Message Reader" has three options, similar to the file lists: Normal, Lightbar, and Ask. Two prompts have been added to go along with this: ; Info edit: Msg Read type 397 |CR|11(|030|08) |14Normal |15: |10View messages page by page|CR|11(|031|08) |14LightBar |15: |10Scroll message lists with arrow keys|CR|CR|15S|10ele|02ct |15T|10yp|02e: |15 ; New user: Msg Read type 398 |CR|11(|030|08) |14Normal |15: |10View messages page by page|CR|11(|031|08) |14LightBar |15: |10Scroll message lists with arrow keys|CR|CR|15S|10ele|02ct |15T|10yp|02e: |15 + Added new option to the Security Level editor. The option "Post / Call Ratio" is used to set the number of posts a user must have within 100 calls to the BBS. + Added new ACS command: OP. This option returns true if the current user meets the set post / call ratio for their security level. If they do not meet this ratio, OP will be false. + Added two new MCI codes: PC - This returns the user's actual post / call percentage. SP - This returns the user's needed post / call percentage in order to have a passing post/call ratio. + Completed the new full screen ANSI message reader / lister. There are lots of changes that go along with this - as the entire message reading process has been rewritten for this addition. The first new addition is a new ANSI template: ANSIMLST.XXX. This is the template for the ANSI message index listing, where users can scroll through a list of messages with the arrow keys. The following MCI codes are used: !1 = Y position of the top line in the message index list !2 = Y position of the borrom line in the message index list !3 = Bottom of template. When a user exists from the list, Mystic will move to this Y position in preparation for other text. The second new addition is a new ANSI template: ANSIMRD.XXX. This is the template for the actual message reader, which allows the user to scroll through the message using the arrow keys / pgup, pgdn keys. The following MCI codes are used: !1 = Y position of the top line of the message text window !2 = Y position of the bottom line of the message text window !3 = Y position of the bottom of the template. The message header information is the same as it for the standard message reading mode: |&1 From |&6 Total messages in base |&2 To |&7 Reply to message number |&3 Subject |&8 See also message number |&4 Date / Time |&9 Message status |&5 Message number The third new addition are new prompts. Add the following prompts to your language files and recompile them using MAKELANG.EXE: ; Ansi msg read: index list format ; &1 = msg # &2 = subject &3 = from &4 = to 399 |15|$L05|&1 |10|$R30|&2 |14|$R20|&3 |13|$R20|&4 ; Ansi msg read: index list highlight ; &1 = msg # &2 = subject &3 = from &4 = to 400 |08|23|$L05|&1 |$R30|&2 |$R20|&3 |$R20|&4|16 ; Ansi msg read: index list highlight OFF ; &1 = msg # &2 = subject &3 = from &4 = to 401 |15|$L05|&1 |10|$R30|&2 |14|$R20|&3 |13|$R20|&4 ; Ansi msg read: delete msg 402 |CR|12Delete this mail? ; Ansi msg read: jump to msg: &1 = cur msg num &2 = high msg num 403 |CR|09Jump to which message? (1-|&2): ; Ansi msg read: scan toggle &1 = message base name 404 |CR|11|&1 will NOT be scanned in new message scan! 405 |CR|11|&1 will be scanned in new message scan! 406 |CR|11|MB is marked as mandatory reading! + Separated the "To:" prompt when posting a message. The following new prompts are: ; Reply msg To: standard 407 |CR|09To: ; Reply msg To: lightbar 408 |CR|09To: + Mystic now has the option System Config -> New User Settings -> HotKeys. This option allows for three options: Yes/No/Ask. Two new prompts have been added: ; User edit: Hotkeys 409 |CR|12Use hot-key input? ; New user: Hotkeys 410 |CR|12Use hot-key input? + Added a new command to the standard message reader: (L)ist messages Three new prompts go along with this new addition: ; Msg List Header 411 |CR|15Msg # From To Subject|CR|09|$D79- ; Msg List Format (Same prompt info as header) 412 |15|$L05|&5 |09|$R20|&1 |$R20|&2 |10|$R30|&3 ; Msg List Footer 413 |09|$D79-|CR|PA + New MPL procedure: MOVEY. This works just like MOVEX except it works for the Y position. + The DATE/TIME PromptInfo MCI code for message headers have been separated. Now &4 = msg date, and &0 = msg time. ! Mystic had a slight error in the format of the CHAIN.TXT door drop file. This should be fixed, and it should be created properly. + Rewrote the variable handling in the MPE engine. Arrays can now have full expressions as indicies. For example: Str := 4 Test(Str2Int(Str) - 3) := 'Hello world' + The Win32 version now sets the console window title to "Mystic Node x" where X is the node number. Haven't added this to the OS/2 version yet as I haven't had the chance to search for the appropriate API call. + The mouse is no longer active during a Mystic BBS Win32 session as it was in the past. + The VAR statement (for defining variables) in the MPE engine has been rewritten to allow a comma to separate variable defintions. For example, the following is now supported: var somestr string, somech char, somebyte byte + Added local procedure variables into the MPE language. This means that variables can be defined within a procedure and will only be able to be used in that procedure. For example: Proc Hello Var S String S := 'Hello' WriteLn(S) Pend Hello WriteLn(S) The above example would not compile because the main body of the program is trying to access a variable which was defined within the HELLO procedure only. Variables declared in the main body of the program are still considered global variables, and will be available to any/all functions. + The MPE engine compilers now ignore all "BEGIN" and "END" keywords to make it a little more "pascal-syntax" friendly. Some people think that the "BEGIN/END" helps make their program code more readable. However, this could cause some confusion in the future since BEGIN and END don't come up as errors, but they are not actual valid MPL keywords. + MIDE now syntax highlights "BEGIN" and "END". + Changed the syntax of the Procedure definition in the MPL. The new format is as follows: Procedure () Pend So for example, an old procedure that looked like this: Proc Hello_World WriteLn ('Hello world') Pend Hello_World Would now be changed to: Procedure Hello_World WriteLn ('Hello world') Pend Now that this change has been implemented, all older .MPS source code will need to be modified to fit this format. The "PROC" keyword has been extended to "Procedure" and the procedure name is no longer required after the "Pend" statement. If you forget to remove the name at the end of your Pend statement, the code will still compile. However, it will not execute properly! + Variables can now be passed to procedures! For example, the following is a valid procedure: Procedure Print (Str String) WriteLn ('Contents of STR = ' + Str) Pend Then, to call the procedure in your code: Print ('Hello World') And now that the MPL engine is a little more friendly to some of the Pascal syntax, the following is a valid procedure: Procedure Print (Str String) Var Str2 String, Str3 String Begin WriteLn (Str) Pend + Added four new options to menu commands MW (Write e-mail) and MP (post new message): /TO: <- This sets the message's TO field. /SUBJ: <- This sets the message's SUBJECT field. /ADDR: <- This sets the message's netmail address field. /F <- Forces user to post the message (they can't abort it from the editor). + Added two new options to the FF menu command (Create/Download file list): /NEW - Creates a list of only NEW files. /ALLGROUPS - Creates a list of files in ALL file groups. + New MPL function: ISLOCALKEY. Returns TRUE or FALSE after calling READKEY based on who entered the key. ! If Allow ANSI is set to NO, Mystic will now skip the graphics detection and automatically set their terminal type of ASCII. ! Mystic was not pausing after a screen size of message and file group names when selecting groups. + Added new MPL command: WriteLocalXY. This procedure allows text to be printed to the local screen only. - Removed MPL command: StatusWrite. This procedure can be completely replaced by the new WriteLocalXY command. + New MPL "CFG" variable: CFGSTATUSTYPE + Added two new prompts, to separate the Xport message function in ansi and standard reading modes: ; Ansi msg read: export to file 414 Export to filename: ; Ansi msg read: local export 415 Export to filepath/filename: + Added the user's age after their birthdate in the user editor. + MPE change: The Write and WriteLn statements now REQUIRE that any variables passed or functions used are of the STRING type. If you want to print numerical variables, you must use the strI2S function. + Added new MPE command: CONST. This allows constant variable defintions to be defined. At this time there are a few limitations... Any CONSTANT value cannot be used when assigning variables. For example: Var Str String Const SomeStr = 'Hello World' Begin Str := SomeStr End The above example won't work, because you are trying to assign a variable the value of a CONSTANT. They do work, however, in expression evaluations: Const SomeByte = 69 Begin If SomeByte > 69 Then WriteLn ('Greater!') ElseIf SomeByte < 69 Then WriteLn ('Less than!') Else WriteLn ('Same') EndIf End + Added permanent user index numbers for each user. These will be used quite a bit internally in the future. + New ACS command: Ux. This command will return true if the user's permanent index matches the supplied number. For example, an ACS of "u1" would only return true if the user's permanent index was 1. + Added FUNCTIONS into the MPE engine. Functions work almost indentical to procedures except that they return values. The following is an example function: Function Return10 : Byte Begin Return10 := 10 Pend Var Temp Byte Begin Temp := Return10 + 10 WriteLn ('This should say 20 : ' + strI2S(Temp)) End + Added new prompt #416 to the mass e-mail... ; mass email subj: prompt 416 |CR|09Subject: + Added new MPE command: ONEKEY. + Added new ACS option to System Config -> General Settings. The "See Invisible ACS" is the ACS level required to see users marked as invisible in the Who's Online listing. + Added new USER variable into the MPE engine: USERPERMIDX is the user's permanent user index number. + The new user feedback e-mail can now be configured in System Config -> New User Settings. In the past it would automatically send the e-mail to the SysOp name defined in System Config -> General Settings. + Added some new options to the Mass Upload command. The (G)lobal command now scans all areas for all new files automatically. If no FILE_ID.DIZ file is found, Mystic will now prompt for a file description, unless in Auto Area or Auto Global mode. The mass upload command should also be much faster than it was in previous versions! + Added new MPE demo program: MPEDEMO.MPS into the default full installation. I'll also include it into the 1.06 upgrade package. + Added a wide-beta release telnet server for the Win32 version. This server allows Mystic BBS for Win32 to handle incomming telnet connections without the need of a virtual modem driver. Unfortunetly, existing DOS doors and protocol drivers will not work with this server, so it may not attract too many SysOps. In the future, Mystic will have its own set of internal protocols which will work over a telnet connection. + Separated many of the "invalid password" prompts. From now on, #417 will be a "general" invalid password prompt, for most things like invalid menu passwords, invalid file/msg base passwords, etc. Other invalid password prompts have been separated and will be listed below: ; General Invalid PW 417 |CR|12Invalid password. + Separated the new user login PW prompts with the change password prompts. Along with this comes some new prompts: ; INFO EDIT: Do not match 418 |CR|12 Passwords do not match! ; INFO EDIT: PW prompt 419 |CR|03Enter your desired password.|CRIt should be between 4 and 20 characters.|CR|CR|09Password: ; INFO EDIT: PW too short 420 |CR|12Password must be at least 4 characters long! ; INFO EDIT: Verify PW 421 |CR|11Enter your password again for verification.|CR|CR|09Password: + Some new and changed invalid password prompts: ; User login: Invalid PW 003 |CR|12invalid password. ; Matrix user login: Invalid PW 293 |CR|12Invalid password. ; UNUSED 331 UNUSED!! ; General Invalid PW 417 |CR|12Invalid password. ; Invalid New User PW 422 |CR|12Invalid password! ; Invalid Matrix PW 423 |CR|12Invalid password! + Added new blind upload prompt: ; Upload: No files found 424 |CR|15No files found!|CR|CR|PA + Added new read command (B)y you. When this is selected, Mystic will only show messages post by the user. Prompt 112 has been changed to add this command: 112 |CR|07(|14F|07)|15orward, |07(|14N|07)|15ew, |07(|14B|07)|15y You, |07(|14Y|07)|15ours, |07(|14S|07)|15earch, |07(|14Q|07)|15uit? + Added new menu command: MV - View outbound (sent) e-mail. ! When compiling a file list, Mystic would sometimes not display the file base name after the "Working..." prompt. This only happened when there were no files in a base and the data files didn't exist for that area. + File list compiler now aborts if there are no files in the list. A new prompt goes along with this: ; File list compile: No files found 425 |CR|15No files found!|CR|CR|PA + Added the ability to refuse multinode user logins on multiple nodes. If System Config -> General Config -> User Multiple Logins is set to Yes, Mystic will not allow the same user to be connected to more than more node at a time. A new prompt #426 has been added: 426 |CR|14You cannot login to more than one node at a time.|CR|CR|PA .-----------------------------------------------. | Jan 30th, 2000 -> Mystic BBS v1.06 - RELEASED | `-----------------------------------------------' + Added new Prompt Info MCI code to Prompt #30: &7 now returns the user's age. + New MCI code: RPxx. This sets Mystic's pause count to the value contained in xx when displaying a text file. I've found that this can come in handy when doing some in depth modding. For example: RP10 will set the pause count to 10, meaning Mystic thinks its displayed 10 lines since the last page pause. ! SysOp feedback after a chat page was not working. It does now! =) + The key can now be used to toggle the Yes/No lightbars. ! New user feedback was not being forced. In other words, the user would be able to abort posting the message. This has been fixed. + LANGEDIT.EXE will now ask if you would like the language file automatically compiled after saving. + Updated the node chat a little bit. The chat now has real-time updating, which basically means that you can be typing a reply and it will still display other user's text. In the past, if you weren't typing it would look for new text from other nodes, but now it will do it the entire time you're in chat, no matter what you're doing! I've also been thinking about rewriting the chat to be more IRC-like. If that sounds good, let me know and i'll probably do it! =) + New program LANGUPDT.EXE has been added to the Mystic upgrade packages. This program will automatically update old language files with new or changed prompts... ! MPE: The GET/PUTMBASE functions were off by a number, for example GetMBase(1) would actually return Base 0. ! MPE: PutMBase was corrupting a field in the message base record. + MPE: Added new MBASE variable: MBASENTYPE. Just to clear some things up here: MBASENTYPE = Net type (Local, Echomail, etc) MBASEBTYPE = Base type (JAM, Squish) MBASEPTYPE = Post type (Public, Private) ! Fixed a small bug in the Win32 full screen editor that caused Mystic to lock up. + New prompt in node chat: ; nodechat input &1 = username 427 |07[ |15|&1 |07>> |03 + Added a configurable WFC screen template. The WFC screen template is found in the data directory as "WFCSCRN.XXX". The random display file system works as well, allowing up to 10 randomly selected WFC screens! The following screen info codes are used: !1 Status line (40 characters in length) !2 System Time !3 System Date !4 Next Event Time !5 Top X/Y position and standard color of node window !6 Bottom X/Y position and highlight color of node window !7 Top X/Y position and color of modem window !8 Bottom X/Y position of modem window + MPE: Added two new USER variables: USERCURMBASE - User's current MBASE USERCURFBASE - User's current FBASE + Added User's Screen Size into the user editor. I can't believe I forgot to add that in the past! =) ! Mystic was not updating the user's flags on the statusline after the -F menu command was used. + Passing a zero to the baud parameter when loading Mystic now skips the WFC screen and runs the user login in local mode. Passing a -L on the command line still goes to the WFC screen first. + Changed the split screen chat a little bit. First, the text color is now defined by the screen info MCI codes. This allows the SysOp and User windows to have different text color. Second, two new screen info codes have been added: !0 - Specifies the X/Y position and color for the user's time left. It will be updated every minute, and is optional. !9 - Specified the X/Y position and color for the system time. It will be updated every minute and is optional. + Added new nodechat prompt: ; nodechat user not found 428 |CR|15User not found. ! The "S" optional data option for the MR menu command was not working properly. ! When reading messages in the lightbar message reader, users were able to delete messages even if they were not the user who posted them. ! Fixed a bug in the menu hotkeys when entering "/x" commands. Sometimes Mystic would temorarily ignore input after backspacing over the "/" character. + The maximum number of menu commands have been expanded to 75 commands per menu, rather than the old maximum of 50 commands. + Added the option for Sysop/Users to toggle which mode the lightbar message reader starts in: message index mode, or message reading mode. Along with these additions comes to following: System Config -> New User Settings -> Msg Lightbar Idx. This option sets the default for new accounts and can be set to "Yes/No/Ask". Added prompt #429: ; new user: use lightbar message index? 429 |CR|12Use lightbar message index? |11 Added new option to menu command GE: 21. This toggles the status of the user's lightbar message reading index mode on/off. Added new MCI code: ML. This returns on/off based on the status of the lightbar message index. + Added the (Q)uit command to the lightbar message reader. This command was in the standard message reader, but I somehow overlooked it in the lightbar version. + Added new program: MYSTPACK.EXE. This program packs all JAM message bases on your BBS. It will remain external from MBBSUTIL.EXE until I am able to finish the Squish side of things. Here's the following functions: - Removes deleted messages from your data files. - Renumbers messages in numerical order - Renumbers the reply chains (Refer to and See Also) - Updates each user's last read pointers - Removes any message in violation of the Max Msgs / Max Age settings for each base (found in the Message Base Editor). It also has the option to -SKIPFIRST, which will skip the first message in all local message bases, so they will never be deleted unless marked deleted by the SysOp. This allows for a "This base is for..." or BASE_ID.DIZ message to always stay as the first message. ! When inputting a password and CTRL-Y was pressed, Mystic was filling the entire field up with the echo character instead of blank spaces. + Added two new command options to the FG menu command (change file group). The + and - command will now move to the next and the previous file group. Mystic will automatically find the first file base the user has access to after changing groups. + Added two new command options to the MG menu command (change message group). The + and - command will now move to the next and the previous message group. Mystic will automatically find the first message base the user has access to after changing groups. + Added new prompt: Message base scan setting footer: ; msg scan setting footer 430 + In Lightbar menus, Mystic will now keep track of the user's lightbar position when a menu command is ran. In the past, it would always default to the first command on the menu when it was redisplayed. + Full screen editor quote window now only adds a blank line to the bottom of the message if new text was quoted. + The %0 door MCI code now returns the fossil com port in the DOS version. In the past, it would not get filtered out. ! Ocassionally, when editing text of a posted message, Mystic would garble up the display. ! Mystic was not correctly rewriting the message index information after saving changes to an edited message. This would cause some JAM packers to duplicate messages, which other JAM packers would process the index correctly. + Mystic will now try to put new users into a group instead of having them start out in no group. + The (N) command during a lightbar message index has been changed to (G) to match the identical command when reading in non-lightbar mode. This function goes to the next base in the message scan, or does nothing if not in a message scan. You may want to update your lightbar message index template and your AMSGHLP1.XXX files to reflect these changes. + The (ESC) function in the lightbar message reader has been changed to quit reading. In the past, it would show the lightbar message index. + The lightbar message index command, which was (ESC) in the past, has been changed to (L) to reflect the same command as the non-lightbar reading command to view the message index. + Made some major changes to the file lists, in preparation for support for long file names. The ANSIFLST.XXX template has been changed quite a bit and the highlight data has been moved to prompts to make it more flexible. The following Screen Info codes are used in ANSIFLST.XXX now: !1 = Top Y location of the file list window. !2 = Bottom Y location of the file list window. !3 = Y location of the status text. !4 = X/Y location of the number of files tagged. The following prompts are new or changed: ; Standard file list: #/filename: ; &1 = file num, &2 = filename, &3 = tag char 042 |15|&1|07|&3 |14|&2 ; Standard file list: description/info ; &1 = size, &2 = date, &3 = DLs, &4 = desc, &5 = uploader 043 |07ÀÄ |09|$L11|&1 bytes |10|&2 |11|&4 ; Standard file list, ext desc: &4 = description 045 |11|$D34 |&4 ; Lightbar file list: #/filename: ; &1 = file num, &2 = filename, &3 = tag char 431 |15|&1|07|&3 |14|&2 ; Lightbar file list: highlight on: &1 = #, &2 = filename, &3 = tag char 432 |00|23|&1|16 ; Lightbar file list: highlight off: &1 = #, &2 = filename, &3 = tag char 433 |15|&1|07|&3 |14|&2 ; Lightbar file list: description/info ; &1 = size, &2 = date, &3 = DLs, &4 = desc, &5 = uploader 434 |07ÀÄ |09|$L11|&1 bytes |10|&2 |11|&4 ; Lightbar file list, ext desc: &4 = description 435 |11|$D34 |&4 ; Lightbar file list, uploaded by: &5 = uploader 436 |03|$D34 Uploaded By: |&5 ; Standard file list, uploaded by: &5 = uploader 437 |03|$D34 Uploaded By: |&5 ! When a user tried to login on more than one node at a time (and multiple login is disabled), their time left was being set to 0. + Added new MCI code: PI. This just displays a | character. ! There was a security leak in Mystic's email system that allowed user's to access other user's email messages! This has been fixed! + Added a set of internal file transfer protocols. Included are the following: Xmodem Xmodem/CRC Xmodem/1K Ymodem Batch Ymodem/G Batch Zmodem Batch Support for external protocols has been removed, at least temporarily. I'm not aware of any external protocol drivers that will work with long file names, or with Mystic's internal telnet server anyway. So supporting them wouldn't do much good. Two changed prompts go along with this: ; Protocol select batch prompt 061 |CR|14[|15Y|14] Ymodem|CR[|15G|14] Ymodem/G|CR[|15Z|14] Zmodem|CR|CRSelect Protocol [|15Y G Z|14]: ; Protocol select standard prompt 062 |CR|14[|15X|14] Xmodem CRC|CR[|151|14] Xmodem 1K|CR|14[|15Y|14] Ymodem|CR[|15G|14] Ymodem/G|CR[|15Z|14] Zmodem|CR|CRSelect Protocol [|15X 1 Y G Z|14]: Also, be aware that when updating you will probably want to modify all the prompts that ask for a filename, by adding a CR at the end of them. For example: OLD: 344 |CREnter file name: NEW: 344 |CREnter file name|CR: - Display files PROTO.XXX and PROTOB.XXX have been removed, as they are useless now. You can replace prompts #61 and #62 with the PROTO and PROTOB display files if you want to still use those files. + Added new LightBar Grid menu type. In the menu flags for each menu, there is now a menu type field, which can be set to any one of the following options: Standard Lightbar Lightbar Grid Both Standard and Lightbar options work the same as they have in the previous versions, but the LightBar Grid system implements a way more confusing and way more flexible LightBar system. =) When the grid system is activated on a menu, it will use the following new options that have been added to each menu command within a menu: Arrow Up : 1 Arrow Down : 5 Arrow Left : 2 Arrow Right : 4 If a menu command is currently highlighted in a lightbar grid menu, and the up arrow is pressed, Mystic will jump to menu command #1. If the down arrow is pressed, Mystic will jump to menu command #5. The same also goes for the left and right options. As you can see, this will allow for an enormous amount of flexibility as compared to the previous lightbar system and the lightbar systems found in most other BBS packages. However, its a little more work to create these menus so I imagine only some of the hard core SysOps will make much use of this system. + Due to "popular demand", file description line length has been expanded from 45 characters to 50 characters. + The mass upload command now executes the upload tester if one has been configured for Mystic. + Added a "Post on this base?" prompt after reading messages into the Lightbar message reader. + Cleaned up the functionality of the Lightbar message reader quite a bit, to make it operate more like the standard reader in certain places. + MPE: New MPL function ODD. Returns true or false based on if the passed number is ODD or EVEN. + MPE: Finished up the CONST variable support. In the past CONST variables would only work in evaluations and could not be used in variable assigning statements. + MPE: In the past, declared functions were not allowed in expression evaluations. They are now! =) + MPE: Boolean parameters are now allowed in declared functions and procedures. + MPE: Boolean modifiers were not allowed when assigning variables. I totally overlooked that somehow and never noticed that it wasn't implemented. For example, this will work now: Function Neg (Bol Boolean) : Boolean Begin Neg := Not Bol Pend + Added a character in the lightbar message index listing to mark messages which are new. The character can be setup in System Config -> Language Definitions -> New Msg Char. Prompts #399-401 now have a promptinfo &5 code that returns either the new msg char or a space. + Recoded some internal MPE engine functions. The compiler is probably now a little faster than it was in the previous release, and the executor engine is probably about 300-400% faster in most cases! + Cleaned up the word wrapping in the full screen editor. In the past, if a paragraph existed under the paragraph currently being edited, Mystic would allow the text from the first paragraph to wrap into the second paragraph. The editor now detects a second paragraph and will insert a line when wrapping to prevent this. + Added a second set of access flags for each user. + Added new ACS command: "Dx". This command works just like the "Fx" ACS command, except it targets the second set of access flags as opposed to the first set, which "Fx" checks. + The login display file "FLAGx.XXX" has been changed to "FLAG1x.XXX". + Added new display file "FLAG2x.XXX", which is works just like FLAG1.XXX except it targets the second set of access flags. IE: FLAG2A.XXX will display during login if the user has flag A set in their second set. + Rewrote the user editor to make room for the second set of flags, and other new user options. + Added new menu command: -D. This works identical to the -F command, and is used to toggle or set flags in the user's SECOND set. + Added new user database field: E-mail address. This option can be set or disabled in the new user settings, and edited within the user editor. Two new prompts have been added to go along with this: ; new user: enter email address 439 |CR|09Enter e-mail address|CR: ; info edit: enter email address 440 |CR|09Enter E-mail address|CR: An addition to the GE menu command has also been made. Optional data 22 now edits the E-mail address field. New MCI code: UK has been added, which returns the users email address. + Added new user database field: User note. This option can be set or disabled in the new user settings, and edited with the user editor. Two new prompts have been added to go along with this: ; new user: enter user note 441 |CR|09Enter your desired user note|CR: ; info edit: enter user note 442 |CR|09Enter your desired user note|CR: An addition to the GE menu command has also been made. Optional data field 23 now edits the User Note field. New MCI code: UI has been added, which returns the user note field. + Added three new optional/configurable questions into the user database. They can be configured/enabled/disabled in New User Settings. Six new prompts have been added: ; new user: option 1 443 |CR|09Enter optional field 1: ; info edit: option 1 444 |CR|09Enter optional field 1: ; new user: option 2 445 |CR|09Enter optional field 2: ; info edit: option 2 446 |CR|09Enter optional field 2: ; new user: option 3 447 |CR|09Enter optional field 3: ; info edit: option 3 448 |CR|09Enter optional field 3: Optional data fields for menu command GE have been added to edit these fields. These are 24, 25, and 26. Three new MCI codes have been added. U1, U2, and U3. These return the optional data 1, 2, and 3 fields. + The "Post on this base" question is no longer asked when a user aborts reading messages. + Added the ability to disable the Lightbar Quote Window both on a SysOp and a user basis. These have been added into the user editor and into the new user settings. One changed prompt goes with this: ; New user: Use FSE quote window? 060 |CR|12Use full screen editor quote window? Optional data field 27 has been added into the GE menu command to toggle this option on a user basis. New MCI code of UQ has been added, which returns "standard" or "lightbar" for the quote mode, based on the user's setting. + Added the ability to start reading in the lightbar index mode in just the e-mail base. This is also configurable on a Sysop and individual user basis. One changed prompt goes along with this: ; Start at message index in email? (lightbar msg reader) 331 |CR|12Start at e-mail message index? Optional data field 28 has been added into the GE menu command to toggle this option on a user basis. New MCI code UM returns ON/OFF based on this setting ! Mystic no longer asks users if they want to "Post a message here" when viewing sent e-mail. + New MPE command: TextColor. This takes a text attribute number and changes to that color. + New MPE function: TextAttr. This returns the current text attribute. ! MPE: Assigning a char variable to a string variable would cause a variable type mismatch! IE: Str := Str + Ch + MPE: Support for CHAR variables as function results has been added. I didn't even realized that they weren't supported! Hrrmmm, Forgetful I am, yes... + Each network address now has a network name to go along with it, which is defined in System Config -> Network Settings. There is also a new MCI code that goes along with this: MN, which returns the network name for the current message base. This can be used in the message base scanning prompt or the message base list format prompt... or anywhere else! =) + Added a footer to the "file base scan setting" list: ; file base scan setting footer 449 + Default options for TSERVER can now be set in MCFG.EXE, under System Configuration -> Telnet Options. + MPL: Added two new commands: GETFGROUP and PUTFGROUP. These are used to read and write to the file group records, and work just like the GETFBASE and PUTFBASE commands. Two new variables go along with this: FGROUPNAME - Name of File Group FGROUPACS - Access string of File Group + MPL: Added two new commands: GETMGROUP and PUTMGROUP. These are used to read and write to the file group records, and work just like the GETMBASE and PUTMBASE commands. Two new variables go along with this: MGROUPNAME - Name of File Group MGROUPACS - Access string of File Group + MPL: Added two new commands: GetTextStr and PutTextStr. These commands will be used to read/write/edit messages and file descriptions as well as being used to access the message and text editors within Mystic. More on this stuff later! =) + Expanded the Prompt Info codes to 15 instead of ten. New Prompt Info codes are &A through &E... + Added new prompt info codes for prompt #30: &8 = Email address &9 = User note &0 = Optional field 1 &A = Optional field 2 &B = Optional field 3 + Added new prompt info codes for prompt #142: &9 = User note &0 = Email &A = Optional field 1 &B = Optional field 2 &C = Optional field 3 + New menu command auto-exec type: AFTER. This works just like EVERY except it is drawn AFTER the menu is displayed, directly before the prompt. EVERY executes before the menu is drawn each time it is drawn. + New menu option: "Input Type". This can be set to any of the following values: Long key : Forces the menu to use long key input Hot key : Forces the menu to use hot key input User setting : Uses whichever input mode the user has set - Removed the Xmodem and Ymodem protocols. This is most likely a temporary thing, but I doubt many will use them anyway. They're still kinda buggy and I want to get 1.07 released as soon as I can. Changed two prompts for this: ; Protocol select batch prompt 061 |CR|14Press [|15ENTER|14] to start Zmodem transfer, or [|15Q|14] to Quit: ; Protocol select standard prompt 062 |CR|14Press [|15ENTER|14] to start Zmodem transfer, or [|15Q|14] to Quit: + New menu command: VN. This will search for any new voting questions and allow the user to vote on them. ! Mystic (Win32) wasn't setting the node number correctly in the Window Title. + New prompt: Prompt #450 is now the TO: for a privately posted message "TO:" field. 450 |CR|09To: + Added two new fields to the New User Settings in System Configuraton: Start Message Group Start File Group This allows for the msg/file group that new users start off in to be defined. In the past, Mystic would just put them in the first group and first base they had access to. Setting these options to zero will cause Mystic to act like it used to - putting the user into the first group and base they have access to. - Removed MENUEDIT.EXE from the distribution - Removed LANGEDIT.EXE from the distribution - Removed MCONFIG.EXE from the distribution + Added new program: MCFG.EXE. This program is going to be an all-in-one configuration and management utility! All of the functions that existed in MENUEDIT, LANGEDIT, and MCONFIG have already been added to this, as well as a file base list manager and many other parts of the System Configuration. This program is not 100% completed, but its a VERY nice start! Many MANY enhancements into the menu editor, and language editor as well as an overall clearer and more intuitive interface! Includes native DOS, Win32, OS/2 and Linux versions! + Completely rewrote MIDE.EXE, the Mystic Programming Language IDE. This new version offers these new features: + Improved interface + Allows up to 9 files to be edited at once + Configurable tab spacing stops + Ability to disable syntax highlighting + Enhanced text copy/cut/paste block functions + DOS, Win32, OS/2, and Linux native versions + Full online help system similar to Borland's IDE help systems. Includes a full reference to the Mystic Programming Language functions and procedures - along with examples of each of them! + Completely rewrote MPL.DOC (The Mystic BBS Programming Language Manual). Its not 100% completed, but its more organized and complete than the MPL.DOC which was distributed with version 1.06. + Cleaned up the way Mystic determines file/msg groups for new users and existing users. It's very "intelligent" now... + Rewrote the installation program. The install looks much nicer than the pervious install and no longer requires any type of external archive utility to complete the installation. + MYSTIC BBS NOW HAS A NATIVE LINUX VERSION! The linux version of Mystic BBS has been completed. Mystic/Linux is a complete shell replacement, which means that it will work effortlessly over dialup and telnet connections to your system! The configuration is file case sensitive, but other than that all data files are compatible with other native versions of Mystic (ie, DOS, Windows, and OS/2). Many changes had to be made to the Sysop end of Mystic to work around various Linux issues. Running a BBS under Linux is an entirely different experience, but i've tried to make the transistion as easy as possible for everyone. Just be aware that the functionality of Mystic/Linux is identical to all other versions, but the Sysop operations will be different. + TSERVER (the Mystic BBS telnet server for Windows) has been cleaned up. When a new connection is received, TSERVER will now spawn new Mystic windows completely in the background without interrupting the current process. In the past, TSERVER would always force Windows to return to the desktop - so, for example, if you were in a full screen DOS session, it would return your DOS session to a GUI window. + Mystic now has full support for long file names. It already has since early 1.07 alphas, but apparently I forgot to reflect that in the whats new file! + Mystic's internal user editor now sets users who are logged into other nodes as "read only" when their account is being viewed. If their account needs editing, you'll have to switch to their task and edit them with the SysOp functions. ! Mystic wasn't saving user accouts in the user editor if the user logged in was trying to edit their own account. For example, if "Joe SysOp" was logged in, went to the user editor, and tried to edit his account - it wouldn't save. ! When using the ALT-E sysop command (edit user account), Mystic was not changing the users online time if a new "Time Left" was set. + New MPE command: EXIT. This function will immediately exit the current procedure or function. + Two new options have been added to the new user settings: Start Msg Group and Start File Group. In the past, Mystic would start a new user in whatever the first group they had access to was. This can be used to start a new user in a definied message and file group. + New option added to the message base options: The option to "Show Bases in Group List" must now be set to Yes for Mystic to calculate the number of areas in that group when the user is selecting a message group. If this option is toggled off, Mystic will return a "0" for number of areas in a group. + New option added to the file base options: Show Base in Group List. This works just like the same option in the message base settings. ! Fixed a bug with user's time left getting set to 0 on certain occasions during a login. + Mystic now disconnects the user after three login attempts. If they don't select to create an account in those 3 attempts, Mystic boots them. + MPE: Added support for including source files into the main source of an MPS file. This hasn't been tested very well and has caused a slight decrease in compile speed, but its there and appears to work! =) Example: # Sample source file which includes common.mps # -------------------------------------------- #include common.mps Begin WriteLn ('Any functions or procedures in common.mps can be called') End Note that the compilers will still compile a procedure or function into the executable if they're not used in the program. So if you did make an include of common functions and procedures that you use, they will all be compiled. In the future i'd like to add a "smart linking" feature which would remove all unused functions and variables. + Added new user flag: Ignore LC. When set to YES, this option will not add the user into the last caller information. + Mystic will now not add the user to the last callers file if they log in in Invisible mode. ! Fixed a problem within MBBSUTIL's user packer. Under certain situations, MBBSUTIL was messing up the user's last read pointers and their base scan settings. This has been fixed. + MPE: Added new var to USER record: UserEditType. This returns the user's current editor setting. + The one liners function now redisplays the oneliners after a user adds a new entry. + Separated the post subject prompt and the REPLY subject prompt in the language file. New prompt added: ; reply msg SUBJ 451 |CR|09Subject: + Added a header prompt into the standard (non-quote-window) quote mode. A new prompt has been added: ; standard quote header 452 |15Quote mode: Select a range of text to quote + Added a new option to the message and file area selection menu commands (MA and FA). When "nolist" is supplied in the optional data field of the menu command, Mystic will just show the prompt to select a message base number unless, of course, the user enters "?" on that prompt, which they would then get a listing of available bases. + Added new option to Mystic's graphics detection when a user connects. An option of "Force ANSI" can be set in the general settings of the system configuration as the detect type. This will force the user into ANSI mode and not attempt to detect or ask for the graphics mode. + Added new prompt: 453. This is the footer for the listing of users in teleconference. ; footer for teleconference user list 453 |CR|PA + Added an entirely new FULL SCREEN irc-like teleconference system! The older system is still around for people who like it better or for users who don't support ANSI graphics. This new system allows for the user to have a permanent input line as well as a window where text will scroll, maybe similar to a text-based mIRC client. Each user also has a 200 line scrollback buffer! Many changes and additions go along with this: Changed prompts: ; nodechat user's text: &1 = user name 181 |07<|15&1|07> |03 ; nodechat broadcast text: &1 = user name 319 |01<|09|&1 |11Broadcast|01> |03 ; nodechat private text: &1 = user name 218 |04<|12|&1 |14Private|04> |03 ; nodechat action text: &1 = user name 229 |13* |&1 ; nodechat: info/status text 226 |12- |07 ; new user: use full screen node chat? 187 |CR|12Use full screen node chat? |11 ; Node chat scroll mode back 237 |15Scrollback: (Up/Down) Move (Ctrl-R) Page Up (Ctrl-C) Page Down (ESC) Quit Also some new options in the new user settings, where the node chat can be either forced on or off for new users, or the new user can be asked. New additions for this field has also been added to the user editors as well as an addition to the "GE" menu command with optional field data of 29 to toggle the user's setting. The MCI code "CM" returns the on/off status of the full screen chat function. ! Fixed a bug that existed when viewing text files. The pause prompt would display on the last line of the page (overwriting the last line) rather than moving down to the next line and displaying the pause. + When doing a new scan for personal messages, Mystic will now update the last read pointers for each base. This wasn't a bug, I designed it to not save the pointers, but I really don't know why I originally did it that way. :p + Added a new menu command: MS. This command allows for easy message searching in the current base, current group, or all groups/bases. See MYSTIC.DOC for more information. Two changed prompts go along with this new command: ; Message search: search text input 310 |CR|03Enter text to search for: ; Message search completed 311 |15Message search completed. + Two new additions to the MPL evaluation engine: In the past both function calls and constant variables could not be evaluated in the second part of a statement. I never noticed this before, but it has been completed now. For example (in the 1.06 MPL engine): OK: If Ord(' ') = 32 Then WriteLn('Hello') EndIf BAD: If 32 = Ord(' ') Then WriteLn('Hello') EndIf + Added new option: System Config -> New User Settings -> Ask Screen Size. If this option is set to Yes, Mystic will ask new users for their screen size. If this option is set to No, Mystic will automaticly set the user's screen length to the configured default screen length. + New MCI code: QL. This returns YES or NO based on the user's QWK setting to include a new files list in each packet. - Removed the "OC" menu command (Set QWK options) and added the options individually into the GE menu command. See MYSTIC.DOC for more information on the GE menu command. - Removed prompt 228 that went along with the OC menu command. + Added a footer prompt to the batch queue listing. New prompt is #428 + Expanded the modem initialization string from 40 characters to a max of 80 characters + Added new prompt to the QWK packet creation: Prompt #228 now displays if a packet is created with 0 messages, and the download is then aborted ; QWK DL: No messages 228 |CR|15No messages found.|CR|CR|PA .-----------------------------------------------. | Mystic BBS v1.07 RELEASED : December 26, 2000 | `-----------------------------------------------' ! MCFG: The New User Settings 1 -> Language file setting was backwards. It'd say "Ask" when it really should have said "Use default". ! MCFG: The option New User Settings 2 -> Ask Screen Size was missing from the options but available from within Mystic's internal configuration. ! Fixed a bug in the QWK system that would cause certain messages in a packet to get scrambled. ! The QWK system was creating .NDX files for bases that didn't have any messages in them. This is fine for most QWK readers, but there are a few that didn't like that. In addition, the .NDX files were not getting created correctly under certain operating systems. + Mystic will now restore the screen on the user's side after sysop chat modes. + Mystic was looking for FILE_ID.DIZ in the Linux version of Mystic. This has been changed to look for file_id.diz instead. ! In line quote mode, Mystic would not allow you to quote a range of text that wasn't already displayed. ! MIDE: When changing the file name during a "Save As", MIDE was not renaming the window to the new file name. + Added new MPL function: PATHCHAR. This will allow for MPE programs to be easily written to work on both Unix and DOS type file systems. ! The index files in Squish message bases were getting written incorrectly. I think i've managed to nail this bug but I haven't had any substancial testing done as none of my alpha sites run Squish message bases. :( + MCFG: Added (ALT+S) Sort into the status line of the file base editor. Sorting was always available, but for some reason I never put it on the status line. Even the help listing had ALT-S documented. =] + Changed the INSTALL program to use CTRL-S to start the installation, instead of the F2 key that was used. Linux users were not able to use F2 over an xterminal. + MPL: Added new procedure called GETSCREENINFO. This is used to read the values of the Screen Info MCI codes. This will come in handy when creating lightbar mods which use ANSI templates similar to the rest of Mystic. ! Fixed a small memory leak in the DOS/WIN/OS2 versions caused when running external programs (doors). ! Fixed the DOOR32 problems in Windows version. I had some code commented out when I released 1.07. I forgot to 'put things back to normal' when I was done testing some things before the release. =] ! Fixed the viewing of the BBS list in the Linux version. Just the case of an error in file casing. Mystic was looking for a data file in all uppercased letters when it should have been lowercased. ! Fixed the error with inserting a new menu in the Linux internal menu editor. ! Fixed a small problem with displaying the time in twelve hour format. It'd display 12:01am when it should have said been 12:01pm. ! The BI mci code (User's Birthdate) wasn't being displayed correctly. .------------------------------------------------. | Mystic BBS v1.07.2 RELEASED : January 20, 2000 | `------------------------------------------------' + Added (Q)uit to prompt #361. Before if you selected to add to the BBS list, you'd have to fill out the entire entry before you could save or abort. ! Fixed a problem with the Linux MPE loader. If you tried to run a script outside of the script directory, things wouldn't work. Mystic was looking for a "\" instead of a "/". + MYSTPACK: Changed the file names of the temporary files created when packing bases. Hopefully this will solve it crashing on some Linux distributions. ! When Mystic prompted for an upload file name, a space could be entered as a valid filename. ! MPL: When compiling a program, Numerical variables could be assigned to a function which returned variables in the type of String. A mismatch error should have occured. ! When the remote screen was redrawn after a sysop chat session, it would redraw incorrectly on if the status bar was NOT in single line mode. + Mystic now creates QWK packet's CONTROL.DAT file in MSDOS format even in Unix type file systems. This seems to be more compatible with all types of QWK readers. ! MPL: When assigning certain numerical variable types, MIDE and MPLC would report a variable type mismatch when it shouldn't have. + Optimized the idle sensitivity within Mystic's Windows version. This should make keyboard input a little faster/more efficient. + Enhanced the method Mystic uses to determine if a line of message text is quoted text. A few QWK readers would indent quoted text within the message and Mystic wouldn't see it as quoted text. ! Fixed a bug in the file and message base selection listing. When the base listing was aborted, Mystic would only let an area be selected if it were already displayed in the list. + Mystic/Windows will now check to see if the window title was changed after running a door, and restore it as "Mystic Node x" if it has been changed. ! If the SysOp was in two line status bar mode and the node chat template used line 23 as the input line, the teleconferance wouldn't work right. Fixed. + Added new command into the message reading system. The (H) key will now set the current message as the high water (last read) pointer. At the moment it doesn't display anything telling you that it worked (when H is pressed), but it does work. The reason for this is that I don't like to add new prompts into minor builds. I'll add the new prompts for it in the 1.08 release. Just thought i'd include it in this form because there were a couple requests for this feature. + The ENTER key is now available in menus using longkey input. ! The Hotkey and Longkey settings were reversed in MCFG's menu editor. ! When using the lightbar file lister's previous page option, it'd skip the second page (and ONLY the second page) and go directly from the third page to the first page in the listing. Fixed. + The ESCAPE key in the full screen message editor will now bring up the command prompt. + MCFG: There is now a command to delete a ghosted user from within the node manager. + MCFG: Changed all the commands within MCFG to use CTRL keys instead of Fx or ALT keys. It may take a little to get used to these changes, but it allows for us to have MCFG work over terminals in Linux while keeping all the function keys consistant in all versions of MCFG. + MCFG: The mouse cursor is no longer present in the Windows version. + MCFG: The window title is now set to "Mystic Configuration" + The Linux version of Mystic will now accept the D3 menu command. This allows the Linux version to write a DOOR32.SYS drop file. ! MPL: Fixed a bug with the UserDeleted variable which could cause the user's flags to get corrupted. ! The CHAIN.TXT drop file now outputs the user's age field and a zero for the gold field. Apparently, having a blank and not a 0 for gold would cause some doors to crash. ! Fixed some Squish related QWK bugs, which caused QWK packet corruption on all Squish format message bases. + Added the (I)gnore message reading command into the lightbar message index. ! Squish last read pointers were not stored in records based on a 0-based user index. This would cause problems with 3rd party SysOp mail readers. ! Fixed a problem with the lightbar message reader in Squish mode. Mystic was giving strange results when the previous message command was selected on the last message of a base. + Mystic now adds the ^AMSGID and ^AREPLY fields to all outbound echomail posts and replies. + Mystic will now filter any kludge lines from message text, quoting, and message exporting. Kludges lines are any line of text in which the first character is a ^A (smiley face)... ! Fixed small input bug in MCFG's language prompt editor. ! If a user was online at midnight, their time per day wasn't getting reset correctly. Mystic will now reset their time left to whatever their daily limit is for their security level. + Added a new door command line MCI code: %U will now be replaced with the user's alias. + MCFG: Added the General Settings into the System Configuration menu. + MCFG: Added the Global Message Base Editing feature into the Message Base Editor. This is a very handy utility. + The online file listing editor will now allow renaming files based on file casing, for operating systems that support it. ! Fixed a small bug in the lightbar file lister's next page option which would sometimes report the end of the listing without displaying the last file in the listing. + MIDE will now save its configuration file in the same path that the actual MIDE.EXE file exists. This allows for MIDE to be placed in a directory on the PATH and will prevent it from making a new .cfg file in each directory MIDE is used. + MIDE will now also look for it's help file (mide.hlp) in the actual path where MIDE.EXE exists. ! Finally got around to nailing one of the two word wrapping bugs in the Full screen editor. This one would cause the BBS to lock up under certain rare situations. + Removed the hard coded clear screen from the standard quote mode. You will have to update prompt #452 with a |CL mci code in the beginning of the prompt for it to work the same as it did in the past... + MPE programs can now be executed from one of the sysop macros. Any macro which begins with a ! character will execute an MPL program. The format is !. If is omitted, Mystic will look in the SCRIPTS directory as defined in System Paths. ! When an MPL program resided in the scripts path, the ParamStr(0) function would only return the file name of the MPL program and not the full path and file name as it should have. + Added the OS/2 native version of Mystic back into the distribution. It hasn't had much testing, but hopefully it will do us well. If you find any problems with it, let me know and I'll try to fix it. Keep in mind that I no longer have an OS/2 development machine here so I will need a hand testing things. .----------------------------------------------. | Mystic BBS v1.07.3 RELEASED : May 13th, 2000 | `----------------------------------------------' + New MPL function: GETUSERTIME returns the number of minutes the user has remaining. ! Kludge lines were not getting filtered out in standard message reader mode. This also caused a problem creating REPLYID tags in networked message bases. ! MCFG would exit out to the prompt when CTRL-C was used to copy a menu command in the menu editor. + Added IP blocking into Mystic's Telnet server (TSERVER). The file IPBLOCK.TXT can now be placed into the data directory and contain a list of IP addresses which should be blocked. An asterics can be used to block a mask of addresses. Each address needs to be in the format of #.#.#.# and only one address can be specified on a single line. For example: 204.186.*.* 24.67.213.* 24.87.321.534 + Completely rewrote MYSTPACK to fix some problems with the way the previous version packed the message bases. Gone should be the crashes and any problems with last read pointers being screwed up because of MYSTPACK. Also added the -pack command line, which is now required in order to start packing the bases. IE: mystpack -pack -skipfirst. Some minor cosmetic changes have been made. A spinning cursor has been added while each base is getting packed, and the total number of messages and bytes removed are displayed or each base along with a total for all bases after all packing has been completed. ! MPL: Fixed a bug which caused some of the MBASE variables to get corrupted. ! MCFG: Fixed a minor aestetics error in the global file base editor. + Added a daily history system. Mystic will now track the following things on a daily basis: emails, posts, downloads, uploads, upload KB, download KB, calls, and new users. A new menu command (G1) has been added to view all the daily history, and the following new prompts have been added: ; no history data 454 |CR|12No history data available.|CR|CR|PA ; history header 455 |CL|15Daily System History|CR|CR Date Calls New Posts Email DLs DLkb ULs ULkb|CR|08|$D79- ; history list ; &1=date &2=calls &3=newusers &4=posts &5=emails &6=dls &7=dlkb ; &8=uls &9=ulkb 456 |07|&1 |$R05|&2 |$R05|&3 |$R05|&4 |$R05|&5 |$R05|&6 |$R09|&7 |$R05|&8 |&9 ; history footer &1=total days 457 |08|$D79-|CR|15* Total days: |&1|CR|CR|PA ! The extended descriptions in the file list compiler were off by a single character. Fixed. + Added message scan date setting. Users can now set the message last read pointers based on a date. A new menu command of MD accesses this function, and a few new prompts have been added: ; msg scan date prompt 458 |CR|09Enter new message scan date |01[|10|UF|01]|09: |11 ; msg scan date global prompt 459 |CR|12Set this date for all bases? |11 ; msg scan date: updating pointers 460 |CR|12Updating pointers: Please wait... + The [ and ] keys now work while editing files within file listings. + Mystic will now automatically rename any file name longer than 70 characters (the maximum Mystic supports) during an upload or a mass upload. It will keep the file extention if there is one and make the total filename length 70 characters. If a file already exists with the new shortened name, Mystic will prompt for the user to enter a new file name for the file, and then rename it to whatever they type. Pretty slick if you ask me. =] A new prompt goes along with this: 461 |CR|12File of this name already exists.|CR|CR|09Enter new file name (max 70 chars)|CR: + Mystic's internal user editor will now accept partial user searching as well as user record number jumping. + When importing FILE_ID.DIZ, Mystic will now strip off all extra blank lines of text. So if a FILE_ID.DIZ has 10 blank lines before or after the description, Mystic will remove those 10 blank lines. + MPL: Expanded the maximum number of parameters passed in a procedure or function from 5 to 8. + Mystic can now set an ACS level for each node which a user must meet in order to login to that node. This is found in the Modem/Node editor. A changed prompt goes along with this: ; Node login ACS failed 315 |CR|14You do not have access to call this node. + MPL: Added new MPL function: MCI2STR. This function takes an MCI code and converts the value of the code into a string variable. + Added the /ALLGROUP optional data option into the QWK Download menu command. + Removed the Lightbar Yes/No configuration from the language settings into the language file as prompts. You will need to replace the following prompts with the lightbar Y/N stuff: ; Lightbar Y/N: YES text 316 |09|17Ý|15Yes|09Þ|16 |14N|11o |16 ; Lightbar Y/N: NO text 317 |14 Y|11es |09|17Ý|15No|09Þ|16 + Added a new option into the language settings. There are now two input field colors, one being the color of the typed text, and the other being the color of the field itself. This allows for some pretty cool input field combinations, when playing with these two settings and the input field fill character. + Added the language settings into MCFG, accessible via the language editor. + Added new 'percentage bar' system into MCFG's language configuration. The first percentage bar is the voting booth results bar. It is now configured with the language editor and activated when the same Prompt Info MCI code as in the past. This just allows more customization of the percentage bar. + Added a percentage bar into the lightbar message viewer. The new configuration options for the message reader percentage bar can be found in the language editor of MCFG. Two new and optional Screen Info MCI codes are now available in the ANSIMRD.XXX template file: !4 = The X/Y location and text attribute of the actual percentage of the message read (ie a number between 0 and 100). If this code is not in the template, it will be ignored. !5 = The X/Y location of the percentage bar. If this code is not in the template file, it will also be ignored. + Changed the clear screen functions in Mystic to send an ESC[2J rather than a ASCII #12 if the user has ANSI graphics. This is a little more compatible with obscure terminals and telnet clients. + MCFG now saves the selected option when navigating menus, and keeps that option highlighted when returning to a previous menu. ! When the status bar was set to single line and a user paged the sysop, Mystic wouldn't update the statusbar properly to show the user name, chat reason, and chat commands. + MCFG: Added some extra checking in the sort functions. This should prevent any sorting problems due to memory limitations in the file and message base editors. ! Fixed a bug which could cause some messages that were marked as deleted to still be readable. In fact, they'd only be actually deleted when MYSTPACK was ran on the bases. ! MCFG: Fixed a very bad bug in the user editor. If you selected CTRL-U to upgrade, then hit ESC to abort the upgrade, MCFG would upgrade the user to security level 255. VERY BAD - BUT FIXED NOW! SORRY! + Added the ability for message moving. If a user was the original poster of the message, or if the user has SysOp access rights to the message base, they can move the message to any message base they have access to by pressing (M). Changed prompts: ; Move message to where? 282 |CR|09Move to which base (?/List): ; Moving message. &1=base name 318 |CR|14Moving message to |15|&1|14... - Removed CTRL-Z and CTRL-R commands from the line mode text editor for compatibility with Linux. Also removed prompt #161. + Removed CTRL-Z in the full screen editor and the full screen text editor. CTRL-Z was save in the text editor and CTRL-Z was help in the normal full screen editor. The help command has been moved to /H. ! Fixed a huge bug in MBBSUTIL's -FPACK function which would truncate file descriptions at 45 characters. When Mystic was enhanced to allow 50 characters on a line, somehow MBBSUTIL wasn't. :( + Added two new command line features: The -U and -P command line options can be used to log in as a user from the command line, skipping the user name and password prompts, or login matrix if one is activated. These must be used along side the -B command line option in order to work. If either the user name or password supplied is not valid, Mystic will simply exit. When supplying a user name, you must replace all spaces in a name with an underscore (_). For example: MYSTIC -B0 -Usome_user_name -Ppassword The above would start Mystic in local mode with user "some user name" already logged in. + Mystic will now run STARTUP.MPE if it exists in the scripts directory directly after the graphics emulation detection/selection. + When replying to a private or e-mail message, Mystic will now force that the To: field is a valid user on the system. A changed prompt goes along with this: 161 |CR|11|&1 is not a valid user on this system. + Added new ACS command "Mx" which is based on the current minute. This command is used to check if a user is accessing a command at a certain minute. Where X is the minute. For example: M15 will prevent the user from accessing the command before :15 after each hour. + Added new ACS command "Wx" which is based on the current day of the week. Where X is a numerical value from 0 to 6, representing a day of the week: 0 = Sunday 1 = Monday 2 = Tuesday 3 = Wednesday 4 = Thursday 5 = Friday 6 = Saturday For example, "W0" would make the command only accessible on sunday. W5 would be Friday, etc. ! The Netmail Origin and Destination address was not getting set properly when replying to a netmail message. The Origin address was also not getting set properly when posting a netmail message. These are fixed! + Added new command line option: -X This option goes along with the -U and -P command line options and when supplied on the command line will execute a compiled MPL program file. contains the file name and any command line options supplied to the mpe program. As with the -U option, any spaces should be replaced with a _ character. If no path is supplied, Mystic will look in the configured scripts directory for the program. Some examples: MYSTIC -B0 -Ug00r00 -PHELLO -XTEST MYSTIC -B0 -Ug00r00 -PHELLO -XBULLETIN_BULLETIN_BULLET_CHECK MYSTIC -B0 -Ug00r00 -PHELLO -XC:\MYSTIC\SCRIPTS\GAME\MYGAME After the script is ran, Mystic will exit back to the operating system. This is mostly useful to MPE developers being that they can setup an external editor for coding their programs, and have it automatically run the program from within the editor to test things. + Expanded the maximum number of variables in an MPL program to 500. This took quite a bit of recoding because MPL was originally intended to be a simple script engine, and was written with certain limitations. Well, now one of those limitations is gone. Technically (if memory allowed), I could expand the max variables up to 64,000 now! + Added the display of the user's permanent index within MCFG's User Editor. That should have been there to begin with, but I must have overlooked it. ! Fixed a small display bug in MCFG's user editor with the "Editing User XXX of XXX" would get messed up. ! MCFG: The statusbar in the file base editor didn't have the (I)nsert command on it. I'm not sure if it was like that in 1.07.3 or just the 1.08 alphas, so I thought I'd mention it here. ! Did a full rewrite of the mandatory message base code. The old system was very buggy and allowed users to quit reading mandatory bases. In addition, the /M option of the new message scan (scan all mandatory bases) was not working properly. This should all be fixed now. + Added a new auto-running menu command type called 'LINEFEED'. If you set the hotkey of a internally generated menu to LINEFEED, Mystic will go to the next line and display the 'display text' of the command. This can be used, for example, to separate normal commands from sysop commands. + Added new 'LINEFEED' option into MCFG's menu editor. + The Linux version now sets the terminal mode back into RAW mode when returning from doors. This should solve some problems with running external programs that modified the terminal setting, causing Mystic to seem like its getting input in 'line mode' (ie, no hotkeys). + Linux: The input buffer is now purged after an ANSI detection. + Added new Door execution MCI codes: %P = Current node's temp path where door drop files are made. %T = Current user's time left in minutes. %# = Current user's permanent user index number. + MIDE: New option for auto indenting added. This can be toggled on or off within the MIDE options. + MPL: The compilers now ignore semicolons, so if you accidentally add on at the end of a line or something, the program will still compile. + MIDE: When the delete key is pressed on a blank line or if it is pressed at the end of a line, MIDE will now wrap the text from the following line onto the current line. ! When reading private e-mail, it was possible to read another user's email by using a combination of the prev/next message commands and the reply command. This has been fixed. I doubt many people found the bug though as it went over a year before it was reported to me. + New MCI display code: U#. This returns the user's permanent index number. ! The GROUP.XXX and FGROUP.XXX display files were showing up during the login sequence when Mystic was loading the user's msg/file group information. + Added a percentage bar into the lightbar file lister. The new configuration options for the file list percentage bar can be found in the language editor of MCFG. Two new and optional Screen Info MCI codes are now available in the ANSIFLST.XXX template file: !5 = The X/Y location and text attribute of the actual percentage of the message read (ie a number between 0 and 100). If this code is not in the template, it will be ignored. !6 = The X/Y location of the percentage bar. If this code is not in the template file, it will also be ignored. + If the user's NoCaller flag is set, Mystic will no longer update the total system calls. In the past, Mystic would only exempt the use from the last callers data. ! Fixed a bug which would cause the message base listing to pop up during the user's login. This was a rare bug, but I finally tracked it down and squashed it. + The optional data field of command G1 (View System History) will now accept a numerical value to display the last xx days of history. For example, optional data of 10 will show the history of the last 10 days. + New MCI Code: SN. Displays the SysOp name as configured in Mystic's configuration. ! Fixed a bug in the mass mailing procedure that would cause the From: field in the message to get corrupted. + Two new command line options for the Win32 version of Mystic. When loading Mystic, the socket descriptor or the comm handle can be passed on the command line. This is used for using 3rd party telnet and dialup servers such as a mailer. The command line options are: -TID -CID ! MPL/Linux: Fixed problems with the file access functions, specifically FSEEK, but others may have been affected by the same bug. ! While reading messages using the lightbar message index, Mystic would sometimes show messages as new when they were not. + The left/right arrow keys now work as page up and down in the lightbar file listings. ! Mystic was not checking the Post ACS for message bases when uploading a QWK reply packet. ! Mystic was not checking the ACS before running menu commands with the AFTER hotkey. ! Mystic was not checking the ACS before running menu commands with the EVERY hotkey. ! Fixed all mass email bugs. There were several and they should all be squashed now - Removed Mystic's internal Zmodem protocol. + Added support for external protocols. Mystic is now compatibile with any protocol driver that can create a DSZ-style log of the files that were transferred. Mystic will automatically set the DSZLOG environment variable before executing the configured protocol. Here are the MCI codes used in the Protocol Configuration: %0 : Returns communications handle (Win32 and OS/2 only) %1 : Node's modem port as configured %2 : User's baud rate %3 : FileName of file to send/receive (or path/filename of text file which lists all of the files if in batch mode. When receiving this will return the directory where files should be uploaded to). %4 : Node's baud rate as configured %5 : User's UserID as passed with the -UID command option %6 : User's handle. Spaces are converted to _. %7 : Current node number + New Menu command of *P for Protocol Editor and new WFC menu key P to access the Protocol Editor. + New command line option: UID. Here you can pass any value up to 60 characters in length to identify the user. It must be a single word, it cannot contain any spaces. + New MCI code UX returns the user's ID as it was passed with the -UID command, or blank if one wasn't passed. + When pressing ENTER in the lightbar message reader, Mystic will now PAGE DOWN instead of jumping to the next message immediately. This allows reading of all messages in the reader by just using the ENTER key! =] + Pressing ENTER in the lightbar file listings now work the same as the message reader. ENTER will scroll down the listing a page, and if at the bottom, will move onto the next base in the scan or quit the listing if not scanning. + New Door MCI code (translated when executing doors): %5 will be replaced by the User ID as passed with the -UID command line option. This works the same as %5 in the protocol editor. + Added the ability to execute an MPL program instead of the command line for a protocol. By starting your command line with a !, you can have Mystic run a MPE program. For example: send Command: !test %1 %2 %3 The above would execute test.mpe from your scripts directory and pass the results of the %1 %2 %3 protocol MCI codes as command parameters to the MPL program. Keep in mind that if you do use this to execute some type of protocol, you must set the DSZLOG environment variable yourself and have it point to the current node's temp directory as xfer.log. Mystic will also create an xfer.bat or xfer.sh (depending on operating system) which can also be executed. + Added prompts for protocol selection to the language file. You will need to replace the old prompts with the new prompts listed below, and then recompile your language files: ; Protocol List Header 359 |CR|14Available Protocols:|CR ; Protocol list prompt &1=HotKey &2=Description 061 |14[|15|&1|14] |&2 ; Protocol select prompt 062 |CR|14Select Protocol [|15Q/Quit|14]: |XX + Users now have the option to (R)eply to a received node to node message. There are updated prompts that go along with this: 145 |CR|09(R)eply to Message or (ENTER/Continue): |15 ; NodeMsg reply &1=from &2=node# 360 |CR|09sending reply to |&1 on node |&2: + If a user is online when another user sends them e-mail, Mystic will now notify the user via a system message that new mail has been received. + TSERVER now passes the user's IP address using the -UID command line option. + The /TO: /SUBJ: and /ADDR: options now work with the MP menu command. ! MCI codes are now stripped from Message and File base names when they are written to the Sysop logs. ! The UM (use lightbar message index in E-mail) MCI code was not working correctly. ! Fixed MCFG and MIDE "Out of memory" errors that could occur sometimes in Linux. Now if it happens, you are seriously out of memory that was allocated to those programs. =] + Added the ability to change the message subject from within the line and full screen message editors. The following new/changed prompts exist: ; Line editor "command" prompt help 167 |CR|03(|11A|03)bort Message (|11C|03)ontinue Message (|11U|03)pload Message|CR(|11Q|03)uote Message (|11S|03)ave Message (|11H|03)elp|CR(|11T|03)itle Change ; FS editor command prompt help 355 |CR|03(|11A|03)bort Message (|11C|03)ontinue Message (|11U|03)pload Message|CR(|11Q|03)uote Message (|11S|03)ave Message (|11H|03)elp|CR(|11T|03)itle Change ; line editor edit subject 462 |CR|09Enter new subject: ; FS editor edit subject 463 |CR|09Enter new subject: + Expanded the data filename size from 8 characters to 40 characters in both the message and file bases. + Mystic will now recreate MBASES.DAT with the Electronic Mail base if for some reason reason it does not exist in the data directory. + Mystic now allows the quote header to be configurable in all quoted text. A new prompt goes along with this: ; msgtext quote header &1=date &2=from &3=initials 464 On |&1, |&2 said the following... + When tagging a file in the lightbar file lister, Mystic now automatically moves to the next file after tagging the current. ! Fixed a bug in Linux relating to parsing MCI codes in a display file. + Completely rewrote all of the 'local' input and output functions in the Windows version. It should be faster. - Removed the password being displayed in clear text on the SysOp status bar when a user is logging in. + The user editor now masks the password with asterisk unless it is being edited. - Removed the DOS and OS2 versions. + Completely switched all versions of Mystic BBS over to Free Pascal. Using only one compiler now makes it much easier to maintain the code. + Added new MCI code |ISxx where XX is a two digit number. This limits the actual max amount of input on the next input prompt. Whereas IN limits the size of the input prompt space itself, this limits the actual amount of characters that will be accepted. ! Fixed a bug when attempting to determine an archive's file extension under Linux. The actual extension comparison is now NOT case sensitive when checking it against the archive tools in the configuration. ! Fixed a bug in the full screen editor, where the cursor would move strangely when using the right arrow key at the end of a line. + MBBSUTIL's UPACK (user pack) function will now go through every message base marked as "Private" and delete any messages TO or FROM the person being deleted. ! Mystic wasn't working correctly on voting questions #15-20 (if you had that many). The maximum is 20 and all 20 should work correctly now. + All door menu commands can now include the /DOS option on the command line data. If /DOS is found, drop files will be created in MSDOS format even if the operating system is not Windows. If the /DOS option is not supplied, the drop files will be created in the format of the operating system (CRLF for Windows and LF for Linux/OSX). Ex: Menu Command: DD Optional data: c:\mystic\doors\mydoor.sh %1 %2 /DOS + Removed all of the remote modem/TCPIP code for Windows and replaced it with newer stuff from Mystic 2.0 code. Unfortunately this means that built in support for modems/dialup has been removed. But it opens a lot of doors moving forward. I would like to eventually support dialup in Windows again in the future. It is probably possible using 3rd party software for now. ! Mystic was not always setting the user's node action correctly when reading messages. This should be fixed. ! Fixed various bugs with pause prompts, where some terminals sending CRLF would cause subsequent pause prompts to be skipped. + Replaced TSERVER with MIS. MIS only has its telnet functionality enabled for now. It is based off of the Mystic 2.0 server code, which had semi-working POP3/SMTP/FTP servers and seems to be more efficient and at least as stable. + Changed the WFC screen to "configuration mode", accessible by running mystic -cfg command line. This also works in Linux allowing access to the internal configuration editors. Mystic will skip checking for created directories and some other data file related start up checks when this command line is used, so that they can be corrected using the editors. Mystic only requires MYSTIC.DAT and a valid language file in order to enter configuration mode. - Removed the "screen saver" from the WFC/Configuration mode screen. It was really only useful in the DOS version which is no longer supported. + Added a new MCI code: XX. This actually does nothing, but it can be useful in some prompts files to help with prompts. For example, if you have an editor that always removes any trailing spaces, you might use it to make sure the ending space is never removed: Enter user name: Enter user name: |XX ! Fixed a bug where Mystic was doing a case sensitive check of language files in Windows. + Expanded menu names to a maximum of 20 characters now, up from 8. Now that the DOS version is no longer developed, we can finally start moving away from its limitations! There will be places where this isn't updated and that is because I didn't want to change the data file formats this close to release. + Added in a new Intel Mac OSX native version of Mystic BBS! .------------------------------------------------. | Mystic BBS v1.08 RELEASED : September 20, 2011 | `------------------------------------------------' ! Fixed a bug in the full screen editor that could sometimes garble text seemingly at random. ! The TAB and ESCAPE hotkeys were not working in lightbar menus. ! Fixed some minor display bugs in MCFG + Added new function to MBBSUTIL called -MTRASH. This will go through all message bases and delete any messages To or From the users listed in a text file. The file should contain one username per line, and the names do NOT have to be members of your BBS. MBBSUTIL -MTRASH c:\mybbs\data\trashcan.dat It is recommended to use this with your trashcan.dat file in the data directory, which Mystic uses to disallow new users with any usernames found in the file. If you have networked message bases, this could be executed whenever your tosser brings in new messages - assuming it is not already able to filter out messages on its own. + Mystic now creates semaphore files in the DATA directory when new networked mail is created: echomail.now - Created when new echomail has been posted. netmail.now - Created when new netmail has been posted. newsmail.now - Created when new "newsgroup" message has been posted. This is basically an alternative to using errorlevels to process networked messages. This is now the recommended method to use for tosser activity as there may be a time in the future when Mystic does not exit after each session. + Did some restructuring of the file base data. The following changes have been made in order to support future features: + Added FTP name for each base + Added FTP list ACS for each base + Expanded file base passwords to 20 characters + Expanded all file base ACS strings to 30 characters + Expanded the file directory to 120 characters + Expanded the display file name to 20 characters. + Added an ansi template field on a per base level. + Enabled the FTP server inside of MIS. At the time of this writing the server does not support uploads and it does not properly send file and directory dates. It has been tested with the following: Linux "ftp" - No problems Windows FTP - No problems Filezilla FTP - No problems SmartFTP - No problems Firefox - No problems Chrome - Does not work. This is a problem with Chrome which does not properly support the base FTP protocol standards (tries to force EPSV mode) I think. Internet Explorer - Does not work, cannot determine why As a result, a version of MIS is now included in the OSX and Linux versions. These versions do not support telnet (since Telnet is currently handled by inetd-type services on those platforms). The FTP server creates a virtual directory structure, one for each file base using the "FTP Name" configured for each file base. No other configuration is needed outside of setting the basic FTP stuff within the Internet options of MCFG. When configuring the FTP ACS for each file base, keep in mind that any "session"-type data in ACS will automatically return true. This means that most basic ACS works (security, time of day stuff, user flags) but some things like "ansi graphics mode" are always true, since the user cannot have a graphics mode via FTP. ! Removed some debug logging accidentally left in 1.08. + Expanded the maximum message size in the message bases to 500 lines, up from 200. This was a bigger undertaking than I had expected, so hopefully there are no issues. + Message Base permanent indexes are now shown in the internal message base editor. ! Fixed a screen bleeding bug that could happen occasionally while scrolling the screen. ! Door drop files under Linux were actually being created in old MacOS file format, unless /DOS was specified to create DOS versions. Whoops! ! Fixed the installation where it would not properly assign/create the local QWK path. ! Fixed a bug where Windows was not letting sub-processes properly inherit a socket handle. This means that NetFoss for example was not working properly with Mystic to run old DOS doors in Windows. + Mystic no longer creates duplicate socket handles when executing doors. This was added to work around a bug in Windows 95, which I have decided doesn't really need to be supported anymore. + Added in a POP3 mail server into MIS. This allows BBS e-mail be to retrieved by e-mail clients, smart phones, etc. Use MCFG to set it up under Internet Options and make sure you set your domain name correctly as all email will be User_Name@yourdomain.com. + Mystic now saves the last 5 inputs and you can use the up and down arrow keys to scroll through your input history during field-based input. This doesn't work for hotkeys and the like, only field-based input such as message subjects, node chat messages, etc. + Mystic will now remember the user name entered before "Create new user?" question and force it into the input buffer as the default value if the user selects to create a new account. Unless of course the user types "new" then it will not default to anything. ! Fixed some file-casing issues with the message base editor, when deleting a message base and its data files in Linux. + New MCI code [K sends a "clear to end of line" ANSI code, or nothing if the user does not have a capable terminal. + New MCI code BS sends a destructive backspace. ! MCI code IS was not working correctly when it was found in a display file. + New MCI code [Lxx, where XX is a two-digit number. This code takes the cursor from its current position, and does a descrutive backpace until it reaches cursor position XX. So for example, |[L01 would move the cursor to the beginning of the current line, while erasing everything on the way. If the cursor is already less than XX, it does nothing. ! Mystic now longer converts the user name to proper casing when a new message is uploaded by QWK. + Removed some data file checks on startup of Mystic. Any major issues which would cause Mystic not to start can be addressed using MCFG. + Added SMTP server into MIS to go along with the POP3 server. Settings are in MCFG. Make sure you are setting your domain name correctly. Its a very basic server. It does not reformat messages that might be sent with a client that does not word wrap at a compatible level. In addition, there is always the challenge of HTML emails. ! Fixed a small display file parsing bug. + If "newletter.txt" exists in the DATA directory, its contents will now be automatically e-mailed to new users when their account is created. + If "sysletter.txt" exists in the DATA directory, its contents will now be automatically e-mailed to the SYSOP whenever a new user account is created. An example of its contents might be: A new user account has been created! Handle: |UH Real name: |UN Security: |SL (|SD) IP: |UX This account was created on |DA at |TI. + If "hackwarn.txt" exists in the DATA directory, its contents will now be automatically e-mailed to a USER if someone tries to log in as them but fails the password check enough to be disconnected. An example of its contents might be: This is an automated E-mail sent to users when an unsuccessful attempt to login has occured. This could have been your own error, or possibly someone attempting to access your account without your knowledge. Here is some information our system has logged from this attempt: Date: |DA Time: |TI IP Address: |UX + Added a new MPL function: PurgeInput. This will clear out any local or remote input data. + Added new MCI code PB. This will purge the input buffer just as the MPL function above will. + The left and right arrow keys now function the same as page down and page up keys in the full screen editor quote window. ! Fixed a very rare MCI parsing bug. So rare it made it this long without ever being reported! Hopefully this fix doesn't create any new issues. ! Fixed a small bug where the cursor wasn't properly updating on the screen after a backspace during local mode in the Windows version! Whew! + The lightbar message reader now allows you to scroll through all messages in the message base, regardless of where you start reading from. + The HOME key now works in the lightbar message index. This returns you to the first message on the first page. + The END key now works in the lightbar message index. This takes you to the last message on the last page. + The HOME key now works in the lightbar message reader. This takes you to the start of the message. + The END key now works in the lightbar message reader. This takes you to the end of the message. + New menu command: MX. This command posts a text file to a message base. First it will look for the file in the DATA directory, but you can also include the path in the command data. The format of the command data is: Syntax: ;Area #;From;To;Subject Ex: Command: MX Data: \mystic\mystic.doc;2;g00r00;All;Mystic Documentation The command will automatically split text files into multiple posts if the text file is larger than 500 lines (the max per message). It will also append the post count onto the subject. So for example, if the above document was 1200 lines in size, it would create 3 posts in area 2 with the subjects: Mystic Documentation (1/3) Mystic Documentation (2/3) Mystic Documentation (3/3) The command caps at 10,000 lines for a text file post. Even that much would be pretty rediculous (20 posts!). + Setting message scan pointer dates now checks to see if a valid date has been entered, and aborts if an invalid date has been entered. ! MCFG wasn't updating the status bar correctly when returning from the message base edit back to the message base list. + Mystic now supports random origin lines on a per-base level. You can replace the origin line for each message base with: @RANDOM= You can include a path to the text file, but if no path is included Mystic will look in the DATA directory for the file. This allows for random origin lines to be generated from separate lists, per base if you choose. Example: Origin: @RANDOM=randomorigins.txt If the origin line is configured as above, it will select a random origin line from the file "randomorigins.txt" in the DATA directory. The random origin text file should contain one origin line per line in the file. Traditionally the maximum characters for an origin line is 50, but Mystic does not put any restriction on this - so you are responsible to keep them at a length considered acceptable. Blank lines will not be factored into the random line. If it finds a blank line, it will skip over it and select a new one. Remember, you can use MCFG's global message base editor to update every (or some) message bases at once with this new feature, if you decide to use it. + The %0 code has been added to the Test upload commmand line. This passes the socket handle. + Mystic now checks for valid date input when setting the new file scan date. ! Fixed a bug in the installation program that would cause the terminal in Linux/OS to get stuck in RAW mode if the installation encountered an error. ! Fixed a problem in the FTP server where it was returning the wrong status number with the PWD command. ! Fixed a problem with PASSIVE mode FTP transfers. The server was not opening a passive connection immediately when a PASV command was found. Instead it was waiting for the next command where a data connection would be used to open it. This caused the server not to work with some clients. As a result, it now works with Internet Explorer and Cyberduck. + Added Extended Passive and Extended Port support to the FTP server. The server now works with Google Chrome as a client. .------------------------------------------------. | Mystic BBS v1.09 RELEASED : October 17, 2011 | `------------------------------------------------' ! Mystic was not exiting with errorlevel 255 when quitting from the WFC screen as it did in previous versions. + Added an "Active" and "OSType" to the archive configuration. You will want to verify that these are set correctly for your OS when upgrading. + Added an "Active" and "OSType" to protocol configuration. You will want to verify that these are set correctly for your OS when upgrading. + Added Protocol configuration to MCFG + Added Archive configuration to MCFG ! The internal editors for message and file groups were not correctly displaying the group name during the group listing. + Pressing enter (entering nothing) during toggle of file and message base newscan settings will now exit instead of redisplaying the prompt again. + Did some minor optimization of the ANSI codes which Mystic generated when using pipe codes. ! Mystic wasn't correctly determining the free space on the disk when attempting to copy from a slow media device. This was only happening on Linux/OSX. ! The right arrow key was not working as PAGEDOWN in the fs editor quote window. + The HOME and END keys now work in the full screen editor quote window. + File and message groups can now be flagged as "Hidden" which means they will not show in the group listings. ! Fixed a bug with the HOME and END keys in the lightbar message reader which could cause a lock up. ! Fixed a bug when drawing percentage bars in the various places where it was possible for a divide by zero crash. ! When using the -X command line, Mystic was going to the local WFC screen if local mode was specified. The -X command line now forces an immediate local login as it was intended. This only happened in Windows. + Fixed RAR internal archive viewing. It broke when we switched compilers. Apparently it is still broken if there are comments embedded in the .RAR file. Hopefully I will get this cleared up soon too. + MPL has been completely overhauled and now follows very closely to real Pascal syntax. This will require lots of syntax changes, but the good news is that the syntax will likely not change again, since we are standardizing it. Most changes are in the following areas: - Pend, Wend, Fend all must be changed to END - If statements now require a THEN and also a BEGIN/END if it has more than one statement. EndIf is now just an End (if required), and ElseIf is now two separate statements (Else If) OLD: If Ch = 'A' ElseIf Ch = 'B' EndIf NEW: If Ch = 'A' Then WriteLn('A'); Else If Ch = 'B' Then WriteLn('B'); Else If Ch = 'C' Then Begin WriteLn('C'); WriteLn('Needs a begin and end because there are two statements'); End; - Variable declartions follow Pascal rules, so: OLD: Var ch char array(1..20) NEW: Var ch : Array[1..20] of Char; NEW: Var B1, B2, B3 : Byte; - Array elements are now specified with [ and ] instead of ( and ) - For and While statements now require "Do" and if there are more than one statement in the looped section, it must have open and close blocks (ie Begin End). Fend and Wend are changed to "End" now or removed depending on if there is more than one statement. OLD: For A := 1 to 10 WriteLn('Hello'); Fend NEW: For A := 1 to 10 Do WriteLn('Hello'); For A := 1 to 10 Do Begin WriteLn('This code'); WriteLn('Has more than one statement so it needs Begin/End'); End; - "#" style comments are not supported. Instead most standard language comments are supported... //, /* */ and (* *) comments are used. - Include files have been changed to {$include Myfile.mps} since # is 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|$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|$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: ; 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'); On 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 '); + 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 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-U 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. ! 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.