====== 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 =====
<file>
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
</file>

==== 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]]
