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 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 Now supports DIGIT, EDIGIT, ^x, and /x like CMDKEY COMPARE_ARS Now supports WIP (Windows Interface Protocol) keyword COMPARE_USER_MISC and TOGGLE_USER_MISC 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 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] [...] Define local string variable(s) GLOBAL_STR [str_var] [...] Define global string variable(s) SET <"str"> Initialize string variable COPY Copy from any variable to a string variable SWAP Swap contents of any variable with string variable STRCAT Append string variable or constant to end of string variable SPRINTF <"str"> [any_var] [...] Write text and formated variables to string variable TIME_STR Convert time integer variable to date/time string DATE_STR Convert time integer variable to MM/DD/YY string SECOND_STR Convert time integer variable to HH:MM:SS string FTIME_STR <"str"> 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] [...] Define local integer variable(s) GLOBAL_INT [int_var] [...] Define global integer variable(s) SET <#> Initialize integer variable ADD Add any variable or numeric constant to integer variable SUB Subtract any variable or constant from integer variable MUL Multiply any variable or constant with integer variable DIV Divide integer variable by any variable or constant MOD Modula (remainder after division) AND Bit-wise AND integer with any constant or variable OR Bit-wise OR integer with any constant or variable NOT Bit-wise NOT integer with any constant or variable XOR Bit-wise XOR integer with any constant or variable COPY Copy from any variable to an integer variable SWAP Swap contents of any variable with integer variable RANDOM <#> Write random number between 0 and # to integer variable TIME Write current time (time_t format) to integer variable STRLEN Put length of string variable into integer variable DATE_INT Convert MM/DD/YY string variable to integer variable CRC16 Put CRC-16 of contents of string variable into integer variable CRC32 Put CRC-32 of contents of string variable into integer variable CHKSUM Put CHKSUM of contents of string variable into integer variable CHARVAL Put value of 1st char in string variable into integer variable FLENGTH Put length of file pointed to by string variable into integer o New Logic/Control Flow functions: COMPARE 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 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 Skip block if current command key is not in keylist COMPARE_KEYS Logic state set to FALSE if current command key not in keylist COMPARE_STRN <#> Compare first # characters of two strings (strncmp()) COMPARE_SUBSTR Find second string inside first (strstr()) o New Display functions: PRINTF <"str"> [any_var] [...] C-like function to display text and formatted variables PRINTTAIL 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 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 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 <"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 <"str" or str_var> Open/create a file for random access FCLOSE Close a file FREAD [int_var or #] Read # of bytes from a file into integer or string variable FWRITE [int_var or #] Write # of bytes from integer or string variable into a file FGET_LENGTH Get current length of file and put in integer variable FSET_LENGTH Set current length of file FGET_TIME Get the current time stamp of file FSET_TIME Set the current time stamp of file FEOF Set logic state to true if currently at end of file FGET_POS Get current byte offset (position) in file FSET_POS [BEG/SET or CUR or END or #] Set the current file position (seek) FLOCK Lock a record of # bytes in length (retry for 10 seconds) FUNLOCK Unlock a previously locked record FPRINTF <"str"> [any_var] [...] Write text and formatted variables to file FREAD_LINE 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 */