-----------------------------------------------------------------------------
    Copyright (C) 2023 Jorge Giner Cordero
    This file is part of bas55 (ECMA-55 Minimal BASIC System).
    bas55 license: GNU GPL v3 or later.
-----------------------------------------------------------------------------

2.00	2023-05-06

	* IMPORTANT NOTICE: from this version, bas55 is under the GNU General
	  Public License version 3 or later. Previous versions were under a
	  Expat/MIT license. The manual is under the GNU Free Documentation
	  License.

	* Support for GNU Readline added.
	  Changing to GPL makes it easier to support GNU Readline, which as of
	  this writting works perfectly and is very robust, compared to the
	  readline interface of NetBSD's libedit that we were using, which was
	  not behaving completely compatible with GNU Readline. This means that
	  on GNU/Linux and BSDs you can compile the program with GNU Readline
	  support or NetBSD libedit support, if they are installed. I recommend
	  that, if you can, use GNU Readline. See the README file for
	  instructions on how to compile the program with support for one or
	  the other.

	* Fixed: we were allowing to enter arbitrary characters when INPUT was
	  called and entered them between double quotes. Only the characters
	  allowed by the standard are accepted now. Moreover, characteres
	  entered are automatically set in upper case.

	* The maximum number of characters on a BASIC line has been limited to
	  72 to comply with the standard and other implementations. Previously
	  we where allowing for 80 characters on a line.

	* Fixed: we were allowing to assign, to a string variable, strings with
	  more than 18 characters, either by LET, INPUT or READ. The standard
	  limits to 18 characters.

	* Removed the --license command line option and the LICENSE command.

	* Fixed bas55.info top node.

	* Corrected typo in P008.BAS (BEING -> BEGIN). Thanks John.

	* Fixed SIEVE.BAS so it initializes its array to zeros to comply with
	  other ECMA55 implementations.

	* Added HAMURABI.BAS and BAGELS.BAS, courtesy of B. Watson.

	* Added THANKS file.

1.19	2020-10-02

	* Fixed: bas55 now compiles without errors on platforms where GCC
          defaults to -fno-common.

	Source changes
	--------------

	* src/ecma55.h: 'union instruction *code' is now declared as
          extern, so it compiles when GCC defaults to fno-common. The rest
          of global variables were correctly declared as extern. Thanks again
          to John Gatewood Ham for the bug report.

1.18	2020-03-28

	* bas55 now uses its own implementation of the functions SIN, COS, TAN,
	  ATN, EXP, LOG and SQR. This will make (hopefully) the results from
	  this functions to be the same on every platform.

	* bas55 now uses its own random number generator for the function RND
	  to get the same result on every platform.

	* Numbers are read up to 17 significant digits (previous versions were
	  limited to only 6 significant digits).

	* All these changes have been made in order to make bas55 behave the
	  same (give the same results) on every platform. Probably there are
	  still things to do to fully achieve that, but at this moment, the
	  tests bundled with bas55 give exactly the same results in the
	  platforms I tested (previously many of the tests were failing on
	  Windows due to differences in decimals or roundings).

	* Numbers are written up to 8 significant digits (previous versions
	  were limited to only 6 significant digits). Due to this the PRINT
	  zone length is now larger than before.

	* Multiple fixes to the NBS tests bundled. Thanks again to John
	  Gatewood Ham.

	Source changes
	--------------

	* bas55 now requires a C99 compiler to build. Come on, we are in 2020.

	* Added src/bmath.c: Here are all the mathematical functions
	  implemented.

	* src/vm.c: strtod55(): Bug fixed. We were using the 'long' data type
	  in this function and file. But a long is only 32 bits on Windows (64
	  bit on Linux). When the read precision was raised to 17 significant
	  digits, this was failing. Now we use the int64_t data type.

	* Added tools/newton.c. This is a small program used to calculate the
	  coefficients for the polynomials used to approximate the functions in
	  bmath.c.

	* Updated documentation bas55.texi.

1.17	2018-10-14

	* Updated project website to https://jorgicor.niobe.org/bas55 .

	Source changes
	--------------

	* src/Makefile.am using AM_CFLAGS and AM_CPPFLAGS instead of
	  bas55_CFLAGS and bas55_CPPFLAGS, which avoids generating object files
	  with prefixes as we don't need the feature.

1.16	2018-06-02

	* Fixed tests/chkout.inc which caused tests 36 and 161 to fail. We were
	  removing the path from error files and when the path was . , we were
	  using the regular expression ./ , so we were removing any character
	  followed by a / .

1.15	2018-03-08

	* Most parsing errors are now much more detailed, printing the line and
	  the point of the error. For example: 

		250: error: syntax error 
		 LET A=5**2
			 ^

	* Previously, using a number where a string was expected or viceversa
	  was reported as a cryptic "Syntax error". Now, these errors are
	  semantic, and we give more detailed information about what is wrong.
	  For example:

		270: error: string expression expected 
		 LET A$=X
			^

1.14	2018-02-22

	* Checking for uninitialized array elements now is possible in debug
	  mode.

	* More helpful error diagnostics: now we can show the name of the
	  variable involving an error (if any), as well as the array indexes
	  if for example we get an out of range error.

1.13	2018-02-14

	* Added support for the NetBSD libedit library to add enhanced editing
	  capabilities on GNU/Linux or BSD systems, like a history of previous
	  typed lines, command autocompletion, direct access to a line by its
	  number to edit it, etc. See the manual for details and the README
	  file to know how to compile bas55 with libedit support.

	  Note: This does not apply to the Windows version.

	Source changes
	--------------

	* Updated the manual, to talk about the editing capabilites on Windows
	  and Unix-like systems. Also fixed some typographical errors.

	* Removed all permission notices from source files.  The license and
	  the copyright is at the top level of the project in the file COPYING
	  and applies to all the project except otherwise noted.

1.12	2017-11-20

	Source changes
	--------------

	* Fixed the P206.BAS test file which had typographical errors. Thanks
	  to John Gatewood Ham.

1.11	2017-04-04

	* Separating a long command line option from its argument using '=' now
	  is accepted, for example, `--gosub=10`.

	Source changes
	--------------

	* Updated copyright notices to 2017.

	* Prepared for VPATH builds. This includes changes in the tests. Now it
	  is possible to compile the program in a folder different from the
	  source folder.  Still some tools generate files in `srcdir`
	  (*textinfo*) but that seems the accepted behaviour.
	
	* Added `bootstrap` script to regenerate the *autotools* files for
	  people cloning the project from revision control.
	
	* Renamed `ecma/` folder to `src/` . 

	* Added `-Wall -Wdeclaration-after-statement` to the C compiler if
	  allowed.  Included the macro `m4/m4_ax_check_compile_flag.m4` to
	  check if the compiler supports that.
	
	* Fixed tests to work on Windows. Now we don't take into account end of
	  line differences. Still some tests don't pass due to implementation
	  diferences in the math functions.

1.10	2016-08-09

	* Updated copyright notices to 2016.

	* Source: the configure script and Makefiles are generated from
	  autoconf 2.69 and automake 1.15.

	* Source: for the p117.test, we only check if the test passed, we do
	  not check for individual line changes, because depending on the C
	  standard library used we can get different results.

	* Source: including mkwin script to build on Windows.

1.09	2016-01-23

	* Bug fixed: a program that called RANDOMIZE was generating the same
	sequence if the program was executed several times in the same second.
	Thanks to John Gatewood Ham for reporting.

1.08	2016-01-04

	* Bug fixed: do not accept a program with lines after an END statement.
	Thanks to John Gatewood Ham for reporting.

	* Added automatic tests for the NBS basic tests and some others.
	'make check' runs the tests.

1.07	2015-11-23

	* The fixed error in the previous version introduced a serious bug
	with TAB, as it expected a space after it. Fixed. Thanks to John
	Gatewood Ham for reporting.

1.06	2015-11-15

	* Issue errors when a keyword is not followed by a space. For example,
	PRINT"HELLO" is not accepted now; it must be PRINT "HELLO". This is
	required by the standard. Thanks to John Gatewood Ham for reporting.

1.05	2015-11-03

	* Bug fix: READ had a bug for arrays with two dimensions: the data
	was read in the wrong slot. Thanks to John Gatewood Ham for
	reporting this serious bug.

1.04	2015-09-04

	* Bug fix: running a program that uses DATA statements more than
	once in edit mode, now behaves correctly. Thanks to John Gatewood
	Ham for reporting.

1.03	2015-08-31

	* Catching Ctrl+C signal to break running programs instead of aborting.

	* Fixed reseting the print column to zero after input operations.

	* Implemented debug mode to warn about variables that are used before
	they are assigned a value. Documented.

	* Increased the print margin to 80 characters.

	* Fixed precision when reading numbers in some cases.

	* Better error messages.

	* Documented implementation-defined features.

1.02	2015-05-11

	* Paths passed to LOAD and SAVE were changed to upper case.  It was
	impossible on Unix systems to specify a lower case path.  Fixed.

	* When a file was loaded using LOAD, the spaces between the line
	number and the actual instructions were discarded. Fixed to allow
	indentation.

	* Fixed some compiling warnings that could cause problems.

	* The source distribution has been fixed and improved to compile
	correctly on Unix systems (not only on Cygwin).

2017-04-04

	* Note: source changes are now listed in the NEWS file.

2016-08-09

	* configure.ac: Version 1.10 .

	* configure and Makefiles: Generated from autoconf 2.69 and automake
	1.15.

	* ecma.c: Updated copyright notices.

	* p117.test: This is an informative test. We can get different results
	depending on the libc version used. Only checking for passed test.

	* mkwin: Script to build on Windows under Cygwin.

2016-01-23

	* vm.c (randomize_op): RANDOMIZE was using time() to get the current
	seconds and init the seed. If the program ran several times in the
	same second, the results were the same. Using gettimeofday() in unixes
	and GetTickCount() on Windows. Also mixing the result so it is not
	increasing.

2016-01-04

	* tests: Added basic NBS tests and some others. 'make check' runs the
	tests.

	* parse.c (compile_line, end_decl): Do not accept a program with
	lines after an END statement.

2015-11-23

	* lex.c (lex_parse_id): the previous fix introduced a serious bug
	with TAB, as it was considered a keyword and the we expected a space
	after it. Fixed.

2015-11-15

	* lex.c (lex_parse_id): issue errors when a keyword is not followed by
	a space. For example, PRINT"HELLO" is not accepted now; it must be
	PRINT "HELLO". This is required by the standard. Thanks to John
	Gatewood Ham for reporting.

2015-11-03

	* vm.c (read_table_op): bug fix, the data was read in the wrong slot.
	Thanks to John Gatewood Ham.

2015-09-01

	* vm.c (run): the current index to the DATA elements was not restored
	after the program executed in the editor. Thus the next execution
	gave "not enough DATA elements". Added call to restore_data in run.
	Thanks to John Gatewood Ham.

2015-08-31

	* vm.c: increased print margin to 80 characters.

	* vm.c (print_num): factorized print_num into sprint_num that prints
	in a string and not in a file, so we can have the length
	of the generated string before printing. print_num uses sprint_num.
	Modified print_unescaled as well.

	* bas55.texi: documented implementation-defined features.

2015-08-12

	* datalex.c (strtod): not using pow. Fixed handling of
	0.700000000E+01 in NBS test 43 not being exact.

	* various: errno set to 0 inside parse_int, parse_double,
	parse_data_elem, call_ifun1 and others, instead of before
	every call. Fixed bug:

		10 PRINT 1E99999
		20 END
		run
		10
		error: invalid line number

	* various: better error messages.

2015-08-05

	* codedvar.c: added; functions previously in parse.c to handle coded
	variable names.  

	* various: Implemented debug mode to warn about variables that are
	used before they are assgined a value.

2015-08-03

	* vm.c (input_op): reset s_print_column to 0.

2015-08-02

	* vm.c (run): catched Ctrl+C signal to break running programs instead
	of aborting.

2015-05-30

	* edit.c (toupper_str): Including 'ctype.h' for 'toupper' function.

2015-05-28

	* grammar.y: Fixed indentation.

	* err.c (eprogname): Using PACKAGENAME as the program name and putting
	a space after the ':'.

2015-05-11

	* configure.ac: Check and for the math (-lm) library. The project
	compiled correctly using using Cygwin, but was failing in a real
	Unix-like OS.
	
	* doc/bas55.1: Man page generated when needed using `help2man'.

	* doc/bas55.texi: Spelling checked.

	* *: Removed DOS line endings.

	* ecma55.c: Using `config.h' package constants.

	* parse.c (cerrorln): Stop printing errors when E_BIG_RAM already
	issued.

	* vm.c (run): Less verbose.

	* edit.c (edit): toupper_str() changed after trying commands. The
	paths to LOAD and SAVE were changed to upper case, a bug on case
	sensitive systems.

	* util.c (toupper_str):	moved from edit.c. Made global.

	* cmd.c (get_range): `len' changed to size_t.
	(load): `chari' changed to size_t.
	(load):	fixed discarding whitespace after the line number.
	(set_gosub_cmd): `len' changed to size_t.

	* lex.c (is_basic_char): Parenthesis around conditionals.

	* parse.c (free_jumps): Removed unused function.

	* ecma55.sln: Removed.

	* ecma55/ecma55.vcproj: Removed.

	* /tools: Removed.

2015-01-31

	* ifun.c: Visual C++ refused to compile the release version when using
	a pointer to the `floor' function. Using #pragma function now.
