Ionic Wind Software is pleased to announce the long awaited release of IWBasic Ver 2.0.
New in IWBasic Ver 2.0:
___________________________________
- $OPTION added to control 19 compiler options from within sourcecode:
- Codepage - Sets the codepage for unicode strings.
- ErrorLimit - Sets the upper limit for compiler error messages.
- IncludePath - Add a search path for include files.
- AsmVariables - Define formal and local variables for inline assembly code.
- Warning - Sets a new or modifies the current filter for warning messages.
- Return - Force the compiler to not alter eax,edx when returning from a subroutine.
- Intrinsic - Enable/disable intrinsic functions.
- Optimization - Enable/disable Optimizations.
- CaseSensitive - Enable/disable case sensitive compilation.
- NoVtable - Controls generation of vtable in classes.
- Strict - Show any possible problems, for example unknown type in DECLARE (even unused).
- ZeroVariables - If active, local variables will be initialized to zero.
- /m - Enable or disable $main.
- /a - Compile and assemble.
- LibPath - Add a search path for .lib files.
- QuoteLibPaths - Quote spaces in $$$lib.link file.
- ResolveLibs - Convert all relative paths passed to $USE, to full paths.
- DimOrder - Change the order of variables definition
- Set 10 compiler options from command line
- option /As - Compile and assemble. Optional s is passed to nasm.
- option /Bpath - include file <path> before parsing the main file.
- option /C number - change default codepage from Ansi (CP_ACP) to number. This option ensures that unicode strigs L"" are properly converted from multibyte character set (controlled by your text editor) to unicode binary data.
- option /D name{=value} - define a numeric constant.
- option /E number - show up to number errors; default is 5. Does not apply to syntax errors.
- option /H or /? displays this help.
- option /I path - add a search path for include files. Pass full path, or a relative path to current file
- option /P defines arguments and local variables for use in inline assembly.
- option /R - Inputfile specifies a path to response file, where each line is a pathname to an IWBasic source file.
- option /W number - disable warnings. 1: uninitialized variable, 2: unreferenced variable, and 5 more for advanced users. If not specified then all warnings are enabled.
- IDE dialog added for setting 18 compiler options
- Always initialize assembly variables
- Disable hidden "return 0"
- Always use intrinsic functions
- Turn on optimizations
- Case sensitive compilation
- Do not generate vftable in classes
- Generate object instead assembly file
- Be strict
- Turn off autodefine
- Initialize local variables to zeros
- Call Function instead of [__imp_Function] in assembly
- Resolve relative lib paths
- Quote lib paths in $$$lib.link file
- Try to create missing import libraries
- Define the leftmost variable first: inta,b,c,d
- Define constants ( with or without a value )
- Define additional search paths for include files
- Define additional search paths for lib files
- Added special constants
- __WARNINGFILTER__ - returns the current warning filter
- __CODEPAGE__ - returns the current codepage
- __FILE__ - returns the current file path (a string)
- __LINE__ - returns the current line number
- __IWVER__ - returns a number with compiler version 0x02xxyyzz.
- __CASESENSITIVE__ - will be defined if case sensitive mode has been enabled
- ANSI Strings
- Added escape sequences \octal and \xHEX
- Added multiplication operator: string*boolean - returns string if boolean=true; empty string if boolean=false.
- & before "text" returns address of the string when assigning to non-string type.
- Added `expr` where expr can be up to 4 bytes (4 or less characters). `A` will return 65.
- Unicode Strings
- Added escape sequences \octal and \xHEX
- Added multiplication operator: string*boolean - returns string if boolean=true; empty string if boolean=false.
- & before "text" returns address of the string when assigning to non-string type.
- Added `expr` where expr can be up to 4 bytes (2 or less characters). L`A` will return 65.
- UTF-8 encoded strings are supported up to 6 bytes per character.
- DBCS encoding is supported.
- UTF-8 BOM marker (at the beginning of source file) is now detected.
- Automatic string conversion (from/to unicode) when returning from a function.
- Added OEM string modifier, to create strings with diacritical characters, for display in console window.
- Preprocessor
- $USE will search for libraries relative to current file path location, then in default locations.
- Added keywords - $undef, $error, $warning, $if, $elif, $elifdef, $elifndef
- $END - all text in source file after this keyword is ignored.
- Added $REGION and $ENDREGION
- Operators (=,==,<>,!=,+,-,*,/,%,|,or,||(xor),&,&&,and,<<,>>,!,~,>,>=,<,<=) can be used with:
- Preprocessor keywords
- CONST
- ENUM
- $DEFINE
- Added operators
- a?b:c - inlined version of IIF function.
- == - equal
- != - not equal
- && - and
- ~ - bitwise NOT
- a=b++ - post increment
- a=b-- - post decrement
- b=--b - pre decrement
- a=++b - pre increment
- Subroutines
- Added STATIC keyword to define static variables.
- Added private LABELS inside subroutines.
- Subroutine definition can wrap to multiple lines.
- Variables, constants ($define, const, setid, enum), typedef, structures and subroutine (sub, export) can be of any size.
- PRINT function has a short version: ?
- Variables and methods can be imported.
- New variable types:
- TSTRING - If UNICODE is defined, it will be WSTRING, else STRING.
- ITSTRING - If UNICODE is defined, it will be IWSTRING, else ISTRING.
- Added "T" string modifier to use with above.
- Assembly
- Added $emit, $asm, $endasm keywords
- Added "DECLARE name AS type" for assember labels for assembler raw data.
- Constant identifiers added
- uq - unsigned quadword
- b - binary
- bu - binary unsigned
- bq - binary quadword
- buq - binary unsigned quadword
- Loops
- Added BREAK keyword.
- Char and word (signed or unsigned) can be passed to WHILE statement.
- Structures / UDTs
- $IF directives are now allowed inside TYPE-ENDTYPE
- Unlimited nesting levels allowed.
- Nested UNIONs can have optional name.
- Added single-byte initializer for structures.
- Added new definition syntax:
- variable = NEW type
- variable = NEW type[count]
- typedef newtype structureName
- typedef newtype className
- typedef newtype interfaceName
- interface name, base_interface
- Added structured exceptions handling. New keywords:
- Added construction and destruction for classes defined in a structure (any level).
- Added fold points in IDE for do-until, for-next, while-endwhile, if-else-endif, select-endselect.
- Special return types:
- FPU - marks a function as returning a float/double in the ST0 FPU register (for Bass users).
- __m128 - marks a function as returning an array of 4 floats or two doubles in XMM0 register (SSE users).
- Added macro capability
- Define with $Macro keyword
- Undefine with $UNDEF
- Test for existence with $IFDEF
- Call a function from inside macro
- Create multi-expression macros.
- Added special macro: defined(name) - returns TRUE if 'name' is defined.
- The = operator inside a macro will always assign a value, and == will compare.
- The LEN statement can be now used in expressions requiring a constant value, known at compile time.
- Added SIZEOF - Return the size in bytes of memory reserved for a variable (numbers, arrays, strings, classes, ...).
- GLOBAL keyword now accepts multiple variables.
- Added THREAD keyword - used to create thread-private variables.
- Automatically creates missing import libraries, when possible.
- Numerous internal changes to optimize code generation. (30+% improvement over benchmark)
- Numerous improvements in error reporting.
- User's guide is furnished in chm, pdf, and eBook formats.
- Added License Agreement and Change History to help file.
Free User's Guide [PDF Version] (http://www.ionicwind.com/guides/IWB2/usersguide.pdf) [eBook Version] (http://www.ionicwind.com/guides/IWB2/usersguide.exe)
Free ControlPak Guide [PDF Version] (http://www.ionicwind.com/guides/IWB2/controlpak.pdf) [eBook Version] (http://www.ionicwind.com/guides/IWB2/controlpak.exe)
Click here for an overview of IWBasic (http://www.ionicwind.com/iwbasic.html)
Try Before You Buy Download IWBasic Ver 2.0 here (http://www.ionicwind.com/IWB2/iwb2.exe)
(
Fully functional, 15 day trial. Contains purchase link*.)
NOTE: *Owners of previous versions should contact Larry Sikes for special one-time pricing
after downloading but before purchasing.
Thank you for your continued support.
The Ionic Wind Software Team