MBasic CHANGES file

V1.0 changes made by Franck Charlet:
(From original Mini Basic)

[NEW]	- Added LINE function: returns last used line number.
	- Added END command: same as STOP.
	- Added CONT command: continue to run program at current line after a break.
	- ? char can now be used as a PRINT command alias.
	- Added LET command: variable assignation wrapper.
	- Program names are now in Windows standard (was DOS 8.3 previously).
	- A program name can now be passed as command line argument
	  (MBasic will load and run it directly).
	- Changed WaitLoop procedure: now uses Sleep() api (cleaner/smaller).
	- Added handling for REM command.
	- Added HELP command: display the available commands and functions.
	- Added Error 24 on TextCr: End of line expected.
	- Added SGN function: Returns the sign of an expression.
	- Added handling for floating point numbers:
	  - Commas are denoted by a dot and scientific format is available.
	  - FPU operations will only be used if necessary
	    (And they are when at least one term in a level of an EXPR is a floating point)
	  - FOR/NEXT commands doesn't handle fp yet.
	- Added Error 25: Invalid floating point number.
	- Modified available functions and commands to handle floating points ops.
	- Added Error 26: Expressions stack space exhausted.
	- Changed Error 3 to: Numeric value overflow.
	- Added Error 27: Error in expression.
	- Improved expressions parser:
	  TERMS can now be prefixed with unlimited number of signs operators.
	- Added Error 28: Integer value expected.
	- Improved LIST command: user can now pass an (integer) expression
	  as line number (Eg. LIST LINE is now a possible statement).
	- Added SIN function.
	- Added COS function.
	- Added SQRT function.
	- Added Error 29: Illegal char found.
	- Added {PI} function.
	- Added TAN function.
	- Swapped / and \ operator: 
	  / = floating point divide
	  \ = integer divide
	  (Modified Mr. PITMAN to agree with us).
	- Added Error 30: '(' statement expected.
	- Added Error 31: ')' statement expected.
	- Removed the default padding of output in PRINT command.
	- Added LOG function.
	- Added LOGN function.
	- Added ATN function (arc tangent).
	- Added EXP function (antelogarithm).
	- Added {E} function.
	- Added SEC function: 1/cos(a).
	- Added COSEC function: 1/sin(a).
	- Added COTAN function: 1/tan(a).
	- Added ASIN function: atn(a/sqrt(-a*a+1).
	- Added ACOS function: atn(-a/sqrt(-a*a+1))+2*atn(1).
	- Added ASEC function: atn(a/sqrt(a*a-1))+sgn(a-1)*(2*atn(1)).
	- Added ACOSEC function: atn(a/sqrt(a*a-1))+(sgn(a)-1)*(2*atn(1)).
	- Added ACOTAN function: atn(x)+2*atn(1).
	- Added HSIN function: (exp(a)-exp(-a))/2.
	- Added HCOS function: (exp(a)+exp(-a))/2.
	- Added HTAN function: (exp(a)-exp(-a))/(exp(a)+exp(-a)).
	- Added HSEC function: 2/(exp(a)+exp(-a)).
	- Added HCOSEC function: 2/(exp(a)-exp(-a)).
	- Added HCOTAN function: (exp(a)+exp(-a))/(exp(a)-exp(-a)).
	- Added HASIN function: log(a+sqrt(a*a+1)).
	- Added HACOS function: log(a+sqrt(a*a-1)).
	- Added HATN function: log((1+a)/(1-a))/2.
	- Added HASEC function: log((sqrt(-a*a+1)+1)/a).
	- Added HACOSEC function: log((sgn(a)*sqrt(a*a+1)+1)/a).
	- Added HCOATN function: log((a+1)/(a-1))/2.
	- Added TICK function: returns GetTickCount.
	  (can be useful to count elapsed time).
	- Added TROFF/TRON commands:
	  TROFF will stop escape key checking performed at every line
	  while TRON will switch it on (default),
	  to stop that checking will result of MUCH greater execution speed.
	  Note: every RUN command switch it ON so the program will have
	  to explicitly switch if OFF if more speed is required.
	- Added FIX function.
	- Added INT function.
	- Added IIF function.
	- Added THEN keyword recognition (optional).
	- ENDIF command is now handled:
	  it is only used with the IF/THEN form.
	  (IF without THEN will act as previously).
	- Improved speed by changing instructions recognition mechanism.
	  (Tables splitting to avoid too long searchs for keywords).
	- NEW and LOAD commands now erases the variables and array.
	- Added Error 32: Ifs stack space exhausted.
	- Added Error 33: Unexpected statement.
	- Added Error 34: Unexpected end of file.
	- Added ELSE command.
	- Added 64Kb of memory for PEEK and POKE to avoid text area overwriting.
	- Added Error 35: Command not available in this context.
	- Added {TRUE} and {FALSE} functions (returns 1 and 0 respectively).
	- Added Error 36: '"' statement expected.
	- Commands with arguments must be separated with space char now
	  (Modified Mr. PITMAN again).
	- Most keywords (like TO or STEP) must be clearly separated with a space char.
	- Added handling for hexadecimal numbers (prefixed with "0x").
	- Added INKEY function: returns pressed key value (non blocking).
	- Major speed enhancement.
	- Empty PRINT command is not allowed anymore.
	- Removed \ char handling in PRINT command.
	- Added Error 37: Argument expected.
	- Variables can now contains strings.
	- Addresses of variables and array can now be obtained
	  by adding & char before their names.
	  Ex: B=&A will put address of variable A into B.
	- INPUT and GET commands now requires & prefix (variable reference)
	  in their arguments.
	- Added Error 38: Variable or array address expected.
	- Added Error 39: Invalid use of address reference.
	- Added Error 40: Invalid cell reference.
	- Background color in COLOR command is now optional
	  (leaving it unchanged if specified).
	- Added Error 41: Datas memory overflow.
	- Added PEEKW function: same as PEEK but returns a 16 bits value.
	- Added PEEKL function: same as PEEK but returns a 32 bits value.
	- Added Error 42: No argument allowed.
	- Empty braces "()" are now accepted as functions parameters.
	- INPUT command improved: it can now accept two arguments:
	  First one can be a string then second one the variable address.
	  Ex: INPUT "Enter a value: ",&A
	  This will print the mentioned string before waiting user's input.
	  (The string argument is optional).
	- User can now enter a string value as result of INPUT command.
	- Added Error 43: Strings space exhausted.
	- Added Error 44: Numeric value expected.

[FIX]	- Fixed console dimensions handling in Windows NT/2000.
	- Fixed file loading procedure.
	- Won't print zeros as negative numbers anymore.
	- Fixed idiv sign extension and Divide By Zero faults in Divide procedure.
	- Fixed RND(): won't accept negative and null numbers
	  (also won't return negative results).
	- GET command will report 0 on cursors or functions keys releasing
	  (So, Pitman should be playable now).
	- ConsoleCharNbr variable wasn't loaded if window was of the same size
	  (So CLS command should work correctly now).
	- Console handling will now correctly send non-keys events to void.
	- Corrected handling of cursors/home/end/insert keys.
	  (Also fixed keypress/release problem).
	- Fixed EDIT command: won't freeze MBasic anymore
	  due to negative number of chars to print.
	- MBasic can now be started in full screen mode
	  under Windows NT/2000 as well (NT uses a 43 lines gfx mode by default).
	- Fixed PITMAN.MBI: T/R/M keys are now available in lower case too.
	- LOAD and SAVE commands won't accept illegal Windows chars in filenames.
	- Changed various commands to accept complete expressions as parameters.
	- Now remember correct cursor insert mode shape.
	- Tabulation char is now replaced with space.
	- WINDOW EDIT command reported an error sometimes.
	  (sizes are now corrected if necessary depending on the charset).
	- Default editor colors are restored before prompt.

[MISC]	- Cleaned up MBasic.txt.
	- Changed the default colors.
	- MBasic will now report last API error number.
	- Introduced precompilation engine.


Have a nice day.
