====== Baja ====== Baja is a Synchronet module compiler and BASIC-like language for creating programmable command shells and modules for Synchronet versions 2 and 3. Most Synchronet [[custom:command shell]]s are currently written in Baja. **Note**:\\ The //Programmable Command and Menu Structure// implementation (basically, the compiled ''.bin'' file interpreter) in the Synchronet [[server:Terminal]] Server is unlikely to be enhanced in the future. Synchronet's programability and extensibility is primarily through [[custom:JavaScript]] modules and services and future script development should be focused there. ===== Source ===== Baja source files (''*.src'', ''*.inc'') are plain ASCII text files (IBM CP437 characters may also be used). The Baja language is documented [[http://synchro.net/docs/baja.html|here]]. Baja source files are normally stored in the Synchronet ''[[dir:exec]]'' directory. ==== Includes ==== Baja source files may include other source files (usually named ''*.inc'') using the Baja ''!include'' directive. Included files are normally stored in the same directory as the ''*.src'' files but you can direct the Baja compiler to look in a different directory for included files by either defining the ''BAJAINCLUDE'' [[config:env|environment variable]] or by using the '-i' command-line option. By forcing the Baja compiler to look in a different directory (e.g. ''sbbs/[[dir:exec]]'') for ''!include''d files, you could, for example, compile ''.src'' files in your ''[[dir:mods]]'' directory which still ''!include'' files from the ''[[dir:exec]]'' directory. ===== Compiling ===== Synchronet modules written "in baja", rely on the ''baja'' utility to compile their "source" into an "executable" (interpretted) binary format (''.bin'' file). Note: There is a corresponding [[util:unbaja]] utility, created by [[person:Deuce]], for decompiling Baja ''.bin'' files into somewhat readable (and modifiable) Baja source (''.src'') files. ===== Usage ===== usage: baja [-opts] file[.src] opts: -d display debug during compile -c case sensitive variables, labels, and macros -o set output directory (e.g. -o/sbbs/exec) -i set include directory (e.g. -i/sbbs/exec) -q quiet mode (no banner) -p pause on error ==== Example ==== To compile the Baja source file ''[[dir:exec]]/default.src'' into the executable module ''[[dir:exec]]/default.bin'', from the Synchronet ''[[dir:exec]]'' directory, type: baja default ==== Trivia ==== The marketing name "Baja", was coined by [[person:Dr. Seuss]] and inspired by vacations at our father's house in [[wp>Baja California]]. ===== See Also ===== * [[custom:Baja|Customization with Baja]] * [[http://synchro.net/docs/baja.html|Baja Language Reference]] * [[.:|Utilities]]