New features added in Baja Version 2
====================================

o Integer constants can be delcared as specific bit values (.x)
o Integer contsants can be modified during compilation (345*12)
o Compiler supports C-like macros (!define) for pre-processor definition of
        integer and string constants
o Compiler supports multi-file projects using a C-like pre-processor directive
        (!include) for combining multiple source/include files
o Enhanced functions:
        SHIFT_STR [str_var] <#>
                Can shift any string variable (not just str)
        SETLOGIC <TRUE or FALSE or GREATER or LESS>
                Supports new GREATER and LESS logic states
        PRINT <"str" or any_var>
                Can print any variable as well as string constants
        CHKFILE <"str" or str_var>
                Can check for file specified by string constant or variable
        COMPARE_KEY <key>
                Now supports DIGIT, EDIGIT, ^x, and /x like CMDKEY
        COMPARE_ARS <ars>
                Now supports WIP (Windows Interface Protocol) keyword
        COMPARE_USER_MISC <attrs>
                and
        TOGGLE_USER_MISC  <attrs>
                Now support WIP (Windows Interface Protocol) attribute
        PRINTFILE <"str" or str_var> [mode]
                Optional mode (one or more):
                        NOABORT   Disallows abortion of display with Ctrl-C
                        SAVEATR   Retain attributes (colors) after display
                        NOATCODES Don't expand @-code variables/actions
                        OPENCLOSE Open and close immediately (before display)
        GETSTR [str_var] [maxlen] [mode]
                Can read into any string variable (not just str)
                Optional mode (one or more):
                        UPPER     Converts all letters to upper case
                        UPRLWR    Upper/Lower case automatically
                        NUMBER    Allow numbers only
                        WRAP      Allows word wrap
                        MSG       Allows ANSI, ^N ^A ^G
                        SPIN      Spinning cursor
                        LINE      Input line (inverse color)
                        EDIT      Edit string passed
                        NOCRLF    Don't print CRLF after string input
                        ALPHA     Only allow alphabetic characters
                        LOWPRIO   low priority input
                        NOEXASC   No extended ASCII allowed
                        E71DETECT Detect E-7-1 terminal type
                        AUTODEL   Auto-delete text (used with EDIT)
			NOECHO	  Don't echo input to local or remote console
        GETNUM [any_var] <#>
                Writes to any variable (not just str)
        NODE_ACTION <action or #>
                Supported actions:
                        MAIN    Main Prompt
                        RMSG    Reading Messages
                        RMAL    Reading Mail
                        SMAL    Sending Mail
                        RTXT    Reading G-Files
                        RSML    Reading Sent Mail
                        PMSG    Posting Message
                        AMSG    Auto-message
                        XTRN    Running External Program
                        DFLT    Main Defaults Section
                        XFER    Transfer Prompt
                        DLNG    Downloading File
                        ULNG    Uploading File
                        BXFR    Bidirectional Transfer
                        LFIL    Listing Files
                        LOGN    Logging on
                        LCHT    In Local Chat with Sysop
                        MCHT    In Multi-Chat with Other Nodes
                        GCHT    In Local Chat with Guru
                        CHAT    In Chat Section
                        SYSP    Sysop Activity
                        TQWK    Transferring QWK packet
                        PCHT    In Private Chat
                        PAGE    Paging another node for Private Chat
                        RFSD    Retrieving file from seq dev (aux=dev)
o New String Manipulation functions:
        STR <str_var> [str_var] [...]
                Define local string variable(s)
        GLOBAL_STR <str_var> [str_var] [...]
                Define global string variable(s)
        SET <str_var> <"str">
                Initialize string variable
        COPY <str_var> <any_var>
                Copy from any variable to a string variable
        SWAP <str_var> <any_var>
                Swap contents of any variable with string variable
        STRCAT <str_var> <str_var or "str">
                Append string variable or constant to end of string variable
        SPRINTF <str_var> <"str"> <any_var> [any_var] [...]
                Write text and formated variables to string variable
        TIME_STR <str_var> <int_var>
                Convert time integer variable to date/time string
        DATE_STR <str_var> <int_var>
                Convert time integer variable to MM/DD/YY string
        SECOND_STR <str_var> <int_var>
                Convert time integer variable to HH:MM:SS string
        FTIME_STR <str_var> <"str"> <int_var>
                Convert time integer variable to string in custom format
        TRUNCSP [str_var]
                Truncate space off end of string variable
	STRIP_CTRL [str_var]
		Strips all control characters from string variable
        STRUPR [str_var]
                Convert string variable to upper case
        STRLWR [str_var]
                Convert string variable to lower case
        LOAD_TEXT <"str">
                Loads an alternate TEXT.DAT into memory
        REVERT_TEXT <# or ALL>
                Reverse effects of REPLACE_TEXT for specific line # or ALL
o New Integer Manipulation functions:
        INT <int_var> [int_var] [...]
                Define local integer variable(s)
        GLOBAL_INT <int_var> [int_var] [...]
                Define global integer variable(s)
        SET <int_var> <#>
                Initialize integer variable
        ADD <int_var> <any_var or #>
                Add any variable or numeric constant to integer variable
        SUB <int_var> <any_var or #>
                Subtract any variable or constant from integer variable
        MUL <int_var> <any_var or #>
                Multiply any variable or constant with integer variable
        DIV <int_var> <any_var or #>
                Divide integer variable by any variable or constant
        MOD <int_var> <any_var or #>
                Modula (remainder after division)
        AND <int_var> <any_var or #>
                Bit-wise AND integer with any constant or variable
        OR  <int_var> <any_var or #>
                Bit-wise OR integer with any constant or variable
        NOT <int_var> <any_var or #>
                Bit-wise NOT integer with any constant or variable
        XOR <int_var> <any_var or #>
                Bit-wise XOR integer with any constant or variable
        COPY <int_var> <any_var>
                Copy from any variable to an integer variable
        SWAP <int_var> <any_var>
                Swap contents of any variable with integer variable
        RANDOM <int_var> <#>
                Write random number between 0 and # to integer variable
        TIME <int_var>
                Write current time (time_t format) to integer variable
        STRLEN <int_var> <str_var>
                Put length of string variable into integer variable
        DATE_INT <int_var> <str_var>
                Convert MM/DD/YY string variable to integer variable
        CRC16 <int_var> <str_var>
                Put CRC-16 of contents of string variable into integer variable
        CRC32 <int_var> <str_var>
                Put CRC-32 of contents of string variable into integer variable
        CHKSUM <int_var> <str_var>
                Put CHKSUM of contents of string variable into integer variable
        CHARVAL <int_var> <str_var>
                Put value of 1st char in string variable into integer variable
        FLENGTH <int_var> <str_var>
                Put length of file pointed to by string variable into integer
o New Logic/Control Flow functions:
        COMPARE <any_var> <any_var or "str" or #>
                Compare any variable with another variable or constant
        IF_EQUAL
                Same as IF_TRUE
        IF_NOT_EQUAL
                Same as IF_FALSE
        IF_GREATER
                If comparison resulted in GREATER-than
        IF_GREATER_OR_EQUAL
                If comparison resulted in GREATER-than or EQUAL-to
        IF_LESS
                If comparison resulted in LESS-than
        IF_LESS_OR_EQUAL
                If comparison resulted in LESS-than or EQUAL-to
        SWITCH <int_var>
                C-like switch { to replace multi if-else-if statements
        CASE <#>
                C-like case: block header
        DEFAULT
                C-like default: case block header
        END_CASE
                Like C "break" statement, terminates a case block
        END_SWITCH
                End of switch block (})
        CMDKEYS <keylist>
                Skip block if current command key is not in keylist
        COMPARE_KEYS <keylist>
                Logic state set to FALSE if current command key not in keylist
        COMPARE_STRN <#> <str_var> <str_var or "str">
                Compare first # characters of two strings (strncmp())
        COMPARE_SUBSTR <str_var> <str_var or "str">
                Find second string inside first (strstr())
o New Display functions:
        PRINTF <"str"> <any_var> [any_var] [...]
                C-like function to display text and formatted variables
        PRINTTAIL <str_var> <mode> <lines>
                Print last x number of lines of file (mode same as PRINTFILE)
        READ_SIF <"str">
                Read SIF/SOF file and display with user's answers filled in
        SAVELINE
                Save the current display line to be redisplayed w/RESTORELINE
        RESTORELINE
                Re-display last line saved with SAVELINE
o New Input functions:
        INKEY
                Set logic state to TRUE if the user hit a key (don't wait)
        CREATE_SIF <"str">
                Create/overwrite SIF data file by asking user questions
o New Miscellaneous functions
        ONLINE
                Assume online execution (auto-halt if disconnected) - default
        OFFLINE
                Assume offline execution (no carrier or no one online)
        LOGIN <"str">
                Process login attempt using passed str for password prompt
        LOGON
                Initiate logon procedure (auto-loads logon module)
        LOGOUT
                This function to be used before re-logging a user in
        NEWUSER
                Initiate new user procedure (auto-loads new user module)
        RIOSYNC
                Synchronize remote output (wait for output buffers to flush)
        PUT_NODE
                Force flush of current node information to disk
        NODE_STATUS <status or #>
                Set node status to one of:
                        WFC            Waiting for Call
                        LOGON          At logon prompt
                        NEWUSER        New user applying
                        INUSE          In Use
                        QUIET          In Use - quiet mode
                        OFFLINE        Offline
                        NETTING        Networking
                        EVENT_WAITING  Waiting for all nodes to be inactive
                        EVENT_RUNNING  Running an external event
                        EVENT_LIMBO    Allowing another node to run an event
        ADJUST_USER_MINUTES <# or -#>
                Add or subtract minutes from user's minute bank
        USER_EVENT <event_type>
                Execute user event(s), one of:
                        LOGON     All configured external logon events
                        LOGOFF    All configured external logoff events
                        NEWUSER   All configured external new user events
                        BIRTHDAY  All configured external birthday events
        TRASHCAN <"str">
                Searches file specified by "str" for current command string
	SEND_FILE_VIA <prot> <"str" or str_var>
		Immediately start the transfer of a file with specific protocol
        GETTIMELEFT
                Checks the user's current time left online
        MSWAIT <#>
                Suspends execution for # milliseconds (gives up time-slices)
o New File Base functions:
        FILE_BATCH_ADD_LIST
                Add list of files (current command str) to batch d/l queue
	FILE_SEND
		Same as FILE_GET, but doesn't require system password.
o New Chat functions:
        PAGE_GURU
                Page one of the configured online Gurus for chat
o New File I/O functions:
        FOPEN <int_var> <access> <"str" or str_var>
                Open/create a file for random access
        FCLOSE <int_var>
                Close a file
        FREAD <int_var> <any_var> [int_var or #]
                Read # of bytes from a file into integer or string variable
        FWRITE <int_var> <any_var> [int_var or #]
                Write # of bytes from integer or string variable into a file
        FGET_LENGTH <int_var> <int_var>
                Get current length of file and put in integer variable
        FSET_LENGTH <int_var> <int_var or #>
                Set current length of file
        FGET_TIME <int_var> <int_var>
                Get the current time stamp of file
        FSET_TIME <int_var> <int_var>
                Set the current time stamp of file
        FEOF <int_var>
                Set logic state to true if currently at end of file
        FGET_POS <int_var> <int_var>
                Get current byte offset (position) in file
        FSET_POS <int_var> <int_var or #> [BEG/SET or CUR or END or #]
                Set the current file position (seek)
        FLOCK <int_var> <int_var or #>
                Lock a record of # bytes in length (retry for 10 seconds)
        FUNLOCK <int_var> <int_var or #>
                Unlock a previously locked record
        FPRINTF <int_var> <"str"> <any_var> [any_var] [...]
                Write text and formatted variables to file
	FREAD_LINE <int_var> <any_var>
		Read a single line from a file into a variable
        FSET_ETX <#>
                Set end-of-text character for ASCII termination (default: 0)
o New File System functions
o New Directory System functions


Incompatibilities with Baja Version 1 Source Code
=================================================

PRINT function requires argument to be in quotes (if not a variable).

PRINTFILE function requires first argument to be in quotes (if not a variable).

NODE_ACTION function requires inclusion of NODEDEFS.INC and action parameters
	(MAIN and XFER) where changed (to NODE_MAIN and NODE_XFER). Additional
	action values were added. See Baja.DOC for details.

TOGGLE_NODE_MISC and COMPARE_NODE_MISC functions require the inclusion of
	NODEDEFS.INC. Misc attribute syntax was changed. See Baja.DOC for
	details.

TOGGLE_USER_MISC and COMPARE_USER_MISC functions require the inclusion of
	USERDEFS.INC. The misc attributes were changed (prepended with UM_).
	The syntax for combining multiple misc attributes was changed. See
	Baja.DOC for details.

TOGGLE_USER_CHAT, COMPARE_USER_CHAT, TOGGLE_USER_QWK, and COMPARE_USER_QWK
	functions require the inclusion of USERDEFS.INC. The attr parameters
	were changed (from ECHO to CHAT_ECHO, for example). The syntax for
	combining multiple misc attributes was changed. See Baja.DOC for
	details.

SET_USER_STRING function requires the inclusion of USERDEFS.INC. The argument
	syntax was changed (from ALIAS to USER_STRING_ALIAS, for example).

Label names may no longer contain spaces.

/* End of BAJA_V2.NEW */
