
                              THE HISTORY OF SAGE
 ----------------------------------------------------------------------------


 Version 1.00, September 7, 1998
 -------------------------------

 NOTE: This version requires the LATEST versions of each world to function
 correctly. If a world was created prior to the date of this release (see
 above), it will NOT work now that Sage is no longer in Beta stage.

 A new version of Worldmgr is also now available, along with a new advanced
 tool which converts complete existing Lord 2 worlds to Sage format
 (including the REF language scripts!).

 I was off the Internet since June 29th, but I'm now back online. If you had
 sent me an e-mail since then, I am now in the process of replying to them
 all so I should get back to you within a few days.

 This is a MAJOR update. Here's what's new:

 - The variable ~20 (the color of area surrounding land in World Map)
   was being altered by CHOICE.FLE, which was using is as a temp variable.

 - Fixed a bug where mail could not be sent until at least one player
   had attempted to read their mail (usually by pressing (G) for Get mail).

 - When running in Multinode mode, and only one player was on, the NMALL
   command would attempt to reset the node file (which didn't exist) making
   logging on and off very slow.

 - When the /RUN or /RESET commands were used, some unnecessary tasks were
   being performed upon Sage's exit. One of those tasks was writing the
   current player to the PLAYER.DAT file, which meant that when you reset
   your game, the PLAYER.DAT file was erased in RESET.FLE, but then
   re-created after RESET.FLE was finished. This should no longer cause
   problems.

 - Fixed some memory problems stopping SORTPLAYERDAT from working in some
   situations.

 - Fixed a bug where Sage terminated abruptly when trying to copy a file
   incorrectly (with the COPY command).

 - Fixed a bug in CHOICE.FLE where NEWBYTES created at the start of the FLE
   were not unloaded (UNLOADBYTES) if no choices were passed.

 - The LD and LDE commands have swapped purpose. LDE now means "Load Exact".
   LD evaluates text, replacing the variables contained within the string
   with their values. LDE does not evaluate, it loads a variable with literal
   text, and does not replace the variables contained within the string.

   Example of the difference:

   LD  $2, "Beau"        ; $2 becomes "Beau"
   LD  $1, "Hello, $2"   ; $2 becomes "Hello, Beau"
   LDE $1, "Hello, $2"   ; $2 becomes "Hello, $2"

   This switch makes programming easier for FLC authors and also fixes a bug
   with the LJUST, RJUST and CENTER commands that could not have been solved
   the other way.

   What this means to world authors
   --------------------------------

   1. You'll need to replace all instances of LDE with LD in every FLS file.

   2. The line "LD *6" in MAIN.FLS should be changed to LDE because the
      literal (exact) text should be placed into *6 without replacing the
      variables with text.

   3. Recompile all FLS files (you don't need a new FLC).

   Once these changes have been made, please release your updated worlds ASAP.
   If you have problems, send the world to me and I'll update it for you.

 - One of the problems with FLC is that text such as "$100" cannot be
   displayed, because Sage interprets that as "Global String 100" and will
   attempt to replace $100 with the "Global String 100" variable. To cope
   with this problem, a new "dummy" code has been introduced which does
   nothing, but when insterted between $ and 100 stops Sage from trying
   to replace $100 with a variable. The code is "`G".

   Example:   LD $1, "Two"
              WL "You found $1 gold!"    ; Would output "You found Two gold!"
              WL "You found $`G1 gold!"  ; Would output "You found $1 gold!"

 - Fixed a keyboard inactivity bug.

 - Fixed "Sage Error 3", where Sage terminated abruptly when trying to
   open a text file (with the OPENR/OPENW commands) which didn't exist.

 - Fixed "Sage Error 106", where Sage terminated abruptly when trying to
   read from a text file (with the RLF command) into a number variable when
   the text read is not in a valid number format.

 - Four more "multiple use" long integers added to the status variables.
   Now !1 through !5 can be used for whatever purpose you like.

 - Fixed CALL command. Problems would arise if the FLE didn't exist or
   could not be loaded due to memory restrictions.

 - A bug caused serious memory problems if the ITEMS.DAT file was corrupt or
   in the wrong format (fixed).

 - Removed LD *3, "SEVEN\" from TEST.FLE. It caused a problem with
   the /RESET command, which sets *3 to the parameter passed to Sage.

   Now when you test an FLE, (with the /RUN parameter), Sage sets *3 to the
   path of the FLE you are testing.

 - Fixed a HUGE bug that affected loading (LD/LDE) a value into global
   (player) string variables ($).

 - Four commands added to FLC and subsequently to Sage.
   Here's the syntax and descriptions of the commands:

  IDF_INC <f>, <pos>         (IDF Increment)
  IDF_DEC <f>, <pos>         (IDF Decrement)
  LDF_INC <f>, <pos>         (Long IDF Increment)
  LDF_DEC <f>, <pos>         (Long IDF Decrement)

      Increment/Decrement the value stored at position <pos> (type nexpr)
      in <f> (a filename, type sexpr).

      See "About IDF Files" in FLC.DOC for more information.

 - Whilst in a world, sometimes you have messages in "queue" that will end
   up in your Saybar if you stay in the world. These messages are now removed
   from memory when you exit a world so that if you return they don't appear
   in your Saybar.

 - Player editor improved. Now the data is only saved if it has been
   modified, so you can browse through the players faster. Also the player
   editor now works if you have more than 10 worlds installed.


 Beta 8, June 25, 1998
 ---------------------

 NOTE: PLEASE READ UPGRADE.TXT FOR INFORMATION ON UPGRADING TO BETA 8.
 ---------------------------------------------------------------------

 - A basic player editor (PLAYEDIT.EXE) is now included. More features will
   eventually be added, but at least now players can be modified.

 - The much requested "new day" switches have been added:

     /D   ..  Advance the game one day

     /M   ..  Advance the game one day and run Maintenance to delete
                players who haven't played in 15 days.

   So now when you die, you can live again and continue to play on the
   same day.

 - Sage would crash on Pentium II systems at speeds above 200 Mhz. Thanks
   to Gor and E_Maus for helping fix this bug and Matthew Schibler for
   reporting it.

 - An important GETPLAYER/PGETPLAYER bug was fixed.

 - FLE execution efficiency improved.


 Beta 7, June 19, 1998
 ---------------------

 More bugs were discovered and fixed.

 - The color of the World Map are now world-definable, thanks to four new
   status bytes, all relating to the world map.

     ~19 : Land                       (defaults to 2 (green))
     ~20 : The area surrounding land  (defaults to 0 (black))
     ~21 : Yourself                   (defaults to 15 (white))
     ~22 : Others                     (defaults to 10 (bright green))

 - GIVEITEMU and DROPITEMU did not update the screen correctly in worlds
   with map windows not beginning at position (1,1) (eg. The Lost Planet).

 - Switching between worlds (or exiting one world and entering another) is
   more secure and "clean", meaning when you enter a new world there should
   be no remenants of the last world you entered.

 - Modified FILE_ID.DIZ. Also included SMALLAD.ANS for those who prefer to
   have a smaller file than AD.ANS advertising Sage on their BBS.


 Beta 6, June 13, 1998
 ---------------------

 Aside from those mentioned, very few bugs were reported so if all goes well,
 this may be the final Beta. Please report all bugs to beau@corplink.com.au.

 - Sage's terminating routines, which performed important tasks such as
   deleting a player's internode messages and saving the player file was
   removed for testing purposes but accidentally not re-implemented before
   the release of Beta 5. Everything is back to normal now.

 - To Sysops who would like to customise their copy of Sage, the INDEX.FLS
   file has been documented more fully now so you can understand how it works.
   Why not change some colors of prompts or even create your own ANSI to be
   displayed at the top of the screen when a player selects a world?

   Once you've made changes to the INDEX.FLS file, download FLC and type
   "FLC index" to compile the script to INDEX.FLE.

 - The #INTROx labels in INTROS.ANS were changed to LOGOx to make the
   distinction between the filename and the labels clearer.


 Beta 5, June 5, 1998
 --------------------

 Many changes in this version, in fact so many I'm a little unsure of it's
 stability. I designed a method to get around a Pascal limitation which, to
 my surprise, is working well so far.

 As always, the most recently implemented changes are first. Some small bug
 fixes aren't mentioned.

 - A massive, previously undiscovered (or should I say, unreported) bug was
   found whereby Sage Error 204 was reported when switching between worlds on
   systems with limited memory capacity. This should no longer be a problem.

 - When testing an FLE with SAGE /RUN <filename[.FLE]> the ~3 and ~4
   variables were 0, now they're filled with the X and Y positions of the
   cursor on the screen before the FLE is run.

 - New status variable: ~18 (current text attribute).
   The current foreground color will always be (~18 % 16), and
   the current background color will always be (~18 / 16).

 - As well as all the usual files, Sage now deletes all files beginning with
   a "$" (ie. $*.*) when reseting a world. So if you are a developer of an
   IGM or World, name your temorary files with a $ at the start and Sage will
   delete those files when the game is reset (SAGE /RESET <worldpath>).

 - DELAY now gives up more time slices to other tasks while it delays
   (one per second)

 - You can now use ascii characters, even the non-printable ones, in your
   text. This is done with the close square brackets (]) character, followed
   by the ascii value of the character.

   For example: (this is how you can hide the cursor in FLC)

       WT "`R0`0]8"  ; In black background and foreground, display the 
                      ; character. The ]8 denotes ascii character 8, so the
                      ; cursor backs up over the  char where it's hidden

 - New FLC commands added (see FLC.DOC for more info on these):

      BACKUP x       Moves the cursor back x places
      HALTFLE        Same as HALT, but ignores unsatisfied GOSUB commands
      ASC x          Gets the ascii value of a character, puts it into ~5
      GC             Same as GETC, but waits for *any* normal keypress.
      KBDSTUFF x     Stuffs the keyboard buffer with a character
      FG x           Set foreground color
      BG x           Set background color

   For those who care: the newly introduced BACKUP and KBDSTUFF commands have
   the exact same effect as their namesake cousins in PCBoard's PPL language.

 - You can now call an FLE file from a string. This is a new feature which
   further expands Sage's flexibility.

   Eg. WT "!!*3ENTER" .. is the same as .. CALL "*3ENTER"

   This allows the use of animated prompts such as the Enter prompt.
   Note: Currently this only works with the WT and WL commands.
   You can't use this method from within a text file being displayed.
   I'm planning on implementing that in Beta 6.

 - A status bar bug would scramble the screen of players with more than 999
   minutes remaining in Sage. This is another DDPLUS bug which I hadn't
   noticed. Thanks to Demon Knight and David Zhao for this bug report!

 - INDEX.FLE now says "Loading (worldname).." while a world initialises.
   If you play the world twice in a row the message will probably flash by so
   fast you won't see it, because most of the processing will be in your
   computer's cache.

 - The IGM.EXE utility was still running to Sage Beta 2's specs. Now works
   with Betas 3 and up.

 - The CENTER command once again fixed, hopefully for the final time.


 Beta 4, May 9, 1998
 -------------------

 Without my knowledge, someone distributed a copy of Beta 3 about two weeks
 before it should have been released. The early copy didn't work, which led
 people to beleive it was faulty and ignore the public release of Beta 3.

 Anyway, here's what's new in Beta 4:

 - Lots of bugs relating to running Sage remotely (as a BBS door) were fixed.

 - ATTRIBS.TXT was not written to if there was an error (which caused
   problems because the only time you need to look at the file is when you
   have an error).

 - The /L switch would not force Sage to ask for your name (fixed).

 - Sagecfg modified: it now tells you when a new NODEx.CFG file is created,
   and bugfixed: the Fossil menu had a blank status bar.

 - More timeslices are given up while waiting for a keypress, making multi-
   tasking smoother.

 - Centering strings fixed.


 Beta 3, April 29, 1998
 ----------------------

 A major reworking. Here's a chronological list of changes (the most recently
 implemented changes are first):

 - The supposedly "machine-independant" delay procedure I was using was not
   so machine-independant, so I'm trying another one which uses no ASM code.

 - The random number seed was not regenerated each time Sage was run (fixed).

 - Added support for "Special" spots. See SPECIALS.DOC in the new Worldmgr
   for an explanation of this feature.

 - Sage now checks for SHARE.EXE before running in Multinode mode. Also,
   running Sage without SHARE.EXE is now much faster.

 - The Unregistered scope has been removed. Unregistered copies of Sage can
   now access all 14,400 map screens. The 1000 turn limit per day remains.

 - "Turns remaining" was constantly being reset to 1000 whenever an FLC
   command attempted to change it in Unregistered copies (fixed).

 - Sage is now configured with a configuration utility, "Sagecfg".

   There are now two different configuration files: SAGE.CFG and NODEx.CFG.
   SAGE.CFG is used for every node, while NODEx.CFG is specific to each node.

   When you decide to configure, for example, node 2 in Sagecfg, the "BBS
   Setup" and "Fossil" menus are filled with the data from NODE2.CFG. The
   other menus do not change, do not configure them for each node. When node
   2 of Sage is loaded, SAGE.CFG and NODE2.CFG are read.

 - Items work faster now when you collect them, and updating the screen with
   other players is now faster. There was some unnecessary file access to
   ITEMS.DAT that went unnoticed.

 - Sage now supports a five second "hook". Basically this means that an FLE,
   namely HOOK5.FLE, is executed every five seconds while you're in the map
   screen. This is only possible due to the high speed of FLE execution and
   runtime.

 - I found (and fixed) a HUGE bug in the DDPLUS door toolkit which all DDPLUS
   users should know (if they don't already). E-mail me for the details.

 - One new commands was changed and one was added to FLC and subsequently
   implemented in the Sage engine as well. FLC now supports 125 commands.

   New command: RANK <global var> - gets the rank of a player in the current
   game according to the global variable you specify, and puts it into ~5.

   The SM command, which previously displayed the world map in an 80 x 20
   window, now requires the FLC programmer to specify the window co-ordinates.

   New format: SM x1, y1, x2, y2

   Eg. SM 10, 5, 20, 15 would display the world map between the screen
   co-ordinates (10, 5) and (20, 15).

   The following have also been updated to support the new changes:

   FLC
   The Seven Sages

   And check out the new world: "The Lost Planet" on the Flax Software
   website which makes use of both these two new commands, and HOOK5.FLE!


 Beta 2, April 6, 1998
 ---------------------

 Two changes.

 As many of you discovered, on occassion Sage would cause a protection fault
 in the OS when hailing another online player. This has been fixed.

 There has been a major reconstruction of the WORLD.DAT file. It's now split
 over two files, SWORLD.DAT (which holds the world information, template
 screen and map indexes) and SMAP.DAT (which holds the map screens). This
 makes Worldmgr more secure. Due to this format change you will need to get
 version 2 of The Seven Sages world. L2toSage has also been updated.


 Beta 1, April 1, 1998
 ---------------------

 First Release
