beta versions .004.1 -> .005 07/20/04 BCET & BGEN: corrected processing of SWAP statement. 07/17/04 BL: Changed option list handling to me a little more consistant. 07/16/04 RT: DIR$() Failed to return a zero length string. 07/14/04 BCET & BGEN: Modified both to allow other than Basic calling conventions. Mainly for Windows callback routines, which expect StdCall 07/10/04 BCET & BGEN: Modified both to process "BYVAL var AS ANY" as "BYVAL var AS LONG" for numbers, and as "BYVAL var AS STRING" for strings. This is to better support Windows API calls like LoadMenu that take either a name or a resource identifier. 06/27/04 RT: modified getkey to return 0 for both alt key up and down 05/28/04 BGEN: Get rid of a LOT of string operations - More to go. 05/13/04 BGEN: Fixed BlockCleanup to be more efficient in terms of space. 05/12/04 BGEN: Changed/fixed fp parm passing 04/13/04 BGEN: Changed to generate inline code for ON GOTO & ON GOSUB 03/19/04 BCET: fix (I hope) the problem with NOT. NOT takes a factor, not an expression. Needs futher testing, but appears OK. 03/19/04 BGEN: reduce asm file clutter a bit by droping source & stmt # for line numbers 03/14/04: RUNTIME: Added a TRIM$ function fix BOPT to change rtrim$(ltrim$(?)) to TRIM$ fix BOPT to change ltrim$(rtrim$(?)) to TRIM$ 03/10/04 BCET & BGEN: Changed to use a common routine to better classify numbers and to determine if they are valid. 02/25/04 BCETLIB: Fixed several math functions to return the correct values. Most changes are in the EXP function, and the routine for '^'. 02/22/04 BGEN: Changed to call proper Str$ version for single. BCETLIB: created Str$ for single. (was using double) 02/20/04 BCETLIB: Fixed a bug with returning wrong info for the SGN of a @ number. 01/22/04 BGEN, BOPT: changes to better handle [eax] type situations for NASM. 01/12/04 BCET: fixed a bug with the list file 01/12/04 BOUT: change from using an include file for runtime calls, to externdef's in front of each call - to be tested - 03/19/04: Works. 01/12/04 BCETLIB: Lots of changes for freebsd .004 -> .004.1 - .004.1 never released 11/02/03 BGEN: Change initializers for ?UserData output from 0 to ? 11/01/03 BCETLIB: Lots of changes to cope with NASM .003 -> .004 09/26/03 BCET & BGEN - changes to allow 'var AS STRING' in a TYPE. Actually the changes are so that it will work, it was never blocked. HOWEVER, any attempt to read or write vars dimmed from such a type, will FAIL. The read or write will work, however attempting to reference the string will cause problems. This is intended only for use within the program. Variable length strings are more efficient than fixed length strings in terms of code size. And if you need to pass 20 to 30 strings to a sub, it is much easier to pass a single TYPE var that has them all. 09/18/03 BCET - add error message for wrong number of parms on a call 09/12/03 BOPT - added MOV|MSX| & MOV|MOV|PSH|PSH| 09/12/03 RT: Fix STR$ for Single & Double to provide proper leading space for positive numbers 09/09/03 Change BCET to process nested TYPE vars - somewhat. Needs testing. Probably won't work if multiple TYPEs have the same var name. 09/07/03 Change BCET to process DECLARE options in any order. 08/23/03 RT: Fixed f$seek to save registers clobbered by the windows API. 08/22/03 New Program: BL - Driver program for BCET. Somewhat like ML or CL. .002 -> .003 08/12/03 BCET - Added code to cope with the "IF THEN GOTO " form of the one line IF statment. 08/11/03 BGEN - More patches for inline array code gens. 08/09/03 BOPT - fixed a few bugs that cropped up in testing the inline code for arrays. 08/09/03 BCET - added a routine to reduce the number of temporary variables generated, by re-using them where possible. 08/09/03 BGEN - added code generation for inline access to arrays (one dimension only). For the moment, it is always enabled. It will later be an option. The inline code should run faster, but is bigger. Bounds checking is ALWAYS enabled. That too will later become an option (to reduce code size). 08/03/03 I THINK I got the interactions between $STATIC, $DYNAMIC, and all the versions of DIM, REDIM, ... working correctly. It is now possible to declare static arrays. However, they are allocated in BSS, and cleared at statup, AND the code generator does NOT yet generate direct references to the array. It still uses the routines as if /Ah were in use. 07/29/03 Changed BCET to complain if the variable given for NEXT does not match the one given for the corresponding FOR. The multi variable version of NEXT is not supported. 07/29/03 Fixed BGEN to handle floats & currencys as FOR variables. 07/28/03 Started on mods to better handle arrays. .001 -> .002 07/25/03 Fixed BGEN to work on StdCall Calls. (Missing a redim of an array) 07/25/03 Fixed BGEN to correctly pass BYVAL String Literals. 07/25/03 Removed LOTS of STOP statements from BOPT 07/25/03 RT: I can't get the linker to guess the entry point on it's own. Therefore /subsystem:console is REQUIRED for a link. 07/25/03 RT: A number of changes intended to make life easier for me when working on the runtime routines. Mostly splitting up the main runtime source file into more logical elements. 07/25/03 RT: Added Version Checking on startup. All basic modules MUST be compiled with the same version of the BCET compiler. 07/24/03 RT: Changed STOP with no parameters to have a return code of 255. 07/24/03 Change all programs to have a non-zero return code for errors. 07/20/03 Changed BGEN to handle 'BYVAL STRING' correctly. 07/19/03 Changed BGEN to generate runtime calls for Print Using. The runtime code should be interesting - but not done yet. 07/14/03 RT: Fixed TAB and SPC. They appear to work ok. 07/13/03 RT: Fixed the PRINTcomma problem. It appears to work ok. 07/13/03 changed BCET to properly handle args for CDECL, STDCALL, and SYSCALL change BGEN to pop the stack for CDECL. VARARGS are NOT supported. .000 -> .001 07/06/03 Changed BOPT to process some more things. Also tried something which should speed it up, I hope. 07/02/03 Changed BOPT to process some additional things. 07/02/03 Changed BGEN to emit a $ on system string function calls - Was L 06/29/03 Patched BCET to process STATIC correctly. Found another problem in the expression routine. 06/27/03 RT: Added banner message to the runtime startup code. Boring, isn't it? 06/27/03 RT: Replaced STR$ routine for 64bit ints with an integer routine. It had used a FP routine. 06/26/03 Removed some unused vars from BCET. 06/26/03 Cleanup BOPT to reduce a lot of reduntant code, and get the asm file below 32000 lines. Masm gets sick with large source files if you use -Zi. :-) 06/25/03 remove TAB() from BFMT (because it doesn't work properly) so that the triple compare works. 06/25/03 apply patch tp BFMT to get around another code generator bug. Has to do with array references. 06/25/03 Add banner messages to all programs. 06/13/03 Cleanup usage message in BCET and make consistant with BGEN output header. 06/13/03 change BGEN to look for b_gentab in the exe directory. if not found, and if (on my system) then look in (my developmenmt directory) 06/12/03 change BGEN & BOUT to not supply or use the ;;out= line. It is not needed anymore, and removing it makes checking the triple test easier. 06/12/03 more changes in BGEN to recoginize &@ in special strings. Only &@Date and &@Time are recoginized, and the length adjusted. Others won't work. 06/12/03 RT: change size back to Dword. The code generator doesn't know from bytes. 06/11/03 RT: change size of f$PrintChannel & f$InputChannel to Byte: was Dword mainly to cut down the size of the code needed to set them. 06/11/03 changed BCET & BGEN to allow for collecting and passing info to change the size of the string pool. Added $StringPool: as a metacommand. Takes a number, followed by an optional k or m as the size. If not specified, the runtime uses a default. If specified in multiple modules, the largest takes effect. Limit is 2^32-1. 05/28/03 Hacked the float library code to handle 'd' as well as 'e'. More hacking is needed here. Also need to modify to handle TempReal. 05/28/03 change BCET decorate name to append named COMMON name to variable. This will allow COMMON /name/ to work. Common variable assoication between modules is by NAME not by location as in PDS. 05/26/03 changes in BGEN to recoginize &@ in special strings. &@Date & &@Time have the length of the string adjusted properly. For others leave plenty of spaces at the end of the string, and expect garbage (nulls) to appear at the end. This is to allow printing of compile dates ...