*** This is a -*-text-*- file ***

kalc v2.2.2, Copyright (C) 1999 Eduardo M Kalinowski (ekalin@iname.com)


Changes from version 2.2.1 to version 2.2.2
-------------------------------------------

    Bug fixes:

        - The "unpick" command, when given an argument of 0, now
          behaves as a "drop", instead of giving an error message.
          And when given a negative argument, it no longer crashes the
          program anymore.


Changes from version 2.2.0 to version 2.2.1
-------------------------------------------

    Bug fixes:

        - When you store an object with the same name of a variable
          that you had previously purged in the same session, the
          program no longer crashes.


Changes from version 2.1.1 to version 2.2.0
-------------------------------------------

    Improvements:

        - The calculator is programmable, with a syntax like the
          HP48/HP49G. The following things have been implemented:

          . Programs using << >> as delimiters.

          . ift and ifte conditional commands.

          . if...then...end and if...then...else...end conditional
            structures.

          . case structures.

          . start...next, start...step, for...next and for...step
            definite loop structures.

          . while...repeat...end and do...until...end indefinite loop
            structures.

          . Local variables, using the dobind command (RPN-like) or
            the HP -> (arrow) syntax.

        - The stack now doesn't have a fixed size anymore, it is
          limited only by available memory and it will grow as
          necessary.

        - If you have the readline library, then you can use a '~'
          when specifying file names (diskSto, diskRcl, saveAs and
          open functions) to represent your home directory.  As a
          matter of fact, all kinds of tilde expansion done by the
          readline library are available.

        - The vtype command has been added, it returns the type of the
          object stored in a given variable.

        - An '@' sign can be used to indicate a comment until the rest
          of the current line of commands.

        - You now don't need the readline library anymore to compile,
          but if you don't have you'll have much less functionality.

        - I've written a short man page for kalc, it is in the doc
          subdirectory and is installed by default by "make install".
          It does not describe the usage of kalc or its functions,
          but it provides basic information such as command-line
          options.

    Bug fixes:

        - Doing a eval with an empty stack no longer crashes the
          program.

        - The str> no longer adds random identifiers to the stack.

        - The output of the vars command now fits (well, more or less)
          the current set width.

        - If you do not have the getcwd() function and you save a
          file without giving an absolute path, no prefix is added to
          that function.

        - The `configure' script now does something useful, especially
          when some system characteristic is not found (like the
          absence of the readline library).


Changes from version 2.1.0 to version 2.1.1
-------------------------------------------

    Bug fixes:

        - The commands entered on the command line are now processed
          correctly.

        - The `make install' option was not working correctly, now it
          is.


Changes from version 2.0.0 to version 2.1.0
-------------------------------------------

        - The name has been changed to kalc.


    Improvements:

	- LASTARG support has been added.

        - kalc can now work with integers in other bases, not only
          decimal. Bases from 2 to 36 are supported, and all commands
          found in the HP48 (shifts, bitwise operations, etc) are
          reproduced here.

        - kalc now supports more than one status file. You can use the
          commands open, save and saveAs to operate on the file you
          want.

        - New keep function, that drops all but the n (level one)
          bottom elements of the stack.

        - HP49G Stack manipulation commands added: pick3, dupdup, nip,
          ndupn and unpick.

        - There is now support for tagged objects.

        - The '%of' function has been renamed to '%'.

        - New trigonometric functions: sec, csc, cot, asec, acsc,
          acot, vers and hav.

        - New hyperbolic functions: sech, csch, coth, asech, acsch,
          acoth, gd and invgd.

        - New exponential function: cis.

        - There is now a 'eval' command that evaluates the object in
          level one.

        - The bitwise operations (and, or, xor and not) now work on
          string objects, applying the function to each character in
          the argument(s).

        - You can now insert single and double quotes, and new-line
          characters in strings by using the escape sequences \', \"
          and \n, respectively.

        - The decompiler (the part responsible for transforming the
          objects in readable strings to be displayed in the stack)
          has been almost completely rewritten, and features now
          word-wrap, variable width, and is more similar to the HP48.

        - Parts of the manual have been rewritten to be more accurate.


    Bug fixes:

        - Pressing CTRL-D (or CTRL-Z on MS-DOS systems) now properly
          exits the calculator.

        - Entering 0 roll no longer puts a random object in the stack.

        - Trying to pick an element at level 0 or less no longer
          crashes the program.

        - Passing bad arguments to the repl function now produces the
          correct "Bad Argument Type" error.

        - The FIX mode works better now. (But it isn't perfect yet.)


    Technical notes:

        - The hashing function (used to store objects in memory) is
          now a good one.

        - The C library's bsearch() function is being used to search
          for function addresses, instead of my own binary search
          routine. Since bsearch() is supposed to be highly optmized,
          this should bring some speed bonus to the program.


Changes from version 1.1.1 to version 2.0.0
-------------------------------------------

    Improvements:

        - Complex numbers are now supported. For more information, see
          the manual.

        - There is now memory, for you to store objects. The commands
          are sto, rcl, purge, etc... see the manual.

        - You can save objects to files, using the disksto and diskrcl
          commands.

        - Support for strings, and string manipulation commands: size,
          >str, str>, num, chr, head, tail, pos, sub, repl.

        - Relational commands added: ==, !=, #, <, >, <=, >=, and, or,
          xor, not.

        - Commands related to date and time added: date, time, >hms,
          hms>, date+, ddays, hms+, hms-, dow, dowstr, tstr. 

        - There is now a mod function, that works like in the HP48.

        - New xroot function, for calculating roots.

        - New atan2 function, for calculating the arc tangent
          including the quadrant.

        - New rnd function for rounding numbers.

        - New gcd and lcm commands for calculating the greatest common
          divisor and least common multiple of two numbers.

        - neg can now be used as another name for the chs function.

        - Shell escape feature: use the command `shell COMMAND' to run
          command, or just `shell' to run an interactive shell.

        - NaN's are back. When the result of a function is undefined
          (such as 0/0), instead of an error you get NaN in the stack.
          You can operate on NaN as any other number, altough it is
          Not a Number.

        - The documentation and on-line help are much better now,
          almost all commands have examples showing their uses.

        - The MS-DOS binary is now stripped, which saves A LOT of
          space. It is also slightly smaller because it does not
          contain part of the DJGPP start-up code.


    Bug fixes:

        - The pick command now reports an error when there are not
          enough object to pick.

        - The results of commands run in batch mode are now saved in
          the init file.

        - Corrected spelling errors in the documentation and on-line
          help.


    Technical notes:

        - Some memory that should be free'd and was not now is
          correctly free'd. Unfortunately, more memory that should now
          be free'd is not.

        - Minor optimizations in the swap, dropn, roll and rolld
          functions.

        - Most #define's have been changed to enum's. No great
          differences here.

        - The code is now much better documented: all functions have a
          description of what they do.


Changes from version 1.1.0 to version 1.1.1
-------------------------------------------

    Bug fixes:

        - Using eng mode no longer displays wrong results for the
          number zero.


Changes from version 1.0 to version 1.1.0
-----------------------------------------

    Improvements:

        - The commands must now be separated by spaces, and numbers also.

        - The prompt can now be set. Use the "set prompt" command to
          do that.

        - The number of lines to display can be dinamically changed
          while running the program. The `=' command specifies the
          number of lines to display once, and the `set lines' command
          can be used to change it permanently.

        - It is now possible to set the desired way to display
          numbers: standard, fixed precision, scientific notation and
          engineering notation, plus the number of decimal places
          desired.

        - The stack is now saved when you exit the calculator, and
          restored when you run it again.

	- New command line options: -s (do not load stack from init
          file), --help (display help message and exit successfully)
          and --version (display version information and exit
          successfully).

        - The GNU Readline library is used to get the commands from
          the user. This means that the lines can be of any size, and
          there are full editing commands for the user. For more
          information, see the User's Manual or the Readline Library's
          Manual.


    Bug fixes:

        - The first time the stack is displayed now shows the number
          of lines the user requested. On previous versions, the first
          time the stack was displayed always showed four lines, no
          matter how many lines the user chose.

        - The xpon command now works properly.

        - The ^ (power) command now works properly.

        - Dividing +-Inf by +-Inf now results in a "Undefined Result"
          error.


    Technical notes:

        - The program now uses a binary search to run the function
          equivalent to the command the user typed. The old "else-if"
          loop was slow and difficult to mantain.

        - The program now uses dinamic allocation for the stack
          elements. Just an array of pointers to the elements is kept,
          the elements themselves are allocated and freed as needed.

        - The options are now saved in binary form. This makes the
          program a lot easier, and is better, because since the stack
          elements *must* be saved in binary form (currently just
          because of precision, when there are new object types this
          will be even more necessary), there is no need to have two
          separate configuration files.
