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 "_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.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.