BOS_to_BASM is a TA Script compiler. 

- To compile a .BOS file, drop it onto exe
- All TA script syntax should be supported.
- Any errors are printed just before the offending statement, and then again at the bottem of the .BASM file with a line number. Got to this line number to find the actual error.
- Outputs the pre-processor output to a seperate file (It is exactly how the compiler sees it) (Extension .PREBASM)
- Native ouput is a stack based asm, with the extension .BASM. If it has no errors it is sent to basm.exe to be compiled to a COB
- Uses Mafia's BASM.exe to translate a .BASM file to a COB
- basm.exe outputs errors to a fixed file. BOS_to_BASM will catch these are rename it with the format  "<filename>_BASM_errors.txt".
- All output is in the same directory as the .BOS file.
- Allows the direct inlining of .BASM into .BOS files. The syntax is: "__basm { ... }"
- Inlinable function support
- Scriptor compatibility mode(on by default)
- Named constant support! It is recommented that named constants are used instead of #define's
Can be included in functions or not.
The syntax: "const a = 1, b = a+<2>;" Now correctly handled.

- Enhanced "EXPTYPE.H" & "SFXTYPE.H" which use named constants instead of #defines. (In the AlternativeIncludes sub-folder). To activate add ";AlternativeIncludes\" before "Includes\" in the include path in the ini file.

- All settings are read out of an ini file. This Ini file must have the same name as the exe, but with a '.ini' extension.

SearchPaths
-Semicolon(";") delemited list of paths to search

IncludePaths
- Semicolon(";") delemited list of paths to search

EnableBASMExtentions
- Controls is support for Mafia's BASM enhancments are enabled

AssemblerExeName
- The assembler's exe name to invoke

AssemblerParams
- The parameters to invoke the assemebler with

AssemblerOutputFile
- Not currently supported leave blank

CompileAndDoNotAssemble
- Controls if it just compiles, and doesnt create a cob

PauseOnException
- Controls if the application pauses when an displaying an error at the end of the application

PauseAtEnd
- Controls if the application pauses at the end of the application

AutoEmitLastRet
- Controls if the compiler auto-emits a "pushc 0; ret;" if the last line of a method does not have a "ret" in it

ScriptorCompatibility
- Enables scriptor compatibility mode. This alters the syntax to be almost identical to Scriptor(might have missed something)

History:
v0.82:
- Fixed bug in inline expander. Wasnt generating unique labels

History:
v0.81:
- Comments are now stripped from defines. This fixes a bug when using the original includes

History:
v0.8:
- Inlineable function support. Cant do recursion with them howeever, but all other syntax should work.
- New compatibility mode for Scriptor (enabled by default)
- 3 additional operator key words ( AND, OR, XOR. Logical operations)
- Fixed issues with if, while, looping statements not being correctly generated
- Updated version of basm.exe used.
- Minor fixups in preprocessor code
- Fixed the auto emit last ret statement.
- Fixed bug in tokeniser which caused statements like "count-1" to be a signle identifier

History:
v0.76:
- Updated version of basm.exe used
- Fixed history with some missing info

v0.75:
- Updated preprocessor. Now correctly reports the line number, colomn and filename of an error
- Converted a bunch of global defines to a bunch of named constants (better error reporting)

v0.7:
- Hexadecimal support now works
- Fixed bug in how constant numbers were generated in basm

v0.6:
- Updated the version of basm.exe used
- Fixed bug in how the Bitwise And opcode was generated
- Changed the keywork 'basm' to '__basm'

v0.5:
- Updated the version of basm.exe used
- Fixed move now & turn now are handled.
- Fixed minor bug in the preprocessor code which caused it to fail sometimes

v0.4b:
- Fixed Named constant support.

v0.4:
- Includes a bug fix. The compiler now correctly handles the end of functions properly.